Index: Daodan/MinGW/include/GL/gl.h
===================================================================
--- Daodan/MinGW/include/GL/gl.h	(revision 1046)
+++ Daodan/MinGW/include/GL/gl.h	(revision 1046)
@@ -0,0 +1,1470 @@
+/*
+ * Mesa 3-D graphics library
+ * Version:  4.0
+ *
+ * Copyright (C) 1999-2001  Brian Paul   All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+
+/************************************************************************
+ * 2002-Apr-22, José Fonseca:
+ *   Removed non Win32 system-specific stuff
+ *
+ * 2002-Apr-17, Marcus Geelnard:
+ *   For win32, OpenGL 1.2 & 1.3 definitions are not made in this file
+ *   anymore, since under Windows those are regarded as extensions, and
+ *   are better defined in glext.h (especially the function prototypes may
+ *   conflict with extension function pointers). A few "cosmetical"
+ *   changes were also made to this file.
+ *
+ * 2002-Apr-15, Marcus Geelnard:
+ *   Modified this file to better fit a wider range of compilers, removed
+ *   Mesa specific stuff, and removed extension definitions (this file now
+ *   relies on GL/glext.h). Hopefully this file should now function as a
+ *   generic OpenGL gl.h include file for most compilers and environments.
+ *   Changed GLAPIENTRY to APIENTRY (to be consistent with GL/glext.h).
+ ************************************************************************/
+
+
+#ifndef __gl_h_
+#define __gl_h_
+
+
+
+/************************************************************************
+ * Begin system-specific stuff.
+ */
+/* __WIN32__ */
+#if !defined(__WIN32__) && (defined(_WIN32) || defined(WIN32) || defined(__CYGWIN__))
+#  define __WIN32__
+#endif
+
+/* GLAPI, part 1 (use WINGDIAPI, if defined) */
+#if defined(__WIN32__) && defined(WINGDIAPI)
+#  define GLAPI WINGDIAPI
+#endif
+
+/* GLAPI, part 2 */
+#if !defined(GLAPI)
+#  if defined(_MSC_VER)                        /* Microsoft Visual C++ */
+#    define GLAPI __declspec(dllimport)
+#  elif defined(__LCC__) && defined(__WIN32__) /* LCC-Win32 */
+#    define GLAPI __stdcall
+#  else                                        /* Others (e.g. MinGW, Cygwin, non-win32) */
+#    define GLAPI extern
+#  endif
+#endif
+
+/* APIENTRY */
+#if !defined(APIENTRY)
+#  if defined(__WIN32__)
+#    define APIENTRY __stdcall
+#  else
+#    define APIENTRY
+#  endif
+#endif
+/*
+ * End system-specific stuff.
+ ************************************************************************/
+
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+
+#define GL_VERSION_1_1   1
+
+#if !defined(__WIN32__)
+#define GL_VERSION_1_2   1
+#define GL_VERSION_1_3   1
+#define GL_ARB_imaging   1
+#endif
+
+
+/*
+ *
+ * Datatypes
+ *
+ */
+#ifdef CENTERLINE_CLPP
+#define signed
+#endif
+typedef unsigned int    GLenum;
+typedef unsigned char   GLboolean;
+typedef unsigned int    GLbitfield;
+typedef void            GLvoid;
+typedef signed char     GLbyte;         /* 1-byte signed */
+typedef short           GLshort;        /* 2-byte signed */
+typedef int             GLint;          /* 4-byte signed */
+typedef unsigned char   GLubyte;        /* 1-byte unsigned */
+typedef unsigned short  GLushort;       /* 2-byte unsigned */
+typedef unsigned int    GLuint;         /* 4-byte unsigned */
+typedef int             GLsizei;        /* 4-byte signed */
+typedef float           GLfloat;        /* single precision float */
+typedef float           GLclampf;       /* single precision float in [0,1] */
+typedef double          GLdouble;       /* double precision float */
+typedef double          GLclampd;       /* double precision float in [0,1] */
+
+
+
+/************************************************************************
+ *
+ * Constants
+ *
+ ************************************************************************/
+
+/* Boolean values */
+#define GL_FALSE                                0x0
+#define GL_TRUE                                 0x1
+
+/* Data types */
+#define GL_BYTE                                 0x1400
+#define GL_UNSIGNED_BYTE                        0x1401
+#define GL_SHORT                                0x1402
+#define GL_UNSIGNED_SHORT                       0x1403
+#define GL_INT                                  0x1404
+#define GL_UNSIGNED_INT                         0x1405
+#define GL_FLOAT                                0x1406
+#define GL_DOUBLE                               0x140A
+#define GL_2_BYTES                              0x1407
+#define GL_3_BYTES                              0x1408
+#define GL_4_BYTES                              0x1409
+
+/* Primitives */
+#define GL_POINTS                               0x0000
+#define GL_LINES                                0x0001
+#define GL_LINE_LOOP                            0x0002
+#define GL_LINE_STRIP                           0x0003
+#define GL_TRIANGLES                            0x0004
+#define GL_TRIANGLE_STRIP                       0x0005
+#define GL_TRIANGLE_FAN                         0x0006
+#define GL_QUADS                                0x0007
+#define GL_QUAD_STRIP                           0x0008
+#define GL_POLYGON                              0x0009
+
+/* Vertex Arrays */
+#define GL_VERTEX_ARRAY                         0x8074
+#define GL_NORMAL_ARRAY                         0x8075
+#define GL_COLOR_ARRAY                          0x8076
+#define GL_INDEX_ARRAY                          0x8077
+#define GL_TEXTURE_COORD_ARRAY                  0x8078
+#define GL_EDGE_FLAG_ARRAY                      0x8079
+#define GL_VERTEX_ARRAY_SIZE                    0x807A
+#define GL_VERTEX_ARRAY_TYPE                    0x807B
+#define GL_VERTEX_ARRAY_STRIDE                  0x807C
+#define GL_NORMAL_ARRAY_TYPE                    0x807E
+#define GL_NORMAL_ARRAY_STRIDE                  0x807F
+#define GL_COLOR_ARRAY_SIZE                     0x8081
+#define GL_COLOR_ARRAY_TYPE                     0x8082
+#define GL_COLOR_ARRAY_STRIDE                   0x8083
+#define GL_INDEX_ARRAY_TYPE                     0x8085
+#define GL_INDEX_ARRAY_STRIDE                   0x8086
+#define GL_TEXTURE_COORD_ARRAY_SIZE             0x8088
+#define GL_TEXTURE_COORD_ARRAY_TYPE             0x8089
+#define GL_TEXTURE_COORD_ARRAY_STRIDE           0x808A
+#define GL_EDGE_FLAG_ARRAY_STRIDE               0x808C
+#define GL_VERTEX_ARRAY_POINTER                 0x808E
+#define GL_NORMAL_ARRAY_POINTER                 0x808F
+#define GL_COLOR_ARRAY_POINTER                  0x8090
+#define GL_INDEX_ARRAY_POINTER                  0x8091
+#define GL_TEXTURE_COORD_ARRAY_POINTER          0x8092
+#define GL_EDGE_FLAG_ARRAY_POINTER              0x8093
+#define GL_V2F                                  0x2A20
+#define GL_V3F                                  0x2A21
+#define GL_C4UB_V2F                             0x2A22
+#define GL_C4UB_V3F                             0x2A23
+#define GL_C3F_V3F                              0x2A24
+#define GL_N3F_V3F                              0x2A25
+#define GL_C4F_N3F_V3F                          0x2A26
+#define GL_T2F_V3F                              0x2A27
+#define GL_T4F_V4F                              0x2A28
+#define GL_T2F_C4UB_V3F                         0x2A29
+#define GL_T2F_C3F_V3F                          0x2A2A
+#define GL_T2F_N3F_V3F                          0x2A2B
+#define GL_T2F_C4F_N3F_V3F                      0x2A2C
+#define GL_T4F_C4F_N3F_V4F                      0x2A2D
+
+/* Matrix Mode */
+#define GL_MATRIX_MODE                          0x0BA0
+#define GL_MODELVIEW                            0x1700
+#define GL_PROJECTION                           0x1701
+#define GL_TEXTURE                              0x1702
+
+/* Points */
+#define GL_POINT_SMOOTH                         0x0B10
+#define GL_POINT_SIZE                           0x0B11
+#define GL_POINT_SIZE_GRANULARITY               0x0B13
+#define GL_POINT_SIZE_RANGE                     0x0B12
+
+/* Lines */
+#define GL_LINE_SMOOTH                          0x0B20
+#define GL_LINE_STIPPLE                         0x0B24
+#define GL_LINE_STIPPLE_PATTERN                 0x0B25
+#define GL_LINE_STIPPLE_REPEAT                  0x0B26
+#define GL_LINE_WIDTH                           0x0B21
+#define GL_LINE_WIDTH_GRANULARITY               0x0B23
+#define GL_LINE_WIDTH_RANGE                     0x0B22
+
+/* Polygons */
+#define GL_POINT                                0x1B00
+#define GL_LINE                                 0x1B01
+#define GL_FILL                                 0x1B02
+#define GL_CW                                   0x0900
+#define GL_CCW                                  0x0901
+#define GL_FRONT                                0x0404
+#define GL_BACK                                 0x0405
+#define GL_POLYGON_MODE                         0x0B40
+#define GL_POLYGON_SMOOTH                       0x0B41
+#define GL_POLYGON_STIPPLE                      0x0B42
+#define GL_EDGE_FLAG                            0x0B43
+#define GL_CULL_FACE                            0x0B44
+#define GL_CULL_FACE_MODE                       0x0B45
+#define GL_FRONT_FACE                           0x0B46
+#define GL_POLYGON_OFFSET_FACTOR                0x8038
+#define GL_POLYGON_OFFSET_UNITS                 0x2A00
+#define GL_POLYGON_OFFSET_POINT                 0x2A01
+#define GL_POLYGON_OFFSET_LINE                  0x2A02
+#define GL_POLYGON_OFFSET_FILL                  0x8037
+
+/* Display Lists */
+#define GL_COMPILE                              0x1300
+#define GL_COMPILE_AND_EXECUTE                  0x1301
+#define GL_LIST_BASE                            0x0B32
+#define GL_LIST_INDEX                           0x0B33
+#define GL_LIST_MODE                            0x0B30
+
+/* Depth buffer */
+#define GL_NEVER                                0x0200
+#define GL_LESS                                 0x0201
+#define GL_EQUAL                                0x0202
+#define GL_LEQUAL                               0x0203
+#define GL_GREATER                              0x0204
+#define GL_NOTEQUAL                             0x0205
+#define GL_GEQUAL                               0x0206
+#define GL_ALWAYS                               0x0207
+#define GL_DEPTH_TEST                           0x0B71
+#define GL_DEPTH_BITS                           0x0D56
+#define GL_DEPTH_CLEAR_VALUE                    0x0B73
+#define GL_DEPTH_FUNC                           0x0B74
+#define GL_DEPTH_RANGE                          0x0B70
+#define GL_DEPTH_WRITEMASK                      0x0B72
+#define GL_DEPTH_COMPONENT                      0x1902
+
+/* Lighting */
+#define GL_LIGHTING                             0x0B50
+#define GL_LIGHT0                               0x4000
+#define GL_LIGHT1                               0x4001
+#define GL_LIGHT2                               0x4002
+#define GL_LIGHT3                               0x4003
+#define GL_LIGHT4                               0x4004
+#define GL_LIGHT5                               0x4005
+#define GL_LIGHT6                               0x4006
+#define GL_LIGHT7                               0x4007
+#define GL_SPOT_EXPONENT                        0x1205
+#define GL_SPOT_CUTOFF                          0x1206
+#define GL_CONSTANT_ATTENUATION                 0x1207
+#define GL_LINEAR_ATTENUATION                   0x1208
+#define GL_QUADRATIC_ATTENUATION                0x1209
+#define GL_AMBIENT                              0x1200
+#define GL_DIFFUSE                              0x1201
+#define GL_SPECULAR                             0x1202
+#define GL_SHININESS                            0x1601
+#define GL_EMISSION                             0x1600
+#define GL_POSITION                             0x1203
+#define GL_SPOT_DIRECTION                       0x1204
+#define GL_AMBIENT_AND_DIFFUSE                  0x1602
+#define GL_COLOR_INDEXES                        0x1603
+#define GL_LIGHT_MODEL_TWO_SIDE                 0x0B52
+#define GL_LIGHT_MODEL_LOCAL_VIEWER             0x0B51
+#define GL_LIGHT_MODEL_AMBIENT                  0x0B53
+#define GL_FRONT_AND_BACK                       0x0408
+#define GL_SHADE_MODEL                          0x0B54
+#define GL_FLAT                                 0x1D00
+#define GL_SMOOTH                               0x1D01
+#define GL_COLOR_MATERIAL                       0x0B57
+#define GL_COLOR_MATERIAL_FACE                  0x0B55
+#define GL_COLOR_MATERIAL_PARAMETER             0x0B56
+#define GL_NORMALIZE                            0x0BA1
+
+/* User clipping planes */
+#define GL_CLIP_PLANE0                          0x3000
+#define GL_CLIP_PLANE1                          0x3001
+#define GL_CLIP_PLANE2                          0x3002
+#define GL_CLIP_PLANE3                          0x3003
+#define GL_CLIP_PLANE4                          0x3004
+#define GL_CLIP_PLANE5                          0x3005
+
+/* Accumulation buffer */
+#define GL_ACCUM_RED_BITS                       0x0D58
+#define GL_ACCUM_GREEN_BITS                     0x0D59
+#define GL_ACCUM_BLUE_BITS                      0x0D5A
+#define GL_ACCUM_ALPHA_BITS                     0x0D5B
+#define GL_ACCUM_CLEAR_VALUE                    0x0B80
+#define GL_ACCUM                                0x0100
+#define GL_ADD                                  0x0104
+#define GL_LOAD                                 0x0101
+#define GL_MULT                                 0x0103
+#define GL_RETURN                               0x0102
+
+/* Alpha testing */
+#define GL_ALPHA_TEST                           0x0BC0
+#define GL_ALPHA_TEST_REF                       0x0BC2
+#define GL_ALPHA_TEST_FUNC                      0x0BC1
+
+/* Blending */
+#define GL_BLEND                                0x0BE2
+#define GL_BLEND_SRC                            0x0BE1
+#define GL_BLEND_DST                            0x0BE0
+#define GL_ZERO                                 0x0
+#define GL_ONE                                  0x1
+#define GL_SRC_COLOR                            0x0300
+#define GL_ONE_MINUS_SRC_COLOR                  0x0301
+#define GL_SRC_ALPHA                            0x0302
+#define GL_ONE_MINUS_SRC_ALPHA                  0x0303
+#define GL_DST_ALPHA                            0x0304
+#define GL_ONE_MINUS_DST_ALPHA                  0x0305
+#define GL_DST_COLOR                            0x0306
+#define GL_ONE_MINUS_DST_COLOR                  0x0307
+#define GL_SRC_ALPHA_SATURATE                   0x0308
+#define GL_CONSTANT_COLOR                       0x8001
+#define GL_ONE_MINUS_CONSTANT_COLOR             0x8002
+#define GL_CONSTANT_ALPHA                       0x8003
+#define GL_ONE_MINUS_CONSTANT_ALPHA             0x8004
+
+/* Render Mode */
+#define GL_FEEDBACK                             0x1C01
+#define GL_RENDER                               0x1C00
+#define GL_SELECT                               0x1C02
+
+/* Feedback */
+#define GL_2D                                   0x0600
+#define GL_3D                                   0x0601
+#define GL_3D_COLOR                             0x0602
+#define GL_3D_COLOR_TEXTURE                     0x0603
+#define GL_4D_COLOR_TEXTURE                     0x0604
+#define GL_POINT_TOKEN                          0x0701
+#define GL_LINE_TOKEN                           0x0702
+#define GL_LINE_RESET_TOKEN                     0x0707
+#define GL_POLYGON_TOKEN                        0x0703
+#define GL_BITMAP_TOKEN                         0x0704
+#define GL_DRAW_PIXEL_TOKEN                     0x0705
+#define GL_COPY_PIXEL_TOKEN                     0x0706
+#define GL_PASS_THROUGH_TOKEN                   0x0700
+#define GL_FEEDBACK_BUFFER_POINTER              0x0DF0
+#define GL_FEEDBACK_BUFFER_SIZE                 0x0DF1
+#define GL_FEEDBACK_BUFFER_TYPE                 0x0DF2
+
+/* Selection */
+#define GL_SELECTION_BUFFER_POINTER             0x0DF3
+#define GL_SELECTION_BUFFER_SIZE                0x0DF4
+
+/* Fog */
+#define GL_FOG                                  0x0B60
+#define GL_FOG_MODE                             0x0B65
+#define GL_FOG_DENSITY                          0x0B62
+#define GL_FOG_COLOR                            0x0B66
+#define GL_FOG_INDEX                            0x0B61
+#define GL_FOG_START                            0x0B63
+#define GL_FOG_END                              0x0B64
+#define GL_LINEAR                               0x2601
+#define GL_EXP                                  0x0800
+#define GL_EXP2                                 0x0801
+
+/* Logic Ops */
+#define GL_LOGIC_OP                             0x0BF1
+#define GL_INDEX_LOGIC_OP                       0x0BF1
+#define GL_COLOR_LOGIC_OP                       0x0BF2
+#define GL_LOGIC_OP_MODE                        0x0BF0
+#define GL_CLEAR                                0x1500
+#define GL_SET                                  0x150F
+#define GL_COPY                                 0x1503
+#define GL_COPY_INVERTED                        0x150C
+#define GL_NOOP                                 0x1505
+#define GL_INVERT                               0x150A
+#define GL_AND                                  0x1501
+#define GL_NAND                                 0x150E
+#define GL_OR                                   0x1507
+#define GL_NOR                                  0x1508
+#define GL_XOR                                  0x1506
+#define GL_EQUIV                                0x1509
+#define GL_AND_REVERSE                          0x1502
+#define GL_AND_INVERTED                         0x1504
+#define GL_OR_REVERSE                           0x150B
+#define GL_OR_INVERTED                          0x150D
+
+/* Stencil */
+#define GL_STENCIL_TEST                         0x0B90
+#define GL_STENCIL_WRITEMASK                    0x0B98
+#define GL_STENCIL_BITS                         0x0D57
+#define GL_STENCIL_FUNC                         0x0B92
+#define GL_STENCIL_VALUE_MASK                   0x0B93
+#define GL_STENCIL_REF                          0x0B97
+#define GL_STENCIL_FAIL                         0x0B94
+#define GL_STENCIL_PASS_DEPTH_PASS              0x0B96
+#define GL_STENCIL_PASS_DEPTH_FAIL              0x0B95
+#define GL_STENCIL_CLEAR_VALUE                  0x0B91
+#define GL_STENCIL_INDEX                        0x1901
+#define GL_KEEP                                 0x1E00
+#define GL_REPLACE                              0x1E01
+#define GL_INCR                                 0x1E02
+#define GL_DECR                                 0x1E03
+
+/* Buffers, Pixel Drawing/Reading */
+#define GL_NONE                                 0x0
+#define GL_LEFT                                 0x0406
+#define GL_RIGHT                                0x0407
+/*GL_FRONT                                      0x0404 */
+/*GL_BACK                                       0x0405 */
+/*GL_FRONT_AND_BACK                             0x0408 */
+#define GL_FRONT_LEFT                           0x0400
+#define GL_FRONT_RIGHT                          0x0401
+#define GL_BACK_LEFT                            0x0402
+#define GL_BACK_RIGHT                           0x0403
+#define GL_AUX0                                 0x0409
+#define GL_AUX1                                 0x040A
+#define GL_AUX2                                 0x040B
+#define GL_AUX3                                 0x040C
+#define GL_COLOR_INDEX                          0x1900
+#define GL_RED                                  0x1903
+#define GL_GREEN                                0x1904
+#define GL_BLUE                                 0x1905
+#define GL_ALPHA                                0x1906
+#define GL_LUMINANCE                            0x1909
+#define GL_LUMINANCE_ALPHA                      0x190A
+#define GL_ALPHA_BITS                           0x0D55
+#define GL_RED_BITS                             0x0D52
+#define GL_GREEN_BITS                           0x0D53
+#define GL_BLUE_BITS                            0x0D54
+#define GL_INDEX_BITS                           0x0D51
+#define GL_SUBPIXEL_BITS                        0x0D50
+#define GL_AUX_BUFFERS                          0x0C00
+#define GL_READ_BUFFER                          0x0C02
+#define GL_DRAW_BUFFER                          0x0C01
+#define GL_DOUBLEBUFFER                         0x0C32
+#define GL_STEREO                               0x0C33
+#define GL_BITMAP                               0x1A00
+#define GL_COLOR                                0x1800
+#define GL_DEPTH                                0x1801
+#define GL_STENCIL                              0x1802
+#define GL_DITHER                               0x0BD0
+#define GL_RGB                                  0x1907
+#define GL_RGBA                                 0x1908
+
+/* Implementation limits */
+#define GL_MAX_LIST_NESTING                     0x0B31
+#define GL_MAX_ATTRIB_STACK_DEPTH               0x0D35
+#define GL_MAX_MODELVIEW_STACK_DEPTH            0x0D36
+#define GL_MAX_NAME_STACK_DEPTH                 0x0D37
+#define GL_MAX_PROJECTION_STACK_DEPTH           0x0D38
+#define GL_MAX_TEXTURE_STACK_DEPTH              0x0D39
+#define GL_MAX_EVAL_ORDER                       0x0D30
+#define GL_MAX_LIGHTS                           0x0D31
+#define GL_MAX_CLIP_PLANES                      0x0D32
+#define GL_MAX_TEXTURE_SIZE                     0x0D33
+#define GL_MAX_PIXEL_MAP_TABLE                  0x0D34
+#define GL_MAX_VIEWPORT_DIMS                    0x0D3A
+#define GL_MAX_CLIENT_ATTRIB_STACK_DEPTH        0x0D3B
+
+/* Gets */
+#define GL_ATTRIB_STACK_DEPTH                   0x0BB0
+#define GL_CLIENT_ATTRIB_STACK_DEPTH            0x0BB1
+#define GL_COLOR_CLEAR_VALUE                    0x0C22
+#define GL_COLOR_WRITEMASK                      0x0C23
+#define GL_CURRENT_INDEX                        0x0B01
+#define GL_CURRENT_COLOR                        0x0B00
+#define GL_CURRENT_NORMAL                       0x0B02
+#define GL_CURRENT_RASTER_COLOR                 0x0B04
+#define GL_CURRENT_RASTER_DISTANCE              0x0B09
+#define GL_CURRENT_RASTER_INDEX                 0x0B05
+#define GL_CURRENT_RASTER_POSITION              0x0B07
+#define GL_CURRENT_RASTER_TEXTURE_COORDS        0x0B06
+#define GL_CURRENT_RASTER_POSITION_VALID        0x0B08
+#define GL_CURRENT_TEXTURE_COORDS               0x0B03
+#define GL_INDEX_CLEAR_VALUE                    0x0C20
+#define GL_INDEX_MODE                           0x0C30
+#define GL_INDEX_WRITEMASK                      0x0C21
+#define GL_MODELVIEW_MATRIX                     0x0BA6
+#define GL_MODELVIEW_STACK_DEPTH                0x0BA3
+#define GL_NAME_STACK_DEPTH                     0x0D70
+#define GL_PROJECTION_MATRIX                    0x0BA7
+#define GL_PROJECTION_STACK_DEPTH               0x0BA4
+#define GL_RENDER_MODE                          0x0C40
+#define GL_RGBA_MODE                            0x0C31
+#define GL_TEXTURE_MATRIX                       0x0BA8
+#define GL_TEXTURE_STACK_DEPTH                  0x0BA5
+#define GL_VIEWPORT                             0x0BA2
+
+/* Evaluators */
+#define GL_AUTO_NORMAL                          0x0D80
+#define GL_MAP1_COLOR_4                         0x0D90
+#define GL_MAP1_GRID_DOMAIN                     0x0DD0
+#define GL_MAP1_GRID_SEGMENTS                   0x0DD1
+#define GL_MAP1_INDEX                           0x0D91
+#define GL_MAP1_NORMAL                          0x0D92
+#define GL_MAP1_TEXTURE_COORD_1                 0x0D93
+#define GL_MAP1_TEXTURE_COORD_2                 0x0D94
+#define GL_MAP1_TEXTURE_COORD_3                 0x0D95
+#define GL_MAP1_TEXTURE_COORD_4                 0x0D96
+#define GL_MAP1_VERTEX_3                        0x0D97
+#define GL_MAP1_VERTEX_4                        0x0D98
+#define GL_MAP2_COLOR_4                         0x0DB0
+#define GL_MAP2_GRID_DOMAIN                     0x0DD2
+#define GL_MAP2_GRID_SEGMENTS                   0x0DD3
+#define GL_MAP2_INDEX                           0x0DB1
+#define GL_MAP2_NORMAL                          0x0DB2
+#define GL_MAP2_TEXTURE_COORD_1                 0x0DB3
+#define GL_MAP2_TEXTURE_COORD_2                 0x0DB4
+#define GL_MAP2_TEXTURE_COORD_3                 0x0DB5
+#define GL_MAP2_TEXTURE_COORD_4                 0x0DB6
+#define GL_MAP2_VERTEX_3                        0x0DB7
+#define GL_MAP2_VERTEX_4                        0x0DB8
+#define GL_COEFF                                0x0A00
+#define GL_DOMAIN                               0x0A02
+#define GL_ORDER                                0x0A01
+
+/* Hints */
+#define GL_FOG_HINT                             0x0C54
+#define GL_LINE_SMOOTH_HINT                     0x0C52
+#define GL_PERSPECTIVE_CORRECTION_HINT          0x0C50
+#define GL_POINT_SMOOTH_HINT                    0x0C51
+#define GL_POLYGON_SMOOTH_HINT                  0x0C53
+#define GL_DONT_CARE                            0x1100
+#define GL_FASTEST                              0x1101
+#define GL_NICEST                               0x1102
+
+/* Scissor box */
+#define GL_SCISSOR_TEST                         0x0C11
+#define GL_SCISSOR_BOX                          0x0C10
+
+/* Pixel Mode / Transfer */
+#define GL_MAP_COLOR                            0x0D10
+#define GL_MAP_STENCIL                          0x0D11
+#define GL_INDEX_SHIFT                          0x0D12
+#define GL_INDEX_OFFSET                         0x0D13
+#define GL_RED_SCALE                            0x0D14
+#define GL_RED_BIAS                             0x0D15
+#define GL_GREEN_SCALE                          0x0D18
+#define GL_GREEN_BIAS                           0x0D19
+#define GL_BLUE_SCALE                           0x0D1A
+#define GL_BLUE_BIAS                            0x0D1B
+#define GL_ALPHA_SCALE                          0x0D1C
+#define GL_ALPHA_BIAS                           0x0D1D
+#define GL_DEPTH_SCALE                          0x0D1E
+#define GL_DEPTH_BIAS                           0x0D1F
+#define GL_PIXEL_MAP_S_TO_S_SIZE                0x0CB1
+#define GL_PIXEL_MAP_I_TO_I_SIZE                0x0CB0
+#define GL_PIXEL_MAP_I_TO_R_SIZE                0x0CB2
+#define GL_PIXEL_MAP_I_TO_G_SIZE                0x0CB3
+#define GL_PIXEL_MAP_I_TO_B_SIZE                0x0CB4
+#define GL_PIXEL_MAP_I_TO_A_SIZE                0x0CB5
+#define GL_PIXEL_MAP_R_TO_R_SIZE                0x0CB6
+#define GL_PIXEL_MAP_G_TO_G_SIZE                0x0CB7
+#define GL_PIXEL_MAP_B_TO_B_SIZE                0x0CB8
+#define GL_PIXEL_MAP_A_TO_A_SIZE                0x0CB9
+#define GL_PIXEL_MAP_S_TO_S                     0x0C71
+#define GL_PIXEL_MAP_I_TO_I                     0x0C70
+#define GL_PIXEL_MAP_I_TO_R                     0x0C72
+#define GL_PIXEL_MAP_I_TO_G                     0x0C73
+#define GL_PIXEL_MAP_I_TO_B                     0x0C74
+#define GL_PIXEL_MAP_I_TO_A                     0x0C75
+#define GL_PIXEL_MAP_R_TO_R                     0x0C76
+#define GL_PIXEL_MAP_G_TO_G                     0x0C77
+#define GL_PIXEL_MAP_B_TO_B                     0x0C78
+#define GL_PIXEL_MAP_A_TO_A                     0x0C79
+#define GL_PACK_ALIGNMENT                       0x0D05
+#define GL_PACK_LSB_FIRST                       0x0D01
+#define GL_PACK_ROW_LENGTH                      0x0D02
+#define GL_PACK_SKIP_PIXELS                     0x0D04
+#define GL_PACK_SKIP_ROWS                       0x0D03
+#define GL_PACK_SWAP_BYTES                      0x0D00
+#define GL_UNPACK_ALIGNMENT                     0x0CF5
+#define GL_UNPACK_LSB_FIRST                     0x0CF1
+#define GL_UNPACK_ROW_LENGTH                    0x0CF2
+#define GL_UNPACK_SKIP_PIXELS                   0x0CF4
+#define GL_UNPACK_SKIP_ROWS                     0x0CF3
+#define GL_UNPACK_SWAP_BYTES                    0x0CF0
+#define GL_ZOOM_X                               0x0D16
+#define GL_ZOOM_Y                               0x0D17
+
+/* Texture mapping */
+#define GL_TEXTURE_ENV                          0x2300
+#define GL_TEXTURE_ENV_MODE                     0x2200
+#define GL_TEXTURE_1D                           0x0DE0
+#define GL_TEXTURE_2D                           0x0DE1
+#define GL_TEXTURE_WRAP_S                       0x2802
+#define GL_TEXTURE_WRAP_T                       0x2803
+#define GL_TEXTURE_MAG_FILTER                   0x2800
+#define GL_TEXTURE_MIN_FILTER                   0x2801
+#define GL_TEXTURE_ENV_COLOR                    0x2201
+#define GL_TEXTURE_GEN_S                        0x0C60
+#define GL_TEXTURE_GEN_T                        0x0C61
+#define GL_TEXTURE_GEN_MODE                     0x2500
+#define GL_TEXTURE_BORDER_COLOR                 0x1004
+#define GL_TEXTURE_WIDTH                        0x1000
+#define GL_TEXTURE_HEIGHT                       0x1001
+#define GL_TEXTURE_BORDER                       0x1005
+#define GL_TEXTURE_COMPONENTS                   0x1003
+#define GL_TEXTURE_RED_SIZE                     0x805C
+#define GL_TEXTURE_GREEN_SIZE                   0x805D
+#define GL_TEXTURE_BLUE_SIZE                    0x805E
+#define GL_TEXTURE_ALPHA_SIZE                   0x805F
+#define GL_TEXTURE_LUMINANCE_SIZE               0x8060
+#define GL_TEXTURE_INTENSITY_SIZE               0x8061
+#define GL_NEAREST_MIPMAP_NEAREST               0x2700
+#define GL_NEAREST_MIPMAP_LINEAR                0x2702
+#define GL_LINEAR_MIPMAP_NEAREST                0x2701
+#define GL_LINEAR_MIPMAP_LINEAR                 0x2703
+#define GL_OBJECT_LINEAR                        0x2401
+#define GL_OBJECT_PLANE                         0x2501
+#define GL_EYE_LINEAR                           0x2400
+#define GL_EYE_PLANE                            0x2502
+#define GL_SPHERE_MAP                           0x2402
+#define GL_DECAL                                0x2101
+#define GL_MODULATE                             0x2100
+#define GL_NEAREST                              0x2600
+#define GL_REPEAT                               0x2901
+#define GL_CLAMP                                0x2900
+#define GL_S                                    0x2000
+#define GL_T                                    0x2001
+#define GL_R                                    0x2002
+#define GL_Q                                    0x2003
+#define GL_TEXTURE_GEN_R                        0x0C62
+#define GL_TEXTURE_GEN_Q                        0x0C63
+
+/* Utility */
+#define GL_VENDOR                               0x1F00
+#define GL_RENDERER                             0x1F01
+#define GL_VERSION                              0x1F02
+#define GL_EXTENSIONS                           0x1F03
+
+/* Errors */
+#define GL_NO_ERROR                             0x0
+#define GL_INVALID_VALUE                        0x0501
+#define GL_INVALID_ENUM                         0x0500
+#define GL_INVALID_OPERATION                    0x0502
+#define GL_STACK_OVERFLOW                       0x0503
+#define GL_STACK_UNDERFLOW                      0x0504
+#define GL_OUT_OF_MEMORY                        0x0505
+
+/* glPush/PopAttrib bits */
+#define GL_CURRENT_BIT                          0x00000001
+#define GL_POINT_BIT                            0x00000002
+#define GL_LINE_BIT                             0x00000004
+#define GL_POLYGON_BIT                          0x00000008
+#define GL_POLYGON_STIPPLE_BIT                  0x00000010
+#define GL_PIXEL_MODE_BIT                       0x00000020
+#define GL_LIGHTING_BIT                         0x00000040
+#define GL_FOG_BIT                              0x00000080
+#define GL_DEPTH_BUFFER_BIT                     0x00000100
+#define GL_ACCUM_BUFFER_BIT                     0x00000200
+#define GL_STENCIL_BUFFER_BIT                   0x00000400
+#define GL_VIEWPORT_BIT                         0x00000800
+#define GL_TRANSFORM_BIT                        0x00001000
+#define GL_ENABLE_BIT                           0x00002000
+#define GL_COLOR_BUFFER_BIT                     0x00004000
+#define GL_HINT_BIT                             0x00008000
+#define GL_EVAL_BIT                             0x00010000
+#define GL_LIST_BIT                             0x00020000
+#define GL_TEXTURE_BIT                          0x00040000
+#define GL_SCISSOR_BIT                          0x00080000
+#define GL_ALL_ATTRIB_BITS                      0x000FFFFF
+
+
+/* OpenGL 1.1 */
+#define GL_PROXY_TEXTURE_1D                     0x8063
+#define GL_PROXY_TEXTURE_2D                     0x8064
+#define GL_TEXTURE_PRIORITY                     0x8066
+#define GL_TEXTURE_RESIDENT                     0x8067
+#define GL_TEXTURE_BINDING_1D                   0x8068
+#define GL_TEXTURE_BINDING_2D                   0x8069
+#define GL_TEXTURE_INTERNAL_FORMAT              0x1003
+#define GL_ALPHA4                               0x803B
+#define GL_ALPHA8                               0x803C
+#define GL_ALPHA12                              0x803D
+#define GL_ALPHA16                              0x803E
+#define GL_LUMINANCE4                           0x803F
+#define GL_LUMINANCE8                           0x8040
+#define GL_LUMINANCE12                          0x8041
+#define GL_LUMINANCE16                          0x8042
+#define GL_LUMINANCE4_ALPHA4                    0x8043
+#define GL_LUMINANCE6_ALPHA2                    0x8044
+#define GL_LUMINANCE8_ALPHA8                    0x8045
+#define GL_LUMINANCE12_ALPHA4                   0x8046
+#define GL_LUMINANCE12_ALPHA12                  0x8047
+#define GL_LUMINANCE16_ALPHA16                  0x8048
+#define GL_INTENSITY                            0x8049
+#define GL_INTENSITY4                           0x804A
+#define GL_INTENSITY8                           0x804B
+#define GL_INTENSITY12                          0x804C
+#define GL_INTENSITY16                          0x804D
+#define GL_R3_G3_B2                             0x2A10
+#define GL_RGB4                                 0x804F
+#define GL_RGB5                                 0x8050
+#define GL_RGB8                                 0x8051
+#define GL_RGB10                                0x8052
+#define GL_RGB12                                0x8053
+#define GL_RGB16                                0x8054
+#define GL_RGBA2                                0x8055
+#define GL_RGBA4                                0x8056
+#define GL_RGB5_A1                              0x8057
+#define GL_RGBA8                                0x8058
+#define GL_RGB10_A2                             0x8059
+#define GL_RGBA12                               0x805A
+#define GL_RGBA16                               0x805B
+#define GL_CLIENT_PIXEL_STORE_BIT               0x00000001
+#define GL_CLIENT_VERTEX_ARRAY_BIT              0x00000002
+#define GL_ALL_CLIENT_ATTRIB_BITS               0xFFFFFFFF
+#define GL_CLIENT_ALL_ATTRIB_BITS               0xFFFFFFFF
+
+
+/* Under Windows, we do not define OpenGL 1.2 & 1.3 functionality, since
+   it is treated as extensions (defined in glext.h) */
+#if !defined(__WIN32__)
+
+/* OpenGL 1.2 */
+#define GL_RESCALE_NORMAL                       0x803A
+#define GL_CLAMP_TO_EDGE                        0x812F
+#define GL_MAX_ELEMENTS_VERTICES                0x80E8
+#define GL_MAX_ELEMENTS_INDICES                 0x80E9
+#define GL_BGR                                  0x80E0
+#define GL_BGRA                                 0x80E1
+#define GL_UNSIGNED_BYTE_3_3_2                  0x8032
+#define GL_UNSIGNED_BYTE_2_3_3_REV              0x8362
+#define GL_UNSIGNED_SHORT_5_6_5                 0x8363
+#define GL_UNSIGNED_SHORT_5_6_5_REV             0x8364
+#define GL_UNSIGNED_SHORT_4_4_4_4               0x8033
+#define GL_UNSIGNED_SHORT_4_4_4_4_REV           0x8365
+#define GL_UNSIGNED_SHORT_5_5_5_1               0x8034
+#define GL_UNSIGNED_SHORT_1_5_5_5_REV           0x8366
+#define GL_UNSIGNED_INT_8_8_8_8                 0x8035
+#define GL_UNSIGNED_INT_8_8_8_8_REV             0x8367
+#define GL_UNSIGNED_INT_10_10_10_2              0x8036
+#define GL_UNSIGNED_INT_2_10_10_10_REV          0x8368
+#define GL_LIGHT_MODEL_COLOR_CONTROL            0x81F8
+#define GL_SINGLE_COLOR                         0x81F9
+#define GL_SEPARATE_SPECULAR_COLOR              0x81FA
+#define GL_TEXTURE_MIN_LOD                      0x813A
+#define GL_TEXTURE_MAX_LOD                      0x813B
+#define GL_TEXTURE_BASE_LEVEL                   0x813C
+#define GL_TEXTURE_MAX_LEVEL                    0x813D
+#define GL_SMOOTH_POINT_SIZE_RANGE              0x0B12
+#define GL_SMOOTH_POINT_SIZE_GRANULARITY        0x0B13
+#define GL_SMOOTH_LINE_WIDTH_RANGE              0x0B22
+#define GL_SMOOTH_LINE_WIDTH_GRANULARITY        0x0B23
+#define GL_ALIASED_POINT_SIZE_RANGE             0x846D
+#define GL_ALIASED_LINE_WIDTH_RANGE             0x846E
+#define GL_PACK_SKIP_IMAGES                     0x806B
+#define GL_PACK_IMAGE_HEIGHT                    0x806C
+#define GL_UNPACK_SKIP_IMAGES                   0x806D
+#define GL_UNPACK_IMAGE_HEIGHT                  0x806E
+#define GL_TEXTURE_3D                           0x806F
+#define GL_PROXY_TEXTURE_3D                     0x8070
+#define GL_TEXTURE_DEPTH                        0x8071
+#define GL_TEXTURE_WRAP_R                       0x8072
+#define GL_MAX_3D_TEXTURE_SIZE                  0x8073
+#define GL_TEXTURE_BINDING_3D                   0x806A
+
+/* OpenGL 1.2 imaging subset */
+/* GL_EXT_color_table */
+#define GL_COLOR_TABLE                          0x80D0
+#define GL_POST_CONVOLUTION_COLOR_TABLE         0x80D1
+#define GL_POST_COLOR_MATRIX_COLOR_TABLE        0x80D2
+#define GL_PROXY_COLOR_TABLE                    0x80D3
+#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE   0x80D4
+#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE  0x80D5
+#define GL_COLOR_TABLE_SCALE                    0x80D6
+#define GL_COLOR_TABLE_BIAS                     0x80D7
+#define GL_COLOR_TABLE_FORMAT                   0x80D8
+#define GL_COLOR_TABLE_WIDTH                    0x80D9
+#define GL_COLOR_TABLE_RED_SIZE                 0x80DA
+#define GL_COLOR_TABLE_GREEN_SIZE               0x80DB
+#define GL_COLOR_TABLE_BLUE_SIZE                0x80DC
+#define GL_COLOR_TABLE_ALPHA_SIZE               0x80DD
+#define GL_COLOR_TABLE_LUMINANCE_SIZE           0x80DE
+#define GL_COLOR_TABLE_INTENSITY_SIZE           0x80DF
+/* GL_EXT_convolution and GL_HP_convolution_border_modes */
+#define GL_CONVOLUTION_1D                       0x8010
+#define GL_CONVOLUTION_2D                       0x8011
+#define GL_SEPARABLE_2D                         0x8012
+#define GL_CONVOLUTION_BORDER_MODE              0x8013
+#define GL_CONVOLUTION_FILTER_SCALE             0x8014
+#define GL_CONVOLUTION_FILTER_BIAS              0x8015
+#define GL_REDUCE                               0x8016
+#define GL_CONVOLUTION_FORMAT                   0x8017
+#define GL_CONVOLUTION_WIDTH                    0x8018
+#define GL_CONVOLUTION_HEIGHT                   0x8019
+#define GL_MAX_CONVOLUTION_WIDTH                0x801A
+#define GL_MAX_CONVOLUTION_HEIGHT               0x801B
+#define GL_POST_CONVOLUTION_RED_SCALE           0x801C
+#define GL_POST_CONVOLUTION_GREEN_SCALE         0x801D
+#define GL_POST_CONVOLUTION_BLUE_SCALE          0x801E
+#define GL_POST_CONVOLUTION_ALPHA_SCALE         0x801F
+#define GL_POST_CONVOLUTION_RED_BIAS            0x8020
+#define GL_POST_CONVOLUTION_GREEN_BIAS          0x8021
+#define GL_POST_CONVOLUTION_BLUE_BIAS           0x8022
+#define GL_POST_CONVOLUTION_ALPHA_BIAS          0x8023
+#define GL_CONSTANT_BORDER                      0x8151
+#define GL_REPLICATE_BORDER                     0x8153
+#define GL_CONVOLUTION_BORDER_COLOR             0x8154
+/* GL_SGI_color_matrix */
+#define GL_COLOR_MATRIX                         0x80B1
+#define GL_COLOR_MATRIX_STACK_DEPTH             0x80B2
+#define GL_MAX_COLOR_MATRIX_STACK_DEPTH         0x80B3
+#define GL_POST_COLOR_MATRIX_RED_SCALE          0x80B4
+#define GL_POST_COLOR_MATRIX_GREEN_SCALE        0x80B5
+#define GL_POST_COLOR_MATRIX_BLUE_SCALE         0x80B6
+#define GL_POST_COLOR_MATRIX_ALPHA_SCALE        0x80B7
+#define GL_POST_COLOR_MATRIX_RED_BIAS           0x80B8
+#define GL_POST_COLOR_MATRIX_GREEN_BIAS         0x80B9
+#define GL_POST_COLOR_MATRIX_BLUE_BIAS          0x80BA
+#define GL_POST_COLOR_MATRIX_ALPHA_BIAS         0x80BB
+/* GL_EXT_histogram */
+#define GL_HISTOGRAM                            0x8024
+#define GL_PROXY_HISTOGRAM                      0x8025
+#define GL_HISTOGRAM_WIDTH                      0x8026
+#define GL_HISTOGRAM_FORMAT                     0x8027
+#define GL_HISTOGRAM_RED_SIZE                   0x8028
+#define GL_HISTOGRAM_GREEN_SIZE                 0x8029
+#define GL_HISTOGRAM_BLUE_SIZE                  0x802A
+#define GL_HISTOGRAM_ALPHA_SIZE                 0x802B
+#define GL_HISTOGRAM_LUMINANCE_SIZE             0x802C
+#define GL_HISTOGRAM_SINK                       0x802D
+#define GL_MINMAX                               0x802E
+#define GL_MINMAX_FORMAT                        0x802F
+#define GL_MINMAX_SINK                          0x8030
+#define GL_TABLE_TOO_LARGE                      0x8031
+/* GL_EXT_blend_color, GL_EXT_blend_minmax */
+#define GL_BLEND_EQUATION                       0x8009
+#define GL_MIN                                  0x8007
+#define GL_MAX                                  0x8008
+#define GL_FUNC_ADD                             0x8006
+#define GL_FUNC_SUBTRACT                        0x800A
+#define GL_FUNC_REVERSE_SUBTRACT                0x800B
+#define GL_BLEND_COLOR                          0x8005
+
+
+/* OpenGL 1.3 */
+/* multitexture */
+#define GL_TEXTURE0                             0x84C0
+#define GL_TEXTURE1                             0x84C1
+#define GL_TEXTURE2                             0x84C2
+#define GL_TEXTURE3                             0x84C3
+#define GL_TEXTURE4                             0x84C4
+#define GL_TEXTURE5                             0x84C5
+#define GL_TEXTURE6                             0x84C6
+#define GL_TEXTURE7                             0x84C7
+#define GL_TEXTURE8                             0x84C8
+#define GL_TEXTURE9                             0x84C9
+#define GL_TEXTURE10                            0x84CA
+#define GL_TEXTURE11                            0x84CB
+#define GL_TEXTURE12                            0x84CC
+#define GL_TEXTURE13                            0x84CD
+#define GL_TEXTURE14                            0x84CE
+#define GL_TEXTURE15                            0x84CF
+#define GL_TEXTURE16                            0x84D0
+#define GL_TEXTURE17                            0x84D1
+#define GL_TEXTURE18                            0x84D2
+#define GL_TEXTURE19                            0x84D3
+#define GL_TEXTURE20                            0x84D4
+#define GL_TEXTURE21                            0x84D5
+#define GL_TEXTURE22                            0x84D6
+#define GL_TEXTURE23                            0x84D7
+#define GL_TEXTURE24                            0x84D8
+#define GL_TEXTURE25                            0x84D9
+#define GL_TEXTURE26                            0x84DA
+#define GL_TEXTURE27                            0x84DB
+#define GL_TEXTURE28                            0x84DC
+#define GL_TEXTURE29                            0x84DD
+#define GL_TEXTURE30                            0x84DE
+#define GL_TEXTURE31                            0x84DF
+#define GL_ACTIVE_TEXTURE                       0x84E0
+#define GL_CLIENT_ACTIVE_TEXTURE                0x84E1
+#define GL_MAX_TEXTURE_UNITS                    0x84E2
+/* texture_cube_map */
+#define GL_NORMAL_MAP                           0x8511
+#define GL_REFLECTION_MAP                       0x8512
+#define GL_TEXTURE_CUBE_MAP                     0x8513
+#define GL_TEXTURE_BINDING_CUBE_MAP             0x8514
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_X          0x8515
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X          0x8516
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y          0x8517
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y          0x8518
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z          0x8519
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z          0x851A
+#define GL_PROXY_TEXTURE_CUBE_MAP               0x851B
+#define GL_MAX_CUBE_MAP_TEXTURE_SIZE            0x851C
+/* texture_compression */
+#define GL_COMPRESSED_ALPHA                     0x84E9
+#define GL_COMPRESSED_LUMINANCE                 0x84EA
+#define GL_COMPRESSED_LUMINANCE_ALPHA           0x84EB
+#define GL_COMPRESSED_INTENSITY                 0x84EC
+#define GL_COMPRESSED_RGB                       0x84ED
+#define GL_COMPRESSED_RGBA                      0x84EE
+#define GL_TEXTURE_COMPRESSION_HINT             0x84EF
+#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE        0x86A0
+#define GL_TEXTURE_COMPRESSED                   0x86A1
+#define GL_NUM_COMPRESSED_TEXTURE_FORMATS       0x86A2
+#define GL_COMPRESSED_TEXTURE_FORMATS           0x86A3
+/* multisample */
+#define GL_MULTISAMPLE                          0x809D
+#define GL_SAMPLE_ALPHA_TO_COVERAGE             0x809E
+#define GL_SAMPLE_ALPHA_TO_ONE                  0x809F
+#define GL_SAMPLE_COVERAGE                      0x80A0
+#define GL_SAMPLE_BUFFERS                       0x80A8
+#define GL_SAMPLES                              0x80A9
+#define GL_SAMPLE_COVERAGE_VALUE                0x80AA
+#define GL_SAMPLE_COVERAGE_INVERT               0x80AB
+#define GL_MULTISAMPLE_BIT                      0x20000000
+/* transpose_matrix */
+#define GL_TRANSPOSE_MODELVIEW_MATRIX           0x84E3
+#define GL_TRANSPOSE_PROJECTION_MATRIX          0x84E4
+#define GL_TRANSPOSE_TEXTURE_MATRIX             0x84E5
+#define GL_TRANSPOSE_COLOR_MATRIX               0x84E6
+/* texture_env_combine */
+#define GL_COMBINE                              0x8570
+#define GL_COMBINE_RGB                          0x8571
+#define GL_COMBINE_ALPHA                        0x8572
+#define GL_SOURCE0_RGB                          0x8580
+#define GL_SOURCE1_RGB                          0x8581
+#define GL_SOURCE2_RGB                          0x8582
+#define GL_SOURCE0_ALPHA                        0x8588
+#define GL_SOURCE1_ALPHA                        0x8589
+#define GL_SOURCE2_ALPHA                        0x858A
+#define GL_OPERAND0_RGB                         0x8590
+#define GL_OPERAND1_RGB                         0x8591
+#define GL_OPERAND2_RGB                         0x8592
+#define GL_OPERAND0_ALPHA                       0x8598
+#define GL_OPERAND1_ALPHA                       0x8599
+#define GL_OPERAND2_ALPHA                       0x859A
+#define GL_RGB_SCALE                            0x8573
+#define GL_ADD_SIGNED                           0x8574
+#define GL_INTERPOLATE                          0x8575
+#define GL_SUBTRACT                             0x84E7
+#define GL_CONSTANT                             0x8576
+#define GL_PRIMARY_COLOR                        0x8577
+#define GL_PREVIOUS                             0x8578
+/* texture_env_dot3 */
+#define GL_DOT3_RGB                             0x86AE
+#define GL_DOT3_RGBA                            0x86AF
+/* texture_border_clamp */
+#define GL_CLAMP_TO_BORDER                      0x812D
+
+#endif /* __WIN32__ */
+
+
+
+/************************************************************************
+ *
+ * Function prototypes
+ *
+ ************************************************************************/
+
+/* Miscellaneous */
+GLAPI void APIENTRY glClearIndex( GLfloat c );
+GLAPI void APIENTRY glClearColor( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha );
+GLAPI void APIENTRY glClear( GLbitfield mask );
+GLAPI void APIENTRY glIndexMask( GLuint mask );
+GLAPI void APIENTRY glColorMask( GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha );
+GLAPI void APIENTRY glAlphaFunc( GLenum func, GLclampf ref );
+GLAPI void APIENTRY glBlendFunc( GLenum sfactor, GLenum dfactor );
+GLAPI void APIENTRY glLogicOp( GLenum opcode );
+GLAPI void APIENTRY glCullFace( GLenum mode );
+GLAPI void APIENTRY glFrontFace( GLenum mode );
+GLAPI void APIENTRY glPointSize( GLfloat size );
+GLAPI void APIENTRY glLineWidth( GLfloat width );
+GLAPI void APIENTRY glLineStipple( GLint factor, GLushort pattern );
+GLAPI void APIENTRY glPolygonMode( GLenum face, GLenum mode );
+GLAPI void APIENTRY glPolygonOffset( GLfloat factor, GLfloat units );
+GLAPI void APIENTRY glPolygonStipple( const GLubyte *mask );
+GLAPI void APIENTRY glGetPolygonStipple( GLubyte *mask );
+GLAPI void APIENTRY glEdgeFlag( GLboolean flag );
+GLAPI void APIENTRY glEdgeFlagv( const GLboolean *flag );
+GLAPI void APIENTRY glScissor( GLint x, GLint y, GLsizei width, GLsizei height);
+GLAPI void APIENTRY glClipPlane( GLenum plane, const GLdouble *equation );
+GLAPI void APIENTRY glGetClipPlane( GLenum plane, GLdouble *equation );
+GLAPI void APIENTRY glDrawBuffer( GLenum mode );
+GLAPI void APIENTRY glReadBuffer( GLenum mode );
+GLAPI void APIENTRY glEnable( GLenum cap );
+GLAPI void APIENTRY glDisable( GLenum cap );
+GLAPI GLboolean APIENTRY glIsEnabled( GLenum cap );
+GLAPI void APIENTRY glEnableClientState( GLenum cap );  /* 1.1 */
+GLAPI void APIENTRY glDisableClientState( GLenum cap );  /* 1.1 */
+GLAPI void APIENTRY glGetBooleanv( GLenum pname, GLboolean *params );
+GLAPI void APIENTRY glGetDoublev( GLenum pname, GLdouble *params );
+GLAPI void APIENTRY glGetFloatv( GLenum pname, GLfloat *params );
+GLAPI void APIENTRY glGetIntegerv( GLenum pname, GLint *params );
+GLAPI void APIENTRY glPushAttrib( GLbitfield mask );
+GLAPI void APIENTRY glPopAttrib( void );
+GLAPI void APIENTRY glPushClientAttrib( GLbitfield mask );  /* 1.1 */
+GLAPI void APIENTRY glPopClientAttrib( void );  /* 1.1 */
+GLAPI GLint APIENTRY glRenderMode( GLenum mode );
+GLAPI GLenum APIENTRY glGetError( void );
+GLAPI const GLubyte* APIENTRY glGetString( GLenum name );
+GLAPI void APIENTRY glFinish( void );
+GLAPI void APIENTRY glFlush( void );
+GLAPI void APIENTRY glHint( GLenum target, GLenum mode );
+
+/* Depth Buffer */
+GLAPI void APIENTRY glClearDepth( GLclampd depth );
+GLAPI void APIENTRY glDepthFunc( GLenum func );
+GLAPI void APIENTRY glDepthMask( GLboolean flag );
+GLAPI void APIENTRY glDepthRange( GLclampd near_val, GLclampd far_val );
+
+/* Accumulation Buffer */
+GLAPI void APIENTRY glClearAccum( GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha );
+GLAPI void APIENTRY glAccum( GLenum op, GLfloat value );
+
+/* Transformation */
+GLAPI void APIENTRY glMatrixMode( GLenum mode );
+GLAPI void APIENTRY glOrtho( GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near_val, GLdouble far_val );
+GLAPI void APIENTRY glFrustum( GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near_val, GLdouble far_val );
+GLAPI void APIENTRY glViewport( GLint x, GLint y, GLsizei width, GLsizei height );
+GLAPI void APIENTRY glPushMatrix( void );
+GLAPI void APIENTRY glPopMatrix( void );
+GLAPI void APIENTRY glLoadIdentity( void );
+GLAPI void APIENTRY glLoadMatrixd( const GLdouble *m );
+GLAPI void APIENTRY glLoadMatrixf( const GLfloat *m );
+GLAPI void APIENTRY glMultMatrixd( const GLdouble *m );
+GLAPI void APIENTRY glMultMatrixf( const GLfloat *m );
+GLAPI void APIENTRY glRotated( GLdouble angle, GLdouble x, GLdouble y, GLdouble z );
+GLAPI void APIENTRY glRotatef( GLfloat angle, GLfloat x, GLfloat y, GLfloat z );
+GLAPI void APIENTRY glScaled( GLdouble x, GLdouble y, GLdouble z );
+GLAPI void APIENTRY glScalef( GLfloat x, GLfloat y, GLfloat z );
+GLAPI void APIENTRY glTranslated( GLdouble x, GLdouble y, GLdouble z );
+GLAPI void APIENTRY glTranslatef( GLfloat x, GLfloat y, GLfloat z );
+
+/* Display Lists */
+GLAPI GLboolean APIENTRY glIsList( GLuint list );
+GLAPI void APIENTRY glDeleteLists( GLuint list, GLsizei range );
+GLAPI GLuint APIENTRY glGenLists( GLsizei range );
+GLAPI void APIENTRY glNewList( GLuint list, GLenum mode );
+GLAPI void APIENTRY glEndList( void );
+GLAPI void APIENTRY glCallList( GLuint list );
+GLAPI void APIENTRY glCallLists( GLsizei n, GLenum type, const GLvoid *lists );
+GLAPI void APIENTRY glListBase( GLuint base );
+
+/* Drawing Functions */
+GLAPI void APIENTRY glBegin( GLenum mode );
+GLAPI void APIENTRY glEnd( void );
+GLAPI void APIENTRY glVertex2d( GLdouble x, GLdouble y );
+GLAPI void APIENTRY glVertex2f( GLfloat x, GLfloat y );
+GLAPI void APIENTRY glVertex2i( GLint x, GLint y );
+GLAPI void APIENTRY glVertex2s( GLshort x, GLshort y );
+GLAPI void APIENTRY glVertex3d( GLdouble x, GLdouble y, GLdouble z );
+GLAPI void APIENTRY glVertex3f( GLfloat x, GLfloat y, GLfloat z );
+GLAPI void APIENTRY glVertex3i( GLint x, GLint y, GLint z );
+GLAPI void APIENTRY glVertex3s( GLshort x, GLshort y, GLshort z );
+GLAPI void APIENTRY glVertex4d( GLdouble x, GLdouble y, GLdouble z, GLdouble w );
+GLAPI void APIENTRY glVertex4f( GLfloat x, GLfloat y, GLfloat z, GLfloat w );
+GLAPI void APIENTRY glVertex4i( GLint x, GLint y, GLint z, GLint w );
+GLAPI void APIENTRY glVertex4s( GLshort x, GLshort y, GLshort z, GLshort w );
+GLAPI void APIENTRY glVertex2dv( const GLdouble *v );
+GLAPI void APIENTRY glVertex2fv( const GLfloat *v );
+GLAPI void APIENTRY glVertex2iv( const GLint *v );
+GLAPI void APIENTRY glVertex2sv( const GLshort *v );
+GLAPI void APIENTRY glVertex3dv( const GLdouble *v );
+GLAPI void APIENTRY glVertex3fv( const GLfloat *v );
+GLAPI void APIENTRY glVertex3iv( const GLint *v );
+GLAPI void APIENTRY glVertex3sv( const GLshort *v );
+GLAPI void APIENTRY glVertex4dv( const GLdouble *v );
+GLAPI void APIENTRY glVertex4fv( const GLfloat *v );
+GLAPI void APIENTRY glVertex4iv( const GLint *v );
+GLAPI void APIENTRY glVertex4sv( const GLshort *v );
+GLAPI void APIENTRY glNormal3b( GLbyte nx, GLbyte ny, GLbyte nz );
+GLAPI void APIENTRY glNormal3d( GLdouble nx, GLdouble ny, GLdouble nz );
+GLAPI void APIENTRY glNormal3f( GLfloat nx, GLfloat ny, GLfloat nz );
+GLAPI void APIENTRY glNormal3i( GLint nx, GLint ny, GLint nz );
+GLAPI void APIENTRY glNormal3s( GLshort nx, GLshort ny, GLshort nz );
+GLAPI void APIENTRY glNormal3bv( const GLbyte *v );
+GLAPI void APIENTRY glNormal3dv( const GLdouble *v );
+GLAPI void APIENTRY glNormal3fv( const GLfloat *v );
+GLAPI void APIENTRY glNormal3iv( const GLint *v );
+GLAPI void APIENTRY glNormal3sv( const GLshort *v );
+GLAPI void APIENTRY glIndexd( GLdouble c );
+GLAPI void APIENTRY glIndexf( GLfloat c );
+GLAPI void APIENTRY glIndexi( GLint c );
+GLAPI void APIENTRY glIndexs( GLshort c );
+GLAPI void APIENTRY glIndexub( GLubyte c );  /* 1.1 */
+GLAPI void APIENTRY glIndexdv( const GLdouble *c );
+GLAPI void APIENTRY glIndexfv( const GLfloat *c );
+GLAPI void APIENTRY glIndexiv( const GLint *c );
+GLAPI void APIENTRY glIndexsv( const GLshort *c );
+GLAPI void APIENTRY glIndexubv( const GLubyte *c );  /* 1.1 */
+GLAPI void APIENTRY glColor3b( GLbyte red, GLbyte green, GLbyte blue );
+GLAPI void APIENTRY glColor3d( GLdouble red, GLdouble green, GLdouble blue );
+GLAPI void APIENTRY glColor3f( GLfloat red, GLfloat green, GLfloat blue );
+GLAPI void APIENTRY glColor3i( GLint red, GLint green, GLint blue );
+GLAPI void APIENTRY glColor3s( GLshort red, GLshort green, GLshort blue );
+GLAPI void APIENTRY glColor3ub( GLubyte red, GLubyte green, GLubyte blue );
+GLAPI void APIENTRY glColor3ui( GLuint red, GLuint green, GLuint blue );
+GLAPI void APIENTRY glColor3us( GLushort red, GLushort green, GLushort blue );
+GLAPI void APIENTRY glColor4b( GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha );
+GLAPI void APIENTRY glColor4d( GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha );
+GLAPI void APIENTRY glColor4f( GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha );
+GLAPI void APIENTRY glColor4i( GLint red, GLint green, GLint blue, GLint alpha );
+GLAPI void APIENTRY glColor4s( GLshort red, GLshort green, GLshort blue, GLshort alpha );
+GLAPI void APIENTRY glColor4ub( GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha );
+GLAPI void APIENTRY glColor4ui( GLuint red, GLuint green, GLuint blue, GLuint alpha );
+GLAPI void APIENTRY glColor4us( GLushort red, GLushort green, GLushort blue, GLushort alpha );
+GLAPI void APIENTRY glColor3bv( const GLbyte *v );
+GLAPI void APIENTRY glColor3dv( const GLdouble *v );
+GLAPI void APIENTRY glColor3fv( const GLfloat *v );
+GLAPI void APIENTRY glColor3iv( const GLint *v );
+GLAPI void APIENTRY glColor3sv( const GLshort *v );
+GLAPI void APIENTRY glColor3ubv( const GLubyte *v );
+GLAPI void APIENTRY glColor3uiv( const GLuint *v );
+GLAPI void APIENTRY glColor3usv( const GLushort *v );
+GLAPI void APIENTRY glColor4bv( const GLbyte *v );
+GLAPI void APIENTRY glColor4dv( const GLdouble *v );
+GLAPI void APIENTRY glColor4fv( const GLfloat *v );
+GLAPI void APIENTRY glColor4iv( const GLint *v );
+GLAPI void APIENTRY glColor4sv( const GLshort *v );
+GLAPI void APIENTRY glColor4ubv( const GLubyte *v );
+GLAPI void APIENTRY glColor4uiv( const GLuint *v );
+GLAPI void APIENTRY glColor4usv( const GLushort *v );
+GLAPI void APIENTRY glTexCoord1d( GLdouble s );
+GLAPI void APIENTRY glTexCoord1f( GLfloat s );
+GLAPI void APIENTRY glTexCoord1i( GLint s );
+GLAPI void APIENTRY glTexCoord1s( GLshort s );
+GLAPI void APIENTRY glTexCoord2d( GLdouble s, GLdouble t );
+GLAPI void APIENTRY glTexCoord2f( GLfloat s, GLfloat t );
+GLAPI void APIENTRY glTexCoord2i( GLint s, GLint t );
+GLAPI void APIENTRY glTexCoord2s( GLshort s, GLshort t );
+GLAPI void APIENTRY glTexCoord3d( GLdouble s, GLdouble t, GLdouble r );
+GLAPI void APIENTRY glTexCoord3f( GLfloat s, GLfloat t, GLfloat r );
+GLAPI void APIENTRY glTexCoord3i( GLint s, GLint t, GLint r );
+GLAPI void APIENTRY glTexCoord3s( GLshort s, GLshort t, GLshort r );
+GLAPI void APIENTRY glTexCoord4d( GLdouble s, GLdouble t, GLdouble r, GLdouble q );
+GLAPI void APIENTRY glTexCoord4f( GLfloat s, GLfloat t, GLfloat r, GLfloat q );
+GLAPI void APIENTRY glTexCoord4i( GLint s, GLint t, GLint r, GLint q );
+GLAPI void APIENTRY glTexCoord4s( GLshort s, GLshort t, GLshort r, GLshort q );
+GLAPI void APIENTRY glTexCoord1dv( const GLdouble *v );
+GLAPI void APIENTRY glTexCoord1fv( const GLfloat *v );
+GLAPI void APIENTRY glTexCoord1iv( const GLint *v );
+GLAPI void APIENTRY glTexCoord1sv( const GLshort *v );
+GLAPI void APIENTRY glTexCoord2dv( const GLdouble *v );
+GLAPI void APIENTRY glTexCoord2fv( const GLfloat *v );
+GLAPI void APIENTRY glTexCoord2iv( const GLint *v );
+GLAPI void APIENTRY glTexCoord2sv( const GLshort *v );
+GLAPI void APIENTRY glTexCoord3dv( const GLdouble *v );
+GLAPI void APIENTRY glTexCoord3fv( const GLfloat *v );
+GLAPI void APIENTRY glTexCoord3iv( const GLint *v );
+GLAPI void APIENTRY glTexCoord3sv( const GLshort *v );
+GLAPI void APIENTRY glTexCoord4dv( const GLdouble *v );
+GLAPI void APIENTRY glTexCoord4fv( const GLfloat *v );
+GLAPI void APIENTRY glTexCoord4iv( const GLint *v );
+GLAPI void APIENTRY glTexCoord4sv( const GLshort *v );
+GLAPI void APIENTRY glRasterPos2d( GLdouble x, GLdouble y );
+GLAPI void APIENTRY glRasterPos2f( GLfloat x, GLfloat y );
+GLAPI void APIENTRY glRasterPos2i( GLint x, GLint y );
+GLAPI void APIENTRY glRasterPos2s( GLshort x, GLshort y );
+GLAPI void APIENTRY glRasterPos3d( GLdouble x, GLdouble y, GLdouble z );
+GLAPI void APIENTRY glRasterPos3f( GLfloat x, GLfloat y, GLfloat z );
+GLAPI void APIENTRY glRasterPos3i( GLint x, GLint y, GLint z );
+GLAPI void APIENTRY glRasterPos3s( GLshort x, GLshort y, GLshort z );
+GLAPI void APIENTRY glRasterPos4d( GLdouble x, GLdouble y, GLdouble z, GLdouble w );
+GLAPI void APIENTRY glRasterPos4f( GLfloat x, GLfloat y, GLfloat z, GLfloat w );
+GLAPI void APIENTRY glRasterPos4i( GLint x, GLint y, GLint z, GLint w );
+GLAPI void APIENTRY glRasterPos4s( GLshort x, GLshort y, GLshort z, GLshort w );
+GLAPI void APIENTRY glRasterPos2dv( const GLdouble *v );
+GLAPI void APIENTRY glRasterPos2fv( const GLfloat *v );
+GLAPI void APIENTRY glRasterPos2iv( const GLint *v );
+GLAPI void APIENTRY glRasterPos2sv( const GLshort *v );
+GLAPI void APIENTRY glRasterPos3dv( const GLdouble *v );
+GLAPI void APIENTRY glRasterPos3fv( const GLfloat *v );
+GLAPI void APIENTRY glRasterPos3iv( const GLint *v );
+GLAPI void APIENTRY glRasterPos3sv( const GLshort *v );
+GLAPI void APIENTRY glRasterPos4dv( const GLdouble *v );
+GLAPI void APIENTRY glRasterPos4fv( const GLfloat *v );
+GLAPI void APIENTRY glRasterPos4iv( const GLint *v );
+GLAPI void APIENTRY glRasterPos4sv( const GLshort *v );
+GLAPI void APIENTRY glRectd( GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2 );
+GLAPI void APIENTRY glRectf( GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2 );
+GLAPI void APIENTRY glRecti( GLint x1, GLint y1, GLint x2, GLint y2 );
+GLAPI void APIENTRY glRects( GLshort x1, GLshort y1, GLshort x2, GLshort y2 );
+GLAPI void APIENTRY glRectdv( const GLdouble *v1, const GLdouble *v2 );
+GLAPI void APIENTRY glRectfv( const GLfloat *v1, const GLfloat *v2 );
+GLAPI void APIENTRY glRectiv( const GLint *v1, const GLint *v2 );
+GLAPI void APIENTRY glRectsv( const GLshort *v1, const GLshort *v2 );
+
+/* Lighting */
+GLAPI void APIENTRY glShadeModel( GLenum mode );
+GLAPI void APIENTRY glLightf( GLenum light, GLenum pname, GLfloat param );
+GLAPI void APIENTRY glLighti( GLenum light, GLenum pname, GLint param );
+GLAPI void APIENTRY glLightfv( GLenum light, GLenum pname, const GLfloat *params );
+GLAPI void APIENTRY glLightiv( GLenum light, GLenum pname, const GLint *params );
+GLAPI void APIENTRY glGetLightfv( GLenum light, GLenum pname, GLfloat *params );
+GLAPI void APIENTRY glGetLightiv( GLenum light, GLenum pname, GLint *params );
+GLAPI void APIENTRY glLightModelf( GLenum pname, GLfloat param );
+GLAPI void APIENTRY glLightModeli( GLenum pname, GLint param );
+GLAPI void APIENTRY glLightModelfv( GLenum pname, const GLfloat *params );
+GLAPI void APIENTRY glLightModeliv( GLenum pname, const GLint *params );
+GLAPI void APIENTRY glMaterialf( GLenum face, GLenum pname, GLfloat param );
+GLAPI void APIENTRY glMateriali( GLenum face, GLenum pname, GLint param );
+GLAPI void APIENTRY glMaterialfv( GLenum face, GLenum pname, const GLfloat *params );
+GLAPI void APIENTRY glMaterialiv( GLenum face, GLenum pname, const GLint *params );
+GLAPI void APIENTRY glGetMaterialfv( GLenum face, GLenum pname, GLfloat *params );
+GLAPI void APIENTRY glGetMaterialiv( GLenum face, GLenum pname, GLint *params );
+GLAPI void APIENTRY glColorMaterial( GLenum face, GLenum mode );
+
+/* Raster functions */
+GLAPI void APIENTRY glPixelZoom( GLfloat xfactor, GLfloat yfactor );
+GLAPI void APIENTRY glPixelStoref( GLenum pname, GLfloat param );
+GLAPI void APIENTRY glPixelStorei( GLenum pname, GLint param );
+GLAPI void APIENTRY glPixelTransferf( GLenum pname, GLfloat param );
+GLAPI void APIENTRY glPixelTransferi( GLenum pname, GLint param );
+GLAPI void APIENTRY glPixelMapfv( GLenum map, GLint mapsize, const GLfloat *values );
+GLAPI void APIENTRY glPixelMapuiv( GLenum map, GLint mapsize, const GLuint *values );
+GLAPI void APIENTRY glPixelMapusv( GLenum map, GLint mapsize, const GLushort *values );
+GLAPI void APIENTRY glGetPixelMapfv( GLenum map, GLfloat *values );
+GLAPI void APIENTRY glGetPixelMapuiv( GLenum map, GLuint *values );
+GLAPI void APIENTRY glGetPixelMapusv( GLenum map, GLushort *values );
+GLAPI void APIENTRY glBitmap( GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap );
+GLAPI void APIENTRY glReadPixels( GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels );
+GLAPI void APIENTRY glDrawPixels( GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels );
+GLAPI void APIENTRY glCopyPixels( GLint x, GLint y, GLsizei width, GLsizei height, GLenum type );
+
+/* Stenciling */
+GLAPI void APIENTRY glStencilFunc( GLenum func, GLint ref, GLuint mask );
+GLAPI void APIENTRY glStencilMask( GLuint mask );
+GLAPI void APIENTRY glStencilOp( GLenum fail, GLenum zfail, GLenum zpass );
+GLAPI void APIENTRY glClearStencil( GLint s );
+
+/* Texture mapping */
+GLAPI void APIENTRY glTexGend( GLenum coord, GLenum pname, GLdouble param );
+GLAPI void APIENTRY glTexGenf( GLenum coord, GLenum pname, GLfloat param );
+GLAPI void APIENTRY glTexGeni( GLenum coord, GLenum pname, GLint param );
+GLAPI void APIENTRY glTexGendv( GLenum coord, GLenum pname, const GLdouble *params );
+GLAPI void APIENTRY glTexGenfv( GLenum coord, GLenum pname, const GLfloat *params );
+GLAPI void APIENTRY glTexGeniv( GLenum coord, GLenum pname, const GLint *params );
+GLAPI void APIENTRY glGetTexGendv( GLenum coord, GLenum pname, GLdouble *params );
+GLAPI void APIENTRY glGetTexGenfv( GLenum coord, GLenum pname, GLfloat *params );
+GLAPI void APIENTRY glGetTexGeniv( GLenum coord, GLenum pname, GLint *params );
+GLAPI void APIENTRY glTexEnvf( GLenum target, GLenum pname, GLfloat param );
+GLAPI void APIENTRY glTexEnvi( GLenum target, GLenum pname, GLint param );
+GLAPI void APIENTRY glTexEnvfv( GLenum target, GLenum pname, const GLfloat *params );
+GLAPI void APIENTRY glTexEnviv( GLenum target, GLenum pname, const GLint *params );
+GLAPI void APIENTRY glGetTexEnvfv( GLenum target, GLenum pname, GLfloat *params );
+GLAPI void APIENTRY glGetTexEnviv( GLenum target, GLenum pname, GLint *params );
+GLAPI void APIENTRY glTexParameterf( GLenum target, GLenum pname, GLfloat param );
+GLAPI void APIENTRY glTexParameteri( GLenum target, GLenum pname, GLint param );
+GLAPI void APIENTRY glTexParameterfv( GLenum target, GLenum pname, const GLfloat *params );
+GLAPI void APIENTRY glTexParameteriv( GLenum target, GLenum pname, const GLint *params );
+GLAPI void APIENTRY glGetTexParameterfv( GLenum target, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetTexParameteriv( GLenum target, GLenum pname, GLint *params );
+GLAPI void APIENTRY glGetTexLevelParameterfv( GLenum target, GLint level, GLenum pname, GLfloat *params );
+GLAPI void APIENTRY glGetTexLevelParameteriv( GLenum target, GLint level, GLenum pname, GLint *params );
+GLAPI void APIENTRY glTexImage1D( GLenum target, GLint level, GLint internalFormat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels );
+GLAPI void APIENTRY glTexImage2D( GLenum target, GLint level, GLint internalFormat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels );
+GLAPI void APIENTRY glGetTexImage( GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels );
+
+/* Evaluators */
+GLAPI void APIENTRY glMap1d( GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points );
+GLAPI void APIENTRY glMap1f( GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points );
+GLAPI void APIENTRY glMap2d( GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points );
+GLAPI void APIENTRY glMap2f( GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points );
+GLAPI void APIENTRY glGetMapdv( GLenum target, GLenum query, GLdouble *v );
+GLAPI void APIENTRY glGetMapfv( GLenum target, GLenum query, GLfloat *v );
+GLAPI void APIENTRY glGetMapiv( GLenum target, GLenum query, GLint *v );
+GLAPI void APIENTRY glEvalCoord1d( GLdouble u );
+GLAPI void APIENTRY glEvalCoord1f( GLfloat u );
+GLAPI void APIENTRY glEvalCoord1dv( const GLdouble *u );
+GLAPI void APIENTRY glEvalCoord1fv( const GLfloat *u );
+GLAPI void APIENTRY glEvalCoord2d( GLdouble u, GLdouble v );
+GLAPI void APIENTRY glEvalCoord2f( GLfloat u, GLfloat v );
+GLAPI void APIENTRY glEvalCoord2dv( const GLdouble *u );
+GLAPI void APIENTRY glEvalCoord2fv( const GLfloat *u );
+GLAPI void APIENTRY glMapGrid1d( GLint un, GLdouble u1, GLdouble u2 );
+GLAPI void APIENTRY glMapGrid1f( GLint un, GLfloat u1, GLfloat u2 );
+GLAPI void APIENTRY glMapGrid2d( GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2 );
+GLAPI void APIENTRY glMapGrid2f( GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2 );
+GLAPI void APIENTRY glEvalPoint1( GLint i );
+GLAPI void APIENTRY glEvalPoint2( GLint i, GLint j );
+GLAPI void APIENTRY glEvalMesh1( GLenum mode, GLint i1, GLint i2 );
+GLAPI void APIENTRY glEvalMesh2( GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2 );
+
+/* Fog */
+GLAPI void APIENTRY glFogf( GLenum pname, GLfloat param );
+GLAPI void APIENTRY glFogi( GLenum pname, GLint param );
+GLAPI void APIENTRY glFogfv( GLenum pname, const GLfloat *params );
+GLAPI void APIENTRY glFogiv( GLenum pname, const GLint *params );
+
+/* Selection and Feedback */
+GLAPI void APIENTRY glFeedbackBuffer( GLsizei size, GLenum type, GLfloat *buffer );
+GLAPI void APIENTRY glPassThrough( GLfloat token );
+GLAPI void APIENTRY glSelectBuffer( GLsizei size, GLuint *buffer );
+GLAPI void APIENTRY glInitNames( void );
+GLAPI void APIENTRY glLoadName( GLuint name );
+GLAPI void APIENTRY glPushName( GLuint name );
+GLAPI void APIENTRY glPopName( void );
+
+
+/* 1.1 functions */
+/* texture objects */
+GLAPI void APIENTRY glGenTextures( GLsizei n, GLuint *textures );
+GLAPI void APIENTRY glDeleteTextures( GLsizei n, const GLuint *textures);
+GLAPI void APIENTRY glBindTexture( GLenum target, GLuint texture );
+GLAPI void APIENTRY glPrioritizeTextures( GLsizei n, const GLuint *textures, const GLclampf *priorities );
+GLAPI GLboolean APIENTRY glAreTexturesResident( GLsizei n, const GLuint *textures, GLboolean *residences );
+GLAPI GLboolean APIENTRY glIsTexture( GLuint texture );
+/* texture mapping */
+GLAPI void APIENTRY glTexSubImage1D( GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels );
+GLAPI void APIENTRY glTexSubImage2D( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels );
+GLAPI void APIENTRY glCopyTexImage1D( GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border );
+GLAPI void APIENTRY glCopyTexImage2D( GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border );
+GLAPI void APIENTRY glCopyTexSubImage1D( GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width );
+GLAPI void APIENTRY glCopyTexSubImage2D( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height );
+/* vertex arrays */
+GLAPI void APIENTRY glVertexPointer( GLint size, GLenum type, GLsizei stride, const GLvoid *ptr );
+GLAPI void APIENTRY glNormalPointer( GLenum type, GLsizei stride, const GLvoid *ptr );
+GLAPI void APIENTRY glColorPointer( GLint size, GLenum type, GLsizei stride, const GLvoid *ptr );
+GLAPI void APIENTRY glIndexPointer( GLenum type, GLsizei stride, const GLvoid *ptr );
+GLAPI void APIENTRY glTexCoordPointer( GLint size, GLenum type, GLsizei stride, const GLvoid *ptr );
+GLAPI void APIENTRY glEdgeFlagPointer( GLsizei stride, const GLvoid *ptr );
+GLAPI void APIENTRY glGetPointerv( GLenum pname, GLvoid **params );
+GLAPI void APIENTRY glArrayElement( GLint i );
+GLAPI void APIENTRY glDrawArrays( GLenum mode, GLint first, GLsizei count );
+GLAPI void APIENTRY glDrawElements( GLenum mode, GLsizei count, GLenum type, const GLvoid *indices );
+GLAPI void APIENTRY glInterleavedArrays( GLenum format, GLsizei stride, const GLvoid *pointer );
+
+
+
+/* Under Windows, we do not define OpenGL 1.2 & 1.3 functionality, since
+   it is treated as extensions (defined in glext.h) */
+#if !defined(__WIN32__)
+
+/* 1.2 functions */
+GLAPI void APIENTRY glDrawRangeElements( GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices );
+GLAPI void APIENTRY glTexImage3D( GLenum target, GLint level, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels );
+GLAPI void APIENTRY glTexSubImage3D( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels);
+GLAPI void APIENTRY glCopyTexSubImage3D( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height );
+
+/* 1.2 imaging extension functions */
+GLAPI void APIENTRY glColorTable( GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table );
+GLAPI void APIENTRY glColorSubTable( GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data );
+GLAPI void APIENTRY glColorTableParameteriv(GLenum target, GLenum pname, const GLint *params);
+GLAPI void APIENTRY glColorTableParameterfv(GLenum target, GLenum pname, const GLfloat *params);
+GLAPI void APIENTRY glCopyColorSubTable( GLenum target, GLsizei start, GLint x, GLint y, GLsizei width );
+GLAPI void APIENTRY glCopyColorTable( GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width );
+GLAPI void APIENTRY glGetColorTable( GLenum target, GLenum format, GLenum type, GLvoid *table );
+GLAPI void APIENTRY glGetColorTableParameterfv( GLenum target, GLenum pname, GLfloat *params );
+GLAPI void APIENTRY glGetColorTableParameteriv( GLenum target, GLenum pname, GLint *params );
+GLAPI void APIENTRY glBlendEquation( GLenum mode );
+GLAPI void APIENTRY glBlendColor( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha );
+GLAPI void APIENTRY glHistogram( GLenum target, GLsizei width, GLenum internalformat, GLboolean sink );
+GLAPI void APIENTRY glResetHistogram( GLenum target );
+GLAPI void APIENTRY glGetHistogram( GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values );
+GLAPI void APIENTRY glGetHistogramParameterfv( GLenum target, GLenum pname, GLfloat *params );
+GLAPI void APIENTRY glGetHistogramParameteriv( GLenum target, GLenum pname, GLint *params );
+GLAPI void APIENTRY glMinmax( GLenum target, GLenum internalformat, GLboolean sink );
+GLAPI void APIENTRY glResetMinmax( GLenum target );
+GLAPI void APIENTRY glGetMinmax( GLenum target, GLboolean reset, GLenum format, GLenum types, GLvoid *values );
+GLAPI void APIENTRY glGetMinmaxParameterfv( GLenum target, GLenum pname, GLfloat *params );
+GLAPI void APIENTRY glGetMinmaxParameteriv( GLenum target, GLenum pname, GLint *params );
+GLAPI void APIENTRY glConvolutionFilter1D( GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image );
+GLAPI void APIENTRY glConvolutionFilter2D( GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image );
+GLAPI void APIENTRY glConvolutionParameterf( GLenum target, GLenum pname, GLfloat params );
+GLAPI void APIENTRY glConvolutionParameterfv( GLenum target, GLenum pname, const GLfloat *params );
+GLAPI void APIENTRY glConvolutionParameteri( GLenum target, GLenum pname, GLint params );
+GLAPI void APIENTRY glConvolutionParameteriv( GLenum target, GLenum pname, const GLint *params );
+GLAPI void APIENTRY glCopyConvolutionFilter1D( GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width );
+GLAPI void APIENTRY glCopyConvolutionFilter2D( GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height);
+GLAPI void APIENTRY glGetConvolutionFilter( GLenum target, GLenum format, GLenum type, GLvoid *image );
+GLAPI void APIENTRY glGetConvolutionParameterfv( GLenum target, GLenum pname, GLfloat *params );
+GLAPI void APIENTRY glGetConvolutionParameteriv( GLenum target, GLenum pname, GLint *params );
+GLAPI void APIENTRY glSeparableFilter2D( GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column );
+GLAPI void APIENTRY glGetSeparableFilter( GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span );
+
+/* 1.3 functions */
+GLAPI void APIENTRY glActiveTexture( GLenum texture );
+GLAPI void APIENTRY glClientActiveTexture( GLenum texture );
+GLAPI void APIENTRY glCompressedTexImage1D( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data );
+GLAPI void APIENTRY glCompressedTexImage2D( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data );
+GLAPI void APIENTRY glCompressedTexImage3D( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data );
+GLAPI void APIENTRY glCompressedTexSubImage1D( GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data );
+GLAPI void APIENTRY glCompressedTexSubImage2D( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data );
+GLAPI void APIENTRY glCompressedTexSubImage3D( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data );
+GLAPI void APIENTRY glGetCompressedTexImage( GLenum target, GLint lod, GLvoid *img );
+GLAPI void APIENTRY glMultiTexCoord1d( GLenum target, GLdouble s );
+GLAPI void APIENTRY glMultiTexCoord1dv( GLenum target, const GLdouble *v );
+GLAPI void APIENTRY glMultiTexCoord1f( GLenum target, GLfloat s );
+GLAPI void APIENTRY glMultiTexCoord1fv( GLenum target, const GLfloat *v );
+GLAPI void APIENTRY glMultiTexCoord1i( GLenum target, GLint s );
+GLAPI void APIENTRY glMultiTexCoord1iv( GLenum target, const GLint *v );
+GLAPI void APIENTRY glMultiTexCoord1s( GLenum target, GLshort s );
+GLAPI void APIENTRY glMultiTexCoord1sv( GLenum target, const GLshort *v );
+GLAPI void APIENTRY glMultiTexCoord2d( GLenum target, GLdouble s, GLdouble t );
+GLAPI void APIENTRY glMultiTexCoord2dv( GLenum target, const GLdouble *v );
+GLAPI void APIENTRY glMultiTexCoord2f( GLenum target, GLfloat s, GLfloat t );
+GLAPI void APIENTRY glMultiTexCoord2fv( GLenum target, const GLfloat *v );
+GLAPI void APIENTRY glMultiTexCoord2i( GLenum target, GLint s, GLint t );
+GLAPI void APIENTRY glMultiTexCoord2iv( GLenum target, const GLint *v );
+GLAPI void APIENTRY glMultiTexCoord2s( GLenum target, GLshort s, GLshort t );
+GLAPI void APIENTRY glMultiTexCoord2sv( GLenum target, const GLshort *v );
+GLAPI void APIENTRY glMultiTexCoord3d( GLenum target, GLdouble s, GLdouble t, GLdouble r );
+GLAPI void APIENTRY glMultiTexCoord3dv( GLenum target, const GLdouble *v );
+GLAPI void APIENTRY glMultiTexCoord3f( GLenum target, GLfloat s, GLfloat t, GLfloat r );
+GLAPI void APIENTRY glMultiTexCoord3fv( GLenum target, const GLfloat *v );
+GLAPI void APIENTRY glMultiTexCoord3i( GLenum target, GLint s, GLint t, GLint r );
+GLAPI void APIENTRY glMultiTexCoord3iv( GLenum target, const GLint *v );
+GLAPI void APIENTRY glMultiTexCoord3s( GLenum target, GLshort s, GLshort t, GLshort r );
+GLAPI void APIENTRY glMultiTexCoord3sv( GLenum target, const GLshort *v );
+GLAPI void APIENTRY glMultiTexCoord4d( GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q );
+GLAPI void APIENTRY glMultiTexCoord4dv( GLenum target, const GLdouble *v );
+GLAPI void APIENTRY glMultiTexCoord4f( GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q );
+GLAPI void APIENTRY glMultiTexCoord4fv( GLenum target, const GLfloat *v );
+GLAPI void APIENTRY glMultiTexCoord4i( GLenum target, GLint s, GLint t, GLint r, GLint q );
+GLAPI void APIENTRY glMultiTexCoord4iv( GLenum target, const GLint *v );
+GLAPI void APIENTRY glMultiTexCoord4s( GLenum target, GLshort s, GLshort t, GLshort r, GLshort q );
+GLAPI void APIENTRY glMultiTexCoord4sv( GLenum target, const GLshort *v );
+GLAPI void APIENTRY glLoadTransposeMatrixd( const GLdouble m[16] );
+GLAPI void APIENTRY glLoadTransposeMatrixf( const GLfloat m[16] );
+GLAPI void APIENTRY glMultTransposeMatrixd( const GLdouble m[16] );
+GLAPI void APIENTRY glMultTransposeMatrixf( const GLfloat m[16] );
+GLAPI void APIENTRY glSampleCoverage( GLclampf value, GLboolean invert );
+GLAPI void APIENTRY glSamplePass( GLenum pass );
+
+#endif /* __WIN32__ */
+
+
+/* Include external definitions of OpenGL extensions */
+/* Removed, see this bug report for reference:
+ * http://sourceforge.net/tracker/index.php?func=detail&aid=610178&group_id=2435&atid=102435
+ *
+ * #include <GL/glext.h>
+ */
+
+
+/************************************************************************
+ * Begin system-specific stuff
+ */
+/*
+ * End system-specific stuff
+ ************************************************************************/
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __gl_h_ */
Index: Daodan/MinGW/include/GL/glext.h
===================================================================
--- Daodan/MinGW/include/GL/glext.h	(revision 1046)
+++ Daodan/MinGW/include/GL/glext.h	(revision 1046)
@@ -0,0 +1,4623 @@
+#ifndef __glext_h_
+#define __glext_h_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+** License Applicability. Except to the extent portions of this file are
+** made subject to an alternative license as permitted in the SGI Free
+** Software License B, Version 1.1 (the "License"), the contents of this
+** file are subject only to the provisions of the License. You may not use
+** this file except in compliance with the License. You may obtain a copy
+** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600
+** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:
+**
+** http://oss.sgi.com/projects/FreeB
+**
+** Note that, as provided in the License, the Software is distributed on an
+** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS
+** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND
+** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A
+** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
+**
+** Original Code. The Original Code is: OpenGL Sample Implementation,
+** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,
+** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.
+** Copyright in any portions created by third parties is as indicated
+** elsewhere herein. All Rights Reserved.
+**
+** Additional Notice Provisions: This software was created using the
+** OpenGL(R) version 1.2.1 Sample Implementation published by SGI, but has
+** not been independently verified as being compliant with the OpenGL(R)
+** version 1.2.1 Specification.
+*/
+
+#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__)
+#define WIN32_LEAN_AND_MEAN 1
+#include <windows.h>
+#endif
+
+#ifndef APIENTRY
+#define APIENTRY
+#endif
+#ifndef GLAPI
+#define GLAPI extern
+#endif
+
+/*************************************************************/
+
+/* Header file version number, required by OpenGL ABI for Linux */
+/* glext.h last updated 2002/03/22 */
+/* Current version at http://oss.sgi.com/projects/ogl-sample/registry/ */
+#define GL_GLEXT_VERSION 11
+
+#ifndef GL_VERSION_1_2
+#define GL_CONSTANT_COLOR                 0x8001
+#define GL_ONE_MINUS_CONSTANT_COLOR       0x8002
+#define GL_CONSTANT_ALPHA                 0x8003
+#define GL_ONE_MINUS_CONSTANT_ALPHA       0x8004
+#define GL_BLEND_COLOR                    0x8005
+#define GL_FUNC_ADD                       0x8006
+#define GL_MIN                            0x8007
+#define GL_MAX                            0x8008
+#define GL_BLEND_EQUATION                 0x8009
+#define GL_FUNC_SUBTRACT                  0x800A
+#define GL_FUNC_REVERSE_SUBTRACT          0x800B
+#define GL_CONVOLUTION_1D                 0x8010
+#define GL_CONVOLUTION_2D                 0x8011
+#define GL_SEPARABLE_2D                   0x8012
+#define GL_CONVOLUTION_BORDER_MODE        0x8013
+#define GL_CONVOLUTION_FILTER_SCALE       0x8014
+#define GL_CONVOLUTION_FILTER_BIAS        0x8015
+#define GL_REDUCE                         0x8016
+#define GL_CONVOLUTION_FORMAT             0x8017
+#define GL_CONVOLUTION_WIDTH              0x8018
+#define GL_CONVOLUTION_HEIGHT             0x8019
+#define GL_MAX_CONVOLUTION_WIDTH          0x801A
+#define GL_MAX_CONVOLUTION_HEIGHT         0x801B
+#define GL_POST_CONVOLUTION_RED_SCALE     0x801C
+#define GL_POST_CONVOLUTION_GREEN_SCALE   0x801D
+#define GL_POST_CONVOLUTION_BLUE_SCALE    0x801E
+#define GL_POST_CONVOLUTION_ALPHA_SCALE   0x801F
+#define GL_POST_CONVOLUTION_RED_BIAS      0x8020
+#define GL_POST_CONVOLUTION_GREEN_BIAS    0x8021
+#define GL_POST_CONVOLUTION_BLUE_BIAS     0x8022
+#define GL_POST_CONVOLUTION_ALPHA_BIAS    0x8023
+#define GL_HISTOGRAM                      0x8024
+#define GL_PROXY_HISTOGRAM                0x8025
+#define GL_HISTOGRAM_WIDTH                0x8026
+#define GL_HISTOGRAM_FORMAT               0x8027
+#define GL_HISTOGRAM_RED_SIZE             0x8028
+#define GL_HISTOGRAM_GREEN_SIZE           0x8029
+#define GL_HISTOGRAM_BLUE_SIZE            0x802A
+#define GL_HISTOGRAM_ALPHA_SIZE           0x802B
+#define GL_HISTOGRAM_LUMINANCE_SIZE       0x802C
+#define GL_HISTOGRAM_SINK                 0x802D
+#define GL_MINMAX                         0x802E
+#define GL_MINMAX_FORMAT                  0x802F
+#define GL_MINMAX_SINK                    0x8030
+#define GL_TABLE_TOO_LARGE                0x8031
+#define GL_UNSIGNED_BYTE_3_3_2            0x8032
+#define GL_UNSIGNED_SHORT_4_4_4_4         0x8033
+#define GL_UNSIGNED_SHORT_5_5_5_1         0x8034
+#define GL_UNSIGNED_INT_8_8_8_8           0x8035
+#define GL_UNSIGNED_INT_10_10_10_2        0x8036
+#define GL_RESCALE_NORMAL                 0x803A
+#define GL_UNSIGNED_BYTE_2_3_3_REV        0x8362
+#define GL_UNSIGNED_SHORT_5_6_5           0x8363
+#define GL_UNSIGNED_SHORT_5_6_5_REV       0x8364
+#define GL_UNSIGNED_SHORT_4_4_4_4_REV     0x8365
+#define GL_UNSIGNED_SHORT_1_5_5_5_REV     0x8366
+#define GL_UNSIGNED_INT_8_8_8_8_REV       0x8367
+#define GL_UNSIGNED_INT_2_10_10_10_REV    0x8368
+#define GL_COLOR_MATRIX                   0x80B1
+#define GL_COLOR_MATRIX_STACK_DEPTH       0x80B2
+#define GL_MAX_COLOR_MATRIX_STACK_DEPTH   0x80B3
+#define GL_POST_COLOR_MATRIX_RED_SCALE    0x80B4
+#define GL_POST_COLOR_MATRIX_GREEN_SCALE  0x80B5
+#define GL_POST_COLOR_MATRIX_BLUE_SCALE   0x80B6
+#define GL_POST_COLOR_MATRIX_ALPHA_SCALE  0x80B7
+#define GL_POST_COLOR_MATRIX_RED_BIAS     0x80B8
+#define GL_POST_COLOR_MATRIX_GREEN_BIAS   0x80B9
+#define GL_POST_COLOR_MATRIX_BLUE_BIAS    0x80BA
+#define GL_COLOR_TABLE                    0x80D0
+#define GL_POST_CONVOLUTION_COLOR_TABLE   0x80D1
+#define GL_POST_COLOR_MATRIX_COLOR_TABLE  0x80D2
+#define GL_PROXY_COLOR_TABLE              0x80D3
+#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE 0x80D4
+#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE 0x80D5
+#define GL_COLOR_TABLE_SCALE              0x80D6
+#define GL_COLOR_TABLE_BIAS               0x80D7
+#define GL_COLOR_TABLE_FORMAT             0x80D8
+#define GL_COLOR_TABLE_WIDTH              0x80D9
+#define GL_COLOR_TABLE_RED_SIZE           0x80DA
+#define GL_COLOR_TABLE_GREEN_SIZE         0x80DB
+#define GL_COLOR_TABLE_BLUE_SIZE          0x80DC
+#define GL_COLOR_TABLE_ALPHA_SIZE         0x80DD
+#define GL_COLOR_TABLE_LUMINANCE_SIZE     0x80DE
+#define GL_COLOR_TABLE_INTENSITY_SIZE     0x80DF
+#define GL_BGR                            0x80E0
+#define GL_BGRA                           0x80E1
+#define GL_MAX_ELEMENTS_VERTICES          0x80E8
+#define GL_MAX_ELEMENTS_INDICES           0x80E9
+#define GL_CLAMP_TO_EDGE                  0x812F
+#define GL_TEXTURE_MIN_LOD                0x813A
+#define GL_TEXTURE_MAX_LOD                0x813B
+#define GL_TEXTURE_BASE_LEVEL             0x813C
+#define GL_TEXTURE_MAX_LEVEL              0x813D
+#define GL_IGNORE_BORDER                  0x8150
+#define GL_CONSTANT_BORDER                0x8151
+#define GL_WRAP_BORDER                    0x8152
+#define GL_REPLICATE_BORDER               0x8153
+#define GL_CONVOLUTION_BORDER_COLOR       0x8154
+#define GL_LIGHT_MODEL_COLOR_CONTROL      0x81F8
+#define GL_SINGLE_COLOR                   0x81F9
+#define GL_SEPARATE_SPECULAR_COLOR        0x81FA
+#define GL_SMOOTH_POINT_SIZE_RANGE        0x0B12
+#define GL_SMOOTH_POINT_SIZE_GRANULARITY  0x0B13
+#define GL_SMOOTH_LINE_WIDTH_RANGE        0x0B22
+#define GL_SMOOTH_LINE_WIDTH_GRANULARITY  0x0B23
+#define GL_ALIASED_POINT_SIZE_RANGE       0x846D
+#define GL_ALIASED_LINE_WIDTH_RANGE       0x846E
+#endif
+
+#ifndef GL_VERSION_1_3
+#define GL_TEXTURE0                       0x84C0
+#define GL_TEXTURE1                       0x84C1
+#define GL_TEXTURE2                       0x84C2
+#define GL_TEXTURE3                       0x84C3
+#define GL_TEXTURE4                       0x84C4
+#define GL_TEXTURE5                       0x84C5
+#define GL_TEXTURE6                       0x84C6
+#define GL_TEXTURE7                       0x84C7
+#define GL_TEXTURE8                       0x84C8
+#define GL_TEXTURE9                       0x84C9
+#define GL_TEXTURE10                      0x84CA
+#define GL_TEXTURE11                      0x84CB
+#define GL_TEXTURE12                      0x84CC
+#define GL_TEXTURE13                      0x84CD
+#define GL_TEXTURE14                      0x84CE
+#define GL_TEXTURE15                      0x84CF
+#define GL_TEXTURE16                      0x84D0
+#define GL_TEXTURE17                      0x84D1
+#define GL_TEXTURE18                      0x84D2
+#define GL_TEXTURE19                      0x84D3
+#define GL_TEXTURE20                      0x84D4
+#define GL_TEXTURE21                      0x84D5
+#define GL_TEXTURE22                      0x84D6
+#define GL_TEXTURE23                      0x84D7
+#define GL_TEXTURE24                      0x84D8
+#define GL_TEXTURE25                      0x84D9
+#define GL_TEXTURE26                      0x84DA
+#define GL_TEXTURE27                      0x84DB
+#define GL_TEXTURE28                      0x84DC
+#define GL_TEXTURE29                      0x84DD
+#define GL_TEXTURE30                      0x84DE
+#define GL_TEXTURE31                      0x84DF
+#define GL_ACTIVE_TEXTURE                 0x84E0
+#define GL_CLIENT_ACTIVE_TEXTURE          0x84E1
+#define GL_MAX_TEXTURE_UNITS              0x84E2
+#define GL_TRANSPOSE_MODELVIEW_MATRIX     0x84E3
+#define GL_TRANSPOSE_PROJECTION_MATRIX    0x84E4
+#define GL_TRANSPOSE_TEXTURE_MATRIX       0x84E5
+#define GL_TRANSPOSE_COLOR_MATRIX         0x84E6
+#define GL_MULTISAMPLE                    0x809D
+#define GL_SAMPLE_ALPHA_TO_COVERAGE       0x809E
+#define GL_SAMPLE_ALPHA_TO_ONE            0x809F
+#define GL_SAMPLE_COVERAGE                0x80A0
+#define GL_SAMPLE_BUFFERS                 0x80A8
+#define GL_SAMPLES                        0x80A9
+#define GL_SAMPLE_COVERAGE_VALUE          0x80AA
+#define GL_SAMPLE_COVERAGE_INVERT         0x80AB
+#define GL_MULTISAMPLE_BIT                0x20000000
+#define GL_NORMAL_MAP                     0x8511
+#define GL_REFLECTION_MAP                 0x8512
+#define GL_TEXTURE_CUBE_MAP               0x8513
+#define GL_TEXTURE_BINDING_CUBE_MAP       0x8514
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_X    0x8515
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X    0x8516
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y    0x8517
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y    0x8518
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z    0x8519
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z    0x851A
+#define GL_PROXY_TEXTURE_CUBE_MAP         0x851B
+#define GL_MAX_CUBE_MAP_TEXTURE_SIZE      0x851C
+#define GL_COMPRESSED_ALPHA               0x84E9
+#define GL_COMPRESSED_LUMINANCE           0x84EA
+#define GL_COMPRESSED_LUMINANCE_ALPHA     0x84EB
+#define GL_COMPRESSED_INTENSITY           0x84EC
+#define GL_COMPRESSED_RGB                 0x84ED
+#define GL_COMPRESSED_RGBA                0x84EE
+#define GL_TEXTURE_COMPRESSION_HINT       0x84EF
+#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE  0x86A0
+#define GL_TEXTURE_COMPRESSED             0x86A1
+#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2
+#define GL_COMPRESSED_TEXTURE_FORMATS     0x86A3
+#define GL_CLAMP_TO_BORDER                0x812D
+#define GL_CLAMP_TO_BORDER_SGIS           0x812D
+#define GL_COMBINE                        0x8570
+#define GL_COMBINE_RGB                    0x8571
+#define GL_COMBINE_ALPHA                  0x8572
+#define GL_SOURCE0_RGB                    0x8580
+#define GL_SOURCE1_RGB                    0x8581
+#define GL_SOURCE2_RGB                    0x8582
+#define GL_SOURCE0_ALPHA                  0x8588
+#define GL_SOURCE1_ALPHA                  0x8589
+#define GL_SOURCE2_ALPHA                  0x858A
+#define GL_OPERAND0_RGB                   0x8590
+#define GL_OPERAND1_RGB                   0x8591
+#define GL_OPERAND2_RGB                   0x8592
+#define GL_OPERAND0_ALPHA                 0x8598
+#define GL_OPERAND1_ALPHA                 0x8599
+#define GL_OPERAND2_ALPHA                 0x859A
+#define GL_RGB_SCALE                      0x8573
+#define GL_ADD_SIGNED                     0x8574
+#define GL_INTERPOLATE                    0x8575
+#define GL_SUBTRACT                       0x84E7
+#define GL_CONSTANT                       0x8576
+#define GL_PRIMARY_COLOR                  0x8577
+#define GL_PREVIOUS                       0x8578
+#define GL_DOT3_RGB                       0x86AE
+#define GL_DOT3_RGBA                      0x86AF
+#endif
+
+#ifndef GL_ARB_multitexture
+#define GL_TEXTURE0_ARB                   0x84C0
+#define GL_TEXTURE1_ARB                   0x84C1
+#define GL_TEXTURE2_ARB                   0x84C2
+#define GL_TEXTURE3_ARB                   0x84C3
+#define GL_TEXTURE4_ARB                   0x84C4
+#define GL_TEXTURE5_ARB                   0x84C5
+#define GL_TEXTURE6_ARB                   0x84C6
+#define GL_TEXTURE7_ARB                   0x84C7
+#define GL_TEXTURE8_ARB                   0x84C8
+#define GL_TEXTURE9_ARB                   0x84C9
+#define GL_TEXTURE10_ARB                  0x84CA
+#define GL_TEXTURE11_ARB                  0x84CB
+#define GL_TEXTURE12_ARB                  0x84CC
+#define GL_TEXTURE13_ARB                  0x84CD
+#define GL_TEXTURE14_ARB                  0x84CE
+#define GL_TEXTURE15_ARB                  0x84CF
+#define GL_TEXTURE16_ARB                  0x84D0
+#define GL_TEXTURE17_ARB                  0x84D1
+#define GL_TEXTURE18_ARB                  0x84D2
+#define GL_TEXTURE19_ARB                  0x84D3
+#define GL_TEXTURE20_ARB                  0x84D4
+#define GL_TEXTURE21_ARB                  0x84D5
+#define GL_TEXTURE22_ARB                  0x84D6
+#define GL_TEXTURE23_ARB                  0x84D7
+#define GL_TEXTURE24_ARB                  0x84D8
+#define GL_TEXTURE25_ARB                  0x84D9
+#define GL_TEXTURE26_ARB                  0x84DA
+#define GL_TEXTURE27_ARB                  0x84DB
+#define GL_TEXTURE28_ARB                  0x84DC
+#define GL_TEXTURE29_ARB                  0x84DD
+#define GL_TEXTURE30_ARB                  0x84DE
+#define GL_TEXTURE31_ARB                  0x84DF
+#define GL_ACTIVE_TEXTURE_ARB             0x84E0
+#define GL_CLIENT_ACTIVE_TEXTURE_ARB      0x84E1
+#define GL_MAX_TEXTURE_UNITS_ARB          0x84E2
+#endif
+
+#ifndef GL_ARB_transpose_matrix
+#define GL_TRANSPOSE_MODELVIEW_MATRIX_ARB 0x84E3
+#define GL_TRANSPOSE_PROJECTION_MATRIX_ARB 0x84E4
+#define GL_TRANSPOSE_TEXTURE_MATRIX_ARB   0x84E5
+#define GL_TRANSPOSE_COLOR_MATRIX_ARB     0x84E6
+#endif
+
+#ifndef GL_ARB_multisample
+#define GL_MULTISAMPLE_ARB                0x809D
+#define GL_SAMPLE_ALPHA_TO_COVERAGE_ARB   0x809E
+#define GL_SAMPLE_ALPHA_TO_ONE_ARB        0x809F
+#define GL_SAMPLE_COVERAGE_ARB            0x80A0
+#define GL_SAMPLE_BUFFERS_ARB             0x80A8
+#define GL_SAMPLES_ARB                    0x80A9
+#define GL_SAMPLE_COVERAGE_VALUE_ARB      0x80AA
+#define GL_SAMPLE_COVERAGE_INVERT_ARB     0x80AB
+#define GL_MULTISAMPLE_BIT_ARB            0x20000000
+#endif
+
+#ifndef GL_ARB_texture_env_add
+#endif
+
+#ifndef GL_ARB_texture_cube_map
+#define GL_NORMAL_MAP_ARB                 0x8511
+#define GL_REFLECTION_MAP_ARB             0x8512
+#define GL_TEXTURE_CUBE_MAP_ARB           0x8513
+#define GL_TEXTURE_BINDING_CUBE_MAP_ARB   0x8514
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB 0x8515
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB 0x8516
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB 0x8517
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB 0x8518
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB 0x8519
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB 0x851A
+#define GL_PROXY_TEXTURE_CUBE_MAP_ARB     0x851B
+#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB  0x851C
+#endif
+
+#ifndef GL_ARB_texture_compression
+#define GL_COMPRESSED_ALPHA_ARB           0x84E9
+#define GL_COMPRESSED_LUMINANCE_ARB       0x84EA
+#define GL_COMPRESSED_LUMINANCE_ALPHA_ARB 0x84EB
+#define GL_COMPRESSED_INTENSITY_ARB       0x84EC
+#define GL_COMPRESSED_RGB_ARB             0x84ED
+#define GL_COMPRESSED_RGBA_ARB            0x84EE
+#define GL_TEXTURE_COMPRESSION_HINT_ARB   0x84EF
+#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB 0x86A0
+#define GL_TEXTURE_COMPRESSED_ARB         0x86A1
+#define GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A2
+#define GL_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A3
+#endif
+
+#ifndef GL_ARB_texture_border_clamp
+#define GL_CLAMP_TO_BORDER_ARB            0x812D
+#endif
+
+#ifndef GL_ARB_point_parameters
+#define GL_POINT_SIZE_MIN_ARB             0x8126
+#define GL_POINT_SIZE_MIN_EXT             0x8126
+#define GL_POINT_SIZE_MIN_SGIS            0x8126
+#define GL_POINT_SIZE_MAX_ARB             0x8127
+#define GL_POINT_SIZE_MAX_EXT             0x8127
+#define GL_POINT_SIZE_MAX_SGIS            0x8127
+#define GL_POINT_FADE_THRESHOLD_SIZE_ARB  0x8128
+#define GL_POINT_FADE_THRESHOLD_SIZE_EXT  0x8128
+#define GL_POINT_FADE_THRESHOLD_SIZE_SGIS 0x8128
+#define GL_POINT_DISTANCE_ATTENUATION_ARB 0x8129
+#define GL_DISTANCE_ATTENUATION_EXT       0x8129
+#define GL_DISTANCE_ATTENUATION_SGIS      0x8129
+#endif
+
+#ifndef GL_ARB_vertex_blend
+#define GL_MAX_VERTEX_UNITS_ARB           0x86A4
+#define GL_ACTIVE_VERTEX_UNITS_ARB        0x86A5
+#define GL_WEIGHT_SUM_UNITY_ARB           0x86A6
+#define GL_VERTEX_BLEND_ARB               0x86A7
+#define GL_CURRENT_WEIGHT_ARB             0x86A8
+#define GL_WEIGHT_ARRAY_TYPE_ARB          0x86A9
+#define GL_WEIGHT_ARRAY_STRIDE_ARB        0x86AA
+#define GL_WEIGHT_ARRAY_SIZE_ARB          0x86AB
+#define GL_WEIGHT_ARRAY_POINTER_ARB       0x86AC
+#define GL_WEIGHT_ARRAY_ARB               0x86AD
+#define GL_MODELVIEW0_ARB                 0x1700
+#define GL_MODELVIEW1_ARB                 0x850A
+#define GL_MODELVIEW2_ARB                 0x8722
+#define GL_MODELVIEW3_ARB                 0x8723
+#define GL_MODELVIEW4_ARB                 0x8724
+#define GL_MODELVIEW5_ARB                 0x8725
+#define GL_MODELVIEW6_ARB                 0x8726
+#define GL_MODELVIEW7_ARB                 0x8727
+#define GL_MODELVIEW8_ARB                 0x8728
+#define GL_MODELVIEW9_ARB                 0x8729
+#define GL_MODELVIEW10_ARB                0x872A
+#define GL_MODELVIEW11_ARB                0x872B
+#define GL_MODELVIEW12_ARB                0x872C
+#define GL_MODELVIEW13_ARB                0x872D
+#define GL_MODELVIEW14_ARB                0x872E
+#define GL_MODELVIEW15_ARB                0x872F
+#define GL_MODELVIEW16_ARB                0x8730
+#define GL_MODELVIEW17_ARB                0x8731
+#define GL_MODELVIEW18_ARB                0x8732
+#define GL_MODELVIEW19_ARB                0x8733
+#define GL_MODELVIEW20_ARB                0x8734
+#define GL_MODELVIEW21_ARB                0x8735
+#define GL_MODELVIEW22_ARB                0x8736
+#define GL_MODELVIEW23_ARB                0x8737
+#define GL_MODELVIEW24_ARB                0x8738
+#define GL_MODELVIEW25_ARB                0x8739
+#define GL_MODELVIEW26_ARB                0x873A
+#define GL_MODELVIEW27_ARB                0x873B
+#define GL_MODELVIEW28_ARB                0x873C
+#define GL_MODELVIEW29_ARB                0x873D
+#define GL_MODELVIEW30_ARB                0x873E
+#define GL_MODELVIEW31_ARB                0x873F
+#endif
+
+#ifndef GL_ARB_matrix_palette
+#define GL_MATRIX_PALETTE_ARB             0x8840
+#define GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB 0x8841
+#define GL_MAX_PALETTE_MATRICES_ARB       0x8842
+#define GL_CURRENT_PALETTE_MATRIX_ARB     0x8843
+#define GL_MATRIX_INDEX_ARRAY_ARB         0x8844
+#define GL_CURRENT_MATRIX_INDEX_ARB       0x8845
+#define GL_MATRIX_INDEX_ARRAY_SIZE_ARB    0x8846
+#define GL_MATRIX_INDEX_ARRAY_TYPE_ARB    0x8847
+#define GL_MATRIX_INDEX_ARRAY_STRIDE_ARB  0x8848
+#define GL_MATRIX_INDEX_ARRAY_POINTER_ARB 0x8849
+#endif
+
+#ifndef GL_ARB_texture_env_combine
+#define GL_COMBINE_ARB                    0x8570
+#define GL_COMBINE_RGB_ARB                0x8571
+#define GL_COMBINE_ALPHA_ARB              0x8572
+#define GL_SOURCE0_RGB_ARB                0x8580
+#define GL_SOURCE1_RGB_ARB                0x8581
+#define GL_SOURCE2_RGB_ARB                0x8582
+#define GL_SOURCE0_ALPHA_ARB              0x8588
+#define GL_SOURCE1_ALPHA_ARB              0x8589
+#define GL_SOURCE2_ALPHA_ARB              0x858A
+#define GL_OPERAND0_RGB_ARB               0x8590
+#define GL_OPERAND1_RGB_ARB               0x8591
+#define GL_OPERAND2_RGB_ARB               0x8592
+#define GL_OPERAND0_ALPHA_ARB             0x8598
+#define GL_OPERAND1_ALPHA_ARB             0x8599
+#define GL_OPERAND2_ALPHA_ARB             0x859A
+#define GL_RGB_SCALE_ARB                  0x8573
+#define GL_ADD_SIGNED_ARB                 0x8574
+#define GL_INTERPOLATE_ARB                0x8575
+#define GL_SUBTRACT_ARB                   0x84E7
+#define GL_CONSTANT_ARB                   0x8576
+#define GL_PRIMARY_COLOR_ARB              0x8577
+#define GL_PREVIOUS_ARB                   0x8578
+#endif
+
+#ifndef GL_ARB_texture_env_crossbar
+#endif
+
+#ifndef GL_ARB_texture_env_dot3
+#define GL_DOT3_RGB_ARB                   0x86AE
+#define GL_DOT3_RGB_EXT                   0x86AE
+#define GL_DOT3_RGBA_ARB                  0x86AF
+#define GL_DOT3_RGBA_EXT                  0x86AF
+#endif
+
+#ifndef GL_ARB_texture_mirrored_repeat
+#define GL_MIRRORED_REPEAT_ARB            0x8370
+#endif
+
+#ifndef GL_ARB_depth_texture
+#define GL_DEPTH_COMPONENT16_ARB          0x81A5
+#define GL_DEPTH_COMPONENT24_ARB          0x81A6
+#define GL_DEPTH_COMPONENT32_ARB          0x81A7
+#define GL_TEXTURE_DEPTH_SIZE_ARB         0x884A
+#define GL_DEPTH_TEXTURE_MODE_ARB         0x884B
+#endif
+
+#ifndef GL_ARB_shadow
+#define GL_TEXTURE_COMPARE_MODE_ARB       0x884C
+#define GL_TEXTURE_COMPARE_FUNC_ARB       0x884D
+#define GL_COMPARE_R_TO_TEXTURE_ARB       0x884E
+#endif
+
+#ifndef GL_ARB_shadow_ambient
+#define GL_TEXTURE_COMPARE_FAIL_VALUE_ARB 0x80BF
+#endif
+
+#ifndef GL_ARB_window_pos
+#endif
+
+#ifndef GL_EXT_abgr
+#define GL_ABGR_EXT                       0x8000
+#endif
+
+#ifndef GL_EXT_blend_color
+#define GL_CONSTANT_COLOR_EXT             0x8001
+#define GL_ONE_MINUS_CONSTANT_COLOR_EXT   0x8002
+#define GL_CONSTANT_ALPHA_EXT             0x8003
+#define GL_ONE_MINUS_CONSTANT_ALPHA_EXT   0x8004
+#define GL_BLEND_COLOR_EXT                0x8005
+#endif
+
+#ifndef GL_EXT_polygon_offset
+#define GL_POLYGON_OFFSET_EXT             0x8037
+#define GL_POLYGON_OFFSET_FACTOR_EXT      0x8038
+#define GL_POLYGON_OFFSET_BIAS_EXT        0x8039
+#endif
+
+#ifndef GL_EXT_texture
+#define GL_ALPHA4_EXT                     0x803B
+#define GL_ALPHA8_EXT                     0x803C
+#define GL_ALPHA12_EXT                    0x803D
+#define GL_ALPHA16_EXT                    0x803E
+#define GL_LUMINANCE4_EXT                 0x803F
+#define GL_LUMINANCE8_EXT                 0x8040
+#define GL_LUMINANCE12_EXT                0x8041
+#define GL_LUMINANCE16_EXT                0x8042
+#define GL_LUMINANCE4_ALPHA4_EXT          0x8043
+#define GL_LUMINANCE6_ALPHA2_EXT          0x8044
+#define GL_LUMINANCE8_ALPHA8_EXT          0x8045
+#define GL_LUMINANCE12_ALPHA4_EXT         0x8046
+#define GL_LUMINANCE12_ALPHA12_EXT        0x8047
+#define GL_LUMINANCE16_ALPHA16_EXT        0x8048
+#define GL_INTENSITY_EXT                  0x8049
+#define GL_INTENSITY4_EXT                 0x804A
+#define GL_INTENSITY8_EXT                 0x804B
+#define GL_INTENSITY12_EXT                0x804C
+#define GL_INTENSITY16_EXT                0x804D
+#define GL_RGB2_EXT                       0x804E
+#define GL_RGB4_EXT                       0x804F
+#define GL_RGB5_EXT                       0x8050
+#define GL_RGB8_EXT                       0x8051
+#define GL_RGB10_EXT                      0x8052
+#define GL_RGB12_EXT                      0x8053
+#define GL_RGB16_EXT                      0x8054
+#define GL_RGBA2_EXT                      0x8055
+#define GL_RGBA4_EXT                      0x8056
+#define GL_RGB5_A1_EXT                    0x8057
+#define GL_RGBA8_EXT                      0x8058
+#define GL_RGB10_A2_EXT                   0x8059
+#define GL_RGBA12_EXT                     0x805A
+#define GL_RGBA16_EXT                     0x805B
+#define GL_TEXTURE_RED_SIZE_EXT           0x805C
+#define GL_TEXTURE_GREEN_SIZE_EXT         0x805D
+#define GL_TEXTURE_BLUE_SIZE_EXT          0x805E
+#define GL_TEXTURE_ALPHA_SIZE_EXT         0x805F
+#define GL_TEXTURE_LUMINANCE_SIZE_EXT     0x8060
+#define GL_TEXTURE_INTENSITY_SIZE_EXT     0x8061
+#define GL_REPLACE_EXT                    0x8062
+#define GL_PROXY_TEXTURE_1D_EXT           0x8063
+#define GL_PROXY_TEXTURE_2D_EXT           0x8064
+#define GL_TEXTURE_TOO_LARGE_EXT          0x8065
+#endif
+
+#ifndef GL_EXT_texture3D
+#define GL_PACK_SKIP_IMAGES               0x806B
+#define GL_PACK_SKIP_IMAGES_EXT           0x806B
+#define GL_PACK_IMAGE_HEIGHT              0x806C
+#define GL_PACK_IMAGE_HEIGHT_EXT          0x806C
+#define GL_UNPACK_SKIP_IMAGES             0x806D
+#define GL_UNPACK_SKIP_IMAGES_EXT         0x806D
+#define GL_UNPACK_IMAGE_HEIGHT            0x806E
+#define GL_UNPACK_IMAGE_HEIGHT_EXT        0x806E
+#define GL_TEXTURE_3D                     0x806F
+#define GL_TEXTURE_3D_EXT                 0x806F
+#define GL_PROXY_TEXTURE_3D               0x8070
+#define GL_PROXY_TEXTURE_3D_EXT           0x8070
+#define GL_TEXTURE_DEPTH                  0x8071
+#define GL_TEXTURE_DEPTH_EXT              0x8071
+#define GL_TEXTURE_WRAP_R                 0x8072
+#define GL_TEXTURE_WRAP_R_EXT             0x8072
+#define GL_MAX_3D_TEXTURE_SIZE            0x8073
+#define GL_MAX_3D_TEXTURE_SIZE_EXT        0x8073
+#endif
+
+#ifndef GL_SGIS_texture_filter4
+#define GL_FILTER4_SGIS                   0x8146
+#define GL_TEXTURE_FILTER4_SIZE_SGIS      0x8147
+#endif
+
+#ifndef GL_EXT_subtexture
+#endif
+
+#ifndef GL_EXT_copy_texture
+#endif
+
+#ifndef GL_EXT_histogram
+#define GL_HISTOGRAM_EXT                  0x8024
+#define GL_PROXY_HISTOGRAM_EXT            0x8025
+#define GL_HISTOGRAM_WIDTH_EXT            0x8026
+#define GL_HISTOGRAM_FORMAT_EXT           0x8027
+#define GL_HISTOGRAM_RED_SIZE_EXT         0x8028
+#define GL_HISTOGRAM_GREEN_SIZE_EXT       0x8029
+#define GL_HISTOGRAM_BLUE_SIZE_EXT        0x802A
+#define GL_HISTOGRAM_ALPHA_SIZE_EXT       0x802B
+#define GL_HISTOGRAM_LUMINANCE_SIZE_EXT   0x802C
+#define GL_HISTOGRAM_SINK_EXT             0x802D
+#define GL_MINMAX_EXT                     0x802E
+#define GL_MINMAX_FORMAT_EXT              0x802F
+#define GL_MINMAX_SINK_EXT                0x8030
+#define GL_TABLE_TOO_LARGE_EXT            0x8031
+#endif
+
+#ifndef GL_EXT_convolution
+#define GL_CONVOLUTION_1D_EXT             0x8010
+#define GL_CONVOLUTION_2D_EXT             0x8011
+#define GL_SEPARABLE_2D_EXT               0x8012
+#define GL_CONVOLUTION_BORDER_MODE_EXT    0x8013
+#define GL_CONVOLUTION_FILTER_SCALE_EXT   0x8014
+#define GL_CONVOLUTION_FILTER_BIAS_EXT    0x8015
+#define GL_REDUCE_EXT                     0x8016
+#define GL_CONVOLUTION_FORMAT_EXT         0x8017
+#define GL_CONVOLUTION_WIDTH_EXT          0x8018
+#define GL_CONVOLUTION_HEIGHT_EXT         0x8019
+#define GL_MAX_CONVOLUTION_WIDTH_EXT      0x801A
+#define GL_MAX_CONVOLUTION_HEIGHT_EXT     0x801B
+#define GL_POST_CONVOLUTION_RED_SCALE_EXT 0x801C
+#define GL_POST_CONVOLUTION_GREEN_SCALE_EXT 0x801D
+#define GL_POST_CONVOLUTION_BLUE_SCALE_EXT 0x801E
+#define GL_POST_CONVOLUTION_ALPHA_SCALE_EXT 0x801F
+#define GL_POST_CONVOLUTION_RED_BIAS_EXT  0x8020
+#define GL_POST_CONVOLUTION_GREEN_BIAS_EXT 0x8021
+#define GL_POST_CONVOLUTION_BLUE_BIAS_EXT 0x8022
+#define GL_POST_CONVOLUTION_ALPHA_BIAS_EXT 0x8023
+#endif
+
+#ifndef GL_SGI_color_matrix
+#define GL_COLOR_MATRIX_SGI               0x80B1
+#define GL_COLOR_MATRIX_STACK_DEPTH_SGI   0x80B2
+#define GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI 0x80B3
+#define GL_POST_COLOR_MATRIX_RED_SCALE_SGI 0x80B4
+#define GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI 0x80B5
+#define GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI 0x80B6
+#define GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI 0x80B7
+#define GL_POST_COLOR_MATRIX_RED_BIAS_SGI 0x80B8
+#define GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI 0x80B9
+#define GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI 0x80BA
+#define GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI 0x80BB
+#endif
+
+#ifndef GL_SGI_color_table
+#define GL_COLOR_TABLE_SGI                0x80D0
+#define GL_POST_CONVOLUTION_COLOR_TABLE_SGI 0x80D1
+#define GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI 0x80D2
+#define GL_PROXY_COLOR_TABLE_SGI          0x80D3
+#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE_SGI 0x80D4
+#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE_SGI 0x80D5
+#define GL_COLOR_TABLE_SCALE_SGI          0x80D6
+#define GL_COLOR_TABLE_BIAS_SGI           0x80D7
+#define GL_COLOR_TABLE_FORMAT_SGI         0x80D8
+#define GL_COLOR_TABLE_WIDTH_SGI          0x80D9
+#define GL_COLOR_TABLE_RED_SIZE_SGI       0x80DA
+#define GL_COLOR_TABLE_GREEN_SIZE_SGI     0x80DB
+#define GL_COLOR_TABLE_BLUE_SIZE_SGI      0x80DC
+#define GL_COLOR_TABLE_ALPHA_SIZE_SGI     0x80DD
+#define GL_COLOR_TABLE_LUMINANCE_SIZE_SGI 0x80DE
+#define GL_COLOR_TABLE_INTENSITY_SIZE_SGI 0x80DF
+#endif
+
+#ifndef GL_SGIS_pixel_texture
+#define GL_PIXEL_TEXTURE_SGIS             0x8353
+#define GL_PIXEL_FRAGMENT_RGB_SOURCE_SGIS 0x8354
+#define GL_PIXEL_FRAGMENT_ALPHA_SOURCE_SGIS 0x8355
+#define GL_PIXEL_GROUP_COLOR_SGIS         0x8356
+#endif
+
+#ifndef GL_SGIX_pixel_texture
+#define GL_PIXEL_TEX_GEN_SGIX             0x8139
+#define GL_PIXEL_TEX_GEN_MODE_SGIX        0x832B
+#endif
+
+#ifndef GL_SGIS_texture4D
+#define GL_PACK_SKIP_VOLUMES_SGIS         0x8130
+#define GL_PACK_IMAGE_DEPTH_SGIS          0x8131
+#define GL_UNPACK_SKIP_VOLUMES_SGIS       0x8132
+#define GL_UNPACK_IMAGE_DEPTH_SGIS        0x8133
+#define GL_TEXTURE_4D_SGIS                0x8134
+#define GL_PROXY_TEXTURE_4D_SGIS          0x8135
+#define GL_TEXTURE_4DSIZE_SGIS            0x8136
+#define GL_TEXTURE_WRAP_Q_SGIS            0x8137
+#define GL_MAX_4D_TEXTURE_SIZE_SGIS       0x8138
+#define GL_TEXTURE_4D_BINDING_SGIS        0x814F
+#endif
+
+#ifndef GL_SGI_texture_color_table
+#define GL_TEXTURE_COLOR_TABLE_SGI        0x80BC
+#define GL_PROXY_TEXTURE_COLOR_TABLE_SGI  0x80BD
+#endif
+
+#ifndef GL_EXT_cmyka
+#define GL_CMYK_EXT                       0x800C
+#define GL_CMYKA_EXT                      0x800D
+#define GL_PACK_CMYK_HINT_EXT             0x800E
+#define GL_UNPACK_CMYK_HINT_EXT           0x800F
+#endif
+
+#ifndef GL_EXT_texture_object
+#define GL_TEXTURE_PRIORITY_EXT           0x8066
+#define GL_TEXTURE_RESIDENT_EXT           0x8067
+#define GL_TEXTURE_1D_BINDING_EXT         0x8068
+#define GL_TEXTURE_2D_BINDING_EXT         0x8069
+#define GL_TEXTURE_3D_BINDING_EXT         0x806A
+#endif
+
+#ifndef GL_SGIS_detail_texture
+#define GL_DETAIL_TEXTURE_2D_SGIS         0x8095
+#define GL_DETAIL_TEXTURE_2D_BINDING_SGIS 0x8096
+#define GL_LINEAR_DETAIL_SGIS             0x8097
+#define GL_LINEAR_DETAIL_ALPHA_SGIS       0x8098
+#define GL_LINEAR_DETAIL_COLOR_SGIS       0x8099
+#define GL_DETAIL_TEXTURE_LEVEL_SGIS      0x809A
+#define GL_DETAIL_TEXTURE_MODE_SGIS       0x809B
+#define GL_DETAIL_TEXTURE_FUNC_POINTS_SGIS 0x809C
+#endif
+
+#ifndef GL_SGIS_sharpen_texture
+#define GL_LINEAR_SHARPEN_SGIS            0x80AD
+#define GL_LINEAR_SHARPEN_ALPHA_SGIS      0x80AE
+#define GL_LINEAR_SHARPEN_COLOR_SGIS      0x80AF
+#define GL_SHARPEN_TEXTURE_FUNC_POINTS_SGIS 0x80B0
+#endif
+
+#ifndef GL_EXT_packed_pixels
+#define GL_UNSIGNED_BYTE_3_3_2_EXT        0x8032
+#define GL_UNSIGNED_SHORT_4_4_4_4_EXT     0x8033
+#define GL_UNSIGNED_SHORT_5_5_5_1_EXT     0x8034
+#define GL_UNSIGNED_INT_8_8_8_8_EXT       0x8035
+#define GL_UNSIGNED_INT_10_10_10_2_EXT    0x8036
+#endif
+
+#ifndef GL_SGIS_texture_lod
+#define GL_TEXTURE_MIN_LOD_SGIS           0x813A
+#define GL_TEXTURE_MAX_LOD_SGIS           0x813B
+#define GL_TEXTURE_BASE_LEVEL_SGIS        0x813C
+#define GL_TEXTURE_MAX_LEVEL_SGIS         0x813D
+#endif
+
+#ifndef GL_SGIS_multisample
+#define GL_MULTISAMPLE_SGIS               0x809D
+#define GL_SAMPLE_ALPHA_TO_MASK_SGIS      0x809E
+#define GL_SAMPLE_ALPHA_TO_ONE_SGIS       0x809F
+#define GL_SAMPLE_MASK_SGIS               0x80A0
+#define GL_1PASS_SGIS                     0x80A1
+#define GL_2PASS_0_SGIS                   0x80A2
+#define GL_2PASS_1_SGIS                   0x80A3
+#define GL_4PASS_0_SGIS                   0x80A4
+#define GL_4PASS_1_SGIS                   0x80A5
+#define GL_4PASS_2_SGIS                   0x80A6
+#define GL_4PASS_3_SGIS                   0x80A7
+#define GL_SAMPLE_BUFFERS_SGIS            0x80A8
+#define GL_SAMPLES_SGIS                   0x80A9
+#define GL_SAMPLE_MASK_VALUE_SGIS         0x80AA
+#define GL_SAMPLE_MASK_INVERT_SGIS        0x80AB
+#define GL_SAMPLE_PATTERN_SGIS            0x80AC
+#endif
+
+#ifndef GL_EXT_rescale_normal
+#define GL_RESCALE_NORMAL_EXT             0x803A
+#endif
+
+#ifndef GL_EXT_vertex_array
+#define GL_VERTEX_ARRAY_EXT               0x8074
+#define GL_NORMAL_ARRAY_EXT               0x8075
+#define GL_COLOR_ARRAY_EXT                0x8076
+#define GL_INDEX_ARRAY_EXT                0x8077
+#define GL_TEXTURE_COORD_ARRAY_EXT        0x8078
+#define GL_EDGE_FLAG_ARRAY_EXT            0x8079
+#define GL_VERTEX_ARRAY_SIZE_EXT          0x807A
+#define GL_VERTEX_ARRAY_TYPE_EXT          0x807B
+#define GL_VERTEX_ARRAY_STRIDE_EXT        0x807C
+#define GL_VERTEX_ARRAY_COUNT_EXT         0x807D
+#define GL_NORMAL_ARRAY_TYPE_EXT          0x807E
+#define GL_NORMAL_ARRAY_STRIDE_EXT        0x807F
+#define GL_NORMAL_ARRAY_COUNT_EXT         0x8080
+#define GL_COLOR_ARRAY_SIZE_EXT           0x8081
+#define GL_COLOR_ARRAY_TYPE_EXT           0x8082
+#define GL_COLOR_ARRAY_STRIDE_EXT         0x8083
+#define GL_COLOR_ARRAY_COUNT_EXT          0x8084
+#define GL_INDEX_ARRAY_TYPE_EXT           0x8085
+#define GL_INDEX_ARRAY_STRIDE_EXT         0x8086
+#define GL_INDEX_ARRAY_COUNT_EXT          0x8087
+#define GL_TEXTURE_COORD_ARRAY_SIZE_EXT   0x8088
+#define GL_TEXTURE_COORD_ARRAY_TYPE_EXT   0x8089
+#define GL_TEXTURE_COORD_ARRAY_STRIDE_EXT 0x808A
+#define GL_TEXTURE_COORD_ARRAY_COUNT_EXT  0x808B
+#define GL_EDGE_FLAG_ARRAY_STRIDE_EXT     0x808C
+#define GL_EDGE_FLAG_ARRAY_COUNT_EXT      0x808D
+#define GL_VERTEX_ARRAY_POINTER_EXT       0x808E
+#define GL_NORMAL_ARRAY_POINTER_EXT       0x808F
+#define GL_COLOR_ARRAY_POINTER_EXT        0x8090
+#define GL_INDEX_ARRAY_POINTER_EXT        0x8091
+#define GL_TEXTURE_COORD_ARRAY_POINTER_EXT 0x8092
+#define GL_EDGE_FLAG_ARRAY_POINTER_EXT    0x8093
+#endif
+
+#ifndef GL_EXT_misc_attribute
+#endif
+
+#ifndef GL_SGIS_generate_mipmap
+#define GL_GENERATE_MIPMAP_SGIS           0x8191
+#define GL_GENERATE_MIPMAP_HINT_SGIS      0x8192
+#endif
+
+#ifndef GL_SGIX_clipmap
+#define GL_LINEAR_CLIPMAP_LINEAR_SGIX     0x8170
+#define GL_TEXTURE_CLIPMAP_CENTER_SGIX    0x8171
+#define GL_TEXTURE_CLIPMAP_FRAME_SGIX     0x8172
+#define GL_TEXTURE_CLIPMAP_OFFSET_SGIX    0x8173
+#define GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX 0x8174
+#define GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX 0x8175
+#define GL_TEXTURE_CLIPMAP_DEPTH_SGIX     0x8176
+#define GL_MAX_CLIPMAP_DEPTH_SGIX         0x8177
+#define GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX 0x8178
+#define GL_NEAREST_CLIPMAP_NEAREST_SGIX   0x844D
+#define GL_NEAREST_CLIPMAP_LINEAR_SGIX    0x844E
+#define GL_LINEAR_CLIPMAP_NEAREST_SGIX    0x844F
+#endif
+
+#ifndef GL_SGIX_shadow
+#define GL_TEXTURE_COMPARE_SGIX           0x819A
+#define GL_TEXTURE_COMPARE_OPERATOR_SGIX  0x819B
+#define GL_TEXTURE_LEQUAL_R_SGIX          0x819C
+#define GL_TEXTURE_GEQUAL_R_SGIX          0x819D
+#endif
+
+#ifndef GL_SGIS_texture_edge_clamp
+#define GL_CLAMP_TO_EDGE_SGIS             0x812F
+#endif
+
+#ifndef GL_EXT_blend_minmax
+#define GL_FUNC_ADD_EXT                   0x8006
+#define GL_MIN_EXT                        0x8007
+#define GL_MAX_EXT                        0x8008
+#define GL_BLEND_EQUATION_EXT             0x8009
+#endif
+
+#ifndef GL_EXT_blend_subtract
+#define GL_FUNC_SUBTRACT_EXT              0x800A
+#define GL_FUNC_REVERSE_SUBTRACT_EXT      0x800B
+#endif
+
+#ifndef GL_EXT_blend_logic_op
+#endif
+
+#ifndef GL_SGIX_interlace
+#define GL_INTERLACE_SGIX                 0x8094
+#endif
+
+#ifndef GL_SGIX_pixel_tiles
+#define GL_PIXEL_TILE_BEST_ALIGNMENT_SGIX 0x813E
+#define GL_PIXEL_TILE_CACHE_INCREMENT_SGIX 0x813F
+#define GL_PIXEL_TILE_WIDTH_SGIX          0x8140
+#define GL_PIXEL_TILE_HEIGHT_SGIX         0x8141
+#define GL_PIXEL_TILE_GRID_WIDTH_SGIX     0x8142
+#define GL_PIXEL_TILE_GRID_HEIGHT_SGIX    0x8143
+#define GL_PIXEL_TILE_GRID_DEPTH_SGIX     0x8144
+#define GL_PIXEL_TILE_CACHE_SIZE_SGIX     0x8145
+#endif
+
+#ifndef GL_SGIS_texture_select
+#define GL_DUAL_ALPHA4_SGIS               0x8110
+#define GL_DUAL_ALPHA8_SGIS               0x8111
+#define GL_DUAL_ALPHA12_SGIS              0x8112
+#define GL_DUAL_ALPHA16_SGIS              0x8113
+#define GL_DUAL_LUMINANCE4_SGIS           0x8114
+#define GL_DUAL_LUMINANCE8_SGIS           0x8115
+#define GL_DUAL_LUMINANCE12_SGIS          0x8116
+#define GL_DUAL_LUMINANCE16_SGIS          0x8117
+#define GL_DUAL_INTENSITY4_SGIS           0x8118
+#define GL_DUAL_INTENSITY8_SGIS           0x8119
+#define GL_DUAL_INTENSITY12_SGIS          0x811A
+#define GL_DUAL_INTENSITY16_SGIS          0x811B
+#define GL_DUAL_LUMINANCE_ALPHA4_SGIS     0x811C
+#define GL_DUAL_LUMINANCE_ALPHA8_SGIS     0x811D
+#define GL_QUAD_ALPHA4_SGIS               0x811E
+#define GL_QUAD_ALPHA8_SGIS               0x811F
+#define GL_QUAD_LUMINANCE4_SGIS           0x8120
+#define GL_QUAD_LUMINANCE8_SGIS           0x8121
+#define GL_QUAD_INTENSITY4_SGIS           0x8122
+#define GL_QUAD_INTENSITY8_SGIS           0x8123
+#define GL_DUAL_TEXTURE_SELECT_SGIS       0x8124
+#define GL_QUAD_TEXTURE_SELECT_SGIS       0x8125
+#endif
+
+#ifndef GL_SGIX_sprite
+#define GL_SPRITE_SGIX                    0x8148
+#define GL_SPRITE_MODE_SGIX               0x8149
+#define GL_SPRITE_AXIS_SGIX               0x814A
+#define GL_SPRITE_TRANSLATION_SGIX        0x814B
+#define GL_SPRITE_AXIAL_SGIX              0x814C
+#define GL_SPRITE_OBJECT_ALIGNED_SGIX     0x814D
+#define GL_SPRITE_EYE_ALIGNED_SGIX        0x814E
+#endif
+
+#ifndef GL_SGIX_texture_multi_buffer
+#define GL_TEXTURE_MULTI_BUFFER_HINT_SGIX 0x812E
+#endif
+
+#ifndef GL_SGIX_instruments
+#define GL_INSTRUMENT_BUFFER_POINTER_SGIX 0x8180
+#define GL_INSTRUMENT_MEASUREMENTS_SGIX   0x8181
+#endif
+
+#ifndef GL_SGIX_texture_scale_bias
+#define GL_POST_TEXTURE_FILTER_BIAS_SGIX  0x8179
+#define GL_POST_TEXTURE_FILTER_SCALE_SGIX 0x817A
+#define GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX 0x817B
+#define GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX 0x817C
+#endif
+
+#ifndef GL_SGIX_framezoom
+#define GL_FRAMEZOOM_SGIX                 0x818B
+#define GL_FRAMEZOOM_FACTOR_SGIX          0x818C
+#define GL_MAX_FRAMEZOOM_FACTOR_SGIX      0x818D
+#endif
+
+#ifndef GL_SGIX_tag_sample_buffer
+#endif
+
+#ifndef GL_FfdMaskSGIX
+#define GL_TEXTURE_DEFORMATION_BIT_SGIX   0x00000001
+#define GL_GEOMETRY_DEFORMATION_BIT_SGIX  0x00000002
+#endif
+
+#ifndef GL_SGIX_polynomial_ffd
+#define GL_GEOMETRY_DEFORMATION_SGIX      0x8194
+#define GL_TEXTURE_DEFORMATION_SGIX       0x8195
+#define GL_DEFORMATIONS_MASK_SGIX         0x8196
+#define GL_MAX_DEFORMATION_ORDER_SGIX     0x8197
+#endif
+
+#ifndef GL_SGIX_reference_plane
+#define GL_REFERENCE_PLANE_SGIX           0x817D
+#define GL_REFERENCE_PLANE_EQUATION_SGIX  0x817E
+#endif
+
+#ifndef GL_SGIX_flush_raster
+#endif
+
+#ifndef GL_SGIX_depth_texture
+#define GL_DEPTH_COMPONENT16_SGIX         0x81A5
+#define GL_DEPTH_COMPONENT24_SGIX         0x81A6
+#define GL_DEPTH_COMPONENT32_SGIX         0x81A7
+#endif
+
+#ifndef GL_SGIS_fog_function
+#define GL_FOG_FUNC_SGIS                  0x812A
+#define GL_FOG_FUNC_POINTS_SGIS           0x812B
+#define GL_MAX_FOG_FUNC_POINTS_SGIS       0x812C
+#endif
+
+#ifndef GL_SGIX_fog_offset
+#define GL_FOG_OFFSET_SGIX                0x8198
+#define GL_FOG_OFFSET_VALUE_SGIX          0x8199
+#endif
+
+#ifndef GL_HP_image_transform
+#define GL_IMAGE_SCALE_X_HP               0x8155
+#define GL_IMAGE_SCALE_Y_HP               0x8156
+#define GL_IMAGE_TRANSLATE_X_HP           0x8157
+#define GL_IMAGE_TRANSLATE_Y_HP           0x8158
+#define GL_IMAGE_ROTATE_ANGLE_HP          0x8159
+#define GL_IMAGE_ROTATE_ORIGIN_X_HP       0x815A
+#define GL_IMAGE_ROTATE_ORIGIN_Y_HP       0x815B
+#define GL_IMAGE_MAG_FILTER_HP            0x815C
+#define GL_IMAGE_MIN_FILTER_HP            0x815D
+#define GL_IMAGE_CUBIC_WEIGHT_HP          0x815E
+#define GL_CUBIC_HP                       0x815F
+#define GL_AVERAGE_HP                     0x8160
+#define GL_IMAGE_TRANSFORM_2D_HP          0x8161
+#define GL_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP 0x8162
+#define GL_PROXY_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP 0x8163
+#endif
+
+#ifndef GL_HP_convolution_border_modes
+#define GL_IGNORE_BORDER_HP               0x8150
+#define GL_CONSTANT_BORDER_HP             0x8151
+#define GL_REPLICATE_BORDER_HP            0x8153
+#define GL_CONVOLUTION_BORDER_COLOR_HP    0x8154
+#endif
+
+#ifndef GL_INGR_palette_buffer
+#endif
+
+#ifndef GL_SGIX_texture_add_env
+#define GL_TEXTURE_ENV_BIAS_SGIX          0x80BE
+#endif
+
+#ifndef GL_EXT_color_subtable
+#endif
+
+#ifndef GL_PGI_vertex_hints
+#define GL_VERTEX_DATA_HINT_PGI           0x1A22A
+#define GL_VERTEX_CONSISTENT_HINT_PGI     0x1A22B
+#define GL_MATERIAL_SIDE_HINT_PGI         0x1A22C
+#define GL_MAX_VERTEX_HINT_PGI            0x1A22D
+#define GL_COLOR3_BIT_PGI                 0x00010000
+#define GL_COLOR4_BIT_PGI                 0x00020000
+#define GL_EDGEFLAG_BIT_PGI               0x00040000
+#define GL_INDEX_BIT_PGI                  0x00080000
+#define GL_MAT_AMBIENT_BIT_PGI            0x00100000
+#define GL_MAT_AMBIENT_AND_DIFFUSE_BIT_PGI 0x00200000
+#define GL_MAT_DIFFUSE_BIT_PGI            0x00400000
+#define GL_MAT_EMISSION_BIT_PGI           0x00800000
+#define GL_MAT_COLOR_INDEXES_BIT_PGI      0x01000000
+#define GL_MAT_SHININESS_BIT_PGI          0x02000000
+#define GL_MAT_SPECULAR_BIT_PGI           0x04000000
+#define GL_NORMAL_BIT_PGI                 0x08000000
+#define GL_TEXCOORD1_BIT_PGI              0x10000000
+#define GL_TEXCOORD2_BIT_PGI              0x20000000
+#define GL_TEXCOORD3_BIT_PGI              0x40000000
+#define GL_TEXCOORD4_BIT_PGI              0x80000000
+#define GL_VERTEX23_BIT_PGI               0x00000004
+#define GL_VERTEX4_BIT_PGI                0x00000008
+#endif
+
+#ifndef GL_PGI_misc_hints
+#define GL_PREFER_DOUBLEBUFFER_HINT_PGI   0x1A1F8
+#define GL_CONSERVE_MEMORY_HINT_PGI       0x1A1FD
+#define GL_RECLAIM_MEMORY_HINT_PGI        0x1A1FE
+#define GL_NATIVE_GRAPHICS_HANDLE_PGI     0x1A202
+#define GL_NATIVE_GRAPHICS_BEGIN_HINT_PGI 0x1A203
+#define GL_NATIVE_GRAPHICS_END_HINT_PGI   0x1A204
+#define GL_ALWAYS_FAST_HINT_PGI           0x1A20C
+#define GL_ALWAYS_SOFT_HINT_PGI           0x1A20D
+#define GL_ALLOW_DRAW_OBJ_HINT_PGI        0x1A20E
+#define GL_ALLOW_DRAW_WIN_HINT_PGI        0x1A20F
+#define GL_ALLOW_DRAW_FRG_HINT_PGI        0x1A210
+#define GL_ALLOW_DRAW_MEM_HINT_PGI        0x1A211
+#define GL_STRICT_DEPTHFUNC_HINT_PGI      0x1A216
+#define GL_STRICT_LIGHTING_HINT_PGI       0x1A217
+#define GL_STRICT_SCISSOR_HINT_PGI        0x1A218
+#define GL_FULL_STIPPLE_HINT_PGI          0x1A219
+#define GL_CLIP_NEAR_HINT_PGI             0x1A220
+#define GL_CLIP_FAR_HINT_PGI              0x1A221
+#define GL_WIDE_LINE_HINT_PGI             0x1A222
+#define GL_BACK_NORMALS_HINT_PGI          0x1A223
+#endif
+
+#ifndef GL_EXT_paletted_texture
+#define GL_COLOR_INDEX1_EXT               0x80E2
+#define GL_COLOR_INDEX2_EXT               0x80E3
+#define GL_COLOR_INDEX4_EXT               0x80E4
+#define GL_COLOR_INDEX8_EXT               0x80E5
+#define GL_COLOR_INDEX12_EXT              0x80E6
+#define GL_COLOR_INDEX16_EXT              0x80E7
+#define GL_TEXTURE_INDEX_SIZE_EXT         0x80ED
+#endif
+
+#ifndef GL_EXT_clip_volume_hint
+#define GL_CLIP_VOLUME_CLIPPING_HINT_EXT  0x80F0
+#endif
+
+#ifndef GL_SGIX_list_priority
+#define GL_LIST_PRIORITY_SGIX             0x8182
+#endif
+
+#ifndef GL_SGIX_ir_instrument1
+#define GL_IR_INSTRUMENT1_SGIX            0x817F
+#endif
+
+#ifndef GL_SGIX_calligraphic_fragment
+#define GL_CALLIGRAPHIC_FRAGMENT_SGIX     0x8183
+#endif
+
+#ifndef GL_SGIX_texture_lod_bias
+#define GL_TEXTURE_LOD_BIAS_S_SGIX        0x818E
+#define GL_TEXTURE_LOD_BIAS_T_SGIX        0x818F
+#define GL_TEXTURE_LOD_BIAS_R_SGIX        0x8190
+#endif
+
+#ifndef GL_SGIX_shadow_ambient
+#define GL_SHADOW_AMBIENT_SGIX            0x80BF
+#endif
+
+#ifndef GL_EXT_index_texture
+#endif
+
+#ifndef GL_EXT_index_material
+#define GL_INDEX_MATERIAL_EXT             0x81B8
+#define GL_INDEX_MATERIAL_PARAMETER_EXT   0x81B9
+#define GL_INDEX_MATERIAL_FACE_EXT        0x81BA
+#endif
+
+#ifndef GL_EXT_index_func
+#define GL_INDEX_TEST_EXT                 0x81B5
+#define GL_INDEX_TEST_FUNC_EXT            0x81B6
+#define GL_INDEX_TEST_REF_EXT             0x81B7
+#endif
+
+#ifndef GL_EXT_index_array_formats
+#define GL_IUI_V2F_EXT                    0x81AD
+#define GL_IUI_V3F_EXT                    0x81AE
+#define GL_IUI_N3F_V2F_EXT                0x81AF
+#define GL_IUI_N3F_V3F_EXT                0x81B0
+#define GL_T2F_IUI_V2F_EXT                0x81B1
+#define GL_T2F_IUI_V3F_EXT                0x81B2
+#define GL_T2F_IUI_N3F_V2F_EXT            0x81B3
+#define GL_T2F_IUI_N3F_V3F_EXT            0x81B4
+#endif
+
+#ifndef GL_EXT_compiled_vertex_array
+#define GL_ARRAY_ELEMENT_LOCK_FIRST_EXT   0x81A8
+#define GL_ARRAY_ELEMENT_LOCK_COUNT_EXT   0x81A9
+#endif
+
+#ifndef GL_EXT_cull_vertex
+#define GL_CULL_VERTEX_EXT                0x81AA
+#define GL_CULL_VERTEX_EYE_POSITION_EXT   0x81AB
+#define GL_CULL_VERTEX_OBJECT_POSITION_EXT 0x81AC
+#endif
+
+#ifndef GL_SGIX_ycrcb
+#define GL_YCRCB_422_SGIX                 0x81BB
+#define GL_YCRCB_444_SGIX                 0x81BC
+#endif
+
+#ifndef GL_SGIX_fragment_lighting
+#define GL_FRAGMENT_LIGHTING_SGIX         0x8400
+#define GL_FRAGMENT_COLOR_MATERIAL_SGIX   0x8401
+#define GL_FRAGMENT_COLOR_MATERIAL_FACE_SGIX 0x8402
+#define GL_FRAGMENT_COLOR_MATERIAL_PARAMETER_SGIX 0x8403
+#define GL_MAX_FRAGMENT_LIGHTS_SGIX       0x8404
+#define GL_MAX_ACTIVE_LIGHTS_SGIX         0x8405
+#define GL_CURRENT_RASTER_NORMAL_SGIX     0x8406
+#define GL_LIGHT_ENV_MODE_SGIX            0x8407
+#define GL_FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_SGIX 0x8408
+#define GL_FRAGMENT_LIGHT_MODEL_TWO_SIDE_SGIX 0x8409
+#define GL_FRAGMENT_LIGHT_MODEL_AMBIENT_SGIX 0x840A
+#define GL_FRAGMENT_LIGHT_MODEL_NORMAL_INTERPOLATION_SGIX 0x840B
+#define GL_FRAGMENT_LIGHT0_SGIX           0x840C
+#define GL_FRAGMENT_LIGHT1_SGIX           0x840D
+#define GL_FRAGMENT_LIGHT2_SGIX           0x840E
+#define GL_FRAGMENT_LIGHT3_SGIX           0x840F
+#define GL_FRAGMENT_LIGHT4_SGIX           0x8410
+#define GL_FRAGMENT_LIGHT5_SGIX           0x8411
+#define GL_FRAGMENT_LIGHT6_SGIX           0x8412
+#define GL_FRAGMENT_LIGHT7_SGIX           0x8413
+#endif
+
+#ifndef GL_IBM_rasterpos_clip
+#define GL_RASTER_POSITION_UNCLIPPED_IBM  0x19262
+#endif
+
+#ifndef GL_HP_texture_lighting
+#define GL_TEXTURE_LIGHTING_MODE_HP       0x8167
+#define GL_TEXTURE_POST_SPECULAR_HP       0x8168
+#define GL_TEXTURE_PRE_SPECULAR_HP        0x8169
+#endif
+
+#ifndef GL_EXT_draw_range_elements
+#define GL_MAX_ELEMENTS_VERTICES_EXT      0x80E8
+#define GL_MAX_ELEMENTS_INDICES_EXT       0x80E9
+#endif
+
+#ifndef GL_WIN_phong_shading
+#define GL_PHONG_WIN                      0x80EA
+#define GL_PHONG_HINT_WIN                 0x80EB
+#endif
+
+#ifndef GL_WIN_specular_fog
+#define GL_FOG_SPECULAR_TEXTURE_WIN       0x80EC
+#endif
+
+#ifndef GL_EXT_light_texture
+#define GL_FRAGMENT_MATERIAL_EXT          0x8349
+#define GL_FRAGMENT_NORMAL_EXT            0x834A
+#define GL_FRAGMENT_COLOR_EXT             0x834C
+#define GL_ATTENUATION_EXT                0x834D
+#define GL_SHADOW_ATTENUATION_EXT         0x834E
+#define GL_TEXTURE_APPLICATION_MODE_EXT   0x834F
+#define GL_TEXTURE_LIGHT_EXT              0x8350
+#define GL_TEXTURE_MATERIAL_FACE_EXT      0x8351
+#define GL_TEXTURE_MATERIAL_PARAMETER_EXT 0x8352
+/* reuse GL_FRAGMENT_DEPTH_EXT */
+#endif
+
+#ifndef GL_SGIX_blend_alpha_minmax
+#define GL_ALPHA_MIN_SGIX                 0x8320
+#define GL_ALPHA_MAX_SGIX                 0x8321
+#endif
+
+#ifndef GL_SGIX_impact_pixel_texture
+#define GL_PIXEL_TEX_GEN_Q_CEILING_SGIX   0x8184
+#define GL_PIXEL_TEX_GEN_Q_ROUND_SGIX     0x8185
+#define GL_PIXEL_TEX_GEN_Q_FLOOR_SGIX     0x8186
+#define GL_PIXEL_TEX_GEN_ALPHA_REPLACE_SGIX 0x8187
+#define GL_PIXEL_TEX_GEN_ALPHA_NO_REPLACE_SGIX 0x8188
+#define GL_PIXEL_TEX_GEN_ALPHA_LS_SGIX    0x8189
+#define GL_PIXEL_TEX_GEN_ALPHA_MS_SGIX    0x818A
+#endif
+
+#ifndef GL_EXT_bgra
+#define GL_BGR_EXT                        0x80E0
+#define GL_BGRA_EXT                       0x80E1
+#endif
+
+#ifndef GL_SGIX_async
+#define GL_ASYNC_MARKER_SGIX              0x8329
+#endif
+
+#ifndef GL_SGIX_async_pixel
+#define GL_ASYNC_TEX_IMAGE_SGIX           0x835C
+#define GL_ASYNC_DRAW_PIXELS_SGIX         0x835D
+#define GL_ASYNC_READ_PIXELS_SGIX         0x835E
+#define GL_MAX_ASYNC_TEX_IMAGE_SGIX       0x835F
+#define GL_MAX_ASYNC_DRAW_PIXELS_SGIX     0x8360
+#define GL_MAX_ASYNC_READ_PIXELS_SGIX     0x8361
+#endif
+
+#ifndef GL_SGIX_async_histogram
+#define GL_ASYNC_HISTOGRAM_SGIX           0x832C
+#define GL_MAX_ASYNC_HISTOGRAM_SGIX       0x832D
+#endif
+
+#ifndef GL_INTEL_texture_scissor
+#endif
+
+#ifndef GL_INTEL_parallel_arrays
+#define GL_PARALLEL_ARRAYS_INTEL          0x83F4
+#define GL_VERTEX_ARRAY_PARALLEL_POINTERS_INTEL 0x83F5
+#define GL_NORMAL_ARRAY_PARALLEL_POINTERS_INTEL 0x83F6
+#define GL_COLOR_ARRAY_PARALLEL_POINTERS_INTEL 0x83F7
+#define GL_TEXTURE_COORD_ARRAY_PARALLEL_POINTERS_INTEL 0x83F8
+#endif
+
+#ifndef GL_HP_occlusion_test
+#define GL_OCCLUSION_TEST_HP              0x8165
+#define GL_OCCLUSION_TEST_RESULT_HP       0x8166
+#endif
+
+#ifndef GL_EXT_pixel_transform
+#define GL_PIXEL_TRANSFORM_2D_EXT         0x8330
+#define GL_PIXEL_MAG_FILTER_EXT           0x8331
+#define GL_PIXEL_MIN_FILTER_EXT           0x8332
+#define GL_PIXEL_CUBIC_WEIGHT_EXT         0x8333
+#define GL_CUBIC_EXT                      0x8334
+#define GL_AVERAGE_EXT                    0x8335
+#define GL_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT 0x8336
+#define GL_MAX_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT 0x8337
+#define GL_PIXEL_TRANSFORM_2D_MATRIX_EXT  0x8338
+#endif
+
+#ifndef GL_EXT_pixel_transform_color_table
+#endif
+
+#ifndef GL_EXT_shared_texture_palette
+#define GL_SHARED_TEXTURE_PALETTE_EXT     0x81FB
+#endif
+
+#ifndef GL_EXT_separate_specular_color
+#define GL_LIGHT_MODEL_COLOR_CONTROL_EXT  0x81F8
+#define GL_SINGLE_COLOR_EXT               0x81F9
+#define GL_SEPARATE_SPECULAR_COLOR_EXT    0x81FA
+#endif
+
+#ifndef GL_EXT_secondary_color
+#define GL_COLOR_SUM_EXT                  0x8458
+#define GL_CURRENT_SECONDARY_COLOR_EXT    0x8459
+#define GL_SECONDARY_COLOR_ARRAY_SIZE_EXT 0x845A
+#define GL_SECONDARY_COLOR_ARRAY_TYPE_EXT 0x845B
+#define GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT 0x845C
+#define GL_SECONDARY_COLOR_ARRAY_POINTER_EXT 0x845D
+#define GL_SECONDARY_COLOR_ARRAY_EXT      0x845E
+#endif
+
+#ifndef GL_EXT_texture_perturb_normal
+#define GL_PERTURB_EXT                    0x85AE
+#define GL_TEXTURE_NORMAL_EXT             0x85AF
+#endif
+
+#ifndef GL_EXT_multi_draw_arrays
+#endif
+
+#ifndef GL_EXT_fog_coord
+#define GL_FOG_COORDINATE_SOURCE_EXT      0x8450
+#define GL_FOG_COORDINATE_EXT             0x8451
+#define GL_FRAGMENT_DEPTH_EXT             0x8452
+#define GL_CURRENT_FOG_COORDINATE_EXT     0x8453
+#define GL_FOG_COORDINATE_ARRAY_TYPE_EXT  0x8454
+#define GL_FOG_COORDINATE_ARRAY_STRIDE_EXT 0x8455
+#define GL_FOG_COORDINATE_ARRAY_POINTER_EXT 0x8456
+#define GL_FOG_COORDINATE_ARRAY_EXT       0x8457
+#endif
+
+#ifndef GL_REND_screen_coordinates
+#define GL_SCREEN_COORDINATES_REND        0x8490
+#define GL_INVERTED_SCREEN_W_REND         0x8491
+#endif
+
+#ifndef GL_EXT_coordinate_frame
+#define GL_TANGENT_ARRAY_EXT              0x8439
+#define GL_BINORMAL_ARRAY_EXT             0x843A
+#define GL_CURRENT_TANGENT_EXT            0x843B
+#define GL_CURRENT_BINORMAL_EXT           0x843C
+#define GL_TANGENT_ARRAY_TYPE_EXT         0x843E
+#define GL_TANGENT_ARRAY_STRIDE_EXT       0x843F
+#define GL_BINORMAL_ARRAY_TYPE_EXT        0x8440
+#define GL_BINORMAL_ARRAY_STRIDE_EXT      0x8441
+#define GL_TANGENT_ARRAY_POINTER_EXT      0x8442
+#define GL_BINORMAL_ARRAY_POINTER_EXT     0x8443
+#define GL_MAP1_TANGENT_EXT               0x8444
+#define GL_MAP2_TANGENT_EXT               0x8445
+#define GL_MAP1_BINORMAL_EXT              0x8446
+#define GL_MAP2_BINORMAL_EXT              0x8447
+#endif
+
+#ifndef GL_EXT_texture_env_combine
+#define GL_COMBINE_EXT                    0x8570
+#define GL_COMBINE_RGB_EXT                0x8571
+#define GL_COMBINE_ALPHA_EXT              0x8572
+#define GL_RGB_SCALE_EXT                  0x8573
+#define GL_ADD_SIGNED_EXT                 0x8574
+#define GL_INTERPOLATE_EXT                0x8575
+#define GL_CONSTANT_EXT                   0x8576
+#define GL_PRIMARY_COLOR_EXT              0x8577
+#define GL_PREVIOUS_EXT                   0x8578
+#define GL_SOURCE0_RGB_EXT                0x8580
+#define GL_SOURCE1_RGB_EXT                0x8581
+#define GL_SOURCE2_RGB_EXT                0x8582
+#define GL_SOURCE0_ALPHA_EXT              0x8588
+#define GL_SOURCE1_ALPHA_EXT              0x8589
+#define GL_SOURCE2_ALPHA_EXT              0x858A
+#define GL_OPERAND0_RGB_EXT               0x8590
+#define GL_OPERAND1_RGB_EXT               0x8591
+#define GL_OPERAND2_RGB_EXT               0x8592
+#define GL_OPERAND0_ALPHA_EXT             0x8598
+#define GL_OPERAND1_ALPHA_EXT             0x8599
+#define GL_OPERAND2_ALPHA_EXT             0x859A
+#endif
+
+#ifndef GL_APPLE_specular_vector
+#define GL_LIGHT_MODEL_SPECULAR_VECTOR_APPLE 0x85B0
+#endif
+
+#ifndef GL_APPLE_transform_hint
+#define GL_TRANSFORM_HINT_APPLE           0x85B1
+#endif
+
+#ifndef GL_SGIX_fog_scale
+#define GL_FOG_SCALE_SGIX                 0x81FC
+#define GL_FOG_SCALE_VALUE_SGIX           0x81FD
+#endif
+
+#ifndef GL_SUNX_constant_data
+#define GL_UNPACK_CONSTANT_DATA_SUNX      0x81D5
+#define GL_TEXTURE_CONSTANT_DATA_SUNX     0x81D6
+#endif
+
+#ifndef GL_SUN_global_alpha
+#define GL_GLOBAL_ALPHA_SUN               0x81D9
+#define GL_GLOBAL_ALPHA_FACTOR_SUN        0x81DA
+#endif
+
+#ifndef GL_SUN_triangle_list
+#define GL_RESTART_SUN                    0x0001
+#define GL_REPLACE_MIDDLE_SUN             0x0002
+#define GL_REPLACE_OLDEST_SUN             0x0003
+#define GL_TRIANGLE_LIST_SUN              0x81D7
+#define GL_REPLACEMENT_CODE_SUN           0x81D8
+#define GL_REPLACEMENT_CODE_ARRAY_SUN     0x85C0
+#define GL_REPLACEMENT_CODE_ARRAY_TYPE_SUN 0x85C1
+#define GL_REPLACEMENT_CODE_ARRAY_STRIDE_SUN 0x85C2
+#define GL_REPLACEMENT_CODE_ARRAY_POINTER_SUN 0x85C3
+#define GL_R1UI_V3F_SUN                   0x85C4
+#define GL_R1UI_C4UB_V3F_SUN              0x85C5
+#define GL_R1UI_C3F_V3F_SUN               0x85C6
+#define GL_R1UI_N3F_V3F_SUN               0x85C7
+#define GL_R1UI_C4F_N3F_V3F_SUN           0x85C8
+#define GL_R1UI_T2F_V3F_SUN               0x85C9
+#define GL_R1UI_T2F_N3F_V3F_SUN           0x85CA
+#define GL_R1UI_T2F_C4F_N3F_V3F_SUN       0x85CB
+#endif
+
+#ifndef GL_SUN_vertex
+#endif
+
+#ifndef GL_EXT_blend_func_separate
+#define GL_BLEND_DST_RGB_EXT              0x80C8
+#define GL_BLEND_SRC_RGB_EXT              0x80C9
+#define GL_BLEND_DST_ALPHA_EXT            0x80CA
+#define GL_BLEND_SRC_ALPHA_EXT            0x80CB
+#endif
+
+#ifndef GL_INGR_color_clamp
+#define GL_RED_MIN_CLAMP_INGR             0x8560
+#define GL_GREEN_MIN_CLAMP_INGR           0x8561
+#define GL_BLUE_MIN_CLAMP_INGR            0x8562
+#define GL_ALPHA_MIN_CLAMP_INGR           0x8563
+#define GL_RED_MAX_CLAMP_INGR             0x8564
+#define GL_GREEN_MAX_CLAMP_INGR           0x8565
+#define GL_BLUE_MAX_CLAMP_INGR            0x8566
+#define GL_ALPHA_MAX_CLAMP_INGR           0x8567
+#endif
+
+#ifndef GL_INGR_interlace_read
+#define GL_INTERLACE_READ_INGR            0x8568
+#endif
+
+#ifndef GL_EXT_stencil_wrap
+#define GL_INCR_WRAP_EXT                  0x8507
+#define GL_DECR_WRAP_EXT                  0x8508
+#endif
+
+#ifndef GL_EXT_422_pixels
+#define GL_422_EXT                        0x80CC
+#define GL_422_REV_EXT                    0x80CD
+#define GL_422_AVERAGE_EXT                0x80CE
+#define GL_422_REV_AVERAGE_EXT            0x80CF
+#endif
+
+#ifndef GL_NV_texgen_reflection
+#define GL_NORMAL_MAP_NV                  0x8511
+#define GL_REFLECTION_MAP_NV              0x8512
+#endif
+
+#ifndef GL_EXT_texture_cube_map
+#define GL_NORMAL_MAP_EXT                 0x8511
+#define GL_REFLECTION_MAP_EXT             0x8512
+#define GL_TEXTURE_CUBE_MAP_EXT           0x8513
+#define GL_TEXTURE_BINDING_CUBE_MAP_EXT   0x8514
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_X_EXT 0x8515
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_EXT 0x8516
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_EXT 0x8517
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT 0x8518
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_EXT 0x8519
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT 0x851A
+#define GL_PROXY_TEXTURE_CUBE_MAP_EXT     0x851B
+#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_EXT  0x851C
+#endif
+
+#ifndef GL_SUN_convolution_border_modes
+#define GL_WRAP_BORDER_SUN                0x81D4
+#endif
+
+#ifndef GL_EXT_texture_env_add
+#endif
+
+#ifndef GL_EXT_texture_lod_bias
+#define GL_MAX_TEXTURE_LOD_BIAS_EXT       0x84FD
+#define GL_TEXTURE_FILTER_CONTROL_EXT     0x8500
+#define GL_TEXTURE_LOD_BIAS_EXT           0x8501
+#endif
+
+#ifndef GL_EXT_texture_filter_anisotropic
+#define GL_TEXTURE_MAX_ANISOTROPY_EXT     0x84FE
+#define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF
+#endif
+
+#ifndef GL_EXT_vertex_weighting
+#define GL_MODELVIEW0_STACK_DEPTH_EXT     GL_MODELVIEW_STACK_DEPTH
+#define GL_MODELVIEW1_STACK_DEPTH_EXT     0x8502
+#define GL_MODELVIEW0_MATRIX_EXT          GL_MODELVIEW_MATRIX
+#define GL_MODELVIEW1_MATRIX_EXT          0x8506
+#define GL_VERTEX_WEIGHTING_EXT           0x8509
+#define GL_MODELVIEW0_EXT                 GL_MODELVIEW
+#define GL_MODELVIEW1_EXT                 0x850A
+#define GL_CURRENT_VERTEX_WEIGHT_EXT      0x850B
+#define GL_VERTEX_WEIGHT_ARRAY_EXT        0x850C
+#define GL_VERTEX_WEIGHT_ARRAY_SIZE_EXT   0x850D
+#define GL_VERTEX_WEIGHT_ARRAY_TYPE_EXT   0x850E
+#define GL_VERTEX_WEIGHT_ARRAY_STRIDE_EXT 0x850F
+#define GL_VERTEX_WEIGHT_ARRAY_POINTER_EXT 0x8510
+#endif
+
+#ifndef GL_NV_light_max_exponent
+#define GL_MAX_SHININESS_NV               0x8504
+#define GL_MAX_SPOT_EXPONENT_NV           0x8505
+#endif
+
+#ifndef GL_NV_vertex_array_range
+#define GL_VERTEX_ARRAY_RANGE_NV          0x851D
+#define GL_VERTEX_ARRAY_RANGE_LENGTH_NV   0x851E
+#define GL_VERTEX_ARRAY_RANGE_VALID_NV    0x851F
+#define GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_NV 0x8520
+#define GL_VERTEX_ARRAY_RANGE_POINTER_NV  0x8521
+#endif
+
+#ifndef GL_NV_register_combiners
+#define GL_REGISTER_COMBINERS_NV          0x8522
+#define GL_VARIABLE_A_NV                  0x8523
+#define GL_VARIABLE_B_NV                  0x8524
+#define GL_VARIABLE_C_NV                  0x8525
+#define GL_VARIABLE_D_NV                  0x8526
+#define GL_VARIABLE_E_NV                  0x8527
+#define GL_VARIABLE_F_NV                  0x8528
+#define GL_VARIABLE_G_NV                  0x8529
+#define GL_CONSTANT_COLOR0_NV             0x852A
+#define GL_CONSTANT_COLOR1_NV             0x852B
+#define GL_PRIMARY_COLOR_NV               0x852C
+#define GL_SECONDARY_COLOR_NV             0x852D
+#define GL_SPARE0_NV                      0x852E
+#define GL_SPARE1_NV                      0x852F
+#define GL_DISCARD_NV                     0x8530
+#define GL_E_TIMES_F_NV                   0x8531
+#define GL_SPARE0_PLUS_SECONDARY_COLOR_NV 0x8532
+#define GL_UNSIGNED_IDENTITY_NV           0x8536
+#define GL_UNSIGNED_INVERT_NV             0x8537
+#define GL_EXPAND_NORMAL_NV               0x8538
+#define GL_EXPAND_NEGATE_NV               0x8539
+#define GL_HALF_BIAS_NORMAL_NV            0x853A
+#define GL_HALF_BIAS_NEGATE_NV            0x853B
+#define GL_SIGNED_IDENTITY_NV             0x853C
+#define GL_SIGNED_NEGATE_NV               0x853D
+#define GL_SCALE_BY_TWO_NV                0x853E
+#define GL_SCALE_BY_FOUR_NV               0x853F
+#define GL_SCALE_BY_ONE_HALF_NV           0x8540
+#define GL_BIAS_BY_NEGATIVE_ONE_HALF_NV   0x8541
+#define GL_COMBINER_INPUT_NV              0x8542
+#define GL_COMBINER_MAPPING_NV            0x8543
+#define GL_COMBINER_COMPONENT_USAGE_NV    0x8544
+#define GL_COMBINER_AB_DOT_PRODUCT_NV     0x8545
+#define GL_COMBINER_CD_DOT_PRODUCT_NV     0x8546
+#define GL_COMBINER_MUX_SUM_NV            0x8547
+#define GL_COMBINER_SCALE_NV              0x8548
+#define GL_COMBINER_BIAS_NV               0x8549
+#define GL_COMBINER_AB_OUTPUT_NV          0x854A
+#define GL_COMBINER_CD_OUTPUT_NV          0x854B
+#define GL_COMBINER_SUM_OUTPUT_NV         0x854C
+#define GL_MAX_GENERAL_COMBINERS_NV       0x854D
+#define GL_NUM_GENERAL_COMBINERS_NV       0x854E
+#define GL_COLOR_SUM_CLAMP_NV             0x854F
+#define GL_COMBINER0_NV                   0x8550
+#define GL_COMBINER1_NV                   0x8551
+#define GL_COMBINER2_NV                   0x8552
+#define GL_COMBINER3_NV                   0x8553
+#define GL_COMBINER4_NV                   0x8554
+#define GL_COMBINER5_NV                   0x8555
+#define GL_COMBINER6_NV                   0x8556
+#define GL_COMBINER7_NV                   0x8557
+/* reuse GL_TEXTURE0_ARB */
+/* reuse GL_TEXTURE1_ARB */
+/* reuse GL_ZERO */
+/* reuse GL_NONE */
+/* reuse GL_FOG */
+#endif
+
+#ifndef GL_NV_fog_distance
+#define GL_FOG_DISTANCE_MODE_NV           0x855A
+#define GL_EYE_RADIAL_NV                  0x855B
+#define GL_EYE_PLANE_ABSOLUTE_NV          0x855C
+/* reuse GL_EYE_PLANE */
+#endif
+
+#ifndef GL_NV_texgen_emboss
+#define GL_EMBOSS_LIGHT_NV                0x855D
+#define GL_EMBOSS_CONSTANT_NV             0x855E
+#define GL_EMBOSS_MAP_NV                  0x855F
+#endif
+
+#ifndef GL_NV_blend_square
+#endif
+
+#ifndef GL_NV_texture_env_combine4
+#define GL_COMBINE4_NV                    0x8503
+#define GL_SOURCE3_RGB_NV                 0x8583
+#define GL_SOURCE3_ALPHA_NV               0x858B
+#define GL_OPERAND3_RGB_NV                0x8593
+#define GL_OPERAND3_ALPHA_NV              0x859B
+#endif
+
+#ifndef GL_MESA_resize_buffers
+#endif
+
+#ifndef GL_MESA_window_pos
+#endif
+
+#ifndef GL_EXT_texture_compression_s3tc
+#define GL_COMPRESSED_RGB_S3TC_DXT1_EXT   0x83F0
+#define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT  0x83F1
+#define GL_COMPRESSED_RGBA_S3TC_DXT3_EXT  0x83F2
+#define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT  0x83F3
+#endif
+
+#ifndef GL_IBM_cull_vertex
+#define GL_CULL_VERTEX_IBM                103050
+#endif
+
+#ifndef GL_IBM_multimode_draw_arrays
+#endif
+
+#ifndef GL_IBM_vertex_array_lists
+#define GL_VERTEX_ARRAY_LIST_IBM          103070
+#define GL_NORMAL_ARRAY_LIST_IBM          103071
+#define GL_COLOR_ARRAY_LIST_IBM           103072
+#define GL_INDEX_ARRAY_LIST_IBM           103073
+#define GL_TEXTURE_COORD_ARRAY_LIST_IBM   103074
+#define GL_EDGE_FLAG_ARRAY_LIST_IBM       103075
+#define GL_FOG_COORDINATE_ARRAY_LIST_IBM  103076
+#define GL_SECONDARY_COLOR_ARRAY_LIST_IBM 103077
+#define GL_VERTEX_ARRAY_LIST_STRIDE_IBM   103080
+#define GL_NORMAL_ARRAY_LIST_STRIDE_IBM   103081
+#define GL_COLOR_ARRAY_LIST_STRIDE_IBM    103082
+#define GL_INDEX_ARRAY_LIST_STRIDE_IBM    103083
+#define GL_TEXTURE_COORD_ARRAY_LIST_STRIDE_IBM 103084
+#define GL_EDGE_FLAG_ARRAY_LIST_STRIDE_IBM 103085
+#define GL_FOG_COORDINATE_ARRAY_LIST_STRIDE_IBM 103086
+#define GL_SECONDARY_COLOR_ARRAY_LIST_STRIDE_IBM 103087
+#endif
+
+#ifndef GL_SGIX_subsample
+#define GL_PACK_SUBSAMPLE_RATE_SGIX       0x85A0
+#define GL_UNPACK_SUBSAMPLE_RATE_SGIX     0x85A1
+#define GL_PIXEL_SUBSAMPLE_4444_SGIX      0x85A2
+#define GL_PIXEL_SUBSAMPLE_2424_SGIX      0x85A3
+#define GL_PIXEL_SUBSAMPLE_4242_SGIX      0x85A4
+#endif
+
+#ifndef GL_SGIX_ycrcb_subsample
+#endif
+
+#ifndef GL_SGIX_ycrcba
+#define GL_YCRCB_SGIX                     0x8318
+#define GL_YCRCBA_SGIX                    0x8319
+#endif
+
+#ifndef GL_SGI_depth_pass_instrument
+#define GL_DEPTH_PASS_INSTRUMENT_SGIX     0x8310
+#define GL_DEPTH_PASS_INSTRUMENT_COUNTERS_SGIX 0x8311
+#define GL_DEPTH_PASS_INSTRUMENT_MAX_SGIX 0x8312
+#endif
+
+#ifndef GL_3DFX_texture_compression_FXT1
+#define GL_COMPRESSED_RGB_FXT1_3DFX       0x86B0
+#define GL_COMPRESSED_RGBA_FXT1_3DFX      0x86B1
+#endif
+
+#ifndef GL_3DFX_multisample
+#define GL_MULTISAMPLE_3DFX               0x86B2
+#define GL_SAMPLE_BUFFERS_3DFX            0x86B3
+#define GL_SAMPLES_3DFX                   0x86B4
+#define GL_MULTISAMPLE_BIT_3DFX           0x20000000
+#endif
+
+#ifndef GL_3DFX_tbuffer
+#endif
+
+#ifndef GL_EXT_multisample
+#define GL_MULTISAMPLE_EXT                0x809D
+#define GL_SAMPLE_ALPHA_TO_MASK_EXT       0x809E
+#define GL_SAMPLE_ALPHA_TO_ONE_EXT        0x809F
+#define GL_SAMPLE_MASK_EXT                0x80A0
+#define GL_1PASS_EXT                      0x80A1
+#define GL_2PASS_0_EXT                    0x80A2
+#define GL_2PASS_1_EXT                    0x80A3
+#define GL_4PASS_0_EXT                    0x80A4
+#define GL_4PASS_1_EXT                    0x80A5
+#define GL_4PASS_2_EXT                    0x80A6
+#define GL_4PASS_3_EXT                    0x80A7
+#define GL_SAMPLE_BUFFERS_EXT             0x80A8
+#define GL_SAMPLES_EXT                    0x80A9
+#define GL_SAMPLE_MASK_VALUE_EXT          0x80AA
+#define GL_SAMPLE_MASK_INVERT_EXT         0x80AB
+#define GL_SAMPLE_PATTERN_EXT             0x80AC
+#define GL_MULTISAMPLE_BIT_EXT            0x20000000
+#endif
+
+#ifndef GL_SGIX_vertex_preclip
+#define GL_VERTEX_PRECLIP_SGIX            0x83EE
+#define GL_VERTEX_PRECLIP_HINT_SGIX       0x83EF
+#endif
+
+#ifndef GL_SGIX_convolution_accuracy
+#define GL_CONVOLUTION_HINT_SGIX          0x8316
+#endif
+
+#ifndef GL_SGIX_resample
+#define GL_PACK_RESAMPLE_SGIX             0x842C
+#define GL_UNPACK_RESAMPLE_SGIX           0x842D
+#define GL_RESAMPLE_REPLICATE_SGIX        0x842E
+#define GL_RESAMPLE_ZERO_FILL_SGIX        0x842F
+#define GL_RESAMPLE_DECIMATE_SGIX         0x8430
+#endif
+
+#ifndef GL_SGIS_point_line_texgen
+#define GL_EYE_DISTANCE_TO_POINT_SGIS     0x81F0
+#define GL_OBJECT_DISTANCE_TO_POINT_SGIS  0x81F1
+#define GL_EYE_DISTANCE_TO_LINE_SGIS      0x81F2
+#define GL_OBJECT_DISTANCE_TO_LINE_SGIS   0x81F3
+#define GL_EYE_POINT_SGIS                 0x81F4
+#define GL_OBJECT_POINT_SGIS              0x81F5
+#define GL_EYE_LINE_SGIS                  0x81F6
+#define GL_OBJECT_LINE_SGIS               0x81F7
+#endif
+
+#ifndef GL_SGIS_texture_color_mask
+#define GL_TEXTURE_COLOR_WRITEMASK_SGIS   0x81EF
+#endif
+
+#ifndef GL_NV_fence
+#define GL_ALL_COMPLETED_NV               0x84F2
+#define GL_FENCE_STATUS_NV                0x84F3
+#define GL_FENCE_CONDITION_NV             0x84F4
+#endif
+
+#ifndef GL_IBM_texture_mirrored_repeat
+#define GL_MIRRORED_REPEAT_IBM            0x8370
+#endif
+
+#ifndef GL_NV_evaluators
+#define GL_EVAL_2D_NV                     0x86C0
+#define GL_EVAL_TRIANGULAR_2D_NV          0x86C1
+#define GL_MAP_TESSELLATION_NV            0x86C2
+#define GL_MAP_ATTRIB_U_ORDER_NV          0x86C3
+#define GL_MAP_ATTRIB_V_ORDER_NV          0x86C4
+#define GL_EVAL_FRACTIONAL_TESSELLATION_NV 0x86C5
+#define GL_EVAL_VERTEX_ATTRIB0_NV         0x86C6
+#define GL_EVAL_VERTEX_ATTRIB1_NV         0x86C7
+#define GL_EVAL_VERTEX_ATTRIB2_NV         0x86C8
+#define GL_EVAL_VERTEX_ATTRIB3_NV         0x86C9
+#define GL_EVAL_VERTEX_ATTRIB4_NV         0x86CA
+#define GL_EVAL_VERTEX_ATTRIB5_NV         0x86CB
+#define GL_EVAL_VERTEX_ATTRIB6_NV         0x86CC
+#define GL_EVAL_VERTEX_ATTRIB7_NV         0x86CD
+#define GL_EVAL_VERTEX_ATTRIB8_NV         0x86CE
+#define GL_EVAL_VERTEX_ATTRIB9_NV         0x86CF
+#define GL_EVAL_VERTEX_ATTRIB10_NV        0x86D0
+#define GL_EVAL_VERTEX_ATTRIB11_NV        0x86D1
+#define GL_EVAL_VERTEX_ATTRIB12_NV        0x86D2
+#define GL_EVAL_VERTEX_ATTRIB13_NV        0x86D3
+#define GL_EVAL_VERTEX_ATTRIB14_NV        0x86D4
+#define GL_EVAL_VERTEX_ATTRIB15_NV        0x86D5
+#define GL_MAX_MAP_TESSELLATION_NV        0x86D6
+#define GL_MAX_RATIONAL_EVAL_ORDER_NV     0x86D7
+#endif
+
+#ifndef GL_NV_packed_depth_stencil
+#define GL_DEPTH_STENCIL_NV               0x84F9
+#define GL_UNSIGNED_INT_24_8_NV           0x84FA
+#endif
+
+#ifndef GL_NV_register_combiners2
+#define GL_PER_STAGE_CONSTANTS_NV         0x8535
+#endif
+
+#ifndef GL_NV_texture_compression_vtc
+#endif
+
+#ifndef GL_NV_texture_rectangle
+#define GL_TEXTURE_RECTANGLE_NV           0x84F5
+#define GL_TEXTURE_BINDING_RECTANGLE_NV   0x84F6
+#define GL_PROXY_TEXTURE_RECTANGLE_NV     0x84F7
+#define GL_MAX_TEXTURE_RECTANGLE_SIZE_NV  0x84F8
+#endif
+
+#ifndef GL_NV_texture_shader
+#define GL_OFFSET_TEXTURE_RECTANGLE_NV    0x864C
+#define GL_OFFSET_TEXTURE_RECTANGLE_SCALE_NV 0x864D
+#define GL_DOT_PRODUCT_TEXTURE_RECTANGLE_NV 0x864E
+#define GL_RGBA_UNSIGNED_DOT_PRODUCT_MAPPING_NV 0x86D9
+#define GL_UNSIGNED_INT_S8_S8_8_8_NV      0x86DA
+#define GL_UNSIGNED_INT_8_8_S8_S8_REV_NV  0x86DB
+#define GL_DSDT_MAG_INTENSITY_NV          0x86DC
+#define GL_SHADER_CONSISTENT_NV           0x86DD
+#define GL_TEXTURE_SHADER_NV              0x86DE
+#define GL_SHADER_OPERATION_NV            0x86DF
+#define GL_CULL_MODES_NV                  0x86E0
+#define GL_OFFSET_TEXTURE_MATRIX_NV       0x86E1
+#define GL_OFFSET_TEXTURE_SCALE_NV        0x86E2
+#define GL_OFFSET_TEXTURE_BIAS_NV         0x86E3
+#define GL_OFFSET_TEXTURE_2D_MATRIX_NV    GL_OFFSET_TEXTURE_MATRIX_NV
+#define GL_OFFSET_TEXTURE_2D_SCALE_NV     GL_OFFSET_TEXTURE_SCALE_NV
+#define GL_OFFSET_TEXTURE_2D_BIAS_NV      GL_OFFSET_TEXTURE_BIAS_NV
+#define GL_PREVIOUS_TEXTURE_INPUT_NV      0x86E4
+#define GL_CONST_EYE_NV                   0x86E5
+#define GL_PASS_THROUGH_NV                0x86E6
+#define GL_CULL_FRAGMENT_NV               0x86E7
+#define GL_OFFSET_TEXTURE_2D_NV           0x86E8
+#define GL_DEPENDENT_AR_TEXTURE_2D_NV     0x86E9
+#define GL_DEPENDENT_GB_TEXTURE_2D_NV     0x86EA
+#define GL_DOT_PRODUCT_NV                 0x86EC
+#define GL_DOT_PRODUCT_DEPTH_REPLACE_NV   0x86ED
+#define GL_DOT_PRODUCT_TEXTURE_2D_NV      0x86EE
+#define GL_DOT_PRODUCT_TEXTURE_CUBE_MAP_NV 0x86F0
+#define GL_DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV 0x86F1
+#define GL_DOT_PRODUCT_REFLECT_CUBE_MAP_NV 0x86F2
+#define GL_DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV 0x86F3
+#define GL_HILO_NV                        0x86F4
+#define GL_DSDT_NV                        0x86F5
+#define GL_DSDT_MAG_NV                    0x86F6
+#define GL_DSDT_MAG_VIB_NV                0x86F7
+#define GL_HILO16_NV                      0x86F8
+#define GL_SIGNED_HILO_NV                 0x86F9
+#define GL_SIGNED_HILO16_NV               0x86FA
+#define GL_SIGNED_RGBA_NV                 0x86FB
+#define GL_SIGNED_RGBA8_NV                0x86FC
+#define GL_SIGNED_RGB_NV                  0x86FE
+#define GL_SIGNED_RGB8_NV                 0x86FF
+#define GL_SIGNED_LUMINANCE_NV            0x8701
+#define GL_SIGNED_LUMINANCE8_NV           0x8702
+#define GL_SIGNED_LUMINANCE_ALPHA_NV      0x8703
+#define GL_SIGNED_LUMINANCE8_ALPHA8_NV    0x8704
+#define GL_SIGNED_ALPHA_NV                0x8705
+#define GL_SIGNED_ALPHA8_NV               0x8706
+#define GL_SIGNED_INTENSITY_NV            0x8707
+#define GL_SIGNED_INTENSITY8_NV           0x8708
+#define GL_DSDT8_NV                       0x8709
+#define GL_DSDT8_MAG8_NV                  0x870A
+#define GL_DSDT8_MAG8_INTENSITY8_NV       0x870B
+#define GL_SIGNED_RGB_UNSIGNED_ALPHA_NV   0x870C
+#define GL_SIGNED_RGB8_UNSIGNED_ALPHA8_NV 0x870D
+#define GL_HI_SCALE_NV                    0x870E
+#define GL_LO_SCALE_NV                    0x870F
+#define GL_DS_SCALE_NV                    0x8710
+#define GL_DT_SCALE_NV                    0x8711
+#define GL_MAGNITUDE_SCALE_NV             0x8712
+#define GL_VIBRANCE_SCALE_NV              0x8713
+#define GL_HI_BIAS_NV                     0x8714
+#define GL_LO_BIAS_NV                     0x8715
+#define GL_DS_BIAS_NV                     0x8716
+#define GL_DT_BIAS_NV                     0x8717
+#define GL_MAGNITUDE_BIAS_NV              0x8718
+#define GL_VIBRANCE_BIAS_NV               0x8719
+#define GL_TEXTURE_BORDER_VALUES_NV       0x871A
+#define GL_TEXTURE_HI_SIZE_NV             0x871B
+#define GL_TEXTURE_LO_SIZE_NV             0x871C
+#define GL_TEXTURE_DS_SIZE_NV             0x871D
+#define GL_TEXTURE_DT_SIZE_NV             0x871E
+#define GL_TEXTURE_MAG_SIZE_NV            0x871F
+#endif
+
+#ifndef GL_NV_texture_shader2
+#define GL_DOT_PRODUCT_TEXTURE_3D_NV      0x86EF
+#endif
+
+#ifndef GL_NV_vertex_array_range2
+#define GL_VERTEX_ARRAY_RANGE_WITHOUT_FLUSH_NV 0x8533
+#endif
+
+#ifndef GL_NV_vertex_program
+#define GL_VERTEX_PROGRAM_NV              0x8620
+#define GL_VERTEX_STATE_PROGRAM_NV        0x8621
+#define GL_ATTRIB_ARRAY_SIZE_NV           0x8623
+#define GL_ATTRIB_ARRAY_STRIDE_NV         0x8624
+#define GL_ATTRIB_ARRAY_TYPE_NV           0x8625
+#define GL_CURRENT_ATTRIB_NV              0x8626
+#define GL_PROGRAM_LENGTH_NV              0x8627
+#define GL_PROGRAM_STRING_NV              0x8628
+#define GL_MODELVIEW_PROJECTION_NV        0x8629
+#define GL_IDENTITY_NV                    0x862A
+#define GL_INVERSE_NV                     0x862B
+#define GL_TRANSPOSE_NV                   0x862C
+#define GL_INVERSE_TRANSPOSE_NV           0x862D
+#define GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV 0x862E
+#define GL_MAX_TRACK_MATRICES_NV          0x862F
+#define GL_MATRIX0_NV                     0x8630
+#define GL_MATRIX1_NV                     0x8631
+#define GL_MATRIX2_NV                     0x8632
+#define GL_MATRIX3_NV                     0x8633
+#define GL_MATRIX4_NV                     0x8634
+#define GL_MATRIX5_NV                     0x8635
+#define GL_MATRIX6_NV                     0x8636
+#define GL_MATRIX7_NV                     0x8637
+#define GL_CURRENT_MATRIX_STACK_DEPTH_NV  0x8640
+#define GL_CURRENT_MATRIX_NV              0x8641
+#define GL_VERTEX_PROGRAM_POINT_SIZE_NV   0x8642
+#define GL_VERTEX_PROGRAM_TWO_SIDE_NV     0x8643
+#define GL_PROGRAM_PARAMETER_NV           0x8644
+#define GL_ATTRIB_ARRAY_POINTER_NV        0x8645
+#define GL_PROGRAM_TARGET_NV              0x8646
+#define GL_PROGRAM_RESIDENT_NV            0x8647
+#define GL_TRACK_MATRIX_NV                0x8648
+#define GL_TRACK_MATRIX_TRANSFORM_NV      0x8649
+#define GL_VERTEX_PROGRAM_BINDING_NV      0x864A
+#define GL_PROGRAM_ERROR_POSITION_NV      0x864B
+#define GL_VERTEX_ATTRIB_ARRAY0_NV        0x8650
+#define GL_VERTEX_ATTRIB_ARRAY1_NV        0x8651
+#define GL_VERTEX_ATTRIB_ARRAY2_NV        0x8652
+#define GL_VERTEX_ATTRIB_ARRAY3_NV        0x8653
+#define GL_VERTEX_ATTRIB_ARRAY4_NV        0x8654
+#define GL_VERTEX_ATTRIB_ARRAY5_NV        0x8655
+#define GL_VERTEX_ATTRIB_ARRAY6_NV        0x8656
+#define GL_VERTEX_ATTRIB_ARRAY7_NV        0x8657
+#define GL_VERTEX_ATTRIB_ARRAY8_NV        0x8658
+#define GL_VERTEX_ATTRIB_ARRAY9_NV        0x8659
+#define GL_VERTEX_ATTRIB_ARRAY10_NV       0x865A
+#define GL_VERTEX_ATTRIB_ARRAY11_NV       0x865B
+#define GL_VERTEX_ATTRIB_ARRAY12_NV       0x865C
+#define GL_VERTEX_ATTRIB_ARRAY13_NV       0x865D
+#define GL_VERTEX_ATTRIB_ARRAY14_NV       0x865E
+#define GL_VERTEX_ATTRIB_ARRAY15_NV       0x865F
+#define GL_MAP1_VERTEX_ATTRIB0_4_NV       0x8660
+#define GL_MAP1_VERTEX_ATTRIB1_4_NV       0x8661
+#define GL_MAP1_VERTEX_ATTRIB2_4_NV       0x8662
+#define GL_MAP1_VERTEX_ATTRIB3_4_NV       0x8663
+#define GL_MAP1_VERTEX_ATTRIB4_4_NV       0x8664
+#define GL_MAP1_VERTEX_ATTRIB5_4_NV       0x8665
+#define GL_MAP1_VERTEX_ATTRIB6_4_NV       0x8666
+#define GL_MAP1_VERTEX_ATTRIB7_4_NV       0x8667
+#define GL_MAP1_VERTEX_ATTRIB8_4_NV       0x8668
+#define GL_MAP1_VERTEX_ATTRIB9_4_NV       0x8669
+#define GL_MAP1_VERTEX_ATTRIB10_4_NV      0x866A
+#define GL_MAP1_VERTEX_ATTRIB11_4_NV      0x866B
+#define GL_MAP1_VERTEX_ATTRIB12_4_NV      0x866C
+#define GL_MAP1_VERTEX_ATTRIB13_4_NV      0x866D
+#define GL_MAP1_VERTEX_ATTRIB14_4_NV      0x866E
+#define GL_MAP1_VERTEX_ATTRIB15_4_NV      0x866F
+#define GL_MAP2_VERTEX_ATTRIB0_4_NV       0x8670
+#define GL_MAP2_VERTEX_ATTRIB1_4_NV       0x8671
+#define GL_MAP2_VERTEX_ATTRIB2_4_NV       0x8672
+#define GL_MAP2_VERTEX_ATTRIB3_4_NV       0x8673
+#define GL_MAP2_VERTEX_ATTRIB4_4_NV       0x8674
+#define GL_MAP2_VERTEX_ATTRIB5_4_NV       0x8675
+#define GL_MAP2_VERTEX_ATTRIB6_4_NV       0x8676
+#define GL_MAP2_VERTEX_ATTRIB7_4_NV       0x8677
+#define GL_MAP2_VERTEX_ATTRIB8_4_NV       0x8678
+#define GL_MAP2_VERTEX_ATTRIB9_4_NV       0x8679
+#define GL_MAP2_VERTEX_ATTRIB10_4_NV      0x867A
+#define GL_MAP2_VERTEX_ATTRIB11_4_NV      0x867B
+#define GL_MAP2_VERTEX_ATTRIB12_4_NV      0x867C
+#define GL_MAP2_VERTEX_ATTRIB13_4_NV      0x867D
+#define GL_MAP2_VERTEX_ATTRIB14_4_NV      0x867E
+#define GL_MAP2_VERTEX_ATTRIB15_4_NV      0x867F
+#endif
+
+#ifndef GL_SGIX_texture_coordinate_clamp
+#define GL_TEXTURE_MAX_CLAMP_S_SGIX       0x8369
+#define GL_TEXTURE_MAX_CLAMP_T_SGIX       0x836A
+#define GL_TEXTURE_MAX_CLAMP_R_SGIX       0x836B
+#endif
+
+#ifndef GL_SGIX_scalebias_hint
+#define GL_SCALEBIAS_HINT_SGIX            0x8322
+#endif
+
+#ifndef GL_OML_interlace
+#define GL_INTERLACE_OML                  0x8980
+#define GL_INTERLACE_READ_OML             0x8981
+#endif
+
+#ifndef GL_OML_subsample
+#define GL_FORMAT_SUBSAMPLE_24_24_OML     0x8982
+#define GL_FORMAT_SUBSAMPLE_244_244_OML   0x8983
+#endif
+
+#ifndef GL_OML_resample
+#define GL_PACK_RESAMPLE_OML              0x8984
+#define GL_UNPACK_RESAMPLE_OML            0x8985
+#define GL_RESAMPLE_REPLICATE_OML         0x8986
+#define GL_RESAMPLE_ZERO_FILL_OML         0x8987
+#define GL_RESAMPLE_AVERAGE_OML           0x8988
+#define GL_RESAMPLE_DECIMATE_OML          0x8989
+#endif
+
+#ifndef GL_NV_copy_depth_to_color
+#define GL_DEPTH_STENCIL_TO_RGBA_NV       0x886E
+#define GL_DEPTH_STENCIL_TO_BGRA_NV       0x886F
+#endif
+
+#ifndef GL_ATI_envmap_bumpmap
+#define GL_BUMP_ROT_MATRIX_ATI            0x8775
+#define GL_BUMP_ROT_MATRIX_SIZE_ATI       0x8776
+#define GL_BUMP_NUM_TEX_UNITS_ATI         0x8777
+#define GL_BUMP_TEX_UNITS_ATI             0x8778
+#define GL_DUDV_ATI                       0x8779
+#define GL_DU8DV8_ATI                     0x877A
+#define GL_BUMP_ENVMAP_ATI                0x877B
+#define GL_BUMP_TARGET_ATI                0x877C
+#endif
+
+#ifndef GL_ATI_fragment_shader
+#define GL_FRAGMENT_SHADER_ATI            0x8920
+#define GL_REG_0_ATI                      0x8921
+#define GL_REG_1_ATI                      0x8922
+#define GL_REG_2_ATI                      0x8923
+#define GL_REG_3_ATI                      0x8924
+#define GL_REG_4_ATI                      0x8925
+#define GL_REG_5_ATI                      0x8926
+#define GL_REG_6_ATI                      0x8927
+#define GL_REG_7_ATI                      0x8928
+#define GL_REG_8_ATI                      0x8929
+#define GL_REG_9_ATI                      0x892A
+#define GL_REG_10_ATI                     0x892B
+#define GL_REG_11_ATI                     0x892C
+#define GL_REG_12_ATI                     0x892D
+#define GL_REG_13_ATI                     0x892E
+#define GL_REG_14_ATI                     0x892F
+#define GL_REG_15_ATI                     0x8930
+#define GL_REG_16_ATI                     0x8931
+#define GL_REG_17_ATI                     0x8932
+#define GL_REG_18_ATI                     0x8933
+#define GL_REG_19_ATI                     0x8934
+#define GL_REG_20_ATI                     0x8935
+#define GL_REG_21_ATI                     0x8936
+#define GL_REG_22_ATI                     0x8937
+#define GL_REG_23_ATI                     0x8938
+#define GL_REG_24_ATI                     0x8939
+#define GL_REG_25_ATI                     0x893A
+#define GL_REG_26_ATI                     0x893B
+#define GL_REG_27_ATI                     0x893C
+#define GL_REG_28_ATI                     0x893D
+#define GL_REG_29_ATI                     0x893E
+#define GL_REG_30_ATI                     0x893F
+#define GL_REG_31_ATI                     0x8940
+#define GL_CON_0_ATI                      0x8941
+#define GL_CON_1_ATI                      0x8942
+#define GL_CON_2_ATI                      0x8943
+#define GL_CON_3_ATI                      0x8944
+#define GL_CON_4_ATI                      0x8945
+#define GL_CON_5_ATI                      0x8946
+#define GL_CON_6_ATI                      0x8947
+#define GL_CON_7_ATI                      0x8948
+#define GL_CON_8_ATI                      0x8949
+#define GL_CON_9_ATI                      0x894A
+#define GL_CON_10_ATI                     0x894B
+#define GL_CON_11_ATI                     0x894C
+#define GL_CON_12_ATI                     0x894D
+#define GL_CON_13_ATI                     0x894E
+#define GL_CON_14_ATI                     0x894F
+#define GL_CON_15_ATI                     0x8950
+#define GL_CON_16_ATI                     0x8951
+#define GL_CON_17_ATI                     0x8952
+#define GL_CON_18_ATI                     0x8953
+#define GL_CON_19_ATI                     0x8954
+#define GL_CON_20_ATI                     0x8955
+#define GL_CON_21_ATI                     0x8956
+#define GL_CON_22_ATI                     0x8957
+#define GL_CON_23_ATI                     0x8958
+#define GL_CON_24_ATI                     0x8959
+#define GL_CON_25_ATI                     0x895A
+#define GL_CON_26_ATI                     0x895B
+#define GL_CON_27_ATI                     0x895C
+#define GL_CON_28_ATI                     0x895D
+#define GL_CON_29_ATI                     0x895E
+#define GL_CON_30_ATI                     0x895F
+#define GL_CON_31_ATI                     0x8960
+#define GL_MOV_ATI                        0x8961
+#define GL_ADD_ATI                        0x8963
+#define GL_MUL_ATI                        0x8964
+#define GL_SUB_ATI                        0x8965
+#define GL_DOT3_ATI                       0x8966
+#define GL_DOT4_ATI                       0x8967
+#define GL_MAD_ATI                        0x8968
+#define GL_LERP_ATI                       0x8969
+#define GL_CND_ATI                        0x896A
+#define GL_CND0_ATI                       0x896B
+#define GL_DOT2_ADD_ATI                   0x896C
+#define GL_SECONDARY_INTERPOLATOR_ATI     0x896D
+#define GL_NUM_FRAGMENT_REGISTERS_ATI     0x896E
+#define GL_NUM_FRAGMENT_CONSTANTS_ATI     0x896F
+#define GL_NUM_PASSES_ATI                 0x8970
+#define GL_NUM_INSTRUCTIONS_PER_PASS_ATI  0x8971
+#define GL_NUM_INSTRUCTIONS_TOTAL_ATI     0x8972
+#define GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI 0x8973
+#define GL_NUM_LOOPBACK_COMPONENTS_ATI    0x8974
+#define GL_COLOR_ALPHA_PAIRING_ATI        0x8975
+#define GL_SWIZZLE_STR_ATI                0x8976
+#define GL_SWIZZLE_STQ_ATI                0x8977
+#define GL_SWIZZLE_STR_DR_ATI             0x8978
+#define GL_SWIZZLE_STQ_DQ_ATI             0x8979
+#define GL_SWIZZLE_STRQ_ATI               0x897A
+#define GL_SWIZZLE_STRQ_DQ_ATI            0x897B
+#define GL_RED_BIT_ATI                    0x00000001
+#define GL_GREEN_BIT_ATI                  0x00000002
+#define GL_BLUE_BIT_ATI                   0x00000004
+#define GL_2X_BIT_ATI                     0x00000001
+#define GL_4X_BIT_ATI                     0x00000002
+#define GL_8X_BIT_ATI                     0x00000004
+#define GL_HALF_BIT_ATI                   0x00000008
+#define GL_QUARTER_BIT_ATI                0x00000010
+#define GL_EIGHTH_BIT_ATI                 0x00000020
+#define GL_SATURATE_BIT_ATI               0x00000040
+#define GL_COMP_BIT_ATI                   0x00000002
+#define GL_NEGATE_BIT_ATI                 0x00000004
+#define GL_BIAS_BIT_ATI                   0x00000008
+#endif
+
+#ifndef GL_ATI_pn_triangles
+#define GL_PN_TRIANGLES_ATI               0x87F0
+#define GL_MAX_PN_TRIANGLES_TESSELATION_LEVEL_ATI 0x87F1
+#define GL_PN_TRIANGLES_POINT_MODE_ATI    0x87F2
+#define GL_PN_TRIANGLES_NORMAL_MODE_ATI   0x87F3
+#define GL_PN_TRIANGLES_TESSELATION_LEVEL_ATI 0x87F4
+#define GL_PN_TRIANGLES_POINT_MODE_LINEAR_ATI 0x87F5
+#define GL_PN_TRIANGLES_POINT_MODE_CUBIC_ATI 0x87F6
+#define GL_PN_TRIANGLES_NORMAL_MODE_LINEAR_ATI 0x87F7
+#define GL_PN_TRIANGLES_NORMAL_MODE_QUADRATIC_ATI 0x87F8
+#endif
+
+#ifndef GL_ATI_vertex_array_object
+#define GL_STATIC_ATI                     0x8760
+#define GL_DYNAMIC_ATI                    0x8761
+#define GL_PRESERVE_ATI                   0x8762
+#define GL_DISCARD_ATI                    0x8763
+#define GL_OBJECT_BUFFER_SIZE_ATI         0x8764
+#define GL_OBJECT_BUFFER_USAGE_ATI        0x8765
+#define GL_ARRAY_OBJECT_BUFFER_ATI        0x8766
+#define GL_ARRAY_OBJECT_OFFSET_ATI        0x8767
+#endif
+
+#ifndef GL_EXT_vertex_shader
+#define GL_VERTEX_SHADER_EXT              0x8780
+#define GL_VERTEX_SHADER_BINDING_EXT      0x8781
+#define GL_OP_INDEX_EXT                   0x8782
+#define GL_OP_NEGATE_EXT                  0x8783
+#define GL_OP_DOT3_EXT                    0x8784
+#define GL_OP_DOT4_EXT                    0x8785
+#define GL_OP_MUL_EXT                     0x8786
+#define GL_OP_ADD_EXT                     0x8787
+#define GL_OP_MADD_EXT                    0x8788
+#define GL_OP_FRAC_EXT                    0x8789
+#define GL_OP_MAX_EXT                     0x878A
+#define GL_OP_MIN_EXT                     0x878B
+#define GL_OP_SET_GE_EXT                  0x878C
+#define GL_OP_SET_LT_EXT                  0x878D
+#define GL_OP_CLAMP_EXT                   0x878E
+#define GL_OP_FLOOR_EXT                   0x878F
+#define GL_OP_ROUND_EXT                   0x8790
+#define GL_OP_EXP_BASE_2_EXT              0x8791
+#define GL_OP_LOG_BASE_2_EXT              0x8792
+#define GL_OP_POWER_EXT                   0x8793
+#define GL_OP_RECIP_EXT                   0x8794
+#define GL_OP_RECIP_SQRT_EXT              0x8795
+#define GL_OP_SUB_EXT                     0x8796
+#define GL_OP_CROSS_PRODUCT_EXT           0x8797
+#define GL_OP_MULTIPLY_MATRIX_EXT         0x8798
+#define GL_OP_MOV_EXT                     0x8799
+#define GL_OUTPUT_VERTEX_EXT              0x879A
+#define GL_OUTPUT_COLOR0_EXT              0x879B
+#define GL_OUTPUT_COLOR1_EXT              0x879C
+#define GL_OUTPUT_TEXTURE_COORD0_EXT      0x879D
+#define GL_OUTPUT_TEXTURE_COORD1_EXT      0x879E
+#define GL_OUTPUT_TEXTURE_COORD2_EXT      0x879F
+#define GL_OUTPUT_TEXTURE_COORD3_EXT      0x87A0
+#define GL_OUTPUT_TEXTURE_COORD4_EXT      0x87A1
+#define GL_OUTPUT_TEXTURE_COORD5_EXT      0x87A2
+#define GL_OUTPUT_TEXTURE_COORD6_EXT      0x87A3
+#define GL_OUTPUT_TEXTURE_COORD7_EXT      0x87A4
+#define GL_OUTPUT_TEXTURE_COORD8_EXT      0x87A5
+#define GL_OUTPUT_TEXTURE_COORD9_EXT      0x87A6
+#define GL_OUTPUT_TEXTURE_COORD10_EXT     0x87A7
+#define GL_OUTPUT_TEXTURE_COORD11_EXT     0x87A8
+#define GL_OUTPUT_TEXTURE_COORD12_EXT     0x87A9
+#define GL_OUTPUT_TEXTURE_COORD13_EXT     0x87AA
+#define GL_OUTPUT_TEXTURE_COORD14_EXT     0x87AB
+#define GL_OUTPUT_TEXTURE_COORD15_EXT     0x87AC
+#define GL_OUTPUT_TEXTURE_COORD16_EXT     0x87AD
+#define GL_OUTPUT_TEXTURE_COORD17_EXT     0x87AE
+#define GL_OUTPUT_TEXTURE_COORD18_EXT     0x87AF
+#define GL_OUTPUT_TEXTURE_COORD19_EXT     0x87B0
+#define GL_OUTPUT_TEXTURE_COORD20_EXT     0x87B1
+#define GL_OUTPUT_TEXTURE_COORD21_EXT     0x87B2
+#define GL_OUTPUT_TEXTURE_COORD22_EXT     0x87B3
+#define GL_OUTPUT_TEXTURE_COORD23_EXT     0x87B4
+#define GL_OUTPUT_TEXTURE_COORD24_EXT     0x87B5
+#define GL_OUTPUT_TEXTURE_COORD25_EXT     0x87B6
+#define GL_OUTPUT_TEXTURE_COORD26_EXT     0x87B7
+#define GL_OUTPUT_TEXTURE_COORD27_EXT     0x87B8
+#define GL_OUTPUT_TEXTURE_COORD28_EXT     0x87B9
+#define GL_OUTPUT_TEXTURE_COORD29_EXT     0x87BA
+#define GL_OUTPUT_TEXTURE_COORD30_EXT     0x87BB
+#define GL_OUTPUT_TEXTURE_COORD31_EXT     0x87BC
+#define GL_OUTPUT_FOG_EXT                 0x87BD
+#define GL_SCALAR_EXT                     0x87BE
+#define GL_VECTOR_EXT                     0x87BF
+#define GL_MATRIX_EXT                     0x87C0
+#define GL_VARIANT_EXT                    0x87C1
+#define GL_INVARIANT_EXT                  0x87C2
+#define GL_LOCAL_CONSTANT_EXT             0x87C3
+#define GL_LOCAL_EXT                      0x87C4
+#define GL_MAX_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87C5
+#define GL_MAX_VERTEX_SHADER_VARIANTS_EXT 0x87C6
+#define GL_MAX_VERTEX_SHADER_INVARIANTS_EXT 0x87C7
+#define GL_MAX_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87C8
+#define GL_MAX_VERTEX_SHADER_LOCALS_EXT   0x87C9
+#define GL_MAX_OPTIMIZED_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87CA
+#define GL_MAX_OPTIMIZED_VERTEX_SHADER_VARIANTS_EXT 0x87CB
+#define GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87CC
+#define GL_MAX_OPTIMIZED_VERTEX_SHADER_INARIANTS_EXT 0x87CD
+#define GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCALS_EXT 0x87CE
+#define GL_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87CF
+#define GL_VERTEX_SHADER_VARIANTS_EXT     0x87D0
+#define GL_VERTEX_SHADER_INVARIANTS_EXT   0x87D1
+#define GL_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87D2
+#define GL_VERTEX_SHADER_LOCALS_EXT       0x87D3
+#define GL_VERTEX_SHADER_OPTIMIZED_EXT    0x87D4
+#define GL_X_EXT                          0x87D5
+#define GL_Y_EXT                          0x87D6
+#define GL_Z_EXT                          0x87D7
+#define GL_W_EXT                          0x87D8
+#define GL_NEGATIVE_X_EXT                 0x87D9
+#define GL_NEGATIVE_Y_EXT                 0x87DA
+#define GL_NEGATIVE_Z_EXT                 0x87DB
+#define GL_NEGATIVE_W_EXT                 0x87DC
+#define GL_ZERO_EXT                       0x87DD
+#define GL_ONE_EXT                        0x87DE
+#define GL_NEGATIVE_ONE_EXT               0x87DF
+#define GL_NORMALIZED_RANGE_EXT           0x87E0
+#define GL_FULL_RANGE_EXT                 0x87E1
+#define GL_CURRENT_VERTEX_EXT             0x87E2
+#define GL_MVP_MATRIX_EXT                 0x87E3
+#define GL_VARIANT_VALUE_EXT              0x87E4
+#define GL_VARIANT_DATATYPE_EXT           0x87E5
+#define GL_VARIANT_ARRAY_STRIDE_EXT       0x87E6
+#define GL_VARIANT_ARRAY_TYPE_EXT         0x87E7
+#define GL_VARIANT_ARRAY_EXT              0x87E8
+#define GL_VARIANT_ARRAY_POINTER_EXT      0x87E9
+#define GL_INVARIANT_VALUE_EXT            0x87EA
+#define GL_INVARIANT_DATATYPE_EXT         0x87EB
+#define GL_LOCAL_CONSTANT_VALUE_EXT       0x87EC
+#define GL_LOCAL_CONSTANT_DATATYPE_EXT    0x87ED
+#endif
+
+#ifndef GL_ATI_vertex_streams
+#define GL_MAX_VERTEX_STREAMS_ATI         0x876B
+#define GL_VERTEX_STREAM0_ATI             0x876C
+#define GL_VERTEX_STREAM1_ATI             0x876D
+#define GL_VERTEX_STREAM2_ATI             0x876E
+#define GL_VERTEX_STREAM3_ATI             0x876F
+#define GL_VERTEX_STREAM4_ATI             0x8770
+#define GL_VERTEX_STREAM5_ATI             0x8771
+#define GL_VERTEX_STREAM6_ATI             0x8772
+#define GL_VERTEX_STREAM7_ATI             0x8773
+#define GL_VERTEX_SOURCE_ATI              0x8774
+#endif
+
+#ifndef GL_ATI_element_array
+#define GL_ELEMENT_ARRAY_ATI              0x8768
+#define GL_ELEMENT_ARRAY_TYPE_ATI         0x8769
+#define GL_ELEMENT_ARRAY_POINTER_ATI      0x876A
+#endif
+
+#ifndef GL_SUN_mesh_array
+#define GL_QUAD_MESH_SUN                  0x8614
+#define GL_TRIANGLE_MESH_SUN              0x8615
+#endif
+
+#ifndef GL_SUN_slice_accum
+#define GL_SLICE_ACCUM_SUN                0x85CC
+#endif
+
+#ifndef GL_NV_multisample_filter_hint
+#define GL_MULTISAMPLE_FILTER_HINT_NV     0x8534
+#endif
+
+#ifndef GL_NV_depth_clamp
+#define GL_DEPTH_CLAMP_NV                 0x864F
+#endif
+
+#ifndef GL_NV_occlusion_query
+#define GL_PIXEL_COUNTER_BITS_NV          0x8864
+#define GL_CURRENT_OCCLUSION_QUERY_ID_NV  0x8865
+#define GL_PIXEL_COUNT_NV                 0x8866
+#define GL_PIXEL_COUNT_AVAILABLE_NV       0x8867
+#endif
+
+#ifndef GL_NV_point_sprite
+#define GL_POINT_SPRITE_NV                0x8861
+#define GL_COORD_REPLACE_NV               0x8862
+#define GL_POINT_SPRITE_R_MODE_NV         0x8863
+#endif
+
+#ifndef GL_NV_texture_shader3
+#define GL_OFFSET_PROJECTIVE_TEXTURE_2D_NV 0x8850
+#define GL_OFFSET_PROJECTIVE_TEXTURE_2D_SCALE_NV 0x8851
+#define GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_NV 0x8852
+#define GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_SCALE_NV 0x8853
+#define GL_OFFSET_HILO_TEXTURE_2D_NV      0x8854
+#define GL_OFFSET_HILO_TEXTURE_RECTANGLE_NV 0x8855
+#define GL_OFFSET_HILO_PROJECTIVE_TEXTURE_2D_NV 0x8856
+#define GL_OFFSET_HILO_PROJECTIVE_TEXTURE_RECTANGLE_NV 0x8857
+#define GL_DEPENDENT_HILO_TEXTURE_2D_NV   0x8858
+#define GL_DEPENDENT_RGB_TEXTURE_3D_NV    0x8859
+#define GL_DEPENDENT_RGB_TEXTURE_CUBE_MAP_NV 0x885A
+#define GL_DOT_PRODUCT_PASS_THROUGH_NV    0x885B
+#define GL_DOT_PRODUCT_TEXTURE_1D_NV      0x885C
+#define GL_DOT_PRODUCT_AFFINE_DEPTH_REPLACE_NV 0x885D
+#define GL_HILO8_NV                       0x885E
+#define GL_SIGNED_HILO8_NV                0x885F
+#define GL_FORCE_BLUE_TO_ONE_NV           0x8860
+#endif
+
+#ifndef GL_NV_vertex_program1_1
+#endif
+
+
+/*************************************************************/
+
+#ifndef GL_VERSION_1_2
+#define GL_VERSION_1_2 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glBlendColor (GLclampf, GLclampf, GLclampf, GLclampf);
+GLAPI void APIENTRY glBlendEquation (GLenum);
+GLAPI void APIENTRY glDrawRangeElements (GLenum, GLuint, GLuint, GLsizei, GLenum, const GLvoid *);
+GLAPI void APIENTRY glColorTable (GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *);
+GLAPI void APIENTRY glColorTableParameterfv (GLenum, GLenum, const GLfloat *);
+GLAPI void APIENTRY glColorTableParameteriv (GLenum, GLenum, const GLint *);
+GLAPI void APIENTRY glCopyColorTable (GLenum, GLenum, GLint, GLint, GLsizei);
+GLAPI void APIENTRY glGetColorTable (GLenum, GLenum, GLenum, GLvoid *);
+GLAPI void APIENTRY glGetColorTableParameterfv (GLenum, GLenum, GLfloat *);
+GLAPI void APIENTRY glGetColorTableParameteriv (GLenum, GLenum, GLint *);
+GLAPI void APIENTRY glColorSubTable (GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);
+GLAPI void APIENTRY glCopyColorSubTable (GLenum, GLsizei, GLint, GLint, GLsizei);
+GLAPI void APIENTRY glConvolutionFilter1D (GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *);
+GLAPI void APIENTRY glConvolutionFilter2D (GLenum, GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);
+GLAPI void APIENTRY glConvolutionParameterf (GLenum, GLenum, GLfloat);
+GLAPI void APIENTRY glConvolutionParameterfv (GLenum, GLenum, const GLfloat *);
+GLAPI void APIENTRY glConvolutionParameteri (GLenum, GLenum, GLint);
+GLAPI void APIENTRY glConvolutionParameteriv (GLenum, GLenum, const GLint *);
+GLAPI void APIENTRY glCopyConvolutionFilter1D (GLenum, GLenum, GLint, GLint, GLsizei);
+GLAPI void APIENTRY glCopyConvolutionFilter2D (GLenum, GLenum, GLint, GLint, GLsizei, GLsizei);
+GLAPI void APIENTRY glGetConvolutionFilter (GLenum, GLenum, GLenum, GLvoid *);
+GLAPI void APIENTRY glGetConvolutionParameterfv (GLenum, GLenum, GLfloat *);
+GLAPI void APIENTRY glGetConvolutionParameteriv (GLenum, GLenum, GLint *);
+GLAPI void APIENTRY glGetSeparableFilter (GLenum, GLenum, GLenum, GLvoid *, GLvoid *, GLvoid *);
+GLAPI void APIENTRY glSeparableFilter2D (GLenum, GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *, const GLvoid *);
+GLAPI void APIENTRY glGetHistogram (GLenum, GLboolean, GLenum, GLenum, GLvoid *);
+GLAPI void APIENTRY glGetHistogramParameterfv (GLenum, GLenum, GLfloat *);
+GLAPI void APIENTRY glGetHistogramParameteriv (GLenum, GLenum, GLint *);
+GLAPI void APIENTRY glGetMinmax (GLenum, GLboolean, GLenum, GLenum, GLvoid *);
+GLAPI void APIENTRY glGetMinmaxParameterfv (GLenum, GLenum, GLfloat *);
+GLAPI void APIENTRY glGetMinmaxParameteriv (GLenum, GLenum, GLint *);
+GLAPI void APIENTRY glHistogram (GLenum, GLsizei, GLenum, GLboolean);
+GLAPI void APIENTRY glMinmax (GLenum, GLenum, GLboolean);
+GLAPI void APIENTRY glResetHistogram (GLenum);
+GLAPI void APIENTRY glResetMinmax (GLenum);
+GLAPI void APIENTRY glTexImage3D (GLenum, GLint, GLint, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *);
+GLAPI void APIENTRY glTexSubImage3D (GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);
+GLAPI void APIENTRY glCopyTexSubImage3D (GLenum, GLint, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRY * PFNGLBLENDCOLORPROC) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
+typedef void (APIENTRY * PFNGLBLENDEQUATIONPROC) (GLenum mode);
+typedef void (APIENTRY * PFNGLDRAWRANGEELEMENTSPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices);
+typedef void (APIENTRY * PFNGLCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table);
+typedef void (APIENTRY * PFNGLCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params);
+typedef void (APIENTRY * PFNGLCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params);
+typedef void (APIENTRY * PFNGLCOPYCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
+typedef void (APIENTRY * PFNGLGETCOLORTABLEPROC) (GLenum target, GLenum format, GLenum type, GLvoid *table);
+typedef void (APIENTRY * PFNGLGETCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);
+typedef void (APIENTRY * PFNGLGETCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
+typedef void (APIENTRY * PFNGLCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data);
+typedef void (APIENTRY * PFNGLCOPYCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width);
+typedef void (APIENTRY * PFNGLCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image);
+typedef void (APIENTRY * PFNGLCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image);
+typedef void (APIENTRY * PFNGLCONVOLUTIONPARAMETERFPROC) (GLenum target, GLenum pname, GLfloat params);
+typedef void (APIENTRY * PFNGLCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params);
+typedef void (APIENTRY * PFNGLCONVOLUTIONPARAMETERIPROC) (GLenum target, GLenum pname, GLint params);
+typedef void (APIENTRY * PFNGLCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params);
+typedef void (APIENTRY * PFNGLCOPYCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
+typedef void (APIENTRY * PFNGLCOPYCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height);
+typedef void (APIENTRY * PFNGLGETCONVOLUTIONFILTERPROC) (GLenum target, GLenum format, GLenum type, GLvoid *image);
+typedef void (APIENTRY * PFNGLGETCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);
+typedef void (APIENTRY * PFNGLGETCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
+typedef void (APIENTRY * PFNGLGETSEPARABLEFILTERPROC) (GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span);
+typedef void (APIENTRY * PFNGLSEPARABLEFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column);
+typedef void (APIENTRY * PFNGLGETHISTOGRAMPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values);
+typedef void (APIENTRY * PFNGLGETHISTOGRAMPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);
+typedef void (APIENTRY * PFNGLGETHISTOGRAMPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
+typedef void (APIENTRY * PFNGLGETMINMAXPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values);
+typedef void (APIENTRY * PFNGLGETMINMAXPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);
+typedef void (APIENTRY * PFNGLGETMINMAXPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
+typedef void (APIENTRY * PFNGLHISTOGRAMPROC) (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink);
+typedef void (APIENTRY * PFNGLMINMAXPROC) (GLenum target, GLenum internalformat, GLboolean sink);
+typedef void (APIENTRY * PFNGLRESETHISTOGRAMPROC) (GLenum target);
+typedef void (APIENTRY * PFNGLRESETMINMAXPROC) (GLenum target);
+typedef void (APIENTRY * PFNGLTEXIMAGE3DPROC) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
+typedef void (APIENTRY * PFNGLTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels);
+typedef void (APIENTRY * PFNGLCOPYTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+#endif
+
+#ifndef GL_VERSION_1_3
+#define GL_VERSION_1_3 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glActiveTexture (GLenum);
+GLAPI void APIENTRY glClientActiveTexture (GLenum);
+GLAPI void APIENTRY glMultiTexCoord1d (GLenum, GLdouble);
+GLAPI void APIENTRY glMultiTexCoord1dv (GLenum, const GLdouble *);
+GLAPI void APIENTRY glMultiTexCoord1f (GLenum, GLfloat);
+GLAPI void APIENTRY glMultiTexCoord1fv (GLenum, const GLfloat *);
+GLAPI void APIENTRY glMultiTexCoord1i (GLenum, GLint);
+GLAPI void APIENTRY glMultiTexCoord1iv (GLenum, const GLint *);
+GLAPI void APIENTRY glMultiTexCoord1s (GLenum, GLshort);
+GLAPI void APIENTRY glMultiTexCoord1sv (GLenum, const GLshort *);
+GLAPI void APIENTRY glMultiTexCoord2d (GLenum, GLdouble, GLdouble);
+GLAPI void APIENTRY glMultiTexCoord2dv (GLenum, const GLdouble *);
+GLAPI void APIENTRY glMultiTexCoord2f (GLenum, GLfloat, GLfloat);
+GLAPI void APIENTRY glMultiTexCoord2fv (GLenum, const GLfloat *);
+GLAPI void APIENTRY glMultiTexCoord2i (GLenum, GLint, GLint);
+GLAPI void APIENTRY glMultiTexCoord2iv (GLenum, const GLint *);
+GLAPI void APIENTRY glMultiTexCoord2s (GLenum, GLshort, GLshort);
+GLAPI void APIENTRY glMultiTexCoord2sv (GLenum, const GLshort *);
+GLAPI void APIENTRY glMultiTexCoord3d (GLenum, GLdouble, GLdouble, GLdouble);
+GLAPI void APIENTRY glMultiTexCoord3dv (GLenum, const GLdouble *);
+GLAPI void APIENTRY glMultiTexCoord3f (GLenum, GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glMultiTexCoord3fv (GLenum, const GLfloat *);
+GLAPI void APIENTRY glMultiTexCoord3i (GLenum, GLint, GLint, GLint);
+GLAPI void APIENTRY glMultiTexCoord3iv (GLenum, const GLint *);
+GLAPI void APIENTRY glMultiTexCoord3s (GLenum, GLshort, GLshort, GLshort);
+GLAPI void APIENTRY glMultiTexCoord3sv (GLenum, const GLshort *);
+GLAPI void APIENTRY glMultiTexCoord4d (GLenum, GLdouble, GLdouble, GLdouble, GLdouble);
+GLAPI void APIENTRY glMultiTexCoord4dv (GLenum, const GLdouble *);
+GLAPI void APIENTRY glMultiTexCoord4f (GLenum, GLfloat, GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glMultiTexCoord4fv (GLenum, const GLfloat *);
+GLAPI void APIENTRY glMultiTexCoord4i (GLenum, GLint, GLint, GLint, GLint);
+GLAPI void APIENTRY glMultiTexCoord4iv (GLenum, const GLint *);
+GLAPI void APIENTRY glMultiTexCoord4s (GLenum, GLshort, GLshort, GLshort, GLshort);
+GLAPI void APIENTRY glMultiTexCoord4sv (GLenum, const GLshort *);
+GLAPI void APIENTRY glLoadTransposeMatrixf (const GLfloat *);
+GLAPI void APIENTRY glLoadTransposeMatrixd (const GLdouble *);
+GLAPI void APIENTRY glMultTransposeMatrixf (const GLfloat *);
+GLAPI void APIENTRY glMultTransposeMatrixd (const GLdouble *);
+GLAPI void APIENTRY glSampleCoverage (GLclampf, GLboolean);
+GLAPI void APIENTRY glCompressedTexImage3D (GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *);
+GLAPI void APIENTRY glCompressedTexImage2D (GLenum, GLint, GLenum, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *);
+GLAPI void APIENTRY glCompressedTexImage1D (GLenum, GLint, GLenum, GLsizei, GLint, GLsizei, const GLvoid *);
+GLAPI void APIENTRY glCompressedTexSubImage3D (GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *);
+GLAPI void APIENTRY glCompressedTexSubImage2D (GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *);
+GLAPI void APIENTRY glCompressedTexSubImage1D (GLenum, GLint, GLint, GLsizei, GLenum, GLsizei, const GLvoid *);
+GLAPI void APIENTRY glGetCompressedTexImage (GLenum, GLint, void *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRY * PFNGLACTIVETEXTUREPROC) (GLenum texture);
+typedef void (APIENTRY * PFNGLCLIENTACTIVETEXTUREPROC) (GLenum texture);
+typedef void (APIENTRY * PFNGLMULTITEXCOORD1DPROC) (GLenum target, GLdouble s);
+typedef void (APIENTRY * PFNGLMULTITEXCOORD1DVPROC) (GLenum target, const GLdouble *v);
+typedef void (APIENTRY * PFNGLMULTITEXCOORD1FPROC) (GLenum target, GLfloat s);
+typedef void (APIENTRY * PFNGLMULTITEXCOORD1FVPROC) (GLenum target, const GLfloat *v);
+typedef void (APIENTRY * PFNGLMULTITEXCOORD1IPROC) (GLenum target, GLint s);
+typedef void (APIENTRY * PFNGLMULTITEXCOORD1IVPROC) (GLenum target, const GLint *v);
+typedef void (APIENTRY * PFNGLMULTITEXCOORD1SPROC) (GLenum target, GLshort s);
+typedef void (APIENTRY * PFNGLMULTITEXCOORD1SVPROC) (GLenum target, const GLshort *v);
+typedef void (APIENTRY * PFNGLMULTITEXCOORD2DPROC) (GLenum target, GLdouble s, GLdouble t);
+typedef void (APIENTRY * PFNGLMULTITEXCOORD2DVPROC) (GLenum target, const GLdouble *v);
+typedef void (APIENTRY * PFNGLMULTITEXCOORD2FPROC) (GLenum target, GLfloat s, GLfloat t);
+typedef void (APIENTRY * PFNGLMULTITEXCOORD2FVPROC) (GLenum target, const GLfloat *v);
+typedef void (APIENTRY * PFNGLMULTITEXCOORD2IPROC) (GLenum target, GLint s, GLint t);
+typedef void (APIENTRY * PFNGLMULTITEXCOORD2IVPROC) (GLenum target, const GLint *v);
+typedef void (APIENTRY * PFNGLMULTITEXCOORD2SPROC) (GLenum target, GLshort s, GLshort t);
+typedef void (APIENTRY * PFNGLMULTITEXCOORD2SVPROC) (GLenum target, const GLshort *v);
+typedef void (APIENTRY * PFNGLMULTITEXCOORD3DPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r);
+typedef void (APIENTRY * PFNGLMULTITEXCOORD3DVPROC) (GLenum target, const GLdouble *v);
+typedef void (APIENTRY * PFNGLMULTITEXCOORD3FPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r);
+typedef void (APIENTRY * PFNGLMULTITEXCOORD3FVPROC) (GLenum target, const GLfloat *v);
+typedef void (APIENTRY * PFNGLMULTITEXCOORD3IPROC) (GLenum target, GLint s, GLint t, GLint r);
+typedef void (APIENTRY * PFNGLMULTITEXCOORD3IVPROC) (GLenum target, const GLint *v);
+typedef void (APIENTRY * PFNGLMULTITEXCOORD3SPROC) (GLenum target, GLshort s, GLshort t, GLshort r);
+typedef void (APIENTRY * PFNGLMULTITEXCOORD3SVPROC) (GLenum target, const GLshort *v);
+typedef void (APIENTRY * PFNGLMULTITEXCOORD4DPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q);
+typedef void (APIENTRY * PFNGLMULTITEXCOORD4DVPROC) (GLenum target, const GLdouble *v);
+typedef void (APIENTRY * PFNGLMULTITEXCOORD4FPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);
+typedef void (APIENTRY * PFNGLMULTITEXCOORD4FVPROC) (GLenum target, const GLfloat *v);
+typedef void (APIENTRY * PFNGLMULTITEXCOORD4IPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q);
+typedef void (APIENTRY * PFNGLMULTITEXCOORD4IVPROC) (GLenum target, const GLint *v);
+typedef void (APIENTRY * PFNGLMULTITEXCOORD4SPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q);
+typedef void (APIENTRY * PFNGLMULTITEXCOORD4SVPROC) (GLenum target, const GLshort *v);
+typedef void (APIENTRY * PFNGLLOADTRANSPOSEMATRIXFPROC) (const GLfloat *m);
+typedef void (APIENTRY * PFNGLLOADTRANSPOSEMATRIXDPROC) (const GLdouble *m);
+typedef void (APIENTRY * PFNGLMULTTRANSPOSEMATRIXFPROC) (const GLfloat *m);
+typedef void (APIENTRY * PFNGLMULTTRANSPOSEMATRIXDPROC) (const GLdouble *m);
+typedef void (APIENTRY * PFNGLSAMPLECOVERAGEPROC) (GLclampf value, GLboolean invert);
+typedef void (APIENTRY * PFNGLCOMPRESSEDTEXIMAGE3DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data);
+typedef void (APIENTRY * PFNGLCOMPRESSEDTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data);
+typedef void (APIENTRY * PFNGLCOMPRESSEDTEXIMAGE1DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data);
+typedef void (APIENTRY * PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data);
+typedef void (APIENTRY * PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data);
+typedef void (APIENTRY * PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data);
+typedef void (APIENTRY * PFNGLGETCOMPRESSEDTEXIMAGEPROC) (GLenum target, GLint level, void *img);
+#endif
+
+#ifndef GL_ARB_multitexture
+#define GL_ARB_multitexture 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glActiveTextureARB (GLenum);
+GLAPI void APIENTRY glClientActiveTextureARB (GLenum);
+GLAPI void APIENTRY glMultiTexCoord1dARB (GLenum, GLdouble);
+GLAPI void APIENTRY glMultiTexCoord1dvARB (GLenum, const GLdouble *);
+GLAPI void APIENTRY glMultiTexCoord1fARB (GLenum, GLfloat);
+GLAPI void APIENTRY glMultiTexCoord1fvARB (GLenum, const GLfloat *);
+GLAPI void APIENTRY glMultiTexCoord1iARB (GLenum, GLint);
+GLAPI void APIENTRY glMultiTexCoord1ivARB (GLenum, const GLint *);
+GLAPI void APIENTRY glMultiTexCoord1sARB (GLenum, GLshort);
+GLAPI void APIENTRY glMultiTexCoord1svARB (GLenum, const GLshort *);
+GLAPI void APIENTRY glMultiTexCoord2dARB (GLenum, GLdouble, GLdouble);
+GLAPI void APIENTRY glMultiTexCoord2dvARB (GLenum, const GLdouble *);
+GLAPI void APIENTRY glMultiTexCoord2fARB (GLenum, GLfloat, GLfloat);
+GLAPI void APIENTRY glMultiTexCoord2fvARB (GLenum, const GLfloat *);
+GLAPI void APIENTRY glMultiTexCoord2iARB (GLenum, GLint, GLint);
+GLAPI void APIENTRY glMultiTexCoord2ivARB (GLenum, const GLint *);
+GLAPI void APIENTRY glMultiTexCoord2sARB (GLenum, GLshort, GLshort);
+GLAPI void APIENTRY glMultiTexCoord2svARB (GLenum, const GLshort *);
+GLAPI void APIENTRY glMultiTexCoord3dARB (GLenum, GLdouble, GLdouble, GLdouble);
+GLAPI void APIENTRY glMultiTexCoord3dvARB (GLenum, const GLdouble *);
+GLAPI void APIENTRY glMultiTexCoord3fARB (GLenum, GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glMultiTexCoord3fvARB (GLenum, const GLfloat *);
+GLAPI void APIENTRY glMultiTexCoord3iARB (GLenum, GLint, GLint, GLint);
+GLAPI void APIENTRY glMultiTexCoord3ivARB (GLenum, const GLint *);
+GLAPI void APIENTRY glMultiTexCoord3sARB (GLenum, GLshort, GLshort, GLshort);
+GLAPI void APIENTRY glMultiTexCoord3svARB (GLenum, const GLshort *);
+GLAPI void APIENTRY glMultiTexCoord4dARB (GLenum, GLdouble, GLdouble, GLdouble, GLdouble);
+GLAPI void APIENTRY glMultiTexCoord4dvARB (GLenum, const GLdouble *);
+GLAPI void APIENTRY glMultiTexCoord4fARB (GLenum, GLfloat, GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glMultiTexCoord4fvARB (GLenum, const GLfloat *);
+GLAPI void APIENTRY glMultiTexCoord4iARB (GLenum, GLint, GLint, GLint, GLint);
+GLAPI void APIENTRY glMultiTexCoord4ivARB (GLenum, const GLint *);
+GLAPI void APIENTRY glMultiTexCoord4sARB (GLenum, GLshort, GLshort, GLshort, GLshort);
+GLAPI void APIENTRY glMultiTexCoord4svARB (GLenum, const GLshort *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRY * PFNGLACTIVETEXTUREARBPROC) (GLenum texture);
+typedef void (APIENTRY * PFNGLCLIENTACTIVETEXTUREARBPROC) (GLenum texture);
+typedef void (APIENTRY * PFNGLMULTITEXCOORD1DARBPROC) (GLenum target, GLdouble s);
+typedef void (APIENTRY * PFNGLMULTITEXCOORD1DVARBPROC) (GLenum target, const GLdouble *v);
+typedef void (APIENTRY * PFNGLMULTITEXCOORD1FARBPROC) (GLenum target, GLfloat s);
+typedef void (APIENTRY * PFNGLMULTITEXCOORD1FVARBPROC) (GLenum target, const GLfloat *v);
+typedef void (APIENTRY * PFNGLMULTITEXCOORD1IARBPROC) (GLenum target, GLint s);
+typedef void (APIENTRY * PFNGLMULTITEXCOORD1IVARBPROC) (GLenum target, const GLint *v);
+typedef void (APIENTRY * PFNGLMULTITEXCOORD1SARBPROC) (GLenum target, GLshort s);
+typedef void (APIENTRY * PFNGLMULTITEXCOORD1SVARBPROC) (GLenum target, const GLshort *v);
+typedef void (APIENTRY * PFNGLMULTITEXCOORD2DARBPROC) (GLenum target, GLdouble s, GLdouble t);
+typedef void (APIENTRY * PFNGLMULTITEXCOORD2DVARBPROC) (GLenum target, const GLdouble *v);
+typedef void (APIENTRY * PFNGLMULTITEXCOORD2FARBPROC) (GLenum target, GLfloat s, GLfloat t);
+typedef void (APIENTRY * PFNGLMULTITEXCOORD2FVARBPROC) (GLenum target, const GLfloat *v);
+typedef void (APIENTRY * PFNGLMULTITEXCOORD2IARBPROC) (GLenum target, GLint s, GLint t);
+typedef void (APIENTRY * PFNGLMULTITEXCOORD2IVARBPROC) (GLenum target, const GLint *v);
+typedef void (APIENTRY * PFNGLMULTITEXCOORD2SARBPROC) (GLenum target, GLshort s, GLshort t);
+typedef void (APIENTRY * PFNGLMULTITEXCOORD2SVARBPROC) (GLenum target, const GLshort *v);
+typedef void (APIENTRY * PFNGLMULTITEXCOORD3DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r);
+typedef void (APIENTRY * PFNGLMULTITEXCOORD3DVARBPROC) (GLenum target, const GLdouble *v);
+typedef void (APIENTRY * PFNGLMULTITEXCOORD3FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r);
+typedef void (APIENTRY * PFNGLMULTITEXCOORD3FVARBPROC) (GLenum target, const GLfloat *v);
+typedef void (APIENTRY * PFNGLMULTITEXCOORD3IARBPROC) (GLenum target, GLint s, GLint t, GLint r);
+typedef void (APIENTRY * PFNGLMULTITEXCOORD3IVARBPROC) (GLenum target, const GLint *v);
+typedef void (APIENTRY * PFNGLMULTITEXCOORD3SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r);
+typedef void (APIENTRY * PFNGLMULTITEXCOORD3SVARBPROC) (GLenum target, const GLshort *v);
+typedef void (APIENTRY * PFNGLMULTITEXCOORD4DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q);
+typedef void (APIENTRY * PFNGLMULTITEXCOORD4DVARBPROC) (GLenum target, const GLdouble *v);
+typedef void (APIENTRY * PFNGLMULTITEXCOORD4FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);
+typedef void (APIENTRY * PFNGLMULTITEXCOORD4FVARBPROC) (GLenum target, const GLfloat *v);
+typedef void (APIENTRY * PFNGLMULTITEXCOORD4IARBPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q);
+typedef void (APIENTRY * PFNGLMULTITEXCOORD4IVARBPROC) (GLenum target, const GLint *v);
+typedef void (APIENTRY * PFNGLMULTITEXCOORD4SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q);
+typedef void (APIENTRY * PFNGLMULTITEXCOORD4SVARBPROC) (GLenum target, const GLshort *v);
+#endif
+
+#ifndef GL_ARB_transpose_matrix
+#define GL_ARB_transpose_matrix 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glLoadTransposeMatrixfARB (const GLfloat *);
+GLAPI void APIENTRY glLoadTransposeMatrixdARB (const GLdouble *);
+GLAPI void APIENTRY glMultTransposeMatrixfARB (const GLfloat *);
+GLAPI void APIENTRY glMultTransposeMatrixdARB (const GLdouble *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRY * PFNGLLOADTRANSPOSEMATRIXFARBPROC) (const GLfloat *m);
+typedef void (APIENTRY * PFNGLLOADTRANSPOSEMATRIXDARBPROC) (const GLdouble *m);
+typedef void (APIENTRY * PFNGLMULTTRANSPOSEMATRIXFARBPROC) (const GLfloat *m);
+typedef void (APIENTRY * PFNGLMULTTRANSPOSEMATRIXDARBPROC) (const GLdouble *m);
+#endif
+
+#ifndef GL_ARB_multisample
+#define GL_ARB_multisample 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glSampleCoverageARB (GLclampf, GLboolean);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRY * PFNGLSAMPLECOVERAGEARBPROC) (GLclampf value, GLboolean invert);
+#endif
+
+#ifndef GL_ARB_texture_env_add
+#define GL_ARB_texture_env_add 1
+#endif
+
+#ifndef GL_ARB_texture_cube_map
+#define GL_ARB_texture_cube_map 1
+#endif
+
+#ifndef GL_ARB_texture_compression
+#define GL_ARB_texture_compression 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glCompressedTexImage3DARB (GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *);
+GLAPI void APIENTRY glCompressedTexImage2DARB (GLenum, GLint, GLenum, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *);
+GLAPI void APIENTRY glCompressedTexImage1DARB (GLenum, GLint, GLenum, GLsizei, GLint, GLsizei, const GLvoid *);
+GLAPI void APIENTRY glCompressedTexSubImage3DARB (GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *);
+GLAPI void APIENTRY glCompressedTexSubImage2DARB (GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *);
+GLAPI void APIENTRY glCompressedTexSubImage1DARB (GLenum, GLint, GLint, GLsizei, GLenum, GLsizei, const GLvoid *);
+GLAPI void APIENTRY glGetCompressedTexImageARB (GLenum, GLint, void *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRY * PFNGLCOMPRESSEDTEXIMAGE3DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data);
+typedef void (APIENTRY * PFNGLCOMPRESSEDTEXIMAGE2DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data);
+typedef void (APIENTRY * PFNGLCOMPRESSEDTEXIMAGE1DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data);
+typedef void (APIENTRY * PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data);
+typedef void (APIENTRY * PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data);
+typedef void (APIENTRY * PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data);
+typedef void (APIENTRY * PFNGLGETCOMPRESSEDTEXIMAGEARBPROC) (GLenum target, GLint level, void *img);
+#endif
+
+#ifndef GL_ARB_texture_border_clamp
+#define GL_ARB_texture_border_clamp 1
+#endif
+
+#ifndef GL_ARB_point_parameters
+#define GL_ARB_point_parameters 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glPointParameterfARB (GLenum, GLfloat);
+GLAPI void APIENTRY glPointParameterfvARB (GLenum, const GLfloat *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRY * PFNGLPOINTPARAMETERFARBPROC) (GLenum pname, GLfloat param);
+typedef void (APIENTRY * PFNGLPOINTPARAMETERFVARBPROC) (GLenum pname, const GLfloat *params);
+#endif
+
+#ifndef GL_ARB_vertex_blend
+#define GL_ARB_vertex_blend 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glWeightbvARB (GLint, const GLbyte *);
+GLAPI void APIENTRY glWeightsvARB (GLint, const GLshort *);
+GLAPI void APIENTRY glWeightivARB (GLint, const GLint *);
+GLAPI void APIENTRY glWeightfvARB (GLint, const GLfloat *);
+GLAPI void APIENTRY glWeightdvARB (GLint, const GLdouble *);
+GLAPI void APIENTRY glWeightubvARB (GLint, const GLubyte *);
+GLAPI void APIENTRY glWeightusvARB (GLint, const GLushort *);
+GLAPI void APIENTRY glWeightuivARB (GLint, const GLuint *);
+GLAPI void APIENTRY glWeightPointerARB (GLint, GLenum, GLsizei, const GLvoid *);
+GLAPI void APIENTRY glVertexBlendARB (GLint);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRY * PFNGLWEIGHTBVARBPROC) (GLint size, const GLbyte *weights);
+typedef void (APIENTRY * PFNGLWEIGHTSVARBPROC) (GLint size, const GLshort *weights);
+typedef void (APIENTRY * PFNGLWEIGHTIVARBPROC) (GLint size, const GLint *weights);
+typedef void (APIENTRY * PFNGLWEIGHTFVARBPROC) (GLint size, const GLfloat *weights);
+typedef void (APIENTRY * PFNGLWEIGHTDVARBPROC) (GLint size, const GLdouble *weights);
+typedef void (APIENTRY * PFNGLWEIGHTUBVARBPROC) (GLint size, const GLubyte *weights);
+typedef void (APIENTRY * PFNGLWEIGHTUSVARBPROC) (GLint size, const GLushort *weights);
+typedef void (APIENTRY * PFNGLWEIGHTUIVARBPROC) (GLint size, const GLuint *weights);
+typedef void (APIENTRY * PFNGLWEIGHTPOINTERARBPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
+typedef void (APIENTRY * PFNGLVERTEXBLENDARBPROC) (GLint count);
+#endif
+
+#ifndef GL_ARB_matrix_palette
+#define GL_ARB_matrix_palette 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glCurrentPaletteMatrixARB (GLint);
+GLAPI void APIENTRY glMatrixIndexubvARB (GLint, const GLubyte *);
+GLAPI void APIENTRY glMatrixIndexusvARB (GLint, const GLushort *);
+GLAPI void APIENTRY glMatrixIndexuivARB (GLint, const GLuint *);
+GLAPI void APIENTRY glMatrixIndexPointerARB (GLint, GLenum, GLsizei, const GLvoid *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRY * PFNGLCURRENTPALETTEMATRIXARBPROC) (GLint index);
+typedef void (APIENTRY * PFNGLMATRIXINDEXUBVARBPROC) (GLint size, const GLubyte *indices);
+typedef void (APIENTRY * PFNGLMATRIXINDEXUSVARBPROC) (GLint size, const GLushort *indices);
+typedef void (APIENTRY * PFNGLMATRIXINDEXUIVARBPROC) (GLint size, const GLuint *indices);
+typedef void (APIENTRY * PFNGLMATRIXINDEXPOINTERARBPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
+#endif
+
+#ifndef GL_ARB_texture_env_combine
+#define GL_ARB_texture_env_combine 1
+#endif
+
+#ifndef GL_ARB_texture_env_crossbar
+#define GL_ARB_texture_env_crossbar 1
+#endif
+
+#ifndef GL_ARB_texture_env_dot3
+#define GL_ARB_texture_env_dot3 1
+#endif
+
+#ifndef GL_ARB_texture_mirror_repeat
+#define GL_ARB_texture_mirror_repeat 1
+#endif
+
+#ifndef GL_ARB_depth_texture
+#define GL_ARB_depth_texture 1
+#endif
+
+#ifndef GL_ARB_shadow
+#define GL_ARB_shadow 1
+#endif
+
+#ifndef GL_ARB_shadow_ambient
+#define GL_ARB_shadow_ambient 1
+#endif
+
+#ifndef GL_ARB_window_pos
+#define GL_ARB_window_pos 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glWindowPos2dARB (GLdouble, GLdouble);
+GLAPI void APIENTRY glWindowPos2dvARB (const GLdouble *);
+GLAPI void APIENTRY glWindowPos2fARB (GLfloat, GLfloat);
+GLAPI void APIENTRY glWindowPos2fvARB (const GLfloat *);
+GLAPI void APIENTRY glWindowPos2iARB (GLint, GLint);
+GLAPI void APIENTRY glWindowPos2ivARB (const GLint *);
+GLAPI void APIENTRY glWindowPos2sARB (GLshort, GLshort);
+GLAPI void APIENTRY glWindowPos2svARB (const GLshort *);
+GLAPI void APIENTRY glWindowPos3dARB (GLdouble, GLdouble, GLdouble);
+GLAPI void APIENTRY glWindowPos3dvARB (const GLdouble *);
+GLAPI void APIENTRY glWindowPos3fARB (GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glWindowPos3fvARB (const GLfloat *);
+GLAPI void APIENTRY glWindowPos3iARB (GLint, GLint, GLint);
+GLAPI void APIENTRY glWindowPos3ivARB (const GLint *);
+GLAPI void APIENTRY glWindowPos3sARB (GLshort, GLshort, GLshort);
+GLAPI void APIENTRY glWindowPos3svARB (const GLshort *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRY * PFNGLWINDOWPOS2DARBPROC) (GLdouble x, GLdouble y);
+typedef void (APIENTRY * PFNGLWINDOWPOS2DVARBPROC) (const GLdouble *v);
+typedef void (APIENTRY * PFNGLWINDOWPOS2FARBPROC) (GLfloat x, GLfloat y);
+typedef void (APIENTRY * PFNGLWINDOWPOS2FVARBPROC) (const GLfloat *v);
+typedef void (APIENTRY * PFNGLWINDOWPOS2IARBPROC) (GLint x, GLint y);
+typedef void (APIENTRY * PFNGLWINDOWPOS2IVARBPROC) (const GLint *v);
+typedef void (APIENTRY * PFNGLWINDOWPOS2SARBPROC) (GLshort x, GLshort y);
+typedef void (APIENTRY * PFNGLWINDOWPOS2SVARBPROC) (const GLshort *v);
+typedef void (APIENTRY * PFNGLWINDOWPOS3DARBPROC) (GLdouble x, GLdouble y, GLdouble z);
+typedef void (APIENTRY * PFNGLWINDOWPOS3DVARBPROC) (const GLdouble *v);
+typedef void (APIENTRY * PFNGLWINDOWPOS3FARBPROC) (GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRY * PFNGLWINDOWPOS3FVARBPROC) (const GLfloat *v);
+typedef void (APIENTRY * PFNGLWINDOWPOS3IARBPROC) (GLint x, GLint y, GLint z);
+typedef void (APIENTRY * PFNGLWINDOWPOS3IVARBPROC) (const GLint *v);
+typedef void (APIENTRY * PFNGLWINDOWPOS3SARBPROC) (GLshort x, GLshort y, GLshort z);
+typedef void (APIENTRY * PFNGLWINDOWPOS3SVARBPROC) (const GLshort *v);
+#endif
+
+#ifndef GL_EXT_abgr
+#define GL_EXT_abgr 1
+#endif
+
+#ifndef GL_EXT_blend_color
+#define GL_EXT_blend_color 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glBlendColorEXT (GLclampf, GLclampf, GLclampf, GLclampf);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRY * PFNGLBLENDCOLOREXTPROC) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
+#endif
+
+#ifndef GL_EXT_polygon_offset
+#define GL_EXT_polygon_offset 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glPolygonOffsetEXT (GLfloat, GLfloat);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRY * PFNGLPOLYGONOFFSETEXTPROC) (GLfloat factor, GLfloat bias);
+#endif
+
+#ifndef GL_EXT_texture
+#define GL_EXT_texture 1
+#endif
+
+#ifndef GL_EXT_texture3D
+#define GL_EXT_texture3D 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glTexImage3DEXT (GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *);
+GLAPI void APIENTRY glTexSubImage3DEXT (GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRY * PFNGLTEXIMAGE3DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
+typedef void (APIENTRY * PFNGLTEXSUBIMAGE3DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels);
+#endif
+
+#ifndef GL_SGIS_texture_filter4
+#define GL_SGIS_texture_filter4 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glGetTexFilterFuncSGIS (GLenum, GLenum, GLfloat *);
+GLAPI void APIENTRY glTexFilterFuncSGIS (GLenum, GLenum, GLsizei, const GLfloat *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRY * PFNGLGETTEXFILTERFUNCSGISPROC) (GLenum target, GLenum filter, GLfloat *weights);
+typedef void (APIENTRY * PFNGLTEXFILTERFUNCSGISPROC) (GLenum target, GLenum filter, GLsizei n, const GLfloat *weights);
+#endif
+
+#ifndef GL_EXT_subtexture
+#define GL_EXT_subtexture 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glTexSubImage1DEXT (GLenum, GLint, GLint, GLsizei, GLenum, GLenum, const GLvoid *);
+GLAPI void APIENTRY glTexSubImage2DEXT (GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRY * PFNGLTEXSUBIMAGE1DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels);
+typedef void (APIENTRY * PFNGLTEXSUBIMAGE2DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels);
+#endif
+
+#ifndef GL_EXT_copy_texture
+#define GL_EXT_copy_texture 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glCopyTexImage1DEXT (GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLint);
+GLAPI void APIENTRY glCopyTexImage2DEXT (GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLsizei, GLint);
+GLAPI void APIENTRY glCopyTexSubImage1DEXT (GLenum, GLint, GLint, GLint, GLint, GLsizei);
+GLAPI void APIENTRY glCopyTexSubImage2DEXT (GLenum, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei);
+GLAPI void APIENTRY glCopyTexSubImage3DEXT (GLenum, GLint, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRY * PFNGLCOPYTEXIMAGE1DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
+typedef void (APIENTRY * PFNGLCOPYTEXIMAGE2DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
+typedef void (APIENTRY * PFNGLCOPYTEXSUBIMAGE1DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
+typedef void (APIENTRY * PFNGLCOPYTEXSUBIMAGE2DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+typedef void (APIENTRY * PFNGLCOPYTEXSUBIMAGE3DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+#endif
+
+#ifndef GL_EXT_histogram
+#define GL_EXT_histogram 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glGetHistogramEXT (GLenum, GLboolean, GLenum, GLenum, GLvoid *);
+GLAPI void APIENTRY glGetHistogramParameterfvEXT (GLenum, GLenum, GLfloat *);
+GLAPI void APIENTRY glGetHistogramParameterivEXT (GLenum, GLenum, GLint *);
+GLAPI void APIENTRY glGetMinmaxEXT (GLenum, GLboolean, GLenum, GLenum, GLvoid *);
+GLAPI void APIENTRY glGetMinmaxParameterfvEXT (GLenum, GLenum, GLfloat *);
+GLAPI void APIENTRY glGetMinmaxParameterivEXT (GLenum, GLenum, GLint *);
+GLAPI void APIENTRY glHistogramEXT (GLenum, GLsizei, GLenum, GLboolean);
+GLAPI void APIENTRY glMinmaxEXT (GLenum, GLenum, GLboolean);
+GLAPI void APIENTRY glResetHistogramEXT (GLenum);
+GLAPI void APIENTRY glResetMinmaxEXT (GLenum);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRY * PFNGLGETHISTOGRAMEXTPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values);
+typedef void (APIENTRY * PFNGLGETHISTOGRAMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params);
+typedef void (APIENTRY * PFNGLGETHISTOGRAMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params);
+typedef void (APIENTRY * PFNGLGETMINMAXEXTPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values);
+typedef void (APIENTRY * PFNGLGETMINMAXPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params);
+typedef void (APIENTRY * PFNGLGETMINMAXPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params);
+typedef void (APIENTRY * PFNGLHISTOGRAMEXTPROC) (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink);
+typedef void (APIENTRY * PFNGLMINMAXEXTPROC) (GLenum target, GLenum internalformat, GLboolean sink);
+typedef void (APIENTRY * PFNGLRESETHISTOGRAMEXTPROC) (GLenum target);
+typedef void (APIENTRY * PFNGLRESETMINMAXEXTPROC) (GLenum target);
+#endif
+
+#ifndef GL_EXT_convolution
+#define GL_EXT_convolution 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glConvolutionFilter1DEXT (GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *);
+GLAPI void APIENTRY glConvolutionFilter2DEXT (GLenum, GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);
+GLAPI void APIENTRY glConvolutionParameterfEXT (GLenum, GLenum, GLfloat);
+GLAPI void APIENTRY glConvolutionParameterfvEXT (GLenum, GLenum, const GLfloat *);
+GLAPI void APIENTRY glConvolutionParameteriEXT (GLenum, GLenum, GLint);
+GLAPI void APIENTRY glConvolutionParameterivEXT (GLenum, GLenum, const GLint *);
+GLAPI void APIENTRY glCopyConvolutionFilter1DEXT (GLenum, GLenum, GLint, GLint, GLsizei);
+GLAPI void APIENTRY glCopyConvolutionFilter2DEXT (GLenum, GLenum, GLint, GLint, GLsizei, GLsizei);
+GLAPI void APIENTRY glGetConvolutionFilterEXT (GLenum, GLenum, GLenum, GLvoid *);
+GLAPI void APIENTRY glGetConvolutionParameterfvEXT (GLenum, GLenum, GLfloat *);
+GLAPI void APIENTRY glGetConvolutionParameterivEXT (GLenum, GLenum, GLint *);
+GLAPI void APIENTRY glGetSeparableFilterEXT (GLenum, GLenum, GLenum, GLvoid *, GLvoid *, GLvoid *);
+GLAPI void APIENTRY glSeparableFilter2DEXT (GLenum, GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *, const GLvoid *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRY * PFNGLCONVOLUTIONFILTER1DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image);
+typedef void (APIENTRY * PFNGLCONVOLUTIONFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image);
+typedef void (APIENTRY * PFNGLCONVOLUTIONPARAMETERFEXTPROC) (GLenum target, GLenum pname, GLfloat params);
+typedef void (APIENTRY * PFNGLCONVOLUTIONPARAMETERFVEXTPROC) (GLenum target, GLenum pname, const GLfloat *params);
+typedef void (APIENTRY * PFNGLCONVOLUTIONPARAMETERIEXTPROC) (GLenum target, GLenum pname, GLint params);
+typedef void (APIENTRY * PFNGLCONVOLUTIONPARAMETERIVEXTPROC) (GLenum target, GLenum pname, const GLint *params);
+typedef void (APIENTRY * PFNGLCOPYCONVOLUTIONFILTER1DEXTPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
+typedef void (APIENTRY * PFNGLCOPYCONVOLUTIONFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height);
+typedef void (APIENTRY * PFNGLGETCONVOLUTIONFILTEREXTPROC) (GLenum target, GLenum format, GLenum type, GLvoid *image);
+typedef void (APIENTRY * PFNGLGETCONVOLUTIONPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params);
+typedef void (APIENTRY * PFNGLGETCONVOLUTIONPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params);
+typedef void (APIENTRY * PFNGLGETSEPARABLEFILTEREXTPROC) (GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span);
+typedef void (APIENTRY * PFNGLSEPARABLEFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column);
+#endif
+
+#ifndef GL_EXT_color_matrix
+#define GL_EXT_color_matrix 1
+#endif
+
+#ifndef GL_SGI_color_table
+#define GL_SGI_color_table 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glColorTableSGI (GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *);
+GLAPI void APIENTRY glColorTableParameterfvSGI (GLenum, GLenum, const GLfloat *);
+GLAPI void APIENTRY glColorTableParameterivSGI (GLenum, GLenum, const GLint *);
+GLAPI void APIENTRY glCopyColorTableSGI (GLenum, GLenum, GLint, GLint, GLsizei);
+GLAPI void APIENTRY glGetColorTableSGI (GLenum, GLenum, GLenum, GLvoid *);
+GLAPI void APIENTRY glGetColorTableParameterfvSGI (GLenum, GLenum, GLfloat *);
+GLAPI void APIENTRY glGetColorTableParameterivSGI (GLenum, GLenum, GLint *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRY * PFNGLCOLORTABLESGIPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table);
+typedef void (APIENTRY * PFNGLCOLORTABLEPARAMETERFVSGIPROC) (GLenum target, GLenum pname, const GLfloat *params);
+typedef void (APIENTRY * PFNGLCOLORTABLEPARAMETERIVSGIPROC) (GLenum target, GLenum pname, const GLint *params);
+typedef void (APIENTRY * PFNGLCOPYCOLORTABLESGIPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
+typedef void (APIENTRY * PFNGLGETCOLORTABLESGIPROC) (GLenum target, GLenum format, GLenum type, GLvoid *table);
+typedef void (APIENTRY * PFNGLGETCOLORTABLEPARAMETERFVSGIPROC) (GLenum target, GLenum pname, GLfloat *params);
+typedef void (APIENTRY * PFNGLGETCOLORTABLEPARAMETERIVSGIPROC) (GLenum target, GLenum pname, GLint *params);
+#endif
+
+#ifndef GL_SGIX_pixel_texture
+#define GL_SGIX_pixel_texture 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glPixelTexGenSGIX (GLenum);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRY * PFNGLPIXELTEXGENSGIXPROC) (GLenum mode);
+#endif
+
+#ifndef GL_SGIS_pixel_texture
+#define GL_SGIS_pixel_texture 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glPixelTexGenParameteriSGIS (GLenum, GLint);
+GLAPI void APIENTRY glPixelTexGenParameterivSGIS (GLenum, const GLint *);
+GLAPI void APIENTRY glPixelTexGenParameterfSGIS (GLenum, GLfloat);
+GLAPI void APIENTRY glPixelTexGenParameterfvSGIS (GLenum, const GLfloat *);
+GLAPI void APIENTRY glGetPixelTexGenParameterivSGIS (GLenum, GLint *);
+GLAPI void APIENTRY glGetPixelTexGenParameterfvSGIS (GLenum, GLfloat *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRY * PFNGLPIXELTEXGENPARAMETERISGISPROC) (GLenum pname, GLint param);
+typedef void (APIENTRY * PFNGLPIXELTEXGENPARAMETERIVSGISPROC) (GLenum pname, const GLint *params);
+typedef void (APIENTRY * PFNGLPIXELTEXGENPARAMETERFSGISPROC) (GLenum pname, GLfloat param);
+typedef void (APIENTRY * PFNGLPIXELTEXGENPARAMETERFVSGISPROC) (GLenum pname, const GLfloat *params);
+typedef void (APIENTRY * PFNGLGETPIXELTEXGENPARAMETERIVSGISPROC) (GLenum pname, GLint *params);
+typedef void (APIENTRY * PFNGLGETPIXELTEXGENPARAMETERFVSGISPROC) (GLenum pname, GLfloat *params);
+#endif
+
+#ifndef GL_SGIS_texture4D
+#define GL_SGIS_texture4D 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glTexImage4DSGIS (GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *);
+GLAPI void APIENTRY glTexSubImage4DSGIS (GLenum, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRY * PFNGLTEXIMAGE4DSGISPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
+typedef void (APIENTRY * PFNGLTEXSUBIMAGE4DSGISPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint woffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLenum format, GLenum type, const GLvoid *pixels);
+#endif
+
+#ifndef GL_SGI_texture_color_table
+#define GL_SGI_texture_color_table 1
+#endif
+
+#ifndef GL_EXT_cmyka
+#define GL_EXT_cmyka 1
+#endif
+
+#ifndef GL_EXT_texture_object
+#define GL_EXT_texture_object 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI GLboolean APIENTRY glAreTexturesResidentEXT (GLsizei, const GLuint *, GLboolean *);
+GLAPI void APIENTRY glBindTextureEXT (GLenum, GLuint);
+GLAPI void APIENTRY glDeleteTexturesEXT (GLsizei, const GLuint *);
+GLAPI void APIENTRY glGenTexturesEXT (GLsizei, GLuint *);
+GLAPI GLboolean APIENTRY glIsTextureEXT (GLuint);
+GLAPI void APIENTRY glPrioritizeTexturesEXT (GLsizei, const GLuint *, const GLclampf *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef GLboolean (APIENTRY * PFNGLARETEXTURESRESIDENTEXTPROC) (GLsizei n, const GLuint *textures, GLboolean *residences);
+typedef void (APIENTRY * PFNGLBINDTEXTUREEXTPROC) (GLenum target, GLuint texture);
+typedef void (APIENTRY * PFNGLDELETETEXTURESEXTPROC) (GLsizei n, const GLuint *textures);
+typedef void (APIENTRY * PFNGLGENTEXTURESEXTPROC) (GLsizei n, GLuint *textures);
+typedef GLboolean (APIENTRY * PFNGLISTEXTUREEXTPROC) (GLuint texture);
+typedef void (APIENTRY * PFNGLPRIORITIZETEXTURESEXTPROC) (GLsizei n, const GLuint *textures, const GLclampf *priorities);
+#endif
+
+#ifndef GL_SGIS_detail_texture
+#define GL_SGIS_detail_texture 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glDetailTexFuncSGIS (GLenum, GLsizei, const GLfloat *);
+GLAPI void APIENTRY glGetDetailTexFuncSGIS (GLenum, GLfloat *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRY * PFNGLDETAILTEXFUNCSGISPROC) (GLenum target, GLsizei n, const GLfloat *points);
+typedef void (APIENTRY * PFNGLGETDETAILTEXFUNCSGISPROC) (GLenum target, GLfloat *points);
+#endif
+
+#ifndef GL_SGIS_sharpen_texture
+#define GL_SGIS_sharpen_texture 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glSharpenTexFuncSGIS (GLenum, GLsizei, const GLfloat *);
+GLAPI void APIENTRY glGetSharpenTexFuncSGIS (GLenum, GLfloat *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRY * PFNGLSHARPENTEXFUNCSGISPROC) (GLenum target, GLsizei n, const GLfloat *points);
+typedef void (APIENTRY * PFNGLGETSHARPENTEXFUNCSGISPROC) (GLenum target, GLfloat *points);
+#endif
+
+#ifndef GL_EXT_packed_pixels
+#define GL_EXT_packed_pixels 1
+#endif
+
+#ifndef GL_SGIS_texture_lod
+#define GL_SGIS_texture_lod 1
+#endif
+
+#ifndef GL_SGIS_multisample
+#define GL_SGIS_multisample 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glSampleMaskSGIS (GLclampf, GLboolean);
+GLAPI void APIENTRY glSamplePatternSGIS (GLenum);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRY * PFNGLSAMPLEMASKSGISPROC) (GLclampf value, GLboolean invert);
+typedef void (APIENTRY * PFNGLSAMPLEPATTERNSGISPROC) (GLenum pattern);
+#endif
+
+#ifndef GL_EXT_rescale_normal
+#define GL_EXT_rescale_normal 1
+#endif
+
+#ifndef GL_EXT_vertex_array
+#define GL_EXT_vertex_array 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glArrayElementEXT (GLint);
+GLAPI void APIENTRY glColorPointerEXT (GLint, GLenum, GLsizei, GLsizei, const GLvoid *);
+GLAPI void APIENTRY glDrawArraysEXT (GLenum, GLint, GLsizei);
+GLAPI void APIENTRY glEdgeFlagPointerEXT (GLsizei, GLsizei, const GLboolean *);
+GLAPI void APIENTRY glGetPointervEXT (GLenum, GLvoid* *);
+GLAPI void APIENTRY glIndexPointerEXT (GLenum, GLsizei, GLsizei, const GLvoid *);
+GLAPI void APIENTRY glNormalPointerEXT (GLenum, GLsizei, GLsizei, const GLvoid *);
+GLAPI void APIENTRY glTexCoordPointerEXT (GLint, GLenum, GLsizei, GLsizei, const GLvoid *);
+GLAPI void APIENTRY glVertexPointerEXT (GLint, GLenum, GLsizei, GLsizei, const GLvoid *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRY * PFNGLARRAYELEMENTEXTPROC) (GLint i);
+typedef void (APIENTRY * PFNGLCOLORPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer);
+typedef void (APIENTRY * PFNGLDRAWARRAYSEXTPROC) (GLenum mode, GLint first, GLsizei count);
+typedef void (APIENTRY * PFNGLEDGEFLAGPOINTEREXTPROC) (GLsizei stride, GLsizei count, const GLboolean *pointer);
+typedef void (APIENTRY * PFNGLGETPOINTERVEXTPROC) (GLenum pname, GLvoid* *params);
+typedef void (APIENTRY * PFNGLINDEXPOINTEREXTPROC) (GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer);
+typedef void (APIENTRY * PFNGLNORMALPOINTEREXTPROC) (GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer);
+typedef void (APIENTRY * PFNGLTEXCOORDPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer);
+typedef void (APIENTRY * PFNGLVERTEXPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer);
+#endif
+
+#ifndef GL_EXT_misc_attribute
+#define GL_EXT_misc_attribute 1
+#endif
+
+#ifndef GL_SGIS_generate_mipmap
+#define GL_SGIS_generate_mipmap 1
+#endif
+
+#ifndef GL_SGIX_clipmap
+#define GL_SGIX_clipmap 1
+#endif
+
+#ifndef GL_SGIX_shadow
+#define GL_SGIX_shadow 1
+#endif
+
+#ifndef GL_SGIS_texture_edge_clamp
+#define GL_SGIS_texture_edge_clamp 1
+#endif
+
+#ifndef GL_SGIS_texture_border_clamp
+#define GL_SGIS_texture_border_clamp 1
+#endif
+
+#ifndef GL_EXT_blend_minmax
+#define GL_EXT_blend_minmax 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glBlendEquationEXT (GLenum);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRY * PFNGLBLENDEQUATIONEXTPROC) (GLenum mode);
+#endif
+
+#ifndef GL_EXT_blend_subtract
+#define GL_EXT_blend_subtract 1
+#endif
+
+#ifndef GL_EXT_blend_logic_op
+#define GL_EXT_blend_logic_op 1
+#endif
+
+#ifndef GL_SGIX_interlace
+#define GL_SGIX_interlace 1
+#endif
+
+#ifndef GL_SGIX_pixel_tiles
+#define GL_SGIX_pixel_tiles 1
+#endif
+
+#ifndef GL_SGIX_texture_select
+#define GL_SGIX_texture_select 1
+#endif
+
+#ifndef GL_SGIX_sprite
+#define GL_SGIX_sprite 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glSpriteParameterfSGIX (GLenum, GLfloat);
+GLAPI void APIENTRY glSpriteParameterfvSGIX (GLenum, const GLfloat *);
+GLAPI void APIENTRY glSpriteParameteriSGIX (GLenum, GLint);
+GLAPI void APIENTRY glSpriteParameterivSGIX (GLenum, const GLint *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRY * PFNGLSPRITEPARAMETERFSGIXPROC) (GLenum pname, GLfloat param);
+typedef void (APIENTRY * PFNGLSPRITEPARAMETERFVSGIXPROC) (GLenum pname, const GLfloat *params);
+typedef void (APIENTRY * PFNGLSPRITEPARAMETERISGIXPROC) (GLenum pname, GLint param);
+typedef void (APIENTRY * PFNGLSPRITEPARAMETERIVSGIXPROC) (GLenum pname, const GLint *params);
+#endif
+
+#ifndef GL_SGIX_texture_multi_buffer
+#define GL_SGIX_texture_multi_buffer 1
+#endif
+
+#ifndef GL_EXT_point_parameters
+#define GL_EXT_point_parameters 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glPointParameterfEXT (GLenum, GLfloat);
+GLAPI void APIENTRY glPointParameterfvEXT (GLenum, const GLfloat *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRY * PFNGLPOINTPARAMETERFEXTPROC) (GLenum pname, GLfloat param);
+typedef void (APIENTRY * PFNGLPOINTPARAMETERFVEXTPROC) (GLenum pname, const GLfloat *params);
+#endif
+
+#ifndef GL_SGIS_point_parameters
+#define GL_SGIS_point_parameters 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glPointParameterfSGIS (GLenum, GLfloat);
+GLAPI void APIENTRY glPointParameterfvSGIS (GLenum, const GLfloat *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRY * PFNGLPOINTPARAMETERFSGISPROC) (GLenum pname, GLfloat param);
+typedef void (APIENTRY * PFNGLPOINTPARAMETERFVSGISPROC) (GLenum pname, const GLfloat *params);
+#endif
+
+#ifndef GL_SGIX_instruments
+#define GL_SGIX_instruments 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI GLint APIENTRY glGetInstrumentsSGIX (void);
+GLAPI void APIENTRY glInstrumentsBufferSGIX (GLsizei, GLint *);
+GLAPI GLint APIENTRY glPollInstrumentsSGIX (GLint *);
+GLAPI void APIENTRY glReadInstrumentsSGIX (GLint);
+GLAPI void APIENTRY glStartInstrumentsSGIX (void);
+GLAPI void APIENTRY glStopInstrumentsSGIX (GLint);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef GLint (APIENTRY * PFNGLGETINSTRUMENTSSGIXPROC) (void);
+typedef void (APIENTRY * PFNGLINSTRUMENTSBUFFERSGIXPROC) (GLsizei size, GLint *buffer);
+typedef GLint (APIENTRY * PFNGLPOLLINSTRUMENTSSGIXPROC) (GLint *marker_p);
+typedef void (APIENTRY * PFNGLREADINSTRUMENTSSGIXPROC) (GLint marker);
+typedef void (APIENTRY * PFNGLSTARTINSTRUMENTSSGIXPROC) (void);
+typedef void (APIENTRY * PFNGLSTOPINSTRUMENTSSGIXPROC) (GLint marker);
+#endif
+
+#ifndef GL_SGIX_texture_scale_bias
+#define GL_SGIX_texture_scale_bias 1
+#endif
+
+#ifndef GL_SGIX_framezoom
+#define GL_SGIX_framezoom 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glFrameZoomSGIX (GLint);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRY * PFNGLFRAMEZOOMSGIXPROC) (GLint factor);
+#endif
+
+#ifndef GL_SGIX_tag_sample_buffer
+#define GL_SGIX_tag_sample_buffer 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glTagSampleBufferSGIX (void);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRY * PFNGLTAGSAMPLEBUFFERSGIXPROC) (void);
+#endif
+
+#ifndef GL_SGIX_polynomial_ffd
+#define GL_SGIX_polynomial_ffd 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glDeformationMap3dSGIX (GLenum, GLdouble, GLdouble, GLint, GLint, GLdouble, GLdouble, GLint, GLint, GLdouble, GLdouble, GLint, GLint, const GLdouble *);
+GLAPI void APIENTRY glDeformationMap3fSGIX (GLenum, GLfloat, GLfloat, GLint, GLint, GLfloat, GLfloat, GLint, GLint, GLfloat, GLfloat, GLint, GLint, const GLfloat *);
+GLAPI void APIENTRY glDeformSGIX (GLbitfield);
+GLAPI void APIENTRY glLoadIdentityDeformationMapSGIX (GLbitfield);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRY * PFNGLDEFORMATIONMAP3DSGIXPROC) (GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, GLdouble w1, GLdouble w2, GLint wstride, GLint worder, const GLdouble *points);
+typedef void (APIENTRY * PFNGLDEFORMATIONMAP3FSGIXPROC) (GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, GLfloat w1, GLfloat w2, GLint wstride, GLint worder, const GLfloat *points);
+typedef void (APIENTRY * PFNGLDEFORMSGIXPROC) (GLbitfield mask);
+typedef void (APIENTRY * PFNGLLOADIDENTITYDEFORMATIONMAPSGIXPROC) (GLbitfield mask);
+#endif
+
+#ifndef GL_SGIX_reference_plane
+#define GL_SGIX_reference_plane 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glReferencePlaneSGIX (const GLdouble *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRY * PFNGLREFERENCEPLANESGIXPROC) (const GLdouble *equation);
+#endif
+
+#ifndef GL_SGIX_flush_raster
+#define GL_SGIX_flush_raster 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glFlushRasterSGIX (void);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRY * PFNGLFLUSHRASTERSGIXPROC) (void);
+#endif
+
+#ifndef GL_SGIX_depth_texture
+#define GL_SGIX_depth_texture 1
+#endif
+
+#ifndef GL_SGIS_fog_function
+#define GL_SGIS_fog_function 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glFogFuncSGIS (GLsizei, const GLfloat *);
+GLAPI void APIENTRY glGetFogFuncSGIS (GLfloat *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRY * PFNGLFOGFUNCSGISPROC) (GLsizei n, const GLfloat *points);
+typedef void (APIENTRY * PFNGLGETFOGFUNCSGISPROC) (GLfloat *points);
+#endif
+
+#ifndef GL_SGIX_fog_offset
+#define GL_SGIX_fog_offset 1
+#endif
+
+#ifndef GL_HP_image_transform
+#define GL_HP_image_transform 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glImageTransformParameteriHP (GLenum, GLenum, GLint);
+GLAPI void APIENTRY glImageTransformParameterfHP (GLenum, GLenum, GLfloat);
+GLAPI void APIENTRY glImageTransformParameterivHP (GLenum, GLenum, const GLint *);
+GLAPI void APIENTRY glImageTransformParameterfvHP (GLenum, GLenum, const GLfloat *);
+GLAPI void APIENTRY glGetImageTransformParameterivHP (GLenum, GLenum, GLint *);
+GLAPI void APIENTRY glGetImageTransformParameterfvHP (GLenum, GLenum, GLfloat *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRY * PFNGLIMAGETRANSFORMPARAMETERIHPPROC) (GLenum target, GLenum pname, GLint param);
+typedef void (APIENTRY * PFNGLIMAGETRANSFORMPARAMETERFHPPROC) (GLenum target, GLenum pname, GLfloat param);
+typedef void (APIENTRY * PFNGLIMAGETRANSFORMPARAMETERIVHPPROC) (GLenum target, GLenum pname, const GLint *params);
+typedef void (APIENTRY * PFNGLIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, GLenum pname, const GLfloat *params);
+typedef void (APIENTRY * PFNGLGETIMAGETRANSFORMPARAMETERIVHPPROC) (GLenum target, GLenum pname, GLint *params);
+typedef void (APIENTRY * PFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, GLenum pname, GLfloat *params);
+#endif
+
+#ifndef GL_HP_convolution_border_modes
+#define GL_HP_convolution_border_modes 1
+#endif
+
+#ifndef GL_SGIX_texture_add_env
+#define GL_SGIX_texture_add_env 1
+#endif
+
+#ifndef GL_EXT_color_subtable
+#define GL_EXT_color_subtable 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glColorSubTableEXT (GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);
+GLAPI void APIENTRY glCopyColorSubTableEXT (GLenum, GLsizei, GLint, GLint, GLsizei);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRY * PFNGLCOLORSUBTABLEEXTPROC) (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data);
+typedef void (APIENTRY * PFNGLCOPYCOLORSUBTABLEEXTPROC) (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width);
+#endif
+
+#ifndef GL_PGI_vertex_hints
+#define GL_PGI_vertex_hints 1
+#endif
+
+#ifndef GL_PGI_misc_hints
+#define GL_PGI_misc_hints 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glHintPGI (GLenum, GLint);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRY * PFNGLHINTPGIPROC) (GLenum target, GLint mode);
+#endif
+
+#ifndef GL_EXT_paletted_texture
+#define GL_EXT_paletted_texture 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glColorTableEXT (GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *);
+GLAPI void APIENTRY glGetColorTableEXT (GLenum, GLenum, GLenum, GLvoid *);
+GLAPI void APIENTRY glGetColorTableParameterivEXT (GLenum, GLenum, GLint *);
+GLAPI void APIENTRY glGetColorTableParameterfvEXT (GLenum, GLenum, GLfloat *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRY * PFNGLCOLORTABLEEXTPROC) (GLenum target, GLenum internalFormat, GLsizei width, GLenum format, GLenum type, const GLvoid *table);
+typedef void (APIENTRY * PFNGLGETCOLORTABLEEXTPROC) (GLenum target, GLenum format, GLenum type, GLvoid *data);
+typedef void (APIENTRY * PFNGLGETCOLORTABLEPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params);
+typedef void (APIENTRY * PFNGLGETCOLORTABLEPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params);
+#endif
+
+#ifndef GL_EXT_clip_volume_hint
+#define GL_EXT_clip_volume_hint 1
+#endif
+
+#ifndef GL_SGIX_list_priority
+#define GL_SGIX_list_priority 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glGetListParameterfvSGIX (GLuint, GLenum, GLfloat *);
+GLAPI void APIENTRY glGetListParameterivSGIX (GLuint, GLenum, GLint *);
+GLAPI void APIENTRY glListParameterfSGIX (GLuint, GLenum, GLfloat);
+GLAPI void APIENTRY glListParameterfvSGIX (GLuint, GLenum, const GLfloat *);
+GLAPI void APIENTRY glListParameteriSGIX (GLuint, GLenum, GLint);
+GLAPI void APIENTRY glListParameterivSGIX (GLuint, GLenum, const GLint *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRY * PFNGLGETLISTPARAMETERFVSGIXPROC) (GLuint list, GLenum pname, GLfloat *params);
+typedef void (APIENTRY * PFNGLGETLISTPARAMETERIVSGIXPROC) (GLuint list, GLenum pname, GLint *params);
+typedef void (APIENTRY * PFNGLLISTPARAMETERFSGIXPROC) (GLuint list, GLenum pname, GLfloat param);
+typedef void (APIENTRY * PFNGLLISTPARAMETERFVSGIXPROC) (GLuint list, GLenum pname, const GLfloat *params);
+typedef void (APIENTRY * PFNGLLISTPARAMETERISGIXPROC) (GLuint list, GLenum pname, GLint param);
+typedef void (APIENTRY * PFNGLLISTPARAMETERIVSGIXPROC) (GLuint list, GLenum pname, const GLint *params);
+#endif
+
+#ifndef GL_SGIX_ir_instrument1
+#define GL_SGIX_ir_instrument1 1
+#endif
+
+#ifndef GL_SGIX_calligraphic_fragment
+#define GL_SGIX_calligraphic_fragment 1
+#endif
+
+#ifndef GL_SGIX_texture_lod_bias
+#define GL_SGIX_texture_lod_bias 1
+#endif
+
+#ifndef GL_SGIX_shadow_ambient
+#define GL_SGIX_shadow_ambient 1
+#endif
+
+#ifndef GL_EXT_index_texture
+#define GL_EXT_index_texture 1
+#endif
+
+#ifndef GL_EXT_index_material
+#define GL_EXT_index_material 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glIndexMaterialEXT (GLenum, GLenum);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRY * PFNGLINDEXMATERIALEXTPROC) (GLenum face, GLenum mode);
+#endif
+
+#ifndef GL_EXT_index_func
+#define GL_EXT_index_func 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glIndexFuncEXT (GLenum, GLclampf);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRY * PFNGLINDEXFUNCEXTPROC) (GLenum func, GLclampf ref);
+#endif
+
+#ifndef GL_EXT_index_array_formats
+#define GL_EXT_index_array_formats 1
+#endif
+
+#ifndef GL_EXT_compiled_vertex_array
+#define GL_EXT_compiled_vertex_array 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glLockArraysEXT (GLint, GLsizei);
+GLAPI void APIENTRY glUnlockArraysEXT (void);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRY * PFNGLLOCKARRAYSEXTPROC) (GLint first, GLsizei count);
+typedef void (APIENTRY * PFNGLUNLOCKARRAYSEXTPROC) (void);
+#endif
+
+#ifndef GL_EXT_cull_vertex
+#define GL_EXT_cull_vertex 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glCullParameterdvEXT (GLenum, GLdouble *);
+GLAPI void APIENTRY glCullParameterfvEXT (GLenum, GLfloat *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRY * PFNGLCULLPARAMETERDVEXTPROC) (GLenum pname, GLdouble *params);
+typedef void (APIENTRY * PFNGLCULLPARAMETERFVEXTPROC) (GLenum pname, GLfloat *params);
+#endif
+
+#ifndef GL_SGIX_ycrcb
+#define GL_SGIX_ycrcb 1
+#endif
+
+#ifndef GL_SGIX_fragment_lighting
+#define GL_SGIX_fragment_lighting 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glFragmentColorMaterialSGIX (GLenum, GLenum);
+GLAPI void APIENTRY glFragmentLightfSGIX (GLenum, GLenum, GLfloat);
+GLAPI void APIENTRY glFragmentLightfvSGIX (GLenum, GLenum, const GLfloat *);
+GLAPI void APIENTRY glFragmentLightiSGIX (GLenum, GLenum, GLint);
+GLAPI void APIENTRY glFragmentLightivSGIX (GLenum, GLenum, const GLint *);
+GLAPI void APIENTRY glFragmentLightModelfSGIX (GLenum, GLfloat);
+GLAPI void APIENTRY glFragmentLightModelfvSGIX (GLenum, const GLfloat *);
+GLAPI void APIENTRY glFragmentLightModeliSGIX (GLenum, GLint);
+GLAPI void APIENTRY glFragmentLightModelivSGIX (GLenum, const GLint *);
+GLAPI void APIENTRY glFragmentMaterialfSGIX (GLenum, GLenum, GLfloat);
+GLAPI void APIENTRY glFragmentMaterialfvSGIX (GLenum, GLenum, const GLfloat *);
+GLAPI void APIENTRY glFragmentMaterialiSGIX (GLenum, GLenum, GLint);
+GLAPI void APIENTRY glFragmentMaterialivSGIX (GLenum, GLenum, const GLint *);
+GLAPI void APIENTRY glGetFragmentLightfvSGIX (GLenum, GLenum, GLfloat *);
+GLAPI void APIENTRY glGetFragmentLightivSGIX (GLenum, GLenum, GLint *);
+GLAPI void APIENTRY glGetFragmentMaterialfvSGIX (GLenum, GLenum, GLfloat *);
+GLAPI void APIENTRY glGetFragmentMaterialivSGIX (GLenum, GLenum, GLint *);
+GLAPI void APIENTRY glLightEnviSGIX (GLenum, GLint);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRY * PFNGLFRAGMENTCOLORMATERIALSGIXPROC) (GLenum face, GLenum mode);
+typedef void (APIENTRY * PFNGLFRAGMENTLIGHTFSGIXPROC) (GLenum light, GLenum pname, GLfloat param);
+typedef void (APIENTRY * PFNGLFRAGMENTLIGHTFVSGIXPROC) (GLenum light, GLenum pname, const GLfloat *params);
+typedef void (APIENTRY * PFNGLFRAGMENTLIGHTISGIXPROC) (GLenum light, GLenum pname, GLint param);
+typedef void (APIENTRY * PFNGLFRAGMENTLIGHTIVSGIXPROC) (GLenum light, GLenum pname, const GLint *params);
+typedef void (APIENTRY * PFNGLFRAGMENTLIGHTMODELFSGIXPROC) (GLenum pname, GLfloat param);
+typedef void (APIENTRY * PFNGLFRAGMENTLIGHTMODELFVSGIXPROC) (GLenum pname, const GLfloat *params);
+typedef void (APIENTRY * PFNGLFRAGMENTLIGHTMODELISGIXPROC) (GLenum pname, GLint param);
+typedef void (APIENTRY * PFNGLFRAGMENTLIGHTMODELIVSGIXPROC) (GLenum pname, const GLint *params);
+typedef void (APIENTRY * PFNGLFRAGMENTMATERIALFSGIXPROC) (GLenum face, GLenum pname, GLfloat param);
+typedef void (APIENTRY * PFNGLFRAGMENTMATERIALFVSGIXPROC) (GLenum face, GLenum pname, const GLfloat *params);
+typedef void (APIENTRY * PFNGLFRAGMENTMATERIALISGIXPROC) (GLenum face, GLenum pname, GLint param);
+typedef void (APIENTRY * PFNGLFRAGMENTMATERIALIVSGIXPROC) (GLenum face, GLenum pname, const GLint *params);
+typedef void (APIENTRY * PFNGLGETFRAGMENTLIGHTFVSGIXPROC) (GLenum light, GLenum pname, GLfloat *params);
+typedef void (APIENTRY * PFNGLGETFRAGMENTLIGHTIVSGIXPROC) (GLenum light, GLenum pname, GLint *params);
+typedef void (APIENTRY * PFNGLGETFRAGMENTMATERIALFVSGIXPROC) (GLenum face, GLenum pname, GLfloat *params);
+typedef void (APIENTRY * PFNGLGETFRAGMENTMATERIALIVSGIXPROC) (GLenum face, GLenum pname, GLint *params);
+typedef void (APIENTRY * PFNGLLIGHTENVISGIXPROC) (GLenum pname, GLint param);
+#endif
+
+#ifndef GL_IBM_rasterpos_clip
+#define GL_IBM_rasterpos_clip 1
+#endif
+
+#ifndef GL_HP_texture_lighting
+#define GL_HP_texture_lighting 1
+#endif
+
+#ifndef GL_EXT_draw_range_elements
+#define GL_EXT_draw_range_elements 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glDrawRangeElementsEXT (GLenum, GLuint, GLuint, GLsizei, GLenum, const GLvoid *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRY * PFNGLDRAWRANGEELEMENTSEXTPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices);
+#endif
+
+#ifndef GL_WIN_phong_shading
+#define GL_WIN_phong_shading 1
+#endif
+
+#ifndef GL_WIN_specular_fog
+#define GL_WIN_specular_fog 1
+#endif
+
+#ifndef GL_EXT_light_texture
+#define GL_EXT_light_texture 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glApplyTextureEXT (GLenum);
+GLAPI void APIENTRY glTextureLightEXT (GLenum);
+GLAPI void APIENTRY glTextureMaterialEXT (GLenum, GLenum);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRY * PFNGLAPPLYTEXTUREEXTPROC) (GLenum mode);
+typedef void (APIENTRY * PFNGLTEXTURELIGHTEXTPROC) (GLenum pname);
+typedef void (APIENTRY * PFNGLTEXTUREMATERIALEXTPROC) (GLenum face, GLenum mode);
+#endif
+
+#ifndef GL_SGIX_blend_alpha_minmax
+#define GL_SGIX_blend_alpha_minmax 1
+#endif
+
+#ifndef GL_EXT_bgra
+#define GL_EXT_bgra 1
+#endif
+
+#ifndef GL_SGIX_async
+#define GL_SGIX_async 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glAsyncMarkerSGIX (GLuint);
+GLAPI GLint APIENTRY glFinishAsyncSGIX (GLuint *);
+GLAPI GLint APIENTRY glPollAsyncSGIX (GLuint *);
+GLAPI GLuint APIENTRY glGenAsyncMarkersSGIX (GLsizei);
+GLAPI void APIENTRY glDeleteAsyncMarkersSGIX (GLuint, GLsizei);
+GLAPI GLboolean APIENTRY glIsAsyncMarkerSGIX (GLuint);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRY * PFNGLASYNCMARKERSGIXPROC) (GLuint marker);
+typedef GLint (APIENTRY * PFNGLFINISHASYNCSGIXPROC) (GLuint *markerp);
+typedef GLint (APIENTRY * PFNGLPOLLASYNCSGIXPROC) (GLuint *markerp);
+typedef GLuint (APIENTRY * PFNGLGENASYNCMARKERSSGIXPROC) (GLsizei range);
+typedef void (APIENTRY * PFNGLDELETEASYNCMARKERSSGIXPROC) (GLuint marker, GLsizei range);
+typedef GLboolean (APIENTRY * PFNGLISASYNCMARKERSGIXPROC) (GLuint marker);
+#endif
+
+#ifndef GL_SGIX_async_pixel
+#define GL_SGIX_async_pixel 1
+#endif
+
+#ifndef GL_SGIX_async_histogram
+#define GL_SGIX_async_histogram 1
+#endif
+
+#ifndef GL_INTEL_parallel_arrays
+#define GL_INTEL_parallel_arrays 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glVertexPointervINTEL (GLint, GLenum, const GLvoid* *);
+GLAPI void APIENTRY glNormalPointervINTEL (GLenum, const GLvoid* *);
+GLAPI void APIENTRY glColorPointervINTEL (GLint, GLenum, const GLvoid* *);
+GLAPI void APIENTRY glTexCoordPointervINTEL (GLint, GLenum, const GLvoid* *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRY * PFNGLVERTEXPOINTERVINTELPROC) (GLint size, GLenum type, const GLvoid* *pointer);
+typedef void (APIENTRY * PFNGLNORMALPOINTERVINTELPROC) (GLenum type, const GLvoid* *pointer);
+typedef void (APIENTRY * PFNGLCOLORPOINTERVINTELPROC) (GLint size, GLenum type, const GLvoid* *pointer);
+typedef void (APIENTRY * PFNGLTEXCOORDPOINTERVINTELPROC) (GLint size, GLenum type, const GLvoid* *pointer);
+#endif
+
+#ifndef GL_HP_occlusion_test
+#define GL_HP_occlusion_test 1
+#endif
+
+#ifndef GL_EXT_pixel_transform
+#define GL_EXT_pixel_transform 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glPixelTransformParameteriEXT (GLenum, GLenum, GLint);
+GLAPI void APIENTRY glPixelTransformParameterfEXT (GLenum, GLenum, GLfloat);
+GLAPI void APIENTRY glPixelTransformParameterivEXT (GLenum, GLenum, const GLint *);
+GLAPI void APIENTRY glPixelTransformParameterfvEXT (GLenum, GLenum, const GLfloat *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRY * PFNGLPIXELTRANSFORMPARAMETERIEXTPROC) (GLenum target, GLenum pname, GLint param);
+typedef void (APIENTRY * PFNGLPIXELTRANSFORMPARAMETERFEXTPROC) (GLenum target, GLenum pname, GLfloat param);
+typedef void (APIENTRY * PFNGLPIXELTRANSFORMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, const GLint *params);
+typedef void (APIENTRY * PFNGLPIXELTRANSFORMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, const GLfloat *params);
+#endif
+
+#ifndef GL_EXT_pixel_transform_color_table
+#define GL_EXT_pixel_transform_color_table 1
+#endif
+
+#ifndef GL_EXT_shared_texture_palette
+#define GL_EXT_shared_texture_palette 1
+#endif
+
+#ifndef GL_EXT_separate_specular_color
+#define GL_EXT_separate_specular_color 1
+#endif
+
+#ifndef GL_EXT_secondary_color
+#define GL_EXT_secondary_color 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glSecondaryColor3bEXT (GLbyte, GLbyte, GLbyte);
+GLAPI void APIENTRY glSecondaryColor3bvEXT (const GLbyte *);
+GLAPI void APIENTRY glSecondaryColor3dEXT (GLdouble, GLdouble, GLdouble);
+GLAPI void APIENTRY glSecondaryColor3dvEXT (const GLdouble *);
+GLAPI void APIENTRY glSecondaryColor3fEXT (GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glSecondaryColor3fvEXT (const GLfloat *);
+GLAPI void APIENTRY glSecondaryColor3iEXT (GLint, GLint, GLint);
+GLAPI void APIENTRY glSecondaryColor3ivEXT (const GLint *);
+GLAPI void APIENTRY glSecondaryColor3sEXT (GLshort, GLshort, GLshort);
+GLAPI void APIENTRY glSecondaryColor3svEXT (const GLshort *);
+GLAPI void APIENTRY glSecondaryColor3ubEXT (GLubyte, GLubyte, GLubyte);
+GLAPI void APIENTRY glSecondaryColor3ubvEXT (const GLubyte *);
+GLAPI void APIENTRY glSecondaryColor3uiEXT (GLuint, GLuint, GLuint);
+GLAPI void APIENTRY glSecondaryColor3uivEXT (const GLuint *);
+GLAPI void APIENTRY glSecondaryColor3usEXT (GLushort, GLushort, GLushort);
+GLAPI void APIENTRY glSecondaryColor3usvEXT (const GLushort *);
+GLAPI void APIENTRY glSecondaryColorPointerEXT (GLint, GLenum, GLsizei, const GLvoid *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRY * PFNGLSECONDARYCOLOR3BEXTPROC) (GLbyte red, GLbyte green, GLbyte blue);
+typedef void (APIENTRY * PFNGLSECONDARYCOLOR3BVEXTPROC) (const GLbyte *v);
+typedef void (APIENTRY * PFNGLSECONDARYCOLOR3DEXTPROC) (GLdouble red, GLdouble green, GLdouble blue);
+typedef void (APIENTRY * PFNGLSECONDARYCOLOR3DVEXTPROC) (const GLdouble *v);
+typedef void (APIENTRY * PFNGLSECONDARYCOLOR3FEXTPROC) (GLfloat red, GLfloat green, GLfloat blue);
+typedef void (APIENTRY * PFNGLSECONDARYCOLOR3FVEXTPROC) (const GLfloat *v);
+typedef void (APIENTRY * PFNGLSECONDARYCOLOR3IEXTPROC) (GLint red, GLint green, GLint blue);
+typedef void (APIENTRY * PFNGLSECONDARYCOLOR3IVEXTPROC) (const GLint *v);
+typedef void (APIENTRY * PFNGLSECONDARYCOLOR3SEXTPROC) (GLshort red, GLshort green, GLshort blue);
+typedef void (APIENTRY * PFNGLSECONDARYCOLOR3SVEXTPROC) (const GLshort *v);
+typedef void (APIENTRY * PFNGLSECONDARYCOLOR3UBEXTPROC) (GLubyte red, GLubyte green, GLubyte blue);
+typedef void (APIENTRY * PFNGLSECONDARYCOLOR3UBVEXTPROC) (const GLubyte *v);
+typedef void (APIENTRY * PFNGLSECONDARYCOLOR3UIEXTPROC) (GLuint red, GLuint green, GLuint blue);
+typedef void (APIENTRY * PFNGLSECONDARYCOLOR3UIVEXTPROC) (const GLuint *v);
+typedef void (APIENTRY * PFNGLSECONDARYCOLOR3USEXTPROC) (GLushort red, GLushort green, GLushort blue);
+typedef void (APIENTRY * PFNGLSECONDARYCOLOR3USVEXTPROC) (const GLushort *v);
+typedef void (APIENTRY * PFNGLSECONDARYCOLORPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
+#endif
+
+#ifndef GL_EXT_texture_perturb_normal
+#define GL_EXT_texture_perturb_normal 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glTextureNormalEXT (GLenum);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRY * PFNGLTEXTURENORMALEXTPROC) (GLenum mode);
+#endif
+
+#ifndef GL_EXT_multi_draw_arrays
+#define GL_EXT_multi_draw_arrays 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glMultiDrawArraysEXT (GLenum, GLint *, GLsizei *, GLsizei);
+GLAPI void APIENTRY glMultiDrawElementsEXT (GLenum, const GLsizei *, GLenum, const GLvoid* *, GLsizei);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRY * PFNGLMULTIDRAWARRAYSEXTPROC) (GLenum mode, GLint *first, GLsizei *count, GLsizei primcount);
+typedef void (APIENTRY * PFNGLMULTIDRAWELEMENTSEXTPROC) (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount);
+#endif
+
+#ifndef GL_EXT_fog_coord
+#define GL_EXT_fog_coord 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glFogCoordfEXT (GLfloat);
+GLAPI void APIENTRY glFogCoordfvEXT (const GLfloat *);
+GLAPI void APIENTRY glFogCoorddEXT (GLdouble);
+GLAPI void APIENTRY glFogCoorddvEXT (const GLdouble *);
+GLAPI void APIENTRY glFogCoordPointerEXT (GLenum, GLsizei, const GLvoid *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRY * PFNGLFOGCOORDFEXTPROC) (GLfloat coord);
+typedef void (APIENTRY * PFNGLFOGCOORDFVEXTPROC) (const GLfloat *coord);
+typedef void (APIENTRY * PFNGLFOGCOORDDEXTPROC) (GLdouble coord);
+typedef void (APIENTRY * PFNGLFOGCOORDDVEXTPROC) (const GLdouble *coord);
+typedef void (APIENTRY * PFNGLFOGCOORDPOINTEREXTPROC) (GLenum type, GLsizei stride, const GLvoid *pointer);
+#endif
+
+#ifndef GL_REND_screen_coordinates
+#define GL_REND_screen_coordinates 1
+#endif
+
+#ifndef GL_EXT_coordinate_frame
+#define GL_EXT_coordinate_frame 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glTangent3bEXT (GLbyte, GLbyte, GLbyte);
+GLAPI void APIENTRY glTangent3bvEXT (const GLbyte *);
+GLAPI void APIENTRY glTangent3dEXT (GLdouble, GLdouble, GLdouble);
+GLAPI void APIENTRY glTangent3dvEXT (const GLdouble *);
+GLAPI void APIENTRY glTangent3fEXT (GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glTangent3fvEXT (const GLfloat *);
+GLAPI void APIENTRY glTangent3iEXT (GLint, GLint, GLint);
+GLAPI void APIENTRY glTangent3ivEXT (const GLint *);
+GLAPI void APIENTRY glTangent3sEXT (GLshort, GLshort, GLshort);
+GLAPI void APIENTRY glTangent3svEXT (const GLshort *);
+GLAPI void APIENTRY glBinormal3bEXT (GLbyte, GLbyte, GLbyte);
+GLAPI void APIENTRY glBinormal3bvEXT (const GLbyte *);
+GLAPI void APIENTRY glBinormal3dEXT (GLdouble, GLdouble, GLdouble);
+GLAPI void APIENTRY glBinormal3dvEXT (const GLdouble *);
+GLAPI void APIENTRY glBinormal3fEXT (GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glBinormal3fvEXT (const GLfloat *);
+GLAPI void APIENTRY glBinormal3iEXT (GLint, GLint, GLint);
+GLAPI void APIENTRY glBinormal3ivEXT (const GLint *);
+GLAPI void APIENTRY glBinormal3sEXT (GLshort, GLshort, GLshort);
+GLAPI void APIENTRY glBinormal3svEXT (const GLshort *);
+GLAPI void APIENTRY glTangentPointerEXT (GLenum, GLsizei, const GLvoid *);
+GLAPI void APIENTRY glBinormalPointerEXT (GLenum, GLsizei, const GLvoid *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRY * PFNGLTANGENT3BEXTPROC) (GLbyte tx, GLbyte ty, GLbyte tz);
+typedef void (APIENTRY * PFNGLTANGENT3BVEXTPROC) (const GLbyte *v);
+typedef void (APIENTRY * PFNGLTANGENT3DEXTPROC) (GLdouble tx, GLdouble ty, GLdouble tz);
+typedef void (APIENTRY * PFNGLTANGENT3DVEXTPROC) (const GLdouble *v);
+typedef void (APIENTRY * PFNGLTANGENT3FEXTPROC) (GLfloat tx, GLfloat ty, GLfloat tz);
+typedef void (APIENTRY * PFNGLTANGENT3FVEXTPROC) (const GLfloat *v);
+typedef void (APIENTRY * PFNGLTANGENT3IEXTPROC) (GLint tx, GLint ty, GLint tz);
+typedef void (APIENTRY * PFNGLTANGENT3IVEXTPROC) (const GLint *v);
+typedef void (APIENTRY * PFNGLTANGENT3SEXTPROC) (GLshort tx, GLshort ty, GLshort tz);
+typedef void (APIENTRY * PFNGLTANGENT3SVEXTPROC) (const GLshort *v);
+typedef void (APIENTRY * PFNGLBINORMAL3BEXTPROC) (GLbyte bx, GLbyte by, GLbyte bz);
+typedef void (APIENTRY * PFNGLBINORMAL3BVEXTPROC) (const GLbyte *v);
+typedef void (APIENTRY * PFNGLBINORMAL3DEXTPROC) (GLdouble bx, GLdouble by, GLdouble bz);
+typedef void (APIENTRY * PFNGLBINORMAL3DVEXTPROC) (const GLdouble *v);
+typedef void (APIENTRY * PFNGLBINORMAL3FEXTPROC) (GLfloat bx, GLfloat by, GLfloat bz);
+typedef void (APIENTRY * PFNGLBINORMAL3FVEXTPROC) (const GLfloat *v);
+typedef void (APIENTRY * PFNGLBINORMAL3IEXTPROC) (GLint bx, GLint by, GLint bz);
+typedef void (APIENTRY * PFNGLBINORMAL3IVEXTPROC) (const GLint *v);
+typedef void (APIENTRY * PFNGLBINORMAL3SEXTPROC) (GLshort bx, GLshort by, GLshort bz);
+typedef void (APIENTRY * PFNGLBINORMAL3SVEXTPROC) (const GLshort *v);
+typedef void (APIENTRY * PFNGLTANGENTPOINTEREXTPROC) (GLenum type, GLsizei stride, const GLvoid *pointer);
+typedef void (APIENTRY * PFNGLBINORMALPOINTEREXTPROC) (GLenum type, GLsizei stride, const GLvoid *pointer);
+#endif
+
+#ifndef GL_EXT_texture_env_combine
+#define GL_EXT_texture_env_combine 1
+#endif
+
+#ifndef GL_APPLE_specular_vector
+#define GL_APPLE_specular_vector 1
+#endif
+
+#ifndef GL_APPLE_transform_hint
+#define GL_APPLE_transform_hint 1
+#endif
+
+#ifndef GL_SGIX_fog_scale
+#define GL_SGIX_fog_scale 1
+#endif
+
+#ifndef GL_SUNX_constant_data
+#define GL_SUNX_constant_data 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glFinishTextureSUNX (void);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRY * PFNGLFINISHTEXTURESUNXPROC) (void);
+#endif
+
+#ifndef GL_SUN_global_alpha
+#define GL_SUN_global_alpha 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glGlobalAlphaFactorbSUN (GLbyte);
+GLAPI void APIENTRY glGlobalAlphaFactorsSUN (GLshort);
+GLAPI void APIENTRY glGlobalAlphaFactoriSUN (GLint);
+GLAPI void APIENTRY glGlobalAlphaFactorfSUN (GLfloat);
+GLAPI void APIENTRY glGlobalAlphaFactordSUN (GLdouble);
+GLAPI void APIENTRY glGlobalAlphaFactorubSUN (GLubyte);
+GLAPI void APIENTRY glGlobalAlphaFactorusSUN (GLushort);
+GLAPI void APIENTRY glGlobalAlphaFactoruiSUN (GLuint);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRY * PFNGLGLOBALALPHAFACTORBSUNPROC) (GLbyte factor);
+typedef void (APIENTRY * PFNGLGLOBALALPHAFACTORSSUNPROC) (GLshort factor);
+typedef void (APIENTRY * PFNGLGLOBALALPHAFACTORISUNPROC) (GLint factor);
+typedef void (APIENTRY * PFNGLGLOBALALPHAFACTORFSUNPROC) (GLfloat factor);
+typedef void (APIENTRY * PFNGLGLOBALALPHAFACTORDSUNPROC) (GLdouble factor);
+typedef void (APIENTRY * PFNGLGLOBALALPHAFACTORUBSUNPROC) (GLubyte factor);
+typedef void (APIENTRY * PFNGLGLOBALALPHAFACTORUSSUNPROC) (GLushort factor);
+typedef void (APIENTRY * PFNGLGLOBALALPHAFACTORUISUNPROC) (GLuint factor);
+#endif
+
+#ifndef GL_SUN_triangle_list
+#define GL_SUN_triangle_list 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glReplacementCodeuiSUN (GLuint);
+GLAPI void APIENTRY glReplacementCodeusSUN (GLushort);
+GLAPI void APIENTRY glReplacementCodeubSUN (GLubyte);
+GLAPI void APIENTRY glReplacementCodeuivSUN (const GLuint *);
+GLAPI void APIENTRY glReplacementCodeusvSUN (const GLushort *);
+GLAPI void APIENTRY glReplacementCodeubvSUN (const GLubyte *);
+GLAPI void APIENTRY glReplacementCodePointerSUN (GLenum, GLsizei, const GLvoid* *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRY * PFNGLREPLACEMENTCODEUISUNPROC) (GLuint code);
+typedef void (APIENTRY * PFNGLREPLACEMENTCODEUSSUNPROC) (GLushort code);
+typedef void (APIENTRY * PFNGLREPLACEMENTCODEUBSUNPROC) (GLubyte code);
+typedef void (APIENTRY * PFNGLREPLACEMENTCODEUIVSUNPROC) (const GLuint *code);
+typedef void (APIENTRY * PFNGLREPLACEMENTCODEUSVSUNPROC) (const GLushort *code);
+typedef void (APIENTRY * PFNGLREPLACEMENTCODEUBVSUNPROC) (const GLubyte *code);
+typedef void (APIENTRY * PFNGLREPLACEMENTCODEPOINTERSUNPROC) (GLenum type, GLsizei stride, const GLvoid* *pointer);
+#endif
+
+#ifndef GL_SUN_vertex
+#define GL_SUN_vertex 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glColor4ubVertex2fSUN (GLubyte, GLubyte, GLubyte, GLubyte, GLfloat, GLfloat);
+GLAPI void APIENTRY glColor4ubVertex2fvSUN (const GLubyte *, const GLfloat *);
+GLAPI void APIENTRY glColor4ubVertex3fSUN (GLubyte, GLubyte, GLubyte, GLubyte, GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glColor4ubVertex3fvSUN (const GLubyte *, const GLfloat *);
+GLAPI void APIENTRY glColor3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glColor3fVertex3fvSUN (const GLfloat *, const GLfloat *);
+GLAPI void APIENTRY glNormal3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glNormal3fVertex3fvSUN (const GLfloat *, const GLfloat *);
+GLAPI void APIENTRY glColor4fNormal3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glColor4fNormal3fVertex3fvSUN (const GLfloat *, const GLfloat *, const GLfloat *);
+GLAPI void APIENTRY glTexCoord2fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glTexCoord2fVertex3fvSUN (const GLfloat *, const GLfloat *);
+GLAPI void APIENTRY glTexCoord4fVertex4fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glTexCoord4fVertex4fvSUN (const GLfloat *, const GLfloat *);
+GLAPI void APIENTRY glTexCoord2fColor4ubVertex3fSUN (GLfloat, GLfloat, GLubyte, GLubyte, GLubyte, GLubyte, GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glTexCoord2fColor4ubVertex3fvSUN (const GLfloat *, const GLubyte *, const GLfloat *);
+GLAPI void APIENTRY glTexCoord2fColor3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glTexCoord2fColor3fVertex3fvSUN (const GLfloat *, const GLfloat *, const GLfloat *);
+GLAPI void APIENTRY glTexCoord2fNormal3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glTexCoord2fNormal3fVertex3fvSUN (const GLfloat *, const GLfloat *, const GLfloat *);
+GLAPI void APIENTRY glTexCoord2fColor4fNormal3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glTexCoord2fColor4fNormal3fVertex3fvSUN (const GLfloat *, const GLfloat *, const GLfloat *, const GLfloat *);
+GLAPI void APIENTRY glTexCoord4fColor4fNormal3fVertex4fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glTexCoord4fColor4fNormal3fVertex4fvSUN (const GLfloat *, const GLfloat *, const GLfloat *, const GLfloat *);
+GLAPI void APIENTRY glReplacementCodeuiVertex3fSUN (GLenum, GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glReplacementCodeuiVertex3fvSUN (const GLenum *, const GLfloat *);
+GLAPI void APIENTRY glReplacementCodeuiColor4ubVertex3fSUN (GLenum, GLubyte, GLubyte, GLubyte, GLubyte, GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glReplacementCodeuiColor4ubVertex3fvSUN (const GLenum *, const GLubyte *, const GLfloat *);
+GLAPI void APIENTRY glReplacementCodeuiColor3fVertex3fSUN (GLenum, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glReplacementCodeuiColor3fVertex3fvSUN (const GLenum *, const GLfloat *, const GLfloat *);
+GLAPI void APIENTRY glReplacementCodeuiNormal3fVertex3fSUN (GLenum, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glReplacementCodeuiNormal3fVertex3fvSUN (const GLenum *, const GLfloat *, const GLfloat *);
+GLAPI void APIENTRY glReplacementCodeuiColor4fNormal3fVertex3fSUN (GLenum, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glReplacementCodeuiColor4fNormal3fVertex3fvSUN (const GLenum *, const GLfloat *, const GLfloat *, const GLfloat *);
+GLAPI void APIENTRY glReplacementCodeuiTexCoord2fVertex3fSUN (GLenum, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glReplacementCodeuiTexCoord2fVertex3fvSUN (const GLenum *, const GLfloat *, const GLfloat *);
+GLAPI void APIENTRY glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN (GLenum, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN (const GLenum *, const GLfloat *, const GLfloat *, const GLfloat *);
+GLAPI void APIENTRY glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN (GLenum, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN (const GLenum *, const GLfloat *, const GLfloat *, const GLfloat *, const GLfloat *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRY * PFNGLCOLOR4UBVERTEX2FSUNPROC) (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y);
+typedef void (APIENTRY * PFNGLCOLOR4UBVERTEX2FVSUNPROC) (const GLubyte *c, const GLfloat *v);
+typedef void (APIENTRY * PFNGLCOLOR4UBVERTEX3FSUNPROC) (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRY * PFNGLCOLOR4UBVERTEX3FVSUNPROC) (const GLubyte *c, const GLfloat *v);
+typedef void (APIENTRY * PFNGLCOLOR3FVERTEX3FSUNPROC) (GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRY * PFNGLCOLOR3FVERTEX3FVSUNPROC) (const GLfloat *c, const GLfloat *v);
+typedef void (APIENTRY * PFNGLNORMAL3FVERTEX3FSUNPROC) (GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRY * PFNGLNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *n, const GLfloat *v);
+typedef void (APIENTRY * PFNGLCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRY * PFNGLCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *c, const GLfloat *n, const GLfloat *v);
+typedef void (APIENTRY * PFNGLTEXCOORD2FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRY * PFNGLTEXCOORD2FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *v);
+typedef void (APIENTRY * PFNGLTEXCOORD4FVERTEX4FSUNPROC) (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+typedef void (APIENTRY * PFNGLTEXCOORD4FVERTEX4FVSUNPROC) (const GLfloat *tc, const GLfloat *v);
+typedef void (APIENTRY * PFNGLTEXCOORD2FCOLOR4UBVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRY * PFNGLTEXCOORD2FCOLOR4UBVERTEX3FVSUNPROC) (const GLfloat *tc, const GLubyte *c, const GLfloat *v);
+typedef void (APIENTRY * PFNGLTEXCOORD2FCOLOR3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRY * PFNGLTEXCOORD2FCOLOR3FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *c, const GLfloat *v);
+typedef void (APIENTRY * PFNGLTEXCOORD2FNORMAL3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRY * PFNGLTEXCOORD2FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *n, const GLfloat *v);
+typedef void (APIENTRY * PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRY * PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v);
+typedef void (APIENTRY * PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUNPROC) (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+typedef void (APIENTRY * PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUNPROC) (const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v);
+typedef void (APIENTRY * PFNGLREPLACEMENTCODEUIVERTEX3FSUNPROC) (GLenum rc, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRY * PFNGLREPLACEMENTCODEUIVERTEX3FVSUNPROC) (const GLenum *rc, const GLfloat *v);
+typedef void (APIENTRY * PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUNPROC) (GLenum rc, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRY * PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUNPROC) (const GLenum *rc, const GLubyte *c, const GLfloat *v);
+typedef void (APIENTRY * PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FSUNPROC) (GLenum rc, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRY * PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUNPROC) (const GLenum *rc, const GLfloat *c, const GLfloat *v);
+typedef void (APIENTRY * PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FSUNPROC) (GLenum rc, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRY * PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUNPROC) (const GLenum *rc, const GLfloat *n, const GLfloat *v);
+typedef void (APIENTRY * PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLenum rc, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRY * PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLenum *rc, const GLfloat *c, const GLfloat *n, const GLfloat *v);
+typedef void (APIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUNPROC) (GLenum rc, GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUNPROC) (const GLenum *rc, const GLfloat *tc, const GLfloat *v);
+typedef void (APIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUNPROC) (GLenum rc, GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUNPROC) (const GLenum *rc, const GLfloat *tc, const GLfloat *n, const GLfloat *v);
+typedef void (APIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLenum rc, GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLenum *rc, const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v);
+#endif
+
+#ifndef GL_EXT_blend_func_separate
+#define GL_EXT_blend_func_separate 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glBlendFuncSeparateEXT (GLenum, GLenum, GLenum, GLenum);
+GLAPI void APIENTRY glBlendFuncSeparateINGR (GLenum, GLenum, GLenum, GLenum);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRY * PFNGLBLENDFUNCSEPARATEEXTPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
+typedef void (APIENTRY * PFNGLBLENDFUNCSEPARATEINGRPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
+#endif
+
+#ifndef GL_INGR_color_clamp
+#define GL_INGR_color_clamp 1
+#endif
+
+#ifndef GL_INGR_interlace_read
+#define GL_INGR_interlace_read 1
+#endif
+
+#ifndef GL_EXT_stencil_wrap
+#define GL_EXT_stencil_wrap 1
+#endif
+
+#ifndef GL_EXT_422_pixels
+#define GL_EXT_422_pixels 1
+#endif
+
+#ifndef GL_NV_texgen_reflection
+#define GL_NV_texgen_reflection 1
+#endif
+
+#ifndef GL_SUN_convolution_border_modes
+#define GL_SUN_convolution_border_modes 1
+#endif
+
+#ifndef GL_EXT_texture_env_add
+#define GL_EXT_texture_env_add 1
+#endif
+
+#ifndef GL_EXT_texture_lod_bias
+#define GL_EXT_texture_lod_bias 1
+#endif
+
+#ifndef GL_EXT_texture_filter_anisotropic
+#define GL_EXT_texture_filter_anisotropic 1
+#endif
+
+#ifndef GL_EXT_vertex_weighting
+#define GL_EXT_vertex_weighting 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glVertexWeightfEXT (GLfloat);
+GLAPI void APIENTRY glVertexWeightfvEXT (const GLfloat *);
+GLAPI void APIENTRY glVertexWeightPointerEXT (GLsizei, GLenum, GLsizei, const GLvoid *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRY * PFNGLVERTEXWEIGHTFEXTPROC) (GLfloat weight);
+typedef void (APIENTRY * PFNGLVERTEXWEIGHTFVEXTPROC) (const GLfloat *weight);
+typedef void (APIENTRY * PFNGLVERTEXWEIGHTPOINTEREXTPROC) (GLsizei size, GLenum type, GLsizei stride, const GLvoid *pointer);
+#endif
+
+#ifndef GL_NV_light_max_exponent
+#define GL_NV_light_max_exponent 1
+#endif
+
+#ifndef GL_NV_vertex_array_range
+#define GL_NV_vertex_array_range 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glFlushVertexArrayRangeNV (void);
+GLAPI void APIENTRY glVertexArrayRangeNV (GLsizei, const GLvoid *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRY * PFNGLFLUSHVERTEXARRAYRANGENVPROC) (void);
+typedef void (APIENTRY * PFNGLVERTEXARRAYRANGENVPROC) (GLsizei length, const GLvoid *pointer);
+#endif
+
+#ifndef GL_NV_register_combiners
+#define GL_NV_register_combiners 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glCombinerParameterfvNV (GLenum, const GLfloat *);
+GLAPI void APIENTRY glCombinerParameterfNV (GLenum, GLfloat);
+GLAPI void APIENTRY glCombinerParameterivNV (GLenum, const GLint *);
+GLAPI void APIENTRY glCombinerParameteriNV (GLenum, GLint);
+GLAPI void APIENTRY glCombinerInputNV (GLenum, GLenum, GLenum, GLenum, GLenum, GLenum);
+GLAPI void APIENTRY glCombinerOutputNV (GLenum, GLenum, GLenum, GLenum, GLenum, GLenum, GLenum, GLboolean, GLboolean, GLboolean);
+GLAPI void APIENTRY glFinalCombinerInputNV (GLenum, GLenum, GLenum, GLenum);
+GLAPI void APIENTRY glGetCombinerInputParameterfvNV (GLenum, GLenum, GLenum, GLenum, GLfloat *);
+GLAPI void APIENTRY glGetCombinerInputParameterivNV (GLenum, GLenum, GLenum, GLenum, GLint *);
+GLAPI void APIENTRY glGetCombinerOutputParameterfvNV (GLenum, GLenum, GLenum, GLfloat *);
+GLAPI void APIENTRY glGetCombinerOutputParameterivNV (GLenum, GLenum, GLenum, GLint *);
+GLAPI void APIENTRY glGetFinalCombinerInputParameterfvNV (GLenum, GLenum, GLfloat *);
+GLAPI void APIENTRY glGetFinalCombinerInputParameterivNV (GLenum, GLenum, GLint *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRY * PFNGLCOMBINERPARAMETERFVNVPROC) (GLenum pname, const GLfloat *params);
+typedef void (APIENTRY * PFNGLCOMBINERPARAMETERFNVPROC) (GLenum pname, GLfloat param);
+typedef void (APIENTRY * PFNGLCOMBINERPARAMETERIVNVPROC) (GLenum pname, const GLint *params);
+typedef void (APIENTRY * PFNGLCOMBINERPARAMETERINVPROC) (GLenum pname, GLint param);
+typedef void (APIENTRY * PFNGLCOMBINERINPUTNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage);
+typedef void (APIENTRY * PFNGLCOMBINEROUTPUTNVPROC) (GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean abDotProduct, GLboolean cdDotProduct, GLboolean muxSum);
+typedef void (APIENTRY * PFNGLFINALCOMBINERINPUTNVPROC) (GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage);
+typedef void (APIENTRY * PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat *params);
+typedef void (APIENTRY * PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint *params);
+typedef void (APIENTRY * PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC) (GLenum stage, GLenum portion, GLenum pname, GLfloat *params);
+typedef void (APIENTRY * PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC) (GLenum stage, GLenum portion, GLenum pname, GLint *params);
+typedef void (APIENTRY * PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC) (GLenum variable, GLenum pname, GLfloat *params);
+typedef void (APIENTRY * PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC) (GLenum variable, GLenum pname, GLint *params);
+#endif
+
+#ifndef GL_NV_fog_distance
+#define GL_NV_fog_distance 1
+#endif
+
+#ifndef GL_NV_texgen_emboss
+#define GL_NV_texgen_emboss 1
+#endif
+
+#ifndef GL_NV_blend_square
+#define GL_NV_blend_square 1
+#endif
+
+#ifndef GL_NV_texture_env_combine4
+#define GL_NV_texture_env_combine4 1
+#endif
+
+#ifndef GL_MESA_resize_buffers
+#define GL_MESA_resize_buffers 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glResizeBuffersMESA (void);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRY * PFNGLRESIZEBUFFERSMESAPROC) (void);
+#endif
+
+#ifndef GL_MESA_window_pos
+#define GL_MESA_window_pos 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glWindowPos2dMESA (GLdouble, GLdouble);
+GLAPI void APIENTRY glWindowPos2dvMESA (const GLdouble *);
+GLAPI void APIENTRY glWindowPos2fMESA (GLfloat, GLfloat);
+GLAPI void APIENTRY glWindowPos2fvMESA (const GLfloat *);
+GLAPI void APIENTRY glWindowPos2iMESA (GLint, GLint);
+GLAPI void APIENTRY glWindowPos2ivMESA (const GLint *);
+GLAPI void APIENTRY glWindowPos2sMESA (GLshort, GLshort);
+GLAPI void APIENTRY glWindowPos2svMESA (const GLshort *);
+GLAPI void APIENTRY glWindowPos3dMESA (GLdouble, GLdouble, GLdouble);
+GLAPI void APIENTRY glWindowPos3dvMESA (const GLdouble *);
+GLAPI void APIENTRY glWindowPos3fMESA (GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glWindowPos3fvMESA (const GLfloat *);
+GLAPI void APIENTRY glWindowPos3iMESA (GLint, GLint, GLint);
+GLAPI void APIENTRY glWindowPos3ivMESA (const GLint *);
+GLAPI void APIENTRY glWindowPos3sMESA (GLshort, GLshort, GLshort);
+GLAPI void APIENTRY glWindowPos3svMESA (const GLshort *);
+GLAPI void APIENTRY glWindowPos4dMESA (GLdouble, GLdouble, GLdouble, GLdouble);
+GLAPI void APIENTRY glWindowPos4dvMESA (const GLdouble *);
+GLAPI void APIENTRY glWindowPos4fMESA (GLfloat, GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glWindowPos4fvMESA (const GLfloat *);
+GLAPI void APIENTRY glWindowPos4iMESA (GLint, GLint, GLint, GLint);
+GLAPI void APIENTRY glWindowPos4ivMESA (const GLint *);
+GLAPI void APIENTRY glWindowPos4sMESA (GLshort, GLshort, GLshort, GLshort);
+GLAPI void APIENTRY glWindowPos4svMESA (const GLshort *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRY * PFNGLWINDOWPOS2DMESAPROC) (GLdouble x, GLdouble y);
+typedef void (APIENTRY * PFNGLWINDOWPOS2DVMESAPROC) (const GLdouble *v);
+typedef void (APIENTRY * PFNGLWINDOWPOS2FMESAPROC) (GLfloat x, GLfloat y);
+typedef void (APIENTRY * PFNGLWINDOWPOS2FVMESAPROC) (const GLfloat *v);
+typedef void (APIENTRY * PFNGLWINDOWPOS2IMESAPROC) (GLint x, GLint y);
+typedef void (APIENTRY * PFNGLWINDOWPOS2IVMESAPROC) (const GLint *v);
+typedef void (APIENTRY * PFNGLWINDOWPOS2SMESAPROC) (GLshort x, GLshort y);
+typedef void (APIENTRY * PFNGLWINDOWPOS2SVMESAPROC) (const GLshort *v);
+typedef void (APIENTRY * PFNGLWINDOWPOS3DMESAPROC) (GLdouble x, GLdouble y, GLdouble z);
+typedef void (APIENTRY * PFNGLWINDOWPOS3DVMESAPROC) (const GLdouble *v);
+typedef void (APIENTRY * PFNGLWINDOWPOS3FMESAPROC) (GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRY * PFNGLWINDOWPOS3FVMESAPROC) (const GLfloat *v);
+typedef void (APIENTRY * PFNGLWINDOWPOS3IMESAPROC) (GLint x, GLint y, GLint z);
+typedef void (APIENTRY * PFNGLWINDOWPOS3IVMESAPROC) (const GLint *v);
+typedef void (APIENTRY * PFNGLWINDOWPOS3SMESAPROC) (GLshort x, GLshort y, GLshort z);
+typedef void (APIENTRY * PFNGLWINDOWPOS3SVMESAPROC) (const GLshort *v);
+typedef void (APIENTRY * PFNGLWINDOWPOS4DMESAPROC) (GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (APIENTRY * PFNGLWINDOWPOS4DVMESAPROC) (const GLdouble *v);
+typedef void (APIENTRY * PFNGLWINDOWPOS4FMESAPROC) (GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+typedef void (APIENTRY * PFNGLWINDOWPOS4FVMESAPROC) (const GLfloat *v);
+typedef void (APIENTRY * PFNGLWINDOWPOS4IMESAPROC) (GLint x, GLint y, GLint z, GLint w);
+typedef void (APIENTRY * PFNGLWINDOWPOS4IVMESAPROC) (const GLint *v);
+typedef void (APIENTRY * PFNGLWINDOWPOS4SMESAPROC) (GLshort x, GLshort y, GLshort z, GLshort w);
+typedef void (APIENTRY * PFNGLWINDOWPOS4SVMESAPROC) (const GLshort *v);
+#endif
+
+#ifndef GL_IBM_cull_vertex
+#define GL_IBM_cull_vertex 1
+#endif
+
+#ifndef GL_IBM_multimode_draw_arrays
+#define GL_IBM_multimode_draw_arrays 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glMultiModeDrawArraysIBM (GLenum, const GLint *, const GLsizei *, GLsizei, GLint);
+GLAPI void APIENTRY glMultiModeDrawElementsIBM (const GLenum *, const GLsizei *, GLenum, const GLvoid* *, GLsizei, GLint);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRY * PFNGLMULTIMODEDRAWARRAYSIBMPROC) (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount, GLint modestride);
+typedef void (APIENTRY * PFNGLMULTIMODEDRAWELEMENTSIBMPROC) (const GLenum *mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount, GLint modestride);
+#endif
+
+#ifndef GL_IBM_vertex_array_lists
+#define GL_IBM_vertex_array_lists 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glColorPointerListIBM (GLint, GLenum, GLint, const GLvoid* *, GLint);
+GLAPI void APIENTRY glSecondaryColorPointerListIBM (GLint, GLenum, GLint, const GLvoid* *, GLint);
+GLAPI void APIENTRY glEdgeFlagPointerListIBM (GLint, const GLboolean* *, GLint);
+GLAPI void APIENTRY glFogCoordPointerListIBM (GLenum, GLint, const GLvoid* *, GLint);
+GLAPI void APIENTRY glIndexPointerListIBM (GLenum, GLint, const GLvoid* *, GLint);
+GLAPI void APIENTRY glNormalPointerListIBM (GLenum, GLint, const GLvoid* *, GLint);
+GLAPI void APIENTRY glTexCoordPointerListIBM (GLint, GLenum, GLint, const GLvoid* *, GLint);
+GLAPI void APIENTRY glVertexPointerListIBM (GLint, GLenum, GLint, const GLvoid* *, GLint);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRY * PFNGLCOLORPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride);
+typedef void (APIENTRY * PFNGLSECONDARYCOLORPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride);
+typedef void (APIENTRY * PFNGLEDGEFLAGPOINTERLISTIBMPROC) (GLint stride, const GLboolean* *pointer, GLint ptrstride);
+typedef void (APIENTRY * PFNGLFOGCOORDPOINTERLISTIBMPROC) (GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride);
+typedef void (APIENTRY * PFNGLINDEXPOINTERLISTIBMPROC) (GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride);
+typedef void (APIENTRY * PFNGLNORMALPOINTERLISTIBMPROC) (GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride);
+typedef void (APIENTRY * PFNGLTEXCOORDPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride);
+typedef void (APIENTRY * PFNGLVERTEXPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride);
+#endif
+
+#ifndef GL_SGIX_subsample
+#define GL_SGIX_subsample 1
+#endif
+
+#ifndef GL_SGIX_ycrcba
+#define GL_SGIX_ycrcba 1
+#endif
+
+#ifndef GL_SGIX_ycrcb_subsample
+#define GL_SGIX_ycrcb_subsample 1
+#endif
+
+#ifndef GL_SGIX_depth_pass_instrument
+#define GL_SGIX_depth_pass_instrument 1
+#endif
+
+#ifndef GL_3DFX_texture_compression_FXT1
+#define GL_3DFX_texture_compression_FXT1 1
+#endif
+
+#ifndef GL_3DFX_multisample
+#define GL_3DFX_multisample 1
+#endif
+
+#ifndef GL_3DFX_tbuffer
+#define GL_3DFX_tbuffer 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glTbufferMask3DFX (GLuint);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRY * PFNGLTBUFFERMASK3DFXPROC) (GLuint mask);
+#endif
+
+#ifndef GL_EXT_multisample
+#define GL_EXT_multisample 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glSampleMaskEXT (GLclampf, GLboolean);
+GLAPI void APIENTRY glSamplePatternEXT (GLenum);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRY * PFNGLSAMPLEMASKEXTPROC) (GLclampf value, GLboolean invert);
+typedef void (APIENTRY * PFNGLSAMPLEPATTERNEXTPROC) (GLenum pattern);
+#endif
+
+#ifndef GL_SGIX_vertex_preclip
+#define GL_SGIX_vertex_preclip 1
+#endif
+
+#ifndef GL_SGIX_convolution_accuracy
+#define GL_SGIX_convolution_accuracy 1
+#endif
+
+#ifndef GL_SGIX_resample
+#define GL_SGIX_resample 1
+#endif
+
+#ifndef GL_SGIS_point_line_texgen
+#define GL_SGIS_point_line_texgen 1
+#endif
+
+#ifndef GL_SGIS_texture_color_mask
+#define GL_SGIS_texture_color_mask 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glTextureColorMaskSGIS (GLboolean, GLboolean, GLboolean, GLboolean);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRY * PFNGLTEXTURECOLORMASKSGISPROC) (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
+#endif
+
+#ifndef GL_SGIX_igloo_interface
+#define GL_SGIX_igloo_interface 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glIglooInterfaceSGIX (GLenum, const GLvoid *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRY * PFNGLIGLOOINTERFACESGIXPROC) (GLenum pname, const GLvoid *params);
+#endif
+
+#ifndef GL_NV_fence
+#define GL_NV_fence 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glDeleteFencesNV (GLsizei, const GLuint *);
+GLAPI void APIENTRY glGenFencesNV (GLsizei, GLuint *);
+GLAPI GLboolean APIENTRY glIsFenceNV (GLuint);
+GLAPI GLboolean APIENTRY glTestFenceNV (GLuint);
+GLAPI void APIENTRY glGetFenceivNV (GLuint, GLenum, GLint *);
+GLAPI void APIENTRY glFinishFenceNV (GLuint);
+GLAPI void APIENTRY glSetFenceNV (GLuint, GLenum);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRY * PFNGLDELETEFENCESNVPROC) (GLsizei n, const GLuint *fences);
+typedef void (APIENTRY * PFNGLGENFENCESNVPROC) (GLsizei n, GLuint *fences);
+typedef GLboolean (APIENTRY * PFNGLISFENCENVPROC) (GLuint fence);
+typedef GLboolean (APIENTRY * PFNGLTESTFENCENVPROC) (GLuint fence);
+typedef void (APIENTRY * PFNGLGETFENCEIVNVPROC) (GLuint fence, GLenum pname, GLint *params);
+typedef void (APIENTRY * PFNGLFINISHFENCENVPROC) (GLuint fence);
+typedef void (APIENTRY * PFNGLSETFENCENVPROC) (GLuint fence, GLenum condition);
+#endif
+
+#ifndef GL_NV_evaluators
+#define GL_NV_evaluators 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glMapControlPointsNV (GLenum, GLuint, GLenum, GLsizei, GLsizei, GLint, GLint, GLboolean, const GLvoid *);
+GLAPI void APIENTRY glMapParameterivNV (GLenum, GLenum, const GLint *);
+GLAPI void APIENTRY glMapParameterfvNV (GLenum, GLenum, const GLfloat *);
+GLAPI void APIENTRY glGetMapControlPointsNV (GLenum, GLuint, GLenum, GLsizei, GLsizei, GLboolean, GLvoid *);
+GLAPI void APIENTRY glGetMapParameterivNV (GLenum, GLenum, GLint *);
+GLAPI void APIENTRY glGetMapParameterfvNV (GLenum, GLenum, GLfloat *);
+GLAPI void APIENTRY glGetMapAttribParameterivNV (GLenum, GLuint, GLenum, GLint *);
+GLAPI void APIENTRY glGetMapAttribParameterfvNV (GLenum, GLuint, GLenum, GLfloat *);
+GLAPI void APIENTRY glEvalMapsNV (GLenum, GLenum);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRY * PFNGLMAPCONTROLPOINTSNVPROC) (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLint uorder, GLint vorder, GLboolean packed, const GLvoid *points);
+typedef void (APIENTRY * PFNGLMAPPARAMETERIVNVPROC) (GLenum target, GLenum pname, const GLint *params);
+typedef void (APIENTRY * PFNGLMAPPARAMETERFVNVPROC) (GLenum target, GLenum pname, const GLfloat *params);
+typedef void (APIENTRY * PFNGLGETMAPCONTROLPOINTSNVPROC) (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLboolean packed, GLvoid *points);
+typedef void (APIENTRY * PFNGLGETMAPPARAMETERIVNVPROC) (GLenum target, GLenum pname, GLint *params);
+typedef void (APIENTRY * PFNGLGETMAPPARAMETERFVNVPROC) (GLenum target, GLenum pname, GLfloat *params);
+typedef void (APIENTRY * PFNGLGETMAPATTRIBPARAMETERIVNVPROC) (GLenum target, GLuint index, GLenum pname, GLint *params);
+typedef void (APIENTRY * PFNGLGETMAPATTRIBPARAMETERFVNVPROC) (GLenum target, GLuint index, GLenum pname, GLfloat *params);
+typedef void (APIENTRY * PFNGLEVALMAPSNVPROC) (GLenum target, GLenum mode);
+#endif
+
+#ifndef GL_NV_packed_depth_stencil
+#define GL_NV_packed_depth_stencil 1
+#endif
+
+#ifndef GL_NV_register_combiners2
+#define GL_NV_register_combiners2 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glCombinerStageParameterfvNV (GLenum, GLenum, const GLfloat *);
+GLAPI void APIENTRY glGetCombinerStageParameterfvNV (GLenum, GLenum, GLfloat *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRY * PFNGLCOMBINERSTAGEPARAMETERFVNVPROC) (GLenum stage, GLenum pname, const GLfloat *params);
+typedef void (APIENTRY * PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC) (GLenum stage, GLenum pname, GLfloat *params);
+#endif
+
+#ifndef GL_NV_texture_compression_vtc
+#define GL_NV_texture_compression_vtc 1
+#endif
+
+#ifndef GL_NV_texture_rectangle
+#define GL_NV_texture_rectangle 1
+#endif
+
+#ifndef GL_NV_texture_shader
+#define GL_NV_texture_shader 1
+#endif
+
+#ifndef GL_NV_texture_shader2
+#define GL_NV_texture_shader2 1
+#endif
+
+#ifndef GL_NV_vertex_array_range2
+#define GL_NV_vertex_array_range2 1
+#endif
+
+#ifndef GL_NV_vertex_program
+#define GL_NV_vertex_program 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI GLboolean APIENTRY glAreProgramsResidentNV (GLsizei, const GLuint *, GLboolean *);
+GLAPI void APIENTRY glBindProgramNV (GLenum, GLuint);
+GLAPI void APIENTRY glDeleteProgramsNV (GLsizei, const GLuint *);
+GLAPI void APIENTRY glExecuteProgramNV (GLenum, GLuint, const GLfloat *);
+GLAPI void APIENTRY glGenProgramsNV (GLsizei, GLuint *);
+GLAPI void APIENTRY glGetProgramParameterdvNV (GLenum, GLuint, GLenum, GLdouble *);
+GLAPI void APIENTRY glGetProgramParameterfvNV (GLenum, GLuint, GLenum, GLfloat *);
+GLAPI void APIENTRY glGetProgramivNV (GLuint, GLenum, GLint *);
+GLAPI void APIENTRY glGetProgramStringNV (GLuint, GLenum, GLubyte *);
+GLAPI void APIENTRY glGetTrackMatrixivNV (GLenum, GLuint, GLenum, GLint *);
+GLAPI void APIENTRY glGetVertexAttribdvNV (GLuint, GLenum, GLdouble *);
+GLAPI void APIENTRY glGetVertexAttribfvNV (GLuint, GLenum, GLfloat *);
+GLAPI void APIENTRY glGetVertexAttribivNV (GLuint, GLenum, GLint *);
+GLAPI void APIENTRY glGetVertexAttribPointervNV (GLuint, GLenum, GLvoid* *);
+GLAPI GLboolean APIENTRY glIsProgramNV (GLuint);
+GLAPI void APIENTRY glLoadProgramNV (GLenum, GLuint, GLsizei, const GLubyte *);
+GLAPI void APIENTRY glProgramParameter4dNV (GLenum, GLuint, GLdouble, GLdouble, GLdouble, GLdouble);
+GLAPI void APIENTRY glProgramParameter4dvNV (GLenum, GLuint, const GLdouble *);
+GLAPI void APIENTRY glProgramParameter4fNV (GLenum, GLuint, GLfloat, GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glProgramParameter4fvNV (GLenum, GLuint, const GLfloat *);
+GLAPI void APIENTRY glProgramParameters4dvNV (GLenum, GLuint, GLuint, const GLdouble *);
+GLAPI void APIENTRY glProgramParameters4fvNV (GLenum, GLuint, GLuint, const GLfloat *);
+GLAPI void APIENTRY glRequestResidentProgramsNV (GLsizei, const GLuint *);
+GLAPI void APIENTRY glTrackMatrixNV (GLenum, GLuint, GLenum, GLenum);
+GLAPI void APIENTRY glVertexAttribPointerNV (GLuint, GLint, GLenum, GLsizei, const GLvoid *);
+GLAPI void APIENTRY glVertexAttrib1dNV (GLuint, GLdouble);
+GLAPI void APIENTRY glVertexAttrib1dvNV (GLuint, const GLdouble *);
+GLAPI void APIENTRY glVertexAttrib1fNV (GLuint, GLfloat);
+GLAPI void APIENTRY glVertexAttrib1fvNV (GLuint, const GLfloat *);
+GLAPI void APIENTRY glVertexAttrib1sNV (GLuint, GLshort);
+GLAPI void APIENTRY glVertexAttrib1svNV (GLuint, const GLshort *);
+GLAPI void APIENTRY glVertexAttrib2dNV (GLuint, GLdouble, GLdouble);
+GLAPI void APIENTRY glVertexAttrib2dvNV (GLuint, const GLdouble *);
+GLAPI void APIENTRY glVertexAttrib2fNV (GLuint, GLfloat, GLfloat);
+GLAPI void APIENTRY glVertexAttrib2fvNV (GLuint, const GLfloat *);
+GLAPI void APIENTRY glVertexAttrib2sNV (GLuint, GLshort, GLshort);
+GLAPI void APIENTRY glVertexAttrib2svNV (GLuint, const GLshort *);
+GLAPI void APIENTRY glVertexAttrib3dNV (GLuint, GLdouble, GLdouble, GLdouble);
+GLAPI void APIENTRY glVertexAttrib3dvNV (GLuint, const GLdouble *);
+GLAPI void APIENTRY glVertexAttrib3fNV (GLuint, GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glVertexAttrib3fvNV (GLuint, const GLfloat *);
+GLAPI void APIENTRY glVertexAttrib3sNV (GLuint, GLshort, GLshort, GLshort);
+GLAPI void APIENTRY glVertexAttrib3svNV (GLuint, const GLshort *);
+GLAPI void APIENTRY glVertexAttrib4dNV (GLuint, GLdouble, GLdouble, GLdouble, GLdouble);
+GLAPI void APIENTRY glVertexAttrib4dvNV (GLuint, const GLdouble *);
+GLAPI void APIENTRY glVertexAttrib4fNV (GLuint, GLfloat, GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glVertexAttrib4fvNV (GLuint, const GLfloat *);
+GLAPI void APIENTRY glVertexAttrib4sNV (GLuint, GLshort, GLshort, GLshort, GLshort);
+GLAPI void APIENTRY glVertexAttrib4svNV (GLuint, const GLshort *);
+GLAPI void APIENTRY glVertexAttrib4ubNV (GLuint, GLubyte, GLubyte, GLubyte, GLubyte);
+GLAPI void APIENTRY glVertexAttrib4ubvNV (GLuint, const GLubyte *);
+GLAPI void APIENTRY glVertexAttribs1dvNV (GLuint, GLsizei, const GLdouble *);
+GLAPI void APIENTRY glVertexAttribs1fvNV (GLuint, GLsizei, const GLfloat *);
+GLAPI void APIENTRY glVertexAttribs1svNV (GLuint, GLsizei, const GLshort *);
+GLAPI void APIENTRY glVertexAttribs2dvNV (GLuint, GLsizei, const GLdouble *);
+GLAPI void APIENTRY glVertexAttribs2fvNV (GLuint, GLsizei, const GLfloat *);
+GLAPI void APIENTRY glVertexAttribs2svNV (GLuint, GLsizei, const GLshort *);
+GLAPI void APIENTRY glVertexAttribs3dvNV (GLuint, GLsizei, const GLdouble *);
+GLAPI void APIENTRY glVertexAttribs3fvNV (GLuint, GLsizei, const GLfloat *);
+GLAPI void APIENTRY glVertexAttribs3svNV (GLuint, GLsizei, const GLshort *);
+GLAPI void APIENTRY glVertexAttribs4dvNV (GLuint, GLsizei, const GLdouble *);
+GLAPI void APIENTRY glVertexAttribs4fvNV (GLuint, GLsizei, const GLfloat *);
+GLAPI void APIENTRY glVertexAttribs4svNV (GLuint, GLsizei, const GLshort *);
+GLAPI void APIENTRY glVertexAttribs4ubvNV (GLuint, GLsizei, const GLubyte *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef GLboolean (APIENTRY * PFNGLAREPROGRAMSRESIDENTNVPROC) (GLsizei n, const GLuint *programs, GLboolean *residences);
+typedef void (APIENTRY * PFNGLBINDPROGRAMNVPROC) (GLenum target, GLuint id);
+typedef void (APIENTRY * PFNGLDELETEPROGRAMSNVPROC) (GLsizei n, const GLuint *programs);
+typedef void (APIENTRY * PFNGLEXECUTEPROGRAMNVPROC) (GLenum target, GLuint id, const GLfloat *params);
+typedef void (APIENTRY * PFNGLGENPROGRAMSNVPROC) (GLsizei n, GLuint *programs);
+typedef void (APIENTRY * PFNGLGETPROGRAMPARAMETERDVNVPROC) (GLenum target, GLuint index, GLenum pname, GLdouble *params);
+typedef void (APIENTRY * PFNGLGETPROGRAMPARAMETERFVNVPROC) (GLenum target, GLuint index, GLenum pname, GLfloat *params);
+typedef void (APIENTRY * PFNGLGETPROGRAMIVNVPROC) (GLuint id, GLenum pname, GLint *params);
+typedef void (APIENTRY * PFNGLGETPROGRAMSTRINGNVPROC) (GLuint id, GLenum pname, GLubyte *program);
+typedef void (APIENTRY * PFNGLGETTRACKMATRIXIVNVPROC) (GLenum target, GLuint address, GLenum pname, GLint *params);
+typedef void (APIENTRY * PFNGLGETVERTEXATTRIBDVNVPROC) (GLuint index, GLenum pname, GLdouble *params);
+typedef void (APIENTRY * PFNGLGETVERTEXATTRIBFVNVPROC) (GLuint index, GLenum pname, GLfloat *params);
+typedef void (APIENTRY * PFNGLGETVERTEXATTRIBIVNVPROC) (GLuint index, GLenum pname, GLint *params);
+typedef void (APIENTRY * PFNGLGETVERTEXATTRIBPOINTERVNVPROC) (GLuint index, GLenum pname, GLvoid* *pointer);
+typedef GLboolean (APIENTRY * PFNGLISPROGRAMNVPROC) (GLuint id);
+typedef void (APIENTRY * PFNGLLOADPROGRAMNVPROC) (GLenum target, GLuint id, GLsizei len, const GLubyte *program);
+typedef void (APIENTRY * PFNGLPROGRAMPARAMETER4DNVPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (APIENTRY * PFNGLPROGRAMPARAMETER4DVNVPROC) (GLenum target, GLuint index, const GLdouble *v);
+typedef void (APIENTRY * PFNGLPROGRAMPARAMETER4FNVPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+typedef void (APIENTRY * PFNGLPROGRAMPARAMETER4FVNVPROC) (GLenum target, GLuint index, const GLfloat *v);
+typedef void (APIENTRY * PFNGLPROGRAMPARAMETERS4DVNVPROC) (GLenum target, GLuint index, GLuint count, const GLdouble *v);
+typedef void (APIENTRY * PFNGLPROGRAMPARAMETERS4FVNVPROC) (GLenum target, GLuint index, GLuint count, const GLfloat *v);
+typedef void (APIENTRY * PFNGLREQUESTRESIDENTPROGRAMSNVPROC) (GLsizei n, const GLuint *programs);
+typedef void (APIENTRY * PFNGLTRACKMATRIXNVPROC) (GLenum target, GLuint address, GLenum matrix, GLenum transform);
+typedef void (APIENTRY * PFNGLVERTEXATTRIBPOINTERNVPROC) (GLuint index, GLint fsize, GLenum type, GLsizei stride, const GLvoid *pointer);
+typedef void (APIENTRY * PFNGLVERTEXATTRIB1DNVPROC) (GLuint index, GLdouble x);
+typedef void (APIENTRY * PFNGLVERTEXATTRIB1DVNVPROC) (GLuint index, const GLdouble *v);
+typedef void (APIENTRY * PFNGLVERTEXATTRIB1FNVPROC) (GLuint index, GLfloat x);
+typedef void (APIENTRY * PFNGLVERTEXATTRIB1FVNVPROC) (GLuint index, const GLfloat *v);
+typedef void (APIENTRY * PFNGLVERTEXATTRIB1SNVPROC) (GLuint index, GLshort x);
+typedef void (APIENTRY * PFNGLVERTEXATTRIB1SVNVPROC) (GLuint index, const GLshort *v);
+typedef void (APIENTRY * PFNGLVERTEXATTRIB2DNVPROC) (GLuint index, GLdouble x, GLdouble y);
+typedef void (APIENTRY * PFNGLVERTEXATTRIB2DVNVPROC) (GLuint index, const GLdouble *v);
+typedef void (APIENTRY * PFNGLVERTEXATTRIB2FNVPROC) (GLuint index, GLfloat x, GLfloat y);
+typedef void (APIENTRY * PFNGLVERTEXATTRIB2FVNVPROC) (GLuint index, const GLfloat *v);
+typedef void (APIENTRY * PFNGLVERTEXATTRIB2SNVPROC) (GLuint index, GLshort x, GLshort y);
+typedef void (APIENTRY * PFNGLVERTEXATTRIB2SVNVPROC) (GLuint index, const GLshort *v);
+typedef void (APIENTRY * PFNGLVERTEXATTRIB3DNVPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z);
+typedef void (APIENTRY * PFNGLVERTEXATTRIB3DVNVPROC) (GLuint index, const GLdouble *v);
+typedef void (APIENTRY * PFNGLVERTEXATTRIB3FNVPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRY * PFNGLVERTEXATTRIB3FVNVPROC) (GLuint index, const GLfloat *v);
+typedef void (APIENTRY * PFNGLVERTEXATTRIB3SNVPROC) (GLuint index, GLshort x, GLshort y, GLshort z);
+typedef void (APIENTRY * PFNGLVERTEXATTRIB3SVNVPROC) (GLuint index, const GLshort *v);
+typedef void (APIENTRY * PFNGLVERTEXATTRIB4DNVPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (APIENTRY * PFNGLVERTEXATTRIB4DVNVPROC) (GLuint index, const GLdouble *v);
+typedef void (APIENTRY * PFNGLVERTEXATTRIB4FNVPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+typedef void (APIENTRY * PFNGLVERTEXATTRIB4FVNVPROC) (GLuint index, const GLfloat *v);
+typedef void (APIENTRY * PFNGLVERTEXATTRIB4SNVPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
+typedef void (APIENTRY * PFNGLVERTEXATTRIB4SVNVPROC) (GLuint index, const GLshort *v);
+typedef void (APIENTRY * PFNGLVERTEXATTRIB4UBNVPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
+typedef void (APIENTRY * PFNGLVERTEXATTRIB4UBVNVPROC) (GLuint index, const GLubyte *v);
+typedef void (APIENTRY * PFNGLVERTEXATTRIBS1DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v);
+typedef void (APIENTRY * PFNGLVERTEXATTRIBS1FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v);
+typedef void (APIENTRY * PFNGLVERTEXATTRIBS1SVNVPROC) (GLuint index, GLsizei count, const GLshort *v);
+typedef void (APIENTRY * PFNGLVERTEXATTRIBS2DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v);
+typedef void (APIENTRY * PFNGLVERTEXATTRIBS2FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v);
+typedef void (APIENTRY * PFNGLVERTEXATTRIBS2SVNVPROC) (GLuint index, GLsizei count, const GLshort *v);
+typedef void (APIENTRY * PFNGLVERTEXATTRIBS3DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v);
+typedef void (APIENTRY * PFNGLVERTEXATTRIBS3FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v);
+typedef void (APIENTRY * PFNGLVERTEXATTRIBS3SVNVPROC) (GLuint index, GLsizei count, const GLshort *v);
+typedef void (APIENTRY * PFNGLVERTEXATTRIBS4DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v);
+typedef void (APIENTRY * PFNGLVERTEXATTRIBS4FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v);
+typedef void (APIENTRY * PFNGLVERTEXATTRIBS4SVNVPROC) (GLuint index, GLsizei count, const GLshort *v);
+typedef void (APIENTRY * PFNGLVERTEXATTRIBS4UBVNVPROC) (GLuint index, GLsizei count, const GLubyte *v);
+#endif
+
+#ifndef GL_SGIX_texture_coordinate_clamp
+#define GL_SGIX_texture_coordinate_clamp 1
+#endif
+
+#ifndef GL_SGIX_scalebias_hint
+#define GL_SGIX_scalebias_hint 1
+#endif
+
+#ifndef GL_OML_interlace
+#define GL_OML_interlace 1
+#endif
+
+#ifndef GL_OML_subsample
+#define GL_OML_subsample 1
+#endif
+
+#ifndef GL_OML_resample
+#define GL_OML_resample 1
+#endif
+
+#ifndef GL_NV_copy_depth_to_color
+#define GL_NV_copy_depth_to_color 1
+#endif
+
+#ifndef GL_ATI_envmap_bumpmap
+#define GL_ATI_envmap_bumpmap 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glTexBumpParameterivATI (GLenum, const GLint *);
+GLAPI void APIENTRY glTexBumpParameterfvATI (GLenum, const GLfloat *);
+GLAPI void APIENTRY glGetTexBumpParameterivATI (GLenum, GLint *);
+GLAPI void APIENTRY glGetTexBumpParameterfvATI (GLenum, GLfloat *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRY * PFNGLTEXBUMPPARAMETERIVATIPROC) (GLenum pname, const GLint *param);
+typedef void (APIENTRY * PFNGLTEXBUMPPARAMETERFVATIPROC) (GLenum pname, const GLfloat *param);
+typedef void (APIENTRY * PFNGLGETTEXBUMPPARAMETERIVATIPROC) (GLenum pname, GLint *param);
+typedef void (APIENTRY * PFNGLGETTEXBUMPPARAMETERFVATIPROC) (GLenum pname, GLfloat *param);
+#endif
+
+#ifndef GL_ATI_fragment_shader
+#define GL_ATI_fragment_shader 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI GLuint APIENTRY glGenFragmentShadersATI (GLuint);
+GLAPI void APIENTRY glBindFragmentShaderATI (GLuint);
+GLAPI void APIENTRY glDeleteFragmentShaderATI (GLuint);
+GLAPI void APIENTRY glBeginFragmentShaderATI (void);
+GLAPI void APIENTRY glEndFragmentShaderATI (void);
+GLAPI void APIENTRY glPassTexCoordATI (GLuint, GLuint, GLenum);
+GLAPI void APIENTRY glSampleMapATI (GLuint, GLuint, GLenum);
+GLAPI void APIENTRY glColorFragmentOp1ATI (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint);
+GLAPI void APIENTRY glColorFragmentOp2ATI (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint);
+GLAPI void APIENTRY glColorFragmentOp3ATI (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint);
+GLAPI void APIENTRY glAlphaFragmentOp1ATI (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint);
+GLAPI void APIENTRY glAlphaFragmentOp2ATI (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint);
+GLAPI void APIENTRY glAlphaFragmentOp3ATI (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint);
+GLAPI void APIENTRY glSetFragmentShaderConstantATI (GLuint, const GLfloat *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef GLuint (APIENTRY * PFNGLGENFRAGMENTSHADERSATIPROC) (GLuint range);
+typedef void (APIENTRY * PFNGLBINDFRAGMENTSHADERATIPROC) (GLuint id);
+typedef void (APIENTRY * PFNGLDELETEFRAGMENTSHADERATIPROC) (GLuint id);
+typedef void (APIENTRY * PFNGLBEGINFRAGMENTSHADERATIPROC) (void);
+typedef void (APIENTRY * PFNGLENDFRAGMENTSHADERATIPROC) (void);
+typedef void (APIENTRY * PFNGLPASSTEXCOORDATIPROC) (GLuint dst, GLuint coord, GLenum swizzle);
+typedef void (APIENTRY * PFNGLSAMPLEMAPATIPROC) (GLuint dst, GLuint interp, GLenum swizzle);
+typedef void (APIENTRY * PFNGLCOLORFRAGMENTOP1ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod);
+typedef void (APIENTRY * PFNGLCOLORFRAGMENTOP2ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod);
+typedef void (APIENTRY * PFNGLCOLORFRAGMENTOP3ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod);
+typedef void (APIENTRY * PFNGLALPHAFRAGMENTOP1ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod);
+typedef void (APIENTRY * PFNGLALPHAFRAGMENTOP2ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod);
+typedef void (APIENTRY * PFNGLALPHAFRAGMENTOP3ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod);
+typedef void (APIENTRY * PFNGLSETFRAGMENTSHADERCONSTANTATIPROC) (GLuint dst, const GLfloat *value);
+#endif
+
+#ifndef GL_ATI_pn_triangles
+#define GL_ATI_pn_triangles 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glPNTrianglesiATI (GLenum, GLint);
+GLAPI void APIENTRY glPNTrianglesfATI (GLenum, GLfloat);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRY * PFNGLPNTRIANGLESIATIPROC) (GLenum pname, GLint param);
+typedef void (APIENTRY * PFNGLPNTRIANGLESFATIPROC) (GLenum pname, GLfloat param);
+#endif
+
+#ifndef GL_ATI_vertex_array_object
+#define GL_ATI_vertex_array_object 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI GLuint APIENTRY glNewObjectBufferATI (GLsizei, const GLvoid *, GLenum);
+GLAPI GLboolean APIENTRY glIsObjectBufferATI (GLuint);
+GLAPI void APIENTRY glUpdateObjectBufferATI (GLuint, GLuint, GLsizei, const GLvoid *, GLenum);
+GLAPI void APIENTRY glGetObjectBufferfvATI (GLuint, GLenum, GLfloat *);
+GLAPI void APIENTRY glGetObjectBufferivATI (GLuint, GLenum, GLint *);
+GLAPI void APIENTRY glDeleteObjectBufferATI (GLuint);
+GLAPI void APIENTRY glArrayObjectATI (GLenum, GLint, GLenum, GLsizei, GLuint, GLuint);
+GLAPI void APIENTRY glGetArrayObjectfvATI (GLenum, GLenum, GLfloat *);
+GLAPI void APIENTRY glGetArrayObjectivATI (GLenum, GLenum, GLint *);
+GLAPI void APIENTRY glVariantArrayObjectATI (GLuint, GLenum, GLsizei, GLuint, GLuint);
+GLAPI void APIENTRY glGetVariantArrayObjectfvATI (GLuint, GLenum, GLfloat *);
+GLAPI void APIENTRY glGetVariantArrayObjectivATI (GLuint, GLenum, GLint *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef GLuint (APIENTRY * PFNGLNEWOBJECTBUFFERATIPROC) (GLsizei size, const GLvoid *pointer, GLenum usage);
+typedef GLboolean (APIENTRY * PFNGLISOBJECTBUFFERATIPROC) (GLuint buffer);
+typedef void (APIENTRY * PFNGLUPDATEOBJECTBUFFERATIPROC) (GLuint buffer, GLuint offset, GLsizei size, const GLvoid *pointer, GLenum preserve);
+typedef void (APIENTRY * PFNGLGETOBJECTBUFFERFVATIPROC) (GLuint buffer, GLenum pname, GLfloat *params);
+typedef void (APIENTRY * PFNGLGETOBJECTBUFFERIVATIPROC) (GLuint buffer, GLenum pname, GLint *params);
+typedef void (APIENTRY * PFNGLDELETEOBJECTBUFFERATIPROC) (GLuint buffer);
+typedef void (APIENTRY * PFNGLARRAYOBJECTATIPROC) (GLenum array, GLint size, GLenum type, GLsizei stride, GLuint buffer, GLuint offset);
+typedef void (APIENTRY * PFNGLGETARRAYOBJECTFVATIPROC) (GLenum array, GLenum pname, GLfloat *params);
+typedef void (APIENTRY * PFNGLGETARRAYOBJECTIVATIPROC) (GLenum array, GLenum pname, GLint *params);
+typedef void (APIENTRY * PFNGLVARIANTARRAYOBJECTATIPROC) (GLuint id, GLenum type, GLsizei stride, GLuint buffer, GLuint offset);
+typedef void (APIENTRY * PFNGLGETVARIANTARRAYOBJECTFVATIPROC) (GLuint id, GLenum pname, GLfloat *params);
+typedef void (APIENTRY * PFNGLGETVARIANTARRAYOBJECTIVATIPROC) (GLuint id, GLenum pname, GLint *params);
+#endif
+
+#ifndef GL_EXT_vertex_shader
+#define GL_EXT_vertex_shader 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glBeginVertexShaderEXT (void);
+GLAPI void APIENTRY glEndVertexShaderEXT (void);
+GLAPI void APIENTRY glBindVertexShaderEXT (GLuint);
+GLAPI GLuint APIENTRY glGenVertexShadersEXT (GLuint);
+GLAPI void APIENTRY glDeleteVertexShaderEXT (GLuint);
+GLAPI void APIENTRY glShaderOp1EXT (GLenum, GLuint, GLuint);
+GLAPI void APIENTRY glShaderOp2EXT (GLenum, GLuint, GLuint, GLuint);
+GLAPI void APIENTRY glShaderOp3EXT (GLenum, GLuint, GLuint, GLuint, GLuint);
+GLAPI void APIENTRY glSwizzleEXT (GLuint, GLuint, GLenum, GLenum, GLenum, GLenum);
+GLAPI void APIENTRY glWriteMaskEXT (GLuint, GLuint, GLenum, GLenum, GLenum, GLenum);
+GLAPI void APIENTRY glInsertComponentEXT (GLuint, GLuint, GLuint);
+GLAPI void APIENTRY glExtractComponentEXT (GLuint, GLuint, GLuint);
+GLAPI GLuint APIENTRY glGenSymbolsEXT (GLenum, GLenum, GLenum, GLuint);
+GLAPI void APIENTRY glSetInvariantEXT (GLuint, GLenum, const void *);
+GLAPI void APIENTRY glSetLocalConstantEXT (GLuint, GLenum, const void *);
+GLAPI void APIENTRY glVariantbvEXT (GLuint, const GLbyte *);
+GLAPI void APIENTRY glVariantsvEXT (GLuint, const GLshort *);
+GLAPI void APIENTRY glVariantivEXT (GLuint, const GLint *);
+GLAPI void APIENTRY glVariantfvEXT (GLuint, const GLfloat *);
+GLAPI void APIENTRY glVariantdvEXT (GLuint, const GLdouble *);
+GLAPI void APIENTRY glVariantubvEXT (GLuint, const GLubyte *);
+GLAPI void APIENTRY glVariantusvEXT (GLuint, const GLushort *);
+GLAPI void APIENTRY glVariantuivEXT (GLuint, const GLuint *);
+GLAPI void APIENTRY glVariantPointerEXT (GLuint, GLenum, GLuint, const void *);
+GLAPI void APIENTRY glEnableVariantClientStateEXT (GLuint);
+GLAPI void APIENTRY glDisableVariantClientStateEXT (GLuint);
+GLAPI GLuint APIENTRY glBindLightParameterEXT (GLenum, GLenum);
+GLAPI GLuint APIENTRY glBindMaterialParameterEXT (GLenum, GLenum);
+GLAPI GLuint APIENTRY glBindTexGenParameterEXT (GLenum, GLenum, GLenum);
+GLAPI GLuint APIENTRY glBindTextureUnitParameterEXT (GLenum, GLenum);
+GLAPI GLuint APIENTRY glBindParameterEXT (GLenum);
+GLAPI GLboolean APIENTRY glIsVariantEnabledEXT (GLuint, GLenum);
+GLAPI void APIENTRY glGetVariantBooleanvEXT (GLuint, GLenum, GLboolean *);
+GLAPI void APIENTRY glGetVariantIntegervEXT (GLuint, GLenum, GLint *);
+GLAPI void APIENTRY glGetVariantFloatvEXT (GLuint, GLenum, GLfloat *);
+GLAPI void APIENTRY glGetVariantPointervEXT (GLuint, GLenum, GLvoid* *);
+GLAPI void APIENTRY glGetInvariantBooleanvEXT (GLuint, GLenum, GLboolean *);
+GLAPI void APIENTRY glGetInvariantIntegervEXT (GLuint, GLenum, GLint *);
+GLAPI void APIENTRY glGetInvariantFloatvEXT (GLuint, GLenum, GLfloat *);
+GLAPI void APIENTRY glGetLocalConstantBooleanvEXT (GLuint, GLenum, GLboolean *);
+GLAPI void APIENTRY glGetLocalConstantIntegervEXT (GLuint, GLenum, GLint *);
+GLAPI void APIENTRY glGetLocalConstantFloatvEXT (GLuint, GLenum, GLfloat *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRY * PFNGLBEGINVERTEXSHADEREXTPROC) (void);
+typedef void (APIENTRY * PFNGLENDVERTEXSHADEREXTPROC) (void);
+typedef void (APIENTRY * PFNGLBINDVERTEXSHADEREXTPROC) (GLuint id);
+typedef GLuint (APIENTRY * PFNGLGENVERTEXSHADERSEXTPROC) (GLuint range);
+typedef void (APIENTRY * PFNGLDELETEVERTEXSHADEREXTPROC) (GLuint id);
+typedef void (APIENTRY * PFNGLSHADEROP1EXTPROC) (GLenum op, GLuint res, GLuint arg1);
+typedef void (APIENTRY * PFNGLSHADEROP2EXTPROC) (GLenum op, GLuint res, GLuint arg1, GLuint arg2);
+typedef void (APIENTRY * PFNGLSHADEROP3EXTPROC) (GLenum op, GLuint res, GLuint arg1, GLuint arg2, GLuint arg3);
+typedef void (APIENTRY * PFNGLSWIZZLEEXTPROC) (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW);
+typedef void (APIENTRY * PFNGLWRITEMASKEXTPROC) (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW);
+typedef void (APIENTRY * PFNGLINSERTCOMPONENTEXTPROC) (GLuint res, GLuint src, GLuint num);
+typedef void (APIENTRY * PFNGLEXTRACTCOMPONENTEXTPROC) (GLuint res, GLuint src, GLuint num);
+typedef GLuint (APIENTRY * PFNGLGENSYMBOLSEXTPROC) (GLenum datatype, GLenum storagetype, GLenum range, GLuint components);
+typedef void (APIENTRY * PFNGLSETINVARIANTEXTPROC) (GLuint id, GLenum type, const void *addr);
+typedef void (APIENTRY * PFNGLSETLOCALCONSTANTEXTPROC) (GLuint id, GLenum type, const void *addr);
+typedef void (APIENTRY * PFNGLVARIANTBVEXTPROC) (GLuint id, const GLbyte *addr);
+typedef void (APIENTRY * PFNGLVARIANTSVEXTPROC) (GLuint id, const GLshort *addr);
+typedef void (APIENTRY * PFNGLVARIANTIVEXTPROC) (GLuint id, const GLint *addr);
+typedef void (APIENTRY * PFNGLVARIANTFVEXTPROC) (GLuint id, const GLfloat *addr);
+typedef void (APIENTRY * PFNGLVARIANTDVEXTPROC) (GLuint id, const GLdouble *addr);
+typedef void (APIENTRY * PFNGLVARIANTUBVEXTPROC) (GLuint id, const GLubyte *addr);
+typedef void (APIENTRY * PFNGLVARIANTUSVEXTPROC) (GLuint id, const GLushort *addr);
+typedef void (APIENTRY * PFNGLVARIANTUIVEXTPROC) (GLuint id, const GLuint *addr);
+typedef void (APIENTRY * PFNGLVARIANTPOINTEREXTPROC) (GLuint id, GLenum type, GLuint stride, const void *addr);
+typedef void (APIENTRY * PFNGLENABLEVARIANTCLIENTSTATEEXTPROC) (GLuint id);
+typedef void (APIENTRY * PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC) (GLuint id);
+typedef GLuint (APIENTRY * PFNGLBINDLIGHTPARAMETEREXTPROC) (GLenum light, GLenum value);
+typedef GLuint (APIENTRY * PFNGLBINDMATERIALPARAMETEREXTPROC) (GLenum face, GLenum value);
+typedef GLuint (APIENTRY * PFNGLBINDTEXGENPARAMETEREXTPROC) (GLenum unit, GLenum coord, GLenum value);
+typedef GLuint (APIENTRY * PFNGLBINDTEXTUREUNITPARAMETEREXTPROC) (GLenum unit, GLenum value);
+typedef GLuint (APIENTRY * PFNGLBINDPARAMETEREXTPROC) (GLenum value);
+typedef GLboolean (APIENTRY * PFNGLISVARIANTENABLEDEXTPROC) (GLuint id, GLenum cap);
+typedef void (APIENTRY * PFNGLGETVARIANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data);
+typedef void (APIENTRY * PFNGLGETVARIANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data);
+typedef void (APIENTRY * PFNGLGETVARIANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data);
+typedef void (APIENTRY * PFNGLGETVARIANTPOINTERVEXTPROC) (GLuint id, GLenum value, GLvoid* *data);
+typedef void (APIENTRY * PFNGLGETINVARIANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data);
+typedef void (APIENTRY * PFNGLGETINVARIANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data);
+typedef void (APIENTRY * PFNGLGETINVARIANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data);
+typedef void (APIENTRY * PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data);
+typedef void (APIENTRY * PFNGLGETLOCALCONSTANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data);
+typedef void (APIENTRY * PFNGLGETLOCALCONSTANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data);
+#endif
+
+#ifndef GL_ATI_vertex_streams
+#define GL_ATI_vertex_streams 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glVertexStream1sATI (GLenum, GLshort);
+GLAPI void APIENTRY glVertexStream1svATI (GLenum, const GLshort *);
+GLAPI void APIENTRY glVertexStream1iATI (GLenum, GLint);
+GLAPI void APIENTRY glVertexStream1ivATI (GLenum, const GLint *);
+GLAPI void APIENTRY glVertexStream1fATI (GLenum, GLfloat);
+GLAPI void APIENTRY glVertexStream1fvATI (GLenum, const GLfloat *);
+GLAPI void APIENTRY glVertexStream1dATI (GLenum, GLdouble);
+GLAPI void APIENTRY glVertexStream1dvATI (GLenum, const GLdouble *);
+GLAPI void APIENTRY glVertexStream2sATI (GLenum, GLshort, GLshort);
+GLAPI void APIENTRY glVertexStream2svATI (GLenum, const GLshort *);
+GLAPI void APIENTRY glVertexStream2iATI (GLenum, GLint, GLint);
+GLAPI void APIENTRY glVertexStream2ivATI (GLenum, const GLint *);
+GLAPI void APIENTRY glVertexStream2fATI (GLenum, GLfloat, GLfloat);
+GLAPI void APIENTRY glVertexStream2fvATI (GLenum, const GLfloat *);
+GLAPI void APIENTRY glVertexStream2dATI (GLenum, GLdouble, GLdouble);
+GLAPI void APIENTRY glVertexStream2dvATI (GLenum, const GLdouble *);
+GLAPI void APIENTRY glVertexStream3sATI (GLenum, GLshort, GLshort, GLshort);
+GLAPI void APIENTRY glVertexStream3svATI (GLenum, const GLshort *);
+GLAPI void APIENTRY glVertexStream3iATI (GLenum, GLint, GLint, GLint);
+GLAPI void APIENTRY glVertexStream3ivATI (GLenum, const GLint *);
+GLAPI void APIENTRY glVertexStream3fATI (GLenum, GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glVertexStream3fvATI (GLenum, const GLfloat *);
+GLAPI void APIENTRY glVertexStream3dATI (GLenum, GLdouble, GLdouble, GLdouble);
+GLAPI void APIENTRY glVertexStream3dvATI (GLenum, const GLdouble *);
+GLAPI void APIENTRY glVertexStream4sATI (GLenum, GLshort, GLshort, GLshort, GLshort);
+GLAPI void APIENTRY glVertexStream4svATI (GLenum, const GLshort *);
+GLAPI void APIENTRY glVertexStream4iATI (GLenum, GLint, GLint, GLint, GLint);
+GLAPI void APIENTRY glVertexStream4ivATI (GLenum, const GLint *);
+GLAPI void APIENTRY glVertexStream4fATI (GLenum, GLfloat, GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glVertexStream4fvATI (GLenum, const GLfloat *);
+GLAPI void APIENTRY glVertexStream4dATI (GLenum, GLdouble, GLdouble, GLdouble, GLdouble);
+GLAPI void APIENTRY glVertexStream4dvATI (GLenum, const GLdouble *);
+GLAPI void APIENTRY glNormalStream3bATI (GLenum, GLbyte, GLbyte, GLbyte);
+GLAPI void APIENTRY glNormalStream3bvATI (GLenum, const GLbyte *);
+GLAPI void APIENTRY glNormalStream3sATI (GLenum, GLshort, GLshort, GLshort);
+GLAPI void APIENTRY glNormalStream3svATI (GLenum, const GLshort *);
+GLAPI void APIENTRY glNormalStream3iATI (GLenum, GLint, GLint, GLint);
+GLAPI void APIENTRY glNormalStream3ivATI (GLenum, const GLint *);
+GLAPI void APIENTRY glNormalStream3fATI (GLenum, GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glNormalStream3fvATI (GLenum, const GLfloat *);
+GLAPI void APIENTRY glNormalStream3dATI (GLenum, GLdouble, GLdouble, GLdouble);
+GLAPI void APIENTRY glNormalStream3dvATI (GLenum, const GLdouble *);
+GLAPI void APIENTRY glClientActiveVertexStreamATI (GLenum);
+GLAPI void APIENTRY glVertexBlendEnviATI (GLenum, GLint);
+GLAPI void APIENTRY glVertexBlendEnvfATI (GLenum, GLfloat);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRY * PFNGLVERTEXSTREAM1SATIPROC) (GLenum stream, GLshort x);
+typedef void (APIENTRY * PFNGLVERTEXSTREAM1SVATIPROC) (GLenum stream, const GLshort *coords);
+typedef void (APIENTRY * PFNGLVERTEXSTREAM1IATIPROC) (GLenum stream, GLint x);
+typedef void (APIENTRY * PFNGLVERTEXSTREAM1IVATIPROC) (GLenum stream, const GLint *coords);
+typedef void (APIENTRY * PFNGLVERTEXSTREAM1FATIPROC) (GLenum stream, GLfloat x);
+typedef void (APIENTRY * PFNGLVERTEXSTREAM1FVATIPROC) (GLenum stream, const GLfloat *coords);
+typedef void (APIENTRY * PFNGLVERTEXSTREAM1DATIPROC) (GLenum stream, GLdouble x);
+typedef void (APIENTRY * PFNGLVERTEXSTREAM1DVATIPROC) (GLenum stream, const GLdouble *coords);
+typedef void (APIENTRY * PFNGLVERTEXSTREAM2SATIPROC) (GLenum stream, GLshort x, GLshort y);
+typedef void (APIENTRY * PFNGLVERTEXSTREAM2SVATIPROC) (GLenum stream, const GLshort *coords);
+typedef void (APIENTRY * PFNGLVERTEXSTREAM2IATIPROC) (GLenum stream, GLint x, GLint y);
+typedef void (APIENTRY * PFNGLVERTEXSTREAM2IVATIPROC) (GLenum stream, const GLint *coords);
+typedef void (APIENTRY * PFNGLVERTEXSTREAM2FATIPROC) (GLenum stream, GLfloat x, GLfloat y);
+typedef void (APIENTRY * PFNGLVERTEXSTREAM2FVATIPROC) (GLenum stream, const GLfloat *coords);
+typedef void (APIENTRY * PFNGLVERTEXSTREAM2DATIPROC) (GLenum stream, GLdouble x, GLdouble y);
+typedef void (APIENTRY * PFNGLVERTEXSTREAM2DVATIPROC) (GLenum stream, const GLdouble *coords);
+typedef void (APIENTRY * PFNGLVERTEXSTREAM3SATIPROC) (GLenum stream, GLshort x, GLshort y, GLshort z);
+typedef void (APIENTRY * PFNGLVERTEXSTREAM3SVATIPROC) (GLenum stream, const GLshort *coords);
+typedef void (APIENTRY * PFNGLVERTEXSTREAM3IATIPROC) (GLenum stream, GLint x, GLint y, GLint z);
+typedef void (APIENTRY * PFNGLVERTEXSTREAM3IVATIPROC) (GLenum stream, const GLint *coords);
+typedef void (APIENTRY * PFNGLVERTEXSTREAM3FATIPROC) (GLenum stream, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRY * PFNGLVERTEXSTREAM3FVATIPROC) (GLenum stream, const GLfloat *coords);
+typedef void (APIENTRY * PFNGLVERTEXSTREAM3DATIPROC) (GLenum stream, GLdouble x, GLdouble y, GLdouble z);
+typedef void (APIENTRY * PFNGLVERTEXSTREAM3DVATIPROC) (GLenum stream, const GLdouble *coords);
+typedef void (APIENTRY * PFNGLVERTEXSTREAM4SATIPROC) (GLenum stream, GLshort x, GLshort y, GLshort z, GLshort w);
+typedef void (APIENTRY * PFNGLVERTEXSTREAM4SVATIPROC) (GLenum stream, const GLshort *coords);
+typedef void (APIENTRY * PFNGLVERTEXSTREAM4IATIPROC) (GLenum stream, GLint x, GLint y, GLint z, GLint w);
+typedef void (APIENTRY * PFNGLVERTEXSTREAM4IVATIPROC) (GLenum stream, const GLint *coords);
+typedef void (APIENTRY * PFNGLVERTEXSTREAM4FATIPROC) (GLenum stream, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+typedef void (APIENTRY * PFNGLVERTEXSTREAM4FVATIPROC) (GLenum stream, const GLfloat *coords);
+typedef void (APIENTRY * PFNGLVERTEXSTREAM4DATIPROC) (GLenum stream, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (APIENTRY * PFNGLVERTEXSTREAM4DVATIPROC) (GLenum stream, const GLdouble *coords);
+typedef void (APIENTRY * PFNGLNORMALSTREAM3BATIPROC) (GLenum stream, GLbyte nx, GLbyte ny, GLbyte nz);
+typedef void (APIENTRY * PFNGLNORMALSTREAM3BVATIPROC) (GLenum stream, const GLbyte *coords);
+typedef void (APIENTRY * PFNGLNORMALSTREAM3SATIPROC) (GLenum stream, GLshort nx, GLshort ny, GLshort nz);
+typedef void (APIENTRY * PFNGLNORMALSTREAM3SVATIPROC) (GLenum stream, const GLshort *coords);
+typedef void (APIENTRY * PFNGLNORMALSTREAM3IATIPROC) (GLenum stream, GLint nx, GLint ny, GLint nz);
+typedef void (APIENTRY * PFNGLNORMALSTREAM3IVATIPROC) (GLenum stream, const GLint *coords);
+typedef void (APIENTRY * PFNGLNORMALSTREAM3FATIPROC) (GLenum stream, GLfloat nx, GLfloat ny, GLfloat nz);
+typedef void (APIENTRY * PFNGLNORMALSTREAM3FVATIPROC) (GLenum stream, const GLfloat *coords);
+typedef void (APIENTRY * PFNGLNORMALSTREAM3DATIPROC) (GLenum stream, GLdouble nx, GLdouble ny, GLdouble nz);
+typedef void (APIENTRY * PFNGLNORMALSTREAM3DVATIPROC) (GLenum stream, const GLdouble *coords);
+typedef void (APIENTRY * PFNGLCLIENTACTIVEVERTEXSTREAMATIPROC) (GLenum stream);
+typedef void (APIENTRY * PFNGLVERTEXBLENDENVIATIPROC) (GLenum pname, GLint param);
+typedef void (APIENTRY * PFNGLVERTEXBLENDENVFATIPROC) (GLenum pname, GLfloat param);
+#endif
+
+#ifndef GL_ATI_element_array
+#define GL_ATI_element_array 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glElementPointerATI (GLenum, const GLvoid *);
+GLAPI void APIENTRY glDrawElementArrayATI (GLenum, GLsizei);
+GLAPI void APIENTRY glDrawRangeElementArrayATI (GLenum, GLuint, GLuint, GLsizei);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRY * PFNGLELEMENTPOINTERATIPROC) (GLenum type, const GLvoid *pointer);
+typedef void (APIENTRY * PFNGLDRAWELEMENTARRAYATIPROC) (GLenum mode, GLsizei count);
+typedef void (APIENTRY * PFNGLDRAWRANGEELEMENTARRAYATIPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count);
+#endif
+
+#ifndef GL_SUN_mesh_array
+#define GL_SUN_mesh_array 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glDrawMeshArraysSUN (GLenum, GLint, GLsizei, GLsizei);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRY * PFNGLDRAWMESHARRAYSSUNPROC) (GLenum mode, GLint first, GLsizei count, GLsizei width);
+#endif
+
+#ifndef GL_SUN_slice_accum
+#define GL_SUN_slice_accum 1
+#endif
+
+#ifndef GL_NV_multisample_filter_hint
+#define GL_NV_multisample_filter_hint 1
+#endif
+
+#ifndef GL_NV_depth_clamp
+#define GL_NV_depth_clamp 1
+#endif
+
+#ifndef GL_NV_occlusion_query
+#define GL_NV_occlusion_query 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glGenOcclusionQueriesNV (GLsizei, GLuint *);
+GLAPI void APIENTRY glDeleteOcclusionQueriesNV (GLsizei, const GLuint *);
+GLAPI GLboolean APIENTRY glIsOcclusionQueryNV (GLuint);
+GLAPI void APIENTRY glBeginOcclusionQueryNV (GLuint);
+GLAPI void APIENTRY glEndOcclusionQueryNV (void);
+GLAPI void APIENTRY glGetOcclusionQueryivNV (GLuint, GLenum, GLint *);
+GLAPI void APIENTRY glGetOcclusionQueryuivNV (GLuint, GLenum, GLuint *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRY * PFNGLGENOCCLUSIONQUERIESNVPROC) (GLsizei n, GLuint *ids);
+typedef void (APIENTRY * PFNGLDELETEOCCLUSIONQUERIESNVPROC) (GLsizei n, const GLuint *ids);
+typedef GLboolean (APIENTRY * PFNGLISOCCLUSIONQUERYNVPROC) (GLuint id);
+typedef void (APIENTRY * PFNGLBEGINOCCLUSIONQUERYNVPROC) (GLuint id);
+typedef void (APIENTRY * PFNGLENDOCCLUSIONQUERYNVPROC) (void);
+typedef void (APIENTRY * PFNGLGETOCCLUSIONQUERYIVNVPROC) (GLuint id, GLenum pname, GLint *params);
+typedef void (APIENTRY * PFNGLGETOCCLUSIONQUERYUIVNVPROC) (GLuint id, GLenum pname, GLuint *params);
+#endif
+
+#ifndef GL_NV_point_sprite
+#define GL_NV_point_sprite 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glPointParameteriNV (GLenum, GLint);
+GLAPI void APIENTRY glPointParameterivNV (GLenum, const GLint *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRY * PFNGLPOINTPARAMETERINVPROC) (GLenum pname, GLint param);
+typedef void (APIENTRY * PFNGLPOINTPARAMETERIVNVPROC) (GLenum pname, const GLint *params);
+#endif
+
+#ifndef GL_NV_texture_shader3
+#define GL_NV_texture_shader3 1
+#endif
+
+#ifndef GL_NV_vertex_program1_1
+#define GL_NV_vertex_program1_1 1
+#endif
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
Index: Daodan/MinGW/include/GL/glu.h
===================================================================
--- Daodan/MinGW/include/GL/glu.h	(revision 1046)
+++ Daodan/MinGW/include/GL/glu.h	(revision 1046)
@@ -0,0 +1,289 @@
+/*
+** License Applicability. Except to the extent portions of this file are
+** made subject to an alternative license as permitted in the SGI Free
+** Software License B, Version 1.1 (the "License"), the contents of this
+** file are subject only to the provisions of the License. You may not use
+** this file except in compliance with the License. You may obtain a copy
+** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600
+** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:
+**
+** http://oss.sgi.com/projects/FreeB
+**
+** Note that, as provided in the License, the Software is distributed on an
+** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS
+** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND
+** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A
+** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
+**
+** Original Code. The Original Code is: OpenGL Sample Implementation,
+** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,
+** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.
+** Copyright in any portions created by third parties is as indicated
+** elsewhere herein. All Rights Reserved.
+**
+** Additional Notice Provisions: This software was created using the
+** OpenGL(R) version 1.2.1 Sample Implementation published by SGI, but has
+** not been independently verified as being compliant with the OpenGL(R)
+** version 1.2.1 Specification.
+*/
+
+#ifndef __glu_h__
+#define __glu_h__
+#define _GLU_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#include <stddef.h> /* for wchar_t */
+#include <GL/gl.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*************************************************************/
+
+/* Boolean */
+#define GLU_FALSE                          0
+#define GLU_TRUE                           1
+
+/* Version */
+#define GLU_VERSION_1_1                    1
+#define GLU_VERSION_1_2                    1
+
+/* StringName */
+#define GLU_VERSION                        100800
+#define GLU_EXTENSIONS                     100801
+
+/* ErrorCode */
+#define GLU_INVALID_ENUM                   100900
+#define GLU_INVALID_VALUE                  100901
+#define GLU_OUT_OF_MEMORY                  100902
+#define GLU_INVALID_OPERATION              100904
+
+/* NurbsDisplay */
+/*      GLU_FILL */
+#define GLU_OUTLINE_POLYGON                100240
+#define GLU_OUTLINE_PATCH                  100241
+
+/* NurbsError */
+#define GLU_NURBS_ERROR1                   100251
+#define GLU_NURBS_ERROR2                   100252
+#define GLU_NURBS_ERROR3                   100253
+#define GLU_NURBS_ERROR4                   100254
+#define GLU_NURBS_ERROR5                   100255
+#define GLU_NURBS_ERROR6                   100256
+#define GLU_NURBS_ERROR7                   100257
+#define GLU_NURBS_ERROR8                   100258
+#define GLU_NURBS_ERROR9                   100259
+#define GLU_NURBS_ERROR10                  100260
+#define GLU_NURBS_ERROR11                  100261
+#define GLU_NURBS_ERROR12                  100262
+#define GLU_NURBS_ERROR13                  100263
+#define GLU_NURBS_ERROR14                  100264
+#define GLU_NURBS_ERROR15                  100265
+#define GLU_NURBS_ERROR16                  100266
+#define GLU_NURBS_ERROR17                  100267
+#define GLU_NURBS_ERROR18                  100268
+#define GLU_NURBS_ERROR19                  100269
+#define GLU_NURBS_ERROR20                  100270
+#define GLU_NURBS_ERROR21                  100271
+#define GLU_NURBS_ERROR22                  100272
+#define GLU_NURBS_ERROR23                  100273
+#define GLU_NURBS_ERROR24                  100274
+#define GLU_NURBS_ERROR25                  100275
+#define GLU_NURBS_ERROR26                  100276
+#define GLU_NURBS_ERROR27                  100277
+#define GLU_NURBS_ERROR28                  100278
+#define GLU_NURBS_ERROR29                  100279
+#define GLU_NURBS_ERROR30                  100280
+#define GLU_NURBS_ERROR31                  100281
+#define GLU_NURBS_ERROR32                  100282
+#define GLU_NURBS_ERROR33                  100283
+#define GLU_NURBS_ERROR34                  100284
+#define GLU_NURBS_ERROR35                  100285
+#define GLU_NURBS_ERROR36                  100286
+#define GLU_NURBS_ERROR37                  100287
+
+/* NurbsProperty */
+#define GLU_AUTO_LOAD_MATRIX               100200
+#define GLU_CULLING                        100201
+#define GLU_SAMPLING_TOLERANCE             100203
+#define GLU_DISPLAY_MODE                   100204
+#define GLU_PARAMETRIC_TOLERANCE           100202
+#define GLU_SAMPLING_METHOD                100205
+#define GLU_U_STEP                         100206
+#define GLU_V_STEP                         100207
+
+/* NurbsSampling */
+#define GLU_PATH_LENGTH                    100215
+#define GLU_PARAMETRIC_ERROR               100216
+#define GLU_DOMAIN_DISTANCE                100217
+
+/* NurbsTrim */
+#define GLU_MAP1_TRIM_2                    100210
+#define GLU_MAP1_TRIM_3                    100211
+
+/* QuadricDrawStyle */
+#define GLU_POINT                          100010
+#define GLU_LINE                           100011
+#define GLU_FILL                           100012
+#define GLU_SILHOUETTE                     100013
+
+/* QuadricCallback */
+#define GLU_ERROR                          100103
+
+/* QuadricNormal */
+#define GLU_SMOOTH                         100000
+#define GLU_FLAT                           100001
+#define GLU_NONE                           100002
+
+/* QuadricOrientation */
+#define GLU_OUTSIDE                        100020
+#define GLU_INSIDE                         100021
+
+/* TessCallback */
+#define GLU_TESS_BEGIN                     100100
+#define GLU_BEGIN                          100100
+#define GLU_TESS_VERTEX                    100101
+#define GLU_VERTEX                         100101
+#define GLU_TESS_END                       100102
+#define GLU_END                            100102
+#define GLU_TESS_ERROR                     100103
+#define GLU_TESS_EDGE_FLAG                 100104
+#define GLU_EDGE_FLAG                      100104
+#define GLU_TESS_COMBINE                   100105
+#define GLU_TESS_BEGIN_DATA                100106
+#define GLU_TESS_VERTEX_DATA               100107
+#define GLU_TESS_END_DATA                  100108
+#define GLU_TESS_ERROR_DATA                100109
+#define GLU_TESS_EDGE_FLAG_DATA            100110
+#define GLU_TESS_COMBINE_DATA              100111
+
+/* TessContour */
+#define GLU_CW                             100120
+#define GLU_CCW                            100121
+#define GLU_INTERIOR                       100122
+#define GLU_EXTERIOR                       100123
+#define GLU_UNKNOWN                        100124
+
+/* TessProperty */
+#define GLU_TESS_WINDING_RULE              100140
+#define GLU_TESS_BOUNDARY_ONLY             100141
+#define GLU_TESS_TOLERANCE                 100142
+
+/* TessError */
+#define GLU_TESS_ERROR1                    100151
+#define GLU_TESS_ERROR2                    100152
+#define GLU_TESS_ERROR3                    100153
+#define GLU_TESS_ERROR4                    100154
+#define GLU_TESS_ERROR5                    100155
+#define GLU_TESS_ERROR6                    100156
+#define GLU_TESS_ERROR7                    100157
+#define GLU_TESS_ERROR8                    100158
+#define GLU_TESS_MISSING_BEGIN_POLYGON     100151
+#define GLU_TESS_MISSING_BEGIN_CONTOUR     100152
+#define GLU_TESS_MISSING_END_POLYGON       100153
+#define GLU_TESS_MISSING_END_CONTOUR       100154
+#define GLU_TESS_COORD_TOO_LARGE           100155
+#define GLU_TESS_NEED_COMBINE_CALLBACK     100156
+
+/* TessWinding */
+#define GLU_TESS_WINDING_ODD               100130
+#define GLU_TESS_WINDING_NONZERO           100131
+#define GLU_TESS_WINDING_POSITIVE          100132
+#define GLU_TESS_WINDING_NEGATIVE          100133
+#define GLU_TESS_WINDING_ABS_GEQ_TWO       100134
+
+/* Obsolete. For compatibility with previous Sun OpenGL versions */
+#define GLU_INCOMPATIBLE_GL_VERSION        100903
+
+
+/*************************************************************/
+
+
+#ifdef __cplusplus
+class GLUnurbs;
+class GLUquadric;
+class GLUtesselator;
+#else
+typedef struct GLUnurbs GLUnurbs;
+typedef struct GLUquadric GLUquadric;
+typedef struct GLUtesselator GLUtesselator;
+#endif
+
+typedef GLUnurbs GLUnurbsObj;
+typedef GLUquadric GLUquadricObj;
+typedef GLUtesselator GLUtesselatorObj;
+typedef GLUtesselator GLUtriangulatorObj;
+
+#define GLU_TESS_MAX_COORD 1.0e150
+
+/* Internal convenience typedefs */
+typedef void (APIENTRY *_GLUfuncptr)();
+
+GLAPI void APIENTRY gluBeginCurve (GLUnurbs* nurb);
+GLAPI void APIENTRY gluBeginPolygon (GLUtesselator* tess);
+GLAPI void APIENTRY gluBeginSurface (GLUnurbs* nurb);
+GLAPI void APIENTRY gluBeginTrim (GLUnurbs* nurb);
+GLAPI GLint APIENTRY gluBuild1DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, const void *data);
+GLAPI GLint APIENTRY gluBuild2DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *data);
+GLAPI void APIENTRY gluCylinder (GLUquadric* quad, GLdouble base, GLdouble top, GLdouble height, GLint slices, GLint stacks);
+GLAPI void APIENTRY gluDeleteNurbsRenderer (GLUnurbs* nurb);
+GLAPI void APIENTRY gluDeleteQuadric (GLUquadric* quad);
+GLAPI void APIENTRY gluDeleteTess (GLUtesselator* tess);
+GLAPI void APIENTRY gluDisk (GLUquadric* quad, GLdouble inner, GLdouble outer, GLint slices, GLint loops);
+GLAPI void APIENTRY gluEndCurve (GLUnurbs* nurb);
+GLAPI void APIENTRY gluEndPolygon (GLUtesselator* tess);
+GLAPI void APIENTRY gluEndSurface (GLUnurbs* nurb);
+GLAPI void APIENTRY gluEndTrim (GLUnurbs* nurb);
+GLAPI const GLubyte * APIENTRY gluErrorString (GLenum error);
+GLAPI const wchar_t * APIENTRY gluErrorUnicodeStringEXT (GLenum error);
+GLAPI void APIENTRY gluGetNurbsProperty (GLUnurbs* nurb, GLenum property, GLfloat* data);
+GLAPI const GLubyte * APIENTRY gluGetString (GLenum name);
+GLAPI void APIENTRY gluGetTessProperty (GLUtesselator* tess, GLenum which, GLdouble* data);
+GLAPI void APIENTRY gluLoadSamplingMatrices (GLUnurbs* nurb, const GLfloat *model, const GLfloat *perspective, const GLint *view);
+GLAPI void APIENTRY gluLookAt (GLdouble eyeX, GLdouble eyeY, GLdouble eyeZ, GLdouble centerX, GLdouble centerY, GLdouble centerZ, GLdouble upX, GLdouble upY, GLdouble upZ);
+GLAPI GLUnurbs* APIENTRY gluNewNurbsRenderer (void);
+GLAPI GLUquadric* APIENTRY gluNewQuadric (void);
+GLAPI GLUtesselator* APIENTRY gluNewTess (void);
+GLAPI void APIENTRY gluNextContour (GLUtesselator* tess, GLenum type);
+GLAPI void APIENTRY gluNurbsCallback (GLUnurbs* nurb, GLenum which, _GLUfuncptr CallBackFunc);
+GLAPI void APIENTRY gluNurbsCurve (GLUnurbs* nurb, GLint knotCount, GLfloat *knots, GLint stride, GLfloat *control, GLint order, GLenum type);
+GLAPI void APIENTRY gluNurbsProperty (GLUnurbs* nurb, GLenum property, GLfloat value);
+GLAPI void APIENTRY gluNurbsSurface (GLUnurbs* nurb, GLint sKnotCount, GLfloat* sKnots, GLint tKnotCount, GLfloat* tKnots, GLint sStride, GLint tStride, GLfloat* control, GLint sOrder, GLint tOrder, GLenum type);
+GLAPI void APIENTRY gluOrtho2D (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top);
+GLAPI void APIENTRY gluPartialDisk (GLUquadric* quad, GLdouble inner, GLdouble outer, GLint slices, GLint loops, GLdouble start, GLdouble sweep);
+GLAPI void APIENTRY gluPerspective (GLdouble fovy, GLdouble aspect, GLdouble zNear, GLdouble zFar);
+GLAPI void APIENTRY gluPickMatrix (GLdouble x, GLdouble y, GLdouble delX, GLdouble delY, GLint *viewport);
+GLAPI GLint APIENTRY gluProject (GLdouble objX, GLdouble objY, GLdouble objZ, const GLdouble *model, const GLdouble *proj, const GLint *view, GLdouble* winX, GLdouble* winY, GLdouble* winZ);
+GLAPI void APIENTRY gluPwlCurve (GLUnurbs* nurb, GLint count, GLfloat* data, GLint stride, GLenum type);
+GLAPI void APIENTRY gluQuadricCallback (GLUquadric* quad, GLenum which, _GLUfuncptr CallBackFunc);
+GLAPI void APIENTRY gluQuadricDrawStyle (GLUquadric* quad, GLenum draw);
+GLAPI void APIENTRY gluQuadricNormals (GLUquadric* quad, GLenum normal);
+GLAPI void APIENTRY gluQuadricOrientation (GLUquadric* quad, GLenum orientation);
+GLAPI void APIENTRY gluQuadricTexture (GLUquadric* quad, GLboolean texture);
+GLAPI GLint APIENTRY gluScaleImage (GLenum format, GLsizei wIn, GLsizei hIn, GLenum typeIn, const void *dataIn, GLsizei wOut, GLsizei hOut, GLenum typeOut, GLvoid* dataOut);
+GLAPI void APIENTRY gluSphere (GLUquadric* quad, GLdouble radius, GLint slices, GLint stacks);
+GLAPI void APIENTRY gluTessBeginContour (GLUtesselator* tess);
+GLAPI void APIENTRY gluTessBeginPolygon (GLUtesselator* tess, GLvoid* data);
+GLAPI void APIENTRY gluTessCallback (GLUtesselator* tess, GLenum which, _GLUfuncptr CallBackFunc);
+GLAPI void APIENTRY gluTessEndContour (GLUtesselator* tess);
+GLAPI void APIENTRY gluTessEndPolygon (GLUtesselator* tess);
+GLAPI void APIENTRY gluTessNormal (GLUtesselator* tess, GLdouble valueX, GLdouble valueY, GLdouble valueZ);
+GLAPI void APIENTRY gluTessProperty (GLUtesselator* tess, GLenum which, GLdouble data);
+GLAPI void APIENTRY gluTessVertex (GLUtesselator* tess, GLdouble *location, GLvoid* data);
+GLAPI GLint APIENTRY gluUnProject (GLdouble winX, GLdouble winY, GLdouble winZ, const GLdouble *model, const GLdouble *proj, const GLint *view, GLdouble* objX, GLdouble* objY, GLdouble* objZ);
+GLAPI GLint APIENTRY gluUnProject4 (GLdouble winX, GLdouble winY, GLdouble winZ, GLdouble clipW, const GLdouble *model, const GLdouble *proj, const GLint *view, GLdouble nearVal, GLdouble farVal, GLdouble* objX, GLdouble* objY, GLdouble* objZ, GLdouble* objW);
+
+#ifdef UNICODE
+#define gluErrorStringWIN gluErrorUnicodeStringEXT
+#else
+#define gluErrorStringWIN gluErrorString
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __glu_h__ */
Index: Daodan/MinGW/include/_mingw.h
===================================================================
--- Daodan/MinGW/include/_mingw.h	(revision 1046)
+++ Daodan/MinGW/include/_mingw.h	(revision 1046)
@@ -0,0 +1,461 @@
+#ifndef __MINGW_H
+/*
+ * _mingw.h
+ *
+ * MinGW specific macros included by ALL mingwrt include files; (this file
+ * is part of the MinGW32 runtime library package).
+ *
+ * $Id: _mingw.h.in,v 7daa0459f602 2016/05/03 17:40:54 keithmarshall $
+ *
+ * Written by Mumit Khan  <khan@xraylith.wisc.edu>
+ * Copyright (C) 1999, 2001-2011, 2014-2016, MinGW.org Project
+ *
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ *
+ */
+#define __MINGW_H
+
+/* In previous versions, __MINGW32_VERSION was expressed as a dotted
+ * numeric pair, representing major.minor; unfortunately, this doesn't
+ * adapt well to the inclusion of a patch-level component, since the
+ * major.minor.patch dotted triplet representation is not valid as a
+ * numeric entity.  Thus, for this version, we adopt a representation
+ * which encodes the version as a long integer value, expressing:
+ *
+ *   __MINGW32_VERSION = 1,000,000 * major + 1,000 * minor + patch
+ *
+ * DO NOT EDIT these package version assignments manually; they are
+ * derived from the package version specification within configure.ac,
+ * whence they are propagated automatically, at package build time.
+ */
+#define __MINGW32_VERSION           3022001L
+#define __MINGW32_MAJOR_VERSION           3
+#define __MINGW32_MINOR_VERSION          22
+#define __MINGW32_PATCHLEVEL              1
+
+#if __GNUC__ >= 3 && ! defined __PCC__
+#pragma GCC system_header
+#endif
+
+#ifndef _MSVCRTVER_H
+/* Legacy versions of mingwrt use the macro __MSVCRT_VERSION__ to
+ * enable evolving features of different MSVCRT.DLL versions.  This
+ * usage is no longer recommended, but the __MSVCRT_VERSION__ macro
+ * remains useful when a non-freely distributable MSVCRxx.DLL is to
+ * be substituted for MSVCRT.DLL; for such usage, the substitute
+ * MSVCRxx.DLL may be identified as specified in...
+ */
+# include <msvcrtver.h>
+#endif
+
+/* A better inference than __MSVCRT_VERSION__, of the capabilities
+ * supported by the operating system default MSVCRT.DLL, is provided
+ * by the Windows API version identification macros.
+ */
+#include <w32api.h>
+
+/* The following are defined by the user (or by the compiler), to specify how
+ * identifiers are imported from a DLL.  All headers should include this first,
+ * and then use __DECLSPEC_SUPPORTED to choose between the old ``__imp__name''
+ * style or the __MINGW_IMPORT style for declarations.
+ *
+ * __DECLSPEC_SUPPORTED            Defined if dllimport attribute is supported.
+ * __MINGW_IMPORT                  The attribute definition to specify imported
+ *                                 variables/functions.
+ * _CRTIMP                         As above.  For MS compatibility.
+ *
+ * Macros to enable MinGW features which deviate from standard MSVC
+ * compatible behaviour; these may be specified directly in user code,
+ * activated implicitly, (e.g. by specifying _POSIX_C_SOURCE or such),
+ * or by inclusion in __MINGW_FEATURES__:
+ *
+ * __USE_MINGW_ANSI_STDIO          Select a more ANSI C99 compatible
+ *                                 implementation of printf() and friends;
+ *                                 (users should not set this directly).
+ *
+ * Other macros:
+ *
+ * __int64                         define to be long long.  Using a typedef
+ *                                 doesn't work for "unsigned __int64"
+ *
+ *
+ * Manifest definitions for flags to control globbing of the command line
+ * during application start up, (before main() is called).  The first pair,
+ * when assigned as bit flags within _CRT_glob, select the globbing algorithm
+ * to be used; (the MINGW algorithm overrides MSCVRT, if both are specified).
+ * Prior to mingwrt-3.21, only the MSVCRT option was supported; this choice
+ * may produce different results, depending on which particular version of
+ * MSVCRT.DLL is in use; (in recent versions, it seems to have become
+ * definitively broken, when globbing within double quotes).
+ */
+#define __CRT_GLOB_USE_MSVCRT__  	0x0001
+
+/* From mingwrt-3.21 onward, this should be the preferred choice; it will
+ * produce consistent results, regardless of the MSVCRT.DLL version in use.
+ */
+#define __CRT_GLOB_USE_MINGW__   	0x0002
+
+/* When the __CRT_GLOB_USE_MINGW__ flag is set, within _CRT_glob, the
+ * following additional options are also available; they are not enabled
+ * by default, but the user may elect to enable any combination of them,
+ * by setting _CRT_glob to the boolean sum (i.e. logical OR combination)
+ * of __CRT_GLOB_USE_MINGW__ and the desired options.
+ *
+ *    __CRT_GLOB_USE_SINGLE_QUOTE__	allows use of single (apostrophe)
+ *    					quoting characters, analogously to
+ *    					POSIX usage, as an alternative to
+ *    					double quotes, for collection of
+ *    					arguments separated by white space
+ *    					into a single logical argument.
+ *
+ *    __CRT_GLOB_BRACKET_GROUPS__	enable interpretation of bracketed
+ *    					character groups as POSIX compatible
+ *    					globbing patterns, matching any one
+ *    					character which is either included
+ *    					in, or excluded from the group.
+ *
+ *    __CRT_GLOB_CASE_SENSITIVE__	enable case sensitive matching for
+ *    					globbing patterns; this is default
+ *    					behaviour for POSIX, but because of
+ *    					the case insensitive nature of the
+ *    					MS-Windows file system, it is more
+ *    					appropriate to use case insensitive
+ *    					globbing as the MinGW default.
+ *
+ */
+#define __CRT_GLOB_USE_SINGLE_QUOTE__	0x0010
+#define __CRT_GLOB_BRACKET_GROUPS__	0x0020
+#define __CRT_GLOB_CASE_SENSITIVE__	0x0040
+
+/* The MinGW globbing algorithm uses the ASCII DEL control code as a marker
+ * for globbing characters which were embedded within quoted arguments; (the
+ * quotes are stripped away BEFORE the argument is globbed; the globbing code
+ * treats the marked character as immutable, and strips out the DEL markers,
+ * before storing the resultant argument).  The DEL code is mapped to this
+ * function here; DO NOT change it, without rebuilding the runtime.
+ */
+#define __CRT_GLOB_ESCAPE_CHAR__	(char)(127)
+
+
+/* Manifest definitions identifying the flag bits, controlling activation
+ * of MinGW features, as specified by the user in __MINGW_FEATURES__.
+ */
+#define __MINGW_ANSI_STDIO__		0x0000000000000001ULL
+/*
+ * The following three are not yet formally supported; they are
+ * included here, to document anticipated future usage.
+ */
+#define __MINGW_LC_EXTENSIONS__ 	0x0000000000000050ULL
+#define __MINGW_LC_MESSAGES__		0x0000000000000010ULL
+#define __MINGW_LC_ENVVARS__		0x0000000000000040ULL
+
+
+/* Try to avoid problems with outdated checks for GCC __attribute__ support.
+ */
+#undef __attribute__
+
+#if defined (__PCC__)
+#  undef __DECLSPEC_SUPPORTED
+# ifndef __MINGW_IMPORT
+#  define __MINGW_IMPORT extern
+# endif
+# ifndef _CRTIMP
+#  define _CRTIMP
+# endif
+# ifndef __cdecl
+#  define __cdecl  _Pragma("cdecl")
+# endif
+# ifndef __stdcall
+#  define __stdcall _Pragma("stdcall")
+# endif
+# ifndef __int64
+#  define __int64 long long
+# endif
+# ifndef __int32
+#  define __int32 long
+# endif
+# ifndef __int16
+#  define __int16 short
+# endif
+# ifndef __int8
+#  define __int8 char
+# endif
+# ifndef __small
+#  define __small char
+# endif
+# ifndef __hyper
+#  define __hyper long long
+# endif
+# ifndef __volatile__
+#  define __volatile__ volatile
+# endif
+# ifndef __restrict__
+#  define __restrict__ restrict
+# endif
+# define NONAMELESSUNION
+#elif defined(__GNUC__)
+# ifdef __declspec
+#  ifndef __MINGW_IMPORT
+   /* Note the extern. This is needed to work around GCC's
+      limitations in handling dllimport attribute.  */
+#   define __MINGW_IMPORT  extern __attribute__((__dllimport__))
+#  endif
+#  ifndef _CRTIMP
+#   ifdef __USE_CRTIMP
+#    define _CRTIMP  __attribute__((dllimport))
+#   else
+#    define _CRTIMP
+#   endif
+#  endif
+#  define __DECLSPEC_SUPPORTED
+# else /* __declspec */
+#  undef __DECLSPEC_SUPPORTED
+#  undef __MINGW_IMPORT
+#  ifndef _CRTIMP
+#   define _CRTIMP
+#  endif
+# endif /* __declspec */
+/*
+ * The next two defines can cause problems if user code adds the
+ * __cdecl attribute like so:
+ * void __attribute__ ((__cdecl)) foo(void);
+ */
+# ifndef __cdecl
+#  define __cdecl  __attribute__((__cdecl__))
+# endif
+# ifndef __stdcall
+#  define __stdcall __attribute__((__stdcall__))
+# endif
+# ifndef __int64
+#  define __int64 long long
+# endif
+# ifndef __int32
+#  define __int32 long
+# endif
+# ifndef __int16
+#  define __int16 short
+# endif
+# ifndef __int8
+#  define __int8 char
+# endif
+# ifndef __small
+#  define __small char
+# endif
+# ifndef __hyper
+#  define __hyper long long
+# endif
+#else /* ! __GNUC__ && ! __PCC__ */
+# ifndef __MINGW_IMPORT
+#  define __MINGW_IMPORT  __declspec(dllimport)
+# endif
+# ifndef _CRTIMP
+#  define _CRTIMP  __declspec(dllimport)
+# endif
+# define __DECLSPEC_SUPPORTED
+# define __attribute__(x) /* nothing */
+#endif
+
+#if defined (__GNUC__) && defined (__GNUC_MINOR__)
+#define __MINGW_GNUC_PREREQ(major, minor) \
+  (__GNUC__ > (major) \
+   || (__GNUC__ == (major) && __GNUC_MINOR__ >= (minor)))
+#else
+#define __MINGW_GNUC_PREREQ(major, minor)  0
+#endif
+
+#ifdef __cplusplus
+# define __CRT_INLINE    inline
+#else
+# if __GNUC_STDC_INLINE__
+#  define __CRT_INLINE   extern inline __attribute__((__gnu_inline__))
+# else
+#  define __CRT_INLINE   extern __inline__
+# endif
+#endif
+
+# ifdef __GNUC__
+  /* A special form of __CRT_INLINE is provided; it will ALWAYS request
+   * inlining when possible.  Originally specified as _CRTALIAS, this is
+   * now deprecated in favour of __CRT_ALIAS, for syntactic consistency
+   * with __CRT_INLINE itself.
+   */
+#  define  _CRTALIAS   __CRT_INLINE __attribute__((__always_inline__))
+#  define __CRT_ALIAS  __CRT_INLINE __attribute__((__always_inline__))
+# else
+#  define  _CRTALIAS   __CRT_INLINE	/* deprecated form */
+#  define __CRT_ALIAS  __CRT_INLINE	/* preferred form */
+# endif
+/*
+ * Each function which is implemented as a __CRT_ALIAS should also be
+ * accompanied by an externally visible interface.  The following pair
+ * of macros provide a mechanism for implementing this, either as a stub
+ * redirecting to an alternative external function, or by compilation of
+ * the normally inlined code into free standing object code; each macro
+ * provides a way for us to offer arbitrary hints for use by the build
+ * system, while remaining transparent to the compiler.
+ */
+#define __JMPSTUB__(__BUILD_HINT__)
+#define __LIBIMPL__(__BUILD_HINT__)
+
+#ifdef __cplusplus
+# define __UNUSED_PARAM(x)
+#else
+# ifdef __GNUC__
+#  define __UNUSED_PARAM(x) x __attribute__((__unused__))
+# else
+#  define __UNUSED_PARAM(x) x
+# endif
+#endif
+
+#ifdef __GNUC__
+#define __MINGW_ATTRIB_NORETURN __attribute__((__noreturn__))
+#define __MINGW_ATTRIB_CONST __attribute__((__const__))
+#else
+#define __MINGW_ATTRIB_NORETURN
+#define __MINGW_ATTRIB_CONST
+#endif
+
+#if __MINGW_GNUC_PREREQ (3, 0)
+#define __MINGW_ATTRIB_MALLOC __attribute__((__malloc__))
+#define __MINGW_ATTRIB_PURE __attribute__((__pure__))
+#else
+#define __MINGW_ATTRIB_MALLOC
+#define __MINGW_ATTRIB_PURE
+#endif
+
+/* Attribute `nonnull' was valid as of gcc 3.3.  We don't use GCC's
+   variadiac macro facility, because variadic macros cause syntax
+   errors with  --traditional-cpp.  */
+#if  __MINGW_GNUC_PREREQ (3, 3)
+#define __MINGW_ATTRIB_NONNULL(arg) __attribute__((__nonnull__(arg)))
+#else
+#define __MINGW_ATTRIB_NONNULL(arg)
+#endif /* GNUC >= 3.3 */
+
+#if  __MINGW_GNUC_PREREQ (3, 1)
+#define __MINGW_ATTRIB_DEPRECATED __attribute__((__deprecated__))
+#else
+#define __MINGW_ATTRIB_DEPRECATED
+#endif /* GNUC >= 3.1 */
+
+#if  __MINGW_GNUC_PREREQ (3, 3)
+#define __MINGW_NOTHROW __attribute__((__nothrow__))
+#else
+#define __MINGW_NOTHROW
+#endif /* GNUC >= 3.3 */
+
+
+/* TODO: Mark (almost) all CRT functions as __MINGW_NOTHROW.  This will
+allow GCC to optimize away some EH unwind code, at least in DW2 case.  */
+
+/* Activation of MinGW specific extended features:
+ */
+#ifndef __USE_MINGW_ANSI_STDIO
+/* Users should not set this directly; rather, define one (or more)
+ * of the feature test macros (tabulated below), or specify any of the
+ * compiler's command line options, (e.g. -posix, -ansi, or -std=c...),
+ * which cause _POSIX_SOURCE, or __STRICT_ANSI__ to be defined.
+ *
+ * We must check this BEFORE we specifiy any implicit _POSIX_C_SOURCE,
+ * otherwise we would always implicitly choose __USE_MINGW_ANSI_STDIO,
+ * even if none of these selectors are specified explicitly...
+ */
+# if   defined __STRICT_ANSI__  ||  defined _ISOC99_SOURCE \
+   ||  defined _POSIX_SOURCE    ||  defined _POSIX_C_SOURCE \
+   ||  defined _XOPEN_SOURCE    ||  defined _XOPEN_SOURCE_EXTENDED \
+   ||  defined _GNU_SOURCE      ||  defined _BSD_SOURCE \
+   ||  defined _SVID_SOURCE
+   /*
+    * but where any of these source code qualifiers are specified,
+    * then assume ANSI I/O standards are preferred over Microsoft's...
+    */
+#  define __USE_MINGW_ANSI_STDIO    1
+# else
+   /* otherwise use whatever __MINGW_FEATURES__ specifies...
+    */
+#  define __USE_MINGW_ANSI_STDIO    (__MINGW_FEATURES__ & __MINGW_ANSI_STDIO__)
+# endif
+#endif
+
+#ifndef _POSIX_C_SOURCE
+ /* Users may define this, either directly or indirectly, to explicitly
+  * enable a particular level of visibility for the subset of those POSIX
+  * features which are supported by MinGW; (notice that this offers no
+  * guarantee that any particular POSIX feature will be supported).
+  */
+# if defined _XOPEN_SOURCE
+  /* Specifying this is the preferred method for setting _POSIX_C_SOURCE;
+   * (POSIX defines an explicit relationship to _XOPEN_SOURCE).  Note that
+   * any such explicit setting will augment the set of features which are
+   * available to any compilation unit, even if it seeks to be strictly
+   * ANSI-C compliant.
+   */
+#  if _XOPEN_SOURCE < 500
+#   define _POSIX_C_SOURCE  1L		/* POSIX.1-1990 / SUSv1 */
+
+#  elif _XOPEN_SOURCE < 600
+#   define _POSIX_C_SOURCE  199506L	/* POSIX.1-1996 / SUSv2 */
+
+#  elif _XOPEN_SOURCE < 700
+#   define _POSIX_C_SOURCE  200112L	/* POSIX.1-2001 / SUSv3 */
+
+#  else
+#   define _POSIX_C_SOURCE  200809L	/* POSIX.1-2008 / SUSv4 */
+#  endif
+
+# elif defined _GNU_SOURCE || defined _BSD_SOURCE || ! defined __STRICT_ANSI__
+  /*
+   * No explicit level of support has been specified; implicitly grant
+   * the most comprehensive level to any compilation unit which requests
+   * either GNU or BSD feature support, or does not seek to be strictly
+   * ANSI-C compliant.
+   */
+#  define _POSIX_C_SOURCE  200809L
+
+# elif defined _POSIX_SOURCE
+  /* Now formally deprecated by POSIX, some old code may specify this;
+   * it will enable a minimal level of POSIX support, in addition to the
+   * limited feature set enabled for strict ANSI-C conformity.
+   */
+#  define _POSIX_C_SOURCE  1L
+# endif
+#endif
+
+#ifndef _ISOC99_SOURCE
+ /* libmingwex.a provides free-standing implementations for many of the
+  * functions which were introduced in C99; MinGW headers do not expose
+  * prototypes for these, unless this feature test macro is defined, by
+  * the user, or implied by other standards...
+  */
+# if __STDC_VERSION__ >= 199901L || _POSIX_C_SOURCE >= 200112L
+#  define _ISOC99_SOURCE  1
+# endif
+#endif
+
+#if ! defined _MINGW32_SOURCE_EXTENDED && ! defined __STRICT_ANSI__
+/*
+ * Enable mingw32 extensions by default, except when __STRICT_ANSI__
+ * conformity mode has been enabled.
+ */
+# define _MINGW32_SOURCE_EXTENDED  1
+#endif
+
+#endif /* __MINGW_H: $RCSfile: _mingw.h.in,v $: end of file */
Index: Daodan/MinGW/include/_ptw32.h
===================================================================
--- Daodan/MinGW/include/_ptw32.h	(revision 1046)
+++ Daodan/MinGW/include/_ptw32.h	(revision 1046)
@@ -0,0 +1,160 @@
+/*
+ * Module: _ptw32.h
+ *
+ * Purpose:
+ *      Pthreads-win32 internal macros, to be shared by other headers
+ *      comprising the pthreads-win32 package.
+ *
+ * --------------------------------------------------------------------------
+ *
+ *      Pthreads-win32 - POSIX Threads Library for Win32
+ *      Copyright(C) 1998 John E. Bossom
+ *      Copyright(C) 1999-2012, 2016, Pthreads-win32 contributors
+ *
+ *      Homepage1: http://sourceware.org/pthreads-win32/
+ *      Homepage2: http://sourceforge.net/projects/pthreads4w/
+ *
+ *      The current list of contributors is contained
+ *      in the file CONTRIBUTORS included with the source
+ *      code distribution. The list can also be seen at the
+ *      following World Wide Web location:
+ *      http://sources.redhat.com/pthreads-win32/contributors.html
+ *
+ *      This library is free software; you can redistribute it and/or
+ *      modify it under the terms of the GNU Lesser General Public
+ *      License as published by the Free Software Foundation; either
+ *      version 2 of the License, or (at your option) any later version.
+ *
+ *      This library is distributed in the hope that it will be useful,
+ *      but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *      Lesser General Public License for more details.
+ *
+ *      You should have received a copy of the GNU Lesser General Public
+ *      License along with this library in the file COPYING.LIB;
+ *      if not, write to the Free Software Foundation, Inc.,
+ *      59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
+ *
+ */
+#ifndef __PTW32_H
+#define __PTW32_H
+
+/* See the README file for an explanation of the pthreads-win32
+ * version numbering scheme and how the DLL is named etc.
+ */
+#define __PTW32_VERSION_MAJOR	   2
+#define __PTW32_VERSION_MINOR	  10
+#define __PTW32_VERSION_MICRO	   0
+#define __PTW32_VERSION_BUILD	   0
+#define __PTW32_VERSION 	2,10,0,0
+#define __PTW32_VERSION_STRING "2, 10, 0, 0\0"
+
+#if defined(__GNUC__)
+# pragma GCC system_header
+# if ! defined __declspec
+#  error "Please upgrade your GNU compiler to one that supports __declspec."
+# endif
+#endif
+
+#if defined (__cplusplus)
+# define __PTW32_BEGIN_C_DECLS  extern "C" {
+# define __PTW32_END_C_DECLS    }
+#else
+# define __PTW32_BEGIN_C_DECLS
+# define __PTW32_END_C_DECLS
+#endif
+
+/* When building the library, __PTW32_BUILD should be defined, so that the
+ * variables/functions are exported correctly.  When using the library, you
+ * should NOT define __PTW32_BUILD, thus ensuring that variables/functions
+ * will be imported correctly, via an appropriate __PTW32_DECLSPEC.
+ */
+#undef __PTW32_DECLSPEC
+#undef __PTW32_USE_DLLIMPORT_DECORATION
+
+#if defined PTW32_STATIC_LIB
+/* Upstream pthreads-win32 uses this user-specified feature test to declare
+ * explicitly that the pthreads library is to be linked statically; this is
+ * contrary to POSIX.1's mandate that feature test names should begin with
+ * an underscore character.
+ */
+# warning "PTW32_STATIC_LIB is deprecated; use _PTW32_STATIC_LIB."
+# ifndef  _PTW32_STATIC_LIB
+#  define _PTW32_STATIC_LIB  1
+# endif
+# undef PTW32_STATIC_LIB
+#endif
+
+#ifndef _PTW32_STATIC_LIB
+/* When the intention is NOT to link statically...
+ */
+# if defined __PTW32_BUILD
+  /* ...and when actually implementing the pthreads library, then we want
+   * to explicitly identify those entities which are to be exported from
+   * the pthreads DLL, which is being built.
+   */
+#  define __PTW32_DECLSPEC  __declspec(dllexport) __PTW32_CDECL
+
+# elif defined _MSC_VER || defined _DLLIMPORT_DECORATED
+  /* ...but, when NOT building the pthreads library, just signal that we
+   * want to decorate the declarations of imported entities, either when
+   * using MSVC, or the user explicitly requested it; in this case, we
+   * will complete the __PTW32_DECLSPEC definition below.
+   */
+#  define __USE_DLLIMPORT_DECORATION  1
+# endif
+#endif
+
+#ifndef __PTW32_DECLSPEC
+/* We still need to complete this definition...
+ */
+# if __PTW32_USE_DLLIMPORT_DECORATION
+  /* ...either for a pthreads DLL client which explicitly wants to, (or
+   * needs to), link via explicitly decorated entity declarations...
+   */
+#  define __PTW32_DECLSPEC  __declspec(dllimport) __PTW32_CDECL
+# else
+  /* ...or for a statically linked client, (or indeed, a client which
+   * wishes to support a choice between static linking, or alternatively,
+   * dynamic linking via an import library).
+   */
+#  define __PTW32_DECLSPEC  __PTW32_CDECL
+# endif
+#endif
+
+#ifndef __PTW32_CDECL
+/* Nominally, we prefer to use __cdecl calling convention for all our
+ * functions, but we map it through this macro alias to facilitate the
+ * possible choice of alternatives; for example:
+ */
+# ifdef _OPEN_WATCOM_SOURCE
+  /* The Open Watcom C/C++ compiler uses a non-standard default calling
+   * convention, (similar to __fastcall), which passes function arguments
+   * in registers, unless the __cdecl convention is explicitly specified
+   * in exposed function prototypes.
+   *
+   * Our preference is to specify the __cdecl convention for all calls,
+   * even though this could slow Watcom code down slightly.  If you know
+   * that the Watcom compiler will be used to build both the DLL and your
+   * application, then you may #define _OPEN_WATCOM_SOURCE, so disabling
+   * the forced specification of __cdecl for all function declarations;
+   * remember that this must be defined consistently, for both the DLL
+   * build, and the application build.
+   */
+#  define __PTW32_CDECL
+# else
+#  define __PTW32_CDECL __cdecl
+# endif
+#endif
+
+/* If the user has previously included <errno.h>, as witnessed by the
+ * prior definition of EDOM, (which is chosen because it is one of only
+ * three error codes required by ISO-C), then we must ensure that those
+ * non-Windows error codes required by pthreads-win32, and witnessed by
+ * definition of _PTW32_ERRNO_H, are also defined.
+ */
+#if defined EDOM && ! defined _PTW32_ERRNO_H
+# include "ptw32_errno.h"
+#endif
+
+#endif	/* !__PTW32_H */
Index: Daodan/MinGW/include/accctrl.h
===================================================================
--- Daodan/MinGW/include/accctrl.h	(revision 1046)
+++ Daodan/MinGW/include/accctrl.h	(revision 1046)
@@ -0,0 +1,329 @@
+#ifndef _ACCCTRL_H
+#define _ACCCTRL_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define AccFree LocalFree
+#define ACTRL_RESERVED            0x00000000
+#define ACTRL_ACCESS_PROTECTED    0x00000001
+#define ACTRL_ACCESS_ALLOWED      0x00000001
+#define ACTRL_ACCESS_DENIED       0x00000002
+#define ACTRL_AUDIT_SUCCESS       0x00000004
+#define ACTRL_AUDIT_FAILURE       0x00000008
+#define ACTRL_SYSTEM_ACCESS       0x04000000
+#define ACTRL_DELETE              0x08000000
+#define ACTRL_READ_CONTROL        0x10000000
+#define ACTRL_CHANGE_ACCESS       0x20000000
+#define ACTRL_CHANGE_OWNER        0x40000000
+#define ACTRL_SYNCHRONIZE         0x80000000
+#define ACTRL_STD_RIGHTS_ALL      0xf8000000
+
+#define ACTRL_FILE_READ           0x00000001
+#define ACTRL_FILE_WRITE          0x00000002
+#define ACTRL_FILE_APPEND         0x00000004
+#define ACTRL_FILE_READ_PROP      0x00000008
+#define ACTRL_FILE_WRITE_PROP     0x00000010
+#define ACTRL_FILE_EXECUTE        0x00000020
+#define ACTRL_FILE_READ_ATTRIB    0x00000080
+#define ACTRL_FILE_WRITE_ATTRIB   0x00000100
+#define ACTRL_FILE_CREATE_PIPE    0x00000200
+#define ACTRL_DIR_LIST            0x00000001
+#define ACTRL_DIR_CREATE_OBJECT   0x00000002
+#define ACTRL_DIR_CREATE_CHILD    0x00000004
+#define ACTRL_DIR_DELETE_CHILD    0x00000040
+#define ACTRL_DIR_TRAVERSE        0x00000020
+#define ACTRL_KERNEL_TERMINATE    0x00000001
+#define ACTRL_KERNEL_THREAD       0x00000002
+#define ACTRL_KERNEL_VM           0x00000004
+#define ACTRL_KERNEL_VM_READ      0x00000008
+#define ACTRL_KERNEL_VM_WRITE     0x00000010
+#define ACTRL_KERNEL_DUP_HANDLE   0x00000020
+#define ACTRL_KERNEL_PROCESS      0x00000040
+#define ACTRL_KERNEL_SET_INFO     0x00000080
+#define ACTRL_KERNEL_GET_INFO     0x00000100
+#define ACTRL_KERNEL_CONTROL      0x00000200
+#define ACTRL_KERNEL_ALERT        0x00000400
+#define ACTRL_KERNEL_GET_CONTEXT  0x00000800
+#define ACTRL_KERNEL_SET_CONTEXT  0x00001000
+#define ACTRL_KERNEL_TOKEN        0x00002000
+#define ACTRL_KERNEL_IMPERSONATE  0x00004000
+#define ACTRL_KERNEL_DIMPERSONATE 0x00008000
+#define ACTRL_PRINT_SADMIN        0x00000001
+#define ACTRL_PRINT_SLIST         0x00000002
+#define ACTRL_PRINT_PADMIN        0x00000004
+#define ACTRL_PRINT_PUSE          0x00000008
+#define ACTRL_PRINT_JADMIN        0x00000010
+#define ACTRL_SVC_GET_INFO        0x00000001
+#define ACTRL_SVC_SET_INFO        0x00000002
+#define ACTRL_SVC_STATUS          0x00000004
+#define ACTRL_SVC_LIST            0x00000008
+#define ACTRL_SVC_START           0x00000010
+#define ACTRL_SVC_STOP            0x00000020
+#define ACTRL_SVC_PAUSE           0x00000040
+#define ACTRL_SVC_INTERROGATE     0x00000080
+#define ACTRL_SVC_UCONTROL        0x00000100
+#define ACTRL_REG_QUERY           0x00000001
+#define ACTRL_REG_SET             0x00000002
+#define ACTRL_REG_CREATE_CHILD    0x00000004
+#define ACTRL_REG_LIST            0x00000008
+#define ACTRL_REG_NOTIFY          0x00000010
+#define ACTRL_REG_LINK            0x00000020
+#define ACTRL_WIN_CLIPBRD         0x00000001
+#define ACTRL_WIN_GLOBAL_ATOMS    0x00000002
+#define ACTRL_WIN_CREATE          0x00000004
+#define ACTRL_WIN_LIST_DESK       0x00000008
+#define ACTRL_WIN_LIST            0x00000010
+#define ACTRL_WIN_READ_ATTRIBS    0x00000020
+#define ACTRL_WIN_WRITE_ATTRIBS   0x00000040
+#define ACTRL_WIN_SCREEN          0x00000080
+#define ACTRL_WIN_EXIT            0x00000100
+#define ACTRL_ACCESS_NO_OPTIONS                 0x00000000
+#define ACTRL_ACCESS_SUPPORTS_OBJECT_ENTRIES    0x00000001
+#define ACCCTRL_DEFAULT_PROVIDERA   "Windows NT Access Provider"
+#define ACCCTRL_DEFAULT_PROVIDERW  L"Windows NT Access Provider"
+#define TRUSTEE_ACCESS_ALLOWED    0x00000001L
+#define TRUSTEE_ACCESS_READ       0x00000002L
+#define TRUSTEE_ACCESS_WRITE      0x00000004L
+#define TRUSTEE_ACCESS_EXPLICIT   0x00000001L
+#define TRUSTEE_ACCESS_READ_WRITE   (TRUSTEE_ACCESS_READ | TRUSTEE_ACCESS_WRITE)
+#define TRUSTEE_ACCESS_ALL        0xFFFFFFFFL
+#define NO_INHERITANCE	          0x0
+#define SUB_OBJECTS_ONLY_INHERIT  0x1
+#define SUB_CONTAINERS_ONLY_INHERIT 0x2
+#define SUB_CONTAINERS_AND_OBJECTS_INHERIT  0x3
+#define INHERIT_NO_PROPAGATE      0x4
+#define INHERIT_ONLY              0x8
+#define INHERITED_ACCESS_ENTRY    0x10
+#define INHERITED_PARENT          0x10000000
+#define INHERITED_GRANDPARENT     0x20000000
+
+typedef ULONG INHERIT_FLAGS, *PINHERIT_FLAGS;
+typedef ULONG ACCESS_RIGHTS, *PACCESS_RIGHTS;
+
+typedef enum _ACCESS_MODE {
+	NOT_USED_ACCESS = 0,
+	GRANT_ACCESS,
+	SET_ACCESS,
+	DENY_ACCESS,
+	REVOKE_ACCESS,
+	SET_AUDIT_SUCCESS,
+	SET_AUDIT_FAILURE
+} ACCESS_MODE;
+typedef enum _SE_OBJECT_TYPE {
+	SE_UNKNOWN_OBJECT_TYPE = 0,
+	SE_FILE_OBJECT,
+	SE_SERVICE,
+	SE_PRINTER,
+	SE_REGISTRY_KEY,
+	SE_LMSHARE,
+	SE_KERNEL_OBJECT,
+	SE_WINDOW_OBJECT,
+	SE_DS_OBJECT,
+	SE_DS_OBJECT_ALL,
+	SE_PROVIDER_DEFINED_OBJECT,
+	SE_WMIGUID_OBJECT,
+	SE_REGISTRY_WOW64_32KEY
+} SE_OBJECT_TYPE;
+typedef enum _TRUSTEE_TYPE {
+	TRUSTEE_IS_UNKNOWN,
+	TRUSTEE_IS_USER,
+	TRUSTEE_IS_GROUP,
+	TRUSTEE_IS_DOMAIN,
+	TRUSTEE_IS_ALIAS,
+	TRUSTEE_IS_WELL_KNOWN_GROUP,
+	TRUSTEE_IS_DELETED,
+	TRUSTEE_IS_INVALID,
+	TRUSTEE_IS_COMPUTER
+} TRUSTEE_TYPE;
+typedef enum _TRUSTEE_FORM {
+	TRUSTEE_IS_SID,
+	TRUSTEE_IS_NAME,
+	TRUSTEE_BAD_FORM,
+	TRUSTEE_IS_OBJECTS_AND_SID,
+	TRUSTEE_IS_OBJECTS_AND_NAME
+} TRUSTEE_FORM;
+typedef enum _MULTIPLE_TRUSTEE_OPERATION {
+	NO_MULTIPLE_TRUSTEE,
+	TRUSTEE_IS_IMPERSONATE
+} MULTIPLE_TRUSTEE_OPERATION;
+typedef struct _TRUSTEE_A {
+	struct _TRUSTEE_A          *pMultipleTrustee;
+	MULTIPLE_TRUSTEE_OPERATION  MultipleTrusteeOperation;
+	TRUSTEE_FORM                TrusteeForm;
+	TRUSTEE_TYPE                TrusteeType;
+	LPSTR                       ptstrName;
+} TRUSTEE_A, *PTRUSTEE_A, TRUSTEEA, *PTRUSTEEA;
+typedef struct _TRUSTEE_W {
+	struct _TRUSTEE_W          *pMultipleTrustee;
+	MULTIPLE_TRUSTEE_OPERATION  MultipleTrusteeOperation;
+	TRUSTEE_FORM                TrusteeForm;
+	TRUSTEE_TYPE                TrusteeType;
+	LPWSTR                      ptstrName;
+} TRUSTEE_W, *PTRUSTEE_W, TRUSTEEW, *PTRUSTEEW;
+typedef struct _ACTRL_ACCESS_ENTRYA {
+	TRUSTEE_A       Trustee;
+	ULONG           fAccessFlags;
+	ACCESS_RIGHTS   Access;
+	ACCESS_RIGHTS   ProvSpecificAccess;
+	INHERIT_FLAGS   Inheritance;
+	LPCSTR          lpInheritProperty;
+} ACTRL_ACCESS_ENTRYA, *PACTRL_ACCESS_ENTRYA;
+typedef struct _ACTRL_ACCESS_ENTRYW {
+	TRUSTEE_W       Trustee;
+	ULONG           fAccessFlags;
+	ACCESS_RIGHTS   Access;
+	ACCESS_RIGHTS   ProvSpecificAccess;
+	INHERIT_FLAGS   Inheritance;
+	LPCWSTR         lpInheritProperty;
+} ACTRL_ACCESS_ENTRYW, *PACTRL_ACCESS_ENTRYW;
+typedef struct _ACTRL_ACCESS_ENTRY_LISTA {
+	ULONG                  cEntries;
+	ACTRL_ACCESS_ENTRYA    *pAccessList;
+} ACTRL_ACCESS_ENTRY_LISTA, *PACTRL_ACCESS_ENTRY_LISTA;
+typedef struct _ACTRL_ACCESS_ENTRY_LISTW {
+	ULONG                  cEntries;
+	ACTRL_ACCESS_ENTRYW    *pAccessList;
+} ACTRL_ACCESS_ENTRY_LISTW, *PACTRL_ACCESS_ENTRY_LISTW;
+typedef struct _ACTRL_PROPERTY_ENTRYA {
+	LPCSTR                      lpProperty;
+	PACTRL_ACCESS_ENTRY_LISTA   pAccessEntryList;
+	ULONG                       fListFlags;
+} ACTRL_PROPERTY_ENTRYA, *PACTRL_PROPERTY_ENTRYA;
+typedef struct _ACTRL_PROPERTY_ENTRYW {
+	LPCWSTR                     lpProperty;
+	PACTRL_ACCESS_ENTRY_LISTW   pAccessEntryList;
+	ULONG                       fListFlags;
+} ACTRL_PROPERTY_ENTRYW, *PACTRL_PROPERTY_ENTRYW;
+typedef struct _ACTRL_ALISTA {
+	ULONG                       cEntries;
+	PACTRL_PROPERTY_ENTRYA      pPropertyAccessList;
+} ACTRL_ACCESSA, *PACTRL_ACCESSA, ACTRL_AUDITA, *PACTRL_AUDITA;
+typedef struct _ACTRL_ALISTW {
+	ULONG                       cEntries;
+	PACTRL_PROPERTY_ENTRYW      pPropertyAccessList;
+} ACTRL_ACCESSW, *PACTRL_ACCESSW, ACTRL_AUDITW, *PACTRL_AUDITW;
+typedef struct _TRUSTEE_ACCESSA {
+	LPSTR           lpProperty;
+	ACCESS_RIGHTS   Access;
+	ULONG           fAccessFlags;
+	ULONG           fReturnedAccess;
+} TRUSTEE_ACCESSA, *PTRUSTEE_ACCESSA;
+typedef struct _TRUSTEE_ACCESSW {
+	LPWSTR          lpProperty;
+	ACCESS_RIGHTS   Access;
+	ULONG           fAccessFlags;
+	ULONG           fReturnedAccess;
+} TRUSTEE_ACCESSW, *PTRUSTEE_ACCESSW;
+typedef struct _ACTRL_OVERLAPPED {
+	_ANONYMOUS_UNION
+	union {
+	    PVOID Provider;
+	    ULONG Reserved1;
+	} DUMMYUNIONNAME;
+	ULONG       Reserved2;
+	HANDLE      hEvent;
+} ACTRL_OVERLAPPED, *PACTRL_OVERLAPPED;
+typedef struct _ACTRL_ACCESS_INFOA {
+	ULONG       fAccessPermission;
+	LPSTR       lpAccessPermissionName;
+} ACTRL_ACCESS_INFOA, *PACTRL_ACCESS_INFOA;
+typedef struct _ACTRL_ACCESS_INFOW {
+	ULONG       fAccessPermission;
+	LPWSTR      lpAccessPermissionName;
+} ACTRL_ACCESS_INFOW, *PACTRL_ACCESS_INFOW;
+typedef struct _ACTRL_CONTROL_INFOA {
+	LPSTR       lpControlId;
+	LPSTR       lpControlName;
+} ACTRL_CONTROL_INFOA, *PACTRL_CONTROL_INFOA;
+typedef struct _ACTRL_CONTROL_INFOW {
+	LPWSTR      lpControlId;
+	LPWSTR      lpControlName;
+} ACTRL_CONTROL_INFOW, *PACTRL_CONTROL_INFOW;
+typedef struct _EXPLICIT_ACCESS_A {
+	DWORD        grfAccessPermissions;
+	ACCESS_MODE  grfAccessMode;
+	DWORD        grfInheritance;
+	TRUSTEE_A    Trustee;
+} EXPLICIT_ACCESS_A, *PEXPLICIT_ACCESS_A, EXPLICIT_ACCESSA, *PEXPLICIT_ACCESSA;
+typedef struct _EXPLICIT_ACCESS_W {
+	DWORD        grfAccessPermissions;
+	ACCESS_MODE  grfAccessMode;
+	DWORD        grfInheritance;
+	TRUSTEE_W    Trustee;
+} EXPLICIT_ACCESS_W, *PEXPLICIT_ACCESS_W, EXPLICIT_ACCESSW, *PEXPLICIT_ACCESSW;
+typedef struct _OBJECTS_AND_SID {
+	DWORD   ObjectsPresent;
+	GUID    ObjectTypeGuid;
+	GUID    InheritedObjectTypeGuid;
+	SID     * pSid;
+} OBJECTS_AND_SID, *POBJECTS_AND_SID;
+typedef struct _OBJECTS_AND_NAME_A {
+	DWORD    ObjectsPresent;
+	SE_OBJECT_TYPE ObjectType;
+	LPSTR    ObjectTypeName;
+	LPSTR    InheritedObjectTypeName;
+	LPSTR    ptstrName;
+} OBJECTS_AND_NAME_A, *POBJECTS_AND_NAME_A;
+typedef struct _OBJECTS_AND_NAME_W {
+	DWORD          ObjectsPresent;
+	SE_OBJECT_TYPE ObjectType;
+	LPWSTR   ObjectTypeName;
+	LPWSTR   InheritedObjectTypeName;
+	LPWSTR   ptstrName;
+} OBJECTS_AND_NAME_W, *POBJECTS_AND_NAME_W;
+#if (_WIN32_WINNT >= 0x0501)
+typedef struct {
+	LONG     GenerationGap;
+	LPSTR    AncestorName;
+} INHERITED_FROMA, *PINHERITED_FROMA;
+typedef struct {
+	LONG     GenerationGap;
+	LPWSTR   AncestorName;
+} INHERITED_FROMW, *PINHERITED_FROMW;
+#endif /* (_WIN32_WINNT >= 0x0501) */
+
+#ifdef UNICODE
+#define ACCCTRL_DEFAULT_PROVIDER ACCCTRL_DEFAULT_PROVIDERW
+typedef TRUSTEE_W TRUSTEE_, *PTRUSTEE_;
+typedef TRUSTEEW TRUSTEE, *PTRUSTEE;
+typedef ACTRL_ACCESSW ACTRL_ACCESS, *PACTRL_ACCESS;
+typedef ACTRL_ACCESS_ENTRY_LISTW ACTRL_ACCESS_ENTRY_LIST, *PACTRL_ACCESS_ENTRY_LIST;
+typedef ACTRL_ACCESS_INFOW ACTRL_ACCESS_INFO, *PACTRL_ACCESS_INFO;
+typedef ACTRL_ACCESS_ENTRYW ACTRL_ACCESS_ENTRY, *PACTRL_ACCESS_ENTRY;
+typedef ACTRL_AUDITW ACTRL_AUDIT, *PACTRL_AUDIT;
+typedef ACTRL_CONTROL_INFOW ACTRL_CONTROL_INFO, *PACTRL_CONTROL_INFO;
+typedef EXPLICIT_ACCESS_W EXPLICIT_ACCESS_, *PEXPLICIT_ACCESS_;
+typedef EXPLICIT_ACCESSW EXPLICIT_ACCESS, *PEXPLICIT_ACCESS;
+typedef TRUSTEE_ACCESSW TRUSTEE_ACCESS, *PTRUSTEE_ACCESS;
+typedef OBJECTS_AND_NAME_W OBJECTS_AND_NAME_, *POBJECTS_AND_NAME_;
+#if (_WIN32_WINNT >= 0x0501)
+typedef INHERITED_FROMW INHERITED_FROM, *PINHERITED_FROM;
+#endif
+#else
+#define ACCCTRL_DEFAULT_PROVIDER ACCCTRL_DEFAULT_PROVIDERA
+typedef TRUSTEE_A TRUSTEE_, *PTRUSTEE_;
+typedef TRUSTEEA TRUSTEE, *PTRUSTEE;
+typedef ACTRL_ACCESSA ACTRL_ACCESS, *PACTRL_ACCESS;
+typedef ACTRL_ACCESS_ENTRY_LISTA ACTRL_ACCESS_ENTRY_LIST, *PACTRL_ACCESS_ENTRY_LIST;
+typedef ACTRL_ACCESS_INFOA ACTRL_ACCESS_INFO, *PACTRL_ACCESS_INFO;
+typedef ACTRL_ACCESS_ENTRYA ACTRL_ACCESS_ENTRY, *PACTRL_ACCESS_ENTRY;
+typedef ACTRL_AUDITA ACTRL_AUDIT, *PACTRL_AUDIT;
+typedef ACTRL_CONTROL_INFOA ACTRL_CONTROL_INFO, *PACTRL_CONTROL_INFO;
+typedef EXPLICIT_ACCESS_A EXPLICIT_ACCESS_, *PEXPLICIT_ACCESS_;
+typedef EXPLICIT_ACCESSA EXPLICIT_ACCESS, *PEXPLICIT_ACCESS;
+typedef TRUSTEE_ACCESSA TRUSTEE_ACCESS, *PTRUSTEE_ACCESS;
+typedef OBJECTS_AND_NAME_A OBJECTS_AND_NAME_, *POBJECTS_AND_NAME_;
+#if (_WIN32_WINNT >= 0x0501)
+typedef INHERITED_FROMA INHERITED_FROM, *PINHERITED_FROM;
+#endif
+#endif /* UNICODE */
+
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/aclapi.h
===================================================================
--- Daodan/MinGW/include/aclapi.h	(revision 1046)
+++ Daodan/MinGW/include/aclapi.h	(revision 1046)
@@ -0,0 +1,117 @@
+#ifndef _ACLAPI_H
+#define _ACLAPI_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#include <windows.h>
+#include <accctrl.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+WINADVAPI VOID WINAPI BuildExplicitAccessWithNameA(PEXPLICIT_ACCESS_A,LPSTR,DWORD,ACCESS_MODE,DWORD);
+WINADVAPI VOID WINAPI BuildExplicitAccessWithNameW(PEXPLICIT_ACCESS_W,LPWSTR,DWORD,ACCESS_MODE,DWORD);
+WINADVAPI DWORD WINAPI BuildSecurityDescriptorA(PTRUSTEE_A,PTRUSTEE_A ,ULONG,PEXPLICIT_ACCESS_A,
+  ULONG,PEXPLICIT_ACCESS_A,PSECURITY_DESCRIPTOR,PULONG,PSECURITY_DESCRIPTOR*);
+WINADVAPI DWORD WINAPI BuildSecurityDescriptorW(PTRUSTEE_W,PTRUSTEE_W ,ULONG,PEXPLICIT_ACCESS_W,
+  ULONG,PEXPLICIT_ACCESS_W,PSECURITY_DESCRIPTOR,PULONG,PSECURITY_DESCRIPTOR*);
+WINADVAPI VOID WINAPI BuildTrusteeWithNameA(PTRUSTEE_A,LPSTR);
+WINADVAPI VOID WINAPI BuildTrusteeWithNameW(PTRUSTEE_W,LPWSTR);
+WINADVAPI VOID WINAPI BuildTrusteeWithObjectsAndNameA(PTRUSTEE_A,POBJECTS_AND_NAME_A,SE_OBJECT_TYPE,
+  LPSTR,LPSTR,LPSTR);
+WINADVAPI VOID WINAPI BuildTrusteeWithObjectsAndNameW(PTRUSTEE_W,POBJECTS_AND_NAME_W,SE_OBJECT_TYPE,
+  LPWSTR,LPWSTR,LPWSTR);
+WINADVAPI VOID WINAPI BuildTrusteeWithObjectsAndSidA(PTRUSTEE_A,POBJECTS_AND_SID,GUID*,GUID*,PSID);
+WINADVAPI VOID WINAPI BuildTrusteeWithObjectsAndSidW(PTRUSTEE_W,POBJECTS_AND_SID,GUID*,GUID*,PSID);
+WINADVAPI VOID WINAPI BuildTrusteeWithSidA(PTRUSTEE_A,PSID);
+WINADVAPI VOID WINAPI BuildTrusteeWithSidW(PTRUSTEE_W,PSID);
+WINADVAPI DWORD WINAPI GetAuditedPermissionsFromAclA(PACL,PTRUSTEE_A,PACCESS_MASK,PACCESS_MASK);
+WINADVAPI DWORD WINAPI GetAuditedPermissionsFromAclW(PACL,PTRUSTEE_W,PACCESS_MASK,PACCESS_MASK);
+WINADVAPI DWORD WINAPI GetEffectiveRightsFromAclA(PACL,PTRUSTEE_A,PACCESS_MASK);
+WINADVAPI DWORD WINAPI GetEffectiveRightsFromAclW(PACL,PTRUSTEE_W,PACCESS_MASK);
+WINADVAPI DWORD WINAPI GetExplicitEntriesFromAclA(PACL,PULONG,PEXPLICIT_ACCESS_A*);
+WINADVAPI DWORD WINAPI GetExplicitEntriesFromAclW(PACL,PULONG,PEXPLICIT_ACCESS_W*);
+#if (_WIN32_WINNT >= 0x0501)
+WINADVAPI DWORD WINAPI GetInheritanceSourceA(LPSTR,SE_OBJECT_TYPE,SECURITY_INFORMATION,BOOL,GUID**,DWORD,PACL,void*,PGENERIC_MAPPING,PINHERITED_FROMA);
+WINADVAPI DWORD WINAPI GetInheritanceSourceW(LPWSTR,SE_OBJECT_TYPE,SECURITY_INFORMATION,BOOL,GUID**,DWORD,PACL,void*,PGENERIC_MAPPING,PINHERITED_FROMW);
+#endif
+WINADVAPI DWORD WINAPI GetNamedSecurityInfoA(LPSTR,SE_OBJECT_TYPE,SECURITY_INFORMATION,
+  PSID*,PSID*,PACL*,PACL*,PSECURITY_DESCRIPTOR*);
+WINADVAPI DWORD WINAPI GetNamedSecurityInfoW(LPWSTR,SE_OBJECT_TYPE,SECURITY_INFORMATION,
+  PSID*,PSID*,PACL*,PACL*,PSECURITY_DESCRIPTOR*);
+WINADVAPI DWORD WINAPI GetSecurityInfo(HANDLE,SE_OBJECT_TYPE,SECURITY_INFORMATION,
+  PSID*,PSID*,PACL*,PACL*,PSECURITY_DESCRIPTOR*);
+WINADVAPI TRUSTEE_FORM WINAPI GetTrusteeFormA(PTRUSTEE_A);
+WINADVAPI TRUSTEE_FORM WINAPI GetTrusteeFormW(PTRUSTEE_W);
+WINADVAPI LPSTR WINAPI GetTrusteeNameA(PTRUSTEE_A);
+WINADVAPI LPWSTR WINAPI GetTrusteeNameW(PTRUSTEE_W);
+WINADVAPI TRUSTEE_TYPE WINAPI GetTrusteeTypeA(PTRUSTEE_A);
+WINADVAPI TRUSTEE_TYPE WINAPI GetTrusteeTypeW(PTRUSTEE_W);
+WINADVAPI DWORD WINAPI LookupSecurityDescriptorPartsA(PTRUSTEE_A*,PTRUSTEE_A*,PULONG,PEXPLICIT_ACCESS_A*,
+  PULONG,PEXPLICIT_ACCESS_A*,PSECURITY_DESCRIPTOR);
+WINADVAPI DWORD WINAPI LookupSecurityDescriptorPartsW(PTRUSTEE_W*,PTRUSTEE_W*,PULONG,PEXPLICIT_ACCESS_W*,
+  PULONG,PEXPLICIT_ACCESS_W*,PSECURITY_DESCRIPTOR);
+WINADVAPI DWORD WINAPI SetEntriesInAclA(ULONG,PEXPLICIT_ACCESS_A,PACL,PACL*);
+WINADVAPI DWORD WINAPI SetEntriesInAclW(ULONG,PEXPLICIT_ACCESS_W,PACL,PACL*);
+WINADVAPI DWORD WINAPI SetNamedSecurityInfoA(LPSTR,SE_OBJECT_TYPE,SECURITY_INFORMATION,PSID,PSID,PACL,PACL);
+WINADVAPI DWORD WINAPI SetNamedSecurityInfoW(LPWSTR,SE_OBJECT_TYPE,SECURITY_INFORMATION,PSID,PSID,PACL,PACL);
+WINADVAPI DWORD WINAPI SetSecurityInfo(HANDLE,SE_OBJECT_TYPE,SECURITY_INFORMATION,PSID,PSID,PACL,PACL);
+WINADVAPI VOID WINAPI BuildImpersonateExplicitAccessWithNameA(PEXPLICIT_ACCESS_A,LPSTR,PTRUSTEE_A,DWORD,ACCESS_MODE,DWORD);
+WINADVAPI VOID WINAPI BuildImpersonateExplicitAccessWithNameW(PEXPLICIT_ACCESS_W,LPWSTR,PTRUSTEE_W,DWORD,ACCESS_MODE,DWORD);
+WINADVAPI VOID WINAPI BuildImpersonateTrusteeA(PTRUSTEE_A,PTRUSTEE_A);
+WINADVAPI VOID WINAPI BuildImpersonateTrusteeW(PTRUSTEE_W,PTRUSTEE_W);
+WINADVAPI PTRUSTEE_A WINAPI GetMultipleTrusteeA(PTRUSTEE_A);
+WINADVAPI PTRUSTEE_W WINAPI GetMultipleTrusteeW(PTRUSTEE_W);
+WINADVAPI MULTIPLE_TRUSTEE_OPERATION WINAPI GetMultipleTrusteeOperationA(PTRUSTEE_A);
+WINADVAPI MULTIPLE_TRUSTEE_OPERATION WINAPI GetMultipleTrusteeOperationW(PTRUSTEE_W);
+
+#ifdef UNICODE
+#define BuildExplicitAccessWithName  BuildExplicitAccessWithNameW
+#define BuildSecurityDescriptor  BuildSecurityDescriptorW
+#define BuildTrusteeWithName  BuildTrusteeWithNameW
+#define BuildTrusteeWithObjectsAndName  BuildTrusteeWithObjectsAndNameW
+#define BuildTrusteeWithObjectsAndSid  BuildTrusteeWithObjectsAndSidW
+#define BuildTrusteeWithSid  BuildTrusteeWithSidW
+#define GetAuditedPermissionsFromAcl  GetAuditedPermissionsFromAclW
+#define GetEffectiveRightsFromAcl  GetEffectiveRightsFromAclW
+#define GetExplicitEntriesFromAcl  GetExplicitEntriesFromAclW
+#define GetNamedSecurityInfo  GetNamedSecurityInfoW
+#define GetTrusteeForm  GetTrusteeFormW
+#define GetTrusteeName  GetTrusteeNameW
+#define GetTrusteeType  GetTrusteeTypeW
+#define LookupSecurityDescriptorParts  LookupSecurityDescriptorPartsW
+#define SetEntriesInAcl  SetEntriesInAclW
+#define SetNamedSecurityInfo  SetNamedSecurityInfoW
+#define BuildImpersonateExplicitAccessWithName  BuildImpersonateExplicitAccessWithNameW
+#define BuildImpersonateTrustee  BuildImpersonateTrusteeW
+#define GetMultipleTrustee  GetMultipleTrusteeW
+#define GetMultipleTrusteeOperation  GetMultipleTrusteeOperationW
+#else
+#define BuildExplicitAccessWithName  BuildExplicitAccessWithNameA
+#define BuildSecurityDescriptor  BuildSecurityDescriptorA
+#define BuildTrusteeWithName  BuildTrusteeWithNameA
+#define BuildTrusteeWithObjectsAndName  BuildTrusteeWithObjectsAndNameA
+#define BuildTrusteeWithObjectsAndSid  BuildTrusteeWithObjectsAndSidA
+#define BuildTrusteeWithSid  BuildTrusteeWithSidA
+#define GetAuditedPermissionsFromAcl  GetAuditedPermissionsFromAclA
+#define GetEffectiveRightsFromAcl  GetEffectiveRightsFromAclA
+#define GetExplicitEntriesFromAcl  GetExplicitEntriesFromAclA
+#define GetNamedSecurityInfo  GetNamedSecurityInfoA
+#define GetTrusteeForm  GetTrusteeFormA
+#define GetTrusteeName  GetTrusteeNameA
+#define GetTrusteeType  GetTrusteeTypeA
+#define LookupSecurityDescriptorParts  LookupSecurityDescriptorPartsA
+#define SetEntriesInAcl  SetEntriesInAclA
+#define SetNamedSecurityInfo  SetNamedSecurityInfoA
+#define BuildImpersonateExplicitAccessWithName  BuildImpersonateExplicitAccessWithNameA
+#define BuildImpersonateTrustee  BuildImpersonateTrusteeA
+#define GetMultipleTrustee  GetMultipleTrusteeA
+#define GetMultipleTrusteeOperation  GetMultipleTrusteeOperationA
+#endif /* UNICODE */
+
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/aclui.h
===================================================================
--- Daodan/MinGW/include/aclui.h	(revision 1046)
+++ Daodan/MinGW/include/aclui.h	(revision 1046)
@@ -0,0 +1,134 @@
+#ifndef _ACLUI_H
+#define _ACLUI_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#ifndef _OBJC_NO_COM
+#include <objbase.h>
+#include <commctrl.h>
+#include <accctrl.h>
+#endif
+
+#if !defined(_ACLUI_)
+#define ACLUIAPI	DECLSPEC_IMPORT WINAPI
+#else
+#define ACLUIAPI	WINAPI
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct _SI_OBJECT_INFO
+{
+	DWORD dwFlags;
+	HINSTANCE hInstance;
+	LPWSTR pszServerName;
+	LPWSTR pszObjectName;
+	LPWSTR pszPageTitle;
+	GUID guidObjectType;
+} SI_OBJECT_INFO, *PSI_OBJECT_INFO;
+
+/* values for SI_OBJECT_INFO.dwFlags */
+#define SI_EDIT_PERMS				0x00000000L
+#define SI_EDIT_OWNER				0x00000001L
+#define SI_EDIT_AUDITS				0x00000002L
+#define SI_CONTAINER				0x00000004L
+#define SI_READONLY					0x00000008L
+#define SI_ADVANCED					0x00000010L
+#define SI_RESET					0x00000020L
+#define SI_OWNER_READONLY			0x00000040L
+#define SI_EDIT_PROPERTIES			0x00000080L
+#define SI_OWNER_RECURSE			0x00000100L
+#define SI_NO_ACL_PROTECT			0x00000200L
+#define SI_NO_TREE_APPLY			0x00000400L
+#define SI_PAGE_TITLE				0x00000800L
+#define SI_SERVER_IS_DC				0x00001000L
+#define SI_RESET_DACL_TREE			0x00004000L
+#define SI_RESET_SACL_TREE			0x00008000L
+#define SI_OBJECT_GUID				0x00010000L
+#define SI_EDIT_EFFECTIVE			0x00020000L
+#define SI_RESET_DACL				0x00040000L
+#define SI_RESET_SACL				0x00080000L
+#define SI_RESET_OWNER				0x00100000L
+#define SI_NO_ADDITIONAL_PERMISSION	0x00200000L
+#define SI_MAY_WRITE				0x10000000L
+
+#define SI_EDIT_ALL     (SI_EDIT_PERMS | SI_EDIT_OWNER | SI_EDIT_AUDITS)
+
+
+typedef struct _SI_ACCESS
+{
+	const GUID* pguid;
+	ACCESS_MASK mask;
+	LPCWSTR pszName;
+	DWORD dwFlags;
+} SI_ACCESS, *PSI_ACCESS;
+
+/* values for SI_ACCESS.dwFlags */
+#define SI_ACCESS_SPECIFIC			0x00010000L
+#define SI_ACCESS_GENERAL			0x00020000L
+#define SI_ACCESS_CONTAINER			0x00040000L
+#define SI_ACCESS_PROPERTY			0x00080000L
+
+
+typedef struct _SI_INHERIT_TYPE
+{
+	const GUID* pguid;
+	ULONG dwFlags;
+	LPCWSTR pszName;
+} SI_INHERIT_TYPE, *PSI_INHERIT_TYPE;
+
+/* values for SI_INHERIT_TYPE.dwFlags
+   INHERIT_ONLY_ACE, CONTAINER_INHERIT_ACE, OBJECT_INHERIT_ACE
+   defined elsewhere */
+
+
+typedef enum _SI_PAGE_TYPE
+{
+	SI_PAGE_PERM = 0,
+	SI_PAGE_ADVPERM,
+	SI_PAGE_AUDIT,
+	SI_PAGE_OWNER
+} SI_PAGE_TYPE;
+
+
+#define PSPCB_SI_INITDIALOG	(WM_USER + 1)
+
+#ifndef __ISecurityInformation_INTERFACE_DEFINED__
+#define __ISecurityInformation_INTERFACE_DEFINED__
+#define INTERFACE ISecurityInformation
+DECLARE_INTERFACE_(ISecurityInformation, IUnknown)
+{
+		STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+		STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+		STDMETHOD_(ULONG,Release)(THIS) PURE;
+
+		STDMETHOD(GetObjectInformation)(THIS_ PSI_OBJECT_INFO) PURE;
+		STDMETHOD(GetSecurity)(THIS_ SECURITY_INFORMATION,PSECURITY_DESCRIPTOR*,BOOL) PURE;
+		STDMETHOD(SetSecurity)(THIS_ SECURITY_INFORMATION,PSECURITY_DESCRIPTOR) PURE;
+		STDMETHOD(GetAccessRights)(THIS_ const GUID*,DWORD,PSI_ACCESS*,ULONG*,ULONG*) PURE;
+		STDMETHOD(MapGeneric)(THIS_ const GUID*,UCHAR*,ACCESS_MASK*) PURE;
+		STDMETHOD(GetInheritTypes)(THIS_ PSI_INHERIT_TYPE*,ULONG*) PURE;
+		STDMETHOD(PropertySheetPageCallback)(THIS_ HWND,UINT,SI_PAGE_TYPE) PURE;
+};
+#undef INTERFACE
+typedef ISecurityInformation *LPSECURITYINFO;
+#endif
+
+/*
+ * TODO: ISecurityInformation2, IEffectivePermission, ISecurityObjectTypeInfo
+ */
+
+extern DECLSPEC_IMPORT const IID IID_ISecurityInformation;
+
+
+HPROPSHEETPAGE ACLUIAPI CreateSecurityPage(LPSECURITYINFO psi);
+BOOL ACLUIAPI EditSecurity(HWND hwndOwner, LPSECURITYINFO psi);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
Index: Daodan/MinGW/include/adsprop.h
===================================================================
--- Daodan/MinGW/include/adsprop.h	(revision 1046)
+++ Daodan/MinGW/include/adsprop.h	(revision 1046)
@@ -0,0 +1,59 @@
+/*
+ * adsprop.h - Active Directory
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain.  You may use,
+ * modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY.  ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED.  This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+#ifndef _ADSPROP_H
+#define _ADSPROP_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*--- Active Directory Reference - Active Directory Messages */
+#define WM_ADSPROP_NOTIFY_APPLY (WM_USER+1104)
+#define WM_ADSPROP_NOTIFY_CHANGE (WM_USER+1103)
+#define WM_ADSPROP_NOTIFY_ERROR (WM_USER+1110)
+#define WM_ADSPROP_NOTIFY_EXIT (WM_USER+1107)
+#define WM_ADSPROP_NOTIFY_FOREGROUND (WM_USER+1106)
+#define WM_ADSPROP_NOTIFY_PAGEHWND (WM_USER+1102)
+#define WM_ADSPROP_NOTIFY_PAGEINIT (WM_USER+1101)
+#define WM_ADSPROP_NOTIFY_SETFOCUS (WM_USER+1105)
+/*--- Active Directory Reference - Active Directory Structures - Active Directory MMC Property Page Structures */
+#if (_WIN32_WINNT >= 0x0501)
+typedef struct {
+	HWND hwndPage;
+	PWSTR pszPageTitle;
+	PWSTR pszObjPath;
+	PWSTR pszObjClass;
+	HRESULT hr;
+	PWSTR pszError;
+} ADSPROPERROR,*PADSPROPERROR;
+#endif /* (_WIN32_WINNT >= 0x0501) */
+#if (_WIN32_WINNT >= 0x0500)
+typedef struct {
+	DWORD dwSize;
+	DWORD dwFlags;
+	HRESULT hr;
+	IDirectoryObject *pDsObj;
+	LPWSTR pwzCN;
+	PADS_ATTR_INFO pWritableAttrs;
+} ADSPROPINITPARAMS,*PADSPROPINITPARAMS;
+#endif /* (_WIN32_WINNT >= 0x0500) */
+
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/afxres.h
===================================================================
--- Daodan/MinGW/include/afxres.h	(revision 1046)
+++ Daodan/MinGW/include/afxres.h	(revision 1046)
@@ -0,0 +1,23 @@
+#ifndef _AFXRES_H
+#define _AFXRES_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef _WINDOWS_H
+#include <windows.h>
+#endif
+
+/* IDC_STATIC is documented in winuser.h, but not defined. */
+#ifndef IDC_STATIC
+#define IDC_STATIC (-1)
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/amaudio.h
===================================================================
--- Daodan/MinGW/include/amaudio.h	(revision 1046)
+++ Daodan/MinGW/include/amaudio.h	(revision 1046)
@@ -0,0 +1,33 @@
+#ifndef _AMAUDIO_H
+#define _AMAUDIO_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#include <dsound.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define INTERFACE IAMDirectSound
+DECLARE_INTERFACE_(IAMDirectSound, IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,LPVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetDirectSoundInterface)(THIS_ LPDIRECTSOUND*) PURE;
+	STDMETHOD(GetPrimaryBufferInterface)(THIS_ LPDIRECTSOUNDBUFFER*) PURE;
+	STDMETHOD(GetSecondaryBufferInterface)(THIS_ LPDIRECTSOUNDBUFFER*) PURE;
+	STDMETHOD(GetFocusWindow)(THIS_ HWND*,BOOL*) PURE ;
+	STDMETHOD(ReleaseDirectSoundInterface)(THIS_ LPDIRECTSOUND) PURE;
+	STDMETHOD(ReleasePrimaryBufferInterface)(THIS_ LPDIRECTSOUNDBUFFER) PURE;
+	STDMETHOD(ReleaseSecondaryBufferInterface)(THIS_ LPDIRECTSOUNDBUFFER) PURE;
+	STDMETHOD(SetFocusWindow)(THIS_ HWND,BOOL) PURE ;
+};
+#undef INTERFACE
+
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/amvideo.h
===================================================================
--- Daodan/MinGW/include/amvideo.h	(revision 1046)
+++ Daodan/MinGW/include/amvideo.h	(revision 1046)
@@ -0,0 +1,179 @@
+#ifndef _AMVIDEO_H
+#define _AMVIDEO_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#include <ddraw.h>
+#include <strmif.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define AMDDS_NONE 0x0000
+#define AMDDS_DCIPS 0x0001
+#define AMDDS_PS 0x0002
+#define AMDDS_RGBOVR 0x0004
+#define AMDDS_YUVOVR 0x0008
+#define AMDDS_RGBOFF 0x0010
+#define AMDDS_YUVOFF 0x0020
+#define AMDDS_RGBFLP 0x0040
+#define AMDDS_YUVFLP 0x0080
+#define AMDDS_ ALL 0x00FF
+#define AMDDS_DEFAULT 0x00FF
+#define AMDDS_YUV (AMDDS_YUVOFF|AMDDS_YUVOVR|AMDDS_YUVFLP)
+#define AMDDS_RGB (AMDDS_RGBOFF|AMDDS_RGBOVR|AMDDS_RGBFLP)
+#define AMDDS_PRIMARY (AMDDS_DCIPS|AMDDS_PS)
+#define BIT_MASKS_MATCH(pbmi1,pbmi2) ((pbmi1)->dwBitMasks[0] == (pbmi2)->dwBitMasks[0] && (pbmi1)->dwBitMasks[1] == (pbmi2)->dwBitMasks[1] && (pbmi1)->dwBitMasks[2] == (pbmi2)->dwBitMasks[2])
+#define PALETTISED(pbmi) ((pbmi)->bmiHeader.biBitCount <= 8)
+#define PALETTE_ENTRIES(pbmi) (1 << (pbmi)->bmiHeader.biBitCount)
+#define RESET_MASKS(pbmi) (ZeroMemory((PVOID)(pbmi)->dwBitFields,3*sizeof(DWORD)))
+#define RESET_PALETTE(pbmi) (ZeroMemory((PVOID)(pbmi)->bmiColors,256*sizeof(RGBQUAD)));
+#define SIZE_EGA_PALETTE (16*sizeof(RGBQUAD))
+#define SIZE_MASKS (3*sizeof(DWORD))
+#define SIZE_PALETTE (256*sizeof(RGBQUAD))
+typedef enum {
+	AM_PROPERTY_FRAMESTEP_STEP = 1,
+	AM_PROPERTY_FRAMESTEP_CANCEL = 2,
+	AM_PROPERTY_FRAMESTEP_CANSTEP = 3,
+	AM_PROPERTY_FRAMESTEP_CANSTEPMULTIPLE = 4
+} AM_PROPERTY_FRAMESTEP;
+typedef struct tag_TRUECOLORINFO {
+	DWORD dwBitMasks[3];
+	RGBQUAD bmiColors[256];
+} TRUECOLORINFO;
+typedef struct tagVIDEOINFOHEADER {
+	RECT rcSource;
+	RECT rcTarget;
+	DWORD dwBitRate;
+	DWORD dwBitErrorRate;
+	REFERENCE_TIME AvgTimePerFrame;
+	BITMAPINFOHEADER bmiHeader;
+} VIDEOINFOHEADER;
+typedef struct tagVIDEOINFO {
+	RECT rcSource,
+	RECT rcTarget,
+	DWORD dwBitRate,
+	DWORD dwBitErrorRate,
+	REFERENCE_TIME AvgTimePerFrame;
+	BITMAPINFOHEADER bmiHeader;
+	union {
+		RGBQUAD bmiColors[256];
+		DWORD dwBitMasks[3];
+		TRUECOLORINFO TrueColorInfo;
+	};
+} VIDEOINFO;
+typedef struct tagMPEG1VIDEOINFO {
+	VIDEOINFOHEADER hdr;
+	DWORD dwStartTimeCode;
+	DWORD cbSequenceHeader;
+	BYTE bSequenceHeader[1];
+} MPEG1VIDEOINFO;
+typedef struct tagAnalogVideoInfo {
+	RECT rcSource;
+	RECT rcTarget;
+	DWORD dwActiveWidth;
+	DWORD dwActiveHeight;
+	REFERENCE_TIME AvgTimePerFrame;
+} ANALOGVIDEOINFO;
+typedef struct _AM_FRAMESTEP_STEP {
+	DWORD dwFramesToStep;
+} AM_FRAMESTEP_STEP;
+#define INTERFACE IDirectDrawVideo
+DECLARE_INTERFACE_(IDirectDrawVideo, IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,LPVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(CanUseOverlayStretch)(THIS_ long*) PURE;
+	STDMETHOD(CanUseScanLine)(THIS_ long*) PURE;
+	STDMETHOD(GetCaps)(THIS_ DDCAPS*) PURE;
+	STDMETHOD(GetDirectDraw)(THIS_ LPDIRECTDRAW*) PURE;
+	STDMETHOD(GetEmulatedCaps)(THIS_ DDCAPS*) PURE;
+	STDMETHOD(GetFourCCCodes)(THIS_ DWORD*,DWORD*) PURE;
+	STDMETHOD(GetSurfaceDesc)(THIS_ DDSURFACEDESC*) PURE;
+	STDMETHOD(GetSurfaceType)(THIS_ DWORD*) PURE;
+	STDMETHOD(GetSwitches)(THIS_ DWORD*) PURE;
+	STDMETHOD(SetDefault)(THIS) PURE;
+	STDMETHOD(SetDirectDraw)(THIS_ LPDIRECTDRAW) PURE;
+	STDMETHOD(SetSwitches)(THIS_ DWORD) PURE;
+	STDMETHOD(UseOverlayStretch)(THIS_ long) PURE;
+	STDMETHOD(UseScanLine)(THIS_ long) PURE;
+	STDMETHOD(UseWhenFullScreen)(THIS_ long) PURE;
+	STDMETHOD(WillUseFullScreen)(THIS_ long*) PURE;
+};
+#undef INTERFACE
+#define INTERFACE IQualProp
+DECLARE_INTERFACE_(IQualProp, IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,LPVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(get_AvgFrameRate)(THIS_ int*) PURE;
+	STDMETHOD(get_AvgSyncOffset)(THIS_ int*) PURE;
+	STDMETHOD(get_DevSyncOffset)(THIS_ int*) PURE;
+	STDMETHOD(get_FramesDrawn)(THIS_ int*) PURE;
+	STDMETHOD(get_FramesDroppedInRenderer)(THIS_ int*) PURE;
+	STDMETHOD(get_Jitter)(THIS_ int*) PURE;
+};
+#undef INTERFACE
+#define INTERFACE IFullScreenVideo
+DECLARE_INTERFACE_(IFullScreenVideo, IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,LPVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(CountModes)(THIS_ long*) PURE;
+	STDMETHOD(GetCaption)(THIS_ BSTR*) PURE;
+	STDMETHOD(GetClipFactor)(THIS_ long*) PURE;
+	STDMETHOD(GetCurrentMode)(THIS_ long*) PURE;
+	STDMETHOD(GetMessageDrain)(THIS_ HWND*) PURE;
+	STDMETHOD(GetModeInfo)(THIS_ long,long*,long*,long*) PURE;
+	STDMETHOD(GetMonitor)(THIS_ long*) PURE;
+	STDMETHOD(HideOnDeactivate)(THIS_ long) PURE;
+	STDMETHOD(IsHideOnDeactivate)(THIS) PURE;
+	STDMETHOD(IsModeAvailable)(THIS_ long) PURE;
+	STDMETHOD(IsModeEnabled)(THIS_ long) PURE;
+	STDMETHOD(SetCaption)(THIS_ BSTR) PURE;
+	STDMETHOD(SetClipFactor)(THIS_ long) PURE;
+	STDMETHOD(SetDefault)(THIS) PURE;
+	STDMETHOD(SetEnabled)(THIS_ long,long) PURE;
+	STDMETHOD(SetMessageDrain)(THIS_ HWND) PURE;
+	STDMETHOD(SetMonitor)(THIS_ long) PURE;
+};
+#undef INTERFACE
+#define INTERFACE IFullScreenVideoEx
+DECLARE_INTERFACE_(IFullScreenVideoEx, IFullScreenVideo)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID, LPVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(CountModes)(THIS_ long*) PURE;
+	STDMETHOD(GetAcceleratorTable)(THIS_ HWND*,HACCEL*) PURE;
+	STDMETHOD(GetCaption)(THIS_ BSTR*) PURE;
+	STDMETHOD(GetClipFactor)(THIS_ long*) PURE;
+	STDMETHOD(GetCurrentMode)(THIS_ long*) PURE;
+	STDMETHOD(GetMessageDrain)(THIS_ HWND*) PURE;
+	STDMETHOD(GetModeInfo)(THIS_ long,long*,long*,long*) PURE;
+	STDMETHOD(GetMonitor)(THIS_ long*) PURE;
+	STDMETHOD(HideOnDeactivate)(THIS_ long) PURE;
+	STDMETHOD(IsHideOnDeactivate)(THIS) PURE;
+	STDMETHOD(IsKeepPixelAspectRatio)(THIS_ long*) PURE;
+	STDMETHOD(IsModeAvailable)(THIS_ long) PURE;
+	STDMETHOD(IsModeEnabled)(THIS_ long) PURE;
+	STDMETHOD(KeepPixelAspectRatio)(THIS_ long) PURE;
+	STDMETHOD(SetAcceleratorTable)(THIS_ HWND,HACCEL) PURE;
+	STDMETHOD(SetCaption)(THIS_ BSTR) PURE;
+	STDMETHOD(SetClipFactor)(THIS_ long) PURE;
+	STDMETHOD(SetDefault)(THIS) PURE;
+	STDMETHOD(SetEnabled)(THIS_ long,long) PURE;
+	STDMETHOD(SetMessageDrain)(THIS_ HWND) PURE;
+	STDMETHOD(SetMonitor)(THIS_ long) PURE;
+};
+#undef INTERFACE
+
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/assert.h
===================================================================
--- Daodan/MinGW/include/assert.h	(revision 1046)
+++ Daodan/MinGW/include/assert.h	(revision 1046)
@@ -0,0 +1,51 @@
+/*
+ * assert.h
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is a part of the mingw-runtime package.
+ * No warranty is given; refer to the file DISCLAIMER within the package.
+ *
+ * Define the assert macro for debug output.
+ *
+ */
+
+/* We should be able to include this file multiple times to allow the assert
+   macro to be enabled/disabled for different parts of code.  So don't add a
+   header guard.  */
+
+#ifndef RC_INVOKED
+
+/* All the headers include this file. */
+#include <_mingw.h>
+
+#undef assert
+
+#ifdef	__cplusplus
+extern "C" {
+#endif
+
+#ifdef NDEBUG
+/*
+ * If not debugging, assert does nothing.
+ */
+#define assert(x)	((void)0)
+
+#else /* debugging enabled */
+
+/*
+ * CRTDLL nicely supplies a function which does the actual output and
+ * call to abort.
+ */
+_CRTIMP void __cdecl __MINGW_NOTHROW _assert (const char*, const char*, int) __MINGW_ATTRIB_NORETURN;
+
+/*
+ * Definition of the assert macro.
+ */
+#define assert(e)       ((e) ? (void)0 : _assert(#e, __FILE__, __LINE__))
+
+#endif	/* NDEBUG */
+
+#ifdef	__cplusplus
+}
+#endif
+
+#endif /* Not RC_INVOKED */
Index: Daodan/MinGW/include/audevcod.h
===================================================================
--- Daodan/MinGW/include/audevcod.h	(revision 1046)
+++ Daodan/MinGW/include/audevcod.h	(revision 1046)
@@ -0,0 +1,31 @@
+#ifndef _AUDEVCOD_H
+#define _AUDEVCOD_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef enum _tagSND_DEVICE_ERROR {
+	SNDDEV_ERROR_Open = 1,
+	SNDDEV_ERROR_Close = 2,
+	SNDDEV_ERROR_GetCaps = 3,
+	SNDDEV_ERROR_PrepareHeader = 4,
+	SNDDEV_ERROR_UnprepareHeader = 5,
+	SNDDEV_ERROR_Reset = 6,
+	SNDDEV_ERROR_Restart = 7,
+	SNDDEV_ERROR_GetPosition = 8,
+	SNDDEV_ERROR_Write = 9,
+	SNDDEV_ERROR_Pause = 10,
+	SNDDEV_ERROR_Stop = 11,
+	SNDDEV_ERROR_Start = 12,
+	SNDDEV_ERROR_AddBuffer = 13,
+	SNDDEV_ERROR_Query = 14
+} SNDDEV_ERR;
+
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/aviriff.h
===================================================================
--- Daodan/MinGW/include/aviriff.h	(revision 1046)
+++ Daodan/MinGW/include/aviriff.h	(revision 1046)
@@ -0,0 +1,87 @@
+#ifndef _AVIRIFF_H
+#define _AVIRIFF_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifndef _MMSYSTEM_H
+#include <mmsystem.h>
+#endif
+#ifndef _WINGDI_H
+#include <wingdi.h>
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*--- DirectShow Reference - DirectShow Structures */
+typedef struct _avimainheader {
+	FOURCC fcc;
+	DWORD cb;
+	DWORD dwMicroSecPerFrame;
+	DWORD dwMaxBytesPerSec;
+	DWORD dwPaddingGranularity;
+	DWORD dwFlags;
+	DWORD dwTotalFrames;
+	DWORD dwInitialFrames;
+	DWORD dwStreams;
+	DWORD dwSuggestedBufferSize;
+	DWORD dwWidth;
+	DWORD dwHeight;
+	DWORD dwReserved[4];
+} AVIMAINHEADER;
+#define AVIF_COPYRIGHTED 0x00020000
+#define AVIF_HASINDEX 0x00000010
+#define AVIF_ISINTERLEAVED 0x00000100
+#define AVIF_MUSTUSEINDEX 0x00000020
+#define AVIF_WASCAPTUREFILE 0x00010000
+typedef struct _avioldindex {
+	FOURCC fcc;
+	DWORD cb;
+	struct _avioldindex_entry {
+		DWORD dwChunkId;
+		DWORD dwFlags;
+		DWORD dwOffset;
+		DWORD dwSize;
+	} aIndex[];
+} AVIOLDINDEX;
+#define AVIIF_LIST 0x00000001
+#define AVIIF_KEYFRAME 0x00000010
+#define AVIIF_NO_TIME 0x00000100
+typedef struct {
+	BYTE bFirstEntry;
+	BYTE bNumEntries;
+	WORD wFlags;
+	PALETTEENTRY peNew[];
+} AVIPALCHANGE;
+typedef struct _avistreamheader {
+	FOURCC fcc;
+	DWORD cb;
+	FOURCC fccType;
+	FOURCC fccHandler;
+	DWORD dwFlags;
+	WORD wPriority;
+	WORD wLanguage;
+	DWORD dwInitialFrames;
+	DWORD dwScale;
+	DWORD dwRate;
+	DWORD dwStart;
+	DWORD dwLength;
+	DWORD dwSuggestedBufferSize;
+	DWORD dwQuality;
+	DWORD dwSampleSize;
+	struct {
+		short int left;
+		short int top;
+		short int right;
+		short int bottom;
+	} rcFrame;
+} AVISTREAMHEADER;
+#define AVISF_DISABLED 0x00000001
+#define AVISF_VIDEO_PALCHANGES 0x00010000
+
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/aygshell.h
===================================================================
--- Daodan/MinGW/include/aygshell.h	(revision 1046)
+++ Daodan/MinGW/include/aygshell.h	(revision 1046)
@@ -0,0 +1,49 @@
+#ifndef _AYGSHELL_H
+#define _AYGSHELL_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#if _WIN32_WCE >= 400
+
+#include <windef.h>             /* shellapi needs this */
+#include <basetyps.h>
+#include <shellapi.h>           /* for WINSHELLAPI */
+
+typedef struct tagSHMENUBARINFO {
+  DWORD cbSize;
+  HWND hwndParent;
+  DWORD dwFlags;
+  UINT nToolBarId;
+  HINSTANCE hInstRes;
+  int nBmpId;
+  int cBmpImages;
+  HWND hwndMB;
+  COLORREF clrBk;
+} SHMENUBARINFO, *PSHMENUBARINFO;
+
+typedef struct tagSHACTIVATEINFO {
+  DWORD cbSize;
+  HWND hwndLastFocus;
+  UINT fSipUp :1;
+  UINT fSipOnDeactivation :1;
+  UINT fActive :1;
+  UINT fReserved :29;
+} SHACTIVATEINFO, *PSHACTIVATEINFO;
+
+WINSHELLAPI BOOL WINAPI SHCreateMenuBar(SHMENUBARINFO*);
+WINSHELLAPI HWND WINAPI SHFindMenuBar(HWND);
+WINSHELLAPI HRESULT WINAPI SHCreateNewItem(HWND,REFCLSID);
+WINSHELLAPI BOOL WINAPI SHFullScreen(HWND,DWORD);
+WINSHELLAPI BOOL WINAPI SHSipInfo(UINT,UINT,PVOID,UINT);
+/* next exported by ordinal only: @84 */
+WINSHELLAPI BOOL WINAPI SHHandleWMActivate(HWND,WPARAM,LPARAM,SHACTIVATEINFO*,DWORD);
+/* next exported by ordinal only: @83 */
+WINSHELLAPI BOOL WINAPI SHHandleWMSettingChange(HWND,WPARAM,LPARAM,SHACTIVATEINFO*);
+
+/* The following are not in device ROMs. */
+extern BOOL SHInvokeContextMenuCommand(HWND,UINT,HANDLE);
+
+#endif /* _WIN32_WCE >= 400 */
+
+#endif
Index: Daodan/MinGW/include/basetsd.h
===================================================================
--- Daodan/MinGW/include/basetsd.h	(revision 1046)
+++ Daodan/MinGW/include/basetsd.h	(revision 1046)
@@ -0,0 +1,123 @@
+#ifndef _BASETSD_H
+#define _BASETSD_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __GNUC__
+#ifndef __int64
+#define __int64 long long
+#endif
+#endif
+
+#if defined(_WIN64)
+#define __int3264   __int64
+#define ADDRESS_TAG_BIT 0x40000000000UI64
+#else /*  !_WIN64 */
+#define __int3264   __int32
+#define ADDRESS_TAG_BIT 0x80000000UL
+#define HandleToUlong( h ) ((ULONG)(ULONG_PTR)(h) )
+#define HandleToLong( h ) ((LONG)(LONG_PTR) (h) )
+#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)((long)l))
+#define ULongToPtr( ul )  ((VOID*)(ULONG_PTR)((unsigned long)ul))
+#endif /* !_WIN64 */
+
+#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)
+
+#ifndef RC_INVOKED
+#ifdef __cplusplus
+extern "C" {
+#endif
+typedef signed char INT8;
+typedef signed short INT16;
+typedef int LONG32, *PLONG32;
+#ifndef XFree86Server
+typedef int INT32, *PINT32;
+#endif /* ndef XFree86Server */
+typedef unsigned char UINT8;
+typedef unsigned short UINT16;
+typedef unsigned int ULONG32, *PULONG32;
+typedef unsigned int DWORD32, *PDWORD32;
+typedef unsigned int UINT32, *PUINT32;
+
+#if defined(_WIN64)
+typedef __int64 INT_PTR, *PINT_PTR;
+typedef unsigned __int64 UINT_PTR, *PUINT_PTR;
+typedef __int64 LONG_PTR, *PLONG_PTR;
+typedef unsigned __int64 ULONG_PTR, *PULONG_PTR;
+typedef unsigned __int64 HANDLE_PTR;
+typedef unsigned int UHALF_PTR, *PUHALF_PTR;
+typedef int HALF_PTR, *PHALF_PTR;
+
+#if 0 /* TODO when WIN64 is here */
+inline unsigned long HandleToUlong(const void* h )
+    { return((unsigned long) h ); }
+inline long HandleToLong( const void* h )
+    { return((long) h ); }
+inline void* LongToHandle( const long h )
+    { return((void*) (INT_PTR) h ); }
+inline unsigned long PtrToUlong( const void* p)
+    { return((unsigned long) p ); }
+inline unsigned int PtrToUint( const void* p )
+    { return((unsigned int) p ); }
+inline unsigned short PtrToUshort( const void* p )
+    { return((unsigned short) p ); }
+inline long PtrToLong( const void* p )
+    { return((long) p ); }
+inline int PtrToInt( const void* p )
+    { return((int) p ); }
+inline short PtrToShort( const void* p )
+    { return((short) p ); }
+inline void* IntToPtr( const int i )
+    { return( (void*)(INT_PTR)i ); }
+inline void* UIntToPtr(const unsigned int ui)
+    { return( (void*)(UINT_PTR)ui ); }
+inline void* LongToPtr( const long l )
+    { return( (void*)(LONG_PTR)l ); }
+inline void* ULongToPtr( const unsigned long ul )
+    { return( (void*)(ULONG_PTR)ul ); }
+#endif /* 0_ */
+
+#else /*  !_WIN64 */
+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;
+typedef unsigned short UHALF_PTR, *PUHALF_PTR;
+typedef short HALF_PTR, *PHALF_PTR;
+typedef unsigned long HANDLE_PTR;
+#endif /* !_WIN64 */
+
+typedef ULONG_PTR SIZE_T, *PSIZE_T;
+typedef LONG_PTR SSIZE_T, *PSSIZE_T;
+typedef ULONG_PTR DWORD_PTR, *PDWORD_PTR;
+typedef __int64 LONG64, *PLONG64;
+typedef __int64 INT64,  *PINT64;
+typedef unsigned __int64 ULONG64, *PULONG64;
+typedef unsigned __int64 DWORD64, *PDWORD64;
+typedef unsigned __int64 UINT64,  *PUINT64;
+#ifdef __cplusplus
+}
+#endif
+#endif /* !RC_INVOKED */
+
+#endif /* _BASETSD_H */
Index: Daodan/MinGW/include/basetyps.h
===================================================================
--- Daodan/MinGW/include/basetyps.h	(revision 1046)
+++ Daodan/MinGW/include/basetyps.h	(revision 1046)
@@ -0,0 +1,182 @@
+#ifndef _BASETYPS_H
+#define _BASETYPS_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifndef _OBJC_NO_COM_
+# ifdef __cplusplus
+#  define EXTERN_C extern "C"
+# else
+#  define EXTERN_C extern
+# endif  /* __cplusplus */
+# ifndef __int64
+#  define __int64 long long
+# endif
+# ifndef __int32
+#  define __int32 long
+# endif
+# ifndef __int16
+#  define __int16 short
+# endif
+# ifndef __int8
+#  define __int8 char
+# endif
+# ifndef __small
+#  define __small char
+# endif
+# ifndef __hyper
+#  define __hyper long long
+# endif
+# define STDMETHODCALLTYPE	__stdcall
+# define STDMETHODVCALLTYPE	__cdecl
+# define STDAPICALLTYPE	__stdcall
+# define STDAPIVCALLTYPE	__cdecl
+# define STDAPI	EXTERN_C HRESULT STDAPICALLTYPE
+# define STDAPI_(t)	EXTERN_C t STDAPICALLTYPE
+# define STDMETHODIMP	HRESULT STDMETHODCALLTYPE
+# define STDMETHODIMP_(t)	t STDMETHODCALLTYPE
+# define STDAPIV	EXTERN_C HRESULT STDAPIVCALLTYPE
+# define STDAPIV_(t)	EXTERN_C t STDAPIVCALLTYPE
+# define STDMETHODIMPV	HRESULT STDMETHODVCALLTYPE
+# define STDMETHODIMPV_(t)	t STDMETHODVCALLTYPE
+/* Newer MS compilers support the __interface keyword, but
+   that has a specific meaning that is enforced by the compiler.
+   For now, just get 'interface' out of the global namespace
+   for __OBJC__ */
+# define _COM_interface	struct
+# ifndef __OBJC__
+#  define interface	_COM_interface
+# endif
+# if defined(__cplusplus) && !defined(CINTERFACE)
+#  define STDMETHOD(m)	virtual HRESULT STDMETHODCALLTYPE m
+#  define STDMETHOD_(t,m)	virtual t STDMETHODCALLTYPE m
+#  define PURE	=0
+#  define THIS_
+#  define THIS	void
+/*
+  __attribute__((com_interface)) is obsolete in __GNUC__ >= 3
+  g++ vtables are now COM-compatible by default
+*/
+#  if defined(__GNUC__) &&  __GNUC__ < 3 && !defined(NOCOMATTRIBUTE)
+#   define DECLARE_INTERFACE(i) _COM_interface __attribute__((com_interface)) i
+#   define DECLARE_INTERFACE_(i,b) _COM_interface __attribute__((com_interface)) i : public b
+#  else
+#   define DECLARE_INTERFACE(i) _COM_interface i
+#   define DECLARE_INTERFACE_(i,b) _COM_interface i : public b
+#  endif
+# else
+#  define STDMETHOD(m)	HRESULT(STDMETHODCALLTYPE *m)
+#  define STDMETHOD_(t,m)	t(STDMETHODCALLTYPE *m)
+#  define PURE
+#  define THIS_	INTERFACE *,
+#  define THIS	INTERFACE *
+#  ifndef CONST_VTABLE
+#   define CONST_VTABLE
+#  endif
+#  define DECLARE_INTERFACE(i) \
+   typedef _COM_interface i { CONST_VTABLE struct i##Vtbl *lpVtbl; } i; \
+   typedef CONST_VTABLE struct i##Vtbl i##Vtbl; \
+   CONST_VTABLE struct i##Vtbl
+#  define DECLARE_INTERFACE_(i,b) DECLARE_INTERFACE(i)
+# endif
+# define BEGIN_INTERFACE
+# define END_INTERFACE
+
+# define FWD_DECL(i) typedef _COM_interface i i
+# if defined(__cplusplus) && !defined(CINTERFACE)
+#  define IENUM_THIS(T)
+#  define IENUM_THIS_(T)
+# else
+#  define IENUM_THIS(T) T*
+#  define IENUM_THIS_(T) T*,
+# endif
+# define DECLARE_ENUMERATOR_(I,T) \
+         DECLARE_INTERFACE_(I,IUnknown) \
+         { \
+	  STDMETHOD(QueryInterface)(IENUM_THIS_(I) REFIID,PVOID*) PURE; \
+	  STDMETHOD_(ULONG,AddRef)(IENUM_THIS(I)) PURE; \
+	  STDMETHOD_(ULONG,Release)(IENUM_THIS(I)) PURE; \
+	  STDMETHOD(Next)(IENUM_THIS_(I) ULONG,T*,ULONG*) PURE; \
+	  STDMETHOD(Skip)(IENUM_THIS_(I) ULONG) PURE; \
+	  STDMETHOD(Reset)(IENUM_THIS(I)) PURE; \
+	  STDMETHOD(Clone)(IENUM_THIS_(I) I**) PURE; \
+         }
+# define DECLARE_ENUMERATOR(T) DECLARE_ENUMERATOR_(IEnum##T,T)
+
+#endif /* _OBJC_NO_COM_ */
+
+#ifdef _GUID_DEFINED
+# warning _GUID_DEFINED is deprecated, use GUID_DEFINED instead
+#endif
+
+#if ! (defined _GUID_DEFINED || defined GUID_DEFINED) /* also defined in winnt.h */
+#define GUID_DEFINED
+typedef struct _GUID
+{
+    unsigned long Data1;
+    unsigned short Data2;
+    unsigned short Data3;
+    unsigned char Data4[8];
+} GUID,*REFGUID,*LPGUID;
+#endif /* GUID_DEFINED */
+#ifndef UUID_DEFINED
+#define UUID_DEFINED
+typedef GUID UUID;
+#endif /* UUID_DEFINED */
+#ifndef __IID_DEFINED__
+#define __IID_DEFINED__
+typedef GUID IID;
+#endif /* __IID_DEFINED__ */
+typedef GUID CLSID;
+typedef CLSID *LPCLSID;
+typedef IID *LPIID;
+typedef IID *REFIID;
+typedef CLSID *REFCLSID;
+typedef GUID FMTID;
+typedef FMTID *REFFMTID;
+typedef unsigned long error_status_t;
+#define uuid_t UUID
+typedef unsigned long PROPID;
+
+#ifndef _REFGUID_DEFINED
+#if defined (__cplusplus) && !defined (CINTERFACE)
+#define REFGUID const GUID&
+#define REFIID const IID&
+#define REFCLSID const CLSID&
+#define REFFMTID const FMTID&
+#else
+#define REFGUID const GUID* const
+#define REFIID const IID* const
+#define REFCLSID const CLSID* const
+#define REFFMTID const FMTID* const
+#endif
+#define _REFGUID_DEFINED
+#define _REFIID_DEFINED
+#define _REFCLSID_DEFINED
+#define _REFFMTID_DEFINED
+#endif
+#ifndef GUID_SECTION
+#define GUID_SECTION ".text"
+#endif
+/* Explicit naming of .text section for readonly data is only
+   needed for older GGC (pre-2.95).
+   More recent (3.4) GCC puts readonly data in .rdata.  */
+#if defined (__GNUC__) && (__GNUC__ <= 2 && __GNUC_MINOR__ < 95)
+#define GUID_SECT __attribute__ ((section (GUID_SECTION)))
+#else
+#define GUID_SECT
+#endif
+#if !defined(INITGUID) || (defined(INITGUID) && defined(__cplusplus))
+#define GUID_EXT EXTERN_C
+#else
+#define GUID_EXT
+#endif
+#ifdef INITGUID
+#define DEFINE_GUID(n,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) GUID_EXT const GUID n GUID_SECT = {l,w1,w2,{b1,b2,b3,b4,b5,b6,b7,b8}}
+#define DEFINE_OLEGUID(n,l,w1,w2) DEFINE_GUID(n,l,w1,w2,0xC0,0,0,0,0,0,0,0x46)
+#else
+#define DEFINE_GUID(n,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) GUID_EXT const GUID n
+#define DEFINE_OLEGUID(n,l,w1,w2) DEFINE_GUID(n,l,w1,w2,0xC0,0,0,0,0,0,0,0x46)
+#endif
+#endif
Index: Daodan/MinGW/include/bdatypes.h
===================================================================
--- Daodan/MinGW/include/bdatypes.h	(revision 1046)
+++ Daodan/MinGW/include/bdatypes.h	(revision 1046)
@@ -0,0 +1,32 @@
+#ifndef _BDATYPES_H
+#define _BDATYPES_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*--- DirectShow Reference - DirectShow Enumerated Types */
+typedef enum {
+	MEDIA_TRANSPORT_PACKET,
+	MEDIA_ELEMENTARY_STREAM,
+	MEDIA_MPEG2_PSI,
+	MEDIA_TRANSPORT_PAYLOAD
+} MEDIA_SAMPLE_CONTENT;
+/*--- DirectShow Reference - DirectShow Structures */
+typedef struct {
+	DWORD dwOffset;
+	DWORD dwPacketLength;
+	DWORD dwStride;
+} MPEG2_TRANSPORT_STRIDE;
+typedef struct {
+	ULONG ulPID;
+	MEDIA_SAMPLE_CONTENT MediaSampleContent ;
+} PID_MAP;
+
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/cderr.h
===================================================================
--- Daodan/MinGW/include/cderr.h	(revision 1046)
+++ Daodan/MinGW/include/cderr.h	(revision 1046)
@@ -0,0 +1,44 @@
+#ifndef _CDERR_H
+#define _CDERR_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#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
+#endif
Index: Daodan/MinGW/include/cguid.h
===================================================================
--- Daodan/MinGW/include/cguid.h	(revision 1046)
+++ Daodan/MinGW/include/cguid.h	(revision 1046)
@@ -0,0 +1,83 @@
+#ifndef _CGUID_H
+#define _CGUID_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+extern const IID GUID_NULL;
+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 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_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 CLSID CLSID_StdGlobalInterfaceTable;
+extern const GUID GUID_TRISTATE;
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/cmnquery.h
===================================================================
--- Daodan/MinGW/include/cmnquery.h	(revision 1046)
+++ Daodan/MinGW/include/cmnquery.h	(revision 1046)
@@ -0,0 +1,81 @@
+/*
+ * cmnquery.h - Active Directory
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain.  You may use,
+ * modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY.  ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED.  This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+#ifndef _CMNQUERY_H
+#define _CMNQUERY_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*--- Active Directory Reference - Active Directory Structures - Active Directory Display Structures */
+#if (_WIN32_WINNT >= 0x0500)
+typedef struct {
+	DWORD cbStruct;
+	DWORD dwFlags;
+	CLSID clsid;
+	HICON hIcon;
+	LPWSTR pszTitle;
+} CQFORM,*LPCQFORM;
+#define CQFF_NOGLOBALPAGES 0x00000001
+#define CQFF_ISOPTIONAL 0x00000002
+typedef struct {
+	DWORD cbStruct;
+	DWORD dwFlags;
+	LPCQPAGEPROC pPageProc;
+	HINSTANCE hInstance;
+	INT idPageName;
+	INT idPageTemplate;
+	DLGPROC pDlgProc;
+	LPARAM lParam;
+} CQPAGE,*LPCQPAGE;
+/*********
+typedef struct {
+	DWORD cbStruct;
+	DWORD dwFlags;
+	CLSID clsidHandler;
+	LPVOID pHandlerParameters;
+	CLSID clsidDefaultForm;
+	IPersistQuery* pPersistQuery;
+	union {
+		void* pFormParameters;
+		IPropertyBag* ppbFormParameters;
+	};
+} OPENQUERYWINDOW,*LPOPENQUERYWINDOW;
+*********/
+#define OQWF_OKCANCEL 0x00000001
+#define OQWF_DEFAULTFORM 0x00000002
+#define OQWF_SINGLESELECT 0x00000004
+#define OQWF_LOADQUERY 0x00000008
+#define OQWF_REMOVESCOPES 0x00000010
+#define OQWF_REMOVEFORMS 0x00000020
+#define OQWF_ISSUEONOPEN 0x00000040
+#define OQWF_SHOWOPTIONAL 0x00000080
+#define OQWF_SAVEQUERYONOK 0x00000200
+#define OQWF_HIDEMENUS 0x00000400
+#define OQWF_HIDESEARCHUI 0x00000800
+#define OQWF_PARAMISPROPERTYBAG 0x80000000
+/*--- Active Directory Reference - Active Directory Functions - Active Directory Display Functions */
+typedef HRESULT (CALLBACK* CQAddFormsProc)(LPARAM,LPCQFORM);
+typedef HRESULT (CALLBACK* CQAddPagesProc)(LPARAM,REFCLSID,LPCQPAGE);
+typedef HRESULT (CALLBACK* CQPageProc)(LPCQPAGE,HWND,UINT,WPARAM,LPARAM);
+#endif /* (_WIN32_WINNT >= 0x0500) */
+
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/comcat.h
===================================================================
--- Daodan/MinGW/include/comcat.h	(revision 1046)
+++ Daodan/MinGW/include/comcat.h	(revision 1046)
@@ -0,0 +1,175 @@
+#ifndef _COMCAT_H
+#define _COMCAT_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifndef COM_NO_WINDOWS_H
+#include <windows.h>
+#include <ole2.h>
+#endif
+
+#ifndef _RC_INVOKED
+
+#ifdef __cplusplus
+extern "C"{
+#endif
+
+EXTERN_C const IID IID_IEnumGUID;
+typedef _COM_interface IEnumGUID *LPENUMGUID;
+
+#define INTERFACE IEnumGUID
+DECLARE_INTERFACE_(IEnumGUID,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(Next)(THIS_ ULONG,GUID*,ULONG*) PURE;
+	STDMETHOD(Skip)(THIS_ ULONG) PURE;
+	STDMETHOD(Reset)(THIS) PURE;
+	STDMETHOD(Clone)(THIS_ LPENUMGUID*) PURE;
+};
+#undef INTERFACE
+#if (!defined (__cplusplus) || defined (CINTERFACE)) \
+    && defined (COBJMACROS)
+#define IEnumGUID_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IEnumGUID_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IEnumGUID_Release(p)            (p)->lpVtbl->Release(p)
+#define IEnumGUID_Next(p,a,b,c)         (p)->lpVtbl->Next(p,a,b,c)
+#define IEnumGUID_Skip(p,a)             (p)->lpVtbl->Skip(p,a)
+#define IEnumGUID_Reset(p)              (p)->lpVtbl->Reset(p)
+#define IEnumGUID_Clone(p,a)            (p)->lpVtbl->Clone(p,a)
+#endif
+
+typedef GUID CATID;
+typedef REFGUID REFCATID;
+#define CATID_NULL GUID_NULL
+#define IsEqualCATID(a, b) IsEqualGUID(a, b)
+
+typedef struct tagCATEGORYINFO {
+    CATID   catid;		/* category identifier for component */
+    LCID    lcid;		/* locale identifier */
+    OLECHAR szDescription[128];	/* description of the category */
+} CATEGORYINFO, *LPCATEGORYINFO;
+
+EXTERN_C const CATID CATID_Insertable;
+EXTERN_C const CATID CATID_Control;
+EXTERN_C const CATID CATID_Programmable;
+EXTERN_C const CATID CATID_IsShortcut;
+EXTERN_C const CATID CATID_NeverShowExt;
+EXTERN_C const CATID CATID_DocObject;
+EXTERN_C const CATID CATID_Printable;
+EXTERN_C const CATID CATID_RequiresDataPathHost;
+EXTERN_C const CATID CATID_PersistsToMoniker;
+EXTERN_C const CATID CATID_PersistsToStorage;
+EXTERN_C const CATID CATID_PersistsToStreamInit;
+EXTERN_C const CATID CATID_PersistsToStream;
+EXTERN_C const CATID CATID_PersistsToMemory;
+EXTERN_C const CATID CATID_PersistsToFile;
+EXTERN_C const CATID CATID_PersistsToPropertyBag;
+EXTERN_C const CATID CATID_InternetAware;
+EXTERN_C const CATID CATID_DesignTimeUIActivatableControl;
+
+#define IEnumCATID IEnumGUID
+#define LPENUMCATID LPENUMGUID
+#define IID_IEnumCATID IID_IEnumGUID
+
+#define IEnumCLSID IEnumGUID
+#define LPENUMCLSID LPENUMGUID
+#define IID_IEnumCLSID IID_IEnumGUID
+
+EXTERN_C const IID IID_ICatInformation;
+typedef _COM_interface ICatInformation *LPCATINFORMATION;
+
+EXTERN_C const IID IID_ICatRegister;
+typedef _COM_interface ICatRegister *LPCATREGISTER;
+
+EXTERN_C const IID IID_IEnumCATEGORYINFO;
+typedef _COM_interface IEnumCATEGORYINFO *LPENUMCATEGORYINFO;
+
+EXTERN_C const CLSID CLSID_StdComponentCategoriesMgr;
+
+#define INTERFACE ICatInformation
+DECLARE_INTERFACE_(ICatInformation,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(EnumCategories)(THIS_ LCID,LPENUMCATEGORYINFO*) PURE;
+	STDMETHOD(GetCategoryDesc)(THIS_ REFCATID,LCID,PWCHAR*) PURE;
+	STDMETHOD(EnumClassesOfCategories)(THIS_ ULONG,CATID*,ULONG,CATID*,LPENUMCLSID*) PURE;
+	STDMETHOD(IsClassOfCategories)(THIS_ REFCLSID,ULONG,CATID*,ULONG,CATID*) PURE;
+	STDMETHOD(EnumImplCategoriesOfClass)(THIS_ REFCLSID,LPENUMCATID*) PURE;
+	STDMETHOD(EnumReqCategoriesOfClass)(THIS_ REFCLSID,LPENUMCATID*) PURE;
+};
+#undef INTERFACE
+#if (!defined (__cplusplus) || defined (CINTERFACE)) \
+    && defined (COBJMACROS)
+#define ICatInformation_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define ICatInformation_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define ICatInformation_Release(p)            (p)->lpVtbl->Release(p)
+#define ICatInformation_EnumCategories(p,a,b) (p)->lpVtbl->EnumCategories(p,a,b)
+#define ICatInformation_GetCategoryDesc(p,a,b,c) (p)->lpVtbl->GetCategoryDesc(p,a,b,c)
+#define ICatInformation_EnumClassesOfCategories(p,a,b,c,d,e) (p)->lpVtbl->EnumClassesOfCategories(p,a,b,c,d,e)
+#define ICatInformation_IsClassOfCategories(p,a,b,c,d,e) (p)->lpVtbl->IsClassOfCategories(p,a,b,c,d,e)
+#define ICatInformation_EnumImplCategoriesOfClass(p,a,b) (p)->lpVtbl->EnumImplCategoriesOfClass(p,a,b)
+#define ICatInformation_EnumReqCategoriesOfClass(p,a,b) (p)->lpVtbl->EnumReqCategoriesOfClass(p,a,b)
+#endif
+
+#define INTERFACE ICatRegister
+DECLARE_INTERFACE_(ICatRegister,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(RegisterCategories)(THIS_ ULONG,CATEGORYINFO*) PURE;
+	STDMETHOD(UnRegisterCategories)(THIS_ ULONG,CATID*) PURE;
+	STDMETHOD(RegisterClassImplCategories)(THIS_ REFCLSID,ULONG,CATID*) PURE;
+	STDMETHOD(UnRegisterClassImplCategories)(THIS_ REFCLSID,ULONG,CATID*) PURE;
+	STDMETHOD(RegisterClassReqCategories)(THIS_ REFCLSID,ULONG,CATID*) PURE;
+	STDMETHOD(UnRegisterClassReqCategories)(THIS_ REFCLSID,ULONG,CATID*) PURE;
+};
+#undef INTERFACE
+#if (!defined (__cplusplus) || defined (CINTERFACE)) \
+    && defined (COBJMACROS)
+#define ICatRegister_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define ICatRegister_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define ICatRegister_Release(p)            (p)->lpVtbl->Release(p)
+#define ICatRegister_RegisterCategories(p,a,b) (p)->lpVtbl->RegisterCategories(p,a,b)
+#define ICatRegister_UnRegisterCategories(p,a,b) (p)->lpVtbl->UnRegisterCategories(p,a,b)
+#define ICatRegister_RegisterClassImplCategories(p,a,b,c) (p)->lpVtbl->RegisterClassImplCategories(p,a,b,c)
+#define ICatRegister_UnRegisterClassImplCategories(p,a,b,c) (p)->lpVtbl->UnRegisterClassImplCategories(p,a,b,c)
+#define ICatRegister_RegisterClassReqCategories(p,a,b,c) (p)->lpVtbl->RegisterClassReqCategories(p,a,b,c)
+#define ICatRegister_UnRegisterClassReqCategories(p,a,b,c) (p)->lpVtbl->UnRegisterClassReqCategories(p,a,b,c)
+#endif
+
+EXTERN_C const IID IID_IEnumCATEGORYINFO;
+#define INTERFACE IEnumCATEGORYINFO
+DECLARE_INTERFACE_(IEnumCATEGORYINFO,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(Next)(THIS_ ULONG,CATEGORYINFO*,ULONG*) PURE;
+	STDMETHOD(Skip)(THIS_ ULONG) PURE;
+	STDMETHOD(Reset)(THIS) PURE;
+	STDMETHOD(Clone)(THIS_ LPENUMCATEGORYINFO*) PURE;
+};
+#undef INTERFACE
+#if (!defined (__cplusplus) || defined (CINTERFACE)) \
+    && defined (COBJMACROS)
+#define IEnumCATEGORYINFO_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IEnumCATEGORYINFO_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IEnumCATEGORYINFO_Release(p)            (p)->lpVtbl->Release(p)
+#define IEnumCATEGORYINFO_Next(p,a,b,c)         (p)->lpVtbl->Next(p,a,b,c)
+#define IEnumCATEGORYINFO_Skip(p,a)             (p)->lpVtbl->Skip(p,a)
+#define IEnumCATEGORYINFO_Reset(p)              (p)->lpVtbl->Reset(p)
+#define IEnumCATEGORYINFO_Clone(p,a)            (p)->lpVtbl->Clone(p,a)
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RC_INVOKED */
+#endif
Index: Daodan/MinGW/include/commctrl.h
===================================================================
--- Daodan/MinGW/include/commctrl.h	(revision 1046)
+++ Daodan/MinGW/include/commctrl.h	(revision 1046)
@@ -0,0 +1,3768 @@
+#ifndef _COMMCTRL_H
+#define _COMMCTRL_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#include <prsht.h>
+#ifdef __cplusplus
+extern "C" {
+#endif
+#ifndef _WIN32_IE
+/* define _WIN32_IE if you really want it */
+#if 0
+#define _WIN32_IE	0x0300
+#endif
+#endif
+
+#ifndef COMMCTRLAPI
+#ifdef __W32API_USE_DLLIMPORT__
+#define COMMCTRLAPI DECLSPEC_IMPORT
+#else
+#define COMMCTRLAPI
+#endif
+#endif
+
+
+#ifndef SNDMSG
+#ifdef __cplusplus
+#define SNDMSG ::SendMessage
+#else
+#define SNDMSG SendMessage
+#endif
+#endif /* ifndef SNDMSG */
+
+#define DRAGLISTMSGSTRING TEXT("commctrl_DragListMsg")
+#define HOTKEY_CLASSA	"msctls_hotkey32"
+#define HOTKEY_CLASSW	L"msctls_hotkey32"
+#define PROGRESS_CLASSA	"msctls_progress32"
+#define PROGRESS_CLASSW	L"msctls_progress32"
+#define STATUSCLASSNAMEA	"msctls_statusbar32"
+#define STATUSCLASSNAMEW	L"msctls_statusbar32"
+#define TOOLBARCLASSNAMEA	"ToolbarWindow32"
+#define TOOLBARCLASSNAMEW	L"ToolbarWindow32"
+#define TOOLTIPS_CLASSA	"tooltips_class32"
+#define TOOLTIPS_CLASSW	L"tooltips_class32"
+#define TRACKBAR_CLASSA	"msctls_trackbar32"
+#define TRACKBAR_CLASSW	L"msctls_trackbar32"
+#define UPDOWN_CLASSA	"msctls_updown32"
+#define UPDOWN_CLASSW	L"msctls_updown32"
+#define ANIMATE_CLASSA	"SysAnimate32"
+#define ANIMATE_CLASSW	L"SysAnimate32"
+#define DATETIMEPICK_CLASSW L"SysDateTimePick32"
+#define DATETIMEPICK_CLASSA "SysDateTimePick32"
+#define MONTHCAL_CLASSW L"SysMonthCal32"
+#define MONTHCAL_CLASSA "SysMonthCal32"
+#define REBARCLASSNAMEW L"ReBarWindow32"
+#define REBARCLASSNAMEA "ReBarWindow32"
+#define WC_COMBOBOXEXW	L"ComboBoxEx32"
+#define WC_COMBOBOXEXA	"ComboBoxEx32"
+#define WC_IPADDRESSW	L"SysIPAddress32"
+#define WC_IPADDRESSA	"SysIPAddress32"
+#define WC_LISTVIEWA	"SysListView32"
+#define WC_LISTVIEWW	L"SysListView32"
+#define WC_TABCONTROLA	"SysTabControl32"
+#define WC_TABCONTROLW	L"SysTabControl32"
+#define WC_TREEVIEWA	"SysTreeView32"
+#define WC_TREEVIEWW	L"SysTreeView32"
+#define WC_HEADERA	"SysHeader32"
+#define WC_HEADERW 	L"SysHeader32"
+#define WC_PAGESCROLLERW	L"SysPager"
+#define WC_PAGESCROLLERA	"SysPager"
+#define WC_NATIVEFONTCTLW	L"NativeFontCtl"
+#define WC_NATIVEFONTCTLA	"NativeFontCtl"
+#define WC_BUTTONA	"Button"
+#define WC_BUTTONW	L"Button"
+#define WC_STATICA	"Static"
+#define WC_STATICW	L"Static"
+#define WC_EDITA	"Edit"
+#define WC_EDITW	L"Edit"
+#define WC_LISTBOXA	"ListBox"
+#define WC_LISTBOXW	L"ListBox"
+#define WC_COMBOBOXA	"ComboBox"
+#define WC_COMBOBOXW	L"ComboBox"
+#define WC_SCROLLBARA	"ScrollBar"
+#define WC_SCROLLBARW	L"ScrollBar"
+#define WC_LINKA	"SysLink"
+#define WC_LINKW	L"SysLink"
+
+#ifdef UNICODE
+#define HOTKEY_CLASS HOTKEY_CLASSW
+#define PROGRESS_CLASS PROGRESS_CLASSW
+#define STATUSCLASSNAME STATUSCLASSNAMEW
+#define TOOLBARCLASSNAME TOOLBARCLASSNAMEW
+#define TOOLTIPS_CLASS TOOLTIPS_CLASSW
+#define TRACKBAR_CLASS TRACKBAR_CLASSW
+#define UPDOWN_CLASS UPDOWN_CLASSW
+#define ANIMATE_CLASS ANIMATE_CLASSW
+#define DATETIMEPICK_CLASS DATETIMEPICK_CLASSW
+#define MONTHCAL_CLASS MONTHCAL_CLASSW
+#define REBARCLASSNAME REBARCLASSNAMEW
+#define WC_COMBOBOXEX WC_COMBOBOXEXW
+#define WC_HEADER WC_HEADERW
+#define WC_IPADDRESS WC_IPADDRESSW
+#define WC_LISTVIEW WC_LISTVIEWW
+#define WC_TABCONTROL WC_TABCONTROLW
+#define WC_TREEVIEW WC_TREEVIEWW
+#define WC_PAGESCROLLER WC_PAGESCROLLERW
+#define WC_NATIVEFONTCTL WC_NATIVEFONTCTLW
+#define WC_BUTTON WC_BUTTONW
+#define WC_STATIC WC_STATICW
+#define WC_EDIT WC_EDITW
+#define WC_LISTBOX WC_LISTBOXW
+#define WC_COMBOBOX WC_COMBOBOXW
+#define WC_SCROLLBAR WC_SCROLLBARW
+#define WC_LINK WC_LINKW
+#else
+#define ANIMATE_CLASS ANIMATE_CLASSA
+#define HOTKEY_CLASS HOTKEY_CLASSA
+#define PROGRESS_CLASS PROGRESS_CLASSA
+#define STATUSCLASSNAME STATUSCLASSNAMEA
+#define TOOLBARCLASSNAME TOOLBARCLASSNAMEA
+#define TOOLTIPS_CLASS TOOLTIPS_CLASSA
+#define TRACKBAR_CLASS TRACKBAR_CLASSA
+#define UPDOWN_CLASS UPDOWN_CLASSA
+#define DATETIMEPICK_CLASS DATETIMEPICK_CLASSA
+#define MONTHCAL_CLASS MONTHCAL_CLASSA
+#define REBARCLASSNAME REBARCLASSNAMEA
+#define WC_COMBOBOXEX WC_COMBOBOXEXA
+#define WC_HEADER WC_HEADERA
+#define WC_IPADDRESS WC_IPADDRESSA
+#define WC_LISTVIEW WC_LISTVIEWA
+#define WC_TABCONTROL WC_TABCONTROLA
+#define WC_TREEVIEW WC_TREEVIEWA
+#define WC_PAGESCROLLER WC_PAGESCROLLERA
+#define WC_NATIVEFONTCTL WC_NATIVEFONTCTLA
+#define WC_BUTTON WC_BUTTONA
+#define WC_STATIC WC_STATICA
+#define WC_EDIT WC_EDITA
+#define WC_LISTBOX WC_LISTBOXA
+#define WC_COMBOBOX WC_COMBOBOXA
+#define WC_SCROLLBAR WC_SCROLLBARA
+#define WC_LINK WC_LINKA
+#endif
+
+#if (_WIN32_IE >= 0x0500)
+#if (_WIN32_WINNT >= 0x0501)
+#define COMCTL32_VERSION 6
+#else
+#define COMCTL32_VERSION 5
+#endif
+#endif
+
+#define LVM_FIRST 0x1000
+#define TV_FIRST 0x1100
+#define HDM_FIRST 0x1200
+#define ACM_OPENA	(WM_USER+100)
+#define ACM_PLAY	(WM_USER+101)
+#define ACM_STOP	(WM_USER+102)
+#define ACM_OPENW	(WM_USER+103)
+#define ACN_START	1
+#define ACN_STOP	2
+#define CBEIF_TEXT	0x00000001
+#define CBEIF_IMAGE	0x00000002
+#define CBEIF_SELECTEDIMAGE	0x00000004
+#define CBEIF_OVERLAY	0x00000008
+#define CBEIF_INDENT	0x00000010
+#define CBEIF_LPARAM	0x00000020
+#define CBEIF_DI_SETITEM	0x10000000
+#define CBEN_INSERTITEM	(CBEN_FIRST - 1)
+#define CBEN_DELETEITEM	(CBEN_FIRST - 2)
+#define CBEN_BEGINEDIT	(CBEN_FIRST - 4)
+#define CBEN_ENDEDITA	(CBEN_FIRST - 5)
+#define CBEN_ENDEDITW	(CBEN_FIRST - 6)
+#define CBENF_KILLFOCUS	1
+#define CBENF_RETURN	2
+#define CBENF_ESCAPE	3
+#define CBENF_DROPDOWN	4
+#define CBEMAXSTRLEN 260
+#define DL_BEGINDRAG	1157
+#define DL_CANCELDRAG	1160
+#define DL_DRAGGING	1158
+#define DL_DROPPED	1159
+#define DL_CURSORSET	0
+#define DL_STOPCURSOR	1
+#define DL_COPYCURSOR	2
+#define DL_MOVECURSOR	3
+#define CCS_TOP	1
+#define CCS_NOMOVEY	2
+#define CCS_BOTTOM	3
+#define CCS_NORESIZE	4
+#define CCS_NOPARENTALIGN	8
+#define CCS_ADJUSTABLE	32
+#define CCS_NODIVIDER	64
+#if (_WIN32_IE >= 0x0300)
+#define CCS_VERT 128
+#define CCS_LEFT 129
+#define CCS_NOMOVEX 130
+#define CCS_RIGHT 131
+#endif
+#define ACS_CENTER	0x0001
+#define ACS_TRANSPARENT	0x0002
+#define ACS_AUTOPLAY	0x0004
+#define ACS_TIMER	0x0008
+#define PGS_VERT	0x00000000
+#define PGS_HORZ	0x00000001
+#define PGS_AUTOSCROLL	0x00000002
+#define PGS_DRAGNDROP	0x00000004
+#define CMB_MASKED	2
+#define MINSYSCOMMAND	SC_SIZE
+#define SBT_OWNERDRAW	0x1000
+#define SBT_NOBORDERS	256
+#define SBT_POPOUT	512
+#define SBT_RTLREADING	1024
+#define SB_SETTEXTA	(WM_USER+1)
+#define SB_SETTEXTW	(WM_USER+11)
+#define SB_GETTEXTA	(WM_USER+2)
+#define SB_GETTEXTW	(WM_USER+13)
+#define SB_GETTEXTLENGTHA	(WM_USER+3)
+#define SB_GETTEXTLENGTHW	(WM_USER+12)
+#define SB_SETPARTS	(WM_USER+4)
+#define SB_GETPARTS	(WM_USER+6)
+#define SB_GETBORDERS	(WM_USER+7)
+#define SB_SETMINHEIGHT	(WM_USER+8)
+#define SB_SIMPLE	(WM_USER+9)
+#define SB_GETRECT	(WM_USER+10)
+#define MSGF_COMMCTRL_BEGINDRAG	0x4200
+#define MSGF_COMMCTRL_SIZEHEADER	0x4201
+#define MSGF_COMMCTRL_DRAGSELECT	0x4202
+#define MSGF_COMMCTRL_TOOLBARCUST	0x4203
+#define ILC_COLOR 0
+#define ILC_COLOR4 4
+#define ILC_COLOR8 8
+#define ILC_COLOR16 16
+#define ILC_COLOR24 24
+#define ILC_COLOR32 32
+#define ILC_COLORDDB 254
+#define ILC_MASK 1
+#define ILC_PALETTE 2048
+#define ILCF_MOVE 0
+#define ILCF_SWAP 1
+#define ILS_NORMAL 0
+#define ILS_GLOW 1
+#define ILS_SHADOW 2
+#define ILS_SATURATE 4
+#define ILS_ALPHA 8
+#define ILD_BLEND25 2
+#define ILD_BLEND50 4
+#define ILD_SELECTED 4
+#define ILD_BLEND 4
+#define ILD_FOCUS 2
+#define ILD_MASK 16
+#define ILD_NORMAL 0
+#define ILD_TRANSPARENT 1
+#define ILD_IMAGE 0x0020
+#define ILD_ROP 0x0040
+#define ILD_OVERLAYMASK 0x0F00
+#define ILD_PRESERVEALPHA 0x1000
+#define ILD_SCALE 0x2000
+#define ILD_DPISCALE 0x4000
+#define HDS_HORZ	0
+#define HDS_BUTTONS	2
+#define HDS_HIDDEN	8
+#if (_WIN32_IE > 0x0300)
+#define HDS_HOTTRACK	4
+#define HDS_DRAGDROP	0x0040
+#define HDS_FULLDRAG	0x0080
+#endif /* _WIN32_IE > 0x0300 */
+#if (_WIN32_IE >= 0x0500)
+#define HDS_FILTERBAR	0x0100
+#endif /* _WIN32_IE >= 0x0500 */
+#define NM_FIRST	0
+#define NM_LAST	((UINT)-99)
+#define LVN_FIRST	((UINT)-100)
+#define LVN_LAST	((UINT)-199)
+#define HDN_FIRST	((UINT)-300)
+#define HDN_LAST	((UINT)-399)
+#define TVN_FIRST	((UINT)-400)
+#define TVN_LAST	((UINT)-499)
+#define TTN_FIRST	((UINT)-520)
+#define TTN_LAST	((UINT)-549)
+#define TCN_FIRST	((UINT)-550)
+#define TCN_LAST	((UINT)-580)
+#ifndef CDN_FIRST
+#define CDN_FIRST	((UINT)-601) /* also in commdlg.h */
+#define CDN_LAST	((UINT)-699)
+#endif
+#define TBN_FIRST	((UINT)-700)
+#define TBN_LAST	((UINT)-720)
+#define UDN_FIRST	((UINT)-721)
+#define UDN_LAST	((UINT)-740)
+#if (_WIN32_IE >= 0x0300)
+#define RBN_FIRST	((UINT)-831)
+#define RBN_LAST	((UINT)-859)
+#define MCN_FIRST	((UINT)-750)
+#define MCN_LAST	((UINT)-759)
+#define DTN_FIRST	((UINT)-760)
+#define DTN_LAST	((UINT)-799)
+#define CBEN_FIRST	((UINT)-800)
+#define CBEN_LAST	((UINT)-830)
+#endif /* _WIN32_IE */
+#if (_WIN32_IE >= 0x0400)
+#define IPN_FIRST	((UINT)-860)
+#define IPN_LAST	((UINT)-879)
+#define IPN_FIELDCHANGED	(IPN_FIRST-0)
+#define SBN_FIRST	((UINT)-880U)
+#define SBN_LAST	((UINT)-899U)
+#define PGN_FIRST	((UINT)-900U)
+#define PGN_LAST	((UINT)-950U)
+#define PGN_SCROLL	(PGN_FIRST-1)
+#define PGN_CALCSIZE	(PGN_FIRST-2)
+#endif /* _WIN32_IE >= 0x0400 */
+#define HDI_WIDTH	1
+#define HDI_HEIGHT	1
+#define HDI_TEXT	2
+#define HDI_FORMAT	4
+#define HDI_LPARAM	8
+#define HDI_BITMAP	16
+#if (_WIN32_IE >= 0x0300)
+#define HDI_IMAGE	32
+#define HDI_DI_SETITEM	64
+#define HDI_ORDER	128
+#endif
+#define CBES_EX_NOEDITIMAGE	0x00000001
+#define CBES_EX_NOEDITIMAGEINDENT	0x00000002
+#define CBES_EX_PATHWORDBREAKPROC	0x00000004
+#if (_WIN32_IE >= 0x0400)
+#define CBES_EX_NOSIZELIMIT	0x00000008
+#define CBES_EX_CASESENSITIVE	0x00000010
+#define CBEN_GETDISPINFOA	(CBEN_FIRST - 0)
+#define CBEN_GETDISPINFOW	(CBEN_FIRST - 7)
+#define CBEN_DRAGBEGINA	(CBEN_FIRST - 8)
+#define CBEN_DRAGBEGINW	(CBEN_FIRST - 9)
+#endif /* _WIN32_IE >= 0x0400 */
+#if (_WIN32_IE >= 0x0500)
+#define HDI_FILTER	256
+#endif
+#define HDF_LEFT	0
+#define HDF_RIGHT	1
+#define HDF_CENTER	2
+#define HDF_JUSTIFYMASK	3
+#define HDF_RTLREADING	4
+#define HDF_OWNERDRAW	0x8000
+#define HDF_STRING	0x4000
+#define HDF_BITMAP	0x2000
+#if (_WIN32_IE >= 0x0300)
+#define HDF_BITMAP_ON_RIGHT	0x1000
+#define HDF_IMAGE	0x0800
+#endif
+#define HDM_GETITEMCOUNT	HDM_FIRST
+#define HDM_INSERTITEMA	(HDM_FIRST+1)
+#define HDM_INSERTITEMW	(HDM_FIRST+10)
+#define HDM_DELETEITEM	(HDM_FIRST+2)
+#define HDM_GETITEMA	(HDM_FIRST+3)
+#define HDM_GETITEMW	(HDM_FIRST+11)
+#define HDM_SETITEMA	(HDM_FIRST+4)
+#define HDM_SETITEMW	(HDM_FIRST+12)
+#define HDM_LAYOUT	(HDM_FIRST+5)
+#if (_WIN32_IE >= 0x0300)
+#define HDM_GETITEMRECT (HDM_FIRST+7)
+#define HDM_SETIMAGELIST	(HDM_FIRST+8)
+#define HDM_GETIMAGELIST	(HDM_FIRST+9)
+#define HDM_ORDERTOINDEX	(HDM_FIRST+15)
+#define HDM_CREATEDRAGIMAGE	(HDM_FIRST+16)
+#define HDM_GETORDERARRAY	(HDM_FIRST+17)
+#define HDM_SETORDERARRAY	(HDM_FIRST+18)
+#define HDM_SETHOTDIVIDER	(HDM_FIRST+19)
+#endif
+#if (_WIN32_IE >= 0x0400)
+#define HDM_GETUNICODEFORMAT	CCM_GETUNICODEFORMAT
+#define HDM_SETUNICODEFORMAT	CCM_SETUNICODEFORMAT
+#endif
+#define HHT_NOWHERE	1
+#define HHT_ONHEADER	2
+#define HHT_ONDIVIDER	4
+#define HHT_ONDIVOPEN	8
+#define HHT_ABOVE	256
+#define HHT_BELOW	512
+#define HHT_TORIGHT	1024
+#define HHT_TOLEFT	2048
+#define HDM_HITTEST	(HDM_FIRST+6)
+#define HDN_ITEMCHANGINGA	(HDN_FIRST-0)
+#define HDN_ITEMCHANGINGW	(HDN_FIRST-20)
+#define HDN_ITEMCHANGEDA	(HDN_FIRST-1)
+#define HDN_ITEMCHANGEDW	(HDN_FIRST-21)
+#define HDN_ITEMCLICKA	(HDN_FIRST-2)
+#define HDN_ITEMCLICKW	(HDN_FIRST-22)
+#define HDN_ITEMDBLCLICKA	(HDN_FIRST-3)
+#define HDN_ITEMDBLCLICKW	(HDN_FIRST-23)
+#define HDN_DIVIDERDBLCLICKA	(HDN_FIRST-5)
+#define HDN_DIVIDERDBLCLICKW	(HDN_FIRST-25)
+#define HDN_BEGINTRACKA	(HDN_FIRST-6)
+#define HDN_BEGINTRACKW	(HDN_FIRST-26)
+#define HDN_ENDTRACKA	(HDN_FIRST-7)
+#define HDN_ENDTRACKW	(HDN_FIRST-27)
+#define HDN_TRACKA	(HDN_FIRST-8)
+#define HDN_TRACKW	(HDN_FIRST-28)
+#if _WIN32_IE >= 0x0300
+#define HDN_ENDDRAG	(HDN_FIRST-11)
+#define HDN_BEGINDRAG	(HDN_FIRST-10)
+#define HDN_GETDISPINFOA (HDN_FIRST-9)
+#define HDN_GETDISPINFOW (HDN_FIRST-29)
+#endif
+#if (_WIN32_IE >= 0x0400)
+#define HICF_OTHER 0x00
+#define HICF_MOUSE 0x01
+#define HICF_ARROWKEYS 0x02
+#define HICF_ACCELERATOR 0x04
+#define HICF_DUPACCEL 0x08
+#define HICF_ENTERING 0x10
+#define HICF_LEAVING 0x20
+#define HICF_RESELECT 0x40
+#define HICF_LMOUSE 0x80
+#define HICF_TOGGLEDROPDOWN 0x100
+#endif /* _WIN32_IE >= 0x0400 */
+#define IPM_CLEARADDRESS	(WM_USER+100)
+#define IPM_SETADDRESS	(WM_USER+101)
+#define IPM_GETADDRESS	(WM_USER+102)
+#define IPM_SETRANGE	(WM_USER+103)
+#define IPM_SETFOCUS	(WM_USER+104)
+#define IPM_ISBLANK	(WM_USER+105)
+#if (_WIN32_IE >= 0x0500)
+#define I_INDENTCALLBACK (-1)
+#define I_IMAGENONE (-2)
+#endif
+#define CMB_MASKED 2
+#define TBSTATE_CHECKED	1
+#define TBSTATE_PRESSED	2
+#define TBSTATE_ENABLED	4
+#define TBSTATE_HIDDEN	8
+#define TBSTATE_INDETERMINATE	16
+#define TBSTATE_WRAP	32
+#if (_WIN32_IE >= 0x0300)
+#define TBSTATE_ELLIPSES 0x40
+#endif
+#if (_WIN32_IE >= 0x0400)
+#define TBSTATE_MARKED	0x0080
+#endif
+#define TBSTYLE_BUTTON	0
+#define TBSTYLE_SEP	1
+#define TBSTYLE_CHECK	2
+#define TBSTYLE_GROUP	4
+#define TBSTYLE_CHECKGROUP	(TBSTYLE_GROUP|TBSTYLE_CHECK)
+#if (_WIN32_IE >= 0x0300)
+#define TBSTYLE_DROPDOWN	8
+#endif
+#if (_WIN32_IE >= 0x0400)
+#define TBSTYLE_AUTOSIZE	16
+#define TBSTYLE_NOPREFIX	32
+#endif
+#define TBSTYLE_TOOLTIPS	256
+#define TBSTYLE_WRAPABLE	512
+#define TBSTYLE_ALTDRAG	1024
+#if (_WIN32_IE >= 0x0300)
+#define TBSTYLE_FLAT 2048
+#define TBSTYLE_LIST 4096
+#define TBSTYLE_CUSTOMERASE 8192
+#endif
+#if (_WIN32_IE >= 0x0400)
+#define TBSTYLE_REGISTERDROP	0x4000
+#define TBSTYLE_TRANSPARENT	0x8000
+#define TBSTYLE_EX_DRAWDDARROWS	0x00000001
+#endif /* _WIN32_IE >= 0x0400 */
+#if (_WIN32_IE >= 0x0501)
+#define TBSTYLE_EX_MIXEDBUTTONS 8
+#define TBSTYLE_EX_HIDECLIPPEDBUTTONS 16
+#endif /* _WIN32_IE >= 0x0501 */
+#if (_WIN32_WINNT >= 0x0501)
+#define TBSTYLE_EX_DOUBLEBUFFER	0x80
+#endif /* _WIN32_WINNT >= 0x0501 */
+#if (_WIN32_IE >= 0x0500)
+#define BTNS_BUTTON	TBSTYLE_BUTTON
+#define BTNS_SEP	TBSTYLE_SEP
+#define BTNS_CHECK	TBSTYLE_CHECK
+#define BTNS_GROUP	TBSTYLE_GROUP
+#define BTNS_CHECKGROUP	TBSTYLE_CHECKGROUP
+#define BTNS_DROPDOWN	TBSTYLE_DROPDOWN
+#define BTNS_AUTOSIZE	TBSTYLE_AUTOSIZE
+#define BTNS_NOPREFIX	TBSTYLE_NOPREFIX
+#define BTNS_WHOLEDROPDOWN	0x0080
+#endif  /* _WIN32_IE >= 0x0500 */
+#if _WIN32_IE >= 0x0501
+#define BTNS_SHOWTEXT	0x0040
+#endif
+#if (_WIN32_IE >= 0x0400)
+#define TBCDRF_NOEDGES	0x10000
+#define TBCDRF_HILITEHOTTRACK	0x20000
+#define TBCDRF_NOOFFSET	0x40000
+#define TBCDRF_NOMARK	0x80000
+#define TBCDRF_NOETCHEDEFFECT	0x100000
+#endif /* _WIN32_IE >= 0x0400 */
+#define HINST_COMMCTRL	((HINSTANCE)-1)
+#define IDB_STD_SMALL_COLOR	0
+#define IDB_STD_LARGE_COLOR	1
+#define IDB_VIEW_SMALL_COLOR	4
+#define IDB_VIEW_LARGE_COLOR	5
+#if (_WIN32_IE >= 0x0300)
+#define IDB_HIST_SMALL_COLOR	8
+#define IDB_HIST_LARGE_COLOR	9
+#endif
+#define STD_CUT	0
+#define STD_COPY	1
+#define STD_PASTE	2
+#define STD_UNDO	3
+#define STD_REDOW	4
+#define STD_DELETE	5
+#define STD_FILENEW	6
+#define STD_FILEOPEN	7
+#define STD_FILESAVE	8
+#define STD_PRINTPRE	9
+#define STD_PROPERTIES	10
+#define STD_HELP	11
+#define STD_FIND	12
+#define STD_REPLACE	13
+#define STD_PRINT	14
+#define VIEW_LARGEICONS	0
+#define VIEW_SMALLICONS	1
+#define VIEW_LIST	2
+#define VIEW_DETAILS	3
+#define VIEW_SORTNAME	4
+#define VIEW_SORTSIZE	5
+#define VIEW_SORTDATE	6
+#define VIEW_SORTTYPE	7
+#define VIEW_PARENTFOLDER	8
+#define VIEW_NETCONNECT	9
+#define VIEW_NETDISCONNECT	10
+#define VIEW_NEWFOLDER	11
+#define TB_ENABLEBUTTON	(WM_USER+1)
+#define TB_CHECKBUTTON	(WM_USER+2)
+#define TB_PRESSBUTTON	(WM_USER+3)
+#define TB_HIDEBUTTON	(WM_USER+4)
+#define TB_INDETERMINATE	(WM_USER+5)
+#if (_WIN32_IE >= 0x0400)
+#define TB_MARKBUTTON           (WM_USER+6)
+#endif
+#define TB_ISBUTTONENABLED	(WM_USER+9)
+#define TB_ISBUTTONCHECKED	(WM_USER+10)
+#define TB_ISBUTTONPRESSED	(WM_USER+11)
+#define TB_ISBUTTONHIDDEN	(WM_USER+12)
+#define TB_ISBUTTONINDETERMINATE	(WM_USER+13)
+#if (_WIN32_IE >= 0x0400)
+#define TB_ISBUTTONHIGHLIGHTED	(WM_USER+14)
+#endif
+#define TB_SETSTATE	(WM_USER+17)
+#define TB_GETSTATE	(WM_USER+18)
+#define TB_ADDBITMAP	(WM_USER+19)
+#if (_WIN32_IE >= 0x0400)
+#define TB_ADDBUTTONSA	(WM_USER+20)
+#define TB_INSERTBUTTONA	(WM_USER+21)
+#else
+#define TB_ADDBUTTONS	(WM_USER+20)
+#define TB_INSERTBUTTON	(WM_USER+21)
+#endif
+#define TB_DELETEBUTTON	(WM_USER+22)
+#define TB_GETBUTTON	(WM_USER+23)
+#define TB_BUTTONCOUNT	(WM_USER+24)
+#define TB_COMMANDTOINDEX	(WM_USER+25)
+#define TB_SAVERESTOREA	(WM_USER+26)
+#define TB_SAVERESTOREW	(WM_USER+76)
+#define TB_CUSTOMIZE	(WM_USER+27)
+#define TB_ADDSTRINGA	(WM_USER+28)
+#define TB_ADDSTRINGW	(WM_USER+77)
+#define TB_GETITEMRECT	(WM_USER+29)
+#define TB_BUTTONSTRUCTSIZE	(WM_USER+30)
+#define TB_SETBUTTONSIZE	(WM_USER+31)
+#define TB_SETBITMAPSIZE	(WM_USER+32)
+#define TB_AUTOSIZE	(WM_USER+33)
+#define TB_GETTOOLTIPS	(WM_USER+35)
+#define TB_SETTOOLTIPS	(WM_USER+36)
+#define TB_SETPARENT	(WM_USER+37)
+#define TB_SETROWS	(WM_USER+39)
+#define TB_GETROWS	(WM_USER+40)
+#define TB_GETBITMAPFLAGS	(WM_USER+41)
+#define TB_SETCMDID	(WM_USER+42)
+#define TB_CHANGEBITMAP	(WM_USER+43)
+#define TB_GETBITMAP	(WM_USER+44)
+#define TB_GETBUTTONTEXTA	(WM_USER+45)
+#define TB_GETBUTTONTEXTW	(WM_USER+75)
+#define TB_REPLACEBITMAP	(WM_USER+46)
+#define TB_GETBUTTONSIZE	(WM_USER+58)
+#define TB_SETBUTTONWIDTH	(WM_USER+59)
+#if (_WIN32_IE >= 0x0300)
+#define TB_SETINDENT	(WM_USER+47)
+#define TB_SETIMAGELIST	(WM_USER+48)
+#define TB_GETIMAGELIST	(WM_USER+49)
+#define TB_LOADIMAGES	(WM_USER+50)
+#define TB_GETRECT	(WM_USER+51)
+#define TB_SETHOTIMAGELIST	(WM_USER+52)
+#define TB_GETHOTIMAGELIST	(WM_USER+53)
+#define TB_SETDISABLEDIMAGELIST (WM_USER+54)
+#define TB_GETDISABLEDIMAGELIST	(WM_USER+55)
+#define TB_SETSTYLE	(WM_USER+56)
+#define TB_GETSTYLE	(WM_USER+57)
+#define TB_GETBUTTONSIZE	(WM_USER+58)
+#define TB_SETBUTTONWIDTH	(WM_USER+59)
+#define TB_SETMAXTEXTROWS	(WM_USER+60)
+#define TB_GETTEXTROWS	(WM_USER+61)
+#endif
+#if _WIN32_IE >= 0x400
+#define TB_GETOBJECT	(WM_USER+62)
+#define TB_GETBUTTONINFOW	(WM_USER+63)
+#define TB_SETBUTTONINFOW	(WM_USER+64)
+#define TB_GETBUTTONINFOA	(WM_USER+65)
+#define TB_SETBUTTONINFOA	(WM_USER+66)
+#define TB_INSERTBUTTONW	(WM_USER+67)
+#define TB_ADDBUTTONSW	(WM_USER+68)
+#define TB_HITTEST	(WM_USER+69)
+#define TB_SETEXTENDEDSTYLE	(WM_USER+84)
+#define TB_GETEXTENDEDSTYLE	(WM_USER+85)
+#define TB_SETDRAWTEXTFLAGS	(WM_USER+70)
+#define TB_GETHOTITEM	(WM_USER+71)
+#define TB_SETHOTITEM	(WM_USER+72)
+#define TB_SETANCHORHIGHLIGHT	(WM_USER+73)
+#define TB_GETANCHORHIGHLIGHT	(WM_USER+74)
+#define TB_MAPACCELERATORA	(WM_USER+78)
+#define TB_GETINSERTMARK	(WM_USER+79)
+#define TB_SETINSERTMARK	(WM_USER+80)
+#define TB_INSERTMARKHITTEST	(WM_USER+81)
+#define TB_MOVEBUTTON		(WM_USER+82)
+#define TB_GETMAXSIZE		(WM_USER+83)
+#define TB_SETEXTENDEDSTYLE	(WM_USER+84)
+#define TB_GETEXTENDEDSTYLE	(WM_USER+85)
+#define TB_GETPADDING		(WM_USER+86)
+#define TB_SETPADDING		(WM_USER+87)
+#define TB_SETINSERTMARKCOLOR	(WM_USER+88)
+#define TB_GETINSERTMARKCOLOR	(WM_USER+89)
+#define TB_MAPACCELERATORW	(WM_USER+90)
+#define TB_GETSTRINGW		(WM_USER+91)
+#define TB_GETSTRINGA		(WM_USER+92)
+#define TB_SETCOLORSCHEME	CCM_SETCOLORSCHEME
+#define TB_GETCOLORSCHEME	CCM_GETCOLORSCHEME
+#define TB_SETUNICODEFORMAT	CCM_SETUNICODEFORMAT
+#define TB_GETUNICODEFORMAT	CCM_GETUNICODEFORMAT
+#endif
+#define TBBF_LARGE 1
+#define TBN_GETBUTTONINFOA	(TBN_FIRST-0)
+#define TBN_BEGINDRAG	(TBN_FIRST-1)
+#define TBN_ENDDRAG	(TBN_FIRST-2)
+#define TBN_BEGINADJUST	(TBN_FIRST-3)
+#define TBN_ENDADJUST	(TBN_FIRST-4)
+#define TBN_RESET	(TBN_FIRST-5)
+#define TBN_QUERYINSERT	(TBN_FIRST-6)
+#define TBN_QUERYDELETE	(TBN_FIRST-7)
+#define TBN_TOOLBARCHANGE	(TBN_FIRST-8)
+#define TBN_CUSTHELP	(TBN_FIRST-9)
+#if (_WIN32_IE >= 0x0300)
+#define TBN_DROPDOWN	(TBN_FIRST-10)
+#endif
+#if (_WIN32_IE >= 0x0400)
+#define TBN_HOTITEMCHANGE	(TBN_FIRST-13)
+#define TBN_DRAGOUT	(TBN_FIRST-14)
+#define TBN_DELETINGBUTTON	(TBN_FIRST-15)
+#define TBN_GETDISPINFOA	(TBN_FIRST-16)
+#define TBN_GETDISPINFOW	(TBN_FIRST-17)
+#define TBN_GETINFOTIPA	(TBN_FIRST-18)
+#define TBN_GETINFOTIPW	(TBN_FIRST-19)
+#define TBN_GETBUTTONINFOW	(TBN_FIRST-20)
+#endif
+#if (_WIN32_IE >= 0x0500)
+#define TBN_RESTORE	(TBN_FIRST-21)
+#define TBN_SAVE	(TBN_FIRST-22)
+#define TBN_INITCUSTOMIZE	(TBN_FIRST-23)
+#define TBNRF_HIDEHELP	1
+#define TBNRF_ENDCUSTOMIZE	2
+#define TBNF_IMAGE	1
+#define TBNF_TEXT	2
+#define TBNF_DI_SETITEM	0x10000000
+#endif /* _WIN32_IE >= 0x0500 */
+#define TTS_ALWAYSTIP	1
+#define TTS_NOPREFIX	2
+#if( _WIN32_IE >= 0x0500 )
+#define TTS_NOANIMATE	0x10
+#define TTS_NOFADE	0x20
+#define TTS_BALLOON	0x40
+#define TTS_CLOSE	0x80
+#endif /* _WIN32_IE >= 0x0500 */
+#define TTF_IDISHWND	1
+#define TTF_CENTERTIP	2
+#define TTF_RTLREADING	4
+#define TTF_SUBCLASS	16
+#if (_WIN32_IE >= 0x0300)
+#define TTF_TRACK 0x0020
+#define TTF_ABSOLUTE 0x0080
+#define TTF_TRANSPARENT 0x0100
+#if (_WIN32_IE >= 0x0501)
+#define TTF_PARSELINKS 0x1000
+#endif
+#define TTF_DI_SETITEM 0x8000
+#define TBCD_TICS 1
+#define TBCD_THUMB 2
+#define TBCD_CHANNEL 3
+#endif /* _WIN32_IE >= 0x0300 */
+#if (_WIN32_IE >= 0x0400)
+#define TBDDRET_DEFAULT 0
+#define TBDDRET_NODEFAULT 1
+#define TBDDRET_TREATPRESSED 2
+#define TBIMHT_AFTER 1
+#define TBIMHT_BACKGROUND 2
+#endif
+#define TTDT_AUTOMATIC	0
+#define TTDT_RESHOW	1
+#define TTDT_AUTOPOP	2
+#define TTDT_INITIAL	3
+#define TTM_ACTIVATE	(WM_USER+1)
+#define TTM_SETDELAYTIME	(WM_USER+3)
+#define TTM_ADDTOOLA	(WM_USER+4)
+#define TTM_ADDTOOLW	(WM_USER+50)
+#define TTM_DELTOOLA	(WM_USER+5)
+#define TTM_DELTOOLW	(WM_USER+51)
+#define TTM_NEWTOOLRECTA	(WM_USER+6)
+#define TTM_NEWTOOLRECTW	(WM_USER+52)
+#define TTM_RELAYEVENT	(WM_USER+7)
+#define TTM_GETTOOLINFOA	(WM_USER+8)
+#define TTM_GETTOOLINFOW	(WM_USER+53)
+#define TTM_SETTOOLINFOA	(WM_USER+9)
+#define TTM_SETTOOLINFOW	(WM_USER+54)
+#define TTM_HITTESTA	(WM_USER+10)
+#define TTM_HITTESTW	(WM_USER+55)
+#define TTM_GETTEXTA	(WM_USER+11)
+#define TTM_GETTEXTW	(WM_USER+56)
+#define TTM_UPDATETIPTEXTA	(WM_USER+12)
+#define TTM_UPDATETIPTEXTW	(WM_USER+57)
+#define TTM_GETTOOLCOUNT	(WM_USER+13)
+#define TTM_ENUMTOOLSA	(WM_USER+14)
+#define TTM_ENUMTOOLSW	(WM_USER+58)
+#define TTM_GETCURRENTTOOLA	(WM_USER+15)
+#define TTM_GETCURRENTTOOLW	(WM_USER+59)
+#define TTM_WINDOWFROMPOINT	(WM_USER+16)
+#if (_WIN32_IE >= 0x0300)
+#define TTM_TRACKACTIVATE	  (WM_USER+17)
+#define TTM_TRACKPOSITION	  (WM_USER+18)
+#define TTM_SETTIPBKCOLOR	  (WM_USER+19)
+#define TTM_SETTIPTEXTCOLOR	(WM_USER+20)
+#define TTM_GETDELAYTIME	   (WM_USER+21)
+#define TTM_GETTIPBKCOLOR	  (WM_USER+22)
+#define TTM_GETTIPTEXTCOLOR	(WM_USER+23)
+#define TTM_SETMAXTIPWIDTH	 (WM_USER+24)
+#define TTM_GETMAXTIPWIDTH	 (WM_USER+25)
+#define TTM_SETMARGIN		 (WM_USER+26)
+#define TTM_GETMARGIN		 (WM_USER+27)
+#define TTM_POP			  (WM_USER+28)
+#endif /* _WIN32_IE */
+#if (_WIN32_IE >= 0x0400)			/* IE4.0 ??? */
+#define TTM_UPDATE		    (WM_USER+29)
+#define TTM_GETBUBBLESIZE	(WM_USER+30)
+#define TTM_ADJUSTRECT	(WM_USER+31)
+#define TTM_SETTITLEA	(WM_USER+32)
+#define TTM_SETTITLEW	(WM_USER+33)
+#endif
+#define TTN_GETDISPINFOA    (TTN_FIRST - 0)
+#define TTN_GETDISPINFOW    (TTN_FIRST - 10)
+#define TTN_NEEDTEXTA	TTN_GETDISPINFOA
+#define TTN_NEEDTEXTW	TTN_GETDISPINFOW
+#define TTN_SHOW	(TTN_FIRST-1)
+#define TTN_POP	(TTN_FIRST-2)
+#define UD_MAXVAL	0x7fff
+#define UD_MINVAL	(-UD_MAXVAL)
+#define UDN_DELTAPOS (UDN_FIRST-1)
+#define UDS_WRAP	1
+#define UDS_SETBUDDYINT	2
+#define UDS_ALIGNRIGHT	4
+#define UDS_ALIGNLEFT	8
+#define UDS_AUTOBUDDY	16
+#define UDS_ARROWKEYS	32
+#define UDS_HORZ	64
+#define UDS_NOTHOUSANDS	128
+#if ( _WIN32_IE >= 0x0300 )
+#define UDS_HOTTRACK	0x0100
+#endif /* _WIN32_IE >= 0x0300 */
+#define UDM_SETRANGE	(WM_USER+101)
+#define UDM_GETRANGE	(WM_USER+102)
+#define UDM_SETPOS	(WM_USER+103)
+#define UDM_GETPOS	(WM_USER+104)
+#define UDM_SETBUDDY	(WM_USER+105)
+#define UDM_GETBUDDY	(WM_USER+106)
+#define UDM_SETACCEL	(WM_USER+107)
+#define UDM_GETACCEL	(WM_USER+108)
+#define UDM_SETBASE	(WM_USER+109)
+#define UDM_GETBASE	(WM_USER+110)
+#if (_WIN32_IE >= 0x0400)
+#define UDM_SETRANGE32	(WM_USER+111)
+#define UDM_GETRANGE32	(WM_USER+112)
+#define UDM_SETPOS32	(WM_USER+113)
+#define UDM_GETPOS32	(WM_USER+114)
+#endif
+#if (_WIN32_IE >= 0x0500)
+#define UDM_SETUNICODEFORMAT	CCM_SETUNICODEFORMAT
+#define UDM_GETUNICODEFORMAT	CCM_GETUNICODEFORMAT
+#endif
+#define SB_SETTEXTA	(WM_USER+1)
+#define SB_SETTEXTW	(WM_USER+11)
+#define SB_GETTEXTA	(WM_USER+2)
+#define SB_GETTEXTW	(WM_USER+13)
+#define SB_GETTEXTLENGTHA	(WM_USER+3)
+#define SB_GETTEXTLENGTHW	(WM_USER+12)
+#define SB_SETPARTS	(WM_USER+4)
+#define SB_GETPARTS	(WM_USER+6)
+#define SB_GETBORDERS	(WM_USER+7)
+#define SB_SETMINHEIGHT	(WM_USER+8)
+#define SB_SIMPLE	(WM_USER+9)
+#define SB_GETRECT	(WM_USER+10)
+#define SBT_OWNERDRAW	0x1000
+#define SBT_NOBORDERS	256
+#define SBT_POPOUT	512
+#define SBT_RTLREADING	1024
+#if( _WIN32_IE >= 0x0400 )
+#define SBT_TOOLTIPS	0x0800
+#define SBN_SIMPLEMODECHANGE	(SBN_FIRST)
+#endif /* _WIN32_IE >= 0x0400 */
+#define TBS_AUTOTICKS	1
+#define TBS_VERT	2
+#define TBS_HORZ	0
+#define TBS_TOP	4
+#define TBS_BOTTOM	0
+#define TBS_LEFT	4
+#define TBS_RIGHT	0
+#define TBS_BOTH	8
+#define TBS_NOTICKS	16
+#define TBS_ENABLESELRANGE	32
+#define TBS_FIXEDLENGTH	64
+#define TBS_NOTHUMB	128
+#if (_WIN32_IE >= 0x0300)
+#define TBS_TOOLTIPS 0x0100
+#define TBTS_TOP 0
+#define TBTS_LEFT 1
+#define TBTS_BOTTOM 2
+#define TBTS_RIGHT 3
+#endif
+#if (_WIN32_IE >= 0x0500)
+#define TBS_REVERSED 0x0200
+#endif
+#if (_WIN32_IE >= 0x0501)
+#define TBS_DOWNISLEFT 0x0400
+#endif
+#if _WIN32_IE >= 0x400
+#define TBIF_BYINDEX 0x80000000
+#define TBIF_COMMAND 32
+#define TBIF_IMAGE 1
+#define TBIF_LPARAM 16
+#define TBIF_SIZE 64
+#define TBIF_STATE 4
+#define TBIF_STYLE 8
+#define TBIF_TEXT 2
+#endif
+#define TBM_GETPOS	(WM_USER)
+#define TBM_GETRANGEMIN	(WM_USER+1)
+#define TBM_GETRANGEMAX	(WM_USER+2)
+#define TBM_GETTIC	(WM_USER+3)
+#define TBM_SETTIC	(WM_USER+4)
+#define TBM_SETPOS	(WM_USER+5)
+#define TBM_SETRANGE	(WM_USER+6)
+#define TBM_SETRANGEMIN	(WM_USER+7)
+#define TBM_SETRANGEMAX	(WM_USER+8)
+#define TBM_CLEARTICS	(WM_USER+9)
+#define TBM_SETSEL	(WM_USER+10)
+#define TBM_SETSELSTART	(WM_USER+11)
+#define TBM_SETSELEND	(WM_USER+12)
+#define TBM_GETPTICS	(WM_USER+14)
+#define TBM_GETTICPOS	(WM_USER+15)
+#define TBM_GETNUMTICS	(WM_USER+16)
+#define TBM_GETSELSTART	(WM_USER+17)
+#define TBM_GETSELEND	(WM_USER+18)
+#define TBM_CLEARSEL	(WM_USER+19)
+#define TBM_SETTICFREQ	(WM_USER+20)
+#define TBM_SETPAGESIZE	(WM_USER+21)
+#define TBM_GETPAGESIZE	(WM_USER+22)
+#define TBM_SETLINESIZE	(WM_USER+23)
+#define TBM_GETLINESIZE	(WM_USER+24)
+#define TBM_GETTHUMBRECT	(WM_USER+25)
+#define TBM_GETCHANNELRECT	(WM_USER+26)
+#define TBM_SETTHUMBLENGTH	(WM_USER+27)
+#define TBM_GETTHUMBLENGTH	(WM_USER+28)
+#define TBM_SETTOOLTIPS	(WM_USER+29)
+#define TBM_GETTOOLTIPS	(WM_USER+30)
+#define TBM_SETTIPSIDE	(WM_USER+31)
+#define TBM_SETBUDDY	(WM_USER+32)
+#define TBM_GETBUDDY	(WM_USER+33)
+#define TBM_GETUNICODEFORMAT	CCM_GETUNICODEFORMAT
+#define TBM_SETUNICODEFORMAT	CCM_SETUNICODEFORMAT
+#define TB_LINEUP	0
+#define TB_LINEDOWN	1
+#define TB_PAGEUP	2
+#define TB_PAGEDOWN	3
+#define TB_THUMBPOSITION	4
+#define TB_THUMBTRACK	5
+#define TB_TOP	6
+#define TB_BOTTOM	7
+#define TB_ENDTRACK	8
+#define HOTKEYF_SHIFT	1
+#define HOTKEYF_CONTROL	2
+#define HOTKEYF_ALT	4
+#define HOTKEYF_EXT	8
+#define HKCOMB_NONE	1
+#define HKCOMB_S	2
+#define HKCOMB_C	4
+#define HKCOMB_A	8
+#define HKCOMB_SC	16
+#define HKCOMB_SA	32
+#define HKCOMB_CA	64
+#define HKCOMB_SCA	128
+#define HKM_SETHOTKEY	(WM_USER+1)
+#define HKM_GETHOTKEY	(WM_USER+2)
+#define HKM_SETRULES	(WM_USER+3)
+#define PBM_SETRANGE	(WM_USER+1)
+#define PBM_SETPOS	(WM_USER+2)
+#define PBM_DELTAPOS	(WM_USER+3)
+#define PBM_SETSTEP	(WM_USER+4)
+#define PBM_STEPIT	(WM_USER+5)
+#define PBM_SETRANGE32	1030
+#define PBM_GETRANGE	1031
+#define PBM_GETPOS	1032
+#define PBM_SETBARCOLOR	1033
+#define PBM_SETBKCOLOR	CCM_SETBKCOLOR
+#define PBS_SMOOTH	1
+#define PBS_VERTICAL	4
+#define LVS_ICON	0
+#define LVS_REPORT	1
+#define LVS_SMALLICON	2
+#define LVS_LIST	3
+#define LVS_TYPEMASK	3
+#define LVS_SINGLESEL	4
+#define LVS_SHOWSELALWAYS	8
+#define LVS_SORTASCENDING	16
+#define LVS_SORTDESCENDING	32
+#define LVS_SHAREIMAGELISTS	64
+#define LVS_NOLABELWRAP	128
+#define LVS_AUTOARRANGE	256
+#define LVS_EDITLABELS	512
+#define LVS_NOSCROLL	0x2000
+#define LVS_TYPESTYLEMASK	0xfc00
+#define LVS_ALIGNTOP	0
+#define LVS_ALIGNLEFT	0x800
+#define LVS_ALIGNMASK	0xc00
+#define LVS_OWNERDRAWFIXED	0x400
+#define LVS_NOCOLUMNHEADER	0x4000
+#define LVS_NOSORTHEADER	0x8000
+#if (_WIN32_IE >= 0x0300)
+#define CDIS_CHECKED 8
+#define CDIS_DEFAULT 32
+#define CDIS_DISABLED 4
+#define CDIS_FOCUS 16
+#define CDIS_GRAYED 2
+#define CDIS_HOT 64
+#define CDIS_SELECTED 1
+#define CDIS_MARKED 128
+#define CDIS_INDETERMINATE 256
+#if (_WIN32_WINNT >= 0x0501)
+#define CDIS_SHOWKEYBOARDCUES 512
+#endif
+#define CDDS_POSTERASE 4
+#define CDDS_POSTPAINT 2
+#define CDDS_PREERASE 3
+#define CDDS_PREPAINT 1
+#define CDDS_ITEM 65536
+#define CDDS_ITEMPOSTERASE 65540
+#define CDDS_ITEMPOSTPAINT 65538
+#define CDDS_ITEMPREERASE 65539
+#define CDDS_ITEMPREPAINT 65537
+#if (_WIN32_IE >= 0x0400)
+#define CDDS_SUBITEM 0x20000
+#endif
+#define CDRF_DODEFAULT 0x00
+#define CDRF_NOTIFYITEMDRAW 0x20
+#define CDRF_NOTIFYSUBITEMDRAW 0x20
+#define CDRF_NOTIFYITEMERASE 0x80
+#define CDRF_NOTIFYPOSTERASE 0x40
+#define CDRF_NOTIFYPOSTPAINT 0x10
+#define CDRF_NEWFONT 0x02
+#define CDRF_SKIPDEFAULT 0x04
+#if (_WIN32_IE >= 0x0400)
+#define LVBKIF_SOURCE_NONE      0x00000000
+#define LVBKIF_SOURCE_HBITMAP   0x00000001
+#define LVBKIF_SOURCE_URL       0x00000002
+#define LVBKIF_SOURCE_MASK      0x00000003
+#define LVBKIF_STYLE_NORMAL     0x00000000
+#define LVBKIF_STYLE_TILE       0x00000010
+#define LVBKIF_STYLE_MASK       0x00000010
+#endif /* _WIN32_IE >=0x0400 */
+#if (_WIN32_WINNT >= 0x501)
+#define LVBKIF_FLAG_TILEOFFSET  0x00000100
+#define LVBKIF_TYPE_WATERMARK   0x10000000
+#endif /* _WIN32_WINNT >= 0x501 */
+#define LVS_OWNERDATA 4096
+#define LVS_EX_CHECKBOXES 4
+#define LVS_EX_FULLROWSELECT 32
+#define LVS_EX_GRIDLINES 1
+#define LVS_EX_HEADERDRAGDROP 16
+#define LVS_EX_ONECLICKACTIVATE 64
+#define LVS_EX_SUBITEMIMAGES 2
+#define LVS_EX_TRACKSELECT 8
+#define LVS_EX_TWOCLICKACTIVATE 128
+#define LVSICF_NOINVALIDATEALL	0x00000001
+#define LVSICF_NOSCROLL	0x00000002
+#if( _WIN32_IE >= 0x0400 )
+#define LVS_EX_FLATSB	0x00000100
+#define LVS_EX_REGIONAL	0x00000200
+#define LVS_EX_INFOTIP	0x00000400
+#define LVS_EX_UNDERLINEHOT	0x00000800
+#define LVS_EX_UNDERLINECOLD	0x00001000
+#define LVS_EX_MULTIWORKAREAS	0x00002000
+#endif /* _WIN32_IE >=0x0400 */
+#if( _WIN32_IE >= 0x0500 )
+#define LVS_EX_LABELTIP	0x00004000
+#define LVS_EX_BORDERSELECT	0x00008000
+#endif  /* _WIN32_IE >= 0x0500 */
+#endif  /* _WIN32_IE >= 0x0300 */
+#define LVSIL_NORMAL	0
+#define LVSIL_SMALL	1
+#define LVSIL_STATE	2
+#define LVM_GETBKCOLOR	LVM_FIRST
+#define LVM_SETBKCOLOR	(LVM_FIRST+1)
+#define LVM_GETIMAGELIST	(LVM_FIRST+2)
+#define LVM_SETIMAGELIST	(LVM_FIRST+3)
+#define LVM_GETITEMCOUNT	(LVM_FIRST+4)
+#define LVM_SORTITEMSEX		(LVM_FIRST+81)
+#if (_WIN32_WINNT >= 0x501)
+#define LVM_SETSELECTEDCOLUMN	(LVM_FIRST+140)
+#endif
+#define LVM_SETVIEW		(LVM_FIRST+142)
+#define LVM_GETVIEW		(LVM_FIRST+143)
+#define LVM_INSERTGROUP		(LVM_FIRST+145)
+#define LVM_SETGROUPINFO	(LVM_FIRST+147)
+#define LVM_GETGROUPINFO	(LVM_FIRST+149)
+#define LVM_REMOVEGROUP		(LVM_FIRST+150)
+#define LVM_MOVEGROUP		(LVM_FIRST+151)
+#define LVM_SETGROUPMETRICS	(LVM_FIRST+155)
+#define LVM_GETGROUPMETRICS	(LVM_FIRST+156)
+#define LVM_ENABLEGROUPVIEW	(LVM_FIRST+157)
+#define LVM_SORTGROUPS		(LVM_FIRST+158)
+#define LVM_INSERTGROUPSORTED	(LVM_FIRST+159)
+#define LVM_REMOVEALLGROUPS	(LVM_FIRST+160)
+#define LVM_HASGROUP		(LVM_FIRST+161)
+#define LVM_SETTILEVIEWINFO	(LVM_FIRST+162)
+#define LVM_GETTILEVIEWINFO	(LVM_FIRST+163)
+#define LVM_SETTILEINFO		(LVM_FIRST+164)
+#define LVM_GETTILEINFO		(LVM_FIRST+165)
+#define LVM_SETINSERTMARK	(LVM_FIRST+166)
+#define LVM_GETINSERTMARK	(LVM_FIRST+167)
+#define LVM_INSERTMARKHITTEST	(LVM_FIRST+168)
+#define LVM_GETINSERTMARKRECT	(LVM_FIRST+169)
+#define LVM_SETINSERTMARKCOLOR	(LVM_FIRST+170)
+#define LVM_GETINSERTMARKCOLOR	(LVM_FIRST+171)
+#define LVM_SETINFOTIP		(LVM_FIRST+173)
+#define LVM_GETSELECTEDCOLUMN	(LVM_FIRST+174)
+#define LVM_ISGROUPVIEWENABLED	(LVM_FIRST+175)
+#define LVM_GETOUTLINECOLOR	(LVM_FIRST+176)
+#define LVM_SETOUTLINECOLOR	(LVM_FIRST+177)
+#define LVM_CANCELEDITLABEL	(LVM_FIRST+179)
+#define LVM_MAPIDTOINDEX	(LVM_FIRST+181)
+#define LVIF_TEXT	1
+#define LVIF_IMAGE	2
+#define LVIF_PARAM	4
+#define LVIF_STATE	8
+#if (_WIN32_IE >= 0x0300)
+#define LVIF_INDENT 16
+#define LVIF_NORECOMPUTE 2048
+#endif
+#if (_WIN32_WINNT >= 0x0501)
+#define LVIF_GROUPID 256
+#define LVIF_COLUMNS 512
+#endif
+#define LVIS_FOCUSED	1
+#define LVIS_SELECTED	2
+#define LVIS_CUT	4
+#define LVIS_DROPHILITED	8
+#define LVIS_OVERLAYMASK	0xF00
+#define LVIS_STATEIMAGEMASK	0xF000
+#define LPSTR_TEXTCALLBACKW	((LPWSTR)-1)
+#define LPSTR_TEXTCALLBACKA	((LPSTR)-1)
+#define I_IMAGECALLBACK	(-1)
+#define LVM_GETITEMA	(LVM_FIRST+5)
+#define LVM_GETITEMW	(LVM_FIRST+75)
+#define LVM_SETITEMA	(LVM_FIRST+6)
+#define LVM_SETITEMW	(LVM_FIRST+76)
+#define LVM_INSERTITEMA	(LVM_FIRST+7)
+#define LVM_INSERTITEMW	(LVM_FIRST+77)
+#define LVM_DELETEITEM	(LVM_FIRST+8)
+#define LVM_DELETEALLITEMS	(LVM_FIRST+9)
+#define LVM_GETCALLBACKMASK	(LVM_FIRST+10)
+#define LVM_SETCALLBACKMASK	(LVM_FIRST+11)
+#if( _WIN32_IE >= 0x0400 )
+#define LVM_SETBKIMAGEA	(LVM_FIRST + 68)
+#define LVM_SETBKIMAGEW	(LVM_FIRST + 138)
+#define LVM_GETBKIMAGEA	(LVM_FIRST + 69)
+#define LVM_GETBKIMAGEW	(LVM_FIRST + 139)
+#define LV_MAX_WORKAREAS	16
+#define LVM_SETWORKAREAS	(LVM_FIRST+65)
+#define LVM_GETWORKAREAS	(LVM_FIRST+70)
+#define LVM_GETNUMBEROFWORKAREAS	(LVM_FIRST+73)
+#define LVM_GETSELECTIONMARK	(LVM_FIRST+66)
+#define LVM_SETSELECTIONMARK	(LVM_FIRST+67)
+#define LVM_SETHOVERTIME	(LVM_FIRST+71)
+#define LVM_GETHOVERTIME	(LVM_FIRST+72)
+#define LVM_SETTOOLTIPS	(LVM_FIRST+74)
+#define LVM_GETTOOLTIPS	(LVM_FIRST+78)
+#define LVM_SETUNICODEFORMAT CCM_SETUNICODEFORMAT
+#define LVM_GETUNICODEFORMAT CCM_GETUNICODEFORMAT
+#endif /* _WIN32_IE >= 0x0400 */
+#define LVNI_ALL	0
+#define LVNI_FOCUSED	1
+#define LVNI_SELECTED	2
+#define LVNI_CUT	4
+#define LVNI_DROPHILITED	8
+#define LVNI_ABOVE	256
+#define LVNI_BELOW	512
+#define LVNI_TOLEFT	1024
+#define LVNI_TORIGHT	2048
+#define LVM_GETNEXTITEM	(LVM_FIRST+12)
+#define LVFI_PARAM	1
+#define LVFI_STRING	2
+#define LVFI_PARTIAL	8
+#define LVFI_WRAP	32
+#define LVFI_NEARESTXY	64
+#define LVIF_DI_SETITEM	0x1000
+#define LVM_FINDITEMA	(LVM_FIRST+13)
+#define LVM_FINDITEMW	(LVM_FIRST+83)
+#define LVIR_BOUNDS	0
+#define LVIR_ICON	1
+#define LVIR_LABEL	2
+#define LVIR_SELECTBOUNDS	3
+#define LVM_GETITEMRECT	(LVM_FIRST+14)
+#define LVM_SETITEMPOSITION	(LVM_FIRST+15)
+#define LVM_GETITEMPOSITION	(LVM_FIRST+16)
+#define LVM_GETSTRINGWIDTHA	(LVM_FIRST+17)
+#define LVM_GETSTRINGWIDTHW	(LVM_FIRST+87)
+#define LVHT_NOWHERE	1
+#define LVHT_ONITEMICON	2
+#define LVHT_ONITEMLABEL	4
+#define LVHT_ONITEMSTATEICON	8
+#define LVHT_ONITEM	(LVHT_ONITEMICON|LVHT_ONITEMLABEL|LVHT_ONITEMSTATEICON)
+#define LVHT_ABOVE	8
+#define LVHT_BELOW	16
+#define LVHT_TORIGHT	32
+#define LVHT_TOLEFT	64
+#define LVM_HITTEST	(LVM_FIRST+18)
+#define LVM_ENSUREVISIBLE	(LVM_FIRST+19)
+#define LVM_SCROLL	(LVM_FIRST+20)
+#define LVM_REDRAWITEMS	(LVM_FIRST+21)
+#define LVA_DEFAULT	0
+#define LVA_ALIGNLEFT	1
+#define LVA_ALIGNTOP	2
+#define LVA_SNAPTOGRID	5
+#define LVM_ARRANGE	(LVM_FIRST+22)
+#define LVM_EDITLABELA	(LVM_FIRST+23)
+#define LVM_EDITLABELW	(LVM_FIRST+118)
+#define LVM_GETEDITCONTROL	(LVM_FIRST+24)
+#define LVCF_FMT	1
+#define LVCF_WIDTH	2
+#define LVCF_TEXT	4
+#define LVCF_SUBITEM	8
+#if (_WIN32_IE >= 0x0300)
+#define LVCF_IMAGE 16
+#define LVCF_ORDER 32
+#endif
+#define LVCFMT_LEFT	0
+#define LVCFMT_RIGHT	1
+#define LVCFMT_CENTER	2
+#define LVCFMT_JUSTIFYMASK	3
+#if (_WIN32_IE >= 0x0300)
+#define LVCFMT_BITMAP_ON_RIGHT 4096
+#define LVCFMT_COL_HAS_IMAGES  32768
+#define LVCFMT_IMAGE 2048
+#endif
+#define LVM_GETCOLUMNA	(LVM_FIRST+25)
+#define LVM_GETCOLUMNW	(LVM_FIRST+95)
+#define LVM_SETCOLUMNA	(LVM_FIRST+26)
+#define LVM_SETCOLUMNW	(LVM_FIRST+96)
+#define LVM_INSERTCOLUMNA	(LVM_FIRST+27)
+#define LVM_INSERTCOLUMNW	(LVM_FIRST+97)
+#define LVM_DELETECOLUMN	(LVM_FIRST+28)
+#define LVM_GETCOLUMNWIDTH	(LVM_FIRST+29)
+#define LVSCW_AUTOSIZE	(-1)
+#define LVSCW_AUTOSIZE_USEHEADER	(-2)
+#define LVM_SETCOLUMNWIDTH	(LVM_FIRST+30)
+#define LVM_CREATEDRAGIMAGE	(LVM_FIRST+33)
+#define LVM_GETVIEWRECT	(LVM_FIRST+34)
+#define LVM_GETTEXTCOLOR	(LVM_FIRST+35)
+#define LVM_SETTEXTCOLOR	(LVM_FIRST+36)
+#define LVM_GETTEXTBKCOLOR	(LVM_FIRST+37)
+#define LVM_SETTEXTBKCOLOR	(LVM_FIRST+38)
+#define LVM_GETTOPINDEX	(LVM_FIRST+39)
+#define LVM_GETCOUNTPERPAGE	(LVM_FIRST+40)
+#define LVM_GETORIGIN	(LVM_FIRST+41)
+#define LVM_GETORIGIN	(LVM_FIRST+41)
+#define LVM_UPDATE	(LVM_FIRST+42)
+#define LVM_SETITEMSTATE	(LVM_FIRST+43)
+#define LVM_GETITEMSTATE	(LVM_FIRST+44)
+#define LVM_GETITEMTEXTA	(LVM_FIRST+45)
+#define LVM_GETITEMTEXTW	(LVM_FIRST+115)
+#define LVM_SETITEMTEXTA	(LVM_FIRST+46)
+#define LVM_SETITEMTEXTW	(LVM_FIRST+116)
+#define LVM_SETITEMCOUNT	(LVM_FIRST+47)
+#define LVM_SORTITEMS	(LVM_FIRST+48)
+#define LVM_SETITEMPOSITION32	(LVM_FIRST+49)
+#define LVM_GETSELECTEDCOUNT	(LVM_FIRST+50)
+#define LVM_GETITEMSPACING	(LVM_FIRST+51)
+#define LVM_GETISEARCHSTRINGA	(LVM_FIRST+52)
+#define LVM_GETISEARCHSTRINGW	(LVM_FIRST+117)
+#if (_WIN32_IE >= 0x0300)
+#define LVM_APPROXIMATEVIEWRECT (LVM_FIRST+64)
+#define LVM_SETEXTENDEDLISTVIEWSTYLE (LVM_FIRST+54)
+#define LVM_GETEXTENDEDLISTVIEWSTYLE (LVM_FIRST+55)
+#define LVM_SETCOLUMNORDERARRAY (LVM_FIRST+58)
+#define LVM_GETCOLUMNORDERARRAY (LVM_FIRST+59)
+#define LVM_GETHEADER (LVM_FIRST+31)
+#define LVM_GETHOTCURSOR (LVM_FIRST+63)
+#define LVM_GETHOTITEM (LVM_FIRST+61)
+#define LVM_GETSUBITEMRECT (LVM_FIRST+56)
+#define LVM_SETHOTCURSOR (LVM_FIRST+62)
+#define LVM_SETHOTITEM (LVM_FIRST+60)
+#define LVM_SETICONSPACING (LVM_FIRST+53)
+#define LVM_SUBITEMHITTEST (LVM_FIRST+57)
+#endif
+#define LVN_ITEMCHANGING	LVN_FIRST
+#define LVN_ITEMCHANGED	(LVN_FIRST-1)
+#define LVN_INSERTITEM	(LVN_FIRST-2)
+#define LVN_DELETEITEM	(LVN_FIRST-3)
+#define LVN_DELETEALLITEMS	(LVN_FIRST-4)
+#define LVN_BEGINLABELEDITA	(LVN_FIRST-5)
+#define LVN_BEGINLABELEDITW	(LVN_FIRST-75)
+#define LVN_ENDLABELEDITA	(LVN_FIRST-6)
+#define LVN_ENDLABELEDITW	(LVN_FIRST-76)
+#define LVN_COLUMNCLICK	(LVN_FIRST-8)
+#define LVN_BEGINDRAG	(LVN_FIRST-9)
+#define LVN_BEGINRDRAG	(LVN_FIRST-11)
+#define LVN_GETDISPINFOA	(LVN_FIRST-50)
+#define LVN_GETDISPINFOW	(LVN_FIRST-77)
+#define LVN_SETDISPINFOA	(LVN_FIRST-51)
+#define LVN_SETDISPINFOW	(LVN_FIRST-78)
+#define LVN_KEYDOWN	(LVN_FIRST-55)
+#if (_WIN32_IE >= 0x0400)
+#define LVN_MARQUEEBEGIN  (LVN_FIRST-56)
+#define LVN_GETINFOTIPA	(LVN_FIRST-57)
+#define LVN_GETINFOTIPW	(LVN_FIRST-58)
+#define LVKF_ALT	0x0001
+#define LVKF_CONTROL	0x0002
+#define LVKF_SHIFT	0x0004
+#define LVGIT_UNFOLDED  1
+#endif
+#define TVS_HASBUTTONS	1
+#define TVS_HASLINES	2
+#define TVS_LINESATROOT	4
+#define TVS_EDITLABELS	8
+#define TVS_DISABLEDRAGDROP	16
+#define TVS_SHOWSELALWAYS	32
+#if (_WIN32_IE >= 0x0300)
+#define TVS_CHECKBOXES 256
+#define TVS_NOTOOLTIPS 128
+#define TVS_RTLREADING 64
+#define TVS_TRACKSELECT 512
+#endif
+#if (_WIN32_IE >= 0x0400)
+#define TVS_FULLROWSELECT 4096
+#define TVS_INFOTIP 2048
+#define TVS_NONEVENHEIGHT 16384
+#define TVS_NOSCROLL 8192
+#define TVS_SINGLEEXPAND 1024
+#endif
+#if( _WIN32_IE >= 0x0500 )
+#define TVS_NOHSCROLL	0x8000
+#endif /* _WIN32_IE >= 0x0500 */
+#define TVIF_TEXT	1
+#define TVIF_IMAGE	2
+#define TVIF_PARAM	4
+#define TVIF_STATE	8
+#define TVIF_HANDLE	16
+#define TVIF_SELECTEDIMAGE	32
+#define TVIF_CHILDREN	64
+#if (_WIN32_IE >= 0x0400)
+#define TVIF_INTEGRAL	0x0080
+#endif /* _WIN32_IE >= 0x0400 */
+#define TVIS_FOCUSED	1
+#define TVIS_SELECTED	2
+#define TVIS_CUT	4
+#define TVIS_DROPHILITED	8
+#define TVIS_BOLD	16
+#define TVIS_EXPANDED	32
+#define TVIS_EXPANDEDONCE	64
+#define TVIS_OVERLAYMASK	0xF00
+#define TVIS_STATEIMAGEMASK	0xF000
+#define TVIS_USERMASK	0xF000
+#define I_CHILDRENCALLBACK	(-1)
+#define TVI_ROOT	((HTREEITEM)0xFFFF0000)
+#define TVI_FIRST	((HTREEITEM)0xFFFF0001)
+#define TVI_LAST	((HTREEITEM)0xFFFF0002)
+#define TVI_SORT	((HTREEITEM)0xFFFF0003)
+#define TVSIL_NORMAL	0
+#define TVSIL_STATE	2
+#define TVM_INSERTITEMA	TV_FIRST
+#define TVM_INSERTITEMW	(TV_FIRST+50)
+#define TVM_DELETEITEM	(TV_FIRST+1)
+#define TVM_EXPAND	(TV_FIRST+2)
+#define TVM_GETITEMRECT	(TV_FIRST+4)
+#define TVM_GETCOUNT	(TV_FIRST+5)
+#define TVM_GETINDENT	(TV_FIRST+6)
+#define TVM_SETINDENT	(TV_FIRST+7)
+#define TVM_GETIMAGELIST	(TV_FIRST+8)
+#define TVM_SETIMAGELIST	(TV_FIRST+9)
+#define TVM_GETNEXTITEM	(TV_FIRST+10)
+#define TVM_SELECTITEM	(TV_FIRST+11)
+#define TVM_GETITEMA	(TV_FIRST+12)
+#define TVM_GETITEMW	(TV_FIRST+62)
+#define TVM_SETITEMA	(TV_FIRST+13)
+#define TVM_SETITEMW	(TV_FIRST+63)
+#define TVM_EDITLABELA	(TV_FIRST+14)
+#define TVM_EDITLABELW	(TV_FIRST+65)
+#define TVM_GETEDITCONTROL	(TV_FIRST+15)
+#define TVM_GETVISIBLECOUNT	(TV_FIRST+16)
+#define TVM_HITTEST	(TV_FIRST+17)
+#define TVM_CREATEDRAGIMAGE	(TV_FIRST+18)
+#define TVM_SORTCHILDREN	(TV_FIRST+19)
+#define TVM_ENSUREVISIBLE	(TV_FIRST+20)
+#define TVM_SORTCHILDRENCB	(TV_FIRST+21)
+#define TVM_ENDEDITLABELNOW	(TV_FIRST+22)
+#define TVM_GETISEARCHSTRINGA	(TV_FIRST+23)
+#define TVM_GETISEARCHSTRINGW	(TV_FIRST+64)
+#if (_WIN32_IE >= 0x0300)
+#define TVM_GETTOOLTIPS (TV_FIRST+25)
+#define TVM_SETTOOLTIPS (TV_FIRST+24)
+#endif
+#if (_WIN32_IE >= 0x0400)
+#define TVM_GETBKCOLOR (TV_FIRST+31)
+#define TVM_GETINSERTMARKCOLOR (TV_FIRST+38)
+#define TVM_GETITEMHEIGHT (TV_FIRST+28)
+#define TVM_GETSCROLLTIME (TV_FIRST+34)
+#define TVM_GETTEXTCOLOR (TV_FIRST+32)
+#define TVM_SETBKCOLOR (TV_FIRST+29)
+#define TVM_SETINSERTMARK (TV_FIRST+26)
+#define TVM_SETINSERTMARKCOLOR (TV_FIRST+37)
+#define TVM_SETITEMHEIGHT (TV_FIRST+27)
+#define TVM_SETSCROLLTIME (TV_FIRST+33)
+#define TVM_SETTEXTCOLOR (TV_FIRST+30)
+#define TVM_SETUNICODEFORMAT CCM_SETUNICODEFORMAT
+#define TVM_GETUNICODEFORMAT CCM_GETUNICODEFORMAT
+#endif
+#if (_WIN32_IE >= 0x0500)
+#define TVM_GETITEMSTATE (TV_FIRST+39)
+#define TVM_SETLINECOLOR (TV_FIRST+40)
+#define TVM_GETLINECOLOR (TV_FIRST+41)
+#endif
+#define TVE_COLLAPSE	1
+#define TVE_EXPAND	2
+#define TVE_TOGGLE	3
+#define TVE_COLLAPSERESET	0x8000
+#if (_WIN32_IE >= 0x0300)
+#define TVE_EXPANDPARTIAL	0x4000
+#endif
+#define TVC_UNKNOWN	0
+#define TVC_BYMOUSE	1
+#define TVC_BYKEYBOARD	2
+#define TVGN_ROOT	0
+#define TVGN_NEXT	1
+#define TVGN_PREVIOUS	2
+#define TVGN_PARENT	3
+#define TVGN_CHILD	4
+#define TVGN_FIRSTVISIBLE	5
+#define TVGN_NEXTVISIBLE	6
+#define TVGN_PREVIOUSVISIBLE	7
+#define TVGN_DROPHILITE	8
+#define TVGN_CARET	9
+#if (_WIN32_IE >= 0x0400)
+#define TVGN_LASTVISIBLE	10
+#endif
+#define TVN_SELCHANGINGA	(TVN_FIRST-1)
+#define TVN_SELCHANGINGW	(TVN_FIRST-50)
+#define TVN_SELCHANGEDA	(TVN_FIRST-2)
+#define TVN_SELCHANGEDW	(TVN_FIRST-51)
+#define TVN_GETDISPINFOA	(TVN_FIRST-3)
+#define TVN_GETDISPINFOW	(TVN_FIRST-52)
+#define TVN_SETDISPINFOA	(TVN_FIRST-4)
+#define TVN_SETDISPINFOW	(TVN_FIRST-53)
+#define TVN_ITEMEXPANDINGA	(TVN_FIRST-5)
+#define TVN_ITEMEXPANDINGW	(TVN_FIRST-54)
+#define TVN_ITEMEXPANDEDA	(TVN_FIRST-6)
+#define TVN_ITEMEXPANDEDW	(TVN_FIRST-55)
+#define TVN_BEGINDRAGA	(TVN_FIRST-7)
+#define TVN_BEGINDRAGW	(TVN_FIRST-56)
+#define TVN_BEGINRDRAGA	(TVN_FIRST-8)
+#define TVN_BEGINRDRAGW	(TVN_FIRST-57)
+#define TVN_DELETEITEMA	(TVN_FIRST-9)
+#define TVN_DELETEITEMW	(TVN_FIRST-58)
+#define TVN_BEGINLABELEDITA	(TVN_FIRST-10)
+#define TVN_BEGINLABELEDITW	(TVN_FIRST-59)
+#define TVN_ENDLABELEDITA	(TVN_FIRST-11)
+#define TVN_ENDLABELEDITW	(TVN_FIRST-60)
+#define TVN_KEYDOWN	(TVN_FIRST-12)
+#if (_WIN32_IE >= 0x0400)
+#define TVN_GETINFOTIPA	(TVN_FIRST-13)
+#define TVN_GETINFOTIPW	(TVN_FIRST-14)
+#define TVN_SINGLEEXPAND	(TVN_FIRST-15)
+#define TVNRET_DEFAULT 0
+#define TVNRET_SKIPOLD 1
+#define TVNRET_SKIPNEW 2
+#endif /* _WIN32_IE >= 0x0400 */
+#define TVIF_DI_SETITEM	0x1000
+#define TVHT_NOWHERE	1
+#define TVHT_ONITEMICON	2
+#define TVHT_ONITEMLABEL	4
+#define TVHT_ONITEM	(TVHT_ONITEMICON|TVHT_ONITEMLABEL|TVHT_ONITEMSTATEICON)
+#define TVHT_ONITEMINDENT	8
+#define TVHT_ONITEMBUTTON	16
+#define TVHT_ONITEMRIGHT	32
+#define TVHT_ONITEMSTATEICON	64
+#define TVHT_ABOVE	256
+#define TVHT_BELOW	512
+#define TVHT_TORIGHT	1024
+#define TVHT_TOLEFT	2048
+#define TCHT_NOWHERE	1
+#define TCHT_ONITEMICON	2
+#define TCHT_ONITEMLABEL	4
+#define TCHT_ONITEM	(TCHT_ONITEMICON|TCHT_ONITEMLABEL)
+#define TCS_FORCEICONLEFT	16
+#define TCS_FORCELABELLEFT	32
+#define TCS_TABS	0
+#define TCS_BUTTONS	256
+#define TCS_SINGLELINE	0
+#define TCS_MULTILINE	512
+#define TCS_RIGHTJUSTIFY	0
+#define TCS_FIXEDWIDTH	1024
+#define TCS_RAGGEDRIGHT	2048
+#define TCS_FOCUSONBUTTONDOWN	0x1000
+#define TCS_OWNERDRAWFIXED	0x2000
+#define TCS_TOOLTIPS	0x4000
+#define TCS_FOCUSNEVER	0x8000
+#if (_WIN32_IE >= 0x0300)
+#define TCS_BOTTOM	2
+#define TCS_RIGHT	2
+#define TCS_VERTICAL	128
+#define TCS_SCROLLOPPOSITE	0x0001
+#define TCS_HOTTRACK	0x0040
+#define TCS_MULTISELECT	0x0004
+#endif
+#if( _WIN32_IE >= 0x0400 )
+#define TCS_FLATBUTTONS	0x0008
+#define TCS_EX_FLATSEPARATORS	0x00000001
+#define TCS_EX_REGISTERDROP	0x00000002
+#endif /* _WIN32_IE >= 0x0400 */
+#define TCIF_TEXT	1
+#define TCIF_IMAGE	2
+#define TCIF_RTLREADING	4
+#define TCIF_PARAM	8
+#if (_WIN32_IE >= 0x0400)
+#define TCIF_STATE	16
+#endif
+#define TCIS_BUTTONPRESSED 1
+#if (_WIN32_IE >= 0x0400)
+#define TCIS_HIGHLIGHTED 2
+#endif
+#define TCM_FIRST	0x1300
+#define TCM_GETIMAGELIST	(TCM_FIRST+2)
+#define TCM_SETIMAGELIST	(TCM_FIRST+3)
+#define TCM_GETITEMCOUNT	(TCM_FIRST+4)
+#define TCM_GETITEMA	(TCM_FIRST+5)
+#define TCM_GETITEMW	(TCM_FIRST+60)
+#define TCM_SETITEMA	(TCM_FIRST+6)
+#define TCM_SETITEMW	(TCM_FIRST+61)
+#define TCM_INSERTITEMA	(TCM_FIRST+7)
+#define TCM_INSERTITEMW	(TCM_FIRST+62)
+#define TCM_DELETEITEM	(TCM_FIRST+8)
+#define TCM_DELETEALLITEMS	(TCM_FIRST+9)
+#define TCM_GETITEMRECT	(TCM_FIRST+10)
+#define TCM_GETCURSEL	(TCM_FIRST+11)
+#define TCM_SETCURSEL	(TCM_FIRST+12)
+#define TCM_HITTEST	(TCM_FIRST+13)
+#define TCM_SETITEMEXTRA	(TCM_FIRST+14)
+
+#define TCM_ADJUSTRECT	(TCM_FIRST+40)
+#define TCM_SETITEMSIZE	(TCM_FIRST+41)
+#define TCM_REMOVEIMAGE	(TCM_FIRST+42)
+#define TCM_SETPADDING	(TCM_FIRST+43)
+#define TCM_GETROWCOUNT	(TCM_FIRST+44)
+#define TCM_GETTOOLTIPS	(TCM_FIRST+45)
+#define TCM_SETTOOLTIPS	(TCM_FIRST+46)
+#define TCM_GETCURFOCUS	(TCM_FIRST+47)
+#define TCM_SETCURFOCUS	(TCM_FIRST+48)
+#define TCM_SETMINTABWIDTH	(TCM_FIRST + 49)
+#define TCM_DESELECTALL	(TCM_FIRST + 50)
+#if (_WIN32_IE >=0x0400)
+#define TCM_HIGHLIGHTITEM	(TCM_FIRST + 51)
+#define TCM_SETEXTENDEDSTYLE	(TCM_FIRST + 52)
+#define TCM_GETEXTENDEDSTYLE	(TCM_FIRST + 53)
+#define TCM_SETUNICODEFORMAT	CCM_SETUNICODEFORMAT
+#define TCM_GETUNICODEFORMAT	CCM_GETUNICODEFORMAT
+#endif /* _WIN32_IE >=0x0400 */
+#define TCN_KEYDOWN	TCN_FIRST
+#define TCN_SELCHANGE	(TCN_FIRST-1)
+#define TCN_SELCHANGING	(TCN_FIRST-2)
+#define NM_OUTOFMEMORY (NM_FIRST-1)
+#define NM_CLICK (NM_FIRST-2)
+#define NM_DBLCLK (NM_FIRST-3)
+#define NM_RETURN (NM_FIRST-4)
+#define NM_RCLICK (NM_FIRST-5)
+#define NM_RDBLCLK (NM_FIRST-6)
+#define NM_SETFOCUS (NM_FIRST-7)
+#define NM_KILLFOCUS (NM_FIRST-8)
+#define NM_CUSTOMDRAW (NM_FIRST-12)
+#define NM_HOVER (NM_FIRST-13)
+#define NM_NCHITTEST (NM_FIRST-14)
+#define NM_KEYDOWN (NM_FIRST-15)
+#define NM_RELEASEDCAPTURE (NM_FIRST-16)
+#define NM_SETCURSOR (NM_FIRST-17)
+#define NM_CHAR (NM_FIRST-18)
+#define NM_TOOLTIPSCREATED (NM_FIRST-19)
+#define SBARS_SIZEGRIP 256
+#define CCM_FIRST 0x2000
+#define CCM_LAST (CCM_FIRST+0x200)
+#define CCM_SETBKCOLOR 8193
+#define CCM_SETCOLORSCHEME 8194
+#define CCM_GETCOLORSCHEME 8195
+#define CCM_GETDROPTARGET 8196
+#define CCM_SETUNICODEFORMAT 8197
+#define CCM_GETUNICODEFORMAT 8198
+#define CCM_SETVERSION 0x2007
+#define CCM_GETVERSION 0x2008
+#define CCM_SETNOTIFYWINDOW 0x2009
+#if (_WIN32_WINNT >= 0x0501)
+#define CCM_SETWINDOWTHEME 0x200b
+#define CCM_DPISCALE 0x200c
+#endif
+#define ICC_LISTVIEW_CLASSES 1
+#define ICC_TREEVIEW_CLASSES 2
+#define ICC_BAR_CLASSES	4
+#define ICC_TAB_CLASSES      8
+#define ICC_UPDOWN_CLASS 16
+#define ICC_PROGRESS_CLASS 32
+#define ICC_HOTKEY_CLASS 64
+#define ICC_ANIMATE_CLASS 128
+#define ICC_WIN95_CLASSES 255
+#define ICC_DATE_CLASSES 256
+#define ICC_USEREX_CLASSES 512
+#define ICC_COOL_CLASSES 1024
+#if (_WIN32_IE >= 0x0400)
+#define ICC_INTERNET_CLASSES 2048
+#define ICC_PAGESCROLLER_CLASS 4096
+#define ICC_NATIVEFNTCTL_CLASS 8192
+#define INFOTIPSIZE 1024
+#endif /* _WIN32_IE */
+#if (_WIN32_WINNT >= 0x501)
+#define ICC_STANDARD_CLASSES	0x00004000
+#define ICC_LINK_CLASS		0x00008000
+#endif
+#define GDTR_MIN 1
+#define GDTR_MAX 2
+#define GMR_VISIBLE 0
+#define GMR_DAYSTATE 1
+#define GDT_ERROR -1
+#define GDT_VALID 0
+#define GDT_NONE 1
+#define DTS_UPDOWN 1
+#define DTS_SHOWNONE 2
+#define DTS_SHORTDATEFORMAT 0
+#define DTS_LONGDATEFORMAT 4
+#define DTS_TIMEFORMAT 9
+#define DTS_APPCANPARSE 16
+#define DTS_RIGHTALIGN 32
+#if ( _WIN32_IE >= 0x500 )
+#define DTS_SHORTDATECENTURYFORMAT	0x000C
+#endif /* _WIN32_IE >= 0x500 */
+#define MCS_DAYSTATE 1
+#define MCS_MULTISELECT 2
+#define MCS_WEEKNUMBERS 4
+#if (_WIN32_IE >= 0x0400)
+#define MCS_NOTODAYCIRCLE	0x0008
+#define MCS_NOTODAY	0x0010
+#else /* _WIN32_IE >= 0x0400 */
+#define MCS_NOTODAY	0x0008
+#endif /* _WIN32_IE >= 0x0400 */
+#define DTM_GETSYSTEMTIME 0x1001
+#define DTM_SETSYSTEMTIME 0x1002
+#define DTM_GETRANGE 0x1003
+#define DTM_SETRANGE 0x1004
+#define DTM_SETFORMATA 0x1005
+#define DTM_SETFORMATW 0x1050
+#define DTM_SETMCCOLOR 0x1006
+#define DTM_GETMCCOLOR 0x1007
+#define DTM_GETMONTHCAL 0x1008
+#define DTM_SETMCFONT	0x1009
+#define DTM_GETMCFONT	0x100a
+#define DTN_USERSTRINGA  ((UINT)-758)
+#define DTN_USERSTRINGW  ((UINT)-745)
+#define DTN_WMKEYDOWNA  ((UINT)-757)
+#define DTN_WMKEYDOWNW  ((UINT)-744)
+#define DTN_FORMATA  ((UINT)-756)
+#define DTN_FORMATW  ((UINT)-743)
+#define DTN_FORMATQUERYA  ((UINT)-755)
+#define DTN_FORMATQUERYW ((UINT)-742)
+#define DTN_DROPDOWN    ((UINT)-754)
+#define DTN_CLOSEUP	((UINT)-753)
+#define DTN_DATETIMECHANGE ((UINT)-759)
+#define MCM_GETCURSEL	0x1001
+#define MCM_SETCURSEL	0x1002
+#define MCM_GETMAXSELCOUNT 0x1003
+#define MCM_SETMAXSELCOUNT 0x1004
+#define MCM_GETSELRANGE	0x1005
+#define MCM_SETSELRANGE	0x1006
+#define MCM_GETMONTHRANGE 0x1007
+#define MCM_SETDAYSTATE	0x1008
+#define MCM_GETMINREQRECT 0x1009
+#define MCM_SETCOLOR 0x100a
+#define MCM_GETCOLOR 0x100b
+#define MCM_SETTODAY 0x100c
+#define MCM_GETTODAY 0x100d
+#define MCM_HITTEST 0x100e
+#define MCM_SETFIRSTDAYOFWEEK 0x100f
+#define MCM_GETFIRSTDAYOFWEEK 0x1010
+#define MCM_GETRANGE 0x1011
+#define MCM_SETRANGE 0x1012
+#define MCM_GETMONTHDELTA 0x1013
+#define MCM_SETMONTHDELTA 0x1014
+#define MCM_GETMAXTODAYWIDTH 0x1015
+#define MCM_GETUNICODEFORMAT CCM_GETUNICODEFORMAT
+#define MCM_SETUNICODEFORMAT CCM_SETUNICODEFORMAT
+#define MCN_SELCHANGE	  ((UINT)-749)
+#define MCN_GETDAYSTATE	((UINT)-747)
+#define MCN_SELECT		((UINT)-746)
+#define ODT_HEADER 100
+#define ODT_TAB 101
+#define ODT_LISTVIEW 102
+#define SB_SETBKCOLOR	0x2001
+#if (_WIN32_IE >= 0x0300)
+#define SB_ISSIMPLE 1038
+#define MCSC_BACKGROUND 0
+#define MCSC_TEXT 1
+#define MCSC_TITLEBK 2
+#define MCSC_TITLETEXT 3
+#define MCSC_MONTHBK 4
+#define MCSC_TRAILINGTEXT 5
+#endif
+#if (_WIN32_IE >= 0x0400)
+#define MCHT_TITLE 0x10000
+#define MCHT_CALENDAR 0x20000
+#define MCHT_TODAYLINK 0x30000
+#define MCHT_NEXT 0x1000000
+#define MCHT_PREV 0x2000000
+#define MCHT_NOWHERE 0x00
+#define MCHT_TITLEBK (MCHT_TITLE)
+#define MCHT_TITLEMONTH (MCHT_TITLE | 0x0001)
+#define MCHT_TITLEYEAR (MCHT_TITLE | 0x0002)
+#define MCHT_TITLEBTNNEXT (MCHT_TITLE | MCHT_NEXT | 0x0003)
+#define MCHT_TITLEBTNPREV (MCHT_TITLE | MCHT_PREV | 0x0003)
+#define MCHT_CALENDARBK (MCHT_CALENDAR)
+#define MCHT_CALENDARDATE (MCHT_CALENDAR | 0x0001)
+#define MCHT_CALENDARDATENEXT (MCHT_CALENDARDATE | MCHT_NEXT)
+#define MCHT_CALENDARDATEPREV (MCHT_CALENDARDATE | MCHT_PREV)
+#define MCHT_CALENDARDAY (MCHT_CALENDAR | 0x0002)
+#define MCHT_CALENDARWEEKNUM (MCHT_CALENDAR | 0x0003)
+#endif /* _WIN32_IE >= 0x0400 */
+#define RBS_TOOLTIPS 256
+#define RBS_VARHEIGHT 512
+#define RBS_BANDBORDERS 1024
+#define RBS_FIXEDORDER 2048
+#define RBIM_IMAGELIST 1
+#define RB_SETCOLORSCHEME CCM_SETCOLORSCHEME
+#define RB_GETCOLORSCHEME CCM_GETCOLORSCHEME
+#define RBBS_BREAK	0x0001
+#define RBBS_FIXEDSIZE	0x0002
+#define RBBS_CHILDEDGE	0x0004
+#define RBBS_HIDDEN	0x0008
+#define RBBS_NOVERT	0x0010
+#define RBBS_FIXEDBMP	0x0020
+#define RBBS_VARIABLEHEIGHT	0x0040
+#define RBBS_GRIPPERALWAYS	0x0080
+#define RBBS_NOGRIPPER	0x0100
+#if (_WIN32_IE >= 0x0500)
+#define RBBS_USECHEVRON	0x0200
+#if (_WIN32_IE >= 0x0501)
+#define RBBS_HIDETITLE	0x0400
+#define RBBS_TOPALIGN	0x0800
+#endif /* _WIN32_IE >= 0x0501 */
+#endif /* _WIN32_IE >= 0x0500 */
+#define RBBIM_STYLE 1
+#define RBBIM_COLORS 2
+#define RBBIM_TEXT 4
+#define RBBIM_IMAGE 8
+#define RBBIM_CHILD 16
+#define RBBIM_CHILDSIZE 32
+#define RBBIM_SIZE 64
+#define RBBIM_BACKGROUND 128
+#define RBBIM_ID 256
+#define RB_INSERTBANDA (WM_USER+1)
+#define RB_INSERTBANDW (WM_USER+10)
+#define RB_DELETEBAND (WM_USER+2)
+#define RB_GETBARINFO (WM_USER+3)
+#define RB_SETBARINFO (WM_USER+4)
+#define RB_GETBANDCOUNT (WM_USER+12)
+#define RB_GETROWCOUNT (WM_USER+13)
+#define RB_GETROWHEIGHT (WM_USER+14)
+#define RB_SETBANDINFOA (WM_USER+6)
+#define RB_SETBANDINFOW (WM_USER+11)
+#define RB_SETPARENT (WM_USER+7)
+#define RBN_HEIGHTCHANGE RBN_FIRST
+#if (_WIN32_IE >= 0x0300)
+#define LVN_ODCACHEHINT (LVN_FIRST-13)
+#define LVN_ODFINDITEMA (LVN_FIRST-52)
+#define LVN_ODFINDITEMW (LVN_FIRST-79)
+#define LVN_ITEMACTIVATE (LVN_FIRST-14)
+#define LVN_ODSTATECHANGED (LVN_FIRST-15)
+#ifdef UNICODE
+#define LVN_ODFINDITEM LVN_ODFINDITEMW
+#else
+#define LVN_ODFINDITEM LVN_ODFINDITEMA
+#endif
+#endif /* _WIN32_IE */
+#if (_WIN32_IE >= 0x0400)
+#define SB_SETICON 1039
+#define SB_SETTIPTEXTA	1040
+#define SB_SETTIPTEXTW	1041
+#define SB_GETTIPTEXTA	1042
+#define SB_GETTIPTEXTW	1043
+#define SB_GETICON	1044
+#define SB_SETUNICODEFORMAT	0x2005
+#define SB_GETUNICODEFORMAT	0x2006
+#define PGF_INVISIBLE 0
+#define PGF_NORMAL 1
+#define PGF_GRAYED 2
+#define PGF_DEPRESSED 4
+#define PGF_HOT 8
+#define PGB_TOPORLEFT 0
+#define PGB_BOTTOMORRIGHT 1
+#define PGF_SCROLLUP 1
+#define PGF_SCROLLDOWN 2
+#define PGF_SCROLLLEFT 4
+#define PGF_SCROLLRIGHT 8
+#define PGK_SHIFT 1
+#define PGK_CONTROL 2
+#define PGK_MENU 4
+#define PGF_CALCWIDTH 1
+#define PGF_CALCHEIGHT 2
+#define PGM_FIRST 0x1400
+#define PGM_SETCHILD (PGM_FIRST+1)
+#define PGM_RECALCSIZE (PGM_FIRST+2)
+#define PGM_FORWARDMOUSE (PGM_FIRST+3)
+#define PGM_SETBKCOLOR (PGM_FIRST+4)
+#define PGM_GETBKCOLOR (PGM_FIRST+5)
+#define PGM_SETBORDER (PGM_FIRST+6)
+#define PGM_GETBORDER (PGM_FIRST+7)
+#define PGM_SETPOS (PGM_FIRST+8)
+#define PGM_GETPOS (PGM_FIRST+9)
+#define PGM_SETBUTTONSIZE (PGM_FIRST+10)
+#define PGM_GETBUTTONSIZE (PGM_FIRST+11)
+#define PGM_GETBUTTONSTATE (PGM_FIRST+12)
+#define PGM_GETDROPTARGET CCM_GETDROPTARGET
+#define RBS_REGISTERDROP 4096
+#define RBS_AUTOSIZE 8192
+#define RBS_VERTICALGRIPPER 16384
+#define RBS_DBLCLKTOGGLE  32768
+#define RBBIM_IDEALSIZE 512
+#define RBBIM_LPARAM 1024
+#define RBBIM_HEADERSIZE 2048
+#define RB_HITTEST (WM_USER+8)
+#define RB_GETRECT (WM_USER+9)
+#define RB_IDTOINDEX (WM_USER+16)
+#define RB_GETTOOLTIPS (WM_USER+17)
+#define RB_SETTOOLTIPS (WM_USER+18)
+#define RB_SETBKCOLOR (WM_USER+19)
+#define RB_GETBKCOLOR (WM_USER+20)
+#define RB_SETTEXTCOLOR (WM_USER+21)
+#define RB_GETTEXTCOLOR (WM_USER+22)
+#define RB_SIZETORECT (WM_USER+23)
+#define RB_BEGINDRAG (WM_USER+24)
+#define RB_ENDDRAG (WM_USER+25)
+#define RB_DRAGMOVE (WM_USER+26)
+#define RB_GETBARHEIGHT (WM_USER+27)
+#define RB_GETBANDINFOW (WM_USER+28)
+#define RB_GETBANDINFOA (WM_USER+29)
+#define RB_MINIMIZEBAND (WM_USER+30)
+#define RB_MAXIMIZEBAND (WM_USER+31)
+#define RB_GETDROPTARGET CCM_GETDROPTARGET
+#define RB_GETBANDBORDERS (WM_USER+34)
+#define RB_SHOWBAND (WM_USER+35)
+#define RB_SETPALETTE (WM_USER+37)
+#define RB_GETPALETTE (WM_USER+38)
+#define RB_MOVEBAND (WM_USER+39)
+#define RB_SETUNICODEFORMAT     CCM_SETUNICODEFORMAT
+#define RB_GETUNICODEFORMAT     CCM_GETUNICODEFORMAT
+#define RBN_GETOBJECT (RBN_FIRST-1)
+#define RBN_LAYOUTCHANGED (RBN_FIRST-2)
+#define RBN_AUTOSIZE (RBN_FIRST-3)
+#define RBN_BEGINDRAG (RBN_FIRST-4)
+#define RBN_ENDDRAG (RBN_FIRST-5)
+#define RBN_DELETINGBAND (RBN_FIRST-6)
+#define RBN_DELETEDBAND (RBN_FIRST-7)
+#define RBN_CHILDSIZE (RBN_FIRST-8)
+#define RBNM_ID 1
+#define RBNM_STYLE 2
+#define RBNM_LPARAM 4
+#define RBHT_NOWHERE 1
+#define RBHT_CAPTION 2
+#define RBHT_CLIENT 3
+#define RBHT_GRABBER 4
+#ifdef UNICODE
+#define SB_SETTIPTEXT	SB_SETTIPTEXTW
+#define SB_GETTIPTEXT	SB_GETTIPTEXTW
+#define RB_GETBANDINFO	RB_GETBANDINFOW
+#else
+#define SB_SETTIPTEXT	SB_SETTIPTEXTA
+#define SB_GETTIPTEXT	SB_GETTIPTEXTA
+#define RB_GETBANDINFO	RB_GETBANDINFOA
+#endif
+#else
+#define RB_GETBANDINFO (WM_USER+5)
+#endif /* _WIN32_IE >= 0x0400 */
+#define CBEM_INSERTITEMA	(WM_USER + 1)
+#define CBEM_SETIMAGELIST	(WM_USER + 2)
+#define CBEM_GETIMAGELIST	(WM_USER + 3)
+#define CBEM_GETITEMA	(WM_USER + 4)
+#define CBEM_SETITEMA	(WM_USER + 5)
+#define CBEM_DELETEITEM	CB_DELETESTRING
+#define CBEM_GETCOMBOCONTROL	(WM_USER + 6)
+#define CBEM_GETEDITCONTROL	(WM_USER + 7)
+#define CBEM_SETEXSTYLE	(WM_USER + 8)
+#define CBEM_GETEXSTYLE	(WM_USER + 9)
+#if (_WIN32_IE >= 0x0400)
+#define CBEM_SETEXTENDEDSTYLE	(WM_USER + 14)
+#define CBEM_GETEXTENDEDSTYLE	(WM_USER + 9)
+#define CBEM_SETUNICODEFORMAT	CCM_SETUNICODEFORMAT
+#define CBEM_GETUNICODEFORMAT	CCM_GETUNICODEFORMAT
+#endif /* _WIN32_IE >= 0x0400 */
+#define CBEM_HASEDITCHANGED	(WM_USER + 10)
+#define CBEM_INSERTITEMW	(WM_USER + 11)
+#define CBEM_SETITEMW	(WM_USER + 12)
+#define CBEM_GETITEMW	(WM_USER + 13)
+#define DA_LAST	0x7fffffff
+#define DPA_APPEND	0x7fffffff
+#define DPA_ERR	-1
+#define DSA_APPEND	0x7fffffff
+#define DSA_ERR	-1
+#define DPAS_SORTED	1
+#define DPAS_INSERTBEFORE	2
+#define DPAS_INSERTAFTER	4
+#if (_WIN32_IE >= 0x400)
+#define WSB_PROP_CYVSCROLL	1
+#define WSB_PROP_CXHSCROLL	2
+#define WSB_PROP_CYHSCROLL	4
+#define WSB_PROP_CXVSCROLL	8
+#define WSB_PROP_CXHTHUMB	16
+#define WSB_PROP_CYVTHUMB	32
+#define WSB_PROP_VBKGCOLOR	64
+#define WSB_PROP_HBKGCOLOR	128
+#define WSB_PROP_VSTYLE	256
+#define WSB_PROP_HSTYLE	512
+#define WSB_PROP_WINSTYLE	1024
+#define WSB_PROP_PALETTE	2048
+#define WSB_PROP_MASK	0xfff
+#define FSB_FLAT_MODE	2
+#define FSB_ENCARTA_MODE	1
+#define FSB_REGULAR_MODE	0
+#endif /* _WIN32_IE >= 0x400 */
+#if (_WIN32_WINNT >= 0x0501)
+#define LIF_ITEMINDEX	0x00000001
+#define LIF_STATE	0x00000002
+#define LIF_ITEMID	0x00000004
+#define LIF_URL	0x00000008
+#define LIS_FOCUSED	0x00000001
+#define LIS_ENABLED	0x00000002
+#define LIS_VISITED	0x00000004
+#define LM_HITTEST	(WM_USER + 768)
+#define LM_GETIDEALHEIGHT	(WM_USER + 769)
+#define LM_SETITEM	(WM_USER + 770)
+#define LM_GETITEM	(WM_USER + 771)
+#define MAX_LINKID_TEXT	48
+#define L_MAX_URL_LENGTH	2084
+#endif
+
+typedef struct tagNMTCKEYDOWN {
+  NMHDR hdr;
+  WORD  wVKey;
+  UINT  flags;
+} NMTCKEYDOWN;
+
+#ifndef RC_INVOKED
+typedef struct tagCOMBOBOXEXITEMA{
+	UINT mask;
+	int iItem;
+	LPSTR pszText;
+	int cchTextMax;
+	int iImage;
+	int iSelectedImage;
+	int iOverlay;
+	int iIndent;
+	LPARAM lParam;
+} COMBOBOXEXITEMA, *PCOMBOBOXEXITEMA;
+typedef COMBOBOXEXITEMA CONST *PCCOMBOEXITEMA;
+typedef struct tagCOMBOBOXEXITEMW{
+	UINT mask;
+	int iItem;
+	LPWSTR pszText;
+	int cchTextMax;
+	int iImage;
+	int iSelectedImage;
+	int iOverlay;
+	int iIndent;
+	LPARAM lParam;
+} COMBOBOXEXITEMW, *PCOMBOBOXEXITEMW;
+typedef COMBOBOXEXITEMW CONST *PCCOMBOEXITEMW;
+#if (_WIN32_IE >= 0x0400)
+typedef struct {
+	NMHDR hdr;
+	COMBOBOXEXITEMA ceItem;
+} NMCOMBOBOXEXA, *PNMCOMBOBOXEXA;
+typedef struct {
+	NMHDR hdr;
+	COMBOBOXEXITEMW ceItem;
+} NMCOMBOBOXEXW, *PNMCOMBOBOXEXW;
+typedef struct {
+	NMHDR   hdr;
+	int iItemid;
+	WCHAR   szText[CBEMAXSTRLEN];
+}NMCBEDRAGBEGINW, *LPNMCBEDRAGBEGINW, *PNMCBEDRAGBEGINW;
+typedef struct {
+	NMHDR   hdr;
+	int iItemid;
+	char    szText[CBEMAXSTRLEN];
+}NMCBEDRAGBEGINA, *LPNMCBEDRAGBEGINA, *PNMCBEDRAGBEGINA;
+typedef struct tagNMIPADDRESS{
+	NMHDR hdr;
+	int iField;
+	int iValue;
+} NMIPADDRESS, *LPNMIPADDRESS;
+typedef struct tagLVKEYDOWN {
+	NMHDR hdr;
+	WORD wVKey;
+	UINT flags;
+} NMLVKEYDOWN, *LPNMLVKEYDOWN;
+typedef struct {
+	NMHDR hdr;
+	DWORD dwFlag;
+	int iWidth;
+	int iHeight;
+} NMPGCALCSIZE, *LPNMPGCALCSIZE;
+typedef struct {
+	NMHDR hdr;
+	BOOL fwKeys;
+	RECT rcParent;
+	int iDir;
+	int iXpos;
+	int iYpos;
+	int iScroll;
+} NMPGSCROLL, *LPNMPGSCROLL;
+typedef struct tagNMSELCHANGE {
+	NMHDR nmhdr;
+	SYSTEMTIME stSelStart;
+	SYSTEMTIME stSelEnd;
+} NMSELCHANGE, *LPNMSELCHANGE;
+typedef struct tagNMTBHOTITEM {
+	NMHDR hdr;
+	int idOld;
+	int idNew;
+	DWORD dwFlags;
+} NMTBHOTITEM, *LPNMTBHOTITEM;
+typedef struct {
+	NMHDR hdr;
+	DWORD dwMask;
+	int idCommand;
+	DWORD_PTR lParam;
+	int iImage;
+	LPSTR pszText;
+	int cchText;
+} NMTBDISPINFOA, *LPNMTBDISPINFOA;
+typedef struct {
+	NMHDR hdr;
+	DWORD dwMask;
+	int idCommand;
+	DWORD_PTR lParam;
+	int iImage;
+	LPWSTR pszText;
+	int cchText;
+} NMTBDISPINFOW, *LPNMTBDISPINFOW;
+typedef struct tagNMTBGETINFOTIPA
+{
+	NMHDR hdr;
+	LPSTR pszText;
+	int cchTextMax;
+	int iItem;
+	LPARAM lParam;
+} NMTBGETINFOTIPA, *LPNMTBGETINFOTIPA;
+typedef struct tagNMTBGETINFOTIPW
+{
+	NMHDR hdr;
+	LPWSTR pszText;
+	int cchTextMax;
+	int iItem;
+	LPARAM lParam;
+} NMTBGETINFOTIPW, *LPNMTBGETINFOTIPW;
+typedef struct tagNMMOUSE {
+	NMHDR hdr;
+	DWORD_PTR dwItemSpec;
+	DWORD_PTR dwItemData;
+	POINT pt;
+	LPARAM dwHitInfo;
+} NMMOUSE, *LPNMMOUSE;
+#endif /*_WIN32_IE >= 0x0400 */
+#if (_WIN32_IE >= 0x0401)
+typedef struct tagNMTOOLTIPSCREATED
+{
+	NMHDR hdr;
+	HWND hwndToolTips;
+} NMTOOLTIPSCREATED, *LPNMTOOLTIPSCREATED;
+#endif
+typedef struct tagNMDATETIMECHANGE
+{
+	NMHDR nmhdr;
+	DWORD dwFlags;
+	SYSTEMTIME st;
+} NMDATETIMECHANGE, *LPNMDATETIMECHANGE;
+typedef struct {
+	NMHDR hdr;
+	BOOL fChanged;
+	int iNewSelection;
+	WCHAR szText[CBEMAXSTRLEN];
+	int iWhy;
+} NMCBEENDEDITW, *LPNMCBEENDEDITW, *PNMCBEENDEDITW;
+typedef struct {
+	NMHDR hdr;
+	BOOL fChanged;
+	int iNewSelection;
+	char szText[CBEMAXSTRLEN];
+	int iWhy;
+} NMCBEENDEDITA, *LPNMCBEENDEDITA,*PNMCBEENDEDITA;
+typedef struct _COLORMAP {
+	COLORREF from;
+	COLORREF to;
+} COLORMAP,*LPCOLORMAP;
+typedef struct {
+	UINT uNotification;
+	HWND hWnd;
+	POINT ptCursor;
+} DRAGLISTINFO,*LPDRAGLISTINFO;
+typedef struct _TBBUTTON {
+	int iBitmap;
+	int idCommand;
+	BYTE fsState;
+	BYTE fsStyle;
+	BYTE bReserved[2];
+	DWORD dwData;
+	int iString;
+} TBBUTTON,*PTBBUTTON,*LPTBBUTTON;
+typedef const TBBUTTON *LPCTBBUTTON;
+#if _WIN32_IE >= 0x400
+typedef struct {
+	UINT cbSize;
+	DWORD dwMask;
+	int idCommand;
+	int iImage;
+	BYTE fsState;
+	BYTE fsStyle;
+	WORD cx;
+	DWORD lParam;
+	LPSTR pszText;
+	int cchText;
+} TBBUTTONINFOA, *LPTBBUTTONINFOA;
+typedef struct {
+	UINT cbSize;
+	DWORD dwMask;
+	int idCommand;
+	int iImage;
+	BYTE fsState;
+	BYTE fsStyle;
+	WORD cx;
+	DWORD lParam;
+	LPWSTR pszText;
+	int cchText;
+} TBBUTTONINFOW, *LPTBBUTTONINFOW;
+typedef struct {
+	int iButton;
+	DWORD dwFlags;
+} TBINSERTMARK, *LPTBINSERTMARK;
+typedef struct tagLVBKIMAGEA {
+	ULONG ulFlags;
+	HBITMAP hbm;
+	LPSTR pszImage;
+	UINT cchImageMax;
+	int xOffsetPercent;
+	int yOffsetPercent;
+} LVBKIMAGEA, *LPLVBKIMAGEA;
+typedef struct tagLVBKIMAGEW {
+	ULONG ulFlags;
+	HBITMAP hbm;
+	LPWSTR pszImage;
+	UINT cchImageMax;
+	int xOffsetPercent;
+	int yOffsetPercent;
+} LVBKIMAGEW, *LPLVBKIMAGEW;
+#endif /* _WIN32_IE >= 0x400 */
+typedef struct {
+	NMHDR hdr;
+	int iItem;
+	TBBUTTON tbButton;
+	int cchText;
+	LPTSTR pszText;
+} TBNOTIFY,*LPTBNOTIFY;
+typedef struct {
+	HKEY hkr;
+	LPCTSTR pszSubKey;
+	LPCTSTR pszValueName;
+} TBSAVEPARAMS;
+typedef struct _IMAGEINFO {
+	HBITMAP hbmImage;
+	HBITMAP hbmMask;
+	int Unused1;
+	int Unused2;
+	RECT rcImage;
+} IMAGEINFO, *LPIMAGEINFO;
+typedef struct _IMAGELIST *HIMAGELIST;
+typedef struct _HDITEMA {
+	UINT mask;
+	int cxy;
+	LPSTR pszText;
+	HBITMAP hbm;
+	int cchTextMax;
+	int fmt;
+	LPARAM lParam;
+#if (_WIN32_IE >= 0x0300)
+	int iImage;
+	int iOrder;
+#endif
+#if (_WIN32_IE >= 0x0500)
+	UINT type;
+	LPVOID pvFilter;
+#endif
+} HDITEMA, * LPHDITEMA;
+typedef struct _HDITEMW {
+	UINT mask;
+	int cxy;
+	LPWSTR pszText;
+	HBITMAP hbm;
+	int cchTextMax;
+	int fmt;
+	LPARAM lParam;
+#if (_WIN32_IE >= 0x0300)
+	int iImage;
+	int iOrder;
+#endif
+#if (_WIN32_IE >= 0x0500)
+	UINT type;
+	LPVOID pvFilter;
+#endif
+} HDITEMW, * LPHDITEMW;
+/* for backward compatibility */
+#define HD_ITEMA HDITEMA
+#define HD_ITEMW HDITEMW
+#define HD_ITEM HDITEM
+typedef struct _HD_LAYOUT {
+	RECT *prc;
+	WINDOWPOS *pwpos;
+} HDLAYOUT, *LPHDLAYOUT;
+#define HD_LAYOUT HDLAYOUT /*  backward compatibility */
+typedef struct _HD_HITTESTINFO {
+	POINT pt;
+	UINT flags;
+	int iItem;
+} HD_HITTESTINFO, *LPHDHITTESTINFO;
+typedef struct _HD_NOTIFYA {
+	NMHDR hdr;
+	int iItem;
+	int iButton;
+	HD_ITEMA *pitem;
+} HD_NOTIFYA;
+typedef struct _HD_NOTIFYW {
+	NMHDR hdr;
+	int iItem;
+	int iButton;
+	HD_ITEMW *pitem;
+} HD_NOTIFYW;
+/* FIXME: NMHEADER structure (base for all events of the comctl controls)
+   is the same as HD_NOTIFY depending on the value of _WIN32_IE macro.
+   I'm defining both for now. */
+typedef struct _NMHEADERA {
+    NMHDR   hdr;
+    int     iItem;
+    int     iButton;
+    HD_ITEMA* pitem;
+}  NMHEADERA, *LPNMHEADERA;
+
+typedef struct _NMHEADERW {
+    NMHDR   hdr;
+    int     iItem;
+    int     iButton;
+    HD_ITEMW* pitem;
+}  NMHEADERW, *LPNMHEADERW;
+#ifdef UNICODE
+#define NMHEADER NMHEADERW
+#define LPNMHEADER LPNMHEADERW
+#else
+#define NMHEADER NMHEADERA
+#define LPNMHEADER LPNMHEADERA
+#endif
+/* End FIXME. */
+typedef struct tagNMHDDISPINFOA {
+    NMHDR   hdr;
+    int     iItem;
+    UINT    mask;
+    LPSTR   pszText;
+    int     cchTextMax;
+    int     iImage;
+    LPARAM  lParam;
+} NMHDDISPINFOA, *LPNMHDDISPINFOA;
+typedef struct tagNMHDDISPINFOW {
+    NMHDR   hdr;
+    int     iItem;
+    UINT    mask;
+    LPWSTR  pszText;
+    int     cchTextMax;
+    int     iImage;
+    LPARAM  lParam;
+} NMHDDISPINFOW, *LPNMHDDISPINFOW;
+typedef struct tagNMCUSTOMDRAWINFO {
+    NMHDR    hdr;
+    DWORD    dwDrawStage;
+    HDC      hdc;
+    RECT     rc;
+    DWORD    dwItemSpec;
+    UINT     uItemState;
+    LPARAM   lItemlParam;
+} NMCUSTOMDRAW, *LPNMCUSTOMDRAW;
+typedef struct tagNMLVCUSTOMDRAW {
+    NMCUSTOMDRAW nmcd;
+    COLORREF     clrText;
+    COLORREF     clrTextBk;
+#if _WIN32_IE >= 0x0400
+    int          iSubItem;
+#endif
+} NMLVCUSTOMDRAW, *LPNMLVCUSTOMDRAW;
+#if (_WIN32_IE >= 0x0400)
+typedef struct tagNMLVGETINFOTIPA
+{
+	NMHDR hdr;
+	DWORD dwFlags;
+	LPSTR pszText;
+	int cchTextMax;
+	int iItem;
+	int iSubItem;
+	LPARAM lParam;
+} NMLVGETINFOTIPA, *LPNMLVGETINFOTIPA;
+typedef struct tagNMLVGETINFOTIPW
+{
+	NMHDR hdr;
+	DWORD dwFlags;
+	LPWSTR pszText;
+	int cchTextMax;
+	int iItem;
+	int iSubItem;
+	LPARAM lParam;
+} NMLVGETINFOTIPW, *LPNMLVGETINFOTIPW;
+#endif /* _WIN32_IE >= 0x0400 */
+typedef struct tagNMTVCUSTOMDRAW {
+    NMCUSTOMDRAW nmcd;
+    COLORREF     clrText;
+    COLORREF     clrTextBk;
+#if _WIN32_IE >= 0x0400
+    int          iLevel;
+#endif
+} NMTVCUSTOMDRAW, *LPNMTVCUSTOMDRAW;
+#if (_WIN32_IE >= 0x400)
+typedef struct _NMTBCUSTOMDRAW {
+	NMCUSTOMDRAW nmcd;
+	HBRUSH hbrMonoDither;
+	HBRUSH hbrLines;
+	HPEN hpenLines;
+	COLORREF clrText;
+	COLORREF clrMark;
+	COLORREF clrTextHighlight;
+	COLORREF clrBtnFace;
+	COLORREF clrBtnHighlight;
+	COLORREF clrHighlightHotTrack;
+	RECT rcText;
+	int nStringBkMode;
+	int nHLStringBkMode;
+#if (_WIN32_WINNT >= 0x0501)
+	int iListGap;
+#endif
+} NMTBCUSTOMDRAW, * LPNMTBCUSTOMDRAW;
+typedef struct tagNMITEMACTIVATE {
+	NMHDR hdr;
+	int iItem;
+	int iSubItem;
+	UINT uNewState;
+	UINT uOldState;
+	UINT uChanged;
+	POINT ptAction;
+	LPARAM lParam;
+	UINT uKeyFlags;
+} NMITEMACTIVATE, *LPNMITEMACTIVATE;
+#endif /* _WIN32_IE >= 0x0400 */
+typedef struct tagTBADDBITMAP {
+	HINSTANCE hInst;
+	UINT nID;
+} TBADDBITMAP,*LPTBADDBITMAP;
+typedef struct tagTBSAVEPARAMSA {
+	HKEY hkr;
+	LPCSTR pszSubKey;
+	LPCSTR pszValueName;
+} TBSAVEPARAMSA;
+typedef struct tagTBSAVEPARAMSW {
+	HKEY hkr;
+	LPCWSTR pszSubKey;
+	LPCWSTR pszValueName;
+} TBSAVEPARAMSW;
+typedef struct {
+	HINSTANCE hInstOld;
+	UINT nIDOld;
+	HINSTANCE hInstNew;
+	UINT nIDNew;
+	int nButtons;
+} TBREPLACEBITMAP,*LPTBREPLACEBITMAP;
+typedef struct tagNMTOOLBARA {
+	NMHDR hdr;
+	int iItem;
+	TBBUTTON tbButton;
+	int cchText;
+	LPSTR pszText;
+#if (_WIN32_IE >= 0x500)
+	RECT    rcButton;
+#endif
+} NMTOOLBARA, *LPNMTOOLBARA;
+#define TBNOTIFYA NMTOOLBARA
+#define LPTBNOTIFYA LPNMTOOLBARA
+typedef struct tagNMTOOLBARW {
+	NMHDR hdr;
+	int iItem;
+	TBBUTTON tbButton;
+	int cchText;
+	LPWSTR pszText;
+#if (_WIN32_IE >= 0x500)
+	RECT    rcButton;
+#endif
+} NMTOOLBARW, *LPNMTOOLBARW;
+#define TBNOTIFYW NMTOOLBARW
+#define LPTBNOTIFYW LPNMTOOLBARW
+typedef struct tagTOOLINFOA {
+	UINT cbSize;
+	UINT uFlags;
+	HWND hwnd;
+	UINT uId;
+	RECT rect;
+	HINSTANCE hinst;
+	LPSTR lpszText;
+#if (_WIN32_IE >= 0x0300)
+	LPARAM lParam;
+#endif
+} TTTOOLINFOA,*LPTTTOOLINFOA,*PTOOLINFOA;
+#define TOOLINFOA TTTOOLINFOA
+#define LPTOOLINFOA LPTTTOOLINFOA
+#define TTTOOLINFOA_V1_SIZE CCSIZEOF_STRUCT(TTTOOLINFOA, lpszText)
+#define TTTOOLINFOA_V2_SIZE CCSIZEOF_STRUCT(TTTOOLINFOA, lParam)
+#define TTTOOLINFOA_V3_SIZE CCSIZEOF_STRUCT(TTTOOLINFOA, lpReserved)
+typedef struct tagTOOLINFOW {
+	UINT cbSize;
+	UINT uFlags;
+	HWND hwnd;
+	UINT uId;
+	RECT rect;
+	HINSTANCE hinst;
+	LPWSTR lpszText;
+#if (_WIN32_IE >= 0x0300)
+	LPARAM lParam;
+#endif
+} TTTOOLINFOW,*LPTTTOOLINFOW,*PTOOLINFOW;
+#define TOOLINFOW TTTOOLINFOW
+#define LPTOOLINFOW LPTTTOOLINFOW
+#define TTTOOLINFOW_V1_SIZE CCSIZEOF_STRUCT(TTTOOLINFOW, lpszText)
+#define TTTOOLINFOW_V2_SIZE CCSIZEOF_STRUCT(TTTOOLINFOW, lParam)
+#define TTTOOLINFOW_V3_SIZE CCSIZEOF_STRUCT(TTTOOLINFOW, lpReserved)
+typedef struct _TT_HITTESTINFOA {
+	HWND hwnd;
+	POINT pt;
+	TOOLINFOA ti;
+} TTHITTESTINFOA,*LPTTHITTESTINFOA;
+#define LPHITTESTINFOA    LPTTHITTESTINFOA
+typedef struct _TT_HITTESTINFOW {
+	HWND hwnd;
+	POINT pt;
+	TOOLINFOW ti;
+} TTHITTESTINFOW,*LPTTHITTESTINFOW;
+#define LPHITTESTINFOW    LPTTHITTESTINFOW
+typedef struct tagNMTTDISPINFOA {
+	NMHDR hdr;
+	LPSTR lpszText;
+	char szText[80];
+	HINSTANCE hinst;
+	UINT uFlags;
+#if (_WIN32_IE >= 0x0300)
+	LPARAM lParam;
+#endif
+} NMTTDISPINFOA, *LPNMTTDISPINFOA;
+#define TOOLTIPTEXTA	NMTTDISPINFOA
+#define LPTOOLTIPTEXTA	LPNMTTDISPINFOA
+typedef struct tagNMTTDISPINFOW {
+ 	NMHDR hdr;
+ 	LPWSTR lpszText;
+ 	WCHAR szText[80];
+ 	HINSTANCE hinst;
+ 	UINT uFlags;
+#if (_WIN32_IE >= 0x0300)
+	LPARAM lParam;
+#endif
+} NMTTDISPINFOW, *LPNMTTDISPINFOW;
+#define TOOLTIPTEXTW	NMTTDISPINFOW
+#define LPTOOLTIPTEXTW	LPNMTTDISPINFOW
+typedef struct _UDACCEL {
+	UINT nSec;
+	UINT nInc;
+} UDACCEL,*LPUDACCEL;
+typedef struct _NM_UPDOWN {
+	NMHDR hdr;
+	int iPos;
+	int iDelta;
+} NMUPDOWN,*LPNMUPDOWN;
+/* for backward compatibility */
+#define NM_UPDOWN NMUPDOWN
+#define LPNM_UPDOWN LPNMUPDOWN
+typedef struct _LVITEMA {
+	UINT mask;
+	int iItem;
+	int iSubItem;
+	UINT state;
+	UINT stateMask;
+	LPSTR pszText;
+	int cchTextMax;
+	int iImage;
+	LPARAM lParam;
+#if (_WIN32_IE >= 0x0300)
+	int iIndent;
+#endif
+#if (_WIN32_WINNT >= 0x0501)
+	int iGroupId;
+	UINT cColumns;
+	PUINT puColumns;
+#endif
+} LVITEMA, FAR *LPLVITEMA;
+#define _LV_ITEMA _LVITEMA
+#define LV_ITEMA LVITEMA
+typedef struct _LVITEMW {
+	UINT mask;
+	int iItem;
+	int iSubItem;
+	UINT state;
+	UINT stateMask;
+	LPWSTR pszText;
+	int cchTextMax;
+	int iImage;
+	LPARAM lParam;
+#if (_WIN32_IE >= 0x0300)
+	int iIndent;
+#endif
+#if (_WIN32_WINNT >= 0x0501)
+	int iGroupId;
+	UINT cColumns;
+	PUINT puColumns;
+#endif
+} LVITEMW, FAR *LPLVITEMW;
+#define _LV_ITEMW _LVITEMW
+#define LV_ITEMW LVITEMW
+typedef struct tagLVFINDINFOA {
+	UINT flags;
+	LPCSTR psz;
+	LPARAM lParam;
+	POINT pt;
+	UINT vkDirection;
+} LVFINDINFOA, FAR* LPFINDINFOA;
+#define _LV_FINDINFOA tagLVFINDINFOA
+#define LV_FINDINFOA LVFINDINFOA
+typedef struct tagLVFINDINFOW {
+	UINT flags;
+	LPCWSTR psz;
+	LPARAM lParam;
+	POINT pt;
+	UINT vkDirection;
+} LVFINDINFOW, FAR* LPFINDINFOW;
+#define _LV_FINDINFOW tagLVFINDINFOW
+#define LV_FINDINFOW LVFINDINFOW
+typedef struct tagNMLVFINDITEMA {
+	NMHDR hdr;
+	int iStart;
+	LVFINDINFOA lvfi;
+} NMLVFINDITEMA, *PNMLVFINDITEMA, FAR *LPNMLVFINDITEMA;
+#define _NMLVFINDITEMA tagNMLVFINDITEMA
+typedef struct tagNMLVFINDITEMW {
+	NMHDR hdr;
+	int iStart;
+	LVFINDINFOW lvfi;
+} NMLVFINDITEMW, *PNMLVFINDITEMW, FAR *LPNMLVFINDITEMW;
+#define _NMLVFINDITEMW tagNMLVFINDITEMW
+typedef struct _LVHITTESTINFO {
+	POINT pt;
+	UINT flags;
+	int iItem;
+#if (_WIN32_IE >= 0x0300)
+	int iSubItem;
+#endif
+} LVHITTESTINFO, FAR *LPLVHITTESTINFO;
+#define _LV_HITTESTINFO _LVHITTESTINFO
+#define LV_HITTESTINFO LVHITTESTINFO
+typedef struct _LVCOLUMNA {
+	UINT mask;
+	int fmt;
+	int cx;
+	LPSTR pszText;
+	int cchTextMax;
+	int iSubItem;
+#if (_WIN32_IE >= 0x0300)
+	int iImage;
+	int iOrder;
+#endif
+} LVCOLUMNA, FAR *LPLVCOLUMNA;
+#define _LV_COLUMNA _LVCOLUMNA
+#define LV_COLUMNA LVCOLUMNA
+typedef struct _LVCOLUMNW {
+	UINT mask;
+	int fmt;
+	int cx;
+	LPWSTR pszText;
+	int cchTextMax;
+	int iSubItem;
+#if (_WIN32_IE >= 0x0300)
+	int iImage;
+	int iOrder;
+#endif
+} LVCOLUMNW, FAR *LPLVCOLUMNW;
+#define _LV_COLUMNW _LVCOLUMNW
+#define LV_COLUMNW LVCOLUMNW
+typedef int(CALLBACK *PFNLVCOMPARE)(LPARAM,LPARAM,LPARAM);
+typedef struct tagNMLISTVIEW {
+	NMHDR hdr;
+	int iItem;
+	int iSubItem;
+	UINT uNewState;
+	UINT uOldState;
+	UINT uChanged;
+	POINT ptAction;
+	LPARAM lParam;
+} NMLISTVIEW, *LPNMLISTVIEW;
+/* for backward compatibility */
+#define _NM_LISTVIEW  tagNMLISTVIEW
+#define NM_LISTVIEW NMLISTVIEW
+#define LPNM_LISTVIEW LPNMLISTVIEW
+typedef struct tagNMLVDISPINFOA {
+	NMHDR hdr;
+	LV_ITEMA item;
+} NMLVDISPINFOA, FAR *LPNMLVDISPINFOA;
+#define _LV_DISPINFOA tagNMLVDISPINFOA
+#define LV_DISPINFOA NMLVDISPINFOA
+typedef struct tagNMLVDISPINFOW {
+	NMHDR hdr;
+	LV_ITEMW item;
+} NMLVDISPINFOW, FAR *LPNMLVDISPINFOW;
+#define _LV_DISPINFOW tagNMLVDISPINFOW
+#define LV_DISPINFOW NMLVDISPINFOW
+typedef struct _LV_KEYDOWN {
+	NMHDR hdr;
+	WORD wVKey;
+	UINT flags;
+} LV_KEYDOWN;
+typedef struct tagNMLVCACHEHINT {
+	NMHDR hdr;
+	int iFrom;
+	int iTo;
+} NMLVCACHEHINT, *LPNMLVCACHEHINT;
+#define NM_CACHEHINT NMLVCACHEHINT
+#define PNM_CACHEHINT LPNMLVCACHEHINT
+#define LPNM_CACHEHINT LPNMLVCACHEHINT
+
+typedef struct _TREEITEM *HTREEITEM;
+typedef struct tagTVITEMA {
+	UINT mask;
+	HTREEITEM hItem;
+	UINT state;
+	UINT stateMask;
+	LPSTR pszText;
+	int cchTextMax;
+	int iImage;
+	int iSelectedImage;
+	int cChildren;
+	LPARAM lParam;
+} TVITEMA,*LPTVITEMA;
+#define _TV_ITEMA tagTVITEMA
+#define TV_ITEMA TVITEMA
+#define LPTV_ITEMA LPTVITEMA
+typedef struct tagTVITEMW {
+	UINT mask;
+	HTREEITEM hItem;
+	UINT state;
+	UINT stateMask;
+	LPWSTR pszText;
+	int cchTextMax;
+	int iImage;
+	int iSelectedImage;
+	int cChildren;
+	LPARAM lParam;
+} TVITEMW,*LPTVITEMW;
+#define _TV_ITEMW tagTVITEMW
+#define TV_ITEMW TVITEMW
+#define LPTV_ITEMW LPTVITEMW
+#if (_WIN32_IE >= 0x0400)
+typedef struct tagTVITEMEXA {
+	UINT mask;
+	HTREEITEM hItem;
+	UINT state;
+	UINT stateMask;
+	LPSTR pszText;
+	int cchTextMax;
+	int iImage;
+	int iSelectedImage;
+	int cChildren;
+	LPARAM lParam;
+	int iIntegral;
+} TVITEMEXA, *LPTVITEMEXA;
+typedef struct tagTVITEMEXW {
+	UINT mask;
+	HTREEITEM hItem;
+	UINT state;
+	UINT stateMask;
+	LPWSTR pszText;
+	int cchTextMax;
+	int iImage;
+	int iSelectedImage;
+	int cChildren;
+	LPARAM lParam;
+	int iIntegral;
+} TVITEMEXW, *LPTVITEMEXW;
+#endif /* _WIN32_IE >= 0x0400 */
+typedef struct tagTVINSERTSTRUCTA {
+	HTREEITEM hParent;
+	HTREEITEM hInsertAfter;
+#if (_WIN32_IE >= 0x0400)
+	_ANONYMOUS_UNION union {
+	TVITEMEXA itemex;
+	TV_ITEMA item;
+	} DUMMYUNIONNAME;
+#else
+	TV_ITEMA item;
+#endif
+} TVINSERTSTRUCTA,*LPTVINSERTSTRUCTA;
+#define _TV_INSERTSTRUCTA tagTVINSERTSTRUCTA
+#define TV_INSERTSTRUCTA TVINSERTSTRUCTA
+#define LPTV_INSERTSTRUCTA LPTVINSERTSTRUCTA
+typedef struct tagTVINSERTSTRUCTW {
+	HTREEITEM hParent;
+	HTREEITEM hInsertAfter;
+#if (_WIN32_IE >= 0x0400)
+	_ANONYMOUS_UNION union {
+	  TVITEMEXW itemex;
+	  TV_ITEMW  item;
+	} DUMMYUNIONNAME;
+#else
+	TV_ITEMW item;
+#endif
+} TVINSERTSTRUCTW,*LPTVINSERTSTRUCTW;
+#define _TV_INSERTSTRUCTW tagTVINSERTSTRUCTW
+#define TV_INSERTSTRUCTW TVINSERTSTRUCTW
+#define LPTV_INSERTSTRUCTW LPTVINSERTSTRUCTW
+typedef struct tagTVHITTESTINFO {
+	POINT pt;
+ 	UINT flags;
+	HTREEITEM hItem;
+} TVHITTESTINFO, *LPTVHITTESTINFO;
+#define _TV_HITTESTINFO tagTVHITTESTINFO
+#define TV_HITTESTINFO TVHITTESTINFO
+#define LPTV_HITTESTINFO LPTVHITTESTINFO
+typedef int(CALLBACK *PFNTVCOMPARE)(LPARAM,LPARAM,LPARAM);
+typedef struct tagTVSORTCB {
+	HTREEITEM hParent;
+	PFNTVCOMPARE lpfnCompare;
+	LPARAM lParam;
+} TVSORTCB,*LPTVSORTCB;
+#define _TV_SORTCB tagTVSORTCB
+#define TV_SORTCB TVSORTCB
+#define LPTV_SORTCB LPTVSORTCB
+typedef struct tagNMTREEVIEWA {
+	NMHDR hdr;
+	UINT action;
+	TV_ITEMA itemOld;
+	TV_ITEMA itemNew;
+	POINT ptDrag;
+} NMTREEVIEWA,*LPNMTREEVIEWA;
+#define _NM_TREEVIEWA tagNMTREEVIEWA
+#define NM_TREEVIEWA NMTREEVIEWA
+#define LPNM_TREEVIEWA LPNMTREEVIEWA
+typedef struct tagNMTREEVIEWW {
+	NMHDR hdr;
+	UINT action;
+	TV_ITEMW itemOld;
+	TV_ITEMW itemNew;
+	POINT ptDrag;
+} NMTREEVIEWW,*LPNMTREEVIEWW;
+#define _NM_TREEVIEWW tagNMTREEVIEWW
+#define NM_TREEVIEWW NMTREEVIEWW
+#define LPNM_TREEVIEWW LPNMTREEVIEWW
+typedef struct tagNMTVDISPINFOA {
+	NMHDR hdr;
+	TVITEMA item;
+} NMTVDISPINFOA, *LPNMTVDISPINFOA;
+#define _TV_DISPINFOA tagNMTVDISPINFOA
+#define TV_DISPINFOA NMTVDISPINFOA
+typedef struct tagNMTVDISPINFOW {
+	NMHDR hdr;
+	TVITEMW item;
+} NMTVDISPINFOW, *LPNMTVDISPINFOW;
+#define _TV_DISPINFOW tagNMTVDISPINFOW
+#define TV_DISPINFOW NMTVDISPINFOW
+#if (_WIN32_IE >= 0x0400)
+typedef struct tagNMTVGETINFOTIPA {
+	NMHDR hdr;
+	LPSTR pszText;
+	int cchTextMax;
+	HTREEITEM hItem;
+	LPARAM lParam;
+} NMTVGETINFOTIPA, *LPNMTVGETINFOTIPA;
+typedef struct tagNMTVGETINFOTIPW {
+	NMHDR hdr;
+	LPWSTR pszText;
+	int cchTextMax;
+	HTREEITEM hItem;
+	LPARAM lParam;
+} NMTVGETINFOTIPW, *LPNMTVGETINFOTIPW;
+#endif
+typedef struct _TV_KEYDOWN {
+	NMHDR hdr;
+	WORD wVKey;
+	UINT flags;
+} TV_KEYDOWN;
+typedef struct tagTCITEMHEADERA {
+	UINT mask;
+	UINT lpReserved1;
+	UINT lpReserved2;
+	LPSTR pszText;
+	int cchTextMax;
+	int iImage;
+} TCITEMHEADERA, *LPTCITEMHEADERA;
+#define TC_ITEMHEADERA TCITEMHEADERA
+typedef struct tagTCITEMHEADERW {
+	UINT mask;
+	UINT lpReserved1;
+	UINT lpReserved2;
+	LPWSTR pszText;
+	int cchTextMax;
+	int iImage;
+} TCITEMHEADERW, *LPTCITEMHEADERW;
+#define TC_ITEMHEADERW TCITEMHEADERW
+typedef struct tagTCITEMA {
+	UINT mask;
+#if (_WIN32_IE >= 0x0300)
+	DWORD dwState;
+	DWORD dwStateMask;
+#else
+ 	UINT lpReserved1;
+ 	UINT lpReserved2;
+#endif
+	LPSTR pszText;
+	int cchTextMax;
+	int iImage;
+	LPARAM lParam;
+} TCITEMA, *LPTCITEMA;
+#define TC_ITEMA TCITEMA
+typedef struct tagTCITEMW {
+	UINT mask;
+#if (_WIN32_IE >= 0x0300)
+	DWORD dwState;
+	DWORD dwStateMask;
+#else
+ 	UINT lpReserved1;
+ 	UINT lpReserved2;
+#endif
+	LPWSTR pszText;
+	int cchTextMax;
+	int iImage;
+	LPARAM lParam;
+} TCITEMW, *LPTCITEMW;
+#define TC_ITEMW TCITEMW
+typedef struct tagTCHITTESTINFO {
+	POINT pt;
+	UINT flags;
+} TCHITTESTINFO, *LPTCHITTESTINFO;
+#define TC_HITTESTINFO TCHITTESTINFO
+#define LPTC_HITTESTINFO LPTCHITTESTINFO
+typedef struct _TC_KEYDOWN {
+	NMHDR hdr;
+	WORD wVKey;
+	UINT flags;
+} TC_KEYDOWN;
+#if (_WIN32_IE >= 0x0300)
+typedef struct tagINITCOMMONCONTROLSEX {
+	DWORD dwSize;
+	DWORD dwICC;
+} INITCOMMONCONTROLSEX,*LPINITCOMMONCONTROLSEX;
+#endif
+typedef struct tagPBRANGE {
+	int iLow;
+	int iHigh;
+} PBRANGE,*PPBRANGE;
+typedef struct tagCOLORSCHEME {
+	DWORD dwSize;
+	COLORREF clrBtnHighlight;
+	COLORREF clrBtnShadow;
+} COLORSCHEME,*LPCOLORSCHEME;
+typedef struct tagMCHITTESTINFO {
+	UINT cbSize;
+	POINT pt;
+	UINT uHit;
+	SYSTEMTIME st;
+}MCHITTESTINFO, *PMCHITTESTINFO;
+typedef DWORD MONTHDAYSTATE;
+typedef MONTHDAYSTATE *LPMONTHDAYSTATE;
+typedef struct tagNMDAYSTATE {
+	NMHDR nmhdr;
+	SYSTEMTIME stStart;
+	int cDayState;
+	LPMONTHDAYSTATE prgDayState;
+}NMDAYSTATE,*LPNMDAYSTATE;
+typedef struct tagREBARINFO {
+	UINT cbSize;
+	UINT fMask;
+	HIMAGELIST himl;
+} REBARINFO,*LPREBARINFO;
+typedef struct tagREBARBANDINFOA {
+	UINT cbSize;
+	UINT fMask;
+	UINT fStyle;
+	COLORREF clrFore;
+	COLORREF clrBack;
+	LPSTR lpText;
+	UINT cch;
+	int iImage;
+	HWND hwndChild;
+	UINT cxMinChild;
+	UINT cyMinChild;
+	UINT cx;
+	HBITMAP hbmBack;
+	UINT wID;
+#if (_WIN32_IE >= 0x0400)
+	UINT cyChild;
+	UINT cyMaxChild;
+	UINT cyIntegral;
+	UINT cxIdeal;
+	LPARAM lParam;
+	UINT cxHeader;
+#endif
+} REBARBANDINFOA,*LPREBARBANDINFOA;
+typedef struct tagREBARBANDINFOW {
+	UINT cbSize;
+	UINT fMask;
+	UINT fStyle;
+	COLORREF clrFore;
+	COLORREF clrBack;
+	LPWSTR lpText;
+	UINT cch;
+	int iImage;
+	HWND hwndChild;
+	UINT cxMinChild;
+	UINT cyMinChild;
+	UINT cx;
+	HBITMAP hbmBack;
+	UINT wID;
+#if (_WIN32_IE >= 0x0400)
+	UINT cyChild;
+	UINT cyMaxChild;
+	UINT cyIntegral;
+	UINT cxIdeal;
+	LPARAM lParam;
+	UINT cxHeader;
+#endif
+} REBARBANDINFOW,*LPREBARBANDINFOW;
+typedef REBARBANDINFOA const *LPCREBARBANDINFOA;
+typedef REBARBANDINFOW const *LPCREBARBANDINFOW;
+#define REBARBANDINFOA_V3_SIZE CCSIZEOF_STRUCT(REBARBANDINFOA,wID)
+#define REBARBANDINFOW_V3_SIZE CCSIZEOF_STRUCT(REBARBANDINFOW, wID)
+#if (_WIN32_IE >= 0x0300)
+typedef struct tagNMLVODSTATECHANGE {
+  NMHDR hdr;
+  int iFrom;
+  int iTo;
+  UINT uNewState;
+  UINT uOldState;
+} NMLVODSTATECHANGE, *LPNMLVODSTATECHANGE;
+typedef struct tagIMAGELISTDRAWPARAMS {
+	DWORD cbSize;
+	HIMAGELIST himl;
+	int i;
+	HDC hdcDst;
+	int x;
+	int y;
+	int cx;
+	int cy;
+	int xBitmap;
+	int yBitmap;
+	COLORREF rgbBk;
+	COLORREF rgbFg;
+	UINT fStyle;
+	DWORD dwRop;
+#if (_WIN32_WINNT >= 0x0501)
+	DWORD fState;
+	DWORD Frame;
+	COLORREF crEffect;
+#endif
+} IMAGELISTDRAWPARAMS,*LPIMAGELISTDRAWPARAMS;
+#endif /* (_WIN32_IE >= 0x0300) */
+#if (_WIN32_IE >= 0x0400)
+typedef struct tagNMREBARCHILDSIZE {
+	NMHDR hdr;
+	UINT uBand;
+	UINT wID;
+	RECT rcChild;
+	RECT rcBand;
+} NMREBARCHILDSIZE,*LPNMREBARCHILDSIZE;
+typedef struct tagNMREBAR {
+	NMHDR hdr;
+	DWORD dwMask;
+	UINT uBand;
+	UINT fStyle;
+	UINT wID;
+	LPARAM lParam;
+} NMREBAR,*LPNMREBAR;
+typedef struct tagNMRBAUTOSIZE {
+	NMHDR hdr;
+	BOOL fChanged;
+	RECT rcTarget;
+	RECT rcActual;
+} NMRBAUTOSIZE,*LPNMRBAUTOSIZE;
+#if (_WIN32_IE >= 0x0500)
+typedef struct tagNMREBARCHEVRON {
+	NMHDR hdr;
+	UINT uBand;
+	UINT wID;
+	LPARAM lParam;
+	RECT rc;
+	LPARAM lParamNM;
+} NMREBARCHEVRON, *LPNMREBARCHEVRON;
+#endif
+typedef struct _RB_HITTESTINFO {
+	POINT pt;
+	UINT flags;
+	int iBand;
+} RBHITTESTINFO,*LPRBHITTESTINFO;
+#endif
+typedef struct _DSA *HDSA;
+typedef struct _DPA *HDPA;
+typedef INT (CALLBACK *PFNDPAENUMCALLBACK)(PVOID,PVOID);
+typedef INT (CALLBACK *PFNDSAENUMCALLBACK)(PVOID,PVOID);
+typedef INT (CALLBACK *PFNDPACOMPARE)(PVOID,PVOID,LPARAM);
+#if (_WIN32_WINNT >= 0x0501)
+typedef LRESULT (CALLBACK *SUBCLASSPROC)(HWND,UINT,WPARAM,LPARAM,UINT_PTR,DWORD_PTR);
+typedef struct tagLITEM {
+	UINT mask;
+	int iLink;
+	UINT state;
+	UINT stateMask;
+	WCHAR szID[MAX_LINKID_TEXT];
+	WCHAR szUrl[L_MAX_URL_LENGTH];
+} LITEM,*PLITEM;
+typedef struct tagLHITTESTINFO {
+	POINT pt;
+	LITEM item;
+} LHITTESTINFO,*PLHITTESTINFO;
+typedef struct tagNMLINK {
+	NMHDR hdr;
+	LITEM item;
+} NMLINK,*PNMLINK;
+#endif /* _WIN32_WINNT >= 0x0501 */
+
+#define INDEXTOOVERLAYMASK(i) ((i)<<8)
+#define INDEXTOSTATEIMAGEMASK(i) ((i)<<12)
+#define HANDLE_WM_NOTIFY(h,w,l,f) (f)((h),(int)(w),(NMHDR*)(l))
+#define FORWARD_WM_NOTIFY(h,i,p,f) (LRESULT)(f)((h),WM_NOTIFY,(WPARAM)(int)(i),(LPARAM)(NMHDR*)(p))
+#define CCSIZEOF_STRUCT(s,m) (((int)((PBYTE)(&((s*)0)->m)-((PBYTE)((s*)0))))+sizeof(((s*)0)->m))
+#define MAKEIPADDRESS(b1,b2,b3,b4) ((LPARAM)(((DWORD)(b1)<<24)+((DWORD)(b2)<<16)+((DWORD)(b3)<<8)+((DWORD)(b4))))
+#define MAKEIPRANGE(low,high) ((LPARAM)(WORD)(((BYTE)(high)<<8)+(BYTE)(low)))
+#define FIRST_IPADDRESS(a) ((a>>24) & 0xff)
+#define SECOND_IPADDRESS(a) ((a>>16) & 0xff)
+#define THIRD_IPADDRESS(a)  ((a>>8) & 0xff)
+#define FOURTH_IPADDRESS(a) (a & 0xff)
+#define Animate_Create(w,i,s,hI) CreateWindow(ANIMATE_CLASS,NULL,s,0,0,0,0,w,(HMENU)(i),hI,NULL)
+#define Animate_Open(w,f) (BOOL)SNDMSG(w,ACM_OPEN,0,(LPARAM)f)
+#define Animate_OpenEx(w,h,s) (BOOL)SNDMSG(w,ACM_OPEN,(WPARAM)h,(LPARAM)(LPTSTR)(s))
+#define Animate_Play(w,f,t,r) (BOOL)SNDMSG(w,ACM_PLAY,(r),(LPARAM)MAKELONG(f,t))
+#define Animate_Stop(w)	(BOOL)SNDMSG(w,ACM_STOP,0,0)
+#define Animate_Close(w)	Animate_Open(w,NULL)
+#define Animate_Seek(w,f)	Animate_Play(w,f,f,1)
+HBITMAP WINAPI CreateMappedBitmap(HINSTANCE,int,UINT,LPCOLORMAP,int);
+HWND WINAPI CreateStatusWindowA(LONG,LPCSTR,HWND,UINT);
+HWND WINAPI CreateStatusWindowW(LONG,LPCWSTR,HWND,UINT);
+HWND WINAPI CreateToolbarEx(HWND,DWORD,UINT,int,HINSTANCE,UINT,LPCTBBUTTON,int,int,int,int,int,UINT);
+HWND WINAPI CreateUpDownControl(DWORD,int,int,int,int,HWND,int,HINSTANCE,HWND,int,int,int);
+#define DateTime_GetMonthCal(hwnd) SNDMSG(hwnd, DTM_GETMONTHCAL, 0, 0)
+#define DateTime_GetMonthCalColor(hwnd, icolor) SNDMSG(hwnd, DTM_GETMONTHCAL, (WPARAM)icolor,0)
+#define DateTime_GetMonthCalFont(hwnd) SNDMSG(hwnd,DTM_GETMCFONT,0,0)
+#define DateTime_GetRange(hwnd,lpsystimearray) SNDMSG(hwnd,DTM_GETRANGE,0,(LPARAM)lpsystimearray)
+#define DateTime_GetSystemtime(hwnd,lpsystime) SNDMSG(hwnd,DTM_GETSYSTEMTIME,0,(LPARAM)lpsystime)
+#define DateTime_SetFormat(hwnd,lpszformat) SNDMSG(hwnd,DTM_SETFORMAT,0,(LPARAM)lpszformat)
+#define DateTime_SetMonthCalColor(hwnd,icolor,clr) SNDMSG(hwnd,DTM_SETMCCOLOR,(WPARAM)icolor,(LPARAM)clr)
+#define DateTime_SetMonthCalFont(hwnd,hfont,lparam) SNDMSG(hwnd,DTM_SETMCFONT,(WPARAM)hfont,(LPARAM)lparam)
+#define DateTime_SetRange(hwnd,flags,lpsystimearray) SNDMSG(hwnd,DTM_SETRANGE,(WPARAM)flags,(LPARAM)lpsystimearray)
+#define DateTime_SetSystemtime(hwnd,flag,lpsystime) SNDMSG(hwnd,DTM_SETSYSTEMTIME,(WPARAM)flag,(LPARAM)lpsystime)
+void WINAPI DrawInsert(HWND,HWND,int);
+void WINAPI DrawStatusTextA(HDC,LPRECT,LPCSTR,UINT);
+void WINAPI DrawStatusTextW(HDC,LPRECT,LPCWSTR,UINT);
+void WINAPI GetEffectiveClientRect(HWND,LPRECT,LPINT);
+#if (_WIN32_IE >= 0x0500)
+LANGID WINAPI GetMUILanguage(VOID);
+#endif
+#define Header_GetItemCount(w) (int)SNDMSG((w),HDM_GETITEMCOUNT,0,0)
+#define Header_InsertItem(w,i,phdi) (int)SNDMSG((w),HDM_INSERTITEM,(WPARAM)(int)(i),(LPARAM)(const HD_ITEM*)(phdi))
+#define Header_DeleteItem(w,i) (BOOL)SNDMSG((w),HDM_DELETEITEM,(WPARAM)(int)(i),0)
+#define Header_GetItem(w,i,phdi) (BOOL)SNDMSG((w),HDM_GETITEM,(WPARAM)(int)(i),(LPARAM)(HD_ITEM*)(phdi))
+#define Header_SetItem(w,i,phdi) (BOOL)SNDMSG((w),HDM_SETITEM,(WPARAM)(int)(i),(LPARAM)(const HD_ITEM*)(phdi))
+#define Header_Layout(w,l) (BOOL)SNDMSG((w),HDM_LAYOUT,0,(LPARAM)(HD_LAYOUT*)(l))
+#if (_WIN32_IE >= 0x0300)
+#define Header_OrderToIndex(w,o) (int)SNDMSG((w),HDM_ORDERTOINDEX,(WPARAM)(o),0)
+#define Header_GetItemRect(w,i,r) (BOOL)SNDMSG((w),HDM_GETITEMRECT,(WPARAM)(i),(LPARAM)(r))
+#define Header_GetOrderArray(w,l,a) (BOOL)SNDMSG((w),HDM_GETORDERARRAY,(WPARAM)(l),(LPARAM)(a))
+#define Header_SetOrderArray(w,l,a) (BOOL)SNDMSG((w),HDM_SETORDERARRAY,(WPARAM)(l),(LPARAM)(a))
+#define Header_CreateDragImage(w, i) (HIMAGELIST)SNDMSG((w), HDM_CREATEDRAGIMAGE, (WPARAM)i, 0)
+#define Header_SetImageList(w,l) (HIMAGELIST)SNDMSG((w), HDM_SETIMAGELIST, 0, (LPARAM)l)
+#define Header_GetImageList(w) (HIMAGELIST)SNDMSG((w),HDM_GETIMAGELIST,0,0)
+#endif
+#if (_WIN32_IE >= 0x0400)
+#define Header_GetUnicodeFormat(w) (BOOL)SNDMSG((w),HDM_GETUNICODEFORMAT,0,0)
+#define Header_SetUnicodeFormat(w,f) (BOOL)SNDMSG((w),HDM_SETUNICODEFORMAT,(WPARAM)(f),0)
+#endif
+HDSA WINAPI DSA_Create(INT,INT);
+BOOL WINAPI DSA_Destroy(HDSA);
+VOID WINAPI DSA_DestroyCallback(HDSA,PFNDSAENUMCALLBACK,PVOID);
+PVOID WINAPI DSA_GetItemPtr(HDSA,INT);
+INT WINAPI DSA_InsertItem(HDSA,INT,PVOID);
+HDPA WINAPI DPA_Create(INT);
+BOOL WINAPI DPA_Destroy(HDPA);
+PVOID WINAPI DPA_DeletePtr(HDPA,INT);
+BOOL WINAPI DPA_DeleteAllPtrs(HDPA);
+VOID WINAPI DPA_EnumCallback(HDPA,PFNDPAENUMCALLBACK,PVOID);
+VOID WINAPI DPA_DestroyCallback(HDPA,PFNDPAENUMCALLBACK,PVOID);
+BOOL WINAPI DPA_SetPtr(HDPA,INT,PVOID);
+INT WINAPI DPA_InsertPtr(HDPA,INT,PVOID);
+PVOID WINAPI DPA_GetPtr(HDPA,INT_PTR);
+BOOL WINAPI DPA_Sort(HDPA,PFNDPACOMPARE,LPARAM);
+INT WINAPI DPA_Search(HDPA,PVOID,INT,PFNDPACOMPARE,LPARAM,UINT);
+BOOL WINAPI Str_SetPtrW(LPWSTR*,LPCWSTR);
+#if (_WIN32_IE >= 0x0400)
+BOOL WINAPI FlatSB_EnableScrollBar(HWND,INT,UINT);
+BOOL WINAPI FlatSB_ShowScrollBar(HWND,INT,BOOL);
+BOOL WINAPI FlatSB_GetScrollRange(HWND,INT,LPINT,LPINT);
+BOOL WINAPI FlatSB_GetScrollInfo(HWND,INT,LPSCROLLINFO);
+INT WINAPI FlatSB_GetScrollPos(HWND,INT);
+BOOL WINAPI FlatSB_GetScrollProp(HWND,INT,LPINT);
+#ifdef _WIN64
+BOOL WINAPI FlatSB_GetScrollPropPtr(HWND,INT,PINT_PTR);
+#else
+#define FlatSB_GetScrollPropPtr FlatSB_GetScrollProp
+#endif
+INT WINAPI FlatSB_SetScrollPos(HWND,INT,INT,BOOL);
+INT WINAPI FlatSB_SetScrollInfo(HWND,INT,LPSCROLLINFO,BOOL);
+INT WINAPI FlatSB_SetScrollRange(HWND,INT,INT,INT,BOOL);
+BOOL WINAPI FlatSB_SetScrollProp(HWND,UINT,INT_PTR,BOOL);
+#define FlatSB_SetScrollPropPtr FlatSB_SetScrollProp
+BOOL WINAPI InitializeFlatSB(HWND);
+HRESULT WINAPI UninitializeFlatSB(HWND);
+#endif /* _WIN32_IE >= 0x0400 */
+#if (_WIN32_WINNT >= 0x0501)
+BOOL WINAPI SetWindowSubclass(HWND,SUBCLASSPROC,UINT_PTR,DWORD_PTR);
+BOOL WINAPI GetWindowSubclass(HWND,SUBCLASSPROC,UINT_PTR,DWORD_PTR*);
+BOOL WINAPI RemoveWindowSubclass(HWND,SUBCLASSPROC,UINT_PTR);
+LRESULT WINAPI DefSubclassProc(HWND,UINT,WPARAM,LPARAM);
+INT WINAPI DrawShadowText(HDC,LPCWSTR,UINT,RECT*,DWORD,COLORREF,COLORREF,INT,INT);
+#endif /* _WIN32_WINNT >= 0x0501 */
+int WINAPI ImageList_Add(HIMAGELIST,HBITMAP,HBITMAP);
+#define ImageList_AddIcon(l,i) ImageList_ReplaceIcon(l,-1,i)
+int WINAPI ImageList_AddMasked(HIMAGELIST,HBITMAP,COLORREF);
+BOOL WINAPI ImageList_BeginDrag(HIMAGELIST,int,int,int);
+HIMAGELIST WINAPI ImageList_Create(int,int,UINT,int,int);
+BOOL WINAPI ImageList_Destroy(HIMAGELIST);
+BOOL WINAPI ImageList_DragEnter(HWND,int,int);
+BOOL WINAPI ImageList_DragLeave(HWND);
+BOOL WINAPI ImageList_DragMove(int,int);
+BOOL WINAPI ImageList_DragShowNolock(BOOL);
+BOOL WINAPI ImageList_Draw(HIMAGELIST,int,HDC,int,int,UINT);
+BOOL WINAPI ImageList_DrawEx(HIMAGELIST,int,HDC,int,int,int,int,COLORREF,COLORREF,UINT);
+void WINAPI ImageList_EndDrag(VOID);
+#define ImageList_ExtractIcon(h,l,i) ImageList_GetIcon(l,i,0)
+COLORREF WINAPI ImageList_GetBkColor(HIMAGELIST);
+HIMAGELIST WINAPI ImageList_GetDragImage(LPPOINT,LPPOINT);
+HICON WINAPI ImageList_GetIcon(HIMAGELIST,int,UINT);
+BOOL WINAPI ImageList_GetIconSize(HIMAGELIST,int*,int*);
+int WINAPI ImageList_GetImageCount(HIMAGELIST);
+BOOL WINAPI ImageList_GetImageInfo(HIMAGELIST,int,IMAGEINFO*);
+#define ImageList_LoadBitmap(h,l,x,G,M) ImageList_LoadImage(h,l,x,G,M,IMAGE_BITMAP,0)
+HIMAGELIST WINAPI ImageList_LoadImageA(HINSTANCE,LPCSTR,int,int,COLORREF,UINT,UINT);
+HIMAGELIST WINAPI ImageList_LoadImageW(HINSTANCE,LPCWSTR,int,int,COLORREF,UINT,UINT);
+HIMAGELIST WINAPI ImageList_Merge(HIMAGELIST,int,HIMAGELIST,int,int,int);
+BOOL WINAPI ImageList_Remove(HIMAGELIST,int);
+#define ImageList_RemoveAll(l) ImageList_Remove(l,-1)
+BOOL WINAPI ImageList_Replace(HIMAGELIST,int,HBITMAP,HBITMAP);
+int WINAPI ImageList_ReplaceIcon(HIMAGELIST,int,HICON);
+COLORREF WINAPI ImageList_SetBkColor(HIMAGELIST,COLORREF);
+BOOL WINAPI ImageList_SetDragCursorImage(HIMAGELIST,int,int,int);
+BOOL WINAPI ImageList_SetIconSize(HIMAGELIST,int,int);
+BOOL WINAPI ImageList_SetOverlayImage(HIMAGELIST,int,int);
+#ifdef _OBJIDL_H
+HIMAGELIST WINAPI ImageList_Read(LPSTREAM);
+BOOL WINAPI ImageList_Write(HIMAGELIST,LPSTREAM);
+#endif
+#if (_WIN32_IE >= 0x0400)
+HIMAGELIST WINAPI ImageList_Duplicate(HIMAGELIST himl);
+#endif
+void WINAPI InitCommonControls(void);
+#if (_WIN32_IE >= 0x0300)
+BOOL WINAPI InitCommonControlsEx(LPINITCOMMONCONTROLSEX);
+#endif
+#if (_WIN32_IE >= 0x0500)
+VOID WINAPI InitMUILanguage(LANGID);
+#endif
+int WINAPI LBItemFromPt(HWND,POINT,BOOL);
+#define ListView_GetBkColor(w) (COLORREF)SNDMSG((w),LVM_GETBKCOLOR,0,0)
+#define ListView_GetImageList(w,i) (HIMAGELIST)SNDMSG((w),LVM_GETIMAGELIST,(i),0)
+#define ListView_GetItemCount(w) (int)SNDMSG((w),LVM_GETITEMCOUNT,0,0)
+#define ListView_GetItem(w,i) (BOOL)SNDMSG((w),LVM_GETITEM,0,(LPARAM)(i))
+#define ListView_SetBkColor(w,c) (BOOL)SNDMSG((w),LVM_SETBKCOLOR,0,(LPARAM)c)
+#define ListView_SetImageList(w,h,i) (HIMAGELIST)(UINT)SNDMSG((w),LVM_SETIMAGELIST,(i),(LPARAM)(h))
+#define ListView_SetItem(w,i) (BOOL)SNDMSG((w),LVM_SETITEM,0,(LPARAM)(const LV_ITEM*)(i))
+#define ListView_InsertItem(w,i) (int)SNDMSG((w),LVM_INSERTITEM,0,(LPARAM)(const LV_ITEM*)(i))
+#define ListView_DeleteItem(w,i) (BOOL)SNDMSG((w),LVM_DELETEITEM,i,0)
+#define ListView_DeleteAllItems(w) (BOOL)SNDMSG((w),LVM_DELETEALLITEMS,0,0)
+#define ListView_GetCallbackMask(w) (UINT)SNDMSG((w),LVM_GETCALLBACKMASK,0,0)
+#define ListView_SetCallbackMask(w,m) (BOOL)SNDMSG((w),LVM_SETCALLBACKMASK,m,0)
+#define ListView_GetNextItem(w,i,f) (int)SNDMSG((w),LVM_GETNEXTITEM,i,MAKELPARAM((f),0))
+#define ListView_FindItem(w,i,p) (int)SNDMSG((w), LVM_FINDITEM,(WPARAM)i,(LPARAM)(const LV_FINDINFO*)(p))
+#define ListView_GetItemRect(w,i,p,c) (BOOL)SNDMSG((w),LVM_GETITEMRECT,i,((p)?(((LPRECT)(p))->left=(c),(LPARAM)(LPRECT)(p)):0))
+#define ListView_SetItemPosition(w,i,x,y) (BOOL)SNDMSG((w),LVM_SETITEMPOSITION,i,MAKELPARAM(x,y))
+#define ListView_GetItemPosition(w,i,p) (BOOL)SNDMSG((w),LVM_GETITEMPOSITION,i,(LPARAM)p)
+#define ListView_GetItemSpacing(w,f) (DWORD)SNDMSG((w),LVM_GETITEMSPACING,f,0)
+#define ListView_GetStringWidth(w,s) (int)SNDMSG((w),LVM_GETSTRINGWIDTH,0,(LPARAM)s)
+#define ListView_HitTest(w,p) (int)SNDMSG((w),LVM_HITTEST,0,(LPARAM)(LV_HITTESTINFO*)(p))
+#define ListView_EnsureVisible(w,i,f) (BOOL)SNDMSG((w),LVM_ENSUREVISIBLE,i,MAKELPARAM((f),0))
+#define ListView_Scroll(w,x,y) (BOOL)SNDMSG((w),LVM_SCROLL,x,y)
+#define ListView_RedrawItems(w,f,l) (BOOL)SNDMSG((w),LVM_REDRAWITEMS,f,l)
+#define ListView_Arrange(w,c) (BOOL)SNDMSG((w),LVM_ARRANGE,c,0)
+#define ListView_EditLabel(w,i) (HWND)SNDMSG((w),LVM_EDITLABEL,i,0)
+#define ListView_GetEditControl(w) (HWND)SNDMSG((w),LVM_GETEDITCONTROL,0,0)
+#define ListView_GetColumn(w,i,p) (BOOL)SNDMSG((w),LVM_GETCOLUMN,i,(LPARAM)(LV_COLUMN*)(p))
+#define ListView_SetColumn(w,i,p) (BOOL)SNDMSG((w),LVM_SETCOLUMN,i,(LPARAM)(const LV_COLUMN*)(p))
+#define ListView_InsertColumn(w,i,p) (int)SNDMSG((w),LVM_INSERTCOLUMN,i,(LPARAM)(const LV_COLUMN*)(p))
+#define ListView_DeleteColumn(w,i) (BOOL)SNDMSG((w),LVM_DELETECOLUMN,i,0)
+#define ListView_GetColumnWidth(w,i) (int)SNDMSG((w),LVM_GETCOLUMNWIDTH,i,0)
+#define ListView_SetColumnWidth(w,i,x) (BOOL)SNDMSG((w),LVM_SETCOLUMNWIDTH,i,MAKELPARAM((x),0))
+#define ListView_CreateDragImage(w,i,p) (HIMAGELIST)SNDMSG((w),LVM_CREATEDRAGIMAGE,i,(LPARAM)(LPPOINT)(p))
+#define ListView_GetViewRect(w,p) (BOOL)SNDMSG((w),LVM_GETVIEWRECT,0,(LPARAM)(LPRECT)(p))
+#define ListView_GetTextColor(w) (COLORREF)SNDMSG((w),LVM_GETTEXTCOLOR,0,0)
+#define ListView_SetTextColor(w,c) (BOOL)SNDMSG((w),LVM_SETTEXTCOLOR,0,(LPARAM)(COLORREF)(c))
+#define ListView_GetTextBkColor(w) (COLORREF)SNDMSG((w),LVM_GETTEXTBKCOLOR,0,0)
+#define ListView_SetTextBkColor(w,c) (BOOL)SNDMSG((w),LVM_SETTEXTBKCOLOR,0,(LPARAM)(COLORREF)(c))
+#define ListView_GetTopIndex(w) (int)SNDMSG((w),LVM_GETTOPINDEX,0,0)
+#define ListView_GetCountPerPage(w) (int)SNDMSG((w),LVM_GETCOUNTPERPAGE,0,0)
+#define ListView_GetOrigin(w,p) (BOOL)SNDMSG((w),LVM_GETORIGIN,0,(LPARAM)(POINT*)(p))
+#define ListView_GetOrigin(w,p) (BOOL)SNDMSG((w),LVM_GETORIGIN,0,(LPARAM)(POINT*)(p))
+#define ListView_Update(w,i) (BOOL)SNDMSG((w),LVM_UPDATE,(WPARAM)(i),0)
+#define ListView_SetItemState(w,i,d,m) \
+{ \
+	LV_ITEM _lvi;\
+	_lvi.stateMask=m;\
+	_lvi.state=d;\
+	SNDMSG((w),LVM_SETITEMSTATE,i,(LPARAM)(LV_ITEM*)&_lvi);\
+}
+#define ListView_GetItemState(w,i,m) (UINT)SNDMSG((w),LVM_GETITEMSTATE,i,m)
+#define ListView_GetItemText(w,i,iS,s,n) \
+{ \
+	LV_ITEM _lvi;\
+	_lvi.iSubItem=iS;\
+	_lvi.cchTextMax=n;\
+	_lvi.pszText=s;\
+	SNDMSG((w),LVM_GETITEMTEXT,i,(LPARAM)(LV_ITEM*)&_lvi);\
+}
+#define ListView_SetItemText(w,i,iS,s) \
+{ \
+	LV_ITEM _lvi;\
+	_lvi.iSubItem=iS;\
+	_lvi.pszText=s;\
+	SNDMSG((w),LVM_SETITEMTEXT,i,(LPARAM)(LV_ITEM*)&_lvi);\
+}
+#define ListView_SetItemCount(w,n) (void)SNDMSG((w),LVM_SETITEMCOUNT,n,0)
+#define ListView_SortItems(w,f,l) (BOOL)SNDMSG((w),LVM_SORTITEMS,l,(LPARAM)f)
+#define ListView_SetItemPosition32(w,i,x,y) \
+{ \
+	POINT p={x,y}; \
+	SNDMSG((w),LVM_SETITEMPOSITION32,i,(LPARAM)&p);\
+}
+#define ListView_GetSelectedCount(w) (UINT)SNDMSG((w),LVM_GETSELECTEDCOUNT,0,0)
+#define ListView_GetCheckState(w,i) ((((UINT)(SNDMSG((w),LVM_GETITEMSTATE,(WPARAM)(i),LVIS_STATEIMAGEMASK)))>>12)-1)
+#define ListView_SetCheckState(w,i,f) ListView_SetItemState(w,i,INDEXTOSTATEIMAGEMASK((f)+1),LVIS_STATEIMAGEMASK)
+#define ListView_GetISearchString(w,lpsz) (BOOL)SNDMSG((w),LVM_GETISEARCHSTRING,0,(LPARAM)(LPTSTR)(lpsz))
+#define ListView_CancelEditLabel(w) (VOID)SNDMSG((w),LVM_CANCELEDITLABEL,0,0)
+#define ListView_EnableGroupView(w,i) (int)SNDMSG((w),LVM_ENABLEGROUPVIEW,(WPARAM)(i),0)
+#define ListView_GetGroupInfo(w,i,p) (int)SNDMSG((w),LVM_GETGROUPINFO,(WPARAM)(i),(LPARAM)(p))
+#define ListView_GetGroupMetrics(w,p) SNDMSG((w),LVM_GETGROUPMETRICS,0,(LPARAM)(p))
+#define ListView_GetInsertMark(w,p) (BOOL)SNDMSG((w),LVM_GETINSERTMARK,0,(LPARAM)(p))
+#define ListView_GetInsertMarkColor(w) (COLORREF)SNDMSG((w),LVM_GETINSERTMARKCOLOR,0,0)
+#define ListView_GetInsertMarkRect(w,p) (int)SNDMSG((w),LVM_GETINSERTMARKRECT,0,(LPARAM)(p))
+#define ListView_GetOutlineColor(w) (COLORREF)SNDMSG((w),LVM_GETOUTLINECOLOR,0,0)
+#define ListView_GetSelectedColumn(w) (UINT)SNDMSG((w),LVM_GETSELECTEDCOLUMN,0,0)
+#define ListView_GetTileInfo(w,p) SNDMSG((w),LVM_GETTILEINFO,0,(LPARAM)(p))
+#define ListView_GetTileViewInfo(w,p) SNDMSG((w),LVM_GETTILEVIEWINFO,0,(LPARAM)(p))
+#define ListView_GetView(w) (DWORD)SNDMSG((w),LVM_GETVIEW,0,0)
+#define ListView_HasGroup(w,i) (BOOL)SNDMSG((w),LVM_HASGROUP,(WPARAM)(i),0)
+#define ListView_InsertGroup(w,i,p) (int)SNDMSG((w),LVM_INSERTGROUP,(WPARAM)(i),(LPARAM)(p))
+#define ListView_InsertGroupSorted(w,p) SNDMSG((w),LVM_INSERTGROUPSORTED,(WPARAM)(p),0)
+#define ListView_InsertMarkHitTest(w,p,t) (BOOL)SNDMSG((w),LVM_INSERTMARKHITTEST,(WPARAM)(p),(LPARAM)(t))
+#define ListView_IsGroupViewEnabled(w) (BOOL)SNDMSG((w),LVM_ISGROUPVIEWENABLED,0,0)
+#define ListView_MapIDToIndex(w,i) (UINT)SNDMSG((w),LVM_MAPIDTOINDEX,(WPARAM)(i),0)
+#define ListView_MoveGroup(w,i,t) SNDMSG((w),LVM_MOVEGROUP,(WPARAM)(i),(LPARAM)(t))
+#define ListView_RemoveAllGroups(w) SNDMSG((w),LVM_REMOVEALLGROUPS,0,0)
+#define ListView_RemoveGroup(w,i) (int)SNDMSG((w),LVM_REMOVEGROUP,(WPARAM)(i),0)
+#define ListView_SetGroupInfo(w,i,p) (int)SNDMSG((w),LVM_SETGROUPINFO,(WPARAM)(i),(LPARAM)(p))
+#define ListView_SetGroupMetrics(w,p) SNDMSG((w),LVM_SETGROUPMETRICS,0,(LPARAM)(p))
+#define ListView_SetInfoTip(w,p) (BOOL)SNDMSG((w),LVM_SETINFOTIP,0,(LPARAM)(p))
+#define ListView_SetInsertMark(w,p) (BOOL)SNDMSG((w),LVM_SETINSERTMARK,0,(LPARAM)(p))
+#define ListView_SetInsertMarkColor(w,c) (COLORREF)SNDMSG((w),LVM_SETINSERTMARKCOLOR,0,(LPARAM)(c))
+#define ListView_SetOutlineColor(w,c) (COLORREF)SNDMSG((w),LVM_SETOUTLINECOLOR,0,(LPARAM)(c))
+#if (_WIN32_WINNT >= 0x0501)
+#define ListView_SetSelectedColumn(w,i) SNDMSG((w),LVM_SETSELECTEDCOLUMN,(WPARAM)i,0)
+#endif
+#define ListView_SetTileInfo(w,p) (BOOL)SNDMSG((w),LVM_SETTILEINFO,0,(LPARAM)(p))
+#define ListView_SetTileViewInfo(w,p) (BOOL)SNDMSG((w),LVM_SETTILEVIEWINFO,0,(LPARAM)(p))
+#define ListView_SetView(w,i) (int)SNDMSG((w),LVM_SETVIEW,(WPARAM)(i),0)
+#define ListView_SortGroups(w,c,p) (int)SNDMSG((w),LVM_SORTGROUPS,(WPARAM)(c),(LPARAM)(p))
+#define ListView_SortItemsEx(w,c,p) (BOOL)SNDMSG((w),LVM_SORTITEMSEX,(WPARAM)(p),(LPARAM)(c))
+
+#if (_WIN32_WINNT >= 0x0501)
+#define ComboBox_SetMinVisible(w,i) (BOOL)SNDMSG((w), CB_SETMINVISIBLE,(WPARAM)(i),0);
+#define ComboBox_GetMinVisible(w) (INT)SNDMSG((w),CB_GETMINVISIBLE,0,0);
+#endif
+
+BOOL WINAPI MakeDragList(HWND);
+void WINAPI MenuHelp(UINT,WPARAM,LPARAM,HMENU,HINSTANCE,HWND,PUINT);
+#define MonthCal_GetColor(hwnd,icolor) SNDMSG(hwnd,MCM_GETCOLOR,(WPARAM)icolor,(LPARAM)0)
+#define MonthCal_GetCurSel(hwnd,lpsystime) SNDMSG(hwnd,MCM_GETCURSEL,0,(LPARAM)lpsystime)
+#define MonthCal_GetFirstDayOfWeek(hwnd) SNDMSG(hwnd,MCM_GETFIRSTDAYOFWEEK,0,0)
+#define MonthCal_GetMaxSelCount(hwnd) SNDMSG(hwnd,MCM_GETMAXSELCOUNT,0,0)
+#define MonthCal_GetMaxTodayWidth(hwnd) SNDMSG(hwnd,MCM_GETMAXTODAYWIDTH,0,0)
+#define MonthCal_GetMinReqRect(hwnd,lpRectInfo) SNDMSG(hwnd,MCM_GETMINREQRECT,0,(LPARAM)lpRectInfo)
+#define MonthCal_GetMonthDelta(hwnd) SNDMSG(hwnd,MCM_GETMONTHDELTA,0,0)
+#define MonthCal_GetMonthRange(hwnd,flag,systimearray) SNDMSG(hwnd,MCM_GETMONTHRANGE,(WPARAM)flag,(LPARAM)systimearray)
+#define MonthCal_GetRange(hwnd,systimearray) SNDMSG(hwnd,MCM_GETRANGE,0,(LPARAM)systimearray)
+#define MonthCal_GetSelRange(hwnd,systimearray) SNDMSG(hwnd,MCM_GETSELRANGE,0,(LPARAM)systimearray)
+#define MonthCal_GetToday(hwnd,systime) SNDMSG(hwnd,MCM_GETTODAY,0,(LPARAM)systime)
+#define MonthCal_GetUnicodeFormat(hwnd) SNDMSG(hwnd,MCM_GETUNICODEFORMAT,0,0)
+#define MonthCal_HitTest(hwnd,pmchittest) SNDMSG(hwnd,MCM_HITTEST,0,(LPARAM)pmchittest)
+#define MonthCal_SetColor(hwnd,icolor,clr) SNDMSG(hwnd,MCM_SETCOLOR,(WPARAM)icolor,(LPARAM)clr)
+#define MonthCal_SetCurSel(hwnd,lpsystime) SNDMSG(hwnd,MCM_SETCURSEL,0,(LPARAM)lpsystime)
+#define MonthCal_SetDayState(hwnd,imonths,lpdatestatearray) SNDMSG(hwnd,MCM_SETDAYSTATE,(WPARAM)imonths,(LPARAM)lpdatestatearray)
+#define MonthCal_SetFirstDayOfWeek(hwnd,iday) SNDMSG(hwnd,MCM_SETFIRSTDAYOFWEEK,0,(LPARAM)iday)
+#define MonthCal_SetMaxSelCount(hwnd,imax) SNDMSG(hwnd,MCM_SETMAXSELCOUNT,(WPARAM)imax,0)
+#define MonthCal_SetMonthDelta(hwnd,idelta) SNDMSG(hwnd,MCM_SETMONTHDELTA,(WPARAM)idelta,0)
+#define MonthCal_SetSelRange(hwnd,systimearray) SNDMSG(hwnd,MCM_SETSELRANGE,0,(LPARAM)systimearray)
+#define MonthCal_SetToday(hwnd,systime) SNDMSG(hwnd,MCM_SETTODAY,0,(LPARAM)systime)
+#define MonthCal_SetUnicodeFormat(hwnd,unicode) SNDMSG(hwnd,MCM_SETUNICODEFORMAT,(WPARAM)unicode,0)
+#define MonthCal_SetRange(w,f,st) (BOOL)SNDMSG((w),MCM_SETRANGE,(WPARAM)(f),(LPARAM)(st))
+BOOL WINAPI ShowHideMenuCtl(HWND,UINT,PINT);
+#define TabCtrl_GetItem(w,i,p) (BOOL)SNDMSG((w),TCM_GETITEM,i,(LPARAM)(TC_ITEM*)(p))
+#define TabCtrl_SetItem(w,i,p) (BOOL)SNDMSG((w),TCM_SETITEM,i,(LPARAM)(TC_ITEM*)(p))
+#define TabCtrl_InsertItem(w,i,p) (int)SNDMSG((w),TCM_INSERTITEM,i,(LPARAM)(const TC_ITEM*)(p))
+#define TabCtrl_DeleteItem(w,i) (BOOL)SNDMSG((w),TCM_DELETEITEM,i,0)
+#define TabCtrl_DeleteAllItems(w) (BOOL)SNDMSG((w),TCM_DELETEALLITEMS,0,0)
+#define TabCtrl_GetItemRect(w,i,p) (BOOL)SNDMSG((w),TCM_GETITEMRECT,i,(LPARAM)(LPRECT)(p))
+#define TabCtrl_GetCurSel(w) (int)SNDMSG((w),TCM_GETCURSEL,0,0)
+#define TabCtrl_SetCurSel(w,i) (int)SNDMSG((w),TCM_SETCURSEL,i,0)
+#define TabCtrl_HitTest(w,p) (int)SNDMSG((w),TCM_HITTEST,0,(LPARAM)(TC_HITTESTINFO*)(p))
+#define TabCtrl_SetItemExtra(w,c) (BOOL)SNDMSG((w),TCM_SETITEMEXTRA,c,0)
+#define TabCtrl_AdjustRect(w,b,p) (int)SNDMSG((w),TCM_ADJUSTRECT,b,(LPARAM)(LPRECT)p)
+#define TabCtrl_SetItemSize(w,x,y) (DWORD)SNDMSG((w),TCM_SETITEMSIZE,0,MAKELPARAM(x,y))
+#define TabCtrl_RemoveImage(w,i) (void)SNDMSG((w),TCM_REMOVEIMAGE,i,0)
+#define TabCtrl_SetPadding(w,x,y) (void)SNDMSG((w),TCM_SETPADDING,0,MAKELPARAM(x,y))
+#define TabCtrl_GetRowCount(w) (int)SNDMSG((w),TCM_GETROWCOUNT,0,0)
+#define TabCtrl_GetToolTips(w) (HWND)SNDMSG((w),TCM_GETTOOLTIPS,0,0)
+#define TabCtrl_SetToolTips(w,t) (void)SNDMSG((w),TCM_SETTOOLTIPS,(WPARAM)t,0)
+#define TabCtrl_GetCurFocus(w) (int)SNDMSG((w),TCM_GETCURFOCUS,0,0)
+#define TabCtrl_SetCurFocus(w,i) (void)SNDMSG((w),TCM_SETCURFOCUS,i,0)
+#define TabCtrl_GetImageList(w) (HIMAGELIST)SNDMSG((w),TCM_GETIMAGELIST,0,0)
+#define TabCtrl_SetImageList(w,h) (HIMAGELIST)SNDMSG((w),TCM_SETIMAGELIST,0,(LPARAM)(UINT)(h))
+#define TabCtrl_GetItemCount(w) (int)SNDMSG((w),TCM_GETITEMCOUNT,0,0)
+BOOL WINAPI _TrackMouseEvent(LPTRACKMOUSEEVENT);
+#define TreeView_InsertItem(w,i) (HTREEITEM)SNDMSG((w),TVM_INSERTITEM,0,(LPARAM)(LPTV_INSERTSTRUCT)(i))
+#define TreeView_DeleteItem(w,i) (BOOL)SNDMSG((w),TVM_DELETEITEM,0,(LPARAM)(HTREEITEM)(i))
+#define TreeView_DeleteAllItems(w) (BOOL)SNDMSG((w),TVM_DELETEITEM,0,(LPARAM)TVI_ROOT)
+#define TreeView_Expand(w,i,c) (BOOL)SNDMSG((w),TVM_EXPAND,c,(LPARAM)(HTREEITEM)(i))
+#define TreeView_GetItemRect(w,i,p,c) (*(HTREEITEM*)p=(i),(BOOL)SNDMSG((w),TVM_GETITEMRECT,c,(LPARAM)(LPRECT)(p)))
+#define TreeView_GetCount(w) (UINT)SNDMSG((w),TVM_GETCOUNT,0,0)
+#define TreeView_GetIndent(w) (UINT)SNDMSG((w),TVM_GETINDENT,0,0)
+#define TreeView_SetIndent(w,i) (BOOL)SNDMSG((w),TVM_SETINDENT,i,0)
+#define TreeView_GetImageList(w,i) (HIMAGELIST)SNDMSG((w),TVM_GETIMAGELIST,i,0)
+#define TreeView_SetImageList(w,h,i) (HIMAGELIST)SNDMSG((w),TVM_SETIMAGELIST,i,(LPARAM)(HIMAGELIST)(h))
+#define TreeView_GetNextItem(w,i,c) (HTREEITEM)SNDMSG((w),TVM_GETNEXTITEM,c,(LPARAM)(HTREEITEM)(i))
+#define TreeView_GetChild(w,i)	TreeView_GetNextItem(w,i,TVGN_CHILD)
+#define TreeView_GetNextSibling(w,i)	TreeView_GetNextItem(w,i,TVGN_NEXT)
+#define TreeView_GetPrevSibling(w,i)	TreeView_GetNextItem(w,i,TVGN_PREVIOUS)
+#define TreeView_GetParent(w,i)	TreeView_GetNextItem(w,i,TVGN_PARENT)
+#define TreeView_GetFirstVisible(w)	TreeView_GetNextItem(w,NULL,TVGN_FIRSTVISIBLE)
+#define TreeView_GetNextVisible(w,i)	TreeView_GetNextItem(w,i,TVGN_NEXTVISIBLE)
+#define TreeView_GetPrevVisible(w,i)	TreeView_GetNextItem(w,i,TVGN_PREVIOUSVISIBLE)
+#define TreeView_GetSelection(w)	TreeView_GetNextItem(w,NULL,TVGN_CARET)
+#define TreeView_GetDropHilight(w)	TreeView_GetNextItem(w,NULL,TVGN_DROPHILITE)
+#define TreeView_GetRoot(w)	TreeView_GetNextItem(w,NULL,TVGN_ROOT)
+#define TreeView_Select(w,i,c) (BOOL)SNDMSG((w),TVM_SELECTITEM,c,(LPARAM)(HTREEITEM)(i))
+#define TreeView_SelectItem(w,i)	TreeView_Select(w,i,TVGN_CARET)
+#define TreeView_SelectDropTarget(w,i)	TreeView_Select(w,i,TVGN_DROPHILITE)
+#define TreeView_SelectSetFirstVisible(w,i)	TreeView_Select(w,i,TVGN_FIRSTVISIBLE)
+#define TreeView_GetItem(w,i) (BOOL)SNDMSG((w),TVM_GETITEM,0,(LPARAM)(TV_ITEM*)(i))
+#define TreeView_SetItem(w,i) (BOOL)SNDMSG((w),TVM_SETITEM,0,(LPARAM)(const TV_ITEM*)(i))
+#define TreeView_EditLabel(w,i) (HWND)SNDMSG((w),TVM_EDITLABEL,0,(LPARAM)(HTREEITEM)(i))
+#define TreeView_GetEditControl(w) (HWND)SNDMSG((w),TVM_GETEDITCONTROL,0,0)
+#define TreeView_GetVisibleCount(w) (UINT)SNDMSG((w),TVM_GETVISIBLECOUNT,0,0)
+#define TreeView_HitTest(w,p) (HTREEITEM)SNDMSG((w),TVM_HITTEST,0,(LPARAM)(LPTV_HITTESTINFO)(p))
+#define TreeView_CreateDragImage(w,i) (HIMAGELIST)SNDMSG((w),TVM_CREATEDRAGIMAGE,0,(LPARAM)(HTREEITEM)(i))
+#define TreeView_SortChildren(w,i,r) (BOOL)SNDMSG((w),TVM_SORTCHILDREN,r,(LPARAM)(HTREEITEM)(i))
+#define TreeView_EnsureVisible(w,i) (BOOL)SNDMSG((w),TVM_ENSUREVISIBLE,0,(LPARAM)(HTREEITEM)(i))
+#define TreeView_SortChildrenCB(w,s,r) (BOOL)SNDMSG((w),TVM_SORTCHILDRENCB,r,(LPARAM)(LPTVSORTCB)(s))
+#define TreeView_EndEditLabelNow(w,f) (BOOL)SNDMSG((w),TVM_ENDEDITLABELNOW,f,0)
+#define TreeView_GetISearchString(w,s) (BOOL)SNDMSG((w),TVM_GETISEARCHSTRING,0,(LPARAM)s)
+#if (_WIN32_IE >= 0x0300)
+#define ListView_ApproximateViewRect(w,iw,ih,i) (DWORD)SNDMSG((w),LVM_APPROXIMATEVIEWRECT,(i),MAKELPARAM((iw),(ih)))
+#define ListView_SetExtendedListViewStyle(w,s) (DWORD)SNDMSG((w),LVM_SETEXTENDEDLISTVIEWSTYLE,0,(s))
+#define ListView_GetExtendedListViewStyle(w) (DWORD)SNDMSG((w),LVM_GETEXTENDEDLISTVIEWSTYLE,0,0)
+#define ListView_SetColumnOrderArray(w,i,a) (BOOL)SNDMSG((w),LVM_SETCOLUMNORDERARRAY,(WPARAM)(i),(LPARAM)(LPINT)(a))
+#define ListView_GetColumnOrderArray(w,i,a) (BOOL)SNDMSG((w),LVM_GETCOLUMNORDERARRAY,(WPARAM)(i),(LPARAM)(LPINT)(a))
+#define ListView_GetHeader(w) (HWND)SNDMSG((w),LVM_GETHEADER,0,0)
+#define ListView_GetHotCursor(w) (HCURSOR)SNDMSG((w),LVM_GETHOTCURSOR,0,0)
+#define ListView_GetHotItem(w) (INT)SNDMSG((w),LVM_GETHOTITEM,0,0)
+#define ListView_GetSubItemRect(w,i,is,c,p) (BOOL)SNDMSG((w),LVM_GETSUBITEMRECT,(WPARAM)(int)(i),((p)?(((LPRECT)(p))->left=(c),(((LPRECT)(p))->top=(is)),(LPARAM)(LPRECT)(p)):0))
+#define ListView_SetHotCursor(w,c) (HCURSOR)SNDMSG((w),LVM_SETHOTCURSOR,0,(LPARAM)(c))
+#define ListView_SetHotItem(w,i) (int)SNDMSG((w),LVM_SETHOTITEM,(WPARAM)(i),0)
+#define ListView_SetIconSpacing(w,x,y) (DWORD)SNDMSG((w),LVM_SETICONSPACING,0,MAKELONG(x,y))
+#define ListView_SubItemHitTest(w,p) (INT)SNDMSG((w),LVM_SUBITEMHITTEST,0,(LPARAM)(LPLVHITTESTINFO)(p))
+#define ListView_SetItemCountEx(w,i,f) (void)SNDMSG((w),LVM_SETITEMCOUNT,(WPARAM)(i),(LPARAM)(f))
+WINBOOL WINAPI ImageList_SetImageCount(HIMAGELIST,UINT);
+WINBOOL WINAPI ImageList_Copy(HIMAGELIST,int,HIMAGELIST,int,UINT);
+WINBOOL WINAPI ImageList_DrawIndirect(IMAGELISTDRAWPARAMS*);
+#define TabCtrl_SetMinTabWidth(hwnd,x) SNDMSG((hwnd),TCM_SETMINTABWIDTH,0,x)
+#define TabCtrl_DeselectAll(hwnd,fExcludeFocus) SNDMSG((hwnd),TCM_DESELECTALL,fExcludeFocus,0)
+#define TreeView_GetToolTips(w) (HWND)SNDMSG((w),TVM_GETTOOLTIPS,0,0)
+#define TreeView_SetToolTips(w,wt) (HWND)SNDMSG((w),TVM_SETTOOLTIPS,(WPARAM)(wt),0)
+#endif
+#if (_WIN32_IE >= 0x0400)
+#define ListView_GetBkImage(h,plvbki) (BOOL)SNDMSG((h),LVM_GETBKIMAGE,0,(LPARAM)(plvbki))
+#define ListView_SetBkImage(h,plvbki) (BOOL)SNDMSG((h),LVM_SETBKIMAGE,0,(LPARAM)(plvbki))
+#define ListView_SetExtendedListViewStyleEx(w,m,s) (DWORD)SNDMSG((w),LVM_SETEXTENDEDLISTVIEWSTYLE,(m),(s))
+#define ListView_SetWorkAreas(w,n,r) (BOOL)SNDMSG((w),LVM_SETWORKAREAS,(WPARAM)(n),(LPARAM)(RECT *)(r))
+#define ListView_GetWorkAreas(w,n,r) (BOOL)SNDMSG((w),LVM_GETWORKAREAS,(WPARAM)(n),(LPARAM)(RECT *)(r))
+#define ListView_GetNumberOfWorkAreas(w,n) (BOOL)SNDMSG((w),LVM_GETNUMBEROFWORKAREAS,0,(LPARAM)(UINT *)(n))
+#define ListView_SetHoverTime(w,t) (DWORD)SNDMSG((w),LVM_SETHOVERTIME,0,(LPARAM)(t))
+#define ListView_GetHoverTime(w) (DWORD)SNDMSG((w),LVM_GETHOVERTIME,0,0)
+#define ListView_GetSelectionMark(w) (INT)SNDMSG((w),LVM_GETSELECTIONMARK,0,0)
+#define ListView_SetSelectionMark(w,i) (INT)SNDMSG((w),LVM_SETSELECTIONMARK,0,(LPARAM)(i))
+#define ListView_SetToolTips(w,n) (HWND)SNDMSG((w),LVM_SETTOOLTIPS,(WPARAM)(n),0)
+#define ListView_GetToolTips(w) (HWND)SNDMSG((w),LVM_GETTOOLTIPS,0,0)
+#define ListView_SetUnicodeFormat(w,f) (BOOL)SNDMSG((w),LVM_SETUNICODEFORMAT,(WPARAM)(f),0)
+#define ListView_GetUnicodeFormat(w) (BOOL)SNDMSG((w),LVM_GETUNICODEFORMAT,0,0)
+#define TabCtrl_HighlightItem(w,i,fHighlight) SNDMSG((w),TCM_HIGHLIGHTITEM,(WPARAM)i,(LPARAM)MAKELONG(fHighlight,0))
+#define TabCtrl_SetExtendedStyle(w,dw) SNDMSG((w),TCM_SETEXTENDEDSTYLE,0,dw)
+#define TabCtrl_GetExtendedStyle(w) SNDMSG((w),TCM_GETEXTENDEDSTYLE,0,0)
+#define TabCtrl_SetUnicodeFormat(w,u) SNDMSG((w),TCM_SETUNICODEFORMAT,(WPARAM)(u),0)
+#define TabCtrl_GetUnicodeFormat(w) SNDMSG((w),TCM_GETUNICODEFORMAT,0,0)
+#define TreeView_GetBkColor(w) (COLORREF)SNDMSG((w),TVM_GETBKCOLOR,0,0)
+#define TreeView_GetInsertMarkColor(w) (COLORREF)SNDMSG((w),TVM_GETINSERTMARKCOLOR,0,0)
+#define TreeView_GetItemHeight(w) (int)SNDMSG((w),TVM_GETITEMHEIGHT,0,0)
+#define TreeView_GetScrollTime(w) (UINT)SNDMSG((w),TVM_GETSCROLLTIME,0,0)
+#define TreeView_GetTextColor(w) (COLORREF)SNDMSG((w),TVM_GETTEXTCOLOR,0,0)
+#define TreeView_SetBkColor(w,c) (COLORREF)SNDMSG((w),TVM_SETBKCOLOR,0,(LPARAM)(c))
+#define TreeView_SetInsertMarkColor(w,c) (COLORREF)SNDMSG((w),TVM_SETINSERTMARKCOLOR,0,(LPARAM)(c))
+#define TreeView_SetItemHeight(w,h) (int)SNDMSG((w),TVM_SETITEMHEIGHT,(WPARAM)(h),0)
+#define TreeView_SetScrollTime(w,t) (UINT)SNDMSG((w),TVM_SETSCROLLTIME,(WPARAM)(UINT)(t),0)
+#define TreeView_SetTextColor(w,c) (COLORREF)SNDMSG((w),TVM_SETTEXTCOLOR,0,(LPARAM)(c))
+#define TreeView_SetInsertMark(w,i,a) (BOOL)SNDMSG((w),TVM_SETINSERTMARK,(WPARAM)(a),(LPARAM)(i))
+#define TreeView_SetUnicodeFormat(w,u) (BOOL)SNDMSG((w),TVM_SETUNICODEFORMAT,(WPARAM)(u),0)
+#define TreeView_GetUnicodeFormat(w) (BOOL)SNDMSG((w),TVM_GETUNICODEFORMAT,0,0)
+#define TreeView_GetLastVisible(w) TreeView_GetNextItem(w,NULL,TVGN_LASTVISIBLE)
+#endif
+#if (_WIN32_IE >= 0x0500)
+#define TreeView_GetItemState(w,i,m) (UINT)SNDMSG((w),TVM_GETITEMSTATE,(WPARAM)(i),(LPARAM)(m))
+#define TreeView_SetItemState(w,i,d,m) \
+{ \
+	TVITEM _tvi;\
+	_tvi.mask=TVIF_STATE;\
+	_tvi.hItem=i; \
+	_tvi.stateMask=m;\
+	_tvi.state=d;\
+	SNDMSG((w),TVM_SETITEM,0,(LPARAM)(TVITEM*)&_tvi);\
+}
+#endif
+
+#ifdef UNICODE
+typedef HDITEMW HDITEM;
+typedef TOOLINFOW TOOLINFO,*PTOOLINFO,*LPTOOLINFO;
+typedef TTHITTESTINFOW TTHITTESTINFO,*LPHITTESTINFO,*LPTTHITTESTINFO;
+typedef TOOLTIPTEXTW TOOLTIPTEXT,*LPTOOLTIPTEXT;
+typedef NMTTDISPINFOW NMTTDISPINFO, *LPNMTTDISPINFO;
+typedef TV_ITEMW TV_ITEM,*LPTV_ITEM;
+typedef TVITEMW TVITEM,*LPTVITEM;
+#if (_WIN32_IE >= 0x0400)
+typedef TVITEMEXW TVITEMEX,*LPTVITEMEX;
+#endif
+typedef TV_INSERTSTRUCTW TV_INSERTSTRUCT,*LPTV_INSERTSTRUCT;
+typedef TVINSERTSTRUCTW TVINSERTSTRUCT,*LPTVINSERTSTRUCT;
+typedef NM_TREEVIEWW NM_TREEVIEW,*LPNM_TREEVIEW;
+typedef NMTREEVIEWW NMTREEVIEW,*LPNMTREEVIEW;
+typedef NMHDDISPINFOW NMHDDISPINFO, *LPNMHDDISPINFO;
+#define ACM_OPEN ACM_OPENW
+#define COMBOBOXEXITEM	COMBOBOXEXITEMW
+#define PCOMBOBOXEXITEM	PCOMBOBOXEXITEMW
+#define PCCOMBOBOXEXITEM	PCCOMBOBOXEXITEMW
+#define CBEM_INSERTITEM	CBEM_INSERTITEMW
+#define CBEM_SETITEM	CBEM_SETITEMW
+#define CBEM_GETITEM	CBEM_GETITEMW
+#define CBEN_ENDEDIT	CBEN_ENDEDITW
+#define NMCBEENDEDIT	NMCBEENDEDITW
+#define LPNMCBEENDEDIT	LPNMCBEENDEDITW
+#define PNMCBEENDEDIT	PNMCBEENDEDITW
+#if _WIN32_IE >= 0x0400
+#define NMCOMBOBOXEX	NMCOMBOBOXEXW
+#define PNMCOMBOBOXEX	PNMCOMBOBOXEXW
+#define CBEN_GETDISPINFO	CBEN_GETDISPINFOW
+#define CBEN_DRAGBEGIN	CBEN_DRAGBEGINW
+#define NMCBEDRAGBEGIN	NMCBEDRAGBEGINW
+#define LPNMCBEDRAGBEGIN	LPNMCBEDRAGBEGINW
+#define PNMCBEDRAGBEGIN PNMCBEDRAGBEGINW
+#endif /* _WIN32_IE >= 0x0400 */
+#define SB_GETTEXT	SB_GETTEXTW
+#define SB_SETTEXT	SB_SETTEXTW
+#define SB_GETTEXTLENGTH	SB_GETTEXTLENGTHW
+#define HDM_INSERTITEM HDM_INSERTITEMW
+#define HDM_GETITEM HDM_GETITEMW
+#define HDM_SETITEM HDM_SETITEMW
+#define HDN_ITEMCHANGING	HDN_ITEMCHANGINGW
+#define HDN_ITEMCHANGED	HDN_ITEMCHANGEDW
+#define HDN_ITEMCLICK	HDN_ITEMCLICKW
+#define HDN_ITEMDBLCLICK	HDN_ITEMDBLCLICKW
+#define HDN_DIVIDERDBLCLICK	HDN_DIVIDERDBLCLICKW
+#define HDN_BEGINTRACK	HDN_BEGINTRACKW
+#define HDN_ENDTRACK	HDN_ENDTRACKW
+#define HDN_TRACK	HDN_TRACKW
+#if (_WIN32_IE >= 0x0300)
+#define HDN_GETDISPINFO HDN_GETDISPINFOW
+#endif
+#define HD_NOTIFY HD_NOTIFYW
+#define TBSAVEPARAMS TBSAVEPARAMSW
+#define TB_GETBUTTONTEXT TB_GETBUTTONTEXTW
+#define TB_SAVERESTORE TB_SAVERESTOREW
+#define TB_ADDSTRING TB_ADDSTRINGW
+#define TBN_GETBUTTONINFO TBN_GETBUTTONINFOW
+#if _WIN32_IE >= 0x400
+#define TB_GETBUTTONINFO TB_GETBUTTONINFOW
+#define TB_SETBUTTONINFO TB_SETBUTTONINFOW
+#define TB_INSERTBUTTON TB_INSERTBUTTONW
+#define TB_ADDBUTTONS TB_ADDBUTTONSW
+#define TB_MAPACCELERATOR TB_MAPACCELERATORW
+#define TB_GETSTRING TB_GETSTRINGW
+#define TBBUTTONINFO TBBUTTONINFOW
+#define LPTBBUTTONINFO LPTBBUTTONINFOW
+#define TBN_GETDISPINFO TBN_GETDISPINFOW
+#define NMTBDISPINFO NMTBDISPINFOW
+#define LPNMTBDISPINFO LPNMTBDISPINFOW
+#define NMTBGETINFOTIP NMTBGETINFOTIPW
+#define LPNMTBGETINFOTIP LPNMTBGETINFOTIPW
+#endif
+#define TBNOTIFY TBNOTIFYW
+#define LPTBNOTIFY LPTBNOTIFYW
+#define NMTOOLBAR NMTOOLBARW
+#define LPNMTOOLBAR LPNMTOOLBARW
+#define TTM_ADDTOOL	TTM_ADDTOOLW
+#define TTM_DELTOOL	TTM_DELTOOLW
+#define TTM_NEWTOOLRECT	TTM_NEWTOOLRECTW
+#define TTM_GETTOOLINFO	TTM_GETTOOLINFOW
+#define TTM_SETTOOLINFO	TTM_SETTOOLINFOW
+#define TTM_HITTEST	TTM_HITTESTW
+#define TTM_GETTEXT	TTM_GETTEXTW
+#define TTM_UPDATETIPTEXT	TTM_UPDATETIPTEXTW
+#define TTM_ENUMTOOLS	TTM_ENUMTOOLSW
+#define TTM_GETCURRENTTOOL	TTM_GETCURRENTTOOLW
+#define TTN_NEEDTEXT TTN_NEEDTEXTW
+#define TTN_GETDISPINFO TTN_GETDISPINFOW
+#define SB_GETTEXT	SB_GETTEXTW
+#define SB_SETTEXT	SB_SETTEXTW
+#define SB_GETTEXTLENGTH	SB_GETTEXTLENGTHW
+#define LV_ITEM LV_ITEMW
+#define LVITEM LVITEMW
+#define LPSTR_TEXTCALLBACK LPSTR_TEXTCALLBACKW
+#if _WIN32_IE >= 0x0400
+#define LVBKIMAGE	LVBKIMAGEW
+#define LPLVBKIMAGE	LPLVBKIMAGEW
+#define LVM_SETBKIMAGE	LVM_SETBKIMAGEW
+#define LVM_GETBKIMAGE	LVM_GETBKIMAGEW
+#endif /* _WIN32_IE >= 0x400 */
+#define LVM_GETITEM	LVM_GETITEMW
+#define LVM_SETITEM LVM_SETITEMW
+#define LVM_INSERTITEM LVM_INSERTITEMW
+#define LV_FINDINFO LV_FINDINFOW
+#define LVFINDINFO LVFINDINFOW
+#define LPFINDINFO LPFINDINFOW
+#define NMLVFINDITEM NMLVFINDITEMW
+#define PNMLVFINDITEM PNMLVFINDITEMW
+#define LPNMLVFINDITEM LPNMLVFINDITEMW
+#define LVM_FINDITEM LVM_FINDITEMW
+#define LVM_GETSTRINGWIDTH LVM_GETSTRINGWIDTHW
+#define LVM_EDITLABEL LVM_EDITLABELW
+#define LV_COLUMN LV_COLUMNW
+#define LVCOLUMN LVCOLUMNW
+#define LVM_GETCOLUMN LVM_GETCOLUMNW
+#define LVM_SETCOLUMN LVM_SETCOLUMNW
+#define LVM_INSERTCOLUMN LVM_INSERTCOLUMNW
+#define LVM_GETITEMTEXT LVM_GETITEMTEXTW
+#define LVM_SETITEMTEXT LVM_SETITEMTEXTW
+#define LVM_GETISEARCHSTRING LVM_GETISEARCHSTRINGW
+#define LVN_BEGINLABELEDIT LVN_BEGINLABELEDITW
+#define LVN_ENDLABELEDIT LVN_ENDLABELEDITW
+#define LVN_GETDISPINFO LVN_GETDISPINFOW
+#define LVN_SETDISPINFO LVN_SETDISPINFOW
+#define LVN_GETINFOTIP LVN_GETINFOTIPW
+#define NMLVGETINFOTIP NMLVGETINFOTIPW
+#define LPNMLVGETINFOTIP LPNMLVGETINFOTIPW
+#define LV_DISPINFO LV_DISPINFOW
+#define NMLVDISPINFO NMLVDISPINFOW
+#define LPNMLVDISPINFO LPNMLVDISPINFOW
+#define TVM_INSERTITEM TVM_INSERTITEMW
+#define TVM_GETITEM TVM_GETITEMW
+#define TVM_SETITEM TVM_SETITEMW
+#define TVM_EDITLABEL TVM_EDITLABELW
+#define TVM_GETISEARCHSTRING TVM_GETISEARCHSTRINGW
+#define TV_DISPINFO NMTVDISPINFOW
+#define NMTVDISPINFO NMTVDISPINFOW
+#define LPNMTVDISPINFO LPNMTVDISPINFOW
+#if (_WIN32_IE >= 0x0400)
+#define NMTVGETINFOTIP NMTVGETINFOTIPW
+#define LPNMTVGETINFOTIP LPNMTVGETINFOTIPW
+#define TVN_GETINFOTIP TVN_GETINFOTIPW
+#endif
+#define TVN_SELCHANGING TVN_SELCHANGINGW
+#define TVN_SELCHANGED TVN_SELCHANGEDW
+#define TVN_GETDISPINFO TVN_GETDISPINFOW
+#define TVN_SETDISPINFO TVN_SETDISPINFOW
+#define TVN_ITEMEXPANDING TVN_ITEMEXPANDINGW
+#define TVN_ITEMEXPANDED TVN_ITEMEXPANDEDW
+#define TVN_BEGINDRAG TVN_BEGINDRAGW
+#define TVN_BEGINRDRAG TVN_BEGINRDRAGW
+#define TVN_DELETEITEM TVN_DELETEITEMW
+#define TVN_BEGINLABELEDIT TVN_BEGINLABELEDITW
+#define TVN_ENDLABELEDIT TVN_ENDLABELEDITW
+#define TC_ITEMHEADER TC_ITEMHEADERW
+#define TCITEMHEADER TCITEMHEADERW
+#define LPTCITEMHEADER LPTCITEMHEADERW
+#define TC_ITEM TC_ITEMW
+#define TCITEM TCITEMW
+#define LPTCITEM LPTCITEMW
+#define TCM_GETITEM TCM_GETITEMW
+#define TCM_SETITEM TCM_SETITEMW
+#define TCM_INSERTITEM TCM_INSERTITEMW
+#define CreateStatusWindow CreateStatusWindowW
+#define DrawStatusText DrawStatusTextW
+#define ImageList_LoadImage ImageList_LoadImageW
+#define DTM_SETFORMAT DTM_SETFORMATW
+#define DTN_USERSTRING DTN_USERSTRINGW
+#define DTN_WMKEYDOWN DTN_WMKEYDOWNW
+#define DTN_FORMAT DTN_FORMATW
+#define DTN_FORMATQUERY DTN_FORMATQUERYW
+typedef REBARBANDINFOW REBARBANDINFO,*LPREBARBANDINFO;
+#define LPCREBARBANDINFO LPCREBARBANDINFOW
+#define REBARBANDINFO_V3_SIZE REBARBANDINFOW_V3_SIZE
+#define RB_INSERTBAND RB_INSERTBANDW
+#define RB_SETBANDINFO RB_SETBANDINFOW
+#else /* UNICODE */
+typedef HDITEMA HDITEM;
+typedef TOOLINFOA TOOLINFO,*PTOOLINFO,*LPTOOLINFO;
+typedef TTHITTESTINFOA TTHITTESTINFO,*LPHITTESTINFO,*LPTTHITTESTINFO;
+typedef TOOLTIPTEXTA TOOLTIPTEXT,*LPTOOLTIPTEXT;
+typedef NMTTDISPINFOA NMTTDISPINFO, *LPNMTTDISPINFO;
+typedef TV_ITEMA TV_ITEM,*LPTV_ITEM;
+typedef TVITEMA TVITEM,*LPTVITEM;
+#if (_WIN32_IE >= 0x0400)
+typedef TVITEMEXA TVITEMEX,*LPTVITEMEX;
+#endif
+typedef TV_INSERTSTRUCTA TV_INSERTSTRUCT,*LPTV_INSERTSTRUCT;
+typedef TVINSERTSTRUCTA TVINSERTSTRUCT,*LPTVINSERTSTRUCT;
+typedef NM_TREEVIEWA NM_TREEVIEW,*LPNM_TREEVIEW;
+typedef NMTREEVIEWA NMTREEVIEW,*LPNMTREEVIEW;
+typedef NMHDDISPINFOW NMHDDISPINFO, *LPNMHDDISPINFO;
+#define ACM_OPEN ACM_OPENA
+#define COMBOBOXEXITEM	COMBOBOXEXITEMA
+#define PCOMBOBOXEXITEM	PCOMBOBOXEXITEMA
+#define PCCOMBOBOXEXITEM	PCCOMBOBOXEXITEMA
+#define CBEM_INSERTITEM	CBEM_INSERTITEMA
+#define CBEM_SETITEM	CBEM_SETITEMA
+#define CBEM_GETITEM	CBEM_GETITEMA
+#define CBEN_ENDEDIT	CBEN_ENDEDITA
+#define NMCBEENDEDIT	NMCBEENDEDITA
+#define LPNMCBEENDEDIT	LPNMCBEENDEDITA
+#define PNMCBEENDEDIT	PNMCBEENDEDITA
+#if _WIN32_IE >= 0x0400
+#define TB_GETBUTTONINFO TB_GETBUTTONINFOA
+#define TB_SETBUTTONINFO TB_SETBUTTONINFOA
+#define TB_INSERTBUTTON TB_INSERTBUTTONA
+#define TB_ADDBUTTONS TB_ADDBUTTONSA
+#define TB_MAPACCELERATOR TB_MAPACCELERATORA
+#define TB_GETSTRING TB_GETSTRINGA
+#define NMCOMBOBOXEX	NMCOMBOBOXEXA
+#define PNMCOMBOBOXEX	PNMCOMBOBOXEXA
+#define CBEN_DRAGBEGIN	CBEN_DRAGBEGINA
+#define CBEN_GETDISPINFO	CBEN_GETDISPINFOA
+#define NMCBEDRAGBEGIN	NMCBEDRAGBEGINA
+#define LPNMCBEDRAGBEGIN	LPNMCBEDRAGBEGINA
+#define PNMCBEDRAGBEGIN	PNMCBEDRAGBEGINA
+#define TBN_GETDISPINFO TBN_GETDISPINFOA
+#define NMTBDISPINFO NMTBDISPINFOA
+#define LPNMTBDISPINFO LPNMTBDISPINFOA
+#define NMTBGETINFOTIP NMTBGETINFOTIPA
+#define LPNMTBGETINFOTIP LPNMTBGETINFOTIPA
+#endif /* _WIN32_IE >= 0x0400 */
+#define SB_GETTEXT	SB_GETTEXTA
+#define SB_SETTEXT	SB_SETTEXTA
+#define SB_GETTEXTLENGTH	SB_GETTEXTLENGTHA
+#define HDM_INSERTITEM HDM_INSERTITEMA
+#define HDM_GETITEM HDM_GETITEMA
+#define HDM_SETITEM HDM_SETITEMA
+#define HDN_ITEMCHANGING	HDN_ITEMCHANGINGA
+#define HDN_ITEMCHANGED	HDN_ITEMCHANGEDA
+#define HDN_ITEMCLICK	HDN_ITEMCLICKA
+#define HDN_ITEMDBLCLICK	HDN_ITEMDBLCLICKA
+#define HDN_DIVIDERDBLCLICK	HDN_DIVIDERDBLCLICKA
+#define HDN_BEGINTRACK	HDN_BEGINTRACKA
+#define HDN_ENDTRACK	HDN_ENDTRACKA
+#define HDN_TRACK	HDN_TRACKA
+#if (_WIN32_IE >= 0x0300)
+#define HDN_GETDISPINFO HDN_GETDISPINFOA
+#endif
+#define HD_NOTIFY HD_NOTIFYA
+#define TBSAVEPARAMS TBSAVEPARAMSA
+#define TB_GETBUTTONTEXT TB_GETBUTTONTEXTA
+#define TB_SAVERESTORE TB_SAVERESTOREA
+#define TB_ADDSTRING TB_ADDSTRINGA
+#define TBN_GETBUTTONINFO TBN_GETBUTTONINFOA
+#if _WIN32_IE >= 0x400
+#define TBBUTTONINFO TBBUTTONINFOA
+#define LPTBBUTTONINFO LPTBBUTTONINFOA
+#endif
+#define TBNOTIFY TBNOTIFYA
+#define LPTBNOTIFY LPTBNOTIFYA
+#define NMTOOLBAR NMTOOLBARA
+#define LPNMTOOLBAR LPNMTOOLBARA
+#define TTM_ADDTOOL	TTM_ADDTOOLA
+#define TTM_DELTOOL	TTM_DELTOOLA
+#define TTM_NEWTOOLRECT	TTM_NEWTOOLRECTA
+#define TTM_GETTOOLINFO	TTM_GETTOOLINFOA
+#define TTM_SETTOOLINFO	TTM_SETTOOLINFOA
+#define TTM_HITTEST	TTM_HITTESTA
+#define TTM_GETTEXT	TTM_GETTEXTA
+#define TTM_UPDATETIPTEXT	TTM_UPDATETIPTEXTA
+#define TTM_ENUMTOOLS	TTM_ENUMTOOLSA
+#define TTM_GETCURRENTTOOL TTM_GETCURRENTTOOLA
+#define TTN_NEEDTEXT TTN_NEEDTEXTA
+#define TTN_GETDISPINFO TTN_GETDISPINFOA
+#define SB_GETTEXT	SB_GETTEXTA
+#define SB_SETTEXT	SB_SETTEXTA
+#define SB_GETTEXTLENGTH	SB_GETTEXTLENGTHA
+#define LV_ITEM LV_ITEMA
+#define LVITEM LVITEMA
+#define LPSTR_TEXTCALLBACK LPSTR_TEXTCALLBACKA
+#if _WIN32_IE >= 0x0400
+#define LVBKIMAGE	LVBKIMAGEA
+#define LPLVBKIMAGE	LPLVBKIMAGEA
+#define LVM_SETBKIMAGE	LVM_SETBKIMAGEA
+#define LVM_GETBKIMAGE	LVM_GETBKIMAGEA
+#endif /* _WIN32_IE >= 0x0400 */
+#define LVM_GETITEM	LVM_GETITEMA
+#define LVM_SETITEM LVM_SETITEMA
+#define LVM_INSERTITEM LVM_INSERTITEMA
+#define LV_FINDINFO LV_FINDINFOA
+#define LVFINDINFO LVFINDINFOA
+#define LPFINDINFO LPFINDINFOA
+#define NMLVFINDITEM NMLVFINDITEMA
+#define PNMLVFINDITEM PNMLVFINDITEMA
+#define LPNMLVFINDITEM LPNMLVFINDITEMA
+#define LVM_FINDITEM LVM_FINDITEMA
+#define LVM_GETSTRINGWIDTH LVM_GETSTRINGWIDTHA
+#define LVM_EDITLABEL LVM_EDITLABELA
+#define LV_COLUMN LV_COLUMNA
+#define LVCOLUMN LVCOLUMNA
+#define LVM_GETCOLUMN LVM_GETCOLUMNA
+#define LVM_SETCOLUMN LVM_SETCOLUMNA
+#define LVM_INSERTCOLUMN LVM_INSERTCOLUMNA
+#define LVM_GETITEMTEXT LVM_GETITEMTEXTA
+#define LVM_SETITEMTEXT LVM_SETITEMTEXTA
+#define LVM_GETISEARCHSTRING LVM_GETISEARCHSTRINGA
+#define LVN_BEGINLABELEDIT LVN_BEGINLABELEDITA
+#define LVN_ENDLABELEDIT LVN_ENDLABELEDITA
+#define LVN_GETDISPINFO LVN_GETDISPINFOA
+#define LVN_SETDISPINFO LVN_SETDISPINFOA
+#define LVN_GETINFOTIP LVN_GETINFOTIPA
+#define NMLVGETINFOTIP NMLVGETINFOTIPA
+#define LPNMLVGETINFOTIP LPNMLVGETINFOTIPA
+#define LV_DISPINFO LV_DISPINFOA
+#define NMLVDISPINFO NMLVDISPINFOA
+#define LPNMLVDISPINFO LPNMLVDISPINFOA
+#define TVM_INSERTITEM TVM_INSERTITEMA
+#define TVM_GETITEM TVM_GETITEMA
+#define TVM_SETITEM TVM_SETITEMA
+#define TVM_EDITLABEL TVM_EDITLABELA
+#define TVM_GETISEARCHSTRING TVM_GETISEARCHSTRINGA
+#define TV_DISPINFO NMTVDISPINFOA
+#define NMTVDISPINFO NMTVDISPINFOA
+#define LPNMTVDISPINFO LPNMTVDISPINFOA
+#if (_WIN32_IE >= 0x0400)
+#define NMTVGETINFOTIP NMTVGETINFOTIPA
+#define LPNMTVGETINFOTIP LPNMTVGETINFOTIPA
+#define TVN_GETINFOTIP TVN_GETINFOTIPA
+#endif
+#define TVN_SELCHANGING TVN_SELCHANGINGA
+#define TVN_SELCHANGED TVN_SELCHANGEDA
+#define TVN_GETDISPINFO TVN_GETDISPINFOA
+#define TVN_SETDISPINFO TVN_SETDISPINFOA
+#define TVN_ITEMEXPANDING TVN_ITEMEXPANDINGA
+#define TVN_ITEMEXPANDED TVN_ITEMEXPANDEDA
+#define TVN_BEGINDRAG TVN_BEGINDRAGA
+#define TVN_BEGINRDRAG TVN_BEGINRDRAGA
+#define TVN_DELETEITEM TVN_DELETEITEMA
+#define TVN_BEGINLABELEDIT TVN_BEGINLABELEDITA
+#define TVN_ENDLABELEDIT TVN_ENDLABELEDITA
+#define TC_ITEMHEADER TC_ITEMHEADERA
+#define TCITEMHEADER TCITEMHEADERA
+#define LPTCITEMHEADER LPTCITEMHEADERA
+#define TC_ITEM TC_ITEMA
+#define TCITEM TCITEMA
+#define LPTCITEM LPTCITEMA
+#define TCM_GETITEM TCM_GETITEMA
+#define TCM_SETITEM TCM_SETITEMA
+#define TCM_INSERTITEM TCM_INSERTITEMA
+#define CreateStatusWindow CreateStatusWindowA
+#define DrawStatusText DrawStatusTextA
+#define ImageList_LoadImage ImageList_LoadImageA
+#define DTM_SETFORMAT	  DTM_SETFORMATA
+#define DTN_USERSTRING DTN_USERSTRINGA
+#define DTN_WMKEYDOWN DTN_WMKEYDOWNA
+#define DTN_FORMAT DTN_FORMATA
+#define DTN_FORMATQUERY DTN_FORMATQUERYA
+typedef REBARBANDINFOA REBARBANDINFO,*LPREBARBANDINFO;
+#define LPCREBARBANDINFO LPCREBARBANDINFOA
+#define REBARBANDINFO_V3_SIZE REBARBANDINFOA_V3_SIZE
+#define RB_INSERTBAND RB_INSERTBANDA
+#define RB_SETBANDINFO RB_SETBANDINFOA
+#endif
+#endif /* RC_INVOKED */
+
+#ifdef _WIN32_WCE               /* these are PPC only */
+
+COMMCTRLAPI HWND WINAPI CommandBar_Create(HINSTANCE, HWND, int);
+COMMCTRLAPI BOOL WINAPI CommandBar_Show(HWND, BOOL);
+COMMCTRLAPI int WINAPI CommandBar_AddBitmap(HWND, HINSTANCE, int, int, int, int);
+COMMCTRLAPI HWND WINAPI CommandBar_InsertComboBox(HWND, HINSTANCE, int, UINT, WORD, WORD);
+COMMCTRLAPI BOOL WINAPI CommandBar_InsertMenubar(HWND, HINSTANCE, WORD, WORD );
+COMMCTRLAPI BOOL WINAPI CommandBar_InsertMenubarEx(HWND, HINSTANCE, LPTSTR, WORD);
+COMMCTRLAPI BOOL WINAPI CommandBar_DrawMenuBar(HWND, WORD);
+COMMCTRLAPI HMENU WINAPI CommandBar_GetMenu(HWND, WORD);
+COMMCTRLAPI BOOL WINAPI CommandBar_AddAdornments(HWND, DWORD, DWORD);
+COMMCTRLAPI int WINAPI CommandBar_Height(HWND hwndCB);
+
+/* These two are not in the DLL */
+#define CommandBar_InsertButton(hwnd,i,lptbbutton)              \
+    SendMessage((hwnd),TB_INSERTBUTTON,(i),(lptbbutton))
+#define CommandBar_Destroy(hwnd)                                \
+    DestroyWindow(hwnd)
+
+
+#endif /* _WIN32_WCE */
+
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/commdlg.h
===================================================================
--- Daodan/MinGW/include/commdlg.h	(revision 1046)
+++ Daodan/MinGW/include/commdlg.h	(revision 1046)
@@ -0,0 +1,609 @@
+#ifndef _COMMDLG_H
+#define _COMMDLG_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#pragma pack(push,1)
+
+#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"
+#ifndef CDN_FIRST
+#define CDN_FIRST	((UINT)-601) /* also in commctrl.h */
+#define CDN_LAST	((UINT)-699)
+#endif
+#define CDN_INITDONE	CDN_FIRST
+#define CDN_SELCHANGE	(CDN_FIRST-1U)
+#define CDN_FOLDERCHANGE	(CDN_FIRST-2U)
+#define CDN_SHAREVIOLATION	(CDN_FIRST-3U)
+#define CDN_HELP	(CDN_FIRST-4U)
+#define CDN_FILEOK	(CDN_FIRST-5U)
+#define CDN_TYPECHANGE	(CDN_FIRST-6U)
+#define CDM_FIRST	(WM_USER+100)
+#define CDM_LAST	(WM_USER+200)
+#define CDM_GETSPEC	CDM_FIRST
+#define CDM_GETFILEPATH	(CDM_FIRST+1)
+#define CDM_GETFOLDERPATH (CDM_FIRST+2)
+#define CDM_GETFOLDERIDLIST	(CDM_FIRST+3)
+#define CDM_SETCONTROLTEXT	(CDM_FIRST+4)
+#define CDM_HIDECONTROL	(CDM_FIRST+5)
+#define CDM_SETDEFEXT	(CDM_FIRST+6)
+#define CC_RGBINIT	1
+#define CC_FULLOPEN	2
+#define CC_PREVENTFULLOPEN	4
+#define CC_SHOWHELP	8
+#define CC_ENABLEHOOK	16
+#define CC_ENABLETEMPLATE	32
+#define CC_ENABLETEMPLATEHANDLE	64
+#define CC_SOLIDCOLOR	128
+#define CC_ANYCOLOR	256
+#define CF_SCREENFONTS	1
+#define CF_PRINTERFONTS	2
+#define CF_BOTH	3
+#define CF_SHOWHELP	4
+#define CF_ENABLEHOOK	8
+#define CF_ENABLETEMPLATE	16
+#define CF_ENABLETEMPLATEHANDLE	32
+#define CF_INITTOLOGFONTSTRUCT	64
+#define CF_USESTYLE	128
+#define CF_EFFECTS	256
+#define CF_APPLY	512
+#define CF_ANSIONLY	1024
+#define CF_SCRIPTSONLY	CF_ANSIONLY
+#define CF_NOVECTORFONTS	2048
+#define CF_NOOEMFONTS	2048
+#define CF_NOSIMULATIONS	4096
+#define CF_LIMITSIZE	8192
+#define CF_FIXEDPITCHONLY	16384
+#define CF_WYSIWYG	32768
+#define CF_FORCEFONTEXIST	65536
+#define CF_SCALABLEONLY	131072
+#define CF_TTONLY	262144
+#define CF_NOFACESEL	 524288
+#define CF_NOSTYLESEL	 1048576
+#define CF_NOSIZESEL	 2097152
+#define CF_SELECTSCRIPT	 4194304
+#define CF_NOSCRIPTSEL	 8388608
+#define CF_NOVERTFONTS	0x1000000
+#define SIMULATED_FONTTYPE	0x8000
+#define PRINTER_FONTTYPE	0x4000
+#define SCREEN_FONTTYPE	0x2000
+#define BOLD_FONTTYPE	0x100
+#define ITALIC_FONTTYPE	0x0200
+#define REGULAR_FONTTYPE	0x0400
+#define WM_CHOOSEFONT_GETLOGFONT	(WM_USER+1)
+#define WM_CHOOSEFONT_SETLOGFONT	(WM_USER+101)
+#define WM_CHOOSEFONT_SETFLAGS	(WM_USER+102)
+#define OFN_ALLOWMULTISELECT 512
+#define OFN_CREATEPROMPT 0x2000
+#define OFN_ENABLEHOOK 32
+#define OFN_ENABLESIZING 0x800000
+#define OFN_ENABLETEMPLATE 64
+#define OFN_ENABLETEMPLATEHANDLE 128
+#define OFN_EXPLORER 0x80000
+#define OFN_EXTENSIONDIFFERENT 0x400
+#define OFN_FILEMUSTEXIST 0x1000
+#define OFN_HIDEREADONLY 4
+#define OFN_LONGNAMES 0x200000
+#define OFN_NOCHANGEDIR 8
+#define OFN_NODEREFERENCELINKS 0x100000
+#define OFN_NOLONGNAMES 0x40000
+#define OFN_NONETWORKBUTTON 0x20000
+#define OFN_NOREADONLYRETURN 0x8000
+#define OFN_NOTESTFILECREATE 0x10000
+#define OFN_NOVALIDATE 256
+#define OFN_OVERWRITEPROMPT 2
+#define OFN_PATHMUSTEXIST 0x800
+#define OFN_READONLY 1
+#define OFN_SHAREAWARE 0x4000
+#define OFN_SHOWHELP 16
+#define OFN_SHAREFALLTHROUGH 2
+#define OFN_SHARENOWARN 1
+#define OFN_SHAREWARN 0
+#define OFN_NODEREFERENCELINKS 0x100000
+#if (_WIN32_WINNT >= 0x0500)
+#define OFN_DONTADDTORECENT 0x02000000
+#endif
+#define FR_DIALOGTERM 64
+#define FR_DOWN 1
+#define FR_ENABLEHOOK 256
+#define FR_ENABLETEMPLATE 512
+#define FR_ENABLETEMPLATEHANDLE 0x2000
+#define FR_FINDNEXT 8
+#define FR_HIDEUPDOWN 0x4000
+#define FR_HIDEMATCHCASE 0x8000
+#define FR_HIDEWHOLEWORD 0x10000
+#define FR_MATCHALEFHAMZA	0x80000000
+#define FR_MATCHCASE 4
+#define FR_MATCHDIAC	0x20000000
+#define FR_MATCHKASHIDA	0x40000000
+#define FR_NOMATCHCASE 0x800
+#define FR_NOUPDOWN 0x400
+#define FR_NOWHOLEWORD 4096
+#define FR_REPLACE 16
+#define FR_REPLACEALL 32
+#define FR_SHOWHELP 128
+#define FR_WHOLEWORD 2
+#define PD_ALLPAGES	0x00000000
+#define PD_SELECTION	0x00000001
+#define PD_PAGENUMS	0x00000002
+#define PD_NOSELECTION	0x00000004
+#define PD_NOPAGENUMS	0x00000008
+#define PD_COLLATE	0x00000010
+#define PD_PRINTTOFILE	0x00000020
+#define PD_PRINTSETUP	0x00000040
+#define PD_NOWARNING	0x00000080
+#define PD_RETURNDC	0x00000100
+#define PD_RETURNIC	0x00000200
+#define PD_RETURNDEFAULT	0x00000400
+#define PD_SHOWHELP	0x00000800
+#define PD_ENABLEPRINTHOOK	0x00001000
+#define PD_ENABLESETUPHOOK	0x00002000
+#define PD_ENABLEPRINTTEMPLATE	0x00004000
+#define PD_ENABLESETUPTEMPLATE 0x00008000
+#define PD_ENABLEPRINTTEMPLATEHANDLE 0x00010000
+#define PD_ENABLESETUPTEMPLATEHANDLE 0x00020000
+#define PD_USEDEVMODECOPIES	0x00040000
+#define PD_USEDEVMODECOPIESANDCOLLATE	0x00040000
+#define PD_DISABLEPRINTTOFILE	0x00080000
+#define PD_HIDEPRINTTOFILE	0x00100000
+#define PD_NONETWORKBUTTON	0x00200000
+#if (_WIN32_WINNT >= 0x0500)
+#define PD_CURRENTPAGE	0x00400000
+#define PD_NOCURRENTPAGE	0x00800000
+#define PD_EXCLUSIONFLAGS	0x01000000
+#define PD_USELARGETEMPLATE	0x10000000
+#define PD_RESULT_CANCEL	0
+#define PD_RESULT_PRINT	1
+#define PD_RESULT_APPLY	2
+#define START_PAGE_GENERAL	0XFFFFFFFF
+#endif
+#define PSD_DEFAULTMINMARGINS	0
+#define PSD_INWININIINTLMEASURE	0
+#define PSD_MINMARGINS	1
+#define PSD_MARGINS	2
+#define PSD_INTHOUSANDTHSOFINCHES	4
+#define PSD_INHUNDREDTHSOFMILLIMETERS	8
+#define PSD_DISABLEMARGINS	16
+#define PSD_DISABLEPRINTER	32
+#define PSD_NOWARNING	128
+#define PSD_DISABLEORIENTATION	256
+#define PSD_DISABLEPAPER	512
+#define PSD_RETURNDEFAULT	1024
+#define PSD_SHOWHELP	2048
+#define PSD_ENABLEPAGESETUPHOOK 8192
+#define PSD_ENABLEPAGESETUPTEMPLATE	0x8000
+#define PSD_ENABLEPAGESETUPTEMPLATEHANDLE	0x20000
+#define PSD_ENABLEPAGEPAINTHOOK	0x40000
+#define PSD_DISABLEPAGEPAINTING	0x80000
+#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)
+#define CD_LBSELNOITEMS (-1)
+#define CD_LBSELCHANGE   0
+#define CD_LBSELSUB      1
+#define CD_LBSELADD      2
+#define DN_DEFAULTPRN	1
+#if (_WIN32_WINNT >= 0x0500)
+#define OPENFILENAME_SIZE_VERSION_400  76
+#endif
+
+#ifndef SNDMSG
+#ifdef __cplusplus
+#define SNDMSG ::SendMessage
+#else
+#define SNDMSG SendMessage
+#endif
+#endif /* ifndef SNDMSG */
+
+#define CommDlg_OpenSave_GetSpec(d,s,m) ((int)SNDMSG((d),CDM_GETSPEC,(m),(LPARAM)(s)))
+#define CommDlg_OpenSave_GetSpecA CommDlg_OpenSave_GetSpec
+#define CommDlg_OpenSave_GetSpecW CommDlg_OpenSave_GetSpec
+#define CommDlg_OpenSave_GetFilePath(d,s,m) ((int)SNDMSG((d),CDM_GETFILEPATH,(m),(LPARAM)(s)))
+#define CommDlg_OpenSave_GetFilePathA CommDlg_OpenSave_GetFilePath
+#define CommDlg_OpenSave_GetFilePathW CommDlg_OpenSave_GetFilePath
+#define CommDlg_OpenSave_GetFolderPath(d,s,m) ((int)SNDMSG((d),CDM_GETFOLDERPATH,(m),(LPARAM)(LPSTR)(s)))
+#define CommDlg_OpenSave_GetFolderPathA CommDlg_OpenSave_GetFolderPath
+#define CommDlg_OpenSave_GetFolderPathW CommDlg_OpenSave_GetFolderPath
+#define CommDlg_OpenSave_GetFolderIDList(d,i,m) ((int)SNDMSG((d),CDM_GETFOLDERIDLIST,(m),(LPARAM)(i)))
+#define CommDlg_OpenSave_SetControlText(d,i,t) ((void)SNDMSG((d),CDM_SETCONTROLTEXT,(i),(LPARAM)(t)))
+#define CommDlg_OpenSave_HideControl(d,i) ((void)SNDMSG((d),CDM_HIDECONTROL,(i),0))
+#define CommDlg_OpenSave_SetDefExt(d,e) ((void)SNDMSG((d),CDM_SETDEFEXT,0,(LPARAM)(e)))
+
+typedef UINT (APIENTRY *__CDHOOKPROC)(HWND,UINT,WPARAM,LPARAM);
+typedef __CDHOOKPROC LPCCHOOKPROC;
+typedef __CDHOOKPROC LPCFHOOKPROC;
+typedef __CDHOOKPROC LPFRHOOKPROC;
+typedef __CDHOOKPROC LPOFNHOOKPROC;
+typedef __CDHOOKPROC LPPAGEPAINTHOOK;
+typedef __CDHOOKPROC LPPAGESETUPHOOK;
+typedef __CDHOOKPROC LPSETUPHOOKPROC;
+typedef __CDHOOKPROC LPPRINTHOOKPROC;
+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 struct tagCHOOSEFONTA {
+	DWORD	lStructSize;
+	HWND	hwndOwner;
+	HDC	hDC;
+	LPLOGFONTA	lpLogFont;
+	INT	iPointSize;
+	DWORD	Flags;
+	DWORD	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;
+	DWORD	rgbColors;
+	LPARAM	lCustData;
+	LPCFHOOKPROC	lpfnHook;
+	LPCWSTR	lpTemplateName;
+	HINSTANCE	hInstance;
+	LPWSTR	lpszStyle;
+	WORD	nFontType;
+	WORD	___MISSING_ALIGNMENT__;
+	INT	nSizeMin;
+	INT	nSizeMax;
+} CHOOSEFONTW,*LPCHOOSEFONTW;
+typedef struct tagDEVNAMES {
+	WORD wDriverOffset;
+	WORD wDeviceOffset;
+	WORD wOutputOffset;
+	WORD wDefault;
+} DEVNAMES,*LPDEVNAMES;
+typedef struct {
+	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 {
+	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 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;
+	DWORD lCustData;
+	LPOFNHOOKPROC lpfnHook;
+	LPCSTR lpTemplateName;
+#if (_WIN32_WINNT >= 0x0500)
+	void * pvReserved;
+	DWORD dwReserved;
+	DWORD FlagsEx;
+#endif /* (_WIN32_WINNT >= 0x0500) */
+} 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;
+	DWORD lCustData;
+	LPOFNHOOKPROC lpfnHook;
+	LPCWSTR lpTemplateName;
+#if (_WIN32_WINNT >= 0x0500)
+	void * pvReserved;
+	DWORD dwReserved;
+	DWORD FlagsEx;
+#endif /* (_WIN32_WINNT >= 0x0500) */
+} OPENFILENAMEW,*LPOPENFILENAMEW;
+typedef struct _OFNOTIFYA {
+	NMHDR hdr;
+	LPOPENFILENAMEA lpOFN;
+	LPSTR pszFile;
+} OFNOTIFYA,*LPOFNOTIFYA;
+typedef struct _OFNOTIFYW {
+	NMHDR hdr;
+	LPOPENFILENAMEW lpOFN;
+	LPWSTR pszFile;
+} OFNOTIFYW,*LPOFNOTIFYW;
+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 struct tagPDA {
+	DWORD lStructSize;
+	HWND hwndOwner;
+	HANDLE hDevMode;
+	HANDLE hDevNames;
+	HDC hDC;
+	DWORD Flags;
+	WORD nFromPage;
+	WORD nToPage;
+	WORD nMinPage;
+	WORD nMaxPage;
+	WORD nCopies;
+	HINSTANCE hInstance;
+	DWORD lCustData;
+	LPPRINTHOOKPROC lpfnPrintHook;
+	LPSETUPHOOKPROC lpfnSetupHook;
+	LPCSTR lpPrintTemplateName;
+	LPCSTR lpSetupTemplateName;
+	HANDLE hPrintTemplate;
+	HANDLE hSetupTemplate;
+} PRINTDLGA,*LPPRINTDLGA;
+typedef struct tagPDW {
+	DWORD lStructSize;
+	HWND hwndOwner;
+	HANDLE hDevMode;
+	HANDLE hDevNames;
+	HDC hDC;
+	DWORD Flags;
+	WORD nFromPage;
+	WORD nToPage;
+	WORD nMinPage;
+	WORD nMaxPage;
+	WORD nCopies;
+	HINSTANCE hInstance;
+	DWORD lCustData;
+	LPPRINTHOOKPROC lpfnPrintHook;
+	LPSETUPHOOKPROC lpfnSetupHook;
+	LPCWSTR lpPrintTemplateName;
+	LPCWSTR lpSetupTemplateName;
+	HANDLE hPrintTemplate;
+	HANDLE hSetupTemplate;
+} PRINTDLGW,*LPPRINTDLGW;
+#if (WINVER >= 0x0500) && !defined (_OBJC_NO_COM)
+#include <unknwn.h>  /* for LPUNKNOWN  */
+#include <prsht.h>   /* for HPROPSHEETPAGE  */
+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;
+#endif /* WINVER >= 0x0500 */
+
+BOOL WINAPI ChooseColorA(LPCHOOSECOLORA);
+BOOL WINAPI ChooseColorW(LPCHOOSECOLORW);
+BOOL WINAPI ChooseFontA(LPCHOOSEFONTA);
+BOOL WINAPI ChooseFontW(LPCHOOSEFONTW);
+DWORD WINAPI CommDlgExtendedError(void);
+HWND WINAPI FindTextA(LPFINDREPLACEA);
+HWND WINAPI FindTextW(LPFINDREPLACEW);
+short WINAPI GetFileTitleA(LPCSTR,LPSTR,WORD);
+short WINAPI GetFileTitleW(LPCWSTR,LPWSTR,WORD);
+BOOL WINAPI GetOpenFileNameA(LPOPENFILENAMEA);
+BOOL WINAPI GetOpenFileNameW(LPOPENFILENAMEW);
+BOOL WINAPI GetSaveFileNameA(LPOPENFILENAMEA);
+BOOL WINAPI GetSaveFileNameW(LPOPENFILENAMEW);
+BOOL WINAPI PageSetupDlgA(LPPAGESETUPDLGA);
+BOOL WINAPI PageSetupDlgW(LPPAGESETUPDLGW);
+BOOL WINAPI PrintDlgA(LPPRINTDLGA);
+BOOL WINAPI PrintDlgW(LPPRINTDLGW);
+HWND WINAPI ReplaceTextA(LPFINDREPLACEA);
+HWND WINAPI ReplaceTextW(LPFINDREPLACEW);
+#if (WINVER >= 0x0500) && !defined (_OBJC_NO_COM)
+HRESULT WINAPI PrintDlgExA(LPPRINTDLGEXA);
+HRESULT WINAPI PrintDlgExW(LPPRINTDLGEXW);
+#endif /* WINVER >= 0x0500 */
+
+#ifdef UNICODE
+#define LBSELCHSTRING  LBSELCHSTRINGW
+#define SHAREVISTRING  SHAREVISTRINGW
+#define FILEOKSTRING   FILEOKSTRINGW
+#define COLOROKSTRING  COLOROKSTRINGW
+#define SETRGBSTRING   SETRGBSTRINGW
+#define HELPMSGSTRING  HELPMSGSTRINGW
+#define FINDMSGSTRING  FINDMSGSTRINGW
+typedef CHOOSECOLORW CHOOSECOLOR,*LPCHOOSECOLOR;
+typedef CHOOSEFONTW CHOOSEFONT,*LPCHOOSEFONT;
+typedef FINDREPLACEW FINDREPLACE,*LPFINDREPLACE;
+typedef OPENFILENAMEW OPENFILENAME,*LPOPENFILENAME;
+typedef OFNOTIFYW OFNOTIFY,*LPOFNOTIFY;
+typedef PAGESETUPDLGW PAGESETUPDLG,*LPPAGESETUPDLG;
+typedef PRINTDLGW PRINTDLG,*LPPRINTDLG;
+#define ChooseColor ChooseColorW
+#define ChooseFont ChooseFontW
+#define FindText FindTextW
+#define GetFileTitle GetFileTitleW
+#define GetOpenFileName GetOpenFileNameW
+#define GetSaveFileName GetSaveFileNameW
+#define PageSetupDlg PageSetupDlgW
+#define PrintDlg PrintDlgW
+#define ReplaceText ReplaceTextW
+#if (WINVER >= 0x0500) && !defined (_OBJC_NO_COM)
+typedef PRINTDLGEXW PRINTDLGEX, *LPPRINTDLGEX;
+#define PrintDlgEx PrintDlgExW
+#endif /* WINVER >= 0x0500 */
+#else /* UNICODE */
+#define LBSELCHSTRING  LBSELCHSTRINGA
+#define SHAREVISTRING  SHAREVISTRINGA
+#define FILEOKSTRING   FILEOKSTRINGA
+#define COLOROKSTRING  COLOROKSTRINGA
+#define SETRGBSTRING   SETRGBSTRINGA
+#define HELPMSGSTRING  HELPMSGSTRINGA
+#define FINDMSGSTRING  FINDMSGSTRINGA
+typedef CHOOSECOLORA CHOOSECOLOR,*LPCHOOSECOLOR;
+typedef CHOOSEFONTA CHOOSEFONT,*LPCHOOSEFONT;
+typedef FINDREPLACEA FINDREPLACE,*LPFINDREPLACE;
+typedef OPENFILENAMEA OPENFILENAME,*LPOPENFILENAME;
+typedef OFNOTIFYA OFNOTIFY,*LPOFNOTIFY;
+typedef PAGESETUPDLGA PAGESETUPDLG,*LPPAGESETUPDLG;
+typedef PRINTDLGA PRINTDLG,*LPPRINTDLG;
+#define ChooseColor ChooseColorA
+#define ChooseFont ChooseFontA
+#define FindText FindTextA
+#define GetFileTitle GetFileTitleA
+#define GetOpenFileName GetOpenFileNameA
+#define GetSaveFileName GetSaveFileNameA
+#define PageSetupDlg PageSetupDlgA
+#define PrintDlg PrintDlgA
+#define ReplaceText ReplaceTextA
+#if (WINVER >= 0x0500) && !defined (_OBJC_NO_COM)
+typedef PRINTDLGEXA PRINTDLGEX, *LPPRINTDLGEX;
+#define PrintDlgEx PrintDlgExA
+#endif /* WINVER >= 0x0500 */
+#endif /* UNICODE */
+#pragma pack(pop)
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/complex.h
===================================================================
--- Daodan/MinGW/include/complex.h	(revision 1046)
+++ Daodan/MinGW/include/complex.h	(revision 1046)
@@ -0,0 +1,205 @@
+/*
+ * complex.h
+ *
+ * This file is part of the Mingw32 package.
+ *
+ * Contributors:
+ *  Created by Danny Smith <dannysmith@users.sourceforge.net>
+ *
+ *  THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ *  This source code is offered for use in the public domain. You may
+ *  use, modify or distribute it freely.
+ *
+ *  This code is distributed in the hope that it will be useful but
+ *  WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ *  DISCLAIMED. This includes but is not limited to warranties of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef _COMPLEX_H_
+#define _COMPLEX_H_
+
+/* All the headers include this file. */
+#include <_mingw.h>
+
+/* These macros are specified by C99 standard */
+
+#ifndef __cplusplus
+#define complex _Complex
+#endif
+
+#define _Complex_I  (0.0F +  1.0iF)
+
+/* GCC doesn't support _Imaginary type yet, so we don't
+   define _Imaginary_I */
+
+#define I _Complex_I
+
+_BEGIN_C_DECLS
+
+#ifndef RC_INVOKED
+
+double __MINGW_ATTRIB_CONST creal (double _Complex);
+double __MINGW_ATTRIB_CONST cimag (double _Complex);
+double __MINGW_ATTRIB_CONST carg (double _Complex);
+double __MINGW_ATTRIB_CONST cabs (double _Complex);
+double _Complex __MINGW_ATTRIB_CONST conj (double _Complex);
+double _Complex  cacos (double _Complex);
+double _Complex  casin (double _Complex);
+double _Complex  catan (double _Complex);
+double _Complex  ccos (double _Complex);
+double _Complex  csin (double _Complex);
+double _Complex  ctan (double _Complex);
+double _Complex  cacosh (double _Complex);
+double _Complex  casinh (double _Complex);
+double _Complex  catanh (double _Complex);
+double _Complex  ccosh (double _Complex);
+double _Complex  csinh (double _Complex);
+double _Complex  ctanh (double _Complex);
+double _Complex  cexp (double _Complex);
+double _Complex  clog (double _Complex);
+double _Complex  cpow (double _Complex, double _Complex);
+double _Complex  csqrt (double _Complex);
+double _Complex __MINGW_ATTRIB_CONST cproj (double _Complex);
+
+float __MINGW_ATTRIB_CONST crealf (float _Complex);
+float __MINGW_ATTRIB_CONST cimagf (float _Complex);
+float __MINGW_ATTRIB_CONST cargf (float _Complex);
+float __MINGW_ATTRIB_CONST cabsf (float _Complex);
+float _Complex __MINGW_ATTRIB_CONST conjf (float _Complex);
+float _Complex  cacosf (float _Complex);
+float _Complex  casinf (float _Complex);
+float _Complex  catanf (float _Complex);
+float _Complex  ccosf (float _Complex);
+float _Complex  csinf (float _Complex);
+float _Complex  ctanf (float _Complex);
+float _Complex  cacoshf (float _Complex);
+float _Complex  casinhf (float _Complex);
+float _Complex  catanhf (float _Complex);
+float _Complex  ccoshf (float _Complex);
+float _Complex  csinhf (float _Complex);
+float _Complex  ctanhf (float _Complex);
+float _Complex  cexpf (float _Complex);
+float _Complex  clogf (float _Complex);
+float _Complex  cpowf (float _Complex, float _Complex);
+float _Complex  csqrtf (float _Complex);
+float _Complex __MINGW_ATTRIB_CONST cprojf (float _Complex);
+
+long double __MINGW_ATTRIB_CONST creall (long double _Complex);
+long double __MINGW_ATTRIB_CONST cimagl (long double _Complex);
+long double __MINGW_ATTRIB_CONST cargl (long double _Complex);
+long double __MINGW_ATTRIB_CONST cabsl (long double _Complex);
+long double _Complex __MINGW_ATTRIB_CONST conjl (long double _Complex);
+long double _Complex  cacosl (long double _Complex);
+long double _Complex  casinl (long double _Complex);
+long double _Complex  catanl (long double _Complex);
+long double _Complex  ccosl (long double _Complex);
+long double _Complex  csinl (long double _Complex);
+long double _Complex  ctanl (long double _Complex);
+long double _Complex  cacoshl (long double _Complex);
+long double _Complex  casinhl (long double _Complex);
+long double _Complex  catanhl (long double _Complex);
+long double _Complex  ccoshl (long double _Complex);
+long double _Complex  csinhl (long double _Complex);
+long double _Complex  ctanhl (long double _Complex);
+long double _Complex  cexpl (long double _Complex);
+long double _Complex  clogl (long double _Complex);
+long double _Complex  cpowl (long double _Complex, long double _Complex);
+long double _Complex  csqrtl (long double _Complex);
+long double _Complex __MINGW_ATTRIB_CONST cprojl (long double _Complex);
+
+#ifdef __GNUC__
+
+/* double */
+__CRT_INLINE __LIBIMPL__(( FUNCTION = creal ))
+double __MINGW_ATTRIB_CONST creal (double _Complex _Z)
+{
+  return __real__ _Z;
+}
+
+__CRT_INLINE __LIBIMPL__(( FUNCTION = cimag ))
+double __MINGW_ATTRIB_CONST cimag (double _Complex _Z)
+{
+  return __imag__ _Z;
+}
+
+__CRT_INLINE __LIBIMPL__(( FUNCTION = conj ))
+double _Complex __MINGW_ATTRIB_CONST conj (double _Complex _Z)
+{
+  return __extension__ ~_Z;
+}
+
+__CRT_INLINE __LIBIMPL__(( FUNCTION = carg ))
+double __MINGW_ATTRIB_CONST carg (double _Complex _Z)
+{
+  double res;
+  __asm__  ("fpatan;"
+	   : "=t" (res) : "0" (__real__ _Z), "u" (__imag__ _Z) : "st(1)");
+  return res;
+}
+
+
+/* float */
+__CRT_INLINE __LIBIMPL__(( FUNCTION = crealf ))
+float __MINGW_ATTRIB_CONST crealf (float _Complex _Z)
+{
+  return __real__ _Z;
+}
+
+__CRT_INLINE __LIBIMPL__(( FUNCTION = cimagf ))
+float __MINGW_ATTRIB_CONST cimagf (float _Complex _Z)
+{
+  return __imag__ _Z;
+}
+
+__CRT_INLINE __LIBIMPL__(( FUNCTION = conjf ))
+float _Complex __MINGW_ATTRIB_CONST conjf (float _Complex _Z)
+{
+  return __extension__ ~_Z;
+}
+
+__CRT_INLINE __LIBIMPL__(( FUNCTION = cargf ))
+float __MINGW_ATTRIB_CONST cargf (float _Complex _Z)
+{
+  float res;
+  __asm__  ("fpatan;"
+	   : "=t" (res) : "0" (__real__ _Z), "u" (__imag__ _Z) : "st(1)");
+  return res;
+}
+
+/* long double */
+__CRT_INLINE __LIBIMPL__(( FUNCTION = creall ))
+long double __MINGW_ATTRIB_CONST creall (long double _Complex _Z)
+{
+  return __real__ _Z;
+}
+
+__CRT_INLINE __LIBIMPL__(( FUNCTION = cimagl ))
+long double __MINGW_ATTRIB_CONST cimagl (long double _Complex _Z)
+{
+  return __imag__ _Z;
+}
+
+__CRT_INLINE __LIBIMPL__(( FUNCTION = conjl ))
+long double _Complex __MINGW_ATTRIB_CONST conjl (long double _Complex _Z)
+{
+  return __extension__ ~_Z;
+}
+
+__CRT_INLINE __LIBIMPL__(( FUNCTION = cargl ))
+long double __MINGW_ATTRIB_CONST cargl (long double _Complex _Z)
+{
+  long double res;
+  __asm__  ("fpatan;"
+	   : "=t" (res) : "0" (__real__ _Z), "u" (__imag__ _Z) : "st(1)");
+  return res;
+}
+
+#endif /* __GNUC__ */
+#endif /* RC_INVOKED */
+
+_END_C_DECLS
+
+#endif /* _COMPLEX_H */
Index: Daodan/MinGW/include/conio.h
===================================================================
--- Daodan/MinGW/include/conio.h	(revision 1046)
+++ Daodan/MinGW/include/conio.h	(revision 1046)
@@ -0,0 +1,53 @@
+/*
+ * conio.h
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is a part of the mingw-runtime package.
+ * No warranty is given; refer to the file DISCLAIMER within the package.
+ *
+ * Low level console I/O functions. Pretty please try to use the ANSI
+ * standard ones if you are writing new code.
+ *
+ */
+
+#ifndef	_CONIO_H_
+#define	_CONIO_H_
+
+/* All the headers include this file. */
+#include <_mingw.h>
+
+#ifndef RC_INVOKED
+
+#ifdef	__cplusplus
+extern "C" {
+#endif
+
+_CRTIMP char* __cdecl __MINGW_NOTHROW	_cgets (char*);
+_CRTIMP int __cdecl __MINGW_NOTHROW	_cprintf (const char*, ...);
+_CRTIMP int __cdecl __MINGW_NOTHROW	_cputs (const char*);
+_CRTIMP int __cdecl __MINGW_NOTHROW	_cscanf (char*, ...);
+
+_CRTIMP int __cdecl __MINGW_NOTHROW	_getch (void);
+_CRTIMP int __cdecl __MINGW_NOTHROW	_getche (void);
+_CRTIMP int __cdecl __MINGW_NOTHROW	_kbhit (void);
+_CRTIMP int __cdecl __MINGW_NOTHROW	_putch (int);
+_CRTIMP int __cdecl __MINGW_NOTHROW	_ungetch (int);
+
+
+#ifndef	_NO_OLDNAMES
+
+_CRTIMP int __cdecl __MINGW_NOTHROW	getch (void);
+_CRTIMP int __cdecl __MINGW_NOTHROW	getche (void);
+_CRTIMP int __cdecl __MINGW_NOTHROW	kbhit (void);
+_CRTIMP int __cdecl __MINGW_NOTHROW	putch (int);
+_CRTIMP int __cdecl __MINGW_NOTHROW	ungetch (int);
+
+#endif	/* Not _NO_OLDNAMES */
+
+
+#ifdef	__cplusplus
+}
+#endif
+
+#endif	/* Not RC_INVOKED */
+
+#endif	/* Not _CONIO_H_ */
Index: Daodan/MinGW/include/control.h
===================================================================
--- Daodan/MinGW/include/control.h	(revision 1046)
+++ Daodan/MinGW/include/control.h	(revision 1046)
@@ -0,0 +1,18 @@
+#ifndef _CONTROL_H
+#define _CONTROL_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*--- DirectShow Reference - DirectShow Data Types */
+typedef LONG_PTR OAEVENT;
+typedef LONG_PTR OAHWND;
+
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/cpl.h
===================================================================
--- Daodan/MinGW/include/cpl.h	(revision 1046)
+++ Daodan/MinGW/include/cpl.h	(revision 1046)
@@ -0,0 +1,61 @@
+#ifndef _CPL_H
+#define _CPL_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define WM_CPL_LAUNCH (WM_USER+1000)
+#define WM_CPL_LAUNCHED (WM_USER+1001)
+#define CPL_DYNAMIC_RES 0
+#define CPL_INIT 1
+#define CPL_GETCOUNT 2
+#define CPL_INQUIRE 3
+#define CPL_SELECT 4
+#define CPL_DBLCLK 5
+#define CPL_STOP 6
+#define CPL_EXIT 7
+#define CPL_NEWINQUIRE 8
+#define CPL_STARTWPARMSA 9
+#define CPL_STARTWPARMSW 10
+#define CPL_SETUP 200
+typedef LONG(APIENTRY *APPLET_PROC)(HWND,UINT,LONG,LONG);
+typedef struct tagCPLINFO {
+	int idIcon;
+	int idName;
+	int idInfo;
+	LONG lData;
+} CPLINFO,*LPCPLINFO;
+typedef struct tagNEWCPLINFOA {
+	DWORD dwSize;
+	DWORD dwFlags;
+	DWORD dwHelpContext;
+	LONG lData;
+	HICON hIcon;
+	CHAR szName[32];
+	CHAR szInfo[64];
+	CHAR szHelpFile[128];
+} NEWCPLINFOA,*LPNEWCPLINFOA;
+typedef struct tagNEWCPLINFOW {
+	DWORD dwSize;
+	DWORD dwFlags;
+	DWORD dwHelpContext;
+	LONG lData;
+	HICON hIcon;
+	WCHAR szName[32];
+	WCHAR szInfo[64];
+	WCHAR szHelpFile[128];
+} NEWCPLINFOW,*LPNEWCPLINFOW;
+#ifdef UNICODE
+#define CPL_STARTWPARMS CPL_STARTWPARMSW
+typedef NEWCPLINFOW NEWCPLINFO,*LPNEWCPLINFO;
+#else
+#define CPL_STARTWPARMS CPL_STARTWPARMSA
+typedef NEWCPLINFOA NEWCPLINFO,*LPNEWCPLINFO;
+#endif
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/cplext.h
===================================================================
--- Daodan/MinGW/include/cplext.h	(revision 1046)
+++ Daodan/MinGW/include/cplext.h	(revision 1046)
@@ -0,0 +1,12 @@
+#ifndef _CPLEXT_H
+#define _CPLEXT_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#define CPLPAGE_MOUSE_BUTTONS 1
+#define CPLPAGE_MOUSE_PTRMOTION 2
+#define CPLPAGE_MOUSE_WHEEL 3
+#define CPLPAGE_KEYBOARD_SPEED 1
+#define CPLPAGE_DISPLAY_BACKGROUND 1
+#endif
Index: Daodan/MinGW/include/ctype.h
===================================================================
--- Daodan/MinGW/include/ctype.h	(revision 1046)
+++ Daodan/MinGW/include/ctype.h	(revision 1046)
@@ -0,0 +1,276 @@
+/*
+ * ctype.h
+ *
+ * Functions for character classification and conversion.
+ *
+ * $Id: ctype.h,v e38eed5e2087 2016/07/09 20:53:41 keithmarshall $
+ *
+ * Written by Colin Peters <colin@bird.fu.is.saga-u.ac.jp>
+ * Copyright (C) 1997-2008, 2016, MinGW.org Project
+ *
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice, this permission notice, and the following
+ * disclaimer shall be included in all copies or substantial portions of
+ * the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OF OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ *
+ */
+#ifndef _CTYPE_H
+#pragma GCC system_header
+#define _CTYPE_H
+
+/* All MinGW headers must include <_mingw.h>
+ */
+#include <_mingw.h>
+
+/* Although conflicting with both ISO-C and POSIX, Microsoft say that,
+ * in addition to the single byte character classification API which is
+ * properly declared here, this file should also declare elements of the
+ * wide classification API, which is properly declared in <wctype.h>
+ *
+ * To avoid the burden of maintaining duplicate declarations, in two
+ * locations, we keep the wide character declarations where ISO-C and
+ * POSIX say they belong, in <wctype.h>, while accommodating Microsoft
+ * compatibility by providing for selective inclusion of the relevant
+ * elements of it here.  (Note that we must do this early, because to
+ * avoid duplication, we delegate the definition of common character
+ * classification macros, with the exception of _LEADBYTE, which is
+ * not required in both headers, to <wctype.h>).
+ */
+#define __CTYPE_H_SOURCED__
+#include <wctype.h>
+
+/* This is the one character classification macro, for which definition
+ * is NOT delegated to <wctype.h>
+ */
+#define _LEADBYTE	0x8000
+
+#ifndef RC_INVOKED
+
+_BEGIN_C_DECLS
+
+_CRTIMP __cdecl __MINGW_NOTHROW  int isalnum(int);
+_CRTIMP __cdecl __MINGW_NOTHROW  int isalpha(int);
+_CRTIMP __cdecl __MINGW_NOTHROW  int iscntrl(int);
+_CRTIMP __cdecl __MINGW_NOTHROW  int isdigit(int);
+_CRTIMP __cdecl __MINGW_NOTHROW  int isgraph(int);
+_CRTIMP __cdecl __MINGW_NOTHROW  int islower(int);
+_CRTIMP __cdecl __MINGW_NOTHROW  int isleadbyte (int);
+_CRTIMP __cdecl __MINGW_NOTHROW  int isprint(int);
+_CRTIMP __cdecl __MINGW_NOTHROW  int ispunct(int);
+_CRTIMP __cdecl __MINGW_NOTHROW  int isspace(int);
+_CRTIMP __cdecl __MINGW_NOTHROW  int isupper(int);
+_CRTIMP __cdecl __MINGW_NOTHROW  int isxdigit(int);
+
+#if __STDC_VERSION__ >= 199901L || !defined __STRICT_ANSI__
+__cdecl __MINGW_NOTHROW  int isblank (int);
+#endif
+
+#ifndef __STRICT_ANSI__
+_CRTIMP __cdecl __MINGW_NOTHROW  int _isctype (int, int);
+#endif
+
+/* These are ISO-C conforming functions, with correct checking of
+ * argument; they are exported by MSVCRT.DLL, and by CRTDLL.DLL as
+ * such, and are NOT simply old-name mapped variants; however...
+ */
+_CRTIMP __cdecl __MINGW_NOTHROW  int tolower (int);
+_CRTIMP __cdecl __MINGW_NOTHROW  int toupper (int);
+
+#ifndef	__STRICT_ANSI__
+/* ...Microsoft's beloved underscore decorated variants are also
+ * exported.  These are cheap non-standard versions: their return
+ * values are undefined if the argument is not an ASCII character,
+ * or is not of appropriate case for the requested conversion.
+ *
+ * Note that these appear to be approximately equivalent to POSIX
+ * macros of the same names, (declared obsolescent in POSIX.1-2008),
+ * but are implemented as DLL functions, rather than macros.
+ */
+_CRTIMP __cdecl __MINGW_NOTHROW  int _tolower (int);
+_CRTIMP __cdecl __MINGW_NOTHROW  int _toupper (int);
+#endif
+
+#ifndef MB_CUR_MAX
+/* FIXME: also defined in stdlib.h; should be factored into ONE
+ * location ONLY, and included into the other.
+ */
+# ifdef __DECLSPEC_SUPPORTED
+#  ifdef __MSVCRT__
+#   define MB_CUR_MAX		 __mb_cur_max
+    __MINGW_IMPORT int		 __mb_cur_max;
+
+#  else	/* !__MSVCRT__ */
+#   define MB_CUR_MAX		 __mb_cur_max_dll
+    __MINGW_IMPORT int		 __mb_cur_max_dll;
+#  endif	/* !__MSVCRT__ */
+
+# else	/* !__DECLSPEC_SUPPORTED */
+#  ifdef __MSVCRT__
+#   define MB_CUR_MAX		(*_imp____mb_cur_max)
+    extern int			 *_imp____mb_cur_max;
+
+#  else	/* !__MSVCRT__ */
+#   define MB_CUR_MAX		(*_imp____mb_cur_max_dll)
+    extern int			 *_imp____mb_cur_max_dll;
+#  endif /* !__MSVCRT__ */
+# endif /*  __DECLSPEC_SUPPORTED */
+#endif  /* ! MB_CUR_MAX */
+
+#ifdef __DECLSPEC_SUPPORTED
+# if __MSVCRT_VERSION__ <= __MSVCR70_DLL
+  __MINGW_IMPORT unsigned short   _ctype[];
+# endif
+
+# ifdef __MSVCRT__
+  __MINGW_IMPORT unsigned short  *_pctype;
+
+# else	/* !__MSVCRT__ (implies CRTDLL) */
+# define  _pctype _pctype_dll
+  __MINGW_IMPORT unsigned short  *_pctype_dll;
+# endif
+
+#else	/* !__DECLSPEC_SUPPORTED */
+# if __MSVCRT_VERSION__ <= __MSVCR70_DLL
+# define _ctype 		(*_imp___ctype)
+  extern unsigned short 	**_imp___ctype;
+# endif
+
+# ifdef __MSVCRT__
+# define _pctype		(*_imp___pctype)
+  extern unsigned short 	**_imp___pctype;
+
+# else	/* !__MSVCRT__ (implies CRTDLL) */
+# define _pctype		(*_imp___pctype_dll)
+  extern unsigned short 	**_imp___pctype_dll;
+# endif /* CRTDLL */
+#endif	/* !__DECLSPEC_SUPPORTED */
+
+/* Use inlines here rather than macros, because macros will upset
+ * C++ usage (eg, ::isalnum), and so usually get undefined
+ *
+ * According to standard for SB chars, these function are defined only
+ * for input values representable by unsigned char or EOF.
+ * Thus, there is no range test.
+ * This reproduces behaviour of MSVCRT.dll lib implemention for SB chars.
+ *
+ * If no MB char support is needed, these can be simplified even
+ * more by command line define -DMB_CUR_MAX=1.  The compiler will then
+ * optimise away the constant condition.
+ */
+
+#if !(defined (__NO_INLINE__)  || defined (__NO_CTYPE_INLINES) \
+	|| defined (__STRICT_ANSI__))
+
+/* Use simple lookup in single byte locales, else _isctype()
+ */
+#define __ISCTYPE(c, mask)  (MB_CUR_MAX == 1 ? (_pctype[c] & mask) : _isctype (c, mask))
+
+__CRT_INLINE __cdecl __MINGW_NOTHROW  int isalnum (int c)
+{ return __ISCTYPE(c, (_ALPHA|_DIGIT)); }
+
+__CRT_INLINE __cdecl __MINGW_NOTHROW  int isalpha (int c)
+{ return __ISCTYPE(c, _ALPHA); }
+
+__CRT_INLINE __cdecl __MINGW_NOTHROW  int iscntrl (int c)
+{ return __ISCTYPE(c, _CONTROL); }
+
+__CRT_INLINE __cdecl __MINGW_NOTHROW  int isdigit (int c)
+{ return __ISCTYPE(c, _DIGIT); }
+
+__CRT_INLINE __cdecl __MINGW_NOTHROW  int isgraph (int c)
+{ return __ISCTYPE(c, (_PUNCT|_ALPHA|_DIGIT)); }
+
+__CRT_INLINE __cdecl __MINGW_NOTHROW  int islower (int c)
+{ return __ISCTYPE(c, _LOWER); }
+
+__CRT_INLINE __cdecl __MINGW_NOTHROW  int isprint (int c)
+{ return __ISCTYPE(c, (_BLANK|_PUNCT|_ALPHA|_DIGIT)); }
+
+__CRT_INLINE __cdecl __MINGW_NOTHROW  int ispunct (int c)
+{ return __ISCTYPE(c, _PUNCT); }
+
+__CRT_INLINE __cdecl __MINGW_NOTHROW  int isspace (int c)
+{ return __ISCTYPE(c, _SPACE); }
+
+__CRT_INLINE __cdecl __MINGW_NOTHROW  int isupper (int c)
+{ return __ISCTYPE(c, _UPPER); }
+
+__CRT_INLINE __cdecl __MINGW_NOTHROW  int isxdigit (int c)
+{ return __ISCTYPE(c, _HEX); }
+
+#if __STDC_VERSION__ >= 199901L || !defined __STRICT_ANSI__
+__CRT_INLINE __cdecl __MINGW_NOTHROW  int isblank (int c)
+{ return (__ISCTYPE(c, _BLANK) || c == '\t'); }
+#endif
+
+/* These reproduce the behaviour of their DLL exported namesakes,
+ * and thus ARE the effective equivalents of the similarly named,
+ * and now-obsolescent, POSIX macros.
+ */
+__CRT_INLINE __cdecl __MINGW_NOTHROW  int _tolower (int c)
+{ return (c - 'A' + 'a'); }
+
+__CRT_INLINE __cdecl __MINGW_NOTHROW  int _toupper (int c)
+{ return (c - 'a' + 'A'); }
+
+/* TODO: is it worth inlining ANSI tolower(), and toupper()?
+ * Probably only if we only want C-locale.
+ */
+#endif /* _NO_CTYPE_INLINES */
+
+__CRT_INLINE __cdecl __MINGW_NOTHROW  int isleadbyte (int c)
+{ return (_pctype[(unsigned char)(c)] & _LEADBYTE); }
+
+#ifndef	__STRICT_ANSI__
+__cdecl __MINGW_NOTHROW  int __isascii (int);
+__cdecl __MINGW_NOTHROW  int __toascii (int);
+__cdecl __MINGW_NOTHROW  int __iscsymf (int);	/* Valid as first character in a C symbol */
+__cdecl __MINGW_NOTHROW  int __iscsym (int);	/* Valid character in C symbol (after first) */
+
+#if !(defined (__NO_INLINE__) || defined (__NO_CTYPE_INLINES))
+
+__CRT_INLINE __cdecl __MINGW_NOTHROW  int __isascii (int c)
+{ return ((c & ~0x7F) == 0); }
+
+__CRT_INLINE __cdecl __MINGW_NOTHROW  int __toascii (int c)
+{ return (c & 0x7F); }
+
+__CRT_INLINE __cdecl __MINGW_NOTHROW  int __iscsymf (int c)
+{ return (isalpha(c) || (c == '_')); }
+
+__CRT_INLINE __cdecl __MINGW_NOTHROW  int __iscsym (int c)
+{ return  (isalnum(c) || (c == '_')); }
+
+#endif /* !__NO_CTYPE_INLINES */
+
+#ifndef	_NO_OLDNAMES
+/* Not _CRTIMP */
+__cdecl __MINGW_NOTHROW  int isascii (int);
+__cdecl __MINGW_NOTHROW  int toascii (int);
+__cdecl __MINGW_NOTHROW  int iscsymf (int);
+__cdecl __MINGW_NOTHROW  int iscsym (int);
+#endif	/* !_NO_OLDNAMES */
+
+#endif	/* !__STRICT_ANSI__ */
+
+_END_C_DECLS
+
+#endif	/* ! RC_INVOKED */
+
+#undef __CTYPE_H_SOURCED__
+#endif	/* !_CTYPE_H: $RCSfile: ctype.h,v $: end of file */
Index: Daodan/MinGW/include/custcntl.h
===================================================================
--- Daodan/MinGW/include/custcntl.h	(revision 1046)
+++ Daodan/MinGW/include/custcntl.h	(revision 1046)
@@ -0,0 +1,102 @@
+#ifndef _CUSTCNTL_H
+#define _CUSTCNTL_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define CCF_NOTEXT 1
+#define CCHCCCLASS 32
+#define CCHCCDESC 32
+#define CCHCCTEXT 256
+
+typedef struct tagCCSTYLEA {
+	DWORD flStyle;
+	DWORD flExtStyle;
+	CHAR szText[CCHCCTEXT];
+	LANGID lgid;
+	WORD wReserved1;
+} CCSTYLEA,*LPCCSTYLEA;
+typedef struct tagCCSTYLEW {
+	DWORD flStyle;
+	DWORD flExtStyle;
+	WCHAR szText[CCHCCTEXT];
+	LANGID lgid;
+	WORD wReserved1;
+} CCSTYLEW,*LPCCSTYLEW;
+typedef struct tagCCSTYLEFLAGA {
+	DWORD flStyle;
+	DWORD flStyleMask;
+	LPSTR pszStyle;
+} CCSTYLEFLAGA,*LPCCSTYLEFLAGA;
+typedef struct tagCCSTYLEFLAGW {
+	DWORD flStyle;
+	DWORD flStyleMask;
+	LPWSTR pszStyle;
+} CCSTYLEFLAGW,*LPCCSTYLEFLAGW;
+typedef BOOL(CALLBACK* LPFNCCSTYLEA)(HWND,LPCCSTYLEA);
+typedef INT(CALLBACK* LPFNCCSIZETOTEXTA)(DWORD,DWORD,HFONT,LPSTR);
+typedef struct tagCCINFOA {
+	CHAR szClass[CCHCCCLASS];
+	DWORD flOptions;
+	CHAR szDesc[CCHCCDESC];
+	UINT cxDefault;
+	UINT cyDefault;
+	DWORD flStyleDefault;
+	DWORD flExtStyleDefault;
+	DWORD flCtrlTypeMask;
+	CHAR szTextDefault[CCHCCTEXT];
+	INT cStyleFlags;
+	LPCCSTYLEFLAGA aStyleFlags;
+	LPFNCCSTYLEA lpfnStyle;
+	LPFNCCSIZETOTEXTA lpfnSizeToText;
+	DWORD dwReserved1;
+	DWORD dwReserved2;
+} CCINFOA,*LPCCINFOA;
+typedef UINT(CALLBACK* LPFNCCINFOA)(LPCCINFOA);
+typedef BOOL(CALLBACK* LPFNCCSTYLEW)(HWND,LPCCSTYLEW);
+typedef INT (CALLBACK* LPFNCCSIZETOTEXTW)(DWORD,DWORD,HFONT,LPWSTR);
+typedef struct tagCCINFOW {
+	WCHAR szClass[CCHCCCLASS];
+	DWORD flOptions;
+	WCHAR szDesc[CCHCCDESC];
+	UINT cxDefault;
+	UINT cyDefault;
+	DWORD flStyleDefault;
+	DWORD flExtStyleDefault;
+	DWORD flCtrlTypeMask;
+	WCHAR szTextDefault[CCHCCTEXT];
+	INT cStyleFlags;
+	LPCCSTYLEFLAGW aStyleFlags;
+	LPFNCCSTYLEW lpfnStyle;
+	LPFNCCSIZETOTEXTW lpfnSizeToText;
+	DWORD dwReserved1;
+	DWORD dwReserved2;
+} CCINFOW,*LPCCINFOW;
+typedef UINT(CALLBACK* LPFNCCINFOW)(LPCCINFOW);
+
+UINT CALLBACK CustomControlInfoA(LPCCINFOA acci);
+UINT CALLBACK CustomControlInfoW(LPCCINFOW acci);
+
+#ifdef UNICODE
+typedef CCSTYLEW CCSTYLE,*LPCCSTYLE;
+typedef CCSTYLEFLAGW CCSTYLEFLAG,*LPCCSTYLEFLAG;
+typedef CCINFOW CCINFO,*LPCCINFO;
+#define LPFNCCSTYLE LPFNCCSTYLEW
+#define LPFNCCSIZETOTEXT LPFNCCSIZETOTEXTW
+#define LPFNCCINFO LPFNCCINFOW
+#else
+typedef CCSTYLEA CCSTYLE,*LPCCSTYLE;
+typedef CCSTYLEFLAGA CCSTYLEFLAG,*LPCCSTYLEFLAG;
+typedef CCINFOA CCINFO,*LPCCINFO;
+#define LPFNCCSTYLE LPFNCCSTYLEA
+#define LPFNCCSIZETOTEXT LPFNCCSIZETOTEXTA
+#define LPFNCCINFO LPFNCCINFOA
+#endif
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/d3d9.h
===================================================================
--- Daodan/MinGW/include/d3d9.h	(revision 1046)
+++ Daodan/MinGW/include/d3d9.h	(revision 1046)
@@ -0,0 +1,1288 @@
+/*
+
+	d3d9.h - Header file for the Direct3D9 API
+
+	Written by Filip Navara <xnavara@volny.cz>
+
+	This library is distributed in the hope that it will be useful,
+	but WITHOUT ANY WARRANTY; without even the implied warranty of
+	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+*/
+
+#ifndef _D3D9_H
+#define _D3D9_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifndef DIRECT3D_VERSION
+#define DIRECT3D_VERSION  0x0900
+#endif
+
+#if (DIRECT3D_VERSION >= 0x0900)
+
+#include <objbase.h>
+#include "d3d9types.h"
+#include "d3d9caps.h"
+
+#define D3D_SDK_VERSION	31
+#define D3DCREATE_FPU_PRESERVE	0x02
+#define D3DCREATE_MULTITHREADED	0x04
+#define D3DCREATE_PUREDEVICE	0x10
+#define D3DCREATE_SOFTWARE_VERTEXPROCESSING	0x20
+#define D3DCREATE_HARDWARE_VERTEXPROCESSING	0x40
+#define D3DCREATE_MIXED_VERTEXPROCESSING	0x80
+#define D3DSPD_IUNKNOWN	1
+#define D3DSGR_NO_CALIBRATION	0
+#define D3DSGR_CALIBRATE	1
+#define MAKE_D3DHRESULT(code)	MAKE_HRESULT(1,0x876,code)
+#define MAKE_D3DSTATUS(code)	MAKE_HRESULT(0,0x876,code)
+#define D3D_OK	0
+#define D3DOK_NOAUTOGEN	MAKE_D3DSTATUS(2159)
+#define D3DERR_WRONGTEXTUREFORMAT	MAKE_D3DHRESULT(2072)
+#define D3DERR_UNSUPPORTEDCOLOROPERATION	MAKE_D3DHRESULT(2073)
+#define D3DERR_UNSUPPORTEDCOLORARG	MAKE_D3DHRESULT(2074)
+#define D3DERR_UNSUPPORTEDALPHAOPERATION	MAKE_D3DHRESULT(2075)
+#define D3DERR_UNSUPPORTEDALPHAARG	MAKE_D3DHRESULT(2076)
+#define D3DERR_TOOMANYOPERATIONS	MAKE_D3DHRESULT(2077)
+#define D3DERR_CONFLICTINGTEXTUREFILTER	MAKE_D3DHRESULT(2078)
+#define D3DERR_UNSUPPORTEDFACTORVALUE	MAKE_D3DHRESULT(2079)
+#define D3DERR_CONFLICTINGRENDERSTATE	MAKE_D3DHRESULT(2081)
+#define D3DERR_UNSUPPORTEDTEXTUREFILTER	MAKE_D3DHRESULT(2082)
+#define D3DERR_CONFLICTINGTEXTUREPALETTE	MAKE_D3DHRESULT(2086)
+#define D3DERR_DRIVERINTERNALERROR	MAKE_D3DHRESULT(2087)
+#define D3DERR_NOTFOUND	MAKE_D3DHRESULT(2150)
+#define D3DERR_MOREDATA	MAKE_D3DHRESULT(2151)
+#define D3DERR_DEVICELOST	MAKE_D3DHRESULT(2152)
+#define D3DERR_DEVICENOTRESET	MAKE_D3DHRESULT(2153)
+#define D3DERR_NOTAVAILABLE	MAKE_D3DHRESULT(2154)
+#define D3DERR_OUTOFVIDEOMEMORY	MAKE_D3DHRESULT(380)
+#define D3DERR_INVALIDDEVICE	MAKE_D3DHRESULT(2155)
+#define D3DERR_INVALIDCALL	MAKE_D3DHRESULT(2156)
+#define D3DERR_DRIVERINVALIDCALL	MAKE_D3DHRESULT(2157)
+#define D3DERR_WASSTILLDRAWING	MAKE_D3DHRESULT(540)
+#define D3DADAPTER_DEFAULT	0
+#define D3DCURSOR_IMMEDIATE_UPDATE	1
+#define D3DENUM_HOST_ADAPTER	1
+#define D3DPRESENTFLAG_LOCKABLE_BACKBUFFER	1
+#define D3DPV_DONOTCOPYDATA	1
+#define D3DENUM_NO_WHQL_LEVEL	2
+#define D3DPRESENT_BACK_BUFFERS_MAX	3
+#define VALID_D3DENUM_FLAGS	3
+#define D3DMAXNUMPRIMITIVES	0xFFFF
+#define D3DMAXNUMVERTICES	0xFFFF
+#define D3DCURRENT_DISPLAY_MODE	0xEFFFFF
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+extern const GUID IID_IDirect3D9;
+extern const GUID IID_IDirect3DDevice9;
+extern const GUID IID_IDirect3DVolume9;
+extern const GUID IID_IDirect3DSwapChain9;
+extern const GUID IID_IDirect3DResource9;
+extern const GUID IID_IDirect3DSurface9;
+extern const GUID IID_IDirect3DVertexBuffer9;
+extern const GUID IID_IDirect3DIndexBuffer9;
+extern const GUID IID_IDirect3DBaseTexture9;
+extern const GUID IID_IDirect3DCubeTexture9;
+extern const GUID IID_IDirect3DTexture9;
+extern const GUID IID_IDirect3DVolumeTexture9;
+extern const GUID IID_IDirect3DVertexDeclaration9;
+extern const GUID IID_IDirect3DVertexShader9;
+extern const GUID IID_IDirect3DPixelShader9;
+extern const GUID IID_IDirect3DStateBlock9;
+extern const GUID IID_IDirect3DQuery9;
+#ifdef __cplusplus
+};
+#endif
+
+typedef _COM_interface IDirect3D9 IDirect3D9;
+typedef _COM_interface IDirect3DDevice9 IDirect3DDevice9;
+typedef _COM_interface IDirect3DVolume9 IDirect3DVolume9;
+typedef _COM_interface IDirect3DSwapChain9 IDirect3DSwapChain9;
+typedef _COM_interface IDirect3DResource9 IDirect3DResource9;
+typedef _COM_interface IDirect3DSurface9 IDirect3DSurface9;
+typedef _COM_interface IDirect3DVertexBuffer9 IDirect3DVertexBuffer9;
+typedef _COM_interface IDirect3DIndexBuffer9 IDirect3DIndexBuffer9;
+typedef _COM_interface IDirect3DBaseTexture9 IDirect3DBaseTexture9;
+typedef _COM_interface IDirect3DCubeTexture9 IDirect3DCubeTexture9;
+typedef _COM_interface IDirect3DTexture9 IDirect3DTexture9;
+typedef _COM_interface IDirect3DVolumeTexture9 IDirect3DVolumeTexture9;
+typedef _COM_interface IDirect3DVertexDeclaration9 IDirect3DVertexDeclaration9;
+typedef _COM_interface IDirect3DVertexShader9 IDirect3DVertexShader9;
+typedef _COM_interface IDirect3DPixelShader9 IDirect3DPixelShader9;
+typedef _COM_interface IDirect3DStateBlock9 IDirect3DStateBlock9;
+typedef _COM_interface IDirect3DQuery9 IDirect3DQuery9;
+
+#undef INTERFACE
+#define INTERFACE IDirect3D9
+DECLARE_INTERFACE_(IDirect3D9,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(RegisterSoftwareDevice)(THIS_ void* pInitializeFunction) PURE;
+	STDMETHOD_(UINT,GetAdapterCount)(THIS) PURE;
+	STDMETHOD(GetAdapterIdentifier)(THIS_ UINT,DWORD,D3DADAPTER_IDENTIFIER9*) PURE;
+	STDMETHOD_(UINT,GetAdapterModeCount)(THIS_ UINT,D3DFORMAT) PURE;
+	STDMETHOD(EnumAdapterModes)(THIS_ UINT,D3DFORMAT,UINT,D3DDISPLAYMODE*) PURE;
+	STDMETHOD(GetAdapterDisplayMode)(THIS_ UINT,D3DDISPLAYMODE*) PURE;
+	STDMETHOD(CheckDeviceType)(THIS_ UINT,D3DDEVTYPE,D3DFORMAT,D3DFORMAT,BOOL) PURE;
+	STDMETHOD(CheckDeviceFormat)(THIS_ UINT,D3DDEVTYPE,D3DFORMAT,DWORD,D3DRESOURCETYPE,D3DFORMAT) PURE;
+	STDMETHOD(CheckDeviceMultiSampleType)(THIS_ UINT,D3DDEVTYPE,D3DFORMAT,BOOL,D3DMULTISAMPLE_TYPE,DWORD*) PURE;
+	STDMETHOD(CheckDepthStencilMatch)(THIS_ UINT,D3DDEVTYPE,D3DFORMAT,D3DFORMAT,D3DFORMAT) PURE;
+	STDMETHOD(CheckDeviceFormatConversion)(THIS_ UINT,D3DDEVTYPE,D3DFORMAT,D3DFORMAT) PURE;
+	STDMETHOD(GetDeviceCaps)(THIS_ UINT,D3DDEVTYPE,D3DCAPS9*) PURE;
+	STDMETHOD_(HMONITOR,GetAdapterMonitor)(THIS_ UINT) PURE;
+	STDMETHOD(CreateDevice)(THIS_ UINT,D3DDEVTYPE,HWND,DWORD,D3DPRESENT_PARAMETERS*,IDirect3DDevice9**) PURE;
+};
+typedef struct IDirect3D9 *LPDIRECT3D9, *PDIRECT3D9;
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirect3D9_QueryInterface(p,a,b)	(p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3D9_AddRef(p)	(p)->lpVtbl->AddRef(p)
+#define IDirect3D9_Release(p)	(p)->lpVtbl->Release(p)
+#define IDirect3D9_RegisterSoftwareDevice(p,a)	(p)->lpVtbl->RegisterSoftwareDevice(p,a)
+#define IDirect3D9_GetAdapterCount(p)	(p)->lpVtbl->GetAdapterCount(p)
+#define IDirect3D9_GetAdapterIdentifier(p,a,b,c)	(p)->lpVtbl->GetAdapterIdentifier(p,a,b,c)
+#define IDirect3D9_GetAdapterModeCount(p,a,b)	(p)->lpVtbl->GetAdapterModeCount(p,a,b)
+#define IDirect3D9_EnumAdapterModes(p,a,b,c,d)	(p)->lpVtbl->EnumAdapterModes(p,a,b,c,d)
+#define IDirect3D9_GetAdapterDisplayMode(p,a,b)	(p)->lpVtbl->GetAdapterDisplayMode(p,a,b)
+#define IDirect3D9_CheckDeviceType(p,a,b,c,d,e)	(p)->lpVtbl->CheckDeviceType(p,a,b,c,d,e)
+#define IDirect3D9_CheckDeviceFormat(p,a,b,c,d,e,f)	(p)->lpVtbl->CheckDeviceFormat(p,a,b,c,d,e,f)
+#define IDirect3D9_CheckDeviceMultiSampleType(p,a,b,c,d,e,f)	(p)->lpVtbl->CheckDeviceMultiSampleType(p,a,b,c,d,e,f)
+#define IDirect3D9_CheckDepthStencilMatch(p,a,b,c,d,e)	(p)->lpVtbl->CheckDepthStencilMatch(p,a,b,c,d,e)
+#define IDirect3D9_CheckDeviceFormatConversion(p,a,b,c,d)	(p)->lpVtbl->CheckDeviceFormatConversion(p,a,b,c,d)
+#define IDirect3D9_GetDeviceCaps(p,a,b,c)	(p)->lpVtbl->GetDeviceCaps(p,a,b,c)
+#define IDirect3D9_GetAdapterMonitor(p,a)	(p)->lpVtbl->GetAdapterMonitor(p,a)
+#define IDirect3D9_CreateDevice(p,a,b,c,d,e,f)	(p)->lpVtbl->CreateDevice(p,a,b,c,d,e,f)
+#else
+#define IDirect3D9_QueryInterface(p,a,b)	(p)->QueryInterface(a,b)
+#define IDirect3D9_AddRef(p)	(p)->AddRef()
+#define IDirect3D9_Release(p)	(p)->Release()
+#define IDirect3D9_RegisterSoftwareDevice(p,a)	(p)->RegisterSoftwareDevice(a)
+#define IDirect3D9_GetAdapterCount(p)	(p)->GetAdapterCount()
+#define IDirect3D9_GetAdapterIdentifier(p,a,b,c)	(p)->GetAdapterIdentifier(a,b,c)
+#define IDirect3D9_GetAdapterModeCount(p,a,b)	(p)->GetAdapterModeCount(a,b)
+#define IDirect3D9_EnumAdapterModes(p,a,b,c,d)	(p)->EnumAdapterModes(a,b,c,d)
+#define IDirect3D9_GetAdapterDisplayMode(p,a,b)	(p)->GetAdapterDisplayMode(a,b)
+#define IDirect3D9_CheckDeviceType(p,a,b,c,d,e)	(p)->CheckDeviceType(a,b,c,d,e)
+#define IDirect3D9_CheckDeviceFormat(p,a,b,c,d,e,f)	(p)->CheckDeviceFormat(a,b,c,d,e,f)
+#define IDirect3D9_CheckDeviceMultiSampleType(p,a,b,c,d,e,f)	(p)->CheckDeviceMultiSampleType(a,b,c,d,e,f)
+#define IDirect3D9_CheckDepthStencilMatch(p,a,b,c,d,e)	(p)->CheckDepthStencilMatch(a,b,c,d,e)
+#define IDirect3D9_CheckDeviceFormatConversion(p,a,b,c,d)	(p)->CheckDeviceFormatConversion(a,b,c,d)
+#define IDirect3D9_GetDeviceCaps(p,a,b,c)	(p)->GetDeviceCaps(a,b,c)
+#define IDirect3D9_GetAdapterMonitor(p,a)	(p)->GetAdapterMonitor(a)
+#define IDirect3D9_CreateDevice(p,a,b,c,d,e,f)	(p)->CreateDevice(a,b,c,d,e,f)
+#endif
+
+#undef INTERFACE
+#define INTERFACE IDirect3DDevice9
+DECLARE_INTERFACE_(IDirect3DDevice9,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(TestCooperativeLevel)(THIS) PURE;
+	STDMETHOD_(UINT,GetAvailableTextureMem)(THIS) PURE;
+	STDMETHOD(EvictManagedResources)(THIS) PURE;
+	STDMETHOD(GetDirect3D)(THIS_ IDirect3D9**) PURE;
+	STDMETHOD(GetDeviceCaps)(THIS_ D3DCAPS9*) PURE;
+	STDMETHOD(GetDisplayMode)(THIS_ UINT,D3DDISPLAYMODE*) PURE;
+	STDMETHOD(GetCreationParameters)(THIS_ D3DDEVICE_CREATION_PARAMETERS*) PURE;
+	STDMETHOD(SetCursorProperties)(THIS_ UINT,UINT,IDirect3DSurface9*) PURE;
+	STDMETHOD_(void,SetCursorPosition)(THIS_ int,int,DWORD) PURE;
+	STDMETHOD_(BOOL,ShowCursor)(THIS_ BOOL) PURE;
+	STDMETHOD(CreateAdditionalSwapChain)(THIS_ D3DPRESENT_PARAMETERS*,IDirect3DSwapChain9**) PURE;
+	STDMETHOD(GetSwapChain)(THIS_ UINT,IDirect3DSwapChain9**) PURE;
+	STDMETHOD_(UINT,GetNumberOfSwapChains)(THIS) PURE;
+	STDMETHOD(Reset)(THIS_ D3DPRESENT_PARAMETERS*) PURE;
+	STDMETHOD(Present)(THIS_ CONST RECT*,CONST RECT*,HWND,CONST RGNDATA*) PURE;
+	STDMETHOD(GetBackBuffer)(THIS_ UINT,UINT,D3DBACKBUFFER_TYPE,IDirect3DSurface9**) PURE;
+	STDMETHOD(GetRasterStatus)(THIS_ UINT,D3DRASTER_STATUS*) PURE;
+	STDMETHOD(SetDialogBoxMode)(THIS_ BOOL) PURE;
+	STDMETHOD_(void,SetGammaRamp)(THIS_ UINT,DWORD,CONST D3DGAMMARAMP*) PURE;
+	STDMETHOD_(void,GetGammaRamp)(THIS_ UINT,D3DGAMMARAMP*) PURE;
+	STDMETHOD(CreateTexture)(THIS_ UINT,UINT,UINT,DWORD,D3DFORMAT,D3DPOOL,IDirect3DTexture9**,HANDLE*) PURE;
+	STDMETHOD(CreateVolumeTexture)(THIS_ UINT,UINT,UINT,UINT,DWORD,D3DFORMAT,D3DPOOL,IDirect3DVolumeTexture9**,HANDLE*) PURE;
+	STDMETHOD(CreateCubeTexture)(THIS_ UINT,UINT,DWORD,D3DFORMAT,D3DPOOL,IDirect3DCubeTexture9**, HANDLE*) PURE;
+	STDMETHOD(CreateVertexBuffer)(THIS_ UINT,DWORD,DWORD,D3DPOOL,IDirect3DVertexBuffer9**, HANDLE*) PURE;
+	STDMETHOD(CreateIndexBuffer)(THIS_ UINT,DWORD,D3DFORMAT,D3DPOOL,IDirect3DIndexBuffer9**,HANDLE*) PURE;
+	STDMETHOD(CreateRenderTarget)(THIS_ UINT,UINT,D3DFORMAT,D3DMULTISAMPLE_TYPE,DWORD,BOOL,IDirect3DSurface9**,HANDLE*) PURE;
+	STDMETHOD(CreateDepthStencilSurface)(THIS_ UINT,UINT,D3DFORMAT,D3DMULTISAMPLE_TYPE,DWORD,BOOL,IDirect3DSurface9**,HANDLE*) PURE;
+	STDMETHOD(UpdateSurface)(THIS_ IDirect3DSurface9*,CONST RECT*,IDirect3DSurface9*,CONST POINT*) PURE;
+	STDMETHOD(UpdateTexture)(THIS_ IDirect3DBaseTexture9*,IDirect3DBaseTexture9*) PURE;
+	STDMETHOD(GetRenderTargetData)(THIS_ IDirect3DSurface9*,IDirect3DSurface9*) PURE;
+	STDMETHOD(GetFrontBufferData)(THIS_ UINT,IDirect3DSurface9*) PURE;
+	STDMETHOD(StretchRect)(THIS_ IDirect3DSurface9*,CONST RECT*,IDirect3DSurface9*,CONST RECT*,D3DTEXTUREFILTERTYPE) PURE;
+	STDMETHOD(ColorFill)(THIS_ IDirect3DSurface9*,CONST RECT*,D3DCOLOR) PURE;
+	STDMETHOD(CreateOffscreenPlainSurface)(THIS_ UINT,UINT,D3DFORMAT,D3DPOOL,IDirect3DSurface9**,HANDLE*) PURE;
+	STDMETHOD(SetRenderTarget)(THIS_ DWORD,IDirect3DSurface9*) PURE;
+	STDMETHOD(GetRenderTarget)(THIS_ DWORD,IDirect3DSurface9**) PURE;
+	STDMETHOD(SetDepthStencilSurface)(THIS_ IDirect3DSurface9*) PURE;
+	STDMETHOD(GetDepthStencilSurface)(THIS_ IDirect3DSurface9**) PURE;
+	STDMETHOD(BeginScene)(THIS) PURE;
+	STDMETHOD(EndScene)(THIS) PURE;
+	STDMETHOD(Clear)(THIS_ DWORD,CONST D3DRECT*,DWORD,D3DCOLOR,float,DWORD) PURE;
+	STDMETHOD(SetTransform)(THIS_ D3DTRANSFORMSTATETYPE,CONST D3DMATRIX*) PURE;
+	STDMETHOD(GetTransform)(THIS_ D3DTRANSFORMSTATETYPE,D3DMATRIX*) PURE;
+	STDMETHOD(MultiplyTransform)(THIS_ D3DTRANSFORMSTATETYPE,CONST D3DMATRIX*) PURE;
+	STDMETHOD(SetViewport)(THIS_ CONST D3DVIEWPORT9*) PURE;
+	STDMETHOD(GetViewport)(THIS_ D3DVIEWPORT9*) PURE;
+	STDMETHOD(SetMaterial)(THIS_ CONST D3DMATERIAL9*) PURE;
+	STDMETHOD(GetMaterial)(THIS_ D3DMATERIAL9*) PURE;
+	STDMETHOD(SetLight)(THIS_ DWORD,CONST D3DLIGHT9*) PURE;
+	STDMETHOD(GetLight)(THIS_ DWORD,D3DLIGHT9*) PURE;
+	STDMETHOD(LightEnable)(THIS_ DWORD,BOOL) PURE;
+	STDMETHOD(GetLightEnable)(THIS_ DWORD,BOOL*) PURE;
+	STDMETHOD(SetClipPlane)(THIS_ DWORD,CONST float*) PURE;
+	STDMETHOD(GetClipPlane)(THIS_ DWORD,float*) PURE;
+	STDMETHOD(SetRenderState)(THIS_ D3DRENDERSTATETYPE,DWORD) PURE;
+	STDMETHOD(GetRenderState)(THIS_ D3DRENDERSTATETYPE,DWORD*) PURE;
+	STDMETHOD(CreateStateBlock)(THIS_ D3DSTATEBLOCKTYPE,IDirect3DStateBlock9**) PURE;
+	STDMETHOD(BeginStateBlock)(THIS) PURE;
+	STDMETHOD(EndStateBlock)(THIS_ IDirect3DStateBlock9**) PURE;
+	STDMETHOD(SetClipStatus)(THIS_ CONST D3DCLIPSTATUS9*) PURE;
+	STDMETHOD(GetClipStatus)(THIS_ D3DCLIPSTATUS9*) PURE;
+	STDMETHOD(GetTexture)(THIS_ DWORD,IDirect3DBaseTexture9**) PURE;
+	STDMETHOD(SetTexture)(THIS_ DWORD,IDirect3DBaseTexture9*) PURE;
+	STDMETHOD(GetTextureStageState)(THIS_ DWORD,D3DTEXTURESTAGESTATETYPE,DWORD*) PURE;
+	STDMETHOD(SetTextureStageState)(THIS_ DWORD,D3DTEXTURESTAGESTATETYPE,DWORD) PURE;
+	STDMETHOD(GetSamplerState)(THIS_ DWORD,D3DSAMPLERSTATETYPE,DWORD*) PURE;
+	STDMETHOD(SetSamplerState)(THIS_ DWORD,D3DSAMPLERSTATETYPE,DWORD) PURE;
+	STDMETHOD(ValidateDevice)(THIS_ DWORD*) PURE;
+	STDMETHOD(SetPaletteEntries)(THIS_ UINT,CONST PALETTEENTRY*) PURE;
+	STDMETHOD(GetPaletteEntries)(THIS_ UINT,PALETTEENTRY*) PURE;
+	STDMETHOD(SetCurrentTexturePalette)(THIS_ UINT) PURE;
+	STDMETHOD(GetCurrentTexturePalette)(THIS_ UINT*) PURE;
+	STDMETHOD(SetScissorRect)(THIS_ CONST RECT*) PURE;
+	STDMETHOD(GetScissorRect)(THIS_ RECT*) PURE;
+	STDMETHOD(SetSoftwareVertexProcessing)(THIS_ BOOL) PURE;
+	STDMETHOD_(BOOL,GetSoftwareVertexProcessing)(THIS) PURE;
+	STDMETHOD(SetNPatchMode)(THIS_ float) PURE;
+	STDMETHOD_(float,GetNPatchMode)(THIS) PURE;
+	STDMETHOD(DrawPrimitive)(THIS_ D3DPRIMITIVETYPE,UINT,UINT) PURE;
+	STDMETHOD(DrawIndexedPrimitive)(THIS_ D3DPRIMITIVETYPE,INT,UINT,UINT,UINT,UINT) PURE;
+	STDMETHOD(DrawPrimitiveUP)(THIS_ D3DPRIMITIVETYPE,UINT,CONST void*,UINT) PURE;
+	STDMETHOD(DrawIndexedPrimitiveUP)(THIS_ D3DPRIMITIVETYPE,UINT,UINT,UINT,CONST void*,D3DFORMAT,CONST void*,UINT) PURE;
+	STDMETHOD(ProcessVertices)(THIS_ UINT,UINT,UINT,IDirect3DVertexBuffer9*,IDirect3DVertexDeclaration9*,DWORD) PURE;
+	STDMETHOD(CreateVertexDeclaration)(THIS_ CONST D3DVERTEXELEMENT9*,IDirect3DVertexDeclaration9**) PURE;
+	STDMETHOD(SetVertexDeclaration)(THIS_ IDirect3DVertexDeclaration9*) PURE;
+	STDMETHOD(GetVertexDeclaration)(THIS_ IDirect3DVertexDeclaration9**) PURE;
+	STDMETHOD(SetFVF)(THIS_ DWORD) PURE;
+	STDMETHOD(GetFVF)(THIS_ DWORD*) PURE;
+	STDMETHOD(CreateVertexShader)(THIS_ CONST DWORD*,IDirect3DVertexShader9**) PURE;
+	STDMETHOD(SetVertexShader)(THIS_ IDirect3DVertexShader9*) PURE;
+	STDMETHOD(GetVertexShader)(THIS_ IDirect3DVertexShader9**) PURE;
+	STDMETHOD(SetVertexShaderConstantF)(THIS_ UINT,CONST float*,UINT) PURE;
+	STDMETHOD(GetVertexShaderConstantF)(THIS_ UINT,float*,UINT) PURE;
+	STDMETHOD(SetVertexShaderConstantI)(THIS_ UINT,CONST int*,UINT) PURE;
+	STDMETHOD(GetVertexShaderConstantI)(THIS_ UINT,int*,UINT) PURE;
+	STDMETHOD(SetVertexShaderConstantB)(THIS_ UINT,CONST BOOL*,UINT) PURE;
+	STDMETHOD(GetVertexShaderConstantB)(THIS_ UINT,BOOL*,UINT) PURE;
+	STDMETHOD(SetStreamSource)(THIS_ UINT,IDirect3DVertexBuffer9*,UINT,UINT) PURE;
+	STDMETHOD(GetStreamSource)(THIS_ UINT,IDirect3DVertexBuffer9**,UINT*,UINT*) PURE;
+	STDMETHOD(SetStreamSourceFreq)(THIS_ UINT,UINT) PURE;
+	STDMETHOD(GetStreamSourceFreq)(THIS_ UINT,UINT*) PURE;
+	STDMETHOD(SetIndices)(THIS_ IDirect3DIndexBuffer9*) PURE;
+	STDMETHOD(GetIndices)(THIS_ IDirect3DIndexBuffer9**) PURE;
+	STDMETHOD(CreatePixelShader)(THIS_ CONST DWORD*,IDirect3DPixelShader9**) PURE;
+	STDMETHOD(SetPixelShader)(THIS_ IDirect3DPixelShader9*) PURE;
+	STDMETHOD(GetPixelShader)(THIS_ IDirect3DPixelShader9**) PURE;
+	STDMETHOD(SetPixelShaderConstantF)(THIS_ UINT,CONST float*,UINT) PURE;
+	STDMETHOD(GetPixelShaderConstantF)(THIS_ UINT,float*,UINT) PURE;
+	STDMETHOD(SetPixelShaderConstantI)(THIS_ UINT,CONST int*,UINT) PURE;
+	STDMETHOD(GetPixelShaderConstantI)(THIS_ UINT,int*,UINT) PURE;
+	STDMETHOD(SetPixelShaderConstantB)(THIS_ UINT,CONST BOOL*,UINT) PURE;
+	STDMETHOD(GetPixelShaderConstantB)(THIS_ UINT,BOOL*,UINT) PURE;
+	STDMETHOD(DrawRectPatch)(THIS_ UINT,CONST float*,CONST D3DRECTPATCH_INFO*) PURE;
+	STDMETHOD(DrawTriPatch)(THIS_ UINT,CONST float*,CONST D3DTRIPATCH_INFO*) PURE;
+	STDMETHOD(DeletePatch)(THIS_ UINT) PURE;
+	STDMETHOD(CreateQuery)(THIS_ D3DQUERYTYPE,IDirect3DQuery9**) PURE;
+};
+typedef struct IDirect3DDevice9 *LPDIRECT3DDEVICE9, *PDIRECT3DDEVICE9;
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirect3DDevice9_QueryInterface(p,a,b)	(p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DDevice9_AddRef(p)	(p)->lpVtbl->AddRef(p)
+#define IDirect3DDevice9_Release(p)	(p)->lpVtbl->Release(p)
+#define IDirect3DDevice9_TestCooperativeLevel(p)	(p)->lpVtbl->TestCooperativeLevel(p)
+#define IDirect3DDevice9_GetAvailableTextureMem(p)	(p)->lpVtbl->GetAvailableTextureMem(p)
+#define IDirect3DDevice9_EvictManagedResources(p)	(p)->lpVtbl->EvictManagedResources(p)
+#define IDirect3DDevice9_GetDirect3D(p,a)	(p)->lpVtbl->GetDirect3D(p,a)
+#define IDirect3DDevice9_GetDeviceCaps(p,a)	(p)->lpVtbl->GetDeviceCaps(p,a)
+#define IDirect3DDevice9_GetDisplayMode(p,a,b)	(p)->lpVtbl->GetDisplayMode(p,a,b)
+#define IDirect3DDevice9_GetCreationParameters(p,a)	(p)->lpVtbl->GetCreationParameters(p,a)
+#define IDirect3DDevice9_SetCursorProperties(p,a,b,c)	(p)->lpVtbl->SetCursorProperties(p,a,b,c)
+#define IDirect3DDevice9_SetCursorPosition(p,a,b,c)	(p)->lpVtbl->SetCursorPosition(p,a,b,c)
+#define IDirect3DDevice9_ShowCursor(p,a)	(p)->lpVtbl->ShowCursor(p,a)
+#define IDirect3DDevice9_CreateAdditionalSwapChain(p,a,b)	(p)->lpVtbl->CreateAdditionalSwapChain(p,a,b)
+#define IDirect3DDevice9_GetSwapChain(p,a,b)	(p)->lpVtbl->GetSwapChain(p,a,b)
+#define IDirect3DDevice9_GetNumberOfSwapChains(p)	(p)->lpVtbl->GetNumberOfSwapChains(p)
+#define IDirect3DDevice9_Reset(p,a)	(p)->lpVtbl->Reset(p,a)
+#define IDirect3DDevice9_Present(p,a,b,c,d)	(p)->lpVtbl->Present(p,a,b,c,d)
+#define IDirect3DDevice9_GetBackBuffer(p,a,b,c,d)	(p)->lpVtbl->GetBackBuffer(p,a,b,c,d)
+#define IDirect3DDevice9_GetRasterStatus(p,a,b)	(p)->lpVtbl->GetRasterStatus(p,a,b)
+#define IDirect3DDevice9_SetDialogBoxMode(p,a)	(p)->lpVtbl->SetDialogBoxMode(p,a)
+#define IDirect3DDevice9_SetGammaRamp(p,a,b,c)	(p)->lpVtbl->SetGammaRamp(p,a,b,c)
+#define IDirect3DDevice9_GetGammaRamp(p,a,b)	(p)->lpVtbl->GetGammaRamp(p,a,b)
+#define IDirect3DDevice9_CreateTexture(p,a,b,c,d,e,f,g,h)	(p)->lpVtbl->CreateTexture(p,a,b,c,d,e,f,g,h)
+#define IDirect3DDevice9_CreateVolumeTexture(p,a,b,c,d,e,f,g,h,i)	(p)->lpVtbl->CreateVolumeTexture(p,a,b,c,d,e,f,g,h,i)
+#define IDirect3DDevice9_CreateCubeTexture(p,a,b,c,d,e,f,g)	(p)->lpVtbl->CreateCubeTexture(p,a,b,c,d,e,f,g)
+#define IDirect3DDevice9_CreateVertexBuffer(p,a,b,c,d,e,f)	(p)->lpVtbl->CreateVertexBuffer(p,a,b,c,d,e,f)
+#define IDirect3DDevice9_CreateIndexBuffer(p,a,b,c,d,e,f)	(p)->lpVtbl->CreateIndexBuffer(p,a,b,c,d,e,f)
+#define IDirect3DDevice9_CreateRenderTarget(p,a,b,c,d,e,f,g,h)	(p)->lpVtbl->CreateRenderTarget(p,a,b,c,d,e,f,g,h)
+#define IDirect3DDevice9_CreateDepthStencilSurface(p,a,b,c,d,e,f,g,h)	(p)->lpVtbl->CreateDepthStencilSurface(p,a,b,c,d,e,f,g,h)
+#define IDirect3DDevice9_UpdateSurface(p,a,b,c,d)	(p)->lpVtbl->UpdateSurface(p,a,b,c,d)
+#define IDirect3DDevice9_UpdateTexture(p,a,b)	(p)->lpVtbl->UpdateTexture(p,a,b)
+#define IDirect3DDevice9_GetRenderTargetData(p,a,b)	(p)->lpVtbl->GetRenderTargetData(p,a,b)
+#define IDirect3DDevice9_GetFrontBufferData(p,a,b)	(p)->lpVtbl->GetFrontBufferData(p,a,b)
+#define IDirect3DDevice9_StretchRect(p,a,b,c,d,e)	(p)->lpVtbl->StretchRect(p,a,b,c,d,e)
+#define IDirect3DDevice9_ColorFill(p,a,b,c)	(p)->lpVtbl->ColorFill(p,a,b,c)
+#define IDirect3DDevice9_CreateOffscreenPlainSurface(p,a,b,c,d,e,f)	(p)->lpVtbl->CreateOffscreenPlainSurface(p,a,b,c,d,e,f)
+#define IDirect3DDevice9_SetRenderTarget(p,a,b)	(p)->lpVtbl->SetRenderTarget(p,a,b)
+#define IDirect3DDevice9_GetRenderTarget(p,a,b)	(p)->lpVtbl->GetRenderTarget(p,a,b)
+#define IDirect3DDevice9_SetDepthStencilSurface(p,a)	(p)->lpVtbl->SetDepthStencilSurface(p,a)
+#define IDirect3DDevice9_GetDepthStencilSurface(p,a)	(p)->lpVtbl->GetDepthStencilSurface(p,a)
+#define IDirect3DDevice9_BeginScene(p)	(p)->lpVtbl->BeginScene(p)
+#define IDirect3DDevice9_EndScene(p)	(p)->lpVtbl->EndScene(p)
+#define IDirect3DDevice9_Clear(p,a,b,c,d,e,f)	(p)->lpVtbl->Clear(p,a,b,c,d,e,f)
+#define IDirect3DDevice9_SetTransform(p,a,b)	(p)->lpVtbl->SetTransform(p,a,b)
+#define IDirect3DDevice9_GetTransform(p,a,b)	(p)->lpVtbl->GetTransform(p,a,b)
+#define IDirect3DDevice9_MultiplyTransform(p,a,b)	(p)->lpVtbl->MultiplyTransform(p,a,b)
+#define IDirect3DDevice9_SetViewport(p,a)	(p)->lpVtbl->SetViewport(p,a)
+#define IDirect3DDevice9_GetViewport(p,a)	(p)->lpVtbl->GetViewport(p,a)
+#define IDirect3DDevice9_SetMaterial(p,a)	(p)->lpVtbl->SetMaterial(p,a)
+#define IDirect3DDevice9_GetMaterial(p,a)	(p)->lpVtbl->GetMaterial(p,a)
+#define IDirect3DDevice9_SetLight(p,a,b)	(p)->lpVtbl->SetLight(p,a,b)
+#define IDirect3DDevice9_GetLight(p,a,b)	(p)->lpVtbl->GetLight(p,a,b)
+#define IDirect3DDevice9_LightEnable(p,a,b)	(p)->lpVtbl->LightEnable(p,a,b)
+#define IDirect3DDevice9_GetLightEnable(p,a,b)	(p)->lpVtbl->GetLightEnable(p,a,b)
+#define IDirect3DDevice9_SetClipPlane(p,a,b)	(p)->lpVtbl->SetClipPlane(p,a,b)
+#define IDirect3DDevice9_GetClipPlane(p,a,b)	(p)->lpVtbl->GetClipPlane(p,a,b)
+#define IDirect3DDevice9_SetRenderState(p,a,b)	(p)->lpVtbl->SetRenderState(p,a,b)
+#define IDirect3DDevice9_GetRenderState(p,a,b)	(p)->lpVtbl->GetRenderState(p,a,b)
+#define IDirect3DDevice9_CreateStateBlock(p,a,b)	(p)->lpVtbl->CreateStateBlock(p,a,b)
+#define IDirect3DDevice9_BeginStateBlock(p)	(p)->lpVtbl->BeginStateBlock(p)
+#define IDirect3DDevice9_EndStateBlock(p,a)	(p)->lpVtbl->EndStateBlock(p,a)
+#define IDirect3DDevice9_SetClipStatus(p,a)	(p)->lpVtbl->SetClipStatus(p,a)
+#define IDirect3DDevice9_GetClipStatus(p,a)	(p)->lpVtbl->GetClipStatus(p,a)
+#define IDirect3DDevice9_GetTexture(p,a,b)	(p)->lpVtbl->GetTexture(p,a,b)
+#define IDirect3DDevice9_SetTexture(p,a,b)	(p)->lpVtbl->SetTexture(p,a,b)
+#define IDirect3DDevice9_GetTextureStageState(p,a,b,c)	(p)->lpVtbl->GetTextureStageState(p,a,b,c)
+#define IDirect3DDevice9_SetTextureStageState(p,a,b,c)	(p)->lpVtbl->SetTextureStageState(p,a,b,c)
+#define IDirect3DDevice9_GetSamplerState(p,a,b,c)	(p)->lpVtbl->GetSamplerState(p,a,b,c)
+#define IDirect3DDevice9_SetSamplerState(p,a,b,c)	(p)->lpVtbl->SetSamplerState(p,a,b,c)
+#define IDirect3DDevice9_ValidateDevice(p,a)	(p)->lpVtbl->ValidateDevice(p,a)
+#define IDirect3DDevice9_SetPaletteEntries(p,a,b)	(p)->lpVtbl->SetPaletteEntries(p,a,b)
+#define IDirect3DDevice9_GetPaletteEntries(p,a,b)	(p)->lpVtbl->GetPaletteEntries(p,a,b)
+#define IDirect3DDevice9_SetCurrentTexturePalette(p,a)	(p)->lpVtbl->SetCurrentTexturePalette(p,a)
+#define IDirect3DDevice9_GetCurrentTexturePalette(p,a)	(p)->lpVtbl->GetCurrentTexturePalette(p,a)
+#define IDirect3DDevice9_SetScissorRect(p,a)	(p)->lpVtbl->SetScissorRect(p,a)
+#define IDirect3DDevice9_GetScissorRect(p,a)	(p)->lpVtbl->GetScissorRect(p,a)
+#define IDirect3DDevice9_SetSoftwareVertexProcessing(p,a)	(p)->lpVtbl->SetSoftwareVertexProcessing(p,a)
+#define IDirect3DDevice9_GetSoftwareVertexProcessing(p)	(p)->lpVtbl->GetSoftwareVertexProcessing(p)
+#define IDirect3DDevice9_SetNPatchMode(p,a)	(p)->lpVtbl->SetNPatchMode(p,a)
+#define IDirect3DDevice9_GetNPatchMode(p)	(p)->lpVtbl->GetNPatchMode(p)
+#define IDirect3DDevice9_DrawPrimitive(p,a,b,c)	(p)->lpVtbl->DrawPrimitive(p,a,b,c)
+#define IDirect3DDevice9_DrawIndexedPrimitive(p,a,b,c,d,e,f)	(p)->lpVtbl->DrawIndexedPrimitive(p,a,b,c,d,e,f)
+#define IDirect3DDevice9_DrawPrimitiveUP(p,a,b,c,d)	(p)->lpVtbl->DrawPrimitiveUP(p,a,b,c,d)
+#define IDirect3DDevice9_DrawIndexedPrimitiveUP(p,a,b,c,d,e,f,g,h)	(p)->lpVtbl->DrawIndexedPrimitiveUP(p,a,b,c,d,e,f,g,h)
+#define IDirect3DDevice9_ProcessVertices(p,a,b,c,d,e,f)	(p)->lpVtbl->ProcessVertices(p,a,b,c,d,e,f)
+#define IDirect3DDevice9_CreateVertexDeclaration(p,a,b)	(p)->lpVtbl->CreateVertexDeclaration(p,a,b)
+#define IDirect3DDevice9_SetVertexDeclaration(p,a)	(p)->lpVtbl->SetVertexDeclaration(p,a)
+#define IDirect3DDevice9_GetVertexDeclaration(p,a)	(p)->lpVtbl->GetVertexDeclaration(p,a)
+#define IDirect3DDevice9_SetFVF(p,a)	(p)->lpVtbl->SetFVF(p,a)
+#define IDirect3DDevice9_GetFVF(p,a)	(p)->lpVtbl->GetFVF(p,a)
+#define IDirect3DDevice9_CreateVertexShader(p,a,b)	(p)->lpVtbl->CreateVertexShader(p,a,b)
+#define IDirect3DDevice9_SetVertexShader(p,a)	(p)->lpVtbl->SetVertexShader(p,a)
+#define IDirect3DDevice9_GetVertexShader(p,a)	(p)->lpVtbl->GetVertexShader(p,a)
+#define IDirect3DDevice9_SetVertexShaderConstantF(p,a,b,c)	(p)->lpVtbl->SetVertexShaderConstantF(p,a,b,c)
+#define IDirect3DDevice9_GetVertexShaderConstantF(p,a,b,c)	(p)->lpVtbl->GetVertexShaderConstantF(p,a,b,c)
+#define IDirect3DDevice9_SetVertexShaderConstantI(p,a,b,c)	(p)->lpVtbl->SetVertexShaderConstantI(p,a,b,c)
+#define IDirect3DDevice9_GetVertexShaderConstantI(p,a,b,c)	(p)->lpVtbl->GetVertexShaderConstantI(p,a,b,c)
+#define IDirect3DDevice9_SetVertexShaderConstantB(p,a,b,c)	(p)->lpVtbl->SetVertexShaderConstantB(p,a,b,c)
+#define IDirect3DDevice9_GetVertexShaderConstantB(p,a,b,c)	(p)->lpVtbl->GetVertexShaderConstantB(p,a,b,c)
+#define IDirect3DDevice9_SetStreamSource(p,a,b,c,d)	(p)->lpVtbl->SetStreamSource(p,a,b,c,d)
+#define IDirect3DDevice9_GetStreamSource(p,a,b,c,d)	(p)->lpVtbl->GetStreamSource(p,a,b,c,d)
+#define IDirect3DDevice9_SetStreamSourceFreq(p,a,b)	(p)->lpVtbl->SetStreamSourceFreq(p,a,b)
+#define IDirect3DDevice9_GetStreamSourceFreq(p,a,b)	(p)->lpVtbl->GetStreamSourceFreq(p,a,b)
+#define IDirect3DDevice9_SetIndices(p,a)	(p)->lpVtbl->SetIndices(p,a)
+#define IDirect3DDevice9_GetIndices(p,a)	(p)->lpVtbl->GetIndices(p,a)
+#define IDirect3DDevice9_CreatePixelShader(p,a,b)	(p)->lpVtbl->CreatePixelShader(p,a,b)
+#define IDirect3DDevice9_SetPixelShader(p,a)	(p)->lpVtbl->SetPixelShader(p,a)
+#define IDirect3DDevice9_GetPixelShader(p,a)	(p)->lpVtbl->GetPixelShader(p,a)
+#define IDirect3DDevice9_SetPixelShaderConstantF(p,a,b,c)	(p)->lpVtbl->SetPixelShaderConstantF(p,a,b,c)
+#define IDirect3DDevice9_GetPixelShaderConstantF(p,a,b,c)	(p)->lpVtbl->GetPixelShaderConstantF(p,a,b,c)
+#define IDirect3DDevice9_SetPixelShaderConstantI(p,a,b,c)	(p)->lpVtbl->SetPixelShaderConstantI(p,a,b,c)
+#define IDirect3DDevice9_GetPixelShaderConstantI(p,a,b,c)	(p)->lpVtbl->GetPixelShaderConstantI(p,a,b,c)
+#define IDirect3DDevice9_SetPixelShaderConstantB(p,a,b,c)	(p)->lpVtbl->SetPixelShaderConstantB(p,a,b,c)
+#define IDirect3DDevice9_GetPixelShaderConstantB(p,a,b,c)	(p)->lpVtbl->GetPixelShaderConstantB(p,a,b,c)
+#define IDirect3DDevice9_DrawRectPatch(p,a,b,c)	(p)->lpVtbl->DrawRectPatch(p,a,b,c)
+#define IDirect3DDevice9_DrawTriPatch(p,a,b,c)	(p)->lpVtbl->DrawTriPatch(p,a,b,c)
+#define IDirect3DDevice9_DeletePatch(p,a)	(p)->lpVtbl->DeletePatch(p,a)
+#define IDirect3DDevice9_CreateQuery(p,a,b)	(p)->lpVtbl->CreateQuery(p,a,b)
+#else
+#define IDirect3DDevice9_QueryInterface(p,a,b)	(p)->QueryInterface(a,b)
+#define IDirect3DDevice9_AddRef(p)	(p)->AddRef()
+#define IDirect3DDevice9_Release(p)	(p)->Release()
+#define IDirect3DDevice9_TestCooperativeLevel(p)	(p)->TestCooperativeLevel()
+#define IDirect3DDevice9_GetAvailableTextureMem(p)	(p)->GetAvailableTextureMem()
+#define IDirect3DDevice9_EvictManagedResources(p)	(p)->EvictManagedResources()
+#define IDirect3DDevice9_GetDirect3D(p,a)	(p)->GetDirect3D(a)
+#define IDirect3DDevice9_GetDeviceCaps(p,a)	(p)->GetDeviceCaps(a)
+#define IDirect3DDevice9_GetDisplayMode(p,a,b)	(p)->GetDisplayMode(a,b)
+#define IDirect3DDevice9_GetCreationParameters(p,a)	(p)->GetCreationParameters(a)
+#define IDirect3DDevice9_SetCursorProperties(p,a,b,c)	(p)->SetCursorProperties(a,b,c)
+#define IDirect3DDevice9_SetCursorPosition(p,a,b,c)	(p)->SetCursorPosition(a,b,c)
+#define IDirect3DDevice9_ShowCursor(p,a)	(p)->ShowCursor(a)
+#define IDirect3DDevice9_CreateAdditionalSwapChain(p,a,b)	(p)->CreateAdditionalSwapChain(a,b)
+#define IDirect3DDevice9_GetSwapChain(p,a,b)	(p)->GetSwapChain(a,b)
+#define IDirect3DDevice9_GetNumberOfSwapChains(p)	(p)->GetNumberOfSwapChains()
+#define IDirect3DDevice9_Reset(p,a)	(p)->Reset(a)
+#define IDirect3DDevice9_Present(p,a,b,c,d)	(p)->Present(a,b,c,d)
+#define IDirect3DDevice9_GetBackBuffer(p,a,b,c,d)	(p)->GetBackBuffer(a,b,c,d)
+#define IDirect3DDevice9_GetRasterStatus(p,a,b)	(p)->GetRasterStatus(a,b)
+#define IDirect3DDevice9_SetDialogBoxMode(p,a)	(p)->SetDialogBoxMode(a)
+#define IDirect3DDevice9_SetGammaRamp(p,a,b,c)	(p)->SetGammaRamp(a,b,c)
+#define IDirect3DDevice9_GetGammaRamp(p,a,b)	(p)->GetGammaRamp(a,b)
+#define IDirect3DDevice9_CreateTexture(p,a,b,c,d,e,f,g,h)	(p)->CreateTexture(a,b,c,d,e,f,g,h)
+#define IDirect3DDevice9_CreateVolumeTexture(p,a,b,c,d,e,f,g,h,i)	(p)->CreateVolumeTexture(a,b,c,d,e,f,g,h,i)
+#define IDirect3DDevice9_CreateCubeTexture(p,a,b,c,d,e,f,g)	(p)->CreateCubeTexture(a,b,c,d,e,f,g)
+#define IDirect3DDevice9_CreateVertexBuffer(p,a,b,c,d,e,f)	(p)->CreateVertexBuffer(a,b,c,d,e,f)
+#define IDirect3DDevice9_CreateIndexBuffer(p,a,b,c,d,e,f)	(p)->CreateIndexBuffer(a,b,c,d,e,f)
+#define IDirect3DDevice9_CreateRenderTarget(p,a,b,c,d,e,f,g,h)	(p)->CreateRenderTarget(a,b,c,d,e,f,g,h)
+#define IDirect3DDevice9_CreateDepthStencilSurface(p,a,b,c,d,e,f,g,h)	(p)->CreateDepthStencilSurface(a,b,c,d,e,f,g,h)
+#define IDirect3DDevice9_UpdateSurface(p,a,b,c,d)	(p)->UpdateSurface(a,b,c,d)
+#define IDirect3DDevice9_UpdateTexture(p,a,b)	(p)->UpdateTexture(a,b)
+#define IDirect3DDevice9_GetRenderTargetData(p,a,b)	(p)->GetRenderTargetData(a,b)
+#define IDirect3DDevice9_GetFrontBufferData(p,a,b)	(p)->GetFrontBufferData(a,b)
+#define IDirect3DDevice9_StretchRect(p,a,b,c,d,e)	(p)->StretchRect(a,b,c,d,e)
+#define IDirect3DDevice9_ColorFill(p,a,b,c)	(p)->ColorFill(a,b,c)
+#define IDirect3DDevice9_CreateOffscreenPlainSurface(p,a,b,c,d,e,f)	(p)->CreateOffscreenPlainSurface(a,b,c,d,e,f)
+#define IDirect3DDevice9_SetRenderTarget(p,a,b)	(p)->SetRenderTarget(a,b)
+#define IDirect3DDevice9_GetRenderTarget(p,a,b)	(p)->GetRenderTarget(a,b)
+#define IDirect3DDevice9_SetDepthStencilSurface(p,a)	(p)->SetDepthStencilSurface(a)
+#define IDirect3DDevice9_GetDepthStencilSurface(p,a)	(p)->GetDepthStencilSurface(a)
+#define IDirect3DDevice9_BeginScene(p)	(p)->BeginScene()
+#define IDirect3DDevice9_EndScene(p)	(p)->EndScene()
+#define IDirect3DDevice9_Clear(p,a,b,c,d,e,f)	(p)->Clear(a,b,c,d,e,f)
+#define IDirect3DDevice9_SetTransform(p,a,b)	(p)->SetTransform(a,b)
+#define IDirect3DDevice9_GetTransform(p,a,b)	(p)->GetTransform(a,b)
+#define IDirect3DDevice9_MultiplyTransform(p,a,b)	(p)->MultiplyTransform(a,b)
+#define IDirect3DDevice9_SetViewport(p,a)	(p)->SetViewport(a)
+#define IDirect3DDevice9_GetViewport(p,a)	(p)->GetViewport(a)
+#define IDirect3DDevice9_SetMaterial(p,a)	(p)->SetMaterial(a)
+#define IDirect3DDevice9_GetMaterial(p,a)	(p)->GetMaterial(a)
+#define IDirect3DDevice9_SetLight(p,a,b)	(p)->SetLight(a,b)
+#define IDirect3DDevice9_GetLight(p,a,b)	(p)->GetLight(a,b)
+#define IDirect3DDevice9_LightEnable(p,a,b)	(p)->LightEnable(a,b)
+#define IDirect3DDevice9_GetLightEnable(p,a,b)	(p)->GetLightEnable(a,b)
+#define IDirect3DDevice9_SetClipPlane(p,a,b)	(p)->SetClipPlane(a,b)
+#define IDirect3DDevice9_GetClipPlane(p,a,b)	(p)->GetClipPlane(a,b)
+#define IDirect3DDevice9_SetRenderState(p,a,b)	(p)->SetRenderState(a,b)
+#define IDirect3DDevice9_GetRenderState(p,a,b)	(p)->GetRenderState(a,b)
+#define IDirect3DDevice9_CreateStateBlock(p,a,b)	(p)->CreateStateBlock(a,b)
+#define IDirect3DDevice9_BeginStateBlock(p)	(p)->BeginStateBlock()
+#define IDirect3DDevice9_EndStateBlock(p,a)	(p)->EndStateBlock(a)
+#define IDirect3DDevice9_SetClipStatus(p,a)	(p)->SetClipStatus(a)
+#define IDirect3DDevice9_GetClipStatus(p,a)	(p)->GetClipStatus(a)
+#define IDirect3DDevice9_GetTexture(p,a,b)	(p)->GetTexture(a,b)
+#define IDirect3DDevice9_SetTexture(p,a,b)	(p)->SetTexture(a,b)
+#define IDirect3DDevice9_GetTextureStageState(p,a,b,c)	(p)->GetTextureStageState(a,b,c)
+#define IDirect3DDevice9_SetTextureStageState(p,a,b,c)	(p)->SetTextureStageState(a,b,c)
+#define IDirect3DDevice9_GetSamplerState(p,a,b,c)	(p)->GetSamplerState(a,b,c)
+#define IDirect3DDevice9_SetSamplerState(p,a,b,c)	(p)->SetSamplerState(a,b,c)
+#define IDirect3DDevice9_ValidateDevice(p,a)	(p)->ValidateDevice(a)
+#define IDirect3DDevice9_SetPaletteEntries(p,a,b)	(p)->SetPaletteEntries(a,b)
+#define IDirect3DDevice9_GetPaletteEntries(p,a,b)	(p)->GetPaletteEntries(a,b)
+#define IDirect3DDevice9_SetCurrentTexturePalette(p,a)	(p)->SetCurrentTexturePalette(a)
+#define IDirect3DDevice9_GetCurrentTexturePalette(p,a)	(p)->GetCurrentTexturePalette(a)
+#define IDirect3DDevice9_SetScissorRect(p,a)	(p)->SetScissorRect(a)
+#define IDirect3DDevice9_GetScissorRect(p,a)	(p)->GetScissorRect(a)
+#define IDirect3DDevice9_SetSoftwareVertexProcessing(p,a)	(p)->SetSoftwareVertexProcessing(a)
+#define IDirect3DDevice9_GetSoftwareVertexProcessing(p)	(p)->GetSoftwareVertexProcessing()
+#define IDirect3DDevice9_SetNPatchMode(p,a)	(p)->SetNPatchMode(a)
+#define IDirect3DDevice9_GetNPatchMode(p)	(p)->GetNPatchMode()
+#define IDirect3DDevice9_DrawPrimitive(p,a,b,c)	(p)->DrawPrimitive(a,b,c)
+#define IDirect3DDevice9_DrawIndexedPrimitive(p,a,b,c,d,e,f)	(p)->DrawIndexedPrimitive(a,b,c,d,e,f)
+#define IDirect3DDevice9_DrawPrimitiveUP(p,a,b,c,d)	(p)->DrawPrimitiveUP(a,b,c,d)
+#define IDirect3DDevice9_DrawIndexedPrimitiveUP(p,a,b,c,d,e,f,g,h)	(p)->DrawIndexedPrimitiveUP(a,b,c,d,e,f,g,h)
+#define IDirect3DDevice9_ProcessVertices(p,a,b,c,d,e,f)	(p)->ProcessVertices(a,b,c,d,e,f)
+#define IDirect3DDevice9_CreateVertexDeclaration(p,a,b)	(p)->CreateVertexDeclaration(a,b)
+#define IDirect3DDevice9_SetVertexDeclaration(p,a)	(p)->SetVertexDeclaration(a)
+#define IDirect3DDevice9_GetVertexDeclaration(p,a)	(p)->GetVertexDeclaration(a)
+#define IDirect3DDevice9_SetFVF(p,a)	(p)->SetFVF(a)
+#define IDirect3DDevice9_GetFVF(p,a)	(p)->GetFVF(a)
+#define IDirect3DDevice9_CreateVertexShader(p,a,b)	(p)->CreateVertexShader(a,b)
+#define IDirect3DDevice9_SetVertexShader(p,a)	(p)->SetVertexShader(a)
+#define IDirect3DDevice9_GetVertexShader(p,a)	(p)->GetVertexShader(a)
+#define IDirect3DDevice9_SetVertexShaderConstantF(p,a,b,c)	(p)->SetVertexShaderConstantF(a,b,c)
+#define IDirect3DDevice9_GetVertexShaderConstantF(p,a,b,c)	(p)->GetVertexShaderConstantF(a,b,c)
+#define IDirect3DDevice9_SetVertexShaderConstantI(p,a,b,c)	(p)->SetVertexShaderConstantI(a,b,c)
+#define IDirect3DDevice9_GetVertexShaderConstantI(p,a,b,c)	(p)->GetVertexShaderConstantI(a,b,c)
+#define IDirect3DDevice9_SetVertexShaderConstantB(p,a,b,c)	(p)->SetVertexShaderConstantB(a,b,c)
+#define IDirect3DDevice9_GetVertexShaderConstantB(p,a,b,c)	(p)->GetVertexShaderConstantB(a,b,c)
+#define IDirect3DDevice9_SetStreamSource(p,a,b,c,d)	(p)->SetStreamSource(a,b,c,d)
+#define IDirect3DDevice9_GetStreamSource(p,a,b,c,d)	(p)->GetStreamSource(a,b,c,d)
+#define IDirect3DDevice9_SetStreamSourceFreq(p,a,b)	(p)->SetStreamSourceFreq(a,b)
+#define IDirect3DDevice9_GetStreamSourceFreq(p,a,b)	(p)->GetStreamSourceFreq(a,b)
+#define IDirect3DDevice9_SetIndices(p,a)	(p)->SetIndices(a)
+#define IDirect3DDevice9_GetIndices(p,a)	(p)->GetIndices(a)
+#define IDirect3DDevice9_CreatePixelShader(p,a,b)	(p)->CreatePixelShader(a,b)
+#define IDirect3DDevice9_SetPixelShader(p,a)	(p)->SetPixelShader(a)
+#define IDirect3DDevice9_GetPixelShader(p,a)	(p)->GetPixelShader(a)
+#define IDirect3DDevice9_SetPixelShaderConstantF(p,a,b,c)	(p)->SetPixelShaderConstantF(a,b,c)
+#define IDirect3DDevice9_GetPixelShaderConstantF(p,a,b,c)	(p)->GetPixelShaderConstantF(a,b,c)
+#define IDirect3DDevice9_SetPixelShaderConstantI(p,a,b,c)	(p)->SetPixelShaderConstantI(a,b,c)
+#define IDirect3DDevice9_GetPixelShaderConstantI(p,a,b,c)	(p)->GetPixelShaderConstantI(a,b,c)
+#define IDirect3DDevice9_SetPixelShaderConstantB(p,a,b,c)	(p)->SetPixelShaderConstantB(a,b,c)
+#define IDirect3DDevice9_GetPixelShaderConstantB(p,a,b,c)	(p)->GetPixelShaderConstantB(a,b,c)
+#define IDirect3DDevice9_DrawRectPatch(p,a,b,c)	(p)->DrawRectPatch(a,b,c)
+#define IDirect3DDevice9_DrawTriPatch(p,a,b,c)	(p)->DrawTriPatch(a,b,c)
+#define IDirect3DDevice9_DeletePatch(p,a)	(p)->DeletePatch(a)
+#define IDirect3DDevice9_CreateQuery(p,a,b)	(p)->CreateQuery(a,b)
+#endif
+
+#undef INTERFACE
+#define INTERFACE IDirect3DVolume9
+DECLARE_INTERFACE_(IDirect3DVolume9,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetDevice)(THIS_ IDirect3DDevice9**) PURE;
+	STDMETHOD(SetPrivateData)(THIS_ REFGUID,CONST void*,DWORD,DWORD) PURE;
+	STDMETHOD(GetPrivateData)(THIS_ REFGUID,void*,DWORD*) PURE;
+	STDMETHOD(FreePrivateData)(THIS_ REFGUID) PURE;
+	STDMETHOD(GetContainer)(THIS_ REFIID,void**) PURE;
+	STDMETHOD(GetDesc)(THIS_ D3DVOLUME_DESC*) PURE;
+	STDMETHOD(LockBox)(THIS_ D3DLOCKED_BOX*,CONST D3DBOX*,DWORD) PURE;
+	STDMETHOD(UnlockBox)(THIS) PURE;
+};
+typedef struct IDirect3DVolume9 *LPDIRECT3DVOLUME9, *PDIRECT3DVOLUME9;
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirect3DVolume9_QueryInterface(p,a,b)	(p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DVolume9_AddRef(p)	(p)->lpVtbl->AddRef(p)
+#define IDirect3DVolume9_Release(p)	(p)->lpVtbl->Release(p)
+#define IDirect3DVolume9_GetDevice(p,a)	(p)->lpVtbl->GetDevice(p,a)
+#define IDirect3DVolume9_SetPrivateData(p,a,b,c,d)	(p)->lpVtbl->SetPrivateData(p,a,b,c,d)
+#define IDirect3DVolume9_GetPrivateData(p,a,b,c)	(p)->lpVtbl->GetPrivateData(p,a,b,c)
+#define IDirect3DVolume9_FreePrivateData(p,a)	(p)->lpVtbl->FreePrivateData(p,a)
+#define IDirect3DVolume9_GetContainer(p,a,b)	(p)->lpVtbl->GetContainer(p,a,b)
+#define IDirect3DVolume9_GetDesc(p,a)	(p)->lpVtbl->GetDesc(p,a)
+#define IDirect3DVolume9_LockBox(p,a,b,c)	(p)->lpVtbl->LockBox(p,a,b,c)
+#define IDirect3DVolume9_UnlockBox(p)	(p)->lpVtbl->UnlockBox(p)
+#else
+#define IDirect3DVolume9_QueryInterface(p,a,b)	(p)->QueryInterface(a,b)
+#define IDirect3DVolume9_AddRef(p)	(p)->AddRef()
+#define IDirect3DVolume9_Release(p)	(p)->Release()
+#define IDirect3DVolume9_GetDevice(p,a)	(p)->GetDevice(a)
+#define IDirect3DVolume9_SetPrivateData(p,a,b,c,d)	(p)->SetPrivateData(a,b,c,d)
+#define IDirect3DVolume9_GetPrivateData(p,a,b,c)	(p)->GetPrivateData(a,b,c)
+#define IDirect3DVolume9_FreePrivateData(p,a)	(p)->FreePrivateData(a)
+#define IDirect3DVolume9_GetContainer(p,a,b)	(p)->GetContainer(a,b)
+#define IDirect3DVolume9_GetDesc(p,a)	(p)->GetDesc(a)
+#define IDirect3DVolume9_LockBox(p,a,b,c)	(p)->LockBox(a,b,c)
+#define IDirect3DVolume9_UnlockBox(p)	(p)->UnlockBox()
+#endif
+
+#undef INTERFACE
+#define INTERFACE IDirect3DSwapChain9
+DECLARE_INTERFACE_(IDirect3DSwapChain9,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(Present)(THIS_ CONST RECT*,CONST RECT*,HWND,CONST RGNDATA*,DWORD) PURE;
+	STDMETHOD(GetFrontBufferData)(THIS_ IDirect3DSurface9*) PURE;
+	STDMETHOD(GetBackBuffer)(THIS_ UINT,D3DBACKBUFFER_TYPE,IDirect3DSurface9**) PURE;
+	STDMETHOD(GetRasterStatus)(THIS_ D3DRASTER_STATUS*) PURE;
+	STDMETHOD(GetDisplayMode)(THIS_ D3DDISPLAYMODE*) PURE;
+	STDMETHOD(GetDevice)(THIS_ IDirect3DDevice9**) PURE;
+	STDMETHOD(GetPresentParameters)(THIS_ D3DPRESENT_PARAMETERS*) PURE;
+};
+typedef struct IDirect3DSwapChain9 *LPDIRECT3DSWAPCHAIN9, *PDIRECT3DSWAPCHAIN9;
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirect3DSwapChain9_QueryInterface(p,a,b)	(p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DSwapChain9_AddRef(p)	(p)->lpVtbl->AddRef(p)
+#define IDirect3DSwapChain9_Release(p)	(p)->lpVtbl->Release(p)
+#define IDirect3DSwapChain9_Present(p,a,b,c,d,e)	(p)->lpVtbl->Present(p,a,b,c,d,e)
+#define IDirect3DSwapChain9_GetFrontBufferData(p,a)	(p)->lpVtbl->GetFrontBufferData(p,a)
+#define IDirect3DSwapChain9_GetBackBuffer(p,a,b,c)	(p)->lpVtbl->GetBackBuffer(p,a,b,c)
+#define IDirect3DSwapChain9_GetRasterStatus(p,a)	(p)->lpVtbl->GetRasterStatus(p,a)
+#define IDirect3DSwapChain9_GetDisplayMode(p,a)	(p)->lpVtbl->GetDisplayMode(p,a)
+#define IDirect3DSwapChain9_GetDevice(p,a)	(p)->lpVtbl->GetDevice(p,a)
+#define IDirect3DSwapChain9_GetPresentParameters(p,a)	(p)->lpVtbl->GetPresentParameters(p,a)
+#else
+#define IDirect3DSwapChain9_QueryInterface(p,a,b)	(p)->QueryInterface(a,b)
+#define IDirect3DSwapChain9_AddRef(p)	(p)->AddRef()
+#define IDirect3DSwapChain9_Release(p)	(p)->Release()
+#define IDirect3DSwapChain9_Present(p,a,b,c,d,e)	(p)->Present(a,b,c,d,e)
+#define IDirect3DSwapChain9_GetFrontBufferData(p,a)	(p)->GetFrontBufferData(a)
+#define IDirect3DSwapChain9_GetBackBuffer(p,a,b,c)	(p)->GetBackBuffer(a,b,c)
+#define IDirect3DSwapChain9_GetRasterStatus(p,a)	(p)->GetRasterStatus(a)
+#define IDirect3DSwapChain9_GetDisplayMode(p,a)	(p)->GetDisplayMode(a)
+#define IDirect3DSwapChain9_GetDevice(p,a)	(p)->GetDevice(a)
+#define IDirect3DSwapChain9_GetPresentParameters(p,a)	(p)->GetPresentParameters(a)
+#endif
+
+#undef INTERFACE
+#define INTERFACE IDirect3DResource9
+DECLARE_INTERFACE_(IDirect3DResource9,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetDevice)(THIS_ IDirect3DDevice9**) PURE;
+	STDMETHOD(SetPrivateData)(THIS_ REFGUID,CONST void*,DWORD,DWORD) PURE;
+	STDMETHOD(GetPrivateData)(THIS_ REFGUID,void*,DWORD*) PURE;
+	STDMETHOD(FreePrivateData)(THIS_ REFGUID) PURE;
+	STDMETHOD_(DWORD,SetPriority)(THIS_ DWORD) PURE;
+	STDMETHOD_(DWORD,GetPriority)(THIS) PURE;
+	STDMETHOD_(void,PreLoad)(THIS) PURE;
+	STDMETHOD_(D3DRESOURCETYPE,GetType)(THIS) PURE;
+};
+typedef struct IDirect3DResource9 *LPDIRECT3DRESOURCE9, *PDIRECT3DRESOURCE9;
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirect3DResource9_QueryInterface(p,a,b)	(p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DResource9_AddRef(p)	(p)->lpVtbl->AddRef(p)
+#define IDirect3DResource9_Release(p)	(p)->lpVtbl->Release(p)
+#define IDirect3DResource9_GetDevice(p,a)	(p)->lpVtbl->GetDevice(p,a)
+#define IDirect3DResource9_SetPrivateData(p,a,b,c,d)	(p)->lpVtbl->SetPrivateData(p,a,b,c,d)
+#define IDirect3DResource9_GetPrivateData(p,a,b,c)	(p)->lpVtbl->GetPrivateData(p,a,b,c)
+#define IDirect3DResource9_FreePrivateData(p,a)	(p)->lpVtbl->FreePrivateData(p,a)
+#define IDirect3DResource9_SetPriority(p,a)	(p)->lpVtbl->SetPriority(p,a)
+#define IDirect3DResource9_GetPriority(p)	(p)->lpVtbl->GetPriority(p)
+#define IDirect3DResource9_PreLoad(p)	(p)->lpVtbl->PreLoad(p)
+#define IDirect3DResource9_GetType(p)	(p)->lpVtbl->GetType(p)
+#else
+#define IDirect3DResource9_QueryInterface(p,a,b)	(p)->QueryInterface(a,b)
+#define IDirect3DResource9_AddRef(p)	(p)->AddRef()
+#define IDirect3DResource9_Release(p)	(p)->Release()
+#define IDirect3DResource9_GetDevice(p,a)	(p)->GetDevice(a)
+#define IDirect3DResource9_SetPrivateData(p,a,b,c,d)	(p)->SetPrivateData(a,b,c,d)
+#define IDirect3DResource9_GetPrivateData(p,a,b,c)	(p)->GetPrivateData(a,b,c)
+#define IDirect3DResource9_FreePrivateData(p,a)	(p)->FreePrivateData(a)
+#define IDirect3DResource9_SetPriority(p,a)	(p)->SetPriority(a)
+#define IDirect3DResource9_GetPriority(p)	(p)->GetPriority()
+#define IDirect3DResource9_PreLoad(p)	(p)->PreLoad()
+#define IDirect3DResource9_GetType(p)	(p)->GetType()
+#endif
+
+#undef INTERFACE
+#define INTERFACE IDirect3DSurface9
+DECLARE_INTERFACE_(IDirect3DSurface9,IDirect3DResource9)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetDevice)(THIS_ IDirect3DDevice9**) PURE;
+	STDMETHOD(SetPrivateData)(THIS_ REFGUID,CONST void*,DWORD,DWORD) PURE;
+	STDMETHOD(GetPrivateData)(THIS_ REFGUID,void*,DWORD*) PURE;
+	STDMETHOD(FreePrivateData)(THIS_ REFGUID) PURE;
+	STDMETHOD_(DWORD,SetPriority)(THIS_ DWORD) PURE;
+	STDMETHOD_(DWORD,GetPriority)(THIS) PURE;
+	STDMETHOD_(void,PreLoad)(THIS) PURE;
+	STDMETHOD_(D3DRESOURCETYPE,GetType)(THIS) PURE;
+	STDMETHOD(GetContainer)(THIS_ REFIID,void**) PURE;
+	STDMETHOD(GetDesc)(THIS_ D3DSURFACE_DESC*) PURE;
+	STDMETHOD(LockRect)(THIS_ D3DLOCKED_RECT*,CONST RECT*,DWORD) PURE;
+	STDMETHOD(UnlockRect)(THIS) PURE;
+	STDMETHOD(GetDC)(THIS_ HDC*) PURE;
+	STDMETHOD(ReleaseDC)(THIS_ HDC) PURE;
+};
+typedef struct IDirect3DSurface9 *LPDIRECT3DSURFACE9, *PDIRECT3DSURFACE9;
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirect3DSurface9_QueryInterface(p,a,b)	(p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DSurface9_AddRef(p)	(p)->lpVtbl->AddRef(p)
+#define IDirect3DSurface9_Release(p)	(p)->lpVtbl->Release(p)
+#define IDirect3DSurface9_GetDevice(p,a)	(p)->lpVtbl->GetDevice(p,a)
+#define IDirect3DSurface9_SetPrivateData(p,a,b,c,d)	(p)->lpVtbl->SetPrivateData(p,a,b,c,d)
+#define IDirect3DSurface9_GetPrivateData(p,a,b,c)	(p)->lpVtbl->GetPrivateData(p,a,b,c)
+#define IDirect3DSurface9_FreePrivateData(p,a)	(p)->lpVtbl->FreePrivateData(p,a)
+#define IDirect3DSurface9_SetPriority(p,a)	(p)->lpVtbl->SetPriority(p,a)
+#define IDirect3DSurface9_GetPriority(p)	(p)->lpVtbl->GetPriority(p)
+#define IDirect3DSurface9_PreLoad(p)	(p)->lpVtbl->PreLoad(p)
+#define IDirect3DSurface9_GetType(p)	(p)->lpVtbl->GetType(p)
+#define IDirect3DSurface9_GetContainer(p,a,b)	(p)->lpVtbl->GetContainer(p,a,b)
+#define IDirect3DSurface9_GetDesc(p,a)	(p)->lpVtbl->GetDesc(p,a)
+#define IDirect3DSurface9_LockRect(p,a,b,c)	(p)->lpVtbl->LockRect(p,a,b,c)
+#define IDirect3DSurface9_UnlockRect(p)	(p)->lpVtbl->UnlockRect(p)
+#define IDirect3DSurface9_GetDC(p,a)	(p)->lpVtbl->GetDC(p,a)
+#define IDirect3DSurface9_ReleaseDC(p,a)	(p)->lpVtbl->ReleaseDC(p,a)
+#else
+#define IDirect3DSurface9_QueryInterface(p,a,b)	(p)->QueryInterface(a,b)
+#define IDirect3DSurface9_AddRef(p)	(p)->AddRef()
+#define IDirect3DSurface9_Release(p)	(p)->Release()
+#define IDirect3DSurface9_GetDevice(p,a)	(p)->GetDevice(a)
+#define IDirect3DSurface9_SetPrivateData(p,a,b,c,d)	(p)->SetPrivateData(a,b,c,d)
+#define IDirect3DSurface9_GetPrivateData(p,a,b,c)	(p)->GetPrivateData(a,b,c)
+#define IDirect3DSurface9_FreePrivateData(p,a)	(p)->FreePrivateData(a)
+#define IDirect3DSurface9_SetPriority(p,a)	(p)->SetPriority(a)
+#define IDirect3DSurface9_GetPriority(p)	(p)->GetPriority()
+#define IDirect3DSurface9_PreLoad(p)	(p)->PreLoad()
+#define IDirect3DSurface9_GetType(p)	(p)->GetType()
+#define IDirect3DSurface9_GetContainer(p,a,b)	(p)->GetContainer(a,b)
+#define IDirect3DSurface9_GetDesc(p,a)	(p)->GetDesc(a)
+#define IDirect3DSurface9_LockRect(p,a,b,c)	(p)->LockRect(a,b,c)
+#define IDirect3DSurface9_UnlockRect(p)	(p)->UnlockRect()
+#define IDirect3DSurface9_GetDC(p,a)	(p)->GetDC(a)
+#define IDirect3DSurface9_ReleaseDC(p,a)	(p)->ReleaseDC(a)
+#endif
+
+#undef INTERFACE
+#define INTERFACE IDirect3DVertexBuffer9
+DECLARE_INTERFACE_(IDirect3DVertexBuffer9,IDirect3DResource9)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetDevice)(THIS_ IDirect3DDevice9**) PURE;
+	STDMETHOD(SetPrivateData)(THIS_ REFGUID,CONST void*,DWORD,DWORD) PURE;
+	STDMETHOD(GetPrivateData)(THIS_ REFGUID,void*,DWORD*) PURE;
+	STDMETHOD(FreePrivateData)(THIS_ REFGUID) PURE;
+	STDMETHOD_(DWORD,SetPriority)(THIS_ DWORD) PURE;
+	STDMETHOD_(DWORD,GetPriority)(THIS) PURE;
+	STDMETHOD_(void,PreLoad)(THIS) PURE;
+	STDMETHOD_(D3DRESOURCETYPE,GetType)(THIS) PURE;
+	STDMETHOD(Lock)(THIS_ UINT,UINT,void**,DWORD) PURE;
+	STDMETHOD(Unlock)(THIS) PURE;
+	STDMETHOD(GetDesc)(THIS_ D3DVERTEXBUFFER_DESC*) PURE;
+};
+typedef struct IDirect3DVertexBuffer9 *LPDIRECT3DVERTEXBUFFER9, *PDIRECT3DVERTEXBUFFER9;
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirect3DVertexBuffer9_QueryInterface(p,a,b)	(p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DVertexBuffer9_AddRef(p)	(p)->lpVtbl->AddRef(p)
+#define IDirect3DVertexBuffer9_Release(p)	(p)->lpVtbl->Release(p)
+#define IDirect3DVertexBuffer9_GetDevice(p,a)	(p)->lpVtbl->GetDevice(p,a)
+#define IDirect3DVertexBuffer9_SetPrivateData(p,a,b,c,d)	(p)->lpVtbl->SetPrivateData(p,a,b,c,d)
+#define IDirect3DVertexBuffer9_GetPrivateData(p,a,b,c)	(p)->lpVtbl->GetPrivateData(p,a,b,c)
+#define IDirect3DVertexBuffer9_FreePrivateData(p,a)	(p)->lpVtbl->FreePrivateData(p,a)
+#define IDirect3DVertexBuffer9_SetPriority(p,a)	(p)->lpVtbl->SetPriority(p,a)
+#define IDirect3DVertexBuffer9_GetPriority(p)	(p)->lpVtbl->GetPriority(p)
+#define IDirect3DVertexBuffer9_PreLoad(p)	(p)->lpVtbl->PreLoad(p)
+#define IDirect3DVertexBuffer9_GetType(p)	(p)->lpVtbl->GetType(p)
+#define IDirect3DVertexBuffer9_Lock(p,a,b,c,d)	(p)->lpVtbl->Lock(p,a,b,c,d)
+#define IDirect3DVertexBuffer9_Unlock(p)	(p)->lpVtbl->Unlock(p)
+#define IDirect3DVertexBuffer9_GetDesc(p,a)	(p)->lpVtbl->GetDesc(p,a)
+#else
+#define IDirect3DVertexBuffer9_QueryInterface(p,a,b)	(p)->QueryInterface(a,b)
+#define IDirect3DVertexBuffer9_AddRef(p)	(p)->AddRef()
+#define IDirect3DVertexBuffer9_Release(p)	(p)->Release()
+#define IDirect3DVertexBuffer9_GetDevice(p,a)	(p)->GetDevice(a)
+#define IDirect3DVertexBuffer9_SetPrivateData(p,a,b,c,d)	(p)->SetPrivateData(a,b,c,d)
+#define IDirect3DVertexBuffer9_GetPrivateData(p,a,b,c)	(p)->GetPrivateData(a,b,c)
+#define IDirect3DVertexBuffer9_FreePrivateData(p,a)	(p)->FreePrivateData(a)
+#define IDirect3DVertexBuffer9_SetPriority(p,a)	(p)->SetPriority(a)
+#define IDirect3DVertexBuffer9_GetPriority(p)	(p)->GetPriority()
+#define IDirect3DVertexBuffer9_PreLoad(p)	(p)->PreLoad()
+#define IDirect3DVertexBuffer9_GetType(p)	(p)->GetType()
+#define IDirect3DVertexBuffer9_Lock(p,a,b,c,d)	(p)->Lock(a,b,c,d)
+#define IDirect3DVertexBuffer9_Unlock(p)	(p)->Unlock()
+#define IDirect3DVertexBuffer9_GetDesc(p,a)	(p)->GetDesc(a)
+#endif
+
+#undef INTERFACE
+#define INTERFACE IDirect3DIndexBuffer9
+DECLARE_INTERFACE_(IDirect3DIndexBuffer9,IDirect3DResource9)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetDevice)(THIS_ IDirect3DDevice9**) PURE;
+	STDMETHOD(SetPrivateData)(THIS_ REFGUID,CONST void*,DWORD,DWORD) PURE;
+	STDMETHOD(GetPrivateData)(THIS_ REFGUID,void*,DWORD*) PURE;
+	STDMETHOD(FreePrivateData)(THIS_ REFGUID) PURE;
+	STDMETHOD_(DWORD,SetPriority)(THIS_ DWORD) PURE;
+	STDMETHOD_(DWORD,GetPriority)(THIS) PURE;
+	STDMETHOD_(void,PreLoad)(THIS) PURE;
+	STDMETHOD_(D3DRESOURCETYPE,GetType)(THIS) PURE;
+	STDMETHOD(Lock)(THIS_ UINT,UINT,void**,DWORD) PURE;
+	STDMETHOD(Unlock)(THIS) PURE;
+	STDMETHOD(GetDesc)(THIS_ D3DINDEXBUFFER_DESC*) PURE;
+};
+typedef struct IDirect3DIndexBuffer9 *LPDIRECT3DINDEXBUFFER9, *PDIRECT3DINDEXBUFFER9;
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirect3DIndexBuffer9_QueryInterface(p,a,b)	(p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DIndexBuffer9_AddRef(p)	(p)->lpVtbl->AddRef(p)
+#define IDirect3DIndexBuffer9_Release(p)	(p)->lpVtbl->Release(p)
+#define IDirect3DIndexBuffer9_GetDevice(p,a)	(p)->lpVtbl->GetDevice(p,a)
+#define IDirect3DIndexBuffer9_SetPrivateData(p,a,b,c,d)	(p)->lpVtbl->SetPrivateData(p,a,b,c,d)
+#define IDirect3DIndexBuffer9_GetPrivateData(p,a,b,c)	(p)->lpVtbl->GetPrivateData(p,a,b,c)
+#define IDirect3DIndexBuffer9_FreePrivateData(p,a)	(p)->lpVtbl->FreePrivateData(p,a)
+#define IDirect3DIndexBuffer9_SetPriority(p,a)	(p)->lpVtbl->SetPriority(p,a)
+#define IDirect3DIndexBuffer9_GetPriority(p)	(p)->lpVtbl->GetPriority(p)
+#define IDirect3DIndexBuffer9_PreLoad(p)	(p)->lpVtbl->PreLoad(p)
+#define IDirect3DIndexBuffer9_GetType(p)	(p)->lpVtbl->GetType(p)
+#define IDirect3DIndexBuffer9_Lock(p,a,b,c,d)	(p)->lpVtbl->Lock(p,a,b,c,d)
+#define IDirect3DIndexBuffer9_Unlock(p)	(p)->lpVtbl->Unlock(p)
+#define IDirect3DIndexBuffer9_GetDesc(p,a)	(p)->lpVtbl->GetDesc(p,a)
+#else
+#define IDirect3DIndexBuffer9_QueryInterface(p,a,b)	(p)->QueryInterface(a,b)
+#define IDirect3DIndexBuffer9_AddRef(p)	(p)->AddRef()
+#define IDirect3DIndexBuffer9_Release(p)	(p)->Release()
+#define IDirect3DIndexBuffer9_GetDevice(p,a)	(p)->GetDevice(a)
+#define IDirect3DIndexBuffer9_SetPrivateData(p,a,b,c,d)	(p)->SetPrivateData(a,b,c,d)
+#define IDirect3DIndexBuffer9_GetPrivateData(p,a,b,c)	(p)->GetPrivateData(a,b,c)
+#define IDirect3DIndexBuffer9_FreePrivateData(p,a)	(p)->FreePrivateData(a)
+#define IDirect3DIndexBuffer9_SetPriority(p,a)	(p)->SetPriority(a)
+#define IDirect3DIndexBuffer9_GetPriority(p)	(p)->GetPriority()
+#define IDirect3DIndexBuffer9_PreLoad(p)	(p)->PreLoad()
+#define IDirect3DIndexBuffer9_GetType(p)	(p)->GetType()
+#define IDirect3DIndexBuffer9_Lock(p,a,b,c,d)	(p)->Lock(a,b,c,d)
+#define IDirect3DIndexBuffer9_Unlock(p)	(p)->Unlock()
+#define IDirect3DIndexBuffer9_GetDesc(p,a)	(p)->GetDesc(a)
+#endif
+
+#undef INTERFACE
+#define INTERFACE IDirect3DBaseTexture9
+DECLARE_INTERFACE_(IDirect3DBaseTexture9,IDirect3DResource9)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetDevice)(THIS_ IDirect3DDevice9**) PURE;
+	STDMETHOD(SetPrivateData)(THIS_ REFGUID,CONST void*,DWORD,DWORD) PURE;
+	STDMETHOD(GetPrivateData)(THIS_ REFGUID,void*,DWORD*) PURE;
+	STDMETHOD(FreePrivateData)(THIS_ REFGUID) PURE;
+	STDMETHOD_(DWORD,SetPriority)(THIS_ DWORD) PURE;
+	STDMETHOD_(DWORD,GetPriority)(THIS) PURE;
+	STDMETHOD_(void,PreLoad)(THIS) PURE;
+	STDMETHOD_(D3DRESOURCETYPE,GetType)(THIS) PURE;
+	STDMETHOD_(DWORD,SetLOD)(THIS_ DWORD) PURE;
+	STDMETHOD_(DWORD,GetLOD)(THIS) PURE;
+	STDMETHOD_(DWORD,GetLevelCount)(THIS) PURE;
+	STDMETHOD(SetAutoGenFilterType)(THIS_ D3DTEXTUREFILTERTYPE) PURE;
+	STDMETHOD_(D3DTEXTUREFILTERTYPE,GetAutoGenFilterType)(THIS) PURE;
+	STDMETHOD_(void,GenerateMipSubLevels)(THIS) PURE;
+};
+typedef struct IDirect3DBaseTexture9 *LPDIRECT3DBASETEXTURE9, *PDIRECT3DBASETEXTURE9;
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirect3DBaseTexture9_QueryInterface(p,a,b)	(p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DBaseTexture9_AddRef(p)	(p)->lpVtbl->AddRef(p)
+#define IDirect3DBaseTexture9_Release(p)	(p)->lpVtbl->Release(p)
+#define IDirect3DBaseTexture9_GetDevice(p,a)	(p)->lpVtbl->GetDevice(p,a)
+#define IDirect3DBaseTexture9_SetPrivateData(p,a,b,c,d)	(p)->lpVtbl->SetPrivateData(p,a,b,c,d)
+#define IDirect3DBaseTexture9_GetPrivateData(p,a,b,c)	(p)->lpVtbl->GetPrivateData(p,a,b,c)
+#define IDirect3DBaseTexture9_FreePrivateData(p,a)	(p)->lpVtbl->FreePrivateData(p,a)
+#define IDirect3DBaseTexture9_SetPriority(p,a)	(p)->lpVtbl->SetPriority(p,a)
+#define IDirect3DBaseTexture9_GetPriority(p)	(p)->lpVtbl->GetPriority(p)
+#define IDirect3DBaseTexture9_PreLoad(p)	(p)->lpVtbl->PreLoad(p)
+#define IDirect3DBaseTexture9_GetType(p)	(p)->lpVtbl->GetType(p)
+#define IDirect3DBaseTexture9_SetLOD(p,a)	(p)->lpVtbl->SetLOD(p,a)
+#define IDirect3DBaseTexture9_GetLOD(p)	(p)->lpVtbl->GetLOD(p)
+#define IDirect3DBaseTexture9_GetLevelCount(p)	(p)->lpVtbl->GetLevelCount(p)
+#define IDirect3DBaseTexture9_SetAutoGenFilterType(p,a)	(p)->lpVtbl->SetAutoGenFilterType(p,a)
+#define IDirect3DBaseTexture9_GetAutoGenFilterType(p)	(p)->lpVtbl->GetAutoGenFilterType(p)
+#define IDirect3DBaseTexture9_GenerateMipSubLevels(p)	(p)->lpVtbl->GenerateMipSubLevels(p)
+#else
+#define IDirect3DBaseTexture9_QueryInterface(p,a,b)	(p)->QueryInterface(a,b)
+#define IDirect3DBaseTexture9_AddRef(p)	(p)->AddRef()
+#define IDirect3DBaseTexture9_Release(p)	(p)->Release()
+#define IDirect3DBaseTexture9_GetDevice(p,a)	(p)->GetDevice(a)
+#define IDirect3DBaseTexture9_SetPrivateData(p,a,b,c,d)	(p)->SetPrivateData(a,b,c,d)
+#define IDirect3DBaseTexture9_GetPrivateData(p,a,b,c)	(p)->GetPrivateData(a,b,c)
+#define IDirect3DBaseTexture9_FreePrivateData(p,a)	(p)->FreePrivateData(a)
+#define IDirect3DBaseTexture9_SetPriority(p,a)	(p)->SetPriority(a)
+#define IDirect3DBaseTexture9_GetPriority(p)	(p)->GetPriority()
+#define IDirect3DBaseTexture9_PreLoad(p)	(p)->PreLoad()
+#define IDirect3DBaseTexture9_GetType(p)	(p)->GetType()
+#define IDirect3DBaseTexture9_SetLOD(p,a)	(p)->SetLOD(a)
+#define IDirect3DBaseTexture9_GetLOD(p)	(p)->GetLOD()
+#define IDirect3DBaseTexture9_GetLevelCount(p)	(p)->GetLevelCount()
+#define IDirect3DBaseTexture9_SetAutoGenFilterType(p,a)	(p)->SetAutoGenFilterType(a)
+#define IDirect3DBaseTexture9_GetAutoGenFilterType(p)	(p)->GetAutoGenFilterType()
+#define IDirect3DBaseTexture9_GenerateMipSubLevels(p)	(p)->GenerateMipSubLevels()
+#endif
+
+#undef INTERFACE
+#define INTERFACE IDirect3DCubeTexture9
+DECLARE_INTERFACE_(IDirect3DCubeTexture9,IDirect3DBaseTexture9)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetDevice)(THIS_ IDirect3DDevice9**) PURE;
+	STDMETHOD(SetPrivateData)(THIS_ REFGUID,CONST void*,DWORD,DWORD) PURE;
+	STDMETHOD(GetPrivateData)(THIS_ REFGUID,void*,DWORD*) PURE;
+	STDMETHOD(FreePrivateData)(THIS_ REFGUID) PURE;
+	STDMETHOD_(DWORD,SetPriority)(THIS_ DWORD) PURE;
+	STDMETHOD_(DWORD,GetPriority)(THIS) PURE;
+	STDMETHOD_(void,PreLoad)(THIS) PURE;
+	STDMETHOD_(D3DRESOURCETYPE,GetType)(THIS) PURE;
+	STDMETHOD_(DWORD,SetLOD)(THIS_ DWORD) PURE;
+	STDMETHOD_(DWORD,GetLOD)(THIS) PURE;
+	STDMETHOD_(DWORD,GetLevelCount)(THIS) PURE;
+	STDMETHOD(SetAutoGenFilterType)(THIS_ D3DTEXTUREFILTERTYPE) PURE;
+	STDMETHOD_(D3DTEXTUREFILTERTYPE,GetAutoGenFilterType)(THIS) PURE;
+	STDMETHOD_(void,GenerateMipSubLevels)(THIS) PURE;
+	STDMETHOD(GetLevelDesc)(THIS_ UINT,D3DSURFACE_DESC*) PURE; \
+	STDMETHOD(GetCubeMapSurface)(THIS_ D3DCUBEMAP_FACES,UINT,IDirect3DSurface9**) PURE; \
+	STDMETHOD(LockRect)(THIS_ D3DCUBEMAP_FACES,UINT,D3DLOCKED_RECT*,CONST RECT*,DWORD) PURE; \
+	STDMETHOD(UnlockRect)(THIS_ D3DCUBEMAP_FACES,UINT) PURE; \
+	STDMETHOD(AddDirtyRect)(THIS_ D3DCUBEMAP_FACES,CONST RECT*) PURE;
+};
+typedef struct IDirect3DCubeTexture9 *LPDIRECT3DCUBETEXTURE9, *PDIRECT3DCUBETEXTURE9;
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirect3DCubeTexture9_QueryInterface(p,a,b)	(p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DCubeTexture9_AddRef(p)	(p)->lpVtbl->AddRef(p)
+#define IDirect3DCubeTexture9_Release(p)	(p)->lpVtbl->Release(p)
+#define IDirect3DCubeTexture9_GetDevice(p,a)	(p)->lpVtbl->GetDevice(p,a)
+#define IDirect3DCubeTexture9_SetPrivateData(p,a,b,c,d)	(p)->lpVtbl->SetPrivateData(p,a,b,c,d)
+#define IDirect3DCubeTexture9_GetPrivateData(p,a,b,c)	(p)->lpVtbl->GetPrivateData(p,a,b,c)
+#define IDirect3DCubeTexture9_FreePrivateData(p,a)	(p)->lpVtbl->FreePrivateData(p,a)
+#define IDirect3DCubeTexture9_SetPriority(p,a)	(p)->lpVtbl->SetPriority(p,a)
+#define IDirect3DCubeTexture9_GetPriority(p)	(p)->lpVtbl->GetPriority(p)
+#define IDirect3DCubeTexture9_PreLoad(p)	(p)->lpVtbl->PreLoad(p)
+#define IDirect3DCubeTexture9_GetType(p)	(p)->lpVtbl->GetType(p)
+#define IDirect3DCubeTexture9_SetLOD(p,a)	(p)->lpVtbl->SetLOD(p,a)
+#define IDirect3DCubeTexture9_GetLOD(p)	(p)->lpVtbl->GetLOD(p)
+#define IDirect3DCubeTexture9_GetLevelCount(p)	(p)->lpVtbl->GetLevelCount(p)
+#define IDirect3DCubeTexture9_SetAutoGenFilterType(p,a)	(p)->lpVtbl->SetAutoGenFilterType(p,a)
+#define IDirect3DCubeTexture9_GetAutoGenFilterType(p)	(p)->lpVtbl->GetAutoGenFilterType(p)
+#define IDirect3DCubeTexture9_GenerateMipSubLevels(p)	(p)->lpVtbl->GenerateMipSubLevels(p)
+#define IDirect3DCubeTexture9_GetLevelDesc(p,a,b)	(p)->lpVtbl->GetLevelDesc(p,a,b)
+#define IDirect3DCubeTexture9_GetCubeMapSurface(p,a,b,c)	(p)->lpVtbl->GetCubeMapSurface(p,a,b,c)
+#define IDirect3DCubeTexture9_LockRect(p,a,b,c,d,e)	(p)->lpVtbl->LockRect(p,a,b,c,d,e)
+#define IDirect3DCubeTexture9_UnlockRect(p,a,b)	(p)->lpVtbl->UnlockRect(p,a,b)
+#define IDirect3DCubeTexture9_AddDirtyRect(p,a,b)	(p)->lpVtbl->AddDirtyRect(p,a,b)
+#else
+#define IDirect3DCubeTexture9_QueryInterface(p,a,b)	(p)->QueryInterface(a,b)
+#define IDirect3DCubeTexture9_AddRef(p)	(p)->AddRef()
+#define IDirect3DCubeTexture9_Release(p)	(p)->Release()
+#define IDirect3DCubeTexture9_GetDevice(p,a)	(p)->GetDevice(a)
+#define IDirect3DCubeTexture9_SetPrivateData(p,a,b,c,d)	(p)->SetPrivateData(a,b,c,d)
+#define IDirect3DCubeTexture9_GetPrivateData(p,a,b,c)	(p)->GetPrivateData(a,b,c)
+#define IDirect3DCubeTexture9_FreePrivateData(p,a)	(p)->FreePrivateData(a)
+#define IDirect3DCubeTexture9_SetPriority(p,a)	(p)->SetPriority(a)
+#define IDirect3DCubeTexture9_GetPriority(p)	(p)->GetPriority()
+#define IDirect3DCubeTexture9_PreLoad(p)	(p)->PreLoad()
+#define IDirect3DCubeTexture9_GetType(p)	(p)->GetType()
+#define IDirect3DCubeTexture9_SetLOD(p,a)	(p)->SetLOD(a)
+#define IDirect3DCubeTexture9_GetLOD(p)	(p)->GetLOD()
+#define IDirect3DCubeTexture9_GetLevelCount(p)	(p)->GetLevelCount()
+#define IDirect3DCubeTexture9_SetAutoGenFilterType(p,a)	(p)->SetAutoGenFilterType(a)
+#define IDirect3DCubeTexture9_GetAutoGenFilterType(p)	(p)->GetAutoGenFilterType()
+#define IDirect3DCubeTexture9_GenerateMipSubLevels(p)	(p)->GenerateMipSubLevels()
+#define IDirect3DCubeTexture9_GetLevelDesc(p,a,b)	(p)->GetLevelDesc(a,b)
+#define IDirect3DCubeTexture9_GetCubeMapSurface(p,a,b,c)	(p)->GetCubeMapSurface(a,b,c)
+#define IDirect3DCubeTexture9_LockRect(p,a,b,c,d,e)	(p)->LockRect(a,b,c,d,e)
+#define IDirect3DCubeTexture9_UnlockRect(p,a,b)	(p)->UnlockRect(a,b)
+#define IDirect3DCubeTexture9_AddDirtyRect(p,a,b)	(p)->AddDirtyRect(a,b)
+#endif
+
+#undef INTERFACE
+#define INTERFACE IDirect3DTexture9
+DECLARE_INTERFACE_(IDirect3DTexture9,IDirect3DBaseTexture9)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetDevice)(THIS_ IDirect3DDevice9**) PURE;
+	STDMETHOD(SetPrivateData)(THIS_ REFGUID,CONST void*,DWORD,DWORD) PURE;
+	STDMETHOD(GetPrivateData)(THIS_ REFGUID,void*,DWORD*) PURE;
+	STDMETHOD(FreePrivateData)(THIS_ REFGUID) PURE;
+	STDMETHOD_(DWORD,SetPriority)(THIS_ DWORD) PURE;
+	STDMETHOD_(DWORD,GetPriority)(THIS) PURE;
+	STDMETHOD_(void,PreLoad)(THIS) PURE;
+	STDMETHOD_(D3DRESOURCETYPE,GetType)(THIS) PURE;
+	STDMETHOD_(DWORD,SetLOD)(THIS_ DWORD) PURE;
+	STDMETHOD_(DWORD,GetLOD)(THIS) PURE;
+	STDMETHOD_(DWORD,GetLevelCount)(THIS) PURE;
+	STDMETHOD(SetAutoGenFilterType)(THIS_ D3DTEXTUREFILTERTYPE) PURE;
+	STDMETHOD_(D3DTEXTUREFILTERTYPE,GetAutoGenFilterType)(THIS) PURE;
+	STDMETHOD_(void,GenerateMipSubLevels)(THIS) PURE;
+	STDMETHOD(GetLevelDesc)(THIS_ UINT,D3DSURFACE_DESC*) PURE;
+	STDMETHOD(GetSurfaceLevel)(THIS_ UINT,IDirect3DSurface9**) PURE;
+	STDMETHOD(LockRect)(THIS_ UINT,D3DLOCKED_RECT*,CONST RECT*,DWORD) PURE;
+	STDMETHOD(UnlockRect)(THIS_ UINT) PURE;
+	STDMETHOD(AddDirtyRect)(THIS_ CONST RECT*) PURE;
+};
+typedef struct IDirect3DTexture9 *LPDIRECT3DTEXTURE9, *PDIRECT3DTEXTURE9;
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirect3DTexture9_QueryInterface(p,a,b)	(p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DTexture9_AddRef(p)	(p)->lpVtbl->AddRef(p)
+#define IDirect3DTexture9_Release(p)	(p)->lpVtbl->Release(p)
+#define IDirect3DTexture9_GetDevice(p,a)	(p)->lpVtbl->GetDevice(p,a)
+#define IDirect3DTexture9_SetPrivateData(p,a,b,c,d)	(p)->lpVtbl->SetPrivateData(p,a,b,c,d)
+#define IDirect3DTexture9_GetPrivateData(p,a,b,c)	(p)->lpVtbl->GetPrivateData(p,a,b,c)
+#define IDirect3DTexture9_FreePrivateData(p,a)	(p)->lpVtbl->FreePrivateData(p,a)
+#define IDirect3DTexture9_SetPriority(p,a)	(p)->lpVtbl->SetPriority(p,a)
+#define IDirect3DTexture9_GetPriority(p)	(p)->lpVtbl->GetPriority(p)
+#define IDirect3DTexture9_PreLoad(p)	(p)->lpVtbl->PreLoad(p)
+#define IDirect3DTexture9_GetType(p)	(p)->lpVtbl->GetType(p)
+#define IDirect3DTexture9_SetLOD(p,a)	(p)->lpVtbl->SetLOD(p,a)
+#define IDirect3DTexture9_GetLOD(p)	(p)->lpVtbl->GetLOD(p)
+#define IDirect3DTexture9_GetLevelCount(p)	(p)->lpVtbl->GetLevelCount(p)
+#define IDirect3DTexture9_SetAutoGenFilterType(p,a)	(p)->lpVtbl->SetAutoGenFilterType(p,a)
+#define IDirect3DTexture9_GetAutoGenFilterType(p)	(p)->lpVtbl->GetAutoGenFilterType(p)
+#define IDirect3DTexture9_GenerateMipSubLevels(p)	(p)->lpVtbl->GenerateMipSubLevels(p)
+#define IDirect3DTexture9_GetLevelDesc(p,a,b)	(p)->lpVtbl->GetLevelDesc(p,a,b)
+#define IDirect3DTexture9_GetSurfaceLevel(p,a,b)	(p)->lpVtbl->GetSurfaceLevel(p,a,b)
+#define IDirect3DTexture9_LockRect(p,a,b,c,d)	(p)->lpVtbl->LockRect(p,a,b,c,d)
+#define IDirect3DTexture9_UnlockRect(p,a)	(p)->lpVtbl->UnlockRect(p,a)
+#define IDirect3DTexture9_AddDirtyRect(p,a)	(p)->lpVtbl->AddDirtyRect(p,a)
+#else
+#define IDirect3DTexture9_QueryInterface(p,a,b)	(p)->QueryInterface(a,b)
+#define IDirect3DTexture9_AddRef(p)	(p)->AddRef()
+#define IDirect3DTexture9_Release(p)	(p)->Release()
+#define IDirect3DTexture9_GetDevice(p,a)	(p)->GetDevice(a)
+#define IDirect3DTexture9_SetPrivateData(p,a,b,c,d)	(p)->SetPrivateData(a,b,c,d)
+#define IDirect3DTexture9_GetPrivateData(p,a,b,c)	(p)->GetPrivateData(a,b,c)
+#define IDirect3DTexture9_FreePrivateData(p,a)	(p)->FreePrivateData(a)
+#define IDirect3DTexture9_SetPriority(p,a)	(p)->SetPriority(a)
+#define IDirect3DTexture9_GetPriority(p)	(p)->GetPriority()
+#define IDirect3DTexture9_PreLoad(p)	(p)->PreLoad()
+#define IDirect3DTexture9_GetType(p)	(p)->GetType()
+#define IDirect3DTexture9_SetLOD(p,a)	(p)->SetLOD(a)
+#define IDirect3DTexture9_GetLOD(p)	(p)->GetLOD()
+#define IDirect3DTexture9_GetLevelCount(p)	(p)->GetLevelCount()
+#define IDirect3DTexture9_SetAutoGenFilterType(p,a)	(p)->SetAutoGenFilterType(a)
+#define IDirect3DTexture9_GetAutoGenFilterType(p)	(p)->GetAutoGenFilterType()
+#define IDirect3DTexture9_GenerateMipSubLevels(p)	(p)->GenerateMipSubLevels()
+#define IDirect3DTexture9_GetLevelDesc(p,a,b)	(p)->GetLevelDesc(a,b)
+#define IDirect3DTexture9_GetSurfaceLevel(p,a,b)	(p)->GetSurfaceLevel(a,b)
+#define IDirect3DTexture9_LockRect(p,a,b,c,d)	(p)->LockRect(a,b,c,d)
+#define IDirect3DTexture9_UnlockRect(p,a)	(p)->UnlockRect(a)
+#define IDirect3DTexture9_AddDirtyRect(p,a)	(p)->AddDirtyRect(a)
+#endif
+
+#undef INTERFACE
+#define INTERFACE IDirect3DVolumeTexture9
+DECLARE_INTERFACE_(IDirect3DVolumeTexture9,IDirect3DBaseTexture9)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetDevice)(THIS_ IDirect3DDevice9**) PURE;
+	STDMETHOD(SetPrivateData)(THIS_ REFGUID,CONST void*,DWORD,DWORD) PURE;
+	STDMETHOD(GetPrivateData)(THIS_ REFGUID,void*,DWORD*) PURE;
+	STDMETHOD(FreePrivateData)(THIS_ REFGUID) PURE;
+	STDMETHOD_(DWORD,SetPriority)(THIS_ DWORD) PURE;
+	STDMETHOD_(DWORD,GetPriority)(THIS) PURE;
+	STDMETHOD_(void,PreLoad)(THIS) PURE;
+	STDMETHOD_(D3DRESOURCETYPE,GetType)(THIS) PURE;
+	STDMETHOD_(DWORD,SetLOD)(THIS_ DWORD) PURE;
+	STDMETHOD_(DWORD,GetLOD)(THIS) PURE;
+	STDMETHOD_(DWORD,GetLevelCount)(THIS) PURE;
+	STDMETHOD(SetAutoGenFilterType)(THIS_ D3DTEXTUREFILTERTYPE) PURE;
+	STDMETHOD_(D3DTEXTUREFILTERTYPE,GetAutoGenFilterType)(THIS) PURE;
+	STDMETHOD_(void,GenerateMipSubLevels)(THIS) PURE;
+    STDMETHOD(GetLevelDesc)(THIS_ UINT,D3DVOLUME_DESC*) PURE;
+    STDMETHOD(GetVolumeLevel)(THIS_ UINT,IDirect3DVolume9**) PURE;
+    STDMETHOD(LockBox)(THIS_ UINT,D3DLOCKED_BOX*,CONST D3DBOX*,DWORD) PURE;
+    STDMETHOD(UnlockBox)(THIS_ UINT) PURE;
+    STDMETHOD(AddDirtyBox)(THIS_ CONST D3DBOX*) PURE;
+};
+typedef struct IDirect3DVolumeTexture9 *LPDIRECT3DVOLUMETEXTURE9, *PDIRECT3DVOLUMETEXTURE9;
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirect3DVolumeTexture9_QueryInterface(p,a,b)	(p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DVolumeTexture9_AddRef(p)	(p)->lpVtbl->AddRef(p)
+#define IDirect3DVolumeTexture9_Release(p)	(p)->lpVtbl->Release(p)
+#define IDirect3DVolumeTexture9_GetDevice(p,a)	(p)->lpVtbl->GetDevice(p,a)
+#define IDirect3DVolumeTexture9_SetPrivateData(p,a,b,c,d)	(p)->lpVtbl->SetPrivateData(p,a,b,c,d)
+#define IDirect3DVolumeTexture9_GetPrivateData(p,a,b,c)	(p)->lpVtbl->GetPrivateData(p,a,b,c)
+#define IDirect3DVolumeTexture9_FreePrivateData(p,a)	(p)->lpVtbl->FreePrivateData(p,a)
+#define IDirect3DVolumeTexture9_SetPriority(p,a)	(p)->lpVtbl->SetPriority(p,a)
+#define IDirect3DVolumeTexture9_GetPriority(p)	(p)->lpVtbl->GetPriority(p)
+#define IDirect3DVolumeTexture9_PreLoad(p)	(p)->lpVtbl->PreLoad(p)
+#define IDirect3DVolumeTexture9_GetType(p)	(p)->lpVtbl->GetType(p)
+#define IDirect3DVolumeTexture9_SetLOD(p,a)	(p)->lpVtbl->SetLOD(p,a)
+#define IDirect3DVolumeTexture9_GetLOD(p)	(p)->lpVtbl->GetLOD(p)
+#define IDirect3DVolumeTexture9_GetLevelCount(p)	(p)->lpVtbl->GetLevelCount(p)
+#define IDirect3DVolumeTexture9_SetAutoGenFilterType(p,a)	(p)->lpVtbl->SetAutoGenFilterType(p,a)
+#define IDirect3DVolumeTexture9_GetAutoGenFilterType(p)	(p)->lpVtbl->GetAutoGenFilterType(p)
+#define IDirect3DVolumeTexture9_GenerateMipSubLevels(p)	(p)->lpVtbl->GenerateMipSubLevels(p)
+#define IDirect3DVolumeTexture9_GetLevelDesc(p,a,b)	(p)->lpVtbl->GetLevelDesc(p,a,b)
+#define IDirect3DVolumeTexture9_GetVolumeLevel(p,a,b)	(p)->lpVtbl->GetVolumeLevel(p,a,b)
+#define IDirect3DVolumeTexture9_LockBox(p,a,b,c,d)	(p)->lpVtbl->LockBox(p,a,b,c,d)
+#define IDirect3DVolumeTexture9_UnlockBox(p,a)	(p)->lpVtbl->UnlockBox(p,a)
+#define IDirect3DVolumeTexture9_AddDirtyBox(p,a)	(p)->lpVtbl->AddDirtyBox(p,a)
+#else
+#define IDirect3DVolumeTexture9_QueryInterface(p,a,b)	(p)->QueryInterface(a,b)
+#define IDirect3DVolumeTexture9_AddRef(p)	(p)->AddRef()
+#define IDirect3DVolumeTexture9_Release(p)	(p)->Release()
+#define IDirect3DVolumeTexture9_GetDevice(p,a)	(p)->GetDevice(a)
+#define IDirect3DVolumeTexture9_SetPrivateData(p,a,b,c,d)	(p)->SetPrivateData(a,b,c,d)
+#define IDirect3DVolumeTexture9_GetPrivateData(p,a,b,c)	(p)->GetPrivateData(a,b,c)
+#define IDirect3DVolumeTexture9_FreePrivateData(p,a)	(p)->FreePrivateData(a)
+#define IDirect3DVolumeTexture9_SetPriority(p,a)	(p)->SetPriority(a)
+#define IDirect3DVolumeTexture9_GetPriority(p)	(p)->GetPriority()
+#define IDirect3DVolumeTexture9_PreLoad(p)	(p)->PreLoad()
+#define IDirect3DVolumeTexture9_GetType(p)	(p)->GetType()
+#define IDirect3DVolumeTexture9_SetLOD(p,a)	(p)->SetLOD(a)
+#define IDirect3DVolumeTexture9_GetLOD(p)	(p)->GetLOD()
+#define IDirect3DVolumeTexture9_GetLevelCount(p)	(p)->GetLevelCount()
+#define IDirect3DVolumeTexture9_SetAutoGenFilterType(p,a)	(p)->SetAutoGenFilterType(a)
+#define IDirect3DVolumeTexture9_GetAutoGenFilterType(p)	(p)->GetAutoGenFilterType()
+#define IDirect3DVolumeTexture9_GenerateMipSubLevels(p)	(p)->GenerateMipSubLevels()
+#define IDirect3DVolumeTexture9_GetLevelDesc(p,a,b)	(p)->GetLevelDesc(a,b)
+#define IDirect3DVolumeTexture9_GetVolumeLevel(p,a,b)	(p)->GetVolumeLevel(a,b)
+#define IDirect3DVolumeTexture9_LockBox(p,a,b,c,d)	(p)->LockBox(a,b,c,d)
+#define IDirect3DVolumeTexture9_UnlockBox(p,a)	(p)->UnlockBox(a)
+#define IDirect3DVolumeTexture9_AddDirtyBox(p,a)	(p)->AddDirtyBox(a)
+#endif
+
+#undef INTERFACE
+#define INTERFACE IDirect3DVertexDeclaration9
+DECLARE_INTERFACE_(IDirect3DVertexDeclaration9,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetDevice)(THIS_ IDirect3DDevice9**) PURE;
+	STDMETHOD(GetDeclaration)(THIS_ D3DVERTEXELEMENT9*,UINT*) PURE;
+};
+typedef struct IDirect3DVertexDeclaration9 *LPDIRECT3DVERTEXDECLARATION9, *PDIRECT3DVERTEXDECLARATION9;
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirect3DVertexDeclaration9_QueryInterface(p,a,b)	(p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DVertexDeclaration9_AddRef(p)	(p)->lpVtbl->AddRef(p)
+#define IDirect3DVertexDeclaration9_Release(p)	(p)->lpVtbl->Release(p)
+#define IDirect3DVertexDeclaration9_GetDevice(p,a)	(p)->lpVtbl->GetDevice(p,a)
+#define IDirect3DVertexDeclaration9_GetDeclaration(p,a,b)	(p)->lpVtbl->GetDeclaration(p,a,b)
+#else
+#define IDirect3DVertexDeclaration9_QueryInterface(p,a,b)	(p)->QueryInterface(a,b)
+#define IDirect3DVertexDeclaration9_AddRef(p)	(p)->AddRef()
+#define IDirect3DVertexDeclaration9_Release(p)	(p)->Release()
+#define IDirect3DVertexDeclaration9_GetDevice(p,a)	(p)->GetDevice(a)
+#define IDirect3DVertexDeclaration9_GetDeclaration(p,a,b)	(p)->GetDeclaration(a,b)
+#endif
+
+#undef INTERFACE
+#define INTERFACE IDirect3DVertexShader9
+DECLARE_INTERFACE_(IDirect3DVertexShader9,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetDevice)(THIS_ IDirect3DDevice9**) PURE;
+	STDMETHOD(GetFunction)(THIS_ void*,UINT*) PURE;
+};
+typedef struct IDirect3DVertexShader9 *LPDIRECT3DVERTEXSHADER9, *PDIRECT3DVERTEXSHADER9;
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirect3DVertexShader9_QueryInterface(p,a,b)	(p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DVertexShader9_AddRef(p)	(p)->lpVtbl->AddRef(p)
+#define IDirect3DVertexShader9_Release(p)	(p)->lpVtbl->Release(p)
+#define IDirect3DVertexShader9_GetDevice(p,a)	(p)->lpVtbl->GetDevice(p,a)
+#define IDirect3DVertexShader9_GetFunction(p,a,b)	(p)->lpVtbl->GetFunction(p,a,b)
+#else
+#define IDirect3DVertexShader9_QueryInterface(p,a,b)	(p)->QueryInterface(a,b)
+#define IDirect3DVertexShader9_AddRef(p)	(p)->AddRef()
+#define IDirect3DVertexShader9_Release(p)	(p)->Release()
+#define IDirect3DVertexShader9_GetDevice(p,a)	(p)->GetDevice(a)
+#define IDirect3DVertexShader9_GetFunction(p,a,b)	(p)->GetFunction(a,b)
+#endif
+
+#undef INTERFACE
+#define INTERFACE IDirect3DPixelShader9
+DECLARE_INTERFACE_(IDirect3DPixelShader9,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetDevice)(THIS_ IDirect3DDevice9**) PURE;
+	STDMETHOD(GetFunction)(THIS_ void*,UINT*) PURE;
+};
+typedef struct IDirect3DPixelShader9 *LPDIRECT3DPIXELSHADER9, *PDIRECT3DPIXELSHADER9;
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirect3DPixelShader9_QueryInterface(p,a,b)	(p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DPixelShader9_AddRef(p)	(p)->lpVtbl->AddRef(p)
+#define IDirect3DPixelShader9_Release(p)	(p)->lpVtbl->Release(p)
+#define IDirect3DPixelShader9_GetDevice(p,a)	(p)->lpVtbl->GetDevice(p,a)
+#define IDirect3DPixelShader9_GetFunction(p,a,b)	(p)->lpVtbl->GetFunction(p,a,b)
+#else
+#define IDirect3DPixelShader9_QueryInterface(p,a,b)	(p)->QueryInterface(a,b)
+#define IDirect3DPixelShader9_AddRef(p)	(p)->AddRef()
+#define IDirect3DPixelShader9_Release(p)	(p)->Release()
+#define IDirect3DPixelShader9_GetDevice(p,a)	(p)->GetDevice(a)
+#define IDirect3DPixelShader9_GetFunction(p,a,b)	(p)->GetFunction(a,b)
+#endif
+
+#undef INTERFACE
+#define INTERFACE IDirect3DStateBlock9
+DECLARE_INTERFACE_(IDirect3DStateBlock9,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetDevice)(THIS_ IDirect3DDevice9**) PURE;
+	STDMETHOD(Capture)(THIS) PURE;
+	STDMETHOD(Apply)(THIS) PURE;
+};
+typedef struct IDirect3DStateBlock9 *LPDIRECT3DSTATEBLOCK9, *PDIRECT3DSTATEBLOCK9;
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirect3DStateBlock9_QueryInterface(p,a,b)	(p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DStateBlock9_AddRef(p)	(p)->lpVtbl->AddRef(p)
+#define IDirect3DStateBlock9_Release(p)	(p)->lpVtbl->Release(p)
+#define IDirect3DStateBlock9_GetDevice(p,a)	(p)->lpVtbl->GetDevice(p,a)
+#define IDirect3DStateBlock9_Capture(p)	(p)->lpVtbl->Capture(p)
+#define IDirect3DStateBlock9_Apply(p)	(p)->lpVtbl->Apply(p)
+#else
+#define IDirect3DStateBlock9_QueryInterface(p,a,b)	(p)->QueryInterface(a,b)
+#define IDirect3DStateBlock9_AddRef(p)	(p)->AddRef()
+#define IDirect3DStateBlock9_Release(p)	(p)->Release()
+#define IDirect3DStateBlock9_GetDevice(p,a)	(p)->GetDevice(a)
+#define IDirect3DStateBlock9_Capture(p)	(p)->Capture()
+#define IDirect3DStateBlock9_Apply(p)	(p)->Apply()
+#endif
+
+#undef INTERFACE
+#define INTERFACE IDirect3DQuery9
+DECLARE_INTERFACE_(IDirect3DQuery9,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetDevice)(THIS_ IDirect3DDevice9**) PURE;
+	STDMETHOD_(D3DQUERYTYPE, GetType)(THIS) PURE;
+	STDMETHOD_(DWORD, GetDataSize)(THIS) PURE;
+	STDMETHOD(Issue)(THIS_ DWORD) PURE;
+	STDMETHOD(GetData)(THIS_ void*,DWORD,DWORD) PURE;
+};
+typedef struct IDirect3DQuery9 *LPDIRECT3DQUERY9, *PDIRECT3DQUERY9;
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirect3DQuery9_QueryInterface(p,a,b)	(p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DQuery9_AddRef(p)	(p)->lpVtbl->AddRef(p)
+#define IDirect3DQuery9_Release(p)	(p)->lpVtbl->Release(p)
+#define IDirect3DQuery9_GetDevice(p,a)	(p)->lpVtbl->GetDevice(p,a)
+#define IDirect3DQuery9_GetType(p)	(p)->lpVtbl->GetType(p)
+#define IDirect3DQuery9_GetDataSize(p)	(p)->lpVtbl->GetDataSize(p)
+#define IDirect3DQuery9_Issue(p,a)	(p)->lpVtbl->Issue(p,a)
+#define IDirect3DQuery9_GetData(p,a,b,c)	(p)->lpVtbl->GetData(p,a,b,c)
+#else
+#define IDirect3DQuery9_QueryInterface(p,a,b)	(p)->QueryInterface(a,b)
+#define IDirect3DQuery9_AddRef(p)	(p)->AddRef()
+#define IDirect3DQuery9_Release(p)	(p)->Release()
+#define IDirect3DQuery9_GetDevice(p,a)	(p)->GetDevice(a)
+#define IDirect3DQuery9_GetType(p)	(p)->GetType()
+#define IDirect3DQuery9_GetDataSize(p)	(p)->GetDataSize()
+#define IDirect3DQuery9_Issue(p,a)	(p)->Issue(a)
+#define IDirect3DQuery9_GetData(p,a,b,c)	(p)->GetData(a,b,c)
+#endif
+
+#ifdef __cplusplus
+extern "C" IDirect3D9* WINAPI Direct3DCreate9(UINT SDKVersion);
+#else
+extern IDirect3D9* WINAPI Direct3DCreate9(UINT SDKVersion);
+#endif
+
+#endif
+#endif
Index: Daodan/MinGW/include/d3d9caps.h
===================================================================
--- Daodan/MinGW/include/d3d9caps.h	(revision 1046)
+++ Daodan/MinGW/include/d3d9caps.h	(revision 1046)
@@ -0,0 +1,338 @@
+/*
+
+	d3d9caps.h - Header file for the Direct3D9 API
+
+	Written by Filip Navara <xnavara@volny.cz>
+
+	This library is distributed in the hope that it will be useful,
+	but WITHOUT ANY WARRANTY; without even the implied warranty of
+	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+*/
+
+#ifndef _D3D9_CAPS_H
+#define _D3D9_CAPS_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifndef DIRECT3D_VERSION
+#define DIRECT3D_VERSION  0x0900
+#endif
+
+#if (DIRECT3D_VERSION >= 0x0900)
+
+#define D3DCURSORCAPS_COLOR	1
+#define D3DCURSORCAPS_LOWRES	2
+#define D3DDEVCAPS_EXECUTESYSTEMMEMORY	0x10
+#define D3DDEVCAPS_EXECUTEVIDEOMEMORY	0x20
+#define D3DDEVCAPS_TLVERTEXSYSTEMMEMORY	0x40
+#define D3DDEVCAPS_TLVERTEXVIDEOMEMORY	0x80
+#define D3DDEVCAPS_TEXTURESYSTEMMEMORY	0x100
+#define D3DDEVCAPS_TEXTUREVIDEOMEMORY	0x200
+#define D3DDEVCAPS_DRAWPRIMTLVERTEX	0x400
+#define D3DDEVCAPS_CANRENDERAFTERFLIP	0x800
+#define D3DDEVCAPS_TEXTURENONLOCALVIDMEM	0x1000
+#define D3DDEVCAPS_DRAWPRIMITIVES2	0x2000
+#define D3DDEVCAPS_SEPARATETEXTUREMEMORIES	0x4000
+#define D3DDEVCAPS_DRAWPRIMITIVES2EX	0x8000
+#define D3DDEVCAPS_HWTRANSFORMANDLIGHT	0x10000
+#define D3DDEVCAPS_CANBLTSYSTONONLOCAL	0x20000
+#define D3DDEVCAPS_HWRASTERIZATION	0x80000
+#define D3DDEVCAPS_PUREDEVICE	0x100000
+#define D3DDEVCAPS_QUINTICRTPATCHES	0x200000
+#define D3DDEVCAPS_RTPATCHES	0x400000
+#define D3DDEVCAPS_RTPATCHHANDLEZERO	0x800000
+#define D3DDEVCAPS_NPATCHES	0x1000000
+#define D3DDEVCAPS2_STREAMOFFSET	0x01
+#define D3DDEVCAPS2_DMAPNPATCH	0x02
+#define D3DDEVCAPS2_ADAPTIVETESSRTPATCH	0x04
+#define D3DDEVCAPS2_ADAPTIVETESSNPATCH	0x08
+#define D3DDEVCAPS2_CAN_STRETCHRECT_FROM_TEXTURES	0x10
+#define D3DDEVCAPS2_PRESAMPLEDDMAPNPATCH	0x20
+#define D3DDEVCAPS2_VERTEXELEMENTSCANSHARESTREAMOFFSET	0x40
+#define D3DFVFCAPS_TEXCOORDCOUNTMASK	0xFFFF
+#define D3DFVFCAPS_DONOTSTRIPELEMENTS	0x80000
+#define D3DFVFCAPS_PSIZE	0x100000
+#define D3DLINECAPS_TEXTURE	0x01
+#define D3DLINECAPS_ZTEST	0x02
+#define D3DLINECAPS_BLEND	0x04
+#define D3DLINECAPS_ALPHACMP	0x08
+#define D3DLINECAPS_FOG	0x10
+#define D3DLINECAPS_ANTIALIAS	0x20
+#define D3DPBLENDCAPS_ZERO	0x01
+#define D3DPBLENDCAPS_ONE	0x02
+#define D3DPBLENDCAPS_SRCCOLOR	0x04
+#define D3DPBLENDCAPS_INVSRCCOLOR	0x08
+#define D3DPBLENDCAPS_SRCALPHA	0x10
+#define D3DPBLENDCAPS_INVSRCALPHA	0x20
+#define D3DPBLENDCAPS_DESTALPHA	0x40
+#define D3DPBLENDCAPS_INVDESTALPHA	0x80
+#define D3DPBLENDCAPS_DESTCOLOR	0x100
+#define D3DPBLENDCAPS_INVDESTCOLOR	0x200
+#define D3DPBLENDCAPS_SRCALPHASAT	0x400
+#define D3DPBLENDCAPS_BOTHSRCALPHA	0x800
+#define D3DPBLENDCAPS_BOTHINVSRCALPHA	0x1000
+#define D3DPBLENDCAPS_BLENDFACTOR	0x2000
+#define D3DPCMPCAPS_NEVER	0x01
+#define D3DPCMPCAPS_LESS	0x02
+#define D3DPCMPCAPS_EQUAL	0x04
+#define D3DPCMPCAPS_LESSEQUAL	0x08
+#define D3DPCMPCAPS_GREATER	0x10
+#define D3DPCMPCAPS_NOTEQUAL	0x20
+#define D3DPCMPCAPS_GREATEREQUAL	0x40
+#define D3DPCMPCAPS_ALWAYS	0x80
+#define D3DPMISCCAPS_MASKZ	0x02
+#define D3DPMISCCAPS_CULLNONE	0x10
+#define D3DPMISCCAPS_CULLCW	0x20
+#define D3DPMISCCAPS_CULLCCW	0x40
+#define D3DPMISCCAPS_COLORWRITEENABLE	0x80
+#define D3DPMISCCAPS_CLIPPLANESCALEDPOINTS	0x100
+#define D3DPMISCCAPS_CLIPTLVERTS	0x200
+#define D3DPMISCCAPS_TSSARGTEMP	0x400
+#define D3DPMISCCAPS_BLENDOP	0x800
+#define D3DPMISCCAPS_NULLREFERENCE	0x1000
+#define D3DPMISCCAPS_INDEPENDENTWRITEMASKS	0x4000
+#define D3DPMISCCAPS_PERSTAGECONSTANT	0x8000
+#define D3DPMISCCAPS_FOGANDSPECULARALPHA	0x10000
+#define D3DPMISCCAPS_SEPARATEALPHABLEND	0x20000
+#define D3DPMISCCAPS_MRTINDEPENDENTBITDEPTHS	0x40000
+#define D3DPMISCCAPS_MRTPOSTPIXELSHADERBLENDING	0x80000
+#define D3DPMISCCAPS_FOGVERTEXCLAMPED	0x100000
+#define D3DPRASTERCAPS_DITHER	0x01
+#define D3DPRASTERCAPS_ZTEST	0x10
+#define D3DPRASTERCAPS_FOGVERTEX	0x80
+#define D3DPRASTERCAPS_FOGTABLE	0x100
+#define D3DPRASTERCAPS_MIPMAPLODBIAS	0x2000
+#define D3DPRASTERCAPS_ZBUFFERLESSHSR	0x8000
+#define D3DPRASTERCAPS_FOGRANGE	0x10000
+#define D3DPRASTERCAPS_ANISOTROPY	0x20000
+#define D3DPRASTERCAPS_WBUFFER	0x40000
+#define D3DPRASTERCAPS_WFOG	0x100000
+#define D3DPRASTERCAPS_ZFOG	0x200000
+#define D3DPRASTERCAPS_COLORPERSPECTIVE	0x400000
+#define D3DPRASTERCAPS_SCISSORTEST	0x1000000
+#define D3DPRASTERCAPS_SLOPESCALEDEPTHBIAS	0x2000000
+#define D3DPRASTERCAPS_DEPTHBIAS	0x4000000
+#define D3DPRASTERCAPS_MULTISAMPLE_TOGGLE	0x8000000
+#define D3DPRESENT_INTERVAL_DEFAULT	0x00
+#define D3DPRESENT_INTERVAL_ONE	0x01
+#define D3DPRESENT_INTERVAL_TWO	0x02
+#define D3DPRESENT_INTERVAL_THREE	0x04
+#define D3DPRESENT_INTERVAL_FOUR	0x08
+#define D3DPRESENT_INTERVAL_IMMEDIATE	0x80000000L
+#define D3DPSHADECAPS_COLORGOURAUDRGB	0x08
+#define D3DPSHADECAPS_SPECULARGOURAUDRGB	0x200
+#define D3DPSHADECAPS_ALPHAGOURAUDBLEND	0x4000
+#define D3DPSHADECAPS_FOGGOURAUD	0x80000
+#define D3DPTADDRESSCAPS_WRAP	0x01
+#define D3DPTADDRESSCAPS_MIRROR	0x02
+#define D3DPTADDRESSCAPS_CLAMP	0x04
+#define D3DPTADDRESSCAPS_BORDER	0x08
+#define D3DPTADDRESSCAPS_INDEPENDENTUV	0x10
+#define D3DPTADDRESSCAPS_MIRRORONCE	0x20
+#define D3DPTEXTURECAPS_PERSPECTIVE	0x01
+#define D3DPTEXTURECAPS_POW2	0x02
+#define D3DPTEXTURECAPS_ALPHA	0x04
+#define D3DPTEXTURECAPS_SQUAREONLY	0x20
+#define D3DPTEXTURECAPS_TEXREPEATNOTSCALEDBYSIZE	0x40
+#define D3DPTEXTURECAPS_ALPHAPALETTE	0x80
+#define D3DPTEXTURECAPS_NONPOW2CONDITIONAL	0x100
+#define D3DPTEXTURECAPS_PROJECTED	0x400
+#define D3DPTEXTURECAPS_CUBEMAP	0x800
+#define D3DPTEXTURECAPS_VOLUMEMAP	0x2000
+#define D3DPTEXTURECAPS_MIPMAP	0x4000
+#define D3DPTEXTURECAPS_MIPVOLUMEMAP	0x8000
+#define D3DPTEXTURECAPS_MIPCUBEMAP	0x10000
+#define D3DPTEXTURECAPS_CUBEMAP_POW2	0x20000
+#define D3DPTEXTURECAPS_VOLUMEMAP_POW2	0x40000
+#define D3DPTEXTURECAPS_NOPROJECTEDBUMPENV	0x200000
+#define D3DPTFILTERCAPS_MINFPOINT	0x100
+#define D3DPTFILTERCAPS_MINFLINEAR	0x200
+#define D3DPTFILTERCAPS_MINFANISOTROPIC	0x400
+#define D3DPTFILTERCAPS_MINFPYRAMIDALQUAD	0x800
+#define D3DPTFILTERCAPS_MINFGAUSSIANQUAD	0x1000
+#define D3DPTFILTERCAPS_MIPFPOINT	0x10000
+#define D3DPTFILTERCAPS_MIPFLINEAR	0x20000
+#define D3DPTFILTERCAPS_MAGFPOINT	0x1000000
+#define D3DPTFILTERCAPS_MAGFLINEAR	0x2000000
+#define D3DPTFILTERCAPS_MAGFANISOTROPIC	0x4000000
+#define D3DPTFILTERCAPS_MAGFPYRAMIDALQUAD	0x8000000
+#define D3DPTFILTERCAPS_MAGFGAUSSIANQUAD	0x10000000
+#define D3DSTENCILCAPS_KEEP	0x01
+#define D3DSTENCILCAPS_ZERO	0x02
+#define D3DSTENCILCAPS_REPLACE	0x04
+#define D3DSTENCILCAPS_INCRSAT	0x08
+#define D3DSTENCILCAPS_DECRSAT	0x10
+#define D3DSTENCILCAPS_INVERT	0x20
+#define D3DSTENCILCAPS_INCR	0x40
+#define D3DSTENCILCAPS_DECR	0x80
+#define D3DSTENCILCAPS_TWOSIDED	0x100
+#define D3DTEXOPCAPS_DISABLE	0x01
+#define D3DTEXOPCAPS_SELECTARG1	0x02
+#define D3DTEXOPCAPS_SELECTARG2	0x04
+#define D3DTEXOPCAPS_MODULATE	0x08
+#define D3DTEXOPCAPS_MODULATE2X	0x10
+#define D3DTEXOPCAPS_MODULATE4X	0x20
+#define D3DTEXOPCAPS_ADD	0x40
+#define D3DTEXOPCAPS_ADDSIGNED	0x80
+#define D3DTEXOPCAPS_ADDSIGNED2X	0x100
+#define D3DTEXOPCAPS_SUBTRACT	0x200
+#define D3DTEXOPCAPS_ADDSMOOTH	0x400
+#define D3DTEXOPCAPS_BLENDDIFFUSEALPHA	0x800
+#define D3DTEXOPCAPS_BLENDTEXTUREALPHA	0x1000
+#define D3DTEXOPCAPS_BLENDFACTORALPHA	0x2000
+#define D3DTEXOPCAPS_BLENDTEXTUREALPHAPM	0x4000
+#define D3DTEXOPCAPS_BLENDCURRENTALPHA	0x8000
+#define D3DTEXOPCAPS_PREMODULATE	0x10000
+#define D3DTEXOPCAPS_MODULATEALPHA_ADDCOLOR	0x20000
+#define D3DTEXOPCAPS_MODULATECOLOR_ADDALPHA	0x40000
+#define D3DTEXOPCAPS_MODULATEINVALPHA_ADDCOLOR	0x80000
+#define D3DTEXOPCAPS_MODULATEINVCOLOR_ADDALPHA	0x100000
+#define D3DTEXOPCAPS_BUMPENVMAP	0x200000
+#define D3DTEXOPCAPS_BUMPENVMAPLUMINANCE	0x400000
+#define D3DTEXOPCAPS_DOTPRODUCT3	0x800000
+#define D3DTEXOPCAPS_MULTIPLYADD	0x1000000
+#define D3DTEXOPCAPS_LERP	0x2000000
+#define D3DVTXPCAPS_TEXGEN	0x01
+#define D3DVTXPCAPS_MATERIALSOURCE7	0x02
+#define D3DVTXPCAPS_DIRECTIONALLIGHTS	0x08
+#define D3DVTXPCAPS_POSITIONALLIGHTS	0x10
+#define D3DVTXPCAPS_LOCALVIEWER	0x20
+#define D3DVTXPCAPS_TWEENING	0x40
+#define D3DVTXPCAPS_TEXGEN_SPHEREMAP	0x100
+#define D3DVTXPCAPS_NO_TEXGEN_NONLOCALVIEWER	0x200
+#define D3DCAPS_READ_SCANLINE	0x20000
+#define D3DCAPS2_FULLSCREENGAMMA	0x20000L
+#define D3DCAPS2_CANCALIBRATEGAMMA	0x100000L
+#define D3DCAPS2_RESERVED	0x2000000L
+#define D3DCAPS2_CANMANAGERESOURCE	0x10000000L
+#define D3DCAPS2_DYNAMICTEXTURES	0x20000000L
+#define D3DCAPS2_CANAUTOGENMIPMAP	0x40000000L
+#define D3DCAPS3_ALPHA_FULLSCREEN_FLIP_OR_DISCARD	0x20
+#define D3DCAPS3_LINEAR_TO_SRGB_PRESENTATION	0x80
+#define D3DCAPS3_COPY_TO_VIDMEM	0x100
+#define D3DCAPS3_COPY_TO_SYSTEMMEM	0x200
+#define D3DCAPS3_RESERVED	0x8000001fL
+#define D3DDTCAPS_UBYTE4	0x01
+#define D3DDTCAPS_UBYTE4N	0x02
+#define D3DDTCAPS_SHORT2N	0x04
+#define D3DDTCAPS_SHORT4N	0x08
+#define D3DDTCAPS_USHORT2N	0x10
+#define D3DDTCAPS_USHORT4N	0x20
+#define D3DDTCAPS_UDEC3	0x40
+#define D3DDTCAPS_DEC3N	0x80
+#define D3DDTCAPS_FLOAT16_2	0x100
+#define D3DDTCAPS_FLOAT16_4	0x200
+#define D3DMIN30SHADERINSTRUCTIONS	512
+#define D3DMAX30SHADERINSTRUCTIONS	32768
+#define D3DPS20_MAX_DYNAMICFLOWCONTROLDEPTH	24
+#define D3DPS20_MIN_DYNAMICFLOWCONTROLDEPTH	0
+#define D3DPS20_MAX_NUMTEMPS	32
+#define D3DPS20_MIN_NUMTEMPS	12
+#define D3DPS20_MAX_STATICFLOWCONTROLDEPTH	4
+#define D3DPS20_MIN_STATICFLOWCONTROLDEPTH	0
+#define D3DPS20_MAX_NUMINSTRUCTIONSLOTS	512
+#define D3DPS20_MIN_NUMINSTRUCTIONSLOTS	96
+#define D3DPS20CAPS_ARBITRARYSWIZZLE	0x1
+#define D3DPS20CAPS_GRADIENTINSTRUCTIONS	0x2
+#define D3DPS20CAPS_PREDICATION	0x4
+#define D3DPS20CAPS_NODEPENDENTREADLIMIT	0x8
+#define D3DPS20CAPS_NOTEXINSTRUCTIONLIMIT	0x10
+#define D3DVS20_MAX_DYNAMICFLOWCONTROLDEPTH	24
+#define D3DVS20_MIN_DYNAMICFLOWCONTROLDEPTH	0
+#define D3DVS20_MAX_NUMTEMPS	32
+#define D3DVS20_MIN_NUMTEMPS	12
+#define D3DVS20_MAX_STATICFLOWCONTROLDEPTH	4
+#define D3DVS20_MIN_STATICFLOWCONTROLDEPTH	1
+#define D3DVS20CAPS_PREDICATION	1
+
+typedef struct _D3DVSHADERCAPS2_0 {
+	DWORD Caps;
+	INT DynamicFlowControlDepth;
+	INT NumTemps;
+	INT StaticFlowControlDepth;
+} D3DVSHADERCAPS2_0;
+
+typedef struct _D3DPSHADERCAPS2_0 {
+	DWORD Caps;
+	INT DynamicFlowControlDepth;
+	INT NumTemps;
+	INT StaticFlowControlDepth;
+	INT NumInstructionSlots;
+} D3DPSHADERCAPS2_0;
+
+typedef struct _D3DCAPS9 {
+	D3DDEVTYPE DeviceType;
+	UINT AdapterOrdinal;
+	DWORD Caps;
+	DWORD Caps2;
+	DWORD Caps3;
+	DWORD PresentationIntervals;
+	DWORD CursorCaps;
+	DWORD DevCaps;
+	DWORD PrimitiveMiscCaps;
+	DWORD RasterCaps;
+	DWORD ZCmpCaps;
+	DWORD SrcBlendCaps;
+	DWORD DestBlendCaps;
+	DWORD AlphaCmpCaps;
+	DWORD ShadeCaps;
+	DWORD TextureCaps;
+	DWORD TextureFilterCaps;
+	DWORD CubeTextureFilterCaps;
+	DWORD VolumeTextureFilterCaps;
+	DWORD TextureAddressCaps;
+	DWORD VolumeTextureAddressCaps;
+	DWORD LineCaps;
+	DWORD MaxTextureWidth;
+	DWORD MaxTextureHeight;
+	DWORD MaxVolumeExtent;
+	DWORD MaxTextureRepeat;
+	DWORD MaxTextureAspectRatio;
+	DWORD MaxAnisotropy;
+	float MaxVertexW;
+	float GuardBandLeft;
+	float GuardBandTop;
+	float GuardBandRight;
+	float GuardBandBottom;
+	float ExtentsAdjust;
+	DWORD StencilCaps;
+	DWORD FVFCaps;
+	DWORD TextureOpCaps;
+	DWORD MaxTextureBlendStages;
+	DWORD MaxSimultaneousTextures;
+	DWORD VertexProcessingCaps;
+	DWORD MaxActiveLights;
+	DWORD MaxUserClipPlanes;
+	DWORD MaxVertexBlendMatrices;
+	DWORD MaxVertexBlendMatrixIndex;
+	float MaxPointSize;
+	DWORD MaxPrimitiveCount;
+	DWORD MaxVertexIndex;
+	DWORD MaxStreams;
+	DWORD MaxStreamStride;
+	DWORD VertexShaderVersion;
+	DWORD MaxVertexShaderConst;
+	DWORD PixelShaderVersion;
+	float PixelShader1xMaxValue;
+	DWORD DevCaps2;
+	float MaxNpatchTessellationLevel;
+	DWORD Reserved5;
+	UINT MasterAdapterOrdinal;
+	UINT AdapterOrdinalInGroup;
+	UINT NumberOfAdaptersInGroup;
+	DWORD DeclTypes;
+	DWORD NumSimultaneousRTs;
+	DWORD StretchRectFilterCaps;
+	D3DVSHADERCAPS2_0 VS20Caps;
+	D3DPSHADERCAPS2_0 PS20Caps;
+	DWORD VertexTextureFilterCaps;
+	DWORD MaxVShaderInstructionsExecuted;
+	DWORD MaxPShaderInstructionsExecuted;
+	DWORD MaxVertexShader30InstructionSlots;
+	DWORD MaxPixelShader30InstructionSlots;
+} D3DCAPS9;
+
+#endif
+#endif
Index: Daodan/MinGW/include/d3d9types.h
===================================================================
--- Daodan/MinGW/include/d3d9types.h	(revision 1046)
+++ Daodan/MinGW/include/d3d9types.h	(revision 1046)
@@ -0,0 +1,1272 @@
+/*
+
+	d3d9types.h - Header file for the Direct3D9 API
+
+	Written by Filip Navara <xnavara@volny.cz>
+
+	This library is distributed in the hope that it will be useful,
+	but WITHOUT ANY WARRANTY; without even the implied warranty of
+	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+*/
+
+#ifndef _D3D9_TYPES_H
+#define _D3D9_TYPES_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifndef DIRECT3D_VERSION
+#define DIRECT3D_VERSION  0x0900
+#endif
+
+#if (DIRECT3D_VERSION >= 0x0900)
+
+#include <pshpack4.h>
+
+#define D3DCLEAR_TARGET	0x01
+#define D3DCLEAR_ZBUFFER	0x02
+#define D3DCLEAR_STENCIL	0x04
+#define D3DCLIPPLANE0	0x01
+#define D3DCLIPPLANE1	0x02
+#define D3DCLIPPLANE2	0x04
+#define D3DCLIPPLANE3	0x08
+#define D3DCLIPPLANE4	0x10
+#define D3DCLIPPLANE5	0x20
+#define D3DCOLOR_ARGB(a,r,g,b)	((D3DCOLOR)((((a)&0xff)<<24)|(((r)&0xff)<<16)|(((g)&0xff)<<8)|((b)&0xff)))
+#define D3DCOLOR_COLORVALUE(r,g,b,a)	D3DCOLOR_RGBA((DWORD)((r)*255.f),(DWORD)((g)*255.f),(DWORD)((b)*255.f),(DWORD)((a)*255.f))
+#define D3DCOLOR_RGBA(r,g,b,a)	D3DCOLOR_ARGB(a,r,g,b)
+#define D3DCOLOR_XRGB(r,g,b)	D3DCOLOR_ARGB(0xff,r,g,b)
+#define D3DCOLOR_XYUV(y,u,v)	D3DCOLOR_ARGB(0xff,y,u,v)
+#define D3DCOLOR_AYUV(a,y,u,v)	D3DCOLOR_ARGB(a,y,u,v)
+#define D3DCOLORWRITEENABLE_RED	0x01
+#define D3DCOLORWRITEENABLE_GREEN	0x02
+#define D3DCOLORWRITEENABLE_BLUE	0x04
+#define D3DCOLORWRITEENABLE_ALPHA	0x08
+#define D3DCS_LEFT	0x01
+#define D3DCS_RIGHT	0x02
+#define D3DCS_TOP	0x04
+#define D3DCS_BOTTOM	0x08
+#define D3DCS_FRONT	0x10
+#define D3DCS_BACK	0x20
+#define D3DCS_PLANE0	0x40
+#define D3DCS_PLANE1	0x80
+#define D3DCS_PLANE2	0x100
+#define D3DCS_PLANE3	0x200
+#define D3DCS_PLANE4	0x400
+#define D3DCS_PLANE5	0x800
+#define D3DCS_ALL	(D3DCS_LEFT|D3DCS_RIGHT|D3DCS_TOP|D3DCS_BOTTOM|D3DCS_FRONT|D3DCS_BACK|D3DCS_PLANE0|D3DCS_PLANE1|D3DCS_PLANE2|D3DCS_PLANE3|D3DCS_PLANE4|D3DCS_PLANE5)
+#define D3DDECL_END()	{0xff,0,D3DDECLTYPE_UNUSED,0,0,0}
+#define D3DDP_MAXTEXCOORD	8
+#define D3DPV_DONOTCOPYDATA	0x01
+#define D3DTA_SELECTMASK	0x0f
+#define D3DTA_DIFFUSE	0x00
+#define D3DTA_CURRENT	0x01
+#define D3DTA_TEXTURE	0x02
+#define D3DTA_TFACTOR	0x03
+#define D3DTA_SPECULAR	0x04
+#define D3DTA_TEMP	0x05
+#define D3DTA_CONSTANT	0x06
+#define D3DTA_COMPLEMENT	0x10
+#define D3DTA_ALPHAREPLICATE	0x20
+#define D3DFVF_RESERVED0	0x01
+#define D3DFVF_POSITION_MASK	0x4000E
+#define D3DFVF_XYZ	0x02
+#define D3DFVF_XYZRHW	0x04
+#define D3DFVF_XYZB1	0x06
+#define D3DFVF_XYZB2	0x08
+#define D3DFVF_XYZB3	0x0a
+#define D3DFVF_XYZB4	0x0c
+#define D3DFVF_XYZB5	0x0e
+#define D3DFVF_XYZW	0x4002
+#define D3DFVF_NORMAL	0x10
+#define D3DFVF_PSIZE	0x20
+#define D3DFVF_DIFFUSE	0x40
+#define D3DFVF_SPECULAR	0x80
+#define D3DFVF_TEXCOUNT_MASK	0xf00
+#define D3DFVF_TEXCOUNT_SHIFT	8
+#define D3DFVF_TEX0	0x0000
+#define D3DFVF_TEX1	0x0100
+#define D3DFVF_TEX2	0x0200
+#define D3DFVF_TEX3	0x0300
+#define D3DFVF_TEX4	0x0400
+#define D3DFVF_TEX5	0x0500
+#define D3DFVF_TEX6	0x0600
+#define D3DFVF_TEX7	0x0700
+#define D3DFVF_TEX8	0x0800
+#define D3DFVF_TEXCOORDSIZE1(i) (D3DFVF_TEXTUREFORMAT1 << (i * 2 + 16))
+#define D3DFVF_TEXCOORDSIZE2(i) (D3DFVF_TEXTUREFORMAT2)
+#define D3DFVF_TEXCOORDSIZE3(i) (D3DFVF_TEXTUREFORMAT3 << (i * 2 + 16))
+#define D3DFVF_TEXCOORDSIZE4(i) (D3DFVF_TEXTUREFORMAT4 << (i * 2 + 16))
+#define D3DFVF_TEXTUREFORMAT1	3
+#define D3DFVF_TEXTUREFORMAT2	0
+#define D3DFVF_TEXTUREFORMAT3	1
+#define D3DFVF_TEXTUREFORMAT4	2
+#define D3DFVF_LASTBETA_UBYTE4	0x1000
+#define D3DFVF_LASTBETA_D3DCOLOR	0x8000
+#define D3DFVF_RESERVED2	0x6000
+#define D3DDMAPSAMPLER	256
+#define D3DVERTEXTEXTURESAMPLER0	(D3DDMAPSAMPLER+1)
+#define D3DVERTEXTEXTURESAMPLER1	(D3DDMAPSAMPLER+2)
+#define D3DVERTEXTEXTURESAMPLER2	(D3DDMAPSAMPLER+3)
+#define D3DVERTEXTEXTURESAMPLER3	(D3DDMAPSAMPLER+4)
+#define D3DVS_ADDRESSMODE_SHIFT	13
+#define D3DVS_ADDRESSMODE_MASK	(1 << D3DVS_ADDRESSMODE_SHIFT)
+#define D3DVS_SWIZZLE_SHIFT     16
+#define D3DVS_SWIZZLE_MASK      0x00FF0000
+#define D3DVS_X_X	(0 << D3DVS_SWIZZLE_SHIFT)
+#define D3DVS_X_Y	(1 << D3DVS_SWIZZLE_SHIFT)
+#define D3DVS_X_Z	(2 << D3DVS_SWIZZLE_SHIFT)
+#define D3DVS_X_W	(3 << D3DVS_SWIZZLE_SHIFT)
+#define D3DVS_Y_X	(0 << (D3DVS_SWIZZLE_SHIFT + 2))
+#define D3DVS_Y_Y	(1 << (D3DVS_SWIZZLE_SHIFT + 2))
+#define D3DVS_Y_Z	(2 << (D3DVS_SWIZZLE_SHIFT + 2))
+#define D3DVS_Y_W	(3 << (D3DVS_SWIZZLE_SHIFT + 2))
+#define D3DVS_Z_X	(0 << (D3DVS_SWIZZLE_SHIFT + 4))
+#define D3DVS_Z_Y	(1 << (D3DVS_SWIZZLE_SHIFT + 4))
+#define D3DVS_Z_Z	(2 << (D3DVS_SWIZZLE_SHIFT + 4))
+#define D3DVS_Z_W	(3 << (D3DVS_SWIZZLE_SHIFT + 4))
+#define D3DVS_W_X	(0 << (D3DVS_SWIZZLE_SHIFT + 6))
+#define D3DVS_W_Y	(1 << (D3DVS_SWIZZLE_SHIFT + 6))
+#define D3DVS_W_Z	(2 << (D3DVS_SWIZZLE_SHIFT + 6))
+#define D3DVS_W_W	(3 << (D3DVS_SWIZZLE_SHIFT + 6))
+#define D3DVS_NOSWIZZLE	(D3DVS_X_X|D3DVS_Y_Y|D3DVS_Z_Z|D3DVS_W_W)
+#define D3DPRESENT_RATE_DEFAULT	0
+#define D3DRENDERSTATE_WRAPBIAS	128UL
+#define D3DSHADER_ADDRESSMODE_SHIFT	13
+#define D3DSHADER_ADDRESSMODE_MASK	(1 << D3DSHADER_ADDRESSMODE_SHIFT)
+#define D3DSHADER_COMPARISON_SHIFT	D3DSP_OPCODESPECIFICCONTROL_SHIFT
+#define D3DSHADER_COMPARISON_MASK	(0x07 << D3DSHADER_COMPARISON_SHIFT)
+#define D3DSHADER_INSTRUCTION_PREDICATED	0x10000000
+#define D3DSI_COISSUE	0x40000000
+#define D3DSI_COMMENTSIZE_SHIFT	16
+#define D3DSI_COMMENTSIZE_MASK	0x7fff0000
+#define D3DSI_OPCODE_MASK	0xffff
+#define D3DSI_INSTLENGTH_MASK	0xf000000
+#define D3DSI_INSTLENGTH_SHIFT	24
+#define D3DSI_TEXLD_PROJECT	(0x01 << D3DSP_OPCODESPECIFICCONTROL_SHIFT)
+#define D3DSI_TEXLD_BIAS	(0x02 << D3DSP_OPCODESPECIFICCONTROL_SHIFT)
+#define D3DSINCOSCONST1	-1.5500992e-006f, -2.1701389e-005f, 0.0026041667f, 0.00026041668f
+#define D3DSINCOSCONST2	-0.020833334f, -0.12500000f, 1.0f, 0.50000000f
+#define D3DSP_OPCODESPECIFICCONTROL_MASK	0xff0000
+#define D3DSP_OPCODESPECIFICCONTROL_SHIFT	16
+#define D3DSP_DCL_USAGE_SHIFT	0
+#define D3DSP_DCL_USAGE_MASK	0x0000000f
+#define D3DSP_DCL_USAGEINDEX_SHIFT	16
+#define D3DSP_DCL_USAGEINDEX_MASK	0x000f0000
+#define D3DSP_TEXTURETYPE_SHIFT	27
+#define D3DSP_TEXTURETYPE_MASK	0x78000000
+#define D3DSP_REGNUM_MASK	0x7ff
+#define D3DSP_WRITEMASK_0	0x10000
+#define D3DSP_WRITEMASK_1	0x20000
+#define D3DSP_WRITEMASK_2	0x40000
+#define D3DSP_WRITEMASK_3	0x80000
+#define D3DSP_WRITEMASK_ALL	0xf0000
+#define D3DSP_DSTMOD_SHIFT	20
+#define D3DSP_DSTMOD_MASK	0xf00000
+#define D3DSPDM_NONE	0
+#define D3DSPDM_SATURATE	(1 << D3DSP_DSTMOD_SHIFT)
+#define D3DSPDM_PARTIALPRECISION	(2 << D3DSP_DSTMOD_SHIFT)
+#define D3DSPDM_MSAMPCENTROID	(4 << D3DSP_DSTMOD_SHIFT)
+#define D3DSP_DSTSHIFT_SHIFT	24
+#define D3DSP_DSTSHIFT_MASK	0xf000000
+#define D3DSP_NOSWIZZLE	((0 << (D3DSP_SWIZZLE_SHIFT + 0)) | (1 << (D3DSP_SWIZZLE_SHIFT + 2)) | (2 << (D3DSP_SWIZZLE_SHIFT + 4)) | (3 << (D3DSP_SWIZZLE_SHIFT + 6)))
+#define D3DSP_REPLICATERED	0
+#define D3DSP_REPLICATEGREEN	((1 << (D3DSP_SWIZZLE_SHIFT + 0)) | (1 << (D3DSP_SWIZZLE_SHIFT + 2)) | (1 << (D3DSP_SWIZZLE_SHIFT + 4)) | (1 << (D3DSP_SWIZZLE_SHIFT + 6)))
+#define D3DSP_REPLICATEBLUE	((2 << (D3DSP_SWIZZLE_SHIFT + 0)) | (2 << (D3DSP_SWIZZLE_SHIFT + 2)) | (2 << (D3DSP_SWIZZLE_SHIFT + 4)) | (2 << (D3DSP_SWIZZLE_SHIFT + 6)))
+#define D3DSP_REPLICATEALPHA	((3 << (D3DSP_SWIZZLE_SHIFT + 0)) | (3 << (D3DSP_SWIZZLE_SHIFT + 2)) | (3 << (D3DSP_SWIZZLE_SHIFT + 4)) | (3 << (D3DSP_SWIZZLE_SHIFT + 6)))
+#define D3DSP_REGTYPE_SHIFT	28
+#define D3DSP_REGTYPE_SHIFT2	8
+#define D3DSP_REGTYPE_MASK	0x70000000
+#define D3DSP_REGTYPE_MASK2	0x1800
+#define D3DSP_SRCMOD_SHIFT	24
+#define D3DSP_SRCMOD_MASK	0xf000000
+#define D3DSP_SWIZZLE_SHIFT	16
+#define D3DSP_SWIZZLE_MASK	0xff0000
+#define D3DTS_WORLDMATRIX(index)	(D3DTRANSFORMSTATETYPE)(index + 256)
+#define D3DTS_WORLD	D3DTS_WORLDMATRIX(0)
+#define D3DTS_WORLD1	D3DTS_WORLDMATRIX(1)
+#define D3DTS_WORLD2	D3DTS_WORLDMATRIX(2)
+#define D3DTS_WORLD3	D3DTS_WORLDMATRIX(3)
+#define D3DTSS_TCI_PASSTHRU	0x00
+#define D3DTSS_TCI_CAMERASPACENORMAL	0x10000
+#define D3DTSS_TCI_CAMERASPACEPOSITION	0x20000
+#define D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR	0x30000
+#define D3DTSS_TCI_SPHEREMAP	0x40000
+#define D3DUSAGE_RENDERTARGET	0x01
+#define D3DUSAGE_DEPTHSTENCIL	0x02
+#define D3DUSAGE_WRITEONLY	0x08
+#define D3DUSAGE_SOFTWAREPROCESSING	0x10
+#define D3DUSAGE_DONOTCLIP	0x20
+#define D3DUSAGE_POINTS	0x40
+#define D3DUSAGE_RTPATCHES	0x80
+#define D3DUSAGE_NPATCHES	0x100
+#define D3DUSAGE_DYNAMIC	0x200
+#define D3DUSAGE_AUTOGENMIPMAP	0x400
+#define D3DUSAGE_DMAP	0x4000
+#define D3DUSAGE_QUERY_LEGACYBUMPMAP	0x8000
+#define D3DUSAGE_QUERY_SRGBREAD	0x10000
+#define D3DUSAGE_QUERY_FILTER	0x20000
+#define D3DUSAGE_QUERY_SRGBWRITE	0x40000
+#define D3DUSAGE_QUERY_POSTPIXELSHADER_BLENDING	0x80000
+#define D3DUSAGE_QUERY_VERTEXTEXTURE	0x100000
+#define D3DWRAP_U	0x01
+#define D3DWRAP_V	0x02
+#define D3DWRAP_W	0x04
+#define D3DWRAPCOORD_0	0x01
+#define D3DWRAPCOORD_1	0x02
+#define D3DWRAPCOORD_2	0x04
+#define D3DWRAPCOORD_3	0x08
+#define MAX_DEVICE_IDENTIFIER_STRING	512
+#define MAXD3DDECLLENGTH	64
+#define MAXD3DDECLMETHOD	D3DDECLMETHOD_LOOKUPPRESAMPLED
+#define MAXD3DDECLTYPE	D3DDECLTYPE_UNUSED
+#define MAXD3DDECLUSAGE	D3DDECLUSAGE_SAMPLE
+#define MAXD3DDECLUSAGEINDEX	15
+#define D3DMAXUSERCLIPPLANES	32
+#define D3D_MAX_SIMULTANEOUS_RENDERTARGETS	4
+#define D3DPS_VERSION(major,minor)	(0xffff0000 | ((major) << 8) | (minor))
+#define D3DVS_VERSION(major,minor)	(0xfffe0000 | ((major) << 8) | (minor))
+#define D3DSHADER_VERSION_MAJOR(version)	(((version) >> 8) & 0xff)
+#define D3DSHADER_VERSION_MINOR(version)	(((version) >> 0) & 0xff)
+#define D3DSHADER_COMMENT(s)	((((s) << D3DSI_COMMENTSIZE_SHIFT) & D3DSI_COMMENTSIZE_MASK) | D3DSIO_COMMENT)
+#define D3DPS_END()	0xffff
+#define D3DVS_END()	0xffff
+#define D3DPRESENTFLAG_LOCKABLE_BACKBUFFER	0x01
+#define D3DPRESENTFLAG_DISCARD_DEPTHSTENCIL	0x02
+#define D3DPRESENTFLAG_DEVICECLIP	0x04
+#define D3DPRESENTFLAG_VIDEO	0x10
+#define D3DLOCK_READONLY	0x10
+#define D3DLOCK_NOSYSLOCK	0x800
+#define D3DLOCK_NOOVERWRITE	0x1000
+#define D3DLOCK_DISCARD	0x2000
+#define D3DLOCK_DONOTWAIT	0x4000
+#define D3DLOCK_NO_DIRTY_UPDATE	0x8000
+#define D3DISSUE_END	0x01
+#define D3DISSUE_BEGIN	0x02
+#define D3DGETDATA_FLUSH	0x01
+#define D3DRTYPECOUNT	(D3DRTYPE_INDEXBUFFER+1)
+
+#define MAKEFOURCC(a,b,c,d)  \
+	((DWORD)(BYTE)(a) | ((DWORD)(BYTE)(b) << 8) |  \
+	((DWORD)(BYTE)(c) << 16) | ((DWORD)(BYTE)(d) << 24 ))
+
+typedef DWORD D3DCOLOR;
+
+typedef enum _D3DBACKBUFFER_TYPE {
+	D3DBACKBUFFER_TYPE_MONO = 0,
+	D3DBACKBUFFER_TYPE_LEFT = 1,
+	D3DBACKBUFFER_TYPE_RIGHT = 2,
+	D3DBACKBUFFER_TYPE_FORCE_DWORD = 0xffffffff
+} D3DBACKBUFFER_TYPE;
+
+typedef enum _D3DBASISTYPE {
+	D3DBASIS_BEZIER = 0,
+	D3DBASIS_BSPLINE = 1,
+	D3DBASIS_INTERPOLATE = 2,
+	D3DBASIS_FORCE_DWORD = 0xffffffff
+} D3DBASISTYPE;
+
+typedef enum _D3DBLEND {
+	D3DBLEND_ZERO = 1,
+	D3DBLEND_ONE = 2,
+	D3DBLEND_SRCCOLOR = 3,
+	D3DBLEND_INVSRCCOLOR = 4,
+	D3DBLEND_SRCALPHA = 5,
+	D3DBLEND_INVSRCALPHA = 6,
+	D3DBLEND_DESTALPHA = 7,
+	D3DBLEND_INVDESTALPHA = 8,
+	D3DBLEND_DESTCOLOR = 9,
+	D3DBLEND_INVDESTCOLOR = 10,
+	D3DBLEND_SRCALPHASAT = 11,
+	D3DBLEND_BOTHSRCALPHA = 12,
+	D3DBLEND_BOTHINVSRCALPHA = 13,
+	D3DBLEND_BLENDFACTOR = 14,
+	D3DBLEND_INVBLENDFACTOR = 15,
+	D3DBLEND_FORCE_DWORD = 0xffffffff
+} D3DBLEND;
+
+typedef enum _D3DBLENDOP {
+	D3DBLENDOP_ADD = 1,
+	D3DBLENDOP_SUBTRACT = 2,
+	D3DBLENDOP_REVSUBTRACT = 3,
+	D3DBLENDOP_MIN = 4,
+	D3DBLENDOP_MAX = 5,
+	D3DBLENDOP_FORCE_DWORD = 0x7fffffff
+} D3DBLENDOP;
+
+typedef enum _D3DCMPFUNC {
+	D3DCMP_NEVER = 1,
+	D3DCMP_LESS = 2,
+	D3DCMP_EQUAL = 3,
+	D3DCMP_LESSEQUAL = 4,
+	D3DCMP_GREATER = 5,
+	D3DCMP_NOTEQUAL = 6,
+	D3DCMP_GREATEREQUAL = 7,
+	D3DCMP_ALWAYS = 8,
+	D3DCMP_FORCE_DWORD = 0xffffffff
+} D3DCMPFUNC;
+
+typedef enum _D3DCUBEMAP_FACES {
+	D3DCUBEMAP_FACE_POSITIVE_X = 0,
+	D3DCUBEMAP_FACE_NEGATIVE_X = 1,
+	D3DCUBEMAP_FACE_POSITIVE_Y = 2,
+	D3DCUBEMAP_FACE_NEGATIVE_Y = 3,
+	D3DCUBEMAP_FACE_POSITIVE_Z = 4,
+	D3DCUBEMAP_FACE_NEGATIVE_Z = 5,
+	D3DCUBEMAP_FACE_FORCE_DWORD = 0xffffffff
+} D3DCUBEMAP_FACES;
+
+typedef enum _D3DCULL {
+	D3DCULL_NONE = 1,
+	D3DCULL_CW = 2,
+	D3DCULL_CCW = 3,
+	D3DCULL_FORCE_DWORD = 0xffffffff
+} D3DCULL;
+
+typedef enum _D3DDEBUGMONITORTOKENS {
+	D3DDMT_ENABLE = 0,
+	D3DDMT_DISABLE = 1,
+	D3DDMT_FORCE_DWORD = 0xffffffff
+} D3DDEBUGMONITORTOKENS;
+
+typedef enum _D3DDECLMETHOD
+{
+	D3DDECLMETHOD_DEFAULT = 0,
+	D3DDECLMETHOD_PARTIALU = 1,
+	D3DDECLMETHOD_PARTIALV = 2,
+	D3DDECLMETHOD_CROSSUV = 3,
+	D3DDECLMETHOD_UV = 4,
+	D3DDECLMETHOD_LOOKUP = 5,
+	D3DDECLMETHOD_LOOKUPPRESAMPLED = 6
+} D3DDECLMETHOD;
+
+typedef enum _D3DDECLTYPE
+{
+	D3DDECLTYPE_FLOAT1 = 0,
+	D3DDECLTYPE_FLOAT2 = 1,
+	D3DDECLTYPE_FLOAT3 = 2,
+	D3DDECLTYPE_FLOAT4 = 3,
+	D3DDECLTYPE_D3DCOLOR = 4,
+	D3DDECLTYPE_UBYTE4 = 5,
+	D3DDECLTYPE_SHORT2 = 6,
+	D3DDECLTYPE_SHORT4 = 7,
+	D3DDECLTYPE_UBYTE4N = 8,
+	D3DDECLTYPE_SHORT2N = 9,
+	D3DDECLTYPE_SHORT4N = 10,
+	D3DDECLTYPE_USHORT2N = 11,
+	D3DDECLTYPE_USHORT4N = 12,
+	D3DDECLTYPE_UDEC3 = 13,
+	D3DDECLTYPE_DEC3N = 14,
+	D3DDECLTYPE_FLOAT16_2 = 15,
+	D3DDECLTYPE_FLOAT16_4 = 16,
+	D3DDECLTYPE_UNUSED = 17,
+} D3DDECLTYPE;
+
+typedef enum _D3DDECLUSAGE
+{
+	D3DDECLUSAGE_POSITION = 0,
+	D3DDECLUSAGE_BLENDWEIGHT = 1,
+	D3DDECLUSAGE_BLENDINDICES = 2,
+	D3DDECLUSAGE_NORMAL = 3,
+	D3DDECLUSAGE_PSIZE = 4,
+	D3DDECLUSAGE_TEXCOORD = 5,
+	D3DDECLUSAGE_TANGENT = 6,
+	D3DDECLUSAGE_BINORMAL = 7,
+	D3DDECLUSAGE_TESSFACTOR = 8,
+	D3DDECLUSAGE_POSITIONT = 9,
+	D3DDECLUSAGE_COLOR = 10,
+	D3DDECLUSAGE_FOG = 11,
+	D3DDECLUSAGE_DEPTH = 12,
+	D3DDECLUSAGE_SAMPLE = 13
+} D3DDECLUSAGE;
+
+typedef enum _D3DDEGREETYPE {
+	D3DDEGREE_LINEAR = 1,
+	D3DDEGREE_QUADRATIC = 2,
+	D3DDEGREE_CUBIC = 3,
+	D3DDEGREE_QUINTIC = 5,
+	D3DDEGREE_FORCE_DWORD = 0xffffffff,
+} D3DDEGREETYPE;
+
+typedef enum _D3DDEVTYPE {
+	D3DDEVTYPE_HAL = 1,
+	D3DDEVTYPE_REF = 2,
+	D3DDEVTYPE_SW = 3,
+	D3DDEVTYPE_FORCE_DWORD = 0xffffffff
+} D3DDEVTYPE;
+
+typedef enum _D3DFILLMODE {
+	D3DFILL_POINT = 1,
+	D3DFILL_WIREFRAME = 2,
+	D3DFILL_SOLID = 3,
+	D3DFILL_FORCE_DWORD = 0xffffffff
+} D3DFILLMODE;
+
+typedef enum _D3DFOGMODE {
+	D3DFOG_NONE = 0,
+	D3DFOG_EXP = 1,
+	D3DFOG_EXP2 = 2,
+	D3DFOG_LINEAR = 3,
+	D3DFOG_FORCE_DWORD = 0xffffffff
+} D3DFOGMODE;
+
+typedef enum _D3DFORMAT {
+	D3DFMT_UNKNOWN = 0,
+	D3DFMT_R8G8B8 = 20,
+	D3DFMT_A8R8G8B8 = 21,
+	D3DFMT_X8R8G8B8 = 22,
+	D3DFMT_R5G6B5 = 23,
+	D3DFMT_X1R5G5B5 = 24,
+	D3DFMT_A1R5G5B5 = 25,
+	D3DFMT_A4R4G4B4 = 26,
+	D3DFMT_R3G3B2 = 27,
+	D3DFMT_A8 = 28,
+	D3DFMT_A8R3G3B2 = 29,
+	D3DFMT_X4R4G4B4 = 30,
+	D3DFMT_A2B10G10R10 = 31,
+	D3DFMT_A8B8G8R8 = 32,
+	D3DFMT_X8B8G8R8 = 33,
+	D3DFMT_G16R16 = 34,
+	D3DFMT_A2R10G10B10 = 35,
+	D3DFMT_A16B16G16R16 = 36,
+	D3DFMT_A8P8 = 40,
+	D3DFMT_P8 = 41,
+	D3DFMT_L8 = 50,
+	D3DFMT_A8L8 = 51,
+	D3DFMT_A4L4 = 52,
+	D3DFMT_V8U8 = 60,
+	D3DFMT_L6V5U5 = 61,
+	D3DFMT_X8L8V8U8 = 62,
+	D3DFMT_Q8W8V8U8 = 63,
+	D3DFMT_V16U16 = 64,
+    D3DFMT_A2W10V10U10 = 67,
+	D3DFMT_UYVY = MAKEFOURCC('U','Y','V','Y'),
+	D3DFMT_R8G8_B8G8 = MAKEFOURCC('R','G','B','G'),
+	D3DFMT_YUY2 = MAKEFOURCC('Y','U','Y','2'),
+	D3DFMT_G8R8_G8B8 = MAKEFOURCC('G','R','G','B'),
+	D3DFMT_DXT1 = MAKEFOURCC('D','X','T','1'),
+	D3DFMT_DXT2 = MAKEFOURCC('D','X','T','2'),
+	D3DFMT_DXT3 = MAKEFOURCC('D','X','T','3'),
+	D3DFMT_DXT4 = MAKEFOURCC('D','X','T','4'),
+	D3DFMT_DXT5 = MAKEFOURCC('D','X','T','5'),
+	D3DFMT_D16_LOCKABLE = 70,
+	D3DFMT_D32 = 71,
+	D3DFMT_D15S1 = 73,
+	D3DFMT_D24S8 = 75,
+	D3DFMT_D24X8 = 77,
+	D3DFMT_D24X4S4 = 79,
+	D3DFMT_D16 = 80,
+	D3DFMT_L16 = 81,
+	D3DFMT_D32F_LOCKABLE = 82,
+	D3DFMT_D24FS8 = 83,
+	D3DFMT_VERTEXDATA = 100,
+	D3DFMT_INDEX16 = 101,
+	D3DFMT_INDEX32 = 102,
+	D3DFMT_Q16W16V16U16 = 110,
+	D3DFMT_MULTI2_ARGB8 = MAKEFOURCC('M','E','T','1'),
+	D3DFMT_R16F = 111,
+	D3DFMT_G16R16F = 112,
+	D3DFMT_A16B16G16R16F = 113,
+	D3DFMT_R32F = 114,
+	D3DFMT_G32R32F = 115,
+	D3DFMT_A32B32G32R32F = 116,
+	D3DFMT_CxV8U8 = 117,
+	D3DFMT_FORCE_DWORD = 0xffffffff
+} D3DFORMAT;
+
+typedef enum _D3DLIGHTTYPE {
+	D3DLIGHT_POINT = 1,
+	D3DLIGHT_SPOT = 2,
+	D3DLIGHT_DIRECTIONAL = 3,
+	D3DLIGHT_FORCE_DWORD = 0xffffffff
+} D3DLIGHTTYPE;
+
+typedef enum _D3DMATERIALCOLORSOURCE
+{
+	D3DMCS_MATERIAL = 0,
+	D3DMCS_COLOR1 = 1,
+	D3DMCS_COLOR2 = 2,
+	D3DMCS_FORCE_DWORD = 0xffffffff
+} D3DMATERIALCOLORSOURCE;
+
+typedef enum _D3DMULTISAMPLE_TYPE {
+	D3DMULTISAMPLE_NONE = 0,
+	D3DMULTISAMPLE_NONMASKABLE = 1,
+	D3DMULTISAMPLE_2_SAMPLES = 2,
+	D3DMULTISAMPLE_3_SAMPLES = 3,
+	D3DMULTISAMPLE_4_SAMPLES = 4,
+	D3DMULTISAMPLE_5_SAMPLES = 5,
+	D3DMULTISAMPLE_6_SAMPLES = 6,
+	D3DMULTISAMPLE_7_SAMPLES = 7,
+	D3DMULTISAMPLE_8_SAMPLES = 8,
+	D3DMULTISAMPLE_9_SAMPLES = 9,
+	D3DMULTISAMPLE_10_SAMPLES = 10,
+	D3DMULTISAMPLE_11_SAMPLES = 11,
+	D3DMULTISAMPLE_12_SAMPLES = 12,
+	D3DMULTISAMPLE_13_SAMPLES = 13,
+	D3DMULTISAMPLE_14_SAMPLES = 14,
+	D3DMULTISAMPLE_15_SAMPLES = 15,
+	D3DMULTISAMPLE_16_SAMPLES = 16,
+	D3DMULTISAMPLE_FORCE_DWORD = 0xffffffff
+} D3DMULTISAMPLE_TYPE;
+
+typedef enum _D3DORDERTYPE {
+	D3DORDER_LINEAR = 1,
+	D3DORDER_QUADRATIC = 2,
+	D3DORDER_CUBIC = 3,
+	D3DORDER_QUINTIC = 5,
+	D3DORDER_FORCE_DWORD = 0xffffffff
+} D3DORDERTYPE;
+
+typedef enum _D3DPATCHEDGESTYLE
+{
+	D3DPATCHEDGE_DISCRETE = 0,
+	D3DPATCHEDGE_CONTINUOUS = 1,
+	D3DPATCHEDGE_FORCE_DWORD = 0xffffffff
+} D3DPATCHEDGESTYLE;
+
+typedef enum _D3DPOOL {
+	D3DPOOL_DEFAULT = 0,
+	D3DPOOL_MANAGED = 1,
+	D3DPOOL_SYSTEMMEM = 2,
+	D3DPOOL_SCRATCH = 3,
+	D3DPOOL_FORCE_DWORD = 0xffffffff
+} D3DPOOL;
+
+typedef enum _D3DPRIMITIVETYPE {
+	D3DPT_POINTLIST = 1,
+	D3DPT_LINELIST = 2,
+	D3DPT_LINESTRIP = 3,
+	D3DPT_TRIANGLELIST = 4,
+	D3DPT_TRIANGLESTRIP = 5,
+	D3DPT_TRIANGLEFAN = 6,
+	D3DPT_FORCE_DWORD = 0xffffffff
+} D3DPRIMITIVETYPE;
+
+typedef enum _D3DQUERYTYPE {
+	D3DQUERYTYPE_VCACHE = 4,
+	D3DQUERYTYPE_RESOURCEMANAGER = 5,
+	D3DQUERYTYPE_VERTEXSTATS = 6,
+	D3DQUERYTYPE_EVENT = 8,
+	D3DQUERYTYPE_OCCLUSION = 9
+} D3DQUERYTYPE;
+
+typedef enum _D3DRENDERSTATETYPE {
+	D3DRS_ZENABLE = 7,
+	D3DRS_FILLMODE = 8,
+	D3DRS_SHADEMODE = 9,
+	D3DRS_ZWRITEENABLE = 14,
+	D3DRS_ALPHATESTENABLE = 15,
+	D3DRS_LASTPIXEL = 16,
+	D3DRS_SRCBLEND = 19,
+	D3DRS_DESTBLEND = 20,
+	D3DRS_CULLMODE = 22,
+	D3DRS_ZFUNC = 23,
+	D3DRS_ALPHAREF = 24,
+	D3DRS_ALPHAFUNC = 25,
+	D3DRS_DITHERENABLE = 26,
+	D3DRS_ALPHABLENDENABLE = 27,
+	D3DRS_FOGENABLE = 28,
+	D3DRS_SPECULARENABLE = 29,
+	D3DRS_FOGCOLOR = 34,
+	D3DRS_FOGTABLEMODE = 35,
+	D3DRS_FOGSTART = 36,
+	D3DRS_FOGEND = 37,
+	D3DRS_FOGDENSITY = 38,
+	D3DRS_RANGEFOGENABLE = 48,
+	D3DRS_STENCILENABLE = 52,
+	D3DRS_STENCILFAIL = 53,
+	D3DRS_STENCILZFAIL = 54,
+	D3DRS_STENCILPASS = 55,
+	D3DRS_STENCILFUNC = 56,
+	D3DRS_STENCILREF = 57,
+	D3DRS_STENCILMASK = 58,
+	D3DRS_STENCILWRITEMASK = 59,
+	D3DRS_TEXTUREFACTOR = 60,
+	D3DRS_WRAP0 = 128,
+	D3DRS_WRAP1 = 129,
+	D3DRS_WRAP2 = 130,
+	D3DRS_WRAP3 = 131,
+	D3DRS_WRAP4 = 132,
+	D3DRS_WRAP5 = 133,
+	D3DRS_WRAP6 = 134,
+	D3DRS_WRAP7 = 135,
+	D3DRS_CLIPPING = 136,
+	D3DRS_LIGHTING = 137,
+	D3DRS_AMBIENT = 139,
+	D3DRS_FOGVERTEXMODE = 140,
+	D3DRS_COLORVERTEX = 141,
+	D3DRS_LOCALVIEWER = 142,
+	D3DRS_NORMALIZENORMALS = 143,
+	D3DRS_DIFFUSEMATERIALSOURCE = 145,
+	D3DRS_SPECULARMATERIALSOURCE = 146,
+	D3DRS_AMBIENTMATERIALSOURCE = 147,
+	D3DRS_EMISSIVEMATERIALSOURCE = 148,
+	D3DRS_VERTEXBLEND = 151,
+	D3DRS_CLIPPLANEENABLE = 152,
+	D3DRS_POINTSIZE = 154,
+	D3DRS_POINTSIZE_MIN = 155,
+	D3DRS_POINTSPRITEENABLE = 156,
+	D3DRS_POINTSCALEENABLE = 157,
+	D3DRS_POINTSCALE_A = 158,
+	D3DRS_POINTSCALE_B = 159,
+	D3DRS_POINTSCALE_C = 160,
+	D3DRS_MULTISAMPLEANTIALIAS = 161,
+	D3DRS_MULTISAMPLEMASK = 162,
+	D3DRS_PATCHEDGESTYLE = 163,
+	D3DRS_DEBUGMONITORTOKEN = 165,
+	D3DRS_POINTSIZE_MAX = 166,
+	D3DRS_INDEXEDVERTEXBLENDENABLE = 167,
+	D3DRS_COLORWRITEENABLE = 168,
+	D3DRS_TWEENFACTOR = 170,
+	D3DRS_BLENDOP = 171,
+	D3DRS_POSITIONDEGREE = 172,
+	D3DRS_NORMALDEGREE = 173,
+	D3DRS_SCISSORTESTENABLE = 174,
+	D3DRS_SLOPESCALEDEPTHBIAS = 175,
+	D3DRS_ANTIALIASEDLINEENABLE = 176,
+	D3DRS_MINTESSELLATIONLEVEL = 178,
+	D3DRS_MAXTESSELLATIONLEVEL = 179,
+	D3DRS_ADAPTIVETESS_X = 180,
+	D3DRS_ADAPTIVETESS_Y = 181,
+	D3DRS_ADAPTIVETESS_Z = 182,
+	D3DRS_ADAPTIVETESS_W = 183,
+	D3DRS_ENABLEADAPTIVETESSELLATION = 184,
+	D3DRS_TWOSIDEDSTENCILMODE = 185,
+	D3DRS_CCW_STENCILFAIL = 186,
+	D3DRS_CCW_STENCILZFAIL = 187,
+	D3DRS_CCW_STENCILPASS = 188,
+	D3DRS_CCW_STENCILFUNC = 189,
+	D3DRS_COLORWRITEENABLE1 = 190,
+	D3DRS_COLORWRITEENABLE2 = 191,
+	D3DRS_COLORWRITEENABLE3 = 192,
+	D3DRS_BLENDFACTOR = 193,
+	D3DRS_SRGBWRITEENABLE = 194,
+	D3DRS_DEPTHBIAS = 195,
+	D3DRS_WRAP8 = 198,
+	D3DRS_WRAP9 = 199,
+	D3DRS_WRAP10 = 200,
+	D3DRS_WRAP11 = 201,
+	D3DRS_WRAP12 = 202,
+	D3DRS_WRAP13 = 203,
+	D3DRS_WRAP14 = 204,
+	D3DRS_WRAP15 = 205,
+	D3DRS_SEPARATEALPHABLENDENABLE = 206,
+	D3DRS_SRCBLENDALPHA = 207,
+	D3DRS_DESTBLENDALPHA = 208,
+	D3DRS_BLENDOPALPHA = 209,
+	D3DRS_FORCE_DWORD = 0xffffffff
+} D3DRENDERSTATETYPE;
+
+typedef enum _D3DRESOURCETYPE {
+	D3DRTYPE_SURFACE = 1,
+	D3DRTYPE_VOLUME = 2,
+	D3DRTYPE_TEXTURE = 3,
+	D3DRTYPE_VOLUMETEXTURE = 4,
+	D3DRTYPE_CUBETEXTURE = 5,
+	D3DRTYPE_VERTEXBUFFER = 6,
+	D3DRTYPE_INDEXBUFFER = 7,
+	D3DRTYPE_FORCE_DWORD = 0xffffffff
+} D3DRESOURCETYPE;
+
+typedef enum _D3DSAMPLER_TEXTURE_TYPE
+{
+	D3DSTT_UNKNOWN = 0 << D3DSP_TEXTURETYPE_SHIFT,
+	D3DSTT_2D = 2 << D3DSP_TEXTURETYPE_SHIFT,
+	D3DSTT_CUBE = 3 << D3DSP_TEXTURETYPE_SHIFT,
+	D3DSTT_VOLUME = 4 << D3DSP_TEXTURETYPE_SHIFT,
+	D3DSTT_FORCE_DWORD = 0xffffffff
+} D3DSAMPLER_TEXTURE_TYPE;
+
+typedef enum _D3DSAMPLERSTATETYPE {
+	D3DSAMP_ADDRESSU = 1,
+	D3DSAMP_ADDRESSV = 2,
+	D3DSAMP_ADDRESSW = 3,
+	D3DSAMP_BORDERCOLOR = 4,
+	D3DSAMP_MAGFILTER = 5,
+	D3DSAMP_MINFILTER = 6,
+	D3DSAMP_MIPFILTER = 7,
+	D3DSAMP_MIPMAPLODBIAS = 8,
+	D3DSAMP_MAXMIPLEVEL = 9,
+	D3DSAMP_MAXANISOTROPY = 10,
+	D3DSAMP_SRGBTEXTURE = 11,
+	D3DSAMP_ELEMENTINDEX = 12,
+	D3DSAMP_DMAPOFFSET = 13,
+	D3DSAMP_FORCE_DWORD = 0xffffffff,
+} D3DSAMPLERSTATETYPE;
+
+typedef enum _D3DSHADEMODE {
+	D3DSHADE_FLAT = 1,
+	D3DSHADE_GOURAUD = 2,
+	D3DSHADE_PHONG = 3,
+	D3DSHADE_FORCE_DWORD = 0xffffffff
+} D3DSHADEMODE;
+
+typedef enum _D3DSHADER_ADDRESSMODE_TYPE
+{
+	D3DSHADER_ADDRMODE_ABSOLUTE = (0 << D3DSHADER_ADDRESSMODE_SHIFT),
+	D3DSHADER_ADDRMODE_RELATIVE = (1 << D3DSHADER_ADDRESSMODE_SHIFT),
+	D3DSHADER_ADDRMODE_FORCE_DWORD = 0xffffffff
+} D3DSHADER_ADDRESSMODE_TYPE;
+
+typedef enum _D3DSHADER_COMPARISON
+{
+	D3DSPC_RESERVED0 = 0,
+	D3DSPC_GT = 1,
+	D3DSPC_EQ = 2,
+	D3DSPC_GE = 3,
+	D3DSPC_LT = 4,
+	D3DSPC_NE = 5,
+	D3DSPC_LE = 6,
+	D3DSPC_RESERVED1 = 7
+} D3DSHADER_COMPARISON;
+
+typedef enum _D3DSHADER_INSTRUCTION_OPCODE_TYPE
+{
+	D3DSIO_NOP = 0,
+	D3DSIO_MOV = 1,
+	D3DSIO_ADD = 2,
+	D3DSIO_SUB = 3,
+	D3DSIO_MAD = 4,
+	D3DSIO_MUL = 5,
+	D3DSIO_RCP = 6,
+	D3DSIO_RSQ = 7,
+	D3DSIO_DP3 = 8,
+	D3DSIO_DP4 = 9,
+	D3DSIO_MIN = 10,
+	D3DSIO_MAX = 11,
+	D3DSIO_SLT = 12,
+	D3DSIO_SGE = 13,
+	D3DSIO_EXP = 14,
+	D3DSIO_LOG = 15,
+	D3DSIO_LIT = 16,
+	D3DSIO_DST = 17,
+	D3DSIO_LRP = 18,
+	D3DSIO_FRC = 19,
+	D3DSIO_M4x4 = 20,
+	D3DSIO_M4x3 = 21,
+	D3DSIO_M3x4 = 22,
+	D3DSIO_M3x3 = 23,
+	D3DSIO_M3x2 = 24,
+	D3DSIO_CALL = 25,
+	D3DSIO_CALLNZ = 26,
+	D3DSIO_LOOP = 27,
+	D3DSIO_RET = 28,
+	D3DSIO_ENDLOOP = 29,
+	D3DSIO_LABEL = 30,
+	D3DSIO_DCL = 31,
+	D3DSIO_POW = 32,
+	D3DSIO_CRS = 33,
+	D3DSIO_SGN = 34,
+	D3DSIO_ABS = 35,
+	D3DSIO_NRM = 36,
+	D3DSIO_SINCOS = 37,
+	D3DSIO_REP = 38,
+	D3DSIO_ENDREP = 39,
+	D3DSIO_IF = 40,
+	D3DSIO_IFC = 41,
+	D3DSIO_ELSE = 42,
+	D3DSIO_ENDIF = 43,
+	D3DSIO_BREAK = 44,
+	D3DSIO_BREAKC = 45,
+	D3DSIO_MOVA = 46,
+	D3DSIO_DEFB = 47,
+	D3DSIO_DEFI = 48,
+	D3DSIO_TEXCOORD = 64,
+	D3DSIO_TEXKILL = 65,
+	D3DSIO_TEX = 66,
+	D3DSIO_TEXBEM = 67,
+	D3DSIO_TEXBEML = 68,
+	D3DSIO_TEXREG2AR = 69,
+	D3DSIO_TEXREG2GB = 70,
+	D3DSIO_TEXM3x2PAD = 71,
+	D3DSIO_TEXM3x2TEX = 72,
+	D3DSIO_TEXM3x3PAD = 73,
+	D3DSIO_TEXM3x3TEX = 74,
+	D3DSIO_RESERVED0 = 75,
+	D3DSIO_TEXM3x3SPEC = 76,
+	D3DSIO_TEXM3x3VSPEC = 77,
+	D3DSIO_EXPP = 78,
+	D3DSIO_LOGP = 79,
+	D3DSIO_CND = 80,
+	D3DSIO_DEF = 81,
+	D3DSIO_TEXREG2RGB = 82,
+	D3DSIO_TEXDP3TEX = 83,
+	D3DSIO_TEXM3x2DEPTH = 84,
+	D3DSIO_TEXDP3 = 85,
+	D3DSIO_TEXM3x3 = 86,
+	D3DSIO_TEXDEPTH = 87,
+	D3DSIO_CMP = 88,
+	D3DSIO_BEM = 89,
+	D3DSIO_DP2ADD = 90,
+	D3DSIO_DSX = 91,
+	D3DSIO_DSY = 92,
+	D3DSIO_TEXLDD = 93,
+	D3DSIO_SETP = 94,
+	D3DSIO_TEXLDL = 95,
+	D3DSIO_BREAKP = 96,
+	D3DSIO_PHASE = 0xfffd,
+	D3DSIO_COMMENT = 0xfffe,
+	D3DSIO_END = 0xffff,
+	D3DSIO_FORCE_DWORD = 0xffffffff
+} D3DSHADER_INSTRUCTION_OPCODE_TYPE;
+
+typedef enum _D3DSHADER_MISCTYPE_OFFSETS
+{
+	D3DSMO_POSITION = 0,
+	D3DSMO_FACE = 1
+} D3DSHADER_MISCTYPE_OFFSETS;
+
+typedef enum _D3DSHADER_PARAM_REGISTER_TYPE
+{
+	D3DSPR_TEMP = 0,
+	D3DSPR_INPUT = 1,
+	D3DSPR_CONST = 2,
+	D3DSPR_ADDR = 3,
+	D3DSPR_TEXTURE = 3,
+	D3DSPR_RASTOUT = 4,
+	D3DSPR_ATTROUT = 5,
+	D3DSPR_TEXCRDOUT = 6,
+	D3DSPR_OUTPUT = 6,
+	D3DSPR_CONSTINT = 7,
+	D3DSPR_COLOROUT = 8,
+	D3DSPR_DEPTHOUT = 9,
+	D3DSPR_SAMPLER = 10,
+	D3DSPR_CONST2 = 11,
+	D3DSPR_CONST3 = 12,
+	D3DSPR_CONST4 = 13,
+	D3DSPR_CONSTBOOL = 14,
+	D3DSPR_LOOP = 15,
+	D3DSPR_TEMPFLOAT16 = 16,
+	D3DSPR_MISCTYPE = 17,
+	D3DSPR_LABEL = 18,
+	D3DSPR_PREDICATE = 19,
+	D3DSPR_FORCE_DWORD = 0xffffffff
+} D3DSHADER_PARAM_REGISTER_TYPE;
+
+typedef enum _D3DSHADER_PARAM_SRCMOD_TYPE
+{
+	D3DSPSM_NONE = 0 << D3DSP_SRCMOD_SHIFT,
+	D3DSPSM_NEG = 1 << D3DSP_SRCMOD_SHIFT,
+	D3DSPSM_BIAS = 2 << D3DSP_SRCMOD_SHIFT,
+	D3DSPSM_BIASNEG = 3 << D3DSP_SRCMOD_SHIFT,
+	D3DSPSM_SIGN = 4 << D3DSP_SRCMOD_SHIFT,
+	D3DSPSM_SIGNNEG = 5 << D3DSP_SRCMOD_SHIFT,
+	D3DSPSM_COMP = 6 << D3DSP_SRCMOD_SHIFT,
+	D3DSPSM_X2 = 7 << D3DSP_SRCMOD_SHIFT,
+	D3DSPSM_X2NEG = 8 << D3DSP_SRCMOD_SHIFT,
+	D3DSPSM_DZ = 9 << D3DSP_SRCMOD_SHIFT,
+	D3DSPSM_DW = 10 << D3DSP_SRCMOD_SHIFT,
+	D3DSPSM_ABS = 11 << D3DSP_SRCMOD_SHIFT,
+	D3DSPSM_ABSNEG = 12 << D3DSP_SRCMOD_SHIFT,
+	D3DSPSM_NOT = 13 << D3DSP_SRCMOD_SHIFT,
+	D3DSPSM_FORCE_DWORD = 0xffffffff
+} D3DSHADER_PARAM_SRCMOD_TYPE;
+
+typedef enum _D3DVS_ADDRESSMODE_TYPE
+{
+	D3DVS_ADDRMODE_ABSOLUTE = (0 << D3DVS_ADDRESSMODE_SHIFT),
+	D3DVS_ADDRMODE_RELATIVE = (1 << D3DVS_ADDRESSMODE_SHIFT),
+	D3DVS_ADDRMODE_FORCE_DWORD = 0xffffffff
+} D3DVS_ADDRESSMODE_TYPE;
+
+typedef enum _D3DVS_RASTOUT_OFFSETS
+{
+	D3DSRO_POSITION = 0,
+	D3DSRO_FOG = 1,
+	D3DSRO_POINT_SIZE = 2,
+	D3DSRO_FORCE_DWORD = 0xffffffff
+} D3DVS_RASTOUT_OFFSETS;
+
+typedef enum _D3DSTENCILOP {
+	D3DSTENCILOP_KEEP = 1,
+	D3DSTENCILOP_ZERO = 2,
+	D3DSTENCILOP_REPLACE = 3,
+	D3DSTENCILOP_INCRSAT = 4,
+	D3DSTENCILOP_DECRSAT = 5,
+	D3DSTENCILOP_INVERT = 6,
+	D3DSTENCILOP_INCR = 7,
+	D3DSTENCILOP_DECR = 8,
+	D3DSTENCILOP_FORCE_DWORD = 0x7fffffff
+} D3DSTENCILOP;
+
+typedef enum _D3DSTATEBLOCKTYPE {
+	D3DSBT_ALL = 1,
+	D3DSBT_PIXELSTATE = 2,
+	D3DSBT_VERTEXSTATE = 3,
+	D3DSBT_FORCE_DWORD = 0xffffffff
+} D3DSTATEBLOCKTYPE;
+
+typedef enum _D3DSWAPEFFECT {
+	D3DSWAPEFFECT_DISCARD = 1,
+	D3DSWAPEFFECT_FLIP = 2,
+	D3DSWAPEFFECT_COPY = 3,
+	D3DSWAPEFFECT_COPY_VSYNC = 4,
+	D3DSWAPEFFECT_FORCE_DWORD = 0xffffffff
+} D3DSWAPEFFECT;
+
+typedef enum _D3DTEXTUREADDRESS {
+	D3DTADDRESS_WRAP = 1,
+	D3DTADDRESS_MIRROR = 2,
+	D3DTADDRESS_CLAMP = 3,
+	D3DTADDRESS_BORDER = 4,
+	D3DTADDRESS_MIRRORONCE = 5,
+	D3DTADDRESS_FORCE_DWORD = 0xffffffff
+} D3DTEXTUREADDRESS;
+
+typedef enum _D3DTEXTUREFILTERTYPE {
+	D3DTEXF_NONE = 0,
+	D3DTEXF_POINT = 1,
+	D3DTEXF_LINEAR = 2,
+	D3DTEXF_ANISOTROPIC = 3,
+	D3DTEXF_PYRAMIDALQUAD = 6,
+	D3DTEXF_GAUSSIANQUAD = 7,
+	D3DTEXF_FORCE_DWORD = 0xffffffff
+} D3DTEXTUREFILTERTYPE;
+
+typedef enum _D3DTEXTURESTAGESTATETYPE {
+	D3DTSS_COLOROP = 1,
+	D3DTSS_COLORARG1 = 2,
+	D3DTSS_COLORARG2 = 3,
+	D3DTSS_ALPHAOP = 4,
+	D3DTSS_ALPHAARG1 = 5,
+	D3DTSS_ALPHAARG2 = 6,
+	D3DTSS_BUMPENVMAT00 = 7,
+	D3DTSS_BUMPENVMAT01 = 8,
+	D3DTSS_BUMPENVMAT10 = 9,
+	D3DTSS_BUMPENVMAT11 = 10,
+	D3DTSS_TEXCOORDINDEX = 11,
+	D3DTSS_BUMPENVLSCALE = 22,
+	D3DTSS_BUMPENVLOFFSET = 23,
+	D3DTSS_TEXTURETRANSFORMFLAGS = 24,
+	D3DTSS_ADDRESSW = 25,
+	D3DTSS_COLORARG0 = 26,
+	D3DTSS_ALPHAARG0 = 27,
+	D3DTSS_RESULTARG = 28,
+	D3DTSS_CONSTANT = 32,
+	D3DTSS_FORCE_DWORD = 0xffffffff
+} D3DTEXTURESTAGESTATETYPE;
+
+typedef enum _D3DTEXTUREOP {
+	D3DTOP_DISABLE = 1,
+	D3DTOP_SELECTARG1 = 2,
+	D3DTOP_SELECTARG2 = 3,
+	D3DTOP_MODULATE = 4,
+	D3DTOP_MODULATE2X = 5,
+	D3DTOP_MODULATE4X = 6,
+	D3DTOP_ADD = 7,
+	D3DTOP_ADDSIGNED = 8,
+	D3DTOP_ADDSIGNED2X = 9,
+	D3DTOP_SUBTRACT = 10,
+	D3DTOP_ADDSMOOTH = 11,
+	D3DTOP_BLENDDIFFUSEALPHA = 12,
+	D3DTOP_BLENDTEXTUREALPHA = 13,
+	D3DTOP_BLENDFACTORALPHA = 14,
+	D3DTOP_BLENDTEXTUREALPHAPM = 15,
+	D3DTOP_BLENDCURRENTALPHA = 16,
+	D3DTOP_PREMODULATE = 17,
+	D3DTOP_MODULATEALPHA_ADDCOLOR = 18,
+	D3DTOP_MODULATECOLOR_ADDALPHA = 19,
+	D3DTOP_MODULATEINVALPHA_ADDCOLOR = 20,
+	D3DTOP_MODULATEINVCOLOR_ADDALPHA = 21,
+	D3DTOP_BUMPENVMAP = 22,
+	D3DTOP_BUMPENVMAPLUMINANCE = 23,
+	D3DTOP_DOTPRODUCT3 = 24,
+	D3DTOP_MULTIPLYADD = 25,
+	D3DTOP_LERP = 26,
+	D3DTOP_FORCE_DWORD = 0xffffffff,
+} D3DTEXTUREOP;
+
+typedef enum _D3DTEXTURETRANSFORMFLAGS {
+	D3DTTFF_DISABLE = 0,
+	D3DTTFF_COUNT1 = 1,
+	D3DTTFF_COUNT2 = 2,
+	D3DTTFF_COUNT3 = 3,
+	D3DTTFF_COUNT4 = 4,
+	D3DTTFF_PROJECTED = 256,
+	D3DTTFF_FORCE_DWORD = 0xffffffff,
+} D3DTEXTURETRANSFORMFLAGS;
+
+typedef enum _D3DTRANSFORMSTATETYPE {
+	D3DTS_VIEW = 2,
+	D3DTS_PROJECTION = 3,
+	D3DTS_TEXTURE0 = 16,
+	D3DTS_TEXTURE1 = 17,
+	D3DTS_TEXTURE2 = 18,
+	D3DTS_TEXTURE3 = 19,
+	D3DTS_TEXTURE4 = 20,
+	D3DTS_TEXTURE5 = 21,
+	D3DTS_TEXTURE6 = 22,
+	D3DTS_TEXTURE7 = 23,
+	D3DTS_FORCE_DWORD = 0xffffffff
+} D3DTRANSFORMSTATETYPE;
+
+typedef enum _D3DVERTEXBLENDFLAGS
+{
+	D3DVBF_DISABLE = 0,
+	D3DVBF_1WEIGHTS = 1,
+	D3DVBF_2WEIGHTS = 2,
+	D3DVBF_3WEIGHTS = 3,
+	D3DVBF_TWEENING = 255,
+	D3DVBF_0WEIGHTS = 256,
+	D3DVBF_FORCE_DWORD = 0xffffffff
+} D3DVERTEXBLENDFLAGS;
+
+typedef enum _D3DZBUFFERTYPE {
+	D3DZB_FALSE = 0,
+	D3DZB_TRUE = 1,
+	D3DZB_USEW = 2,
+	D3DZB_FORCE_DWORD = 0xffffffff
+} D3DZBUFFERTYPE;
+
+typedef struct _D3DADAPTER_IDENTIFIER9 {
+	char Driver[MAX_DEVICE_IDENTIFIER_STRING];
+	char Description[MAX_DEVICE_IDENTIFIER_STRING];
+	char DeviceName[32];
+	LARGE_INTEGER DriverVersion;
+    DWORD VendorId;
+    DWORD DeviceId;
+    DWORD SubSysId;
+    DWORD Revision;
+    GUID DeviceIdentifier;
+    DWORD WHQLLevel;
+} D3DADAPTER_IDENTIFIER9;
+
+typedef struct _D3DBOX {
+	UINT Left;
+	UINT Top;
+	UINT Right;
+	UINT Bottom;
+	UINT Front;
+	UINT Back;
+} D3DBOX;
+
+typedef struct _D3DCLIPSTATUS9 {
+	DWORD ClipUnion;
+	DWORD ClipIntersection;
+} D3DCLIPSTATUS9;
+
+typedef struct _D3DCOLORVALUE {
+	float r;
+	float g;
+	float b;
+	float a;
+} D3DCOLORVALUE;
+
+typedef struct _D3DRESOURCESTATS
+{
+	BOOL bThrashing;
+	DWORD ApproxBytesDownloaded;
+	DWORD NumEvicts;
+	DWORD NumVidCreates;
+	DWORD LastPri;
+	DWORD NumUsed;
+	DWORD NumUsedInVidMem;
+	DWORD WorkingSet;
+	DWORD WorkingSetBytes;
+	DWORD TotalManaged;
+	DWORD TotalBytes;
+} D3DRESOURCESTATS;
+
+typedef struct _D3DDEVICE_CREATION_PARAMETERS {
+	UINT AdapterOrdinal;
+	D3DDEVTYPE DeviceType;
+	HWND hFocusWindow;
+	DWORD BehaviorFlags;
+} D3DDEVICE_CREATION_PARAMETERS;
+
+typedef struct _D3DDEVINFO_RESOURCEMANAGER {
+	D3DRESOURCESTATS stats[D3DRTYPECOUNT];
+} D3DDEVINFO_RESOURCEMANAGER, *LPD3DDEVINFO_RESOURCEMANAGER;
+
+typedef struct _D3DDEVINFO_D3DVERTEXSTATS {
+	DWORD NumRenderedTriangles;
+	DWORD NumExtraClippingTriangles;
+} D3DDEVINFO_D3DVERTEXSTATS, *LPD3DDEVINFO_D3DVERTEXSTATS;
+
+typedef struct _D3DDEVINFO_VCACHE {
+	DWORD Pattern;
+	DWORD OptMethod;
+	DWORD CacheSize;
+	DWORD MagicNumber;
+} D3DDEVINFO_VCACHE, *LPD3DDEVINFO_VCACHE;
+
+typedef struct _D3DDISPLAYMODE {
+	UINT Width;
+	UINT Height;
+	UINT RefreshRate;
+	D3DFORMAT Format;
+} D3DDISPLAYMODE;
+
+typedef struct _D3DGAMMARAMP {
+	WORD red[256];
+	WORD green[256];
+	WORD blue[256];
+} D3DGAMMARAMP;
+
+typedef struct _D3DINDEXBUFFER_DESC {
+	D3DFORMAT Format;
+	D3DRESOURCETYPE Type;
+	DWORD Usage;
+	D3DPOOL Pool;
+	UINT Size;
+} D3DINDEXBUFFER_DESC;
+
+typedef struct _D3DVECTOR {
+	float x;
+	float y;
+	float z;
+} D3DVECTOR;
+
+typedef struct _D3DLIGHT9 {
+	D3DLIGHTTYPE Type;
+	D3DCOLORVALUE Diffuse;
+	D3DCOLORVALUE Specular;
+	D3DCOLORVALUE Ambient;
+	D3DVECTOR Position;
+	D3DVECTOR Direction;
+	float Range;
+	float Falloff;
+	float Attenuation0;
+	float Attenuation1;
+	float Attenuation2;
+	float Theta;
+	float Phi;
+} D3DLIGHT9;
+
+typedef struct _D3DLOCKED_BOX {
+	INT RowPitch;
+	INT SlicePitch;
+	void *pBits;
+} D3DLOCKED_BOX;
+
+typedef struct _D3DLOCKED_RECT {
+	INT Pitch;
+	void *pBits;
+} D3DLOCKED_RECT;
+
+typedef struct _D3DMATERIAL9 {
+	D3DCOLORVALUE Diffuse;
+	D3DCOLORVALUE Ambient;
+	D3DCOLORVALUE Specular;
+	D3DCOLORVALUE Emissive;
+	float Power;
+} D3DMATERIAL9;
+
+typedef struct _D3DMATRIX {
+	union {
+		struct {
+			float _11, _12, _13, _14;
+			float _21, _22, _23, _24;
+			float _31, _32, _33, _34;
+			float _41, _42, _43, _44;
+		};
+		float m[4][4];
+	};
+} D3DMATRIX;
+
+typedef struct _D3DPRESENT_PARAMETERS {
+	UINT BackBufferWidth;
+	UINT BackBufferHeight;
+	D3DFORMAT BackBufferFormat;
+	UINT BackBufferCount;
+	D3DMULTISAMPLE_TYPE MultiSampleType;
+	DWORD MultiSampleQuality;
+	D3DSWAPEFFECT SwapEffect;
+	HWND hDeviceWindow;
+	BOOL Windowed;
+	BOOL EnableAutoDepthStencil;
+	D3DFORMAT AutoDepthStencilFormat;
+	DWORD Flags;
+	UINT FullScreen_RefreshRateInHz;
+	UINT PresentationInterval;
+} D3DPRESENT_PARAMETERS;
+
+typedef struct _D3DRANGE
+{
+	UINT Offset;
+	UINT Size;
+} D3DRANGE;
+
+typedef struct _D3DRASTER_STATUS {
+	BOOL InVBlank;
+	UINT ScanLine;
+} D3DRASTER_STATUS;
+
+typedef struct _D3DRECT {
+	LONG x1;
+	LONG y1;
+	LONG x2;
+	LONG y2;
+} D3DRECT;
+
+typedef struct _D3DRECTPATCH_INFO {
+	UINT StartVertexOffsetWidth;
+	UINT StartVertexOffsetHeight;
+	UINT Width;
+	UINT Height;
+	UINT Stride;
+	D3DBASISTYPE Basis;
+	D3DORDERTYPE Order;
+} D3DRECTPATCH_INFO;
+
+typedef struct _D3DSURFACE_DESC {
+	D3DFORMAT Format;
+	D3DRESOURCETYPE Type;
+	DWORD Usage;
+	D3DPOOL Pool;
+	UINT Size;
+	D3DMULTISAMPLE_TYPE MultiSampleType;
+	UINT Width;
+	UINT Height;
+} D3DSURFACE_DESC;
+
+typedef struct _D3DTRIPATCH_INFO {
+	UINT StartVertexOffset;
+	UINT NumVertices;
+	D3DBASISTYPE Basis;
+	D3DORDERTYPE Order;
+} D3DTRIPATCH_INFO;
+
+typedef struct _D3DVERTEXBUFFER_DESC {
+	D3DFORMAT Format;
+	D3DRESOURCETYPE Type;
+	DWORD Usage;
+	D3DPOOL Pool;
+	UINT Size;
+	DWORD FVF;
+} D3DVERTEXBUFFER_DESC;
+
+typedef struct _D3DVERTEXELEMENT9 {
+	WORD Stream;
+	WORD Offset;
+	BYTE Type;
+	BYTE Method;
+	BYTE Usage;
+	BYTE UsageIndex;
+} D3DVERTEXELEMENT9, *LPD3DVERTEXELEMENT9;
+
+typedef struct _D3DVIEWPORT9 {
+	DWORD X;
+	DWORD Y;
+	DWORD Width;
+	DWORD Height;
+	float MinZ;
+	float MaxZ;
+} D3DVIEWPORT9;
+
+typedef struct _D3DVOLUME_DESC {
+	D3DFORMAT Format;
+	D3DRESOURCETYPE Type;
+	DWORD Usage;
+	D3DPOOL Pool;
+	UINT Width;
+	UINT Height;
+	UINT Depth;
+} D3DVOLUME_DESC;
+
+#include <poppack.h>
+
+#endif
+#endif
Index: Daodan/MinGW/include/dbt.h
===================================================================
--- Daodan/MinGW/include/dbt.h	(revision 1046)
+++ Daodan/MinGW/include/dbt.h	(revision 1046)
@@ -0,0 +1,154 @@
+#ifndef _DBT_H
+#define _DBT_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define DBT_NO_DISK_SPACE	0x47
+#define DBT_CONFIGMGPRIVATE	0x7FFF
+#define DBT_DEVICEARRIVAL	0x8000
+#define DBT_DEVICEQUERYREMOVE	0x8001
+#define DBT_DEVICEQUERYREMOVEFAILED	0x8002
+#define DBT_DEVICEREMOVEPENDING	0x8003
+#define DBT_DEVICEREMOVECOMPLETE	0x8004
+#define DBT_DEVICETYPESPECIFIC	0x8005
+#define DBT_DEVTYP_OEM	0
+#define DBT_DEVTYP_DEVNODE	1
+#define DBT_DEVTYP_VOLUME	2
+#define DBT_DEVTYP_PORT	3
+#define DBT_DEVTYP_NET	4
+#if (_WIN32_WINDOWS >= 0x0410 || _WIN32_WINNT >= 0x0500)
+#define DBT_DEVTYP_DEVICEINTERFACE 5
+#define DBT_DEVTYP_HANDLE 6
+#endif /* (_WIN32_WINDOWS >= 0x0410 || _WIN32_WINNT >= 0x0500) */
+#define DBT_APPYBEGIN 0
+#define DBT_APPYEND 1
+#define DBT_DEVNODES_CHANGED 7
+#define DBT_QUERYCHANGECONFIG 0x17
+#define DBT_CONFIGCHANGED 0x18
+#define DBT_CONFIGCHANGECANCELED 0x19
+#define DBT_MONITORCHANGE 0x1B
+#define DBT_SHELLLOGGEDON 32
+#define DBT_CONFIGMGAPI32 34
+#define DBT_VXDINITCOMPLETE 35
+#define DBT_VOLLOCKQUERYLOCK 0x8041
+#define DBT_VOLLOCKLOCKTAKEN 0x8042
+#define DBT_VOLLOCKLOCKFAILED 0x8043
+#define DBT_VOLLOCKQUERYUNLOCK 0x8044
+#define DBT_VOLLOCKLOCKRELEASED 0x8045
+#define DBT_VOLLOCKUNLOCKFAILED 0x8046
+#define DBT_USERDEFINED 0xFFFF
+#define DBTF_MEDIA	1
+#define DBTF_NET	2
+
+/* Also defined in winuser.h */
+#define BSM_ALLCOMPONENTS	0
+#define BSM_APPLICATIONS	8
+#define BSM_ALLDESKTOPS		16
+#define BSM_INSTALLABLEDRIVERS	4
+#define BSM_NETDRIVER	2
+#define BSM_VXDS	1
+#define BSF_FLUSHDISK 0x00000004
+#define BSF_FORCEIFHUNG 0x00000020
+#define BSF_IGNORECURRENTTASK 0x00000002
+#define BSF_NOHANG 0x00000008
+#define BSF_NOTIMEOUTIFNOTHUNG 0x00000040
+#define BSF_POSTMESSAGE 0x00000010
+#define BSF_QUERY 0x00000001
+#if (_WIN32_WINNT >= 0x0500)
+#define BSF_ALLOWSFW 0x00000080
+#define BSF_SENDNOTIFYMESSAGE 0x00000100
+#endif /* (_WIN32_WINNT >= 0x0500) */
+#if (_WIN32_WINNT >= 0x0501)
+#define BSF_LUID 0x00000400
+#define BSF_RETURNHDESK 0x00000200
+#endif /* (_WIN32_WINNT >= 0x0501) */
+
+#define BSF_MSGSRV32ISOK_BIT 31
+#define BSF_MSGSRV32ISOK 0x80000000
+
+typedef struct _DEV_BROADCAST_HDR {
+	DWORD dbch_size;
+	DWORD dbch_devicetype;
+	DWORD dbch_reserved;
+} DEV_BROADCAST_HDR,*PDEV_BROADCAST_HDR;
+typedef struct _DEV_BROADCAST_OEM {
+	DWORD dbco_size;
+	DWORD dbco_devicetype;
+	DWORD dbco_reserved;
+	DWORD dbco_identifier;
+	DWORD dbco_suppfunc;
+} DEV_BROADCAST_OEM,*PDEV_BROADCAST_OEM;
+typedef struct _DEV_BROADCAST_PORT_A {
+	DWORD dbcp_size;
+	DWORD dbcp_devicetype;
+	DWORD dbcp_reserved;
+	char dbcp_name[1];
+} DEV_BROADCAST_PORT_A, *PDEV_BROADCAST_PORT_A;
+typedef struct _DEV_BROADCAST_PORT_W {
+	DWORD dbcp_size;
+	DWORD dbcp_devicetype;
+	DWORD dbcp_reserved;
+	wchar_t dbcp_name[1];
+} DEV_BROADCAST_PORT_W, *PDEV_BROADCAST_PORT_W;
+typedef struct _DEV_BROADCAST_USERDEFINED {
+	struct _DEV_BROADCAST_HDR dbud_dbh;
+	char dbud_szName[1];
+} DEV_BROADCAST_USERDEFINED;
+typedef struct _DEV_BROADCAST_VOLUME {
+	DWORD dbcv_size;
+	DWORD dbcv_devicetype;
+	DWORD dbcv_reserved;
+	DWORD dbcv_unitmask;
+	WORD dbcv_flags;
+} DEV_BROADCAST_VOLUME,*PDEV_BROADCAST_VOLUME;
+
+#ifdef UNICODE
+typedef DEV_BROADCAST_PORT_W DEV_BROADCAST_PORT, *PDEV_BROADCAST_PORT;
+#else
+typedef DEV_BROADCAST_PORT_A DEV_BROADCAST_PORT, *PDEV_BROADCAST_PORT;
+#endif
+
+#if (_WIN32_WINDOWS >= 0x0410 || _WIN32_WINNT >= 0x0500)
+typedef struct _DEV_BROADCAST_DEVICEINTERFACE_A {
+ DWORD dbcc_size;
+ DWORD dbcc_devicetype;
+ DWORD dbcc_reserved;
+ GUID dbcc_classguid;
+ char dbcc_name[1];
+} DEV_BROADCAST_DEVICEINTERFACE_A, *PDEV_BROADCAST_DEVICEINTERFACE_A;
+typedef struct _DEV_BROADCAST_DEVICEINTERFACE_W {
+ DWORD dbcc_size;
+ DWORD dbcc_devicetype;
+ DWORD dbcc_reserved;
+ GUID dbcc_classguid;
+ wchar_t dbcc_name[1];
+} DEV_BROADCAST_DEVICEINTERFACE_W, *PDEV_BROADCAST_DEVICEINTERFACE_W;
+
+#ifdef UNICODE
+typedef DEV_BROADCAST_DEVICEINTERFACE_W DEV_BROADCAST_DEVICEINTERFACE;
+typedef PDEV_BROADCAST_DEVICEINTERFACE_W PDEV_BROADCAST_DEVICEINTERFACE;
+#else
+typedef DEV_BROADCAST_DEVICEINTERFACE_A DEV_BROADCAST_DEVICEINTERFACE;
+typedef PDEV_BROADCAST_DEVICEINTERFACE_A PDEV_BROADCAST_DEVICEINTERFACE;
+#endif
+
+typedef struct _DEV_BROADCAST_HANDLE {
+ DWORD dbch_size;
+ DWORD dbch_devicetype;
+ DWORD dbch_reserved;
+ HANDLE dbch_handle;
+ DWORD dbch_hdevnotify;
+ GUID dbch_eventguid;
+ LONG dbch_nameoffset;
+ BYTE dbch_data[1];
+} DEV_BROADCAST_HANDLE, *PDEV_BROADCAST_HANDLE;
+#endif /* (_WIN32_WINDOWS >= 0x0410 || _WIN32_WINNT >= 0x0500) */
+
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/dde.h
===================================================================
--- Daodan/MinGW/include/dde.h	(revision 1046)
+++ Daodan/MinGW/include/dde.h	(revision 1046)
@@ -0,0 +1,64 @@
+#ifndef _DDE_H
+#define _DDE_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#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)
+
+#ifndef RC_INVOKED
+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;
+BOOL WINAPI DdeSetQualityOfService(HWND,const SECURITY_QUALITY_OF_SERVICE*,PSECURITY_QUALITY_OF_SERVICE);
+BOOL WINAPI ImpersonateDdeClientWindow(HWND,HWND);
+LPARAM WINAPI PackDDElParam(UINT,UINT_PTR,UINT_PTR);
+BOOL WINAPI UnpackDDElParam(UINT,LPARAM,PUINT_PTR,PUINT_PTR);
+BOOL WINAPI FreeDDElParam(UINT,LPARAM);
+LPARAM WINAPI ReuseDDElParam(LPARAM,UINT,UINT,UINT_PTR,UINT_PTR);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/ddeml.h
===================================================================
--- Daodan/MinGW/include/ddeml.h	(revision 1046)
+++ Daodan/MinGW/include/ddeml.h	(revision 1046)
@@ -0,0 +1,314 @@
+#ifndef _DDEML_H
+#define _DDEML_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define EXPENTRY	CALLBACK
+#define CP_WINANSI	1004
+#define CP_WINUNICODE	1200
+#define XTYPF_NOBLOCK	2
+#define XTYPF_NODATA	4
+#define XTYPF_ACKREQ	8
+#define XCLASS_MASK	0xFC00
+#define XCLASS_BOOL	0x1000
+#define XCLASS_DATA	0x2000
+#define XCLASS_FLAGS	0x4000
+#define XCLASS_NOTIFICATION	0x8000
+#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 XTYP_ERROR	(XCLASS_NOTIFICATION|XTYPF_NOBLOCK)
+#define XTYP_ADVDATA	(16|XCLASS_FLAGS)
+#define XTYP_ADVREQ	(32|XCLASS_DATA|XTYPF_NOBLOCK)
+#define XTYP_ADVSTART	(0x30|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	0xF0
+#define XTYP_SHIFT	4
+#define TIMEOUT_ASYNC	0xFFFFFFFF
+#define QID_SYNC	0xFFFFFFFF
+#define ST_CONNECTED	1
+#define ST_ADVISE	2
+#define ST_ISLOCAL	4
+#define ST_BLOCKED	8
+#define ST_CLIENT	16
+#define ST_TERMINATED	32
+#define ST_INLIST	64
+#define ST_BLOCKNEXT	128
+#define ST_ISSELF	256
+#define CADV_LATEACK 0xFFFF
+#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
+#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	0
+#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 CBR_BLOCK	((HDDEDATA)0xffffffff)
+#define CBF_FAIL_SELFCONNECTIONS	0x1000
+#define CBF_FAIL_CONNECTIONS	0x2000
+#define CBF_FAIL_ADVISES	0x4000
+#define CBF_FAIL_EXECUTES	0x8000
+#define CBF_FAIL_POKES	0x10000
+#define CBF_FAIL_REQUESTS	0x20000
+#define CBF_FAIL_ALLSVRXACTIONS	0x3f000
+#define CBF_SKIP_CONNECT_CONFIRMS	0x40000
+#define CBF_SKIP_REGISTRATIONS	0x80000
+#define CBF_SKIP_UNREGISTRATIONS	0x100000
+#define CBF_SKIP_DISCONNECTS	0x200000
+#define CBF_SKIP_ALLNOTIFICATIONS	0x3c0000
+#define APPCMD_CLIENTONLY	0x10L
+#define APPCMD_FILTERINITS	0x20L
+#define APPCMD_MASK	0xFF0L
+#define APPCLASS_STANDARD	0
+#define APPCLASS_MASK	0xFL
+#define EC_ENABLEALL	0
+#define EC_ENABLEONE	ST_BLOCKNEXT
+#define EC_DISABLE	ST_BLOCKED
+#define EC_QUERYWAITING	2
+#define DNS_REGISTER	1
+#define DNS_UNREGISTER	2
+#define DNS_FILTERON	4
+#define DNS_FILTEROFF	8
+#define HDATA_APPOWNED	1
+#define MAX_MONITORS	4
+#define APPCLASS_MONITOR	1L
+#define XTYP_MONITOR	(XCLASS_NOTIFICATION|XTYPF_NOBLOCK|0xF0)
+#define MF_HSZ_INFO	0x1000000
+#define MF_SENDMSGS	0x2000000
+#define MF_POSTMSGS	0x4000000
+#define MF_CALLBACKS	0x8000000
+#define MF_ERRORS	0x10000000
+#define MF_LINKS	0x20000000
+#define MF_CONV	0x40000000
+#define MF_MASK 0xFF000000
+#define MH_CREATE	1
+#define MH_KEEP	2
+#define MH_DELETE	3
+#define MH_CLEANUP	4
+
+DECLARE_HANDLE(HCONVLIST);
+DECLARE_HANDLE(HCONV);
+DECLARE_HANDLE(HSZ);
+DECLARE_HANDLE(HDDEDATA);
+typedef HDDEDATA CALLBACK FNCALLBACK(UINT,UINT,HCONV,HSZ,HSZ,HDDEDATA,DWORD,DWORD);
+typedef HDDEDATA(CALLBACK *PFNCALLBACK)(UINT,UINT,HCONV,HSZ,HSZ,HDDEDATA,DWORD,DWORD);
+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	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;
+typedef struct tagDDEML_MSG_HOOK_DATA {
+	UINT	uiLo;
+	UINT	uiHi;
+	DWORD	cbData;
+	DWORD	Data[8];
+} DDEML_MSG_HOOK_DATA;
+typedef struct tagMONHSZSTRUCT {
+	UINT	cb;
+	BOOL	fsAction;
+	DWORD	dwTime;
+	HSZ	hsz;
+	HANDLE	hTask;
+	TCHAR	str[1];
+} MONHSZSTRUCT, *PMONHSZSTRUCT;
+typedef struct tagMONLINKSTRUCT {
+	UINT	cb;
+	DWORD	dwTime;
+	HANDLE	hTask;
+	BOOL	fEstablished;
+	BOOL	fNoData;
+	HSZ	hszSvc;
+	HSZ	hszTopic;
+	HSZ	hszItem;
+	UINT	wFmt;
+	BOOL	fServer;
+	HCONV	hConvServer;
+	HCONV	hConvClient;
+} MONLINKSTRUCT, *PMONLINKSTRUCT;
+typedef struct tagMONCONVSTRUCT {
+	UINT	cb;
+	BOOL	fConnect;
+	DWORD	dwTime;
+	HANDLE	hTask;
+	HSZ	hszSvc;
+	HSZ	hszTopic;
+	HCONV	hConvClient;
+	HCONV	hConvServer;
+} MONCONVSTRUCT, *PMONCONVSTRUCT;
+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 tagMONERRSTRUCT {
+	UINT	cb;
+	UINT	wLastError;
+	DWORD	dwTime;
+	HANDLE	hTask;
+} MONERRSTRUCT, *PMONERRSTRUCT;
+typedef struct tagMONMSGSTRUCT {
+	UINT	cb;
+	HWND	hwndTo;
+	DWORD	dwTime;
+	HANDLE	hTask;
+	UINT	wMsg;
+	WPARAM	wParam;
+	LPARAM	lParam;
+	DDEML_MSG_HOOK_DATA dmhd;
+} MONMSGSTRUCT, *PMONMSGSTRUCT;
+
+BOOL WINAPI DdeAbandonTransaction(DWORD,HCONV,DWORD);
+PBYTE WINAPI DdeAccessData(HDDEDATA,PDWORD);
+HDDEDATA WINAPI DdeAddData(HDDEDATA,PBYTE,DWORD,DWORD);
+HDDEDATA WINAPI DdeClientTransaction(PBYTE,DWORD,HCONV,HSZ,UINT,UINT,DWORD,PDWORD);
+int WINAPI DdeCmpStringHandles(HSZ,HSZ);
+HCONV WINAPI DdeConnect(DWORD,HSZ,HSZ,PCONVCONTEXT);
+HCONVLIST WINAPI DdeConnectList(DWORD,HSZ,HSZ,HCONVLIST,PCONVCONTEXT);
+HDDEDATA WINAPI DdeCreateDataHandle(DWORD,PBYTE,DWORD,DWORD,HSZ,UINT,UINT);
+HSZ WINAPI DdeCreateStringHandleA(DWORD,LPCSTR,int);
+HSZ WINAPI DdeCreateStringHandleW(DWORD,LPCWSTR,int);
+BOOL WINAPI DdeDisconnect(HCONV);
+BOOL WINAPI DdeDisconnectList(HCONVLIST);
+BOOL WINAPI DdeEnableCallback(DWORD,HCONV,UINT);
+BOOL WINAPI DdeFreeDataHandle(HDDEDATA);
+BOOL WINAPI DdeFreeStringHandle(DWORD,HSZ);
+DWORD WINAPI DdeGetData(HDDEDATA,PBYTE,DWORD,DWORD);
+UINT WINAPI DdeGetLastError(DWORD);
+BOOL WINAPI DdeImpersonateClient(HCONV);
+UINT WINAPI DdeInitializeA(PDWORD,PFNCALLBACK,DWORD,DWORD);
+UINT WINAPI DdeInitializeW(PDWORD,PFNCALLBACK,DWORD,DWORD);
+BOOL WINAPI DdeKeepStringHandle(DWORD,HSZ);
+HDDEDATA WINAPI DdeNameService(DWORD,HSZ,HSZ,UINT);
+BOOL WINAPI DdePostAdvise(DWORD,HSZ,HSZ);
+UINT WINAPI DdeQueryConvInfo(HCONV,DWORD,PCONVINFO);
+HCONV WINAPI DdeQueryNextServer(HCONVLIST,HCONV);
+DWORD WINAPI DdeQueryStringA(DWORD,HSZ,LPSTR,DWORD,int);
+DWORD WINAPI DdeQueryStringW(DWORD,HSZ,LPWSTR,DWORD,int);
+HCONV WINAPI DdeReconnect(HCONV);
+BOOL WINAPI DdeSetUserHandle(HCONV,DWORD,DWORD);
+BOOL WINAPI DdeUnaccessData(HDDEDATA);
+BOOL WINAPI DdeUninitialize(DWORD);
+
+#ifdef UNICODE
+#define SZDDESYS_TOPIC	L"System"
+#define SZDDESYS_ITEM_TOPICS	L"Topics"
+#define SZDDESYS_ITEM_SYSITEMS	L"SysItems"
+#define SZDDESYS_ITEM_RTNMSG	L"ReturnMessage"
+#define SZDDESYS_ITEM_STATUS	L"Status"
+#define SZDDESYS_ITEM_FORMATS	L"Formats"
+#define SZDDESYS_ITEM_HELP	L"Help"
+#define SZDDE_ITEM_ITEMLIST	L"TopicItemList"
+#define DdeCreateStringHandle DdeCreateStringHandleW
+#define DdeInitialize DdeInitializeW
+#define DdeQueryString DdeQueryStringW
+#else
+#define SZDDESYS_TOPIC	"System"
+#define SZDDESYS_ITEM_TOPICS	"Topics"
+#define SZDDESYS_ITEM_SYSITEMS	"SysItems"
+#define SZDDESYS_ITEM_RTNMSG	"ReturnMessage"
+#define SZDDESYS_ITEM_STATUS	"Status"
+#define SZDDESYS_ITEM_FORMATS	"Formats"
+#define SZDDESYS_ITEM_HELP	"Help"
+#define SZDDE_ITEM_ITEMLIST	"TopicItemList"
+#define DdeCreateStringHandle DdeCreateStringHandleA
+#define DdeInitialize DdeInitializeA
+#define DdeQueryString DdeQueryStringA
+#endif
+#ifdef __cplusplus
+}
+#endif
+#endif /* _DDEML_H */
Index: Daodan/MinGW/include/ddk/atm.h
===================================================================
--- Daodan/MinGW/include/ddk/atm.h	(revision 1046)
+++ Daodan/MinGW/include/ddk/atm.h	(revision 1046)
@@ -0,0 +1,507 @@
+/*
+ * atm.h
+ *
+ * ATM support
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __ATM_H
+#define __ATM_H
+
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef ULONG	ATM_ADDRESSTYPE;
+
+#define SAP_TYPE_NSAP			                1
+#define SAP_TYPE_E164			                2
+
+#define ATM_MEDIA_SPECIFIC                1
+
+#define CALLMGR_SPECIFIC_Q2931            1
+
+#define	ATM_NSAP				                  0
+#define	ATM_E164				                  1
+
+#define	ATM_MAC_ADDRESS_LENGTH	          6
+#define	ATM_ADDRESS_LENGTH		            20
+
+typedef ULONG	ATM_AAL_TYPE, *PATM_AAL_TYPE;
+
+#define	AAL_TYPE_AAL0			                1
+#define	AAL_TYPE_AAL1			                2
+#define	AAL_TYPE_AAL34			              4
+#define	AAL_TYPE_AAL5			                8
+
+#define ATM_ADDR_BLANK_CHAR				        L' '
+#define ATM_ADDR_E164_START_CHAR		      L'+'
+#define ATM_ADDR_PUNCTUATION_CHAR		      L'.'
+
+typedef enum {
+	IE_AALParameters,
+	IE_TrafficDescriptor,
+	IE_BroadbandBearerCapability,
+	IE_BHLI,
+	IE_BLLI,
+	IE_CalledPartyNumber,
+	IE_CalledPartySubaddress,
+	IE_CallingPartyNumber,
+	IE_CallingPartySubaddress,
+	IE_Cause,
+	IE_QOSClass,
+	IE_TransitNetworkSelection,
+	IE_BroadbandSendingComplete,
+	IE_LIJCallId,
+	IE_Raw
+} Q2931_IE_TYPE;
+
+typedef struct _Q2931_IE {
+  Q2931_IE_TYPE  IEType;
+  ULONG  IELength;
+  UCHAR  IE[1];
+} Q2931_IE, *PQ2931_IE;
+
+typedef struct _AAL1_PARAMETERS {
+  UCHAR  Subtype;
+  UCHAR  CBRRate;
+  USHORT  Multiplier;
+  UCHAR  SourceClockRecoveryMethod;
+  UCHAR  ErrorCorrectionMethod;
+  USHORT  StructuredDataTransferBlocksize;
+  UCHAR  PartiallyFilledCellsMethod;
+} AAL1_PARAMETERS, *PAAL1_PARAMETERS;
+
+typedef struct _AAL34_PARAMETERS {
+  USHORT  ForwardMaxCPCSSDUSize;
+  USHORT  BackwardMaxCPCSSDUSize;
+  USHORT  LowestMID;
+  USHORT  HighestMID;
+  UCHAR  SSCSType;
+} AAL34_PARAMETERS, *PAAL34_PARAMETERS;
+
+/* AAL5_PARAMETERS.Mode constants */
+#define AAL5_MODE_MESSAGE			            0x01
+#define AAL5_MODE_STREAMING			          0x02
+
+/* AAL5_PARAMETERS.SSCSType constants */
+#define AAL5_SSCS_NULL				            0x00
+#define AAL5_SSCS_SSCOP_ASSURED		        0x01
+#define AAL5_SSCS_SSCOP_NON_ASSURED	      0x02
+#define AAL5_SSCS_FRAME_RELAY		          0x04
+
+typedef struct _AAL5_PARAMETERS {
+  ULONG  ForwardMaxCPCSSDUSize;
+  ULONG  BackwardMaxCPCSSDUSize;
+  UCHAR  Mode;
+  UCHAR  SSCSType;
+} AAL5_PARAMETERS, *PAAL5_PARAMETERS;
+
+typedef struct _AALUSER_PARAMETERS {
+  ULONG  UserDefined;
+} AALUSER_PARAMETERS, *PAALUSER_PARAMETERS;
+
+typedef struct _AAL_PARAMETERS_IE {
+  ATM_AAL_TYPE  AALType;
+  union {
+    AAL1_PARAMETERS  AAL1Parameters;
+    AAL34_PARAMETERS  AAL34Parameters;
+    AAL5_PARAMETERS  AAL5Parameters;
+    AALUSER_PARAMETERS  AALUserParameters;
+  } AALSpecificParameters;
+} AAL_PARAMETERS_IE, *PAAL_PARAMETERS_IE;
+
+
+/* FIXME: Should the union be anonymous in C++ too?  If so,
+   can't define named types _ATM_AAL5_INFO and _ATM_AAL0_INFO
+   within anonymous union for C++. */
+typedef struct _ATM_AAL_OOB_INFO
+{
+	ATM_AAL_TYPE  AalType;
+#ifndef __cplusplus
+	_ANONYMOUS_UNION
+#endif
+	union {
+		struct _ATM_AAL5_INFO {
+			BOOLEAN  CellLossPriority;
+			UCHAR  UserToUserIndication;
+			UCHAR  CommonPartIndicator;
+		} ATM_AAL5_INFO;
+
+		struct _ATM_AAL0_INFO {
+			BOOLEAN  CellLossPriority;
+			UCHAR  PayLoadTypeIdentifier;
+		} ATM_AAL0_INFO;
+#ifndef __cplusplus
+	} DUMMYUNIONNAME;
+#else
+	} u;
+#endif
+} ATM_AAL_OOB_INFO, *PATM_AAL_OOB_INFO;
+
+typedef struct _ATM_ADDRESS  {
+  ATM_ADDRESSTYPE  AddressType;
+  ULONG  NumberOfDigits;
+  UCHAR  Address[ATM_ADDRESS_LENGTH];
+} ATM_ADDRESS, *PATM_ADDRESS;
+
+/* ATM_BHLI_IE.HighLayerInfoType constants */
+#define BHLI_ISO				                  0x00
+#define BHLI_UserSpecific		              0x01
+#define BHLI_HighLayerProfile	            0x02
+#define BHLI_VendorSpecificAppId          0x03
+
+typedef struct _ATM_BHLI_IE {
+  ULONG  HighLayerInfoType;
+  ULONG  HighLayerInfoLength;
+  UCHAR  HighLayerInfo[8];
+} ATM_BHLI_IE, *PATM_BHLI_IE;
+
+/* ATM_BLLI_IE.Layer2Protocol constants */
+#define BLLI_L2_ISO_1745		              0x01
+#define BLLI_L2_Q921			                0x02
+#define BLLI_L2_X25L			                0x06
+#define BLLI_L2_X25M			                0x07
+#define BLLI_L2_ELAPB			                0x08
+#define BLLI_L2_HDLC_ARM		              0x09
+#define BLLI_L2_HDLC_NRM		              0x0A
+#define BLLI_L2_HDLC_ABM		              0x0B
+#define BLLI_L2_LLC				                0x0C
+#define BLLI_L2_X75				                0x0D
+#define BLLI_L2_Q922			                0x0E
+#define BLLI_L2_USER_SPECIFIED            0x10
+#define BLLI_L2_ISO_7776		              0x11
+
+/* ATM_BLLI_IE.Layer3Protocol constants */
+#define BLLI_L3_X25				                0x06
+#define BLLI_L3_ISO_8208		              0x07
+#define BLLI_L3_X223			                0x08
+#define BLLI_L3_SIO_8473		              0x09
+#define BLLI_L3_T70				                0x0A
+#define BLLI_L3_ISO_TR9577		            0x0B
+#define BLLI_L3_USER_SPECIFIED	          0x10
+
+/* ATM_BLLI_IE.Layer3IPI constants */
+#define BLLI_L3_IPI_SNAP		              0x80
+#define BLLI_L3_IPI_IP			              0xCC
+
+typedef struct _ATM_BLLI_IE {
+  ULONG  Layer2Protocol;
+  UCHAR  Layer2Mode;
+  UCHAR  Layer2WindowSize;
+  ULONG  Layer2UserSpecifiedProtocol;
+  ULONG  Layer3Protocol;
+  UCHAR  Layer3Mode;
+  UCHAR  Layer3DefaultPacketSize;
+  UCHAR  Layer3PacketWindowSize;
+  ULONG  Layer3UserSpecifiedProtocol;
+  ULONG  Layer3IPI;
+  UCHAR  SnapId[5];
+} ATM_BLLI_IE, *PATM_BLLI_IE;
+
+/* ATM_BROADBAND_BEARER_CAPABILITY_IE.BearerClass constants */
+#define BCOB_A					                  0x00
+#define BCOB_C					                  0x01
+#define BCOB_X					                  0x02
+
+/* ATM_BROADBAND_BEARER_CAPABILITY_IE.TrafficType constants */
+#define TT_NOIND				                  0x00
+#define TT_CBR					                  0x04
+#define TT_VBR					                  0x08
+
+/* ATM_BROADBAND_BEARER_CAPABILITY_IE.TimingRequirements constants */
+#define TR_NOIND				                  0x00
+#define TR_END_TO_END			                0x01
+#define TR_NO_END_TO_END		              0x02
+
+/* ATM_BROADBAND_BEARER_CAPABILITY_IE.ClippingSusceptability constants */
+#define CLIP_NOT				                  0x00
+#define CLIP_SUS				                  0x20
+
+/* ATM_BROADBAND_BEARER_CAPABILITY_IE.UserPlaneConnectionConfig constants */
+#define UP_P2P					                  0x00
+#define UP_P2MP					                  0x01
+
+typedef struct _ATM_BROADBAND_BEARER_CAPABILITY_IE {
+  UCHAR  BearerClass;
+  UCHAR  TrafficType;
+  UCHAR  TimingRequirements;
+  UCHAR  ClippingSusceptability;
+  UCHAR  UserPlaneConnectionConfig;
+} ATM_BROADBAND_BEARER_CAPABILITY_IE, *PATM_BROADBAND_BEARER_CAPABILITY_IE;
+
+typedef struct _ATM_BROADBAND_SENDING_COMPLETE_IE {
+  UCHAR  SendingComplete;
+} ATM_BROADBAND_SENDING_COMPLETE_IE, *PATM_BROADBAND_SENDING_COMPLETE_IE;
+
+typedef struct _ATM_CALLING_PARTY_NUMBER_IE {
+  ATM_ADDRESS  Number;
+  UCHAR  PresentationIndication;
+  UCHAR  ScreeningIndicator;
+} ATM_CALLING_PARTY_NUMBER_IE, *PATM_CALLING_PARTY_NUMBER_IE;
+
+/* ATM_CAUSE_IE.Location constants */
+#define ATM_CAUSE_LOC_USER                    0x00
+#define ATM_CAUSE_LOC_PRIVATE_LOCAL           0x01
+#define ATM_CAUSE_LOC_PUBLIC_LOCAL            0x02
+#define ATM_CAUSE_LOC_TRANSIT_NETWORK         0x03
+#define ATM_CAUSE_LOC_PUBLIC_REMOTE           0x04
+#define ATM_CAUSE_LOC_PRIVATE_REMOTE          0x05
+#define ATM_CAUSE_LOC_INTERNATIONAL_NETWORK   0x07
+#define ATM_CAUSE_LOC_BEYOND_INTERWORKING     0x0A
+
+/* ATM_CAUSE_IE.Cause constants */
+#define ATM_CAUSE_UNALLOCATED_NUMBER                0x01
+#define ATM_CAUSE_NO_ROUTE_TO_TRANSIT_NETWORK       0x02
+#define ATM_CAUSE_NO_ROUTE_TO_DESTINATION           0x03
+#define ATM_CAUSE_VPI_VCI_UNACCEPTABLE              0x0A
+#define ATM_CAUSE_NORMAL_CALL_CLEARING              0x10
+#define ATM_CAUSE_USER_BUSY                         0x11
+#define ATM_CAUSE_NO_USER_RESPONDING                0x12
+#define ATM_CAUSE_CALL_REJECTED                     0x15
+#define ATM_CAUSE_NUMBER_CHANGED                    0x16
+#define ATM_CAUSE_USER_REJECTS_CLIR                 0x17
+#define ATM_CAUSE_DESTINATION_OUT_OF_ORDER          0x1B
+#define ATM_CAUSE_INVALID_NUMBER_FORMAT             0x1C
+#define ATM_CAUSE_STATUS_ENQUIRY_RESPONSE           0x1E
+#define ATM_CAUSE_NORMAL_UNSPECIFIED                0x1F
+#define ATM_CAUSE_VPI_VCI_UNAVAILABLE               0x23
+#define ATM_CAUSE_NETWORK_OUT_OF_ORDER              0x26
+#define ATM_CAUSE_TEMPORARY_FAILURE                 0x29
+#define ATM_CAUSE_ACCESS_INFORMAION_DISCARDED       0x2B
+#define ATM_CAUSE_NO_VPI_VCI_AVAILABLE              0x2D
+#define ATM_CAUSE_RESOURCE_UNAVAILABLE              0x2F
+#define ATM_CAUSE_QOS_UNAVAILABLE                   0x31
+#define ATM_CAUSE_USER_CELL_RATE_UNAVAILABLE        0x33
+#define ATM_CAUSE_BEARER_CAPABILITY_UNAUTHORIZED    0x39
+#define ATM_CAUSE_BEARER_CAPABILITY_UNAVAILABLE     0x3A
+#define ATM_CAUSE_OPTION_UNAVAILABLE                0x3F
+#define ATM_CAUSE_BEARER_CAPABILITY_UNIMPLEMENTED   0x41
+#define ATM_CAUSE_UNSUPPORTED_TRAFFIC_PARAMETERS    0x49
+#define ATM_CAUSE_INVALID_CALL_REFERENCE            0x51
+#define ATM_CAUSE_CHANNEL_NONEXISTENT               0x52
+#define ATM_CAUSE_INCOMPATIBLE_DESTINATION          0x58
+#define ATM_CAUSE_INVALID_ENDPOINT_REFERENCE        0x59
+#define ATM_CAUSE_INVALID_TRANSIT_NETWORK_SELECTION 0x5B
+#define ATM_CAUSE_TOO_MANY_PENDING_ADD_PARTY        0x5C
+#define ATM_CAUSE_AAL_PARAMETERS_UNSUPPORTED        0x5D
+#define ATM_CAUSE_MANDATORY_IE_MISSING              0x60
+#define ATM_CAUSE_UNIMPLEMENTED_MESSAGE_TYPE        0x61
+#define ATM_CAUSE_UNIMPLEMENTED_IE                  0x63
+#define ATM_CAUSE_INVALID_IE_CONTENTS               0x64
+#define ATM_CAUSE_INVALID_STATE_FOR_MESSAGE         0x65
+#define ATM_CAUSE_RECOVERY_ON_TIMEOUT               0x66
+#define ATM_CAUSE_INCORRECT_MESSAGE_LENGTH          0x68
+#define ATM_CAUSE_PROTOCOL_ERROR                    0x6F
+
+/* ATM_CAUSE_IE.Diagnostics constants */
+#define ATM_CAUSE_COND_UNKNOWN            0x00
+#define ATM_CAUSE_COND_PERMANENT          0x01
+#define ATM_CAUSE_COND_TRANSIENT          0x02
+#define ATM_CAUSE_REASON_USER             0x00
+#define ATM_CAUSE_REASON_IE_MISSING       0x04
+#define ATM_CAUSE_REASON_IE_INSUFFICIENT  0x08
+#define ATM_CAUSE_PU_PROVIDER             0x00
+#define ATM_CAUSE_PU_USER                 0x08
+#define ATM_CAUSE_NA_NORMAL               0x00
+#define ATM_CAUSE_NA_ABNORMAL             0x04
+
+typedef struct _ATM_CAUSE_IE {
+  UCHAR  Location;
+  UCHAR  Cause;
+  UCHAR  DiagnosticsLength;
+  UCHAR  Diagnostics[4];
+} ATM_CAUSE_IE, *PATM_CAUSE_IE;
+
+
+typedef ULONG	ATM_SERVICE_CATEGORY, *PATM_SERVICE_CATEGORY;
+
+/* ATM_FLOW_PARAMETERS.ServiceCategory constants */
+#define	ATM_SERVICE_CATEGORY_CBR	        1
+#define	ATM_SERVICE_CATEGORY_VBR	        2
+#define	ATM_SERVICE_CATEGORY_UBR	        4
+#define	ATM_SERVICE_CATEGORY_ABR	        8
+
+/* ATM_FLOW_PARAMETERS.Reserved1 constants */
+#define ATM_FLOW_PARAMS_RSVD1_MPP	        0x01
+
+typedef struct _ATM_FLOW_PARAMETERS {
+  ATM_SERVICE_CATEGORY  ServiceCategory;
+  ULONG  AverageCellRate;
+  ULONG  PeakCellRate;
+  ULONG  MinimumCellRate;
+  ULONG  InitialCellRate;
+  ULONG  BurstLengthCells;
+  ULONG  MaxSduSize;
+  ULONG  TransientBufferExposure;
+  ULONG  CumulativeRMFixedRTT;
+  UCHAR  RateIncreaseFactor;
+  UCHAR  RateDecreaseFactor;
+  USHORT  ACRDecreaseTimeFactor;
+  UCHAR  MaximumCellsPerForwardRMCell;
+  UCHAR  MaximumForwardRMCellInterval;
+  UCHAR  CutoffDecreaseFactor;
+  UCHAR  Reserved1;
+  ULONG  MissingRMCellCount;
+  ULONG  Reserved2;
+  ULONG  Reserved3;
+} ATM_FLOW_PARAMETERS, *PATM_FLOW_PARAMETERS;
+
+typedef struct _ATM_VPIVCI {
+  ULONG  Vpi;
+  ULONG  Vci;
+} ATM_VPIVCI, *PATM_VPIVCI;
+
+typedef struct _ATM_MEDIA_PARAMETERS {
+  ATM_VPIVCI  ConnectionId;
+  ATM_AAL_TYPE  AALType;
+  ULONG  CellDelayVariationCLP0;
+  ULONG  CellDelayVariationCLP1;
+  ULONG  CellLossRatioCLP0;
+  ULONG  CellLossRatioCLP1;
+  ULONG  CellTransferDelayCLP0;
+  ULONG  CellTransferDelayCLP1;
+  ULONG  DefaultCLP;
+  ATM_FLOW_PARAMETERS  Transmit;
+  ATM_FLOW_PARAMETERS  Receive;
+} ATM_MEDIA_PARAMETERS, *PATM_MEDIA_PARAMETERS;
+
+typedef struct _ATM_PVC_SAP {
+  ATM_BLLI_IE  Blli;
+  ATM_BHLI_IE  Bhli;
+} ATM_PVC_SAP, *PATM_PVC_SAP;
+
+/* ATM_QOS_CLASS_IE constants */
+#define QOS_CLASS0				                0x00
+#define QOS_CLASS1				                0x01
+#define QOS_CLASS2				                0x02
+#define QOS_CLASS3				                0x03
+#define QOS_CLASS4				                0x04
+
+typedef struct _ATM_QOS_CLASS_IE {
+  UCHAR  QOSClassForward;
+  UCHAR  QOSClassBackward;
+} ATM_QOS_CLASS_IE, *PATM_QOS_CLASS_IE;
+
+typedef struct _ATM_RAW_IE {
+  ULONG  RawIELength;
+  ULONG  RawIEType;
+  UCHAR  RawIEValue[1];
+} ATM_RAW_IE, *PATM_RAW_IE;
+
+typedef struct _ATM_SAP {
+  ATM_BLLI_IE  Blli;
+  ATM_BHLI_IE  Bhli;
+  ULONG  NumberOfAddresses;
+  UCHAR  Addresses[1];
+} ATM_SAP, *PATM_SAP;
+
+typedef struct _ATM_TRAFFIC_DESCRIPTOR {
+  ULONG  PeakCellRateCLP0;
+  ULONG  PeakCellRateCLP01;
+  ULONG  SustainableCellRateCLP0;
+  ULONG  SustainableCellRateCLP01;
+  ULONG  MaximumBurstSizeCLP0;
+  ULONG  MaximumBurstSizeCLP01;
+  BOOLEAN  BestEffort;
+  BOOLEAN  Tagging;
+} ATM_TRAFFIC_DESCRIPTOR, *PATM_TRAFFIC_DESCRIPTOR;
+
+typedef struct _ATM_TRAFFIC_DESCRIPTOR_IE {
+  ATM_TRAFFIC_DESCRIPTOR  ForwardTD;
+  ATM_TRAFFIC_DESCRIPTOR  BackwardTD;
+  BOOLEAN  BestEffort;
+} ATM_TRAFFIC_DESCRIPTOR_IE, *PATM_TRAFFIC_DESCRIPTOR_IE;
+
+/* ATM_TRANSIT_NETWORK_SELECTION_IE.TypeOfNetworkId constants */
+#define TNS_TYPE_NATIONAL			            0x40
+
+/* ATM_TRANSIT_NETWORK_SELECTION_IE.NetworkIdPlan constants */
+#define TNS_PLAN_CARRIER_ID_CODE	        0x01
+
+typedef struct _ATM_TRANSIT_NETWORK_SELECTION_IE {
+  UCHAR  TypeOfNetworkId;
+  UCHAR  NetworkIdPlan;
+  UCHAR  NetworkIdLength;
+  UCHAR  NetworkId[1];
+} ATM_TRANSIT_NETWORK_SELECTION_IE, *PATM_TRANSIT_NETWORK_SELECTION_IE;
+
+typedef struct _ATM_LIJ_CALLID_IE {
+	ULONG  Identifier;
+} ATM_LIJ_CALLID_IE, *PATM_LIJ_CALLID_IE;
+
+/* Q2931_ADD_PVC.Flags constants */
+#define CO_FLAG_SIGNALING_VC              0x00000001
+#define CO_FLAG_NO_DEST_SAP               0x00000002
+
+typedef struct _Q2931_ADD_PVC {
+  ATM_ADDRESS  CalledParty;
+  ATM_ADDRESS  CallingParty;
+  ATM_VPIVCI  ConnectionId;
+  ATM_AAL_TYPE  AALType;
+  ATM_FLOW_PARAMETERS  ForwardFP;
+  ATM_FLOW_PARAMETERS  BackwardFP;
+  ULONG  Flags;
+  ATM_PVC_SAP  LocalSap;
+  ATM_PVC_SAP  DestinationSap;
+  BOOLEAN  LIJIdPresent;
+  ATM_LIJ_CALLID_IE  LIJId;
+} Q2931_ADD_PVC, *PQ2931_ADD_PVC;
+
+typedef struct _Q2931_DELETE_PVC {
+  ATM_VPIVCI  ConnectionId;
+} Q2931_DELETE_PVC, *PQ2931_DELETE_PVC;
+
+typedef ATM_ADDRESS	ATM_CALLED_PARTY_NUMBER_IE;
+typedef ATM_ADDRESS	ATM_CALLED_PARTY_SUBADDRESS_IE;
+typedef ATM_ADDRESS	ATM_CALLING_PARTY_SUBADDRESS_IE;
+
+typedef struct _Q2931_CALLMGR_PARAMETERS {
+  ATM_ADDRESS  CalledParty;
+  ATM_ADDRESS  CallingParty;
+  ULONG  InfoElementCount;
+  UCHAR  InfoElements[1];
+} Q2931_CALLMGR_PARAMETERS, *PQ2931_CALLMGR_PARAMETERS;
+
+typedef struct _ATM_VC_RATES_SUPPORTED {
+  ULONG  MinCellRate;
+  ULONG  MaxCellRate;
+} ATM_VC_RATES_SUPPORTED, *PATM_VC_RATES_SUPPORTED;
+
+typedef ULONG ATM_SERVICE_REGISTRY_TYPE;
+
+/* ATM_SERVICE_ADDRESS_LIST.ServiceRegistryType constants */
+#define ATM_SERVICE_REGISTRY_LECS		      1
+#define ATM_SERVICE_REGISTRY_ANS		      2
+
+typedef struct _ATM_SERVICE_ADDRESS_LIST {
+  ATM_SERVICE_REGISTRY_TYPE  ServiceRegistryType;
+  ULONG  NumberOfAddressesAvailable;
+  ULONG  NumberOfAddressesReturned;
+  ATM_ADDRESS  Address[1];
+} ATM_SERVICE_ADDRESS_LIST, *PATM_SERVICE_ADDRESS_LIST;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __ATM_H */
Index: Daodan/MinGW/include/ddk/batclass.h
===================================================================
--- Daodan/MinGW/include/ddk/batclass.h	(revision 1046)
+++ Daodan/MinGW/include/ddk/batclass.h	(revision 1046)
@@ -0,0 +1,298 @@
+/*
+ * batclass.h
+ *
+ * Battery class driver interface
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __BATCLASS_H
+#define __BATCLASS_H
+
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "ntddk.h"
+
+#if defined(_BATTERYCLASS_)
+  #define BCLASSAPI DECLSPEC_EXPORT
+#else
+  #define BCLASSAPI DECLSPEC_IMPORT
+#endif
+
+
+/* Battery device GUIDs */
+
+DEFINE_GUID(GUID_DEVICE_BATTERY,
+  0x72631e54L, 0x78A4, 0x11d0, 0xbc, 0xf7, 0x00, 0xaa, 0x00, 0xb7, 0xb3, 0x2a);
+
+DEFINE_GUID(BATTERY_STATUS_WMI_GUID,
+  0xfc4670d1, 0xebbf, 0x416e, 0x87, 0xce, 0x37, 0x4a, 0x4e, 0xbc, 0x11, 0x1a);
+
+DEFINE_GUID(BATTERY_RUNTIME_WMI_GUID,
+  0x535a3767, 0x1ac2, 0x49bc, 0xa0, 0x77, 0x3f, 0x7a, 0x02, 0xe4, 0x0a, 0xec);
+
+DEFINE_GUID(BATTERY_TEMPERATURE_WMI_GUID,
+  0x1a52a14d, 0xadce, 0x4a44, 0x9a, 0x3e, 0xc8, 0xd8, 0xf1, 0x5f, 0xf2, 0xc2);
+
+DEFINE_GUID(BATTERY_FULL_CHARGED_CAPACITY_WMI_GUID,
+  0x40b40565, 0x96f7, 0x4435, 0x86, 0x94, 0x97, 0xe0, 0xe4, 0x39, 0x59, 0x05);
+
+DEFINE_GUID(BATTERY_CYCLE_COUNT_WMI_GUID,
+  0xef98db24, 0x0014, 0x4c25, 0xa5, 0x0b, 0xc7, 0x24, 0xae, 0x5c, 0xd3, 0x71);
+
+DEFINE_GUID(BATTERY_STATIC_DATA_WMI_GUID,
+  0x05e1e463, 0xe4e2, 0x4ea9, 0x80, 0xcb, 0x9b, 0xd4, 0xb3, 0xca, 0x06, 0x55);
+
+DEFINE_GUID(BATTERY_STATUS_CHANGE_WMI_GUID,
+  0xcddfa0c3, 0x7c5b, 0x4e43, 0xa0, 0x34, 0x05, 0x9f, 0xa5, 0xb8, 0x43, 0x64);
+
+DEFINE_GUID(BATTERY_TAG_CHANGE_WMI_GUID,
+  0x5e1f6e19, 0x8786, 0x4d23, 0x94, 0xfc, 0x9e, 0x74, 0x6b, 0xd5, 0xd8, 0x88);
+
+
+/* BATTERY_INFORMATION.Capabilities constants */
+#define BATTERY_SET_CHARGE_SUPPORTED      0x00000001
+#define BATTERY_SET_DISCHARGE_SUPPORTED   0x00000002
+#define BATTERY_SET_RESUME_SUPPORTED      0x00000004
+#define BATTERY_IS_SHORT_TERM             0x20000000
+#define BATTERY_CAPACITY_RELATIVE         0x40000000
+#define BATTERY_SYSTEM_BATTERY            0x80000000
+
+typedef struct _BATTERY_INFORMATION {
+  ULONG  Capabilities;
+  UCHAR  Technology;
+  UCHAR  Reserved[3];
+  UCHAR  Chemistry[4];
+  ULONG  DesignedCapacity;
+  ULONG  FullChargedCapacity;
+  ULONG  DefaultAlert1;
+  ULONG  DefaultAlert2;
+  ULONG  CriticalBias;
+  ULONG  CycleCount;
+} BATTERY_INFORMATION, *PBATTERY_INFORMATION;
+
+typedef struct _BATTERY_MANUFACTURE_DATE {
+  UCHAR  Day;
+  UCHAR  Month;
+  USHORT  Year;
+} BATTERY_MANUFACTURE_DATE, *PBATTERY_MANUFACTURE_DATE;
+
+typedef struct _BATTERY_NOTIFY {
+	ULONG  PowerState;
+	ULONG  LowCapacity;
+	ULONG  HighCapacity;
+} BATTERY_NOTIFY, *PBATTERY_NOTIFY;
+
+/* BATTERY_STATUS.PowerState flags */
+#define BATTERY_POWER_ON_LINE             0x00000001
+#define BATTERY_DISCHARGING               0x00000002
+#define BATTERY_CHARGING                  0x00000004
+#define BATTERY_CRITICAL                  0x00000008
+
+/* BATTERY_STATUS.Voltage constant */
+#define BATTERY_UNKNOWN_VOLTAGE           0xFFFFFFFF
+
+/* BATTERY_STATUS.Rate constant */
+#define BATTERY_UNKNOWN_RATE              0x80000000
+
+typedef struct _BATTERY_STATUS {
+  ULONG  PowerState;
+  ULONG  Capacity;
+  ULONG  Voltage;
+  LONG  Rate;
+} BATTERY_STATUS, *PBATTERY_STATUS;
+
+/* BATTERY_INFORMATION.Capacity constants */
+#define BATTERY_UNKNOWN_CAPACITY          0xFFFFFFFF
+
+typedef enum _BATTERY_QUERY_INFORMATION_LEVEL {
+  BatteryInformation = 0,
+  BatteryGranularityInformation,
+  BatteryTemperature,
+  BatteryEstimatedTime,
+  BatteryDeviceName,
+  BatteryManufactureDate,
+  BatteryManufactureName,
+  BatteryUniqueID,
+  BatterySerialNumber
+} BATTERY_QUERY_INFORMATION_LEVEL;
+
+/* BatteryEstimatedTime constant */
+#define BATTERY_UNKNOWN_TIME              0x80000000
+
+/* NTSTATUS possibly returned by BCLASS_QUERY_STATUS */
+#define BATTERY_TAG_INVALID 0
+
+typedef struct _BATTERY_QUERY_INFORMATION {
+  ULONG  BatteryTag;
+  BATTERY_QUERY_INFORMATION_LEVEL  InformationLevel;
+  LONG  AtRate;
+} BATTERY_QUERY_INFORMATION, *PBATTERY_QUERY_INFORMATION;
+
+typedef enum _BATTERY_SET_INFORMATION_LEVEL {
+  BatteryCriticalBias = 0,
+  BatteryCharge,
+  BatteryDischarge
+} BATTERY_SET_INFORMATION_LEVEL;
+
+#define MAX_BATTERY_STRING_SIZE           128
+
+typedef struct _BATTERY_SET_INFORMATION {
+	ULONG  BatteryTag;
+	BATTERY_SET_INFORMATION_LEVEL  InformationLevel;
+	UCHAR  Buffer[1];
+} BATTERY_SET_INFORMATION, *PBATTERY_SET_INFORMATION;
+
+typedef struct _BATTERY_WAIT_STATUS {
+	ULONG  BatteryTag;
+	ULONG  Timeout;
+	ULONG  PowerState;
+	ULONG  LowCapacity;
+	ULONG  HighCapacity;
+} BATTERY_WAIT_STATUS, *PBATTERY_WAIT_STATUS;
+
+
+#define IOCTL_BATTERY_QUERY_TAG \
+  CTL_CODE(FILE_DEVICE_BATTERY, 0x10, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+#define IOCTL_BATTERY_QUERY_INFORMATION \
+  CTL_CODE(FILE_DEVICE_BATTERY, 0x11, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+#define IOCTL_BATTERY_SET_INFORMATION \
+  CTL_CODE(FILE_DEVICE_BATTERY, 0x12, METHOD_BUFFERED, FILE_WRITE_ACCESS)
+
+#define IOCTL_BATTERY_QUERY_STATUS \
+  CTL_CODE(FILE_DEVICE_BATTERY, 0x13, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+
+typedef NTSTATUS DDKAPI
+(*BCLASS_DISABLE_STATUS_NOTIFY)(
+  /*IN*/ PVOID  Context);
+
+typedef NTSTATUS DDKAPI
+(*BCLASS_QUERY_INFORMATION)(
+  /*IN*/ PVOID  Context,
+  /*IN*/ ULONG  BatteryTag,
+  /*IN*/ BATTERY_QUERY_INFORMATION_LEVEL  Level,
+  /*IN*/ LONG  AtRate  /*OPTIONAL*/,
+  /*OUT*/ PVOID  Buffer,
+  /*IN*/ ULONG  BufferLength,
+  /*OUT*/ PULONG  ReturnedLength);
+
+typedef NTSTATUS DDKAPI
+(*BCLASS_QUERY_STATUS)(
+  /*IN*/ PVOID  Context,
+  /*IN*/ ULONG  BatteryTag,
+  /*OUT*/ PBATTERY_STATUS  BatteryStatus);
+
+typedef NTSTATUS DDKAPI
+(*BCLASS_QUERY_TAG)(
+  /*IN*/ PVOID  Context,
+  /*OUT*/ PULONG  BatteryTag);
+
+typedef NTSTATUS DDKAPI
+(*BCLASS_SET_INFORMATION)(
+  /*IN*/ PVOID  Context,
+  /*IN*/ ULONG  BatteryTag,
+  /*IN*/ BATTERY_SET_INFORMATION_LEVEL  Level,
+  /*IN*/ PVOID  Buffer  /*OPTIONAL*/);
+
+typedef NTSTATUS DDKAPI
+(*BCLASS_SET_STATUS_NOTIFY)(
+  /*IN*/ PVOID  Context,
+  /*IN*/ ULONG  BatteryTag,
+  /*IN*/ PBATTERY_NOTIFY  BatteryNotify);
+
+
+typedef struct _BATTERY_MINIPORT_INFO {
+  USHORT  MajorVersion;
+  USHORT  MinorVersion;
+  PVOID  Context;
+  BCLASS_QUERY_TAG  QueryTag;
+  BCLASS_QUERY_INFORMATION  QueryInformation;
+  BCLASS_SET_INFORMATION  SetInformation;
+  BCLASS_QUERY_STATUS  QueryStatus;
+  BCLASS_SET_STATUS_NOTIFY  SetStatusNotify;
+  BCLASS_DISABLE_STATUS_NOTIFY  DisableStatusNotify;
+  PDEVICE_OBJECT  Pdo;
+  PUNICODE_STRING  DeviceName;
+} BATTERY_MINIPORT_INFO, *PBATTERY_MINIPORT_INFO;
+
+/* BATTERY_MINIPORT_INFO.XxxVersion */
+#define BATTERY_CLASS_MAJOR_VERSION       0x0001
+#define BATTERY_CLASS_MINOR_VERSION       0x0000
+
+
+BCLASSAPI
+NTSTATUS
+DDKAPI
+BatteryClassInitializeDevice(
+  /*IN*/ PBATTERY_MINIPORT_INFO  MiniportInfo,
+  /*IN*/ PVOID  *ClassData);
+
+BCLASSAPI
+NTSTATUS
+DDKAPI
+BatteryClassIoctl(
+  /*IN*/ PVOID  ClassData,
+  /*IN*/ PIRP  Irp);
+
+BCLASSAPI
+NTSTATUS
+DDKAPI
+BatteryClassQueryWmiDataBlock(
+  /*IN*/ PVOID  ClassData,
+  /*IN*/ PDEVICE_OBJECT  DeviceObject,
+  /*IN*/ PIRP  Irp,
+  /*IN*/ ULONG  GuidIndex,
+  /*IN OUT*/ PULONG  InstanceLengthArray,
+  /*IN*/ ULONG  OutBufferSize,
+  /*OUT*/ PUCHAR  Buffer);
+
+BCLASSAPI
+NTSTATUS
+DDKAPI
+BatteryClassStatusNotify(
+  /*IN*/ PVOID  ClassData);
+
+BCLASSAPI
+NTSTATUS
+DDKAPI
+BatteryClassSystemControl(
+  /*IN*/ PVOID  ClassData,
+  /*IN*/ PWMILIB_CONTEXT  WmiLibContext,
+  /*IN*/ PDEVICE_OBJECT  DeviceObject,
+  /*IN*/ PIRP  Irp,
+  /*OUT*/ PSYSCTL_IRP_DISPOSITION  Disposition);
+
+BCLASSAPI
+NTSTATUS
+DDKAPI
+BatteryClassUnload(
+  /*IN*/ PVOID  ClassData);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __BATCLASS_H */
Index: Daodan/MinGW/include/ddk/cfg.h
===================================================================
--- Daodan/MinGW/include/ddk/cfg.h	(revision 1046)
+++ Daodan/MinGW/include/ddk/cfg.h	(revision 1046)
@@ -0,0 +1,139 @@
+/*
+ * cfg.h
+ *
+ * PnP Configuration Manager shared definitions between user mode and kernel mode code
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __CFG_H
+#define __CFG_H
+
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define CM_PROB_NOT_CONFIGURED		  				0x00000001
+#define CM_PROB_DEVLOADER_FAILED            0x00000002
+#define CM_PROB_OUT_OF_MEMORY               0x00000003
+#define CM_PROB_ENTRY_IS_WRONG_TYPE         0x00000004
+#define CM_PROB_LACKED_ARBITRATOR           0x00000005
+#define CM_PROB_BOOT_CONFIG_CONFLICT        0x00000006
+#define CM_PROB_FAILED_FILTER               0x00000007
+#define CM_PROB_DEVLOADER_NOT_FOUND         0x00000008
+#define CM_PROB_INVALID_DATA                0x00000009
+#define CM_PROB_FAILED_START                0x0000000A
+#define CM_PROB_LIAR                        0x0000000B
+#define CM_PROB_NORMAL_CONFLICT             0x0000000C
+#define CM_PROB_NOT_VERIFIED                0x0000000D
+#define CM_PROB_NEED_RESTART                0x0000000E
+#define CM_PROB_REENUMERATION               0x0000000F
+#define CM_PROB_PARTIAL_LOG_CONF            0x00000010
+#define CM_PROB_UNKNOWN_RESOURCE            0x00000011
+#define CM_PROB_REINSTALL                   0x00000012
+#define CM_PROB_REGISTRY                    0x00000013
+#define CM_PROB_VXDLDR                      0x00000014
+#define CM_PROB_WILL_BE_REMOVED             0x00000015
+#define CM_PROB_DISABLED                    0x00000016
+#define CM_PROB_DEVLOADER_NOT_READY         0x00000017
+#define CM_PROB_DEVICE_NOT_THERE            0x00000018
+#define CM_PROB_MOVED                       0x00000019
+#define CM_PROB_TOO_EARLY                   0x0000001A
+#define CM_PROB_NO_VALID_LOG_CONF           0x0000001B
+#define CM_PROB_FAILED_INSTALL              0x0000001C
+#define CM_PROB_HARDWARE_DISABLED           0x0000001D
+#define CM_PROB_CANT_SHARE_IRQ              0x0000001E
+#define CM_PROB_FAILED_ADD                  0x0000001F
+#define CM_PROB_DISABLED_SERVICE          	0x00000020
+#define CM_PROB_TRANSLATION_FAILED        	0x00000021
+#define CM_PROB_NO_SOFTCONFIG             	0x00000022
+#define CM_PROB_BIOS_TABLE                	0x00000023
+#define CM_PROB_IRQ_TRANSLATION_FAILED    	0x00000024
+#define CM_PROB_FAILED_DRIVER_ENTRY       	0x00000025
+#define CM_PROB_DRIVER_FAILED_PRIOR_UNLOAD	0x00000026
+#define CM_PROB_DRIVER_FAILED_LOAD          0x00000027
+#define CM_PROB_DRIVER_SERVICE_KEY_INVALID  0x00000028
+#define CM_PROB_LEGACY_SERVICE_NO_DEVICES   0x00000029
+#define CM_PROB_DUPLICATE_DEVICE            0x0000002A
+#define CM_PROB_FAILED_POST_START           0x0000002B
+#define CM_PROB_HALTED                      0x0000002C
+#define CM_PROB_PHANTOM                     0x0000002D
+#define CM_PROB_SYSTEM_SHUTDOWN             0x0000002E
+#define CM_PROB_HELD_FOR_EJECT              0x0000002F
+#define CM_PROB_DRIVER_BLOCKED              0x00000030
+#define CM_PROB_REGISTRY_TOO_LARGE        	0x00000031
+
+#define LCPRI_FORCECONFIG                 0x00000000
+#define LCPRI_BOOTCONFIG                  0x00000001
+#define LCPRI_DESIRED                     0x00002000
+#define LCPRI_NORMAL                      0x00003000
+#define LCPRI_LASTBESTCONFIG              0x00003FFF
+#define LCPRI_SUBOPTIMAL                  0x00005000
+#define LCPRI_LASTSOFTCONFIG              0x00007FFF
+#define LCPRI_RESTART                     0x00008000
+#define LCPRI_REBOOT                      0x00009000
+#define LCPRI_POWEROFF                    0x0000A000
+#define LCPRI_HARDRECONFIG                0x0000C000
+#define LCPRI_HARDWIRED                   0x0000E000
+#define LCPRI_IMPOSSIBLE                  0x0000F000
+#define LCPRI_DISABLED                    0x0000FFFF
+#define MAX_LCPRI                         0x0000FFFF
+
+#define DN_ROOT_ENUMERATED	0x00000001	/* Was enumerated by ROOT */
+#define DN_DRIVER_LOADED	0x00000002	/* Has Register_Device_Driver */
+#define DN_ENUM_LOADED		0x00000004	/* Has Register_Enumerator */
+#define DN_STARTED		0x00000008	/* Is currently configured */
+#define DN_MANUAL		0x00000010	/* Manually installed */
+#define DN_NEED_TO_ENUM		0x00000020	/* May need reenumeration */
+#define DN_NOT_FIRST_TIME	0x00000040	/* Has received a config */
+#define DN_HARDWARE_ENUM	0x00000080	/* Enum generates hardware ID */
+#define DN_LIAR			0x00000100	/* Lied about can reconfig once */
+#define DN_HAS_MARK		0x00000200	/* Not CM_Create_DevNode lately */
+#define DN_HAS_PROBLEM		0x00000400	/* Need device installer */
+#define DN_FILTERED		0x00000800	/* Is filtered */
+#define DN_MOVED		0x00001000	/* Has been moved */
+#define DN_DISABLEABLE		0x00002000	/* Can be rebalanced */
+#define DN_REMOVABLE		0x00004000	/* Can be removed */
+#define DN_PRIVATE_PROBLEM	0x00008000	/* Has a private problem */
+#define DN_MF_PARENT		0x00010000	/* Multi function parent */
+#define DN_MF_CHILD		0x00020000	/* Multi function child */
+#define DN_WILL_BE_REMOVED	0x00040000	/* Devnode is being removed */
+
+typedef enum _PNP_VETO_TYPE {
+  PNP_VetoTypeUnknown,
+  PNP_VetoLegacyDevice,
+  PNP_VetoPendingClose,
+  PNP_VetoWindowsApp,
+  PNP_VetoWindowsService,
+  PNP_VetoOutstandingOpen,
+  PNP_VetoDevice,
+  PNP_VetoDriver,
+  PNP_VetoIllegalDeviceRequest,
+  PNP_VetoInsufficientPower,
+  PNP_VetoNonDisableable,
+  PNP_VetoLegacyDriver
+} PNP_VETO_TYPE, *PPNP_VETO_TYPE;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __CFG_H */
Index: Daodan/MinGW/include/ddk/cfgmgr32.h
===================================================================
--- Daodan/MinGW/include/ddk/cfgmgr32.h	(revision 1046)
+++ Daodan/MinGW/include/ddk/cfgmgr32.h	(revision 1046)
@@ -0,0 +1,1533 @@
+/*
+ * cfgmgr32.h
+ *
+ * PnP configuration manager
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __CFGMGR32_H
+#define __CFGMGR32_H
+
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "ntddk.h"
+
+#if defined(_CFGMGR32_)
+#define CMAPI DECLSPEC_EXPORT
+#else
+#define CMAPI DECLSPEC_IMPORT
+#endif
+
+#include "cfg.h"
+
+#include <pshpack1.h>
+
+#define CR_SUCCESS                  			0x00000000
+#define CR_DEFAULT                        0x00000001
+#define CR_OUT_OF_MEMORY                  0x00000002
+#define CR_INVALID_POINTER                0x00000003
+#define CR_INVALID_FLAG                   0x00000004
+#define CR_INVALID_DEVNODE                0x00000005
+#define CR_INVALID_DEVINST          			CR_INVALID_DEVNODE
+#define CR_INVALID_RES_DES                0x00000006
+#define CR_INVALID_LOG_CONF               0x00000007
+#define CR_INVALID_ARBITRATOR             0x00000008
+#define CR_INVALID_NODELIST               0x00000009
+#define CR_DEVNODE_HAS_REQS               0x0000000A
+#define CR_DEVINST_HAS_REQS         			CR_DEVNODE_HAS_REQS
+#define CR_INVALID_RESOURCEID             0x0000000B
+#define CR_DLVXD_NOT_FOUND                0x0000000C
+#define CR_NO_SUCH_DEVNODE                0x0000000D
+#define CR_NO_SUCH_DEVINST          			CR_NO_SUCH_DEVNODE
+#define CR_NO_MORE_LOG_CONF               0x0000000E
+#define CR_NO_MORE_RES_DES                0x0000000F
+#define CR_ALREADY_SUCH_DEVNODE           0x00000010
+#define CR_ALREADY_SUCH_DEVINST     			CR_ALREADY_SUCH_DEVNODE
+#define CR_INVALID_RANGE_LIST             0x00000011
+#define CR_INVALID_RANGE                  0x00000012
+#define CR_FAILURE                        0x00000013
+#define CR_NO_SUCH_LOGICAL_DEV            0x00000014
+#define CR_CREATE_BLOCKED                 0x00000015
+#define CR_NOT_SYSTEM_VM                  0x00000016
+#define CR_REMOVE_VETOED                  0x00000017
+#define CR_APM_VETOED                     0x00000018
+#define CR_INVALID_LOAD_TYPE              0x00000019
+#define CR_BUFFER_SMALL                   0x0000001A
+#define CR_NO_ARBITRATOR                  0x0000001B
+#define CR_NO_REGISTRY_HANDLE             0x0000001C
+#define CR_REGISTRY_ERROR                 0x0000001D
+#define CR_INVALID_DEVICE_ID              0x0000001E
+#define CR_INVALID_DATA                   0x0000001F
+#define CR_INVALID_API                    0x00000020
+#define CR_DEVLOADER_NOT_READY            0x00000021
+#define CR_NEED_RESTART                   0x00000022
+#define CR_NO_MORE_HW_PROFILES            0x00000023
+#define CR_DEVICE_NOT_THERE               0x00000024
+#define CR_NO_SUCH_VALUE                  0x00000025
+#define CR_WRONG_TYPE                     0x00000026
+#define CR_INVALID_PRIORITY               0x00000027
+#define CR_NOT_DISABLEABLE                0x00000028
+#define CR_FREE_RESOURCES                 0x00000029
+#define CR_QUERY_VETOED                   0x0000002A
+#define CR_CANT_SHARE_IRQ                 0x0000002B
+#define CR_NO_DEPENDENT                   0x0000002C
+#define CR_SAME_RESOURCES                 0x0000002D
+#define CR_NO_SUCH_REGISTRY_KEY           0x0000002E
+#define CR_INVALID_MACHINENAME            0x0000002F
+#define CR_REMOTE_COMM_FAILURE            0x00000030
+#define CR_MACHINE_UNAVAILABLE            0x00000031
+#define CR_NO_CM_SERVICES                 0x00000032
+#define CR_ACCESS_DENIED                  0x00000033
+#define CR_CALL_NOT_IMPLEMENTED           0x00000034
+#define CR_INVALID_PROPERTY               0x00000035
+#define CR_DEVICE_INTERFACE_ACTIVE        0x00000036
+#define CR_NO_SUCH_DEVICE_INTERFACE       0x00000037
+#define CR_INVALID_REFERENCE_STRING       0x00000038
+#define CR_INVALID_CONFLICT_LIST          0x00000039
+#define CR_INVALID_INDEX                  0x0000003A
+#define CR_INVALID_STRUCTURE_SIZE         0x0000003B
+
+
+typedef DWORD RETURN_TYPE;
+typedef RETURN_TYPE	CONFIGRET;
+
+typedef HANDLE HMACHINE;
+typedef HMACHINE *PHMACHINE;
+
+typedef DWORD_PTR RES_DES;
+typedef RES_DES *PRES_DES;
+
+typedef DWORD_PTR RANGE_ELEMENT;
+typedef RANGE_ELEMENT *PRANGE_ELEMENT;
+
+typedef ULONG_PTR CONFLICT_LIST;
+typedef CONFLICT_LIST *PCONFLICT_LIST;
+
+typedef DWORD_PTR LOG_CONF;
+typedef LOG_CONF *PLOG_CONF;
+
+typedef ULONG PRIORITY;
+typedef PRIORITY *PPRIORITY;
+
+typedef DWORD_PTR RANGE_LIST;
+typedef RANGE_LIST *PRANGE_LIST;
+
+typedef DWORD DEVNODE, DEVINST;
+typedef DEVNODE *PDEVNODE, *PDEVINST;
+
+typedef CHAR *DEVNODEID_A, *DEVINSTID_A;
+typedef WCHAR *DEVNODEID_W, *DEVINSTID_W;
+
+#ifdef UNICODE
+typedef DEVNODEID_W DEVNODEID;
+typedef DEVINSTID_W DEVINSTID;
+#else
+typedef DEVNODEID_A DEVNODEID;
+typedef DEVINSTID_A DEVINSTID;
+#endif
+
+typedef ULONG REGDISPOSITION;
+
+typedef ULONG RESOURCEID;
+typedef RESOURCEID *PRESOURCEID;
+
+#define CM_RESDES_WIDTH_DEFAULT 					0x00000000
+#define CM_RESDES_WIDTH_32      					0x00000001
+#define CM_RESDES_WIDTH_64      					0x00000002
+#define CM_RESDES_WIDTH_BITS    					0x00000003
+
+
+#define MAX_CONFIG_VALUE      						9999
+#define MAX_INSTANCE_VALUE    						9999
+
+#define MAX_DEVICE_ID_LEN     						200
+#define MAX_DEVNODE_ID_LEN    						MAX_DEVICE_ID_LEN
+
+#define MAX_CLASS_NAME_LEN    						32
+#define MAX_GUID_STRING_LEN   						39
+#define MAX_PROFILE_LEN       						80
+
+
+#define ResType_All                       0x00000000
+#define ResType_None                      0x00000000
+#define ResType_Mem                       0x00000001
+#define ResType_IO                        0x00000002
+#define ResType_DMA                       0x00000003
+#define ResType_IRQ                       0x00000004
+#define ResType_DoNotUse                  0x00000005
+#define ResType_BusNumber                 0x00000006
+#define ResType_MAX                       0x00000006
+#define ResType_Ignored_Bit               0x00008000
+#define ResType_ClassSpecific             0x0000FFFF
+#define ResType_Reserved                  0x00008000
+#define ResType_DevicePrivate             0x00008001
+#define ResType_PcCardConfig              0x00008002
+#define ResType_MfCardConfig              0x00008003
+
+#define CM_GETIDLIST_FILTER_NONE          		0x00000000
+#define CM_GETIDLIST_FILTER_ENUMERATOR        0x00000001
+#define CM_GETIDLIST_FILTER_SERVICE           0x00000002
+#define CM_GETIDLIST_FILTER_EJECTRELATIONS    0x00000004
+#define CM_GETIDLIST_FILTER_REMOVALRELATIONS  0x00000008
+#define CM_GETIDLIST_FILTER_POWERRELATIONS    0x00000010
+#define CM_GETIDLIST_FILTER_BUSRELATIONS      0x00000020
+#define CM_GETIDLIST_DONOTGENERATE            0x10000040
+#define CM_GETIDLIST_FILTER_BITS              0x1000007F
+
+#define CM_GET_DEVICE_INTERFACE_LIST_PRESENT     	0x00000000
+#define CM_GET_DEVICE_INTERFACE_LIST_ALL_DEVICES 	0x00000001
+#define CM_GET_DEVICE_INTERFACE_LIST_BITS        	0x00000001
+
+
+typedef struct BusNumber_Des_s {
+  DWORD  BUSD_Count;
+  DWORD  BUSD_Type;
+  DWORD  BUSD_Flags;
+  ULONG  BUSD_Alloc_Base;
+  ULONG  BUSD_Alloc_End;
+} BUSNUMBER_DES, *PBUSNUMBER_DES;
+
+typedef struct BusNumber_Range_s {
+  ULONG  BUSR_Min;
+  ULONG  BUSR_Max;
+  ULONG  BUSR_nBusNumbers;
+  ULONG  BUSR_Flags;
+} BUSNUMBER_RANGE, *PBUSNUMBER_RANGE;
+
+#define BusNumberType_Range sizeof(BUSNUMBER_RANGE)
+
+typedef struct BusNumber_Resource_s {
+  BUSNUMBER_DES  BusNumber_Header;
+  BUSNUMBER_RANGE  BusNumber_Data[ANYSIZE_ARRAY];
+} BUSNUMBER_RESOURCE, *PBUSNUMBER_RESOURCE;
+
+typedef struct CS_Des_s {
+  DWORD  CSD_SignatureLength;
+  DWORD  CSD_LegacyDataOffset;
+  DWORD  CSD_LegacyDataSize;
+  DWORD  CSD_Flags;
+  GUID  CSD_ClassGuid;
+  BYTE  CSD_Signature[ANYSIZE_ARRAY];
+} CS_DES, *PCS_DES;
+
+typedef struct CS_Resource_s {
+  CS_DES  CS_Header;
+} CS_RESOURCE, *PCS_RESOURCE;
+
+typedef struct DevPrivate_Des_s {
+  DWORD  PD_Count;
+  DWORD  PD_Type;
+  DWORD  PD_Data1;
+  DWORD  PD_Data2;
+  DWORD  PD_Data3;
+  DWORD  PD_Flags;
+} DEVPRIVATE_DES, *PDEVPRIVATE_DES;
+
+typedef struct DevPrivate_Range_s {
+	DWORD  PR_Data1;
+	DWORD  PR_Data2;
+	DWORD  PR_Data3;
+} DEVPRIVATE_RANGE, *PDEVPRIVATE_RANGE;
+
+#define PType_Range sizeof(DEVPRIVATE_RANGE)
+
+typedef struct DevPrivate_Resource_s {
+  DEVPRIVATE_DES  PRV_Header;
+  DEVPRIVATE_RANGE  PRV_Data[ANYSIZE_ARRAY];
+} DEVPRIVATE_RESOURCE, *PDEVPRIVATE_RESOURCE;
+
+/* DMA_DES.DD_Flags constants and masks */
+#define mDD_Width         								0x3
+#define fDD_BYTE          								0x0
+#define fDD_WORD          								0x1
+#define fDD_DWORD         								0x2
+#define fDD_BYTE_AND_WORD 								0x3
+
+#define mDD_BusMaster     								0x4
+#define fDD_NoBusMaster   								0x0
+#define fDD_BusMaster     								0x4
+
+#define mDD_Type         									0x18
+#define fDD_TypeStandard 									0x00
+#define fDD_TypeA        									0x08
+#define fDD_TypeB        									0x10
+#define fDD_TypeF        									0x18
+
+typedef struct DMA_Des_s {
+  DWORD  DD_Count;
+  DWORD  DD_Type;
+  DWORD  DD_Flags;
+  ULONG  DD_Alloc_Chan;
+} DMA_DES, *PDMA_DES;
+
+typedef struct DMA_Range_s {
+  ULONG  DR_Min;
+  ULONG  DR_Max;
+  ULONG  DR_Flags;
+} DMA_RANGE, *PDMA_RANGE;
+
+#define DType_Range sizeof(DMA_RANGE)
+
+typedef struct DMA_Resource_s {
+  DMA_DES  DMA_Header;
+  DMA_RANGE  DMA_Data[ANYSIZE_ARRAY];
+} DMA_RESOURCE, *PDMA_RESOURCE;
+
+/* IO_DES.Type constants and masks */
+#define fIOD_PortType   									0x1
+#define fIOD_Memory     									0x0
+#define fIOD_IO         									0x1
+#define fIOD_DECODE     									0x00fc
+#define fIOD_10_BIT_DECODE    						0x0004
+#define fIOD_12_BIT_DECODE    						0x0008
+#define fIOD_16_BIT_DECODE    						0x0010
+#define fIOD_POSITIVE_DECODE  						0x0020
+#define fIOD_PASSIVE_DECODE   						0x0040
+#define fIOD_WINDOW_DECODE    						0x0080
+
+typedef struct IO_Des_s {
+  DWORD  IOD_Count;
+  DWORD  IOD_Type;
+  DWORDLONG  IOD_Alloc_Base;
+  DWORDLONG  IOD_Alloc_End;
+  DWORD  IOD_DesFlags;
+} IO_DES, *PIO_DES;
+
+/* IO_RANGE.IOR_Alias constants */
+#define IO_ALIAS_10_BIT_DECODE      			0x00000004
+#define IO_ALIAS_12_BIT_DECODE      			0x00000010
+#define IO_ALIAS_16_BIT_DECODE      			0x00000000
+#define IO_ALIAS_POSITIVE_DECODE    			0x000000FF
+
+typedef struct IO_Range_s {
+  DWORDLONG  IOR_Align;
+  DWORD  IOR_nPorts;
+  DWORDLONG  IOR_Min;
+  DWORDLONG  IOR_Max;
+  DWORD  IOR_RangeFlags;
+  DWORDLONG  IOR_Alias;
+} IO_RANGE, *PIO_RANGE;
+
+#define IOType_Range sizeof(IO_RANGE)
+
+typedef struct IO_Resource_s {
+  IO_DES  IO_Header;
+  IO_RANGE  IO_Data[ANYSIZE_ARRAY];
+} IO_RESOURCE, *PIO_RESOURCE;
+
+/* IRQ_DES.IRQD_flags constants */
+#define mIRQD_Share        								0x1
+#define fIRQD_Exclusive    								0x0
+#define fIRQD_Share        								0x1
+
+#define fIRQD_Share_Bit    								0
+#define fIRQD_Level_Bit    							  1
+
+#define mIRQD_Edge_Level   								0x2
+#define fIRQD_Level        								0x0
+#define fIRQD_Edge         								0x2
+
+typedef struct IRQ_Des_32_s {
+  DWORD  IRQD_Count;
+  DWORD  IRQD_Type;
+  DWORD  IRQD_Flags;
+  ULONG  IRQD_Alloc_Num;
+  ULONG32  IRQD_Affinity;
+} IRQ_DES_32, *PIRQ_DES_32;
+
+typedef struct IRQ_Des_64_s {
+  DWORD  IRQD_Count;
+  DWORD  IRQD_Type;
+  DWORD  IRQD_Flags;
+  ULONG  IRQD_Alloc_Num;
+  ULONG64  IRQD_Affinity;
+} IRQ_DES_64, *PIRQ_DES_64;
+
+#ifdef _WIN64
+typedef IRQ_DES_64 IRQ_DES;
+typedef PIRQ_DES_64 PIRQ_DES;
+#else
+typedef IRQ_DES_32 IRQ_DES;
+typedef PIRQ_DES_32 PIRQ_DES;
+#endif
+
+typedef struct IRQ_Range_s {
+  ULONG  IRQR_Min;
+  ULONG  IRQR_Max;
+  ULONG  IRQR_Flags;
+} IRQ_RANGE, *PIRQ_RANGE;
+
+#define IRQType_Range sizeof(IRQ_RANGE)
+
+typedef struct IRQ_Resource_s {
+  IRQ_DES  IRQ_Header;
+  IRQ_RANGE  IRQ_Data[ANYSIZE_ARRAY];
+} IRQ_RESOURCE, *PIRQ_RESOURCE;
+
+/* MEM_DES.MD_Flags constants */
+#define mMD_MemoryType              0x1
+#define fMD_MemoryType              mMD_MemoryType
+#define fMD_ROM                     0x0
+#define fMD_RAM                     0x1
+
+#define mMD_32_24                   0x2
+#define fMD_32_24                   mMD_32_24
+#define fMD_24                      0x0
+#define fMD_32                      0x2
+
+#define mMD_Prefetchable            0x4
+#define fMD_Prefetchable            mMD_Prefetchable
+#define fMD_Pref                    mMD_Prefetchable
+#define fMD_PrefetchDisallowed      0x0
+#define fMD_PrefetchAllowed         0x4
+
+#define mMD_Readable                0x8
+#define fMD_Readable                mMD_Readable
+#define fMD_ReadAllowed             0x0
+#define fMD_ReadDisallowed          0x8
+
+#define mMD_CombinedWrite           0x10
+#define fMD_CombinedWrite           mMD_CombinedWrite
+#define fMD_CombinedWriteDisallowed 0x0
+#define fMD_CombinedWriteAllowed    0x10
+
+#define mMD_Cacheable               0x20
+#define fMD_NonCacheable            0x0
+#define fMD_Cacheable               0x20
+
+typedef struct Mem_Des_s {
+  DWORD  MD_Count;
+  DWORD  MD_Type;
+  DWORDLONG  MD_Alloc_Base;
+  DWORDLONG  MD_Alloc_End;
+  DWORD  MD_Flags;
+  DWORD  MD_Reserved;
+} MEM_DES, *PMEM_DES;
+
+typedef struct Mem_Range_s {
+  DWORDLONG  MR_Align;
+  ULONG  MR_nBytes;
+  DWORDLONG  MR_Min;
+  DWORDLONG  MR_Max;
+  DWORD  MR_Flags;
+  DWORD  MR_Reserved;
+} MEM_RANGE, *PMEM_RANGE;
+
+#define MType_Range sizeof(MEM_RANGE)
+
+typedef struct Mem_Resource_s {
+  MEM_DES  MEM_Header;
+  MEM_RANGE  MEM_Data[ANYSIZE_ARRAY];
+} MEM_RESOURCE, *PMEM_RESOURCE;
+
+/* MFCARD_DES.PMF_Flags constants */
+#define fPMF_AUDIO_ENABLE   							0x8
+#define mPMF_AUDIO_ENABLE   							fPMF_AUDIO_ENABLE
+
+typedef struct MfCard_Des_s {
+  DWORD  PMF_Count;
+  DWORD  PMF_Type;
+  DWORD  PMF_Flags;
+  BYTE  PMF_ConfigOptions;
+  BYTE  PMF_IoResourceIndex;
+  BYTE  PMF_Reserved[2];
+  DWORD  PMF_ConfigRegisterBase;
+} MFCARD_DES, *PMFCARD_DES;
+
+typedef struct MfCard_Resource_s {
+  MFCARD_DES  MfCard_Header;
+} MFCARD_RESOURCE, *PMFCARD_RESOURCE;
+
+/* PCCARD_DES.PCD_Flags constants */
+
+typedef struct PcCard_Des_s {
+  DWORD  PCD_Count;
+  DWORD  PCD_Type;
+  DWORD  PCD_Flags;
+  BYTE  PCD_ConfigIndex;
+  BYTE  PCD_Reserved[3];
+  DWORD  PCD_MemoryCardBase1;
+  DWORD  PCD_MemoryCardBase2;
+} PCCARD_DES, *PPCCARD_DES;
+
+#define mPCD_IO_8_16        							0x1
+#define fPCD_IO_8           							0x0
+#define fPCD_IO_16          							0x1
+#define mPCD_MEM_8_16       							0x2
+#define fPCD_MEM_8          							0x0
+#define fPCD_MEM_16         							0x2
+#define mPCD_MEM_A_C        							0xC
+#define fPCD_MEM1_A         							0x4
+#define fPCD_MEM2_A         							0x8
+#define fPCD_IO_ZW_8        							0x10
+#define fPCD_IO_SRC_16      							0x20
+#define fPCD_IO_WS_16       							0x40
+#define mPCD_MEM_WS         							0x300
+#define fPCD_MEM_WS_ONE     							0x100
+#define fPCD_MEM_WS_TWO     							0x200
+#define fPCD_MEM_WS_THREE   							0x300
+
+#define fPCD_MEM_A          							0x4
+
+#define fPCD_ATTRIBUTES_PER_WINDOW 				0x8000
+
+#define fPCD_IO1_16         							0x00010000
+#define fPCD_IO1_ZW_8       							0x00020000
+#define fPCD_IO1_SRC_16     							0x00040000
+#define fPCD_IO1_WS_16      							0x00080000
+
+#define fPCD_IO2_16         							0x00100000
+#define fPCD_IO2_ZW_8       							0x00200000
+#define fPCD_IO2_SRC_16     							0x00400000
+#define fPCD_IO2_WS_16      							0x00800000
+
+#define mPCD_MEM1_WS        							0x03000000
+#define fPCD_MEM1_WS_ONE    							0x01000000
+#define fPCD_MEM1_WS_TWO    							0x02000000
+#define fPCD_MEM1_WS_THREE  							0x03000000
+#define fPCD_MEM1_16        							0x04000000
+
+#define mPCD_MEM2_WS        							0x30000000
+#define fPCD_MEM2_WS_ONE    							0x10000000
+#define fPCD_MEM2_WS_TWO    							0x20000000
+#define fPCD_MEM2_WS_THREE  							0x30000000
+#define fPCD_MEM2_16        							0x40000000
+
+#define PCD_MAX_MEMORY   									2
+#define PCD_MAX_IO       									2
+
+typedef struct PcCard_Resource_s {
+  PCCARD_DES  PcCard_Header;
+} PCCARD_RESOURCE, *PPCCARD_RESOURCE;
+
+
+/* CONFLICT_DETAILS.CD.ulMask constants */
+#define CM_CDMASK_DEVINST      						0x00000001
+#define CM_CDMASK_RESDES       						0x00000002
+#define CM_CDMASK_FLAGS        						0x00000004
+#define CM_CDMASK_DESCRIPTION  						0x00000008
+#define CM_CDMASK_VALID        					  0x0000000F
+
+/* CONFLICT_DETAILS.CD.ulFlags constants */
+#define CM_CDFLAGS_DRIVER      						0x00000001
+#define CM_CDFLAGS_ROOT_OWNED  						0x00000002
+#define CM_CDFLAGS_RESERVED    						0x00000004
+
+typedef struct _CONFLICT_DETAILS_A {
+  ULONG  CD_ulSize;
+  ULONG  CD_ulMask;
+  DEVINST  CD_dnDevInst;
+  RES_DES  CD_rdResDes;
+  ULONG  CD_ulFlags;
+  CHAR  CD_szDescription[MAX_PATH];
+} CONFLICT_DETAILS_A , *PCONFLICT_DETAILS_A;
+
+typedef struct _CONFLICT_DETAILS_W {
+  ULONG  CD_ulSize;
+  ULONG  CD_ulMask;
+  DEVINST  CD_dnDevInst;
+  RES_DES  CD_rdResDes;
+  ULONG  CD_ulFlags;
+  WCHAR  CD_szDescription[MAX_PATH];
+} CONFLICT_DETAILS_W , *PCONFLICT_DETAILS_W;
+
+#ifdef UNICODE
+typedef CONFLICT_DETAILS_W CONFLICT_DETAILS;
+typedef PCONFLICT_DETAILS_W PCONFLICT_DETAILS;
+#else
+typedef CONFLICT_DETAILS_A CONFLICT_DETAILS;
+typedef PCONFLICT_DETAILS_A PCONFLICT_DETAILS;
+#endif
+
+
+
+/* CM_Add_Empty_Log_Conf.ulFlags constants */
+#define PRIORITY_EQUAL_FIRST  						0x00000008
+#define PRIORITY_EQUAL_LAST   						0x00000000
+#define PRIORITY_BIT          						0x00000008
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Add_Empty_Log_Conf(
+  /*OUT*/ PLOG_CONF  plcLogConf,
+  /*IN*/ DEVINST  dnDevInst,
+  /*IN*/ PRIORITY  Priority,
+  /*IN*/ ULONG  ulFlags);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Add_Empty_Log_Conf_Ex(
+  /*OUT*/ PLOG_CONF  plcLogConf,
+  /*IN*/ DEVINST  dnDevInst,
+  /*IN*/ PRIORITY  Priority,
+  /*IN*/ ULONG  ulFlags,
+  /*IN*/ HMACHINE  hMachine);
+
+/* CM_Add_ID.ulFlags constants */
+#define CM_ADD_ID_HARDWARE              	0x00000000
+#define CM_ADD_ID_COMPATIBLE              0x00000001
+#define CM_ADD_ID_BITS                    0x00000001
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Add_IDA(
+  /*IN*/ DEVINST  dnDevInst,
+  /*IN*/ PSTR  pszID,
+  /*IN*/ ULONG  ulFlags,
+  /*IN*/ HMACHINE  hMachine);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Add_ID_ExA(
+  /*IN*/ DEVINST  dnDevInst,
+  /*IN*/ PSTR  pszID,
+  /*IN*/ ULONG  ulFlags,
+  /*IN*/ HMACHINE  hMachine);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Add_ID_ExW(
+  /*IN*/ DEVINST  dnDevInst,
+  /*IN*/ PWSTR  pszID,
+  /*IN*/ ULONG  ulFlags,
+  /*IN*/ HMACHINE  hMachine);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Add_IDW(
+  /*IN*/ DEVINST  dnDevInst,
+  /*IN*/ PWSTR  pszID,
+  /*IN*/ ULONG  ulFlags,
+  /*IN*/ HMACHINE  hMachine);
+
+#ifdef UNICODE
+#define CM_Add_ID CM_Add_IDW
+#define CM_Add_ID_Ex CM_Add_ID_ExW
+#else
+#define CM_Add_ID CM_Add_IDA
+#define CM_Add_ID_Ex CM_Add_ID_ExA
+#endif /* UNICODE */
+
+/* FIXME: Obsolete CM_Add_Range */
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Add_Res_Des(
+  /*OUT*/ PRES_DES  prdResDes,
+  /*IN*/ LOG_CONF  lcLogConf,
+  /*IN*/ RESOURCEID  ResourceID,
+  /*IN*/ PCVOID  ResourceData,
+  /*IN*/ ULONG  ResourceLen,
+  /*IN*/ ULONG  ulFlags);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Add_Res_Des_Ex(
+  /*OUT*/ PRES_DES  prdResDes,
+  /*IN*/ LOG_CONF  lcLogConf,
+  /*IN*/ RESOURCEID  ResourceID,
+  /*IN*/ PCVOID  ResourceData,
+  /*IN*/ ULONG  ResourceLen,
+  /*IN*/ ULONG  ulFlags,
+  /*IN*/ HMACHINE  hMachine);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Connect_MachineA(
+  /*IN*/ PCSTR  UNCServerName,
+  /*OUT*/ PHMACHINE  phMachine);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Connect_MachineW(
+  /*IN*/ PCWSTR  UNCServerName,
+  /*OUT*/ PHMACHINE  phMachine);
+
+#ifdef UNICODE
+#define CM_Connect_Machine CM_Connect_MachineW
+#else
+#define CM_Connect_Machine CM_Connect_MachineA
+#endif /* UNICODE */
+
+/* FIXME: Obsolete CM_Create_DevNode */
+/* FIXME: Obsolete CM_Create_DevNodeEx */
+/* FIXME: Obsolete CM_Create_Range_List */
+/* FIXME: Obsolete CM_Delete_Class_Key */
+/* FIXME: Obsolete CM_Delete_Class_Key_Ex */
+/* FIXME: Obsolete CM_Delete_DevNode_Key */
+/* FIXME: Obsolete CM_Delete_DevNode_Key_Ex */
+/* FIXME: Obsolete CM_Delete_Range */
+/* FIXME: Obsolete CM_Detected_Resource_Conflict */
+/* FIXME: Obsolete CM_Detected_Resource_Conflict_Ex */
+/* FIXME: Obsolete CM_Disable_DevNode */
+/* FIXME: Obsolete CM_Disable_DevNodeEx */
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Disconnect_Machine(
+  /*IN*/ HMACHINE  hMachine);
+
+/* FIXME: Obsolete CM_Enable_DevNode */
+/* FIXME: Obsolete CM_Enable_DevNodeEx */
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Enumerate_Classes(
+  /*IN*/ ULONG  ulClassIndex,
+  /*OUT*/ LPGUID  ClassGuid,
+  /*IN*/ ULONG  ulFlags);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Enumerate_Classes_Ex(
+  /*IN*/ ULONG  ulClassIndex,
+  /*OUT*/ LPGUID  ClassGuid,
+  /*IN*/ ULONG  ulFlags,
+  /*IN*/ HMACHINE  hMachine);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Enumerate_EnumeratorsA(
+  /*IN*/ ULONG  ulEnumIndex,
+  /*OUT*/ PCHAR  Buffer,
+  /*IN OUT*/ PULONG  pulLength,
+  /*IN*/ ULONG  ulFlags);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Enumerate_Enumerators_ExA(
+  /*IN*/ ULONG  ulEnumIndex,
+  /*OUT*/ PCHAR  Buffer,
+  /*IN OUT*/ PULONG  pulLength,
+  /*IN*/ ULONG  ulFlags,
+  /*IN*/ HMACHINE  hMachine);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Enumerate_Enumerators_ExW(
+  /*IN*/ ULONG  ulEnumIndex,
+  /*OUT*/ PWCHAR  Buffer,
+  /*IN OUT*/ PULONG  pulLength,
+  /*IN*/ ULONG  ulFlags,
+  /*IN*/ HMACHINE  hMachine);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Enumerate_EnumeratorsW(
+  /*IN*/ ULONG  ulEnumIndex,
+  /*OUT*/ PWCHAR  Buffer,
+  /*IN OUT*/ PULONG  pulLength,
+  /*IN*/ ULONG  ulFlags);
+
+#ifdef UNICODE
+#define CM_Enumerate_Enumerators CM_Enumerate_EnumeratorsW
+#define CM_Enumerate_Enumerators_Ex CM_Enumerate_Enumerators_ExW
+#else
+#define CM_Enumerate_Enumerators CM_Enumerate_EnumeratorsA
+#define CM_Enumerate_Enumerators_Ex CM_Enumerate_Enumerators_ExW
+#endif /* UNICODE */
+
+/* FIXME: Obsolete CM_Find_Range */
+/* FIXME: Obsolete CM_First_Range */
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Free_Log_Conf(
+  /*IN*/ LOG_CONF  lcLogConfToBeFreed,
+  /*IN*/ ULONG  ulFlags);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Free_Log_Conf_Ex(
+  /*IN*/ LOG_CONF  lcLogConfToBeFreed,
+  /*IN*/ ULONG  ulFlags,
+  /*IN*/ HMACHINE  hMachine);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Free_Log_Conf_Handle(
+  /*IN*/ LOG_CONF  lcLogConf);
+
+/* FIXME: Obsolete CM_Free_Range_List */
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Free_Res_Des(
+  /*OUT*/ PRES_DES  prdResDes,
+  /*IN*/ RES_DES  rdResDes,
+  /*IN*/ ULONG  ulFlags);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Free_Res_Des_Ex(
+  /*OUT*/ PRES_DES  prdResDes,
+  /*IN*/ RES_DES  rdResDes,
+  /*IN*/ ULONG  ulFlags,
+  /*IN*/ HMACHINE  hMachine);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Free_Res_Des_Handle(
+  /*IN*/ RES_DES  rdResDes);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Free_Resource_Conflict_Handle(
+  /*IN*/ CONFLICT_LIST  clConflictList);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Child(
+  /*OUT*/ PDEVINST  pdnDevInst,
+  /*IN*/ DEVINST  dnDevInst,
+  /*IN*/ ULONG  ulFlags);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Child_Ex(
+  /*OUT*/ PDEVINST  pdnDevInst,
+  /*IN*/ DEVINST  dnDevInst,
+  /*IN*/ ULONG  ulFlags,
+  /*IN*/ HMACHINE  hMachine);
+
+/* FIXME: Obsolete CM_Get_Class_Name */
+/* FIXME: Obsolete CM_Get_Class_Name_Ex */
+/* FIXME: Obsolete CM_Get_Class_Key_Name */
+/* FIXME: Obsolete CM_Get_Class_Key_Name_Ex */
+/* FIXME: Obsolete CM_Get_Class_Registry_Property */
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Depth(
+  /*OUT*/ PULONG  pulDepth,
+  /*IN*/ DEVINST  dnDevInst,
+  /*IN*/ ULONG  ulFlags);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Depth_Ex(
+  /*OUT*/ PULONG  pulDepth,
+  /*IN*/ DEVINST  dnDevInst,
+  /*IN*/ ULONG  ulFlags,
+  /*IN*/ HMACHINE  hMachine);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Device_IDA(
+  /*IN*/ DEVINST  dnDevInst,
+  /*OUT*/ PCHAR  Buffer,
+  /*IN*/ ULONG  BufferLen,
+  /*IN*/ ULONG  ulFlags);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Device_ID_ExA(
+  /*IN*/ DEVINST  dnDevInst,
+  /*OUT*/ PCHAR  Buffer,
+  /*IN*/ ULONG  BufferLen,
+  /*IN*/ ULONG  ulFlags,
+  /*IN*/ HMACHINE  hMachine);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Device_ID_ExW(
+  /*IN*/ DEVINST  dnDevInst,
+  /*OUT*/ PWCHAR  Buffer,
+  /*IN*/ ULONG  BufferLen,
+  /*IN*/ ULONG  ulFlags,
+  /*IN*/ HMACHINE  hMachine);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Device_IDW(
+  /*IN*/ DEVINST  dnDevInst,
+  /*OUT*/ PWCHAR  Buffer,
+  /*IN*/ ULONG  BufferLen,
+  /*IN*/ ULONG  ulFlags);
+
+#ifdef UNICODE
+#define CM_Get_Device_ID CM_Get_Device_IDW
+#define CM_Get_Device_ID_Ex CM_Get_Device_ID_ExW
+#else
+#define CM_Get_Device_ID CM_Get_Device_IDA
+#define CM_Get_Device_ID_Ex CM_Get_Device_ID_ExW
+#endif /* UNICODE */
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Device_ID_ListA(
+  /*IN*/ PCSTR  pszFilter, /*OPTIONAL*/
+  /*OUT*/ PCHAR  Buffer,
+  /*IN*/ ULONG  BufferLen,
+  /*IN*/ ULONG  ulFlags);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Device_ID_List_ExA(
+  /*IN*/ PCSTR  pszFilter, /*OPTIONAL*/
+  /*OUT*/ PCHAR  Buffer,
+  /*IN*/ ULONG  BufferLen,
+  /*IN*/ ULONG  ulFlags,
+  /*IN*/ HMACHINE  hMachine);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Device_ID_List_ExW(
+  /*IN*/ PCWSTR  pszFilter, /*OPTIONAL*/
+  /*OUT*/ PWCHAR  Buffer,
+  /*IN*/ ULONG  BufferLen,
+  /*IN*/ ULONG  ulFlags,
+  /*IN*/ HMACHINE  hMachine);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Device_ID_ListW(
+  /*IN*/ PCWSTR  pszFilter, /*OPTIONAL*/
+  /*OUT*/ PWCHAR  Buffer,
+  /*IN*/ ULONG  BufferLen,
+  /*IN*/ ULONG  ulFlags);
+
+#ifdef UNICODE
+#define CM_Get_Device_ID_List CM_Get_Device_ID_ListW
+#define CM_Get_Device_ID_List_Ex CM_Get_Device_ID_List_ExW
+#else
+#define CM_Get_Device_ID_List CM_Get_Device_ID_ListA
+#define CM_Get_Device_ID_List_Ex CM_Get_Device_ID_List_ExA
+#endif /* UNICODE */
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Device_ID_List_SizeA(
+  /*OUT*/ PULONG  pulLen,
+  /*IN*/ PCSTR  pszFilter, /*OPTIONAL*/
+  /*IN*/ ULONG  ulFlags);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Device_ID_List_Size_ExA(
+  /*OUT*/ PULONG  pulLen,
+  /*IN*/ PCSTR  pszFilter, /*OPTIONAL*/
+  /*IN*/ ULONG  ulFlags,
+  /*IN*/ HMACHINE  hMachine);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Device_ID_List_Size_ExW(
+  /*OUT*/ PULONG  pulLen,
+  /*IN*/ PCWSTR  pszFilter, /*OPTIONAL*/
+  /*IN*/ ULONG  ulFlags,
+  /*IN*/ HMACHINE  hMachine);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Device_ID_List_SizeW(
+  /*OUT*/ PULONG  pulLen,
+  /*IN*/ PCWSTR  pszFilter, /*OPTIONAL*/
+  /*IN*/ ULONG  ulFlags);
+
+#ifdef UNICODE
+#define CM_Get_Device_ID_List_Size CM_Get_Device_ID_List_SizeW
+#define CM_Get_Device_ID_List_Size_Ex CM_Get_Device_ID_List_Size_ExW
+#else
+#define CM_Get_Device_ID_List_Size CM_Get_Device_ID_List_SizeA
+#define CM_Get_Device_ID_List_Size_Ex CM_Get_Device_ID_List_Size_ExA
+#endif /* UNICODE */
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Device_ID_Size(
+  /*OUT*/ PULONG  pulLen,
+  /*IN*/ DEVINST  dnDevInst,
+  /*IN*/ ULONG  ulFlags);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Device_ID_Size_Ex(
+  /*OUT*/ PULONG  pulLen,
+  /*IN*/ DEVINST  dnDevInst,
+  /*IN*/ ULONG  ulFlags,
+  /*IN*/ HMACHINE  hMachine);
+
+/* FIXME: Obsolete CM_Get_Device_Interface_Alias */
+/* FIXME: Obsolete CM_Get_Device_Interface_Alias_Ex */
+/* FIXME: Obsolete CM_Get_Device_Interface_List */
+/* FIXME: Obsolete CM_Get_Device_Interface_List_Ex */
+/* FIXME: Obsolete CM_Get_Device_Interface_List_Size */
+/* FIXME: Obsolete CM_Get_Device_Interface_List_Size_Ex */
+/* FIXME: Obsolete CM_Get_DevNode_Custom_Property */
+/* FIXME: Obsolete CM_Get_DevNode_Custom_Property_Ex */
+/* FIXME: Obsolete CM_Get_DevNode_Registry_Property */
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_DevNode_Status(
+  /*OUT*/ PULONG  pulStatus,
+  /*OUT*/ PULONG  pulProblemNumber,
+  /*IN*/ DEVINST  dnDevInst,
+  /*IN*/ ULONG  ulFlags);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_DevNode_Status_Ex(
+  /*OUT*/ PULONG  pulStatus,
+  /*OUT*/ PULONG  pulProblemNumber,
+  /*IN*/ DEVINST  dnDevInst,
+  /*IN*/ ULONG  ulFlags,
+  /*IN*/ HMACHINE  hMachine);
+
+#define CM_Get_DevInst_Status CM_Get_DevNode_Status
+#define CM_Get_DevInst_Status_Ex CM_Get_DevNode_Status_Ex
+
+/* CM_Get_First_Log_Conf.ulFlags constants */
+#define BASIC_LOG_CONF    0x00000000  /* Specifies the req list. */
+#define FILTERED_LOG_CONF 0x00000001  /* Specifies the filtered req list. */
+#define ALLOC_LOG_CONF    0x00000002  /* Specifies the Alloc Element. */
+#define BOOT_LOG_CONF     0x00000003  /* Specifies the RM Alloc Element. */
+#define FORCED_LOG_CONF   0x00000004  /* Specifies the Forced Log Conf */
+#define OVERRIDE_LOG_CONF 0x00000005  /* Specifies the Override req list. */
+#define NUM_LOG_CONF      0x00000006  /* Number of Log Conf type */
+#define LOG_CONF_BITS     0x00000007  /* The bits of the log conf type. */
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_First_Log_Conf(
+  /*OUT*/ PLOG_CONF  plcLogConf, /*OPTIONAL*/
+  /*IN*/ DEVINST  dnDevInst,
+  /*IN*/ ULONG  ulFlags);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_First_Log_Conf_Ex(
+  /*OUT*/ PLOG_CONF  plcLogConf, /*OPTIONAL*/
+  /*IN*/ DEVINST  dnDevInst,
+  /*IN*/ ULONG  ulFlags,
+  /*IN*/ HMACHINE  hMachine);
+
+/* FIXME: Obsolete CM_Get_Global_State */
+/* FIXME: Obsolete CM_Get_Global_State_Ex */
+/* FIXME: Obsolete CM_Get_Hardware_Profile_Info */
+/* FIXME: Obsolete CM_Get_Hardware_Profile_Info_Ex */
+/* FIXME: Obsolete CM_Get_HW_Prof_Flags */
+/* FIXME: Obsolete CM_Get_HW_Prof_Flags_Ex */
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Log_Conf_Priority(
+  /*IN*/ LOG_CONF  lcLogConf,
+  /*OUT*/ PPRIORITY  pPriority,
+  /*IN*/ ULONG  ulFlags);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Log_Conf_Priority_Ex(
+  /*IN*/ LOG_CONF  lcLogConf,
+  /*OUT*/ PPRIORITY  pPriority,
+  /*IN*/ ULONG  ulFlags,
+  /*IN*/ HMACHINE  hMachine);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Next_Log_Conf(
+  /*OUT*/ PLOG_CONF  plcLogConf, /*OPTIONAL*/
+  /*IN*/ LOG_CONF  lcLogConf,
+  /*IN*/ ULONG  ulFlags);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Next_Log_Conf_Ex(
+  /*OUT*/ PLOG_CONF  plcLogConf, /*OPTIONAL*/
+  /*IN*/ LOG_CONF  lcLogConf,
+  /*IN*/ ULONG  ulFlags,
+  /*IN*/ HMACHINE  hMachine);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Next_Res_Des(
+  /*OUT*/ PRES_DES  prdResDes,
+  /*IN*/ RES_DES  rdResDes,
+  /*IN*/ RESOURCEID  ForResource,
+  /*OUT*/ PRESOURCEID  pResourceID,
+  /*IN*/ ULONG  ulFlags);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Next_Res_Des_Ex(
+  /*OUT*/ PRES_DES  prdResDes,
+  /*IN*/ RES_DES  rdResDes,
+  /*IN*/ RESOURCEID  ForResource,
+  /*OUT*/ PRESOURCEID  pResourceID,
+  /*IN*/ ULONG  ulFlags,
+  /*IN*/ HMACHINE  hMachine);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Parent(
+  /*OUT*/ PDEVINST  pdnDevInst,
+  /*IN*/ DEVINST  dnDevInst,
+  /*IN*/ ULONG  ulFlags);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Parent_Ex(
+  /*OUT*/ PDEVINST  pdnDevInst,
+  /*IN*/ DEVINST  dnDevInst,
+  /*IN*/ ULONG  ulFlags,
+  /*IN*/ HMACHINE  hMachine);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Res_Des_Data(
+  /*IN*/ RES_DES  rdResDes,
+  /*OUT*/ PVOID  Buffer,
+  /*IN*/ ULONG  BufferLen,
+  /*IN*/ ULONG  ulFlags);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Res_Des_Data_Ex(
+  /*IN*/ RES_DES  rdResDes,
+  /*OUT*/ PVOID  Buffer,
+  /*IN*/ ULONG  BufferLen,
+  /*IN*/ ULONG  ulFlags,
+  /*IN*/ HMACHINE  hMachine);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Res_Des_Data_Size(
+  /*OUT*/ PULONG  pulSize,
+  /*IN*/ RES_DES  rdResDes,
+  /*IN*/ ULONG  ulFlags);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Res_Des_Data_Size_Ex(
+  /*OUT*/ PULONG  pulSize,
+  /*IN*/ RES_DES  rdResDes,
+  /*IN*/ ULONG  ulFlags,
+  /*IN*/ HMACHINE  hMachine);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Resource_Conflict_Count(
+  /*IN*/ CONFLICT_LIST  clConflictList,
+  /*OUT*/ PULONG  pulCount);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Resource_Conflict_DetailsA(
+  /*IN*/ CONFLICT_LIST  clConflictList,
+  /*IN*/ ULONG  ulIndex,
+  /*IN OUT*/ PCONFLICT_DETAILS_A  pConflictDetails);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Resource_Conflict_DetailsW(
+  /*IN*/ CONFLICT_LIST  clConflictList,
+  /*IN*/ ULONG  ulIndex,
+  /*IN OUT*/ PCONFLICT_DETAILS_W  pConflictDetails);
+
+#ifdef UNICODE
+#define CM_Get_Resource_Conflict_Details CM_Get_Resource_Conflict_DetailsW
+#else
+#define CM_Get_Resource_Conflict_Details CM_Get_Resource_Conflict_DetailsA
+#endif /* UNICODE */
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Sibling(
+  /*OUT*/ PDEVINST  pdnDevInst,
+  /*IN*/ DEVINST  DevInst,
+  /*IN*/ ULONG  ulFlags);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Sibling_Ex(
+  /*OUT*/ PDEVINST  pdnDevInst,
+  /*IN*/ DEVINST  DevInst,
+  /*IN*/ ULONG  ulFlags,
+  /*IN*/ HMACHINE  hMachine);
+
+CMAPI
+WORD
+WINAPI
+CM_Get_Version(
+  VOID);
+
+CMAPI
+WORD
+WINAPI
+CM_Get_Version_Ex(
+  /*IN*/ HMACHINE  hMachine);
+
+/* FIXME: Obsolete CM_Intersect_Range_List */
+/* FIXME: Obsolete CM_Invert_Range_List */
+/* FIXME: Obsolete CM_Is_Dock_Station_Present */
+/* FIXME: Obsolete CM_Is_Dock_Station_Present_Ex */
+
+/* CM_Locate_DevNode.ulFlags constants */
+#define CM_LOCATE_DEVNODE_NORMAL       		0x00000000
+#define CM_LOCATE_DEVNODE_PHANTOM      		0x00000001
+#define CM_LOCATE_DEVNODE_CANCELREMOVE 		0x00000002
+#define CM_LOCATE_DEVNODE_NOVALIDATION 		0x00000004
+#define CM_LOCATE_DEVNODE_BITS         		0x00000007
+
+#define CM_LOCATE_DEVINST_NORMAL       		CM_LOCATE_DEVNODE_NORMAL
+#define CM_LOCATE_DEVINST_PHANTOM      		CM_LOCATE_DEVNODE_PHANTOM
+#define CM_LOCATE_DEVINST_CANCELREMOVE 		CM_LOCATE_DEVNODE_CANCELREMOVE
+#define CM_LOCATE_DEVINST_NOVALIDATION 		CM_LOCATE_DEVNODE_NOVALIDATION
+#define CM_LOCATE_DEVINST_BITS         		CM_LOCATE_DEVNODE_BITS
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Locate_DevNodeA(
+  /*OUT*/ PDEVINST  pdnDevInst,
+  /*IN*/ DEVINSTID_A  pDeviceID, /*OPTIONAL*/
+  /*IN*/ ULONG  ulFlags);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Locate_DevNode_ExA(
+  /*OUT*/ PDEVINST  pdnDevInst,
+  /*IN*/ DEVINSTID_A  pDeviceID, /*OPTIONAL*/
+  /*IN*/ ULONG  ulFlags,
+  /*IN*/ HMACHINE  hMachine);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Locate_DevNode_ExW(
+  /*OUT*/ PDEVINST  pdnDevInst,
+  /*IN*/ DEVINSTID_W  pDeviceID, /*OPTIONAL*/
+  /*IN*/ ULONG  ulFlags,
+  /*IN*/ HMACHINE  hMachine);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Locate_DevNodeW(
+  /*OUT*/ PDEVINST  pdnDevInst,
+  /*IN*/ DEVINSTID_W  pDeviceID, /*OPTIONAL*/
+  /*IN*/ ULONG  ulFlags);
+
+#define CM_Locate_DevInstA CM_Locate_DevNodeA
+#define CM_Locate_DevInstW CM_Locate_DevNodeW
+#define CM_Locate_DevInst_ExA CM_Locate_DevNode_ExA
+#define CM_Locate_DevInst_ExW CM_Locate_DevNode_ExW
+
+#ifdef UNICODE
+#define CM_Locate_DevNode CM_Locate_DevNodeW
+#define CM_Locate_DevInst CM_Locate_DevNodeW
+#define CM_Locate_DevNode_Ex CM_Locate_DevNode_ExW
+#define CM_Locate_DevInst_Ex CM_Locate_DevNode_ExW
+#else
+#define CM_Locate_DevNode CM_Locate_DevNodeA
+#define CM_Locate_DevInst CM_Locate_DevNodeA
+#define CM_Locate_DevNode_Ex CM_Locate_DevNode_ExA
+#define CM_Locate_DevInst_Ex CM_Locate_DevNode_ExA
+#endif /* UNICODE */
+
+/* FIXME: Obsolete CM_Merge_Range_List */
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Modify_Res_Des(
+  /*OUT*/ PRES_DES  prdResDes,
+  /*IN*/ RES_DES  rdResDes,
+  /*IN*/ RESOURCEID  ResourceID,
+  /*IN*/ PCVOID  ResourceData,
+  /*IN*/ ULONG  ResourceLen,
+  /*IN*/ ULONG  ulFlags);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Modify_Res_Des_Ex(
+  /*OUT*/ PRES_DES  prdResDes,
+  /*IN*/ RES_DES  rdResDes,
+  /*IN*/ RESOURCEID  ResourceID,
+  /*IN*/ PCVOID  ResourceData,
+  /*IN*/ ULONG  ResourceLen,
+  /*IN*/ ULONG  ulFlags,
+  /*IN*/ HMACHINE  hMachine);
+
+/* FIXME: Obsolete CM_Move_DevNode */
+/* FIXME: Obsolete CM_Move_DevNode_Ex */
+/* FIXME: Obsolete CM_Next_Range */
+/* FIXME: Obsolete CM_Open_Class_Key */
+/* FIXME: Obsolete CM_Open_Class_Key_Ex */
+/* FIXME: Obsolete CM_Open_DevNode_Key */
+/* FIXME: Obsolete CM_Open_DevNode_Key_Ex */
+
+/* CM_Query_And_Remove_SubTree.ulFlags constants */
+#define CM_REMOVE_UI_OK             			0x00000000
+#define CM_REMOVE_UI_NOT_OK         			0x00000001
+#define CM_REMOVE_NO_RESTART        			0x00000002
+#define CM_REMOVE_BITS              			0x00000003
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Query_And_Remove_SubTreeA(
+  /*IN*/ DEVINST dnAncestor,
+  /*OUT*/ PPNP_VETO_TYPE pVetoType,
+  /*OUT*/ LPSTR pszVetoName,
+  /*IN*/ ULONG ulNameLength,
+  /*IN*/ ULONG ulFlags);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Query_And_Remove_SubTreeW(
+  /*IN*/ DEVINST dnAncestor,
+  /*OUT*/ PPNP_VETO_TYPE pVetoType,
+  /*OUT*/ LPWSTR pszVetoName,
+  /*IN*/ ULONG ulNameLength,
+  /*IN*/ ULONG ulFlags);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Query_And_Remove_SubTree_ExA(
+  /*IN*/ DEVINST dnAncestor,
+  /*OUT*/ PPNP_VETO_TYPE pVetoType,
+  /*OUT*/ LPSTR pszVetoName,
+  /*IN*/ ULONG ulNameLength,
+  /*IN*/ ULONG ulFlags,
+  /*IN*/ HMACHINE hMachine);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Query_And_Remove_SubTree_ExW(
+  /*IN*/ DEVINST dnAncestor,
+  /*OUT*/ PPNP_VETO_TYPE pVetoType,
+  /*OUT*/ LPWSTR pszVetoName,
+  /*IN*/ ULONG ulNameLength,
+  /*IN*/ ULONG ulFlags,
+  /*IN*/ HMACHINE hMachine);
+
+/* FIXME: Obsolete CM_Query_Arbitrator_Free_Data */
+/* FIXME: Obsolete CM_Query_Arbitrator_Free_Data_Ex */
+/* FIXME: Obsolete CM_Query_Arbitrator_Free_Size */
+/* FIXME: Obsolete CM_Query_Arbitrator_Free_Size_Ex */
+/* FIXME: Obsolete CM_Query_Arbitrator_Free_Size_Ex */
+/* FIXME: Obsolete CM_Query_Remove_SubTree */
+/* FIXME: Obsolete CM_Query_Remove_SubTree_Ex */
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Query_Resource_Conflict_List(
+  /*OUT*/ PCONFLICT_LIST  pclConflictList,
+  /*IN*/ DEVINST  dnDevInst,
+  /*IN*/ RESOURCEID  ResourceID,
+  /*IN*/ PCVOID  ResourceData,
+  /*IN*/ ULONG  ResourceLen,
+  /*IN*/ ULONG  ulFlags,
+  /*IN*/ HMACHINE  hMachine);
+
+/* CM_Reenumerate_DevNode.ulFlags constants */
+#define CM_REENUMERATE_NORMAL             0x00000000
+#define CM_REENUMERATE_SYNCHRONOUS        0x00000001
+#define CM_REENUMERATE_RETRY_INSTALLATION 0x00000002
+#define CM_REENUMERATE_ASYNCHRONOUS       0x00000004
+#define CM_REENUMERATE_BITS               0x00000007
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Reenumerate_DevNode(
+  /*IN*/ DEVINST  dnDevInst,
+  /*IN*/ ULONG  ulFlags);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Reenumerate_DevNode_Ex(
+  /*IN*/ DEVINST  dnDevInst,
+  /*IN*/ ULONG  ulFlags,
+  /*IN*/ HMACHINE  hMachine);
+
+#define CM_Reenumerate_DevInst CM_Reenumerate_DevNode
+#define CM_Reenumerate_DevInst_Ex CM_Reenumerate_DevNode_Ex
+
+/* FIXME: Obsolete CM_Register_Device_Driver */
+/* FIXME: Obsolete CM_Register_Device_Driver_Ex */
+/* FIXME: Obsolete CM_Register_Device_Interface */
+/* FIXME: Obsolete CM_Register_Device_Interface_Ex */
+/* FIXME: Obsolete CM_Remove_SubTree */
+/* FIXME: Obsolete CM_Remove_SubTree_Ex */
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Request_Device_EjectA(
+  /*IN*/ DEVINST  dnDevInst,
+  /*OUT*/ PPNP_VETO_TYPE  pVetoType,
+  /*OUT*/ LPSTR  pszVetoName,
+  /*IN*/ ULONG  ulNameLength,
+  /*IN*/ ULONG  ulFlags);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Request_Device_Eject_ExW(
+  /*IN*/ DEVINST  dnDevInst,
+  /*OUT*/ PPNP_VETO_TYPE  pVetoType,
+  /*OUT*/ LPWSTR  pszVetoName,
+  /*IN*/ ULONG  ulNameLength,
+  /*IN*/ ULONG  ulFlags,
+  /*IN*/ HMACHINE  hMachine);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Request_Device_Eject_ExA(
+  /*IN*/ DEVINST  dnDevInst,
+  /*OUT*/ PPNP_VETO_TYPE  pVetoType,
+  /*OUT*/ LPSTR  pszVetoName,
+  /*IN*/ ULONG  ulNameLength,
+  /*IN*/ ULONG  ulFlags,
+  /*IN*/ HMACHINE  hMachine);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Request_Device_EjectW(
+  /*IN*/ DEVINST  dnDevInst,
+  /*OUT*/ PPNP_VETO_TYPE  pVetoType,
+  /*OUT*/ LPWSTR  pszVetoName,
+  /*IN*/ ULONG  ulNameLength,
+  /*IN*/ ULONG  ulFlags);
+
+#ifdef UNICODE
+#define CM_Request_Device_Eject CM_Request_Device_EjectW
+#define CM_Request_Device_Eject_Ex CM_Request_Device_Eject_ExW
+#else
+#define CM_Request_Device_Eject CM_Request_Device_EjectA
+#define CM_Request_Device_Eject_Ex CM_Request_Device_Eject_ExA
+#endif /* UNICODE */
+
+/* FIXME: Obsolete CM_Request_Eject_PC */
+/* FIXME: Obsolete CM_Request_Eject_PC_Ex */
+/* FIXME: Obsolete CM_Run_Detection */
+/* FIXME: Obsolete CM_Run_Detection_Ex */
+/* FIXME: Obsolete CM_Set_Class_Registry_Property */
+/* FIXME: Obsolete CM_Set_DevNode_Problem */
+/* FIXME: Obsolete CM_Set_DevNode_Problem_Ex */
+/* FIXME: Obsolete CM_Set_DevNode_Registry_Property */
+/* FIXME: Obsolete CM_Set_DevNode_Registry_Property_Ex */
+/* FIXME: Obsolete CM_Set_HW_Prof */
+/* FIXME: Obsolete CM_Set_HW_Prof_Ex */
+/* FIXME: Obsolete CM_Set_HW_Prof_Flags */
+/* FIXME: Obsolete CM_Set_HW_Prof_Flags_Ex */
+/* FIXME: Obsolete CM_Setup_DevNode */
+/* FIXME: Obsolete CM_Setup_DevNode_Ex */
+/* FIXME: Obsolete CM_Test_Range_Available */
+/* FIXME: Obsolete CM_Uninstall_DevNode */
+/* FIXME: Obsolete CM_Uninstall_DevNode_Ex */
+/* FIXME: Obsolete CM_Unregister_Device_Interface */
+/* FIXME: Obsolete CM_Unregister_Device_Interface_Ex */
+
+#define CM_WaitNoPendingInstallEvents CMP_WaitNoPendingInstallEvents
+
+CMAPI
+DWORD
+WINAPI
+CMP_WaitNoPendingInstallEvents(
+  /*IN*/ DWORD dwTimeout);
+
+#include <poppack.h>
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __CFGMGR32_H */
Index: Daodan/MinGW/include/ddk/d4drvif.h
===================================================================
--- Daodan/MinGW/include/ddk/d4drvif.h	(revision 1046)
+++ Daodan/MinGW/include/ddk/d4drvif.h	(revision 1046)
@@ -0,0 +1,104 @@
+/*
+ * d4drvif.h
+ *
+ * DOT4 driver IOCTL interface
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __D4DRVIF_H
+#define __D4DRVIF_H
+
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "ntddk.h"
+#include "d4iface.h"
+
+#define FILE_DEVICE_DOT4                  0x3a
+#define IOCTL_DOT4_USER_BASE              2049
+
+#define IOCTL_DOT4_ADD_ACTIVITY_BROADCAST \
+  CTL_CODE(FILE_DEVICE_DOT4, IOCTL_DOT4_USER_BASE + 4, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_DOT4_CLOSE_CHANNEL \
+  CTL_CODE(FILE_DEVICE_DOT4, IOCTL_DOT4_USER_BASE + 1, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_DOT4_CREATE_SOCKET \
+  CTL_CODE(FILE_DEVICE_DOT4, IOCTL_DOT4_USER_BASE + 7, METHOD_OUT_DIRECT, FILE_ANY_ACCESS)
+
+#define IOCTL_DOT4_DESTROY_SOCKET \
+  CTL_CODE(FILE_DEVICE_DOT4, IOCTL_DOT4_USER_BASE + 9, METHOD_OUT_DIRECT, FILE_ANY_ACCESS)
+
+#define IOCTL_DOT4_OPEN_CHANNEL \
+  CTL_CODE(FILE_DEVICE_DOT4, IOCTL_DOT4_USER_BASE + 0, METHOD_OUT_DIRECT, FILE_ANY_ACCESS)
+
+#define IOCTL_DOT4_READ \
+  CTL_CODE(FILE_DEVICE_DOT4, IOCTL_DOT4_USER_BASE + 2, METHOD_OUT_DIRECT, FILE_ANY_ACCESS)
+
+#define IOCTL_DOT4_REMOVE_ACTIVITY_BROADCAST \
+  CTL_CODE(FILE_DEVICE_DOT4, IOCTL_DOT4_USER_BASE + 5, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_DOT4_WAIT_ACTIVITY_BROADCAST \
+  CTL_CODE(FILE_DEVICE_DOT4, IOCTL_DOT4_USER_BASE + 6, METHOD_OUT_DIRECT, FILE_ANY_ACCESS)
+
+#define IOCTL_DOT4_WAIT_FOR_CHANNEL \
+  CTL_CODE(FILE_DEVICE_DOT4, IOCTL_DOT4_USER_BASE + 8, METHOD_OUT_DIRECT, FILE_ANY_ACCESS)
+
+#define IOCTL_DOT4_WRITE \
+  CTL_CODE(FILE_DEVICE_DOT4, IOCTL_DOT4_USER_BASE + 3, METHOD_IN_DIRECT, FILE_ANY_ACCESS)
+
+
+#define MAX_SERVICE_LENGTH                40
+
+typedef struct _DOT4_DC_CREATE_DATA {
+  unsigned char  bPsid;
+  CHAR  pServiceName[MAX_SERVICE_LENGTH + 1];
+  unsigned char  bType;
+  ULONG  ulBufferSize;
+  USHORT  usMaxHtoPPacketSize;
+  USHORT  usMaxPtoHPacketSize;
+  unsigned char bHsid;
+} DOT4_DC_CREATE_DATA, *PDOT4_DC_CREATE_DATA;
+
+typedef struct _DOT4_DC_DESTROY_DATA {
+    unsigned char  bHsid;
+} DOT4_DC_DESTROY_DATA, *PDOT4_DC_DESTROY_DATA;
+
+typedef struct _DOT4_DC_OPEN_DATA {
+  unsigned char  bHsid;
+  unsigned char  fAddActivity;
+  CHANNEL_HANDLE  hChannelHandle;
+} DOT4_DC_OPEN_DATA, *PDOT4_DC_OPEN_DATA;
+
+typedef struct _DOT4_DRIVER_CMD {
+  CHANNEL_HANDLE  hChannelHandle;
+  ULONG  ulSize;
+  ULONG  ulOffset;
+  ULONG  ulTimeout;
+} DOT4_DRIVER_CMD, *PDOT4_DRIVER_CMD;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __D4DRVIF_H */
Index: Daodan/MinGW/include/ddk/d4iface.h
===================================================================
--- Daodan/MinGW/include/ddk/d4iface.h	(revision 1046)
+++ Daodan/MinGW/include/ddk/d4iface.h	(revision 1046)
@@ -0,0 +1,84 @@
+/*
+ * d4iface.h
+ *
+ * DOT4 interface
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __D4IFACE_H
+#define __D4IFACE_H
+
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "ntddk.h"
+
+#define DOT4_MAX_CHANNELS                 128
+#define NO_TIMEOUT                        0
+
+#define DOT4_CHANNEL                      0
+#define HP_MESSAGE_PROCESSOR              1
+#define PRINTER_CHANNEL                   2
+#define SCANNER_CHANNEL                   4
+#define MIO_COMMAND_PROCESSOR             5
+#define ECHO_CHANNEL                      6
+#define FAX_SEND_CHANNEL                  7
+#define FAX_RECV_CHANNEL                  8
+#define DIAGNOSTIC_CHANNEL                9
+#define HP_RESERVED                       10
+#define IMAGE_DOWNLOAD                    11
+#define HOST_DATASTORE_UPLOAD             12
+#define HOST_DATASTORE_DOWNLOAD           13
+#define CONFIG_UPLOAD                     14
+#define CONFIG_DOWNLOAD                   15
+
+#define STREAM_TYPE_CHANNEL               1
+#define PACKET_TYPE_CHANNEL               2
+
+/* DOT4_ACTIVITY.ulMessage flags */
+#define DOT4_STREAM_RECEIVED              0x100
+#define DOT4_STREAM_CREDITS               0x101
+#define DOT4_MESSAGE_RECEIVED             0x102
+#define DOT4_DISCONNECT                   0x103
+#define DOT4_CHANNEL_CLOSED               0x105
+
+typedef unsigned long CHANNEL_HANDLE, *PCHANNEL_HANDLE;
+
+typedef struct _DOT4_ACTIVITY {
+  ULONG  ulMessage;
+  ULONG  ulByteCount;
+  CHANNEL_HANDLE  hChannel;
+} DOT4_ACTIVITY, *PDOT4_ACTIVITY;
+
+typedef struct _DOT4_WMI_XFER_INFO {
+  ULONG  ulStreamBytesWritten;
+  ULONG  ulStreamBytesRead;
+  ULONG  ulPacketBytesWritten;
+  ULONG  ulPacketBytesRead;
+} DOT4_WMI_XFER_INFO, *PDOT4_WMI_XFER_INFO;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __D4IFACE_H */
Index: Daodan/MinGW/include/ddk/ddkmapi.h
===================================================================
--- Daodan/MinGW/include/ddk/ddkmapi.h	(revision 1046)
+++ Daodan/MinGW/include/ddk/ddkmapi.h	(revision 1046)
@@ -0,0 +1,334 @@
+/*
+ * ddkmapi.h
+ *
+ * DirectDraw support for DxApi function
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __DDKMAPI_H
+#define __DDKMAPI_H
+
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "ntddk.h"
+
+#if defined(_DXAPI_)
+  #define DXAPI DECLSPEC_EXPORT
+#else
+  #define DXAPI DECLSPEC_IMPORT
+#endif
+
+DXAPI
+DWORD
+FAR PASCAL
+DxApi(
+  /*IN*/ DWORD  dwFunctionNum,
+  /*IN*/ LPVOID  lpvInBuffer,
+  /*IN*/ DWORD  cbInBuffer,
+  /*OUT*/ LPVOID  lpvOutBuffer,
+  /*OUT*/ DWORD  cbOutBuffer);
+
+typedef DWORD (FAR PASCAL *LPDXAPI)(
+  DWORD  dwFunctionNum,
+  LPVOID  lpvInBuffer,
+  DWORD  cbInBuffer,
+  LPVOID  lpvOutBuffer,
+  DWORD  cbOutBuffer);
+
+
+#define DXAPI_MAJORVERSION                1
+#define DXAPI_MINORVERSION                0
+
+#define DD_FIRST_DXAPI                    0x500
+
+#define DD_DXAPI_GETVERSIONNUMBER                 (DD_FIRST_DXAPI)
+#define DD_DXAPI_CLOSEHANDLE                      (DD_FIRST_DXAPI+1)
+#define DD_DXAPI_OPENDIRECTDRAW                   (DD_FIRST_DXAPI+2)
+#define DD_DXAPI_OPENSURFACE                      (DD_FIRST_DXAPI+3)
+#define DD_DXAPI_OPENVIDEOPORT                    (DD_FIRST_DXAPI+4)
+#define DD_DXAPI_GETKERNELCAPS                    (DD_FIRST_DXAPI+5)
+#define DD_DXAPI_GET_VP_FIELD_NUMBER              (DD_FIRST_DXAPI+6)
+#define DD_DXAPI_SET_VP_FIELD_NUMBER              (DD_FIRST_DXAPI+7)
+#define DD_DXAPI_SET_VP_SKIP_FIELD                (DD_FIRST_DXAPI+8)
+#define DD_DXAPI_GET_SURFACE_STATE                (DD_FIRST_DXAPI+9)
+#define DD_DXAPI_SET_SURFACE_STATE                (DD_FIRST_DXAPI+10)
+#define DD_DXAPI_LOCK                             (DD_FIRST_DXAPI+11)
+#define DD_DXAPI_FLIP_OVERLAY                     (DD_FIRST_DXAPI+12)
+#define DD_DXAPI_FLIP_VP                          (DD_FIRST_DXAPI+13)
+#define DD_DXAPI_GET_CURRENT_VP_AUTOFLIP_SURFACE  (DD_FIRST_DXAPI+14)
+#define DD_DXAPI_GET_LAST_VP_AUTOFLIP_SURFACE     (DD_FIRST_DXAPI+15)
+#define DD_DXAPI_REGISTER_CALLBACK                (DD_FIRST_DXAPI+16)
+#define DD_DXAPI_UNREGISTER_CALLBACK              (DD_FIRST_DXAPI+17)
+#define DD_DXAPI_GET_POLARITY                     (DD_FIRST_DXAPI+18)
+#define DD_DXAPI_OPENVPCAPTUREDEVICE              (DD_FIRST_DXAPI+19)
+#define DD_DXAPI_ADDVPCAPTUREBUFFER               (DD_FIRST_DXAPI+20)
+#define DD_DXAPI_FLUSHVPCAPTUREBUFFERS            (DD_FIRST_DXAPI+21)
+
+
+typedef struct _DDCAPBUFFINFO {
+  DWORD  dwFieldNumber;
+  DWORD  bPolarity;
+  LARGE_INTEGER  liTimeStamp;
+  DWORD  ddRVal;
+} DDCAPBUFFINFO, FAR * LPDDCAPBUFFINFO;
+
+/* DDADDVPCAPTUREBUFF.dwFlags constants */
+#define DDADDBUFF_SYSTEMMEMORY            0x0001
+#define DDADDBUFF_NONLOCALVIDMEM          0x0002
+#define DDADDBUFF_INVERT                  0x0004
+
+typedef struct _DDADDVPCAPTUREBUFF {
+  HANDLE  hCapture;
+  DWORD  dwFlags;
+  PMDL  pMDL;
+  PKEVENT  pKEvent;
+  LPDDCAPBUFFINFO  lpBuffInfo;
+} DDADDVPCAPTUREBUFF, FAR * LPDDADDVPCAPTUREBUFF;
+
+typedef struct _DDCLOSEHANDLE {
+  HANDLE  hHandle;
+} DDCLOSEHANDLE, FAR *LPDDCLOSEHANDLE;
+
+typedef struct _DDFLIPOVERLAY {
+  HANDLE  hDirectDraw;
+  HANDLE  hCurrentSurface;
+  HANDLE  hTargetSurface;
+  DWORD  dwFlags;
+} DDFLIPOVERLAY, FAR *LPDDFLIPOVERLAY;
+
+typedef struct _DDFLIPVIDEOPORT {
+  HANDLE  hDirectDraw;
+  HANDLE  hVideoPort;
+  HANDLE  hCurrentSurface;
+  HANDLE  hTargetSurface;
+  DWORD  dwFlags;
+} DDFLIPVIDEOPORT, FAR *LPDDFLIPVIDEOPORT;
+
+typedef struct _DDGETAUTOFLIPIN {
+  HANDLE  hDirectDraw;
+  HANDLE  hVideoPort;
+} DDGETAUTOFLIPIN, FAR *LPDDGETAUTOFLIPIN;
+
+typedef struct _DDGETAUTOFLIPOUT {
+  DWORD  ddRVal;
+  HANDLE  hVideoSurface;
+  HANDLE  hVBISurface;
+  BOOL  bPolarity;
+} DDGETAUTOFLIPOUT, FAR *LPDDGETAUTOFLIPOUT;
+
+typedef struct _DDGETPOLARITYIN {
+  HANDLE  hDirectDraw;
+  HANDLE  hVideoPort;
+} DDGETPOLARITYIN, FAR *LPDDGETPOLARITYIN;
+
+typedef struct _DDGETPOLARITYOUT {
+  DWORD  ddRVal;
+  BOOL  bPolarity;
+} DDGETPOLARITYOUT, FAR *LPDDGETPOLARITYOUT;
+
+typedef struct _DDGETSURFACESTATEIN {
+  HANDLE  hDirectDraw;
+  HANDLE  hSurface;
+} DDGETSURFACESTATEIN, FAR *LPDDGETSURFACESTATEIN;
+
+/* DDGETSURFACESTATEOUT.dwStateCaps/dwStateStatus constants */
+#define DDSTATE_BOB                       0x0001
+#define DDSTATE_WEAVE                     0x0002
+#define DDSTATE_EXPLICITLY_SET            0x0004
+#define DDSTATE_SOFTWARE_AUTOFLIP         0x0008
+#define DDSTATE_SKIPEVENFIELDS            0x0010
+
+typedef struct _DDGETSURFACESTATEOUT {
+  DWORD  ddRVal;
+  DWORD  dwStateCaps;
+  DWORD  dwStateStatus;
+} DDGETSURFACESTATEOUT, FAR *LPDDGETSURFACESTATEOUT;
+
+typedef struct _DDGETFIELDNUMIN {
+  HANDLE  hDirectDraw;
+  HANDLE  hVideoPort;
+} DDGETFIELDNUMIN, FAR *LPDDGETFIELDNUMIN;
+
+typedef struct _DDGETFIELDNUMOUT {
+  DWORD  ddRVal;
+  DWORD  dwFieldNum;
+} DDGETFIELDNUMOUT, FAR *LPDDGETFIELDNUMOUT;
+
+typedef struct _DDGETKERNELCAPSOUT {
+  DWORD  ddRVal;
+  DWORD  dwCaps;
+  DWORD  dwIRQCaps;
+} DDGETKERNELCAPSOUT, FAR *LPDDGETKERNELCAPSOUT;
+
+typedef struct _DDGETVERSIONNUMBER {
+  DWORD  ddRVal;
+  DWORD  dwMajorVersion;
+  DWORD  dwMinorVersion;
+} DDGETVERSIONNUMBER, FAR *LPDDGETVERSIONNUMBER;
+
+typedef struct _DDLOCKIN {
+  HANDLE  hDirectDraw;
+  HANDLE  hSurface;
+} DDLOCKIN, FAR *LPDDLOCKIN;
+
+typedef struct _DDLOCKOUT {
+  DWORD  ddRVal;
+  DWORD  dwSurfHeight;
+  DWORD  dwSurfWidth;
+  LONG  lSurfPitch;
+  PVOID  lpSurface;
+  DWORD  SurfaceCaps;
+  DWORD  dwFormatFlags;
+  DWORD  dwFormatFourCC;
+  DWORD  dwFormatBitCount;
+  _ANONYMOUS_UNION union {
+    DWORD  dwRBitMask;
+    DWORD  dwYBitMask;
+  } DUMMYUNIONNAME;
+  _ANONYMOUS_UNION union {
+    DWORD  dwGBitMask;
+    DWORD  dwUBitMask;
+  } DUMMYUNIONNAME2;
+  _ANONYMOUS_UNION union {
+    DWORD  dwBBitMask;
+    DWORD  dwVBitMask;
+  } DUMMYUNIONNAME3;
+} DDLOCKOUT, FAR *LPDDLOCKOUT;
+
+/* LPDD_NOTIFYCALLBACK.dwFlags constants */
+#define DDNOTIFY_DISPLAY_VSYNC            0x0001
+#define DDNOTIFY_VP_VSYNC                 0x0002
+#define DDNOTIFY_VP_LINE                  0x0004
+#define DDNOTIFY_PRERESCHANGE             0x0008
+#define DDNOTIFY_POSTRESCHANGE            0x0010
+#define DDNOTIFY_PREDOSBOX                0x0020
+#define DDNOTIFY_POSTDOSBOX               0x0040
+#define DDNOTIFY_CLOSEDIRECTDRAW          0x0080
+#define DDNOTIFY_CLOSESURFACE             0x0100
+#define DDNOTIFY_CLOSEVIDEOPORT           0x0200
+#define DDNOTIFY_CLOSECAPTURE             0x0400
+
+typedef ULONG (FAR PASCAL *LPDD_NOTIFYCALLBACK)(
+  DWORD dwFlags,
+  PVOID pContext,
+  DWORD dwParam1,
+  DWORD dwParam2);
+
+typedef struct _DDOPENDIRECTDRAWIN {
+  ULONG_PTR  dwDirectDrawHandle;
+  LPDD_NOTIFYCALLBACK  pfnDirectDrawClose;
+  PVOID  pContext;
+} DDOPENDIRECTDRAWIN, FAR *LPDDOPENDIRECTDRAWIN;
+
+typedef struct _DDOPENDIRECTDRAWOUT {
+  DWORD  ddRVal;
+  HANDLE  hDirectDraw;
+} DDOPENDIRECTDRAWOUT, FAR *LPDDOPENDIRECTDRAWOUT;
+
+typedef struct _DDOPENSURFACEIN {
+  HANDLE  hDirectDraw;
+  ULONG_PTR  dwSurfaceHandle;
+  LPDD_NOTIFYCALLBACK  pfnSurfaceClose;
+  PVOID  pContext;
+} DDOPENSURFACEIN, FAR *LPDDOPENSURFACEIN;
+
+typedef struct _DDOPENSURFACEOUT {
+  DWORD  ddRVal;
+  HANDLE  hSurface;
+} DDOPENSURFACEOUT, FAR *LPDDOPENSURFACEOUT;
+
+typedef struct _DDOPENVIDEOPORTIN {
+  HANDLE  hDirectDraw;
+  ULONG  dwVideoPortHandle;
+  LPDD_NOTIFYCALLBACK  pfnVideoPortClose;
+  PVOID  pContext;
+} DDOPENVIDEOPORTIN, FAR *LPDDOPENVIDEOPORTIN;
+
+typedef struct _DDOPENVIDEOPORTOUT {
+  DWORD  ddRVal;
+  HANDLE  hVideoPort;
+} DDOPENVIDEOPORTOUT, FAR *LPDDOPENVIDEOPORTOUT;
+
+/* DDOPENVPCAPTUREDEVICEIN.dwFlags constants */
+#define DDOPENCAPTURE_VIDEO               0x0001
+#define DDOPENCAPTURE_VBI                 0x0002
+
+typedef struct _DDOPENVPCAPTUREDEVICEIN {
+  HANDLE  hDirectDraw;
+  HANDLE  hVideoPort;
+  DWORD  dwStartLine;
+  DWORD  dwEndLine;
+  DWORD  dwCaptureEveryNFields;
+  LPDD_NOTIFYCALLBACK  pfnCaptureClose;
+  PVOID  pContext;
+  DWORD  dwFlags;
+} DDOPENVPCAPTUREDEVICEIN, FAR * LPDDOPENVPCAPTUREDEVICEIN;
+
+typedef struct _DDOPENVPCAPTUREDEVICEOUT {
+  DWORD  ddRVal;
+  HANDLE  hCapture;
+} DDOPENVPCAPTUREDEVICEOUT, FAR * LPDDOPENVPCAPTUREDEVICEOUT;
+
+/* DDREGISTERCALLBACK.dwEvents constants */
+#define DDEVENT_DISPLAY_VSYNC             0x0001
+#define DDEVENT_VP_VSYNC                  0x0002
+#define DDEVENT_VP_LINE                   0x0004
+#define DDEVENT_PRERESCHANGE              0x0008
+#define DDEVENT_POSTRESCHANGE             0x0010
+#define DDEVENT_PREDOSBOX                 0x0020
+#define DDEVENT_POSTDOSBOX                0x0040
+
+typedef struct _DDREGISTERCALLBACK {
+  HANDLE  hDirectDraw;
+  ULONG  dwEvents;
+  LPDD_NOTIFYCALLBACK  pfnCallback;
+  ULONG_PTR  dwParam1;
+  ULONG_PTR  dwParam2;
+  PVOID  pContext;
+} DDREGISTERCALLBACK, FAR *LPDDREGISTERCALLBACK;
+
+typedef struct _DDSETSURFACETATE {
+  HANDLE  hDirectDraw;
+  HANDLE  hSurface;
+  DWORD  dwState;
+  DWORD  dwStartField;
+} DDSETSURFACESTATE, FAR *LPDDSETSURFACESTATE;
+
+typedef struct _DDSETFIELDNUM {
+  HANDLE  hDirectDraw;
+  HANDLE  hVideoPort;
+  DWORD  dwFieldNum;
+} DDSETFIELDNUM, FAR *LPDDSETFIELDNUM;
+
+typedef struct _DDSETSKIPFIELD {
+  HANDLE  hDirectDraw;
+  HANDLE  hVideoPort;
+  DWORD  dwStartField;
+} DDSETSKIPFIELD, FAR *LPDDSETSKIPFIELD;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __DDKMAPI_H */
Index: Daodan/MinGW/include/ddk/hidclass.h
===================================================================
--- Daodan/MinGW/include/ddk/hidclass.h	(revision 1046)
+++ Daodan/MinGW/include/ddk/hidclass.h	(revision 1046)
@@ -0,0 +1,153 @@
+/*
+ * hidclass.h
+ *
+ * HID class driver interface
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __HIDCLASS_H
+#define __HIDCLASS_H
+
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "ntddk.h"
+#include "hidpi.h"
+
+#define HID_REVISION                      0x00000001
+
+DEFINE_GUID (GUID_DEVINTERFACE_HID, \
+  0x4D1E55B2L, 0xF16F, 0x11CF, 0x88, 0xCB, 0x00, 0x11, 0x11, 0x00, 0x00, 0x30);
+DEFINE_GUID (GUID_HID_INTERFACE_NOTIFY, \
+  0x2c4e2e88L, 0x25e6, 0x4c33, 0x88, 0x2f, 0x3d, 0x82, 0xe6, 0x07, 0x36, 0x81);
+DEFINE_GUID (GUID_HID_INTERFACE_HIDPARSE, \
+  0xf5c315a5, 0x69ac, 0x4bc2, 0x92, 0x79, 0xd0, 0xb6, 0x45, 0x76, 0xf4, 0x4b);
+
+#define GUID_CLASS_INPUT GUID_DEVINTERFACE_HID
+
+#define GUID_CLASS_INPUT_STR "4D1E55B2-F16F-11CF-88CB-001111000030"
+
+
+#define HID_CTL_CODE(id) \
+  CTL_CODE (FILE_DEVICE_KEYBOARD, (id), METHOD_NEITHER, FILE_ANY_ACCESS)
+#define HID_BUFFER_CTL_CODE(id) \
+  CTL_CODE (FILE_DEVICE_KEYBOARD, (id), METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define HID_IN_CTL_CODE(id) \
+  CTL_CODE (FILE_DEVICE_KEYBOARD, (id), METHOD_IN_DIRECT, FILE_ANY_ACCESS)
+#define HID_OUT_CTL_CODE(id) \
+  CTL_CODE (FILE_DEVICE_KEYBOARD, (id), METHOD_OUT_DIRECT, FILE_ANY_ACCESS)
+
+
+#define IOCTL_GET_PHYSICAL_DESCRIPTOR         HID_OUT_CTL_CODE(102)
+#define IOCTL_HID_FLUSH_QUEUE                 HID_CTL_CODE(101)
+#define IOCTL_HID_GET_COLLECTION_DESCRIPTOR   HID_CTL_CODE(100)
+#define IOCTL_HID_GET_COLLECTION_INFORMATION  HID_BUFFER_CTL_CODE(106)
+#define IOCTL_HID_GET_FEATURE                 HID_OUT_CTL_CODE(100)
+#define IOCTL_HID_GET_HARDWARE_ID             HID_OUT_CTL_CODE(103)
+#define IOCTL_HID_GET_INDEXED_STRING          HID_OUT_CTL_CODE(120)
+#define IOCTL_HID_GET_INPUT_REPORT            HID_OUT_CTL_CODE(104)
+#define IOCTL_HID_GET_MANUFACTURER_STRING     HID_OUT_CTL_CODE(110)
+#define IOCTL_GET_NUM_DEVICE_INPUT_BUFFERS    HID_BUFFER_CTL_CODE(104)
+#define IOCTL_HID_GET_POLL_FREQUENCY_MSEC     HID_BUFFER_CTL_CODE(102)
+#define IOCTL_HID_GET_PRODUCT_STRING          HID_OUT_CTL_CODE(111)
+#define IOCTL_HID_GET_SERIALNUMBER_STRING     HID_OUT_CTL_CODE(112)
+#define IOCTL_HID_SET_FEATURE                 HID_IN_CTL_CODE(100)
+#define IOCTL_SET_NUM_DEVICE_INPUT_BUFFERS    HID_BUFFER_CTL_CODE(105)
+#define IOCTL_HID_SET_OUTPUT_REPORT           HID_IN_CTL_CODE(101)
+#define IOCTL_HID_SET_POLL_FREQUENCY_MSEC     HID_BUFFER_CTL_CODE(103)
+
+#define IOCTL_HID_GET_DRIVER_CONFIG           HID_BUFFER_CTL_CODE(100)
+#define IOCTL_HID_SET_DRIVER_CONFIG           HID_BUFFER_CTL_CODE(101)
+#define IOCTL_HID_GET_MS_GENRE_DESCRIPTOR     HID_OUT_CTL_CODE(121)
+
+
+enum DeviceObjectState {
+  DeviceObjectStarted = 0,
+  DeviceObjectStopped,
+  DeviceObjectRemoved
+};
+
+typedef VOID DDKAPI (*PHID_STATUS_CHANGE)(
+  PVOID  Context,
+  enum DeviceObjectState  State);
+
+typedef NTSTATUS DDKAPI (*PHIDP_GETCAPS)(
+  /*IN*/ PHIDP_PREPARSED_DATA  PreparsedData,
+  /*OUT*/ PHIDP_CAPS  Capabilities);
+
+typedef struct _HID_COLLECTION_INFORMATION {
+  ULONG  DescriptorSize;
+  BOOLEAN  Polled;
+  UCHAR  Reserved1[1];
+  USHORT  VendorID;
+  USHORT  ProductID;
+  USHORT  VersionNumber;
+} HID_COLLECTION_INFORMATION, *PHID_COLLECTION_INFORMATION;
+
+typedef struct _HID_DRIVER_CONFIG {
+  ULONG  Size;
+  ULONG  RingBufferSize;
+} HID_DRIVER_CONFIG, *PHID_DRIVER_CONFIG;
+
+typedef struct _HID_INTERFACE_HIDPARSE {
+#ifdef __cplusplus
+  INTERFACE  i;
+#else
+  /* GCC doesn't support including unnamed structs, so INTERFACE is
+     expanded here */
+  USHORT  Size;
+  USHORT  Version;
+  PVOID  Context;
+  PINTERFACE_REFERENCE  InterfaceReference;
+  PINTERFACE_DEREFERENCE  InterfaceDereference;
+#endif
+  PHIDP_GETCAPS  HidpGetCaps;
+} HID_INTERFACE_HIDPARSE, *PHID_INTERFACE_HIDPARSE;
+
+typedef struct _HID_INTERFACE_NOTIFY_PNP {
+#ifdef __cplusplus
+  INTERFACE  i;
+#else
+  /* GCC doesn't support including unnamed structs, so INTERFACE is
+     expanded here */
+  USHORT  Size;
+  USHORT  Version;
+  PVOID  Context;
+  PINTERFACE_REFERENCE  InterfaceReference;
+  PINTERFACE_DEREFERENCE  InterfaceDereference;
+#endif
+  PHID_STATUS_CHANGE  StatusChangeFn;
+  PVOID  CallbackContext;
+} HID_INTERFACE_NOTIFY_PNP, *PHID_INTERFACE_NOTIFY_PNP;
+
+typedef struct _HID_XFER_PACKET {
+  PUCHAR  reportBuffer;
+  ULONG  reportBufferLen;
+  UCHAR  reportId;
+} HID_XFER_PACKET, *PHID_XFER_PACKET;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __HIDCLASS_H */
Index: Daodan/MinGW/include/ddk/hidpi.h
===================================================================
--- Daodan/MinGW/include/ddk/hidpi.h	(revision 1046)
+++ Daodan/MinGW/include/ddk/hidpi.h	(revision 1046)
@@ -0,0 +1,604 @@
+/*
+ * hidpi.h
+ *
+ * Public Interface for HID parsing library.
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __HIDPI_H
+#define __HIDPI_H
+
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "ntddk.h"
+#include "hidusage.h"
+
+#if defined(_HIDPI_)
+  #define HIDAPI DECLSPEC_EXPORT
+#else
+  #define HIDAPI DECLSPEC_IMPORT
+#endif
+
+typedef PUCHAR PHIDP_REPORT_DESCRIPTOR;
+typedef struct _HIDP_PREPARSED_DATA * PHIDP_PREPARSED_DATA;
+
+typedef struct _HIDP_UNKNOWN_TOKEN {
+  UCHAR  Token;
+  UCHAR  Reserved[3];
+  ULONG  BitField;
+} HIDP_UNKNOWN_TOKEN, *PHIDP_UNKNOWN_TOKEN;
+
+typedef enum _HIDP_KEYBOARD_DIRECTION {
+  HidP_Keyboard_Break,
+  HidP_Keyboard_Make
+} HIDP_KEYBOARD_DIRECTION;
+
+typedef struct _HIDP_KEYBOARD_MODIFIER_STATE {
+  _ANONYMOUS_UNION union {
+    _ANONYMOUS_STRUCT struct {
+      ULONG  LeftControl : 1;
+      ULONG  LeftShift : 1;
+      ULONG  LeftAlt : 1;
+      ULONG  LeftGUI : 1;
+      ULONG  RightControl : 1;
+      ULONG  RightShift : 1;
+      ULONG  RightAlt : 1;
+      ULONG  RigthGUI : 1;
+      ULONG  CapsLock : 1;
+      ULONG  ScollLock : 1;
+      ULONG  NumLock : 1;
+      ULONG  Reserved : 21;
+    } DUMMYSTRUCTNAME;
+    ULONG ul;
+  } DUMMYUNIONNAME;
+} HIDP_KEYBOARD_MODIFIER_STATE, *PHIDP_KEYBOARD_MODIFIER_STATE;
+
+typedef BOOLEAN (DDKAPI *PHIDP_INSERT_SCANCODES)(
+  /*IN*/ PVOID  Context,
+  /*IN*/ PCHAR  NewScanCodes,
+  /*IN*/ ULONG  Length);
+
+typedef struct _USAGE_AND_PAGE {
+  USAGE  Usage;
+  USAGE  UsagePage;
+} USAGE_AND_PAGE, *PUSAGE_AND_PAGE;
+
+HIDAPI
+NTSTATUS
+DDKAPI
+HidP_TranslateUsageAndPagesToI8042ScanCodes(
+  /*IN*/ PUSAGE_AND_PAGE  ChangedUsageList,
+  /*IN*/ ULONG  UsageListLength,
+  /*IN*/ HIDP_KEYBOARD_DIRECTION  KeyAction,
+  /*IN OUT*/ PHIDP_KEYBOARD_MODIFIER_STATE  ModifierState,
+  /*IN*/ PHIDP_INSERT_SCANCODES  InsertCodesProcedure,
+  /*IN*/ PVOID  InsertCodesContext);
+
+HIDAPI
+NTSTATUS
+DDKAPI
+HidP_TranslateUsagesToI8042ScanCodes(
+  /*IN*/ PUSAGE  ChangedUsageList,
+  /*IN*/ ULONG  UsageListLength,
+  /*IN*/ HIDP_KEYBOARD_DIRECTION  KeyAction,
+  /*IN OUT*/ PHIDP_KEYBOARD_MODIFIER_STATE  ModifierState,
+  /*IN*/ PHIDP_INSERT_SCANCODES  InsertCodesProcedure,
+  /*IN*/ PVOID  InsertCodesContext);
+
+typedef struct _HIDP_BUTTON_CAPS {
+  USAGE  UsagePage;
+  UCHAR  ReportID;
+  BOOLEAN  IsAlias;
+  USHORT  BitField;
+  USHORT  LinkCollection;
+  USAGE  LinkUsage;
+  USAGE  LinkUsagePage;
+  BOOLEAN  IsRange;
+  BOOLEAN  IsStringRange;
+  BOOLEAN  IsDesignatorRange;
+  BOOLEAN  IsAbsolute;
+  ULONG  Reserved[10];
+  _ANONYMOUS_UNION union {
+    struct {
+      USAGE  UsageMin, UsageMax;
+      USHORT  StringMin, StringMax;
+      USHORT  DesignatorMin, DesignatorMax;
+      USHORT  DataIndexMin, DataIndexMax;
+    } Range;
+    struct  {
+       USAGE  Usage, Reserved1;
+       USHORT  StringIndex, Reserved2;
+       USHORT  DesignatorIndex, Reserved3;
+       USHORT  DataIndex, Reserved4;
+    } NotRange;
+  } DUMMYUNIONNAME;
+} HIDP_BUTTON_CAPS, *PHIDP_BUTTON_CAPS;
+
+typedef struct _HIDP_CAPS {
+  USAGE  Usage;
+  USAGE  UsagePage;
+  USHORT  InputReportByteLength;
+  USHORT  OutputReportByteLength;
+  USHORT  FeatureReportByteLength;
+  USHORT  Reserved[17];
+  USHORT  NumberLinkCollectionNodes;
+  USHORT  NumberInputButtonCaps;
+  USHORT  NumberInputValueCaps;
+  USHORT  NumberInputDataIndices;
+  USHORT  NumberOutputButtonCaps;
+  USHORT  NumberOutputValueCaps;
+  USHORT  NumberOutputDataIndices;
+  USHORT  NumberFeatureButtonCaps;
+  USHORT  NumberFeatureValueCaps;
+  USHORT  NumberFeatureDataIndices;
+} HIDP_CAPS, *PHIDP_CAPS;
+
+typedef struct _HIDP_DATA {
+  USHORT  DataIndex;
+  USHORT  Reserved;
+  _ANONYMOUS_UNION union {
+    ULONG  RawValue;
+    BOOLEAN  On;
+  }  DUMMYUNIONNAME;
+} HIDP_DATA, *PHIDP_DATA;
+
+typedef struct _HIDP_EXTENDED_ATTRIBUTES {
+  UCHAR  NumGlobalUnknowns;
+  UCHAR  Reserved[3];
+  PHIDP_UNKNOWN_TOKEN  GlobalUnknowns;
+  ULONG  Data[1];
+} HIDP_EXTENDED_ATTRIBUTES, *PHIDP_EXTENDED_ATTRIBUTES;
+
+#define HIDP_LINK_COLLECTION_ROOT         ((USHORT) -1)
+#define HIDP_LINK_COLLECTION_UNSPECIFIED  ((USHORT) 0)
+
+typedef struct _HIDP_LINK_COLLECTION_NODE {
+  USAGE  LinkUsage;
+  USAGE  LinkUsagePage;
+  USHORT  Parent;
+  USHORT  NumberOfChildren;
+  USHORT  NextSibling;
+  USHORT  FirstChild;
+  ULONG  CollectionType: 8;
+  ULONG  IsAlias: 1;
+  ULONG  Reserved: 23;
+  PVOID  UserContext;
+} HIDP_LINK_COLLECTION_NODE, *PHIDP_LINK_COLLECTION_NODE;
+
+typedef struct _HIDP_VALUE_CAPS {
+  USAGE  UsagePage;
+  UCHAR  ReportID;
+  BOOLEAN  IsAlias;
+  USHORT  BitField;
+  USHORT  LinkCollection;
+  USAGE  LinkUsage;
+  USAGE  LinkUsagePage;
+  BOOLEAN  IsRange;
+  BOOLEAN  IsStringRange;
+  BOOLEAN  IsDesignatorRange;
+  BOOLEAN  IsAbsolute;
+  BOOLEAN  HasNull;
+  UCHAR  Reserved;
+  USHORT  BitSize;
+  USHORT  ReportCount;
+  USHORT  Reserved2[5];
+  ULONG  UnitsExp;
+  ULONG  Units;
+  LONG  LogicalMin, LogicalMax;
+  LONG  PhysicalMin, PhysicalMax;
+    _ANONYMOUS_UNION union {
+      struct {
+        USAGE  UsageMin, UsageMax;
+        USHORT  StringMin, StringMax;
+        USHORT  DesignatorMin, DesignatorMax;
+        USHORT  DataIndexMin, DataIndexMax;
+      } Range;
+      struct {
+        USAGE  Usage, Reserved1;
+        USHORT  StringIndex, Reserved2;
+        USHORT  DesignatorIndex, Reserved3;
+        USHORT  DataIndex, Reserved4;
+      } NotRange;
+    } DUMMYUNIONNAME;
+} HIDP_VALUE_CAPS, *PHIDP_VALUE_CAPS;
+
+typedef enum _HIDP_REPORT_TYPE {
+  HidP_Input,
+  HidP_Output,
+  HidP_Feature
+} HIDP_REPORT_TYPE;
+
+#define FACILITY_HID_ERROR_CODE           0x11
+
+#define HIDP_ERROR_CODES(SEV, CODE) \
+  ((NTSTATUS) (((SEV) << 28) | (FACILITY_HID_ERROR_CODE << 16) | (CODE)))
+
+#define HIDP_STATUS_SUCCESS                 (HIDP_ERROR_CODES(0x0, 0))
+#define HIDP_STATUS_NULL                    (HIDP_ERROR_CODES(0x8, 1))
+#define HIDP_STATUS_INVALID_PREPARSED_DATA  (HIDP_ERROR_CODES(0xC, 1))
+#define HIDP_STATUS_INVALID_REPORT_TYPE     (HIDP_ERROR_CODES(0xC, 2))
+#define HIDP_STATUS_INVALID_REPORT_LENGTH   (HIDP_ERROR_CODES(0xC, 3))
+#define HIDP_STATUS_USAGE_NOT_FOUND         (HIDP_ERROR_CODES(0xC, 4))
+#define HIDP_STATUS_VALUE_OUT_OF_RANGE      (HIDP_ERROR_CODES(0xC, 5))
+#define HIDP_STATUS_BAD_LOG_PHY_VALUES      (HIDP_ERROR_CODES(0xC, 6))
+#define HIDP_STATUS_BUFFER_TOO_SMALL        (HIDP_ERROR_CODES(0xC, 7))
+#define HIDP_STATUS_INTERNAL_ERROR          (HIDP_ERROR_CODES(0xC, 8))
+#define HIDP_STATUS_I8042_TRANS_UNKNOWN     (HIDP_ERROR_CODES(0xC, 9))
+#define HIDP_STATUS_INCOMPATIBLE_REPORT_ID  (HIDP_ERROR_CODES(0xC, 0xA))
+#define HIDP_STATUS_NOT_VALUE_ARRAY         (HIDP_ERROR_CODES(0xC, 0xB))
+#define HIDP_STATUS_IS_VALUE_ARRAY          (HIDP_ERROR_CODES(0xC, 0xC))
+#define HIDP_STATUS_DATA_INDEX_NOT_FOUND    (HIDP_ERROR_CODES(0xC, 0xD))
+#define HIDP_STATUS_DATA_INDEX_OUT_OF_RANGE (HIDP_ERROR_CODES(0xC, 0xE))
+#define HIDP_STATUS_BUTTON_NOT_PRESSED      (HIDP_ERROR_CODES(0xC, 0xF))
+#define HIDP_STATUS_REPORT_DOES_NOT_EXIST   (HIDP_ERROR_CODES(0xC, 0x10))
+#define HIDP_STATUS_NOT_IMPLEMENTED         (HIDP_ERROR_CODES(0xC, 0x20))
+#define HIDP_STATUS_I8242_TRANS_UNKNOWN     HIDP_STATUS_I8042_TRANS_UNKNOWN
+
+
+
+/*
+ * NTSTATUS
+ * HidP_GetButtonCaps(
+ * IN HIDP_REPORT_TYPE  ReportType,
+ * OUT PHIDP_BUTTON_CAPS  ButtonCaps,
+ * IN OUT PULONG  ButtonCapsLength,
+ * IN PHIDP_PREPARSED_DATA  PreparsedData);
+ */
+#define HidP_GetButtonCaps(_Type_, _Caps_, _Len_, _Data_) \
+  HidP_GetSpecificButtonCaps(_Type_, 0, 0, 0, _Caps_, _Len_, _Data_)
+
+/*
+ * NTSTATUS
+ * HidP_GetButtons(
+ * IN HIDP_REPORT_TYPE  ReportType,
+ * IN USAGE  UsagePage,
+ * IN USHORT  LinkCollection,
+ * OUT USAGE  *UsageList,
+ * IN OUT ULONG  *UsageLength,
+ * IN PHIDP_PREPARSED_DATA  PreparsedData,
+ * IN PCHAR  Report,
+ * IN ULONG  ReportLength);
+ */
+#define HidP_GetButtons(Rty, UPa, LCo, ULi, ULe, Ppd, Rep, RLe) \
+  HidP_GetUsages(Rty, UPa, LCo, ULi, ULe, Ppd, Rep, RLe)
+
+#define HidP_GetButtonListLength(RTy, UPa, Ppd) \
+  HidP_GetUsageListLength(Rty, UPa, Ppd)
+
+
+/*
+ * NTSTATUS
+ * HidP_GetButtonsEx(
+ * IN HIDP_REPORT_TYPE  ReportType,
+ * IN USHORT  LinkCollection,
+ * OUT PUSAGE_AND_PAGE  ButtonList,
+ * IN OUT ULONG  *UsageLength,
+ * IN PHIDP_PREPARSED_DATA  PreparsedData,
+ * IN PCHAR  Report,
+ * IN ULONG  ReportLength);
+ */
+#define HidP_GetButtonsEx(RT, LC, BL, UL, PD, R, RL)  \
+  HidP_GetUsagesEx(RT, LC, BL, UL, PD, R, RL)
+
+HIDAPI
+NTSTATUS
+DDKAPI
+HidP_GetCaps(
+  /*IN*/ PHIDP_PREPARSED_DATA  PreparsedData,
+  /*OUT*/ PHIDP_CAPS  Capabilities);
+
+HIDAPI
+NTSTATUS
+DDKAPI
+HidP_GetData(
+  /*IN*/ HIDP_REPORT_TYPE  ReportType,
+  /*OUT*/ PHIDP_DATA  DataList,
+  /*IN OUT*/ PULONG  DataLength,
+  /*IN*/ PHIDP_PREPARSED_DATA  PreparsedData,
+  /*IN*/ PCHAR  Report,
+  /*IN*/ ULONG  ReportLength);
+
+HIDAPI
+NTSTATUS
+DDKAPI
+HidP_GetExtendedAttributes(
+  /*IN*/ HIDP_REPORT_TYPE  ReportType,
+  /*IN*/ USHORT  DataIndex,
+  /*IN*/ PHIDP_PREPARSED_DATA  PreparsedData,
+  /*OUT*/ PHIDP_EXTENDED_ATTRIBUTES  Attributes,
+  /*IN OUT*/ PULONG  LengthAttributes);
+
+HIDAPI
+NTSTATUS
+DDKAPI
+HidP_GetLinkCollectionNodes(
+  /*OUT*/ PHIDP_LINK_COLLECTION_NODE  LinkCollectionNodes,
+  /*IN OUT*/ PULONG  LinkCollectionNodesLength,
+  /*IN*/ PHIDP_PREPARSED_DATA  PreparsedData);
+
+HIDAPI
+NTSTATUS
+DDKAPI
+HidP_GetScaledUsageValue(
+  /*IN*/ HIDP_REPORT_TYPE  ReportType,
+  /*IN*/ USAGE  UsagePage,
+  /*IN*/ USHORT  LinkCollection  /*OPTIONAL*/,
+  /*IN*/ USAGE  Usage,
+  /*OUT*/ PLONG  UsageValue,
+  /*IN*/ PHIDP_PREPARSED_DATA  PreparsedData,
+  /*IN*/ PCHAR  Report,
+  /*IN*/ ULONG  ReportLength);
+
+HIDAPI
+NTSTATUS
+DDKAPI
+HidP_GetSpecificButtonCaps(
+  /*IN*/ HIDP_REPORT_TYPE  ReportType,
+  /*IN*/ USAGE  UsagePage,
+  /*IN*/ USHORT  LinkCollection,
+  /*IN*/ USAGE  Usage,
+  /*OUT*/ PHIDP_BUTTON_CAPS  ButtonCaps,
+  /*IN OUT*/ PULONG  ButtonCapsLength,
+  /*IN*/ PHIDP_PREPARSED_DATA  PreparsedData);
+
+HIDAPI
+NTSTATUS
+DDKAPI
+HidP_GetSpecificValueCaps(
+  /*IN*/ HIDP_REPORT_TYPE  ReportType,
+  /*IN*/ USAGE  UsagePage,
+  /*IN*/ USHORT  LinkCollection,
+  /*IN*/ USAGE  Usage,
+  /*OUT*/ PHIDP_VALUE_CAPS  ValueCaps,
+  /*IN OUT*/ PULONG  ValueCapsLength,
+  /*IN*/ PHIDP_PREPARSED_DATA  PreparsedData);
+
+HIDAPI
+NTSTATUS
+DDKAPI
+HidP_GetUsages(
+  /*IN*/ HIDP_REPORT_TYPE  ReportType,
+  /*IN*/ USAGE  UsagePage,
+  /*IN*/ USHORT  LinkCollection  /*OPTIONAL*/,
+  /*OUT*/ USAGE  *UsageList,
+  /*IN OUT*/ ULONG  *UsageLength,
+  /*IN*/ PHIDP_PREPARSED_DATA  PreparsedData,
+  /*IN*/ PCHAR  Report,
+  /*IN*/ ULONG  ReportLength);
+
+HIDAPI
+NTSTATUS
+DDKAPI
+HidP_GetUsagesEx(
+  /*IN*/ HIDP_REPORT_TYPE  ReportType,
+  /*IN*/ USHORT  LinkCollection,
+  /*OUT*/ PUSAGE_AND_PAGE  ButtonList,
+  /*IN OUT*/ ULONG  *UsageLength,
+  /*IN*/ PHIDP_PREPARSED_DATA  PreparsedData,
+  /*IN*/ PCHAR  Report,
+  /*IN*/ ULONG  ReportLength);
+
+HIDAPI
+NTSTATUS
+DDKAPI
+HidP_GetUsageValue(
+  /*IN*/ HIDP_REPORT_TYPE  ReportType,
+  /*IN*/ USAGE  UsagePage,
+  /*IN*/ USHORT  LinkCollection,
+  /*IN*/ USAGE  Usage,
+  /*OUT*/ PULONG  UsageValue,
+  /*IN*/ PHIDP_PREPARSED_DATA  PreparsedData,
+  /*IN*/ PCHAR  Report,
+  /*IN*/ ULONG  ReportLength);
+
+HIDAPI
+NTSTATUS
+DDKAPI
+HidP_GetUsageValueArray(
+  /*IN*/ HIDP_REPORT_TYPE  ReportType,
+  /*IN*/ USAGE  UsagePage,
+  /*IN*/ USHORT  LinkCollection  /*OPTIONAL*/,
+  /*IN*/ USAGE  Usage,
+  /*OUT*/ PCHAR  UsageValue,
+  /*IN*/ USHORT  UsageValueByteLength,
+  /*IN*/ PHIDP_PREPARSED_DATA  PreparsedData,
+  /*IN*/ PCHAR  Report,
+  /*IN*/ ULONG  ReportLength);
+
+/*
+ * NTSTATUS
+ * HidP_GetValueCaps(
+ * IN HIDP_REPORT_TYPE  ReportType,
+ * OUT PHIDP_VALUE_CAPS  ValueCaps,
+ * IN OUT PULONG  ValueCapsLength,
+ * IN PHIDP_PREPARSED_DATA  PreparsedData);
+ */
+#define HidP_GetValueCaps(_Type_, _Caps_, _Len_, _Data_) \
+  HidP_GetSpecificValueCaps (_Type_, 0, 0, 0, _Caps_, _Len_, _Data_)
+
+HIDAPI
+NTSTATUS
+DDKAPI
+HidP_InitializeReportForID(
+  /*IN*/ HIDP_REPORT_TYPE  ReportType,
+  /*IN*/ UCHAR  ReportID,
+  /*IN*/ PHIDP_PREPARSED_DATA  PreparsedData,
+  /*IN OUT*/ PCHAR  Report,
+  /*IN*/ ULONG  ReportLength);
+
+/*
+ * BOOLEAN
+ * HidP_IsSameUsageAndPage(
+ *   USAGE_AND_PAGE  u1,
+ *   USAGE_AND_PAGE  u2);
+ */
+#define HidP_IsSameUsageAndPage(u1, u2) ((* (PULONG) &u1) == (* (PULONG) &u2))
+
+HIDAPI
+ULONG
+DDKAPI
+HidP_MaxDataListLength(
+  /*IN*/ HIDP_REPORT_TYPE  ReportType,
+  /*IN*/ PHIDP_PREPARSED_DATA  PreparsedData);
+
+HIDAPI
+ULONG
+DDKAPI
+HidP_MaxUsageListLength(
+  /*IN*/ HIDP_REPORT_TYPE  ReportType,
+  /*IN*/ USAGE  UsagePage  /*OPTIONAL*/,
+  /*IN*/ PHIDP_PREPARSED_DATA  PreparsedData);
+
+/*
+ * NTSTATUS
+ * HidP_SetButtons(
+ * IN HIDP_REPORT_TYPE  ReportType,
+ * IN USAGE  UsagePage,
+ * IN USHORT  LinkCollection,
+ * IN PUSAGE  UsageList,
+ * IN OUT PULONG  UsageLength,
+ * IN PHIDP_PREPARSED_DATA  PreparsedData,
+ * IN OUT PCHAR  Report,
+ * IN ULONG  ReportLength);
+ */
+#define HidP_SetButtons(RT, UP, LC, UL1, UL2, PD, R, RL) \
+  HidP_SetUsages(RT, UP, LC, UL1, UL2, PD, R, RL)
+
+HIDAPI
+NTSTATUS
+DDKAPI
+HidP_SetData(
+  /*IN*/ HIDP_REPORT_TYPE  ReportType,
+  /*IN*/ PHIDP_DATA  DataList,
+  /*IN OUT*/ PULONG  DataLength,
+  /*IN*/ PHIDP_PREPARSED_DATA  PreparsedData,
+  /*IN OUT*/ PCHAR  Report,
+  /*IN*/ ULONG  ReportLength);
+
+HIDAPI
+NTSTATUS
+DDKAPI
+HidP_SetScaledUsageValue(
+  /*IN*/ HIDP_REPORT_TYPE  ReportType,
+  /*IN*/ USAGE  UsagePage,
+  /*IN*/ USHORT  LinkCollection  /*OPTIONAL*/,
+  /*IN*/ USAGE  Usage,
+  /*IN*/ LONG  UsageValue,
+  /*IN*/ PHIDP_PREPARSED_DATA  PreparsedData,
+  /*IN OUT*/ PCHAR  Report,
+  /*IN*/ ULONG  ReportLength);
+
+HIDAPI
+NTSTATUS
+DDKAPI
+HidP_SetUsages(
+  /*IN*/ HIDP_REPORT_TYPE  ReportType,
+  /*IN*/ USAGE  UsagePage,
+  /*IN*/ USHORT  LinkCollection /*OPTIONAL*/,
+  /*IN*/ PUSAGE  UsageList,
+  /*IN OUT*/ PULONG  UsageLength,
+  /*IN*/ PHIDP_PREPARSED_DATA  PreparsedData,
+  /*IN OUT*/ PCHAR  Report,
+  /*IN*/ ULONG  ReportLength);
+
+HIDAPI
+NTSTATUS
+DDKAPI
+HidP_SetUsageValue(
+  /*IN*/ HIDP_REPORT_TYPE  ReportType,
+  /*IN*/ USAGE  UsagePage,
+  /*IN*/ USHORT  LinkCollection,
+  /*IN*/ USAGE  Usage,
+  /*IN*/ ULONG  UsageValue,
+  /*IN*/ PHIDP_PREPARSED_DATA  PreparsedData,
+  /*IN OUT*/ PCHAR  Report,
+  /*IN*/ ULONG  ReportLength);
+
+HIDAPI
+NTSTATUS
+DDKAPI
+HidP_SetUsageValueArray(
+  /*IN*/ HIDP_REPORT_TYPE  ReportType,
+  /*IN*/ USAGE  UsagePage,
+  /*IN*/ USHORT  LinkCollection  /*OPTIONAL*/,
+  /*IN*/ USAGE  Usage,
+  /*IN*/ PCHAR  UsageValue,
+  /*IN*/ USHORT  UsageValueByteLength,
+  /*IN*/ PHIDP_PREPARSED_DATA  PreparsedData,
+  /*OUT*/ PCHAR  Report,
+  /*IN*/ ULONG  ReportLength);
+
+/*
+ * NTSTATUS
+ * HidP_UnsetButtons(
+ * IN HIDP_REPORT_TYPE  ReportType,
+ * IN USAGE  UsagePage,
+ * IN USHORT  LinkCollection,
+ * IN PUSAGE  UsageList,
+ * IN OUT PULONG  UsageLength,
+ * IN PHIDP_PREPARSED_DATA  PreparsedData,
+ * IN OUT PCHAR  Report,
+ * IN ULONG  ReportLength);
+ */
+#define HidP_UnsetButtons(RT, UP, LC, UL1, UL2, PD, R, RL) \
+  HidP_UnsetUsages(RT, UP, LC, UL1, UL2, PD, R, RL)
+
+HIDAPI
+NTSTATUS
+DDKAPI
+HidP_UnsetUsages(
+  /*IN*/ HIDP_REPORT_TYPE  ReportType,
+  /*IN*/ USAGE  UsagePage,
+  /*IN*/ USHORT  LinkCollection,
+  /*IN*/ PUSAGE  UsageList,
+  /*IN OUT*/ PULONG  UsageLength,
+  /*IN*/ PHIDP_PREPARSED_DATA  PreparsedData,
+  /*IN OUT*/ PCHAR  Report,
+  /*IN*/ ULONG  ReportLength);
+
+HIDAPI
+NTSTATUS
+DDKAPI
+HidP_UsageAndPageListDifference(
+  /*IN*/ PUSAGE_AND_PAGE  PreviousUsageList,
+  /*IN*/ PUSAGE_AND_PAGE  CurrentUsageList,
+  /*OUT*/ PUSAGE_AND_PAGE  BreakUsageList,
+  /*OUT*/ PUSAGE_AND_PAGE  MakeUsageList,
+  /*IN*/ ULONG  UsageListLength);
+
+HIDAPI
+NTSTATUS
+DDKAPI
+HidP_UsageListDifference(
+  /*IN*/ PUSAGE  PreviousUsageList,
+  /*IN*/ PUSAGE  CurrentUsageList,
+  /*OUT*/ PUSAGE  BreakUsageList,
+  /*OUT*/ PUSAGE  MakeUsageList,
+  /*IN*/ ULONG  UsageListLength);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __HIDPI_H */
Index: Daodan/MinGW/include/ddk/hidsdi.h
===================================================================
--- Daodan/MinGW/include/ddk/hidsdi.h	(revision 1046)
+++ Daodan/MinGW/include/ddk/hidsdi.h	(revision 1046)
@@ -0,0 +1,73 @@
+/*
+ * hidsdi.h
+ *
+ * This file is part of the w32api package.
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ */
+
+#ifndef _HIDSDI_H
+#define _HIDSDI_H
+
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <ddk/hidusage.h>
+#include <ddk/hidpi.h>
+
+#ifndef WINHIDSDI
+#define WINHIDSDI DECLSPEC_IMPORT
+#endif
+
+#include <pshpack4.h>
+
+typedef struct _HIDD_CONFIGURATION {
+	PVOID cookie;
+ 	ULONG size;
+	ULONG RingBufferSize;
+} HIDD_CONFIGURATION, *PHIDD_CONFIGURATION;
+
+typedef struct _HIDD_ATTRIBUTES {
+	ULONG Size;
+	USHORT VendorID;
+	USHORT ProductID;
+	USHORT VersionNumber;
+} HIDD_ATTRIBUTES, *PHIDD_ATTRIBUTES;
+
+WINHIDSDI BOOL WINAPI HidD_GetAttributes (HANDLE, PHIDD_ATTRIBUTES);
+WINHIDSDI VOID WINAPI HidD_GetHidGuid (LPGUID);
+WINHIDSDI BOOL WINAPI HidD_GetPreparsedData(HANDLE, PHIDP_PREPARSED_DATA  *);
+WINHIDSDI BOOL WINAPI HidD_FreePreparsedData(PHIDP_PREPARSED_DATA);
+WINHIDSDI BOOL WINAPI HidD_FlushQueue (HANDLE);
+WINHIDSDI BOOL WINAPI HidD_GetConfiguration (HANDLE, PHIDD_CONFIGURATION, ULONG);
+WINHIDSDI BOOL WINAPI HidD_SetConfiguration (HANDLE, PHIDD_CONFIGURATION, ULONG);
+WINHIDSDI BOOL WINAPI HidD_GetFeature (HANDLE, PVOID, ULONG);
+WINHIDSDI BOOL WINAPI HidD_SetFeature (HANDLE, PVOID, ULONG);
+WINHIDSDI BOOL WINAPI HidD_GetNumInputBuffers (HANDLE, PULONG);
+WINHIDSDI BOOL WINAPI HidD_SetNumInputBuffers (HANDLE HidDeviceObject, ULONG);
+WINHIDSDI BOOL WINAPI HidD_GetPhysicalDescriptor (HANDLE, PVOID, ULONG);
+WINHIDSDI BOOL WINAPI HidD_GetManufacturerString (HANDLE, PVOID, ULONG);
+WINHIDSDI BOOL WINAPI HidD_GetProductString ( HANDLE, PVOID, ULONG);
+WINHIDSDI BOOL WINAPI HidD_GetIndexedString ( HANDLE, ULONG, PVOID, ULONG);
+WINHIDSDI BOOL WINAPI HidD_GetSerialNumberString (HANDLE, PVOID, ULONG);
+
+#include <poppack.h>
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _HIDSDI_H */
Index: Daodan/MinGW/include/ddk/hidusage.h
===================================================================
--- Daodan/MinGW/include/ddk/hidusage.h	(revision 1046)
+++ Daodan/MinGW/include/ddk/hidusage.h	(revision 1046)
@@ -0,0 +1,210 @@
+/*
+ * hidusage.h
+ *
+ * HID usages
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __HIDUSAGE_H
+#define __HIDUSAGE_H
+
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef USHORT USAGE, *PUSAGE;
+
+#define HID_USAGE_GENERIC_POINTER             ((USAGE) 0x01)
+#define HID_USAGE_GENERIC_MOUSE               ((USAGE) 0x02)
+#define HID_USAGE_GENERIC_JOYSTICK            ((USAGE) 0x04)
+#define HID_USAGE_GENERIC_GAMEPAD             ((USAGE) 0x05)
+#define HID_USAGE_GENERIC_KEYBOARD            ((USAGE) 0x06)
+#define HID_USAGE_GENERIC_KEYPAD              ((USAGE) 0x07)
+#define HID_USAGE_GENERIC_SYSTEM_CTL          ((USAGE) 0x80)
+#define HID_USAGE_GENERIC_X                   ((USAGE) 0x30)
+#define HID_USAGE_GENERIC_Y                   ((USAGE) 0x31)
+#define HID_USAGE_GENERIC_Z                   ((USAGE) 0x32)
+#define HID_USAGE_GENERIC_RX                  ((USAGE) 0x33)
+#define HID_USAGE_GENERIC_RY                  ((USAGE) 0x34)
+#define HID_USAGE_GENERIC_RZ                  ((USAGE) 0x35)
+#define HID_USAGE_GENERIC_SLIDER              ((USAGE) 0x36)
+#define HID_USAGE_GENERIC_DIAL                ((USAGE) 0x37)
+#define HID_USAGE_GENERIC_WHEEL               ((USAGE) 0x38)
+#define HID_USAGE_GENERIC_HATSWITCH           ((USAGE) 0x39)
+#define HID_USAGE_GENERIC_COUNTED_BUFFER      ((USAGE) 0x3A)
+#define HID_USAGE_GENERIC_BYTE_COUNT          ((USAGE) 0x3B)
+#define HID_USAGE_GENERIC_MOTION_WAKEUP       ((USAGE) 0x3C)
+#define HID_USAGE_GENERIC_VX                  ((USAGE) 0x40)
+#define HID_USAGE_GENERIC_VY                  ((USAGE) 0x41)
+#define HID_USAGE_GENERIC_VZ                  ((USAGE) 0x42)
+#define HID_USAGE_GENERIC_VBRX                ((USAGE) 0x43)
+#define HID_USAGE_GENERIC_VBRY                ((USAGE) 0x44)
+#define HID_USAGE_GENERIC_VBRZ                ((USAGE) 0x45)
+#define HID_USAGE_GENERIC_VNO                 ((USAGE) 0x46)
+#define HID_USAGE_GENERIC_SYSCTL_POWER        ((USAGE) 0x81)
+#define HID_USAGE_GENERIC_SYSCTL_SLEEP        ((USAGE) 0x82)
+#define HID_USAGE_GENERIC_SYSCTL_WAKE         ((USAGE) 0x83)
+#define HID_USAGE_GENERIC_SYSCTL_CONTEXT_MENU ((USAGE) 0x84)
+#define HID_USAGE_GENERIC_SYSCTL_MAIN_MENU    ((USAGE) 0x85)
+#define HID_USAGE_GENERIC_SYSCTL_APP_MENU     ((USAGE) 0x86)
+#define HID_USAGE_GENERIC_SYSCTL_HELP_MENU    ((USAGE) 0x87)
+#define HID_USAGE_GENERIC_SYSCTL_MENU_EXIT    ((USAGE) 0x88)
+#define HID_USAGE_GENERIC_SYSCTL_MENU_SELECT  ((USAGE) 0x89)
+#define HID_USAGE_GENERIC_SYSCTL_MENU_RIGHT   ((USAGE) 0x8A)
+#define HID_USAGE_GENERIC_SYSCTL_MENU_LEFT    ((USAGE) 0x8B)
+#define HID_USAGE_GENERIC_SYSCTL_MENU_UP      ((USAGE) 0x8C)
+#define HID_USAGE_GENERIC_SYSCTL_MENU_DOWN    ((USAGE) 0x8D)
+
+#define HID_USAGE_KEYBOARD_NOEVENT        ((USAGE) 0x00)
+#define HID_USAGE_KEYBOARD_ROLLOVER       ((USAGE) 0x01)
+#define HID_USAGE_KEYBOARD_POSTFAIL       ((USAGE) 0x02)
+#define HID_USAGE_KEYBOARD_UNDEFINED      ((USAGE) 0x03)
+#define HID_USAGE_KEYBOARD_aA             ((USAGE) 0x04)
+#define HID_USAGE_KEYBOARD_zZ             ((USAGE) 0x1D)
+#define HID_USAGE_KEYBOARD_ONE            ((USAGE) 0x1E)
+#define HID_USAGE_KEYBOARD_ZERO           ((USAGE) 0x27)
+#define HID_USAGE_KEYBOARD_LCTRL          ((USAGE) 0xE0)
+#define HID_USAGE_KEYBOARD_LSHFT          ((USAGE) 0xE1)
+#define HID_USAGE_KEYBOARD_LALT           ((USAGE) 0xE2)
+#define HID_USAGE_KEYBOARD_LGUI           ((USAGE) 0xE3)
+#define HID_USAGE_KEYBOARD_RCTRL          ((USAGE) 0xE4)
+#define HID_USAGE_KEYBOARD_RSHFT          ((USAGE) 0xE5)
+#define HID_USAGE_KEYBOARD_RALT           ((USAGE) 0xE6)
+#define HID_USAGE_KEYBOARD_RGUI           ((USAGE) 0xE7)
+#define HID_USAGE_KEYBOARD_SCROLL_LOCK    ((USAGE) 0x47)
+#define HID_USAGE_KEYBOARD_NUM_LOCK       ((USAGE) 0x53)
+#define HID_USAGE_KEYBOARD_CAPS_LOCK      ((USAGE) 0x39)
+#define HID_USAGE_KEYBOARD_F1             ((USAGE) 0x3A)
+#define HID_USAGE_KEYBOARD_F12            ((USAGE) 0x45)
+#define HID_USAGE_KEYBOARD_RETURN         ((USAGE) 0x28)
+#define HID_USAGE_KEYBOARD_ESCAPE         ((USAGE) 0x29)
+#define HID_USAGE_KEYBOARD_DELETE         ((USAGE) 0x2A)
+#define HID_USAGE_KEYBOARD_PRINT_SCREEN   ((USAGE) 0x46)
+
+#define HID_USAGE_LED_NUM_LOCK                  ((USAGE) 0x01)
+#define HID_USAGE_LED_CAPS_LOCK                 ((USAGE) 0x02)
+#define HID_USAGE_LED_SCROLL_LOCK               ((USAGE) 0x03)
+#define HID_USAGE_LED_COMPOSE                   ((USAGE) 0x04)
+#define HID_USAGE_LED_KANA                      ((USAGE) 0x05)
+#define HID_USAGE_LED_POWER                     ((USAGE) 0x06)
+#define HID_USAGE_LED_SHIFT                     ((USAGE) 0x07)
+#define HID_USAGE_LED_DO_NOT_DISTURB            ((USAGE) 0x08)
+#define HID_USAGE_LED_MUTE                      ((USAGE) 0x09)
+#define HID_USAGE_LED_TONE_ENABLE               ((USAGE) 0x0A)
+#define HID_USAGE_LED_HIGH_CUT_FILTER           ((USAGE) 0x0B)
+#define HID_USAGE_LED_LOW_CUT_FILTER            ((USAGE) 0x0C)
+#define HID_USAGE_LED_EQUALIZER_ENABLE          ((USAGE) 0x0D)
+#define HID_USAGE_LED_SOUND_FIELD_ON            ((USAGE) 0x0E)
+#define HID_USAGE_LED_SURROUND_FIELD_ON         ((USAGE) 0x0F)
+#define HID_USAGE_LED_REPEAT                    ((USAGE) 0x10)
+#define HID_USAGE_LED_STEREO                    ((USAGE) 0x11)
+#define HID_USAGE_LED_SAMPLING_RATE_DETECT      ((USAGE) 0x12)
+#define HID_USAGE_LED_SPINNING                  ((USAGE) 0x13)
+#define HID_USAGE_LED_CAV                       ((USAGE) 0x14)
+#define HID_USAGE_LED_CLV                       ((USAGE) 0x15)
+#define HID_USAGE_LED_RECORDING_FORMAT_DET      ((USAGE) 0x16)
+#define HID_USAGE_LED_OFF_HOOK                  ((USAGE) 0x17)
+#define HID_USAGE_LED_RING                      ((USAGE) 0x18)
+#define HID_USAGE_LED_MESSAGE_WAITING           ((USAGE) 0x19)
+#define HID_USAGE_LED_DATA_MODE                 ((USAGE) 0x1A)
+#define HID_USAGE_LED_BATTERY_OPERATION         ((USAGE) 0x1B)
+#define HID_USAGE_LED_BATTERY_OK                ((USAGE) 0x1C)
+#define HID_USAGE_LED_BATTERY_LOW               ((USAGE) 0x1D)
+#define HID_USAGE_LED_SPEAKER                   ((USAGE) 0x1E)
+#define HID_USAGE_LED_HEAD_SET                  ((USAGE) 0x1F)
+#define HID_USAGE_LED_HOLD                      ((USAGE) 0x20)
+#define HID_USAGE_LED_MICROPHONE                ((USAGE) 0x21)
+#define HID_USAGE_LED_COVERAGE                  ((USAGE) 0x22)
+#define HID_USAGE_LED_NIGHT_MODE                ((USAGE) 0x23)
+#define HID_USAGE_LED_SEND_CALLS                ((USAGE) 0x24)
+#define HID_USAGE_LED_CALL_PICKUP               ((USAGE) 0x25)
+#define HID_USAGE_LED_CONFERENCE                ((USAGE) 0x26)
+#define HID_USAGE_LED_STAND_BY                  ((USAGE) 0x27)
+#define HID_USAGE_LED_CAMERA_ON                 ((USAGE) 0x28)
+#define HID_USAGE_LED_CAMERA_OFF                ((USAGE) 0x29)
+#define HID_USAGE_LED_ON_LINE                   ((USAGE) 0x2A)
+#define HID_USAGE_LED_OFF_LINE                  ((USAGE) 0x2B)
+#define HID_USAGE_LED_BUSY                      ((USAGE) 0x2C)
+#define HID_USAGE_LED_READY                     ((USAGE) 0x2D)
+#define HID_USAGE_LED_PAPER_OUT                 ((USAGE) 0x2E)
+#define HID_USAGE_LED_PAPER_JAM                 ((USAGE) 0x2F)
+#define HID_USAGE_LED_REMOTE                    ((USAGE) 0x30)
+#define HID_USAGE_LED_FORWARD                   ((USAGE) 0x31)
+#define HID_USAGE_LED_REVERSE                   ((USAGE) 0x32)
+#define HID_USAGE_LED_STOP                      ((USAGE) 0x33)
+#define HID_USAGE_LED_REWIND                    ((USAGE) 0x34)
+#define HID_USAGE_LED_FAST_FORWARD              ((USAGE) 0x35)
+#define HID_USAGE_LED_PLAY                      ((USAGE) 0x36)
+#define HID_USAGE_LED_PAUSE                     ((USAGE) 0x37)
+#define HID_USAGE_LED_RECORD                    ((USAGE) 0x38)
+#define HID_USAGE_LED_ERROR                     ((USAGE) 0x39)
+#define HID_USAGE_LED_SELECTED_INDICATOR        ((USAGE) 0x3A)
+#define HID_USAGE_LED_IN_USE_INDICATOR          ((USAGE) 0x3B)
+#define HID_USAGE_LED_MULTI_MODE_INDICATOR      ((USAGE) 0x3C)
+#define HID_USAGE_LED_INDICATOR_ON              ((USAGE) 0x3D)
+#define HID_USAGE_LED_INDICATOR_FLASH           ((USAGE) 0x3E)
+#define HID_USAGE_LED_INDICATOR_SLOW_BLINK      ((USAGE) 0x3F)
+#define HID_USAGE_LED_INDICATOR_FAST_BLINK      ((USAGE) 0x40)
+#define HID_USAGE_LED_INDICATOR_OFF             ((USAGE) 0x41)
+#define HID_USAGE_LED_FLASH_ON_TIME             ((USAGE) 0x42)
+#define HID_USAGE_LED_SLOW_BLINK_ON_TIME        ((USAGE) 0x43)
+#define HID_USAGE_LED_SLOW_BLINK_OFF_TIME       ((USAGE) 0x44)
+#define HID_USAGE_LED_FAST_BLINK_ON_TIME        ((USAGE) 0x45)
+#define HID_USAGE_LED_FAST_BLINK_OFF_TIME       ((USAGE) 0x46)
+#define HID_USAGE_LED_INDICATOR_COLOR           ((USAGE) 0x47)
+#define HID_USAGE_LED_RED                       ((USAGE) 0x48)
+#define HID_USAGE_LED_GREEN                     ((USAGE) 0x49)
+#define HID_USAGE_LED_AMBER                     ((USAGE) 0x4A)
+#define HID_USAGE_LED_GENERIC_INDICATOR         ((USAGE) 0x3B)
+
+#define HID_USAGE_PAGE_UNDEFINED          ((USAGE) 0x00)
+#define HID_USAGE_PAGE_GENERIC            ((USAGE) 0x01)
+#define HID_USAGE_PAGE_SIMULATION         ((USAGE) 0x02)
+#define HID_USAGE_PAGE_VR                 ((USAGE) 0x03)
+#define HID_USAGE_PAGE_SPORT              ((USAGE) 0x04)
+#define HID_USAGE_PAGE_GAME               ((USAGE) 0x05)
+#define HID_USAGE_PAGE_KEYBOARD           ((USAGE) 0x07)
+#define HID_USAGE_PAGE_LED                ((USAGE) 0x08)
+#define HID_USAGE_PAGE_BUTTON             ((USAGE) 0x09)
+#define HID_USAGE_PAGE_ORDINAL            ((USAGE) 0x0A)
+#define HID_USAGE_PAGE_TELEPHONY          ((USAGE) 0x0B)
+#define HID_USAGE_PAGE_CONSUMER           ((USAGE) 0x0C)
+#define HID_USAGE_PAGE_DIGITIZER          ((USAGE) 0x0D)
+#define HID_USAGE_PAGE_UNICODE            ((USAGE) 0x10)
+#define HID_USAGE_PAGE_ALPHANUMERIC       ((USAGE) 0x14)
+
+#define HID_USAGE_TELEPHONY_PHONE               ((USAGE) 0x01)
+#define HID_USAGE_TELEPHONY_ANSWERING_MACHINE   ((USAGE) 0x02)
+#define HID_USAGE_TELEPHONY_MESSAGE_CONTROLS    ((USAGE) 0x03)
+#define HID_USAGE_TELEPHONY_HANDSET             ((USAGE) 0x04)
+#define HID_USAGE_TELEPHONY_HEADSET             ((USAGE) 0x05)
+#define HID_USAGE_TELEPHONY_KEYPAD              ((USAGE) 0x06)
+#define HID_USAGE_TELEPHONY_PROGRAMMABLE_BUTTON ((USAGE) 0x07)
+
+#define HID_USAGE_SIMULATION_RUDDER       ((USAGE) 0xBA)
+#define HID_USAGE_SIMULATION_THROTTLE     ((USAGE) 0xBB)
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __HIDUSAGE_H */
Index: Daodan/MinGW/include/ddk/kbdmou.h
===================================================================
--- Daodan/MinGW/include/ddk/kbdmou.h	(revision 1046)
+++ Daodan/MinGW/include/ddk/kbdmou.h	(revision 1046)
@@ -0,0 +1,91 @@
+/*
+ * kbdmou.h
+ *
+ * Structures and definitions for Keyboard/Mouse class and port drivers.
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Filip Navara <xnavara@volny.cz>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __KBDMOU_H
+#define __KBDMOU_H
+
+#include <ddk/ntddkbd.h>
+#include <ddk/ntddmou.h>
+
+#define DD_KEYBOARD_PORT_DEVICE_NAME      "\\Device\\KeyboardPort"
+#define DD_KEYBOARD_PORT_DEVICE_NAME_U    L"\\Device\\KeyboardPort"
+#define DD_KEYBOARD_PORT_BASE_NAME_U      L"KeyboardPort"
+#define DD_POINTER_PORT_DEVICE_NAME       "\\Device\\PointerPort"
+#define DD_POINTER_PORT_DEVICE_NAME_U     L"\\Device\\PointerPort"
+#define DD_POINTER_PORT_BASE_NAME_U       L"PointerPort"
+
+#define DD_KEYBOARD_CLASS_BASE_NAME_U     L"KeyboardClass"
+#define DD_POINTER_CLASS_BASE_NAME_U      L"PointerClass"
+
+#define DD_KEYBOARD_RESOURCE_CLASS_NAME_U             L"Keyboard"
+#define DD_POINTER_RESOURCE_CLASS_NAME_U              L"Pointer"
+#define DD_KEYBOARD_MOUSE_COMBO_RESOURCE_CLASS_NAME_U L"Keyboard/Pointer"
+
+#define POINTER_PORTS_MAXIMUM             8
+#define KEYBOARD_PORTS_MAXIMUM            8
+
+#define KBDMOU_COULD_NOT_SEND_COMMAND     0x0000
+#define KBDMOU_COULD_NOT_SEND_PARAM       0x0001
+#define KBDMOU_NO_RESPONSE                0x0002
+#define KBDMOU_INCORRECT_RESPONSE         0x0004
+
+#define I8042_ERROR_VALUE_BASE            1000
+#define INPORT_ERROR_VALUE_BASE           2000
+#define SERIAL_MOUSE_ERROR_VALUE_BASE     3000
+
+#define IOCTL_INTERNAL_KEYBOARD_CONNECT \
+  CTL_CODE(FILE_DEVICE_KEYBOARD, 0x0080, METHOD_NEITHER, FILE_ANY_ACCESS)
+
+#define IOCTL_INTERNAL_KEYBOARD_DISCONNECT \
+  CTL_CODE(FILE_DEVICE_KEYBOARD,0x0100, METHOD_NEITHER, FILE_ANY_ACCESS)
+
+#define IOCTL_INTERNAL_KEYBOARD_ENABLE \
+  CTL_CODE(FILE_DEVICE_KEYBOARD, 0x0200, METHOD_NEITHER, FILE_ANY_ACCESS)
+
+#define IOCTL_INTERNAL_KEYBOARD_DISABLE \
+  CTL_CODE(FILE_DEVICE_KEYBOARD, 0x0400, METHOD_NEITHER, FILE_ANY_ACCESS)
+
+#define IOCTL_INTERNAL_MOUSE_CONNECT \
+  CTL_CODE(FILE_DEVICE_MOUSE, 0x0080, METHOD_NEITHER, FILE_ANY_ACCESS)
+
+#define IOCTL_INTERNAL_MOUSE_DISCONNECT \
+  CTL_CODE(FILE_DEVICE_MOUSE, 0x0100, METHOD_NEITHER, FILE_ANY_ACCESS)
+
+#define IOCTL_INTERNAL_MOUSE_ENABLE \
+  CTL_CODE(FILE_DEVICE_MOUSE, 0x0200, METHOD_NEITHER, FILE_ANY_ACCESS)
+
+#define IOCTL_INTERNAL_MOUSE_DISABLE \
+  CTL_CODE(FILE_DEVICE_MOUSE, 0x0400, METHOD_NEITHER, FILE_ANY_ACCESS)
+
+typedef struct _CONNECT_DATA {
+	PDEVICE_OBJECT  ClassDeviceObject;
+	PVOID  ClassService;
+} CONNECT_DATA, *PCONNECT_DATA;
+
+typedef VOID
+(STDAPICALLTYPE *PSERVICE_CALLBACK_ROUTINE)(
+  /*IN*/ PVOID NormalContext,
+  /*IN*/ PVOID SystemArgument1,
+  /*IN*/ PVOID SystemArgument2,
+  /*IN OUT*/ PVOID SystemArgument3);
+
+#endif /* __KBDMOU_H */
Index: Daodan/MinGW/include/ddk/mcd.h
===================================================================
--- Daodan/MinGW/include/ddk/mcd.h	(revision 1046)
+++ Daodan/MinGW/include/ddk/mcd.h	(revision 1046)
@@ -0,0 +1,143 @@
+/*
+ * mcd.h
+ *
+ * Media changer driver interface
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __MCD_H
+#define __MCD_H
+
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "ntddk.h"
+#include "srb.h"
+#include "scsi.h"
+#include "ntddchgr.h"
+
+#if defined(_MCD_)
+  #define CHANGERAPI DECLSPEC_EXPORT
+#else
+  #define CHANGERAPI DECLSPEC_IMPORT
+#endif
+
+#ifdef DebugPrint
+#undef DebugPrint
+#endif
+
+#ifdef DBG
+#define DebugPrint(x) ChangerClassDebugPrint x
+#else
+#define DebugPrint(x)
+#endif
+
+#define MAXIMUM_CHANGER_INQUIRY_DATA			252
+
+CHANGERAPI
+PVOID
+DDKAPI
+ChangerClassAllocatePool(
+  /*IN*/ POOL_TYPE  PoolType,
+  /*IN*/ ULONG  NumberOfBytes);
+
+VOID
+ChangerClassDebugPrint(
+  ULONG  DebugPrintLevel,
+  PCCHAR  DebugMessage,
+  ...);
+
+CHANGERAPI
+PVOID
+DDKAPI
+ChangerClassFreePool(
+  /*IN*/ PVOID  PoolToFree);
+
+CHANGERAPI
+NTSTATUS
+DDKAPI
+ChangerClassSendSrbSynchronous(
+  /*IN*/ PDEVICE_OBJECT  DeviceObject,
+  /*IN*/ PSCSI_REQUEST_BLOCK  Srb,
+  /*IN*/ PVOID  Buffer,
+  /*IN*/ ULONG  BufferSize,
+  /*IN*/ BOOLEAN  WriteToDevice);
+
+
+typedef NTSTATUS DDKAPI
+(*CHANGER_INITIALIZE)(
+  /*IN*/ PDEVICE_OBJECT  DeviceObject);
+
+typedef ULONG DDKAPI
+(*CHANGER_EXTENSION_SIZE)(
+  VOID);
+
+typedef VOID DDKAPI
+(*CHANGER_ERROR_ROUTINE)(
+  PDEVICE_OBJECT  DeviceObject,
+  PSCSI_REQUEST_BLOCK  Srb,
+  NTSTATUS  *Status,
+  BOOLEAN  *Retry);
+
+typedef NTSTATUS DDKAPI
+(*CHANGER_COMMAND_ROUTINE)(
+  /*IN*/ PDEVICE_OBJECT  DeviceObject,
+  /*IN*/ PIRP  Irp);
+
+typedef NTSTATUS DDKAPI
+(*CHANGER_PERFORM_DIAGNOSTICS)(
+  /*IN*/ PDEVICE_OBJECT  DeviceObject,
+  /*OUT*/ PWMI_CHANGER_PROBLEM_DEVICE_ERROR  ChangerDeviceError);
+
+typedef struct _MCD_INIT_DATA {
+  ULONG  InitDataSize;
+  CHANGER_EXTENSION_SIZE  ChangerAdditionalExtensionSize;
+  CHANGER_INITIALIZE  ChangerInitialize;
+  CHANGER_ERROR_ROUTINE  ChangerError;
+  CHANGER_PERFORM_DIAGNOSTICS  ChangerPerformDiagnostics;
+  CHANGER_COMMAND_ROUTINE  ChangerGetParameters;
+  CHANGER_COMMAND_ROUTINE  ChangerGetStatus;
+  CHANGER_COMMAND_ROUTINE  ChangerGetProductData;
+  CHANGER_COMMAND_ROUTINE  ChangerSetAccess;
+  CHANGER_COMMAND_ROUTINE  ChangerGetElementStatus;
+  CHANGER_COMMAND_ROUTINE  ChangerInitializeElementStatus;
+  CHANGER_COMMAND_ROUTINE  ChangerSetPosition;
+  CHANGER_COMMAND_ROUTINE  ChangerExchangeMedium;
+  CHANGER_COMMAND_ROUTINE  ChangerMoveMedium;
+  CHANGER_COMMAND_ROUTINE  ChangerReinitializeUnit;
+  CHANGER_COMMAND_ROUTINE  ChangerQueryVolumeTags;
+} MCD_INIT_DATA, *PMCD_INIT_DATA;
+
+CHANGERAPI
+NTSTATUS
+DDKAPI
+ChangerClassInitialize(
+  /*IN*/ PDRIVER_OBJECT  DriverObject,
+  /*IN*/ PUNICODE_STRING  RegistryPath,
+  /*IN*/ PMCD_INIT_DATA  MCDInitData);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __MCD_H */
Index: Daodan/MinGW/include/ddk/miniport.h
===================================================================
--- Daodan/MinGW/include/ddk/miniport.h	(revision 1046)
+++ Daodan/MinGW/include/ddk/miniport.h	(revision 1046)
@@ -0,0 +1,77 @@
+/*
+ * miniport.h
+ *
+ * Type definitions for miniport drivers
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __MINIPORT_H
+#define __MINIPORT_H
+
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "ntddk.h"
+
+#define EMULATOR_READ_ACCESS              0x01
+#define EMULATOR_WRITE_ACCESS             0x02
+
+typedef enum _EMULATOR_PORT_ACCESS_TYPE {
+	Uchar,
+	Ushort,
+	Ulong
+} EMULATOR_PORT_ACCESS_TYPE, *PEMULATOR_PORT_ACCESS_TYPE;
+
+
+typedef struct _EMULATOR_ACCESS_ENTRY {
+  ULONG  BasePort;
+  ULONG  NumConsecutivePorts;
+  EMULATOR_PORT_ACCESS_TYPE  AccessType;
+  UCHAR  AccessMode;
+  UCHAR  StringSupport;
+  PVOID  Routine;
+} EMULATOR_ACCESS_ENTRY, *PEMULATOR_ACCESS_ENTRY;
+
+#ifndef VIDEO_ACCESS_RANGE_DEFINED /* also in video.h */
+#define VIDEO_ACCESS_RANGE_DEFINED
+typedef struct _VIDEO_ACCESS_RANGE {
+  PHYSICAL_ADDRESS  RangeStart;
+  ULONG  RangeLength;
+  UCHAR  RangeInIoSpace;
+  UCHAR  RangeVisible;
+  UCHAR  RangeShareable;
+  UCHAR  RangePassive;
+} VIDEO_ACCESS_RANGE, *PVIDEO_ACCESS_RANGE;
+#endif
+
+typedef VOID DDKAPI
+(*PBANKED_SECTION_ROUTINE)(
+  /*IN*/ ULONG  ReadBank,
+  /*IN*/ ULONG  WriteBank,
+  /*IN*/ PVOID  Context);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __MINIPORT_H */
Index: Daodan/MinGW/include/ddk/minitape.h
===================================================================
--- Daodan/MinGW/include/ddk/minitape.h	(revision 1046)
+++ Daodan/MinGW/include/ddk/minitape.h	(revision 1046)
@@ -0,0 +1,223 @@
+/*
+ * minitape.h
+ *
+ * Minitape driver interface
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+#ifndef __MINITAPE_H
+#define __MINITAPE_H
+
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#pragma pack(push,4)
+
+#include "ntddk.h"
+
+#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 _TAPE_STATUS {
+	TAPE_STATUS_SEND_SRB_AND_CALLBACK,
+	TAPE_STATUS_CALLBACK,
+	TAPE_STATUS_CHECK_TEST_UNIT_READY,
+	TAPE_STATUS_SUCCESS,
+	TAPE_STATUS_INSUFFICIENT_RESOURCES,
+	TAPE_STATUS_NOT_IMPLEMENTED,
+	TAPE_STATUS_INVALID_DEVICE_REQUEST,
+	TAPE_STATUS_INVALID_PARAMETER,
+	TAPE_STATUS_MEDIA_CHANGED,
+	TAPE_STATUS_BUS_RESET,
+	TAPE_STATUS_SETMARK_DETECTED,
+	TAPE_STATUS_FILEMARK_DETECTED,
+	TAPE_STATUS_BEGINNING_OF_MEDIA,
+	TAPE_STATUS_END_OF_MEDIA,
+	TAPE_STATUS_BUFFER_OVERFLOW,
+	TAPE_STATUS_NO_DATA_DETECTED,
+	TAPE_STATUS_EOM_OVERFLOW,
+	TAPE_STATUS_NO_MEDIA,
+	TAPE_STATUS_IO_DEVICE_ERROR,
+	TAPE_STATUS_UNRECOGNIZED_MEDIA,
+	TAPE_STATUS_DEVICE_NOT_READY,
+	TAPE_STATUS_MEDIA_WRITE_PROTECTED,
+	TAPE_STATUS_DEVICE_DATA_ERROR,
+	TAPE_STATUS_NO_SUCH_DEVICE,
+	TAPE_STATUS_INVALID_BLOCK_LENGTH,
+	TAPE_STATUS_IO_TIMEOUT,
+	TAPE_STATUS_DEVICE_NOT_CONNECTED,
+	TAPE_STATUS_DATA_OVERRUN,
+	TAPE_STATUS_DEVICE_BUSY,
+	TAPE_STATUS_REQUIRES_CLEANING,
+	TAPE_STATUS_CLEANER_CARTRIDGE_INSTALLED
+} TAPE_STATUS, *PTAPE_STATUS;
+
+#define INQUIRYDATABUFFERSIZE 36
+#ifndef _INQUIRYDATA_DEFINED /* also in scsi.h */
+#define _INQUIRYDATA_DEFINED
+typedef struct _INQUIRYDATA {
+	UCHAR  DeviceType : 5;
+	UCHAR  DeviceTypeQualifier : 3;
+	UCHAR  DeviceTypeModifier : 7;
+	UCHAR  RemovableMedia : 1;
+	union {
+		UCHAR  Versions;
+		struct {
+			UCHAR  ANSIVersion : 3;
+			UCHAR  ECMAVersion : 3;
+			UCHAR  ISOVersion : 2;
+		};
+	};
+	UCHAR  ResponseDataFormat : 4;
+	UCHAR  HiSupport : 1;
+	UCHAR  NormACA : 1;
+	UCHAR  TerminateTask : 1;
+	UCHAR  AERC : 1;
+	UCHAR  AdditionalLength;
+	UCHAR  Reserved;
+	UCHAR  Addr16 : 1;
+	UCHAR  Addr32 : 1;
+	UCHAR  AckReqQ: 1;
+	UCHAR  MediumChanger : 1;
+	UCHAR  MultiPort : 1;
+	UCHAR  ReservedBit2 : 1;
+	UCHAR  EnclosureServices : 1;
+	UCHAR  ReservedBit3 : 1;
+	UCHAR  SoftReset : 1;
+	UCHAR  CommandQueue : 1;
+	UCHAR  TransferDisable : 1;
+	UCHAR  LinkedCommands : 1;
+	UCHAR  Synchronous : 1;
+	UCHAR  Wide16Bit : 1;
+	UCHAR  Wide32Bit : 1;
+	UCHAR  RelativeAddressing : 1;
+	UCHAR  VendorId[8];
+	UCHAR  ProductId[16];
+	UCHAR  ProductRevisionLevel[4];
+	UCHAR  VendorSpecific[20];
+	UCHAR  Reserved3[40];
+} INQUIRYDATA, *PINQUIRYDATA;
+#endif
+
+typedef struct _MODE_CAPABILITIES_PAGE {
+	UCHAR PageCode : 6;
+	UCHAR Reserved1 : 2;
+	UCHAR PageLength;
+	UCHAR Reserved2[2];
+	UCHAR RO : 1;
+	UCHAR Reserved3 : 4;
+	UCHAR SPREV : 1;
+	UCHAR Reserved4 : 2;
+	UCHAR Reserved5 : 3;
+	UCHAR EFMT : 1;
+	UCHAR Reserved6 : 1;
+	UCHAR QFA : 1;
+	UCHAR Reserved7 : 2;
+	UCHAR LOCK : 1;
+	UCHAR LOCKED : 1;
+	UCHAR PREVENT : 1;
+	UCHAR UNLOAD : 1;
+	UCHAR Reserved8 : 2;
+	UCHAR ECC : 1;
+	UCHAR CMPRS : 1;
+	UCHAR Reserved9 : 1;
+	UCHAR BLK512 : 1;
+	UCHAR BLK1024 : 1;
+	UCHAR Reserved10 : 4;
+	UCHAR SLOWB : 1;
+	UCHAR MaximumSpeedSupported[2];
+	UCHAR MaximumStoredDefectedListEntries[2];
+	UCHAR ContinuousTransferLimit[2];
+	UCHAR CurrentSpeedSelected[2];
+	UCHAR BufferSize[2];
+	UCHAR Reserved11[2];
+} MODE_CAPABILITIES_PAGE, *PMODE_CAPABILITIES_PAGE;
+
+typedef BOOLEAN DDKAPI
+(*TAPE_VERIFY_INQUIRY_ROUTINE)(
+  /*IN*/ PINQUIRYDATA  InquiryData,
+  /*IN*/ PMODE_CAPABILITIES_PAGE ModeCapabilitiesPage);
+
+typedef VOID DDKAPI
+(*TAPE_EXTENSION_INIT_ROUTINE)(
+  /*IN*/ PVOID  MinitapeExtension,
+  /*IN*/ PINQUIRYDATA  InquiryData,
+  /*IN*/ PMODE_CAPABILITIES_PAGE  ModeCapabilitiesPage);
+
+typedef VOID DDKAPI
+(*TAPE_ERROR_ROUTINE)(
+  /*IN*/ PVOID  MinitapeExtension,
+  /*IN*/ PSCSI_REQUEST_BLOCK  Srb,
+  /*IN OUT*/ PTAPE_STATUS  TapeStatus);
+
+typedef TAPE_STATUS DDKAPI
+(*TAPE_PROCESS_COMMAND_ROUTINE)(
+  /*IN OUT*/ PVOID  MinitapeExtension,
+  /*IN OUT*/ PVOID  CommandExtension,
+  /*IN OUT*/ PVOID  CommandParameters,
+  /*IN OUT*/ PSCSI_REQUEST_BLOCK  Srb,
+  /*IN*/ ULONG  CallNumber,
+  /*IN*/ TAPE_STATUS  StatusOfLastCommand,
+  /*IN OUT*/ PULONG  RetryFlags);
+
+#define TAPE_RETRY_MASK                   0x0000FFFF
+#define IGNORE_ERRORS                     0x00010000
+#define RETURN_ERRORS                     0x00020000
+
+typedef struct _TAPE_INIT_DATA {
+  TAPE_VERIFY_INQUIRY_ROUTINE  VerifyInquiry;
+  BOOLEAN  QueryModeCapabilitiesPage;
+  ULONG  MinitapeExtensionSize;
+  TAPE_EXTENSION_INIT_ROUTINE  ExtensionInit;
+  ULONG  DefaultTimeOutValue;
+  TAPE_ERROR_ROUTINE  TapeError;
+  ULONG  CommandExtensionSize;
+  TAPE_PROCESS_COMMAND_ROUTINE  CreatePartition;
+  TAPE_PROCESS_COMMAND_ROUTINE  Erase;
+  TAPE_PROCESS_COMMAND_ROUTINE  GetDriveParameters;
+  TAPE_PROCESS_COMMAND_ROUTINE  GetMediaParameters;
+  TAPE_PROCESS_COMMAND_ROUTINE  GetPosition;
+  TAPE_PROCESS_COMMAND_ROUTINE  GetStatus;
+  TAPE_PROCESS_COMMAND_ROUTINE  Prepare;
+  TAPE_PROCESS_COMMAND_ROUTINE  SetDriveParameters;
+  TAPE_PROCESS_COMMAND_ROUTINE  SetMediaParameters;
+  TAPE_PROCESS_COMMAND_ROUTINE  SetPosition;
+  TAPE_PROCESS_COMMAND_ROUTINE  WriteMarks;
+  TAPE_PROCESS_COMMAND_ROUTINE  PreProcessReadWrite /* OPTIONAL */;
+} TAPE_INIT_DATA, *PTAPE_INIT_DATA;
+
+typedef struct _TAPE_PHYS_POSITION {
+	ULONG  SeekBlockAddress;
+	ULONG  SpaceBlockCount;
+} TAPE_PHYS_POSITION, PTAPE_PHYS_POSITION;
+
+#pragma pack(pop)
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __MINITAPE_H */
Index: Daodan/MinGW/include/ddk/mountdev.h
===================================================================
--- Daodan/MinGW/include/ddk/mountdev.h	(revision 1046)
+++ Daodan/MinGW/include/ddk/mountdev.h	(revision 1046)
@@ -0,0 +1,79 @@
+/*
+ * mountdev.h
+ *
+ * Mount point manager/mounted devices interface.
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __MOUNTDEV_H
+#define __MOUNTDEV_H
+
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "ntddk.h"
+#include "mountmgr.h"
+
+#define IOCTL_MOUNTDEV_QUERY_DEVICE_NAME \
+  CTL_CODE(MOUNTDEVCONTROLTYPE, 2, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_MOUNTDEV_QUERY_UNIQUE_ID \
+  CTL_CODE(MOUNTDEVCONTROLTYPE, 0, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_MOUNTDEV_UNIQUE_ID_CHANGE_NOTIFY \
+  CTL_CODE(MOUNTDEVCONTROLTYPE, 1, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_MOUNTDEV_QUERY_SUGGESTED_LINK_NAME \
+  CTL_CODE(MOUNTDEVCONTROLTYPE, 3, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_MOUNTDEV_LINK_CREATED \
+  CTL_CODE(MOUNTDEVCONTROLTYPE, 4, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_MOUNTDEV_LINK_DELETED \
+  CTL_CODE(MOUNTDEVCONTROLTYPE, 5, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+
+typedef struct _MOUNTDEV_SUGGESTED_LINK_NAME {
+  BOOLEAN  UseOnlyIfThereAreNoOtherLinks;
+  USHORT  NameLength;
+  WCHAR  Name[1];
+} MOUNTDEV_SUGGESTED_LINK_NAME, *PMOUNTDEV_SUGGESTED_LINK_NAME;
+
+typedef struct _MOUNTDEV_UNIQUE_ID {
+  USHORT  UniqueIdLength;
+  UCHAR  UniqueId[1];
+} MOUNTDEV_UNIQUE_ID, *PMOUNTDEV_UNIQUE_ID;
+
+typedef struct _MOUNTDEV_UNIQUE_ID_CHANGE_NOTIFY_OUTPUT {
+  ULONG  Size;
+  USHORT  OldUniqueIdOffset;
+  USHORT  OldUniqueIdLength;
+  USHORT  NewUniqueIdOffset;
+  USHORT  NewUniqueIdLength;
+} MOUNTDEV_UNIQUE_ID_CHANGE_NOTIFY_OUTPUT;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __MOUNTDEV_H */
Index: Daodan/MinGW/include/ddk/mountmgr.h
===================================================================
--- Daodan/MinGW/include/ddk/mountmgr.h	(revision 1046)
+++ Daodan/MinGW/include/ddk/mountmgr.h	(revision 1046)
@@ -0,0 +1,139 @@
+/*
+ * mountmgr.h
+ *
+ * Mount point manager interface.
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __MOUNTMGR_H
+#define __MOUNTMGR_H
+
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "ntddk.h"
+
+DEFINE_GUID(MOUNTDEV_MOUNTED_DEVICE_GUID,
+	0x53f5630d, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b);
+
+#define MOUNTMGRCONTROLTYPE  							((ULONG)'m')
+#define MOUNTDEVCONTROLTYPE  							((ULONG)'M')
+
+#define MOUNTMGR_DEVICE_NAME              L"\\Device\\MountPointManager"
+#define MOUNTMGR_DOS_DEVICE_NAME          L"\\\\.\\MountPointManager"
+
+#define IOCTL_MOUNTMGR_CREATE_POINT \
+  CTL_CODE(MOUNTMGRCONTROLTYPE, 0, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+
+#define IOCTL_MOUNTMGR_QUERY_POINTS \
+  CTL_CODE(MOUNTMGRCONTROLTYPE, 2, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_MOUNTMGR_DELETE_POINTS \
+  CTL_CODE(MOUNTMGRCONTROLTYPE, 1, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+
+#define IOCTL_MOUNTMGR_DELETE_POINTS_DBONLY \
+  CTL_CODE(MOUNTMGRCONTROLTYPE, 3, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+
+#define IOCTL_MOUNTMGR_NEXT_DRIVE_LETTER \
+  CTL_CODE(MOUNTMGRCONTROLTYPE, 4, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+
+#define IOCTL_MOUNTMGR_AUTO_DL_ASSIGNMENTS \
+  CTL_CODE(MOUNTMGRCONTROLTYPE, 5, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+
+#define IOCTL_MOUNTMGR_VOLUME_MOUNT_POINT_CREATED \
+  CTL_CODE(MOUNTMGRCONTROLTYPE, 6, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+
+#define IOCTL_MOUNTMGR_VOLUME_MOUNT_POINT_DELETED \
+  CTL_CODE(MOUNTMGRCONTROLTYPE, 7, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+
+#define IOCTL_MOUNTMGR_CHANGE_NOTIFY \
+  CTL_CODE(MOUNTMGRCONTROLTYPE, 8, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+#define IOCTL_MOUNTMGR_KEEP_LINKS_WHEN_OFFLINE \
+  CTL_CODE(MOUNTMGRCONTROLTYPE, 9, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+
+#define IOCTL_MOUNTMGR_CHECK_UNPROCESSED_VOLUMES \
+  CTL_CODE(MOUNTMGRCONTROLTYPE, 10, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+#define IOCTL_MOUNTMGR_VOLUME_ARRIVAL_NOTIFICATION \
+  CTL_CODE(MOUNTMGRCONTROLTYPE, 11, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+
+typedef struct _MOUNTDEV_NAME {
+  USHORT  NameLength;
+  WCHAR  Name[1];
+} MOUNTDEV_NAME, *PMOUNTDEV_NAME;
+
+typedef struct _MOUNTMGR_CHANGE_NOTIFY_INFO {
+  ULONG  EpicNumber;
+} MOUNTMGR_CHANGE_NOTIFY_INFO, *PMOUNTMGR_CHANGE_NOTIFY_INFO;
+
+typedef struct _MOUNTMGR_CREATE_POINT_INPUT {
+  USHORT  SymbolicLinkNameOffset;
+  USHORT  SymbolicLinkNameLength;
+  USHORT  DeviceNameOffset;
+  USHORT  DeviceNameLength;
+} MOUNTMGR_CREATE_POINT_INPUT, *PMOUNTMGR_CREATE_POINT_INPUT;
+
+typedef struct _MOUNTMGR_DRIVE_LETTER_INFORMATION {
+  BOOLEAN  DriveLetterWasAssigned;
+  UCHAR  CurrentDriveLetter;
+} MOUNTMGR_DRIVE_LETTER_INFORMATION, *PMOUNTMGR_DRIVE_LETTER_INFORMATION;
+
+typedef struct _MOUNTMGR_DRIVE_LETTER_TARGET {
+  USHORT  DeviceNameLength;
+  WCHAR  DeviceName[1];
+} MOUNTMGR_DRIVE_LETTER_TARGET, *PMOUNTMGR_DRIVE_LETTER_TARGET;
+
+typedef struct _MOUNTMGR_MOUNT_POINT {
+  ULONG  SymbolicLinkNameOffset;
+  USHORT  SymbolicLinkNameLength;
+  ULONG  UniqueIdOffset;
+  USHORT  UniqueIdLength;
+  ULONG  DeviceNameOffset;
+  USHORT  DeviceNameLength;
+} MOUNTMGR_MOUNT_POINT, *PMOUNTMGR_MOUNT_POINT;
+
+typedef struct _MOUNTMGR_MOUNT_POINTS {
+  ULONG  Size;
+  ULONG  NumberOfMountPoints;
+  MOUNTMGR_MOUNT_POINT  MountPoints[1];
+} MOUNTMGR_MOUNT_POINTS, *PMOUNTMGR_MOUNT_POINTS;
+
+typedef struct _MOUNTMGR_TARGET_NAME {
+  USHORT  DeviceNameLength;
+  WCHAR  DeviceName[1];
+} MOUNTMGR_TARGET_NAME, *PMOUNTMGR_TARGET_NAME;
+
+typedef struct _MOUNTMGR_VOLUME_MOUNT_POINT {
+  USHORT  SourceVolumeNameOffset;
+  USHORT  SourceVolumeNameLength;
+  USHORT  TargetVolumeNameOffset;
+  USHORT  TargetVolumeNameLength;
+} MOUNTMGR_VOLUME_MOUNT_POINT, *PMOUNTMGR_VOLUME_MOUNT_POINT;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __MOUNTMGR_H */
Index: Daodan/MinGW/include/ddk/ndis.h
===================================================================
--- Daodan/MinGW/include/ddk/ndis.h	(revision 1046)
+++ Daodan/MinGW/include/ddk/ndis.h	(revision 1046)
@@ -0,0 +1,5317 @@
+/*
+ * ndis.h
+ *
+ * Network Device Interface Specification definitions
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ * DEFINES: i386                 - Target platform is i386
+ *          _NDIS_               - Define only for NDIS library
+ *          NDIS_MINIPORT_DRIVER - Define only for NDIS miniport drivers
+ *          NDIS40               - Use NDIS 4.0 structures by default
+ *          NDIS50               - Use NDIS 5.0 structures by default
+ *          NDIS50_MINIPORT      - Building NDIS 5.0 miniport driver
+ *          NDIS51_MINIPORT      - Building NDIS 5.1 miniport driver
+ */
+#ifndef __NDIS_H
+#define __NDIS_H
+
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "ntddk.h"
+#include "ntddndis.h"
+#include "netpnp.h"
+#include "netevent.h"
+#include <winsock2.h>
+
+#if defined(_NDIS_)
+  #define NDISAPI DECLSPEC_EXPORT
+#else
+  #define NDISAPI DECLSPEC_IMPORT
+#endif
+
+#if defined(NDIS50_MINIPORT)
+#ifndef NDIS50
+#define NDIS50
+#define NDIS_MINIPORT_MAJOR_VERSION 5
+#define NDIS_MINIPORT_MINOR_VERSION 0
+#endif
+#endif /* NDIS50_MINIPORT */
+
+#if defined(NDIS51_MINIPORT)
+#ifndef NDIS51
+#define NDIS51
+#define NDIS_MINIPORT_MAJOR_VERSION 5
+#define NDIS_MINIPORT_MINOR_VERSION 1
+#endif
+#endif /* NDIS51_MINIPORT */
+
+/* NDIS 3.0 is default */
+#if !defined(NDIS30) || !defined(NDIS40) || !defined(NDIS50) || !defined(NDIS51)
+#define NDIS30
+#endif /* !NDIS30 || !NDIS40 || !NDIS50 || !NDIS51 */
+
+#if 1
+/* FIXME: */
+typedef PVOID QUEUED_CLOSE;
+#endif
+
+typedef ULONG NDIS_OID, *PNDIS_OID;
+
+typedef struct _X_FILTER FDDI_FILTER, *PFDDI_FILTER;
+typedef struct _X_FILTER TR_FILTER, *PTR_FILTER;
+typedef struct _X_FILTER NULL_FILTER, *PNULL_FILTER;
+
+typedef struct _REFERENCE {
+	KSPIN_LOCK  SpinLock;
+	USHORT  ReferenceCount;
+	BOOLEAN  Closing;
+} REFERENCE, * PREFERENCE;
+
+
+/* NDIS base types */
+
+typedef struct _NDIS_SPIN_LOCK {
+  KSPIN_LOCK  SpinLock;
+  KIRQL  OldIrql;
+} NDIS_SPIN_LOCK, * PNDIS_SPIN_LOCK;
+
+typedef struct _NDIS_EVENT {
+  KEVENT  Event;
+} NDIS_EVENT, *PNDIS_EVENT;
+
+typedef PVOID NDIS_HANDLE, *PNDIS_HANDLE;
+typedef int NDIS_STATUS, *PNDIS_STATUS;
+
+typedef ANSI_STRING NDIS_ANSI_STRING, *PNDIS_ANSI_STRING;
+typedef UNICODE_STRING NDIS_STRING, *PNDIS_STRING;
+
+typedef MDL NDIS_BUFFER, *PNDIS_BUFFER;
+typedef ULONG NDIS_ERROR_CODE, *PNDIS_ERROR_CODE;
+
+
+/* NDIS_STATUS constants */
+#define NDIS_STATUS_SUCCESS                     ((NDIS_STATUS)STATUS_SUCCESS)
+#define NDIS_STATUS_PENDING                     ((NDIS_STATUS)STATUS_PENDING)
+#define NDIS_STATUS_NOT_RECOGNIZED              ((NDIS_STATUS)0x00010001L)
+#define NDIS_STATUS_NOT_COPIED                  ((NDIS_STATUS)0x00010002L)
+#define NDIS_STATUS_NOT_ACCEPTED                ((NDIS_STATUS)0x00010003L)
+#define NDIS_STATUS_CALL_ACTIVE                 ((NDIS_STATUS)0x00010007L)
+#define NDIS_STATUS_ONLINE                      ((NDIS_STATUS)0x40010003L)
+#define NDIS_STATUS_RESET_START                 ((NDIS_STATUS)0x40010004L)
+#define NDIS_STATUS_RESET_END                   ((NDIS_STATUS)0x40010005L)
+#define NDIS_STATUS_RING_STATUS                 ((NDIS_STATUS)0x40010006L)
+#define NDIS_STATUS_CLOSED                      ((NDIS_STATUS)0x40010007L)
+#define NDIS_STATUS_WAN_LINE_UP                 ((NDIS_STATUS)0x40010008L)
+#define NDIS_STATUS_WAN_LINE_DOWN               ((NDIS_STATUS)0x40010009L)
+#define NDIS_STATUS_WAN_FRAGMENT                ((NDIS_STATUS)0x4001000AL)
+#define	NDIS_STATUS_MEDIA_CONNECT               ((NDIS_STATUS)0x4001000BL)
+#define	NDIS_STATUS_MEDIA_DISCONNECT            ((NDIS_STATUS)0x4001000CL)
+#define NDIS_STATUS_HARDWARE_LINE_UP            ((NDIS_STATUS)0x4001000DL)
+#define NDIS_STATUS_HARDWARE_LINE_DOWN          ((NDIS_STATUS)0x4001000EL)
+#define NDIS_STATUS_INTERFACE_UP                ((NDIS_STATUS)0x4001000FL)
+#define NDIS_STATUS_INTERFACE_DOWN              ((NDIS_STATUS)0x40010010L)
+#define NDIS_STATUS_MEDIA_BUSY                  ((NDIS_STATUS)0x40010011L)
+#define NDIS_STATUS_MEDIA_SPECIFIC_INDICATION   ((NDIS_STATUS)0x40010012L)
+#define NDIS_STATUS_WW_INDICATION               NDIS_STATUS_MEDIA_SPECIFIC_INDICATION
+#define NDIS_STATUS_LINK_SPEED_CHANGE           ((NDIS_STATUS)0x40010013L)
+#define NDIS_STATUS_WAN_GET_STATS               ((NDIS_STATUS)0x40010014L)
+#define NDIS_STATUS_WAN_CO_FRAGMENT             ((NDIS_STATUS)0x40010015L)
+#define NDIS_STATUS_WAN_CO_LINKPARAMS           ((NDIS_STATUS)0x40010016L)
+
+#define NDIS_STATUS_NOT_RESETTABLE              ((NDIS_STATUS)0x80010001L)
+#define NDIS_STATUS_SOFT_ERRORS	                ((NDIS_STATUS)0x80010003L)
+#define NDIS_STATUS_HARD_ERRORS                 ((NDIS_STATUS)0x80010004L)
+#define NDIS_STATUS_BUFFER_OVERFLOW	            ((NDIS_STATUS)STATUS_BUFFER_OVERFLOW)
+
+#define NDIS_STATUS_FAILURE	                    ((NDIS_STATUS)STATUS_UNSUCCESSFUL)
+#define NDIS_STATUS_RESOURCES                   ((NDIS_STATUS)STATUS_INSUFFICIENT_RESOURCES)
+#define NDIS_STATUS_CLOSING	                    ((NDIS_STATUS)0xC0010002L)
+#define NDIS_STATUS_BAD_VERSION	                ((NDIS_STATUS)0xC0010004L)
+#define NDIS_STATUS_BAD_CHARACTERISTICS         ((NDIS_STATUS)0xC0010005L)
+#define NDIS_STATUS_ADAPTER_NOT_FOUND           ((NDIS_STATUS)0xC0010006L)
+#define NDIS_STATUS_OPEN_FAILED	                ((NDIS_STATUS)0xC0010007L)
+#define NDIS_STATUS_DEVICE_FAILED               ((NDIS_STATUS)0xC0010008L)
+#define NDIS_STATUS_MULTICAST_FULL              ((NDIS_STATUS)0xC0010009L)
+#define NDIS_STATUS_MULTICAST_EXISTS            ((NDIS_STATUS)0xC001000AL)
+#define NDIS_STATUS_MULTICAST_NOT_FOUND	        ((NDIS_STATUS)0xC001000BL)
+#define NDIS_STATUS_REQUEST_ABORTED	            ((NDIS_STATUS)0xC001000CL)
+#define NDIS_STATUS_RESET_IN_PROGRESS           ((NDIS_STATUS)0xC001000DL)
+#define NDIS_STATUS_CLOSING_INDICATING          ((NDIS_STATUS)0xC001000EL)
+#define NDIS_STATUS_NOT_SUPPORTED               ((NDIS_STATUS)STATUS_NOT_SUPPORTED)
+#define NDIS_STATUS_INVALID_PACKET              ((NDIS_STATUS)0xC001000FL)
+#define NDIS_STATUS_OPEN_LIST_FULL              ((NDIS_STATUS)0xC0010010L)
+#define NDIS_STATUS_ADAPTER_NOT_READY           ((NDIS_STATUS)0xC0010011L)
+#define NDIS_STATUS_ADAPTER_NOT_OPEN            ((NDIS_STATUS)0xC0010012L)
+#define NDIS_STATUS_NOT_INDICATING              ((NDIS_STATUS)0xC0010013L)
+#define NDIS_STATUS_INVALID_LENGTH              ((NDIS_STATUS)0xC0010014L)
+#define NDIS_STATUS_INVALID_DATA                ((NDIS_STATUS)0xC0010015L)
+#define NDIS_STATUS_BUFFER_TOO_SHORT            ((NDIS_STATUS)0xC0010016L)
+#define NDIS_STATUS_INVALID_OID	                ((NDIS_STATUS)0xC0010017L)
+#define NDIS_STATUS_ADAPTER_REMOVED	            ((NDIS_STATUS)0xC0010018L)
+#define NDIS_STATUS_UNSUPPORTED_MEDIA           ((NDIS_STATUS)0xC0010019L)
+#define NDIS_STATUS_GROUP_ADDRESS_IN_USE        ((NDIS_STATUS)0xC001001AL)
+#define NDIS_STATUS_FILE_NOT_FOUND              ((NDIS_STATUS)0xC001001BL)
+#define NDIS_STATUS_ERROR_READING_FILE          ((NDIS_STATUS)0xC001001CL)
+#define NDIS_STATUS_ALREADY_MAPPED              ((NDIS_STATUS)0xC001001DL)
+#define NDIS_STATUS_RESOURCE_CONFLICT           ((NDIS_STATUS)0xC001001EL)
+#define NDIS_STATUS_NO_CABLE                    ((NDIS_STATUS)0xC001001FL)
+
+#define NDIS_STATUS_INVALID_SAP	                ((NDIS_STATUS)0xC0010020L)
+#define NDIS_STATUS_SAP_IN_USE                  ((NDIS_STATUS)0xC0010021L)
+#define NDIS_STATUS_INVALID_ADDRESS             ((NDIS_STATUS)0xC0010022L)
+#define NDIS_STATUS_VC_NOT_ACTIVATED            ((NDIS_STATUS)0xC0010023L)
+#define NDIS_STATUS_DEST_OUT_OF_ORDER           ((NDIS_STATUS)0xC0010024L)
+#define NDIS_STATUS_VC_NOT_AVAILABLE            ((NDIS_STATUS)0xC0010025L)
+#define NDIS_STATUS_CELLRATE_NOT_AVAILABLE      ((NDIS_STATUS)0xC0010026L)
+#define NDIS_STATUS_INCOMPATABLE_QOS            ((NDIS_STATUS)0xC0010027L)
+#define NDIS_STATUS_AAL_PARAMS_UNSUPPORTED      ((NDIS_STATUS)0xC0010028L)
+#define NDIS_STATUS_NO_ROUTE_TO_DESTINATION     ((NDIS_STATUS)0xC0010029L)
+
+#define NDIS_STATUS_TOKEN_RING_OPEN_ERROR       ((NDIS_STATUS)0xC0011000L)
+#define NDIS_STATUS_INVALID_DEVICE_REQUEST      ((NDIS_STATUS)STATUS_INVALID_DEVICE_REQUEST)
+#define NDIS_STATUS_NETWORK_UNREACHABLE         ((NDIS_STATUS)STATUS_NETWORK_UNREACHABLE)
+
+
+/* NDIS error codes for error logging */
+
+#define NDIS_ERROR_CODE_RESOURCE_CONFLICT			            EVENT_NDIS_RESOURCE_CONFLICT
+#define NDIS_ERROR_CODE_OUT_OF_RESOURCES			            EVENT_NDIS_OUT_OF_RESOURCE
+#define NDIS_ERROR_CODE_HARDWARE_FAILURE			            EVENT_NDIS_HARDWARE_FAILURE
+#define NDIS_ERROR_CODE_ADAPTER_NOT_FOUND			            EVENT_NDIS_ADAPTER_NOT_FOUND
+#define NDIS_ERROR_CODE_INTERRUPT_CONNECT			            EVENT_NDIS_INTERRUPT_CONNECT
+#define NDIS_ERROR_CODE_DRIVER_FAILURE				            EVENT_NDIS_DRIVER_FAILURE
+#define NDIS_ERROR_CODE_BAD_VERSION					              EVENT_NDIS_BAD_VERSION
+#define NDIS_ERROR_CODE_TIMEOUT						                EVENT_NDIS_TIMEOUT
+#define NDIS_ERROR_CODE_NETWORK_ADDRESS				            EVENT_NDIS_NETWORK_ADDRESS
+#define NDIS_ERROR_CODE_UNSUPPORTED_CONFIGURATION	        EVENT_NDIS_UNSUPPORTED_CONFIGURATION
+#define NDIS_ERROR_CODE_INVALID_VALUE_FROM_ADAPTER	      EVENT_NDIS_INVALID_VALUE_FROM_ADAPTER
+#define NDIS_ERROR_CODE_MISSING_CONFIGURATION_PARAMETER	  EVENT_NDIS_MISSING_CONFIGURATION_PARAMETER
+#define NDIS_ERROR_CODE_BAD_IO_BASE_ADDRESS			          EVENT_NDIS_BAD_IO_BASE_ADDRESS
+#define NDIS_ERROR_CODE_RECEIVE_SPACE_SMALL			          EVENT_NDIS_RECEIVE_SPACE_SMALL
+#define NDIS_ERROR_CODE_ADAPTER_DISABLED			            EVENT_NDIS_ADAPTER_DISABLED
+
+
+/* Memory allocation flags. Used by Ndis[Allocate|Free]Memory */
+#define NDIS_MEMORY_CONTIGUOUS            0x00000001
+#define NDIS_MEMORY_NONCACHED             0x00000002
+
+/* NIC attribute flags. Used by NdisMSetAttributes(Ex) */
+#define	NDIS_ATTRIBUTE_IGNORE_PACKET_TIMEOUT    0x00000001
+#define NDIS_ATTRIBUTE_IGNORE_REQUEST_TIMEOUT   0x00000002
+#define NDIS_ATTRIBUTE_IGNORE_TOKEN_RING_ERRORS 0x00000004
+#define NDIS_ATTRIBUTE_BUS_MASTER               0x00000008
+#define NDIS_ATTRIBUTE_INTERMEDIATE_DRIVER      0x00000010
+#define NDIS_ATTRIBUTE_DESERIALIZE              0x00000020
+#define NDIS_ATTRIBUTE_NO_HALT_ON_SUSPEND       0x00000040
+#define NDIS_ATTRIBUTE_SURPRISE_REMOVE_OK       0x00000080
+#define NDIS_ATTRIBUTE_NOT_CO_NDIS              0x00000100
+#define NDIS_ATTRIBUTE_USES_SAFE_BUFFER_APIS    0x00000200
+
+
+/* Lock */
+
+typedef union _NDIS_RW_LOCK_REFCOUNT {
+  UINT  RefCount;
+  UCHAR  cacheLine[16];
+} NDIS_RW_LOCK_REFCOUNT;
+
+typedef struct _NDIS_RW_LOCK {
+  union {
+    struct {
+      KSPIN_LOCK  SpinLock;
+      PVOID  Context;
+    } s;
+    UCHAR  Reserved[16];
+  } u;
+
+  NDIS_RW_LOCK_REFCOUNT  RefCount[MAXIMUM_PROCESSORS];
+} NDIS_RW_LOCK, *PNDIS_RW_LOCK;
+
+typedef struct _LOCK_STATE {
+  USHORT  LockState;
+  KIRQL  OldIrql;
+} LOCK_STATE, *PLOCK_STATE;
+
+
+
+/* Timer */
+
+typedef VOID DDKAPI
+(*PNDIS_TIMER_FUNCTION)(
+  /*IN*/ PVOID  SystemSpecific1,
+  /*IN*/ PVOID  FunctionContext,
+  /*IN*/ PVOID  SystemSpecific2,
+  /*IN*/ PVOID  SystemSpecific3);
+
+typedef struct _NDIS_TIMER {
+  KTIMER  Timer;
+  KDPC  Dpc;
+} NDIS_TIMER, *PNDIS_TIMER;
+
+
+
+/* Hardware */
+
+typedef CM_MCA_POS_DATA NDIS_MCA_POS_DATA, *PNDIS_MCA_POS_DATA;
+typedef CM_EISA_SLOT_INFORMATION NDIS_EISA_SLOT_INFORMATION, *PNDIS_EISA_SLOT_INFORMATION;
+typedef CM_EISA_FUNCTION_INFORMATION NDIS_EISA_FUNCTION_INFORMATION, *PNDIS_EISA_FUNCTION_INFORMATION;
+typedef CM_PARTIAL_RESOURCE_LIST NDIS_RESOURCE_LIST, *PNDIS_RESOURCE_LIST;
+
+/* Hardware status codes (OID_GEN_HARDWARE_STATUS) */
+typedef enum _NDIS_HARDWARE_STATUS {
+  NdisHardwareStatusReady,
+  NdisHardwareStatusInitializing,
+  NdisHardwareStatusReset,
+  NdisHardwareStatusClosing,
+  NdisHardwareStatusNotReady
+} NDIS_HARDWARE_STATUS, *PNDIS_HARDWARE_STATUS;
+
+/* OID_GEN_GET_TIME_CAPS */
+typedef struct _GEN_GET_TIME_CAPS {
+  ULONG  Flags;
+  ULONG  ClockPrecision;
+} GEN_GET_TIME_CAPS, *PGEN_GET_TIME_CAPS;
+
+/* Flag bits */
+#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
+
+/* OID_GEN_GET_NETCARD_TIME */
+typedef struct _GEN_GET_NETCARD_TIME {
+  ULONGLONG  ReadTime;
+} GEN_GET_NETCARD_TIME, *PGEN_GET_NETCARD_TIME;
+
+/* NDIS driver medium (OID_GEN_MEDIA_SUPPORTED / OID_GEN_MEDIA_IN_USE) */
+typedef enum _NDIS_MEDIUM {
+  NdisMedium802_3,
+  NdisMedium802_5,
+  NdisMediumFddi,
+  NdisMediumWan,
+  NdisMediumLocalTalk,
+  NdisMediumDix,
+  NdisMediumArcnetRaw,
+  NdisMediumArcnet878_2,
+  NdisMediumAtm,
+  NdisMediumWirelessWan,
+  NdisMediumIrda,
+  NdisMediumBpc,
+  NdisMediumCoWan,
+  NdisMedium1394,
+  NdisMediumMax
+} NDIS_MEDIUM, *PNDIS_MEDIUM;
+
+/* NDIS packet filter bits (OID_GEN_CURRENT_PACKET_FILTER) */
+#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
+
+/* NDIS protocol option bits (OID_GEN_PROTOCOL_OPTIONS) */
+#define NDIS_PROT_OPTION_ESTIMATED_LENGTH       0x00000001
+#define NDIS_PROT_OPTION_NO_LOOPBACK            0x00000002
+#define NDIS_PROT_OPTION_NO_RSVD_ON_RCVPKT      0x00000004
+
+/* NDIS MAC option bits (OID_GEN_MAC_OPTIONS) */
+#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_RESERVED                0x80000000
+
+/* State of the LAN media (OID_GEN_MEDIA_CONNECT_STATUS) */
+typedef enum _NDIS_MEDIA_STATE {
+	NdisMediaStateConnected,
+	NdisMediaStateDisconnected
+} NDIS_MEDIA_STATE, *PNDIS_MEDIA_STATE;
+
+/* OID_GEN_SUPPORTED_GUIDS */
+typedef struct _NDIS_GUID {
+	GUID  Guid;
+	union {
+		NDIS_OID  Oid;
+		NDIS_STATUS  Status;
+	} u;
+	ULONG  Size;
+	ULONG  Flags;
+} NDIS_GUID, *PNDIS_GUID;
+
+#define	NDIS_GUID_TO_OID                  0x00000001
+#define	NDIS_GUID_TO_STATUS               0x00000002
+#define	NDIS_GUID_ANSI_STRING             0x00000004
+#define	NDIS_GUID_UNICODE_STRING          0x00000008
+#define	NDIS_GUID_ARRAY	                  0x00000010
+
+
+typedef struct _NDIS_PACKET_POOL {
+  NDIS_SPIN_LOCK  SpinLock;
+  struct _NDIS_PACKET *FreeList;
+  UINT  PacketLength;
+  UCHAR  Buffer[1];
+} NDIS_PACKET_POOL, * PNDIS_PACKET_POOL;
+
+/* NDIS_PACKET_PRIVATE.Flags constants */
+#define fPACKET_CONTAINS_MEDIA_SPECIFIC_INFO    0x40
+#define fPACKET_ALLOCATED_BY_NDIS               0x80
+
+typedef struct _NDIS_PACKET_PRIVATE {
+  UINT  PhysicalCount;
+  UINT  TotalLength;
+  PNDIS_BUFFER  Head;
+  PNDIS_BUFFER  Tail;
+  PNDIS_PACKET_POOL  Pool;
+  UINT  Count;
+  ULONG  Flags;
+  BOOLEAN	 ValidCounts;
+  UCHAR  NdisPacketFlags;
+  USHORT  NdisPacketOobOffset;
+} NDIS_PACKET_PRIVATE, * PNDIS_PACKET_PRIVATE;
+
+typedef struct _NDIS_PACKET {
+  NDIS_PACKET_PRIVATE  Private;
+  _ANONYMOUS_UNION union {
+    _ANONYMOUS_STRUCT struct {
+      UCHAR  MiniportReserved[2 * sizeof(PVOID)];
+      UCHAR  WrapperReserved[2 * sizeof(PVOID)];
+    } DUMMYSTRUCTNAME;
+    _ANONYMOUS_STRUCT struct {
+      UCHAR  MiniportReservedEx[3 * sizeof(PVOID)];
+      UCHAR  WrapperReservedEx[sizeof(PVOID)];
+    } DUMMYSTRUCTNAME;
+    _ANONYMOUS_STRUCT struct {
+      UCHAR  MacReserved[4 * sizeof(PVOID)];
+    } DUMMYSTRUCTNAME;
+  } DUMMYUNIONNAME;
+  ULONG_PTR  Reserved[2];
+  UCHAR  ProtocolReserved[1];
+} NDIS_PACKET, *PNDIS_PACKET, **PPNDIS_PACKET;
+
+typedef enum _NDIS_CLASS_ID {
+	NdisClass802_3Priority,
+	NdisClassWirelessWanMbxMailbox,
+	NdisClassIrdaPacketInfo,
+	NdisClassAtmAALInfo
+} NDIS_CLASS_ID;
+
+typedef struct MediaSpecificInformation {
+  UINT  NextEntryOffset;
+  NDIS_CLASS_ID  ClassId;
+  UINT  Size;
+  UCHAR  ClassInformation[1];
+} MEDIA_SPECIFIC_INFORMATION;
+
+typedef struct _NDIS_PACKET_OOB_DATA {
+  _ANONYMOUS_UNION union {
+    ULONGLONG  TimeToSend;
+    ULONGLONG  TimeSent;
+  } DUMMYUNIONNAME;
+  ULONGLONG  TimeReceived;
+  UINT  HeaderSize;
+  UINT  SizeMediaSpecificInfo;
+  PVOID  MediaSpecificInformation;
+  NDIS_STATUS  Status;
+} NDIS_PACKET_OOB_DATA, *PNDIS_PACKET_OOB_DATA;
+
+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;
+
+
+/* Request types used by NdisRequest */
+typedef enum _NDIS_REQUEST_TYPE {
+  NdisRequestQueryInformation,
+  NdisRequestSetInformation,
+  NdisRequestQueryStatistics,
+  NdisRequestOpen,
+  NdisRequestClose,
+  NdisRequestSend,
+  NdisRequestTransferData,
+  NdisRequestReset,
+  NdisRequestGeneric1,
+  NdisRequestGeneric2,
+  NdisRequestGeneric3,
+  NdisRequestGeneric4
+} NDIS_REQUEST_TYPE, *PNDIS_REQUEST_TYPE;
+
+typedef struct _NDIS_REQUEST {
+  UCHAR  MacReserved[4 * sizeof(PVOID)];
+  NDIS_REQUEST_TYPE  RequestType;
+  union _DATA {
+    struct QUERY_INFORMATION {
+      NDIS_OID  Oid;
+      PVOID  InformationBuffer;
+      UINT  InformationBufferLength;
+      UINT  BytesWritten;
+      UINT  BytesNeeded;
+    } QUERY_INFORMATION;
+    struct SET_INFORMATION {
+      NDIS_OID  Oid;
+      PVOID  InformationBuffer;
+      UINT  InformationBufferLength;
+      UINT  BytesRead;
+      UINT  BytesNeeded;
+    } SET_INFORMATION;
+ } DATA;
+#if (defined(NDIS50) || defined(NDIS51))
+  UCHAR  NdisReserved[9 * sizeof(PVOID)];
+  union {
+    UCHAR  CallMgrReserved[2 * sizeof(PVOID)];
+    UCHAR  ProtocolReserved[2 * sizeof(PVOID)];
+  };
+  UCHAR  MiniportReserved[2 * sizeof(PVOID)];
+#endif
+} NDIS_REQUEST, *PNDIS_REQUEST;
+
+
+
+/* Wide Area Networks definitions */
+
+typedef struct _NDIS_WAN_PACKET {
+  LIST_ENTRY  WanPacketQueue;
+  PUCHAR  CurrentBuffer;
+  ULONG  CurrentLength;
+  PUCHAR  StartBuffer;
+  PUCHAR  EndBuffer;
+  PVOID  ProtocolReserved1;
+  PVOID  ProtocolReserved2;
+  PVOID  ProtocolReserved3;
+  PVOID  ProtocolReserved4;
+  PVOID  MacReserved1;
+  PVOID  MacReserved2;
+  PVOID  MacReserved3;
+  PVOID  MacReserved4;
+} NDIS_WAN_PACKET, *PNDIS_WAN_PACKET;
+
+
+
+/* DMA channel information */
+
+typedef struct _NDIS_DMA_DESCRIPTION {
+  BOOLEAN  DemandMode;
+  BOOLEAN  AutoInitialize;
+  BOOLEAN  DmaChannelSpecified;
+  DMA_WIDTH  DmaWidth;
+  DMA_SPEED  DmaSpeed;
+  ULONG  DmaPort;
+  ULONG  DmaChannel;
+} NDIS_DMA_DESCRIPTION, *PNDIS_DMA_DESCRIPTION;
+
+typedef struct _NDIS_DMA_BLOCK {
+  PVOID  MapRegisterBase;
+  KEVENT  AllocationEvent;
+  PADAPTER_OBJECT  SystemAdapterObject;
+  PVOID  Miniport;
+  BOOLEAN  InProgress;
+} NDIS_DMA_BLOCK, *PNDIS_DMA_BLOCK;
+
+
+/* Possible hardware architecture */
+typedef enum _NDIS_INTERFACE_TYPE {
+	NdisInterfaceInternal = Internal,
+	NdisInterfaceIsa = Isa,
+	NdisInterfaceEisa = Eisa,
+	NdisInterfaceMca = MicroChannel,
+	NdisInterfaceTurboChannel = TurboChannel,
+	NdisInterfacePci = PCIBus,
+	NdisInterfacePcMcia = PCMCIABus,
+	NdisInterfaceCBus = CBus,
+	NdisInterfaceMPIBus = MPIBus,
+	NdisInterfaceMPSABus = MPSABus,
+	NdisInterfaceProcessorInternal = ProcessorInternal,
+	NdisInterfaceInternalPowerBus = InternalPowerBus,
+	NdisInterfacePNPISABus = PNPISABus,
+	NdisInterfacePNPBus = PNPBus,
+	NdisMaximumInterfaceType
+} NDIS_INTERFACE_TYPE, *PNDIS_INTERFACE_TYPE;
+
+#define NdisInterruptLevelSensitive       LevelSensitive
+#define NdisInterruptLatched              Latched
+typedef KINTERRUPT_MODE NDIS_INTERRUPT_MODE, *PNDIS_INTERRUPT_MODE;
+
+
+typedef enum _NDIS_PARAMETER_TYPE {
+  NdisParameterInteger,
+  NdisParameterHexInteger,
+  NdisParameterString,
+  NdisParameterMultiString,
+  NdisParameterBinary
+} NDIS_PARAMETER_TYPE, *PNDIS_PARAMETER_TYPE;
+
+typedef struct {
+	USHORT  Length;
+	PVOID  Buffer;
+} BINARY_DATA;
+
+typedef struct _NDIS_CONFIGURATION_PARAMETER {
+  NDIS_PARAMETER_TYPE  ParameterType;
+  union {
+    ULONG  IntegerData;
+    NDIS_STRING  StringData;
+    BINARY_DATA  BinaryData;
+  } ParameterData;
+} NDIS_CONFIGURATION_PARAMETER, *PNDIS_CONFIGURATION_PARAMETER;
+
+
+typedef PHYSICAL_ADDRESS NDIS_PHYSICAL_ADDRESS, *PNDIS_PHYSICAL_ADDRESS;
+
+typedef struct _NDIS_PHYSICAL_ADDRESS_UNIT {
+  NDIS_PHYSICAL_ADDRESS  PhysicalAddress;
+  UINT  Length;
+} NDIS_PHYSICAL_ADDRESS_UNIT, *PNDIS_PHYSICAL_ADDRESS_UNIT;
+
+typedef struct _NDIS_WAN_LINE_DOWN {
+  UCHAR  RemoteAddress[6];
+  UCHAR  LocalAddress[6];
+} NDIS_WAN_LINE_DOWN, *PNDIS_WAN_LINE_DOWN;
+
+typedef struct _NDIS_WAN_LINE_UP {
+  ULONG  LinkSpeed;
+  ULONG  MaximumTotalSize;
+  NDIS_WAN_QUALITY  Quality;
+  USHORT  SendWindow;
+  UCHAR  RemoteAddress[6];
+  /*OUT*/ UCHAR  LocalAddress[6];
+  ULONG  ProtocolBufferLength;
+  PUCHAR  ProtocolBuffer;
+  USHORT  ProtocolType;
+  NDIS_STRING  DeviceName;
+} NDIS_WAN_LINE_UP, *PNDIS_WAN_LINE_UP;
+
+
+typedef VOID DDKAPI
+(*ADAPTER_SHUTDOWN_HANDLER)(
+  /*IN*/ PVOID  ShutdownContext);
+
+
+typedef struct _OID_LIST    OID_LIST, *POID_LIST;
+
+/* PnP state */
+
+typedef enum _NDIS_PNP_DEVICE_STATE {
+  NdisPnPDeviceAdded,
+  NdisPnPDeviceStarted,
+  NdisPnPDeviceQueryStopped,
+  NdisPnPDeviceStopped,
+  NdisPnPDeviceQueryRemoved,
+  NdisPnPDeviceRemoved,
+  NdisPnPDeviceSurpriseRemoved
+} NDIS_PNP_DEVICE_STATE;
+
+#define	NDIS_DEVICE_NOT_STOPPABLE                 0x00000001
+#define	NDIS_DEVICE_NOT_REMOVEABLE                0x00000002
+#define	NDIS_DEVICE_NOT_SUSPENDABLE	              0x00000004
+#define NDIS_DEVICE_DISABLE_PM                    0x00000008
+#define NDIS_DEVICE_DISABLE_WAKE_UP               0x00000010
+#define NDIS_DEVICE_DISABLE_WAKE_ON_RECONNECT     0x00000020
+#define NDIS_DEVICE_RESERVED                      0x00000040
+#define NDIS_DEVICE_DISABLE_WAKE_ON_MAGIC_PACKET  0x00000080
+#define NDIS_DEVICE_DISABLE_WAKE_ON_PATTERN_MATCH 0x00000100
+
+
+/* OID_GEN_NETWORK_LAYER_ADDRESSES */
+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;
+
+/* Protocol types supported by NDIS */
+#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
+
+
+/* OID_GEN_TRANSPORT_HEADER_OFFSET */
+typedef struct _TRANSPORT_HEADER_OFFSET {
+	USHORT  ProtocolType;
+	USHORT  HeaderOffset;
+} TRANSPORT_HEADER_OFFSET, *PTRANSPORT_HEADER_OFFSET;
+
+
+/* OID_GEN_CO_LINK_SPEED / OID_GEN_CO_MINIMUM_LINK_SPEED */
+typedef struct _NDIS_CO_LINK_SPEED {
+  ULONG  Outbound;
+  ULONG  Inbound;
+} NDIS_CO_LINK_SPEED, *PNDIS_CO_LINK_SPEED;
+
+typedef ULONG NDIS_AF, *PNDIS_AF;
+#define CO_ADDRESS_FAMILY_Q2931           ((NDIS_AF)0x1)
+#define CO_ADDRESS_FAMILY_PSCHED          ((NDIS_AF)0x2)
+#define CO_ADDRESS_FAMILY_L2TP            ((NDIS_AF)0x3)
+#define CO_ADDRESS_FAMILY_IRDA            ((NDIS_AF)0x4)
+#define CO_ADDRESS_FAMILY_1394            ((NDIS_AF)0x5)
+#define CO_ADDRESS_FAMILY_PPP             ((NDIS_AF)0x6)
+#define CO_ADDRESS_FAMILY_TAPI            ((NDIS_AF)0x800)
+#define CO_ADDRESS_FAMILY_TAPI_PROXY      ((NDIS_AF)0x801)
+
+#define CO_ADDRESS_FAMILY_PROXY           0x80000000
+
+typedef struct {
+  NDIS_AF  AddressFamily;
+  ULONG  MajorVersion;
+  ULONG  MinorVersion;
+} CO_ADDRESS_FAMILY, *PCO_ADDRESS_FAMILY;
+
+typedef struct _CO_FLOW_PARAMETERS {
+  ULONG  TokenRate;
+  ULONG  TokenBucketSize;
+  ULONG  PeakBandwidth;
+  ULONG  Latency;
+  ULONG  DelayVariation;
+  SERVICETYPE  ServiceType;
+  ULONG  MaxSduSize;
+  ULONG  MinimumPolicedSize;
+} CO_FLOW_PARAMETERS, *PCO_FLOW_PARAMETERS;
+
+typedef struct _CO_SPECIFIC_PARAMETERS {
+  ULONG  ParamType;
+  ULONG  Length;
+  UCHAR  Parameters[1];
+} CO_SPECIFIC_PARAMETERS, *PCO_SPECIFIC_PARAMETERS;
+
+typedef struct _CO_CALL_MANAGER_PARAMETERS {
+  CO_FLOW_PARAMETERS  Transmit;
+  CO_FLOW_PARAMETERS  Receive;
+  CO_SPECIFIC_PARAMETERS  CallMgrSpecific;
+} CO_CALL_MANAGER_PARAMETERS, *PCO_CALL_MANAGER_PARAMETERS;
+
+/* CO_MEDIA_PARAMETERS.Flags constants */
+#define RECEIVE_TIME_INDICATION           0x00000001
+#define USE_TIME_STAMPS                   0x00000002
+#define TRANSMIT_VC	                      0x00000004
+#define RECEIVE_VC                        0x00000008
+#define INDICATE_ERRED_PACKETS            0x00000010
+#define INDICATE_END_OF_TX                0x00000020
+#define RESERVE_RESOURCES_VC              0x00000040
+#define	ROUND_DOWN_FLOW	                  0x00000080
+#define	ROUND_UP_FLOW                     0x00000100
+
+typedef struct _CO_MEDIA_PARAMETERS {
+  ULONG  Flags;
+  ULONG  ReceivePriority;
+  ULONG  ReceiveSizeHint;
+  CO_SPECIFIC_PARAMETERS  MediaSpecific;
+} CO_MEDIA_PARAMETERS, *PCO_MEDIA_PARAMETERS;
+
+/* CO_CALL_PARAMETERS.Flags constants */
+#define PERMANENT_VC                      0x00000001
+#define CALL_PARAMETERS_CHANGED           0x00000002
+#define QUERY_CALL_PARAMETERS             0x00000004
+#define BROADCAST_VC                      0x00000008
+#define MULTIPOINT_VC                     0x00000010
+
+typedef struct _CO_CALL_PARAMETERS {
+  ULONG  Flags;
+  PCO_CALL_MANAGER_PARAMETERS  CallMgrParameters;
+  PCO_MEDIA_PARAMETERS  MediaParameters;
+} CO_CALL_PARAMETERS, *PCO_CALL_PARAMETERS;
+
+typedef struct _CO_SAP {
+  ULONG  SapType;
+  ULONG  SapLength;
+  UCHAR  Sap[1];
+} CO_SAP, *PCO_SAP;
+
+typedef struct _NDIS_IPSEC_PACKET_INFO {
+  _ANONYMOUS_UNION union {
+    struct {
+      NDIS_HANDLE  OffloadHandle;
+      NDIS_HANDLE  NextOffloadHandle;
+    } Transmit;
+    struct {
+      ULONG  SA_DELETE_REQ : 1;
+      ULONG  CRYPTO_DONE : 1;
+      ULONG  NEXT_CRYPTO_DONE : 1;
+      ULONG  CryptoStatus;
+    } Receive;
+  } DUMMYUNIONNAME;
+} NDIS_IPSEC_PACKET_INFO, *PNDIS_IPSEC_PACKET_INFO;
+
+/* NDIS_MAC_FRAGMENT.Errors constants */
+#define WAN_ERROR_CRC               			0x00000001
+#define WAN_ERROR_FRAMING           			0x00000002
+#define WAN_ERROR_HARDWAREOVERRUN   			0x00000004
+#define WAN_ERROR_BUFFEROVERRUN     			0x00000008
+#define WAN_ERROR_TIMEOUT           			0x00000010
+#define WAN_ERROR_ALIGNMENT         			0x00000020
+
+typedef struct _NDIS_MAC_FRAGMENT {
+  NDIS_HANDLE  NdisLinkContext;
+  ULONG  Errors;
+} NDIS_MAC_FRAGMENT, *PNDIS_MAC_FRAGMENT;
+
+typedef struct _NDIS_MAC_LINE_DOWN {
+  NDIS_HANDLE  NdisLinkContext;
+} NDIS_MAC_LINE_DOWN, *PNDIS_MAC_LINE_DOWN;
+
+typedef struct _NDIS_MAC_LINE_UP {
+  ULONG  LinkSpeed;
+  NDIS_WAN_QUALITY  Quality;
+  USHORT  SendWindow;
+  NDIS_HANDLE  ConnectionWrapperID;
+  NDIS_HANDLE  NdisLinkHandle;
+  NDIS_HANDLE  NdisLinkContext;
+} NDIS_MAC_LINE_UP, *PNDIS_MAC_LINE_UP;
+
+typedef struct _NDIS_PACKET_8021Q_INFO {
+	_ANONYMOUS_UNION union {
+		struct {
+			UINT32  UserPriority : 3;
+			UINT32  CanonicalFormatId : 1;
+			UINT32  VlanId : 12;
+			UINT32  Reserved : 16;
+		} TagHeader;
+		PVOID  Value;
+	} DUMMYUNIONNAME;
+} NDIS_PACKET_8021Q_INFO, *PNDIS_PACKET_8021Q_INFO;
+
+typedef enum _NDIS_PER_PACKET_INFO {
+	TcpIpChecksumPacketInfo,
+	IpSecPacketInfo,
+	TcpLargeSendPacketInfo,
+	ClassificationHandlePacketInfo,
+	NdisReserved,
+	ScatterGatherListPacketInfo,
+	Ieee8021QInfo,
+	OriginalPacketInfo,
+	PacketCancelId,
+	MaxPerPacketInfo
+} NDIS_PER_PACKET_INFO, *PNDIS_PER_PACKET_INFO;
+
+typedef struct _NDIS_PACKET_EXTENSION {
+  PVOID  NdisPacketInfo[MaxPerPacketInfo];
+} NDIS_PACKET_EXTENSION, *PNDIS_PACKET_EXTENSION;
+
+/*
+ * PNDIS_PACKET
+ * NDIS_GET_ORIGINAL_PACKET(
+ * IN PNDIS_PACKET  Packet);
+ */
+#define NDIS_GET_ORIGINAL_PACKET(Packet) \
+  NDIS_PER_PACKET_INFO_FROM_PACKET(Packet, OriginalPacketInfo)
+
+/*
+ * PVOID
+ * NDIS_GET_PACKET_CANCEL_ID(
+ * IN PNDIS_PACKET  Packet);
+ */
+#define NDIS_GET_PACKET_CANCEL_ID(Packet) \
+  NDIS_PER_PACKET_INFO_FROM_PACKET(Packet, PacketCancelId)
+
+/*
+ * PNDIS_PACKET_EXTENSION
+ * NDIS_PACKET_EXTENSION_FROM_PACKET(
+ * IN PNDIS_PACKET  Packet);
+ */
+#define NDIS_PACKET_EXTENSION_FROM_PACKET(Packet) \
+  ((PNDIS_PACKET_EXTENSION)((PUCHAR)(Packet) \
+    + (Packet)->Private.NdisPacketOobOffset + sizeof(NDIS_PACKET_OOB_DATA)))
+
+/*
+ * PVOID
+ * NDIS_PER_PACKET_INFO_FROM_PACKET(
+ * IN OUT  PNDIS_PACKET  Packet,
+ * IN NDIS_PER_PACKET_INFO  InfoType);
+ */
+#define NDIS_PER_PACKET_INFO_FROM_PACKET(Packet, InfoType) \
+  ((PNDIS_PACKET_EXTENSION)((PUCHAR)(Packet) + (Packet)->Private.NdisPacketOobOffset \
+    + sizeof(NDIS_PACKET_OOB_DATA)))->NdisPacketInfo[(InfoType)]
+
+/*
+ * VOID
+ * NDIS_SET_ORIGINAL_PACKET(
+ * IN OUT  PNDIS_PACKET  Packet,
+ * IN PNDIS_PACKET  OriginalPacket);
+ */
+#define NDIS_SET_ORIGINAL_PACKET(Packet, OriginalPacket) \
+  NDIS_PER_PACKET_INFO_FROM_PACKET(Packet, OriginalPacketInfo) = (OriginalPacket)
+
+/*
+ * VOID
+ * NDIS_SET_PACKET_CANCEL_ID(
+ * IN PNDIS_PACKET  Packet
+ * IN ULONG_PTR  CancelId);
+ */
+#define NDIS_SET_PACKET_CANCEL_ID(Packet, CancelId) \
+  NDIS_PER_PACKET_INFO_FROM_PACKET(Packet, PacketCancelId) = (CancelId)
+
+typedef enum _NDIS_TASK {
+  TcpIpChecksumNdisTask,
+  IpSecNdisTask,
+  TcpLargeSendNdisTask,
+  MaxNdisTask
+} NDIS_TASK, *PNDIS_TASK;
+
+typedef struct _NDIS_TASK_IPSEC {
+  struct {
+    ULONG  AH_ESP_COMBINED;
+    ULONG  TRANSPORT_TUNNEL_COMBINED;
+    ULONG  V4_OPTIONS;
+    ULONG  RESERVED;
+  } Supported;
+
+  struct {
+    ULONG  MD5 : 1;
+    ULONG  SHA_1 : 1;
+    ULONG  Transport : 1;
+    ULONG  Tunnel : 1;
+    ULONG  Send : 1;
+    ULONG  Receive : 1;
+  } V4AH;
+
+  struct {
+    ULONG  DES : 1;
+    ULONG  RESERVED : 1;
+    ULONG  TRIPLE_DES : 1;
+    ULONG  NULL_ESP : 1;
+    ULONG  Transport : 1;
+    ULONG  Tunnel : 1;
+    ULONG  Send : 1;
+    ULONG  Receive : 1;
+  } V4ESP;
+} NDIS_TASK_IPSEC, *PNDIS_TASK_IPSEC;
+
+typedef enum _NDIS_ENCAPSULATION {
+  UNSPECIFIED_Encapsulation,
+  NULL_Encapsulation,
+  IEEE_802_3_Encapsulation,
+  IEEE_802_5_Encapsulation,
+  LLC_SNAP_ROUTED_Encapsulation,
+  LLC_SNAP_BRIDGED_Encapsulation
+} NDIS_ENCAPSULATION;
+
+typedef struct _NDIS_ENCAPSULATION_FORMAT {
+  NDIS_ENCAPSULATION  Encapsulation;
+  struct {
+    ULONG  FixedHeaderSize : 1;
+    ULONG  Reserved : 31;
+  } Flags;
+  ULONG  EncapsulationHeaderSize;
+} NDIS_ENCAPSULATION_FORMAT, *PNDIS_ENCAPSULATION_FORMAT;
+
+typedef struct _NDIS_TASK_OFFLOAD_HEADER
+{
+  ULONG Version;
+  ULONG Size;
+  ULONG Reserved;
+  UCHAR OffsetFirstTask;
+  NDIS_ENCAPSULATION_FORMAT EncapsulationFormat;
+} NDIS_TASK_OFFLOAD_HEADER, *PNDIS_TASK_OFFLOAD_HEADER;
+
+typedef struct _NDIS_TASK_OFFLOAD {
+  ULONG  Version;
+  ULONG  Size;
+  NDIS_TASK  Task;
+  ULONG  OffsetNextTask;
+  ULONG  TaskBufferLength;
+  UCHAR  TaskBuffer[1];
+} NDIS_TASK_OFFLOAD, *PNDIS_TASK_OFFLOAD;
+
+/* NDIS_TASK_OFFLOAD_HEADER.Version constants */
+#define NDIS_TASK_OFFLOAD_VERSION 1
+
+typedef struct _NDIS_TASK_TCP_IP_CHECKSUM {
+  struct {
+    ULONG  IpOptionsSupported:1;
+    ULONG  TcpOptionsSupported:1;
+    ULONG  TcpChecksum:1;
+    ULONG  UdpChecksum:1;
+    ULONG  IpChecksum:1;
+  } V4Transmit;
+
+  struct {
+    ULONG  IpOptionsSupported : 1;
+    ULONG  TcpOptionsSupported : 1;
+    ULONG  TcpChecksum : 1;
+    ULONG  UdpChecksum : 1;
+    ULONG  IpChecksum : 1;
+  } V4Receive;
+
+  struct {
+    ULONG  IpOptionsSupported : 1;
+    ULONG  TcpOptionsSupported : 1;
+    ULONG  TcpChecksum : 1;
+    ULONG  UdpChecksum : 1;
+  } V6Transmit;
+
+  struct {
+    ULONG  IpOptionsSupported : 1;
+    ULONG  TcpOptionsSupported : 1;
+    ULONG  TcpChecksum : 1;
+    ULONG  UdpChecksum : 1;
+  } V6Receive;
+} NDIS_TASK_TCP_IP_CHECKSUM, *PNDIS_TASK_TCP_IP_CHECKSUM;
+
+typedef struct _NDIS_TASK_TCP_LARGE_SEND {
+  ULONG  Version;
+  ULONG  MaxOffLoadSize;
+  ULONG  MinSegmentCount;
+  BOOLEAN  TcpOptions;
+  BOOLEAN  IpOptions;
+} NDIS_TASK_TCP_LARGE_SEND, *PNDIS_TASK_TCP_LARGE_SEND;
+
+typedef struct _NDIS_TCP_IP_CHECKSUM_PACKET_INFO {
+  _ANONYMOUS_UNION union {
+    struct {
+      ULONG  NdisPacketChecksumV4 : 1;
+      ULONG  NdisPacketChecksumV6 : 1;
+      ULONG  NdisPacketTcpChecksum : 1;
+      ULONG  NdisPacketUdpChecksum : 1;
+      ULONG  NdisPacketIpChecksum : 1;
+      } Transmit;
+
+    struct {
+      ULONG  NdisPacketTcpChecksumFailed : 1;
+      ULONG  NdisPacketUdpChecksumFailed : 1;
+      ULONG  NdisPacketIpChecksumFailed : 1;
+      ULONG  NdisPacketTcpChecksumSucceeded : 1;
+      ULONG  NdisPacketUdpChecksumSucceeded : 1;
+      ULONG  NdisPacketIpChecksumSucceeded : 1;
+      ULONG  NdisPacketLoopback : 1;
+    } Receive;
+    ULONG  Value;
+  } DUMMYUNIONNAME;
+} NDIS_TCP_IP_CHECKSUM_PACKET_INFO, *PNDIS_TCP_IP_CHECKSUM_PACKET_INFO;
+
+typedef struct _NDIS_WAN_CO_FRAGMENT {
+  ULONG  Errors;
+} NDIS_WAN_CO_FRAGMENT, *PNDIS_WAN_CO_FRAGMENT;
+
+typedef struct _NDIS_WAN_FRAGMENT {
+  UCHAR  RemoteAddress[6];
+  UCHAR  LocalAddress[6];
+} NDIS_WAN_FRAGMENT, *PNDIS_WAN_FRAGMENT;
+
+typedef struct _WAN_CO_LINKPARAMS {
+  ULONG  TransmitSpeed;
+  ULONG  ReceiveSpeed;
+  ULONG  SendWindow;
+} WAN_CO_LINKPARAMS, *PWAN_CO_LINKPARAMS;
+
+
+/* Call Manager */
+
+typedef VOID DDKAPI
+(*CM_ACTIVATE_VC_COMPLETE_HANDLER)(
+  /*IN*/ NDIS_STATUS  Status,
+  /*IN*/ NDIS_HANDLE  CallMgrVcContext,
+  /*IN*/ PCO_CALL_PARAMETERS  CallParameters);
+
+typedef NDIS_STATUS DDKAPI
+(*CM_ADD_PARTY_HANDLER)(
+  /*IN*/ NDIS_HANDLE  CallMgrVcContext,
+  /*IN OUT*/ PCO_CALL_PARAMETERS  CallParameters,
+  /*IN*/ NDIS_HANDLE  NdisPartyHandle,
+  /*OUT*/ PNDIS_HANDLE  CallMgrPartyContext);
+
+typedef NDIS_STATUS DDKAPI
+(*CM_CLOSE_AF_HANDLER)(
+  /*IN*/ NDIS_HANDLE  CallMgrAfContext);
+
+typedef NDIS_STATUS DDKAPI
+(*CM_CLOSE_CALL_HANDLER)(
+  /*IN*/ NDIS_HANDLE  CallMgrVcContext,
+  /*IN*/ NDIS_HANDLE  CallMgrPartyContext  /*OPTIONAL*/,
+  /*IN*/ PVOID  CloseData  /*OPTIONAL*/,
+  /*IN*/ UINT  Size  /*OPTIONAL*/);
+
+typedef NDIS_STATUS DDKAPI
+(*CM_DEREG_SAP_HANDLER)(
+  /*IN*/ NDIS_HANDLE  CallMgrSapContext);
+
+typedef VOID DDKAPI
+(*CM_DEACTIVATE_VC_COMPLETE_HANDLER)(
+  /*IN*/ NDIS_STATUS  Status,
+  /*IN*/ NDIS_HANDLE  CallMgrVcContext);
+
+typedef NDIS_STATUS DDKAPI
+(*CM_DROP_PARTY_HANDLER)(
+  /*IN*/ NDIS_HANDLE  CallMgrPartyContext,
+  /*IN*/ PVOID  CloseData  /*OPTIONAL*/,
+  /*IN*/ UINT  Size  /*OPTIONAL*/);
+
+typedef VOID DDKAPI
+(*CM_INCOMING_CALL_COMPLETE_HANDLER)(
+  /*IN*/ NDIS_STATUS  Status,
+  /*IN*/ NDIS_HANDLE  CallMgrVcContext,
+  /*IN*/ PCO_CALL_PARAMETERS  CallParameters);
+
+typedef NDIS_STATUS DDKAPI
+(*CM_MAKE_CALL_HANDLER)(
+  /*IN*/ NDIS_HANDLE  CallMgrVcContext,
+  /*IN OUT*/ PCO_CALL_PARAMETERS  CallParameters,
+  /*IN*/ NDIS_HANDLE  NdisPartyHandle	/*OPTIONAL*/,
+  /*OUT*/ PNDIS_HANDLE  CallMgrPartyContext  /*OPTIONAL*/);
+
+typedef NDIS_STATUS DDKAPI
+(*CM_MODIFY_CALL_QOS_HANDLER)(
+  /*IN*/ NDIS_HANDLE  CallMgrVcContext,
+  /*IN*/ PCO_CALL_PARAMETERS  CallParameters);
+
+typedef NDIS_STATUS DDKAPI
+(*CM_OPEN_AF_HANDLER)(
+  /*IN*/ NDIS_HANDLE  CallMgrBindingContext,
+  /*IN*/ PCO_ADDRESS_FAMILY  AddressFamily,
+  /*IN*/ NDIS_HANDLE  NdisAfHandle,
+  /*OUT*/ PNDIS_HANDLE  CallMgrAfContext);
+
+typedef NDIS_STATUS DDKAPI
+(*CM_REG_SAP_HANDLER)(
+  /*IN*/ NDIS_HANDLE  CallMgrAfContext,
+  /*IN*/ PCO_SAP  Sap,
+  /*IN*/ NDIS_HANDLE  NdisSapHandle,
+  /*OUT*/ PNDIS_HANDLE  CallMgrSapContext);
+
+typedef NDIS_STATUS DDKAPI
+(*CO_CREATE_VC_HANDLER)(
+  /*IN*/ NDIS_HANDLE  ProtocolAfContext,
+  /*IN*/ NDIS_HANDLE  NdisVcHandle,
+  /*OUT*/ PNDIS_HANDLE  ProtocolVcContext);
+
+typedef NDIS_STATUS DDKAPI
+(*CO_DELETE_VC_HANDLER)(
+  /*IN*/ NDIS_HANDLE  ProtocolVcContext);
+
+typedef VOID DDKAPI
+(*CO_REQUEST_COMPLETE_HANDLER)(
+  /*IN*/ NDIS_STATUS  Status,
+  /*IN*/ NDIS_HANDLE  ProtocolAfContext  /*OPTIONAL*/,
+  /*IN*/ NDIS_HANDLE  ProtocolVcContext  /*OPTIONAL*/,
+  /*IN*/ NDIS_HANDLE  ProtocolPartyContext  /*OPTIONAL*/,
+  /*IN*/ PNDIS_REQUEST  NdisRequest);
+
+typedef NDIS_STATUS DDKAPI
+(*CO_REQUEST_HANDLER)(
+  /*IN*/ NDIS_HANDLE  ProtocolAfContext,
+  /*IN*/ NDIS_HANDLE  ProtocolVcContext  /*OPTIONAL*/,
+  /*IN*/ NDIS_HANDLE	ProtocolPartyContext  /*OPTIONAL*/,
+  /*IN OUT*/ PNDIS_REQUEST  NdisRequest);
+
+typedef struct _NDIS_CALL_MANAGER_CHARACTERISTICS {
+	UCHAR  MajorVersion;
+	UCHAR  MinorVersion;
+	USHORT  Filler;
+	UINT  Reserved;
+	CO_CREATE_VC_HANDLER  CmCreateVcHandler;
+	CO_DELETE_VC_HANDLER  CmDeleteVcHandler;
+	CM_OPEN_AF_HANDLER  CmOpenAfHandler;
+	CM_CLOSE_AF_HANDLER	 CmCloseAfHandler;
+	CM_REG_SAP_HANDLER  CmRegisterSapHandler;
+	CM_DEREG_SAP_HANDLER  CmDeregisterSapHandler;
+	CM_MAKE_CALL_HANDLER  CmMakeCallHandler;
+	CM_CLOSE_CALL_HANDLER  CmCloseCallHandler;
+	CM_INCOMING_CALL_COMPLETE_HANDLER  CmIncomingCallCompleteHandler;
+	CM_ADD_PARTY_HANDLER  CmAddPartyHandler;
+	CM_DROP_PARTY_HANDLER  CmDropPartyHandler;
+	CM_ACTIVATE_VC_COMPLETE_HANDLER  CmActivateVcCompleteHandler;
+	CM_DEACTIVATE_VC_COMPLETE_HANDLER  CmDeactivateVcCompleteHandler;
+	CM_MODIFY_CALL_QOS_HANDLER  CmModifyCallQoSHandler;
+	CO_REQUEST_HANDLER  CmRequestHandler;
+	CO_REQUEST_COMPLETE_HANDLER  CmRequestCompleteHandler;
+} NDIS_CALL_MANAGER_CHARACTERISTICS, *PNDIS_CALL_MANAGER_CHARACTERISTICS;
+
+
+
+/* Call Manager clients */
+
+typedef VOID (*CL_OPEN_AF_COMPLETE_HANDLER)(
+  /*IN*/ NDIS_STATUS Status,
+  /*IN*/ NDIS_HANDLE ProtocolAfContext,
+  /*IN*/ NDIS_HANDLE NdisAfHandle);
+
+typedef VOID DDKAPI
+(*CL_CLOSE_AF_COMPLETE_HANDLER)(
+  /*IN*/ NDIS_STATUS  Status,
+  /*IN*/ NDIS_HANDLE  ProtocolAfContext);
+
+typedef VOID DDKAPI
+(*CL_REG_SAP_COMPLETE_HANDLER)(
+  /*IN*/ NDIS_STATUS  Status,
+  /*IN*/ NDIS_HANDLE  ProtocolSapContext,
+  /*IN*/ PCO_SAP  Sap,
+  /*IN*/ NDIS_HANDLE  NdisSapHandle);
+
+typedef VOID DDKAPI
+(*CL_DEREG_SAP_COMPLETE_HANDLER)(
+  /*IN*/ NDIS_STATUS  Status,
+  /*IN*/ NDIS_HANDLE  ProtocolSapContext);
+
+typedef VOID DDKAPI
+(*CL_MAKE_CALL_COMPLETE_HANDLER)(
+  /*IN*/ NDIS_STATUS  Status,
+  /*IN*/ NDIS_HANDLE  ProtocolVcContext,
+  /*IN*/ NDIS_HANDLE  NdisPartyHandle  /*OPTIONAL*/,
+  /*IN*/ PCO_CALL_PARAMETERS  CallParameters);
+
+typedef VOID DDKAPI
+(*CL_MODIFY_CALL_QOS_COMPLETE_HANDLER)(
+  /*IN*/ NDIS_STATUS  Status,
+  /*IN*/ NDIS_HANDLE  ProtocolVcContext,
+  /*IN*/ PCO_CALL_PARAMETERS  CallParameters);
+
+typedef VOID DDKAPI
+(*CL_CLOSE_CALL_COMPLETE_HANDLER)(
+  /*IN*/ NDIS_STATUS  Status,
+  /*IN*/ NDIS_HANDLE  ProtocolVcContext,
+  /*IN*/ NDIS_HANDLE  ProtocolPartyContext  /*OPTIONAL*/);
+
+typedef VOID DDKAPI
+(*CL_ADD_PARTY_COMPLETE_HANDLER)(
+  /*IN*/ NDIS_STATUS  Status,
+  /*IN*/ NDIS_HANDLE  ProtocolPartyContext,
+  /*IN*/ NDIS_HANDLE  NdisPartyHandle,
+  /*IN*/ PCO_CALL_PARAMETERS  CallParameters);
+
+typedef VOID DDKAPI
+(*CL_DROP_PARTY_COMPLETE_HANDLER)(
+  /*IN*/ NDIS_STATUS  Status,
+  /*IN*/ NDIS_HANDLE  ProtocolPartyContext);
+
+typedef NDIS_STATUS DDKAPI
+(*CL_INCOMING_CALL_HANDLER)(
+  /*IN*/ NDIS_HANDLE  ProtocolSapContext,
+  /*IN*/ NDIS_HANDLE  ProtocolVcContext,
+  /*IN OUT*/ PCO_CALL_PARAMETERS  CallParameters);
+
+typedef VOID DDKAPI
+(*CL_INCOMING_CALL_QOS_CHANGE_HANDLER)(
+  /*IN*/ NDIS_HANDLE  ProtocolVcContext,
+  /*IN*/ PCO_CALL_PARAMETERS  CallParameters);
+
+typedef VOID DDKAPI
+(*CL_INCOMING_CLOSE_CALL_HANDLER)(
+  /*IN*/ NDIS_STATUS  CloseStatus,
+  /*IN*/ NDIS_HANDLE  ProtocolVcContext,
+  /*IN*/ PVOID  CloseData  /*OPTIONAL*/,
+  /*IN*/ UINT  Size  /*OPTIONAL*/);
+
+typedef VOID DDKAPI
+(*CL_INCOMING_DROP_PARTY_HANDLER)(
+  /*IN*/ NDIS_STATUS  DropStatus,
+  /*IN*/ NDIS_HANDLE  ProtocolPartyContext,
+  /*IN*/ PVOID  CloseData  /*OPTIONAL*/,
+  /*IN*/ UINT  Size  /*OPTIONAL*/);
+
+typedef VOID DDKAPI
+(*CL_CALL_CONNECTED_HANDLER)(
+  /*IN*/ NDIS_HANDLE  ProtocolVcContext);
+
+
+typedef struct _NDIS_CLIENT_CHARACTERISTICS {
+  UCHAR  MajorVersion;
+  UCHAR  MinorVersion;
+  USHORT  Filler;
+  UINT  Reserved;
+  CO_CREATE_VC_HANDLER  ClCreateVcHandler;
+  CO_DELETE_VC_HANDLER  ClDeleteVcHandler;
+  CO_REQUEST_HANDLER  ClRequestHandler;
+  CO_REQUEST_COMPLETE_HANDLER  ClRequestCompleteHandler;
+  CL_OPEN_AF_COMPLETE_HANDLER  ClOpenAfCompleteHandler;
+  CL_CLOSE_AF_COMPLETE_HANDLER  ClCloseAfCompleteHandler;
+  CL_REG_SAP_COMPLETE_HANDLER  ClRegisterSapCompleteHandler;
+  CL_DEREG_SAP_COMPLETE_HANDLER  ClDeregisterSapCompleteHandler;
+  CL_MAKE_CALL_COMPLETE_HANDLER  ClMakeCallCompleteHandler;
+  CL_MODIFY_CALL_QOS_COMPLETE_HANDLER	 ClModifyCallQoSCompleteHandler;
+  CL_CLOSE_CALL_COMPLETE_HANDLER  ClCloseCallCompleteHandler;
+  CL_ADD_PARTY_COMPLETE_HANDLER  ClAddPartyCompleteHandler;
+  CL_DROP_PARTY_COMPLETE_HANDLER  ClDropPartyCompleteHandler;
+  CL_INCOMING_CALL_HANDLER  ClIncomingCallHandler;
+  CL_INCOMING_CALL_QOS_CHANGE_HANDLER  ClIncomingCallQoSChangeHandler;
+  CL_INCOMING_CLOSE_CALL_HANDLER  ClIncomingCloseCallHandler;
+  CL_INCOMING_DROP_PARTY_HANDLER  ClIncomingDropPartyHandler;
+  CL_CALL_CONNECTED_HANDLER  ClCallConnectedHandler;
+} NDIS_CLIENT_CHARACTERISTICS, *PNDIS_CLIENT_CHARACTERISTICS;
+
+
+/* NDIS protocol structures */
+
+/* Prototypes for NDIS 3.0 protocol characteristics */
+
+typedef VOID DDKAPI
+(*OPEN_ADAPTER_COMPLETE_HANDLER)(
+  /*IN*/ NDIS_HANDLE  ProtocolBindingContext,
+  /*IN*/ NDIS_STATUS  Status,
+  /*IN*/ NDIS_STATUS  OpenErrorStatus);
+
+typedef VOID DDKAPI
+(*CLOSE_ADAPTER_COMPLETE_HANDLER)(
+  /*IN*/ NDIS_HANDLE  ProtocolBindingContext,
+  /*IN*/ NDIS_STATUS  Status);
+
+typedef VOID DDKAPI
+(*RESET_COMPLETE_HANDLER)(
+  /*IN*/ NDIS_HANDLE  ProtocolBindingContext,
+  /*IN*/ NDIS_STATUS  Status);
+
+typedef VOID DDKAPI
+(*REQUEST_COMPLETE_HANDLER)(
+  /*IN*/ NDIS_HANDLE  ProtocolBindingContext,
+  /*IN*/ PNDIS_REQUEST  NdisRequest,
+  /*IN*/ NDIS_STATUS  Status);
+
+typedef VOID DDKAPI
+(*STATUS_HANDLER)(
+  /*IN*/ NDIS_HANDLE  ProtocolBindingContext,
+  /*IN*/ NDIS_STATUS  GeneralStatus,
+  /*IN*/ PVOID  StatusBuffer,
+  /*IN*/ UINT  StatusBufferSize);
+
+typedef VOID DDKAPI
+(*STATUS_COMPLETE_HANDLER)(
+  /*IN*/ NDIS_HANDLE  ProtocolBindingContext);
+
+typedef VOID DDKAPI
+(*SEND_COMPLETE_HANDLER)(
+  /*IN*/ NDIS_HANDLE  ProtocolBindingContext,
+  /*IN*/ PNDIS_PACKET  Packet,
+  /*IN*/ NDIS_STATUS  Status);
+
+typedef VOID DDKAPI
+(*WAN_SEND_COMPLETE_HANDLER)(
+  /*IN*/ NDIS_HANDLE  ProtocolBindingContext,
+  /*IN*/ PNDIS_WAN_PACKET  Packet,
+  /*IN*/ NDIS_STATUS  Status);
+
+typedef VOID DDKAPI
+(*TRANSFER_DATA_COMPLETE_HANDLER)(
+  /*IN*/ NDIS_HANDLE  ProtocolBindingContext,
+  /*IN*/ PNDIS_PACKET  Packet,
+  /*IN*/ NDIS_STATUS  Status,
+  /*IN*/ UINT  BytesTransferred);
+
+typedef VOID DDKAPI
+(*WAN_TRANSFER_DATA_COMPLETE_HANDLER)(
+    VOID);
+
+
+typedef NDIS_STATUS DDKAPI
+(*RECEIVE_HANDLER)(
+  /*IN*/ NDIS_HANDLE  ProtocolBindingContext,
+  /*IN*/ NDIS_HANDLE  MacReceiveContext,
+  /*IN*/ PVOID  HeaderBuffer,
+  /*IN*/ UINT  HeaderBufferSize,
+  /*IN*/ PVOID  LookAheadBuffer,
+  /*IN*/ UINT  LookaheadBufferSize,
+  /*IN*/ UINT  PacketSize);
+
+typedef NDIS_STATUS DDKAPI
+(*WAN_RECEIVE_HANDLER)(
+  /*IN*/ NDIS_HANDLE  NdisLinkHandle,
+  /*IN*/ PUCHAR  Packet,
+  /*IN*/ ULONG  PacketSize);
+
+typedef VOID DDKAPI
+(*RECEIVE_COMPLETE_HANDLER)(
+  /*IN*/ NDIS_HANDLE  ProtocolBindingContext);
+
+
+/* Protocol characteristics for NDIS 3.0 protocols */
+
+#define NDIS30_PROTOCOL_CHARACTERISTICS_S \
+  UCHAR  MajorNdisVersion; \
+  UCHAR  MinorNdisVersion; \
+  _ANONYMOUS_UNION union { \
+    UINT  Reserved; \
+    UINT  Flags; \
+  } DUMMYUNIONNAME; \
+  OPEN_ADAPTER_COMPLETE_HANDLER  OpenAdapterCompleteHandler; \
+  CLOSE_ADAPTER_COMPLETE_HANDLER  CloseAdapterCompleteHandler; \
+  _ANONYMOUS_UNION union { \
+    SEND_COMPLETE_HANDLER  SendCompleteHandler; \
+    WAN_SEND_COMPLETE_HANDLER  WanSendCompleteHandler; \
+  } DUMMYUNIONNAME2; \
+  _ANONYMOUS_UNION union { \
+    TRANSFER_DATA_COMPLETE_HANDLER  TransferDataCompleteHandler; \
+    WAN_TRANSFER_DATA_COMPLETE_HANDLER  WanTransferDataCompleteHandler; \
+  } DUMMYUNIONNAME3; \
+  RESET_COMPLETE_HANDLER  ResetCompleteHandler; \
+  REQUEST_COMPLETE_HANDLER  RequestCompleteHandler; \
+  _ANONYMOUS_UNION union { \
+    RECEIVE_HANDLER	 ReceiveHandler; \
+    WAN_RECEIVE_HANDLER  WanReceiveHandler; \
+  } DUMMYUNIONNAME4; \
+  RECEIVE_COMPLETE_HANDLER  ReceiveCompleteHandler; \
+  STATUS_HANDLER  StatusHandler; \
+  STATUS_COMPLETE_HANDLER  StatusCompleteHandler; \
+  NDIS_STRING  Name;
+
+typedef struct _NDIS30_PROTOCOL_CHARACTERISTICS {
+  NDIS30_PROTOCOL_CHARACTERISTICS_S
+} NDIS30_PROTOCOL_CHARACTERISTICS, *PNDIS30_PROTOCOL_CHARACTERISTICS;
+
+
+/* Prototypes for NDIS 4.0 protocol characteristics */
+
+typedef INT DDKAPI
+(*RECEIVE_PACKET_HANDLER)(
+  /*IN*/ NDIS_HANDLE  ProtocolBindingContext,
+  /*IN*/ PNDIS_PACKET  Packet);
+
+typedef VOID DDKAPI
+(*BIND_HANDLER)(
+  /*OUT*/ PNDIS_STATUS  Status,
+  /*IN*/ NDIS_HANDLE  BindContext,
+  /*IN*/ PNDIS_STRING  DeviceName,
+  /*IN*/ PVOID  SystemSpecific1,
+  /*IN*/ PVOID  SystemSpecific2);
+
+typedef VOID DDKAPI
+(*UNBIND_HANDLER)(
+  /*OUT*/ PNDIS_STATUS  Status,
+  /*IN*/ NDIS_HANDLE  ProtocolBindingContext,
+  /*IN*/ NDIS_HANDLE  UnbindContext);
+
+typedef NDIS_STATUS DDKAPI
+(*PNP_EVENT_HANDLER)(
+  /*IN*/ NDIS_HANDLE  ProtocolBindingContext,
+  /*IN*/ PNET_PNP_EVENT  NetPnPEvent);
+
+typedef VOID DDKAPI
+(*UNLOAD_PROTOCOL_HANDLER)(
+  VOID);
+
+
+/* Protocol characteristics for NDIS 4.0 protocols */
+
+#ifdef __cplusplus
+
+#define NDIS40_PROTOCOL_CHARACTERISTICS_S \
+  NDIS30_PROTOCOL_CHARACTERISTICS  Ndis30Chars; \
+  RECEIVE_PACKET_HANDLER  ReceivePacketHandler; \
+  BIND_HANDLER  BindAdapterHandler; \
+  UNBIND_HANDLER  UnbindAdapterHandler; \
+  PNP_EVENT_HANDLER  PnPEventHandler; \
+  UNLOAD_PROTOCOL_HANDLER  UnloadHandler;
+
+#else /* !__cplusplus */
+
+#define NDIS40_PROTOCOL_CHARACTERISTICS_S \
+  NDIS30_PROTOCOL_CHARACTERISTICS_S \
+  RECEIVE_PACKET_HANDLER  ReceivePacketHandler; \
+  BIND_HANDLER  BindAdapterHandler; \
+  UNBIND_HANDLER  UnbindAdapterHandler; \
+  PNP_EVENT_HANDLER  PnPEventHandler; \
+  UNLOAD_PROTOCOL_HANDLER  UnloadHandler;
+
+#endif /* __cplusplus */
+
+typedef struct _NDIS40_PROTOCOL_CHARACTERISTICS {
+  NDIS40_PROTOCOL_CHARACTERISTICS_S
+} NDIS40_PROTOCOL_CHARACTERISTICS, *PNDIS40_PROTOCOL_CHARACTERISTICS;
+
+/* Prototypes for NDIS 5.0 protocol characteristics */
+
+typedef VOID DDKAPI
+(*CO_SEND_COMPLETE_HANDLER)(
+  /*IN*/ NDIS_STATUS  Status,
+  /*IN*/ NDIS_HANDLE  ProtocolVcContext,
+  /*IN*/ PNDIS_PACKET  Packet);
+
+typedef VOID DDKAPI
+(*CO_STATUS_HANDLER)(
+  /*IN*/ NDIS_HANDLE  ProtocolBindingContext,
+  /*IN*/ NDIS_HANDLE  ProtocolVcContext  /*OPTIONAL*/,
+  /*IN*/ NDIS_STATUS  GeneralStatus,
+  /*IN*/ PVOID  StatusBuffer,
+  /*IN*/ UINT  StatusBufferSize);
+
+typedef UINT DDKAPI
+(*CO_RECEIVE_PACKET_HANDLER)(
+  /*IN*/ NDIS_HANDLE  ProtocolBindingContext,
+  /*IN*/ NDIS_HANDLE  ProtocolVcContext,
+  /*IN*/ PNDIS_PACKET  Packet);
+
+typedef VOID DDKAPI
+(*CO_AF_REGISTER_NOTIFY_HANDLER)(
+  /*IN*/ NDIS_HANDLE  ProtocolBindingContext,
+  /*IN*/ PCO_ADDRESS_FAMILY  AddressFamily);
+
+#ifdef __cplusplus \
+
+#define NDIS50_PROTOCOL_CHARACTERISTICS_S \
+  NDIS40_PROTOCOL_CHARACTERISTICS  Ndis40Chars; \
+  PVOID  ReservedHandlers[4]; \
+  CO_SEND_COMPLETE_HANDLER  CoSendCompleteHandler; \
+  CO_STATUS_HANDLER  CoStatusHandler; \
+  CO_RECEIVE_PACKET_HANDLER  CoReceivePacketHandler; \
+  CO_AF_REGISTER_NOTIFY_HANDLER  CoAfRegisterNotifyHandler;
+
+#else /* !__cplusplus */
+
+#define NDIS50_PROTOCOL_CHARACTERISTICS_S \
+  NDIS40_PROTOCOL_CHARACTERISTICS_S \
+  PVOID  ReservedHandlers[4]; \
+  CO_SEND_COMPLETE_HANDLER  CoSendCompleteHandler; \
+  CO_STATUS_HANDLER  CoStatusHandler; \
+  CO_RECEIVE_PACKET_HANDLER  CoReceivePacketHandler; \
+  CO_AF_REGISTER_NOTIFY_HANDLER  CoAfRegisterNotifyHandler;
+
+#endif /* !__cplusplus */
+
+typedef struct _NDIS50_PROTOCOL_CHARACTERISTICS {
+  NDIS50_PROTOCOL_CHARACTERISTICS_S
+} NDIS50_PROTOCOL_CHARACTERISTICS, *PNDIS50_PROTOCOL_CHARACTERISTICS;
+
+#if defined(NDIS50) || defined(NDIS51)
+typedef struct _NDIS_PROTOCOL_CHARACTERISTICS {
+  NDIS50_PROTOCOL_CHARACTERISTICS_S;
+} NDIS_PROTOCOL_CHARACTERISTICS, *PNDIS_PROTOCOL_CHARACTERISTICS;
+#elif defined(NDIS40)
+typedef struct _NDIS_PROTOCOL_CHARACTERISTICS {
+  NDIS40_PROTOCOL_CHARACTERISTICS_S;
+} NDIS_PROTOCOL_CHARACTERISTICS, *PNDIS_PROTOCOL_CHARACTERISTICS;
+#elif defined(NDIS30)
+typedef struct _NDIS_PROTOCOL_CHARACTERISTICS {
+  NDIS30_PROTOCOL_CHARACTERISTICS_S
+} NDIS_PROTOCOL_CHARACTERISTICS, *PNDIS_PROTOCOL_CHARACTERISTICS;
+#else
+#error Define an NDIS version
+#endif /* NDIS30 */
+
+
+
+/* Buffer management routines */
+
+NDISAPI
+VOID
+DDKAPI
+NdisAllocateBuffer(
+  /*OUT*/ PNDIS_STATUS  Status,
+  /*OUT*/ PNDIS_BUFFER  *Buffer,
+  /*IN*/ NDIS_HANDLE  PoolHandle,
+  /*IN*/ PVOID  VirtualAddress,
+  /*IN*/ UINT  Length);
+
+
+NDISAPI
+VOID
+DDKAPI
+NdisAllocateBufferPool(
+  /*OUT*/ PNDIS_STATUS  Status,
+  /*OUT*/ PNDIS_HANDLE  PoolHandle,
+  /*IN*/ UINT  NumberOfDescriptors);
+
+NDISAPI
+VOID
+DDKAPI
+NdisAllocatePacket(
+  /*OUT*/ PNDIS_STATUS  Status,
+  /*OUT*/ PNDIS_PACKET  *Packet,
+  /*IN*/ NDIS_HANDLE  PoolHandle);
+
+NDISAPI
+VOID
+DDKAPI
+NdisAllocatePacketPool(
+  /*OUT*/ PNDIS_STATUS  Status,
+  /*OUT*/ PNDIS_HANDLE  PoolHandle,
+  /*IN*/ UINT  NumberOfDescriptors,
+  /*IN*/ UINT  ProtocolReservedLength);
+
+#define PROTOCOL_RESERVED_SIZE_IN_PACKET (4 * sizeof(PVOID))
+
+NDISAPI
+VOID
+DDKAPI
+NdisCopyBuffer(
+  /*OUT*/ PNDIS_STATUS  Status,
+  /*OUT*/ PNDIS_BUFFER  *Buffer,
+  /*IN*/ NDIS_HANDLE  PoolHandle,
+  /*IN*/ PVOID  MemoryDescriptor,
+  /*IN*/ UINT  Offset,
+  /*IN*/ UINT  Length);
+
+NDISAPI
+VOID
+DDKAPI
+NdisCopyFromPacketToPacket(
+  /*IN*/ PNDIS_PACKET  Destination,
+  /*IN*/ UINT  DestinationOffset,
+  /*IN*/ UINT  BytesToCopy,
+  /*IN*/ PNDIS_PACKET  Source,
+  /*IN*/ UINT  SourceOffset,
+  /*OUT*/ PUINT  BytesCopied);
+
+NDISAPI
+VOID
+DDKAPI
+NdisDprAllocatePacket(
+  /*OUT*/ PNDIS_STATUS  Status,
+  /*OUT*/ PNDIS_PACKET  *Packet,
+  /*IN*/ NDIS_HANDLE  PoolHandle);
+
+NDISAPI
+VOID
+DDKAPI
+NdisDprAllocatePacketNonInterlocked(
+  /*OUT*/ PNDIS_STATUS  Status,
+  /*OUT*/ PNDIS_PACKET  *Packet,
+  /*IN*/ NDIS_HANDLE  PoolHandle);
+
+NDISAPI
+VOID
+DDKAPI
+NdisDprFreePacket(
+  /*IN*/ PNDIS_PACKET  Packet);
+
+NDISAPI
+VOID
+DDKAPI
+NdisDprFreePacketNonInterlocked(
+  /*IN*/ PNDIS_PACKET  Packet);
+
+NDISAPI
+VOID
+DDKAPI
+NdisFreeBufferPool(
+  /*IN*/ NDIS_HANDLE  PoolHandle);
+
+NDISAPI
+VOID
+DDKAPI
+NdisFreePacket(
+  /*IN*/ PNDIS_PACKET  Packet);
+
+NDISAPI
+VOID
+DDKAPI
+NdisFreePacketPool(
+  /*IN*/ NDIS_HANDLE  PoolHandle);
+
+NDISAPI
+VOID
+DDKAPI
+NdisReturnPackets(
+  /*IN*/ PNDIS_PACKET  *PacketsToReturn,
+  /*IN*/ UINT  NumberOfPackets);
+
+NDISAPI
+VOID
+DDKAPI
+NdisUnchainBufferAtBack(
+  /*IN OUT*/ PNDIS_PACKET  Packet,
+  /*OUT*/ PNDIS_BUFFER  *Buffer);
+
+NDISAPI
+VOID
+DDKAPI
+NdisUnchainBufferAtFront(
+  /*IN OUT*/ PNDIS_PACKET  Packet,
+  /*OUT*/ PNDIS_BUFFER  *Buffer);
+
+NDISAPI
+VOID
+DDKAPI
+NdisAdjustBufferLength(
+  /*IN*/ PNDIS_BUFFER  Buffer,
+  /*IN*/ UINT  Length);
+
+NDISAPI
+ULONG
+DDKAPI
+NdisBufferLength(
+  /*IN*/ PNDIS_BUFFER  Buffer);
+
+NDISAPI
+PVOID
+DDKAPI
+NdisBufferVirtualAddress(
+  /*IN*/ PNDIS_BUFFER  Buffer);
+
+NDISAPI
+ULONG
+DDKAPI
+NDIS_BUFFER_TO_SPAN_PAGES(
+  /*IN*/ PNDIS_BUFFER  Buffer);
+
+NDISAPI
+VOID
+DDKAPI
+NdisFreeBuffer(
+  /*IN*/ PNDIS_BUFFER  Buffer);
+
+NDISAPI
+VOID
+DDKAPI
+NdisGetBufferPhysicalArraySize(
+  /*IN*/ PNDIS_BUFFER  Buffer,
+  /*OUT*/ PUINT  ArraySize);
+
+NDISAPI
+VOID
+DDKAPI
+NdisGetFirstBufferFromPacket(
+  /*IN*/ PNDIS_PACKET  _Packet,
+  /*OUT*/ PNDIS_BUFFER  *_FirstBuffer,
+  /*OUT*/ PVOID  *_FirstBufferVA,
+  /*OUT*/ PUINT  _FirstBufferLength,
+  /*OUT*/ PUINT  _TotalBufferLength);
+
+NDISAPI
+VOID
+DDKAPI
+NdisQueryBuffer(
+  /*IN*/ PNDIS_BUFFER  Buffer,
+  /*OUT*/ PVOID  *VirtualAddress /*OPTIONAL*/,
+  /*OUT*/ PUINT  Length);
+
+NDISAPI
+VOID
+DDKAPI
+NdisQueryBufferOffset(
+  /*IN*/ PNDIS_BUFFER  Buffer,
+  /*OUT*/ PUINT  Offset,
+  /*OUT*/ PUINT  Length);
+
+NDISAPI
+VOID
+DDKAPI
+NdisFreeBuffer(
+  /*IN*/ PNDIS_BUFFER  Buffer);
+
+
+/*
+ * VOID
+ * NdisGetBufferPhysicalArraySize(
+ * IN PNDIS_BUFFER  Buffer,
+ * OUT PUINT  ArraySize);
+ */
+#define NdisGetBufferPhysicalArraySize(Buffer,        \
+                                       ArraySize)     \
+{                                                     \
+  (*(ArraySize) = NDIS_BUFFER_TO_SPAN_PAGES(Buffer))  \
+}
+
+
+/*
+ * VOID
+ * NdisGetFirstBufferFromPacket(
+ * IN PNDIS_PACKET  _Packet,
+ * OUT PNDIS_BUFFER  * _FirstBuffer,
+ * OUT PVOID  * _FirstBufferVA,
+ * OUT PUINT  _FirstBufferLength,
+ * OUT PUINT  _TotalBufferLength)
+ */
+#define	NdisGetFirstBufferFromPacket(_Packet,             \
+                                     _FirstBuffer,        \
+                                     _FirstBufferVA,      \
+                                     _FirstBufferLength,  \
+                                     _TotalBufferLength)  \
+{                                                         \
+  PNDIS_BUFFER _Buffer;                                   \
+                                                          \
+  _Buffer         = (_Packet)->Private.Head;              \
+  *(_FirstBuffer) = _Buffer;                              \
+  if (_Buffer != NULL)                                    \
+    {                                                     \
+	    *(_FirstBufferVA)     = MmGetSystemAddressForMdl(_Buffer);  \
+	    *(_FirstBufferLength) = MmGetMdlByteCount(_Buffer);	        \
+	    _Buffer = _Buffer->Next;                                    \
+		  *(_TotalBufferLength) = *(_FirstBufferLength);              \
+		  while (_Buffer != NULL) {                                   \
+		    *(_TotalBufferLength) += MmGetMdlByteCount(_Buffer);      \
+		    _Buffer = _Buffer->Next;                                  \
+		  }                                                           \
+    }                             \
+  else                            \
+    {                             \
+      *(_FirstBufferVA) = 0;      \
+      *(_FirstBufferLength) = 0;  \
+      *(_TotalBufferLength) = 0;  \
+    } \
+}
+
+/*
+ * VOID
+ * NdisGetFirstBufferFromPacketSafe(
+ * IN PNDIS_PACKET  _Packet,
+ * OUT PNDIS_BUFFER  * _FirstBuffer,
+ * OUT PVOID  * _FirstBufferVA,
+ * OUT PUINT  _FirstBufferLength,
+ * OUT PUINT  _TotalBufferLength),
+ * IN MM_PAGE_PRIORITY _Priority)
+ */
+#define NdisGetFirstBufferFromPacketSafe(_Packet,         \
+                                     _FirstBuffer,        \
+                                     _FirstBufferVA,      \
+                                     _FirstBufferLength,  \
+                                     _TotalBufferLength,  \
+                                     _Priority)           \
+{                                                         \
+  PNDIS_BUFFER _Buffer;                                   \
+                                                          \
+  _Buffer         = (_Packet)->Private.Head;              \
+  *(_FirstBuffer) = _Buffer;                              \
+  if (_Buffer != NULL)                                    \
+    {                                                     \
+            *(_FirstBufferVA)     = MmGetSystemAddressForMdlSafe(_Buffer, _Priority);  \
+            *(_FirstBufferLength) = MmGetMdlByteCount(_Buffer);         \
+            _Buffer = _Buffer->Next;                                    \
+                  *(_TotalBufferLength) = *(_FirstBufferLength);              \
+                  while (_Buffer != NULL) {                                   \
+                    *(_TotalBufferLength) += MmGetMdlByteCount(_Buffer);      \
+                    _Buffer = _Buffer->Next;                                  \
+                  }                                                           \
+    }                             \
+  else                            \
+    {                             \
+      *(_FirstBufferVA) = 0;      \
+      *(_FirstBufferLength) = 0;  \
+      *(_TotalBufferLength) = 0;  \
+    } \
+}
+
+/*
+ * VOID
+ * NdisQueryBuffer(
+ * IN PNDIS_BUFFER  Buffer,
+ * OUT PVOID  *VirtualAddress OPTIONAL,
+ * OUT PUINT  Length)
+ */
+#define NdisQueryBuffer(Buffer,         \
+                        VirtualAddress, \
+                        Length)         \
+{                                       \
+	if (VirtualAddress)                   \
+		*((PVOID*)VirtualAddress) = MmGetSystemAddressForMdl(Buffer); \
+                                        \
+	*((PUINT)Length) = MmGetMdlByteCount(Buffer); \
+}
+
+
+/*
+ * VOID
+ * NdisQueryBufferOffset(
+ * IN PNDIS_BUFFER  Buffer,
+ * OUT PUINT  Offset,
+ * OUT PUINT  Length);
+ */
+#define NdisQueryBufferOffset(Buffer,             \
+                              Offset,             \
+                              Length)             \
+{                                                 \
+  *((PUINT)Offset) = MmGetMdlByteOffset(Buffer);  \
+  *((PUINT)Length) = MmGetMdlByteCount(Buffer);   \
+}
+
+
+/*
+ * PVOID
+ * NDIS_BUFFER_LINKAGE(
+ * IN PNDIS_BUFFER  Buffer);
+ */
+#define NDIS_BUFFER_LINKAGE(Buffer)(Buffer)->Next;
+
+
+/*
+ * VOID
+ * NdisChainBufferAtBack(
+ * IN OUT PNDIS_PACKET  Packet,
+ * IN OUT PNDIS_BUFFER  Buffer)
+ */
+#define NdisChainBufferAtBack(Packet,           \
+                              Buffer)           \
+{                                               \
+	PNDIS_BUFFER NdisBuffer = (Buffer);           \
+                                                \
+	while (NdisBuffer->Next != NULL)              \
+   NdisBuffer = NdisBuffer->Next;               \
+	                                              \
+	NdisBuffer->Next = NULL;                      \
+	                                              \
+	if ((Packet)->Private.Head != NULL)           \
+    (Packet)->Private.Tail->Next = (Buffer);    \
+	else                                          \
+    (Packet)->Private.Head = (Buffer);          \
+	                                              \
+	(Packet)->Private.Tail = NdisBuffer;          \
+	(Packet)->Private.ValidCounts = FALSE;        \
+}
+
+
+/*
+ * VOID
+ * NdisChainBufferAtFront(
+ * IN OUT PNDIS_PACKET  Packet,
+ * IN OUT PNDIS_BUFFER  Buffer)
+ */
+#define NdisChainBufferAtFront(Packet,        \
+                               Buffer)        \
+{                                             \
+	PNDIS_BUFFER _NdisBuffer = (Buffer);        \
+                                              \
+  while (_NdisBuffer->Next != NULL)           \
+    _NdisBuffer = _NdisBuffer->Next;          \
+                                              \
+  if ((Packet)->Private.Head == NULL)         \
+    (Packet)->Private.Tail = _NdisBuffer;     \
+                                              \
+	_NdisBuffer->Next = (Packet)->Private.Head; \
+	(Packet)->Private.Head = (Buffer);          \
+	(Packet)->Private.ValidCounts = FALSE;      \
+}
+
+
+/*
+ * VOID
+ * NdisGetNextBuffer(
+ * IN PNDIS_BUFFER  CurrentBuffer,
+ * OUT PNDIS_BUFFER  * NextBuffer)
+ */
+#define NdisGetNextBuffer(CurrentBuffer,  \
+                          NextBuffer)     \
+{                                         \
+  *(NextBuffer) = (CurrentBuffer)->Next;  \
+}
+
+
+/*
+ * UINT
+ * NdisGetPacketFlags(
+ * IN PNDIS_PACKET  Packet);
+ */
+#define NdisGetPacketFlags(Packet)(Packet)->Private.Flags;
+
+
+/*
+ * VOID
+ * NdisClearPacketFlags(
+ * IN PNDIS_PACKET  Packet,
+ * IN UINT  Flags);
+ */
+#define NdisClearPacketFlags(Packet, Flags) \
+  (Packet)->Private.Flags &= ~(Flags)
+
+
+/*
+ * VOID
+ * NDIS_GET_PACKET_MEDIA_SPECIFIC_INFO(
+ * IN PNDIS_PACKET    Packet,
+ * IN PPVOID          pMediaSpecificInfo,
+ * IN PUINT           pSizeMediaSpecificInfo);
+ */
+#define NDIS_GET_PACKET_MEDIA_SPECIFIC_INFO(_Packet,                                  \
+                                            _pMediaSpecificInfo,                      \
+                                            _pSizeMediaSpecificInfo)                  \
+{                                                                                     \
+  if (!((_Packet)->Private.NdisPacketFlags & fPACKET_ALLOCATED_BY_NDIS) ||            \
+      !((_Packet)->Private.NdisPacketFlags & fPACKET_CONTAINS_MEDIA_SPECIFIC_INFO))   \
+	  {                                                                                 \
+	    *(_pMediaSpecificInfo) = NULL;                                                  \
+	    *(_pSizeMediaSpecificInfo) = 0;                                                 \
+	  }                                                                                 \
+  else                                                                                \
+	  {                                                                                 \
+	    *(_pMediaSpecificInfo) = ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) +           \
+        (_Packet)->Private.NdisPacketOobOffset))->MediaSpecificInformation;           \
+	    *(_pSizeMediaSpecificInfo) = ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) +       \
+	      (_Packet)->Private.NdisPacketOobOffset))->SizeMediaSpecificInfo;              \
+	  }                                                                                 \
+}
+
+
+/*
+ * ULONG
+ * NDIS_GET_PACKET_PROTOCOL_TYPE(
+ * IN PNDIS_PACKET  Packet);
+ */
+#define NDIS_GET_PACKET_PROTOCOL_TYPE(_Packet) \
+  ((_Packet)->Private.Flags & NDIS_PROTOCOL_ID_MASK)
+
+/*
+ * ULONG
+ * NDIS_GET_PACKET_HEADER_SIZE(
+ * IN PNDIS_PACKET  Packet);
+ */
+#define NDIS_GET_PACKET_HEADER_SIZE(_Packet) \
+	((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
+	(_Packet)->Private.NdisPacketOobOffset))->HeaderSize
+
+
+/*
+ * NDIS_STATUS
+ * NDIS_GET_PACKET_STATUS(
+ * IN PNDIS_PACKET  Packet);
+ */
+#define NDIS_GET_PACKET_STATUS(_Packet) \
+	((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
+	(_Packet)->Private.NdisPacketOobOffset))->Status
+
+
+/*
+ * ULONGLONG
+ * NDIS_GET_PACKET_TIME_RECEIVED(
+ * IN PNDIS_PACKET  Packet);
+ */
+#define NDIS_GET_PACKET_TIME_RECEIVED(_Packet)  \
+	((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) +  \
+	(_Packet)->Private.NdisPacketOobOffset))->TimeReceived
+
+
+/*
+ * ULONGLONG
+ * NDIS_GET_PACKET_TIME_SENT(
+ * IN PNDIS_PACKET  Packet);
+ */
+#define NDIS_GET_PACKET_TIME_SENT(_Packet)      \
+	((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) +  \
+	(_Packet)->Private.NdisPacketOobOffset))->TimeSent
+
+
+/*
+ * ULONGLONG
+ * NDIS_GET_PACKET_TIME_TO_SEND(
+ * IN PNDIS_PACKET  Packet);
+ */
+#define NDIS_GET_PACKET_TIME_TO_SEND(_Packet)   \
+	((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) +  \
+	(_Packet)->Private.NdisPacketOobOffset))->TimeToSend
+
+
+/*
+ * PNDIS_PACKET_OOB_DATA
+ * NDIS_OOB_DATA_FROM_PACKET(
+ * IN PNDIS_PACKET  Packet);
+ */
+#define NDIS_OOB_DATA_FROM_PACKET(_Packet)    \
+  (PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
+  (_Packet)->Private.NdisPacketOobOffset)
+
+
+/*
+ * VOID
+ * NdisQueryPacket(
+ * IN PNDIS_PACKET  Packet,
+ * OUT PUINT  PhysicalBufferCount  OPTIONAL,
+ * OUT PUINT  BufferCount  OPTIONAL,
+ * OUT PNDIS_BUFFER  *FirstBuffer OPTIONAL,
+ * OUT PUINT  TotalPacketLength  OPTIONAL);
+ */
+#define NdisQueryPacket(Packet,                                           \
+                        PhysicalBufferCount,                              \
+                        BufferCount,                                      \
+                        FirstBuffer,                                      \
+                        TotalPacketLength)                                \
+{                                                                         \
+  if (FirstBuffer)                                                        \
+    *((PNDIS_BUFFER*)FirstBuffer) = (Packet)->Private.Head;               \
+  if ((TotalPacketLength) || (BufferCount) || (PhysicalBufferCount))      \
+  {                                                                       \
+    if (!(Packet)->Private.ValidCounts) {                                 \
+      UINT _Offset;                                                       \
+      UINT _PacketLength;                                                 \
+      PNDIS_BUFFER _NdisBuffer;                                           \
+      UINT _PhysicalBufferCount = 0;                                      \
+      UINT _TotalPacketLength   = 0;                                      \
+      UINT _Count               = 0;                                      \
+                                                                          \
+      for (_NdisBuffer = (Packet)->Private.Head;                          \
+        _NdisBuffer != (PNDIS_BUFFER)NULL;                                \
+        _NdisBuffer = _NdisBuffer->Next)                                  \
+      {                                                                   \
+        _PhysicalBufferCount += NDIS_BUFFER_TO_SPAN_PAGES(_NdisBuffer);   \
+        NdisQueryBufferOffset(_NdisBuffer, &_Offset, &_PacketLength);     \
+        _TotalPacketLength += _PacketLength;                              \
+        _Count++;                                                         \
+      }                                                                   \
+      (Packet)->Private.PhysicalCount = _PhysicalBufferCount;             \
+      (Packet)->Private.TotalLength   = _TotalPacketLength;               \
+      (Packet)->Private.Count         = _Count;                           \
+      (Packet)->Private.ValidCounts   = TRUE;                             \
+	}                                                                       \
+                                                                          \
+  if (PhysicalBufferCount)                                                \
+      *((PUINT)PhysicalBufferCount) = (Packet)->Private.PhysicalCount;    \
+                                                                          \
+  if (BufferCount)                                                        \
+      *((PUINT)BufferCount) = (Packet)->Private.Count;                    \
+                                                                          \
+  if (TotalPacketLength)                                                  \
+      *((PUINT)TotalPacketLength) = (Packet)->Private.TotalLength;        \
+  } \
+}
+
+/*
+ * VOID
+ * NdisQueryPacketLength(
+ * IN PNDIS_PACKET  Packet,
+ * OUT PUINT  PhysicalBufferCount  OPTIONAL,
+ * OUT PUINT  BufferCount  OPTIONAL,
+ * OUT PNDIS_BUFFER  *FirstBuffer  OPTIONAL,
+ * OUT PUINT  TotalPacketLength  OPTIONAL);
+ */
+#define NdisQueryPacketLength(Packet,                                     \
+                              TotalPacketLength)                          \
+{                                                                         \
+  if ((TotalPacketLength))                                                \
+  {                                                                       \
+    if (!(Packet)->Private.ValidCounts) {                                 \
+      UINT _Offset;                                                       \
+      UINT _PacketLength;                                                 \
+      PNDIS_BUFFER _NdisBuffer;                                           \
+      UINT _PhysicalBufferCount = 0;                                      \
+      UINT _TotalPacketLength   = 0;                                      \
+      UINT _Count               = 0;                                      \
+                                                                          \
+      for (_NdisBuffer = (Packet)->Private.Head;                          \
+        _NdisBuffer != (PNDIS_BUFFER)NULL;                                \
+        _NdisBuffer = _NdisBuffer->Next)                                  \
+      {                                                                   \
+        _PhysicalBufferCount += NDIS_BUFFER_TO_SPAN_PAGES(_NdisBuffer);   \
+        NdisQueryBufferOffset(_NdisBuffer, &_Offset, &_PacketLength);     \
+        _TotalPacketLength += _PacketLength;                              \
+        _Count++;                                                         \
+      }                                                                   \
+      (Packet)->Private.PhysicalCount = _PhysicalBufferCount;             \
+      (Packet)->Private.TotalLength   = _TotalPacketLength;               \
+      (Packet)->Private.Count         = _Count;                           \
+      (Packet)->Private.ValidCounts   = TRUE;                             \
+  }                                                                       \
+                                                                          \
+  if (TotalPacketLength)                                                  \
+      *((PUINT)TotalPacketLength) = (Packet)->Private.TotalLength;        \
+  } \
+}
+
+
+/*
+ * VOID
+ * NdisRecalculatePacketCounts(
+ * IN OUT  PNDIS_PACKET  Packet);
+ */
+#define NdisRecalculatePacketCounts(Packet)       \
+{                                                 \
+  PNDIS_BUFFER _Buffer = (Packet)->Private.Head;  \
+  if (_Buffer != NULL)                            \
+  {                                               \
+      while (_Buffer->Next != NULL)               \
+      {                                           \
+          ´_Buffer = _Buffer->Next;               \
+      }                                           \
+      (Packet)->Private.Tail = _Buffer;           \
+  }                                               \
+  (Packet)->Private.ValidCounts = FALSE;          \
+}
+
+
+/*
+ * VOID
+ * NdisReinitializePacket(
+ * IN OUT  PNDIS_PACKET  Packet);
+ */
+#define NdisReinitializePacket(Packet)          \
+{                                               \
+	(Packet)->Private.Head = (PNDIS_BUFFER)NULL;  \
+	(Packet)->Private.ValidCounts = FALSE;        \
+}
+
+
+/*
+ * VOID
+ * NdisSetPacketFlags(
+ * IN PNDIS_PACKET  Packet,
+ * IN UINT  Flags);
+ */
+#define NdisSetPacketFlags(Packet, Flags) \
+  (Packet)->Private.Flags |= (Flags);
+
+
+/*
+ * VOID
+ * NDIS_SET_PACKET_HEADER_SIZE(
+ * IN PNDIS_PACKET  Packet,
+ * IN UINT  HdrSize);
+ */
+#define NDIS_SET_PACKET_HEADER_SIZE(_Packet, _HdrSize)              \
+  ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) +                      \
+  (_Packet)->Private.NdisPacketOobOffset))->HeaderSize = (_HdrSize)
+
+
+/*
+ * VOID
+ * NDIS_SET_PACKET_MEDIA_SPECIFIC_INFO(
+ * IN PNDIS_PACKET  Packet,
+ * IN PVOID  MediaSpecificInfo,
+ * IN UINT  SizeMediaSpecificInfo);
+ */
+#define NDIS_SET_PACKET_MEDIA_SPECIFIC_INFO(_Packet,                      \
+                                            _MediaSpecificInfo,           \
+                                            _SizeMediaSpecificInfo)       \
+{                                                                         \
+  if ((_Packet)->Private.NdisPacketFlags & fPACKET_ALLOCATED_BY_NDIS)     \
+	  {                                                                     \
+      (_Packet)->Private.NdisPacketFlags |= fPACKET_CONTAINS_MEDIA_SPECIFIC_INFO; \
+      ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) +                        \
+        (_Packet)->Private.NdisPacketOobOffset))->MediaSpecificInformation = \
+          (_MediaSpecificInfo);                                           \
+      ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) +                        \
+        (_Packet)->Private.NdisPacketOobOffset))->SizeMediaSpecificInfo = \
+          (_SizeMediaSpecificInfo);                                       \
+	  }                                                                     \
+}
+
+
+/*
+ * VOID
+ * NDIS_SET_PACKET_STATUS(
+ * IN PNDIS_PACKET    Packet,
+ * IN NDIS_STATUS     Status);
+ */
+#define NDIS_SET_PACKET_STATUS(_Packet, _Status)  \
+  ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) +    \
+  (_Packet)->Private.NdisPacketOobOffset))->Status = (_Status)
+
+
+/*
+ * VOID
+ * NDIS_SET_PACKET_TIME_RECEIVED(
+ * IN PNDIS_PACKET  Packet,
+ * IN ULONGLONG  TimeReceived);
+ */
+#define NDIS_SET_PACKET_TIME_RECEIVED(_Packet, _TimeReceived) \
+  ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) +                \
+  (_Packet)->Private.NdisPacketOobOffset))->TimeReceived = (_TimeReceived)
+
+
+/*
+ * VOID
+ * NDIS_SET_PACKET_TIME_SENT(
+ * IN PNDIS_PACKET  Packet,
+ * IN ULONGLONG  TimeSent);
+ */
+#define NDIS_SET_PACKET_TIME_SENT(_Packet, _TimeSent) \
+  ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) +        \
+  (_Packet)->Private.NdisPacketOobOffset))->TimeSent = (_TimeSent)
+
+
+/*
+ * VOID
+ * NDIS_SET_PACKET_TIME_TO_SEND(
+ * IN PNDIS_PACKET  Packet,
+ * IN ULONGLONG  TimeToSend);
+ */
+#define NDIS_SET_PACKET_TIME_TO_SEND(_Packet, _TimeToSend)  \
+  ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) +              \
+  (_Packet)->Private.NdisPacketOobOffset))->TimeToSend = (_TimeToSend)
+
+
+/*
+ * VOID
+ * NdisSetSendFlags(
+ * IN PNDIS_PACKET  Packet,
+ * IN UINT  Flags);
+ */
+#define NdisSetSendFlags(_Packet,_Flags)(_Packet)->Private.Flags = (_Flags)
+
+
+
+/* Memory management routines */
+
+/*
+ * VOID
+ * NdisCreateLookaheadBufferFromSharedMemory(
+ * IN PVOID  pSharedMemory,
+ * IN UINT  LookaheadLength,
+ * OUT PVOID  *pLookaheadBuffer)
+ */
+#define NdisCreateLookaheadBufferFromSharedMemory(_pSharedMemory,     \
+                                                  _LookaheadLength,   \
+                                                  _pLookaheadBuffer)  \
+  ((*(_pLookaheadBuffer)) = (_pSharedMemory))
+
+/*
+ * VOID
+ * NdisDestroyLookaheadBufferFromSharedMemory(
+ * IN PVOID  pLookaheadBuffer)
+ */
+#define NdisDestroyLookaheadBufferFromSharedMemory(_pLookaheadBuffer)
+
+#if defined(i386)
+
+/*
+ * VOID
+ * NdisMoveFromMappedMemory(
+ * OUT PVOID  Destination,
+ * IN PVOID  Source,
+ * IN ULONG  Length);
+ */
+#define NdisMoveFromMappedMemory(Destination, Source, Length) \
+  NdisMoveMappedMemory(Destination, Source, Length)
+
+/*
+ * VOID
+ * NdisMoveMappedMemory(
+ * OUT PVOID  Destination,
+ * IN PVOID  Source,
+ * IN ULONG  Length);
+ */
+#define NdisMoveMappedMemory(Destination, Source, Length) \
+  RtlCopyMemory(Destination, Source, Length)
+
+/*
+ * VOID
+ * NdisMoveToMappedMemory(
+ * OUT PVOID  Destination,
+ * IN PVOID  Source,
+ * IN ULONG  Length);
+ */
+#define NdisMoveToMappedMemory(Destination, Source, Length) \
+  NdisMoveMappedMemory(Destination, Source, Length)
+
+#endif /* i386 */
+
+/*
+ * VOID
+ * NdisMUpdateSharedMemory(
+ * IN NDIS_HANDLE  MiniportAdapterHandle,
+ * IN ULONG  Length,
+ * IN PVOID  VirtualAddress,
+ * IN NDIS_PHYSICAL_ADDRESS  PhysicalAddress);
+ */
+#define NdisMUpdateSharedMemory(_H, _L, _V, _P) \
+  NdisUpdateSharedMemory(_H, _L, _V, _P)
+
+NDISAPI
+NDIS_STATUS
+DDKAPI
+NdisAllocateMemory(
+  /*OUT*/  PVOID  *VirtualAddress,
+  /*IN*/ UINT  Length,
+  /*IN*/ UINT  MemoryFlags,
+  /*IN*/ NDIS_PHYSICAL_ADDRESS  HighestAcceptableAddress);
+
+NDISAPI
+VOID
+DDKAPI
+NdisFreeMemory(
+  /*IN*/ PVOID  VirtualAddress,
+  /*IN*/ UINT  Length,
+  /*IN*/ UINT  MemoryFlags);
+
+NDISAPI
+VOID
+DDKAPI
+NdisImmediateReadSharedMemory(
+  /*IN*/ NDIS_HANDLE WrapperConfigurationContext,
+  /*IN*/ ULONG       SharedMemoryAddress,
+  /*OUT*/ PUCHAR      Buffer,
+  /*IN*/ ULONG       Length);
+
+NDISAPI
+VOID
+DDKAPI
+NdisImmediateWriteSharedMemory(
+  /*IN*/ NDIS_HANDLE WrapperConfigurationContext,
+  /*IN*/ ULONG       SharedMemoryAddress,
+  /*IN*/ PUCHAR      Buffer,
+  /*IN*/ ULONG       Length);
+
+NDISAPI
+VOID
+DDKAPI
+NdisMAllocateSharedMemory(
+  /*IN*/ NDIS_HANDLE  MiniportAdapterHandle,
+  /*IN*/ ULONG  Length,
+  /*IN*/ BOOLEAN  Cached,
+  /*OUT*/ PVOID  *VirtualAddress,
+  /*OUT*/ PNDIS_PHYSICAL_ADDRESS  PhysicalAddress);
+
+NDISAPI
+NDIS_STATUS
+DDKAPI
+NdisMAllocateSharedMemoryAsync(
+  /*IN*/ NDIS_HANDLE  MiniportAdapterHandle,
+  /*IN*/ ULONG  Length,
+  /*IN*/ BOOLEAN  Cached,
+  /*IN*/ PVOID  Context);
+
+#if defined(NDIS50)
+
+#define NdisUpdateSharedMemory(NdisAdapterHandle, \
+                               Length,            \
+                               VirtualAddress,    \
+                               PhysicalAddress)
+
+#else
+
+NDISAPI
+VOID
+DDKAPI
+NdisUpdateSharedMemory(
+  /*IN*/ NDIS_HANDLE             NdisAdapterHandle,
+  /*IN*/ ULONG                   Length,
+  /*IN*/ PVOID                   VirtualAddress,
+  /*IN*/ NDIS_PHYSICAL_ADDRESS   PhysicalAddress);
+
+#endif /* defined(NDIS50) */
+
+/*
+ * ULONG
+ * NdisGetPhysicalAddressHigh(
+ * IN NDIS_PHYSICAL_ADDRESS  PhysicalAddress);
+ */
+#define NdisGetPhysicalAddressHigh(PhysicalAddress) \
+  ((PhysicalAddress).HighPart)
+
+/*
+ * VOID
+ * NdisSetPhysicalAddressHigh(
+ * IN NDIS_PHYSICAL_ADDRESS  PhysicalAddress,
+ * IN ULONG  Value);
+ */
+#define NdisSetPhysicalAddressHigh(PhysicalAddress, Value) \
+  ((PhysicalAddress).HighPart) = (Value)
+
+/*
+ * ULONG
+ * NdisGetPhysicalAddressLow(
+ * IN NDIS_PHYSICAL_ADDRESS  PhysicalAddress);
+ */
+#define NdisGetPhysicalAddressLow(PhysicalAddress) \
+  ((PhysicalAddress).LowPart)
+
+
+/*
+ * VOID
+ * NdisSetPhysicalAddressLow(
+ * IN NDIS_PHYSICAL_ADDRESS  PhysicalAddress,
+ * IN ULONG  Value);
+ */
+#define NdisSetPhysicalAddressLow(PhysicalAddress, Value) \
+  ((PhysicalAddress).LowPart) = (Value)
+
+/*
+ * VOID
+ * NDIS_PHYSICAL_ADDRESS_CONST(
+ * IN ULONG  Low,
+ * IN LONG  High);
+ */
+#define NDIS_PHYSICAL_ADDRESS_CONST(Low, High)  \
+    { {(ULONG)(Low), (LONG)(High)} }
+
+/*
+ * ULONG
+ * NdisEqualMemory(
+ * IN CONST VOID  *Source1,
+ * IN CONST VOID  *Source2,
+ * IN ULONG  Length);
+ */
+#define NdisEqualMemory(Source1, Source2, Length) \
+  RtlEqualMemory(Source1, Source2, Length)
+
+/*
+ * VOID
+ * NdisFillMemory(
+ * IN PVOID  Destination,
+ * IN ULONG  Length,
+ * IN UCHAR  Fill);
+ */
+#define NdisFillMemory(Destination, Length, Fill) \
+  RtlFillMemory(Destination, Length, Fill)
+
+/*
+ * VOID
+ * NdisZeroMappedMemory(
+ * IN PVOID  Destination,
+ * IN ULONG  Length);
+ */
+#define NdisZeroMappedMemory(Destination, Length) \
+  RtlZeroMemory(Destination, Length)
+
+/*
+ * VOID
+ * NdisMoveMemory(
+ * OUT  PVOID  Destination,
+ * IN PVOID  Source,
+ * IN ULONG  Length);
+ */
+#define NdisMoveMemory(Destination, Source, Length) \
+  RtlCopyMemory(Destination, Source, Length)
+
+
+/*
+ * VOID
+ * NdisRetrieveUlong(
+ * IN PULONG  DestinationAddress,
+ * IN PULONG  SourceAddress);
+ */
+#define NdisRetrieveUlong(DestinationAddress, SourceAddress) \
+  RtlRetrieveUlong(DestinationAddress, SourceAddress)
+
+
+/*
+ * VOID
+ * NdisStoreUlong(
+ * IN PULONG  DestinationAddress,
+ * IN ULONG  Value);
+ */
+#define NdisStoreUlong(DestinationAddress, Value) \
+  RtlStoreUlong(DestinationAddress, Value)
+
+
+/*
+ * VOID
+ * NdisZeroMemory(
+ * IN PVOID  Destination,
+ * IN ULONG  Length)
+ */
+#define NdisZeroMemory(Destination, Length) \
+  RtlZeroMemory(Destination, Length)
+
+
+
+/* Configuration routines */
+
+NDISAPI
+VOID
+DDKAPI
+NdisOpenConfiguration(
+  /*OUT*/  PNDIS_STATUS  Status,
+  /*OUT*/  PNDIS_HANDLE  ConfigurationHandle,
+  /*IN*/ NDIS_HANDLE  WrapperConfigurationContext);
+
+NDISAPI
+VOID
+DDKAPI
+NdisReadNetworkAddress(
+  /*OUT*/ PNDIS_STATUS  Status,
+  /*OUT*/ PVOID  *NetworkAddress,
+  /*OUT*/ PUINT  NetworkAddressLength,
+  /*IN*/ NDIS_HANDLE  ConfigurationHandle);
+
+NDISAPI
+VOID
+DDKAPI
+NdisReadEisaSlotInformation(
+  /*OUT*/ PNDIS_STATUS  Status,
+  /*IN*/ NDIS_HANDLE  WrapperConfigurationContext,
+  /*OUT*/ PUINT  SlotNumber,
+  /*OUT*/ PNDIS_EISA_FUNCTION_INFORMATION  EisaData);
+
+NDISAPI
+VOID
+DDKAPI
+NdisReadEisaSlotInformationEx(
+  /*OUT*/ PNDIS_STATUS  Status,
+  /*IN*/ NDIS_HANDLE  WrapperConfigurationContext,
+  /*OUT*/ PUINT  SlotNumber,
+  /*OUT*/ PNDIS_EISA_FUNCTION_INFORMATION  *EisaData,
+  /*OUT*/ PUINT  NumberOfFunctions);
+
+NDISAPI
+ULONG
+DDKAPI
+NdisReadPciSlotInformation(
+  /*IN*/ NDIS_HANDLE  NdisAdapterHandle,
+  /*IN*/ ULONG  SlotNumber,
+  /*IN*/ ULONG  Offset,
+  /*IN*/ PVOID  Buffer,
+  /*IN*/ ULONG  Length);
+
+NDISAPI
+ULONG
+DDKAPI
+NdisWritePciSlotInformation(
+  /*IN*/ NDIS_HANDLE  NdisAdapterHandle,
+  /*IN*/ ULONG  SlotNumber,
+  /*IN*/ ULONG  Offset,
+  /*IN*/ PVOID  Buffer,
+  /*IN*/ ULONG  Length);
+
+
+
+/* String management routines */
+
+NDISAPI
+NDIS_STATUS
+DDKAPI
+NdisAnsiStringToUnicodeString(
+  /*IN OUT*/ PNDIS_STRING  DestinationString,
+  /*IN*/ PNDIS_ANSI_STRING  SourceString);
+
+/*
+ * BOOLEAN
+ * NdisEqualString(
+ * IN PNDIS_STRING  String1,
+ * IN PNDIS_STRING  String2,
+ * IN BOOLEAN  CaseInsensitive);
+ */
+#define NdisEqualString(_String1, _String2, _CaseInsensitive) \
+  RtlEqualUnicodeString(_String1, _String2, _CaseInsensitive)
+
+NDISAPI
+VOID
+DDKAPI
+NdisInitAnsiString(
+  /*IN OUT*/ PNDIS_ANSI_STRING  DestinationString,
+  /*IN*/ PCSTR  SourceString);
+
+NDISAPI
+VOID
+DDKAPI
+NdisInitUnicodeString(
+  /*IN OUT*/ PNDIS_STRING  DestinationString,
+  /*IN*/ PCWSTR  SourceString);
+
+NDISAPI
+NDIS_STATUS
+DDKAPI
+NdisUnicodeStringToAnsiString(
+  /*IN OUT*/ PNDIS_ANSI_STRING  DestinationString,
+  /*IN*/ PNDIS_STRING  SourceString);
+
+#define NdisFreeString(_s)  NdisFreeMemory((_s).Buffer, (_s).MaximumLength, 0)
+#define NdisPrintString(_s) DbgPrint("%ls", (_s).Buffer)
+
+
+/* Spin lock reoutines */
+
+/*
+ * VOID
+ * NdisAllocateSpinLock(
+ * IN PNDIS_SPIN_LOCK  SpinLock);
+ */
+#define NdisAllocateSpinLock(_SpinLock) \
+  KeInitializeSpinLock(&(_SpinLock)->SpinLock)
+
+/*
+ * VOID
+ * NdisFreeSpinLock(
+ * IN PNDIS_SPIN_LOCK  SpinLock);
+ */
+#define NdisFreeSpinLock(_SpinLock)
+
+/*
+ * VOID
+ * NdisAcquireSpinLock(
+ * IN PNDIS_SPIN_LOCK  SpinLock);
+ */
+#define NdisAcquireSpinLock(_SpinLock) \
+  KeAcquireSpinLock(&(_SpinLock)->SpinLock, &(_SpinLock)->OldIrql)
+
+/*
+ * VOID
+ * NdisReleaseSpinLock(
+ * IN PNDIS_SPIN_LOCK  SpinLock);
+ */
+#define NdisReleaseSpinLock(_SpinLock) \
+  KeReleaseSpinLock(&(_SpinLock)->SpinLock, (_SpinLock)->OldIrql)
+
+/*
+ * VOID
+ * NdisDprAcquireSpinLock(
+ * IN PNDIS_SPIN_LOCK  SpinLock);
+ */
+#define NdisDprAcquireSpinLock(_SpinLock)                \
+{                                                       \
+    KeAcquireSpinLockAtDpcLevel(&(_SpinLock)->SpinLock); \
+    (_SpinLock)->OldIrql = DISPATCH_LEVEL;               \
+}
+
+/*
+ * VOID
+ * NdisDprReleaseSpinLock(
+ * IN PNDIS_SPIN_LOCK  SpinLock);
+ */
+#define NdisDprReleaseSpinLock(_SpinLock) \
+  KeReleaseSpinLockFromDpcLevel(&(_SpinLock)->SpinLock)
+
+
+
+/* I/O routines */
+
+/*
+ * VOID
+ * NdisRawReadPortBufferUchar(
+ * IN ULONG  Port,
+ * OUT PUCHAR  Buffer,
+ * IN ULONG  Length);
+ */
+#define NdisRawReadPortBufferUchar(Port, Buffer, Length)    \
+  READ_PORT_BUFFER_UCHAR((PUCHAR)(Port), (PUCHAR)(Buffer), (Length))
+
+/*
+ * VOID
+ * NdisRawReadPortBufferUlong(
+ * IN ULONG  Port,
+ * OUT PULONG  Buffer,
+ * IN ULONG  Length);
+ */
+#define NdisRawReadPortBufferUlong(Port, Buffer, Length)  \
+  READ_PORT_BUFFER_ULONG((PULONG)(Port), (PULONG)(Buffer), (Length))
+
+/*
+ * VOID
+ * NdisRawReadPortBufferUshort(
+ * IN ULONG  Port,
+ * OUT PUSHORT  Buffer,
+ * IN ULONG  Length);
+ */
+#define NdisRawReadPortBufferUshort(Port, Buffer, Length) \
+  READ_PORT_BUFFER_USHORT((PUSHORT)(Port), (PUSHORT)(Buffer), (Length))
+
+
+/*
+ * VOID
+ * NdisRawReadPortUchar(
+ * IN ULONG  Port,
+ * OUT PUCHAR  Data);
+ */
+#define NdisRawReadPortUchar(Port, Data) \
+  *(Data) = READ_PORT_UCHAR((PUCHAR)(Port))
+
+/*
+ * VOID
+ * NdisRawReadPortUlong(
+ * IN ULONG  Port,
+ * OUT PULONG  Data);
+ */
+#define NdisRawReadPortUlong(Port, Data) \
+  *(Data) = READ_PORT_ULONG((PULONG)(Port))
+
+/*
+ * VOID
+ * NdisRawReadPortUshort(
+ * IN ULONG   Port,
+ * OUT PUSHORT Data);
+ */
+#define NdisRawReadPortUshort(Port, Data) \
+  *(Data) = READ_PORT_USHORT((PUSHORT)(Port))
+
+
+/*
+ * VOID
+ * NdisRawWritePortBufferUchar(
+ * IN ULONG  Port,
+ * IN PUCHAR  Buffer,
+ * IN ULONG  Length);
+ */
+#define NdisRawWritePortBufferUchar(Port, Buffer, Length) \
+  WRITE_PORT_BUFFER_UCHAR((PUCHAR)(Port), (PUCHAR)(Buffer), (Length))
+
+/*
+ * VOID
+ * NdisRawWritePortBufferUlong(
+ * IN ULONG  Port,
+ * IN PULONG  Buffer,
+ * IN ULONG  Length);
+ */
+#define NdisRawWritePortBufferUlong(Port, Buffer, Length) \
+  WRITE_PORT_BUFFER_ULONG((PULONG)(Port), (PULONG)(Buffer), (Length))
+
+/*
+ * VOID
+ * NdisRawWritePortBufferUshort(
+ * IN ULONG   Port,
+ * IN PUSHORT Buffer,
+ * IN ULONG   Length);
+ */
+#define NdisRawWritePortBufferUshort(Port, Buffer, Length) \
+  WRITE_PORT_BUFFER_USHORT((PUSHORT)(Port), (PUSHORT)(Buffer), (Length))
+
+
+/*
+ * VOID
+ * NdisRawWritePortUchar(
+ * IN ULONG  Port,
+ * IN UCHAR  Data);
+ */
+#define NdisRawWritePortUchar(Port, Data) \
+  WRITE_PORT_UCHAR((PUCHAR)(Port), (UCHAR)(Data))
+
+/*
+ * VOID
+ * NdisRawWritePortUlong(
+ * IN ULONG  Port,
+ * IN ULONG  Data);
+ */
+#define NdisRawWritePortUlong(Port, Data)   \
+  WRITE_PORT_ULONG((PULONG)(Port), (ULONG)(Data))
+
+/*
+ * VOID
+ * NdisRawWritePortUshort(
+ * IN ULONG  Port,
+ * IN USHORT  Data);
+ */
+#define NdisRawWritePortUshort(Port, Data) \
+  WRITE_PORT_USHORT((PUSHORT)(Port), (USHORT)(Data))
+
+
+/*
+ * VOID
+ * NdisReadRegisterUchar(
+ * IN PUCHAR  Register,
+ * OUT PUCHAR  Data);
+ */
+#define NdisReadRegisterUchar(Register, Data) \
+  *(Data) = *(Register)
+
+/*
+ * VOID
+ * NdisReadRegisterUlong(
+ * IN PULONG  Register,
+ * OUT PULONG  Data);
+ */
+#define NdisReadRegisterUlong(Register, Data)   \
+  *(Data) = *(Register)
+
+/*
+ * VOID
+ * NdisReadRegisterUshort(
+ * IN PUSHORT  Register,
+ * OUT PUSHORT  Data);
+ */
+#define NdisReadRegisterUshort(Register, Data)  \
+    *(Data) = *(Register)
+
+/*
+ * VOID
+ * NdisReadRegisterUchar(
+ * IN PUCHAR  Register,
+ * IN UCHAR  Data);
+ */
+#define NdisWriteRegisterUchar(Register, Data) \
+  WRITE_REGISTER_UCHAR((Register), (Data))
+
+/*
+ * VOID
+ * NdisReadRegisterUlong(
+ * IN PULONG  Register,
+ * IN ULONG  Data);
+ */
+#define NdisWriteRegisterUlong(Register, Data) \
+  WRITE_REGISTER_ULONG((Register), (Data))
+
+/*
+ * VOID
+ * NdisReadRegisterUshort(
+ * IN PUSHORT  Register,
+ * IN USHORT  Data);
+ */
+#define NdisWriteRegisterUshort(Register, Data) \
+  WRITE_REGISTER_USHORT((Register), (Data))
+
+
+/* Linked lists */
+
+/*
+ * VOID
+ * NdisInitializeListHead(
+ * IN PLIST_ENTRY  ListHead);
+ */
+#define NdisInitializeListHead(_ListHead) \
+  InitializeListHead(_ListHead)
+
+/*
+ * PLIST_ENTRY
+ * NdisInterlockedInsertHeadList(
+ * IN PLIST_ENTRY  ListHead,
+ * IN PLIST_ENTRY  ListEntry,
+ * IN PNDIS_SPIN_LOCK  SpinLock);
+ */
+#define NdisInterlockedInsertHeadList(_ListHead, _ListEntry, _SpinLock) \
+  ExInterlockedInsertHeadList(_ListHead, _ListEntry, &(_SpinLock)->SpinLock)
+
+/*
+ * PLIST_ENTRY
+ * NdisInterlockedInsertTailList(
+ * IN PLIST_ENTRY  ListHead,
+ * IN PLIST_ENTRY  ListEntry,
+ * IN PNDIS_SPIN_LOCK  SpinLock);
+ */
+#define NdisInterlockedInsertTailList(_ListHead, _ListEntry, _SpinLock) \
+  ExInterlockedInsertTailList(_ListHead, _ListEntry, &(_SpinLock)->SpinLock)
+
+/*
+ * PLIST_ENTRY
+ * NdisInterlockedRemoveHeadList(
+ * IN PLIST_ENTRY  ListHead,
+ * IN PNDIS_SPIN_LOCK  SpinLock);
+*/
+#define NdisInterlockedRemoveHeadList(_ListHead, _SpinLock) \
+  ExInterlockedRemoveHeadList(_ListHead, &(_SpinLock)->SpinLock)
+
+/*
+ * VOID
+ * NdisInitializeSListHead(
+ * IN PSLIST_HEADER  SListHead);
+ */
+#define NdisInitializeSListHead(SListHead) ExInitializeSListHead(SListHead)
+
+/*
+ * USHORT NdisQueryDepthSList(
+ * IN PSLIST_HEADER  SListHead);
+ */
+#define NdisQueryDepthSList(SListHead) ExQueryDepthSList(SListHead)
+
+
+
+/* Interlocked routines */
+
+/*
+ * LONG
+ * NdisInterlockedDecrement(
+ * IN PLONG  Addend);
+ */
+#define NdisInterlockedDecrement(Addend) InterlockedDecrement(Addend)
+
+/*
+ * LONG
+ * NdisInterlockedIncrement(
+ * IN PLONG  Addend);
+ */
+#define NdisInterlockedIncrement(Addend) InterlockedIncrement(Addend)
+
+/*
+ * VOID
+ * NdisInterlockedAddUlong(
+ * IN PULONG  Addend,
+ * IN ULONG  Increment,
+ * IN PNDIS_SPIN_LOCK  SpinLock);
+ */
+#define NdisInterlockedAddUlong(_Addend, _Increment, _SpinLock) \
+  ExInterlockedAddUlong(_Addend, _Increment, &(_SpinLock)->SpinLock)
+
+
+
+/* Miscellaneous routines */
+
+NDISAPI
+VOID
+DDKAPI
+NdisCloseConfiguration(
+  /*IN*/ NDIS_HANDLE  ConfigurationHandle);
+
+NDISAPI
+VOID
+DDKAPI
+NdisReadConfiguration(
+  /*OUT*/  PNDIS_STATUS  Status,
+  /*OUT*/  PNDIS_CONFIGURATION_PARAMETER  *ParameterValue,
+  /*IN*/ NDIS_HANDLE  ConfigurationHandle,
+  /*IN*/ PNDIS_STRING  Keyword,
+  /*IN*/ NDIS_PARAMETER_TYPE  ParameterType);
+
+NDISAPI
+VOID
+DDKAPI
+NdisWriteConfiguration(
+  /*OUT*/  PNDIS_STATUS  Status,
+  /*IN*/ NDIS_HANDLE  WrapperConfigurationContext,
+  /*IN*/ PNDIS_STRING  Keyword,
+  /*IN*/ PNDIS_CONFIGURATION_PARAMETER  *ParameterValue);
+
+NDISAPI
+VOID
+DDKCDECLAPI
+NdisWriteErrorLogEntry(
+  /*IN*/ NDIS_HANDLE  NdisAdapterHandle,
+  /*IN*/ NDIS_ERROR_CODE  ErrorCode,
+  /*IN*/ ULONG  NumberOfErrorValues,
+  /*IN*/ ...);
+
+/*
+ * VOID
+ * NdisStallExecution(
+ * IN UINT  MicrosecondsToStall)
+ */
+#define NdisStallExecution KeStallExecutionProcessor
+
+/*
+ * VOID
+ * NdisGetCurrentSystemTime(
+ * IN PLARGE_INTEGER  pSystemTime);
+ */
+#define NdisGetCurrentSystemTime KeQuerySystemTime
+
+NDISAPI
+VOID
+DDKAPI
+NdisGetCurrentProcessorCpuUsage(
+  /*OUT*/ PULONG  pCpuUsage);
+
+
+
+/* NDIS helper macros */
+
+/*
+ * VOID
+ * NDIS_INIT_FUNCTION(FunctionName)
+ */
+#define NDIS_INIT_FUNCTION(FunctionName)    \
+  alloc_text(init, FunctionName)
+
+/*
+ * VOID
+ * NDIS_PAGABLE_FUNCTION(FunctionName)
+ */
+#define NDIS_PAGEABLE_FUNCTION(FunctionName) \
+  alloc_text(page, FunctionName)
+
+#define NDIS_PAGABLE_FUNCTION NDIS_PAGEABLE_FUNCTION
+
+
+/* NDIS 4.0 extensions */
+
+NDISAPI
+VOID
+DDKAPI
+NdisMFreeSharedMemory(
+  /*IN*/ NDIS_HANDLE  MiniportAdapterHandle,
+  /*IN*/ ULONG  Length,
+  /*IN*/ BOOLEAN  Cached,
+  /*IN*/ PVOID  VirtualAddress,
+  /*IN*/ NDIS_PHYSICAL_ADDRESS  PhysicalAddress);
+
+NDISAPI
+VOID
+DDKAPI
+NdisMWanIndicateReceive(
+  /*OUT*/ PNDIS_STATUS  Status,
+  /*IN*/ NDIS_HANDLE  MiniportAdapterHandle,
+  /*IN*/ NDIS_HANDLE  NdisLinkContext,
+  /*IN*/ PUCHAR  PacketBuffer,
+  /*IN*/ UINT  PacketSize);
+
+#define NdisMIndicateReceivePacket(_handle, _packets, _number) \
+{  \
+  (*((PNDIS_MINIPORT_BLOCK)(_handle))->PacketIndicateHandler)(_handle, _packets, _number); \
+}
+
+NDISAPI
+VOID
+DDKAPI
+NdisMWanIndicateReceiveComplete(
+  /*IN*/ NDIS_HANDLE  MiniportAdapterHandle);
+
+NDISAPI
+VOID
+DDKAPI
+NdisMWanSendComplete(
+  /*IN*/ NDIS_HANDLE  MiniportAdapterHandle,
+  /*IN*/ PNDIS_WAN_PACKET  Packet,
+  /*IN*/ NDIS_STATUS  Status);
+
+NDISAPI
+NDIS_STATUS
+DDKAPI
+NdisPciAssignResources(
+  /*IN*/ NDIS_HANDLE  NdisMacHandle,
+  /*IN*/ NDIS_HANDLE  NdisWrapperHandle,
+  /*IN*/ NDIS_HANDLE  WrapperConfigurationContext,
+  /*IN*/ ULONG  SlotNumber,
+  /*OUT*/ PNDIS_RESOURCE_LIST  *AssignedResources);
+
+
+/* NDIS 5.0 extensions */
+
+NDISAPI
+VOID
+DDKAPI
+NdisAcquireReadWriteLock(
+  /*IN*/ PNDIS_RW_LOCK  Lock,
+  /*IN*/ BOOLEAN  fWrite,
+  /*IN*/ PLOCK_STATE  LockState);
+
+NDISAPI
+NDIS_STATUS
+DDKAPI
+NdisAllocateMemoryWithTag(
+  /*OUT*/ PVOID  *VirtualAddress,
+  /*IN*/ UINT  Length,
+  /*IN*/ ULONG  Tag);
+
+NDISAPI
+VOID
+DDKAPI
+NdisAllocatePacketPoolEx(
+  /*OUT*/ PNDIS_STATUS  Status,
+  /*OUT*/ PNDIS_HANDLE  PoolHandle,
+  /*IN*/ UINT  NumberOfDescriptors,
+  /*IN*/ UINT  NumberOfOverflowDescriptors,
+  /*IN*/ UINT  ProtocolReservedLength);
+
+NDISAPI
+VOID
+DDKAPI
+NdisCompletePnPEvent(
+  /*IN*/ NDIS_STATUS  Status,
+  /*IN*/ NDIS_HANDLE  NdisBindingHandle,
+  /*IN*/ PNET_PNP_EVENT  NetPnPEvent);
+
+NDISAPI
+VOID
+DDKAPI
+NdisGetCurrentProcessorCounts(
+  /*OUT*/ PULONG  pIdleCount,
+  /*OUT*/ PULONG  pKernelAndUser,
+  /*OUT*/ PULONG  pIndex);
+
+NDISAPI
+VOID
+DDKAPI
+NdisGetDriverHandle(
+  /*IN*/ PNDIS_HANDLE  NdisBindingHandle,
+  /*OUT*/ PNDIS_HANDLE  NdisDriverHandle);
+
+NDISAPI
+PNDIS_PACKET
+DDKAPI
+NdisGetReceivedPacket(
+  /*IN*/ PNDIS_HANDLE  NdisBindingHandle,
+  /*IN*/ PNDIS_HANDLE  MacContext);
+
+NDISAPI
+VOID
+DDKAPI
+NdisGetSystemUptime(
+  /*OUT*/ PULONG  pSystemUpTime);
+
+NDISAPI
+VOID
+DDKAPI
+NdisInitializeReadWriteLock(
+  /*IN*/ PNDIS_RW_LOCK  Lock);
+
+NDISAPI
+NDIS_STATUS
+DDKAPI
+NdisMDeregisterDevice(
+  /*IN*/ NDIS_HANDLE  NdisDeviceHandle);
+
+NDISAPI
+VOID
+DDKAPI
+NdisMGetDeviceProperty(
+  /*IN*/ NDIS_HANDLE  MiniportAdapterHandle,
+  /*IN OUT*/ PDEVICE_OBJECT  *PhysicalDeviceObject  /*OPTIONAL*/,
+  /*IN OUT*/ PDEVICE_OBJECT  *FunctionalDeviceObject  /*OPTIONAL*/,
+  /*IN OUT*/ PDEVICE_OBJECT  *NextDeviceObject  /*OPTIONAL*/,
+  /*IN OUT*/ PCM_RESOURCE_LIST  *AllocatedResources  /*OPTIONAL*/,
+  /*IN OUT*/ PCM_RESOURCE_LIST  *AllocatedResourcesTranslated  /*OPTIONAL*/);
+
+NDISAPI
+NDIS_STATUS
+DDKAPI
+NdisMInitializeScatterGatherDma(
+  /*IN*/ NDIS_HANDLE  MiniportAdapterHandle,
+  /*IN*/ BOOLEAN  Dma64BitAddresses,
+  /*IN*/ ULONG  MaximumPhysicalMapping);
+
+NDISAPI
+NDIS_STATUS
+DDKAPI
+NdisMPromoteMiniport(
+  /*IN*/ NDIS_HANDLE  MiniportAdapterHandle);
+
+NDISAPI
+NDIS_STATUS
+DDKAPI
+NdisMQueryAdapterInstanceName(
+  /*OUT*/ PNDIS_STRING  AdapterInstanceName,
+  /*IN*/ NDIS_HANDLE  MiniportAdapterHandle);
+
+NDISAPI
+NDIS_STATUS
+DDKAPI
+NdisMRegisterDevice(
+  /*IN*/ NDIS_HANDLE  NdisWrapperHandle,
+  /*IN*/ PNDIS_STRING  DeviceName,
+  /*IN*/ PNDIS_STRING  SymbolicName,
+  /*IN*/ PDRIVER_DISPATCH  MajorFunctions[],
+  /*OUT*/ PDEVICE_OBJECT  *pDeviceObject,
+  /*OUT*/ NDIS_HANDLE  *NdisDeviceHandle);
+
+NDISAPI
+VOID
+DDKAPI
+NdisMRegisterUnloadHandler(
+  /*IN*/ NDIS_HANDLE  NdisWrapperHandle,
+  /*IN*/ PDRIVER_UNLOAD  UnloadHandler);
+
+NDISAPI
+NDIS_STATUS
+DDKAPI
+NdisMRemoveMiniport(
+  /*IN*/ NDIS_HANDLE  MiniportAdapterHandle);
+
+NDISAPI
+NDIS_STATUS
+DDKAPI
+NdisMSetMiniportSecondary(
+  /*IN*/ NDIS_HANDLE  MiniportAdapterHandle,
+  /*IN*/ NDIS_HANDLE  PrimaryMiniportAdapterHandle);
+
+NDISAPI
+VOID
+DDKAPI
+NdisOpenConfigurationKeyByIndex(
+  /*OUT*/ PNDIS_STATUS  Status,
+  /*IN*/ NDIS_HANDLE  ConfigurationHandle,
+  /*IN*/ ULONG  Index,
+  /*OUT*/ PNDIS_STRING  KeyName,
+  /*OUT*/ PNDIS_HANDLE  KeyHandle);
+
+NDISAPI
+VOID
+DDKAPI
+NdisOpenConfigurationKeyByName(
+  /*OUT*/ PNDIS_STATUS  Status,
+  /*IN*/ NDIS_HANDLE  ConfigurationHandle,
+  /*IN*/ PNDIS_STRING  SubKeyName,
+  /*OUT*/ PNDIS_HANDLE  SubKeyHandle);
+
+NDISAPI
+UINT
+DDKAPI
+NdisPacketPoolUsage(
+  /*IN*/ NDIS_HANDLE  PoolHandle);
+
+NTOSAPI
+VOID
+DDKAPI
+NdisSetPacketPoolProtocolId(
+  /*IN*/ NDIS_HANDLE PacketPoolHandle,
+  /*IN*/ UINT ProtocolId);
+
+NDISAPI
+NDIS_STATUS
+DDKAPI
+NdisQueryAdapterInstanceName(
+  /*OUT*/ PNDIS_STRING  AdapterInstanceName,
+  /*IN*/ NDIS_HANDLE  NdisBindingHandle);
+
+NDISAPI
+ULONG
+DDKAPI
+NdisReadPcmciaAttributeMemory(
+  /*IN*/ NDIS_HANDLE  NdisAdapterHandle,
+  /*IN*/ ULONG  Offset,
+  /*IN*/ PVOID  Buffer,
+  /*IN*/ ULONG  Length);
+
+NDISAPI
+VOID
+DDKAPI
+NdisReleaseReadWriteLock(
+  /*IN*/ PNDIS_RW_LOCK  Lock,
+  /*IN*/ PLOCK_STATE  LockState);
+
+NDISAPI
+NDIS_STATUS
+DDKAPI
+NdisWriteEventLogEntry(
+  /*IN*/ PVOID  LogHandle,
+  /*IN*/ NDIS_STATUS  EventCode,
+  /*IN*/ ULONG  UniqueEventValue,
+  /*IN*/ USHORT  NumStrings,
+  /*IN*/ PVOID  StringsList  /*OPTIONAL*/,
+  /*IN*/ ULONG  DataSize,
+  /*IN*/ PVOID  Data  /*OPTIONAL*/);
+
+NDISAPI
+ULONG
+DDKAPI
+NdisWritePcmciaAttributeMemory(
+  /*IN*/ NDIS_HANDLE  NdisAdapterHandle,
+  /*IN*/ ULONG  Offset,
+  /*IN*/ PVOID  Buffer,
+  /*IN*/ ULONG  Length);
+
+
+/* Connectionless services */
+
+NDISAPI
+NDIS_STATUS
+DDKAPI
+NdisClAddParty(
+  /*IN*/ NDIS_HANDLE  NdisVcHandle,
+  /*IN*/ NDIS_HANDLE  ProtocolPartyContext,
+  /*IN OUT*/ PCO_CALL_PARAMETERS  CallParameters,
+  /*OUT*/ PNDIS_HANDLE  NdisPartyHandle);
+
+NDISAPI
+NDIS_STATUS
+DDKAPI
+NdisClCloseAddressFamily(
+  /*IN*/ NDIS_HANDLE  NdisAfHandle);
+
+NDISAPI
+NDIS_STATUS
+DDKAPI
+NdisClCloseCall(
+  /*IN*/ NDIS_HANDLE NdisVcHandle,
+  /*IN*/ NDIS_HANDLE NdisPartyHandle  /*OPTIONAL*/,
+  /*IN*/ PVOID  Buffer  /*OPTIONAL*/,
+  /*IN*/ UINT  Size);
+
+NDISAPI
+NDIS_STATUS
+DDKAPI
+NdisClDeregisterSap(
+  /*IN*/ NDIS_HANDLE  NdisSapHandle);
+
+NDISAPI
+NDIS_STATUS
+DDKAPI
+NdisClDropParty(
+  /*IN*/ NDIS_HANDLE  NdisPartyHandle,
+  /*IN*/ PVOID  Buffer  /*OPTIONAL*/,
+  /*IN*/ UINT  Size);
+
+NDISAPI
+VOID
+DDKAPI
+NdisClIncomingCallComplete(
+  /*IN*/ NDIS_STATUS  Status,
+  /*IN*/ NDIS_HANDLE  NdisVcHandle,
+  /*IN*/ PCO_CALL_PARAMETERS  CallParameters);
+
+NDISAPI
+NDIS_STATUS
+DDKAPI
+NdisClMakeCall(
+  /*IN*/ NDIS_HANDLE  NdisVcHandle,
+  /*IN OUT*/ PCO_CALL_PARAMETERS  CallParameters,
+  /*IN*/ NDIS_HANDLE  ProtocolPartyContext  /*OPTIONAL*/,
+  /*OUT*/ PNDIS_HANDLE  NdisPartyHandle  /*OPTIONAL*/);
+
+NDISAPI
+NDIS_STATUS
+DDKAPI
+NdisClModifyCallQoS(
+  /*IN*/ NDIS_HANDLE  NdisVcHandle,
+  /*IN*/ PCO_CALL_PARAMETERS  CallParameters);
+
+
+NDISAPI
+NDIS_STATUS
+DDKAPI
+NdisClOpenAddressFamily(
+  /*IN*/ NDIS_HANDLE  NdisBindingHandle,
+  /*IN*/ PCO_ADDRESS_FAMILY  AddressFamily,
+  /*IN*/ NDIS_HANDLE  ProtocolAfContext,
+  /*IN*/ PNDIS_CLIENT_CHARACTERISTICS  ClCharacteristics,
+  /*IN*/ UINT  SizeOfClCharacteristics,
+  /*OUT*/ PNDIS_HANDLE  NdisAfHandle);
+
+NDISAPI
+NDIS_STATUS
+DDKAPI
+NdisClRegisterSap(
+  /*IN*/ NDIS_HANDLE  NdisAfHandle,
+  /*IN*/ NDIS_HANDLE  ProtocolSapContext,
+  /*IN*/ PCO_SAP  Sap,
+  /*OUT*/ PNDIS_HANDLE  NdisSapHandle);
+
+
+/* Call Manager services */
+
+NDISAPI
+NDIS_STATUS
+DDKAPI
+NdisCmActivateVc(
+  /*IN*/ NDIS_HANDLE  NdisVcHandle,
+  /*IN OUT*/ PCO_CALL_PARAMETERS  CallParameters);
+
+NDISAPI
+VOID
+DDKAPI
+NdisCmAddPartyComplete(
+  /*IN*/ NDIS_STATUS  Status,
+  /*IN*/ NDIS_HANDLE  NdisPartyHandle,
+  /*IN*/ NDIS_HANDLE  CallMgrPartyContext  /*OPTIONAL*/,
+  /*IN*/ PCO_CALL_PARAMETERS  CallParameters);
+
+NDISAPI
+VOID
+DDKAPI
+NdisCmCloseAddressFamilyComplete(
+  /*IN*/ NDIS_STATUS Status,
+  /*IN*/ NDIS_HANDLE NdisAfHandle);
+
+NDISAPI
+VOID
+DDKAPI
+NdisCmCloseCallComplete(
+  /*IN*/ NDIS_STATUS  Status,
+  /*IN*/ NDIS_HANDLE  NdisVcHandle,
+  /*IN*/ NDIS_HANDLE  NdisPartyHandle  /*OPTIONAL*/);
+
+NDISAPI
+NDIS_STATUS
+DDKAPI
+NdisCmDeactivateVc(
+  /*IN*/ NDIS_HANDLE  NdisVcHandle);
+
+NDISAPI
+VOID
+DDKAPI
+NdisCmDeregisterSapComplete(
+  /*IN*/ NDIS_STATUS  Status,
+  /*IN*/ NDIS_HANDLE  NdisSapHandle);
+
+NDISAPI
+VOID
+DDKAPI
+NdisCmDispatchCallConnected(
+  /*IN*/ NDIS_HANDLE  NdisVcHandle);
+
+NDISAPI
+NDIS_STATUS
+DDKAPI
+NdisCmDispatchIncomingCall(
+  /*IN*/ NDIS_HANDLE  NdisSapHandle,
+  /*IN*/ NDIS_HANDLE  NdisVcHandle,
+  /*IN*/ PCO_CALL_PARAMETERS  CallParameters);
+
+NDISAPI
+VOID
+DDKAPI
+NdisCmDispatchIncomingCallQoSChange(
+  /*IN*/ NDIS_HANDLE  NdisVcHandle,
+  /*IN*/ PCO_CALL_PARAMETERS  CallParameters);
+
+NDISAPI
+VOID
+DDKAPI
+NdisCmDispatchIncomingCloseCall(
+  /*IN*/ NDIS_STATUS  CloseStatus,
+  /*IN*/ NDIS_HANDLE  NdisVcHandle,
+  /*IN*/ PVOID  Buffer  /*OPTIONAL*/,
+  /*IN*/ UINT  Size);
+
+NDISAPI
+VOID
+DDKAPI
+NdisCmDispatchIncomingDropParty(
+  /*IN*/ NDIS_STATUS  DropStatus,
+  /*IN*/ NDIS_HANDLE  NdisPartyHandle,
+  /*IN*/ PVOID  Buffer  /*OPTIONAL*/,
+  /*IN*/ UINT  Size);
+
+NDISAPI
+VOID
+DDKAPI
+NdisCmDropPartyComplete(
+  /*IN*/ NDIS_STATUS  Status,
+  /*IN*/ NDIS_HANDLE  NdisPartyHandle);
+
+NDISAPI
+VOID
+DDKAPI
+NdisCmMakeCallComplete(
+  /*IN*/ NDIS_STATUS  Status,
+  /*IN*/ NDIS_HANDLE  NdisVcHandle,
+  /*IN*/ NDIS_HANDLE  NdisPartyHandle  /*OPTIONAL*/,
+  /*IN*/ NDIS_HANDLE  CallMgrPartyContext  /*OPTIONAL*/,
+  /*IN*/ PCO_CALL_PARAMETERS  CallParameters);
+
+NDISAPI
+VOID
+DDKAPI
+NdisCmModifyCallQoSComplete(
+  /*IN*/ NDIS_STATUS  Status,
+  /*IN*/ NDIS_HANDLE  NdisVcHandle,
+  /*IN*/ PCO_CALL_PARAMETERS  CallParameters);
+
+NDISAPI
+VOID
+DDKAPI
+NdisCmOpenAddressFamilyComplete(
+  /*IN*/ NDIS_STATUS Status,
+  /*IN*/ NDIS_HANDLE NdisAfHandle,
+  /*IN*/ NDIS_HANDLE CallMgrAfContext);
+
+NDISAPI
+NDIS_STATUS
+DDKAPI
+NdisCmRegisterAddressFamily(
+  /*IN*/ NDIS_HANDLE  NdisBindingHandle,
+  /*IN*/ PCO_ADDRESS_FAMILY  AddressFamily,
+  /*IN*/ PNDIS_CALL_MANAGER_CHARACTERISTICS  CmCharacteristics,
+  /*IN*/ UINT  SizeOfCmCharacteristics);
+
+NDISAPI
+VOID
+DDKAPI
+NdisCmRegisterSapComplete(
+  /*IN*/ NDIS_STATUS  Status,
+  /*IN*/ NDIS_HANDLE  NdisSapHandle,
+  /*IN*/ NDIS_HANDLE  CallMgrSapContext);
+
+
+NDISAPI
+NDIS_STATUS
+DDKAPI
+NdisMCmActivateVc(
+  /*IN*/ NDIS_HANDLE  NdisVcHandle,
+  /*IN*/ PCO_CALL_PARAMETERS  CallParameters);
+
+NDISAPI
+NDIS_STATUS
+DDKAPI
+NdisMCmCreateVc(
+  /*IN*/ NDIS_HANDLE  MiniportAdapterHandle,
+  /*IN*/ NDIS_HANDLE  NdisAfHandle,
+  /*IN*/ NDIS_HANDLE  MiniportVcContext,
+  /*OUT*/  PNDIS_HANDLE  NdisVcHandle);
+
+NDISAPI
+NDIS_STATUS
+DDKAPI
+NdisMCmDeactivateVc(
+  /*IN*/ NDIS_HANDLE  NdisVcHandle);
+
+NDISAPI
+NDIS_STATUS
+DDKAPI
+NdisMCmDeleteVc(
+  /*IN*/ NDIS_HANDLE  NdisVcHandle);
+
+NDISAPI
+NDIS_STATUS
+DDKAPI
+NdisMCmRegisterAddressFamily(
+  /*IN*/ NDIS_HANDLE  MiniportAdapterHandle,
+  /*IN*/ PCO_ADDRESS_FAMILY  AddressFamily,
+  /*IN*/ PNDIS_CALL_MANAGER_CHARACTERISTICS  CmCharacteristics,
+  /*IN*/ UINT  SizeOfCmCharacteristics);
+
+NDISAPI
+NDIS_STATUS
+DDKAPI
+NdisMCmRequest(
+  /*IN*/ NDIS_HANDLE  NdisAfHandle,
+  /*IN*/ NDIS_HANDLE  NdisVcHandle  /*OPTIONAL*/,
+  /*IN*/ NDIS_HANDLE  NdisPartyHandle  /*OPTIONAL*/,
+  /*IN OUT*/  PNDIS_REQUEST  NdisRequest);
+
+
+/* Connection-oriented services */
+
+NDISAPI
+NDIS_STATUS
+DDKAPI
+NdisCoCreateVc(
+  /*IN*/ NDIS_HANDLE  NdisBindingHandle,
+  /*IN*/ NDIS_HANDLE  NdisAfHandle  /*OPTIONAL*/,
+  /*IN*/ NDIS_HANDLE  ProtocolVcContext,
+  /*IN OUT*/ PNDIS_HANDLE  NdisVcHandle);
+
+NDISAPI
+NDIS_STATUS
+DDKAPI
+NdisCoDeleteVc(
+  /*IN*/ NDIS_HANDLE  NdisVcHandle);
+
+NDISAPI
+NDIS_STATUS
+DDKAPI
+NdisCoRequest(
+  /*IN*/ NDIS_HANDLE  NdisBindingHandle,
+  /*IN*/ NDIS_HANDLE  NdisAfHandle  /*OPTIONAL*/,
+  /*IN*/ NDIS_HANDLE  NdisVcHandle  /*OPTIONAL*/,
+  /*IN*/ NDIS_HANDLE  NdisPartyHandle  /*OPTIONAL*/,
+  /*IN OUT*/  PNDIS_REQUEST  NdisRequest);
+
+NDISAPI
+VOID
+DDKAPI
+NdisCoRequestComplete(
+  /*IN*/ NDIS_STATUS  Status,
+  /*IN*/ NDIS_HANDLE  NdisAfHandle,
+  /*IN*/ NDIS_HANDLE  NdisVcHandle  /*OPTIONAL*/,
+  /*IN*/ NDIS_HANDLE  NdisPartyHandle  /*OPTIONAL*/,
+  /*IN*/ PNDIS_REQUEST  NdisRequest);
+
+NDISAPI
+VOID
+DDKAPI
+NdisCoSendPackets(
+  /*IN*/ NDIS_HANDLE  NdisVcHandle,
+  /*IN*/ PPNDIS_PACKET  PacketArray,
+  /*IN*/ UINT  NumberOfPackets);
+
+NDISAPI
+VOID
+DDKAPI
+NdisMCoActivateVcComplete(
+  /*IN*/ NDIS_STATUS  Status,
+  /*IN*/ NDIS_HANDLE  NdisVcHandle,
+  /*IN*/ PCO_CALL_PARAMETERS  CallParameters);
+
+NDISAPI
+VOID
+DDKAPI
+NdisMCoDeactivateVcComplete(
+  /*IN*/ NDIS_STATUS  Status,
+  /*IN*/ NDIS_HANDLE  NdisVcHandle);
+
+NDISAPI
+VOID
+DDKAPI
+NdisMCoIndicateReceivePacket(
+  /*IN*/ NDIS_HANDLE  NdisVcHandle,
+  /*IN*/ PPNDIS_PACKET  PacketArray,
+  /*IN*/ UINT  NumberOfPackets);
+
+NDISAPI
+VOID
+DDKAPI
+NdisMCoIndicateStatus(
+  /*IN*/ NDIS_HANDLE  MiniportAdapterHandle,
+  /*IN*/ NDIS_HANDLE  NdisVcHandle  /*OPTIONAL*/,
+  /*IN*/ NDIS_STATUS  GeneralStatus,
+  /*IN*/ PVOID  StatusBuffer  /*OPTIONAL*/,
+  /*IN*/ ULONG  StatusBufferSize);
+
+NDISAPI
+VOID
+DDKAPI
+NdisMCoReceiveComplete(
+  /*IN*/ NDIS_HANDLE  MiniportAdapterHandle);
+
+NDISAPI
+VOID
+DDKAPI
+NdisMCoRequestComplete(
+  /*IN*/ NDIS_STATUS  Status,
+  /*IN*/ NDIS_HANDLE  MiniportAdapterHandle,
+  /*IN*/ PNDIS_REQUEST  Request);
+
+NDISAPI
+VOID
+DDKAPI
+NdisMCoSendComplete(
+  /*IN*/ NDIS_STATUS  Status,
+  /*IN*/ NDIS_HANDLE  NdisVcHandle,
+  /*IN*/ PNDIS_PACKET  Packet);
+
+
+/* NDIS 5.0 extensions for intermediate drivers */
+
+NDISAPI
+VOID
+DDKAPI
+NdisIMAssociateMiniport(
+  /*IN*/ NDIS_HANDLE  DriverHandle,
+  /*IN*/ NDIS_HANDLE  ProtocolHandle);
+
+NDISAPI
+NDIS_STATUS
+DDKAPI
+NdisIMCancelInitializeDeviceInstance(
+  /*IN*/ NDIS_HANDLE  DriverHandle,
+  /*IN*/ PNDIS_STRING  DeviceInstance);
+
+NDISAPI
+VOID
+DDKAPI
+NdisIMCopySendCompletePerPacketInfo(
+  /*IN*/ PNDIS_PACKET  DstPacket,
+  /*IN*/ PNDIS_PACKET  SrcPacket);
+
+NDISAPI
+VOID
+DDKAPI
+NdisIMCopySendPerPacketInfo(
+  /*IN*/ PNDIS_PACKET  DstPacket,
+  /*IN*/ PNDIS_PACKET  SrcPacket);
+
+NDISAPI
+VOID
+DDKAPI
+NdisIMDeregisterLayeredMiniport(
+  /*IN*/ NDIS_HANDLE  DriverHandle);
+
+NDISAPI
+NDIS_HANDLE
+DDKAPI
+NdisIMGetBindingContext(
+  /*IN*/ NDIS_HANDLE  NdisBindingHandle);
+
+NDISAPI
+NDIS_HANDLE
+DDKAPI
+NdisIMGetDeviceContext(
+  /*IN*/ NDIS_HANDLE  MiniportAdapterHandle);
+
+NDISAPI
+NDIS_STATUS
+DDKAPI
+NdisIMInitializeDeviceInstanceEx(
+  /*IN*/ NDIS_HANDLE  DriverHandle,
+  /*IN*/ PNDIS_STRING  DriverInstance,
+  /*IN*/ NDIS_HANDLE  DeviceContext  /*OPTIONAL*/);
+
+NDISAPI
+PSINGLE_LIST_ENTRY
+DDKAPI
+NdisInterlockedPopEntrySList(
+  /*IN*/ PSLIST_HEADER  ListHead,
+  /*IN*/ PKSPIN_LOCK  Lock);
+
+NDISAPI
+PSINGLE_LIST_ENTRY
+DDKAPI
+NdisInterlockedPushEntrySList(
+  /*IN*/ PSLIST_HEADER  ListHead,
+  /*IN*/ PSINGLE_LIST_ENTRY  ListEntry,
+  /*IN*/ PKSPIN_LOCK  Lock);
+
+NDISAPI
+VOID
+DDKAPI
+NdisQueryBufferSafe(
+  /*IN*/ PNDIS_BUFFER  Buffer,
+  /*OUT*/ PVOID  *VirtualAddress  /*OPTIONAL*/,
+  /*OUT*/ PUINT  Length,
+  /*IN*/ UINT  Priority);
+
+
+/* Prototypes for NDIS_MINIPORT_CHARACTERISTICS */
+
+typedef BOOLEAN DDKAPI
+(*W_CHECK_FOR_HANG_HANDLER)(
+  /*IN*/ NDIS_HANDLE  MiniportAdapterContext);
+
+typedef VOID DDKAPI
+(*W_DISABLE_INTERRUPT_HANDLER)(
+  /*IN*/ NDIS_HANDLE  MiniportAdapterContext);
+
+typedef VOID DDKAPI
+(*W_ENABLE_INTERRUPT_HANDLER)(
+  /*IN*/ NDIS_HANDLE  MiniportAdapterContext);
+
+typedef VOID DDKAPI
+(*W_HALT_HANDLER)(
+  /*IN*/ NDIS_HANDLE  MiniportAdapterContext);
+
+typedef VOID DDKAPI
+(*W_HANDLE_INTERRUPT_HANDLER)(
+  /*IN*/ NDIS_HANDLE  MiniportAdapterContext);
+
+typedef NDIS_STATUS DDKAPI
+(*W_INITIALIZE_HANDLER)(
+  /*OUT*/ PNDIS_STATUS  OpenErrorStatus,
+  /*OUT*/ PUINT  SelectedMediumIndex,
+  /*IN*/ PNDIS_MEDIUM  MediumArray,
+  /*IN*/ UINT  MediumArraySize,
+  /*IN*/ NDIS_HANDLE  MiniportAdapterContext,
+  /*IN*/ NDIS_HANDLE  WrapperConfigurationContext);
+
+typedef VOID DDKAPI
+(*W_ISR_HANDLER)(
+  /*OUT*/ PBOOLEAN  InterruptRecognized,
+  /*OUT*/ PBOOLEAN  QueueMiniportHandleInterrupt,
+  /*IN*/ NDIS_HANDLE  MiniportAdapterContext);
+
+typedef NDIS_STATUS DDKAPI
+(*W_QUERY_INFORMATION_HANDLER)(
+  /*IN*/ NDIS_HANDLE  MiniportAdapterContext,
+  /*IN*/ NDIS_OID  Oid,
+  /*IN*/ PVOID  InformationBuffer,
+  /*IN*/ ULONG  InformationBufferLength,
+  /*OUT*/ PULONG  BytesWritten,
+  /*OUT*/ PULONG  BytesNeeded);
+
+typedef NDIS_STATUS DDKAPI
+(*W_RECONFIGURE_HANDLER)(
+  /*OUT*/ PNDIS_STATUS  OpenErrorStatus,
+  /*IN*/ NDIS_HANDLE  MiniportAdapterContext,
+  /*IN*/ NDIS_HANDLE	WrapperConfigurationContext);
+
+typedef NDIS_STATUS DDKAPI
+(*W_RESET_HANDLER)(
+  /*OUT*/ PBOOLEAN  AddressingReset,
+  /*IN*/ NDIS_HANDLE  MiniportAdapterContext);
+
+typedef NDIS_STATUS DDKAPI
+(*W_SEND_HANDLER)(
+  /*IN*/ NDIS_HANDLE  MiniportAdapterContext,
+  /*IN*/ PNDIS_PACKET  Packet,
+  /*IN*/ UINT  Flags);
+
+typedef NDIS_STATUS DDKAPI
+(*WM_SEND_HANDLER)(
+  /*IN*/ NDIS_HANDLE  MiniportAdapterContext,
+  /*IN*/ NDIS_HANDLE  NdisLinkHandle,
+  /*IN*/ PNDIS_WAN_PACKET  Packet);
+
+typedef NDIS_STATUS DDKAPI
+(*W_SET_INFORMATION_HANDLER)(
+  /*IN*/ NDIS_HANDLE  MiniportAdapterContext,
+  /*IN*/ NDIS_OID  Oid,
+  /*IN*/ PVOID  InformationBuffer,
+  /*IN*/ ULONG  InformationBufferLength,
+  /*OUT*/ PULONG  BytesRead,
+  /*OUT*/ PULONG  BytesNeeded);
+
+typedef NDIS_STATUS DDKAPI
+(*W_TRANSFER_DATA_HANDLER)(
+  /*OUT*/ PNDIS_PACKET  Packet,
+  /*OUT*/ PUINT  BytesTransferred,
+  /*IN*/ NDIS_HANDLE  MiniportAdapterContext,
+  /*IN*/ NDIS_HANDLE  MiniportReceiveContext,
+  /*IN*/ UINT  ByteOffset,
+  /*IN*/ UINT  BytesToTransfer);
+
+typedef NDIS_STATUS DDKAPI
+(*WM_TRANSFER_DATA_HANDLER)(
+  VOID);
+
+
+/* NDIS structures available only to miniport drivers */
+
+#define NDIS30_MINIPORT_CHARACTERISTICS_S \
+  UCHAR  MajorNdisVersion; \
+  UCHAR  MinorNdisVersion; \
+  UINT  Reserved; \
+  W_CHECK_FOR_HANG_HANDLER  CheckForHangHandler; \
+  W_DISABLE_INTERRUPT_HANDLER  DisableInterruptHandler; \
+  W_ENABLE_INTERRUPT_HANDLER  EnableInterruptHandler; \
+  W_HALT_HANDLER  HaltHandler; \
+  W_HANDLE_INTERRUPT_HANDLER  HandleInterruptHandler; \
+  W_INITIALIZE_HANDLER  InitializeHandler; \
+  W_ISR_HANDLER  ISRHandler; \
+  W_QUERY_INFORMATION_HANDLER  QueryInformationHandler; \
+  W_RECONFIGURE_HANDLER  ReconfigureHandler; \
+  W_RESET_HANDLER  ResetHandler; \
+  _ANONYMOUS_UNION union { \
+    W_SEND_HANDLER  SendHandler; \
+    WM_SEND_HANDLER  WanSendHandler; \
+  } _UNION_NAME(u1); \
+  W_SET_INFORMATION_HANDLER  SetInformationHandler; \
+  _ANONYMOUS_UNION union { \
+    W_TRANSFER_DATA_HANDLER  TransferDataHandler; \
+    WM_TRANSFER_DATA_HANDLER  WanTransferDataHandler; \
+  } _UNION_NAME(u2);
+
+typedef struct _NDIS30_MINIPORT_CHARACTERISTICS {
+  NDIS30_MINIPORT_CHARACTERISTICS_S
+} NDIS30_MINIPORT_CHARACTERISTICS, *PSNDIS30_MINIPORT_CHARACTERISTICS;
+
+
+/* Extensions for NDIS 4.0 miniports */
+
+typedef VOID DDKAPI
+(*W_SEND_PACKETS_HANDLER)(
+  /*IN*/ NDIS_HANDLE  MiniportAdapterContext,
+  /*IN*/ PPNDIS_PACKET  PacketArray,
+  /*IN*/ UINT  NumberOfPackets);
+
+typedef VOID DDKAPI
+(*W_RETURN_PACKET_HANDLER)(
+  /*IN*/ NDIS_HANDLE  MiniportAdapterContext,
+  /*IN*/ PNDIS_PACKET  Packet);
+
+typedef VOID DDKAPI
+(*W_ALLOCATE_COMPLETE_HANDLER)(
+  /*IN*/ NDIS_HANDLE  MiniportAdapterContext,
+  /*IN*/ PVOID  VirtualAddress,
+  /*IN*/ PNDIS_PHYSICAL_ADDRESS  PhysicalAddress,
+  /*IN*/ ULONG  Length,
+  /*IN*/ PVOID  Context);
+
+#ifdef __cplusplus
+
+#define NDIS40_MINIPORT_CHARACTERISTICS_S \
+  NDIS30_MINIPORT_CHARACTERISTICS  Ndis30Chars; \
+  W_RETURN_PACKET_HANDLER  ReturnPacketHandler; \
+  W_SEND_PACKETS_HANDLER  SendPacketsHandler; \
+  W_ALLOCATE_COMPLETE_HANDLER  AllocateCompleteHandler;
+
+#else /* !__cplusplus */
+
+#define NDIS40_MINIPORT_CHARACTERISTICS_S \
+  NDIS30_MINIPORT_CHARACTERISTICS_S \
+  W_RETURN_PACKET_HANDLER  ReturnPacketHandler; \
+  W_SEND_PACKETS_HANDLER  SendPacketsHandler; \
+  W_ALLOCATE_COMPLETE_HANDLER  AllocateCompleteHandler;
+
+#endif /* !__cplusplus */
+
+typedef struct _NDIS40_MINIPORT_CHARACTERISTICS {
+  NDIS40_MINIPORT_CHARACTERISTICS_S
+} NDIS40_MINIPORT_CHARACTERISTICS, *PNDIS40_MINIPORT_CHARACTERISTICS;
+
+
+/* Extensions for NDIS 5.0 miniports */
+
+typedef NDIS_STATUS DDKAPI
+(*W_CO_CREATE_VC_HANDLER)(
+  /*IN*/ NDIS_HANDLE  MiniportAdapterContext,
+  /*IN*/ NDIS_HANDLE  NdisVcHandle,
+  /*OUT*/ PNDIS_HANDLE  MiniportVcContext);
+
+typedef NDIS_STATUS DDKAPI
+(*W_CO_DELETE_VC_HANDLER)(
+  /*IN*/ NDIS_HANDLE  MiniportVcContext);
+
+typedef NDIS_STATUS DDKAPI
+(*W_CO_ACTIVATE_VC_HANDLER)(
+  /*IN*/ NDIS_HANDLE  MiniportVcContext,
+  /*IN OUT*/ PCO_CALL_PARAMETERS  CallParameters);
+
+typedef NDIS_STATUS DDKAPI
+(*W_CO_DEACTIVATE_VC_HANDLER)(
+  /*IN*/ NDIS_HANDLE  MiniportVcContext);
+
+typedef VOID DDKAPI
+(*W_CO_SEND_PACKETS_HANDLER)(
+  /*IN*/ NDIS_HANDLE  MiniportVcContext,
+  /*IN*/ PPNDIS_PACKET  PacketArray,
+  /*IN*/ UINT  NumberOfPackets);
+
+typedef NDIS_STATUS DDKAPI
+(*W_CO_REQUEST_HANDLER)(
+  /*IN*/ NDIS_HANDLE  MiniportAdapterContext,
+  /*IN*/ NDIS_HANDLE  MiniportVcContext  /*OPTIONAL*/,
+  /*IN OUT*/ PNDIS_REQUEST  NdisRequest);
+
+#ifdef __cplusplus
+
+#define NDIS50_MINIPORT_CHARACTERISTICS_S \
+  NDIS40_MINIPORT_CHARACTERISTICS  Ndis40Chars; \
+  W_CO_CREATE_VC_HANDLER  CoCreateVcHandler; \
+  W_CO_DELETE_VC_HANDLER  CoDeleteVcHandler; \
+  W_CO_ACTIVATE_VC_HANDLER  CoActivateVcHandler; \
+  W_CO_DEACTIVATE_VC_HANDLER  CoDeactivateVcHandler; \
+  W_CO_SEND_PACKETS_HANDLER  CoSendPacketsHandler; \
+  W_CO_REQUEST_HANDLER  CoRequestHandler;
+
+#else /* !__cplusplus */
+
+#define NDIS50_MINIPORT_CHARACTERISTICS_S \
+  NDIS40_MINIPORT_CHARACTERISTICS_S \
+  W_CO_CREATE_VC_HANDLER  CoCreateVcHandler; \
+  W_CO_DELETE_VC_HANDLER  CoDeleteVcHandler; \
+  W_CO_ACTIVATE_VC_HANDLER  CoActivateVcHandler; \
+  W_CO_DEACTIVATE_VC_HANDLER  CoDeactivateVcHandler; \
+  W_CO_SEND_PACKETS_HANDLER  CoSendPacketsHandler; \
+  W_CO_REQUEST_HANDLER  CoRequestHandler;
+
+#endif /* !__cplusplus */
+
+typedef struct _NDIS50_MINIPORT_CHARACTERISTICS {
+   NDIS50_MINIPORT_CHARACTERISTICS_S
+} NDIS50_MINIPORT_CHARACTERISTICS, *PSNDIS50_MINIPORT_CHARACTERISTICS;
+
+
+/* Extensions for NDIS 5.1 miniports */
+
+typedef VOID DDKAPI
+(*W_CANCEL_SEND_PACKETS_HANDLER)(
+  /*IN*/ NDIS_HANDLE  MiniportAdapterContext,
+  /*IN*/ PVOID  CancelId);
+
+
+#if defined(NDIS51)
+typedef struct _NDIS_MINIPORT_CHARACTERISTICS {
+  NDIS50_MINIPORT_CHARACTERISTICS_S
+} NDIS_MINIPORT_CHARACTERISTICS, *PNDIS_MINIPORT_CHARACTERISTICS;
+#elif defined(NDIS50)
+typedef struct _NDIS_MINIPORT_CHARACTERISTICS {
+  NDIS50_MINIPORT_CHARACTERISTICS_S
+} NDIS_MINIPORT_CHARACTERISTICS, *PNDIS_MINIPORT_CHARACTERISTICS;
+#elif defined(NDIS40)
+typedef struct _NDIS_MINIPORT_CHARACTERISTICS {
+  NDIS40_MINIPORT_CHARACTERISTICS_S
+} NDIS_MINIPORT_CHARACTERISTICS, *PNDIS_MINIPORT_CHARACTERISTICS;
+#elif defined(NDIS30)
+typedef struct _NDIS_MINIPORT_CHARACTERISTICS {
+  NDIS30_MINIPORT_CHARACTERISTICS_S
+} NDIS_MINIPORT_CHARACTERISTICS, *PNDIS_MINIPORT_CHARACTERISTICS;
+#endif /* NDIS30 */
+
+
+typedef NDIS_STATUS DDKAPI
+(*SEND_HANDLER)(
+  /*IN*/ NDIS_HANDLE  MacBindingHandle,
+  /*IN*/ PNDIS_PACKET  Packet);
+
+typedef NDIS_STATUS DDKAPI
+(*TRANSFER_DATA_HANDLER)(
+  /*IN*/ NDIS_HANDLE  MacBindingHandle,
+  /*IN*/ NDIS_HANDLE  MacReceiveContext,
+  /*IN*/ UINT  ByteOffset,
+  /*IN*/ UINT  BytesToTransfer,
+  /*OUT*/ PNDIS_PACKET  Packet,
+  /*OUT*/ PUINT  BytesTransferred);
+
+typedef NDIS_STATUS DDKAPI
+(*RESET_HANDLER)(
+  /*IN*/ NDIS_HANDLE  MacBindingHandle);
+
+typedef NDIS_STATUS DDKAPI
+(*REQUEST_HANDLER)(
+  /*IN*/ NDIS_HANDLE   MacBindingHandle,
+  /*IN*/ PNDIS_REQUEST   NdisRequest);
+
+
+
+/* Structures available only to full MAC drivers */
+
+typedef BOOLEAN DDKAPI
+(*PNDIS_INTERRUPT_SERVICE)(
+  /*IN*/ PVOID  InterruptContext);
+
+typedef VOID DDKAPI
+(*PNDIS_DEFERRED_PROCESSING)(
+  /*IN*/ PVOID  SystemSpecific1,
+  /*IN*/ PVOID  InterruptContext,
+  /*IN*/ PVOID  SystemSpecific2,
+  /*IN*/ PVOID  SystemSpecific3);
+
+
+
+typedef struct _NDIS_MINIPORT_BLOCK NDIS_MINIPORT_BLOCK, *PNDIS_MINIPORT_BLOCK;
+typedef struct _NDIS_PROTOCOL_BLOCK NDIS_PROTOCOL_BLOCK, *PNDIS_PROTOCOL_BLOCK;
+typedef struct _NDIS_OPEN_BLOCK		NDIS_OPEN_BLOCK,     *PNDIS_OPEN_BLOCK;
+typedef struct _NDIS_M_DRIVER_BLOCK NDIS_M_DRIVER_BLOCK, *PNDIS_M_DRIVER_BLOCK;
+typedef	struct _NDIS_AF_LIST        NDIS_AF_LIST,        *PNDIS_AF_LIST;
+
+
+typedef struct _NDIS_MINIPORT_INTERRUPT {
+  PKINTERRUPT  InterruptObject;
+  KSPIN_LOCK  DpcCountLock;
+  PVOID  MiniportIdField;
+  W_ISR_HANDLER  MiniportIsr;
+  W_HANDLE_INTERRUPT_HANDLER  MiniportDpc;
+  KDPC  InterruptDpc;
+  PNDIS_MINIPORT_BLOCK  Miniport;
+  UCHAR  DpcCount;
+  BOOLEAN  Filler1;
+  KEVENT  DpcsCompletedEvent;
+  BOOLEAN  SharedInterrupt;
+  BOOLEAN	 IsrRequested;
+} NDIS_MINIPORT_INTERRUPT, *PNDIS_MINIPORT_INTERRUPT;
+
+typedef struct _NDIS_MINIPORT_TIMER {
+  KTIMER  Timer;
+  KDPC  Dpc;
+  PNDIS_TIMER_FUNCTION  MiniportTimerFunction;
+  PVOID  MiniportTimerContext;
+  PNDIS_MINIPORT_BLOCK  Miniport;
+  struct _NDIS_MINIPORT_TIMER  *NextDeferredTimer;
+} NDIS_MINIPORT_TIMER, *PNDIS_MINIPORT_TIMER;
+
+typedef struct _NDIS_INTERRUPT {
+  PKINTERRUPT  InterruptObject;
+  KSPIN_LOCK  DpcCountLock;
+  PNDIS_INTERRUPT_SERVICE  MacIsr;
+  PNDIS_DEFERRED_PROCESSING  MacDpc;
+  KDPC  InterruptDpc;
+  PVOID  InterruptContext;
+  UCHAR  DpcCount;
+  BOOLEAN	 Removing;
+  KEVENT  DpcsCompletedEvent;
+} NDIS_INTERRUPT, *PNDIS_INTERRUPT;
+
+
+typedef struct _MAP_REGISTER_ENTRY {
+	PVOID  MapRegister;
+	BOOLEAN  WriteToDevice;
+} MAP_REGISTER_ENTRY, *PMAP_REGISTER_ENTRY;
+
+
+typedef enum _NDIS_WORK_ITEM_TYPE {
+  NdisWorkItemRequest,
+  NdisWorkItemSend,
+  NdisWorkItemReturnPackets,
+  NdisWorkItemResetRequested,
+  NdisWorkItemResetInProgress,
+  NdisWorkItemHalt,
+  NdisWorkItemSendLoopback,
+  NdisWorkItemMiniportCallback,
+  NdisMaxWorkItems
+} NDIS_WORK_ITEM_TYPE, *PNDIS_WORK_ITEM_TYPE;
+
+#define	NUMBER_OF_WORK_ITEM_TYPES         NdisMaxWorkItems
+#define	NUMBER_OF_SINGLE_WORK_ITEMS       6
+
+typedef struct _NDIS_MINIPORT_WORK_ITEM {
+	SINGLE_LIST_ENTRY  Link;
+	NDIS_WORK_ITEM_TYPE  WorkItemType;
+	PVOID  WorkItemContext;
+} NDIS_MINIPORT_WORK_ITEM, *PNDIS_MINIPORT_WORK_ITEM;
+
+
+typedef struct _NDIS_BIND_PATHS {
+	UINT  Number;
+	NDIS_STRING  Paths[1];
+} NDIS_BIND_PATHS, *PNDIS_BIND_PATHS;
+
+#define DECLARE_UNKNOWN_STRUCT(BaseName) \
+  typedef struct _##BaseName BaseName, *P##BaseName;
+
+#define DECLARE_UNKNOWN_PROTOTYPE(Name) \
+  typedef VOID (*(Name))(VOID);
+
+#define ETH_LENGTH_OF_ADDRESS 6
+
+DECLARE_UNKNOWN_STRUCT(ETH_BINDING_INFO)
+
+DECLARE_UNKNOWN_PROTOTYPE(ETH_ADDRESS_CHANGE)
+DECLARE_UNKNOWN_PROTOTYPE(ETH_FILTER_CHANGE)
+DECLARE_UNKNOWN_PROTOTYPE(ETH_DEFERRED_CLOSE)
+
+typedef struct _ETH_FILTER {
+  PNDIS_SPIN_LOCK  Lock;
+  CHAR  (*MCastAddressBuf)[ETH_LENGTH_OF_ADDRESS];
+  struct _NDIS_MINIPORT_BLOCK  *Miniport;
+  UINT  CombinedPacketFilter;
+  PETH_BINDING_INFO  OpenList;
+  ETH_ADDRESS_CHANGE  AddressChangeAction;
+  ETH_FILTER_CHANGE  FilterChangeAction;
+  ETH_DEFERRED_CLOSE  CloseAction;
+  UINT  MaxMulticastAddresses;
+  UINT  NumAddresses;
+  UCHAR AdapterAddress[ETH_LENGTH_OF_ADDRESS];
+  UINT  OldCombinedPacketFilter;
+  CHAR  (*OldMCastAddressBuf)[ETH_LENGTH_OF_ADDRESS];
+  UINT  OldNumAddresses;
+  PETH_BINDING_INFO  DirectedList;
+  PETH_BINDING_INFO  BMList;
+  PETH_BINDING_INFO  MCastSet;
+#if defined(_NDIS_)
+  UINT  NumOpens;
+  PVOID  BindListLock;
+#endif
+} ETH_FILTER, *PETH_FILTER;
+
+typedef VOID DDKAPI
+(*ETH_RCV_COMPLETE_HANDLER)(
+  /*IN*/ PETH_FILTER  Filter);
+
+typedef VOID DDKAPI
+(*ETH_RCV_INDICATE_HANDLER)(
+  /*IN*/ PETH_FILTER  Filter,
+  /*IN*/ NDIS_HANDLE  MacReceiveContext,
+  /*IN*/ PCHAR  Address,
+  /*IN*/ PVOID  HeaderBuffer,
+  /*IN*/ UINT  HeaderBufferSize,
+  /*IN*/ PVOID  LookaheadBuffer,
+  /*IN*/ UINT  LookaheadBufferSize,
+  /*IN*/ UINT  PacketSize);
+
+typedef VOID DDKAPI
+(*FDDI_RCV_COMPLETE_HANDLER)(
+  /*IN*/ PFDDI_FILTER  Filter);
+
+typedef VOID DDKAPI
+(*FDDI_RCV_INDICATE_HANDLER)(
+  /*IN*/ PFDDI_FILTER  Filter,
+  /*IN*/ NDIS_HANDLE  MacReceiveContext,
+  /*IN*/ PCHAR  Address,
+  /*IN*/ UINT  AddressLength,
+  /*IN*/ PVOID  HeaderBuffer,
+  /*IN*/ UINT  HeaderBufferSize,
+  /*IN*/ PVOID  LookaheadBuffer,
+  /*IN*/ UINT  LookaheadBufferSize,
+  /*IN*/ UINT  PacketSize);
+
+typedef VOID DDKAPI
+(*FILTER_PACKET_INDICATION_HANDLER)(
+  /*IN*/ NDIS_HANDLE  Miniport,
+  /*IN*/ PPNDIS_PACKET  PacketArray,
+  /*IN*/ UINT  NumberOfPackets);
+
+typedef VOID DDKAPI
+(*TR_RCV_COMPLETE_HANDLER)(
+  /*IN*/ PTR_FILTER  Filter);
+
+typedef VOID DDKAPI
+(*TR_RCV_INDICATE_HANDLER)(
+  /*IN*/ PTR_FILTER  Filter,
+  /*IN*/ NDIS_HANDLE  MacReceiveContext,
+  /*IN*/ PVOID  HeaderBuffer,
+  /*IN*/ UINT  HeaderBufferSize,
+  /*IN*/ PVOID  LookaheadBuffer,
+  /*IN*/ UINT  LookaheadBufferSize,
+  /*IN*/ UINT  PacketSize);
+
+typedef VOID DDKAPI
+(*WAN_RCV_COMPLETE_HANDLER)(
+  /*IN*/ NDIS_HANDLE  MiniportAdapterHandle,
+  /*IN*/ NDIS_HANDLE  NdisLinkContext);
+
+typedef VOID DDKAPI
+(*WAN_RCV_HANDLER)(
+  /*OUT*/ PNDIS_STATUS  Status,
+  /*IN*/ NDIS_HANDLE  MiniportAdapterHandle,
+  /*IN*/ NDIS_HANDLE  NdisLinkContext,
+  /*IN*/ PUCHAR  Packet,
+  /*IN*/ ULONG  PacketSize);
+
+typedef VOID DDKFASTAPI
+(*NDIS_M_DEQUEUE_WORK_ITEM)(
+  /*IN*/ PNDIS_MINIPORT_BLOCK  Miniport,
+  /*IN*/ NDIS_WORK_ITEM_TYPE  WorkItemType,
+  /*OUT*/ PVOID  *WorkItemContext);
+
+typedef NDIS_STATUS DDKFASTAPI
+(*NDIS_M_QUEUE_NEW_WORK_ITEM)(
+  /*IN*/ PNDIS_MINIPORT_BLOCK  Miniport,
+  /*IN*/ NDIS_WORK_ITEM_TYPE  WorkItemType,
+  /*IN*/ PVOID  WorkItemContext);
+
+typedef NDIS_STATUS DDKFASTAPI
+(*NDIS_M_QUEUE_WORK_ITEM)(
+  /*IN*/ PNDIS_MINIPORT_BLOCK  Miniport,
+  /*IN*/ NDIS_WORK_ITEM_TYPE  WorkItemType,
+  /*IN*/ PVOID  WorkItemContext);
+
+typedef VOID DDKAPI
+(*NDIS_M_REQ_COMPLETE_HANDLER)(
+  /*IN*/ NDIS_HANDLE  MiniportAdapterHandle,
+  /*IN*/ NDIS_STATUS  Status);
+
+typedef VOID DDKAPI
+(*NDIS_M_RESET_COMPLETE_HANDLER)(
+  /*IN*/ NDIS_HANDLE  MiniportAdapterHandle,
+  /*IN*/ NDIS_STATUS  Status,
+  /*IN*/ BOOLEAN  AddressingReset);
+
+typedef VOID DDKAPI
+(*NDIS_M_SEND_COMPLETE_HANDLER)(
+  /*IN*/ NDIS_HANDLE  MiniportAdapterHandle,
+  /*IN*/ PNDIS_PACKET  Packet,
+  /*IN*/ NDIS_STATUS  Status);
+
+typedef VOID DDKAPI
+(*NDIS_M_SEND_RESOURCES_HANDLER)(
+  /*IN*/ NDIS_HANDLE  MiniportAdapterHandle);
+
+typedef BOOLEAN DDKFASTAPI
+(*NDIS_M_START_SENDS)(
+  /*IN*/ PNDIS_MINIPORT_BLOCK  Miniport);
+
+typedef VOID DDKAPI
+(*NDIS_M_STATUS_HANDLER)(
+  /*IN*/ NDIS_HANDLE  MiniportHandle,
+  /*IN*/ NDIS_STATUS  GeneralStatus,
+  /*IN*/ PVOID  StatusBuffer,
+  /*IN*/ UINT  StatusBufferSize);
+
+typedef VOID DDKAPI
+(*NDIS_M_STS_COMPLETE_HANDLER)(
+  /*IN*/ NDIS_HANDLE  MiniportAdapterHandle);
+
+typedef VOID DDKAPI
+(*NDIS_M_TD_COMPLETE_HANDLER)(
+  /*IN*/ NDIS_HANDLE  MiniportAdapterHandle,
+  /*IN*/ PNDIS_PACKET  Packet,
+  /*IN*/ NDIS_STATUS  Status,
+  /*IN*/ UINT  BytesTransferred);
+
+typedef VOID (DDKAPI *NDIS_WM_SEND_COMPLETE_HANDLER)(
+  /*IN*/ NDIS_HANDLE  MiniportAdapterHandle,
+  /*IN*/ PVOID  Packet,
+  /*IN*/ NDIS_STATUS  Status);
+
+
+#if ARCNET
+
+#define ARC_SEND_BUFFERS                  8
+#define ARC_HEADER_SIZE                   4
+
+typedef struct _NDIS_ARC_BUF {
+  NDIS_HANDLE  ArcnetBufferPool;
+  PUCHAR  ArcnetLookaheadBuffer;
+  UINT  NumFree;
+  ARC_BUFFER_LIST ArcnetBuffers[ARC_SEND_BUFFERS];
+} NDIS_ARC_BUF, *PNDIS_ARC_BUF;
+
+#endif /* ARCNET */
+
+#define NDIS_MINIPORT_WORK_QUEUE_SIZE 10
+
+typedef struct _NDIS_LOG {
+  PNDIS_MINIPORT_BLOCK  Miniport;
+  KSPIN_LOCK  LogLock;
+  PIRP  Irp;
+  UINT  TotalSize;
+  UINT  CurrentSize;
+  UINT  InPtr;
+  UINT  OutPtr;
+  UCHAR  LogBuf[1];
+} NDIS_LOG, *PNDIS_LOG;
+
+typedef struct _FILTERDBS {
+  _ANONYMOUS_UNION union {
+    PETH_FILTER  EthDB;
+    PNULL_FILTER  NullDB;
+  } DUMMYUNIONNAME;
+  PTR_FILTER  TrDB;
+  PFDDI_FILTER  FddiDB;
+#if ARCNET
+  PARC_FILTER  ArcDB;
+#else /* !ARCNET */
+  PVOID  XXXDB;
+#endif /* !ARCNET */
+} FILTERDBS, *PFILTERDBS;
+
+
+struct _NDIS_MINIPORT_BLOCK {
+  PVOID  Signature;
+  PNDIS_MINIPORT_BLOCK  NextMiniport;
+  PNDIS_M_DRIVER_BLOCK  DriverHandle;
+  NDIS_HANDLE  MiniportAdapterContext;
+  UNICODE_STRING  MiniportName;
+  PNDIS_BIND_PATHS  BindPaths;
+  NDIS_HANDLE  OpenQueue;
+  REFERENCE  Ref;
+  NDIS_HANDLE  DeviceContext;
+  UCHAR  Padding1;
+  UCHAR  LockAcquired;
+  UCHAR  PmodeOpens;
+  UCHAR  AssignedProcessor;
+  KSPIN_LOCK  Lock;
+  PNDIS_REQUEST  MediaRequest;
+  PNDIS_MINIPORT_INTERRUPT  Interrupt;
+  ULONG  Flags;
+  ULONG  PnPFlags;
+  LIST_ENTRY  PacketList;
+  PNDIS_PACKET  FirstPendingPacket;
+  PNDIS_PACKET  ReturnPacketsQueue;
+  ULONG  RequestBuffer;
+  PVOID  SetMCastBuffer;
+  PNDIS_MINIPORT_BLOCK  PrimaryMiniport;
+  PVOID  WrapperContext;
+  PVOID  BusDataContext;
+  ULONG  PnPCapabilities;
+  PCM_RESOURCE_LIST  Resources;
+  NDIS_TIMER  WakeUpDpcTimer;
+  UNICODE_STRING  BaseName;
+  UNICODE_STRING  SymbolicLinkName;
+  ULONG  CheckForHangSeconds;
+  USHORT  CFHangTicks;
+  USHORT  CFHangCurrentTick;
+  NDIS_STATUS  ResetStatus;
+  NDIS_HANDLE  ResetOpen;
+  FILTERDBS  FilterDbs;
+  FILTER_PACKET_INDICATION_HANDLER  PacketIndicateHandler;
+  NDIS_M_SEND_COMPLETE_HANDLER  SendCompleteHandler;
+  NDIS_M_SEND_RESOURCES_HANDLER  SendResourcesHandler;
+  NDIS_M_RESET_COMPLETE_HANDLER  ResetCompleteHandler;
+  NDIS_MEDIUM  MediaType;
+  ULONG  BusNumber;
+  NDIS_INTERFACE_TYPE  BusType;
+  NDIS_INTERFACE_TYPE  AdapterType;
+  PDEVICE_OBJECT  DeviceObject;
+  PDEVICE_OBJECT  PhysicalDeviceObject;
+  PDEVICE_OBJECT  NextDeviceObject;
+  PMAP_REGISTER_ENTRY  MapRegisters;
+  PNDIS_AF_LIST  CallMgrAfList;
+  PVOID  MiniportThread;
+  PVOID  SetInfoBuf;
+  USHORT  SetInfoBufLen;
+  USHORT  MaxSendPackets;
+  NDIS_STATUS  FakeStatus;
+  PVOID  LockHandler;
+  PUNICODE_STRING  pAdapterInstanceName;
+  PNDIS_MINIPORT_TIMER  TimerQueue;
+  UINT  MacOptions;
+  PNDIS_REQUEST  PendingRequest;
+  UINT  MaximumLongAddresses;
+  UINT  MaximumShortAddresses;
+  UINT  CurrentLookahead;
+  UINT  MaximumLookahead;
+  W_HANDLE_INTERRUPT_HANDLER  HandleInterruptHandler;
+  W_DISABLE_INTERRUPT_HANDLER  DisableInterruptHandler;
+  W_ENABLE_INTERRUPT_HANDLER  EnableInterruptHandler;
+  W_SEND_PACKETS_HANDLER  SendPacketsHandler;
+  NDIS_M_START_SENDS  DeferredSendHandler;
+  ETH_RCV_INDICATE_HANDLER  EthRxIndicateHandler;
+  TR_RCV_INDICATE_HANDLER  TrRxIndicateHandler;
+  FDDI_RCV_INDICATE_HANDLER  FddiRxIndicateHandler;
+  ETH_RCV_COMPLETE_HANDLER  EthRxCompleteHandler;
+  TR_RCV_COMPLETE_HANDLER  TrRxCompleteHandler;
+  FDDI_RCV_COMPLETE_HANDLER  FddiRxCompleteHandler;
+  NDIS_M_STATUS_HANDLER  StatusHandler;
+  NDIS_M_STS_COMPLETE_HANDLER  StatusCompleteHandler;
+  NDIS_M_TD_COMPLETE_HANDLER  TDCompleteHandler;
+  NDIS_M_REQ_COMPLETE_HANDLER  QueryCompleteHandler;
+  NDIS_M_REQ_COMPLETE_HANDLER  SetCompleteHandler;
+  NDIS_WM_SEND_COMPLETE_HANDLER  WanSendCompleteHandler;
+  WAN_RCV_HANDLER  WanRcvHandler;
+  WAN_RCV_COMPLETE_HANDLER  WanRcvCompleteHandler;
+#if defined(_NDIS_)
+  PNDIS_MINIPORT_BLOCK  NextGlobalMiniport;
+  SINGLE_LIST_ENTRY  WorkQueue[NUMBER_OF_WORK_ITEM_TYPES];
+  SINGLE_LIST_ENTRY  SingleWorkItems[NUMBER_OF_SINGLE_WORK_ITEMS];
+  UCHAR  SendFlags;
+  UCHAR  TrResetRing;
+  UCHAR  ArcnetAddress;
+  UCHAR  XState;
+  _ANONYMOUS_UNION union {
+#if ARCNET
+    PNDIS_ARC_BUF  ArcBuf;
+#endif
+    PVOID  BusInterface;
+  } DUMMYUNIONNAME;
+  PNDIS_LOG  Log;
+  ULONG  SlotNumber;
+  PCM_RESOURCE_LIST  AllocatedResources;
+  PCM_RESOURCE_LIST  AllocatedResourcesTranslated;
+  SINGLE_LIST_ENTRY  PatternList;
+  NDIS_PNP_CAPABILITIES  PMCapabilities;
+  DEVICE_CAPABILITIES  DeviceCaps;
+  ULONG  WakeUpEnable;
+  DEVICE_POWER_STATE  CurrentDevicePowerState;
+  PIRP  pIrpWaitWake;
+  SYSTEM_POWER_STATE  WaitWakeSystemState;
+  LARGE_INTEGER  VcIndex;
+  KSPIN_LOCK  VcCountLock;
+  LIST_ENTRY  WmiEnabledVcs;
+  PNDIS_GUID  pNdisGuidMap;
+  PNDIS_GUID  pCustomGuidMap;
+  USHORT  VcCount;
+  USHORT  cNdisGuidMap;
+  USHORT  cCustomGuidMap;
+  USHORT  CurrentMapRegister;
+  PKEVENT  AllocationEvent;
+  USHORT  BaseMapRegistersNeeded;
+  USHORT  SGMapRegistersNeeded;
+  ULONG  MaximumPhysicalMapping;
+  NDIS_TIMER  MediaDisconnectTimer;
+  USHORT  MediaDisconnectTimeOut;
+  USHORT  InstanceNumber;
+  NDIS_EVENT  OpenReadyEvent;
+  NDIS_PNP_DEVICE_STATE  PnPDeviceState;
+  NDIS_PNP_DEVICE_STATE  OldPnPDeviceState;
+  PGET_SET_DEVICE_DATA  SetBusData;
+  PGET_SET_DEVICE_DATA  GetBusData;
+  KDPC  DeferredDpc;
+#if 0
+  /* FIXME: */
+  NDIS_STATS  NdisStats;
+#else
+  ULONG  NdisStats;
+#endif
+  PNDIS_PACKET  IndicatedPacket[MAXIMUM_PROCESSORS];
+  PKEVENT  RemoveReadyEvent;
+  PKEVENT  AllOpensClosedEvent;
+  PKEVENT  AllRequestsCompletedEvent;
+  ULONG  InitTimeMs;
+  NDIS_MINIPORT_WORK_ITEM  WorkItemBuffer[NUMBER_OF_SINGLE_WORK_ITEMS];
+  PDMA_ADAPTER  SystemAdapterObject;
+  ULONG  DriverVerifyFlags;
+  POID_LIST  OidList;
+  USHORT  InternalResetCount;
+  USHORT  MiniportResetCount;
+  USHORT  MediaSenseConnectCount;
+  USHORT  MediaSenseDisconnectCount;
+  PNDIS_PACKET  *xPackets;
+  ULONG  UserModeOpenReferences;
+  _ANONYMOUS_UNION union {
+    PVOID  SavedSendHandler;
+    PVOID  SavedWanSendHandler;
+  } DUMMYUNIONNAME2;
+  PVOID  SavedSendPacketsHandler;
+  PVOID  SavedCancelSendPacketsHandler;
+  W_SEND_PACKETS_HANDLER  WSendPacketsHandler;
+  ULONG  MiniportAttributes;
+  PDMA_ADAPTER  SavedSystemAdapterObject;
+  USHORT  NumOpens;
+  USHORT  CFHangXTicks;
+  ULONG  RequestCount;
+  ULONG  IndicatedPacketsCount;
+  ULONG  PhysicalMediumType;
+  PNDIS_REQUEST  LastRequest;
+  LONG  DmaAdapterRefCount;
+  PVOID  FakeMac;
+  ULONG  LockDbg;
+  ULONG  LockDbgX;
+  PVOID  LockThread;
+  ULONG  InfoFlags;
+  KSPIN_LOCK  TimerQueueLock;
+  PKEVENT  ResetCompletedEvent;
+  PKEVENT  QueuedBindingCompletedEvent;
+  PKEVENT  DmaResourcesReleasedEvent;
+  FILTER_PACKET_INDICATION_HANDLER  SavedPacketIndicateHandler;
+  ULONG  RegisteredInterrupts;
+  PNPAGED_LOOKASIDE_LIST  SGListLookasideList;
+  ULONG  ScatterGatherListSize;
+#endif /* _NDIS_ */
+};
+
+
+/* Handler prototypes for NDIS_OPEN_BLOCK */
+
+typedef NDIS_STATUS (DDKAPI *WAN_SEND_HANDLER)(
+  /*IN*/ NDIS_HANDLE  MacBindingHandle,
+  /*IN*/ NDIS_HANDLE  LinkHandle,
+  /*IN*/ PVOID  Packet);
+
+/* NDIS 4.0 extension */
+
+typedef VOID (DDKAPI *SEND_PACKETS_HANDLER)(
+  /*IN*/ NDIS_HANDLE  MiniportAdapterContext,
+  /*IN*/ PPNDIS_PACKET  PacketArray,
+  /*IN*/ UINT  NumberOfPackets);
+
+
+typedef struct _NDIS_COMMON_OPEN_BLOCK {
+  PVOID  MacHandle;
+  NDIS_HANDLE  BindingHandle;
+  PNDIS_MINIPORT_BLOCK  MiniportHandle;
+  PNDIS_PROTOCOL_BLOCK  ProtocolHandle;
+  NDIS_HANDLE  ProtocolBindingContext;
+  PNDIS_OPEN_BLOCK  MiniportNextOpen;
+  PNDIS_OPEN_BLOCK  ProtocolNextOpen;
+  NDIS_HANDLE  MiniportAdapterContext;
+  BOOLEAN  Reserved1;
+  BOOLEAN  Reserved2;
+  BOOLEAN  Reserved3;
+  BOOLEAN  Reserved4;
+  PNDIS_STRING  BindDeviceName;
+  KSPIN_LOCK  Reserved5;
+  PNDIS_STRING  RootDeviceName;
+  _ANONYMOUS_UNION union {
+    SEND_HANDLER  SendHandler;
+    WAN_SEND_HANDLER  WanSendHandler;
+  } DUMMYUNIONNAME;
+  TRANSFER_DATA_HANDLER  TransferDataHandler;
+  SEND_COMPLETE_HANDLER  SendCompleteHandler;
+  TRANSFER_DATA_COMPLETE_HANDLER  TransferDataCompleteHandler;
+  RECEIVE_HANDLER  ReceiveHandler;
+  RECEIVE_COMPLETE_HANDLER  ReceiveCompleteHandler;
+  WAN_RECEIVE_HANDLER  WanReceiveHandler;
+  REQUEST_COMPLETE_HANDLER  RequestCompleteHandler;
+  RECEIVE_PACKET_HANDLER  ReceivePacketHandler;
+  SEND_PACKETS_HANDLER  SendPacketsHandler;
+  RESET_HANDLER  ResetHandler;
+  REQUEST_HANDLER  RequestHandler;
+  RESET_COMPLETE_HANDLER  ResetCompleteHandler;
+  STATUS_HANDLER  StatusHandler;
+  STATUS_COMPLETE_HANDLER  StatusCompleteHandler;
+#if defined(_NDIS_)
+  ULONG  Flags;
+  ULONG  References;
+  KSPIN_LOCK  SpinLock;
+  NDIS_HANDLE  FilterHandle;
+  ULONG  ProtocolOptions;
+  USHORT  CurrentLookahead;
+  USHORT  ConnectDampTicks;
+  USHORT  DisconnectDampTicks;
+  W_SEND_HANDLER  WSendHandler;
+  W_TRANSFER_DATA_HANDLER  WTransferDataHandler;
+  W_SEND_PACKETS_HANDLER  WSendPacketsHandler;
+  W_CANCEL_SEND_PACKETS_HANDLER  CancelSendPacketsHandler;
+  ULONG  WakeUpEnable;
+  PKEVENT  CloseCompleteEvent;
+  QUEUED_CLOSE  QC;
+  ULONG  AfReferences;
+  PNDIS_OPEN_BLOCK  NextGlobalOpen;
+#endif /* _NDIS_ */
+} NDIS_COMMON_OPEN_BLOCK;
+
+struct _NDIS_OPEN_BLOCK
+{
+    NDIS_COMMON_OPEN_BLOCK NdisCommonOpenBlock;
+#if defined(_NDIS_)
+    struct _NDIS_OPEN_CO
+    {
+        struct _NDIS_CO_AF_BLOCK *  NextAf;
+        W_CO_CREATE_VC_HANDLER      MiniportCoCreateVcHandler;
+        W_CO_REQUEST_HANDLER        MiniportCoRequestHandler;
+        CO_CREATE_VC_HANDLER        CoCreateVcHandler;
+        CO_DELETE_VC_HANDLER        CoDeleteVcHandler;
+        PVOID                       CmActivateVcCompleteHandler;
+        PVOID                       CmDeactivateVcCompleteHandler;
+        PVOID                       CoRequestCompleteHandler;
+        LIST_ENTRY                  ActiveVcHead;
+        LIST_ENTRY                  InactiveVcHead;
+        LONG                        PendingAfNotifications;
+        PKEVENT                     AfNotifyCompleteEvent;
+    };
+#endif /* _NDIS_ */
+};
+
+
+
+/* Routines for NDIS miniport drivers */
+
+NTOSAPI
+VOID
+DDKAPI
+NdisMInitializeTimer(
+  /*IN*/ /*OUT*/ PNDIS_MINIPORT_TIMER Timer,
+  /*IN*/ NDIS_HANDLE MiniportAdapterHandle,
+  /*IN*/ PNDIS_TIMER_FUNCTION TimerFunction,
+  /*IN*/ PVOID FunctionContext);
+
+NTOSAPI
+VOID
+DDKAPI
+NdisMSetPeriodicTimer(
+  /*IN*/ PNDIS_MINIPORT_TIMER Timer,
+  /*IN*/ UINT MillisecondsPeriod);
+
+NTOSAPI
+VOID
+DDKAPI
+NdisMCancelTimer(
+  /*IN*/ PNDIS_MINIPORT_TIMER Timer,
+  /*OUT*/ PBOOLEAN TimerCancelled);
+
+NDISAPI
+VOID
+DDKAPI
+NdisInitializeWrapper(
+  /*OUT*/ PNDIS_HANDLE  NdisWrapperHandle,
+  /*IN*/ PVOID  SystemSpecific1,
+  /*IN*/ PVOID  SystemSpecific2,
+  /*IN*/ PVOID  SystemSpecific3);
+
+NDISAPI
+NDIS_STATUS
+DDKAPI
+NdisMAllocateMapRegisters(
+  /*IN*/ NDIS_HANDLE  MiniportAdapterHandle,
+  /*IN*/ UINT  DmaChannel,
+  /*IN*/ BOOLEAN  Dma32BitAddresses,
+  /*IN*/ ULONG  PhysicalMapRegistersNeeded,
+  /*IN*/ ULONG  MaximumPhysicalMapping);
+
+/*
+ * VOID
+ * NdisMArcIndicateReceive(
+ * IN NDIS_HANDLE  MiniportAdapterHandle,
+ * IN PUCHAR  HeaderBuffer,
+ * IN PUCHAR  DataBuffer,
+ * IN UINT  Length);
+ */
+#define NdisMArcIndicateReceive(MiniportAdapterHandle, \
+                                HeaderBuffer,          \
+                                DataBuffer,            \
+                                Length)                \
+{                                                      \
+    ArcFilterDprIndicateReceive(                       \
+        (((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->FilterDbs.ArcDB), \
+        (HeaderBuffer), \
+        (DataBuffer),   \
+        (Length));      \
+}
+
+/*
+ * VOID
+ * NdisMArcIndicateReceiveComplete(
+ * IN NDIS_HANDLE  MiniportAdapterHandle);
+ */
+#define NdisMArcIndicateReceiveComplete(MiniportAdapterHandle) \
+{                                                              \
+    if (((PNDIS_MINIPORT_BLOCK)MiniportAdapterHandle)->EthDB)  \
+	    {                                                        \
+	        NdisMEthIndicateReceiveComplete(_H);                 \
+	    }                                                        \
+                                                               \
+    ArcFilterDprIndicateReceiveComplete(                       \
+      ((PNDIS_MINIPORT_BLOCK)MiniportAdapterHandle)->ArcDB);   \
+}
+
+NDISAPI
+VOID
+DDKAPI
+NdisMCloseLog(
+  /*IN*/ NDIS_HANDLE  LogHandle);
+
+NDISAPI
+NDIS_STATUS
+DDKAPI
+NdisMCreateLog(
+  /*IN*/ NDIS_HANDLE  MiniportAdapterHandle,
+  /*IN*/ UINT  Size,
+  /*OUT*/ PNDIS_HANDLE  LogHandle);
+
+NDISAPI
+VOID
+DDKAPI
+NdisMDeregisterAdapterShutdownHandler(
+  /*IN*/ NDIS_HANDLE  MiniportHandle);
+
+NDISAPI
+VOID
+DDKAPI
+NdisMDeregisterInterrupt(
+  /*IN*/ PNDIS_MINIPORT_INTERRUPT  Interrupt);
+
+NDISAPI
+VOID
+DDKAPI
+NdisMDeregisterIoPortRange(
+  /*IN*/ NDIS_HANDLE  MiniportAdapterHandle,
+  /*IN*/ UINT  InitialPort,
+  /*IN*/ UINT  NumberOfPorts,
+  /*IN*/ PVOID  PortOffset);
+
+/*
+ * VOID
+ * NdisMEthIndicateReceive(
+ * IN NDIS_HANDLE  MiniportAdapterHandle,
+ * IN NDIS_HANDLE  MiniportReceiveContext,
+ * IN PVOID  HeaderBuffer,
+ * IN UINT  HeaderBufferSize,
+ * IN PVOID  LookaheadBuffer,
+ * IN UINT  LookaheadBufferSize,
+ * IN UINT  PacketSize);
+ */
+#define NdisMEthIndicateReceive(MiniportAdapterHandle,  \
+                                MiniportReceiveContext, \
+                                HeaderBuffer,           \
+                                HeaderBufferSize,       \
+                                LookaheadBuffer,        \
+                                LookaheadBufferSize,    \
+                                PacketSize)             \
+{                                                       \
+    (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->EthRxIndicateHandler)( \
+        (((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->FilterDbs.EthDB), \
+		(MiniportReceiveContext), \
+		(HeaderBuffer),           \
+		(HeaderBuffer),           \
+		(HeaderBufferSize),       \
+		(LookaheadBuffer),        \
+		(LookaheadBufferSize),    \
+		(PacketSize));            \
+}
+
+/*
+ * VOID
+ * NdisMEthIndicateReceiveComplete(
+ * IN NDIS_HANDLE MiniportAdapterHandle);
+ */
+#define NdisMEthIndicateReceiveComplete(MiniportAdapterHandle) \
+{                                                              \
+    (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->EthRxCompleteHandler)( \
+        ((PNDIS_MINIPORT_BLOCK)MiniportAdapterHandle)->FilterDbs.EthDB);    \
+}
+
+/*
+ * VOID
+ * NdisMFddiIndicateReceive(
+ * IN NDIS_HANDLE  MiniportAdapterHandle,
+ * IN NDIS_HANDLE  MiniportReceiveContext,
+ * IN PVOID  HeaderBuffer,
+ * IN UINT  HeaderBufferSize,
+ * IN PVOID  LookaheadBuffer,
+ * IN UINT  LookaheadBufferSize,
+ * IN UINT  PacketSize);
+ */
+#define NdisMFddiIndicateReceive(MiniportAdapterHandle,  \
+                                 MiniportReceiveContext, \
+                                 HeaderBuffer,           \
+                                 HeaderBufferSize,       \
+                                 LookaheadBuffer,        \
+                                 LookaheadBufferSize,    \
+                                 PacketSize)             \
+{                                                        \
+    (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->FddiRxIndicateHandler)( \
+        (((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->FilterDbs.FddiDB),   \
+        (MiniportReceiveContext),              \
+        (PUCHAR)(HeaderBuffer) + 1,            \
+        (((*(PUCHAR*)(HeaderBuffer)) & 0x40) ? \
+            FDDI_LENGTH_OF_LONG_ADDRESS :      \
+		    FDDI_LENGTH_OF_SHORT_ADDRESS),     \
+        (HeaderBuffer),                        \
+        (HeaderBufferSize),                    \
+        (LookaheadBuffer),                     \
+        (LookaheadBufferSize),                 \
+        (PacketSize));                         \
+}
+
+
+
+/*
+ * VOID
+ * NdisMFddiIndicateReceiveComplete(
+ * IN NDIS_HANDLE  MiniportAdapterHandle);
+ */
+#define NdisMFddiIndicateReceiveComplete(MiniportAdapterHandle) \
+{                                                               \
+    (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->FddiRxCompleteHandler)( \
+        ((PNDIS_MINIPORT_BLOCK)MiniportAdapterHandle)->FilterDbs.FddiDB);      \
+}
+
+NDISAPI
+VOID
+DDKAPI
+NdisMFlushLog(
+  /*IN*/ NDIS_HANDLE  LogHandle);
+
+NDISAPI
+VOID
+DDKAPI
+NdisMFreeMapRegisters(
+  /*IN*/ NDIS_HANDLE  MiniportAdapterHandle);
+
+/*
+ * VOID
+ * NdisMIndicateStatus(
+ * IN NDIS_HANDLE  MiniportAdapterHandle,
+ * IN NDIS_STATUS  GeneralStatus,
+ * IN PVOID  StatusBuffer,
+ * IN UINT  StatusBufferSize);
+ */
+
+#define NdisMIndicateStatus(MiniportAdapterHandle,  \
+   GeneralStatus, StatusBuffer, StatusBufferSize)   \
+  (*((PNDIS_MINIPORT_BLOCK)(_M))->StatusHandler)(   \
+  MiniportAdapterHandle, GeneralStatus, StatusBuffer, StatusBufferSize)
+
+/*
+ * VOID
+ * NdisMIndicateStatusComplete(
+ * IN NDIS_HANDLE  MiniportAdapterHandle);
+ */
+#define NdisMIndicateStatusComplete(MiniportAdapterHandle) \
+  (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->StatusCompleteHandler)( \
+    MiniportAdapterHandle)
+
+/*
+ * VOID
+ * NdisMInitializeWrapper(
+ * OUT PNDIS_HANDLE  NdisWrapperHandle,
+ * IN PVOID  SystemSpecific1,
+ * IN PVOID  SystemSpecific2,
+ * IN PVOID  SystemSpecific3);
+ */
+#define NdisMInitializeWrapper(NdisWrapperHandle, \
+                               SystemSpecific1,   \
+                               SystemSpecific2,   \
+                               SystemSpecific3)   \
+    NdisInitializeWrapper((NdisWrapperHandle),    \
+                          (SystemSpecific1),      \
+                          (SystemSpecific2),      \
+                          (SystemSpecific3))
+
+NDISAPI
+NDIS_STATUS
+DDKAPI
+NdisMMapIoSpace(
+  /*OUT*/ PVOID  *VirtualAddress,
+  /*IN*/ NDIS_HANDLE  MiniportAdapterHandle,
+  /*IN*/ NDIS_PHYSICAL_ADDRESS  PhysicalAddress,
+  /*IN*/ UINT  Length);
+
+/*
+ * VOID
+ * NdisMQueryInformationComplete(
+ * IN NDIS_HANDLE  MiniportAdapterHandle,
+ * IN NDIS_STATUS  Status);
+ */
+#define NdisMQueryInformationComplete(MiniportAdapterHandle, Status) \
+  (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->QueryCompleteHandler)(MiniportAdapterHandle, Status)
+
+NDISAPI
+VOID
+DDKAPI
+NdisMRegisterAdapterShutdownHandler(
+  /*IN*/ NDIS_HANDLE  MiniportHandle,
+  /*IN*/ PVOID  ShutdownContext,
+  /*IN*/ ADAPTER_SHUTDOWN_HANDLER  ShutdownHandler);
+
+NDISAPI
+NDIS_STATUS
+DDKAPI
+NdisMRegisterInterrupt(
+  /*OUT*/ PNDIS_MINIPORT_INTERRUPT  Interrupt,
+  /*IN*/ NDIS_HANDLE  MiniportAdapterHandle,
+  /*IN*/ UINT  InterruptVector,
+  /*IN*/ UINT  InterruptLevel,
+  /*IN*/ BOOLEAN  RequestIsr,
+  /*IN*/ BOOLEAN  SharedInterrupt,
+  /*IN*/ NDIS_INTERRUPT_MODE  InterruptMode);
+
+NDISAPI
+NDIS_STATUS
+DDKAPI
+NdisMRegisterIoPortRange(
+  /*OUT*/ PVOID  *PortOffset,
+  /*IN*/ NDIS_HANDLE  MiniportAdapterHandle,
+  /*IN*/ UINT  InitialPort,
+  /*IN*/ UINT  NumberOfPorts);
+
+NDISAPI
+NDIS_STATUS
+DDKAPI
+NdisMRegisterMiniport(
+  /*IN*/ NDIS_HANDLE  NdisWrapperHandle,
+  /*IN*/ PNDIS_MINIPORT_CHARACTERISTICS  MiniportCharacteristics,
+  /*IN*/ UINT  CharacteristicsLength);
+
+
+#if !defined(_NDIS_)
+
+/*
+ * VOID
+ * NdisMResetComplete(
+ * IN NDIS_HANDLE  MiniportAdapterHandle,
+ * IN NDIS_STATUS  Status,
+ * IN BOOLEAN  AddressingReset);
+ */
+#define	NdisMResetComplete(MiniportAdapterHandle, \
+                           Status,                \
+                           AddressingReset)       \
+{                                                 \
+    (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->ResetCompleteHandler)( \
+        MiniportAdapterHandle, Status, AddressingReset); \
+}
+
+/*
+ * VOID
+ * NdisMSendComplete(
+ * IN NDIS_HANDLE  MiniportAdapterHandle,
+ * IN PNDIS_PACKET  Packet,
+ * IN NDIS_STATUS  Status);
+ */
+#define	NdisMSendComplete(MiniportAdapterHandle, \
+                          Packet,                \
+                          Status)                \
+{                                                \
+    (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->SendCompleteHandler)( \
+        MiniportAdapterHandle, Packet, Status);  \
+}
+
+/*
+ * VOID
+ * NdisMSendResourcesAvailable(
+ * IN NDIS_HANDLE  MiniportAdapterHandle);
+ */
+#define	NdisMSendResourcesAvailable(MiniportAdapterHandle) \
+{                                                \
+    (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->SendResourcesHandler)( \
+        MiniportAdapterHandle); \
+}
+
+/*
+ * VOID
+ * NdisMTransferDataComplete(
+ * IN NDIS_HANDLE  MiniportAdapterHandle,
+ * IN PNDIS_PACKET  Packet,
+ * IN NDIS_STATUS  Status,
+ * IN UINT  BytesTransferred);
+ */
+#define	NdisMTransferDataComplete(MiniportAdapterHandle, \
+                                  Packet,                \
+                                  Status,                \
+                                  BytesTransferred)      \
+{                                                        \
+    (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->TDCompleteHandler)( \
+        MiniportAdapterHandle, Packet, Status, BytesTransferred)           \
+}
+
+#endif /* !_NDIS_ */
+
+
+/*
+ * VOID
+ * NdisMSetAttributes(
+ * IN NDIS_HANDLE  MiniportAdapterHandle,
+ * IN NDIS_HANDLE  MiniportAdapterContext,
+ * IN BOOLEAN  BusMaster,
+ * IN NDIS_INTERFACE_TYPE  AdapterType);
+ */
+#define NdisMSetAttributes(MiniportAdapterHandle,   \
+                           MiniportAdapterContext,  \
+                           BusMaster,               \
+                           AdapterType)             \
+  NdisMSetAttributesEx(MiniportAdapterHandle,       \
+    MiniportAdapterContext,                         \
+    0,                                              \
+    (BusMaster) ? NDIS_ATTRIBUTE_BUS_MASTER : 0,    \
+    AdapterType)
+
+NDISAPI
+VOID
+DDKAPI
+NdisMSetAttributesEx(
+  /*IN*/ NDIS_HANDLE  MiniportAdapterHandle,
+  /*IN*/ NDIS_HANDLE  MiniportAdapterContext,
+  /*IN*/ UINT  CheckForHangTimeInSeconds   /*OPTIONAL*/,
+  /*IN*/ ULONG  AttributeFlags,
+  /*IN*/ NDIS_INTERFACE_TYPE AdapterType);
+
+/*
+ * VOID
+ * NdisMSetInformationComplete(
+ * IN NDIS_HANDLE  MiniportAdapterHandle,
+ * IN NDIS_STATUS  Status);
+ */
+#define NdisMSetInformationComplete(MiniportAdapterHandle, \
+                                    Status) \
+  (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->SetCompleteHandler)( \
+    MiniportAdapterHandle, Status)
+
+NDISAPI
+VOID
+DDKAPI
+NdisMSleep(
+  /*IN*/ ULONG  MicrosecondsToSleep);
+
+NDISAPI
+BOOLEAN
+DDKAPI
+NdisMSynchronizeWithInterrupt(
+  /*IN*/ PNDIS_MINIPORT_INTERRUPT  Interrupt,
+  /*IN*/ PVOID  SynchronizeFunction,
+  /*IN*/ PVOID  SynchronizeContext);
+
+/*
+ * VOID
+ * NdisMTrIndicateReceive(
+ * IN NDIS_HANDLE  MiniportAdapterHandle,
+ * IN NDIS_HANDLE  MiniportReceiveContext,
+ * IN PVOID  HeaderBuffer,
+ * IN UINT  HeaderBufferSize,
+ * IN PVOID  LookaheadBuffer,
+ * IN UINT  LookaheadBufferSize,
+ * IN UINT  PacketSize);
+ */
+#define NdisMTrIndicateReceive(MiniportAdapterHandle,  \
+                               MiniportReceiveContext, \
+                               HeaderBuffer,           \
+                               HeaderBufferSize,       \
+                               LookaheadBuffer,        \
+                               LookaheadBufferSize,    \
+                               PacketSize)             \
+{                                                      \
+    (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->TrRxIndicateHandler)( \
+      (((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->FilterDbs.TrDB),     \
+		(MiniportReceiveContext), \
+		(HeaderBuffer),           \
+		(HeaderBuffer),           \
+		(HeaderBufferSize),       \
+		(LookaheadBuffer),        \
+		(LookaheadBufferSize),    \
+		(PacketSize));            \
+}
+
+/*
+ * VOID
+ * NdisMTrIndicateReceiveComplete(
+ * IN NDIS_HANDLE  MiniportAdapterHandle);
+ */
+#define NdisMTrIndicateReceiveComplete(MiniportAdapterHandle) \
+{                                                             \
+	(*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->TrRxCompleteHandler)( \
+    ((PNDIS_MINIPORT_BLOCK)MiniportAdapterHandle)->FilterDbs.TrDB);    \
+}
+
+NDISAPI
+NDIS_STATUS
+DDKAPI
+NdisMWriteLogData(
+  /*IN*/ NDIS_HANDLE  LogHandle,
+  /*IN*/ PVOID  LogBuffer,
+  /*IN*/ UINT  LogBufferSize);
+
+NDISAPI
+VOID
+DDKAPI
+NdisMQueryAdapterResources(
+  /*OUT*/ PNDIS_STATUS  Status,
+  /*IN*/ NDIS_HANDLE  WrapperConfigurationContext,
+  /*OUT*/ PNDIS_RESOURCE_LIST  ResourceList,
+  /*IN OUT*/ PUINT  BufferSize);
+
+NDISAPI
+VOID
+DDKAPI
+NdisTerminateWrapper(
+  /*IN*/ NDIS_HANDLE  NdisWrapperHandle,
+  /*IN*/ PVOID  SystemSpecific);
+
+NDISAPI
+VOID
+DDKAPI
+NdisMUnmapIoSpace(
+  /*IN*/ NDIS_HANDLE  MiniportAdapterHandle,
+  /*IN*/ PVOID  VirtualAddress,
+  /*IN*/ UINT  Length);
+
+
+
+/* NDIS intermediate miniport structures */
+
+typedef VOID (DDKAPI *W_MINIPORT_CALLBACK)(
+  /*IN*/ NDIS_HANDLE  MiniportAdapterContext,
+  /*IN*/ PVOID  CallbackContext);
+
+
+
+/* Routines for intermediate miniport drivers */
+
+NDISAPI
+NDIS_STATUS
+DDKAPI
+NdisIMDeInitializeDeviceInstance(
+  /*IN*/ NDIS_HANDLE NdisMiniportHandle);
+
+/*
+ * NDIS_STATUS
+ * NdisIMInitializeDeviceInstance(
+ * IN NDIS_HANDLE  DriverHandle,
+ * IN PNDIS_STRING  DeviceInstance);
+ */
+#define NdisIMInitializeDeviceInstance(DriverHandle, DeviceInstance) \
+  NdisIMInitializeDeviceInstanceEx(DriverHandle, DeviceInstance, NULL)
+
+NDISAPI
+NDIS_STATUS
+DDKAPI
+NdisIMRegisterLayeredMiniport(
+  /*IN*/ NDIS_HANDLE  NdisWrapperHandle,
+  /*IN*/ PNDIS_MINIPORT_CHARACTERISTICS  MiniportCharacteristics,
+  /*IN*/ UINT  CharacteristicsLength,
+  /*OUT*/ PNDIS_HANDLE  DriverHandle);
+
+
+/* Functions obsoleted by NDIS 5.0 */
+
+NDISAPI
+VOID
+DDKAPI
+NdisFreeDmaChannel(
+  /*IN*/ PNDIS_HANDLE  NdisDmaHandle);
+
+NDISAPI
+VOID
+DDKAPI
+NdisSetupDmaTransfer(
+  /*OUT*/ PNDIS_STATUS  Status,
+  /*IN*/ PNDIS_HANDLE  NdisDmaHandle,
+  /*IN*/ PNDIS_BUFFER  Buffer,
+  /*IN*/ ULONG  Offset,
+  /*IN*/ ULONG  Length,
+  /*IN*/ BOOLEAN  WriteToDevice);
+
+NDISAPI
+NTSTATUS
+DDKAPI
+NdisUpcaseUnicodeString(
+  /*OUT*/ PUNICODE_STRING  DestinationString,
+  /*IN*/ PUNICODE_STRING  SourceString);
+
+
+/* Routines for NDIS protocol drivers */
+
+NDISAPI
+VOID
+DDKAPI
+NdisRequest(
+  /*OUT*/ PNDIS_STATUS  Status,
+  /*IN*/ NDIS_HANDLE  NdisBindingHandle,
+  /*IN*/ PNDIS_REQUEST  NdisRequest);
+
+NDISAPI
+VOID
+DDKAPI
+NdisReset(
+  /*OUT*/ PNDIS_STATUS  Status,
+  /*IN*/ NDIS_HANDLE  NdisBindingHandle);
+
+NDISAPI
+VOID
+DDKAPI
+NdisSend(
+  /*OUT*/ PNDIS_STATUS  Status,
+  /*IN*/ NDIS_HANDLE  NdisBindingHandle,
+  /*IN*/ PNDIS_PACKET  Packet);
+
+NDISAPI
+VOID
+DDKAPI
+NdisSendPackets(
+  /*IN*/ NDIS_HANDLE  NdisBindingHandle,
+  /*IN*/ PPNDIS_PACKET  PacketArray,
+  /*IN*/ UINT  NumberOfPackets);
+
+NDISAPI
+VOID
+DDKAPI
+NdisTransferData(
+  /*OUT*/ PNDIS_STATUS        Status,
+  /*IN*/ NDIS_HANDLE  NdisBindingHandle,
+  /*IN*/ NDIS_HANDLE  MacReceiveContext,
+  /*IN*/ UINT  ByteOffset,
+  /*IN*/ UINT  BytesToTransfer,
+  /*IN OUT*/ PNDIS_PACKET  Packet,
+  /*OUT*/ PUINT  BytesTransferred);
+
+NDISAPI
+VOID
+DDKAPI
+NdisCloseAdapter(
+  /*OUT*/ PNDIS_STATUS  Status,
+  /*IN*/ NDIS_HANDLE  NdisBindingHandle);
+
+NDISAPI
+VOID
+DDKAPI
+NdisCompleteBindAdapter(
+  /*IN*/ NDIS_HANDLE  BindAdapterContext,
+  /*IN*/ NDIS_STATUS  Status,
+  /*IN*/ NDIS_STATUS  OpenStatus);
+
+NDISAPI
+VOID
+DDKAPI
+NdisCompleteUnbindAdapter(
+  /*IN*/ NDIS_HANDLE  UnbindAdapterContext,
+  /*IN*/ NDIS_STATUS  Status);
+
+NDISAPI
+VOID
+DDKAPI
+NdisDeregisterProtocol(
+  /*OUT*/ PNDIS_STATUS  Status,
+  /*IN*/ NDIS_HANDLE  NdisProtocolHandle);
+
+NDISAPI
+VOID
+DDKAPI
+NdisOpenAdapter(
+  /*OUT*/ PNDIS_STATUS  Status,
+  /*OUT*/ PNDIS_STATUS  OpenErrorStatus,
+  /*OUT*/ PNDIS_HANDLE  NdisBindingHandle,
+  /*OUT*/ PUINT  SelectedMediumIndex,
+  /*IN*/ PNDIS_MEDIUM  MediumArray,
+  /*IN*/ UINT  MediumArraySize,
+  /*IN*/ NDIS_HANDLE  NdisProtocolHandle,
+  /*IN*/ NDIS_HANDLE  ProtocolBindingContext,
+  /*IN*/ PNDIS_STRING  AdapterName,
+  /*IN*/ UINT  OpenOptions,
+  /*IN*/ PSTRING  AddressingInformation);
+
+NDISAPI
+VOID
+DDKAPI
+NdisOpenProtocolConfiguration(
+  /*OUT*/ PNDIS_STATUS  Status,
+  /*OUT*/ PNDIS_HANDLE  ConfigurationHandle,
+  /*IN*/ PNDIS_STRING  ProtocolSection);
+
+NDISAPI
+VOID
+DDKAPI
+NdisRegisterProtocol(
+  /*OUT*/ PNDIS_STATUS  Status,
+  /*OUT*/ PNDIS_HANDLE  NdisProtocolHandle,
+  /*IN*/ PNDIS_PROTOCOL_CHARACTERISTICS  ProtocolCharacteristics,
+  /*IN*/ UINT  CharacteristicsLength);
+
+/* Obsoleted in Windows XP */
+
+/* Prototypes for NDIS_MAC_CHARACTERISTICS */
+
+typedef NDIS_STATUS (*OPEN_ADAPTER_HANDLER)(
+  /*OUT*/ PNDIS_STATUS  OpenErrorStatus,
+  /*OUT*/ NDIS_HANDLE  *MacBindingHandle,
+  /*OUT*/ PUINT  SelectedMediumIndex,
+  /*IN*/ PNDIS_MEDIUM  MediumArray,
+  /*IN*/ UINT  MediumArraySize,
+  /*IN*/ NDIS_HANDLE  NdisBindingContext,
+  /*IN*/ NDIS_HANDLE  MacAdapterContext,
+  /*IN*/ UINT  OpenOptions,
+  /*IN*/ PSTRING  AddressingInformation  /*OPTIONAL*/);
+
+typedef NDIS_STATUS (DDKAPI *CLOSE_ADAPTER_HANDLER)(
+  /*IN*/ NDIS_HANDLE  MacBindingHandle);
+
+typedef NDIS_STATUS (DDKAPI *WAN_TRANSFER_DATA_HANDLER)(
+  VOID);
+
+typedef NDIS_STATUS (DDKAPI *QUERY_GLOBAL_STATISTICS_HANDLER)(
+  /*IN*/ NDIS_HANDLE  MacAdapterContext,
+  /*IN*/ PNDIS_REQUEST  NdisRequest);
+
+typedef VOID (DDKAPI *UNLOAD_MAC_HANDLER)(
+  /*IN*/ NDIS_HANDLE  MacMacContext);
+
+typedef NDIS_STATUS (DDKAPI *ADD_ADAPTER_HANDLER)(
+  /*IN*/ NDIS_HANDLE  MacMacContext,
+  /*IN*/ NDIS_HANDLE  WrapperConfigurationContext,
+  /*IN*/ PNDIS_STRING  AdapterName);
+
+typedef VOID (*REMOVE_ADAPTER_HANDLER)(
+  /*IN*/ NDIS_HANDLE  MacAdapterContext);
+
+typedef struct _NDIS_MAC_CHARACTERISTICS {
+  UCHAR  MajorNdisVersion;
+  UCHAR  MinorNdisVersion;
+  UINT  Reserved;
+  OPEN_ADAPTER_HANDLER  OpenAdapterHandler;
+  CLOSE_ADAPTER_HANDLER  CloseAdapterHandler;
+  SEND_HANDLER  SendHandler;
+  TRANSFER_DATA_HANDLER  TransferDataHandler;
+  RESET_HANDLER  ResetHandler;
+  REQUEST_HANDLER  RequestHandler;
+  QUERY_GLOBAL_STATISTICS_HANDLER  QueryGlobalStatisticsHandler;
+  UNLOAD_MAC_HANDLER  UnloadMacHandler;
+  ADD_ADAPTER_HANDLER  AddAdapterHandler;
+  REMOVE_ADAPTER_HANDLER  RemoveAdapterHandler;
+  NDIS_STRING  Name;
+} NDIS_MAC_CHARACTERISTICS, *PNDIS_MAC_CHARACTERISTICS;
+
+typedef	NDIS_MAC_CHARACTERISTICS        NDIS_WAN_MAC_CHARACTERISTICS;
+typedef	NDIS_WAN_MAC_CHARACTERISTICS    *PNDIS_WAN_MAC_CHARACTERISTICS;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __NDIS_H */
+
+/* EOF */
Index: Daodan/MinGW/include/ddk/ndisguid.h
===================================================================
--- Daodan/MinGW/include/ddk/ndisguid.h	(revision 1046)
+++ Daodan/MinGW/include/ddk/ndisguid.h	(revision 1046)
@@ -0,0 +1,439 @@
+/*
+ * ndisguid.h
+ *
+ * GUIDs for NDIS drivers
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __NDISGUID_H
+#define __NDISGUID_H
+
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+DEFINE_GUID(GUID_NDIS_LAN_CLASS,
+  0xad498944, 0x762f, 0x11d0, 0x8d, 0xcb, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_ENUMERATE_ADAPTER,
+  0x981f2d7f, 0xb1f3, 0x11d0, 0x8d, 0xd7, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_ENUMERATE_VC,
+  0x981f2d82, 0xb1f3, 0x11d0, 0x8d, 0xd7, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_NOTIFY_ADAPTER_ARRIVAL,
+  0x981f2d81, 0xb1f3, 0x11d0, 0x8d, 0xd7, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_NOTIFY_ADAPTER_REMOVAL,
+  0x981f2d80, 0xb1f3, 0x11d0, 0x8d, 0xd7, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_NOTIFY_VC_ARRIVAL,
+  0x182f9e0c, 0xb1f3, 0x11d0, 0x8d, 0xd7, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_NOTIFY_VC_REMOVAL,
+  0x981f2d79, 0xb1f3, 0x11d0, 0x8d, 0xd7, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_NOTIFY_BIND,
+  0x5413531c, 0xb1f3, 0x11d0, 0x8d, 0xd7, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_NOTIFY_UNBIND,
+  0x6e3ce1ec, 0xb1f3, 0x11d0, 0x8d, 0xd7, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_WAKE_ON_MAGIC_PACKET_ONLY,
+  0xa14f1c97, 0x8839, 0x4f8a, 0x99, 0x96, 0xa2, 0x89, 0x96, 0xeb, 0xbf, 0x1d);
+
+
+DEFINE_GUID(GUID_NDIS_802_3_CURRENT_ADDRESS,
+  0x44795700, 0xa61b, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_802_3_MAC_OPTIONS,
+  0x44795703, 0xa61b, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_802_3_MAXIMUM_LIST_SIZE,
+  0x44795702, 0xa61b, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_802_3_MULTICAST_LIST,
+  0x44795701, 0xa61b, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_802_3_PERMANENT_ADDRESS,
+  0x447956ff, 0xa61b, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_802_3_RCV_ERROR_ALIGNMENT,
+  0x44795704, 0xa61b, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_802_3_XMIT_MORE_COLLISIONS,
+  0x44795706, 0xa61b, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_802_3_XMIT_ONE_COLLISION,
+  0x44795705, 0xa61b, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_802_5_CURRENT_ADDRESS,
+  0x44795708, 0xa61b, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_802_5_CURRENT_FUNCTIONAL,
+  0x44795709, 0xa61b, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_802_5_CURRENT_GROUP,
+  0x4479570a, 0xa61b, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_802_5_CURRENT_RING_STATE,
+  0xacf14032, 0xa61c, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_802_5_CURRENT_RING_STATUS,
+  0x890a36ec, 0xa61c, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_802_5_LAST_OPEN_STATUS,
+  0x4479570b, 0xa61b, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_802_5_PERMANENT_ADDRESS,
+  0x44795707, 0xa61b, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_802_5_LINE_ERRORS,
+  0xacf14033, 0xa61c, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_802_5_LOST_FRAMES,
+  0xacf14034, 0xa61c, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+
+DEFINE_GUID(GUID_NDIS_802_11_ADD_WEP,
+  0x4307bff0, 0x2129, 0x11d4, 0x97, 0xeb, 0x00, 0xc0, 0x4f, 0x79, 0xc4, 0x03);
+
+DEFINE_GUID(GUID_NDIS_802_11_AUTHENTICATION_MODE,
+  0x43920a24, 0x2129, 0x11d4, 0x97, 0xeb, 0x00, 0xc0, 0x4f, 0x79, 0xc4, 0x03);
+
+DEFINE_GUID(GUID_NDIS_802_11_BSSID,
+  0x2504b6c2, 0x1fa5, 0x11d4, 0x97, 0xeb, 0x00, 0xc0, 0x4f, 0x79, 0xc4, 0x03);
+
+DEFINE_GUID(GUID_NDIS_802_11_BSSID_LIST,
+  0x69526f9a, 0x2062, 0x11d4, 0x97, 0xeb, 0x00, 0xc0, 0x4f, 0x79, 0xc4, 0x03);
+
+DEFINE_GUID(GUID_NDIS_802_11_BASIC_RATES,
+  0x4a198516, 0x2068, 0x11d4, 0x97, 0xeb, 0x00, 0xc0, 0x4f, 0x79, 0xc4, 0x03);
+
+DEFINE_GUID(GUID_NDIS_802_11_CONFIGURATION,
+  0x4a4df982, 0x2068, 0x11d4, 0x97, 0xeb, 0x00, 0xc0, 0x4f, 0x79, 0xc4, 0x03);
+
+DEFINE_GUID(GUID_NDIS_802_11_DESIRED_RATES,
+  0x452ee08e, 0x2536, 0x11d4, 0x97, 0xeb, 0x00, 0xc0, 0x4f, 0x79, 0xc4, 0x03);
+
+DEFINE_GUID(GUID_NDIS_802_11_DISASSOCIATE,
+  0x43671f40, 0x2129, 0x11d4, 0x97, 0xeb, 0x00, 0xc0, 0x4f, 0x79, 0xc4, 0x03);
+
+DEFINE_GUID(GUID_NDIS_802_11_FRAGMENTATION_THRESHOLD,
+  0x69aaa7c4, 0x2062, 0x11d4, 0x97, 0xeb, 0x00, 0xc0, 0x4f, 0x79, 0xc4, 0x03);
+
+DEFINE_GUID(GUID_NDIS_802_11_INFRASTRUCTURE_MODE,
+  0x697d5a7e, 0x2062, 0x11d4, 0x97, 0xeb, 0x00, 0xc0, 0x4f, 0x79, 0xc4, 0x03);
+
+DEFINE_GUID(GUID_NDIS_802_11_NETWORK_TYPES_SUPPORTED,
+  0x8531d6e6, 0x2041, 0x11d4, 0x97, 0xeb, 0x00, 0xc0, 0x4f, 0x79, 0xc4, 0x03);
+
+DEFINE_GUID(GUID_NDIS_802_11_NETWORK_TYPE_IN_USE,
+  0x857e2326, 0x2041, 0x11d4, 0x97, 0xeb, 0x00, 0xc0, 0x4f, 0x79, 0xc4, 0x03);
+
+DEFINE_GUID(GUID_NDIS_802_11_NUMBER_OF_ANTENNAS,
+  0x01779336, 0x2064, 0x11d4, 0x97, 0xeb, 0x00, 0xc0, 0x4f, 0x79, 0xc4, 0x03);
+
+DEFINE_GUID(GUID_NDIS_802_11_POWER_MODE,
+  0x85be837c, 0x2041, 0x11d4, 0x97, 0xeb, 0x00, 0xc0, 0x4f, 0x79, 0xc4, 0x03);
+
+DEFINE_GUID(GUID_NDIS_802_11_RATES_SUPPORTED,
+  0x49db8722, 0x2068, 0x11d4, 0x97, 0xeb, 0x00, 0xc0, 0x4f, 0x79, 0xc4, 0x03);
+
+DEFINE_GUID(GUID_NDIS_802_11_REMOVE_WEP,
+  0x433c345c, 0x2129, 0x11d4, 0x97, 0xeb, 0x00, 0xc0, 0x4f, 0x79, 0xc4, 0x03);
+
+DEFINE_GUID(GUID_NDIS_802_11_PRIVACY_FILTER,
+  0x6733c4e9, 0x4792, 0x11d4, 0x97, 0xf1, 0x00, 0xc0, 0x4f, 0x79, 0xc4, 0x03);
+
+DEFINE_GUID(GUID_NDIS_802_11_RSSI,
+  0x1507db16, 0x2053, 0x11d4, 0x97, 0xeb, 0x00, 0xc0, 0x4f, 0x79, 0xc4, 0x03);
+
+DEFINE_GUID(GUID_NDIS_802_11_RSSI_TRIGGER,
+  0x155689b8, 0x2053, 0x11d4, 0x97, 0xeb, 0x00, 0xc0, 0x4f, 0x79, 0xc4, 0x03);
+
+DEFINE_GUID(GUID_NDIS_802_11_RTS_THRESHOLD,
+  0x0134d07e, 0x2064, 0x11d4, 0x97, 0xeb, 0x00, 0xc0, 0x4f, 0x79, 0xc4, 0x03);
+
+DEFINE_GUID(GUID_NDIS_802_11_RX_ANTENNA_SELECTED,
+  0x01ac07a2, 0x2064, 0x11d4, 0x97, 0xeb, 0x00, 0xc0, 0x4f, 0x79, 0xc4, 0x03);
+
+DEFINE_GUID(GUID_NDIS_802_11_SSID,
+  0x7d2a90ea, 0x2041, 0x11d4, 0x97, 0xeb, 0x00, 0xc0, 0x4f, 0x79, 0xc4, 0x03);
+
+DEFINE_GUID(GUID_NDIS_802_11_STATISTICS,
+  0x42bb73b0, 0x2129, 0x11d4, 0x97, 0xeb, 0x00, 0xc0, 0x4f, 0x79, 0xc4, 0x03);
+
+DEFINE_GUID(GUID_NDIS_802_11_TX_POWER_LEVEL,
+  0x11e6ba76, 0x2053, 0x11d4, 0x97, 0xeb, 0x00, 0xc0, 0x4f, 0x79, 0xc4, 0x03);
+
+DEFINE_GUID(GUID_NDIS_802_11_TX_ANTENNA_SELECTED,
+  0x01dbb74a, 0x2064, 0x11d4, 0x97, 0xeb, 0x00, 0xc0, 0x4f, 0x79, 0xc4, 0x03);
+
+
+DEFINE_GUID(GUID_NDIS_ATM_HW_CURRENT_ADDRESS,
+  0x791ad1a1, 0xe35c, 0x11d0, 0x96, 0x92, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_ATM_MAX_AAL0_PACKET_SIZE,
+  0x791ad1a5, 0xe35c, 0x11d0, 0x96, 0x92, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_ATM_MAX_AAL1_PACKET_SIZE,
+  0x791ad1a6, 0xe35c, 0x11d0, 0x96, 0x92, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_ATM_MAX_AAL34_PACKET_SIZE,
+  0x791ad1a7, 0xe35c, 0x11d0, 0x96, 0x92, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_ATM_MAX_AAL5_PACKET_SIZE,
+  0x791ad191, 0xe35c, 0x11d0, 0x96, 0x92, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_ATM_MAX_ACTIVE_VCI_BITS,
+  0x791ad1a3, 0xe35c, 0x11d0, 0x96, 0x92, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_ATM_MAX_ACTIVE_VCS,
+  0x791ad1a2, 0xe35c, 0x11d0, 0x96, 0x92, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_ATM_MAX_ACTIVE_VPI_BITS,
+  0x791ad1a4, 0xe35c, 0x11d0, 0x96, 0x92, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_ATM_SUPPORTED_AAL_TYPES,
+  0x791ad1a0, 0xe35c, 0x11d0, 0x96, 0x92, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_ATM_SUPPORTED_SERVICE_CATEGORY,
+  0x791ad19f, 0xe35c, 0x11d0, 0x96, 0x92, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_ATM_SUPPORTED_VC_RATES,
+  0x791ad19e, 0xe35c, 0x11d0, 0x96, 0x92, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+
+DEFINE_GUID(GUID_NDIS_ATM_RCV_CELLS_DROPPED,
+  0x0a21480c, 0xe35f, 0x11d0, 0x96, 0x92, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_ATM_RCV_CELLS_OK,
+  0x0a21480a, 0xe35f, 0x11d0, 0x96, 0x92, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_ATM_XMIT_CELLS_OK,
+  0x0a21480b, 0xe35f, 0x11d0, 0x96, 0x92, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+
+DEFINE_GUID(GUID_NDIS_FDDI_LONG_CURRENT_ADDR,
+  0xacf14036, 0xa61c, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_FDDI_LONG_MAX_LIST_SIZE,
+  0xacf14038, 0xa61c, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_FDDI_LONG_MULTICAST_LIST,
+  0xacf14037, 0xa61c, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_FDDI_LONG_PERMANENT_ADDR,
+  0xacf14035, 0xa61c, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_FDDI_SHORT_CURRENT_ADDR,
+  0xacf1403a, 0xa61c, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_FDDI_SHORT_MAX_LIST_SIZE,
+  0xacf1403c, 0xa61c, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_FDDI_SHORT_MULTICAST_LIST,
+  0xacf1403b, 0xa61c, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_FDDI_SHORT_PERMANENT_ADDR,
+  0xacf14039, 0xa61c, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+
+DEFINE_GUID(GUID_NDIS_FDDI_ATTACHMENT_TYPE,
+  0xacf1403d, 0xa61c, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_FDDI_DOWNSTREAM_NODE_LONG,
+  0xacf1403f, 0xa61c, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_FDDI_FRAME_ERRORS,
+  0xacf14040, 0xa61c, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_FDDI_FRAMES_LOST,
+  0xacf14041, 0xa61c, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_FDDI_LCT_FAILURES,
+  0xacf14043, 0xa61c, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_FDDI_LCONNECTION_STATE,
+  0xacf14045, 0xa61c, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_FDDI_LEM_REJECTS,
+  0xacf14044, 0xa61c, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_FDDI_RING_MGT_STATE,
+  0xacf14042, 0xa61c, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_FDDI_UPSTREAM_NODE_LONG,
+  0xacf1403e, 0xa61c, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+
+DEFINE_GUID(GUID_NDIS_GEN_CURRENT_LOOKAHEAD,
+  0x5ec10361, 0xa61a, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_GEN_CURRENT_PACKET_FILTER,
+  0x5ec10360, 0xa61a, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_GEN_DRIVER_VERSION,
+  0x5ec10362, 0xa61a, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_GEN_HARDWARE_STATUS,
+  0x5ec10354, 0xa61a, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_GEN_MEDIA_IN_USE,
+  0x5ec10356, 0xa61a, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_GEN_MEDIA_SUPPORTED,
+  0x5ec10355, 0xa61a, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_GEN_LINK_SPEED,
+  0x5ec10359, 0xa61a, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_GEN_MAC_OPTIONS,
+  0x5ec10365, 0xa61a, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_GEN_MAXIMUM_LOOKAHEAD,
+  0x5ec10357, 0xa61a, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_GEN_MAXIMUM_FRAME_SIZE,
+  0x5ec10358, 0xa61a, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_GEN_MAXIMUM_SEND_PACKETS,
+  0x5ec10367, 0xa61a, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_GEN_MAXIMUM_TOTAL_SIZE,
+  0x5ec10363, 0xa61a, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_GEN_MEDIA_CONNECT_STATUS,
+  0x5ec10366, 0xa61a, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_GEN_RECEIVE_BLOCK_SIZE,
+  0x5ec1035d, 0xa61a, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_GEN_RECEIVE_BUFFER_SPACE,
+  0x5ec1035b, 0xa61a, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_GEN_TRANSMIT_BUFFER_SPACE,
+  0x5ec1035a, 0xa61a, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_GEN_TRANSMIT_BLOCK_SIZE,
+  0x5ec1035c, 0xa61a, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_GEN_VENDOR_DESCRIPTION,
+  0x5ec1035f, 0xa61a, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_GEN_VENDOR_DRIVER_VERSION,
+  0x447956f9, 0xa61b, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_GEN_VENDOR_ID,
+  0x5ec1035e, 0xa61a, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+
+DEFINE_GUID(GUID_NDIS_GEN_RCV_ERROR,
+  0x447956fd, 0xa61b, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_GEN_RCV_NO_BUFFER,
+  0x447956fe, 0xa61b, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_GEN_RCV_OK,
+  0x447956fb, 0xa61b, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_GEN_XMIT_ERROR,
+  0x447956fc, 0xa61b, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_GEN_XMIT_OK,
+  0x447956fa, 0xa61b, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+
+DEFINE_GUID(GUID_NDIS_GEN_CO_DRIVER_VERSION,
+  0x791ad198, 0xe35c, 0x11d0, 0x96, 0x92, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_GEN_CO_HARDWARE_STATUS,
+  0x791ad192, 0xe35c, 0x11d0, 0x96, 0x92, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_GEN_CO_LINK_SPEED,
+  0x791ad195, 0xe35c, 0x11d0, 0x96, 0x92, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_GEN_CO_MAC_OPTIONS,
+  0x791ad19a, 0xe35c, 0x11d0, 0x96, 0x92, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_GEN_CO_MEDIA_SUPPORTED,
+  0x791ad193, 0xe35c, 0x11d0, 0x96, 0x92, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_GEN_CO_MEDIA_IN_USE,
+  0x791ad194, 0xe35c, 0x11d0, 0x96, 0x92, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_GEN_CO_MEDIA_CONNECT_STATUS,
+  0x791ad19b, 0xe35c, 0x11d0, 0x96, 0x92, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_GEN_CO_MINIMUM_LINK_SPEED,
+  0x791ad19d, 0xe35c, 0x11d0, 0x96, 0x92, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_GEN_CO_VENDOR_DESCRIPTION,
+  0x791ad197, 0xe35c, 0x11d0, 0x96, 0x92, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_GEN_CO_VENDOR_DRIVER_VERSION,
+  0x791ad19c, 0xe35c, 0x11d0, 0x96, 0x92, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_GEN_CO_VENDOR_ID,
+  0x791ad196, 0xe35c, 0x11d0, 0x96, 0x92, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+
+DEFINE_GUID(GUID_NDIS_GEN_CO_RCV_PDUS_ERROR,
+  0x0a214808, 0xe35f, 0x11d0, 0x96, 0x92, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_GEN_CO_RCV_PDUS_OK,
+  0x0a214806, 0xe35f, 0x11d0, 0x96, 0x92, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_GEN_CO_RCV_PDUS_NO_BUFFER,
+  0x0a214809, 0xe35f, 0x11d0, 0x96, 0x92, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_GEN_CO_XMIT_PDUS_ERROR,
+  0x0a214807, 0xe35f, 0x11d0, 0x96, 0x92, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_GEN_CO_XMIT_PDUS_OK,
+  0x0a214805, 0xe35f, 0x11d0, 0x96, 0x92, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+
+DEFINE_GUID(GUID_NDIS_STATUS_LINK_SPEED_CHANGE,
+  0x981f2d85, 0xb1f3, 0x11d0, 0x8d, 0xd7, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_STATUS_MEDIA_CONNECT,
+  0x981f2d7d, 0xb1f3, 0x11d0, 0x8d, 0xd7, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_STATUS_MEDIA_DISCONNECT,
+  0x981f2d7e, 0xb1f3, 0x11d0, 0x8d, 0xd7, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_STATUS_MEDIA_SPECIFIC_INDICATION,
+  0x981f2d84, 0xb1f3, 0x11d0, 0x8d, 0xd7, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_STATUS_RESET_END,
+  0x981f2d77, 0xb1f3, 0x11d0, 0x8d, 0xd7, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+DEFINE_GUID(GUID_NDIS_STATUS_RESET_START,
+  0x981f2d76, 0xb1f3, 0x11d0, 0x8d, 0xd7, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __NDISGUID_H */
Index: Daodan/MinGW/include/ddk/ndistapi.h
===================================================================
--- Daodan/MinGW/include/ddk/ndistapi.h	(revision 1046)
+++ Daodan/MinGW/include/ddk/ndistapi.h	(revision 1046)
@@ -0,0 +1,1308 @@
+/*
+ * ndistapi.h
+ *
+ * NDIS Telephony API
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __NDISTAPI_H
+#define __NDISTAPI_H
+
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "ndis.h"
+
+#ifndef NDIS_TAPI_CURRENT_VERSION
+#define NDIS_TAPI_CURRENT_VERSION         0x00010003
+#endif
+
+typedef ULONG_PTR HTAPI_LINE;
+typedef ULONG_PTR HDRV_LINE;
+typedef ULONG_PTR HTAPI_CALL;
+typedef ULONG_PTR HDRV_CALL;
+
+#define NDIS_STATUS_TAPI_ADDRESSBLOCKED               ((NDIS_STATUS)0xC0012000L)
+#define NDIS_STATUS_TAPI_BEARERMODEUNAVAIL            ((NDIS_STATUS)0xC0012001L)
+#define NDIS_STATUS_TAPI_CALLUNAVAIL                  ((NDIS_STATUS)0xC0012002L)
+#define NDIS_STATUS_TAPI_DIALBILLING                  ((NDIS_STATUS)0xC0012003L)
+#define NDIS_STATUS_TAPI_DIALDIALTONE                 ((NDIS_STATUS)0xC0012004L)
+#define NDIS_STATUS_TAPI_DIALPROMPT                   ((NDIS_STATUS)0xC0012005L)
+#define NDIS_STATUS_TAPI_DIALQUIET                    ((NDIS_STATUS)0xC0012006L)
+#define NDIS_STATUS_TAPI_INCOMPATIBLEEXTVERSION       ((NDIS_STATUS)0xC0012007L)
+#define NDIS_STATUS_TAPI_INUSE                        ((NDIS_STATUS)0xC0012008L)
+#define NDIS_STATUS_TAPI_INVALADDRESS                 ((NDIS_STATUS)0xC0012009L)
+#define NDIS_STATUS_TAPI_INVALADDRESSID               ((NDIS_STATUS)0xC001200AL)
+#define NDIS_STATUS_TAPI_INVALADDRESSMODE             ((NDIS_STATUS)0xC001200BL)
+#define NDIS_STATUS_TAPI_INVALBEARERMODE              ((NDIS_STATUS)0xC001200CL)
+#define NDIS_STATUS_TAPI_INVALCALLHANDLE              ((NDIS_STATUS)0xC001200DL)
+#define NDIS_STATUS_TAPI_INVALCALLPARAMS              ((NDIS_STATUS)0xC001200EL)
+#define NDIS_STATUS_TAPI_INVALCALLSTATE               ((NDIS_STATUS)0xC001200FL)
+#define NDIS_STATUS_TAPI_INVALDEVICECLASS             ((NDIS_STATUS)0xC0012010L)
+#define NDIS_STATUS_TAPI_INVALLINEHANDLE              ((NDIS_STATUS)0xC0012011L)
+#define NDIS_STATUS_TAPI_INVALLINESTATE               ((NDIS_STATUS)0xC0012012L)
+#define NDIS_STATUS_TAPI_INVALMEDIAMODE               ((NDIS_STATUS)0xC0012013L)
+#define NDIS_STATUS_TAPI_INVALRATE                    ((NDIS_STATUS)0xC0012014L)
+#define NDIS_STATUS_TAPI_NODRIVER                     ((NDIS_STATUS)0xC0012015L)
+#define NDIS_STATUS_TAPI_OPERATIONUNAVAIL             ((NDIS_STATUS)0xC0012016L)
+#define NDIS_STATUS_TAPI_RATEUNAVAIL                  ((NDIS_STATUS)0xC0012017L)
+#define NDIS_STATUS_TAPI_RESOURCEUNAVAIL              ((NDIS_STATUS)0xC0012018L)
+#define NDIS_STATUS_TAPI_STRUCTURETOOSMALL            ((NDIS_STATUS)0xC0012019L)
+#define NDIS_STATUS_TAPI_USERUSERINFOTOOBIG           ((NDIS_STATUS)0xC001201AL)
+#define NDIS_STATUS_TAPI_ALLOCATED                    ((NDIS_STATUS)0xC001201BL)
+#define NDIS_STATUS_TAPI_INVALADDRESSSTATE            ((NDIS_STATUS)0xC001201CL)
+#define NDIS_STATUS_TAPI_INVALPARAM                   ((NDIS_STATUS)0xC001201DL)
+#define NDIS_STATUS_TAPI_NODEVICE                     ((NDIS_STATUS)0xC001201EL)
+#define NDIS_STATUS_TAPI_DISCONNECTMODE_NORMAL        ((NDIS_STATUS)0xC0012020L)
+#define NDIS_STATUS_TAPI_DISCONNECTMODE_UNKNOWN       ((NDIS_STATUS)0xC0012021L)
+#define NDIS_STATUS_TAPI_DISCONNECTMODE_REJECT        ((NDIS_STATUS)0xC0012022L)
+#define NDIS_STATUS_TAPI_DISCONNECTMODE_PICKUP        ((NDIS_STATUS)0xC0012023L)
+#define NDIS_STATUS_TAPI_DISCONNECTMODE_FORWARDED     ((NDIS_STATUS)0xC0012024L)
+#define NDIS_STATUS_TAPI_DISCONNECTMODE_BUSY          ((NDIS_STATUS)0xC0012025L)
+#define NDIS_STATUS_TAPI_DISCONNECTMODE_NOANSWER      ((NDIS_STATUS)0xC0012026L)
+#define NDIS_STATUS_TAPI_DISCONNECTMODE_BADADDRESS    ((NDIS_STATUS)0xC0012027L)
+#define NDIS_STATUS_TAPI_DISCONNECTMODE_UNREACHABLE   ((NDIS_STATUS)0xC0012028L)
+#define NDIS_STATUS_TAPI_DISCONNECTMODE_CONGESTION    ((NDIS_STATUS)0xC0012029L)
+#define NDIS_STATUS_TAPI_DISCONNECTMODE_INCOMPATIBLE  ((NDIS_STATUS)0xC001202AL)
+#define NDIS_STATUS_TAPI_DISCONNECTMODE_UNAVAIL       ((NDIS_STATUS)0xC001202BL)
+#define NDIS_STATUS_TAPI_RECV_DIGIT					          ((NDIS_STATUS)0x40010020L)
+
+#define LINE_ADDRESSSTATE                 0L
+#define LINE_CALLINFO                     1L
+#define LINE_CALLSTATE                    2L
+#define LINE_CLOSE                        3L
+#define LINE_DEVSPECIFIC                  4L
+#define LINE_DEVSPECIFICFEATURE           5L
+#define LINE_GATHERDIGITS                 6L
+#define LINE_GENERATE                     7L
+#define LINE_LINEDEVSTATE                 8L
+#define LINE_MONITORDIGITS                9L
+#define LINE_MONITORMEDIA                 10L
+#define LINE_MONITORTONE                  11L
+#define LINE_REPLY                        12L
+#define LINE_REQUEST                      13L
+#define LINE_CREATE                       19L
+#if (NDIS_TAPI_CURRENT_VERSION >= 0x00020000)
+#define LINE_AGENTSPECIFIC                21L
+#define LINE_AGENTSTATUS                  22L
+#define LINE_APPNEWCALL                   23L
+#define LINE_PROXYREQUEST                 24L
+#define LINE_REMOVE                       25L
+#endif
+#if (NDIS_TAPI_CURRENT_VERSION >= 0x00020002)
+#define LINE_AGENTSESSIONSTATUS           27L
+#define LINE_QUEUESTATUS                  28L
+#define LINE_AGENTSTATUSEX                29L
+#define LINE_GROUPSTATUS                  30L
+#define LINE_PROXYSTATUS                  31L
+#endif
+#if (TAPI_CURRENT_VERSION >= 0x00030000)
+#define LINE_APPNEWCALLHUB                32L
+#define LINE_CALLHUBCLOSE                 33L
+#define LINE_DEVSPECIFICEX                34L
+#endif
+
+#define TSPI_MESSAGE_BASE                 500L
+#define LINE_NEWCALL                      TSPI_MESSAGE_BASE
+#define LINE_CALLDEVSPECIFIC              (TSPI_MESSAGE_BASE + 1L)
+#define STRINGFORMAT_ASCII                0x00000001
+#define STRINGFORMAT_DBCS                 0x00000002
+#define STRINGFORMAT_UNICODE              0x00000003
+#define STRINGFORMAT_BINARY               0x00000004
+
+#define LINEADDRCAPFLAGS_FWDNUMRINGS      0x00000001
+#define LINEADDRCAPFLAGS_PICKUPGROUPID    0x00000002
+#define LINEADDRCAPFLAGS_SECURE           0x00000004
+#define LINEADDRCAPFLAGS_BLOCKIDDEFAULT   0x00000008
+#define LINEADDRCAPFLAGS_BLOCKIDOVERRIDE  0x00000010
+#define LINEADDRCAPFLAGS_DIALED           0x00000020
+#define LINEADDRCAPFLAGS_ORIGOFFHOOK      0x00000040
+#define LINEADDRCAPFLAGS_DESTOFFHOOK      0x00000080
+#define LINEADDRCAPFLAGS_FWDCONSULT       0x00000100
+#define LINEADDRCAPFLAGS_SETUPCONFNULL    0x00000200
+#define LINEADDRCAPFLAGS_AUTORECONNECT    0x00000400
+#define LINEADDRCAPFLAGS_COMPLETIONID     0x00000800
+#define LINEADDRCAPFLAGS_TRANSFERHELD     0x00001000
+#define LINEADDRCAPFLAGS_TRANSFERMAKE     0x00002000
+#define LINEADDRCAPFLAGS_CONFERENCEHELD   0x00004000
+#define LINEADDRCAPFLAGS_CONFERENCEMAKE   0x00008000
+#define LINEADDRCAPFLAGS_PARTIALDIAL      0x00010000
+#define LINEADDRCAPFLAGS_FWDSTATUSVALID   0x00020000
+#define LINEADDRCAPFLAGS_FWDINTEXTADDR    0x00040000
+#define LINEADDRCAPFLAGS_FWDBUSYNAADDR    0x00080000
+#define LINEADDRCAPFLAGS_ACCEPTTOALERT    0x00100000
+#define LINEADDRCAPFLAGS_CONFDROP         0x00200000
+#define LINEADDRCAPFLAGS_PICKUPCALLWAIT   0x00400000
+#if (NDIS_TAPI_CURRENT_VERSION >= 0x00020000)
+#define LINEADDRCAPFLAGS_PREDICTIVEDIALER 0x00800000
+#define LINEADDRCAPFLAGS_QUEUE            0x01000000
+#define LINEADDRCAPFLAGS_ROUTEPOINT       0x02000000
+#define LINEADDRCAPFLAGS_HOLDMAKESNEW     0x04000000
+#define LINEADDRCAPFLAGS_NOINTERNALCALLS  0x08000000
+#define LINEADDRCAPFLAGS_NOEXTERNALCALLS  0x10000000
+#define LINEADDRCAPFLAGS_SETCALLINGID     0x20000000
+#endif
+#if (NDIS_TAPI_CURRENT_VERSION >= 0x00030000)
+#define LINEADDRCAPFLAGS_ACDGROUP         0x40000000
+#define LINEADDRCAPFLAGS_NOPSTNADDRESSTRANSLATION \
+                                          0x80000000
+#endif
+
+#define LINEADDRESSMODE_ADDRESSID         0x00000001
+#define LINEADDRESSMODE_DIALABLEADDR      0x00000002
+#define LINEADDRESSSHARING_PRIVATE        0x00000001
+#define LINEADDRESSSHARING_BRIDGEDEXCL    0x00000002
+#define LINEADDRESSSHARING_BRIDGEDNEW     0x00000004
+#define LINEADDRESSSHARING_BRIDGEDSHARED  0x00000008
+#define LINEADDRESSSHARING_MONITORED      0x00000010
+#define LINEADDRESSSTATE_OTHER            0x00000001
+#define LINEADDRESSSTATE_DEVSPECIFIC      0x00000002
+#define LINEADDRESSSTATE_INUSEZERO        0x00000004
+#define LINEADDRESSSTATE_INUSEONE         0x00000008
+#define LINEADDRESSSTATE_INUSEMANY        0x00000010
+#define LINEADDRESSSTATE_NUMCALLS         0x00000020
+#define LINEADDRESSSTATE_FORWARD          0x00000040
+#define LINEADDRESSSTATE_TERMINALS        0x00000080
+
+#if (NDIS_TAPI_CURRENT_VERSION >= 0x00030000)
+#define LINEADDRESSTYPE_PHONENUMBER       0x00000001
+#define LINEADDRESSTYPE_SDP               0x00000002
+#define LINEADDRESSTYPE_EMAILNAME         0x00000004
+#define LINEADDRESSTYPE_DOMAINNAME        0x00000008
+#define LINEADDRESSTYPE_IPADDRESS         0x00000010
+#endif
+
+#define LINEADDRFEATURE_FORWARD           0x00000001
+#define LINEADDRFEATURE_MAKECALL          0x00000002
+#define LINEADDRFEATURE_PICKUP            0x00000004
+#define LINEADDRFEATURE_SETMEDIACONTROL   0x00000008
+#define LINEADDRFEATURE_SETTERMINAL       0x00000010
+#define LINEADDRFEATURE_SETUPCONF         0x00000020
+#define LINEADDRFEATURE_UNCOMPLETECALL    0x00000040
+#define LINEADDRFEATURE_UNPARK            0x00000080
+#if (NDIS_TAPI_CURRENT_VERSION >= 0x00020000)
+#define LINEADDRFEATURE_PICKUPHELD        0x00000100
+#define LINEADDRFEATURE_PICKUPGROUP       0x00000200
+#define LINEADDRFEATURE_PICKUPDIRECT      0x00000400
+#define LINEADDRFEATURE_PICKUPWAITING     0x00000800
+#define LINEADDRFEATURE_FORWARDFWD        0x00001000
+#define LINEADDRFEATURE_FORWARDDND        0x00002000
+#endif
+
+#define LINEANSWERMODE_NONE               0x00000001
+#define LINEANSWERMODE_DROP               0x00000002
+#define LINEANSWERMODE_HOLD               0x00000004
+
+#define LINEBEARERMODE_VOICE              0x00000001
+#define LINEBEARERMODE_SPEECH             0x00000002
+#define LINEBEARERMODE_MULTIUSE           0x00000004
+#define LINEBEARERMODE_DATA               0x00000008
+#define LINEBEARERMODE_ALTSPEECHDATA      0x00000010
+#define LINEBEARERMODE_NONCALLSIGNALING   0x00000020
+#define LINEBEARERMODE_PASSTHROUGH        0x00000040
+#if (NDIS_TAPI_CURRENT_VERSION >= 0x00020000)
+#define LINEBEARERMODE_RESTRICTEDDATA     0x00000080
+#endif
+
+#define LINEBUSYMODE_STATION              0x00000001
+#define LINEBUSYMODE_TRUNK                0x00000002
+#define LINEBUSYMODE_UNKNOWN              0x00000004
+#define LINEBUSYMODE_UNAVAIL              0x00000008
+
+#define LINECALLCOMPLCOND_BUSY            0x00000001
+#define LINECALLCOMPLCOND_NOANSWER        0x00000002
+
+#define LINECALLCOMPLMODE_CAMPON          0x00000001
+#define LINECALLCOMPLMODE_CALLBACK        0x00000002
+#define LINECALLCOMPLMODE_INTRUDE         0x00000004
+#define LINECALLCOMPLMODE_MESSAGE         0x00000008
+
+#define LINECALLFEATURE_ACCEPT            0x00000001
+#define LINECALLFEATURE_ADDTOCONF         0x00000002
+#define LINECALLFEATURE_ANSWER            0x00000004
+#define LINECALLFEATURE_BLINDTRANSFER     0x00000008
+#define LINECALLFEATURE_COMPLETECALL      0x00000010
+#define LINECALLFEATURE_COMPLETETRANSF    0x00000020
+#define LINECALLFEATURE_DIAL              0x00000040
+#define LINECALLFEATURE_DROP              0x00000080
+#define LINECALLFEATURE_GATHERDIGITS      0x00000100
+#define LINECALLFEATURE_GENERATEDIGITS    0x00000200
+#define LINECALLFEATURE_GENERATETONE      0x00000400
+#define LINECALLFEATURE_HOLD              0x00000800
+#define LINECALLFEATURE_MONITORDIGITS     0x00001000
+#define LINECALLFEATURE_MONITORMEDIA      0x00002000
+#define LINECALLFEATURE_MONITORTONES      0x00004000
+#define LINECALLFEATURE_PARK              0x00008000
+#define LINECALLFEATURE_PREPAREADDCONF    0x00010000
+#define LINECALLFEATURE_REDIRECT          0x00020000
+#define LINECALLFEATURE_REMOVEFROMCONF    0x00040000
+#define LINECALLFEATURE_SECURECALL        0x00080000
+#define LINECALLFEATURE_SENDUSERUSER      0x00100000
+#define LINECALLFEATURE_SETCALLPARAMS     0x00200000
+#define LINECALLFEATURE_SETMEDIACONTROL   0x00400000
+#define LINECALLFEATURE_SETTERMINAL       0x00800000
+#define LINECALLFEATURE_SETUPCONF         0x01000000
+#define LINECALLFEATURE_SETUPTRANSFER     0x02000000
+#define LINECALLFEATURE_SWAPHOLD          0x04000000
+#define LINECALLFEATURE_UNHOLD            0x08000000
+#define LINECALLFEATURE_RELEASEUSERUSERINFO \
+                                          0x10000000
+#if (NDIS_TAPI_CURRENT_VERSION >= 0x00020000)
+#define LINECALLFEATURE_SETTREATMENT      0x20000000
+#define LINECALLFEATURE_SETQOS            0x40000000
+#define LINECALLFEATURE_SETCALLDATA       0x80000000
+#endif
+
+#define LINECALLINFOSTATE_OTHER           0x00000001
+#define LINECALLINFOSTATE_DEVSPECIFIC     0x00000002
+#define LINECALLINFOSTATE_BEARERMODE      0x00000004
+#define LINECALLINFOSTATE_RATE            0x00000008
+#define LINECALLINFOSTATE_MEDIAMODE       0x00000010
+#define LINECALLINFOSTATE_APPSPECIFIC     0x00000020
+#define LINECALLINFOSTATE_CALLID          0x00000040
+#define LINECALLINFOSTATE_RELATEDCALLID   0x00000080
+#define LINECALLINFOSTATE_ORIGIN          0x00000100
+#define LINECALLINFOSTATE_REASON          0x00000200
+#define LINECALLINFOSTATE_COMPLETIONID    0x00000400
+#define LINECALLINFOSTATE_NUMOWNERINCR    0x00000800
+#define LINECALLINFOSTATE_NUMOWNERDECR    0x00001000
+#define LINECALLINFOSTATE_NUMMONITORS     0x00002000
+#define LINECALLINFOSTATE_TRUNK           0x00004000
+#define LINECALLINFOSTATE_CALLERID        0x00008000
+#define LINECALLINFOSTATE_CALLEDID        0x00010000
+#define LINECALLINFOSTATE_CONNECTEDID     0x00020000
+#define LINECALLINFOSTATE_REDIRECTIONID   0x00040000
+#define LINECALLINFOSTATE_REDIRECTINGID   0x00080000
+#define LINECALLINFOSTATE_DISPLAY         0x00100000
+#define LINECALLINFOSTATE_USERUSERINFO    0x00200000
+#define LINECALLINFOSTATE_HIGHLEVELCOMP   0x00400000
+#define LINECALLINFOSTATE_LOWLEVELCOMP    0x00800000
+#define LINECALLINFOSTATE_CHARGINGINFO    0x01000000
+#define LINECALLINFOSTATE_TERMINAL        0x02000000
+#define LINECALLINFOSTATE_DIALPARAMS      0x04000000
+#define LINECALLINFOSTATE_MONITORMODES    0x08000000
+#if (NDIS_TAPI_CURRENT_VERSION >= 0x00020000)
+#define LINECALLINFOSTATE_TREATMENT       0x10000000
+#define LINECALLINFOSTATE_QOS             0x20000000
+#define LINECALLINFOSTATE_CALLDATA        0x40000000
+#endif
+
+#define LINECALLORIGIN_OUTBOUND           0x00000001
+#define LINECALLORIGIN_INTERNAL           0x00000002
+#define LINECALLORIGIN_EXTERNAL           0x00000004
+#define LINECALLORIGIN_UNKNOWN            0x00000010
+#define LINECALLORIGIN_UNAVAIL            0x00000020
+#define LINECALLORIGIN_CONFERENCE         0x00000040
+#define LINECALLORIGIN_INBOUND            0x00000080
+
+#define LINECALLPARAMFLAGS_SECURE         0x00000001
+#define LINECALLPARAMFLAGS_IDLE           0x00000002
+#define LINECALLPARAMFLAGS_BLOCKID        0x00000004
+#define LINECALLPARAMFLAGS_ORIGOFFHOOK    0x00000008
+#define LINECALLPARAMFLAGS_DESTOFFHOOK    0x00000010
+#if (NDIS_TAPI_CURRENT_VERSION >= 0x00020000)
+#define LINECALLPARAMFLAGS_NOHOLDCONFERENCE \
+                                          0x00000020
+#define LINECALLPARAMFLAGS_PREDICTIVEDIAL 0x00000040
+#define LINECALLPARAMFLAGS_ONESTEPTRANSFER \
+                                          0x00000080
+#endif
+
+#define LINECALLPARTYID_BLOCKED           0x00000001
+#define LINECALLPARTYID_OUTOFAREA         0x00000002
+#define LINECALLPARTYID_NAME              0x00000004
+#define LINECALLPARTYID_ADDRESS           0x00000008
+#define LINECALLPARTYID_PARTIAL           0x00000010
+#define LINECALLPARTYID_UNKNOWN           0x00000020
+#define LINECALLPARTYID_UNAVAIL           0x00000040
+
+#define LINECALLPRIVILEGE_NONE            0x00000001
+#define LINECALLPRIVILEGE_MONITOR         0x00000002
+#define LINECALLPRIVILEGE_OWNER           0x00000004
+
+#define LINECALLREASON_DIRECT             0x00000001
+#define LINECALLREASON_FWDBUSY            0x00000002
+#define LINECALLREASON_FWDNOANSWER        0x00000004
+#define LINECALLREASON_FWDUNCOND          0x00000008
+#define LINECALLREASON_PICKUP             0x00000010
+#define LINECALLREASON_UNPARK             0x00000020
+#define LINECALLREASON_REDIRECT           0x00000040
+#define LINECALLREASON_CALLCOMPLETION     0x00000080
+#define LINECALLREASON_TRANSFER           0x00000100
+#define LINECALLREASON_REMINDER           0x00000200
+#define LINECALLREASON_UNKNOWN            0x00000400
+#define LINECALLREASON_UNAVAIL            0x00000800
+#define LINECALLREASON_INTRUDE            0x00001000
+#define LINECALLREASON_PARKED             0x00002000
+#if (NDIS_TAPI_CURRENT_VERSION >= 0x00020000)
+#define LINECALLREASON_CAMPEDON           0x00004000
+#define LINECALLREASON_ROUTEREQUEST       0x00008000
+#endif
+
+#define LINECALLSELECT_LINE               0x00000001
+#define LINECALLSELECT_ADDRESS            0x00000002
+#define LINECALLSELECT_CALL               0x00000004
+#if (NDIS_TAPI_CURRENT_VERSION > 0x00020000)
+#define LINECALLSELECT_DEVICEID           0x00000008
+#endif
+#if (NDIS_TAPI_CURRENT_VERSION >= 0x00030000)
+#define LINECALLSELECT_CALLID             0x00000010
+#endif
+
+#define LINECALLSTATE_IDLE                0x00000001
+#define LINECALLSTATE_OFFERING            0x00000002
+#define LINECALLSTATE_ACCEPTED            0x00000004
+#define LINECALLSTATE_DIALTONE            0x00000008
+#define LINECALLSTATE_DIALING             0x00000010
+#define LINECALLSTATE_RINGBACK            0x00000020
+#define LINECALLSTATE_BUSY                0x00000040
+#define LINECALLSTATE_SPECIALINFO         0x00000080
+#define LINECALLSTATE_CONNECTED           0x00000100
+#define LINECALLSTATE_PROCEEDING          0x00000200
+#define LINECALLSTATE_ONHOLD              0x00000400
+#define LINECALLSTATE_CONFERENCED         0x00000800
+#define LINECALLSTATE_ONHOLDPENDCONF      0x00001000
+#define LINECALLSTATE_ONHOLDPENDTRANSFER  0x00002000
+#define LINECALLSTATE_DISCONNECTED        0x00004000
+#define LINECALLSTATE_UNKNOWN             0x00008000
+
+#define LINEDEVCAPFLAGS_CROSSADDRCONF     0x00000001
+#define LINEDEVCAPFLAGS_HIGHLEVCOMP       0x00000002
+#define LINEDEVCAPFLAGS_LOWLEVCOMP        0x00000004
+#define LINEDEVCAPFLAGS_MEDIACONTROL      0x00000008
+#define LINEDEVCAPFLAGS_MULTIPLEADDR      0x00000010
+#define LINEDEVCAPFLAGS_CLOSEDROP         0x00000020
+#define LINEDEVCAPFLAGS_DIALBILLING       0x00000040
+#define LINEDEVCAPFLAGS_DIALQUIET         0x00000080
+#define LINEDEVCAPFLAGS_DIALDIALTONE      0x00000100
+#if (NDIS_TAPI_CURRENT_VERSION >= 0x00030000)
+#define LINEDEVCAPFLAGS_MSP               0x00000200
+#define LINEDEVCAPFLAGS_CALLHUB           0x00000400
+#define LINEDEVCAPFLAGS_CALLHUBTRACKING   0x00000800
+#define LINEDEVCAPFLAGS_PRIVATEOBJECTS    0x00001000
+#endif
+
+#define LINEDEVSTATE_OTHER      0x00000001
+#define LINEDEVSTATE_RINGING              0x00000002
+#define LINEDEVSTATE_CONNECTED            0x00000004
+#define LINEDEVSTATE_DISCONNECTED         0x00000008
+#define LINEDEVSTATE_MSGWAITON            0x00000010
+#define LINEDEVSTATE_MSGWAITOFF           0x00000020
+#define LINEDEVSTATE_INSERVICE            0x00000040
+#define LINEDEVSTATE_OUTOFSERVICE         0x00000080
+#define LINEDEVSTATE_MAINTENANCE          0x00000100
+#define LINEDEVSTATE_OPEN                 0x00000200
+#define LINEDEVSTATE_CLOSE                0x00000400
+#define LINEDEVSTATE_NUMCALLS             0x00000800
+#define LINEDEVSTATE_NUMCOMPLETIONS       0x00001000
+#define LINEDEVSTATE_TERMINALS            0x00002000
+#define LINEDEVSTATE_ROAMMODE             0x00004000
+#define LINEDEVSTATE_BATTERY              0x00008000
+#define LINEDEVSTATE_SIGNAL               0x00010000
+#define LINEDEVSTATE_DEVSPECIFIC          0x00020000
+#define LINEDEVSTATE_REINIT               0x00040000
+#define LINEDEVSTATE_LOCK                 0x00080000
+
+#define LINEDEVSTATUSFLAGS_CONNECTED      0x00000001
+#define LINEDEVSTATUSFLAGS_MSGWAIT        0x00000002
+#define LINEDEVSTATUSFLAGS_INSERVICE      0x00000004
+#define LINEDEVSTATUSFLAGS_LOCKED         0x00000008
+
+#define LINEDIALTONEMODE_NORMAL           0x00000001
+#define LINEDIALTONEMODE_SPECIAL          0x00000002
+#define LINEDIALTONEMODE_INTERNAL         0x00000004
+#define LINEDIALTONEMODE_EXTERNAL         0x00000008
+#define LINEDIALTONEMODE_UNKNOWN          0x00000010
+#define LINEDIALTONEMODE_UNAVAIL          0x00000020
+
+#define LINEDIGITMODE_PULSE               0x00000001
+#define LINEDIGITMODE_DTMF                0x00000002
+#define LINEDIGITMODE_DTMFEND             0x00000004
+
+#define LINEDISCONNECTMODE_NORMAL         0x00000001
+#define LINEDISCONNECTMODE_UNKNOWN        0x00000002
+#define LINEDISCONNECTMODE_REJECT         0x00000004
+#define LINEDISCONNECTMODE_PICKUP         0x00000008
+#define LINEDISCONNECTMODE_FORWARDED      0x00000010
+#define LINEDISCONNECTMODE_BUSY           0x00000020
+#define LINEDISCONNECTMODE_NOANSWER       0x00000040
+#define LINEDISCONNECTMODE_BADADDRESS     0x00000080
+#define LINEDISCONNECTMODE_UNREACHABLE    0x00000100
+#define LINEDISCONNECTMODE_CONGESTION     0x00000200
+#define LINEDISCONNECTMODE_INCOMPATIBLE   0x00000400
+#define LINEDISCONNECTMODE_UNAVAIL        0x00000800
+#define LINEDISCONNECTMODE_NODIALTONE     0x00001000
+#if (NDIS_TAPI_CURRENT_VERSION >= 0x00020000)
+#define LINEDISCONNECTMODE_NUMBERCHANGED  0x00002000
+#define LINEDISCONNECTMODE_OUTOFORDER     0x00004000
+#define LINEDISCONNECTMODE_TEMPFAILURE    0x00008000
+#define LINEDISCONNECTMODE_QOSUNAVAIL     0x00010000
+#define LINEDISCONNECTMODE_BLOCKED        0x00020000
+#define LINEDISCONNECTMODE_DONOTDISTURB   0x00040000
+#define LINEDISCONNECTMODE_CANCELLED      0x00080000
+#endif
+
+#define LINEFEATURE_DEVSPECIFIC           0x00000001
+#define LINEFEATURE_DEVSPECIFICFEAT       0x00000002
+#define LINEFEATURE_FORWARD               0x00000004
+#define LINEFEATURE_MAKECALL              0x00000008
+#define LINEFEATURE_SETMEDIACONTROL       0x00000010
+#define LINEFEATURE_SETTERMINAL           0x00000020
+#if (NDIS_TAPI_CURRENT_VERSION >= 0x00020000)
+#define LINEFEATURE_SETDEVSTATUS          0x00000040
+#define LINEFEATURE_FORWARDFWD            0x00000080
+#define LINEFEATURE_FORWARDDND            0x00000100
+#endif
+
+#define LINEFORWARDMODE_UNCOND            0x00000001
+#define LINEFORWARDMODE_UNCONDINTERNAL    0x00000002
+#define LINEFORWARDMODE_UNCONDEXTERNAL    0x00000004
+#define LINEFORWARDMODE_UNCONDSPECIFIC    0x00000008
+#define LINEFORWARDMODE_BUSY              0x00000010
+#define LINEFORWARDMODE_BUSYINTERNAL      0x00000020
+#define LINEFORWARDMODE_BUSYEXTERNAL      0x00000040
+#define LINEFORWARDMODE_BUSYSPECIFIC      0x00000080
+#define LINEFORWARDMODE_NOANSW            0x00000100
+#define LINEFORWARDMODE_NOANSWINTERNAL    0x00000200
+#define LINEFORWARDMODE_NOANSWEXTERNAL    0x00000400
+#define LINEFORWARDMODE_NOANSWSPECIFIC    0x00000800
+#define LINEFORWARDMODE_BUSYNA            0x00001000
+#define LINEFORWARDMODE_BUSYNAINTERNAL    0x00002000
+#define LINEFORWARDMODE_BUSYNAEXTERNAL    0x00004000
+#define LINEFORWARDMODE_BUSYNASPECIFIC    0x00008000
+
+#define LINEGATHERTERM_BUFFERFULL         0x00000001
+#define LINEGATHERTERM_TERMDIGIT          0x00000002
+#define LINEGATHERTERM_FIRSTTIMEOUT       0x00000004
+#define LINEGATHERTERM_INTERTIMEOUT       0x00000008
+#define LINEGATHERTERM_CANCEL             0x00000010
+
+#define LINEGENERATETERM_DONE             0x00000001
+#define LINEGENERATETERM_CANCEL           0x00000002
+
+#define LINEMEDIACONTROL_NONE             0x00000001
+#define LINEMEDIACONTROL_START            0x00000002
+#define LINEMEDIACONTROL_RESET            0x00000004
+#define LINEMEDIACONTROL_PAUSE            0x00000008
+#define LINEMEDIACONTROL_RESUME           0x00000010
+#define LINEMEDIACONTROL_RATEUP           0x00000020
+#define LINEMEDIACONTROL_RATEDOWN         0x00000040
+#define LINEMEDIACONTROL_RATENORMAL       0x00000080
+#define LINEMEDIACONTROL_VOLUMEUP         0x00000100
+#define LINEMEDIACONTROL_VOLUMEDOWN       0x00000200
+#define LINEMEDIACONTROL_VOLUMENORMAL     0x00000400
+
+#define LINEMEDIAMODE_UNKNOWN             0x00000002
+#define LINEMEDIAMODE_INTERACTIVEVOICE    0x00000004
+#define LINEMEDIAMODE_AUTOMATEDVOICE      0x00000008
+#define LINEMEDIAMODE_DATAMODEM           0x00000010
+#define LINEMEDIAMODE_G3FAX               0x00000020
+#define LINEMEDIAMODE_TDD                 0x00000040
+#define LINEMEDIAMODE_G4FAX               0x00000080
+#define LINEMEDIAMODE_DIGITALDATA         0x00000100
+#define LINEMEDIAMODE_TELETEX             0x00000200
+#define LINEMEDIAMODE_VIDEOTEX            0x00000400
+#define LINEMEDIAMODE_TELEX               0x00000800
+#define LINEMEDIAMODE_MIXED               0x00001000
+#define LINEMEDIAMODE_ADSI                0x00002000
+
+#define LINEMEDIAMODE_VOICEVIEW           0x00004000
+#define LAST_LINEMEDIAMODE                0x00004000
+#if (NDIS_TAPI_CURRENT_VERSION >= 0x00020001)
+#define LINEMEDIAMODE_VIDEO               0x00008000
+#define LAST_LINEMEDIAMODE                0x00008000
+#endif
+
+#define LINEPARKMODE_DIRECTED             0x00000001
+#define LINEPARKMODE_NONDIRECTED          0x00000002
+
+#define LINEREMOVEFROMCONF_NONE           0x00000001
+#define LINEREMOVEFROMCONF_LAST           0x00000002
+#define LINEREMOVEFROMCONF_ANY            0x00000003
+
+#define LINEREQUESTMODE_MAKECALL          0x00000001
+#define LINEREQUESTMODE_MEDIACALL         0x00000002
+#define LINEREQUESTMODE_DROP              0x00000004
+
+#define LAST_LINEREQUESTMODE              LINEREQUESTMODE_MEDIACALL
+
+#define LINEROAMMODE_UNKNOWN              0x00000001
+#define LINEROAMMODE_UNAVAIL              0x00000002
+#define LINEROAMMODE_HOME                 0x00000004
+#define LINEROAMMODE_ROAMA                0x00000008
+#define LINEROAMMODE_ROAMB                0x00000010
+
+#define LINESPECIALINFO_NOCIRCUIT         0x00000001
+#define LINESPECIALINFO_CUSTIRREG         0x00000002
+#define LINESPECIALINFO_REORDER           0x00000004
+#define LINESPECIALINFO_UNKNOWN           0x00000008
+#define LINESPECIALINFO_UNAVAIL           0x00000010
+
+#define LINETERMDEV_PHONE                 0x00000001
+#define LINETERMDEV_HEADSET               0x00000002
+#define LINETERMDEV_SPEAKER               0x00000004
+
+#define LINETERMMODE_BUTTONS              0x00000001
+#define LINETERMMODE_LAMPS                0x00000002
+#define LINETERMMODE_DISPLAY              0x00000004
+#define LINETERMMODE_RINGER               0x00000008
+#define LINETERMMODE_HOOKSWITCH           0x00000010
+#define LINETERMMODE_MEDIATOLINE          0x00000020
+#define LINETERMMODE_MEDIAFROMLINE        0x00000040
+#define LINETERMMODE_MEDIABIDIRECT        0x00000080
+
+#define LINETERMSHARING_PRIVATE           0x00000001
+#define LINETERMSHARING_SHAREDEXCL        0x00000002
+#define LINETERMSHARING_SHAREDCONF        0x00000004
+
+#define LINETONEMODE_CUSTOM               0x00000001
+#define LINETONEMODE_RINGBACK             0x00000002
+#define LINETONEMODE_BUSY                 0x00000004
+#define LINETONEMODE_BEEP                 0x00000008
+#define LINETONEMODE_BILLING              0x00000010
+
+#define LINETRANSFERMODE_TRANSFER         0x00000001
+#define LINETRANSFERMODE_CONFERENCE       0x00000002
+
+#define LINETOLLLISTOPTION_ADD            0x00000001
+#define LINETOLLLISTOPTION_REMOVE         0x00000002
+
+#define LINETRANSLATEOPTION_CARDOVERRIDE  0x00000001
+
+#define LINETRANSLATERESULT_CANONICAL     0x00000001
+#define LINETRANSLATERESULT_INTERNATIONAL 0x00000002
+#define LINETRANSLATERESULT_LONGDISTANCE  0x00000004
+#define LINETRANSLATERESULT_LOCAL         0x00000008
+#define LINETRANSLATERESULT_INTOLLLIST    0x00000010
+#define LINETRANSLATERESULT_NOTINTOLLLIST 0x00000020
+#define LINETRANSLATERESULT_DIALBILLING   0x00000040
+#define LINETRANSLATERESULT_DIALQUIET     0x00000080
+#define LINETRANSLATERESULT_DIALDIALTONE  0x00000100
+#define LINETRANSLATERESULT_DIALPROMPT    0x00000200
+#if (NDIS_TAPI_CURRENT_VERSION >= 0x00020000)
+#define LINETRANSLATERESULT_VOICEDETECT   0x00000400
+#endif
+
+#if (NDIS_TAPI_CURRENT_VERSION >= 0x00030000)
+#define LINETRANSLATERESULT_NOTRANSLATION 0x00000800
+#endif
+
+
+typedef struct  _NDIS_VAR_DATA_DESC {
+	USHORT  Length;
+	USHORT  MaximumLength;
+	LONG  Offset;
+} NDIS_VAR_DATA_DESC, *PNDIS_VAR_DATA_DESC;
+
+typedef struct _LINE_DIAL_PARAMS {
+	ULONG  ulDialPause;
+	ULONG  ulDialSpeed;
+	ULONG  ulDigitDuration;
+	ULONG  ulWaitForDialtone;
+} LINE_DIAL_PARAMS, *PLINE_DIAL_PARAMS;
+
+typedef struct _LINE_ADDRESS_CAPS {
+	ULONG  ulTotalSize;
+	ULONG  ulNeededSize;
+	ULONG  ulUsedSize;
+	ULONG  ulLineDeviceID;
+	ULONG  ulAddressSize;
+	ULONG  ulAddressOffset;
+	ULONG  ulDevSpecificSize;
+	ULONG  ulDevSpecificOffset;
+	ULONG  ulAddressSharing;
+	ULONG  ulAddressStates;
+	ULONG  ulCallInfoStates;
+	ULONG  ulCallerIDFlags;
+	ULONG  ulCalledIDFlags;
+	ULONG  ulConnectedIDFlags;
+	ULONG  ulRedirectionIDFlags;
+	ULONG  ulRedirectingIDFlags;
+	ULONG  ulCallStates;
+	ULONG  ulDialToneModes;
+	ULONG  ulBusyModes;
+	ULONG  ulSpecialInfo;
+	ULONG  ulDisconnectModes;
+	ULONG  ulMaxNumActiveCalls;
+	ULONG  ulMaxNumOnHoldCalls;
+	ULONG  ulMaxNumOnHoldPendingCalls;
+	ULONG  ulMaxNumConference;
+	ULONG  ulMaxNumTransConf;
+	ULONG  ulAddrCapFlags;
+	ULONG  ulCallFeatures;
+	ULONG  ulRemoveFromConfCaps;
+	ULONG  ulRemoveFromConfState;
+	ULONG  ulTransferModes;
+	ULONG  ulParkModes;
+	ULONG  ulForwardModes;
+	ULONG  ulMaxForwardEntries;
+	ULONG  ulMaxSpecificEntries;
+	ULONG  ulMinFwdNumRings;
+	ULONG  ulMaxFwdNumRings;
+	ULONG  ulMaxCallCompletions;
+	ULONG  ulCallCompletionConds;
+	ULONG  ulCallCompletionModes;
+	ULONG  ulNumCompletionMessages;
+	ULONG  ulCompletionMsgTextEntrySize;
+	ULONG  ulCompletionMsgTextSize;
+	ULONG  ulCompletionMsgTextOffset;
+#if (NDIS_TAPI_CURRENT_VERSION >= 0x00010004)
+	ULONG  ulAddressFeatures;
+#if (NDIS_TAPI_CURRENT_VERSION >= 0x00020000)
+	ULONG  ulPredictiveAutoTransferStates;
+	ULONG  ulNumCallTreatments;
+	ULONG  ulCallTreatmentListSize;
+	ULONG  ulCallTreatmentListOffset;
+	ULONG  ulDeviceClassesSize;
+	ULONG  ulDeviceClassesOffset;
+	ULONG  ulMaxCallDataSize;
+	ULONG  ulCallFeatures2;
+	ULONG  ulMaxNoAnswerTimeout;
+	ULONG  ulConnectedModes;
+	ULONG  ulOfferingModes;
+	ULONG  ulAvailableMediaModes;
+#endif
+#endif
+} LINE_ADDRESS_CAPS, *PLINE_ADDRESS_CAPS;
+
+typedef struct _LINE_ADDRESS_STATUS {
+	ULONG  ulTotalSize;
+	ULONG  ulNeededSize;
+	ULONG  ulUsedSize;
+	ULONG  ulNumInUse;
+	ULONG  ulNumActiveCalls;
+	ULONG  ulNumOnHoldCalls;
+	ULONG  ulNumOnHoldPendCalls;
+	ULONG  ulAddressFeatures;
+	ULONG  ulNumRingsNoAnswer;
+	ULONG  ulForwardNumEntries;
+	ULONG  ulForwardSize;
+	ULONG  ulForwardOffset;
+	ULONG  ulTerminalModesSize;
+	ULONG  ulTerminalModesOffset;
+	ULONG  ulDevSpecificSize;
+	ULONG  ulDevSpecificOffset;
+} LINE_ADDRESS_STATUS, *PLINE_ADDRESS_STATUS;
+
+typedef struct _LINE_CALL_INFO {
+	ULONG  ulTotalSize;
+	ULONG  ulNeededSize;
+	ULONG  ulUsedSize;
+	ULONG  hLine;
+	ULONG  ulLineDeviceID;
+	ULONG  ulAddressID;
+	ULONG  ulBearerMode;
+	ULONG  ulRate;
+	ULONG  ulMediaMode;
+	ULONG  ulAppSpecific;
+	ULONG  ulCallID;
+	ULONG  ulRelatedCallID;
+	ULONG  ulCallParamFlags;
+	ULONG  ulCallStates;
+	ULONG  ulMonitorDigitModes;
+	ULONG  ulMonitorMediaModes;
+	LINE_DIAL_PARAMS  DialParams;
+	ULONG  ulOrigin;
+	ULONG  ulReason;
+	ULONG  ulCompletionID;
+	ULONG  ulNumOwners;
+	ULONG  ulNumMonitors;
+	ULONG  ulCountryCode;
+	ULONG  ulTrunk;
+	ULONG  ulCallerIDFlags;
+	ULONG  ulCallerIDSize;
+	ULONG  ulCallerIDOffset;
+	ULONG  ulCallerIDNameSize;
+	ULONG  ulCallerIDNameOffset;
+	ULONG  ulCalledIDFlags;
+	ULONG  ulCalledIDSize;
+	ULONG  ulCalledIDOffset;
+	ULONG  ulCalledIDNameSize;
+	ULONG  ulCalledIDNameOffset;
+	ULONG  ulConnectedIDFlags;
+	ULONG  ulConnectedIDSize;
+	ULONG  ulConnectedIDOffset;
+	ULONG  ulConnectedIDNameSize;
+	ULONG  ulConnectedIDNameOffset;
+	ULONG  ulRedirectionIDFlags;
+	ULONG  ulRedirectionIDSize;
+	ULONG  ulRedirectionIDOffset;
+	ULONG  ulRedirectionIDNameSize;
+	ULONG  ulRedirectionIDNameOffset;
+	ULONG  ulRedirectingIDFlags;
+	ULONG  ulRedirectingIDSize;
+	ULONG  ulRedirectingIDOffset;
+	ULONG  ulRedirectingIDNameSize;
+	ULONG  ulRedirectingIDNameOffset;
+	ULONG  ulAppNameSize;
+	ULONG  ulAppNameOffset;
+	ULONG  ulDisplayableAddressSize;
+	ULONG  ulDisplayableAddressOffset;
+	ULONG  ulCalledPartySize;
+	ULONG  ulCalledPartyOffset;
+	ULONG  ulCommentSize;
+	ULONG  ulCommentOffset;
+	ULONG  ulDisplaySize;
+	ULONG  ulDisplayOffset;
+	ULONG  ulUserUserInfoSize;
+	ULONG  ulUserUserInfoOffset;
+	ULONG  ulHighLevelCompSize;
+	ULONG  ulHighLevelCompOffset;
+	ULONG  ulLowLevelCompSize;
+	ULONG  ulLowLevelCompOffset;
+	ULONG  ulChargingInfoSize;
+	ULONG  ulChargingInfoOffset;
+	ULONG  ulTerminalModesSize;
+	ULONG  ulTerminalModesOffset;
+	ULONG  ulDevSpecificSize;
+	ULONG  ulDevSpecificOffset;
+#if (NDIS_TAPI_CURRENT_VERSION >= 0x00020000)
+	ULONG  ulCallTreatment;
+	ULONG  ulCallDataSize;
+	ULONG  ulCallDataOffset;
+	ULONG  ulSendingFlowspecSize;
+	ULONG  ulSendingFlowspecOffset;
+	ULONG  ulReceivingFlowspecSize;
+	ULONG  ulReceivingFlowspecOffset;
+#endif
+#if (NDIS_TAPI_CURRENT_VERSION >= 0x00030000)
+	ULONG  ulCallerIDAddressType;
+	ULONG  ulCalledIDAddressType;
+	ULONG  ulConnectedIDAddressType;
+	ULONG  ulRedirectionIDAddressType;
+	ULONG  ulRedirectingIDAddressType;
+#endif
+} LINE_CALL_INFO, *PLINE_CALL_INFO;
+
+typedef struct _LINE_CALL_PARAMS {
+  ULONG  ulTotalSize;
+	ULONG  ulBearerMode;
+	ULONG  ulMinRate;
+	ULONG  ulMaxRate;
+	ULONG  ulMediaMode;
+	ULONG  ulCallParamFlags;
+	ULONG  ulAddressMode;
+	ULONG  ulAddressID;
+	LINE_DIAL_PARAMS  DialParams;
+	ULONG  ulOrigAddressSize;
+	ULONG  ulOrigAddressOffset;
+	ULONG  ulDisplayableAddressSize;
+	ULONG  ulDisplayableAddressOffset;
+	ULONG  ulCalledPartySize;
+	ULONG  ulCalledPartyOffset;
+	ULONG  ulCommentSize;
+	ULONG  ulCommentOffset;
+	ULONG  ulUserUserInfoSize;
+	ULONG  ulUserUserInfoOffset;
+	ULONG  ulHighLevelCompSize;
+	ULONG  ulHighLevelCompOffset;
+	ULONG  ulLowLevelCompSize;
+	ULONG  ulLowLevelCompOffset;
+	ULONG  ulDevSpecificSize;
+	ULONG  ulDevSpecificOffset;
+#if (NDIS_TAPI_CURRENT_VERSION >= 0x00020000)
+	ULONG  ulPredictiveAutoTransferStates;
+	ULONG  ulTargetAddressSize;
+	ULONG  ulTargetAddressOffset;
+	ULONG  ulSendingFlowspecSize;
+	ULONG  ulSendingFlowspecOffset;
+	ULONG  ulReceivingFlowspecSize;
+	ULONG  ulReceivingFlowspecOffset;
+	ULONG  ulDeviceClassSize;
+	ULONG  ulDeviceClassOffset;
+	ULONG  ulDeviceConfigSize;
+	ULONG  ulDeviceConfigOffset;
+	ULONG  ulCallDataSize;
+	ULONG  ulCallDataOffset;
+	ULONG  ulNoAnswerTimeout;
+	ULONG  ulCallingPartyIDSize;
+	ULONG  ulCallingPartyIDOffset;
+#endif
+#if (NDIS_TAPI_CURRENT_VERSION >= 0x00030000)
+  ULONG  ulAddressType;
+#endif
+} LINE_CALL_PARAMS, *PLINE_CALL_PARAMS;
+
+typedef struct _LINE_CALL_STATUS {
+	ULONG  ulTotalSize;
+	ULONG  ulNeededSize;
+	ULONG  ulUsedSize;
+	ULONG  ulCallState;
+	ULONG  ulCallStateMode;
+	ULONG  ulCallPrivilege;
+	ULONG  ulCallFeatures;
+	ULONG  ulDevSpecificSize;
+	ULONG  ulDevSpecificOffset;
+} LINE_CALL_STATUS, *PLINE_CALL_STATUS;
+
+typedef struct _LINE_DEV_CAPS {
+	ULONG  ulTotalSize;
+	ULONG  ulNeededSize;
+	ULONG  ulUsedSize;
+	ULONG  ulProviderInfoSize;
+	ULONG  ulProviderInfoOffset;
+	ULONG  ulSwitchInfoSize;
+	ULONG  ulSwitchInfoOffset;
+	ULONG  ulPermanentLineID;
+	ULONG  ulLineNameSize;
+	ULONG  ulLineNameOffset;
+	ULONG  ulStringFormat;
+	ULONG  ulAddressModes;
+	ULONG  ulNumAddresses;
+	ULONG  ulBearerModes;
+	ULONG  ulMaxRate;
+	ULONG  ulMediaModes;
+	ULONG  ulGenerateToneModes;
+	ULONG  ulGenerateToneMaxNumFreq;
+	ULONG  ulGenerateDigitModes;
+	ULONG  ulMonitorToneMaxNumFreq;
+	ULONG  ulMonitorToneMaxNumEntries;
+	ULONG  ulMonitorDigitModes;
+	ULONG  ulGatherDigitsMinTimeout;
+	ULONG  ulGatherDigitsMaxTimeout;
+	ULONG  ulMedCtlDigitMaxListSize;
+	ULONG  ulMedCtlMediaMaxListSize;
+	ULONG  ulMedCtlToneMaxListSize;
+	ULONG  ulMedCtlCallStateMaxListSize;
+	ULONG  ulDevCapFlags;
+	ULONG  ulMaxNumActiveCalls;
+	ULONG  ulAnswerMode;
+	ULONG  ulRingModes;
+	ULONG  ulLineStates;
+	ULONG  ulUUIAcceptSize;
+	ULONG  ulUUIAnswerSize;
+	ULONG  ulUUIMakeCallSize;
+	ULONG  ulUUIDropSize;
+	ULONG  ulUUISendUserUserInfoSize;
+	ULONG  ulUUICallInfoSize;
+	LINE_DIAL_PARAMS  MinDialParams;
+	LINE_DIAL_PARAMS  MaxDialParams;
+	LINE_DIAL_PARAMS  DefaultDialParams;
+	ULONG  ulNumTerminals;
+	ULONG  ulTerminalCapsSize;
+	ULONG  ulTerminalCapsOffset;
+	ULONG  ulTerminalTextEntrySize;
+	ULONG  ulTerminalTextSize;
+	ULONG  ulTerminalTextOffset;
+	ULONG  ulDevSpecificSize;
+	ULONG  ulDevSpecificOffset;
+#if (NDIS_TAPI_CURRENT_VERSION >= 0x00010004)
+	ULONG  ulLineFeatures;
+#endif
+#if (NDIS_TAPI_CURRENT_VERSION >= 0x00020000)
+	ULONG  ulSettableDevStatus;
+	ULONG  ulDeviceClassesSize;
+	ULONG  ulDeviceClassesOffset;
+#endif
+#if (NDIS_TAPI_CURRENT_VERSION >= 0x00020002)
+  GUID  PermanentLineGuid;
+#endif
+#if (NDIS_TAPI_CURRENT_VERSION >= 0x00030000)
+	ULONG  ulAddressTypes;
+	GUID  ProtocolGuid;
+	ULONG  ulAvailableTracking;
+#endif
+} LINE_DEV_CAPS, *PLINE_DEV_CAPS;
+
+typedef struct _LINE_DEV_STATUS {
+	ULONG  ulTotalSize;
+	ULONG  ulNeededSize;
+	ULONG  ulUsedSize;
+	ULONG  ulNumOpens;
+	ULONG  ulOpenMediaModes;
+	ULONG  ulNumActiveCalls;
+	ULONG  ulNumOnHoldCalls;
+	ULONG  ulNumOnHoldPendCalls;
+	ULONG  ulLineFeatures;
+	ULONG  ulNumCallCompletions;
+	ULONG  ulRingMode;
+	ULONG  ulSignalLevel;
+	ULONG  ulBatteryLevel;
+	ULONG  ulRoamMode;
+	ULONG  ulDevStatusFlags;
+	ULONG  ulTerminalModesSize;
+	ULONG  ulTerminalModesOffset;
+	ULONG  ulDevSpecificSize;
+	ULONG  ulDevSpecificOffset;
+} LINE_DEV_STATUS, *PLINE_DEV_STATUS;
+
+typedef struct _LINE_EXTENSION_ID {
+	ULONG  ulExtensionID0;
+	ULONG  ulExtensionID1;
+	ULONG  ulExtensionID2;
+	ULONG  ulExtensionID3;
+} LINE_EXTENSION_ID, *PLINE_EXTENSION_ID;
+
+typedef struct _VAR_STRING {
+	ULONG  ulTotalSize;
+	ULONG  ulNeededSize;
+	ULONG  ulUsedSize;
+	ULONG  ulStringFormat;
+	ULONG  ulStringSize;
+	ULONG  ulStringOffset;
+} VAR_STRING, *PVAR_STRING;
+
+typedef struct _NDIS_TAPI_ANSWER {
+  /*IN*/ ULONG  ulRequestID;
+  /*IN*/ HDRV_CALL  hdCall;
+  /*IN*/ ULONG  ulUserUserInfoSize;
+  /*IN*/ UCHAR  UserUserInfo[1];
+} NDIS_TAPI_ANSWER, *PNDIS_TAPI_ANSWER;
+
+typedef struct _NDIS_TAPI_CLOSE {
+  /*IN*/ ULONG  ulRequestID;
+  /*IN*/ HDRV_LINE  hdLine;
+} NDIS_TAPI_CLOSE, *PNDIS_TAPI_CLOSE;
+
+typedef struct _NDIS_TAPI_CLOSE_CALL {
+  /*IN*/ ULONG  ulRequestID;
+  /*IN*/ HDRV_CALL  hdCall;
+} NDIS_TAPI_CLOSE_CALL, *PNDIS_TAPI_CLOSE_CALL;
+
+typedef struct _NDIS_TAPI_CONDITIONAL_MEDIA_DETECTION {
+  /*IN*/ ULONG  ulRequestID;
+  /*IN*/ HDRV_LINE  hdLine;
+  /*IN*/ ULONG  ulMediaModes;
+  /*IN*/ LINE_CALL_PARAMS  LineCallParams;
+} NDIS_TAPI_CONDITIONAL_MEDIA_DETECTION, *PNDIS_TAPI_CONDITIONAL_MEDIA_DETECTION;
+
+typedef struct _NDIS_TAPI_DROP {
+  /*IN*/ ULONG  ulRequestID;
+  /*IN*/ HDRV_CALL  hdCall;
+  /*IN*/ ULONG  ulUserUserInfoSize;
+  /*IN*/ UCHAR  UserUserInfo[1];
+} NDIS_TAPI_DROP, *PNDIS_TAPI_DROP;
+
+typedef struct _NDIS_TAPI_PROVIDER_SHUTDOWN {
+  /*IN*/ ULONG  ulRequestID;
+} NDIS_TAPI_PROVIDER_SHUTDOWN, *PNDIS_TAPI_PROVIDER_SHUTDOWN;
+
+typedef struct _NDIS_TAPI_SET_APP_SPECIFIC {
+  /*IN*/ ULONG  ulRequestID;
+  /*IN*/ HDRV_CALL  hdCall;
+  /*IN*/ ULONG  ulAppSpecific;
+} NDIS_TAPI_SET_APP_SPECIFIC, *PNDIS_TAPI_SET_APP_SPECIFIC;
+
+typedef struct _NDIS_TAPI_SET_CALL_PARAMS {
+  /*IN*/ ULONG  ulRequestID;
+  /*IN*/ HDRV_CALL  hdCall;
+  /*IN*/ ULONG  ulBearerMode;
+  /*IN*/ ULONG  ulMinRate;
+  /*IN*/ ULONG  ulMaxRate;
+  /*IN*/ BOOLEAN  bSetLineDialParams;
+  /*IN*/ LINE_DIAL_PARAMS  LineDialParams;
+} NDIS_TAPI_SET_CALL_PARAMS, *PNDIS_TAPI_SET_CALL_PARAMS;
+
+typedef struct _NDIS_TAPI_SET_DEFAULT_MEDIA_DETECTION {
+  /*IN*/ ULONG  ulRequestID;
+  /*IN*/ HDRV_LINE  hdLine;
+  /*IN*/ ULONG  ulMediaModes;
+} NDIS_TAPI_SET_DEFAULT_MEDIA_DETECTION, *PNDIS_TAPI_SET_DEFAULT_MEDIA_DETECTION;
+
+typedef struct _NDIS_TAPI_SET_DEV_CONFIG {
+  /*IN*/ ULONG  ulRequestID;
+  /*IN*/ ULONG  ulDeviceID;
+  /*IN*/ ULONG  ulDeviceClassSize;
+  /*IN*/ ULONG  ulDeviceClassOffset;
+  /*IN*/ ULONG  ulDeviceConfigSize;
+  /*IN*/ UCHAR  DeviceConfig[1];
+} NDIS_TAPI_SET_DEV_CONFIG, *PNDIS_TAPI_SET_DEV_CONFIG;
+
+typedef struct _NDIS_TAPI_SET_MEDIA_MODE {
+  /*IN*/ ULONG  ulRequestID;
+  /*IN*/ HDRV_CALL  hdCall;
+  /*IN*/ ULONG  ulMediaMode;
+} NDIS_TAPI_SET_MEDIA_MODE, *PNDIS_TAPI_SET_MEDIA_MODE;
+
+typedef struct _NDIS_TAPI_SET_STATUS_MESSAGES {
+  /*IN*/ ULONG  ulRequestID;
+  /*IN*/ HDRV_LINE  hdLine;
+  /*IN*/ ULONG  ulLineStates;
+  /*IN*/ ULONG  ulAddressStates;
+} NDIS_TAPI_SET_STATUS_MESSAGES, *PNDIS_TAPI_SET_STATUS_MESSAGES;
+
+typedef struct _NDIS_TAPI_ACCEPT {
+  /*IN*/ ULONG  ulRequestID;
+  /*IN*/ HDRV_CALL  hdCall;
+  /*IN*/ ULONG  ulUserUserInfoSize;
+  /*IN*/ UCHAR  UserUserInfo[1];
+} NDIS_TAPI_ACCEPT, *PNDIS_TAPI_ACCEPT;
+
+typedef struct _NDIS_TAPI_DIAL {
+  /*IN*/ ULONG  ulRequestID;
+  /*IN*/ HDRV_CALL  hdCall;
+  /*IN*/ ULONG  ulDestAddressSize;
+  /*IN*/ CHAR  szDestAddress[1];
+} NDIS_TAPI_DIAL, *PNDIS_TAPI_DIAL;
+
+typedef struct _NDIS_TAPI_EVENT {
+  /*IN*/ HTAPI_LINE  htLine;
+  /*IN*/ HTAPI_CALL  htCall;
+  /*IN*/ ULONG  ulMsg;
+  /*IN*/ ULONG  ulParam1;
+  /*IN*/ ULONG  ulParam2;
+  /*IN*/ ULONG  ulParam3;
+} NDIS_TAPI_EVENT, *PNDIS_TAPI_EVENT;
+
+typedef struct _NDIS_TAPI_OPEN {
+  /*IN*/ ULONG  ulRequestID;
+  /*IN*/ ULONG  ulDeviceID;
+  /*IN*/ HTAPI_LINE  htLine;
+  /*OUT*/ HDRV_LINE  hdLine;
+} NDIS_TAPI_OPEN, *PNDIS_TAPI_OPEN;
+
+typedef struct _NDIS_TAPI_SECURE_CALL {
+  /*IN*/ ULONG  ulRequestID;
+  /*IN*/ HDRV_CALL  hdCall;
+} NDIS_TAPI_SECURE_CALL, *PNDIS_TAPI_SECURE_CALL;
+
+typedef struct _NDIS_TAPI_SELECT_EXT_VERSION {
+  /*IN*/ ULONG  ulRequestID;
+  /*IN*/ HDRV_LINE  hdLine;
+  /*IN*/ ULONG  ulExtVersion;
+} NDIS_TAPI_SELECT_EXT_VERSION, *PNDIS_TAPI_SELECT_EXT_VERSION;
+
+typedef struct _NDIS_TAPI_SEND_USER_USER_INFO {
+  /*IN*/ ULONG  ulRequestID;
+  /*IN*/ HDRV_CALL  hdCall;
+  /*IN*/ ULONG  ulUserUserInfoSize;
+  /*IN*/ UCHAR  UserUserInfo[1];
+} NDIS_TAPI_SEND_USER_USER_INFO, *PNDIS_TAPI_SEND_USER_USER_INFO;
+
+
+typedef struct _NDIS_TAPI_CONFIG_DIALOG {
+  /*IN*/ ULONG  ulRequestID;
+  /*IN*/ ULONG  ulDeviceID;
+  /*IN*/ ULONG  ulDeviceClassSize;
+  /*IN*/ ULONG  ulDeviceClassOffset;
+  /*IN*/ ULONG  ulLibraryNameTotalSize;
+  /*OUT*/ ULONG ulLibraryNameNeededSize;
+  /*OUT*/ CHAR  szLibraryName[1];
+} NDIS_TAPI_CONFIG_DIALOG, *PNDIS_TAPI_CONFIG_DIALOG;
+
+typedef struct _NDIS_TAPI_DEV_SPECIFIC {
+  /*IN*/ ULONG  ulRequestID;
+  /*IN*/ HDRV_LINE  hdLine;
+  /*IN*/ ULONG  ulAddressID;
+  /*IN*/ HDRV_CALL  hdCall;
+  /*IN OUT*/ ULONG  ulParamsSize;
+  /*IN OUT*/ UCHAR  Params[1];
+} NDIS_TAPI_DEV_SPECIFIC, *PNDIS_TAPI_DEV_SPECIFIC;
+
+typedef struct _NDIS_TAPI_GET_ADDRESS_CAPS {
+  /*IN*/ ULONG  ulRequestID;
+  /*IN*/ ULONG  ulDeviceID;
+  /*IN*/ ULONG  ulAddressID;
+  /*IN*/ ULONG  ulExtVersion;
+  /*OUT*/ LINE_ADDRESS_CAPS  LineAddressCaps;
+} NDIS_TAPI_GET_ADDRESS_CAPS, *PNDIS_TAPI_GET_ADDRESS_CAPS;
+
+typedef struct _NDIS_TAPI_GET_ADDRESS_ID {
+  /*IN*/ ULONG  ulRequestID;
+  /*IN*/ HDRV_LINE  hdLine;
+  /*OUT*/ ULONG  ulAddressID;
+  /*IN*/ ULONG  ulAddressMode;
+  /*IN*/ ULONG  ulAddressSize;
+  /*IN*/ CHAR  szAddress[1];
+} NDIS_TAPI_GET_ADDRESS_ID, *PNDIS_TAPI_GET_ADDRESS_ID;
+
+typedef struct _NDIS_TAPI_GET_ADDRESS_STATUS {
+  /*IN*/ ULONG  ulRequestID;
+  /*IN*/ HDRV_LINE  hdLine;
+  /*IN*/ ULONG  ulAddressID;
+  /*OUT*/ LINE_ADDRESS_STATUS  LineAddressStatus;
+} NDIS_TAPI_GET_ADDRESS_STATUS, *PNDIS_TAPI_GET_ADDRESS_STATUS;
+
+typedef struct _NDIS_TAPI_GET_CALL_ADDRESS_ID {
+  /*IN*/ ULONG  ulRequestID;
+  /*IN*/ HDRV_CALL  hdCall;
+  /*OUT*/ ULONG  ulAddressID;
+} NDIS_TAPI_GET_CALL_ADDRESS_ID, *PNDIS_TAPI_GET_CALL_ADDRESS_ID;
+
+typedef struct _NDIS_TAPI_GET_CALL_INFO {
+  ULONG  ulRequestID;
+  /*IN*/ HDRV_CALL  hdCall;
+  /*OUT*/ LINE_CALL_INFO  LineCallInfo;
+} NDIS_TAPI_GET_CALL_INFO, *PNDIS_TAPI_GET_CALL_INFO;
+
+typedef struct _NDIS_TAPI_GET_CALL_STATUS {
+  /*IN*/ ULONG  ulRequestID;
+  /*IN*/ HDRV_CALL  hdCall;
+  /*OUT*/ LINE_CALL_STATUS  LineCallStatus;
+} NDIS_TAPI_GET_CALL_STATUS, *PNDIS_TAPI_GET_CALL_STATUS;
+
+typedef struct _NDIS_TAPI_GET_DEV_CAPS {
+  /*IN*/ ULONG  ulRequestID;
+  /*IN*/ ULONG  ulDeviceID;
+  /*IN*/ ULONG  ulExtVersion;
+  /*OUT*/ LINE_DEV_CAPS  LineDevCaps;
+} NDIS_TAPI_GET_DEV_CAPS, *PNDIS_TAPI_GET_DEV_CAPS;
+
+typedef struct _NDIS_TAPI_GET_DEV_CONFIG {
+  /*IN*/ ULONG  ulRequestID;
+  /*IN*/ ULONG  ulDeviceID;
+  /*IN*/ ULONG  ulDeviceClassSize;
+  /*IN*/ ULONG  ulDeviceClassOffset;
+  /*OUT*/ VAR_STRING  DeviceConfig;
+} NDIS_TAPI_GET_DEV_CONFIG, *PNDIS_TAPI_GET_DEV_CONFIG;
+
+typedef struct _NDIS_TAPI_GET_EXTENSION_ID {
+  /*IN*/ ULONG  ulRequestID;
+  /*IN*/ ULONG  ulDeviceID;
+  /*OUT*/ LINE_EXTENSION_ID  LineExtensionID;
+} NDIS_TAPI_GET_EXTENSION_ID, *PNDIS_TAPI_GET_EXTENSION_ID;
+
+typedef struct _NDIS_TAPI_GET_ID {
+  /*IN*/ ULONG  ulRequestID;
+  /*IN*/ HDRV_LINE  hdLine;
+  /*IN*/ ULONG  ulAddressID;
+  /*IN*/ HDRV_CALL  hdCall;
+  /*IN*/ ULONG  ulSelect;
+  /*IN*/ ULONG  ulDeviceClassSize;
+  /*IN*/ ULONG  ulDeviceClassOffset;
+  /*OUT*/ VAR_STRING  DeviceID;
+} NDIS_TAPI_GET_ID, *PNDIS_TAPI_GET_ID;
+
+typedef struct _NDIS_TAPI_GET_LINE_DEV_STATUS {
+  /*IN*/ ULONG  ulRequestID;
+  /*IN*/ HDRV_LINE  hdLine;
+  /*OUT*/ LINE_DEV_STATUS  LineDevStatus;
+} NDIS_TAPI_GET_LINE_DEV_STATUS, *PNDIS_TAPI_GET_LINE_DEV_STATUS;
+
+typedef struct _NDIS_TAPI_MAKE_CALL {
+  /*IN*/ ULONG  ulRequestID;
+  /*IN*/ HDRV_LINE  hdLine;
+  /*IN*/ HTAPI_CALL  htCall;
+  /*OUT*/ HDRV_CALL  hdCall;
+  /*IN*/ ULONG  ulDestAddressSize;
+  /*IN*/ ULONG  ulDestAddressOffset;
+  /*IN*/ BOOLEAN  bUseDefaultLineCallParams;
+  /*IN*/ LINE_CALL_PARAMS  LineCallParams;
+} NDIS_TAPI_MAKE_CALL, *PNDIS_TAPI_MAKE_CALL;
+
+typedef struct _NDIS_TAPI_NEGOTIATE_EXT_VERSION {
+  /*IN*/ ULONG  ulRequestID;
+  /*IN*/ ULONG  ulDeviceID;
+  /*IN*/ ULONG  ulLowVersion;
+  /*IN*/ ULONG  ulHighVersion;
+  /*OUT*/ ULONG  ulExtVersion;
+} NDIS_TAPI_NEGOTIATE_EXT_VERSION, *PNDIS_TAPI_NEGOTIATE_EXT_VERSION;
+
+typedef struct _NDIS_TAPI_PROVIDER_INITIALIZE {
+  /*IN*/ ULONG  ulRequestID;
+  /*IN*/ ULONG  ulDeviceIDBase;
+  /*OUT*/ ULONG  ulNumLineDevs;
+  /*OUT*/ ULONG  ulProviderID;
+} NDIS_TAPI_PROVIDER_INITIALIZE, *PNDIS_TAPI_PROVIDER_INITIALIZE;
+
+
+#define CO_TAPI_VERSION                   NDIS_TAPI_CURRENT_VERSION
+
+#define CO_TAPI_FLAG_OUTGOING_CALL          0x00000001
+#define CO_TAPI_FLAG_INCOMING_CALL          0x00000002
+#define CO_TAPI_FLAG_USE_DEFAULT_CALLPARAMS	0x00000004
+
+#define AF_TAPI_SAP_TYPE                  0x00008000
+
+typedef struct _CO_TAPI_ADDRESS_CAPS {
+  /*IN*/ ULONG  ulLineID;
+  /*IN*/ ULONG  ulAddressID;
+  /*OUT*/ ULONG  ulFlags;
+  /*OUT*/ LINE_ADDRESS_CAPS  LineAddressCaps;
+} CO_TAPI_ADDRESS_CAPS, *PCO_TAPI_ADDRESS_CAPS;
+
+/* CO_TAPI_CM_CAPS.ulFlags constants */
+#define CO_TAPI_FLAG_PER_LINE_CAPS        0x00000001
+
+typedef struct _CO_TAPI_CM_CAPS {
+  /*OUT*/ ULONG  ulCoTapiVersion;
+  /*OUT*/ ULONG  ulNumLines;
+  /*OUT*/ ULONG  ulFlags;
+} CO_TAPI_CM_CAPS, *PCO_TAPI_CM_CAPS;
+
+typedef struct _CO_TAPI_CALL_DIAGNOSTICS {
+  /*OUT*/ ULONG  ulOrigin;
+  /*OUT*/ ULONG  ulReason;
+  /*OUT*/ NDIS_VAR_DATA_DESC  DiagInfo;
+} CO_TAPI_CALL_DIAGNOSTICS, *PCO_TAPI_CALL_DIAGNOSTICS;
+
+
+/* CO_TAPI_LINE_CAPS.ulFlags constants */
+#define CO_TAPI_FLAG_PER_ADDRESS_CAPS     0x00000001
+
+typedef struct _CO_TAPI_LINE_CAPS {
+  /*IN*/ ULONG  ulLineID;
+  /*OUT*/ ULONG  ulFlags;
+  /*OUT*/ LINE_DEV_CAPS  LineDevCaps;
+} CO_TAPI_LINE_CAPS, *PCO_TAPI_LINE_CAPS;
+
+typedef struct _CO_TAPI_TRANSLATE_NDIS_CALLPARAMS {
+  /*IN*/ ULONG  ulFlags;
+  /*IN*/ NDIS_VAR_DATA_DESC  NdisCallParams;
+  /*OUT*/ NDIS_VAR_DATA_DESC  LineCallInfo;
+} CO_TAPI_TRANSLATE_NDIS_CALLPARAMS, *PCO_TAPI_TRANSLATE_NDIS_CALLPARAMS;
+
+typedef struct _CO_TAPI_TRANSLATE_TAPI_CALLPARAMS {
+  /*IN*/ ULONG  ulLineID;
+  /*IN*/ ULONG  ulAddressID;
+  /*IN*/ ULONG  ulFlags;
+  /*IN*/ NDIS_VAR_DATA_DESC  DestAddress;
+  /*IN*/ NDIS_VAR_DATA_DESC  LineCallParams;
+  /*OUT*/ NDIS_VAR_DATA_DESC  NdisCallParams;
+} CO_TAPI_TRANSLATE_TAPI_CALLPARAMS, *PCO_TAPI_TRANSLATE_TAPI_CALLPARAMS;
+
+/* CO_TAPI_TRANSLATE_SAP.ulLineID constants */
+#define CO_TAPI_LINE_ID_UNSPECIFIED       0xFFFFFFFF
+
+/* CO_TAPI_TRANSLATE_SAP.ulAddressID constants */
+#define CO_TAPI_ADDRESS_ID_UNSPECIFIED    0xFFFFFFFF
+
+typedef struct _CO_TAPI_TRANSLATE_SAP {
+  /*IN*/ ULONG  ulLineID;
+  /*IN*/ ULONG  ulAddressID;
+  /*IN*/ ULONG  ulMediaModes;
+  /*IN*/ ULONG  Reserved;
+  /*OUT*/ ULONG  NumberOfSaps;
+  /*OUT*/ NDIS_VAR_DATA_DESC  NdisSapParams[1];
+} CO_AF_TAPI_SAP, *PCO_AF_TAPI_SAP;
+
+typedef struct _CO_AF_TAPI_INCOMING_CALL_PARAMETERS {
+  /*IN*/ ULONG  ulLineID;
+  /*IN*/ ULONG  ulAddressID;
+  /*IN*/ ULONG  ulFlags;
+  /*IN*/ NDIS_VAR_DATA_DESC  LineCallInfo;
+} CO_AF_TAPI_INCOMING_CALL_PARAMETERS, *PCO_AF_TAPI_INCOMING_CALL_PARAMETERS;
+
+typedef struct _CO_AF_TAPI_MAKE_CALL_PARAMETERS {
+  /*IN*/ ULONG  ulLineID;
+  /*IN*/ ULONG  ulAddressID;
+  /*IN*/ ULONG  ulFlags;
+  /*IN*/ NDIS_VAR_DATA_DESC  DestAddress;
+  /*IN*/ NDIS_VAR_DATA_DESC  LineCallParams;
+} CO_AF_TAPI_MAKE_CALL_PARAMETERS, *PCO_AF_TAPI_MAKE_CALL_PARAMETERS;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __NDISTAPI_H */
Index: Daodan/MinGW/include/ddk/ndiswan.h
===================================================================
--- Daodan/MinGW/include/ddk/ndiswan.h	(revision 1046)
+++ Daodan/MinGW/include/ddk/ndiswan.h	(revision 1046)
@@ -0,0 +1,251 @@
+/*
+ * ndiswan.h
+ *
+ * Definitions for NDIS WAN miniport drivers
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __NDISWAN_H
+#define __NDISWAN_H
+
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "ndis.h"
+
+#define NDIS_USE_WAN_WRAPPER         			0x00000001
+
+#define NDIS_STATUS_TAPI_INDICATION 			((NDIS_STATUS)0x40010080L)
+
+/* NDIS_WAN_INFO.FramingBits constants */
+#define RAS_FRAMING                     0x00000001
+#define RAS_COMPRESSION                 0x00000002
+
+#define ARAP_V1_FRAMING                 0x00000004
+#define ARAP_V2_FRAMING                 0x00000008
+#define ARAP_FRAMING                    (ARAP_V1_FRAMING | ARAP_V2_FRAMING)
+
+#define PPP_MULTILINK_FRAMING           0x00000010
+#define PPP_SHORT_SEQUENCE_HDR_FORMAT   0x00000020
+#define PPP_MC_MULTILINK_FRAMING        0x00000040
+
+#define PPP_FRAMING                     0x00000100
+#define PPP_COMPRESS_ADDRESS_CONTROL    0x00000200
+#define PPP_COMPRESS_PROTOCOL_FIELD     0x00000400
+#define PPP_ACCM_SUPPORTED              0x00000800
+
+#define SLIP_FRAMING                    0x00001000
+#define SLIP_VJ_COMPRESSION             0x00002000
+#define SLIP_VJ_AUTODETECT              0x00004000
+
+#define MEDIA_NRZ_ENCODING              0x00010000
+#define MEDIA_NRZI_ENCODING             0x00020000
+#define MEDIA_NLPID                     0x00040000
+
+#define RFC_1356_FRAMING                0x00100000
+#define RFC_1483_FRAMING                0x00200000
+#define RFC_1490_FRAMING                0x00400000
+#define LLC_ENCAPSULATION               0x00800000
+
+#define SHIVA_FRAMING                   0x01000000
+#define NBF_PRESERVE_MAC_ADDRESS        0x01000000
+
+#define PASS_THROUGH_MODE               0x10000000
+#define RAW_PASS_THROUGH_MODE           0x20000000
+
+#define TAPI_PROVIDER                   0x80000000
+
+typedef struct _NDIS_WAN_INFO {
+  /*OUT*/ ULONG  MaxFrameSize;
+  /*OUT*/ ULONG  MaxTransmit;
+  /*OUT*/ ULONG  HeaderPadding;
+  /*OUT*/ ULONG  TailPadding;
+  /*OUT*/ ULONG  Endpoints;
+  /*OUT*/ UINT  MemoryFlags;
+  /*OUT*/ NDIS_PHYSICAL_ADDRESS  HighestAcceptableAddress;
+  /*OUT*/ ULONG  FramingBits;
+  /*OUT*/ ULONG  DesiredACCM;
+} NDIS_WAN_INFO, *PNDIS_WAN_INFO;
+
+typedef struct _NDIS_WAN_GET_LINK_INFO {
+  /*IN*/ NDIS_HANDLE  NdisLinkHandle;
+  /*OUT*/ ULONG  MaxSendFrameSize;
+  /*OUT*/ ULONG  MaxRecvFrameSize;
+  /*OUT*/ ULONG  HeaderPadding;
+  /*OUT*/ ULONG  TailPadding;
+  /*OUT*/ ULONG  SendFramingBits;
+  /*OUT*/ ULONG  RecvFramingBits;
+  /*OUT*/ ULONG  SendCompressionBits;
+  /*OUT*/ ULONG  RecvCompressionBits;
+  /*OUT*/ ULONG  SendACCM;
+  /*OUT*/ ULONG  RecvACCM;
+} NDIS_WAN_GET_LINK_INFO, *PNDIS_WAN_GET_LINK_INFO;
+
+typedef struct _NDIS_WAN_SET_LINK_INFO {
+  /*IN*/ NDIS_HANDLE  NdisLinkHandle;
+  /*IN*/ ULONG  MaxSendFrameSize;
+  /*IN*/ ULONG  MaxRecvFrameSize;
+  /*IN*/ ULONG  HeaderPadding;
+  /*IN*/ ULONG  TailPadding;
+  /*IN*/ ULONG  SendFramingBits;
+  /*IN*/ ULONG  RecvFramingBits;
+  /*IN*/ ULONG  SendCompressionBits;
+  /*IN*/ ULONG  RecvCompressionBits;
+  /*IN*/ ULONG  SendACCM;
+  /*IN*/ ULONG  RecvACCM;
+} NDIS_WAN_SET_LINK_INFO, *PNDIS_WAN_SET_LINK_INFO;
+
+/* NDIS_WAN_COMPRESS_INFO.MSCompType constants */
+#define NDISWAN_COMPRESSION            		0x00000001
+#define NDISWAN_ENCRYPTION              	0x00000010
+#define NDISWAN_40_ENCRYPTION           	0x00000020
+#define NDISWAN_128_ENCRYPTION          	0x00000040
+#define NDISWAN_56_ENCRYPTION           	0x00000080
+#define NDISWAN_HISTORY_LESS            	0x01000000
+
+/* NDIS_WAN_COMPRESS_INFO.CompType constants */
+#define COMPTYPE_OUI											0
+#define COMPTYPE_NT31RAS									254
+#define COMPTYPE_NONE											255
+
+typedef struct _NDIS_WAN_COMPRESS_INFO {
+	UCHAR  SessionKey[8];
+	ULONG  MSCompType;
+	UCHAR  CompType;
+	USHORT  CompLength;
+	_ANONYMOUS_UNION union {
+		struct {
+			UCHAR  CompOUI[3];
+			UCHAR  CompSubType;
+			UCHAR  CompValues[32];
+		} Proprietary;
+		struct {
+			UCHAR  CompValues[32];
+		} Public;
+	} DUMMYUNIONNAME;
+} NDIS_WAN_COMPRESS_INFO;
+
+typedef NDIS_WAN_COMPRESS_INFO *PNDIS_WAN_COMPRESS_INFO;
+
+typedef struct _NDIS_WAN_GET_COMP_INFO {
+  /*IN*/ NDIS_HANDLE  NdisLinkHandle;
+  /*OUT*/ NDIS_WAN_COMPRESS_INFO  SendCapabilities;
+  /*OUT*/ NDIS_WAN_COMPRESS_INFO  RecvCapabilities;
+} NDIS_WAN_GET_COMP_INFO, *PNDIS_WAN_GET_COMP_INFO;
+
+typedef struct _NDIS_WAN_SET_COMP_INFO {
+  /*IN*/ NDIS_HANDLE  NdisLinkHandle;
+  /*IN*/ NDIS_WAN_COMPRESS_INFO  SendCapabilities;
+  /*IN*/ NDIS_WAN_COMPRESS_INFO  RecvCapabilities;
+} NDIS_WAN_SET_COMP_INFO, *PNDIS_WAN_SET_COMP_INFO;
+
+typedef struct _NDIS_WAN_GET_STATS_INFO {
+  /*IN*/ NDIS_HANDLE  NdisLinkHandle;
+  /*OUT*/ ULONG  BytesSent;
+  /*OUT*/ ULONG  BytesRcvd;
+  /*OUT*/ ULONG  FramesSent;
+  /*OUT*/ ULONG  FramesRcvd;
+  /*OUT*/ ULONG  CRCErrors;
+  /*OUT*/ ULONG  TimeoutErrors;
+  /*OUT*/ ULONG  AlignmentErrors;
+  /*OUT*/ ULONG  SerialOverrunErrors;
+  /*OUT*/ ULONG  FramingErrors;
+  /*OUT*/ ULONG  BufferOverrunErrors;
+  /*OUT*/ ULONG  BytesTransmittedUncompressed;
+  /*OUT*/ ULONG  BytesReceivedUncompressed;
+  /*OUT*/ ULONG  BytesTransmittedCompressed;
+  /*OUT*/ ULONG  BytesReceivedCompressed;
+} NDIS_WAN_GET_STATS_INFO, *PNDIS_WAN_GET_STATS_INFO;
+
+#define NdisMWanInitializeWrapper(NdisWrapperHandle,	\
+                                  SystemSpecific1,		\
+                                  SystemSpecific2,		\
+                                  SystemSpecific3)		\
+{                                                     \
+	NdisMInitializeWrapper(NdisWrapperHandle,          	\
+                         SystemSpecific1,          		\
+                         SystemSpecific2,          		\
+                         SystemSpecific3);         		\
+}
+
+typedef struct _NDIS_WAN_CO_INFO {
+  /*OUT*/ ULONG  MaxFrameSize;
+  /*OUT*/ ULONG  MaxSendWindow;
+  /*OUT*/ ULONG  FramingBits;
+  /*OUT*/ ULONG  DesiredACCM;
+} NDIS_WAN_CO_INFO, *PNDIS_WAN_CO_INFO;
+
+typedef struct _NDIS_WAN_CO_GET_LINK_INFO {
+  /*OUT*/ ULONG  MaxSendFrameSize;
+  /*OUT*/ ULONG  MaxRecvFrameSize;
+  /*OUT*/ ULONG  SendFramingBits;
+  /*OUT*/ ULONG  RecvFramingBits;
+  /*OUT*/ ULONG  SendCompressionBits;
+  /*OUT*/ ULONG  RecvCompressionBits;
+  /*OUT*/ ULONG  SendACCM;
+  /*OUT*/ ULONG  RecvACCM;
+} NDIS_WAN_CO_GET_LINK_INFO, *PNDIS_WAN_CO_GET_LINK_INFO;
+
+typedef struct _NDIS_WAN_CO_SET_LINK_INFO {
+  /*IN*/ ULONG  MaxSendFrameSize;
+  /*IN*/ ULONG  MaxRecvFrameSize;
+  /*IN*/ ULONG  SendFramingBits;
+  /*IN*/ ULONG  RecvFramingBits;
+  /*IN*/ ULONG  SendCompressionBits;
+  /*IN*/ ULONG  RecvCompressionBits;
+  /*IN*/ ULONG  SendACCM;
+  /*IN*/ ULONG  RecvACCM;
+} NDIS_WAN_CO_SET_LINK_INFO, *PNDIS_WAN_CO_SET_LINK_INFO;
+
+typedef struct _NDIS_WAN_CO_GET_COMP_INFO {
+  /*OUT*/ NDIS_WAN_COMPRESS_INFO  SendCapabilities;
+  /*OUT*/ NDIS_WAN_COMPRESS_INFO  RecvCapabilities;
+} NDIS_WAN_CO_GET_COMP_INFO, *PNDIS_WAN_CO_GET_COMP_INFO;
+
+typedef struct _NDIS_WAN_CO_SET_COMP_INFO {
+  /*IN*/ NDIS_WAN_COMPRESS_INFO  SendCapabilities;
+  /*IN*/ NDIS_WAN_COMPRESS_INFO  RecvCapabilities;
+} NDIS_WAN_CO_SET_COMP_INFO, *PNDIS_WAN_CO_SET_COMP_INFO;
+
+typedef struct _NDIS_WAN_CO_GET_STATS_INFO {
+  /*OUT*/ ULONG  BytesSent;
+  /*OUT*/ ULONG  BytesRcvd;
+  /*OUT*/ ULONG  FramesSent;
+  /*OUT*/ ULONG  FramesRcvd;
+  /*OUT*/ ULONG  CRCErrors;
+  /*OUT*/ ULONG  TimeoutErrors;
+  /*OUT*/ ULONG  AlignmentErrors;
+  /*OUT*/ ULONG  SerialOverrunErrors;
+  /*OUT*/ ULONG  FramingErrors;
+  /*OUT*/ ULONG  BufferOverrunErrors;
+  /*OUT*/ ULONG  BytesTransmittedUncompressed;
+  /*OUT*/ ULONG  BytesReceivedUncompressed;
+  /*OUT*/ ULONG  BytesTransmittedCompressed;
+  /*OUT*/ ULONG  BytesReceivedCompressed;
+} NDIS_WAN_CO_GET_STATS_INFO, *PNDIS_WAN_CO_GET_STATS_INFO;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __NDISWAN_H */
Index: Daodan/MinGW/include/ddk/netevent.h
===================================================================
--- Daodan/MinGW/include/ddk/netevent.h	(revision 1046)
+++ Daodan/MinGW/include/ddk/netevent.h	(revision 1046)
@@ -0,0 +1,42 @@
+/*
+ * netevent.h
+ *
+ * Network events
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __NETEVENT_H
+#define __NETEVENT_H
+
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#define EVENT_TRANSPORT_REGISTER_FAILED  0xC000232CL
+
+#define EVENT_TRANSPORT_ADAPTER_NOT_FOUND 0xC000232EL
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __NETEVENT_H */
Index: Daodan/MinGW/include/ddk/netpnp.h
===================================================================
--- Daodan/MinGW/include/ddk/netpnp.h	(revision 1046)
+++ Daodan/MinGW/include/ddk/netpnp.h	(revision 1046)
@@ -0,0 +1,69 @@
+/*
+ * netpnp.h
+ *
+ * Network Plug and Play event support
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __NETPNP_H
+#define __NETPNP_H
+
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef enum _NET_PNP_EVENT_CODE {
+  NetEventSetPower,
+  NetEventQueryPower,
+  NetEventQueryRemoveDevice,
+  NetEventCancelRemoveDevice,
+  NetEventReconfigure,
+  NetEventBindList,
+  NetEventBindsComplete,
+  NetEventPnPCapabilities,
+  NetEventMaximum
+} NET_PNP_EVENT_CODE, *PNET_PNP_EVENT_CODE;
+
+typedef struct _NET_PNP_EVENT {
+  NET_PNP_EVENT_CODE  NetEvent;
+  PVOID  Buffer;
+  ULONG  BufferLength;
+  ULONG_PTR  NdisReserved[4];
+  ULONG_PTR  TransportReserved[4];
+  ULONG_PTR  TdiReserved[4];
+  ULONG_PTR  TdiClientReserved[4];
+} NET_PNP_EVENT, *PNET_PNP_EVENT;
+
+typedef enum _NET_DEVICE_POWER_STATE {
+  NetDeviceStateUnspecified,
+  NetDeviceStateD0,
+  NetDeviceStateD1,
+  NetDeviceStateD2,
+  NetDeviceStateD3,
+  NetDeviceStateMaximum
+} NET_DEVICE_POWER_STATE, *PNET_DEVICE_POWER_STATE;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __NETPNP_H */
Index: Daodan/MinGW/include/ddk/newdev.h
===================================================================
--- Daodan/MinGW/include/ddk/newdev.h	(revision 1046)
+++ Daodan/MinGW/include/ddk/newdev.h	(revision 1046)
@@ -0,0 +1,66 @@
+/*
+ * newdev.h
+ *
+ * Driver installation DLL interface
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __NEWDEV_H
+#define __NEWDEV_H
+
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* UpdateDriverForPlugAndPlayDevices.InstallFlags constants */
+#define INSTALLFLAG_FORCE                 0x00000001
+#define INSTALLFLAG_READONLY              0x00000002
+#define INSTALLFLAG_NONINTERACTIVE        0x00000004
+#define INSTALLFLAG_BITS                  0x00000007
+
+BOOL WINAPI
+UpdateDriverForPlugAndPlayDevicesA(
+  HWND  hwndParent,
+  LPCSTR  HardwareId,
+  LPCSTR  FullInfPath,
+  DWORD  InstallFlags,
+  PBOOL  bRebootRequired  /*OPTIONAL*/);
+
+BOOL WINAPI
+UpdateDriverForPlugAndPlayDevicesW(
+  HWND  hwndParent,
+  LPCWSTR  HardwareId,
+  LPCWSTR  FullInfPath,
+  DWORD  InstallFlags,
+  PBOOL  bRebootRequired  /*OPTIONAL*/);
+
+#ifdef UNICODE
+#define UpdateDriverForPlugAndPlayDevices UpdateDriverForPlugAndPlayDevicesW
+#else
+#define UpdateDriverForPlugAndPlayDevices UpdateDriverForPlugAndPlayDevicesA
+#endif /* UNICODE */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __NEWDEV_H */
Index: Daodan/MinGW/include/ddk/ntapi.h
===================================================================
--- Daodan/MinGW/include/ddk/ntapi.h	(revision 1046)
+++ Daodan/MinGW/include/ddk/ntapi.h	(revision 1046)
@@ -0,0 +1,4073 @@
+/*
+ * ntapi.h
+ *
+ * Windows NT Native API
+ *
+ * Most structures in this file is obtained from Windows NT/2000 Native API
+ * Reference by Gary Nebbett, ISBN 1578701996.
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __NTAPI_H
+#define __NTAPI_H
+
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <stdarg.h>
+#include <winbase.h>
+#include "ntddk.h"
+#include "ntpoapi.h"
+
+#pragma pack(push,4)
+
+typedef struct _PEB *PPEB;
+
+/* FIXME: Unknown definitions */
+typedef PVOID POBJECT_TYPE_LIST;
+typedef PVOID PEXECUTION_STATE;
+typedef PVOID PLANGID;
+
+#ifndef NtCurrentProcess
+#define NtCurrentProcess() ((HANDLE)0xFFFFFFFF)
+#endif /* NtCurrentProcess */
+#ifndef NtCurrentThread
+#define NtCurrentThread() ((HANDLE)0xFFFFFFFE)
+#endif /* NtCurrentThread */
+
+/* System information and control */
+
+typedef enum _SYSTEM_INFORMATION_CLASS {
+	SystemInformationClassMin = 0,
+	SystemBasicInformation = 0,
+	SystemProcessorInformation = 1,
+	SystemPerformanceInformation = 2,
+	SystemTimeOfDayInformation = 3,
+	SystemPathInformation = 4,
+	SystemNotImplemented1 = 4,
+	SystemProcessInformation = 5,
+	SystemProcessesAndThreadsInformation = 5,
+	SystemCallCountInfoInformation = 6,
+	SystemCallCounts = 6,
+	SystemDeviceInformation = 7,
+	SystemConfigurationInformation = 7,
+	SystemProcessorPerformanceInformation = 8,
+	SystemProcessorTimes = 8,
+	SystemFlagsInformation = 9,
+	SystemGlobalFlag = 9,
+	SystemCallTimeInformation = 10,
+	SystemNotImplemented2 = 10,
+	SystemModuleInformation = 11,
+	SystemLocksInformation = 12,
+	SystemLockInformation = 12,
+	SystemStackTraceInformation = 13,
+	SystemNotImplemented3 = 13,
+	SystemPagedPoolInformation = 14,
+	SystemNotImplemented4 = 14,
+	SystemNonPagedPoolInformation = 15,
+	SystemNotImplemented5 = 15,
+	SystemHandleInformation = 16,
+	SystemObjectInformation = 17,
+	SystemPageFileInformation = 18,
+	SystemPagefileInformation = 18,
+	SystemVdmInstemulInformation = 19,
+	SystemInstructionEmulationCounts = 19,
+	SystemVdmBopInformation = 20,
+	SystemInvalidInfoClass1 = 20,
+	SystemFileCacheInformation = 21,
+	SystemCacheInformation = 21,
+	SystemPoolTagInformation = 22,
+	SystemInterruptInformation = 23,
+	SystemProcessorStatistics = 23,
+	SystemDpcBehaviourInformation = 24,
+	SystemDpcInformation = 24,
+	SystemFullMemoryInformation = 25,
+	SystemNotImplemented6 = 25,
+	SystemLoadImage = 26,
+	SystemUnloadImage = 27,
+	SystemTimeAdjustmentInformation = 28,
+	SystemTimeAdjustment = 28,
+	SystemSummaryMemoryInformation = 29,
+	SystemNotImplemented7 = 29,
+	SystemNextEventIdInformation = 30,
+	SystemNotImplemented8 = 30,
+	SystemEventIdsInformation = 31,
+	SystemNotImplemented9 = 31,
+	SystemCrashDumpInformation = 32,
+	SystemExceptionInformation = 33,
+	SystemCrashDumpStateInformation = 34,
+	SystemKernelDebuggerInformation = 35,
+	SystemContextSwitchInformation = 36,
+	SystemRegistryQuotaInformation = 37,
+	SystemLoadAndCallImage = 38,
+	SystemPrioritySeparation = 39,
+	SystemPlugPlayBusInformation = 40,
+	SystemNotImplemented10 = 40,
+	SystemDockInformation = 41,
+	SystemNotImplemented11 = 41,
+	/* SystemPowerInformation = 42, Conflicts with POWER_INFORMATION_LEVEL 1 */
+	SystemInvalidInfoClass2 = 42,
+	SystemProcessorSpeedInformation = 43,
+	SystemInvalidInfoClass3 = 43,
+	SystemCurrentTimeZoneInformation = 44,
+	SystemTimeZoneInformation = 44,
+	SystemLookasideInformation = 45,
+	SystemSetTimeSlipEvent = 46,
+	SystemCreateSession = 47,
+	SystemDeleteSession = 48,
+	SystemInvalidInfoClass4 = 49,
+	SystemRangeStartInformation = 50,
+	SystemVerifierInformation = 51,
+	SystemAddVerifier = 52,
+	SystemSessionProcessesInformation	= 53,
+	SystemInformationClassMax
+} SYSTEM_INFORMATION_CLASS;
+
+typedef struct _SYSTEM_BASIC_INFORMATION {
+	ULONG  Unknown;
+	ULONG  MaximumIncrement;
+	ULONG  PhysicalPageSize;
+	ULONG  NumberOfPhysicalPages;
+	ULONG  LowestPhysicalPage;
+	ULONG  HighestPhysicalPage;
+	ULONG  AllocationGranularity;
+	ULONG  LowestUserAddress;
+	ULONG  HighestUserAddress;
+	ULONG  ActiveProcessors;
+	UCHAR  NumberProcessors;
+} SYSTEM_BASIC_INFORMATION, *PSYSTEM_BASIC_INFORMATION;
+
+typedef struct _SYSTEM_PROCESSOR_INFORMATION {
+	USHORT  ProcessorArchitecture;
+	USHORT  ProcessorLevel;
+	USHORT  ProcessorRevision;
+	USHORT  Unknown;
+	ULONG  FeatureBits;
+} SYSTEM_PROCESSOR_INFORMATION, *PSYSTEM_PROCESSOR_INFORMATION;
+
+typedef struct _SYSTEM_PERFORMANCE_INFORMATION {
+	LARGE_INTEGER  IdleTime;
+	LARGE_INTEGER  ReadTransferCount;
+	LARGE_INTEGER  WriteTransferCount;
+	LARGE_INTEGER  OtherTransferCount;
+	ULONG  ReadOperationCount;
+	ULONG  WriteOperationCount;
+	ULONG  OtherOperationCount;
+	ULONG  AvailablePages;
+	ULONG  TotalCommittedPages;
+	ULONG  TotalCommitLimit;
+	ULONG  PeakCommitment;
+	ULONG  PageFaults;
+	ULONG  WriteCopyFaults;
+	ULONG  TransitionFaults;
+	ULONG  CacheTransitionFaults;
+	ULONG  DemandZeroFaults;
+	ULONG  PagesRead;
+	ULONG  PageReadIos;
+	ULONG	 CacheReads;
+	ULONG	 CacheIos;
+	ULONG  PagefilePagesWritten;
+	ULONG  PagefilePageWriteIos;
+	ULONG  MappedFilePagesWritten;
+	ULONG  MappedFilePageWriteIos;
+	ULONG  PagedPoolUsage;
+	ULONG  NonPagedPoolUsage;
+	ULONG  PagedPoolAllocs;
+	ULONG  PagedPoolFrees;
+	ULONG  NonPagedPoolAllocs;
+	ULONG  NonPagedPoolFrees;
+	ULONG  TotalFreeSystemPtes;
+	ULONG  SystemCodePage;
+	ULONG  TotalSystemDriverPages;
+	ULONG  TotalSystemCodePages;
+	ULONG  SmallNonPagedLookasideListAllocateHits;
+	ULONG  SmallPagedLookasideListAllocateHits;
+	ULONG  Reserved3;
+	ULONG  MmSystemCachePage;
+	ULONG  PagedPoolPage;
+	ULONG  SystemDriverPage;
+	ULONG  FastReadNoWait;
+	ULONG  FastReadWait;
+	ULONG  FastReadResourceMiss;
+	ULONG  FastReadNotPossible;
+	ULONG  FastMdlReadNoWait;
+	ULONG  FastMdlReadWait;
+	ULONG  FastMdlReadResourceMiss;
+	ULONG  FastMdlReadNotPossible;
+	ULONG  MapDataNoWait;
+	ULONG  MapDataWait;
+	ULONG  MapDataNoWaitMiss;
+	ULONG  MapDataWaitMiss;
+	ULONG  PinMappedDataCount;
+	ULONG  PinReadNoWait;
+	ULONG  PinReadWait;
+	ULONG  PinReadNoWaitMiss;
+	ULONG  PinReadWaitMiss;
+	ULONG  CopyReadNoWait;
+	ULONG  CopyReadWait;
+	ULONG  CopyReadNoWaitMiss;
+	ULONG  CopyReadWaitMiss;
+	ULONG  MdlReadNoWait;
+	ULONG  MdlReadWait;
+	ULONG  MdlReadNoWaitMiss;
+	ULONG  MdlReadWaitMiss;
+	ULONG  ReadAheadIos;
+	ULONG  LazyWriteIos;
+	ULONG  LazyWritePages;
+	ULONG  DataFlushes;
+	ULONG  DataPages;
+	ULONG  ContextSwitches;
+	ULONG  FirstLevelTbFills;
+	ULONG  SecondLevelTbFills;
+	ULONG  SystemCalls;
+} SYSTEM_PERFORMANCE_INFORMATION, *PSYSTEM_PERFORMANCE_INFORMATION;
+
+typedef struct _SYSTEM_TIME_OF_DAY_INFORMATION {
+	LARGE_INTEGER  BootTime;
+	LARGE_INTEGER  CurrentTime;
+	LARGE_INTEGER  TimeZoneBias;
+	ULONG  CurrentTimeZoneId;
+} SYSTEM_TIME_OF_DAY_INFORMATION, *PSYSTEM_TIME_OF_DAY_INFORMATION;
+
+typedef struct _VM_COUNTERS {
+	ULONG  PeakVirtualSize;
+	ULONG  VirtualSize;
+	ULONG  PageFaultCount;
+	ULONG  PeakWorkingSetSize;
+	ULONG  WorkingSetSize;
+	ULONG  QuotaPeakPagedPoolUsage;
+	ULONG  QuotaPagedPoolUsage;
+	ULONG  QuotaPeakNonPagedPoolUsage;
+	ULONG  QuotaNonPagedPoolUsage;
+	ULONG  PagefileUsage;
+	ULONG  PeakPagefileUsage;
+} VM_COUNTERS;
+
+typedef enum _THREAD_STATE {
+	StateInitialized,
+	StateReady,
+	StateRunning,
+	StateStandby,
+	StateTerminated,
+	StateWait,
+	StateTransition,
+	StateUnknown
+} THREAD_STATE;
+
+typedef struct _SYSTEM_THREADS {
+	LARGE_INTEGER  KernelTime;
+	LARGE_INTEGER  UserTime;
+	LARGE_INTEGER  CreateTime;
+	ULONG  WaitTime;
+	PVOID  StartAddress;
+	CLIENT_ID  ClientId;
+	KPRIORITY  Priority;
+	KPRIORITY  BasePriority;
+	ULONG  ContextSwitchCount;
+	THREAD_STATE  State;
+	KWAIT_REASON  WaitReason;
+} SYSTEM_THREADS, *PSYSTEM_THREADS;
+
+typedef struct _SYSTEM_PROCESSES {
+	ULONG  NextEntryDelta;
+	ULONG  ThreadCount;
+	ULONG  Reserved1[6];
+	LARGE_INTEGER  CreateTime;
+	LARGE_INTEGER  UserTime;
+	LARGE_INTEGER  KernelTime;
+	UNICODE_STRING  ProcessName;
+	KPRIORITY  BasePriority;
+	ULONG  ProcessId;
+	ULONG  InheritedFromProcessId;
+	ULONG  HandleCount;
+	ULONG  Reserved2[2];
+	VM_COUNTERS  VmCounters;
+	IO_COUNTERS  IoCounters;
+	SYSTEM_THREADS  Threads[1];
+} SYSTEM_PROCESSES, *PSYSTEM_PROCESSES;
+
+typedef struct _SYSTEM_CALLS_INFORMATION {
+	ULONG  Size;
+	ULONG  NumberOfDescriptorTables;
+	ULONG  NumberOfRoutinesInTable[1];
+	ULONG  CallCounts[ANYSIZE_ARRAY];
+} SYSTEM_CALLS_INFORMATION, *PSYSTEM_CALLS_INFORMATION;
+
+typedef struct _SYSTEM_CONFIGURATION_INFORMATION {
+	ULONG  DiskCount;
+	ULONG  FloppyCount;
+	ULONG  CdRomCount;
+	ULONG  TapeCount;
+	ULONG  SerialCount;
+	ULONG  ParallelCount;
+} SYSTEM_CONFIGURATION_INFORMATION, *PSYSTEM_CONFIGURATION_INFORMATION;
+
+typedef struct _SYSTEM_PROCESSOR_TIMES {
+	LARGE_INTEGER  IdleTime;
+	LARGE_INTEGER  KernelTime;
+	LARGE_INTEGER  UserTime;
+	LARGE_INTEGER  DpcTime;
+	LARGE_INTEGER  InterruptTime;
+	ULONG  InterruptCount;
+} SYSTEM_PROCESSOR_TIMES, *PSYSTEM_PROCESSOR_TIMES;
+
+/* SYSTEM_GLOBAL_FLAG.GlobalFlag constants */
+#define FLG_STOP_ON_EXCEPTION             0x00000001
+#define FLG_SHOW_LDR_SNAPS                0x00000002
+#define FLG_DEBUG_INITIAL_COMMAND         0x00000004
+#define FLG_STOP_ON_HUNG_GUI              0x00000008
+#define FLG_HEAP_ENABLE_TAIL_CHECK        0x00000010
+#define FLG_HEAP_ENABLE_FREE_CHECK        0x00000020
+#define FLG_HEAP_VALIDATE_PARAMETERS      0x00000040
+#define FLG_HEAP_VALIDATE_ALL             0x00000080
+#define FLG_POOL_ENABLE_TAIL_CHECK        0x00000100
+#define FLG_POOL_ENABLE_FREE_CHECK        0x00000200
+#define FLG_POOL_ENABLE_TAGGING           0x00000400
+#define FLG_HEAP_ENABLE_TAGGING           0x00000800
+#define FLG_USER_STACK_TRACE_DB           0x00001000
+#define FLG_KERNEL_STACK_TRACE_DB         0x00002000
+#define FLG_MAINTAIN_OBJECT_TYPELIST      0x00004000
+#define FLG_HEAP_ENABLE_TAG_BY_DLL        0x00008000
+#define FLG_IGNORE_DEBUG_PRIV             0x00010000
+#define FLG_ENABLE_CSRDEBUG               0x00020000
+#define FLG_ENABLE_KDEBUG_SYMBOL_LOAD     0x00040000
+#define FLG_DISABLE_PAGE_KERNEL_STACKS    0x00080000
+#define FLG_HEAP_ENABLE_CALL_TRACING      0x00100000
+#define FLG_HEAP_DISABLE_COALESCING       0x00200000
+#define FLG_ENABLE_CLOSE_EXCEPTIONS       0x00400000
+#define FLG_ENABLE_EXCEPTION_LOGGING      0x00800000
+#define FLG_ENABLE_DBGPRINT_BUFFERING     0x08000000
+
+typedef struct _SYSTEM_GLOBAL_FLAG {
+  ULONG  GlobalFlag;
+} SYSTEM_GLOBAL_FLAG, *PSYSTEM_GLOBAL_FLAG;
+
+typedef struct _SYSTEM_MODULE_INFORMATION_ENTRY {
+	ULONG	 Unknown1;
+	ULONG	 Unknown2;
+	PVOID  Base;
+	ULONG  Size;
+	ULONG  Flags;
+	USHORT  Index;
+  /* Length of module name not including the path, this
+     field contains valid value only for NTOSKRNL module */
+	USHORT	NameLength;
+	USHORT  LoadCount;
+	USHORT  PathLength;
+	CHAR  ImageName[256];
+} SYSTEM_MODULE_INFORMATION_ENTRY, *PSYSTEM_MODULE_INFORMATION_ENTRY;
+
+typedef struct _SYSTEM_MODULE_INFORMATION {
+	ULONG  Count;
+  SYSTEM_MODULE_INFORMATION_ENTRY Module[1];
+} SYSTEM_MODULE_INFORMATION, *PSYSTEM_MODULE_INFORMATION;
+
+typedef struct _SYSTEM_LOCK_INFORMATION {
+	PVOID  Address;
+	USHORT  Type;
+	USHORT  Reserved1;
+	ULONG  ExclusiveOwnerThreadId;
+	ULONG  ActiveCount;
+	ULONG  ContentionCount;
+	ULONG  Reserved2[2];
+	ULONG  NumberOfSharedWaiters;
+	ULONG  NumberOfExclusiveWaiters;
+} SYSTEM_LOCK_INFORMATION, *PSYSTEM_LOCK_INFORMATION;
+
+/*SYSTEM_HANDLE_INFORMATION.Flags cosntants */
+#define PROTECT_FROM_CLOSE                0x01
+#define INHERIT                           0x02
+
+typedef struct _SYSTEM_HANDLE_INFORMATION {
+	ULONG  ProcessId;
+	UCHAR  ObjectTypeNumber;
+	UCHAR  Flags;
+	USHORT  Handle;
+	PVOID  Object;
+	ACCESS_MASK  GrantedAccess;
+} SYSTEM_HANDLE_INFORMATION, *PSYSTEM_HANDLE_INFORMATION;
+
+typedef struct _SYSTEM_OBJECT_TYPE_INFORMATION {
+	ULONG  NextEntryOffset;
+	ULONG  ObjectCount;
+	ULONG  HandleCount;
+	ULONG  TypeNumber;
+	ULONG  InvalidAttributes;
+	GENERIC_MAPPING  GenericMapping;
+	ACCESS_MASK  ValidAccessMask;
+	POOL_TYPE  PoolType;
+	UCHAR  Unknown;
+	UNICODE_STRING  Name;
+} SYSTEM_OBJECT_TYPE_INFORMATION, *PSYSTEM_OBJECT_TYPE_INFORMATION;
+
+/* SYSTEM_OBJECT_INFORMATION.Flags constants */
+#define FLG_SYSOBJINFO_SINGLE_HANDLE_ENTRY    0x40
+#define FLG_SYSOBJINFO_DEFAULT_SECURITY_QUOTA 0x20
+#define FLG_SYSOBJINFO_PERMANENT              0x10
+#define FLG_SYSOBJINFO_EXCLUSIVE              0x08
+#define FLG_SYSOBJINFO_CREATOR_INFO           0x04
+#define FLG_SYSOBJINFO_KERNEL_MODE            0x02
+
+typedef struct _SYSTEM_OBJECT_INFORMATION {
+	ULONG  NextEntryOffset;
+	PVOID  Object;
+	ULONG  CreatorProcessId;
+	USHORT  Unknown;
+	USHORT  Flags;
+	ULONG  PointerCount;
+	ULONG  HandleCount;
+	ULONG  PagedPoolUsage;
+	ULONG  NonPagedPoolUsage;
+	ULONG  ExclusiveProcessId;
+	PSECURITY_DESCRIPTOR  SecurityDescriptor;
+	UNICODE_STRING  Name;
+} SYSTEM_OBJECT_INFORMATION, *PSYSTEM_OBJECT_INFORMATION;
+
+typedef struct _SYSTEM_PAGEFILE_INFORMATION {
+	ULONG  NextEntryOffset;
+	ULONG  CurrentSize;
+	ULONG  TotalUsed;
+	ULONG  PeakUsed;
+	UNICODE_STRING  FileName;
+} SYSTEM_PAGEFILE_INFORMATION, *PSYSTEM_PAGEFILE_INFORMATION;
+
+typedef struct _SYSTEM_INSTRUCTION_EMULATION_INFORMATION {
+	ULONG  SegmentNotPresent;
+	ULONG  TwoByteOpcode;
+	ULONG  ESprefix;
+	ULONG  CSprefix;
+	ULONG  SSprefix;
+	ULONG  DSprefix;
+	ULONG  FSPrefix;
+	ULONG  GSprefix;
+	ULONG  OPER32prefix;
+	ULONG  ADDR32prefix;
+	ULONG  INSB;
+	ULONG  INSW;
+	ULONG  OUTSB;
+	ULONG  OUTSW;
+	ULONG  PUSHFD;
+	ULONG  POPFD;
+	ULONG  INTnn;
+	ULONG  INTO;
+	ULONG  IRETD;
+	ULONG  INBimm;
+	ULONG  INWimm;
+	ULONG  OUTBimm;
+	ULONG  OUTWimm;
+	ULONG  INB;
+	ULONG  INW;
+	ULONG  OUTB;
+	ULONG  OUTW;
+	ULONG  LOCKprefix;
+	ULONG  REPNEprefix;
+	ULONG  REPprefix;
+	ULONG  HLT;
+	ULONG  CLI;
+	ULONG  STI;
+	ULONG  GenericInvalidOpcode;
+} SYSTEM_INSTRUCTION_EMULATION_INFORMATION, *PSYSTEM_INSTRUCTION_EMULATION_INFORMATION;
+
+typedef struct _SYSTEM_POOL_TAG_INFORMATION {
+	CHAR  Tag[4];
+	ULONG  PagedPoolAllocs;
+	ULONG  PagedPoolFrees;
+	ULONG  PagedPoolUsage;
+	ULONG  NonPagedPoolAllocs;
+	ULONG  NonPagedPoolFrees;
+	ULONG  NonPagedPoolUsage;
+} SYSTEM_POOL_TAG_INFORMATION, *PSYSTEM_POOL_TAG_INFORMATION;
+
+typedef struct _SYSTEM_PROCESSOR_STATISTICS {
+	ULONG  ContextSwitches;
+	ULONG  DpcCount;
+	ULONG  DpcRequestRate;
+	ULONG  TimeIncrement;
+	ULONG  DpcBypassCount;
+	ULONG  ApcBypassCount;
+} SYSTEM_PROCESSOR_STATISTICS, *PSYSTEM_PROCESSOR_STATISTICS;
+
+typedef struct _SYSTEM_DPC_INFORMATION {
+	ULONG  Reserved;
+	ULONG  MaximumDpcQueueDepth;
+	ULONG  MinimumDpcRate;
+	ULONG  AdjustDpcThreshold;
+	ULONG  IdealDpcRate;
+} SYSTEM_DPC_INFORMATION, *PSYSTEM_DPC_INFORMATION;
+
+typedef struct _SYSTEM_LOAD_IMAGE {
+	UNICODE_STRING  ModuleName;
+	PVOID  ModuleBase;
+	PVOID  SectionPointer;
+	PVOID  EntryPoint;
+	PVOID  ExportDirectory;
+} SYSTEM_LOAD_IMAGE, *PSYSTEM_LOAD_IMAGE;
+
+typedef struct _SYSTEM_UNLOAD_IMAGE {
+  PVOID  ModuleBase;
+} SYSTEM_UNLOAD_IMAGE, *PSYSTEM_UNLOAD_IMAGE;
+
+typedef struct _SYSTEM_QUERY_TIME_ADJUSTMENT {
+	ULONG  TimeAdjustment;
+	ULONG  MaximumIncrement;
+	BOOLEAN  TimeSynchronization;
+} SYSTEM_QUERY_TIME_ADJUSTMENT, *PSYSTEM_QUERY_TIME_ADJUSTMENT;
+
+typedef struct _SYSTEM_SET_TIME_ADJUSTMENT {
+	ULONG  TimeAdjustment;
+	BOOLEAN  TimeSynchronization;
+} SYSTEM_SET_TIME_ADJUSTMENT, *PSYSTEM_SET_TIME_ADJUSTMENT;
+
+typedef struct _SYSTEM_CRASH_DUMP_INFORMATION {
+	HANDLE  CrashDumpSectionHandle;
+	HANDLE  Unknown;
+} SYSTEM_CRASH_DUMP_INFORMATION, *PSYSTEM_CRASH_DUMP_INFORMATION;
+
+typedef struct _SYSTEM_EXCEPTION_INFORMATION {
+	ULONG  AlignmentFixupCount;
+	ULONG  ExceptionDispatchCount;
+	ULONG  FloatingEmulationCount;
+	ULONG  Reserved;
+} SYSTEM_EXCEPTION_INFORMATION, *PSYSTEM_EXCEPTION_INFORMATION;
+
+typedef struct _SYSTEM_CRASH_DUMP_STATE_INFORMATION {
+	ULONG  CrashDumpSectionExists;
+	ULONG  Unknown;
+} SYSTEM_CRASH_DUMP_STATE_INFORMATION, *PSYSTEM_CRASH_DUMP_STATE_INFORMATION;
+
+typedef struct _SYSTEM_KERNEL_DEBUGGER_INFORMATION {
+	BOOLEAN  DebuggerEnabled;
+	BOOLEAN  DebuggerNotPresent;
+} SYSTEM_KERNEL_DEBUGGER_INFORMATION, *PSYSTEM_KERNEL_DEBUGGER_INFORMATION;
+
+typedef struct _SYSTEM_CONTEXT_SWITCH_INFORMATION {
+	ULONG  ContextSwitches;
+	ULONG  ContextSwitchCounters[11];
+} SYSTEM_CONTEXT_SWITCH_INFORMATION, *PSYSTEM_CONTEXT_SWITCH_INFORMATION;
+
+typedef struct _SYSTEM_REGISTRY_QUOTA_INFORMATION {
+	ULONG  RegistryQuota;
+	ULONG  RegistryQuotaInUse;
+	ULONG  PagedPoolSize;
+} SYSTEM_REGISTRY_QUOTA_INFORMATION, *PSYSTEM_REGISTRY_QUOTA_INFORMATION;
+
+typedef struct _SYSTEM_LOAD_AND_CALL_IMAGE {
+  UNICODE_STRING  ModuleName;
+} SYSTEM_LOAD_AND_CALL_IMAGE, *PSYSTEM_LOAD_AND_CALL_IMAGE;
+
+typedef struct _SYSTEM_PRIORITY_SEPARATION {
+  ULONG  PrioritySeparation;
+} SYSTEM_PRIORITY_SEPARATION, *PSYSTEM_PRIORITY_SEPARATION;
+
+typedef struct _SYSTEM_TIME_ZONE_INFORMATION {
+	LONG  Bias;
+	WCHAR  StandardName[32];
+	LARGE_INTEGER  StandardDate;
+	LONG  StandardBias;
+	WCHAR  DaylightName[32];
+	LARGE_INTEGER  DaylightDate;
+	LONG  DaylightBias;
+} SYSTEM_TIME_ZONE_INFORMATION, *PSYSTEM_TIME_ZONE_INFORMATION;
+
+typedef struct _SYSTEM_LOOKASIDE_INFORMATION {
+	USHORT  Depth;
+	USHORT  MaximumDepth;
+	ULONG  TotalAllocates;
+	ULONG  AllocateMisses;
+	ULONG  TotalFrees;
+	ULONG  FreeMisses;
+	POOL_TYPE  Type;
+	ULONG  Tag;
+	ULONG  Size;
+} SYSTEM_LOOKASIDE_INFORMATION, *PSYSTEM_LOOKASIDE_INFORMATION;
+
+typedef struct _SYSTEM_SET_TIME_SLIP_EVENT {
+  HANDLE  TimeSlipEvent;
+} SYSTEM_SET_TIME_SLIP_EVENT, *PSYSTEM_SET_TIME_SLIP_EVENT;
+
+typedef struct _SYSTEM_CREATE_SESSION {
+  ULONG  SessionId;
+} SYSTEM_CREATE_SESSION, *PSYSTEM_CREATE_SESSION;
+
+typedef struct _SYSTEM_DELETE_SESSION {
+  ULONG  SessionId;
+} SYSTEM_DELETE_SESSION, *PSYSTEM_DELETE_SESSION;
+
+typedef struct _SYSTEM_RANGE_START_INFORMATION {
+  PVOID  SystemRangeStart;
+} SYSTEM_RANGE_START_INFORMATION, *PSYSTEM_RANGE_START_INFORMATION;
+
+typedef struct _SYSTEM_SESSION_PROCESSES_INFORMATION {
+	ULONG  SessionId;
+	ULONG  BufferSize;
+	PVOID  Buffer;
+} SYSTEM_SESSION_PROCESSES_INFORMATION, *PSYSTEM_SESSION_PROCESSES_INFORMATION;
+
+typedef struct _SYSTEM_POOL_BLOCK {
+	BOOLEAN  Allocated;
+	USHORT  Unknown;
+	ULONG  Size;
+	CHAR  Tag[4];
+} SYSTEM_POOL_BLOCK, *PSYSTEM_POOL_BLOCK;
+
+typedef struct _SYSTEM_POOL_BLOCKS_INFORMATION {
+	ULONG  PoolSize;
+	PVOID  PoolBase;
+	USHORT  Unknown;
+	ULONG  NumberOfBlocks;
+	SYSTEM_POOL_BLOCK  PoolBlocks[1];
+} SYSTEM_POOL_BLOCKS_INFORMATION, *PSYSTEM_POOL_BLOCKS_INFORMATION;
+
+typedef struct _SYSTEM_MEMORY_USAGE {
+	PVOID  Name;
+	USHORT  Valid;
+	USHORT  Standby;
+	USHORT  Modified;
+	USHORT  PageTables;
+} SYSTEM_MEMORY_USAGE, *PSYSTEM_MEMORY_USAGE;
+
+typedef struct _SYSTEM_MEMORY_USAGE_INFORMATION {
+  	ULONG  Reserved;
+	PVOID  EndOfData;
+	SYSTEM_MEMORY_USAGE  MemoryUsage[1];
+} SYSTEM_MEMORY_USAGE_INFORMATION, *PSYSTEM_MEMORY_USAGE_INFORMATION;
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtQuerySystemInformation(
+  /*IN*/ SYSTEM_INFORMATION_CLASS  SystemInformationClass,
+  /*IN OUT*/ PVOID  SystemInformation,
+  /*IN*/ ULONG  SystemInformationLength,
+  /*OUT*/ PULONG  ReturnLength  /*OPTIONAL*/);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwQuerySystemInformation(
+  /*IN*/ SYSTEM_INFORMATION_CLASS  SystemInformationClass,
+  /*IN OUT*/ PVOID  SystemInformation,
+  /*IN*/ ULONG  SystemInformationLength,
+  /*OUT*/ PULONG  ReturnLength  /*OPTIONAL*/);
+
+NTOSAPI
+NTAPI
+NTSTATUS
+NtQueryFullAttributesFile(
+  /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes,
+  /*OUT*/ PFILE_NETWORK_OPEN_INFORMATION FileInformation);
+
+NTOSAPI
+NTAPI
+NTSTATUS
+ZwQueryFullAttributesFile(
+  /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes,
+  /*OUT*/ PFILE_NETWORK_OPEN_INFORMATION FileInformation);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtSetSystemInformation(
+  /*IN*/ SYSTEM_INFORMATION_CLASS  SystemInformationClass,
+  /*IN OUT*/ PVOID  SystemInformation,
+  /*IN*/ ULONG  SystemInformationLength);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwSetSystemInformation(
+  /*IN*/ SYSTEM_INFORMATION_CLASS  SystemInformationClass,
+  /*IN OUT*/ PVOID  SystemInformation,
+  /*IN*/ ULONG  SystemInformationLength);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtQuerySystemEnvironmentValue(
+  /*IN*/ PUNICODE_STRING  Name,
+  /*OUT*/ PVOID  Value,
+  /*IN*/ ULONG  ValueLength,
+  /*OUT*/ PULONG  ReturnLength  /*OPTIONAL*/);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwQuerySystemEnvironmentValue(
+  /*IN*/ PUNICODE_STRING  Name,
+  /*OUT*/ PVOID  Value,
+  /*IN*/ ULONG  ValueLength,
+  /*OUT*/ PULONG  ReturnLength  /*OPTIONAL*/);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtSetSystemEnvironmentValue(
+  /*IN*/ PUNICODE_STRING  Name,
+  /*IN*/ PUNICODE_STRING  Value);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwSetSystemEnvironmentValue(
+  /*IN*/ PUNICODE_STRING  Name,
+  /*IN*/ PUNICODE_STRING  Value);
+
+typedef enum _SHUTDOWN_ACTION {
+	ShutdownNoReboot,
+	ShutdownReboot,
+	ShutdownPowerOff
+} SHUTDOWN_ACTION;
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtShutdownSystem(
+  /*IN*/ SHUTDOWN_ACTION  Action);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwShutdownSystem(
+  /*IN*/ SHUTDOWN_ACTION  Action);
+
+typedef enum _DEBUG_CONTROL_CODE {
+  DebugGetTraceInformation = 1,
+	DebugSetInternalBreakpoint,
+	DebugSetSpecialCall,
+	DebugClearSpecialCalls,
+	DebugQuerySpecialCalls,
+	DebugDbgBreakPoint,
+	DebugMaximum
+} DEBUG_CONTROL_CODE;
+
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtSystemDebugControl(
+  /*IN*/ DEBUG_CONTROL_CODE  ControlCode,
+  /*IN*/ PVOID  InputBuffer  /*OPTIONAL*/,
+  /*IN*/ ULONG  InputBufferLength,
+  /*OUT*/ PVOID  OutputBuffer  /*OPTIONAL*/,
+  /*IN*/ ULONG  OutputBufferLength,
+  /*OUT*/ PULONG  ReturnLength  /*OPTIONAL*/);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwSystemDebugControl(
+  /*IN*/ DEBUG_CONTROL_CODE  ControlCode,
+  /*IN*/ PVOID  InputBuffer  /*OPTIONAL*/,
+  /*IN*/ ULONG  InputBufferLength,
+  /*OUT*/ PVOID  OutputBuffer  /*OPTIONAL*/,
+  /*IN*/ ULONG  OutputBufferLength,
+  /*OUT*/ PULONG  ReturnLength  /*OPTIONAL*/);
+
+
+
+/* Objects, Object directories, and symbolic links */
+
+typedef enum _OBJECT_INFORMATION_CLASS {
+	ObjectBasicInformation,
+	ObjectNameInformation,
+	ObjectTypeInformation,
+	ObjectAllTypesInformation,
+	ObjectHandleInformation
+} OBJECT_INFORMATION_CLASS;
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtQueryObject(
+  /*IN*/ HANDLE  ObjectHandle,
+  /*IN*/ OBJECT_INFORMATION_CLASS  ObjectInformationClass,
+  /*OUT*/ PVOID  ObjectInformation,
+  /*IN*/ ULONG  ObjectInformationLength,
+  /*OUT*/ PULONG  ReturnLength  /*OPTIONAL*/);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwQueryObject(
+  /*IN*/ HANDLE  ObjectHandle,
+  /*IN*/ OBJECT_INFORMATION_CLASS  ObjectInformationClass,
+  /*OUT*/ PVOID  ObjectInformation,
+  /*IN*/ ULONG  ObjectInformationLength,
+  /*OUT*/ PULONG  ReturnLength  /*OPTIONAL*/);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtSetInformationObject(
+  /*IN*/ HANDLE  ObjectHandle,
+  /*IN*/ OBJECT_INFORMATION_CLASS  ObjectInformationClass,
+  /*IN*/ PVOID  ObjectInformation,
+  /*IN*/ ULONG  ObjectInformationLength);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwSetInformationObject(
+  /*IN*/ HANDLE  ObjectHandle,
+  /*IN*/ OBJECT_INFORMATION_CLASS  ObjectInformationClass,
+  /*IN*/ PVOID  ObjectInformation,
+  /*IN*/ ULONG  ObjectInformationLength);
+
+/* OBJECT_BASIC_INFORMATION.Attributes constants */
+/* also in winbase.h */
+#define HANDLE_FLAG_INHERIT               0x01
+#define HANDLE_FLAG_PROTECT_FROM_CLOSE    0x02
+/* end winbase.h */
+#define PERMANENT                         0x10
+#define EXCLUSIVE                         0x20
+
+typedef struct _OBJECT_BASIC_INFORMATION {
+	ULONG  Attributes;
+	ACCESS_MASK  GrantedAccess;
+	ULONG  HandleCount;
+	ULONG  PointerCount;
+	ULONG  PagedPoolUsage;
+	ULONG  NonPagedPoolUsage;
+	ULONG  Reserved[3];
+	ULONG  NameInformationLength;
+	ULONG  TypeInformationLength;
+	ULONG  SecurityDescriptorLength;
+	LARGE_INTEGER  CreateTime;
+} OBJECT_BASIC_INFORMATION, *POBJECT_BASIC_INFORMATION;
+#if 0
+/* FIXME: Enable later */
+typedef struct _OBJECT_TYPE_INFORMATION {
+	UNICODE_STRING  Name;
+	ULONG  ObjectCount;
+	ULONG  HandleCount;
+	ULONG  Reserved1[4];
+	ULONG  PeakObjectCount;
+	ULONG  PeakHandleCount;
+	ULONG  Reserved2[4];
+	ULONG  InvalidAttributes;
+	GENERIC_MAPPING  GenericMapping;
+	ULONG  ValidAccess;
+	UCHAR  Unknown;
+	BOOLEAN  MaintainHandleDatabase;
+	POOL_TYPE  PoolType;
+	ULONG  PagedPoolUsage;
+	ULONG  NonPagedPoolUsage;
+} OBJECT_TYPE_INFORMATION, *POBJECT_TYPE_INFORMATION;
+
+typedef struct _OBJECT_ALL_TYPES_INFORMATION {
+  ULONG  NumberOfTypes;
+  OBJECT_TYPE_INFORMATION  TypeInformation;
+} OBJECT_ALL_TYPES_INFORMATION, *POBJECT_ALL_TYPES_INFORMATION;
+#endif
+typedef struct _OBJECT_HANDLE_ATTRIBUTE_INFORMATION {
+  BOOLEAN  Inherit;
+  BOOLEAN  ProtectFromClose;
+} OBJECT_HANDLE_ATTRIBUTE_INFORMATION, *POBJECT_HANDLE_ATTRIBUTE_INFORMATION;
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtDuplicateObject(
+  /*IN*/ HANDLE  SourceProcessHandle,
+  /*IN*/ HANDLE  SourceHandle,
+  /*IN*/ HANDLE  TargetProcessHandle,
+  /*OUT*/ PHANDLE  TargetHandle  /*OPTIONAL*/,
+  /*IN*/ ACCESS_MASK  DesiredAccess,
+  /*IN*/ ULONG  Attributes,
+  /*IN*/ ULONG  Options);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwDuplicateObject(
+  /*IN*/ HANDLE  SourceProcessHandle,
+  /*IN*/ HANDLE  SourceHandle,
+  /*IN*/ HANDLE  TargetProcessHandle,
+  /*OUT*/ PHANDLE  TargetHandle  /*OPTIONAL*/,
+  /*IN*/ ACCESS_MASK  DesiredAccess,
+  /*IN*/ ULONG  Attributes,
+  /*IN*/ ULONG  Options);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtQuerySecurityObject(
+  /*IN*/ HANDLE Handle,
+  /*IN*/ SECURITY_INFORMATION  SecurityInformation,
+  /*OUT*/ PSECURITY_DESCRIPTOR  SecurityDescriptor,
+  /*IN*/ ULONG  SecurityDescriptorLength,
+  /*OUT*/ PULONG  ReturnLength);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwQuerySecurityObject(
+  /*IN*/ HANDLE Handle,
+  /*IN*/ SECURITY_INFORMATION  SecurityInformation,
+  /*OUT*/ PSECURITY_DESCRIPTOR  SecurityDescriptor,
+  /*IN*/ ULONG  SecurityDescriptorLength,
+  /*OUT*/ PULONG  ReturnLength);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtSetSecurityObject(
+  /*IN*/ HANDLE  Handle,
+  /*IN*/ SECURITY_INFORMATION  SecurityInformation,
+  /*IN*/ PSECURITY_DESCRIPTOR  SecurityDescriptor);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwSetSecurityObject(
+  /*IN*/ HANDLE  Handle,
+  /*IN*/ SECURITY_INFORMATION  SecurityInformation,
+  /*IN*/ PSECURITY_DESCRIPTOR  SecurityDescriptor);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtOpenDirectoryObject(
+  /*OUT*/ PHANDLE  DirectoryHandle,
+  /*IN*/ ACCESS_MASK  DesiredAccess,
+  /*IN*/ POBJECT_ATTRIBUTES  ObjectAttributes);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwOpenDirectoryObject(
+  /*OUT*/ PHANDLE  DirectoryHandle,
+  /*IN*/ ACCESS_MASK  DesiredAccess,
+  /*IN*/ POBJECT_ATTRIBUTES  ObjectAttributes);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtQueryDirectoryObject(
+  /*IN*/ HANDLE  DirectoryHandle,
+  /*OUT*/ PVOID  Buffer,
+  /*IN*/ ULONG  BufferLength,
+  /*IN*/ BOOLEAN  ReturnSingleEntry,
+  /*IN*/ BOOLEAN  RestartScan,
+  /*IN OUT*/ PULONG  Context,
+  /*OUT*/ PULONG  ReturnLength  /*OPTIONAL*/);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwQueryDirectoryObject(
+  /*IN*/ HANDLE  DirectoryHandle,
+  /*OUT*/ PVOID  Buffer,
+  /*IN*/ ULONG  BufferLength,
+  /*IN*/ BOOLEAN  ReturnSingleEntry,
+  /*IN*/ BOOLEAN  RestartScan,
+  /*IN OUT*/ PULONG  Context,
+  /*OUT*/ PULONG  ReturnLength  /*OPTIONAL*/);
+
+typedef struct _DIRECTORY_BASIC_INFORMATION {
+  UNICODE_STRING  ObjectName;
+  UNICODE_STRING  ObjectTypeName;
+} DIRECTORY_BASIC_INFORMATION, *PDIRECTORY_BASIC_INFORMATION;
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtCreateSymbolicLinkObject(
+  /*OUT*/ PHANDLE  SymbolicLinkHandle,
+  /*IN*/ ACCESS_MASK  DesiredAccess,
+  /*IN*/ POBJECT_ATTRIBUTES  ObjectAttributes,
+  /*IN*/ PUNICODE_STRING  TargetName);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwCreateSymbolicLinkObject(
+  /*OUT*/ PHANDLE  SymbolicLinkHandle,
+  /*IN*/ ACCESS_MASK  DesiredAccess,
+  /*IN*/ POBJECT_ATTRIBUTES  ObjectAttributes,
+  /*IN*/ PUNICODE_STRING  TargetName);
+
+
+
+
+/* Virtual memory */
+
+typedef enum _MEMORY_INFORMATION_CLASS {
+MemoryBasicInformation,
+MemoryWorkingSetList,
+MemorySectionName,
+MemoryBasicVlmInformation
+} MEMORY_INFORMATION_CLASS;
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtAllocateVirtualMemory(
+  /*IN*/ HANDLE  ProcessHandle,
+  /*IN OUT*/ PVOID  *BaseAddress,
+  /*IN*/ ULONG  ZeroBits,
+  /*IN OUT*/ PULONG  AllocationSize,
+  /*IN*/ ULONG  AllocationType,
+  /*IN*/ ULONG  Protect);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwAllocateVirtualMemory(
+  /*IN*/ HANDLE  ProcessHandle,
+  /*IN OUT*/ PVOID  *BaseAddress,
+  /*IN*/ ULONG  ZeroBits,
+  /*IN OUT*/ PULONG  AllocationSize,
+  /*IN*/ ULONG  AllocationType,
+  /*IN*/ ULONG  Protect);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtFreeVirtualMemory(
+  /*IN*/ HANDLE  ProcessHandle,
+  /*IN OUT*/ PVOID  *BaseAddress,
+  /*IN OUT*/ PULONG  FreeSize,
+  /*IN*/ ULONG  FreeType);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwFreeVirtualMemory(
+  /*IN*/ HANDLE  ProcessHandle,
+  /*IN OUT*/ PVOID  *BaseAddress,
+  /*IN OUT*/ PULONG  FreeSize,
+  /*IN*/ ULONG  FreeType);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtQueryVirtualMemory(
+  /*IN*/ HANDLE  ProcessHandle,
+  /*IN*/ PVOID  BaseAddress,
+  /*IN*/ MEMORY_INFORMATION_CLASS  MemoryInformationClass,
+  /*OUT*/ PVOID  MemoryInformation,
+  /*IN*/ ULONG  MemoryInformationLength,
+  /*OUT*/ PULONG  ReturnLength  /*OPTIONAL*/);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwQueryVirtualMemory(
+  /*IN*/ HANDLE  ProcessHandle,
+  /*IN*/ PVOID  BaseAddress,
+  /*IN*/ MEMORY_INFORMATION_CLASS  MemoryInformationClass,
+  /*OUT*/ PVOID  MemoryInformation,
+  /*IN*/ ULONG  MemoryInformationLength,
+  /*OUT*/ PULONG  ReturnLength  /*OPTIONAL*/);
+
+/* MEMORY_WORKING_SET_LIST.WorkingSetList constants */
+#define WSLE_PAGE_READONLY                0x001
+#define WSLE_PAGE_EXECUTE                 0x002
+#define WSLE_PAGE_READWRITE               0x004
+#define WSLE_PAGE_EXECUTE_READ            0x003
+#define WSLE_PAGE_WRITECOPY               0x005
+#define WSLE_PAGE_EXECUTE_READWRITE       0x006
+#define WSLE_PAGE_EXECUTE_WRITECOPY       0x007
+#define WSLE_PAGE_SHARE_COUNT_MASK        0x0E0
+#define WSLE_PAGE_SHAREABLE               0x100
+
+typedef struct _MEMORY_WORKING_SET_LIST {
+  ULONG  NumberOfPages;
+  ULONG  WorkingSetList[1];
+} MEMORY_WORKING_SET_LIST, *PMEMORY_WORKING_SET_LIST;
+
+typedef struct _MEMORY_SECTION_NAME {
+  UNICODE_STRING  SectionFileName;
+} MEMORY_SECTION_NAME, *PMEMORY_SECTION_NAME;
+
+/* Zw[Lock|Unlock]VirtualMemory.LockType constants */
+#define LOCK_VM_IN_WSL                    0x01
+#define LOCK_VM_IN_RAM                    0x02
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtLockVirtualMemory(
+  /*IN*/ HANDLE  ProcessHandle,
+  /*IN OUT*/ PVOID  *BaseAddress,
+  /*IN OUT*/ PULONG  LockSize,
+  /*IN*/ ULONG  LockType);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwLockVirtualMemory(
+  /*IN*/ HANDLE  ProcessHandle,
+  /*IN OUT*/ PVOID  *BaseAddress,
+  /*IN OUT*/ PULONG  LockSize,
+  /*IN*/ ULONG  LockType);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtUnlockVirtualMemory(
+  /*IN*/ HANDLE  ProcessHandle,
+  /*IN OUT*/ PVOID  *BaseAddress,
+  /*IN OUT*/ PULONG  LockSize,
+  /*IN*/ ULONG  LockType);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwUnlockVirtualMemory(
+  /*IN*/ HANDLE  ProcessHandle,
+  /*IN OUT*/ PVOID  *BaseAddress,
+  /*IN OUT*/ PULONG  LockSize,
+  /*IN*/ ULONG  LockType);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtReadVirtualMemory(
+  /*IN*/ HANDLE  ProcessHandle,
+  /*IN*/ PVOID  BaseAddress,
+  /*OUT*/ PVOID  Buffer,
+  /*IN*/ ULONG  BufferLength,
+  /*OUT*/ PULONG  ReturnLength  /*OPTIONAL*/);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwReadVirtualMemory(
+  /*IN*/ HANDLE  ProcessHandle,
+  /*IN*/ PVOID  BaseAddress,
+  /*OUT*/ PVOID  Buffer,
+  /*IN*/ ULONG  BufferLength,
+  /*OUT*/ PULONG  ReturnLength  /*OPTIONAL*/);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtWriteVirtualMemory(
+  /*IN*/ HANDLE  ProcessHandle,
+  /*IN*/ PVOID  BaseAddress,
+  /*IN*/ PVOID  Buffer,
+  /*IN*/ ULONG  BufferLength,
+  /*OUT*/ PULONG  ReturnLength  /*OPTIONAL*/);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwWriteVirtualMemory(
+  /*IN*/ HANDLE  ProcessHandle,
+  /*IN*/ PVOID  BaseAddress,
+  /*IN*/ PVOID  Buffer,
+  /*IN*/ ULONG  BufferLength,
+  /*OUT*/ PULONG  ReturnLength  /*OPTIONAL*/);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtProtectVirtualMemory(
+  /*IN*/ HANDLE  ProcessHandle,
+  /*IN OUT*/ PVOID  *BaseAddress,
+  /*IN OUT*/ PULONG  ProtectSize,
+  /*IN*/ ULONG  NewProtect,
+  /*OUT*/ PULONG  OldProtect);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwProtectVirtualMemory(
+  /*IN*/ HANDLE  ProcessHandle,
+  /*IN OUT*/ PVOID  *BaseAddress,
+  /*IN OUT*/ PULONG  ProtectSize,
+  /*IN*/ ULONG  NewProtect,
+  /*OUT*/ PULONG  OldProtect);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtFlushVirtualMemory(
+  /*IN*/ HANDLE  ProcessHandle,
+  /*IN OUT*/ PVOID  *BaseAddress,
+  /*IN OUT*/ PULONG  FlushSize,
+  /*OUT*/ PIO_STATUS_BLOCK  IoStatusBlock);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwFlushVirtualMemory(
+  /*IN*/ HANDLE  ProcessHandle,
+  /*IN OUT*/ PVOID  *BaseAddress,
+  /*IN OUT*/ PULONG  FlushSize,
+  /*OUT*/ PIO_STATUS_BLOCK  IoStatusBlock);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtAllocateUserPhysicalPages(
+  /*IN*/ HANDLE  ProcessHandle,
+  /*IN*/ PULONG  NumberOfPages,
+  /*OUT*/ PULONG  PageFrameNumbers);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwAllocateUserPhysicalPages(
+  /*IN*/ HANDLE  ProcessHandle,
+  /*IN*/ PULONG  NumberOfPages,
+  /*OUT*/ PULONG  PageFrameNumbers);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtFreeUserPhysicalPages(
+  /*IN*/ HANDLE  ProcessHandle,
+  /*IN OUT*/ PULONG  NumberOfPages,
+  /*IN*/ PULONG  PageFrameNumbers);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwFreeUserPhysicalPages(
+  /*IN*/ HANDLE  ProcessHandle,
+  /*IN OUT*/ PULONG  NumberOfPages,
+  /*IN*/ PULONG  PageFrameNumbers);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtMapUserPhysicalPages(
+  /*IN*/ PVOID  BaseAddress,
+  /*IN*/ PULONG  NumberOfPages,
+  /*IN*/ PULONG  PageFrameNumbers);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwMapUserPhysicalPages(
+  /*IN*/ PVOID  BaseAddress,
+  /*IN*/ PULONG  NumberOfPages,
+  /*IN*/ PULONG  PageFrameNumbers);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtMapUserPhysicalPagesScatter(
+  /*IN*/ PVOID  *BaseAddresses,
+  /*IN*/ PULONG  NumberOfPages,
+  /*IN*/ PULONG  PageFrameNumbers);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwMapUserPhysicalPagesScatter(
+  /*IN*/ PVOID  *BaseAddresses,
+  /*IN*/ PULONG  NumberOfPages,
+  /*IN*/ PULONG  PageFrameNumbers);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtGetWriteWatch(
+  /*IN*/ HANDLE  ProcessHandle,
+  /*IN*/ ULONG  Flags,
+  /*IN*/ PVOID  BaseAddress,
+  /*IN*/ ULONG  RegionSize,
+  /*OUT*/ PULONG  Buffer,
+  /*IN OUT*/ PULONG  BufferEntries,
+  /*OUT*/ PULONG  Granularity);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwGetWriteWatch(
+  /*IN*/ HANDLE  ProcessHandle,
+  /*IN*/ ULONG  Flags,
+  /*IN*/ PVOID  BaseAddress,
+  /*IN*/ ULONG  RegionSize,
+  /*OUT*/ PULONG  Buffer,
+  /*IN OUT*/ PULONG  BufferEntries,
+  /*OUT*/ PULONG  Granularity);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtResetWriteWatch(
+  /*IN*/ HANDLE  ProcessHandle,
+  /*IN*/ PVOID  BaseAddress,
+  /*IN*/ ULONG  RegionSize);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwResetWriteWatch(
+  /*IN*/ HANDLE  ProcessHandle,
+  /*IN*/ PVOID  BaseAddress,
+  /*IN*/ ULONG  RegionSize);
+
+
+
+
+/* Sections */
+
+typedef enum _SECTION_INFORMATION_CLASS {
+  SectionBasicInformation,
+  SectionImageInformation
+} SECTION_INFORMATION_CLASS;
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtCreateSection(
+  /*OUT*/ PHANDLE  SectionHandle,
+  /*IN*/ ACCESS_MASK  DesiredAccess,
+  /*IN*/ POBJECT_ATTRIBUTES  ObjectAttributes,
+  /*IN*/ PLARGE_INTEGER  SectionSize  /*OPTIONAL*/,
+  /*IN*/ ULONG  Protect,
+  /*IN*/ ULONG  Attributes,
+  /*IN*/ HANDLE  FileHandle);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwCreateSection(
+  /*OUT*/ PHANDLE  SectionHandle,
+  /*IN*/ ACCESS_MASK  DesiredAccess,
+  /*IN*/ POBJECT_ATTRIBUTES  ObjectAttributes,
+  /*IN*/ PLARGE_INTEGER  SectionSize  /*OPTIONAL*/,
+  /*IN*/ ULONG  Protect,
+  /*IN*/ ULONG  Attributes,
+  /*IN*/ HANDLE  FileHandle);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtQuerySection(
+  /*IN*/ HANDLE  SectionHandle,
+  /*IN*/ SECTION_INFORMATION_CLASS  SectionInformationClass,
+  /*OUT*/ PVOID  SectionInformation,
+  /*IN*/ ULONG  SectionInformationLength,
+  /*OUT*/ PULONG  ResultLength  /*OPTIONAL*/);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwQuerySection(
+  /*IN*/ HANDLE  SectionHandle,
+  /*IN*/ SECTION_INFORMATION_CLASS  SectionInformationClass,
+  /*OUT*/ PVOID  SectionInformation,
+  /*IN*/ ULONG  SectionInformationLength,
+  /*OUT*/ PULONG  ResultLength  /*OPTIONAL*/);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtExtendSection(
+  /*IN*/ HANDLE  SectionHandle,
+  /*IN*/ PLARGE_INTEGER  SectionSize);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwExtendSection(
+  /*IN*/ HANDLE  SectionHandle,
+  /*IN*/ PLARGE_INTEGER  SectionSize);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtAreMappedFilesTheSame(
+  /*IN*/ PVOID  Address1,
+  /*IN*/ PVOID  Address2);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwAreMappedFilesTheSame(
+  /*IN*/ PVOID  Address1,
+  /*IN*/ PVOID  Address2);
+
+
+
+
+/* Threads */
+
+typedef struct _USER_STACK {
+	PVOID  FixedStackBase;
+	PVOID  FixedStackLimit;
+	PVOID  ExpandableStackBase;
+	PVOID  ExpandableStackLimit;
+	PVOID  ExpandableStackBottom;
+} USER_STACK, *PUSER_STACK;
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtCreateThread(
+  /*OUT*/ PHANDLE  ThreadHandle,
+  /*IN*/ ACCESS_MASK  DesiredAccess,
+  /*IN*/ POBJECT_ATTRIBUTES  ObjectAttributes,
+  /*IN*/ HANDLE  ProcessHandle,
+  /*OUT*/ PCLIENT_ID  ClientId,
+  /*IN*/ PCONTEXT  ThreadContext,
+  /*IN*/ PUSER_STACK  UserStack,
+  /*IN*/ BOOLEAN  CreateSuspended);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwCreateThread(
+  /*OUT*/ PHANDLE  ThreadHandle,
+  /*IN*/ ACCESS_MASK  DesiredAccess,
+  /*IN*/ POBJECT_ATTRIBUTES  ObjectAttributes,
+  /*IN*/ HANDLE  ProcessHandle,
+  /*OUT*/ PCLIENT_ID  ClientId,
+  /*IN*/ PCONTEXT  ThreadContext,
+  /*IN*/ PUSER_STACK  UserStack,
+  /*IN*/ BOOLEAN  CreateSuspended);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtOpenThread(
+  /*OUT*/ PHANDLE  ThreadHandle,
+  /*IN*/ ACCESS_MASK  DesiredAccess,
+  /*IN*/ POBJECT_ATTRIBUTES  ObjectAttributes,
+  /*IN*/ PCLIENT_ID  ClientId);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwOpenThread(
+  /*OUT*/ PHANDLE  ThreadHandle,
+  /*IN*/ ACCESS_MASK  DesiredAccess,
+  /*IN*/ POBJECT_ATTRIBUTES  ObjectAttributes,
+  /*IN*/ PCLIENT_ID  ClientId);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtTerminateThread(
+  /*IN*/ HANDLE  ThreadHandle  /*OPTIONAL*/,
+  /*IN*/ NTSTATUS  ExitStatus);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwTerminateThread(
+  /*IN*/ HANDLE  ThreadHandle  /*OPTIONAL*/,
+  /*IN*/ NTSTATUS  ExitStatus);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtQueryInformationThread(
+  /*IN*/ HANDLE  ThreadHandle,
+  /*IN*/ THREADINFOCLASS  ThreadInformationClass,
+  /*OUT*/ PVOID  ThreadInformation,
+  /*IN*/ ULONG  ThreadInformationLength,
+  /*OUT*/ PULONG  ReturnLength  /*OPTIONAL*/);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwQueryInformationThread(
+  /*IN*/ HANDLE  ThreadHandle,
+  /*IN*/ THREADINFOCLASS  ThreadInformationClass,
+  /*OUT*/ PVOID  ThreadInformation,
+  /*IN*/ ULONG  ThreadInformationLength,
+  /*OUT*/ PULONG  ReturnLength  /*OPTIONAL*/);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtSetInformationThread(
+  /*IN*/ HANDLE  ThreadHandle,
+  /*IN*/ THREADINFOCLASS  ThreadInformationClass,
+  /*IN*/ PVOID  ThreadInformation,
+  /*IN*/ ULONG  ThreadInformationLength);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwSetInformationThread(
+  /*IN*/ HANDLE  ThreadHandle,
+  /*IN*/ THREADINFOCLASS  ThreadInformationClass,
+  /*IN*/ PVOID  ThreadInformation,
+  /*IN*/ ULONG  ThreadInformationLength);
+
+typedef struct _THREAD_BASIC_INFORMATION {
+	NTSTATUS  ExitStatus;
+	PNT_TIB  TebBaseAddress;
+	CLIENT_ID  ClientId;
+	KAFFINITY  AffinityMask;
+	KPRIORITY  Priority;
+	KPRIORITY  BasePriority;
+} THREAD_BASIC_INFORMATION, *PTHREAD_BASIC_INFORMATION;
+
+typedef struct _KERNEL_USER_TIMES {
+	LARGE_INTEGER  CreateTime;
+	LARGE_INTEGER  ExitTime;
+	LARGE_INTEGER  KernelTime;
+	LARGE_INTEGER  UserTime;
+} KERNEL_USER_TIMES, *PKERNEL_USER_TIMES;
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtSuspendThread(
+  /*IN*/ HANDLE  ThreadHandle,
+  /*OUT*/ PULONG  PreviousSuspendCount  /*OPTIONAL*/);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwSuspendThread(
+  /*IN*/ HANDLE  ThreadHandle,
+  /*OUT*/ PULONG  PreviousSuspendCount  /*OPTIONAL*/);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtResumeThread(
+  /*IN*/ HANDLE  ThreadHandle,
+  /*OUT*/ PULONG  PreviousSuspendCount  /*OPTIONAL*/);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwResumeThread(
+  /*IN*/ HANDLE  ThreadHandle,
+  /*OUT*/ PULONG  PreviousSuspendCount  /*OPTIONAL*/);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtGetContextThread(
+  /*IN*/ HANDLE  ThreadHandle,
+  /*OUT*/ PCONTEXT  Context);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwGetContextThread(
+  /*IN*/ HANDLE  ThreadHandle,
+  /*OUT*/ PCONTEXT  Context);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtSetContextThread(
+  /*IN*/ HANDLE  ThreadHandle,
+  /*IN*/ PCONTEXT  Context);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwSetContextThread(
+  /*IN*/ HANDLE  ThreadHandle,
+  /*IN*/ PCONTEXT  Context);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtQueueApcThread(
+  /*IN*/ HANDLE  ThreadHandle,
+  /*IN*/ PKNORMAL_ROUTINE  ApcRoutine,
+  /*IN*/ PVOID  ApcContext  /*OPTIONAL*/,
+  /*IN*/ PVOID  Argument1  /*OPTIONAL*/,
+  /*IN*/ PVOID  Argument2  /*OPTIONAL*/);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwQueueApcThread(
+  /*IN*/ HANDLE  ThreadHandle,
+  /*IN*/ PKNORMAL_ROUTINE  ApcRoutine,
+  /*IN*/ PVOID  ApcContext  /*OPTIONAL*/,
+  /*IN*/ PVOID  Argument1  /*OPTIONAL*/,
+  /*IN*/ PVOID  Argument2  /*OPTIONAL*/);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtTestAlert(
+  VOID);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwTestAlert(
+  VOID);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtAlertThread(
+  /*IN*/ HANDLE  ThreadHandle);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwAlertThread(
+  /*IN*/ HANDLE  ThreadHandle);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtAlertResumeThread(
+  /*IN*/ HANDLE  ThreadHandle,
+  /*OUT*/ PULONG  PreviousSuspendCount  /*OPTIONAL*/);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwAlertResumeThread(
+  /*IN*/ HANDLE  ThreadHandle,
+  /*OUT*/ PULONG  PreviousSuspendCount  /*OPTIONAL*/);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtRegisterThreadTerminatePort(
+  /*IN*/ HANDLE  PortHandle);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwRegisterThreadTerminatePort(
+  /*IN*/ HANDLE  PortHandle);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtImpersonateThread(
+  /*IN*/ HANDLE  ThreadHandle,
+  /*IN*/ HANDLE  TargetThreadHandle,
+  /*IN*/ PSECURITY_QUALITY_OF_SERVICE  SecurityQos);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwImpersonateThread(
+  /*IN*/ HANDLE  ThreadHandle,
+  /*IN*/ HANDLE  TargetThreadHandle,
+  /*IN*/ PSECURITY_QUALITY_OF_SERVICE  SecurityQos);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtImpersonateAnonymousToken(
+  /*IN*/ HANDLE  ThreadHandle);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwImpersonateAnonymousToken(
+  /*IN*/ HANDLE  ThreadHandle);
+
+
+
+
+/* Processes */
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtCreateProcess(
+  /*OUT*/ PHANDLE  ProcessHandle,
+  /*IN*/ ACCESS_MASK  DesiredAccess,
+  /*IN*/ POBJECT_ATTRIBUTES  ObjectAttributes,
+  /*IN*/ HANDLE  InheritFromProcessHandle,
+  /*IN*/ BOOLEAN  InheritHandles,
+  /*IN*/ HANDLE  SectionHandle  /*OPTIONAL*/,
+  /*IN*/ HANDLE  DebugPort  /*OPTIONAL*/,
+  /*IN*/ HANDLE  ExceptionPort  /*OPTIONAL*/);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwCreateProcess(
+  /*OUT*/ PHANDLE  ProcessHandle,
+  /*IN*/ ACCESS_MASK  DesiredAccess,
+  /*IN*/ POBJECT_ATTRIBUTES  ObjectAttributes,
+  /*IN*/ HANDLE  InheritFromProcessHandle,
+  /*IN*/ BOOLEAN  InheritHandles,
+  /*IN*/ HANDLE  SectionHandle  /*OPTIONAL*/,
+  /*IN*/ HANDLE  DebugPort  /*OPTIONAL*/,
+  /*IN*/ HANDLE  ExceptionPort  /*OPTIONAL*/);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtTerminateProcess(
+  /*IN*/ HANDLE  ProcessHandle  /*OPTIONAL*/,
+  /*IN*/ NTSTATUS  ExitStatus);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwTerminateProcess(
+  /*IN*/ HANDLE  ProcessHandle  /*OPTIONAL*/,
+  /*IN*/ NTSTATUS  ExitStatus);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtQueryInformationProcess(
+  /*IN*/ HANDLE  ProcessHandle,
+  /*IN*/ PROCESSINFOCLASS  ProcessInformationClass,
+  /*OUT*/ PVOID  ProcessInformation,
+  /*IN*/ ULONG  ProcessInformationLength,
+  /*OUT*/ PULONG  ReturnLength  /*OPTIONAL*/);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwQueryInformationProcess(
+  /*IN*/ HANDLE  ProcessHandle,
+  /*IN*/ PROCESSINFOCLASS  ProcessInformationClass,
+  /*OUT*/ PVOID  ProcessInformation,
+  /*IN*/ ULONG  ProcessInformationLength,
+  /*OUT*/ PULONG  ReturnLength  /*OPTIONAL*/);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtSetInformationProcess(
+  /*IN*/ HANDLE  ProcessHandle,
+  /*IN*/ PROCESSINFOCLASS  ProcessInformationClass,
+  /*IN*/ PVOID  ProcessInformation,
+  /*IN*/ ULONG  ProcessInformationLength);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwSetInformationProcess(
+  /*IN*/ HANDLE  ProcessHandle,
+  /*IN*/ PROCESSINFOCLASS  ProcessInformationClass,
+  /*IN*/ PVOID  ProcessInformation,
+  /*IN*/ ULONG  ProcessInformationLength);
+
+typedef struct _PROCESS_BASIC_INFORMATION {
+	NTSTATUS  ExitStatus;
+	PPEB  PebBaseAddress;
+	KAFFINITY  AffinityMask;
+	KPRIORITY  BasePriority;
+	ULONG  UniqueProcessId;
+	ULONG  InheritedFromUniqueProcessId;
+} PROCESS_BASIC_INFORMATION, *PPROCESS_BASIC_INFORMATION;
+
+typedef struct _PROCESS_ACCESS_TOKEN {
+  HANDLE  Token;
+  HANDLE  Thread;
+} PROCESS_ACCESS_TOKEN, *PPROCESS_ACCESS_TOKEN;
+
+/* DefaultHardErrorMode constants */
+/* also in winbase.h */
+#define SEM_FAILCRITICALERRORS            0x0001
+#define SEM_NOGPFAULTERRORBOX             0x0002
+#define SEM_NOALIGNMENTFAULTEXCEPT        0x0004
+#define SEM_NOOPENFILEERRORBOX            0x8000
+/* end winbase.h */
+typedef struct _POOLED_USAGE_AND_LIMITS {
+	ULONG  PeakPagedPoolUsage;
+	ULONG  PagedPoolUsage;
+	ULONG  PagedPoolLimit;
+	ULONG  PeakNonPagedPoolUsage;
+	ULONG  NonPagedPoolUsage;
+	ULONG  NonPagedPoolLimit;
+	ULONG  PeakPagefileUsage;
+	ULONG  PagefileUsage;
+	ULONG  PagefileLimit;
+} POOLED_USAGE_AND_LIMITS, *PPOOLED_USAGE_AND_LIMITS;
+
+typedef struct _PROCESS_WS_WATCH_INFORMATION {
+  PVOID  FaultingPc;
+  PVOID  FaultingVa;
+} PROCESS_WS_WATCH_INFORMATION, *PPROCESS_WS_WATCH_INFORMATION;
+
+/* PROCESS_PRIORITY_CLASS.PriorityClass constants */
+#define PC_IDLE                           1
+#define PC_NORMAL                         2
+#define PC_HIGH                           3
+#define PC_REALTIME                       4
+#define PC_BELOW_NORMAL                   5
+#define PC_ABOVE_NORMAL                   6
+
+typedef struct _PROCESS_PRIORITY_CLASS {
+  BOOLEAN  Foreground;
+  UCHAR  PriorityClass;
+} PROCESS_PRIORITY_CLASS, *PPROCESS_PRIORITY_CLASS;
+
+/* PROCESS_DEVICEMAP_INFORMATION.DriveType constants */
+#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
+
+typedef struct _PROCESS_DEVICEMAP_INFORMATION {
+	_ANONYMOUS_UNION union {
+		struct {
+		  HANDLE  DirectoryHandle;
+		} Set;
+		struct {
+		  ULONG  DriveMap;
+		  UCHAR  DriveType[32];
+		} Query;
+	} DUMMYUNIONNAME;
+} PROCESS_DEVICEMAP_INFORMATION, *PPROCESS_DEVICEMAP_INFORMATION;
+
+typedef struct _PROCESS_SESSION_INFORMATION {
+  ULONG  SessionId;
+} PROCESS_SESSION_INFORMATION, *PPROCESS_SESSION_INFORMATION;
+
+typedef struct _RTL_USER_PROCESS_PARAMETERS {
+	ULONG  AllocationSize;
+	ULONG  Size;
+	ULONG  Flags;
+	ULONG  DebugFlags;
+	HANDLE  hConsole;
+	ULONG  ProcessGroup;
+	HANDLE  hStdInput;
+	HANDLE  hStdOutput;
+	HANDLE  hStdError;
+	UNICODE_STRING  CurrentDirectoryName;
+	HANDLE  CurrentDirectoryHandle;
+	UNICODE_STRING  DllPath;
+	UNICODE_STRING  ImagePathName;
+	UNICODE_STRING  CommandLine;
+	PWSTR  Environment;
+	ULONG  dwX;
+	ULONG  dwY;
+	ULONG  dwXSize;
+	ULONG  dwYSize;
+	ULONG  dwXCountChars;
+	ULONG  dwYCountChars;
+	ULONG  dwFillAttribute;
+	ULONG  dwFlags;
+	ULONG  wShowWindow;
+	UNICODE_STRING  WindowTitle;
+	UNICODE_STRING  DesktopInfo;
+	UNICODE_STRING  ShellInfo;
+	UNICODE_STRING  RuntimeInfo;
+} RTL_USER_PROCESS_PARAMETERS, *PRTL_USER_PROCESS_PARAMETERS;
+
+NTSTATUS
+NTAPI
+RtlCreateProcessParameters(
+  /*OUT*/ PRTL_USER_PROCESS_PARAMETERS  *ProcessParameters,
+  /*IN*/ PUNICODE_STRING  ImageFile,
+  /*IN*/ PUNICODE_STRING  DllPath  /*OPTIONAL*/,
+  /*IN*/ PUNICODE_STRING  CurrentDirectory  /*OPTIONAL*/,
+  /*IN*/ PUNICODE_STRING  CommandLine  /*OPTIONAL*/,
+  /*IN*/ PWSTR  Environment /*OPTIONAL*/,
+  /*IN*/ PUNICODE_STRING  WindowTitle  /*OPTIONAL*/,
+  /*IN*/ PUNICODE_STRING  DesktopInfo  /*OPTIONAL*/,
+  /*IN*/ PUNICODE_STRING  ShellInfo  /*OPTIONAL*/,
+  /*IN*/ PUNICODE_STRING  RuntimeInfo  /*OPTIONAL*/);
+
+NTSTATUS
+NTAPI
+RtlDestroyProcessParameters(
+  /*IN*/ PRTL_USER_PROCESS_PARAMETERS  ProcessParameters);
+
+typedef struct _DEBUG_BUFFER {
+	HANDLE  SectionHandle;
+	PVOID  SectionBase;
+	PVOID  RemoteSectionBase;
+	ULONG  SectionBaseDelta;
+	HANDLE  EventPairHandle;
+	ULONG  Unknown[2];
+	HANDLE  RemoteThreadHandle;
+	ULONG  InfoClassMask;
+	ULONG  SizeOfInfo;
+	ULONG  AllocatedSize;
+	ULONG  SectionSize;
+	PVOID  ModuleInformation;
+	PVOID  BackTraceInformation;
+	PVOID  HeapInformation;
+	PVOID  LockInformation;
+	PVOID  Reserved[8];
+} DEBUG_BUFFER, *PDEBUG_BUFFER;
+
+PDEBUG_BUFFER
+NTAPI
+RtlCreateQueryDebugBuffer(
+  /*IN*/ ULONG  Size,
+  /*IN*/ BOOLEAN  EventPair);
+
+/* RtlQueryProcessDebugInformation.DebugInfoClassMask constants */
+#define PDI_MODULES                       0x01
+#define PDI_BACKTRACE                     0x02
+#define PDI_HEAPS                         0x04
+#define PDI_HEAP_TAGS                     0x08
+#define PDI_HEAP_BLOCKS                   0x10
+#define PDI_LOCKS                         0x20
+
+NTSTATUS
+NTAPI
+RtlQueryProcessDebugInformation(
+  /*IN*/ ULONG  ProcessId,
+  /*IN*/ ULONG  DebugInfoClassMask,
+  /*IN OUT*/ PDEBUG_BUFFER  DebugBuffer);
+
+NTSTATUS
+NTAPI
+RtlDestroyQueryDebugBuffer(
+  /*IN*/ PDEBUG_BUFFER  DebugBuffer);
+
+/* DEBUG_MODULE_INFORMATION.Flags constants */
+#define LDRP_STATIC_LINK                  0x00000002
+#define LDRP_IMAGE_DLL                    0x00000004
+#define LDRP_LOAD_IN_PROGRESS             0x00001000
+#define LDRP_UNLOAD_IN_PROGRESS           0x00002000
+#define LDRP_ENTRY_PROCESSED              0x00004000
+#define LDRP_ENTRY_INSERTED               0x00008000
+#define LDRP_CURRENT_LOAD                 0x00010000
+#define LDRP_FAILED_BUILTIN_LOAD          0x00020000
+#define LDRP_DONT_CALL_FOR_THREADS        0x00040000
+#define LDRP_PROCESS_ATTACH_CALLED        0x00080000
+#define LDRP_DEBUG_SYMBOLS_LOADED         0x00100000
+#define LDRP_IMAGE_NOT_AT_BASE            0x00200000
+#define LDRP_WX86_IGNORE_MACHINETYPE      0x00400000
+
+typedef struct _DEBUG_MODULE_INFORMATION {
+	ULONG  Reserved[2];
+	ULONG  Base;
+	ULONG  Size;
+	ULONG  Flags;
+	USHORT  Index;
+	USHORT  Unknown;
+	USHORT  LoadCount;
+	USHORT  ModuleNameOffset;
+	CHAR  ImageName[256];
+} DEBUG_MODULE_INFORMATION, *PDEBUG_MODULE_INFORMATION;
+
+typedef struct _DEBUG_HEAP_INFORMATION {
+	ULONG  Base;
+	ULONG  Flags;
+	USHORT  Granularity;
+	USHORT  Unknown;
+	ULONG  Allocated;
+	ULONG  Committed;
+	ULONG  TagCount;
+	ULONG  BlockCount;
+	ULONG  Reserved[7];
+	PVOID  Tags;
+	PVOID  Blocks;
+} DEBUG_HEAP_INFORMATION, *PDEBUG_HEAP_INFORMATION;
+
+typedef struct _DEBUG_LOCK_INFORMATION {
+	PVOID  Address;
+	USHORT  Type;
+	USHORT  CreatorBackTraceIndex;
+	ULONG  OwnerThreadId;
+	ULONG  ActiveCount;
+	ULONG  ContentionCount;
+	ULONG  EntryCount;
+	ULONG  RecursionCount;
+	ULONG  NumberOfSharedWaiters;
+	ULONG  NumberOfExclusiveWaiters;
+} DEBUG_LOCK_INFORMATION, *PDEBUG_LOCK_INFORMATION;
+
+
+
+/* Jobs */
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtCreateJobObject(
+  /*OUT*/ PHANDLE  JobHandle,
+  /*IN*/ ACCESS_MASK  DesiredAccess,
+  /*IN*/ POBJECT_ATTRIBUTES  ObjectAttributes);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwCreateJobObject(
+  /*OUT*/ PHANDLE  JobHandle,
+  /*IN*/ ACCESS_MASK  DesiredAccess,
+  /*IN*/ POBJECT_ATTRIBUTES  ObjectAttributes);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtOpenJobObject(
+  /*OUT*/ PHANDLE  JobHandle,
+  /*IN*/ ACCESS_MASK  DesiredAccess,
+  /*IN*/ POBJECT_ATTRIBUTES  ObjectAttributes);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwOpenJobObject(
+  /*OUT*/ PHANDLE  JobHandle,
+  /*IN*/ ACCESS_MASK  DesiredAccess,
+  /*IN*/ POBJECT_ATTRIBUTES  ObjectAttributes);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtTerminateJobObject(
+  /*IN*/ HANDLE  JobHandle,
+  /*IN*/ NTSTATUS  ExitStatus);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwTerminateJobObject(
+  /*IN*/ HANDLE  JobHandle,
+  /*IN*/ NTSTATUS  ExitStatus);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtAssignProcessToJobObject(
+  /*IN*/ HANDLE  JobHandle,
+  /*IN*/ HANDLE  ProcessHandle);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwAssignProcessToJobObject(
+  /*IN*/ HANDLE  JobHandle,
+  /*IN*/ HANDLE  ProcessHandle);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtQueryInformationJobObject(
+  /*IN*/ HANDLE  JobHandle,
+  /*IN*/ JOBOBJECTINFOCLASS  JobInformationClass,
+  /*OUT*/ PVOID  JobInformation,
+  /*IN*/ ULONG  JobInformationLength,
+  /*OUT*/ PULONG  ReturnLength  /*OPTIONAL*/);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwQueryInformationJobObject(
+  /*IN*/ HANDLE  JobHandle,
+  /*IN*/ JOBOBJECTINFOCLASS  JobInformationClass,
+  /*OUT*/ PVOID  JobInformation,
+  /*IN*/ ULONG  JobInformationLength,
+  /*OUT*/ PULONG  ReturnLength  /*OPTIONAL*/);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtSetInformationJobObject(
+  /*IN*/ HANDLE  JobHandle,
+  /*IN*/ JOBOBJECTINFOCLASS  JobInformationClass,
+  /*IN*/ PVOID  JobInformation,
+  /*IN*/ ULONG  JobInformationLength);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwSetInformationJobObject(
+  /*IN*/ HANDLE  JobHandle,
+  /*IN*/ JOBOBJECTINFOCLASS  JobInformationClass,
+  /*IN*/ PVOID  JobInformation,
+  /*IN*/ ULONG  JobInformationLength);
+
+
+/* Tokens */
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtCreateToken(
+  /*OUT*/ PHANDLE TokenHandle,
+  /*IN*/ ACCESS_MASK DesiredAccess,
+  /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes,
+  /*IN*/ TOKEN_TYPE Type,
+  /*IN*/ PLUID AuthenticationId,
+  /*IN*/ PLARGE_INTEGER ExpirationTime,
+  /*IN*/ PTOKEN_USER User,
+  /*IN*/ PTOKEN_GROUPS Groups,
+  /*IN*/ PTOKEN_PRIVILEGES Privileges,
+  /*IN*/ PTOKEN_OWNER Owner,
+  /*IN*/ PTOKEN_PRIMARY_GROUP PrimaryGroup,
+  /*IN*/ PTOKEN_DEFAULT_DACL DefaultDacl,
+  /*IN*/ PTOKEN_SOURCE Source
+);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwCreateToken(
+  /*OUT*/ PHANDLE TokenHandle,
+  /*IN*/ ACCESS_MASK DesiredAccess,
+  /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes,
+  /*IN*/ TOKEN_TYPE Type,
+  /*IN*/ PLUID AuthenticationId,
+  /*IN*/ PLARGE_INTEGER ExpirationTime,
+  /*IN*/ PTOKEN_USER User,
+  /*IN*/ PTOKEN_GROUPS Groups,
+  /*IN*/ PTOKEN_PRIVILEGES Privileges,
+  /*IN*/ PTOKEN_OWNER Owner,
+  /*IN*/ PTOKEN_PRIMARY_GROUP PrimaryGroup,
+  /*IN*/ PTOKEN_DEFAULT_DACL DefaultDacl,
+  /*IN*/ PTOKEN_SOURCE Source
+);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtOpenProcessToken(
+  /*IN*/ HANDLE  ProcessHandle,
+  /*IN*/ ACCESS_MASK  DesiredAccess,
+  /*OUT*/ PHANDLE  TokenHandle);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwOpenProcessToken(
+  /*IN*/ HANDLE  ProcessHandle,
+  /*IN*/ ACCESS_MASK  DesiredAccess,
+  /*OUT*/ PHANDLE  TokenHandle);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtOpenThreadToken(
+  /*IN*/ HANDLE  ThreadHandle,
+  /*IN*/ ACCESS_MASK  DesiredAccess,
+  /*IN*/ BOOLEAN  OpenAsSelf,
+  /*OUT*/ PHANDLE  TokenHandle);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwOpenThreadToken(
+  /*IN*/ HANDLE  ThreadHandle,
+  /*IN*/ ACCESS_MASK  DesiredAccess,
+  /*IN*/ BOOLEAN  OpenAsSelf,
+  /*OUT*/ PHANDLE  TokenHandle);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtDuplicateToken(
+  /*IN*/ HANDLE  ExistingTokenHandle,
+  /*IN*/ ACCESS_MASK  DesiredAccess,
+  /*IN*/ POBJECT_ATTRIBUTES  ObjectAttributes,
+  /*IN*/ BOOLEAN  EffectiveOnly,
+  /*IN*/ TOKEN_TYPE  TokenType,
+  /*OUT*/ PHANDLE  NewTokenHandle);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwDuplicateToken(
+  /*IN*/ HANDLE  ExistingTokenHandle,
+  /*IN*/ ACCESS_MASK  DesiredAccess,
+  /*IN*/ POBJECT_ATTRIBUTES  ObjectAttributes,
+  /*IN*/ BOOLEAN  EffectiveOnly,
+  /*IN*/ TOKEN_TYPE  TokenType,
+  /*OUT*/ PHANDLE  NewTokenHandle);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtFilterToken(
+  /*IN*/ HANDLE  ExistingTokenHandle,
+  /*IN*/ ULONG  Flags,
+  /*IN*/ PTOKEN_GROUPS  SidsToDisable,
+  /*IN*/ PTOKEN_PRIVILEGES  PrivilegesToDelete,
+  /*IN*/ PTOKEN_GROUPS  SidsToRestricted,
+  /*OUT*/ PHANDLE  NewTokenHandle);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwFilterToken(
+  /*IN*/ HANDLE  ExistingTokenHandle,
+  /*IN*/ ULONG  Flags,
+  /*IN*/ PTOKEN_GROUPS  SidsToDisable,
+  /*IN*/ PTOKEN_PRIVILEGES  PrivilegesToDelete,
+  /*IN*/ PTOKEN_GROUPS  SidsToRestricted,
+  /*OUT*/ PHANDLE  NewTokenHandle);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtAdjustPrivilegesToken(
+  /*IN*/ HANDLE  TokenHandle,
+  /*IN*/ BOOLEAN  DisableAllPrivileges,
+  /*IN*/ PTOKEN_PRIVILEGES  NewState,
+  /*IN*/ ULONG  BufferLength,
+  /*OUT*/ PTOKEN_PRIVILEGES  PreviousState  /*OPTIONAL*/,
+  /*OUT*/ PULONG  ReturnLength);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwAdjustPrivilegesToken(
+  /*IN*/ HANDLE  TokenHandle,
+  /*IN*/ BOOLEAN  DisableAllPrivileges,
+  /*IN*/ PTOKEN_PRIVILEGES  NewState,
+  /*IN*/ ULONG  BufferLength,
+  /*OUT*/ PTOKEN_PRIVILEGES  PreviousState  /*OPTIONAL*/,
+  /*OUT*/ PULONG  ReturnLength);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtAdjustGroupsToken(
+  /*IN*/ HANDLE  TokenHandle,
+  /*IN*/ BOOLEAN  ResetToDefault,
+  /*IN*/ PTOKEN_GROUPS  NewState,
+  /*IN*/ ULONG  BufferLength,
+  /*OUT*/ PTOKEN_GROUPS  PreviousState  /*OPTIONAL*/,
+  /*OUT*/ PULONG  ReturnLength);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwAdjustGroupsToken(
+  /*IN*/ HANDLE  TokenHandle,
+  /*IN*/ BOOLEAN  ResetToDefault,
+  /*IN*/ PTOKEN_GROUPS  NewState,
+  /*IN*/ ULONG  BufferLength,
+  /*OUT*/ PTOKEN_GROUPS  PreviousState  /*OPTIONAL*/,
+  /*OUT*/ PULONG  ReturnLength);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtQueryInformationToken(
+  /*IN*/ HANDLE  TokenHandle,
+  /*IN*/ TOKEN_INFORMATION_CLASS  TokenInformationClass,
+  /*OUT*/ PVOID  TokenInformation,
+  /*IN*/ ULONG  TokenInformationLength,
+  /*OUT*/ PULONG  ReturnLength);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwQueryInformationToken(
+  /*IN*/ HANDLE  TokenHandle,
+  /*IN*/ TOKEN_INFORMATION_CLASS  TokenInformationClass,
+  /*OUT*/ PVOID  TokenInformation,
+  /*IN*/ ULONG  TokenInformationLength,
+  /*OUT*/ PULONG  ReturnLength);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtSetInformationToken(
+  /*IN*/ HANDLE  TokenHandle,
+  /*IN*/ TOKEN_INFORMATION_CLASS  TokenInformationClass,
+  /*IN*/ PVOID  TokenInformation,
+  /*IN*/ ULONG  TokenInformationLength);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwSetInformationToken(
+  /*IN*/ HANDLE  TokenHandle,
+  /*IN*/ TOKEN_INFORMATION_CLASS  TokenInformationClass,
+  /*IN*/ PVOID  TokenInformation,
+  /*IN*/ ULONG  TokenInformationLength);
+
+
+
+
+/* Time */
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtQuerySystemTime(
+  /*OUT*/ PLARGE_INTEGER  CurrentTime);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwQuerySystemTime(
+  /*OUT*/ PLARGE_INTEGER  CurrentTime);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtSetSystemTime(
+  /*IN*/ PLARGE_INTEGER  NewTime,
+  /*OUT*/ PLARGE_INTEGER  OldTime  /*OPTIONAL*/);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwSetSystemTime(
+  /*IN*/ PLARGE_INTEGER  NewTime,
+  /*OUT*/ PLARGE_INTEGER  OldTime  /*OPTIONAL*/);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtQueryPerformanceCounter(
+  /*OUT*/ PLARGE_INTEGER  PerformanceCount,
+  /*OUT*/ PLARGE_INTEGER  PerformanceFrequency  /*OPTIONAL*/);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwQueryPerformanceCounter(
+  /*OUT*/ PLARGE_INTEGER  PerformanceCount,
+  /*OUT*/ PLARGE_INTEGER  PerformanceFrequency  /*OPTIONAL*/);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtQueryTimerResolution(
+  /*OUT*/ PULONG  CoarsestResolution,
+  /*OUT*/ PULONG  FinestResolution,
+  /*OUT*/ PULONG  ActualResolution);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwQueryTimerResolution(
+  /*OUT*/ PULONG  CoarsestResolution,
+  /*OUT*/ PULONG  FinestResolution,
+  /*OUT*/ PULONG  ActualResolution);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtDelayExecution(
+  /*IN*/ BOOLEAN  Alertable,
+  /*IN*/ PLARGE_INTEGER  Interval);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwDelayExecution(
+  /*IN*/ BOOLEAN  Alertable,
+  /*IN*/ PLARGE_INTEGER  Interval);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtYieldExecution(
+  VOID);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwYieldExecution(
+  VOID);
+
+NTOSAPI
+ULONG
+NTAPI
+NtGetTickCount(
+  VOID);
+
+NTOSAPI
+ULONG
+NTAPI
+ZwGetTickCount(
+  VOID);
+
+
+
+
+/* Execution profiling */
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtCreateProfile(
+  /*OUT*/ PHANDLE  ProfileHandle,
+  /*IN*/ HANDLE  ProcessHandle,
+  /*IN*/ PVOID  Base,
+  /*IN*/ ULONG  Size,
+  /*IN*/ ULONG  BucketShift,
+  /*IN*/ PULONG  Buffer,
+  /*IN*/ ULONG  BufferLength,
+  /*IN*/ KPROFILE_SOURCE  Source,
+  /*IN*/ ULONG  ProcessorMask);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwCreateProfile(
+  /*OUT*/ PHANDLE  ProfileHandle,
+  /*IN*/ HANDLE  ProcessHandle,
+  /*IN*/ PVOID  Base,
+  /*IN*/ ULONG  Size,
+  /*IN*/ ULONG  BucketShift,
+  /*IN*/ PULONG  Buffer,
+  /*IN*/ ULONG  BufferLength,
+  /*IN*/ KPROFILE_SOURCE  Source,
+  /*IN*/ ULONG  ProcessorMask);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtSetIntervalProfile(
+  /*IN*/ ULONG  Interval,
+  /*IN*/ KPROFILE_SOURCE  Source);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwSetIntervalProfile(
+  /*IN*/ ULONG  Interval,
+  /*IN*/ KPROFILE_SOURCE  Source);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtQueryIntervalProfile(
+  /*IN*/ KPROFILE_SOURCE  Source,
+  /*OUT*/ PULONG  Interval);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwQueryIntervalProfile(
+  /*IN*/ KPROFILE_SOURCE  Source,
+  /*OUT*/ PULONG  Interval);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtStartProfile(
+  /*IN*/ HANDLE  ProfileHandle);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwStartProfile(
+  /*IN*/ HANDLE  ProfileHandle);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtStopProfile(
+  /*IN*/ HANDLE  ProfileHandle);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwStopProfile(
+  /*IN*/ HANDLE  ProfileHandle);
+
+/* Local Procedure Call (LPC) */
+
+typedef struct _LPC_MESSAGE {
+	USHORT  DataSize;
+	USHORT  MessageSize;
+	USHORT  MessageType;
+	USHORT  VirtualRangesOffset;
+	CLIENT_ID  ClientId;
+	ULONG  MessageId;
+	ULONG  SectionSize;
+	UCHAR  Data[ANYSIZE_ARRAY];
+} LPC_MESSAGE, *PLPC_MESSAGE;
+
+#define LPC_MESSAGE_BASE_SIZE	24
+
+typedef enum _LPC_TYPE {
+	LPC_NEW_MESSAGE,
+	LPC_REQUEST,
+	LPC_REPLY,
+	LPC_DATAGRAM,
+	LPC_LOST_REPLY,
+	LPC_PORT_CLOSED,
+	LPC_CLIENT_DIED,
+	LPC_EXCEPTION,
+	LPC_DEBUG_EVENT,
+	LPC_ERROR_EVENT,
+	LPC_CONNECTION_REQUEST,
+	LPC_CONNECTION_REFUSED,
+  LPC_MAXIMUM
+} LPC_TYPE;
+
+typedef struct _LPC_SECTION_WRITE {
+	ULONG  Length;
+	HANDLE  SectionHandle;
+	ULONG  SectionOffset;
+	ULONG  ViewSize;
+	PVOID  ViewBase;
+	PVOID  TargetViewBase;
+} LPC_SECTION_WRITE, *PLPC_SECTION_WRITE;
+
+typedef struct _LPC_SECTION_READ {
+	ULONG  Length;
+	ULONG  ViewSize;
+	PVOID  ViewBase;
+} LPC_SECTION_READ, *PLPC_SECTION_READ;
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtCreatePort(
+  /*OUT*/ PHANDLE  PortHandle,
+  /*IN*/ POBJECT_ATTRIBUTES  ObjectAttributes,
+  /*IN*/ ULONG  MaxDataSize,
+  /*IN*/ ULONG  MaxMessageSize,
+  /*IN*/ ULONG  Reserved);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwCreatePort(
+  /*OUT*/ PHANDLE  PortHandle,
+  /*IN*/ POBJECT_ATTRIBUTES  ObjectAttributes,
+  /*IN*/ ULONG  MaxDataSize,
+  /*IN*/ ULONG  MaxMessageSize,
+  /*IN*/ ULONG  Reserved);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtCreateWaitablePort(
+  /*OUT*/ PHANDLE  PortHandle,
+  /*IN*/ POBJECT_ATTRIBUTES  ObjectAttributes,
+  /*IN*/ ULONG  MaxDataSize,
+  /*IN*/ ULONG  MaxMessageSize,
+  /*IN*/ ULONG  Reserved);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwCreateWaitablePort(
+  /*OUT*/ PHANDLE  PortHandle,
+  /*IN*/ POBJECT_ATTRIBUTES  ObjectAttributes,
+  /*IN*/ ULONG  MaxDataSize,
+  /*IN*/ ULONG  MaxMessageSize,
+  /*IN*/ ULONG  Reserved);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtConnectPort(
+  /*OUT*/ PHANDLE  PortHandle,
+  /*IN*/ PUNICODE_STRING  PortName,
+  /*IN*/ PSECURITY_QUALITY_OF_SERVICE  SecurityQos,
+  /*IN OUT*/ PLPC_SECTION_WRITE  WriteSection  /*OPTIONAL*/,
+  /*IN OUT*/ PLPC_SECTION_READ  ReadSection  /*OPTIONAL*/,
+  /*OUT*/ PULONG  MaxMessageSize  /*OPTIONAL*/,
+  /*IN OUT*/ PVOID  ConnectData  /*OPTIONAL*/,
+  /*IN OUT*/ PULONG  ConnectDataLength  /*OPTIONAL*/);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwConnectPort(
+  /*OUT*/ PHANDLE  PortHandle,
+  /*IN*/ PUNICODE_STRING  PortName,
+  /*IN*/ PSECURITY_QUALITY_OF_SERVICE  SecurityQos,
+  /*IN OUT*/ PLPC_SECTION_WRITE  WriteSection  /*OPTIONAL*/,
+  /*IN OUT*/ PLPC_SECTION_READ  ReadSection  /*OPTIONAL*/,
+  /*OUT*/ PULONG  MaxMessageSize  /*OPTIONAL*/,
+  /*IN OUT*/ PVOID  ConnectData  /*OPTIONAL*/,
+  /*IN OUT*/ PULONG  ConnectDataLength  /*OPTIONAL*/);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtListenPort(
+  /*IN*/ HANDLE  PortHandle,
+  /*OUT*/ PLPC_MESSAGE  Message);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwListenPort(
+  /*IN*/ HANDLE  PortHandle,
+  /*OUT*/ PLPC_MESSAGE  Message);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtAcceptConnectPort(
+  /*OUT*/ PHANDLE  PortHandle,
+  /*IN*/ ULONG  PortIdentifier,
+  /*IN*/ PLPC_MESSAGE  Message,
+  /*IN*/ BOOLEAN  Accept,
+  /*IN OUT*/ PLPC_SECTION_WRITE  WriteSection  /*OPTIONAL*/,
+  /*IN OUT*/ PLPC_SECTION_READ  ReadSection  /*OPTIONAL*/);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwAcceptConnectPort(
+  /*OUT*/ PHANDLE  PortHandle,
+  /*IN*/ ULONG  PortIdentifier,
+  /*IN*/ PLPC_MESSAGE  Message,
+  /*IN*/ BOOLEAN  Accept,
+  /*IN OUT*/ PLPC_SECTION_WRITE  WriteSection  /*OPTIONAL*/,
+  /*IN OUT*/ PLPC_SECTION_READ  ReadSection  /*OPTIONAL*/);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtCompleteConnectPort(
+  /*IN*/ HANDLE  PortHandle);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwCompleteConnectPort(
+  /*IN*/ HANDLE  PortHandle);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtRequestPort(
+  /*IN*/ HANDLE  PortHandle,
+  /*IN*/ PLPC_MESSAGE  RequestMessage);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwRequestPort(
+  /*IN*/ HANDLE  PortHandle,
+  /*IN*/ PLPC_MESSAGE  RequestMessage);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtRequestWaitReplyPort(
+  /*IN*/ HANDLE  PortHandle,
+  /*IN*/ PLPC_MESSAGE  RequestMessage,
+  /*OUT*/ PLPC_MESSAGE  ReplyMessage);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwRequestWaitReplyPort(
+  /*IN*/ HANDLE  PortHandle,
+  /*IN*/ PLPC_MESSAGE  RequestMessage,
+  /*OUT*/ PLPC_MESSAGE  ReplyMessage);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtReplyPort(
+  /*IN*/ HANDLE  PortHandle,
+  /*IN*/ PLPC_MESSAGE  ReplyMessage);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwReplyPort(
+  /*IN*/ HANDLE  PortHandle,
+  /*IN*/ PLPC_MESSAGE  ReplyMessage);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtReplyWaitReplyPort(
+  /*IN*/ HANDLE  PortHandle,
+  /*IN OUT*/ PLPC_MESSAGE  ReplyMessage);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwReplyWaitReplyPort(
+  /*IN*/ HANDLE  PortHandle,
+  /*IN OUT*/ PLPC_MESSAGE  ReplyMessage);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtReplyWaitReceivePort(
+  /*IN*/ HANDLE  PortHandle,
+  /*OUT*/ PULONG  PortIdentifier  /*OPTIONAL*/,
+  /*IN*/ PLPC_MESSAGE  ReplyMessage  /*OPTIONAL*/,
+  /*OUT*/ PLPC_MESSAGE  Message);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwReplyWaitReceivePort(
+  /*IN*/ HANDLE  PortHandle,
+  /*OUT*/ PULONG  PortIdentifier  /*OPTIONAL*/,
+  /*IN*/ PLPC_MESSAGE  ReplyMessage  /*OPTIONAL*/,
+  /*OUT*/ PLPC_MESSAGE  Message);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtReplyWaitReceivePortEx(
+  /*IN*/ HANDLE  PortHandle,
+  /*OUT*/ PULONG  PortIdentifier  /*OPTIONAL*/,
+  /*IN*/ PLPC_MESSAGE  ReplyMessage  /*OPTIONAL*/,
+  /*OUT*/ PLPC_MESSAGE  Message,
+  /*IN*/ PLARGE_INTEGER  Timeout);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwReplyWaitReceivePortEx(
+  /*IN*/ HANDLE  PortHandle,
+  /*OUT*/ PULONG  PortIdentifier  /*OPTIONAL*/,
+  /*IN*/ PLPC_MESSAGE  ReplyMessage  /*OPTIONAL*/,
+  /*OUT*/ PLPC_MESSAGE  Message,
+  /*IN*/ PLARGE_INTEGER  Timeout);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtReadRequestData(
+  /*IN*/ HANDLE  PortHandle,
+  /*IN*/ PLPC_MESSAGE  Message,
+  /*IN*/ ULONG  Index,
+  /*OUT*/ PVOID  Buffer,
+  /*IN*/ ULONG  BufferLength,
+  /*OUT*/ PULONG  ReturnLength  /*OPTIONAL*/);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwReadRequestData(
+  /*IN*/ HANDLE  PortHandle,
+  /*IN*/ PLPC_MESSAGE  Message,
+  /*IN*/ ULONG  Index,
+  /*OUT*/ PVOID  Buffer,
+  /*IN*/ ULONG  BufferLength,
+  /*OUT*/ PULONG  ReturnLength  /*OPTIONAL*/);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtWriteRequestData(
+  /*IN*/ HANDLE  PortHandle,
+  /*IN*/ PLPC_MESSAGE  Message,
+  /*IN*/ ULONG  Index,
+  /*IN*/ PVOID  Buffer,
+  /*IN*/ ULONG  BufferLength,
+  /*OUT*/ PULONG  ReturnLength  /*OPTIONAL*/);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwWriteRequestData(
+  /*IN*/ HANDLE  PortHandle,
+  /*IN*/ PLPC_MESSAGE  Message,
+  /*IN*/ ULONG  Index,
+  /*IN*/ PVOID  Buffer,
+  /*IN*/ ULONG  BufferLength,
+  /*OUT*/ PULONG  ReturnLength  /*OPTIONAL*/);
+
+typedef enum _PORT_INFORMATION_CLASS {
+  PortBasicInformation
+} PORT_INFORMATION_CLASS;
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtQueryInformationPort(
+  /*IN*/ HANDLE  PortHandle,
+  /*IN*/ PORT_INFORMATION_CLASS  PortInformationClass,
+  /*OUT*/ PVOID  PortInformation,
+  /*IN*/ ULONG  PortInformationLength,
+  /*OUT*/ PULONG  ReturnLength  /*OPTIONAL*/);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwQueryInformationPort(
+  /*IN*/ HANDLE  PortHandle,
+  /*IN*/ PORT_INFORMATION_CLASS  PortInformationClass,
+  /*OUT*/ PVOID  PortInformation,
+  /*IN*/ ULONG  PortInformationLength,
+  /*OUT*/ PULONG  ReturnLength  /*OPTIONAL*/);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtImpersonateClientOfPort(
+  /*IN*/ HANDLE  PortHandle,
+  /*IN*/ PLPC_MESSAGE  Message);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwImpersonateClientOfPort(
+  /*IN*/ HANDLE  PortHandle,
+  /*IN*/ PLPC_MESSAGE  Message);
+
+
+
+
+/* Files */
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtDeleteFile(
+  /*IN*/ POBJECT_ATTRIBUTES  ObjectAttributes);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwDeleteFile(
+  /*IN*/ POBJECT_ATTRIBUTES  ObjectAttributes);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtFlushBuffersFile(
+  /*IN*/ HANDLE  FileHandle,
+  /*OUT*/ PIO_STATUS_BLOCK  IoStatusBlock);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwFlushBuffersFile(
+  /*IN*/ HANDLE  FileHandle,
+  /*OUT*/ PIO_STATUS_BLOCK  IoStatusBlock);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtCancelIoFile(
+  /*IN*/ HANDLE  FileHandle,
+  /*OUT*/ PIO_STATUS_BLOCK  IoStatusBlock);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwCancelIoFile(
+  /*IN*/ HANDLE  FileHandle,
+  /*OUT*/ PIO_STATUS_BLOCK  IoStatusBlock);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtReadFileScatter(
+  /*IN*/ HANDLE  FileHandle,
+  /*IN*/ HANDLE  Event /*OPTIONAL*/,
+  /*IN*/ PIO_APC_ROUTINE  ApcRoutine  /*OPTIONAL*/,
+  /*IN*/ PVOID  ApcContext  /*OPTIONAL*/,
+  /*OUT*/ PIO_STATUS_BLOCK  IoStatusBlock,
+  /*IN*/ PFILE_SEGMENT_ELEMENT  Buffer,
+  /*IN*/ ULONG  Length,
+  /*IN*/ PLARGE_INTEGER  ByteOffset  /*OPTIONAL*/,
+  /*IN*/ PULONG  Key  /*OPTIONAL*/);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwReadFileScatter(
+  /*IN*/ HANDLE  FileHandle,
+  /*IN*/ HANDLE  Event /*OPTIONAL*/,
+  /*IN*/ PIO_APC_ROUTINE  ApcRoutine  /*OPTIONAL*/,
+  /*IN*/ PVOID  ApcContext  /*OPTIONAL*/,
+  /*OUT*/ PIO_STATUS_BLOCK  IoStatusBlock,
+  /*IN*/ PFILE_SEGMENT_ELEMENT  Buffer,
+  /*IN*/ ULONG  Length,
+  /*IN*/ PLARGE_INTEGER  ByteOffset  /*OPTIONAL*/,
+  /*IN*/ PULONG  Key  /*OPTIONAL*/);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtWriteFileGather(
+  /*IN*/ HANDLE  FileHandle,
+  /*IN*/ HANDLE  Event  /*OPTIONAL*/,
+  /*IN*/ PIO_APC_ROUTINE  ApcRoutine  /*OPTIONAL*/,
+  /*IN*/ PVOID  ApcContext  /*OPTIONAL*/,
+  /*OUT*/ PIO_STATUS_BLOCK  IoStatusBlock,
+  /*IN*/ PFILE_SEGMENT_ELEMENT  Buffer,
+  /*IN*/ ULONG  Length,
+  /*IN*/ PLARGE_INTEGER  ByteOffset  /*OPTIONAL*/,
+  /*IN*/ PULONG  Key  /*OPTIONAL*/);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwWriteFileGather(
+  /*IN*/ HANDLE  FileHandle,
+  /*IN*/ HANDLE  Event  /*OPTIONAL*/,
+  /*IN*/ PIO_APC_ROUTINE  ApcRoutine  /*OPTIONAL*/,
+  /*IN*/ PVOID  ApcContext  /*OPTIONAL*/,
+  /*OUT*/ PIO_STATUS_BLOCK  IoStatusBlock,
+  /*IN*/ PFILE_SEGMENT_ELEMENT  Buffer,
+  /*IN*/ ULONG  Length,
+  /*IN*/ PLARGE_INTEGER  ByteOffset  /*OPTIONAL*/,
+  /*IN*/ PULONG  Key  /*OPTIONAL*/);
+
+
+
+
+/* Registry keys */
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtSaveKey(
+  /*IN*/ HANDLE  KeyHandle,
+  /*IN*/ HANDLE  FileHandle);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwSaveKey(
+  /*IN*/ HANDLE  KeyHandle,
+  /*IN*/ HANDLE  FileHandle);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtSaveMergedKeys(
+  /*IN*/ HANDLE  KeyHandle1,
+  /*IN*/ HANDLE  KeyHandle2,
+  /*IN*/ HANDLE  FileHandle);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwSaveMergedKeys(
+  /*IN*/ HANDLE  KeyHandle1,
+  /*IN*/ HANDLE  KeyHandle2,
+  /*IN*/ HANDLE  FileHandle);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtRestoreKey(
+  /*IN*/ HANDLE  KeyHandle,
+  /*IN*/ HANDLE  FileHandle,
+  /*IN*/ ULONG  Flags);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwRestoreKey(
+  /*IN*/ HANDLE  KeyHandle,
+  /*IN*/ HANDLE  FileHandle,
+  /*IN*/ ULONG  Flags);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtLoadKey(
+  /*IN*/ POBJECT_ATTRIBUTES  KeyObjectAttributes,
+  /*IN*/ POBJECT_ATTRIBUTES  FileObjectAttributes);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwLoadKey(
+  /*IN*/ POBJECT_ATTRIBUTES  KeyObjectAttributes,
+  /*IN*/ POBJECT_ATTRIBUTES  FileObjectAttributes);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtLoadKey2(
+  /*IN*/ POBJECT_ATTRIBUTES  KeyObjectAttributes,
+  /*IN*/ POBJECT_ATTRIBUTES  FileObjectAttributes,
+  /*IN*/ ULONG  Flags);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwLoadKey2(
+  /*IN*/ POBJECT_ATTRIBUTES  KeyObjectAttributes,
+  /*IN*/ POBJECT_ATTRIBUTES  FileObjectAttributes,
+  /*IN*/ ULONG  Flags);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtUnloadKey(
+  /*IN*/ POBJECT_ATTRIBUTES  KeyObjectAttributes);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwUnloadKey(
+  /*IN*/ POBJECT_ATTRIBUTES  KeyObjectAttributes);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtQueryOpenSubKeys(
+  /*IN*/ POBJECT_ATTRIBUTES  KeyObjectAttributes,
+  /*OUT*/ PULONG  NumberOfKeys);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwQueryOpenSubKeys(
+  /*IN*/ POBJECT_ATTRIBUTES  KeyObjectAttributes,
+  /*OUT*/ PULONG  NumberOfKeys);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtReplaceKey(
+  /*IN*/ POBJECT_ATTRIBUTES  NewFileObjectAttributes,
+  /*IN*/ HANDLE  KeyHandle,
+  /*IN*/ POBJECT_ATTRIBUTES  OldFileObjectAttributes);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwReplaceKey(
+  /*IN*/ POBJECT_ATTRIBUTES  NewFileObjectAttributes,
+  /*IN*/ HANDLE  KeyHandle,
+  /*IN*/ POBJECT_ATTRIBUTES  OldFileObjectAttributes);
+
+typedef enum _KEY_SET_INFORMATION_CLASS {
+  KeyLastWriteTimeInformation
+} KEY_SET_INFORMATION_CLASS;
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtSetInformationKey(
+  /*IN*/ HANDLE  KeyHandle,
+  /*IN*/ KEY_SET_INFORMATION_CLASS  KeyInformationClass,
+  /*IN*/ PVOID  KeyInformation,
+  /*IN*/ ULONG  KeyInformationLength);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwSetInformationKey(
+  /*IN*/ HANDLE  KeyHandle,
+  /*IN*/ KEY_SET_INFORMATION_CLASS  KeyInformationClass,
+  /*IN*/ PVOID  KeyInformation,
+  /*IN*/ ULONG  KeyInformationLength);
+
+typedef struct _KEY_LAST_WRITE_TIME_INFORMATION {
+  LARGE_INTEGER LastWriteTime;
+} KEY_LAST_WRITE_TIME_INFORMATION, *PKEY_LAST_WRITE_TIME_INFORMATION;
+
+typedef struct _KEY_NAME_INFORMATION {
+	ULONG NameLength;
+	WCHAR Name[1];
+} KEY_NAME_INFORMATION, *PKEY_NAME_INFORMATION;
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtNotifyChangeKey(
+  /*IN*/ HANDLE  KeyHandle,
+  /*IN*/ HANDLE  EventHandle  /*OPTIONAL*/,
+  /*IN*/ PIO_APC_ROUTINE  ApcRoutine  /*OPTIONAL*/,
+  /*IN*/ PVOID  ApcContext  /*OPTIONAL*/,
+  /*OUT*/ PIO_STATUS_BLOCK  IoStatusBlock,
+  /*IN*/ ULONG  NotifyFilter,
+  /*IN*/ BOOLEAN  WatchSubtree,
+  /*IN*/ PVOID  Buffer,
+  /*IN*/ ULONG  BufferLength,
+  /*IN*/ BOOLEAN  Asynchronous);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwNotifyChangeKey(
+  /*IN*/ HANDLE  KeyHandle,
+  /*IN*/ HANDLE  EventHandle  /*OPTIONAL*/,
+  /*IN*/ PIO_APC_ROUTINE  ApcRoutine  /*OPTIONAL*/,
+  /*IN*/ PVOID  ApcContext  /*OPTIONAL*/,
+  /*OUT*/ PIO_STATUS_BLOCK  IoStatusBlock,
+  /*IN*/ ULONG  NotifyFilter,
+  /*IN*/ BOOLEAN  WatchSubtree,
+  /*IN*/ PVOID  Buffer,
+  /*IN*/ ULONG  BufferLength,
+  /*IN*/ BOOLEAN  Asynchronous);
+
+/* ZwNotifyChangeMultipleKeys.Flags constants */
+#define REG_MONITOR_SINGLE_KEY            0x00
+#define REG_MONITOR_SECOND_KEY            0x01
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtNotifyChangeMultipleKeys(
+  /*IN*/ HANDLE  KeyHandle,
+  /*IN*/ ULONG  Flags,
+  /*IN*/ POBJECT_ATTRIBUTES  KeyObjectAttributes,
+  /*IN*/ HANDLE  EventHandle  /*OPTIONAL*/,
+  /*IN*/ PIO_APC_ROUTINE  ApcRoutine  /*OPTIONAL*/,
+  /*IN*/ PVOID  ApcContext  /*OPTIONAL*/,
+  /*OUT*/ PIO_STATUS_BLOCK  IoStatusBlock,
+  /*IN*/ ULONG  NotifyFilter,
+  /*IN*/ BOOLEAN  WatchSubtree,
+  /*IN*/ PVOID  Buffer,
+  /*IN*/ ULONG  BufferLength,
+  /*IN*/ BOOLEAN  Asynchronous);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwNotifyChangeMultipleKeys(
+  /*IN*/ HANDLE  KeyHandle,
+  /*IN*/ ULONG  Flags,
+  /*IN*/ POBJECT_ATTRIBUTES  KeyObjectAttributes,
+  /*IN*/ HANDLE  EventHandle  /*OPTIONAL*/,
+  /*IN*/ PIO_APC_ROUTINE  ApcRoutine  /*OPTIONAL*/,
+  /*IN*/ PVOID  ApcContext  /*OPTIONAL*/,
+  /*OUT*/ PIO_STATUS_BLOCK  IoStatusBlock,
+  /*IN*/ ULONG  NotifyFilter,
+  /*IN*/ BOOLEAN  WatchSubtree,
+  /*IN*/ PVOID  Buffer,
+  /*IN*/ ULONG  BufferLength,
+  /*IN*/ BOOLEAN  Asynchronous);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtQueryMultipleValueKey(
+  /*IN*/ HANDLE  KeyHandle,
+  /*IN OUT*/  PKEY_VALUE_ENTRY  ValueList,
+  /*IN*/ ULONG  NumberOfValues,
+  /*OUT*/ PVOID  Buffer,
+  /*IN OUT*/ PULONG  Length,
+  /*OUT*/ PULONG  ReturnLength);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwQueryMultipleValueKey(
+  /*IN*/ HANDLE  KeyHandle,
+  /*IN OUT*/  PKEY_VALUE_ENTRY  ValueList,
+  /*IN*/ ULONG  NumberOfValues,
+  /*OUT*/ PVOID  Buffer,
+  /*IN OUT*/ PULONG  Length,
+  /*OUT*/ PULONG  ReturnLength);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtInitializeRegistry(
+  /*IN*/ BOOLEAN  Setup);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwInitializeRegistry(
+  /*IN*/ BOOLEAN  Setup);
+
+
+
+
+/* Security and auditing */
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtPrivilegeCheck(
+  /*IN*/ HANDLE  TokenHandle,
+  /*IN*/ PPRIVILEGE_SET  RequiredPrivileges,
+  /*OUT*/ PBOOLEAN  Result);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwPrivilegeCheck(
+  /*IN*/ HANDLE  TokenHandle,
+  /*IN*/ PPRIVILEGE_SET  RequiredPrivileges,
+  /*OUT*/ PBOOLEAN  Result);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtPrivilegeObjectAuditAlarm(
+  /*IN*/ PUNICODE_STRING  SubsystemName,
+  /*IN*/ PVOID  HandleId,
+  /*IN*/ HANDLE  TokenHandle,
+  /*IN*/ ACCESS_MASK  DesiredAccess,
+  /*IN*/ PPRIVILEGE_SET  Privileges,
+  /*IN*/ BOOLEAN  AccessGranted);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwPrivilegeObjectAuditAlarm(
+  /*IN*/ PUNICODE_STRING  SubsystemName,
+  /*IN*/ PVOID  HandleId,
+  /*IN*/ HANDLE  TokenHandle,
+  /*IN*/ ACCESS_MASK  DesiredAccess,
+  /*IN*/ PPRIVILEGE_SET  Privileges,
+  /*IN*/ BOOLEAN  AccessGranted);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtAccessCheck(
+  /*IN*/ PSECURITY_DESCRIPTOR  SecurityDescriptor,
+  /*IN*/ HANDLE  TokenHandle,
+  /*IN*/ ACCESS_MASK  DesiredAccess,
+  /*IN*/ PGENERIC_MAPPING  GenericMapping,
+  /*IN*/ PPRIVILEGE_SET  PrivilegeSet,
+  /*IN*/ PULONG  PrivilegeSetLength,
+  /*OUT*/ PACCESS_MASK  GrantedAccess,
+  /*OUT*/ PBOOLEAN  AccessStatus);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwAccessCheck(
+  /*IN*/ PSECURITY_DESCRIPTOR  SecurityDescriptor,
+  /*IN*/ HANDLE  TokenHandle,
+  /*IN*/ ACCESS_MASK  DesiredAccess,
+  /*IN*/ PGENERIC_MAPPING  GenericMapping,
+  /*IN*/ PPRIVILEGE_SET  PrivilegeSet,
+  /*IN*/ PULONG  PrivilegeSetLength,
+  /*OUT*/ PACCESS_MASK  GrantedAccess,
+  /*OUT*/ PBOOLEAN  AccessStatus);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtAccessCheckAndAuditAlarm(
+  /*IN*/ PUNICODE_STRING  SubsystemName,
+  /*IN*/ PVOID  HandleId,
+  /*IN*/ PUNICODE_STRING  ObjectTypeName,
+  /*IN*/ PUNICODE_STRING  ObjectName,
+  /*IN*/ PSECURITY_DESCRIPTOR  SecurityDescriptor,
+  /*IN*/ ACCESS_MASK  DesiredAccess,
+  /*IN*/ PGENERIC_MAPPING  GenericMapping,
+  /*IN*/ BOOLEAN  ObjectCreation,
+  /*OUT*/ PACCESS_MASK  GrantedAccess,
+  /*OUT*/ PBOOLEAN  AccessStatus,
+  /*OUT*/ PBOOLEAN  GenerateOnClose);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwAccessCheckAndAuditAlarm(
+  /*IN*/ PUNICODE_STRING  SubsystemName,
+  /*IN*/ PVOID  HandleId,
+  /*IN*/ PUNICODE_STRING  ObjectTypeName,
+  /*IN*/ PUNICODE_STRING  ObjectName,
+  /*IN*/ PSECURITY_DESCRIPTOR  SecurityDescriptor,
+  /*IN*/ ACCESS_MASK  DesiredAccess,
+  /*IN*/ PGENERIC_MAPPING  GenericMapping,
+  /*IN*/ BOOLEAN  ObjectCreation,
+  /*OUT*/ PACCESS_MASK  GrantedAccess,
+  /*OUT*/ PBOOLEAN  AccessStatus,
+  /*OUT*/ PBOOLEAN  GenerateOnClose);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtAccessCheckByType(
+  /*IN*/ PSECURITY_DESCRIPTOR  SecurityDescriptor,
+  /*IN*/ PSID  PrincipalSelfSid,
+  /*IN*/ HANDLE  TokenHandle,
+  /*IN*/ ULONG  DesiredAccess,
+  /*IN*/ POBJECT_TYPE_LIST  ObjectTypeList,
+  /*IN*/ ULONG  ObjectTypeListLength,
+  /*IN*/ PGENERIC_MAPPING  GenericMapping,
+  /*IN*/ PPRIVILEGE_SET  PrivilegeSet,
+  /*IN*/ PULONG  PrivilegeSetLength,
+  /*OUT*/ PACCESS_MASK  GrantedAccess,
+  /*OUT*/ PULONG  AccessStatus);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwAccessCheckByType(
+  /*IN*/ PSECURITY_DESCRIPTOR  SecurityDescriptor,
+  /*IN*/ PSID  PrincipalSelfSid,
+  /*IN*/ HANDLE  TokenHandle,
+  /*IN*/ ULONG  DesiredAccess,
+  /*IN*/ POBJECT_TYPE_LIST  ObjectTypeList,
+  /*IN*/ ULONG  ObjectTypeListLength,
+  /*IN*/ PGENERIC_MAPPING  GenericMapping,
+  /*IN*/ PPRIVILEGE_SET  PrivilegeSet,
+  /*IN*/ PULONG  PrivilegeSetLength,
+  /*OUT*/ PACCESS_MASK  GrantedAccess,
+  /*OUT*/ PULONG  AccessStatus);
+
+typedef enum _AUDIT_EVENT_TYPE {
+	AuditEventObjectAccess,
+	AuditEventDirectoryServiceAccess
+} AUDIT_EVENT_TYPE, *PAUDIT_EVENT_TYPE;
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtAccessCheckByTypeAndAuditAlarm(
+  /*IN*/ PUNICODE_STRING  SubsystemName,
+  /*IN*/ PVOID  HandleId,
+  /*IN*/ PUNICODE_STRING  ObjectTypeName,
+  /*IN*/ PUNICODE_STRING  ObjectName,
+  /*IN*/ PSECURITY_DESCRIPTOR  SecurityDescriptor,
+  /*IN*/ PSID  PrincipalSelfSid,
+  /*IN*/ ACCESS_MASK  DesiredAccess,
+  /*IN*/ AUDIT_EVENT_TYPE  AuditType,
+  /*IN*/ ULONG  Flags,
+  /*IN*/ POBJECT_TYPE_LIST  ObjectTypeList,
+  /*IN*/ ULONG  ObjectTypeListLength,
+  /*IN*/ PGENERIC_MAPPING  GenericMapping,
+  /*IN*/ BOOLEAN  ObjectCreation,
+  /*OUT*/ PACCESS_MASK  GrantedAccess,
+  /*OUT*/ PULONG  AccessStatus,
+  /*OUT*/ PBOOLEAN  GenerateOnClose);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwAccessCheckByTypeAndAuditAlarm(
+  /*IN*/ PUNICODE_STRING  SubsystemName,
+  /*IN*/ PVOID  HandleId,
+  /*IN*/ PUNICODE_STRING  ObjectTypeName,
+  /*IN*/ PUNICODE_STRING  ObjectName,
+  /*IN*/ PSECURITY_DESCRIPTOR  SecurityDescriptor,
+  /*IN*/ PSID  PrincipalSelfSid,
+  /*IN*/ ACCESS_MASK  DesiredAccess,
+  /*IN*/ AUDIT_EVENT_TYPE  AuditType,
+  /*IN*/ ULONG  Flags,
+  /*IN*/ POBJECT_TYPE_LIST  ObjectTypeList,
+  /*IN*/ ULONG  ObjectTypeListLength,
+  /*IN*/ PGENERIC_MAPPING  GenericMapping,
+  /*IN*/ BOOLEAN  ObjectCreation,
+  /*OUT*/ PACCESS_MASK  GrantedAccess,
+  /*OUT*/ PULONG  AccessStatus,
+  /*OUT*/ PBOOLEAN  GenerateOnClose);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtAccessCheckByTypeResultList(
+  /*IN*/ PSECURITY_DESCRIPTOR  SecurityDescriptor,
+  /*IN*/ PSID  PrincipalSelfSid,
+  /*IN*/ HANDLE  TokenHandle,
+  /*IN*/ ACCESS_MASK  DesiredAccess,
+  /*IN*/ POBJECT_TYPE_LIST  ObjectTypeList,
+  /*IN*/ ULONG  ObjectTypeListLength,
+  /*IN*/ PGENERIC_MAPPING  GenericMapping,
+  /*IN*/ PPRIVILEGE_SET  PrivilegeSet,
+  /*IN*/ PULONG  PrivilegeSetLength,
+  /*OUT*/ PACCESS_MASK  GrantedAccessList,
+  /*OUT*/ PULONG  AccessStatusList);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwAccessCheckByTypeResultList(
+  /*IN*/ PSECURITY_DESCRIPTOR  SecurityDescriptor,
+  /*IN*/ PSID  PrincipalSelfSid,
+  /*IN*/ HANDLE  TokenHandle,
+  /*IN*/ ACCESS_MASK  DesiredAccess,
+  /*IN*/ POBJECT_TYPE_LIST  ObjectTypeList,
+  /*IN*/ ULONG  ObjectTypeListLength,
+  /*IN*/ PGENERIC_MAPPING  GenericMapping,
+  /*IN*/ PPRIVILEGE_SET  PrivilegeSet,
+  /*IN*/ PULONG  PrivilegeSetLength,
+  /*OUT*/ PACCESS_MASK  GrantedAccessList,
+  /*OUT*/ PULONG  AccessStatusList);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtAccessCheckByTypeResultListAndAuditAlarm(
+  /*IN*/ PUNICODE_STRING  SubsystemName,
+  /*IN*/ PVOID  HandleId,
+  /*IN*/ PUNICODE_STRING  ObjectTypeName,
+  /*IN*/ PUNICODE_STRING  ObjectName,
+  /*IN*/ PSECURITY_DESCRIPTOR  SecurityDescriptor,
+  /*IN*/ PSID  PrincipalSelfSid,
+  /*IN*/ ACCESS_MASK  DesiredAccess,
+  /*IN*/ AUDIT_EVENT_TYPE  AuditType,
+  /*IN*/ ULONG  Flags,
+  /*IN*/ POBJECT_TYPE_LIST  ObjectTypeList,
+  /*IN*/ ULONG  ObjectTypeListLength,
+  /*IN*/ PGENERIC_MAPPING  GenericMapping,
+  /*IN*/ BOOLEAN  ObjectCreation,
+  /*OUT*/ PACCESS_MASK  GrantedAccessList,
+  /*OUT*/ PULONG  AccessStatusList,
+  /*OUT*/ PULONG  GenerateOnClose);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwAccessCheckByTypeResultListAndAuditAlarm(
+  /*IN*/ PUNICODE_STRING  SubsystemName,
+  /*IN*/ PVOID  HandleId,
+  /*IN*/ PUNICODE_STRING  ObjectTypeName,
+  /*IN*/ PUNICODE_STRING  ObjectName,
+  /*IN*/ PSECURITY_DESCRIPTOR  SecurityDescriptor,
+  /*IN*/ PSID  PrincipalSelfSid,
+  /*IN*/ ACCESS_MASK  DesiredAccess,
+  /*IN*/ AUDIT_EVENT_TYPE  AuditType,
+  /*IN*/ ULONG  Flags,
+  /*IN*/ POBJECT_TYPE_LIST  ObjectTypeList,
+  /*IN*/ ULONG  ObjectTypeListLength,
+  /*IN*/ PGENERIC_MAPPING  GenericMapping,
+  /*IN*/ BOOLEAN  ObjectCreation,
+  /*OUT*/ PACCESS_MASK  GrantedAccessList,
+  /*OUT*/ PULONG  AccessStatusList,
+  /*OUT*/ PULONG  GenerateOnClose);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtAccessCheckByTypeResultListAndAuditAlarmByHandle(
+  /*IN*/ PUNICODE_STRING  SubsystemName,
+  /*IN*/ PVOID  HandleId,
+  /*IN*/ HANDLE  TokenHandle,
+  /*IN*/ PUNICODE_STRING  ObjectTypeName,
+  /*IN*/ PUNICODE_STRING  ObjectName,
+  /*IN*/ PSECURITY_DESCRIPTOR  SecurityDescriptor,
+  /*IN*/ PSID  PrincipalSelfSid,
+  /*IN*/ ACCESS_MASK  DesiredAccess,
+  /*IN*/ AUDIT_EVENT_TYPE  AuditType,
+  /*IN*/ ULONG  Flags,
+  /*IN*/ POBJECT_TYPE_LIST  ObjectTypeList,
+  /*IN*/ ULONG  ObjectTypeListLength,
+  /*IN*/ PGENERIC_MAPPING  GenericMapping,
+  /*IN*/ BOOLEAN  ObjectCreation,
+  /*OUT*/ PACCESS_MASK  GrantedAccessList,
+  /*OUT*/ PULONG  AccessStatusList,
+  /*OUT*/ PULONG  GenerateOnClose);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwAccessCheckByTypeResultListAndAuditAlarmByHandle(
+  /*IN*/ PUNICODE_STRING  SubsystemName,
+  /*IN*/ PVOID  HandleId,
+  /*IN*/ HANDLE  TokenHandle,
+  /*IN*/ PUNICODE_STRING  ObjectTypeName,
+  /*IN*/ PUNICODE_STRING  ObjectName,
+  /*IN*/ PSECURITY_DESCRIPTOR  SecurityDescriptor,
+  /*IN*/ PSID  PrincipalSelfSid,
+  /*IN*/ ACCESS_MASK  DesiredAccess,
+  /*IN*/ AUDIT_EVENT_TYPE  AuditType,
+  /*IN*/ ULONG  Flags,
+  /*IN*/ POBJECT_TYPE_LIST  ObjectTypeList,
+  /*IN*/ ULONG  ObjectTypeListLength,
+  /*IN*/ PGENERIC_MAPPING  GenericMapping,
+  /*IN*/ BOOLEAN  ObjectCreation,
+  /*OUT*/ PACCESS_MASK  GrantedAccessList,
+  /*OUT*/ PULONG  AccessStatusList,
+  /*OUT*/ PULONG  GenerateOnClose);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtOpenObjectAuditAlarm(
+  /*IN*/ PUNICODE_STRING  SubsystemName,
+  /*IN*/ PVOID  *HandleId,
+  /*IN*/ PUNICODE_STRING  ObjectTypeName,
+  /*IN*/ PUNICODE_STRING  ObjectName,
+  /*IN*/ PSECURITY_DESCRIPTOR  SecurityDescriptor,
+  /*IN*/ HANDLE  TokenHandle,
+  /*IN*/ ACCESS_MASK  DesiredAccess,
+  /*IN*/ ACCESS_MASK  GrantedAccess,
+  /*IN*/ PPRIVILEGE_SET  Privileges  /*OPTIONAL*/,
+  /*IN*/ BOOLEAN  ObjectCreation,
+  /*IN*/ BOOLEAN  AccessGranted,
+  /*OUT*/ PBOOLEAN  GenerateOnClose);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwOpenObjectAuditAlarm(
+  /*IN*/ PUNICODE_STRING  SubsystemName,
+  /*IN*/ PVOID  *HandleId,
+  /*IN*/ PUNICODE_STRING  ObjectTypeName,
+  /*IN*/ PUNICODE_STRING  ObjectName,
+  /*IN*/ PSECURITY_DESCRIPTOR  SecurityDescriptor,
+  /*IN*/ HANDLE  TokenHandle,
+  /*IN*/ ACCESS_MASK  DesiredAccess,
+  /*IN*/ ACCESS_MASK  GrantedAccess,
+  /*IN*/ PPRIVILEGE_SET  Privileges  /*OPTIONAL*/,
+  /*IN*/ BOOLEAN  ObjectCreation,
+  /*IN*/ BOOLEAN  AccessGranted,
+  /*OUT*/ PBOOLEAN  GenerateOnClose);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtCloseObjectAuditAlarm(
+  /*IN*/ PUNICODE_STRING  SubsystemName,
+  /*IN*/ PVOID  HandleId,
+  /*IN*/ BOOLEAN  GenerateOnClose);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwCloseObjectAuditAlarm(
+  /*IN*/ PUNICODE_STRING  SubsystemName,
+  /*IN*/ PVOID  HandleId,
+  /*IN*/ BOOLEAN  GenerateOnClose);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtDeleteObjectAuditAlarm(
+  /*IN*/ PUNICODE_STRING  SubsystemName,
+  /*IN*/ PVOID  HandleId,
+  /*IN*/ BOOLEAN  GenerateOnClose);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwDeleteObjectAuditAlarm(
+  /*IN*/ PUNICODE_STRING  SubsystemName,
+  /*IN*/ PVOID  HandleId,
+  /*IN*/ BOOLEAN  GenerateOnClose);
+
+
+
+
+/* Plug and play and power management */
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwRequestWakeupLatency(
+  /*IN*/ LATENCY_TIME  Latency);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwRequestDeviceWakeup(
+  /*IN*/ HANDLE  DeviceHandle);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwCancelDeviceWakeupRequest(
+  /*IN*/ HANDLE  DeviceHandle);
+
+NTOSAPI
+BOOLEAN
+NTAPI
+ZwIsSystemResumeAutomatic(
+  VOID);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwSetThreadExecutionState(
+  /*IN*/ EXECUTION_STATE  ExecutionState,
+  /*OUT*/ PEXECUTION_STATE  PreviousExecutionState);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwGetDevicePowerState(
+  /*IN*/ HANDLE  DeviceHandle,
+  /*OUT*/ PDEVICE_POWER_STATE  DevicePowerState);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwSetSystemPowerState(
+  /*IN*/ POWER_ACTION  SystemAction,
+  /*IN*/ SYSTEM_POWER_STATE  MinSystemState,
+  /*IN*/ ULONG  Flags);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwInitiatePowerAction(
+  /*IN*/ POWER_ACTION  SystemAction,
+  /*IN*/ SYSTEM_POWER_STATE  MinSystemState,
+  /*IN*/ ULONG  Flags,
+  /*IN*/ BOOLEAN  Asynchronous);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwPowerInformation(
+  /*IN*/ POWER_INFORMATION_LEVEL  PowerInformationLevel,
+  /*IN*/ PVOID  InputBuffer  /*OPTIONAL*/,
+  /*IN*/ ULONG  InputBufferLength,
+  /*OUT*/ PVOID  OutputBuffer  /*OPTIONAL*/,
+  /*IN*/ ULONG  OutputBufferLength);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtPlugPlayControl(
+  /*IN*/ ULONG  ControlCode,
+  /*IN OUT*/ PVOID  Buffer,
+  /*IN*/ ULONG  BufferLength);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwPlugPlayControl(
+  /*IN*/ ULONG  ControlCode,
+  /*IN OUT*/ PVOID  Buffer,
+  /*IN*/ ULONG  BufferLength);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtGetPlugPlayEvent(
+  /*IN*/ ULONG  Reserved1,
+  /*IN*/ ULONG  Reserved2,
+  /*OUT*/ PVOID  Buffer,
+  /*IN*/ ULONG  BufferLength);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwGetPlugPlayEvent(
+  /*IN*/ ULONG  Reserved1,
+  /*IN*/ ULONG  Reserved2,
+  /*OUT*/ PVOID  Buffer,
+  /*IN*/ ULONG  BufferLength);
+
+
+
+
+/* Miscellany */
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtRaiseException(
+  /*IN*/ PEXCEPTION_RECORD  ExceptionRecord,
+  /*IN*/ PCONTEXT  Context,
+  /*IN*/ BOOLEAN  SearchFrames);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwRaiseException(
+  /*IN*/ PEXCEPTION_RECORD  ExceptionRecord,
+  /*IN*/ PCONTEXT  Context,
+  /*IN*/ BOOLEAN  SearchFrames);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtContinue(
+  /*IN*/ PCONTEXT  Context,
+  /*IN*/ BOOLEAN  TestAlert);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwContinue(
+  /*IN*/ PCONTEXT  Context,
+  /*IN*/ BOOLEAN  TestAlert);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwW32Call(
+  /*IN*/ ULONG  RoutineIndex,
+  /*IN*/ PVOID  Argument,
+  /*IN*/ ULONG  ArgumentLength,
+  /*OUT*/ PVOID  *Result  /*OPTIONAL*/,
+  /*OUT*/ PULONG  ResultLength  /*OPTIONAL*/);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtSetLowWaitHighThread(
+  VOID);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwSetLowWaitHighThread(
+  VOID);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtSetHighWaitLowThread(
+  VOID);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwSetHighWaitLowThread(
+  VOID);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtLoadDriver(
+  /*IN*/ PUNICODE_STRING  DriverServiceName);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwLoadDriver(
+  /*IN*/ PUNICODE_STRING  DriverServiceName);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtUnloadDriver(
+  /*IN*/ PUNICODE_STRING  DriverServiceName);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwUnloadDriver(
+  /*IN*/ PUNICODE_STRING  DriverServiceName);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtFlushInstructionCache(
+  /*IN*/ HANDLE  ProcessHandle,
+  /*IN*/ PVOID  BaseAddress  /*OPTIONAL*/,
+  /*IN*/ ULONG  FlushSize);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwFlushInstructionCache(
+  /*IN*/ HANDLE  ProcessHandle,
+  /*IN*/ PVOID  BaseAddress  /*OPTIONAL*/,
+  /*IN*/ ULONG  FlushSize);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtFlushWriteBuffer(
+  VOID);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwFlushWriteBuffer(
+  VOID);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtQueryDefaultLocale(
+  /*IN*/ BOOLEAN  ThreadOrSystem,
+  /*OUT*/ PLCID  Locale);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwQueryDefaultLocale(
+  /*IN*/ BOOLEAN  ThreadOrSystem,
+  /*OUT*/ PLCID  Locale);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtSetDefaultLocale(
+  /*IN*/ BOOLEAN  ThreadOrSystem,
+  /*IN*/ LCID  Locale);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwSetDefaultLocale(
+  /*IN*/ BOOLEAN  ThreadOrSystem,
+  /*IN*/ LCID  Locale);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtQueryDefaultUILanguage(
+  /*OUT*/ PLANGID  LanguageId);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwQueryDefaultUILanguage(
+  /*OUT*/ PLANGID  LanguageId);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtSetDefaultUILanguage(
+  /*IN*/ LANGID  LanguageId);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwSetDefaultUILanguage(
+  /*IN*/ LANGID  LanguageId);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtQueryInstallUILanguage(
+  /*OUT*/ PLANGID  LanguageId);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwQueryInstallUILanguage(
+  /*OUT*/ PLANGID  LanguageId);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtAllocateLocallyUniqueId(
+  /*OUT*/ PLUID  Luid);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtAllocateUuids(
+  /*OUT*/ PLARGE_INTEGER  UuidLastTimeAllocated,
+  /*OUT*/ PULONG  UuidDeltaTime,
+  /*OUT*/ PULONG  UuidSequenceNumber,
+  /*OUT*/ PUCHAR  UuidSeed);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwAllocateUuids(
+  /*OUT*/ PLARGE_INTEGER  UuidLastTimeAllocated,
+  /*OUT*/ PULONG  UuidDeltaTime,
+  /*OUT*/ PULONG  UuidSequenceNumber,
+  /*OUT*/ PUCHAR  UuidSeed);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtSetUuidSeed(
+  /*IN*/ PUCHAR  UuidSeed);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwSetUuidSeed(
+  /*IN*/ PUCHAR  UuidSeed);
+
+typedef enum _HARDERROR_RESPONSE_OPTION {
+	OptionAbortRetryIgnore,
+	OptionOk,
+	OptionOkCancel,
+	OptionRetryCancel,
+	OptionYesNo,
+	OptionYesNoCancel,
+	OptionShutdownSystem
+} HARDERROR_RESPONSE_OPTION, *PHARDERROR_RESPONSE_OPTION;
+
+typedef enum _HARDERROR_RESPONSE {
+	ResponseReturnToCaller,
+	ResponseNotHandled,
+	ResponseAbort,
+	ResponseCancel,
+	ResponseIgnore,
+	ResponseNo,
+	ResponseOk,
+	ResponseRetry,
+	ResponseYes
+} HARDERROR_RESPONSE, *PHARDERROR_RESPONSE;
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtRaiseHardError(
+  /*IN*/ NTSTATUS  Status,
+  /*IN*/ ULONG  NumberOfArguments,
+  /*IN*/ ULONG  StringArgumentsMask,
+  /*IN*/ PULONG  Arguments,
+  /*IN*/ HARDERROR_RESPONSE_OPTION  ResponseOption,
+  /*OUT*/ PHARDERROR_RESPONSE  Response);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwRaiseHardError(
+  /*IN*/ NTSTATUS  Status,
+  /*IN*/ ULONG  NumberOfArguments,
+  /*IN*/ ULONG  StringArgumentsMask,
+  /*IN*/ PULONG  Arguments,
+  /*IN*/ HARDERROR_RESPONSE_OPTION  ResponseOption,
+  /*OUT*/ PHARDERROR_RESPONSE  Response);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtSetDefaultHardErrorPort(
+  /*IN*/ HANDLE  PortHandle);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwSetDefaultHardErrorPort(
+  /*IN*/ HANDLE  PortHandle);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtDisplayString(
+  /*IN*/ PUNICODE_STRING  String);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwDisplayString(
+  /*IN*/ PUNICODE_STRING  String);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtCreatePagingFile(
+  /*IN*/ PUNICODE_STRING  FileName,
+  /*IN*/ PULARGE_INTEGER  InitialSize,
+  /*IN*/ PULARGE_INTEGER  MaximumSize,
+  /*IN*/ ULONG  Reserved);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwCreatePagingFile(
+  /*IN*/ PUNICODE_STRING  FileName,
+  /*IN*/ PULARGE_INTEGER  InitialSize,
+  /*IN*/ PULARGE_INTEGER  MaximumSize,
+  /*IN*/ ULONG  Reserved);
+
+typedef USHORT RTL_ATOM, *PRTL_ATOM;
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtAddAtom(
+  /*IN*/ PWSTR  AtomName,
+  /*IN*/ ULONG  AtomNameLength,
+  /*OUT*/ PRTL_ATOM  Atom);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwAddAtom(
+  /*IN*/ PWSTR  AtomName,
+  /*IN*/ ULONG  AtomNameLength,
+  /*OUT*/ PRTL_ATOM  Atom);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtFindAtom(
+  /*IN*/ PWSTR  AtomName,
+  /*IN*/ ULONG  AtomNameLength,
+  /*OUT*/ PRTL_ATOM  Atom);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwFindAtom(
+  /*IN*/ PWSTR  AtomName,
+  /*IN*/ ULONG  AtomNameLength,
+  /*OUT*/ PRTL_ATOM  Atom);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtDeleteAtom(
+  /*IN*/ RTL_ATOM  Atom);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwDeleteAtom(
+  /*IN*/ RTL_ATOM  Atom);
+
+typedef enum _ATOM_INFORMATION_CLASS {
+	AtomBasicInformation,
+	AtomListInformation
+} ATOM_INFORMATION_CLASS;
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtQueryInformationAtom(
+  /*IN*/ RTL_ATOM  Atom,
+  /*IN*/ ATOM_INFORMATION_CLASS  AtomInformationClass,
+  /*OUT*/ PVOID  AtomInformation,
+  /*IN*/ ULONG  AtomInformationLength,
+  /*OUT*/ PULONG  ReturnLength  /*OPTIONAL*/);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwQueryInformationAtom(
+  /*IN*/ RTL_ATOM  Atom,
+  /*IN*/ ATOM_INFORMATION_CLASS  AtomInformationClass,
+  /*OUT*/ PVOID  AtomInformation,
+  /*IN*/ ULONG  AtomInformationLength,
+  /*OUT*/ PULONG  ReturnLength  /*OPTIONAL*/);
+
+typedef struct _ATOM_BASIC_INFORMATION {
+	USHORT  ReferenceCount;
+	USHORT  Pinned;
+	USHORT  NameLength;
+	WCHAR  Name[1];
+} ATOM_BASIC_INFORMATION, *PATOM_BASIC_INFORMATION;
+
+typedef struct _ATOM_LIST_INFORMATION {
+  ULONG  NumberOfAtoms;
+  ATOM  Atoms[1];
+} ATOM_LIST_INFORMATION, *PATOM_LIST_INFORMATION;
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtSetLdtEntries(
+  /*IN*/ ULONG  Selector1,
+  /*IN*/ LDT_ENTRY  LdtEntry1,
+  /*IN*/ ULONG  Selector2,
+  /*IN*/ LDT_ENTRY  LdtEntry2);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwSetLdtEntries(
+  /*IN*/ ULONG  Selector1,
+  /*IN*/ LDT_ENTRY  LdtEntry1,
+  /*IN*/ ULONG  Selector2,
+  /*IN*/ LDT_ENTRY  LdtEntry2);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+NtVdmControl(
+  /*IN*/ ULONG  ControlCode,
+  /*IN*/ PVOID  ControlData);
+
+NTOSAPI
+NTSTATUS
+NTAPI
+ZwVdmControl(
+  /*IN*/ ULONG  ControlCode,
+  /*IN*/ PVOID  ControlData);
+
+#pragma pack(pop)
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __NTAPI_H */
Index: Daodan/MinGW/include/ddk/ntdd8042.h
===================================================================
--- Daodan/MinGW/include/ddk/ntdd8042.h	(revision 1046)
+++ Daodan/MinGW/include/ddk/ntdd8042.h	(revision 1046)
@@ -0,0 +1,213 @@
+/*
+ * ntdd8042.h
+ *
+ * i8042 IOCTL interface.
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __NTDD8042_H
+#define __NTDD8042_H
+
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "ntddk.h"
+#include "ntddkbd.h"
+#include "ntddmou.h"
+
+#define IOCTL_INTERNAL_I8042_CONTROLLER_WRITE_BUFFER \
+  CTL_CODE(FILE_DEVICE_KEYBOARD, 0x0FF2, METHOD_NEITHER, FILE_ANY_ACCESS)
+
+#define IOCTL_INTERNAL_I8042_HOOK_KEYBOARD \
+  CTL_CODE(FILE_DEVICE_KEYBOARD, 0x0FF0, METHOD_NEITHER, FILE_ANY_ACCESS)
+
+#define IOCTL_INTERNAL_I8042_KEYBOARD_START_INFORMATION \
+  CTL_CODE(FILE_DEVICE_KEYBOARD, 0x0FF3, METHOD_NEITHER, FILE_ANY_ACCESS)
+
+#define IOCTL_INTERNAL_I8042_KEYBOARD_WRITE_BUFFER \
+  CTL_CODE(FILE_DEVICE_KEYBOARD, 0x0FF1, METHOD_NEITHER, FILE_ANY_ACCESS)
+
+#define IOCTL_INTERNAL_I8042_HOOK_MOUSE \
+  CTL_CODE(FILE_DEVICE_MOUSE, 0x0FF0, METHOD_NEITHER, FILE_ANY_ACCESS)
+
+#define IOCTL_INTERNAL_I8042_MOUSE_START_INFORMATION \
+  CTL_CODE(FILE_DEVICE_MOUSE, 0x0FF3, METHOD_NEITHER, FILE_ANY_ACCESS)
+
+#define IOCTL_INTERNAL_I8042_MOUSE_WRITE_BUFFER \
+  CTL_CODE(FILE_DEVICE_MOUSE, 0x0FF1, METHOD_NEITHER, FILE_ANY_ACCESS)
+
+#define I8042_POWER_SYS_BUTTON            0x0001
+#define I8042_SLEEP_SYS_BUTTON            0x0002
+#define I8042_WAKE_SYS_BUTTON             0x0004
+#define I8042_SYS_BUTTONS                 (I8042_POWER_SYS_BUTTON | \
+                                           I8042_SLEEP_SYS_BUTTON | \
+                                           I8042_WAKE_SYS_BUTTON)
+
+typedef enum _TRANSMIT_STATE {
+  Idle = 0,
+  SendingBytes
+} TRANSMIT_STATE;
+
+typedef struct _OUTPUT_PACKET {
+  PUCHAR  Bytes;
+  ULONG  CurrentByte;
+  ULONG  ByteCount;
+  TRANSMIT_STATE  State;
+} OUTPUT_PACKET, *POUTPUT_PACKET;
+
+typedef enum _KEYBOARD_SCAN_STATE {
+  Normal,
+  GotE0,
+  GotE1
+} KEYBOARD_SCAN_STATE, *PKEYBOARD_SCAN_STATE;
+
+typedef enum _MOUSE_STATE {
+  MouseIdle,
+  XMovement,
+  YMovement,
+  ZMovement,
+  MouseExpectingACK,
+  MouseResetting
+} MOUSE_STATE, *PMOUSE_STATE;
+
+typedef enum _MOUSE_RESET_SUBSTATE {
+	ExpectingReset,
+	ExpectingResetId,
+	ExpectingGetDeviceIdACK,
+	ExpectingGetDeviceIdValue,
+	ExpectingSetResolutionDefaultACK,
+	ExpectingSetResolutionDefaultValueACK,
+	ExpectingSetResolutionACK,
+	ExpectingSetResolutionValueACK,
+	ExpectingSetScaling1to1ACK,
+	ExpectingSetScaling1to1ACK2,
+	ExpectingSetScaling1to1ACK3,
+	ExpectingReadMouseStatusACK,
+	ExpectingReadMouseStatusByte1,
+	ExpectingReadMouseStatusByte2,
+	ExpectingReadMouseStatusByte3,
+	StartPnPIdDetection,
+	ExpectingLoopSetSamplingRateACK,
+	ExpectingLoopSetSamplingRateValueACK,
+	ExpectingPnpIdByte1,
+	ExpectingPnpIdByte2,
+	ExpectingPnpIdByte3,
+	ExpectingPnpIdByte4,
+	ExpectingPnpIdByte5,
+	ExpectingPnpIdByte6,
+	ExpectingPnpIdByte7,
+	EnableWheel,
+	Enable5Buttons,
+	ExpectingGetDeviceId2ACK,
+	ExpectingGetDeviceId2Value,
+	ExpectingSetSamplingRateACK,
+	ExpectingSetSamplingRateValueACK,
+	ExpectingEnableACK,
+	ExpectingFinalResolutionACK,
+	ExpectingFinalResolutionValueACK,
+	ExpectingGetDeviceIdDetectACK,
+	ExpectingGetDeviceIdDetectValue,
+	CustomHookStateMinimum = 100,
+	CustomHookStateMaximum = 999,
+	I8042ReservedMinimum = 1000
+} MOUSE_RESET_SUBSTATE, *PMOUSE_RESET_SUBSTATE;
+
+typedef struct _INTERNAL_I8042_START_INFORMATION {
+  ULONG  Size;
+  PKINTERRUPT  InterruptObject;
+  ULONG  Reserved[8];
+} INTERNAL_I8042_START_INFORMATION, *PINTERNAL_I8042_START_INFORMATION;
+
+typedef VOID DDKAPI
+(*PI8042_ISR_WRITE_PORT)(
+  /*IN*/ PVOID  Context,
+  /*IN*/ UCHAR  Value);
+
+typedef VOID DDKAPI
+(*PI8042_QUEUE_PACKET)(
+  /*IN*/ PVOID  Context);
+
+typedef NTSTATUS DDKAPI
+(*PI8042_SYNCH_READ_PORT) (
+  /*IN*/ PVOID  Context,
+  /*OUT*/ PUCHAR  Value,
+  /*IN*/ BOOLEAN  WaitForACK);
+
+typedef NTSTATUS DDKAPI
+(*PI8042_SYNCH_WRITE_PORT)(
+  /*IN*/ PVOID  Context,
+  /*IN*/ UCHAR  Value,
+  /*IN*/ BOOLEAN  WaitForACK);
+
+
+typedef NTSTATUS DDKAPI
+(*PI8042_KEYBOARD_INITIALIZATION_ROUTINE)(
+  /*IN*/ PVOID  InitializationContext,
+  /*IN*/ PVOID  SynchFuncContext,
+  /*IN*/ PI8042_SYNCH_READ_PORT  ReadPort,
+  /*IN*/ PI8042_SYNCH_WRITE_PORT  WritePort,
+  /*OUT*/ PBOOLEAN  TurnTranslationOn);
+
+typedef BOOLEAN DDKAPI
+(*PI8042_KEYBOARD_ISR)(
+  PVOID  IsrContext,
+  PKEYBOARD_INPUT_DATA  CurrentInput,
+  POUTPUT_PACKET  CurrentOutput,
+  UCHAR  StatusByte,
+  PUCHAR  Byte,
+  PBOOLEAN  ContinueProcessing,
+  PKEYBOARD_SCAN_STATE  ScanState);
+
+typedef struct _INTERNAL_I8042_HOOK_KEYBOARD {
+  /*OUT*/ PVOID  Context;
+  /*OUT*/ PI8042_KEYBOARD_INITIALIZATION_ROUTINE  InitializationRoutine;
+  /*OUT*/ PI8042_KEYBOARD_ISR  IsrRoutine;
+  /*IN*/ PI8042_ISR_WRITE_PORT  IsrWritePort;
+  /*IN*/ PI8042_QUEUE_PACKET  QueueKeyboardPacket;
+  /*IN*/ PVOID  CallContext;
+} INTERNAL_I8042_HOOK_KEYBOARD, *PINTERNAL_I8042_HOOK_KEYBOARD;
+
+typedef BOOLEAN DDKAPI
+(*PI8042_MOUSE_ISR)(
+  PVOID  IsrContext,
+  PMOUSE_INPUT_DATA  CurrentInput,
+  POUTPUT_PACKET  CurrentOutput,
+  UCHAR  StatusByte,
+  PUCHAR  Byte,
+  PBOOLEAN  ContinueProcessing,
+  PMOUSE_STATE  MouseState,
+  PMOUSE_RESET_SUBSTATE  ResetSubState);
+
+typedef struct _INTERNAL_I8042_HOOK_MOUSE {
+  /*OUT*/ PVOID  Context;
+  /*OUT*/ PI8042_MOUSE_ISR  IsrRoutine;
+  /*IN*/ PI8042_ISR_WRITE_PORT  IsrWritePort;
+  /*IN*/ PI8042_QUEUE_PACKET  QueueMousePacket;
+  /*IN*/ PVOID  CallContext;
+} INTERNAL_I8042_HOOK_MOUSE, *PINTERNAL_I8042_HOOK_MOUSE;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __NTDD8042_H */
Index: Daodan/MinGW/include/ddk/ntddbeep.h
===================================================================
--- Daodan/MinGW/include/ddk/ntddbeep.h	(revision 1046)
+++ Daodan/MinGW/include/ddk/ntddbeep.h	(revision 1046)
@@ -0,0 +1,54 @@
+/*
+ * ntddbeep.h
+ *
+ * Beep device IOCTL interface
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __NTDDBEEP_H
+#define __NTDDBEEP_H
+
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "ntddk.h"
+
+#define DD_BEEP_DEVICE_NAME               "\\Device\\Beep"
+#define DD_BEEP_DEVICE_NAME_U             L"\\Device\\Beep"
+
+#define IOCTL_BEEP_SET \
+  CTL_CODE(FILE_DEVICE_BEEP, 0, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+typedef struct _BEEP_SET_PARAMETERS {
+	ULONG  Frequency;
+	ULONG  Duration;
+} BEEP_SET_PARAMETERS, *PBEEP_SET_PARAMETERS;
+
+#define BEEP_FREQUENCY_MINIMUM            0x25
+#define BEEP_FREQUENCY_MAXIMUM            0x7FFF
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __NTDDBEEP_H */
Index: Daodan/MinGW/include/ddk/ntddcdrm.h
===================================================================
--- Daodan/MinGW/include/ddk/ntddcdrm.h	(revision 1046)
+++ Daodan/MinGW/include/ddk/ntddcdrm.h	(revision 1046)
@@ -0,0 +1,347 @@
+/*
+ * ntddcdrm.h
+ *
+ * CDROM IOCTL interface.
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __NTDDCDRM_H
+#define __NTDDCDRM_H
+
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "ntddk.h"
+#include "ntddstor.h"
+
+#define IOCTL_CDROM_BASE                  FILE_DEVICE_CD_ROM
+
+#define IOCTL_CDROM_CHECK_VERIFY \
+  CTL_CODE(IOCTL_CDROM_BASE, 0x0200, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+#define IOCTL_CDROM_FIND_NEW_DEVICES \
+  CTL_CODE(IOCTL_CDROM_BASE, 0x0206, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+#define IOCTL_CDROM_GET_CONTROL \
+  CTL_CODE(IOCTL_CDROM_BASE, 0x000D, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+#define IOCTL_CDROM_GET_DRIVE_GEOMETRY \
+  CTL_CODE(IOCTL_CDROM_BASE, 0x0013, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+#define IOCTL_CDROM_GET_LAST_SESSION \
+  CTL_CODE(IOCTL_CDROM_BASE, 0x000E, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+#define IOCTL_CDROM_GET_VOLUME \
+  CTL_CODE(IOCTL_CDROM_BASE, 0x0005, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+#define IOCTL_CDROM_PAUSE_AUDIO \
+  CTL_CODE(IOCTL_CDROM_BASE, 0x0003, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+#define IOCTL_CDROM_PLAY_AUDIO_MSF \
+  CTL_CODE(IOCTL_CDROM_BASE, 0x0006, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+#define IOCTL_CDROM_RAW_READ \
+  CTL_CODE(IOCTL_CDROM_BASE, 0x000F, METHOD_OUT_DIRECT,  FILE_READ_ACCESS)
+
+#define IOCTL_CDROM_READ_Q_CHANNEL \
+  CTL_CODE(IOCTL_CDROM_BASE, 0x000B, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+#define IOCTL_CDROM_READ_TOC \
+  CTL_CODE(IOCTL_CDROM_BASE, 0x0000, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+#define IOCTL_CDROM_READ_TOC_EX \
+  CTL_CODE(IOCTL_CDROM_BASE, 0x0015, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+#define IOCTL_CDROM_RESUME_AUDIO \
+  CTL_CODE(IOCTL_CDROM_BASE, 0x0004, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+#define IOCTL_CDROM_SEEK_AUDIO_MSF \
+  CTL_CODE(IOCTL_CDROM_BASE, 0x0001, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+#define IOCTL_CDROM_SET_VOLUME \
+  CTL_CODE(IOCTL_CDROM_BASE, 0x000A, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+#define IOCTL_CDROM_SIMBAD \
+  CTL_CODE(IOCTL_CDROM_BASE, 0x1003, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+#define IOCTL_CDROM_STOP_AUDIO \
+  CTL_CODE(IOCTL_CDROM_BASE, 0x0002, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+
+#define MAXIMUM_NUMBER_TRACKS             100
+#define MAXIMUM_CDROM_SIZE                804
+#define MINIMUM_CDROM_READ_TOC_EX_SIZE    2
+
+typedef struct _TRACK_DATA {
+  UCHAR  Reserved;
+  UCHAR  Control : 4;
+  UCHAR  Adr : 4;
+  UCHAR  TrackNumber;
+  UCHAR  Reserved1;
+  UCHAR  Address[4];
+} TRACK_DATA, *PTRACK_DATA;
+
+/* CDROM_DISK_DATA.DiskData flags */
+#define CDROM_DISK_AUDIO_TRACK            0x00000001
+#define CDROM_DISK_DATA_TRACK             0x00000002
+
+typedef struct _CDROM_DISK_DATA {
+  ULONG  DiskData;
+} CDROM_DISK_DATA, *PCDROM_DISK_DATA;
+
+typedef struct _CDROM_PLAY_AUDIO_MSF {
+  UCHAR  StartingM;
+  UCHAR  StartingS;
+  UCHAR  StartingF;
+  UCHAR  EndingM;
+  UCHAR  EndingS;
+  UCHAR  EndingF;
+} CDROM_PLAY_AUDIO_MSF, *PCDROM_PLAY_AUDIO_MSF;
+
+/* CDROM_READ_TOC_EX.Format constants */
+#define CDROM_READ_TOC_EX_FORMAT_TOC      0x00
+#define CDROM_READ_TOC_EX_FORMAT_SESSION  0x01
+#define CDROM_READ_TOC_EX_FORMAT_FULL_TOC 0x02
+#define CDROM_READ_TOC_EX_FORMAT_PMA      0x03
+#define CDROM_READ_TOC_EX_FORMAT_ATIP     0x04
+#define CDROM_READ_TOC_EX_FORMAT_CDTEXT   0x05
+
+typedef struct _CDROM_READ_TOC_EX {
+  UCHAR  Format : 4;
+  UCHAR  Reserved1 : 3;
+  UCHAR  Msf : 1;
+  UCHAR  SessionTrack;
+  UCHAR  Reserved2;
+  UCHAR  Reserved3;
+} CDROM_READ_TOC_EX, *PCDROM_READ_TOC_EX;
+
+typedef struct _CDROM_SEEK_AUDIO_MSF {
+  UCHAR  M;
+  UCHAR  S;
+  UCHAR  F;
+} CDROM_SEEK_AUDIO_MSF, *PCDROM_SEEK_AUDIO_MSF;
+
+/* CDROM_SUB_Q_DATA_FORMAT.Format constants */
+#define IOCTL_CDROM_SUB_Q_CHANNEL         0x00
+#define IOCTL_CDROM_CURRENT_POSITION      0x01
+#define IOCTL_CDROM_MEDIA_CATALOG         0x02
+#define IOCTL_CDROM_TRACK_ISRC            0x03
+
+typedef struct _CDROM_SUB_Q_DATA_FORMAT {
+  UCHAR Format;
+  UCHAR Track;
+} CDROM_SUB_Q_DATA_FORMAT, *PCDROM_SUB_Q_DATA_FORMAT;
+
+typedef struct _CDROM_TOC {
+  UCHAR  Length[2];
+  UCHAR  FirstTrack;
+  UCHAR  LastTrack;
+  TRACK_DATA  TrackData[MAXIMUM_NUMBER_TRACKS];
+} CDROM_TOC, *PCDROM_TOC;
+
+#define CDROM_TOC_SIZE sizeof(CDROM_TOC)
+
+typedef struct _CDROM_TOC_ATIP_DATA_BLOCK {
+  UCHAR  CdrwReferenceSpeed : 3;
+  UCHAR  Reserved3 : 1;
+  UCHAR  WritePower : 3;
+  UCHAR  True1 : 1;
+  UCHAR  Reserved4 : 6;
+  UCHAR  UnrestrictedUse : 1;
+  UCHAR  Reserved5 : 1;
+  UCHAR  A3Valid : 1;
+  UCHAR  A2Valid : 1;
+  UCHAR  A1Valid : 1;
+  UCHAR  Reserved6 : 3;
+  UCHAR  IsCdrw : 1;
+  UCHAR  True2 : 1;
+  UCHAR  Reserved7;
+  UCHAR  LeadInMsf[3];
+  UCHAR  Reserved8;
+  UCHAR  LeadOutMsf[3];
+  UCHAR  Reserved9;
+  UCHAR  A1Values[3];
+  UCHAR  Reserved10;
+  UCHAR  A2Values[3];
+  UCHAR  Reserved11;
+  UCHAR  A3Values[3];
+  UCHAR  Reserved12;
+} CDROM_TOC_ATIP_DATA_BLOCK, *PCDROM_TOC_ATIP_DATA_BLOCK;
+
+typedef struct _CDROM_TOC_ATIP_DATA {
+  UCHAR  Length[2];
+  UCHAR  Reserved1;
+  UCHAR  Reserved2;
+  CDROM_TOC_ATIP_DATA_BLOCK  Descriptors[0];
+} CDROM_TOC_ATIP_DATA, *PCDROM_TOC_ATIP_DATA;
+
+/* CDROM_TOC_CD_TEXT_DATA_BLOCK.PackType constants */
+#define CDROM_CD_TEXT_PACK_ALBUM_NAME 0x80
+#define CDROM_CD_TEXT_PACK_PERFORMER  0x81
+#define CDROM_CD_TEXT_PACK_SONGWRITER 0x82
+#define CDROM_CD_TEXT_PACK_COMPOSER   0x83
+#define CDROM_CD_TEXT_PACK_ARRANGER   0x84
+#define CDROM_CD_TEXT_PACK_MESSAGES   0x85
+#define CDROM_CD_TEXT_PACK_DISC_ID    0x86
+#define CDROM_CD_TEXT_PACK_GENRE      0x87
+#define CDROM_CD_TEXT_PACK_TOC_INFO   0x88
+#define CDROM_CD_TEXT_PACK_TOC_INFO2  0x89
+#define CDROM_CD_TEXT_PACK_UPC_EAN    0x8e
+#define CDROM_CD_TEXT_PACK_SIZE_INFO  0x8f
+
+typedef struct _CDROM_TOC_CD_TEXT_DATA_BLOCK {
+  UCHAR  PackType;
+  UCHAR  TrackNumber : 7;
+  UCHAR  ExtensionFlag : 1;
+  UCHAR  SequenceNumber;
+  UCHAR  CharacterPosition : 4;
+  UCHAR  BlockNumber : 3;
+  UCHAR  Unicode : 1;
+  _ANONYMOUS_UNION union {
+    UCHAR  Text[12];
+    WCHAR  WText[6];
+  } DUMMYUNIONNAME;
+  UCHAR  CRC[2];
+} CDROM_TOC_CD_TEXT_DATA_BLOCK, *PCDROM_TOC_CD_TEXT_DATA_BLOCK;
+
+typedef struct _CDROM_TOC_CD_TEXT_DATA {
+  UCHAR  Length[2];
+  UCHAR  Reserved1;
+  UCHAR  Reserved2;
+  CDROM_TOC_CD_TEXT_DATA_BLOCK  Descriptors[0];
+} CDROM_TOC_CD_TEXT_DATA, *PCDROM_TOC_CD_TEXT_DATA;
+
+/* CDROM_TOC_FULL_TOC_DATA_BLOCK.Adr constants */
+#define ADR_NO_MODE_INFORMATION           0x0
+#define ADR_ENCODES_CURRENT_POSITION      0x1
+#define ADR_ENCODES_MEDIA_CATALOG         0x2
+#define ADR_ENCODES_ISRC                  0x3
+
+typedef struct _CDROM_TOC_FULL_TOC_DATA_BLOCK {
+  UCHAR  SessionNumber;
+  UCHAR  Control : 4;
+  UCHAR  Adr : 4;
+  UCHAR  Reserved1;
+  UCHAR  Point;
+  UCHAR  MsfExtra[3];
+  UCHAR  Zero;
+  UCHAR  Msf[3];
+} CDROM_TOC_FULL_TOC_DATA_BLOCK, *PCDROM_TOC_FULL_TOC_DATA_BLOCK;
+
+typedef struct _CDROM_TOC_FULL_TOC_DATA {
+  UCHAR  Length[2];
+  UCHAR  FirstCompleteSession;
+  UCHAR  LastCompleteSession;
+  CDROM_TOC_FULL_TOC_DATA_BLOCK  Descriptors[0];
+} CDROM_TOC_FULL_TOC_DATA, *PCDROM_TOC_FULL_TOC_DATA;
+
+typedef struct _CDROM_TOC_PMA_DATA {
+  UCHAR  Length[2];
+  UCHAR  Reserved1;
+  UCHAR  Reserved2;
+  CDROM_TOC_FULL_TOC_DATA_BLOCK  Descriptors[0];
+} CDROM_TOC_PMA_DATA, *PCDROM_TOC_PMA_DATA;
+
+/* SUB_Q_HEADER.AudioStatus constants */
+#define AUDIO_STATUS_NOT_SUPPORTED  0x00
+#define AUDIO_STATUS_IN_PROGRESS    0x11
+#define AUDIO_STATUS_PAUSED         0x12
+#define AUDIO_STATUS_PLAY_COMPLETE  0x13
+#define AUDIO_STATUS_PLAY_ERROR     0x14
+#define AUDIO_STATUS_NO_STATUS      0x15
+
+typedef struct _SUB_Q_HEADER {
+  UCHAR  Reserved;
+  UCHAR  AudioStatus;
+  UCHAR  DataLength[2];
+} SUB_Q_HEADER, *PSUB_Q_HEADER;
+
+typedef struct _SUB_Q_MEDIA_CATALOG_NUMBER {
+  SUB_Q_HEADER  Header;
+  UCHAR  FormatCode;
+  UCHAR  Reserved[3];
+  UCHAR  Reserved1 : 7;
+  UCHAR  Mcval :1;
+  UCHAR  MediaCatalog[15];
+} SUB_Q_MEDIA_CATALOG_NUMBER, *PSUB_Q_MEDIA_CATALOG_NUMBER;
+
+typedef struct _SUB_Q_TRACK_ISRC {
+  SUB_Q_HEADER  Header;
+  UCHAR  FormatCode;
+  UCHAR  Reserved0;
+  UCHAR  Track;
+  UCHAR  Reserved1;
+  UCHAR  Reserved2 : 7;
+  UCHAR  Tcval : 1;
+  UCHAR  TrackIsrc[15];
+} SUB_Q_TRACK_ISRC, *PSUB_Q_TRACK_ISRC;
+
+typedef struct _SUB_Q_CURRENT_POSITION {
+  SUB_Q_HEADER  Header;
+  UCHAR  FormatCode;
+  UCHAR  Control : 4;
+  UCHAR  ADR : 4;
+  UCHAR  TrackNumber;
+  UCHAR  IndexNumber;
+  UCHAR  AbsoluteAddress[4];
+  UCHAR  TrackRelativeAddress[4];
+} SUB_Q_CURRENT_POSITION, *PSUB_Q_CURRENT_POSITION;
+
+typedef union _SUB_Q_CHANNEL_DATA {
+  SUB_Q_CURRENT_POSITION  CurrentPosition;
+  SUB_Q_MEDIA_CATALOG_NUMBER  MediaCatalog;
+  SUB_Q_TRACK_ISRC  TrackIsrc;
+} SUB_Q_CHANNEL_DATA, *PSUB_Q_CHANNEL_DATA;
+
+/* CDROM_AUDIO_CONTROL.LbaFormat constants */
+#define AUDIO_WITH_PREEMPHASIS            0x1
+#define DIGITAL_COPY_PERMITTED            0x2
+#define AUDIO_DATA_TRACK                  0x4
+#define TWO_FOUR_CHANNEL_AUDIO            0x8
+
+typedef struct _CDROM_AUDIO_CONTROL {
+	UCHAR  LbaFormat;
+	USHORT  LogicalBlocksPerSecond;
+} CDROM_AUDIO_CONTROL, *PCDROM_AUDIO_CONTROL;
+
+typedef struct _VOLUME_CONTROL {
+  UCHAR  PortVolume[4];
+} VOLUME_CONTROL, *PVOLUME_CONTROL;
+
+typedef enum _TRACK_MODE_TYPE {
+	YellowMode2,
+	XAForm2,
+	CDDA
+} TRACK_MODE_TYPE, *PTRACK_MODE_TYPE;
+
+typedef struct __RAW_READ_INFO {
+	LARGE_INTEGER  DiskOffset;
+	ULONG  SectorCount;
+	TRACK_MODE_TYPE  TrackMode;
+} RAW_READ_INFO, *PRAW_READ_INFO;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __NTDDCDRM_H */
Index: Daodan/MinGW/include/ddk/ntddcdvd.h
===================================================================
--- Daodan/MinGW/include/ddk/ntddcdvd.h	(revision 1046)
+++ Daodan/MinGW/include/ddk/ntddcdvd.h	(revision 1046)
@@ -0,0 +1,213 @@
+/*
+ * ntddcdvd.h
+ *
+ * DVD IOCTL interface.
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __NTDDCDVD_H
+#define __NTDDCDVD_H
+
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "ntddk.h"
+#include "ntddstor.h"
+
+#define IOCTL_DVD_BASE                    FILE_DEVICE_DVD
+
+#define IOCTL_DVD_END_SESSION \
+  CTL_CODE(IOCTL_DVD_BASE, 0x0403, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+#define IOCTL_DVD_GET_REGION \
+  CTL_CODE(IOCTL_DVD_BASE, 0x0405, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+#define IOCTL_DVD_READ_KEY \
+  CTL_CODE(IOCTL_DVD_BASE, 0x0401, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+#define IOCTL_DVD_READ_STRUCTURE \
+  CTL_CODE(IOCTL_DVD_BASE, 0x0450, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+#define IOCTL_DVD_SEND_KEY \
+  CTL_CODE(IOCTL_DVD_BASE, 0x0402, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+#define IOCTL_DVD_START_SESSION \
+  CTL_CODE(IOCTL_DVD_BASE, 0x0400, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+#define IOCTL_DVD_SET_READ_AHEAD \
+  CTL_CODE(IOCTL_DVD_BASE, 0x0404, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+
+typedef ULONG DVD_SESSION_ID, *PDVD_SESSION_ID;
+
+typedef struct _STORAGE_SET_READ_AHEAD {
+	LARGE_INTEGER  TriggerAddress;
+	LARGE_INTEGER  TargetAddress;
+} STORAGE_SET_READ_AHEAD, *PSTORAGE_SET_READ_AHEAD;
+
+typedef enum DVD_STRUCTURE_FORMAT {
+  DvdPhysicalDescriptor,
+  DvdCopyrightDescriptor,
+  DvdDiskKeyDescriptor,
+  DvdBCADescriptor,
+  DvdManufacturerDescriptor,
+  DvdMaxDescriptor
+} DVD_STRUCTURE_FORMAT, *PDVD_STRUCTURE_FORMAT;
+
+#include <pshpack1.h>
+typedef struct DVD_READ_STRUCTURE {
+  LARGE_INTEGER  BlockByteOffset;
+  DVD_STRUCTURE_FORMAT  Format;
+  DVD_SESSION_ID  SessionId;
+  UCHAR  LayerNumber;
+} DVD_READ_STRUCTURE, *PDVD_READ_STRUCTURE;
+#include <poppack.h>
+
+typedef struct _DVD_DESCRIPTOR_HEADER {
+    USHORT Length;
+    UCHAR Reserved[2];
+    UCHAR Data[0];
+} DVD_DESCRIPTOR_HEADER, *PDVD_DESCRIPTOR_HEADER;
+
+#include <pshpack1.h>
+typedef struct _DVD_LAYER_DESCRIPTOR {
+  UCHAR  BookVersion : 4;
+  UCHAR  BookType : 4;
+  UCHAR  MinimumRate : 4;
+  UCHAR  DiskSize : 4;
+  UCHAR  LayerType : 4;
+  UCHAR  TrackPath : 1;
+  UCHAR  NumberOfLayers : 2;
+  UCHAR  Reserved1 : 1;
+  UCHAR  TrackDensity : 4;
+  UCHAR  LinearDensity : 4;
+  ULONG  StartingDataSector;
+  ULONG  EndDataSector;
+  ULONG  EndLayerZeroSector;
+  UCHAR  Reserved5 : 7;
+  UCHAR  BCAFlag : 1;
+  UCHAR  Reserved6;
+} DVD_LAYER_DESCRIPTOR, *PDVD_LAYER_DESCRIPTOR;
+#include <poppack.h>
+
+typedef struct _DVD_COPYRIGHT_DESCRIPTOR {
+  UCHAR  CopyrightProtectionType;
+  UCHAR  RegionManagementInformation;
+  USHORT  Reserved;
+} DVD_COPYRIGHT_DESCRIPTOR, *PDVD_COPYRIGHT_DESCRIPTOR;
+
+typedef struct _DVD_DISK_KEY_DESCRIPTOR {
+  UCHAR  DiskKeyData[2048];
+} DVD_DISK_KEY_DESCRIPTOR, *PDVD_DISK_KEY_DESCRIPTOR;
+
+typedef enum _DVD_KEY_TYPE {
+	DvdChallengeKey = 0x01,
+	DvdBusKey1,
+	DvdBusKey2,
+	DvdTitleKey,
+	DvdAsf,
+	DvdSetRpcKey = 0x6,
+	DvdGetRpcKey = 0x8,
+	DvdDiskKey = 0x80,
+	DvdInvalidateAGID = 0x3f
+} DVD_KEY_TYPE;
+
+typedef struct _DVD_COPY_PROTECT_KEY {
+	ULONG  KeyLength;
+	DVD_SESSION_ID  SessionId;
+	DVD_KEY_TYPE  KeyType;
+	ULONG  KeyFlags;
+	union {
+		HANDLE  FileHandle;
+		LARGE_INTEGER  TitleOffset;
+	} Parameters;
+	UCHAR  KeyData[0];
+} DVD_COPY_PROTECT_KEY, *PDVD_COPY_PROTECT_KEY;
+
+#define DVD_CHALLENGE_KEY_LENGTH          (12 + sizeof(DVD_COPY_PROTECT_KEY))
+#define DVD_BUS_KEY_LENGTH                (8 + sizeof(DVD_COPY_PROTECT_KEY))
+#define DVD_TITLE_KEY_LENGTH              (8 + sizeof(DVD_COPY_PROTECT_KEY))
+#define DVD_DISK_KEY_LENGTH               (2048 + sizeof(DVD_COPY_PROTECT_KEY))
+#define DVD_RPC_KEY_LENGTH                (sizeof(DVD_RPC_KEY) + sizeof(DVD_COPY_PROTECT_KEY))
+#define DVD_SET_RPC_KEY_LENGTH            (sizeof(DVD_SET_RPC_KEY) + sizeof(DVD_COPY_PROTECT_KEY))
+#define DVD_ASF_LENGTH                    (sizeof(DVD_ASF) + sizeof(DVD_COPY_PROTECT_KEY))
+
+#define DVD_END_ALL_SESSIONS              ((DVD_SESSION_ID) 0xffffffff)
+
+
+#define DVD_CGMS_RESERVED_MASK            0x00000078
+
+#define DVD_CGMS_COPY_PROTECT_MASK        0x00000018
+#define DVD_CGMS_COPY_PERMITTED           0x00000000
+#define DVD_CGMS_COPY_ONCE                0x00000010
+#define DVD_CGMS_NO_COPY                  0x00000018
+
+#define DVD_COPYRIGHT_MASK                0x00000040
+#define DVD_NOT_COPYRIGHTED               0x00000000
+#define DVD_COPYRIGHTED                   0x00000040
+
+#define DVD_SECTOR_PROTECT_MASK           0x00000020
+#define DVD_SECTOR_NOT_PROTECTED          0x00000000
+#define DVD_SECTOR_PROTECTED              0x00000020
+
+
+typedef struct _DVD_BCA_DESCRIPTOR {
+  UCHAR  BCAInformation[0];
+} DVD_BCA_DESCRIPTOR, *PDVD_BCA_DESCRIPTOR;
+
+typedef struct _DVD_MANUFACTURER_DESCRIPTOR {
+  UCHAR  ManufacturingInformation[2048];
+} DVD_MANUFACTURER_DESCRIPTOR, *PDVD_MANUFACTURER_DESCRIPTOR;
+
+typedef struct _DVD_RPC_KEY {
+  UCHAR  UserResetsAvailable : 3;
+  UCHAR  ManufacturerResetsAvailable : 3;
+  UCHAR  TypeCode : 2;
+  UCHAR  RegionMask;
+  UCHAR  RpcScheme;
+  UCHAR  Reserved2[1];
+} DVD_RPC_KEY, *PDVD_RPC_KEY;
+
+typedef struct _DVD_SET_RPC_KEY {
+  UCHAR  PreferredDriveRegionCode;
+  UCHAR  Reserved[3];
+} DVD_SET_RPC_KEY, *PDVD_SET_RPC_KEY;
+
+typedef struct _DVD_ASF {
+  UCHAR  Reserved0[3];
+  UCHAR  SuccessFlag : 1;
+  UCHAR  Reserved1 : 7;
+} DVD_ASF, *PDVD_ASF;
+
+typedef struct _DVD_REGION {
+	UCHAR  CopySystem;
+	UCHAR  RegionData;
+	UCHAR  SystemRegion;
+	UCHAR  ResetCount;
+} DVD_REGION, *PDVD_REGION;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __NTDDCDVD_H */
Index: Daodan/MinGW/include/ddk/ntddchgr.h
===================================================================
--- Daodan/MinGW/include/ddk/ntddchgr.h	(revision 1046)
+++ Daodan/MinGW/include/ddk/ntddchgr.h	(revision 1046)
@@ -0,0 +1,353 @@
+/*
+ * ntddchgr.h
+ *
+ * Media changer IOCTL interface.
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __NTDDCHGR_H
+#define __NTDDCHGR_H
+
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "ntddk.h"
+#include "ntddstor.h"
+
+#define DD_CHANGER_DEVICE_NAME            "\\Device\\Changer"
+#define DD_CHANGER_DEVICE_NAME_U          L"\\Device\\Changer"
+
+#define IOCTL_CHANGER_BASE                FILE_DEVICE_CHANGER
+
+#define IOCTL_CHANGER_EXCHANGE_MEDIUM  \
+  CTL_CODE(IOCTL_CHANGER_BASE, 0x0008, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+#define IOCTL_CHANGER_GET_ELEMENT_STATUS \
+  CTL_CODE(IOCTL_CHANGER_BASE, 0x0005, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+
+#define IOCTL_CHANGER_GET_PARAMETERS \
+  CTL_CODE(IOCTL_CHANGER_BASE, 0x0000, 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_GET_STATUS \
+  CTL_CODE(IOCTL_CHANGER_BASE, 0x0001, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+#define IOCTL_CHANGER_INITIALIZE_ELEMENT_STATUS \
+  CTL_CODE(IOCTL_CHANGER_BASE, 0x0006, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+#define IOCTL_CHANGER_MOVE_MEDIUM \
+  CTL_CODE(IOCTL_CHANGER_BASE, 0x0009, 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 IOCTL_CHANGER_REINITIALIZE_TRANSPORT \
+  CTL_CODE(IOCTL_CHANGER_BASE, 0x000A, 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_SET_POSITION \
+  CTL_CODE(IOCTL_CHANGER_BASE, 0x0007, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+
+#define MAX_VOLUME_ID_SIZE                36
+#define MAX_VOLUME_TEMPLATE_SIZE          40
+
+typedef  enum _ELEMENT_TYPE {
+  AllElements,
+  ChangerTransport,
+  ChangerSlot,
+  ChangerIEPort,
+  ChangerDrive,
+  ChangerDoor,
+  ChangerKeypad,
+  ChangerMaxElement
+} ELEMENT_TYPE, *PELEMENT_TYPE;
+
+typedef struct _CHANGER_ELEMENT {
+  ELEMENT_TYPE  ElementType;
+  ULONG  ElementAddress;
+} CHANGER_ELEMENT, *PCHANGER_ELEMENT;
+
+typedef struct _CHANGER_ELEMENT_LIST {
+  CHANGER_ELEMENT  Element;
+  ULONG  NumberOfElements;
+} CHANGER_ELEMENT_LIST, *PCHANGER_ELEMENT_LIST;
+
+typedef struct _CHANGER_INITIALIZE_ELEMENT_STATUS {
+  CHANGER_ELEMENT_LIST  ElementList;
+  BOOLEAN  BarCodeScan;
+} CHANGER_INITIALIZE_ELEMENT_STATUS, *PCHANGER_INITIALIZE_ELEMENT_STATUS;
+
+typedef struct _CHANGER_READ_ELEMENT_STATUS {
+  CHANGER_ELEMENT_LIST  ElementList;
+  BOOLEAN  VolumeTagInfo;
+} CHANGER_READ_ELEMENT_STATUS, *PCHANGER_READ_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;
+
+#define VENDOR_ID_LENGTH                  8
+#define PRODUCT_ID_LENGTH                 16
+#define REVISION_LENGTH                   4
+#define SERIAL_NUMBER_LENGTH              32
+
+typedef  struct _CHANGER_PRODUCT_DATA {
+	UCHAR  VendorId[VENDOR_ID_LENGTH];
+	UCHAR  ProductId[PRODUCT_ID_LENGTH];
+	UCHAR  Revision[REVISION_LENGTH];
+	UCHAR  SerialNumber[SERIAL_NUMBER_LENGTH];
+	UCHAR  DeviceType;
+} CHANGER_PRODUCT_DATA, *PCHANGER_PRODUCT_DATA;
+
+/* CHANGER_SET_ACCESS.Control constants */
+#define LOCK_ELEMENT                      0
+#define UNLOCK_ELEMENT                    1
+#define EXTEND_IEPORT                     2
+#define RETRACT_IEPORT                    3
+
+typedef struct _CHANGER_SET_ACCESS {
+  CHANGER_ELEMENT  Element;
+  ULONG  Control;
+} CHANGER_SET_ACCESS, *PCHANGER_SET_ACCESS;
+
+
+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;
+
+/* CHANGER_ELEMENT_STATUS(_EX).Flags constants */
+#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
+
+/* CHANGER_ELEMENT_STATUS(_EX).ExceptionCode constants */
+#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_ELEMENT_STATUS {
+  CHANGER_ELEMENT  Element;
+  CHANGER_ELEMENT  SrcElementAddress;
+  ULONG  Flags;
+  ULONG  ExceptionCode;
+  UCHAR  TargetId;
+  UCHAR  Lun;
+  USHORT  Reserved;
+  UCHAR  PrimaryVolumeID[MAX_VOLUME_ID_SIZE];
+  UCHAR  AlternateVolumeID[MAX_VOLUME_ID_SIZE];
+} CHANGER_ELEMENT_STATUS, *PCHANGER_ELEMENT_STATUS;
+
+typedef  struct _CHANGER_ELEMENT_STATUS_EX {
+  CHANGER_ELEMENT  Element;
+  CHANGER_ELEMENT  SrcElementAddress;
+  ULONG  Flags;
+  ULONG  ExceptionCode;
+  UCHAR  TargetId;
+  UCHAR  Lun;
+  USHORT  Reserved;
+  UCHAR  PrimaryVolumeID[MAX_VOLUME_ID_SIZE];
+  UCHAR  AlternateVolumeID[MAX_VOLUME_ID_SIZE];
+  UCHAR  VendorIdentification[VENDOR_ID_LENGTH];
+  UCHAR  ProductIdentification[PRODUCT_ID_LENGTH];
+  UCHAR  SerialNumber[SERIAL_NUMBER_LENGTH];
+} CHANGER_ELEMENT_STATUS_EX, *PCHANGER_ELEMENT_STATUS_EX;
+
+/* CHANGER_SEND_VOLUME_TAG_INFORMATION.ActionCode constants */
+#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 struct _CHANGER_SEND_VOLUME_TAG_INFORMATION {
+  CHANGER_ELEMENT StartingElement;
+  ULONG  ActionCode;
+  UCHAR  VolumeIDTemplate[MAX_VOLUME_TEMPLATE_SIZE];
+} CHANGER_SEND_VOLUME_TAG_INFORMATION, *PCHANGER_SEND_VOLUME_TAG_INFORMATION;
+
+/* GET_CHANGER_PARAMETERS.Features0 constants */
+#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
+
+/* GET_CHANGER_PARAMETERS.Features1 constants */
+#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
+
+/* GET_CHANGER_PARAMETERS.MoveFrom,ExchangeFrom,PositionCapabilities constants */
+#define CHANGER_TO_TRANSPORT              0x01
+#define CHANGER_TO_SLOT                   0x02
+#define CHANGER_TO_IEPORT                 0x04
+#define CHANGER_TO_DRIVE                  0x08
+
+/* GET_CHANGER_PARAMETERS.LockUnlockCapabilities constants */
+#define LOCK_UNLOCK_IEPORT                0x01
+#define LOCK_UNLOCK_DOOR                  0x02
+#define LOCK_UNLOCK_KEYPAD                0x04
+
+typedef struct _GET_CHANGER_PARAMETERS {
+  ULONG  Size;
+  USHORT  NumberTransportElements;
+  USHORT  NumberStorageElements;
+  USHORT  NumberCleanerSlots;
+  USHORT  NumberIEElements;
+  USHORT  NumberDataTransferElements;
+  USHORT  NumberOfDoors;
+  USHORT  FirstSlotNumber;
+  USHORT  FirstDriveNumber;
+  USHORT  FirstTransportNumber;
+  USHORT  FirstIEPortNumber;
+  USHORT  FirstCleanerSlotAddress;
+  USHORT  MagazineSize;
+  ULONG  DriveCleanTimeout;
+  ULONG  Features0;
+  ULONG  Features1;
+  UCHAR  MoveFromTransport;
+  UCHAR  MoveFromSlot;
+  UCHAR  MoveFromIePort;
+  UCHAR  MoveFromDrive;
+  UCHAR  ExchangeFromTransport;
+  UCHAR  ExchangeFromSlot;
+  UCHAR  ExchangeFromIePort;
+  UCHAR  ExchangeFromDrive;
+  UCHAR  LockUnlockCapabilities;
+  UCHAR  PositionCapabilities;
+  UCHAR  Reserved1[2];
+  ULONG  Reserved2[2];
+} GET_CHANGER_PARAMETERS, * PGET_CHANGER_PARAMETERS;
+
+typedef struct READ_ELEMENT_ADDRESS_INFO {
+  ULONG  NumberOfElements;
+  CHANGER_ELEMENT_STATUS  ElementStatus[1];
+} READ_ELEMENT_ADDRESS_INFO, *PREAD_ELEMENT_ADDRESS_INFO;
+
+typedef struct _TAPE_WMI_OPERATIONS {
+  ULONG  Method;
+  ULONG  DataBufferSize;
+  PVOID  DataBuffer;
+} TAPE_WMI_OPERATIONS, *PTAPE_WMI_OPERATIONS;
+
+typedef struct _WMI_CHANGER_PROBLEM_DEVICE_ERROR {
+  ULONG  ChangerProblemType;
+} WMI_CHANGER_PROBLEM_DEVICE_ERROR, *PWMI_CHANGER_PROBLEM_DEVICE_ERROR;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __NTDDCHGR_H */
Index: Daodan/MinGW/include/ddk/ntdddisk.h
===================================================================
--- Daodan/MinGW/include/ddk/ntdddisk.h	(revision 1046)
+++ Daodan/MinGW/include/ddk/ntdddisk.h	(revision 1046)
@@ -0,0 +1,557 @@
+/*
+ * ddk/ntdddisk.h
+ *
+ * Driver Development Kit -- Disk IOCTL interface.
+ *
+ * Written by Casper S. Hornstrup  <chorns@users.sourceforge.net>
+ * Copyright (C) 2002-2004, 2015, 2016, MinGW.org Project.
+ *
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice, this permission notice, and the following
+ * disclaimer shall be included in all copies or substantial portions of
+ * the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OF OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ *
+ */
+#ifndef _DDK_NTDDDISK_H
+#pragma GCC system_header
+
+/* This file supports partial inclusion by <winioctl.h>; defer definition
+ * of its normal repeat inclusion guard macro...
+ */
+#ifndef __WINIOCTL_H_SOURCED__
+/* ...until we've ascertained that this is NOT such partial inclusion.
+ */
+#define _DDK_NTDDDISK_H
+
+/* In case of full inclusion, we must also include the full content of:
+ */
+#include "ntddk.h"
+#endif
+
+/* In either case, we always include <ddk/ntddstor.h>, either in full,
+ * or under the same criterion of selectivity as for this file itself.
+ */
+#include "ntddstor.h"
+
+#if ! (defined _DDK_NTDDDISK_H && defined _WINIOCTL_H)
+/* The content of this section is common to both <ddk/ntdddisk.h> and
+ * <winioctl.h>.  If both repeat inclusion guards are already defined,
+ * then we've already seen it; there is no need to process it again.
+ */
+#define __IOCTL_DISK_(FN,M,A)			  CTL_CODE(IOCTL_DISK_BASE,(FN),(M),(A))
+
+#define IOCTL_DISK_BASE 			  FILE_TYPE_DISK
+#define IOCTL_DISK_GET_DRIVE_GEOMETRY		__FILE_AM_BUFFERED(__IOCTL_DISK_,0x0000)
+#define IOCTL_DISK_GET_PARTITION_INFO		__FILE_RD_BUFFERED(__IOCTL_DISK_,0x0001)
+#define IOCTL_DISK_SET_PARTITION_INFO		__FILE_RW_BUFFERED(__IOCTL_DISK_,0x0002)
+#define IOCTL_DISK_GET_DRIVE_LAYOUT		__FILE_RD_BUFFERED(__IOCTL_DISK_,0x0003)
+#define IOCTL_DISK_SET_DRIVE_LAYOUT		__FILE_RW_BUFFERED(__IOCTL_DISK_,0x0004)
+#define IOCTL_DISK_VERIFY			__FILE_AM_BUFFERED(__IOCTL_DISK_,0x0005)
+#define IOCTL_DISK_FORMAT_TRACKS		__FILE_RW_BUFFERED(__IOCTL_DISK_,0x0006)
+#define IOCTL_DISK_REASSIGN_BLOCKS		__FILE_RW_BUFFERED(__IOCTL_DISK_,0x0007)
+#define IOCTL_DISK_PERFORMANCE			__FILE_AM_BUFFERED(__IOCTL_DISK_,0x0008)
+#define IOCTL_DISK_IS_WRITABLE			__FILE_AM_BUFFERED(__IOCTL_DISK_,0x0009)
+#define IOCTL_DISK_FORMAT_TRACKS_EX		__FILE_RW_BUFFERED(__IOCTL_DISK_,0x000B)
+#define IOCTL_DISK_GET_PARTITION_INFO_EX	__FILE_AM_BUFFERED(__IOCTL_DISK_,0x0012)
+#define IOCTL_DISK_SET_PARTITION_INFO_EX	__FILE_RW_BUFFERED(__IOCTL_DISK_,0x0013)
+#define IOCTL_DISK_GET_DRIVE_LAYOUT_EX		__FILE_AM_BUFFERED(__IOCTL_DISK_,0x0014)
+#define IOCTL_DISK_SET_DRIVE_LAYOUT_EX		__FILE_RW_BUFFERED(__IOCTL_DISK_,0x0015)
+#define IOCTL_DISK_CREATE_DISK			__FILE_RW_BUFFERED(__IOCTL_DISK_,0x0016)
+#define IOCTL_DISK_GET_LENGTH_INFO		__FILE_RD_BUFFERED(__IOCTL_DISK_,0x0017)
+#define IOCTL_DISK_PERFORMANCE_OFF		__FILE_AM_BUFFERED(__IOCTL_DISK_,0x0018)
+#define IOCTL_DISK_GET_DRIVE_GEOMETRY_EX	__FILE_AM_BUFFERED(__IOCTL_DISK_,0x0028)
+#define IOCTL_DISK_UPDATE_DRIVE_SIZE		__FILE_RW_BUFFERED(__IOCTL_DISK_,0x0032)
+#define IOCTL_DISK_GROW_PARTITION		__FILE_RW_BUFFERED(__IOCTL_DISK_,0x0034)
+#define IOCTL_DISK_GET_CACHE_INFORMATION	__FILE_RD_BUFFERED(__IOCTL_DISK_,0x0035)
+#define IOCTL_DISK_SET_CACHE_INFORMATION	__FILE_RW_BUFFERED(__IOCTL_DISK_,0x0036)
+#define IOCTL_DISK_DELETE_DRIVE_LAYOUT		__FILE_RW_BUFFERED(__IOCTL_DISK_,0x0040)
+#define IOCTL_DISK_CHECK_VERIFY 		__FILE_RD_BUFFERED(__IOCTL_DISK_,0x0200)
+#define IOCTL_DISK_RESERVE			__FILE_RD_BUFFERED(__IOCTL_DISK_,0x0204)
+#define IOCTL_DISK_FIND_NEW_DEVICES		__FILE_RD_BUFFERED(__IOCTL_DISK_,0x0206)
+#define IOCTL_DISK_GET_MEDIA_TYPES		__FILE_AM_BUFFERED(__IOCTL_DISK_,0x0300)
+
+enum
+{ PARTITION_ENTRY_UNUSED	= 0x00,
+  PARTITION_FAT_12		= 0x01,
+  PARTITION_XENIX_1		= 0x02,
+  PARTITION_XENIX_2		= 0x03,
+  PARTITION_FAT_16		= 0x04,
+  PARTITION_EXTENDED		= 0x05,
+  PARTITION_HUGE		= 0x06,
+  PARTITION_IFS 		= 0x07,
+  PARTITION_OS2BOOTMGR		= 0x0A,
+  PARTITION_FAT32		= 0x0B,
+  PARTITION_FAT32_XINT13	= 0x0C,
+  PARTITION_XINT13		= 0x0E,
+  PARTITION_XINT13_EXTENDED	= 0x0F,
+  PARTITION_PREP		= 0x41,
+  PARTITION_LDM 		= 0x42,
+  PARTITION_UNIX		= 0x63,
+  PARTITION_NTFT		= 0x80,
+  VALID_NTFT			= 0xC0
+};
+
+#define IsRecognizedPartition( TYPE ) \
+ (   (((TYPE) & PARTITION_NTFT) && (((TYPE) & ~VALID_NTFT) == PARTITION_FAT_12))\
+  || (((TYPE) & PARTITION_NTFT) && (((TYPE) & ~VALID_NTFT) == PARTITION_HUGE))\
+  || (((TYPE) & PARTITION_NTFT) && (((TYPE) & ~VALID_NTFT) == PARTITION_IFS))\
+  || (((TYPE) & PARTITION_NTFT) && (((TYPE) & ~VALID_NTFT) == PARTITION_FAT32))\
+  || (((TYPE) & PARTITION_NTFT) && (((TYPE) & ~VALID_NTFT) == PARTITION_FAT32_XINT13))\
+  || (((TYPE) & PARTITION_NTFT) && (((TYPE) & ~VALID_NTFT) == PARTITION_XINT13))\
+  || ((TYPE) == PARTITION_FAT32) || ((TYPE) == PARTITION_FAT32_XINT13)\
+  || ((TYPE) == PARTITION_FAT_12) || ((TYPE) == PARTITION_FAT_16)\
+  || ((TYPE) == PARTITION_HUGE) || ((TYPE) == PARTITION_IFS)\
+  || ((TYPE) == PARTITION_XINT13)\
+ )
+#define IsContainerPartition( TYPE ) \
+ (((TYPE) == PARTITION_EXTENDED) || ((TYPE) == PARTITION_XINT13_EXTENDED))
+
+typedef
+enum _MEDIA_TYPE
+/* https://msdn.microsoft.com/en-us/library/windows/hardware/ff562216(v=vs.85).aspx */
+{ Unknown			= 0x00,
+  F5_1Pt2_512			= 0x01,
+  F3_1Pt44_512			= 0x02,
+  F3_2Pt88_512			= 0x03,
+  F3_20Pt8_512			= 0x04,
+  F3_720_512			= 0x05,
+  F5_360_512			= 0x06,
+  F5_320_512			= 0x07,
+  F5_320_1024			= 0x08,
+  F5_180_512			= 0x09,
+  F5_160_512			= 0x0A,
+  RemovableMedia		= 0x0B,
+  FixedMedia			= 0x0C,
+  F3_120M_512			= 0x0D,
+  F3_640_512			= 0x0E,
+  F5_640_512			= 0x0F,
+  F5_720_512			= 0x10,
+  F3_1Pt2_512			= 0x11,
+  F3_1Pt23_1024 		= 0x12,
+  F5_1Pt23_1024 		= 0x13,
+  F3_128Mb_512			= 0x14,
+  F3_230Mb_512			= 0x15,
+  F8_256_128			= 0x16,
+  F3_200Mb_512			= 0x17,
+  F3_240M_512			= 0x18,
+  F3_32M_512			= 0x19
+} MEDIA_TYPE, *PMEDIA_TYPE;
+
+typedef
+enum _DETECTION_TYPE
+/* https://msdn.microsoft.com/en-us/library/windows/hardware/ff552516%28v=vs.85%29.aspx */
+{ DetectNone			= 0,
+  DetectInt13			= 1,
+  DetectExInt13			= 2
+} DETECTION_TYPE;
+
+typedef
+struct _DISK_INT13_INFO
+/* https://msdn.microsoft.com/en-us/library/windows/hardware/ff552624(v=vs.85).aspx */
+{ USHORT	DriveSelect;
+  ULONG 	MaxCylinders;
+  USHORT	SectorsPerTrack;
+  USHORT	MaxHeads;
+  USHORT	NumberDrives;
+} DISK_INT13_INFO, *PDISK_INT13_INFO;
+
+typedef
+struct _DISK_EX_INT13_INFO
+/* https://msdn.microsoft.com/en-us/library/windows/hardware/ff552610(v=vs.85).aspx */
+{ USHORT	ExBufferSize;
+  USHORT	ExFlags;
+  ULONG 	ExCylinders;
+  ULONG 	ExHeads;
+  ULONG 	ExSectorsPerTrack;
+  ULONG64	ExSectorsPerDrive;
+  USHORT	ExSectorSize;
+  USHORT	ExReserved;
+} DISK_EX_INT13_INFO, *PDISK_EX_INT13_INFO;
+
+typedef
+struct _DISK_DETECTION_INFO
+/* https://msdn.microsoft.com/en-us/library/windows/hardware/ff552601(v=vs.85).aspx */
+{ ULONG 		      SizeOfDetectInfo;
+  DETECTION_TYPE	      DetectionType;
+  _ANONYMOUS_UNION union
+  { _ANONYMOUS_STRUCT struct
+    { DISK_INT13_INFO	      Int13;
+      DISK_EX_INT13_INFO      ExInt13;
+    } DUMMYSTRUCTNAME;
+  } DUMMYUNIONNAME;
+} DISK_DETECTION_INFO, *PDISK_DETECTION_INFO;
+
+typedef
+struct _DISK_GEOMETRY
+/* https://msdn.microsoft.com/en-us/library/windows/hardware/ff552613(v=vs.85).aspx */
+{ LARGE_INTEGER 	Cylinders;
+  MEDIA_TYPE		MediaType;
+  ULONG 		TracksPerCylinder;
+  ULONG 		SectorsPerTrack;
+  ULONG 		BytesPerSector;
+} DISK_GEOMETRY, *PDISK_GEOMETRY;
+
+typedef
+struct _DISK_GEOMETRY_EX
+/* https://msdn.microsoft.com/en-us/library/windows/hardware/ff552618(v=vs.85).aspx */
+{ DISK_GEOMETRY 	Geometry;
+  LARGE_INTEGER 	DiskSize;
+  UCHAR 		Data[1];
+} DISK_GEOMETRY_EX, *PDISK_GEOMETRY_EX;
+
+/* Note: although declared as an array of only one byte, the Data area within
+ * the DISK_GEOMETRY_EX structure represents a variable size region containing
+ * a DISK_PARTITION_INFO structure followed by a DISK_DETECTION_INFO structure;
+ * the above <ddk/ntdddisk.h> reference defines the following pair of macros,
+ * for obtaining pointers to the embedded structures, given a pointer to the
+ * containing DISK_GEOMETRY_EX structure itself; (the corresponding reference
+ * for <winioctl.h> refers to these macros, without defining them).
+ */
+#if NTDDI_VERSION < NTDDI_WS03
+ /* FIXME: given the above definition for DISK_GEOMETRY_EX, this pair of
+  * macro definitions makes no sense at all...
+  */
+# define DiskGeometryGetPartition(Geometry) \
+   ((PDISK_PARTITION_INFO)((Geometry) + 1))
+
+# define DiskGeometryGetDetect(Geometry) \
+   ((PDISK_DETECTION_INFO)(((PBYTE)DiskGeometryGetPartition(Geometry) + \
+       DiskGeometryGetPartition(Geometry)->SizeOfPartitionInfo)))
+#else
+ /* ...whereas this pair would seem to be appropriate, regardless of the
+  * underlying NTDDI_VERSION.
+  */
+# define DiskGeometryGetPartition(Geometry) \
+   ((PDISK_PARTITION_INFO)((Geometry)->Data))
+
+# define DiskGeometryGetDetect(Geometry) \
+   ((PDISK_DETECTION_INFO)(((ULONG_PTR)DiskGeometryGetPartition(Geometry) + \
+       DiskGeometryGetPartition(Geometry)->SizeOfPartitionInfo)))
+#endif
+
+typedef
+struct _PARTITION_INFORMATION
+/* https://msdn.microsoft.com/en-us/library/windows/hardware/ff563751(v=vs.85).aspx */
+{ LARGE_INTEGER 	StartingOffset;
+  LARGE_INTEGER 	PartitionLength;
+  ULONG 		HiddenSectors;
+  ULONG 		PartitionNumber;
+  UCHAR 		PartitionType;
+  BOOLEAN		BootIndicator;
+  BOOLEAN		RecognizedPartition;
+  BOOLEAN		RewritePartition;
+} PARTITION_INFORMATION, *PPARTITION_INFORMATION;
+
+typedef
+struct _PARTITION_INFORMATION_GPT
+/* https://msdn.microsoft.com/en-us/library/windows/hardware/ff563763(v=vs.85).aspx */
+{ GUID			PartitionType;
+  GUID			PartitionId;
+  ULONG64		Attributes;
+  WCHAR 		Name[36];
+} PARTITION_INFORMATION_GPT, *PPARTITION_INFORMATION_GPT;
+
+typedef
+struct _DISK_PARTITION_INFO
+/* https://msdn.microsoft.com/en-us/library/windows/hardware/ff552629(v=vs.85).aspx */
+{ ULONG 		  SizeOfPartitionInfo;
+  PARTITION_STYLE	  PartitionStyle;
+  _ANONYMOUS_UNION union
+  { struct
+    { ULONG		    Signature;
+      ULONG		    CheckSum;
+    }			  Mbr;
+    struct
+    { GUID		    DiskId;
+    }			  Gpt;
+  } DUMMYUNIONNAME;
+} DISK_PARTITION_INFO, *PDISK_PARTITION_INFO;
+
+typedef
+struct _DISK_PERFORMANCE
+/* https://msdn.microsoft.com/en-us/library/windows/hardware/ff552633(v=vs.85).aspx */
+{ LARGE_INTEGER 	BytesRead;
+  LARGE_INTEGER 	BytesWritten;
+  LARGE_INTEGER 	ReadTime;
+  LARGE_INTEGER 	WriteTime;
+  LARGE_INTEGER 	IdleTime;
+  ULONG 		ReadCount;
+  ULONG 		WriteCount;
+  ULONG 		QueueDepth;
+  ULONG 		SplitCount;
+  LARGE_INTEGER 	QueryTime;
+  ULONG 		StorageDeviceNumber;
+  WCHAR 		StorageManagerName[8];
+} DISK_PERFORMANCE, *PDISK_PERFORMANCE;
+
+typedef
+struct _PARTITION_INFORMATION_EX
+/* https://msdn.microsoft.com/en-us/library/windows/hardware/ff563754(v=vs.85).aspx */
+{ PARTITION_STYLE		PartitionStyle;
+  LARGE_INTEGER 		StartingOffset;
+  LARGE_INTEGER 		PartitionLength;
+  ULONG 			PartitionNumber;
+  BOOLEAN			RewritePartition;
+  _ANONYMOUS_UNION union
+  { PARTITION_INFORMATION_MBR	Mbr;
+    PARTITION_INFORMATION_GPT	Gpt;
+  } DUMMYUNIONNAME;
+} PARTITION_INFORMATION_EX, *PPARTITION_INFORMATION_EX;
+
+typedef
+struct _FORMAT_EX_PARAMETERS
+/* https://msdn.microsoft.com/en-us/library/windows/hardware/ff553875(v=vs.85).aspx */
+{ MEDIA_TYPE	MediaType;
+  ULONG 	StartCylinderNumber;
+  ULONG 	EndCylinderNumber;
+  ULONG 	StartHeadNumber;
+  ULONG 	EndHeadNumber;
+  USHORT	FormatGapLength;
+  USHORT	SectorsPerTrack;
+  USHORT	SectorNumber[1];
+} FORMAT_EX_PARAMETERS, *PFORMAT_EX_PARAMETERS;
+
+typedef
+struct _FORMAT_PARAMETERS
+/* https://msdn.microsoft.com/en-us/library/windows/hardware/ff553878(v=vs.85).aspx */
+{ MEDIA_TYPE	MediaType;
+  ULONG 	StartCylinderNumber;
+  ULONG 	EndCylinderNumber;
+  ULONG 	StartHeadNumber;
+  ULONG 	EndHeadNumber;
+} FORMAT_PARAMETERS, *PFORMAT_PARAMETERS;
+
+typedef
+struct _GET_LENGTH_INFORMATION
+/* https://msdn.microsoft.com/en-us/library/windows/hardware/ff554986(v=vs.85).aspx */
+{ LARGE_INTEGER 	Length;
+} GET_LENGTH_INFORMATION, *PGET_LENGTH_INFORMATION;
+
+typedef
+struct _REASSIGN_BLOCKS
+/* https://msdn.microsoft.com/en-us/library/windows/hardware/ff563962(v=vs.85).aspx */
+{ USHORT  	Reserved;
+  USHORT  	Count;
+  ULONG 	BlockNumber[1];
+} REASSIGN_BLOCKS, *PREASSIGN_BLOCKS;
+
+typedef
+struct _SET_PARTITION_INFORMATION
+/* https://msdn.microsoft.com/en-us/library/windows/hardware/ff566192(v=vs.85).aspx */
+{ UCHAR 	PartitionType;
+} SET_PARTITION_INFORMATION, *PSET_PARTITION_INFORMATION;
+
+typedef
+struct _VERIFY_INFORMATION
+/* https://msdn.microsoft.com/en-us/library/windows/hardware/ff568005(v=vs.85).aspx */
+{ LARGE_INTEGER 	StartingOffset;
+  ULONG 		Length;
+} VERIFY_INFORMATION, *PVERIFY_INFORMATION;
+
+typedef enum
+/* https://msdn.microsoft.com/en-us/library/windows/hardware/ff552583(v=vs.85).aspx */
+{ EqualPriority 		= 0,
+  KeepPrefetchedData		= 1,
+  KeepReadData			= 2
+} DISK_CACHE_RETENTION_PRIORITY;
+
+typedef
+struct _DISK_CACHE_INFORMATION
+/* https://msdn.microsoft.com/en-us/library/windows/hardware/ff552580(v=vs.85).aspx */
+{ BOOLEAN				ParametersSavable;
+  BOOLEAN				ReadCacheEnabled;
+  BOOLEAN				WriteCacheEnabled;
+  DISK_CACHE_RETENTION_PRIORITY 	ReadRetentionPriority;
+  DISK_CACHE_RETENTION_PRIORITY 	WriteRetentionPriority;
+  USHORT				DisablePrefetchTransferLength;
+  BOOLEAN				PrefetchScalar;
+  _ANONYMOUS_UNION union
+  { struct
+    { USHORT				  Minimum;
+      USHORT				  Maximum;
+      USHORT				  MaximumBlocks;
+    }					ScalarPrefetch;
+    struct
+    { USHORT				  Minimum;
+      USHORT				  Maximum;
+    }					BlockPrefetch;
+  } DUMMYUNIONNAME;
+} DISK_CACHE_INFORMATION, *PDISK_CACHE_INFORMATION;
+
+typedef
+struct _DISK_GROW_PARTITION
+/* https://msdn.microsoft.com/en-us/library/windows/hardware/ff552621(v=vs.85).aspx */
+{ ULONG 		PartitionNumber;
+  LARGE_INTEGER 	BytesToGrow;
+} DISK_GROW_PARTITION, *PDISK_GROW_PARTITION;
+
+/* End of _DDK_NTDDDISK_H and _WINIOCTL_H common declarations.
+ */
+#endif
+#ifdef _DDK_NTDDDISK_H
+/* Declarations specific to _DDK_NTDDDISK_H alone.
+ */
+_BEGIN_C_DECLS
+
+#define DD_DISK_DEVICE_NAME			   "\\Device\\UNKNOWN"
+#define DD_DISK_DEVICE_NAME_U			  L"\\Device\\UNKNOWN"
+
+#define IOCTL_DISK_CONTROLLER_NUMBER		__FILE_AM_BUFFERED(__IOCTL_DISK_,0x0011)
+#define IOCTL_DISK_INTERNAL_SET_VERIFY		__FILE_AM_BUFFERED(__IOCTL_DISK_,0x0100)
+#define IOCTL_DISK_INTERNAL_CLEAR_VERIFY	__FILE_AM_BUFFERED(__IOCTL_DISK_,0x0101)
+
+#define SMART_GET_VERSION			__FILE_RD_BUFFERED(__IOCTL_DISK_,0x0020)
+#define SMART_RCV_DRIVE_DATA			__FILE_RW_BUFFERED(__IOCTL_DISK_,0x0022)
+#define SMART_SEND_DRIVE_COMMAND		__FILE_RW_BUFFERED(__IOCTL_DISK_,0x0021)
+
+#define IsFTPartition( PartitionType ) \
+ (((PartitionType) & PARTITION_NTFT) && IsRecognizedPartition(PartitionType))
+
+DEFINE_GUID( WMI_DISK_GEOMETRY_GUID,
+    0x25007f51L, 0x57c2, 0x11d1, 0xa5, 0x28, 0x0, 0xa0, 0xc9, 0x6, 0x29, 0x10
+  );
+
+typedef USHORT BAD_TRACK_NUMBER;
+typedef USHORT *PBAD_TRACK_NUMBER;
+
+typedef
+struct _DISK_CONTROLLER_NUMBER
+{ ULONG 		ControllerNumber;
+  ULONG 		DiskNumber;
+} DISK_CONTROLLER_NUMBER, *PDISK_CONTROLLER_NUMBER;
+
+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;
+  _ANONYMOUS_UNION union
+  { SET_PARTITION_INFORMATION_MBR	Mbr;
+    SET_PARTITION_INFORMATION_GPT	Gpt;
+  } DUMMYUNIONNAME;
+} SET_PARTITION_INFORMATION_EX, *PSET_PARTITION_INFORMATION_EX;
+
+/* GETVERSIONINPARAMS.fCapabilities constants
+ */
+#define CAP_ATA_ID_CMD                    1
+#define CAP_ATAPI_ID_CMD                  2
+#define CAP_SMART_CMD                     4
+
+typedef
+struct _GETVERSIONINPARAMS
+{ UCHAR 		bVersion;
+  UCHAR 		bRevision;
+  UCHAR 		bReserved;
+  UCHAR 		bIDEDeviceMap;
+  ULONG 		fCapabilities;
+  ULONG 		dwReserved[4];
+} GETVERSIONINPARAMS, *PGETVERSIONINPARAMS, *LPGETVERSIONINPARAMS;
+
+/* IDEREGS.bCommandReg constants
+ */
+#define ATAPI_ID_CMD                      0xA1
+#define ID_CMD                            0xEC
+#define SMART_CMD                         0xB0
+
+#define SMART_CYL_LOW                     0x4F
+#define SMART_CYL_HI                      0xC2
+
+typedef
+struct _IDEREGS
+{ UCHAR 		bFeaturesReg;
+  UCHAR 		bSectorCountReg;
+  UCHAR 		bSectorNumberReg;
+  UCHAR 		bCylLowReg;
+  UCHAR 		bCylHighReg;
+  UCHAR 		bDriveHeadReg;
+  UCHAR 		bCommandReg;
+  UCHAR 		bReserved;
+} IDEREGS, *PIDEREGS, *LPIDEREGS;
+
+#include <pshpack1.h>
+typedef
+struct _SENDCMDINPARAMS
+{ ULONG 		cBufferSize;
+  IDEREGS		irDriveRegs;
+  UCHAR 		bDriveNumber;
+  UCHAR 		bReserved[3];
+  ULONG 		dwReserved[4];
+  UCHAR 		bBuffer[1];
+} SENDCMDINPARAMS, *PSENDCMDINPARAMS, *LPSENDCMDINPARAMS;
+#include <poppack.h>
+
+/* DRIVERSTATUS.bDriverError constants
+ */
+#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
+
+typedef
+struct _DRIVERSTATUS
+{ UCHAR 		bDriverError;
+  UCHAR 		bIDEError;
+  UCHAR 		bReserved[2];
+  ULONG 		dwReserved[2];
+} DRIVERSTATUS, *PDRIVERSTATUS, *LPDRIVERSTATUS;
+
+#define READ_ATTRIBUTE_BUFFER_SIZE        512
+#define IDENTIFY_BUFFER_SIZE              512
+#define READ_THRESHOLD_BUFFER_SIZE        512
+#define SMART_LOG_SECTOR_SIZE             512
+
+#include <pshpack1.h>
+typedef
+struct _SENDCMDOUTPARAMS
+{ ULONG 		cBufferSize;
+  DRIVERSTATUS		DriverStatus;
+  UCHAR 		bBuffer[1];
+} SENDCMDOUTPARAMS, *PSENDCMDOUTPARAMS, *LPSENDCMDOUTPARAMS;
+#include <poppack.h>
+
+#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
+
+_END_C_DECLS
+
+#endif	/* _DDK_NTDDDISK_H */
+#endif	/* !_DDK_NTDDDISK_H: $RCSfile: ntdddisk.h,v $: end of file */
Index: Daodan/MinGW/include/ddk/ntddk.h
===================================================================
--- Daodan/MinGW/include/ddk/ntddk.h	(revision 1046)
+++ Daodan/MinGW/include/ddk/ntddk.h	(revision 1046)
@@ -0,0 +1,99 @@
+/*
+ * ddk/ntddk.h
+ *
+ * Windows Device Driver Kit -- common defines:
+ *  DBG               -  Debugging enabled/disabled (0/1)
+ *  POOL_TAGGING      -  Enable pool tagging
+ *  _X86_             -  X86 environment
+ *  __USE_NTOSKRNL__  -  Use ntoskrnl.exe instead of kernel32.dll
+ *
+ * $Id: ntddk.h,v 0e0292c3eba8 2015/11/14 21:06:19 keithmarshall $
+ *
+ * Written by Casper S. Hornstrup  <chorns@users.sourceforge.net>
+ * Copyright (C) 2002, 2004, 2006, 2015, MinGW.org Project.
+ *
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice, this permission notice, and the following
+ * disclaimer shall be included in all copies or substantial portions of
+ * the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OF OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ *
+ */
+#ifndef _DDK_NTDDK_H
+#define _DDK_NTDDK_H
+#pragma GCC system_header
+
+#ifndef __USE_NTOSKRNL__
+#define __USE_NTOSKRNL__ 1
+#endif
+
+#include <stdarg.h>
+#include <windef.h>
+#include <ntdef.h>
+#include <basetyps.h>
+
+_BEGIN_C_DECLS
+
+/* Base types, structures and definitions.
+ */
+typedef short CSHORT;
+typedef CONST int CINT;
+typedef CONST char *PCSZ;
+
+#ifndef STATIC
+#define STATIC static
+#endif
+
+#ifndef CALLBACK
+#define CALLBACK
+#endif
+
+#ifndef DECL_IMPORT
+#define DECL_IMPORT __declspec(dllimport)
+#endif
+
+#ifndef DECL_EXPORT
+#define DECL_EXPORT __declspec(dllexport)
+#endif
+
+/* Windows NT status codes.
+ */
+#include "ntstatus.h"
+
+/* Windows NT definitions exported to user mode.
+ */
+#include <winnt.h>
+
+/* Windows Device Driver Kit.
+ */
+#include "winddk.h"
+
+/* Definitions only in Windows XP.
+ */
+#include "winxp.h"
+
+/* Definitions only in Windows 2000.
+ */
+#include "win2k.h"
+
+/* Definitions only in Windows NT 4.
+ */
+#include "winnt4.h"
+
+_END_C_DECLS
+
+#endif /* _DDK_NTDDK_H: $RCSfile: ntddk.h,v $: end of file */
Index: Daodan/MinGW/include/ddk/ntddkbd.h
===================================================================
--- Daodan/MinGW/include/ddk/ntddkbd.h	(revision 1046)
+++ Daodan/MinGW/include/ddk/ntddkbd.h	(revision 1046)
@@ -0,0 +1,135 @@
+/*
+ * ntddkbd.h
+ *
+ * Keyboard IOCTL interface
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __NTDDKBD_H
+#define __NTDDKBD_H
+
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "ntddk.h"
+
+#define DD_KEYBOARD_DEVICE_NAME           "\\Device\\KeyboardClass"
+#define DD_KEYBOARD_DEVICE_NAME_U         L"\\Device\\KeyboardClass"
+
+#define IOCTL_KEYBOARD_QUERY_ATTRIBUTES \
+  CTL_CODE(FILE_DEVICE_KEYBOARD, 0x0000, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_KEYBOARD_QUERY_INDICATORS \
+  CTL_CODE(FILE_DEVICE_KEYBOARD, 0x0010, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_KEYBOARD_QUERY_INDICATOR_TRANSLATION \
+  CTL_CODE(FILE_DEVICE_KEYBOARD, 0x0020, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_KEYBOARD_QUERY_TYPEMATIC \
+  CTL_CODE(FILE_DEVICE_KEYBOARD, 0x0008, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_KEYBOARD_SET_TYPEMATIC \
+  CTL_CODE(FILE_DEVICE_KEYBOARD, 0x0001, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_KEYBOARD_SET_INDICATORS \
+  CTL_CODE(FILE_DEVICE_KEYBOARD, 0x0002, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+
+DEFINE_GUID(GUID_DEVINTERFACE_KEYBOARD, \
+  0x884b96c3, 0x56ef, 0x11d1, 0xbc, 0x8c, 0x00, 0xa0, 0xc9, 0x14, 0x05, 0xdd);
+
+#define KEYBOARD_ERROR_VALUE_BASE         10000
+
+/* KEYBOARD_INPUT_DATA.MakeCode constants */
+#define KEYBOARD_OVERRUN_MAKE_CODE        0xFF
+
+/* KEYBOARD_INPUT_DATA.Flags constants */
+#define KEY_MAKE                          0
+#define KEY_BREAK                         1
+#define KEY_E0                            2
+#define KEY_E1                            4
+
+typedef struct _KEYBOARD_INPUT_DATA {
+  USHORT  UnitId;
+  USHORT  MakeCode;
+  USHORT  Flags;
+  USHORT  Reserved;
+  ULONG  ExtraInformation;
+} KEYBOARD_INPUT_DATA, *PKEYBOARD_INPUT_DATA;
+
+
+typedef struct _KEYBOARD_TYPEMATIC_PARAMETERS {
+	USHORT  UnitId;
+	USHORT  Rate;
+	USHORT  Delay;
+} KEYBOARD_TYPEMATIC_PARAMETERS, *PKEYBOARD_TYPEMATIC_PARAMETERS;
+
+typedef struct _KEYBOARD_ID {
+	UCHAR  Type;
+	UCHAR  Subtype;
+} KEYBOARD_ID, *PKEYBOARD_ID;
+
+#define ENHANCED_KEYBOARD(Id) ((Id).Type == 2 || (Id).Type == 4 || FAREAST_KEYBOARD(Id))
+#define FAREAST_KEYBOARD(Id)  ((Id).Type == 7 || (Id).Type == 8)
+
+typedef struct _KEYBOARD_INDICATOR_PARAMETERS {
+  USHORT  UnitId;
+  USHORT  LedFlags;
+} KEYBOARD_INDICATOR_PARAMETERS, *PKEYBOARD_INDICATOR_PARAMETERS;
+
+typedef struct _INDICATOR_LIST {
+  USHORT  MakeCode;
+  USHORT  IndicatorFlags;
+} INDICATOR_LIST, *PINDICATOR_LIST;
+
+typedef struct _KEYBOARD_INDICATOR_TRANSLATION {
+  USHORT  NumberOfIndicatorKeys;
+  INDICATOR_LIST  IndicatorList[1];
+} KEYBOARD_INDICATOR_TRANSLATION, *PKEYBOARD_INDICATOR_TRANSLATION;
+
+typedef struct _KEYBOARD_ATTRIBUTES {
+	KEYBOARD_ID  KeyboardIdentifier;
+	USHORT  KeyboardMode;
+	USHORT  NumberOfFunctionKeys;
+	USHORT  NumberOfIndicators;
+	USHORT  NumberOfKeysTotal;
+	ULONG  InputDataQueueLength;
+	KEYBOARD_TYPEMATIC_PARAMETERS  KeyRepeatMinimum;
+	KEYBOARD_TYPEMATIC_PARAMETERS  KeyRepeatMaximum;
+} KEYBOARD_ATTRIBUTES, *PKEYBOARD_ATTRIBUTES;
+
+typedef struct _KEYBOARD_UNIT_ID_PARAMETER {
+  USHORT  UnitId;
+} KEYBOARD_UNIT_ID_PARAMETER, *PKEYBOARD_UNIT_ID_PARAMETER;
+
+typedef struct _KEYBOARD_IME_STATUS {
+	USHORT  UnitId;
+	ULONG  ImeOpen;
+	ULONG  ImeConvMode;
+} KEYBOARD_IME_STATUS, *PKEYBOARD_IME_STATUS;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __NTDDKBD_H */
Index: Daodan/MinGW/include/ddk/ntddmou.h
===================================================================
--- Daodan/MinGW/include/ddk/ntddmou.h	(revision 1046)
+++ Daodan/MinGW/include/ddk/ntddmou.h	(revision 1046)
@@ -0,0 +1,115 @@
+/*
+ * ntddmou.h
+ *
+ * Mouse device IOCTL interface.
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __NTDDMOU_H
+#define __NTDDMOU_H
+
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "ntddk.h"
+
+#define DD_MOUSE_DEVICE_NAME              "\\Device\\PointerClass"
+#define DD_MOUSE_DEVICE_NAME_U            L"\\Device\\PointerClass"
+
+#define IOCTL_MOUSE_QUERY_ATTRIBUTES \
+  CTL_CODE(FILE_DEVICE_MOUSE, 0, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+DEFINE_GUID(GUID_DEVINTERFACE_MOUSE, \
+  0x378de44c, 0x56ef, 0x11d1, 0xbc, 0x8c, 0x00, 0xa0, 0xc9, 0x14, 0x05, 0xdd);
+
+#define MOUSE_ERROR_VALUE_BASE            20000
+
+/* MOUSE_INPUT_DATA.ButtonFlags constants */
+#define MOUSE_LEFT_BUTTON_DOWN            0x0001
+#define MOUSE_LEFT_BUTTON_UP              0x0002
+#define MOUSE_RIGHT_BUTTON_DOWN           0x0004
+#define MOUSE_RIGHT_BUTTON_UP             0x0008
+#define MOUSE_MIDDLE_BUTTON_DOWN          0x0010
+#define MOUSE_MIDDLE_BUTTON_UP            0x0020
+#define MOUSE_BUTTON_4_DOWN               0x0040
+#define MOUSE_BUTTON_4_UP                 0x0080
+#define MOUSE_BUTTON_5_DOWN               0x0100
+#define MOUSE_BUTTON_5_UP                 0x0200
+#define MOUSE_WHEEL                       0x0400
+
+#define MOUSE_BUTTON_1_DOWN               MOUSE_LEFT_BUTTON_DOWN
+#define MOUSE_BUTTON_1_UP                 MOUSE_LEFT_BUTTON_UP
+#define MOUSE_BUTTON_2_DOWN               MOUSE_RIGHT_BUTTON_DOWN
+#define MOUSE_BUTTON_2_UP                 MOUSE_RIGHT_BUTTON_UP
+#define MOUSE_BUTTON_3_DOWN               MOUSE_MIDDLE_BUTTON_DOWN
+#define MOUSE_BUTTON_3_UP                 MOUSE_MIDDLE_BUTTON_UP
+
+/* MOUSE_INPUT_DATA.Flags constants */
+#define MOUSE_MOVE_RELATIVE               0
+#define MOUSE_MOVE_ABSOLUTE               1
+#define MOUSE_VIRTUAL_DESKTOP             0x02
+#define MOUSE_ATTRIBUTES_CHANGED          0x04
+
+typedef struct _MOUSE_INPUT_DATA {
+	USHORT  UnitId;
+	USHORT  Flags;
+	_ANONYMOUS_UNION union {
+		ULONG Buttons;
+		_ANONYMOUS_STRUCT struct  {
+			USHORT  ButtonFlags;
+			USHORT  ButtonData;
+		} DUMMYSTRUCTNAME;
+	} DUMMYUNIONNAME;
+	ULONG  RawButtons;
+	LONG  LastX;
+	LONG  LastY;
+	ULONG  ExtraInformation;
+} MOUSE_INPUT_DATA, *PMOUSE_INPUT_DATA;
+
+typedef struct _MOUSE_UNIT_ID_PARAMETER {
+  USHORT  UnitId;
+} MOUSE_UNIT_ID_PARAMETER, *PMOUSE_UNIT_ID_PARAMETER;
+
+/* MOUSE_ATTRIBUTES.MouseIdentifier constants */
+#define MOUSE_INPORT_HARDWARE             0x0001
+#define MOUSE_I8042_HARDWARE              0x0002
+#define MOUSE_SERIAL_HARDWARE             0x0004
+#define BALLPOINT_I8042_HARDWARE          0x0008
+#define BALLPOINT_SERIAL_HARDWARE         0x0010
+#define WHEELMOUSE_I8042_HARDWARE         0x0020
+#define WHEELMOUSE_SERIAL_HARDWARE        0x0040
+#define MOUSE_HID_HARDWARE                0x0080
+#define WHEELMOUSE_HID_HARDWARE           0x0100
+
+typedef struct _MOUSE_ATTRIBUTES {
+  USHORT  MouseIdentifier;
+  USHORT  NumberOfButtons;
+  USHORT  SampleRate;
+  ULONG  InputDataQueueLength;
+} MOUSE_ATTRIBUTES, *PMOUSE_ATTRIBUTES;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __NTDDMOU_H */
Index: Daodan/MinGW/include/ddk/ntddndis.h
===================================================================
--- Daodan/MinGW/include/ddk/ntddndis.h	(revision 1046)
+++ Daodan/MinGW/include/ddk/ntddndis.h	(revision 1046)
@@ -0,0 +1,188 @@
+/*
+ * ntddndis.h
+ *
+ * NDIS device driver interface
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __NTDDNDIS_H
+#define __NTDDNDIS_H
+
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#pragma pack(push,4)
+
+#include "ntddk.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef enum _NDIS_WAN_QUALITY {
+	NdisWanRaw,
+	NdisWanErrorControl,
+	NdisWanReliable
+} NDIS_WAN_QUALITY, *PNDIS_WAN_QUALITY;
+
+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;
+
+/* NDIS_PNP_CAPABILITIES.Flags constants */
+#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
+
+typedef struct _NDIS_PNP_CAPABILITIES {
+  ULONG  Flags;
+  NDIS_PM_WAKE_UP_CAPABILITIES  WakeUpCapabilities;
+} NDIS_PNP_CAPABILITIES, *PNDIS_PNP_CAPABILITIES;
+
+/* Required Object IDs (OIDs) */
+#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_MACHINE_NAME              0x0001021A
+#define OID_GEN_RNDIS_CONFIG_PARAMETER    0x0001021B
+#define OID_GEN_VLAN_ID                   0x0001021C
+
+/* Optional OIDs */
+#define OID_GEN_MEDIA_CAPABILITIES        0x00010201
+#define OID_GEN_PHYSICAL_MEDIUM           0x00010202
+
+/* Required statistics OIDs */
+#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
+
+/* Optional statistics OIDs */
+#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_MINIPORT_INFO             0x00020217
+#define OID_GEN_RESET_VERIFY_PARAMETERS   0x00020218
+
+/* IEEE 802.3 (Ethernet) OIDs */
+#define NDIS_802_3_MAC_OPTION_PRIORITY    0x00000001
+
+#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 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
+
+/* OID_GEN_MINIPORT_INFO constants */
+#define NDIS_MINIPORT_BUS_MASTER                      0x00000001
+#define NDIS_MINIPORT_WDM_DRIVER                      0x00000002
+#define NDIS_MINIPORT_SG_LIST                         0x00000004
+#define NDIS_MINIPORT_SUPPORTS_MEDIA_QUERY            0x00000008
+#define NDIS_MINIPORT_INDICATES_PACKETS               0x00000010
+#define NDIS_MINIPORT_IGNORE_PACKET_QUEUE             0x00000020
+#define NDIS_MINIPORT_IGNORE_REQUEST_QUEUE            0x00000040
+#define NDIS_MINIPORT_IGNORE_TOKEN_RING_ERRORS        0x00000080
+#define NDIS_MINIPORT_INTERMEDIATE_DRIVER             0x00000100
+#define NDIS_MINIPORT_IS_NDIS_5                       0x00000200
+#define NDIS_MINIPORT_IS_CO                           0x00000400
+#define NDIS_MINIPORT_DESERIALIZE                     0x00000800
+#define NDIS_MINIPORT_REQUIRES_MEDIA_POLLING          0x00001000
+#define NDIS_MINIPORT_SUPPORTS_MEDIA_SENSE            0x00002000
+#define NDIS_MINIPORT_NETBOOT_CARD                    0x00004000
+#define NDIS_MINIPORT_PM_SUPPORTED                    0x00008000
+#define NDIS_MINIPORT_SUPPORTS_MAC_ADDRESS_OVERWRITE  0x00010000
+#define NDIS_MINIPORT_USES_SAFE_BUFFER_APIS           0x00020000
+#define NDIS_MINIPORT_HIDDEN                          0x00040000
+#define NDIS_MINIPORT_SWENUM                          0x00080000
+#define NDIS_MINIPORT_SURPRISE_REMOVE_OK              0x00100000
+#define NDIS_MINIPORT_NO_HALT_ON_SUSPEND              0x00200000
+#define NDIS_MINIPORT_HARDWARE_DEVICE                 0x00400000
+#define NDIS_MINIPORT_SUPPORTS_CANCEL_SEND_PACKETS    0x00800000
+#define NDIS_MINIPORT_64BITS_DMA                      0x01000000
+
+#pragma pack(pop)
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __NTDDNDIS_H */
Index: Daodan/MinGW/include/ddk/ntddpar.h
===================================================================
--- Daodan/MinGW/include/ddk/ntddpar.h	(revision 1046)
+++ Daodan/MinGW/include/ddk/ntddpar.h	(revision 1046)
@@ -0,0 +1,119 @@
+/*
+ * ntddpar.h
+ *
+ * Parallel port driver interface
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __NTDDPAR_H
+#define __NTDDPAR_H
+
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "ntddk.h"
+
+/* Parallel port device GUIDs */
+
+DEFINE_GUID (GUID_DEVINTERFACE_PARALLEL,
+  0x97F76EF0, 0xF883, 0x11D0, 0xAF, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x84, 0x5C);
+DEFINE_GUID (GUID_DEVINTERFACE_PARCLASS,
+  0x811FC6A5, 0xF728, 0x11D0, 0xA5, 0x37, 0x00, 0x00, 0xF8, 0x75, 0x3E, 0xD1);
+
+#define GUID_PARALLEL_DEVICE GUID_DEVINTERFACE_PARALLEL
+#define GUID_PARCLASS_DEVICE GUID_DEVINTERFACE_PARCLASS
+
+
+#define IOCTL_IEEE1284_GET_MODE \
+  CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 5, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_IEEE1284_NEGOTIATE \
+  CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 6, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_PAR_GET_DEFAULT_MODES \
+  CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 10, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_PAR_GET_DEVICE_CAPS \
+  CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 9, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_PAR_IS_PORT_FREE \
+  CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 21, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_PAR_QUERY_DEVICE_ID \
+  CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 3, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_PAR_QUERY_DEVICE_ID_SIZE \
+  CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 4, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_PAR_QUERY_INFORMATION \
+  CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 1, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_PAR_QUERY_LOCATION \
+  CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 22, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_PAR_QUERY_RAW_DEVICE_ID \
+  CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 12, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_PAR_SET_INFORMATION \
+  CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 2, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_PAR_SET_READ_ADDRESS \
+  CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 8, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_PAR_SET_WRITE_ADDRESS \
+  CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 7, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+typedef struct _PAR_DEVICE_ID_SIZE_INFORMATION {
+  ULONG  DeviceIdSize;
+} PAR_DEVICE_ID_SIZE_INFORMATION, *PPAR_DEVICE_ID_SIZE_INFORMATION;
+
+#define PARALLEL_INIT                     0x01
+#define PARALLEL_AUTOFEED                 0x02
+#define PARALLEL_PAPER_EMPTY              0x04
+#define PARALLEL_OFF_LINE                 0x08
+#define PARALLEL_POWER_OFF                0x10
+#define PARALLEL_NOT_CONNECTED            0x20
+#define PARALLEL_BUSY                     0x40
+#define PARALLEL_SELECTED                 0x80
+
+typedef struct _PAR_QUERY_INFORMATION {
+  UCHAR  Status;
+} PAR_QUERY_INFORMATION, *PPAR_QUERY_INFORMATION;
+
+typedef struct _PAR_SET_INFORMATION {
+  UCHAR  Init;
+} PAR_SET_INFORMATION, *PPAR_SET_INFORMATION;
+
+typedef struct _PARCLASS_NEGOTIATION_MASK {
+  USHORT  usReadMask;
+  USHORT  usWriteMask;
+} PARCLASS_NEGOTIATION_MASK, *PPARCLASS_NEGOTIATION_MASK;
+
+#define NONE                              0x0000
+#define CENTRONICS                        0x0001
+#define IEEE_COMPATIBILITY                0x0002
+#define NIBBLE                            0x0004
+#define CHANNEL_NIBBLE                    0x0008
+#define BYTE_BIDIR                        0x0010
+#define EPP_HW                            0x0020
+#define EPP_SW                            0x0040
+#define EPP_ANY                           0x0060
+#define BOUNDED_ECP                       0x0080
+#define ECP_HW_NOIRQ                      0x0100
+#define ECP_HW_IRQ                        0x0200
+#define ECP_SW                            0x0400
+#define ECP_ANY                           0x0780
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __NTDDPAR_H */
Index: Daodan/MinGW/include/ddk/ntddpcm.h
===================================================================
--- Daodan/MinGW/include/ddk/ntddpcm.h	(revision 1046)
+++ Daodan/MinGW/include/ddk/ntddpcm.h	(revision 1046)
@@ -0,0 +1,165 @@
+/*
+ * ntddpcm.h
+ *
+ * PCMCIA IOCTL interface
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __NTDDPCM_H
+#define __NTDDPCM_H
+
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "ntddk.h"
+
+#define IOCTL_PCMCIA_BASE                 FILE_DEVICE_CONTROLLER
+
+#define DD_PCMCIA_DEVICE_NAME             "\\\\.\\Pcmcia"
+#define DD_PCMCIA_DEVICE_NAME_U           L"\\\\.\\Pcmcia"
+
+#define IOCTL_GET_TUPLE_DATA \
+  CTL_CODE(IOCTL_PCMCIA_BASE, 3000, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_SOCKET_INFORMATION \
+  CTL_CODE(IOCTL_PCMCIA_BASE, 3004, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define DEVICE_IDENTIFIER_LENGTH          64
+#define DRIVER_NAME_LENGTH                32
+#define MANUFACTURER_NAME_LENGTH          64
+
+#define PcmciaInvalidControllerType       0xffffffff
+
+typedef struct _TUPLE_REQUEST {
+ USHORT  Socket;
+} TUPLE_REQUEST, *PTUPLE_REQUEST;
+
+typedef enum _PCMCIA_CONTROLLER_CLASS {
+	PcmciaInvalidControllerClass = -1,
+	PcmciaIntelCompatible,
+	PcmciaCardBusCompatible,
+	PcmciaElcController,
+	PcmciaDatabook,
+	PcmciaPciPcmciaBridge,
+	PcmciaCirrusLogic,
+	PcmciaTI,
+	PcmciaTopic,
+	PcmciaRicoh,
+	PcmciaDatabookCB,
+	PcmciaOpti,
+	PcmciaTrid,
+	PcmciaO2Micro,
+	PcmciaNEC,
+	PcmciaNEC_98
+} PCMCIA_CONTROLLER_CLASS, *PPCMCIA_CONTROLLER_CLASS;
+
+typedef struct _PCMCIA_SOCKET_INFORMATION {
+	USHORT  Socket;
+	USHORT  TupleCrc;
+	UCHAR  Manufacturer[MANUFACTURER_NAME_LENGTH];
+	UCHAR  Identifier[DEVICE_IDENTIFIER_LENGTH];
+	UCHAR  DriverName[DRIVER_NAME_LENGTH];
+	UCHAR  DeviceFunctionId;
+	UCHAR  Reserved;
+	UCHAR  CardInSocket;
+	UCHAR  CardEnabled;
+	ULONG  ControllerType;
+} PCMCIA_SOCKET_INFORMATION, *PPCMCIA_SOCKET_INFORMATION;
+
+#define PcmciaClassFromControllerType(type)     ((PCMCIA_CONTROLLER_CLASS)((type) & 0xff))
+#define PcmciaModelFromControllerType(type)     (((type) >> 8) & 0x3ffff)
+#define PcmciaRevisionFromControllerType(type)  ((type) >> 26)
+
+
+DEFINE_GUID(GUID_PCMCIA_INTERFACE_STANDARD, \
+  0xbed5dadfL, 0x38fb, 0x11d1, 0x94, 0x62, 0x00, 0xc0, 0x4f, 0xb9, 0x60, 0xee);
+
+typedef ULONG MEMORY_SPACE;
+
+typedef ULONG STDCALL
+(*PPCMCIA_READ_WRITE_CONFIG)(
+  /*IN*/ PVOID  Context,
+  /*IN*/ ULONG  WhichSpace,
+  /*IN*/ PUCHAR  Buffer,
+  /*IN*/ ULONG  Offset,
+  /*IN*/ ULONG  Length);
+
+#define PCCARD_PCI_CONFIGURATION_SPACE    0
+#define PCCARD_ATTRIBUTE_MEMORY           1
+#define PCCARD_COMMON_MEMORY              2
+#define PCCARD_ATTRIBUTE_MEMORY_INDIRECT  3
+#define PCCARD_COMMON_MEMORY_INDIRECT     4
+
+typedef struct _PCMCIA_BUS_INTERFACE_STANDARD {
+	USHORT  Size;
+	USHORT  Version;
+	PVOID  Context;
+	PINTERFACE_REFERENCE  InterfaceReference;
+	PINTERFACE_DEREFERENCE  InterfaceDereference;
+	PPCMCIA_READ_WRITE_CONFIG ReadConfig;
+	PPCMCIA_READ_WRITE_CONFIG  WriteConfig;
+} PCMCIA_BUS_INTERFACE_STANDARD, *PPCMCIA_BUS_INTERFACE_STANDARD;
+
+#define PCMCIA_MEMORY_8BIT_ACCESS         0
+#define PCMCIA_MEMORY_16BIT_ACCESS        1
+
+typedef BOOLEAN STDCALL
+(*PPCMCIA_MODIFY_MEMORY_WINDOW)(
+  /*IN*/ PVOID  Context,
+  /*IN*/ ULONGLONG  HostBase,
+  /*IN*/ ULONGLONG  CardBase,
+  /*IN*/ BOOLEAN  Enable,
+  /*IN*/ ULONG  WindowSize  /*OPTIONAL*/,
+  /*IN*/ UCHAR  AccessSpeed  /*OPTIONAL*/,
+  /*IN*/ UCHAR  BusWidth  /*OPTIONAL*/,
+  /*IN*/ BOOLEAN  IsAttributeMemory  /*OPTIONAL*/);
+
+#define PCMCIA_VPP_0V                     0
+#define PCMCIA_VPP_12V                    1
+#define PCMCIA_VPP_IS_VCC                 2
+
+typedef BOOLEAN STDCALL
+(*PPCMCIA_SET_VPP)(
+  /*IN*/ PVOID  Context,
+  /*IN*/ UCHAR  VppLevel);
+
+typedef BOOLEAN STDCALL
+(*PPCMCIA_IS_WRITE_PROTECTED)(
+  /*IN*/ PVOID  Context);
+
+typedef struct _PCMCIA_INTERFACE_STANDARD {
+	USHORT  Size;
+	USHORT  Version;
+	PINTERFACE_REFERENCE  InterfaceReference;
+	PINTERFACE_DEREFERENCE  InterfaceDereference;
+	PVOID  Context;
+	PPCMCIA_MODIFY_MEMORY_WINDOW  ModifyMemoryWindow;
+	PPCMCIA_SET_VPP  SetVpp;
+	PPCMCIA_IS_WRITE_PROTECTED  IsWriteProtected;
+} PCMCIA_INTERFACE_STANDARD, *PPCMCIA_INTERFACE_STANDARD;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __NTDDPCM_H */
Index: Daodan/MinGW/include/ddk/ntddscsi.h
===================================================================
--- Daodan/MinGW/include/ddk/ntddscsi.h	(revision 1046)
+++ Daodan/MinGW/include/ddk/ntddscsi.h	(revision 1046)
@@ -0,0 +1,171 @@
+/*
+ * ntddscsi.h
+ *
+ * SCSI port IOCTL interface.
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __NTDDSCSI_H
+#define __NTDDSCSI_H
+
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "ntddk.h"
+
+#define DD_SCSI_DEVICE_NAME               "\\Device\\ScsiPort"
+#define DD_SCSI_DEVICE_NAME_U             L"\\Device\\ScsiPort"
+
+#define IOCTL_SCSI_BASE                   FILE_DEVICE_CONTROLLER
+
+#define IOCTL_SCSI_GET_INQUIRY_DATA \
+  CTL_CODE(IOCTL_SCSI_BASE, 0x0403, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_SCSI_GET_CAPABILITIES \
+  CTL_CODE(IOCTL_SCSI_BASE, 0x0404, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_SCSI_GET_ADDRESS \
+  CTL_CODE(IOCTL_SCSI_BASE, 0x0406, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_SCSI_MINIPORT \
+  CTL_CODE(IOCTL_SCSI_BASE, 0x0402, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+
+#define IOCTL_SCSI_PASS_THROUGH \
+  CTL_CODE(IOCTL_SCSI_BASE, 0x0401, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+
+#define IOCTL_SCSI_PASS_THROUGH_DIRECT \
+  CTL_CODE(IOCTL_SCSI_BASE, 0x0405, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+
+#define IOCTL_SCSI_RESCAN_BUS \
+  CTL_CODE(IOCTL_SCSI_BASE, 0x0407, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+
+DEFINE_GUID(ScsiRawInterfaceGuid, \
+  0x53f56309L, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b);
+
+DEFINE_GUID(WmiScsiAddressGuid, \
+  0x53f5630fL, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b);
+
+typedef struct _SCSI_PASS_THROUGH {
+  USHORT  Length;
+  UCHAR  ScsiStatus;
+  UCHAR  PathId;
+  UCHAR  TargetId;
+  UCHAR  Lun;
+  UCHAR  CdbLength;
+  UCHAR  SenseInfoLength;
+  UCHAR  DataIn;
+  ULONG  DataTransferLength;
+  ULONG  TimeOutValue;
+  ULONG_PTR DataBufferOffset;
+  ULONG  SenseInfoOffset;
+  UCHAR  Cdb[16];
+} SCSI_PASS_THROUGH, *PSCSI_PASS_THROUGH;
+
+typedef struct _SCSI_PASS_THROUGH_DIRECT {
+  USHORT  Length;
+  UCHAR  ScsiStatus;
+  UCHAR  PathId;
+  UCHAR  TargetId;
+  UCHAR  Lun;
+  UCHAR  CdbLength;
+  UCHAR  SenseInfoLength;
+  UCHAR  DataIn;
+  ULONG  DataTransferLength;
+  ULONG  TimeOutValue;
+  PVOID  DataBuffer;
+  ULONG  SenseInfoOffset;
+  UCHAR  Cdb[16];
+} SCSI_PASS_THROUGH_DIRECT, *PSCSI_PASS_THROUGH_DIRECT;
+
+typedef struct _SRB_IO_CONTROL {
+  ULONG  HeaderLength;
+  UCHAR  Signature[8];
+  ULONG  Timeout;
+  ULONG  ControlCode;
+  ULONG  ReturnCode;
+  ULONG  Length;
+} SRB_IO_CONTROL, *PSRB_IO_CONTROL;
+
+typedef struct _SCSI_ADDRESS {
+	ULONG  Length;
+	UCHAR  PortNumber;
+	UCHAR  PathId;
+	UCHAR  TargetId;
+	UCHAR  Lun;
+} SCSI_ADDRESS, *PSCSI_ADDRESS;
+
+typedef struct _SCSI_BUS_DATA {
+	UCHAR  NumberOfLogicalUnits;
+	UCHAR  InitiatorBusId;
+	ULONG  InquiryDataOffset;
+}SCSI_BUS_DATA, *PSCSI_BUS_DATA;
+
+typedef struct _SCSI_ADAPTER_BUS_INFO {
+	UCHAR  NumberOfBuses;
+	SCSI_BUS_DATA  BusData[1];
+} SCSI_ADAPTER_BUS_INFO, *PSCSI_ADAPTER_BUS_INFO;
+
+typedef struct _IO_SCSI_CAPABILITIES {
+	ULONG  Length;
+	ULONG  MaximumTransferLength;
+	ULONG  MaximumPhysicalPages;
+	ULONG  SupportedAsynchronousEvents;
+	ULONG  AlignmentMask;
+	BOOLEAN  TaggedQueuing;
+	BOOLEAN  AdapterScansDown;
+	BOOLEAN  AdapterUsesPio;
+} IO_SCSI_CAPABILITIES, *PIO_SCSI_CAPABILITIES;
+
+typedef struct _SCSI_INQUIRY_DATA {
+	UCHAR  PathId;
+	UCHAR  TargetId;
+	UCHAR  Lun;
+	BOOLEAN  DeviceClaimed;
+	ULONG  InquiryDataLength;
+	ULONG  NextInquiryDataOffset;
+	UCHAR  InquiryData[1];
+} SCSI_INQUIRY_DATA, *PSCSI_INQUIRY_DATA;
+
+#define SCSI_IOCTL_DATA_OUT               0
+#define SCSI_IOCTL_DATA_IN                1
+#define SCSI_IOCTL_DATA_UNSPECIFIED       2
+
+typedef struct _DUMP_POINTERS {
+	PADAPTER_OBJECT  AdapterObject;
+	PVOID  MappedRegisterBase;
+	PVOID  DumpData;
+	PVOID  CommonBufferVa;
+	LARGE_INTEGER  CommonBufferPa;
+	ULONG  CommonBufferSize;
+	BOOLEAN  AllocateCommonBuffers;
+	BOOLEAN  UseDiskDump;
+	UCHAR  Spare1[2];
+	PVOID  DeviceObject;
+} DUMP_POINTERS, *PDUMP_POINTERS;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __NTDDSCSI_H */
Index: Daodan/MinGW/include/ddk/ntddser.h
===================================================================
--- Daodan/MinGW/include/ddk/ntddser.h	(revision 1046)
+++ Daodan/MinGW/include/ddk/ntddser.h	(revision 1046)
@@ -0,0 +1,449 @@
+/*
+ * ntddser.h
+ *
+ * Serial port driver interface
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __NTDDSER_H
+#define __NTDDSER_H
+
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "ntddk.h"
+
+/* GUIDs */
+
+DEFINE_GUID(GUID_DEVINTERFACE_COMPORT,
+  0x86e0d1e0L, 0x8089, 0x11d0, 0x9c, 0xe4, 0x08, 0x00, 0x3e, 0x30, 0x1f, 0x73);
+
+DEFINE_GUID(GUID_DEVINTERFACE_SERENUM_BUS_ENUMERATOR,
+  0x4D36E978L, 0xE325, 0x11CE, 0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18);
+
+#define IOCTL_SERIAL_CLEAR_STATS \
+  CTL_CODE (FILE_DEVICE_SERIAL_PORT, 36, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_CLR_DTR \
+  CTL_CODE (FILE_DEVICE_SERIAL_PORT, 10, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_CLR_RTS \
+  CTL_CODE (FILE_DEVICE_SERIAL_PORT, 13, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_CONFIG_SIZE \
+  CTL_CODE (FILE_DEVICE_SERIAL_PORT, 32, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_GET_BAUD_RATE \
+  CTL_CODE (FILE_DEVICE_SERIAL_PORT, 20, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_GET_CHARS \
+  CTL_CODE (FILE_DEVICE_SERIAL_PORT, 22, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_GET_COMMSTATUS \
+  CTL_CODE (FILE_DEVICE_SERIAL_PORT, 27, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_GET_DTRRTS \
+  CTL_CODE (FILE_DEVICE_SERIAL_PORT, 30, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_GET_HANDFLOW \
+  CTL_CODE (FILE_DEVICE_SERIAL_PORT, 24, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_GET_LINE_CONTROL \
+  CTL_CODE (FILE_DEVICE_SERIAL_PORT, 21, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_GET_MODEM_CONTROL \
+  CTL_CODE (FILE_DEVICE_SERIAL_PORT, 37, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_GET_MODEMSTATUS \
+  CTL_CODE (FILE_DEVICE_SERIAL_PORT, 26, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_GET_PROPERTIES \
+  CTL_CODE (FILE_DEVICE_SERIAL_PORT, 29, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_GET_STATS \
+  CTL_CODE (FILE_DEVICE_SERIAL_PORT, 35, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_GET_TIMEOUTS \
+  CTL_CODE (FILE_DEVICE_SERIAL_PORT, 8, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_GET_WAIT_MASK \
+  CTL_CODE (FILE_DEVICE_SERIAL_PORT, 16, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_IMMEDIATE_CHAR \
+  CTL_CODE (FILE_DEVICE_SERIAL_PORT, 6, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_LSRMST_INSERT \
+  CTL_CODE (FILE_DEVICE_SERIAL_PORT, 31, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_PURGE \
+  CTL_CODE (FILE_DEVICE_SERIAL_PORT, 19, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_RESET_DEVICE \
+  CTL_CODE (FILE_DEVICE_SERIAL_PORT, 11, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_SET_BAUD_RATE \
+  CTL_CODE (FILE_DEVICE_SERIAL_PORT, 1, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_SET_BREAK_ON \
+  CTL_CODE (FILE_DEVICE_SERIAL_PORT, 4, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_SET_BREAK_OFF \
+  CTL_CODE (FILE_DEVICE_SERIAL_PORT, 5, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_SET_CHARS \
+  CTL_CODE (FILE_DEVICE_SERIAL_PORT, 23, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_SET_DTR \
+  CTL_CODE (FILE_DEVICE_SERIAL_PORT, 9, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_SET_FIFO_CONTROL \
+  CTL_CODE (FILE_DEVICE_SERIAL_PORT, 39, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_SET_HANDFLOW \
+  CTL_CODE (FILE_DEVICE_SERIAL_PORT, 25, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_SET_LINE_CONTROL \
+  CTL_CODE (FILE_DEVICE_SERIAL_PORT, 3, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_SET_MODEM_CONTROL \
+  CTL_CODE (FILE_DEVICE_SERIAL_PORT, 38, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_SET_QUEUE_SIZE \
+  CTL_CODE (FILE_DEVICE_SERIAL_PORT, 2, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_SET_RTS \
+  CTL_CODE (FILE_DEVICE_SERIAL_PORT, 12, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_SET_TIMEOUTS \
+  CTL_CODE (FILE_DEVICE_SERIAL_PORT, 7, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_SET_WAIT_MASK \
+  CTL_CODE (FILE_DEVICE_SERIAL_PORT, 17, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_SET_XOFF \
+  CTL_CODE (FILE_DEVICE_SERIAL_PORT, 14, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_SET_XON \
+  CTL_CODE (FILE_DEVICE_SERIAL_PORT, 15, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_WAIT_ON_MASK \
+  CTL_CODE (FILE_DEVICE_SERIAL_PORT, 18, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_XOFF_COUNTER \
+  CTL_CODE (FILE_DEVICE_SERIAL_PORT, 28, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_SERIAL_INTERNAL_BASIC_SETTINGS \
+  CTL_CODE (FILE_DEVICE_SERIAL_PORT, 3, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_INTERNAL_CANCEL_WAIT_WAKE \
+  CTL_CODE (FILE_DEVICE_SERIAL_PORT, 2, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_INTERNAL_DO_WAIT_WAKE \
+  CTL_CODE (FILE_DEVICE_SERIAL_PORT, 1, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_INTERNAL_RESTORE_SETTINGS \
+  CTL_CODE (FILE_DEVICE_SERIAL_PORT, 4, 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 IOCTL_INTERNAL_SERENUM_REMOVE_SELF \
+  CTL_CODE (FILE_DEVICE_SERENUM, 129, METHOD_NEITHER, FILE_ANY_ACCESS)
+
+
+typedef struct _SERIAL_BAUD_RATE {
+  ULONG  BaudRate;
+} SERIAL_BAUD_RATE, *PSERIAL_BAUD_RATE;
+
+/* SERIAL_BAUD_RATE.BaudRate constants */
+#define SERIAL_BAUD_075                   0x00000001
+#define SERIAL_BAUD_110                   0x00000002
+#define SERIAL_BAUD_134_5                 0x00000004
+#define SERIAL_BAUD_150                   0x00000008
+#define SERIAL_BAUD_300                   0x00000010
+#define SERIAL_BAUD_600                   0x00000020
+#define SERIAL_BAUD_1200                  0x00000040
+#define SERIAL_BAUD_1800                  0x00000080
+#define SERIAL_BAUD_2400                  0x00000100
+#define SERIAL_BAUD_4800                  0x00000200
+#define SERIAL_BAUD_7200                  0x00000400
+#define SERIAL_BAUD_9600                  0x00000800
+#define SERIAL_BAUD_14400                 0x00001000
+#define SERIAL_BAUD_19200                 0x00002000
+#define SERIAL_BAUD_38400                 0x00004000
+#define SERIAL_BAUD_56K                   0x00008000
+#define SERIAL_BAUD_128K                  0x00010000
+#define SERIAL_BAUD_115200                0x00020000
+#define SERIAL_BAUD_57600                 0x00040000
+#define SERIAL_BAUD_USER                  0x10000000
+
+typedef struct _SERIAL_CHARS {
+  UCHAR  EofChar;
+  UCHAR  ErrorChar;
+  UCHAR  BreakChar;
+  UCHAR  EventChar;
+  UCHAR  XonChar;
+  UCHAR  XoffChar;
+} SERIAL_CHARS, *PSERIAL_CHARS;
+
+typedef struct _SERIAL_STATUS {
+  ULONG  Errors;
+  ULONG  HoldReasons;
+  ULONG  AmountInInQueue;
+  ULONG  AmountInOutQueue;
+  BOOLEAN  EofReceived;
+  BOOLEAN  WaitForImmediate;
+} SERIAL_STATUS, *PSERIAL_STATUS;
+
+typedef struct _SERIAL_HANDFLOW {
+	ULONG  ControlHandShake;
+	ULONG  FlowReplace;
+	LONG  XonLimit;
+	LONG  XoffLimit;
+} SERIAL_HANDFLOW, *PSERIAL_HANDFLOW;
+
+#define SERIAL_DTR_MASK                   0x00000003
+#define SERIAL_DTR_CONTROL                0x00000001
+#define SERIAL_DTR_HANDSHAKE              0x00000002
+#define SERIAL_CTS_HANDSHAKE              0x00000008
+#define SERIAL_DSR_HANDSHAKE              0x00000010
+#define SERIAL_DCD_HANDSHAKE              0x00000020
+#define SERIAL_OUT_HANDSHAKEMASK          0x00000038
+#define SERIAL_DSR_SENSITIVITY            0x00000040
+#define SERIAL_ERROR_ABORT                0x80000000
+#define SERIAL_CONTROL_INVALID            0x7fffff84
+#define SERIAL_AUTO_TRANSMIT              0x00000001
+#define SERIAL_AUTO_RECEIVE               0x00000002
+#define SERIAL_ERROR_CHAR                 0x00000004
+#define SERIAL_NULL_STRIPPING             0x00000008
+#define SERIAL_BREAK_CHAR                 0x00000010
+#define SERIAL_RTS_MASK                   0x000000c0
+#define SERIAL_RTS_CONTROL                0x00000040
+#define SERIAL_RTS_HANDSHAKE              0x00000080
+#define SERIAL_TRANSMIT_TOGGLE            0x000000c0
+#define SERIAL_XOFF_CONTINUE              0x80000000
+#define SERIAL_FLOW_INVALID               0x7fffff20
+
+typedef struct _SERIAL_LINE_CONTROL {
+  UCHAR  StopBits;
+  UCHAR  Parity;
+  UCHAR  WordLength;
+} SERIAL_LINE_CONTROL, *PSERIAL_LINE_CONTROL;
+
+/* SERIAL_LINE_CONTROL.StopBits constants */
+#define STOP_BIT_1                        0x00
+#define STOP_BITS_1_5                     0x01
+#define STOP_BITS_2                       0x02
+
+/* SERIAL_LINE_CONTROL.Parity constants */
+#define NO_PARITY                         0x00
+#define ODD_PARITY                        0x01
+#define EVEN_PARITY                       0x02
+#define MARK_PARITY                       0x03
+#define SPACE_PARITY                      0x04
+
+/* IOCTL_SERIAL_(GET_MODEM_CONTROL, SET_MODEM_CONTROL) flags */
+#define SERIAL_IOC_MCR_DTR                0x00000001
+#define SERIAL_IOC_MCR_RTS                0x00000002
+#define SERIAL_IOC_MCR_OUT1               0x00000004
+#define SERIAL_IOC_MCR_OUT2               0x00000008
+#define SERIAL_IOC_MCR_LOOP               0x00000010
+
+typedef struct _SERIAL_COMMPROP {
+  USHORT  PacketLength;
+  USHORT  PacketVersion;
+  ULONG  ServiceMask;
+  ULONG  Reserved1;
+  ULONG  MaxTxQueue;
+  ULONG  MaxRxQueue;
+  ULONG  MaxBaud;
+  ULONG  ProvSubType;
+  ULONG  ProvCapabilities;
+  ULONG  SettableParams;
+  ULONG  SettableBaud;
+  USHORT  SettableData;
+  USHORT  SettableStopParity;
+  ULONG  CurrentTxQueue;
+  ULONG  CurrentRxQueue;
+  ULONG  ProvSpec1;
+  ULONG  ProvSpec2;
+  WCHAR  ProvChar[1];
+} SERIAL_COMMPROP, *PSERIAL_COMMPROP;
+
+/* SERIAL_COMMPROP.SettableParams flags */
+#define SERIAL_SP_PARITY                  0x0001
+#define SERIAL_SP_BAUD                    0x0002
+#define SERIAL_SP_DATABITS                0x0004
+#define SERIAL_SP_STOPBITS                0x0008
+#define SERIAL_SP_HANDSHAKING             0x0010
+#define SERIAL_SP_PARITY_CHECK            0x0020
+#define SERIAL_SP_CARRIER_DETECT          0x0040
+
+/* SERIAL_COMMPROP.ProvCapabilities flags */
+#define SERIAL_PCF_DTRDSR                 0x00000001
+#define SERIAL_PCF_RTSCTS                 0x00000002
+#define SERIAL_PCF_CD                     0x00000004
+#define SERIAL_PCF_PARITY_CHECK           0x00000008
+#define SERIAL_PCF_XONXOFF                0x00000010
+#define SERIAL_PCF_SETXCHAR               0x00000020
+#define SERIAL_PCF_TOTALTIMEOUTS          0x00000040
+#define SERIAL_PCF_INTTIMEOUTS            0x00000080
+#define SERIAL_PCF_SPECIALCHARS           0x00000100
+#define SERIAL_PCF_16BITMODE              0x00000200
+
+/* SERIAL_COMMPROP.SettableData flags */
+#define SERIAL_DATABITS_5                 0x0001
+#define SERIAL_DATABITS_6                 0x0002
+#define SERIAL_DATABITS_7                 0x0004
+#define SERIAL_DATABITS_8                 0x0008
+#define SERIAL_DATABITS_16                0x0010
+#define SERIAL_DATABITS_16X               0x0020
+
+/* SERIAL_COMMPROP.SettableStopParity flags */
+#define SERIAL_STOPBITS_10                0x0001
+#define SERIAL_STOPBITS_15                0x0002
+#define SERIAL_STOPBITS_20                0x0004
+#define SERIAL_PARITY_NONE                0x0100
+#define SERIAL_PARITY_ODD                 0x0200
+#define SERIAL_PARITY_EVEN                0x0400
+#define SERIAL_PARITY_MARK                0x0800
+#define SERIAL_PARITY_SPACE               0x1000
+
+typedef struct _SERIALPERF_STATS {
+  ULONG  ReceivedCount;
+  ULONG  TransmittedCount;
+  ULONG  FrameErrorCount;
+  ULONG  SerialOverrunErrorCount;
+  ULONG  BufferOverrunErrorCount;
+  ULONG  ParityErrorCount;
+} SERIALPERF_STATS, *PSERIALPERF_STATS;
+
+typedef struct _SERIAL_TIMEOUTS {
+  ULONG  ReadIntervalTimeout;
+  ULONG  ReadTotalTimeoutMultiplier;
+  ULONG  ReadTotalTimeoutConstant;
+  ULONG  WriteTotalTimeoutMultiplier;
+  ULONG  WriteTotalTimeoutConstant;
+} SERIAL_TIMEOUTS, *PSERIAL_TIMEOUTS;
+
+/* IOCTL_SERIAL_(GET_WAIT_MASK, SET_WAIT_MASK, WAIT_ON_MASK) flags */
+#define SERIAL_EV_RXCHAR                  0x0001
+#define SERIAL_EV_RXFLAG                  0x0002
+#define SERIAL_EV_TXEMPTY                 0x0004
+#define SERIAL_EV_CTS                     0x0008
+#define SERIAL_EV_DSR                     0x0010
+#define SERIAL_EV_RLSD                    0x0020
+#define SERIAL_EV_BREAK                   0x0040
+#define SERIAL_EV_ERR                     0x0080
+#define SERIAL_EV_RING                    0x0100
+#define SERIAL_EV_PERR                    0x0200
+#define SERIAL_EV_RX80FULL                0x0400
+#define SERIAL_EV_EVENT1                  0x0800
+#define SERIAL_EV_EVENT2                  0x1000
+
+/* IOCTL_SERIAL_LSRMST_INSERT constants */
+#define SERIAL_LSRMST_LSR_DATA            0x01
+#define SERIAL_LSRMST_LSR_NODATA          0x02
+#define SERIAL_LSRMST_MST                 0x03
+#define SERIAL_LSRMST_ESCAPE              0x00
+
+/* IOCTL_SERIAL_PURGE constants */
+#define SERIAL_PURGE_TXABORT              0x00000001
+#define SERIAL_PURGE_RXABORT              0x00000002
+#define SERIAL_PURGE_TXCLEAR              0x00000004
+#define SERIAL_PURGE_RXCLEAR              0x00000008
+
+/* IOCTL_SERIAL_SET_FIFO_CONTROL constants */
+#define SERIAL_IOC_FCR_FIFO_ENABLE        0x00000001
+#define SERIAL_IOC_FCR_RCVR_RESET         0x00000002
+#define SERIAL_IOC_FCR_XMIT_RESET         0x00000004
+#define SERIAL_IOC_FCR_DMA_MODE           0x00000008
+#define SERIAL_IOC_FCR_RES1               0x00000010
+#define SERIAL_IOC_FCR_RES2               0x00000020
+#define SERIAL_IOC_FCR_RCVR_TRIGGER_LSB   0x00000040
+#define SERIAL_IOC_FCR_RCVR_TRIGGER_MSB   0x00000080
+
+typedef struct _SERIAL_QUEUE_SIZE {
+  ULONG  InSize;
+  ULONG  OutSize;
+} SERIAL_QUEUE_SIZE, *PSERIAL_QUEUE_SIZE;
+
+typedef struct _SERIAL_XOFF_COUNTER {
+	ULONG  Timeout;
+	LONG  Counter;
+	UCHAR  XoffChar;
+} SERIAL_XOFF_COUNTER, *PSERIAL_XOFF_COUNTER;
+
+typedef struct _SERIAL_BASIC_SETTINGS {
+	SERIAL_TIMEOUTS  Timeouts;
+	SERIAL_HANDFLOW  HandFlow;
+	ULONG  RxFifo;
+	ULONG  TxFifo;
+} SERIAL_BASIC_SETTINGS, *PSERIAL_BASIC_SETTINGS;
+
+typedef struct _SERENUM_PORT_DESC {
+	ULONG  Size;
+	PVOID  PortHandle;
+	PHYSICAL_ADDRESS  PortAddress;
+	USHORT  Reserved[1];
+} SERENUM_PORT_DESC, *PSERENUM_PORT_DESC;
+
+typedef UCHAR STDCALL
+(*PSERENUM_READPORT)(
+  PVOID  SerPortAddress);
+
+typedef VOID STDCALL
+(*PSERENUM_WRITEPORT)(
+  PVOID  SerPortAddress,
+  UCHAR  Value);
+
+typedef enum _SERENUM_PORTION {
+  SerenumFirstHalf,
+  SerenumSecondHalf,
+  SerenumWhole
+} SERENUM_PORTION;
+
+typedef struct _SERENUM_PORT_PARAMETERS {
+  ULONG  Size;
+  PSERENUM_READPORT  ReadAccessor;
+  PSERENUM_WRITEPORT  WriteAccessor;
+  PVOID  SerPortAddress;
+  PVOID  HardwareHandle;
+  SERENUM_PORTION  Portion;
+  USHORT  NumberAxis;
+  USHORT  Reserved[3];
+} SERENUM_PORT_PARAMETERS, *PSERENUM_PORT_PARAMETERS;
+
+#define SERIAL_ERROR_BREAK                0x00000001
+#define SERIAL_ERROR_FRAMING              0x00000002
+#define SERIAL_ERROR_OVERRUN              0x00000004
+#define SERIAL_ERROR_QUEUEOVERRUN         0x00000008
+#define SERIAL_ERROR_PARITY               0x00000010
+
+#define SERIAL_SP_UNSPECIFIED             0x00000000
+#define SERIAL_SP_RS232                   0x00000001
+#define SERIAL_SP_PARALLEL                0x00000002
+#define SERIAL_SP_RS422                   0x00000003
+#define SERIAL_SP_RS423                   0x00000004
+#define SERIAL_SP_RS449                   0x00000005
+#define SERIAL_SP_MODEM                   0X00000006
+#define SERIAL_SP_FAX                     0x00000021
+#define SERIAL_SP_SCANNER                 0x00000022
+#define SERIAL_SP_BRIDGE                  0x00000100
+#define SERIAL_SP_LAT                     0x00000101
+#define SERIAL_SP_TELNET                  0x00000102
+#define SERIAL_SP_X25                     0x00000103
+#define SERIAL_SP_SERIALCOMM              0x00000001
+
+#define SERIAL_TX_WAITING_FOR_CTS         0x00000001
+#define SERIAL_TX_WAITING_FOR_DSR         0x00000002
+#define SERIAL_TX_WAITING_FOR_DCD         0x00000004
+#define SERIAL_TX_WAITING_FOR_XON         0x00000008
+#define SERIAL_TX_WAITING_XOFF_SENT       0x00000010
+#define SERIAL_TX_WAITING_ON_BREAK        0x00000020
+#define SERIAL_RX_WAITING_FOR_DSR         0x00000040
+
+#define SERIAL_DTR_STATE                  0x00000001
+#define SERIAL_RTS_STATE                  0x00000002
+#define SERIAL_CTS_STATE                  0x00000010
+#define SERIAL_DSR_STATE                  0x00000020
+#define SERIAL_RI_STATE                   0x00000040
+#define SERIAL_DCD_STATE                  0x00000080
+
+typedef struct _SERIALCONFIG {
+  ULONG  Size;
+  USHORT  Version;
+  ULONG  SubType;
+  ULONG  ProvOffset;
+  ULONG  ProviderSize;
+  WCHAR  ProviderData[1];
+} SERIALCONFIG,*PSERIALCONFIG;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __NTDDSER_H */
Index: Daodan/MinGW/include/ddk/ntddstor.h
===================================================================
--- Daodan/MinGW/include/ddk/ntddstor.h	(revision 1046)
+++ Daodan/MinGW/include/ddk/ntddstor.h	(revision 1046)
@@ -0,0 +1,348 @@
+/*
+ * ddk/ntddstor.h
+ *
+ * Windows Device Driver Kit -- storage class IOCTL interface.
+ *
+ * $Id: ntddstor.h,v 6d2220f53104 2016/07/21 21:20:34 keithmarshall $
+ *
+ * Written by Casper S. Hornstrup  <chorns@users.sourceforge.net>
+ * Copyright (C) 2002, 2004, 2015, 2016, MinGW.org Project.
+ *
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice, this permission notice, and the following
+ * disclaimer shall be included in all copies or substantial portions of
+ * the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OF OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ *
+ */
+#ifndef _DDK_NTDDSTOR_H
+#pragma GCC system_header
+
+/* This file supports partial inclusion by <winioctl.h>; defer definition
+ * of its normal repeat inclusion guard macro...
+ */
+#ifndef __WINIOCTL_H_SOURCED__
+/* ...until we've ascertained that this is NOT such partial inclusion.
+ */
+#define _DDK_NTDDSTOR_H
+
+/* In case of full inclusion, we must also include the full content of:
+ */
+#include "ntddk.h"
+#endif
+
+#if ! (defined _DDK_NTDDSTOR_H && defined _WINIOCTL_H)
+/* The majority of the IOCTL_STORAGE control code generator macros,
+ * structural type STORAGE_BUS_TYPE, and its associated pointer type,
+ * are required to be defined by both <ddk/ntddstor.h> and <winioctl.h>,
+ * but if both repeat inclusion guards are already defined, then we've
+ * already seen this; there is no need to process it again.
+ */
+#define __IOCTL_STORAGE_(FN,M,A)	    CTL_CODE(IOCTL_STORAGE_BASE,(FN),(M),(A))
+
+#define IOCTL_STORAGE_BASE		    FILE_DEVICE_MASS_STORAGE
+#define IOCTL_STORAGE_CHECK_VERIFY	  __FILE_RD_BUFFERED(__IOCTL_STORAGE_,0x0200)
+#define IOCTL_STORAGE_CHECK_VERIFY2	  __FILE_AM_BUFFERED(__IOCTL_STORAGE_,0x0200)
+#define IOCTL_STORAGE_MEDIA_REMOVAL	  __FILE_RD_BUFFERED(__IOCTL_STORAGE_,0x0201)
+#define IOCTL_STORAGE_EJECT_MEDIA	  __FILE_RD_BUFFERED(__IOCTL_STORAGE_,0x0202)
+#define IOCTL_STORAGE_LOAD_MEDIA	  __FILE_RD_BUFFERED(__IOCTL_STORAGE_,0x0203)
+#define IOCTL_STORAGE_LOAD_MEDIA2	  __FILE_AM_BUFFERED(__IOCTL_STORAGE_,0x0203)
+#define IOCTL_STORAGE_RESERVE		  __FILE_RD_BUFFERED(__IOCTL_STORAGE_,0x0204)
+#define IOCTL_STORAGE_RELEASE		  __FILE_RD_BUFFERED(__IOCTL_STORAGE_,0x0205)
+#define IOCTL_STORAGE_FIND_NEW_DEVICES	  __FILE_RD_BUFFERED(__IOCTL_STORAGE_,0x0206)
+#define IOCTL_STORAGE_EJECTION_CONTROL	  __FILE_AM_BUFFERED(__IOCTL_STORAGE_,0x0250)
+#define IOCTL_STORAGE_MCN_CONTROL	  __FILE_AM_BUFFERED(__IOCTL_STORAGE_,0x0251)
+#define IOCTL_STORAGE_GET_MEDIA_TYPES	  __FILE_AM_BUFFERED(__IOCTL_STORAGE_,0x0300)
+#define IOCTL_STORAGE_GET_MEDIA_TYPES_EX  __FILE_AM_BUFFERED(__IOCTL_STORAGE_,0x0301)
+#define IOCTL_STORAGE_RESET_BUS 	  __FILE_RW_BUFFERED(__IOCTL_STORAGE_,0x0400)
+#define IOCTL_STORAGE_RESET_DEVICE	  __FILE_RW_BUFFERED(__IOCTL_STORAGE_,0x0401)
+#define IOCTL_STORAGE_GET_DEVICE_NUMBER   __FILE_AM_BUFFERED(__IOCTL_STORAGE_,0x0420)
+#define IOCTL_STORAGE_PREDICT_FAILURE	  __FILE_AM_BUFFERED(__IOCTL_STORAGE_,0x0440)
+
+typedef
+enum _STORAGE_BUS_TYPE
+/* https://msdn.microsoft.com/en-us/library/windows/hardware/ff566356(v=vs.85).aspx */
+{ BusTypeUnknown		= 0x00,
+  BusTypeScsi			= 0x01,
+  BusTypeAtapi			= 0x02,
+  BusTypeAta			= 0x03,
+  BusType1394			= 0x04,
+  BusTypeSsa			= 0x05,
+  BusTypeFibre			= 0x06,
+  BusTypeUsb			= 0x07,
+  BusTypeRAID			= 0x08,
+  BusTypeiScsi			= 0x09,
+  BusTypeSas			= 0x0A,
+  BusTypeSata			= 0x0B,
+  BusTypeSd			= 0x0C,
+  BusTypeMmc			= 0x0D,
+  BusTypeVirtual		= 0x0E,
+  BusTypeFileBackedVirtual	= 0x0F,
+  BusTypeSpaces 		= 0x10,
+  BusTypeMax			/* variant; number of bus types */,
+  BusTypeMaxReserved		= 0x7F
+} STORAGE_BUS_TYPE, *PSTORAGE_BUS_TYPE;
+
+/* End of _DDK_NTDDSTOR_H and _WINIOCTL_H common declarations.
+ */
+#endif
+#ifdef _DDK_NTDDSTOR_H
+/* Declarations specific to _DDK_NTDDSTOR_H alone.
+ */
+_BEGIN_C_DECLS
+
+#define IOCTL_STORAGE_GET_MEDIA_SERIAL_NUMBER  __FILE_AM_BUFFERED(__IOCTL_STORAGE_,0x0304)
+#define IOCTL_STORAGE_QUERY_PROPERTY	       __FILE_AM_BUFFERED(__IOCTL_STORAGE_,0x0500)
+
+DEFINE_GUID( GUID_DEVINTERFACE_DISK,
+    0x53f56307L, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b
+  );
+DEFINE_GUID( GUID_DEVINTERFACE_CDROM,
+    0x53f56308L, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b
+  );
+DEFINE_GUID( GUID_DEVINTERFACE_PARTITION,
+    0x53f5630aL, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b
+  );
+DEFINE_GUID( GUID_DEVINTERFACE_TAPE,
+    0x53f5630bL, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b
+  );
+DEFINE_GUID( GUID_DEVINTERFACE_WRITEONCEDISK,
+    0x53f5630cL, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b
+  );
+DEFINE_GUID( GUID_DEVINTERFACE_VOLUME,
+    0x53f5630dL, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b
+  );
+DEFINE_GUID( GUID_DEVINTERFACE_MEDIUMCHANGER,
+    0x53f56310L, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b
+  );
+DEFINE_GUID( GUID_DEVINTERFACE_FLOPPY,
+    0x53f56311L, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b
+  );
+DEFINE_GUID( GUID_DEVINTERFACE_CDCHANGER,
+    0x53f56312L, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b
+  );
+DEFINE_GUID( GUID_DEVINTERFACE_STORAGEPORT,
+    0x2accfe60L, 0xc130, 0x11d2, 0xb0, 0x82, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b
+  );
+
+typedef
+enum _STORAGE_MEDIA_TYPE
+{ DDS_4mm		= 0x20,
+  MiniQic		= 0x21,
+  Travan		= 0x22,
+  QIC			= 0x23,
+  MP_8mm		= 0x24,
+  AME_8mm		= 0x25,
+  AIT1_8mm		= 0x26,
+  DLT			= 0x27,
+  NCTP			= 0x28,
+  IBM_3480		= 0x29,
+  IBM_3490E		= 0x2A,
+  IBM_Magstar_3590	= 0x2B,
+  IBM_Magstar_MP	= 0x2C,
+  STK_DATA_D3		= 0x2D,
+  SONY_DTF		= 0x2E,
+  DV_6mm		= 0x2F,
+  DMI			= 0x30,
+  SONY_D2		= 0x31,
+  CLEANER_CARTRIDGE	= 0x32,
+  CD_ROM		= 0x33,
+  CD_R			= 0x34,
+  CD_RW			= 0x35,
+  DVD_ROM		= 0x36,
+  DVD_R			= 0x37,
+  DVD_RW		= 0x38,
+  MO_3_RW		= 0x39,
+  MO_5_WO		= 0x3A,
+  MO_5_RW		= 0x3B,
+  MO_5_LIMDOW		= 0x3C,
+  PC_5_WO		= 0x3D,
+  PC_5_RW		= 0x3E,
+  PD_5_RW		= 0x3F,
+  ABL_5_WO		= 0x40,
+  PINNACLE_APEX_5_RW	= 0x41,
+  SONY_12_WO		= 0x42,
+  PHILIPS_12_WO		= 0x43,
+  HITACHI_12_WO		= 0x44,
+  CYGNET_12_WO		= 0x45,
+  KODAK_14_WO		= 0x46,
+  MO_NFR_525		= 0x47,
+  NIKON_12_RW		= 0x48,
+  IOMEGA_ZIP		= 0x49,
+  IOMEGA_JAZ		= 0x4A,
+  SYQUEST_EZ135		= 0x4B,
+  SYQUEST_EZFLYER	= 0x4C,
+  SYQUEST_SYJET		= 0x4D,
+  AVATAR_F2		= 0x4E,
+  MP2_8mm		= 0x4F,
+  DST_S			= 0x50,
+  DST_M			= 0x51,
+  DST_L			= 0x52,
+  VXATape_1		= 0x53,
+  VXATape_2		= 0x54,
+  STK_9840		= 0x55,
+  LTO_Ultrium		= 0x56,
+  LTO_Accelis		= 0x57,
+  DVD_RAM		= 0x58,
+  AIT_8mm		= 0x59,
+  ADR_1			= 0x5A,
+  ADR_2			= 0x5B
+} STORAGE_MEDIA_TYPE, *PSTORAGE_MEDIA_TYPE;
+
+
+/* DEVICE_MEDIA_INFO.DeviceSpecific.DiskInfo.MediaCharacteristics constants
+ */
+#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 struct _DEVICE_MEDIA_INFO
+{ union
+  { struct
+    { LARGE_INTEGER		  Cylinders;
+      STORAGE_MEDIA_TYPE	  MediaType;
+      ULONG			  TracksPerCylinder;
+      ULONG			  SectorsPerTrack;
+      ULONG			  BytesPerSector;
+      ULONG			  NumberMediaSides;
+      ULONG			  MediaCharacteristics;
+    }				DiskInfo;
+    struct
+    { LARGE_INTEGER		  Cylinders;
+      STORAGE_MEDIA_TYPE	  MediaType;
+      ULONG			  TracksPerCylinder;
+      ULONG			  SectorsPerTrack;
+      ULONG			  BytesPerSector;
+      ULONG			  NumberMediaSides;
+      ULONG			  MediaCharacteristics;
+    }				RemovableDiskInfo;
+    struct
+    { STORAGE_MEDIA_TYPE	  MediaType;
+      ULONG			  MediaCharacteristics;
+      ULONG			  CurrentBlockSize;
+      STORAGE_BUS_TYPE		  BusType;
+      union
+      { struct
+	{ UCHAR			      MediumType;
+          UCHAR			      DensityCode;
+        }			    ScsiInformation;
+      }				  BusSpecificData;
+    }				TapeInfo;
+  }			      DeviceSpecific;
+} DEVICE_MEDIA_INFO, *PDEVICE_MEDIA_INFO;
+
+typedef
+struct _GET_MEDIA_TYPES
+{ ULONG 		DeviceType;
+  ULONG 		MediaInfoCount;
+  DEVICE_MEDIA_INFO	MediaInfo[1];
+} GET_MEDIA_TYPES, *PGET_MEDIA_TYPES;
+
+typedef
+struct _STORAGE_ADAPTER_DESCRIPTOR
+{ ULONG 		Version;
+  ULONG 		Size;
+  ULONG 		MaximumTransferLength;
+  ULONG 		MaximumPhysicalPages;
+  ULONG 		AlignmentMask;
+  BOOLEAN		AdapterUsesPio;
+  BOOLEAN		AdapterScansDown;
+  BOOLEAN		CommandQueueing;
+  BOOLEAN		AcceleratedTransfer;
+  STORAGE_BUS_TYPE	BusType;
+  USHORT		BusMajorVersion;
+  USHORT		BusMinorVersion;
+} STORAGE_ADAPTER_DESCRIPTOR, *PSTORAGE_ADAPTER_DESCRIPTOR;
+
+typedef
+struct _STORAGE_BUS_RESET_REQUEST
+{ UCHAR 		PathId;
+} STORAGE_BUS_RESET_REQUEST, *PSTORAGE_BUS_RESET_REQUEST;
+
+typedef
+struct _STORAGE_DESCRIPTOR_HEADER
+{ ULONG 		Version;
+  ULONG 		Size;
+} STORAGE_DESCRIPTOR_HEADER, *PSTORAGE_DESCRIPTOR_HEADER;
+
+typedef
+struct _STORAGE_DEVICE_DESCRIPTOR
+{ ULONG 		Version;
+  ULONG 		Size;
+  UCHAR 		DeviceType;
+  UCHAR 		DeviceTypeModifier;
+  BOOLEAN		RemovableMedia;
+  BOOLEAN		CommandQueueing;
+  ULONG 		VendorIdOffset;
+  ULONG 		ProductIdOffset;
+  ULONG 		ProductRevisionOffset;
+  ULONG 		SerialNumberOffset;
+  STORAGE_BUS_TYPE	BusType;
+  ULONG 		RawPropertiesLength;
+  UCHAR 		RawDeviceProperties[1];
+} STORAGE_DEVICE_DESCRIPTOR, *PSTORAGE_DEVICE_DESCRIPTOR;
+
+typedef
+struct _STORAGE_DEVICE_ID_DESCRIPTOR
+{ ULONG 		Version;
+  ULONG 		Size;
+  ULONG 		NumberOfIdentifiers;
+  UCHAR 		Identifiers[1];
+} STORAGE_DEVICE_ID_DESCRIPTOR, *PSTORAGE_DEVICE_ID_DESCRIPTOR;
+
+typedef
+struct _STORAGE_DEVICE_NUMBER
+{ DEVICE_TYPE		DeviceType;
+  ULONG 		DeviceNumber;
+  ULONG 		PartitionNumber;
+} STORAGE_DEVICE_NUMBER, *PSTORAGE_DEVICE_NUMBER;
+
+typedef
+struct _STORAGE_PREDICT_FAILURE
+{ ULONG 		PredictFailure;
+  UCHAR 		VendorSpecific[512];
+} STORAGE_PREDICT_FAILURE, *PSTORAGE_PREDICT_FAILURE;
+
+typedef
+enum _STORAGE_PROPERTY_ID
+{ StorageDeviceProperty 	= 0,
+  StorageAdapterProperty	= 1,
+  StorageDeviceIdProperty	= 2
+} 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
+struct _STORAGE_PROPERTY_QUERY
+{ STORAGE_PROPERTY_ID	PropertyId;
+  STORAGE_QUERY_TYPE	QueryType;
+  UCHAR 		AdditionalParameters[1];
+} STORAGE_PROPERTY_QUERY, *PSTORAGE_PROPERTY_QUERY;
+
+_END_C_DECLS
+
+#endif	/* _DDK_NTDDSTOR_H */
+#endif  /* !_DDK_NTDDSTOR_H: $RCSfile: ntddstor.h,v $: end of file */
Index: Daodan/MinGW/include/ddk/ntddtape.h
===================================================================
--- Daodan/MinGW/include/ddk/ntddtape.h	(revision 1046)
+++ Daodan/MinGW/include/ddk/ntddtape.h	(revision 1046)
@@ -0,0 +1,79 @@
+/*
+ * ntddtape.h
+ *
+ * Tape device IOCTL interface.
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __NTDDTAPE_H
+#define __NTDDTAPE_H
+
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "ntddk.h"
+#include "ntddstor.h"
+
+#define DD_TAPE_DEVICE_NAME               "\\Device\\Tape"
+#define DD_TAPE_DEVICE_NAME_U             L"\\Device\\Tape"
+
+#define IOCTL_TAPE_BASE                   FILE_DEVICE_TAPE
+
+#define IOCTL_TAPE_CHECK_VERIFY         CTL_CODE(IOCTL_TAPE_BASE, 0x0200, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_TAPE_CREATE_PARTITION     CTL_CODE(IOCTL_TAPE_BASE, 0x000a, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+#define IOCTL_TAPE_ERASE                CTL_CODE(IOCTL_TAPE_BASE, 0x0000, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+#define IOCTL_TAPE_FIND_NEW_DEVICES     CTL_CODE(IOCTL_DISK_BASE, 0x0206, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_TAPE_GET_DRIVE_PARAMS     CTL_CODE(IOCTL_TAPE_BASE, 0x0005, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_TAPE_GET_MEDIA_PARAMS     CTL_CODE(IOCTL_TAPE_BASE, 0x0007, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_TAPE_GET_POSITION         CTL_CODE(IOCTL_TAPE_BASE, 0x0003, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_TAPE_GET_STATUS           CTL_CODE(IOCTL_TAPE_BASE, 0x0009, METHOD_BUFFERED, FILE_READ_ACCESS )
+
+#define IOCTL_TAPE_PREPARE              CTL_CODE(IOCTL_TAPE_BASE, 0x0001, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_TAPE_SET_DRIVE_PARAMS     CTL_CODE(IOCTL_TAPE_BASE, 0x0006, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+#define IOCTL_TAPE_SET_MEDIA_PARAMS     CTL_CODE(IOCTL_TAPE_BASE, 0x0008, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_TAPE_SET_POSITION         CTL_CODE(IOCTL_TAPE_BASE, 0x0004, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_TAPE_WRITE_MARKS          CTL_CODE(IOCTL_TAPE_BASE, 0x0002, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+
+
+typedef enum _TAPE_DRIVE_PROBLEM_TYPE {
+  TapeDriveProblemNone,
+  TapeDriveReadWriteWarning,
+  TapeDriveReadWriteError,
+  TapeDriveReadWarning,
+  TapeDriveWriteWarning,
+  TapeDriveReadError,
+  TapeDriveWriteError,
+  TapeDriveHardwareError,
+  TapeDriveUnsupportedMedia,
+  TapeDriveScsiConnectionError,
+  TapeDriveTimetoClean,
+  TapeDriveCleanDriveNow,
+  TapeDriveMediaLifeExpired,
+  TapeDriveSnappedTape
+} TAPE_DRIVE_PROBLEM_TYPE;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __NTDDTAPE_H */
Index: Daodan/MinGW/include/ddk/ntddtdi.h
===================================================================
--- Daodan/MinGW/include/ddk/ntddtdi.h	(revision 1046)
+++ Daodan/MinGW/include/ddk/ntddtdi.h	(revision 1046)
@@ -0,0 +1,61 @@
+/*
+ * ntddtdi.h
+ *
+ * TDI IOCTL interface
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __NTDDTDI_H
+#define __NTDDTDI_H
+
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "ntddk.h"
+
+#define DD_TDI_DEVICE_NAME                "\\Device\\UNKNOWN"
+#define DD_TDI_DEVICE_NAME_U              L"\\Device\\UNKNOWN"
+
+#define _TDI_CONTROL_CODE(Request, Method) \
+  CTL_CODE(FILE_DEVICE_TRANSPORT, Request, Method, FILE_ANY_ACCESS)
+
+#define IOCTL_TDI_ACCEPT                  _TDI_CONTROL_CODE(0,  METHOD_BUFFERED)
+#define IOCTL_TDI_CONNECT                 _TDI_CONTROL_CODE(1,  METHOD_BUFFERED)
+#define IOCTL_TDI_DISCONNECT              _TDI_CONTROL_CODE(2,  METHOD_BUFFERED)
+#define IOCTL_TDI_LISTEN                  _TDI_CONTROL_CODE(3,  METHOD_BUFFERED)
+#define IOCTL_TDI_QUERY_INFORMATION       _TDI_CONTROL_CODE(4,  METHOD_OUT_DIRECT)
+#define IOCTL_TDI_RECEIVE                 _TDI_CONTROL_CODE(5,  METHOD_OUT_DIRECT)
+#define IOCTL_TDI_RECEIVE_DATAGRAM        _TDI_CONTROL_CODE(6,  METHOD_OUT_DIRECT)
+#define IOCTL_TDI_SEND                    _TDI_CONTROL_CODE(7,  METHOD_IN_DIRECT)
+#define IOCTL_TDI_SEND_DATAGRAM           _TDI_CONTROL_CODE(8,  METHOD_IN_DIRECT)
+#define IOCTL_TDI_SET_EVENT_HANDLER       _TDI_CONTROL_CODE(9,  METHOD_BUFFERED)
+#define IOCTL_TDI_SET_INFORMATION         _TDI_CONTROL_CODE(10, METHOD_IN_DIRECT)
+#define IOCTL_TDI_ASSOCIATE_ADDRESS       _TDI_CONTROL_CODE(11, METHOD_BUFFERED)
+#define IOCTL_TDI_DISASSOCIATE_ADDRESS    _TDI_CONTROL_CODE(12, METHOD_BUFFERED)
+#define IOCTL_TDI_ACTION                  _TDI_CONTROL_CODE(13, METHOD_OUT_DIRECT)
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __NTDDTDI_H */
Index: Daodan/MinGW/include/ddk/ntddvdeo.h
===================================================================
--- Daodan/MinGW/include/ddk/ntddvdeo.h	(revision 1046)
+++ Daodan/MinGW/include/ddk/ntddvdeo.h	(revision 1046)
@@ -0,0 +1,440 @@
+/*
+ * ntddvdeo.h
+ *
+ * Definitions for video devices
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __NTDDVDEO_H
+#define __NTDDVDEO_H
+
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "ntddk.h"
+
+
+#define VIDEO_DEVICE_NAME                 "DISPLAY%d"
+#define WVIDEO_DEVICE_NAME                L"DISPLAY%d"
+
+#define DD_FULLSCREEN_VIDEO_DEVICE_NAME   L"\\Device\\FSVideo"
+
+DEFINE_GUID(GUID_DEVINTERFACE_DISPLAY_ADAPTER, \
+  0x5b45201d, 0xf2f2, 0x4f3b, 0x85, 0xbb, 0x30, 0xff, 0x1f, 0x95, 0x35, 0x99);
+
+
+#define IOCTL_VIDEO_DISABLE_CURSOR \
+  CTL_CODE (FILE_DEVICE_VIDEO, 0x109, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_VIDEO_DISABLE_POINTER \
+  CTL_CODE(FILE_DEVICE_VIDEO, 0x10f, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_VIDEO_ENABLE_CURSOR \
+  CTL_CODE(FILE_DEVICE_VIDEO, 0x108, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_VIDEO_ENABLE_POINTER \
+  CTL_CODE(FILE_DEVICE_VIDEO, 0x10e, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_VIDEO_FREE_PUBLIC_ACCESS_RANGES \
+  CTL_CODE(FILE_DEVICE_VIDEO, 0x119, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_VIDEO_GET_BANK_SELECT_CODE \
+  CTL_CODE(FILE_DEVICE_VIDEO, 0x115, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_VIDEO_GET_CHILD_STATE \
+  CTL_CODE(FILE_DEVICE_VIDEO, 0x120, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_VIDEO_GET_POWER_MANAGEMENT \
+  CTL_CODE(FILE_DEVICE_VIDEO, 0x11c, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_VIDEO_HANDLE_VIDEOPARAMETERS \
+  CTL_CODE(FILE_DEVICE_VIDEO, 0x08, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_VIDEO_LOAD_AND_SET_FONT \
+  CTL_CODE(FILE_DEVICE_VIDEO, 0x105, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_VIDEO_MAP_VIDEO_MEMORY \
+  CTL_CODE(FILE_DEVICE_VIDEO, 0x116, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_VIDEO_QUERY_AVAIL_MODES \
+  CTL_CODE(FILE_DEVICE_VIDEO, 0x100, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_VIDEO_QUERY_COLOR_CAPABILITIES \
+  CTL_CODE(FILE_DEVICE_VIDEO, 0x11a, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_VIDEO_QUERY_CURRENT_MODE \
+  CTL_CODE(FILE_DEVICE_VIDEO, 0x102, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_VIDEO_QUERY_CURSOR_ATTR \
+  CTL_CODE(FILE_DEVICE_VIDEO, 0x10b, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_VIDEO_QUERY_CURSOR_POSITION \
+  CTL_CODE(FILE_DEVICE_VIDEO, 0x10d, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_VIDEO_QUERY_NUM_AVAIL_MODES \
+  CTL_CODE(FILE_DEVICE_VIDEO, 0x101, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_VIDEO_QUERY_POINTER_ATTR \
+  CTL_CODE(FILE_DEVICE_VIDEO, 0x111, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_VIDEO_QUERY_POINTER_CAPABILITIES \
+  CTL_CODE(FILE_DEVICE_VIDEO, 0x114, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_VIDEO_QUERY_POINTER_POSITION \
+  CTL_CODE(FILE_DEVICE_VIDEO, 0x113, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_VIDEO_QUERY_PUBLIC_ACCESS_RANGES \
+  CTL_CODE(FILE_DEVICE_VIDEO, 0x118, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_VIDEO_RESET_DEVICE \
+  CTL_CODE(FILE_DEVICE_VIDEO, 0x104, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_VIDEO_RESTORE_HARDWARE_STATE \
+  CTL_CODE(FILE_DEVICE_VIDEO, 0x81, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_VIDEO_SAVE_HARDWARE_STATE \
+  CTL_CODE(FILE_DEVICE_VIDEO, 0x80, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_VIDEO_SET_CHILD_STATE_CONFIGURATION \
+  CTL_CODE(FILE_DEVICE_VIDEO, 0x122, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_VIDEO_SET_COLOR_REGISTERS \
+  CTL_CODE(FILE_DEVICE_VIDEO, 0x107, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_VIDEO_SET_CURRENT_MODE \
+  CTL_CODE(FILE_DEVICE_VIDEO, 0x103, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_VIDEO_SET_CURSOR_ATTR \
+  CTL_CODE(FILE_DEVICE_VIDEO, 0x10a, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_VIDEO_SET_CURSOR_POSITION \
+  CTL_CODE(FILE_DEVICE_VIDEO, 0x10c, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_VIDEO_SET_PALETTE_REGISTERS \
+  CTL_CODE(FILE_DEVICE_VIDEO, 0x106, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_VIDEO_SET_POINTER_ATTR \
+  CTL_CODE(FILE_DEVICE_VIDEO, 0x110, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_VIDEO_SET_POINTER_POSITION \
+  CTL_CODE(FILE_DEVICE_VIDEO, 0x112, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_VIDEO_SET_POWER_MANAGEMENT \
+  CTL_CODE(FILE_DEVICE_VIDEO, 0x11b, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_VIDEO_SHARE_VIDEO_MEMORY \
+  CTL_CODE(FILE_DEVICE_VIDEO, 0x11d, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_VIDEO_SWITCH_DUALVIEW \
+  CTL_CODE(FILE_DEVICE_VIDEO, 0x123, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_VIDEO_UNMAP_VIDEO_MEMORY \
+  CTL_CODE(FILE_DEVICE_VIDEO, 0x117, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_VIDEO_UNSHARE_VIDEO_MEMORY \
+  CTL_CODE(FILE_DEVICE_VIDEO, 0x11e, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_VIDEO_VALIDATE_CHILD_STATE_CONFIGURATION \
+  CTL_CODE(FILE_DEVICE_VIDEO, 0x121, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+
+
+typedef struct _VIDEO_MEMORY {
+  PVOID  RequestedVirtualAddress;
+} VIDEO_MEMORY, *PVIDEO_MEMORY;
+
+typedef struct _VIDEO_MEMORY_INFORMATION {
+  PVOID  VideoRamBase;
+  ULONG  VideoRamLength;
+  PVOID  FrameBufferBase;
+  ULONG  FrameBufferLength;
+} VIDEO_MEMORY_INFORMATION, *PVIDEO_MEMORY_INFORMATION;
+
+/* VIDEO_MODE.RequestedMode */
+#define VIDEO_MODE_MAP_MEM_LINEAR         0x40000000
+#define VIDEO_MODE_NO_ZERO_MEMORY         0x80000000
+
+typedef struct _VIDEO_MODE {
+  ULONG  RequestedMode;
+} VIDEO_MODE, *PVIDEO_MODE;
+
+/* VIDEO_MODE_INFORMATION.AttributeFlags */
+#define VIDEO_MODE_COLOR                  0x0001
+#define VIDEO_MODE_GRAPHICS               0x0002
+#define VIDEO_MODE_PALETTE_DRIVEN         0x0004
+#define VIDEO_MODE_MANAGED_PALETTE        0x0008
+#define VIDEO_MODE_INTERLACED             0x0010
+#define VIDEO_MODE_NO_OFF_SCREEN          0x0020
+#define VIDEO_MODE_NO_64_BIT_ACCESS       0x0040
+#define VIDEO_MODE_BANKED                 0x0080
+#define VIDEO_MODE_LINEAR                 0x0100
+
+typedef struct _VIDEO_MODE_INFORMATION {
+  ULONG  Length;
+  ULONG  ModeIndex;
+  ULONG  VisScreenWidth;
+  ULONG  VisScreenHeight;
+  ULONG  ScreenStride;
+  ULONG  NumberOfPlanes;
+  ULONG  BitsPerPlane;
+  ULONG  Frequency;
+  ULONG  XMillimeter;
+  ULONG  YMillimeter;
+  ULONG  NumberRedBits;
+  ULONG  NumberGreenBits;
+  ULONG  NumberBlueBits;
+  ULONG  RedMask;
+  ULONG  GreenMask;
+  ULONG  BlueMask;
+  ULONG  AttributeFlags;
+  ULONG  VideoMemoryBitmapWidth;
+  ULONG  VideoMemoryBitmapHeight;
+  ULONG  DriverSpecificAttributeFlags;
+} VIDEO_MODE_INFORMATION, *PVIDEO_MODE_INFORMATION;
+
+typedef struct _VIDEO_NUM_MODES {
+  ULONG  NumModes;
+  ULONG  ModeInformationLength;
+} VIDEO_NUM_MODES, *PVIDEO_NUM_MODES;
+
+typedef enum _VIDEO_POWER_STATE {
+  VideoPowerUnspecified = 0,
+  VideoPowerOn = 1,
+  VideoPowerStandBy,
+  VideoPowerSuspend,
+  VideoPowerOff,
+  VideoPowerHibernate,
+  VideoPowerShutdown,
+  VideoPowerMaximum
+} VIDEO_POWER_STATE, *PVIDEO_POWER_STATE;
+
+typedef struct _VIDEO_POWER_MANAGEMENT {
+  ULONG  Length;
+  ULONG  DPMSVersion;
+  ULONG  PowerState;
+} VIDEO_POWER_MANAGEMENT, *PVIDEO_POWER_MANAGEMENT;
+
+typedef struct _VIDEO_PUBLIC_ACCESS_RANGES {
+  ULONG  InIoSpace;
+  ULONG  MappedInIoSpace;
+  PVOID  VirtualAddress;
+} VIDEO_PUBLIC_ACCESS_RANGES, *PVIDEO_PUBLIC_ACCESS_RANGES;
+
+typedef struct _VIDEO_SHARE_MEMORY {
+  HANDLE  ProcessHandle;
+  ULONG  ViewOffset;
+  ULONG  ViewSize;
+  PVOID  RequestedVirtualAddress;
+} VIDEO_SHARE_MEMORY, *PVIDEO_SHARE_MEMORY;
+
+typedef struct _VIDEO_SHARE_MEMORY_INFORMATION {
+  ULONG  SharedViewOffset;
+  ULONG  SharedViewSize;
+  PVOID  VirtualAddress;
+} VIDEO_SHARE_MEMORY_INFORMATION, *PVIDEO_SHARE_MEMORY_INFORMATION;
+
+/* VIDEO_BANK_SELECT.BankingFlags constants */
+#define PLANAR_HC                         0x00000001
+
+/* VIDEO_BANK_SELECT.BankingType and PlanarHCBankingType constants */
+typedef enum _VIDEO_BANK_TYPE {
+  VideoNotBanked = 0,
+  VideoBanked1RW,
+  VideoBanked1R1W,
+  VideoBanked2RW,
+  NumVideoBankTypes
+} VIDEO_BANK_TYPE, *PVIDEO_BANK_TYPE;
+
+typedef struct _VIDEO_BANK_SELECT {
+  ULONG  Length;
+  ULONG  Size;
+  ULONG  BankingFlags;
+  ULONG  BankingType;
+  ULONG  PlanarHCBankingType;
+  ULONG  BitmapWidthInBytes;
+  ULONG  BitmapSize;
+  ULONG  Granularity;
+  ULONG  PlanarHCGranularity;
+  ULONG  CodeOffset;
+  ULONG  PlanarHCBankCodeOffset;
+  ULONG  PlanarHCEnableCodeOffset;
+  ULONG  PlanarHCDisableCodeOffset;
+} VIDEO_BANK_SELECT, *PVIDEO_BANK_SELECT;
+
+typedef struct _VIDEO_LOAD_FONT_INFORMATION {
+  USHORT  WidthInPixels;
+  USHORT  HeightInPixels;
+  ULONG  FontSize;
+  UCHAR  Font[1];
+} VIDEO_LOAD_FONT_INFORMATION, *PVIDEO_LOAD_FONT_INFORMATION;
+
+/* VIDEO_COLOR_CAPABILITIES.AttributeFlags constants */
+#define VIDEO_DEVICE_COLOR                0x00000001
+#define VIDEO_OPTIONAL_GAMMET_TABLE       0x00000002
+
+typedef struct _VIDEO_COLOR_CAPABILITIES {
+  ULONG  Length;
+  ULONG  AttributeFlags;
+  LONG  RedPhosphoreDecay;
+  LONG  GreenPhosphoreDecay;
+  LONG  BluePhosphoreDecay;
+  LONG  WhiteChromaticity_x;
+  LONG  WhiteChromaticity_y;
+  LONG  WhiteChromaticity_Y;
+  LONG  RedChromaticity_x;
+  LONG  RedChromaticity_y;
+  LONG  GreenChromaticity_x;
+  LONG  GreenChromaticity_y;
+  LONG  BlueChromaticity_x;
+  LONG  BlueChromaticity_y;
+  LONG  WhiteGamma;
+  LONG  RedGamma;
+  LONG  GreenGamma;
+  LONG  BlueGamma;
+} VIDEO_COLOR_CAPABILITIES, *PVIDEO_COLOR_CAPABILITIES;
+
+typedef struct _VIDEO_CURSOR_ATTRIBUTES {
+  USHORT  Width;
+  USHORT  Height;
+  SHORT  Column;
+  SHORT  Row;
+  UCHAR  Rate;
+  UCHAR  Enable;
+} VIDEO_CURSOR_ATTRIBUTES, *PVIDEO_CURSOR_ATTRIBUTES;
+
+typedef struct _VIDEO_CURSOR_POSITION {
+  SHORT  Column;
+  SHORT  Row;
+} VIDEO_CURSOR_POSITION, *PVIDEO_CURSOR_POSITION;
+
+typedef struct _VIDEO_POINTER_ATTRIBUTES {
+  ULONG  Flags;
+  ULONG  Width;
+  ULONG  Height;
+  ULONG  WidthInBytes;
+  ULONG  Enable;
+  SHORT  Column;
+  SHORT  Row;
+  UCHAR  Pixels[1];
+} VIDEO_POINTER_ATTRIBUTES, *PVIDEO_POINTER_ATTRIBUTES;
+
+/* VIDEO_POINTER_CAPABILITIES.Flags */
+#define VIDEO_MODE_ASYNC_POINTER          0x01
+#define VIDEO_MODE_MONO_POINTER           0x02
+#define VIDEO_MODE_COLOR_POINTER          0x04
+#define VIDEO_MODE_ANIMATE_START          0x08
+#define VIDEO_MODE_ANIMATE_UPDATE         0x10
+
+typedef struct _VIDEO_POINTER_CAPABILITIES {
+  ULONG  Flags;
+  ULONG  MaxWidth;
+  ULONG  MaxHeight;
+  ULONG  HWPtrBitmapStart;
+  ULONG  HWPtrBitmapEnd;
+} VIDEO_POINTER_CAPABILITIES, *PVIDEO_POINTER_CAPABILITIES;
+
+typedef struct _VIDEO_POINTER_POSITION {
+  SHORT  Column;
+  SHORT  Row;
+} VIDEO_POINTER_POSITION, *PVIDEO_POINTER_POSITION;
+
+
+/* VIDEO_HARDWARE_STATE_HEADER.VGAStateFlags constants */
+#define VIDEO_STATE_NON_STANDARD_VGA      0x00000001
+#define VIDEO_STATE_UNEMULATED_VGA_STATE  0x00000002
+#define VIDEO_STATE_PACKED_CHAIN4_MODE    0x00000004
+
+typedef struct _VIDEO_HARDWARE_STATE_HEADER {
+  ULONG  Length;
+  UCHAR  PortValue[0x30];
+  ULONG  AttribIndexDataState;
+  ULONG  BasicSequencerOffset;
+  ULONG  BasicCrtContOffset;
+  ULONG  BasicGraphContOffset;
+  ULONG  BasicAttribContOffset;
+  ULONG  BasicDacOffset;
+  ULONG  BasicLatchesOffset;
+  ULONG  ExtendedSequencerOffset;
+  ULONG  ExtendedCrtContOffset;
+  ULONG  ExtendedGraphContOffset;
+  ULONG  ExtendedAttribContOffset;
+  ULONG  ExtendedDacOffset;
+  ULONG  ExtendedValidatorStateOffset;
+  ULONG  ExtendedMiscDataOffset;
+  ULONG  PlaneLength;
+  ULONG  Plane1Offset;
+  ULONG  Plane2Offset;
+  ULONG  Plane3Offset;
+  ULONG  Plane4Offset;
+  ULONG  VGAStateFlags;
+  ULONG  DIBOffset;
+  ULONG  DIBBitsPerPixel;
+  ULONG  DIBXResolution;
+  ULONG  DIBYResolution;
+  ULONG  DIBXlatOffset;
+  ULONG  DIBXlatLength;
+  ULONG  VesaInfoOffset;
+  PVOID  FrameBufferData;
+} VIDEO_HARDWARE_STATE_HEADER, *PVIDEO_HARDWARE_STATE_HEADER;
+
+typedef struct _VIDEO_CLUTDATA {
+  UCHAR  Red;
+  UCHAR  Green;
+  UCHAR  Blue;
+  UCHAR  Unused;
+} VIDEO_CLUTDATA, *PVIDEO_CLUTDATA;
+
+typedef struct {
+	USHORT  NumEntries;
+	USHORT  FirstEntry;
+	union {
+    VIDEO_CLUTDATA  RgbArray;
+    ULONG  RgbLong;
+	} LookupTable[1];
+} VIDEO_CLUT, *PVIDEO_CLUT;
+
+typedef struct _VIDEO_PALETTE_DATA {
+  USHORT  NumEntries;
+  USHORT  FirstEntry;
+  USHORT  Colors[1];
+} VIDEO_PALETTE_DATA, *PVIDEO_PALETTE_DATA;
+
+typedef struct _VIDEO_HARDWARE_STATE {
+	PVIDEO_HARDWARE_STATE_HEADER  StateHeader;
+	ULONG  StateLength;
+} VIDEO_HARDWARE_STATE, *PVIDEO_HARDWARE_STATE;
+
+#define VIDEO_CHILD_ACTIVE                0x00000001
+#define VIDEO_CHILD_DETACHED              0x00000002
+#define VIDEO_CHILD_NOPRUNE_FREQ          0x80000000
+#define VIDEO_CHILD_NOPRUNE_RESOLUTION    0x40000000
+
+#define VIDEO_DUALVIEW_REMOVABLE          0x00000001
+#define VIDEO_DUALVIEW_PRIMARY            0x80000000
+#define VIDEO_DUALVIEW_SECONDARY          0x40000000
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __NTDDVDEO_H */
Index: Daodan/MinGW/include/ddk/ntddvol.h
===================================================================
--- Daodan/MinGW/include/ddk/ntddvol.h	(revision 1046)
+++ Daodan/MinGW/include/ddk/ntddvol.h	(revision 1046)
@@ -0,0 +1,141 @@
+/*
+ * ntddvol.h
+ *
+ * Volume IOCTL interface.
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __NTDDVOL_H
+#define __NTDDVOL_H
+
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "ntddk.h"
+
+#define IOCTL_VOLUME_BASE                 ((ULONG) 'V')
+
+#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_READ_PLEX \
+  CTL_CODE(IOCTL_VOLUME_BASE, 11, METHOD_OUT_DIRECT, FILE_READ_ACCESS)
+
+#define IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS \
+  CTL_CODE(IOCTL_VOLUME_BASE, 0, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_VOLUME_IS_CLUSTERED \
+  CTL_CODE(IOCTL_VOLUME_BASE, 12, 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_IS_PARTITION \
+  CTL_CODE(IOCTL_VOLUME_BASE, 10, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_VOLUME_SET_GPT_ATTRIBUTES \
+  CTL_CODE(IOCTL_VOLUME_BASE, 13, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_VOLUME_GET_GPT_ATTRIBUTES \
+  CTL_CODE(IOCTL_VOLUME_BASE, 14, 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)
+
+
+typedef struct _VOLUME_LOGICAL_OFFSET {
+  LONGLONG  LogicalOffset;
+} VOLUME_LOGICAL_OFFSET, *PVOLUME_LOGICAL_OFFSET;
+
+typedef struct _VOLUME_PHYSICAL_OFFSET {
+  ULONG  DiskNumber;
+  LONGLONG  Offset;
+} VOLUME_PHYSICAL_OFFSET, *PVOLUME_PHYSICAL_OFFSET;
+
+typedef struct _VOLUME_PHYSICAL_OFFSETS {
+  ULONG  NumberOfPhysicalOffsets;
+  VOLUME_PHYSICAL_OFFSET  PhysicalOffset[1];
+} VOLUME_PHYSICAL_OFFSETS, *PVOLUME_PHYSICAL_OFFSETS;
+
+typedef struct _VOLUME_READ_PLEX_INPUT {
+  LARGE_INTEGER  ByteOffset;
+  ULONG  Length;
+  ULONG  PlexNumber;
+} VOLUME_READ_PLEX_INPUT, *PVOLUME_READ_PLEX_INPUT;
+
+typedef struct _VOLUME_GET_GPT_ATTRIBUTES_INFORMATION {
+  ULONGLONG  GptAttributes;
+} VOLUME_GET_GPT_ATTRIBUTES_INFORMATION, *PVOLUME_GET_GPT_ATTRIBUTES_INFORMATION;
+
+typedef struct _VOLUME_SET_GPT_ATTRIBUTES_INFORMATION {
+	ULONGLONG  GptAttributes;
+	BOOLEAN  RevertOnClose;
+	BOOLEAN  ApplyToAllConnectedVolumes;
+	USHORT  Reserved1;
+	ULONG  Reserved2;
+} VOLUME_SET_GPT_ATTRIBUTES_INFORMATION, *PVOLUME_SET_GPT_ATTRIBUTES_INFORMATION;
+
+typedef struct _DISK_EXTENT {
+	ULONG  DiskNumber;
+	LARGE_INTEGER  StartingOffset;
+	LARGE_INTEGER  ExtentLength;
+} DISK_EXTENT, *PDISK_EXTENT;
+
+typedef struct _VOLUME_DISK_EXTENTS {
+	ULONG  NumberOfDiskExtents;
+	DISK_EXTENT  Extents[1];
+} VOLUME_DISK_EXTENTS, *PVOLUME_DISK_EXTENTS;
+
+typedef struct _VOLUME_NUMBER {
+	ULONG  VolumeNumber;
+	WCHAR  VolumeManagerName[8];
+} VOLUME_NUMBER, *PVOLUME_NUMBER;
+
+typedef struct _VOLUME_FAILOVER_SET {
+	ULONG  NumberOfDisks;
+	ULONG  DiskNumbers[1];
+} VOLUME_FAILOVER_SET, *PVOLUME_FAILOVER_SET;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __NTDDVOL_H */
Index: Daodan/MinGW/include/ddk/ntifs.h
===================================================================
--- Daodan/MinGW/include/ddk/ntifs.h	(revision 1046)
+++ Daodan/MinGW/include/ddk/ntifs.h	(revision 1046)
@@ -0,0 +1,5359 @@
+/*
+ * ntifs.h
+ *
+ * Windows NT Filesystem Driver Developer Kit
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Bo Brantén <bosse@acc.umu.se>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef _NTIFS_
+#define _NTIFS_
+#define _GNU_NTIFS_
+
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "ntddk.h"
+#include "ntapi.h"
+
+#define VER_PRODUCTBUILD 10000
+
+#ifndef NTSYSAPI
+#define NTSYSAPI
+#endif
+
+#ifndef NTKERNELAPI
+#define NTKERNELAPI STDCALL
+#endif
+
+typedef struct _SE_EXPORTS                  *PSE_EXPORTS;
+
+extern PUCHAR                       *FsRtlLegalAnsiCharacterArray;
+extern PSE_EXPORTS                  SeExports;
+extern PACL                         SePublicDefaultDacl;
+extern PACL                         SeSystemDefaultDacl;
+
+#define ANSI_DOS_STAR                   ('<')
+#define ANSI_DOS_QM                     ('>')
+#define ANSI_DOS_DOT                    ('"')
+
+#define DOS_STAR                        (L'<')
+#define DOS_QM                          (L'>')
+#define DOS_DOT                         (L'"')
+
+/* also in winnt.h */
+#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 COMPRESSION_FORMAT_NONE         (0x0000)
+#define COMPRESSION_FORMAT_DEFAULT      (0x0001)
+#define COMPRESSION_FORMAT_LZNT1        (0x0002)
+#define COMPRESSION_ENGINE_STANDARD     (0x0000)
+#define COMPRESSION_ENGINE_MAXIMUM      (0x0100)
+#define COMPRESSION_ENGINE_HIBER        (0x0200)
+
+#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 FILE_ACTION_ADDED_STREAM            0x00000006
+#define FILE_ACTION_REMOVED_STREAM          0x00000007
+#define FILE_ACTION_MODIFIED_STREAM         0x00000008
+#define FILE_ACTION_REMOVED_BY_DELETE       0x00000009
+#define FILE_ACTION_ID_NOT_TUNNELLED        0x0000000A
+#define FILE_ACTION_TUNNELLED_ID_COLLISION  0x0000000B
+/* end  winnt.h */
+
+#define FILE_EA_TYPE_BINARY             0xfffe
+#define FILE_EA_TYPE_ASCII              0xfffd
+#define FILE_EA_TYPE_BITMAP             0xfffb
+#define FILE_EA_TYPE_METAFILE           0xfffa
+#define FILE_EA_TYPE_ICON               0xfff9
+#define FILE_EA_TYPE_EA                 0xffee
+#define FILE_EA_TYPE_MVMT               0xffdf
+#define FILE_EA_TYPE_MVST               0xffde
+#define FILE_EA_TYPE_ASN1               0xffdd
+#define FILE_EA_TYPE_FAMILY_IDS         0xff01
+
+#define FILE_NEED_EA                    0x00000080
+
+/* also in winnt.h */
+#define FILE_NOTIFY_CHANGE_FILE_NAME    0x00000001
+#define FILE_NOTIFY_CHANGE_DIR_NAME     0x00000002
+#define FILE_NOTIFY_CHANGE_NAME         0x00000003
+#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_EA           0x00000080
+#define FILE_NOTIFY_CHANGE_SECURITY     0x00000100
+#define FILE_NOTIFY_CHANGE_STREAM_NAME  0x00000200
+#define FILE_NOTIFY_CHANGE_STREAM_SIZE  0x00000400
+#define FILE_NOTIFY_CHANGE_STREAM_WRITE 0x00000800
+#define FILE_NOTIFY_VALID_MASK          0x00000fff
+/* end winnt.h */
+
+#define FILE_OPLOCK_BROKEN_TO_LEVEL_2   0x00000007
+#define FILE_OPLOCK_BROKEN_TO_NONE      0x00000008
+
+#define FILE_OPBATCH_BREAK_UNDERWAY     0x00000009
+
+#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 FS_LFN_APIS                     0x00004000
+#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
+/* Note: These flags only have a meaning starting with Windows 7/2008 R2.
+   Their absence on older OSes does NOT mean that a filesystem is missing
+   that property. */
+#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_PIPE_BYTE_STREAM_TYPE      0x00000000
+#define FILE_PIPE_MESSAGE_TYPE          0x00000001
+
+#define FILE_PIPE_BYTE_STREAM_MODE      0x00000000
+#define FILE_PIPE_MESSAGE_MODE          0x00000001
+
+#define FILE_PIPE_QUEUE_OPERATION       0x00000000
+#define FILE_PIPE_COMPLETE_OPERATION    0x00000001
+
+#define FILE_PIPE_INBOUND               0x00000000
+#define FILE_PIPE_OUTBOUND              0x00000001
+#define FILE_PIPE_FULL_DUPLEX           0x00000002
+
+#define FILE_PIPE_DISCONNECTED_STATE    0x00000001
+#define FILE_PIPE_LISTENING_STATE       0x00000002
+#define FILE_PIPE_CONNECTED_STATE       0x00000003
+#define FILE_PIPE_CLOSING_STATE         0x00000004
+
+#define FILE_PIPE_CLIENT_END            0x00000000
+#define FILE_PIPE_SERVER_END            0x00000001
+
+#define FILE_PIPE_READ_DATA             0x00000000
+#define FILE_PIPE_WRITE_SPACE           0x00000001
+
+#define FILE_STORAGE_TYPE_SPECIFIED             0x00000041  /* FILE_DIRECTORY_FILE | FILE_NON_DIRECTORY_FILE */
+#define FILE_STORAGE_TYPE_DEFAULT               (StorageTypeDefault << FILE_STORAGE_TYPE_SHIFT)
+#define FILE_STORAGE_TYPE_DIRECTORY             (StorageTypeDirectory << FILE_STORAGE_TYPE_SHIFT)
+#define FILE_STORAGE_TYPE_FILE                  (StorageTypeFile << FILE_STORAGE_TYPE_SHIFT)
+#define FILE_STORAGE_TYPE_DOCFILE               (StorageTypeDocfile << FILE_STORAGE_TYPE_SHIFT)
+#define FILE_STORAGE_TYPE_JUNCTION_POINT        (StorageTypeJunctionPoint << FILE_STORAGE_TYPE_SHIFT)
+#define FILE_STORAGE_TYPE_CATALOG               (StorageTypeCatalog << FILE_STORAGE_TYPE_SHIFT)
+#define FILE_STORAGE_TYPE_STRUCTURED_STORAGE    (StorageTypeStructuredStorage << FILE_STORAGE_TYPE_SHIFT)
+#define FILE_STORAGE_TYPE_EMBEDDING             (StorageTypeEmbedding << FILE_STORAGE_TYPE_SHIFT)
+#define FILE_STORAGE_TYPE_STREAM                (StorageTypeStream << FILE_STORAGE_TYPE_SHIFT)
+#define FILE_MINIMUM_STORAGE_TYPE               FILE_STORAGE_TYPE_DEFAULT
+#define FILE_MAXIMUM_STORAGE_TYPE               FILE_STORAGE_TYPE_STREAM
+#define FILE_STORAGE_TYPE_MASK                  0x000f0000
+#define FILE_STORAGE_TYPE_SHIFT                 16
+
+#define FILE_VC_QUOTA_NONE              0x00000000
+#define FILE_VC_QUOTA_TRACK             0x00000001
+#define FILE_VC_QUOTA_ENFORCE           0x00000002
+#define FILE_VC_QUOTA_MASK              0x00000003
+
+#define FILE_VC_QUOTAS_LOG_VIOLATIONS   0x00000004
+#define FILE_VC_CONTENT_INDEX_DISABLED  0x00000008
+
+#define FILE_VC_LOG_QUOTA_THRESHOLD     0x00000010
+#define FILE_VC_LOG_QUOTA_LIMIT         0x00000020
+#define FILE_VC_LOG_VOLUME_THRESHOLD    0x00000040
+#define FILE_VC_LOG_VOLUME_LIMIT        0x00000080
+
+#define FILE_VC_QUOTAS_INCOMPLETE       0x00000100
+#define FILE_VC_QUOTAS_REBUILDING       0x00000200
+
+#define FILE_VC_VALID_MASK              0x000003ff
+
+#define FSRTL_FLAG_FILE_MODIFIED        (0x01)
+#define FSRTL_FLAG_FILE_LENGTH_CHANGED  (0x02)
+#define FSRTL_FLAG_LIMIT_MODIFIED_PAGES (0x04)
+#define FSRTL_FLAG_ACQUIRE_MAIN_RSRC_EX (0x08)
+#define FSRTL_FLAG_ACQUIRE_MAIN_RSRC_SH (0x10)
+#define FSRTL_FLAG_USER_MAPPED_FILE     (0x20)
+#define FSRTL_FLAG_EOF_ADVANCE_ACTIVE   (0x80)
+
+#define FSRTL_FLAG2_DO_MODIFIED_WRITE   (0x01)
+
+#define FSRTL_FSP_TOP_LEVEL_IRP         (0x01)
+#define FSRTL_CACHE_TOP_LEVEL_IRP       (0x02)
+#define FSRTL_MOD_WRITE_TOP_LEVEL_IRP   (0x03)
+#define FSRTL_FAST_IO_TOP_LEVEL_IRP     (0x04)
+#define FSRTL_MAX_TOP_LEVEL_IRP_FLAG    (0x04)
+
+#define FSRTL_VOLUME_DISMOUNT           1
+#define FSRTL_VOLUME_DISMOUNT_FAILED    2
+#define FSRTL_VOLUME_LOCK               3
+#define FSRTL_VOLUME_LOCK_FAILED        4
+#define FSRTL_VOLUME_UNLOCK             5
+#define FSRTL_VOLUME_MOUNT              6
+
+#define FSRTL_WILD_CHARACTER            0x08
+
+#ifdef _X86_
+#define HARDWARE_PTE    HARDWARE_PTE_X86
+#define PHARDWARE_PTE   PHARDWARE_PTE_X86
+#else
+#define HARDWARE_PTE    ULONG
+#define PHARDWARE_PTE   PULONG
+#endif
+
+#define IO_CHECK_CREATE_PARAMETERS      0x0200
+#define IO_ATTACH_DEVICE                0x0400
+
+#define IO_ATTACH_DEVICE_API            0x80000000
+/* also in winnt.h */
+#define IO_COMPLETION_QUERY_STATE       0x0001
+#define IO_COMPLETION_MODIFY_STATE      0x0002
+#define IO_COMPLETION_ALL_ACCESS        (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3)
+/* end winnt.h */
+#define IO_FILE_OBJECT_NON_PAGED_POOL_CHARGE    64
+#define IO_FILE_OBJECT_PAGED_POOL_CHARGE        1024
+
+#define IO_TYPE_APC                     18
+#define IO_TYPE_DPC                     19
+#define IO_TYPE_DEVICE_QUEUE            20
+#define IO_TYPE_EVENT_PAIR              21
+#define IO_TYPE_INTERRUPT               22
+#define IO_TYPE_PROFILE                 23
+
+#define IRP_BEING_VERIFIED              0x10
+
+#define MAILSLOT_CLASS_FIRSTCLASS       1
+#define MAILSLOT_CLASS_SECONDCLASS      2
+
+#define MAILSLOT_SIZE_AUTO              0
+
+#define MAP_PROCESS                     1L
+#define MAP_SYSTEM                      2L
+#define MEM_DOS_LIM                     0x40000000
+/* also in winnt.h */
+#define MEM_IMAGE                       SEC_IMAGE
+/* end winnt.h */
+#define OB_TYPE_TYPE                    1
+#define OB_TYPE_DIRECTORY               2
+#define OB_TYPE_SYMBOLIC_LINK           3
+#define OB_TYPE_TOKEN                   4
+#define OB_TYPE_PROCESS                 5
+#define OB_TYPE_THREAD                  6
+#define OB_TYPE_EVENT                   7
+#define OB_TYPE_EVENT_PAIR              8
+#define OB_TYPE_MUTANT                  9
+#define OB_TYPE_SEMAPHORE               10
+#define OB_TYPE_TIMER                   11
+#define OB_TYPE_PROFILE                 12
+#define OB_TYPE_WINDOW_STATION          13
+#define OB_TYPE_DESKTOP                 14
+#define OB_TYPE_SECTION                 15
+#define OB_TYPE_KEY                     16
+#define OB_TYPE_PORT                    17
+#define OB_TYPE_ADAPTER                 18
+#define OB_TYPE_CONTROLLER              19
+#define OB_TYPE_DEVICE                  20
+#define OB_TYPE_DRIVER                  21
+#define OB_TYPE_IO_COMPLETION           22
+#define OB_TYPE_FILE                    23
+
+#define PIN_WAIT                        (1)
+#define PIN_EXCLUSIVE                   (2)
+#define PIN_NO_READ                     (4)
+#define PIN_IF_BCB                      (8)
+
+#define PORT_CONNECT                    0x0001
+#define PORT_ALL_ACCESS                 (STANDARD_RIGHTS_ALL |\
+                                         PORT_CONNECT)
+/* also in winnt.h */
+#define SEC_BASED	0x00200000
+#define SEC_NO_CHANGE	0x00400000
+#define SEC_FILE	0x00800000
+#define SEC_IMAGE	0x01000000
+#define SEC_VLM		0x02000000
+#define SEC_RESERVE	0x04000000
+#define SEC_COMMIT	0x08000000
+#define SEC_NOCACHE	0x10000000
+
+#define SECURITY_WORLD_SID_AUTHORITY    {0,0,0,0,0,1}
+#define SECURITY_WORLD_RID              (0x00000000L)
+
+#define SID_REVISION                    1
+
+#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_ALL_ACCESS (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_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)
+
+#define TOKEN_SOURCE_LENGTH 8
+/* end winnt.h */
+
+#define TOKEN_HAS_TRAVERSE_PRIVILEGE    0x01
+#define TOKEN_HAS_BACKUP_PRIVILEGE      0x02
+#define TOKEN_HAS_RESTORE_PRIVILEGE     0x04
+#define TOKEN_HAS_ADMIN_GROUP           0x08
+#define TOKEN_IS_RESTRICTED             0x10
+
+#define VACB_MAPPING_GRANULARITY        (0x40000)
+#define VACB_OFFSET_SHIFT               (18)
+
+#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_MARK_AS_SYSTEM_HIVE       CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 19,  METHOD_NEITHER, FILE_ANY_ACCESS)
+#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)
+
+#if (VER_PRODUCTBUILD >= 1381)
+
+#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_ANY_ACCESS)
+#define FSCTL_IS_VOLUME_DIRTY           CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 30, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_GET_HFS_INFORMATION       CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 31, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_ALLOW_EXTENDED_DASD_IO    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 32, METHOD_NEITHER,  FILE_ANY_ACCESS)
+
+#endif /* (VER_PRODUCTBUILD >= 1381) */
+
+#if (VER_PRODUCTBUILD >= 2195)
+
+#define FSCTL_READ_PROPERTY_DATA        CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 33, METHOD_NEITHER, FILE_ANY_ACCESS)
+#define FSCTL_WRITE_PROPERTY_DATA       CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 34, 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_DUMP_PROPERTY_DATA        CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 37,  METHOD_NEITHER, FILE_ANY_ACCESS)
+#define FSCTL_SET_OBJECT_ID             CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 38, METHOD_BUFFERED, FILE_WRITE_DATA)
+#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_WRITE_DATA)
+#define FSCTL_SET_REPARSE_POINT         CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 41, METHOD_BUFFERED, FILE_WRITE_DATA)
+#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_WRITE_DATA)
+#define FSCTL_ENUM_USN_DATA             CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 44,  METHOD_NEITHER, FILE_READ_DATA)
+#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_READ_DATA)
+#define FSCTL_SET_OBJECT_ID_EXTENDED    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 47, METHOD_BUFFERED, FILE_WRITE_DATA)
+#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_WRITE_DATA)
+#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_BUFFERED, 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_ANY_ACCESS)
+#define FSCTL_READ_RAW_ENCRYPTED        CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 56,  METHOD_NEITHER, FILE_ANY_ACCESS)
+#define FSCTL_CREATE_USN_JOURNAL        CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 57,  METHOD_NEITHER, FILE_READ_DATA)
+#define FSCTL_READ_FILE_USN_DATA        CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 58,  METHOD_NEITHER, FILE_READ_DATA)
+#define FSCTL_WRITE_USN_CLOSE_RECORD    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 59,  METHOD_NEITHER, FILE_READ_DATA)
+#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_NSS_CONTROL               CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 67, METHOD_BUFFERED, 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_NSS_RCONTROL              CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 70, METHOD_BUFFERED, FILE_READ_DATA)
+#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)
+
+#endif /* (VER_PRODUCTBUILD >= 2195) */
+
+#define FSCTL_MAILSLOT_PEEK             CTL_CODE(FILE_DEVICE_MAILSLOT, 0, METHOD_NEITHER, FILE_READ_DATA)
+
+#define FSCTL_NETWORK_SET_CONFIGURATION_INFO    CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 102, METHOD_IN_DIRECT, FILE_ANY_ACCESS)
+#define FSCTL_NETWORK_GET_CONFIGURATION_INFO    CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 103, METHOD_OUT_DIRECT, FILE_ANY_ACCESS)
+#define FSCTL_NETWORK_GET_CONNECTION_INFO       CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 104, METHOD_NEITHER, FILE_ANY_ACCESS)
+#define FSCTL_NETWORK_ENUMERATE_CONNECTIONS     CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 105, METHOD_NEITHER, FILE_ANY_ACCESS)
+#define FSCTL_NETWORK_DELETE_CONNECTION         CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 107, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_NETWORK_GET_STATISTICS            CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 116, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_NETWORK_SET_DOMAIN_NAME           CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 120, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_NETWORK_REMOTE_BOOT_INIT_SCRT     CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 250, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define FSCTL_PIPE_ASSIGN_EVENT         CTL_CODE(FILE_DEVICE_NAMED_PIPE, 0, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_PIPE_DISCONNECT           CTL_CODE(FILE_DEVICE_NAMED_PIPE, 1, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_PIPE_LISTEN               CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_PIPE_PEEK                 CTL_CODE(FILE_DEVICE_NAMED_PIPE, 3, METHOD_BUFFERED, FILE_READ_DATA)
+#define FSCTL_PIPE_QUERY_EVENT          CTL_CODE(FILE_DEVICE_NAMED_PIPE, 4, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_PIPE_TRANSCEIVE           CTL_CODE(FILE_DEVICE_NAMED_PIPE, 5, METHOD_NEITHER,  FILE_READ_DATA | FILE_WRITE_DATA)
+#define FSCTL_PIPE_WAIT                 CTL_CODE(FILE_DEVICE_NAMED_PIPE, 6, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_PIPE_IMPERSONATE          CTL_CODE(FILE_DEVICE_NAMED_PIPE, 7, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_PIPE_SET_CLIENT_PROCESS   CTL_CODE(FILE_DEVICE_NAMED_PIPE, 8, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_PIPE_QUERY_CLIENT_PROCESS CTL_CODE(FILE_DEVICE_NAMED_PIPE, 9, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_PIPE_INTERNAL_READ        CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2045, METHOD_BUFFERED, FILE_READ_DATA)
+#define FSCTL_PIPE_INTERNAL_WRITE       CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2046, METHOD_BUFFERED, FILE_WRITE_DATA)
+#define FSCTL_PIPE_INTERNAL_TRANSCEIVE  CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2047, METHOD_NEITHER, FILE_READ_DATA | FILE_WRITE_DATA)
+#define FSCTL_PIPE_INTERNAL_READ_OVFLOW CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2048, METHOD_BUFFERED, FILE_READ_DATA)
+
+#define IOCTL_REDIR_QUERY_PATH          CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 99, METHOD_NEITHER, FILE_ANY_ACCESS)
+
+typedef PVOID PEJOB;
+typedef PVOID OPLOCK, *POPLOCK;
+typedef PVOID PWOW64_PROCESS;
+
+typedef struct _CACHE_MANAGER_CALLBACKS         *PCACHE_MANAGER_CALLBACKS;
+typedef struct _EPROCESS_QUOTA_BLOCK            *PEPROCESS_QUOTA_BLOCK;
+typedef struct _FILE_GET_QUOTA_INFORMATION      *PFILE_GET_QUOTA_INFORMATION;
+typedef struct _HANDLE_TABLE                    *PHANDLE_TABLE;
+typedef struct _KEVENT_PAIR                     *PKEVENT_PAIR;
+typedef struct _KPROCESS                        *PKPROCESS;
+typedef struct _KQUEUE                          *PKQUEUE;
+typedef struct _KTRAP_FRAME                     *PKTRAP_FRAME;
+typedef struct _MAILSLOT_CREATE_PARAMETERS      *PMAILSLOT_CREATE_PARAMETERS;
+typedef struct _MMWSL                           *PMMWSL;
+typedef struct _NAMED_PIPE_CREATE_PARAMETERS    *PNAMED_PIPE_CREATE_PARAMETERS;
+typedef struct _OBJECT_DIRECTORY                *POBJECT_DIRECTORY;
+typedef struct _PAGEFAULT_HISTORY               *PPAGEFAULT_HISTORY;
+typedef struct _PS_IMPERSONATION_INFORMATION    *PPS_IMPERSONATION_INFORMATION;
+typedef struct _SECTION_OBJECT                  *PSECTION_OBJECT;
+typedef struct _SHARED_CACHE_MAP                *PSHARED_CACHE_MAP;
+typedef struct _TERMINATION_PORT                *PTERMINATION_PORT;
+typedef struct _VACB                            *PVACB;
+typedef struct _VAD_HEADER                      *PVAD_HEADER;
+
+typedef struct _NOTIFY_SYNC
+{
+    ULONG Unknown0;
+    ULONG Unknown1;
+    ULONG Unknown2;
+    USHORT Unknown3;
+    USHORT Unknown4;
+    ULONG Unknown5;
+    ULONG Unknown6;
+    ULONG Unknown7;
+    ULONG Unknown8;
+    ULONG Unknown9;
+    ULONG Unknown10;
+} NOTIFY_SYNC, * PNOTIFY_SYNC;
+
+typedef enum _FAST_IO_POSSIBLE {
+    FastIoIsNotPossible,
+    FastIoIsPossible,
+    FastIoIsQuestionable
+} FAST_IO_POSSIBLE;
+
+typedef enum _FILE_STORAGE_TYPE {
+    StorageTypeDefault = 1,
+    StorageTypeDirectory,
+    StorageTypeFile,
+    StorageTypeJunctionPoint,
+    StorageTypeCatalog,
+    StorageTypeStructuredStorage,
+    StorageTypeEmbedding,
+    StorageTypeStream
+} FILE_STORAGE_TYPE;
+
+typedef enum _IO_COMPLETION_INFORMATION_CLASS {
+    IoCompletionBasicInformation
+} IO_COMPLETION_INFORMATION_CLASS;
+
+typedef enum _OBJECT_INFO_CLASS {
+    ObjectBasicInfo,
+    ObjectNameInfo,
+    ObjectTypeInfo,
+    ObjectAllTypesInfo,
+    ObjectProtectionInfo
+} OBJECT_INFO_CLASS;
+
+typedef struct _HARDWARE_PTE_X86 {
+    ULONG Valid             : 1;
+    ULONG Write             : 1;
+    ULONG Owner             : 1;
+    ULONG WriteThrough      : 1;
+    ULONG CacheDisable      : 1;
+    ULONG Accessed          : 1;
+    ULONG Dirty             : 1;
+    ULONG LargePage         : 1;
+    ULONG Global            : 1;
+    ULONG CopyOnWrite       : 1;
+    ULONG Prototype         : 1;
+    ULONG reserved          : 1;
+    ULONG PageFrameNumber   : 20;
+} HARDWARE_PTE_X86, *PHARDWARE_PTE_X86;
+
+typedef struct _KAPC_STATE {
+    LIST_ENTRY  ApcListHead[2];
+    PKPROCESS   Process;
+    BOOLEAN     KernelApcInProgress;
+    BOOLEAN     KernelApcPending;
+    BOOLEAN     UserApcPending;
+} KAPC_STATE, *PKAPC_STATE;
+
+typedef struct _KGDTENTRY {
+    USHORT LimitLow;
+    USHORT BaseLow;
+    union {
+        struct {
+            UCHAR BaseMid;
+            UCHAR Flags1;
+            UCHAR Flags2;
+            UCHAR BaseHi;
+        } Bytes;
+        struct {
+            ULONG BaseMid       : 8;
+            ULONG Type          : 5;
+            ULONG Dpl           : 2;
+            ULONG Pres          : 1;
+            ULONG LimitHi       : 4;
+            ULONG Sys           : 1;
+            ULONG Reserved_0    : 1;
+            ULONG Default_Big   : 1;
+            ULONG Granularity   : 1;
+            ULONG BaseHi        : 8;
+        } Bits;
+    } HighWord;
+} KGDTENTRY, *PKGDTENTRY;
+
+typedef struct _KIDTENTRY {
+    USHORT Offset;
+    USHORT Selector;
+    USHORT Access;
+    USHORT ExtendedOffset;
+} KIDTENTRY, *PKIDTENTRY;
+
+#if (VER_PRODUCTBUILD >= 2600)
+
+typedef struct _MMSUPPORT_FLAGS {
+    ULONG SessionSpace              : 1;
+    ULONG BeingTrimmed              : 1;
+    ULONG SessionLeader             : 1;
+    ULONG TrimHard                  : 1;
+    ULONG WorkingSetHard            : 1;
+    ULONG AddressSpaceBeingDeleted  : 1;
+    ULONG Available                 : 10;
+    ULONG AllowWorkingSetAdjustment : 8;
+    ULONG MemoryPriority            : 8;
+} MMSUPPORT_FLAGS, *PMMSUPPORT_FLAGS;
+
+#else
+
+typedef struct _MMSUPPORT_FLAGS {
+    ULONG SessionSpace      : 1;
+    ULONG BeingTrimmed      : 1;
+    ULONG ProcessInSession  : 1;
+    ULONG SessionLeader     : 1;
+    ULONG TrimHard          : 1;
+    ULONG WorkingSetHard    : 1;
+    ULONG WriteWatch        : 1;
+    ULONG Filler            : 25;
+} MMSUPPORT_FLAGS, *PMMSUPPORT_FLAGS;
+
+#endif
+
+#if (VER_PRODUCTBUILD >= 2600)
+
+typedef struct _MMSUPPORT {
+    LARGE_INTEGER   LastTrimTime;
+    MMSUPPORT_FLAGS Flags;
+    ULONG           PageFaultCount;
+    ULONG           PeakWorkingSetSize;
+    ULONG           WorkingSetSize;
+    ULONG           MinimumWorkingSetSize;
+    ULONG           MaximumWorkingSetSize;
+    PMMWSL          VmWorkingSetList;
+    LIST_ENTRY      WorkingSetExpansionLinks;
+    ULONG           Claim;
+    ULONG           NextEstimationSlot;
+    ULONG           NextAgingSlot;
+    ULONG           EstimatedAvailable;
+    ULONG           GrowthSinceLastEstimate;
+} MMSUPPORT, *PMMSUPPORT;
+
+#else
+
+typedef struct _MMSUPPORT {
+    LARGE_INTEGER   LastTrimTime;
+    ULONG           LastTrimFaultCount;
+    ULONG           PageFaultCount;
+    ULONG           PeakWorkingSetSize;
+    ULONG           WorkingSetSize;
+    ULONG           MinimumWorkingSetSize;
+    ULONG           MaximumWorkingSetSize;
+    PMMWSL          VmWorkingSetList;
+    LIST_ENTRY      WorkingSetExpansionLinks;
+    BOOLEAN         AllowWorkingSetAdjustment;
+    BOOLEAN         AddressSpaceBeingDeleted;
+    UCHAR           ForegroundSwitchCount;
+    UCHAR           MemoryPriority;
+#if (VER_PRODUCTBUILD >= 2195)
+    union {
+        ULONG           LongFlags;
+        MMSUPPORT_FLAGS Flags;
+    } u;
+    ULONG           Claim;
+    ULONG           NextEstimationSlot;
+    ULONG           NextAgingSlot;
+    ULONG           EstimatedAvailable;
+    ULONG           GrowthSinceLastEstimate;
+#endif /* (VER_PRODUCTBUILD >= 2195) */
+} MMSUPPORT, *PMMSUPPORT;
+
+#endif
+
+typedef struct _SE_AUDIT_PROCESS_CREATION_INFO {
+    POBJECT_NAME_INFORMATION ImageFileName;
+} SE_AUDIT_PROCESS_CREATION_INFO, *PSE_AUDIT_PROCESS_CREATION_INFO;
+
+typedef struct _BITMAP_RANGE {
+    LIST_ENTRY      Links;
+    LARGE_INTEGER   BasePage;
+    ULONG           FirstDirtyPage;
+    ULONG           LastDirtyPage;
+    ULONG           DirtyPages;
+    PULONG          Bitmap;
+} BITMAP_RANGE, *PBITMAP_RANGE;
+
+typedef struct _CACHE_UNINITIALIZE_EVENT {
+    struct _CACHE_UNINITIALIZE_EVENT    *Next;
+    KEVENT                              Event;
+} CACHE_UNINITIALIZE_EVENT, *PCACHE_UNINITIALIZE_EVENT;
+
+typedef struct _CC_FILE_SIZES {
+    LARGE_INTEGER AllocationSize;
+    LARGE_INTEGER FileSize;
+    LARGE_INTEGER ValidDataLength;
+} CC_FILE_SIZES, *PCC_FILE_SIZES;
+
+typedef struct _COMPRESSED_DATA_INFO {
+    USHORT  CompressionFormatAndEngine;
+    UCHAR   CompressionUnitShift;
+    UCHAR   ChunkShift;
+    UCHAR   ClusterShift;
+    UCHAR   Reserved;
+    USHORT  NumberOfChunks;
+    ULONG   CompressedChunkSizes[ANYSIZE_ARRAY];
+} COMPRESSED_DATA_INFO, *PCOMPRESSED_DATA_INFO;
+
+typedef struct _DEVICE_MAP {
+    POBJECT_DIRECTORY   DosDevicesDirectory;
+    POBJECT_DIRECTORY   GlobalDosDevicesDirectory;
+    ULONG               ReferenceCount;
+    ULONG               DriveMap;
+    UCHAR               DriveType[32];
+} DEVICE_MAP, *PDEVICE_MAP;
+
+#if (VER_PRODUCTBUILD >= 2600)
+
+typedef struct _EX_FAST_REF {
+    _ANONYMOUS_UNION union {
+        PVOID Object;
+        ULONG RefCnt : 3;
+        ULONG Value;
+    } DUMMYUNIONNAME;
+} EX_FAST_REF, *PEX_FAST_REF;
+
+typedef struct _EX_PUSH_LOCK {
+    _ANONYMOUS_UNION union {
+        _ANONYMOUS_STRUCT struct {
+            ULONG   Waiting     : 1;
+            ULONG   Exclusive   : 1;
+            ULONG   Shared      : 30;
+        } DUMMYSTRUCTNAME;
+        ULONG   Value;
+        PVOID   Ptr;
+    } DUMMYUNIONNAME;
+} EX_PUSH_LOCK, *PEX_PUSH_LOCK;
+
+typedef struct _EX_RUNDOWN_REF {
+    _ANONYMOUS_UNION union {
+        ULONG Count;
+        PVOID Ptr;
+    } DUMMYUNIONNAME;
+} EX_RUNDOWN_REF, *PEX_RUNDOWN_REF;
+
+#endif
+
+typedef struct _EPROCESS_QUOTA_ENTRY {
+    ULONG Usage;
+    ULONG Limit;
+    ULONG Peak;
+    ULONG Return;
+} EPROCESS_QUOTA_ENTRY, *PEPROCESS_QUOTA_ENTRY;
+
+typedef struct _EPROCESS_QUOTA_BLOCK {
+    EPROCESS_QUOTA_ENTRY    QuotaEntry[3];
+    LIST_ENTRY              QuotaList;
+    ULONG                   ReferenceCount;
+    ULONG                   ProcessCount;
+} EPROCESS_QUOTA_BLOCK, *PEPROCESS_QUOTA_BLOCK;
+
+/*
+ * When needing these parameters cast your PIO_STACK_LOCATION to
+ * PEXTENDED_IO_STACK_LOCATION
+ */
+#if !defined(_ALPHA_) && !defined(_M_ALPHA)
+#include <pshpack4.h>
+#endif
+typedef struct _EXTENDED_IO_STACK_LOCATION {
+
+    /* Included for padding */
+    UCHAR MajorFunction;
+    UCHAR MinorFunction;
+    UCHAR Flags;
+    UCHAR Control;
+
+    union {
+
+       struct {
+          PIO_SECURITY_CONTEXT              SecurityContext;
+          ULONG                             Options;
+          USHORT                            Reserved;
+          USHORT                            ShareAccess;
+          PMAILSLOT_CREATE_PARAMETERS       Parameters;
+       } CreateMailslot;
+
+        struct {
+            PIO_SECURITY_CONTEXT            SecurityContext;
+            ULONG                           Options;
+            USHORT                          Reserved;
+            USHORT                          ShareAccess;
+            PNAMED_PIPE_CREATE_PARAMETERS   Parameters;
+        } CreatePipe;
+
+        struct {
+            ULONG                           OutputBufferLength;
+            ULONG                           InputBufferLength;
+            ULONG                           FsControlCode;
+            PVOID                           Type3InputBuffer;
+        } FileSystemControl;
+
+        struct {
+            PLARGE_INTEGER                  Length;
+            ULONG                           Key;
+            LARGE_INTEGER                   ByteOffset;
+        } LockControl;
+
+        struct {
+            ULONG                           Length;
+            ULONG                           CompletionFilter;
+        } NotifyDirectory;
+
+        struct {
+            ULONG                           Length;
+            PUNICODE_STRING                 FileName;
+            FILE_INFORMATION_CLASS          FileInformationClass;
+            ULONG                           FileIndex;
+        } QueryDirectory;
+
+        struct {
+            ULONG                           Length;
+            PVOID                           EaList;
+            ULONG                           EaListLength;
+            ULONG                           EaIndex;
+        } QueryEa;
+
+        struct {
+            ULONG                           Length;
+            PSID                            StartSid;
+            PFILE_GET_QUOTA_INFORMATION     SidList;
+            ULONG                           SidListLength;
+        } QueryQuota;
+
+        struct {
+            ULONG                           Length;
+        } SetEa;
+
+        struct {
+            ULONG                           Length;
+        } SetQuota;
+
+        struct {
+            ULONG                           Length;
+            FS_INFORMATION_CLASS            FsInformationClass;
+        } SetVolume;
+
+    } Parameters;
+    PDEVICE_OBJECT  DeviceObject;
+    PFILE_OBJECT  FileObject;
+    PIO_COMPLETION_ROUTINE  CompletionRoutine;
+    PVOID  Context;
+
+} EXTENDED_IO_STACK_LOCATION, *PEXTENDED_IO_STACK_LOCATION;
+#if !defined(_ALPHA_) && !defined(_M_ALPHA)
+#include <poppack.h>
+#endif
+
+typedef struct _FILE_ACCESS_INFORMATION {
+    ACCESS_MASK AccessFlags;
+} FILE_ACCESS_INFORMATION, *PFILE_ACCESS_INFORMATION;
+
+typedef struct _FILE_ALLOCATION_INFORMATION {
+    LARGE_INTEGER AllocationSize;
+} FILE_ALLOCATION_INFORMATION, *PFILE_ALLOCATION_INFORMATION;
+
+typedef struct _FILE_BOTH_DIR_INFORMATION {
+    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;
+    CCHAR           ShortNameLength;
+    WCHAR           ShortName[12];
+    WCHAR           FileName[1];
+} FILE_BOTH_DIR_INFORMATION, *PFILE_BOTH_DIR_INFORMATION;
+
+typedef struct _FILE_COMPLETION_INFORMATION {
+    HANDLE  Port;
+    ULONG   Key;
+} FILE_COMPLETION_INFORMATION, *PFILE_COMPLETION_INFORMATION;
+
+typedef struct _FILE_COMPRESSION_INFORMATION {
+    LARGE_INTEGER   CompressedFileSize;
+    USHORT          CompressionFormat;
+    UCHAR           CompressionUnitShift;
+    UCHAR           ChunkShift;
+    UCHAR           ClusterShift;
+    UCHAR           Reserved[3];
+} FILE_COMPRESSION_INFORMATION, *PFILE_COMPRESSION_INFORMATION;
+
+typedef struct _FILE_COPY_ON_WRITE_INFORMATION {
+    BOOLEAN ReplaceIfExists;
+    HANDLE  RootDirectory;
+    ULONG   FileNameLength;
+    WCHAR   FileName[1];
+} FILE_COPY_ON_WRITE_INFORMATION, *PFILE_COPY_ON_WRITE_INFORMATION;
+
+typedef struct _FILE_DIRECTORY_INFORMATION {
+    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;
+    WCHAR           FileName[1];
+} FILE_DIRECTORY_INFORMATION, *PFILE_DIRECTORY_INFORMATION;
+
+typedef struct _FILE_FULL_DIRECTORY_INFORMATION {
+		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[0];
+} FILE_FULL_DIRECTORY_INFORMATION, *PFILE_FULL_DIRECTORY_INFORMATION;
+
+typedef struct _FILE_BOTH_DIRECTORY_INFORMATION {
+		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;
+		CHAR          ShortNameLength;
+		WCHAR         ShortName[12];
+		WCHAR         FileName[0];
+} FILE_BOTH_DIRECTORY_INFORMATION, *PFILE_BOTH_DIRECTORY_INFORMATION;
+
+#if (VER_PRODUCTBUILD >= 2600)
+
+typedef struct _FILE_ID_FULL_DIRECTORY_INFORMATION {
+		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;
+		LARGE_INTEGER   FileId;
+		WCHAR           FileName[0];
+} FILE_ID_FULL_DIRECTORY_INFORMATION, *PFILE_ID_FULL_DIRECTORY_INFORMATION;
+
+typedef struct _FILE_ID_BOTH_DIRECTORY_INFORMATION {
+		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;
+		CHAR          ShortNameLength;
+		WCHAR         ShortName[12];
+		LARGE_INTEGER FileId;
+		WCHAR         FileName[0];
+} FILE_ID_BOTH_DIRECTORY_INFORMATION, *PFILE_ID_BOTH_DIRECTORY_INFORMATION;
+
+#endif
+
+typedef struct _FILE_EA_INFORMATION {
+    ULONG EaSize;
+} FILE_EA_INFORMATION, *PFILE_EA_INFORMATION;
+
+typedef struct _FILE_FS_ATTRIBUTE_INFORMATION {
+    ULONG   FileSystemAttributes;
+    ULONG   MaximumComponentNameLength;
+    ULONG   FileSystemNameLength;
+    WCHAR   FileSystemName[1];
+} FILE_FS_ATTRIBUTE_INFORMATION, *PFILE_FS_ATTRIBUTE_INFORMATION;
+
+typedef struct _FILE_FS_CONTROL_INFORMATION {
+    LARGE_INTEGER   FreeSpaceStartFiltering;
+    LARGE_INTEGER   FreeSpaceThreshold;
+    LARGE_INTEGER   FreeSpaceStopFiltering;
+    LARGE_INTEGER   DefaultQuotaThreshold;
+    LARGE_INTEGER   DefaultQuotaLimit;
+    ULONG           FileSystemControlFlags;
+} FILE_FS_CONTROL_INFORMATION, *PFILE_FS_CONTROL_INFORMATION;
+
+typedef struct _FILE_FS_FULL_SIZE_INFORMATION {
+    LARGE_INTEGER   TotalAllocationUnits;
+    LARGE_INTEGER   CallerAvailableAllocationUnits;
+    LARGE_INTEGER   ActualAvailableAllocationUnits;
+    ULONG           SectorsPerAllocationUnit;
+    ULONG           BytesPerSector;
+} FILE_FS_FULL_SIZE_INFORMATION, *PFILE_FS_FULL_SIZE_INFORMATION;
+
+typedef struct _FILE_FS_LABEL_INFORMATION {
+    ULONG VolumeLabelLength;
+    WCHAR VolumeLabel[1];
+} FILE_FS_LABEL_INFORMATION, *PFILE_FS_LABEL_INFORMATION;
+
+#if (VER_PRODUCTBUILD >= 2195)
+
+typedef struct _FILE_FS_OBJECT_ID_INFORMATION {
+    UCHAR ObjectId[16];
+    UCHAR ExtendedInfo[48];
+} FILE_FS_OBJECT_ID_INFORMATION, *PFILE_FS_OBJECT_ID_INFORMATION;
+
+#endif /* (VER_PRODUCTBUILD >= 2195) */
+
+typedef struct _FILE_FS_SIZE_INFORMATION {
+    LARGE_INTEGER   TotalAllocationUnits;
+    LARGE_INTEGER   AvailableAllocationUnits;
+    ULONG           SectorsPerAllocationUnit;
+    ULONG           BytesPerSector;
+} FILE_FS_SIZE_INFORMATION, *PFILE_FS_SIZE_INFORMATION;
+
+typedef struct _FILE_FS_VOLUME_INFORMATION {
+    LARGE_INTEGER   VolumeCreationTime;
+    ULONG           VolumeSerialNumber;
+    ULONG           VolumeLabelLength;
+    BOOLEAN         SupportsObjects;
+    WCHAR           VolumeLabel[1];
+} FILE_FS_VOLUME_INFORMATION, *PFILE_FS_VOLUME_INFORMATION;
+
+typedef struct _FILE_FULL_DIR_INFORMATION {
+    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_INFORMATION, *PFILE_FULL_DIR_INFORMATION;
+
+typedef struct _FILE_GET_EA_INFORMATION {
+    ULONG   NextEntryOffset;
+    UCHAR   EaNameLength;
+    CHAR    EaName[1];
+} FILE_GET_EA_INFORMATION, *PFILE_GET_EA_INFORMATION;
+
+typedef struct _FILE_GET_QUOTA_INFORMATION {
+    ULONG   NextEntryOffset;
+    ULONG   SidLength;
+    SID     Sid;
+} FILE_GET_QUOTA_INFORMATION, *PFILE_GET_QUOTA_INFORMATION;
+
+typedef struct _FILE_INTERNAL_INFORMATION {
+    LARGE_INTEGER IndexNumber;
+} FILE_INTERNAL_INFORMATION, *PFILE_INTERNAL_INFORMATION;
+
+typedef struct _FILE_LINK_INFORMATION {
+    BOOLEAN ReplaceIfExists;
+    HANDLE  RootDirectory;
+    ULONG   FileNameLength;
+    WCHAR   FileName[1];
+} FILE_LINK_INFORMATION, *PFILE_LINK_INFORMATION;
+
+typedef struct _FILE_LOCK_INFO {
+    LARGE_INTEGER   StartingByte;
+    LARGE_INTEGER   Length;
+    BOOLEAN         ExclusiveLock;
+    ULONG           Key;
+    PFILE_OBJECT    FileObject;
+    PEPROCESS       Process;
+    LARGE_INTEGER   EndingByte;
+} FILE_LOCK_INFO, *PFILE_LOCK_INFO;
+
+/* raw internal file lock struct returned from FsRtlGetNextFileLock */
+typedef struct _FILE_SHARED_LOCK_ENTRY {
+    PVOID           Unknown1;
+    PVOID           Unknown2;
+    FILE_LOCK_INFO  FileLock;
+} FILE_SHARED_LOCK_ENTRY, *PFILE_SHARED_LOCK_ENTRY;
+
+/* raw internal file lock struct returned from FsRtlGetNextFileLock */
+typedef struct _FILE_EXCLUSIVE_LOCK_ENTRY {
+    LIST_ENTRY      ListEntry;
+    PVOID           Unknown1;
+    PVOID           Unknown2;
+    FILE_LOCK_INFO  FileLock;
+} FILE_EXCLUSIVE_LOCK_ENTRY, *PFILE_EXCLUSIVE_LOCK_ENTRY;
+
+typedef NTSTATUS (*PCOMPLETE_LOCK_IRP_ROUTINE) (
+  /*IN*/ PVOID    Context,
+  /*IN*/ PIRP     Irp
+);
+
+typedef VOID (NTAPI *PUNLOCK_ROUTINE) (
+  /*IN*/ PVOID            Context,
+  /*IN*/ PFILE_LOCK_INFO  FileLockInfo
+);
+
+typedef struct _FILE_LOCK {
+    PCOMPLETE_LOCK_IRP_ROUTINE  CompleteLockIrpRoutine;
+    PUNLOCK_ROUTINE             UnlockRoutine;
+    BOOLEAN                     FastIoIsQuestionable;
+    BOOLEAN                     Pad[3];
+    PVOID                       LockInformation;
+    FILE_LOCK_INFO              LastReturnedLockInfo;
+    PVOID                       LastReturnedLock;
+} FILE_LOCK, *PFILE_LOCK;
+
+typedef struct _FILE_MAILSLOT_PEEK_BUFFER {
+    ULONG ReadDataAvailable;
+    ULONG NumberOfMessages;
+    ULONG MessageLength;
+} FILE_MAILSLOT_PEEK_BUFFER, *PFILE_MAILSLOT_PEEK_BUFFER;
+
+typedef struct _FILE_MAILSLOT_QUERY_INFORMATION {
+    ULONG           MaximumMessageSize;
+    ULONG           MailslotQuota;
+    ULONG           NextMessageSize;
+    ULONG           MessagesAvailable;
+    LARGE_INTEGER   ReadTimeout;
+} FILE_MAILSLOT_QUERY_INFORMATION, *PFILE_MAILSLOT_QUERY_INFORMATION;
+
+typedef struct _FILE_MAILSLOT_SET_INFORMATION {
+    LARGE_INTEGER ReadTimeout;
+} FILE_MAILSLOT_SET_INFORMATION, *PFILE_MAILSLOT_SET_INFORMATION;
+
+typedef struct _FILE_MODE_INFORMATION {
+    ULONG Mode;
+} FILE_MODE_INFORMATION, *PFILE_MODE_INFORMATION;
+
+typedef struct _FILE_ALL_INFORMATION {
+    FILE_BASIC_INFORMATION      BasicInformation;
+    FILE_STANDARD_INFORMATION   StandardInformation;
+    FILE_INTERNAL_INFORMATION   InternalInformation;
+    FILE_EA_INFORMATION         EaInformation;
+    FILE_ACCESS_INFORMATION     AccessInformation;
+    FILE_POSITION_INFORMATION   PositionInformation;
+    FILE_MODE_INFORMATION       ModeInformation;
+    FILE_ALIGNMENT_INFORMATION  AlignmentInformation;
+    FILE_NAME_INFORMATION       NameInformation;
+} FILE_ALL_INFORMATION, *PFILE_ALL_INFORMATION;
+
+typedef struct _FILE_NAMES_INFORMATION {
+    ULONG NextEntryOffset;
+    ULONG FileIndex;
+    ULONG FileNameLength;
+    WCHAR FileName[1];
+} FILE_NAMES_INFORMATION, *PFILE_NAMES_INFORMATION;
+
+typedef struct _FILE_OBJECTID_INFORMATION {
+    LONGLONG        FileReference;
+    UCHAR           ObjectId[16];
+    _ANONYMOUS_UNION union {
+        struct {
+            UCHAR   BirthVolumeId[16];
+            UCHAR   BirthObjectId[16];
+            UCHAR   DomainId[16];
+        } ;
+        UCHAR       ExtendedInfo[48];
+    } DUMMYUNIONNAME;
+} FILE_OBJECTID_INFORMATION, *PFILE_OBJECTID_INFORMATION;
+
+typedef struct _FILE_OLE_CLASSID_INFORMATION {
+    GUID ClassId;
+} FILE_OLE_CLASSID_INFORMATION, *PFILE_OLE_CLASSID_INFORMATION;
+
+typedef struct _FILE_OLE_ALL_INFORMATION {
+    FILE_BASIC_INFORMATION          BasicInformation;
+    FILE_STANDARD_INFORMATION       StandardInformation;
+    FILE_INTERNAL_INFORMATION       InternalInformation;
+    FILE_EA_INFORMATION             EaInformation;
+    FILE_ACCESS_INFORMATION         AccessInformation;
+    FILE_POSITION_INFORMATION       PositionInformation;
+    FILE_MODE_INFORMATION           ModeInformation;
+    FILE_ALIGNMENT_INFORMATION      AlignmentInformation;
+    USN                             LastChangeUsn;
+    USN                             ReplicationUsn;
+    LARGE_INTEGER                   SecurityChangeTime;
+    FILE_OLE_CLASSID_INFORMATION    OleClassIdInformation;
+    FILE_OBJECTID_INFORMATION       ObjectIdInformation;
+    FILE_STORAGE_TYPE               StorageType;
+    ULONG                           OleStateBits;
+    ULONG                           OleId;
+    ULONG                           NumberOfStreamReferences;
+    ULONG                           StreamIndex;
+    ULONG                           SecurityId;
+    BOOLEAN                         ContentIndexDisable;
+    BOOLEAN                         InheritContentIndexDisable;
+    FILE_NAME_INFORMATION           NameInformation;
+} FILE_OLE_ALL_INFORMATION, *PFILE_OLE_ALL_INFORMATION;
+
+typedef struct _FILE_OLE_DIR_INFORMATION {
+    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;
+    FILE_STORAGE_TYPE   StorageType;
+    GUID                OleClassId;
+    ULONG               OleStateBits;
+    BOOLEAN             ContentIndexDisable;
+    BOOLEAN             InheritContentIndexDisable;
+    WCHAR               FileName[1];
+} FILE_OLE_DIR_INFORMATION, *PFILE_OLE_DIR_INFORMATION;
+
+typedef struct _FILE_OLE_INFORMATION {
+    LARGE_INTEGER                   SecurityChangeTime;
+    FILE_OLE_CLASSID_INFORMATION    OleClassIdInformation;
+    FILE_OBJECTID_INFORMATION       ObjectIdInformation;
+    FILE_STORAGE_TYPE               StorageType;
+    ULONG                           OleStateBits;
+    BOOLEAN                         ContentIndexDisable;
+    BOOLEAN                         InheritContentIndexDisable;
+} FILE_OLE_INFORMATION, *PFILE_OLE_INFORMATION;
+
+typedef struct _FILE_OLE_STATE_BITS_INFORMATION {
+    ULONG StateBits;
+    ULONG StateBitsMask;
+} FILE_OLE_STATE_BITS_INFORMATION, *PFILE_OLE_STATE_BITS_INFORMATION;
+
+typedef struct _FILE_PIPE_ASSIGN_EVENT_BUFFER {
+    HANDLE  EventHandle;
+    ULONG   KeyValue;
+} FILE_PIPE_ASSIGN_EVENT_BUFFER, *PFILE_PIPE_ASSIGN_EVENT_BUFFER;
+
+typedef struct _FILE_PIPE_CLIENT_PROCESS_BUFFER {
+    PVOID ClientSession;
+    PVOID ClientProcess;
+} FILE_PIPE_CLIENT_PROCESS_BUFFER, *PFILE_PIPE_CLIENT_PROCESS_BUFFER;
+
+typedef struct _FILE_PIPE_EVENT_BUFFER {
+    ULONG NamedPipeState;
+    ULONG EntryType;
+    ULONG ByteCount;
+    ULONG KeyValue;
+    ULONG NumberRequests;
+} FILE_PIPE_EVENT_BUFFER, *PFILE_PIPE_EVENT_BUFFER;
+
+typedef struct _FILE_PIPE_INFORMATION {
+    ULONG ReadMode;
+    ULONG CompletionMode;
+} FILE_PIPE_INFORMATION, *PFILE_PIPE_INFORMATION;
+
+typedef struct _FILE_PIPE_LOCAL_INFORMATION {
+    ULONG NamedPipeType;
+    ULONG NamedPipeConfiguration;
+    ULONG MaximumInstances;
+    ULONG CurrentInstances;
+    ULONG InboundQuota;
+    ULONG ReadDataAvailable;
+    ULONG OutboundQuota;
+    ULONG WriteQuotaAvailable;
+    ULONG NamedPipeState;
+    ULONG NamedPipeEnd;
+} FILE_PIPE_LOCAL_INFORMATION, *PFILE_PIPE_LOCAL_INFORMATION;
+
+typedef struct _FILE_PIPE_REMOTE_INFORMATION {
+    LARGE_INTEGER   CollectDataTime;
+    ULONG           MaximumCollectionCount;
+} FILE_PIPE_REMOTE_INFORMATION, *PFILE_PIPE_REMOTE_INFORMATION;
+
+typedef struct _FILE_PIPE_WAIT_FOR_BUFFER {
+    LARGE_INTEGER   Timeout;
+    ULONG           NameLength;
+    BOOLEAN         TimeoutSpecified;
+    WCHAR           Name[1];
+} FILE_PIPE_WAIT_FOR_BUFFER, *PFILE_PIPE_WAIT_FOR_BUFFER;
+
+typedef struct _FILE_QUOTA_INFORMATION {
+    ULONG           NextEntryOffset;
+    ULONG           SidLength;
+    LARGE_INTEGER   ChangeTime;
+    LARGE_INTEGER   QuotaUsed;
+    LARGE_INTEGER   QuotaThreshold;
+    LARGE_INTEGER   QuotaLimit;
+    SID             Sid;
+} FILE_QUOTA_INFORMATION, *PFILE_QUOTA_INFORMATION;
+
+typedef struct _FILE_RENAME_INFORMATION {
+    BOOLEAN ReplaceIfExists;
+    HANDLE  RootDirectory;
+    ULONG   FileNameLength;
+    WCHAR   FileName[1];
+} FILE_RENAME_INFORMATION, *PFILE_RENAME_INFORMATION;
+
+typedef struct _FILE_STREAM_INFORMATION {
+    ULONG           NextEntryOffset;
+    ULONG           StreamNameLength;
+    LARGE_INTEGER   StreamSize;
+    LARGE_INTEGER   StreamAllocationSize;
+    WCHAR           StreamName[1];
+} FILE_STREAM_INFORMATION, *PFILE_STREAM_INFORMATION;
+
+typedef struct _FILE_TRACKING_INFORMATION {
+    HANDLE  DestinationFile;
+    ULONG   ObjectInformationLength;
+    CHAR    ObjectInformation[1];
+} FILE_TRACKING_INFORMATION, *PFILE_TRACKING_INFORMATION;
+
+typedef struct _FSRTL_COMMON_FCB_HEADER {
+    CSHORT          NodeTypeCode;
+    CSHORT          NodeByteSize;
+    UCHAR           Flags;
+    UCHAR           IsFastIoPossible;
+#if (VER_PRODUCTBUILD >= 1381)
+    UCHAR           Flags2;
+    UCHAR           Reserved;
+#endif /* (VER_PRODUCTBUILD >= 1381) */
+    PERESOURCE      Resource;
+    PERESOURCE      PagingIoResource;
+    LARGE_INTEGER   AllocationSize;
+    LARGE_INTEGER   FileSize;
+    LARGE_INTEGER   ValidDataLength;
+} FSRTL_COMMON_FCB_HEADER, *PFSRTL_COMMON_FCB_HEADER;
+
+typedef struct _GENERATE_NAME_CONTEXT {
+    USHORT  Checksum;
+    BOOLEAN CheckSumInserted;
+    UCHAR   NameLength;
+    WCHAR   NameBuffer[8];
+    ULONG   ExtensionLength;
+    WCHAR   ExtensionBuffer[4];
+    ULONG   LastIndexValue;
+} GENERATE_NAME_CONTEXT, *PGENERATE_NAME_CONTEXT;
+
+typedef struct _HANDLE_TABLE_ENTRY {
+    PVOID   Object;
+    ULONG   ObjectAttributes;
+    ULONG   GrantedAccess;
+    USHORT  GrantedAccessIndex;
+    USHORT  CreatorBackTraceIndex;
+    ULONG   NextFreeTableEntry;
+} HANDLE_TABLE_ENTRY, *PHANDLE_TABLE_ENTRY;
+
+typedef struct _MAPPING_PAIR {
+    ULONGLONG Vcn;
+    ULONGLONG Lcn;
+} MAPPING_PAIR, *PMAPPING_PAIR;
+
+typedef struct _GET_RETRIEVAL_DESCRIPTOR {
+    ULONG           NumberOfPairs;
+    ULONGLONG       StartVcn;
+    MAPPING_PAIR    Pair[1];
+} GET_RETRIEVAL_DESCRIPTOR, *PGET_RETRIEVAL_DESCRIPTOR;
+
+typedef struct _IO_CLIENT_EXTENSION {
+    struct _IO_CLIENT_EXTENSION *NextExtension;
+    PVOID                       ClientIdentificationAddress;
+} IO_CLIENT_EXTENSION, *PIO_CLIENT_EXTENSION;
+
+typedef struct _IO_COMPLETION_BASIC_INFORMATION {
+    LONG Depth;
+} IO_COMPLETION_BASIC_INFORMATION, *PIO_COMPLETION_BASIC_INFORMATION;
+
+typedef struct _KEVENT_PAIR {
+    USHORT Type;
+    USHORT Size;
+    KEVENT Event1;
+    KEVENT Event2;
+} KEVENT_PAIR, *PKEVENT_PAIR;
+
+typedef struct _KQUEUE {
+    DISPATCHER_HEADER   Header;
+    LIST_ENTRY          EntryListHead;
+    ULONG               CurrentCount;
+    ULONG               MaximumCount;
+    LIST_ENTRY          ThreadListHead;
+} KQUEUE, *PKQUEUE, *RESTRICTED_POINTER PRKQUEUE;
+
+typedef struct _MAILSLOT_CREATE_PARAMETERS {
+    ULONG           MailslotQuota;
+    ULONG           MaximumMessageSize;
+    LARGE_INTEGER   ReadTimeout;
+    BOOLEAN         TimeoutSpecified;
+} MAILSLOT_CREATE_PARAMETERS, *PMAILSLOT_CREATE_PARAMETERS;
+
+typedef struct _MBCB {
+    CSHORT          NodeTypeCode;
+    CSHORT          NodeIsInZone;
+    ULONG           PagesToWrite;
+    ULONG           DirtyPages;
+    ULONG           Reserved;
+    LIST_ENTRY      BitmapRanges;
+    LONGLONG        ResumeWritePage;
+    BITMAP_RANGE    BitmapRange1;
+    BITMAP_RANGE    BitmapRange2;
+    BITMAP_RANGE    BitmapRange3;
+} MBCB, *PMBCB;
+
+typedef struct _MOVEFILE_DESCRIPTOR {
+     HANDLE         FileHandle;
+     ULONG          Reserved;
+     LARGE_INTEGER  StartVcn;
+     LARGE_INTEGER  TargetLcn;
+     ULONG          NumVcns;
+     ULONG          Reserved1;
+} MOVEFILE_DESCRIPTOR, *PMOVEFILE_DESCRIPTOR;
+
+typedef struct _NAMED_PIPE_CREATE_PARAMETERS {
+    ULONG           NamedPipeType;
+    ULONG           ReadMode;
+    ULONG           CompletionMode;
+    ULONG           MaximumInstances;
+    ULONG           InboundQuota;
+    ULONG           OutboundQuota;
+    LARGE_INTEGER   DefaultTimeout;
+    BOOLEAN         TimeoutSpecified;
+} NAMED_PIPE_CREATE_PARAMETERS, *PNAMED_PIPE_CREATE_PARAMETERS;
+
+typedef struct _OBJECT_BASIC_INFO {
+    ULONG           Attributes;
+    ACCESS_MASK     GrantedAccess;
+    ULONG           HandleCount;
+    ULONG           ReferenceCount;
+    ULONG           PagedPoolUsage;
+    ULONG           NonPagedPoolUsage;
+    ULONG           Reserved[3];
+    ULONG           NameInformationLength;
+    ULONG           TypeInformationLength;
+    ULONG           SecurityDescriptorLength;
+    LARGE_INTEGER   CreateTime;
+} OBJECT_BASIC_INFO, *POBJECT_BASIC_INFO;
+
+typedef struct _OBJECT_HANDLE_ATTRIBUTE_INFO {
+    BOOLEAN Inherit;
+    BOOLEAN ProtectFromClose;
+} OBJECT_HANDLE_ATTRIBUTE_INFO, *POBJECT_HANDLE_ATTRIBUTE_INFO;
+
+typedef struct _OBJECT_NAME_INFO {
+    UNICODE_STRING  ObjectName;
+    WCHAR           ObjectNameBuffer[1];
+} OBJECT_NAME_INFO, *POBJECT_NAME_INFO;
+
+typedef struct _OBJECT_PROTECTION_INFO {
+    BOOLEAN Inherit;
+    BOOLEAN ProtectHandle;
+} OBJECT_PROTECTION_INFO, *POBJECT_PROTECTION_INFO;
+
+typedef struct _OBJECT_TYPE_INFO {
+    UNICODE_STRING  ObjectTypeName;
+    UCHAR           Unknown[0x58];
+    WCHAR           ObjectTypeNameBuffer[1];
+} OBJECT_TYPE_INFO, *POBJECT_TYPE_INFO;
+
+typedef struct _OBJECT_ALL_TYPES_INFO {
+    ULONG               NumberOfObjectTypes;
+    OBJECT_TYPE_INFO    ObjectsTypeInfo[1];
+} OBJECT_ALL_TYPES_INFO, *POBJECT_ALL_TYPES_INFO;
+
+typedef struct _PAGEFAULT_HISTORY {
+    ULONG                           CurrentIndex;
+    ULONG                           MaxIndex;
+    KSPIN_LOCK                      SpinLock;
+    PVOID                           Reserved;
+    PROCESS_WS_WATCH_INFORMATION    WatchInfo[1];
+} PAGEFAULT_HISTORY, *PPAGEFAULT_HISTORY;
+
+typedef struct _PATHNAME_BUFFER {
+    ULONG PathNameLength;
+    WCHAR Name[1];
+} PATHNAME_BUFFER, *PPATHNAME_BUFFER;
+
+#if (VER_PRODUCTBUILD >= 2600)
+
+typedef struct _PRIVATE_CACHE_MAP_FLAGS {
+    ULONG DontUse           : 16;
+    ULONG ReadAheadActive   : 1;
+    ULONG ReadAheadEnabled  : 1;
+    ULONG Available         : 14;
+} PRIVATE_CACHE_MAP_FLAGS, *PPRIVATE_CACHE_MAP_FLAGS;
+
+typedef struct _PRIVATE_CACHE_MAP {
+    _ANONYMOUS_UNION union {
+        CSHORT                  NodeTypeCode;
+        PRIVATE_CACHE_MAP_FLAGS Flags;
+        ULONG                   UlongFlags;
+    } DUMMYUNIONNAME;
+    ULONG                       ReadAheadMask;
+    PFILE_OBJECT                FileObject;
+    LARGE_INTEGER               FileOffset1;
+    LARGE_INTEGER               BeyondLastByte1;
+    LARGE_INTEGER               FileOffset2;
+    LARGE_INTEGER               BeyondLastByte2;
+    LARGE_INTEGER               ReadAheadOffset[2];
+    ULONG                       ReadAheadLength[2];
+    KSPIN_LOCK                  ReadAheadSpinLock;
+    LIST_ENTRY                  PrivateLinks;
+} PRIVATE_CACHE_MAP, *PPRIVATE_CACHE_MAP;
+
+#endif
+
+typedef struct _PS_IMPERSONATION_INFORMATION {
+    PACCESS_TOKEN                   Token;
+    BOOLEAN                         CopyOnOpen;
+    BOOLEAN                         EffectiveOnly;
+    SECURITY_IMPERSONATION_LEVEL    ImpersonationLevel;
+} PS_IMPERSONATION_INFORMATION, *PPS_IMPERSONATION_INFORMATION;
+
+typedef struct _PUBLIC_BCB {
+    CSHORT          NodeTypeCode;
+    CSHORT          NodeByteSize;
+    ULONG           MappedLength;
+    LARGE_INTEGER   MappedFileOffset;
+} PUBLIC_BCB, *PPUBLIC_BCB;
+
+typedef struct _QUERY_PATH_REQUEST {
+    ULONG                   PathNameLength;
+    PIO_SECURITY_CONTEXT    SecurityContext;
+    WCHAR                   FilePathName[1];
+} QUERY_PATH_REQUEST, *PQUERY_PATH_REQUEST;
+
+typedef struct _QUERY_PATH_RESPONSE {
+    ULONG LengthAccepted;
+} QUERY_PATH_RESPONSE, *PQUERY_PATH_RESPONSE;
+
+typedef struct _RETRIEVAL_POINTERS_BUFFER {
+    ULONG               ExtentCount;
+    LARGE_INTEGER       StartingVcn;
+    struct {
+        LARGE_INTEGER   NextVcn;
+        LARGE_INTEGER   Lcn;
+    } Extents[1];
+} RETRIEVAL_POINTERS_BUFFER, *PRETRIEVAL_POINTERS_BUFFER;
+
+typedef struct _RTL_SPLAY_LINKS {
+    struct _RTL_SPLAY_LINKS *Parent;
+    struct _RTL_SPLAY_LINKS *LeftChild;
+    struct _RTL_SPLAY_LINKS *RightChild;
+} RTL_SPLAY_LINKS, *PRTL_SPLAY_LINKS;
+
+typedef struct _SE_EXPORTS {
+
+    LUID    SeCreateTokenPrivilege;
+    LUID    SeAssignPrimaryTokenPrivilege;
+    LUID    SeLockMemoryPrivilege;
+    LUID    SeIncreaseQuotaPrivilege;
+    LUID    SeUnsolicitedInputPrivilege;
+    LUID    SeTcbPrivilege;
+    LUID    SeSecurityPrivilege;
+    LUID    SeTakeOwnershipPrivilege;
+    LUID    SeLoadDriverPrivilege;
+    LUID    SeCreatePagefilePrivilege;
+    LUID    SeIncreaseBasePriorityPrivilege;
+    LUID    SeSystemProfilePrivilege;
+    LUID    SeSystemtimePrivilege;
+    LUID    SeProfileSingleProcessPrivilege;
+    LUID    SeCreatePermanentPrivilege;
+    LUID    SeBackupPrivilege;
+    LUID    SeRestorePrivilege;
+    LUID    SeShutdownPrivilege;
+    LUID    SeDebugPrivilege;
+    LUID    SeAuditPrivilege;
+    LUID    SeSystemEnvironmentPrivilege;
+    LUID    SeChangeNotifyPrivilege;
+    LUID    SeRemoteShutdownPrivilege;
+
+    PSID    SeNullSid;
+    PSID    SeWorldSid;
+    PSID    SeLocalSid;
+    PSID    SeCreatorOwnerSid;
+    PSID    SeCreatorGroupSid;
+
+    PSID    SeNtAuthoritySid;
+    PSID    SeDialupSid;
+    PSID    SeNetworkSid;
+    PSID    SeBatchSid;
+    PSID    SeInteractiveSid;
+    PSID    SeLocalSystemSid;
+    PSID    SeAliasAdminsSid;
+    PSID    SeAliasUsersSid;
+    PSID    SeAliasGuestsSid;
+    PSID    SeAliasPowerUsersSid;
+    PSID    SeAliasAccountOpsSid;
+    PSID    SeAliasSystemOpsSid;
+    PSID    SeAliasPrintOpsSid;
+    PSID    SeAliasBackupOpsSid;
+
+    PSID    SeAuthenticatedUsersSid;
+
+    PSID    SeRestrictedSid;
+    PSID    SeAnonymousLogonSid;
+
+    LUID    SeUndockPrivilege;
+    LUID    SeSyncAgentPrivilege;
+    LUID    SeEnableDelegationPrivilege;
+
+} SE_EXPORTS, *PSE_EXPORTS;
+
+typedef struct _SECTION_BASIC_INFORMATION {
+    PVOID           BaseAddress;
+    ULONG           Attributes;
+    LARGE_INTEGER   Size;
+} SECTION_BASIC_INFORMATION, *PSECTION_BASIC_INFORMATION;
+
+typedef struct _SECTION_IMAGE_INFORMATION {
+    PVOID   EntryPoint;
+    ULONG   Unknown1;
+    ULONG   StackReserve;
+    ULONG   StackCommit;
+    ULONG   Subsystem;
+    USHORT  MinorSubsystemVersion;
+    USHORT  MajorSubsystemVersion;
+    ULONG   Unknown2;
+    ULONG   Characteristics;
+    USHORT  ImageNumber;
+    BOOLEAN Executable;
+    UCHAR   Unknown3;
+    ULONG   Unknown4[3];
+} SECTION_IMAGE_INFORMATION, *PSECTION_IMAGE_INFORMATION;
+
+#if (VER_PRODUCTBUILD >= 2600)
+
+typedef struct _SHARED_CACHE_MAP {
+    CSHORT                      NodeTypeCode;
+    CSHORT                      NodeByteSize;
+    ULONG                       OpenCount;
+    LARGE_INTEGER               FileSize;
+    LIST_ENTRY                  BcbList;
+    LARGE_INTEGER               SectionSize;
+    LARGE_INTEGER               ValidDataLength;
+    LARGE_INTEGER               ValidDataGoal;
+    PVACB                       InitialVacbs[4];
+    PVACB                       *Vacbs;
+    PFILE_OBJECT                FileObject;
+    PVACB                       ActiveVacb;
+    PVOID                       NeedToZero;
+    ULONG                       ActivePage;
+    ULONG                       NeedToZeroPage;
+    KSPIN_LOCK                  ActiveVacbSpinLock;
+    ULONG                       VacbActiveCount;
+    ULONG                       DirtyPages;
+    LIST_ENTRY                  SharedCacheMapLinks;
+    ULONG                       Flags;
+    NTSTATUS                    Status;
+    PMBCB                       Mbcb;
+    PVOID                       Section;
+    PKEVENT                     CreateEvent;
+    PKEVENT                     WaitOnActiveCount;
+    ULONG                       PagesToWrite;
+    LONGLONG                    BeyondLastFlush;
+    PCACHE_MANAGER_CALLBACKS    Callbacks;
+    PVOID                       LazyWriteContext;
+    LIST_ENTRY                  PrivateList;
+    PVOID                       LogHandle;
+    PVOID                       FlushToLsnRoutine;
+    ULONG                       DirtyPageThreshold;
+    ULONG                       LazyWritePassCount;
+    PCACHE_UNINITIALIZE_EVENT   UninitializeEvent;
+    PVACB                       NeedToZeroVacb;
+    KSPIN_LOCK                  BcbSpinLock;
+    PVOID                       Reserved;
+    KEVENT                      Event;
+    EX_PUSH_LOCK                VacbPushLock;
+    PRIVATE_CACHE_MAP           PrivateCacheMap;
+} SHARED_CACHE_MAP, *PSHARED_CACHE_MAP;
+
+#endif
+
+typedef struct _STARTING_VCN_INPUT_BUFFER {
+    LARGE_INTEGER StartingVcn;
+} STARTING_VCN_INPUT_BUFFER, *PSTARTING_VCN_INPUT_BUFFER;
+
+typedef struct _SYSTEM_CACHE_INFORMATION {
+    ULONG CurrentSize;
+    ULONG PeakSize;
+    ULONG PageFaultCount;
+    ULONG MinimumWorkingSet;
+    ULONG MaximumWorkingSet;
+    ULONG Unused[4];
+} SYSTEM_CACHE_INFORMATION, *PSYSTEM_CACHE_INFORMATION;
+
+typedef struct _TERMINATION_PORT {
+    struct _TERMINATION_PORT*   Next;
+    PVOID                       Port;
+} TERMINATION_PORT, *PTERMINATION_PORT;
+
+typedef struct _SECURITY_CLIENT_CONTEXT {
+    SECURITY_QUALITY_OF_SERVICE SecurityQos;
+    PACCESS_TOKEN               ClientToken;
+    BOOLEAN                     DirectlyAccessClientToken;
+    BOOLEAN                     DirectAccessEffectiveOnly;
+    BOOLEAN                     ServerIsRemote;
+    TOKEN_CONTROL               ClientTokenControl;
+} SECURITY_CLIENT_CONTEXT, *PSECURITY_CLIENT_CONTEXT;
+
+typedef struct _TUNNEL {
+    FAST_MUTEX          Mutex;
+    PRTL_SPLAY_LINKS    Cache;
+    LIST_ENTRY          TimerQueue;
+    USHORT              NumEntries;
+} TUNNEL, *PTUNNEL;
+
+typedef struct _VACB {
+    PVOID               BaseAddress;
+    PSHARED_CACHE_MAP   SharedCacheMap;
+    union {
+        LARGE_INTEGER   FileOffset;
+        USHORT          ActiveCount;
+    } Overlay;
+    LIST_ENTRY          LruList;
+} VACB, *PVACB;
+
+typedef struct _VAD_HEADER {
+    PVOID       StartVPN;
+    PVOID       EndVPN;
+    PVAD_HEADER ParentLink;
+    PVAD_HEADER LeftLink;
+    PVAD_HEADER RightLink;
+    ULONG       Flags;          /* LSB = CommitCharge */
+    PVOID       ControlArea;
+    PVOID       FirstProtoPte;
+    PVOID       LastPTE;
+    ULONG       Unknown;
+    LIST_ENTRY  Secured;
+} VAD_HEADER, *PVAD_HEADER;
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+CcCanIWrite (
+  /*IN*/ PFILE_OBJECT FileObject,
+  /*IN*/ ULONG        BytesToWrite,
+  /*IN*/ BOOLEAN      Wait,
+  /*IN*/ BOOLEAN      Retrying
+);
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+CcCopyRead (
+  /*IN*/ PFILE_OBJECT         FileObject,
+  /*IN*/ PLARGE_INTEGER       FileOffset,
+  /*IN*/ ULONG                Length,
+  /*IN*/ BOOLEAN              Wait,
+  /*OUT*/ PVOID               Buffer,
+  /*OUT*/ PIO_STATUS_BLOCK    IoStatus
+);
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+CcCopyWrite (
+  /*IN*/ PFILE_OBJECT     FileObject,
+  /*IN*/ PLARGE_INTEGER   FileOffset,
+  /*IN*/ ULONG            Length,
+  /*IN*/ BOOLEAN          Wait,
+  /*IN*/ PVOID            Buffer
+);
+
+#define CcCopyWriteWontFlush(FO, FOFF, LEN) ((LEN) <= 0x10000)
+
+typedef VOID (NTAPI *PCC_POST_DEFERRED_WRITE) (
+  /*IN*/ PVOID Context1,
+  /*IN*/ PVOID Context2
+);
+
+NTKERNELAPI
+VOID
+NTAPI
+CcDeferWrite (
+  /*IN*/ PFILE_OBJECT             FileObject,
+  /*IN*/ PCC_POST_DEFERRED_WRITE  PostRoutine,
+  /*IN*/ PVOID                    Context1,
+  /*IN*/ PVOID                    Context2,
+  /*IN*/ ULONG                    BytesToWrite,
+  /*IN*/ BOOLEAN                  Retrying
+);
+
+NTKERNELAPI
+VOID
+NTAPI
+CcFastCopyRead (
+  /*IN*/ PFILE_OBJECT         FileObject,
+  /*IN*/ ULONG                FileOffset,
+  /*IN*/ ULONG                Length,
+  /*IN*/ ULONG                PageCount,
+  /*OUT*/ PVOID               Buffer,
+  /*OUT*/ PIO_STATUS_BLOCK    IoStatus
+);
+
+NTKERNELAPI
+VOID
+NTAPI
+CcFastCopyWrite (
+  /*IN*/ PFILE_OBJECT FileObject,
+  /*IN*/ ULONG        FileOffset,
+  /*IN*/ ULONG        Length,
+  /*IN*/ PVOID        Buffer
+);
+
+NTKERNELAPI
+VOID
+NTAPI
+CcFlushCache (
+  /*IN*/ PSECTION_OBJECT_POINTERS SectionObjectPointer,
+  /*IN*/ PLARGE_INTEGER           FileOffset /*OPTIONAL*/,
+  /*IN*/ ULONG                    Length,
+  /*OUT*/ PIO_STATUS_BLOCK        IoStatus /*OPTIONAL*/
+);
+
+typedef VOID (*PDIRTY_PAGE_ROUTINE) (
+  /*IN*/ PFILE_OBJECT     FileObject,
+  /*IN*/ PLARGE_INTEGER   FileOffset,
+  /*IN*/ ULONG            Length,
+  /*IN*/ PLARGE_INTEGER   OldestLsn,
+  /*IN*/ PLARGE_INTEGER   NewestLsn,
+  /*IN*/ PVOID            Context1,
+  /*IN*/ PVOID            Context2
+);
+
+NTKERNELAPI
+LARGE_INTEGER
+NTAPI
+CcGetDirtyPages (
+  /*IN*/ PVOID                LogHandle,
+  /*IN*/ PDIRTY_PAGE_ROUTINE  DirtyPageRoutine,
+  /*IN*/ PVOID                Context1,
+  /*IN*/ PVOID                Context2
+);
+
+NTKERNELAPI
+PFILE_OBJECT
+NTAPI
+CcGetFileObjectFromBcb (
+  /*IN*/ PVOID Bcb
+);
+
+NTKERNELAPI
+PFILE_OBJECT
+NTAPI
+CcGetFileObjectFromSectionPtrs (
+  /*IN*/ PSECTION_OBJECT_POINTERS SectionObjectPointer
+);
+
+#define CcGetFileSizePointer(FO) (                                     \
+    ((PLARGE_INTEGER)((FO)->SectionObjectPointer->SharedCacheMap) + 1) \
+)
+
+#if (VER_PRODUCTBUILD >= 2195)
+
+NTKERNELAPI
+LARGE_INTEGER
+NTAPI
+CcGetFlushedValidData (
+  /*IN*/ PSECTION_OBJECT_POINTERS SectionObjectPointer,
+  /*IN*/ BOOLEAN                  BcbListHeld
+);
+
+#endif /* (VER_PRODUCTBUILD >= 2195) */
+
+NTKERNELAPI
+LARGE_INTEGER
+CcGetLsnForFileObject (
+  /*IN*/ PFILE_OBJECT     FileObject,
+  /*OUT*/ PLARGE_INTEGER  OldestLsn /*OPTIONAL*/
+);
+
+typedef BOOLEAN (NTAPI *PACQUIRE_FOR_LAZY_WRITE) (
+  /*IN*/ PVOID    Context,
+  /*IN*/ BOOLEAN  Wait
+);
+
+typedef VOID (NTAPI *PRELEASE_FROM_LAZY_WRITE) (
+  /*IN*/ PVOID Context
+);
+
+typedef BOOLEAN (NTAPI *PACQUIRE_FOR_READ_AHEAD) (
+  /*IN*/ PVOID    Context,
+  /*IN*/ BOOLEAN  Wait
+);
+
+typedef VOID (NTAPI *PRELEASE_FROM_READ_AHEAD) (
+  /*IN*/ PVOID Context
+);
+
+typedef struct _CACHE_MANAGER_CALLBACKS {
+    PACQUIRE_FOR_LAZY_WRITE     AcquireForLazyWrite;
+    PRELEASE_FROM_LAZY_WRITE    ReleaseFromLazyWrite;
+    PACQUIRE_FOR_READ_AHEAD     AcquireForReadAhead;
+    PRELEASE_FROM_READ_AHEAD    ReleaseFromReadAhead;
+} CACHE_MANAGER_CALLBACKS, *PCACHE_MANAGER_CALLBACKS;
+
+NTKERNELAPI
+VOID
+NTAPI
+CcInitializeCacheMap (
+  /*IN*/ PFILE_OBJECT             FileObject,
+  /*IN*/ PCC_FILE_SIZES           FileSizes,
+  /*IN*/ BOOLEAN                  PinAccess,
+  /*IN*/ PCACHE_MANAGER_CALLBACKS Callbacks,
+  /*IN*/ PVOID                    LazyWriteContext
+);
+
+#define CcIsFileCached(FO) (                                                         \
+    ((FO)->SectionObjectPointer != NULL) &&                                          \
+    (((PSECTION_OBJECT_POINTERS)(FO)->SectionObjectPointer)->SharedCacheMap != NULL) \
+)
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+CcIsThereDirtyData (
+  /*IN*/ PVPB Vpb
+);
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+CcMapData (
+  /*IN*/ PFILE_OBJECT     FileObject,
+  /*IN*/ PLARGE_INTEGER   FileOffset,
+  /*IN*/ ULONG            Length,
+  /*IN*/ BOOLEAN          Wait,
+  /*OUT*/ PVOID           *Bcb,
+  /*OUT*/ PVOID           *Buffer
+);
+
+NTKERNELAPI
+VOID
+NTAPI
+CcMdlRead (
+  /*IN*/ PFILE_OBJECT         FileObject,
+  /*IN*/ PLARGE_INTEGER       FileOffset,
+  /*IN*/ ULONG                Length,
+  /*OUT*/ PMDL                *MdlChain,
+  /*OUT*/ PIO_STATUS_BLOCK    IoStatus
+);
+
+NTKERNELAPI
+VOID
+NTAPI
+CcMdlReadComplete (
+  /*IN*/ PFILE_OBJECT FileObject,
+  /*IN*/ PMDL         MdlChain
+);
+
+NTKERNELAPI
+VOID
+NTAPI
+CcMdlWriteComplete (
+  /*IN*/ PFILE_OBJECT     FileObject,
+  /*IN*/ PLARGE_INTEGER   FileOffset,
+  /*IN*/ PMDL             MdlChain
+);
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+CcPinMappedData (
+  /*IN*/ PFILE_OBJECT     FileObject,
+  /*IN*/ PLARGE_INTEGER   FileOffset,
+  /*IN*/ ULONG            Length,
+#if (VER_PRODUCTBUILD >= 2195)
+  /*IN*/ ULONG            Flags,
+#else
+  /*IN*/ BOOLEAN          Wait,
+#endif
+  /*IN OUT*/ PVOID        *Bcb
+);
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+CcPinRead (
+  /*IN*/ PFILE_OBJECT     FileObject,
+  /*IN*/ PLARGE_INTEGER   FileOffset,
+  /*IN*/ ULONG            Length,
+#if (VER_PRODUCTBUILD >= 2195)
+  /*IN*/ ULONG            Flags,
+#else
+  /*IN*/ BOOLEAN          Wait,
+#endif
+  /*OUT*/ PVOID           *Bcb,
+  /*OUT*/ PVOID           *Buffer
+);
+
+NTKERNELAPI
+VOID
+NTAPI
+CcPrepareMdlWrite (
+  /*IN*/ PFILE_OBJECT         FileObject,
+  /*IN*/ PLARGE_INTEGER       FileOffset,
+  /*IN*/ ULONG                Length,
+  /*OUT*/ PMDL                *MdlChain,
+  /*OUT*/ PIO_STATUS_BLOCK    IoStatus
+);
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+CcPreparePinWrite (
+  /*IN*/ PFILE_OBJECT     FileObject,
+  /*IN*/ PLARGE_INTEGER   FileOffset,
+  /*IN*/ ULONG            Length,
+  /*IN*/ BOOLEAN          Zero,
+#if (VER_PRODUCTBUILD >= 2195)
+  /*IN*/ ULONG            Flags,
+#else
+  /*IN*/ BOOLEAN          Wait,
+#endif
+  /*OUT*/ PVOID           *Bcb,
+  /*OUT*/ PVOID           *Buffer
+);
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+CcPurgeCacheSection (
+  /*IN*/ PSECTION_OBJECT_POINTERS SectionObjectPointer,
+  /*IN*/ PLARGE_INTEGER           FileOffset /*OPTIONAL*/,
+  /*IN*/ ULONG                    Length,
+  /*IN*/ BOOLEAN                  UninitializeCacheMaps
+);
+
+#define CcReadAhead(FO, FOFF, LEN) (                \
+    if ((LEN) >= 256) {                             \
+        CcScheduleReadAhead((FO), (FOFF), (LEN));   \
+    }                                               \
+)
+
+#if (VER_PRODUCTBUILD >= 2195)
+
+NTKERNELAPI
+PVOID
+NTAPI
+CcRemapBcb (
+  /*IN*/ PVOID Bcb
+);
+
+#endif /* (VER_PRODUCTBUILD >= 2195) */
+
+NTKERNELAPI
+VOID
+NTAPI
+CcRepinBcb (
+  /*IN*/ PVOID Bcb
+);
+
+NTKERNELAPI
+VOID
+NTAPI
+CcScheduleReadAhead (
+  /*IN*/ PFILE_OBJECT     FileObject,
+  /*IN*/ PLARGE_INTEGER   FileOffset,
+  /*IN*/ ULONG            Length
+);
+
+NTKERNELAPI
+VOID
+NTAPI
+CcSetAdditionalCacheAttributes (
+  /*IN*/ PFILE_OBJECT FileObject,
+  /*IN*/ BOOLEAN      DisableReadAhead,
+  /*IN*/ BOOLEAN      DisableWriteBehind
+);
+
+NTKERNELAPI
+VOID
+NTAPI
+CcSetBcbOwnerPointer (
+  /*IN*/ PVOID Bcb,
+  /*IN*/ PVOID OwnerPointer
+);
+
+NTKERNELAPI
+VOID
+NTAPI
+CcSetDirtyPageThreshold (
+  /*IN*/ PFILE_OBJECT FileObject,
+  /*IN*/ ULONG        DirtyPageThreshold
+);
+
+NTKERNELAPI
+VOID
+NTAPI
+CcSetDirtyPinnedData (
+  /*IN*/ PVOID            BcbVoid,
+  /*IN*/ PLARGE_INTEGER   Lsn /*OPTIONAL*/
+);
+
+NTKERNELAPI
+VOID
+NTAPI
+CcSetFileSizes (
+  /*IN*/ PFILE_OBJECT     FileObject,
+  /*IN*/ PCC_FILE_SIZES   FileSizes
+);
+
+typedef VOID (NTAPI *PFLUSH_TO_LSN) (
+  /*IN*/ PVOID            LogHandle,
+  /*IN*/ PLARGE_INTEGER   Lsn
+);
+
+NTKERNELAPI
+VOID
+NTAPI
+CcSetLogHandleForFile (
+  /*IN*/ PFILE_OBJECT     FileObject,
+  /*IN*/ PVOID            LogHandle,
+  /*IN*/ PFLUSH_TO_LSN    FlushToLsnRoutine
+);
+
+NTKERNELAPI
+VOID
+NTAPI
+CcSetReadAheadGranularity (
+  /*IN*/ PFILE_OBJECT FileObject,
+  /*IN*/ ULONG        Granularity     /* default: PAGE_SIZE */
+                                    /* allowed: 2^n * PAGE_SIZE */
+);
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+CcUninitializeCacheMap (
+  /*IN*/ PFILE_OBJECT                 FileObject,
+  /*IN*/ PLARGE_INTEGER               TruncateSize /*OPTIONAL*/,
+  /*IN*/ PCACHE_UNINITIALIZE_EVENT    UninitializeCompleteEvent /*OPTIONAL*/
+);
+
+NTKERNELAPI
+VOID
+NTAPI
+CcUnpinData (
+  /*IN*/ PVOID Bcb
+);
+
+NTKERNELAPI
+VOID
+NTAPI
+CcUnpinDataForThread (
+  /*IN*/ PVOID            Bcb,
+  /*IN*/ ERESOURCE_THREAD ResourceThreadId
+);
+
+NTKERNELAPI
+VOID
+NTAPI
+CcUnpinRepinnedBcb (
+  /*IN*/ PVOID                Bcb,
+  /*IN*/ BOOLEAN              WriteThrough,
+  /*OUT*/ PIO_STATUS_BLOCK    IoStatus
+);
+
+#if (VER_PRODUCTBUILD >= 2195)
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+CcWaitForCurrentLazyWriterActivity (
+    VOID
+);
+
+#endif /* (VER_PRODUCTBUILD >= 2195) */
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+CcZeroData (
+  /*IN*/ PFILE_OBJECT     FileObject,
+  /*IN*/ PLARGE_INTEGER   StartOffset,
+  /*IN*/ PLARGE_INTEGER   EndOffset,
+  /*IN*/ BOOLEAN          Wait
+);
+
+NTKERNELAPI
+VOID
+NTAPI
+ExDisableResourceBoostLite (
+  /*IN*/ PERESOURCE Resource
+);
+
+NTKERNELAPI
+ULONG
+NTAPI
+ExQueryPoolBlockSize (
+  /*IN*/ PVOID        PoolBlock,
+  /*OUT*/ PBOOLEAN    QuotaCharged
+);
+
+#define FlagOn(x, f) ((x) & (f))
+
+NTKERNELAPI
+VOID
+NTAPI
+FsRtlAddToTunnelCache (
+  /*IN*/ PTUNNEL          Cache,
+  /*IN*/ ULONGLONG        DirectoryKey,
+  /*IN*/ PUNICODE_STRING  ShortName,
+  /*IN*/ PUNICODE_STRING  LongName,
+  /*IN*/ BOOLEAN          KeyByShortName,
+  /*IN*/ ULONG            DataLength,
+  /*IN*/ PVOID            Data
+);
+
+#if (VER_PRODUCTBUILD >= 2195)
+
+PFILE_LOCK
+NTAPI
+FsRtlAllocateFileLock (
+  /*IN*/ PCOMPLETE_LOCK_IRP_ROUTINE   CompleteLockIrpRoutine /*OPTIONAL*/,
+  /*IN*/ PUNLOCK_ROUTINE              UnlockRoutine /*OPTIONAL*/
+);
+
+#endif /* (VER_PRODUCTBUILD >= 2195) */
+
+NTKERNELAPI
+PVOID
+NTAPI
+FsRtlAllocatePool (
+  /*IN*/ POOL_TYPE    PoolType,
+  /*IN*/ ULONG        NumberOfBytes
+);
+
+NTKERNELAPI
+PVOID
+NTAPI
+FsRtlAllocatePoolWithQuota (
+  /*IN*/ POOL_TYPE    PoolType,
+  /*IN*/ ULONG        NumberOfBytes
+);
+
+NTKERNELAPI
+PVOID
+NTAPI
+FsRtlAllocatePoolWithQuotaTag (
+  /*IN*/ POOL_TYPE    PoolType,
+  /*IN*/ ULONG        NumberOfBytes,
+  /*IN*/ ULONG        Tag
+);
+
+NTKERNELAPI
+PVOID
+NTAPI
+FsRtlAllocatePoolWithTag (
+  /*IN*/ POOL_TYPE    PoolType,
+  /*IN*/ ULONG        NumberOfBytes,
+  /*IN*/ ULONG        Tag
+);
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+FsRtlAreNamesEqual (
+  /*IN*/ PUNICODE_STRING  Name1,
+  /*IN*/ PUNICODE_STRING  Name2,
+  /*IN*/ BOOLEAN          IgnoreCase,
+  /*IN*/ PWCHAR           UpcaseTable /*OPTIONAL*/
+);
+
+#define FsRtlAreThereCurrentFileLocks(FL) ( \
+    ((FL)->FastIoIsQuestionable)            \
+)
+
+/*
+  FsRtlCheckLockForReadAccess:
+
+  All this really does is pick out the lock parameters from the irp (io stack
+  location?), get IoGetRequestorProcess, and pass values on to
+  FsRtlFastCheckLockForRead.
+*/
+NTKERNELAPI
+BOOLEAN
+NTAPI
+FsRtlCheckLockForReadAccess (
+  /*IN*/ PFILE_LOCK   FileLock,
+  /*IN*/ PIRP         Irp
+);
+
+/*
+  FsRtlCheckLockForWriteAccess:
+
+  All this really does is pick out the lock parameters from the irp (io stack
+  location?), get IoGetRequestorProcess, and pass values on to
+  FsRtlFastCheckLockForWrite.
+*/
+NTKERNELAPI
+BOOLEAN
+NTAPI
+FsRtlCheckLockForWriteAccess (
+  /*IN*/ PFILE_LOCK   FileLock,
+  /*IN*/ PIRP         Irp
+);
+
+typedef
+VOID NTAPI
+(*POPLOCK_WAIT_COMPLETE_ROUTINE) (
+  /*IN*/ PVOID    Context,
+  /*IN*/ PIRP     Irp
+);
+
+typedef
+VOID NTAPI
+(*POPLOCK_FS_PREPOST_IRP) (
+  /*IN*/ PVOID    Context,
+  /*IN*/ PIRP     Irp
+);
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+FsRtlCheckOplock (
+  /*IN*/ POPLOCK                          Oplock,
+  /*IN*/ PIRP                             Irp,
+  /*IN*/ PVOID                            Context,
+  /*IN*/ POPLOCK_WAIT_COMPLETE_ROUTINE    CompletionRoutine /*OPTIONAL*/,
+  /*IN*/ POPLOCK_FS_PREPOST_IRP           PostIrpRoutine /*OPTIONAL*/
+);
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+FsRtlCopyRead (
+  /*IN*/ PFILE_OBJECT         FileObject,
+  /*IN*/ PLARGE_INTEGER       FileOffset,
+  /*IN*/ ULONG                Length,
+  /*IN*/ BOOLEAN              Wait,
+  /*IN*/ ULONG                LockKey,
+  /*OUT*/ PVOID               Buffer,
+  /*OUT*/ PIO_STATUS_BLOCK    IoStatus,
+  /*IN*/ PDEVICE_OBJECT       DeviceObject
+);
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+FsRtlCopyWrite (
+  /*IN*/ PFILE_OBJECT         FileObject,
+  /*IN*/ PLARGE_INTEGER       FileOffset,
+  /*IN*/ ULONG                Length,
+  /*IN*/ BOOLEAN              Wait,
+  /*IN*/ ULONG                LockKey,
+  /*IN*/ PVOID                Buffer,
+  /*OUT*/ PIO_STATUS_BLOCK    IoStatus,
+  /*IN*/ PDEVICE_OBJECT       DeviceObject
+);
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+FsRtlCurrentBatchOplock (
+  /*IN*/ POPLOCK Oplock
+);
+
+NTKERNELAPI
+VOID
+NTAPI
+FsRtlDeleteKeyFromTunnelCache (
+  /*IN*/ PTUNNEL      Cache,
+  /*IN*/ ULONGLONG    DirectoryKey
+);
+
+NTKERNELAPI
+VOID
+NTAPI
+FsRtlDeleteTunnelCache (
+  /*IN*/ PTUNNEL Cache
+);
+
+NTKERNELAPI
+VOID
+NTAPI
+FsRtlDeregisterUncProvider (
+  /*IN*/ HANDLE Handle
+);
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+FsRtlDoesNameContainWildCards (
+  /*IN*/ PUNICODE_STRING Name
+);
+
+#define FsRtlEnterFileSystem    KeEnterCriticalRegion
+
+#define FsRtlExitFileSystem     KeLeaveCriticalRegion
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+FsRtlFastCheckLockForRead (
+  /*IN*/ PFILE_LOCK           FileLock,
+  /*IN*/ PLARGE_INTEGER       FileOffset,
+  /*IN*/ PLARGE_INTEGER       Length,
+  /*IN*/ ULONG                Key,
+  /*IN*/ PFILE_OBJECT         FileObject,
+  /*IN*/ PEPROCESS            Process
+);
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+FsRtlFastCheckLockForWrite (
+  /*IN*/ PFILE_LOCK           FileLock,
+  /*IN*/ PLARGE_INTEGER       FileOffset,
+  /*IN*/ PLARGE_INTEGER       Length,
+  /*IN*/ ULONG                Key,
+  /*IN*/ PFILE_OBJECT         FileObject,
+  /*IN*/ PEPROCESS            Process
+);
+
+#define FsRtlFastLock(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11) (       \
+     FsRtlPrivateLock(A1, A2, A3, A4, A5, A6, A7, A8, A9, NULL, A10, A11)   \
+)
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+FsRtlFastUnlockAll (
+  /*IN*/ PFILE_LOCK           FileLock,
+  /*IN*/ PFILE_OBJECT         FileObject,
+  /*IN*/ PEPROCESS            Process,
+  /*IN*/ PVOID                Context /*OPTIONAL*/
+);
+/* ret: STATUS_RANGE_NOT_LOCKED */
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+FsRtlFastUnlockAllByKey (
+  /*IN*/ PFILE_LOCK           FileLock,
+  /*IN*/ PFILE_OBJECT         FileObject,
+  /*IN*/ PEPROCESS            Process,
+  /*IN*/ ULONG                Key,
+  /*IN*/ PVOID                Context /*OPTIONAL*/
+);
+/* ret: STATUS_RANGE_NOT_LOCKED */
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+FsRtlFastUnlockSingle (
+  /*IN*/ PFILE_LOCK           FileLock,
+  /*IN*/ PFILE_OBJECT         FileObject,
+  /*IN*/ PLARGE_INTEGER       FileOffset,
+  /*IN*/ PLARGE_INTEGER       Length,
+  /*IN*/ PEPROCESS            Process,
+  /*IN*/ ULONG                Key,
+  /*IN*/ PVOID                Context /*OPTIONAL*/,
+  /*IN*/ BOOLEAN              AlreadySynchronized
+);
+/* ret:  STATUS_RANGE_NOT_LOCKED */
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+FsRtlFindInTunnelCache (
+  /*IN*/ PTUNNEL          Cache,
+  /*IN*/ ULONGLONG        DirectoryKey,
+  /*IN*/ PUNICODE_STRING  Name,
+  /*OUT*/ PUNICODE_STRING ShortName,
+  /*OUT*/ PUNICODE_STRING LongName,
+  /*IN OUT*/ PULONG       DataLength,
+  /*OUT*/ PVOID           Data
+);
+
+#if (VER_PRODUCTBUILD >= 2195)
+
+NTKERNELAPI
+VOID
+NTAPI
+FsRtlFreeFileLock (
+  /*IN*/ PFILE_LOCK FileLock
+);
+
+#endif /* (VER_PRODUCTBUILD >= 2195) */
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+FsRtlGetFileSize (
+  /*IN*/ PFILE_OBJECT         FileObject,
+  /*IN OUT*/ PLARGE_INTEGER   FileSize
+);
+
+/*
+  FsRtlGetNextFileLock:
+
+  ret: NULL if no more locks
+
+  Internals:
+    FsRtlGetNextFileLock uses FileLock->LastReturnedLockInfo and
+    FileLock->LastReturnedLock as storage.
+    LastReturnedLock is a pointer to the 'raw' lock inkl. double linked
+    list, and FsRtlGetNextFileLock needs this to get next lock on subsequent
+    calls with Restart = FALSE.
+*/
+NTKERNELAPI
+PFILE_LOCK_INFO
+NTAPI
+FsRtlGetNextFileLock (
+  /*IN*/ PFILE_LOCK   FileLock,
+  /*IN*/ BOOLEAN      Restart
+);
+
+NTKERNELAPI
+VOID
+NTAPI
+FsRtlInitializeFileLock (
+  /*IN*/ PFILE_LOCK                   FileLock,
+  /*IN*/ PCOMPLETE_LOCK_IRP_ROUTINE   CompleteLockIrpRoutine /*OPTIONAL*/,
+  /*IN*/ PUNLOCK_ROUTINE              UnlockRoutine /*OPTIONAL*/
+);
+
+NTKERNELAPI
+VOID
+NTAPI
+FsRtlInitializeOplock (
+  /*IN OUT*/ POPLOCK Oplock
+);
+
+NTKERNELAPI
+VOID
+NTAPI
+FsRtlInitializeTunnelCache (
+  /*IN*/ PTUNNEL Cache
+);
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+FsRtlIsNameInExpression (
+  /*IN*/ PUNICODE_STRING  Expression,
+  /*IN*/ PUNICODE_STRING  Name,
+  /*IN*/ BOOLEAN          IgnoreCase,
+  /*IN*/ PWCHAR           UpcaseTable /*OPTIONAL*/
+);
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+FsRtlIsNtstatusExpected (
+  /*IN*/ NTSTATUS Ntstatus
+);
+
+#define FsRtlIsUnicodeCharacterWild(C) (                                    \
+    (((C) >= 0x40) ?                                                        \
+    FALSE :                                                                 \
+    FlagOn((*FsRtlLegalAnsiCharacterArray)[(C)], FSRTL_WILD_CHARACTER ))    \
+)
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+FsRtlMdlReadComplete (
+  /*IN*/ PFILE_OBJECT     FileObject,
+  /*IN*/ PMDL             MdlChain
+);
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+FsRtlMdlReadCompleteDev (
+  /*IN*/ PFILE_OBJECT     FileObject,
+  /*IN*/ PMDL             MdlChain,
+  /*IN*/ PDEVICE_OBJECT   DeviceObject
+);
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+FsRtlMdlWriteComplete (
+  /*IN*/ PFILE_OBJECT     FileObject,
+  /*IN*/ PLARGE_INTEGER   FileOffset,
+  /*IN*/ PMDL             MdlChain
+);
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+FsRtlMdlWriteCompleteDev (
+  /*IN*/ PFILE_OBJECT     FileObject,
+  /*IN*/ PLARGE_INTEGER   FileOffset,
+  /*IN*/ PMDL             MdlChain,
+  /*IN*/ PDEVICE_OBJECT   DeviceObject
+);
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+FsRtlNormalizeNtstatus (
+  /*IN*/ NTSTATUS Exception,
+  /*IN*/ NTSTATUS GenericException
+);
+
+NTKERNELAPI
+VOID
+NTAPI
+FsRtlNotifyChangeDirectory (
+  /*IN*/ PNOTIFY_SYNC NotifySync,
+  /*IN*/ PVOID        FsContext,
+  /*IN*/ PSTRING      FullDirectoryName,
+  /*IN*/ PLIST_ENTRY  NotifyList,
+  /*IN*/ BOOLEAN      WatchTree,
+  /*IN*/ ULONG        CompletionFilter,
+  /*IN*/ PIRP         NotifyIrp
+);
+
+NTKERNELAPI
+VOID
+NTAPI
+FsRtlNotifyCleanup (
+  /*IN*/ PNOTIFY_SYNC NotifySync,
+  /*IN*/ PLIST_ENTRY  NotifyList,
+  /*IN*/ PVOID        FsContext
+);
+
+typedef BOOLEAN (*PCHECK_FOR_TRAVERSE_ACCESS) (
+  /*IN*/ PVOID                        NotifyContext,
+  /*IN*/ PVOID                        TargetContext,
+  /*IN*/ PSECURITY_SUBJECT_CONTEXT    SubjectContext
+);
+
+NTKERNELAPI
+VOID
+NTAPI
+FsRtlNotifyFullChangeDirectory (
+  /*IN*/ PNOTIFY_SYNC                 NotifySync,
+  /*IN*/ PLIST_ENTRY                  NotifyList,
+  /*IN*/ PVOID                        FsContext,
+  /*IN*/ PSTRING                      FullDirectoryName,
+  /*IN*/ BOOLEAN                      WatchTree,
+  /*IN*/ BOOLEAN                      IgnoreBuffer,
+  /*IN*/ ULONG                        CompletionFilter,
+  /*IN*/ PIRP                         NotifyIrp,
+  /*IN*/ PCHECK_FOR_TRAVERSE_ACCESS   TraverseCallback /*OPTIONAL*/,
+  /*IN*/ PSECURITY_SUBJECT_CONTEXT    SubjectContext /*OPTIONAL*/
+);
+
+NTKERNELAPI
+VOID
+NTAPI
+FsRtlNotifyFullReportChange (
+  /*IN*/ PNOTIFY_SYNC NotifySync,
+  /*IN*/ PLIST_ENTRY  NotifyList,
+  /*IN*/ PSTRING      FullTargetName,
+  /*IN*/ USHORT       TargetNameOffset,
+  /*IN*/ PSTRING      StreamName /*OPTIONAL*/,
+  /*IN*/ PSTRING      NormalizedParentName /*OPTIONAL*/,
+  /*IN*/ ULONG        FilterMatch,
+  /*IN*/ ULONG        Action,
+  /*IN*/ PVOID        TargetContext
+);
+
+NTKERNELAPI
+VOID
+NTAPI
+FsRtlNotifyInitializeSync (
+  /*IN*/ PNOTIFY_SYNC NotifySync
+);
+
+NTKERNELAPI
+VOID
+NTAPI
+FsRtlNotifyReportChange (
+  /*IN*/ PNOTIFY_SYNC NotifySync,
+  /*IN*/ PLIST_ENTRY  NotifyList,
+  /*IN*/ PSTRING      FullTargetName,
+  /*IN*/ PUSHORT      FileNamePartLength,
+  /*IN*/ ULONG        FilterMatch
+);
+
+NTKERNELAPI
+VOID
+NTAPI
+FsRtlNotifyUninitializeSync (
+  /*IN*/ PNOTIFY_SYNC NotifySync
+);
+
+#if (VER_PRODUCTBUILD >= 2195)
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+FsRtlNotifyVolumeEvent (
+  /*IN*/ PFILE_OBJECT FileObject,
+  /*IN*/ ULONG        EventCode
+);
+
+#endif /* (VER_PRODUCTBUILD >= 2195) */
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+FsRtlOplockFsctrl (
+  /*IN*/ POPLOCK  Oplock,
+  /*IN*/ PIRP     Irp,
+  /*IN*/ ULONG    OpenCount
+);
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+FsRtlOplockIsFastIoPossible (
+  /*IN*/ POPLOCK Oplock
+);
+
+/*
+  FsRtlPrivateLock:
+
+  ret: IoStatus->Status: STATUS_PENDING, STATUS_LOCK_NOT_GRANTED
+
+  Internals:
+    -Calls IoCompleteRequest if Irp
+    -Uses exception handling / ExRaiseStatus with STATUS_INSUFFICIENT_RESOURCES
+*/
+NTKERNELAPI
+BOOLEAN
+NTAPI
+FsRtlPrivateLock (
+  /*IN*/ PFILE_LOCK           FileLock,
+  /*IN*/ PFILE_OBJECT         FileObject,
+  /*IN*/ PLARGE_INTEGER       FileOffset,
+  /*IN*/ PLARGE_INTEGER       Length,
+  /*IN*/ PEPROCESS            Process,
+  /*IN*/ ULONG                Key,
+  /*IN*/ BOOLEAN              FailImmediately,
+  /*IN*/ BOOLEAN              ExclusiveLock,
+  /*OUT*/ PIO_STATUS_BLOCK    IoStatus,
+  /*IN*/ PIRP                 Irp /*OPTIONAL*/,
+  /*IN*/ PVOID                Context,
+  /*IN*/ BOOLEAN              AlreadySynchronized
+);
+
+/*
+  FsRtlProcessFileLock:
+
+  ret:
+    -STATUS_INVALID_DEVICE_REQUEST
+    -STATUS_RANGE_NOT_LOCKED from unlock routines.
+    -STATUS_PENDING, STATUS_LOCK_NOT_GRANTED from FsRtlPrivateLock
+    (redirected IoStatus->Status).
+
+  Internals:
+    -switch ( Irp->CurrentStackLocation->MinorFunction )
+        lock: return FsRtlPrivateLock;
+        unlocksingle: return FsRtlFastUnlockSingle;
+        unlockall: return FsRtlFastUnlockAll;
+        unlockallbykey: return FsRtlFastUnlockAllByKey;
+        default: IofCompleteRequest with STATUS_INVALID_DEVICE_REQUEST;
+                 return STATUS_INVALID_DEVICE_REQUEST;
+
+    -'AllwaysZero' is passed thru as 'AllwaysZero' to lock / unlock routines.
+    -'Irp' is passet thru as 'Irp' to FsRtlPrivateLock.
+*/
+NTKERNELAPI
+NTSTATUS
+NTAPI
+FsRtlProcessFileLock (
+  /*IN*/ PFILE_LOCK   FileLock,
+  /*IN*/ PIRP         Irp,
+  /*IN*/ PVOID        Context /*OPTIONAL*/
+);
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+FsRtlRegisterUncProvider (
+  /*IN OUT*/ PHANDLE      MupHandle,
+  /*IN*/ PUNICODE_STRING  RedirectorDeviceName,
+  /*IN*/ BOOLEAN          MailslotsSupported
+);
+
+NTKERNELAPI
+VOID
+NTAPI
+FsRtlUninitializeFileLock (
+  /*IN*/ PFILE_LOCK FileLock
+);
+
+NTKERNELAPI
+VOID
+NTAPI
+FsRtlUninitializeOplock (
+  /*IN OUT*/ POPLOCK Oplock
+);
+
+NTSYSAPI
+VOID
+NTAPI
+HalDisplayString (
+  /*IN*/ PCHAR String
+);
+
+NTSYSAPI
+VOID
+NTAPI
+HalQueryRealTimeClock (
+  /*IN OUT*/ PTIME_FIELDS TimeFields
+);
+
+NTSYSAPI
+VOID
+NTAPI
+HalSetRealTimeClock (
+  /*IN*/ PTIME_FIELDS TimeFields
+);
+
+#define InitializeMessageHeader(m, l, t) {                  \
+    (m)->Length = (USHORT)(l);                              \
+    (m)->DataLength = (USHORT)(l - sizeof( LPC_MESSAGE ));  \
+    (m)->MessageType = (USHORT)(t);                         \
+    (m)->DataInfoOffset = 0;                                \
+}
+
+NTKERNELAPI
+VOID
+NTAPI
+IoAcquireVpbSpinLock (
+  /*OUT*/ PKIRQL Irql
+);
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+IoCheckDesiredAccess (
+  /*IN OUT*/ PACCESS_MASK DesiredAccess,
+  /*IN*/ ACCESS_MASK      GrantedAccess
+);
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+IoCheckEaBufferValidity (
+  /*IN*/ PFILE_FULL_EA_INFORMATION    EaBuffer,
+  /*IN*/ ULONG                        EaLength,
+  /*OUT*/ PULONG                      ErrorOffset
+);
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+IoCheckFunctionAccess (
+  /*IN*/ ACCESS_MASK              GrantedAccess,
+  /*IN*/ UCHAR                    MajorFunction,
+  /*IN*/ UCHAR                    MinorFunction,
+  /*IN*/ ULONG                    IoControlCode,
+  /*IN*/ PFILE_INFORMATION_CLASS  FileInformationClass /*OPTIONAL*/,
+  /*IN*/ PFS_INFORMATION_CLASS    FsInformationClass /*OPTIONAL*/
+);
+
+#if (VER_PRODUCTBUILD >= 2195)
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+IoCheckQuotaBufferValidity (
+  /*IN*/ PFILE_QUOTA_INFORMATION  QuotaBuffer,
+  /*IN*/ ULONG                    QuotaLength,
+  /*OUT*/ PULONG                  ErrorOffset
+);
+
+#endif /* (VER_PRODUCTBUILD >= 2195) */
+
+NTKERNELAPI
+PFILE_OBJECT
+NTAPI
+IoCreateStreamFileObject (
+  /*IN*/ PFILE_OBJECT     FileObject /*OPTIONAL*/,
+  /*IN*/ PDEVICE_OBJECT   DeviceObject /*OPTIONAL*/
+);
+
+#if (VER_PRODUCTBUILD >= 2195)
+
+NTKERNELAPI
+PFILE_OBJECT
+NTAPI
+IoCreateStreamFileObjectLite (
+  /*IN*/ PFILE_OBJECT     FileObject /*OPTIONAL*/,
+  /*IN*/ PDEVICE_OBJECT   DeviceObject /*OPTIONAL*/
+);
+
+#endif /* (VER_PRODUCTBUILD >= 2195) */
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+IoFastQueryNetworkAttributes (
+  /*IN*/ POBJECT_ATTRIBUTES               ObjectAttributes,
+  /*IN*/ ACCESS_MASK                      DesiredAccess,
+  /*IN*/ ULONG                            OpenOptions,
+  /*OUT*/ PIO_STATUS_BLOCK                IoStatus,
+  /*OUT*/ PFILE_NETWORK_OPEN_INFORMATION  Buffer
+);
+
+NTKERNELAPI
+PDEVICE_OBJECT
+NTAPI
+IoGetAttachedDevice (
+  /*IN*/ PDEVICE_OBJECT DeviceObject
+);
+
+NTKERNELAPI
+PDEVICE_OBJECT
+NTAPI
+IoGetBaseFileSystemDeviceObject (
+  /*IN*/ PFILE_OBJECT FileObject
+);
+
+NTKERNELAPI
+PEPROCESS
+NTAPI
+IoGetRequestorProcess (
+  /*IN*/ PIRP Irp
+);
+
+#if (VER_PRODUCTBUILD >= 2195)
+
+NTKERNELAPI
+ULONG
+NTAPI
+IoGetRequestorProcessId (
+  /*IN*/ PIRP Irp
+);
+
+#endif /* (VER_PRODUCTBUILD >= 2195) */
+
+NTKERNELAPI
+PIRP
+NTAPI
+IoGetTopLevelIrp (
+    VOID
+);
+
+#define IoIsFileOpenedExclusively(FileObject) ( \
+    (BOOLEAN) !(                                \
+    (FileObject)->SharedRead ||                 \
+    (FileObject)->SharedWrite ||                \
+    (FileObject)->SharedDelete                  \
+    )                                           \
+)
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+IoIsOperationSynchronous (
+  /*IN*/ PIRP Irp
+);
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+IoIsSystemThread (
+  /*IN*/ PETHREAD Thread
+);
+
+#if (VER_PRODUCTBUILD >= 2195)
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+IoIsValidNameGraftingBuffer (
+  /*IN*/ PIRP                 Irp,
+  /*IN*/ PREPARSE_DATA_BUFFER ReparseBuffer
+);
+
+#endif /* (VER_PRODUCTBUILD >= 2195) */
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+IoPageRead (
+  /*IN*/ PFILE_OBJECT         FileObject,
+  /*IN*/ PMDL                 Mdl,
+  /*IN*/ PLARGE_INTEGER       Offset,
+  /*IN*/ PKEVENT              Event,
+  /*OUT*/ PIO_STATUS_BLOCK    IoStatusBlock
+);
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+IoQueryFileInformation (
+  /*IN*/ PFILE_OBJECT             FileObject,
+  /*IN*/ FILE_INFORMATION_CLASS   FileInformationClass,
+  /*IN*/ ULONG                    Length,
+  /*OUT*/ PVOID                   FileInformation,
+  /*OUT*/ PULONG                  ReturnedLength
+);
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+IoQueryVolumeInformation (
+  /*IN*/ PFILE_OBJECT         FileObject,
+  /*IN*/ FS_INFORMATION_CLASS FsInformationClass,
+  /*IN*/ ULONG                Length,
+  /*OUT*/ PVOID               FsInformation,
+  /*OUT*/ PULONG              ReturnedLength
+);
+
+NTKERNELAPI
+VOID
+NTAPI
+IoRegisterFileSystem (
+  /*IN OUT*/ PDEVICE_OBJECT DeviceObject
+);
+
+#if (VER_PRODUCTBUILD >= 1381)
+
+typedef VOID (NTAPI *PDRIVER_FS_NOTIFICATION) (
+  /*IN*/ PDEVICE_OBJECT DeviceObject,
+  /*IN*/ BOOLEAN        DriverActive
+);
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+IoRegisterFsRegistrationChange (
+  /*IN*/ PDRIVER_OBJECT           DriverObject,
+  /*IN*/ PDRIVER_FS_NOTIFICATION  DriverNotificationRoutine
+);
+
+#endif /* (VER_PRODUCTBUILD >= 1381) */
+
+NTKERNELAPI
+VOID
+NTAPI
+IoReleaseVpbSpinLock (
+  /*IN*/ KIRQL Irql
+);
+
+NTKERNELAPI
+VOID
+NTAPI
+IoSetDeviceToVerify (
+  /*IN*/ PETHREAD         Thread,
+  /*IN*/ PDEVICE_OBJECT   DeviceObject
+);
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+IoSetInformation (
+  /*IN*/ PFILE_OBJECT             FileObject,
+  /*IN*/ FILE_INFORMATION_CLASS   FileInformationClass,
+  /*IN*/ ULONG                    Length,
+  /*IN*/ PVOID                    FileInformation
+);
+
+NTKERNELAPI
+VOID
+NTAPI
+IoSetTopLevelIrp (
+  /*IN*/ PIRP Irp
+);
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+IoSynchronousPageWrite (
+  /*IN*/ PFILE_OBJECT         FileObject,
+  /*IN*/ PMDL                 Mdl,
+  /*IN*/ PLARGE_INTEGER       FileOffset,
+  /*IN*/ PKEVENT              Event,
+  /*OUT*/ PIO_STATUS_BLOCK    IoStatusBlock
+);
+
+NTKERNELAPI
+PEPROCESS
+NTAPI
+IoThreadToProcess (
+  /*IN*/ PETHREAD Thread
+);
+
+NTKERNELAPI
+VOID
+NTAPI
+IoUnregisterFileSystem (
+  /*IN OUT*/ PDEVICE_OBJECT DeviceObject
+);
+
+#if (VER_PRODUCTBUILD >= 1381)
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+IoUnregisterFsRegistrationChange (
+  /*IN*/ PDRIVER_OBJECT           DriverObject,
+  /*IN*/ PDRIVER_FS_NOTIFICATION  DriverNotificationRoutine
+);
+
+#endif /* (VER_PRODUCTBUILD >= 1381) */
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+IoVerifyVolume (
+  /*IN*/ PDEVICE_OBJECT   DeviceObject,
+  /*IN*/ BOOLEAN          AllowRawMount
+);
+
+NTKERNELAPI
+VOID
+NTAPI
+KeAttachProcess (
+  /*IN*/ PEPROCESS Process
+);
+
+NTKERNELAPI
+VOID
+NTAPI
+KeDetachProcess (
+    VOID
+);
+
+NTKERNELAPI
+VOID
+NTAPI
+KeInitializeQueue (
+  /*IN*/ PRKQUEUE Queue,
+  /*IN*/ ULONG    Count /*OPTIONAL*/
+);
+
+NTKERNELAPI
+LONG
+NTAPI
+KeInsertHeadQueue (
+  /*IN*/ PRKQUEUE     Queue,
+  /*IN*/ PLIST_ENTRY  Entry
+);
+
+NTKERNELAPI
+LONG
+NTAPI
+KeInsertQueue (
+  /*IN*/ PRKQUEUE     Queue,
+  /*IN*/ PLIST_ENTRY  Entry
+);
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+KeInsertQueueApc (
+  /*IN*/ PKAPC      Apc,
+  /*IN*/ PVOID      SystemArgument1,
+  /*IN*/ PVOID      SystemArgument2,
+  /*IN*/ KPRIORITY  PriorityBoost
+);
+
+NTKERNELAPI
+LONG
+NTAPI
+KeReadStateQueue (
+  /*IN*/ PRKQUEUE Queue
+);
+
+NTKERNELAPI
+PLIST_ENTRY
+NTAPI
+KeRemoveQueue (
+  /*IN*/ PRKQUEUE         Queue,
+  /*IN*/ KPROCESSOR_MODE  WaitMode,
+  /*IN*/ PLARGE_INTEGER   Timeout /*OPTIONAL*/
+);
+
+NTKERNELAPI
+PLIST_ENTRY
+NTAPI
+KeRundownQueue (
+  /*IN*/ PRKQUEUE Queue
+);
+
+#if (VER_PRODUCTBUILD >= 2195)
+
+NTKERNELAPI
+VOID
+NTAPI
+KeStackAttachProcess (
+  /*IN*/ PKPROCESS    Process,
+  /*OUT*/ PKAPC_STATE ApcState
+);
+
+NTKERNELAPI
+VOID
+NTAPI
+KeUnstackDetachProcess (
+  /*IN*/ PKAPC_STATE ApcState
+);
+
+#endif /* (VER_PRODUCTBUILD >= 2195) */
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+MmCanFileBeTruncated (
+  /*IN*/ PSECTION_OBJECT_POINTERS     SectionObjectPointer,
+  /*IN*/ PLARGE_INTEGER               NewFileSize
+);
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+MmFlushImageSection (
+  /*IN*/ PSECTION_OBJECT_POINTERS     SectionObjectPointer,
+  /*IN*/ MMFLUSH_TYPE                 FlushType
+);
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+MmForceSectionClosed (
+  /*IN*/ PSECTION_OBJECT_POINTERS SectionObjectPointer,
+  /*IN*/ BOOLEAN                  DelayClose
+);
+
+#if (VER_PRODUCTBUILD >= 1381)
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+MmIsRecursiveIoFault (
+    VOID
+);
+
+#else
+
+#define MmIsRecursiveIoFault() (                            \
+    (PsGetCurrentThread()->DisablePageFaultClustering) |    \
+    (PsGetCurrentThread()->ForwardClusterOnly)              \
+)
+
+#endif
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+MmMapViewOfSection (
+  /*IN*/ PVOID                SectionObject,
+  /*IN*/ PEPROCESS            Process,
+  /*IN OUT*/ PVOID            *BaseAddress,
+  /*IN*/ ULONG                ZeroBits,
+  /*IN*/ ULONG                CommitSize,
+  /*IN OUT*/ PLARGE_INTEGER   SectionOffset /*OPTIONAL*/,
+  /*IN OUT*/ PULONG           ViewSize,
+  /*IN*/ SECTION_INHERIT      InheritDisposition,
+  /*IN*/ ULONG                AllocationType,
+  /*IN*/ ULONG                Protect
+);
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+MmSetAddressRangeModified (
+  /*IN*/ PVOID    Address,
+  /*IN*/ ULONG    Length
+);
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+ObCreateObject (
+  /*IN*/ KPROCESSOR_MODE      ObjectAttributesAccessMode /*OPTIONAL*/,
+  /*IN*/ POBJECT_TYPE         ObjectType,
+  /*IN*/ POBJECT_ATTRIBUTES   ObjectAttributes /*OPTIONAL*/,
+  /*IN*/ KPROCESSOR_MODE      AccessMode,
+  /*IN OUT*/ PVOID            ParseContext /*OPTIONAL*/,
+  /*IN*/ ULONG                ObjectSize,
+  /*IN*/ ULONG                PagedPoolCharge /*OPTIONAL*/,
+  /*IN*/ ULONG                NonPagedPoolCharge /*OPTIONAL*/,
+  /*OUT*/ PVOID               *Object
+);
+
+NTKERNELAPI
+ULONG
+NTAPI
+ObGetObjectPointerCount (
+  /*IN*/ PVOID Object
+);
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+ObInsertObject (
+  /*IN*/ PVOID            Object,
+  /*IN*/ PACCESS_STATE    PassedAccessState /*OPTIONAL*/,
+  /*IN*/ ACCESS_MASK      DesiredAccess,
+  /*IN*/ ULONG            AdditionalReferences,
+  /*OUT*/ PVOID           *ReferencedObject /*OPTIONAL*/,
+  /*OUT*/ PHANDLE         Handle
+);
+
+NTKERNELAPI
+VOID
+NTAPI
+ObMakeTemporaryObject (
+  /*IN*/ PVOID Object
+);
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+ObOpenObjectByPointer (
+  /*IN*/ PVOID            Object,
+  /*IN*/ ULONG            HandleAttributes,
+  /*IN*/ PACCESS_STATE    PassedAccessState /*OPTIONAL*/,
+  /*IN*/ ACCESS_MASK      DesiredAccess /*OPTIONAL*/,
+  /*IN*/ POBJECT_TYPE     ObjectType /*OPTIONAL*/,
+  /*IN*/ KPROCESSOR_MODE  AccessMode,
+  /*OUT*/ PHANDLE         Handle
+);
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+ObQueryNameString (
+  /*IN*/ PVOID                        Object,
+  /*OUT*/ POBJECT_NAME_INFORMATION    ObjectNameInfo,
+  /*IN*/ ULONG                        Length,
+  /*OUT*/ PULONG                      ReturnLength
+);
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+ObQueryObjectAuditingByHandle (
+  /*IN*/ HANDLE       Handle,
+  /*OUT*/ PBOOLEAN    GenerateOnClose
+);
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+ObReferenceObjectByName (
+  /*IN*/ PUNICODE_STRING  ObjectName,
+  /*IN*/ ULONG            Attributes,
+  /*IN*/ PACCESS_STATE    PassedAccessState /*OPTIONAL*/,
+  /*IN*/ ACCESS_MASK      DesiredAccess /*OPTIONAL*/,
+  /*IN*/ POBJECT_TYPE     ObjectType,
+  /*IN*/ KPROCESSOR_MODE  AccessMode,
+  /*IN OUT*/ PVOID        ParseContext /*OPTIONAL*/,
+  /*OUT*/ PVOID           *Object
+);
+
+NTKERNELAPI
+VOID
+NTAPI
+PsChargePoolQuota (
+  /*IN*/ PEPROCESS    Process,
+  /*IN*/ POOL_TYPE    PoolType,
+  /*IN*/ ULONG        Amount
+);
+
+#define PsDereferenceImpersonationToken(T)  \
+            {if (ARGUMENT_PRESENT(T)) {     \
+                (ObDereferenceObject((T))); \
+            } else {                        \
+                ;                           \
+            }                               \
+}
+
+#define PsDereferencePrimaryToken(T) (ObDereferenceObject((T)))
+
+NTKERNELAPI
+ULONGLONG
+NTAPI
+PsGetProcessExitTime (
+    VOID
+);
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+PsIsThreadTerminating (
+  /*IN*/ PETHREAD Thread
+);
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+PsLookupProcessByProcessId (
+  /*IN*/ PVOID        ProcessId,
+  /*OUT*/ PEPROCESS   *Process
+);
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+PsLookupProcessThreadByCid (
+  /*IN*/ PCLIENT_ID   Cid,
+  /*OUT*/ PEPROCESS   *Process /*OPTIONAL*/,
+  /*OUT*/ PETHREAD    *Thread
+);
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+PsLookupThreadByThreadId (
+  /*IN*/ PVOID        UniqueThreadId,
+  /*OUT*/ PETHREAD    *Thread
+);
+
+NTKERNELAPI
+PACCESS_TOKEN
+NTAPI
+PsReferenceImpersonationToken (
+  /*IN*/ PETHREAD                         Thread,
+  /*OUT*/ PBOOLEAN                        CopyOnUse,
+  /*OUT*/ PBOOLEAN                        EffectiveOnly,
+  /*OUT*/ PSECURITY_IMPERSONATION_LEVEL   Level
+);
+
+NTKERNELAPI
+HANDLE
+NTAPI
+PsReferencePrimaryToken (
+  /*IN*/ PEPROCESS Process
+);
+
+NTKERNELAPI
+VOID
+NTAPI
+PsReturnPoolQuota (
+  /*IN*/ PEPROCESS    Process,
+  /*IN*/ POOL_TYPE    PoolType,
+  /*IN*/ ULONG        Amount
+);
+
+NTKERNELAPI
+VOID
+NTAPI
+PsRevertToSelf (
+    VOID
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlAbsoluteToSelfRelativeSD (
+  /*IN*/ PSECURITY_DESCRIPTOR     AbsoluteSecurityDescriptor,
+  /*IN OUT*/ PSECURITY_DESCRIPTOR SelfRelativeSecurityDescriptor,
+  /*IN*/ PULONG                   BufferLength
+);
+
+NTSYSAPI
+PVOID
+NTAPI
+RtlAllocateHeap (
+  /*IN*/ HANDLE  HeapHandle,
+  /*IN*/ ULONG   Flags,
+  /*IN*/ ULONG   Size
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlCompressBuffer (
+  /*IN*/ USHORT   CompressionFormatAndEngine,
+  /*IN*/ PUCHAR   UncompressedBuffer,
+  /*IN*/ ULONG    UncompressedBufferSize,
+  /*OUT*/ PUCHAR  CompressedBuffer,
+  /*IN*/ ULONG    CompressedBufferSize,
+  /*IN*/ ULONG    UncompressedChunkSize,
+  /*OUT*/ PULONG  FinalCompressedSize,
+  /*IN*/ PVOID    WorkSpace
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlCompressChunks (
+  /*IN*/ PUCHAR                       UncompressedBuffer,
+  /*IN*/ ULONG                        UncompressedBufferSize,
+  /*OUT*/ PUCHAR                      CompressedBuffer,
+  /*IN*/ ULONG                        CompressedBufferSize,
+  /*IN OUT*/ PCOMPRESSED_DATA_INFO    CompressedDataInfo,
+  /*IN*/ ULONG                        CompressedDataInfoLength,
+  /*IN*/ PVOID                        WorkSpace
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlConvertSidToUnicodeString (
+  /*OUT*/ PUNICODE_STRING DestinationString,
+  /*IN*/ PSID             Sid,
+  /*IN*/ BOOLEAN          AllocateDestinationString
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlCopySid (
+  /*IN*/ ULONG   Length,
+  /*IN*/ PSID    Destination,
+  /*IN*/ PSID    Source
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlDecompressBuffer (
+  /*IN*/ USHORT   CompressionFormat,
+  /*OUT*/ PUCHAR  UncompressedBuffer,
+  /*IN*/ ULONG    UncompressedBufferSize,
+  /*IN*/ PUCHAR   CompressedBuffer,
+  /*IN*/ ULONG    CompressedBufferSize,
+  /*OUT*/ PULONG  FinalUncompressedSize
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlDecompressChunks (
+  /*OUT*/ PUCHAR                  UncompressedBuffer,
+  /*IN*/ ULONG                    UncompressedBufferSize,
+  /*IN*/ PUCHAR                   CompressedBuffer,
+  /*IN*/ ULONG                    CompressedBufferSize,
+  /*IN*/ PUCHAR                   CompressedTail,
+  /*IN*/ ULONG                    CompressedTailSize,
+  /*IN*/ PCOMPRESSED_DATA_INFO    CompressedDataInfo
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlDecompressFragment (
+  /*IN*/ USHORT   CompressionFormat,
+  /*OUT*/ PUCHAR  UncompressedFragment,
+  /*IN*/ ULONG    UncompressedFragmentSize,
+  /*IN*/ PUCHAR   CompressedBuffer,
+  /*IN*/ ULONG    CompressedBufferSize,
+  /*IN*/ ULONG    FragmentOffset,
+  /*OUT*/ PULONG  FinalUncompressedSize,
+  /*IN*/ PVOID    WorkSpace
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlDescribeChunk (
+  /*IN*/ USHORT       CompressionFormat,
+  /*IN OUT*/ PUCHAR   *CompressedBuffer,
+  /*IN*/ PUCHAR       EndOfCompressedBufferPlus1,
+  /*OUT*/ PUCHAR      *ChunkBuffer,
+  /*OUT*/ PULONG      ChunkSize
+);
+
+NTSYSAPI
+BOOLEAN
+NTAPI
+RtlEqualSid (
+  /*IN*/ PSID Sid1,
+  /*IN*/ PSID Sid2
+);
+
+NTSYSAPI
+VOID
+NTAPI
+RtlFillMemoryUlong (
+  /*IN*/ PVOID    Destination,
+  /*IN*/ ULONG    Length,
+  /*IN*/ ULONG    Fill
+);
+
+NTSYSAPI
+BOOLEAN
+NTAPI
+RtlFreeHeap (
+  /*IN*/ HANDLE  HeapHandle,
+  /*IN*/ ULONG   Flags,
+  /*IN*/ PVOID   P
+);
+
+NTSYSAPI
+VOID
+NTAPI
+RtlGenerate8dot3Name (
+  /*IN*/ PUNICODE_STRING              Name,
+  /*IN*/ BOOLEAN                      AllowExtendedCharacters,
+  /*IN OUT*/ PGENERATE_NAME_CONTEXT   Context,
+  /*OUT*/ PUNICODE_STRING             Name8dot3
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlGetCompressionWorkSpaceSize (
+  /*IN*/ USHORT   CompressionFormatAndEngine,
+  /*OUT*/ PULONG  CompressBufferWorkSpaceSize,
+  /*OUT*/ PULONG  CompressFragmentWorkSpaceSize
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlGetDaclSecurityDescriptor (
+  /*IN*/ PSECURITY_DESCRIPTOR SecurityDescriptor,
+  /*OUT*/ PBOOLEAN            DaclPresent,
+  /*OUT*/ PACL                *Dacl,
+  /*OUT*/ PBOOLEAN            DaclDefaulted
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlGetGroupSecurityDescriptor (
+  /*IN*/ PSECURITY_DESCRIPTOR SecurityDescriptor,
+  /*OUT*/ PSID                *Group,
+  /*OUT*/ PBOOLEAN            GroupDefaulted
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlGetOwnerSecurityDescriptor (
+  /*IN*/ PSECURITY_DESCRIPTOR SecurityDescriptor,
+  /*OUT*/ PSID                *Owner,
+  /*OUT*/ PBOOLEAN            OwnerDefaulted
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlInitializeSid (
+  /*IN OUT*/ PSID                     Sid,
+  /*IN*/ PSID_IDENTIFIER_AUTHORITY    IdentifierAuthority,
+  /*IN*/ UCHAR                        SubAuthorityCount
+);
+
+NTSYSAPI
+BOOLEAN
+NTAPI
+RtlIsNameLegalDOS8Dot3 (
+  /*IN*/ PUNICODE_STRING UnicodeName,
+  /*IN*/ PANSI_STRING    AnsiName,
+    PBOOLEAN           Unknown
+);
+
+NTSYSAPI
+ULONG
+NTAPI
+RtlLengthRequiredSid (
+  /*IN*/ UCHAR SubAuthorityCount
+);
+
+NTSYSAPI
+ULONG
+NTAPI
+RtlLengthSid (
+  /*IN*/ PSID Sid
+);
+
+NTSYSAPI
+ULONG
+NTAPI
+RtlNtStatusToDosError (
+  /*IN*/ NTSTATUS Status
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlReserveChunk (
+  /*IN*/ USHORT       CompressionFormat,
+  /*IN OUT*/ PUCHAR   *CompressedBuffer,
+  /*IN*/ PUCHAR       EndOfCompressedBufferPlus1,
+  /*OUT*/ PUCHAR      *ChunkBuffer,
+  /*IN*/ ULONG        ChunkSize
+);
+
+NTSYSAPI
+VOID
+NTAPI
+RtlSecondsSince1970ToTime (
+  /*IN*/ ULONG            SecondsSince1970,
+  /*OUT*/ PLARGE_INTEGER  Time
+);
+
+#if (VER_PRODUCTBUILD >= 2195)
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlSelfRelativeToAbsoluteSD (
+  /*IN*/ PSECURITY_DESCRIPTOR     SelfRelativeSD,
+  /*OUT*/ PSECURITY_DESCRIPTOR    AbsoluteSD,
+  /*IN*/ PULONG                   AbsoluteSDSize,
+  /*IN*/ PACL                     Dacl,
+  /*IN*/ PULONG                   DaclSize,
+  /*IN*/ PACL                     Sacl,
+  /*IN*/ PULONG                   SaclSize,
+  /*IN*/ PSID                     Owner,
+  /*IN*/ PULONG                   OwnerSize,
+  /*IN*/ PSID                     PrimaryGroup,
+  /*IN*/ PULONG                   PrimaryGroupSize
+);
+
+#endif /* (VER_PRODUCTBUILD >= 2195) */
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlSetGroupSecurityDescriptor (
+  /*IN OUT*/ PSECURITY_DESCRIPTOR SecurityDescriptor,
+  /*IN*/ PSID                     Group,
+  /*IN*/ BOOLEAN                  GroupDefaulted
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlSetOwnerSecurityDescriptor (
+  /*IN OUT*/ PSECURITY_DESCRIPTOR SecurityDescriptor,
+  /*IN*/ PSID                     Owner,
+  /*IN*/ BOOLEAN                  OwnerDefaulted
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlSetSaclSecurityDescriptor (
+  /*IN OUT*/ PSECURITY_DESCRIPTOR SecurityDescriptor,
+  /*IN*/ BOOLEAN                  SaclPresent,
+  /*IN*/ PACL                     Sacl,
+  /*IN*/ BOOLEAN                  SaclDefaulted
+);
+
+NTSYSAPI
+PUCHAR
+NTAPI
+RtlSubAuthorityCountSid (
+  /*IN*/ PSID Sid
+);
+
+NTSYSAPI
+PULONG
+NTAPI
+RtlSubAuthoritySid (
+  /*IN*/ PSID    Sid,
+  /*IN*/ ULONG   SubAuthority
+);
+
+NTSYSAPI
+BOOLEAN
+NTAPI
+RtlValidSid (
+  /*IN*/ PSID Sid
+);
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+SeAppendPrivileges (
+    PACCESS_STATE   AccessState,
+    PPRIVILEGE_SET  Privileges
+);
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+SeAuditingFileEvents (
+  /*IN*/ BOOLEAN              AccessGranted,
+  /*IN*/ PSECURITY_DESCRIPTOR SecurityDescriptor
+);
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+SeAuditingFileOrGlobalEvents (
+  /*IN*/ BOOLEAN                      AccessGranted,
+  /*IN*/ PSECURITY_DESCRIPTOR         SecurityDescriptor,
+  /*IN*/ PSECURITY_SUBJECT_CONTEXT    SubjectContext
+);
+
+NTKERNELAPI
+VOID
+NTAPI
+SeCaptureSubjectContext (
+  /*OUT*/ PSECURITY_SUBJECT_CONTEXT SubjectContext
+);
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+SeCreateAccessState (
+  /*OUT*/ PACCESS_STATE   AccessState,
+  /*IN*/ PVOID            AuxData,
+  /*IN*/ ACCESS_MASK      AccessMask,
+  /*IN*/ PGENERIC_MAPPING Mapping
+);
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+SeCreateClientSecurity (
+  /*IN*/ PETHREAD                     Thread,
+  /*IN*/ PSECURITY_QUALITY_OF_SERVICE QualityOfService,
+  /*IN*/ BOOLEAN                      RemoteClient,
+  /*OUT*/ PSECURITY_CLIENT_CONTEXT    ClientContext
+);
+
+#if (VER_PRODUCTBUILD >= 2195)
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+SeCreateClientSecurityFromSubjectContext (
+  /*IN*/ PSECURITY_SUBJECT_CONTEXT    SubjectContext,
+  /*IN*/ PSECURITY_QUALITY_OF_SERVICE QualityOfService,
+  /*IN*/ BOOLEAN                      ServerIsRemote,
+  /*OUT*/ PSECURITY_CLIENT_CONTEXT    ClientContext
+);
+
+#endif /* (VER_PRODUCTBUILD >= 2195) */
+
+#define SeDeleteClientSecurity(C)  {                                           \
+            if (SeTokenType((C)->ClientToken) == TokenPrimary) {               \
+                PsDereferencePrimaryToken( (C)->ClientToken );                 \
+            } else {                                                           \
+                PsDereferenceImpersonationToken( (C)->ClientToken );           \
+            }                                                                  \
+}
+
+NTKERNELAPI
+VOID
+NTAPI
+SeDeleteObjectAuditAlarm (
+  /*IN*/ PVOID    Object,
+  /*IN*/ HANDLE   Handle
+);
+
+#define SeEnableAccessToExports() SeExports = *(PSE_EXPORTS *)SeExports;
+
+NTKERNELAPI
+VOID
+NTAPI
+SeFreePrivileges (
+  /*IN*/ PPRIVILEGE_SET Privileges
+);
+
+NTKERNELAPI
+VOID
+NTAPI
+SeImpersonateClient (
+  /*IN*/ PSECURITY_CLIENT_CONTEXT ClientContext,
+  /*IN*/ PETHREAD                 ServerThread /*OPTIONAL*/
+);
+
+#if (VER_PRODUCTBUILD >= 2195)
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+SeImpersonateClientEx (
+  /*IN*/ PSECURITY_CLIENT_CONTEXT ClientContext,
+  /*IN*/ PETHREAD                 ServerThread /*OPTIONAL*/
+);
+
+#endif /* (VER_PRODUCTBUILD >= 2195) */
+
+NTKERNELAPI
+VOID
+NTAPI
+SeLockSubjectContext (
+  /*IN*/ PSECURITY_SUBJECT_CONTEXT SubjectContext
+);
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+SeMarkLogonSessionForTerminationNotification (
+  /*IN*/ PLUID LogonId
+);
+
+NTKERNELAPI
+VOID
+NTAPI
+SeOpenObjectAuditAlarm (
+  /*IN*/ PUNICODE_STRING      ObjectTypeName,
+  /*IN*/ PVOID                Object /*OPTIONAL*/,
+  /*IN*/ PUNICODE_STRING      AbsoluteObjectName /*OPTIONAL*/,
+  /*IN*/ PSECURITY_DESCRIPTOR SecurityDescriptor,
+  /*IN*/ PACCESS_STATE        AccessState,
+  /*IN*/ BOOLEAN              ObjectCreated,
+  /*IN*/ BOOLEAN              AccessGranted,
+  /*IN*/ KPROCESSOR_MODE      AccessMode,
+  /*OUT*/ PBOOLEAN            GenerateOnClose
+);
+
+NTKERNELAPI
+VOID
+NTAPI
+SeOpenObjectForDeleteAuditAlarm (
+  /*IN*/ PUNICODE_STRING      ObjectTypeName,
+  /*IN*/ PVOID                Object /*OPTIONAL*/,
+  /*IN*/ PUNICODE_STRING      AbsoluteObjectName /*OPTIONAL*/,
+  /*IN*/ PSECURITY_DESCRIPTOR SecurityDescriptor,
+  /*IN*/ PACCESS_STATE        AccessState,
+  /*IN*/ BOOLEAN              ObjectCreated,
+  /*IN*/ BOOLEAN              AccessGranted,
+  /*IN*/ KPROCESSOR_MODE      AccessMode,
+  /*OUT*/ PBOOLEAN            GenerateOnClose
+);
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+SePrivilegeCheck (
+  /*IN OUT*/ PPRIVILEGE_SET           RequiredPrivileges,
+  /*IN*/ PSECURITY_SUBJECT_CONTEXT    SubjectContext,
+  /*IN*/ KPROCESSOR_MODE              AccessMode
+);
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+SeQueryAuthenticationIdToken (
+  /*IN*/ PACCESS_TOKEN    Token,
+  /*OUT*/ PLUID           LogonId
+);
+
+#if (VER_PRODUCTBUILD >= 2195)
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+SeQueryInformationToken (
+  /*IN*/ PACCESS_TOKEN           Token,
+  /*IN*/ TOKEN_INFORMATION_CLASS TokenInformationClass,
+  /*OUT*/ PVOID                  *TokenInformation
+);
+
+#endif /* (VER_PRODUCTBUILD >= 2195) */
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+SeQuerySecurityDescriptorInfo (
+  /*IN*/ PSECURITY_INFORMATION    SecurityInformation,
+  /*OUT*/ PSECURITY_DESCRIPTOR    SecurityDescriptor,
+  /*IN OUT*/ PULONG               Length,
+  /*IN*/ PSECURITY_DESCRIPTOR     *ObjectsSecurityDescriptor
+);
+
+#if (VER_PRODUCTBUILD >= 2195)
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+SeQuerySessionIdToken (
+  /*IN*/ PACCESS_TOKEN    Token,
+  /*IN*/ PULONG           SessionId
+);
+
+#endif /* (VER_PRODUCTBUILD >= 2195) */
+
+#define SeQuerySubjectContextToken( SubjectContext )                \
+    ( ARGUMENT_PRESENT(                                             \
+        ((PSECURITY_SUBJECT_CONTEXT) SubjectContext)->ClientToken   \
+        ) ?                                                         \
+    ((PSECURITY_SUBJECT_CONTEXT) SubjectContext)->ClientToken :     \
+    ((PSECURITY_SUBJECT_CONTEXT) SubjectContext)->PrimaryToken )
+
+typedef NTSTATUS (*PSE_LOGON_SESSION_TERMINATED_ROUTINE) (
+  /*IN*/ PLUID LogonId
+);
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+SeRegisterLogonSessionTerminatedRoutine (
+  /*IN*/ PSE_LOGON_SESSION_TERMINATED_ROUTINE CallbackRoutine
+);
+
+NTKERNELAPI
+VOID
+NTAPI
+SeReleaseSubjectContext (
+  /*IN*/ PSECURITY_SUBJECT_CONTEXT SubjectContext
+);
+
+NTKERNELAPI
+VOID
+NTAPI
+SeSetAccessStateGenericMapping (
+    PACCESS_STATE       AccessState,
+    PGENERIC_MAPPING    GenericMapping
+);
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+SeSetSecurityDescriptorInfo (
+  /*IN*/ PVOID                    Object /*OPTIONAL*/,
+  /*IN*/ PSECURITY_INFORMATION    SecurityInformation,
+  /*IN*/ PSECURITY_DESCRIPTOR     SecurityDescriptor,
+  /*IN OUT*/ PSECURITY_DESCRIPTOR *ObjectsSecurityDescriptor,
+  /*IN*/ POOL_TYPE                PoolType,
+  /*IN*/ PGENERIC_MAPPING         GenericMapping
+);
+
+#if (VER_PRODUCTBUILD >= 2195)
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+SeSetSecurityDescriptorInfoEx (
+  /*IN*/ PVOID                    Object /*OPTIONAL*/,
+  /*IN*/ PSECURITY_INFORMATION    SecurityInformation,
+  /*IN*/ PSECURITY_DESCRIPTOR     ModificationDescriptor,
+  /*IN OUT*/ PSECURITY_DESCRIPTOR *ObjectsSecurityDescriptor,
+  /*IN*/ ULONG                    AutoInheritFlags,
+  /*IN*/ POOL_TYPE                PoolType,
+  /*IN*/ PGENERIC_MAPPING         GenericMapping
+);
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+SeTokenIsAdmin (
+  /*IN*/ PACCESS_TOKEN Token
+);
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+SeTokenIsRestricted (
+  /*IN*/ PACCESS_TOKEN Token
+);
+
+#endif /* (VER_PRODUCTBUILD >= 2195) */
+
+NTKERNELAPI
+TOKEN_TYPE
+NTAPI
+SeTokenType (
+  /*IN*/ PACCESS_TOKEN Token
+);
+
+NTKERNELAPI
+VOID
+NTAPI
+SeUnlockSubjectContext (
+  /*IN*/ PSECURITY_SUBJECT_CONTEXT SubjectContext
+);
+
+NTKERNELAPI
+NTSTATUS
+SeUnregisterLogonSessionTerminatedRoutine (
+  /*IN*/ PSE_LOGON_SESSION_TERMINATED_ROUTINE CallbackRoutine
+);
+
+#if (VER_PRODUCTBUILD >= 2195)
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtAdjustPrivilegesToken (
+  /*IN*/ HANDLE               TokenHandle,
+  /*IN*/ BOOLEAN              DisableAllPrivileges,
+  /*IN*/ PTOKEN_PRIVILEGES    NewState,
+  /*IN*/ ULONG                BufferLength,
+  /*OUT*/ PTOKEN_PRIVILEGES   PreviousState /*OPTIONAL*/,
+  /*OUT*/ PULONG              ReturnLength
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwAdjustPrivilegesToken (
+  /*IN*/ HANDLE               TokenHandle,
+  /*IN*/ BOOLEAN              DisableAllPrivileges,
+  /*IN*/ PTOKEN_PRIVILEGES    NewState,
+  /*IN*/ ULONG                BufferLength,
+  /*OUT*/ PTOKEN_PRIVILEGES   PreviousState /*OPTIONAL*/,
+  /*OUT*/ PULONG              ReturnLength
+);
+
+#endif /* (VER_PRODUCTBUILD >= 2195) */
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtAlertThread (
+  /*IN*/ HANDLE ThreadHandle
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwAlertThread (
+  /*IN*/ HANDLE ThreadHandle
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtAllocateVirtualMemory (
+  /*IN*/ HANDLE       ProcessHandle,
+  /*IN OUT*/ PVOID    *BaseAddress,
+  /*IN*/ ULONG        ZeroBits,
+  /*IN OUT*/ PULONG   RegionSize,
+  /*IN*/ ULONG        AllocationType,
+  /*IN*/ ULONG        Protect
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwAllocateVirtualMemory (
+  /*IN*/ HANDLE       ProcessHandle,
+  /*IN OUT*/ PVOID    *BaseAddress,
+  /*IN*/ ULONG        ZeroBits,
+  /*IN OUT*/ PULONG   RegionSize,
+  /*IN*/ ULONG        AllocationType,
+  /*IN*/ ULONG        Protect
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtAccessCheckAndAuditAlarm (
+  /*IN*/ PUNICODE_STRING      SubsystemName,
+  /*IN*/ PVOID                HandleId,
+  /*IN*/ PUNICODE_STRING      ObjectTypeName,
+  /*IN*/ PUNICODE_STRING      ObjectName,
+  /*IN*/ PSECURITY_DESCRIPTOR SecurityDescriptor,
+  /*IN*/ ACCESS_MASK          DesiredAccess,
+  /*IN*/ PGENERIC_MAPPING     GenericMapping,
+  /*IN*/ BOOLEAN              ObjectCreation,
+  /*OUT*/ PACCESS_MASK        GrantedAccess,
+  /*OUT*/ PBOOLEAN            AccessStatus,
+  /*OUT*/ PBOOLEAN            GenerateOnClose
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwAccessCheckAndAuditAlarm (
+  /*IN*/ PUNICODE_STRING      SubsystemName,
+  /*IN*/ PVOID                HandleId,
+  /*IN*/ PUNICODE_STRING      ObjectTypeName,
+  /*IN*/ PUNICODE_STRING      ObjectName,
+  /*IN*/ PSECURITY_DESCRIPTOR SecurityDescriptor,
+  /*IN*/ ACCESS_MASK          DesiredAccess,
+  /*IN*/ PGENERIC_MAPPING     GenericMapping,
+  /*IN*/ BOOLEAN              ObjectCreation,
+  /*OUT*/ PACCESS_MASK        GrantedAccess,
+  /*OUT*/ PBOOLEAN            AccessStatus,
+  /*OUT*/ PBOOLEAN            GenerateOnClose
+);
+
+#if (VER_PRODUCTBUILD >= 2195)
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtCancelIoFile (
+  /*IN*/ HANDLE               FileHandle,
+  /*OUT*/ PIO_STATUS_BLOCK    IoStatusBlock
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwCancelIoFile (
+  /*IN*/ HANDLE               FileHandle,
+  /*OUT*/ PIO_STATUS_BLOCK    IoStatusBlock
+);
+
+#endif /* (VER_PRODUCTBUILD >= 2195) */
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtClearEvent (
+  /*IN*/ HANDLE EventHandle
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwClearEvent (
+  /*IN*/ HANDLE EventHandle
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtCloseObjectAuditAlarm (
+  /*IN*/ PUNICODE_STRING  SubsystemName,
+  /*IN*/ PVOID            HandleId,
+  /*IN*/ BOOLEAN          GenerateOnClose
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwCloseObjectAuditAlarm (
+  /*IN*/ PUNICODE_STRING  SubsystemName,
+  /*IN*/ PVOID            HandleId,
+  /*IN*/ BOOLEAN          GenerateOnClose
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtCreateSection (
+  /*OUT*/ PHANDLE             SectionHandle,
+  /*IN*/ ACCESS_MASK          DesiredAccess,
+  /*IN*/ POBJECT_ATTRIBUTES   ObjectAttributes /*OPTIONAL*/,
+  /*IN*/ PLARGE_INTEGER       MaximumSize /*OPTIONAL*/,
+  /*IN*/ ULONG                SectionPageProtection,
+  /*IN*/ ULONG                AllocationAttributes,
+  /*IN*/ HANDLE               FileHandle /*OPTIONAL*/
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwCreateSection (
+  /*OUT*/ PHANDLE             SectionHandle,
+  /*IN*/ ACCESS_MASK          DesiredAccess,
+  /*IN*/ POBJECT_ATTRIBUTES   ObjectAttributes /*OPTIONAL*/,
+  /*IN*/ PLARGE_INTEGER       MaximumSize /*OPTIONAL*/,
+  /*IN*/ ULONG                SectionPageProtection,
+  /*IN*/ ULONG                AllocationAttributes,
+  /*IN*/ HANDLE               FileHandle /*OPTIONAL*/
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtCreateSymbolicLinkObject (
+  /*OUT*/ PHANDLE             SymbolicLinkHandle,
+  /*IN*/ ACCESS_MASK          DesiredAccess,
+  /*IN*/ POBJECT_ATTRIBUTES   ObjectAttributes,
+  /*IN*/ PUNICODE_STRING      TargetName
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwCreateSymbolicLinkObject (
+  /*OUT*/ PHANDLE             SymbolicLinkHandle,
+  /*IN*/ ACCESS_MASK          DesiredAccess,
+  /*IN*/ POBJECT_ATTRIBUTES   ObjectAttributes,
+  /*IN*/ PUNICODE_STRING      TargetName
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtDeleteFile (
+  /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwDeleteFile (
+  /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtDeleteValueKey (
+  /*IN*/ HANDLE           Handle,
+  /*IN*/ PUNICODE_STRING  Name
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwDeleteValueKey (
+  /*IN*/ HANDLE           Handle,
+  /*IN*/ PUNICODE_STRING  Name
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtDeviceIoControlFile (
+  /*IN*/ HANDLE               FileHandle,
+  /*IN*/ HANDLE               Event /*OPTIONAL*/,
+  /*IN*/ PIO_APC_ROUTINE      ApcRoutine /*OPTIONAL*/,
+  /*IN*/ PVOID                ApcContext /*OPTIONAL*/,
+  /*OUT*/ PIO_STATUS_BLOCK    IoStatusBlock,
+  /*IN*/ ULONG                IoControlCode,
+  /*IN*/ PVOID                InputBuffer /*OPTIONAL*/,
+  /*IN*/ ULONG                InputBufferLength,
+  /*OUT*/ PVOID               OutputBuffer /*OPTIONAL*/,
+  /*IN*/ ULONG                OutputBufferLength
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwDeviceIoControlFile (
+  /*IN*/ HANDLE               FileHandle,
+  /*IN*/ HANDLE               Event /*OPTIONAL*/,
+  /*IN*/ PIO_APC_ROUTINE      ApcRoutine /*OPTIONAL*/,
+  /*IN*/ PVOID                ApcContext /*OPTIONAL*/,
+  /*OUT*/ PIO_STATUS_BLOCK    IoStatusBlock,
+  /*IN*/ ULONG                IoControlCode,
+  /*IN*/ PVOID                InputBuffer /*OPTIONAL*/,
+  /*IN*/ ULONG                InputBufferLength,
+  /*OUT*/ PVOID               OutputBuffer /*OPTIONAL*/,
+  /*IN*/ ULONG                OutputBufferLength
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtDisplayString (
+  /*IN*/ PUNICODE_STRING String
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwDisplayString (
+  /*IN*/ PUNICODE_STRING String
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtDuplicateObject (
+  /*IN*/ HANDLE       SourceProcessHandle,
+  /*IN*/ HANDLE       SourceHandle,
+  /*IN*/ HANDLE       TargetProcessHandle /*OPTIONAL*/,
+  /*OUT*/ PHANDLE     TargetHandle /*OPTIONAL*/,
+  /*IN*/ ACCESS_MASK  DesiredAccess,
+  /*IN*/ ULONG        HandleAttributes,
+  /*IN*/ ULONG        Options
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwDuplicateObject (
+  /*IN*/ HANDLE       SourceProcessHandle,
+  /*IN*/ HANDLE       SourceHandle,
+  /*IN*/ HANDLE       TargetProcessHandle /*OPTIONAL*/,
+  /*OUT*/ PHANDLE     TargetHandle /*OPTIONAL*/,
+  /*IN*/ ACCESS_MASK  DesiredAccess,
+  /*IN*/ ULONG        HandleAttributes,
+  /*IN*/ ULONG        Options
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtDuplicateToken (
+  /*IN*/ HANDLE               ExistingTokenHandle,
+  /*IN*/ ACCESS_MASK          DesiredAccess,
+  /*IN*/ POBJECT_ATTRIBUTES   ObjectAttributes,
+  /*IN*/ BOOLEAN              EffectiveOnly,
+  /*IN*/ TOKEN_TYPE           TokenType,
+  /*OUT*/ PHANDLE             NewTokenHandle
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwDuplicateToken (
+  /*IN*/ HANDLE               ExistingTokenHandle,
+  /*IN*/ ACCESS_MASK          DesiredAccess,
+  /*IN*/ POBJECT_ATTRIBUTES   ObjectAttributes,
+  /*IN*/ BOOLEAN              EffectiveOnly,
+  /*IN*/ TOKEN_TYPE           TokenType,
+  /*OUT*/ PHANDLE             NewTokenHandle
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtFlushInstructionCache (
+  /*IN*/ HANDLE   ProcessHandle,
+  /*IN*/ PVOID    BaseAddress /*OPTIONAL*/,
+  /*IN*/ ULONG    FlushSize
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwFlushInstructionCache (
+  /*IN*/ HANDLE   ProcessHandle,
+  /*IN*/ PVOID    BaseAddress /*OPTIONAL*/,
+  /*IN*/ ULONG    FlushSize
+);
+
+#if (VER_PRODUCTBUILD >= 2195)
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtFlushVirtualMemory (
+  /*IN*/ HANDLE               ProcessHandle,
+  /*IN OUT*/ PVOID            *BaseAddress,
+  /*IN OUT*/ PULONG           FlushSize,
+  /*OUT*/ PIO_STATUS_BLOCK    IoStatusBlock
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwFlushVirtualMemory (
+  /*IN*/ HANDLE               ProcessHandle,
+  /*IN OUT*/ PVOID            *BaseAddress,
+  /*IN OUT*/ PULONG           FlushSize,
+  /*OUT*/ PIO_STATUS_BLOCK    IoStatusBlock
+);
+
+#endif /* (VER_PRODUCTBUILD >= 2195) */
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtFreeVirtualMemory (
+  /*IN*/ HANDLE       ProcessHandle,
+  /*IN OUT*/ PVOID    *BaseAddress,
+  /*IN OUT*/ PULONG   RegionSize,
+  /*IN*/ ULONG        FreeType
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwFreeVirtualMemory (
+  /*IN*/ HANDLE       ProcessHandle,
+  /*IN OUT*/ PVOID    *BaseAddress,
+  /*IN OUT*/ PULONG   RegionSize,
+  /*IN*/ ULONG        FreeType
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtFsControlFile (
+  /*IN*/ HANDLE               FileHandle,
+  /*IN*/ HANDLE               Event /*OPTIONAL*/,
+  /*IN*/ PIO_APC_ROUTINE      ApcRoutine /*OPTIONAL*/,
+  /*IN*/ PVOID                ApcContext /*OPTIONAL*/,
+  /*OUT*/ PIO_STATUS_BLOCK    IoStatusBlock,
+  /*IN*/ ULONG                FsControlCode,
+  /*IN*/ PVOID                InputBuffer /*OPTIONAL*/,
+  /*IN*/ ULONG                InputBufferLength,
+  /*OUT*/ PVOID               OutputBuffer /*OPTIONAL*/,
+  /*IN*/ ULONG                OutputBufferLength
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwFsControlFile (
+  /*IN*/ HANDLE               FileHandle,
+  /*IN*/ HANDLE               Event /*OPTIONAL*/,
+  /*IN*/ PIO_APC_ROUTINE      ApcRoutine /*OPTIONAL*/,
+  /*IN*/ PVOID                ApcContext /*OPTIONAL*/,
+  /*OUT*/ PIO_STATUS_BLOCK    IoStatusBlock,
+  /*IN*/ ULONG                FsControlCode,
+  /*IN*/ PVOID                InputBuffer /*OPTIONAL*/,
+  /*IN*/ ULONG                InputBufferLength,
+  /*OUT*/ PVOID               OutputBuffer /*OPTIONAL*/,
+  /*IN*/ ULONG                OutputBufferLength
+);
+
+#if (VER_PRODUCTBUILD >= 2195)
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtInitiatePowerAction (
+  /*IN*/ POWER_ACTION         SystemAction,
+  /*IN*/ SYSTEM_POWER_STATE   MinSystemState,
+  /*IN*/ ULONG                Flags,
+  /*IN*/ BOOLEAN              Asynchronous
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwInitiatePowerAction (
+  /*IN*/ POWER_ACTION         SystemAction,
+  /*IN*/ SYSTEM_POWER_STATE   MinSystemState,
+  /*IN*/ ULONG                Flags,
+  /*IN*/ BOOLEAN              Asynchronous
+);
+
+#endif /* (VER_PRODUCTBUILD >= 2195) */
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtLoadDriver (
+    /* "\\Registry\\Machine\\System\\CurrentControlSet\\Services\\<DriverName>" */
+  /*IN*/ PUNICODE_STRING RegistryPath
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwLoadDriver (
+    /* "\\Registry\\Machine\\System\\CurrentControlSet\\Services\\<DriverName>" */
+  /*IN*/ PUNICODE_STRING RegistryPath
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtLoadKey (
+  /*IN*/ POBJECT_ATTRIBUTES KeyObjectAttributes,
+  /*IN*/ POBJECT_ATTRIBUTES FileObjectAttributes
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwLoadKey (
+  /*IN*/ POBJECT_ATTRIBUTES KeyObjectAttributes,
+  /*IN*/ POBJECT_ATTRIBUTES FileObjectAttributes
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtNotifyChangeKey (
+  /*IN*/ HANDLE               KeyHandle,
+  /*IN*/ HANDLE               EventHandle /*OPTIONAL*/,
+  /*IN*/ PIO_APC_ROUTINE      ApcRoutine /*OPTIONAL*/,
+  /*IN*/ PVOID                ApcContext /*OPTIONAL*/,
+  /*OUT*/ PIO_STATUS_BLOCK    IoStatusBlock,
+  /*IN*/ ULONG                NotifyFilter,
+  /*IN*/ BOOLEAN              WatchSubtree,
+  /*IN*/ PVOID                Buffer,
+  /*IN*/ ULONG                BufferLength,
+  /*IN*/ BOOLEAN              Asynchronous
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwNotifyChangeKey (
+  /*IN*/ HANDLE               KeyHandle,
+  /*IN*/ HANDLE               EventHandle /*OPTIONAL*/,
+  /*IN*/ PIO_APC_ROUTINE      ApcRoutine /*OPTIONAL*/,
+  /*IN*/ PVOID                ApcContext /*OPTIONAL*/,
+  /*OUT*/ PIO_STATUS_BLOCK    IoStatusBlock,
+  /*IN*/ ULONG                NotifyFilter,
+  /*IN*/ BOOLEAN              WatchSubtree,
+  /*IN*/ PVOID                Buffer,
+  /*IN*/ ULONG                BufferLength,
+  /*IN*/ BOOLEAN              Asynchronous
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtOpenDirectoryObject (
+  /*OUT*/ PHANDLE             DirectoryHandle,
+  /*IN*/ ACCESS_MASK          DesiredAccess,
+  /*IN*/ POBJECT_ATTRIBUTES   ObjectAttributes
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwOpenDirectoryObject (
+  /*OUT*/ PHANDLE             DirectoryHandle,
+  /*IN*/ ACCESS_MASK          DesiredAccess,
+  /*IN*/ POBJECT_ATTRIBUTES   ObjectAttributes
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtOpenEvent (
+  /*OUT*/ PHANDLE             EventHandle,
+  /*IN*/ ACCESS_MASK          DesiredAccess,
+  /*IN*/ POBJECT_ATTRIBUTES   ObjectAttributes
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwOpenEvent (
+  /*OUT*/ PHANDLE             EventHandle,
+  /*IN*/ ACCESS_MASK          DesiredAccess,
+  /*IN*/ POBJECT_ATTRIBUTES   ObjectAttributes
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtOpenProcess (
+  /*OUT*/ PHANDLE             ProcessHandle,
+  /*IN*/ ACCESS_MASK          DesiredAccess,
+  /*IN*/ POBJECT_ATTRIBUTES   ObjectAttributes,
+  /*IN*/ PCLIENT_ID           ClientId /*OPTIONAL*/
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwOpenProcess (
+  /*OUT*/ PHANDLE             ProcessHandle,
+  /*IN*/ ACCESS_MASK          DesiredAccess,
+  /*IN*/ POBJECT_ATTRIBUTES   ObjectAttributes,
+  /*IN*/ PCLIENT_ID           ClientId /*OPTIONAL*/
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtOpenProcessToken (
+  /*IN*/ HANDLE       ProcessHandle,
+  /*IN*/ ACCESS_MASK  DesiredAccess,
+  /*OUT*/ PHANDLE     TokenHandle
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwOpenProcessToken (
+  /*IN*/ HANDLE       ProcessHandle,
+  /*IN*/ ACCESS_MASK  DesiredAccess,
+  /*OUT*/ PHANDLE     TokenHandle
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtOpenThread (
+  /*OUT*/ PHANDLE             ThreadHandle,
+  /*IN*/ ACCESS_MASK          DesiredAccess,
+  /*IN*/ POBJECT_ATTRIBUTES   ObjectAttributes,
+  /*IN*/ PCLIENT_ID           ClientId
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwOpenThread (
+  /*OUT*/ PHANDLE             ThreadHandle,
+  /*IN*/ ACCESS_MASK          DesiredAccess,
+  /*IN*/ POBJECT_ATTRIBUTES   ObjectAttributes,
+  /*IN*/ PCLIENT_ID           ClientId
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtOpenThreadToken (
+  /*IN*/ HANDLE       ThreadHandle,
+  /*IN*/ ACCESS_MASK  DesiredAccess,
+  /*IN*/ BOOLEAN      OpenAsSelf,
+  /*OUT*/ PHANDLE     TokenHandle
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwOpenThreadToken (
+  /*IN*/ HANDLE       ThreadHandle,
+  /*IN*/ ACCESS_MASK  DesiredAccess,
+  /*IN*/ BOOLEAN      OpenAsSelf,
+  /*OUT*/ PHANDLE     TokenHandle
+);
+
+#if (VER_PRODUCTBUILD >= 2195)
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtPowerInformation (
+  /*IN*/ POWER_INFORMATION_LEVEL  PowerInformationLevel,
+  /*IN*/ PVOID                    InputBuffer /*OPTIONAL*/,
+  /*IN*/ ULONG                    InputBufferLength,
+  /*OUT*/ PVOID                   OutputBuffer /*OPTIONAL*/,
+  /*IN*/ ULONG                    OutputBufferLength
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwPowerInformation (
+  /*IN*/ POWER_INFORMATION_LEVEL  PowerInformationLevel,
+  /*IN*/ PVOID                    InputBuffer /*OPTIONAL*/,
+  /*IN*/ ULONG                    InputBufferLength,
+  /*OUT*/ PVOID                   OutputBuffer /*OPTIONAL*/,
+  /*IN*/ ULONG                    OutputBufferLength
+);
+
+#endif /* (VER_PRODUCTBUILD >= 2195) */
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtPulseEvent (
+  /*IN*/ HANDLE   EventHandle,
+  /*OUT*/ PULONG  PreviousState /*OPTIONAL*/
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwPulseEvent (
+  /*IN*/ HANDLE   EventHandle,
+  /*OUT*/ PULONG  PreviousState /*OPTIONAL*/
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtQueryDefaultLocale (
+  /*IN*/ BOOLEAN  ThreadOrSystem,
+  /*OUT*/ PLCID   Locale
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwQueryDefaultLocale (
+  /*IN*/ BOOLEAN  ThreadOrSystem,
+  /*OUT*/ PLCID   Locale
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtQueryDirectoryFile (
+  /*IN*/ HANDLE                   FileHandle,
+  /*IN*/ HANDLE                   Event /*OPTIONAL*/,
+  /*IN*/ PIO_APC_ROUTINE          ApcRoutine /*OPTIONAL*/,
+  /*IN*/ PVOID                    ApcContext /*OPTIONAL*/,
+  /*OUT*/ PIO_STATUS_BLOCK        IoStatusBlock,
+  /*OUT*/ PVOID                   FileInformation,
+  /*IN*/ ULONG                    Length,
+  /*IN*/ FILE_INFORMATION_CLASS   FileInformationClass,
+  /*IN*/ BOOLEAN                  ReturnSingleEntry,
+  /*IN*/ PUNICODE_STRING          FileName /*OPTIONAL*/,
+  /*IN*/ BOOLEAN                  RestartScan
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwQueryDirectoryFile (
+  /*IN*/ HANDLE                   FileHandle,
+  /*IN*/ HANDLE                   Event /*OPTIONAL*/,
+  /*IN*/ PIO_APC_ROUTINE          ApcRoutine /*OPTIONAL*/,
+  /*IN*/ PVOID                    ApcContext /*OPTIONAL*/,
+  /*OUT*/ PIO_STATUS_BLOCK        IoStatusBlock,
+  /*OUT*/ PVOID                   FileInformation,
+  /*IN*/ ULONG                    Length,
+  /*IN*/ FILE_INFORMATION_CLASS   FileInformationClass,
+  /*IN*/ BOOLEAN                  ReturnSingleEntry,
+  /*IN*/ PUNICODE_STRING          FileName /*OPTIONAL*/,
+  /*IN*/ BOOLEAN                  RestartScan
+);
+
+#if (VER_PRODUCTBUILD >= 2195)
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtQueryDirectoryObject (
+  /*IN*/ HANDLE       DirectoryHandle,
+  /*OUT*/ PVOID       Buffer,
+  /*IN*/ ULONG        Length,
+  /*IN*/ BOOLEAN      ReturnSingleEntry,
+  /*IN*/ BOOLEAN      RestartScan,
+  /*IN OUT*/ PULONG   Context,
+  /*OUT*/ PULONG      ReturnLength /*OPTIONAL*/
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwQueryDirectoryObject (
+  /*IN*/ HANDLE       DirectoryHandle,
+  /*OUT*/ PVOID       Buffer,
+  /*IN*/ ULONG        Length,
+  /*IN*/ BOOLEAN      ReturnSingleEntry,
+  /*IN*/ BOOLEAN      RestartScan,
+  /*IN OUT*/ PULONG   Context,
+  /*OUT*/ PULONG      ReturnLength /*OPTIONAL*/
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtQueryEaFile (
+  /*IN*/ HANDLE               FileHandle,
+  /*OUT*/ PIO_STATUS_BLOCK    IoStatusBlock,
+  /*OUT*/ PVOID               Buffer,
+  /*IN*/ ULONG                Length,
+  /*IN*/ BOOLEAN              ReturnSingleEntry,
+  /*IN*/ PVOID                EaList /*OPTIONAL*/,
+  /*IN*/ ULONG                EaListLength,
+  /*IN*/ PULONG               EaIndex /*OPTIONAL*/,
+  /*IN*/ BOOLEAN              RestartScan
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwQueryEaFile (
+  /*IN*/ HANDLE               FileHandle,
+  /*OUT*/ PIO_STATUS_BLOCK    IoStatusBlock,
+  /*OUT*/ PVOID               Buffer,
+  /*IN*/ ULONG                Length,
+  /*IN*/ BOOLEAN              ReturnSingleEntry,
+  /*IN*/ PVOID                EaList /*OPTIONAL*/,
+  /*IN*/ ULONG                EaListLength,
+  /*IN*/ PULONG               EaIndex /*OPTIONAL*/,
+  /*IN*/ BOOLEAN              RestartScan
+);
+
+#endif /* (VER_PRODUCTBUILD >= 2195) */
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtQueryInformationProcess (
+  /*IN*/ HANDLE           ProcessHandle,
+  /*IN*/ PROCESSINFOCLASS ProcessInformationClass,
+  /*OUT*/ PVOID           ProcessInformation,
+  /*IN*/ ULONG            ProcessInformationLength,
+  /*OUT*/ PULONG          ReturnLength /*OPTIONAL*/
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwQueryInformationProcess (
+  /*IN*/ HANDLE           ProcessHandle,
+  /*IN*/ PROCESSINFOCLASS ProcessInformationClass,
+  /*OUT*/ PVOID           ProcessInformation,
+  /*IN*/ ULONG            ProcessInformationLength,
+  /*OUT*/ PULONG          ReturnLength /*OPTIONAL*/
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtQueryInformationToken (
+  /*IN*/ HANDLE                   TokenHandle,
+  /*IN*/ TOKEN_INFORMATION_CLASS  TokenInformationClass,
+  /*OUT*/ PVOID                   TokenInformation,
+  /*IN*/ ULONG                    Length,
+  /*OUT*/ PULONG                  ResultLength
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwQueryInformationToken (
+  /*IN*/ HANDLE                   TokenHandle,
+  /*IN*/ TOKEN_INFORMATION_CLASS  TokenInformationClass,
+  /*OUT*/ PVOID                   TokenInformation,
+  /*IN*/ ULONG                    Length,
+  /*OUT*/ PULONG                  ResultLength
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtQueryObject (
+  /*IN*/ HANDLE                      ObjectHandle,
+  /*IN*/ OBJECT_INFORMATION_CLASS    ObjectInformationClass,
+  /*OUT*/ PVOID                      ObjectInformation,
+  /*IN*/ ULONG                       Length,
+  /*OUT*/ PULONG                     ResultLength
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwQueryObject (
+  /*IN*/ HANDLE                      ObjectHandle,
+  /*IN*/ OBJECT_INFORMATION_CLASS    ObjectInformationClass,
+  /*OUT*/ PVOID                      ObjectInformation,
+  /*IN*/ ULONG                       Length,
+  /*OUT*/ PULONG                     ResultLength
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtQuerySection (
+  /*IN*/ HANDLE                       SectionHandle,
+  /*IN*/ SECTION_INFORMATION_CLASS    SectionInformationClass,
+  /*OUT*/ PVOID                       SectionInformation,
+  /*IN*/ ULONG                        SectionInformationLength,
+  /*OUT*/ PULONG                      ResultLength /*OPTIONAL*/
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwQuerySection (
+  /*IN*/ HANDLE                       SectionHandle,
+  /*IN*/ SECTION_INFORMATION_CLASS    SectionInformationClass,
+  /*OUT*/ PVOID                       SectionInformation,
+  /*IN*/ ULONG                        SectionInformationLength,
+  /*OUT*/ PULONG                      ResultLength /*OPTIONAL*/
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtQuerySecurityObject (
+  /*IN*/ HANDLE                   FileHandle,
+  /*IN*/ SECURITY_INFORMATION     SecurityInformation,
+  /*OUT*/ PSECURITY_DESCRIPTOR    SecurityDescriptor,
+  /*IN*/ ULONG                    Length,
+  /*OUT*/ PULONG                  ResultLength
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwQuerySecurityObject (
+  /*IN*/ HANDLE                   FileHandle,
+  /*IN*/ SECURITY_INFORMATION     SecurityInformation,
+  /*OUT*/ PSECURITY_DESCRIPTOR    SecurityDescriptor,
+  /*IN*/ ULONG                    Length,
+  /*OUT*/ PULONG                  ResultLength
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtQuerySystemInformation (
+  /*IN*/ SYSTEM_INFORMATION_CLASS SystemInformationClass,
+  /*OUT*/ PVOID                   SystemInformation,
+  /*IN*/ ULONG                    Length,
+  /*OUT*/ PULONG                  ReturnLength
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwQuerySystemInformation (
+  /*IN*/ SYSTEM_INFORMATION_CLASS SystemInformationClass,
+  /*OUT*/ PVOID                   SystemInformation,
+  /*IN*/ ULONG                    Length,
+  /*OUT*/ PULONG                  ReturnLength
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtQueryVolumeInformationFile (
+  /*IN*/ HANDLE               FileHandle,
+  /*OUT*/ PIO_STATUS_BLOCK    IoStatusBlock,
+  /*OUT*/ PVOID               FsInformation,
+  /*IN*/ ULONG                Length,
+  /*IN*/ FS_INFORMATION_CLASS FsInformationClass
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwQueryVolumeInformationFile (
+  /*IN*/ HANDLE               FileHandle,
+  /*OUT*/ PIO_STATUS_BLOCK    IoStatusBlock,
+  /*OUT*/ PVOID               FsInformation,
+  /*IN*/ ULONG                Length,
+  /*IN*/ FS_INFORMATION_CLASS FsInformationClass
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtReplaceKey (
+  /*IN*/ POBJECT_ATTRIBUTES   NewFileObjectAttributes,
+  /*IN*/ HANDLE               KeyHandle,
+  /*IN*/ POBJECT_ATTRIBUTES   OldFileObjectAttributes
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwReplaceKey (
+  /*IN*/ POBJECT_ATTRIBUTES   NewFileObjectAttributes,
+  /*IN*/ HANDLE               KeyHandle,
+  /*IN*/ POBJECT_ATTRIBUTES   OldFileObjectAttributes
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtResetEvent (
+  /*IN*/ HANDLE   EventHandle,
+  /*OUT*/ PULONG  PreviousState /*OPTIONAL*/
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwResetEvent (
+  /*IN*/ HANDLE   EventHandle,
+  /*OUT*/ PULONG  PreviousState /*OPTIONAL*/
+);
+
+#if (VER_PRODUCTBUILD >= 2195)
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtRestoreKey (
+  /*IN*/ HANDLE   KeyHandle,
+  /*IN*/ HANDLE   FileHandle,
+  /*IN*/ ULONG    Flags
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwRestoreKey (
+  /*IN*/ HANDLE   KeyHandle,
+  /*IN*/ HANDLE   FileHandle,
+  /*IN*/ ULONG    Flags
+);
+
+#endif /* (VER_PRODUCTBUILD >= 2195) */
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtSaveKey (
+  /*IN*/ HANDLE KeyHandle,
+  /*IN*/ HANDLE FileHandle
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwSaveKey (
+  /*IN*/ HANDLE KeyHandle,
+  /*IN*/ HANDLE FileHandle
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtSetDefaultLocale (
+  /*IN*/ BOOLEAN  ThreadOrSystem,
+  /*IN*/ LCID     Locale
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwSetDefaultLocale (
+  /*IN*/ BOOLEAN  ThreadOrSystem,
+  /*IN*/ LCID     Locale
+);
+
+#if (VER_PRODUCTBUILD >= 2195)
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtSetDefaultUILanguage (
+  /*IN*/ LANGID LanguageId
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwSetDefaultUILanguage (
+  /*IN*/ LANGID LanguageId
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtSetEaFile (
+  /*IN*/ HANDLE               FileHandle,
+  /*OUT*/ PIO_STATUS_BLOCK    IoStatusBlock,
+  /*OUT*/ PVOID               Buffer,
+  /*IN*/ ULONG                Length
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwSetEaFile (
+  /*IN*/ HANDLE               FileHandle,
+  /*OUT*/ PIO_STATUS_BLOCK    IoStatusBlock,
+  /*OUT*/ PVOID               Buffer,
+  /*IN*/ ULONG                Length
+);
+
+#endif /* (VER_PRODUCTBUILD >= 2195) */
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtSetEvent (
+  /*IN*/ HANDLE   EventHandle,
+  /*OUT*/ PULONG  PreviousState /*OPTIONAL*/
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwSetEvent (
+  /*IN*/ HANDLE   EventHandle,
+  /*OUT*/ PULONG  PreviousState /*OPTIONAL*/
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtSetInformationObject (
+  /*IN*/ HANDLE                       ObjectHandle,
+  /*IN*/ OBJECT_INFORMATION_CLASS    ObjectInformationClass,
+  /*IN*/ PVOID                        ObjectInformation,
+  /*IN*/ ULONG                        ObjectInformationLength
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwSetInformationObject (
+  /*IN*/ HANDLE                       ObjectHandle,
+  /*IN*/ OBJECT_INFORMATION_CLASS    ObjectInformationClass,
+  /*IN*/ PVOID                        ObjectInformation,
+  /*IN*/ ULONG                        ObjectInformationLength
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtSetInformationProcess (
+  /*IN*/ HANDLE           ProcessHandle,
+  /*IN*/ PROCESSINFOCLASS ProcessInformationClass,
+  /*IN*/ PVOID            ProcessInformation,
+  /*IN*/ ULONG            ProcessInformationLength
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwSetInformationProcess (
+  /*IN*/ HANDLE           ProcessHandle,
+  /*IN*/ PROCESSINFOCLASS ProcessInformationClass,
+  /*IN*/ PVOID            ProcessInformation,
+  /*IN*/ ULONG            ProcessInformationLength
+);
+
+#if (VER_PRODUCTBUILD >= 2195)
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtSetSecurityObject (
+  /*IN*/ HANDLE               Handle,
+  /*IN*/ SECURITY_INFORMATION SecurityInformation,
+  /*IN*/ PSECURITY_DESCRIPTOR SecurityDescriptor
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwSetSecurityObject (
+  /*IN*/ HANDLE               Handle,
+  /*IN*/ SECURITY_INFORMATION SecurityInformation,
+  /*IN*/ PSECURITY_DESCRIPTOR SecurityDescriptor
+);
+
+#endif /* (VER_PRODUCTBUILD >= 2195) */
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtSetSystemInformation (
+  /*IN*/ SYSTEM_INFORMATION_CLASS SystemInformationClass,
+  /*IN*/ PVOID                    SystemInformation,
+  /*IN*/ ULONG                    Length
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwSetSystemInformation (
+  /*IN*/ SYSTEM_INFORMATION_CLASS SystemInformationClass,
+  /*IN*/ PVOID                    SystemInformation,
+  /*IN*/ ULONG                    Length
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtSetSystemTime (
+  /*IN*/ PLARGE_INTEGER   NewTime,
+  /*OUT*/ PLARGE_INTEGER  OldTime /*OPTIONAL*/
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwSetSystemTime (
+  /*IN*/ PLARGE_INTEGER   NewTime,
+  /*OUT*/ PLARGE_INTEGER  OldTime /*OPTIONAL*/
+);
+
+#if (VER_PRODUCTBUILD >= 2195)
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtSetVolumeInformationFile (
+  /*IN*/ HANDLE               FileHandle,
+  /*OUT*/ PIO_STATUS_BLOCK    IoStatusBlock,
+  /*IN*/ PVOID                FsInformation,
+  /*IN*/ ULONG                Length,
+  /*IN*/ FS_INFORMATION_CLASS FsInformationClass
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwSetVolumeInformationFile (
+  /*IN*/ HANDLE               FileHandle,
+  /*OUT*/ PIO_STATUS_BLOCK    IoStatusBlock,
+  /*IN*/ PVOID                FsInformation,
+  /*IN*/ ULONG                Length,
+  /*IN*/ FS_INFORMATION_CLASS FsInformationClass
+);
+
+#endif /* (VER_PRODUCTBUILD >= 2195) */
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtTerminateProcess (
+  /*IN*/ HANDLE   ProcessHandle /*OPTIONAL*/,
+  /*IN*/ NTSTATUS ExitStatus
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwTerminateProcess (
+  /*IN*/ HANDLE   ProcessHandle /*OPTIONAL*/,
+  /*IN*/ NTSTATUS ExitStatus
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtUnloadDriver (
+    /* "\\Registry\\Machine\\System\\CurrentControlSet\\Services\\<DriverName>" */
+  /*IN*/ PUNICODE_STRING RegistryPath
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwUnloadDriver (
+    /* "\\Registry\\Machine\\System\\CurrentControlSet\\Services\\<DriverName>" */
+  /*IN*/ PUNICODE_STRING RegistryPath
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtUnloadKey (
+  /*IN*/ POBJECT_ATTRIBUTES KeyObjectAttributes
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwUnloadKey (
+  /*IN*/ POBJECT_ATTRIBUTES KeyObjectAttributes
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtWaitForSingleObject (
+  /*IN*/ HANDLE           Handle,
+  /*IN*/ BOOLEAN          Alertable,
+  /*IN*/ PLARGE_INTEGER   Timeout /*OPTIONAL*/
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwWaitForSingleObject (
+  /*IN*/ HANDLE           Handle,
+  /*IN*/ BOOLEAN          Alertable,
+  /*IN*/ PLARGE_INTEGER   Timeout /*OPTIONAL*/
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtWaitForMultipleObjects (
+  /*IN*/ ULONG            HandleCount,
+  /*IN*/ PHANDLE          Handles,
+  /*IN*/ WAIT_TYPE        WaitType,
+  /*IN*/ BOOLEAN          Alertable,
+  /*IN*/ PLARGE_INTEGER   Timeout /*OPTIONAL*/
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwWaitForMultipleObjects (
+  /*IN*/ ULONG            HandleCount,
+  /*IN*/ PHANDLE          Handles,
+  /*IN*/ WAIT_TYPE        WaitType,
+  /*IN*/ BOOLEAN          Alertable,
+  /*IN*/ PLARGE_INTEGER   Timeout /*OPTIONAL*/
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtYieldExecution (
+    VOID
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwYieldExecution (
+    VOID
+);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _NTIFS_ */
Index: Daodan/MinGW/include/ddk/ntpoapi.h
===================================================================
--- Daodan/MinGW/include/ddk/ntpoapi.h	(revision 1046)
+++ Daodan/MinGW/include/ddk/ntpoapi.h	(revision 1046)
@@ -0,0 +1,229 @@
+/*
+ * ntpoapi.h
+ *
+ * APIs for power management.
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __NTPOAPI_H
+#define __NTPOAPI_H
+
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "ntddk.h"
+#include "batclass.h"
+
+#define POWER_PERF_SCALE                  100
+#define PERF_LEVEL_TO_PERCENT(x)          (((x) * 1000) / (POWER_PERF_SCALE * 10))
+#define PERCENT_TO_PERF_LEVEL(x)          (((x) * POWER_PERF_SCALE * 10) / 1000)
+
+typedef struct _PROCESSOR_IDLE_TIMES {
+	ULONGLONG  StartTime;
+	ULONGLONG  EndTime;
+	ULONG  IdleHandlerReserved[4];
+} PROCESSOR_IDLE_TIMES, *PPROCESSOR_IDLE_TIMES;
+
+typedef BOOLEAN DDKFASTAPI
+(*PPROCESSOR_IDLE_HANDLER)(
+  /*IN OUT*/ PPROCESSOR_IDLE_TIMES IdleTimes);
+
+typedef struct _PROCESSOR_IDLE_HANDLER_INFO {
+  ULONG  HardwareLatency;
+  PPROCESSOR_IDLE_HANDLER  Handler;
+} PROCESSOR_IDLE_HANDLER_INFO, *PPROCESSOR_IDLE_HANDLER_INFO;
+
+typedef VOID DDKFASTAPI
+(*PSET_PROCESSOR_THROTTLE)(
+  /*IN*/ UCHAR  Throttle);
+
+typedef NTSTATUS DDKFASTAPI
+(*PSET_PROCESSOR_THROTTLE2)(
+  /*IN*/ UCHAR  Throttle);
+
+#define MAX_IDLE_HANDLERS                 3
+
+typedef struct _PROCESSOR_STATE_HANDLER {
+	UCHAR  ThrottleScale;
+	BOOLEAN  ThrottleOnIdle;
+	PSET_PROCESSOR_THROTTLE  SetThrottle;
+	ULONG  NumIdleHandlers;
+	PROCESSOR_IDLE_HANDLER_INFO  IdleHandler[MAX_IDLE_HANDLERS];
+} PROCESSOR_STATE_HANDLER, *PPROCESSOR_STATE_HANDLER;
+
+typedef enum _POWER_STATE_HANDLER_TYPE {
+	PowerStateSleeping1,
+	PowerStateSleeping2,
+	PowerStateSleeping3,
+	PowerStateSleeping4,
+	PowerStateSleeping4Firmware,
+	PowerStateShutdownReset,
+	PowerStateShutdownOff,
+	PowerStateMaximum
+} POWER_STATE_HANDLER_TYPE, *PPOWER_STATE_HANDLER_TYPE;
+
+typedef NTSTATUS DDKAPI
+(*PENTER_STATE_SYSTEM_HANDLER)(
+  /*IN*/ PVOID  SystemContext);
+
+typedef NTSTATUS DDKAPI
+(*PENTER_STATE_HANDLER)(
+  /*IN*/ PVOID  Context,
+  /*IN*/ PENTER_STATE_SYSTEM_HANDLER  SystemHandler  /*OPTIONAL*/,
+  /*IN*/ PVOID  SystemContext,
+  /*IN*/ LONG  NumberProcessors,
+  /*IN*/ VOLATILE PLONG  Number);
+
+typedef struct _POWER_STATE_HANDLER {
+	POWER_STATE_HANDLER_TYPE  Type;
+	BOOLEAN  RtcWake;
+	UCHAR  Spare[3];
+	PENTER_STATE_HANDLER  Handler;
+	PVOID  Context;
+} POWER_STATE_HANDLER, *PPOWER_STATE_HANDLER;
+
+typedef NTSTATUS STDCALL
+(*PENTER_STATE_NOTIFY_HANDLER)(
+  /*IN*/ POWER_STATE_HANDLER_TYPE  State,
+  /*IN*/ PVOID  Context,
+  /*IN*/ BOOLEAN  Entering);
+
+typedef struct _POWER_STATE_NOTIFY_HANDLER {
+	PENTER_STATE_NOTIFY_HANDLER  Handler;
+	PVOID  Context;
+} POWER_STATE_NOTIFY_HANDLER, *PPOWER_STATE_NOTIFY_HANDLER;
+
+NTOSAPI
+NTSTATUS
+DDKAPI
+NtPowerInformation(
+  /*IN*/ POWER_INFORMATION_LEVEL  InformationLevel,
+  /*IN*/ PVOID  InputBuffer /*OPTIONAL*/,
+  /*IN*/ ULONG  InputBufferLength,
+  /*OUT*/ PVOID  OutputBuffer /*OPTIONAL*/,
+  /*IN*/ ULONG  OutputBufferLength);
+
+#define PROCESSOR_STATE_TYPE_PERFORMANCE  1
+#define PROCESSOR_STATE_TYPE_THROTTLE     2
+
+typedef struct _PROCESSOR_PERF_LEVEL {
+  UCHAR  PercentFrequency;
+  UCHAR  Reserved;
+  USHORT  Flags;
+} PROCESSOR_PERF_LEVEL, *PPROCESSOR_PERF_LEVEL;
+
+typedef struct _PROCESSOR_PERF_STATE {
+  UCHAR  PercentFrequency;
+  UCHAR  MinCapacity;
+  USHORT  Power;
+  UCHAR  IncreaseLevel;
+  UCHAR  DecreaseLevel;
+  USHORT  Flags;
+  ULONG  IncreaseTime;
+  ULONG  DecreaseTime;
+  ULONG  IncreaseCount;
+  ULONG  DecreaseCount;
+  ULONGLONG  PerformanceTime;
+} PROCESSOR_PERF_STATE, *PPROCESSOR_PERF_STATE;
+
+typedef struct _PROCESSOR_STATE_HANDLER2 {
+	ULONG  NumIdleHandlers;
+	PROCESSOR_IDLE_HANDLER_INFO  IdleHandler[MAX_IDLE_HANDLERS];
+	PSET_PROCESSOR_THROTTLE2  SetPerfLevel;
+	ULONG  HardwareLatency;
+	UCHAR  NumPerfStates;
+	PROCESSOR_PERF_LEVEL  PerfLevel[1];
+} PROCESSOR_STATE_HANDLER2, *PPROCESSOR_STATE_HANDLER2;
+
+
+NTOSAPI
+NTSTATUS
+DDKAPI
+NtSetThreadExecutionState(
+  /*IN*/ EXECUTION_STATE  esFlags,
+  /*OUT*/ EXECUTION_STATE  *PreviousFlags);
+
+NTOSAPI
+NTSTATUS
+DDKAPI
+NtRequestWakeupLatency(
+  /*IN*/ LATENCY_TIME  latency);
+
+NTOSAPI
+NTSTATUS
+DDKAPI
+NtInitiatePowerAction(
+  /*IN*/ POWER_ACTION  SystemAction,
+  /*IN*/ SYSTEM_POWER_STATE  MinSystemState,
+  /*IN*/ ULONG  Flags,
+  /*IN*/ BOOLEAN  Asynchronous);
+
+NTOSAPI
+NTSTATUS
+DDKAPI
+NtSetSystemPowerState(
+  /*IN*/ POWER_ACTION SystemAction,
+  /*IN*/ SYSTEM_POWER_STATE MinSystemState,
+  /*IN*/ ULONG Flags);
+
+NTOSAPI
+NTSTATUS
+DDKAPI
+NtGetDevicePowerState(
+  /*IN*/ HANDLE  Device,
+  /*OUT*/ DEVICE_POWER_STATE  *State);
+
+NTOSAPI
+NTSTATUS
+DDKAPI
+NtCancelDeviceWakeupRequest(
+  /*IN*/ HANDLE  Device);
+
+NTOSAPI
+BOOLEAN
+DDKAPI
+NtIsSystemResumeAutomatic(
+  VOID);
+
+NTOSAPI
+NTSTATUS
+DDKAPI
+NtRequestDeviceWakeup(
+  /*IN*/ HANDLE  Device);
+
+#define WINLOGON_LOCK_ON_SLEEP            0x00000001
+
+typedef struct _PROCESSOR_POWER_INFORMATION {
+  ULONG  Number;
+  ULONG  MaxMhz;
+  ULONG  CurrentMhz;
+  ULONG  MhzLimit;
+  ULONG  MaxIdleState;
+  ULONG  CurrentIdleState;
+} PROCESSOR_POWER_INFORMATION, *PPROCESSOR_POWER_INFORMATION;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __NTPOAPI_H */
Index: Daodan/MinGW/include/ddk/ntstatus.h
===================================================================
--- Daodan/MinGW/include/ddk/ntstatus.h	(revision 1046)
+++ Daodan/MinGW/include/ddk/ntstatus.h	(revision 1046)
@@ -0,0 +1,1105 @@
+/*
+ * ntstatus.h
+ *
+ * Windows NT status codes
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef _NTSTATUS_H
+#define _NTSTATUS_H
+
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#if !defined(STATUS_SUCCESS)
+#define STATUS_SUCCESS ((NTSTATUS)0x00000000L)
+#endif /* !STATUS_SUCCESS */
+#define FACILITY_DEBUGGER 0x1
+#define FACILITY_RPC_RUNTIME 0x2
+#define FACILITY_RPC_STUBS 0x3
+#define FACILITY_IO_ERROR_CODE 0x4
+#define FACILITY_TERMINAL_SERVER 0xA
+#define FACILITY_USB_ERROR_CODE 0x10
+#define FACILITY_HID_ERROR_CODE 0x11
+#define FACILITY_FIREWIRE_ERROR_CODE 0x12
+#define FACILITY_CLUSTER_ERROR_CODE 0x13
+#define FACILITY_ACPI_ERROR_CODE 0x14
+#define FACILITY_SXS_ERROR_CODE 0x15
+#define STATUS_SEVERITY_SUCCESS 0x0
+#define STATUS_SEVERITY_INFORMATIONAL 0x1
+#define STATUS_SEVERITY_WARNING 0x2
+#define STATUS_SEVERITY_ERROR 0x3
+#define STATUS_WAIT_0 ((NTSTATUS)0x00000000L)
+#define STATUS_WAIT_1 ((NTSTATUS)0x00000001L)
+#define STATUS_WAIT_2 ((NTSTATUS)0x00000002L)
+#define STATUS_WAIT_3 ((NTSTATUS)0x00000003L)
+#define STATUS_WAIT_63 ((NTSTATUS)0x0000003FL)
+#define STATUS_ABANDONED ((NTSTATUS)0x00000080L)
+#define STATUS_ABANDONED_WAIT_0 ((NTSTATUS)0x00000080L)
+#define STATUS_ABANDONED_WAIT_63 ((NTSTATUS)0x000000BFL)
+#define STATUS_USER_APC ((NTSTATUS)0x000000C0L)
+#define STATUS_KERNEL_APC ((NTSTATUS)0x00000100L)
+#define STATUS_ALERTED ((NTSTATUS)0x00000101L)
+#define STATUS_TIMEOUT ((NTSTATUS)0x00000102L)
+#define STATUS_PENDING ((NTSTATUS)0x00000103L)
+#define STATUS_REPARSE ((NTSTATUS)0x00000104L)
+#define STATUS_MORE_ENTRIES ((NTSTATUS)0x00000105L)
+#define STATUS_NOT_ALL_ASSIGNED ((NTSTATUS)0x00000106L)
+#define STATUS_SOME_NOT_MAPPED ((NTSTATUS)0x00000107L)
+#define STATUS_OPLOCK_BREAK_IN_PROGRESS ((NTSTATUS)0x00000108L)
+#define STATUS_VOLUME_MOUNTED ((NTSTATUS)0x00000109L)
+#define STATUS_RXACT_COMMITTED ((NTSTATUS)0x0000010AL)
+#define STATUS_NOTIFY_CLEANUP ((NTSTATUS)0x0000010BL)
+#define STATUS_NOTIFY_ENUM_DIR ((NTSTATUS)0x0000010CL)
+#define STATUS_NO_QUOTAS_FOR_ACCOUNT ((NTSTATUS)0x0000010DL)
+#define STATUS_PRIMARY_TRANSPORT_CONNECT_FAILED ((NTSTATUS)0x0000010EL)
+#define STATUS_PAGE_FAULT_TRANSITION ((NTSTATUS)0x00000110L)
+#define STATUS_PAGE_FAULT_DEMAND_ZERO ((NTSTATUS)0x00000111L)
+#define STATUS_PAGE_FAULT_COPY_ON_WRITE ((NTSTATUS)0x00000112L)
+#define STATUS_PAGE_FAULT_GUARD_PAGE ((NTSTATUS)0x00000113L)
+#define STATUS_PAGE_FAULT_PAGING_FILE ((NTSTATUS)0x00000114L)
+#define STATUS_CACHE_PAGE_LOCKED ((NTSTATUS)0x00000115L)
+#define STATUS_CRASH_DUMP ((NTSTATUS)0x00000116L)
+#define STATUS_BUFFER_ALL_ZEROS ((NTSTATUS)0x00000117L)
+#define STATUS_REPARSE_OBJECT ((NTSTATUS)0x00000118L)
+#define STATUS_RESOURCE_REQUIREMENTS_CHANGED ((NTSTATUS)0x00000119L)
+#define STATUS_TRANSLATION_COMPLETE ((NTSTATUS)0x00000120L)
+#define STATUS_DS_MEMBERSHIP_EVALUATED_LOCALLY ((NTSTATUS)0x00000121L)
+#define STATUS_NOTHING_TO_TERMINATE ((NTSTATUS)0x00000122L)
+#define STATUS_PROCESS_NOT_IN_JOB ((NTSTATUS)0x00000123L)
+#define STATUS_PROCESS_IN_JOB ((NTSTATUS)0x00000124L)
+#define STATUS_OBJECT_NAME_EXISTS ((NTSTATUS)0x40000000L)
+#define STATUS_THREAD_WAS_SUSPENDED ((NTSTATUS)0x40000001L)
+#define STATUS_WORKING_SET_LIMIT_RANGE ((NTSTATUS)0x40000002L)
+#define STATUS_IMAGE_NOT_AT_BASE ((NTSTATUS)0x40000003L)
+#define STATUS_RXACT_STATE_CREATED ((NTSTATUS)0x40000004L)
+#define STATUS_SEGMENT_NOTIFICATION ((NTSTATUS)0x40000005L)
+#define STATUS_LOCAL_USER_SESSION_KEY ((NTSTATUS)0x40000006L)
+#define STATUS_BAD_CURRENT_DIRECTORY ((NTSTATUS)0x40000007L)
+#define STATUS_SERIAL_MORE_WRITES ((NTSTATUS)0x40000008L)
+#define STATUS_REGISTRY_RECOVERED ((NTSTATUS)0x40000009L)
+#define STATUS_FT_READ_RECOVERY_FROM_BACKUP ((NTSTATUS)0x4000000AL)
+#define STATUS_FT_WRITE_RECOVERY ((NTSTATUS)0x4000000BL)
+#define STATUS_SERIAL_COUNTER_TIMEOUT ((NTSTATUS)0x4000000CL)
+#define STATUS_NULL_LM_PASSWORD ((NTSTATUS)0x4000000DL)
+#define STATUS_IMAGE_MACHINE_TYPE_MISMATCH ((NTSTATUS)0x4000000EL)
+#define STATUS_RECEIVE_PARTIAL ((NTSTATUS)0x4000000FL)
+#define STATUS_RECEIVE_EXPEDITED ((NTSTATUS)0x40000010L)
+#define STATUS_RECEIVE_PARTIAL_EXPEDITED ((NTSTATUS)0x40000011L)
+#define STATUS_EVENT_DONE ((NTSTATUS)0x40000012L)
+#define STATUS_EVENT_PENDING ((NTSTATUS)0x40000013L)
+#define STATUS_CHECKING_FILE_SYSTEM ((NTSTATUS)0x40000014L)
+#define STATUS_FATAL_APP_EXIT ((NTSTATUS)0x40000015L)
+#define STATUS_PREDEFINED_HANDLE ((NTSTATUS)0x40000016L)
+#define STATUS_WAS_UNLOCKED ((NTSTATUS)0x40000017L)
+#define STATUS_SERVICE_NOTIFICATION ((NTSTATUS)0x40000018L)
+#define STATUS_WAS_LOCKED ((NTSTATUS)0x40000019L)
+#define STATUS_LOG_HARD_ERROR ((NTSTATUS)0x4000001AL)
+#define STATUS_ALREADY_WIN32 ((NTSTATUS)0x4000001BL)
+#define STATUS_WX86_UNSIMULATE ((NTSTATUS)0x4000001CL)
+#define STATUS_WX86_CONTINUE ((NTSTATUS)0x4000001DL)
+#define STATUS_WX86_SINGLE_STEP ((NTSTATUS)0x4000001EL)
+#define STATUS_WX86_BREAKPOINT ((NTSTATUS)0x4000001FL)
+#define STATUS_WX86_EXCEPTION_CONTINUE ((NTSTATUS)0x40000020L)
+#define STATUS_WX86_EXCEPTION_LASTCHANCE ((NTSTATUS)0x40000021L)
+#define STATUS_WX86_EXCEPTION_CHAIN ((NTSTATUS)0x40000022L)
+#define STATUS_IMAGE_MACHINE_TYPE_MISMATCH_EXE ((NTSTATUS)0x40000023L)
+#define STATUS_NO_YIELD_PERFORMED ((NTSTATUS)0x40000024L)
+#define STATUS_TIMER_RESUME_IGNORED ((NTSTATUS)0x40000025L)
+#define STATUS_ARBITRATION_UNHANDLED ((NTSTATUS)0x40000026L)
+#define STATUS_CARDBUS_NOT_SUPPORTED ((NTSTATUS)0x40000027L)
+#define STATUS_WX86_CREATEWX86TIB ((NTSTATUS)0x40000028L)
+#define STATUS_MP_PROCESSOR_MISMATCH ((NTSTATUS)0x40000029L)
+#define STATUS_HIBERNATED ((NTSTATUS)0x4000002AL)
+#define STATUS_RESUME_HIBERNATION ((NTSTATUS)0x4000002BL)
+#define STATUS_GUARD_PAGE_VIOLATION ((NTSTATUS)0x80000001L)
+#define STATUS_DATATYPE_MISALIGNMENT ((NTSTATUS)0x80000002L)
+#define STATUS_BREAKPOINT ((NTSTATUS)0x80000003L)
+#define STATUS_SINGLE_STEP ((NTSTATUS)0x80000004L)
+#define STATUS_BUFFER_OVERFLOW ((NTSTATUS)0x80000005L)
+#define STATUS_NO_MORE_FILES ((NTSTATUS)0x80000006L)
+#define STATUS_WAKE_SYSTEM_DEBUGGER ((NTSTATUS)0x80000007L)
+#define STATUS_HANDLES_CLOSED ((NTSTATUS)0x8000000AL)
+#define STATUS_NO_INHERITANCE ((NTSTATUS)0x8000000BL)
+#define STATUS_GUID_SUBSTITUTION_MADE ((NTSTATUS)0x8000000CL)
+#define STATUS_PARTIAL_COPY ((NTSTATUS)0x8000000DL)
+#define STATUS_DEVICE_PAPER_EMPTY ((NTSTATUS)0x8000000EL)
+#define STATUS_DEVICE_POWERED_OFF ((NTSTATUS)0x8000000FL)
+#define STATUS_DEVICE_OFF_LINE ((NTSTATUS)0x80000010L)
+#define STATUS_DEVICE_BUSY ((NTSTATUS)0x80000011L)
+#define STATUS_NO_MORE_EAS ((NTSTATUS)0x80000012L)
+#define STATUS_INVALID_EA_NAME ((NTSTATUS)0x80000013L)
+#define STATUS_EA_LIST_INCONSISTENT ((NTSTATUS)0x80000014L)
+#define STATUS_INVALID_EA_FLAG ((NTSTATUS)0x80000015L)
+#define STATUS_VERIFY_REQUIRED ((NTSTATUS)0x80000016L)
+#define STATUS_EXTRANEOUS_INFORMATION ((NTSTATUS)0x80000017L)
+#define STATUS_RXACT_COMMIT_NECESSARY ((NTSTATUS)0x80000018L)
+#define STATUS_NO_MORE_ENTRIES ((NTSTATUS)0x8000001AL)
+#define STATUS_FILEMARK_DETECTED ((NTSTATUS)0x8000001BL)
+#define STATUS_MEDIA_CHANGED ((NTSTATUS)0x8000001CL)
+#define STATUS_BUS_RESET ((NTSTATUS)0x8000001DL)
+#define STATUS_END_OF_MEDIA ((NTSTATUS)0x8000001EL)
+#define STATUS_BEGINNING_OF_MEDIA ((NTSTATUS)0x8000001FL)
+#define STATUS_MEDIA_CHECK ((NTSTATUS)0x80000020L)
+#define STATUS_SETMARK_DETECTED ((NTSTATUS)0x80000021L)
+#define STATUS_NO_DATA_DETECTED ((NTSTATUS)0x80000022L)
+#define STATUS_REDIRECTOR_HAS_OPEN_HANDLES ((NTSTATUS)0x80000023L)
+#define STATUS_SERVER_HAS_OPEN_HANDLES ((NTSTATUS)0x80000024L)
+#define STATUS_ALREADY_DISCONNECTED ((NTSTATUS)0x80000025L)
+#define STATUS_LONGJUMP ((NTSTATUS)0x80000026L)
+#define STATUS_CLEANER_CARTRIDGE_INSTALLED ((NTSTATUS)0x80000027L)
+#define STATUS_PLUGPLAY_QUERY_VETOED ((NTSTATUS)0x80000028L)
+#define STATUS_UNWIND_CONSOLIDATE ((NTSTATUS)0x80000029L)
+#define STATUS_CLUSTER_NODE_ALREADY_UP ((NTSTATUS)0x80130001L)
+#define STATUS_CLUSTER_NODE_ALREADY_DOWN ((NTSTATUS)0x80130002L)
+#define STATUS_CLUSTER_NETWORK_ALREADY_ONLINE ((NTSTATUS)0x80130003L)
+#define STATUS_CLUSTER_NETWORK_ALREADY_OFFLINE ((NTSTATUS)0x80130004L)
+#define STATUS_CLUSTER_NODE_ALREADY_MEMBER ((NTSTATUS)0x80130005L)
+#define STATUS_UNSUCCESSFUL ((NTSTATUS)0xC0000001L)
+#define STATUS_NOT_IMPLEMENTED ((NTSTATUS)0xC0000002L)
+#define STATUS_INVALID_INFO_CLASS ((NTSTATUS)0xC0000003L)
+#define STATUS_INFO_LENGTH_MISMATCH ((NTSTATUS)0xC0000004L)
+#define STATUS_ACCESS_VIOLATION ((NTSTATUS)0xC0000005L)
+#define STATUS_IN_PAGE_ERROR ((NTSTATUS)0xC0000006L)
+#define STATUS_PAGEFILE_QUOTA ((NTSTATUS)0xC0000007L)
+#define STATUS_INVALID_HANDLE ((NTSTATUS)0xC0000008L)
+#define STATUS_BAD_INITIAL_STACK ((NTSTATUS)0xC0000009L)
+#define STATUS_BAD_INITIAL_PC ((NTSTATUS)0xC000000AL)
+#define STATUS_INVALID_CID ((NTSTATUS)0xC000000BL)
+#define STATUS_TIMER_NOT_CANCELED ((NTSTATUS)0xC000000CL)
+#define STATUS_INVALID_PARAMETER ((NTSTATUS)0xC000000DL)
+#define STATUS_NO_SUCH_DEVICE ((NTSTATUS)0xC000000EL)
+#define STATUS_NO_SUCH_FILE ((NTSTATUS)0xC000000FL)
+#define STATUS_INVALID_DEVICE_REQUEST ((NTSTATUS)0xC0000010L)
+#define STATUS_END_OF_FILE ((NTSTATUS)0xC0000011L)
+#define STATUS_WRONG_VOLUME ((NTSTATUS)0xC0000012L)
+#define STATUS_NO_MEDIA_IN_DEVICE ((NTSTATUS)0xC0000013L)
+#define STATUS_UNRECOGNIZED_MEDIA ((NTSTATUS)0xC0000014L)
+#define STATUS_NONEXISTENT_SECTOR ((NTSTATUS)0xC0000015L)
+#define STATUS_MORE_PROCESSING_REQUIRED ((NTSTATUS)0xC0000016L)
+#define STATUS_NO_MEMORY ((NTSTATUS)0xC0000017L)
+#define STATUS_CONFLICTING_ADDRESSES ((NTSTATUS)0xC0000018L)
+#define STATUS_NOT_MAPPED_VIEW ((NTSTATUS)0xC0000019L)
+#define STATUS_UNABLE_TO_FREE_VM ((NTSTATUS)0xC000001AL)
+#define STATUS_UNABLE_TO_DELETE_SECTION ((NTSTATUS)0xC000001BL)
+#define STATUS_INVALID_SYSTEM_SERVICE ((NTSTATUS)0xC000001CL)
+#define STATUS_ILLEGAL_INSTRUCTION ((NTSTATUS)0xC000001DL)
+#define STATUS_INVALID_LOCK_SEQUENCE ((NTSTATUS)0xC000001EL)
+#define STATUS_INVALID_VIEW_SIZE ((NTSTATUS)0xC000001FL)
+#define STATUS_INVALID_FILE_FOR_SECTION ((NTSTATUS)0xC0000020L)
+#define STATUS_ALREADY_COMMITTED ((NTSTATUS)0xC0000021L)
+#define STATUS_ACCESS_DENIED ((NTSTATUS)0xC0000022L)
+#define STATUS_BUFFER_TOO_SMALL ((NTSTATUS)0xC0000023L)
+#define STATUS_OBJECT_TYPE_MISMATCH ((NTSTATUS)0xC0000024L)
+#define STATUS_NONCONTINUABLE_EXCEPTION ((NTSTATUS)0xC0000025L)
+#define STATUS_INVALID_DISPOSITION ((NTSTATUS)0xC0000026L)
+#define STATUS_UNWIND ((NTSTATUS)0xC0000027L)
+#define STATUS_BAD_STACK ((NTSTATUS)0xC0000028L)
+#define STATUS_INVALID_UNWIND_TARGET ((NTSTATUS)0xC0000029L)
+#define STATUS_NOT_LOCKED ((NTSTATUS)0xC000002AL)
+#define STATUS_PARITY_ERROR ((NTSTATUS)0xC000002BL)
+#define STATUS_UNABLE_TO_DECOMMIT_VM ((NTSTATUS)0xC000002CL)
+#define STATUS_NOT_COMMITTED ((NTSTATUS)0xC000002DL)
+#define STATUS_INVALID_PORT_ATTRIBUTES ((NTSTATUS)0xC000002EL)
+#define STATUS_PORT_MESSAGE_TOO_LONG ((NTSTATUS)0xC000002FL)
+#define STATUS_INVALID_PARAMETER_MIX ((NTSTATUS)0xC0000030L)
+#define STATUS_INVALID_QUOTA_LOWER ((NTSTATUS)0xC0000031L)
+#define STATUS_DISK_CORRUPT_ERROR ((NTSTATUS)0xC0000032L)
+#define STATUS_OBJECT_NAME_INVALID ((NTSTATUS)0xC0000033L)
+#define STATUS_OBJECT_NAME_NOT_FOUND ((NTSTATUS)0xC0000034L)
+#define STATUS_OBJECT_NAME_COLLISION ((NTSTATUS)0xC0000035L)
+#define STATUS_PORT_DISCONNECTED ((NTSTATUS)0xC0000037L)
+#define STATUS_DEVICE_ALREADY_ATTACHED ((NTSTATUS)0xC0000038L)
+#define STATUS_OBJECT_PATH_INVALID ((NTSTATUS)0xC0000039L)
+#define STATUS_OBJECT_PATH_NOT_FOUND ((NTSTATUS)0xC000003AL)
+#define STATUS_OBJECT_PATH_SYNTAX_BAD ((NTSTATUS)0xC000003BL)
+#define STATUS_DATA_OVERRUN ((NTSTATUS)0xC000003CL)
+#define STATUS_DATA_LATE_ERROR ((NTSTATUS)0xC000003DL)
+#define STATUS_DATA_ERROR ((NTSTATUS)0xC000003EL)
+#define STATUS_CRC_ERROR ((NTSTATUS)0xC000003FL)
+#define STATUS_SECTION_TOO_BIG ((NTSTATUS)0xC0000040L)
+#define STATUS_PORT_CONNECTION_REFUSED ((NTSTATUS)0xC0000041L)
+#define STATUS_INVALID_PORT_HANDLE ((NTSTATUS)0xC0000042L)
+#define STATUS_SHARING_VIOLATION ((NTSTATUS)0xC0000043L)
+#define STATUS_QUOTA_EXCEEDED ((NTSTATUS)0xC0000044L)
+#define STATUS_INVALID_PAGE_PROTECTION ((NTSTATUS)0xC0000045L)
+#define STATUS_MUTANT_NOT_OWNED ((NTSTATUS)0xC0000046L)
+#define STATUS_SEMAPHORE_LIMIT_EXCEEDED ((NTSTATUS)0xC0000047L)
+#define STATUS_PORT_ALREADY_SET ((NTSTATUS)0xC0000048L)
+#define STATUS_SECTION_NOT_IMAGE ((NTSTATUS)0xC0000049L)
+#define STATUS_SUSPEND_COUNT_EXCEEDED ((NTSTATUS)0xC000004AL)
+#define STATUS_THREAD_IS_TERMINATING ((NTSTATUS)0xC000004BL)
+#define STATUS_BAD_WORKING_SET_LIMIT ((NTSTATUS)0xC000004CL)
+#define STATUS_INCOMPATIBLE_FILE_MAP ((NTSTATUS)0xC000004DL)
+#define STATUS_SECTION_PROTECTION ((NTSTATUS)0xC000004EL)
+#define STATUS_EAS_NOT_SUPPORTED ((NTSTATUS)0xC000004FL)
+#define STATUS_EA_TOO_LARGE ((NTSTATUS)0xC0000050L)
+#define STATUS_NONEXISTENT_EA_ENTRY ((NTSTATUS)0xC0000051L)
+#define STATUS_NO_EAS_ON_FILE ((NTSTATUS)0xC0000052L)
+#define STATUS_EA_CORRUPT_ERROR ((NTSTATUS)0xC0000053L)
+#define STATUS_FILE_LOCK_CONFLICT ((NTSTATUS)0xC0000054L)
+#define STATUS_LOCK_NOT_GRANTED ((NTSTATUS)0xC0000055L)
+#define STATUS_DELETE_PENDING ((NTSTATUS)0xC0000056L)
+#define STATUS_CTL_FILE_NOT_SUPPORTED ((NTSTATUS)0xC0000057L)
+#define STATUS_UNKNOWN_REVISION ((NTSTATUS)0xC0000058L)
+#define STATUS_REVISION_MISMATCH ((NTSTATUS)0xC0000059L)
+#define STATUS_INVALID_OWNER ((NTSTATUS)0xC000005AL)
+#define STATUS_INVALID_PRIMARY_GROUP ((NTSTATUS)0xC000005BL)
+#define STATUS_NO_IMPERSONATION_TOKEN ((NTSTATUS)0xC000005CL)
+#define STATUS_CANT_DISABLE_MANDATORY ((NTSTATUS)0xC000005DL)
+#define STATUS_NO_LOGON_SERVERS ((NTSTATUS)0xC000005EL)
+#define STATUS_NO_SUCH_LOGON_SESSION ((NTSTATUS)0xC000005FL)
+#define STATUS_NO_SUCH_PRIVILEGE ((NTSTATUS)0xC0000060L)
+#define STATUS_PRIVILEGE_NOT_HELD ((NTSTATUS)0xC0000061L)
+#define STATUS_INVALID_ACCOUNT_NAME ((NTSTATUS)0xC0000062L)
+#define STATUS_USER_EXISTS ((NTSTATUS)0xC0000063L)
+#define STATUS_NO_SUCH_USER ((NTSTATUS)0xC0000064L)
+#define STATUS_GROUP_EXISTS ((NTSTATUS)0xC0000065L)
+#define STATUS_NO_SUCH_GROUP ((NTSTATUS)0xC0000066L)
+#define STATUS_MEMBER_IN_GROUP ((NTSTATUS)0xC0000067L)
+#define STATUS_MEMBER_NOT_IN_GROUP ((NTSTATUS)0xC0000068L)
+#define STATUS_LAST_ADMIN ((NTSTATUS)0xC0000069L)
+#define STATUS_WRONG_PASSWORD ((NTSTATUS)0xC000006AL)
+#define STATUS_ILL_FORMED_PASSWORD ((NTSTATUS)0xC000006BL)
+#define STATUS_PASSWORD_RESTRICTION ((NTSTATUS)0xC000006CL)
+#define STATUS_LOGON_FAILURE ((NTSTATUS)0xC000006DL)
+#define STATUS_ACCOUNT_RESTRICTION ((NTSTATUS)0xC000006EL)
+#define STATUS_INVALID_LOGON_HOURS ((NTSTATUS)0xC000006FL)
+#define STATUS_INVALID_WORKSTATION ((NTSTATUS)0xC0000070L)
+#define STATUS_PASSWORD_EXPIRED ((NTSTATUS)0xC0000071L)
+#define STATUS_ACCOUNT_DISABLED ((NTSTATUS)0xC0000072L)
+#define STATUS_NONE_MAPPED ((NTSTATUS)0xC0000073L)
+#define STATUS_TOO_MANY_LUIDS_REQUESTED ((NTSTATUS)0xC0000074L)
+#define STATUS_LUIDS_EXHAUSTED ((NTSTATUS)0xC0000075L)
+#define STATUS_INVALID_SUB_AUTHORITY ((NTSTATUS)0xC0000076L)
+#define STATUS_INVALID_ACL ((NTSTATUS)0xC0000077L)
+#define STATUS_INVALID_SID ((NTSTATUS)0xC0000078L)
+#define STATUS_INVALID_SECURITY_DESCR ((NTSTATUS)0xC0000079L)
+#define STATUS_PROCEDURE_NOT_FOUND ((NTSTATUS)0xC000007AL)
+#define STATUS_INVALID_IMAGE_FORMAT ((NTSTATUS)0xC000007BL)
+#define STATUS_NO_TOKEN ((NTSTATUS)0xC000007CL)
+#define STATUS_BAD_INHERITANCE_ACL ((NTSTATUS)0xC000007DL)
+#define STATUS_RANGE_NOT_LOCKED ((NTSTATUS)0xC000007EL)
+#define STATUS_DISK_FULL ((NTSTATUS)0xC000007FL)
+#define STATUS_SERVER_DISABLED ((NTSTATUS)0xC0000080L)
+#define STATUS_SERVER_NOT_DISABLED ((NTSTATUS)0xC0000081L)
+#define STATUS_TOO_MANY_GUIDS_REQUESTED ((NTSTATUS)0xC0000082L)
+#define STATUS_GUIDS_EXHAUSTED ((NTSTATUS)0xC0000083L)
+#define STATUS_INVALID_ID_AUTHORITY ((NTSTATUS)0xC0000084L)
+#define STATUS_AGENTS_EXHAUSTED ((NTSTATUS)0xC0000085L)
+#define STATUS_INVALID_VOLUME_LABEL ((NTSTATUS)0xC0000086L)
+#define STATUS_SECTION_NOT_EXTENDED ((NTSTATUS)0xC0000087L)
+#define STATUS_NOT_MAPPED_DATA ((NTSTATUS)0xC0000088L)
+#define STATUS_RESOURCE_DATA_NOT_FOUND ((NTSTATUS)0xC0000089L)
+#define STATUS_RESOURCE_TYPE_NOT_FOUND ((NTSTATUS)0xC000008AL)
+#define STATUS_RESOURCE_NAME_NOT_FOUND ((NTSTATUS)0xC000008BL)
+#define STATUS_ARRAY_BOUNDS_EXCEEDED ((NTSTATUS)0xC000008CL)
+#define STATUS_FLOAT_DENORMAL_OPERAND ((NTSTATUS)0xC000008DL)
+#define STATUS_FLOAT_DIVIDE_BY_ZERO ((NTSTATUS)0xC000008EL)
+#define STATUS_FLOAT_INEXACT_RESULT ((NTSTATUS)0xC000008FL)
+#define STATUS_FLOAT_INVALID_OPERATION ((NTSTATUS)0xC0000090L)
+#define STATUS_FLOAT_OVERFLOW ((NTSTATUS)0xC0000091L)
+#define STATUS_FLOAT_STACK_CHECK ((NTSTATUS)0xC0000092L)
+#define STATUS_FLOAT_UNDERFLOW ((NTSTATUS)0xC0000093L)
+#define STATUS_INTEGER_DIVIDE_BY_ZERO ((NTSTATUS)0xC0000094L)
+#define STATUS_INTEGER_OVERFLOW ((NTSTATUS)0xC0000095L)
+#define STATUS_PRIVILEGED_INSTRUCTION ((NTSTATUS)0xC0000096L)
+#define STATUS_TOO_MANY_PAGING_FILES ((NTSTATUS)0xC0000097L)
+#define STATUS_FILE_INVALID ((NTSTATUS)0xC0000098L)
+#define STATUS_ALLOTTED_SPACE_EXCEEDED ((NTSTATUS)0xC0000099L)
+#define STATUS_INSUFFICIENT_RESOURCES ((NTSTATUS)0xC000009AL)
+#define STATUS_DFS_EXIT_PATH_FOUND ((NTSTATUS)0xC000009BL)
+#define STATUS_DEVICE_DATA_ERROR ((NTSTATUS)0xC000009CL)
+#define STATUS_DEVICE_NOT_CONNECTED ((NTSTATUS)0xC000009DL)
+#define STATUS_DEVICE_POWER_FAILURE ((NTSTATUS)0xC000009EL)
+#define STATUS_FREE_VM_NOT_AT_BASE ((NTSTATUS)0xC000009FL)
+#define STATUS_MEMORY_NOT_ALLOCATED ((NTSTATUS)0xC00000A0L)
+#define STATUS_WORKING_SET_QUOTA ((NTSTATUS)0xC00000A1L)
+#define STATUS_MEDIA_WRITE_PROTECTED ((NTSTATUS)0xC00000A2L)
+#define STATUS_DEVICE_NOT_READY ((NTSTATUS)0xC00000A3L)
+#define STATUS_INVALID_GROUP_ATTRIBUTES ((NTSTATUS)0xC00000A4L)
+#define STATUS_BAD_IMPERSONATION_LEVEL ((NTSTATUS)0xC00000A5L)
+#define STATUS_CANT_OPEN_ANONYMOUS ((NTSTATUS)0xC00000A6L)
+#define STATUS_BAD_VALIDATION_CLASS ((NTSTATUS)0xC00000A7L)
+#define STATUS_BAD_TOKEN_TYPE ((NTSTATUS)0xC00000A8L)
+#define STATUS_BAD_MASTER_BOOT_RECORD ((NTSTATUS)0xC00000A9L)
+#define STATUS_INSTRUCTION_MISALIGNMENT ((NTSTATUS)0xC00000AAL)
+#define STATUS_INSTANCE_NOT_AVAILABLE ((NTSTATUS)0xC00000ABL)
+#define STATUS_PIPE_NOT_AVAILABLE ((NTSTATUS)0xC00000ACL)
+#define STATUS_INVALID_PIPE_STATE ((NTSTATUS)0xC00000ADL)
+#define STATUS_PIPE_BUSY ((NTSTATUS)0xC00000AEL)
+#define STATUS_ILLEGAL_FUNCTION ((NTSTATUS)0xC00000AFL)
+#define STATUS_PIPE_DISCONNECTED ((NTSTATUS)0xC00000B0L)
+#define STATUS_PIPE_CLOSING ((NTSTATUS)0xC00000B1L)
+#define STATUS_PIPE_CONNECTED ((NTSTATUS)0xC00000B2L)
+#define STATUS_PIPE_LISTENING ((NTSTATUS)0xC00000B3L)
+#define STATUS_INVALID_READ_MODE ((NTSTATUS)0xC00000B4L)
+#define STATUS_IO_TIMEOUT ((NTSTATUS)0xC00000B5L)
+#define STATUS_FILE_FORCED_CLOSED ((NTSTATUS)0xC00000B6L)
+#define STATUS_PROFILING_NOT_STARTED ((NTSTATUS)0xC00000B7L)
+#define STATUS_PROFILING_NOT_STOPPED ((NTSTATUS)0xC00000B8L)
+#define STATUS_COULD_NOT_INTERPRET ((NTSTATUS)0xC00000B9L)
+#define STATUS_FILE_IS_A_DIRECTORY ((NTSTATUS)0xC00000BAL)
+#define STATUS_NOT_SUPPORTED ((NTSTATUS)0xC00000BBL)
+#define STATUS_REMOTE_NOT_LISTENING ((NTSTATUS)0xC00000BCL)
+#define STATUS_DUPLICATE_NAME ((NTSTATUS)0xC00000BDL)
+#define STATUS_BAD_NETWORK_PATH ((NTSTATUS)0xC00000BEL)
+#define STATUS_NETWORK_BUSY ((NTSTATUS)0xC00000BFL)
+#define STATUS_DEVICE_DOES_NOT_EXIST ((NTSTATUS)0xC00000C0L)
+#define STATUS_TOO_MANY_COMMANDS ((NTSTATUS)0xC00000C1L)
+#define STATUS_ADAPTER_HARDWARE_ERROR ((NTSTATUS)0xC00000C2L)
+#define STATUS_INVALID_NETWORK_RESPONSE ((NTSTATUS)0xC00000C3L)
+#define STATUS_UNEXPECTED_NETWORK_ERROR ((NTSTATUS)0xC00000C4L)
+#define STATUS_BAD_REMOTE_ADAPTER ((NTSTATUS)0xC00000C5L)
+#define STATUS_PRINT_QUEUE_FULL ((NTSTATUS)0xC00000C6L)
+#define STATUS_NO_SPOOL_SPACE ((NTSTATUS)0xC00000C7L)
+#define STATUS_PRINT_CANCELLED ((NTSTATUS)0xC00000C8L)
+#define STATUS_NETWORK_NAME_DELETED ((NTSTATUS)0xC00000C9L)
+#define STATUS_NETWORK_ACCESS_DENIED ((NTSTATUS)0xC00000CAL)
+#define STATUS_BAD_DEVICE_TYPE ((NTSTATUS)0xC00000CBL)
+#define STATUS_BAD_NETWORK_NAME ((NTSTATUS)0xC00000CCL)
+#define STATUS_TOO_MANY_NAMES ((NTSTATUS)0xC00000CDL)
+#define STATUS_TOO_MANY_SESSIONS ((NTSTATUS)0xC00000CEL)
+#define STATUS_SHARING_PAUSED ((NTSTATUS)0xC00000CFL)
+#define STATUS_REQUEST_NOT_ACCEPTED ((NTSTATUS)0xC00000D0L)
+#define STATUS_REDIRECTOR_PAUSED ((NTSTATUS)0xC00000D1L)
+#define STATUS_NET_WRITE_FAULT ((NTSTATUS)0xC00000D2L)
+#define STATUS_PROFILING_AT_LIMIT ((NTSTATUS)0xC00000D3L)
+#define STATUS_NOT_SAME_DEVICE ((NTSTATUS)0xC00000D4L)
+#define STATUS_FILE_RENAMED ((NTSTATUS)0xC00000D5L)
+#define STATUS_VIRTUAL_CIRCUIT_CLOSED ((NTSTATUS)0xC00000D6L)
+#define STATUS_NO_SECURITY_ON_OBJECT ((NTSTATUS)0xC00000D7L)
+#define STATUS_CANT_WAIT ((NTSTATUS)0xC00000D8L)
+#define STATUS_PIPE_EMPTY ((NTSTATUS)0xC00000D9L)
+#define STATUS_CANT_ACCESS_DOMAIN_INFO ((NTSTATUS)0xC00000DAL)
+#define STATUS_CANT_TERMINATE_SELF ((NTSTATUS)0xC00000DBL)
+#define STATUS_INVALID_SERVER_STATE ((NTSTATUS)0xC00000DCL)
+#define STATUS_INVALID_DOMAIN_STATE ((NTSTATUS)0xC00000DDL)
+#define STATUS_INVALID_DOMAIN_ROLE ((NTSTATUS)0xC00000DEL)
+#define STATUS_NO_SUCH_DOMAIN ((NTSTATUS)0xC00000DFL)
+#define STATUS_DOMAIN_EXISTS ((NTSTATUS)0xC00000E0L)
+#define STATUS_DOMAIN_LIMIT_EXCEEDED ((NTSTATUS)0xC00000E1L)
+#define STATUS_OPLOCK_NOT_GRANTED ((NTSTATUS)0xC00000E2L)
+#define STATUS_INVALID_OPLOCK_PROTOCOL ((NTSTATUS)0xC00000E3L)
+#define STATUS_INTERNAL_DB_CORRUPTION ((NTSTATUS)0xC00000E4L)
+#define STATUS_INTERNAL_ERROR ((NTSTATUS)0xC00000E5L)
+#define STATUS_GENERIC_NOT_MAPPED ((NTSTATUS)0xC00000E6L)
+#define STATUS_BAD_DESCRIPTOR_FORMAT ((NTSTATUS)0xC00000E7L)
+#define STATUS_INVALID_USER_BUFFER ((NTSTATUS)0xC00000E8L)
+#define STATUS_UNEXPECTED_IO_ERROR ((NTSTATUS)0xC00000E9L)
+#define STATUS_UNEXPECTED_MM_CREATE_ERR ((NTSTATUS)0xC00000EAL)
+#define STATUS_UNEXPECTED_MM_MAP_ERROR ((NTSTATUS)0xC00000EBL)
+#define STATUS_UNEXPECTED_MM_EXTEND_ERR ((NTSTATUS)0xC00000ECL)
+#define STATUS_NOT_LOGON_PROCESS ((NTSTATUS)0xC00000EDL)
+#define STATUS_LOGON_SESSION_EXISTS ((NTSTATUS)0xC00000EEL)
+#define STATUS_INVALID_PARAMETER_1 ((NTSTATUS)0xC00000EFL)
+#define STATUS_INVALID_PARAMETER_2 ((NTSTATUS)0xC00000F0L)
+#define STATUS_INVALID_PARAMETER_3 ((NTSTATUS)0xC00000F1L)
+#define STATUS_INVALID_PARAMETER_4 ((NTSTATUS)0xC00000F2L)
+#define STATUS_INVALID_PARAMETER_5 ((NTSTATUS)0xC00000F3L)
+#define STATUS_INVALID_PARAMETER_6 ((NTSTATUS)0xC00000F4L)
+#define STATUS_INVALID_PARAMETER_7 ((NTSTATUS)0xC00000F5L)
+#define STATUS_INVALID_PARAMETER_8 ((NTSTATUS)0xC00000F6L)
+#define STATUS_INVALID_PARAMETER_9 ((NTSTATUS)0xC00000F7L)
+#define STATUS_INVALID_PARAMETER_10 ((NTSTATUS)0xC00000F8L)
+#define STATUS_INVALID_PARAMETER_11 ((NTSTATUS)0xC00000F9L)
+#define STATUS_INVALID_PARAMETER_12 ((NTSTATUS)0xC00000FAL)
+#define STATUS_REDIRECTOR_NOT_STARTED ((NTSTATUS)0xC00000FBL)
+#define STATUS_REDIRECTOR_STARTED ((NTSTATUS)0xC00000FCL)
+#define STATUS_STACK_OVERFLOW ((NTSTATUS)0xC00000FDL)
+#define STATUS_NO_SUCH_PACKAGE ((NTSTATUS)0xC00000FEL)
+#define STATUS_BAD_FUNCTION_TABLE ((NTSTATUS)0xC00000FFL)
+#define STATUS_VARIABLE_NOT_FOUND ((NTSTATUS)0xC0000100L)
+#define STATUS_DIRECTORY_NOT_EMPTY ((NTSTATUS)0xC0000101L)
+#define STATUS_FILE_CORRUPT_ERROR ((NTSTATUS)0xC0000102L)
+#define STATUS_NOT_A_DIRECTORY ((NTSTATUS)0xC0000103L)
+#define STATUS_BAD_LOGON_SESSION_STATE ((NTSTATUS)0xC0000104L)
+#define STATUS_LOGON_SESSION_COLLISION ((NTSTATUS)0xC0000105L)
+#define STATUS_NAME_TOO_LONG ((NTSTATUS)0xC0000106L)
+#define STATUS_FILES_OPEN ((NTSTATUS)0xC0000107L)
+#define STATUS_CONNECTION_IN_USE ((NTSTATUS)0xC0000108L)
+#define STATUS_MESSAGE_NOT_FOUND ((NTSTATUS)0xC0000109L)
+#define STATUS_PROCESS_IS_TERMINATING ((NTSTATUS)0xC000010AL)
+#define STATUS_INVALID_LOGON_TYPE ((NTSTATUS)0xC000010BL)
+#define STATUS_NO_GUID_TRANSLATION ((NTSTATUS)0xC000010CL)
+#define STATUS_CANNOT_IMPERSONATE ((NTSTATUS)0xC000010DL)
+#define STATUS_IMAGE_ALREADY_LOADED ((NTSTATUS)0xC000010EL)
+#define STATUS_ABIOS_NOT_PRESENT ((NTSTATUS)0xC000010FL)
+#define STATUS_ABIOS_LID_NOT_EXIST ((NTSTATUS)0xC0000110L)
+#define STATUS_ABIOS_LID_ALREADY_OWNED ((NTSTATUS)0xC0000111L)
+#define STATUS_ABIOS_NOT_LID_OWNER ((NTSTATUS)0xC0000112L)
+#define STATUS_ABIOS_INVALID_COMMAND ((NTSTATUS)0xC0000113L)
+#define STATUS_ABIOS_INVALID_LID ((NTSTATUS)0xC0000114L)
+#define STATUS_ABIOS_SELECTOR_NOT_AVAILABLE ((NTSTATUS)0xC0000115L)
+#define STATUS_ABIOS_INVALID_SELECTOR ((NTSTATUS)0xC0000116L)
+#define STATUS_NO_LDT ((NTSTATUS)0xC0000117L)
+#define STATUS_INVALID_LDT_SIZE ((NTSTATUS)0xC0000118L)
+#define STATUS_INVALID_LDT_OFFSET ((NTSTATUS)0xC0000119L)
+#define STATUS_INVALID_LDT_DESCRIPTOR ((NTSTATUS)0xC000011AL)
+#define STATUS_INVALID_IMAGE_NE_FORMAT ((NTSTATUS)0xC000011BL)
+#define STATUS_RXACT_INVALID_STATE ((NTSTATUS)0xC000011CL)
+#define STATUS_RXACT_COMMIT_FAILURE ((NTSTATUS)0xC000011DL)
+#define STATUS_MAPPED_FILE_SIZE_ZERO ((NTSTATUS)0xC000011EL)
+#define STATUS_TOO_MANY_OPENED_FILES ((NTSTATUS)0xC000011FL)
+#define STATUS_CANCELLED ((NTSTATUS)0xC0000120L)
+#define STATUS_CANNOT_DELETE ((NTSTATUS)0xC0000121L)
+#define STATUS_INVALID_COMPUTER_NAME ((NTSTATUS)0xC0000122L)
+#define STATUS_FILE_DELETED ((NTSTATUS)0xC0000123L)
+#define STATUS_SPECIAL_ACCOUNT ((NTSTATUS)0xC0000124L)
+#define STATUS_SPECIAL_GROUP ((NTSTATUS)0xC0000125L)
+#define STATUS_SPECIAL_USER ((NTSTATUS)0xC0000126L)
+#define STATUS_MEMBERS_PRIMARY_GROUP ((NTSTATUS)0xC0000127L)
+#define STATUS_FILE_CLOSED ((NTSTATUS)0xC0000128L)
+#define STATUS_TOO_MANY_THREADS ((NTSTATUS)0xC0000129L)
+#define STATUS_THREAD_NOT_IN_PROCESS ((NTSTATUS)0xC000012AL)
+#define STATUS_TOKEN_ALREADY_IN_USE ((NTSTATUS)0xC000012BL)
+#define STATUS_PAGEFILE_QUOTA_EXCEEDED ((NTSTATUS)0xC000012CL)
+#define STATUS_COMMITMENT_LIMIT ((NTSTATUS)0xC000012DL)
+#define STATUS_INVALID_IMAGE_LE_FORMAT ((NTSTATUS)0xC000012EL)
+#define STATUS_INVALID_IMAGE_NOT_MZ ((NTSTATUS)0xC000012FL)
+#define STATUS_INVALID_IMAGE_PROTECT ((NTSTATUS)0xC0000130L)
+#define STATUS_INVALID_IMAGE_WIN_16 ((NTSTATUS)0xC0000131L)
+#define STATUS_LOGON_SERVER_CONFLICT ((NTSTATUS)0xC0000132L)
+#define STATUS_TIME_DIFFERENCE_AT_DC ((NTSTATUS)0xC0000133L)
+#define STATUS_SYNCHRONIZATION_REQUIRED ((NTSTATUS)0xC0000134L)
+#define STATUS_DLL_NOT_FOUND ((NTSTATUS)0xC0000135L)
+#define STATUS_OPEN_FAILED ((NTSTATUS)0xC0000136L)
+#define STATUS_IO_PRIVILEGE_FAILED ((NTSTATUS)0xC0000137L)
+#define STATUS_ORDINAL_NOT_FOUND ((NTSTATUS)0xC0000138L)
+#define STATUS_ENTRYPOINT_NOT_FOUND ((NTSTATUS)0xC0000139L)
+#define STATUS_CONTROL_C_EXIT ((NTSTATUS)0xC000013AL)
+#define STATUS_LOCAL_DISCONNECT ((NTSTATUS)0xC000013BL)
+#define STATUS_REMOTE_DISCONNECT ((NTSTATUS)0xC000013CL)
+#define STATUS_REMOTE_RESOURCES ((NTSTATUS)0xC000013DL)
+#define STATUS_LINK_FAILED ((NTSTATUS)0xC000013EL)
+#define STATUS_LINK_TIMEOUT ((NTSTATUS)0xC000013FL)
+#define STATUS_INVALID_CONNECTION ((NTSTATUS)0xC0000140L)
+#define STATUS_INVALID_ADDRESS ((NTSTATUS)0xC0000141L)
+#define STATUS_DLL_INIT_FAILED ((NTSTATUS)0xC0000142L)
+#define STATUS_MISSING_SYSTEMFILE ((NTSTATUS)0xC0000143L)
+#define STATUS_UNHANDLED_EXCEPTION ((NTSTATUS)0xC0000144L)
+#define STATUS_APP_INIT_FAILURE ((NTSTATUS)0xC0000145L)
+#define STATUS_PAGEFILE_CREATE_FAILED ((NTSTATUS)0xC0000146L)
+#define STATUS_NO_PAGEFILE ((NTSTATUS)0xC0000147L)
+#define STATUS_INVALID_LEVEL ((NTSTATUS)0xC0000148L)
+#define STATUS_WRONG_PASSWORD_CORE ((NTSTATUS)0xC0000149L)
+#define STATUS_ILLEGAL_FLOAT_CONTEXT ((NTSTATUS)0xC000014AL)
+#define STATUS_PIPE_BROKEN ((NTSTATUS)0xC000014BL)
+#define STATUS_REGISTRY_CORRUPT ((NTSTATUS)0xC000014CL)
+#define STATUS_REGISTRY_IO_FAILED ((NTSTATUS)0xC000014DL)
+#define STATUS_NO_EVENT_PAIR ((NTSTATUS)0xC000014EL)
+#define STATUS_UNRECOGNIZED_VOLUME ((NTSTATUS)0xC000014FL)
+#define STATUS_SERIAL_NO_DEVICE_INITED ((NTSTATUS)0xC0000150L)
+#define STATUS_NO_SUCH_ALIAS ((NTSTATUS)0xC0000151L)
+#define STATUS_MEMBER_NOT_IN_ALIAS ((NTSTATUS)0xC0000152L)
+#define STATUS_MEMBER_IN_ALIAS ((NTSTATUS)0xC0000153L)
+#define STATUS_ALIAS_EXISTS ((NTSTATUS)0xC0000154L)
+#define STATUS_LOGON_NOT_GRANTED ((NTSTATUS)0xC0000155L)
+#define STATUS_TOO_MANY_SECRETS ((NTSTATUS)0xC0000156L)
+#define STATUS_SECRET_TOO_LONG ((NTSTATUS)0xC0000157L)
+#define STATUS_INTERNAL_DB_ERROR ((NTSTATUS)0xC0000158L)
+#define STATUS_FULLSCREEN_MODE ((NTSTATUS)0xC0000159L)
+#define STATUS_TOO_MANY_CONTEXT_IDS ((NTSTATUS)0xC000015AL)
+#define STATUS_LOGON_TYPE_NOT_GRANTED ((NTSTATUS)0xC000015BL)
+#define STATUS_NOT_REGISTRY_FILE ((NTSTATUS)0xC000015CL)
+#define STATUS_NT_CROSS_ENCRYPTION_REQUIRED ((NTSTATUS)0xC000015DL)
+#define STATUS_DOMAIN_CTRLR_CONFIG_ERROR ((NTSTATUS)0xC000015EL)
+#define STATUS_FT_MISSING_MEMBER ((NTSTATUS)0xC000015FL)
+#define STATUS_ILL_FORMED_SERVICE_ENTRY ((NTSTATUS)0xC0000160L)
+#define STATUS_ILLEGAL_CHARACTER ((NTSTATUS)0xC0000161L)
+#define STATUS_UNMAPPABLE_CHARACTER ((NTSTATUS)0xC0000162L)
+#define STATUS_UNDEFINED_CHARACTER ((NTSTATUS)0xC0000163L)
+#define STATUS_FLOPPY_VOLUME ((NTSTATUS)0xC0000164L)
+#define STATUS_FLOPPY_ID_MARK_NOT_FOUND ((NTSTATUS)0xC0000165L)
+#define STATUS_FLOPPY_WRONG_CYLINDER ((NTSTATUS)0xC0000166L)
+#define STATUS_FLOPPY_UNKNOWN_ERROR ((NTSTATUS)0xC0000167L)
+#define STATUS_FLOPPY_BAD_REGISTERS ((NTSTATUS)0xC0000168L)
+#define STATUS_DISK_RECALIBRATE_FAILED ((NTSTATUS)0xC0000169L)
+#define STATUS_DISK_OPERATION_FAILED ((NTSTATUS)0xC000016AL)
+#define STATUS_DISK_RESET_FAILED ((NTSTATUS)0xC000016BL)
+#define STATUS_SHARED_IRQ_BUSY ((NTSTATUS)0xC000016CL)
+#define STATUS_FT_ORPHANING ((NTSTATUS)0xC000016DL)
+#define STATUS_BIOS_FAILED_TO_CONNECT_INTERRUPT ((NTSTATUS)0xC000016EL)
+#define STATUS_PARTITION_FAILURE ((NTSTATUS)0xC0000172L)
+#define STATUS_INVALID_BLOCK_LENGTH ((NTSTATUS)0xC0000173L)
+#define STATUS_DEVICE_NOT_PARTITIONED ((NTSTATUS)0xC0000174L)
+#define STATUS_UNABLE_TO_LOCK_MEDIA ((NTSTATUS)0xC0000175L)
+#define STATUS_UNABLE_TO_UNLOAD_MEDIA ((NTSTATUS)0xC0000176L)
+#define STATUS_EOM_OVERFLOW ((NTSTATUS)0xC0000177L)
+#define STATUS_NO_MEDIA ((NTSTATUS)0xC0000178L)
+#define STATUS_NO_SUCH_MEMBER ((NTSTATUS)0xC000017AL)
+#define STATUS_INVALID_MEMBER ((NTSTATUS)0xC000017BL)
+#define STATUS_KEY_DELETED ((NTSTATUS)0xC000017CL)
+#define STATUS_NO_LOG_SPACE ((NTSTATUS)0xC000017DL)
+#define STATUS_TOO_MANY_SIDS ((NTSTATUS)0xC000017EL)
+#define STATUS_LM_CROSS_ENCRYPTION_REQUIRED ((NTSTATUS)0xC000017FL)
+#define STATUS_KEY_HAS_CHILDREN ((NTSTATUS)0xC0000180L)
+#define STATUS_CHILD_MUST_BE_VOLATILE ((NTSTATUS)0xC0000181L)
+#define STATUS_DEVICE_CONFIGURATION_ERROR ((NTSTATUS)0xC0000182L)
+#define STATUS_DRIVER_INTERNAL_ERROR ((NTSTATUS)0xC0000183L)
+#define STATUS_INVALID_DEVICE_STATE ((NTSTATUS)0xC0000184L)
+#define STATUS_IO_DEVICE_ERROR ((NTSTATUS)0xC0000185L)
+#define STATUS_DEVICE_PROTOCOL_ERROR ((NTSTATUS)0xC0000186L)
+#define STATUS_BACKUP_CONTROLLER ((NTSTATUS)0xC0000187L)
+#define STATUS_LOG_FILE_FULL ((NTSTATUS)0xC0000188L)
+#define STATUS_TOO_LATE ((NTSTATUS)0xC0000189L)
+#define STATUS_NO_TRUST_LSA_SECRET ((NTSTATUS)0xC000018AL)
+#define STATUS_NO_TRUST_SAM_ACCOUNT ((NTSTATUS)0xC000018BL)
+#define STATUS_TRUSTED_DOMAIN_FAILURE ((NTSTATUS)0xC000018CL)
+#define STATUS_TRUSTED_RELATIONSHIP_FAILURE ((NTSTATUS)0xC000018DL)
+#define STATUS_EVENTLOG_FILE_CORRUPT ((NTSTATUS)0xC000018EL)
+#define STATUS_EVENTLOG_CANT_START ((NTSTATUS)0xC000018FL)
+#define STATUS_TRUST_FAILURE ((NTSTATUS)0xC0000190L)
+#define STATUS_MUTANT_LIMIT_EXCEEDED ((NTSTATUS)0xC0000191L)
+#define STATUS_NETLOGON_NOT_STARTED ((NTSTATUS)0xC0000192L)
+#define STATUS_ACCOUNT_EXPIRED ((NTSTATUS)0xC0000193L)
+#define STATUS_POSSIBLE_DEADLOCK ((NTSTATUS)0xC0000194L)
+#define STATUS_NETWORK_CREDENTIAL_CONFLICT ((NTSTATUS)0xC0000195L)
+#define STATUS_REMOTE_SESSION_LIMIT ((NTSTATUS)0xC0000196L)
+#define STATUS_EVENTLOG_FILE_CHANGED ((NTSTATUS)0xC0000197L)
+#define STATUS_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT ((NTSTATUS)0xC0000198L)
+#define STATUS_NOLOGON_WORKSTATION_TRUST_ACCOUNT ((NTSTATUS)0xC0000199L)
+#define STATUS_NOLOGON_SERVER_TRUST_ACCOUNT ((NTSTATUS)0xC000019AL)
+#define STATUS_DOMAIN_TRUST_INCONSISTENT ((NTSTATUS)0xC000019BL)
+#define STATUS_FS_DRIVER_REQUIRED ((NTSTATUS)0xC000019CL)
+#define STATUS_NO_USER_SESSION_KEY ((NTSTATUS)0xC0000202L)
+#define STATUS_USER_SESSION_DELETED ((NTSTATUS)0xC0000203L)
+#define STATUS_RESOURCE_LANG_NOT_FOUND ((NTSTATUS)0xC0000204L)
+#define STATUS_INSUFF_SERVER_RESOURCES ((NTSTATUS)0xC0000205L)
+#define STATUS_INVALID_BUFFER_SIZE ((NTSTATUS)0xC0000206L)
+#define STATUS_INVALID_ADDRESS_COMPONENT ((NTSTATUS)0xC0000207L)
+#define STATUS_INVALID_ADDRESS_WILDCARD ((NTSTATUS)0xC0000208L)
+#define STATUS_TOO_MANY_ADDRESSES ((NTSTATUS)0xC0000209L)
+#define STATUS_ADDRESS_ALREADY_EXISTS ((NTSTATUS)0xC000020AL)
+#define STATUS_ADDRESS_CLOSED ((NTSTATUS)0xC000020BL)
+#define STATUS_CONNECTION_DISCONNECTED ((NTSTATUS)0xC000020CL)
+#define STATUS_CONNECTION_RESET ((NTSTATUS)0xC000020DL)
+#define STATUS_TOO_MANY_NODES ((NTSTATUS)0xC000020EL)
+#define STATUS_TRANSACTION_ABORTED ((NTSTATUS)0xC000020FL)
+#define STATUS_TRANSACTION_TIMED_OUT ((NTSTATUS)0xC0000210L)
+#define STATUS_TRANSACTION_NO_RELEASE ((NTSTATUS)0xC0000211L)
+#define STATUS_TRANSACTION_NO_MATCH ((NTSTATUS)0xC0000212L)
+#define STATUS_TRANSACTION_RESPONDED ((NTSTATUS)0xC0000213L)
+#define STATUS_TRANSACTION_INVALID_ID ((NTSTATUS)0xC0000214L)
+#define STATUS_TRANSACTION_INVALID_TYPE ((NTSTATUS)0xC0000215L)
+#define STATUS_NOT_SERVER_SESSION ((NTSTATUS)0xC0000216L)
+#define STATUS_NOT_CLIENT_SESSION ((NTSTATUS)0xC0000217L)
+#define STATUS_CANNOT_LOAD_REGISTRY_FILE ((NTSTATUS)0xC0000218L)
+#define STATUS_DEBUG_ATTACH_FAILED ((NTSTATUS)0xC0000219L)
+#define STATUS_SYSTEM_PROCESS_TERMINATED ((NTSTATUS)0xC000021AL)
+#define STATUS_DATA_NOT_ACCEPTED ((NTSTATUS)0xC000021BL)
+#define STATUS_NO_BROWSER_SERVERS_FOUND ((NTSTATUS)0xC000021CL)
+#define STATUS_VDM_HARD_ERROR ((NTSTATUS)0xC000021DL)
+#define STATUS_DRIVER_CANCEL_TIMEOUT ((NTSTATUS)0xC000021EL)
+#define STATUS_REPLY_MESSAGE_MISMATCH ((NTSTATUS)0xC000021FL)
+#define STATUS_MAPPED_ALIGNMENT ((NTSTATUS)0xC0000220L)
+#define STATUS_IMAGE_CHECKSUM_MISMATCH ((NTSTATUS)0xC0000221L)
+#define STATUS_LOST_WRITEBEHIND_DATA ((NTSTATUS)0xC0000222L)
+#define STATUS_CLIENT_SERVER_PARAMETERS_INVALID ((NTSTATUS)0xC0000223L)
+#define STATUS_PASSWORD_MUST_CHANGE ((NTSTATUS)0xC0000224L)
+#define STATUS_NOT_FOUND ((NTSTATUS)0xC0000225L)
+#define STATUS_NOT_TINY_STREAM ((NTSTATUS)0xC0000226L)
+#define STATUS_RECOVERY_FAILURE ((NTSTATUS)0xC0000227L)
+#define STATUS_STACK_OVERFLOW_READ ((NTSTATUS)0xC0000228L)
+#define STATUS_FAIL_CHECK ((NTSTATUS)0xC0000229L)
+#define STATUS_DUPLICATE_OBJECTID ((NTSTATUS)0xC000022AL)
+#define STATUS_OBJECTID_EXISTS ((NTSTATUS)0xC000022BL)
+#define STATUS_CONVERT_TO_LARGE ((NTSTATUS)0xC000022CL)
+#define STATUS_RETRY ((NTSTATUS)0xC000022DL)
+#define STATUS_FOUND_OUT_OF_SCOPE ((NTSTATUS)0xC000022EL)
+#define STATUS_ALLOCATE_BUCKET ((NTSTATUS)0xC000022FL)
+#define STATUS_PROPSET_NOT_FOUND ((NTSTATUS)0xC0000230L)
+#define STATUS_MARSHALL_OVERFLOW ((NTSTATUS)0xC0000231L)
+#define STATUS_INVALID_VARIANT ((NTSTATUS)0xC0000232L)
+#define STATUS_DOMAIN_CONTROLLER_NOT_FOUND ((NTSTATUS)0xC0000233L)
+#define STATUS_ACCOUNT_LOCKED_OUT ((NTSTATUS)0xC0000234L)
+#define STATUS_HANDLE_NOT_CLOSABLE ((NTSTATUS)0xC0000235L)
+#define STATUS_CONNECTION_REFUSED ((NTSTATUS)0xC0000236L)
+#define STATUS_GRACEFUL_DISCONNECT ((NTSTATUS)0xC0000237L)
+#define STATUS_ADDRESS_ALREADY_ASSOCIATED ((NTSTATUS)0xC0000238L)
+#define STATUS_ADDRESS_NOT_ASSOCIATED ((NTSTATUS)0xC0000239L)
+#define STATUS_CONNECTION_INVALID ((NTSTATUS)0xC000023AL)
+#define STATUS_CONNECTION_ACTIVE ((NTSTATUS)0xC000023BL)
+#define STATUS_NETWORK_UNREACHABLE ((NTSTATUS)0xC000023CL)
+#define STATUS_HOST_UNREACHABLE ((NTSTATUS)0xC000023DL)
+#define STATUS_PROTOCOL_UNREACHABLE ((NTSTATUS)0xC000023EL)
+#define STATUS_PORT_UNREACHABLE ((NTSTATUS)0xC000023FL)
+#define STATUS_REQUEST_ABORTED ((NTSTATUS)0xC0000240L)
+#define STATUS_CONNECTION_ABORTED ((NTSTATUS)0xC0000241L)
+#define STATUS_BAD_COMPRESSION_BUFFER ((NTSTATUS)0xC0000242L)
+#define STATUS_USER_MAPPED_FILE ((NTSTATUS)0xC0000243L)
+#define STATUS_AUDIT_FAILED ((NTSTATUS)0xC0000244L)
+#define STATUS_TIMER_RESOLUTION_NOT_SET ((NTSTATUS)0xC0000245L)
+#define STATUS_CONNECTION_COUNT_LIMIT ((NTSTATUS)0xC0000246L)
+#define STATUS_LOGIN_TIME_RESTRICTION ((NTSTATUS)0xC0000247L)
+#define STATUS_LOGIN_WKSTA_RESTRICTION ((NTSTATUS)0xC0000248L)
+#define STATUS_IMAGE_MP_UP_MISMATCH ((NTSTATUS)0xC0000249L)
+#define STATUS_INSUFFICIENT_LOGON_INFO ((NTSTATUS)0xC0000250L)
+#define STATUS_BAD_DLL_ENTRYPOINT ((NTSTATUS)0xC0000251L)
+#define STATUS_BAD_SERVICE_ENTRYPOINT ((NTSTATUS)0xC0000252L)
+#define STATUS_LPC_REPLY_LOST ((NTSTATUS)0xC0000253L)
+#define STATUS_IP_ADDRESS_CONFLICT1 ((NTSTATUS)0xC0000254L)
+#define STATUS_IP_ADDRESS_CONFLICT2 ((NTSTATUS)0xC0000255L)
+#define STATUS_REGISTRY_QUOTA_LIMIT ((NTSTATUS)0xC0000256L)
+#define STATUS_PATH_NOT_COVERED ((NTSTATUS)0xC0000257L)
+#define STATUS_NO_CALLBACK_ACTIVE ((NTSTATUS)0xC0000258L)
+#define STATUS_LICENSE_QUOTA_EXCEEDED ((NTSTATUS)0xC0000259L)
+#define STATUS_PWD_TOO_SHORT ((NTSTATUS)0xC000025AL)
+#define STATUS_PWD_TOO_RECENT ((NTSTATUS)0xC000025BL)
+#define STATUS_PWD_HISTORY_CONFLICT ((NTSTATUS)0xC000025CL)
+#define STATUS_PLUGPLAY_NO_DEVICE ((NTSTATUS)0xC000025EL)
+#define STATUS_UNSUPPORTED_COMPRESSION ((NTSTATUS)0xC000025FL)
+#define STATUS_INVALID_HW_PROFILE ((NTSTATUS)0xC0000260L)
+#define STATUS_INVALID_PLUGPLAY_DEVICE_PATH ((NTSTATUS)0xC0000261L)
+#define STATUS_DRIVER_ORDINAL_NOT_FOUND ((NTSTATUS)0xC0000262L)
+#define STATUS_DRIVER_ENTRYPOINT_NOT_FOUND ((NTSTATUS)0xC0000263L)
+#define STATUS_RESOURCE_NOT_OWNED ((NTSTATUS)0xC0000264L)
+#define STATUS_TOO_MANY_LINKS ((NTSTATUS)0xC0000265L)
+#define STATUS_QUOTA_LIST_INCONSISTENT ((NTSTATUS)0xC0000266L)
+#define STATUS_FILE_IS_OFFLINE ((NTSTATUS)0xC0000267L)
+#define STATUS_EVALUATION_EXPIRATION ((NTSTATUS)0xC0000268L)
+#define STATUS_ILLEGAL_DLL_RELOCATION ((NTSTATUS)0xC0000269L)
+#define STATUS_LICENSE_VIOLATION ((NTSTATUS)0xC000026AL)
+#define STATUS_DLL_INIT_FAILED_LOGOFF ((NTSTATUS)0xC000026BL)
+#define STATUS_DRIVER_UNABLE_TO_LOAD ((NTSTATUS)0xC000026CL)
+#define STATUS_DFS_UNAVAILABLE ((NTSTATUS)0xC000026DL)
+#define STATUS_VOLUME_DISMOUNTED ((NTSTATUS)0xC000026EL)
+#define STATUS_WX86_INTERNAL_ERROR ((NTSTATUS)0xC000026FL)
+#define STATUS_WX86_FLOAT_STACK_CHECK ((NTSTATUS)0xC0000270L)
+#define STATUS_VALIDATE_CONTINUE ((NTSTATUS)0xC0000271L)
+#define STATUS_NO_MATCH ((NTSTATUS)0xC0000272L)
+#define STATUS_NO_MORE_MATCHES ((NTSTATUS)0xC0000273L)
+#define STATUS_NOT_A_REPARSE_POINT ((NTSTATUS)0xC0000275L)
+#define STATUS_IO_REPARSE_TAG_INVALID ((NTSTATUS)0xC0000276L)
+#define STATUS_IO_REPARSE_TAG_MISMATCH ((NTSTATUS)0xC0000277L)
+#define STATUS_IO_REPARSE_DATA_INVALID ((NTSTATUS)0xC0000278L)
+#define STATUS_IO_REPARSE_TAG_NOT_HANDLED ((NTSTATUS)0xC0000279L)
+#define STATUS_REPARSE_POINT_NOT_RESOLVED ((NTSTATUS)0xC0000280L)
+#define STATUS_DIRECTORY_IS_A_REPARSE_POINT ((NTSTATUS)0xC0000281L)
+#define STATUS_RANGE_LIST_CONFLICT ((NTSTATUS)0xC0000282L)
+#define STATUS_SOURCE_ELEMENT_EMPTY ((NTSTATUS)0xC0000283L)
+#define STATUS_DESTINATION_ELEMENT_FULL ((NTSTATUS)0xC0000284L)
+#define STATUS_ILLEGAL_ELEMENT_ADDRESS ((NTSTATUS)0xC0000285L)
+#define STATUS_MAGAZINE_NOT_PRESENT ((NTSTATUS)0xC0000286L)
+#define STATUS_REINITIALIZATION_NEEDED ((NTSTATUS)0xC0000287L)
+#define STATUS_DEVICE_REQUIRES_CLEANING ((NTSTATUS)0x80000288L)
+#define STATUS_DEVICE_DOOR_OPEN ((NTSTATUS)0x80000289L)
+#define STATUS_ENCRYPTION_FAILED ((NTSTATUS)0xC000028AL)
+#define STATUS_DECRYPTION_FAILED ((NTSTATUS)0xC000028BL)
+#define STATUS_RANGE_NOT_FOUND ((NTSTATUS)0xC000028CL)
+#define STATUS_NO_RECOVERY_POLICY ((NTSTATUS)0xC000028DL)
+#define STATUS_NO_EFS ((NTSTATUS)0xC000028EL)
+#define STATUS_WRONG_EFS ((NTSTATUS)0xC000028FL)
+#define STATUS_NO_USER_KEYS ((NTSTATUS)0xC0000290L)
+#define STATUS_FILE_NOT_ENCRYPTED ((NTSTATUS)0xC0000291L)
+#define STATUS_NOT_EXPORT_FORMAT ((NTSTATUS)0xC0000292L)
+#define STATUS_FILE_ENCRYPTED ((NTSTATUS)0xC0000293L)
+#define STATUS_WAKE_SYSTEM ((NTSTATUS)0x40000294L)
+#define STATUS_WMI_GUID_NOT_FOUND ((NTSTATUS)0xC0000295L)
+#define STATUS_WMI_INSTANCE_NOT_FOUND ((NTSTATUS)0xC0000296L)
+#define STATUS_WMI_ITEMID_NOT_FOUND ((NTSTATUS)0xC0000297L)
+#define STATUS_WMI_TRY_AGAIN ((NTSTATUS)0xC0000298L)
+#define STATUS_SHARED_POLICY ((NTSTATUS)0xC0000299L)
+#define STATUS_POLICY_OBJECT_NOT_FOUND ((NTSTATUS)0xC000029AL)
+#define STATUS_POLICY_ONLY_IN_DS ((NTSTATUS)0xC000029BL)
+#define STATUS_VOLUME_NOT_UPGRADED ((NTSTATUS)0xC000029CL)
+#define STATUS_REMOTE_STORAGE_NOT_ACTIVE ((NTSTATUS)0xC000029DL)
+#define STATUS_REMOTE_STORAGE_MEDIA_ERROR ((NTSTATUS)0xC000029EL)
+#define STATUS_NO_TRACKING_SERVICE ((NTSTATUS)0xC000029FL)
+#define STATUS_SERVER_SID_MISMATCH ((NTSTATUS)0xC00002A0L)
+#define STATUS_DS_NO_ATTRIBUTE_OR_VALUE ((NTSTATUS)0xC00002A1L)
+#define STATUS_DS_INVALID_ATTRIBUTE_SYNTAX ((NTSTATUS)0xC00002A2L)
+#define STATUS_DS_ATTRIBUTE_TYPE_UNDEFINED ((NTSTATUS)0xC00002A3L)
+#define STATUS_DS_ATTRIBUTE_OR_VALUE_EXISTS ((NTSTATUS)0xC00002A4L)
+#define STATUS_DS_BUSY ((NTSTATUS)0xC00002A5L)
+#define STATUS_DS_UNAVAILABLE ((NTSTATUS)0xC00002A6L)
+#define STATUS_DS_NO_RIDS_ALLOCATED ((NTSTATUS)0xC00002A7L)
+#define STATUS_DS_NO_MORE_RIDS ((NTSTATUS)0xC00002A8L)
+#define STATUS_DS_INCORRECT_ROLE_OWNER ((NTSTATUS)0xC00002A9L)
+#define STATUS_DS_RIDMGR_INIT_ERROR ((NTSTATUS)0xC00002AAL)
+#define STATUS_DS_OBJ_CLASS_VIOLATION ((NTSTATUS)0xC00002ABL)
+#define STATUS_DS_CANT_ON_NON_LEAF ((NTSTATUS)0xC00002ACL)
+#define STATUS_DS_CANT_ON_RDN ((NTSTATUS)0xC00002ADL)
+#define STATUS_DS_CANT_MOD_OBJ_CLASS ((NTSTATUS)0xC00002AEL)
+#define STATUS_DS_CROSS_DOM_MOVE_FAILED ((NTSTATUS)0xC00002AFL)
+#define STATUS_DS_GC_NOT_AVAILABLE ((NTSTATUS)0xC00002B0L)
+#define STATUS_DIRECTORY_SERVICE_REQUIRED ((NTSTATUS)0xC00002B1L)
+#define STATUS_REPARSE_ATTRIBUTE_CONFLICT ((NTSTATUS)0xC00002B2L)
+#define STATUS_CANT_ENABLE_DENY_ONLY ((NTSTATUS)0xC00002B3L)
+#define STATUS_FLOAT_MULTIPLE_FAULTS ((NTSTATUS)0xC00002B4L)
+#define STATUS_FLOAT_MULTIPLE_TRAPS ((NTSTATUS)0xC00002B5L)
+#define STATUS_DEVICE_REMOVED ((NTSTATUS)0xC00002B6L)
+#define STATUS_JOURNAL_DELETE_IN_PROGRESS ((NTSTATUS)0xC00002B7L)
+#define STATUS_JOURNAL_NOT_ACTIVE ((NTSTATUS)0xC00002B8L)
+#define STATUS_NOINTERFACE ((NTSTATUS)0xC00002B9L)
+#define STATUS_DS_ADMIN_LIMIT_EXCEEDED ((NTSTATUS)0xC00002C1L)
+#define STATUS_DRIVER_FAILED_SLEEP ((NTSTATUS)0xC00002C2L)
+#define STATUS_MUTUAL_AUTHENTICATION_FAILED ((NTSTATUS)0xC00002C3L)
+#define STATUS_CORRUPT_SYSTEM_FILE ((NTSTATUS)0xC00002C4L)
+#define STATUS_DATATYPE_MISALIGNMENT_ERROR ((NTSTATUS)0xC00002C5L)
+#define STATUS_WMI_READ_ONLY ((NTSTATUS)0xC00002C6L)
+#define STATUS_WMI_SET_FAILURE ((NTSTATUS)0xC00002C7L)
+#define STATUS_COMMITMENT_MINIMUM ((NTSTATUS)0xC00002C8L)
+#define STATUS_REG_NAT_CONSUMPTION ((NTSTATUS)0xC00002C9L)
+#define STATUS_TRANSPORT_FULL ((NTSTATUS)0xC00002CAL)
+#define STATUS_DS_SAM_INIT_FAILURE ((NTSTATUS)0xC00002CBL)
+#define STATUS_ONLY_IF_CONNECTED ((NTSTATUS)0xC00002CCL)
+#define STATUS_DS_SENSITIVE_GROUP_VIOLATION ((NTSTATUS)0xC00002CDL)
+#define STATUS_PNP_RESTART_ENUMERATION ((NTSTATUS)0xC00002CEL)
+#define STATUS_JOURNAL_ENTRY_DELETED ((NTSTATUS)0xC00002CFL)
+#define STATUS_DS_CANT_MOD_PRIMARYGROUPID ((NTSTATUS)0xC00002D0L)
+#define STATUS_SYSTEM_IMAGE_BAD_SIGNATURE ((NTSTATUS)0xC00002D1L)
+#define STATUS_PNP_REBOOT_REQUIRED ((NTSTATUS)0xC00002D2L)
+#define STATUS_POWER_STATE_INVALID ((NTSTATUS)0xC00002D3L)
+#define STATUS_DS_INVALID_GROUP_TYPE ((NTSTATUS)0xC00002D4L)
+#define STATUS_DS_NO_NEST_GLOBALGROUP_IN_MIXEDDOMAIN ((NTSTATUS)0xC00002D5L)
+#define STATUS_DS_NO_NEST_LOCALGROUP_IN_MIXEDDOMAIN ((NTSTATUS)0xC00002D6L)
+#define STATUS_DS_GLOBAL_CANT_HAVE_LOCAL_MEMBER ((NTSTATUS)0xC00002D7L)
+#define STATUS_DS_GLOBAL_CANT_HAVE_UNIVERSAL_MEMBER ((NTSTATUS)0xC00002D8L)
+#define STATUS_DS_UNIVERSAL_CANT_HAVE_LOCAL_MEMBER ((NTSTATUS)0xC00002D9L)
+#define STATUS_DS_GLOBAL_CANT_HAVE_CROSSDOMAIN_MEMBER ((NTSTATUS)0xC00002DAL)
+#define STATUS_DS_LOCAL_CANT_HAVE_CROSSDOMAIN_LOCAL_MEMBER ((NTSTATUS)0xC00002DBL)
+#define STATUS_DS_HAVE_PRIMARY_MEMBERS ((NTSTATUS)0xC00002DCL)
+#define STATUS_WMI_NOT_SUPPORTED ((NTSTATUS)0xC00002DDL)
+#define STATUS_INSUFFICIENT_POWER ((NTSTATUS)0xC00002DEL)
+#define STATUS_SAM_NEED_BOOTKEY_PASSWORD ((NTSTATUS)0xC00002DFL)
+#define STATUS_SAM_NEED_BOOTKEY_FLOPPY ((NTSTATUS)0xC00002E0L)
+#define STATUS_DS_CANT_START ((NTSTATUS)0xC00002E1L)
+#define STATUS_DS_INIT_FAILURE ((NTSTATUS)0xC00002E2L)
+#define STATUS_SAM_INIT_FAILURE ((NTSTATUS)0xC00002E3L)
+#define STATUS_DS_GC_REQUIRED ((NTSTATUS)0xC00002E4L)
+#define STATUS_DS_LOCAL_MEMBER_OF_LOCAL_ONLY ((NTSTATUS)0xC00002E5L)
+#define STATUS_DS_NO_FPO_IN_UNIVERSAL_GROUPS ((NTSTATUS)0xC00002E6L)
+#define STATUS_DS_MACHINE_ACCOUNT_QUOTA_EXCEEDED ((NTSTATUS)0xC00002E7L)
+#define STATUS_MULTIPLE_FAULT_VIOLATION ((NTSTATUS)0xC00002E8L)
+#define STATUS_CURRENT_DOMAIN_NOT_ALLOWED ((NTSTATUS)0xC00002E9L)
+#define STATUS_CANNOT_MAKE ((NTSTATUS)0xC00002EAL)
+#define STATUS_SYSTEM_SHUTDOWN ((NTSTATUS)0xC00002EBL)
+#define STATUS_DS_INIT_FAILURE_CONSOLE ((NTSTATUS)0xC00002ECL)
+#define STATUS_DS_SAM_INIT_FAILURE_CONSOLE ((NTSTATUS)0xC00002EDL)
+#define STATUS_UNFINISHED_CONTEXT_DELETED ((NTSTATUS)0xC00002EEL)
+#define STATUS_NO_TGT_REPLY ((NTSTATUS)0xC00002EFL)
+#define STATUS_OBJECTID_NOT_FOUND ((NTSTATUS)0xC00002F0L)
+#define STATUS_NO_IP_ADDRESSES ((NTSTATUS)0xC00002F1L)
+#define STATUS_WRONG_CREDENTIAL_HANDLE ((NTSTATUS)0xC00002F2L)
+#define STATUS_CRYPTO_SYSTEM_INVALID ((NTSTATUS)0xC00002F3L)
+#define STATUS_MAX_REFERRALS_EXCEEDED ((NTSTATUS)0xC00002F4L)
+#define STATUS_MUST_BE_KDC ((NTSTATUS)0xC00002F5L)
+#define STATUS_STRONG_CRYPTO_NOT_SUPPORTED ((NTSTATUS)0xC00002F6L)
+#define STATUS_TOO_MANY_PRINCIPALS ((NTSTATUS)0xC00002F7L)
+#define STATUS_NO_PA_DATA ((NTSTATUS)0xC00002F8L)
+#define STATUS_PKINIT_NAME_MISMATCH ((NTSTATUS)0xC00002F9L)
+#define STATUS_SMARTCARD_LOGON_REQUIRED ((NTSTATUS)0xC00002FAL)
+#define STATUS_KDC_INVALID_REQUEST ((NTSTATUS)0xC00002FBL)
+#define STATUS_KDC_UNABLE_TO_REFER ((NTSTATUS)0xC00002FCL)
+#define STATUS_KDC_UNKNOWN_ETYPE ((NTSTATUS)0xC00002FDL)
+#define STATUS_SHUTDOWN_IN_PROGRESS ((NTSTATUS)0xC00002FEL)
+#define STATUS_SERVER_SHUTDOWN_IN_PROGRESS ((NTSTATUS)0xC00002FFL)
+#define STATUS_NOT_SUPPORTED_ON_SBS ((NTSTATUS)0xC0000300L)
+#define STATUS_WMI_GUID_DISCONNECTED ((NTSTATUS)0xC0000301L)
+#define STATUS_WMI_ALREADY_DISABLED ((NTSTATUS)0xC0000302L)
+#define STATUS_WMI_ALREADY_ENABLED ((NTSTATUS)0xC0000303L)
+#define STATUS_MFT_TOO_FRAGMENTED ((NTSTATUS)0xC0000304L)
+#define STATUS_COPY_PROTECTION_FAILURE ((NTSTATUS)0xC0000305L)
+#define STATUS_CSS_AUTHENTICATION_FAILURE ((NTSTATUS)0xC0000306L)
+#define STATUS_CSS_KEY_NOT_PRESENT ((NTSTATUS)0xC0000307L)
+#define STATUS_CSS_KEY_NOT_ESTABLISHED ((NTSTATUS)0xC0000308L)
+#define STATUS_CSS_SCRAMBLED_SECTOR ((NTSTATUS)0xC0000309L)
+#define STATUS_CSS_REGION_MISMATCH ((NTSTATUS)0xC000030AL)
+#define STATUS_CSS_RESETS_EXHAUSTED ((NTSTATUS)0xC000030BL)
+#define STATUS_PKINIT_FAILURE ((NTSTATUS)0xC0000320L)
+#define STATUS_SMARTCARD_SUBSYSTEM_FAILURE ((NTSTATUS)0xC0000321L)
+#define STATUS_NO_KERB_KEY ((NTSTATUS)0xC0000322L)
+#define STATUS_HOST_DOWN ((NTSTATUS)0xC0000350L)
+#define STATUS_UNSUPPORTED_PREAUTH ((NTSTATUS)0xC0000351L)
+#define STATUS_EFS_ALG_BLOB_TOO_BIG ((NTSTATUS)0xC0000352L)
+#define STATUS_PORT_NOT_SET ((NTSTATUS)0xC0000353L)
+#define STATUS_DEBUGGER_INACTIVE ((NTSTATUS)0xC0000354L)
+#define STATUS_DS_VERSION_CHECK_FAILURE ((NTSTATUS)0xC0000355L)
+#define STATUS_AUDITING_DISABLED ((NTSTATUS)0xC0000356L)
+#define STATUS_PRENT4_MACHINE_ACCOUNT ((NTSTATUS)0xC0000357L)
+#define STATUS_DS_AG_CANT_HAVE_UNIVERSAL_MEMBER ((NTSTATUS)0xC0000358L)
+#define STATUS_INVALID_IMAGE_WIN_32 ((NTSTATUS)0xC0000359L)
+#define STATUS_INVALID_IMAGE_WIN_64 ((NTSTATUS)0xC000035AL)
+#define STATUS_BAD_BINDINGS ((NTSTATUS)0xC000035BL)
+#define STATUS_NETWORK_SESSION_EXPIRED ((NTSTATUS)0xC000035CL)
+#define STATUS_APPHELP_BLOCK ((NTSTATUS)0xC000035DL)
+#define STATUS_ALL_SIDS_FILTERED ((NTSTATUS)0xC000035EL)
+#define STATUS_NOT_SAFE_MODE_DRIVER ((NTSTATUS)0xC000035FL)
+#define STATUS_ACCESS_DISABLED_BY_POLICY_DEFAULT ((NTSTATUS)0xC0000361L)
+#define STATUS_ACCESS_DISABLED_BY_POLICY_PATH ((NTSTATUS)0xC0000362L)
+#define STATUS_ACCESS_DISABLED_BY_POLICY_PUBLISHER ((NTSTATUS)0xC0000363L)
+#define STATUS_ACCESS_DISABLED_BY_POLICY_OTHER ((NTSTATUS)0xC0000364L)
+#define STATUS_FAILED_DRIVER_ENTRY ((NTSTATUS)0xC0000365L)
+#define STATUS_DEVICE_ENUMERATION_ERROR ((NTSTATUS)0xC0000366L)
+#define STATUS_WAIT_FOR_OPLOCK ((NTSTATUS)0x00000367L)
+#define STATUS_MOUNT_POINT_NOT_RESOLVED ((NTSTATUS)0xC0000368L)
+#define STATUS_INVALID_DEVICE_OBJECT_PARAMETER ((NTSTATUS)0xC0000369L)
+#define STATUS_MCA_OCCURED ((NTSTATUS)0xC000036AL)
+#define STATUS_DRIVER_BLOCKED_CRITICAL ((NTSTATUS)0xC000036BL)
+#define STATUS_DRIVER_BLOCKED ((NTSTATUS)0xC000036CL)
+#define STATUS_DRIVER_DATABASE_ERROR ((NTSTATUS)0xC000036DL)
+#define STATUS_SYSTEM_HIVE_TOO_LARGE ((NTSTATUS)0xC000036EL)
+#define STATUS_INVALID_IMPORT_OF_NON_DLL ((NTSTATUS)0xC000036FL)
+#define STATUS_DS_SHUTTING_DOWN ((NTSTATUS)0x40000370L)
+#define STATUS_SMARTCARD_WRONG_PIN ((NTSTATUS)0xC0000380L)
+#define STATUS_SMARTCARD_CARD_BLOCKED ((NTSTATUS)0xC0000381L)
+#define STATUS_SMARTCARD_CARD_NOT_AUTHENTICATED ((NTSTATUS)0xC0000382L)
+#define STATUS_SMARTCARD_NO_CARD ((NTSTATUS)0xC0000383L)
+#define STATUS_SMARTCARD_NO_KEY_CONTAINER ((NTSTATUS)0xC0000384L)
+#define STATUS_SMARTCARD_NO_CERTIFICATE ((NTSTATUS)0xC0000385L)
+#define STATUS_SMARTCARD_NO_KEYSET ((NTSTATUS)0xC0000386L)
+#define STATUS_SMARTCARD_IO_ERROR ((NTSTATUS)0xC0000387L)
+#define STATUS_DOWNGRADE_DETECTED ((NTSTATUS)0xC0000388L)
+#define STATUS_SMARTCARD_CERT_REVOKED ((NTSTATUS)0xC0000389L)
+#define STATUS_ISSUING_CA_UNTRUSTED ((NTSTATUS)0xC000038AL)
+#define STATUS_REVOCATION_OFFLINE_C ((NTSTATUS)0xC000038BL)
+#define STATUS_PKINIT_CLIENT_FAILURE ((NTSTATUS)0xC000038CL)
+#define STATUS_SMARTCARD_CERT_EXPIRED ((NTSTATUS)0xC000038DL)
+#define STATUS_DRIVER_FAILED_PRIOR_UNLOAD ((NTSTATUS)0xC000038EL)
+#define STATUS_WOW_ASSERTION ((NTSTATUS)0xC0009898L)
+#define RPC_NT_INVALID_STRING_BINDING ((NTSTATUS)0xC0020001L)
+#define RPC_NT_WRONG_KIND_OF_BINDING ((NTSTATUS)0xC0020002L)
+#define RPC_NT_INVALID_BINDING ((NTSTATUS)0xC0020003L)
+#define RPC_NT_PROTSEQ_NOT_SUPPORTED ((NTSTATUS)0xC0020004L)
+#define RPC_NT_INVALID_RPC_PROTSEQ ((NTSTATUS)0xC0020005L)
+#define RPC_NT_INVALID_STRING_UUID ((NTSTATUS)0xC0020006L)
+#define RPC_NT_INVALID_ENDPOINT_FORMAT ((NTSTATUS)0xC0020007L)
+#define RPC_NT_INVALID_NET_ADDR ((NTSTATUS)0xC0020008L)
+#define RPC_NT_NO_ENDPOINT_FOUND ((NTSTATUS)0xC0020009L)
+#define RPC_NT_INVALID_TIMEOUT ((NTSTATUS)0xC002000AL)
+#define RPC_NT_OBJECT_NOT_FOUND ((NTSTATUS)0xC002000BL)
+#define RPC_NT_ALREADY_REGISTERED ((NTSTATUS)0xC002000CL)
+#define RPC_NT_TYPE_ALREADY_REGISTERED ((NTSTATUS)0xC002000DL)
+#define RPC_NT_ALREADY_LISTENING ((NTSTATUS)0xC002000EL)
+#define RPC_NT_NO_PROTSEQS_REGISTERED ((NTSTATUS)0xC002000FL)
+#define RPC_NT_NOT_LISTENING ((NTSTATUS)0xC0020010L)
+#define RPC_NT_UNKNOWN_MGR_TYPE ((NTSTATUS)0xC0020011L)
+#define RPC_NT_UNKNOWN_IF ((NTSTATUS)0xC0020012L)
+#define RPC_NT_NO_BINDINGS ((NTSTATUS)0xC0020013L)
+#define RPC_NT_NO_PROTSEQS ((NTSTATUS)0xC0020014L)
+#define RPC_NT_CANT_CREATE_ENDPOINT ((NTSTATUS)0xC0020015L)
+#define RPC_NT_OUT_OF_RESOURCES ((NTSTATUS)0xC0020016L)
+#define RPC_NT_SERVER_UNAVAILABLE ((NTSTATUS)0xC0020017L)
+#define RPC_NT_SERVER_TOO_BUSY ((NTSTATUS)0xC0020018L)
+#define RPC_NT_INVALID_NETWORK_OPTIONS ((NTSTATUS)0xC0020019L)
+#define RPC_NT_NO_CALL_ACTIVE ((NTSTATUS)0xC002001AL)
+#define RPC_NT_CALL_FAILED ((NTSTATUS)0xC002001BL)
+#define RPC_NT_CALL_FAILED_DNE ((NTSTATUS)0xC002001CL)
+#define RPC_NT_PROTOCOL_ERROR ((NTSTATUS)0xC002001DL)
+#define RPC_NT_UNSUPPORTED_TRANS_SYN ((NTSTATUS)0xC002001FL)
+#define RPC_NT_UNSUPPORTED_TYPE ((NTSTATUS)0xC0020021L)
+#define RPC_NT_INVALID_TAG ((NTSTATUS)0xC0020022L)
+#define RPC_NT_INVALID_BOUND ((NTSTATUS)0xC0020023L)
+#define RPC_NT_NO_ENTRY_NAME ((NTSTATUS)0xC0020024L)
+#define RPC_NT_INVALID_NAME_SYNTAX ((NTSTATUS)0xC0020025L)
+#define RPC_NT_UNSUPPORTED_NAME_SYNTAX ((NTSTATUS)0xC0020026L)
+#define RPC_NT_UUID_NO_ADDRESS ((NTSTATUS)0xC0020028L)
+#define RPC_NT_DUPLICATE_ENDPOINT ((NTSTATUS)0xC0020029L)
+#define RPC_NT_UNKNOWN_AUTHN_TYPE ((NTSTATUS)0xC002002AL)
+#define RPC_NT_MAX_CALLS_TOO_SMALL ((NTSTATUS)0xC002002BL)
+#define RPC_NT_STRING_TOO_LONG ((NTSTATUS)0xC002002CL)
+#define RPC_NT_PROTSEQ_NOT_FOUND ((NTSTATUS)0xC002002DL)
+#define RPC_NT_PROCNUM_OUT_OF_RANGE ((NTSTATUS)0xC002002EL)
+#define RPC_NT_BINDING_HAS_NO_AUTH ((NTSTATUS)0xC002002FL)
+#define RPC_NT_UNKNOWN_AUTHN_SERVICE ((NTSTATUS)0xC0020030L)
+#define RPC_NT_UNKNOWN_AUTHN_LEVEL ((NTSTATUS)0xC0020031L)
+#define RPC_NT_INVALID_AUTH_IDENTITY ((NTSTATUS)0xC0020032L)
+#define RPC_NT_UNKNOWN_AUTHZ_SERVICE ((NTSTATUS)0xC0020033L)
+#define EPT_NT_INVALID_ENTRY ((NTSTATUS)0xC0020034L)
+#define EPT_NT_CANT_PERFORM_OP ((NTSTATUS)0xC0020035L)
+#define EPT_NT_NOT_REGISTERED ((NTSTATUS)0xC0020036L)
+#define RPC_NT_NOTHING_TO_EXPORT ((NTSTATUS)0xC0020037L)
+#define RPC_NT_INCOMPLETE_NAME ((NTSTATUS)0xC0020038L)
+#define RPC_NT_INVALID_VERS_OPTION ((NTSTATUS)0xC0020039L)
+#define RPC_NT_NO_MORE_MEMBERS ((NTSTATUS)0xC002003AL)
+#define RPC_NT_NOT_ALL_OBJS_UNEXPORTED ((NTSTATUS)0xC002003BL)
+#define RPC_NT_INTERFACE_NOT_FOUND ((NTSTATUS)0xC002003CL)
+#define RPC_NT_ENTRY_ALREADY_EXISTS ((NTSTATUS)0xC002003DL)
+#define RPC_NT_ENTRY_NOT_FOUND ((NTSTATUS)0xC002003EL)
+#define RPC_NT_NAME_SERVICE_UNAVAILABLE ((NTSTATUS)0xC002003FL)
+#define RPC_NT_INVALID_NAF_ID ((NTSTATUS)0xC0020040L)
+#define RPC_NT_CANNOT_SUPPORT ((NTSTATUS)0xC0020041L)
+#define RPC_NT_NO_CONTEXT_AVAILABLE ((NTSTATUS)0xC0020042L)
+#define RPC_NT_INTERNAL_ERROR ((NTSTATUS)0xC0020043L)
+#define RPC_NT_ZERO_DIVIDE ((NTSTATUS)0xC0020044L)
+#define RPC_NT_ADDRESS_ERROR ((NTSTATUS)0xC0020045L)
+#define RPC_NT_FP_DIV_ZERO ((NTSTATUS)0xC0020046L)
+#define RPC_NT_FP_UNDERFLOW ((NTSTATUS)0xC0020047L)
+#define RPC_NT_FP_OVERFLOW ((NTSTATUS)0xC0020048L)
+#define RPC_NT_NO_MORE_ENTRIES ((NTSTATUS)0xC0030001L)
+#define RPC_NT_SS_CHAR_TRANS_OPEN_FAIL ((NTSTATUS)0xC0030002L)
+#define RPC_NT_SS_CHAR_TRANS_SHORT_FILE ((NTSTATUS)0xC0030003L)
+#define RPC_NT_SS_IN_NULL_CONTEXT ((NTSTATUS)0xC0030004L)
+#define RPC_NT_SS_CONTEXT_MISMATCH ((NTSTATUS)0xC0030005L)
+#define RPC_NT_SS_CONTEXT_DAMAGED ((NTSTATUS)0xC0030006L)
+#define RPC_NT_SS_HANDLES_MISMATCH ((NTSTATUS)0xC0030007L)
+#define RPC_NT_SS_CANNOT_GET_CALL_HANDLE ((NTSTATUS)0xC0030008L)
+#define RPC_NT_NULL_REF_POINTER ((NTSTATUS)0xC0030009L)
+#define RPC_NT_ENUM_VALUE_OUT_OF_RANGE ((NTSTATUS)0xC003000AL)
+#define RPC_NT_BYTE_COUNT_TOO_SMALL ((NTSTATUS)0xC003000BL)
+#define RPC_NT_BAD_STUB_DATA ((NTSTATUS)0xC003000CL)
+#define RPC_NT_CALL_IN_PROGRESS ((NTSTATUS)0xC0020049L)
+#define RPC_NT_NO_MORE_BINDINGS ((NTSTATUS)0xC002004AL)
+#define RPC_NT_GROUP_MEMBER_NOT_FOUND ((NTSTATUS)0xC002004BL)
+#define EPT_NT_CANT_CREATE ((NTSTATUS)0xC002004CL)
+#define RPC_NT_INVALID_OBJECT ((NTSTATUS)0xC002004DL)
+#define RPC_NT_NO_INTERFACES ((NTSTATUS)0xC002004FL)
+#define RPC_NT_CALL_CANCELLED ((NTSTATUS)0xC0020050L)
+#define RPC_NT_BINDING_INCOMPLETE ((NTSTATUS)0xC0020051L)
+#define RPC_NT_COMM_FAILURE ((NTSTATUS)0xC0020052L)
+#define RPC_NT_UNSUPPORTED_AUTHN_LEVEL ((NTSTATUS)0xC0020053L)
+#define RPC_NT_NO_PRINC_NAME ((NTSTATUS)0xC0020054L)
+#define RPC_NT_NOT_RPC_ERROR ((NTSTATUS)0xC0020055L)
+#define RPC_NT_UUID_LOCAL_ONLY ((NTSTATUS)0x40020056L)
+#define RPC_NT_SEC_PKG_ERROR ((NTSTATUS)0xC0020057L)
+#define RPC_NT_NOT_CANCELLED ((NTSTATUS)0xC0020058L)
+#define RPC_NT_INVALID_ES_ACTION ((NTSTATUS)0xC0030059L)
+#define RPC_NT_WRONG_ES_VERSION ((NTSTATUS)0xC003005AL)
+#define RPC_NT_WRONG_STUB_VERSION ((NTSTATUS)0xC003005BL)
+#define RPC_NT_INVALID_PIPE_OBJECT ((NTSTATUS)0xC003005CL)
+#define RPC_NT_INVALID_PIPE_OPERATION ((NTSTATUS)0xC003005DL)
+#define RPC_NT_WRONG_PIPE_VERSION ((NTSTATUS)0xC003005EL)
+#define RPC_NT_PIPE_CLOSED ((NTSTATUS)0xC003005FL)
+#define RPC_NT_PIPE_DISCIPLINE_ERROR ((NTSTATUS)0xC0030060L)
+#define RPC_NT_PIPE_EMPTY ((NTSTATUS)0xC0030061L)
+#define RPC_NT_INVALID_ASYNC_HANDLE ((NTSTATUS)0xC0020062L)
+#define RPC_NT_INVALID_ASYNC_CALL ((NTSTATUS)0xC0020063L)
+#define RPC_NT_SEND_INCOMPLETE ((NTSTATUS)0x400200AFL)
+#define STATUS_ACPI_INVALID_OPCODE ((NTSTATUS)0xC0140001L)
+#define STATUS_ACPI_STACK_OVERFLOW ((NTSTATUS)0xC0140002L)
+#define STATUS_ACPI_ASSERT_FAILED ((NTSTATUS)0xC0140003L)
+#define STATUS_ACPI_INVALID_INDEX ((NTSTATUS)0xC0140004L)
+#define STATUS_ACPI_INVALID_ARGUMENT ((NTSTATUS)0xC0140005L)
+#define STATUS_ACPI_FATAL ((NTSTATUS)0xC0140006L)
+#define STATUS_ACPI_INVALID_SUPERNAME ((NTSTATUS)0xC0140007L)
+#define STATUS_ACPI_INVALID_ARGTYPE ((NTSTATUS)0xC0140008L)
+#define STATUS_ACPI_INVALID_OBJTYPE ((NTSTATUS)0xC0140009L)
+#define STATUS_ACPI_INVALID_TARGETTYPE ((NTSTATUS)0xC014000AL)
+#define STATUS_ACPI_INCORRECT_ARGUMENT_COUNT ((NTSTATUS)0xC014000BL)
+#define STATUS_ACPI_ADDRESS_NOT_MAPPED ((NTSTATUS)0xC014000CL)
+#define STATUS_ACPI_INVALID_EVENTTYPE ((NTSTATUS)0xC014000DL)
+#define STATUS_ACPI_HANDLER_COLLISION ((NTSTATUS)0xC014000EL)
+#define STATUS_ACPI_INVALID_DATA ((NTSTATUS)0xC014000FL)
+#define STATUS_ACPI_INVALID_REGION ((NTSTATUS)0xC0140010L)
+#define STATUS_ACPI_INVALID_ACCESS_SIZE ((NTSTATUS)0xC0140011L)
+#define STATUS_ACPI_ACQUIRE_GLOBAL_LOCK ((NTSTATUS)0xC0140012L)
+#define STATUS_ACPI_ALREADY_INITIALIZED ((NTSTATUS)0xC0140013L)
+#define STATUS_ACPI_NOT_INITIALIZED ((NTSTATUS)0xC0140014L)
+#define STATUS_ACPI_INVALID_MUTEX_LEVEL ((NTSTATUS)0xC0140015L)
+#define STATUS_ACPI_MUTEX_NOT_OWNED ((NTSTATUS)0xC0140016L)
+#define STATUS_ACPI_MUTEX_NOT_OWNER ((NTSTATUS)0xC0140017L)
+#define STATUS_ACPI_RS_ACCESS ((NTSTATUS)0xC0140018L)
+#define STATUS_ACPI_INVALID_TABLE ((NTSTATUS)0xC0140019L)
+#define STATUS_ACPI_REG_HANDLER_FAILED ((NTSTATUS)0xC0140020L)
+#define STATUS_ACPI_POWER_REQUEST_FAILED ((NTSTATUS)0xC0140021L)
+#define STATUS_CTX_WINSTATION_NAME_INVALID ((NTSTATUS)0xC00A0001L)
+#define STATUS_CTX_INVALID_PD ((NTSTATUS)0xC00A0002L)
+#define STATUS_CTX_PD_NOT_FOUND ((NTSTATUS)0xC00A0003L)
+#define STATUS_CTX_CDM_CONNECT ((NTSTATUS)0x400A0004L)
+#define STATUS_CTX_CDM_DISCONNECT ((NTSTATUS)0x400A0005L)
+#define STATUS_CTX_CLOSE_PENDING ((NTSTATUS)0xC00A0006L)
+#define STATUS_CTX_NO_OUTBUF ((NTSTATUS)0xC00A0007L)
+#define STATUS_CTX_MODEM_INF_NOT_FOUND ((NTSTATUS)0xC00A0008L)
+#define STATUS_CTX_INVALID_MODEMNAME ((NTSTATUS)0xC00A0009L)
+#define STATUS_CTX_RESPONSE_ERROR ((NTSTATUS)0xC00A000AL)
+#define STATUS_CTX_MODEM_RESPONSE_TIMEOUT ((NTSTATUS)0xC00A000BL)
+#define STATUS_CTX_MODEM_RESPONSE_NO_CARRIER ((NTSTATUS)0xC00A000CL)
+#define STATUS_CTX_MODEM_RESPONSE_NO_DIALTONE ((NTSTATUS)0xC00A000DL)
+#define STATUS_CTX_MODEM_RESPONSE_BUSY ((NTSTATUS)0xC00A000EL)
+#define STATUS_CTX_MODEM_RESPONSE_VOICE ((NTSTATUS)0xC00A000FL)
+#define STATUS_CTX_TD_ERROR ((NTSTATUS)0xC00A0010L)
+#define STATUS_CTX_LICENSE_CLIENT_INVALID ((NTSTATUS)0xC00A0012L)
+#define STATUS_CTX_LICENSE_NOT_AVAILABLE ((NTSTATUS)0xC00A0013L)
+#define STATUS_CTX_LICENSE_EXPIRED ((NTSTATUS)0xC00A0014L)
+#define STATUS_CTX_WINSTATION_NOT_FOUND ((NTSTATUS)0xC00A0015L)
+#define STATUS_CTX_WINSTATION_NAME_COLLISION ((NTSTATUS)0xC00A0016L)
+#define STATUS_CTX_WINSTATION_BUSY ((NTSTATUS)0xC00A0017L)
+#define STATUS_CTX_BAD_VIDEO_MODE ((NTSTATUS)0xC00A0018L)
+#define STATUS_CTX_GRAPHICS_INVALID ((NTSTATUS)0xC00A0022L)
+#define STATUS_CTX_NOT_CONSOLE ((NTSTATUS)0xC00A0024L)
+#define STATUS_CTX_CLIENT_QUERY_TIMEOUT ((NTSTATUS)0xC00A0026L)
+#define STATUS_CTX_CONSOLE_DISCONNECT ((NTSTATUS)0xC00A0027L)
+#define STATUS_CTX_CONSOLE_CONNECT ((NTSTATUS)0xC00A0028L)
+#define STATUS_CTX_SHADOW_DENIED ((NTSTATUS)0xC00A002AL)
+#define STATUS_CTX_WINSTATION_ACCESS_DENIED ((NTSTATUS)0xC00A002BL)
+#define STATUS_CTX_INVALID_WD ((NTSTATUS)0xC00A002EL)
+#define STATUS_CTX_WD_NOT_FOUND ((NTSTATUS)0xC00A002FL)
+#define STATUS_CTX_SHADOW_INVALID ((NTSTATUS)0xC00A0030L)
+#define STATUS_CTX_SHADOW_DISABLED ((NTSTATUS)0xC00A0031L)
+#define STATUS_RDP_PROTOCOL_ERROR ((NTSTATUS)0xC00A0032L)
+#define STATUS_CTX_CLIENT_LICENSE_NOT_SET ((NTSTATUS)0xC00A0033L)
+#define STATUS_CTX_CLIENT_LICENSE_IN_USE ((NTSTATUS)0xC00A0034L)
+#define STATUS_CTX_SHADOW_ENDED_BY_MODE_CHANGE ((NTSTATUS)0xC00A0035L)
+#define STATUS_CTX_SHADOW_NOT_RUNNING ((NTSTATUS)0xC00A0036L)
+#define STATUS_PNP_BAD_MPS_TABLE ((NTSTATUS)0xC0040035L)
+#define STATUS_PNP_TRANSLATION_FAILED ((NTSTATUS)0xC0040036L)
+#define STATUS_PNP_IRQ_TRANSLATION_FAILED ((NTSTATUS)0xC0040037L)
+#define STATUS_SXS_SECTION_NOT_FOUND ((NTSTATUS)0xC0150001L)
+#define STATUS_SXS_CANT_GEN_ACTCTX ((NTSTATUS)0xC0150002L)
+#define STATUS_SXS_INVALID_ACTCTXDATA_FORMAT ((NTSTATUS)0xC0150003L)
+#define STATUS_SXS_ASSEMBLY_NOT_FOUND ((NTSTATUS)0xC0150004L)
+#define STATUS_SXS_MANIFEST_FORMAT_ERROR ((NTSTATUS)0xC0150005L)
+#define STATUS_SXS_MANIFEST_PARSE_ERROR ((NTSTATUS)0xC0150006L)
+#define STATUS_SXS_ACTIVATION_CONTEXT_DISABLED ((NTSTATUS)0xC0150007L)
+#define STATUS_SXS_KEY_NOT_FOUND ((NTSTATUS)0xC0150008L)
+#define STATUS_SXS_VERSION_CONFLICT ((NTSTATUS)0xC0150009L)
+#define STATUS_SXS_WRONG_SECTION_TYPE ((NTSTATUS)0xC015000AL)
+#define STATUS_SXS_THREAD_QUERIES_DISABLED ((NTSTATUS)0xC015000BL)
+#define STATUS_SXS_ASSEMBLY_MISSING ((NTSTATUS)0xC015000CL)
+#define STATUS_SXS_RELEASE_ACTIVATION_CONTEXT ((NTSTATUS)0x4015000DL)
+#define STATUS_SXS_PROCESS_DEFAULT_ALREADY_SET ((NTSTATUS)0xC015000EL)
+#define STATUS_SXS_EARLY_DEACTIVATION ((NTSTATUS)0xC015000FL)
+#define STATUS_SXS_INVALID_DEACTIVATION ((NTSTATUS)0xC0150010L)
+#define STATUS_SXS_MULTIPLE_DEACTIVATION ((NTSTATUS)0xC0150011L)
+#define STATUS_SXS_SYSTEM_DEFAULT_ACTIVATION_CONTEXT_EMPTY ((NTSTATUS)0xC0150012L)
+#define STATUS_SXS_PROCESS_TERMINATION_REQUESTED ((NTSTATUS)0xC0150013L)
+#define STATUS_CLUSTER_INVALID_NODE ((NTSTATUS)0xC0130001L)
+#define STATUS_CLUSTER_NODE_EXISTS ((NTSTATUS)0xC0130002L)
+#define STATUS_CLUSTER_JOIN_IN_PROGRESS ((NTSTATUS)0xC0130003L)
+#define STATUS_CLUSTER_NODE_NOT_FOUND ((NTSTATUS)0xC0130004L)
+#define STATUS_CLUSTER_LOCAL_NODE_NOT_FOUND ((NTSTATUS)0xC0130005L)
+#define STATUS_CLUSTER_NETWORK_EXISTS ((NTSTATUS)0xC0130006L)
+#define STATUS_CLUSTER_NETWORK_NOT_FOUND ((NTSTATUS)0xC0130007L)
+#define STATUS_CLUSTER_NETINTERFACE_EXISTS ((NTSTATUS)0xC0130008L)
+#define STATUS_CLUSTER_NETINTERFACE_NOT_FOUND ((NTSTATUS)0xC0130009L)
+#define STATUS_CLUSTER_INVALID_REQUEST ((NTSTATUS)0xC013000AL)
+#define STATUS_CLUSTER_INVALID_NETWORK_PROVIDER ((NTSTATUS)0xC013000BL)
+#define STATUS_CLUSTER_NODE_DOWN ((NTSTATUS)0xC013000CL)
+#define STATUS_CLUSTER_NODE_UNREACHABLE ((NTSTATUS)0xC013000DL)
+#define STATUS_CLUSTER_NODE_NOT_MEMBER ((NTSTATUS)0xC013000EL)
+#define STATUS_CLUSTER_JOIN_NOT_IN_PROGRESS ((NTSTATUS)0xC013000FL)
+#define STATUS_CLUSTER_INVALID_NETWORK ((NTSTATUS)0xC0130010L)
+#define STATUS_CLUSTER_NO_NET_ADAPTERS ((NTSTATUS)0xC0130011L)
+#define STATUS_CLUSTER_NODE_UP ((NTSTATUS)0xC0130012L)
+#define STATUS_CLUSTER_NODE_PAUSED ((NTSTATUS)0xC0130013L)
+#define STATUS_CLUSTER_NODE_NOT_PAUSED ((NTSTATUS)0xC0130014L)
+#define STATUS_CLUSTER_NO_SECURITY_CONTEXT ((NTSTATUS)0xC0130015L)
+#define STATUS_CLUSTER_NETWORK_NOT_INTERNAL ((NTSTATUS)0xC0130016L)
+#define STATUS_CLUSTER_POISONED ((NTSTATUS)0xC0130017L)
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
Index: Daodan/MinGW/include/ddk/parallel.h
===================================================================
--- Daodan/MinGW/include/ddk/parallel.h	(revision 1046)
+++ Daodan/MinGW/include/ddk/parallel.h	(revision 1046)
@@ -0,0 +1,277 @@
+/*
+ * parallel.h
+ *
+ * ParPort driver interface
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __PARALLEL_H
+#define __PARALLEL_H
+
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "ntddk.h"
+#include "ntddpar.h"
+
+#define DD_PARALLEL_PORT_BASE_NAME        "ParallelPort"
+#define DD_PARALLEL_PORT_BASE_NAME_U      L"ParallelPort"
+
+#define IOCTL_INTERNAL_DESELECT_DEVICE \
+  CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 24, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_INTERNAL_GET_MORE_PARALLEL_PORT_INFO \
+  CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 17, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_INTERNAL_GET_PARALLEL_PNP_INFO \
+  CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 21, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_INTERNAL_GET_PARALLEL_PORT_INFO \
+  CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 12, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_INTERNAL_INIT_1284_3_BUS \
+  CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 22, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_INTERNAL_PARALLEL_CLEAR_CHIP_MODE \
+  CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 20, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_INTERNAL_PARALLEL_CONNECT_INTERRUPT \
+  CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 13, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_INTERNAL_PARALLEL_DISCONNECT_INTERRUPT \
+  CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 14, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_INTERNAL_PARALLEL_PORT_ALLOCATE \
+  CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 11, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_INTERNAL_PARALLEL_PORT_FREE \
+  CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 40, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_INTERNAL_PARALLEL_SET_CHIP_MODE \
+  CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 19, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_INTERNAL_RELEASE_PARALLEL_PORT_INFO \
+  CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 15, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_INTERNAL_SELECT_DEVICE \
+  CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 23, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+
+typedef struct _PARALLEL_1284_COMMAND {
+  UCHAR  ID;
+  UCHAR  Port;
+  ULONG  CommandFlags;
+} PARALLEL_1284_COMMAND, *PPARALLEL_1284_COMMAND;
+
+/* PARALLEL_1284_COMMAND.CommandFlags */
+#define PAR_END_OF_CHAIN_DEVICE           0x00000001
+#define PAR_HAVE_PORT_KEEP_PORT           0x00000002
+
+typedef struct _MORE_PARALLEL_PORT_INFORMATION {
+  INTERFACE_TYPE  InterfaceType;
+  ULONG  BusNumber;
+  ULONG  InterruptLevel;
+  ULONG  InterruptVector;
+  KAFFINITY  InterruptAffinity;
+  KINTERRUPT_MODE  InterruptMode;
+} MORE_PARALLEL_PORT_INFORMATION, *PMORE_PARALLEL_PORT_INFORMATION;
+
+typedef NTSTATUS DDKAPI
+(*PPARALLEL_SET_CHIP_MODE)(
+  /*IN*/  PVOID  SetChipContext,
+  /*IN*/  UCHAR  ChipMode);
+
+typedef NTSTATUS DDKAPI
+(*PPARALLEL_CLEAR_CHIP_MODE)(
+  /*IN*/  PVOID  ClearChipContext,
+  /*IN*/  UCHAR  ChipMode);
+
+typedef NTSTATUS DDKAPI
+(*PPARCHIP_CLEAR_CHIP_MODE)(
+  /*IN*/  PVOID  ClearChipContext,
+  /*IN*/  UCHAR  ChipMode);
+
+typedef NTSTATUS DDKAPI
+(*PPARALLEL_TRY_SELECT_ROUTINE)(
+  /*IN*/  PVOID  TrySelectContext,
+  /*IN*/  PVOID  TrySelectCommand);
+
+typedef NTSTATUS DDKAPI
+(*PPARALLEL_DESELECT_ROUTINE)(
+  /*IN*/ PVOID  DeselectContext,
+  /*IN*/ PVOID  DeselectCommand);
+
+/* PARALLEL_PNP_INFORMATION.HardwareCapabilities */
+#define PPT_NO_HARDWARE_PRESENT           0x00000000
+#define PPT_ECP_PRESENT                   0x00000001
+#define PPT_EPP_PRESENT                   0x00000002
+#define PPT_EPP_32_PRESENT                0x00000004
+#define PPT_BYTE_PRESENT                  0x00000008
+#define PPT_BIDI_PRESENT                  0x00000008
+#define PPT_1284_3_PRESENT                0x00000010
+
+typedef struct _PARALLEL_PNP_INFORMATION {
+  PHYSICAL_ADDRESS  OriginalEcpController;
+  PUCHAR  EcpController;
+  ULONG  SpanOfEcpController;
+  ULONG  PortNumber;
+  ULONG  HardwareCapabilities;
+  PPARALLEL_SET_CHIP_MODE  TrySetChipMode;
+  PPARALLEL_CLEAR_CHIP_MODE  ClearChipMode;
+  ULONG  FifoDepth;
+  ULONG  FifoWidth;
+  PHYSICAL_ADDRESS  EppControllerPhysicalAddress;
+  ULONG  SpanOfEppController;
+  ULONG  Ieee1284_3DeviceCount;
+  PPARALLEL_TRY_SELECT_ROUTINE  TrySelectDevice;
+  PPARALLEL_DESELECT_ROUTINE  DeselectDevice;
+  PVOID  Context;
+  ULONG  CurrentMode;
+  PWSTR  PortName;
+} PARALLEL_PNP_INFORMATION, *PPARALLEL_PNP_INFORMATION;
+
+typedef BOOLEAN DDKAPI
+(*PPARALLEL_TRY_ALLOCATE_ROUTINE)(
+  /*IN*/ PVOID  TryAllocateContext);
+
+typedef VOID DDKAPI
+(*PPARALLEL_FREE_ROUTINE)(
+  /*IN*/ PVOID  FreeContext);
+
+typedef ULONG DDKAPI
+(*PPARALLEL_QUERY_WAITERS_ROUTINE)(
+  /*IN*/  PVOID  QueryAllocsContext);
+
+typedef struct _PARALLEL_PORT_INFORMATION {
+  PHYSICAL_ADDRESS  OriginalController;
+  PUCHAR  Controller;
+  ULONG  SpanOfController;
+  PPARALLEL_TRY_ALLOCATE_ROUTINE  TryAllocatePort;
+  PPARALLEL_FREE_ROUTINE  FreePort;
+  PPARALLEL_QUERY_WAITERS_ROUTINE  QueryNumWaiters;
+  PVOID  Context;
+} PARALLEL_PORT_INFORMATION, *PPARALLEL_PORT_INFORMATION;
+
+/* PARALLEL_CHIP_MODE.ModeFlags */
+#define INITIAL_MODE                      0x00
+#define PARCHIP_ECR_ARBITRATOR            0x01
+
+typedef struct _PARALLEL_CHIP_MODE {
+  UCHAR  ModeFlags;
+  BOOLEAN  success;
+} PARALLEL_CHIP_MODE, *PPARALLEL_CHIP_MODE;
+
+typedef VOID DDKAPI
+(*PPARALLEL_DEFERRED_ROUTINE)(
+  /*IN*/  PVOID  DeferredContext);
+
+typedef struct _PARALLEL_INTERRUPT_SERVICE_ROUTINE {
+  PKSERVICE_ROUTINE  InterruptServiceRoutine;
+  PVOID  InterruptServiceContext;
+  PPARALLEL_DEFERRED_ROUTINE  DeferredPortCheckRoutine;
+  PVOID  DeferredPortCheckContext;
+} PARALLEL_INTERRUPT_SERVICE_ROUTINE, *PPARALLEL_INTERRUPT_SERVICE_ROUTINE;
+
+
+#define IOCTL_INTERNAL_DISCONNECT_IDLE \
+  CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 32, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_INTERNAL_LOCK_PORT \
+  CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 37, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_INTERNAL_LOCK_PORT_NO_SELECT \
+  CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 52, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_INTERNAL_PARCLASS_CONNECT \
+  CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 30, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_INTERNAL_PARCLASS_DISCONNECT \
+  CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 31, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_INTERNAL_UNLOCK_PORT \
+  CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 38, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_INTERNAL_UNLOCK_PORT_NO_DESELECT \
+  CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 53, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+typedef USHORT DDKAPI
+(*PDETERMINE_IEEE_MODES)(
+  /*IN*/ PVOID  Context);
+
+typedef enum _PARALLEL_SAFETY {
+	SAFE_MODE,
+	UNSAFE_MODE
+} PARALLEL_SAFETY;
+
+typedef NTSTATUS DDKAPI
+(*PNEGOTIATE_IEEE_MODE)(
+  /*IN*/ PVOID  Context,
+  /*IN*/ USHORT  ModeMaskFwd,
+  /*IN*/ USHORT  ModeMaskRev,
+  /*IN*/ PARALLEL_SAFETY  ModeSafety,
+  /*IN*/ BOOLEAN  IsForward);
+
+typedef NTSTATUS DDKAPI
+(*PTERMINATE_IEEE_MODE)(
+  /*IN*/  PVOID  Context);
+
+typedef NTSTATUS DDKAPI
+(*PPARALLEL_IEEE_FWD_TO_REV)(
+  /*IN*/ PVOID  Context);
+
+typedef NTSTATUS DDKAPI
+(*PPARALLEL_IEEE_REV_TO_FWD)(
+  /*IN*/ PVOID  Context);
+
+typedef NTSTATUS DDKAPI
+(*PPARALLEL_READ)(
+  /*IN*/  PVOID  Context,
+  /*OUT*/ PVOID  Buffer,
+  /*IN*/  ULONG  NumBytesToRead,
+  /*OUT*/ PULONG  NumBytesRead,
+  /*IN*/  UCHAR  Channel);
+
+typedef NTSTATUS DDKAPI
+(*PPARALLEL_WRITE)(
+  /*IN*/  PVOID  Context,
+  /*OUT*/ PVOID  Buffer,
+  /*IN*/  ULONG  NumBytesToWrite,
+  /*OUT*/ PULONG  NumBytesWritten,
+  /*IN*/  UCHAR   Channel);
+
+typedef NTSTATUS DDKAPI
+(*PPARALLEL_TRYSELECT_DEVICE)(
+  /*IN*/ PVOID  Context,
+  /*IN*/ PARALLEL_1284_COMMAND  Command);
+
+typedef NTSTATUS DDKAPI
+(*PPARALLEL_DESELECT_DEVICE)(
+  /*IN*/ PVOID  Context,
+  /*IN*/ PARALLEL_1284_COMMAND  Command);
+
+typedef struct _PARCLASS_INFORMATION {
+  PUCHAR  Controller;
+  PUCHAR  EcrController;
+  ULONG  SpanOfController;
+  PDETERMINE_IEEE_MODES  DetermineIeeeModes;
+  PNEGOTIATE_IEEE_MODE  NegotiateIeeeMode;
+  PTERMINATE_IEEE_MODE  TerminateIeeeMode;
+  PPARALLEL_IEEE_FWD_TO_REV  IeeeFwdToRevMode;
+  PPARALLEL_IEEE_REV_TO_FWD  IeeeRevToFwdMode;
+  PPARALLEL_READ  ParallelRead;
+  PPARALLEL_WRITE  ParallelWrite;
+  PVOID  ParclassContext;
+  ULONG  HardwareCapabilities;
+  ULONG  FifoDepth;
+  ULONG  FifoWidth;
+  PPARALLEL_TRYSELECT_DEVICE  ParallelTryselect;
+  PPARALLEL_DESELECT_DEVICE  ParallelDeSelect;
+} PARCLASS_INFORMATION, *PPARCLASS_INFORMATION;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __PARALLEL_H */
Index: Daodan/MinGW/include/ddk/pfhook.h
===================================================================
--- Daodan/MinGW/include/ddk/pfhook.h	(revision 1046)
+++ Daodan/MinGW/include/ddk/pfhook.h	(revision 1046)
@@ -0,0 +1,76 @@
+/*
+ * pfhook.h
+ *
+ * Packet filter API
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __PFHOOK_H
+#define __PFHOOK_H
+
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "ntddk.h"
+
+#define DD_IPFLTRDRVR_DEVICE_NAME         L"\\Device\\IPFILTERDRIVER"
+
+#define INVALID_PF_IF_INDEX               0xffffffff
+#define ZERO_PF_IP_ADDR                   0
+
+typedef ULONG IPAddr;
+
+typedef enum _PF_FORWARD_ACTION {
+	PF_FORWARD = 0,
+	PF_DROP = 1,
+	PF_PASS = 2,
+	PF_ICMP_ON_DROP = 3
+} PF_FORWARD_ACTION;
+
+typedef PF_FORWARD_ACTION STDCALL
+(*PacketFilterExtensionPtr)(
+  /*IN*/ unsigned char  *PacketHeader,
+  /*IN*/ unsigned char  *Packet,
+  /*IN*/ unsigned int  PacketLength,
+  /*IN*/ unsigned int  RecvInterfaceIndex,
+  /*IN*/ unsigned int  SendInterfaceIndex,
+  /*IN*/ IPAddr  RecvLinkNextHop,
+  /*IN*/ IPAddr  SendLinkNextHop);
+
+typedef struct _PF_SET_EXTENSION_HOOK_INFO {
+  PacketFilterExtensionPtr  ExtensionPointer;
+} PF_SET_EXTENSION_HOOK_INFO, *PPF_SET_EXTENSION_HOOK_INFO;
+
+#define FSCTL_IPFLTRDRVR_BASE             FILE_DEVICE_NETWORK
+
+#define _IPFLTRDRVR_CTL_CODE(function, method, access) \
+  CTL_CODE(FSCTL_IPFLTRDRVR_BASE, function, method, access)
+
+#define IOCTL_PF_SET_EXTENSION_POINTER \
+  _IPFLTRDRVR_CTL_CODE(22, METHOD_BUFFERED, FILE_WRITE_ACCESS)
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __PFHOOK_H */
Index: Daodan/MinGW/include/ddk/poclass.h
===================================================================
--- Daodan/MinGW/include/ddk/poclass.h	(revision 1046)
+++ Daodan/MinGW/include/ddk/poclass.h	(revision 1046)
@@ -0,0 +1,118 @@
+/*
+ * poclass.h
+ *
+ * Power policy driver interface
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __POCLASS_H
+#define __POCLASS_H
+
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "ntddk.h"
+#include "batclass.h"
+
+DEFINE_GUID(GUID_CLASS_INPUT,
+  0x4D1E55B2L, 0xF16F, 0x11CF, 0x88, 0xCB, 0x00, 0x11, 0x11, 0x00, 0x00, 0x30);
+
+DEFINE_GUID(GUID_DEVICE_LID,
+  0x4AFA3D52L, 0x74A7, 0x11d0, 0xbe, 0x5e, 0x00, 0xA0, 0xC9, 0x06, 0x28, 0x57);
+
+DEFINE_GUID(GUID_DEVICE_MEMORY,
+  0x3fd0f03dL, 0x92e0, 0x45fb, 0xb7, 0x5c, 0x5e, 0xd8, 0xff, 0xb0, 0x10, 0x21);
+
+DEFINE_GUID(GUID_DEVICE_MESSAGE_INDICATOR,
+  0XCD48A365L, 0xfa94, 0x4ce2, 0xa2, 0x32, 0xa1, 0xb7, 0x64, 0xe5, 0xd8, 0xb4);
+
+DEFINE_GUID(GUID_DEVICE_PROCESSOR,
+  0x97fadb10L, 0x4e33, 0x40ae, 0x35, 0x9c, 0x8b, 0xef, 0x02, 0x9d, 0xbd, 0xd0);
+
+DEFINE_GUID(GUID_DEVICE_SYS_BUTTON,
+  0x4AFA3D53L, 0x74A7, 0x11d0, 0xbe, 0x5e, 0x00, 0xA0, 0xC9, 0x06, 0x28, 0x57);
+
+DEFINE_GUID(GUID_DEVICE_THERMAL_ZONE,
+  0x4AFA3D51L, 0x74A7, 0x11d0, 0xbe, 0x5e, 0x00, 0xA0, 0xC9, 0x06, 0x28, 0x57);
+
+
+#define IOCTL_GET_PROCESSOR_OBJ_INFO \
+  CTL_CODE(FILE_DEVICE_BATTERY, 0x60, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+#define IOCTL_GET_SYS_BUTTON_CAPS \
+  CTL_CODE(FILE_DEVICE_BATTERY, 0x50, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+#define IOCTL_GET_SYS_BUTTON_EVENT \
+  CTL_CODE(FILE_DEVICE_BATTERY, 0x51, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+#define IOCTL_SET_SYS_MESSAGE_INDICATOR \
+  CTL_CODE(FILE_DEVICE_BATTERY, 0x70, METHOD_BUFFERED, FILE_WRITE_ACCESS)
+
+#define IOCTL_NOTIFY_SWITCH_EVENT \
+  CTL_CODE(FILE_DEVICE_BATTERY, 0x40, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+#define IOCTL_THERMAL_QUERY_INFORMATION \
+  CTL_CODE(FILE_DEVICE_BATTERY, 0x20, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+#define IOCTL_THERMAL_SET_COOLING_POLICY \
+  CTL_CODE(FILE_DEVICE_BATTERY, 0x21, METHOD_BUFFERED, FILE_WRITE_ACCESS)
+
+#define IOCTL_QUERY_LID \
+  CTL_CODE(FILE_DEVICE_BATTERY, 0x30, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+#define IOCTL_RUN_ACTIVE_COOLING_METHOD \
+  CTL_CODE(FILE_DEVICE_BATTERY, 0x22, METHOD_BUFFERED, FILE_WRITE_ACCESS)
+
+#define SYS_BUTTON_POWER                  0x00000001
+#define SYS_BUTTON_SLEEP                  0x00000002
+#define SYS_BUTTON_LID                    0x00000004
+#define SYS_BUTTON_WAKE                   0x80000000
+
+#define MAX_ACTIVE_COOLING_LEVELS         10
+#define ACTIVE_COOLING                    0
+#define PASSIVE_COOLING                   1
+
+typedef struct _THERMAL_INFORMATION {
+  ULONG  ThermalStamp;
+  ULONG  ThermalConstant1;
+  ULONG  ThermalConstant2;
+  KAFFINITY  Processors;
+  ULONG  SamplingPeriod;
+  ULONG  CurrentTemperature;
+  ULONG  PassiveTripPoint;
+  ULONG  CriticalTripPoint;
+  UCHAR  ActiveTripPointCount;
+  ULONG  ActiveTripPoint[MAX_ACTIVE_COOLING_LEVELS];
+} THERMAL_INFORMATION, *PTHERMAL_INFORMATION;
+
+typedef struct _PROCESSOR_OBJECT_INFO {
+	ULONG  PhysicalID;
+	ULONG  PBlkAddress;
+	UCHAR  PBlkLength;
+} PROCESSOR_OBJECT_INFO, *PPROCESSOR_OBJECT_INFO;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __POCLASS_H */
Index: Daodan/MinGW/include/ddk/scsi.h
===================================================================
--- Daodan/MinGW/include/ddk/scsi.h	(revision 1046)
+++ Daodan/MinGW/include/ddk/scsi.h	(revision 1046)
@@ -0,0 +1,1701 @@
+/*
+ * scsi.h
+ *
+ * SCSI port and class interface.
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __SCSI_H
+#define __SCSI_H
+
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "ntddk.h"
+
+typedef union _CDB {
+  struct _CDB6GENERIC {
+    UCHAR  OperationCode;
+    UCHAR  Immediate : 1;
+    UCHAR  CommandUniqueBits : 4;
+    UCHAR  LogicalUnitNumber : 3;
+    UCHAR  CommandUniqueBytes[3];
+    UCHAR  Link : 1;
+    UCHAR  Flag : 1;
+    UCHAR  Reserved : 4;
+    UCHAR  VendorUnique : 2;
+  } CDB6GENERIC, *PCDB6GENERIC;
+
+  struct _CDB6READWRITE {
+    UCHAR  OperationCode;
+    UCHAR  LogicalBlockMsb1 : 5;
+    UCHAR  LogicalUnitNumber : 3;
+    UCHAR  LogicalBlockMsb0;
+    UCHAR  LogicalBlockLsb;
+    UCHAR  TransferBlocks;
+    UCHAR  Control;
+  } CDB6READWRITE, *PCDB6READWRITE;
+
+  struct _CDB6INQUIRY {
+    UCHAR  OperationCode;
+    UCHAR  Reserved1 : 5;
+    UCHAR  LogicalUnitNumber : 3;
+    UCHAR  PageCode;
+    UCHAR  IReserved;
+    UCHAR  AllocationLength;
+    UCHAR  Control;
+  } CDB6INQUIRY, *PCDB6INQUIRY;
+
+  struct _CDB6INQUIRY3 {
+    UCHAR  OperationCode;
+    UCHAR  EnableVitalProductData : 1;
+    UCHAR  CommandSupportData : 1;
+    UCHAR  Reserved1 : 6;
+    UCHAR  PageCode;
+    UCHAR  Reserved2;
+    UCHAR  AllocationLength;
+    UCHAR  Control;
+  } CDB6INQUIRY3, *PCDB6INQUIRY3;
+
+  struct _CDB6VERIFY {
+    UCHAR  OperationCode;
+    UCHAR  Fixed : 1;
+    UCHAR  ByteCompare : 1;
+    UCHAR  Immediate : 1;
+    UCHAR  Reserved : 2;
+    UCHAR  LogicalUnitNumber : 3;
+    UCHAR  VerificationLength[3];
+    UCHAR  Control;
+  } CDB6VERIFY, *PCDB6VERIFY;
+
+  struct _CDB6FORMAT {
+    UCHAR  OperationCode;
+    UCHAR  FormatControl : 5;
+    UCHAR  LogicalUnitNumber : 3;
+    UCHAR  FReserved1;
+    UCHAR  InterleaveMsb;
+    UCHAR  InterleaveLsb;
+    UCHAR  FReserved2;
+  } CDB6FORMAT, *PCDB6FORMAT;
+
+  struct _CDB10 {
+    UCHAR  OperationCode;
+    UCHAR  RelativeAddress : 1;
+    UCHAR  Reserved1 : 2;
+    UCHAR  ForceUnitAccess : 1;
+    UCHAR  DisablePageOut : 1;
+    UCHAR  LogicalUnitNumber : 3;
+    UCHAR  LogicalBlockByte0;
+    UCHAR  LogicalBlockByte1;
+    UCHAR  LogicalBlockByte2;
+    UCHAR  LogicalBlockByte3;
+    UCHAR  Reserved2;
+    UCHAR  TransferBlocksMsb;
+    UCHAR  TransferBlocksLsb;
+    UCHAR  Control;
+  } CDB10, *PCDB10;
+
+  struct _CDB12 {
+    UCHAR  OperationCode;
+    UCHAR  RelativeAddress : 1;
+    UCHAR  Reserved1 : 2;
+    UCHAR  ForceUnitAccess : 1;
+    UCHAR  DisablePageOut : 1;
+    UCHAR  LogicalUnitNumber : 3;
+    UCHAR  LogicalBlock[4];
+    UCHAR  TransferLength[4];
+    UCHAR  Reserved2;
+    UCHAR  Control;
+  } CDB12, *PCDB12;
+
+  struct _PAUSE_RESUME {
+    UCHAR  OperationCode;
+    UCHAR  Reserved1 : 5;
+    UCHAR  LogicalUnitNumber : 3;
+    UCHAR  Reserved2[6];
+    UCHAR  Action;
+    UCHAR  Control;
+  } PAUSE_RESUME, *PPAUSE_RESUME;
+
+  struct _READ_TOC {
+    UCHAR  OperationCode;
+    UCHAR  Reserved0 : 1;
+    UCHAR  Msf : 1;
+    UCHAR  Reserved1 : 3;
+    UCHAR  LogicalUnitNumber : 3;
+    UCHAR  Format2 : 4;
+    UCHAR  Reserved2 : 4;
+    UCHAR  Reserved3[3];
+    UCHAR  StartingTrack;
+    UCHAR  AllocationLength[2];
+    UCHAR  Control : 6;
+    UCHAR  Format : 2;
+  } READ_TOC, *PREAD_TOC;
+
+  struct _READ_DISK_INFORMATION {
+    UCHAR  OperationCode;
+    UCHAR  Reserved1 : 5;
+    UCHAR  Lun : 3;
+    UCHAR  Reserved2[5];
+    UCHAR  AllocationLength[2];
+    UCHAR  Control;
+  } READ_DISK_INFORMATION, *PREAD_DISK_INFORMATION;
+
+  struct _READ_TRACK_INFORMATION {
+    UCHAR  OperationCode;
+    UCHAR  Track : 1;
+    UCHAR  Reserved1 : 3;
+    UCHAR  Reserved2 : 1;
+    UCHAR  Lun : 3;
+    UCHAR  BlockAddress[4];
+    UCHAR  Reserved3;
+    UCHAR  AllocationLength[2];
+    UCHAR  Control;
+  } READ_TRACK_INFORMATION, *PREAD_TRACK_INFORMATION;
+
+  struct _RESERVE_TRACK_RZONE {
+    UCHAR  OperationCode;
+    UCHAR  Reserved1[4];
+    UCHAR  ReservationSize[4];
+    UCHAR  Control;
+  } RESERVE_TRACK_RZONE, *PRESERVE_TRACK_RZONE;
+
+  struct _SEND_OPC_INFORMATION {
+    UCHAR  OperationCode;
+    UCHAR  DoOpc    : 1;
+    UCHAR  Reserved : 7;
+    UCHAR  Reserved1[5];
+    UCHAR  ParameterListLength[2];
+    UCHAR  Reserved2;
+  } SEND_OPC_INFORMATION, *PSEND_OPC_INFORMATION;
+
+  struct _CLOSE_TRACK {
+    UCHAR  OperationCode;
+    UCHAR  Immediate : 1;
+    UCHAR  Reserved1 : 7;
+    UCHAR  Track     : 1;
+    UCHAR  Session   : 1;
+    UCHAR  Reserved2 : 6;
+    UCHAR  Reserved3;
+    UCHAR  TrackNumber[2];
+    UCHAR  Reserved4[3];
+    UCHAR  Control;
+  } CLOSE_TRACK, *PCLOSE_TRACK;
+
+  struct _SEND_CUE_SHEET {
+    UCHAR  OperationCode;
+    UCHAR  Reserved[5];
+    UCHAR  CueSheetSize[3];
+    UCHAR  Control;
+  } SEND_CUE_SHEET, *PSEND_CUE_SHEET;
+
+  struct _READ_HEADER {
+    UCHAR  OperationCode;
+    UCHAR  Reserved1 : 1;
+    UCHAR  Msf : 1;
+    UCHAR  Reserved2 : 3;
+    UCHAR  Lun : 3;
+    UCHAR  LogicalBlockAddress[4];
+    UCHAR  Reserved3;
+    UCHAR  AllocationLength[2];
+    UCHAR  Control;
+  } READ_HEADER, *PREAD_HEADER;
+
+  struct _PLAY_AUDIO {
+    UCHAR  OperationCode;
+    UCHAR  Reserved1 : 5;
+    UCHAR  LogicalUnitNumber : 3;
+    UCHAR  StartingBlockAddress[4];
+    UCHAR  Reserved2;
+    UCHAR  PlayLength[2];
+    UCHAR  Control;
+  } PLAY_AUDIO, *PPLAY_AUDIO;
+
+  struct _PLAY_AUDIO_MSF {
+    UCHAR  OperationCode;
+    UCHAR  Reserved1 : 5;
+    UCHAR  LogicalUnitNumber : 3;
+    UCHAR  Reserved2;
+    UCHAR  StartingM;
+    UCHAR  StartingS;
+    UCHAR  StartingF;
+    UCHAR  EndingM;
+    UCHAR  EndingS;
+    UCHAR  EndingF;
+    UCHAR  Control;
+  } PLAY_AUDIO_MSF, *PPLAY_AUDIO_MSF;
+
+/* FIXME: Should the union be anonymous in C++ too?  If so,
+   can't define named types _LBA and _MSF within anonymous union
+   for C++. */
+  struct _PLAY_CD {
+    UCHAR  OperationCode;
+    UCHAR  Reserved1 : 1;
+    UCHAR  CMSF : 1;
+    UCHAR  ExpectedSectorType : 3;
+    UCHAR  Lun : 3;
+#ifndef __cplusplus
+  _ANONYMOUS_UNION
+#endif
+  union {
+      struct _LBA {
+            UCHAR  StartingBlockAddress[4];
+            UCHAR  PlayLength[4];
+      } LBA;
+
+      struct _MSF {
+            UCHAR  Reserved1;
+            UCHAR  StartingM;
+            UCHAR  StartingS;
+            UCHAR  StartingF;
+            UCHAR  EndingM;
+            UCHAR  EndingS;
+            UCHAR  EndingF;
+            UCHAR  Reserved2;
+      } MSF;
+  #ifndef __cplusplus
+  }DUMMYUNIONNAME;
+  #else
+  }u;
+  #endif
+
+    UCHAR  Audio : 1;
+    UCHAR  Composite : 1;
+    UCHAR  Port1 : 1;
+    UCHAR  Port2 : 1;
+    UCHAR  Reserved2 : 3;
+    UCHAR  Speed : 1;
+    UCHAR  Control;
+  } PLAY_CD, *PPLAY_CD;
+
+  struct _SCAN_CD {
+    UCHAR  OperationCode;
+    UCHAR  RelativeAddress : 1;
+    UCHAR  Reserved1 : 3;
+    UCHAR  Direct : 1;
+    UCHAR  Lun : 3;
+    UCHAR  StartingAddress[4];
+    UCHAR  Reserved2[3];
+    UCHAR  Reserved3 : 6;
+    UCHAR  Type : 2;
+    UCHAR  Reserved4;
+    UCHAR  Control;
+  } SCAN_CD, *PSCAN_CD;
+
+  struct _STOP_PLAY_SCAN {
+    UCHAR  OperationCode;
+    UCHAR  Reserved1 : 5;
+    UCHAR  Lun : 3;
+    UCHAR  Reserved2[7];
+    UCHAR  Control;
+  } STOP_PLAY_SCAN, *PSTOP_PLAY_SCAN;
+
+  struct _SUBCHANNEL {
+    UCHAR  OperationCode;
+    UCHAR  Reserved0 : 1;
+    UCHAR  Msf : 1;
+    UCHAR  Reserved1 : 3;
+    UCHAR  LogicalUnitNumber : 3;
+    UCHAR  Reserved2 : 6;
+    UCHAR  SubQ : 1;
+    UCHAR  Reserved3 : 1;
+    UCHAR  Format;
+    UCHAR  Reserved4[2];
+    UCHAR  TrackNumber;
+    UCHAR  AllocationLength[2];
+    UCHAR  Control;
+  } SUBCHANNEL, *PSUBCHANNEL;
+
+  struct _READ_CD {
+    UCHAR  OperationCode;
+    UCHAR  RelativeAddress : 1;
+    UCHAR  Reserved0 : 1;
+    UCHAR  ExpectedSectorType : 3;
+    UCHAR  Lun : 3;
+    UCHAR  StartingLBA[4];
+    UCHAR  TransferBlocks[3];
+    UCHAR  Reserved2 : 1;
+    UCHAR  ErrorFlags : 2;
+    UCHAR  IncludeEDC : 1;
+    UCHAR  IncludeUserData : 1;
+    UCHAR  HeaderCode : 2;
+    UCHAR  IncludeSyncData : 1;
+    UCHAR  SubChannelSelection : 3;
+    UCHAR  Reserved3 : 5;
+    UCHAR  Control;
+  } READ_CD, *PREAD_CD;
+
+  struct _READ_CD_MSF {
+    UCHAR  OperationCode;
+    UCHAR  RelativeAddress : 1;
+    UCHAR  Reserved1 : 1;
+    UCHAR  ExpectedSectorType : 3;
+    UCHAR  Lun : 3;
+    UCHAR  Reserved2;
+    UCHAR  StartingM;
+    UCHAR  StartingS;
+    UCHAR  StartingF;
+    UCHAR  EndingM;
+    UCHAR  EndingS;
+    UCHAR  EndingF;
+    UCHAR  Reserved3;
+    UCHAR  Reserved4 : 1;
+    UCHAR  ErrorFlags : 2;
+    UCHAR  IncludeEDC : 1;
+    UCHAR  IncludeUserData : 1;
+    UCHAR  HeaderCode : 2;
+    UCHAR  IncludeSyncData : 1;
+    UCHAR  SubChannelSelection : 3;
+    UCHAR  Reserved5 : 5;
+    UCHAR  Control;
+  } READ_CD_MSF, *PREAD_CD_MSF;
+
+  struct _PLXTR_READ_CDDA {
+    UCHAR  OperationCode;
+    UCHAR  Reserved0 : 5;
+    UCHAR  LogicalUnitNumber : 3;
+    UCHAR  LogicalBlockByte0;
+    UCHAR  LogicalBlockByte1;
+    UCHAR  LogicalBlockByte2;
+    UCHAR  LogicalBlockByte3;
+    UCHAR  TransferBlockByte0;
+    UCHAR  TransferBlockByte1;
+    UCHAR  TransferBlockByte2;
+    UCHAR  TransferBlockByte3;
+    UCHAR  SubCode;
+    UCHAR  Control;
+  } PLXTR_READ_CDDA, *PPLXTR_READ_CDDA;
+
+  struct _NEC_READ_CDDA {
+    UCHAR  OperationCode;
+    UCHAR  Reserved0;
+    UCHAR  LogicalBlockByte0;
+    UCHAR  LogicalBlockByte1;
+    UCHAR  LogicalBlockByte2;
+    UCHAR  LogicalBlockByte3;
+    UCHAR  Reserved1;
+    UCHAR  TransferBlockByte0;
+    UCHAR  TransferBlockByte1;
+    UCHAR  Control;
+  } NEC_READ_CDDA, *PNEC_READ_CDDA;
+
+  struct _MODE_SENSE {
+    UCHAR  OperationCode;
+    UCHAR  Reserved1 : 3;
+    UCHAR  Dbd : 1;
+    UCHAR  Reserved2 : 1;
+    UCHAR  LogicalUnitNumber : 3;
+    UCHAR  PageCode : 6;
+    UCHAR  Pc : 2;
+    UCHAR  Reserved3;
+    UCHAR  AllocationLength;
+    UCHAR  Control;
+  } MODE_SENSE, *PMODE_SENSE;
+
+  struct _MODE_SENSE10 {
+    UCHAR  OperationCode;
+    UCHAR  Reserved1 : 3;
+    UCHAR  Dbd : 1;
+    UCHAR  Reserved2 : 1;
+    UCHAR  LogicalUnitNumber : 3;
+    UCHAR  PageCode : 6;
+    UCHAR  Pc : 2;
+    UCHAR  Reserved3[4];
+    UCHAR  AllocationLength[2];
+    UCHAR  Control;
+  } MODE_SENSE10, *PMODE_SENSE10;
+
+  struct _MODE_SELECT {
+    UCHAR  OperationCode;
+    UCHAR  SPBit : 1;
+    UCHAR  Reserved1 : 3;
+    UCHAR  PFBit : 1;
+    UCHAR  LogicalUnitNumber : 3;
+    UCHAR  Reserved2[2];
+    UCHAR  ParameterListLength;
+    UCHAR  Control;
+  } MODE_SELECT, *PMODE_SELECT;
+
+  struct _MODE_SELECT10 {
+    UCHAR  OperationCode;
+    UCHAR  SPBit : 1;
+    UCHAR  Reserved1 : 3;
+    UCHAR  PFBit : 1;
+    UCHAR  LogicalUnitNumber : 3;
+    UCHAR  Reserved2[5];
+    UCHAR  ParameterListLength[2];
+    UCHAR  Control;
+  } MODE_SELECT10, *PMODE_SELECT10;
+
+  struct _LOCATE {
+    UCHAR  OperationCode;
+    UCHAR  Immediate : 1;
+    UCHAR  CPBit : 1;
+    UCHAR  BTBit : 1;
+    UCHAR  Reserved1 : 2;
+    UCHAR  LogicalUnitNumber : 3;
+    UCHAR  Reserved3;
+    UCHAR  LogicalBlockAddress[4];
+    UCHAR  Reserved4;
+    UCHAR  Partition;
+    UCHAR  Control;
+  } LOCATE, *PLOCATE;
+
+  struct _LOGSENSE {
+    UCHAR  OperationCode;
+    UCHAR  SPBit : 1;
+    UCHAR  PPCBit : 1;
+    UCHAR  Reserved1 : 3;
+    UCHAR  LogicalUnitNumber : 3;
+    UCHAR  PageCode : 6;
+    UCHAR  PCBit : 2;
+    UCHAR  Reserved2;
+    UCHAR  Reserved3;
+    UCHAR  ParameterPointer[2];
+    UCHAR  AllocationLength[2];
+    UCHAR  Control;
+  } LOGSENSE, *PLOGSENSE;
+
+  struct _LOGSELECT {
+    UCHAR  OperationCode;
+    UCHAR  SPBit : 1;
+    UCHAR  PCRBit : 1;
+    UCHAR  Reserved1 : 3;
+    UCHAR  LogicalUnitNumber : 3;
+    UCHAR  Reserved : 6;
+    UCHAR  PCBit : 2;
+    UCHAR  Reserved2[4];
+    UCHAR  ParameterListLength[2];
+    UCHAR  Control;
+  } LOGSELECT, *PLOGSELECT;
+
+  struct _PRINT {
+    UCHAR  OperationCode;
+    UCHAR  Reserved : 5;
+    UCHAR  LogicalUnitNumber : 3;
+    UCHAR  TransferLength[3];
+    UCHAR  Control;
+  } PRINT, *PPRINT;
+
+  struct _SEEK {
+    UCHAR  OperationCode;
+    UCHAR  Reserved1 : 5;
+    UCHAR  LogicalUnitNumber : 3;
+    UCHAR  LogicalBlockAddress[4];
+    UCHAR  Reserved2[3];
+    UCHAR  Control;
+  } SEEK, *PSEEK;
+
+  struct _ERASE {
+    UCHAR  OperationCode;
+    UCHAR  Long : 1;
+    UCHAR  Immediate : 1;
+    UCHAR  Reserved1 : 3;
+    UCHAR  LogicalUnitNumber : 3;
+    UCHAR  Reserved2[3];
+    UCHAR  Control;
+  } ERASE, *PERASE;
+
+  struct _START_STOP {
+    UCHAR  OperationCode;
+    UCHAR  Immediate: 1;
+    UCHAR  Reserved1 : 4;
+    UCHAR  LogicalUnitNumber : 3;
+    UCHAR  Reserved2[2];
+    UCHAR  Start : 1;
+    UCHAR  LoadEject : 1;
+    UCHAR  Reserved3 : 6;
+    UCHAR  Control;
+  } START_STOP, *PSTART_STOP;
+
+  struct _MEDIA_REMOVAL {
+    UCHAR  OperationCode;
+    UCHAR  Reserved1 : 5;
+    UCHAR  LogicalUnitNumber : 3;
+    UCHAR  Reserved2[2];
+
+    UCHAR  Prevent : 1;
+    UCHAR  Persistant : 1;
+    UCHAR  Reserved3 : 6;
+
+    UCHAR  Control;
+  } MEDIA_REMOVAL, *PMEDIA_REMOVAL;
+
+  struct _SEEK_BLOCK {
+    UCHAR  OperationCode;
+    UCHAR  Immediate : 1;
+    UCHAR  Reserved1 : 7;
+    UCHAR  BlockAddress[3];
+    UCHAR  Link : 1;
+    UCHAR  Flag : 1;
+    UCHAR  Reserved2 : 4;
+    UCHAR  VendorUnique : 2;
+  } SEEK_BLOCK, *PSEEK_BLOCK;
+
+  struct _REQUEST_BLOCK_ADDRESS {
+    UCHAR  OperationCode;
+    UCHAR  Reserved1[3];
+    UCHAR  AllocationLength;
+    UCHAR  Link : 1;
+    UCHAR  Flag : 1;
+    UCHAR  Reserved2 : 4;
+    UCHAR  VendorUnique : 2;
+  } REQUEST_BLOCK_ADDRESS, *PREQUEST_BLOCK_ADDRESS;
+
+  struct _PARTITION {
+    UCHAR  OperationCode;
+    UCHAR  Immediate : 1;
+    UCHAR  Sel: 1;
+    UCHAR  PartitionSelect : 6;
+    UCHAR  Reserved1[3];
+    UCHAR  Control;
+  } PARTITION, *PPARTITION;
+
+  struct _WRITE_TAPE_MARKS {
+    UCHAR  OperationCode;
+    UCHAR  Immediate : 1;
+    UCHAR  WriteSetMarks: 1;
+    UCHAR  Reserved : 3;
+    UCHAR  LogicalUnitNumber : 3;
+    UCHAR  TransferLength[3];
+    UCHAR  Control;
+  } WRITE_TAPE_MARKS, *PWRITE_TAPE_MARKS;
+
+  struct _SPACE_TAPE_MARKS {
+    UCHAR  OperationCode;
+    UCHAR  Code : 3;
+    UCHAR  Reserved : 2;
+    UCHAR  LogicalUnitNumber : 3;
+    UCHAR  NumMarksMSB ;
+    UCHAR  NumMarks;
+    UCHAR  NumMarksLSB;
+  union {
+        UCHAR  value;
+      struct {
+            UCHAR  Link : 1;
+            UCHAR  Flag : 1;
+            UCHAR  Reserved : 4;
+            UCHAR  VendorUnique : 2;
+      } Fields;
+  } Byte6;
+  } SPACE_TAPE_MARKS, *PSPACE_TAPE_MARKS;
+
+  struct _READ_POSITION {
+    UCHAR  Operation;
+    UCHAR  BlockType : 1;
+    UCHAR  Reserved1 : 4;
+    UCHAR  Lun : 3;
+    UCHAR  Reserved2[7];
+    UCHAR  Control;
+  } READ_POSITION, *PREAD_POSITION;
+
+  struct _CDB6READWRITETAPE {
+    UCHAR  OperationCode;
+    UCHAR  VendorSpecific : 5;
+    UCHAR  Reserved : 3;
+    UCHAR  TransferLenMSB;
+    UCHAR  TransferLen;
+    UCHAR  TransferLenLSB;
+    UCHAR  Link : 1;
+    UCHAR  Flag : 1;
+    UCHAR  Reserved1 : 4;
+    UCHAR  VendorUnique : 2;
+  } CDB6READWRITETAPE, *PCDB6READWRITETAPE;
+
+  struct _INIT_ELEMENT_STATUS {
+    UCHAR  OperationCode;
+    UCHAR  Reserved1 : 5;
+    UCHAR  LogicalUnitNubmer : 3;
+    UCHAR  Reserved2[3];
+    UCHAR  Reserved3 : 7;
+    UCHAR  NoBarCode : 1;
+  } INIT_ELEMENT_STATUS, *PINIT_ELEMENT_STATUS;
+
+  struct _INITIALIZE_ELEMENT_RANGE {
+    UCHAR  OperationCode;
+    UCHAR  Range : 1;
+    UCHAR  Reserved1 : 4;
+    UCHAR  LogicalUnitNubmer : 3;
+    UCHAR  FirstElementAddress[2];
+    UCHAR  Reserved2[2];
+    UCHAR  NumberOfElements[2];
+    UCHAR  Reserved3;
+    UCHAR  Reserved4 : 7;
+    UCHAR  NoBarCode : 1;
+  } INITIALIZE_ELEMENT_RANGE, *PINITIALIZE_ELEMENT_RANGE;
+
+  struct _POSITION_TO_ELEMENT {
+    UCHAR  OperationCode;
+    UCHAR  Reserved1 : 5;
+    UCHAR  LogicalUnitNumber : 3;
+    UCHAR  TransportElementAddress[2];
+    UCHAR  DestinationElementAddress[2];
+    UCHAR  Reserved2[2];
+    UCHAR  Flip : 1;
+    UCHAR  Reserved3 : 7;
+    UCHAR  Control;
+  } POSITION_TO_ELEMENT, *PPOSITION_TO_ELEMENT;
+
+  struct _MOVE_MEDIUM {
+    UCHAR  OperationCode;
+    UCHAR  Reserved1 : 5;
+    UCHAR  LogicalUnitNumber : 3;
+    UCHAR  TransportElementAddress[2];
+    UCHAR  SourceElementAddress[2];
+    UCHAR  DestinationElementAddress[2];
+    UCHAR  Reserved2[2];
+    UCHAR  Flip : 1;
+    UCHAR  Reserved3 : 7;
+    UCHAR  Control;
+  } MOVE_MEDIUM, *PMOVE_MEDIUM;
+
+  struct _EXCHANGE_MEDIUM {
+    UCHAR  OperationCode;
+    UCHAR  Reserved1 : 5;
+    UCHAR  LogicalUnitNumber : 3;
+    UCHAR  TransportElementAddress[2];
+    UCHAR  SourceElementAddress[2];
+    UCHAR  Destination1ElementAddress[2];
+    UCHAR  Destination2ElementAddress[2];
+    UCHAR  Flip1 : 1;
+    UCHAR  Flip2 : 1;
+    UCHAR  Reserved3 : 6;
+    UCHAR  Control;
+  } EXCHANGE_MEDIUM, *PEXCHANGE_MEDIUM;
+
+  struct _READ_ELEMENT_STATUS {
+    UCHAR  OperationCode;
+    UCHAR  ElementType : 4;
+    UCHAR  VolTag : 1;
+    UCHAR  LogicalUnitNumber : 3;
+    UCHAR  StartingElementAddress[2];
+    UCHAR  NumberOfElements[2];
+    UCHAR  Reserved1;
+    UCHAR  AllocationLength[3];
+    UCHAR  Reserved2;
+    UCHAR  Control;
+  } READ_ELEMENT_STATUS, *PREAD_ELEMENT_STATUS;
+
+  struct _SEND_VOLUME_TAG {
+    UCHAR  OperationCode;
+    UCHAR  ElementType : 4;
+    UCHAR  Reserved1 : 1;
+    UCHAR  LogicalUnitNumber : 3;
+    UCHAR  StartingElementAddress[2];
+    UCHAR  Reserved2;
+    UCHAR  ActionCode : 5;
+    UCHAR  Reserved3 : 3;
+    UCHAR  Reserved4[2];
+    UCHAR  ParameterListLength[2];
+    UCHAR  Reserved5;
+    UCHAR  Control;
+  } SEND_VOLUME_TAG, *PSEND_VOLUME_TAG;
+
+  struct _REQUEST_VOLUME_ELEMENT_ADDRESS {
+    UCHAR  OperationCode;
+    UCHAR  ElementType : 4;
+    UCHAR  VolTag : 1;
+    UCHAR  LogicalUnitNumber : 3;
+    UCHAR  StartingElementAddress[2];
+    UCHAR  NumberElements[2];
+    UCHAR  Reserved1;
+    UCHAR  AllocationLength[3];
+    UCHAR  Reserved2;
+    UCHAR  Control;
+  } REQUEST_VOLUME_ELEMENT_ADDRESS, *PREQUEST_VOLUME_ELEMENT_ADDRESS;
+
+  struct _LOAD_UNLOAD {
+    UCHAR  OperationCode;
+    UCHAR  Immediate : 1;
+    UCHAR  Reserved1 : 4;
+    UCHAR  Lun : 3;
+    UCHAR  Reserved2[2];
+    UCHAR  Start : 1;
+    UCHAR  LoadEject : 1;
+    UCHAR  Reserved3: 6;
+    UCHAR  Reserved4[3];
+    UCHAR  Slot;
+    UCHAR  Reserved5[3];
+  } LOAD_UNLOAD, *PLOAD_UNLOAD;
+
+  struct _MECH_STATUS {
+    UCHAR  OperationCode;
+    UCHAR  Reserved : 5;
+    UCHAR  Lun : 3;
+    UCHAR  Reserved1[6];
+    UCHAR  AllocationLength[2];
+    UCHAR  Reserved2[1];
+    UCHAR  Control;
+  } MECH_STATUS, *PMECH_STATUS;
+
+  struct _SYNCHRONIZE_CACHE10 {
+
+    UCHAR  OperationCode;
+
+    UCHAR  RelAddr : 1;
+    UCHAR  Immediate : 1;
+    UCHAR  Reserved : 3;
+    UCHAR  Lun : 3;
+
+    UCHAR  LogicalBlockAddress[4];
+    UCHAR  Reserved2;
+    UCHAR  BlockCount[2];
+    UCHAR  Control;
+  } SYNCHRONIZE_CACHE10, *PSYNCHRONIZE_CACHE10;
+
+  struct _GET_EVENT_STATUS_NOTIFICATION {
+    UCHAR  OperationCode;
+
+    UCHAR  Immediate : 1;
+    UCHAR  Reserved : 4;
+    UCHAR  Lun : 3;
+
+    UCHAR  Reserved2[2];
+    UCHAR  NotificationClassRequest;
+    UCHAR  Reserved3[2];
+    UCHAR  EventListLength[2];
+
+    UCHAR  Control;
+  } GET_EVENT_STATUS_NOTIFICATION, *PGET_EVENT_STATUS_NOTIFICATION;
+
+  struct _READ_DVD_STRUCTURE {
+    UCHAR  OperationCode;
+    UCHAR  Reserved1 : 5;
+    UCHAR  Lun : 3;
+    UCHAR  RMDBlockNumber[4];
+    UCHAR  LayerNumber;
+    UCHAR  Format;
+    UCHAR  AllocationLength[2];
+    UCHAR  Reserved3 : 6;
+    UCHAR  AGID : 2;
+    UCHAR  Control;
+  } READ_DVD_STRUCTURE, *PREAD_DVD_STRUCTURE;
+
+  struct _SEND_DVD_STRUCTURE {
+    UCHAR  OperationCode;
+    UCHAR  Reserved1 : 5;
+    UCHAR  Lun : 3;
+    UCHAR  Reserved2[5];
+    UCHAR  Format;
+    UCHAR  ParameterListLength[2];
+    UCHAR  Reserved3;
+    UCHAR  Control;
+  } SEND_DVD_STRUCTURE, *PSEND_DVD_STRUCTURE;
+
+  struct _SEND_KEY {
+    UCHAR  OperationCode;
+    UCHAR  Reserved1 : 5;
+    UCHAR  Lun : 3;
+    UCHAR  Reserved2[6];
+    UCHAR  ParameterListLength[2];
+    UCHAR  KeyFormat : 6;
+    UCHAR  AGID : 2;
+    UCHAR  Control;
+  } SEND_KEY, *PSEND_KEY;
+
+  struct _REPORT_KEY {
+    UCHAR  OperationCode;
+    UCHAR  Reserved1 : 5;
+    UCHAR  Lun : 3;
+    UCHAR  LogicalBlockAddress[4];
+    UCHAR  Reserved2[2];
+    UCHAR  AllocationLength[2];
+    UCHAR  KeyFormat : 6;
+    UCHAR  AGID : 2;
+    UCHAR  Control;
+  } REPORT_KEY, *PREPORT_KEY;
+
+  struct _SET_READ_AHEAD {
+    UCHAR  OperationCode;
+    UCHAR  Reserved1 : 5;
+    UCHAR  Lun : 3;
+    UCHAR  TriggerLBA[4];
+    UCHAR  ReadAheadLBA[4];
+    UCHAR  Reserved2;
+    UCHAR  Control;
+  } SET_READ_AHEAD, *PSET_READ_AHEAD;
+
+  struct _READ_FORMATTED_CAPACITIES {
+    UCHAR  OperationCode;
+    UCHAR  Reserved1 : 5;
+    UCHAR  Lun : 3;
+    UCHAR  Reserved2[5];
+    UCHAR  AllocationLength[2];
+    UCHAR  Control;
+  } READ_FORMATTED_CAPACITIES, *PREAD_FORMATTED_CAPACITIES;
+
+  struct _REPORT_LUNS {
+    UCHAR  OperationCode;
+    UCHAR  Reserved1[5];
+    UCHAR  AllocationLength[4];
+    UCHAR  Reserved2[1];
+    UCHAR  Control;
+  } REPORT_LUNS, *PREPORT_LUNS;
+
+  struct _PERSISTENT_RESERVE_IN {
+    UCHAR  OperationCode;
+    UCHAR  ServiceAction : 5;
+    UCHAR  Reserved1 : 3;
+    UCHAR  Reserved2[5];
+    UCHAR  AllocationLength[2];
+    UCHAR  Control;
+  } PERSISTENT_RESERVE_IN, *PPERSISTENT_RESERVE_IN;
+
+  struct _PERSISTENT_RESERVE_OUT {
+    UCHAR  OperationCode;
+    UCHAR  ServiceAction : 5;
+    UCHAR  Reserved1 : 3;
+    UCHAR  Type : 4;
+    UCHAR  Scope : 4;
+    UCHAR  Reserved2[4];
+    UCHAR  ParameterListLength[2];
+    UCHAR  Control;
+  } PERSISTENT_RESERVE_OUT, *PPERSISTENT_RESERVE_OUT;
+
+  struct _GET_CONFIGURATION {
+    UCHAR  OperationCode;
+    UCHAR  RequestType : 1;
+    UCHAR  Reserved1   : 7;
+    UCHAR  StartingFeature[2];
+    UCHAR  Reserved2[3];
+    UCHAR  AllocationLength[2];
+    UCHAR  Control;
+  } GET_CONFIGURATION, *PGET_CONFIGURATION;
+
+  struct _SET_CD_SPEED {
+    UCHAR  OperationCode;
+    UCHAR  Reserved1;
+    UCHAR  ReadSpeed[2];
+    UCHAR  WriteSpeed[2];
+    UCHAR  Reserved2[5];
+    UCHAR  Control;
+  } SET_CD_SPEED, *PSET_CD_SPEED;
+
+  ULONG AsUlong[4];
+    UCHAR  AsByte[16];
+} CDB, *PCDB;
+
+#ifndef _INQUIRYDATA_DEFINED /* also in minitape.h */
+#define _INQUIRYDATA_DEFINED
+
+#define INQUIRYDATABUFFERSIZE             36
+
+typedef struct _INQUIRYDATA {
+  UCHAR  DeviceType : 5;
+  UCHAR  DeviceTypeQualifier : 3;
+  UCHAR  DeviceTypeModifier : 7;
+  UCHAR  RemovableMedia : 1;
+  _ANONYMOUS_UNION union {
+    UCHAR  Versions;
+    _ANONYMOUS_STRUCT struct {
+      UCHAR  ANSIVersion : 3;
+      UCHAR  ECMAVersion : 3;
+      UCHAR  ISOVersion : 2;
+    } DUMMYSTRUCTNAME;
+  } DUMMYUNIONNAME;
+  UCHAR  ResponseDataFormat : 4;
+  UCHAR  HiSupport : 1;
+  UCHAR  NormACA : 1;
+  UCHAR  TerminateTask : 1;
+  UCHAR  AERC : 1;
+  UCHAR  AdditionalLength;
+  UCHAR  Reserved;
+  UCHAR  Addr16 : 1;
+  UCHAR  Addr32 : 1;
+  UCHAR  AckReqQ: 1;
+  UCHAR  MediumChanger : 1;
+  UCHAR  MultiPort : 1;
+  UCHAR  ReservedBit2 : 1;
+  UCHAR  EnclosureServices : 1;
+  UCHAR  ReservedBit3 : 1;
+  UCHAR  SoftReset : 1;
+  UCHAR  CommandQueue : 1;
+  UCHAR  TransferDisable : 1;
+  UCHAR  LinkedCommands : 1;
+  UCHAR  Synchronous : 1;
+  UCHAR  Wide16Bit : 1;
+  UCHAR  Wide32Bit : 1;
+  UCHAR  RelativeAddressing : 1;
+  UCHAR  VendorId[8];
+  UCHAR  ProductId[16];
+  UCHAR  ProductRevisionLevel[4];
+  UCHAR  VendorSpecific[20];
+  UCHAR  Reserved3[40];
+} INQUIRYDATA, *PINQUIRYDATA;
+#endif
+
+/* INQUIRYDATA.DeviceType constants */
+#define DIRECT_ACCESS_DEVICE              0x00
+#define SEQUENTIAL_ACCESS_DEVICE          0x01
+#define PRINTER_DEVICE                    0x02
+#define PROCESSOR_DEVICE                  0x03
+#define WRITE_ONCE_READ_MULTIPLE_DEVICE   0x04
+#define READ_ONLY_DIRECT_ACCESS_DEVICE    0x05
+#define SCANNER_DEVICE                    0x06
+#define OPTICAL_DEVICE                    0x07
+#define MEDIUM_CHANGER                    0x08
+#define COMMUNICATION_DEVICE              0x09
+#define LOGICAL_UNIT_NOT_PRESENT_DEVICE   0x7F
+#define DEVICE_QUALIFIER_NOT_SUPPORTED    0x03
+
+/* INQUIRYDATA.DeviceTypeQualifier constants */
+#define DEVICE_CONNECTED 0x00
+
+#define SCSISTAT_GOOD                     0x00
+#define SCSISTAT_CHECK_CONDITION          0x02
+#define SCSISTAT_CONDITION_MET            0x04
+#define SCSISTAT_BUSY                     0x08
+#define SCSISTAT_INTERMEDIATE             0x10
+#define SCSISTAT_INTERMEDIATE_COND_MET    0x14
+#define SCSISTAT_RESERVATION_CONFLICT     0x18
+#define SCSISTAT_COMMAND_TERMINATED       0x22
+#define SCSISTAT_QUEUE_FULL               0x28
+
+/* Mode Sense/Select page constants */
+#define MODE_PAGE_ERROR_RECOVERY          0x01
+#define MODE_PAGE_DISCONNECT              0x02
+#define MODE_PAGE_FORMAT_DEVICE           0x03
+#define MODE_PAGE_RIGID_GEOMETRY          0x04
+#define MODE_PAGE_FLEXIBILE               0x05
+#define MODE_PAGE_WRITE_PARAMETERS        0x05
+#define MODE_PAGE_VERIFY_ERROR            0x07
+#define MODE_PAGE_CACHING                 0x08
+#define MODE_PAGE_PERIPHERAL              0x09
+#define MODE_PAGE_CONTROL                 0x0A
+#define MODE_PAGE_MEDIUM_TYPES            0x0B
+#define MODE_PAGE_NOTCH_PARTITION         0x0C
+#define MODE_PAGE_CD_AUDIO_CONTROL        0x0E
+#define MODE_PAGE_DATA_COMPRESS           0x0F
+#define MODE_PAGE_DEVICE_CONFIG           0x10
+#define MODE_PAGE_MEDIUM_PARTITION        0x11
+#define MODE_PAGE_CDVD_FEATURE_SET        0x18
+#define MODE_PAGE_POWER_CONDITION         0x1A
+#define MODE_PAGE_FAULT_REPORTING         0x1C
+#define MODE_PAGE_CDVD_INACTIVITY         0x1D
+#define MODE_PAGE_ELEMENT_ADDRESS         0x1D
+#define MODE_PAGE_TRANSPORT_GEOMETRY      0x1E
+#define MODE_PAGE_DEVICE_CAPABILITIES     0x1F
+#define MODE_PAGE_CAPABILITIES            0x2A
+#define MODE_SENSE_RETURN_ALL             0x3f
+#define MODE_SENSE_CURRENT_VALUES         0x00
+#define MODE_SENSE_CHANGEABLE_VALUES      0x40
+#define MODE_SENSE_DEFAULT_VAULES         0x80
+#define MODE_SENSE_SAVED_VALUES           0xc0
+
+/* SCSI CDB operation codes */
+#define SCSIOP_TEST_UNIT_READY            0x00
+#define SCSIOP_REZERO_UNIT                0x01
+#define SCSIOP_REWIND                     0x01
+#define SCSIOP_REQUEST_BLOCK_ADDR         0x02
+#define SCSIOP_REQUEST_SENSE              0x03
+#define SCSIOP_FORMAT_UNIT                0x04
+#define SCSIOP_READ_BLOCK_LIMITS          0x05
+#define SCSIOP_REASSIGN_BLOCKS            0x07
+#define SCSIOP_INIT_ELEMENT_STATUS        0x07
+#define SCSIOP_READ6                      0x08
+#define SCSIOP_RECEIVE                    0x08
+#define SCSIOP_WRITE6                     0x0A
+#define SCSIOP_PRINT                      0x0A
+#define SCSIOP_SEND                       0x0A
+#define SCSIOP_SEEK6                      0x0B
+#define SCSIOP_TRACK_SELECT               0x0B
+#define SCSIOP_SLEW_PRINT                 0x0B
+#define SCSIOP_SEEK_BLOCK                 0x0C
+#define SCSIOP_PARTITION                  0x0D
+#define SCSIOP_READ_REVERSE               0x0F
+#define SCSIOP_WRITE_FILEMARKS            0x10
+#define SCSIOP_FLUSH_BUFFER               0x10
+#define SCSIOP_SPACE                      0x11
+#define SCSIOP_INQUIRY                    0x12
+#define SCSIOP_VERIFY6                    0x13
+#define SCSIOP_RECOVER_BUF_DATA           0x14
+#define SCSIOP_MODE_SELECT                0x15
+#define SCSIOP_RESERVE_UNIT               0x16
+#define SCSIOP_RELEASE_UNIT               0x17
+#define SCSIOP_COPY                       0x18
+#define SCSIOP_ERASE                      0x19
+#define SCSIOP_MODE_SENSE                 0x1A
+#define SCSIOP_START_STOP_UNIT            0x1B
+#define SCSIOP_STOP_PRINT                 0x1B
+#define SCSIOP_LOAD_UNLOAD                0x1B
+#define SCSIOP_RECEIVE_DIAGNOSTIC         0x1C
+#define SCSIOP_SEND_DIAGNOSTIC            0x1D
+#define SCSIOP_MEDIUM_REMOVAL             0x1E
+
+#define SCSIOP_READ_FORMATTED_CAPACITY    0x23
+#define SCSIOP_READ_CAPACITY              0x25
+#define SCSIOP_READ                       0x28
+#define SCSIOP_WRITE                      0x2A
+#define SCSIOP_SEEK                       0x2B
+#define SCSIOP_LOCATE                     0x2B
+#define SCSIOP_POSITION_TO_ELEMENT        0x2B
+#define SCSIOP_WRITE_VERIFY               0x2E
+#define SCSIOP_VERIFY                     0x2F
+#define SCSIOP_SEARCH_DATA_HIGH           0x30
+#define SCSIOP_SEARCH_DATA_EQUAL          0x31
+#define SCSIOP_SEARCH_DATA_LOW            0x32
+#define SCSIOP_SET_LIMITS                 0x33
+#define SCSIOP_READ_POSITION              0x34
+#define SCSIOP_SYNCHRONIZE_CACHE          0x35
+#define SCSIOP_COMPARE                    0x39
+#define SCSIOP_COPY_COMPARE               0x3A
+#define SCSIOP_WRITE_DATA_BUFF            0x3B
+#define SCSIOP_READ_DATA_BUFF             0x3C
+#define SCSIOP_CHANGE_DEFINITION          0x40
+#define SCSIOP_READ_SUB_CHANNEL           0x42
+#define SCSIOP_READ_TOC                   0x43
+#define SCSIOP_READ_HEADER                0x44
+#define SCSIOP_PLAY_AUDIO                 0x45
+#define SCSIOP_GET_CONFIGURATION          0x46
+#define SCSIOP_PLAY_AUDIO_MSF             0x47
+#define SCSIOP_PLAY_TRACK_INDEX           0x48
+#define SCSIOP_PLAY_TRACK_RELATIVE        0x49
+#define SCSIOP_GET_EVENT_STATUS           0x4A
+#define SCSIOP_PAUSE_RESUME               0x4B
+#define SCSIOP_LOG_SELECT                 0x4C
+#define SCSIOP_LOG_SENSE                  0x4D
+#define SCSIOP_STOP_PLAY_SCAN             0x4E
+#define SCSIOP_READ_DISK_INFORMATION      0x51
+#define SCSIOP_READ_TRACK_INFORMATION     0x52
+#define SCSIOP_RESERVE_TRACK_RZONE        0x53
+#define SCSIOP_SEND_OPC_INFORMATION       0x54
+#define SCSIOP_MODE_SELECT10              0x55
+#define SCSIOP_MODE_SENSE10               0x5A
+#define SCSIOP_CLOSE_TRACK_SESSION        0x5B
+#define SCSIOP_READ_BUFFER_CAPACITY       0x5C
+#define SCSIOP_SEND_CUE_SHEET             0x5D
+#define SCSIOP_PERSISTENT_RESERVE_IN      0x5E
+#define SCSIOP_PERSISTENT_RESERVE_OUT     0x5F
+
+#define SCSIOP_REPORT_LUNS                0xA0
+#define SCSIOP_BLANK                      0xA1
+#define SCSIOP_SEND_KEY                   0xA3
+#define SCSIOP_REPORT_KEY                 0xA4
+#define SCSIOP_MOVE_MEDIUM                0xA5
+#define SCSIOP_LOAD_UNLOAD_SLOT           0xA6
+#define SCSIOP_EXCHANGE_MEDIUM            0xA6
+#define SCSIOP_SET_READ_AHEAD             0xA7
+#define SCSIOP_READ_DVD_STRUCTURE         0xAD
+#define SCSIOP_REQUEST_VOL_ELEMENT        0xB5
+#define SCSIOP_SEND_VOLUME_TAG            0xB6
+#define SCSIOP_READ_ELEMENT_STATUS        0xB8
+#define SCSIOP_READ_CD_MSF                0xB9
+#define SCSIOP_SCAN_CD                    0xBA
+#define SCSIOP_SET_CD_SPEED               0xBB
+#define SCSIOP_PLAY_CD                    0xBC
+#define SCSIOP_MECHANISM_STATUS           0xBD
+#define SCSIOP_READ_CD                    0xBE
+#define SCSIOP_SEND_DVD_STRUCTURE         0xBF
+#define SCSIOP_INIT_ELEMENT_RANGE         0xE7
+
+#define SCSIOP_DENON_EJECT_DISC           0xE6
+#define SCSIOP_DENON_STOP_AUDIO           0xE7
+#define SCSIOP_DENON_PLAY_AUDIO           0xE8
+#define SCSIOP_DENON_READ_TOC             0xE9
+#define SCSIOP_DENON_READ_SUBCODE         0xEB
+
+#define SCSIMESS_MODIFY_DATA_POINTER      0x00
+#define SCSIMESS_SYNCHRONOUS_DATA_REQ     0x01
+#define SCSIMESS_WIDE_DATA_REQUEST        0x03
+
+#define SCSIMESS_MODIFY_DATA_LENGTH       5
+#define SCSIMESS_SYNCH_DATA_LENGTH        3
+#define SCSIMESS_WIDE_DATA_LENGTH         2
+
+#define SCSIMESS_ABORT                    0x06
+#define SCSIMESS_ABORT_WITH_TAG           0x0D
+#define SCSIMESS_BUS_DEVICE_RESET         0x0C
+#define SCSIMESS_CLEAR_QUEUE              0x0E
+#define SCSIMESS_COMMAND_COMPLETE         0x00
+#define SCSIMESS_DISCONNECT               0x04
+#define SCSIMESS_EXTENDED_MESSAGE         0x01
+#define SCSIMESS_IDENTIFY                 0x80
+#define SCSIMESS_IDENTIFY_WITH_DISCON     0xC0
+#define SCSIMESS_IGNORE_WIDE_RESIDUE      0x23
+#define SCSIMESS_INITIATE_RECOVERY        0x0F
+#define SCSIMESS_INIT_DETECTED_ERROR      0x05
+#define SCSIMESS_LINK_CMD_COMP            0x0A
+#define SCSIMESS_LINK_CMD_COMP_W_FLAG     0x0B
+#define SCSIMESS_MESS_PARITY_ERROR        0x09
+#define SCSIMESS_MESSAGE_REJECT           0x07
+#define SCSIMESS_NO_OPERATION             0x08
+#define SCSIMESS_HEAD_OF_QUEUE_TAG        0x21
+#define SCSIMESS_ORDERED_QUEUE_TAG        0x22
+#define SCSIMESS_SIMPLE_QUEUE_TAG         0x20
+#define SCSIMESS_RELEASE_RECOVERY         0x10
+#define SCSIMESS_RESTORE_POINTERS         0x03
+#define SCSIMESS_SAVE_DATA_POINTER        0x02
+#define SCSIMESS_TERMINATE_IO_PROCESS     0x11
+
+#define CDB_FORCE_MEDIA_ACCESS            0x08
+
+#define CDB_RETURN_ON_COMPLETION          0
+#define CDB_RETURN_IMMEDIATE              1
+
+#define CDB_INQUIRY_EVPD                  0x01
+
+#define LUN0_FORMAT_SAVING_DEFECT_LIST    0
+#define USE_DEFAULTMSB                    0
+#define USE_DEFAULTLSB                    0
+
+#define START_UNIT_CODE                   0x01
+#define STOP_UNIT_CODE                    0x00
+
+typedef struct _SENSE_DATA {
+  UCHAR  ErrorCode : 7;
+  UCHAR  Valid : 1;
+  UCHAR  SegmentNumber;
+  UCHAR  SenseKey : 4;
+  UCHAR  Reserved : 1;
+  UCHAR  IncorrectLength : 1;
+  UCHAR  EndOfMedia : 1;
+  UCHAR  FileMark : 1;
+  UCHAR  Information[4];
+  UCHAR  AdditionalSenseLength;
+  UCHAR  CommandSpecificInformation[4];
+  UCHAR  AdditionalSenseCode;
+  UCHAR  AdditionalSenseCodeQualifier;
+  UCHAR  FieldReplaceableUnitCode;
+  UCHAR  SenseKeySpecific[3];
+} SENSE_DATA, *PSENSE_DATA;
+
+#define SENSE_BUFFER_SIZE                 18
+
+/* Sense codes */
+#define SCSI_SENSE_NO_SENSE               0x00
+#define SCSI_SENSE_RECOVERED_ERROR        0x01
+#define SCSI_SENSE_NOT_READY              0x02
+#define SCSI_SENSE_MEDIUM_ERROR           0x03
+#define SCSI_SENSE_HARDWARE_ERROR         0x04
+#define SCSI_SENSE_ILLEGAL_REQUEST        0x05
+#define SCSI_SENSE_UNIT_ATTENTION         0x06
+#define SCSI_SENSE_DATA_PROTECT           0x07
+#define SCSI_SENSE_BLANK_CHECK            0x08
+#define SCSI_SENSE_UNIQUE                 0x09
+#define SCSI_SENSE_COPY_ABORTED           0x0A
+#define SCSI_SENSE_ABORTED_COMMAND        0x0B
+#define SCSI_SENSE_EQUAL                  0x0C
+#define SCSI_SENSE_VOL_OVERFLOW           0x0D
+#define SCSI_SENSE_MISCOMPARE             0x0E
+#define SCSI_SENSE_RESERVED               0x0F
+
+/* Additional tape bit */
+#define SCSI_ILLEGAL_LENGTH               0x20
+#define SCSI_EOM                          0x40
+#define SCSI_FILE_MARK                    0x80
+
+/* Additional Sense codes */
+#define SCSI_ADSENSE_NO_SENSE                              0x00
+#define SCSI_ADSENSE_NO_SEEK_COMPLETE                      0x02
+#define SCSI_ADSENSE_LUN_NOT_READY                         0x04
+#define SCSI_ADSENSE_WRITE_ERROR                           0x0C
+#define SCSI_ADSENSE_TRACK_ERROR                           0x14
+#define SCSI_ADSENSE_SEEK_ERROR                            0x15
+#define SCSI_ADSENSE_REC_DATA_NOECC                        0x17
+#define SCSI_ADSENSE_REC_DATA_ECC                          0x18
+#define SCSI_ADSENSE_ILLEGAL_COMMAND                       0x20
+#define SCSI_ADSENSE_ILLEGAL_BLOCK                         0x21
+#define SCSI_ADSENSE_INVALID_CDB                           0x24
+#define SCSI_ADSENSE_INVALID_LUN                           0x25
+#define SCSI_ADSENSE_WRITE_PROTECT                         0x27
+#define SCSI_ADSENSE_MEDIUM_CHANGED                        0x28
+#define SCSI_ADSENSE_BUS_RESET                             0x29
+#define SCSI_ADSENSE_INSUFFICIENT_TIME_FOR_OPERATION       0x2E
+#define SCSI_ADSENSE_INVALID_MEDIA                         0x30
+#define SCSI_ADSENSE_NO_MEDIA_IN_DEVICE                    0x3a
+#define SCSI_ADSENSE_POSITION_ERROR                        0x3b
+#define SCSI_ADSENSE_OPERATOR_REQUEST                      0x5a
+#define SCSI_ADSENSE_FAILURE_PREDICTION_THRESHOLD_EXCEEDED 0x5d
+#define SCSI_ADSENSE_ILLEGAL_MODE_FOR_THIS_TRACK           0x64
+#define SCSI_ADSENSE_COPY_PROTECTION_FAILURE               0x6f
+#define SCSI_ADSENSE_POWER_CALIBRATION_ERROR               0x73
+#define SCSI_ADSENSE_VENDOR_UNIQUE                         0x80
+#define SCSI_ADSENSE_MUSIC_AREA                            0xA0
+#define SCSI_ADSENSE_DATA_AREA                             0xA1
+#define SCSI_ADSENSE_VOLUME_OVERFLOW                       0xA7
+
+#define SCSI_SENSEQ_CAUSE_NOT_REPORTABLE                   0x00
+#define SCSI_SENSEQ_BECOMING_READY                         0x01
+#define SCSI_SENSEQ_INIT_COMMAND_REQUIRED                  0x02
+#define SCSI_SENSEQ_MANUAL_INTERVENTION_REQUIRED           0x03
+#define SCSI_SENSEQ_FORMAT_IN_PROGRESS                     0x04
+#define SCSI_SENSEQ_REBUILD_IN_PROGRESS                    0x05
+#define SCSI_SENSEQ_RECALCULATION_IN_PROGRESS              0x06
+#define SCSI_SENSEQ_OPERATION_IN_PROGRESS                  0x07
+#define SCSI_SENSEQ_LONG_WRITE_IN_PROGRESS                 0x08
+#define SCSI_SENSEQ_LOSS_OF_STREAMING                      0x09
+#define SCSI_SENSEQ_PADDING_BLOCKS_ADDED                   0x0A
+
+
+#define FILE_DEVICE_SCSI 0x0000001b
+
+#define IOCTL_SCSI_EXECUTE_IN ((FILE_DEVICE_SCSI << 16) + 0x0011)
+#define IOCTL_SCSI_EXECUTE_OUT ((FILE_DEVICE_SCSI << 16) + 0x0012)
+#define IOCTL_SCSI_EXECUTE_NONE ((FILE_DEVICE_SCSI << 16) + 0x0013)
+
+/* SMART support in ATAPI */
+#define IOCTL_SCSI_MINIPORT_SMART_VERSION               ((FILE_DEVICE_SCSI << 16) + 0x0500)
+#define IOCTL_SCSI_MINIPORT_IDENTIFY                    ((FILE_DEVICE_SCSI << 16) + 0x0501)
+#define IOCTL_SCSI_MINIPORT_READ_SMART_ATTRIBS          ((FILE_DEVICE_SCSI << 16) + 0x0502)
+#define IOCTL_SCSI_MINIPORT_READ_SMART_THRESHOLDS       ((FILE_DEVICE_SCSI << 16) + 0x0503)
+#define IOCTL_SCSI_MINIPORT_ENABLE_SMART                ((FILE_DEVICE_SCSI << 16) + 0x0504)
+#define IOCTL_SCSI_MINIPORT_DISABLE_SMART               ((FILE_DEVICE_SCSI << 16) + 0x0505)
+#define IOCTL_SCSI_MINIPORT_RETURN_STATUS               ((FILE_DEVICE_SCSI << 16) + 0x0506)
+#define IOCTL_SCSI_MINIPORT_ENABLE_DISABLE_AUTOSAVE     ((FILE_DEVICE_SCSI << 16) + 0x0507)
+#define IOCTL_SCSI_MINIPORT_SAVE_ATTRIBUTE_VALUES       ((FILE_DEVICE_SCSI << 16) + 0x0508)
+#define IOCTL_SCSI_MINIPORT_EXECUTE_OFFLINE_DIAGS       ((FILE_DEVICE_SCSI << 16) + 0x0509)
+#define IOCTL_SCSI_MINIPORT_ENABLE_DISABLE_AUTO_OFFLINE ((FILE_DEVICE_SCSI << 16) + 0x050a)
+#define IOCTL_SCSI_MINIPORT_READ_SMART_LOG              ((FILE_DEVICE_SCSI << 16) + 0x050b)
+#define IOCTL_SCSI_MINIPORT_WRITE_SMART_LOG             ((FILE_DEVICE_SCSI << 16) + 0x050c)
+
+/* CLUSTER support */
+#define IOCTL_SCSI_MINIPORT_NOT_QUORUM_CAPABLE  ((FILE_DEVICE_SCSI << 16) + 0x0520)
+#define IOCTL_SCSI_MINIPORT_NOT_CLUSTER_CAPABLE ((FILE_DEVICE_SCSI << 16) + 0x0521)
+
+/* READ_TOC formats */
+#define READ_TOC_FORMAT_TOC         0x00
+#define READ_TOC_FORMAT_SESSION     0x01
+#define READ_TOC_FORMAT_FULL_TOC    0x02
+#define READ_TOC_FORMAT_PMA         0x03
+#define READ_TOC_FORMAT_ATIP        0x04
+
+/* Read Capacity Data. Returned in Big Endian format */
+typedef struct _READ_CAPACITY_DATA {
+  ULONG  LogicalBlockAddress;
+  ULONG  BytesPerBlock;
+} READ_CAPACITY_DATA, *PREAD_CAPACITY_DATA;
+
+/* Read Block Limits Data. Returned in Big Endian format */
+typedef struct _READ_BLOCK_LIMITS {
+  UCHAR  Reserved;
+  UCHAR  BlockMaximumSize[3];
+  UCHAR  BlockMinimumSize[2];
+} READ_BLOCK_LIMITS_DATA, *PREAD_BLOCK_LIMITS_DATA;
+
+
+typedef struct _MODE_PARAMETER_HEADER {
+  UCHAR  ModeDataLength;
+  UCHAR  MediumType;
+  UCHAR  DeviceSpecificParameter;
+  UCHAR  BlockDescriptorLength;
+}MODE_PARAMETER_HEADER, *PMODE_PARAMETER_HEADER;
+
+typedef struct _MODE_PARAMETER_HEADER10 {
+  UCHAR  ModeDataLength[2];
+  UCHAR  MediumType;
+  UCHAR  DeviceSpecificParameter;
+  UCHAR  Reserved[2];
+  UCHAR  BlockDescriptorLength[2];
+} MODE_PARAMETER_HEADER10, *PMODE_PARAMETER_HEADER10;
+
+#define MODE_FD_SINGLE_SIDE               0x01
+#define MODE_FD_DOUBLE_SIDE               0x02
+#define MODE_FD_MAXIMUM_TYPE              0x1E
+#define MODE_DSP_FUA_SUPPORTED            0x10
+#define MODE_DSP_WRITE_PROTECT            0x80
+
+typedef struct _MODE_PARAMETER_BLOCK {
+  UCHAR  DensityCode;
+  UCHAR  NumberOfBlocks[3];
+  UCHAR  Reserved;
+  UCHAR  BlockLength[3];
+} MODE_PARAMETER_BLOCK, *PMODE_PARAMETER_BLOCK;
+
+typedef struct _MODE_DISCONNECT_PAGE {
+  UCHAR  PageCode : 6;
+  UCHAR  Reserved : 1;
+  UCHAR  PageSavable : 1;
+  UCHAR  PageLength;
+  UCHAR  BufferFullRatio;
+  UCHAR  BufferEmptyRatio;
+  UCHAR  BusInactivityLimit[2];
+  UCHAR  BusDisconnectTime[2];
+  UCHAR  BusConnectTime[2];
+  UCHAR  MaximumBurstSize[2];
+  UCHAR  DataTransferDisconnect : 2;
+  UCHAR  Reserved2[3];
+}MODE_DISCONNECT_PAGE, *PMODE_DISCONNECT_PAGE;
+
+typedef struct _MODE_CACHING_PAGE {
+  UCHAR  PageCode : 6;
+  UCHAR  Reserved : 1;
+  UCHAR  PageSavable : 1;
+  UCHAR  PageLength;
+  UCHAR  ReadDisableCache : 1;
+  UCHAR  MultiplicationFactor : 1;
+  UCHAR  WriteCacheEnable : 1;
+  UCHAR  Reserved2 : 5;
+  UCHAR  WriteRetensionPriority : 4;
+  UCHAR  ReadRetensionPriority : 4;
+  UCHAR  DisablePrefetchTransfer[2];
+  UCHAR  MinimumPrefetch[2];
+  UCHAR  MaximumPrefetch[2];
+  UCHAR  MaximumPrefetchCeiling[2];
+}MODE_CACHING_PAGE, *PMODE_CACHING_PAGE;
+
+typedef struct _MODE_CDROM_WRITE_PARAMETERS_PAGE {
+  UCHAR  PageLength;
+  UCHAR  WriteType : 4;
+  UCHAR  TestWrite : 1;
+  UCHAR  LinkSizeValid : 1;
+  UCHAR  BufferUnderrunFreeEnabled : 1;
+  UCHAR  Reserved2 : 1;
+  UCHAR  TrackMode : 4;
+  UCHAR  Copy : 1;
+  UCHAR  FixedPacket : 1;
+  UCHAR  MultiSession : 2;
+  UCHAR  DataBlockType : 4;
+  UCHAR  Reserved3 : 4;
+  UCHAR  LinkSize;
+  UCHAR  Reserved4;
+  UCHAR  HostApplicationCode : 6;
+  UCHAR  Reserved5 : 2;
+  UCHAR  SessionFormat;
+  UCHAR  Reserved6;
+  UCHAR  PacketSize[4];
+  UCHAR  AudioPauseLength[2];
+  UCHAR  Reserved7 : 7;
+  UCHAR  MediaCatalogNumberValid : 1;
+  UCHAR  MediaCatalogNumber[13];
+  UCHAR  MediaCatalogNumberZero;
+  UCHAR  MediaCatalogNumberAFrame;
+  UCHAR  Reserved8 : 7;
+  UCHAR  ISRCValid : 1;
+  UCHAR  ISRCCountry[2];
+  UCHAR  ISRCOwner[3];
+  UCHAR  ISRCRecordingYear[2];
+  UCHAR  ISRCSerialNumber[5];
+  UCHAR  ISRCZero;
+  UCHAR  ISRCAFrame;
+  UCHAR  ISRCReserved;
+  UCHAR  SubHeaderData[4];
+} MODE_CDROM_WRITE_PARAMETERS_PAGE, *PMODE_CDROM_WRITE_PARAMETERS_PAGE;
+
+typedef struct _MODE_FLEXIBLE_DISK_PAGE {
+  UCHAR  PageCode : 6;
+  UCHAR  Reserved : 1;
+  UCHAR  PageSavable : 1;
+  UCHAR  PageLength;
+  UCHAR  TransferRate[2];
+  UCHAR  NumberOfHeads;
+  UCHAR  SectorsPerTrack;
+  UCHAR  BytesPerSector[2];
+  UCHAR  NumberOfCylinders[2];
+  UCHAR  StartWritePrecom[2];
+  UCHAR  StartReducedCurrent[2];
+  UCHAR  StepRate[2];
+  UCHAR  StepPluseWidth;
+  UCHAR  HeadSettleDelay[2];
+  UCHAR  MotorOnDelay;
+  UCHAR  MotorOffDelay;
+  UCHAR  Reserved2 : 5;
+  UCHAR  MotorOnAsserted : 1;
+  UCHAR  StartSectorNumber : 1;
+  UCHAR  TrueReadySignal : 1;
+  UCHAR  StepPlusePerCyclynder : 4;
+  UCHAR  Reserved3 : 4;
+  UCHAR  WriteCompenstation;
+  UCHAR  HeadLoadDelay;
+  UCHAR  HeadUnloadDelay;
+  UCHAR  Pin2Usage : 4;
+  UCHAR  Pin34Usage : 4;
+  UCHAR  Pin1Usage : 4;
+  UCHAR  Pin4Usage : 4;
+  UCHAR  MediumRotationRate[2];
+  UCHAR  Reserved4[2];
+} MODE_FLEXIBLE_DISK_PAGE, *PMODE_FLEXIBLE_DISK_PAGE;
+
+typedef struct _MODE_FORMAT_PAGE {
+  UCHAR  PageCode : 6;
+  UCHAR  Reserved : 1;
+  UCHAR  PageSavable : 1;
+  UCHAR  PageLength;
+  UCHAR  TracksPerZone[2];
+  UCHAR  AlternateSectorsPerZone[2];
+  UCHAR  AlternateTracksPerZone[2];
+  UCHAR  AlternateTracksPerLogicalUnit[2];
+  UCHAR  SectorsPerTrack[2];
+  UCHAR  BytesPerPhysicalSector[2];
+  UCHAR  Interleave[2];
+  UCHAR  TrackSkewFactor[2];
+  UCHAR  CylinderSkewFactor[2];
+  UCHAR  Reserved2 : 4;
+  UCHAR  SurfaceFirst : 1;
+  UCHAR  RemovableMedia : 1;
+  UCHAR  HardSectorFormating : 1;
+  UCHAR  SoftSectorFormating : 1;
+  UCHAR  Reserved3[3];
+} MODE_FORMAT_PAGE, *PMODE_FORMAT_PAGE;
+
+typedef struct _MODE_RIGID_GEOMETRY_PAGE {
+  UCHAR  PageCode : 6;
+  UCHAR  Reserved : 1;
+  UCHAR  PageSavable : 1;
+  UCHAR  PageLength;
+  UCHAR  NumberOfCylinders[3];
+  UCHAR  NumberOfHeads;
+  UCHAR  StartWritePrecom[3];
+  UCHAR  StartReducedCurrent[3];
+  UCHAR  DriveStepRate[2];
+  UCHAR  LandZoneCyclinder[3];
+  UCHAR  RotationalPositionLock : 2;
+  UCHAR  Reserved2 : 6;
+  UCHAR  RotationOffset;
+  UCHAR  Reserved3;
+  UCHAR  RoataionRate[2];
+  UCHAR  Reserved4[2];
+} MODE_RIGID_GEOMETRY_PAGE, *PMODE_RIGID_GEOMETRY_PAGE;
+
+typedef struct _MODE_READ_WRITE_RECOVERY_PAGE {
+  UCHAR  PageCode : 6;
+  UCHAR  Reserved1 : 1;
+  UCHAR  PSBit : 1;
+  UCHAR  PageLength;
+  UCHAR  DCRBit : 1;
+  UCHAR  DTEBit : 1;
+  UCHAR  PERBit : 1;
+  UCHAR  EERBit : 1;
+  UCHAR  RCBit : 1;
+  UCHAR  TBBit : 1;
+  UCHAR  ARRE : 1;
+  UCHAR  AWRE : 1;
+  UCHAR  ReadRetryCount;
+  UCHAR  Reserved4[4];
+  UCHAR  WriteRetryCount;
+  UCHAR  Reserved5[3];
+} MODE_READ_WRITE_RECOVERY_PAGE, *PMODE_READ_WRITE_RECOVERY_PAGE;
+
+typedef struct _MODE_READ_RECOVERY_PAGE {
+  UCHAR  PageCode : 6;
+  UCHAR  Reserved1 : 1;
+  UCHAR  PSBit : 1;
+  UCHAR  PageLength;
+  UCHAR  DCRBit : 1;
+  UCHAR  DTEBit : 1;
+  UCHAR  PERBit : 1;
+  UCHAR  Reserved2 : 1;
+  UCHAR  RCBit : 1;
+  UCHAR  TBBit : 1;
+  UCHAR  Reserved3 : 2;
+  UCHAR  ReadRetryCount;
+  UCHAR  Reserved4[4];
+} MODE_READ_RECOVERY_PAGE, *PMODE_READ_RECOVERY_PAGE;
+
+typedef struct _MODE_INFO_EXCEPTIONS {
+  UCHAR  PageCode : 6;
+  UCHAR  Reserved1 : 1;
+  UCHAR  PSBit : 1;
+  UCHAR  PageLength;
+  _ANONYMOUS_UNION union {
+    UCHAR  Flags;
+    _ANONYMOUS_STRUCT struct {
+      UCHAR  LogErr : 1;
+      UCHAR  Reserved2 : 1;
+      UCHAR  Test : 1;
+      UCHAR  Dexcpt : 1;
+      UCHAR  Reserved3 : 3;
+      UCHAR  Perf : 1;
+    } DUMMYSTRUCTNAME;
+  } DUMMYUNIONNAME;
+  UCHAR  ReportMethod : 4;
+  UCHAR  Reserved4 : 4;
+  UCHAR  IntervalTimer[4];
+  UCHAR  ReportCount[4];
+} MODE_INFO_EXCEPTIONS, *PMODE_INFO_EXCEPTIONS;
+
+/* CDROM audio control */
+#define CDB_AUDIO_PAUSE                   0x00
+#define CDB_AUDIO_RESUME                  0x01
+#define CDB_DEVICE_START                  0x11
+#define CDB_DEVICE_STOP                   0x10
+#define CDB_EJECT_MEDIA                   0x10
+#define CDB_LOAD_MEDIA                    0x01
+#define CDB_SUBCHANNEL_HEADER             0x00
+#define CDB_SUBCHANNEL_BLOCK              0x01
+
+#define CDROM_AUDIO_CONTROL_PAGE          0x0E
+#define MODE_SELECT_IMMEDIATE             0x04
+#define MODE_SELECT_PFBIT                 0x10
+
+#define CDB_USE_MSF                       0x01
+
+typedef struct _PORT_OUTPUT {
+  UCHAR  ChannelSelection;
+  UCHAR  Volume;
+} PORT_OUTPUT, *PPORT_OUTPUT;
+
+typedef struct _AUDIO_OUTPUT {
+  UCHAR  CodePage;
+  UCHAR  ParameterLength;
+  UCHAR  Immediate;
+  UCHAR  Reserved[2];
+  UCHAR  LbaFormat;
+  UCHAR  LogicalBlocksPerSecond[2];
+  PORT_OUTPUT  PortOutput[4];
+} AUDIO_OUTPUT, *PAUDIO_OUTPUT;
+
+/* Multisession CDROMs */
+#define GET_LAST_SESSION 0x01
+#define GET_SESSION_DATA 0x02;
+
+/* Atapi 2.5 changers */
+typedef struct _MECHANICAL_STATUS_INFORMATION_HEADER {
+  UCHAR  CurrentSlot : 5;
+  UCHAR  ChangerState : 2;
+  UCHAR  Fault : 1;
+  UCHAR  Reserved : 5;
+  UCHAR  MechanismState : 3;
+  UCHAR  CurrentLogicalBlockAddress[3];
+  UCHAR  NumberAvailableSlots;
+  UCHAR  SlotTableLength[2];
+} MECHANICAL_STATUS_INFORMATION_HEADER, *PMECHANICAL_STATUS_INFORMATION_HEADER;
+
+typedef struct _SLOT_TABLE_INFORMATION {
+  UCHAR  DiscChanged : 1;
+  UCHAR  Reserved : 6;
+  UCHAR  DiscPresent : 1;
+  UCHAR  Reserved2[3];
+} SLOT_TABLE_INFORMATION, *PSLOT_TABLE_INFORMATION;
+
+typedef struct _MECHANICAL_STATUS {
+  MECHANICAL_STATUS_INFORMATION_HEADER  MechanicalStatusHeader;
+  SLOT_TABLE_INFORMATION  SlotTableInfo[1];
+} MECHANICAL_STATUS, *PMECHANICAL_STATUS;
+
+
+/* Tape definitions */
+typedef struct _TAPE_POSITION_DATA {
+	UCHAR  Reserved1 : 2;
+	UCHAR  BlockPositionUnsupported : 1;
+	UCHAR  Reserved2 : 3;
+	UCHAR  EndOfPartition : 1;
+	UCHAR  BeginningOfPartition : 1;
+	UCHAR  PartitionNumber;
+	USHORT  Reserved3;
+	UCHAR  FirstBlock[4];
+	UCHAR  LastBlock[4];
+	UCHAR  Reserved4;
+	UCHAR  NumberOfBlocks[3];
+	UCHAR  NumberOfBytes[4];
+} TAPE_POSITION_DATA, *PTAPE_POSITION_DATA;
+
+/* This structure is used to convert little endian ULONGs
+   to SCSI CDB big endians values. */
+typedef union _EIGHT_BYTE {
+  _ANONYMOUS_STRUCT struct {
+    UCHAR  Byte0;
+    UCHAR  Byte1;
+    UCHAR  Byte2;
+    UCHAR  Byte3;
+    UCHAR  Byte4;
+    UCHAR  Byte5;
+    UCHAR  Byte6;
+    UCHAR  Byte7;
+  } DUMMYSTRUCTNAME;
+  ULONGLONG  AsULongLong;
+} EIGHT_BYTE, *PEIGHT_BYTE;
+
+typedef union _FOUR_BYTE {
+  _ANONYMOUS_STRUCT struct {
+    UCHAR  Byte0;
+    UCHAR  Byte1;
+    UCHAR  Byte2;
+    UCHAR  Byte3;
+  } DUMMYSTRUCTNAME;
+  ULONG  AsULong;
+} FOUR_BYTE, *PFOUR_BYTE;
+
+typedef union _TWO_BYTE {
+  _ANONYMOUS_STRUCT struct {
+    UCHAR  Byte0;
+    UCHAR  Byte1;
+  } DUMMYSTRUCTNAME;
+  USHORT  AsUShort;
+} TWO_BYTE, *PTWO_BYTE;
+
+/* Byte reversing macro for converting between
+   big- and little-endian formats */
+#define REVERSE_BYTES_QUAD(Destination, Source) { \
+    PEIGHT_BYTE _val1 = (PEIGHT_BYTE)(Destination); \
+    PEIGHT_BYTE _val2 = (PEIGHT_BYTE)(Source); \
+    _val1->Byte7 = _val2->Byte0; \
+    _val1->Byte6 = _val2->Byte1; \
+    _val1->Byte5 = _val2->Byte2; \
+    _val1->Byte4 = _val2->Byte3; \
+    _val1->Byte3 = _val2->Byte4; \
+    _val1->Byte2 = _val2->Byte5; \
+    _val1->Byte1 = _val2->Byte6; \
+    _val1->Byte0 = _val2->Byte7; \
+}
+
+#define REVERSE_BYTES(Destination, Source) { \
+    PFOUR_BYTE _val1 = (PFOUR_BYTE)(Destination); \
+    PFOUR_BYTE _val2 = (PFOUR_BYTE)(Source); \
+    _val1->Byte3 = _val2->Byte0; \
+    _val1->Byte2 = _val2->Byte1; \
+    _val1->Byte1 = _val2->Byte2; \
+    _val1->Byte0 = _val2->Byte3; \
+}
+
+#define REVERSE_BYTES_SHORT(Destination, Source) { \
+  PTWO_BYTE _val1 = (PTWO_BYTE)(Destination); \
+  PTWO_BYTE _val2 = (PTWO_BYTE)(Source); \
+  _val1->Byte1 = _val2->Byte0; \
+  _val1->Byte0 = _val2->Byte1; \
+}
+
+#define REVERSE_SHORT(Short) { \
+  UCHAR _val; \
+  PTWO_BYTE _val2 = (PTWO_BYTE)(Short); \
+  _val = _val2->Byte0; \
+  _val2->Byte0 = _val2->Byte1; \
+  _val2->Byte1 = _val; \
+}
+
+#define REVERSE_LONG(Long) { \
+  UCHAR _val; \
+  PFOUR_BYTE _val2 = (PFOUR_BYTE)(Long); \
+  _val = _val2->Byte3; \
+  _val2->Byte3 = _val2->Byte0; \
+  _val2->Byte0 = _val; \
+  _val = _val2->Byte2; \
+  _val2->Byte2 = _val2->Byte1; \
+  _val2->Byte1 = _val; \
+}
+
+#define WHICH_BIT(Data, Bit) { \
+  UCHAR _val; \
+  for (_val = 0; _val < 32; _val++) { \
+    if (((Data) >> _val) == 1) { \
+      break; \
+    } \
+  } \
+  ASSERT(_val != 32); \
+  (Bit) = _val; \
+}
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __SCSI_H */
Index: Daodan/MinGW/include/ddk/scsiscan.h
===================================================================
--- Daodan/MinGW/include/ddk/scsiscan.h	(revision 1046)
+++ Daodan/MinGW/include/ddk/scsiscan.h	(revision 1046)
@@ -0,0 +1,130 @@
+/*
+ * scsiscan.h
+ *
+ * SCSI scanner driver interface
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __SCSISCAN_H
+#define __SCSISCAN_H
+
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "ntddk.h"
+
+#define IOCTL_SCSISCAN_CMD \
+  CTL_CODE(FILE_DEVICE_SCANNER, SCSISCAN_CMD_CODE, METHOD_OUT_DIRECT, FILE_ANY_ACCESS)
+
+#define IOCTL_SCSISCAN_LOCKDEVICE \
+  CTL_CODE(FILE_DEVICE_SCANNER, SCSISCAN_LOCKDEVICE, METHOD_OUT_DIRECT, FILE_ANY_ACCESS)
+
+#define IOCTL_SCSISCAN_SET_TIMEOUT \
+  CTL_CODE(FILE_DEVICE_SCANNER, SCSISCAN_SET_TIMEOUT,	METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_SCSISCAN_GET_INFO \
+  CTL_CODE(FILE_DEVICE_SCANNER, SCSISCAN_GET_INFO, METHOD_OUT_DIRECT, FILE_ANY_ACCESS)
+
+#define IOCTL_SCSISCAN_UNLOCKDEVICE \
+  CTL_CODE(FILE_DEVICE_SCANNER, SCSISCAN_UNLOCKDEVICE, METHOD_OUT_DIRECT, FILE_ANY_ACCESS)
+
+
+/* SCSISCAN_CMD.SrbFlags constants */
+#define SRB_FLAGS_DISABLE_SYNCH_TRANSFER  0x00000008
+#define SRB_FLAGS_DISABLE_AUTOSENSE       0x00000020
+#define SRB_FLAGS_DATA_IN                 0x00000040
+#define SRB_FLAGS_DATA_OUT                0x00000080
+#define SRB_FLAGS_NO_DATA_TRANSFER        0x00000000
+
+/* SCSISCAN_CMD.pSrbStatus constants */
+#define SRB_STATUS_PENDING                  0x00
+#define SRB_STATUS_SUCCESS                  0x01
+#define SRB_STATUS_ABORTED                  0x02
+#define SRB_STATUS_ABORT_FAILED             0x03
+#define SRB_STATUS_ERROR                    0x04
+#define SRB_STATUS_BUSY                     0x05
+#define SRB_STATUS_INVALID_REQUEST          0x06
+#define SRB_STATUS_INVALID_PATH_ID          0x07
+#define SRB_STATUS_NO_DEVICE                0x08
+#define SRB_STATUS_TIMEOUT                  0x09
+#define SRB_STATUS_SELECTION_TIMEOUT        0x0A
+#define SRB_STATUS_COMMAND_TIMEOUT          0x0B
+#define SRB_STATUS_MESSAGE_REJECTED         0x0D
+#define SRB_STATUS_BUS_RESET                0x0E
+#define SRB_STATUS_PARITY_ERROR             0x0F
+#define SRB_STATUS_REQUEST_SENSE_FAILED     0x10
+#define SRB_STATUS_NO_HBA                   0x11
+#define SRB_STATUS_DATA_OVERRUN             0x12
+#define SRB_STATUS_UNEXPECTED_BUS_FREE      0x13
+#define SRB_STATUS_PHASE_SEQUENCE_FAILURE   0x14
+#define SRB_STATUS_BAD_SRB_BLOCK_LENGTH     0x15
+#define SRB_STATUS_REQUEST_FLUSHED          0x16
+#define SRB_STATUS_INVALID_LUN              0x20
+#define SRB_STATUS_INVALID_TARGET_ID        0x21
+#define SRB_STATUS_BAD_FUNCTION             0x22
+#define SRB_STATUS_ERROR_RECOVERY           0x23
+#define SRB_STATUS_QUEUE_FROZEN             0x40
+#define SRB_STATUS_AUTOSENSE_VALID          0x80
+
+#define SRB_STATUS(Status) (Status & ~(SRB_STATUS_AUTOSENSE_VALID | SRB_STATUS_QUEUE_FROZEN))
+
+typedef struct _SCSISCAN_CMD {
+  ULONG  Reserved1;
+  ULONG  Size;
+  ULONG  SrbFlags;
+  UCHAR  CdbLength;
+  UCHAR  SenseLength;
+  UCHAR  Reserved2;
+  UCHAR  Reserved3;
+  ULONG  TransferLength;
+  UCHAR  Cdb[16];
+  PUCHAR  pSrbStatus;
+  PUCHAR  pSenseBuffer;
+} SCSISCAN_CMD, *PSCSISCAN_CMD;
+
+#define MAX_STRING 128
+
+/* SCSISCAN_INFO.Flags constants */
+#define SCSISCAN_RESERVED         0x000
+#define SCSISCAN_CMD_CODE         0x004
+#define SCSISCAN_LOCKDEVICE       0x005
+#define SCSISCAN_UNLOCKDEVICE     0x006
+#define SCSISCAN_SET_TIMEOUT      0x007
+#define SCSISCAN_GET_INFO         0x008
+
+typedef struct _SCSISCAN_INFO {
+  ULONG  Size;
+  ULONG  Flags;
+  UCHAR  PortNumber;
+  UCHAR  PathId;
+  UCHAR  TargetId;
+  UCHAR  Lun;
+  UCHAR  AdapterName[MAX_STRING];
+  ULONG  Reserved;
+} SCSISCAN_INFO, *PSCSISCAN_INFO;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __SCSISCAN_H */
Index: Daodan/MinGW/include/ddk/scsiwmi.h
===================================================================
--- Daodan/MinGW/include/ddk/scsiwmi.h	(revision 1046)
+++ Daodan/MinGW/include/ddk/scsiwmi.h	(revision 1046)
@@ -0,0 +1,215 @@
+/*
+ * scsiwmi.h
+ *
+ * SCSI WMILIB interface.
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __SCSIWMI_H
+#define __SCSIWMI_H
+
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#pragma pack(push,4)
+
+#include "ntddk.h"
+#include "srb.h"
+
+
+typedef struct _SCSIWMI_REQUEST_CONTEXT {
+  PVOID  UserContext;
+  ULONG  BufferSize;
+  PUCHAR  Buffer;
+  UCHAR  MinorFunction;
+  UCHAR  ReturnStatus;
+  ULONG  ReturnSize;
+} SCSIWMI_REQUEST_CONTEXT, *PSCSIWMI_REQUEST_CONTEXT;
+
+#ifdef _GUID_DEFINED
+# warning _GUID_DEFINED is deprecated, use GUID_DEFINED instead
+#endif
+
+#if ! (defined _GUID_DEFINED || defined GUID_DEFINED)
+#define GUID_DEFINED
+typedef struct _GUID {
+    unsigned long  Data1;
+    unsigned short Data2;
+    unsigned short Data3;
+    unsigned char  Data4[ 8 ];
+} GUID;
+#endif
+
+#ifndef _LPCGUID_DEFINED
+#define _LPCGUID_DEFINED
+typedef const GUID *LPCGUID;
+#endif
+
+typedef struct _SCSIWMIGUIDREGINFO {
+  LPCGUID  Guid;
+  ULONG  InstanceCount;
+  ULONG  Flags;
+} SCSIWMIGUIDREGINFO, *PSCSIWMIGUIDREGINFO;
+
+typedef UCHAR DDKAPI
+(*PSCSIWMI_QUERY_REGINFO)(
+  /*IN*/ PVOID  DeviceContext,
+  /*IN*/ PSCSIWMI_REQUEST_CONTEXT  RequestContext,
+  /*OUT*/ PWCHAR  *MofResourceName);
+
+typedef BOOLEAN DDKAPI
+(*PSCSIWMI_QUERY_DATABLOCK)(
+  /*IN*/ PVOID  Context,
+  /*IN*/ PSCSIWMI_REQUEST_CONTEXT  DispatchContext,
+  /*IN*/ ULONG  GuidIndex,
+  /*IN*/ ULONG  InstanceIndex,
+  /*IN*/ ULONG  InstanceCount,
+  /*IN OUT*/ PULONG  InstanceLengthArray,
+  /*IN*/ ULONG  BufferAvail,
+  /*OUT*/ PUCHAR  Buffer);
+
+typedef BOOLEAN DDKAPI
+(*PSCSIWMI_SET_DATABLOCK)(
+  /*IN*/ PVOID  DeviceContext,
+  /*IN*/ PSCSIWMI_REQUEST_CONTEXT  RequestContext,
+  /*IN*/ ULONG  GuidIndex,
+  /*IN*/ ULONG  InstanceIndex,
+  /*IN*/ ULONG  BufferSize,
+  /*IN*/ PUCHAR  Buffer);
+
+typedef BOOLEAN DDKAPI
+(*PSCSIWMI_SET_DATAITEM)(
+  /*IN*/ PVOID  DeviceContext,
+  /*IN*/ PSCSIWMI_REQUEST_CONTEXT  RequestContext,
+  /*IN*/ ULONG  GuidIndex,
+  /*IN*/ ULONG  InstanceIndex,
+  /*IN*/ ULONG  DataItemId,
+  /*IN*/ ULONG  BufferSize,
+  /*IN*/ PUCHAR  Buffer);
+
+typedef BOOLEAN DDKAPI
+(*PSCSIWMI_EXECUTE_METHOD)(
+  /*IN*/ PVOID  DeviceContext,
+  /*IN*/ PSCSIWMI_REQUEST_CONTEXT  RequestContext,
+  /*IN*/ ULONG  GuidIndex,
+  /*IN*/ ULONG  InstanceIndex,
+  /*IN*/ ULONG  MethodId,
+  /*IN*/ ULONG  InBufferSize,
+  /*IN*/ ULONG  OutBufferSize,
+  /*IN OUT*/ PUCHAR  Buffer);
+
+typedef enum _SCSIWMI_ENABLE_DISABLE_CONTROL {
+	ScsiWmiEventControl,
+	ScsiWmiDataBlockControl
+} SCSIWMI_ENABLE_DISABLE_CONTROL;
+
+typedef BOOLEAN DDKAPI
+(*PSCSIWMI_FUNCTION_CONTROL)(
+  /*IN*/ PVOID  DeviceContext,
+  /*IN*/ PSCSIWMI_REQUEST_CONTEXT  RequestContext,
+  /*IN*/ ULONG  GuidIndex,
+  /*IN*/ SCSIWMI_ENABLE_DISABLE_CONTROL  Function,
+  /*IN*/ BOOLEAN  Enable);
+
+typedef struct _SCSIWMILIB_CONTEXT {
+  ULONG  GuidCount;
+  PSCSIWMIGUIDREGINFO  GuidList;
+  PSCSIWMI_QUERY_REGINFO  QueryWmiRegInfo;
+  PSCSIWMI_QUERY_DATABLOCK  QueryWmiDataBlock;
+  PSCSIWMI_SET_DATABLOCK  SetWmiDataBlock;
+  PSCSIWMI_SET_DATAITEM  SetWmiDataItem;
+  PSCSIWMI_EXECUTE_METHOD  ExecuteWmiMethod;
+  PSCSIWMI_FUNCTION_CONTROL  WmiFunctionControl;
+} SCSI_WMILIB_CONTEXT, *PSCSI_WMILIB_CONTEXT;
+
+SCSIPORTAPI
+BOOLEAN
+DDKAPI
+ScsiPortWmiDispatchFunction(
+  /*IN*/ PSCSI_WMILIB_CONTEXT  WmiLibInfo,
+  /*IN*/ UCHAR  MinorFunction,
+  /*IN*/ PVOID  DeviceContext,
+  /*IN*/ PSCSIWMI_REQUEST_CONTEXT  RequestContext,
+  /*IN*/ PVOID  DataPath,
+  /*IN*/ ULONG  BufferSize,
+  /*IN*/ PVOID  Buffer);
+
+#define ScsiPortWmiFireAdapterEvent(  \
+  HwDeviceExtension,                  \
+  Guid,                               \
+  InstanceIndex,                      \
+  EventDataSize,                      \
+  EventData)                          \
+    ScsiPortWmiFireLogicalUnitEvent(  \
+	  HwDeviceExtension,                \
+	  0xff,                             \
+	  0,                                \
+	  0,                                \
+	  Guid,                             \
+	  InstanceIndex,                    \
+	  EventDataSize,                    \
+	  EventData)
+
+/*
+ * ULONG
+ * ScsiPortWmiGetReturnSize(
+ *   PSCSIWMI_REQUEST_CONTEXT  RequestContext);
+ */
+#define ScsiPortWmiGetReturnSize(RequestContext) \
+  ((RequestContext)->ReturnSize)
+
+/* UCHAR
+ * ScsiPortWmiGetReturnStatus(
+ *   PSCSIWMI_REQUEST_CONTEXT  RequestContext);
+ */
+#define ScsiPortWmiGetReturnStatus(RequestContext) \
+  ((RequestContext)->ReturnStatus)
+
+SCSIPORTAPI
+VOID
+DDKAPI
+ScsiPortWmiPostProcess(
+  /*IN*/ PSCSIWMI_REQUEST_CONTEXT  RequestContext,
+  /*IN*/ UCHAR  SrbStatus,
+  /*IN*/ ULONG  BufferUsed);
+
+SCSIPORTAPI
+VOID
+DDKAPI
+ScsiPortWmiFireLogicalUnitEvent(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ UCHAR  PathId,
+  /*IN*/ UCHAR  TargetId,
+  /*IN*/ UCHAR  Lun,
+  /*IN*/ LPGUID  Guid,
+  /*IN*/ ULONG  InstanceIndex,
+  /*IN*/ ULONG  EventDataSize,
+  /*IN*/ PVOID  EventData);
+
+#pragma pack(pop)
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __SCSIWMI_H */
Index: Daodan/MinGW/include/ddk/smbus.h
===================================================================
--- Daodan/MinGW/include/ddk/smbus.h	(revision 1046)
+++ Daodan/MinGW/include/ddk/smbus.h	(revision 1046)
@@ -0,0 +1,190 @@
+/*
+ * smbus.h
+ *
+ * System Management Bus driver interface
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __SMBUS_H
+#define __SMBUS_H
+
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#if !defined(SMBCLASS)
+  #define SMBCLASSAPI DECLSPEC_IMPORT
+#else
+  #define SMBCLASSAPI DECLSPEC_EXPORT
+#endif
+
+#define SMB_BUS_REQUEST \
+  CTL_CODE(FILE_DEVICE_UNKNOWN, 0, METHOD_NEITHER, FILE_ANY_ACCESS)
+
+#define SMB_DEREGISTER_ALARM_NOTIFY \
+  CTL_CODE(FILE_DEVICE_UNKNOWN, 2, METHOD_NEITHER, FILE_ANY_ACCESS)
+
+#define SMB_REGISTER_ALARM_NOTIFY \
+  CTL_CODE(FILE_DEVICE_UNKNOWN, 1, METHOD_NEITHER, FILE_ANY_ACCESS)
+
+
+struct _SMB_CLASS;
+
+#define SMB_MAX_DATA_SIZE                 32
+
+/* SMB_REQUEST.Status constants */
+#define SMB_STATUS_OK                     0x00
+#define SMB_UNKNOWN_FAILURE               0x07
+#define SMB_ADDRESS_NOT_ACKNOWLEDGED      0x10
+#define SMB_DEVICE_ERROR                  0x11
+#define SMB_COMMAND_ACCESS_DENIED         0x12
+#define SMB_UNKNOWN_ERROR                 0x13
+#define SMB_DEVICE_ACCESS_DENIED          0x17
+#define SMB_TIMEOUT                       0x18
+#define SMB_UNSUPPORTED_PROTOCOL          0x19
+#define SMB_BUS_BUSY                      0x1A
+
+/* SMB_REQUEST.Protocol constants */
+#define SMB_WRITE_QUICK                   0x00
+#define SMB_READ_QUICK                    0x01
+#define SMB_SEND_BYTE                     0x02
+#define SMB_RECEIVE_BYTE                  0x03
+#define SMB_WRITE_BYTE                    0x04
+#define SMB_READ_BYTE                     0x05
+#define SMB_WRITE_WORD                    0x06
+#define SMB_READ_WORD                     0x07
+#define SMB_WRITE_BLOCK                   0x08
+#define SMB_READ_BLOCK                    0x09
+#define SMB_PROCESS_CALL                  0x0A
+#define SMB_MAXIMUM_PROTOCOL              0x0A
+
+typedef struct _SMB_REQUEST {
+  UCHAR  Status;
+  UCHAR  Protocol;
+  UCHAR  Address;
+  UCHAR  Command;
+  UCHAR  BlockLength;
+  UCHAR  Data[SMB_MAX_DATA_SIZE];
+} SMB_REQUEST, *PSMB_REQUEST;
+
+typedef VOID STDCALL
+(*SMB_ALARM_NOTIFY)(
+  PVOID  Context,
+  UCHAR  Address,
+  USHORT  Data);
+
+typedef struct _SMB_REGISTER_ALARM {
+  UCHAR  MinAddress;
+  UCHAR  MaxAddress;
+  SMB_ALARM_NOTIFY  NotifyFunction;
+  PVOID  NotifyContext;
+} SMB_REGISTER_ALARM, *PSMB_REGISTER_ALARM;
+
+/* SMB_CLASS.XxxVersion constants */
+#define SMB_CLASS_MAJOR_VERSION           0x0001
+#define SMB_CLASS_MINOR_VERSION           0x0000
+
+typedef NTSTATUS DDKAPI
+(*SMB_RESET_DEVICE)(
+  /*IN*/ struct _SMB_CLASS  *SmbClass,
+  /*IN*/ PVOID  SmbMiniport);
+
+typedef VOID DDKAPI
+(*SMB_START_IO)(
+  /*IN*/ struct _SMB_CLASS  *SmbClass,
+  /*IN*/ PVOID  SmbMiniport);
+
+typedef NTSTATUS DDKAPI
+(*SMB_STOP_DEVICE)(
+  /*IN*/ struct _SMB_CLASS  *SmbClass,
+  /*IN*/ PVOID  SmbMiniport);
+
+typedef struct _SMB_CLASS {
+  USHORT  MajorVersion;
+  USHORT  MinorVersion;
+  PVOID  Miniport;
+  PDEVICE_OBJECT  DeviceObject;
+  PDEVICE_OBJECT  PDO;
+  PDEVICE_OBJECT  LowerDeviceObject;
+  PIRP  CurrentIrp;
+  PSMB_REQUEST  CurrentSmb;
+  SMB_RESET_DEVICE  ResetDevice;
+  SMB_START_IO  StartIo;
+  SMB_STOP_DEVICE  StopDevice;
+} SMB_CLASS, *PSMB_CLASS;
+
+SMBCLASSAPI
+VOID
+DDKAPI
+SmbClassAlarm(
+  /*IN*/ PSMB_CLASS  SmbClass,
+  /*IN*/ UCHAR  Address,
+  /*IN*/ USHORT  Data);
+
+SMBCLASSAPI
+VOID
+DDKAPI
+SmbClassCompleteRequest(
+  /*IN*/ PSMB_CLASS  SmbClass);
+
+typedef NTSTATUS DDKAPI
+(*PSMB_INITIALIZE_MINIPORT)(
+  /*IN*/ PSMB_CLASS  SmbClass,
+  /*IN*/ PVOID  MiniportExtension,
+  /*IN*/ PVOID  MiniportContext);
+
+SMBCLASSAPI
+NTSTATUS
+DDKAPI
+SmbClassCreateFdo(
+  /*IN*/ PDRIVER_OBJECT  DriverObject,
+  /*IN*/ PDEVICE_OBJECT  PDO,
+  /*IN*/ ULONG  MiniportExtensionSize,
+  /*IN*/ PSMB_INITIALIZE_MINIPORT  MiniportInitialize,
+  /*IN*/ PVOID  MiniportContext,
+  /*OUT*/ PDEVICE_OBJECT  *FDO);
+
+SMBCLASSAPI
+NTSTATUS
+DDKAPI
+SmbClassInitializeDevice(
+  /*IN*/ ULONG  MajorVersion,
+  /*IN*/ ULONG  MinorVersion,
+  /*IN*/ PDRIVER_OBJECT  DriverObject);
+
+SMBCLASSAPI
+VOID
+DDKAPI
+SmbClassLockDevice(
+  /*IN*/ PSMB_CLASS  SmbClass);
+
+SMBCLASSAPI
+VOID
+DDKAPI
+SmbClassUnlockDevice(
+  /*IN*/ PSMB_CLASS  SmbClass);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __SMBUS_H */
Index: Daodan/MinGW/include/ddk/srb.h
===================================================================
--- Daodan/MinGW/include/ddk/srb.h	(revision 1046)
+++ Daodan/MinGW/include/ddk/srb.h	(revision 1046)
@@ -0,0 +1,753 @@
+/*
+ * scsi.h
+ *
+ * Interface between SCSI miniport drivers and the SCSI port driver.
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __SRB_H
+#define __SRB_H
+
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "ntddk.h"
+
+#if defined(_SCSIPORT_)
+  #define SCSIPORTAPI DECLSPEC_EXPORT
+#else
+  #define SCSIPORTAPI DECLSPEC_IMPORT
+#endif
+
+#ifdef DBG
+#define DebugPrint(x) ScsiDebugPrint x
+#else
+#define DebugPrint(x)
+#endif
+
+typedef PHYSICAL_ADDRESS SCSI_PHYSICAL_ADDRESS, *PSCSI_PHYSICAL_ADDRESS;
+
+#define SP_UNINITIALIZED_VALUE            ((ULONG) ~0)
+#define SP_UNTAGGED                       ((UCHAR) ~0)
+
+#define SRB_SIMPLE_TAG_REQUEST            0x20
+#define SRB_HEAD_OF_QUEUE_TAG_REQUEST     0x21
+#define SRB_ORDERED_QUEUE_TAG_REQUEST     0x22
+
+#define SRB_STATUS_QUEUE_FROZEN           0x40
+#define SRB_STATUS_AUTOSENSE_VALID        0x80
+
+#define SRB_STATUS(Status) \
+  (Status & ~(SRB_STATUS_AUTOSENSE_VALID | SRB_STATUS_QUEUE_FROZEN))
+
+#define MAXIMUM_CDB_SIZE                  12
+
+#ifdef DBG
+#define SCSI_PORT_SIGNATURE               0x54524f50
+#endif
+
+
+#define SCSI_MAXIMUM_LOGICAL_UNITS        8
+#define SCSI_MAXIMUM_TARGETS_PER_BUS      128
+#define SCSI_MAXIMUM_LUNS_PER_TARGET      255
+#define SCSI_MAXIMUM_BUSES                8
+#define SCSI_MINIMUM_PHYSICAL_BREAKS      16
+#define SCSI_MAXIMUM_PHYSICAL_BREAKS      255
+#define SCSI_MAXIMUM_TARGETS              8
+
+#define SRB_FUNCTION_WMI                  0x17
+
+#define SRB_WMI_FLAGS_ADAPTER_REQUEST     0x0001
+
+#define SP_BUS_PARITY_ERROR               0x0001
+#define SP_UNEXPECTED_DISCONNECT          0x0002
+#define SP_INVALID_RESELECTION            0x0003
+#define SP_BUS_TIME_OUT                   0x0004
+#define SP_PROTOCOL_ERROR                 0x0005
+#define SP_INTERNAL_ADAPTER_ERROR         0x0006
+#define SP_REQUEST_TIMEOUT                0x0007
+#define SP_IRQ_NOT_RESPONDING             0x0008
+#define SP_BAD_FW_WARNING                 0x0009
+#define SP_BAD_FW_ERROR                   0x000a
+#define SP_LOST_WMI_MINIPORT_REQUEST      0x000b
+
+/* SCSI_REQUEST_BLOCK.Function constants */
+#define SRB_FUNCTION_EXECUTE_SCSI         0x00
+#define SRB_FUNCTION_CLAIM_DEVICE         0x01
+#define SRB_FUNCTION_IO_CONTROL           0x02
+#define SRB_FUNCTION_RECEIVE_EVENT        0x03
+#define SRB_FUNCTION_RELEASE_QUEUE        0x04
+#define SRB_FUNCTION_ATTACH_DEVICE        0x05
+#define SRB_FUNCTION_RELEASE_DEVICE       0x06
+#define SRB_FUNCTION_SHUTDOWN             0x07
+#define SRB_FUNCTION_FLUSH                0x08
+#define SRB_FUNCTION_ABORT_COMMAND        0x10
+#define SRB_FUNCTION_RELEASE_RECOVERY     0x11
+#define SRB_FUNCTION_RESET_BUS            0x12
+#define SRB_FUNCTION_RESET_DEVICE         0x13
+#define SRB_FUNCTION_TERMINATE_IO         0x14
+#define SRB_FUNCTION_FLUSH_QUEUE          0x15
+#define SRB_FUNCTION_REMOVE_DEVICE        0x16
+#define SRB_FUNCTION_WMI                  0x17
+#define SRB_FUNCTION_LOCK_QUEUE           0x18
+#define SRB_FUNCTION_UNLOCK_QUEUE         0x19
+#define SRB_FUNCTION_RESET_LOGICAL_UNIT   0x20
+
+/* SCSI_REQUEST_BLOCK.SrbStatus constants */
+#define SRB_STATUS_PENDING                0x00
+#define SRB_STATUS_SUCCESS                0x01
+#define SRB_STATUS_ABORTED                0x02
+#define SRB_STATUS_ABORT_FAILED           0x03
+#define SRB_STATUS_ERROR                  0x04
+#define SRB_STATUS_BUSY                   0x05
+#define SRB_STATUS_INVALID_REQUEST        0x06
+#define SRB_STATUS_INVALID_PATH_ID        0x07
+#define SRB_STATUS_NO_DEVICE              0x08
+#define SRB_STATUS_TIMEOUT                0x09
+#define SRB_STATUS_SELECTION_TIMEOUT      0x0A
+#define SRB_STATUS_COMMAND_TIMEOUT        0x0B
+#define SRB_STATUS_MESSAGE_REJECTED       0x0D
+#define SRB_STATUS_BUS_RESET              0x0E
+#define SRB_STATUS_PARITY_ERROR           0x0F
+#define SRB_STATUS_REQUEST_SENSE_FAILED   0x10
+#define SRB_STATUS_NO_HBA                 0x11
+#define SRB_STATUS_DATA_OVERRUN           0x12
+#define SRB_STATUS_UNEXPECTED_BUS_FREE    0x13
+#define SRB_STATUS_PHASE_SEQUENCE_FAILURE 0x14
+#define SRB_STATUS_BAD_SRB_BLOCK_LENGTH   0x15
+#define SRB_STATUS_REQUEST_FLUSHED        0x16
+#define SRB_STATUS_INVALID_LUN            0x20
+#define SRB_STATUS_INVALID_TARGET_ID      0x21
+#define SRB_STATUS_BAD_FUNCTION           0x22
+#define SRB_STATUS_ERROR_RECOVERY         0x23
+#define SRB_STATUS_NOT_POWERED            0x24
+#define SRB_STATUS_INTERNAL_ERROR         0x30
+
+/* SCSI_REQUEST_BLOCK.SrbFlags constants */
+#define SRB_FLAGS_QUEUE_ACTION_ENABLE       0x00000002
+#define SRB_FLAGS_DISABLE_DISCONNECT        0x00000004
+#define SRB_FLAGS_DISABLE_SYNCH_TRANSFER    0x00000008
+#define SRB_FLAGS_BYPASS_FROZEN_QUEUE       0x00000010
+#define SRB_FLAGS_DISABLE_AUTOSENSE         0x00000020
+#define SRB_FLAGS_DATA_IN                   0x00000040
+#define SRB_FLAGS_DATA_OUT                  0x00000080
+#define SRB_FLAGS_NO_DATA_TRANSFER          0x00000000
+#define SRB_FLAGS_UNSPECIFIED_DIRECTION     (SRB_FLAGS_DATA_IN | SRB_FLAGS_DATA_OUT)
+#define SRB_FLAGS_NO_QUEUE_FREEZE           0x00000100
+#define SRB_FLAGS_ADAPTER_CACHE_ENABLE      0x00000200
+#define SRB_FLAGS_FREE_SENSE_BUFFER         0x00000400
+#define SRB_FLAGS_IS_ACTIVE                 0x00010000
+#define SRB_FLAGS_ALLOCATED_FROM_ZONE       0x00020000
+#define SRB_FLAGS_SGLIST_FROM_POOL          0x00040000
+#define SRB_FLAGS_BYPASS_LOCKED_QUEUE       0x00080000
+#define SRB_FLAGS_NO_KEEP_AWAKE             0x00100000
+#define SRB_FLAGS_PORT_DRIVER_ALLOCSENSE    0x00200000
+#define SRB_FLAGS_PORT_DRIVER_SENSEHASPORT  0x00400000
+#define SRB_FLAGS_DONT_START_NEXT_PACKET    0x00800000
+#define SRB_FLAGS_PORT_DRIVER_RESERVED      0x0F000000
+#define SRB_FLAGS_CLASS_DRIVER_RESERVED     0xF0000000
+
+typedef struct _SCSI_REQUEST_BLOCK {
+  USHORT  Length;
+  UCHAR  Function;
+  UCHAR  SrbStatus;
+  UCHAR  ScsiStatus;
+  UCHAR  PathId;
+  UCHAR  TargetId;
+  UCHAR  Lun;
+  UCHAR  QueueTag;
+  UCHAR  QueueAction;
+  UCHAR  CdbLength;
+  UCHAR  SenseInfoBufferLength;
+  ULONG  SrbFlags;
+  ULONG  DataTransferLength;
+  ULONG  TimeOutValue;
+  PVOID  DataBuffer;
+  PVOID  SenseInfoBuffer;
+  struct _SCSI_REQUEST_BLOCK  *NextSrb;
+  PVOID  OriginalRequest;
+  PVOID  SrbExtension;
+  _ANONYMOUS_UNION union {
+    ULONG  InternalStatus;
+    ULONG  QueueSortKey;
+  } DUMMYUNIONNAME;
+#if defined(_WIN64)
+  ULONG Reserved;
+#endif
+  UCHAR  Cdb[16];
+} SCSI_REQUEST_BLOCK, *PSCSI_REQUEST_BLOCK;
+
+#define SCSI_REQUEST_BLOCK_SIZE           sizeof(SCSI_REQUEST_BLOCK)
+
+typedef struct _ACCESS_RANGE {
+  SCSI_PHYSICAL_ADDRESS  RangeStart;
+  ULONG  RangeLength;
+  BOOLEAN  RangeInMemory;
+} ACCESS_RANGE, *PACCESS_RANGE;
+
+/* PORT_CONFIGURATION_INFORMATION.Dma64BitAddresses constants */
+#define SCSI_DMA64_MINIPORT_SUPPORTED     0x01
+#define SCSI_DMA64_SYSTEM_SUPPORTED       0x80
+
+typedef struct _PORT_CONFIGURATION_INFORMATION {
+  ULONG  Length;
+  ULONG  SystemIoBusNumber;
+  INTERFACE_TYPE  AdapterInterfaceType;
+  ULONG  BusInterruptLevel;
+  ULONG  BusInterruptVector;
+  KINTERRUPT_MODE  InterruptMode;
+  ULONG  MaximumTransferLength;
+  ULONG  NumberOfPhysicalBreaks;
+  ULONG  DmaChannel;
+  ULONG  DmaPort;
+  DMA_WIDTH  DmaWidth;
+  DMA_SPEED  DmaSpeed;
+  ULONG  AlignmentMask;
+  ULONG  NumberOfAccessRanges;
+  ACCESS_RANGE  (*AccessRanges)[];
+  PVOID  Reserved;
+  UCHAR  NumberOfBuses;
+  UCHAR  InitiatorBusId[8];
+  BOOLEAN  ScatterGather;
+  BOOLEAN  Master;
+  BOOLEAN  CachesData;
+  BOOLEAN  AdapterScansDown;
+  BOOLEAN  AtdiskPrimaryClaimed;
+  BOOLEAN  AtdiskSecondaryClaimed;
+  BOOLEAN  Dma32BitAddresses;
+  BOOLEAN  DemandMode;
+  BOOLEAN  MapBuffers;
+  BOOLEAN  NeedPhysicalAddresses;
+  BOOLEAN  TaggedQueuing;
+  BOOLEAN  AutoRequestSense;
+  BOOLEAN  MultipleRequestPerLu;
+  BOOLEAN  ReceiveEvent;
+  BOOLEAN  RealModeInitialized;
+  BOOLEAN  BufferAccessScsiPortControlled;
+  UCHAR  MaximumNumberOfTargets;
+  UCHAR  ReservedUchars[2];
+  ULONG  SlotNumber;
+  ULONG  BusInterruptLevel2;
+  ULONG  BusInterruptVector2;
+  KINTERRUPT_MODE  InterruptMode2;
+  ULONG  DmaChannel2;
+  ULONG  DmaPort2;
+  DMA_WIDTH  DmaWidth2;
+  DMA_SPEED  DmaSpeed2;
+  ULONG  DeviceExtensionSize;
+  ULONG  SpecificLuExtensionSize;
+  ULONG  SrbExtensionSize;
+  UCHAR  Dma64BitAddresses;
+  BOOLEAN  ResetTargetSupported;
+  UCHAR  MaximumNumberOfLogicalUnits;
+  BOOLEAN  WmiDataProvider;
+} PORT_CONFIGURATION_INFORMATION, *PPORT_CONFIGURATION_INFORMATION;
+
+#define CONFIG_INFO_VERSION_2             sizeof(PORT_CONFIGURATION_INFORMATION)
+
+typedef enum _SCSI_NOTIFICATION_TYPE {
+	RequestComplete,
+	NextRequest,
+	NextLuRequest,
+	ResetDetected,
+	CallDisableInterrupts,
+	CallEnableInterrupts,
+	RequestTimerCall,
+	BusChangeDetected,
+	WMIEvent,
+	WMIReregister
+} SCSI_NOTIFICATION_TYPE, *PSCSI_NOTIFICATION_TYPE;
+
+#ifdef __GNUC__
+__extension__ /* enums limited to range of integer */
+#endif
+typedef enum _SCSI_ADAPTER_CONTROL_TYPE {
+	ScsiQuerySupportedControlTypes = 0,
+	ScsiStopAdapter,
+	ScsiRestartAdapter,
+	ScsiSetBootConfig,
+	ScsiSetRunningConfig,
+	ScsiAdapterControlMax,
+	MakeAdapterControlTypeSizeOfUlong = 0xffffffff
+} SCSI_ADAPTER_CONTROL_TYPE, *PSCSI_ADAPTER_CONTROL_TYPE;
+
+typedef enum _SCSI_ADAPTER_CONTROL_STATUS {
+	ScsiAdapterControlSuccess = 0,
+	ScsiAdapterControlUnsuccessful
+} SCSI_ADAPTER_CONTROL_STATUS, *PSCSI_ADAPTER_CONTROL_STATUS;
+
+typedef struct _SCSI_SUPPORTED_CONTROL_TYPE_LIST {
+	ULONG MaxControlType;
+	BOOLEAN SupportedTypeList[0];
+} SCSI_SUPPORTED_CONTROL_TYPE_LIST, *PSCSI_SUPPORTED_CONTROL_TYPE_LIST;
+
+typedef SCSI_ADAPTER_CONTROL_STATUS DDKAPI
+(*PHW_ADAPTER_CONTROL)(
+  /*IN*/ PVOID DeviceExtension,
+  /*IN*/ SCSI_ADAPTER_CONTROL_TYPE ControlType,
+  /*IN*/ PVOID Parameters);
+
+typedef BOOLEAN DDKAPI
+(*PHW_ADAPTER_STATE)(
+  /*IN*/ PVOID DeviceExtension,
+  /*IN*/ PVOID Context,
+  /*IN*/ BOOLEAN SaveState);
+
+#define SP_RETURN_NOT_FOUND               0
+#define SP_RETURN_FOUND                   1
+#define SP_RETURN_ERROR                   2
+#define SP_RETURN_BAD_CONFIG              3
+
+typedef ULONG DDKAPI
+(*PHW_FIND_ADAPTER)(
+  /*IN*/ PVOID DeviceExtension,
+  /*IN*/ PVOID HwContext,
+  /*IN*/ PVOID BusInformation,
+  /*IN*/ PCHAR ArgumentString,
+  /*IN OUT*/ PPORT_CONFIGURATION_INFORMATION ConfigInfo,
+  /*OUT*/ PBOOLEAN Again);
+
+typedef BOOLEAN DDKAPI
+(*PHW_INITIALIZE)(
+  /*IN*/ PVOID DeviceExtension);
+
+typedef BOOLEAN DDKAPI
+(*PHW_INTERRUPT)(
+  /*IN*/ PVOID DeviceExtension);
+
+typedef BOOLEAN DDKAPI
+(*PHW_RESET_BUS)(
+  /*IN*/ PVOID DeviceExtension,
+  /*IN*/ ULONG PathId);
+
+typedef VOID DDKAPI
+(*PHW_DMA_STARTED)(
+  /*IN*/ PVOID DeviceExtension);
+
+typedef BOOLEAN DDKAPI
+(*PHW_STARTIO)(
+  /*IN*/ PVOID DeviceExtension,
+  /*IN*/ PSCSI_REQUEST_BLOCK Srb);
+
+typedef VOID DDKAPI
+(*PHW_TIMER)(
+  /*IN*/ PVOID DeviceExtension);
+
+typedef struct _HW_INITIALIZATION_DATA {
+  ULONG  HwInitializationDataSize;
+  INTERFACE_TYPE  AdapterInterfaceType;
+  PHW_INITIALIZE  HwInitialize;
+  PHW_STARTIO  HwStartIo;
+  PHW_INTERRUPT  HwInterrupt;
+  PHW_FIND_ADAPTER  HwFindAdapter;
+  PHW_RESET_BUS  HwResetBus;
+  PHW_DMA_STARTED  HwDmaStarted;
+  PHW_ADAPTER_STATE  HwAdapterState;
+  ULONG  DeviceExtensionSize;
+  ULONG  SpecificLuExtensionSize;
+  ULONG  SrbExtensionSize;
+  ULONG  NumberOfAccessRanges;
+  PVOID  Reserved;
+  BOOLEAN  MapBuffers;
+  BOOLEAN  NeedPhysicalAddresses;
+  BOOLEAN  TaggedQueuing;
+  BOOLEAN  AutoRequestSense;
+  BOOLEAN  MultipleRequestPerLu;
+  BOOLEAN  ReceiveEvent;
+  USHORT  VendorIdLength;
+  PVOID  VendorId;
+  USHORT  ReservedUshort;
+  USHORT  DeviceIdLength;
+  PVOID  DeviceId;
+  PHW_ADAPTER_CONTROL  HwAdapterControl;
+} HW_INITIALIZATION_DATA, *PHW_INITIALIZATION_DATA;
+
+SCSIPORTAPI
+VOID
+DDKAPI
+ScsiPortCompleteRequest(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ UCHAR  PathId,
+  /*IN*/ UCHAR  TargetId,
+  /*IN*/ UCHAR  Lun,
+  /*IN*/ UCHAR  SrbStatus);
+
+/*
+ * ULONG
+ * ScsiPortConvertPhysicalAddressToUlong(
+ * IN SCSI_PHYSICAL_ADDRESS  Address);
+ */
+#define ScsiPortConvertPhysicalAddressToUlong(Address) ((Address).LowPart)
+
+SCSIPORTAPI
+SCSI_PHYSICAL_ADDRESS
+DDKAPI
+ScsiPortConvertUlongToPhysicalAddress(
+  /*IN*/ ULONG  UlongAddress);
+
+SCSIPORTAPI
+VOID
+DDKAPI
+ScsiPortFlushDma(
+  /*IN*/ PVOID  DeviceExtension);
+
+SCSIPORTAPI
+VOID
+DDKAPI
+ScsiPortFreeDeviceBase(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ PVOID  MappedAddress);
+
+SCSIPORTAPI
+ULONG
+DDKAPI
+ScsiPortGetBusData(
+  /*IN*/ PVOID  DeviceExtension,
+  /*IN*/ ULONG  BusDataType,
+  /*IN*/ ULONG  SystemIoBusNumber,
+  /*IN*/ ULONG  SlotNumber,
+  /*IN*/ PVOID  Buffer,
+  /*IN*/ ULONG  Length);
+
+SCSIPORTAPI
+PVOID
+DDKAPI
+ScsiPortGetDeviceBase(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ INTERFACE_TYPE  BusType,
+  /*IN*/ ULONG  SystemIoBusNumber,
+  /*IN*/ SCSI_PHYSICAL_ADDRESS  IoAddress,
+  /*IN*/ ULONG  NumberOfBytes,
+  /*IN*/ BOOLEAN  InIoSpace);
+
+SCSIPORTAPI
+PVOID
+DDKAPI
+ScsiPortGetLogicalUnit(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ UCHAR  PathId,
+  /*IN*/ UCHAR  TargetId,
+  /*IN*/ UCHAR  Lun);
+
+SCSIPORTAPI
+SCSI_PHYSICAL_ADDRESS
+DDKAPI
+ScsiPortGetPhysicalAddress(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ PSCSI_REQUEST_BLOCK  Srb  /*OPTIONAL*/,
+  /*IN*/ PVOID  VirtualAddress,
+  /*OUT*/ ULONG  *Length);
+
+SCSIPORTAPI
+PSCSI_REQUEST_BLOCK
+DDKAPI
+ScsiPortGetSrb(
+  /*IN*/ PVOID  DeviceExtension,
+  /*IN*/ UCHAR  PathId,
+  /*IN*/ UCHAR  TargetId,
+  /*IN*/ UCHAR  Lun,
+  /*IN*/ LONG  QueueTag);
+
+SCSIPORTAPI
+PVOID
+DDKAPI
+ScsiPortGetUncachedExtension(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ PPORT_CONFIGURATION_INFORMATION  ConfigInfo,
+  /*IN*/ ULONG  NumberOfBytes);
+
+SCSIPORTAPI
+PVOID
+DDKAPI
+ScsiPortGetVirtualAddress(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ SCSI_PHYSICAL_ADDRESS  PhysicalAddress);
+
+SCSIPORTAPI
+ULONG
+DDKAPI
+ScsiPortInitialize(
+  /*IN*/ PVOID  Argument1,
+  /*IN*/ PVOID  Argument2,
+  /*IN*/ struct _HW_INITIALIZATION_DATA  *HwInitializationData,
+  /*IN*/ PVOID  HwContext  /*OPTIONAL*/);
+
+SCSIPORTAPI
+VOID
+DDKAPI
+ScsiPortIoMapTransfer(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ PSCSI_REQUEST_BLOCK  Srb,
+  /*IN*/ ULONG  LogicalAddress,
+  /*IN*/ ULONG  Length);
+
+SCSIPORTAPI
+VOID
+DDKAPI
+ScsiPortLogError(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ PSCSI_REQUEST_BLOCK  Srb  /*OPTIONAL*/,
+  /*IN*/ UCHAR  PathId,
+  /*IN*/ UCHAR  TargetId,
+  /*IN*/ UCHAR  Lun,
+  /*IN*/ ULONG  ErrorCode,
+  /*IN*/ ULONG  UniqueId);
+
+SCSIPORTAPI
+VOID
+DDKAPI
+ScsiPortMoveMemory(
+  /*IN*/ PVOID  WriteBuffer,
+  /*IN*/ PVOID  ReadBuffer,
+  /*IN*/ ULONG  Length);
+
+SCSIPORTAPI
+VOID
+DDKCDECLAPI
+ScsiPortNotification(
+  /*IN*/ SCSI_NOTIFICATION_TYPE  NotificationType,
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ ...);
+
+SCSIPORTAPI
+VOID
+DDKAPI
+ScsiPortQuerySystemTime(
+  /*OUT*/ PLARGE_INTEGER  CurrentTime);
+
+SCSIPORTAPI
+VOID
+DDKAPI
+ScsiPortReadPortBufferUchar(
+  /*IN*/ PUCHAR  Port,
+  /*IN*/ PUCHAR  Buffer,
+  /*IN*/ ULONG  Count);
+
+SCSIPORTAPI
+VOID
+DDKAPI
+ScsiPortReadPortBufferUlong(
+  /*IN*/ PULONG  Port,
+  /*IN*/ PULONG  Buffer,
+  /*IN*/ ULONG  Count);
+
+SCSIPORTAPI
+VOID
+DDKAPI
+ScsiPortReadPortBufferUshort(
+  /*IN*/ PUSHORT  Port,
+  /*IN*/ PUSHORT  Buffer,
+  /*IN*/ ULONG  Count);
+
+SCSIPORTAPI
+UCHAR
+DDKAPI
+ScsiPortReadPortUchar(
+  /*IN*/ PUCHAR  Port);
+
+SCSIPORTAPI
+ULONG
+DDKAPI
+ScsiPortReadPortUlong(
+  /*IN*/ PULONG  Port);
+
+SCSIPORTAPI
+USHORT
+DDKAPI
+ScsiPortReadPortUshort(
+  /*IN*/ PUSHORT  Port);
+
+SCSIPORTAPI
+VOID
+DDKAPI
+ScsiPortReadRegisterBufferUchar(
+  /*IN*/ PUCHAR  Register,
+  /*IN*/ PUCHAR  Buffer,
+  /*IN*/ ULONG  Count);
+
+SCSIPORTAPI
+VOID
+DDKAPI
+ScsiPortReadRegisterBufferUlong(
+  /*IN*/ PULONG  Register,
+  /*IN*/ PULONG  Buffer,
+  /*IN*/ ULONG  Count);
+
+SCSIPORTAPI
+VOID
+DDKAPI
+ScsiPortReadRegisterBufferUshort(
+  /*IN*/ PUSHORT  Register,
+  /*IN*/ PUSHORT  Buffer,
+  /*IN*/ ULONG  Count);
+
+SCSIPORTAPI
+UCHAR
+DDKAPI
+ScsiPortReadRegisterUchar(
+  /*IN*/ PUCHAR  Register);
+
+SCSIPORTAPI
+ULONG
+DDKAPI
+ScsiPortReadRegisterUlong(
+  /*IN*/ PULONG  Register);
+
+SCSIPORTAPI
+USHORT
+DDKAPI
+ScsiPortReadRegisterUshort(
+  /*IN*/ PUSHORT  Register);
+
+SCSIPORTAPI
+ULONG
+DDKAPI
+ScsiPortSetBusDataByOffset(
+  /*IN*/ PVOID  DeviceExtension,
+  /*IN*/ ULONG  BusDataType,
+  /*IN*/ ULONG  SystemIoBusNumber,
+  /*IN*/ ULONG  SlotNumber,
+  /*IN*/ PVOID  Buffer,
+  /*IN*/ ULONG  Offset,
+  /*IN*/ ULONG  Length);
+
+SCSIPORTAPI
+VOID
+DDKAPI
+ScsiPortStallExecution(
+  /*IN*/ ULONG  Delay);
+
+SCSIPORTAPI
+BOOLEAN
+DDKAPI
+ScsiPortValidateRange(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ INTERFACE_TYPE  BusType,
+  /*IN*/ ULONG  SystemIoBusNumber,
+  /*IN*/ SCSI_PHYSICAL_ADDRESS  IoAddress,
+  /*IN*/ ULONG  NumberOfBytes,
+  /*IN*/ BOOLEAN  InIoSpace);
+
+SCSIPORTAPI
+VOID
+DDKAPI
+ScsiPortWritePortBufferUchar(
+  /*IN*/ PUCHAR  Port,
+  /*IN*/ PUCHAR  Buffer,
+  /*IN*/ ULONG  Count);
+
+SCSIPORTAPI
+VOID
+DDKAPI
+ScsiPortWritePortBufferUlong(
+  /*IN*/ PULONG  Port,
+  /*IN*/ PULONG  Buffer,
+  /*IN*/ ULONG  Count);
+
+SCSIPORTAPI
+VOID
+DDKAPI
+ScsiPortWritePortBufferUshort(
+  /*IN*/ PUSHORT  Port,
+  /*IN*/ PUSHORT  Buffer,
+  /*IN*/ ULONG  Count);
+
+SCSIPORTAPI
+VOID
+DDKAPI
+ScsiPortWritePortUchar(
+  /*IN*/ PUCHAR  Port,
+  /*IN*/ UCHAR  Value);
+
+SCSIPORTAPI
+VOID
+DDKAPI
+ScsiPortWritePortUlong(
+  /*IN*/ PULONG  Port,
+  /*IN*/ ULONG  Value);
+
+SCSIPORTAPI
+VOID
+DDKAPI
+ScsiPortWritePortUshort(
+  /*IN*/ PUSHORT  Port,
+  /*IN*/ USHORT  Value);
+
+SCSIPORTAPI
+VOID
+DDKAPI
+ScsiPortWriteRegisterBufferUchar(
+  /*IN*/ PUCHAR  Register,
+  /*IN*/ PUCHAR  Buffer,
+  /*IN*/ ULONG  Count);
+
+SCSIPORTAPI
+VOID
+DDKAPI
+ScsiPortWriteRegisterBufferUlong(
+  /*IN*/ PULONG  Register,
+  /*IN*/ PULONG  Buffer,
+  /*IN*/ ULONG  Count);
+
+SCSIPORTAPI
+VOID
+DDKAPI
+ScsiPortWriteRegisterBufferUshort(
+  /*IN*/ PUSHORT  Register,
+  /*IN*/ PUSHORT  Buffer,
+  /*IN*/ ULONG  Count);
+
+SCSIPORTAPI
+VOID
+DDKAPI
+ScsiPortWriteRegisterUchar(
+  /*IN*/ PUCHAR  Register,
+  /*IN*/ ULONG  Value);
+
+SCSIPORTAPI
+VOID
+DDKAPI
+ScsiPortWriteRegisterUlong(
+  /*IN*/ PULONG  Register,
+  /*IN*/ ULONG  Value);
+
+SCSIPORTAPI
+VOID
+DDKAPI
+ScsiPortWriteRegisterUshort(
+  /*IN*/ PUSHORT  Register,
+  /*IN*/ USHORT  Value);
+
+SCSIPORTAPI
+VOID
+DDKCDECLAPI
+ScsiDebugPrint(
+  /*IN*/ ULONG DebugPrintLevel,
+  /*IN*/ PCCHAR DebugMessage,
+  /*IN*/ ...);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __SRB_H */
Index: Daodan/MinGW/include/ddk/storport.h
===================================================================
--- Daodan/MinGW/include/ddk/storport.h	(revision 1046)
+++ Daodan/MinGW/include/ddk/storport.h	(revision 1046)
@@ -0,0 +1,422 @@
+/*
+ * storport.h
+ *
+ * StorPort interface
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __STORPORT_H
+#define __STORPORT_H
+
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "ntddk.h"
+#include "srb.h"
+
+#if defined(_STORPORT_)
+  #define STORPORTAPI DECLSPEC_EXPORT
+#else
+  #define STORPORTAPI DECLSPEC_IMPORT
+#endif
+
+
+typedef PHYSICAL_ADDRESS STOR_PHYSICAL_ADDRESS;
+
+typedef struct _STOR_SCATTER_GATHER_ELEMENT {
+	STOR_PHYSICAL_ADDRESS  PhysicalAddress;
+	ULONG  Length;
+	ULONG_PTR  Reserved;
+} STOR_SCATTER_GATHER_ELEMENT, *PSTOR_SCATTER_GATHER_ELEMENT;
+
+typedef struct _STOR_SCATTER_GATHER_LIST {
+    ULONG  NumberOfElements;
+    ULONG_PTR  Reserved;
+    STOR_SCATTER_GATHER_ELEMENT  List[0];
+} STOR_SCATTER_GATHER_LIST, *PSTOR_SCATTER_GATHER_LIST;
+
+typedef struct _SCSI_WMI_REQUEST_BLOCK {
+  USHORT  Length;
+  UCHAR  Function;
+  UCHAR  SrbStatus;
+  UCHAR  WMISubFunction;
+  UCHAR  PathId;
+  UCHAR  TargetId;
+  UCHAR  Lun;
+  UCHAR  Reserved1;
+  UCHAR  WMIFlags;
+  UCHAR  Reserved2[2];
+  ULONG  SrbFlags;
+  ULONG  DataTransferLength;
+  ULONG  TimeOutValue;
+  PVOID  DataBuffer;
+  PVOID  DataPath;
+  PVOID  Reserved3;
+  PVOID  OriginalRequest;
+  PVOID  SrbExtension;
+  ULONG  Reserved4;
+  UCHAR  Reserved5[16];
+} SCSI_WMI_REQUEST_BLOCK, *PSCSI_WMI_REQUEST_BLOCK;
+
+
+STORPORTAPI
+ULONG
+DDKAPI
+StorPortInitialize(
+  /*IN*/ PVOID  Argument1,
+  /*IN*/ PVOID  Argument2,
+  /*IN*/ PHW_INITIALIZATION_DATA  HwInitializationData,
+  /*IN*/ PVOID  Unused);
+
+STORPORTAPI
+VOID
+DDKAPI
+StorPortFreeDeviceBase(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ PVOID  MappedAddress);
+
+STORPORTAPI
+ULONG
+DDKAPI
+StorPortGetBusData(
+  /*IN*/ PVOID  DeviceExtension,
+  /*IN*/ ULONG  BusDataType,
+  /*IN*/ ULONG  SystemIoBusNumber,
+  /*IN*/ ULONG  SlotNumber,
+  /*IN*/ PVOID  Buffer,
+  /*IN*/ ULONG  Length);
+
+STORPORTAPI
+ULONG
+DDKAPI
+StorPortSetBusDataByOffset(
+  /*IN*/ PVOID  DeviceExtension,
+  /*IN*/ ULONG   BusDataType,
+  /*IN*/ ULONG  SystemIoBusNumber,
+  /*IN*/ ULONG  SlotNumber,
+  /*IN*/ PVOID  Buffer,
+  /*IN*/ ULONG  Offset,
+  /*IN*/ ULONG  Length);
+
+STORPORTAPI
+PVOID
+DDKAPI
+StorPortGetDeviceBase(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ INTERFACE_TYPE  BusType,
+  /*IN*/ ULONG  SystemIoBusNumber,
+  /*IN*/ SCSI_PHYSICAL_ADDRESS  IoAddress,
+  /*IN*/ ULONG  NumberOfBytes,
+  /*IN*/ BOOLEAN  InIoSpace);
+
+STORPORTAPI
+PVOID
+DDKAPI
+StorPortGetLogicalUnit(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ UCHAR  PathId,
+  /*IN*/ UCHAR  TargetId,
+  /*IN*/ UCHAR  Lun);
+
+STORPORTAPI
+PSCSI_REQUEST_BLOCK
+DDKAPI
+StorPortGetSrb(
+  /*IN*/ PVOID  DeviceExtension,
+  /*IN*/ UCHAR  PathId,
+  /*IN*/ UCHAR  TargetId,
+  /*IN*/ UCHAR  Lun,
+  /*IN*/ LONG  QueueTag);
+
+STORPORTAPI
+STOR_PHYSICAL_ADDRESS
+DDKAPI
+StorPortGetPhysicalAddress(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ PSCSI_REQUEST_BLOCK  Srb,
+  /*IN*/ PVOID  VirtualAddress,
+  /*OUT*/ ULONG  *Length);
+
+STORPORTAPI
+PVOID
+DDKAPI
+StorPortGetVirtualAddress(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ STOR_PHYSICAL_ADDRESS  PhysicalAddress);
+
+STORPORTAPI
+PVOID
+DDKAPI
+StorPortGetUncachedExtension(
+  /*IN*/ PVOID HwDeviceExtension,
+  /*IN*/ PPORT_CONFIGURATION_INFORMATION ConfigInfo,
+  /*IN*/ ULONG NumberOfBytes);
+
+STORPORTAPI
+VOID
+DDKCDECLAPI
+StorPortNotification(
+  /*IN*/ SCSI_NOTIFICATION_TYPE  NotificationType,
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ ...);
+
+STORPORTAPI
+VOID
+DDKAPI
+StorPortLogError(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ PSCSI_REQUEST_BLOCK  Srb /*OPTIONAL*/,
+  /*IN*/ UCHAR  PathId,
+  /*IN*/ UCHAR  TargetId,
+  /*IN*/ UCHAR  Lun,
+  /*IN*/ ULONG  ErrorCode,
+  /*IN*/ ULONG  UniqueId);
+
+STORPORTAPI
+VOID
+DDKAPI
+StorPortCompleteRequest(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ UCHAR  PathId,
+  /*IN*/ UCHAR  TargetId,
+  /*IN*/ UCHAR  Lun,
+  /*IN*/ UCHAR  SrbStatus);
+
+STORPORTAPI
+VOID
+DDKAPI
+StorPortMoveMemory(
+  /*IN*/ PVOID  WriteBuffer,
+  /*IN*/ PVOID  ReadBuffer,
+  /*IN*/ ULONG  Length);
+
+STORPORTAPI
+VOID
+DDKAPI
+StorPortStallExecution(
+  /*IN*/ ULONG  Delay);
+
+STORPORTAPI
+STOR_PHYSICAL_ADDRESS
+DDKAPI
+StorPortConvertUlong64ToPhysicalAddress(
+  /*IN*/ ULONG64  UlongAddress);
+
+STORPORTAPI
+ULONG64
+DDKAPI
+StorPortConvertPhysicalAddressToUlong64(
+  /*IN*/ STOR_PHYSICAL_ADDRESS  Address);
+
+STORPORTAPI
+BOOLEAN
+DDKAPI
+StorPortValidateRange(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ INTERFACE_TYPE  BusType,
+  /*IN*/ ULONG  SystemIoBusNumber,
+  /*IN*/ STOR_PHYSICAL_ADDRESS  IoAddress,
+  /*IN*/ ULONG  NumberOfBytes,
+  /*IN*/ BOOLEAN  InIoSpace);
+
+STORPORTAPI
+VOID
+DDKCDECLAPI
+StorPortDebugPrint(
+  /*IN*/ ULONG  DebugPrintLevel,
+  /*IN*/ PCCHAR  DebugMessage,
+  /*IN*/ ...);
+
+STORPORTAPI
+UCHAR
+DDKAPI
+StorPortReadPortUchar(
+  /*IN*/ PUCHAR  Port);
+
+STORPORTAPI
+ULONG
+DDKAPI
+StorPortReadPortUlong(
+  /*IN*/ PULONG  Port);
+
+STORPORTAPI
+USHORT
+DDKAPI
+StorPortReadPortUshort(
+  /*IN*/ PUSHORT  Port);
+
+STORPORTAPI
+UCHAR
+DDKAPI
+StorPortReadRegisterUchar(
+  /*IN*/ PUCHAR  Register);
+
+STORPORTAPI
+ULONG
+DDKAPI
+StorPortReadRegisterUlong(
+  /*IN*/ PULONG  Register);
+
+STORPORTAPI
+USHORT
+DDKAPI
+StorPortReadRegisterUshort(
+  /*IN*/ PUSHORT  Register);
+
+STORPORTAPI
+VOID
+DDKAPI
+StorPortWritePortUchar(
+  /*IN*/ PUCHAR  Port,
+  /*IN*/ UCHAR  Value);
+
+STORPORTAPI
+VOID
+DDKAPI
+StorPortWritePortUlong(
+  /*IN*/ PULONG  Port,
+  /*IN*/ ULONG  Value);
+
+STORPORTAPI
+VOID
+DDKAPI
+StorPortWritePortUshort(
+  /*IN*/ PUSHORT  Port,
+  /*IN*/ USHORT  Value);
+
+STORPORTAPI
+VOID
+DDKAPI
+StorPortWriteRegisterUchar(
+  /*IN*/ PUCHAR  Port,
+  /*IN*/ UCHAR  Value);
+
+STORPORTAPI
+VOID
+DDKAPI
+StorPortWriteRegisterUlong(
+  /*IN*/ PULONG  Port,
+  /*IN*/ ULONG  Value);
+
+STORPORTAPI
+VOID
+DDKAPI
+StorPortWriteRegisterUshort(
+  /*IN*/ PUSHORT  Port,
+  /*IN*/ USHORT  Value);
+
+STORPORTAPI
+BOOLEAN
+DDKAPI
+StorPortPauseDevice(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ UCHAR  PathId,
+  /*IN*/ UCHAR  TargetId,
+  /*IN*/ UCHAR  Lun,
+  /*IN*/ ULONG  TimeOut);
+
+STORPORTAPI
+BOOLEAN
+DDKAPI
+StorPortResumeDevice(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ UCHAR  PathId,
+  /*IN*/ UCHAR  TargetId,
+  /*IN*/ UCHAR  Lun);
+
+STORPORTAPI
+BOOLEAN
+DDKAPI
+StorPortPause(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ ULONG  TimeOut);
+
+STORPORTAPI
+BOOLEAN
+DDKAPI
+StorPortResume(
+  /*IN*/ PVOID  HwDeviceExtension);
+
+STORPORTAPI
+BOOLEAN
+DDKAPI
+StorPortDeviceBusy(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ UCHAR  PathId,
+  /*IN*/ UCHAR  TargetId,
+  /*IN*/ UCHAR  Lun,
+  /*IN*/ ULONG  RequestsToComplete);
+
+STORPORTAPI
+BOOLEAN
+DDKAPI
+StorPortDeviceReady(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ UCHAR  PathId,
+  /*IN*/ UCHAR  TargetId,
+  /*IN*/ UCHAR  Lun);
+
+STORPORTAPI
+BOOLEAN
+DDKAPI
+StorPortBusy(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ ULONG  RequestsToComplete);
+
+STORPORTAPI
+BOOLEAN
+DDKAPI
+StorPortReady(
+  /*IN*/ PVOID  HwDeviceExtension);
+
+STORPORTAPI
+PSTOR_SCATTER_GATHER_LIST
+DDKAPI
+StorPortGetScatterGatherList(
+  /*IN*/ PVOID  DeviceExtension,
+  /*IN*/ PSCSI_REQUEST_BLOCK  Srb);
+
+typedef BOOLEAN DDKAPI
+(*PSTOR_SYNCHRONIZED_ACCESS)(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ PVOID  Context);
+
+STORPORTAPI
+VOID
+DDKAPI
+StorPortSynchronizeAccess(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ PSTOR_SYNCHRONIZED_ACCESS  SynchronizedAccessRoutine,
+  /*IN*/ PVOID  Context);
+
+#ifdef DBG
+#define DebugPrint(x) StorPortDebugPrint x
+#else
+#define DebugPrint(x)
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __STORPORT_H */
Index: Daodan/MinGW/include/ddk/tdi.h
===================================================================
--- Daodan/MinGW/include/ddk/tdi.h	(revision 1046)
+++ Daodan/MinGW/include/ddk/tdi.h	(revision 1046)
@@ -0,0 +1,593 @@
+/*
+ * tdi.h
+ *
+ * TDI user mode definitions
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __TDI_H
+#define __TDI_H
+
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "ntddk.h"
+#include "ntddtdi.h"
+#include "tdistat.h"
+#include "netpnp.h"
+
+/* Basic types */
+
+typedef LONG TDI_STATUS;
+typedef PVOID CONNECTION_CONTEXT;
+
+typedef struct _TDI_CONNECTION_INFORMATION {
+  LONG  UserDataLength;
+  PVOID  UserData;
+  LONG  OptionsLength;
+  PVOID  Options;
+  LONG  RemoteAddressLength;
+  PVOID  RemoteAddress;
+} TDI_CONNECTION_INFORMATION, *PTDI_CONNECTION_INFORMATION;
+
+typedef struct _TDI_REQUEST {
+  union {
+    HANDLE  AddressHandle;
+    CONNECTION_CONTEXT  ConnectionContext;
+    HANDLE  ControlChannel;
+  } Handle;
+  PVOID  RequestNotifyObject;
+  PVOID  RequestContext;
+  TDI_STATUS  TdiStatus;
+} TDI_REQUEST, *PTDI_REQUEST;
+
+typedef struct _TDI_REQUEST_STATUS {
+  TDI_STATUS  Status;
+  PVOID  RequestContext;
+  ULONG  BytesTransferred;
+} TDI_REQUEST_STATUS, *PTDI_REQUEST_STATUS;
+
+typedef struct _TDI_CONNECT_REQUEST {
+	TDI_REQUEST  Request;
+	PTDI_CONNECTION_INFORMATION  RequestConnectionInformation;
+	PTDI_CONNECTION_INFORMATION  ReturnConnectionInformation;
+	LARGE_INTEGER  Timeout;
+} TDI_REQUEST_CONNECT, *PTDI_REQUEST_CONNECT;
+
+typedef struct _TDI_REQUEST_ACCEPT {
+  TDI_REQUEST  Request;
+  PTDI_CONNECTION_INFORMATION  RequestConnectionInformation;
+  PTDI_CONNECTION_INFORMATION  ReturnConnectionInformation;
+} TDI_REQUEST_ACCEPT, *PTDI_REQUEST_ACCEPT;
+
+typedef struct _TDI_REQUEST_LISTEN {
+  TDI_REQUEST  Request;
+  PTDI_CONNECTION_INFORMATION  RequestConnectionInformation;
+  PTDI_CONNECTION_INFORMATION  ReturnConnectionInformation;
+  USHORT  ListenFlags;
+} TDI_REQUEST_LISTEN, *PTDI_REQUEST_LISTEN;
+
+typedef struct _TDI_DISCONNECT_REQUEST {
+  TDI_REQUEST  Request;
+  LARGE_INTEGER  Timeout;
+} TDI_REQUEST_DISCONNECT, *PTDI_REQUEST_DISCONNECT;
+
+typedef struct _TDI_REQUEST_SEND {
+  TDI_REQUEST  Request;
+  USHORT  SendFlags;
+} TDI_REQUEST_SEND, *PTDI_REQUEST_SEND;
+
+typedef struct _TDI_REQUEST_RECEIVE {
+  TDI_REQUEST  Request;
+  USHORT  ReceiveFlags;
+} TDI_REQUEST_RECEIVE, *PTDI_REQUEST_RECEIVE;
+
+typedef struct _TDI_REQUEST_SEND_DATAGRAM {
+  TDI_REQUEST  Request;
+  PTDI_CONNECTION_INFORMATION  SendDatagramInformation;
+} TDI_REQUEST_SEND_DATAGRAM, *PTDI_REQUEST_SEND_DATAGRAM;
+
+typedef struct _TDI_REQUEST_RECEIVE_DATAGRAM {
+  TDI_REQUEST  Request;
+  PTDI_CONNECTION_INFORMATION  ReceiveDatagramInformation;
+  PTDI_CONNECTION_INFORMATION  ReturnInformation;
+  USHORT  ReceiveFlags;
+} TDI_REQUEST_RECEIVE_DATAGRAM, *PTDI_REQUEST_RECEIVE_DATAGRAM;
+
+typedef struct _TDI_REQUEST_SET_EVENT {
+  TDI_REQUEST  Request;
+  LONG  EventType;
+  PVOID  EventHandler;
+  PVOID  EventContext;
+} TDI_REQUEST_SET_EVENT_HANDLER, *PTDI_REQUEST_SET_EVENT_HANDLER;
+
+#define TDI_RECEIVE_BROADCAST             0x00000004
+#define TDI_RECEIVE_MULTICAST             0x00000008
+#define TDI_RECEIVE_PARTIAL               0x00000010
+#define TDI_RECEIVE_NORMAL                0x00000020
+#define TDI_RECEIVE_EXPEDITED             0x00000040
+#define TDI_RECEIVE_PEEK                  0x00000080
+#define TDI_RECEIVE_NO_RESPONSE_EXP       0x00000100
+#define TDI_RECEIVE_COPY_LOOKAHEAD        0x00000200
+#define TDI_RECEIVE_ENTIRE_MESSAGE        0x00000400
+#define TDI_RECEIVE_AT_DISPATCH_LEVEL     0x00000800
+#define TDI_RECEIVE_CONTROL_INFO          0x00001000
+
+/* Listen flags */
+#define TDI_QUERY_ACCEPT                  0x00000001
+
+/* Options used for both SendOptions and ReceiveIndicators */
+#define TDI_SEND_EXPEDITED                0x0020
+#define TDI_SEND_PARTIAL                  0x0040
+#define TDI_SEND_NO_RESPONSE_EXPECTED     0x0080
+#define TDI_SEND_NON_BLOCKING             0x0100
+#define TDI_SEND_AND_DISCONNECT           0x0200
+
+/* Disconnect Flags */
+#define TDI_DISCONNECT_WAIT               0x0001
+#define TDI_DISCONNECT_ABORT              0x0002
+#define TDI_DISCONNECT_RELEASE            0x0004
+
+/* TdiRequest structure for TdiQueryInformation request */
+typedef struct _TDI_REQUEST_QUERY_INFORMATION {
+  TDI_REQUEST  Request;
+  ULONG  QueryType;
+  PTDI_CONNECTION_INFORMATION  RequestConnectionInformation;
+} TDI_REQUEST_QUERY_INFORMATION, *PTDI_REQUEST_QUERY_INFORMATION;
+
+/* TdiRequest structure for TdiSetInformation request */
+typedef struct _TDI_REQUEST_SET_INFORMATION {
+  TDI_REQUEST  Request;
+  ULONG  SetType;
+  PTDI_CONNECTION_INFORMATION  RequestConnectionInformation;
+} TDI_REQUEST_SET_INFORMATION, *PTDI_REQUEST_SET_INFORMATION;
+
+typedef TDI_REQUEST_SET_INFORMATION  TDI_REQ_SET_INFORMATION, *PTDI_REQ_SET_INFORMATION;
+
+typedef union _TDI_REQUEST_TYPE {
+  TDI_REQUEST_ACCEPT  TdiAccept;
+  TDI_REQUEST_CONNECT  TdiConnect;
+  TDI_REQUEST_DISCONNECT  TdiDisconnect;
+  TDI_REQUEST_LISTEN  TdiListen;
+  TDI_REQUEST_QUERY_INFORMATION  TdiQueryInformation;
+  TDI_REQUEST_RECEIVE  TdiReceive;
+  TDI_REQUEST_RECEIVE_DATAGRAM  TdiReceiveDatagram;
+  TDI_REQUEST_SEND  TdiSend;
+  TDI_REQUEST_SEND_DATAGRAM  TdiSendDatagram;
+  TDI_REQUEST_SET_EVENT_HANDLER  TdiSetEventHandler;
+  TDI_REQUEST_SET_INFORMATION   TdiSetInformation;
+} TDI_REQUEST_TYPE, *PTDI_REQUEST_TYPE;
+
+/* Query information types */
+
+/* Generic query info types that must be supported by all transports */
+#define TDI_QUERY_BROADCAST_ADDRESS     0x00000001
+#define TDI_QUERY_PROVIDER_INFO         0x00000002
+#define TDI_QUERY_ADDRESS_INFO          0x00000003
+#define TDI_QUERY_CONNECTION_INFO       0x00000004
+#define TDI_QUERY_PROVIDER_STATISTICS   0x00000005
+#define TDI_QUERY_DATAGRAM_INFO         0x00000006
+#define TDI_QUERY_DATA_LINK_ADDRESS     0x00000007
+#define TDI_QUERY_NETWORK_ADDRESS       0x00000008
+#define TDI_QUERY_MAX_DATAGRAM_INFO     0x00000009
+
+/* Netbios specific query information types */
+#define TDI_QUERY_ADAPTER_STATUS        0x00000100
+#define TDI_QUERY_SESSION_STATUS        0x00000200
+#define TDI_QUERY_FIND_NAME             0x00000300
+
+/* Structures used for TdiQueryInformation and TdiSetInformation */
+
+typedef struct _TDI_ENDPOINT_INFO {
+  ULONG  State;
+  ULONG  Event;
+  ULONG  TransmittedTsdus;
+  ULONG  ReceivedTsdus;
+  ULONG  TransmissionErrors;
+  ULONG  ReceiveErrors;
+  ULONG  MinimumLookaheadData;
+  ULONG  MaximumLookaheadData;
+  ULONG  PriorityLevel;
+  ULONG  SecurityLevel;
+  ULONG  SecurityCompartment;
+} TDI_ENDPOINT_INFO, *PTDI_ENDPOINT_INFO;
+
+typedef struct _TDI_CONNECTION_INFO {
+  ULONG  State;
+  ULONG  Event;
+  ULONG  TransmittedTsdus;
+  ULONG  ReceivedTsdus;
+  ULONG  TransmissionErrors;
+  ULONG  ReceiveErrors;
+  LARGE_INTEGER  Throughput;
+  LARGE_INTEGER  Delay;
+  ULONG  SendBufferSize;
+  ULONG  ReceiveBufferSize;
+  BOOLEAN  Unreliable;
+} TDI_CONNECTION_INFO, *PTDI_CONNECTION_INFO;
+
+typedef struct _TDI_DATAGRAM_INFO {
+  ULONG  MaximumDatagramBytes;
+  ULONG  MaximumDatagramCount;
+} TDI_DATAGRAM_INFO, *PTDI_DATAGRAM_INFO;
+
+typedef struct _TDI_MAX_DATAGRAM_INFO {
+  ULONG  MaxDatagramSize;
+} TDI_MAX_DATAGRAM_INFO, *PTDI_MAX_DATAGRAM_INFO;
+
+typedef struct _TDI_PROVIDER_INFO {
+  ULONG  Version;
+  ULONG  MaxSendSize;
+  ULONG  MaxConnectionUserData;
+  ULONG  MaxDatagramSize;
+  ULONG  ServiceFlags;
+  ULONG  MinimumLookaheadData;
+  ULONG  MaximumLookaheadData;
+  ULONG  NumberOfResources;
+  LARGE_INTEGER  StartTime;
+} TDI_PROVIDER_INFO, *PTDI_PROVIDER_INFO;
+
+#define TDI_SERVICE_CONNECTION_MODE     0x00000001
+#define TDI_SERVICE_ORDERLY_RELEASE     0x00000002
+#define TDI_SERVICE_CONNECTIONLESS_MODE 0x00000004
+#define TDI_SERVICE_ERROR_FREE_DELIVERY 0x00000008
+#define TDI_SERVICE_SECURITY_LEVEL      0x00000010
+#define TDI_SERVICE_BROADCAST_SUPPORTED 0x00000020
+#define TDI_SERVICE_MULTICAST_SUPPORTED 0x00000040
+#define TDI_SERVICE_DELAYED_ACCEPTANCE  0x00000080
+#define TDI_SERVICE_EXPEDITED_DATA      0x00000100
+#define TDI_SERVICE_INTERNAL_BUFFERING  0x00000200
+#define TDI_SERVICE_ROUTE_DIRECTED      0x00000400
+#define TDI_SERVICE_NO_ZERO_LENGTH      0x00000800
+#define TDI_SERVICE_POINT_TO_POINT      0x00001000
+#define TDI_SERVICE_MESSAGE_MODE        0x00002000
+#define TDI_SERVICE_HALF_DUPLEX         0x00004000
+#define TDI_SERVICE_DGRAM_CONNECTION    0x00008000
+#define TDI_SERVICE_FORCE_ACCESS_CHECK  0x00010000
+#define TDI_SERVICE_SEND_AND_DISCONNECT 0x00020000
+#define TDI_SERVICE_DIRECT_ACCEPT       0x00040000
+#define TDI_SERVICE_ACCEPT_LOCAL_ADDR   0x00080000
+
+typedef struct _TDI_PROVIDER_RESOURCE_STATS {
+  ULONG  ResourceId;
+  ULONG  MaximumResourceUsed;
+  ULONG  AverageResourceUsed;
+  ULONG  ResourceExhausted;
+} TDI_PROVIDER_RESOURCE_STATS, *PTDI_PROVIDER_RESOURCE_STATS;
+
+typedef struct _TDI_PROVIDER_STATISTICS {
+  ULONG  Version;
+  ULONG  OpenConnections;
+  ULONG  ConnectionsAfterNoRetry;
+  ULONG  ConnectionsAfterRetry;
+  ULONG  LocalDisconnects;
+  ULONG  RemoteDisconnects;
+  ULONG  LinkFailures;
+  ULONG  AdapterFailures;
+  ULONG  SessionTimeouts;
+  ULONG  CancelledConnections;
+  ULONG  RemoteResourceFailures;
+  ULONG  LocalResourceFailures;
+  ULONG  NotFoundFailures;
+  ULONG  NoListenFailures;
+  ULONG  DatagramsSent;
+  LARGE_INTEGER  DatagramBytesSent;
+  ULONG  DatagramsReceived;
+  LARGE_INTEGER  DatagramBytesReceived;
+  ULONG  PacketsSent;
+  ULONG  PacketsReceived;
+  ULONG  DataFramesSent;
+  LARGE_INTEGER  DataFrameBytesSent;
+  ULONG  DataFramesReceived;
+  LARGE_INTEGER  DataFrameBytesReceived;
+  ULONG  DataFramesResent;
+  LARGE_INTEGER  DataFrameBytesResent;
+  ULONG  DataFramesRejected;
+  LARGE_INTEGER  DataFrameBytesRejected;
+  ULONG  ResponseTimerExpirations;
+  ULONG  AckTimerExpirations;
+  ULONG  MaximumSendWindow;
+  ULONG  AverageSendWindow;
+  ULONG  PiggybackAckQueued;
+  ULONG  PiggybackAckTimeouts;
+  LARGE_INTEGER  WastedPacketSpace;
+  ULONG  WastedSpacePackets;
+  ULONG  NumberOfResources;
+  TDI_PROVIDER_RESOURCE_STATS  ResourceStats[1];
+} TDI_PROVIDER_STATISTICS, *PTDI_PROVIDER_STATISTICS;
+
+#define TDI_EVENT_CONNECT                 0
+#define TDI_EVENT_DISCONNECT              1
+#define TDI_EVENT_ERROR                   2
+#define TDI_EVENT_RECEIVE                 3
+#define TDI_EVENT_RECEIVE_DATAGRAM        4
+#define TDI_EVENT_RECEIVE_EXPEDITED       5
+#define TDI_EVENT_SEND_POSSIBLE           6
+
+typedef struct _TDI_REQUEST_ASSOCIATE {
+  TDI_REQUEST  Request;
+  HANDLE  AddressHandle;
+} TDI_REQUEST_ASSOCIATE_ADDRESS, *PTDI_REQUEST_ASSOCIATE_ADDRESS;
+
+#define NDIS_PACKET_POOL_TAG_FOR_NWLNKIPX   'iPDN'
+#define NDIS_PACKET_POOL_TAG_FOR_NWLNKSPX   'sPDN'
+#define NDIS_PACKET_POOL_TAG_FOR_NWLNKNB    'nPDN'
+#define NDIS_PACKET_POOL_TAG_FOR_TCPIP      'tPDN'
+#define NDIS_PACKET_POOL_TAG_FOR_NBF        'bPDN'
+#define NDIS_PACKET_POOL_TAG_FOR_APPLETALK  'aPDN'
+
+typedef struct _TA_ADDRESS {
+  USHORT  AddressLength;
+  USHORT  AddressType;
+  UCHAR  Address[1];
+} TA_ADDRESS, *PTA_ADDRESS;
+
+#define TDI_ADDRESS_TYPE_UNSPEC             0
+#define TDI_ADDRESS_TYPE_UNIX               1
+#define TDI_ADDRESS_TYPE_IP                 2
+#define TDI_ADDRESS_TYPE_IMPLINK            3
+#define TDI_ADDRESS_TYPE_PUP                4
+#define TDI_ADDRESS_TYPE_CHAOS              5
+#define TDI_ADDRESS_TYPE_NS                 6
+#define TDI_ADDRESS_TYPE_IPX                6
+#define TDI_ADDRESS_TYPE_NBS                7
+#define TDI_ADDRESS_TYPE_ECMA               8
+#define TDI_ADDRESS_TYPE_DATAKIT            9
+#define TDI_ADDRESS_TYPE_CCITT              10
+#define TDI_ADDRESS_TYPE_SNA                11
+#define TDI_ADDRESS_TYPE_DECnet             12
+#define TDI_ADDRESS_TYPE_DLI                13
+#define TDI_ADDRESS_TYPE_LAT                14
+#define TDI_ADDRESS_TYPE_HYLINK             15
+#define TDI_ADDRESS_TYPE_APPLETALK          16
+#define TDI_ADDRESS_TYPE_NETBIOS            17
+#define TDI_ADDRESS_TYPE_8022               18
+#define TDI_ADDRESS_TYPE_OSI_TSAP           19
+#define TDI_ADDRESS_TYPE_NETONE             20
+#define TDI_ADDRESS_TYPE_VNS                21
+#define TDI_ADDRESS_TYPE_NETBIOS_EX         22
+#define TDI_ADDRESS_TYPE_IP6                23
+#define TDI_ADDRESS_TYPE_NETBIOS_UNICODE_EX 24
+
+#define TdiTransportAddress               "TransportAddress"
+#define TdiConnectionContext              "ConnectionContext"
+#define TDI_TRANSPORT_ADDRESS_LENGTH      (sizeof(TdiTransportAddress) - 1)
+#define TDI_CONNECTION_CONTEXT_LENGTH     (sizeof(TdiConnectionContext) - 1)
+
+typedef struct _TRANSPORT_ADDRESS {
+  LONG  TAAddressCount;
+  TA_ADDRESS  Address[1];
+} TRANSPORT_ADDRESS, *PTRANSPORT_ADDRESS;
+
+typedef struct _TDI_ACTION_HEADER {
+  ULONG  TransportId;
+  USHORT  ActionCode;
+  USHORT  Reserved;
+} TDI_ACTION_HEADER, *PTDI_ACTION_HEADER;
+
+typedef struct _TDI_ADDRESS_INFO {
+  ULONG  ActivityCount;
+  TRANSPORT_ADDRESS  Address;
+} TDI_ADDRESS_INFO, *PTDI_ADDRESS_INFO;
+
+#include "pshpack1.h"
+
+typedef struct _TDI_ADDRESS_8022 {
+  UCHAR  MACAddress[6];
+} TDI_ADDRESS_8022, *PTDI_ADDRESS_8022;
+
+#define TDI_ADDRESS_LENGTH_8022           sizeof(TDI_ADDRESS_8022);
+
+typedef struct _TDI_ADDRESS_APPLETALK {
+  USHORT  Network;
+  UCHAR  Node;
+  UCHAR  Socket;
+} TDI_ADDRESS_APPLETALK, *PTDI_ADDRESS_APPLETALK;
+
+#define TDI_ADDRESS_LENGTH_APPLETALK      sizeof(TDI_ADDRESS_APPLETALK)
+
+typedef struct _TDI_ADDRESS_IP {
+  USHORT  sin_port;
+  ULONG  in_addr;
+  UCHAR  sin_zero[8];
+} TDI_ADDRESS_IP, *PTDI_ADDRESS_IP;
+
+#define TDI_ADDRESS_LENGTH_IP             sizeof(TDI_ADDRESS_IP)
+
+typedef struct _TDI_ADDRESS_IPX {
+  ULONG  NetworkAddress;
+  UCHAR  NodeAddress[6];
+  USHORT  Socket;
+} TDI_ADDRESS_IPX, *PTDI_ADDRESS_IPX;
+
+#define TDI_ADDRESS_LENGTH_IPX            sizeof(TDI_ADDRESS_IPX)
+
+/* TDI_ADDRESS_NETBIOS.NetbiosNameType constants */
+#define TDI_ADDRESS_NETBIOS_TYPE_UNIQUE       0x0000
+#define TDI_ADDRESS_NETBIOS_TYPE_GROUP        0x0001
+#define TDI_ADDRESS_NETBIOS_TYPE_QUICK_UNIQUE 0x0002
+#define TDI_ADDRESS_NETBIOS_TYPE_QUICK_GROUP  0x0003
+
+typedef struct _TDI_ADDRESS_NETBIOS {
+  USHORT  NetbiosNameType;
+  UCHAR  NetbiosName[16];
+} TDI_ADDRESS_NETBIOS, *PTDI_ADDRESS_NETBIOS;
+
+#define TDI_ADDRESS_LENGTH_NETBIOS        sizeof(TDI_ADDRESS_NETBIOS)
+
+typedef struct _TDI_ADDRESS_NETBIOS_EX {
+  UCHAR  EndpointName[16];
+  TDI_ADDRESS_NETBIOS  NetbiosAddress;
+} TDI_ADDRESS_NETBIOS_EX, *PTDI_ADDRESS_NETBIOS_EX;
+
+#define TDI_ADDRESS_LENGTH_NETBIOS_EX     sizeof(TDI_ADDRESS_NETBIOS_EX)
+
+/* TDI_ADDRESS_NETONE.NetoneNameType constants */
+#define TDI_ADDRESS_NETONE_TYPE_UNIQUE    0x0000
+#define TDI_ADDRESS_NETONE_TYPE_ROTORED   0x0001
+
+typedef struct _TDI_ADDRESS_NETONE {
+  USHORT  NetoneNameType;
+  UCHAR  NetoneName[20];
+} TDI_ADDRESS_NETONE, *PTDI_ADDRESS_NETONE;
+
+#define TDI_ADDRESS_LENGTH_NETONE         sizeof(TDI_ADDRESS_NETONE)
+
+typedef struct _TDI_ADDRESS_NS
+{
+    ULONG   NetworkAddress;
+    UCHAR   NodeAddress[6];
+    USHORT  Socket;
+} TDI_ADDRESS_NS, *PTDI_ADDRESS_NS;
+
+#define TDI_ADDRESS_LENGTH_NS             sizeof(TDI_ADDRESS_NS)
+
+#define ISO_MAX_ADDR_LENGTH               64
+
+/* TDI_ADDRESS_OSI_TSAP.tp_addr_type constants */
+#define ISO_HIERARCHICAL                  0
+#define ISO_NON_HIERARCHICAL              1
+
+typedef struct _TDI_ADDRESS_OSI_TSAP {
+  USHORT  tp_addr_type;
+  USHORT  tp_taddr_len;
+  USHORT  tp_tsel_len;
+  UCHAR  tp_addr[ISO_MAX_ADDR_LENGTH];
+} TDI_ADDRESS_OSI_TSAP, *PTDI_ADDRESS_OSI_TSAP;
+
+#define TDI_ADDRESS_LENGTH_OSI_TSAP       sizeof(TDI_ADDRESS_OSI_TSAP)
+
+typedef struct _TDI_ADDRESS_VNS {
+  UCHAR  net_address[4];
+  UCHAR  subnet_addr[2];
+  UCHAR  port[2];
+  UCHAR  hops;
+  UCHAR  filler[5];
+} TDI_ADDRESS_VNS, *PTDI_ADDRESS_VNS;
+
+#define TDI_ADDRESS_LENGTH_VNS            sizeof(TDI_ADDRESS_VNS)
+
+typedef struct _TDI_ADDRESS_IP6 {
+  USHORT  sin6_port;
+  ULONG  sin6_flowinfo;
+  USHORT  sin6_addr[8];
+  ULONG  sin6_scope_id;
+} TDI_ADDRESS_IP6, *PTDI_ADDRESS_IP6;
+
+#define TDI_ADDRESS_LENGTH_IP6            sizeof(TDI_ADDRESS_IP6)
+
+enum eNameBufferType {
+	NBT_READONLY = 0,
+	NBT_WRITEONLY,
+	NBT_READWRITE,
+	NBT_WRITTEN
+};
+
+typedef struct _TDI_ADDRESS_NETBIOS_UNICODE_EX {
+  USHORT  NetbiosNameType;
+  enum eNameBufferType  NameBufferType;
+  UNICODE_STRING  EndpointName;
+  UNICODE_STRING  RemoteName;
+  WCHAR  EndpointBuffer[17];
+  WCHAR  RemoteNameBuffer[1];
+} TDI_ADDRESS_NETBIOS_UNICODE_EX, *PTDI_ADDRESS_NETBIOS_UNICODE_EX;
+
+typedef struct _TA_APPLETALK_ADDR {
+  LONG  TAAddressCount;
+  struct _AddrAtalk {
+    USHORT  AddressLength;
+    USHORT  AddressType;
+    TDI_ADDRESS_APPLETALK  Address[1];
+  } Address[1];
+} TA_APPLETALK_ADDRESS, *PTA_APPLETALK_ADDRESS;
+
+typedef struct _TA_ADDRESS_IP {
+  LONG  TAAddressCount;
+  struct _AddrIp {
+    USHORT  AddressLength;
+    USHORT  AddressType;
+    TDI_ADDRESS_IP  Address[1];
+  } Address[1];
+} TA_IP_ADDRESS, *PTA_IP_ADDRESS;
+
+typedef struct _TA_ADDRESS_IPX {
+  LONG  TAAddressCount;
+  struct _AddrIpx {
+    USHORT  AddressLength;
+    USHORT  AddressType;
+    TDI_ADDRESS_IPX  Address[1];
+  } Address[1];
+} TA_IPX_ADDRESS, *PTA_IPX_ADDRESS;
+
+typedef struct _TA_NETBIOS_ADDRESS {
+  LONG  TAAddressCount;
+  struct _Addr{
+    USHORT  AddressLength;
+    USHORT  AddressType;
+    TDI_ADDRESS_NETBIOS  Address[1];
+  } Address[1];
+} TA_NETBIOS_ADDRESS, *PTA_NETBIOS_ADDRESS;
+
+typedef struct _TA_ADDRESS_NS {
+  LONG  TAAddressCount;
+  struct  _AddrNs {
+    USHORT  AddressLength;
+    USHORT  AddressType;
+    TDI_ADDRESS_NS  Address[1];
+  } Address[1];
+} TA_NS_ADDRESS, *PTA_NS_ADDRESS;
+
+typedef struct _TA_ADDRESS_VNS {
+  LONG  TAAddressCount;
+  struct  _AddrVns {
+    USHORT  AddressLength;
+    USHORT  AddressType;
+    TDI_ADDRESS_VNS  Address[1];
+  } Address[1];
+} TA_VNS_ADDRESS, *PTA_VNS_ADDRESS;
+
+typedef struct _TA_ADDRESS_IP6 {
+  LONG  TAAddressCount;
+  struct _AddrIp6 {
+    USHORT  AddressLength;
+    USHORT  AddressType;
+    TDI_ADDRESS_IP6  Address[1];
+  } Address [1];
+} TA_IP6_ADDRESS, *PTA_IP6_ADDRESS;
+
+typedef struct _TA_ADDRESS_NETBIOS_UNICODE_EX {
+  LONG  TAAddressCount;
+  struct _AddrNetbiosWCharEx {
+    USHORT  AddressLength;
+    USHORT  AddressType;
+    TDI_ADDRESS_NETBIOS_UNICODE_EX  Address[1];
+  } Address [1];
+} TA_NETBIOS_UNICODE_EX_ADDRESS, *PTA_NETBIOS_UNICODE_EX_ADDRESS;
+
+#include "poppack.h"
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __TDI_H */
Index: Daodan/MinGW/include/ddk/tdiinfo.h
===================================================================
--- Daodan/MinGW/include/ddk/tdiinfo.h	(revision 1046)
+++ Daodan/MinGW/include/ddk/tdiinfo.h	(revision 1046)
@@ -0,0 +1,110 @@
+/*
+ * tdiinfo.h
+ *
+ * TDI set and query information interface
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __TDIINFO_H
+#define __TDIINFO_H
+
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "ntddk.h"
+
+typedef struct TDIEntityID {
+  ULONG  tei_entity;
+  ULONG  tei_instance;
+} TDIEntityID;
+
+#define	MAX_TDI_ENTITIES                  4096
+#define INVALID_ENTITY_INSTANCE           -1
+#define	GENERIC_ENTITY				            0
+#define	ENTITY_LIST_ID				            0
+#define	ENTITY_TYPE_ID				            1
+
+#define	AT_ENTITY					                0x280
+#define	CL_NL_ENTITY				              0x301
+#define	CL_TL_ENTITY				              0x401
+#define	CO_NL_ENTITY				              0x300
+#define	CO_TL_ENTITY				              0x400
+#define	ER_ENTITY					                0x380
+#define	IF_ENTITY					                0x200
+
+#define	AT_ARP						                0x280
+#define	AT_NULL						                0x282
+#define	CL_TL_NBF					                0x401
+#define	CL_TL_UDP					                0x403
+#define	CL_NL_IPX					                0x301
+#define	CL_NL_IP					                0x303
+#define	CO_TL_NBF					                0x400
+#define	CO_TL_SPX					                0x402
+#define	CO_TL_TCP					                0x404
+#define	CO_TL_SPP					                0x406
+#define	ER_ICMP						                0x380
+#define	IF_GENERIC					              0x200
+#define	IF_MIB						                0x202
+
+/* TDIObjectID.toi_class constants */
+#define	INFO_CLASS_GENERIC			          0x100
+#define	INFO_CLASS_PROTOCOL			          0x200
+#define	INFO_CLASS_IMPLEMENTATION	        0x300
+
+/* TDIObjectID.toi_type constants */
+#define	INFO_TYPE_PROVIDER			          0x100
+#define	INFO_TYPE_ADDRESS_OBJECT	        0x200
+#define	INFO_TYPE_CONNECTION		          0x300
+
+typedef struct _TDIObjectID {
+	TDIEntityID  toi_entity;
+	ULONG  toi_class;
+	ULONG  toi_type;
+	ULONG  toi_id;
+} TDIObjectID;
+
+#define	CONTEXT_SIZE				              16
+
+typedef struct _TCP_REQUEST_QUERY_INFORMATION_EX {
+  TDIObjectID  ID;
+  ULONG_PTR  Context[CONTEXT_SIZE / sizeof(ULONG_PTR)];
+} TCP_REQUEST_QUERY_INFORMATION_EX, *PTCP_REQUEST_QUERY_INFORMATION_EX;
+
+#if defined(_WIN64)
+typedef struct _TCP_REQUEST_QUERY_INFORMATION_EX32 {
+  TDIObjectID  ID;
+  ULONG32  Context[CONTEXT_SIZE / sizeof(ULONG32)];
+} TCP_REQUEST_QUERY_INFORMATION_EX32, *PTCP_REQUEST_QUERY_INFORMATION_EX32;
+#endif /* _WIN64 */
+
+typedef struct _TCP_REQUEST_SET_INFORMATION_EX {
+  TDIObjectID  ID;
+  UINT  BufferSize;
+  UCHAR  Buffer[1];
+} TCP_REQUEST_SET_INFORMATION_EX, *PTCP_REQUEST_SET_INFORMATION_EX;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __TDIINFO_H */
Index: Daodan/MinGW/include/ddk/tdikrnl.h
===================================================================
--- Daodan/MinGW/include/ddk/tdikrnl.h	(revision 1046)
+++ Daodan/MinGW/include/ddk/tdikrnl.h	(revision 1046)
@@ -0,0 +1,1162 @@
+/*
+ * tdikrnl.h
+ *
+ * TDI kernel mode definitions
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __TDIKRNL_H
+#define __TDIKRNL_H
+
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "ntddk.h"
+#include "tdi.h"
+
+#if defined(_TDI_)
+  #define TDIKRNLAPI DECLSPEC_EXPORT
+#else
+  #define TDIKRNLAPI DECLSPEC_IMPORT
+#endif
+
+
+typedef struct _TDI_REQUEST_KERNEL {
+  ULONG  RequestFlags;
+  PTDI_CONNECTION_INFORMATION  RequestConnectionInformation;
+  PTDI_CONNECTION_INFORMATION  ReturnConnectionInformation;
+  PVOID  RequestSpecific;
+} TDI_REQUEST_KERNEL, *PTDI_REQUEST_KERNEL;
+
+/* Request codes */
+#define TDI_ASSOCIATE_ADDRESS             0x01
+#define TDI_DISASSOCIATE_ADDRESS          0x02
+#define TDI_CONNECT                       0x03
+#define TDI_LISTEN                        0x04
+#define TDI_ACCEPT                        0x05
+#define TDI_DISCONNECT                    0x06
+#define TDI_SEND                          0x07
+#define TDI_RECEIVE                       0x08
+#define TDI_SEND_DATAGRAM                 0x09
+#define TDI_RECEIVE_DATAGRAM              0x0A
+#define TDI_SET_EVENT_HANDLER             0x0B
+#define TDI_QUERY_INFORMATION             0x0C
+#define TDI_SET_INFORMATION               0x0D
+#define TDI_ACTION                        0x0E
+
+#define TDI_DIRECT_SEND                   0x27
+#define TDI_DIRECT_SEND_DATAGRAM          0x29
+
+#define TDI_TRANSPORT_ADDRESS_FILE        1
+#define TDI_CONNECTION_FILE               2
+#define TDI_CONTROL_CHANNEL_FILE          3
+
+/* Internal TDI IOCTLS */
+#define IOCTL_TDI_QUERY_DIRECT_SEND_HANDLER   _TDI_CONTROL_CODE(0x80, METHOD_NEITHER)
+#define IOCTL_TDI_QUERY_DIRECT_SENDDG_HANDLER _TDI_CONTROL_CODE(0x81, METHOD_NEITHER)
+
+/* TdiAssociateAddress */
+typedef struct _TDI_REQUEST_KERNEL_ASSOCIATE {
+  HANDLE  AddressHandle;
+} TDI_REQUEST_KERNEL_ASSOCIATE, *PTDI_REQUEST_KERNEL_ASSOCIATE;
+
+/* TdiDisassociateAddress */
+typedef TDI_REQUEST_KERNEL TDI_REQUEST_KERNEL_DISASSOCIATE,
+  *PTDI_REQUEST_KERNEL_DISASSOCIATE;
+
+/* TdiAccept */
+typedef struct _TDI_REQUEST_KERNEL_ACCEPT {
+  PTDI_CONNECTION_INFORMATION  RequestConnectionInformation;
+  PTDI_CONNECTION_INFORMATION  ReturnConnectionInformation;
+} TDI_REQUEST_KERNEL_ACCEPT, *PTDI_REQUEST_KERNEL_ACCEPT;
+
+/* TdiConnect */
+typedef TDI_REQUEST_KERNEL TDI_REQUEST_KERNEL_CONNECT,
+  *PTDI_REQUEST_KERNEL_CONNECT;
+
+/* TdiDisconnect */
+typedef TDI_REQUEST_KERNEL TDI_REQUEST_KERNEL_DISCONNECT,
+  *PTDI_REQUEST_KERNEL_DISCONNECT;
+
+/* TdiListen */
+typedef TDI_REQUEST_KERNEL TDI_REQUEST_KERNEL_LISTEN,
+  *PTDI_REQUEST_KERNEL_LISTEN;
+
+/* TdiReceive */
+typedef struct _TDI_REQUEST_KERNEL_RECEIVE {
+  ULONG  ReceiveLength;
+  ULONG  ReceiveFlags;
+} TDI_REQUEST_KERNEL_RECEIVE, *PTDI_REQUEST_KERNEL_RECEIVE;
+
+/* TdiReceiveDatagram */
+typedef struct _TDI_REQUEST_KERNEL_RECEIVEDG {
+  ULONG  ReceiveLength;
+  PTDI_CONNECTION_INFORMATION  ReceiveDatagramInformation;
+  PTDI_CONNECTION_INFORMATION  ReturnDatagramInformation;
+  ULONG  ReceiveFlags;
+} TDI_REQUEST_KERNEL_RECEIVEDG, *PTDI_REQUEST_KERNEL_RECEIVEDG;
+
+/* TdiSend */
+typedef struct _TDI_REQUEST_KERNEL_SEND {
+  ULONG  SendLength;
+  ULONG  SendFlags;
+} TDI_REQUEST_KERNEL_SEND, *PTDI_REQUEST_KERNEL_SEND;
+
+/* TdiSendDatagram */
+typedef struct _TDI_REQUEST_KERNEL_SENDDG {
+  ULONG  SendLength;
+  PTDI_CONNECTION_INFORMATION  SendDatagramInformation;
+} TDI_REQUEST_KERNEL_SENDDG, *PTDI_REQUEST_KERNEL_SENDDG;
+
+/* TdiSetEventHandler */
+typedef struct _TDI_REQUEST_KERNEL_SET_EVENT {
+  LONG  EventType;
+  PVOID  EventHandler;
+  PVOID  EventContext;
+} TDI_REQUEST_KERNEL_SET_EVENT, *PTDI_REQUEST_KERNEL_SET_EVENT;
+
+/* TdiQueryInformation */
+typedef struct _TDI_REQUEST_KERNEL_QUERY_INFO {
+  LONG  QueryType;
+  PTDI_CONNECTION_INFORMATION  RequestConnectionInformation;
+} TDI_REQUEST_KERNEL_QUERY_INFORMATION, *PTDI_REQUEST_KERNEL_QUERY_INFORMATION;
+
+/* TdiSetInformation */
+typedef struct _TDI_REQUEST_KERNEL_SET_INFO {
+  LONG  SetType;
+  PTDI_CONNECTION_INFORMATION  RequestConnectionInformation;
+} TDI_REQUEST_KERNEL_SET_INFORMATION, *PTDI_REQUEST_KERNEL_SET_INFORMATION;
+
+
+/* Event types */
+#define TDI_EVENT_CONNECT                   0
+#define TDI_EVENT_DISCONNECT                1
+#define TDI_EVENT_ERROR                     2
+#define TDI_EVENT_RECEIVE                   3
+#define TDI_EVENT_RECEIVE_DATAGRAM          4
+#define TDI_EVENT_RECEIVE_EXPEDITED         5
+#define TDI_EVENT_SEND_POSSIBLE             6
+#define TDI_EVENT_CHAINED_RECEIVE           7
+#define TDI_EVENT_CHAINED_RECEIVE_DATAGRAM  8
+#define TDI_EVENT_CHAINED_RECEIVE_EXPEDITED 9
+#define TDI_EVENT_ERROR_EX                  10
+
+typedef NTSTATUS DDKAPI
+(*PTDI_IND_CONNECT)(
+  /*IN*/ PVOID  TdiEventContext,
+  /*IN*/ LONG  RemoteAddressLength,
+  /*IN*/ PVOID  RemoteAddress,
+  /*IN*/ LONG  UserDataLength,
+  /*IN*/ PVOID  UserData,
+  /*IN*/ LONG  OptionsLength,
+  /*IN*/ PVOID  Options,
+  /*OUT*/ CONNECTION_CONTEXT  *ConnectionContext,
+  /*OUT*/ PIRP  *AcceptIrp);
+
+TDIKRNLAPI
+NTSTATUS
+DDKAPI
+TdiDefaultConnectHandler(
+  /*IN*/ PVOID  TdiEventContext,
+  /*IN*/ LONG  RemoteAddressLength,
+  /*IN*/ PVOID  RemoteAddress,
+  /*IN*/ LONG  UserDataLength,
+  /*IN*/ PVOID  UserData,
+  /*IN*/ LONG  OptionsLength,
+  /*IN*/ PVOID  Options,
+  /*OUT*/ CONNECTION_CONTEXT *ConnectionContext,
+  /*OUT*/ PIRP  *AcceptIrp);
+
+typedef NTSTATUS DDKAPI
+(*PTDI_IND_DISCONNECT)(
+  /*IN*/ PVOID  TdiEventContext,
+  /*IN*/ CONNECTION_CONTEXT  ConnectionContext,
+  /*IN*/ LONG  DisconnectDataLength,
+  /*IN*/ PVOID  DisconnectData,
+  /*IN*/ LONG  DisconnectInformationLength,
+  /*IN*/ PVOID  DisconnectInformation,
+  /*IN*/ ULONG  DisconnectFlags);
+
+TDIKRNLAPI
+NTSTATUS
+DDKAPI
+TdiDefaultDisconnectHandler(
+  /*IN*/ PVOID  TdiEventContext,
+  /*IN*/ CONNECTION_CONTEXT  ConnectionContext,
+  /*IN*/ LONG  DisconnectDataLength,
+  /*IN*/ PVOID  DisconnectData,
+  /*IN*/ LONG  DisconnectInformationLength,
+  /*IN*/ PVOID  DisconnectInformation,
+  /*IN*/ ULONG  DisconnectFlags);
+
+typedef NTSTATUS DDKAPI
+(*PTDI_IND_ERROR)(
+  /*IN*/ PVOID  TdiEventContext,
+  /*IN*/ NTSTATUS  Status);
+
+typedef NTSTATUS DDKAPI
+(*PTDI_IND_ERROR_EX)(
+  /*IN*/ PVOID  TdiEventContext,
+  /*IN*/ NTSTATUS  Status,
+  /*IN*/ PVOID  Buffer);
+
+TDIKRNLAPI
+NTSTATUS
+DDKAPI
+TdiDefaultErrorHandler(
+  /*IN*/ PVOID  TdiEventContext,
+  /*IN*/ NTSTATUS  Status);
+
+typedef NTSTATUS DDKAPI
+(*PTDI_IND_RECEIVE)(
+  /*IN*/ PVOID  TdiEventContext,
+  /*IN*/ CONNECTION_CONTEXT  ConnectionContext,
+  /*IN*/ ULONG  ReceiveFlags,
+  /*IN*/ ULONG  BytesIndicated,
+  /*IN*/ ULONG  BytesAvailable,
+  /*OUT*/ ULONG  *BytesTaken,
+  /*IN*/ PVOID  Tsdu,
+  /*OUT*/ PIRP  *IoRequestPacket);
+
+TDIKRNLAPI
+NTSTATUS
+DDKAPI
+TdiDefaultReceiveHandler(
+  /*IN*/ PVOID  TdiEventContext,
+  /*IN*/ CONNECTION_CONTEXT  ConnectionContext,
+  /*IN*/ ULONG  ReceiveFlags,
+  /*IN*/ ULONG  BytesIndicated,
+  /*IN*/ ULONG  BytesAvailable,
+  /*OUT*/ ULONG  *BytesTaken,
+  /*IN*/ PVOID  Tsdu,
+  /*OUT*/ PIRP  *IoRequestPacket);
+
+typedef NTSTATUS DDKAPI
+(*PTDI_IND_RECEIVE_DATAGRAM)(
+  /*IN*/ PVOID  TdiEventContext,
+  /*IN*/ LONG  SourceAddressLength,
+  /*IN*/ PVOID  SourceAddress,
+  /*IN*/ LONG  OptionsLength,
+  /*IN*/ PVOID  Options,
+  /*IN*/ ULONG  ReceiveDatagramFlags,
+  /*IN*/ ULONG  BytesIndicated,
+  /*IN*/ ULONG  BytesAvailable,
+  /*OUT*/ ULONG  *BytesTaken,
+  /*IN*/ PVOID  Tsdu,
+  /*OUT*/ PIRP  *IoRequestPacket);
+
+TDIKRNLAPI
+NTSTATUS DDKAPI
+TdiDefaultRcvDatagramHandler(
+  /*IN*/ PVOID  TdiEventContext,
+  /*IN*/ LONG  SourceAddressLength,
+  /*IN*/ PVOID  SourceAddress,
+  /*IN*/ LONG  OptionsLength,
+  /*IN*/ PVOID  Options,
+  /*IN*/ ULONG  ReceiveDatagramFlags,
+  /*IN*/ ULONG  BytesIndicated,
+  /*IN*/ ULONG  BytesAvailable,
+  /*OUT*/ ULONG  *BytesTaken,
+  /*IN*/ PVOID  Tsdu,
+  /*OUT*/ PIRP  *IoRequestPacket);
+
+typedef NTSTATUS DDKAPI
+(*PTDI_IND_RECEIVE_EXPEDITED)(
+  /*IN*/ PVOID  TdiEventContext,
+  /*IN*/ CONNECTION_CONTEXT  ConnectionContext,
+  /*IN*/ ULONG  ReceiveFlags,
+  /*IN*/ ULONG  BytesIndicated,
+  /*IN*/ ULONG  BytesAvailable,
+  /*OUT*/ ULONG  *BytesTaken,
+  /*IN*/ PVOID  Tsdu,
+  /*OUT*/ PIRP  *IoRequestPacket);
+
+TDIKRNLAPI
+NTSTATUS
+DDKAPI
+TdiDefaultRcvExpeditedHandler(
+  /*IN*/ PVOID  TdiEventContext,
+  /*IN*/ CONNECTION_CONTEXT  ConnectionContext,
+  /*IN*/ ULONG  ReceiveFlags,
+  /*IN*/ ULONG  BytesIndicated,
+  /*IN*/ ULONG  BytesAvailable,
+  /*OUT*/ ULONG  *BytesTaken,
+  /*IN*/ PVOID  Tsdu,
+  /*OUT*/ PIRP  *IoRequestPacket);
+
+typedef NTSTATUS DDKAPI
+(*PTDI_IND_CHAINED_RECEIVE)(
+  /*IN*/ PVOID  TdiEventContext,
+  /*IN*/ CONNECTION_CONTEXT  ConnectionContext,
+  /*IN*/ ULONG  ReceiveFlags,
+  /*IN*/ ULONG  ReceiveLength,
+  /*IN*/ ULONG  StartingOffset,
+  /*IN*/ PMDL  Tsdu,
+  /*IN*/ PVOID  TsduDescriptor);
+
+TDIKRNLAPI
+NTSTATUS
+DDKAPI
+TdiDefaultChainedReceiveHandler(
+  /*IN*/ PVOID  TdiEventContext,
+  /*IN*/ CONNECTION_CONTEXT  ConnectionContext,
+  /*IN*/ ULONG  ReceiveFlags,
+  /*IN*/ ULONG  ReceiveLength,
+  /*IN*/ ULONG  StartingOffset,
+  /*IN*/ PMDL  Tsdu,
+  /*IN*/ PVOID  TsduDescriptor);
+
+typedef NTSTATUS DDKAPI
+(*PTDI_IND_CHAINED_RECEIVE_DATAGRAM)(
+  /*IN*/ PVOID  TdiEventContext,
+  /*IN*/ LONG  SourceAddressLength,
+  /*IN*/ PVOID  SourceAddress,
+  /*IN*/ LONG  OptionsLength,
+  /*IN*/ PVOID  Options,
+  /*IN*/ ULONG  ReceiveDatagramFlags,
+  /*IN*/ ULONG  ReceiveDatagramLength,
+  /*IN*/ ULONG  StartingOffset,
+  /*IN*/ PMDL  Tsdu,
+  /*IN*/ PVOID  TsduDescriptor);
+
+TDIKRNLAPI
+NTSTATUS
+DDKAPI
+TdiDefaultChainedRcvDatagramHandler(
+  /*IN*/ PVOID  TdiEventContext,
+  /*IN*/ LONG  SourceAddressLength,
+  /*IN*/ PVOID  SourceAddress,
+  /*IN*/ LONG  OptionsLength,
+  /*IN*/ PVOID  Options,
+  /*IN*/ ULONG  ReceiveDatagramFlags,
+  /*IN*/ ULONG  ReceiveDatagramLength,
+  /*IN*/ ULONG  StartingOffset,
+  /*IN*/ PMDL  Tsdu,
+  /*IN*/ PVOID  TsduDescriptor);
+
+typedef NTSTATUS DDKAPI
+(*PTDI_IND_CHAINED_RECEIVE_EXPEDITED)(
+  /*IN*/ PVOID  TdiEventContext,
+  /*IN*/ CONNECTION_CONTEXT  ConnectionContext,
+  /*IN*/ ULONG  ReceiveFlags,
+  /*IN*/ ULONG  ReceiveLength,
+  /*IN*/ ULONG  StartingOffset,
+  /*IN*/ PMDL  Tsdu,
+  /*IN*/ PVOID  TsduDescriptor);
+
+TDIKRNLAPI
+NTSTATUS
+DDKAPI
+TdiDefaultChainedRcvExpeditedHandler(
+  /*IN*/ PVOID  TdiEventContext,
+  /*IN*/ CONNECTION_CONTEXT  ConnectionContext,
+  /*IN*/ ULONG  ReceiveFlags,
+  /*IN*/ ULONG  ReceiveLength,
+  /*IN*/ ULONG  StartingOffset,
+  /*IN*/ PMDL  Tsdu,
+  /*IN*/ PVOID  TsduDescriptor);
+
+typedef NTSTATUS DDKAPI
+(*PTDI_IND_SEND_POSSIBLE)(
+  /*IN*/ PVOID  TdiEventContext,
+  /*IN*/ PVOID  ConnectionContext,
+  /*IN*/ ULONG  BytesAvailable);
+
+TDIKRNLAPI
+NTSTATUS
+DDKAPI
+TdiDefaultSendPossibleHandler(
+  /*IN*/ PVOID  TdiEventContext,
+  /*IN*/ PVOID  ConnectionContext,
+  /*IN*/ ULONG  BytesAvailable);
+
+
+
+  /* Macros and functions to build IRPs */
+
+#define TdiBuildBaseIrp(                                                  \
+  bIrp, bDevObj, bFileObj, bCompRoutine, bContxt, bIrpSp, bMinor)         \
+{                                                                         \
+  bIrpSp->MajorFunction = IRP_MJ_INTERNAL_DEVICE_CONTROL;                 \
+  bIrpSp->MinorFunction = (bMinor);                                       \
+  bIrpSp->DeviceObject  = (bDevObj);                                      \
+  bIrpSp->FileObject    = (bFileObj);                                     \
+  if (bCompRoutine)                                                       \
+    IoSetCompletionRoutine(bIrp, bCompRoutine, bContxt, TRUE, TRUE, TRUE) \
+  else                                                                    \
+    IoSetCompletionRoutine(bIrp, NULL, NULL, FALSE, FALSE, FALSE);        \
+}
+
+  /*
+ * VOID
+ * TdiBuildAccept(
+ * IN PIRP  Irp,
+ * IN PDEVICE_OBJECT  DevObj,
+ * IN PFILE_OBJECT  FileObj,
+ * IN PVOID  CompRoutine,
+ * IN PVOID  Contxt,
+ * IN PTDI_CONNECTION_INFORMATION  RequestConnectionInfo,
+ * OUT PTDI_CONNECTION_INFORMATION  ReturnConnectionInfo);
+ */
+#define TdiBuildAccept(                                             \
+  Irp, DevObj, FileObj, CompRoutine, Contxt,                        \
+  RequestConnectionInfo, ReturnConnectionInfo)                      \
+{                                                                   \
+  PTDI_REQUEST_KERNEL_ACCEPT _Request;                              \
+  PIO_STACK_LOCATION _IrpSp;                                        \
+                                                                    \
+  _IrpSp = IoGetNextIrpStackLocation(Irp);                          \
+                                                                    \
+  TdiBuildBaseIrp(Irp, DevObj, FileObj, CompRoutine,                \
+                  Contxt, _IrpSp, TDI_ACCEPT);                      \
+                                                                    \
+  _Request = (PTDI_REQUEST_KERNEL_ACCEPT)&_IrpSp->Parameters;       \
+  _Request->RequestConnectionInformation = (RequestConnectionInfo); \
+  _Request->ReturnConnectionInformation  = (ReturnConnectionInfo);  \
+}
+
+  /*
+ * VOID
+ * TdiBuildAction(
+ * IN PIRP  Irp,
+ * IN PDEVICE_OBJECT  DevObj,
+ * IN PFILE_OBJECT  FileObj,
+ * IN PVOID  CompRoutine,
+ * IN PVOID  Contxt,
+ * IN PMDL  MdlAddr);
+ */
+#define TdiBuildAction(                               \
+  Irp, DevObj, FileObj, CompRoutine, Contxt, MdlAddr) \
+{                                                     \
+  PIO_STACK_LOCATION _IrpSp;                          \
+                                                      \
+  _IrpSp = IoGetNextIrpStackLocation(Irp);            \
+                                                      \
+  TdiBuildBaseIrp(Irp, DevObj, FileObj, CompRoutine,  \
+                  Contxt, _IrpSp, TDI_ACTION);        \
+                                                      \
+  (Irp)->MdlAddress = (MdlAddr);                      \
+}
+
+  /*
+ * VOID
+ * TdiBuildAssociateAddress(
+ * IN PIRP  Irp,
+ * IN PDEVICE_OBJECT  DevObj,
+ * IN PFILE_OBJECT  FileObj,
+ * IN PVOID  CompRoutine,
+ * IN PVOID  Contxt,
+ * IN HANDLE  AddrHandle);
+ */
+#define TdiBuildAssociateAddress(                                \
+  Irp, DevObj, FileObj, CompRoutine, Contxt, AddrHandle)         \
+{                                                                \
+  PTDI_REQUEST_KERNEL_ASSOCIATE _Request;                        \
+  PIO_STACK_LOCATION _IrpSp;                                     \
+                                                                 \
+  _IrpSp = IoGetNextIrpStackLocation(Irp);                       \
+                                                                 \
+  TdiBuildBaseIrp(Irp, DevObj, FileObj, CompRoutine,             \
+                  Contxt, _IrpSp, TDI_ASSOCIATE_ADDRESS);        \
+                                                                 \
+  _Request = (PTDI_REQUEST_KERNEL_ASSOCIATE)&_IrpSp->Parameters; \
+  _Request->AddressHandle = (HANDLE)(AddrHandle);                \
+}
+
+  /*
+ * VOID
+ * TdiBuildConnect(
+ * IN PIRP  Irp,
+ * IN PDEVICE_OBJECT  DevObj,
+ * IN PFILE_OBJECT  FileObj,
+ * IN PVOID  CompRoutine,
+ * IN PVOID  Contxt,
+ * IN PLARGE_INTEGER  Time,
+ * IN PTDI_CONNECTION_INFORMATION  RequestConnectionInfo,
+ * OUT PTDI_CONNECTION_INFORMATION  ReturnConnectionInfo);
+ */
+#define TdiBuildConnect(                                            \
+  Irp, DevObj, FileObj, CompRoutine, Contxt,                        \
+  Time, RequestConnectionInfo, ReturnConnectionInfo)                \
+{                                                                   \
+  PTDI_REQUEST_KERNEL _Request;                                     \
+  PIO_STACK_LOCATION _IrpSp;                                        \
+                                                                    \
+  _IrpSp = IoGetNextIrpStackLocation(Irp);                          \
+                                                                    \
+  TdiBuildBaseIrp(Irp, DevObj, FileObj, CompRoutine,                \
+                  Contxt, _IrpSp, TDI_CONNECT);                     \
+                                                                    \
+  _Request = (PTDI_REQUEST_KERNEL)&_IrpSp->Parameters;              \
+  _Request->RequestConnectionInformation = (RequestConnectionInfo); \
+  _Request->ReturnConnectionInformation  = (ReturnConnectionInfo);  \
+  _Request->RequestSpecific              = (PVOID)(Time);           \
+}
+
+  /*
+ * VOID
+ * TdiBuildDisassociateAddress(
+ * IN PIRP  Irp,
+ * IN PDEVICE_OBJECT  DevObj,
+ * IN PFILE_OBJECT  FileObj,
+ * IN PVOID  CompRoutine,
+ * IN PVOID  Contxt);
+ */
+#define TdiBuildDisassociateAddress(                                \
+  Irp, DevObj, FileObj, CompRoutine, Contxt)                        \
+{                                                                   \
+  PIO_STACK_LOCATION _IrpSp;                                        \
+                                                                    \
+  _IrpSp = IoGetNextIrpStackLocation(Irp);                          \
+                                                                    \
+  TdiBuildBaseIrp(Irp, DevObj, FileObj, CompRoutine,                \
+                  Contxt, _IrpSp, TDI_DISASSOCIATE_ADDRESS);        \
+}
+
+  /*
+ * VOID
+ * TdiBuildDisconnect(
+ * IN PIRP  Irp,
+ * IN PDEVICE_OBJECT  DevObj,
+ * IN PFILE_OBJECT  FileObj,
+ * IN PVOID  CompRoutine,
+ * IN PVOID  Contxt,
+ * IN PLARGE_INTEGER  Time,
+ * IN PULONG  Flags,
+ * IN PTDI_CONNECTION_INFORMATION  RequestConnectionInfo,
+ * OUT PTDI_CONNECTION_INFORMATION  ReturnConnectionInfo);
+ */
+#define TdiBuildDisconnect(                                         \
+  Irp, DevObj, FileObj, CompRoutine, Contxt, Time,                  \
+  Flags, RequestConnectionInfo, ReturnConnectionInfo)               \
+{                                                                   \
+  PTDI_REQUEST_KERNEL _Request;                                     \
+  PIO_STACK_LOCATION _IrpSp;                                        \
+                                                                    \
+  _IrpSp = IoGetNextIrpStackLocation(Irp);                          \
+                                                                    \
+  TdiBuildBaseIrp(Irp, DevObj, FileObj, CompRoutine,                \
+                  Contxt, _IrpSp, TDI_DISCONNECT);                  \
+                                                                    \
+  _Request = (PTDI_REQUEST_KERNEL)&_IrpSp->Parameters;              \
+  _Request->RequestConnectionInformation = (RequestConnectionInfo); \
+  _Request->ReturnConnectionInformation  = (ReturnConnectionInfo);  \
+  _Request->RequestSpecific = (PVOID)(Time);                        \
+  _Request->RequestFlags    = (Flags);                              \
+}
+
+  /*
+ * PIRP
+ * TdiBuildInternalDeviceControlIrp(
+ * IN CCHAR IrpSubFunction,
+ * IN PDEVICE_OBJECT DeviceObject,
+ * IN PFILE_OBJECT FileObject,
+ * IN PKEVENT Event,
+ * IN PIO_STATUS_BLOCK IoStatusBlock);
+ */
+#define TdiBuildInternalDeviceControlIrp( \
+  IrpSubFunction, DeviceObject,           \
+  FileObject, Event, IoStatusBlock)       \
+  IoBuildDeviceIoControlRequest(          \
+		0x00000003, DeviceObject,             \
+		NULL, 0, NULL, 0,                     \
+		TRUE, Event, IoStatusBlock)
+
+  /*
+ * VOID
+ * TdiBuildListen(
+ * IN PIRP  Irp,
+ * IN PDEVICE_OBJECT  DevObj,
+ * IN PFILE_OBJECT  FileObj,
+ * IN PVOID  CompRoutine,
+ * IN PVOID  Contxt,
+ * IN ULONG  Flags,
+ * IN PTDI_CONNECTION_INFORMATION  RequestConnectionInfo,
+ * OUT PTDI_CONNECTION_INFORMATION  ReturnConnectionInfo);
+ */
+#define TdiBuildListen(                                             \
+  Irp, DevObj, FileObj, CompRoutine, Contxt,                        \
+  Flags, RequestConnectionInfo, ReturnConnectionInfo)               \
+{                                                                   \
+  PTDI_REQUEST_KERNEL _Request;                                     \
+  PIO_STACK_LOCATION _IrpSp;                                        \
+                                                                    \
+  _IrpSp = IoGetNextIrpStackLocation(Irp);                          \
+                                                                    \
+  TdiBuildBaseIrp(Irp, DevObj, FileObj, CompRoutine,                \
+                  Contxt, _IrpSp, TDI_LISTEN);                      \
+                                                                    \
+  _Request = (PTDI_REQUEST_KERNEL)&_IrpSp->Parameters;              \
+  _Request->RequestConnectionInformation = (RequestConnectionInfo); \
+  _Request->ReturnConnectionInformation  = (ReturnConnectionInfo);  \
+  _Request->RequestFlags = (Flags);                                 \
+}
+
+TDIKRNLAPI
+VOID
+DDKAPI
+TdiBuildNetbiosAddress(
+  /*IN*/ PUCHAR  NetbiosName,
+  /*IN*/ BOOLEAN  IsGroupName,
+  /*IN OUT*/ PTA_NETBIOS_ADDRESS  NetworkName);
+
+TDIKRNLAPI
+NTSTATUS
+DDKAPI
+TdiBuildNetbiosAddressEa(
+  /*IN*/ PUCHAR  Buffer,
+  /*IN*/ BOOLEAN  IsGroupName,
+  /*IN*/ PUCHAR  NetbiosName);
+
+  /*
+ * VOID
+ * TdiBuildQueryInformation(
+ * IN PIRP  Irp,
+ * IN PDEVICE_OBJECT  DevObj,
+ * IN PFILE_OBJECT  FileObj,
+ * IN PVOID  CompRoutine,
+ * IN PVOID  Contxt,
+ * IN UINT  QType,
+ * IN PMDL  MdlAddr);
+ */
+#define TdiBuildQueryInformation(                                        \
+  Irp, DevObj, FileObj, CompRoutine, Contxt, QType, MdlAddr)             \
+{                                                                        \
+  PTDI_REQUEST_KERNEL_QUERY_INFORMATION _Request;                        \
+  PIO_STACK_LOCATION _IrpSp;                                             \
+                                                                         \
+  _IrpSp = IoGetNextIrpStackLocation(Irp);                               \
+                                                                         \
+  TdiBuildBaseIrp(Irp, DevObj, FileObj, CompRoutine,                     \
+                  Contxt, _IrpSp, TDI_QUERY_INFORMATION);                \
+                                                                         \
+  _Request = (PTDI_REQUEST_KERNEL_QUERY_INFORMATION)&_IrpSp->Parameters; \
+  _Request->RequestConnectionInformation = NULL;                         \
+  _Request->QueryType = (ULONG)(QType);                                  \
+  (Irp)->MdlAddress   = (MdlAddr);                                       \
+}
+
+  /*
+ * VOID
+ * TdiBuildReceive(
+ * IN PIRP  Irp,
+ * IN PDEVICE_OBJECT  DevObj,
+ * IN PFILE_OBJECT  FileObj,
+ * IN PVOID  CompRoutine,
+ * IN PVOID  Contxt,
+ * IN PMDL  MdlAddr,
+ * IN ULONG  InFlags,
+ * IN ULONG  ReceiveLen);
+ */
+#define TdiBuildReceive(                                       \
+  Irp, DevObj, FileObj, CompRoutine, Contxt,                   \
+  MdlAddr, InFlags, ReceiveLen)                                \
+{                                                              \
+  PTDI_REQUEST_KERNEL_RECEIVE _Request;                        \
+  PIO_STACK_LOCATION _IrpSp;                                   \
+                                                               \
+  _IrpSp = IoGetNextIrpStackLocation(Irp);                     \
+                                                               \
+  TdiBuildBaseIrp(Irp, DevObj, FileObj, CompRoutine,           \
+                  Contxt, _IrpSp, TDI_RECEIVE);                \
+                                                               \
+  _Request = (PTDI_REQUEST_KERNEL_RECEIVE)&_IrpSp->Parameters; \
+  _Request->ReceiveFlags  = (InFlags);                         \
+  _Request->ReceiveLength = (ReceiveLen);                      \
+  (Irp)->MdlAddress       = (MdlAddr);                         \
+}
+
+  /*
+ * VOID
+ * TdiBuildReceiveDatagram(
+ * IN PIRP  Irp,
+ * IN PDEVICE_OBJECT  DevObj,
+ * IN PFILE_OBJECT  FileObj,
+ * IN PVOID  CompRoutine,
+ * IN PVOID  Contxt,
+ * IN PMDL  MdlAddr,
+ * IN ULONG  ReceiveLen,
+ * IN PTDI_CONNECTION_INFORMATION  ReceiveDatagramInfo,
+ * OUT PTDI_CONNECTION_INFORMATION  ReturnInfo,
+ *   ULONG InFlags);
+ */
+#define TdiBuildReceiveDatagram(                                 \
+  Irp, DevObj, FileObj, CompRoutine, Contxt, MdlAddr,            \
+  ReceiveLen, ReceiveDatagramInfo, ReturnInfo, InFlags)          \
+{                                                                \
+  PTDI_REQUEST_KERNEL_RECEIVEDG _Request;                        \
+  PIO_STACK_LOCATION _IrpSp;                                     \
+                                                                 \
+  _IrpSp = IoGetNextIrpStackLocation(Irp);                       \
+                                                                 \
+  TdiBuildBaseIrp(Irp, DevObj, FileObj, CompRoutine,             \
+                  Contxt, _IrpSp, TDI_RECEIVE_DATAGRAM);         \
+                                                                 \
+  _Request = (PTDI_REQUEST_KERNEL_RECEIVEDG)&_IrpSp->Parameters; \
+  _Request->ReceiveDatagramInformation = (ReceiveDatagramInfo);  \
+  _Request->ReturnDatagramInformation  = (ReturnInfo);           \
+  _Request->ReceiveLength = (ReceiveLen);                        \
+  _Request->ReceiveFlags  = (InFlags);                           \
+  (Irp)->MdlAddress       = (MdlAddr);                           \
+}
+
+  /*
+ * VOID
+ * TdiBuildSend(
+ * IN PIRP  Irp,
+ * IN PDEVICE_OBJECT  DevObj,
+ * IN PFILE_OBJECT  FileObj,
+ * IN PVOID  CompRoutine,
+ * IN PVOID  Contxt,
+ * IN PMDL  MdlAddr,
+ * IN ULONG  InFlags,
+ * IN ULONG  SendLen);
+ */
+#define TdiBuildSend(                                       \
+  Irp, DevObj, FileObj, CompRoutine, Contxt,                \
+  MdlAddr, InFlags, SendLen)                                \
+{                                                           \
+  PTDI_REQUEST_KERNEL_SEND _Request;                        \
+  PIO_STACK_LOCATION _IrpSp;                                \
+                                                            \
+  _IrpSp = IoGetNextIrpStackLocation(Irp);                  \
+                                                            \
+  TdiBuildBaseIrp(Irp, DevObj, FileObj, CompRoutine,        \
+                  Contxt, _IrpSp, TDI_SEND);                \
+                                                            \
+  _Request = (PTDI_REQUEST_KERNEL_SEND)&_IrpSp->Parameters; \
+  _Request->SendFlags  = (InFlags);                         \
+  _Request->SendLength = (SendLen);                         \
+  (Irp)->MdlAddress    = (MdlAddr);                         \
+}
+
+  /*
+ * VOID
+ * TdiBuildSendDatagram(
+ * IN PIRP  Irp,
+ * IN PDEVICE_OBJECT  DevObj,
+ * IN PFILE_OBJECT  FileObj,
+ * IN PVOID  CompRoutine,
+ * IN PVOID  Contxt,
+ * IN PMDL  MdlAddr,
+ * IN ULONG  SendLen,
+ * IN PTDI_CONNECTION_INFORMATION  SendDatagramInfo);
+ */
+#define TdiBuildSendDatagram(                                 \
+  Irp, DevObj, FileObj, CompRoutine, Contxt,                  \
+  MdlAddr, SendLen, SendDatagramInfo)                         \
+{                                                             \
+  PTDI_REQUEST_KERNEL_SENDDG _Request;                        \
+  PIO_STACK_LOCATION _IrpSp;                                  \
+                                                              \
+  _IrpSp = IoGetNextIrpStackLocation(Irp);                    \
+                                                              \
+  TdiBuildBaseIrp(Irp, DevObj, FileObj, CompRoutine,          \
+                  Contxt, _IrpSp, TDI_SEND_DATAGRAM);         \
+                                                              \
+  _Request = (PTDI_REQUEST_KERNEL_SENDDG)&_IrpSp->Parameters; \
+  _Request->SendDatagramInformation = (SendDatagramInfo);     \
+  _Request->SendLength = (SendLen);                           \
+  (Irp)->MdlAddress    = (MdlAddr);                           \
+}
+
+  /*
+ * VOID
+ * TdiBuildSetEventHandler(
+ * IN PIRP  Irp,
+ * IN PDEVICE_OBJECT  DevObj,
+ * IN PFILE_OBJECT  FileObj,
+ * IN PVOID  CompRoutine,
+ * IN PVOID  Contxt,
+ * IN INT  InEventType,
+ * IN PVOID  InEventHandler,
+ * IN PVOID  InEventContext);
+ */
+#define TdiBuildSetEventHandler(                                 \
+  Irp, DevObj, FileObj, CompRoutine, Contxt,                     \
+  InEventType, InEventHandler, InEventContext)                   \
+{                                                                \
+  PTDI_REQUEST_KERNEL_SET_EVENT _Request;                        \
+  PIO_STACK_LOCATION _IrpSp;                                     \
+                                                                 \
+  _IrpSp = IoGetNextIrpStackLocation(Irp);                       \
+                                                                 \
+  TdiBuildBaseIrp(Irp, DevObj, FileObj, CompRoutine,             \
+                  Contxt, _IrpSp, TDI_SET_EVENT_HANDLER);        \
+                                                                 \
+  _Request = (PTDI_REQUEST_KERNEL_SET_EVENT)&_IrpSp->Parameters; \
+  _Request->EventType    = (InEventType);                        \
+  _Request->EventHandler = (PVOID)(InEventHandler);              \
+  _Request->EventContext = (PVOID)(InEventContext);              \
+}
+
+  /*
+ * VOID
+ * TdiBuildSetInformation(
+ * IN PIRP  Irp,
+ * IN PDEVICE_OBJECT  DevObj,
+ * IN PFILE_OBJECT  FileObj,
+ * IN PVOID  CompRoutine,
+ * IN PVOID  Contxt,
+ * IN UINT  SType,
+ * IN PMDL  MdlAddr);
+ */
+#define TdiBuildSetInformation(                                        \
+  Irp, DevObj, FileObj, CompRoutine, Contxt, SType, MdlAddr)           \
+{                                                                      \
+  PTDI_REQUEST_KERNEL_SET_INFORMATION _Request;                        \
+  PIO_STACK_LOCATION _IrpSp;                                           \
+                                                                       \
+  _IrpSp = IoGetNextIrpStackLocation(Irp);                             \
+                                                                       \
+  TdiBuildBaseIrp(Irp, DevObj, FileObj, CompRoutine,                   \
+                  Contxt, _IrpSp, TDI_SET_INFORMATION);                \
+                                                                       \
+  _Request = (PTDI_REQUEST_KERNEL_SET_INFORMATION)&_IrpSp->Parameters; \
+  _Request->RequestConnectionInformation = NULL;                       \
+  _Request->SetType = (ULONG)(SType);                                  \
+  (Irp)->MdlAddress = (MdlAddr);                                       \
+}
+
+  /* TDI20_CLIENT_INTERFACE_INFO.TdiVersion constants */
+#define TDI_CURRENT_MAJOR_VERSION         2
+#define TDI_CURRENT_MINOR_VERSION         0
+
+#define TDI_CURRENT_VERSION ((TDI_CURRENT_MINOR_VERSION) << 8 \
+  | (TDI_CURRENT_MAJOR_VERSION))
+
+#define TDI_VERSION_ONE                   0x0001
+
+typedef enum _TDI_PNP_OPCODE {
+  TDI_PNP_OP_MIN,
+  TDI_PNP_OP_ADD,
+  TDI_PNP_OP_DEL,
+  TDI_PNP_OP_UPDATE,
+  TDI_PNP_OP_PROVIDERREADY,
+  TDI_PNP_OP_NETREADY,
+  TDI_PNP_OP_ADD_IGNORE_BINDING,
+  TDI_PNP_OP_DELETE_IGNORE_BINDING,
+  TDI_PNP_OP_MAX
+} TDI_PNP_OPCODE;
+
+  /* TDI_PNP_CONTEXT.ContextType */
+#define TDI_PNP_CONTEXT_TYPE_IF_NAME            0x1
+#define TDI_PNP_CONTEXT_TYPE_IF_ADDR            0x2
+#define TDI_PNP_CONTEXT_TYPE_PDO                0x3
+#define TDI_PNP_CONTEXT_TYPE_FIRST_OR_LAST_IF   0x4
+
+typedef struct _TDI_PNP_CONTEXT {
+  USHORT  ContextSize;
+  USHORT  ContextType;
+  UCHAR  ContextData[1];
+} TDI_PNP_CONTEXT, *PTDI_PNP_CONTEXT;
+
+typedef VOID DDKAPI
+(*TDI_ADD_ADDRESS_HANDLER)(
+  /*IN*/ PTA_ADDRESS  Address);
+
+typedef VOID DDKAPI
+(*TDI_ADD_ADDRESS_HANDLER_V2)(
+  /*IN*/ PTA_ADDRESS  Address,
+  /*IN*/ PUNICODE_STRING  DeviceName,
+  /*IN*/ PTDI_PNP_CONTEXT  Context);
+
+typedef VOID DDKAPI
+(*TDI_BINDING_HANDLER)(
+  /*IN*/ TDI_PNP_OPCODE  PnPOpcode,
+  /*IN*/ PUNICODE_STRING  DeviceName,
+  /*IN*/ PWSTR  MultiSZBindList);
+
+typedef VOID DDKAPI
+(*TDI_BIND_HANDLER)(
+  /*IN*/ PUNICODE_STRING  DeviceName);
+
+typedef VOID DDKAPI
+(*TDI_DEL_ADDRESS_HANDLER)(
+  /*IN*/ PTA_ADDRESS  Address);
+
+typedef VOID DDKAPI
+(*TDI_DEL_ADDRESS_HANDLER_V2)(
+  /*IN*/ PTA_ADDRESS  Address,
+  /*IN*/ PUNICODE_STRING  DeviceName,
+  /*IN*/ PTDI_PNP_CONTEXT  Context);
+
+typedef NTSTATUS DDKAPI
+(*TDI_PNP_POWER_HANDLER)(
+  /*IN*/ PUNICODE_STRING  DeviceName,
+  /*IN*/ PNET_PNP_EVENT  PowerEvent,
+  /*IN*/ PTDI_PNP_CONTEXT  Context1,
+  /*IN*/ PTDI_PNP_CONTEXT  Context2);
+
+typedef VOID DDKAPI
+(*TDI_UNBIND_HANDLER)(
+  /*IN*/ PUNICODE_STRING  DeviceName);
+
+typedef VOID DDKAPI
+(*ProviderPnPPowerComplete)(
+  /*IN*/ PNET_PNP_EVENT  NetEvent,
+  /*IN*/ NTSTATUS  ProviderStatus);
+
+typedef struct _TDI20_CLIENT_INTERFACE_INFO {
+  _ANONYMOUS_UNION union {
+    _ANONYMOUS_STRUCT struct {
+      UCHAR  MajorTdiVersion;
+      UCHAR  MinorTdiVersion;
+    } DUMMYSTRUCTNAME;
+    USHORT TdiVersion;
+  } DUMMYUNIONNAME;
+  USHORT  Unused;
+  PUNICODE_STRING  ClientName;
+  TDI_PNP_POWER_HANDLER  PnPPowerHandler;
+  _ANONYMOUS_UNION union {
+    TDI_BINDING_HANDLER  BindingHandler;
+    _ANONYMOUS_STRUCT struct {
+      TDI_BIND_HANDLER  BindHandler;
+      TDI_UNBIND_HANDLER  UnBindHandler;
+    } DUMMYSTRUCTNAME;
+  }DUMMYUNIONNAME2;
+  _ANONYMOUS_UNION union {
+    _ANONYMOUS_STRUCT struct {
+      TDI_ADD_ADDRESS_HANDLER_V2  AddAddressHandlerV2;
+      TDI_DEL_ADDRESS_HANDLER_V2  DelAddressHandlerV2;
+    } DUMMYSTRUCTNAME;
+    _ANONYMOUS_STRUCT struct {
+      TDI_ADD_ADDRESS_HANDLER  AddAddressHandler;
+      TDI_DEL_ADDRESS_HANDLER  DelAddressHandler;
+    } DUMMYSTRUCTNAME2;
+  } DUMMYUNIONNAME3;
+} TDI20_CLIENT_INTERFACE_INFO, *PTDI20_CLIENT_INTERFACE_INFO;
+
+typedef TDI20_CLIENT_INTERFACE_INFO TDI_CLIENT_INTERFACE_INFO;
+typedef TDI_CLIENT_INTERFACE_INFO *PTDI_CLIENT_INTERFACE_INFO;
+
+
+  /* TDI functions */
+
+  /*
+ * VOID
+ * TdiCompleteRequest(
+ * IN PIRP Irp,
+ * IN NTSTATUS Status);
+ */
+#define TdiCompleteRequest(Irp, Status)           \
+{                                                 \
+  (Irp)->IoStatus.Status = (Status);              \
+  IoCompleteRequest((Irp), IO_NETWORK_INCREMENT); \
+}
+
+TDIKRNLAPI
+NTSTATUS
+DDKAPI
+TdiCopyBufferToMdl(
+  /*IN*/ PVOID  SourceBuffer,
+  /*IN*/ ULONG  SourceOffset,
+  /*IN*/ ULONG  SourceBytesToCopy,
+  /*IN*/ PMDL  DestinationMdlChain,
+  /*IN*/ ULONG  DestinationOffset,
+  /*IN*/ PULONG  BytesCopied);
+
+  /*
+ * VOID
+ * TdiCopyLookaheadData(
+ * IN PVOID  Destination,
+ * IN PVOID  Source,
+ * IN ULONG  Length,
+ * IN ULONG  ReceiveFlags);
+ */
+#define TdiCopyLookaheadData(Destination, Source, Length, ReceiveFlags) \
+  RtlCopyMemory(Destination, Source, Length)
+
+TDIKRNLAPI
+NTSTATUS
+DDKAPI
+TdiCopyMdlChainToMdlChain (
+  /*IN*/ PMDL  SourceMdlChain,
+  /*IN*/ ULONG  SourceOffset,
+  /*IN*/ PMDL  DestinationMdlChain,
+  /*IN*/ ULONG  DestinationOffset,
+  /*OUT*/ PULONG  BytesCopied);
+
+TDIKRNLAPI
+NTSTATUS
+DDKAPI
+TdiCopyMdlToBuffer(
+  /*IN*/ PMDL  SourceMdlChain,
+  /*IN*/ ULONG  SourceOffset,
+  /*IN*/ PVOID  DestinationBuffer,
+  /*IN*/ ULONG  DestinationOffset,
+  /*IN*/ ULONG  DestinationBufferSize,
+  /*OUT*/ PULONG  BytesCopied);
+
+TDIKRNLAPI
+NTSTATUS
+DDKAPI
+TdiDeregisterAddressChangeHandler(
+  /*IN*/ HANDLE  BindingHandle);
+
+TDIKRNLAPI
+NTSTATUS
+DDKAPI
+TdiDeregisterDeviceObject(
+  /*IN*/ HANDLE  DevRegistrationHandle);
+
+TDIKRNLAPI
+NTSTATUS
+DDKAPI
+TdiDeregisterNetAddress(
+  /*IN*/ HANDLE  AddrRegistrationHandle);
+
+TDIKRNLAPI
+NTSTATUS
+DDKAPI
+TdiDeregisterPnPHandlers(
+  /*IN*/ HANDLE  BindingHandle);
+
+TDIKRNLAPI
+NTSTATUS
+DDKAPI
+TdiDeregisterProvider(
+  /*IN*/ HANDLE  ProviderHandle);
+
+TDIKRNLAPI
+NTSTATUS
+DDKAPI
+TdiEnumerateAddresses(
+  /*IN*/ HANDLE  BindingHandle);
+
+TDIKRNLAPI
+VOID
+DDKAPI
+TdiInitialize(
+  VOID);
+
+TDIKRNLAPI
+VOID
+DDKAPI
+TdiMapBuffer(
+  /*IN*/ PMDL  MdlChain);
+
+TDIKRNLAPI
+NTSTATUS
+DDKAPI
+TdiMapUserRequest(
+  /*IN*/ PDEVICE_OBJECT  DeviceObject,
+  /*IN*/ PIRP  Irp,
+  /*IN*/ PIO_STACK_LOCATION  IrpSp);
+
+TDIKRNLAPI
+BOOLEAN
+DDKAPI
+TdiMatchPdoWithChainedReceiveContext(
+  /*IN*/ PVOID TsduDescriptor,
+  /*IN*/ PVOID PDO);
+
+TDIKRNLAPI
+VOID
+DDKAPI
+TdiPnPPowerComplete(
+  /*IN*/ HANDLE  BindingHandle,
+  /*IN*/ PNET_PNP_EVENT  PowerEvent,
+  /*IN*/ NTSTATUS  Status);
+
+TDIKRNLAPI
+NTSTATUS
+DDKAPI
+TdiPnPPowerRequest(
+  /*IN*/ PUNICODE_STRING  DeviceName,
+  /*IN*/ PNET_PNP_EVENT  PowerEvent,
+  /*IN*/ PTDI_PNP_CONTEXT  Context1,
+  /*IN*/ PTDI_PNP_CONTEXT  Context2,
+  /*IN*/ ProviderPnPPowerComplete  ProtocolCompletionHandler);
+
+TDIKRNLAPI
+NTSTATUS
+DDKAPI
+TdiProviderReady(
+  /*IN*/ HANDLE  ProviderHandle);
+
+TDIKRNLAPI
+NTSTATUS
+DDKAPI
+TdiRegisterAddressChangeHandler(
+  /*IN*/ TDI_ADD_ADDRESS_HANDLER  AddHandler,
+  /*IN*/ TDI_DEL_ADDRESS_HANDLER  DeleteHandler,
+  /*OUT*/ HANDLE  *BindingHandle);
+
+TDIKRNLAPI
+NTSTATUS
+DDKAPI
+TdiRegisterDeviceObject(
+  /*IN*/ PUNICODE_STRING  DeviceName,
+  /*OUT*/ HANDLE  *DevRegistrationHandle);
+
+TDIKRNLAPI
+NTSTATUS
+DDKAPI
+TdiRegisterNetAddress(
+  /*IN*/ PTA_ADDRESS  Address,
+  /*IN*/ PUNICODE_STRING  DeviceName,
+  /*IN*/ PTDI_PNP_CONTEXT  Context,
+  /*OUT*/ HANDLE  *AddrRegistrationHandle);
+
+TDIKRNLAPI
+NTSTATUS
+DDKAPI
+TdiRegisterNotificationHandler(
+  /*IN*/ TDI_BIND_HANDLER  BindHandler,
+  /*IN*/ TDI_UNBIND_HANDLER  UnbindHandler,
+  /*OUT*/ HANDLE  *BindingHandle);
+
+TDIKRNLAPI
+NTSTATUS
+DDKAPI
+TdiRegisterPnPHandlers(
+  /*IN*/ PTDI_CLIENT_INTERFACE_INFO  ClientInterfaceInfo,
+  /*IN*/ ULONG  InterfaceInfoSize,
+  /*OUT*/ HANDLE  *BindingHandle);
+
+TDIKRNLAPI
+NTSTATUS
+DDKAPI
+TdiRegisterProvider(
+  /*IN*/ PUNICODE_STRING  ProviderName,
+  /*OUT*/ HANDLE  *ProviderHandle);
+
+TDIKRNLAPI
+VOID
+DDKAPI
+TdiReturnChainedReceives(
+  /*IN*/ PVOID  *TsduDescriptors,
+  /*IN*/ ULONG   NumberOfTsdus);
+
+TDIKRNLAPI
+VOID
+DDKAPI
+TdiUnmapBuffer(
+  /*IN*/ PMDL  MdlChain);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __TDIKRNL_H */
Index: Daodan/MinGW/include/ddk/tdistat.h
===================================================================
--- Daodan/MinGW/include/ddk/tdistat.h	(revision 1046)
+++ Daodan/MinGW/include/ddk/tdistat.h	(revision 1046)
@@ -0,0 +1,83 @@
+/*
+ * tdistat.h
+ *
+ * TDI status codes
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __TDISTAT_H
+#define __TDISTAT_H
+
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define TDI_SUCCESS                       STATUS_SUCCESS
+#define TDI_NO_RESOURCES                  STATUS_INSUFFICIENT_RESOURCES
+#define TDI_ADDR_IN_USE                   STATUS_ADDRESS_ALREADY_EXISTS
+#define TDI_BAD_ADDR                      STATUS_INVALID_ADDRESS_COMPONENT
+#define TDI_NO_FREE_ADDR                  STATUS_TOO_MANY_ADDRESSES
+#define TDI_ADDR_INVALID                  STATUS_INVALID_ADDRESS
+#define TDI_ADDR_DELETED                  STATUS_ADDRESS_CLOSED
+#define TDI_BUFFER_OVERFLOW               STATUS_BUFFER_OVERFLOW
+#define TDI_BAD_EVENT_TYPE                STATUS_INVALID_PARAMETER
+#define TDI_BAD_OPTION                    STATUS_INVALID_PARAMETER
+#define TDI_CONN_REFUSED                  STATUS_CONNECTION_REFUSED
+#define TDI_INVALID_CONNECTION            STATUS_CONNECTION_INVALID
+#define TDI_ALREADY_ASSOCIATED            STATUS_ADDRESS_ALREADY_ASSOCIATED
+#define TDI_NOT_ASSOCIATED                STATUS_ADDRESS_NOT_ASSOCIATED
+#define TDI_CONNECTION_ACTIVE             STATUS_CONNECTION_ACTIVE
+#define TDI_CONNECTION_ABORTED            STATUS_CONNECTION_ABORTED
+#define TDI_CONNECTION_RESET              STATUS_CONNECTION_RESET
+#define TDI_TIMED_OUT                     STATUS_IO_TIMEOUT
+#define TDI_GRACEFUL_DISC                 STATUS_GRACEFUL_DISCONNECT
+#define TDI_NOT_ACCEPTED                  STATUS_DATA_NOT_ACCEPTED
+#define TDI_MORE_PROCESSING               STATUS_MORE_PROCESSING_REQUIRED
+#define TDI_INVALID_STATE                 STATUS_INVALID_DEVICE_STATE
+#define TDI_INVALID_PARAMETER             STATUS_INVALID_PARAMETER
+#define TDI_DEST_NET_UNREACH              STATUS_NETWORK_UNREACHABLE
+#define TDI_DEST_HOST_UNREACH             STATUS_HOST_UNREACHABLE
+#define TDI_DEST_UNREACHABLE              TDI_DEST_HOST_UNREACH
+#define TDI_DEST_PROT_UNREACH             STATUS_PROTOCOL_UNREACHABLE
+#define TDI_DEST_PORT_UNREACH             STATUS_PORT_UNREACHABLE
+#define TDI_INVALID_QUERY                 STATUS_INVALID_DEVICE_REQUEST
+#define TDI_REQ_ABORTED                   STATUS_REQUEST_ABORTED
+#define TDI_BUFFER_TOO_SMALL              STATUS_BUFFER_TOO_SMALL
+#define TDI_CANCELLED                     STATUS_CANCELLED
+#define	TDI_BUFFER_TOO_BIG		            STATUS_INVALID_BUFFER_SIZE
+#define TDI_INVALID_REQUEST               STATUS_INVALID_DEVICE_REQUEST
+#define TDI_PENDING                       STATUS_PENDING
+#define TDI_ITEM_NOT_FOUND                STATUS_OBJECT_NAME_NOT_FOUND
+
+#define TDI_STATUS_BAD_VERSION            0xC0010004L
+#define TDI_STATUS_BAD_CHARACTERISTICS    0xC0010005L
+
+#define	TDI_OPTION_EOL                    0
+
+#define	TDI_ADDRESS_OPTION_REUSE          1
+#define	TDI_ADDRESS_OPTION_DHCP           2
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __TDISTAT_H */
Index: Daodan/MinGW/include/ddk/tvout.h
===================================================================
--- Daodan/MinGW/include/ddk/tvout.h	(revision 1046)
+++ Daodan/MinGW/include/ddk/tvout.h	(revision 1046)
@@ -0,0 +1,116 @@
+/*
+ * tvout.h
+ *
+ * Definitions for TV-out support
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __TVOUT_H
+#define __TVOUT_H
+
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "ntddk.h"
+
+/* VIDEOPARAMETERS.dwCommand constants */
+#define VP_COMMAND_GET                    0x00000001
+#define VP_COMMAND_SET                    0x00000002
+
+/* VIDEOPARAMETERS.dwFlags constants */
+#define VP_FLAGS_TV_MODE                  0x00000001
+#define VP_FLAGS_TV_STANDARD              0x00000002
+#define VP_FLAGS_FLICKER                  0x00000004
+#define VP_FLAGS_OVERSCAN                 0x00000008
+#define VP_FLAGS_MAX_UNSCALED             0x00000010
+#define VP_FLAGS_POSITION                 0x00000020
+#define VP_FLAGS_BRIGHTNESS               0x00000040
+#define VP_FLAGS_CONTRAST                 0x00000080
+#define VP_FLAGS_COPYPROTECT              0x00000100
+
+/* VIDEOPARAMETERS.dwMode constants */
+#define VP_MODE_WIN_GRAPHICS              0x00000001
+#define VP_MODE_TV_PLAYBACK               0x00000002
+
+/* VIDEOPARAMETERS.dwTVStandard/dwAvailableTVStandard constants */
+#define VP_TV_STANDARD_NTSC_M             0x00000001
+#define VP_TV_STANDARD_NTSC_M_J           0x00000002
+#define VP_TV_STANDARD_PAL_B              0x00000004
+#define VP_TV_STANDARD_PAL_D              0x00000008
+#define VP_TV_STANDARD_PAL_H              0x00000010
+#define VP_TV_STANDARD_PAL_I              0x00000020
+#define VP_TV_STANDARD_PAL_M              0x00000040
+#define VP_TV_STANDARD_PAL_N              0x00000080
+#define VP_TV_STANDARD_SECAM_B            0x00000100
+#define VP_TV_STANDARD_SECAM_D            0x00000200
+#define VP_TV_STANDARD_SECAM_G            0x00000400
+#define VP_TV_STANDARD_SECAM_H            0x00000800
+#define VP_TV_STANDARD_SECAM_K            0x00001000
+#define VP_TV_STANDARD_SECAM_K1           0x00002000
+#define VP_TV_STANDARD_SECAM_L            0x00004000
+#define VP_TV_STANDARD_WIN_VGA            0x00008000
+#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
+
+/* VIDEOPARAMETERS.dwMode constants */
+#define VP_CP_TYPE_APS_TRIGGER            0x00000001
+#define VP_CP_TYPE_MACROVISION            0x00000002
+
+/* VIDEOPARAMETERS.dwCPCommand constants */
+#define VP_CP_CMD_ACTIVATE                0x00000001
+#define VP_CP_CMD_DEACTIVATE              0x00000002
+#define VP_CP_CMD_CHANGE                  0x00000004
+
+typedef struct _VIDEOPARAMETERS {
+  GUID  Guid;
+  DWORD  dwOffset;
+  DWORD  dwCommand;
+  DWORD  dwFlags;
+  DWORD  dwMode;
+  DWORD  dwTVStandard;
+  DWORD  dwAvailableModes;
+  DWORD  dwAvailableTVStandard;
+  DWORD  dwFlickerFilter;
+  DWORD  dwOverScanX;
+  DWORD  dwOverScanY;
+  DWORD  dwMaxUnscaledX;
+  DWORD  dwMaxUnscaledY;
+  DWORD  dwPositionX;
+  DWORD  dwPositionY;
+  DWORD  dwBrightness;
+  DWORD  dwContrast;
+  DWORD  dwCPType;
+  DWORD  dwCPCommand;
+  DWORD  dwCPStandard;
+  DWORD  dwCPKey;
+  BYTE  bCP_APSTriggerBits;
+  BYTE  bOEMCopyProtection[256];
+} VIDEOPARAMETERS, *PVIDEOPARAMETERS, FAR *LPVIDEOPARAMETERS;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __TVOUT_H */
Index: Daodan/MinGW/include/ddk/upssvc.h
===================================================================
--- Daodan/MinGW/include/ddk/upssvc.h	(revision 1046)
+++ Daodan/MinGW/include/ddk/upssvc.h	(revision 1046)
@@ -0,0 +1,94 @@
+/*
+ * upssvc.h
+ *
+ * UPS service interface
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __UPSSVC_H
+#define __UPSSVC_H
+
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "ntddk.h"
+
+#if defined(_APCUPS_)
+  #define UPSAPI DECLSPEC_EXPORT
+#else
+  #define UPSAPI DECLSPEC_IMPORT
+#endif
+
+
+#define UPS_ONLINE                        1
+#define UPS_ONBATTERY                     2
+#define UPS_LOWBATTERY                    4
+#define UPS_NOCOMM                        8
+#define UPS_CRITICAL                      16
+
+UPSAPI
+VOID
+DDKAPI
+UPSCancelWait(VOID);
+
+UPSAPI
+DWORD
+DDKAPI
+UPSGetState(VOID);
+
+#define UPS_INITUNKNOWNERROR              0
+#define UPS_INITOK                        1
+#define UPS_INITNOSUCHDRIVER              2
+#define UPS_INITBADINTERFACE              3
+#define UPS_INITREGISTRYERROR             4
+#define UPS_INITCOMMOPENERROR             5
+#define UPS_INITCOMMSETUPERROR            6
+
+UPSAPI
+DWORD
+DDKAPI
+UPSInit(VOID);
+
+UPSAPI
+VOID
+DDKAPI
+UPSStop(VOID);
+
+UPSAPI
+VOID
+DDKAPI
+UPSTurnOff(
+  /*IN*/ DWORD  aTurnOffDelay);
+
+UPSAPI
+VOID
+DDKAPI
+UPSWaitForStateChange(
+  /*IN*/ DWORD  aCurrentState,
+  /*IN*/ DWORD  anInterval);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __UPSSVC_H */
Index: Daodan/MinGW/include/ddk/usb.h
===================================================================
--- Daodan/MinGW/include/ddk/usb.h	(revision 1046)
+++ Daodan/MinGW/include/ddk/usb.h	(revision 1046)
@@ -0,0 +1,471 @@
+/*
+ * usb.h
+ *
+ * USB support.
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __USB_H
+#define __USB_H
+
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __USBDI_H
+#error usbdi.h cannot be included with usb.h
+#else
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "ntddk.h"
+#include "usb100.h"
+
+typedef LONG USBD_STATUS;
+typedef PVOID USBD_PIPE_HANDLE;
+typedef PVOID USBD_CONFIGURATION_HANDLE;
+typedef PVOID USBD_INTERFACE_HANDLE;
+
+#define USBD_STATUS_SUCCESS               ((USBD_STATUS)0x00000000L)
+#define USBD_STATUS_PENDING               ((USBD_STATUS)0x40000000L)
+#define USBD_STATUS_CRC                   ((USBD_STATUS)0xC0000001L)
+#define USBD_STATUS_BTSTUFF               ((USBD_STATUS)0xC0000002L)
+#define USBD_STATUS_DATA_TOGGLE_MISMATCH  ((USBD_STATUS)0xC0000003L)
+#define USBD_STATUS_STALL_PID             ((USBD_STATUS)0xC0000004L)
+#define USBD_STATUS_DEV_NOT_RESPONDING    ((USBD_STATUS)0xC0000005L)
+#define USBD_STATUS_PID_CHECK_FAILURE     ((USBD_STATUS)0xC0000006L)
+#define USBD_STATUS_UNEXPECTED_PID        ((USBD_STATUS)0xC0000007L)
+#define USBD_STATUS_DATA_OVERRUN          ((USBD_STATUS)0xC0000008L)
+#define USBD_STATUS_DATA_UNDERRUN         ((USBD_STATUS)0xC0000009L)
+#define USBD_STATUS_RESERVED1             ((USBD_STATUS)0xC000000AL)
+#define USBD_STATUS_RESERVED2             ((USBD_STATUS)0xC000000BL)
+#define USBD_STATUS_BUFFER_OVERRUN        ((USBD_STATUS)0xC000000CL)
+#define USBD_STATUS_BUFFER_UNDERRUN       ((USBD_STATUS)0xC000000DL)
+#define USBD_STATUS_NOT_ACCESSED          ((USBD_STATUS)0xC000000FL)
+#define USBD_STATUS_FIFO                  ((USBD_STATUS)0xC0000010L)
+#define USBD_STATUS_XACT_ERROR            ((USBD_STATUS)0xC0000011L)
+#define USBD_STATUS_BABBLE_DETECTED       ((USBD_STATUS)0xC0000012L)
+#define USBD_STATUS_DATA_BUFFER_ERROR     ((USBD_STATUS)0xC0000013L)
+#define USBD_STATUS_ENDPOINT_HALTED       ((USBD_STATUS)0xC0000030L)
+#define USBD_STATUS_INVALID_URB_FUNCTION  ((USBD_STATUS)0x80000200L)
+#define USBD_STATUS_INVALID_PARAMETER     ((USBD_STATUS)0x80000300L)
+#define USBD_STATUS_ERROR_BUSY            ((USBD_STATUS)0x80000400L)
+#define USBD_STATUS_INVALID_PIPE_HANDLE   ((USBD_STATUS)0x80000600L)
+#define USBD_STATUS_NO_BANDWIDTH          ((USBD_STATUS)0x80000700L)
+#define USBD_STATUS_INTERNAL_HC_ERROR     ((USBD_STATUS)0x80000800L)
+#define USBD_STATUS_ERROR_SHORT_TRANSFER  ((USBD_STATUS)0x80000900L)
+#define USBD_STATUS_BAD_START_FRAME       ((USBD_STATUS)0xC0000A00L)
+#define USBD_STATUS_ISOCH_REQUEST_FAILED  ((USBD_STATUS)0xC0000B00L)
+#define USBD_STATUS_FRAME_CONTROL_OWNED   ((USBD_STATUS)0xC0000C00L)
+#define USBD_STATUS_FRAME_CONTROL_NOT_OWNED \
+                                          ((USBD_STATUS)0xC0000D00L)
+#define USBD_STATUS_NOT_SUPPORTED         ((USBD_STATUS)0xC0000E00L)
+#define USBD_STATUS_INAVLID_CONFIGURATION_DESCRIPTOR \
+                                          ((USBD_STATUS)0xC0000F00L)
+#define USBD_STATUS_INSUFFICIENT_RESOURCES \
+                                          ((USBD_STATUS)0xC0001000L)
+#define USBD_STATUS_SET_CONFIG_FAILED     ((USBD_STATUS)0xC0002000L)
+#define USBD_STATUS_BUFFER_TOO_SMALL      ((USBD_STATUS)0xC0003000L)
+#define USBD_STATUS_INTERFACE_NOT_FOUND   ((USBD_STATUS)0xC0004000L)
+#define USBD_STATUS_INAVLID_PIPE_FLAGS    ((USBD_STATUS)0xC0005000L)
+#define USBD_STATUS_TIMEOUT               ((USBD_STATUS)0xC0006000L)
+#define USBD_STATUS_DEVICE_GONE           ((USBD_STATUS)0xC0007000L)
+#define USBD_STATUS_STATUS_NOT_MAPPED     ((USBD_STATUS)0xC0008000L)
+#define USBD_STATUS_CANCELED              ((USBD_STATUS)0xC0010000L)
+#define USBD_STATUS_ISO_NOT_ACCESSED_BY_HW \
+                                          ((USBD_STATUS)0xC0020000L)
+#define USBD_STATUS_ISO_TD_ERROR          ((USBD_STATUS)0xC0030000L)
+#define USBD_STATUS_ISO_NA_LATE_USBPORT   ((USBD_STATUS)0xC0040000L)
+#define USBD_STATUS_ISO_NOT_ACCESSED_LATE ((USBD_STATUS)0xC0050000L)
+
+#define USBD_SUCCESS(Status) ((USBD_STATUS)(Status) >= 0)
+#define USBD_PENDING(Status) ((ULONG)(Status) >> 30 == 1)
+#define USBD_ERROR(Status) ((USBD_STATUS)(Status) < 0)
+
+/* URB TransferFlags constants */
+#define USBD_TRANSFER_DIRECTION(x)        ((x) & USBD_TRANSFER_DIRECTION_IN)
+#define USBD_TRANSFER_DIRECTION_OUT       0
+#define USBD_TRANSFER_DIRECTION_BIT       0
+#define USBD_TRANSFER_DIRECTION_IN        (1 << USBD_TRANSFER_DIRECTION_BIT)
+#define USBD_SHORT_TRANSFER_OK_BIT        1
+#define USBD_SHORT_TRANSFER_OK            (1 << USBD_SHORT_TRANSFER_OK_BIT)
+#define USBD_START_ISO_TRANSFER_ASAP_BIT  2
+#define USBD_START_ISO_TRANSFER_ASAP      (1 << USBD_START_ISO_TRANSFER_ASAP_BIT)
+#define USBD_DEFAULT_PIPE_TRANSFER_BIT    3
+#define USBD_DEFAULT_PIPE_TRANSFER        (1 << USBD_DEFAULT_PIPE_TRANSFER_BIT)
+
+#define USBD_TRANSFER_DIRECTION_FLAG(flags) ((flags) & USBD_TRANSFER_DIRECTION)
+
+#define VALID_TRANSFER_FLAGS_MASK \
+  (USBD_SHORT_TRANSFER_OK | \
+  USBD_TRANSFER_DIRECTION | \
+  USBD_START_ISO_TRANSFER_ASAP | \
+  USBD_DEFAULT_PIPE_TRANSFER)
+
+#define USB_DEFAULT_DEVICE_ADDRESS        0
+#define USB_DEFAULT_ENDPOINT_ADDRESS      0
+#define USB_DEFAULT_MAX_PACKET            64
+#define USBD_ISO_START_FRAME_RANGE        1024
+#define USBD_DEFAULT_MAXIMUM_TRANSFER_SIZE  0xFFFFFFFF
+
+typedef enum _USB_CONTROLLER_FLAVOR {
+	USB_HcGeneric = 0,
+	OHCI_Generic = 100,
+	OHCI_Hydra,
+	OHCI_NEC,
+	UHCI_Generic = 200,
+	UHCI_Piix4,
+	UHCI_Piix3,
+	UHCI_Ich2_1,
+	UHCI_Ich2_2,
+	UHCI_Ich1,
+	UHCI_VIA = 250,
+	EHCI_Generic = 1000,
+	EHCI_NEC = 2000,
+	EHCI_Lucent = 3000
+} USB_CONTROLLER_FLAVOR;
+
+struct _URB_HEADER {
+	USHORT  Length;
+	USHORT  Function;
+	USBD_STATUS  Status;
+	PVOID  UsbdDeviceHandle;
+	ULONG  UsbdFlags;
+};
+
+typedef struct _USBD_VERSION_INFORMATION {
+	ULONG  USBDI_Version;
+	ULONG  Supported_USB_Version;
+} USBD_VERSION_INFORMATION, *PUSBD_VERSION_INFORMATION;
+
+struct _URB_HCD_AREA {
+  PVOID  Reserved8[8];
+};
+
+struct _URB_BULK_OR_INTERRUPT_TRANSFER {
+  struct _URB_HEADER  Hdr;
+  USBD_PIPE_HANDLE  PipeHandle;
+  ULONG  TransferFlags;
+  ULONG  TransferBufferLength;
+  PVOID  TransferBuffer;
+  PMDL  TransferBufferMDL;
+  struct _URB  *UrbLink;
+  struct _URB_HCD_AREA  hca;
+};
+
+struct _URB_CONTROL_DESCRIPTOR_REQUEST {
+  struct _URB_HEADER  Hdr;
+  PVOID  Reserved;
+  ULONG  Reserved0;
+  ULONG  TransferBufferLength;
+  PVOID  TransferBuffer;
+  PMDL  TransferBufferMDL;
+  struct _URB *UrbLink;
+	struct _URB_HCD_AREA  hca;
+	USHORT  Reserved1;
+  UCHAR  Index;
+  UCHAR  DescriptorType;
+  USHORT  LanguageId;
+  USHORT  Reserved2;
+};
+
+struct _URB_CONTROL_FEATURE_REQUEST {
+  struct _URB_HEADER  Hdr;
+	PVOID  Reserved;
+	ULONG  Reserved2;
+	ULONG  Reserved3;
+	PVOID  Reserved4;
+	PMDL  Reserved5;
+  struct _URB  *UrbLink;
+	struct _URB_HCD_AREA  hca;
+	USHORT  Reserved0;
+  USHORT  FeatureSelector;
+  USHORT  Index;
+  USHORT Reserved1;
+};
+
+struct _URB_CONTROL_GET_CONFIGURATION_REQUEST {
+  struct _URB_HEADER  Hdr;
+	PVOID  Reserved;
+	ULONG  Reserved0;
+  ULONG  TransferBufferLength;
+  PVOID  TransferBuffer;
+  PMDL  TransferBufferMDL;
+  struct _URB  *UrbLink;
+	struct _URB_HCD_AREA  hca;
+	UCHAR  Reserved1[8];
+};
+
+struct _URB_CONTROL_GET_INTERFACE_REQUEST {
+	struct _URB_HEADER  Hdr;
+	PVOID  Reserved;
+	ULONG  Reserved0;
+	ULONG  TransferBufferLength;
+	PVOID  TransferBuffer;
+	PMDL  TransferBufferMDL;
+	struct _URB  *UrbLink;
+	struct _URB_HCD_AREA  hca;
+	UCHAR  Reserved1[4];
+	USHORT  Interface;
+	USHORT  Reserved2;
+};
+
+struct _URB_CONTROL_GET_STATUS_REQUEST {
+	struct _URB_HEADER  Hdr;
+	PVOID  Reserved;
+	ULONG  Reserved0;
+	ULONG  TransferBufferLength;
+	PVOID  TransferBuffer;
+	PMDL  TransferBufferMDL;
+	struct _URB  *UrbLink;
+	struct _URB_HCD_AREA  hca;
+	UCHAR  Reserved1[4];
+	USHORT  Index;
+	USHORT  Reserved2;
+};
+
+struct _URB_CONTROL_TRANSFER {
+  struct _URB_HEADER  Hdr;
+  USBD_PIPE_HANDLE  PipeHandle;
+  ULONG  TransferFlags;
+  ULONG  TransferBufferLength;
+  PVOID  TransferBuffer;
+  PMDL TransferBufferMDL;
+  struct _URB  *UrbLink;
+  struct _URB_HCD_AREA  hca;
+  UCHAR  SetupPacket[8];
+};
+
+struct _URB_CONTROL_VENDOR_OR_CLASS_REQUEST {
+	struct _URB_HEADER  Hdr;
+	PVOID  Reserved;
+	ULONG  TransferFlags;
+	ULONG  TransferBufferLength;
+	PVOID  TransferBuffer;
+	PMDL  TransferBufferMDL;
+	struct _URB  *UrbLink;
+	struct _URB_HCD_AREA  hca;
+	UCHAR  RequestTypeReservedBits;
+	UCHAR  Request;
+	USHORT  Value;
+	USHORT  Index;
+	USHORT  Reserved1;
+};
+
+struct _URB_FRAME_LENGTH_CONTROL {
+  struct _URB_HEADER  Hdr;
+};
+
+struct _URB_GET_CURRENT_FRAME_NUMBER {
+  struct _URB_HEADER  Hdr;
+  ULONG  FrameNumber;
+};
+
+struct _URB_GET_FRAME_LENGTH {
+  struct _URB_HEADER  Hdr;
+  ULONG  FrameLength;
+  ULONG  FrameNumber;
+};
+
+typedef struct _USBD_ISO_PACKET_DESCRIPTOR {
+  ULONG  Offset;
+  ULONG  Length;
+  USBD_STATUS  Status;
+} USBD_ISO_PACKET_DESCRIPTOR, *PUSBD_ISO_PACKET_DESCRIPTOR;
+
+struct _URB_ISOCH_TRANSFER {
+  struct _URB_HEADER  Hdr;
+  USBD_PIPE_HANDLE  PipeHandle;
+  ULONG  TransferFlags;
+  ULONG  TransferBufferLength;
+  PVOID  TransferBuffer;
+  PMDL  TransferBufferMDL;
+	struct _URB  *UrbLink;
+	struct _URB_HCD_AREA  hca;
+  ULONG  StartFrame;
+  ULONG  NumberOfPackets;
+  ULONG  ErrorCount;
+  USBD_ISO_PACKET_DESCRIPTOR  IsoPacket[1];
+};
+
+typedef enum _USBD_PIPE_TYPE {
+	UsbdPipeTypeControl,
+	UsbdPipeTypeIsochronous,
+	UsbdPipeTypeBulk,
+	UsbdPipeTypeInterrupt
+} USBD_PIPE_TYPE;
+
+typedef struct _USBD_PIPE_INFORMATION {
+  USHORT  MaximumPacketSize;
+  UCHAR  EndpointAddress;
+  UCHAR  Interval;
+  USBD_PIPE_TYPE  PipeType;
+  USBD_PIPE_HANDLE  PipeHandle;
+  ULONG  MaximumTransferSize;
+  ULONG  PipeFlags;
+} USBD_PIPE_INFORMATION, *PUSBD_PIPE_INFORMATION ;
+
+#define USBD_PIPE_DIRECTION_IN(pipeInformation) \
+  ((pipeInformation)->EndpointAddress & USB_ENDPOINT_DIRECTION_MASK)
+
+typedef struct _USBD_INTERFACE_INFORMATION {
+  USHORT  Length;
+  UCHAR  InterfaceNumber;
+  UCHAR  AlternateSetting;
+  UCHAR  Class;
+  UCHAR  SubClass;
+  UCHAR  Protocol;
+  UCHAR  Reserved;
+  USBD_INTERFACE_HANDLE  InterfaceHandle;
+  ULONG  NumberOfPipes;
+  USBD_PIPE_INFORMATION Pipes[1];
+} USBD_INTERFACE_INFORMATION, *PUSBD_INTERFACE_INFORMATION;
+
+struct _URB_SELECT_INTERFACE {
+  struct _URB_HEADER  Hdr;
+  USBD_CONFIGURATION_HANDLE  ConfigurationHandle;
+  USBD_INTERFACE_INFORMATION  Interface;
+};
+
+struct _URB_SELECT_CONFIGURATION {
+  struct _URB_HEADER  Hdr;
+  PUSB_CONFIGURATION_DESCRIPTOR  ConfigurationDescriptor;
+  USBD_CONFIGURATION_HANDLE  ConfigurationHandle;
+  USBD_INTERFACE_INFORMATION  Interface;
+};
+
+struct _URB_PIPE_REQUEST {
+	struct _URB_HEADER  Hdr;
+	USBD_PIPE_HANDLE  PipeHandle;
+	ULONG  Reserved;
+};
+
+struct _URB_SET_FRAME_LENGTH {
+  struct _URB_HEADER  Hdr;
+  LONG  FrameLengthDelta;
+};
+
+typedef struct _URB {
+  _ANONYMOUS_UNION union {
+		struct _URB_HEADER  UrbHeader;
+		struct _URB_SELECT_INTERFACE  UrbSelectInterface;
+		struct _URB_SELECT_CONFIGURATION  UrbSelectConfiguration;
+		struct _URB_PIPE_REQUEST  UrbPipeRequest;
+		struct _URB_FRAME_LENGTH_CONTROL  UrbFrameLengthControl;
+		struct _URB_GET_FRAME_LENGTH  UrbGetFrameLength;
+		struct _URB_SET_FRAME_LENGTH  UrbSetFrameLength;
+		struct _URB_GET_CURRENT_FRAME_NUMBER  UrbGetCurrentFrameNumber;
+		struct _URB_CONTROL_TRANSFER  UrbControlTransfer;
+		struct _URB_BULK_OR_INTERRUPT_TRANSFER  UrbBulkOrInterruptTransfer;
+		struct _URB_ISOCH_TRANSFER  UrbIsochronousTransfer;
+		struct _URB_CONTROL_DESCRIPTOR_REQUEST  UrbControlDescriptorRequest;
+		struct _URB_CONTROL_GET_STATUS_REQUEST  UrbControlGetStatusRequest;
+		struct _URB_CONTROL_FEATURE_REQUEST  UrbControlFeatureRequest;
+		struct _URB_CONTROL_VENDOR_OR_CLASS_REQUEST  UrbControlVendorClassRequest;
+		struct _URB_CONTROL_GET_INTERFACE_REQUEST  UrbControlGetInterfaceRequest;
+		struct _URB_CONTROL_GET_CONFIGURATION_REQUEST  UrbControlGetConfigurationRequest;
+  } DUMMYUNIONNAME;
+} URB, *PURB;
+
+#define URB_FROM_IRP(Irp) ((IoGetCurrentIrpStackLocation(Irp))->Parameters.Others.Argument1)
+
+#define URB_FUNCTION_SELECT_CONFIGURATION            0x0000
+#define URB_FUNCTION_SELECT_INTERFACE                0x0001
+#define URB_FUNCTION_ABORT_PIPE                      0x0002
+#define URB_FUNCTION_TAKE_FRAME_LENGTH_CONTROL       0x0003
+#define URB_FUNCTION_RELEASE_FRAME_LENGTH_CONTROL    0x0004
+#define URB_FUNCTION_GET_FRAME_LENGTH                0x0005
+#define URB_FUNCTION_SET_FRAME_LENGTH                0x0006
+#define URB_FUNCTION_GET_CURRENT_FRAME_NUMBER        0x0007
+#define URB_FUNCTION_CONTROL_TRANSFER                0x0008
+#define URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER      0x0009
+#define URB_FUNCTION_ISOCH_TRANSFER                  0x000A
+#define URB_FUNCTION_GET_DESCRIPTOR_FROM_DEVICE      0x000B
+#define URB_FUNCTION_SET_DESCRIPTOR_TO_DEVICE        0x000C
+#define URB_FUNCTION_SET_FEATURE_TO_DEVICE           0x000D
+#define URB_FUNCTION_SET_FEATURE_TO_INTERFACE        0x000E
+#define URB_FUNCTION_SET_FEATURE_TO_ENDPOINT         0x000F
+#define URB_FUNCTION_CLEAR_FEATURE_TO_DEVICE         0x0010
+#define URB_FUNCTION_CLEAR_FEATURE_TO_INTERFACE      0x0011
+#define URB_FUNCTION_CLEAR_FEATURE_TO_ENDPOINT       0x0012
+#define URB_FUNCTION_GET_STATUS_FROM_DEVICE          0x0013
+#define URB_FUNCTION_GET_STATUS_FROM_INTERFACE       0x0014
+#define URB_FUNCTION_GET_STATUS_FROM_ENDPOINT        0x0015
+#define URB_FUNCTION_RESERVED_0X0016                 0x0016
+#define URB_FUNCTION_VENDOR_DEVICE                   0x0017
+#define URB_FUNCTION_VENDOR_INTERFACE                0x0018
+#define URB_FUNCTION_VENDOR_ENDPOINT                 0x0019
+#define URB_FUNCTION_CLASS_DEVICE                    0x001A
+#define URB_FUNCTION_CLASS_INTERFACE                 0x001B
+#define URB_FUNCTION_CLASS_ENDPOINT                  0x001C
+#define URB_FUNCTION_RESERVE_0X001D                  0x001D
+#define URB_FUNCTION_SYNC_RESET_PIPE_AND_CLEAR_STALL 0x001E
+#define URB_FUNCTION_CLASS_OTHER                     0x001F
+#define URB_FUNCTION_VENDOR_OTHER                    0x0020
+#define URB_FUNCTION_GET_STATUS_FROM_OTHER           0x0021
+#define URB_FUNCTION_CLEAR_FEATURE_TO_OTHER          0x0022
+#define URB_FUNCTION_SET_FEATURE_TO_OTHER            0x0023
+#define URB_FUNCTION_GET_DESCRIPTOR_FROM_ENDPOINT    0x0024
+#define URB_FUNCTION_SET_DESCRIPTOR_TO_ENDPOINT      0x0025
+#define URB_FUNCTION_GET_CONFIGURATION               0x0026
+#define URB_FUNCTION_GET_INTERFACE                   0x0027
+#define URB_FUNCTION_GET_DESCRIPTOR_FROM_INTERFACE   0x0028
+#define URB_FUNCTION_SET_DESCRIPTOR_TO_INTERFACE     0x0029
+#define URB_FUNCTION_GET_MS_FEATURE_DESCRIPTOR       0x002A
+#define URB_FUNCTION_RESERVE_0X002B                  0x002B
+#define URB_FUNCTION_RESERVE_0X002C                  0x002C
+#define URB_FUNCTION_RESERVE_0X002D                  0x002D
+#define URB_FUNCTION_RESERVE_0X002E                  0x002E
+#define URB_FUNCTION_RESERVE_0X002F                  0x002F
+#define URB_FUNCTION_SYNC_RESET_PIPE                 0x0030
+#define URB_FUNCTION_SYNC_CLEAR_STALL                0x0031
+
+#define USBD_PF_CHANGE_MAX_PACKET         0x00000001
+#define USBD_PF_SHORT_PACKET_OPT          0x00000002
+#define USBD_PF_ENABLE_RT_THREAD_ACCESS   0x00000004
+#define USBD_PF_MAP_ADD_TRANSFERS         0x00000008
+
+#define USBD_PF_VALID_MASK (USBD_PF_CHANGE_MAX_PACKET | \
+                            USBD_PF_SHORT_PACKET_OPT | \
+                            USBD_PF_ENABLE_RT_THREAD_ACCESS | \
+                            USBD_PF_MAP_ADD_TRANSFERS)
+
+#define OS_STRING_DESCRIPTOR_INDEX        0xEE
+
+#define MS_GENRE_DESCRIPTOR_INDEX         0x0001
+#define MS_POWER_DESCRIPTOR_INDEX         0x0002
+
+#define MS_OS_STRING_SIGNATURE            L"MSFT100"
+
+typedef struct _OS_STRING {
+	UCHAR  bLength;
+	UCHAR  bDescriptorType;
+	WCHAR  MicrosoftString[7];
+	UCHAR  bVendorCode;
+	UCHAR  bPad;
+} OS_STRING, *POS_STRING;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* defined __USBDI_H */
+
+#endif /* __USB_H */
Index: Daodan/MinGW/include/ddk/usb100.h
===================================================================
--- Daodan/MinGW/include/ddk/usb100.h	(revision 1046)
+++ Daodan/MinGW/include/ddk/usb100.h	(revision 1046)
@@ -0,0 +1,237 @@
+/*
+ * usb100.h
+ *
+ * USB 1.0 support
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __USB100_H
+#define __USB100_H
+
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "ntddk.h"
+
+#define MAXIMUM_USB_STRING_LENGTH         255
+
+#define USB_DEVICE_CLASS_RESERVED           0x00
+#define USB_DEVICE_CLASS_AUDIO              0x01
+#define USB_DEVICE_CLASS_COMMUNICATIONS     0x02
+#define USB_DEVICE_CLASS_HUMAN_INTERFACE    0x03
+#define USB_DEVICE_CLASS_MONITOR            0x04
+#define USB_DEVICE_CLASS_PHYSICAL_INTERFACE 0x05
+#define USB_DEVICE_CLASS_POWER              0x06
+#define USB_DEVICE_CLASS_PRINTER            0x07
+#define USB_DEVICE_CLASS_STORAGE            0x08
+#define USB_DEVICE_CLASS_HUB                0x09
+#define USB_DEVICE_CLASS_VENDOR_SPECIFIC    0xFF
+
+#define USB_RESERVED_DESCRIPTOR_TYPE        0x06
+#define USB_CONFIG_POWER_DESCRIPTOR_TYPE    0x07
+#define USB_INTERFACE_POWER_DESCRIPTOR_TYPE 0x08
+
+#define USB_REQUEST_GET_STATUS            0x00
+#define USB_REQUEST_CLEAR_FEATURE         0x01
+#define USB_REQUEST_SET_FEATURE           0x03
+#define USB_REQUEST_SET_ADDRESS           0x05
+#define USB_REQUEST_GET_DESCRIPTOR        0x06
+#define USB_REQUEST_SET_DESCRIPTOR        0x07
+#define USB_REQUEST_GET_CONFIGURATION     0x08
+#define USB_REQUEST_SET_CONFIGURATION     0x09
+#define USB_REQUEST_GET_INTERFACE         0x0A
+#define USB_REQUEST_SET_INTERFACE         0x0B
+#define USB_REQUEST_SYNC_FRAME            0x0C
+
+#define USB_GETSTATUS_SELF_POWERED            0x01
+#define USB_GETSTATUS_REMOTE_WAKEUP_ENABLED   0x02
+
+#define BMREQUEST_HOST_TO_DEVICE          0
+#define BMREQUEST_DEVICE_TO_HOST          1
+
+#define BMREQUEST_STANDARD                0
+#define BMREQUEST_CLASS                   1
+#define BMREQUEST_VENDOR                  2
+
+#define BMREQUEST_TO_DEVICE               0
+#define BMREQUEST_TO_INTERFACE            1
+#define BMREQUEST_TO_ENDPOINT             2
+#define BMREQUEST_TO_OTHER                3
+
+/* USB_COMMON_DESCRIPTOR.bDescriptorType constants */
+#define USB_DEVICE_DESCRIPTOR_TYPE        0x01
+#define USB_CONFIGURATION_DESCRIPTOR_TYPE 0x02
+#define USB_STRING_DESCRIPTOR_TYPE        0x03
+#define USB_INTERFACE_DESCRIPTOR_TYPE     0x04
+#define USB_ENDPOINT_DESCRIPTOR_TYPE      0x05
+
+typedef struct _USB_COMMON_DESCRIPTOR {
+	UCHAR  bLength;
+	UCHAR  bDescriptorType;
+} USB_COMMON_DESCRIPTOR, *PUSB_COMMON_DESCRIPTOR;
+
+#define USB_DESCRIPTOR_MAKE_TYPE_AND_INDEX(d, i) ((USHORT)((USHORT)d << 8 | i))
+
+/* USB_CONFIGURATION_DESCRIPTOR.bmAttributes constants */
+#define USB_CONFIG_POWERED_MASK           0xc0
+#define USB_CONFIG_BUS_POWERED            0x80
+#define USB_CONFIG_SELF_POWERED           0x40
+#define USB_CONFIG_REMOTE_WAKEUP          0x20
+
+#include <pshpack1.h>
+typedef struct _USB_CONFIGURATION_DESCRIPTOR {
+  UCHAR  bLength;
+  UCHAR  bDescriptorType;
+  USHORT  wTotalLength;
+  UCHAR  bNumInterfaces;
+  UCHAR  bConfigurationValue;
+  UCHAR  iConfiguration;
+  UCHAR  bmAttributes;
+  UCHAR  MaxPower;
+} USB_CONFIGURATION_DESCRIPTOR, *PUSB_CONFIGURATION_DESCRIPTOR;
+#include <poppack.h>
+
+typedef struct _USB_DEVICE_DESCRIPTOR {
+  UCHAR  bLength;
+  UCHAR  bDescriptorType;
+  USHORT  bcdUSB;
+  UCHAR  bDeviceClass;
+  UCHAR  bDeviceSubClass;
+  UCHAR  bDeviceProtocol;
+  UCHAR  bMaxPacketSize0;
+  USHORT  idVendor;
+  USHORT  idProduct;
+  USHORT  bcdDevice;
+  UCHAR  iManufacturer;
+  UCHAR  iProduct;
+  UCHAR  iSerialNumber;
+  UCHAR  bNumConfigurations;
+} USB_DEVICE_DESCRIPTOR, *PUSB_DEVICE_DESCRIPTOR;
+
+#define USB_ENDPOINT_DIRECTION_MASK       0x80
+
+#define USB_ENDPOINT_DIRECTION_OUT(x) (!((x) & USB_ENDPOINT_DIRECTION_MASK))
+#define USB_ENDPOINT_DIRECTION_IN(x) ((x) & USB_ENDPOINT_DIRECTION_MASK)
+
+/* USB_ENDPOINT_DESCRIPTOR.bmAttributes constants */
+#define USB_ENDPOINT_TYPE_MASK            0x03
+#define USB_ENDPOINT_TYPE_CONTROL         0x00
+#define USB_ENDPOINT_TYPE_ISOCHRONOUS     0x01
+#define USB_ENDPOINT_TYPE_BULK            0x02
+#define USB_ENDPOINT_TYPE_INTERRUPT       0x03
+
+#include <pshpack1.h>
+typedef struct _USB_ENDPOINT_DESCRIPTOR {
+  UCHAR  bLength;
+  UCHAR  bDescriptorType;
+  UCHAR  bEndpointAddress;
+  UCHAR  bmAttributes;
+  USHORT  wMaxPacketSize;
+  UCHAR  bInterval;
+} USB_ENDPOINT_DESCRIPTOR, *PUSB_ENDPOINT_DESCRIPTOR;
+#include <poppack.h>
+
+#define USB_FEATURE_ENDPOINT_STALL        0x0000
+#define USB_FEATURE_REMOTE_WAKEUP         0x0001
+
+typedef struct _USB_INTERFACE_DESCRIPTOR {
+  UCHAR  bLength;
+  UCHAR  bDescriptorType;
+  UCHAR  bInterfaceNumber;
+  UCHAR  bAlternateSetting;
+  UCHAR  bNumEndpoints;
+  UCHAR  bInterfaceClass;
+  UCHAR  bInterfaceSubClass;
+  UCHAR  bInterfaceProtocol;
+  UCHAR  iInterface;
+} USB_INTERFACE_DESCRIPTOR, *PUSB_INTERFACE_DESCRIPTOR;
+
+typedef struct _USB_STRING_DESCRIPTOR {
+  UCHAR  bLength;
+  UCHAR  bDescriptorType;
+  WCHAR  bString[1];
+} USB_STRING_DESCRIPTOR, *PUSB_STRING_DESCRIPTOR;
+
+#include <pshpack1.h>
+typedef struct _USB_HUB_DESCRIPTOR {
+	UCHAR  bDescriptorLength;
+	UCHAR  bDescriptorType;
+	UCHAR  bNumberOfPorts;
+	USHORT  wHubCharacteristics;
+	UCHAR  bPowerOnToPowerGood;
+	UCHAR  bHubControlCurrent;
+	UCHAR  bRemoveAndPowerMask[64];
+} USB_HUB_DESCRIPTOR, *PUSB_HUB_DESCRIPTOR;
+#include <poppack.h>
+
+#define USB_SUPPORT_D0_COMMAND            0x01
+#define USB_SUPPORT_D1_COMMAND            0x02
+#define USB_SUPPORT_D2_COMMAND            0x04
+#define USB_SUPPORT_D3_COMMAND            0x08
+
+#define USB_SUPPORT_D1_WAKEUP             0x10
+#define USB_SUPPORT_D2_WAKEUP             0x20
+
+typedef struct _USB_CONFIGURATION_POWER_DESCRIPTOR {
+	UCHAR  bLength;
+	UCHAR  bDescriptorType;
+	UCHAR  SelfPowerConsumedD0[3];
+	UCHAR  bPowerSummaryId;
+	UCHAR  bBusPowerSavingD1;
+	UCHAR  bSelfPowerSavingD1;
+	UCHAR  bBusPowerSavingD2;
+	UCHAR  bSelfPowerSavingD2;
+	UCHAR  bBusPowerSavingD3;
+	UCHAR  bSelfPowerSavingD3;
+	USHORT  TransitionTimeFromD1;
+	USHORT  TransitionTimeFromD2;
+	USHORT  TransitionTimeFromD3;
+} USB_CONFIGURATION_POWER_DESCRIPTOR, *PUSB_CONFIGURATION_POWER_DESCRIPTOR;
+
+#define USB_FEATURE_INTERFACE_POWER_D0    0x0002
+#define USB_FEATURE_INTERFACE_POWER_D1    0x0003
+#define USB_FEATURE_INTERFACE_POWER_D2    0x0004
+#define USB_FEATURE_INTERFACE_POWER_D3    0x0005
+
+#include <pshpack1.h>
+typedef struct _USB_INTERFACE_POWER_DESCRIPTOR {
+	UCHAR  bLength;
+	UCHAR  bDescriptorType;
+	UCHAR  bmCapabilitiesFlags;
+	UCHAR  bBusPowerSavingD1;
+	UCHAR  bSelfPowerSavingD1;
+	UCHAR  bBusPowerSavingD2;
+	UCHAR  bSelfPowerSavingD2;
+	UCHAR  bBusPowerSavingD3;
+	UCHAR  bSelfPowerSavingD3;
+	USHORT  TransitionTimeFromD1;
+	USHORT  TransitionTimeFromD2;
+	USHORT  TransitionTimeFromD3;
+} USB_INTERFACE_POWER_DESCRIPTOR, *PUSB_INTERFACE_POWER_DESCRIPTOR;
+#include <poppack.h>
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __USB100_H */
Index: Daodan/MinGW/include/ddk/usbcamdi.h
===================================================================
--- Daodan/MinGW/include/ddk/usbcamdi.h	(revision 1046)
+++ Daodan/MinGW/include/ddk/usbcamdi.h	(revision 1046)
@@ -0,0 +1,404 @@
+/*
+ * usbcamdi.h
+ *
+ * USB Camera driver interface.
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __USBCAMDI_H
+#define __USBCAMDI_H
+
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#if !defined(__USB_H) && !defined(__USBDI_H)
+#error include usb.h or usbdi.h before usbcamdi.h
+#else
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#pragma pack(push,4)
+
+#include "ntddk.h"
+
+#if defined(_BATTERYCLASS_)
+  #define USBCAMAPI DECLSPEC_EXPORT
+#else
+  #define USBCAMAPI DECLSPEC_IMPORT
+#endif
+
+
+/* FIXME: Unknown definition */
+typedef PVOID PHW_STREAM_REQUEST_BLOCK;
+
+DEFINE_GUID(GUID_USBCAMD_INTERFACE,
+  0x2bcb75c0, 0xb27f, 0x11d1, 0xba, 0x41, 0x0, 0xa0, 0xc9, 0xd, 0x2b, 0x5);
+
+#define USBCAMD_PROCESSPACKETEX_DropFrame             0x0002
+#define USBCAMD_PROCESSPACKETEX_NextFrameIsStill      0x0004
+#define USBCAMD_PROCESSPACKETEX_CurrentFrameIsStill   0x0008
+
+#define USBCAMD_DATA_PIPE                 0x0001
+#define USBCAMD_MULTIPLEX_PIPE            0x0002
+#define USBCAMD_SYNC_PIPE                 0x0004
+#define USBCAMD_DONT_CARE_PIPE            0x0008
+
+#define USBCAMD_VIDEO_STREAM              0x1
+#define USBCAMD_STILL_STREAM              0x2
+#define USBCAMD_VIDEO_STILL_STREAM        (USBCAMD_VIDEO_STREAM | USBCAMD_STILL_STREAM)
+
+#define USBCAMD_STOP_STREAM               0x00000001
+#define USBCAMD_START_STREAM              0x00000000
+
+typedef struct _pipe_config_descriptor {
+  CHAR  StreamAssociation;
+  UCHAR  PipeConfigFlags;
+} USBCAMD_Pipe_Config_Descriptor, *PUSBCAMD_Pipe_Config_Descriptor;
+
+typedef enum {
+	USBCAMD_CamControlFlag_NoVideoRawProcessing = 1,
+	USBCAMD_CamControlFlag_NoStillRawProcessing = 2,
+	USBCAMD_CamControlFlag_AssociatedFormat = 4,
+	USBCAMD_CamControlFlag_EnableDeviceEvents = 8
+} USBCAMD_CamControlFlags;
+
+typedef NTSTATUS DDKAPI
+(*PCAM_ALLOCATE_BW_ROUTINE)(
+  PDEVICE_OBJECT  BusDeviceObject,
+  PVOID  DeviceContext,
+  PULONG  RawFrameLength,
+  PVOID  Format);
+
+typedef NTSTATUS DDKAPI
+(*PCAM_ALLOCATE_BW_ROUTINE_EX)(
+  PDEVICE_OBJECT  BusDeviceObject,
+  PVOID  DeviceContext,
+  PULONG  RawFrameLength,
+  PVOID  Format,
+  ULONG  StreamNumber);
+
+typedef NTSTATUS DDKAPI
+(*PCAM_CONFIGURE_ROUTINE)(
+  PDEVICE_OBJECT  BusDeviceObject,
+  PVOID  DeviceContext,
+  PUSBD_INTERFACE_INFORMATION  Interface,
+  PUSB_CONFIGURATION_DESCRIPTOR  ConfigurationDescriptor,
+  PLONG  DataPipeIndex,
+  PLONG  SyncPipeIndex);
+
+typedef NTSTATUS DDKAPI
+(*PCAM_CONFIGURE_ROUTINE_EX)(
+  PDEVICE_OBJECT  BusDeviceObject,
+  PVOID  DeviceContext,
+  PUSBD_INTERFACE_INFORMATION  Interface,
+  PUSB_CONFIGURATION_DESCRIPTOR  ConfigurationDescriptor,
+  ULONG  PipeConfigListSize,
+  PUSBCAMD_Pipe_Config_Descriptor  PipeConfig,
+  PUSB_DEVICE_DESCRIPTOR  DeviceDescriptor);
+
+typedef NTSTATUS DDKAPI
+(*PCAM_FREE_BW_ROUTINE)(
+  PDEVICE_OBJECT  BusDeviceObject,
+  PVOID  DeviceContext);
+
+typedef NTSTATUS DDKAPI
+(*PCAM_FREE_BW_ROUTINE_EX)(
+  PDEVICE_OBJECT  BusDeviceObject,
+  PVOID  DeviceContext,
+  ULONG  StreamNumber);
+
+typedef NTSTATUS DDKAPI
+(*PCAM_INITIALIZE_ROUTINE)(
+  PDEVICE_OBJECT  BusDeviceObject,
+  PVOID  DeviceContext);
+
+typedef VOID DDKAPI
+(*PCAM_NEW_FRAME_ROUTINE)(
+  PVOID  DeviceContext,
+  PVOID  FrameContext);
+
+typedef VOID DDKAPI
+(*PCAM_NEW_FRAME_ROUTINE_EX)(
+  PVOID  DeviceContext,
+  PVOID  FrameContext,
+  ULONG  StreamNumber,
+  PULONG  FrameLength);
+
+typedef NTSTATUS DDKAPI
+(*PCAM_PROCESS_RAW_FRAME_ROUTINE)(
+  PDEVICE_OBJECT  BusDeviceObject,
+  PVOID  DeviceContext,
+  PVOID  FrameContext,
+  PVOID  FrameBuffer,
+  ULONG  FrameLength,
+  PVOID  RawFrameBuffer,
+  ULONG  RawFrameLength,
+  ULONG  NumberOfPackets,
+  PULONG  BytesReturned);
+
+typedef NTSTATUS DDKAPI
+(*PCAM_PROCESS_RAW_FRAME_ROUTINE_EX)(
+  PDEVICE_OBJECT  BusDeviceObject,
+  PVOID  DeviceContext,
+  PVOID  FrameContext,
+  PVOID  FrameBuffer,
+  ULONG  FrameLength,
+  PVOID  RawFrameBuffer,
+  ULONG  RawFrameLength,
+  ULONG  NumberOfPackets,
+  PULONG  BytesReturned,
+  ULONG  ActualRawFrameLength,
+  ULONG  StreamNumber);
+
+typedef ULONG DDKAPI
+(*PCAM_PROCESS_PACKET_ROUTINE)(
+  PDEVICE_OBJECT  BusDeviceObject,
+  PVOID  DeviceContext,
+  PVOID  CurrentFrameContext,
+  PUSBD_ISO_PACKET_DESCRIPTOR  SyncPacket,
+  PVOID  SyncBuffer,
+  PUSBD_ISO_PACKET_DESCRIPTOR  DataPacket,
+  PVOID  DataBuffer,
+  PBOOLEAN  FrameComplete,
+  PBOOLEAN  NextFrameIsStill);
+
+typedef ULONG DDKAPI
+(*PCAM_PROCESS_PACKET_ROUTINE_EX)(
+  PDEVICE_OBJECT  BusDeviceObject,
+  PVOID  DeviceContext,
+  PVOID  CurrentFrameContext,
+  PUSBD_ISO_PACKET_DESCRIPTOR  SyncPacket,
+  PVOID  SyncBuffer,
+  PUSBD_ISO_PACKET_DESCRIPTOR  DataPacket,
+  PVOID  DataBuffer,
+  PBOOLEAN  FrameComplete,
+  PULONG  PacketFlag,
+  PULONG  ValidDataOffset);
+
+typedef NTSTATUS DDKAPI
+(*PCAM_STATE_ROUTINE)(
+  PDEVICE_OBJECT  BusDeviceObject,
+  PVOID  DeviceContext);
+
+typedef NTSTATUS DDKAPI
+(*PCAM_START_CAPTURE_ROUTINE)(
+  PDEVICE_OBJECT  BusDeviceObject,
+  PVOID  DeviceContext);
+
+typedef NTSTATUS DDKAPI
+(*PCAM_START_CAPTURE_ROUTINE_EX)(
+  PDEVICE_OBJECT  BusDeviceObject,
+  PVOID  DeviceContext,
+  ULONG  StreamNumber);
+
+typedef NTSTATUS DDKAPI
+(*PCAM_STOP_CAPTURE_ROUTINE)(
+  PDEVICE_OBJECT  BusDeviceObject,
+  PVOID  DeviceContext);
+
+typedef NTSTATUS DDKAPI
+(*PCAM_STOP_CAPTURE_ROUTINE_EX)(
+  PDEVICE_OBJECT  BusDeviceObject,
+  PVOID  DeviceContext,
+  ULONG  StreamNumber);
+
+typedef struct _USBCAMD_DEVICE_DATA {
+	ULONG  Sig;
+	PCAM_INITIALIZE_ROUTINE  CamInitialize;
+	PCAM_INITIALIZE_ROUTINE  CamUnInitialize;
+	PCAM_PROCESS_PACKET_ROUTINE  CamProcessUSBPacket;
+	PCAM_NEW_FRAME_ROUTINE  CamNewVideoFrame;
+	PCAM_PROCESS_RAW_FRAME_ROUTINE  CamProcessRawVideoFrame;
+	PCAM_START_CAPTURE_ROUTINE  CamStartCapture;
+	PCAM_STOP_CAPTURE_ROUTINE  CamStopCapture;
+	PCAM_CONFIGURE_ROUTINE  CamConfigure;
+	PCAM_STATE_ROUTINE  CamSaveState;
+	PCAM_STATE_ROUTINE  CamRestoreState;
+	PCAM_ALLOCATE_BW_ROUTINE  CamAllocateBandwidth;
+	PCAM_FREE_BW_ROUTINE  CamFreeBandwidth;
+} USBCAMD_DEVICE_DATA, *PUSBCAMD_DEVICE_DATA;
+
+typedef struct _USBCAMD_DEVICE_DATA2 {
+	ULONG  Sig;
+	PCAM_INITIALIZE_ROUTINE  CamInitialize;
+	PCAM_INITIALIZE_ROUTINE  CamUnInitialize;
+	PCAM_PROCESS_PACKET_ROUTINE_EX  CamProcessUSBPacketEx;
+	PCAM_NEW_FRAME_ROUTINE_EX  CamNewVideoFrameEx;
+	PCAM_PROCESS_RAW_FRAME_ROUTINE_EX  CamProcessRawVideoFrameEx;
+	PCAM_START_CAPTURE_ROUTINE_EX  CamStartCaptureEx;
+	PCAM_STOP_CAPTURE_ROUTINE_EX  CamStopCaptureEx;
+	PCAM_CONFIGURE_ROUTINE_EX  CamConfigureEx;
+	PCAM_STATE_ROUTINE  CamSaveState;
+	PCAM_STATE_ROUTINE  CamRestoreState;
+	PCAM_ALLOCATE_BW_ROUTINE_EX  CamAllocateBandwidthEx;
+	PCAM_FREE_BW_ROUTINE_EX  CamFreeBandwidthEx;
+} USBCAMD_DEVICE_DATA2, *PUSBCAMD_DEVICE_DATA2;
+
+USBCAMAPI
+ULONG
+DDKAPI
+USBCAMD_InitializeNewInterface(
+  /*IN*/ PVOID  DeviceContext,
+  /*IN*/ PVOID  DeviceData,
+  /*IN*/ ULONG  Version,
+  /*IN*/ ULONG  CamControlFlag);
+
+typedef VOID DDKAPI
+(*PCOMMAND_COMPLETE_FUNCTION)(
+  PVOID  DeviceContext,
+  PVOID  CommandContext,
+  NTSTATUS  NtStatus);
+
+typedef NTSTATUS DDKAPI
+(*PFNUSBCAMD_BulkReadWrite)(
+  /*IN*/ PVOID  DeviceContext,
+  /*IN*/ USHORT  PipeIndex,
+  /*IN*/ PVOID  Buffer,
+  /*IN*/ ULONG  BufferLength,
+  /*IN*/ PCOMMAND_COMPLETE_FUNCTION  CommandComplete,
+  /*IN*/ PVOID  CommandContext);
+
+typedef NTSTATUS DDKAPI
+(*PFNUSBCAMD_SetIsoPipeState)(
+  /*IN*/ PVOID  DeviceContext,
+  /*IN*/ ULONG  PipeStateFlags);
+
+typedef NTSTATUS DDKAPI
+(*PFNUSBCAMD_CancelBulkReadWrite)(
+  /*IN*/ PVOID  DeviceContext,
+  /*IN*/ ULONG  PipeIndex);
+
+typedef NTSTATUS DDKAPI
+(*PFNUSBCAMD_SetVideoFormat)(
+  /*IN*/ PVOID  DeviceContext,
+  /*IN*/ PHW_STREAM_REQUEST_BLOCK  pSrb);
+
+typedef NTSTATUS DDKAPI
+(*PFNUSBCAMD_WaitOnDeviceEvent)(
+  /*IN*/ PVOID  DeviceContext,
+  /*IN*/ ULONG  PipeIndex,
+  /*IN*/ PVOID  Buffer,
+  /*IN*/ ULONG  BufferLength,
+  /*IN*/ PCOMMAND_COMPLETE_FUNCTION  EventComplete,
+  /*IN*/ PVOID  EventContext,
+  /*IN*/ BOOLEAN  LoopBack);
+
+USBCAMAPI
+PVOID
+DDKAPI
+USBCAMD_AdapterReceivePacket(
+  /*IN*/ PHW_STREAM_REQUEST_BLOCK  Srb,
+  /*IN*/ PUSBCAMD_DEVICE_DATA  DeviceData,
+  /*IN*/ PDEVICE_OBJECT  *DeviceObject,
+  /*IN*/ BOOLEAN  NeedsCompletion);
+
+USBCAMAPI
+NTSTATUS
+DDKAPI
+USBCAMD_ControlVendorCommand(
+  /*IN*/ PVOID  DeviceContext,
+  /*IN*/ UCHAR  Request,
+  /*IN*/ USHORT  Value,
+  /*IN*/ USHORT  Index,
+  /*IN*/ PVOID  Buffer,
+  /*IN OUT*/ PULONG  BufferLength,
+  /*IN*/ BOOLEAN  GetData,
+  /*IN*/ PCOMMAND_COMPLETE_FUNCTION  CommandComplete,
+  /*IN*/ PVOID  CommandContext);
+
+typedef VOID DDKAPI
+(*PADAPTER_RECEIVE_PACKET_ROUTINE)(
+  /*IN*/ PHW_STREAM_REQUEST_BLOCK  Srb);
+
+USBCAMAPI
+ULONG
+DDKAPI
+USBCAMD_DriverEntry(
+  PVOID  Context1,
+  PVOID  Context2,
+  ULONG  DeviceContextSize,
+  ULONG  FrameContextSize,
+  PADAPTER_RECEIVE_PACKET_ROUTINE  ReceivePacket);
+
+USBCAMAPI
+NTSTATUS
+DDKAPI
+USBCAMD_GetRegistryKeyValue(
+  /*IN*/ HANDLE  Handle,
+  /*IN*/ PWCHAR  KeyNameString,
+  /*IN*/ ULONG  KeyNameStringLength,
+  /*IN*/ PVOID  Data,
+  /*IN*/ ULONG  DataLength);
+
+USBCAMAPI
+NTSTATUS
+DDKAPI
+USBCAMD_SelectAlternateInterface(
+  /*IN*/ PVOID  DeviceContext,
+  /*IN OUT*/ PUSBD_INTERFACE_INFORMATION  RequestInterface);
+
+#define USBCAMD_VERSION_200               0x200
+
+typedef struct _USBCAMD_INTERFACE {
+  INTERFACE  Interface;
+  PFNUSBCAMD_WaitOnDeviceEvent  USBCAMD_WaitOnDeviceEvent;
+  PFNUSBCAMD_BulkReadWrite  USBCAMD_BulkReadWrite;
+  PFNUSBCAMD_SetVideoFormat  USBCAMD_SetVideoFormat;
+  PFNUSBCAMD_SetIsoPipeState  USBCAMD_SetIsoPipeState;
+  PFNUSBCAMD_CancelBulkReadWrite  USBCAMD_CancelBulkReadWrite;
+} USBCAMD_INTERFACE, *PUSBCAMD_INTERFACE;
+
+typedef VOID DDKAPI
+(*PSTREAM_RECEIVE_PACKET)(
+  /*IN*/ PVOID  Srb,
+  /*IN*/ PVOID  DeviceContext,
+  /*IN*/ PBOOLEAN  Completed);
+
+#if defined(DEBUG_LOG)
+
+USBCAMAPI
+VOID
+DDKAPI
+USBCAMD_Debug_LogEntry(
+  /*IN*/ CHAR  *Name,
+  /*IN*/ ULONG  Info1,
+  /*IN*/ ULONG  Info2,
+  /*IN*/ ULONG  Info3);
+
+#define ILOGENTRY(sig, info1, info2, info3) \
+  USBCAMD_Debug_LogEntry(sig, (ULONG)info1, (ULONG)info2, (ULONG)info3)
+
+#else
+
+#define ILOGENTRY(sig, info1, info2, info3)
+
+#endif /* DEBUG_LOG */
+
+#pragma pack(pop)
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* !defined(__USB_H) && !defined(__USBDI_H) */
+
+
+#endif /* __USBCAMDI_H */
Index: Daodan/MinGW/include/ddk/usbdi.h
===================================================================
--- Daodan/MinGW/include/ddk/usbdi.h	(revision 1046)
+++ Daodan/MinGW/include/ddk/usbdi.h	(revision 1046)
@@ -0,0 +1,407 @@
+/*
+ * usbdi.h
+ *
+ * USBD and USB device driver definitions
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __USBDI_H
+#define __USBDI_H
+
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __USB_H
+#error usb.h cannot be included with usbdi.h
+#else
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "ntddk.h"
+#include "usbioctl.h"
+
+#define USBDI_VERSION                     0x300
+
+#define USB_DEFAULT_DEVICE_ADDRESS        0
+#define USB_DEFAULT_ENDPOINT_ADDRESS      0
+#define USB_DEFAULT_MAX_PACKET            64
+
+#define URB_FROM_IRP(Irp) ((IoGetCurrentIrpStackLocation(Irp))->Parameters.Others.Argument1)
+
+#define URB_FUNCTION_SELECT_CONFIGURATION           0x0000
+#define URB_FUNCTION_SELECT_INTERFACE               0x0001
+#define URB_FUNCTION_ABORT_PIPE                     0x0002
+#define URB_FUNCTION_TAKE_FRAME_LENGTH_CONTROL      0x0003
+#define URB_FUNCTION_RELEASE_FRAME_LENGTH_CONTROL   0x0004
+#define URB_FUNCTION_GET_FRAME_LENGTH               0x0005
+#define URB_FUNCTION_SET_FRAME_LENGTH               0x0006
+#define URB_FUNCTION_GET_CURRENT_FRAME_NUMBER       0x0007
+#define URB_FUNCTION_CONTROL_TRANSFER               0x0008
+#define URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER     0x0009
+#define URB_FUNCTION_ISOCH_TRANSFER                 0x000A
+#define URB_FUNCTION_RESET_PIPE                     0x001E
+#define URB_FUNCTION_GET_DESCRIPTOR_FROM_DEVICE     0x000B
+#define URB_FUNCTION_GET_DESCRIPTOR_FROM_ENDPOINT   0x0024
+#define URB_FUNCTION_GET_DESCRIPTOR_FROM_INTERFACE  0x0028
+#define URB_FUNCTION_SET_DESCRIPTOR_TO_DEVICE       0x000C
+#define URB_FUNCTION_SET_DESCRIPTOR_TO_ENDPOINT     0x0025
+#define URB_FUNCTION_SET_DESCRIPTOR_TO_INTERFACE    0x0029
+#define URB_FUNCTION_SET_FEATURE_TO_DEVICE          0x000D
+#define URB_FUNCTION_SET_FEATURE_TO_INTERFACE       0x000E
+#define URB_FUNCTION_SET_FEATURE_TO_ENDPOINT        0x000F
+#define URB_FUNCTION_SET_FEATURE_TO_OTHER           0x0023
+#define URB_FUNCTION_CLEAR_FEATURE_TO_DEVICE        0x0010
+#define URB_FUNCTION_CLEAR_FEATURE_TO_INTERFACE     0x0011
+#define URB_FUNCTION_CLEAR_FEATURE_TO_ENDPOINT      0x0012
+#define URB_FUNCTION_CLEAR_FEATURE_TO_OTHER         0x0022
+#define URB_FUNCTION_GET_STATUS_FROM_DEVICE         0x0013
+#define URB_FUNCTION_GET_STATUS_FROM_INTERFACE      0x0014
+#define URB_FUNCTION_GET_STATUS_FROM_ENDPOINT       0x0015
+#define URB_FUNCTION_GET_STATUS_FROM_OTHER          0x0021
+#define URB_FUNCTION_RESERVED0                      0x0016
+#define URB_FUNCTION_VENDOR_DEVICE                  0x0017
+#define URB_FUNCTION_VENDOR_INTERFACE               0x0018
+#define URB_FUNCTION_VENDOR_ENDPOINT                0x0019
+#define URB_FUNCTION_VENDOR_OTHER                   0x0020
+#define URB_FUNCTION_CLASS_DEVICE                   0x001A
+#define URB_FUNCTION_CLASS_INTERFACE                0x001B
+#define URB_FUNCTION_CLASS_ENDPOINT                 0x001C
+#define URB_FUNCTION_CLASS_OTHER                    0x001F
+#define URB_FUNCTION_RESERVED                       0x001D
+#define URB_FUNCTION_GET_CONFIGURATION              0x0026
+#define URB_FUNCTION_GET_INTERFACE                  0x0027
+#define URB_FUNCTION_LAST                           0x0029
+
+typedef LONG USBD_STATUS;
+typedef PVOID USBD_PIPE_HANDLE;
+typedef PVOID USBD_CONFIGURATION_HANDLE;
+typedef PVOID USBD_INTERFACE_HANDLE;
+
+#define USBD_ERROR(Status) ((USBD_STATUS)(Status) < 0)
+#define USBD_HALTED(Status) ((ULONG)(Status) >> 30 == 3)
+#define USBD_PENDING(Status) ((ULONG)(Status) >> 30 == 1)
+#define USBD_STATUS(Status) ((ULONG)(Status) & 0x0FFFFFFFL)
+#define USBD_SUCCESS(Status) ((USBD_STATUS)(Status) >= 0)
+
+#define USBD_STATUS_SUCCESS               ((USBD_STATUS)0x00000000L)
+#define USBD_STATUS_PENDING               ((USBD_STATUS)0x40000000L)
+#define USBD_STATUS_HALTED                ((USBD_STATUS)0xC0000000L)
+#define USBD_STATUS_ERROR                 ((USBD_STATUS)0x80000000L)
+#define USBD_STATUS_NO_MEMORY             ((USBD_STATUS)0x80000100L)
+#define USBD_STATUS_INVALID_URB_FUNCTION  ((USBD_STATUS)0x80000200L)
+#define USBD_STATUS_INVALID_PARAMETER     ((USBD_STATUS)0x80000300L)
+#define USBD_STATUS_ERROR_BUSY            ((USBD_STATUS)0x80000400L)
+#define USBD_STATUS_REQUEST_FAILED        ((USBD_STATUS)0x80000500L)
+#define USBD_STATUS_INVALID_PIPE_HANDLE   ((USBD_STATUS)0x80000600L)
+#define USBD_STATUS_NO_BANDWIDTH          ((USBD_STATUS)0x80000700L)
+#define USBD_STATUS_INTERNAL_HC_ERROR     ((USBD_STATUS)0x80000800L)
+#define USBD_STATUS_ERROR_SHORT_TRANSFER  ((USBD_STATUS)0x80000900L)
+#define USBD_STATUS_CRC                   ((USBD_STATUS)0xC0000001L)
+#define USBD_STATUS_BTSTUFF               ((USBD_STATUS)0xC0000002L)
+#define USBD_STATUS_DATA_TOGGLE_MISMATCH  ((USBD_STATUS)0xC0000003L)
+#define USBD_STATUS_STALL_PID             ((USBD_STATUS)0xC0000004L)
+#define USBD_STATUS_DEV_NOT_RESPONDING    ((USBD_STATUS)0xC0000005L)
+#define USBD_STATUS_PID_CHECK_FAILURE     ((USBD_STATUS)0xC0000006L)
+#define USBD_STATUS_UNEXPECTED_PID        ((USBD_STATUS)0xC0000007L)
+#define USBD_STATUS_DATA_OVERRUN          ((USBD_STATUS)0xC0000008L)
+#define USBD_STATUS_DATA_UNDERRUN         ((USBD_STATUS)0xC0000009L)
+#define USBD_STATUS_RESERVED1             ((USBD_STATUS)0xC000000AL)
+#define USBD_STATUS_RESERVED2             ((USBD_STATUS)0xC000000BL)
+#define USBD_STATUS_BUFFER_OVERRUN        ((USBD_STATUS)0xC000000CL)
+#define USBD_STATUS_BUFFER_UNDERRUN       ((USBD_STATUS)0xC000000DL)
+#define USBD_STATUS_NOT_ACCESSED          ((USBD_STATUS)0xC000000FL)
+#define USBD_STATUS_FIFO                  ((USBD_STATUS)0xC0000010L)
+#define USBD_STATUS_ENDPOINT_HALTED       ((USBD_STATUS)0xC0000030L)
+#define USBD_STATUS_BAD_START_FRAME       ((USBD_STATUS)0xC0000A00L)
+#define USBD_STATUS_ISOCH_REQUEST_FAILED  ((USBD_STATUS)0xC0000B00L)
+#define USBD_STATUS_FRAME_CONTROL_OWNED   ((USBD_STATUS)0xC0000C00L)
+#define USBD_STATUS_FRAME_CONTROL_NOT_OWNED \
+                                          ((USBD_STATUS)0xC0000D00L)
+#define USBD_STATUS_INAVLID_CONFIGURATION_DESCRIPTOR \
+                                          ((USBD_STATUS)0xC0000F00L)
+#define USBD_STATUS_CANCELING             ((USBD_STATUS)0x00020000L)
+
+#define USBD_PIPE_DIRECTION_IN(pipeInformation) \
+  ((pipeInformation)->EndpointAddress & USB_ENDPOINT_DIRECTION_MASK)
+
+struct _URB_HEADER {
+	USHORT  Length;
+	USHORT  Function;
+	USBD_STATUS  Status;
+	PVOID  UsbdDeviceHandle;
+	ULONG  UsbdFlags;
+};
+
+struct _URB_HCD_AREA {
+	PVOID  HcdEndpoint;
+	PIRP  HcdIrp;
+	LIST_ENTRY  HcdListEntry;
+	LIST_ENTRY  HcdListEntry2;
+	PVOID  HcdCurrentIoFlushPointer;
+	PVOID  HcdExtension;
+};
+
+struct _URB_BULK_OR_INTERRUPT_TRANSFER {
+	struct _URB_HEADER  Hdr;
+	USBD_PIPE_HANDLE  PipeHandle;
+	ULONG  TransferFlags;
+	ULONG  TransferBufferLength;
+	PVOID  TransferBuffer;
+	PMDL  TransferBufferMDL;
+	struct _URB  *UrbLink;
+	struct _URB_HCD_AREA  hca;
+};
+
+struct _URB_CONTROL_DESCRIPTOR_REQUEST {
+	struct _URB_HEADER  Hdr;
+	PVOID  Reserved;
+	ULONG  Reserved0;
+	ULONG  TransferBufferLength;
+	PVOID  TransferBuffer;
+	PMDL  TransferBufferMDL;
+	struct _URB  *UrbLink;
+	struct _URB_HCD_AREA  hca;
+	USHORT  Reserved1;
+	UCHAR  Index;
+	UCHAR  DescriptorType;
+	USHORT  LanguageId;
+	USHORT  Reserved2;
+};
+
+struct _URB_CONTROL_FEATURE_REQUEST {
+	struct _URB_HEADER  Hdr;
+	PVOID  Reserved;
+	ULONG  Reserved2;
+	ULONG  Reserved3;
+	PVOID  Reserved4;
+	PMDL  Reserved5;
+	struct _URB  *UrbLink;
+	struct _URB_HCD_AREA  hca;
+	USHORT  Reserved0;
+	USHORT  FeatureSelector;
+	USHORT  Index;
+	USHORT  Reserved1;
+};
+
+struct _URB_CONTROL_GET_CONFIGURATION_REQUEST {
+	struct _URB_HEADER  Hdr;
+	PVOID  Reserved;
+	ULONG  Reserved0;
+	ULONG  TransferBufferLength;
+	PVOID  TransferBuffer;
+	PMDL  TransferBufferMDL;
+	struct _URB  *UrbLink;
+	struct _URB_HCD_AREA  hca;
+	UCHAR  Reserved1[8];
+};
+
+struct _URB_CONTROL_GET_INTERFACE_REQUEST {
+	struct _URB_HEADER  Hdr;
+	PVOID  Reserved;
+	ULONG  Reserved0;
+	ULONG  TransferBufferLength;
+	PVOID  TransferBuffer;
+	PMDL  TransferBufferMDL;
+	struct _URB  *UrbLink;
+	struct _URB_HCD_AREA  hca;
+	UCHAR  Reserved1[4];
+	USHORT  Interface;
+	USHORT  Reserved2;
+};
+
+struct _URB_CONTROL_GET_STATUS_REQUEST {
+	struct _URB_HEADER  Hdr;
+	PVOID  Reserved;
+	ULONG  Reserved0;
+	ULONG  TransferBufferLength;
+	PVOID  TransferBuffer;
+	PMDL  TransferBufferMDL;
+	struct _URB  *UrbLink;
+	struct _URB_HCD_AREA  hca;
+	UCHAR  Reserved1[4];
+	USHORT  Index;
+	USHORT  Reserved2;
+};
+
+struct _URB_CONTROL_TRANSFER {
+	struct _URB_HEADER  Hdr;
+	USBD_PIPE_HANDLE  PipeHandle;
+	ULONG  TransferFlags;
+	ULONG  TransferBufferLength;
+	PVOID  TransferBuffer;
+	PMDL  TransferBufferMDL;
+	struct _URB  *UrbLink;
+	struct _URB_HCD_AREA  hca;
+	UCHAR  SetupPacket[8];
+};
+
+struct _URB_CONTROL_VENDOR_OR_CLASS_REQUEST {
+	struct _URB_HEADER  Hdr;
+	PVOID  Reserved;
+	ULONG  TransferFlags;
+	ULONG  TransferBufferLength;
+	PVOID  TransferBuffer;
+	PMDL  TransferBufferMDL;
+	struct _URB  *UrbLink;
+	struct _URB_HCD_AREA  hca;
+	UCHAR  RequestTypeReservedBits;
+	UCHAR  Request;
+	USHORT  Value;
+	USHORT  Index;
+	USHORT  Reserved1;
+};
+
+struct _URB_FRAME_LENGTH_CONTROL {
+	struct _URB_HEADER  Hdr;
+};
+
+struct _URB_GET_CURRENT_FRAME_NUMBER {
+	struct _URB_HEADER  Hdr;
+	ULONG  FrameNumber;
+};
+
+struct _URB_GET_FRAME_LENGTH {
+	struct _URB_HEADER  Hdr;
+	ULONG  FrameLength;
+	ULONG  FrameNumber;
+};
+
+typedef struct _USBD_ISO_PACKET_DESCRIPTOR {
+  ULONG  Offset;
+  ULONG  Length;
+  USBD_STATUS  Status;
+} USBD_ISO_PACKET_DESCRIPTOR, *PUSBD_ISO_PACKET_DESCRIPTOR;
+
+struct _URB_ISOCH_TRANSFER {
+	struct _URB_HEADER  Hdr;
+	USBD_PIPE_HANDLE  PipeHandle;
+	ULONG  TransferFlags;
+	ULONG  TransferBufferLength;
+	PVOID  TransferBuffer;
+	PMDL  TransferBufferMDL;
+	struct _URB  *UrbLink;
+	struct _URB_HCD_AREA  hca;
+	ULONG  StartFrame;
+	ULONG  NumberOfPackets;
+	ULONG  ErrorCount;
+	USBD_ISO_PACKET_DESCRIPTOR  IsoPacket[1];
+};
+
+struct _URB_PIPE_REQUEST {
+	struct _URB_HEADER  Hdr;
+	USBD_PIPE_HANDLE  PipeHandle;
+	ULONG  Reserved;
+};
+
+struct _URB_SET_FRAME_LENGTH {
+	struct _URB_HEADER  Hdr;
+	LONG  FrameLengthDelta;
+};
+
+typedef struct _USBD_DEVICE_INFORMATION {
+	ULONG  OffsetNext;
+	PVOID  UsbdDeviceHandle;
+	USB_DEVICE_DESCRIPTOR  DeviceDescriptor;
+} USBD_DEVICE_INFORMATION, *PUSBD_DEVICE_INFORMATION;
+
+typedef enum _USBD_PIPE_TYPE {
+	UsbdPipeTypeControl,
+	UsbdPipeTypeIsochronous,
+	UsbdPipeTypeBulk,
+	UsbdPipeTypeInterrupt
+} USBD_PIPE_TYPE;
+
+/* USBD_PIPE_INFORMATION.PipeFlags constants */
+#define USBD_PF_CHANGE_MAX_PACKET         0x00000001
+#define USBD_PF_DOUBLE_BUFFER             0x00000002
+#define USBD_PF_ENABLE_RT_THREAD_ACCESS   0x00000004
+#define USBD_PF_MAP_ADD_TRANSFERS         0x00000008
+
+typedef struct _USBD_PIPE_INFORMATION {
+  USHORT  MaximumPacketSize;
+  UCHAR  EndpointAddress;
+  UCHAR  Interval;
+  USBD_PIPE_TYPE  PipeType;
+  USBD_PIPE_HANDLE  PipeHandle;
+  ULONG  MaximumTransferSize;
+  ULONG  PipeFlags;
+} USBD_PIPE_INFORMATION, *PUSBD_PIPE_INFORMATION;
+
+typedef struct _USBD_INTERFACE_INFORMATION {
+  USHORT  Length;
+  UCHAR  InterfaceNumber;
+  UCHAR  AlternateSetting;
+  UCHAR  Class;
+  UCHAR  SubClass;
+  UCHAR  Protocol;
+  UCHAR  Reserved;
+  USBD_INTERFACE_HANDLE  InterfaceHandle;
+  ULONG  NumberOfPipes;
+  USBD_PIPE_INFORMATION  Pipes[1];
+} USBD_INTERFACE_INFORMATION, *PUSBD_INTERFACE_INFORMATION;
+
+struct _URB_SELECT_CONFIGURATION {
+	struct _URB_HEADER  Hdr;
+	PUSB_CONFIGURATION_DESCRIPTOR  ConfigurationDescriptor;
+	USBD_CONFIGURATION_HANDLE  ConfigurationHandle;
+	USBD_INTERFACE_INFORMATION  Interface;
+};
+
+struct _URB_SELECT_INTERFACE {
+	struct _URB_HEADER  Hdr;
+	USBD_CONFIGURATION_HANDLE  ConfigurationHandle;
+	USBD_INTERFACE_INFORMATION  Interface;
+};
+
+typedef struct _USBD_VERSION_INFORMATION {
+	ULONG  USBDI_Version;
+	ULONG  Supported_USB_Version;
+} USBD_VERSION_INFORMATION, *PUSBD_VERSION_INFORMATION;
+
+typedef struct _URB {
+	union {
+		struct _URB_HEADER  UrbHeader;
+		struct _URB_SELECT_INTERFACE  UrbSelectInterface;
+		struct _URB_SELECT_CONFIGURATION  UrbSelectConfiguration;
+		struct _URB_PIPE_REQUEST  UrbPipeRequest;
+		struct _URB_FRAME_LENGTH_CONTROL  UrbFrameLengthControl;
+		struct _URB_GET_FRAME_LENGTH  UrbGetFrameLength;
+		struct _URB_SET_FRAME_LENGTH  UrbSetFrameLength;
+		struct _URB_GET_CURRENT_FRAME_NUMBER  UrbGetCurrentFrameNumber;
+		struct _URB_CONTROL_TRANSFER  UrbControlTransfer;
+		struct _URB_BULK_OR_INTERRUPT_TRANSFER  UrbBulkOrInterruptTransfer;
+		struct _URB_ISOCH_TRANSFER  UrbIsochronousTransfer;
+		struct _URB_CONTROL_DESCRIPTOR_REQUEST  UrbControlDescriptorRequest;
+		struct _URB_CONTROL_GET_STATUS_REQUEST  UrbControlGetStatusRequest;
+		struct _URB_CONTROL_FEATURE_REQUEST  UrbControlFeatureRequest;
+		struct _URB_CONTROL_VENDOR_OR_CLASS_REQUEST  UrbControlVendorClassRequest;
+		struct _URB_CONTROL_GET_INTERFACE_REQUEST  UrbControlGetInterfaceRequest;
+		struct _URB_CONTROL_GET_CONFIGURATION_REQUEST  UrbControlGetConfigurationRequest;
+	};
+} URB, *PURB;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* defined __USB_H */
+
+#endif /* __USBDI_H */
Index: Daodan/MinGW/include/ddk/usbioctl.h
===================================================================
--- Daodan/MinGW/include/ddk/usbioctl.h	(revision 1046)
+++ Daodan/MinGW/include/ddk/usbioctl.h	(revision 1046)
@@ -0,0 +1,353 @@
+/*
+ * usbioctl.h
+ *
+ * USB IOCTL interface.
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __USBIOCTL_H
+#define __USBIOCTL_H
+
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "ntddk.h"
+#include "usb100.h"
+#include "usbiodef.h"
+
+#define USBD_PORT_ENABLED                 1
+#define USBD_PORT_CONNECTED               2
+
+#define IOCTL_INTERNAL_USB_CYCLE_PORT \
+  CTL_CODE(FILE_DEVICE_USB, USB_CYCLE_PORT, METHOD_NEITHER, FILE_ANY_ACCESS)
+
+#define IOCTL_INTERNAL_USB_ENABLE_PORT \
+  CTL_CODE(FILE_DEVICE_USB, USB_ENABLE_PORT, METHOD_NEITHER, FILE_ANY_ACCESS)
+
+#define IOCTL_INTERNAL_USB_GET_BUS_INFO \
+  CTL_CODE(FILE_DEVICE_USB, USB_GET_BUS_INFO, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_INTERNAL_USB_GET_BUSGUID_INFO \
+  CTL_CODE(FILE_DEVICE_USB, USB_GET_BUSGUID_INFO, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_INTERNAL_USB_GET_CONTROLLER_NAME \
+  CTL_CODE(FILE_DEVICE_USB, USB_GET_CONTROLLER_NAME, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_INTERNAL_USB_GET_DEVICE_HANDLE \
+  CTL_CODE(FILE_DEVICE_USB, USB_GET_DEVICE_HANDLE, METHOD_NEITHER, FILE_ANY_ACCESS)
+
+#define IOCTL_INTERNAL_USB_GET_HUB_COUNT \
+  CTL_CODE(FILE_DEVICE_USB, USB_GET_HUB_COUNT, METHOD_NEITHER, FILE_ANY_ACCESS)
+
+#define IOCTL_INTERNAL_USB_GET_HUB_NAME \
+  CTL_CODE(FILE_DEVICE_USB, USB_GET_HUB_NAME, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_INTERNAL_USB_GET_PARENT_HUB_INFO \
+  CTL_CODE(FILE_DEVICE_USB, USB_GET_PARENT_HUB_INFO, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_INTERNAL_USB_GET_PORT_STATUS \
+  CTL_CODE(FILE_DEVICE_USB, USB_GET_PORT_STATUS, METHOD_NEITHER, FILE_ANY_ACCESS)
+
+#define IOCTL_INTERNAL_USB_RESET_PORT \
+  CTL_CODE(FILE_DEVICE_USB, USB_RESET_PORT, METHOD_NEITHER, FILE_ANY_ACCESS)
+
+#define IOCTL_INTERNAL_USB_GET_ROOTHUB_PDO \
+  CTL_CODE(FILE_DEVICE_USB, USB_GET_ROOTHUB_PDO, METHOD_NEITHER, FILE_ANY_ACCESS)
+
+#define IOCTL_INTERNAL_USB_SUBMIT_IDLE_NOTIFICATION \
+  CTL_CODE(FILE_DEVICE_USB, USB_IDLE_NOTIFICATION, METHOD_NEITHER, FILE_ANY_ACCESS)
+
+#define IOCTL_INTERNAL_USB_SUBMIT_URB  \
+  CTL_CODE(FILE_DEVICE_USB, USB_SUBMIT_URB, METHOD_NEITHER, FILE_ANY_ACCESS)
+
+
+#define IOCTL_USB_DIAG_IGNORE_HUBS_ON \
+  CTL_CODE(FILE_DEVICE_USB, USB_DIAG_IGNORE_HUBS_ON, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_USB_DIAG_IGNORE_HUBS_OFF \
+  CTL_CODE(FILE_DEVICE_USB, USB_DIAG_IGNORE_HUBS_OFF, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_USB_DIAGNOSTIC_MODE_OFF \
+  CTL_CODE(FILE_DEVICE_USB, HCD_DIAGNOSTIC_MODE_OFF, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_USB_DIAGNOSTIC_MODE_ON \
+  CTL_CODE(FILE_DEVICE_USB, HCD_DIAGNOSTIC_MODE_ON, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_USB_GET_DESCRIPTOR_FROM_NODE_CONNECTION \
+  CTL_CODE(FILE_DEVICE_USB, USB_GET_DESCRIPTOR_FROM_NODE_CONNECTION, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_USB_GET_HUB_CAPABILITIES \
+  CTL_CODE(FILE_DEVICE_USB, USB_GET_HUB_CAPABILITIES, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_USB_GET_ROOT_HUB_NAME \
+  CTL_CODE(FILE_DEVICE_USB, HCD_GET_ROOT_HUB_NAME, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_GET_HCD_DRIVERKEY_NAME \
+  CTL_CODE(FILE_DEVICE_USB, HCD_GET_DRIVERKEY_NAME, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_USB_GET_NODE_INFORMATION \
+  CTL_CODE(FILE_DEVICE_USB, USB_GET_NODE_INFORMATION, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_USB_GET_NODE_CONNECTION_INFORMATION \
+  CTL_CODE(FILE_DEVICE_USB, USB_GET_NODE_CONNECTION_INFORMATION, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_USB_GET_NODE_CONNECTION_ATTRIBUTES \
+  CTL_CODE(FILE_DEVICE_USB, USB_GET_NODE_CONNECTION_ATTRIBUTES, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_USB_GET_NODE_CONNECTION_NAME \
+  CTL_CODE(FILE_DEVICE_USB, USB_GET_NODE_CONNECTION_NAME, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_USB_GET_NODE_CONNECTION_DRIVERKEY_NAME \
+  CTL_CODE(FILE_DEVICE_USB, USB_GET_NODE_CONNECTION_DRIVERKEY_NAME, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_USB_HCD_DISABLE_PORT \
+  CTL_CODE(FILE_DEVICE_USB, HCD_DISABLE_PORT, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_USB_HCD_ENABLE_PORT \
+  CTL_CODE(FILE_DEVICE_USB, HCD_ENABLE_PORT, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_USB_HCD_GET_STATS_1 \
+  CTL_CODE(FILE_DEVICE_USB, HCD_GET_STATS_1, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_USB_HCD_GET_STATS_2 \
+  CTL_CODE(FILE_DEVICE_USB, HCD_GET_STATS_2, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+
+typedef struct _USB_HUB_CAPABILITIES {
+  ULONG  HubIs2xCapable : 1;
+} USB_HUB_CAPABILITIES, *PUSB_HUB_CAPABILITIES;
+
+typedef enum _USB_CONNECTION_STATUS {
+	NoDeviceConnected,
+	DeviceConnected,
+	DeviceFailedEnumeration,
+	DeviceGeneralFailure,
+	DeviceCausedOvercurrent,
+	DeviceNotEnoughPower,
+	DeviceNotEnoughBandwidth,
+	DeviceHubNestedTooDeeply,
+	DeviceInLegacyHub
+} USB_CONNECTION_STATUS, *PUSB_CONNECTION_STATUS;
+
+#include <pshpack1.h>
+
+typedef struct _USB_DESCRIPTOR_REQUEST {
+	ULONG  ConnectionIndex;
+	struct {
+		UCHAR  bmRequest;
+		UCHAR  bRequest;
+		USHORT  wValue;
+		USHORT  wIndex;
+		USHORT  wLength;
+	} SetupPacket;
+	UCHAR  Data[0];
+} USB_DESCRIPTOR_REQUEST, *PUSB_DESCRIPTOR_REQUEST;
+
+typedef struct _USB_HCD_DRIVERKEY_NAME {
+	ULONG  ActualLength;
+	WCHAR  DriverKeyName[1];
+} USB_HCD_DRIVERKEY_NAME, *PUSB_HCD_DRIVERKEY_NAME;
+
+typedef struct _HCD_ISO_STAT_COUNTERS {
+	USHORT  LateUrbs;
+	USHORT  DoubleBufferedPackets;
+	USHORT  TransfersCF_5ms;
+	USHORT  TransfersCF_2ms;
+	USHORT  TransfersCF_1ms;
+	USHORT  MaxInterruptLatency;
+	USHORT  BadStartFrame;
+	USHORT  StaleUrbs;
+	USHORT  IsoPacketNotAccesed;
+	USHORT  IsoPacketHWError;
+	USHORT  SmallestUrbPacketCount;
+	USHORT  LargestUrbPacketCount;
+	USHORT  IsoCRC_Error;
+	USHORT  IsoOVERRUN_Error;
+	USHORT  IsoINTERNAL_Error;
+	USHORT  IsoUNKNOWN_Error;
+	ULONG  IsoBytesTransferred;
+	USHORT  LateMissedCount;
+	USHORT  HWIsoMissedCount;
+	ULONG  Reserved7[8];
+} HCD_ISO_STAT_COUNTERS, *PHCD_ISO_STAT_COUNTERS;
+
+typedef struct _HCD_STAT_COUNTERS {
+	ULONG  BytesTransferred;
+	USHORT  IsoMissedCount;
+	USHORT  DataOverrunErrorCount;
+	USHORT  CrcErrorCount;
+	USHORT  ScheduleOverrunCount;
+	USHORT  TimeoutErrorCount;
+	USHORT  InternalHcErrorCount;
+	USHORT  BufferOverrunErrorCount;
+	USHORT  SWErrorCount;
+	USHORT  StallPidCount;
+	USHORT  PortDisableCount;
+} HCD_STAT_COUNTERS, *PHCD_STAT_COUNTERS;
+
+typedef struct _HCD_STAT_INFORMATION_1 {
+	ULONG  Reserved1;
+	ULONG  Reserved2;
+	ULONG  ResetCounters;
+	LARGE_INTEGER  TimeRead;
+	HCD_STAT_COUNTERS  Counters;
+} HCD_STAT_INFORMATION_1, *PHCD_STAT_INFORMATION_1;
+
+typedef struct _HCD_STAT_INFORMATION_2 {
+	ULONG  Reserved1;
+	ULONG  Reserved2;
+	ULONG  ResetCounters;
+	LARGE_INTEGER  TimeRead;
+	LONG  LockedMemoryUsed;
+	HCD_STAT_COUNTERS  Counters;
+	HCD_ISO_STAT_COUNTERS  IsoCounters;
+} HCD_STAT_INFORMATION_2, *PHCD_STAT_INFORMATION_2;
+
+typedef struct _USB_HUB_INFORMATION {
+	USB_HUB_DESCRIPTOR  HubDescriptor;
+	BOOLEAN  HubIsBusPowered;
+} USB_HUB_INFORMATION, *PUSB_HUB_INFORMATION;
+
+typedef struct _USB_HUB_NAME {
+	ULONG  ActualLength;
+	WCHAR  HubName[1];
+} USB_HUB_NAME, *PUSB_HUB_NAME;
+
+typedef enum _USB_HUB_NODE {
+	UsbHub,
+	UsbMIParent
+} USB_HUB_NODE;
+
+typedef VOID STDCALL
+(*USB_IDLE_CALLBACK)(
+  PVOID  Context);
+
+typedef struct _USB_IDLE_CALLBACK_INFO {
+	USB_IDLE_CALLBACK  IdleCallback;
+	PVOID  IdleContext;
+} USB_IDLE_CALLBACK_INFO, *PUSB_IDLE_CALLBACK_INFO;
+
+typedef struct _USB_NODE_CONNECTION_ATTRIBUTES {
+	ULONG  ConnectionIndex;
+	USB_CONNECTION_STATUS  ConnectionStatus;
+	ULONG  PortAttributes;
+} USB_NODE_CONNECTION_ATTRIBUTES, *PUSB_NODE_CONNECTION_ATTRIBUTES;
+
+typedef struct _USB_NODE_CONNECTION_DRIVERKEY_NAME {
+	ULONG  ConnectionIndex;
+	ULONG  ActualLength;
+	WCHAR  DriverKeyName[1];
+} USB_NODE_CONNECTION_DRIVERKEY_NAME, *PUSB_NODE_CONNECTION_DRIVERKEY_NAME;
+
+typedef struct _USB_PIPE_INFO {
+	USB_ENDPOINT_DESCRIPTOR  EndpointDescriptor;
+	ULONG  ScheduleOffset;
+} USB_PIPE_INFO, *PUSB_PIPE_INFO;
+
+typedef struct _USB_NODE_CONNECTION_INFORMATION {
+	ULONG  ConnectionIndex;
+	USB_DEVICE_DESCRIPTOR  DeviceDescriptor;
+	UCHAR  CurrentConfigurationValue;
+	BOOLEAN  LowSpeed;
+	BOOLEAN  DeviceIsHub;
+	USHORT  DeviceAddress;
+	ULONG  NumberOfOpenPipes;
+	USB_CONNECTION_STATUS  ConnectionStatus;
+	USB_PIPE_INFO  PipeList[0];
+} USB_NODE_CONNECTION_INFORMATION, *PUSB_NODE_CONNECTION_INFORMATION;
+
+typedef struct _USB_NODE_CONNECTION_NAME {
+	ULONG  ConnectionIndex;
+	ULONG  ActualLength;
+	WCHAR  NodeName[1];
+} USB_NODE_CONNECTION_NAME, *PUSB_NODE_CONNECTION_NAME;
+
+typedef struct _USB_MI_PARENT_INFORMATION {
+  ULONG  NumberOfInterfaces;
+} USB_MI_PARENT_INFORMATION, *PUSB_MI_PARENT_INFORMATION;
+
+typedef struct _USB_NODE_INFORMATION {
+	USB_HUB_NODE  NodeType;
+	union {
+		USB_HUB_INFORMATION  HubInformation;
+		USB_MI_PARENT_INFORMATION  MiParentInformation;
+	} u;
+} USB_NODE_INFORMATION, *PUSB_NODE_INFORMATION;
+
+#define WMI_USB_DRIVER_INFORMATION        0
+#define WMI_USB_DRIVER_NOTIFICATION       1
+#define WMI_USB_POWER_DEVICE_ENABLE       2
+
+typedef enum _USB_NOTIFICATION_TYPE {
+	EnumerationFailure = 0,
+	InsufficentBandwidth,
+	InsufficentPower,
+	OverCurrent,
+	ResetOvercurrent,
+	AcquireBusInfo,
+	AcquireHubName,
+	AcquireControllerName,
+	HubOvercurrent,
+	HubPowerChange,
+	HubNestedTooDeeply,
+	ModernDeviceInLegacyHub
+} USB_NOTIFICATION_TYPE;
+
+typedef struct _USB_ACQUIRE_INFO {
+	USB_NOTIFICATION_TYPE  NotificationType;
+	ULONG  TotalSize;
+	WCHAR  Buffer[1];
+} USB_ACQUIRE_INFO, *PUSB_ACQUIRE_INFO;
+
+typedef struct _USB_NOTIFICATION {
+  USB_NOTIFICATION_TYPE  NotificationType;
+} USB_NOTIFICATION, *PUSB_NOTIFICATION;
+
+typedef struct _USB_BUS_NOTIFICATION {
+	USB_NOTIFICATION_TYPE  NotificationType;
+	ULONG  TotalBandwidth;
+	ULONG  ConsumedBandwidth;
+	ULONG  ControllerNameLength;
+} USB_BUS_NOTIFICATION, *PUSB_BUS_NOTIFICATION;
+
+typedef struct _USB_CONNECTION_NOTIFICATION {
+	USB_NOTIFICATION_TYPE  NotificationType;
+	ULONG  ConnectionNumber;
+	ULONG  RequestedBandwidth;
+	ULONG  EnumerationFailReason;
+	ULONG  PowerRequested;
+	ULONG  HubNameLength;
+} USB_CONNECTION_NOTIFICATION, *PUSB_CONNECTION_NOTIFICATION;
+
+typedef struct _USB_ROOT_HUB_NAME {
+	ULONG  ActualLength;
+	WCHAR  RootHubName[1];
+} USB_ROOT_HUB_NAME, *PUSB_ROOT_HUB_NAME;
+
+#include <poppack.h>
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __USBIOCTL_H */
Index: Daodan/MinGW/include/ddk/usbiodef.h
===================================================================
--- Daodan/MinGW/include/ddk/usbiodef.h	(revision 1046)
+++ Daodan/MinGW/include/ddk/usbiodef.h	(revision 1046)
@@ -0,0 +1,106 @@
+/*
+ * usbiodef.h
+ *
+ * USB IOCTL definitions
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __USBIODEF_H
+#define __USBIODEF_H
+
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "ntddk.h"
+
+DEFINE_GUID(GUID_DEVINTERFACE_USB_HUB, \
+  0xf18a0e88, 0xc30c, 0x11d0, 0x88, 0x15, 0x00, 0xa0, 0xc9, 0x06, 0xbe, 0xd8);
+
+DEFINE_GUID(GUID_DEVINTERFACE_USB_DEVICE,
+  0xA5DCBF10L, 0x6530, 0x11D2, 0x90, 0x1F, 0x00, 0xC0, 0x4F, 0xB9, 0x51, 0xED);
+
+DEFINE_GUID(GUID_DEVINTERFACE_USB_HOST_CONTROLLER,
+  0x3abf6f2d, 0x71c4, 0x462a, 0x8a, 0x92, 0x1e, 0x68, 0x61, 0xe6, 0xaf, 0x27);
+
+DEFINE_GUID(GUID_USB_WMI_STD_DATA,
+  0x4E623B20L, 0xCB14, 0x11D1, 0xB3, 0x31, 0x00, 0xA0, 0xC9, 0x59, 0xBB, 0xD2);
+
+DEFINE_GUID(GUID_USB_WMI_STD_NOTIFICATION,
+  0x4E623B20L, 0xCB14, 0x11D1, 0xB3, 0x31, 0x00, 0xA0, 0xC9, 0x59, 0xBB, 0xD2);
+
+#define GUID_CLASS_USBHUB                 GUID_DEVINTERFACE_USB_HUB
+#define GUID_CLASS_USB_DEVICE             GUID_DEVINTERFACE_USB_DEVICE
+#define GUID_CLASS_USB_HOST_CONTROLLER    GUID_DEVINTERFACE_USB_HOST_CONTROLLER
+
+#define USB_SUBMIT_URB                    0
+#define USB_RESET_PORT                    1
+#define USB_GET_ROOTHUB_PDO               3
+#define USB_GET_PORT_STATUS               4
+#define USB_ENABLE_PORT                   5
+#define USB_GET_HUB_COUNT                 6
+#define USB_CYCLE_PORT                    7
+#define USB_GET_HUB_NAME                  8
+#define USB_IDLE_NOTIFICATION             9
+#define USB_GET_BUS_INFO                  264
+#define USB_GET_CONTROLLER_NAME           265
+#define USB_GET_BUSGUID_INFO              266
+#define USB_GET_PARENT_HUB_INFO           267
+#define USB_GET_DEVICE_HANDLE             268
+
+#define HCD_GET_STATS_1                   255
+#define HCD_DIAGNOSTIC_MODE_ON            256
+#define HCD_DIAGNOSTIC_MODE_OFF           257
+#define HCD_GET_ROOT_HUB_NAME             258
+#define HCD_GET_DRIVERKEY_NAME            265
+#define HCD_GET_STATS_2                   266
+#define HCD_DISABLE_PORT                  268
+#define HCD_ENABLE_PORT                   269
+#define HCD_USER_REQUEST                  270
+
+#define USB_GET_NODE_INFORMATION                258
+#define USB_GET_NODE_CONNECTION_INFORMATION     259
+#define USB_GET_DESCRIPTOR_FROM_NODE_CONNECTION 260
+#define USB_GET_NODE_CONNECTION_NAME            261
+#define USB_DIAG_IGNORE_HUBS_ON                 262
+#define USB_DIAG_IGNORE_HUBS_OFF                263
+#define USB_GET_NODE_CONNECTION_DRIVERKEY_NAME  264
+#define USB_GET_HUB_CAPABILITIES                271
+#define USB_GET_NODE_CONNECTION_ATTRIBUTES      272
+
+#define FILE_DEVICE_USB                   FILE_DEVICE_UNKNOWN
+
+#define USB_CTL(id) CTL_CODE(FILE_DEVICE_USB, \
+														 (id), \
+														 METHOD_BUFFERED, \
+														 FILE_ANY_ACCESS)
+
+#define USB_KERNEL_CTL(id) CTL_CODE(FILE_DEVICE_USB, \
+                                    (id), \
+                                    METHOD_NEITHER, \
+                                    FILE_ANY_ACCESS)
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __USBIODEF_H */
Index: Daodan/MinGW/include/ddk/usbscan.h
===================================================================
--- Daodan/MinGW/include/ddk/usbscan.h	(revision 1046)
+++ Daodan/MinGW/include/ddk/usbscan.h	(revision 1046)
@@ -0,0 +1,158 @@
+/*
+ * usbscan.h
+ *
+ * USB scanner definitions
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __USBSCAN_H
+#define __USBSCAN_H
+
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "ntddk.h"
+
+#define FILE_DEVICE_USB_SCAN              0x8000
+#define IOCTL_INDEX                       0x0800
+
+#define IOCTL_CANCEL_IO \
+  CTL_CODE(FILE_DEVICE_USB_SCAN, IOCTL_INDEX + 1, METHOD_BUFFERED,FILE_ANY_ACCESS)
+
+#define IOCTL_GET_VERSION \
+  CTL_CODE(FILE_DEVICE_USB_SCAN, IOCTL_INDEX + 0, METHOD_BUFFERED,FILE_ANY_ACCESS)
+
+#define IOCTL_GET_CHANNEL_ALIGN_RQST \
+  CTL_CODE(FILE_DEVICE_USB_SCAN, IOCTL_INDEX + 5, METHOD_BUFFERED,FILE_ANY_ACCESS)
+
+#define IOCTL_GET_DEVICE_DESCRIPTOR \
+  CTL_CODE(FILE_DEVICE_USB_SCAN, IOCTL_INDEX + 6, METHOD_BUFFERED,FILE_ANY_ACCESS)
+
+#define IOCTL_GET_PIPE_CONFIGURATION \
+  CTL_CODE(FILE_DEVICE_USB_SCAN, IOCTL_INDEX + 10,METHOD_BUFFERED,FILE_ANY_ACCESS)
+
+#define IOCTL_GET_USB_DESCRIPTOR \
+  CTL_CODE(FILE_DEVICE_USB_SCAN, IOCTL_INDEX + 8, METHOD_BUFFERED,FILE_ANY_ACCESS)
+
+#define IOCTL_READ_REGISTERS \
+  CTL_CODE(FILE_DEVICE_USB_SCAN, IOCTL_INDEX + 3, METHOD_BUFFERED,FILE_ANY_ACCESS)
+
+#define IOCTL_RESET_PIPE \
+  CTL_CODE(FILE_DEVICE_USB_SCAN, IOCTL_INDEX + 7, METHOD_BUFFERED,FILE_ANY_ACCESS)
+
+#define IOCTL_SEND_USB_REQUEST \
+  CTL_CODE(FILE_DEVICE_USB_SCAN, IOCTL_INDEX + 9, METHOD_BUFFERED,FILE_ANY_ACCESS)
+
+#define IOCTL_SET_TIMEOUT \
+  CTL_CODE(FILE_DEVICE_USB_SCAN, IOCTL_INDEX + 11,METHOD_BUFFERED,FILE_ANY_ACCESS)
+
+#define IOCTL_WAIT_ON_DEVICE_EVENT \
+  CTL_CODE(FILE_DEVICE_USB_SCAN, IOCTL_INDEX + 2, METHOD_BUFFERED,FILE_ANY_ACCESS)
+
+#define IOCTL_WRITE_REGISTERS \
+  CTL_CODE(FILE_DEVICE_USB_SCAN, IOCTL_INDEX + 4, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+
+#define MAX_NUM_PIPES                     8
+
+#define BULKIN_FLAG                       0x80
+
+typedef struct _CHANNEL_INFO {
+  /*OUT*/ ULONG  EventChannelSize;
+  /*OUT*/ ULONG  uReadDataAlignment;
+  /*OUT*/ ULONG  uWriteDataAlignment;
+}CHANNEL_INFO, *PCHANNEL_INFO;
+
+typedef struct _DEVICE_DESCRIPTOR {
+  /*OUT*/ USHORT  usVendorId;
+  /*OUT*/ USHORT  usProductId;
+  /*OUT*/ USHORT  usBcdDevice;
+  /*OUT*/ USHORT  usLanguageId;
+} DEVICE_DESCRIPTOR, *PDEVICE_DESCRIPTOR;
+
+typedef struct _DRV_VERSION {
+  /*OUT*/ ULONG  major;
+  /*OUT*/ ULONG  minor;
+  /*OUT*/ ULONG  internal;
+} DRV_VERSION, *PDRV_VERSION;
+
+typedef struct _IO_BLOCK {
+  /*IN*/ ULONG  uOffset;
+  /*IN*/ ULONG  uLength;
+  /*IN OUT*/ PUCHAR  pbyData;
+  /*IN*/ ULONG  uIndex;
+} IO_BLOCK, *PIO_BLOCK;
+
+typedef struct _IO_BLOCK_EX {
+  /*IN*/ ULONG  uOffset;
+  /*IN*/ ULONG  uLength;
+  /*IN OUT*/ PUCHAR  pbyData;
+  /*IN*/ ULONG  uIndex;
+  /*IN*/ UCHAR  bRequest;
+  /*IN*/ UCHAR  bmRequestType;
+  /*IN*/ UCHAR  fTransferDirectionIn;
+} IO_BLOCK_EX, *PIO_BLOCK_EX;
+
+typedef struct _USBSCAN_GET_DESCRIPTOR {
+  /*IN*/ UCHAR  DescriptorType;
+  /*IN*/ UCHAR  Index;
+  /*IN*/ USHORT  LanguageId;
+} USBSCAN_GET_DESCRIPTOR, *PUSBSCAN_GET_DESCRIPTOR;
+
+typedef enum _RAW_PIPE_TYPE {
+	USBSCAN_PIPE_CONTROL,
+	USBSCAN_PIPE_ISOCHRONOUS,
+	USBSCAN_PIPE_BULK,
+	USBSCAN_PIPE_INTERRUPT
+} RAW_PIPE_TYPE;
+
+typedef struct _USBSCAN_PIPE_INFORMATION {
+  USHORT  MaximumPacketSize;
+  UCHAR  EndpointAddress;
+  UCHAR  Interval;
+  RAW_PIPE_TYPE  PipeType;
+} USBSCAN_PIPE_INFORMATION, *PUSBSCAN_PIPE_INFORMATION;
+
+typedef struct _USBSCAN_PIPE_CONFIGURATION {
+  /*OUT*/ ULONG  NumberOfPipes;
+  /*OUT*/ USBSCAN_PIPE_INFORMATION  PipeInfo[MAX_NUM_PIPES];
+} USBSCAN_PIPE_CONFIGURATION, *PUSBSCAN_PIPE_CONFIGURATION;
+
+typedef struct _USBSCAN_TIMEOUT {
+  /*IN*/ ULONG  TimeoutRead;
+  /*IN*/ ULONG  TimeoutWrite;
+  /*IN*/ ULONG  TimeoutEvent;
+} USBSCAN_TIMEOUT, *PUSBSCAN_TIMEOUT;
+
+typedef enum _PIPE_TYPE {
+	EVENT_PIPE,
+	READ_DATA_PIPE,
+	WRITE_DATA_PIPE,
+	ALL_PIPE
+} PIPE_TYPE;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __USBSCAN_H */
Index: Daodan/MinGW/include/ddk/usbuser.h
===================================================================
--- Daodan/MinGW/include/ddk/usbuser.h	(revision 1046)
+++ Daodan/MinGW/include/ddk/usbuser.h	(revision 1046)
@@ -0,0 +1,328 @@
+/*
+ * usbuser.h
+ *
+ * USB user mode IOCTL interface
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __USBUSER_H
+#define __USBUSER_H
+
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "ntddk.h"
+#include "usb.h"
+#include "usbiodef.h"
+
+#include <pshpack1.h>
+
+#define USBUSER_VERSION                   0x0004
+
+#define IOCTL_USB_USER_REQUEST            USB_CTL(HCD_USER_REQUEST)
+
+#ifndef IOCTL_USB_DIAGNOSTIC_MODE_ON
+#define IOCTL_USB_DIAGNOSTIC_MODE_ON      USB_CTL(HCD_DIAGNOSTIC_MODE_ON)
+#endif
+#ifndef IOCTL_USB_DIAGNOSTIC_MODE_OFF
+#define IOCTL_USB_DIAGNOSTIC_MODE_OFF     USB_CTL(HCD_DIAGNOSTIC_MODE_OFF)
+#endif
+
+#ifndef IOCTL_USB_GET_ROOT_HUB_NAME
+#define IOCTL_USB_GET_ROOT_HUB_NAME       USB_CTL(HCD_GET_ROOT_HUB_NAME)
+#endif
+#ifndef IOCTL_GET_HCD_DRIVERKEY_NAME
+#define IOCTL_GET_HCD_DRIVERKEY_NAME      USB_CTL(HCD_GET_DRIVERKEY_NAME)
+#endif
+
+typedef enum _USB_USER_ERROR_CODE {
+	UsbUserSuccess = 0,
+	UsbUserNotSupported,
+	UsbUserInvalidRequestCode,
+	UsbUserFeatureDisabled,
+	UsbUserInvalidHeaderParameter,
+	UsbUserInvalidParameter,
+	UsbUserMiniportError,
+	UsbUserBufferTooSmall,
+	UsbUserErrorNotMapped,
+	UsbUserDeviceNotStarted,
+	UsbUserNoDeviceConnected
+} USB_USER_ERROR_CODE;
+
+#define USBUSER_GET_CONTROLLER_INFO_0     0x00000001
+#define USBUSER_GET_CONTROLLER_DRIVER_KEY 0x00000002
+#define USBUSER_PASS_THRU                 0x00000003
+#define USBUSER_GET_POWER_STATE_MAP       0x00000004
+#define USBUSER_GET_BANDWIDTH_INFORMATION 0x00000005
+#define USBUSER_GET_BUS_STATISTICS_0      0x00000006
+#define USBUSER_GET_ROOTHUB_SYMBOLIC_NAME 0x00000007
+#define USBUSER_GET_USB_DRIVER_VERSION    0x00000008
+#define USBUSER_GET_USB2_HW_VERSION       0x00000009
+#define USBUSER_OP_SEND_ONE_PACKET        0x10000001
+#define USBUSER_OP_RAW_RESET_PORT         0x20000001
+#define USBUSER_OP_OPEN_RAW_DEVICE        0x20000002
+#define USBUSER_OP_CLOSE_RAW_DEVICE       0x20000003
+#define USBUSER_OP_SEND_RAW_COMMAND       0x20000004
+#define USBUSER_INVALID_REQUEST           0xFFFFFFF0
+#define USBUSER_OP_MASK_DEVONLY_API       0x10000000
+#define USBUSER_OP_MASK_HCTEST_API        0x20000000
+
+#define USB_PACKETFLAG_LOW_SPEED          0x00000001
+#define USB_PACKETFLAG_FULL_SPEED         0x00000002
+#define USB_PACKETFLAG_HIGH_SPEED         0x00000004
+#define USB_PACKETFLAG_ASYNC_IN           0x00000008
+#define USB_PACKETFLAG_ASYNC_OUT          0x00000010
+#define USB_PACKETFLAG_ISO_IN             0x00000020
+#define USB_PACKETFLAG_ISO_OUT            0x00000040
+#define USB_PACKETFLAG_SETUP              0x00000080
+#define USB_PACKETFLAG_TOGGLE0            0x00000100
+#define USB_PACKETFLAG_TOGGLE1            0x00000200
+
+typedef struct _PACKET_PARAMETERS {
+	UCHAR  DeviceAddress;
+	UCHAR  EndpointAddress;
+	USHORT  MaximumPacketSize;
+	ULONG  Timeout;
+	ULONG  Flags;
+	ULONG  DataLength;
+	USHORT  HubDeviceAddress;
+	USHORT  PortTTNumber;
+	UCHAR  ErrorCount;
+	UCHAR  Pad[3];
+	USBD_STATUS  UsbdStatusCode;
+	UCHAR  Data[4];
+} PACKET_PARAMETERS, *PPACKET_PARAMETERS;
+
+typedef struct _RAW_RESET_PORT_PARAMETERS {
+	USHORT  PortNumber;
+	USHORT  PortStatus;
+} RAW_RESET_PORT_PARAMETERS, *PRAW_RESET_PORT_PARAMETERS;
+
+typedef struct _USB_BANDWIDTH_INFO {
+	ULONG  DeviceCount;
+	ULONG  TotalBusBandwidth;
+	ULONG  Total32secBandwidth;
+	ULONG  AllocedBulkAndControl;
+	ULONG  AllocedIso;
+	ULONG  AllocedInterrupt_1ms;
+	ULONG  AllocedInterrupt_2ms;
+	ULONG  AllocedInterrupt_4ms;
+	ULONG  AllocedInterrupt_8ms;
+	ULONG  AllocedInterrupt_16ms;
+	ULONG  AllocedInterrupt_32ms;
+} USB_BANDWIDTH_INFO, *PUSB_BANDWIDTH_INFO;
+
+typedef struct _USBUSER_REQUEST_HEADER {
+	ULONG  UsbUserRequest;
+	USB_USER_ERROR_CODE  UsbUserStatusCode;
+	ULONG  RequestBufferLength;
+	ULONG  ActualBufferLength;
+} USBUSER_REQUEST_HEADER, *PUSBUSER_REQUEST_HEADER;
+
+typedef struct _USBUSER_BANDWIDTH_INFO_REQUEST {
+	USBUSER_REQUEST_HEADER  Header;
+	USB_BANDWIDTH_INFO  BandwidthInformation;
+} USBUSER_BANDWIDTH_INFO_REQUEST, *PUSBUSER_BANDWIDTH_INFO_REQUEST;
+
+typedef struct _USB_BUS_STATISTICS_0 {
+	ULONG  DeviceCount;
+	LARGE_INTEGER  CurrentSystemTime;
+	ULONG  CurrentUsbFrame;
+	ULONG  BulkBytes;
+	ULONG  IsoBytes;
+	ULONG  InterruptBytes;
+	ULONG  ControlDataBytes;
+	ULONG  PciInterruptCount;
+	ULONG  HardResetCount;
+	ULONG  WorkerSignalCount;
+	ULONG  CommonBufferBytes;
+	ULONG  WorkerIdleTimeMs;
+	BOOLEAN  RootHubEnabled;
+	UCHAR  RootHubDevicePowerState;
+	UCHAR  Unused;
+	UCHAR  NameIndex;
+} USB_BUS_STATISTICS_0, *PUSB_BUS_STATISTICS_0;
+
+typedef struct _USBUSER_BUS_STATISTICS_0_REQUEST {
+	USBUSER_REQUEST_HEADER  Header;
+	USB_BUS_STATISTICS_0  BusStatistics0;
+} USBUSER_BUS_STATISTICS_0_REQUEST, *PUSBUSER_BUS_STATISTICS_0_REQUEST;
+
+/* USB_CONTROLLER_INFO_0.HcFeatureFlags constants */
+#define USB_HC_FEATURE_FLAG_PORT_POWER_SWITCHING  0x00000001
+#define USB_HC_FEATURE_FLAG_SEL_SUSPEND           0x00000002
+#define USB_HC_FEATURE_LEGACY_BIOS                0x00000004
+
+typedef struct _USB_CLOSE_RAW_DEVICE_PARAMETERS {
+  ULONG  xxx;
+} USB_CLOSE_RAW_DEVICE_PARAMETERS , *PUSB_CLOSE_RAW_DEVICE_PARAMETERS;
+
+typedef struct _USBUSER_CLOSE_RAW_DEVICE {
+	USBUSER_REQUEST_HEADER  Header;
+	USB_CLOSE_RAW_DEVICE_PARAMETERS  Parameters;
+} USBUSER_CLOSE_RAW_DEVICE, *PUSBUSER_CLOSE_RAW_DEVICE;
+
+typedef struct _USB_CONTROLLER_INFO_0 {
+  ULONG  PciVendorId;
+  ULONG  PciDeviceId;
+  ULONG  PciRevision;
+  ULONG  NumberOfRootPorts;
+  USB_CONTROLLER_FLAVOR  ControllerFlavor;
+  ULONG  HcFeatureFlags;
+} USB_CONTROLLER_INFO_0 , *PUSB_CONTROLLER_INFO_0;
+
+typedef struct _USBUSER_CONTROLLER_INFO_0 {
+  USBUSER_REQUEST_HEADER  Header;
+  USB_CONTROLLER_INFO_0  Info0;
+} USBUSER_CONTROLLER_INFO_0, *PUSBUSER_CONTROLLER_INFO_0;
+
+typedef struct _USB_DRIVER_VERSION_PARAMETERS {
+	ULONG  DriverTrackingCode;
+	ULONG  USBDI_Version;
+	ULONG  USBUSER_Version;
+	BOOLEAN  CheckedPortDriver;
+	BOOLEAN  CheckedMiniportDriver;
+	USHORT  USB_Version;
+} USB_DRIVER_VERSION_PARAMETERS , *PUSB_DRIVER_VERSION_PARAMETERS;
+
+typedef struct _USBUSER_GET_DRIVER_VERSION {
+	USBUSER_REQUEST_HEADER  Header;
+	USB_DRIVER_VERSION_PARAMETERS  Parameters;
+} USBUSER_GET_DRIVER_VERSION, *PUSBUSER_GET_DRIVER_VERSION;
+
+typedef struct _USB_OPEN_RAW_DEVICE_PARAMETERS {
+	USHORT  PortStatus;
+	USHORT  MaxPacketEp0;
+} USB_OPEN_RAW_DEVICE_PARAMETERS , *PUSB_OPEN_RAW_DEVICE_PARAMETERS;
+
+typedef struct _USBUSER_OPEN_RAW_DEVICE {
+	USBUSER_REQUEST_HEADER  Header;
+	USB_OPEN_RAW_DEVICE_PARAMETERS  Parameters;
+} USBUSER_OPEN_RAW_DEVICE, *PUSBUSER_OPEN_RAW_DEVICE;
+
+typedef enum _WDMUSB_POWER_STATE {
+	WdmUsbPowerNotMapped = 0,
+	WdmUsbPowerSystemUnspecified = 100,
+	WdmUsbPowerSystemWorking,
+	WdmUsbPowerSystemSleeping1,
+	WdmUsbPowerSystemSleeping2,
+	WdmUsbPowerSystemSleeping3,
+	WdmUsbPowerSystemHibernate,
+	WdmUsbPowerSystemShutdown,
+	WdmUsbPowerDeviceUnspecified = 200,
+	WdmUsbPowerDeviceD0,
+	WdmUsbPowerDeviceD1,
+	WdmUsbPowerDeviceD2,
+	WdmUsbPowerDeviceD3
+} WDMUSB_POWER_STATE;
+
+typedef struct _USB_POWER_INFO {
+	WDMUSB_POWER_STATE  SystemState;
+	WDMUSB_POWER_STATE  HcDevicePowerState;
+	WDMUSB_POWER_STATE  HcDeviceWake;
+	WDMUSB_POWER_STATE  HcSystemWake;
+	WDMUSB_POWER_STATE  RhDevicePowerState;
+	WDMUSB_POWER_STATE  RhDeviceWake;
+	WDMUSB_POWER_STATE  RhSystemWake;
+	WDMUSB_POWER_STATE  LastSystemSleepState;
+	BOOLEAN  CanWakeup;
+	BOOLEAN  IsPowered;
+} USB_POWER_INFO, *PUSB_POWER_INFO;
+
+typedef struct _USBUSER_POWER_INFO_REQUEST {
+	USBUSER_REQUEST_HEADER  Header;
+	USB_POWER_INFO  PowerInformation;
+} USBUSER_POWER_INFO_REQUEST, *PUSBUSER_POWER_INFO_REQUEST;
+
+typedef struct _USB_UNICODE_NAME {
+	ULONG  Length;
+	WCHAR  String[1];
+} USB_UNICODE_NAME, *PUSB_UNICODE_NAME;
+
+typedef struct _USBUSER_CONTROLLER_UNICODE_NAME {
+	USBUSER_REQUEST_HEADER  Header;
+  USB_UNICODE_NAME  UnicodeName;
+} USBUSER_CONTROLLER_UNICODE_NAME, *PUSBUSER_CONTROLLER_UNICODE_NAME;
+
+typedef struct _USB_PASS_THRU_PARAMETERS {
+	GUID  FunctionGUID;
+	ULONG  ParameterLength;
+	UCHAR  Parameters[4];
+} USB_PASS_THRU_PARAMETERS, *PUSB_PASS_THRU_PARAMETERS;
+
+typedef struct _USBUSER_PASS_THRU_REQUEST {
+	USBUSER_REQUEST_HEADER  Header;
+	USB_PASS_THRU_PARAMETERS  PassThru;
+} USBUSER_PASS_THRU_REQUEST, *PUSBUSER_PASS_THRU_REQUEST;
+
+typedef struct _USBUSER_RAW_RESET_ROOT_PORT {
+	USBUSER_REQUEST_HEADER  Header;
+	RAW_RESET_PORT_PARAMETERS  Parameters;
+} USBUSER_RAW_RESET_ROOT_PORT, *PUSBUSER_RAW_RESET_ROOT_PORT;
+
+typedef struct _USBUSER_SEND_ONE_PACKET {
+	USBUSER_REQUEST_HEADER  Header;
+	PACKET_PARAMETERS  PacketParameters;
+} USBUSER_SEND_ONE_PACKET, *PUSBUSER_SEND_ONE_PACKET;
+
+typedef struct _USB_SEND_RAW_COMMAND_PARAMETERS {
+	UCHAR  Usb_bmRequest;
+	UCHAR  Usb_bRequest;
+	USHORT  Usb_wVlaue;
+	USHORT  Usb_wIndex;
+	USHORT  Usb_wLength;
+	USHORT  DeviceAddress;
+	USHORT  MaximumPacketSize;
+	ULONG  Timeout;
+	ULONG  DataLength;
+	USBD_STATUS  UsbdStatusCode;
+	UCHAR  Data[4];
+} USB_SEND_RAW_COMMAND_PARAMETERS, *PUSB_SEND_RAW_COMMAND_PARAMETERS;
+
+typedef struct _USBUSER_SEND_RAW_COMMAND {
+	USBUSER_REQUEST_HEADER  Header;
+	USB_SEND_RAW_COMMAND_PARAMETERS  Parameters;
+} USBUSER_SEND_RAW_COMMAND, *PUSBUSER_SEND_RAW_COMMAND;
+
+/* USB_USB2HW_VERSION_PARAMETERS.Usb2HwRevision constants */
+#define USB2HW_UNKNOWN                    0x00
+#define USB2HW_A0                         0xA0
+#define USB2HW_A1                         0xA1
+#define USB2HW_B0                         0xB0
+
+typedef struct _USB_USB2HW_VERSION_PARAMETERS {
+  UCHAR  Usb2HwRevision;
+} USB_USB2HW_VERSION_PARAMETERS, *PUSB_USB2HW_VERSION_PARAMETERS;
+
+typedef struct _USBUSER_GET_USB2HW_VERSION {
+	USBUSER_REQUEST_HEADER  Header;
+	USB_USB2HW_VERSION_PARAMETERS  Parameters;
+} USBUSER_GET_USB2HW_VERSION, *PUSBUSER_GET_USB2HW_VERSION;
+
+#include <poppack.h>
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __USBUSER_H */
Index: Daodan/MinGW/include/ddk/video.h
===================================================================
--- Daodan/MinGW/include/ddk/video.h	(revision 1046)
+++ Daodan/MinGW/include/ddk/video.h	(revision 1046)
@@ -0,0 +1,1566 @@
+/*
+ * video.h
+ *
+ * Video port and miniport driver interface
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __VIDEO_H
+#define __VIDEO_H
+
+
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __WINDDI_H
+#error winddi.h cannot be included with video.h
+#else
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "ntddk.h"
+
+#if defined(_VIDEOPORT_)
+  #define VPAPI DECLSPEC_EXPORT
+#else
+  #define VPAPI DECLSPEC_IMPORT
+#endif
+
+#include "videoagp.h"
+#include "ntddvdeo.h"
+
+
+typedef LONG VP_STATUS;
+typedef VP_STATUS *PVP_STATUS;
+typedef struct __DMA_PARAMETERS * PDMA;
+typedef struct _VIDEO_PORT_EVENT *PEVENT;
+typedef struct _VIDEO_PORT_SPIN_LOCK *PSPIN_LOCK;
+typedef struct __VP_DMA_ADAPTER *PVP_DMA_ADAPTER;
+
+#define DISPLAY_ADAPTER_HW_ID             0xFFFFFFFF
+
+#define EVENT_TYPE_MASK                   1
+#define SYNCHRONIZATION_EVENT             0
+#define NOTIFICATION_EVENT                1
+
+#define INITIAL_EVENT_STATE_MASK          2
+#define INITIAL_EVENT_NOT_SIGNALED        0
+#define INITIAL_EVENT_SIGNALED            2
+
+typedef enum VIDEO_DEBUG_LEVEL {
+  Error = 0,
+  Warn,
+  Trace,
+  Info
+} VIDEO_DEBUG_LEVEL, *PVIDEO_DEBUG_LEVEL;
+
+typedef enum {
+  VideoPortUnlockAfterDma = 1,
+  VideoPortKeepPagesLocked,
+  VideoPortDmaInitOnly
+} DMA_FLAGS;
+
+typedef enum _HW_DMA_RETURN {
+  DmaAsyncReturn,
+  DmaSyncReturn
+} HW_DMA_RETURN, *PHW_DMA_RETURN;
+
+typedef HW_DMA_RETURN
+(*PVIDEO_HW_START_DMA)(
+    PVOID  HwDeviceExtension,
+    PDMA  pDma);
+
+
+#ifdef DBG
+
+#define PAGED_CODE() \
+  if (VideoPortGetCurrentIrql() > 1 /* APC_LEVEL */) \
+  { \
+    VideoPortDebugPrint(Error, "Video: Pageable code called at IRQL %d\n", VideoPortGetCurrentIrql() ); \
+    ASSERT(FALSE); \
+  }
+
+#else
+
+#define PAGED_CODE()
+
+#endif
+
+typedef struct _VIDEO_HARDWARE_CONFIGURATION_DATA {
+  INTERFACE_TYPE InterfaceType;
+  ULONG BusNumber;
+  USHORT Version;
+  USHORT Revision;
+  USHORT Irql;
+  USHORT Vector;
+  ULONG ControlBase;
+  ULONG ControlSize;
+  ULONG CursorBase;
+  ULONG CursorSize;
+  ULONG FrameBase;
+  ULONG FrameSize;
+} VIDEO_HARDWARE_CONFIGURATION_DATA, *PVIDEO_HARDWARE_CONFIGURATION_DATA;
+
+#define SIZE_OF_NT4_VIDEO_PORT_CONFIG_INFO       0x42
+#define SIZE_OF_NT4_VIDEO_HW_INITIALIZATION_DATA 0x28
+#define SIZE_OF_W2K_VIDEO_HW_INITIALIZATION_DATA 0x50
+
+typedef enum _VIDEO_DEVICE_DATA_TYPE {
+  VpMachineData = 0,
+  VpCmosData,
+  VpBusData,
+  VpControllerData,
+  VpMonitorData
+} VIDEO_DEVICE_DATA_TYPE, *PVIDEO_DEVICE_DATA_TYPE;
+
+
+
+/* Video miniport driver functions */
+
+typedef struct _VP_SCATTER_GATHER_ELEMENT {
+  PHYSICAL_ADDRESS  Address;
+  ULONG  Length;
+  ULONG_PTR  Reserved;
+} VP_SCATTER_GATHER_ELEMENT, *PVP_SCATTER_GATHER_ELEMENT;
+
+typedef struct _VP_SCATTER_GATHER_LIST {
+  ULONG  NumberOfElements;
+  ULONG_PTR  Reserved;
+  VP_SCATTER_GATHER_ELEMENT  Elements[0];
+} VP_SCATTER_GATHER_LIST, *PVP_SCATTER_GATHER_LIST;
+
+typedef VOID DDKAPI
+(*PEXECUTE_DMA)(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ PVP_DMA_ADAPTER  VpDmaAdapter,
+  /*IN*/ PVP_SCATTER_GATHER_LIST  SGList,
+  /*IN*/ PVOID  Context);
+
+typedef PVOID DDKAPI
+(*PVIDEO_PORT_GET_PROC_ADDRESS)(
+/*IN*/ PVOID  HwDeviceExtension,
+/*IN*/ PUCHAR  FunctionName);
+
+typedef struct _VIDEO_PORT_CONFIG_INFO {
+  ULONG  Length;
+  ULONG  SystemIoBusNumber;
+  INTERFACE_TYPE  AdapterInterfaceType;
+  ULONG  BusInterruptLevel;
+  ULONG  BusInterruptVector;
+  KINTERRUPT_MODE  InterruptMode;
+  ULONG  NumEmulatorAccessEntries;
+  PEMULATOR_ACCESS_ENTRY  EmulatorAccessEntries;
+  ULONG_PTR  EmulatorAccessEntriesContext;
+  PHYSICAL_ADDRESS  VdmPhysicalVideoMemoryAddress;
+  ULONG  VdmPhysicalVideoMemoryLength;
+  ULONG  HardwareStateSize;
+  ULONG  DmaChannel;
+  ULONG  DmaPort;
+  UCHAR  DmaShareable;
+  UCHAR  InterruptShareable;
+  BOOLEAN  Master;
+  DMA_WIDTH  DmaWidth;
+  DMA_SPEED  DmaSpeed;
+  BOOLEAN  bMapBuffers;
+  BOOLEAN  NeedPhysicalAddresses;
+  BOOLEAN  DemandMode;
+  ULONG  MaximumTransferLength;
+  ULONG  NumberOfPhysicalBreaks;
+  BOOLEAN  ScatterGather;
+  ULONG  MaximumScatterGatherChunkSize;
+  PVIDEO_PORT_GET_PROC_ADDRESS VideoPortGetProcAddress;
+  PWSTR  DriverRegistryPath;
+  ULONGLONG  SystemMemorySize;
+} VIDEO_PORT_CONFIG_INFO, *PVIDEO_PORT_CONFIG_INFO;
+
+typedef VP_STATUS DDKAPI
+(*PVIDEO_HW_FIND_ADAPTER)(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ PVOID  HwContext,
+  /*IN*/ PWSTR  ArgumentString,
+  /*IN OUT*/  PVIDEO_PORT_CONFIG_INFO  ConfigInfo,
+  /*OUT*/ PUCHAR  Again);
+
+typedef VP_STATUS DDKAPI
+(*PVIDEO_HW_POWER_GET)(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ ULONG  HwId,
+  /*IN OUT*/  PVIDEO_POWER_MANAGEMENT  VideoPowerControl);
+
+/* PVIDEO_HW_GET_CHILD_DESCRIPTOR return values */
+#define VIDEO_ENUM_MORE_DEVICES           ERROR_CONTINUE
+#define VIDEO_ENUM_NO_MORE_DEVICES        ERROR_NO_MORE_DEVICES
+#define VIDEO_ENUM_INVALID_DEVICE         ERROR_INVALID_NAME
+
+/* PVIDEO_HW_GET_CHILD_DESCRIPTOR.ChildEnumInfo constants */
+typedef struct _VIDEO_CHILD_ENUM_INFO {
+  ULONG  Size;
+  ULONG  ChildDescriptorSize;
+  ULONG  ChildIndex;
+  ULONG  ACPIHwId;
+  PVOID  ChildHwDeviceExtension;
+} VIDEO_CHILD_ENUM_INFO, *PVIDEO_CHILD_ENUM_INFO;
+
+/* PVIDEO_HW_GET_CHILD_DESCRIPTOR.VideoChildType constants */
+typedef enum _VIDEO_CHILD_TYPE {
+  Monitor = 1,
+  NonPrimaryChip,
+  VideoChip,
+  Other
+} VIDEO_CHILD_TYPE, *PVIDEO_CHILD_TYPE;
+
+typedef VP_STATUS DDKAPI
+(*PVIDEO_HW_GET_CHILD_DESCRIPTOR)(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ PVIDEO_CHILD_ENUM_INFO  ChildEnumInfo,
+  /*OUT*/  PVIDEO_CHILD_TYPE  VideoChildType,
+  /*OUT*/  PUCHAR  pChildDescriptor,
+  /*OUT*/  PULONG  UId,
+  /*OUT*/  PULONG  pUnused);
+
+typedef BOOLEAN DDKAPI
+(*PVIDEO_HW_INITIALIZE)(
+  /*IN*/ PVOID  HwDeviceExtension);
+
+typedef BOOLEAN DDKAPI
+(*PVIDEO_HW_INTERRUPT)(
+  /*IN*/ PVOID  HwDeviceExtension);
+
+/* VIDEO_ACCESS_RANGE.RangePassive */
+#define VIDEO_RANGE_PASSIVE_DECODE        1
+#define VIDEO_RANGE_10_BIT_DECODE         2
+
+#ifndef VIDEO_ACCESS_RANGE_DEFINED /* also in miniport.h */
+#define VIDEO_ACCESS_RANGE_DEFINED
+typedef struct _VIDEO_ACCESS_RANGE {
+  PHYSICAL_ADDRESS  RangeStart;
+  ULONG  RangeLength;
+  UCHAR  RangeInIoSpace;
+  UCHAR  RangeVisible;
+  UCHAR  RangeShareable;
+  UCHAR  RangePassive;
+} VIDEO_ACCESS_RANGE, *PVIDEO_ACCESS_RANGE;
+#endif
+
+typedef VOID DDKAPI
+(*PVIDEO_HW_LEGACYRESOURCES)(
+  /*IN*/ ULONG  VendorId,
+  /*IN*/ ULONG  DeviceId,
+  /*IN OUT*/  PVIDEO_ACCESS_RANGE  *LegacyResourceList,
+  /*IN OUT*/  PULONG  LegacyResourceCount);
+
+typedef VP_STATUS DDKAPI
+(*PMINIPORT_QUERY_DEVICE_ROUTINE)(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ PVOID  Context,
+  /*IN*/ VIDEO_DEVICE_DATA_TYPE  DeviceDataType,
+  /*IN*/ PVOID  Identifier,
+  /*IN*/ ULONG  IdentifierLength,
+  /*IN*/ PVOID  ConfigurationData,
+  /*IN*/ ULONG  ConfigurationDataLength,
+  /*IN OUT*/  PVOID  ComponentInformation,
+  /*IN*/ ULONG  ComponentInformationLength);
+
+typedef struct _QUERY_INTERFACE {
+  CONST GUID  *InterfaceType;
+  USHORT  Size;
+  USHORT  Version;
+  PINTERFACE  Interface;
+  PVOID  InterfaceSpecificData;
+} QUERY_INTERFACE, *PQUERY_INTERFACE;
+
+typedef VP_STATUS DDKAPI
+(*PVIDEO_HW_QUERY_INTERFACE)(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN OUT*/  PQUERY_INTERFACE  QueryInterface);
+
+typedef VP_STATUS DDKAPI
+(*PMINIPORT_GET_REGISTRY_ROUTINE)(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ PVOID  Context,
+  /*IN OUT*/  PWSTR  ValueName,
+  /*IN OUT*/  PVOID  ValueData,
+  /*IN*/ ULONG  ValueLength);
+
+typedef BOOLEAN DDKAPI
+(*PVIDEO_HW_RESET_HW)(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ ULONG  Columns,
+  /*IN*/ ULONG  Rows);
+
+typedef VP_STATUS DDKAPI
+(*PVIDEO_HW_POWER_SET)(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ ULONG  HwId,
+  /*IN*/ PVIDEO_POWER_MANAGEMENT  VideoPowerControl);
+
+typedef struct _STATUS_BLOCK {
+   _ANONYMOUS_UNION union {
+    VP_STATUS  Status;
+    PVOID  Pointer;
+  } DUMMYUNIONNAME;
+  ULONG_PTR Information;
+} STATUS_BLOCK, *PSTATUS_BLOCK;
+
+typedef struct _VIDEO_REQUEST_PACKET {
+  ULONG  IoControlCode;
+  PSTATUS_BLOCK  StatusBlock;
+  PVOID  InputBuffer;
+  ULONG  InputBufferLength;
+  PVOID  OutputBuffer;
+  ULONG  OutputBufferLength;
+} VIDEO_REQUEST_PACKET, *PVIDEO_REQUEST_PACKET;
+
+typedef BOOLEAN DDKAPI
+(*PVIDEO_HW_START_IO)(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ PVIDEO_REQUEST_PACKET  RequestPacket);
+
+typedef BOOLEAN DDKAPI
+(*PMINIPORT_SYNCHRONIZE_ROUTINE)(
+  /*IN*/ PVOID  Context);
+
+typedef VOID DDKAPI
+(*PVIDEO_HW_TIMER)(
+  /*IN*/ PVOID  HwDeviceExtension);
+
+typedef VOID DDKAPI
+(*PMINIPORT_DPC_ROUTINE)(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ PVOID  Context);
+
+typedef VP_STATUS DDKAPI
+(*PDRIVER_IO_PORT_UCHAR)(
+  /*IN*/ ULONG_PTR  Context,
+  /*IN*/ ULONG  Port,
+  /*IN*/ UCHAR  AccessMode,
+  /*IN*/ PUCHAR  Data);
+
+typedef VP_STATUS DDKAPI
+(*PDRIVER_IO_PORT_UCHAR_STRING)(
+  /*IN*/ ULONG_PTR  Context,
+  /*IN*/ ULONG  Port,
+  /*IN*/ UCHAR  AccessMode,
+  /*IN*/ PUCHAR  Data,
+  /*IN*/ ULONG  DataLength);
+
+typedef VP_STATUS DDKAPI
+(*PDRIVER_IO_PORT_ULONG)(
+  /*IN*/ ULONG_PTR  Context,
+  /*IN*/ ULONG  Port,
+  /*IN*/ UCHAR  AccessMode,
+  /*IN*/ PULONG  Data);
+
+typedef VP_STATUS DDKAPI
+(*PDRIVER_IO_PORT_ULONG_STRING)(
+  /*IN*/ ULONG_PTR  Context,
+  /*IN*/ ULONG  Port,
+  /*IN*/ UCHAR  AccessMode,
+  /*IN*/ PULONG  Data,
+  /*IN*/ ULONG  DataLength);
+
+typedef VP_STATUS DDKAPI
+(*PDRIVER_IO_PORT_USHORT)(
+  /*IN*/ ULONG_PTR  Context,
+  /*IN*/ ULONG  Port,
+  /*IN*/ UCHAR  AccessMode,
+  /*IN*/ PUSHORT  Data);
+
+typedef VP_STATUS DDKAPI
+(*PDRIVER_IO_PORT_USHORT_STRING)(
+  /*IN*/ ULONG_PTR  Context,
+  /*IN*/ ULONG  Port,
+  /*IN*/ UCHAR  AccessMode,
+  /*IN*/ PUSHORT  Data,
+  /*IN*/ ULONG  DataLength);
+
+
+
+typedef struct _INT10_BIOS_ARGUMENTS {
+  ULONG  Eax;
+  ULONG  Ebx;
+  ULONG  Ecx;
+  ULONG  Edx;
+  ULONG  Esi;
+  ULONG  Edi;
+  ULONG  Ebp;
+  USHORT  SegDs;
+  USHORT  SegEs;
+} INT10_BIOS_ARGUMENTS, *PINT10_BIOS_ARGUMENTS;
+
+typedef struct _VIDEO_CHILD_STATE {
+  ULONG  Id;
+  ULONG  State;
+} VIDEO_CHILD_STATE, *PVIDEO_CHILD_STATE;
+
+typedef struct _VIDEO_CHILD_STATE_CONFIGURATION {
+  ULONG  Count;
+  VIDEO_CHILD_STATE  ChildStateArray[ANYSIZE_ARRAY];
+} VIDEO_CHILD_STATE_CONFIGURATION, *PVIDEO_CHILD_STATE_CONFIGURATION;
+
+typedef struct _VIDEO_HW_INITIALIZATION_DATA {
+  ULONG  HwInitDataSize;
+  INTERFACE_TYPE  AdapterInterfaceType;
+  PVIDEO_HW_FIND_ADAPTER  HwFindAdapter;
+  PVIDEO_HW_INITIALIZE  HwInitialize;
+  PVIDEO_HW_INTERRUPT  HwInterrupt;
+  PVIDEO_HW_START_IO  HwStartIO;
+  ULONG  HwDeviceExtensionSize;
+  ULONG  StartingDeviceNumber;
+  PVIDEO_HW_RESET_HW  HwResetHw;
+  PVIDEO_HW_TIMER  HwTimer;
+  PVIDEO_HW_START_DMA  HwStartDma;
+  PVIDEO_HW_POWER_SET  HwSetPowerState;
+  PVIDEO_HW_POWER_GET  HwGetPowerState;
+  PVIDEO_HW_GET_CHILD_DESCRIPTOR  HwGetVideoChildDescriptor;
+  PVIDEO_HW_QUERY_INTERFACE  HwQueryInterface;
+  ULONG  HwChildDeviceExtensionSize;
+  PVIDEO_ACCESS_RANGE  HwLegacyResourceList;
+  ULONG  HwLegacyResourceCount;
+  PVIDEO_HW_LEGACYRESOURCES  HwGetLegacyResources;
+  BOOLEAN  AllowEarlyEnumeration;
+  ULONG  Reserved;
+} VIDEO_HW_INITIALIZATION_DATA, *PVIDEO_HW_INITIALIZATION_DATA;
+
+  /* VIDEO_PORT_AGP_INTERFACE.Version contants */
+#define VIDEO_PORT_AGP_INTERFACE_VERSION_1 1
+
+typedef struct _VIDEO_PORT_AGP_INTERFACE {
+  SHORT  Size;
+  SHORT  Version;
+  PVOID  Context;
+  PINTERFACE_REFERENCE  InterfaceReference;
+  PINTERFACE_DEREFERENCE  InterfaceDereference;
+  PAGP_RESERVE_PHYSICAL  AgpReservePhysical;
+  PAGP_RELEASE_PHYSICAL  AgpReleasePhysical;
+  PAGP_COMMIT_PHYSICAL  AgpCommitPhysical;
+  PAGP_FREE_PHYSICAL  AgpFreePhysical;
+  PAGP_RESERVE_VIRTUAL  AgpReserveVirtual;
+  PAGP_RELEASE_VIRTUAL  AgpReleaseVirtual;
+  PAGP_COMMIT_VIRTUAL  AgpCommitVirtual;
+  PAGP_FREE_VIRTUAL  AgpFreeVirtual;
+  ULONGLONG  AgpAllocationLimit;
+} VIDEO_PORT_AGP_INTERFACE, *PVIDEO_PORT_AGP_INTERFACE;
+
+  /* VIDEO_PORT_AGP_INTERFACE_2.Version constants */
+#define VIDEO_PORT_AGP_INTERFACE_VERSION_2 2
+
+typedef struct _VIDEO_PORT_AGP_INTERFACE_2 {
+  /*IN*/ USHORT  Size;
+  /*IN*/ USHORT  Version;
+  /*OUT*/ PVOID  Context;
+  /*OUT*/ PINTERFACE_REFERENCE  InterfaceReference;
+  /*OUT*/ PINTERFACE_DEREFERENCE  InterfaceDereference;
+  /*OUT*/ PAGP_RESERVE_PHYSICAL  AgpReservePhysical;
+  /*OUT*/ PAGP_RELEASE_PHYSICAL  AgpReleasePhysical;
+  /*OUT*/ PAGP_COMMIT_PHYSICAL  AgpCommitPhysical;
+  /*OUT*/ PAGP_FREE_PHYSICAL  AgpFreePhysical;
+  /*OUT*/ PAGP_RESERVE_VIRTUAL  AgpReserveVirtual;
+  /*OUT*/ PAGP_RELEASE_VIRTUAL  AgpReleaseVirtual;
+  /*OUT*/ PAGP_COMMIT_VIRTUAL  AgpCommitVirtual;
+  /*OUT*/ PAGP_FREE_VIRTUAL  AgpFreeVirtual;
+  /*OUT*/ ULONGLONG  AgpAllocationLimit;
+  /*OUT*/ PAGP_SET_RATE  AgpSetRate;
+} VIDEO_PORT_AGP_INTERFACE_2, *PVIDEO_PORT_AGP_INTERFACE_2;
+
+#define VIDEO_PORT_I2C_INTERFACE_VERSION_1  1
+
+typedef VOID DDKAPI
+(*PVIDEO_WRITE_CLOCK_LINE)(
+  PVOID HwDeviceExtension,
+  UCHAR Data);
+
+typedef VOID DDKAPI
+(*PVIDEO_WRITE_DATA_LINE)(
+  PVOID HwDeviceExtension,
+  UCHAR Data);
+
+typedef BOOLEAN DDKAPI
+(*PVIDEO_READ_CLOCK_LINE)(
+  PVOID HwDeviceExtension);
+
+typedef BOOLEAN DDKAPI
+(*PVIDEO_READ_DATA_LINE)(
+  PVOID HwDeviceExtension);
+
+typedef struct _I2C_CALLBACKS
+{
+  /*IN*/ PVIDEO_WRITE_CLOCK_LINE  WriteClockLine;
+  /*IN*/ PVIDEO_WRITE_DATA_LINE  WriteDataLine;
+  /*IN*/ PVIDEO_READ_CLOCK_LINE  ReadClockLine;
+  /*IN*/ PVIDEO_READ_DATA_LINE  ReadDataLine;
+} I2C_CALLBACKS, *PI2C_CALLBACKS;
+
+typedef BOOLEAN DDKAPI
+(*PI2C_START)(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ PI2C_CALLBACKS  I2CCallbacks);
+
+typedef BOOLEAN DDKAPI
+(*PI2C_STOP)(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ PI2C_CALLBACKS  I2CCallbacks);
+
+typedef BOOLEAN DDKAPI
+(*PI2C_WRITE)(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ PI2C_CALLBACKS  I2CCallbacks,
+  /*IN*/ PUCHAR  Buffer,
+  /*IN*/ ULONG  Length);
+
+typedef BOOLEAN DDKAPI
+(*PI2C_READ)(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ PI2C_CALLBACKS  I2CCallbacks,
+  /*OUT*/ PUCHAR  Buffer,
+  /*IN*/ ULONG  Length);
+
+typedef struct _VIDEO_PORT_I2C_INTERFACE {
+  USHORT  Size;
+  USHORT  Version;
+  PVOID  Context;
+  PINTERFACE_REFERENCE  InterfaceReference;
+  PINTERFACE_DEREFERENCE  InterfaceDereference;
+  PI2C_START  I2CStart;
+  PI2C_STOP  I2CStop;
+  PI2C_WRITE  I2CWrite;
+  PI2C_READ  I2CRead;
+} VIDEO_PORT_I2C_INTERFACE, *PVIDEO_PORT_I2C_INTERFACE;
+
+  /* VIDEO_PORT_INT10_INTERFACE.Version constants */
+#define VIDEO_PORT_INT10_INTERFACE_VERSION_1 1
+
+typedef VP_STATUS DDKAPI
+(*PINT10_ALLOCATE_BUFFER)(
+  /*IN*/ PVOID  Context,
+  /*OUT*/ PUSHORT  Seg,
+  /*OUT*/ PUSHORT  Off,
+  /*IN OUT*/ PULONG  Length);
+
+typedef VP_STATUS DDKAPI
+(*PINT10_CALL_BIOS)(
+  /*IN*/ PVOID  Context,
+  /*IN OUT*/ PINT10_BIOS_ARGUMENTS  BiosArguments);
+
+typedef VP_STATUS DDKAPI
+(*PINT10_FREE_BUFFER)(
+  /*IN*/ PVOID  Context,
+  /*IN*/ USHORT  Seg,
+  /*IN*/ USHORT  Off);
+
+typedef VP_STATUS DDKAPI
+(*PINT10_READ_MEMORY)(
+  /*IN*/ PVOID  Context,
+  /*IN*/ USHORT  Seg,
+  /*IN*/ USHORT  Off,
+  /*OUT*/ PVOID  Buffer,
+  /*IN*/ ULONG  Length);
+
+typedef VP_STATUS DDKAPI
+(*PINT10_WRITE_MEMORY)(
+  /*IN*/ PVOID  Context,
+  /*IN*/ USHORT  Seg,
+  /*IN*/ USHORT  Off,
+  /*IN*/ PVOID  Buffer,
+  /*IN*/ ULONG  Length);
+
+typedef struct _VIDEO_PORT_INT10_INTERFACE {
+  /*IN*/ USHORT  Size;
+  /*IN*/ USHORT  Version;
+  /*OUT*/ PVOID  Context;
+  /*OUT*/ PINTERFACE_REFERENCE  InterfaceReference;
+  /*OUT*/ PINTERFACE_DEREFERENCE  InterfaceDereference;
+  /*OUT*/ PINT10_ALLOCATE_BUFFER  Int10AllocateBuffer;
+  /*OUT*/ PINT10_FREE_BUFFER  Int10FreeBuffer;
+  /*OUT*/ PINT10_READ_MEMORY  Int10ReadMemory;
+  /*OUT*/ PINT10_WRITE_MEMORY  Int10WriteMemory;
+  /*OUT*/ PINT10_CALL_BIOS  Int10CallBios;
+} VIDEO_PORT_INT10_INTERFACE, *PVIDEO_PORT_INT10_INTERFACE;
+
+  /* Flags for VideoPortGetDeviceBase and VideoPortMapMemory */
+#define VIDEO_MEMORY_SPACE_MEMORY         0x00
+#define VIDEO_MEMORY_SPACE_IO             0x01
+#define VIDEO_MEMORY_SPACE_USER_MODE      0x02
+#define VIDEO_MEMORY_SPACE_DENSE          0x04
+#define VIDEO_MEMORY_SPACE_P6CACHE        0x08
+
+typedef struct _VIDEO_X86_BIOS_ARGUMENTS {
+  ULONG  Eax;
+  ULONG  Ebx;
+  ULONG  Ecx;
+  ULONG  Edx;
+  ULONG  Esi;
+  ULONG  Edi;
+  ULONG  Ebp;
+} VIDEO_X86_BIOS_ARGUMENTS, *PVIDEO_X86_BIOS_ARGUMENTS;
+
+typedef struct _VP_DEVICE_DESCRIPTION {
+  BOOLEAN  ScatterGather;
+  BOOLEAN  Dma32BitAddresses;
+  BOOLEAN  Dma64BitAddresses;
+  ULONG  MaximumLength;
+} VP_DEVICE_DESCRIPTION, *PVP_DEVICE_DESCRIPTION;
+
+typedef struct _VPOSVERSIONINFO {
+  /*IN*/ ULONG  Size;
+  /*OUT*/ ULONG  MajorVersion;
+  /*OUT*/ ULONG  MinorVersion;
+  /*OUT*/ ULONG  BuildNumber;
+  /*OUT*/ USHORT  ServicePackMajor;
+  /*OUT*/ USHORT  ServicePackMinor;
+} VPOSVERSIONINFO, *PVPOSVERSIONINFO;
+
+
+
+  /* Video port functions for miniports */
+
+VPAPI
+VOID
+DDKAPI
+VideoDebugPrint(
+  /*IN*/ ULONG  DebugPrintLevel,
+  /*IN*/ PCHAR  DebugMessage,
+  /*IN*/ ...);
+
+VPAPI
+VOID
+DDKAPI
+VideoPortAcquireDeviceLock(
+  /*IN*/ PVOID  HwDeviceExtension);
+
+VPAPI
+VOID
+DDKAPI
+VideoPortAcquireSpinLock(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ PSPIN_LOCK  SpinLock,
+  /*OUT*/ PUCHAR  OldIrql);
+
+VPAPI
+VOID
+DDKAPI
+VideoPortAcquireSpinLockAtDpcLevel(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ PSPIN_LOCK  SpinLock);
+
+VPAPI
+VP_STATUS
+DDKAPI
+VideoPortAllocateBuffer(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ ULONG  Size,
+  /*OUT*/ PVOID  *Buffer);
+
+VPAPI
+PVOID
+DDKAPI
+VideoPortAllocateCommonBuffer(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ PVP_DMA_ADAPTER  VpDmaAdapter,
+  /*IN*/ ULONG  DesiredLength,
+  /*OUT*/ PPHYSICAL_ADDRESS  LogicalAddress,
+  /*IN*/ BOOLEAN  CacheEnabled,
+  PVOID  Reserved);
+
+VPAPI
+PVOID
+DDKAPI
+VideoPortAllocateContiguousMemory(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ ULONG  NumberOfBytes,
+  /*IN*/ PHYSICAL_ADDRESS  HighestAcceptableAddress);
+
+  /* VideoPortAllocatePool.PoolType constants */
+typedef enum _VP_POOL_TYPE {
+  VpNonPagedPool = 0,
+  VpPagedPool,
+  VpNonPagedPoolCacheAligned = 4,
+  VpPagedPoolCacheAligned
+} VP_POOL_TYPE, *PVP_POOL_TYPE;
+
+VPAPI
+PVOID
+DDKAPI
+VideoPortAllocatePool(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ VP_POOL_TYPE  PoolType,
+  /*IN*/ SIZE_T  NumberOfBytes,
+  /*IN*/ ULONG  Tag);
+
+VPAPI
+PDMA
+DDKAPI
+VideoPortAssociateEventsWithDmaHandle(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN OUT*/ PVIDEO_REQUEST_PACKET  pVrp,
+  /*IN*/ PVOID  MappedUserEvent,
+  /*IN*/ PVOID  DisplayDriverEvent);
+
+  /* VideoPortCheckForDeviceExistence.Flags constants */
+#define CDE_USE_SUBSYSTEM_IDS             0x00000001
+#define CDE_USE_REVISION                  0x00000002
+
+VPAPI
+BOOLEAN
+DDKAPI
+VideoPortCheckForDeviceExistence(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ USHORT  VendorId,
+  /*IN*/ USHORT  DeviceId,
+  /*IN*/ UCHAR  RevisionId,
+  /*IN*/ USHORT  SubVendorId,
+  /*IN*/ USHORT  SubSystemId,
+  /*IN*/ ULONG  Flags);
+
+VPAPI
+VOID
+DDKAPI
+VideoPortClearEvent(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ PEVENT  pEvent);
+
+VPAPI
+ULONG
+DDKAPI
+VideoPortCompareMemory(
+  /*IN*/ PVOID  Source1,
+  /*IN*/ PVOID  Source2,
+  /*IN*/ ULONG  Length);
+
+VPAPI
+VP_STATUS
+DDKAPI
+VideoPortCompleteDma(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ PVP_DMA_ADAPTER  VpDmaAdapter,
+  /*IN*/ PVP_SCATTER_GATHER_LIST  VpScatterGather,
+  /*IN*/ BOOLEAN  WriteToDevice);
+
+VPAPI
+VP_STATUS
+DDKAPI
+VideoPortCreateEvent(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ ULONG  EventFlag,
+  /*IN*/ PVOID  Unused,
+  /*OUT*/ PEVENT  *ppEvent);
+
+VPAPI
+VP_STATUS
+DDKAPI
+VideoPortCreateSecondaryDisplay(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN OUT*/ PVOID  *SecondaryDeviceExtension,
+  /*IN*/ ULONG  ulFlag);
+
+VPAPI
+VP_STATUS
+DDKAPI
+VideoPortCreateSpinLock(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*OUT*/ PSPIN_LOCK  *SpinLock);
+
+typedef struct _DDC_CONTROL {
+  /*IN*/ ULONG  Size;
+  /*IN*/ I2C_CALLBACKS  I2CCallbacks;
+  /*IN*/ UCHAR  EdidSegment;
+} DDC_CONTROL, *PDDC_CONTROL;
+
+VPAPI
+BOOLEAN
+DDKAPI
+VideoPortDDCMonitorHelper(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ PVOID  DDCControl,
+  /*IN OUT*/ PUCHAR  EdidBuffer,
+  /*IN*/ ULONG  EdidBufferSize);
+
+VPAPI
+VOID
+DDKCDECLAPI
+VideoPortDebugPrint(
+  /*IN*/ VIDEO_DEBUG_LEVEL  DebugPrintLevel,
+  /*IN*/ PCHAR  DebugMessage,
+  /*IN*/ ...);
+
+VPAPI
+VP_STATUS
+DDKAPI
+VideoPortDeleteEvent(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ PEVENT  pEvent);
+
+VPAPI
+VP_STATUS
+DDKAPI
+VideoPortDeleteSpinLock(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ PSPIN_LOCK  SpinLock);
+
+VPAPI
+VP_STATUS
+DDKAPI
+VideoPortDisableInterrupt(
+  /*IN*/ PVOID  HwDeviceExtension);
+
+VPAPI
+PDMA
+DDKAPI
+VideoPortDoDma(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ PDMA  pDma,
+  /*IN*/ DMA_FLAGS  DmaFlags);
+
+VPAPI
+VP_STATUS
+DDKAPI
+VideoPortEnableInterrupt(
+  /*IN*/ PVOID  HwDeviceExtension);
+
+VPAPI
+VP_STATUS
+DDKAPI
+VideoPortEnumerateChildren(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ PVOID  Reserved);
+
+VPAPI
+VOID
+DDKAPI
+VideoPortFreeCommonBuffer(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ ULONG  Length,
+  /*IN*/ PVOID  VirtualAddress,
+  /*IN*/ PHYSICAL_ADDRESS  LogicalAddress,
+  /*IN*/ BOOLEAN  CacheEnabled);
+
+VPAPI
+VOID
+DDKAPI
+VideoPortFreeDeviceBase(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ PVOID  MappedAddress);
+
+VPAPI
+VOID
+DDKAPI
+VideoPortFreePool(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ PVOID  Ptr);
+
+VPAPI
+VP_STATUS
+DDKAPI
+VideoPortGetAccessRanges(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ ULONG  NumRequestedResources,
+  /*IN*/ PIO_RESOURCE_DESCRIPTOR  RequestedResources  /*OPTIONAL*/,
+  /*IN*/ ULONG  NumAccessRanges,
+  /*OUT*/ PVIDEO_ACCESS_RANGE  AccessRanges,
+  /*IN*/ PVOID  VendorId,
+  /*IN*/ PVOID  DeviceId,
+  /*OUT*/ PULONG  Slot);
+
+VPAPI
+PVOID
+DDKAPI
+VideoPortGetAssociatedDeviceExtension(
+  /*IN*/ PVOID  DeviceObject);
+
+VPAPI
+ULONG
+DDKAPI
+VideoPortGetAssociatedDeviceID(
+  /*IN*/ PVOID DeviceObject);
+
+VPAPI
+ULONG
+DDKAPI
+VideoPortGetBusData(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ BUS_DATA_TYPE  BusDataType,
+  /*IN*/ ULONG  SlotNumber,
+  /*IN OUT*/ PVOID  Buffer,
+  /*IN*/ ULONG  Offset,
+  /*IN*/ ULONG  Length);
+
+VPAPI
+ULONG
+DDKAPI
+VideoPortGetBytesUsed(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ PDMA  pDma);
+
+VPAPI
+PVOID
+DDKAPI
+VideoPortGetCommonBuffer(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ ULONG  DesiredLength,
+  /*IN*/ ULONG  Alignment,
+  /*OUT*/ PPHYSICAL_ADDRESS  LogicalAddress,
+  /*OUT*/ PULONG  pActualLength,
+  /*IN*/ BOOLEAN  CacheEnabled);
+
+VPAPI
+UCHAR
+DDKAPI
+VideoPortGetCurrentIrql(
+  VOID);
+
+VPAPI
+PVOID
+DDKAPI
+VideoPortGetDeviceBase(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ PHYSICAL_ADDRESS  IoAddress,
+  /*IN*/ ULONG  NumberOfUchars,
+  /*IN*/ UCHAR  InIoSpace);
+
+VPAPI
+VP_STATUS
+DDKAPI
+VideoPortGetDeviceData(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ VIDEO_DEVICE_DATA_TYPE  DeviceDataType,
+  /*IN*/ PMINIPORT_QUERY_DEVICE_ROUTINE  CallbackRoutine,
+  /*IN*/ PVOID  Context);
+
+VPAPI
+PVP_DMA_ADAPTER
+DDKAPI
+VideoPortGetDmaAdapter(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ PVP_DEVICE_DESCRIPTION  VpDeviceDescription);
+
+VPAPI
+PVOID
+DDKAPI
+VideoPortGetDmaContext(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ PDMA  pDma);
+
+VPAPI
+PVOID
+DDKAPI
+VideoPortGetMdl(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ PDMA  pDma);
+
+VPAPI
+VP_STATUS
+DDKAPI
+VideoPortGetRegistryParameters(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ PWSTR  ParameterName,
+  /*IN*/ UCHAR  IsParameterFileName,
+  /*IN*/ PMINIPORT_GET_REGISTRY_ROUTINE  CallbackRoutine,
+  /*IN*/ PVOID  Context);
+
+VPAPI
+PVOID
+DDKAPI
+VideoPortGetRomImage(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ PVOID  Unused1,
+  /*IN*/ ULONG  Unused2,
+  /*IN*/ ULONG  Length);
+
+VPAPI
+VP_STATUS
+DDKAPI
+VideoPortGetVersion(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN OUT*/ PVPOSVERSIONINFO  pVpOsVersionInfo);
+
+VPAPI
+VP_STATUS
+DDKAPI
+VideoPortGetVgaStatus(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*OUT*/ PULONG  VgaStatus);
+
+VPAPI
+ULONG
+DDKAPI
+VideoPortInitialize(
+  /*IN*/ PVOID  Argument1,
+  /*IN*/ PVOID  Argument2,
+  /*IN*/ PVIDEO_HW_INITIALIZATION_DATA  HwInitializationData,
+  /*IN*/ PVOID  HwContext);
+
+VPAPI
+VP_STATUS
+DDKAPI
+VideoPortInt10(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ PVIDEO_X86_BIOS_ARGUMENTS  BiosArguments);
+
+VPAPI
+LONG
+DDKFASTAPI
+VideoPortInterlockedDecrement(
+  /*IN*/ PLONG  Addend);
+
+VPAPI
+LONG
+DDKFASTAPI
+VideoPortInterlockedExchange(
+  /*IN OUT*/ PLONG  Target,
+  /*IN*/ LONG  Value);
+
+VPAPI
+LONG
+DDKFASTAPI
+VideoPortInterlockedIncrement(
+  /*IN*/ PLONG  Addend);
+
+typedef enum _VP_LOCK_OPERATION {
+  VpReadAccess = 0,
+  VpWriteAccess,
+  VpModifyAccess
+} VP_LOCK_OPERATION;
+
+VPAPI
+PVOID
+DDKAPI
+VideoPortLockBuffer(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ PVOID  BaseAddress,
+  /*IN*/ ULONG  Length,
+  /*IN*/ VP_LOCK_OPERATION  Operation);
+
+VPAPI
+BOOLEAN
+DDKAPI
+VideoPortLockPages(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN OUT*/ PVIDEO_REQUEST_PACKET  pVrp,
+  /*IN OUT*/ PEVENT  pUEvent,
+  /*IN*/ PEVENT  pDisplayEvent,
+  /*IN*/ DMA_FLAGS  DmaFlags);
+
+VPAPI
+VOID
+DDKAPI
+VideoPortLogError(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ PVIDEO_REQUEST_PACKET  Vrp  /*OPTIONAL*/,
+  /*IN*/ VP_STATUS  ErrorCode,
+  /*IN*/ ULONG  UniqueId);
+
+VPAPI
+VP_STATUS
+DDKAPI
+VideoPortMapBankedMemory(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ PHYSICAL_ADDRESS  PhysicalAddress,
+  /*IN OUT*/ PULONG  Length,
+  PULONG  InIoSpace,
+  PVOID  *VirtualAddress,
+  ULONG  BankLength,
+  UCHAR  ReadWriteBank,
+  PBANKED_SECTION_ROUTINE  BankRoutine,
+  PVOID  Context);
+
+VPAPI
+PDMA
+DDKAPI
+VideoPortMapDmaMemory(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ PVIDEO_REQUEST_PACKET  pVrp,
+  /*IN*/ PHYSICAL_ADDRESS  BoardAddress,
+  /*IN*/ PULONG  Length,
+  /*IN*/ PULONG  InIoSpace,
+  /*IN*/ PVOID  MappedUserEvent,
+  /*IN*/ PVOID  DisplayDriverEvent,
+  /*IN OUT*/ PVOID  *VirtualAddress);
+
+VPAPI
+VP_STATUS
+DDKAPI
+VideoPortMapMemory(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ PHYSICAL_ADDRESS  PhysicalAddress,
+  /*IN OUT*/ PULONG  Length,
+  /*IN*/ PULONG  InIoSpace,
+  /*IN OUT*/ PVOID  *VirtualAddress);
+
+VPAPI
+VOID
+DDKAPI
+VideoPortMoveMemory(
+  /*IN*/ PVOID  Destination,
+  /*IN*/ PVOID  Source,
+  /*IN*/ ULONG  Length);
+
+VPAPI
+VOID
+DDKAPI
+VideoPortPutDmaAdapter(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ PVP_DMA_ADAPTER  VpDmaAdapter);
+
+VPAPI
+LONGLONG
+DDKAPI
+VideoPortQueryPerformanceCounter(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*OUT*/ PLONGLONG  PerformanceFrequency  /*OPTIONAL*/);
+
+  /* VideoPortQueryServices.ServicesType constants */
+typedef enum _VIDEO_PORT_SERVICES {
+  VideoPortServicesAGP = 1,
+  VideoPortServicesI2C,
+  VideoPortServicesHeadless,
+  VideoPortServicesInt10
+} VIDEO_PORT_SERVICES;
+
+VPAPI
+VP_STATUS
+DDKAPI
+VideoPortQueryServices(
+  /*IN*/ PVOID HwDeviceExtension,
+  /*IN*/ VIDEO_PORT_SERVICES ServicesType,
+  /*IN OUT*/ PINTERFACE Interface);
+
+VPAPI
+VOID
+DDKAPI
+VideoPortQuerySystemTime(
+  /*OUT*/ PLARGE_INTEGER  CurrentTime);
+
+VPAPI
+BOOLEAN
+DDKAPI
+VideoPortQueueDpc(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ PMINIPORT_DPC_ROUTINE  CallbackRoutine,
+  /*IN*/ PVOID  Context);
+
+VPAPI
+VOID
+DDKAPI
+VideoPortReadPortBufferUchar(
+  /*IN*/ PUCHAR  Port,
+  /*OUT*/ PUCHAR  Buffer,
+  /*IN*/ ULONG  Count);
+
+VPAPI
+VOID
+DDKAPI
+VideoPortReadPortBufferUlong(
+  /*IN*/ PULONG  Port,
+  /*OUT*/ PULONG  Buffer,
+  /*IN*/ ULONG  Count);
+
+VPAPI
+VOID
+DDKAPI
+VideoPortReadPortBufferUshort(
+  /*IN*/ PUSHORT  Port,
+  /*OUT*/ PUSHORT  Buffer,
+  /*IN*/ ULONG  Count);
+
+VPAPI
+UCHAR
+DDKAPI
+VideoPortReadPortUchar(
+  /*IN*/ PUCHAR  Port);
+
+VPAPI
+ULONG
+DDKAPI
+VideoPortReadPortUlong(
+  /*IN*/ PULONG  Port);
+
+VPAPI
+USHORT
+DDKAPI
+VideoPortReadPortUshort(
+  /*IN*/ PUSHORT  Port);
+
+VPAPI
+VOID
+DDKAPI
+VideoPortReadRegisterBufferUchar(
+  /*IN*/ PUCHAR  Register,
+  /*OUT*/ PUCHAR  Buffer,
+  /*IN*/ ULONG  Count);
+
+VPAPI
+VOID
+DDKAPI
+VideoPortReadRegisterBufferUlong(
+  /*IN*/ PULONG  Register,
+  /*OUT*/ PULONG  Buffer,
+  /*IN*/ ULONG  Count);
+
+VPAPI
+VOID
+DDKAPI
+VideoPortReadRegisterBufferUshort(
+  /*IN*/ PUSHORT  Register,
+  /*OUT*/ PUSHORT  Buffer,
+  /*IN*/ ULONG  Count);
+
+VPAPI
+UCHAR
+DDKAPI
+VideoPortReadRegisterUchar(
+  /*IN*/ PUCHAR  Register);
+
+VPAPI
+ULONG
+DDKAPI
+VideoPortReadRegisterUlong(
+  /*IN*/ PULONG  Register);
+
+VPAPI
+USHORT
+DDKAPI
+VideoPortReadRegisterUshort(
+  /*IN*/ PUSHORT  Register);
+
+VPAPI
+LONG
+DDKAPI
+VideoPortReadStateEvent(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ PEVENT  pEvent);
+
+VPAPI
+VOID
+DDKAPI
+VideoPortReleaseBuffer(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ PVOID  Buffer);
+
+VPAPI
+VOID
+DDKAPI
+VideoPortReleaseCommonBuffer(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ PVP_DMA_ADAPTER  VpDmaAdapter,
+  /*IN*/ ULONG  Length,
+  /*IN*/ PHYSICAL_ADDRESS  LogicalAddress,
+  /*IN*/ PVOID  VirtualAddress,
+  /*IN*/ BOOLEAN  CacheEnabled);
+
+VPAPI
+VOID
+DDKAPI
+VideoPortReleaseDeviceLock(
+  /*IN*/ PVOID  HwDeviceExtension);
+
+VPAPI
+VOID
+DDKAPI
+VideoPortReleaseSpinLock(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ PSPIN_LOCK  SpinLock,
+  /*IN*/ UCHAR  NewIrql);
+
+VPAPI
+VOID
+DDKAPI
+VideoPortReleaseSpinLockFromDpcLevel(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ PSPIN_LOCK  SpinLock);
+
+VPAPI
+BOOLEAN
+DDKAPI
+VideoPortScanRom(
+  PVOID  HwDeviceExtension,
+  PUCHAR  RomBase,
+  ULONG  RomLength,
+  PUCHAR  String);
+
+VPAPI
+ULONG
+DDKAPI
+VideoPortSetBusData(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ BUS_DATA_TYPE  BusDataType,
+  /*IN*/ ULONG  SlotNumber,
+  /*IN*/ PVOID  Buffer,
+  /*IN*/ ULONG  Offset,
+  /*IN*/ ULONG  Length);
+
+VPAPI
+VOID
+DDKAPI
+VideoPortSetBytesUsed(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN OUT*/ PDMA  pDma,
+  /*IN*/ ULONG  BytesUsed);
+
+VPAPI
+VOID
+DDKAPI
+VideoPortSetDmaContext(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*OUT*/ PDMA  pDma,
+  /*IN*/ PVOID  InstanceContext);
+
+VPAPI
+LONG
+DDKAPI
+VideoPortSetEvent(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ PEVENT  pEvent);
+
+VPAPI
+VP_STATUS
+DDKAPI
+VideoPortSetRegistryParameters(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ PWSTR  ValueName,
+  /*IN*/ PVOID  ValueData,
+  /*IN*/ ULONG  ValueLength);
+
+VPAPI
+VP_STATUS
+DDKAPI
+VideoPortSetTrappedEmulatorPorts(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ ULONG  NumAccessRanges,
+  /*IN*/ PVIDEO_ACCESS_RANGE  AccessRange);
+
+VPAPI
+BOOLEAN
+DDKAPI
+VideoPortSignalDmaComplete(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ PVOID  pDmaHandle);
+
+VPAPI
+VOID
+DDKAPI
+VideoPortStallExecution(
+  /*IN*/ ULONG  Microseconds);
+
+VPAPI
+VP_STATUS
+DDKAPI
+VideoPortStartDma(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ PVP_DMA_ADAPTER  VpDmaAdapter,
+  /*IN*/ PVOID  Mdl,
+  /*IN*/ ULONG  Offset,
+  /*IN OUT*/ PULONG  pLength,
+  /*IN*/ PEXECUTE_DMA  ExecuteDmaRoutine,
+  /*IN*/ PVOID  Context,
+  /*IN*/ BOOLEAN  WriteToDevice);
+
+VPAPI
+VOID
+DDKAPI
+VideoPortStartTimer(
+  /*IN*/ PVOID  HwDeviceExtension);
+
+VPAPI
+VOID
+DDKAPI
+VideoPortStopTimer(
+  /*IN*/ PVOID  HwDeviceExtension);
+
+  /* VideoPortSynchronizeExecution.Priority constants */
+typedef enum VIDEO_SYNCHRONIZE_PRIORITY {
+  VpLowPriority = 0,
+  VpMediumPriority,
+  VpHighPriority
+} VIDEO_SYNCHRONIZE_PRIORITY, *PVIDEO_SYNCHRONIZE_PRIORITY;
+
+VPAPI
+BOOLEAN
+DDKAPI
+VideoPortSynchronizeExecution(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ VIDEO_SYNCHRONIZE_PRIORITY  Priority,
+  /*IN*/ PMINIPORT_SYNCHRONIZE_ROUTINE  SynchronizeRoutine,
+  /*IN*/ PVOID  Context);
+
+VPAPI
+VOID
+DDKAPI
+VideoPortUnLockBuffer(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ PVOID  Mdl);
+
+VPAPI
+BOOLEAN
+DDKAPI
+VideoPortUnlockPages(
+  /*IN*/ PVOID  hwDeviceExtension,
+  /*IN OUT*/ PDMA  pDma);
+
+VPAPI
+BOOLEAN
+DDKAPI
+VideoPortUnmapDmaMemory(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ PVOID  VirtualAddress,
+  /*IN*/ HANDLE  ProcessHandle,
+  /*IN*/ PDMA  BoardMemoryHandle);
+
+VPAPI
+VP_STATUS
+DDKAPI
+VideoPortUnmapMemory(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN OUT*/ PVOID  VirtualAddress,
+  /*IN*/ HANDLE  ProcessHandle);
+
+VPAPI
+VP_STATUS
+DDKAPI
+VideoPortVerifyAccessRanges(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ ULONG  NumAccessRanges,
+  /*IN*/ PVIDEO_ACCESS_RANGE  AccessRanges);
+
+VPAPI
+VP_STATUS
+DDKAPI
+VideoPortWaitForSingleObject(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ PVOID  Object,
+  /*IN*/ PLARGE_INTEGER  Timeout /*OPTIONAL*/);
+
+VPAPI
+VOID
+DDKAPI
+VideoPortWritePortBufferUchar(
+  /*IN*/ PUCHAR  Port,
+  /*IN*/ PUCHAR  Buffer,
+  /*IN*/ ULONG  Count);
+
+VPAPI
+VOID
+DDKAPI
+VideoPortWritePortBufferUlong(
+  /*IN*/ PULONG  Port,
+  /*IN*/ PULONG  Buffer,
+  /*IN*/ ULONG  Count);
+
+VPAPI
+VOID
+DDKAPI
+VideoPortWritePortBufferUshort(
+  /*IN*/ PUSHORT  Port,
+  /*IN*/ PUSHORT  Buffer,
+  /*IN*/ ULONG  Count);
+
+VPAPI
+VOID
+DDKAPI
+VideoPortWritePortUchar(
+  /*IN*/ PUCHAR  Port,
+  /*IN*/ UCHAR  Value);
+
+VPAPI
+VOID
+DDKAPI
+VideoPortWritePortUlong(
+  /*IN*/ PULONG  Port,
+  /*IN*/ ULONG  Value);
+
+VPAPI
+VOID
+DDKAPI
+VideoPortWritePortUshort(
+  /*IN*/ PUSHORT  Port,
+  /*IN*/ USHORT  Value);
+
+VPAPI
+VOID
+DDKAPI
+VideoPortWriteRegisterBufferUchar(
+  /*IN*/ PUCHAR  Register,
+  /*IN*/ PUCHAR  Buffer,
+  /*IN*/ ULONG  Count);
+
+VPAPI
+VOID
+DDKAPI
+VideoPortWriteRegisterBufferUlong(
+  /*IN*/ PULONG  Register,
+  /*IN*/ PULONG  Buffer,
+  /*IN*/ ULONG  Count);
+
+VPAPI
+VOID
+DDKAPI
+VideoPortWriteRegisterBufferUshort(
+  /*IN*/ PUSHORT  Register,
+  /*IN*/ PUSHORT  Buffer,
+  /*IN*/ ULONG  Count);
+
+VPAPI
+VOID
+DDKAPI
+VideoPortWriteRegisterUchar(
+  /*IN*/ PUCHAR  Register,
+  /*IN*/ UCHAR  Value);
+
+VPAPI
+VOID
+DDKAPI
+VideoPortWriteRegisterUlong(
+  /*IN*/ PULONG  Register,
+  /*IN*/ ULONG  Value);
+
+VPAPI
+VOID
+DDKAPI
+VideoPortWriteRegisterUshort(
+  /*IN*/ PUSHORT  Register,
+  /*IN*/ USHORT  Value);
+
+VPAPI
+VOID
+DDKAPI
+VideoPortZeroDeviceMemory(
+  /*IN*/ PVOID  Destination,
+  /*IN*/ ULONG  Length);
+
+VPAPI
+VOID
+DDKAPI
+VideoPortZeroMemory(
+  /*IN*/ PVOID  Destination,
+  /*2IN*/ ULONG  Length);
+
+#ifdef DBG
+#define VideoDebugPrint(x) VideoPortDebugPrint x
+#else
+#define VideoDebugPrint(x)
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* defined __WINDDI_H */
+
+#endif /* __VIDEO_H */
Index: Daodan/MinGW/include/ddk/videoagp.h
===================================================================
--- Daodan/MinGW/include/ddk/videoagp.h	(revision 1046)
+++ Daodan/MinGW/include/ddk/videoagp.h	(revision 1046)
@@ -0,0 +1,129 @@
+/*
+ * videoagp.h
+ *
+ * Video miniport AGP interface
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __VIDEOAGP_H
+#define __VIDEOAGP_H
+
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "ntddk.h"
+#include "video.h"
+
+
+#define VIDEO_AGP_RATE_1X                 0x00000001
+#define VIDEO_AGP_RATE_2X                 0x00000002
+#define VIDEO_AGP_RATE_4X                 0x00000004
+#define VIDEO_AGP_RATE_8X                 0x00000008
+
+typedef enum _VIDEO_PORT_CACHE_TYPE {
+	VpNonCached = 0,
+	VpWriteCombined,
+	VpCached
+} VIDEO_PORT_CACHE_TYPE;
+
+typedef BOOLEAN DDKAPI
+(*PAGP_COMMIT_PHYSICAL)(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ PVOID  PhysicalReserveContext,
+  /*IN*/ ULONG  Pages,
+  /*IN*/ ULONG  Offset);
+
+typedef PVOID DDKAPI
+(*PAGP_COMMIT_VIRTUAL)(
+  /*IN*/  PVOID  HwDeviceExtension,
+  /*IN*/  PVOID  VirtualReserveContext,
+  /*IN*/  ULONG  Pages,
+  /*IN*/  ULONG  Offset);
+
+typedef VOID DDKAPI
+(*PAGP_FREE_PHYSICAL)(
+  /*IN*/  PVOID  HwDeviceExtension,
+  /*IN*/  PVOID  PhysicalReserveContext,
+  /*IN*/  ULONG  Pages,
+  /*IN*/  ULONG  Offset);
+
+typedef VOID DDKAPI
+(*PAGP_FREE_VIRTUAL)(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ PVOID  VirtualReserveContext,
+  /*IN*/ ULONG  Pages,
+  /*IN*/ ULONG  Offset);
+
+typedef VOID DDKAPI
+(*PAGP_RELEASE_PHYSICAL)(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ PVOID  PhysicalReserveContext);
+
+typedef VOID DDKAPI
+(*PAGP_RELEASE_VIRTUAL)(
+  /*IN*/  PVOID  HwDeviceExtension,
+  /*IN*/  PVOID  VirtualReserveContext);
+
+typedef PHYSICAL_ADDRESS DDKAPI
+(*PAGP_RESERVE_PHYSICAL)(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ ULONG  Pages,
+  /*IN*/ VIDEO_PORT_CACHE_TYPE  Caching,
+  /*OUT*/ PVOID  *PhysicalReserveContext);
+
+typedef PVOID DDKAPI
+(*PAGP_RESERVE_VIRTUAL)(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ HANDLE  ProcessHandle,
+  /*IN*/ PVOID  PhysicalReserveContext,
+  /*OUT*/ PVOID  *VirtualReserveContext);
+
+typedef BOOLEAN DDKAPI
+(*PAGP_SET_RATE)(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ ULONG  AgpRate);
+
+typedef struct _VIDEO_PORT_AGP_SERVICES {
+  PAGP_RESERVE_PHYSICAL  AgpReservePhysical;
+  PAGP_RELEASE_PHYSICAL  AgpReleasePhysical;
+  PAGP_COMMIT_PHYSICAL  AgpCommitPhysical;
+  PAGP_FREE_PHYSICAL  AgpFreePhysical;
+  PAGP_RESERVE_VIRTUAL  AgpReserveVirtual;
+  PAGP_RELEASE_VIRTUAL  AgpReleaseVirtual;
+  PAGP_COMMIT_VIRTUAL  AgpCommitVirtual;
+  PAGP_FREE_VIRTUAL  AgpFreeVirtual;
+  ULONGLONG  AllocationLimit;
+} VIDEO_PORT_AGP_SERVICES, *PVIDEO_PORT_AGP_SERVICES;
+
+VPAPI
+BOOLEAN
+DDKAPI
+VideoPortGetAgpServices(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ PVIDEO_PORT_AGP_SERVICES  AgpServices);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __VIDEOAGP_H */
Index: Daodan/MinGW/include/ddk/win2k.h
===================================================================
--- Daodan/MinGW/include/ddk/win2k.h	(revision 1046)
+++ Daodan/MinGW/include/ddk/win2k.h	(revision 1046)
@@ -0,0 +1,106 @@
+/*
+ * win2k.h
+ *
+ * Definitions only used in Windows 2000 and earlier versions
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __WIN2K_H
+#define __WIN2K_H
+
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "ntddk.h"
+
+#pragma pack(push,4)
+
+typedef enum _BUS_DATA_TYPE {
+  ConfigurationSpaceUndefined = -1,
+  Cmos,
+  EisaConfiguration,
+  Pos,
+  CbusConfiguration,
+  PCIConfiguration,
+  VMEConfiguration,
+  NuBusConfiguration,
+  PCMCIAConfiguration,
+  MPIConfiguration,
+  MPSAConfiguration,
+  PNPISAConfiguration,
+  SgiInternalConfiguration,
+  MaximumBusDataType
+} BUS_DATA_TYPE, *PBUS_DATA_TYPE;
+
+NTOSAPI
+VOID
+DDKAPI
+ExReleaseResourceForThreadLite(
+  /*IN*/ PERESOURCE  Resource,
+  /*IN*/ ERESOURCE_THREAD  ResourceThreadId);
+
+NTOSAPI
+NTSTATUS
+DDKAPI
+IoReadPartitionTable(
+  /*IN*/ PDEVICE_OBJECT  DeviceObject,
+  /*IN*/ ULONG  SectorSize,
+  /*IN*/ BOOLEAN  ReturnRecognizedPartitions,
+  /*OUT*/ struct _DRIVE_LAYOUT_INFORMATION  **PartitionBuffer);
+
+NTOSAPI
+NTSTATUS
+DDKAPI
+IoSetPartitionInformation(
+  /*IN*/ PDEVICE_OBJECT  DeviceObject,
+  /*IN*/ ULONG  SectorSize,
+  /*IN*/ ULONG  PartitionNumber,
+  /*IN*/ ULONG  PartitionType);
+
+NTOSAPI
+NTSTATUS
+DDKAPI
+IoWritePartitionTable(
+  /*IN*/ PDEVICE_OBJECT  DeviceObject,
+  /*IN*/ ULONG  SectorSize,
+  /*IN*/ ULONG  SectorsPerTrack,
+  /*IN*/ ULONG  NumberOfHeads,
+  /*IN*/ struct _DRIVE_LAYOUT_INFORMATION  *PartitionBuffer);
+
+/*
+ * PVOID MmGetSystemAddressForMdl(
+ * IN PMDL  Mdl);
+ */
+#define MmGetSystemAddressForMdl(Mdl) \
+  (((Mdl)->MdlFlags & (MDL_MAPPED_TO_SYSTEM_VA | \
+    MDL_SOURCE_IS_NONPAGED_POOL)) ? \
+      ((Mdl)->MappedSystemVa) : \
+      (MmMapLockedPages((Mdl), KernelMode)))
+
+#pragma pack(pop)
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __WIN2K_H */
Index: Daodan/MinGW/include/ddk/winddi.h
===================================================================
--- Daodan/MinGW/include/ddk/winddi.h	(revision 1046)
+++ Daodan/MinGW/include/ddk/winddi.h	(revision 1046)
@@ -0,0 +1,4258 @@
+/*
+ * winddi.h
+ *
+ * GDI device driver interface
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __WINDDI_H
+#define __WINDDI_H
+
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __VIDEO_H
+#error video.h cannot be included with winddi.h
+#else
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "ntddk.h"
+#include <wingdi.h>
+
+#ifndef __DD_INCLUDED__
+/* FIXME: Some DirectDraw structures not added yet */
+typedef ULONG_PTR FLATPTR;
+typedef struct _DD_SURFACECALLBACKS {
+} DD_SURFACECALLBACKS, *PDD_SURFACECALLBACKS;
+typedef struct _DD_PALETTECALLBACKS {
+} DD_PALETTECALLBACKS, *PDD_PALETTECALLBACKS;
+typedef struct _DD_CALLBACKS {
+} DD_CALLBACKS, *PDD_CALLBACKS;
+typedef struct _DD_HALINFO {
+} DD_HALINFO, *PDD_HALINFO;
+typedef struct _VIDEOMEMORY {
+} VIDEOMEMORY, *LPVIDEOMEMORY;
+typedef struct _DD_DIRECTDRAW_GLOBAL {
+} DD_DIRECTDRAW_GLOBAL, *LPDD_DIRECTDRAW_GLOBAL;
+typedef struct _DD_SURFACE_LOCAL {
+} DD_SURFACE_LOCAL, *PDD_SURFACE_LOCAL, *LPDD_SURFACE_LOCAL;
+#endif
+
+#ifndef __DDRAWI_INCLUDED__
+typedef PVOID LPVIDMEM;
+#endif
+
+#if !defined(__DD_INCLUDED__) && !defined(__DDRAWI_INCLUDED__)
+typedef struct _DDSCAPS {
+} DDSCAPS, *PDDSCAPS;
+typedef struct _DDSCAPSEX {
+} DDSCAPSEX, *PDDSCAPSEX;
+typedef PVOID LPVMEMHEAP;
+#endif
+
+#if defined(_WIN32K_)
+#define WIN32KAPI DECL_EXPORT
+#else
+#define WIN32KAPI DECL_IMPORT
+#endif
+
+#define DDI_DRIVER_VERSION_NT4            0x00020000
+#define DDI_DRIVER_VERSION_SP3            0x00020003
+#define DDI_DRIVER_VERSION_NT5            0x00030000
+#define DDI_DRIVER_VERSION_NT5_01         0x00030100
+
+#define GDI_DRIVER_VERSION                0x4000
+
+#ifdef _X86_
+
+typedef DWORD FLOATL;
+
+#else /* !_X86_ */
+
+typedef FLOAT FLOATL;
+
+#endif
+
+typedef SHORT FWORD;
+typedef LONG LDECI4;
+typedef ULONG IDENT;
+
+typedef ULONG_PTR HFF;
+typedef ULONG_PTR HFC;
+
+typedef LONG PTRDIFF;
+typedef PTRDIFF *PPTRDIFF;
+typedef LONG FIX;
+typedef FIX *PFIX;
+typedef ULONG ROP4;
+typedef ULONG MIX;
+typedef ULONG HGLYPH;
+typedef HGLYPH *PHGLYPH;
+
+typedef LONG_PTR (DDKAPI *PFN)();
+
+DECLARE_HANDLE(HBM);
+DECLARE_HANDLE(HDEV);
+DECLARE_HANDLE(HSURF);
+DECLARE_HANDLE(DHSURF);
+DECLARE_HANDLE(DHPDEV);
+DECLARE_HANDLE(HDRVOBJ);
+
+
+#define GDI_DRIVER_VERSION                0x4000
+
+typedef struct _ENG_EVENT *PEVENT;
+
+#define OPENGL_CMD                        4352
+#define OPENGL_GETINFO                    4353
+#define WNDOBJ_SETUP                      4354
+
+#define FD_ERROR                          0xFFFFFFFF
+#define DDI_ERROR                         0xFFFFFFFF
+
+#define HFF_INVALID                       ((HFF) 0)
+#define HFC_INVALID                       ((HFC) 0)
+#define HGLYPH_INVALID                    ((HGLYPH) -1)
+
+#define FP_ALTERNATEMODE                  1
+#define FP_WINDINGMODE                    2
+
+#define DN_ACCELERATION_LEVEL             1
+#define DN_DEVICE_ORIGIN                  2
+#define DN_SLEEP_MODE                     3
+#define DN_DRAWING_BEGIN                  4
+
+#define DCR_SOLID                         0
+#define DCR_DRIVER                        1
+#define DCR_HALFTONE                      2
+
+#define GX_IDENTITY                       0
+#define GX_OFFSET                         1
+#define GX_SCALE                          2
+#define GX_GENERAL                        3
+
+typedef struct _POINTE {
+	FLOATL  x;
+	FLOATL  y;
+} POINTE, *PPOINTE;
+
+typedef union _FLOAT_LONG {
+  FLOATL  e;
+  LONG  l;
+} FLOAT_LONG, *PFLOAT_LONG;
+
+typedef struct _POINTFIX {
+  FIX  x;
+  FIX  y;
+} POINTFIX, *PPOINTFIX;
+
+typedef struct _RECTFX {
+  FIX  xLeft;
+  FIX  yTop;
+  FIX  xRight;
+  FIX  yBottom;
+} RECTFX, *PRECTFX;
+
+typedef struct _POINTQF {
+  LARGE_INTEGER  x;
+  LARGE_INTEGER  y;
+} POINTQF, *PPOINTQF;
+
+
+typedef struct _BLENDOBJ {
+  BLENDFUNCTION  BlendFunction;
+} BLENDOBJ,*PBLENDOBJ;
+
+/* BRUSHOBJ.flColorType */
+#define BR_DEVICE_ICM    0x01
+#define BR_HOST_ICM      0x02
+#define BR_CMYKCOLOR     0x04
+#define BR_ORIGCOLOR     0x08
+
+typedef struct _BRUSHOBJ {
+  ULONG  iSolidColor;
+  PVOID  pvRbrush;
+  FLONG  flColorType;
+} BRUSHOBJ;
+
+typedef struct _CIECHROMA {
+  LDECI4  x;
+  LDECI4  y;
+  LDECI4  Y;
+} CIECHROMA;
+
+typedef struct _RUN {
+  LONG  iStart;
+  LONG  iStop;
+} RUN, *PRUN;
+
+typedef struct _CLIPLINE {
+  POINTFIX  ptfxA;
+  POINTFIX  ptfxB;
+  LONG  lStyleState;
+  ULONG  c;
+  RUN  arun[1];
+} CLIPLINE, *PCLIPLINE;
+
+/* CLIPOBJ.iDComplexity constants */
+#define DC_TRIVIAL                        0
+#define DC_RECT                           1
+#define DC_COMPLEX                        3
+
+/* CLIPOBJ.iFComplexity constants */
+#define FC_RECT                           1
+#define FC_RECT4                          2
+#define FC_COMPLEX                        3
+
+/* CLIPOBJ.iMode constants */
+#define TC_RECTANGLES                     0
+#define TC_PATHOBJ                        2
+
+/* CLIPOBJ.fjOptions constants */
+#define OC_BANK_CLIP                      1
+
+typedef struct _CLIPOBJ {
+  ULONG  iUniq;
+  RECTL  rclBounds;
+  BYTE  iDComplexity;
+  BYTE  iFComplexity;
+  BYTE  iMode;
+  BYTE  fjOptions;
+} CLIPOBJ;
+
+typedef struct _COLORINFO {
+  CIECHROMA  Red;
+  CIECHROMA  Green;
+  CIECHROMA  Blue;
+  CIECHROMA  Cyan;
+  CIECHROMA  Magenta;
+  CIECHROMA  Yellow;
+  CIECHROMA  AlignmentWhite;
+  LDECI4  RedGamma;
+  LDECI4  GreenGamma;
+  LDECI4  BlueGamma;
+  LDECI4  MagentaInCyanDye;
+  LDECI4  YellowInCyanDye;
+  LDECI4  CyanInMagentaDye;
+  LDECI4  YellowInMagentaDye;
+  LDECI4  CyanInYellowDye;
+  LDECI4  MagentaInYellowDye;
+} COLORINFO, *PCOLORINFO;
+
+/* DEVHTADJDATA.DeviceFlags constants */
+#define DEVHTADJF_COLOR_DEVICE            0x00000001
+#define DEVHTADJF_ADDITIVE_DEVICE         0x00000002
+
+typedef struct _DEVHTINFO {
+  DWORD  HTFlags;
+  DWORD  HTPatternSize;
+  DWORD  DevPelsDPI;
+  COLORINFO  ColorInfo;
+} DEVHTINFO, *PDEVHTINFO;
+
+typedef struct _DEVHTADJDATA {
+  DWORD   DeviceFlags;
+  DWORD   DeviceXDPI;
+  DWORD   DeviceYDPI;
+  PDEVHTINFO  pDefHTInfo;
+  PDEVHTINFO  pAdjHTInfo;
+} DEVHTADJDATA, *PDEVHTADJDATA;
+
+/* DEVINFO.flGraphicsCaps flags */
+#define GCAPS_BEZIERS           0x00000001
+#define GCAPS_GEOMETRICWIDE     0x00000002
+#define GCAPS_ALTERNATEFILL     0x00000004
+#define GCAPS_WINDINGFILL       0x00000008
+#define GCAPS_HALFTONE          0x00000010
+#define GCAPS_COLOR_DITHER      0x00000020
+#define GCAPS_HORIZSTRIKE       0x00000040
+#define GCAPS_VERTSTRIKE        0x00000080
+#define GCAPS_OPAQUERECT        0x00000100
+#define GCAPS_VECTORFONT        0x00000200
+#define GCAPS_MONO_DITHER       0x00000400
+#define GCAPS_ASYNCCHANGE       0x00000800
+#define GCAPS_ASYNCMOVE         0x00001000
+#define GCAPS_DONTJOURNAL       0x00002000
+#define GCAPS_DIRECTDRAW        0x00004000
+#define GCAPS_ARBRUSHOPAQUE     0x00008000
+#define GCAPS_PANNING           0x00010000
+#define GCAPS_HIGHRESTEXT       0x00040000
+#define GCAPS_PALMANAGED        0x00080000
+#define GCAPS_DITHERONREALIZE   0x00200000
+#define GCAPS_NO64BITMEMACCESS  0x00400000
+#define GCAPS_FORCEDITHER       0x00800000
+#define GCAPS_GRAY16            0x01000000
+#define GCAPS_ICM               0x02000000
+#define GCAPS_CMYKCOLOR         0x04000000
+#define GCAPS_LAYERED           0x08000000
+#define GCAPS_ARBRUSHTEXT       0x10000000
+#define GCAPS_SCREENPRECISION   0x20000000
+#define GCAPS_FONT_RASTERIZER   0x40000000
+#define GCAPS_NUP               0x80000000
+
+/* DEVINFO.iDitherFormat constants */
+#define BMF_1BPP       1L
+#define BMF_4BPP       2L
+#define BMF_8BPP       3L
+#define BMF_16BPP      4L
+#define BMF_24BPP      5L
+#define BMF_32BPP      6L
+#define BMF_4RLE       7L
+#define BMF_8RLE       8L
+#define BMF_JPEG       9L
+#define BMF_PNG       10L
+
+/* DEVINFO.flGraphicsCaps2 flags */
+#define GCAPS2_JPEGSRC          0x00000001
+#define GCAPS2_xxxx             0x00000002
+#define GCAPS2_PNGSRC           0x00000008
+#define GCAPS2_CHANGEGAMMARAMP  0x00000010
+#define GCAPS2_ALPHACURSOR      0x00000020
+#define GCAPS2_SYNCFLUSH        0x00000040
+#define GCAPS2_SYNCTIMER        0x00000080
+#define GCAPS2_ICD_MULTIMON     0x00000100
+#define GCAPS2_MOUSETRAILS      0x00000200
+#define GCAPS2_RESERVED1        0x00000400
+
+typedef struct _DEVINFO {
+  FLONG  flGraphicsCaps;
+  LOGFONTW  lfDefaultFont;
+  LOGFONTW  lfAnsiVarFont;
+  LOGFONTW  lfAnsiFixFont;
+  ULONG  cFonts;
+  ULONG  iDitherFormat;
+  USHORT  cxDither;
+  USHORT  cyDither;
+  HPALETTE  hpalDefault;
+  FLONG  flGraphicsCaps2;
+} DEVINFO, *PDEVINFO;
+
+typedef struct _DRIVEROBJ *PDRIVEROBJ;
+
+typedef BOOL DDKAPI CALLBACK
+(*FREEOBJPROC)(
+  /*IN*/ PDRIVEROBJ  pDriverObj);
+
+typedef struct _DRIVEROBJ {
+  PVOID  pvObj;
+  FREEOBJPROC  pFreeProc;
+  HDEV  hdev;
+  DHPDEV  dhpdev;
+} DRIVEROBJ;
+
+/* DRVFN.iFunc constants */
+#define INDEX_DrvEnablePDEV               0L
+#define INDEX_DrvCompletePDEV             1L
+#define INDEX_DrvDisablePDEV              2L
+#define INDEX_DrvEnableSurface            3L
+#define INDEX_DrvDisableSurface           4L
+#define INDEX_DrvAssertMode               5L
+#define INDEX_DrvOffset                   6L
+#define INDEX_DrvResetPDEV                7L
+#define INDEX_DrvDisableDriver            8L
+#define INDEX_DrvCreateDeviceBitmap       10L
+#define INDEX_DrvDeleteDeviceBitmap       11L
+#define INDEX_DrvRealizeBrush             12L
+#define INDEX_DrvDitherColor              13L
+#define INDEX_DrvStrokePath               14L
+#define INDEX_DrvFillPath                 15L
+#define INDEX_DrvStrokeAndFillPath        16L
+#define INDEX_DrvPaint                    17L
+#define INDEX_DrvBitBlt                   18L
+#define INDEX_DrvCopyBits                 19L
+#define INDEX_DrvStretchBlt               20L
+#define INDEX_DrvSetPalette               22L
+#define INDEX_DrvTextOut                  23L
+#define INDEX_DrvEscape                   24L
+#define INDEX_DrvDrawEscape               25L
+#define INDEX_DrvQueryFont                26L
+#define INDEX_DrvQueryFontTree            27L
+#define INDEX_DrvQueryFontData            28L
+#define INDEX_DrvSetPointerShape          29L
+#define INDEX_DrvMovePointer              30L
+#define INDEX_DrvLineTo                   31L
+#define INDEX_DrvSendPage                 32L
+#define INDEX_DrvStartPage                33L
+#define INDEX_DrvEndDoc                   34L
+#define INDEX_DrvStartDoc                 35L
+#define INDEX_DrvGetGlyphMode             37L
+#define INDEX_DrvSynchronize              38L
+#define INDEX_DrvSaveScreenBits           40L
+#define INDEX_DrvGetModes                 41L
+#define INDEX_DrvFree                     42L
+#define INDEX_DrvDestroyFont              43L
+#define INDEX_DrvQueryFontCaps            44L
+#define INDEX_DrvLoadFontFile             45L
+#define INDEX_DrvUnloadFontFile           46L
+#define INDEX_DrvFontManagement           47L
+#define INDEX_DrvQueryTrueTypeTable       48L
+#define INDEX_DrvQueryTrueTypeOutline     49L
+#define INDEX_DrvGetTrueTypeFile          50L
+#define INDEX_DrvQueryFontFile            51L
+#define INDEX_DrvMovePanning              52L
+#define INDEX_DrvQueryAdvanceWidths       53L
+#define INDEX_DrvSetPixelFormat           54L
+#define INDEX_DrvDescribePixelFormat      55L
+#define INDEX_DrvSwapBuffers              56L
+#define INDEX_DrvStartBanding             57L
+#define INDEX_DrvNextBand                 58L
+#define INDEX_DrvGetDirectDrawInfo        59L
+#define INDEX_DrvEnableDirectDraw         60L
+#define INDEX_DrvDisableDirectDraw        61L
+#define INDEX_DrvQuerySpoolType           62L
+#define INDEX_DrvIcmCreateColorTransform  64L
+#define INDEX_DrvIcmDeleteColorTransform  65L
+#define INDEX_DrvIcmCheckBitmapBits       66L
+#define INDEX_DrvIcmSetDeviceGammaRamp    67L
+#define INDEX_DrvGradientFill             68L
+#define INDEX_DrvStretchBltROP            69L
+#define INDEX_DrvPlgBlt                   70L
+#define INDEX_DrvAlphaBlend               71L
+#define INDEX_DrvSynthesizeFont           72L
+#define INDEX_DrvGetSynthesizedFontFiles  73L
+#define INDEX_DrvTransparentBlt           74L
+#define INDEX_DrvQueryPerBandInfo         75L
+#define INDEX_DrvQueryDeviceSupport       76L
+#define INDEX_DrvReserved1                77L
+#define INDEX_DrvReserved2                78L
+#define INDEX_DrvReserved3                79L
+#define INDEX_DrvReserved4                80L
+#define INDEX_DrvReserved5                81L
+#define INDEX_DrvReserved6                82L
+#define INDEX_DrvReserved7                83L
+#define INDEX_DrvReserved8                84L
+#define INDEX_DrvDeriveSurface            85L
+#define INDEX_DrvQueryGlyphAttrs          86L
+#define INDEX_DrvNotify                   87L
+#define INDEX_DrvSynchronizeSurface       88L
+#define INDEX_DrvResetDevice              89L
+#define INDEX_DrvReserved9                90L
+#define INDEX_DrvReserved10               91L
+#define INDEX_DrvReserved11               92L
+#define INDEX_LAST                        93L
+
+typedef struct _DRVFN {
+  ULONG  iFunc;
+  PFN  pfn;
+} DRVFN, *PDRVFN;
+
+/* DRVENABLEDATA.iDriverVersion constants */
+#define DDI_DRIVER_VERSION_NT4            0x00020000
+#define DDI_DRIVER_VERSION_SP3            0x00020003
+#define DDI_DRIVER_VERSION_NT5            0x00030000
+#define DDI_DRIVER_VERSION_NT5_01         0x00030100
+
+typedef struct _DRVENABLEDATA {
+  ULONG  iDriverVersion;
+  ULONG  c;
+  DRVFN  *pdrvfn;
+} DRVENABLEDATA, *PDRVENABLEDATA;
+
+DECLARE_HANDLE(HSEMAPHORE);
+
+typedef struct {
+  DWORD  nSize;
+  HDC  hdc;
+  PBYTE  pvEMF;
+  PBYTE  pvCurrentRecord;
+} EMFINFO, *PEMFINFO;
+
+typedef struct _ENGSAFESEMAPHORE {
+  HSEMAPHORE  hsem;
+  LONG  lCount;
+} ENGSAFESEMAPHORE;
+
+typedef struct _ENG_TIME_FIELDS {
+  USHORT  usYear;
+  USHORT  usMonth;
+  USHORT  usDay;
+  USHORT  usHour;
+  USHORT  usMinute;
+  USHORT  usSecond;
+  USHORT  usMilliseconds;
+  USHORT  usWeekday;
+} ENG_TIME_FIELDS, *PENG_TIME_FIELDS;
+
+typedef struct _ENUMRECTS {
+  ULONG  c;
+  RECTL  arcl[1];
+} ENUMRECTS;
+
+typedef struct _FD_XFORM {
+  FLOATL  eXX;
+  FLOATL  eXY;
+  FLOATL  eYX;
+  FLOATL  eYY;
+} FD_XFORM, *PFD_XFORM;
+
+/* FD_DEVICEMETRICS.flRealizedType constants */
+#define FDM_TYPE_BM_SIDE_CONST            0x00000001
+#define FDM_TYPE_MAXEXT_EQUAL_BM_SIDE     0x00000002
+#define FDM_TYPE_CHAR_INC_EQUAL_BM_BASE   0x00000004
+#define FDM_TYPE_ZERO_BEARINGS            0x00000008
+#define FDM_TYPE_CONST_BEARINGS           0x00000010
+
+typedef struct _FD_DEVICEMETRICS {
+  FLONG  flRealizedType;
+  POINTE  pteBase;
+  POINTE  pteSide;
+  LONG  lD;
+  FIX  fxMaxAscender;
+  FIX  fxMaxDescender;
+  POINTL  ptlUnderline1;
+  POINTL  ptlStrikeout;
+  POINTL  ptlULThickness;
+  POINTL  ptlSOThickness;
+  ULONG  cxMax;
+  ULONG  cyMax;
+  ULONG  cjGlyphMax;
+  FD_XFORM  fdxQuantized;
+  LONG  lNonLinearExtLeading;
+  LONG  lNonLinearIntLeading;
+  LONG  lNonLinearMaxCharWidth;
+  LONG  lNonLinearAvgCharWidth;
+  LONG  lMinA;
+  LONG  lMinC;
+  LONG  lMinD;
+  LONG  alReserved[1];
+} FD_DEVICEMETRICS, *PFD_DEVICEMETRICS;
+
+/* FD_GLYPHATTR.iMode constants */
+#define FO_ATTR_MODE_ROTATE               1
+
+typedef struct _FD_GLYPHATTR {
+  ULONG  cjThis;
+  ULONG  cGlyphs;
+  ULONG  iMode;
+  BYTE  aGlyphAttr[1];
+} FD_GLYPHATTR, *PFD_GLYPHATTR;
+
+/* FD_GLYPHSET.flAccel */
+#define GS_UNICODE_HANDLES                0x00000001
+#define GS_8BIT_HANDLES                   0x00000002
+#define GS_16BIT_HANDLES                  0x00000004
+
+typedef struct _WCRUN {
+  WCHAR  wcLow;
+  USHORT  cGlyphs;
+  HGLYPH  *phg;
+} WCRUN, *PWCRUN;
+
+typedef struct _FD_GLYPHSET {
+  ULONG  cjThis;
+  FLONG  flAccel;
+  ULONG  cGlyphsSupported;
+  ULONG  cRuns;
+  WCRUN  awcrun[1];
+} FD_GLYPHSET, *PFD_GLYPHSET;
+
+typedef struct _FD_KERNINGPAIR {
+  WCHAR  wcFirst;
+  WCHAR  wcSecond;
+  FWORD  fwdKern;
+} FD_KERNINGPAIR;
+
+typedef struct _FLOATOBJ
+{
+  ULONG  ul1;
+  ULONG  ul2;
+} FLOATOBJ, *PFLOATOBJ;
+
+typedef struct _FLOATOBJ_XFORM {
+  FLOATOBJ  eM11;
+  FLOATOBJ  eM12;
+  FLOATOBJ  eM21;
+  FLOATOBJ  eM22;
+  FLOATOBJ  eDx;
+  FLOATOBJ  eDy;
+} FLOATOBJ_XFORM, *PFLOATOBJ_XFORM, FAR *LPFLOATOBJ_XFORM;
+
+/* FONTDIFF.fsSelection */
+#define FM_SEL_ITALIC                     0x0001
+#define FM_SEL_UNDERSCORE                 0x0002
+#define FM_SEL_NEGATIVE                   0x0004
+#define FM_SEL_OUTLINED                   0x0008
+#define FM_SEL_STRIKEOUT                  0x0010
+#define FM_SEL_BOLD                       0x0020
+#define FM_SEL_REGULAR                    0x0040
+
+typedef struct _FONTDIFF {
+  BYTE  jReserved1;
+  BYTE  jReserved2;
+  BYTE  jReserved3;
+  BYTE  bWeight;
+  USHORT  usWinWeight;
+  FSHORT  fsSelection;
+  FWORD  fwdAveCharWidth;
+  FWORD  fwdMaxCharInc;
+  POINTL  ptlCaret;
+} FONTDIFF;
+
+typedef struct _FONTSIM {
+  PTRDIFF  dpBold;
+  PTRDIFF  dpItalic;
+  PTRDIFF  dpBoldItalic;
+} FONTSIM;
+
+/* FONTINFO.flCaps constants */
+#define FO_DEVICE_FONT                    1L
+#define FO_OUTLINE_CAPABLE                2L
+
+typedef struct _FONTINFO {
+  ULONG  cjThis;
+  FLONG  flCaps;
+  ULONG  cGlyphsSupported;
+  ULONG  cjMaxGlyph1;
+  ULONG  cjMaxGlyph4;
+  ULONG  cjMaxGlyph8;
+  ULONG  cjMaxGlyph32;
+} FONTINFO, *PFONTINFO;
+
+/* FONTOBJ.flFontType constants */
+#define FO_TYPE_RASTER   RASTER_FONTTYPE
+#define FO_TYPE_DEVICE   DEVICE_FONTTYPE
+#define FO_TYPE_TRUETYPE TRUETYPE_FONTTYPE
+#define FO_TYPE_OPENTYPE OPENTYPE_FONTTYPE
+
+#define FO_SIM_BOLD      0x00002000
+#define FO_SIM_ITALIC    0x00004000
+#define FO_EM_HEIGHT     0x00008000
+#define FO_GRAY16        0x00010000
+#define FO_NOGRAY16      0x00020000
+#define FO_NOHINTS       0x00040000
+#define FO_NO_CHOICE     0x00080000
+#define FO_CFF            0x00100000
+#define FO_POSTSCRIPT     0x00200000
+#define FO_MULTIPLEMASTER 0x00400000
+#define FO_VERT_FACE      0x00800000
+#define FO_DBCS_FONT      0X01000000
+#define FO_NOCLEARTYPE    0x02000000
+#define FO_CLEARTYPE_X    0x10000000
+#define FO_CLEARTYPE_Y    0x20000000
+
+typedef struct _FONTOBJ {
+  ULONG  iUniq;
+  ULONG  iFace;
+  ULONG  cxMax;
+  FLONG  flFontType;
+  ULONG_PTR  iTTUniq;
+  ULONG_PTR  iFile;
+  SIZE  sizLogResPpi;
+  ULONG  ulStyleSize;
+  PVOID  pvConsumer;
+  PVOID  pvProducer;
+} FONTOBJ;
+
+typedef struct _GAMMARAMP {
+  WORD  Red[256];
+  WORD  Green[256];
+  WORD  Blue[256];
+} GAMMARAMP, *PGAMMARAMP;
+
+/* GDIINFO.ulPrimaryOrder constants */
+#define PRIMARY_ORDER_ABC                 0
+#define PRIMARY_ORDER_ACB                 1
+#define PRIMARY_ORDER_BAC                 2
+#define PRIMARY_ORDER_BCA                 3
+#define PRIMARY_ORDER_CBA                 4
+#define PRIMARY_ORDER_CAB                 5
+
+/* GDIINFO.ulHTPatternSize constants */
+#define HT_PATSIZE_2x2                    0
+#define HT_PATSIZE_2x2_M                  1
+#define HT_PATSIZE_4x4                    2
+#define HT_PATSIZE_4x4_M                  3
+#define HT_PATSIZE_6x6                    4
+#define HT_PATSIZE_6x6_M                  5
+#define HT_PATSIZE_8x8                    6
+#define HT_PATSIZE_8x8_M                  7
+#define HT_PATSIZE_10x10                  8
+#define HT_PATSIZE_10x10_M                9
+#define HT_PATSIZE_12x12                  10
+#define HT_PATSIZE_12x12_M                11
+#define HT_PATSIZE_14x14                  12
+#define HT_PATSIZE_14x14_M                13
+#define HT_PATSIZE_16x16                  14
+#define HT_PATSIZE_16x16_M                15
+#define HT_PATSIZE_SUPERCELL              16
+#define HT_PATSIZE_SUPERCELL_M            17
+#define HT_PATSIZE_USER                   18
+#define HT_PATSIZE_MAX_INDEX              HT_PATSIZE_USER
+#define HT_PATSIZE_DEFAULT                HT_PATSIZE_SUPERCELL_M
+#define HT_USERPAT_CX_MIN                 4
+#define HT_USERPAT_CX_MAX                 256
+#define HT_USERPAT_CY_MIN                 4
+#define HT_USERPAT_CY_MAX                 256
+
+/* GDIINFO.ulHTOutputFormat constants */
+#define HT_FORMAT_1BPP                    0
+#define HT_FORMAT_4BPP                    2
+#define HT_FORMAT_4BPP_IRGB               3
+#define HT_FORMAT_8BPP                    4
+#define HT_FORMAT_16BPP                   5
+#define HT_FORMAT_24BPP                   6
+#define HT_FORMAT_32BPP                   7
+
+/* GDIINFO.flHTFlags */
+#define HT_FLAG_SQUARE_DEVICE_PEL         0x00000001
+#define HT_FLAG_HAS_BLACK_DYE             0x00000002
+#define HT_FLAG_ADDITIVE_PRIMS            0x00000004
+#define HT_FLAG_USE_8BPP_BITMASK          0x00000008
+#define HT_FLAG_INK_HIGH_ABSORPTION       0x00000010
+#define HT_FLAG_INK_ABSORPTION_INDICES    0x00000060
+#define HT_FLAG_DO_DEVCLR_XFORM           0x00000080
+#define HT_FLAG_OUTPUT_CMY                0x00000100
+#define HT_FLAG_PRINT_DRAFT_MODE          0x00000200
+#define HT_FLAG_INVERT_8BPP_BITMASK_IDX   0x00000400
+#define HT_FLAG_8BPP_CMY332_MASK          0xFF000000
+
+#define MAKE_CMYMASK_BYTE(c,m,y)          ((BYTE)(((BYTE)(c) & 0x07) << 5) \
+                                          |(BYTE)(((BYTE)(m) & 0x07) << 2) \
+                                          |(BYTE)((BYTE)(y) & 0x03))
+
+#define MAKE_CMY332_MASK(c,m,y)           ((DWORD)(((DWORD)(c) & 0x07) << 29)\
+                                          |(DWORD)(((DWORD)(m) & 0x07) << 26)\
+                                          |(DWORD)(((DWORD)(y) & 0x03) << 24))
+
+/* GDIINFO.flHTFlags constants */
+#define HT_FLAG_INK_ABSORPTION_IDX0       0x00000000
+#define HT_FLAG_INK_ABSORPTION_IDX1       0x00000020
+#define HT_FLAG_INK_ABSORPTION_IDX2       0x00000040
+#define HT_FLAG_INK_ABSORPTION_IDX3       0x00000060
+
+#define HT_FLAG_HIGHEST_INK_ABSORPTION    (HT_FLAG_INK_HIGH_ABSORPTION \
+                                          |HT_FLAG_INK_ABSORPTION_IDX3)
+#define HT_FLAG_HIGHER_INK_ABSORPTION     (HT_FLAG_INK_HIGH_ABSORPTION \
+                                          |HT_FLAG_INK_ABSORPTION_IDX2)
+#define HT_FLAG_HIGH_INK_ABSORPTION       (HT_FLAG_INK_HIGH_ABSORPTION \
+                                          |HT_FLAG_INK_ABSORPTION_IDX1)
+#define HT_FLAG_NORMAL_INK_ABSORPTION     HT_FLAG_INK_ABSORPTION_IDX0
+#define HT_FLAG_LOW_INK_ABSORPTION        HT_FLAG_INK_ABSORPTION_IDX1
+#define HT_FLAG_LOWER_INK_ABSORPTION      HT_FLAG_INK_ABSORPTION_IDX2
+#define HT_FLAG_LOWEST_INK_ABSORPTION     HT_FLAG_INK_ABSORPTION_IDX3
+
+#define HT_BITMASKPALRGB                  (DWORD)'0BGR'
+#define HT_SET_BITMASKPAL2RGB(pPal)       (*((LPDWORD)(pPal)) = HT_BITMASKPALRGB)
+#define HT_IS_BITMASKPALRGB(pPal)         (*((LPDWORD)(pPal)) == (DWORD)0)
+
+/* GDIINFO.ulPhysicalPixelCharacteristics constants */
+#define PPC_DEFAULT                       0x0
+#define PPC_UNDEFINED                     0x1
+#define PPC_RGB_ORDER_VERTICAL_STRIPES    0x2
+#define PPC_BGR_ORDER_VERTICAL_STRIPES    0x3
+#define PPC_RGB_ORDER_HORIZONTAL_STRIPES  0x4
+#define PPC_BGR_ORDER_HORIZONTAL_STRIPES  0x5
+
+#define PPG_DEFAULT                       0
+#define PPG_SRGB                          1
+
+typedef struct _GDIINFO {
+  ULONG  ulVersion;
+  ULONG  ulTechnology;
+  ULONG  ulHorzSize;
+  ULONG  ulVertSize;
+  ULONG  ulHorzRes;
+  ULONG  ulVertRes;
+  ULONG  cBitsPixel;
+  ULONG  cPlanes;
+  ULONG  ulNumColors;
+  ULONG  flRaster;
+  ULONG  ulLogPixelsX;
+  ULONG  ulLogPixelsY;
+  ULONG  flTextCaps;
+  ULONG  ulDACRed;
+  ULONG  ulDACGreen;
+  ULONG  ulDACBlue;
+  ULONG  ulAspectX;
+  ULONG  ulAspectY;
+  ULONG  ulAspectXY;
+  LONG  xStyleStep;
+  LONG  yStyleStep;
+  LONG  denStyleStep;
+  POINTL  ptlPhysOffset;
+  SIZEL  szlPhysSize;
+  ULONG  ulNumPalReg;
+  COLORINFO  ciDevice;
+  ULONG  ulDevicePelsDPI;
+  ULONG  ulPrimaryOrder;
+  ULONG  ulHTPatternSize;
+  ULONG  ulHTOutputFormat;
+  ULONG  flHTFlags;
+  ULONG  ulVRefresh;
+  ULONG  ulBltAlignment;
+  ULONG  ulPanningHorzRes;
+  ULONG  ulPanningVertRes;
+  ULONG  xPanningAlignment;
+  ULONG  yPanningAlignment;
+  ULONG  cxHTPat;
+  ULONG  cyHTPat;
+  LPBYTE  pHTPatA;
+  LPBYTE  pHTPatB;
+  LPBYTE  pHTPatC;
+  ULONG  flShadeBlend;
+  ULONG  ulPhysicalPixelCharacteristics;
+  ULONG  ulPhysicalPixelGamma;
+} GDIINFO, *PGDIINFO;
+
+/* PATHDATA.flags constants */
+#define PD_BEGINSUBPATH                   0x00000001
+#define PD_ENDSUBPATH                     0x00000002
+#define PD_RESETSTYLE                     0x00000004
+#define PD_CLOSEFIGURE                    0x00000008
+#define PD_BEZIERS                        0x00000010
+#define PD_ALL                            (PD_BEGINSUBPATH \
+                                          |PD_ENDSUBPATH \
+                                          |PD_RESETSTYLE \
+                                          |PD_CLOSEFIGURE \
+                                          PD_BEZIERS)
+
+typedef struct _PATHDATA {
+  FLONG  flags;
+  ULONG  count;
+  POINTFIX  *glypptfx;
+} PATHDATA, *PPATHDATA;
+
+/* PATHOBJ.fl constants */
+#define PO_BEZIERS                        0x00000001
+#define PO_ELLIPSE                        0x00000002
+#define PO_ALL_INTEGERS                   0x00000004
+#define PO_ENUM_AS_INTEGERS               0x00000008
+
+typedef struct _PATHOBJ {
+  FLONG  fl;
+  ULONG  cCurves;
+} PATHOBJ;
+
+typedef struct _GLYPHBITS {
+  POINTL  ptlOrigin;
+  SIZEL  sizlBitmap;
+  BYTE  aj[1];
+} GLYPHBITS;
+
+typedef union _GLYPHDEF {
+  GLYPHBITS  *pgb;
+  PATHOBJ  *ppo;
+} GLYPHDEF;
+
+typedef struct _GLYPHPOS {
+  HGLYPH  hg;
+  GLYPHDEF  *pgdf;
+  POINTL  ptl;
+} GLYPHPOS, *PGLYPHPOS;
+
+typedef struct _GLYPHDATA {
+  GLYPHDEF  gdf;
+  HGLYPH  hg;
+  FIX  fxD;
+  FIX  fxA;
+  FIX  fxAB;
+  FIX  fxInkTop;
+  FIX  fxInkBottom;
+  RECTL  rclInk;
+  POINTQF  ptqD;
+} GLYPHDATA;
+
+typedef struct _IFIEXTRA {
+  ULONG  ulIdentifier;
+  PTRDIFF  dpFontSig;
+  ULONG  cig;
+  PTRDIFF  dpDesignVector;
+  PTRDIFF  dpAxesInfoW;
+  ULONG  aulReserved[1];
+} IFIEXTRA, *PIFIEXTRA;
+
+/* IFIMETRICS constants */
+
+#define FM_VERSION_NUMBER                 0x0
+
+/* IFIMETRICS.fsType constants */
+#define FM_TYPE_LICENSED                  0x2
+#define FM_READONLY_EMBED                 0x4
+#define FM_EDITABLE_EMBED                 0x8
+#define FM_NO_EMBEDDING                   FM_TYPE_LICENSED
+
+/* IFIMETRICS.flInfo constants */
+#define FM_INFO_TECH_TRUETYPE             0x00000001
+#define FM_INFO_TECH_BITMAP               0x00000002
+#define FM_INFO_TECH_STROKE               0x00000004
+#define FM_INFO_TECH_OUTLINE_NOT_TRUETYPE 0x00000008
+#define FM_INFO_ARB_XFORMS                0x00000010
+#define FM_INFO_1BPP                      0x00000020
+#define FM_INFO_4BPP                      0x00000040
+#define FM_INFO_8BPP                      0x00000080
+#define FM_INFO_16BPP                     0x00000100
+#define FM_INFO_24BPP                     0x00000200
+#define FM_INFO_32BPP                     0x00000400
+#define FM_INFO_INTEGER_WIDTH             0x00000800
+#define FM_INFO_CONSTANT_WIDTH            0x00001000
+#define FM_INFO_NOT_CONTIGUOUS            0x00002000
+#define FM_INFO_TECH_MM                   0x00004000
+#define FM_INFO_RETURNS_OUTLINES          0x00008000
+#define FM_INFO_RETURNS_STROKES           0x00010000
+#define FM_INFO_RETURNS_BITMAPS           0x00020000
+#define FM_INFO_DSIG                      0x00040000
+#define FM_INFO_RIGHT_HANDED              0x00080000
+#define FM_INFO_INTEGRAL_SCALING          0x00100000
+#define FM_INFO_90DEGREE_ROTATIONS        0x00200000
+#define FM_INFO_OPTICALLY_FIXED_PITCH     0x00400000
+#define FM_INFO_DO_NOT_ENUMERATE          0x00800000
+#define FM_INFO_ISOTROPIC_SCALING_ONLY    0x01000000
+#define FM_INFO_ANISOTROPIC_SCALING_ONLY  0x02000000
+#define FM_INFO_TECH_CFF                  0x04000000
+#define FM_INFO_FAMILY_EQUIV              0x08000000
+#define FM_INFO_DBCS_FIXED_PITCH          0x10000000
+#define FM_INFO_NONNEGATIVE_AC            0x20000000
+#define FM_INFO_IGNORE_TC_RA_ABLE         0x40000000
+#define FM_INFO_TECH_TYPE1                0x80000000
+
+#define MAXCHARSETS                       16
+
+/* IFIMETRICS.ulPanoseCulture constants */
+#define  FM_PANOSE_CULTURE_LATIN          0x0
+
+typedef struct _IFIMETRICS {
+  ULONG  cjThis;
+  ULONG  cjIfiExtra;
+  PTRDIFF  dpwszFamilyName;
+  PTRDIFF  dpwszStyleName;
+  PTRDIFF  dpwszFaceName;
+  PTRDIFF  dpwszUniqueName;
+  PTRDIFF  dpFontSim;
+  LONG  lEmbedId;
+  LONG  lItalicAngle;
+  LONG  lCharBias;
+  PTRDIFF  dpCharSets;
+  BYTE  jWinCharSet;
+  BYTE  jWinPitchAndFamily;
+  USHORT  usWinWeight;
+  ULONG  flInfo;
+  USHORT  fsSelection;
+  USHORT  fsType;
+  FWORD  fwdUnitsPerEm;
+  FWORD  fwdLowestPPEm;
+  FWORD  fwdWinAscender;
+  FWORD  fwdWinDescender;
+  FWORD  fwdMacAscender;
+  FWORD  fwdMacDescender;
+  FWORD  fwdMacLineGap;
+  FWORD  fwdTypoAscender;
+  FWORD  fwdTypoDescender;
+  FWORD  fwdTypoLineGap;
+  FWORD  fwdAveCharWidth;
+  FWORD  fwdMaxCharInc;
+  FWORD  fwdCapHeight;
+  FWORD  fwdXHeight;
+  FWORD  fwdSubscriptXSize;
+  FWORD  fwdSubscriptYSize;
+  FWORD  fwdSubscriptXOffset;
+  FWORD  fwdSubscriptYOffset;
+  FWORD  fwdSuperscriptXSize;
+  FWORD  fwdSuperscriptYSize;
+  FWORD  fwdSuperscriptXOffset;
+  FWORD  fwdSuperscriptYOffset;
+  FWORD  fwdUnderscoreSize;
+  FWORD  fwdUnderscorePosition;
+  FWORD  fwdStrikeoutSize;
+  FWORD  fwdStrikeoutPosition;
+  BYTE  chFirstChar;
+  BYTE  chLastChar;
+  BYTE  chDefaultChar;
+  BYTE  chBreakChar;
+  WCHAR  wcFirstChar;
+  WCHAR  wcLastChar;
+  WCHAR  wcDefaultChar;
+  WCHAR  wcBreakChar;
+  POINTL  ptlBaseline;
+  POINTL  ptlAspect;
+  POINTL  ptlCaret;
+  RECTL  rclFontBox;
+  BYTE  achVendId[4];
+  ULONG  cKerningPairs;
+  ULONG  ulPanoseCulture;
+  PANOSE  panose;
+#if defined(_WIN64)
+  PVOID  Align;
+#endif
+} IFIMETRICS, *PIFIMETRICS;
+
+/* LINEATTRS.fl */
+#define LA_GEOMETRIC                      0x00000001
+#define LA_ALTERNATE                      0x00000002
+#define LA_STARTGAP                       0x00000004
+#define LA_STYLED                         0x00000008
+
+/* LINEATTRS.iJoin */
+#define JOIN_ROUND                        0L
+#define JOIN_BEVEL                        1L
+#define JOIN_MITER                        2L
+
+/* LINEATTRS.iEndCap */
+#define ENDCAP_ROUND                      0L
+#define ENDCAP_SQUARE                     1L
+#define ENDCAP_BUTT                       2L
+
+typedef struct _LINEATTRS {
+  FLONG  fl;
+  ULONG  iJoin;
+  ULONG  iEndCap;
+  FLOAT_LONG  elWidth;
+  FLOATL  eMiterLimit;
+  ULONG  cstyle;
+  PFLOAT_LONG  pstyle;
+  FLOAT_LONG  elStyleState;
+} LINEATTRS, *PLINEATTRS;
+
+typedef struct _PALOBJ {
+  ULONG  ulReserved;
+} PALOBJ;
+
+typedef struct _PERBANDINFO {
+  BOOL  bRepeatThisBand;
+  SIZEL  szlBand;
+  ULONG  ulHorzRes;
+  ULONG  ulVertRes;
+} PERBANDINFO, *PPERBANDINFO;
+
+/* STROBJ.flAccel constants */
+#define SO_FLAG_DEFAULT_PLACEMENT        0x00000001
+#define SO_HORIZONTAL                    0x00000002
+#define SO_VERTICAL                      0x00000004
+#define SO_REVERSED                      0x00000008
+#define SO_ZERO_BEARINGS                 0x00000010
+#define SO_CHAR_INC_EQUAL_BM_BASE        0x00000020
+#define SO_MAXEXT_EQUAL_BM_SIDE          0x00000040
+#define SO_DO_NOT_SUBSTITUTE_DEVICE_FONT 0x00000080
+#define SO_GLYPHINDEX_TEXTOUT            0x00000100
+#define SO_ESC_NOT_ORIENT                0x00000200
+#define SO_DXDY                          0x00000400
+#define SO_CHARACTER_EXTRA               0x00000800
+#define SO_BREAK_EXTRA                   0x00001000
+
+typedef struct _STROBJ {
+  ULONG  cGlyphs;
+  FLONG  flAccel;
+  ULONG  ulCharInc;
+  RECTL  rclBkGround;
+  GLYPHPOS  *pgp;
+  LPWSTR  pwszOrg;
+} STROBJ;
+
+typedef struct _SURFACEALIGNMENT {
+  union {
+		struct {
+			DWORD  dwStartAlignment;
+			DWORD  dwPitchAlignment;
+			DWORD  dwReserved1;
+			DWORD  dwReserved2;
+		} Linear;
+		struct {
+			DWORD  dwXAlignment;
+			DWORD  dwYAlignment;
+			DWORD  dwReserved1;
+			DWORD  dwReserved2;
+		} Rectangular;
+  };
+} SURFACEALIGNMENT, *LPSURFACEALIGNMENT;
+
+/* SURFOBJ.iType constants */
+#define STYPE_BITMAP                      0L
+#define STYPE_DEVICE                      1L
+#define STYPE_DEVBITMAP                   3L
+
+/* SURFOBJ.fjBitmap constants */
+#define BMF_TOPDOWN                       0x0001
+#define BMF_NOZEROINIT                    0x0002
+#define BMF_DONTCACHE                     0x0004
+#define BMF_USERMEM                       0x0008
+#define BMF_KMSECTION                     0x0010
+#define BMF_NOTSYSMEM                     0x0020
+#define BMF_WINDOW_BLT                    0x0040
+#define BMF_UMPDMEM                       0x0080
+#define BMF_RESERVED                      0xFF00
+
+typedef struct _SURFOBJ {
+  DHSURF  dhsurf;
+  HSURF  hsurf;
+  DHPDEV  dhpdev;
+  HDEV  hdev;
+  SIZEL  sizlBitmap;
+  ULONG  cjBits;
+  PVOID  pvBits;
+  PVOID  pvScan0;
+  LONG  lDelta;
+  ULONG  iUniq;
+  ULONG  iBitmapFormat;
+  USHORT  iType;
+  USHORT  fjBitmap;
+} SURFOBJ;
+
+typedef struct _TYPE1_FONT {
+  HANDLE  hPFM;
+  HANDLE  hPFB;
+  ULONG  ulIdentifier;
+} TYPE1_FONT;
+
+typedef struct _WNDOBJ {
+  CLIPOBJ  coClient;
+  PVOID  pvConsumer;
+  RECTL  rclClient;
+  SURFOBJ  *psoOwner;
+} WNDOBJ, *PWNDOBJ;
+
+typedef struct _XFORML {
+  FLOATL  eM11;
+  FLOATL  eM12;
+  FLOATL  eM21;
+  FLOATL  eM22;
+  FLOATL  eDx;
+  FLOATL  eDy;
+} XFORML, *PXFORML;
+
+typedef struct _XFORMOBJ {
+  ULONG  ulReserved;
+} XFORMOBJ;
+
+/* XLATEOBJ.flXlate constants */
+#define XO_TRIVIAL                        0x00000001
+#define XO_TABLE                          0x00000002
+#define XO_TO_MONO                        0x00000004
+#define XO_FROM_CMYK                      0x00000008
+#define XO_DEVICE_ICM                     0x00000010
+#define XO_HOST_ICM                       0x00000020
+
+typedef struct _XLATEOBJ {
+  ULONG  iUniq;
+  FLONG  flXlate;
+  USHORT  iSrcType;
+  USHORT  iDstType;
+  ULONG  cEntries;
+  ULONG  *pulXlate;
+} XLATEOBJ;
+
+typedef VOID DDKAPI (CALLBACK *WNDOBJCHANGEPROC)(
+  /*IN*/ WNDOBJ  *pwo,
+  /*IN*/ FLONG  fl);
+
+
+WIN32KAPI
+HANDLE
+DDKAPI
+BRUSHOBJ_hGetColorTransform(
+  /*IN*/ BRUSHOBJ  *pbo);
+
+WIN32KAPI
+PVOID
+DDKAPI
+BRUSHOBJ_pvAllocRbrush(
+  /*IN*/ BRUSHOBJ  *pbo,
+  /*IN*/ ULONG  cj);
+
+WIN32KAPI
+PVOID
+DDKAPI
+BRUSHOBJ_pvGetRbrush(
+  /*IN*/ BRUSHOBJ  *pbo);
+
+WIN32KAPI
+ULONG
+DDKAPI
+BRUSHOBJ_ulGetBrushColor(
+  /*IN*/ BRUSHOBJ  *pbo);
+
+WIN32KAPI
+BOOL
+DDKAPI
+CLIPOBJ_bEnum(
+  /*IN*/ CLIPOBJ  *pco,
+  /*IN*/ ULONG  cj,
+
+  /*OUT*/ ULONG  *pv);
+
+/* CLIPOBJ_cEnumStart.iType constants */
+#define CT_RECTANGLES                     0L
+
+/* CLIPOBJ_cEnumStart.iDirection constants */
+#define CD_RIGHTDOWN                      0x00000000
+#define CD_LEFTDOWN                       0x00000001
+#define CD_LEFTWARDS                      0x00000001
+#define CD_RIGHTUP                        0x00000002
+#define CD_UPWARDS                        0x00000002
+#define CD_LEFTUP                         0x00000003
+#define CD_ANY                            0x00000004
+
+WIN32KAPI
+ULONG
+DDKAPI
+CLIPOBJ_cEnumStart(
+  /*IN*/ CLIPOBJ  *pco,
+  /*IN*/ BOOL  bAll,
+  /*IN*/ ULONG  iType,
+  /*IN*/ ULONG  iDirection,
+  /*IN*/ ULONG  cLimit);
+
+WIN32KAPI
+PATHOBJ*
+DDKAPI
+CLIPOBJ_ppoGetPath(
+  /*IN*/ CLIPOBJ  *pco);
+
+WIN32KAPI
+VOID
+DDKAPI
+EngAcquireSemaphore(
+  /*IN*/ HSEMAPHORE  hsem);
+
+#define FL_ZERO_MEMORY                    0x00000001
+#define FL_NONPAGED_MEMORY                0x00000002
+
+WIN32KAPI
+PVOID
+DDKAPI
+EngAllocMem(
+  /*IN*/ ULONG  Flags,
+  /*IN*/ ULONG  MemSize,
+  /*IN*/ ULONG  Tag);
+
+WIN32KAPI
+PVOID
+DDKAPI
+EngAllocPrivateUserMem(
+  /*IN*/ PDD_SURFACE_LOCAL  psl,
+  /*IN*/ SIZE_T  cj,
+  /*IN*/ ULONG  tag);
+
+WIN32KAPI
+PVOID
+DDKAPI
+EngAllocUserMem(
+  /*IN*/ SIZE_T  cj,
+  /*IN*/ ULONG  tag);
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngAlphaBlend(
+  /*IN*/ SURFOBJ  *psoDest,
+  /*IN*/ SURFOBJ  *psoSrc,
+  /*IN*/ CLIPOBJ  *pco,
+  /*IN*/ XLATEOBJ  *pxlo,
+  /*IN*/ RECTL  *prclDest,
+  /*IN*/ RECTL  *prclSrc,
+  /*IN*/ BLENDOBJ  *pBlendObj);
+
+/* EngAssociateSurface.flHooks constants */
+#define HOOK_BITBLT                       0x00000001
+#define HOOK_STRETCHBLT                   0x00000002
+#define HOOK_PLGBLT                       0x00000004
+#define HOOK_TEXTOUT                      0x00000008
+#define HOOK_PAINT                        0x00000010
+#define HOOK_STROKEPATH                   0x00000020
+#define HOOK_FILLPATH                     0x00000040
+#define HOOK_STROKEANDFILLPATH            0x00000080
+#define HOOK_LINETO                       0x00000100
+#define HOOK_COPYBITS                     0x00000400
+#define HOOK_MOVEPANNING                  0x00000800
+#define HOOK_SYNCHRONIZE                  0x00001000
+#define HOOK_STRETCHBLTROP                0x00002000
+#define HOOK_SYNCHRONIZEACCESS            0x00004000
+#define HOOK_TRANSPARENTBLT               0x00008000
+#define HOOK_ALPHABLEND                   0x00010000
+#define HOOK_GRADIENTFILL                 0x00020000
+#define HOOK_FLAGS                        0x0003b5ff
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngAssociateSurface(
+  /*IN*/ HSURF  hsurf,
+  /*IN*/ HDEV  hdev,
+  /*IN*/ FLONG  flHooks);
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngBitBlt(
+  /*IN*/ SURFOBJ  *psoTrg,
+  /*IN*/ SURFOBJ  *psoSrc,
+  /*IN*/ SURFOBJ  *psoMask,
+  /*IN*/ CLIPOBJ  *pco,
+  /*IN*/ XLATEOBJ  *pxlo,
+  /*IN*/ RECTL  *prclTrg,
+  /*IN*/ POINTL  *pptlSrc,
+  /*IN*/ POINTL  *pptlMask,
+  /*IN*/ BRUSHOBJ  *pbo,
+  /*IN*/ POINTL  *pptlBrush,
+  /*IN*/ ROP4  rop4);
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngCheckAbort(
+  /*IN*/ SURFOBJ  *pso);
+
+WIN32KAPI
+VOID
+DDKAPI
+EngClearEvent(
+  /*IN*/ PEVENT  pEvent);
+
+WIN32KAPI
+FD_GLYPHSET*
+DDKAPI
+EngComputeGlyphSet(
+  /*IN*/ INT  nCodePage,
+  /*IN*/ INT  nFirstChar,
+  /*IN*/ INT  cChars);
+
+/* EngControlSprites.fl constants */
+#define ECS_TEARDOWN                      0x00000001
+#define ECS_REDRAW                        0x00000002
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngControlSprites(
+  /*IN*/ WNDOBJ  *pwo,
+  /*IN*/ FLONG  fl);
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngCopyBits(
+
+  /*OUT*/ SURFOBJ  *psoDest,
+  /*IN*/ SURFOBJ  *psoSrc,
+  /*IN*/ CLIPOBJ  *pco,
+  /*IN*/ XLATEOBJ  *pxlo,
+  /*IN*/ RECTL  *prclDest,
+  /*IN*/ POINTL  *pptlSrc);
+
+WIN32KAPI
+HBITMAP
+DDKAPI
+EngCreateBitmap(
+  /*IN*/ SIZEL  sizl,
+  /*IN*/ LONG  lWidth,
+  /*IN*/ ULONG  iFormat,
+  /*IN*/ FLONG  fl,
+  /*IN*/ PVOID  pvBits);
+
+WIN32KAPI
+CLIPOBJ*
+DDKAPI
+EngCreateClip(
+  VOID);
+
+WIN32KAPI
+HBITMAP
+DDKAPI
+EngCreateDeviceBitmap(
+  /*IN*/ DHSURF  dhsurf,
+  /*IN*/ SIZEL  sizl,
+  /*IN*/ ULONG  iFormatCompat);
+
+WIN32KAPI
+HSURF
+DDKAPI
+EngCreateDeviceSurface(
+  DHSURF  dhsurf,
+  SIZEL  sizl,
+  ULONG  iFormatCompat);
+
+#if 0
+WIN32KAPI
+HDRVOBJ
+DDKAPI
+EngCreateDriverObj(
+  PVOID  pvObj,
+  FREEOBJPROC  pFreeObjProc,
+  HDEV  hdev);
+#endif
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngCreateEvent(
+
+  /*OUT*/ PEVENT  *ppEvent);
+
+/* EngCreatePalette.iMode constants */
+#define PAL_INDEXED                       0x00000001
+#define PAL_BITFIELDS                     0x00000002
+#define PAL_RGB                           0x00000004
+#define PAL_BGR                           0x00000008
+#define PAL_CMYK                          0x00000010
+
+WIN32KAPI
+HPALETTE
+DDKAPI
+EngCreatePalette(
+  /*IN*/ ULONG  iMode,
+  /*IN*/ ULONG  cColors,
+  /*IN*/ ULONG  *pulColors,
+  /*IN*/ FLONG  flRed,
+  /*IN*/ FLONG  flGreen,
+  /*IN*/ FLONG  flBlue);
+
+WIN32KAPI
+PATHOBJ*
+DDKAPI
+EngCreatePath(
+  VOID);
+
+WIN32KAPI
+HSEMAPHORE
+DDKAPI
+EngCreateSemaphore(
+  VOID);
+
+/* EngCreateWnd.fl constants */
+#define WO_RGN_CLIENT_DELTA               0x00000001
+#define WO_RGN_CLIENT                     0x00000002
+#define WO_RGN_SURFACE_DELTA              0x00000004
+#define WO_RGN_SURFACE                    0x00000008
+#define WO_RGN_UPDATE_ALL                 0x00000010
+#define WO_RGN_WINDOW                     0x00000020
+#define WO_DRAW_NOTIFY                    0x00000040
+#define WO_SPRITE_NOTIFY                  0x00000080
+#define WO_RGN_DESKTOP_COORD              0x00000100
+
+WIN32KAPI
+WNDOBJ*
+DDKAPI
+EngCreateWnd(
+  SURFOBJ  *pso,
+  HWND  hwnd,
+  WNDOBJCHANGEPROC  pfn,
+  FLONG  fl,
+  int  iPixelFormat);
+
+WIN32KAPI
+VOID
+DDKAPI
+EngDebugBreak(
+  VOID);
+
+WIN32KAPI
+VOID
+DDKAPI
+EngDebugPrint(
+  /*IN*/ PCHAR StandardPrefix,
+  /*IN*/ PCHAR DebugMessage,
+  /*IN*/ va_list ap);
+
+WIN32KAPI
+VOID
+DDKAPI
+EngDeleteClip(
+  /*IN*/ CLIPOBJ  *pco);
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngDeleteDriverObj(
+  /*IN*/ HDRVOBJ  hdo,
+  /*IN*/ BOOL  bCallBack,
+  /*IN*/ BOOL  bLocked);
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngDeleteEvent(
+  /*IN*/ PEVENT  pEvent);
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngDeleteFile(
+  /*IN*/ LPWSTR  pwszFileName);
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngDeletePalette(
+  /*IN*/ HPALETTE  hpal);
+
+WIN32KAPI
+VOID
+DDKAPI
+EngDeletePath(
+  /*IN*/ PATHOBJ  *ppo);
+
+WIN32KAPI
+VOID
+DDKAPI
+EngDeleteSafeSemaphore(
+  /*IN OUT*/ ENGSAFESEMAPHORE  *pssem);
+
+WIN32KAPI
+VOID
+DDKAPI
+EngDeleteSemaphore(
+  /*IN OUT*/ HSEMAPHORE  hsem);
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngDeleteSurface(
+  /*IN*/ HSURF  hsurf);
+
+WIN32KAPI
+VOID
+DDKAPI
+EngDeleteWnd(
+  /*IN*/ WNDOBJ  *pwo);
+
+WIN32KAPI
+DWORD
+DDKAPI
+EngDeviceIoControl(
+  /*IN*/ HANDLE  hDevice,
+  /*IN*/ DWORD  dwIoControlCode,
+  /*IN*/ LPVOID  lpInBuffer,
+  /*IN*/ DWORD  nInBufferSize,
+  /*IN OUT*/ LPVOID  lpOutBuffer,
+  /*IN*/ DWORD  nOutBufferSize,
+
+  /*OUT*/ LPDWORD  lpBytesReturned);
+
+WIN32KAPI
+ULONG
+DDKAPI
+EngDitherColor(
+  /*IN*/ HDEV  hdev,
+  /*IN*/ ULONG  iMode,
+  /*IN*/ ULONG  rgb,
+
+  /*OUT*/ ULONG  *pul);
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngEnumForms(
+  /*IN*/ HANDLE  hPrinter,
+  /*IN*/ DWORD  Level,
+
+  /*OUT*/ LPBYTE  pForm,
+  /*IN*/ DWORD  cbBuf,
+
+  /*OUT*/ LPDWORD  pcbNeeded,
+
+  /*OUT*/ LPDWORD  pcReturned);
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngEraseSurface(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ RECTL  *prcl,
+  /*IN*/ ULONG  iColor);
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngFillPath(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ PATHOBJ  *ppo,
+  /*IN*/ CLIPOBJ  *pco,
+  /*IN*/ BRUSHOBJ  *pbo,
+  /*IN*/ POINTL  *pptlBrushOrg,
+  /*IN*/ MIX  mix,
+  /*IN*/ FLONG  flOptions);
+
+WIN32KAPI
+PVOID
+DDKAPI
+EngFindImageProcAddress(
+  /*IN*/ HANDLE  hModule,
+  /*IN*/ LPSTR  lpProcName);
+
+WIN32KAPI
+PVOID
+DDKAPI
+EngFindResource(
+  /*IN*/ HANDLE  h,
+  /*IN*/ int  iName,
+  /*IN*/ int  iType,
+
+  /*OUT*/ PULONG  pulSize);
+
+WIN32KAPI
+PVOID
+DDKAPI
+EngFntCacheAlloc(
+  /*IN*/ ULONG  FastCheckSum,
+  /*IN*/ ULONG  ulSize);
+
+/* EngFntCacheFault.iFaultMode constants */
+#define ENG_FNT_CACHE_READ_FAULT          0x00000001
+#define ENG_FNT_CACHE_WRITE_FAULT         0x00000002
+
+WIN32KAPI
+VOID
+DDKAPI
+EngFntCacheFault(
+  /*IN*/ ULONG  ulFastCheckSum,
+  /*IN*/ ULONG  iFaultMode);
+
+WIN32KAPI
+PVOID
+DDKAPI
+EngFntCacheLookUp(
+  /*IN*/ ULONG  FastCheckSum,
+
+  /*OUT*/ ULONG  *pulSize);
+
+WIN32KAPI
+VOID
+DDKAPI
+EngFreeMem(
+  /*IN*/ PVOID  Mem);
+
+WIN32KAPI
+VOID
+DDKAPI
+EngFreeModule(
+  /*IN*/ HANDLE  h);
+
+WIN32KAPI
+VOID
+DDKAPI
+EngFreePrivateUserMem(
+  /*IN*/ PDD_SURFACE_LOCAL  psl,
+  /*IN*/ PVOID  pv);
+
+WIN32KAPI
+VOID
+DDKAPI
+EngFreeUserMem(
+  /*IN*/ PVOID  pv);
+
+WIN32KAPI
+VOID
+DDKAPI
+EngGetCurrentCodePage(
+
+  /*OUT*/ PUSHORT  OemCodePage,
+
+  /*OUT*/ PUSHORT  AnsiCodePage);
+
+WIN32KAPI
+HANDLE
+DDKAPI
+EngGetCurrentProcessId(
+  VOID);
+
+WIN32KAPI
+HANDLE
+DDKAPI
+EngGetCurrentThreadId(
+  VOID);
+
+WIN32KAPI
+LPWSTR
+DDKAPI
+EngGetDriverName(
+  /*IN*/ HDEV  hdev);
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngGetFileChangeTime(
+  /*IN*/ HANDLE  h,
+
+  /*OUT*/ LARGE_INTEGER  *pChangeTime);
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngGetFilePath(
+  /*IN*/ HANDLE  h,
+
+  /*OUT*/ WCHAR  (*pDest)[MAX_PATH+1]);
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngGetForm(
+  /*IN*/ HANDLE  hPrinter,
+  /*IN*/ LPWSTR  pFormName,
+  /*IN*/ DWORD  Level,
+
+  /*OUT*/ LPBYTE  pForm,
+  /*IN*/ DWORD  cbBuf,
+
+  /*OUT*/ LPDWORD  pcbNeeded);
+
+WIN32KAPI
+ULONG
+DDKAPI
+EngGetLastError(
+  VOID);
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngGetPrinter(
+  /*IN*/ HANDLE  hPrinter,
+  /*IN*/ DWORD  dwLevel,
+
+  /*OUT*/ LPBYTE  pPrinter,
+  /*IN*/ DWORD  cbBuf,
+
+  /*OUT*/ LPDWORD  pcbNeeded);
+
+WIN32KAPI
+DWORD
+DDKAPI
+EngGetPrinterData(
+  /*IN*/ HANDLE  hPrinter,
+  /*IN*/ LPWSTR  pValueName,
+
+  /*OUT*/ LPDWORD  pType,
+
+  /*OUT*/ LPBYTE  pData,
+  /*IN*/ DWORD  nSize,
+
+  /*OUT*/ LPDWORD  pcbNeeded);
+
+WIN32KAPI
+LPWSTR
+DDKAPI
+EngGetPrinterDataFileName(
+  /*IN*/ HDEV  hdev);
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngGetPrinterDriver(
+  /*IN*/ HANDLE  hPrinter,
+  /*IN*/ LPWSTR  pEnvironment,
+  /*IN*/ DWORD  dwLevel,
+
+  /*OUT*/ BYTE  *lpbDrvInfo,
+  /*IN*/ DWORD  cbBuf,
+
+  /*OUT*/ DWORD  *pcbNeeded);
+
+WIN32KAPI
+HANDLE
+DDKAPI
+EngGetProcessHandle(
+  VOID);
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngGetType1FontList(
+  /*IN*/ HDEV  hdev,
+
+  /*OUT*/ TYPE1_FONT  *pType1Buffer,
+  /*IN*/ ULONG  cjType1Buffer,
+
+  /*OUT*/ PULONG  pulLocalFonts,
+
+  /*OUT*/ PULONG  pulRemoteFonts,
+
+  /*OUT*/ LARGE_INTEGER  *pLastModified);
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngGradientFill(
+  /*IN*/ SURFOBJ  *psoDest,
+  /*IN*/ CLIPOBJ  *pco,
+  /*IN*/ XLATEOBJ  *pxlo,
+  /*IN*/ TRIVERTEX  *pVertex,
+  /*IN*/ ULONG  nVertex,
+  /*IN*/ PVOID  pMesh,
+  /*IN*/ ULONG  nMesh,
+  /*IN*/ RECTL  *prclExtents,
+  /*IN*/ POINTL  *pptlDitherOrg,
+  /*IN*/ ULONG  ulMode);
+
+/* EngHangNotification return values */
+#define EHN_RESTORED                      0x00000000
+#define EHN_ERROR                         0x00000001
+
+WIN32KAPI
+ULONG
+DDKAPI
+EngHangNotification(
+  /*IN*/ HDEV  hDev,
+  /*IN*/ PVOID  Reserved);
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngInitializeSafeSemaphore(
+
+  /*OUT*/ ENGSAFESEMAPHORE  *pssem);
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngIsSemaphoreOwned(
+  /*IN*/ HSEMAPHORE  hsem);
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngIsSemaphoreOwnedByCurrentThread(
+  /*IN*/ HSEMAPHORE  hsem);
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngLineTo(
+  SURFOBJ  *pso,
+  CLIPOBJ  *pco,
+  BRUSHOBJ  *pbo,
+  LONG  x1,
+  LONG  y1,
+  LONG  x2,
+  LONG  y2,
+  RECTL  *prclBounds,
+  MIX  mix);
+
+WIN32KAPI
+HANDLE
+DDKAPI
+EngLoadImage(
+  /*IN*/ LPWSTR  pwszDriver);
+
+WIN32KAPI
+HANDLE
+DDKAPI
+EngLoadModule(
+  /*IN*/ LPWSTR  pwsz);
+
+WIN32KAPI
+HANDLE
+DDKAPI
+EngLoadModuleForWrite(
+  /*IN*/ LPWSTR  pwsz,
+  /*IN*/ ULONG  cjSizeOfModule);
+
+WIN32KAPI
+PDD_SURFACE_LOCAL
+DDKAPI
+EngLockDirectDrawSurface(
+  /*IN*/ HANDLE  hSurface);
+
+WIN32KAPI
+DRIVEROBJ*
+DDKAPI
+EngLockDriverObj(
+  /*IN*/ HDRVOBJ  hdo);
+
+WIN32KAPI
+SURFOBJ*
+DDKAPI
+EngLockSurface(
+  /*IN*/ HSURF  hsurf);
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngLpkInstalled(
+  VOID);
+
+WIN32KAPI
+PEVENT
+DDKAPI
+EngMapEvent(
+  /*IN*/ HDEV  hDev,
+  /*IN*/ HANDLE  hUserObject,
+  /*IN*/ PVOID  Reserved1,
+  /*IN*/ PVOID  Reserved2,
+  /*IN*/ PVOID  Reserved3);
+
+WIN32KAPI
+PVOID
+DDKAPI
+EngMapFile(
+  /*IN*/ LPWSTR  pwsz,
+  /*IN*/ ULONG  cjSize,
+
+  /*OUT*/ ULONG_PTR  *piFile);
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngMapFontFile(
+  ULONG_PTR  iFile,
+  PULONG  *ppjBuf,
+  ULONG  *pcjBuf);
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngMapFontFileFD(
+  /*IN*/ ULONG_PTR  iFile,
+
+  /*OUT*/ PULONG  *ppjBuf,
+
+  /*OUT*/ ULONG  *pcjBuf);
+
+WIN32KAPI
+PVOID
+DDKAPI
+EngMapModule(
+  /*IN*/ HANDLE  h,
+
+  /*OUT*/ PULONG  pSize);
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngMarkBandingSurface(
+  /*IN*/ HSURF  hsurf);
+
+/* EngModifySurface.flSurface constants */
+#define MS_NOTSYSTEMMEMORY                0x00000001
+#define MS_SHAREDACCESS                   0x00000002
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngModifySurface(
+  /*IN*/ HSURF  hsurf,
+  /*IN*/ HDEV  hdev,
+  /*IN*/ FLONG  flHooks,
+  /*IN*/ FLONG  flSurface,
+  /*IN*/ DHSURF  dhsurf,
+  /*IN*/ VOID  *pvScan0,
+  /*IN*/ LONG  lDelta,
+  /*IN*/ VOID  *pvReserved);
+
+WIN32KAPI
+VOID
+DDKAPI
+EngMovePointer(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ LONG  x,
+  /*IN*/ LONG  y,
+  /*IN*/ RECTL  *prcl);
+
+WIN32KAPI
+int
+DDKAPI
+EngMulDiv(
+  /*IN*/ int  a,
+  /*IN*/ int  b,
+  /*IN*/ int  c);
+
+WIN32KAPI
+VOID
+DDKAPI
+EngMultiByteToUnicodeN(
+
+  /*OUT*/ LPWSTR  UnicodeString,
+  /*IN*/ ULONG  MaxBytesInUnicodeString,
+
+  /*OUT*/ PULONG  BytesInUnicodeString,
+  /*IN*/ PCHAR  MultiByteString,
+  /*IN*/ ULONG  BytesInMultiByteString);
+
+WIN32KAPI
+INT
+DDKAPI
+EngMultiByteToWideChar(
+  /*IN*/ UINT  CodePage,
+
+  /*OUT*/ LPWSTR  WideCharString,
+  /*IN*/ INT  BytesInWideCharString,
+  /*IN*/ LPSTR  MultiByteString,
+  /*IN*/ INT  BytesInMultiByteString);
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngPaint(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ CLIPOBJ  *pco,
+  /*IN*/ BRUSHOBJ  *pbo,
+  /*IN*/ POINTL  *pptlBrushOrg,
+  /*IN*/ MIX  mix);
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngPlgBlt(
+  /*IN*/ SURFOBJ  *psoTrg,
+  /*IN*/ SURFOBJ  *psoSrc,
+  /*IN*/ SURFOBJ  *psoMsk,
+  /*IN*/ CLIPOBJ  *pco,
+  /*IN*/ XLATEOBJ  *pxlo,
+  /*IN*/ COLORADJUSTMENT  *pca,
+  /*IN*/ POINTL  *pptlBrushOrg,
+  /*IN*/ POINTFIX  *pptfx,
+  /*IN*/ RECTL  *prcl,
+  /*IN*/ POINTL  *pptl,
+  /*IN*/ ULONG  iMode);
+
+WIN32KAPI
+VOID
+DDKAPI
+EngProbeForRead(
+  /*IN*/ PVOID  Address,
+  /*IN*/ ULONG  Length,
+  /*IN*/ ULONG  Alignment);
+
+WIN32KAPI
+VOID
+DDKAPI
+EngProbeForReadAndWrite(
+  /*IN*/ PVOID  Address,
+  /*IN*/ ULONG  Length,
+  /*IN*/ ULONG  Alignment);
+
+typedef enum _ENG_DEVICE_ATTRIBUTE {
+  QDA_RESERVED = 0,
+  QDA_ACCELERATION_LEVEL
+} ENG_DEVICE_ATTRIBUTE;
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngQueryDeviceAttribute(
+  /*IN*/ HDEV  hdev,
+  /*IN*/ ENG_DEVICE_ATTRIBUTE  devAttr,
+  /*IN*/ VOID  *pvIn,
+  /*IN*/ ULONG  ulInSize,
+
+  /*OUT*/ VOID  *pvOut,
+
+  /*OUT*/ ULONG  ulOutSize);
+
+WIN32KAPI
+LARGE_INTEGER
+DDKAPI
+EngQueryFileTimeStamp(
+  /*IN*/ LPWSTR  pwsz);
+
+WIN32KAPI
+VOID
+DDKAPI
+EngQueryLocalTime(
+
+  /*OUT*/ PENG_TIME_FIELDS  ptf);
+
+WIN32KAPI
+ULONG
+DDKAPI
+EngQueryPalette(
+  /*IN*/ HPALETTE  hPal,
+
+  /*OUT*/ ULONG  *piMode,
+  /*IN*/ ULONG  cColors,
+
+  /*OUT*/ ULONG  *pulColors);
+
+WIN32KAPI
+VOID
+DDKAPI
+EngQueryPerformanceCounter(
+
+  /*OUT*/ LONGLONG  *pPerformanceCount);
+
+WIN32KAPI
+VOID
+DDKAPI
+EngQueryPerformanceFrequency(
+
+  /*OUT*/ LONGLONG  *pFrequency);
+
+typedef enum _ENG_SYSTEM_ATTRIBUTE {
+  EngProcessorFeature = 1,
+  EngNumberOfProcessors,
+  EngOptimumAvailableUserMemory,
+  EngOptimumAvailableSystemMemory,
+} ENG_SYSTEM_ATTRIBUTE;
+
+#define QSA_MMX                           0x00000100
+#define QSA_SSE                           0x00002000
+#define QSA_3DNOW                         0x00004000
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngQuerySystemAttribute(
+  /*IN*/ ENG_SYSTEM_ATTRIBUTE  CapNum,
+
+  /*OUT*/ PDWORD  pCapability);
+
+WIN32KAPI
+LONG
+DDKAPI
+EngReadStateEvent(
+  /*IN*/ PEVENT  pEvent);
+
+WIN32KAPI
+VOID
+DDKAPI
+EngReleaseSemaphore(
+  /*IN*/ HSEMAPHORE  hsem);
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngRestoreFloatingPointState(
+  /*IN*/ VOID  *pBuffer);
+
+WIN32KAPI
+ULONG
+DDKAPI
+EngSaveFloatingPointState(
+
+  /*OUT*/ VOID  *pBuffer,
+  /*IN*/ ULONG  cjBufferSize);
+
+WIN32KAPI
+HANDLE
+DDKAPI
+EngSecureMem(
+  /*IN*/ PVOID  Address,
+  /*IN*/ ULONG  Length);
+
+WIN32KAPI
+LONG
+DDKAPI
+EngSetEvent(
+  /*IN*/ PEVENT  pEvent);
+
+WIN32KAPI
+VOID
+DDKAPI
+EngSetLastError(
+  /*IN*/ ULONG  iError);
+
+WIN32KAPI
+ULONG
+DDKAPI
+EngSetPointerShape(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ SURFOBJ  *psoMask,
+  /*IN*/ SURFOBJ  *psoColor,
+  /*IN*/ XLATEOBJ  *pxlo,
+  /*IN*/ LONG  xHot,
+  /*IN*/ LONG  yHot,
+  /*IN*/ LONG  x,
+  /*IN*/ LONG  y,
+  /*IN*/ RECTL  *prcl,
+  /*IN*/ FLONG  fl);
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngSetPointerTag(
+  /*IN*/ HDEV  hdev,
+  /*IN*/ SURFOBJ  *psoMask,
+  /*IN*/ SURFOBJ  *psoColor,
+  /*IN*/ XLATEOBJ  *pxlo,
+  /*IN*/ FLONG  fl);
+
+WIN32KAPI
+DWORD
+DDKAPI
+EngSetPrinterData(
+  /*IN*/ HANDLE  hPrinter,
+  /*IN*/ LPWSTR  pType,
+  /*IN*/ DWORD  dwType,
+  /*IN*/ LPBYTE  lpbPrinterData,
+  /*IN*/ DWORD  cjPrinterData);
+
+typedef int DDKCDECLAPI (*SORTCOMP)(const void *pv1, const void *pv2);
+
+WIN32KAPI
+VOID
+DDKAPI
+EngSort(
+  /*IN OUT*/ PBYTE  pjBuf,
+  /*IN*/ ULONG  c,
+  /*IN*/ ULONG  cjElem,
+  /*IN*/ SORTCOMP  pfnComp);
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngStretchBlt(
+  /*IN*/ SURFOBJ  *psoDest,
+  /*IN*/ SURFOBJ  *psoSrc,
+  /*IN*/ SURFOBJ  *psoMask,
+  /*IN*/ CLIPOBJ  *pco,
+  /*IN*/ XLATEOBJ  *pxlo,
+  /*IN*/ COLORADJUSTMENT  *pca,
+  /*IN*/ POINTL  *pptlHTOrg,
+  /*IN*/ RECTL  *prclDest,
+  /*IN*/ RECTL  *prclSrc,
+  /*IN*/ POINTL  *pptlMask,
+  /*IN*/ ULONG  iMode);
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngStretchBltROP(
+  /*IN*/ SURFOBJ  *psoDest,
+  /*IN*/ SURFOBJ  *psoSrc,
+  /*IN*/ SURFOBJ  *psoMask,
+  /*IN*/ CLIPOBJ  *pco,
+  /*IN*/ XLATEOBJ  *pxlo,
+  /*IN*/ COLORADJUSTMENT  *pca,
+  /*IN*/ POINTL  *pptlHTOrg,
+  /*IN*/ RECTL  *prclDest,
+  /*IN*/ RECTL  *prclSrc,
+  /*IN*/ POINTL  *pptlMask,
+  /*IN*/ ULONG  iMode,
+  /*IN*/ BRUSHOBJ  *pbo,
+  /*IN*/ DWORD  rop4);
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngStrokeAndFillPath(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ PATHOBJ  *ppo,
+  /*IN*/ CLIPOBJ  *pco,
+  /*IN*/ XFORMOBJ  *pxo,
+  /*IN*/ BRUSHOBJ  *pboStroke,
+  /*IN*/ LINEATTRS  *plineattrs,
+  /*IN*/ BRUSHOBJ  *pboFill,
+  /*IN*/ POINTL  *pptlBrushOrg,
+  /*IN*/ MIX  mixFill,
+  /*IN*/ FLONG  flOptions);
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngStrokePath(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ PATHOBJ  *ppo,
+  /*IN*/ CLIPOBJ  *pco,
+  /*IN*/ XFORMOBJ  *pxo,
+  /*IN*/ BRUSHOBJ  *pbo,
+  /*IN*/ POINTL  *pptlBrushOrg,
+  /*IN*/ LINEATTRS  *plineattrs,
+  /*IN*/ MIX  mix);
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngTextOut(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ STROBJ  *pstro,
+  /*IN*/ FONTOBJ  *pfo,
+  /*IN*/ CLIPOBJ  *pco,
+  /*IN*/ RECTL  *prclExtra,
+  /*IN*/ RECTL  *prclOpaque,
+  /*IN*/ BRUSHOBJ  *pboFore,
+  /*IN*/ BRUSHOBJ  *pboOpaque,
+  /*IN*/ POINTL  *pptlOrg,
+  /*IN*/ MIX  mix);
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngTransparentBlt(
+  /*IN*/ SURFOBJ  *psoDst,
+  /*IN*/ SURFOBJ  *psoSrc,
+  /*IN*/ CLIPOBJ  *pco,
+  /*IN*/ XLATEOBJ  *pxlo,
+  /*IN*/ RECTL  *prclDst,
+  /*IN*/ RECTL  *prclSrc,
+  /*IN*/ ULONG  iTransColor,
+  /*IN*/ ULONG  ulReserved);
+
+WIN32KAPI
+VOID
+DDKAPI
+EngUnicodeToMultiByteN(
+
+  /*OUT*/ PCHAR  MultiByteString,
+  /*IN*/ ULONG  MaxBytesInMultiByteString,
+
+  /*OUT*/ PULONG  BytesInMultiByteString,
+  /*IN*/ PWSTR  UnicodeString,
+  /*IN*/ ULONG  BytesInUnicodeString);
+
+WIN32KAPI
+VOID
+DDKAPI
+EngUnloadImage(
+  /*IN*/ HANDLE  hModule);
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngUnlockDirectDrawSurface(
+  /*IN*/ PDD_SURFACE_LOCAL  pSurface);
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngUnlockDriverObj(
+  /*IN*/ HDRVOBJ  hdo);
+
+WIN32KAPI
+VOID
+DDKAPI
+EngUnlockSurface(
+  /*IN*/ SURFOBJ  *pso);
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngUnmapEvent(
+  /*IN*/ PEVENT  pEvent);
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngUnmapFile(
+  /*IN*/ ULONG_PTR  iFile);
+
+WIN32KAPI
+VOID
+DDKAPI
+EngUnmapFontFile(
+  ULONG_PTR  iFile);
+
+WIN32KAPI
+VOID
+DDKAPI
+EngUnmapFontFileFD(
+  /*IN*/ ULONG_PTR  iFile);
+
+WIN32KAPI
+VOID
+DDKAPI
+EngUnsecureMem(
+  /*IN*/ HANDLE  hSecure);
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngWaitForSingleObject(
+  /*IN*/ PEVENT  pEvent,
+  /*IN*/ PLARGE_INTEGER  pTimeOut);
+
+WIN32KAPI
+INT
+DDKAPI
+EngWideCharToMultiByte(
+  /*IN*/ UINT  CodePage,
+  /*IN*/ LPWSTR  WideCharString,
+  /*IN*/ INT  BytesInWideCharString,
+
+  /*OUT*/ LPSTR  MultiByteString,
+  /*IN*/ INT  BytesInMultiByteString);
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngWritePrinter(
+  /*IN*/ HANDLE  hPrinter,
+  /*IN*/ LPVOID  pBuf,
+  /*IN*/ DWORD  cbBuf,
+
+  /*OUT*/ LPDWORD  pcWritten);
+
+WIN32KAPI
+VOID
+DDKAPI
+FLOATOBJ_Add(
+  /*IN OUT*/ PFLOATOBJ  pf,
+  /*IN*/ PFLOATOBJ  pf1);
+
+WIN32KAPI
+VOID
+DDKAPI
+FLOATOBJ_AddFloat(
+  /*IN OUT*/ PFLOATOBJ  pf,
+  /*IN*/ FLOATL  f);
+
+WIN32KAPI
+VOID
+DDKAPI
+FLOATOBJ_AddLong(
+  /*IN OUT*/ PFLOATOBJ  pf,
+  /*IN*/ LONG  l);
+
+WIN32KAPI
+VOID
+DDKAPI
+FLOATOBJ_Div(
+  /*IN OUT*/ PFLOATOBJ  pf,
+  /*IN*/ PFLOATOBJ  pf1);
+
+WIN32KAPI
+VOID
+DDKAPI
+FLOATOBJ_DivFloat(
+  /*IN OUT*/ PFLOATOBJ  pf,
+  /*IN*/ FLOATL  f);
+
+WIN32KAPI
+VOID
+DDKAPI
+FLOATOBJ_DivLong(
+  /*IN OUT*/ PFLOATOBJ  pf,
+  /*IN*/ LONG  l);
+
+WIN32KAPI
+BOOL
+DDKAPI
+FLOATOBJ_Equal(
+  /*IN*/ PFLOATOBJ  pf,
+  /*IN*/ PFLOATOBJ  pf1);
+
+WIN32KAPI
+BOOL
+DDKAPI
+FLOATOBJ_EqualLong(
+  /*IN*/ PFLOATOBJ  pf,
+  /*IN*/ LONG  l);
+
+WIN32KAPI
+LONG
+DDKAPI
+FLOATOBJ_GetFloat(
+  /*IN*/ PFLOATOBJ  pf);
+
+WIN32KAPI
+LONG
+DDKAPI
+FLOATOBJ_GetLong(
+  /*IN*/ PFLOATOBJ  pf);
+
+WIN32KAPI
+BOOL
+DDKAPI
+FLOATOBJ_GreaterThan(
+  /*IN*/ PFLOATOBJ  pf,
+  /*IN*/ PFLOATOBJ  pf1);
+
+WIN32KAPI
+BOOL
+DDKAPI
+FLOATOBJ_GreaterThanLong(
+  /*IN*/ PFLOATOBJ  pf,
+  /*IN*/ LONG  l);
+
+WIN32KAPI
+BOOL
+DDKAPI
+FLOATOBJ_LessThan(
+  /*IN*/ PFLOATOBJ  pf,
+  /*IN*/ PFLOATOBJ  pf1);
+
+WIN32KAPI
+BOOL
+DDKAPI
+FLOATOBJ_LessThanLong(
+  /*IN*/ PFLOATOBJ  pf,
+  /*IN*/ LONG  l);
+
+WIN32KAPI
+VOID
+DDKAPI
+FLOATOBJ_Mul(
+  /*IN OUT*/ PFLOATOBJ  pf,
+  /*IN*/ PFLOATOBJ  pf1);
+
+WIN32KAPI
+VOID
+DDKAPI
+FLOATOBJ_MulFloat(
+  /*IN OUT*/ PFLOATOBJ  pf,
+  /*IN*/ FLOATL  f);
+
+WIN32KAPI
+VOID
+DDKAPI
+FLOATOBJ_MulLong(
+  /*IN OUT*/ PFLOATOBJ  pf,
+  /*IN*/ LONG  l);
+
+WIN32KAPI
+VOID
+DDKAPI
+FLOATOBJ_Neg(
+  /*IN OUT*/ PFLOATOBJ  pf);
+
+WIN32KAPI
+VOID
+DDKAPI
+FLOATOBJ_SetFloat(
+
+  /*OUT*/ PFLOATOBJ  pf,
+  /*IN*/ FLOATL  f);
+
+WIN32KAPI
+VOID
+DDKAPI
+FLOATOBJ_SetLong(
+
+  /*OUT*/ PFLOATOBJ  pf,
+  /*IN*/ LONG  l);
+
+WIN32KAPI
+VOID
+DDKAPI
+FLOATOBJ_Sub(
+  /*IN OUT*/ PFLOATOBJ  pf,
+  /*IN*/ PFLOATOBJ  pf1);
+
+WIN32KAPI
+VOID
+DDKAPI
+FLOATOBJ_SubFloat(
+  /*IN OUT*/ PFLOATOBJ  pf,
+  /*IN*/ FLOATL  f);
+
+WIN32KAPI
+VOID
+DDKAPI
+FLOATOBJ_SubLong(
+  /*IN OUT*/ PFLOATOBJ  pf,
+  /*IN*/ LONG  l);
+
+WIN32KAPI
+ULONG
+DDKAPI
+FONTOBJ_cGetAllGlyphHandles(
+  /*IN*/ FONTOBJ  *pfo,
+
+  /*OUT*/ HGLYPH  *phg);
+
+WIN32KAPI
+ULONG
+DDKAPI
+FONTOBJ_cGetGlyphs(
+  /*IN*/ FONTOBJ  *pfo,
+  /*IN*/ ULONG  iMode,
+  /*IN*/ ULONG  cGlyph,
+  /*IN*/ HGLYPH  *phg,
+
+  /*OUT*/ PVOID  *ppvGlyph);
+
+WIN32KAPI
+FD_GLYPHSET*
+DDKAPI
+FONTOBJ_pfdg(
+  /*IN*/ FONTOBJ  *pfo);
+
+WIN32KAPI
+IFIMETRICS*
+DDKAPI
+FONTOBJ_pifi(
+  /*IN*/ FONTOBJ  *pfo);
+
+WIN32KAPI
+PBYTE
+DDKAPI
+FONTOBJ_pjOpenTypeTablePointer(
+  /*IN*/ FONTOBJ  *pfo,
+  /*IN*/ ULONG  ulTag,
+
+  /*OUT*/ ULONG  *pcjTable);
+
+WIN32KAPI
+PFD_GLYPHATTR
+DDKAPI
+FONTOBJ_pQueryGlyphAttrs(
+  /*IN*/ FONTOBJ  *pfo,
+  /*IN*/ ULONG  iMode);
+
+WIN32KAPI
+PVOID
+DDKAPI
+FONTOBJ_pvTrueTypeFontFile(
+  /*IN*/ FONTOBJ  *pfo,
+
+  /*OUT*/ ULONG  *pcjFile);
+
+WIN32KAPI
+LPWSTR
+DDKAPI
+FONTOBJ_pwszFontFilePaths(
+  /*IN*/ FONTOBJ  *pfo,
+
+  /*OUT*/ ULONG  *pcwc);
+
+WIN32KAPI
+XFORMOBJ*
+DDKAPI
+FONTOBJ_pxoGetXform(
+  /*IN*/ FONTOBJ  *pfo);
+
+WIN32KAPI
+VOID
+DDKAPI
+FONTOBJ_vGetInfo(
+  /*IN*/ FONTOBJ  *pfo,
+  /*IN*/ ULONG  cjSize,
+
+  /*OUT*/ FONTINFO  *pfi);
+
+WIN32KAPI
+FLATPTR
+DDKAPI
+HeapVidMemAllocAligned(
+  /*IN*/ LPVIDMEM  lpVidMem,
+  /*IN*/ DWORD  dwWidth,
+  /*IN*/ DWORD  dwHeight,
+  /*IN*/ LPSURFACEALIGNMENT  lpAlignment,
+
+  /*OUT*/ LPLONG  lpNewPitch);
+
+WIN32KAPI
+LONG
+DDKAPI
+HT_ComputeRGBGammaTable(
+  /*IN*/ USHORT  GammaTableEntries,
+  /*IN*/ USHORT  GammaTableType,
+  /*IN*/ USHORT  RedGamma,
+  /*IN*/ USHORT  GreenGamma,
+  /*IN*/ USHORT  BlueGamma,
+
+  /*OUT*/ LPBYTE  pGammaTable);
+
+WIN32KAPI
+LONG
+DDKAPI
+HT_Get8BPPFormatPalette(
+
+  /*OUT*/ LPPALETTEENTRY  pPaletteEntry,
+  /*IN*/ USHORT  RedGamma,
+  /*IN*/ USHORT  GreenGamma,
+  /*IN*/ USHORT  BlueGamma);
+
+WIN32KAPI
+LONG
+DDKAPI
+HT_Get8BPPMaskPalette(
+  /*IN OUT*/ LPPALETTEENTRY  pPaletteEntry,
+  /*IN*/ BOOL  Use8BPPMaskPal,
+  /*IN*/ BYTE  CMYMask,
+  /*IN*/ USHORT  RedGamma,
+  /*IN*/ USHORT  GreenGamma,
+  /*IN*/ USHORT  BlueGamma);
+
+WIN32KAPI
+LONG
+DDKAPI
+HTUI_DeviceColorAdjustment(
+  /*IN*/ LPSTR  pDeviceName,
+
+  /*OUT*/ PDEVHTADJDATA  pDevHTAdjData);
+
+WIN32KAPI
+ULONG
+DDKAPI
+PALOBJ_cGetColors(
+  /*IN*/ PALOBJ  *ppalo,
+  /*IN*/ ULONG  iStart,
+  /*IN*/ ULONG  cColors,
+
+  /*OUT*/ ULONG  *pulColors);
+
+WIN32KAPI
+BOOL
+DDKAPI
+PATHOBJ_bCloseFigure(
+  /*IN*/ PATHOBJ  *ppo);
+
+WIN32KAPI
+BOOL
+DDKAPI
+PATHOBJ_bEnum(
+  /*IN*/ PATHOBJ  *ppo,
+
+  /*OUT*/ PATHDATA  *ppd);
+
+WIN32KAPI
+BOOL
+DDKAPI
+PATHOBJ_bEnumClipLines(
+  /*IN*/ PATHOBJ  *ppo,
+  /*IN*/ ULONG  cb,
+
+  /*OUT*/ CLIPLINE  *pcl);
+
+WIN32KAPI
+BOOL
+DDKAPI
+PATHOBJ_bMoveTo(
+  /*IN*/ PATHOBJ  *ppo,
+  /*IN*/ POINTFIX  ptfx);
+
+WIN32KAPI
+BOOL
+DDKAPI
+PATHOBJ_bPolyBezierTo(
+  /*IN*/ PATHOBJ  *ppo,
+  /*IN*/ POINTFIX  *pptfx,
+  /*IN*/ ULONG  cptfx);
+
+WIN32KAPI
+BOOL
+DDKAPI
+PATHOBJ_bPolyLineTo(
+  /*IN*/ PATHOBJ  *ppo,
+  /*IN*/ POINTFIX  *pptfx,
+  /*IN*/ ULONG  cptfx);
+
+WIN32KAPI
+VOID
+DDKAPI
+PATHOBJ_vEnumStart(
+  /*IN*/ PATHOBJ  *ppo);
+
+WIN32KAPI
+VOID
+DDKAPI
+PATHOBJ_vEnumStartClipLines(
+  /*IN*/ PATHOBJ  *ppo,
+  /*IN*/ CLIPOBJ  *pco,
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ LINEATTRS  *pla);
+
+WIN32KAPI
+VOID
+DDKAPI
+PATHOBJ_vGetBounds(
+  /*IN*/ PATHOBJ  *ppo,
+
+  /*OUT*/ PRECTFX  prectfx);
+
+WIN32KAPI
+BOOL
+DDKAPI
+STROBJ_bEnum(
+  /*IN*/ STROBJ  *pstro,
+
+  /*OUT*/ ULONG  *pc,
+
+  /*OUT*/ PGLYPHPOS  *ppgpos);
+
+WIN32KAPI
+BOOL
+DDKAPI
+STROBJ_bEnumPositionsOnly(
+  /*IN*/ STROBJ  *pstro,
+
+  /*OUT*/ ULONG  *pc,
+
+  /*OUT*/ PGLYPHPOS  *ppgpos);
+
+WIN32KAPI
+BOOL
+DDKAPI
+STROBJ_bGetAdvanceWidths(
+  /*IN*/ STROBJ  *pso,
+  /*IN*/ ULONG  iFirst,
+  /*IN*/ ULONG  c,
+
+  /*OUT*/ POINTQF  *pptqD);
+
+WIN32KAPI
+DWORD
+DDKAPI
+STROBJ_dwGetCodePage(
+  /*IN*/ STROBJ  *pstro);
+
+WIN32KAPI
+FIX
+DDKAPI
+STROBJ_fxBreakExtra(
+  /*IN*/ STROBJ  *pstro);
+
+WIN32KAPI
+FIX
+DDKAPI
+STROBJ_fxCharacterExtra(
+  /*IN*/ STROBJ  *pstro);
+
+WIN32KAPI
+VOID
+DDKAPI
+STROBJ_vEnumStart(
+  /*IN*/ STROBJ  *pstro);
+
+WIN32KAPI
+VOID
+DDKAPI
+VidMemFree(
+  /*IN*/ LPVMEMHEAP  pvmh,
+  /*IN*/ FLATPTR  ptr);
+
+WIN32KAPI
+BOOL
+DDKAPI
+WNDOBJ_bEnum(
+  /*IN*/ WNDOBJ  *pwo,
+  /*IN*/ ULONG  cj,
+
+  /*OUT*/ ULONG  *pul);
+
+WIN32KAPI
+ULONG
+DDKAPI
+WNDOBJ_cEnumStart(
+  /*IN*/ WNDOBJ  *pwo,
+  /*IN*/ ULONG  iType,
+  /*IN*/ ULONG  iDirection,
+  /*IN*/ ULONG  cLimit);
+
+WIN32KAPI
+VOID
+DDKAPI
+WNDOBJ_vSetConsumer(
+  /*IN*/ WNDOBJ  *pwo,
+  /*IN*/ PVOID  pvConsumer);
+
+/* XFORMOBJ_bApplyXform.iMode constants */
+#define XF_LTOL                           0L
+#define XF_INV_LTOL                       1L
+#define XF_LTOFX                          2L
+#define XF_INV_FXTOL                      3L
+
+WIN32KAPI
+BOOL
+DDKAPI
+XFORMOBJ_bApplyXform(
+  /*IN*/ XFORMOBJ  *pxo,
+  /*IN*/ ULONG  iMode,
+  /*IN*/ ULONG  cPoints,
+  /*IN*/ PVOID  pvIn,
+
+  /*OUT*/ PVOID  pvOut);
+
+WIN32KAPI
+ULONG
+DDKAPI
+XFORMOBJ_iGetFloatObjXform(
+  /*IN*/ XFORMOBJ  *pxo,
+
+  /*OUT*/ FLOATOBJ_XFORM  *pxfo);
+
+WIN32KAPI
+ULONG
+DDKAPI
+XFORMOBJ_iGetXform(
+  /*IN*/ XFORMOBJ  *pxo,
+
+  /*OUT*/ XFORML  *pxform);
+
+/* XLATEOBJ_cGetPalette.iPal constants */
+#define XO_SRCPALETTE                     1
+#define XO_DESTPALETTE                    2
+#define XO_DESTDCPALETTE                  3
+#define XO_SRCBITFIELDS                   4
+#define XO_DESTBITFIELDS                  5
+
+WIN32KAPI
+ULONG
+DDKAPI
+XLATEOBJ_cGetPalette(
+  /*IN*/ XLATEOBJ  *pxlo,
+  /*IN*/ ULONG  iPal,
+  /*IN*/ ULONG  cPal,
+
+  /*OUT*/ ULONG  *pPal);
+
+WIN32KAPI
+HANDLE
+DDKAPI
+XLATEOBJ_hGetColorTransform(
+  /*IN*/ XLATEOBJ  *pxlo);
+
+WIN32KAPI
+ULONG
+DDKAPI
+XLATEOBJ_iXlate(
+  /*IN*/ XLATEOBJ  *pxlo,
+  /*IN*/ ULONG  iColor);
+
+WIN32KAPI
+ULONG*
+DDKAPI
+XLATEOBJ_piVector(
+  /*IN*/ XLATEOBJ  *pxlo);
+
+
+
+/* Graphics Driver Functions */
+
+BOOL
+DDKAPI
+DrvAlphaBlend(
+  /*IN*/ SURFOBJ  *psoDest,
+  /*IN*/ SURFOBJ  *psoSrc,
+  /*IN*/ CLIPOBJ  *pco,
+  /*IN*/ XLATEOBJ  *pxlo,
+  /*IN*/ RECTL  *prclDest,
+  /*IN*/ RECTL  *prclSrc,
+  /*IN*/ BLENDOBJ  *pBlendObj);
+
+BOOL
+DDKAPI
+DrvAssertMode(
+  /*IN*/ DHPDEV  dhpdev,
+  /*IN*/ BOOL  bEnable);
+
+BOOL
+DDKAPI
+DrvBitBlt(
+  /*IN*/ SURFOBJ  *psoTrg,
+  /*IN*/ SURFOBJ  *psoSrc,
+  /*IN*/ SURFOBJ  *psoMask,
+  /*IN*/ CLIPOBJ  *pco,
+  /*IN*/ XLATEOBJ  *pxlo,
+  /*IN*/ RECTL  *prclTrg,
+  /*IN*/ POINTL  *pptlSrc,
+  /*IN*/ POINTL  *pptlMask,
+  /*IN*/ BRUSHOBJ  *pbo,
+  /*IN*/ POINTL  *pptlBrush,
+  /*IN*/ ROP4  rop4);
+
+VOID
+DDKAPI
+DrvCompletePDEV(
+  /*IN*/ DHPDEV  dhpdev,
+  /*IN*/ HDEV  hdev);
+
+BOOL
+DDKAPI
+DrvCopyBits(
+  /*IN*/ SURFOBJ  *psoDest,
+  /*IN*/ SURFOBJ  *psoSrc,
+  /*IN*/ CLIPOBJ  *pco,
+  /*IN*/ XLATEOBJ  *pxlo,
+  /*IN*/ RECTL  *prclDest,
+  /*IN*/ POINTL  *pptlSrc);
+
+HBITMAP
+DDKAPI
+DrvCreateDeviceBitmap(
+  /*IN*/ DHPDEV  dhpdev,
+  /*IN*/ SIZEL  sizl,
+  /*IN*/ ULONG  iFormat);
+
+VOID
+DDKAPI
+DrvDeleteDeviceBitmap(
+  /*IN*/ DHSURF  dhsurf);
+
+HBITMAP
+DDKAPI
+DrvDeriveSurface(
+  DD_DIRECTDRAW_GLOBAL  *pDirectDraw,
+  DD_SURFACE_LOCAL  *pSurface);
+
+LONG
+DDKAPI
+DrvDescribePixelFormat(
+  /*IN*/ DHPDEV  dhpdev,
+  /*IN*/ LONG  iPixelFormat,
+  /*IN*/ ULONG  cjpfd,
+
+  /*OUT*/ PIXELFORMATDESCRIPTOR  *ppfd);
+
+VOID
+DDKAPI
+DrvDestroyFont(
+  /*IN*/ FONTOBJ  *pfo);
+
+VOID
+DDKAPI
+DrvDisableDriver(
+  VOID);
+
+VOID
+DDKAPI
+DrvDisablePDEV(
+  /*IN*/ DHPDEV  dhpdev);
+
+VOID
+DDKAPI
+DrvDisableSurface(
+  /*IN*/ DHPDEV  dhpdev);
+
+#define DM_DEFAULT                        0x00000001
+#define DM_MONOCHROME                     0x00000002
+
+ULONG
+DDKAPI
+DrvDitherColor(
+  /*IN*/ DHPDEV  dhpdev,
+  /*IN*/ ULONG  iMode,
+  /*IN*/ ULONG  rgb,
+
+  /*OUT*/ ULONG  *pul);
+
+ULONG
+DDKAPI
+DrvDrawEscape(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ ULONG  iEsc,
+  /*IN*/ CLIPOBJ  *pco,
+  /*IN*/ RECTL  *prcl,
+  /*IN*/ ULONG  cjIn,
+  /*IN*/ PVOID  pvIn);
+
+BOOL
+DDKAPI
+DrvEnableDriver(
+  /*IN*/ ULONG  iEngineVersion,
+  /*IN*/ ULONG  cj,
+
+  /*OUT*/ DRVENABLEDATA  *pded);
+
+DHPDEV
+DDKAPI
+DrvEnablePDEV(
+  /*IN*/ DEVMODEW  *pdm,
+  /*IN*/ LPWSTR  pwszLogAddress,
+  /*IN*/ ULONG  cPat,
+
+  /*OUT*/ HSURF  *phsurfPatterns,
+  /*IN*/ ULONG  cjCaps,
+
+  /*OUT*/ ULONG  *pdevcaps,
+  /*IN*/ ULONG  cjDevInfo,
+
+  /*OUT*/ DEVINFO  *pdi,
+  /*IN*/ HDEV  hdev,
+  /*IN*/ LPWSTR  pwszDeviceName,
+  /*IN*/ HANDLE  hDriver);
+
+HSURF
+DDKAPI
+DrvEnableSurface(
+  /*IN*/ DHPDEV  dhpdev);
+
+/* DrvEndDoc.fl constants */
+#define ED_ABORTDOC                       0x00000001
+
+BOOL
+DDKAPI
+DrvEndDoc(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ FLONG  fl);
+
+ULONG
+DDKAPI
+DrvEscape(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ ULONG  iEsc,
+  /*IN*/ ULONG  cjIn,
+  /*IN*/ PVOID  pvIn,
+  /*IN*/ ULONG  cjOut,
+
+  /*OUT*/ PVOID  pvOut);
+
+BOOL
+DDKAPI
+DrvFillPath(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ PATHOBJ  *ppo,
+  /*IN*/ CLIPOBJ  *pco,
+  /*IN*/ BRUSHOBJ  *pbo,
+  /*IN*/ POINTL  *pptlBrushOrg,
+  /*IN*/ MIX  mix,
+  /*IN*/ FLONG  flOptions);
+
+ULONG
+DDKAPI
+DrvFontManagement(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ FONTOBJ  *pfo,
+  /*IN*/ ULONG  iMode,
+  /*IN*/ ULONG  cjIn,
+  /*IN*/ PVOID  pvIn,
+  /*IN*/ ULONG  cjOut,
+
+  /*OUT*/ PVOID  pvOut);
+
+VOID
+DDKAPI
+DrvFree(
+  /*IN*/ PVOID  pv,
+  /*IN*/ ULONG_PTR  id);
+
+/* DrvGetGlyphMode return values */
+#define FO_HGLYPHS                        0L
+#define FO_GLYPHBITS                      1L
+#define FO_PATHOBJ                        2L
+
+ULONG
+DDKAPI
+DrvGetGlyphMode(
+  /*IN*/ DHPDEV  dhpdev,
+  /*IN*/ FONTOBJ  *pfo);
+
+ULONG
+DDKAPI
+DrvGetModes(
+  /*IN*/ HANDLE  hDriver,
+  /*IN*/ ULONG  cjSize,
+
+  /*OUT*/ DEVMODEW  *pdm);
+
+PVOID
+DDKAPI
+DrvGetTrueTypeFile(
+  /*IN*/ ULONG_PTR  iFile,
+  /*IN*/ ULONG  *pcj);
+
+BOOL
+DDKAPI
+DrvGradientFill(
+  /*IN*/ SURFOBJ  *psoDest,
+  /*IN*/ CLIPOBJ  *pco,
+  /*IN*/ XLATEOBJ  *pxlo,
+  /*IN*/ TRIVERTEX  *pVertex,
+  /*IN*/ ULONG  nVertex,
+  /*IN*/ PVOID  pMesh,
+  /*IN*/ ULONG  nMesh,
+  /*IN*/ RECTL  *prclExtents,
+  /*IN*/ POINTL  *pptlDitherOrg,
+  /*IN*/ ULONG  ulMode);
+
+BOOL
+DDKAPI
+DrvIcmCheckBitmapBits(
+  /*IN*/ DHPDEV  dhpdev,
+  /*IN*/ HANDLE  hColorTransform,
+  /*IN*/ SURFOBJ  *pso,
+
+  /*OUT*/ PBYTE  paResults);
+
+HANDLE
+DDKAPI
+DrvIcmCreateColorTransform(
+  /*IN*/ DHPDEV  dhpdev,
+  /*IN*/ LPLOGCOLORSPACEW  pLogColorSpace,
+  /*IN*/ PVOID  pvSourceProfile,
+  /*IN*/ ULONG  cjSourceProfile,
+  /*IN*/ PVOID  pvDestProfile,
+  /*IN*/ ULONG  cjDestProfile,
+  /*IN*/ PVOID  pvTargetProfile,
+  /*IN*/ ULONG  cjTargetProfile,
+  /*IN*/ DWORD  dwReserved);
+
+BOOL
+DDKAPI
+DrvIcmDeleteColorTransform(
+  /*IN*/ DHPDEV  dhpdev,
+  /*IN*/ HANDLE  hcmXform);
+
+/* DrvIcmSetDeviceGammaRamp.iFormat constants */
+#define IGRF_RGB_256BYTES                 0x00000000
+#define IGRF_RGB_256WORDS                 0x00000001
+
+BOOL
+DDKAPI
+DrvIcmSetDeviceGammaRamp(
+  /*IN*/ DHPDEV  dhpdev,
+  /*IN*/ ULONG  iFormat,
+  /*IN*/ LPVOID  lpRamp);
+
+BOOL
+DDKAPI
+DrvLineTo(
+  SURFOBJ  *pso,
+  CLIPOBJ  *pco,
+  BRUSHOBJ  *pbo,
+  LONG  x1,
+  LONG  y1,
+  LONG  x2,
+  LONG  y2,
+  RECTL  *prclBounds,
+  MIX  mix);
+
+ULONG_PTR
+DDKAPI
+DrvLoadFontFile(
+  ULONG  cFiles,
+  ULONG_PTR  *piFile,
+  PVOID  *ppvView,
+  ULONG  *pcjView,
+  DESIGNVECTOR  *pdv,
+  ULONG  ulLangID,
+  ULONG  ulFastCheckSum);
+
+VOID
+DDKAPI
+DrvMovePointer(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ LONG  x,
+  /*IN*/ LONG  y,
+  /*IN*/ RECTL  *prcl);
+
+BOOL
+DDKAPI
+DrvNextBand(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ POINTL  *pptl);
+
+VOID
+DDKAPI
+DrvNotify(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ ULONG  iType,
+  /*IN*/ PVOID  pvData);
+
+BOOL
+DDKAPI
+DrvOffset(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ LONG  x,
+  /*IN*/ LONG  y,
+  /*IN*/ FLONG  flReserved);
+
+BOOL
+DDKAPI
+DrvPaint(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ CLIPOBJ  *pco,
+  /*IN*/ BRUSHOBJ  *pbo,
+  /*IN*/ POINTL  *pptlBrushOrg,
+  /*IN*/ MIX  mix);
+
+BOOL
+DDKAPI
+DrvPlgBlt(
+  /*IN*/ SURFOBJ  *psoTrg,
+  /*IN*/ SURFOBJ  *psoSrc,
+  /*IN*/ SURFOBJ  *psoMsk,
+  /*IN*/ CLIPOBJ  *pco,
+  /*IN*/ XLATEOBJ  *pxlo,
+  /*IN*/ COLORADJUSTMENT  *pca,
+  /*IN*/ POINTL  *pptlBrushOrg,
+  /*IN*/ POINTFIX  *pptfx,
+  /*IN*/ RECTL  *prcl,
+  /*IN*/ POINTL  *pptl,
+  /*IN*/ ULONG  iMode);
+
+/* DrvQueryAdvanceWidths.iMode constants */
+#define QAW_GETWIDTHS                     0
+#define QAW_GETEASYWIDTHS                 1
+
+BOOL
+DDKAPI
+DrvQueryAdvanceWidths(
+  /*IN*/ DHPDEV  dhpdev,
+  /*IN*/ FONTOBJ  *pfo,
+  /*IN*/ ULONG  iMode,
+  /*IN*/ HGLYPH  *phg,
+
+  /*OUT*/ PVOID  pvWidths,
+  /*IN*/ ULONG  cGlyphs);
+
+/* DrvQueryDeviceSupport.iType constants */
+#define QDS_CHECKJPEGFORMAT               0x00000000
+#define QDS_CHECKPNGFORMAT                0x00000001
+
+BOOL
+DDKAPI
+DrvQueryDeviceSupport(
+  SURFOBJ  *pso,
+  XLATEOBJ  *pxlo,
+  XFORMOBJ  *pxo,
+  ULONG  iType,
+  ULONG  cjIn,
+  PVOID  pvIn,
+  ULONG  cjOut,
+  PVOID  pvOut);
+
+/* DrvQueryDriverInfo.dwMode constants */
+#define DRVQUERY_USERMODE                 0x00000001
+
+BOOL
+DDKAPI
+DrvQueryDriverInfo(
+  DWORD  dwMode,
+  PVOID  pBuffer,
+  DWORD  cbBuf,
+  PDWORD  pcbNeeded);
+
+PIFIMETRICS
+DDKAPI
+DrvQueryFont(
+  /*IN*/ DHPDEV  dhpdev,
+  /*IN*/ ULONG_PTR  iFile,
+  /*IN*/ ULONG  iFace,
+  /*IN*/ ULONG_PTR  *pid);
+
+/* DrvQueryFontCaps.pulCaps constants */
+#define QC_OUTLINES                       0x00000001
+#define QC_1BIT                           0x00000002
+#define QC_4BIT                           0x00000004
+
+#define QC_FONTDRIVERCAPS (QC_OUTLINES | QC_1BIT | QC_4BIT)
+
+LONG
+DDKAPI
+DrvQueryFontCaps(
+  /*IN*/ ULONG  culCaps,
+
+  /*OUT*/ ULONG  *pulCaps);
+
+/* DrvQueryFontData.iMode constants */
+#define QFD_GLYPHANDBITMAP                1L
+#define QFD_GLYPHANDOUTLINE               2L
+#define QFD_MAXEXTENTS                    3L
+#define QFD_TT_GLYPHANDBITMAP             4L
+#define QFD_TT_GRAY1_BITMAP               5L
+#define QFD_TT_GRAY2_BITMAP               6L
+#define QFD_TT_GRAY4_BITMAP               8L
+#define QFD_TT_GRAY8_BITMAP               9L
+
+#define QFD_TT_MONO_BITMAP QFD_TT_GRAY1_BITMAP
+
+LONG
+DDKAPI
+DrvQueryFontData(
+  /*IN*/ DHPDEV  dhpdev,
+  /*IN*/ FONTOBJ  *pfo,
+  /*IN*/ ULONG  iMode,
+  /*IN*/ HGLYPH  hg,
+  /*IN OUT*/ GLYPHDATA  *pgd,
+  /*IN OUT*/ PVOID  pv,
+  /*IN*/ ULONG  cjSize);
+
+/* DrvQueryFontFile.ulMode constants */
+#define QFF_DESCRIPTION                   0x00000001
+#define QFF_NUMFACES                      0x00000002
+
+LONG
+DDKAPI
+DrvQueryFontFile(
+  /*IN*/ ULONG_PTR  iFile,
+  /*IN*/ ULONG  ulMode,
+  /*IN*/ ULONG  cjBuf,
+  /*IN*/ ULONG  *pulBuf);
+
+/* DrvQueryFontTree.iMode constants */
+#define QFT_UNICODE                       0L
+#define QFT_LIGATURES                     1L
+#define QFT_KERNPAIRS                     2L
+#define QFT_GLYPHSET                      3L
+
+PVOID
+DDKAPI
+DrvQueryFontTree(
+  /*IN*/ DHPDEV  dhpdev,
+  /*IN*/ ULONG_PTR  iFile,
+  /*IN*/ ULONG  iFace,
+  /*IN*/ ULONG  iMode,
+  /*IN*/ ULONG_PTR  *pid);
+
+PFD_GLYPHATTR
+DDKAPI
+DrvQueryGlyphAttrs(
+  /*IN*/ FONTOBJ  *pfo,
+  /*IN*/ ULONG  iMode);
+
+ULONG
+DDKAPI
+DrvQueryPerBandInfo(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN OUT*/ PERBANDINFO  *pbi);
+
+/* DrvQueryTrueTypeOutline.bMetricsOnly constants */
+#define TTO_METRICS_ONLY                  0x00000001
+#define TTO_QUBICS                        0x00000002
+#define TTO_UNHINTED                      0x00000004
+
+LONG
+DDKAPI
+DrvQueryTrueTypeOutline(
+  /*IN*/ DHPDEV  dhpdev,
+  /*IN*/ FONTOBJ  *pfo,
+  /*IN*/ HGLYPH  hglyph,
+  /*IN*/ BOOL  bMetricsOnly,
+  /*IN*/ GLYPHDATA  *pgldt,
+  /*IN*/ ULONG  cjBuf,
+
+  /*OUT*/ TTPOLYGONHEADER  *ppoly);
+
+LONG
+DDKAPI
+DrvQueryTrueTypeTable(
+  /*IN*/ ULONG_PTR  iFile,
+  /*IN*/ ULONG  ulFont,
+  /*IN*/ ULONG  ulTag,
+  /*IN*/ PTRDIFF  dpStart,
+  /*IN*/ ULONG  cjBuf,
+
+  /*OUT*/ BYTE  *pjBuf,
+
+  /*OUT*/ PBYTE  *ppjTable,
+
+  /*OUT*/ ULONG *pcjTable);
+
+/* DrvRealizeBrush.iHatch constants */
+#define RB_DITHERCOLOR                    0x80000000L
+
+#define HS_DDI_MAX                        6
+
+BOOL
+DDKAPI
+DrvRealizeBrush(
+  /*IN*/ BRUSHOBJ  *pbo,
+  /*IN*/ SURFOBJ  *psoTarget,
+  /*IN*/ SURFOBJ  *psoPattern,
+  /*IN*/ SURFOBJ  *psoMask,
+  /*IN*/ XLATEOBJ  *pxlo,
+  /*IN*/ ULONG  iHatch);
+
+/* DrvResetDevice return values */
+#define DRD_SUCCESS                       0
+#define DRD_ERROR                         1
+
+ULONG
+DDKAPI
+DrvResetDevice(
+  /*IN*/ DHPDEV dhpdev,
+  /*IN*/ PVOID Reserved);
+
+BOOL
+DDKAPI
+DrvResetPDEV(
+  DHPDEV  dhpdevOld,
+  DHPDEV  dhpdevNew);
+
+/* DrvSaveScreenBits.iMode constants */
+#define SS_SAVE                           0x00000000
+#define SS_RESTORE                        0x00000001
+#define SS_FREE                           0x00000002
+
+ULONG_PTR
+DDKAPI
+DrvSaveScreenBits(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ ULONG  iMode,
+  /*IN*/ ULONG_PTR  ident,
+  /*IN*/ RECTL  *prcl);
+
+BOOL
+DDKAPI
+DrvSendPage(
+  /*IN*/ SURFOBJ  *pso);
+
+BOOL
+DDKAPI
+DrvSetPalette(
+  /*IN*/ DHPDEV  dhpdev,
+  /*IN*/ PALOBJ  *ppalo,
+  /*IN*/ FLONG  fl,
+  /*IN*/ ULONG  iStart,
+  /*IN*/ ULONG  cColors);
+
+BOOL
+DDKAPI
+DrvSetPixelFormat(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ LONG  iPixelFormat,
+  /*IN*/ HWND  hwnd);
+
+/* DrvSetPointerShape return values */
+#define SPS_ERROR                         0x00000000
+#define SPS_DECLINE                       0x00000001
+#define SPS_ACCEPT_NOEXCLUDE              0x00000002
+#define SPS_ACCEPT_EXCLUDE                0x00000003
+#define SPS_ACCEPT_SYNCHRONOUS            0x00000004
+
+/* DrvSetPointerShape.fl constants */
+#define SPS_CHANGE                        0x00000001L
+#define SPS_ASYNCCHANGE                   0x00000002L
+#define SPS_ANIMATESTART                  0x00000004L
+#define SPS_ANIMATEUPDATE                 0x00000008L
+#define SPS_ALPHA                         0x00000010L
+#define SPS_LENGTHMASK                    0x00000F00L
+#define SPS_FREQMASK                      0x000FF000L
+
+ULONG
+DDKAPI
+DrvSetPointerShape(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ SURFOBJ  *psoMask,
+  /*IN*/ SURFOBJ  *psoColor,
+  /*IN*/ XLATEOBJ  *pxlo,
+  /*IN*/ LONG  xHot,
+  /*IN*/ LONG  yHot,
+  /*IN*/ LONG  x,
+  /*IN*/ LONG  y,
+  /*IN*/ RECTL  *prcl,
+  /*IN*/ FLONG  fl);
+
+BOOL
+DDKAPI
+DrvStartBanding(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ POINTL  *pptl);
+
+BOOL
+DDKAPI
+DrvStartDoc(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ LPWSTR  pwszDocName,
+  /*IN*/ DWORD  dwJobId);
+
+BOOL
+DDKAPI
+DrvStartPage(
+  /*IN*/ SURFOBJ  *pso);
+
+BOOL
+DDKAPI
+DrvStretchBlt(
+  /*IN*/ SURFOBJ  *psoDest,
+  /*IN*/ SURFOBJ  *psoSrc,
+  /*IN*/ SURFOBJ  *psoMask,
+  /*IN*/ CLIPOBJ  *pco,
+  /*IN*/ XLATEOBJ  *pxlo,
+  /*IN*/ COLORADJUSTMENT  *pca,
+  /*IN*/ POINTL  *pptlHTOrg,
+  /*IN*/ RECTL  *prclDest,
+  /*IN*/ RECTL  *prclSrc,
+  /*IN*/ POINTL  *pptlMask,
+  /*IN*/ ULONG  iMode);
+
+BOOL
+DDKAPI
+DrvStretchBltROP(
+  /*IN*/ SURFOBJ  *psoDest,
+  /*IN*/ SURFOBJ  *psoSrc,
+  /*IN*/ SURFOBJ  *psoMask,
+  /*IN*/ CLIPOBJ  *pco,
+  /*IN*/ XLATEOBJ  *pxlo,
+  /*IN*/ COLORADJUSTMENT  *pca,
+  /*IN*/ POINTL  *pptlHTOrg,
+  /*IN*/ RECTL  *prclDest,
+  /*IN*/ RECTL  *prclSrc,
+  /*IN*/ POINTL  *pptlMask,
+  /*IN*/ ULONG  iMode,
+  /*IN*/ BRUSHOBJ  *pbo,
+  /*IN*/ DWORD  rop4);
+
+BOOL
+DDKAPI
+DrvStrokeAndFillPath(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ PATHOBJ  *ppo,
+  /*IN*/ CLIPOBJ  *pco,
+  /*IN*/ XFORMOBJ  *pxo,
+  /*IN*/ BRUSHOBJ  *pboStroke,
+  /*IN*/ LINEATTRS  *plineattrs,
+  /*IN*/ BRUSHOBJ  *pboFill,
+  /*IN*/ POINTL  *pptlBrushOrg,
+  /*IN*/ MIX  mixFill,
+  /*IN*/ FLONG  flOptions);
+
+BOOL
+DDKAPI
+DrvStrokePath(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ PATHOBJ  *ppo,
+  /*IN*/ CLIPOBJ  *pco,
+  /*IN*/ XFORMOBJ  *pxo,
+  /*IN*/ BRUSHOBJ  *pbo,
+  /*IN*/ POINTL  *pptlBrushOrg,
+  /*IN*/ LINEATTRS  *plineattrs,
+  /*IN*/ MIX  mix);
+
+BOOL
+DDKAPI
+DrvSwapBuffers(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ WNDOBJ  *pwo);
+
+VOID
+DDKAPI
+DrvSynchronize(
+  /*IN*/ DHPDEV  dhpdev,
+  /*IN*/ RECTL  *prcl);
+
+/* DrvSynchronizeSurface.fl constants */
+#define DSS_TIMER_EVENT                   0x00000001
+#define DSS_FLUSH_EVENT                   0x00000002
+
+VOID
+DDKAPI
+DrvSynchronizeSurface(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ RECTL  *prcl,
+  /*IN*/ FLONG  fl);
+
+BOOL
+DDKAPI
+DrvTextOut(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ STROBJ  *pstro,
+  /*IN*/ FONTOBJ  *pfo,
+  /*IN*/ CLIPOBJ  *pco,
+  /*IN*/ RECTL  *prclExtra,
+  /*IN*/ RECTL  *prclOpaque,
+  /*IN*/ BRUSHOBJ  *pboFore,
+  /*IN*/ BRUSHOBJ  *pboOpaque,
+  /*IN*/ POINTL  *pptlOrg,
+  /*IN*/ MIX  mix);
+
+BOOL
+DDKAPI
+DrvTransparentBlt(
+  /*IN*/ SURFOBJ  *psoDst,
+  /*IN*/ SURFOBJ  *psoSrc,
+  /*IN*/ CLIPOBJ  *pco,
+  /*IN*/ XLATEOBJ  *pxlo,
+  /*IN*/ RECTL  *prclDst,
+  /*IN*/ RECTL  *prclSrc,
+  /*IN*/ ULONG  iTransColor,
+  /*IN*/ ULONG  ulReserved);
+
+BOOL
+DDKAPI
+DrvUnloadFontFile(
+  /*IN*/ ULONG_PTR  iFile);
+
+/* WNDOBJCHANGEPROC.fl constants */
+#define WOC_RGN_CLIENT_DELTA              0x00000001
+#define WOC_RGN_CLIENT                    0x00000002
+#define WOC_RGN_SURFACE_DELTA             0x00000004
+#define WOC_RGN_SURFACE                   0x00000008
+#define WOC_CHANGED                       0x00000010
+#define WOC_DELETE                        0x00000020
+#define WOC_DRAWN                         0x00000040
+#define WOC_SPRITE_OVERLAP                0x00000080
+#define WOC_SPRITE_NO_OVERLAP             0x00000100
+
+typedef VOID DDKAPI
+(CALLBACK * WNDOBJCHANGEPROC)(
+  WNDOBJ  *pwo,
+  FLONG  fl);
+
+
+typedef BOOL DDKAPI
+(*PFN_DrvAlphaBlend)(
+  /*IN*/ SURFOBJ  *psoDest,
+  /*IN*/ SURFOBJ  *psoSrc,
+  /*IN*/ CLIPOBJ  *pco,
+  /*IN*/ XLATEOBJ  *pxlo,
+  /*IN*/ RECTL  *prclDest,
+  /*IN*/ RECTL  *prclSrc,
+  /*IN*/ BLENDOBJ  *pBlendObj);
+
+typedef BOOL DDKAPI
+(*PFN_DrvAssertMode)(
+  /*IN*/ DHPDEV  dhpdev,
+  /*IN*/ BOOL  bEnable);
+
+typedef BOOL DDKAPI
+(*PFN_DrvBitBlt)(
+  /*IN*/ SURFOBJ  *psoTrg,
+  /*IN*/ SURFOBJ  *psoSrc,
+  /*IN*/ SURFOBJ  *psoMask,
+  /*IN*/ CLIPOBJ  *pco,
+  /*IN*/ XLATEOBJ  *pxlo,
+  /*IN*/ RECTL  *prclTrg,
+  /*IN*/ POINTL  *pptlSrc,
+  /*IN*/ POINTL  *pptlMask,
+  /*IN*/ BRUSHOBJ  *pbo,
+  /*IN*/ POINTL  *pptlBrush,
+  /*IN*/ ROP4  rop4);
+
+typedef VOID DDKAPI
+(*PFN_DrvCompletePDEV)(
+  /*IN*/ DHPDEV  dhpdev,
+  /*IN*/ HDEV  hdev);
+
+typedef BOOL DDKAPI
+(*PFN_DrvCopyBits)(
+  /*IN*/ SURFOBJ  *psoDest,
+  /*IN*/ SURFOBJ  *psoSrc,
+  /*IN*/ CLIPOBJ  *pco,
+  /*IN*/ XLATEOBJ  *pxlo,
+  /*IN*/ RECTL  *prclDest,
+  /*IN*/ POINTL  *pptlSrc);
+
+typedef HBITMAP DDKAPI
+(*PFN_DrvCreateDeviceBitmap)(
+  /*IN*/ DHPDEV  dhpdev,
+  /*IN*/ SIZEL  sizl,
+  /*IN*/ ULONG  iFormat);
+
+typedef VOID DDKAPI
+(*PFN_DrvDeleteDeviceBitmap)(
+  /*IN*/ DHSURF  dhsurf);
+
+typedef HBITMAP DDKAPI
+(*PFN_DrvDeriveSurface)(
+  DD_DIRECTDRAW_GLOBAL  *pDirectDraw,
+  DD_SURFACE_LOCAL  *pSurface);
+
+typedef LONG DDKAPI
+(*PFN_DrvDescribePixelFormat)(
+  /*IN*/ DHPDEV  dhpdev,
+  /*IN*/ LONG  iPixelFormat,
+  /*IN*/ ULONG  cjpfd,
+
+  /*OUT*/ PIXELFORMATDESCRIPTOR  *ppfd);
+
+typedef VOID DDKAPI
+(*PFN_DrvDestroyFont)(
+  /*IN*/ FONTOBJ  *pfo);
+
+typedef VOID DDKAPI
+(*PFN_DrvDisableDriver)(
+  VOID);
+
+typedef VOID DDKAPI
+(*PFN_DrvDisablePDEV)(
+  /*IN*/ DHPDEV  dhpdev);
+
+typedef VOID DDKAPI
+(*PFN_DrvDisableSurface)(
+  /*IN*/ DHPDEV  dhpdev);
+
+typedef ULONG DDKAPI
+(*PFN_DrvDitherColor)(
+  /*IN*/ DHPDEV  dhpdev,
+  /*IN*/ ULONG  iMode,
+  /*IN*/ ULONG  rgb,
+
+  /*OUT*/ ULONG  *pul);
+
+typedef ULONG DDKAPI
+(*PFN_DrvDrawEscape)(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ ULONG  iEsc,
+  /*IN*/ CLIPOBJ  *pco,
+  /*IN*/ RECTL  *prcl,
+  /*IN*/ ULONG  cjIn,
+  /*IN*/ PVOID  pvIn);
+
+typedef BOOL DDKAPI
+(*PFN_DrvEnableDriver)(
+  /*IN*/ ULONG  iEngineVersion,
+  /*IN*/ ULONG  cj,
+
+  /*OUT*/ DRVENABLEDATA  *pded);
+#if 0
+typedef DHPDEV DDKAPI
+(*PFN_DrvEnablePDEV)(
+  /*IN*/ DEVMODEW  *pdm,
+  /*IN*/ LPWSTR  pwszLogAddress,
+  /*IN*/ ULONG  cPat,
+
+  /*OUT*/ HSURF  *phsurfPatterns,
+  /*IN*/ ULONG  cjCaps,
+
+  /*OUT*/ ULONG  *pdevcaps,
+  /*IN*/ ULONG  cjDevInfo,
+
+  /*OUT*/ DEVINFO  *pdi,
+  /*IN*/ HDEV  hdev,
+  /*IN*/ LPWSTR  pwszDeviceName,
+  /*IN*/ HANDLE  hDriver);
+#endif
+typedef HSURF DDKAPI
+(*PFN_DrvEnableSurface)(
+  /*IN*/ DHPDEV  dhpdev);
+
+typedef BOOL DDKAPI
+(*PFN_DrvEndDoc)(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ FLONG  fl);
+
+typedef ULONG DDKAPI
+(*PFN_DrvEscape)(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ ULONG  iEsc,
+  /*IN*/ ULONG  cjIn,
+  /*IN*/ PVOID  pvIn,
+  /*IN*/ ULONG  cjOut,
+
+  /*OUT*/ PVOID  pvOut);
+
+typedef BOOL DDKAPI
+(*PFN_DrvFillPath)(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ PATHOBJ  *ppo,
+  /*IN*/ CLIPOBJ  *pco,
+  /*IN*/ BRUSHOBJ  *pbo,
+  /*IN*/ POINTL  *pptlBrushOrg,
+  /*IN*/ MIX  mix,
+  /*IN*/ FLONG  flOptions);
+
+typedef ULONG DDKAPI
+(*PFN_DrvFontManagement)(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ FONTOBJ  *pfo,
+  /*IN*/ ULONG  iMode,
+  /*IN*/ ULONG  cjIn,
+  /*IN*/ PVOID  pvIn,
+  /*IN*/ ULONG  cjOut,
+
+  /*OUT*/ PVOID  pvOut);
+
+typedef VOID DDKAPI
+(*PFN_DrvFree)(
+  /*IN*/ PVOID  pv,
+  /*IN*/ ULONG_PTR  id);
+
+typedef ULONG DDKAPI
+(*PFN_DrvGetGlyphMode)(
+  /*IN*/ DHPDEV  dhpdev,
+  /*IN*/ FONTOBJ  *pfo);
+
+typedef ULONG DDKAPI
+(*PFN_DrvGetModes)(
+  /*IN*/ HANDLE  hDriver,
+  /*IN*/ ULONG  cjSize,
+
+  /*OUT*/ DEVMODEW  *pdm);
+
+typedef PVOID DDKAPI
+(*PFN_DrvGetTrueTypeFile)(
+  /*IN*/ ULONG_PTR  iFile,
+  /*IN*/ ULONG  *pcj);
+
+typedef BOOL DDKAPI
+(*PFN_DrvGradientFill)(
+  /*IN*/ SURFOBJ  *psoDest,
+  /*IN*/ CLIPOBJ  *pco,
+  /*IN*/ XLATEOBJ  *pxlo,
+  /*IN*/ TRIVERTEX  *pVertex,
+  /*IN*/ ULONG  nVertex,
+  /*IN*/ PVOID  pMesh,
+  /*IN*/ ULONG  nMesh,
+  /*IN*/ RECTL  *prclExtents,
+  /*IN*/ POINTL  *pptlDitherOrg,
+  /*IN*/ ULONG  ulMode);
+
+typedef BOOL DDKAPI
+(*PFN_DrvIcmCheckBitmapBits)(
+  /*IN*/ DHPDEV  dhpdev,
+  /*IN*/ HANDLE  hColorTransform,
+  /*IN*/ SURFOBJ  *pso,
+
+  /*OUT*/ PBYTE  paResults);
+
+typedef HANDLE DDKAPI
+(*PFN_DrvIcmCreateColorTransform)(
+  /*IN*/ DHPDEV  dhpdev,
+  /*IN*/ LPLOGCOLORSPACEW  pLogColorSpace,
+  /*IN*/ PVOID  pvSourceProfile,
+  /*IN*/ ULONG  cjSourceProfile,
+  /*IN*/ PVOID  pvDestProfile,
+  /*IN*/ ULONG  cjDestProfile,
+  /*IN*/ PVOID  pvTargetProfile,
+  /*IN*/ ULONG  cjTargetProfile,
+  /*IN*/ DWORD  dwReserved);
+
+typedef BOOL DDKAPI
+(*PFN_DrvIcmDeleteColorTransform)(
+  /*IN*/ DHPDEV  dhpdev,
+  /*IN*/ HANDLE  hcmXform);
+
+typedef BOOL DDKAPI
+(*PFN_DrvIcmSetDeviceGammaRamp)(
+  /*IN*/ DHPDEV  dhpdev,
+  /*IN*/ ULONG  iFormat,
+  /*IN*/ LPVOID  lpRamp);
+
+typedef BOOL DDKAPI
+(*PFN_DrvLineTo)(
+  SURFOBJ  *pso,
+  CLIPOBJ  *pco,
+  BRUSHOBJ  *pbo,
+  LONG  x1,
+  LONG  y1,
+  LONG  x2,
+  LONG  y2,
+  RECTL  *prclBounds,
+  MIX  mix);
+
+typedef ULONG_PTR DDKAPI
+(*PFN_DrvLoadFontFile)(
+  ULONG  cFiles,
+  ULONG_PTR  *piFile,
+  PVOID  *ppvView,
+  ULONG  *pcjView,
+  DESIGNVECTOR  *pdv,
+  ULONG  ulLangID,
+  ULONG  ulFastCheckSum);
+
+typedef VOID DDKAPI
+(*PFN_DrvMovePointer)(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ LONG  x,
+  /*IN*/ LONG  y,
+  /*IN*/ RECTL  *prcl);
+
+typedef BOOL DDKAPI
+(*PFN_DrvNextBand)(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ POINTL  *pptl);
+
+typedef VOID DDKAPI
+(*PFN_DrvNotify)(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ ULONG  iType,
+  /*IN*/ PVOID  pvData);
+
+typedef BOOL DDKAPI
+(*PFN_DrvOffset)(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ LONG  x,
+  /*IN*/ LONG  y,
+  /*IN*/ FLONG  flReserved);
+
+typedef BOOL DDKAPI
+(*PFN_DrvPaint)(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ CLIPOBJ  *pco,
+  /*IN*/ BRUSHOBJ  *pbo,
+  /*IN*/ POINTL  *pptlBrushOrg,
+  /*IN*/ MIX  mix);
+
+typedef BOOL DDKAPI
+(*PFN_DrvPlgBlt)(
+  /*IN*/ SURFOBJ  *psoTrg,
+  /*IN*/ SURFOBJ  *psoSrc,
+  /*IN*/ SURFOBJ  *psoMsk,
+  /*IN*/ CLIPOBJ  *pco,
+  /*IN*/ XLATEOBJ  *pxlo,
+  /*IN*/ COLORADJUSTMENT  *pca,
+  /*IN*/ POINTL  *pptlBrushOrg,
+  /*IN*/ POINTFIX  *pptfx,
+  /*IN*/ RECTL  *prcl,
+  /*IN*/ POINTL  *pptl,
+  /*IN*/ ULONG  iMode);
+
+typedef BOOL DDKAPI
+(*PFN_DrvQueryAdvanceWidths)(
+  /*IN*/ DHPDEV  dhpdev,
+  /*IN*/ FONTOBJ  *pfo,
+  /*IN*/ ULONG  iMode,
+  /*IN*/ HGLYPH  *phg,
+
+  /*OUT*/ PVOID  pvWidths,
+  /*IN*/ ULONG  cGlyphs);
+
+typedef BOOL DDKAPI
+(*PFN_DrvQueryDeviceSupport)(
+  SURFOBJ  *pso,
+  XLATEOBJ  *pxlo,
+  XFORMOBJ  *pxo,
+  ULONG  iType,
+  ULONG  cjIn,
+  PVOID  pvIn,
+  ULONG  cjOut,
+  PVOID  pvOut);
+
+typedef BOOL DDKAPI
+(*PFN_DrvQueryDriverInfo)(
+  DWORD  dwMode,
+  PVOID  pBuffer,
+  DWORD  cbBuf,
+  PDWORD  pcbNeeded);
+
+typedef PIFIMETRICS DDKAPI
+(*PFN_DrvQueryFont)(
+  /*IN*/ DHPDEV  dhpdev,
+  /*IN*/ ULONG_PTR  iFile,
+  /*IN*/ ULONG  iFace,
+  /*IN*/ ULONG_PTR  *pid);
+
+typedef LONG DDKAPI
+(*PFN_DrvQueryFontCaps)(
+  /*IN*/ ULONG  culCaps,
+
+  /*OUT*/ ULONG  *pulCaps);
+
+typedef LONG DDKAPI
+(*PFN_DrvQueryFontData)(
+  /*IN*/ DHPDEV  dhpdev,
+  /*IN*/ FONTOBJ  *pfo,
+  /*IN*/ ULONG  iMode,
+  /*IN*/ HGLYPH  hg,
+  /*IN OUT*/ GLYPHDATA  *pgd,
+  /*IN OUT*/ PVOID  pv,
+  /*IN*/ ULONG  cjSize);
+
+typedef LONG DDKAPI
+(*PFN_DrvQueryFontFile)(
+  /*IN*/ ULONG_PTR  iFile,
+  /*IN*/ ULONG  ulMode,
+  /*IN*/ ULONG  cjBuf,
+  /*IN*/ ULONG  *pulBuf);
+
+typedef PVOID DDKAPI
+(*PFN_DrvQueryFontTree)(
+  /*IN*/ DHPDEV  dhpdev,
+  /*IN*/ ULONG_PTR  iFile,
+  /*IN*/ ULONG  iFace,
+  /*IN*/ ULONG  iMode,
+  /*IN*/ ULONG_PTR  *pid);
+
+typedef PFD_GLYPHATTR DDKAPI
+(*PFN_DrvQueryGlyphAttrs)(
+  /*IN*/ FONTOBJ  *pfo,
+  /*IN*/ ULONG  iMode);
+
+typedef ULONG DDKAPI
+(*PFN_DrvQueryPerBandInfo)(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN OUT*/ PERBANDINFO  *pbi);
+
+typedef LONG DDKAPI
+(*PFN_DrvQueryTrueTypeOutline)(
+  /*IN*/ DHPDEV  dhpdev,
+  /*IN*/ FONTOBJ  *pfo,
+  /*IN*/ HGLYPH  hglyph,
+  /*IN*/ BOOL  bMetricsOnly,
+  /*IN*/ GLYPHDATA  *pgldt,
+  /*IN*/ ULONG  cjBuf,
+  /*OUT*/ TTPOLYGONHEADER  *ppoly);
+
+typedef LONG DDKAPI
+(*PFN_DrvQueryTrueTypeTable)(
+  /*IN*/ ULONG_PTR  iFile,
+  /*IN*/ ULONG  ulFont,
+  /*IN*/ ULONG  ulTag,
+  /*IN*/ PTRDIFF  dpStart,
+  /*IN*/ ULONG  cjBuf,
+  /*OUT*/ BYTE  *pjBuf,
+  /*OUT*/ PBYTE  *ppjTable,
+  /*OUT*/ ULONG *pcjTable);
+
+typedef BOOL DDKAPI
+(*PFN_DrvRealizeBrush)(
+  /*IN*/ BRUSHOBJ  *pbo,
+  /*IN*/ SURFOBJ  *psoTarget,
+  /*IN*/ SURFOBJ  *psoPattern,
+  /*IN*/ SURFOBJ  *psoMask,
+  /*IN*/ XLATEOBJ  *pxlo,
+  /*IN*/ ULONG  iHatch);
+
+typedef ULONG DDKAPI
+(*PFN_DrvResetDevice)(
+  /*IN*/ DHPDEV dhpdev,
+  /*IN*/ PVOID Reserved);
+
+typedef BOOL DDKAPI
+(*PFN_DrvResetPDEV)(
+  DHPDEV  dhpdevOld,
+  DHPDEV  dhpdevNew);
+
+typedef ULONG_PTR DDKAPI
+(*PFN_DrvSaveScreenBits)(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ ULONG  iMode,
+  /*IN*/ ULONG_PTR  ident,
+  /*IN*/ RECTL  *prcl);
+
+typedef BOOL DDKAPI
+(*PFN_DrvSendPage)(
+  /*IN*/ SURFOBJ  *pso);
+
+typedef BOOL DDKAPI
+(*PFN_DrvSetPalette)(
+  /*IN*/ DHPDEV  dhpdev,
+  /*IN*/ PALOBJ  *ppalo,
+  /*IN*/ FLONG  fl,
+  /*IN*/ ULONG  iStart,
+  /*IN*/ ULONG  cColors);
+
+typedef BOOL DDKAPI
+(*PFN_DrvSetPixelFormat)(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ LONG  iPixelFormat,
+  /*IN*/ HWND  hwnd);
+
+typedef ULONG DDKAPI
+(*PFN_DrvSetPointerShape)(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ SURFOBJ  *psoMask,
+  /*IN*/ SURFOBJ  *psoColor,
+  /*IN*/ XLATEOBJ  *pxlo,
+  /*IN*/ LONG  xHot,
+  /*IN*/ LONG  yHot,
+  /*IN*/ LONG  x,
+  /*IN*/ LONG  y,
+  /*IN*/ RECTL  *prcl,
+  /*IN*/ FLONG  fl);
+
+typedef BOOL DDKAPI
+(*PFN_DrvStartBanding)(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ POINTL  *pptl);
+
+typedef BOOL DDKAPI
+(*PFN_DrvStartDoc)(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ LPWSTR  pwszDocName,
+  /*IN*/ DWORD  dwJobId);
+
+typedef BOOL DDKAPI
+(*PFN_DrvStartPage)(
+  /*IN*/ SURFOBJ  *pso);
+
+typedef BOOL DDKAPI
+(*PFN_DrvStretchBlt)(
+  /*IN*/ SURFOBJ  *psoDest,
+  /*IN*/ SURFOBJ  *psoSrc,
+  /*IN*/ SURFOBJ  *psoMask,
+  /*IN*/ CLIPOBJ  *pco,
+  /*IN*/ XLATEOBJ  *pxlo,
+  /*IN*/ COLORADJUSTMENT  *pca,
+  /*IN*/ POINTL  *pptlHTOrg,
+  /*IN*/ RECTL  *prclDest,
+  /*IN*/ RECTL  *prclSrc,
+  /*IN*/ POINTL  *pptlMask,
+  /*IN*/ ULONG  iMode);
+
+typedef BOOL DDKAPI
+(*PFN_DrvStretchBltROP)(
+  /*IN*/ SURFOBJ  *psoDest,
+  /*IN*/ SURFOBJ  *psoSrc,
+  /*IN*/ SURFOBJ  *psoMask,
+  /*IN*/ CLIPOBJ  *pco,
+  /*IN*/ XLATEOBJ  *pxlo,
+  /*IN*/ COLORADJUSTMENT  *pca,
+  /*IN*/ POINTL  *pptlHTOrg,
+  /*IN*/ RECTL  *prclDest,
+  /*IN*/ RECTL  *prclSrc,
+  /*IN*/ POINTL  *pptlMask,
+  /*IN*/ ULONG  iMode,
+  /*IN*/ BRUSHOBJ  *pbo,
+  /*IN*/ DWORD  rop4);
+
+typedef BOOL DDKAPI
+(*PFN_DrvStrokeAndFillPath)(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ PATHOBJ  *ppo,
+  /*IN*/ CLIPOBJ  *pco,
+  /*IN*/ XFORMOBJ  *pxo,
+  /*IN*/ BRUSHOBJ  *pboStroke,
+  /*IN*/ LINEATTRS  *plineattrs,
+  /*IN*/ BRUSHOBJ  *pboFill,
+  /*IN*/ POINTL  *pptlBrushOrg,
+  /*IN*/ MIX  mixFill,
+  /*IN*/ FLONG  flOptions);
+
+typedef BOOL DDKAPI
+(*PFN_DrvStrokePath)(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ PATHOBJ  *ppo,
+  /*IN*/ CLIPOBJ  *pco,
+  /*IN*/ XFORMOBJ  *pxo,
+  /*IN*/ BRUSHOBJ  *pbo,
+  /*IN*/ POINTL  *pptlBrushOrg,
+  /*IN*/ LINEATTRS  *plineattrs,
+  /*IN*/ MIX  mix);
+
+typedef BOOL DDKAPI
+(*PFN_DrvSwapBuffers)(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ WNDOBJ  *pwo);
+
+typedef VOID DDKAPI
+(*PFN_DrvSynchronize)(
+  /*IN*/ DHPDEV  dhpdev,
+  /*IN*/ RECTL  *prcl);
+
+typedef VOID DDKAPI
+(*PFN_DrvSynchronizeSurface)(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ RECTL  *prcl,
+  /*IN*/ FLONG  fl);
+
+typedef BOOL DDKAPI
+(*PFN_DrvTextOut)(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ STROBJ  *pstro,
+  /*IN*/ FONTOBJ  *pfo,
+  /*IN*/ CLIPOBJ  *pco,
+  /*IN*/ RECTL  *prclExtra,
+  /*IN*/ RECTL  *prclOpaque,
+  /*IN*/ BRUSHOBJ  *pboFore,
+  /*IN*/ BRUSHOBJ  *pboOpaque,
+  /*IN*/ POINTL  *pptlOrg,
+  /*IN*/ MIX  mix);
+
+typedef BOOL DDKAPI
+(*PFN_DrvTransparentBlt)(
+  /*IN*/ SURFOBJ  *psoDst,
+  /*IN*/ SURFOBJ  *psoSrc,
+  /*IN*/ CLIPOBJ  *pco,
+  /*IN*/ XLATEOBJ  *pxlo,
+  /*IN*/ RECTL  *prclDst,
+  /*IN*/ RECTL  *prclSrc,
+  /*IN*/ ULONG  iTransColor,
+  /*IN*/ ULONG  ulReserved);
+
+typedef BOOL DDKAPI
+(*PFN_DrvUnloadFontFile)(
+  /*IN*/ ULONG_PTR  iFile);
+
+
+WIN32KAPI
+VOID
+DDKAPI
+DrvDisableDirectDraw(
+  /*IN*/ DHPDEV  dhpdev);
+
+WIN32KAPI
+BOOL
+DDKAPI
+DrvEnableDirectDraw(
+  /*IN*/ DHPDEV  dhpdev,
+  /*OUT*/ DD_CALLBACKS  *pCallBacks,
+  /*OUT*/ DD_SURFACECALLBACKS  *pSurfaceCallBacks,
+  /*OUT*/ DD_PALETTECALLBACKS  *pPaletteCallBacks);
+
+WIN32KAPI
+BOOL
+DDKAPI
+DrvGetDirectDrawInfo(
+  /*IN*/ DHPDEV  dhpdev,
+  /*OUT*/ DD_HALINFO  *pHalInfo,
+  /*OUT*/ DWORD  *pdwNumHeaps,
+  /*OUT*/ VIDEOMEMORY  *pvmList,
+  /*OUT*/ DWORD  *pdwNumFourCCCodes,
+  /*OUT*/ DWORD  *pdwFourCC);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* defined __VIDEO_H */
+
+#endif /* __WINDDI_H */
Index: Daodan/MinGW/include/ddk/winddk.h
===================================================================
--- Daodan/MinGW/include/ddk/winddk.h	(revision 1046)
+++ Daodan/MinGW/include/ddk/winddk.h	(revision 1046)
@@ -0,0 +1,8348 @@
+/*
+ * ddk/winddk.h
+ *
+ * Windows Device Driver Kit -- common elements.
+ *
+ * $Id: winddk.h,v 6d2220f53104 2016/07/21 21:20:34 keithmarshall $
+ *
+ * Written by Casper S. Hornstrup  <chorns@users.sourceforge.net>
+ * Copyright (C) 2002-2004, 2006, 2008-2011, 2015, 2016, MinGW.org Project.
+ *
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice, this permission notice, and the following
+ * disclaimer shall be included in all copies or substantial portions of
+ * the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OF OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ *
+ */
+#ifndef _DDK_WINDDK_H
+#pragma GCC system_header
+
+#if ! (defined _DDK_NTDDK_H || defined __WINIOCTL_H_SOURCED__)
+/* Unless sourced by <winioctl.h>, (which represents only partial inclusion),
+ * <ddk/winddk.h> is subsidiary to <ddk/ntddk.h>, and cannot stand alone.
+ */
+# error "Never include <ddk/winddk.h> directly; use <ddk/ntddk.h> instead."
+#else
+/* We've reached here by a legitimate sequence of header inclusion...
+ */
+# ifndef __WINIOCTL_H_SOURCED__
+ /* ...but it is NOT sourced by <winioctl.h>, so this is full inclusion:
+  * set the repeat inclusion guard, so we will not include it again.
+  */
+#  define _DDK_WINDDK_H
+# endif
+
+#if ! (defined _DDK_WINDDK_H && defined _WINIOCTL_H)
+/* The declarations within this section are common to <ddk/winddk.h> and
+ * to <winioctl.h>, but if BOTH repeat inclusion guards are now defined,
+ * then we've already seen this; there is no need to process it again.
+ */
+#define CTL_CODE(DT,FN,M,A)		(((DT)<<16)|((FN)<<2)|((A)<<14)|(M))
+#define DEVICE_TYPE_FROM_CTL_CODE(C)	(((ULONG)((C) & (0xFFFF0000)) >> 16)
+
+typedef ULONG DEVICE_TYPE;
+enum
+{ FILE_DEVICE_BEEP			= 0x00000001UL,
+  FILE_DEVICE_CD_ROM			= 0x00000002UL,
+  FILE_DEVICE_CD_ROM_FILE_SYSTEM	= 0x00000003UL,
+  FILE_DEVICE_CONTROLLER		= 0x00000004UL,
+  FILE_DEVICE_DATALINK			= 0x00000005UL,
+  FILE_DEVICE_DFS			= 0x00000006UL,
+  FILE_DEVICE_DISK			= 0x00000007UL,
+  FILE_DEVICE_DISK_FILE_SYSTEM		= 0x00000008UL,
+  FILE_DEVICE_FILE_SYSTEM		= 0x00000009UL,
+  FILE_DEVICE_INPORT_PORT		= 0x0000000AUL,
+  FILE_DEVICE_KEYBOARD			= 0x0000000BUL,
+  FILE_DEVICE_MAILSLOT			= 0x0000000CUL,
+  FILE_DEVICE_MIDI_IN			= 0x0000000DUL,
+  FILE_DEVICE_MIDI_OUT			= 0x0000000EUL,
+  FILE_DEVICE_MOUSE			= 0x0000000FUL,
+  FILE_DEVICE_MULTI_UNC_PROVIDER	= 0x00000010UL,
+  FILE_DEVICE_NAMED_PIPE		= 0x00000011UL,
+  FILE_DEVICE_NETWORK			= 0x00000012UL,
+  FILE_DEVICE_NETWORK_BROWSER		= 0x00000013UL,
+  FILE_DEVICE_NETWORK_FILE_SYSTEM	= 0x00000014UL,
+  FILE_DEVICE_NULL			= 0x00000015UL,
+  FILE_DEVICE_PARALLEL_PORT		= 0x00000016UL,
+  FILE_DEVICE_PHYSICAL_NETCARD		= 0x00000017UL,
+  FILE_DEVICE_PRINTER			= 0x00000018UL,
+  FILE_DEVICE_SCANNER			= 0x00000019UL,
+  FILE_DEVICE_SERIAL_MOUSE_PORT 	= 0x0000001AUL,
+  FILE_DEVICE_SERIAL_PORT		= 0x0000001BUL,
+  FILE_DEVICE_SCREEN			= 0x0000001CUL,
+  FILE_DEVICE_SOUND			= 0x0000001DUL,
+  FILE_DEVICE_STREAMS			= 0x0000001EUL,
+  FILE_DEVICE_TAPE			= 0x0000001FUL,
+  FILE_DEVICE_TAPE_FILE_SYSTEM		= 0x00000020UL,
+  FILE_DEVICE_TRANSPORT 		= 0x00000021UL,
+  FILE_DEVICE_UNKNOWN			= 0x00000022UL,
+  FILE_DEVICE_VIDEO			= 0x00000023UL,
+  FILE_DEVICE_VIRTUAL_DISK		= 0x00000024UL,
+  FILE_DEVICE_WAVE_IN			= 0x00000025UL,
+  FILE_DEVICE_WAVE_OUT			= 0x00000026UL,
+  FILE_DEVICE_8042_PORT			= 0x00000027UL,
+  FILE_DEVICE_NETWORK_REDIRECTOR	= 0x00000028UL,
+  FILE_DEVICE_BATTERY			= 0x00000029UL,
+  FILE_DEVICE_BUS_EXTENDER		= 0x0000002AUL,
+  FILE_DEVICE_MODEM			= 0x0000002BUL,
+  FILE_DEVICE_VDM			= 0x0000002CUL,
+  FILE_DEVICE_MASS_STORAGE		= 0x0000002DUL,
+  FILE_DEVICE_SMB			= 0x0000002EUL,
+  FILE_DEVICE_KS			= 0x0000002FUL,
+  FILE_DEVICE_CHANGER			= 0x00000030UL,
+  FILE_DEVICE_SMARTCARD 		= 0x00000031UL,
+  FILE_DEVICE_ACPI			= 0x00000032UL,
+  FILE_DEVICE_DVD			= 0x00000033UL,
+  FILE_DEVICE_FULLSCREEN_VIDEO		= 0x00000034UL,
+  FILE_DEVICE_DFS_FILE_SYSTEM		= 0x00000035UL,
+  FILE_DEVICE_DFS_VOLUME		= 0x00000036UL,
+  FILE_DEVICE_SERENUM			= 0x00000037UL,
+  FILE_DEVICE_TERMSRV			= 0x00000038UL,
+  FILE_DEVICE_KSEC			= 0x00000039UL,
+  FILE_DEVICE_FIPS			= 0x0000003AUL
+};
+
+enum
+{ FILE_ANY_ACCESS			= 0x00000000UL,
+  FILE_SPECIAL_ACCESS			= FILE_ANY_ACCESS,
+  FILE_READ_ACCESS			= 0x00000001UL,
+  FILE_WRITE_ACCESS			= 0x00000002UL
+};
+
+enum
+{ METHOD_BUFFERED			= 0,
+  METHOD_IN_DIRECT			= 1,
+  METHOD_OUT_DIRECT			= 2,
+  METHOD_NEITHER			= 3
+};
+
+/* Some derived convenience macros; Microsoft do not specify these,
+ * but they help to keep the CTL_CODE specifications tidy.
+ */
+#define __FILE_RW_ACCESS		 (FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+#define __FILE_AM_BUFFERED(F,OP)	F(OP, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define __FILE_RD_BUFFERED(F,OP)	F(OP, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define __FILE_RW_BUFFERED(F,OP)	F(OP, METHOD_BUFFERED, __FILE_RW_ACCESS)
+
+typedef
+struct _DRIVE_LAYOUT_INFORMATION_MBR
+/* https://msdn.microsoft.com/en-us/library/windows/hardware/ff552668(v=vs.85).aspx */
+{ ULONG 	 Signature;
+} DRIVE_LAYOUT_INFORMATION_MBR, *PDRIVE_LAYOUT_INFORMATION_MBR;
+
+typedef
+struct _DRIVE_LAYOUT_INFORMATION_GPT
+/* https://msdn.microsoft.com/en-us/library/windows/hardware/ff552664(v=vs.85).aspx */
+{ GUID		 DiskId;
+  LARGE_INTEGER  StartingUsableOffset;
+  LARGE_INTEGER  UsableLength;
+  ULONG		 MaxPartitionCount;
+} DRIVE_LAYOUT_INFORMATION_GPT, *PDRIVE_LAYOUT_INFORMATION_GPT;
+
+typedef
+struct _PARTITION_INFORMATION_MBR
+/* https://msdn.microsoft.com/en-us/library/windows/hardware/ff563767(v=vs.85).aspx */
+{ UCHAR 	PartitionType;
+  BOOLEAN	BootIndicator;
+  BOOLEAN	RecognizedPartition;
+  ULONG 	HiddenSectors;
+} PARTITION_INFORMATION_MBR, *PPARTITION_INFORMATION_MBR;
+
+typedef
+enum _PARTITION_STYLE
+/* https://msdn.microsoft.com/en-us/library/windows/hardware/ff563773(v=vs.85).aspx */
+{ PARTITION_STYLE_MBR		= 0,
+  PARTITION_STYLE_GPT		= 1,
+  PARTITION_STYLE_RAW		= 2
+} PARTITION_STYLE;
+
+typedef
+struct _CREATE_DISK_MBR
+/* https://msdn.microsoft.com/en-us/library/windows/hardware/ff552490(v=vs.85).aspx */
+{ ULONG 	Signature;
+} CREATE_DISK_MBR, *PCREATE_DISK_MBR;
+
+typedef
+struct _CREATE_DISK_GPT
+/* https://msdn.microsoft.com/en-us/library/windows/hardware/ff552486(v=vs.85).aspx */
+{ GUID		DiskId;
+  ULONG 	MaxPartitionCount;
+} CREATE_DISK_GPT, *PCREATE_DISK_GPT;
+
+typedef
+struct _CREATE_DISK
+/* https://msdn.microsoft.com/en-us/library/windows/hardware/ff552490(v=vs.85).aspx */
+{ PARTITION_STYLE	  PartitionStyle;
+  _ANONYMOUS_UNION union
+  { CREATE_DISK_MBR	  Mbr;
+    CREATE_DISK_GPT	  Gpt;
+  } DUMMYUNIONNAME;
+} CREATE_DISK, *PCREATE_DISK;
+
+/* End of _DDK_WINDDK_H and _WINIOCTL_H common declarations.
+ */
+#endif
+#ifdef _DDK_WINDDK_H
+/* Definitions specific to _DDK_WINDDK_H
+ */
+
+_BEGIN_C_DECLS
+
+#define DDKAPI	     __stdcall
+#define DDKFASTAPI   __fastcall
+#define DDKCDECLAPI  __cdecl
+
+#if defined(_NTOSKRNL_)
+# ifndef NTOSAPI
+#  define NTOSAPI DECL_EXPORT
+# endif
+# define DECLARE_INTERNAL_OBJECT(x) typedef struct _##x; typedef struct _##x *P##x;
+# define DECLARE_INTERNAL_OBJECT2(x,y) typedef struct _##x; typedef struct _##x *P##y;
+#else
+# ifndef NTOSAPI
+#  define NTOSAPI DECL_IMPORT
+# endif
+# define DECLARE_INTERNAL_OBJECT(x) struct _##x; typedef struct _##x *P##x;
+# define DECLARE_INTERNAL_OBJECT2(x,y) struct _##x; typedef struct _##x *P##y;
+#endif
+
+#ifndef _NO_W32_PSEUDO_MODIFIERS
+ /* Pseudo modifiers for parameters...
+  *
+  * We don't use these unnecessary defines in the w32api headers. Define
+  * them by default since that is what people expect, but allow users to
+  * avoid the pollution, by defining _NO_W32_PSEUDO_MODIFIERS.
+  */
+# define IN
+# define OUT
+# define OPTIONAL
+# define UNALLIGNED
+#endif
+
+#define CONST const
+#define VOLATILE volatile
+
+#define RESTRICTED_POINTER
+#define POINTER_ALIGNMENT
+
+#ifdef NONAMELESSUNION
+# define _DDK_DUMMYUNION_MEMBER(name) DUMMYUNIONNAME.name
+# define _DDK_DUMMYUNION_N_MEMBER(n, name) DUMMYUNIONNAME##n.name
+#else
+# define _DDK_DUMMYUNION_MEMBER(name) name
+# define _DDK_DUMMYUNION_N_MEMBER(n, name) name
+#endif
+
+/* Forward declarations
+ */
+struct _IRP;
+struct _MDL;
+struct _KAPC;
+struct _KDPC;
+struct _KPCR;
+struct _KPRCB;
+struct _KTSS;
+struct _FILE_OBJECT;
+struct _DMA_ADAPTER;
+struct _DEVICE_OBJECT;
+struct _DRIVER_OBJECT;
+struct _SECTION_OBJECT;
+struct _IO_STATUS_BLOCK;
+struct _DEVICE_DESCRIPTION;
+struct _SCATTER_GATHER_LIST;
+
+DECLARE_INTERNAL_OBJECT(ADAPTER_OBJECT)
+DECLARE_INTERNAL_OBJECT(DMA_ADAPTER)
+DECLARE_INTERNAL_OBJECT(IO_STATUS_BLOCK)
+DECLARE_INTERNAL_OBJECT(SECTION_OBJECT)
+
+#if 1
+/* FIXME: Unknown definitions
+ */
+struct _SET_PARTITION_INFORMATION_EX;
+typedef ULONG WAIT_TYPE;
+typedef HANDLE TRACEHANDLE;
+typedef PVOID PWMILIB_CONTEXT;
+typedef PVOID PSYSCTL_IRP_DISPOSITION;
+typedef ULONG LOGICAL;
+#endif
+
+/* Routines specific to this DDK
+ */
+#define TAG(_a, _b, _c, _d) (ULONG) \
+	(((_a) << 0) + ((_b) << 8) + ((_c) << 16) + ((_d) << 24))
+
+#ifdef __GNUC__
+static __inline__ struct _KPCR * KeGetCurrentKPCR( VOID )
+{
+  ULONG Value;
+
+  __asm__ __volatile__ (
+#if (__GNUC__ >= 3)
+    /* support -masm=intel */
+    "mov{l} {%%fs:0x18, %0|%0, %%fs:0x18}\n\t"
+#else
+    "movl %%fs:0x18, %0\n\t"
+#endif
+     : "=r" (Value)
+     : /* no inputs */
+  );
+  return (struct _KPCR *)(Value);
+}
+
+#elif defined( __WATCOMC__ )
+extern struct _KPCR * KeGetCurrentKPCR( void );
+#pragma aux KeGetCurrentKPCR = \
+  "mov eax, fs:[0x18]" \
+  value [ eax ];
+#endif
+
+/* Simple structures
+ */
+typedef LONG KPRIORITY;
+typedef UCHAR KIRQL, *PKIRQL;
+typedef ULONG_PTR KSPIN_LOCK, *PKSPIN_LOCK;
+typedef ULONG_PTR KAFFINITY, *PKAFFINITY;
+typedef CCHAR KPROCESSOR_MODE;
+
+typedef
+enum _MODE
+{ KernelMode,
+  UserMode,
+  MaximumMode
+} MODE;
+
+
+/* Structures not exposed to drivers
+ */
+typedef struct _IO_TIMER *PIO_TIMER;
+typedef struct _EPROCESS *PEPROCESS;
+typedef struct _ETHREAD *PETHREAD;
+typedef struct _KINTERRUPT *PKINTERRUPT;
+typedef struct _OBJECT_TYPE *POBJECT_TYPE;
+typedef struct _KTHREAD *PKTHREAD, *PRKTHREAD;
+typedef struct _COMPRESSED_DATA_INFO *PCOMPRESSED_DATA_INFO;
+typedef struct _HAL_DISPATCH_TABLE *PHAL_DISPATCH_TABLE;
+typedef struct _HAL_PRIVATE_DISPATCH_TABLE *PHAL_PRIVATE_DISPATCH_TABLE;
+typedef struct _DRIVE_LAYOUT_INFORMATION *PDRIVE_LAYOUT_INFORMATION;
+typedef struct _DRIVE_LAYOUT_INFORMATION_EX *PDRIVE_LAYOUT_INFORMATION_EX;
+
+/* Constants
+ */
+#define	MAXIMUM_PROCESSORS                32
+#define MAXIMUM_WAIT_OBJECTS              64
+
+#define LOW_PRIORITY                      0
+#define LOW_REALTIME_PRIORITY             16
+#define HIGH_PRIORITY                     31
+#define MAXIMUM_PRIORITY                  32
+
+#define FILE_SUPERSEDED                   0x00000000
+#define FILE_OPENED                       0x00000001
+#define FILE_CREATED                      0x00000002
+#define FILE_OVERWRITTEN                  0x00000003
+#define FILE_EXISTS                       0x00000004
+#define FILE_DOES_NOT_EXIST               0x00000005
+
+#if 1
+/* FIXME: also in winnt.h; hence, already defined?
+ */
+#define FILE_LIST_DIRECTORY               0x00000001
+#define FILE_READ_DATA                    0x00000001
+#define FILE_ADD_FILE                     0x00000002
+#define FILE_WRITE_DATA                   0x00000002
+#define FILE_ADD_SUBDIRECTORY             0x00000004
+#define FILE_APPEND_DATA                  0x00000004
+#define FILE_CREATE_PIPE_INSTANCE         0x00000004
+#define FILE_READ_EA                      0x00000008
+#define FILE_WRITE_EA                     0x00000010
+#define FILE_EXECUTE                      0x00000020
+#define FILE_TRAVERSE                     0x00000020
+#define FILE_DELETE_CHILD                 0x00000040
+#define FILE_READ_ATTRIBUTES              0x00000080
+#define FILE_WRITE_ATTRIBUTES             0x00000100
+
+#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_ATTRIBUTE_VALID_FLAGS        0x00017fb7
+#define FILE_ATTRIBUTE_VALID_SET_FLAGS    0x000031a7
+
+#define FILE_COPY_STRUCTURED_STORAGE      0x00000041
+#define FILE_STRUCTURED_STORAGE           0x00000441
+
+#define FILE_VALID_OPTION_FLAGS           0x00ffffff
+#define FILE_VALID_PIPE_OPTION_FLAGS      0x00000032
+#define FILE_VALID_MAILSLOT_OPTION_FLAGS  0x00000032
+#define FILE_VALID_SET_FLAGS              0x00000036
+
+#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_FOR_RECOVERY            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_ALL_ACCESS  (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x1FF)
+
+#define FILE_GENERIC_EXECUTE \
+ (STANDARD_RIGHTS_EXECUTE | FILE_READ_ATTRIBUTES | FILE_EXECUTE | SYNCHRONIZE)
+
+#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)
+
+#endif  /* winnt.h */
+
+#define DIRECTORY_QUERY (0x0001)
+#define DIRECTORY_TRAVERSE (0x0002)
+#define DIRECTORY_CREATE_OBJECT (0x0004)
+#define DIRECTORY_CREATE_SUBDIRECTORY (0x0008)
+#define DIRECTORY_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | 0xF)
+
+/* Exported object types
+ */
+extern NTOSAPI POBJECT_TYPE ExDesktopObjectType;
+extern NTOSAPI POBJECT_TYPE ExEventObjectType;
+extern NTOSAPI POBJECT_TYPE ExSemaphoreObjectType;
+extern NTOSAPI POBJECT_TYPE ExWindowStationObjectType;
+extern NTOSAPI POBJECT_TYPE IoAdapterObjectType;
+extern NTOSAPI ULONG IoDeviceHandlerObjectSize;
+extern NTOSAPI POBJECT_TYPE IoDeviceHandlerObjectType;
+extern NTOSAPI POBJECT_TYPE IoDeviceObjectType;
+extern NTOSAPI POBJECT_TYPE IoDriverObjectType;
+extern NTOSAPI POBJECT_TYPE IoFileObjectType;
+extern NTOSAPI POBJECT_TYPE LpcPortObjectType;
+extern NTOSAPI POBJECT_TYPE MmSectionObjectType;
+extern NTOSAPI POBJECT_TYPE SeTokenObjectType;
+
+extern NTOSAPI CCHAR KeNumberProcessors;
+extern NTOSAPI PHAL_DISPATCH_TABLE HalDispatchTable;
+extern NTOSAPI PHAL_PRIVATE_DISPATCH_TABLE HalPrivateDispatchTable;
+
+
+/* IRP function codes
+ */
+#define IRP_MJ_CREATE                     0x00
+#define IRP_MJ_CREATE_NAMED_PIPE          0x01
+#define IRP_MJ_CLOSE                      0x02
+#define IRP_MJ_READ                       0x03
+#define IRP_MJ_WRITE                      0x04
+#define IRP_MJ_QUERY_INFORMATION          0x05
+#define IRP_MJ_SET_INFORMATION            0x06
+#define IRP_MJ_QUERY_EA                   0x07
+#define IRP_MJ_SET_EA                     0x08
+#define IRP_MJ_FLUSH_BUFFERS              0x09
+#define IRP_MJ_QUERY_VOLUME_INFORMATION   0x0a
+#define IRP_MJ_SET_VOLUME_INFORMATION     0x0b
+#define IRP_MJ_DIRECTORY_CONTROL          0x0c
+#define IRP_MJ_FILE_SYSTEM_CONTROL        0x0d
+#define IRP_MJ_DEVICE_CONTROL             0x0e
+#define IRP_MJ_INTERNAL_DEVICE_CONTROL    0x0f
+#define IRP_MJ_SCSI                       0x0f
+#define IRP_MJ_SHUTDOWN                   0x10
+#define IRP_MJ_LOCK_CONTROL               0x11
+#define IRP_MJ_CLEANUP                    0x12
+#define IRP_MJ_CREATE_MAILSLOT            0x13
+#define IRP_MJ_QUERY_SECURITY             0x14
+#define IRP_MJ_SET_SECURITY               0x15
+#define IRP_MJ_POWER                      0x16
+#define IRP_MJ_SYSTEM_CONTROL             0x17
+#define IRP_MJ_DEVICE_CHANGE              0x18
+#define IRP_MJ_QUERY_QUOTA                0x19
+#define IRP_MJ_SET_QUOTA                  0x1a
+#define IRP_MJ_PNP                        0x1b
+#define IRP_MJ_PNP_POWER                  0x1b
+#define IRP_MJ_MAXIMUM_FUNCTION           0x1b
+
+#define IRP_MN_QUERY_DIRECTORY            0x01
+#define IRP_MN_NOTIFY_CHANGE_DIRECTORY    0x02
+
+#define IRP_MN_USER_FS_REQUEST            0x00
+#define IRP_MN_MOUNT_VOLUME               0x01
+#define IRP_MN_VERIFY_VOLUME              0x02
+#define IRP_MN_LOAD_FILE_SYSTEM           0x03
+#define IRP_MN_TRACK_LINK                 0x04
+#define IRP_MN_KERNEL_CALL                0x04
+
+#define IRP_MN_LOCK                       0x01
+#define IRP_MN_UNLOCK_SINGLE              0x02
+#define IRP_MN_UNLOCK_ALL                 0x03
+#define IRP_MN_UNLOCK_ALL_BY_KEY          0x04
+
+#define IRP_MN_NORMAL                     0x00
+#define IRP_MN_DPC                        0x01
+#define IRP_MN_MDL                        0x02
+#define IRP_MN_COMPLETE                   0x04
+#define IRP_MN_COMPRESSED                 0x08
+
+#define IRP_MN_MDL_DPC                    (IRP_MN_MDL | IRP_MN_DPC)
+#define IRP_MN_COMPLETE_MDL               (IRP_MN_COMPLETE | IRP_MN_MDL)
+#define IRP_MN_COMPLETE_MDL_DPC           (IRP_MN_COMPLETE_MDL | IRP_MN_DPC)
+
+#define IRP_MN_SCSI_CLASS                 0x01
+
+#define IRP_MN_START_DEVICE               0x00
+#define IRP_MN_QUERY_REMOVE_DEVICE        0x01
+#define IRP_MN_REMOVE_DEVICE              0x02
+#define IRP_MN_CANCEL_REMOVE_DEVICE       0x03
+#define IRP_MN_STOP_DEVICE                0x04
+#define IRP_MN_QUERY_STOP_DEVICE          0x05
+#define IRP_MN_CANCEL_STOP_DEVICE         0x06
+
+#define IRP_MN_QUERY_DEVICE_RELATIONS       0x07
+#define IRP_MN_QUERY_INTERFACE              0x08
+#define IRP_MN_QUERY_CAPABILITIES           0x09
+#define IRP_MN_QUERY_RESOURCES              0x0A
+#define IRP_MN_QUERY_RESOURCE_REQUIREMENTS  0x0B
+#define IRP_MN_QUERY_DEVICE_TEXT            0x0C
+#define IRP_MN_FILTER_RESOURCE_REQUIREMENTS 0x0D
+
+#define IRP_MN_READ_CONFIG                  0x0F
+#define IRP_MN_WRITE_CONFIG                 0x10
+#define IRP_MN_EJECT                        0x11
+#define IRP_MN_SET_LOCK                     0x12
+#define IRP_MN_QUERY_ID                     0x13
+#define IRP_MN_QUERY_PNP_DEVICE_STATE       0x14
+#define IRP_MN_QUERY_BUS_INFORMATION        0x15
+#define IRP_MN_DEVICE_USAGE_NOTIFICATION    0x16
+#define IRP_MN_SURPRISE_REMOVAL             0x17
+#define IRP_MN_QUERY_LEGACY_BUS_INFORMATION 0x18
+
+#define IRP_MN_WAIT_WAKE                  0x00
+#define IRP_MN_POWER_SEQUENCE             0x01
+#define IRP_MN_SET_POWER                  0x02
+#define IRP_MN_QUERY_POWER                0x03
+
+#define IRP_MN_QUERY_ALL_DATA             0x00
+#define IRP_MN_QUERY_SINGLE_INSTANCE      0x01
+#define IRP_MN_CHANGE_SINGLE_INSTANCE     0x02
+#define IRP_MN_CHANGE_SINGLE_ITEM         0x03
+#define IRP_MN_ENABLE_EVENTS              0x04
+#define IRP_MN_DISABLE_EVENTS             0x05
+#define IRP_MN_ENABLE_COLLECTION          0x06
+#define IRP_MN_DISABLE_COLLECTION         0x07
+#define IRP_MN_REGINFO                    0x08
+#define IRP_MN_EXECUTE_METHOD             0x09
+
+#define IRP_MN_REGINFO_EX                 0x0b
+
+typedef
+enum _IO_ALLOCATION_ACTION
+{ KeepObject				= 1,
+  DeallocateObject			= 2,
+  DeallocateObjectKeepRegisters		= 3
+} IO_ALLOCATION_ACTION, *PIO_ALLOCATION_ACTION;
+
+typedef IO_ALLOCATION_ACTION
+(DDKAPI *PDRIVER_CONTROL)(
+  /*IN*/ struct _DEVICE_OBJECT  *DeviceObject,
+  /*IN*/ struct _IRP  *Irp,
+  /*IN*/ PVOID  MapRegisterBase,
+  /*IN*/ PVOID  Context
+);
+
+typedef VOID
+(DDKAPI *PDRIVER_LIST_CONTROL)(
+  /*IN*/ struct _DEVICE_OBJECT  *DeviceObject,
+  /*IN*/ struct _IRP  *Irp,
+  /*IN*/ struct _SCATTER_GATHER_LIST  *ScatterGather,
+  /*IN*/ PVOID  Context
+);
+
+typedef NTSTATUS
+(DDKAPI *PDRIVER_ADD_DEVICE)(
+  /*IN*/ struct _DRIVER_OBJECT  *DriverObject,
+  /*IN*/ struct _DEVICE_OBJECT  *PhysicalDeviceObject
+);
+
+typedef NTSTATUS
+(DDKAPI *PIO_COMPLETION_ROUTINE)(
+  /*IN*/ struct _DEVICE_OBJECT  *DeviceObject,
+  /*IN*/ struct _IRP  *Irp,
+  /*IN*/ PVOID  Context
+);
+
+typedef VOID
+(DDKAPI *PDRIVER_CANCEL)(
+  /*IN*/ struct _DEVICE_OBJECT  *DeviceObject,
+  /*IN*/ struct _IRP  *Irp
+);
+
+typedef VOID
+(DDKAPI *PKDEFERRED_ROUTINE)(
+  /*IN*/ struct _KDPC  *Dpc,
+  /*IN*/ PVOID  DeferredContext,
+  /*IN*/ PVOID  SystemArgument1,
+  /*IN*/ PVOID  SystemArgument2
+);
+
+typedef NTSTATUS
+(DDKAPI *PDRIVER_DISPATCH)(
+  /*IN*/ struct _DEVICE_OBJECT  *DeviceObject,
+  /*IN*/ struct _IRP  *Irp
+);
+
+typedef VOID
+(DDKAPI *PIO_DPC_ROUTINE)(
+  /*IN*/ struct _KDPC  *Dpc,
+  /*IN*/ struct _DEVICE_OBJECT  *DeviceObject,
+  /*IN*/ struct _IRP  *Irp,
+  /*IN*/ PVOID  Context
+);
+
+typedef NTSTATUS
+(DDKAPI *PMM_DLL_INITIALIZE)(
+  /*IN*/ PUNICODE_STRING  RegistryPath
+);
+
+typedef NTSTATUS
+(DDKAPI *PMM_DLL_UNLOAD)( VOID );
+
+typedef NTSTATUS
+(DDKAPI *PDRIVER_ENTRY)(
+  /*IN*/ struct _DRIVER_OBJECT  *DriverObject,
+  /*IN*/ PUNICODE_STRING  RegistryPath
+);
+
+typedef NTSTATUS
+(DDKAPI *PDRIVER_INITIALIZE)(
+  /*IN*/ struct _DRIVER_OBJECT  *DriverObject,
+  /*IN*/ PUNICODE_STRING  RegistryPath
+);
+
+typedef BOOLEAN
+(DDKAPI *PKSERVICE_ROUTINE)(
+  /*IN*/ struct _KINTERRUPT  *Interrupt,
+  /*IN*/ PVOID  ServiceContext
+);
+
+typedef VOID
+(DDKAPI *PIO_TIMER_ROUTINE)(
+  /*IN*/ struct _DEVICE_OBJECT  *DeviceObject,
+  /*IN*/ PVOID  Context
+);
+
+typedef VOID
+(DDKAPI *PDRIVER_REINITIALIZE)(
+  /*IN*/ struct _DRIVER_OBJECT  *DriverObject,
+  /*IN*/ PVOID  Context,
+  /*IN*/ ULONG  Count
+);
+
+typedef NTSTATUS
+(DDKAPI *PDRIVER_STARTIO)(
+  /*IN*/ struct _DEVICE_OBJECT  *DeviceObject,
+  /*IN*/ struct _IRP  *Irp
+);
+
+typedef BOOLEAN
+(DDKAPI *PKSYNCHRONIZE_ROUTINE)(
+  /*IN*/ PVOID  SynchronizeContext
+);
+
+typedef VOID
+(DDKAPI *PDRIVER_UNLOAD)(
+  /*IN*/ struct _DRIVER_OBJECT  *DriverObject
+);
+
+
+
+/*
+** Plug and Play structures
+*/
+typedef VOID DDKAPI
+(*PINTERFACE_REFERENCE)(
+  PVOID  Context
+);
+
+typedef VOID DDKAPI
+(*PINTERFACE_DEREFERENCE)(
+  PVOID Context
+);
+
+typedef BOOLEAN DDKAPI
+(*PTRANSLATE_BUS_ADDRESS)(
+  /*IN*/ PVOID  Context,
+  /*IN*/ PHYSICAL_ADDRESS  BusAddress,
+  /*IN*/ ULONG  Length,
+  /*IN OUT*/ PULONG  AddressSpace,
+  /*OUT*/ PPHYSICAL_ADDRESS  TranslatedAddress
+);
+
+typedef struct _DMA_ADAPTER* DDKAPI
+(*PGET_DMA_ADAPTER)(
+  /*IN*/ PVOID  Context,
+  /*IN*/ struct _DEVICE_DESCRIPTION  *DeviceDescriptor,
+  /*OUT*/ PULONG  NumberOfMapRegisters
+);
+
+typedef ULONG DDKAPI
+(*PGET_SET_DEVICE_DATA)(
+  /*IN*/ PVOID  Context,
+  /*IN*/ ULONG  DataType,
+  /*IN*/ PVOID  Buffer,
+  /*IN*/ ULONG  Offset,
+  /*IN*/ ULONG  Length
+);
+
+typedef
+union _POWER_STATE
+{ SYSTEM_POWER_STATE		SystemState;
+  DEVICE_POWER_STATE		DeviceState;
+} POWER_STATE, *PPOWER_STATE;
+
+typedef
+enum _POWER_STATE_TYPE
+{ SystemPowerState,
+  DevicePowerState
+} POWER_STATE_TYPE, *PPOWER_STATE_TYPE;
+
+typedef
+struct _BUS_INTERFACE_STANDARD
+{ USHORT			Size;
+  USHORT			Version;
+  PVOID 			Context;
+  PINTERFACE_REFERENCE		InterfaceReference;
+  PINTERFACE_DEREFERENCE	InterfaceDereference;
+  PTRANSLATE_BUS_ADDRESS	TranslateBusAddress;
+  PGET_DMA_ADAPTER		GetDmaAdapter;
+  PGET_SET_DEVICE_DATA		SetBusData;
+  PGET_SET_DEVICE_DATA		GetBusData;
+} BUS_INTERFACE_STANDARD, *PBUS_INTERFACE_STANDARD;
+
+typedef
+struct _DEVICE_CAPABILITIES
+{ USHORT			Size;
+  USHORT			Version;
+  ULONG 			DeviceD1	   :  1;
+  ULONG 			DeviceD2	   :  1;
+  ULONG 			LockSupported	   :  1;
+  ULONG 			EjectSupported	   :  1;
+  ULONG 			Removable	   :  1;
+  ULONG 			DockDevice	   :  1;
+  ULONG 			UniqueID	   :  1;
+  ULONG 			SilentInstall	   :  1;
+  ULONG 			RawDeviceOK	   :  1;
+  ULONG 			SurpriseRemovalOK  :  1;
+  ULONG 			WakeFromD0	   :  1;
+  ULONG 			WakeFromD1	   :  1;
+  ULONG 			WakeFromD2	   :  1;
+  ULONG 			WakeFromD3	   :  1;
+  ULONG 			HardwareDisabled   :  1;
+  ULONG 			NonDynamic	   :  1;
+  ULONG 			WarmEjectSupported :  1;
+  ULONG 			NoDisplayInUI	   :  1;
+  ULONG 			Reserved	   : 14;
+  ULONG 			Address;
+  ULONG 			UINumber;
+  DEVICE_POWER_STATE		DeviceState[PowerSystemMaximum];
+  SYSTEM_POWER_STATE		SystemWake;
+  DEVICE_POWER_STATE		DeviceWake;
+  ULONG 			D1Latency;
+  ULONG 			D2Latency;
+  ULONG 			D3Latency;
+} DEVICE_CAPABILITIES, *PDEVICE_CAPABILITIES;
+
+typedef
+struct _DEVICE_INTERFACE_CHANGE_NOTIFICATION
+{ USHORT			Version;
+  USHORT			Size;
+  GUID				Event;
+  GUID				InterfaceClassGuid;
+  PUNICODE_STRING		SymbolicLinkName;
+} DEVICE_INTERFACE_CHANGE_NOTIFICATION, *PDEVICE_INTERFACE_CHANGE_NOTIFICATION;
+
+typedef
+struct _HWPROFILE_CHANGE_NOTIFICATION
+{ USHORT			Version;
+  USHORT			Size;
+  GUID				Event;
+} HWPROFILE_CHANGE_NOTIFICATION, *PHWPROFILE_CHANGE_NOTIFICATION;
+
+#undef INTERFACE
+
+typedef
+struct _INTERFACE
+{ USHORT			Size;
+  USHORT			Version;
+  PVOID 			Context;
+  PINTERFACE_REFERENCE		InterfaceReference;
+  PINTERFACE_DEREFERENCE	InterfaceDereference;
+} INTERFACE, *PINTERFACE;
+
+typedef
+struct _PLUGPLAY_NOTIFICATION_HEADER
+{ USHORT			Version;
+  USHORT			Size;
+  GUID			Event;
+} PLUGPLAY_NOTIFICATION_HEADER, *PPLUGPLAY_NOTIFICATION_HEADER;
+
+typedef ULONG PNP_DEVICE_STATE, *PPNP_DEVICE_STATE;
+
+/* PNP_DEVICE_STATE */
+
+#define PNP_DEVICE_DISABLED                      0x00000001
+#define PNP_DEVICE_DONT_DISPLAY_IN_UI            0x00000002
+#define PNP_DEVICE_FAILED                        0x00000004
+#define PNP_DEVICE_REMOVED                       0x00000008
+#define PNP_DEVICE_RESOURCE_REQUIREMENTS_CHANGED 0x00000010
+#define PNP_DEVICE_NOT_DISABLEABLE               0x00000020
+
+typedef
+struct _TARGET_DEVICE_CUSTOM_NOTIFICATION
+{ USHORT			Version;
+  USHORT			Size;
+  GUID				Event;
+  struct _FILE_OBJECT		*FileObject;
+  LONG				NameBufferOffset;
+  UCHAR 			CustomDataBuffer[1];
+} TARGET_DEVICE_CUSTOM_NOTIFICATION, *PTARGET_DEVICE_CUSTOM_NOTIFICATION;
+
+typedef
+struct _TARGET_DEVICE_REMOVAL_NOTIFICATION
+{ USHORT			Version;
+  USHORT			Size;
+  GUID				Event;
+  struct _FILE_OBJECT		*FileObject;
+} TARGET_DEVICE_REMOVAL_NOTIFICATION, *PTARGET_DEVICE_REMOVAL_NOTIFICATION;
+
+typedef
+enum _BUS_QUERY_ID_TYPE
+{ BusQueryDeviceID,
+  BusQueryHardwareIDs,
+  BusQueryCompatibleIDs,
+  BusQueryInstanceID,
+  BusQueryDeviceSerialNumber
+} BUS_QUERY_ID_TYPE, *PBUS_QUERY_ID_TYPE;
+
+typedef
+enum _DEVICE_TEXT_TYPE
+{ DeviceTextDescription,
+  DeviceTextLocationInformation
+} DEVICE_TEXT_TYPE, *PDEVICE_TEXT_TYPE;
+
+typedef
+enum _DEVICE_USAGE_NOTIFICATION_TYPE
+{ DeviceUsageTypeUndefined,
+  DeviceUsageTypePaging,
+  DeviceUsageTypeHibernation,
+  DeviceUsageTypeDumpFile
+} DEVICE_USAGE_NOTIFICATION_TYPE;
+
+typedef
+struct _POWER_SEQUENCE
+{ ULONG 			SequenceD1;
+  ULONG 			SequenceD2;
+  ULONG 			SequenceD3;
+} POWER_SEQUENCE, *PPOWER_SEQUENCE;
+
+typedef enum
+{ DevicePropertyDeviceDescription,
+  DevicePropertyHardwareID,
+  DevicePropertyCompatibleIDs,
+  DevicePropertyBootConfiguration,
+  DevicePropertyBootConfigurationTranslated,
+  DevicePropertyClassName,
+  DevicePropertyClassGuid,
+  DevicePropertyDriverKeyName,
+  DevicePropertyManufacturer,
+  DevicePropertyFriendlyName,
+  DevicePropertyLocationInformation,
+  DevicePropertyPhysicalDeviceObjectName,
+  DevicePropertyBusTypeGuid,
+  DevicePropertyLegacyBusType,
+  DevicePropertyBusNumber,
+  DevicePropertyEnumeratorName,
+  DevicePropertyAddress,
+  DevicePropertyUINumber,
+  DevicePropertyInstallState,
+  DevicePropertyRemovalPolicy
+} DEVICE_REGISTRY_PROPERTY;
+
+typedef
+enum _IO_NOTIFICATION_EVENT_CATEGORY
+{ EventCategoryReserved,
+  EventCategoryHardwareProfileChange,
+  EventCategoryDeviceInterfaceChange,
+  EventCategoryTargetDeviceChange
+} IO_NOTIFICATION_EVENT_CATEGORY;
+
+#define PNPNOTIFY_DEVICE_INTERFACE_INCLUDE_EXISTING_INTERFACES    0x00000001
+
+typedef NTSTATUS DDKAPI
+(*PDRIVER_NOTIFICATION_CALLBACK_ROUTINE)(
+  /*IN*/ PVOID NotificationStructure,
+  /*IN*/ PVOID Context
+);
+
+typedef VOID DDKAPI
+(*PDEVICE_CHANGE_COMPLETE_CALLBACK)(
+  /*IN*/ PVOID Context
+);
+
+/* System structures
+ */
+#define SYMBOLIC_LINK_QUERY               0x0001
+#define SYMBOLIC_LINK_ALL_ACCESS          (STANDARD_RIGHTS_REQUIRED | 0x1)
+
+#if 1
+/* FIXME: also in winnt.h; hence already defined?
+ */
+#define DUPLICATE_CLOSE_SOURCE            0x00000001
+#define DUPLICATE_SAME_ACCESS             0x00000002
+#define DUPLICATE_SAME_ATTRIBUTES         0x00000004
+
+#endif  /* winnt.h */
+
+typedef
+struct _OBJECT_NAME_INFORMATION
+{ UNICODE_STRING		Name;
+} OBJECT_NAME_INFORMATION, *POBJECT_NAME_INFORMATION;
+
+typedef VOID DDKAPI
+(*PIO_APC_ROUTINE)(
+  /*IN*/ PVOID ApcContext,
+  /*IN*/ PIO_STATUS_BLOCK IoStatusBlock,
+  /*IN*/ ULONG Reserved
+);
+
+typedef
+struct _IO_STATUS_BLOCK 
+{ _ANONYMOUS_UNION union 
+  { NTSTATUS			Status;
+    PVOID			Pointer;
+  } DUMMYUNIONNAME;
+  ULONG_PTR			Information;
+} IO_STATUS_BLOCK;
+
+typedef VOID DDKAPI
+(*PKNORMAL_ROUTINE)(
+  /*IN*/ PVOID  NormalContext,
+  /*IN*/ PVOID  SystemArgument1,
+  /*IN*/ PVOID  SystemArgument2
+);
+
+typedef VOID DDKAPI
+(*PKKERNEL_ROUTINE)(
+  /*IN*/ struct _KAPC  *Apc,
+  /*IN OUT*/ PKNORMAL_ROUTINE  *NormalRoutine,
+  /*IN OUT*/ PVOID  *NormalContext,
+  /*IN OUT*/ PVOID  *SystemArgument1,
+  /*IN OUT*/ PVOID  *SystemArgument2
+);
+
+typedef VOID DDKAPI
+(*PKRUNDOWN_ROUTINE)(
+  /*IN*/ struct _KAPC  *Apc
+);
+
+typedef BOOLEAN DDKAPI
+(*PKTRANSFER_ROUTINE)( VOID );
+
+typedef
+struct _KAPC 
+{ CSHORT			Type;
+  CSHORT			Size;
+  ULONG 			Spare0;
+  struct _KTHREAD		*Thread;
+  LIST_ENTRY			ApcListEntry;
+  PKKERNEL_ROUTINE		KernelRoutine;
+  PKRUNDOWN_ROUTINE		RundownRoutine;
+  PKNORMAL_ROUTINE		NormalRoutine;
+  PVOID 			NormalContext;
+  PVOID 			SystemArgument1;
+  PVOID 			SystemArgument2;
+  CCHAR 			ApcStateIndex;
+  KPROCESSOR_MODE		ApcMode;
+  BOOLEAN			Inserted;
+} KAPC, *PKAPC, *RESTRICTED_POINTER PRKAPC;
+
+typedef
+struct _KDEVICE_QUEUE
+{ CSHORT 			Type;
+  CSHORT 			Size;
+  LIST_ENTRY			DeviceListHead;
+  KSPIN_LOCK			Lock;
+  BOOLEAN			Busy;
+} KDEVICE_QUEUE, *PKDEVICE_QUEUE, *RESTRICTED_POINTER PRKDEVICE_QUEUE;
+
+typedef
+struct _KDEVICE_QUEUE_ENTRY
+{ LIST_ENTRY			DeviceListEntry;
+  ULONG 			SortKey;
+  BOOLEAN			Inserted;
+} KDEVICE_QUEUE_ENTRY, *PKDEVICE_QUEUE_ENTRY,
+*RESTRICTED_POINTER PRKDEVICE_QUEUE_ENTRY;
+
+#define LOCK_QUEUE_WAIT                   1
+#define LOCK_QUEUE_OWNER                  2
+
+typedef
+enum _KSPIN_LOCK_QUEUE_NUMBER
+{ LockQueueDispatcherLock,
+  LockQueueContextSwapLock,
+  LockQueuePfnLock,
+  LockQueueSystemSpaceLock,
+  LockQueueVacbLock,
+  LockQueueMasterLock,
+  LockQueueNonPagedPoolLock,
+  LockQueueIoCancelLock,
+  LockQueueWorkQueueLock,
+  LockQueueIoVpbLock,
+  LockQueueIoDatabaseLock,
+  LockQueueIoCompletionLock,
+  LockQueueNtfsStructLock,
+  LockQueueAfdWorkQueueLock,
+  LockQueueBcbLock,
+  LockQueueMaximumLock
+} KSPIN_LOCK_QUEUE_NUMBER, *PKSPIN_LOCK_QUEUE_NUMBER;
+
+typedef
+struct _KSPIN_LOCK_QUEUE
+{ struct _KSPIN_LOCK_QUEUE	*VOLATILE Next;
+  PKSPIN_LOCK VOLATILE		Lock;
+} KSPIN_LOCK_QUEUE, *PKSPIN_LOCK_QUEUE;
+
+typedef
+struct _KLOCK_QUEUE_HANDLE
+{ KSPIN_LOCK_QUEUE		LockQueue;
+  KIRQL 			OldIrql;
+} KLOCK_QUEUE_HANDLE, *PKLOCK_QUEUE_HANDLE;
+
+typedef
+struct _KDPC
+{ CSHORT			Type;
+  UCHAR 			Number;
+  UCHAR 			Importance;
+  LIST_ENTRY			DpcListEntry;
+  PKDEFERRED_ROUTINE		DeferredRoutine;
+  PVOID 			DeferredContext;
+  PVOID 			SystemArgument1;
+  PVOID 			SystemArgument2;
+  PULONG_PTR			Lock;
+} KDPC, *PKDPC, *RESTRICTED_POINTER PRKDPC;
+
+typedef
+struct _WAIT_CONTEXT_BLOCK
+{ KDEVICE_QUEUE_ENTRY		WaitQueueEntry;
+  struct _DRIVER_CONTROL	*DeviceRoutine;
+  PVOID 			DeviceContext;
+  ULONG 			NumberOfMapRegisters;
+  PVOID 			DeviceObject;
+  PVOID 			CurrentIrp;
+  PKDPC 			BufferChainingDpc;
+} WAIT_CONTEXT_BLOCK, *PWAIT_CONTEXT_BLOCK;
+
+typedef
+struct _DISPATCHER_HEADER
+{ UCHAR 			Type;
+  UCHAR 			Absolute;
+  UCHAR 			Size;
+  UCHAR 			Inserted;
+  LONG				SignalState;
+  LIST_ENTRY			WaitListHead;
+} DISPATCHER_HEADER, *PDISPATCHER_HEADER;
+
+typedef
+struct _KEVENT
+{ DISPATCHER_HEADER		Header;
+} KEVENT, *PKEVENT, *RESTRICTED_POINTER PRKEVENT;
+
+typedef
+struct _KSEMAPHORE
+{ DISPATCHER_HEADER		Header;
+    LONG			Limit;
+} KSEMAPHORE, *PKSEMAPHORE, *RESTRICTED_POINTER PRKSEMAPHORE;
+
+typedef
+struct _FAST_MUTEX
+{ LONG				Count;
+  struct _KTHREAD		*Owner;
+  ULONG 			Contention;
+  KEVENT			Event;
+  ULONG 			OldIrql;
+} FAST_MUTEX, *PFAST_MUTEX;
+
+typedef
+struct _KTIMER
+{ DISPATCHER_HEADER		Header;
+  ULARGE_INTEGER		DueTime;
+  LIST_ENTRY			TimerListEntry;
+  struct _KDPC			*Dpc;
+  LONG				Period;
+} KTIMER, *PKTIMER, *RESTRICTED_POINTER PRKTIMER;
+
+typedef
+struct _KMUTANT
+{ DISPATCHER_HEADER		Header;
+  LIST_ENTRY			MutantListEntry;
+  struct _KTHREAD		*RESTRICTED_POINTER OwnerThread;
+  BOOLEAN			Abandoned;
+  UCHAR 			ApcDisable;
+} KMUTANT, *PKMUTANT, *RESTRICTED_POINTER PRKMUTANT, KMUTEX, *PKMUTEX, *RESTRICTED_POINTER PRKMUTEX;
+
+typedef
+enum _TIMER_TYPE
+{ NotificationTimer,
+  SynchronizationTimer
+} TIMER_TYPE;
+
+typedef
+enum _TIMER_INFORMATION_CLASS
+{ TimerBasicInformation
+} TIMER_INFORMATION_CLASS;
+
+typedef
+struct _TIMER_BASIC_INFORMATION
+{ LARGE_INTEGER			TimeRemaining;
+  BOOLEAN			SignalState;
+} TIMER_BASIC_INFORMATION, *PTIMER_BASIC_INFORMATION;
+
+#define EVENT_INCREMENT                   1
+#define IO_NO_INCREMENT                   0
+#define IO_CD_ROM_INCREMENT               1
+#define IO_DISK_INCREMENT                 1
+#define IO_KEYBOARD_INCREMENT             6
+#define IO_MAILSLOT_INCREMENT             2
+#define IO_MOUSE_INCREMENT                6
+#define IO_NAMED_PIPE_INCREMENT           2
+#define IO_NETWORK_INCREMENT              2
+#define IO_PARALLEL_INCREMENT             1
+#define IO_SERIAL_INCREMENT               2
+#define IO_SOUND_INCREMENT                8
+#define IO_VIDEO_INCREMENT                1
+#define SEMAPHORE_INCREMENT               1
+
+typedef
+struct _IRP
+{ CSHORT				Type;
+  USHORT				Size;
+  struct _MDL				*MdlAddress;
+  ULONG 				Flags;
+  union
+  { struct _IRP				  *MasterIrp;
+    LONG				  IrpCount;
+    PVOID				  SystemBuffer;
+  }					AssociatedIrp;
+  LIST_ENTRY				ThreadListEntry;
+  IO_STATUS_BLOCK			IoStatus;
+  KPROCESSOR_MODE			RequestorMode;
+  BOOLEAN				PendingReturned;
+  CHAR					StackCount;
+  CHAR					CurrentLocation;
+  BOOLEAN				Cancel;
+  KIRQL 				CancelIrql;
+  CCHAR 				ApcEnvironment;
+  UCHAR 				AllocationFlags;
+  PIO_STATUS_BLOCK			UserIosb;
+  PKEVENT				UserEvent;
+  union
+  { struct
+    { PIO_APC_ROUTINE			    UserApcRoutine;
+      PVOID				    UserApcContext;
+    }					  AsynchronousParameters;
+    LARGE_INTEGER			  AllocationSize;
+  }					Overlay;
+  PDRIVER_CANCEL			CancelRoutine;
+  PVOID 				UserBuffer;
+  union
+  { struct
+    { _ANONYMOUS_UNION union
+      { KDEVICE_QUEUE_ENTRY		  DeviceQueueEntry;
+        _ANONYMOUS_STRUCT struct
+	{ PVOID				    DriverContext[4];
+        } DUMMYSTRUCTNAME;
+      } DUMMYUNIONNAME;
+      PETHREAD				  Thread;
+      PCHAR				  AuxiliaryBuffer;
+      _ANONYMOUS_STRUCT struct
+      { LIST_ENTRY			    ListEntry;
+        _ANONYMOUS_UNION union
+	{ struct _IO_STACK_LOCATION	      *CurrentStackLocation;
+          ULONG				      PacketType;
+        } DUMMYUNIONNAME;
+      } DUMMYSTRUCTNAME;
+      struct _FILE_OBJECT		    *OriginalFileObject;
+    }					  Overlay;
+    KAPC				  Apc;
+    PVOID				  CompletionKey;
+  }					Tail;
+} IRP, *PIRP;
+
+/* IRP.Flags
+ */
+#define SL_FORCE_ACCESS_CHECK             0x01
+#define SL_OPEN_PAGING_FILE               0x02
+#define SL_OPEN_TARGET_DIRECTORY          0x04
+#define SL_CASE_SENSITIVE                 0x80
+
+#define SL_KEY_SPECIFIED                  0x01
+#define SL_OVERRIDE_VERIFY_VOLUME         0x02
+#define SL_WRITE_THROUGH                  0x04
+#define SL_FT_SEQUENTIAL_WRITE            0x08
+
+#define SL_FAIL_IMMEDIATELY               0x01
+#define SL_EXCLUSIVE_LOCK                 0x02
+
+#define SL_RESTART_SCAN                   0x01
+#define SL_RETURN_SINGLE_ENTRY            0x02
+#define SL_INDEX_SPECIFIED                0x04
+
+#define SL_WATCH_TREE                     0x01
+
+#define SL_ALLOW_RAW_MOUNT                0x01
+
+enum
+{ IRP_NOCACHE			= 0x0001,
+  IRP_PAGING_IO			= 0x0002,
+  IRP_MOUNT_COMPLETION		= 0x0002,
+  IRP_SYNCHRONOUS_API		= 0x0004,
+  IRP_ASSOCIATED_IRP		= 0x0008,
+  IRP_BUFFERED_IO		= 0x0010,
+  IRP_DEALLOCATE_BUFFER 	= 0x0020,
+  IRP_INPUT_OPERATION		= 0x0040,
+  IRP_SYNCHRONOUS_PAGING_IO	= 0x0040,
+  IRP_CREATE_OPERATION		= 0x0080,
+  IRP_READ_OPERATION		= 0x0100,
+  IRP_WRITE_OPERATION		= 0x0200,
+  IRP_CLOSE_OPERATION		= 0x0400,
+  IRP_DEFER_IO_COMPLETION	= 0x0800,
+  IRP_OB_QUERY_NAME		= 0x1000,
+  IRP_HOLD_DEVICE_QUEUE 	= 0x2000,
+  IRP_RETRY_IO_COMPLETION	= 0x4000
+};
+
+typedef
+struct _BOOTDISK_INFORMATION
+{ LONGLONG			BootPartitionOffset;
+  LONGLONG			SystemPartitionOffset;
+  ULONG 			BootDeviceSignature;
+  ULONG 			SystemDeviceSignature;
+} BOOTDISK_INFORMATION, *PBOOTDISK_INFORMATION;
+
+typedef
+struct _BOOTDISK_INFORMATION_EX
+{ LONGLONG			BootPartitionOffset;
+  LONGLONG			SystemPartitionOffset;
+  ULONG 			BootDeviceSignature;
+  ULONG 			SystemDeviceSignature;
+  GUID				BootDeviceGuid;
+  GUID				SystemDeviceGuid;
+  BOOLEAN			BootDeviceIsGpt;
+  BOOLEAN			SystemDeviceIsGpt;
+} BOOTDISK_INFORMATION_EX, *PBOOTDISK_INFORMATION_EX;
+
+typedef
+struct _EISA_MEMORY_TYPE
+{ UCHAR 			ReadWrite   : 1;
+  UCHAR 			Cached      : 1;
+  UCHAR 			Reserved0   : 1;
+  UCHAR 			Type        : 2;
+  UCHAR 			Shared      : 1;
+  UCHAR 			Reserved1   : 1;
+  UCHAR 			MoreEntries : 1;
+} EISA_MEMORY_TYPE, *PEISA_MEMORY_TYPE;
+
+#include <pshpack1.h>
+typedef
+struct _EISA_MEMORY_CONFIGURATION
+{ EISA_MEMORY_TYPE		ConfigurationByte;
+  UCHAR 			DataSize;
+  USHORT			AddressLowWord;
+  UCHAR 			AddressHighByte;
+  USHORT			MemorySize;
+} EISA_MEMORY_CONFIGURATION, *PEISA_MEMORY_CONFIGURATION;
+#include <poppack.h>
+
+typedef
+struct _EISA_IRQ_DESCRIPTOR
+{ UCHAR 			Interrupt      : 4;
+  UCHAR 			Reserved       : 1;
+  UCHAR 			LevelTriggered : 1;
+  UCHAR 			Shared         : 1;
+  UCHAR 			MoreEntries    : 1;
+} EISA_IRQ_DESCRIPTOR, *PEISA_IRQ_DESCRIPTOR;
+
+typedef
+struct _EISA_IRQ_CONFIGURATION
+{ EISA_IRQ_DESCRIPTOR		ConfigurationByte;
+  UCHAR 			Reserved;
+} EISA_IRQ_CONFIGURATION, *PEISA_IRQ_CONFIGURATION;
+
+typedef
+struct _DMA_CONFIGURATION_BYTE0
+{ UCHAR 			Channel     : 3;
+  UCHAR 			Reserved    : 3;
+  UCHAR 			Shared      : 1;
+  UCHAR 			MoreEntries : 1;
+} DMA_CONFIGURATION_BYTE0;
+
+typedef
+struct _DMA_CONFIGURATION_BYTE1
+{ UCHAR 			Reserved0    : 2;
+  UCHAR 			TransferSize : 2;
+  UCHAR 			Timing       : 2;
+  UCHAR 			Reserved1    : 2;
+} DMA_CONFIGURATION_BYTE1;
+
+typedef
+struct _EISA_DMA_CONFIGURATION
+{ DMA_CONFIGURATION_BYTE0	ConfigurationByte0;
+  DMA_CONFIGURATION_BYTE1	ConfigurationByte1;
+} EISA_DMA_CONFIGURATION, *PEISA_DMA_CONFIGURATION;
+
+#include <pshpack1.h>
+typedef
+struct _EISA_PORT_DESCRIPTOR
+{ UCHAR 			NumberPorts : 5;
+  UCHAR 			Reserved    : 1;
+  UCHAR 			Shared      : 1;
+  UCHAR 			MoreEntries : 1;
+} EISA_PORT_DESCRIPTOR, *PEISA_PORT_DESCRIPTOR;
+
+typedef
+struct _EISA_PORT_CONFIGURATION
+{ EISA_PORT_DESCRIPTOR		Configuration;
+  USHORT 			PortAddress;
+} EISA_PORT_CONFIGURATION, *PEISA_PORT_CONFIGURATION;
+#include <poppack.h>
+
+typedef
+struct _CM_EISA_FUNCTION_INFORMATION
+{ ULONG 			CompressedId;
+  UCHAR 			IdSlotFlags1;
+  UCHAR 			IdSlotFlags2;
+  UCHAR 			MinorRevision;
+  UCHAR 			MajorRevision;
+  UCHAR 			Selections[26];
+  UCHAR 			FunctionFlags;
+  UCHAR 			TypeString[80];
+  EISA_MEMORY_CONFIGURATION	EisaMemory[9];
+  EISA_IRQ_CONFIGURATION	EisaIrq[7];
+  EISA_DMA_CONFIGURATION	EisaDma[4];
+  EISA_PORT_CONFIGURATION	EisaPort[20];
+  UCHAR 			InitializationData[60];
+} CM_EISA_FUNCTION_INFORMATION, *PCM_EISA_FUNCTION_INFORMATION;
+
+/* CM_EISA_FUNCTION_INFORMATION.FunctionFlags
+ */
+#define EISA_FUNCTION_ENABLED           0x80
+#define EISA_FREE_FORM_DATA             0x40
+#define EISA_HAS_PORT_INIT_ENTRY        0x20
+#define EISA_HAS_PORT_RANGE             0x10
+#define EISA_HAS_DMA_ENTRY              0x08
+#define EISA_HAS_IRQ_ENTRY              0x04
+#define EISA_HAS_MEMORY_ENTRY           0x02
+#define EISA_HAS_TYPE_ENTRY             0x01
+#define EISA_HAS_INFORMATION \
+  (EISA_HAS_PORT_RANGE + EISA_HAS_DMA_ENTRY + EISA_HAS_IRQ_ENTRY \
+  + EISA_HAS_MEMORY_ENTRY + EISA_HAS_TYPE_ENTRY)
+
+typedef
+struct _CM_EISA_SLOT_INFORMATION
+{ UCHAR 			ReturnCode;
+  UCHAR 			ReturnFlags;
+  UCHAR 			MajorRevision;
+  UCHAR 			MinorRevision;
+  USHORT			Checksum;
+  UCHAR 			NumberFunctions;
+  UCHAR 			FunctionInformation;
+  ULONG 			CompressedId;
+} CM_EISA_SLOT_INFORMATION, *PCM_EISA_SLOT_INFORMATION;
+
+/* CM_EISA_SLOT_INFORMATION.ReturnCode
+ */
+#define EISA_INVALID_SLOT               0x80
+#define EISA_INVALID_FUNCTION           0x81
+#define EISA_INVALID_CONFIGURATION      0x82
+#define EISA_EMPTY_SLOT                 0x83
+#define EISA_INVALID_BIOS_CALL          0x86
+
+typedef
+struct _CM_FLOPPY_DEVICE_DATA
+{ USHORT			Version;
+  USHORT			Revision;
+  CHAR				Size[8];
+  ULONG 			MaxDensity;
+  ULONG 			MountDensity;
+  UCHAR 			StepRateHeadUnloadTime;
+  UCHAR 			HeadLoadTime;
+  UCHAR 			MotorOffTime;
+  UCHAR 			SectorLengthCode;
+  UCHAR 			SectorPerTrack;
+  UCHAR 			ReadWriteGapLength;
+  UCHAR 			DataTransferLength;
+  UCHAR 			FormatGapLength;
+  UCHAR 			FormatFillCharacter;
+  UCHAR 			HeadSettleTime;
+  UCHAR 			MotorSettleTime;
+  UCHAR 			MaximumTrackValue;
+  UCHAR 			DataTransferRate;
+} CM_FLOPPY_DEVICE_DATA, *PCM_FLOPPY_DEVICE_DATA;
+
+typedef
+enum _INTERFACE_TYPE
+{ InterfaceTypeUndefined = -1,
+  Internal,
+  Isa,
+  Eisa,
+  MicroChannel,
+  TurboChannel,
+  PCIBus,
+  VMEBus,
+  NuBus,
+  PCMCIABus,
+  CBus,
+  MPIBus,
+  MPSABus,
+  ProcessorInternal,
+  InternalPowerBus,
+  PNPISABus,
+  PNPBus,
+  MaximumInterfaceType
+} INTERFACE_TYPE, *PINTERFACE_TYPE;
+
+typedef
+struct _PNP_BUS_INFORMATION
+{ GUID				BusTypeGuid;
+  INTERFACE_TYPE		LegacyBusType;
+  ULONG 			BusNumber;
+} PNP_BUS_INFORMATION, *PPNP_BUS_INFORMATION;
+
+#include <pshpack1.h>
+typedef
+struct _CM_PARTIAL_RESOURCE_DESCRIPTOR
+{ UCHAR 			Type;
+  UCHAR 			ShareDisposition;
+  USHORT			Flags;
+  union
+  { struct
+    { PHYSICAL_ADDRESS		    Start;
+      ULONG			    Length;
+    }				  Generic;
+    struct
+    { PHYSICAL_ADDRESS		    Start;
+      ULONG			    Length;
+    }				  Port;
+    struct
+    { ULONG			    Level;
+      ULONG			    Vector;
+      ULONG			    Affinity;
+    }				  Interrupt;
+    struct
+    { PHYSICAL_ADDRESS		    Start;
+      ULONG			    Length;
+    }				  Memory;
+    struct
+    { ULONG			    Channel;
+      ULONG			    Port;
+      ULONG			    Reserved1;
+    }				  Dma;
+    struct
+    { ULONG			    Data[3];
+    }				  DevicePrivate;
+    struct
+    { ULONG			    Start;
+      ULONG			    Length;
+      ULONG			    Reserved;
+    }				  BusNumber;
+    struct
+    { ULONG			    DataSize;
+      ULONG			    Reserved1;
+      ULONG			    Reserved2;
+    }				  DeviceSpecificData;
+  }				u;
+} CM_PARTIAL_RESOURCE_DESCRIPTOR, *PCM_PARTIAL_RESOURCE_DESCRIPTOR;
+
+/* CM_PARTIAL_RESOURCE_DESCRIPTOR.Type
+ */
+#define CmResourceTypeNull                0
+#define CmResourceTypePort                1
+#define CmResourceTypeInterrupt           2
+#define CmResourceTypeMemory              3
+#define CmResourceTypeDma                 4
+#define CmResourceTypeDeviceSpecific      5
+#define CmResourceTypeBusNumber           6
+#define CmResourceTypeMaximum             7
+#define CmResourceTypeNonArbitrated     128
+#define CmResourceTypeConfigData        128
+#define CmResourceTypeDevicePrivate     129
+#define CmResourceTypePcCardConfig      130
+#define CmResourceTypeMfCardConfig      131
+
+/* CM_PARTIAL_RESOURCE_DESCRIPTOR.ShareDisposition
+ */
+typedef
+enum _CM_SHARE_DISPOSITION
+{ CmResourceShareUndetermined,
+  CmResourceShareDeviceExclusive,
+  CmResourceShareDriverExclusive,
+  CmResourceShareShared
+} CM_SHARE_DISPOSITION;
+
+/* CM_PARTIAL_RESOURCE_DESCRIPTOR.Flags if Type = CmResourceTypePort
+ */
+#define CM_RESOURCE_PORT_MEMORY           0x0000
+#define CM_RESOURCE_PORT_IO               0x0001
+#define CM_RESOURCE_PORT_10_BIT_DECODE    0x0004
+#define CM_RESOURCE_PORT_12_BIT_DECODE    0x0008
+#define CM_RESOURCE_PORT_16_BIT_DECODE    0x0010
+#define CM_RESOURCE_PORT_POSITIVE_DECODE  0x0020
+#define CM_RESOURCE_PORT_PASSIVE_DECODE   0x0040
+#define CM_RESOURCE_PORT_WINDOW_DECODE    0x0080
+
+/* CM_PARTIAL_RESOURCE_DESCRIPTOR.Flags if Type = CmResourceTypeInterrupt
+ */
+#define CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE 0x0000
+#define CM_RESOURCE_INTERRUPT_LATCHED         0x0001
+
+/* CM_PARTIAL_RESOURCE_DESCRIPTOR.Flags if Type = CmResourceTypeMemory
+ */
+#define CM_RESOURCE_MEMORY_READ_WRITE     0x0000
+#define CM_RESOURCE_MEMORY_READ_ONLY      0x0001
+#define CM_RESOURCE_MEMORY_WRITE_ONLY     0x0002
+#define CM_RESOURCE_MEMORY_PREFETCHABLE   0x0004
+#define CM_RESOURCE_MEMORY_COMBINEDWRITE  0x0008
+#define CM_RESOURCE_MEMORY_24             0x0010
+#define CM_RESOURCE_MEMORY_CACHEABLE      0x0020
+
+/* CM_PARTIAL_RESOURCE_DESCRIPTOR.Flags if Type = CmResourceTypeDma
+ */
+#define CM_RESOURCE_DMA_8                 0x0000
+#define CM_RESOURCE_DMA_16                0x0001
+#define CM_RESOURCE_DMA_32                0x0002
+#define CM_RESOURCE_DMA_8_AND_16          0x0004
+#define CM_RESOURCE_DMA_BUS_MASTER        0x0008
+#define CM_RESOURCE_DMA_TYPE_A            0x0010
+#define CM_RESOURCE_DMA_TYPE_B            0x0020
+#define CM_RESOURCE_DMA_TYPE_F            0x0040
+
+typedef
+struct _CM_PARTIAL_RESOURCE_LIST
+{ USHORT				Version;
+  USHORT				Revision;
+  ULONG 				Count;
+  CM_PARTIAL_RESOURCE_DESCRIPTOR	PartialDescriptors[1];
+} CM_PARTIAL_RESOURCE_LIST, *PCM_PARTIAL_RESOURCE_LIST;
+
+typedef
+struct _CM_FULL_RESOURCE_DESCRIPTOR
+{ INTERFACE_TYPE		InterfaceType;
+  ULONG 			BusNumber;
+  CM_PARTIAL_RESOURCE_LIST	PartialResourceList;
+} CM_FULL_RESOURCE_DESCRIPTOR, *PCM_FULL_RESOURCE_DESCRIPTOR;
+
+typedef
+struct _CM_RESOURCE_LIST
+{ ULONG 			Count;
+  CM_FULL_RESOURCE_DESCRIPTOR	List[1];
+} CM_RESOURCE_LIST, *PCM_RESOURCE_LIST;
+
+typedef
+struct _CM_INT13_DRIVE_PARAMETER
+{ USHORT			DriveSelect;
+  ULONG 			MaxCylinders;
+  USHORT			SectorsPerTrack;
+  USHORT			MaxHeads;
+  USHORT			NumberDrives;
+} CM_INT13_DRIVE_PARAMETER, *PCM_INT13_DRIVE_PARAMETER;
+#include <poppack.h>
+
+typedef
+struct _CM_KEYBOARD_DEVICE_DATA
+{ USHORT			Version;
+  USHORT			Revision;
+  UCHAR 			Type;
+  UCHAR 			Subtype;
+  USHORT			KeyboardFlags;
+} CM_KEYBOARD_DEVICE_DATA, *PCM_KEYBOARD_DEVICE_DATA;
+
+#define KEYBOARD_INSERT_ON                0x80
+#define KEYBOARD_CAPS_LOCK_ON             0x40
+#define KEYBOARD_NUM_LOCK_ON              0x20
+#define KEYBOARD_SCROLL_LOCK_ON           0x10
+#define KEYBOARD_ALT_KEY_DOWN             0x08
+#define KEYBOARD_CTRL_KEY_DOWN            0x04
+#define KEYBOARD_LEFT_SHIFT_DOWN          0x02
+#define KEYBOARD_RIGHT_SHIFT_DOWN         0x01
+
+typedef
+struct _CM_MCA_POS_DATA
+{ USHORT			AdapterId;
+  UCHAR 			PosData1;
+  UCHAR 			PosData2;
+  UCHAR 			PosData3;
+  UCHAR 			PosData4;
+} CM_MCA_POS_DATA, *PCM_MCA_POS_DATA;
+
+typedef
+struct CM_Power_Data_s
+{ ULONG 			PD_Size;
+  DEVICE_POWER_STATE		PD_MostRecentPowerState;
+  ULONG 			PD_Capabilities;
+  ULONG 			PD_D1Latency;
+  ULONG 			PD_D2Latency;
+  ULONG 			PD_D3Latency;
+  DEVICE_POWER_STATE		PD_PowerStateMapping[PowerSystemMaximum];
+} CM_POWER_DATA, *PCM_POWER_DATA;
+
+#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_SCSI_DEVICE_DATA
+{ USHORT			Version;
+  USHORT			Revision;
+  UCHAR 			HostIdentifier;
+} CM_SCSI_DEVICE_DATA, *PCM_SCSI_DEVICE_DATA;
+
+typedef
+struct _CM_SERIAL_DEVICE_DATA
+{ USHORT			Version;
+  USHORT			Revision;
+  ULONG 			BaudClock;
+} CM_SERIAL_DEVICE_DATA, *PCM_SERIAL_DEVICE_DATA;
+
+/* IO_RESOURCE_DESCRIPTOR.Option
+ */
+#define IO_RESOURCE_PREFERRED             0x01
+#define IO_RESOURCE_DEFAULT               0x02
+#define IO_RESOURCE_ALTERNATIVE           0x08
+
+typedef
+struct _IO_RESOURCE_DESCRIPTOR
+{ UCHAR 			Option;
+  UCHAR 			Type;
+  UCHAR 			ShareDisposition;
+  UCHAR 			Spare1;
+  USHORT			Flags;
+  USHORT			Spare2;
+  union
+  { struct
+    { ULONG			    Length;
+      ULONG			    Alignment;
+      PHYSICAL_ADDRESS		    MinimumAddress;
+      PHYSICAL_ADDRESS		    MaximumAddress;
+    }				  Port;
+    struct
+    { ULONG			    Length;
+      ULONG 			    Alignment;
+      PHYSICAL_ADDRESS		    MinimumAddress;
+      PHYSICAL_ADDRESS		    MaximumAddress;
+    }				  Memory;
+    struct
+    { ULONG			    MinimumVector;
+      ULONG			    MaximumVector;
+    }				  Interrupt;
+    struct
+    { ULONG			    MinimumChannel;
+      ULONG			    MaximumChannel;
+    }				  Dma;
+    struct
+    { ULONG			    Length;
+      ULONG			    Alignment;
+      PHYSICAL_ADDRESS		    MinimumAddress;
+      PHYSICAL_ADDRESS		    MaximumAddress;
+    }				  Generic;
+    struct
+    { ULONG			    Data[3];
+    }				  DevicePrivate;
+    struct
+    { ULONG			    Length;
+      ULONG			    MinBusNumber;
+      ULONG			    MaxBusNumber;
+      ULONG			    Reserved;
+    }				  BusNumber;
+    struct
+    { ULONG			    Priority;
+      ULONG			    Reserved1;
+      ULONG			    Reserved2;
+    }				  ConfigData;
+  }				u;
+} IO_RESOURCE_DESCRIPTOR, *PIO_RESOURCE_DESCRIPTOR;
+
+typedef
+struct _IO_RESOURCE_LIST
+{ USHORT			Version;
+  USHORT			Revision;
+  ULONG 			Count;
+  IO_RESOURCE_DESCRIPTOR	Descriptors[1];
+} IO_RESOURCE_LIST, *PIO_RESOURCE_LIST;
+
+typedef
+struct _IO_RESOURCE_REQUIREMENTS_LIST
+{ ULONG 			ListSize;
+  INTERFACE_TYPE 		InterfaceType;
+  ULONG 			BusNumber;
+  ULONG 			SlotNumber;
+  ULONG 			Reserved[3];
+  ULONG 			AlternativeLists;
+  IO_RESOURCE_LIST		List[1];
+} IO_RESOURCE_REQUIREMENTS_LIST, *PIO_RESOURCE_REQUIREMENTS_LIST;
+
+typedef
+struct _CONTROLLER_OBJECT
+{ CSHORT			Type;
+  CSHORT			Size;
+  PVOID 			ControllerExtension;
+  KDEVICE_QUEUE 		DeviceWaitQueue;
+  ULONG 			Spare1;
+  LARGE_INTEGER 		Spare2;
+} CONTROLLER_OBJECT, *PCONTROLLER_OBJECT;
+
+typedef
+enum _DMA_WIDTH
+{ Width8Bits,
+  Width16Bits,
+  Width32Bits,
+  MaximumDmaWidth
+} DMA_WIDTH, *PDMA_WIDTH;
+
+typedef
+enum _DMA_SPEED
+{ Compatible,
+  TypeA,
+  TypeB,
+  TypeC,
+  TypeF,
+  MaximumDmaSpeed
+} DMA_SPEED, *PDMA_SPEED;
+
+/* DEVICE_DESCRIPTION.Version
+ */
+#define DEVICE_DESCRIPTION_VERSION        0x0000
+#define DEVICE_DESCRIPTION_VERSION1       0x0001
+#define DEVICE_DESCRIPTION_VERSION2       0x0002
+
+typedef
+struct _DEVICE_DESCRIPTION
+{ ULONG 			Version;
+  BOOLEAN			Master;
+  BOOLEAN			ScatterGather;
+  BOOLEAN			DemandMode;
+  BOOLEAN			AutoInitialize;
+  BOOLEAN			Dma32BitAddresses;
+  BOOLEAN			IgnoreCount;
+  BOOLEAN			Reserved1;
+  BOOLEAN			Dma64BitAddresses;
+  ULONG 			BusNumber;
+  ULONG 			DmaChannel;
+  INTERFACE_TYPE 		InterfaceType;
+  DMA_WIDTH			DmaWidth;
+  DMA_SPEED			DmaSpeed;
+  ULONG 			MaximumLength;
+  ULONG 			DmaPort;
+} DEVICE_DESCRIPTION, *PDEVICE_DESCRIPTION;
+
+/* VPB.Flags */
+#define VPB_MOUNTED                       0x0001
+#define VPB_LOCKED                        0x0002
+#define VPB_PERSISTENT                    0x0004
+#define VPB_REMOVE_PENDING                0x0008
+#define VPB_RAW_MOUNT                     0x0010
+
+#define MAXIMUM_VOLUME_LABEL_LENGTH       (32 * sizeof(WCHAR))
+
+typedef
+struct _VPB
+{ CSHORT			Type;
+  CSHORT			Size;
+  USHORT			Flags;
+  USHORT			VolumeLabelLength;
+  struct _DEVICE_OBJECT		*DeviceObject;
+  struct _DEVICE_OBJECT		*RealDevice;
+  ULONG 			SerialNumber;
+  ULONG 			ReferenceCount;
+  WCHAR 			VolumeLabel[MAXIMUM_VOLUME_LABEL_LENGTH / sizeof(WCHAR)];
+} VPB, *PVPB;
+
+/* DEVICE_OBJECT.Flags
+ */
+#define DO_VERIFY_VOLUME                  0x00000002
+#define DO_BUFFERED_IO                    0x00000004
+#define DO_EXCLUSIVE                      0x00000008
+#define DO_DIRECT_IO                      0x00000010
+#define DO_MAP_IO_BUFFER                  0x00000020
+#define DO_DEVICE_HAS_NAME                0x00000040
+#define DO_DEVICE_INITIALIZING            0x00000080
+#define DO_SYSTEM_BOOT_PARTITION          0x00000100
+#define DO_LONG_TERM_REQUESTS             0x00000200
+#define DO_NEVER_LAST_DEVICE              0x00000400
+#define DO_SHUTDOWN_REGISTERED            0x00000800
+#define DO_BUS_ENUMERATED_DEVICE          0x00001000
+#define DO_POWER_PAGABLE                  0x00002000
+#define DO_POWER_INRUSH                   0x00004000
+#define DO_LOW_PRIORITY_FILESYSTEM        0x00010000
+
+/* DEVICE_OBJECT.Characteristics
+ */
+#define FILE_REMOVABLE_MEDIA            0x00000001
+#define FILE_READ_ONLY_DEVICE           0x00000002
+#define FILE_FLOPPY_DISKETTE            0x00000004
+#define FILE_WRITE_ONCE_MEDIA           0x00000008
+#define FILE_REMOTE_DEVICE              0x00000010
+#define FILE_DEVICE_IS_MOUNTED          0x00000020
+#define FILE_VIRTUAL_VOLUME             0x00000040
+#define FILE_AUTOGENERATED_DEVICE_NAME  0x00000080
+#define FILE_DEVICE_SECURE_OPEN         0x00000100
+
+/* DEVICE_OBJECT.AlignmentRequirement
+ */
+#define FILE_BYTE_ALIGNMENT             0x00000000
+#define FILE_WORD_ALIGNMENT             0x00000001
+#define FILE_LONG_ALIGNMENT             0x00000003
+#define FILE_QUAD_ALIGNMENT             0x00000007
+#define FILE_OCTA_ALIGNMENT             0x0000000f
+#define FILE_32_BYTE_ALIGNMENT          0x0000001f
+#define FILE_64_BYTE_ALIGNMENT          0x0000003f
+#define FILE_128_BYTE_ALIGNMENT         0x0000007f
+#define FILE_256_BYTE_ALIGNMENT         0x000000ff
+#define FILE_512_BYTE_ALIGNMENT         0x000001ff
+
+/* DEVICE_OBJECT.DeviceType
+ */
+typedef
+struct _DEVICE_OBJECT
+{ CSHORT			Type;
+  USHORT			Size;
+  LONG				ReferenceCount;
+  struct _DRIVER_OBJECT		*DriverObject;
+  struct _DEVICE_OBJECT		*NextDevice;
+  struct _DEVICE_OBJECT		*AttachedDevice;
+  struct _IRP			*CurrentIrp;
+  PIO_TIMER			Timer;
+  ULONG 			Flags;
+  ULONG 			Characteristics;
+  PVPB				Vpb;
+  PVOID 			DeviceExtension;
+  DEVICE_TYPE			DeviceType;
+  CCHAR 			StackSize;
+  union
+  { LIST_ENTRY			  ListEntry;
+    WAIT_CONTEXT_BLOCK		  Wcb;
+  }				Queue;
+  ULONG 			AlignmentRequirement;
+  KDEVICE_QUEUE			DeviceQueue;
+  KDPC				Dpc;
+  ULONG 			ActiveThreadCount;
+  PSECURITY_DESCRIPTOR		SecurityDescriptor;
+  KEVENT			DeviceLock;
+  USHORT			SectorSize;
+  USHORT			Spare1;
+  struct _DEVOBJ_EXTENSION	*DeviceObjectExtension;
+  PVOID 			Reserved;
+} DEVICE_OBJECT, *PDEVICE_OBJECT;
+
+typedef
+enum _DEVICE_RELATION_TYPE
+{ BusRelations,
+  EjectionRelations,
+  PowerRelations,
+  RemovalRelations,
+  TargetDeviceRelation,
+  SingleBusRelations
+} DEVICE_RELATION_TYPE, *PDEVICE_RELATION_TYPE;
+
+typedef
+struct _DEVICE_RELATIONS
+{ ULONG 			Count;
+  PDEVICE_OBJECT		Objects[1];
+} DEVICE_RELATIONS, *PDEVICE_RELATIONS;
+
+typedef
+struct _SCATTER_GATHER_ELEMENT
+{ PHYSICAL_ADDRESS		Address;
+  ULONG 			Length;
+  ULONG_PTR			Reserved;
+} SCATTER_GATHER_ELEMENT, *PSCATTER_GATHER_ELEMENT;
+
+typedef
+struct _SCATTER_GATHER_LIST
+{ ULONG 			NumberOfElements;
+  ULONG_PTR			Reserved;
+  SCATTER_GATHER_ELEMENT	Elements[0];
+} SCATTER_GATHER_LIST, *PSCATTER_GATHER_LIST;
+
+typedef
+struct _MDL
+{ struct _MDL			*Next;
+  CSHORT			Size;
+  CSHORT			MdlFlags;
+  struct _EPROCESS		*Process;
+  PVOID 			MappedSystemVa;
+  PVOID 			StartVa;
+  ULONG 			ByteCount;
+  ULONG 			ByteOffset;
+} MDL, *PMDL;
+
+#define MDL_MAPPED_TO_SYSTEM_VA           0x0001
+#define MDL_PAGES_LOCKED                  0x0002
+#define MDL_SOURCE_IS_NONPAGED_POOL       0x0004
+#define MDL_ALLOCATED_FIXED_SIZE          0x0008
+#define MDL_PARTIAL                       0x0010
+#define MDL_PARTIAL_HAS_BEEN_MAPPED       0x0020
+#define MDL_IO_PAGE_READ                  0x0040
+#define MDL_WRITE_OPERATION               0x0080
+#define MDL_PARENT_MAPPED_SYSTEM_VA       0x0100
+#define MDL_FREE_EXTRA_PTES               0x0200
+#define MDL_IO_SPACE                      0x0800
+#define MDL_NETWORK_HEADER                0x1000
+#define MDL_MAPPING_CAN_FAIL              0x2000
+#define MDL_ALLOCATED_MUST_SUCCEED        0x4000
+
+#define MDL_MAPPING_FLAGS ( \
+  MDL_MAPPED_TO_SYSTEM_VA     | \
+  MDL_PAGES_LOCKED            | \
+  MDL_SOURCE_IS_NONPAGED_POOL | \
+  MDL_PARTIAL_HAS_BEEN_MAPPED | \
+  MDL_PARENT_MAPPED_SYSTEM_VA | \
+  MDL_SYSTEM_VA               | \
+  MDL_IO_SPACE)
+
+typedef VOID DDKAPI
+(*PPUT_DMA_ADAPTER)(
+  /*IN*/ PDMA_ADAPTER  DmaAdapter);
+
+typedef PVOID DDKAPI
+(*PALLOCATE_COMMON_BUFFER)(
+  /*IN*/ PDMA_ADAPTER  DmaAdapter,
+  /*IN*/ ULONG  Length,
+  /*OUT*/ PPHYSICAL_ADDRESS  LogicalAddress,
+  /*IN*/ BOOLEAN  CacheEnabled);
+
+typedef VOID DDKAPI
+(*PFREE_COMMON_BUFFER)(
+  /*IN*/ PDMA_ADAPTER  DmaAdapter,
+  /*IN*/ ULONG  Length,
+  /*IN*/ PHYSICAL_ADDRESS  LogicalAddress,
+  /*IN*/ PVOID  VirtualAddress,
+  /*IN*/ BOOLEAN  CacheEnabled);
+
+typedef NTSTATUS DDKAPI
+(*PALLOCATE_ADAPTER_CHANNEL)(
+  /*IN*/ PDMA_ADAPTER  DmaAdapter,
+  /*IN*/ PDEVICE_OBJECT  DeviceObject,
+  /*IN*/ ULONG  NumberOfMapRegisters,
+  /*IN*/ PDRIVER_CONTROL  ExecutionRoutine,
+  /*IN*/ PVOID  Context);
+
+typedef BOOLEAN DDKAPI
+(*PFLUSH_ADAPTER_BUFFERS)(
+  /*IN*/ PDMA_ADAPTER  DmaAdapter,
+  /*IN*/ PMDL  Mdl,
+  /*IN*/ PVOID  MapRegisterBase,
+  /*IN*/ PVOID  CurrentVa,
+  /*IN*/ ULONG  Length,
+  /*IN*/ BOOLEAN  WriteToDevice);
+
+typedef VOID DDKAPI
+(*PFREE_ADAPTER_CHANNEL)(
+  /*IN*/ PDMA_ADAPTER  DmaAdapter);
+
+typedef VOID DDKAPI
+(*PFREE_MAP_REGISTERS)(
+  /*IN*/ PDMA_ADAPTER  DmaAdapter,
+  PVOID  MapRegisterBase,
+  ULONG  NumberOfMapRegisters);
+
+typedef PHYSICAL_ADDRESS DDKAPI
+(*PMAP_TRANSFER)(
+  /*IN*/ PDMA_ADAPTER  DmaAdapter,
+  /*IN*/ PMDL  Mdl,
+  /*IN*/ PVOID  MapRegisterBase,
+  /*IN*/ PVOID  CurrentVa,
+  /*IN OUT*/ PULONG  Length,
+  /*IN*/ BOOLEAN  WriteToDevice);
+
+typedef ULONG DDKAPI
+(*PGET_DMA_ALIGNMENT)(
+  /*IN*/ PDMA_ADAPTER  DmaAdapter);
+
+typedef ULONG DDKAPI
+(*PREAD_DMA_COUNTER)(
+  /*IN*/ PDMA_ADAPTER  DmaAdapter);
+
+typedef NTSTATUS DDKAPI
+(*PGET_SCATTER_GATHER_LIST)(
+  /*IN*/ PDMA_ADAPTER  DmaAdapter,
+  /*IN*/ PDEVICE_OBJECT  DeviceObject,
+  /*IN*/ PMDL  Mdl,
+  /*IN*/ PVOID  CurrentVa,
+  /*IN*/ ULONG  Length,
+  /*IN*/ PDRIVER_LIST_CONTROL  ExecutionRoutine,
+  /*IN*/ PVOID  Context,
+  /*IN*/ BOOLEAN  WriteToDevice);
+
+typedef VOID DDKAPI
+(*PPUT_SCATTER_GATHER_LIST)(
+  /*IN*/ PDMA_ADAPTER  DmaAdapter,
+  /*IN*/ PSCATTER_GATHER_LIST  ScatterGather,
+  /*IN*/ BOOLEAN  WriteToDevice);
+
+typedef NTSTATUS DDKAPI
+(*PCALCULATE_SCATTER_GATHER_LIST_SIZE)(
+  /*IN*/ PDMA_ADAPTER  DmaAdapter,
+  /*IN*/ PMDL  Mdl  /*OPTIONAL*/,
+  /*IN*/ PVOID  CurrentVa,
+  /*IN*/ ULONG  Length,
+  /*OUT*/ PULONG  ScatterGatherListSize,
+  /*OUT*/ PULONG  pNumberOfMapRegisters  /*OPTIONAL*/);
+
+typedef NTSTATUS DDKAPI
+(*PBUILD_SCATTER_GATHER_LIST)(
+  /*IN*/ PDMA_ADAPTER  DmaAdapter,
+  /*IN*/ PDEVICE_OBJECT  DeviceObject,
+  /*IN*/ PMDL  Mdl,
+  /*IN*/ PVOID  CurrentVa,
+  /*IN*/ ULONG  Length,
+  /*IN*/ PDRIVER_LIST_CONTROL  ExecutionRoutine,
+  /*IN*/ PVOID  Context,
+  /*IN*/ BOOLEAN  WriteToDevice,
+  /*IN*/ PVOID  ScatterGatherBuffer,
+  /*IN*/ ULONG  ScatterGatherLength);
+
+typedef NTSTATUS DDKAPI
+(*PBUILD_MDL_FROM_SCATTER_GATHER_LIST)(
+  /*IN*/ PDMA_ADAPTER  DmaAdapter,
+  /*IN*/ PSCATTER_GATHER_LIST  ScatterGather,
+  /*IN*/ PMDL  OriginalMdl,
+  /*OUT*/ PMDL  *TargetMdl);
+
+typedef
+struct _DMA_OPERATIONS
+{ ULONG 				Size;
+  PPUT_DMA_ADAPTER			PutDmaAdapter;
+  PALLOCATE_COMMON_BUFFER		AllocateCommonBuffer;
+  PFREE_COMMON_BUFFER			FreeCommonBuffer;
+  PALLOCATE_ADAPTER_CHANNEL		AllocateAdapterChannel;
+  PFLUSH_ADAPTER_BUFFERS		FlushAdapterBuffers;
+  PFREE_ADAPTER_CHANNEL			FreeAdapterChannel;
+  PFREE_MAP_REGISTERS			FreeMapRegisters;
+  PMAP_TRANSFER				MapTransfer;
+  PGET_DMA_ALIGNMENT			GetDmaAlignment;
+  PREAD_DMA_COUNTER			ReadDmaCounter;
+  PGET_SCATTER_GATHER_LIST		GetScatterGatherList;
+  PPUT_SCATTER_GATHER_LIST		PutScatterGatherList;
+  PCALCULATE_SCATTER_GATHER_LIST_SIZE	CalculateScatterGatherList;
+  PBUILD_SCATTER_GATHER_LIST		BuildScatterGatherList;
+  PBUILD_MDL_FROM_SCATTER_GATHER_LIST	BuildMdlFromScatterGatherList;
+} DMA_OPERATIONS, *PDMA_OPERATIONS;
+
+typedef
+struct _DMA_ADAPTER
+{ USHORT			Version;
+  USHORT			Size;
+  PDMA_OPERATIONS		DmaOperations;
+} DMA_ADAPTER;
+
+typedef
+enum _FILE_INFORMATION_CLASS
+{ FileDirectoryInformation = 1,
+  FileFullDirectoryInformation,
+  FileBothDirectoryInformation,
+  FileBasicInformation,
+  FileStandardInformation,
+  FileInternalInformation,
+  FileEaInformation,
+  FileAccessInformation,
+  FileNameInformation,
+  FileRenameInformation,
+  FileLinkInformation,
+  FileNamesInformation,
+  FileDispositionInformation,
+  FilePositionInformation,
+  FileFullEaInformation,
+  FileModeInformation,
+  FileAlignmentInformation,
+  FileAllInformation,
+  FileAllocationInformation,
+  FileEndOfFileInformation,
+  FileAlternateNameInformation,
+  FileStreamInformation,
+  FilePipeInformation,
+  FilePipeLocalInformation,
+  FilePipeRemoteInformation,
+  FileMailslotQueryInformation,
+  FileMailslotSetInformation,
+  FileCompressionInformation,
+  FileObjectIdInformation,
+  FileCompletionInformation,
+  FileMoveClusterInformation,
+  FileQuotaInformation,
+  FileReparsePointInformation,
+  FileNetworkOpenInformation,
+  FileAttributeTagInformation,
+  FileTrackingInformation,
+  FileIdBothDirectoryInformation,
+  FileIdFullDirectoryInformation,
+  FileValidDataLengthInformation,
+  FileShortNameInformation,
+  FileMaximumInformation
+} FILE_INFORMATION_CLASS, *PFILE_INFORMATION_CLASS;
+
+typedef
+struct _FILE_POSITION_INFORMATION
+{ LARGE_INTEGER 		CurrentByteOffset;
+} FILE_POSITION_INFORMATION, *PFILE_POSITION_INFORMATION;
+
+typedef
+struct _FILE_ALIGNMENT_INFORMATION
+{ ULONG 			AlignmentRequirement;
+} FILE_ALIGNMENT_INFORMATION;
+
+typedef
+struct _FILE_NAME_INFORMATION
+{ ULONG 			FileNameLength;
+  WCHAR 			FileName[1];
+} FILE_NAME_INFORMATION, *PFILE_NAME_INFORMATION;
+
+typedef
+struct _FILE_BASIC_INFORMATION
+{ LARGE_INTEGER 		CreationTime;
+  LARGE_INTEGER 		LastAccessTime;
+  LARGE_INTEGER 		LastWriteTime;
+  LARGE_INTEGER 		ChangeTime;
+  ULONG 			FileAttributes;
+} FILE_BASIC_INFORMATION, *PFILE_BASIC_INFORMATION;
+
+typedef
+struct _FILE_STANDARD_INFORMATION
+{ LARGE_INTEGER 		AllocationSize;
+  LARGE_INTEGER 		EndOfFile;
+  ULONG 			NumberOfLinks;
+  BOOLEAN			DeletePending;
+  BOOLEAN			Directory;
+} FILE_STANDARD_INFORMATION, *PFILE_STANDARD_INFORMATION;
+
+typedef
+struct _FILE_NETWORK_OPEN_INFORMATION
+{ LARGE_INTEGER 		CreationTime;
+  LARGE_INTEGER 		LastAccessTime;
+  LARGE_INTEGER 		LastWriteTime;
+  LARGE_INTEGER 		ChangeTime;
+  LARGE_INTEGER 		AllocationSize;
+  LARGE_INTEGER 		EndOfFile;
+  ULONG 			FileAttributes;
+} FILE_NETWORK_OPEN_INFORMATION, *PFILE_NETWORK_OPEN_INFORMATION;
+
+typedef
+struct _FILE_ATTRIBUTE_TAG_INFORMATION
+{ ULONG 			FileAttributes;
+  ULONG 			ReparseTag;
+} FILE_ATTRIBUTE_TAG_INFORMATION, *PFILE_ATTRIBUTE_TAG_INFORMATION;
+
+typedef
+struct _FILE_DISPOSITION_INFORMATION
+{ BOOLEAN			DoDeleteFile;
+} FILE_DISPOSITION_INFORMATION, *PFILE_DISPOSITION_INFORMATION;
+
+typedef
+struct _FILE_END_OF_FILE_INFORMATION
+{ LARGE_INTEGER 		EndOfFile;
+} FILE_END_OF_FILE_INFORMATION, *PFILE_END_OF_FILE_INFORMATION;
+
+typedef
+struct _FILE_VALID_DATA_LENGTH_INFORMATION
+{ LARGE_INTEGER 		ValidDataLength;
+} FILE_VALID_DATA_LENGTH_INFORMATION, *PFILE_VALID_DATA_LENGTH_INFORMATION;
+
+typedef
+enum _FSINFOCLASS
+{ FileFsVolumeInformation = 1,
+  FileFsLabelInformation,
+  FileFsSizeInformation,
+  FileFsDeviceInformation,
+  FileFsAttributeInformation,
+  FileFsControlInformation,
+  FileFsFullSizeInformation,
+  FileFsObjectIdInformation,
+  FileFsDriverPathInformation,
+  FileFsMaximumInformation
+} FS_INFORMATION_CLASS, *PFS_INFORMATION_CLASS;
+
+typedef
+struct _FILE_FS_DEVICE_INFORMATION
+{ DEVICE_TYPE			DeviceType;
+  ULONG 			Characteristics;
+} FILE_FS_DEVICE_INFORMATION, *PFILE_FS_DEVICE_INFORMATION;
+
+typedef
+struct _FILE_FULL_EA_INFORMATION
+{ ULONG 			NextEntryOffset;
+  UCHAR 			Flags;
+  UCHAR 			EaNameLength;
+  USHORT 			EaValueLength;
+  CHAR			EaName[1];
+} FILE_FULL_EA_INFORMATION, *PFILE_FULL_EA_INFORMATION;
+
+typedef ULONG_PTR ERESOURCE_THREAD;
+typedef ERESOURCE_THREAD *PERESOURCE_THREAD;
+
+typedef
+struct _OWNER_ENTRY
+{ ERESOURCE_THREAD		OwnerThread;
+  _ANONYMOUS_UNION union
+  { LONG			  OwnerCount;
+    ULONG			  TableSize;
+  } DUMMYUNIONNAME;
+} OWNER_ENTRY, *POWNER_ENTRY;
+
+/* ERESOURCE.Flag
+ */
+#define ResourceNeverExclusive            0x0010
+#define ResourceReleaseByOtherThread      0x0020
+#define ResourceOwnedExclusive            0x0080
+
+#define RESOURCE_HASH_TABLE_SIZE          64
+
+typedef
+struct _ERESOURCE
+{ LIST_ENTRY			SystemResourcesList;
+  POWNER_ENTRY			OwnerTable;
+  SHORT 			ActiveCount;
+  USHORT			Flag;
+  PKSEMAPHORE			SharedWaiters;
+  PKEVENT			ExclusiveWaiters;
+  OWNER_ENTRY			OwnerThreads[2];
+  ULONG 			ContentionCount;
+  USHORT			NumberOfSharedWaiters;
+  USHORT			NumberOfExclusiveWaiters;
+  _ANONYMOUS_UNION union
+  { PVOID			  Address;
+    ULONG_PTR			  CreatorBackTraceIndex;
+  } DUMMYUNIONNAME;
+  KSPIN_LOCK			SpinLock;
+} ERESOURCE, *PERESOURCE;
+
+/* NOTE: PVOID for methods to avoid 'assignment from incompatible pointer type' warning */
+typedef
+struct _DRIVER_EXTENSION
+{ struct _DRIVER_OBJECT 	*DriverObject;
+  PVOID 			AddDevice;
+  ULONG 			Count;
+  UNICODE_STRING		ServiceKeyName;
+} DRIVER_EXTENSION, *PDRIVER_EXTENSION;
+
+typedef BOOLEAN DDKAPI
+(*PFAST_IO_CHECK_IF_POSSIBLE)(
+  /*IN*/ struct _FILE_OBJECT  *FileObject,
+  /*IN*/ PLARGE_INTEGER  FileOffset,
+  /*IN*/ ULONG  Length,
+  /*IN*/ BOOLEAN  Wait,
+  /*IN*/ ULONG  LockKey,
+  /*IN*/ BOOLEAN  CheckForReadOperation,
+  /*OUT*/ PIO_STATUS_BLOCK  IoStatus,
+  /*IN*/ struct _DEVICE_OBJECT  *DeviceObject);
+
+typedef BOOLEAN DDKAPI
+(*PFAST_IO_READ)(
+  /*IN*/ struct _FILE_OBJECT  *FileObject,
+  /*IN*/ PLARGE_INTEGER  FileOffset,
+  /*IN*/ ULONG  Length,
+  /*IN*/ BOOLEAN  Wait,
+  /*IN*/ ULONG  LockKey,
+  /*OUT*/ PVOID  Buffer,
+  /*OUT*/ PIO_STATUS_BLOCK  IoStatus,
+  /*IN*/ struct _DEVICE_OBJECT  *DeviceObject);
+
+typedef BOOLEAN DDKAPI
+(*PFAST_IO_WRITE)(
+  /*IN*/ struct _FILE_OBJECT  *FileObject,
+  /*IN*/ PLARGE_INTEGER  FileOffset,
+  /*IN*/ ULONG  Length,
+  /*IN*/ BOOLEAN  Wait,
+  /*IN*/ ULONG  LockKey,
+  /*IN*/ PVOID  Buffer,
+  /*OUT*/ PIO_STATUS_BLOCK  IoStatus,
+  /*IN*/ struct _DEVICE_OBJECT  *DeviceObject);
+
+typedef BOOLEAN DDKAPI
+(*PFAST_IO_QUERY_BASIC_INFO)(
+  /*IN*/ struct _FILE_OBJECT  *FileObject,
+  /*IN*/ BOOLEAN  Wait,
+  /*OUT*/ PFILE_BASIC_INFORMATION  Buffer,
+  /*OUT*/ PIO_STATUS_BLOCK  IoStatus,
+  /*IN*/ struct _DEVICE_OBJECT  *DeviceObject);
+
+typedef BOOLEAN DDKAPI
+(*PFAST_IO_QUERY_STANDARD_INFO)(
+  /*IN*/ struct _FILE_OBJECT  *FileObject,
+  /*IN*/ BOOLEAN  Wait,
+  /*OUT*/ PFILE_STANDARD_INFORMATION  Buffer,
+  /*OUT*/ PIO_STATUS_BLOCK  IoStatus,
+  /*IN*/ struct _DEVICE_OBJECT  *DeviceObject);
+
+typedef BOOLEAN DDKAPI
+(*PFAST_IO_LOCK)(
+  /*IN*/ struct _FILE_OBJECT  *FileObject,
+  /*IN*/ PLARGE_INTEGER  FileOffset,
+  /*IN*/ PLARGE_INTEGER  Length,
+  PEPROCESS  ProcessId,
+  ULONG  Key,
+  BOOLEAN  FailImmediately,
+  BOOLEAN  ExclusiveLock,
+  /*OUT*/ PIO_STATUS_BLOCK  IoStatus,
+  /*IN*/ struct _DEVICE_OBJECT  *DeviceObject);
+
+typedef BOOLEAN DDKAPI
+(*PFAST_IO_UNLOCK_SINGLE)(
+  /*IN*/ struct _FILE_OBJECT  *FileObject,
+  /*IN*/ PLARGE_INTEGER  FileOffset,
+  /*IN*/ PLARGE_INTEGER  Length,
+  PEPROCESS  ProcessId,
+  ULONG  Key,
+  /*OUT*/ PIO_STATUS_BLOCK  IoStatus,
+  /*IN*/ struct _DEVICE_OBJECT  *DeviceObject);
+
+typedef BOOLEAN DDKAPI
+(*PFAST_IO_UNLOCK_ALL)(
+  /*IN*/ struct _FILE_OBJECT  *FileObject,
+  PEPROCESS  ProcessId,
+  /*OUT*/ PIO_STATUS_BLOCK  IoStatus,
+  /*IN*/ struct _DEVICE_OBJECT  *DeviceObject);
+
+typedef BOOLEAN DDKAPI
+(*PFAST_IO_UNLOCK_ALL_BY_KEY)(
+  /*IN*/ struct _FILE_OBJECT  *FileObject,
+  PVOID  ProcessId,
+  ULONG  Key,
+  /*OUT*/ PIO_STATUS_BLOCK  IoStatus,
+  /*IN*/ struct _DEVICE_OBJECT  *DeviceObject);
+
+typedef BOOLEAN DDKAPI
+(*PFAST_IO_DEVICE_CONTROL)(
+  /*IN*/ struct _FILE_OBJECT  *FileObject,
+  /*IN*/ BOOLEAN  Wait,
+  /*IN*/ PVOID  InputBuffer  /*OPTIONAL*/,
+  /*IN*/ ULONG  InputBufferLength,
+  /*OUT*/ PVOID  OutputBuffer  /*OPTIONAL*/,
+  /*IN*/ ULONG  OutputBufferLength,
+  /*IN*/ ULONG  IoControlCode,
+  /*OUT*/ PIO_STATUS_BLOCK  IoStatus,
+  /*IN*/ struct _DEVICE_OBJECT  *DeviceObject);
+
+typedef VOID DDKAPI
+(*PFAST_IO_ACQUIRE_FILE)(
+  /*IN*/ struct _FILE_OBJECT  *FileObject);
+
+typedef VOID DDKAPI
+(*PFAST_IO_RELEASE_FILE)(
+  /*IN*/ struct _FILE_OBJECT  *FileObject);
+
+typedef VOID DDKAPI
+(*PFAST_IO_DETACH_DEVICE)(
+  /*IN*/ struct _DEVICE_OBJECT  *SourceDevice,
+  /*IN*/ struct _DEVICE_OBJECT  *TargetDevice);
+
+typedef BOOLEAN DDKAPI
+(*PFAST_IO_QUERY_NETWORK_OPEN_INFO)(
+  /*IN*/ struct _FILE_OBJECT  *FileObject,
+  /*IN*/ BOOLEAN  Wait,
+  /*OUT*/ struct _FILE_NETWORK_OPEN_INFORMATION  *Buffer,
+  /*OUT*/ struct _IO_STATUS_BLOCK  *IoStatus,
+  /*IN*/ struct _DEVICE_OBJECT  *DeviceObject);
+
+typedef NTSTATUS DDKAPI
+(*PFAST_IO_ACQUIRE_FOR_MOD_WRITE)(
+  /*IN*/ struct _FILE_OBJECT  *FileObject,
+  /*IN*/ PLARGE_INTEGER  EndingOffset,
+  /*OUT*/ struct _ERESOURCE  **ResourceToRelease,
+  /*IN*/ struct _DEVICE_OBJECT  *DeviceObject);
+
+typedef BOOLEAN DDKAPI
+(*PFAST_IO_MDL_READ)(
+  /*IN*/ struct _FILE_OBJECT  *FileObject,
+  /*IN*/ PLARGE_INTEGER  FileOffset,
+  /*IN*/ ULONG  Length,
+  /*IN*/ ULONG  LockKey,
+  /*OUT*/ PMDL  *MdlChain,
+  /*OUT*/ PIO_STATUS_BLOCK  IoStatus,
+  /*IN*/ struct _DEVICE_OBJECT  *DeviceObject);
+
+typedef BOOLEAN DDKAPI
+(*PFAST_IO_MDL_READ_COMPLETE)(
+  /*IN*/ struct _FILE_OBJECT *FileObject,
+  /*IN*/ PMDL MdlChain,
+  /*IN*/ struct _DEVICE_OBJECT *DeviceObject);
+
+typedef BOOLEAN DDKAPI
+(*PFAST_IO_PREPARE_MDL_WRITE)(
+  /*IN*/ struct _FILE_OBJECT  *FileObject,
+  /*IN*/ PLARGE_INTEGER  FileOffset,
+  /*IN*/ ULONG  Length,
+  /*IN*/ ULONG  LockKey,
+  /*OUT*/ PMDL  *MdlChain,
+  /*OUT*/ PIO_STATUS_BLOCK  IoStatus,
+  /*IN*/ struct _DEVICE_OBJECT  *DeviceObject);
+
+typedef BOOLEAN DDKAPI
+(*PFAST_IO_MDL_WRITE_COMPLETE)(
+  /*IN*/ struct _FILE_OBJECT  *FileObject,
+  /*IN*/ PLARGE_INTEGER  FileOffset,
+  /*IN*/ PMDL  MdlChain,
+  /*IN*/ struct _DEVICE_OBJECT  *DeviceObject);
+
+typedef BOOLEAN DDKAPI
+(*PFAST_IO_READ_COMPRESSED)(
+  /*IN*/ struct _FILE_OBJECT  *FileObject,
+  /*IN*/ PLARGE_INTEGER  FileOffset,
+  /*IN*/ ULONG  Length,
+  /*IN*/ ULONG  LockKey,
+  /*OUT*/ PVOID  Buffer,
+  /*OUT*/ PMDL  *MdlChain,
+  /*OUT*/ PIO_STATUS_BLOCK  IoStatus,
+  /*OUT*/ struct _COMPRESSED_DATA_INFO  *CompressedDataInfo,
+  /*IN*/ ULONG  CompressedDataInfoLength,
+  /*IN*/ struct _DEVICE_OBJECT  *DeviceObject);
+
+typedef BOOLEAN DDKAPI
+(*PFAST_IO_WRITE_COMPRESSED)(
+  /*IN*/ struct _FILE_OBJECT  *FileObject,
+  /*IN*/ PLARGE_INTEGER  FileOffset,
+  /*IN*/ ULONG  Length,
+  /*IN*/ ULONG  LockKey,
+  /*IN*/ PVOID  Buffer,
+  /*OUT*/ PMDL  *MdlChain,
+  /*OUT*/ PIO_STATUS_BLOCK  IoStatus,
+  /*IN*/ struct _COMPRESSED_DATA_INFO  *CompressedDataInfo,
+  /*IN*/ ULONG  CompressedDataInfoLength,
+  /*IN*/ struct _DEVICE_OBJECT  *DeviceObject);
+
+typedef BOOLEAN DDKAPI
+(*PFAST_IO_MDL_READ_COMPLETE_COMPRESSED)(
+  /*IN*/ struct _FILE_OBJECT  *FileObject,
+  /*IN*/ PMDL  MdlChain,
+  /*IN*/ struct _DEVICE_OBJECT  *DeviceObject);
+
+typedef BOOLEAN DDKAPI
+(*PFAST_IO_MDL_WRITE_COMPLETE_COMPRESSED)(
+  /*IN*/ struct _FILE_OBJECT  *FileObject,
+  /*IN*/ PLARGE_INTEGER  FileOffset,
+  /*IN*/ PMDL  MdlChain,
+  /*IN*/ struct _DEVICE_OBJECT  *DeviceObject);
+
+typedef BOOLEAN DDKAPI
+(*PFAST_IO_QUERY_OPEN)(
+  /*IN*/ struct _IRP  *Irp,
+  /*OUT*/ PFILE_NETWORK_OPEN_INFORMATION  NetworkInformation,
+  /*IN*/ struct _DEVICE_OBJECT  *DeviceObject);
+
+typedef NTSTATUS DDKAPI
+(*PFAST_IO_RELEASE_FOR_MOD_WRITE)(
+  /*IN*/ struct _FILE_OBJECT  *FileObject,
+  /*IN*/ struct _ERESOURCE  *ResourceToRelease,
+  /*IN*/ struct _DEVICE_OBJECT  *DeviceObject);
+
+typedef NTSTATUS DDKAPI
+(*PFAST_IO_ACQUIRE_FOR_CCFLUSH)(
+  /*IN*/ struct _FILE_OBJECT  *FileObject,
+  /*IN*/ struct _DEVICE_OBJECT  *DeviceObject);
+
+typedef NTSTATUS DDKAPI
+(*PFAST_IO_RELEASE_FOR_CCFLUSH) (
+  /*IN*/ struct _FILE_OBJECT  *FileObject,
+  /*IN*/ struct _DEVICE_OBJECT  *DeviceObject);
+
+typedef
+struct _FAST_IO_DISPATCH
+{ ULONG 					SizeOfFastIoDispatch;
+  PFAST_IO_CHECK_IF_POSSIBLE			FastIoCheckIfPossible;
+  PFAST_IO_READ 				FastIoRead;
+  PFAST_IO_WRITE				FastIoWrite;
+  PFAST_IO_QUERY_BASIC_INFO			FastIoQueryBasicInfo;
+  PFAST_IO_QUERY_STANDARD_INFO			FastIoQueryStandardInfo;
+  PFAST_IO_LOCK 				FastIoLock;
+  PFAST_IO_UNLOCK_SINGLE			FastIoUnlockSingle;
+  PFAST_IO_UNLOCK_ALL				FastIoUnlockAll;
+  PFAST_IO_UNLOCK_ALL_BY_KEY			FastIoUnlockAllByKey;
+  PFAST_IO_DEVICE_CONTROL			FastIoDeviceControl;
+  PFAST_IO_ACQUIRE_FILE 			AcquireFileForNtCreateSection;
+  PFAST_IO_RELEASE_FILE 			ReleaseFileForNtCreateSection;
+  PFAST_IO_DETACH_DEVICE			FastIoDetachDevice;
+  PFAST_IO_QUERY_NETWORK_OPEN_INFO		FastIoQueryNetworkOpenInfo;
+  PFAST_IO_ACQUIRE_FOR_MOD_WRITE		AcquireForModWrite;
+  PFAST_IO_MDL_READ				MdlRead;
+  PFAST_IO_MDL_READ_COMPLETE			MdlReadComplete;
+  PFAST_IO_PREPARE_MDL_WRITE			PrepareMdlWrite;
+  PFAST_IO_MDL_WRITE_COMPLETE			MdlWriteComplete;
+  PFAST_IO_READ_COMPRESSED			FastIoReadCompressed;
+  PFAST_IO_WRITE_COMPRESSED			FastIoWriteCompressed;
+  PFAST_IO_MDL_READ_COMPLETE_COMPRESSED 	MdlReadCompleteCompressed;
+  PFAST_IO_MDL_WRITE_COMPLETE_COMPRESSED	MdlWriteCompleteCompressed;
+  PFAST_IO_QUERY_OPEN				FastIoQueryOpen;
+  PFAST_IO_RELEASE_FOR_MOD_WRITE		ReleaseForModWrite;
+  PFAST_IO_ACQUIRE_FOR_CCFLUSH			AcquireForCcFlush;
+  PFAST_IO_RELEASE_FOR_CCFLUSH			ReleaseForCcFlush;
+} FAST_IO_DISPATCH, *PFAST_IO_DISPATCH;
+
+typedef
+struct _DRIVER_OBJECT
+{ CSHORT			Type;
+  CSHORT			Size;
+  PDEVICE_OBJECT		DeviceObject;
+  ULONG 			Flags;
+  PVOID 			DriverStart;
+  ULONG 			DriverSize;
+  PVOID 			DriverSection;
+  PDRIVER_EXTENSION		DriverExtension;
+  UNICODE_STRING		DriverName;
+  PUNICODE_STRING		HardwareDatabase;
+  PFAST_IO_DISPATCH		FastIoDispatch;
+  PDRIVER_INITIALIZE		DriverInit;
+  PDRIVER_STARTIO		DriverStartIo;
+  PDRIVER_UNLOAD		DriverUnload;
+  PDRIVER_DISPATCH		MajorFunction[IRP_MJ_MAXIMUM_FUNCTION + 1];
+} DRIVER_OBJECT, *PDRIVER_OBJECT;
+
+typedef
+struct _SECTION_OBJECT_POINTERS
+{ PVOID 			DataSectionObject;
+  PVOID 			SharedCacheMap;
+  PVOID 			ImageSectionObject;
+} SECTION_OBJECT_POINTERS, *PSECTION_OBJECT_POINTERS;
+
+typedef
+struct _IO_COMPLETION_CONTEXT
+{ PVOID 			Port;
+  PVOID 			Key;
+} IO_COMPLETION_CONTEXT, *PIO_COMPLETION_CONTEXT;
+
+/* FILE_OBJECT.Flags
+ */
+#define FO_FILE_OPEN                      0x00000001
+#define FO_SYNCHRONOUS_IO                 0x00000002
+#define FO_ALERTABLE_IO                   0x00000004
+#define FO_NO_INTERMEDIATE_BUFFERING      0x00000008
+#define FO_WRITE_THROUGH                  0x00000010
+#define FO_SEQUENTIAL_ONLY                0x00000020
+#define FO_CACHE_SUPPORTED                0x00000040
+#define FO_NAMED_PIPE                     0x00000080
+#define FO_STREAM_FILE                    0x00000100
+#define FO_MAILSLOT                       0x00000200
+#define FO_GENERATE_AUDIT_ON_CLOSE        0x00000400
+#define FO_DIRECT_DEVICE_OPEN             0x00000800
+#define FO_FILE_MODIFIED                  0x00001000
+#define FO_FILE_SIZE_CHANGED              0x00002000
+#define FO_CLEANUP_COMPLETE               0x00004000
+#define FO_TEMPORARY_FILE                 0x00008000
+#define FO_DELETE_ON_CLOSE                0x00010000
+#define FO_OPENED_CASE_SENSITIVE          0x00020000
+#define FO_HANDLE_CREATED                 0x00040000
+#define FO_FILE_FAST_IO_READ              0x00080000
+#define FO_RANDOM_ACCESS                  0x00100000
+#define FO_FILE_OPEN_CANCELLED            0x00200000
+#define FO_VOLUME_OPEN                    0x00400000
+#define FO_FILE_OBJECT_HAS_EXTENSION      0x00800000
+#define FO_REMOTE_ORIGIN                  0x01000000
+
+typedef
+struct _FILE_OBJECT
+{ CSHORT			Type;
+  CSHORT			Size;
+  PDEVICE_OBJECT		DeviceObject;
+  PVPB				Vpb;
+  PVOID 			FsContext;
+  PVOID 			FsContext2;
+  PSECTION_OBJECT_POINTERS	SectionObjectPointer;
+  PVOID 			PrivateCacheMap;
+  NTSTATUS			FinalStatus;
+  struct _FILE_OBJECT		*RelatedFileObject;
+  BOOLEAN			LockOperation;
+  BOOLEAN			DeletePending;
+  BOOLEAN			ReadAccess;
+  BOOLEAN			WriteAccess;
+  BOOLEAN			DeleteAccess;
+  BOOLEAN			SharedRead;
+  BOOLEAN			SharedWrite;
+  BOOLEAN			SharedDelete;
+  ULONG 			Flags;
+  UNICODE_STRING		FileName;
+  LARGE_INTEGER 		CurrentByteOffset;
+  ULONG 			Waiters;
+  ULONG 			Busy;
+  PVOID 			LastLock;
+  KEVENT			Lock;
+  KEVENT			Event;
+  PIO_COMPLETION_CONTEXT	CompletionContext;
+} FILE_OBJECT, *PFILE_OBJECT;
+
+typedef
+enum _SECURITY_OPERATION_CODE
+{ SetSecurityDescriptor,
+  QuerySecurityDescriptor,
+  DeleteSecurityDescriptor,
+  AssignSecurityDescriptor
+} SECURITY_OPERATION_CODE, *PSECURITY_OPERATION_CODE;
+
+#define INITIAL_PRIVILEGE_COUNT           3
+
+typedef
+struct _INITIAL_PRIVILEGE_SET
+{ ULONG 			PrivilegeCount;
+  ULONG 			Control;
+  LUID_AND_ATTRIBUTES		Privilege[INITIAL_PRIVILEGE_COUNT];
+} INITIAL_PRIVILEGE_SET, *PINITIAL_PRIVILEGE_SET;
+
+typedef
+struct _SECURITY_SUBJECT_CONTEXT
+{ PACCESS_TOKEN			ClientToken;
+  SECURITY_IMPERSONATION_LEVEL	ImpersonationLevel;
+  PACCESS_TOKEN 		PrimaryToken;
+  PVOID 			ProcessAuditId;
+} SECURITY_SUBJECT_CONTEXT, *PSECURITY_SUBJECT_CONTEXT;
+
+#include <pshpack4.h>
+typedef
+struct _ACCESS_STATE
+{ LUID				OperationID;
+  BOOLEAN			SecurityEvaluated;
+  BOOLEAN			GenerateAudit;
+  BOOLEAN			GenerateOnClose;
+  BOOLEAN			PrivilegesAllocated;
+  ULONG 			Flags;
+  ACCESS_MASK			RemainingDesiredAccess;
+  ACCESS_MASK			PreviouslyGrantedAccess;
+  ACCESS_MASK			OriginalDesiredAccess;
+  SECURITY_SUBJECT_CONTEXT	SubjectSecurityContext;
+  PSECURITY_DESCRIPTOR		SecurityDescriptor;
+  PVOID 			AuxData;
+  union
+  { INITIAL_PRIVILEGE_SET	  InitialPrivilegeSet;
+    PRIVILEGE_SET		  PrivilegeSet;
+  }				Privileges;
+  BOOLEAN			AuditPrivileges;
+  UNICODE_STRING		ObjectName;
+  UNICODE_STRING		ObjectTypeName;
+} ACCESS_STATE, *PACCESS_STATE;
+#include <poppack.h>
+
+typedef
+struct _IO_SECURITY_CONTEXT
+{ PSECURITY_QUALITY_OF_SERVICE	SecurityQos;
+  PACCESS_STATE 		AccessState;
+  ACCESS_MASK			DesiredAccess;
+  ULONG 			FullCreateOptions;
+} IO_SECURITY_CONTEXT, *PIO_SECURITY_CONTEXT;
+
+struct _IO_CSQ;
+
+typedef
+struct _IO_CSQ_IRP_CONTEXT
+{ ULONG 			Type;
+  struct _IRP			*Irp;
+  struct _IO_CSQ		*Csq;
+} IO_CSQ_IRP_CONTEXT, *PIO_CSQ_IRP_CONTEXT;
+
+typedef VOID DDKAPI
+(*PIO_CSQ_INSERT_IRP)(
+  /*IN*/ struct _IO_CSQ  *Csq,
+  /*IN*/ PIRP  Irp);
+
+typedef VOID DDKAPI
+(*PIO_CSQ_REMOVE_IRP)(
+  /*IN*/ struct _IO_CSQ  *Csq,
+  /*IN*/ PIRP  Irp);
+
+typedef PIRP DDKAPI
+(*PIO_CSQ_PEEK_NEXT_IRP)(
+  /*IN*/ struct _IO_CSQ  *Csq,
+  /*IN*/ PIRP  Irp,
+  /*IN*/ PVOID  PeekContext);
+
+typedef VOID DDKAPI
+(*PIO_CSQ_ACQUIRE_LOCK)(
+  /*IN*/ struct _IO_CSQ  *Csq,
+  /*OUT*/ PKIRQL  Irql);
+
+typedef VOID DDKAPI
+(*PIO_CSQ_RELEASE_LOCK)(
+  /*IN*/ struct _IO_CSQ  *Csq,
+  /*IN*/ KIRQL  Irql);
+
+typedef VOID DDKAPI
+(*PIO_CSQ_COMPLETE_CANCELED_IRP)(
+  /*IN*/ struct _IO_CSQ  *Csq,
+  /*IN*/ PIRP  Irp);
+
+typedef
+struct _IO_CSQ
+{ ULONG 				Type;
+  PIO_CSQ_INSERT_IRP			CsqInsertIrp;
+  PIO_CSQ_REMOVE_IRP			CsqRemoveIrp;
+  PIO_CSQ_PEEK_NEXT_IRP 		CsqPeekNextIrp;
+  PIO_CSQ_ACQUIRE_LOCK			CsqAcquireLock;
+  PIO_CSQ_RELEASE_LOCK			CsqReleaseLock;
+  PIO_CSQ_COMPLETE_CANCELED_IRP 	CsqCompleteCanceledIrp;
+  PVOID 				ReservePointer;
+} IO_CSQ, *PIO_CSQ;
+
+#include <pshpack4.h>
+typedef
+struct _IO_STACK_LOCATION
+{ UCHAR 						MajorFunction;
+  UCHAR 						MinorFunction;
+  UCHAR 						Flags;
+  UCHAR 						Control;
+  union
+  { struct
+    { PIO_SECURITY_CONTEXT				    SecurityContext;
+      ULONG						    Options;
+      USHORT POINTER_ALIGNMENT				    FileAttributes;
+      USHORT						    ShareAccess;
+      ULONG POINTER_ALIGNMENT				    EaLength;
+    }							  Create;
+    struct
+    { ULONG						    Length;
+      ULONG POINTER_ALIGNMENT				    Key;
+      LARGE_INTEGER					    ByteOffset;
+    }							  Read;
+    struct
+    { ULONG 						    Length;
+      ULONG POINTER_ALIGNMENT				    Key;
+      LARGE_INTEGER					    ByteOffset;
+    }							  Write;
+    struct
+    { ULONG						    Length;
+      FILE_INFORMATION_CLASS POINTER_ALIGNMENT		    FileInformationClass;
+    }							  QueryFile;
+    struct
+    { ULONG						    Length;
+      FILE_INFORMATION_CLASS POINTER_ALIGNMENT		    FileInformationClass;
+      PFILE_OBJECT					    FileObject;
+      _ANONYMOUS_UNION union
+      { _ANONYMOUS_STRUCT struct
+	{ BOOLEAN					      ReplaceIfExists;
+          BOOLEAN					      AdvanceOnly;
+        } DUMMYSTRUCTNAME;
+        ULONG						    ClusterCount;
+        HANDLE						    DeleteHandle;
+      } DUMMYUNIONNAME;
+    }							  SetFile;
+    struct
+    { ULONG						    Length;
+      FS_INFORMATION_CLASS POINTER_ALIGNMENT		    FsInformationClass;
+    }							  QueryVolume;
+    struct
+    { ULONG						    OutputBufferLength;
+      ULONG POINTER_ALIGNMENT				    InputBufferLength;
+      ULONG POINTER_ALIGNMENT				    IoControlCode;
+      PVOID						    Type3InputBuffer;
+    }							  DeviceIoControl;
+    struct
+    { SECURITY_INFORMATION				    SecurityInformation;
+      ULONG POINTER_ALIGNMENT				    Length;
+    }							  QuerySecurity;
+    struct
+    { SECURITY_INFORMATION				    SecurityInformation;
+      PSECURITY_DESCRIPTOR				    SecurityDescriptor;
+    }							  SetSecurity;
+    struct
+    { PVPB						    Vpb;
+      PDEVICE_OBJECT					    DeviceObject;
+    }							  MountVolume;
+    struct
+    { PVPB						    Vpb;
+      PDEVICE_OBJECT					    DeviceObject;
+    }							  VerifyVolume;
+    struct
+    { struct _SCSI_REQUEST_BLOCK			    *Srb;
+    }							  Scsi;
+    struct
+    { DEVICE_RELATION_TYPE				    Type;
+    }							  QueryDeviceRelations;
+    struct
+    { CONST GUID					    *InterfaceType;
+      USHORT						    Size;
+      USHORT						    Version;
+      PINTERFACE					    Interface;
+      PVOID						    InterfaceSpecificData;
+    }							  QueryInterface;
+    struct
+    { PDEVICE_CAPABILITIES				    Capabilities;
+    }							  DeviceCapabilities;
+    struct
+    { PIO_RESOURCE_REQUIREMENTS_LIST			    IoResourceRequirementList;
+    }							  FilterResourceRequirements;
+    struct
+    { ULONG						    WhichSpace;
+      PVOID						    Buffer;
+      ULONG						    Offset;
+      ULONG POINTER_ALIGNMENT				    Length;
+    }							  ReadWriteConfig;
+    struct
+    { BOOLEAN						    Lock;
+    }							  SetLock;
+    struct
+    { BUS_QUERY_ID_TYPE					    IdType;
+    }							  QueryId;
+    struct
+    { DEVICE_TEXT_TYPE					    DeviceTextType;
+      LCID POINTER_ALIGNMENT				    LocaleId;
+    }							  QueryDeviceText;
+    struct
+    { BOOLEAN						    InPath;
+      BOOLEAN						    Reserved[3];
+      DEVICE_USAGE_NOTIFICATION_TYPE POINTER_ALIGNMENT	    Type;
+    }							  UsageNotification;
+    struct
+    { SYSTEM_POWER_STATE				    PowerState;
+    }							  WaitWake;
+    struct
+    { PPOWER_SEQUENCE					    PowerSequence;
+    }							  PowerSequence;
+    struct
+    { ULONG						    SystemContext;
+      POWER_STATE_TYPE POINTER_ALIGNMENT		    Type;
+      POWER_STATE POINTER_ALIGNMENT			    State;
+      POWER_ACTION POINTER_ALIGNMENT			    ShutdownType;
+    }							  Power;
+    struct
+    { PCM_RESOURCE_LIST					    AllocatedResources;
+      PCM_RESOURCE_LIST					    AllocatedResourcesTranslated;
+    }							  StartDevice;
+    struct
+    { ULONG_PTR						    ProviderId;
+      PVOID						    DataPath;
+      ULONG						    BufferSize;
+      PVOID						    Buffer;
+    }							  WMI;
+    struct
+    { PVOID						    Argument1;
+      PVOID						    Argument2;
+      PVOID						    Argument3;
+      PVOID						    Argument4;
+    }							  Others;
+  }							Parameters;
+  PDEVICE_OBJECT					DeviceObject;
+  PFILE_OBJECT						FileObject;
+  PIO_COMPLETION_ROUTINE				CompletionRoutine;
+  PVOID 						Context;
+} IO_STACK_LOCATION, *PIO_STACK_LOCATION;
+#include <poppack.h>
+
+/* IO_STACK_LOCATION.Control
+ */
+#define SL_PENDING_RETURNED               0x01
+#define SL_INVOKE_ON_CANCEL               0x20
+#define SL_INVOKE_ON_SUCCESS              0x40
+#define SL_INVOKE_ON_ERROR                0x80
+
+typedef
+enum _KEY_INFORMATION_CLASS
+{ KeyBasicInformation,
+  KeyNodeInformation,
+  KeyFullInformation,
+  KeyNameInformation,
+  KeyCachedInformation,
+  KeyFlagsInformation
+} KEY_INFORMATION_CLASS;
+
+typedef
+struct _KEY_BASIC_INFORMATION
+{ LARGE_INTEGER 		LastWriteTime;
+  ULONG 			TitleIndex;
+  ULONG 			NameLength;
+  WCHAR 			Name[1];
+} KEY_BASIC_INFORMATION, *PKEY_BASIC_INFORMATION;
+
+typedef
+struct _KEY_FULL_INFORMATION
+{ LARGE_INTEGER 		LastWriteTime;
+  ULONG 			TitleIndex;
+  ULONG 			ClassOffset;
+  ULONG 			ClassLength;
+  ULONG 			SubKeys;
+  ULONG 			MaxNameLen;
+  ULONG 			MaxClassLen;
+  ULONG 			Values;
+  ULONG 			MaxValueNameLen;
+  ULONG 			MaxValueDataLen;
+  WCHAR 			Class[1];
+} KEY_FULL_INFORMATION, *PKEY_FULL_INFORMATION;
+
+typedef
+struct _KEY_NODE_INFORMATION
+{ LARGE_INTEGER 		LastWriteTime;
+  ULONG 			TitleIndex;
+  ULONG 			ClassOffset;
+  ULONG 			ClassLength;
+  ULONG 			NameLength;
+  WCHAR 			Name[1];
+} KEY_NODE_INFORMATION, *PKEY_NODE_INFORMATION;
+
+typedef
+struct _KEY_VALUE_BASIC_INFORMATION
+{ ULONG 			TitleIndex;
+  ULONG 			Type;
+  ULONG 			NameLength;
+  WCHAR 			Name[1];
+} KEY_VALUE_BASIC_INFORMATION, *PKEY_VALUE_BASIC_INFORMATION;
+
+typedef
+struct _KEY_VALUE_FULL_INFORMATION
+{ ULONG 			TitleIndex;
+  ULONG 			Type;
+  ULONG 			DataOffset;
+  ULONG 			DataLength;
+  ULONG 			NameLength;
+  WCHAR 			Name[1];
+} KEY_VALUE_FULL_INFORMATION, *PKEY_VALUE_FULL_INFORMATION;
+
+typedef
+struct _KEY_VALUE_PARTIAL_INFORMATION
+{ ULONG 			TitleIndex;
+  ULONG 			Type;
+  ULONG 			DataLength;
+  UCHAR 			Data[1];
+} KEY_VALUE_PARTIAL_INFORMATION, *PKEY_VALUE_PARTIAL_INFORMATION;
+
+typedef
+struct _KEY_VALUE_PARTIAL_INFORMATION_ALIGN64
+{ ULONG 			Type;
+  ULONG 			DataLength;
+  UCHAR 			Data[1];
+} KEY_VALUE_PARTIAL_INFORMATION_ALIGN64, *PKEY_VALUE_PARTIAL_INFORMATION_ALIGN64;
+
+typedef
+struct _KEY_VALUE_ENTRY
+{ PUNICODE_STRING		ValueName;
+  ULONG 			DataLength;
+  ULONG 			DataOffset;
+  ULONG 			Type;
+} KEY_VALUE_ENTRY, *PKEY_VALUE_ENTRY;
+
+typedef
+enum _KEY_VALUE_INFORMATION_CLASS
+{ KeyValueBasicInformation,
+  KeyValueFullInformation,
+  KeyValuePartialInformation,
+  KeyValueFullInformationAlign64,
+  KeyValuePartialInformationAlign64
+} KEY_VALUE_INFORMATION_CLASS;
+
+/* KEY_VALUE_Xxx.Type
+ */
+#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 PCI_TYPE0_ADDRESSES               6
+#define PCI_TYPE1_ADDRESSES               2
+#define PCI_TYPE2_ADDRESSES               5
+
+typedef
+struct _PCI_COMMON_CONFIG
+{ USHORT			VendorID;
+  USHORT			DeviceID;
+  USHORT			Command;
+  USHORT			Status;
+  UCHAR 			RevisionID;
+  UCHAR 			ProgIf;
+  UCHAR 			SubClass;
+  UCHAR 			BaseClass;
+  UCHAR 			CacheLineSize;
+  UCHAR 			LatencyTimer;
+  UCHAR 			HeaderType;
+  UCHAR 			BIST;
+  union
+  { struct _PCI_HEADER_TYPE_0
+    { ULONG			    BaseAddresses[PCI_TYPE0_ADDRESSES];
+      ULONG			    CIS;
+      USHORT			    SubVendorID;
+      USHORT			    SubSystemID;
+      ULONG			    ROMBaseAddress;
+      UCHAR			    CapabilitiesPtr;
+      UCHAR			    Reserved1[3];
+      ULONG			    Reserved2;
+      UCHAR			    InterruptLine;
+      UCHAR			    InterruptPin;
+      UCHAR			    MinimumGrant;
+      UCHAR			    MaximumLatency;
+    }				  type0;
+    struct _PCI_HEADER_TYPE_1
+    { ULONG			    BaseAddresses[PCI_TYPE1_ADDRESSES];
+      UCHAR			    PrimaryBus;
+      UCHAR			    SecondaryBus;
+      UCHAR			    SubordinateBus;
+      UCHAR			    SecondaryLatency;
+      UCHAR			    IOBase;
+      UCHAR			    IOLimit;
+      USHORT			    SecondaryStatus;
+      USHORT			    MemoryBase;
+      USHORT			    MemoryLimit;
+      USHORT			    PrefetchBase;
+      USHORT			    PrefetchLimit;
+      ULONG			    PrefetchBaseUpper32;
+      ULONG			    PrefetchLimitUpper32;
+      USHORT			    IOBaseUpper16;
+      USHORT			    IOLimitUpper16;
+      UCHAR			    CapabilitiesPtr;
+      UCHAR			    Reserved1[3];
+      ULONG			    ROMBaseAddress;
+      UCHAR			    InterruptLine;
+      UCHAR			    InterruptPin;
+      USHORT			    BridgeControl;
+    }				  type1;
+    struct _PCI_HEADER_TYPE_2
+    { ULONG			    SocketRegistersBaseAddress;
+      UCHAR			    CapabilitiesPtr;
+      UCHAR			    Reserved;
+      USHORT			    SecondaryStatus;
+      UCHAR			    PrimaryBus;
+      UCHAR			    SecondaryBus;
+      UCHAR			    SubordinateBus;
+      UCHAR			    SecondaryLatency;
+      struct
+      { ULONG			      Base;
+	ULONG			      Limit;
+      }				    Range[PCI_TYPE2_ADDRESSES - 1];
+      UCHAR			    InterruptLine;
+      UCHAR			    InterruptPin;
+      USHORT			    BridgeControl;
+    }				  type2;
+  }				u;
+  UCHAR 			DeviceSpecific[192];
+} PCI_COMMON_CONFIG, *PPCI_COMMON_CONFIG;
+
+/* PCI_COMMON_CONFIG.Command
+ */
+#define PCI_ENABLE_IO_SPACE               0x0001
+#define PCI_ENABLE_MEMORY_SPACE           0x0002
+#define PCI_ENABLE_BUS_MASTER             0x0004
+#define PCI_ENABLE_SPECIAL_CYCLES         0x0008
+#define PCI_ENABLE_WRITE_AND_INVALIDATE   0x0010
+#define PCI_ENABLE_VGA_COMPATIBLE_PALETTE 0x0020
+#define PCI_ENABLE_PARITY                 0x0040
+#define PCI_ENABLE_WAIT_CYCLE             0x0080
+#define PCI_ENABLE_SERR                   0x0100
+#define PCI_ENABLE_FAST_BACK_TO_BACK      0x0200
+
+/* PCI_COMMON_CONFIG.Status
+ */
+#define PCI_STATUS_CAPABILITIES_LIST      0x0010
+#define PCI_STATUS_66MHZ_CAPABLE          0x0020
+#define PCI_STATUS_UDF_SUPPORTED          0x0040
+#define PCI_STATUS_FAST_BACK_TO_BACK      0x0080
+#define PCI_STATUS_DATA_PARITY_DETECTED   0x0100
+#define PCI_STATUS_DEVSEL                 0x0600
+#define PCI_STATUS_SIGNALED_TARGET_ABORT  0x0800
+#define PCI_STATUS_RECEIVED_TARGET_ABORT  0x1000
+#define PCI_STATUS_RECEIVED_MASTER_ABORT  0x2000
+#define PCI_STATUS_SIGNALED_SYSTEM_ERROR  0x4000
+#define PCI_STATUS_DETECTED_PARITY_ERROR  0x8000
+
+/* PCI_COMMON_CONFIG.HeaderType
+ */
+#define PCI_MULTIFUNCTION                 0x80
+#define PCI_DEVICE_TYPE                   0x00
+#define PCI_BRIDGE_TYPE                   0x01
+#define PCI_CARDBUS_BRIDGE_TYPE           0x02
+
+#define PCI_CONFIGURATION_TYPE(PciData) \
+  (((PPCI_COMMON_CONFIG) (PciData))->HeaderType & ~PCI_MULTIFUNCTION)
+
+#define PCI_MULTIFUNCTION_DEVICE(PciData) \
+  ((((PPCI_COMMON_CONFIG) (PciData))->HeaderType & PCI_MULTIFUNCTION) != 0)
+
+typedef
+struct _PCI_SLOT_NUMBER
+{ union
+  { struct
+    { ULONG			    DeviceNumber   :  5;
+      ULONG			    FunctionNumber :  3;
+      ULONG			    Reserved       : 24;
+    }				  bits;
+    ULONG			  AsULONG;
+  }				u;
+} PCI_SLOT_NUMBER, *PPCI_SLOT_NUMBER;
+
+typedef
+enum _POOL_TYPE
+{ NonPagedPool,
+  PagedPool,
+  NonPagedPoolMustSucceed,
+  DontUseThisType,
+  NonPagedPoolCacheAligned,
+  PagedPoolCacheAligned,
+  NonPagedPoolCacheAlignedMustS,
+  MaxPoolType,
+  NonPagedPoolSession = 32,
+  PagedPoolSession,
+  NonPagedPoolMustSucceedSession,
+  DontUseThisTypeSession,
+  NonPagedPoolCacheAlignedSession,
+  PagedPoolCacheAlignedSession,
+  NonPagedPoolCacheAlignedMustSSession
+} POOL_TYPE;
+
+typedef
+enum _EX_POOL_PRIORITY
+{ LowPoolPriority				=  0,
+  LowPoolPrioritySpecialPoolOverrun		=  8,
+  LowPoolPrioritySpecialPoolUnderrun		=  9,
+  NormalPoolPriority				= 16,
+  NormalPoolPrioritySpecialPoolOverrun		= 24,
+  NormalPoolPrioritySpecialPoolUnderrun 	= 25,
+  HighPoolPriority				= 32,
+  HighPoolPrioritySpecialPoolOverrun		= 40,
+  HighPoolPrioritySpecialPoolUnderrun		= 41
+} EX_POOL_PRIORITY;
+
+/* PRIVILEGE_SET.Control
+ */
+#define PRIVILEGE_SET_ALL_NECESSARY		   1
+
+typedef
+struct _RTL_OSVERSIONINFOW
+{ ULONG 			dwOSVersionInfoSize;
+  ULONG 			dwMajorVersion;
+  ULONG 			dwMinorVersion;
+  ULONG 			dwBuildNumber;
+  ULONG 			dwPlatformId;
+  WCHAR 			szCSDVersion[128];
+} RTL_OSVERSIONINFOW, *PRTL_OSVERSIONINFOW;
+
+typedef
+struct _RTL_OSVERSIONINFOEXW
+{ ULONG 			dwOSVersionInfoSize;
+  ULONG 			dwMajorVersion;
+  ULONG 			dwMinorVersion;
+  ULONG 			dwBuildNumber;
+  ULONG 			dwPlatformId;
+  WCHAR 			szCSDVersion[128];
+  USHORT			wServicePackMajor;
+  USHORT			wServicePackMinor;
+  USHORT			wSuiteMask;
+  UCHAR 			wProductType;
+  UCHAR 			wReserved;
+} RTL_OSVERSIONINFOEXW, *PRTL_OSVERSIONINFOEXW;
+
+NTOSAPI ULONGLONG DDKAPI
+VerSetConditionMask(
+  /*IN*/ ULONGLONG  ConditionMask,
+  /*IN*/ ULONG  TypeMask,
+  /*IN*/ UCHAR  Condition
+);
+
+#define VER_SET_CONDITION(ConditionMask, TypeBitMask, ComparisonType)  \
+        ((ConditionMask) = VerSetConditionMask((ConditionMask), \
+        (TypeBitMask), (ComparisonType)))
+
+/* RtlVerifyVersionInfo() TypeMask
+ */
+#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
+
+/* RtlVerifyVersionInfo() ComparisonType
+ */
+#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
+
+typedef
+struct _RTL_BITMAP
+{ ULONG 			SizeOfBitMap;
+  PULONG			Buffer;
+} RTL_BITMAP, *PRTL_BITMAP;
+
+typedef
+struct _RTL_BITMAP_RUN
+{ ULONG 			StartingIndex;
+    ULONG 			NumberOfBits;
+} RTL_BITMAP_RUN, *PRTL_BITMAP_RUN;
+
+typedef NTSTATUS DDKAPI
+(*PRTL_QUERY_REGISTRY_ROUTINE)(
+  /*IN*/ PWSTR  ValueName,
+  /*IN*/ ULONG  ValueType,
+  /*IN*/ PVOID  ValueData,
+  /*IN*/ ULONG  ValueLength,
+  /*IN*/ PVOID  Context,
+  /*IN*/ PVOID  EntryContext);
+
+#define RTL_REGISTRY_ABSOLUTE             0
+#define RTL_REGISTRY_SERVICES             1
+#define RTL_REGISTRY_CONTROL              2
+#define RTL_REGISTRY_WINDOWS_NT           3
+#define RTL_REGISTRY_DEVICEMAP            4
+#define RTL_REGISTRY_USER                 5
+
+/* RTL_QUERY_REGISTRY_TABLE.Flags */
+#define RTL_QUERY_REGISTRY_SUBKEY         0x00000001
+#define RTL_QUERY_REGISTRY_TOPKEY         0x00000002
+#define RTL_QUERY_REGISTRY_REQUIRED       0x00000004
+#define RTL_QUERY_REGISTRY_NOVALUE        0x00000008
+#define RTL_QUERY_REGISTRY_NOEXPAND       0x00000010
+#define RTL_QUERY_REGISTRY_DIRECT         0x00000020
+#define RTL_QUERY_REGISTRY_DELETE         0x00000040
+
+typedef
+struct _RTL_QUERY_REGISTRY_TABLE
+{ PRTL_QUERY_REGISTRY_ROUTINE	QueryRoutine;
+  ULONG 			Flags;
+  PWSTR 			Name;
+  PVOID 			EntryContext;
+  ULONG 			DefaultType;
+  PVOID 			DefaultData;
+  ULONG 			DefaultLength;
+} RTL_QUERY_REGISTRY_TABLE, *PRTL_QUERY_REGISTRY_TABLE;
+
+typedef
+struct _TIME_FIELDS
+{ CSHORT			Year;
+  CSHORT			Month;
+  CSHORT			Day;
+  CSHORT			Hour;
+  CSHORT			Minute;
+  CSHORT			Second;
+  CSHORT			Milliseconds;
+  CSHORT			Weekday;
+} TIME_FIELDS, *PTIME_FIELDS;
+
+typedef PVOID DDKAPI
+(*PALLOCATE_FUNCTION)(
+  /*IN*/ POOL_TYPE  PoolType,
+  /*IN*/ SIZE_T  NumberOfBytes,
+  /*IN*/ ULONG  Tag
+);
+
+typedef VOID DDKAPI
+(*PFREE_FUNCTION)( /*IN*/ PVOID Buffer );
+
+#define GENERAL_LOOKASIDE_S \
+  SLIST_HEADER  ListHead; \
+  USHORT  Depth; \
+  USHORT  MaximumDepth; \
+  ULONG  TotalAllocates; \
+  _ANONYMOUS_UNION union { \
+    ULONG  AllocateMisses; \
+    ULONG  AllocateHits; \
+  } DUMMYUNIONNAME; \
+  ULONG  TotalFrees; \
+  _ANONYMOUS_UNION union { \
+    ULONG  FreeMisses; \
+    ULONG  FreeHits; \
+  } DUMMYUNIONNAME2; \
+  POOL_TYPE  Type; \
+  ULONG  Tag; \
+  ULONG  Size; \
+  PALLOCATE_FUNCTION  Allocate; \
+  PFREE_FUNCTION  Free; \
+  LIST_ENTRY  ListEntry; \
+  ULONG  LastTotalAllocates; \
+  _ANONYMOUS_UNION union { \
+    ULONG  LastAllocateMisses; \
+    ULONG  LastAllocateHits; \
+  } DUMMYUNIONNAME3; \
+  ULONG Future[2];
+
+typedef
+struct _GENERAL_LOOKASIDE
+{ GENERAL_LOOKASIDE_S
+} GENERAL_LOOKASIDE, *PGENERAL_LOOKASIDE;
+
+typedef
+struct _NPAGED_LOOKASIDE_LIST
+{ GENERAL_LOOKASIDE_S
+  KSPIN_LOCK			Obsoleted;
+} NPAGED_LOOKASIDE_LIST, *PNPAGED_LOOKASIDE_LIST;
+
+typedef
+struct _PAGED_LOOKASIDE_LIST
+{ GENERAL_LOOKASIDE_S
+  FAST_MUTEX			Obsoleted;
+} PAGED_LOOKASIDE_LIST, *PPAGED_LOOKASIDE_LIST;
+
+typedef struct _CALLBACK_OBJECT *PCALLBACK_OBJECT;
+
+typedef VOID DDKAPI
+(*PCALLBACK_FUNCTION)(
+  /*IN*/ PVOID  CallbackContext,
+  /*IN*/ PVOID  Argument1,
+  /*IN*/ PVOID  Argument2
+);
+
+typedef
+enum _EVENT_TYPE
+{ NotificationEvent,
+  SynchronizationEvent
+} EVENT_TYPE;
+
+typedef
+enum _KWAIT_REASON
+{ Executive,
+  FreePage,
+  PageIn,
+  PoolAllocation,
+  DelayExecution,
+  Suspended,
+  UserRequest,
+  WrExecutive,
+  WrFreePage,
+  WrPageIn,
+  WrPoolAllocation,
+  WrDelayExecution,
+  WrSuspended,
+  WrUserRequest,
+  WrEventPair,
+  WrQueue,
+  WrLpcReceive,
+  WrLpcReply,
+  WrVirtualMemory,
+  WrPageOut,
+  WrRendezvous,
+  Spare2,
+  Spare3,
+  Spare4,
+  Spare5,
+  Spare6,
+  WrKernel,
+  MaximumWaitReason
+} KWAIT_REASON;
+
+typedef
+struct _KWAIT_BLOCK
+{ LIST_ENTRY					WaitListEntry;
+  struct _KTHREAD * RESTRICTED_POINTER		Thread;
+  PVOID 					Object;
+  struct _KWAIT_BLOCK * RESTRICTED_POINTER	NextWaitBlock;
+  USHORT					WaitKey;
+  USHORT					WaitType;
+} KWAIT_BLOCK, *PKWAIT_BLOCK, *RESTRICTED_POINTER PRKWAIT_BLOCK;
+
+typedef struct _IO_REMOVE_LOCK_TRACKING_BLOCK * PIO_REMOVE_LOCK_TRACKING_BLOCK;
+
+typedef
+struct _IO_REMOVE_LOCK_COMMON_BLOCK
+{ BOOLEAN			Removed;
+  BOOLEAN			Reserved[3];
+  LONG				IoCount;
+  KEVENT			RemoveEvent;
+} IO_REMOVE_LOCK_COMMON_BLOCK;
+
+typedef
+struct _IO_REMOVE_LOCK_DBG_BLOCK
+{ LONG					Signature;
+  LONG					HighWatermark;
+  LONGLONG				MaxLockedTicks;
+  LONG					AllocateTag;
+  LIST_ENTRY				LockList;
+  KSPIN_LOCK				Spin;
+  LONG					LowMemoryCount;
+  ULONG 				Reserved1[4];
+  PVOID 				Reserved2;
+  PIO_REMOVE_LOCK_TRACKING_BLOCK	Blocks;
+} IO_REMOVE_LOCK_DBG_BLOCK;
+
+typedef
+struct _IO_REMOVE_LOCK
+{ IO_REMOVE_LOCK_COMMON_BLOCK		Common;
+#ifdef DBG
+  IO_REMOVE_LOCK_DBG_BLOCK		Dbg;
+#endif
+} IO_REMOVE_LOCK, *PIO_REMOVE_LOCK;
+
+typedef struct _IO_WORKITEM *PIO_WORKITEM;
+
+typedef VOID DDKAPI
+(*PIO_WORKITEM_ROUTINE)(
+  /*IN*/ PDEVICE_OBJECT  DeviceObject,
+  /*IN*/ PVOID  Context);
+
+typedef
+struct _SHARE_ACCESS
+{ ULONG 			OpenCount;
+  ULONG 			Readers;
+  ULONG 			Writers;
+  ULONG 			Deleters;
+  ULONG 			SharedRead;
+  ULONG 			SharedWrite;
+  ULONG 			SharedDelete;
+} SHARE_ACCESS, *PSHARE_ACCESS;
+
+typedef
+enum _KINTERRUPT_MODE
+{ LevelSensitive,
+  Latched
+} KINTERRUPT_MODE;
+
+typedef VOID DDKAPI
+(*PKINTERRUPT_ROUTINE)( VOID );
+
+typedef
+enum _KPROFILE_SOURCE
+{ ProfileTime,
+  ProfileAlignmentFixup,
+  ProfileTotalIssues,
+  ProfilePipelineDry,
+  ProfileLoadInstructions,
+  ProfilePipelineFrozen,
+  ProfileBranchInstructions,
+  ProfileTotalNonissues,
+  ProfileDcacheMisses,
+  ProfileIcacheMisses,
+  ProfileCacheMisses,
+  ProfileBranchMispredictions,
+  ProfileStoreInstructions,
+  ProfileFpInstructions,
+  ProfileIntegerInstructions,
+  Profile2Issue,
+  Profile3Issue,
+  Profile4Issue,
+  ProfileSpecialInstructions,
+  ProfileTotalCycles,
+  ProfileIcacheIssues,
+  ProfileDcacheAccesses,
+  ProfileMemoryBarrierCycles,
+  ProfileLoadLinkedIssues,
+  ProfileMaximum
+} KPROFILE_SOURCE;
+
+typedef
+enum _CREATE_FILE_TYPE
+{ CreateFileTypeNone,
+  CreateFileTypeNamedPipe,
+  CreateFileTypeMailslot
+} CREATE_FILE_TYPE;
+
+typedef
+struct _CONFIGURATION_INFORMATION
+{ ULONG 			DiskCount;
+  ULONG 			FloppyCount;
+  ULONG 			CdRomCount;
+  ULONG 			TapeCount;
+  ULONG 			ScsiPortCount;
+  ULONG 			SerialCount;
+  ULONG 			ParallelCount;
+  BOOLEAN			AtDiskPrimaryAddressClaimed;
+  BOOLEAN			AtDiskSecondaryAddressClaimed;
+  ULONG 			Version;
+  ULONG 			MediumChangerCount;
+} CONFIGURATION_INFORMATION, *PCONFIGURATION_INFORMATION;
+
+typedef
+enum _CONFIGURATION_TYPE
+{ ArcSystem,
+  CentralProcessor,
+  FloatingPointProcessor,
+  PrimaryIcache,
+  PrimaryDcache,
+  SecondaryIcache,
+  SecondaryDcache,
+  SecondaryCache,
+  EisaAdapter,
+  TcAdapter,
+  ScsiAdapter,
+  DtiAdapter,
+  MultiFunctionAdapter,
+  DiskController,
+  TapeController,
+  CdromController,
+  WormController,
+  SerialController,
+  NetworkController,
+  DisplayController,
+  ParallelController,
+  PointerController,
+  KeyboardController,
+  AudioController,
+  OtherController,
+  DiskPeripheral,
+  FloppyDiskPeripheral,
+  TapePeripheral,
+  ModemPeripheral,
+  MonitorPeripheral,
+  PrinterPeripheral,
+  PointerPeripheral,
+  KeyboardPeripheral,
+  TerminalPeripheral,
+  OtherPeripheral,
+  LinePeripheral,
+  NetworkPeripheral,
+  SystemMemory,
+  DockingInformation,
+  RealModeIrqRoutingTable,
+  MaximumType
+} CONFIGURATION_TYPE, *PCONFIGURATION_TYPE;
+
+typedef NTSTATUS
+(*PIO_QUERY_DEVICE_ROUTINE)(
+  /*IN*/ PVOID  Context,
+  /*IN*/ PUNICODE_STRING  PathName,
+  /*IN*/ INTERFACE_TYPE  BusType,
+  /*IN*/ ULONG  BusNumber,
+  /*IN*/ PKEY_VALUE_FULL_INFORMATION  *BusInformation,
+  /*IN*/ CONFIGURATION_TYPE  ControllerType,
+  /*IN*/ ULONG  ControllerNumber,
+  /*IN*/ PKEY_VALUE_FULL_INFORMATION  *ControllerInformation,
+  /*IN*/ CONFIGURATION_TYPE  PeripheralType,
+  /*IN*/ ULONG  PeripheralNumber,
+  /*IN*/ PKEY_VALUE_FULL_INFORMATION  *PeripheralInformation
+);
+
+typedef
+enum _WORK_QUEUE_TYPE
+{ CriticalWorkQueue,
+  DelayedWorkQueue,
+  HyperCriticalWorkQueue,
+  MaximumWorkQueue
+} WORK_QUEUE_TYPE;
+
+typedef VOID DDKAPI
+(*PWORKER_THREAD_ROUTINE)(
+  /*IN*/ PVOID Parameter);
+
+typedef
+struct _WORK_QUEUE_ITEM
+{ LIST_ENTRY			List;
+  PWORKER_THREAD_ROUTINE	WorkerRoutine;
+  PVOID 			Parameter;
+} WORK_QUEUE_ITEM, *PWORK_QUEUE_ITEM;
+
+typedef
+enum _KBUGCHECK_BUFFER_DUMP_STATE
+{ BufferEmpty,
+  BufferInserted,
+  BufferStarted,
+  BufferFinished,
+  BufferIncomplete
+} KBUGCHECK_BUFFER_DUMP_STATE;
+
+typedef VOID DDKAPI
+(*PKBUGCHECK_CALLBACK_ROUTINE)(
+  /*IN*/ PVOID  Buffer,
+  /*IN*/ ULONG  Length);
+
+typedef
+struct _KBUGCHECK_CALLBACK_RECORD
+{ LIST_ENTRY			Entry;
+  PKBUGCHECK_CALLBACK_ROUTINE	CallbackRoutine;
+  PVOID 			Buffer;
+  ULONG 			Length;
+  PUCHAR			Component;
+  ULONG_PTR			Checksum;
+  UCHAR 			State;
+} KBUGCHECK_CALLBACK_RECORD, *PKBUGCHECK_CALLBACK_RECORD;
+
+/* VOID
+ * KeInitializeCallbackRecord(
+ * IN PKBUGCHECK_CALLBACK_RECORD  CallbackRecord)
+ */
+#define KeInitializeCallbackRecord(CallbackRecord) \
+  CallbackRecord->State = BufferEmpty;
+
+typedef
+enum _KDPC_IMPORTANCE
+{ LowImportance,
+  MediumImportance,
+  HighImportance
+} KDPC_IMPORTANCE;
+
+typedef
+enum _MEMORY_CACHING_TYPE_ORIG
+{ MmFrameBufferCached		= 2
+} MEMORY_CACHING_TYPE_ORIG;
+
+typedef
+enum _MEMORY_CACHING_TYPE
+{ MmNonCached			= FALSE,
+  MmCached			= TRUE,
+  MmWriteCombined		= MmFrameBufferCached,
+  MmHardwareCoherentCached,
+  MmNonCachedUnordered,
+  MmUSWCCached,
+  MmMaximumCacheType
+} MEMORY_CACHING_TYPE;
+
+typedef
+enum _MM_PAGE_PRIORITY
+{ LowPagePriority		=  0,
+  NormalPagePriority		= 16,
+  HighPagePriority		= 32
+} MM_PAGE_PRIORITY;
+
+typedef
+enum _LOCK_OPERATION
+{ IoReadAccess,
+  IoWriteAccess,
+  IoModifyAccess
+} LOCK_OPERATION;
+
+typedef
+enum _MM_SYSTEM_SIZE
+{ MmSmallSystem,
+  MmMediumSystem,
+  MmLargeSystem
+} MM_SYSTEM_SIZE;
+
+typedef
+struct _OBJECT_HANDLE_INFORMATION
+{ ULONG 			HandleAttributes;
+  ACCESS_MASK			GrantedAccess;
+} OBJECT_HANDLE_INFORMATION, *POBJECT_HANDLE_INFORMATION;
+
+typedef
+struct _CLIENT_ID
+{ HANDLE			UniqueProcess;
+  HANDLE			UniqueThread;
+} CLIENT_ID, *PCLIENT_ID;
+
+typedef VOID DDKAPI
+(*PKSTART_ROUTINE)(
+  /*IN*/ PVOID  StartContext);
+
+typedef VOID DDKAPI
+(*PCREATE_PROCESS_NOTIFY_ROUTINE)(
+  /*IN*/ HANDLE  ParentId,
+  /*IN*/ HANDLE  ProcessId,
+  /*IN*/ BOOLEAN  Create);
+
+typedef VOID DDKAPI
+(*PCREATE_THREAD_NOTIFY_ROUTINE)(
+  /*IN*/ HANDLE  ProcessId,
+  /*IN*/ HANDLE  ThreadId,
+  /*IN*/ BOOLEAN  Create);
+
+typedef
+struct _IMAGE_INFO
+{ _ANONYMOUS_UNION union
+  { ULONG			  Properties;
+    _ANONYMOUS_STRUCT struct
+    { ULONG			    ImageAddressingMode  :  8;
+      ULONG			    SystemModeImage      :  1;
+      ULONG			    ImageMappedToAllPids :  1;
+      ULONG			    Reserved             : 22;
+    } DUMMYSTRUCTNAME;
+  } DUMMYUNIONNAME;
+  PVOID 			ImageBase;
+  ULONG 			ImageSelector;
+  SIZE_T			ImageSize;
+  ULONG 			ImageSectionNumber;
+} IMAGE_INFO, *PIMAGE_INFO;
+
+#define IMAGE_ADDRESSING_MODE_32BIT       3
+
+typedef VOID DDKAPI
+(*PLOAD_IMAGE_NOTIFY_ROUTINE)(
+  /*IN*/ PUNICODE_STRING  FullImageName,
+  /*IN*/ HANDLE  ProcessId,
+  /*IN*/ PIMAGE_INFO  ImageInfo);
+
+typedef
+enum _PROCESSINFOCLASS
+{ ProcessBasicInformation,
+  ProcessQuotaLimits,
+  ProcessIoCounters,
+  ProcessVmCounters,
+  ProcessTimes,
+  ProcessBasePriority,
+  ProcessRaisePriority,
+  ProcessDebugPort,
+  ProcessExceptionPort,
+  ProcessAccessToken,
+  ProcessLdtInformation,
+  ProcessLdtSize,
+  ProcessDefaultHardErrorMode,
+  ProcessIoPortHandlers,
+  ProcessPooledUsageAndLimits,
+  ProcessWorkingSetWatch,
+  ProcessUserModeIOPL,
+  ProcessEnableAlignmentFaultFixup,
+  ProcessPriorityClass,
+  ProcessWx86Information,
+  ProcessHandleCount,
+  ProcessAffinityMask,
+  ProcessPriorityBoost,
+  ProcessDeviceMap,
+  ProcessSessionInformation,
+  ProcessForegroundInformation,
+  ProcessWow64Information,
+  ProcessImageFileName,
+  ProcessLUIDDeviceMapsEnabled,
+  ProcessBreakOnTermination,
+  ProcessDebugObjectHandle,
+  ProcessDebugFlags,
+  ProcessHandleTracing,
+  MaxProcessInfoClass
+} PROCESSINFOCLASS;
+
+typedef
+enum _THREADINFOCLASS
+{ ThreadBasicInformation,
+  ThreadTimes,
+  ThreadPriority,
+  ThreadBasePriority,
+  ThreadAffinityMask,
+  ThreadImpersonationToken,
+  ThreadDescriptorTableEntry,
+  ThreadEnableAlignmentFaultFixup,
+  ThreadEventPair_Reusable,
+  ThreadQuerySetWin32StartAddress,
+  ThreadZeroTlsCell,
+  ThreadPerformanceCount,
+  ThreadAmILastThread,
+  ThreadIdealProcessor,
+  ThreadPriorityBoost,
+  ThreadSetTlsArrayAddress,
+  ThreadIsIoPending,
+  ThreadHideFromDebugger,
+  ThreadBreakOnTermination,
+  MaxThreadInfoClass
+} THREADINFOCLASS;
+
+#define ES_SYSTEM_REQUIRED                0x00000001
+#define ES_DISPLAY_REQUIRED               0x00000002
+#define ES_USER_PRESENT                   0x00000004
+#define ES_CONTINUOUS                     0x80000000
+
+typedef ULONG EXECUTION_STATE;
+
+typedef VOID DDKAPI
+(*PREQUEST_POWER_COMPLETE)(
+  /*IN*/ PDEVICE_OBJECT  DeviceObject,
+  /*IN*/ UCHAR  MinorFunction,
+  /*IN*/ POWER_STATE  PowerState,
+  /*IN*/ PVOID  Context,
+  /*IN*/ PIO_STATUS_BLOCK  IoStatus
+);
+
+typedef
+enum _TRACE_INFORMATION_CLASS
+{ TraceIdClass,
+  TraceHandleClass,
+  TraceEnableFlagsClass,
+  TraceEnableLevelClass,
+  GlobalLoggerHandleClass,
+  EventLoggerHandleClass,
+  AllLoggerHandlesClass,
+  TraceHandleByNameClass
+} TRACE_INFORMATION_CLASS;
+
+typedef NTSTATUS DDKAPI
+(*PEX_CALLBACK_FUNCTION)(
+  /*IN*/ PVOID  CallbackContext,
+  /*IN*/ PVOID  Argument1,
+  /*IN*/ PVOID  Argument2
+);
+
+
+/* Storage structures
+*/
+typedef
+struct _DISK_SIGNATURE
+{ ULONG 			PartitionStyle;
+  _ANONYMOUS_UNION union
+  { struct
+    { ULONG			    Signature;
+      ULONG			    CheckSum;
+    }				  Mbr;
+    struct
+    { GUID			    DiskId;
+    }				  Gpt;
+  } DUMMYUNIONNAME;
+} DISK_SIGNATURE, *PDISK_SIGNATURE;
+
+typedef VOID DDKFASTAPI
+(*PTIME_UPDATE_NOTIFY_ROUTINE)(
+  /*IN*/ HANDLE  ThreadId,
+  /*IN*/ KPROCESSOR_MODE  Mode
+);
+
+#define DBG_STATUS_CONTROL_C              1
+#define DBG_STATUS_SYSRQ                  2
+#define DBG_STATUS_BUGCHECK_FIRST         3
+#define DBG_STATUS_BUGCHECK_SECOND        4
+#define DBG_STATUS_FATAL                  5
+#define DBG_STATUS_DEBUG_CONTROL          6
+#define DBG_STATUS_WORKER                 7
+
+typedef
+struct _PHYSICAL_MEMORY_RANGE
+{ PHYSICAL_ADDRESS		BaseAddress;
+  LARGE_INTEGER 		NumberOfBytes;
+} PHYSICAL_MEMORY_RANGE, *PPHYSICAL_MEMORY_RANGE;
+
+typedef ULONG_PTR
+(*PDRIVER_VERIFIER_THUNK_ROUTINE)( /*IN*/ PVOID Context );
+
+typedef
+struct _DRIVER_VERIFIER_THUNK_PAIRS
+{ PDRIVER_VERIFIER_THUNK_ROUTINE	PristineRoutine;
+  PDRIVER_VERIFIER_THUNK_ROUTINE	NewRoutine;
+} DRIVER_VERIFIER_THUNK_PAIRS, *PDRIVER_VERIFIER_THUNK_PAIRS;
+
+#define DRIVER_VERIFIER_SPECIAL_POOLING             0x0001
+#define DRIVER_VERIFIER_FORCE_IRQL_CHECKING         0x0002
+#define DRIVER_VERIFIER_INJECT_ALLOCATION_FAILURES  0x0004
+#define DRIVER_VERIFIER_TRACK_POOL_ALLOCATIONS      0x0008
+#define DRIVER_VERIFIER_IO_CHECKING                 0x0010
+
+#define RTL_RANGE_LIST_ADD_IF_CONFLICT    0x00000001
+#define RTL_RANGE_LIST_ADD_SHARED         0x00000002
+
+#define RTL_RANGE_LIST_SHARED_OK          0x00000001
+#define RTL_RANGE_LIST_NULL_CONFLICT_OK   0x00000002
+
+#define RTL_RANGE_LIST_SHARED_OK          0x00000001
+#define RTL_RANGE_LIST_NULL_CONFLICT_OK   0x00000002
+
+#define RTL_RANGE_LIST_MERGE_IF_CONFLICT  RTL_RANGE_LIST_ADD_IF_CONFLICT
+
+typedef
+struct _RTL_RANGE
+{ ULONGLONG			Start;
+  ULONGLONG			End;
+  PVOID 			UserData;
+  PVOID 			Owner;
+  UCHAR 			Attributes;
+  UCHAR 			Flags;
+} RTL_RANGE, *PRTL_RANGE;
+
+#define RTL_RANGE_SHARED                  0x01
+#define RTL_RANGE_CONFLICT                0x02
+
+typedef
+struct _RTL_RANGE_LIST
+{ LIST_ENTRY			ListHead;
+  ULONG 			Flags;
+  ULONG 			Count;
+  ULONG 			Stamp;
+} RTL_RANGE_LIST, *PRTL_RANGE_LIST;
+
+typedef
+struct _RANGE_LIST_ITERATOR
+{ PLIST_ENTRY			RangeListHead;
+  PLIST_ENTRY			MergedHead;
+  PVOID 			Current;
+  ULONG 			Stamp;
+} RTL_RANGE_LIST_ITERATOR, *PRTL_RANGE_LIST_ITERATOR;
+
+typedef BOOLEAN
+(*PRTL_CONFLICT_RANGE_CALLBACK)(
+  /*IN*/ PVOID  Context,
+  /*IN*/ PRTL_RANGE  Range
+);
+
+#define HASH_STRING_ALGORITHM_DEFAULT     0
+#define HASH_STRING_ALGORITHM_X65599      1
+#define HASH_STRING_ALGORITHM_INVALID     0xffffffff
+
+typedef
+enum _SUITE_TYPE
+{ SmallBusiness,
+  Enterprise,
+  BackOffice,
+  CommunicationServer,
+  TerminalServer,
+  SmallBusinessRestricted,
+  EmbeddedNT,
+  DataCenter,
+  SingleUserTS,
+  Personal,
+  Blade,
+  MaxSuiteType
+} SUITE_TYPE;
+
+typedef VOID DDKAPI
+(*PTIMER_APC_ROUTINE)(
+  /*IN*/ PVOID  TimerContext,
+  /*IN*/ ULONG  TimerLowValue,
+  /*IN*/ LONG  TimerHighValue
+);
+
+
+/* WMI structures
+*/
+typedef VOID DDKAPI
+(*WMI_NOTIFICATION_CALLBACK)(
+  PVOID  Wnode,
+  PVOID  Context
+);
+
+
+/* Architecture specific structures
+*/
+#ifdef _X86_
+
+typedef ULONG PFN_NUMBER, *PPFN_NUMBER;
+
+#define PASSIVE_LEVEL                      0
+#define LOW_LEVEL                          0
+#define APC_LEVEL                          1
+#define DISPATCH_LEVEL                     2
+#define SYNCH_LEVEL                       27
+#define PROFILE_LEVEL                     27
+#define CLOCK1_LEVEL                      28
+#define CLOCK2_LEVEL                      28
+#define IPI_LEVEL                         29
+#define POWER_LEVEL                       30
+#define HIGH_LEVEL                        31
+
+typedef
+struct _KPCR_TIB
+{ PVOID 			ExceptionList;		/* 00 */
+  PVOID 			StackBase;		/* 04 */
+  PVOID 			StackLimit;		/* 08 */
+  PVOID 			SubSystemTib;		/* 0C */
+  _ANONYMOUS_UNION union
+  { PVOID			  FiberData;		/* 10 */
+    DWORD			  Version;		/* 10 */
+  } DUMMYUNIONNAME;
+  PVOID 			ArbitraryUserPointer;	/* 14 */
+  struct _NT_TIB		*Self;			/* 18 */
+} KPCR_TIB, *PKPCR_TIB; 				/* 1C */
+
+#define PCR_MINOR_VERSION 1
+#define PCR_MAJOR_VERSION 1
+
+typedef
+struct _KPCR
+{ KPCR_TIB			Tib;			/* 00 */
+  struct _KPCR			*Self;			/* 1C */
+  struct _KPRCB			*PCRCB;			/* 20 */
+  KIRQL 			Irql;			/* 24 */
+  ULONG 			IRR;			/* 28 */
+  ULONG 			IrrActive;		/* 2C */
+  ULONG 			IDR;			/* 30 */
+  PVOID 			KdVersionBlock;		/* 34 */
+  PUSHORT			IDT;			/* 38 */
+  PUSHORT			GDT;			/* 3C */
+  struct _KTSS			*TSS;			/* 40 */
+  USHORT 			MajorVersion;		/* 44 */
+  USHORT 			MinorVersion;		/* 46 */
+  KAFFINITY			SetMember;		/* 48 */
+  ULONG 			StallScaleFactor;	/* 4C */
+  UCHAR 			SpareUnused;		/* 50 */
+  UCHAR 			Number;			/* 51 */
+} KPCR, *PKPCR;						/* 54 */
+
+typedef
+struct _KFLOATING_SAVE
+{ ULONG 			ControlWord;
+  ULONG 			StatusWord;
+  ULONG 			ErrorOffset;
+  ULONG 			ErrorSelector;
+  ULONG 			DataOffset;
+  ULONG 			DataSelector;
+  ULONG 			Cr0NpxState;
+  ULONG 			Spare1;
+} KFLOATING_SAVE, *PKFLOATING_SAVE;
+
+#define PAGE_SIZE                         0x1000
+#define PAGE_SHIFT                        12L
+
+extern NTOSAPI PVOID *MmHighestUserAddress;
+extern NTOSAPI PVOID *MmSystemRangeStart;
+extern NTOSAPI ULONG *MmUserProbeAddress;
+
+#define MM_HIGHEST_USER_ADDRESS           *MmHighestUserAddress
+#define MM_SYSTEM_RANGE_START             *MmSystemRangeStart
+#define MM_USER_PROBE_ADDRESS             *MmUserProbeAddress
+#define MM_LOWEST_USER_ADDRESS            (PVOID)0x10000
+#define MM_LOWEST_SYSTEM_ADDRESS          (PVOID)0xC0C00000
+
+#define KI_USER_SHARED_DATA               0xffdf0000
+#define SharedUserData                    ((KUSER_SHARED_DATA * CONST) KI_USER_SHARED_DATA)
+
+#define EFLAG_SIGN                        0x8000
+#define EFLAG_ZERO                        0x4000
+#define EFLAG_SELECT                      (EFLAG_SIGN | EFLAG_ZERO)
+
+#define RESULT_NEGATIVE                   ((EFLAG_SIGN & ~EFLAG_ZERO) & EFLAG_SELECT)
+#define RESULT_ZERO                       ((~EFLAG_SIGN & EFLAG_ZERO) & EFLAG_SELECT)
+#define RESULT_POSITIVE                   ((~EFLAG_SIGN & ~EFLAG_ZERO) & EFLAG_SELECT)
+
+typedef
+enum _INTERLOCKED_RESULT
+{ ResultNegative	= RESULT_NEGATIVE,
+  ResultZero		= RESULT_ZERO,
+  ResultPositive	= RESULT_POSITIVE
+} INTERLOCKED_RESULT;
+
+NTOSAPI KIRQL DDKAPI
+KeGetCurrentIrql( VOID );
+
+/* ULONG
+ * KeGetCurrentProcessorNumber(
+ *   VOID)
+ */
+#define KeGetCurrentProcessorNumber() \
+  ((ULONG)KeGetCurrentKPCR()->Number)
+
+
+#if  __USE_NTOSKRNL__
+/* CAREFUL: These are exported from ntoskrnl.exe as __fastcall functions,
+   but are also exported from kernel32.dll and declared in winbase.h as
+   __stdcall */
+#if !defined(__INTERLOCKED_DECLARED)
+#define __INTERLOCKED_DECLARED
+
+NTOSAPI LONG DDKFASTAPI
+InterlockedIncrement( /*IN*/ LONG VOLATILE *Addend );
+
+NTOSAPI LONG DDKFASTAPI
+InterlockedDecrement( /*IN*/ LONG VOLATILE *Addend );
+
+NTOSAPI LONG DDKFASTAPI
+InterlockedCompareExchange(
+  /*IN OUT*/ PLONG  VOLATILE  Destination,
+  /*IN*/ LONG  Exchange,
+  /*IN*/ LONG  Comparand
+);
+
+NTOSAPI LONG DDKFASTAPI
+InterlockedExchange(
+  /*IN OUT*/ PLONG  VOLATILE  Target,
+  /*IN*/ LONG Value
+);
+
+NTOSAPI LONG DDKFASTAPI
+InterlockedExchangeAdd(
+  /*IN OUT*/ PLONG VOLATILE  Addend,
+  /*IN*/ LONG  Value
+);
+
+/* PVOID
+ * InterlockedExchangePointer(
+ * IN OUT PVOID VOLATILE  *Target,
+ * IN PVOID  Value)
+ */
+#define InterlockedExchangePointer(Target, Value) \
+  ((PVOID) InterlockedExchange((PLONG) Target, (LONG) Value))
+
+/* PVOID InterlockedCompareExchangePointer(
+ *   IN OUT PVOID  *Destination,
+ *   IN PVOID  Exchange,
+ *   IN PVOID  Comparand
+ * )
+ */
+#define InterlockedCompareExchangePointer(Destination, Exchange, Comparand) \
+ ((PVOID) InterlockedCompareExchange((PLONG) Destination, (LONG) Exchange, (LONG) Comparand))
+
+#if (_WIN32_WINNT >= _WIN32_WINNT_WINXP)
+PSLIST_ENTRY DDKFASTAPI
+InterlockedPopEntrySList( /*IN*/ PSLIST_HEADER ListHead );
+
+NTOSAPI PSLIST_ENTRY DDKFASTAPI
+InterlockedPushEntrySList(
+  /*IN*/ PSLIST_HEADER  ListHead,
+  /*IN*/ PSLIST_ENTRY  ListEntry
+);
+#endif /* _WIN32_WINNT >= _WIN32_WINNT_WINXP */
+
+#endif /* !__INTERLOCKED_DECLARED */
+#endif /*  __USE_NTOSKRNL__ */
+
+NTOSAPI VOID DDKFASTAPI
+KefAcquireSpinLockAtDpcLevel( /*IN*/ PKSPIN_LOCK SpinLock );
+
+NTOSAPI VOID DDKFASTAPI
+KefReleaseSpinLockFromDpcLevel( /*IN*/ PKSPIN_LOCK SpinLock );
+
+#define KeAcquireSpinLockAtDpcLevel(SpinLock) KefAcquireSpinLockAtDpcLevel(SpinLock)
+#define KeReleaseSpinLockFromDpcLevel(SpinLock) KefReleaseSpinLockFromDpcLevel(SpinLock)
+
+#define RtlCopyMemoryNonTemporal RtlCopyMemory
+
+#define KeGetDcacheFillSize() 1L
+
+#endif /* _X86_ */
+
+/* Utility functions
+ */
+#define ARGUMENT_PRESENT(ArgumentPointer) \
+ ((BOOLEAN) ((PVOID)ArgumentPointer != (PVOID)NULL))
+
+/* ULONG BYTE_OFFSET( IN PVOID Va )
+ */
+#define BYTE_OFFSET(Va) \
+  ((ULONG) ((ULONG_PTR) (Va) & (PAGE_SIZE - 1)))
+
+/* ULONG BYTES_TO_PAGES( IN ULONG Size )
+ */
+#define BYTES_TO_PAGES(Size) \
+  ((ULONG) ((ULONG_PTR) (Size) >> PAGE_SHIFT) + (((ULONG) (Size) & (PAGE_SIZE - 1)) != 0))
+
+/* PCHAR CONTAINING_RECORD(
+ *   IN PCHAR Address,
+ *   IN TYPE Type,
+ *   IN PCHAR Field
+ * );
+ */
+#ifndef CONTAINING_RECORD
+#define CONTAINING_RECORD(Address, Type, Field) \
+  ((Type *) (((ULONG_PTR) Address) - FIELD_OFFSET(Type, Field)))
+#endif
+
+/* LONG FIELD_OFFSET( IN TYPE Type, IN PCHAR Field );
+ */
+#ifndef FIELD_OFFSET
+#define FIELD_OFFSET(Type, Field) \
+ ((LONG) (&(((Type *) 0)->Field)))
+#endif
+
+/* PVOID PAGE_ALIGN( IN PVOID Va )
+ */
+#define PAGE_ALIGN(Va) \
+ ((PVOID) ((ULONG_PTR)(Va) & ~(PAGE_SIZE - 1)))
+
+/* ULONG_PTR ROUND_TO_PAGES( IN ULONG_PTR Size )
+ */
+#define ROUND_TO_PAGES(Size) \
+ ((ULONG_PTR) (((ULONG_PTR) Size + PAGE_SIZE - 1) & ~(PAGE_SIZE - 1)))
+
+NTOSAPI VOID DDKAPI
+RtlAssert(
+  /*IN*/ PVOID  FailedAssertion,
+  /*IN*/ PVOID  FileName,
+  /*IN*/ ULONG  LineNumber,
+  /*IN*/ PCHAR  Message
+);
+
+#ifdef DBG
+
+#define ASSERT(exp) \
+ ((!(exp)) ? (RtlAssert( #exp, __FILE__, __LINE__, NULL ), FALSE) : TRUE)
+
+#define ASSERTMSG(msg, exp) \
+ ((!(exp)) ? (RtlAssert( #exp, __FILE__, __LINE__, msg ), FALSE) : TRUE)
+
+#define RTL_SOFT_ASSERT(exp) \
+ ((!(_exp)) \
+  ? (DbgPrint("%s(%d): Soft assertion failed\n   Expression: %s\n",__FILE__,__LINE__,#exp),FALSE) \
+  : TRUE \
+ )
+
+#define RTL_SOFT_ASSERTMSG(msg, exp) \
+ ((!(exp)) \
+  ? (DbgPrint("%s(%d): Soft assertion failed\n   Expression: %s\n   Message: %s\n", \
+      __FILE__, __LINE__, #exp, (msg)), FALSE) \
+  : TRUE \
+ )
+
+#define RTL_VERIFY(exp) ASSERT(exp)
+#define RTL_VERIFYMSG(msg, exp) ASSERT(msg, exp)
+
+#define RTL_SOFT_VERIFY(exp) RTL_SOFT_ASSERT(exp)
+#define RTL_SOFT_VERIFYMSG(msg, exp) RTL_SOFT_ASSERTMSG(msg, exp)
+
+#else /* !DBG */
+
+#define ASSERT(exp) ((VOID) 0)
+#define ASSERTMSG(msg, exp) ((VOID) 0)
+
+#define RTL_SOFT_ASSERT(exp) ((VOID) 0)
+#define RTL_SOFT_ASSERTMSG(msg, exp) ((VOID) 0)
+
+#define RTL_VERIFY(exp) ((exp) ? TRUE : FALSE)
+#define RTL_VERIFYMSG(msg, exp) ((exp) ? TRUE : FALSE)
+
+#define RTL_SOFT_VERIFY(exp) ((exp) ? TRUE : FALSE)
+#define RTL_SOFT_VERIFYMSG(msg, exp) ((exp) ? TRUE : FALSE)
+
+#endif /* DBG */
+
+
+/* Driver support routines
+*/
+
+/** Runtime library routines **/
+
+/* VOID InitializeListHead( IN PLIST_ENTRY ListHead )
+ */
+#define InitializeListHead(_ListHead) \
+{ (_ListHead)->Flink = (_ListHead); \
+  (_ListHead)->Blink = (_ListHead); \
+}
+
+/* VOID InsertHeadList(
+ *   IN PLIST_ENTRY ListHead,
+ *   IN PLIST_ENTRY Entry
+ * )
+ */
+#define InsertHeadList(_ListHead, _Entry) \
+{ PLIST_ENTRY _OldFlink; \
+  _OldFlink = (_ListHead)->Flink; \
+  (_Entry)->Flink = _OldFlink; \
+  (_Entry)->Blink = (_ListHead); \
+  _OldFlink->Blink = (_Entry); \
+  (_ListHead)->Flink = (_Entry); \
+}
+
+/* VOID InsertTailList(
+ *   IN PLIST_ENTRY ListHead,
+ *   IN PLIST_ENTRY Entry
+ * )
+ */
+#define InsertTailList(_ListHead, _Entry) \
+{ PLIST_ENTRY _OldBlink; \
+  _OldBlink = (_ListHead)->Blink; \
+  (_Entry)->Flink = (_ListHead); \
+  (_Entry)->Blink = _OldBlink; \
+  _OldBlink->Flink = (_Entry); \
+  (_ListHead)->Blink = (_Entry); \
+}
+
+/* BOOLEAN IsListEmpty( IN PLIST_ENTRY ListHead )
+ */
+#define IsListEmpty(_ListHead) \
+  ((_ListHead)->Flink == (_ListHead))
+
+static __inline__ PSINGLE_LIST_ENTRY
+PopEntryList( /*IN*/ PSINGLE_LIST_ENTRY  ListHead )
+{
+  PSINGLE_LIST_ENTRY Entry;
+
+  Entry = ListHead->Next;
+  if (Entry != NULL)
+  {
+    ListHead->Next = Entry->Next;
+  }
+  return Entry;
+}
+
+/* VOID PushEntryList(
+ *   IN PSINGLE_LIST_ENTRY ListHead,
+ *   IN PSINGLE_LIST_ENTRY Entry
+ * )
+ */
+#define PushEntryList(_ListHead, _Entry) \
+{ (_Entry)->Next = (_ListHead)->Next; \
+  (_ListHead)->Next = (_Entry); \
+}
+
+/* VOID RemoveEntryList( IN PLIST_ENTRY Entry )
+ */
+#define RemoveEntryList(_Entry) \
+{ PLIST_ENTRY _OldFlink; \
+  PLIST_ENTRY _OldBlink; \
+  _OldFlink = (_Entry)->Flink; \
+  _OldBlink = (_Entry)->Blink; \
+  _OldFlink->Blink = _OldBlink; \
+  _OldBlink->Flink = _OldFlink; \
+  (_Entry)->Flink = NULL; \
+  (_Entry)->Blink = NULL; \
+}
+
+static __inline__ PLIST_ENTRY
+RemoveHeadList( /*IN*/ PLIST_ENTRY ListHead )
+{
+  PLIST_ENTRY OldFlink;
+  PLIST_ENTRY OldBlink;
+  PLIST_ENTRY Entry;
+
+  Entry = ListHead->Flink;
+  OldFlink = ListHead->Flink->Flink;
+  OldBlink = ListHead->Flink->Blink;
+  OldFlink->Blink = OldBlink;
+  OldBlink->Flink = OldFlink;
+
+  if (Entry != ListHead)
+  {
+    Entry->Flink = NULL;
+    Entry->Blink = NULL;
+  }
+  return Entry;
+}
+
+static __inline__ PLIST_ENTRY
+RemoveTailList( /*IN*/ PLIST_ENTRY ListHead )
+{
+  PLIST_ENTRY OldFlink;
+  PLIST_ENTRY OldBlink;
+  PLIST_ENTRY Entry;
+
+  Entry = ListHead->Blink;
+  OldFlink = ListHead->Blink->Flink;
+  OldBlink = ListHead->Blink->Blink;
+  OldFlink->Blink = OldBlink;
+  OldBlink->Flink = OldFlink;
+
+  if (Entry != ListHead)
+  {
+    Entry->Flink = NULL;
+    Entry->Blink = NULL;
+  }
+  return Entry;
+}
+
+/* USHORT QueryDepthSList( IN PSLIST_HEADER SListHead )
+ */
+#define QueryDepthSList(_SListHead) \
+  ((USHORT) ((_SListHead)->Alignment & 0xffff))
+
+#define InterlockedFlushSList(ListHead) ExInterlockedFlushSList(ListHead)
+
+NTOSAPI ULONG DDKAPI
+RtlAnsiStringToUnicodeSize( /*IN*/ PANSI_STRING AnsiString );
+
+NTOSAPI NTSTATUS DDKAPI
+RtlAddRange(
+  /*IN OUT*/ PRTL_RANGE_LIST  RangeList,
+  /*IN*/ ULONGLONG  Start,
+  /*IN*/ ULONGLONG  End,
+  /*IN*/ UCHAR  Attributes,
+  /*IN*/ ULONG  Flags,
+  /*IN*/ PVOID  UserData  /*OPTIONAL*/,
+  /*IN*/ PVOID  Owner  /*OPTIONAL*/
+);
+
+NTOSAPI NTSTATUS DDKAPI
+RtlAnsiStringToUnicodeString(
+  /*IN OUT*/ PUNICODE_STRING  DestinationString,
+  /*IN*/ PANSI_STRING  SourceString,
+  /*IN*/ BOOLEAN  AllocateDestinationString
+);
+
+NTOSAPI NTSTATUS DDKAPI
+RtlAppendUnicodeStringToString(
+  /*IN OUT*/ PUNICODE_STRING  Destination,
+  /*IN*/ PUNICODE_STRING  Source
+);
+
+NTOSAPI NTSTATUS DDKAPI
+RtlAppendUnicodeToString(
+  /*IN OUT*/ PUNICODE_STRING  Destination,
+  /*IN*/ PCWSTR  Source
+);
+
+NTOSAPI BOOLEAN DDKAPI
+RtlAreBitsClear(
+  /*IN*/ PRTL_BITMAP  BitMapHeader,
+  /*IN*/ ULONG  StartingIndex,
+  /*IN*/ ULONG  Length
+);
+
+NTOSAPI BOOLEAN DDKAPI
+RtlAreBitsSet(
+  /*IN*/ PRTL_BITMAP  BitMapHeader,
+  /*IN*/ ULONG  StartingIndex,
+  /*IN*/ ULONG  Length
+);
+
+NTOSAPI NTSTATUS DDKAPI
+RtlCharToInteger(
+  /*IN*/ PCSZ  String,
+  /*IN*/ ULONG  Base  /*OPTIONAL*/,
+  /*IN OUT*/ PULONG  Value
+);
+
+NTOSAPI ULONG DDKAPI
+RtlCheckBit(
+  /*IN*/ PRTL_BITMAP  BitMapHeader,
+  /*IN*/ ULONG  BitPosition
+);
+
+NTOSAPI NTSTATUS DDKAPI
+RtlCheckRegistryKey(
+  /*IN*/ ULONG  RelativeTo,
+  /*IN*/ PWSTR  Path
+);
+
+NTOSAPI VOID DDKAPI
+RtlClearAllBits( /*IN*/ PRTL_BITMAP  BitMapHeader );
+
+NTOSAPI VOID DDKAPI
+RtlClearBit( PRTL_BITMAP  BitMapHeader, ULONG  BitNumber );
+
+NTOSAPI VOID DDKAPI
+RtlClearBits(
+  /*IN*/ PRTL_BITMAP  BitMapHeader,
+  /*IN*/ ULONG  StartingIndex,
+  /*IN*/ ULONG  NumberToClear
+);
+
+NTOSAPI SIZE_T DDKAPI
+RtlCompareMemory(
+  /*IN*/ CONST VOID  *Source1,
+  /*IN*/ CONST VOID  *Source2,
+  /*IN*/ SIZE_T  Length
+);
+
+NTOSAPI LONG DDKAPI
+RtlCompareString(
+  /*IN*/ PSTRING  String1,
+  /*IN*/ PSTRING  String2,
+  BOOLEAN  CaseInSensitive
+);
+
+NTOSAPI LONG DDKAPI
+RtlCompareUnicodeString(
+  /*IN*/ PUNICODE_STRING  String1,
+  /*IN*/ PUNICODE_STRING  String2,
+  /*IN*/ BOOLEAN  CaseInSensitive
+);
+
+NTOSAPI LARGE_INTEGER DDKAPI
+RtlConvertLongToLargeInteger( /*IN*/ LONG  SignedInteger );
+
+NTOSAPI LUID DDKAPI
+RtlConvertLongToLuid( /*IN*/ LONG  Long );
+
+NTOSAPI LARGE_INTEGER DDKAPI
+RtlConvertUlongToLargeInteger( /*IN*/ ULONG  UnsignedInteger );
+
+NTOSAPI LUID DDKAPI
+RtlConvertUlongToLuid( ULONG  Ulong );
+
+/* VOID RtlCopyMemory(
+ *   IN VOID UNALIGNED  *Destination,
+ *   IN CONST VOID UNALIGNED  *Source,
+ *   IN SIZE_T  Length
+ * )
+ */
+#ifndef RtlCopyMemory
+#define RtlCopyMemory(Destination, Source, Length) \
+  memcpy(Destination, Source, Length)
+#endif
+
+#ifndef RtlCopyBytes
+#define RtlCopyBytes RtlCopyMemory
+#endif
+
+NTOSAPI VOID DDKAPI
+RtlCopyMemory32(
+  /*IN*/ VOID UNALIGNED  *Destination,
+  /*IN*/ CONST VOID UNALIGNED  *Source,
+  /*IN*/ ULONG  Length
+);
+
+NTOSAPI NTSTATUS DDKAPI
+RtlCopyRangeList(
+  /*OUT*/ PRTL_RANGE_LIST  CopyRangeList,
+  /*IN*/ PRTL_RANGE_LIST  RangeList
+);
+
+NTOSAPI VOID DDKAPI
+RtlCopyString(
+  /*IN OUT*/ PSTRING  DestinationString,
+  /*IN*/ PSTRING  SourceString  /*OPTIONAL*/
+);
+
+NTOSAPI VOID DDKAPI
+RtlCopyUnicodeString(
+  /*IN OUT*/ PUNICODE_STRING  DestinationString,
+  /*IN*/ PUNICODE_STRING  SourceString
+);
+
+NTOSAPI NTSTATUS DDKAPI
+RtlCreateRegistryKey( /*IN*/ ULONG RelativeTo, /*IN*/ PWSTR Path );
+
+NTOSAPI NTSTATUS DDKAPI
+RtlCreateSecurityDescriptor(
+  /*IN OUT*/ PSECURITY_DESCRIPTOR  SecurityDescriptor,
+  /*IN*/ ULONG  Revision
+);
+
+NTOSAPI NTSTATUS DDKAPI
+RtlDeleteOwnersRanges(
+  /*IN OUT*/ PRTL_RANGE_LIST  RangeList,
+  /*IN*/ PVOID  Owner
+);
+
+NTOSAPI NTSTATUS DDKAPI
+RtlDeleteRange(
+  /*IN OUT*/ PRTL_RANGE_LIST  RangeList,
+  /*IN*/ ULONGLONG  Start,
+  /*IN*/ ULONGLONG  End,
+  /*IN*/ PVOID  Owner
+);
+
+NTOSAPI NTSTATUS DDKAPI
+RtlDeleteRegistryValue(
+  /*IN*/ ULONG  RelativeTo,
+  /*IN*/ PCWSTR  Path,
+  /*IN*/ PCWSTR  ValueName
+);
+
+NTOSAPI BOOL DDKAPI
+RtlDosPathNameToNtPathName_U(
+  /*IN*/ PCWSTR  DosPathName,
+  /*OUT*/ PUNICODE_STRING  NtPathName,
+  /*OUT*/ PCWSTR  *NtFileNamePart,
+  /*OUT*/ VOID  *DirectoryInfo
+);
+
+/* BOOLEAN RtlEqualLuid(
+ *   IN LUID  Luid1,
+ *   IN LUID  Luid2
+ * )
+ */
+#define RtlEqualLuid(_Luid1, _Luid2) \
+ ((Luid1.LowPart == Luid2.LowPart) && (Luid1.HighPart == Luid2.HighPart))
+
+/* ULONG RtlEqualMemory(
+ *   IN VOID UNALIGNED  *Destination,
+ *   IN CONST VOID UNALIGNED  *Source,
+ *   IN SIZE_T  Length
+ * )
+ */
+#define RtlEqualMemory(Destination, Source, Length) (!memcmp(Destination, Source, Length))
+
+NTOSAPI BOOLEAN DDKAPI
+RtlEqualString(
+  /*IN*/ PSTRING  String1,
+  /*IN*/ PSTRING  String2,
+  /*IN*/ BOOLEAN  CaseInSensitive
+);
+
+NTOSAPI BOOLEAN DDKAPI
+RtlEqualUnicodeString(
+  /*IN*/ CONST UNICODE_STRING  *String1,
+  /*IN*/ CONST UNICODE_STRING  *String2,
+  /*IN*/ BOOLEAN  CaseInSensitive
+);
+
+/* VOID RtlFillMemory(
+ *   IN VOID UNALIGNED  *Destination,
+ *   IN SIZE_T  Length,
+ *   IN UCHAR  Fill
+ * )
+ */
+#ifndef RtlFillMemory
+#define RtlFillMemory(Destination, Length, Fill) \
+  memset(Destination, Fill, Length)
+#endif
+
+#ifndef RtlFillBytes
+#define RtlFillBytes RtlFillMemory
+#endif
+
+NTOSAPI ULONG DDKAPI
+RtlFindClearBits(
+  /*IN*/ PRTL_BITMAP  BitMapHeader,
+  /*IN*/ ULONG  NumberToFind,
+  /*IN*/ ULONG  HintIndex
+);
+
+NTOSAPI ULONG DDKAPI
+RtlFindClearBitsAndSet(
+  /*IN*/ PRTL_BITMAP  BitMapHeader,
+  /*IN*/ ULONG  NumberToFind,
+  /*IN*/ ULONG  HintIndex
+);
+
+NTOSAPI ULONG DDKAPI
+RtlFindClearRuns(
+  /*IN*/ PRTL_BITMAP  BitMapHeader,
+  /*OUT*/ PRTL_BITMAP_RUN  RunArray,
+  /*IN*/ ULONG  SizeOfRunArray,
+  /*IN*/ BOOLEAN  LocateLongestRuns
+);
+
+NTOSAPI ULONG DDKAPI
+RtlFindFirstRunClear(
+  /*IN*/ PRTL_BITMAP  BitMapHeader,
+  /*OUT*/ PULONG  StartingIndex
+);
+
+NTOSAPI ULONG DDKAPI
+RtlFindLastBackwardRunClear(
+  /*IN*/ PRTL_BITMAP  BitMapHeader,
+  /*IN*/ ULONG  FromIndex,
+  /*OUT*/ PULONG  StartingRunIndex
+);
+
+NTOSAPI CCHAR DDKAPI
+RtlFindLeastSignificantBit( /*IN*/ ULONGLONG  Set );
+
+NTOSAPI ULONG DDKAPI
+RtlFindLongestRunClear(
+  /*IN*/ PRTL_BITMAP  BitMapHeader,
+  /*OUT*/ PULONG  StartingIndex
+);
+
+NTOSAPI CCHAR DDKAPI
+RtlFindMostSignificantBit( /*IN*/ ULONGLONG  Set );
+
+NTOSAPI ULONG DDKAPI
+RtlFindNextForwardRunClear(
+  /*IN*/ PRTL_BITMAP  BitMapHeader,
+  /*IN*/ ULONG  FromIndex,
+  /*OUT*/ PULONG  StartingRunIndex
+);
+
+NTOSAPI NTSTATUS DDKAPI
+RtlFindRange(
+  /*IN*/ PRTL_RANGE_LIST  RangeList,
+  /*IN*/ ULONGLONG  Minimum,
+  /*IN*/ ULONGLONG  Maximum,
+  /*IN*/ ULONG  Length,
+  /*IN*/ ULONG  Alignment,
+  /*IN*/ ULONG  Flags,
+  /*IN*/ UCHAR  AttributeAvailableMask,
+  /*IN*/ PVOID  Context  /*OPTIONAL*/,
+  /*IN*/ PRTL_CONFLICT_RANGE_CALLBACK  Callback  /*OPTIONAL*/,
+  /*OUT*/ PULONGLONG  Start
+);
+
+NTOSAPI ULONG DDKAPI
+RtlFindSetBits(
+  /*IN*/ PRTL_BITMAP  BitMapHeader,
+  /*IN*/ ULONG  NumberToFind,
+  /*IN*/ ULONG  HintIndex
+);
+
+NTOSAPI ULONG DDKAPI
+RtlFindSetBitsAndClear(
+  /*IN*/ PRTL_BITMAP  BitMapHeader,
+  /*IN*/ ULONG  NumberToFind,
+  /*IN*/ ULONG  HintIndex
+);
+
+NTOSAPI VOID DDKAPI
+RtlFreeAnsiString( /*IN*/ PANSI_STRING  AnsiString );
+
+NTOSAPI VOID DDKAPI
+RtlFreeRangeList( /*IN*/ PRTL_RANGE_LIST  RangeList );
+
+NTOSAPI VOID DDKAPI
+RtlFreeUnicodeString( /*IN*/ PUNICODE_STRING  UnicodeString );
+
+NTOSAPI VOID DDKAPI
+RtlGetCallersAddress(
+  /*OUT*/ PVOID  *CallersAddress,
+  /*OUT*/ PVOID  *CallersCaller
+);
+
+NTOSAPI NTSTATUS DDKAPI
+RtlGetVersion( /*IN OUT*/ PRTL_OSVERSIONINFOW  lpVersionInformation );
+
+NTOSAPI NTSTATUS DDKAPI
+RtlGetFirstRange(
+  /*IN*/ PRTL_RANGE_LIST  RangeList,
+  /*OUT*/ PRTL_RANGE_LIST_ITERATOR  Iterator,
+  /*OUT*/ PRTL_RANGE  *Range
+);
+
+NTOSAPI NTSTATUS DDKAPI
+RtlGetNextRange(
+  /*IN OUT*/  PRTL_RANGE_LIST_ITERATOR  Iterator,
+  /*OUT*/ PRTL_RANGE  *Range,
+  /*IN*/ BOOLEAN  MoveForwards
+);
+
+#define FOR_ALL_RANGES(RangeList, Iterator, Current)          \
+  for (RtlGetFirstRange((RangeList), (Iterator), &(Current)); \
+    (Current) != NULL;                                        \
+    RtlGetNextRange((Iterator), &(Current), TRUE))
+
+#define FOR_ALL_RANGES_BACKWARDS(RangeList, Iterator, Current) \
+  for (RtlGetLastRange((RangeList), (Iterator), &(Current));   \
+    (Current) != NULL;                                         \
+    RtlGetNextRange((Iterator), &(Current), FALSE))
+
+NTOSAPI NTSTATUS DDKAPI
+RtlGUIDFromString(
+  /*IN*/ PUNICODE_STRING  GuidString,
+  /*OUT*/ GUID  *Guid
+);
+
+NTOSAPI NTSTATUS DDKAPI
+RtlHashUnicodeString(
+  /*IN*/ CONST UNICODE_STRING  *String,
+  /*IN*/ BOOLEAN  CaseInSensitive,
+  /*IN*/ ULONG  HashAlgorithm,
+  /*OUT*/ PULONG  HashValue
+);
+
+NTOSAPI VOID DDKAPI
+RtlInitAnsiString(
+  /*IN OUT*/ PANSI_STRING  DestinationString,
+  /*IN*/ PCSZ  SourceString
+);
+
+NTOSAPI VOID DDKAPI
+RtlInitializeBitMap(
+  /*IN*/ PRTL_BITMAP  BitMapHeader,
+  /*IN*/ PULONG  BitMapBuffer,
+  /*IN*/ ULONG  SizeOfBitMap
+);
+
+NTOSAPI VOID DDKAPI
+RtlInitializeRangeList( /*IN OUT*/ PRTL_RANGE_LIST  RangeList );
+
+NTOSAPI VOID DDKAPI
+RtlInitString(
+  /*IN OUT*/ PSTRING  DestinationString,
+  /*IN*/ PCSZ  SourceString
+);
+
+NTOSAPI VOID DDKAPI
+RtlInitUnicodeString(
+  /*IN OUT*/ PUNICODE_STRING  DestinationString,
+  /*IN*/ PCWSTR  SourceString
+);
+
+NTOSAPI NTSTATUS DDKAPI
+RtlInt64ToUnicodeString(
+  /*IN*/ ULONGLONG  Value,
+  /*IN*/ ULONG  Base /*OPTIONAL*/,
+  /*IN OUT*/ PUNICODE_STRING  String
+);
+
+NTOSAPI NTSTATUS DDKAPI
+RtlIntegerToUnicodeString(
+  /*IN*/ ULONG  Value,
+  /*IN*/ ULONG  Base  /*OPTIONAL*/,
+  /*IN OUT*/ PUNICODE_STRING  String
+);
+
+NTOSAPI NTSTATUS DDKAPI
+RtlIntPtrToUnicodeString(
+  PLONG  Value,
+  ULONG  Base  /*OPTIONAL*/,
+  PUNICODE_STRING  String
+);
+
+NTOSAPI NTSTATUS DDKAPI
+RtlInvertRangeList(
+  /*OUT*/ PRTL_RANGE_LIST  InvertedRangeList,
+  /*IN*/ PRTL_RANGE_LIST  RangeList
+);
+
+NTOSAPI NTSTATUS DDKAPI
+RtlIsRangeAvailable(
+  /*IN*/ PRTL_RANGE_LIST  RangeList,
+  /*IN*/ ULONGLONG  Start,
+  /*IN*/ ULONGLONG  End,
+  /*IN*/ ULONG  Flags,
+  /*IN*/ UCHAR  AttributeAvailableMask,
+  /*IN*/ PVOID  Context  /*OPTIONAL*/,
+  /*IN*/ PRTL_CONFLICT_RANGE_CALLBACK  Callback  /*OPTIONAL*/,
+  /*OUT*/ PBOOLEAN  Available
+);
+
+/* BOOLEAN RtlIsZeroLuid( IN PLUID L1 )
+ */
+#define RtlIsZeroLuid(_L1) \
+ ((BOOLEAN) ((!(_L1)->LowPart) && (!(_L1)->HighPart)))
+
+NTOSAPI ULONG DDKAPI
+RtlLengthSecurityDescriptor( /*IN*/ PSECURITY_DESCRIPTOR  SecurityDescriptor );
+
+NTOSAPI VOID DDKAPI
+RtlMapGenericMask(
+  /*IN OUT*/ PACCESS_MASK  AccessMask,
+  /*IN*/ PGENERIC_MAPPING  GenericMapping
+);
+
+NTOSAPI NTSTATUS DDKAPI
+RtlMergeRangeLists(
+  /*OUT*/ PRTL_RANGE_LIST  MergedRangeList,
+  /*IN*/ PRTL_RANGE_LIST  RangeList1,
+  /*IN*/ PRTL_RANGE_LIST  RangeList2,
+  /*IN*/ ULONG  Flags
+);
+
+/* VOID RtlMoveMemory(
+ *   IN VOID UNALIGNED  *Destination,
+ *   IN CONST VOID UNALIGNED  *Source,
+ *   IN SIZE_T  Length
+ * )
+ */
+#define RtlMoveMemory memmove
+
+NTOSAPI ULONG DDKAPI
+RtlNumberOfClearBits( /*IN*/ PRTL_BITMAP  BitMapHeader );
+
+NTOSAPI ULONG DDKAPI
+RtlNumberOfSetBits( /*IN*/ PRTL_BITMAP  BitMapHeader );
+
+NTOSAPI VOID DDKFASTAPI
+RtlPrefetchMemoryNonTemporal( /*IN*/ PVOID  Source, /*IN*/ SIZE_T  Length );
+
+NTOSAPI BOOLEAN DDKAPI
+RtlPrefixUnicodeString(
+  /*IN*/ PUNICODE_STRING  String1,
+  /*IN*/ PUNICODE_STRING  String2,
+  /*IN*/ BOOLEAN  CaseInSensitive
+);
+
+NTOSAPI NTSTATUS DDKAPI
+RtlQueryRegistryValues(
+  /*IN*/ ULONG  RelativeTo,
+  /*IN*/ PCWSTR  Path,
+  /*IN*/ PRTL_QUERY_REGISTRY_TABLE  QueryTable,
+  /*IN*/ PVOID  Context,
+  /*IN*/ PVOID  Environment  /*OPTIONAL*/
+);
+
+NTOSAPI VOID DDKAPI
+RtlRetrieveUlong(
+  /*IN OUT*/ PULONG  DestinationAddress,
+  /*IN*/ PULONG  SourceAddress
+);
+
+NTOSAPI VOID DDKAPI
+RtlRetrieveUshort(
+  /*IN OUT*/ PUSHORT  DestinationAddress,
+  /*IN*/ PUSHORT  SourceAddress
+);
+
+NTOSAPI VOID DDKAPI
+RtlSetAllBits( /*IN*/ PRTL_BITMAP BitMapHeader );
+
+NTOSAPI VOID DDKAPI
+RtlSetBit( PRTL_BITMAP BitMapHeader, ULONG BitNumber );
+
+NTOSAPI VOID DDKAPI
+RtlSetBits(
+  /*IN*/ PRTL_BITMAP  BitMapHeader,
+  /*IN*/ ULONG  StartingIndex,
+  /*IN*/ ULONG  NumberToSet
+);
+
+NTOSAPI NTSTATUS DDKAPI
+RtlSetDaclSecurityDescriptor(
+  /*IN OUT*/ PSECURITY_DESCRIPTOR  SecurityDescriptor,
+  /*IN*/ BOOLEAN  DaclPresent,
+  /*IN*/ PACL  Dacl  /*OPTIONAL*/,
+  /*IN*/ BOOLEAN  DaclDefaulted  /*OPTIONAL*/
+);
+
+NTOSAPI VOID DDKAPI
+RtlStoreUlong( /*IN*/ PULONG Address, /*IN*/ ULONG Value );
+
+NTOSAPI VOID DDKAPI
+RtlStoreUlonglong( /*IN OUT*/ PULONGLONG Address, ULONGLONG Value );
+
+NTOSAPI VOID DDKAPI
+RtlStoreUlongPtr( /*IN OUT*/ PULONG_PTR Address, /*IN*/ ULONG_PTR Value );
+
+NTOSAPI VOID DDKAPI
+RtlStoreUshort( /*IN*/ PUSHORT Address, /*IN*/ USHORT Value );
+
+NTOSAPI NTSTATUS DDKAPI
+RtlStringFromGUID( /*IN*/ REFGUID Guid, /*OUT*/ PUNICODE_STRING GuidString );
+
+#define RtlStringCbCopyA(dst, dst_len, src) strncpy(dst, src, dst_len)
+#define RtlStringCbPrintfA(args...) snprintf(args)
+#define RtlStringCbVPrintfA(args...) vsnprintf(args)
+
+NTOSAPI BOOLEAN DDKAPI
+RtlTestBit( /*IN*/ PRTL_BITMAP BitMapHeader, /*IN*/ ULONG BitNumber );
+
+NTOSAPI BOOLEAN DDKAPI
+RtlTimeFieldsToTime(
+  /*IN*/ PTIME_FIELDS TimeFields,
+  /*IN*/ PLARGE_INTEGER Time
+);
+
+NTOSAPI VOID DDKAPI
+RtlTimeToTimeFields(
+  /*IN*/ PLARGE_INTEGER  Time,
+  /*IN*/ PTIME_FIELDS  TimeFields
+);
+
+NTOSAPI ULONG DDKFASTAPI
+RtlUlongByteSwap( /*IN*/ ULONG Source );
+
+NTOSAPI ULONGLONG DDKFASTAPI
+RtlUlonglongByteSwap( /*IN*/ ULONGLONG Source );
+
+NTOSAPI ULONG DDKAPI
+RtlUnicodeStringToAnsiSize( /*IN*/ PUNICODE_STRING UnicodeString );
+
+NTOSAPI NTSTATUS DDKAPI
+RtlUnicodeStringToAnsiString(
+  /*IN OUT*/ PANSI_STRING  DestinationString,
+  /*IN*/ PUNICODE_STRING  SourceString,
+  /*IN*/ BOOLEAN  AllocateDestinationString
+);
+
+NTOSAPI NTSTATUS DDKAPI
+RtlUnicodeStringToInteger(
+  /*IN*/ PUNICODE_STRING  String,
+  /*IN*/ ULONG  Base  /*OPTIONAL*/,
+  /*OUT*/ PULONG  Value
+);
+
+NTOSAPI WCHAR DDKAPI
+RtlUpcaseUnicodeChar( /*IN*/ WCHAR SourceCharacter );
+
+NTOSAPI NTSTATUS DDKAPI
+RtlUpcaseUnicodeString(
+  /*IN OUT*/ PUNICODE_STRING  DestinationString  /*OPTIONAL*/,
+  /*IN*/ PCUNICODE_STRING  SourceString,
+  /*IN*/ BOOLEAN  AllocateDestinationString
+);
+
+NTOSAPI CHAR DDKAPI
+RtlUpperChar( /*IN*/ CHAR Character );
+
+NTOSAPI VOID DDKAPI
+RtlUpperString(
+  /*IN OUT*/ PSTRING  DestinationString,
+  /*IN*/ PSTRING  SourceString
+);
+
+NTOSAPI USHORT DDKFASTAPI
+RtlUshortByteSwap( /*IN*/ USHORT Source );
+
+NTOSAPI BOOLEAN DDKAPI
+RtlValidRelativeSecurityDescriptor(
+  /*IN*/ PSECURITY_DESCRIPTOR  SecurityDescriptorInput,
+  /*IN*/ ULONG  SecurityDescriptorLength,
+  /*IN*/ SECURITY_INFORMATION  RequiredInformation
+);
+
+NTOSAPI BOOLEAN DDKAPI
+RtlValidSecurityDescriptor( /*IN*/ PSECURITY_DESCRIPTOR SecurityDescriptor );
+
+NTOSAPI NTSTATUS DDKAPI
+RtlVerifyVersionInfo(
+  /*IN*/ PRTL_OSVERSIONINFOEXW  VersionInfo,
+  /*IN*/ ULONG  TypeMask,
+  /*IN*/ ULONGLONG  ConditionMask
+);
+
+NTOSAPI NTSTATUS DDKAPI
+RtlVolumeDeviceToDosName(
+  /*IN*/ PVOID  VolumeDeviceObject,
+  /*OUT*/ PUNICODE_STRING  DosName
+);
+
+NTOSAPI ULONG DDKAPI
+RtlWalkFrameChain(
+  /*OUT*/ PVOID  *Callers,
+  /*IN*/ ULONG  Count,
+  /*IN*/ ULONG  Flags
+);
+
+NTOSAPI NTSTATUS DDKAPI
+RtlWriteRegistryValue(
+  /*IN*/ ULONG  RelativeTo,
+  /*IN*/ PCWSTR  Path,
+  /*IN*/ PCWSTR  ValueName,
+  /*IN*/ ULONG  ValueType,
+  /*IN*/ PVOID  ValueData,
+  /*IN*/ ULONG  ValueLength
+);
+
+NTOSAPI ULONG DDKAPI
+RtlxUnicodeStringToAnsiSize( /*IN*/ PUNICODE_STRING UnicodeString );
+
+#ifndef RtlZeroMemory
+/* VOID RtlZeroMemory(
+ *   IN VOID UNALIGNED  *Destination,
+ *   IN SIZE_T  Length
+ * )
+ */
+#define RtlZeroMemory(Destination, Length) \
+  memset(Destination, 0, Length)
+#endif
+
+#ifndef RtlZeroBytes
+#define RtlZeroBytes RtlZeroMemory
+#endif
+
+
+/** Executive support routines **/
+
+NTOSAPI VOID DDKFASTAPI
+ExAcquireFastMutex( /*IN*/ PFAST_MUTEX FastMutex );
+
+NTOSAPI VOID DDKFASTAPI
+ExAcquireFastMutexUnsafe( /*IN*/ PFAST_MUTEX FastMutex );
+
+NTOSAPI BOOLEAN DDKAPI
+ExAcquireResourceExclusiveLite(
+  /*IN*/ PERESOURCE  Resource,
+  /*IN*/ BOOLEAN  Wait
+);
+
+NTOSAPI BOOLEAN DDKAPI
+ExAcquireResourceSharedLite( /*IN*/ PERESOURCE Resource, /*IN*/ BOOLEAN Wait );
+
+NTOSAPI BOOLEAN DDKAPI
+ExAcquireSharedStarveExclusive(
+  /*IN*/ PERESOURCE  Resource,
+  /*IN*/ BOOLEAN  Wait
+);
+
+NTOSAPI BOOLEAN DDKAPI
+ExAcquireSharedWaitForExclusive(
+  /*IN*/ PERESOURCE  Resource,
+  /*IN*/ BOOLEAN  Wait
+);
+
+NTOSAPI PSINGLE_LIST_ENTRY DDKFASTAPI
+ExInterlockedPopEntrySList(
+  /*IN*/ PSLIST_HEADER  ListHead,
+  /*IN*/ PKSPIN_LOCK  Lock
+);
+
+NTOSAPI PSINGLE_LIST_ENTRY DDKFASTAPI
+ExInterlockedPushEntrySList(
+  /*IN*/ PSLIST_HEADER  ListHead,
+  /*IN*/ PSINGLE_LIST_ENTRY  ListEntry,
+  /*IN*/ PKSPIN_LOCK  Lock
+);
+
+#if (__USE_NTOSKRNL__) && (_WIN32_WINNT >= _WIN32_WINNT_WINXP)
+#define ExInterlockedPopEntrySList(_ListHead, _Lock) \
+  InterlockedPopEntrySList(_ListHead)
+
+#define ExInterlockedPushEntrySList(_ListHead, _ListEntry, _Lock) \
+  InterlockedPushEntrySList(_ListHead, _ListEntry)
+#endif /*  __USE_NTOSKRNL__ */
+
+#define ExQueryDepthSList(ListHead) QueryDepthSList(ListHead)
+
+static __inline__ PVOID
+ExAllocateFromNPagedLookasideList( /*IN*/ PNPAGED_LOOKASIDE_LIST Lookaside )
+{
+  PVOID Entry;
+
+  Lookaside->TotalAllocates++;
+  Entry = ExInterlockedPopEntrySList (&Lookaside->ListHead, &Lookaside->Obsoleted);
+  if (Entry == NULL)
+  { Lookaside->_DDK_DUMMYUNION_MEMBER(AllocateMisses)++;
+    Entry = (Lookaside->Allocate)(Lookaside->Type, Lookaside->Size, Lookaside->Tag);
+  }
+  return Entry;
+}
+
+static __inline__ VOID
+ExFreeToNPagedLookasideList(
+  /*IN*/ PNPAGED_LOOKASIDE_LIST  Lookaside,
+  /*IN*/ PVOID  Entry)
+{
+  Lookaside->TotalFrees++;
+  if (ExQueryDepthSList(&Lookaside->ListHead) >= Lookaside->Depth)
+  { Lookaside->_DDK_DUMMYUNION_N_MEMBER(2,FreeMisses)++;
+    (Lookaside->Free)(Entry);
+  }
+  else
+  { ExInterlockedPushEntrySList(
+	&Lookaside->ListHead, (PSLIST_ENTRY)Entry, &Lookaside->Obsoleted
+      );
+  }
+}
+
+#if (__USE_NTOSKRNL__) && (_WIN32_WINNT >= _WIN32_WINNT_WINXP)
+
+static __inline__ PVOID
+ExAllocateFromPagedLookasideList(
+  /*IN*/ PPAGED_LOOKASIDE_LIST  Lookaside)
+{
+  PVOID Entry;
+
+  Lookaside->TotalAllocates++;
+  Entry = InterlockedPopEntrySList(&Lookaside->ListHead);
+  if (Entry == NULL)
+  { Lookaside->_DDK_DUMMYUNION_MEMBER(AllocateMisses)++;
+    Entry = (Lookaside->Allocate)(Lookaside->Type, Lookaside->Size, Lookaside->Tag);
+  }
+  return Entry;
+}
+
+static __inline__ VOID
+ExFreeToPagedLookasideList(
+  /*IN*/ PPAGED_LOOKASIDE_LIST  Lookaside,
+  /*IN*/ PVOID  Entry)
+{
+  Lookaside->TotalFrees++;
+  if (ExQueryDepthSList(&Lookaside->ListHead) >= Lookaside->Depth)
+  { Lookaside->_DDK_DUMMYUNION_N_MEMBER(2,FreeMisses)++;
+    (Lookaside->Free)(Entry);
+  }
+  else
+  { InterlockedPushEntrySList(&Lookaside->ListHead, (PSLIST_ENTRY)Entry);
+  }
+}
+
+#else /* (__USE_NTOSKRNL__) && (_WIN32_WINNT >= _WIN32_WINNT_WINXP) */
+
+NTOSAPI PVOID DDKAPI
+ExAllocateFromPagedLookasideList( /*IN*/ PPAGED_LOOKASIDE_LIST Lookaside );
+
+NTOSAPI VOID DDKAPI
+ExFreeToPagedLookasideList(
+  /*IN*/ PPAGED_LOOKASIDE_LIST  Lookaside,
+  /*IN*/ PVOID  Entry
+);
+
+#endif /* (__USE_NTOSKRNL__) && (_WIN32_WINNT >= _WIN32_WINNT_WINXP) */
+
+NTOSAPI PVOID DDKAPI
+ExAllocatePoolWithQuotaTag(
+  /*IN*/ POOL_TYPE  PoolType,
+  /*IN*/ SIZE_T  NumberOfBytes,
+  /*IN*/ ULONG  Tag
+);
+
+NTOSAPI PVOID DDKAPI
+ExAllocatePoolWithTag(
+  /*IN*/ POOL_TYPE  PoolType,
+  /*IN*/ SIZE_T  NumberOfBytes,
+  /*IN*/ ULONG  Tag
+);
+
+#ifdef POOL_TAGGING
+
+#define ExAllocatePoolWithQuota(p,n) ExAllocatePoolWithQuotaTag(p,n,' kdD')
+#define ExAllocatePool(p,n) ExAllocatePoolWithTag(p,n,' kdD')
+
+#else /* !POOL_TAGGING */
+
+NTOSAPI PVOID DDKAPI
+ExAllocatePool( /*IN*/ POOL_TYPE PoolType, /*IN*/ SIZE_T NumberOfBytes );
+
+NTOSAPI PVOID DDKAPI
+ExAllocatePoolWithQuota( /*IN*/ POOL_TYPE PoolType, /*IN*/ SIZE_T NumberOfBytes );
+
+#endif /* POOL_TAGGING */
+
+NTOSAPI PVOID DDKAPI
+ExAllocatePoolWithTagPriority(
+  /*IN*/ POOL_TYPE  PoolType,
+  /*IN*/ SIZE_T  NumberOfBytes,
+  /*IN*/ ULONG  Tag,
+  /*IN*/ EX_POOL_PRIORITY  Priority
+);
+
+NTOSAPI VOID DDKAPI
+ExConvertExclusiveToSharedLite( /*IN*/ PERESOURCE Resource );
+
+NTOSAPI NTSTATUS DDKAPI
+ExCreateCallback(
+  /*OUT*/ PCALLBACK_OBJECT  *CallbackObject,
+  /*IN*/ POBJECT_ATTRIBUTES  ObjectAttributes,
+  /*IN*/ BOOLEAN  Create,
+  /*IN*/ BOOLEAN  AllowMultipleCallbacks
+);
+
+NTOSAPI VOID DDKAPI
+ExDeleteNPagedLookasideList( /*IN*/ PNPAGED_LOOKASIDE_LIST Lookaside );
+
+NTOSAPI VOID DDKAPI
+ExDeletePagedLookasideList( /*IN*/ PPAGED_LOOKASIDE_LIST Lookaside );
+
+NTOSAPI NTSTATUS DDKAPI
+ExDeleteResourceLite( /*IN*/ PERESOURCE Resource );
+
+NTOSAPI VOID DDKAPI
+ExFreePool( /*IN*/ PVOID P );
+
+#define PROTECTED_POOL                    0x80000000
+
+#ifdef POOL_TAGGING
+#define ExFreePool(P) ExFreePoolWithTag(P, 0)
+#endif
+
+NTOSAPI VOID DDKAPI
+ExFreePoolWithTag( /*IN*/ PVOID P, /*IN*/ ULONG Tag );
+
+/* ERESOURCE_THREAD ExGetCurrentResourceThread( VOID );
+ */
+#define ExGetCurrentResourceThread() ((ERESOURCE_THREAD) PsGetCurrentThread())
+
+NTOSAPI ULONG DDKAPI
+ExGetExclusiveWaiterCount( /*IN*/ PERESOURCE Resource );
+
+NTOSAPI KPROCESSOR_MODE DDKAPI
+ExGetPreviousMode( VOID );
+
+NTOSAPI ULONG DDKAPI
+ExGetSharedWaiterCount( /*IN*/ PERESOURCE Resource );
+
+NTOSAPI VOID DDKAPI
+KeInitializeEvent(
+  /*IN*/ PRKEVENT  Event,
+  /*IN*/ EVENT_TYPE  Type,
+  /*IN*/ BOOLEAN  State);
+
+/* VOID DDKAPI ExInitializeFastMutex( IN PFAST_MUTEX FastMutex )
+ */
+#define ExInitializeFastMutex(_FastMutex) \
+ { (_FastMutex)->Count = 1; \
+   (_FastMutex)->Owner = NULL; \
+   (_FastMutex)->Contention = 0; \
+   KeInitializeEvent(&(_FastMutex)->Event, SynchronizationEvent, FALSE); \
+ }
+
+NTOSAPI VOID DDKAPI
+ExInitializeNPagedLookasideList(
+  /*IN*/ PNPAGED_LOOKASIDE_LIST  Lookaside,
+  /*IN*/ PALLOCATE_FUNCTION  Allocate  /*OPTIONAL*/,
+  /*IN*/ PFREE_FUNCTION  Free  /*OPTIONAL*/,
+  /*IN*/ ULONG  Flags,
+  /*IN*/ SIZE_T  Size,
+  /*IN*/ ULONG  Tag,
+  /*IN*/ USHORT  Depth
+);
+
+NTOSAPI VOID DDKAPI
+ExInitializePagedLookasideList(
+  /*IN*/ PPAGED_LOOKASIDE_LIST  Lookaside,
+  /*IN*/ PALLOCATE_FUNCTION  Allocate  /*OPTIONAL*/,
+  /*IN*/ PFREE_FUNCTION  Free  /*OPTIONAL*/,
+  /*IN*/ ULONG  Flags,
+  /*IN*/ SIZE_T  Size,
+  /*IN*/ ULONG  Tag,
+  /*IN*/ USHORT  Depth
+);
+
+NTOSAPI NTSTATUS DDKAPI
+ExInitializeResourceLite( /*IN*/ PERESOURCE Resource );
+
+/* VOID InitializeSListHead( IN PSLIST_HEADER SListHead )
+ */
+#define InitializeSListHead(_SListHead) \
+ (_SListHead)->Alignment = 0
+
+#define ExInitializeSListHead InitializeSListHead
+
+NTOSAPI LARGE_INTEGER DDKAPI
+ExInterlockedAddLargeInteger(
+  /*IN*/ PLARGE_INTEGER  Addend,
+  /*IN*/ LARGE_INTEGER  Increment,
+  /*IN*/ PKSPIN_LOCK  Lock
+);
+
+NTOSAPI VOID DDKFASTAPI
+ExInterlockedAddLargeStatistic(
+  /*IN*/ PLARGE_INTEGER  Addend,
+  /*IN*/ ULONG  Increment
+);
+
+NTOSAPI ULONG DDKAPI
+ExInterlockedAddUlong(
+  /*IN*/ PULONG  Addend,
+  /*IN*/ ULONG  Increment,
+  PKSPIN_LOCK  Lock
+);
+
+NTOSAPI ULONG DDKFASTAPI
+ExfInterlockedAddUlong(
+  /*IN*/ PULONG  Addend,
+  /*IN*/ ULONG  Increment,
+  PKSPIN_LOCK  Lock
+);
+
+NTOSAPI LONGLONG DDKFASTAPI
+ExInterlockedCompareExchange64(
+  /*IN OUT*/ PLONGLONG  Destination,
+  /*IN*/ PLONGLONG  Exchange,
+  /*IN*/ PLONGLONG  Comparand,
+  /*IN*/ PKSPIN_LOCK  Lock
+);
+
+NTOSAPI PSINGLE_LIST_ENTRY DDKFASTAPI
+ExInterlockedFlushSList( /*IN*/ PSLIST_HEADER ListHead );
+
+NTOSAPI PLIST_ENTRY DDKAPI
+ExInterlockedInsertHeadList(
+  /*IN*/ PLIST_ENTRY  ListHead,
+  /*IN*/ PLIST_ENTRY  ListEntry,
+  /*IN*/ PKSPIN_LOCK  Lock
+);
+
+NTOSAPI PLIST_ENTRY DDKFASTAPI
+ExfInterlockedInsertHeadList(
+  /*IN*/ PLIST_ENTRY  ListHead,
+  /*IN*/ PLIST_ENTRY  ListEntry,
+  /*IN*/ PKSPIN_LOCK  Lock
+);
+
+NTOSAPI PLIST_ENTRY DDKAPI
+ExInterlockedInsertTailList(
+  /*IN*/ PLIST_ENTRY  ListHead,
+  /*IN*/ PLIST_ENTRY  ListEntry,
+  /*IN*/ PKSPIN_LOCK  Lock
+);
+
+NTOSAPI PLIST_ENTRY DDKFASTAPI
+ExfInterlockedInsertTailList(
+  /*IN*/ PLIST_ENTRY  ListHead,
+  /*IN*/ PLIST_ENTRY  ListEntry,
+  /*IN*/ PKSPIN_LOCK  Lock
+);
+
+NTOSAPI PSINGLE_LIST_ENTRY DDKAPI
+ExInterlockedPopEntryList(
+  /*IN*/ PSINGLE_LIST_ENTRY  ListHead,
+  /*IN*/ PKSPIN_LOCK  Lock
+);
+
+NTOSAPI PSINGLE_LIST_ENTRY DDKFASTAPI
+ExfInterlockedPopEntryList(
+  /*IN*/ PSINGLE_LIST_ENTRY  ListHead,
+  /*IN*/ PKSPIN_LOCK  Lock
+);
+
+NTOSAPI PSINGLE_LIST_ENTRY DDKAPI
+ExInterlockedPushEntryList(
+  /*IN*/ PSINGLE_LIST_ENTRY  ListHead,
+  /*IN*/ PSINGLE_LIST_ENTRY  ListEntry,
+  /*IN*/ PKSPIN_LOCK  Lock
+);
+
+NTOSAPI PSINGLE_LIST_ENTRY DDKFASTAPI
+ExfInterlockedPushEntryList(
+  /*IN*/ PSINGLE_LIST_ENTRY  ListHead,
+  /*IN*/ PSINGLE_LIST_ENTRY  ListEntry,
+  /*IN*/ PKSPIN_LOCK  Lock
+);
+
+NTOSAPI PLIST_ENTRY DDKAPI
+ExInterlockedRemoveHeadList(
+  /*IN*/ PLIST_ENTRY  ListHead,
+  /*IN*/ PKSPIN_LOCK  Lock
+);
+
+NTOSAPI PLIST_ENTRY DDKFASTAPI
+ExfInterlockedRemoveHeadList(
+  /*IN*/ PLIST_ENTRY  ListHead,
+  /*IN*/ PKSPIN_LOCK  Lock
+);
+
+NTOSAPI BOOLEAN DDKAPI
+ExIsProcessorFeaturePresent( /*IN*/ ULONG ProcessorFeature );
+
+NTOSAPI BOOLEAN DDKAPI
+ExIsResourceAcquiredExclusiveLite( /*IN*/ PERESOURCE Resource );
+
+NTOSAPI USHORT DDKAPI
+ExIsResourceAcquiredLite( /*IN*/ PERESOURCE Resource );
+
+NTOSAPI USHORT DDKAPI
+ExIsResourceAcquiredSharedLite( /*IN*/ PERESOURCE Resource );
+
+NTOSAPI VOID DDKAPI
+ExLocalTimeToSystemTime(
+  /*IN*/ PLARGE_INTEGER  LocalTime,
+  /*OUT*/ PLARGE_INTEGER  SystemTime
+);
+
+NTOSAPI VOID DDKAPI
+ExNotifyCallback(
+  /*IN*/ PCALLBACK_OBJECT  CallbackObject,
+  /*IN*/ PVOID  Argument1,
+  /*IN*/ PVOID  Argument2
+);
+
+NTOSAPI VOID DDKAPI
+ExRaiseAccessViolation( VOID );
+
+NTOSAPI VOID DDKAPI
+ExRaiseDatatypeMisalignment( VOID );
+
+NTOSAPI VOID DDKAPI
+ExRaiseStatus( /*IN*/ NTSTATUS Status );
+
+NTOSAPI PVOID DDKAPI
+ExRegisterCallback(
+  /*IN*/ PCALLBACK_OBJECT  CallbackObject,
+  /*IN*/ PCALLBACK_FUNCTION  CallbackFunction,
+  /*IN*/ PVOID  CallbackContext
+);
+
+NTOSAPI VOID DDKAPI
+ExReinitializeResourceLite( /*IN*/ PERESOURCE Resource );
+
+NTOSAPI VOID DDKFASTAPI
+ExReleaseFastMutex( /*IN*/ PFAST_MUTEX FastMutex );
+
+NTOSAPI VOID DDKFASTAPI
+ExReleaseFastMutexUnsafe( /*IN*/ PFAST_MUTEX FastMutex );
+
+NTOSAPI VOID DDKAPI
+ExReleaseResourceForThreadLite(
+  /*IN*/ PERESOURCE  Resource,
+  /*IN*/ ERESOURCE_THREAD  ResourceThreadId
+);
+
+NTOSAPI VOID DDKFASTAPI
+ExReleaseResourceLite( /*IN*/ PERESOURCE Resource );
+
+NTOSAPI VOID DDKAPI
+ExSetResourceOwnerPointer( /*IN*/ PERESOURCE  Resource,
+  /*IN*/ PVOID  OwnerPointer
+);
+
+NTOSAPI ULONG DDKAPI
+ExSetTimerResolution( /*IN*/ ULONG DesiredTime, /*IN*/ BOOLEAN SetResolution );
+
+NTOSAPI VOID DDKAPI
+ExSystemTimeToLocalTime(
+  /*IN*/ PLARGE_INTEGER  SystemTime,
+  /*OUT*/ PLARGE_INTEGER  LocalTime
+);
+
+NTOSAPI BOOLEAN DDKFASTAPI
+ExTryToAcquireFastMutex( /*IN*/ PFAST_MUTEX FastMutex );
+
+NTOSAPI BOOLEAN DDKAPI
+ExTryToAcquireResourceExclusiveLite( /*IN*/ PERESOURCE Resource );
+
+NTOSAPI VOID DDKAPI
+ExUnregisterCallback( /*IN*/ PVOID CbRegistration );
+
+NTOSAPI NTSTATUS DDKAPI
+ExUuidCreate( /*OUT*/ UUID *Uuid );
+
+NTOSAPI BOOLEAN DDKAPI
+ExVerifySuite( /*IN*/ SUITE_TYPE SuiteType );
+
+#ifdef DBG
+# define PAGED_CODE() \
+  { if (KeGetCurrentIrql() > APC_LEVEL) \
+    { KdPrint( ("NTDDK: Pageable code called at IRQL > APC_LEVEL (%d)\n", KeGetCurrentIrql() )); \
+      ASSERT(FALSE); \
+    } \
+  }
+#else
+# define PAGED_CODE()
+#endif
+
+NTOSAPI VOID DDKAPI
+ProbeForRead(
+  /*IN*/ CONST VOID  *Address,
+  /*IN*/ ULONG  Length,
+  /*IN*/ ULONG  Alignment
+);
+
+NTOSAPI VOID DDKAPI
+ProbeForWrite(
+  /*IN*/ CONST VOID  *Address,
+  /*IN*/ ULONG  Length,
+  /*IN*/ ULONG  Alignment
+);
+
+
+/** Configuration manager routines **/
+
+NTOSAPI NTSTATUS DDKAPI
+CmRegisterCallback(
+  /*IN*/ PEX_CALLBACK_FUNCTION  Function,
+  /*IN*/ PVOID  Context,
+  /*IN OUT*/ PLARGE_INTEGER  Cookie
+);
+
+NTOSAPI NTSTATUS DDKAPI
+CmUnRegisterCallback( /*IN*/ LARGE_INTEGER Cookie );
+
+
+/** Filesystem runtime library routines **/
+
+NTOSAPI BOOLEAN DDKAPI
+FsRtlIsTotalDeviceFailure( /*IN*/ NTSTATUS Status );
+
+
+
+/** Hardware abstraction layer routines **/
+
+NTOSAPI VOID DDKFASTAPI
+HalExamineMBR(
+  /*IN*/ PDEVICE_OBJECT  DeviceObject,
+  /*IN*/ ULONG  SectorSize,
+  /*IN*/ ULONG  MBRTypeIdentifier,
+  /*OUT*/ PVOID  Buffer
+);
+
+NTOSAPI VOID DDKAPI
+READ_PORT_BUFFER_UCHAR(
+  /*IN*/ PUCHAR  Port,
+  /*IN*/ PUCHAR  Buffer,
+  /*IN*/ ULONG  Count
+);
+
+NTOSAPI VOID DDKAPI
+READ_PORT_BUFFER_ULONG(
+  /*IN*/ PULONG  Port,
+  /*IN*/ PULONG  Buffer,
+  /*IN*/ ULONG  Count
+);
+
+NTOSAPI VOID DDKAPI
+READ_PORT_BUFFER_USHORT(
+  /*IN*/ PUSHORT  Port,
+  /*IN*/ PUSHORT  Buffer,
+  /*IN*/ ULONG  Count
+);
+
+NTOSAPI UCHAR DDKAPI
+READ_PORT_UCHAR( /*IN*/ PUCHAR Port );
+
+NTOSAPI ULONG DDKAPI
+READ_PORT_ULONG( /*IN*/ PULONG Port );
+
+NTOSAPI USHORT DDKAPI
+READ_PORT_USHORT( /*IN*/ PUSHORT Port );
+
+NTOSAPI VOID DDKAPI
+READ_REGISTER_BUFFER_UCHAR(
+  /*IN*/ PUCHAR  Register,
+  /*IN*/ PUCHAR  Buffer,
+  /*IN*/ ULONG  Count
+);
+
+NTOSAPI VOID DDKAPI
+READ_REGISTER_BUFFER_ULONG(
+  /*IN*/ PULONG  Register,
+  /*IN*/ PULONG  Buffer,
+  /*IN*/ ULONG  Count
+);
+
+NTOSAPI VOID DDKAPI
+READ_REGISTER_BUFFER_USHORT(
+  /*IN*/ PUSHORT  Register,
+  /*IN*/ PUSHORT  Buffer,
+  /*IN*/ ULONG  Count
+);
+
+NTOSAPI UCHAR DDKAPI
+READ_REGISTER_UCHAR( /*IN*/ PUCHAR Register );
+
+NTOSAPI ULONG DDKAPI
+READ_REGISTER_ULONG( /*IN*/ PULONG Register );
+
+NTOSAPI USHORT DDKAPI
+READ_REGISTER_USHORT( /*IN*/ PUSHORT Register );
+
+NTOSAPI VOID DDKAPI
+WRITE_PORT_BUFFER_UCHAR(
+  /*IN*/ PUCHAR  Port,
+  /*IN*/ PUCHAR  Buffer,
+  /*IN*/ ULONG  Count
+);
+
+NTOSAPI VOID DDKAPI
+WRITE_PORT_BUFFER_ULONG(
+  /*IN*/ PULONG  Port,
+  /*IN*/ PULONG  Buffer,
+  /*IN*/ ULONG  Count
+);
+
+NTOSAPI VOID DDKAPI
+WRITE_PORT_BUFFER_USHORT(
+  /*IN*/ PUSHORT  Port,
+  /*IN*/ PUSHORT  Buffer,
+  /*IN*/ ULONG  Count
+);
+
+NTOSAPI VOID DDKAPI
+WRITE_PORT_UCHAR( /*IN*/ PUCHAR Port, /*IN*/ UCHAR Value );
+
+NTOSAPI VOID DDKAPI
+WRITE_PORT_ULONG( /*IN*/ PULONG Port, /*IN*/ ULONG Value );
+
+NTOSAPI VOID DDKAPI
+WRITE_PORT_USHORT( /*IN*/ PUSHORT Port, /*IN*/ USHORT Value );
+
+NTOSAPI VOID DDKAPI
+WRITE_REGISTER_BUFFER_UCHAR(
+  /*IN*/ PUCHAR  Register,
+  /*IN*/ PUCHAR  Buffer,
+  /*IN*/ ULONG  Count
+);
+
+NTOSAPI VOID DDKAPI
+WRITE_REGISTER_BUFFER_ULONG(
+  /*IN*/ PULONG  Register,
+  /*IN*/ PULONG  Buffer,
+  /*IN*/ ULONG  Count
+);
+
+NTOSAPI VOID DDKAPI
+WRITE_REGISTER_BUFFER_USHORT(
+  /*IN*/ PUSHORT  Register,
+  /*IN*/ PUSHORT  Buffer,
+  /*IN*/ ULONG  Count
+);
+
+NTOSAPI VOID DDKAPI
+WRITE_REGISTER_UCHAR( /*IN*/ PUCHAR Register, /*IN*/ UCHAR Value );
+
+NTOSAPI VOID DDKAPI
+WRITE_REGISTER_ULONG( /*IN*/ PULONG Register, /*IN*/ ULONG Value );
+
+NTOSAPI VOID DDKAPI
+WRITE_REGISTER_USHORT( /*IN*/ PUSHORT Register, /*IN*/ USHORT Value );
+
+/** I/O manager routines **/
+
+NTOSAPI VOID DDKAPI
+IoAcquireCancelSpinLock( /*OUT*/ PKIRQL Irql );
+
+NTOSAPI NTSTATUS DDKAPI
+IoAcquireRemoveLockEx(
+  /*IN*/ PIO_REMOVE_LOCK  RemoveLock,
+  /*IN*/ PVOID  Tag  /*OPTIONAL*/,
+  /*IN*/ PCSTR  File,
+  /*IN*/ ULONG  Line,
+  /*IN*/ ULONG  RemlockSize
+);
+
+/* NTSTATUS IoAcquireRemoveLock(
+ *   IN PIO_REMOVE_LOCK  RemoveLock,
+ *   IN PVOID  Tag OPTIONAL
+ * )
+ */
+#define IoAcquireRemoveLock(_RemoveLock, _Tag) \
+ IoAcquireRemoveLockEx(_RemoveLock, _Tag, __FILE__, __LINE__, sizeof(IO_REMOVE_LOCK))
+
+/* VOID IoAdjustPagingPathCount( IN PLONG Count, IN BOOLEAN Increment )
+ */
+#define IoAdjustPagingPathCount(_Count, _Increment) \
+ { if (_Increment) \
+   { InterlockedIncrement(_Count); \
+   } \
+   else \
+   { InterlockedDecrement(_Count); \
+   } \
+ }
+
+NTOSAPI VOID DDKAPI
+IoAllocateController(
+  /*IN*/ PCONTROLLER_OBJECT  ControllerObject,
+  /*IN*/ PDEVICE_OBJECT  DeviceObject,
+  /*IN*/ PDRIVER_CONTROL  ExecutionRoutine,
+  /*IN*/ PVOID  Context
+);
+
+NTOSAPI NTSTATUS DDKAPI
+IoAllocateDriverObjectExtension(
+  /*IN*/ PDRIVER_OBJECT  DriverObject,
+  /*IN*/ PVOID  ClientIdentificationAddress,
+  /*IN*/ ULONG  DriverObjectExtensionSize,
+  /*OUT*/ PVOID  *DriverObjectExtension
+);
+
+typedef
+struct _IO_ERROR_LOG_PACKET
+{ UCHAR 		MajorFunctionCode;
+  UCHAR 		RetryCount;
+  USHORT		DumpDataSize;
+  USHORT		NumberOfStrings;
+  USHORT		StringOffset;
+  USHORT		EventCategory;
+  NTSTATUS		ErrorCode;
+  ULONG 		UniqueErrorValue;
+  NTSTATUS		FinalStatus;
+  ULONG 		SequenceNumber;
+  ULONG 		IoControlCode;
+  LARGE_INTEGER 	DeviceOffset;
+  ULONG 		DumpData[1];
+} IO_ERROR_LOG_PACKET, *PIO_ERROR_LOG_PACKET;
+
+NTOSAPI PVOID DDKAPI
+IoAllocateErrorLogEntry( /*IN*/ PVOID IoObject, /*IN*/ UCHAR EntrySize );
+
+NTOSAPI PIRP DDKAPI
+IoAllocateIrp( /*IN*/ CCHAR StackSize, /*IN*/ BOOLEAN ChargeQuota );
+
+NTOSAPI PMDL DDKAPI
+IoAllocateMdl(
+  /*IN*/ PVOID  VirtualAddress,
+  /*IN*/ ULONG  Length,
+  /*IN*/ BOOLEAN  SecondaryBuffer,
+  /*IN*/ BOOLEAN  ChargeQuota,
+  /*IN OUT*/ PIRP  Irp  /*OPTIONAL*/
+);
+
+NTOSAPI PIO_WORKITEM DDKAPI
+IoAllocateWorkItem( /*IN*/ PDEVICE_OBJECT DeviceObject );
+
+/* VOID IoAssignArcName(
+ *   IN PUNICODE_STRING  ArcName,
+ *   IN PUNICODE_STRING  DeviceName
+ * )
+ */
+#define IoAssignArcName(_ArcName, _DeviceName) \
+ (IoCreateSymbolicLink((_ArcName), (_DeviceName)))
+
+NTOSAPI NTSTATUS DDKAPI
+IoAttachDevice(
+  /*IN*/ PDEVICE_OBJECT  SourceDevice,
+  /*IN*/ PUNICODE_STRING  TargetDevice,
+  /*OUT*/ PDEVICE_OBJECT  *AttachedDevice
+);
+
+NTOSAPI PDEVICE_OBJECT DDKAPI
+IoAttachDeviceToDeviceStack(
+  /*IN*/ PDEVICE_OBJECT  SourceDevice,
+  /*IN*/ PDEVICE_OBJECT  TargetDevice
+);
+
+NTOSAPI PIRP DDKAPI
+IoBuildAsynchronousFsdRequest(
+  /*IN*/ ULONG  MajorFunction,
+  /*IN*/ PDEVICE_OBJECT  DeviceObject,
+  /*IN OUT*/ PVOID  Buffer  /*OPTIONAL*/,
+  /*IN*/ ULONG  Length  /*OPTIONAL*/,
+  /*IN*/ PLARGE_INTEGER  StartingOffset  /*OPTIONAL*/,
+  /*IN*/ PIO_STATUS_BLOCK  IoStatusBlock  /*OPTIONAL*/
+);
+
+NTOSAPI PIRP DDKAPI
+IoBuildDeviceIoControlRequest(
+  /*IN*/ ULONG  IoControlCode,
+  /*IN*/ PDEVICE_OBJECT  DeviceObject,
+  /*IN*/ PVOID  InputBuffer  /*OPTIONAL*/,
+  /*IN*/ ULONG  InputBufferLength,
+  /*OUT*/ PVOID  OutputBuffer  /*OPTIONAL*/,
+  /*IN*/ ULONG  OutputBufferLength,
+  /*IN*/ BOOLEAN  InternalDeviceIoControl,
+  /*IN*/ PKEVENT  Event,
+  /*OUT*/ PIO_STATUS_BLOCK  IoStatusBlock
+);
+
+NTOSAPI VOID DDKAPI
+IoBuildPartialMdl(
+  /*IN*/ PMDL  SourceMdl,
+  /*IN OUT*/ PMDL  TargetMdl,
+  /*IN*/ PVOID  VirtualAddress,
+  /*IN*/ ULONG  Length
+);
+
+NTOSAPI PIRP DDKAPI
+IoBuildSynchronousFsdRequest(
+  /*IN*/ ULONG  MajorFunction,
+  /*IN*/ PDEVICE_OBJECT  DeviceObject,
+  /*IN OUT*/ PVOID  Buffer  /*OPTIONAL*/,
+  /*IN*/ ULONG  Length  /*OPTIONAL*/,
+  /*IN*/ PLARGE_INTEGER  StartingOffset  /*OPTIONAL*/,
+  /*IN*/ PKEVENT  Event,
+  /*OUT*/ PIO_STATUS_BLOCK  IoStatusBlock
+);
+
+NTOSAPI NTSTATUS DDKFASTAPI
+IofCallDriver( /*IN*/ PDEVICE_OBJECT DeviceObject, /*IN OUT*/ PIRP Irp );
+
+/* NTSTATUS IoCallDriver(
+ * IN PDEVICE_OBJECT  DeviceObject,
+ * IN OUT PIRP  Irp)
+ */
+#define IoCallDriver IofCallDriver
+
+NTOSAPI VOID DDKAPI
+IoCancelFileOpen(
+  /*IN*/ PDEVICE_OBJECT  DeviceObject,
+  /*IN*/ PFILE_OBJECT  FileObject
+);
+
+NTOSAPI BOOLEAN DDKAPI
+IoCancelIrp( /*IN*/ PIRP Irp );
+
+NTOSAPI NTSTATUS DDKAPI
+IoCheckShareAccess(
+  /*IN*/ ACCESS_MASK  DesiredAccess,
+  /*IN*/ ULONG  DesiredShareAccess,
+  /*IN OUT*/ PFILE_OBJECT  FileObject,
+  /*IN OUT*/ PSHARE_ACCESS  ShareAccess,
+  /*IN*/ BOOLEAN  Update
+);
+
+NTOSAPI VOID DDKFASTAPI
+IofCompleteRequest( /*IN*/ PIRP Irp, /*IN*/ CCHAR PriorityBoost );
+
+/* VOID IoCompleteRequest( IN PIRP Irp, IN CCHAR PriorityBoost )
+ */
+#define IoCompleteRequest IofCompleteRequest
+
+NTOSAPI NTSTATUS DDKAPI
+IoConnectInterrupt(
+  /*OUT*/ PKINTERRUPT  *InterruptObject,
+  /*IN*/ PKSERVICE_ROUTINE  ServiceRoutine,
+  /*IN*/ PVOID  ServiceContext,
+  /*IN*/ PKSPIN_LOCK  SpinLock  /*OPTIONAL*/,
+  /*IN*/ ULONG  Vector,
+  /*IN*/ KIRQL  Irql,
+  /*IN*/ KIRQL  SynchronizeIrql,
+  /*IN*/ KINTERRUPT_MODE    InterruptMode,
+  /*IN*/ BOOLEAN  ShareVector,
+  /*IN*/ KAFFINITY  ProcessorEnableMask,
+  /*IN*/ BOOLEAN  FloatingSave
+);
+
+/* PIO_STACK_LOCATION IoGetCurrentIrpStackLocation( IN PIRP Irp )
+ */
+#define IoGetCurrentIrpStackLocation(_Irp) \
+ ((_Irp)->Tail.Overlay.CurrentStackLocation)
+
+/* PIO_STACK_LOCATION IoGetNextIrpStackLocation( IN PIRP Irp )
+ */
+#define IoGetNextIrpStackLocation(_Irp) \
+ ((_Irp)->Tail.Overlay.CurrentStackLocation - 1)
+
+/* VOID IoCopyCurrentIrpStackLocationToNext( IN PIRP Irp )
+ */
+#define IoCopyCurrentIrpStackLocationToNext(_Irp) \
+ { PIO_STACK_LOCATION _IrpSp; \
+   PIO_STACK_LOCATION _NextIrpSp; \
+   _IrpSp = IoGetCurrentIrpStackLocation(_Irp); \
+   _NextIrpSp = IoGetNextIrpStackLocation(_Irp); \
+   RtlCopyMemory(_NextIrpSp, _IrpSp, \
+     FIELD_OFFSET(IO_STACK_LOCATION, CompletionRoutine)); \
+   _NextIrpSp->Control = 0; \
+}
+
+NTOSAPI PCONTROLLER_OBJECT DDKAPI
+IoCreateController( /*IN*/ ULONG Size );
+
+NTOSAPI NTSTATUS DDKAPI
+IoCreateDevice(
+  /*IN*/ PDRIVER_OBJECT  DriverObject,
+  /*IN*/ ULONG  DeviceExtensionSize,
+  /*IN*/ PUNICODE_STRING  DeviceName  /*OPTIONAL*/,
+  /*IN*/ DEVICE_TYPE  DeviceType,
+  /*IN*/ ULONG  DeviceCharacteristics,
+  /*IN*/ BOOLEAN  Exclusive,
+  /*OUT*/ PDEVICE_OBJECT  *DeviceObject
+);
+
+NTOSAPI NTSTATUS DDKAPI
+IoCreateDisk( /*IN*/ PDEVICE_OBJECT DeviceObject, /*IN*/ PCREATE_DISK Disk );
+
+NTOSAPI NTSTATUS DDKAPI
+IoCreateFile(
+  /*OUT*/ PHANDLE FileHandle,
+  /*IN*/ ACCESS_MASK DesiredAccess,
+  /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes,
+  /*OUT*/ PIO_STATUS_BLOCK IoStatusBlock,
+  /*IN*/ PLARGE_INTEGER AllocationSize /*OPTIONAL*/,
+  /*IN*/ ULONG FileAttributes,
+  /*IN*/ ULONG ShareAccess,
+  /*IN*/ ULONG Disposition,
+  /*IN*/ ULONG CreateOptions,
+  /*IN*/ PVOID EaBuffer /*OPTIONAL*/,
+  /*IN*/ ULONG EaLength,
+  /*IN*/ CREATE_FILE_TYPE CreateFileType,
+  /*IN*/ PVOID ExtraCreateParameters /*OPTIONAL*/,
+  /*IN*/ ULONG Options
+);
+
+NTOSAPI PKEVENT DDKAPI
+IoCreateNotificationEvent(
+  /*IN*/ PUNICODE_STRING  EventName,
+  /*OUT*/ PHANDLE  EventHandle
+);
+
+NTOSAPI NTSTATUS DDKAPI
+IoCreateSymbolicLink(
+  /*IN*/ PUNICODE_STRING  SymbolicLinkName,
+  /*IN*/ PUNICODE_STRING  DeviceName
+);
+
+NTOSAPI PKEVENT DDKAPI
+IoCreateSynchronizationEvent(
+  /*IN*/ PUNICODE_STRING  EventName,
+  /*OUT*/ PHANDLE  EventHandle
+);
+
+NTOSAPI NTSTATUS DDKAPI
+IoCreateUnprotectedSymbolicLink(
+  /*IN*/ PUNICODE_STRING  SymbolicLinkName,
+  /*IN*/ PUNICODE_STRING  DeviceName
+);
+
+NTOSAPI VOID DDKAPI
+IoCsqInitialize(
+  PIO_CSQ  Csq,
+  /*IN*/ PIO_CSQ_INSERT_IRP  CsqInsertIrp,
+  /*IN*/ PIO_CSQ_REMOVE_IRP  CsqRemoveIrp,
+  /*IN*/ PIO_CSQ_PEEK_NEXT_IRP  CsqPeekNextIrp,
+  /*IN*/ PIO_CSQ_ACQUIRE_LOCK  CsqAcquireLock,
+  /*IN*/ PIO_CSQ_RELEASE_LOCK  CsqReleaseLock,
+  /*IN*/ PIO_CSQ_COMPLETE_CANCELED_IRP  CsqCompleteCanceledIrp
+);
+
+NTOSAPI VOID DDKAPI
+IoCsqInsertIrp(
+  /*IN*/ PIO_CSQ  Csq,
+  /*IN*/ PIRP  Irp,
+  /*IN*/ PIO_CSQ_IRP_CONTEXT  Context
+);
+
+NTOSAPI PIRP DDKAPI
+IoCsqRemoveIrp( /*IN*/ PIO_CSQ Csq, /*IN*/ PIO_CSQ_IRP_CONTEXT Context );
+
+NTOSAPI PIRP DDKAPI
+IoCsqRemoveNextIrp( /*IN*/ PIO_CSQ Csq, /*IN*/ PVOID PeekContext );
+
+NTOSAPI VOID DDKAPI
+IoDeleteController( /*IN*/ PCONTROLLER_OBJECT ControllerObject );
+
+NTOSAPI VOID DDKAPI
+IoDeleteDevice( /*IN*/ PDEVICE_OBJECT DeviceObject );
+
+NTOSAPI NTSTATUS DDKAPI
+IoDeleteSymbolicLink( /*IN*/ PUNICODE_STRING SymbolicLinkName );
+
+/* VOID IoDeassignArcName( IN PUNICODE_STRING ArcName )
+ */
+#define IoDeassignArcName IoDeleteSymbolicLink
+
+NTOSAPI VOID DDKAPI
+IoDetachDevice( /*IN OUT*/ PDEVICE_OBJECT TargetDevice );
+
+NTOSAPI VOID DDKAPI
+IoDisconnectInterrupt( /*IN*/ PKINTERRUPT InterruptObject );
+
+NTOSAPI BOOLEAN DDKAPI
+IoForwardIrpSynchronously( /*IN*/ PDEVICE_OBJECT DeviceObject, /*IN*/ PIRP Irp );
+
+#define IoForwardAndCatchIrp IoForwardIrpSynchronously
+
+NTOSAPI VOID DDKAPI
+IoFreeController( /*IN*/ PCONTROLLER_OBJECT ControllerObject );
+
+NTOSAPI VOID DDKAPI
+IoFreeErrorLogEntry( PVOID ElEntry );
+
+NTOSAPI VOID DDKAPI
+IoFreeIrp( /*IN*/ PIRP Irp );
+
+NTOSAPI VOID DDKAPI
+IoFreeMdl( /*IN*/ PMDL Mdl );
+
+NTOSAPI VOID DDKAPI
+IoFreeWorkItem( /*IN*/ PIO_WORKITEM pIOWorkItem );
+
+NTOSAPI PDEVICE_OBJECT DDKAPI
+IoGetAttachedDevice( /*IN*/ PDEVICE_OBJECT DeviceObject );
+
+NTOSAPI PDEVICE_OBJECT DDKAPI
+IoGetAttachedDeviceReference( /*IN*/ PDEVICE_OBJECT DeviceObject );
+
+NTOSAPI NTSTATUS DDKAPI
+IoGetBootDiskInformation(
+  /*IN OUT*/ PBOOTDISK_INFORMATION  BootDiskInformation,
+  /*IN*/ ULONG  Size
+);
+
+NTOSAPI PCONFIGURATION_INFORMATION DDKAPI
+IoGetConfigurationInformation( VOID );
+
+NTOSAPI PEPROCESS DDKAPI
+IoGetCurrentProcess( VOID );
+
+NTOSAPI NTSTATUS DDKAPI
+IoGetDeviceInterfaceAlias(
+  /*IN*/ PUNICODE_STRING  SymbolicLinkName,
+  /*IN*/ CONST GUID  *AliasInterfaceClassGuid,
+  /*OUT*/ PUNICODE_STRING  AliasSymbolicLinkName
+);
+
+NTOSAPI NTSTATUS DDKAPI
+IoGetDeviceInterfaces(
+  /*IN*/ CONST GUID  *InterfaceClassGuid,
+  /*IN*/ PDEVICE_OBJECT  PhysicalDeviceObject  /*OPTIONAL*/,
+  /*IN*/ ULONG  Flags,
+  /*OUT*/ PWSTR  *SymbolicLinkList
+);
+
+NTOSAPI NTSTATUS DDKAPI
+IoGetDeviceObjectPointer(
+  /*IN*/ PUNICODE_STRING  ObjectName,
+  /*IN*/ ACCESS_MASK  DesiredAccess,
+  /*OUT*/ PFILE_OBJECT  *FileObject,
+  /*OUT*/ PDEVICE_OBJECT  *DeviceObject
+);
+
+NTOSAPI NTSTATUS DDKAPI
+IoGetDeviceProperty(
+  /*IN*/ PDEVICE_OBJECT  DeviceObject,
+  /*IN*/ DEVICE_REGISTRY_PROPERTY  DeviceProperty,
+  /*IN*/ ULONG  BufferLength,
+  /*OUT*/ PVOID  PropertyBuffer,
+  /*OUT*/ PULONG  ResultLength
+);
+
+NTOSAPI PDEVICE_OBJECT DDKAPI
+IoGetDeviceToVerify( /*IN*/ PETHREAD Thread );
+
+NTOSAPI PDMA_ADAPTER DDKAPI
+IoGetDmaAdapter(
+  /*IN*/ PDEVICE_OBJECT  PhysicalDeviceObject,
+  /*IN*/ PDEVICE_DESCRIPTION  DeviceDescription,
+  /*IN OUT*/ PULONG  NumberOfMapRegisters
+);
+
+NTOSAPI PVOID DDKAPI
+IoGetDriverObjectExtension(
+  /*IN*/ PDRIVER_OBJECT  DriverObject,
+  /*IN*/ PVOID  ClientIdentificationAddress
+);
+
+NTOSAPI PGENERIC_MAPPING DDKAPI
+IoGetFileObjectGenericMapping( VOID );
+
+/* ULONG IoGetFunctionCodeFromCtlCode( IN ULONG ControlCode )
+ */
+#define IoGetFunctionCodeFromCtlCode(_ControlCode) \
+ (((_ControlCode) >> 2) & 0x00000FFF)
+
+NTOSAPI PVOID DDKAPI
+IoGetInitialStack( VOID );
+
+NTOSAPI PDEVICE_OBJECT DDKAPI
+IoGetRelatedDeviceObject( /*IN*/ PFILE_OBJECT FileObject );
+
+NTOSAPI ULONG DDKAPI
+IoGetRemainingStackSize( VOID );
+
+NTOSAPI VOID DDKAPI
+IoGetStackLimits( /*OUT*/ PULONG_PTR LowLimit, /*OUT*/ PULONG_PTR HighLimit );
+
+NTOSAPI VOID DDKAPI
+KeInitializeDpc(
+  /*IN*/ PRKDPC  Dpc,
+  /*IN*/ PKDEFERRED_ROUTINE  DeferredRoutine,
+  /*IN*/ PVOID  DeferredContext
+);
+
+/* VOID IoInitializeDpcRequest(
+ *   IN PDEVICE_OBJECT DeviceObject,
+ *   IN PIO_DPC_ROUTINE DpcRoutine
+ * )
+ */
+#define IoInitializeDpcRequest(_DeviceObject, _DpcRoutine) \
+ KeInitializeDpc(&(_DeviceObject)->Dpc, \
+     (PKDEFERRED_ROUTINE) (_DpcRoutine), _DeviceObject \
+ )
+
+NTOSAPI VOID DDKAPI
+IoInitializeIrp(
+  /*IN OUT*/ PIRP  Irp,
+  /*IN*/ USHORT  PacketSize,
+  /*IN*/ CCHAR  StackSize
+);
+
+NTOSAPI VOID DDKAPI
+IoInitializeRemoveLockEx(
+  /*IN*/ PIO_REMOVE_LOCK Lock,
+  /*IN*/ ULONG   AllocateTag,
+  /*IN*/ ULONG   MaxLockedMinutes,
+  /*IN*/ ULONG   HighWatermark,
+  /*IN*/ ULONG   RemlockSize
+);
+
+/* VOID IoInitializeRemoveLock(
+ *   IN PIO_REMOVE_LOCK  Lock,
+ *   IN ULONG  AllocateTag,
+ *   IN ULONG  MaxLockedMinutes,
+ *   IN ULONG  HighWatermark
+ * )
+ */
+#define IoInitializeRemoveLock(Lock, AllocateTag, MaxLockedMinutes, HighWatermark) \
+ IoInitializeRemoveLockEx(Lock, AllocateTag, MaxLockedMinutes, \
+     HighWatermark, sizeof(IO_REMOVE_LOCK) \
+ )
+
+NTOSAPI NTSTATUS DDKAPI
+IoInitializeTimer(
+  /*IN*/ PDEVICE_OBJECT  DeviceObject,
+  /*IN*/ PIO_TIMER_ROUTINE  TimerRoutine,
+  /*IN*/ PVOID  Context
+);
+
+NTOSAPI VOID DDKAPI
+IoInvalidateDeviceRelations(
+  /*IN*/ PDEVICE_OBJECT  DeviceObject,
+  /*IN*/ DEVICE_RELATION_TYPE  Type
+);
+
+NTOSAPI VOID DDKAPI
+IoInvalidateDeviceState( /*IN*/ PDEVICE_OBJECT PhysicalDeviceObject );
+
+NTOSAPI BOOLEAN DDKAPI
+IoIs32bitProcess( /*IN*/ PIRP Irp /*OPTIONAL*/ );
+
+/* BOOLEAN IoIsErrorUserInduced( IN NTSTATUS Status )
+ */
+#define IoIsErrorUserInduced( Status ) \
+ ((BOOLEAN)(((Status) == STATUS_DEVICE_NOT_READY) \
+ || ((Status) == STATUS_IO_TIMEOUT) \
+ || ((Status) == STATUS_MEDIA_WRITE_PROTECTED) \
+ || ((Status) == STATUS_NO_MEDIA_IN_DEVICE) \
+ || ((Status) == STATUS_VERIFY_REQUIRED) \
+ || ((Status) == STATUS_UNRECOGNIZED_MEDIA) \
+ || ((Status) == STATUS_WRONG_VOLUME)))
+
+NTOSAPI BOOLEAN DDKAPI
+IoIsWdmVersionAvailable( /*IN*/ UCHAR MajorVersion, /*IN*/ UCHAR MinorVersion );
+
+NTOSAPI PIRP DDKAPI
+IoMakeAssociatedIrp( /*IN*/ PIRP Irp, /*IN*/ CCHAR StackSize );
+
+/* VOID IoMarkIrpPending( IN OUT PIRP Irp )
+ */
+#define IoMarkIrpPending(_Irp) \
+ (IoGetCurrentIrpStackLocation(_Irp)->Control |= SL_PENDING_RETURNED)
+
+NTOSAPI NTSTATUS DDKAPI
+IoOpenDeviceInterfaceRegistryKey(
+  /*IN*/ PUNICODE_STRING  SymbolicLinkName,
+  /*IN*/ ACCESS_MASK  DesiredAccess,
+  /*OUT*/ PHANDLE  DeviceInterfaceKey
+);
+
+NTOSAPI NTSTATUS DDKAPI
+IoOpenDeviceRegistryKey(
+  /*IN*/ PDEVICE_OBJECT  DeviceObject,
+  /*IN*/ ULONG  DevInstKeyType,
+  /*IN*/ ACCESS_MASK  DesiredAccess,
+  /*OUT*/ PHANDLE  DevInstRegKey
+);
+
+NTOSAPI NTSTATUS DDKAPI
+IoQueryDeviceDescription(
+  /*IN*/ PINTERFACE_TYPE  BusType  /*OPTIONAL*/,
+  /*IN*/ PULONG  BusNumber  /*OPTIONAL*/,
+  /*IN*/ PCONFIGURATION_TYPE  ControllerType  /*OPTIONAL*/,
+  /*IN*/ PULONG  ControllerNumber  /*OPTIONAL*/,
+  /*IN*/ PCONFIGURATION_TYPE  PeripheralType  /*OPTIONAL*/,
+  /*IN*/ PULONG  PeripheralNumber  /*OPTIONAL*/,
+  /*IN*/ PIO_QUERY_DEVICE_ROUTINE  CalloutRoutine,
+  /*IN*/ PVOID  Context
+);
+
+NTOSAPI VOID DDKAPI
+IoQueueWorkItem(
+  /*IN*/ PIO_WORKITEM  pIOWorkItem,
+  /*IN*/ PIO_WORKITEM_ROUTINE  Routine,
+  /*IN*/ WORK_QUEUE_TYPE  QueueType,
+  /*IN*/ PVOID  Context
+);
+
+NTOSAPI VOID DDKAPI
+IoRaiseHardError(
+  /*IN*/ PIRP  Irp,
+  /*IN*/ PVPB  Vpb  /*OPTIONAL*/,
+  /*IN*/ PDEVICE_OBJECT  RealDeviceObject
+);
+
+NTOSAPI BOOLEAN DDKAPI
+IoRaiseInformationalHardError(
+  /*IN*/ NTSTATUS  ErrorStatus,
+  /*IN*/ PUNICODE_STRING  String  /*OPTIONAL*/,
+  /*IN*/ PKTHREAD  Thread  /*OPTIONAL*/
+);
+
+NTOSAPI NTSTATUS DDKAPI
+IoReadDiskSignature(
+  /*IN*/ PDEVICE_OBJECT  DeviceObject,
+  /*IN*/ ULONG  BytesPerSector,
+  /*OUT*/ PDISK_SIGNATURE  Signature
+);
+
+NTOSAPI NTSTATUS DDKAPI
+IoReadPartitionTableEx(
+  /*IN*/ PDEVICE_OBJECT  DeviceObject,
+  /*IN*/ struct _DRIVE_LAYOUT_INFORMATION_EX  **PartitionBuffer
+);
+
+NTOSAPI VOID DDKAPI
+IoRegisterBootDriverReinitialization(
+  /*IN*/ PDRIVER_OBJECT  DriverObject,
+  /*IN*/ PDRIVER_REINITIALIZE  DriverReinitializationRoutine,
+  /*IN*/ PVOID  Context
+);
+
+NTOSAPI VOID DDKAPI
+IoRegisterBootDriverReinitialization(
+  /*IN*/ PDRIVER_OBJECT  DriverObject,
+  /*IN*/ PDRIVER_REINITIALIZE  DriverReinitializationRoutine,
+  /*IN*/ PVOID  Context
+);
+
+NTOSAPI NTSTATUS DDKAPI
+IoRegisterDeviceInterface(
+  /*IN*/ PDEVICE_OBJECT  PhysicalDeviceObject,
+  /*IN*/ CONST GUID  *InterfaceClassGuid,
+  /*IN*/ PUNICODE_STRING  ReferenceString  /*OPTIONAL*/,
+  /*OUT*/ PUNICODE_STRING  SymbolicLinkName
+);
+
+NTOSAPI VOID DDKAPI
+IoRegisterDriverReinitialization(
+  /*IN*/ PDRIVER_OBJECT  DriverObject,
+  /*IN*/ PDRIVER_REINITIALIZE  DriverReinitializationRoutine,
+  /*IN*/ PVOID  Context
+);
+
+NTOSAPI NTSTATUS DDKAPI
+IoRegisterPlugPlayNotification(
+  /*IN*/ IO_NOTIFICATION_EVENT_CATEGORY  EventCategory,
+  /*IN*/ ULONG  EventCategoryFlags,
+  /*IN*/ PVOID  EventCategoryData  /*OPTIONAL*/,
+  /*IN*/ PDRIVER_OBJECT  DriverObject,
+  /*IN*/ PDRIVER_NOTIFICATION_CALLBACK_ROUTINE  CallbackRoutine,
+  /*IN*/ PVOID  Context,
+  /*OUT*/ PVOID  *NotificationEntry
+);
+
+NTOSAPI NTSTATUS DDKAPI
+IoRegisterShutdownNotification( /*IN*/ PDEVICE_OBJECT DeviceObject );
+
+NTOSAPI VOID DDKAPI
+IoReleaseCancelSpinLock( /*IN*/ KIRQL Irql );
+
+NTOSAPI VOID DDKAPI
+IoReleaseRemoveLockAndWaitEx(
+  /*IN*/ PIO_REMOVE_LOCK  RemoveLock,
+  /*IN*/ PVOID  Tag,
+  /*IN*/ ULONG  RemlockSize
+);
+
+/* VOID IoReleaseRemoveLockAndWait(
+ *   IN PIO_REMOVE_LOCK  RemoveLock,
+ *   IN PVOID  Tag
+ * )
+ */
+#define IoReleaseRemoveLockAndWait(_RemoveLock, _Tag) \
+ IoReleaseRemoveLockAndWaitEx(_RemoveLock, _Tag, sizeof(IO_REMOVE_LOCK))
+
+NTOSAPI VOID DDKAPI
+IoReleaseRemoveLockEx(
+  /*IN*/ PIO_REMOVE_LOCK  RemoveLock,
+  /*IN*/ PVOID  Tag,
+  /*IN*/ ULONG  RemlockSize
+);
+
+/* VOID IoReleaseRemoveLock(
+ *   IN PIO_REMOVE_LOCK  RemoveLock,
+ *   IN PVOID  Tag
+ * )
+ */
+#define IoReleaseRemoveLock(_RemoveLock, _Tag) \
+ IoReleaseRemoveLockEx(_RemoveLock, _Tag, sizeof(IO_REMOVE_LOCK))
+
+NTOSAPI VOID DDKAPI
+IoRemoveShareAccess(
+  /*IN*/ PFILE_OBJECT  FileObject,
+  /*IN OUT*/ PSHARE_ACCESS  ShareAccess
+);
+
+NTOSAPI NTSTATUS DDKAPI
+IoReportDetectedDevice(
+  /*IN*/ PDRIVER_OBJECT  DriverObject,
+  /*IN*/ INTERFACE_TYPE  LegacyBusType,
+  /*IN*/ ULONG  BusNumber,
+  /*IN*/ ULONG  SlotNumber,
+  /*IN*/ PCM_RESOURCE_LIST  ResourceList,
+  /*IN*/ PIO_RESOURCE_REQUIREMENTS_LIST  ResourceRequirements  /*OPTIONAL*/,
+  /*IN*/ BOOLEAN  ResourceAssigned,
+  /*IN OUT*/ PDEVICE_OBJECT  *DeviceObject
+);
+
+NTOSAPI NTSTATUS DDKAPI
+IoReportResourceForDetection(
+  /*IN*/ PDRIVER_OBJECT  DriverObject,
+  /*IN*/ PCM_RESOURCE_LIST  DriverList  /*OPTIONAL*/,
+  /*IN*/ ULONG  DriverListSize  /*OPTIONAL*/,
+  /*IN*/ PDEVICE_OBJECT  DeviceObject  /*OPTIONAL*/,
+  /*IN*/ PCM_RESOURCE_LIST  DeviceList  /*OPTIONAL*/,
+  /*IN*/ ULONG  DeviceListSize  /*OPTIONAL*/,
+  /*OUT*/ PBOOLEAN  ConflictDetected
+);
+
+NTOSAPI NTSTATUS DDKAPI
+IoReportResourceUsage(
+  /*IN*/ PUNICODE_STRING  DriverClassName  /*OPTIONAL*/,
+  /*IN*/ PDRIVER_OBJECT  DriverObject,
+  /*IN*/ PCM_RESOURCE_LIST  DriverList  /*OPTIONAL*/,
+  /*IN*/ ULONG  DriverListSize  /*OPTIONAL*/,
+  /*IN*/ PDEVICE_OBJECT  DeviceObject,
+  /*IN*/ PCM_RESOURCE_LIST  DeviceList  /*OPTIONAL*/,
+  /*IN*/ ULONG  DeviceListSize  /*OPTIONAL*/,
+  /*IN*/ BOOLEAN  OverrideConflict,
+  /*OUT*/ PBOOLEAN  ConflictDetected
+);
+
+NTOSAPI NTSTATUS DDKAPI
+IoReportTargetDeviceChange(
+  /*IN*/ PDEVICE_OBJECT  PhysicalDeviceObject,
+  /*IN*/ PVOID  NotificationStructure
+);
+
+NTOSAPI NTSTATUS DDKAPI
+IoReportTargetDeviceChangeAsynchronous(
+  /*IN*/ PDEVICE_OBJECT  PhysicalDeviceObject,
+  /*IN*/ PVOID  NotificationStructure,
+  /*IN*/ PDEVICE_CHANGE_COMPLETE_CALLBACK  Callback  /*OPTIONAL*/,
+  /*IN*/ PVOID  Context  /*OPTIONAL*/
+);
+
+NTOSAPI VOID DDKAPI
+IoRequestDeviceEject( /*IN*/ PDEVICE_OBJECT PhysicalDeviceObject );
+
+/* VOID IoRequestDpc(
+ *   IN PDEVICE_OBJECT  DeviceObject,
+ *   IN PIRP  Irp,
+ *   IN PVOID  Context
+ * )
+ */
+#define IoRequestDpc(DeviceObject, Irp, Context) \
+ (KeInsertQueueDpc(&(DeviceObject)->Dpc, (Irp), (Context)))
+
+NTOSAPI VOID DDKAPI
+IoReuseIrp( /*IN OUT*/ PIRP Irp, /*IN*/ NTSTATUS Status );
+
+/* PDRIVER_CANCEL IoSetCancelRoutine(
+ *   IN PIRP  Irp,
+ *   IN PDRIVER_CANCEL  CancelRoutine
+ * )
+ */
+#define IoSetCancelRoutine(_Irp, _CancelRoutine) \
+ ((PDRIVER_CANCEL)(InterlockedExchangePointer( \
+    (PVOID *)(&(_Irp)->CancelRoutine), (PVOID)(_CancelRoutine)) \
+ ))
+
+/* VOID IoSetCompletionRoutine(
+ *   IN PIRP  Irp,
+ *   IN PIO_COMPLETION_ROUTINE  CompletionRoutine,
+ *   IN PVOID  Context,
+ *   IN BOOLEAN  InvokeOnSuccess,
+ *   IN BOOLEAN  InvokeOnError,
+ *   IN BOOLEAN  InvokeOnCancel
+ * )
+ */
+#define IoSetCompletionRoutine(_Irp, _CompletionRoutine, _Context, \
+ _InvokeOnSuccess, _InvokeOnError, _InvokeOnCancel \
+ ) \
+ { PIO_STACK_LOCATION _IrpSp; \
+   ASSERT(_InvokeOnSuccess || _InvokeOnError || _InvokeOnCancel ? \
+      _CompletionRoutine != NULL : TRUE); \
+   _IrpSp = IoGetNextIrpStackLocation(_Irp); \
+   _IrpSp->CompletionRoutine = (PIO_COMPLETION_ROUTINE)(_CompletionRoutine); \
+	_IrpSp->Context = (_Context); \
+   _IrpSp->Control = 0; \
+   if (_InvokeOnSuccess) _IrpSp->Control = SL_INVOKE_ON_SUCCESS; \
+   if (_InvokeOnError) _IrpSp->Control |= SL_INVOKE_ON_ERROR; \
+   if (_InvokeOnCancel) _IrpSp->Control |= SL_INVOKE_ON_CANCEL; \
+ }
+
+NTOSAPI VOID DDKAPI
+IoSetCompletionRoutineEx(
+  /*IN*/ PDEVICE_OBJECT  DeviceObject,
+  /*IN*/ PIRP  Irp,
+  /*IN*/ PIO_COMPLETION_ROUTINE  CompletionRoutine,
+  /*IN*/ PVOID  Context,
+  /*IN*/ BOOLEAN    InvokeOnSuccess,
+  /*IN*/ BOOLEAN  InvokeOnError,
+  /*IN*/ BOOLEAN  InvokeOnCancel
+);
+
+NTOSAPI NTSTATUS DDKAPI
+IoSetDeviceInterfaceState(
+  /*IN*/ PUNICODE_STRING  SymbolicLinkName,
+  /*IN*/ BOOLEAN  Enable
+);
+
+NTOSAPI VOID DDKAPI
+IoSetHardErrorOrVerifyDevice(
+  /*IN*/ PIRP  Irp,
+  /*IN*/ PDEVICE_OBJECT  DeviceObject
+);
+
+/* VOID IoSetNextIrpStackLocation( IN OUT PIRP Irp )
+ */
+#define IoSetNextIrpStackLocation(_Irp) \
+ { (_Irp)->CurrentLocation--; \
+   (_Irp)->Tail.Overlay.CurrentStackLocation--; \
+ }
+
+NTOSAPI NTSTATUS DDKAPI
+IoSetPartitionInformationEx(
+  /*IN*/ PDEVICE_OBJECT  DeviceObject,
+  /*IN*/ ULONG  PartitionNumber,
+  /*IN*/ struct _SET_PARTITION_INFORMATION_EX  *PartitionInfo
+);
+
+NTOSAPI VOID DDKAPI
+IoSetShareAccess(
+  /*IN*/ ACCESS_MASK  DesiredAccess,
+  /*IN*/ ULONG  DesiredShareAccess,
+  /*IN OUT*/ PFILE_OBJECT  FileObject,
+  /*OUT*/ PSHARE_ACCESS  ShareAccess
+);
+
+NTOSAPI VOID DDKAPI
+IoSetStartIoAttributes(
+  /*IN*/ PDEVICE_OBJECT  DeviceObject,
+  /*IN*/ BOOLEAN  DeferredStartIo,
+  /*IN*/ BOOLEAN  NonCancelable
+);
+
+NTOSAPI NTSTATUS DDKAPI
+IoSetSystemPartition( /*IN*/ PUNICODE_STRING VolumeNameString );
+
+NTOSAPI BOOLEAN DDKAPI
+IoSetThreadHardErrorMode( /*IN*/ BOOLEAN EnableHardErrors );
+
+/* USHORT IoSizeOfIrp( IN CCHAR StackSize )
+ */
+#define IoSizeOfIrp(_StackSize) \
+ ((USHORT) (sizeof(IRP) + ((_StackSize) * (sizeof(IO_STACK_LOCATION)))))
+
+/* VOID IoSkipCurrentIrpStackLocation( IN PIRP Irp )
+ */
+#define IoSkipCurrentIrpStackLocation(_Irp) \
+ { (_Irp)->CurrentLocation++; \
+   (_Irp)->Tail.Overlay.CurrentStackLocation++; \
+ }
+
+NTOSAPI VOID DDKAPI
+IoStartNextPacket(
+  /*IN*/ PDEVICE_OBJECT DeviceObject,
+  /*IN*/ BOOLEAN Cancelable
+);
+
+NTOSAPI VOID DDKAPI
+IoStartNextPacketByKey(
+  /*IN*/ PDEVICE_OBJECT  DeviceObject,
+  /*IN*/ BOOLEAN  Cancelable,
+  /*IN*/ ULONG  Key
+);
+
+NTOSAPI VOID DDKAPI
+IoStartPacket(
+  /*IN*/ PDEVICE_OBJECT  DeviceObject,
+  /*IN*/ PIRP  Irp,
+  /*IN*/ PULONG  Key  /*OPTIONAL*/,
+  /*IN*/ PDRIVER_CANCEL  CancelFunction  /*OPTIONAL*/
+);
+
+NTOSAPI VOID DDKAPI
+IoStartTimer( /*IN*/ PDEVICE_OBJECT DeviceObject );
+
+NTOSAPI VOID DDKAPI
+IoStopTimer( /*IN*/ PDEVICE_OBJECT DeviceObject );
+
+NTOSAPI NTSTATUS DDKAPI
+IoUnregisterPlugPlayNotification( /*IN*/ PVOID NotificationEntry );
+
+NTOSAPI VOID DDKAPI
+IoUnregisterShutdownNotification( /*IN*/ PDEVICE_OBJECT DeviceObject );
+
+NTOSAPI VOID DDKAPI
+IoUpdateShareAccess(
+  /*IN*/ PFILE_OBJECT  FileObject,
+  /*IN OUT*/ PSHARE_ACCESS  ShareAccess
+);
+
+NTOSAPI NTSTATUS DDKAPI
+IoVerifyPartitionTable(
+  /*IN*/ PDEVICE_OBJECT  DeviceObject,
+  /*IN*/ BOOLEAN  FixErrors
+);
+
+NTOSAPI NTSTATUS DDKAPI
+IoVolumeDeviceToDosName(
+  /*IN*/ PVOID  VolumeDeviceObject,
+  /*OUT*/ PUNICODE_STRING  DosName
+);
+
+NTOSAPI NTSTATUS DDKAPI
+IoWMIAllocateInstanceIds(
+  /*IN*/ GUID  *Guid,
+  /*IN*/ ULONG  InstanceCount,
+  /*OUT*/ ULONG  *FirstInstanceId
+);
+
+NTOSAPI ULONG DDKAPI
+IoWMIDeviceObjectToProviderId( /*IN*/ PDEVICE_OBJECT DeviceObject );
+
+NTOSAPI NTSTATUS DDKAPI
+IoWMIDeviceObjectToInstanceName(
+  /*IN*/ PVOID  DataBlockObject,
+  /*IN*/ PDEVICE_OBJECT  DeviceObject,
+  /*OUT*/ PUNICODE_STRING  InstanceName
+);
+
+NTOSAPI NTSTATUS DDKAPI
+IoWMIExecuteMethod(
+  /*IN*/ PVOID  DataBlockObject,
+  /*IN*/ PUNICODE_STRING  InstanceName,
+  /*IN*/ ULONG  MethodId,
+  /*IN*/ ULONG  InBufferSize,
+  /*IN OUT*/ PULONG  OutBufferSize,
+  /*IN OUT*/  PUCHAR  InOutBuffer
+);
+
+NTOSAPI NTSTATUS DDKAPI
+IoWMIHandleToInstanceName(
+  /*IN*/ PVOID  DataBlockObject,
+  /*IN*/ HANDLE  FileHandle,
+  /*OUT*/ PUNICODE_STRING  InstanceName
+);
+
+NTOSAPI NTSTATUS DDKAPI
+IoWMIOpenBlock(
+  /*IN*/ GUID  *DataBlockGuid,
+  /*IN*/ ULONG  DesiredAccess,
+  /*OUT*/ PVOID  *DataBlockObject
+);
+
+NTOSAPI NTSTATUS DDKAPI
+IoWMIQueryAllData(
+  /*IN*/ PVOID  DataBlockObject,
+  /*IN OUT*/ ULONG  *InOutBufferSize,
+  /*OUT*/ PVOID  OutBuffer
+);
+
+NTOSAPI NTSTATUS DDKAPI
+IoWMIQueryAllDataMultiple(
+  /*IN*/ PVOID  *DataBlockObjectList,
+  /*IN*/ ULONG  ObjectCount,
+  /*IN OUT*/ ULONG  *InOutBufferSize,
+  /*OUT*/ PVOID  OutBuffer
+);
+
+NTOSAPI NTSTATUS DDKAPI
+IoWMIQuerySingleInstance(
+  /*IN*/ PVOID  DataBlockObject,
+  /*IN*/ PUNICODE_STRING  InstanceName,
+  /*IN OUT*/ ULONG  *InOutBufferSize,
+  /*OUT*/ PVOID OutBuffer
+);
+
+NTOSAPI NTSTATUS DDKAPI
+IoWMIQuerySingleInstanceMultiple(
+  /*IN*/ PVOID  *DataBlockObjectList,
+  /*IN*/ PUNICODE_STRING  InstanceNames,
+  /*IN*/ ULONG  ObjectCount,
+  /*IN OUT*/ ULONG  *InOutBufferSize,
+  /*OUT*/ PVOID  OutBuffer
+);
+
+NTOSAPI NTSTATUS DDKAPI
+IoWMIRegistrationControl(
+  /*IN*/ PDEVICE_OBJECT  DeviceObject,
+  /*IN*/ ULONG  Action
+);
+
+NTOSAPI NTSTATUS DDKAPI
+IoWMISetNotificationCallback(
+  /*IN*/ PVOID  Object,
+  /*IN*/ WMI_NOTIFICATION_CALLBACK  Callback,
+  /*IN*/ PVOID  Context
+);
+
+NTOSAPI NTSTATUS DDKAPI
+IoWMISetSingleInstance(
+  /*IN*/ PVOID  DataBlockObject,
+  /*IN*/ PUNICODE_STRING  InstanceName,
+  /*IN*/ ULONG  Version,
+  /*IN*/ ULONG  ValueBufferSize,
+  /*IN*/ PVOID  ValueBuffer
+);
+
+NTOSAPI NTSTATUS DDKAPI
+IoWMISetSingleItem(
+  /*IN*/ PVOID  DataBlockObject,
+  /*IN*/ PUNICODE_STRING  InstanceName,
+  /*IN*/ ULONG  DataItemId,
+  /*IN*/ ULONG  Version,
+  /*IN*/ ULONG  ValueBufferSize,
+  /*IN*/ PVOID  ValueBuffer
+);
+
+NTOSAPI NTSTATUS DDKAPI
+IoWMISuggestInstanceName(
+  /*IN*/ PDEVICE_OBJECT  PhysicalDeviceObject /*OPTIONAL*/,
+  /*IN*/ PUNICODE_STRING  SymbolicLinkName /*OPTIONAL*/,
+  /*IN*/ BOOLEAN  CombineNames,
+  /*OUT*/ PUNICODE_STRING  SuggestedInstanceName
+);
+
+NTOSAPI NTSTATUS DDKAPI
+IoWMIWriteEvent( /*IN*/ PVOID WnodeEventItem );
+
+NTOSAPI VOID DDKAPI
+IoWriteErrorLogEntry( /*IN*/ PVOID ElEntry );
+
+NTOSAPI NTSTATUS DDKAPI
+IoWritePartitionTableEx(
+  /*IN*/ PDEVICE_OBJECT  DeviceObject,
+  /*IN*/ struct _DRIVE_LAYOUT_INFORMATION_EX  *PartitionBuffer
+);
+
+
+
+/** Kernel routines **/
+
+NTOSAPI VOID DDKFASTAPI
+KeAcquireInStackQueuedSpinLock(
+  /*IN*/ PKSPIN_LOCK  SpinLock,
+  /*IN*/ PKLOCK_QUEUE_HANDLE  LockHandle
+);
+
+NTOSAPI VOID DDKFASTAPI
+KeAcquireInStackQueuedSpinLockAtDpcLevel(
+  /*IN*/ PKSPIN_LOCK  SpinLock,
+  /*IN*/ PKLOCK_QUEUE_HANDLE  LockHandle
+);
+
+NTOSAPI KIRQL DDKAPI
+KeAcquireInterruptSpinLock( /*IN*/ PKINTERRUPT Interrupt );
+
+NTOSAPI VOID DDKAPI
+KeAcquireSpinLock( /*IN*/ PKSPIN_LOCK SpinLock, /*OUT*/ PKIRQL OldIrql );
+
+/* System Service Dispatch Table */
+typedef PVOID (NTAPI * SSDT)(VOID);
+typedef SSDT * PSSDT;
+
+/* System Service Parameters Table */
+typedef UCHAR SSPT, * PSSPT;
+
+typedef
+struct _SSDT_ENTRY
+{ PSSDT 			SSDT;
+  PULONG			ServiceCounterTable;
+  ULONG 			NumberOfServices;
+  PSSPT 			SSPT;
+} SSDT_ENTRY, *PSSDT_ENTRY;
+
+NTOSAPI BOOLEAN DDKAPI
+KeAddSystemServiceTable(
+  /*IN*/ PSSDT  SSDT,
+  /*IN*/ PULONG  ServiceCounterTable,
+  /*IN*/ ULONG  NumberOfServices,
+  /*IN*/ PSSPT  SSPT,
+  /*IN*/ ULONG  TableIndex
+);
+
+NTOSAPI BOOLEAN DDKAPI
+KeAreApcsDisabled( VOID );
+
+NTOSAPI VOID DDKAPI
+KeAttachProcess( /*IN*/ PEPROCESS Process );
+
+NTOSAPI VOID DDKAPI
+KeBugCheck( /*IN*/ ULONG BugCheckCode );
+
+NTOSAPI VOID DDKAPI
+KeBugCheckEx(
+  /*IN*/ ULONG  BugCheckCode,
+  /*IN*/ ULONG_PTR  BugCheckParameter1,
+  /*IN*/ ULONG_PTR  BugCheckParameter2,
+  /*IN*/ ULONG_PTR  BugCheckParameter3,
+  /*IN*/ ULONG_PTR  BugCheckParameter4
+);
+
+NTOSAPI BOOLEAN DDKAPI
+KeCancelTimer( /*IN*/ PKTIMER Timer );
+
+NTOSAPI VOID DDKAPI
+KeClearEvent( /*IN*/ PRKEVENT Event );
+
+NTOSAPI NTSTATUS DDKAPI
+KeDelayExecutionThread(
+  /*IN*/ KPROCESSOR_MODE  WaitMode,
+  /*IN*/ BOOLEAN  Alertable,
+  /*IN*/ PLARGE_INTEGER  Interval
+);
+
+NTOSAPI BOOLEAN DDKAPI
+KeDeregisterBugCheckCallback( /*IN*/ PKBUGCHECK_CALLBACK_RECORD CallbackRecord );
+
+NTOSAPI VOID DDKAPI
+KeDetachProcess( VOID );
+
+NTOSAPI VOID DDKAPI
+KeEnterCriticalRegion( VOID );
+
+/* VOID KeFlushIoBuffers(
+ *   IN PMDL  Mdl,
+ *   IN BOOLEAN  ReadOperation,
+ *   IN BOOLEAN  DmaOperation
+ * )
+ */
+#define KeFlushIoBuffers(_Mdl, _ReadOperation, _DmaOperation)
+
+NTOSAPI VOID DDKAPI
+KeFlushQueuedDpcs( VOID );
+
+NTOSAPI PRKTHREAD DDKAPI
+KeGetCurrentThread( VOID );
+
+NTOSAPI KPROCESSOR_MODE DDKAPI
+KeGetPreviousMode( VOID );
+
+NTOSAPI ULONG DDKAPI
+KeGetRecommendedSharedDataAlignment( VOID );
+
+NTOSAPI VOID DDKAPI
+KeInitializeApc(
+  /*IN*/ PKAPC  Apc,
+  /*IN*/ PKTHREAD  Thread,
+  /*IN*/ UCHAR  StateIndex,
+  /*IN*/ PKKERNEL_ROUTINE  KernelRoutine,
+  /*IN*/ PKRUNDOWN_ROUTINE  RundownRoutine,
+  /*IN*/ PKNORMAL_ROUTINE  NormalRoutine,
+  /*IN*/ UCHAR  Mode,
+  /*IN*/ PVOID  Context
+);
+
+NTOSAPI VOID DDKAPI
+KeInitializeDeviceQueue( /*IN*/ PKDEVICE_QUEUE DeviceQueue );
+
+NTOSAPI VOID DDKAPI
+KeInitializeMutex( /*IN*/ PRKMUTEX Mutex, /*IN*/ ULONG Level );
+
+NTOSAPI VOID DDKAPI
+KeInitializeSemaphore(
+  /*IN*/ PRKSEMAPHORE  Semaphore,
+  /*IN*/ LONG  Count,
+  /*IN*/ LONG  Limit
+);
+
+NTOSAPI VOID DDKAPI
+KeInitializeSpinLock( /*IN*/ PKSPIN_LOCK SpinLock );
+
+NTOSAPI VOID DDKAPI
+KeInitializeTimer( /*IN*/ PKTIMER Timer );
+
+NTOSAPI VOID DDKAPI
+KeInitializeTimerEx( /*IN*/ PKTIMER Timer, /*IN*/ TIMER_TYPE Type );
+
+NTOSAPI BOOLEAN DDKAPI
+KeInsertByKeyDeviceQueue(
+  /*IN*/ PKDEVICE_QUEUE  DeviceQueue,
+  /*IN*/ PKDEVICE_QUEUE_ENTRY  DeviceQueueEntry,
+  /*IN*/ ULONG  SortKey
+);
+
+NTOSAPI BOOLEAN DDKAPI
+KeInsertDeviceQueue(
+  /*IN*/ PKDEVICE_QUEUE  DeviceQueue,
+  /*IN*/ PKDEVICE_QUEUE_ENTRY  DeviceQueueEntry
+);
+
+NTOSAPI BOOLEAN DDKAPI
+KeInsertQueueDpc(
+  /*IN*/ PRKDPC  Dpc,
+  /*IN*/ PVOID  SystemArgument1,
+  /*IN*/ PVOID  SystemArgument2
+);
+
+NTOSAPI VOID DDKAPI
+KeLeaveCriticalRegion( VOID );
+
+static FORCEINLINE
+void KeMemoryBarrier (void) { MemoryBarrier(); }
+
+NTOSAPI NTSTATUS DDKAPI
+KePulseEvent(
+  /*IN*/ PRKEVENT  Event,
+  /*IN*/ KPRIORITY  Increment,
+  /*IN*/ BOOLEAN  Wait
+);
+
+NTOSAPI ULONGLONG DDKAPI
+KeQueryInterruptTime( VOID );
+
+NTOSAPI LARGE_INTEGER DDKAPI
+KeQueryPerformanceCounter(
+  /*OUT*/ PLARGE_INTEGER  PerformanceFrequency  /*OPTIONAL*/
+);
+
+NTOSAPI KPRIORITY DDKAPI
+KeQueryPriorityThread( /*IN*/ PRKTHREAD Thread );
+
+NTOSAPI VOID DDKAPI
+KeQuerySystemTime( /*OUT*/ PLARGE_INTEGER CurrentTime );
+
+NTOSAPI VOID DDKAPI
+KeQueryTickCount( /*OUT*/ PLARGE_INTEGER TickCount );
+
+NTOSAPI ULONG DDKAPI
+KeQueryTimeIncrement( VOID );
+
+NTOSAPI LONG DDKAPI
+KeReadStateEvent( /*IN*/ PRKEVENT Event );
+
+NTOSAPI LONG DDKAPI
+KeReadStateMutex( /*IN*/ PRKMUTEX Mutex );
+
+NTOSAPI LONG DDKAPI
+KeReadStateSemaphore( /*IN*/ PRKSEMAPHORE Semaphore );
+
+NTOSAPI BOOLEAN DDKAPI
+KeReadStateTimer( /*IN*/ PKTIMER Timer );
+
+NTOSAPI BOOLEAN DDKAPI
+KeRegisterBugCheckCallback(
+  /*IN*/ PKBUGCHECK_CALLBACK_RECORD  CallbackRecord,
+  /*IN*/ PKBUGCHECK_CALLBACK_ROUTINE  CallbackRoutine,
+  /*IN*/ PVOID  Buffer,
+  /*IN*/ ULONG  Length,
+  /*IN*/ PUCHAR  Component
+);
+
+NTOSAPI VOID DDKFASTAPI
+KeReleaseInStackQueuedSpinLock( /*IN*/ PKLOCK_QUEUE_HANDLE LockHandle );
+
+NTOSAPI VOID DDKFASTAPI
+KeReleaseInStackQueuedSpinLockFromDpcLevel(
+  /*IN*/ PKLOCK_QUEUE_HANDLE LockHandle
+);
+
+NTOSAPI VOID DDKAPI
+KeReleaseInterruptSpinLock( /*IN*/ PKINTERRUPT Interrupt, /*IN*/ KIRQL OldIrql );
+
+NTOSAPI LONG DDKAPI
+KeReleaseMutex( /*IN*/ PRKMUTEX Mutex, /*IN*/ BOOLEAN Wait );
+
+NTOSAPI LONG DDKAPI
+KeReleaseSemaphore(
+  /*IN*/ PRKSEMAPHORE  Semaphore,
+  /*IN*/ KPRIORITY  Increment,
+  /*IN*/ LONG  Adjustment,
+  /*IN*/ BOOLEAN  Wait
+);
+
+NTOSAPI VOID DDKAPI
+KeReleaseSpinLock( /*IN*/ PKSPIN_LOCK SpinLock, /*IN*/ KIRQL NewIrql );
+
+NTOSAPI PKDEVICE_QUEUE_ENTRY DDKAPI
+KeRemoveByKeyDeviceQueue(
+  /*IN*/ PKDEVICE_QUEUE  DeviceQueue,
+  /*IN*/ ULONG  SortKey
+);
+
+NTOSAPI PKDEVICE_QUEUE_ENTRY DDKAPI
+KeRemoveDeviceQueue( /*IN*/ PKDEVICE_QUEUE DeviceQueue );
+
+NTOSAPI BOOLEAN DDKAPI
+KeRemoveEntryDeviceQueue(
+  /*IN*/ PKDEVICE_QUEUE  DeviceQueue,
+  /*IN*/ PKDEVICE_QUEUE_ENTRY  DeviceQueueEntry
+);
+
+NTOSAPI BOOLEAN DDKAPI
+KeRemoveQueueDpc( /*IN*/ PRKDPC Dpc );
+
+NTOSAPI LONG DDKAPI
+KeResetEvent( /*IN*/ PRKEVENT Event );
+
+NTOSAPI NTSTATUS DDKAPI
+KeRestoreFloatingPointState( /*IN*/ PKFLOATING_SAVE FloatSave );
+
+NTOSAPI NTSTATUS DDKAPI
+KeSaveFloatingPointState( /*OUT*/ PKFLOATING_SAVE FloatSave );
+
+NTOSAPI LONG DDKAPI
+KeSetBasePriorityThread( /*IN*/ PRKTHREAD Thread, /*IN*/ LONG Increment );
+
+NTOSAPI LONG DDKAPI
+KeSetEvent(
+  /*IN*/ PRKEVENT  Event,
+  /*IN*/ KPRIORITY  Increment,
+  /*IN*/ BOOLEAN  Wait
+);
+
+NTOSAPI VOID DDKAPI
+KeSetImportanceDpc( /*IN*/ PRKDPC Dpc, /*IN*/ KDPC_IMPORTANCE Importance );
+
+NTOSAPI KPRIORITY DDKAPI
+KeSetPriorityThread( /*IN*/ PKTHREAD Thread, /*IN*/ KPRIORITY Priority );
+
+NTOSAPI VOID DDKAPI
+KeSetTargetProcessorDpc( /*IN*/ PRKDPC Dpc, /*IN*/ CCHAR Number );
+
+NTOSAPI BOOLEAN DDKAPI
+KeSetTimer(
+  /*IN*/ PKTIMER  Timer,
+  /*IN*/ LARGE_INTEGER  DueTime,
+  /*IN*/ PKDPC  Dpc  /*OPTIONAL*/
+);
+
+NTOSAPI BOOLEAN DDKAPI
+KeSetTimerEx(
+  /*IN*/ PKTIMER  Timer,
+  /*IN*/ LARGE_INTEGER  DueTime,
+  /*IN*/ LONG  Period  /*OPTIONAL*/,
+  /*IN*/ PKDPC  Dpc  /*OPTIONAL*/
+);
+
+NTOSAPI VOID DDKFASTAPI
+KeSetTimeUpdateNotifyRoutine( /*IN*/ PTIME_UPDATE_NOTIFY_ROUTINE NotifyRoutine );
+
+NTOSAPI VOID DDKAPI
+KeStallExecutionProcessor( /*IN*/ ULONG MicroSeconds );
+
+NTOSAPI BOOLEAN DDKAPI
+KeSynchronizeExecution(
+  /*IN*/ PKINTERRUPT    Interrupt,
+  /*IN*/ PKSYNCHRONIZE_ROUTINE  SynchronizeRoutine,
+  /*IN*/ PVOID  SynchronizeContext
+);
+
+NTOSAPI NTSTATUS DDKAPI
+KeWaitForMultipleObjects(
+  /*IN*/ ULONG  Count,
+  /*IN*/ PVOID  Object[],
+  /*IN*/ WAIT_TYPE  WaitType,
+  /*IN*/ KWAIT_REASON  WaitReason,
+  /*IN*/ KPROCESSOR_MODE  WaitMode,
+  /*IN*/ BOOLEAN  Alertable,
+  /*IN*/ PLARGE_INTEGER  Timeout  /*OPTIONAL */,
+  /*IN*/ PKWAIT_BLOCK  WaitBlockArray  /*OPTIONAL*/
+);
+
+NTOSAPI NTSTATUS DDKAPI
+KeWaitForMutexObject(
+  /*IN*/ PRKMUTEX  Mutex,
+  /*IN*/ KWAIT_REASON  WaitReason,
+  /*IN*/ KPROCESSOR_MODE  WaitMode,
+  /*IN*/ BOOLEAN  Alertable,
+  /*IN*/ PLARGE_INTEGER  Timeout  /*OPTIONAL*/
+);
+
+NTOSAPI NTSTATUS DDKAPI
+KeWaitForSingleObject(
+  /*IN*/ PVOID  Object,
+  /*IN*/ KWAIT_REASON  WaitReason,
+  /*IN*/ KPROCESSOR_MODE  WaitMode,
+  /*IN*/ BOOLEAN  Alertable,
+  /*IN*/ PLARGE_INTEGER  Timeout  /*OPTIONAL*/
+);
+
+NTOSAPI VOID DDKAPI
+KeRaiseIrql( /*IN*/ KIRQL new_irql, /*OUT*/ PKIRQL old_irql );
+
+NTOSAPI VOID DDKAPI
+KeLowerIrql( /*IN*/ KIRQL irql );
+
+NTOSAPI KIRQL DDKAPI
+KeRaiseIrqlToDpcLevel( VOID );
+
+/** Memory manager routines **/
+
+NTOSAPI NTSTATUS DDKAPI
+MmAdvanceMdl( /*IN*/ PMDL Mdl, /*IN*/ ULONG NumberOfBytes );
+
+NTOSAPI PVOID DDKAPI
+MmAllocateContiguousMemory(
+  /*IN*/ ULONG  NumberOfBytes,
+  /*IN*/ PHYSICAL_ADDRESS  HighestAcceptableAddress
+);
+
+NTOSAPI PVOID DDKAPI
+MmAllocateContiguousMemorySpecifyCache(
+  /*IN*/ SIZE_T  NumberOfBytes,
+  /*IN*/ PHYSICAL_ADDRESS  LowestAcceptableAddress,
+  /*IN*/ PHYSICAL_ADDRESS  HighestAcceptableAddress,
+  /*IN*/ PHYSICAL_ADDRESS  BoundaryAddressMultiple  /*OPTIONAL*/,
+  /*IN*/ MEMORY_CACHING_TYPE  CacheType
+);
+
+NTOSAPI PVOID DDKAPI
+MmAllocateMappingAddress( /*IN*/ SIZE_T NumberOfBytes, /*IN*/ ULONG PoolTag );
+
+NTOSAPI PVOID DDKAPI
+MmAllocateNonCachedMemory( /*IN*/ ULONG NumberOfBytes );
+
+NTOSAPI PMDL DDKAPI
+MmAllocatePagesForMdl(
+  /*IN*/ PHYSICAL_ADDRESS  LowAddress,
+  /*IN*/ PHYSICAL_ADDRESS  HighAddress,
+  /*IN*/ PHYSICAL_ADDRESS  SkipBytes,
+  /*IN*/ SIZE_T  TotalBytes
+);
+
+NTOSAPI VOID DDKAPI
+MmBuildMdlForNonPagedPool( /*IN OUT*/ PMDL MemoryDescriptorList );
+
+NTOSAPI NTSTATUS DDKAPI
+MmCreateSection(
+  /*OUT*/ PSECTION_OBJECT  *SectionObject,
+  /*IN*/ ACCESS_MASK  DesiredAccess,
+  /*IN*/ POBJECT_ATTRIBUTES  ObjectAttributes  /*OPTIONAL*/,
+  /*IN*/ PLARGE_INTEGER  MaximumSize,
+  /*IN*/ ULONG  SectionPageProtection,
+  /*IN*/ ULONG  AllocationAttributes,
+  /*IN*/ HANDLE  FileHandle  /*OPTIONAL*/,
+  /*IN*/ PFILE_OBJECT  File  /*OPTIONAL*/
+);
+
+typedef
+enum _MMFLUSH_TYPE
+{ MmFlushForDelete,
+  MmFlushForWrite
+} MMFLUSH_TYPE;
+
+NTOSAPI BOOLEAN DDKAPI
+MmFlushImageSection(
+  /*IN*/ PSECTION_OBJECT_POINTERS  SectionObjectPointer,
+  /*IN*/ MMFLUSH_TYPE  FlushType
+);
+
+NTOSAPI VOID DDKAPI
+MmFreeContiguousMemory( /*IN*/ PVOID BaseAddress );
+
+NTOSAPI VOID DDKAPI
+MmFreeContiguousMemorySpecifyCache(
+  /*IN*/ PVOID  BaseAddress,
+  /*IN*/ SIZE_T  NumberOfBytes,
+  /*IN*/ MEMORY_CACHING_TYPE  CacheType
+);
+
+NTOSAPI VOID DDKAPI
+MmFreeMappingAddress( /*IN*/ PVOID BaseAddress, /*IN*/ ULONG PoolTag );
+
+NTOSAPI VOID DDKAPI
+MmFreeNonCachedMemory( /*IN*/ PVOID BaseAddress, /*IN*/ SIZE_T NumberOfBytes );
+
+NTOSAPI VOID DDKAPI
+MmFreePagesFromMdl( /*IN*/ PMDL MemoryDescriptorList );
+
+/* ULONG MmGetMdlByteCount( IN PMDL Mdl )
+ */
+#define MmGetMdlByteCount(_Mdl)  ((_Mdl)->ByteCount)
+
+/* ULONG MmGetMdlByteOffset( IN PMDL Mdl )
+ */
+#define MmGetMdlByteOffset(_Mdl)  ((_Mdl)->ByteOffset)
+
+/* PPFN_NUMBER MmGetMdlPfnArray( IN PMDL Mdl )
+ */
+#define MmGetMdlPfnArray(_Mdl)  ((PPFN_NUMBER)((_Mdl) + 1))
+
+/* PVOID MmGetMdlVirtualAddress( IN PMDL Mdl )
+ */
+#define MmGetMdlVirtualAddress(_Mdl) \
+ ((PVOID) ((PCHAR) ((_Mdl)->StartVa) + (_Mdl)->ByteOffset))
+
+NTOSAPI PHYSICAL_ADDRESS DDKAPI
+MmGetPhysicalAddress( /*IN*/ PVOID BaseAddress );
+
+NTOSAPI PPHYSICAL_MEMORY_RANGE DDKAPI
+MmGetPhysicalMemoryRanges( VOID );
+
+NTOSAPI PVOID DDKAPI
+MmGetVirtualForPhysical( /*IN*/ PHYSICAL_ADDRESS PhysicalAddress );
+
+NTOSAPI PVOID DDKAPI
+MmMapLockedPagesSpecifyCache(
+  /*IN*/ PMDL  MemoryDescriptorList,
+  /*IN*/ KPROCESSOR_MODE  AccessMode,
+  /*IN*/ MEMORY_CACHING_TYPE  CacheType,
+  /*IN*/ PVOID  BaseAddress,
+  /*IN*/ ULONG  BugCheckOnFailure,
+  /*IN*/ MM_PAGE_PRIORITY  Priority
+);
+
+NTOSAPI PVOID DDKAPI
+MmMapLockedPagesWithReservedMapping(
+  /*IN*/ PVOID  MappingAddress,
+  /*IN*/ ULONG  PoolTag,
+  /*IN*/ PMDL  MemoryDescriptorList,
+  /*IN*/ MEMORY_CACHING_TYPE  CacheType
+);
+
+NTOSAPI NTSTATUS DDKAPI
+MmMapUserAddressesToPage(
+  /*IN*/ PVOID  BaseAddress,
+  /*IN*/ SIZE_T  NumberOfBytes,
+  /*IN*/ PVOID  PageAddress
+);
+
+NTOSAPI PVOID DDKAPI
+MmMapVideoDisplay(
+  /*IN*/ PHYSICAL_ADDRESS  PhysicalAddress,
+  /*IN*/ SIZE_T  NumberOfBytes,
+  /*IN*/ MEMORY_CACHING_TYPE  CacheType
+);
+
+NTOSAPI NTSTATUS DDKAPI
+MmMapViewInSessionSpace(
+  /*IN*/ PVOID  Section,
+  /*OUT*/ PVOID  *MappedBase,
+  /*IN OUT*/ PSIZE_T  ViewSize
+);
+
+NTOSAPI NTSTATUS DDKAPI
+MmMapViewInSystemSpace(
+  /*IN*/ PVOID  Section,
+  /*OUT*/ PVOID  *MappedBase,
+  /*IN*/ PSIZE_T  ViewSize
+);
+
+NTOSAPI NTSTATUS DDKAPI
+MmMarkPhysicalMemoryAsBad(
+  /*IN*/ PPHYSICAL_ADDRESS  StartAddress,
+  /*IN OUT*/ PLARGE_INTEGER  NumberOfBytes
+);
+
+NTOSAPI NTSTATUS DDKAPI
+MmMarkPhysicalMemoryAsGood(
+  /*IN*/ PPHYSICAL_ADDRESS  StartAddress,
+  /*IN OUT*/ PLARGE_INTEGER  NumberOfBytes
+);
+
+/* PVOID MmGetSystemAddressForMdlSafe(
+ *   IN PMDL  Mdl,
+ *   IN MM_PAGE_PRIORITY  Priority
+ * )
+ */
+#define MmGetSystemAddressForMdlSafe(_Mdl, _Priority) \
+ ((_Mdl)->MdlFlags & (MDL_MAPPED_TO_SYSTEM_VA \
+   | MDL_SOURCE_IS_NONPAGED_POOL)) \
+   ? (_Mdl)->MappedSystemVa \
+   : (PVOID)(MmMapLockedPagesSpecifyCache((_Mdl), \
+      KernelMode, MmCached, NULL, FALSE, _Priority))
+
+NTOSAPI PVOID DDKAPI
+MmGetSystemRoutineAddress( /*IN*/ PUNICODE_STRING SystemRoutineName );
+
+/* ULONG ADDRESS_AND_SIZE_TO_SPAN_PAGES( IN PVOID Va, IN ULONG Size )
+ */
+#define ADDRESS_AND_SIZE_TO_SPAN_PAGES(_Va, _Size) \
+ ((ULONG) ((((ULONG_PTR) (_Va) & (PAGE_SIZE - 1)) \
+   + (_Size) + (PAGE_SIZE - 1)) >> PAGE_SHIFT))
+
+/* VOID MmInitializeMdl(
+ *   IN PMDL  MemoryDescriptorList,
+ *   IN PVOID  BaseVa,
+ *   IN SIZE_T  Length
+ * )
+ */
+#define MmInitializeMdl(_MemoryDescriptorList, _BaseVa, _Length) \
+ { (_MemoryDescriptorList)->Next = (PMDL) NULL; \
+   (_MemoryDescriptorList)->Size = (CSHORT) (sizeof(MDL) + \
+     (sizeof(PFN_NUMBER) * ADDRESS_AND_SIZE_TO_SPAN_PAGES(_BaseVa, _Length))); \
+   (_MemoryDescriptorList)->MdlFlags = 0; \
+   (_MemoryDescriptorList)->StartVa = (PVOID) PAGE_ALIGN(_BaseVa); \
+   (_MemoryDescriptorList)->ByteOffset = BYTE_OFFSET(_BaseVa); \
+   (_MemoryDescriptorList)->ByteCount = (ULONG) _Length; \
+ }
+
+NTOSAPI BOOLEAN DDKAPI
+MmIsAddressValid( /*IN*/ PVOID VirtualAddress );
+
+NTOSAPI LOGICAL DDKAPI
+MmIsDriverVerifying( /*IN*/ PDRIVER_OBJECT DriverObject );
+
+NTOSAPI BOOLEAN DDKAPI
+MmIsThisAnNtAsSystem( VOID );
+
+NTOSAPI NTSTATUS DDKAPI
+MmIsVerifierEnabled( /*OUT*/ PULONG VerifierFlags );
+
+NTOSAPI PVOID DDKAPI
+MmLockPagableDataSection( /*IN*/ PVOID AddressWithinSection );
+
+NTOSAPI PVOID DDKAPI
+MmLockPagableImageSection( /*IN*/ PVOID AddressWithinSection );
+
+/* PVOID MmLockPagableCodeSection( IN PVOID AddressWithinSection )
+ */
+#define MmLockPagableCodeSection MmLockPagableDataSection
+
+NTOSAPI VOID DDKAPI
+MmLockPagableSectionByHandle( /*IN*/ PVOID ImageSectionHandle );
+
+NTOSAPI PVOID DDKAPI
+MmMapIoSpace(
+  /*IN*/ PHYSICAL_ADDRESS  PhysicalAddress,
+  /*IN*/ ULONG  NumberOfBytes,
+  /*IN*/ MEMORY_CACHING_TYPE  CacheEnable
+);
+
+NTOSAPI PVOID DDKAPI
+MmMapLockedPages(
+  /*IN*/ PMDL  MemoryDescriptorList,
+  /*IN*/ KPROCESSOR_MODE  AccessMode
+);
+
+NTOSAPI VOID DDKAPI
+MmPageEntireDriver( /*IN*/ PVOID AddressWithinSection );
+
+NTOSAPI VOID DDKAPI
+MmProbeAndLockProcessPages(
+  /*IN OUT*/ PMDL  MemoryDescriptorList,
+  /*IN*/ PEPROCESS  Process,
+  /*IN*/ KPROCESSOR_MODE  AccessMode,
+  /*IN*/ LOCK_OPERATION  Operation
+);
+
+NTOSAPI NTSTATUS DDKAPI
+MmProtectMdlSystemAddress(
+  /*IN*/ PMDL  MemoryDescriptorList,
+  /*IN*/ ULONG  NewProtect
+);
+
+NTOSAPI VOID DDKAPI
+MmUnmapLockedPages( /*IN*/ PVOID BaseAddress, /*IN*/ PMDL MemoryDescriptorList );
+
+NTOSAPI NTSTATUS DDKAPI
+MmUnmapViewInSessionSpace( /*IN*/ PVOID MappedBase );
+
+NTOSAPI NTSTATUS DDKAPI
+MmUnmapViewInSystemSpace( /*IN*/ PVOID MappedBase );
+
+NTOSAPI VOID DDKAPI
+MmUnsecureVirtualMemory( /*IN*/ HANDLE SecureHandle );
+
+/* VOID MmPrepareMdlForReuse( IN PMDL Mdl )
+ */
+#define MmPrepareMdlForReuse(_Mdl) \
+ { if (((_Mdl)->MdlFlags & MDL_PARTIAL_HAS_BEEN_MAPPED) != 0) \
+   { ASSERT(((_Mdl)->MdlFlags & MDL_PARTIAL) != 0); \
+     MmUnmapLockedPages((_Mdl)->MappedSystemVa, (_Mdl)); \
+   } \
+   else if (((_Mdl)->MdlFlags & MDL_PARTIAL) == 0) \
+   { ASSERT(((_Mdl)->MdlFlags & MDL_MAPPED_TO_SYSTEM_VA) == 0); \
+   } \
+ }
+
+NTOSAPI VOID DDKAPI
+MmProbeAndLockPages(
+  /*IN OUT*/ PMDL  MemoryDescriptorList,
+  /*IN*/ KPROCESSOR_MODE  AccessMode,
+  /*IN*/ LOCK_OPERATION  Operation
+);
+
+NTOSAPI MM_SYSTEM_SIZE DDKAPI
+MmQuerySystemSize( VOID );
+
+NTOSAPI NTSTATUS DDKAPI
+MmRemovePhysicalMemory(
+  /*IN*/ PPHYSICAL_ADDRESS  StartAddress,
+  /*IN OUT*/ PLARGE_INTEGER  NumberOfBytes
+);
+
+NTOSAPI VOID DDKAPI
+MmResetDriverPaging( /*IN*/ PVOID AddressWithinSection );
+
+NTOSAPI HANDLE DDKAPI
+MmSecureVirtualMemory(
+  /*IN*/ PVOID  Address,
+  /*IN*/ SIZE_T  Size,
+  /*IN*/ ULONG  ProbeMode
+);
+
+NTOSAPI ULONG DDKAPI
+MmSizeOfMdl( /*IN*/ PVOID Base, /*IN*/ SIZE_T Length );
+
+NTOSAPI VOID DDKAPI
+MmUnlockPagableImageSection( /*IN*/ PVOID ImageSectionHandle );
+
+NTOSAPI VOID DDKAPI
+MmUnlockPages( /*IN*/ PMDL MemoryDescriptorList );
+
+NTOSAPI VOID DDKAPI
+MmUnmapIoSpace( /*IN*/ PVOID BaseAddress, /*IN*/ SIZE_T NumberOfBytes );
+
+NTOSAPI VOID DDKAPI
+MmUnmapReservedMapping(
+  /*IN*/ PVOID  BaseAddress,
+  /*IN*/ ULONG  PoolTag,
+  /*IN*/ PMDL  MemoryDescriptorList
+);
+
+NTOSAPI VOID DDKAPI
+MmUnmapVideoDisplay( /*IN*/ PVOID BaseAddress, /*IN*/ SIZE_T NumberOfBytes );
+
+
+/** Object manager routines **/
+
+NTOSAPI NTSTATUS DDKAPI
+ObAssignSecurity(
+  /*IN*/ PACCESS_STATE  AccessState,
+  /*IN*/ PSECURITY_DESCRIPTOR  SecurityDescriptor,
+  /*IN*/ PVOID  Object,
+  /*IN*/ POBJECT_TYPE  Type
+);
+
+NTOSAPI VOID DDKAPI
+ObDereferenceSecurityDescriptor(
+  PSECURITY_DESCRIPTOR  SecurityDescriptor,
+  ULONG  Count
+);
+
+NTOSAPI VOID DDKFASTAPI
+ObfDereferenceObject( /*IN*/ PVOID Object );
+
+/* VOID ObDereferenceObject( IN PVOID Object )
+ */
+#define ObDereferenceObject ObfDereferenceObject
+
+NTOSAPI NTSTATUS DDKAPI
+ObGetObjectSecurity(
+  /*IN*/ PVOID  Object,
+  /*OUT*/ PSECURITY_DESCRIPTOR  *SecurityDescriptor,
+  /*OUT*/ PBOOLEAN  MemoryAllocated
+);
+
+NTOSAPI NTSTATUS DDKAPI
+ObInsertObject(
+  /*IN*/ PVOID  Object,
+  /*IN*/ PACCESS_STATE  PassedAccessState  /*OPTIONAL*/,
+  /*IN*/ ACCESS_MASK  DesiredAccess,
+  /*IN*/ ULONG  AdditionalReferences,
+  /*OUT*/ PVOID*  ReferencedObject  /*OPTIONAL*/,
+  /*OUT*/ PHANDLE  Handle
+);
+
+NTOSAPI VOID DDKFASTAPI
+ObfReferenceObject( /*IN*/ PVOID Object );
+
+NTOSAPI NTSTATUS DDKAPI
+ObLogSecurityDescriptor(
+  /*IN*/ PSECURITY_DESCRIPTOR  InputSecurityDescriptor,
+  /*OUT*/ PSECURITY_DESCRIPTOR  *OutputSecurityDescriptor,
+  /*IN*/ ULONG RefBias
+);
+
+/* VOID ObReferenceObject( IN PVOID Object )
+ */
+#define ObReferenceObject ObfReferenceObject
+
+NTOSAPI VOID DDKAPI
+ObMakeTemporaryObject( /*IN*/ PVOID Object );
+
+NTOSAPI NTSTATUS DDKAPI
+ObOpenObjectByName(
+  /*IN*/ POBJECT_ATTRIBUTES  ObjectAttributes,
+  /*IN*/ POBJECT_TYPE  ObjectType,
+  /*IN OUT*/ PVOID  ParseContext  /*OPTIONAL*/,
+  /*IN*/ KPROCESSOR_MODE  AccessMode,
+  /*IN*/ ACCESS_MASK  DesiredAccess,
+  /*IN*/ PACCESS_STATE  PassedAccessState,
+  /*OUT*/ PHANDLE  Handle
+);
+
+NTOSAPI NTSTATUS DDKAPI
+ObOpenObjectByPointer(
+  /*IN*/ PVOID  Object,
+  /*IN*/ ULONG  HandleAttributes,
+  /*IN*/ PACCESS_STATE  PassedAccessState  /*OPTIONAL*/,
+  /*IN*/ ACCESS_MASK  DesiredAccess  /*OPTIONAL*/,
+  /*IN*/ POBJECT_TYPE  ObjectType  /*OPTIONAL*/,
+  /*IN*/ KPROCESSOR_MODE  AccessMode,
+  /*OUT*/ PHANDLE  Handle
+);
+
+NTOSAPI NTSTATUS DDKAPI
+ObQueryObjectAuditingByHandle(
+  /*IN*/ HANDLE  Handle,
+  /*OUT*/ PBOOLEAN  GenerateOnClose
+);
+
+NTOSAPI NTSTATUS DDKAPI
+ObReferenceObjectByHandle(
+  /*IN*/ HANDLE  Handle,
+  /*IN*/ ACCESS_MASK  DesiredAccess,
+  /*IN*/ POBJECT_TYPE  ObjectType  /*OPTIONAL*/,
+  /*IN*/ KPROCESSOR_MODE  AccessMode,
+  /*OUT*/ PVOID  *Object,
+  /*OUT*/ POBJECT_HANDLE_INFORMATION  HandleInformation  /*OPTIONAL*/
+);
+
+NTOSAPI NTSTATUS DDKAPI
+ObReferenceObjectByName(
+  /*IN*/ PUNICODE_STRING  ObjectPath,
+  /*IN*/ ULONG  Attributes,
+  /*IN*/ PACCESS_STATE  PassedAccessState  /*OPTIONAL*/,
+  /*IN*/ ACCESS_MASK  DesiredAccess  /*OPTIONAL*/,
+  /*IN*/ POBJECT_TYPE  ObjectType,
+  /*IN*/ KPROCESSOR_MODE  AccessMode,
+  /*IN OUT*/ PVOID  ParseContext  /*OPTIONAL*/,
+  /*OUT*/ PVOID  *Object
+);
+
+NTOSAPI NTSTATUS DDKAPI
+ObReferenceObjectByPointer(
+  /*IN*/ PVOID  Object,
+  /*IN*/ ACCESS_MASK  DesiredAccess,
+  /*IN*/ POBJECT_TYPE  ObjectType,
+  /*IN*/ KPROCESSOR_MODE  AccessMode
+);
+
+NTOSAPI VOID DDKAPI
+ObReferenceSecurityDescriptor(
+  /*IN*/ PSECURITY_DESCRIPTOR  SecurityDescriptor,
+  /*IN*/ ULONG  Count
+);
+
+NTOSAPI VOID DDKAPI
+ObReleaseObjectSecurity(
+  /*IN*/ PSECURITY_DESCRIPTOR  SecurityDescriptor,
+  /*IN*/ BOOLEAN  MemoryAllocated
+);
+
+
+/** Process manager routines **/
+
+NTOSAPI NTSTATUS DDKAPI
+PsCreateSystemProcess(
+  /*IN*/ PHANDLE  ProcessHandle,
+  /*IN*/ ACCESS_MASK  DesiredAccess,
+  /*IN*/ POBJECT_ATTRIBUTES  ObjectAttributes
+);
+
+NTOSAPI NTSTATUS DDKAPI
+PsCreateSystemThread(
+  /*OUT*/ PHANDLE  ThreadHandle,
+  /*IN*/ ULONG  DesiredAccess,
+  /*IN*/ POBJECT_ATTRIBUTES  ObjectAttributes  /*OPTIONAL*/,
+  /*IN*/ HANDLE  ProcessHandle  /*OPTIONAL*/,
+  /*OUT*/ PCLIENT_ID  ClientId  /*OPTIONAL*/,
+  /*IN*/ PKSTART_ROUTINE  StartRoutine,
+  /*IN*/ PVOID  StartContext
+);
+
+/* PEPROCESS PsGetCurrentProcess( VOID )
+ */
+#define PsGetCurrentProcess IoGetCurrentProcess
+
+NTOSAPI HANDLE DDKAPI
+PsGetCurrentProcessId( VOID );
+
+/* PETHREAD PsGetCurrentThread( VOID )
+ */
+#define PsGetCurrentThread() \
+ ((PETHREAD) KeGetCurrentThread())
+
+NTOSAPI HANDLE DDKAPI
+PsGetCurrentThreadId( VOID );
+
+NTOSAPI BOOLEAN DDKAPI
+PsGetVersion(
+  PULONG  MajorVersion  /*OPTIONAL*/,
+  PULONG  MinorVersion  /*OPTIONAL*/,
+  PULONG  BuildNumber  /*OPTIONAL*/,
+  PUNICODE_STRING  CSDVersion  /*OPTIONAL*/
+);
+
+NTOSAPI NTSTATUS DDKAPI
+PsRemoveCreateThreadNotifyRoutine(
+  /*IN*/ PCREATE_THREAD_NOTIFY_ROUTINE  NotifyRoutine
+);
+
+NTOSAPI NTSTATUS DDKAPI
+PsRemoveLoadImageNotifyRoutine(
+  /*IN*/ PLOAD_IMAGE_NOTIFY_ROUTINE  NotifyRoutine
+);
+
+NTOSAPI NTSTATUS DDKAPI
+PsSetCreateProcessNotifyRoutine(
+  /*IN*/ PCREATE_PROCESS_NOTIFY_ROUTINE  NotifyRoutine,
+  /*IN*/ BOOLEAN  Remove
+);
+
+NTOSAPI NTSTATUS DDKAPI
+PsSetCreateThreadNotifyRoutine(
+  /*IN*/ PCREATE_THREAD_NOTIFY_ROUTINE  NotifyRoutine
+);
+
+NTOSAPI NTSTATUS DDKAPI
+PsSetLoadImageNotifyRoutine( /*IN*/ PLOAD_IMAGE_NOTIFY_ROUTINE NotifyRoutine );
+
+NTOSAPI NTSTATUS DDKAPI
+PsTerminateSystemThread( /*IN*/ NTSTATUS ExitStatus );
+
+
+/** Security reference monitor routines **/
+
+NTOSAPI BOOLEAN DDKAPI
+SeAccessCheck(
+  /*IN*/ PSECURITY_DESCRIPTOR  SecurityDescriptor,
+  /*IN*/ PSECURITY_SUBJECT_CONTEXT  SubjectSecurityContext,
+  /*IN*/ BOOLEAN  SubjectContextLocked,
+  /*IN*/ ACCESS_MASK  DesiredAccess,
+  /*IN*/ ACCESS_MASK  PreviouslyGrantedAccess,
+  /*OUT*/ PPRIVILEGE_SET  *Privileges  /*OPTIONAL*/,
+  /*IN*/ PGENERIC_MAPPING  GenericMapping,
+  /*IN*/ KPROCESSOR_MODE  AccessMode,
+  /*OUT*/ PACCESS_MASK  GrantedAccess,
+  /*OUT*/ PNTSTATUS  AccessStatus
+);
+
+NTOSAPI NTSTATUS DDKAPI
+SeAssignSecurity(
+  /*IN*/ PSECURITY_DESCRIPTOR  ParentDescriptor  /*OPTIONAL*/,
+  /*IN*/ PSECURITY_DESCRIPTOR  ExplicitDescriptor  /*OPTIONAL*/,
+  /*OUT*/ PSECURITY_DESCRIPTOR  *NewDescriptor,
+  /*IN*/ BOOLEAN  IsDirectoryObject,
+  /*IN*/ PSECURITY_SUBJECT_CONTEXT  SubjectContext,
+  /*IN*/ PGENERIC_MAPPING  GenericMapping,
+  /*IN*/ POOL_TYPE  PoolType
+);
+
+NTOSAPI NTSTATUS DDKAPI
+SeAssignSecurityEx(
+  /*IN*/ PSECURITY_DESCRIPTOR  ParentDescriptor  /*OPTIONAL*/,
+  /*IN*/ PSECURITY_DESCRIPTOR  ExplicitDescriptor  /*OPTIONAL*/,
+  /*OUT*/ PSECURITY_DESCRIPTOR  *NewDescriptor,
+  /*IN*/ GUID  *ObjectType  /*OPTIONAL*/,
+  /*IN*/ BOOLEAN  IsDirectoryObject,
+  /*IN*/ ULONG  AutoInheritFlags,
+  /*IN*/ PSECURITY_SUBJECT_CONTEXT  SubjectContext,
+  /*IN*/ PGENERIC_MAPPING  GenericMapping,
+  /*IN*/ POOL_TYPE  PoolType
+);
+
+NTOSAPI NTSTATUS DDKAPI
+SeDeassignSecurity( /*IN OUT*/ PSECURITY_DESCRIPTOR *SecurityDescriptor );
+
+NTOSAPI BOOLEAN DDKAPI
+SeSinglePrivilegeCheck( LUID PrivilegeValue, KPROCESSOR_MODE PreviousMode );
+
+NTOSAPI BOOLEAN DDKAPI
+SeValidSecurityDescriptor(
+  /*IN*/ ULONG  Length,
+  /*IN*/ PSECURITY_DESCRIPTOR  SecurityDescriptor
+);
+
+
+/** NtXxx routines **/
+
+NTOSAPI NTSTATUS DDKAPI
+NtOpenProcess(
+  /*OUT*/ PHANDLE  ProcessHandle,
+  /*IN*/ ACCESS_MASK  DesiredAccess,
+  /*IN*/ POBJECT_ATTRIBUTES  ObjectAttributes,
+  /*IN*/ PCLIENT_ID  ClientId  /*OPTIONAL*/
+);
+
+NTOSAPI NTSTATUS DDKAPI
+NtQueryInformationProcess(
+  /*IN*/ HANDLE  ProcessHandle,
+  /*IN*/ PROCESSINFOCLASS  ProcessInformationClass,
+  /*OUT*/ PVOID  ProcessInformation,
+  /*IN*/ ULONG  ProcessInformationLength,
+  /*OUT*/ PULONG  ReturnLength /*OPTIONAL*/
+);
+
+
+/** NtXxx and ZwXxx routines **/
+
+NTOSAPI NTSTATUS DDKAPI
+NtCancelTimer(
+  /*IN*/ HANDLE  TimerHandle,
+  /*OUT*/ PBOOLEAN  CurrentState  /*OPTIONAL*/
+);
+
+NTOSAPI NTSTATUS DDKAPI
+ZwCancelTimer(
+  /*IN*/ HANDLE  TimerHandle,
+  /*OUT*/ PBOOLEAN  CurrentState  /*OPTIONAL*/
+);
+
+NTOSAPI NTSTATUS DDKAPI
+NtClose( /*IN*/ HANDLE Handle );
+
+NTOSAPI NTSTATUS DDKAPI
+ZwClose( /*IN*/ HANDLE Handle );
+
+NTOSAPI NTSTATUS DDKAPI
+NtCreateDirectoryObject(
+  /*OUT*/ PHANDLE  DirectoryHandle,
+  /*IN*/ ACCESS_MASK  DesiredAccess,
+  /*IN*/ POBJECT_ATTRIBUTES  ObjectAttributes
+);
+
+NTOSAPI NTSTATUS DDKAPI
+ZwCreateDirectoryObject(
+  /*OUT*/ PHANDLE  DirectoryHandle,
+  /*IN*/ ACCESS_MASK  DesiredAccess,
+  /*IN*/ POBJECT_ATTRIBUTES  ObjectAttributes
+);
+
+NTOSAPI NTSTATUS DDKAPI
+NtCreateEvent(
+  /*OUT*/ PHANDLE  EventHandle,
+  /*IN*/ ACCESS_MASK  DesiredAccess,
+  /*IN*/ POBJECT_ATTRIBUTES  ObjectAttributes,
+  /*IN*/ BOOLEAN  ManualReset,
+  /*IN*/ BOOLEAN  InitialState
+);
+
+NTOSAPI NTSTATUS DDKAPI
+ZwCreateEvent(
+  /*OUT*/ PHANDLE  EventHandle,
+  /*IN*/ ACCESS_MASK  DesiredAccess,
+  /*IN*/ POBJECT_ATTRIBUTES  ObjectAttributes,
+  /*IN*/ BOOLEAN  ManualReset,
+  /*IN*/ BOOLEAN  InitialState
+);
+
+NTOSAPI NTSTATUS DDKAPI
+NtCreateFile(
+  /*OUT*/ PHANDLE  FileHandle,
+  /*IN*/ ACCESS_MASK  DesiredAccess,
+  /*IN*/ POBJECT_ATTRIBUTES  ObjectAttributes,
+  /*OUT*/ PIO_STATUS_BLOCK  IoStatusBlock,
+  /*IN*/ PLARGE_INTEGER  AllocationSize  /*OPTIONAL*/,
+  /*IN*/ ULONG  FileAttributes,
+  /*IN*/ ULONG  ShareAccess,
+  /*IN*/ ULONG  CreateDisposition,
+  /*IN*/ ULONG  CreateOptions,
+  /*IN*/ PVOID  EaBuffer  /*OPTIONAL*/,
+  /*IN*/ ULONG  EaLength
+);
+
+NTOSAPI NTSTATUS DDKAPI
+ZwCreateFile(
+  /*OUT*/ PHANDLE  FileHandle,
+  /*IN*/ ACCESS_MASK  DesiredAccess,
+  /*IN*/ POBJECT_ATTRIBUTES  ObjectAttributes,
+  /*OUT*/ PIO_STATUS_BLOCK  IoStatusBlock,
+  /*IN*/ PLARGE_INTEGER  AllocationSize  /*OPTIONAL*/,
+  /*IN*/ ULONG  FileAttributes,
+  /*IN*/ ULONG  ShareAccess,
+  /*IN*/ ULONG  CreateDisposition,
+  /*IN*/ ULONG  CreateOptions,
+  /*IN*/ PVOID  EaBuffer  /*OPTIONAL*/,
+  /*IN*/ ULONG  EaLength
+);
+
+NTOSAPI NTSTATUS DDKAPI
+NtCreateKey(
+  /*OUT*/ PHANDLE  KeyHandle,
+  /*IN*/ ACCESS_MASK  DesiredAccess,
+  /*IN*/ POBJECT_ATTRIBUTES  ObjectAttributes,
+  /*IN*/ ULONG  TitleIndex,
+  /*IN*/ PUNICODE_STRING  Class  /*OPTIONAL*/,
+  /*IN*/ ULONG  CreateOptions,
+  /*OUT*/ PULONG  Disposition  /*OPTIONAL*/
+);
+
+NTOSAPI NTSTATUS DDKAPI
+ZwCreateKey(
+  /*OUT*/ PHANDLE  KeyHandle,
+  /*IN*/ ACCESS_MASK  DesiredAccess,
+  /*IN*/ POBJECT_ATTRIBUTES  ObjectAttributes,
+  /*IN*/ ULONG  TitleIndex,
+  /*IN*/ PUNICODE_STRING  Class  /*OPTIONAL*/,
+  /*IN*/ ULONG  CreateOptions,
+  /*OUT*/ PULONG  Disposition  /*OPTIONAL*/
+);
+
+NTOSAPI NTSTATUS DDKAPI
+NtCreateTimer(
+  /*OUT*/ PHANDLE  TimerHandle,
+  /*IN*/ ACCESS_MASK  DesiredAccess,
+  /*IN*/ POBJECT_ATTRIBUTES  ObjectAttributes  /*OPTIONAL*/,
+  /*IN*/ TIMER_TYPE  TimerType
+);
+
+NTOSAPI NTSTATUS DDKAPI
+ZwCreateTimer(
+  /*OUT*/ PHANDLE  TimerHandle,
+  /*IN*/ ACCESS_MASK  DesiredAccess,
+  /*IN*/ POBJECT_ATTRIBUTES  ObjectAttributes  /*OPTIONAL*/,
+  /*IN*/ TIMER_TYPE  TimerType
+);
+
+NTOSAPI NTSTATUS DDKAPI
+NtDeleteKey( /*IN*/ HANDLE KeyHandle );
+
+NTOSAPI NTSTATUS DDKAPI
+ZwDeleteKey( /*IN*/ HANDLE KeyHandle );
+
+NTOSAPI NTSTATUS DDKAPI
+NtDeleteValueKey( /*IN*/ HANDLE KeyHandle, /*IN*/ PUNICODE_STRING ValueName );
+
+NTOSAPI NTSTATUS DDKAPI
+ZwDeleteValueKey( /*IN*/ HANDLE KeyHandle, /*IN*/ PUNICODE_STRING ValueName );
+
+NTOSAPI NTSTATUS DDKAPI
+NtDeviceIoControlFile(
+  /*IN*/ HANDLE  DeviceHandle,
+  /*IN*/ HANDLE  Event  /*OPTIONAL*/,
+  /*IN*/ PIO_APC_ROUTINE  UserApcRoutine  /*OPTIONAL*/,
+  /*IN*/ PVOID  UserApcContext  /*OPTIONAL*/,
+  /*OUT*/ PIO_STATUS_BLOCK  IoStatusBlock,
+  /*IN*/ ULONG  IoControlCode,
+  /*IN*/ PVOID  InputBuffer,
+  /*IN*/ ULONG  InputBufferSize,
+  /*OUT*/ PVOID  OutputBuffer,
+  /*IN*/ ULONG  OutputBufferSize
+);
+
+NTOSAPI NTSTATUS DDKAPI
+ZwDeviceIoControlFile(
+  /*IN*/ HANDLE  DeviceHandle,
+  /*IN*/ HANDLE  Event  /*OPTIONAL*/,
+  /*IN*/ PIO_APC_ROUTINE  UserApcRoutine  /*OPTIONAL*/,
+  /*IN*/ PVOID  UserApcContext  /*OPTIONAL*/,
+  /*OUT*/ PIO_STATUS_BLOCK  IoStatusBlock,
+  /*IN*/ ULONG  IoControlCode,
+  /*IN*/ PVOID  InputBuffer,
+  /*IN*/ ULONG  InputBufferSize,
+  /*OUT*/ PVOID  OutputBuffer,
+  /*IN*/ ULONG  OutputBufferSize
+);
+
+NTOSAPI NTSTATUS DDKAPI
+NtEnumerateKey(
+  /*IN*/ HANDLE  KeyHandle,
+  /*IN*/ ULONG  Index,
+  /*IN*/ KEY_INFORMATION_CLASS  KeyInformationClass,
+  /*OUT*/ PVOID  KeyInformation,
+  /*IN*/ ULONG  Length,
+  /*OUT*/ PULONG  ResultLength
+);
+
+NTOSAPI NTSTATUS DDKAPI
+ZwEnumerateKey(
+  /*IN*/ HANDLE  KeyHandle,
+  /*IN*/ ULONG  Index,
+  /*IN*/ KEY_INFORMATION_CLASS  KeyInformationClass,
+  /*OUT*/ PVOID  KeyInformation,
+  /*IN*/ ULONG  Length,
+  /*OUT*/ PULONG  ResultLength
+);
+
+NTOSAPI NTSTATUS DDKAPI
+NtEnumerateValueKey(
+  /*IN*/ HANDLE  KeyHandle,
+  /*IN*/ ULONG  Index,
+  /*IN*/ KEY_VALUE_INFORMATION_CLASS  KeyValueInformationClass,
+  /*OUT*/ PVOID  KeyValueInformation,
+  /*IN*/ ULONG  Length,
+  /*OUT*/ PULONG  ResultLength
+);
+
+NTOSAPI NTSTATUS DDKAPI
+ZwEnumerateValueKey(
+  /*IN*/ HANDLE  KeyHandle,
+  /*IN*/ ULONG  Index,
+  /*IN*/ KEY_VALUE_INFORMATION_CLASS  KeyValueInformationClass,
+  /*OUT*/ PVOID  KeyValueInformation,
+  /*IN*/ ULONG  Length,
+  /*OUT*/ PULONG  ResultLength
+);
+
+NTOSAPI NTSTATUS DDKAPI
+NtFlushKey( /*IN*/ HANDLE KeyHandle );
+
+NTOSAPI NTSTATUS DDKAPI
+ZwFlushKey( /*IN*/ HANDLE KeyHandle );
+
+NTOSAPI NTSTATUS DDKAPI
+NtMakeTemporaryObject( /*IN*/ HANDLE Handle );
+
+NTOSAPI NTSTATUS DDKAPI
+ZwMakeTemporaryObject( /*IN*/ HANDLE Handle );
+
+NTOSAPI NTSTATUS DDKAPI
+NtMapViewOfSection(
+  /*IN*/ HANDLE  SectionHandle,
+  /*IN*/ HANDLE  ProcessHandle,
+  /*IN OUT*/ PVOID  *BaseAddress,
+  /*IN*/ ULONG  ZeroBits,
+  /*IN*/ ULONG  CommitSize,
+  /*IN OUT*/ PLARGE_INTEGER  SectionOffset  /*OPTIONAL*/,
+  /*IN OUT*/ PSIZE_T  ViewSize,
+  /*IN*/ SECTION_INHERIT  InheritDisposition,
+  /*IN*/ ULONG  AllocationType,
+  /*IN*/ ULONG  Protect
+);
+
+NTOSAPI NTSTATUS DDKAPI
+ZwMapViewOfSection(
+  /*IN*/ HANDLE  SectionHandle,
+  /*IN*/ HANDLE  ProcessHandle,
+  /*IN OUT*/ PVOID  *BaseAddress,
+  /*IN*/ ULONG  ZeroBits,
+  /*IN*/ ULONG  CommitSize,
+  /*IN OUT*/ PLARGE_INTEGER  SectionOffset  /*OPTIONAL*/,
+  /*IN OUT*/ PSIZE_T  ViewSize,
+  /*IN*/ SECTION_INHERIT  InheritDisposition,
+  /*IN*/ ULONG  AllocationType,
+  /*IN*/ ULONG  Protect
+);
+
+NTOSAPI NTSTATUS DDKAPI
+NtOpenFile(
+  /*OUT*/ PHANDLE  FileHandle,
+  /*IN*/ ACCESS_MASK  DesiredAccess,
+  /*IN*/ POBJECT_ATTRIBUTES  ObjectAttributes,
+  /*OUT*/ PIO_STATUS_BLOCK  IoStatusBlock,
+  /*IN*/ ULONG  ShareAccess,
+  /*IN*/ ULONG  OpenOptions
+);
+
+NTOSAPI NTSTATUS DDKAPI
+ZwOpenFile(
+  /*OUT*/ PHANDLE  FileHandle,
+  /*IN*/ ACCESS_MASK  DesiredAccess,
+  /*IN*/ POBJECT_ATTRIBUTES  ObjectAttributes,
+  /*OUT*/ PIO_STATUS_BLOCK  IoStatusBlock,
+  /*IN*/ ULONG  ShareAccess,
+  /*IN*/ ULONG  OpenOptions
+);
+
+NTOSAPI NTSTATUS DDKAPI
+NtOpenKey(
+  /*OUT*/ PHANDLE  KeyHandle,
+  /*IN*/ ACCESS_MASK  DesiredAccess,
+  /*IN*/ POBJECT_ATTRIBUTES  ObjectAttributes
+);
+
+NTOSAPI NTSTATUS DDKAPI
+ZwOpenKey(
+  /*OUT*/ PHANDLE  KeyHandle,
+  /*IN*/ ACCESS_MASK  DesiredAccess,
+  /*IN*/ POBJECT_ATTRIBUTES  ObjectAttributes
+);
+
+NTOSAPI NTSTATUS DDKAPI
+NtOpenSection(
+  /*OUT*/ PHANDLE  SectionHandle,
+  /*IN*/ ACCESS_MASK  DesiredAccess,
+  /*IN*/ POBJECT_ATTRIBUTES  ObjectAttributes
+);
+
+NTOSAPI NTSTATUS DDKAPI
+ZwOpenSection(
+  /*OUT*/ PHANDLE  SectionHandle,
+  /*IN*/ ACCESS_MASK  DesiredAccess,
+  /*IN*/ POBJECT_ATTRIBUTES  ObjectAttributes
+);
+
+NTOSAPI NTSTATUS DDKAPI
+NtOpenSymbolicLinkObject(
+  /*OUT*/ PHANDLE  LinkHandle,
+  /*IN*/ ACCESS_MASK  DesiredAccess,
+  /*IN*/ POBJECT_ATTRIBUTES  ObjectAttributes
+);
+
+NTOSAPI NTSTATUS DDKAPI
+ZwOpenSymbolicLinkObject(
+  /*OUT*/ PHANDLE  LinkHandle,
+  /*IN*/ ACCESS_MASK  DesiredAccess,
+  /*IN*/ POBJECT_ATTRIBUTES  ObjectAttributes
+);
+
+NTOSAPI NTSTATUS DDKAPI
+NtOpenTimer(
+  /*OUT*/ PHANDLE  TimerHandle,
+  /*IN*/ ACCESS_MASK  DesiredAccess,
+  /*IN*/ POBJECT_ATTRIBUTES  ObjectAttributes
+);
+
+NTOSAPI NTSTATUS DDKAPI
+ZwOpenTimer(
+  /*OUT*/ PHANDLE  TimerHandle,
+  /*IN*/ ACCESS_MASK  DesiredAccess,
+  /*IN*/ POBJECT_ATTRIBUTES  ObjectAttributes
+);
+
+NTOSAPI NTSTATUS DDKAPI
+NtQueryInformationFile(
+  /*IN*/ HANDLE  FileHandle,
+  /*OUT*/ PIO_STATUS_BLOCK  IoStatusBlock,
+  /*OUT*/ PVOID  FileInformation,
+  /*IN*/ ULONG  Length,
+  /*IN*/ FILE_INFORMATION_CLASS  FileInformationClass
+);
+
+NTOSAPI NTSTATUS DDKAPI
+ZwQueryInformationFile(
+  /*IN*/ HANDLE  FileHandle,
+  /*OUT*/ PIO_STATUS_BLOCK  IoStatusBlock,
+  /*OUT*/ PVOID  FileInformation,
+  /*IN*/ ULONG  Length,
+  /*IN*/ FILE_INFORMATION_CLASS  FileInformationClass
+);
+
+NTOSAPI NTSTATUS DDKAPI
+NtQueryKey(
+  /*IN*/ HANDLE  KeyHandle,
+  /*IN*/ KEY_INFORMATION_CLASS  KeyInformationClass,
+  /*OUT*/ PVOID  KeyInformation,
+  /*IN*/ ULONG  Length,
+  /*OUT*/ PULONG  ResultLength
+);
+
+NTOSAPI NTSTATUS DDKAPI
+ZwQueryKey(
+  /*IN*/ HANDLE  KeyHandle,
+  /*IN*/ KEY_INFORMATION_CLASS  KeyInformationClass,
+  /*OUT*/ PVOID  KeyInformation,
+  /*IN*/ ULONG  Length,
+  /*OUT*/ PULONG  ResultLength
+);
+
+NTOSAPI NTSTATUS DDKAPI
+NtQuerySymbolicLinkObject(
+  /*IN*/ HANDLE  LinkHandle,
+  /*IN OUT*/ PUNICODE_STRING  LinkTarget,
+  /*OUT*/ PULONG  ReturnedLength  /*OPTIONAL*/
+);
+
+NTOSAPI NTSTATUS DDKAPI
+ZwQuerySymbolicLinkObject(
+  /*IN*/ HANDLE  LinkHandle,
+  /*IN OUT*/ PUNICODE_STRING  LinkTarget,
+  /*OUT*/ PULONG  ReturnedLength  /*OPTIONAL*/
+);
+
+NTOSAPI NTSTATUS DDKAPI
+NtQueryTimer(
+  /*IN*/ HANDLE  TimerHandle,
+  /*IN*/ TIMER_INFORMATION_CLASS TimerInformationClass,
+  /*OUT*/ PVOID TimerInformation,
+  /*IN*/ ULONG TimerInformationLength,
+  /*OUT*/ PULONG  ReturnedLength  /*OPTIONAL*/
+);
+
+NTOSAPI NTSTATUS DDKAPI
+ZwQueryTimer(
+  /*IN*/ HANDLE  TimerHandle,
+  /*IN*/ TIMER_INFORMATION_CLASS TimerInformationClass,
+  /*OUT*/ PVOID TimerInformation,
+  /*IN*/ ULONG TimerInformationLength,
+  /*OUT*/ PULONG  ReturnedLength  /*OPTIONAL*/
+);
+
+NTOSAPI NTSTATUS DDKAPI
+NtQueryValueKey(
+  /*IN*/ HANDLE  KeyHandle,
+  /*IN*/ PUNICODE_STRING  ValueName,
+  /*IN*/ KEY_VALUE_INFORMATION_CLASS  KeyValueInformationClass,
+  /*OUT*/ PVOID  KeyValueInformation,
+  /*IN*/ ULONG  Length,
+  /*OUT*/ PULONG  ResultLength
+);
+
+NTOSAPI NTSTATUS DDKAPI
+ZwQueryValueKey(
+  /*IN*/ HANDLE  KeyHandle,
+  /*IN*/ PUNICODE_STRING  ValueName,
+  /*IN*/ KEY_VALUE_INFORMATION_CLASS  KeyValueInformationClass,
+  /*OUT*/ PVOID  KeyValueInformation,
+  /*IN*/ ULONG  Length,
+  /*OUT*/ PULONG  ResultLength
+);
+
+NTOSAPI NTSTATUS DDKAPI
+NtReadFile(
+  /*IN*/ HANDLE  FileHandle,
+  /*IN*/ HANDLE  Event  /*OPTIONAL*/,
+  /*IN*/ PIO_APC_ROUTINE  ApcRoutine  /*OPTIONAL*/,
+  /*IN*/ PVOID  ApcContext  /*OPTIONAL*/,
+  /*OUT*/ PIO_STATUS_BLOCK  IoStatusBlock,
+  /*OUT*/ PVOID  Buffer,
+  /*IN*/ ULONG  Length,
+  /*IN*/ PLARGE_INTEGER  ByteOffset  /*OPTIONAL*/,
+  /*IN*/ PULONG  Key  /*OPTIONAL*/
+);
+
+NTOSAPI NTSTATUS DDKAPI
+ZwReadFile(
+  /*IN*/ HANDLE  FileHandle,
+  /*IN*/ HANDLE  Event  /*OPTIONAL*/,
+  /*IN*/ PIO_APC_ROUTINE  ApcRoutine  /*OPTIONAL*/,
+  /*IN*/ PVOID  ApcContext  /*OPTIONAL*/,
+  /*OUT*/ PIO_STATUS_BLOCK  IoStatusBlock,
+  /*OUT*/ PVOID  Buffer,
+  /*IN*/ ULONG  Length,
+  /*IN*/ PLARGE_INTEGER  ByteOffset  /*OPTIONAL*/,
+  /*IN*/ PULONG  Key  /*OPTIONAL*/
+);
+
+NTOSAPI NTSTATUS DDKAPI
+NtSetEvent( /*IN*/ HANDLE EventHandle, /*IN*/ PULONG NumberOfThreadsReleased );
+
+NTOSAPI NTSTATUS DDKAPI
+ZwSetEvent( /*IN*/ HANDLE EventHandle, /*IN*/ PULONG NumberOfThreadsReleased );
+
+NTOSAPI NTSTATUS DDKAPI
+NtSetInformationFile(
+  /*IN*/ HANDLE  FileHandle,
+  /*OUT*/ PIO_STATUS_BLOCK  IoStatusBlock,
+  /*IN*/ PVOID  FileInformation,
+  /*IN*/ ULONG  Length,
+  /*IN*/ FILE_INFORMATION_CLASS  FileInformationClass
+);
+
+NTOSAPI NTSTATUS DDKAPI
+ZwSetInformationFile(
+  /*IN*/ HANDLE  FileHandle,
+  /*OUT*/ PIO_STATUS_BLOCK  IoStatusBlock,
+  /*IN*/ PVOID  FileInformation,
+  /*IN*/ ULONG  Length,
+  /*IN*/ FILE_INFORMATION_CLASS  FileInformationClass
+);
+
+NTOSAPI NTSTATUS DDKAPI
+NtSetInformationThread(
+  /*IN*/ HANDLE  ThreadHandle,
+  /*IN*/ THREADINFOCLASS  ThreadInformationClass,
+  /*IN*/ PVOID  ThreadInformation,
+  /*IN*/ ULONG  ThreadInformationLength
+);
+
+NTOSAPI NTSTATUS DDKAPI
+ZwSetInformationThread(
+  /*IN*/ HANDLE  ThreadHandle,
+  /*IN*/ THREADINFOCLASS  ThreadInformationClass,
+  /*IN*/ PVOID  ThreadInformation,
+  /*IN*/ ULONG  ThreadInformationLength
+);
+
+NTOSAPI NTSTATUS DDKAPI
+NtSetTimer(
+  /*IN*/ HANDLE  TimerHandle,
+  /*IN*/ PLARGE_INTEGER  DueTime,
+  /*IN*/ PTIMER_APC_ROUTINE  TimerApcRoutine  /*OPTIONAL*/,
+  /*IN*/ PVOID  TimerContext  /*OPTIONAL*/,
+  /*IN*/ BOOLEAN  WakeTimer,
+  /*IN*/ LONG  Period  /*OPTIONAL*/,
+  /*OUT*/ PBOOLEAN  PreviousState  /*OPTIONAL*/
+);
+
+NTOSAPI NTSTATUS DDKAPI
+ZwSetTimer(
+  /*IN*/ HANDLE  TimerHandle,
+  /*IN*/ PLARGE_INTEGER  DueTime,
+  /*IN*/ PTIMER_APC_ROUTINE  TimerApcRoutine  /*OPTIONAL*/,
+  /*IN*/ PVOID  TimerContext  /*OPTIONAL*/,
+  /*IN*/ BOOLEAN  WakeTimer,
+  /*IN*/ LONG  Period  /*OPTIONAL*/,
+  /*OUT*/ PBOOLEAN  PreviousState  /*OPTIONAL*/
+);
+
+NTOSAPI NTSTATUS DDKAPI
+NtSetValueKey(
+  /*IN*/ HANDLE  KeyHandle,
+  /*IN*/ PUNICODE_STRING  ValueName,
+  /*IN*/ ULONG  TitleIndex  /*OPTIONAL*/,
+  /*IN*/ ULONG  Type,
+  /*IN*/ PVOID  Data,
+  /*IN*/ ULONG  DataSize
+);
+
+NTOSAPI NTSTATUS DDKAPI
+ZwSetValueKey(
+  /*IN*/ HANDLE  KeyHandle,
+  /*IN*/ PUNICODE_STRING  ValueName,
+  /*IN*/ ULONG  TitleIndex  /*OPTIONAL*/,
+  /*IN*/ ULONG  Type,
+  /*IN*/ PVOID  Data,
+  /*IN*/ ULONG  DataSize
+);
+
+/* [Nt|Zw]MapViewOfSection.InheritDisposition constants
+ */
+#define AT_EXTENDABLE_FILE                0x00002000
+#define SEC_NO_CHANGE                     0x00400000
+#define AT_RESERVED                       0x20000000
+#define AT_ROUND_TO_PAGE                  0x40000000
+
+NTOSAPI NTSTATUS DDKAPI
+NtUnmapViewOfSection( /*IN*/ HANDLE ProcessHandle, /*IN*/ PVOID BaseAddress );
+
+NTOSAPI NTSTATUS DDKAPI
+ZwUnmapViewOfSection( /*IN*/ HANDLE ProcessHandle, /*IN*/ PVOID BaseAddress );
+
+NTOSAPI NTSTATUS DDKAPI
+NtWaitForSingleObject(
+  /*IN*/ HANDLE  Object,
+  /*IN*/ BOOLEAN  Alertable,
+  /*IN*/ PLARGE_INTEGER  Time
+);
+
+NTOSAPI NTSTATUS DDKAPI
+ZwWaitForSingleObject(
+  /*IN*/ HANDLE  Object,
+  /*IN*/ BOOLEAN  Alertable,
+  /*IN*/ PLARGE_INTEGER  Time
+);
+
+NTOSAPI NTSTATUS DDKAPI
+NtWriteFile(
+  /*IN*/ HANDLE  FileHandle,
+  /*IN*/ HANDLE  Event  /*OPTIONAL*/,
+  /*IN*/ PIO_APC_ROUTINE  ApcRoutine  /*OPTIONAL*/,
+  /*IN*/ PVOID  ApcContext  /*OPTIONAL*/,
+  /*OUT*/ PIO_STATUS_BLOCK  IoStatusBlock,
+  /*IN*/ PVOID  Buffer,
+  /*IN*/ ULONG  Length,
+  /*IN*/ PLARGE_INTEGER  ByteOffset  /*OPTIONAL*/,
+  /*IN*/ PULONG  Key  /*OPTIONAL*/
+);
+
+NTOSAPI NTSTATUS DDKAPI
+ZwWriteFile(
+  /*IN*/ HANDLE  FileHandle,
+  /*IN*/ HANDLE  Event  /*OPTIONAL*/,
+  /*IN*/ PIO_APC_ROUTINE  ApcRoutine  /*OPTIONAL*/,
+  /*IN*/ PVOID  ApcContext  /*OPTIONAL*/,
+  /*OUT*/ PIO_STATUS_BLOCK  IoStatusBlock,
+  /*IN*/ PVOID  Buffer,
+  /*IN*/ ULONG  Length,
+  /*IN*/ PLARGE_INTEGER  ByteOffset  /*OPTIONAL*/,
+  /*IN*/ PULONG  Key  /*OPTIONAL*/
+);
+
+
+/** Power management support routines **/
+
+NTOSAPI NTSTATUS DDKAPI
+PoCallDriver( /*IN*/ PDEVICE_OBJECT DeviceObject, /*IN OUT*/ PIRP Irp );
+
+NTOSAPI PULONG DDKAPI
+PoRegisterDeviceForIdleDetection(
+  /*IN*/ PDEVICE_OBJECT  DeviceObject,
+  /*IN*/ ULONG  ConservationIdleTime,
+  /*IN*/ ULONG  PerformanceIdleTime,
+  /*IN*/ DEVICE_POWER_STATE  State
+);
+
+NTOSAPI PVOID DDKAPI
+PoRegisterSystemState( /*IN*/ PVOID StateHandle, /*IN*/ EXECUTION_STATE Flags );
+
+NTOSAPI NTSTATUS DDKAPI
+PoRequestPowerIrp(
+  /*IN*/ PDEVICE_OBJECT  DeviceObject,
+  /*IN*/ UCHAR  MinorFunction,
+  /*IN*/ POWER_STATE  PowerState,
+  /*IN*/ PREQUEST_POWER_COMPLETE  CompletionFunction,
+  /*IN*/ PVOID  Context,
+  /*OUT*/ PIRP  *Irp /*OPTIONAL*/
+);
+
+NTOSAPI NTSTATUS DDKAPI
+PoRequestShutdownEvent( /*OUT*/ PVOID *Event );
+
+NTOSAPI VOID DDKAPI
+PoSetDeviceBusy( PULONG IdlePointer );
+
+NTOSAPI POWER_STATE DDKAPI
+PoSetPowerState(
+  /*IN*/ PDEVICE_OBJECT  DeviceObject,
+  /*IN*/ POWER_STATE_TYPE  Type,
+  /*IN*/ POWER_STATE  State
+);
+
+NTOSAPI VOID DDKAPI
+PoSetSystemState( /*IN*/ EXECUTION_STATE Flags );
+
+NTOSAPI VOID DDKAPI
+PoStartNextPowerIrp( /*IN*/ PIRP Irp );
+
+NTOSAPI VOID DDKAPI
+PoUnregisterSystemState( /*IN*/ PVOID StateHandle );
+
+
+/** WMI library support routines **/
+
+NTOSAPI NTSTATUS DDKAPI
+WmiCompleteRequest(
+  /*IN*/ PDEVICE_OBJECT  DeviceObject,
+  /*IN*/ PIRP  Irp,
+  /*IN*/ NTSTATUS  Status,
+  /*IN*/ ULONG  BufferUsed,
+  /*IN*/ CCHAR  PriorityBoost
+);
+
+NTOSAPI NTSTATUS DDKAPI
+WmiFireEvent(
+  /*IN*/ PDEVICE_OBJECT  DeviceObject,
+  /*IN*/ LPGUID  Guid,
+  /*IN*/ ULONG  InstanceIndex,
+  /*IN*/ ULONG  EventDataSize,
+  /*IN*/ PVOID  EventData
+);
+
+NTOSAPI NTSTATUS DDKAPI
+WmiQueryTraceInformation(
+  /*IN*/ TRACE_INFORMATION_CLASS  TraceInformationClass,
+  /*OUT*/ PVOID  TraceInformation,
+  /*IN*/ ULONG  TraceInformationLength,
+  /*OUT*/ PULONG  RequiredLength /*OPTIONAL*/,
+  /*IN*/ PVOID  Buffer /*OPTIONAL*/
+);
+
+NTOSAPI NTSTATUS DDKAPI
+WmiSystemControl(
+  /*IN*/ PWMILIB_CONTEXT  WmiLibInfo,
+  /*IN*/ PDEVICE_OBJECT  DeviceObject,
+  /*IN*/ PIRP  Irp,
+  /*OUT*/ PSYSCTL_IRP_DISPOSITION  IrpDisposition
+);
+
+NTOSAPI NTSTATUS DDKCDECLAPI
+WmiTraceMessage(
+  /*IN*/ TRACEHANDLE  LoggerHandle,
+  /*IN*/ ULONG  MessageFlags,
+  /*IN*/ LPGUID  MessageGuid,
+  /*IN*/ USHORT  MessageNumber,
+  /*IN*/ ...
+);
+
+#if 0
+/* FIXME: Get va_list from where? */
+NTOSAPI NTSTATUS DDKCDECLAPI
+WmiTraceMessageVa(
+  /*IN*/ TRACEHANDLE  LoggerHandle,
+  /*IN*/ ULONG  MessageFlags,
+  /*IN*/ LPGUID  MessageGuid,
+  /*IN*/ USHORT  MessageNumber,
+  /*IN*/ va_list  MessageArgList
+);
+#endif
+
+
+/** Kernel debugger routines **/
+
+NTOSAPI VOID DDKAPI
+KdDisableDebugger( VOID );
+
+NTOSAPI VOID DDKAPI
+KdEnableDebugger( VOID );
+
+NTOSAPI VOID DDKAPI
+DbgBreakPoint( VOID );
+
+NTOSAPI VOID DDKAPI
+DbgBreakPointWithStatus( /*IN*/ ULONG Status );
+
+NTOSAPI ULONG DDKCDECLAPI
+DbgPrint( /*IN*/ PCH Format, /*IN*/ ... );
+
+NTOSAPI ULONG DDKCDECLAPI
+DbgPrintEx(
+  /*IN*/ ULONG  ComponentId,
+  /*IN*/ ULONG  Level,
+  /*IN*/ PCH  Format,
+  /*IN*/ ...
+);
+
+NTOSAPI ULONG DDKCDECLAPI
+DbgPrintReturnControlC( /*IN*/ PCH Format, /*IN*/ ... );
+
+NTOSAPI NTSTATUS DDKAPI
+DbgQueryDebugFilterState( /*IN*/ ULONG ComponentId, /*IN*/ ULONG Level );
+
+NTOSAPI NTSTATUS DDKAPI
+DbgSetDebugFilterState(
+  /*IN*/ ULONG  ComponentId,
+  /*IN*/ ULONG  Level,
+  /*IN*/ BOOLEAN  State
+);
+
+#ifdef DBG
+
+#define KdPrint(_x_) DbgPrint _x_
+#define KdPrintEx(_x_) DbgPrintEx _x_
+#define KdBreakPoint() DbgBreakPoint()
+#define KdBreakPointWithStatus(s) DbgBreakPointWithStatus(s)
+
+#else /* !DBG */
+
+#define KdPrint(_x_)
+#define KdPrintEx(_x_)
+#define KdBreakPoint()
+#define KdBreakPointWithStatus(s)
+
+#endif /* !DBG */
+
+extern NTOSAPI PBOOLEAN KdDebuggerNotPresent;
+extern NTOSAPI PBOOLEAN KdDebuggerEnabled;
+#define KD_DEBUGGER_ENABLED     *KdDebuggerEnabled
+#define KD_DEBUGGER_NOT_PRESENT *KdDebuggerNotPresent
+
+_END_C_DECLS
+
+#endif  /* _DDK_WINDDK_H */
+#endif  /* _DDK_NTDDK_H || __WINIOCTL_H_SOURCED__ */
+#endif  /* !_DDK_WINDDK_H: $RCSfile: winddk.h,v $: end of file */
Index: Daodan/MinGW/include/ddk/winnt4.h
===================================================================
--- Daodan/MinGW/include/ddk/winnt4.h	(revision 1046)
+++ Daodan/MinGW/include/ddk/winnt4.h	(revision 1046)
@@ -0,0 +1,623 @@
+/*
+ * winnt4.h
+ *
+ * Definitions only used in Windows NT 4.0 and earlier versions
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __WINNT4_H
+#define __WINNT4_H
+
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct _ZONE_SEGMENT_HEADER {
+  SINGLE_LIST_ENTRY  SegmentList;
+  PVOID  Reserved;
+} ZONE_SEGMENT_HEADER, *PZONE_SEGMENT_HEADER;
+
+typedef struct _ZONE_HEADER {
+  SINGLE_LIST_ENTRY  FreeList;
+  SINGLE_LIST_ENTRY  SegmentList;
+  ULONG  BlockSize;
+  ULONG  TotalSegmentSize;
+} ZONE_HEADER, *PZONE_HEADER;
+
+static __inline PVOID
+ExAllocateFromZone(
+  /*IN*/ PZONE_HEADER  Zone)
+{
+  if (Zone->FreeList.Next)
+    Zone->FreeList.Next = Zone->FreeList.Next->Next;
+  return (PVOID) Zone->FreeList.Next;
+}
+
+NTOSAPI
+NTSTATUS
+DDKAPI
+ExExtendZone(
+  /*IN*/ PZONE_HEADER  Zone,
+  /*IN*/ PVOID  Segment,
+  /*IN*/ ULONG  SegmentSize);
+
+static __inline PVOID
+ExFreeToZone(
+  /*IN*/ PZONE_HEADER  Zone,
+  /*IN*/ PVOID  Block)
+{
+  ((PSINGLE_LIST_ENTRY) Block)->Next = Zone->FreeList.Next;
+  Zone->FreeList.Next = ((PSINGLE_LIST_ENTRY) Block);
+  return ((PSINGLE_LIST_ENTRY) Block)->Next;
+}
+
+NTOSAPI
+NTSTATUS
+DDKAPI
+ExInitializeZone(
+  /*IN*/ PZONE_HEADER  Zone,
+  /*IN*/ ULONG  BlockSize,
+  /*IN*/ PVOID  InitialSegment,
+  /*IN*/ ULONG  InitialSegmentSize);
+
+/*
+ * PVOID
+ * ExInterlockedAllocateFromZone(
+ * IN PZONE_HEADER  Zone,
+ * IN PKSPIN_LOCK  Lock)
+ */
+#define ExInterlockedAllocateFromZone(Zone, \
+                              Lock) \
+  ((PVOID) ExInterlockedPopEntryList(&Zone->FreeList, Lock))
+
+NTOSAPI
+NTSTATUS
+DDKAPI
+ExInterlockedExtendZone(
+  /*IN*/ PZONE_HEADER  Zone,
+  /*IN*/ PVOID  Segment,
+  /*IN*/ ULONG  SegmentSize,
+  /*IN*/ PKSPIN_LOCK  Lock);
+
+NTOSAPI
+PVOID
+DDKAPI
+ExInterlockedFreeToZone(
+  /*IN*/ PZONE_HEADER  Zone,
+  /*IN*/ PVOID  Block,
+  /*IN*/ PKSPIN_LOCK  Lock);
+
+/*
+ * VOID
+ * ExInitializeWorkItem(
+ * IN PWORK_QUEUE_ITEM  Item,
+ * IN PWORKER_THREAD_ROUTINE  Routine,
+ * IN PVOID  Context)
+ */
+#define ExInitializeWorkItem(Item, \
+                             Routine, \
+                             Context) \
+{ \
+  (Item)->WorkerRoutine = Routine; \
+  (Item)->Parameter = Context; \
+  (Item)->List.Flink = NULL; \
+}
+
+/*
+ * BOOLEAN
+ * ExIsFullZone(
+ * IN PZONE_HEADER  Zone)
+ */
+#define ExIsFullZone(Zone) \
+  ((Zone)->FreeList.Next == (PSINGLE_LIST_ENTRY) NULL)
+
+NTOSAPI
+VOID
+DDKAPI
+ExQueueWorkItem(
+  /*IN*/ PWORK_QUEUE_ITEM  WorkItem,
+  /*IN*/ WORK_QUEUE_TYPE  QueueType);
+
+NTOSAPI
+BOOLEAN
+DDKAPI
+ExIsObjectInFirstZoneSegment(
+  /*IN*/ PZONE_HEADER  Zone,
+  /*IN*/ PVOID  Object);
+
+NTOSAPI
+VOID
+DDKAPI
+ExReleaseResource(
+  /*IN*/ PERESOURCE  Resource);
+
+#define ExAcquireResourceExclusive ExAcquireResourceExclusiveLite
+#define ExAcquireResourceShared ExAcquireResourceSharedLite
+#define ExConvertExclusiveToShared ExConvertExclusiveToSharedLite
+#define ExDeleteResource ExDeleteResourceLite
+#define ExInitializeResource ExInitializeResourceLite
+#define ExIsResourceAcquiredExclusive ExIsResourceAcquiredExclusiveLite
+#define ExIsResourceAcquiredShared ExIsResourceAcquiredSharedLite
+#define ExIsResourceAcquired ExIsResourceAcquiredSharedLite
+#define ExReleaseResourceForThread ExReleaseResourceForThreadLite
+
+NTOSAPI
+INTERLOCKED_RESULT
+DDKAPI
+ExInterlockedDecrementLong(
+  /*IN*/ PLONG  Addend,
+  /*IN*/ PKSPIN_LOCK  Lock);
+
+NTOSAPI
+ULONG
+DDKAPI
+ExInterlockedExchangeUlong(
+  /*IN*/ PULONG  Target,
+  /*IN*/ ULONG  Value,
+  /*IN*/ PKSPIN_LOCK  Lock);
+
+NTOSAPI
+INTERLOCKED_RESULT
+DDKAPI
+ExInterlockedIncrementLong(
+  /*IN*/ PLONG  Addend,
+  /*IN*/ PKSPIN_LOCK  Lock);
+
+NTOSAPI
+PVOID
+DDKAPI
+HalAllocateCommonBuffer(
+  /*IN*/ PADAPTER_OBJECT  AdapterObject,
+  /*IN*/ ULONG  Length,
+  /*OUT*/ PPHYSICAL_ADDRESS  LogicalAddress,
+  /*IN*/ BOOLEAN  CacheEnabled);
+
+NTOSAPI
+NTSTATUS
+DDKAPI
+HalAssignSlotResources(
+  /*IN*/ PUNICODE_STRING  RegistryPath,
+  /*IN*/ PUNICODE_STRING  DriverClassName,
+  /*IN*/ PDRIVER_OBJECT  DriverObject,
+  /*IN*/ PDEVICE_OBJECT  DeviceObject,
+  /*IN*/ INTERFACE_TYPE  BusType,
+  /*IN*/ ULONG  BusNumber,
+  /*IN*/ ULONG  SlotNumber,
+  /*IN OUT*/ PCM_RESOURCE_LIST  *AllocatedResources);
+
+NTOSAPI
+VOID
+DDKAPI
+HalFreeCommonBuffer(
+  /*IN*/ PADAPTER_OBJECT  AdapterObject,
+  /*IN*/ ULONG  Length,
+  /*IN*/ PHYSICAL_ADDRESS  LogicalAddress,
+  /*IN*/ PVOID  VirtualAddress,
+  /*IN*/ BOOLEAN  CacheEnabled);
+
+NTOSAPI
+PADAPTER_OBJECT
+DDKAPI
+HalGetAdapter(
+  /*IN*/ PDEVICE_DESCRIPTION  DeviceDescription,
+  /*IN OUT*/ PULONG  NumberOfMapRegisters);
+
+NTOSAPI
+ULONG
+DDKAPI
+HalGetBusData(
+  /*IN*/ BUS_DATA_TYPE  BusDataType,
+  /*IN*/ ULONG  BusNumber,
+  /*IN*/ ULONG  SlotNumber,
+  /*IN*/ PVOID  Buffer,
+  /*IN*/ ULONG  Length);
+
+NTOSAPI
+ULONG
+DDKAPI
+HalGetBusDataByOffset(
+  /*IN*/ BUS_DATA_TYPE  BusDataType,
+  /*IN*/ ULONG  BusNumber,
+  /*IN*/ ULONG  SlotNumber,
+  /*IN*/ PVOID  Buffer,
+  /*IN*/ ULONG  Offset,
+  /*IN*/ ULONG  Length);
+
+NTOSAPI
+ULONG
+DDKAPI
+HalGetDmaAlignmentRequirement(
+  VOID);
+
+NTOSAPI
+ULONG
+DDKAPI
+HalGetInterruptVector(
+  /*IN*/ INTERFACE_TYPE  InterfaceType,
+  /*IN*/ ULONG  BusNumber,
+  /*IN*/ ULONG  BusInterruptLevel,
+  /*IN*/ ULONG  BusInterruptVector,
+  /*OUT*/ PKIRQL  Irql,
+  /*OUT*/ PKAFFINITY  Affinity);
+
+NTOSAPI
+ULONG
+DDKAPI
+HalReadDmaCounter(
+  /*IN*/ PADAPTER_OBJECT  AdapterObject);
+
+NTOSAPI
+ULONG
+DDKAPI
+HalSetBusData(
+  /*IN*/ BUS_DATA_TYPE  BusDataType,
+  /*IN*/ ULONG  BusNumber,
+  /*IN*/ ULONG  SlotNumber,
+  /*IN*/ PVOID  Buffer,
+  /*IN*/ ULONG  Length);
+
+NTOSAPI
+ULONG
+DDKAPI
+HalSetBusDataByOffset(
+  /*IN*/ BUS_DATA_TYPE  BusDataType,
+  /*IN*/ ULONG  BusNumber,
+  /*IN*/ ULONG  SlotNumber,
+  /*IN*/ PVOID  Buffer,
+  /*IN*/ ULONG  Offset,
+  /*IN*/ ULONG  Length);
+
+NTOSAPI
+BOOLEAN
+DDKAPI
+HalTranslateBusAddress(
+  /*IN*/ INTERFACE_TYPE  InterfaceType,
+  /*IN*/ ULONG  BusNumber,
+  /*IN*/ PHYSICAL_ADDRESS  BusAddress,
+  /*IN OUT*/ PULONG  AddressSpace,
+  /*OUT*/ PPHYSICAL_ADDRESS  TranslatedAddress);
+
+NTOSAPI
+NTSTATUS
+DDKAPI
+IoAllocateAdapterChannel(
+  /*IN*/ PADAPTER_OBJECT  AdapterObject,
+  /*IN*/ PDEVICE_OBJECT  DeviceObject,
+  /*IN*/ ULONG  NumberOfMapRegisters,
+  /*IN*/ PDRIVER_CONTROL  ExecutionRoutine,
+  /*IN*/ PVOID  Context);
+
+NTOSAPI
+NTSTATUS
+DDKAPI
+IoAssignResources(
+  /*IN*/ PUNICODE_STRING  RegistryPath,
+  /*IN*/ PUNICODE_STRING  DriverClassName  /*OPTIONAL*/,
+  /*IN*/ PDRIVER_OBJECT  DriverObject,
+  /*IN*/ PDEVICE_OBJECT  DeviceObject  /*OPTIONAL*/,
+  /*IN*/ PIO_RESOURCE_REQUIREMENTS_LIST  RequestedResources,
+  /*IN OUT*/ PCM_RESOURCE_LIST  *AllocatedResources);
+
+NTOSAPI
+NTSTATUS
+DDKAPI
+IoAttachDeviceByPointer(
+  /*IN*/ PDEVICE_OBJECT  SourceDevice,
+  /*IN*/ PDEVICE_OBJECT  TargetDevice);
+
+NTOSAPI
+BOOLEAN
+DDKAPI
+IoFlushAdapterBuffers(
+  /*IN*/ PADAPTER_OBJECT  AdapterObject,
+  /*IN*/ PMDL  Mdl,
+  /*IN*/ PVOID  MapRegisterBase,
+  /*IN*/ PVOID  CurrentVa,
+  /*IN*/ ULONG  Length,
+  /*IN*/ BOOLEAN  WriteToDevice);
+
+NTOSAPI
+VOID
+DDKAPI
+IoFreeAdapterChannel(
+  /*IN*/ PADAPTER_OBJECT  AdapterObject);
+
+NTOSAPI
+VOID
+DDKAPI
+IoFreeMapRegisters(
+  /*IN*/ PADAPTER_OBJECT  AdapterObject,
+  /*IN*/ PVOID  MapRegisterBase,
+  /*IN*/ ULONG  NumberOfMapRegisters);
+
+NTOSAPI
+PHYSICAL_ADDRESS
+DDKAPI
+IoMapTransfer(
+  /*IN*/ PADAPTER_OBJECT  AdapterObject,
+  /*IN*/ PMDL  Mdl,
+  /*IN*/ PVOID  MapRegisterBase,
+  /*IN*/ PVOID  CurrentVa,
+  /*IN OUT*/ PULONG  Length,
+  /*IN*/ BOOLEAN  WriteToDevice);
+
+NTOSAPI
+PMDL
+DDKAPI
+MmCreateMdl(
+  /*IN*/ PMDL  MemoryDescriptorList  /*OPTIONAL*/,
+  /*IN*/ PVOID  Base,
+  /*IN*/ SIZE_T  Length);
+
+NTOSAPI
+BOOLEAN
+DDKAPI
+MmIsNonPagedSystemAddressValid(
+  /*IN*/ PVOID  VirtualAddress);
+
+NTOSAPI
+LARGE_INTEGER
+DDKAPI
+RtlEnlargedIntegerMultiply(
+  /*IN*/ LONG  Multiplicand,
+  /*IN*/ LONG  Multiplier);
+
+NTOSAPI
+ULONG
+DDKAPI
+RtlEnlargedUnsignedDivide(
+  /*IN*/ ULARGE_INTEGER  Dividend,
+  /*IN*/ ULONG  Divisor,
+  /*IN OUT*/ PULONG  Remainder);
+
+NTOSAPI
+LARGE_INTEGER
+DDKAPI
+RtlEnlargedUnsignedMultiply(
+  /*IN*/ ULONG  Multiplicand,
+  /*IN*/ ULONG  Multiplier);
+
+NTOSAPI
+LARGE_INTEGER
+DDKAPI
+RtlExtendedIntegerMultiply(
+  /*IN*/ LARGE_INTEGER  Multiplicand,
+  /*IN*/ LONG  Multiplier);
+
+NTOSAPI
+LARGE_INTEGER
+DDKAPI
+RtlExtendedLargeIntegerDivide(
+  /*IN*/ LARGE_INTEGER  Dividend,
+  /*IN*/ ULONG  Divisor,
+  /*IN OUT*/ PULONG  Remainder);
+
+NTOSAPI
+LARGE_INTEGER
+DDKAPI
+RtlExtendedMagicDivide(
+  /*IN*/ LARGE_INTEGER  Dividend,
+  /*IN*/ LARGE_INTEGER  MagicDivisor,
+  /*IN*/ CCHAR  ShiftCount);
+
+NTOSAPI
+LARGE_INTEGER
+DDKAPI
+RtlLargeIntegerAdd(
+  /*IN*/ LARGE_INTEGER  Addend1,
+  /*IN*/ LARGE_INTEGER  Addend2);
+
+NTOSAPI
+VOID
+DDKAPI
+RtlLargeIntegerAnd(
+  /*IN OUT*/ LARGE_INTEGER  Result,
+  /*IN*/ LARGE_INTEGER  Source,
+  /*IN*/ LARGE_INTEGER  Mask);
+
+NTOSAPI
+LARGE_INTEGER
+DDKAPI
+RtlLargeIntegerArithmeticShift(
+  /*IN*/ LARGE_INTEGER  LargeInteger,
+  /*IN*/ CCHAR  ShiftCount);
+
+NTOSAPI
+LARGE_INTEGER
+DDKAPI
+RtlLargeIntegerDivide(
+  /*IN*/ LARGE_INTEGER  Dividend,
+  /*IN*/ LARGE_INTEGER  Divisor,
+  /*IN OUT*/ PLARGE_INTEGER  Remainder);
+
+NTOSAPI
+BOOLEAN
+DDKAPI
+RtlLargeIntegerEqualTo(
+  /*IN*/ LARGE_INTEGER  Operand1,
+  /*IN*/ LARGE_INTEGER  Operand2);
+
+NTOSAPI
+BOOLEAN
+DDKAPI
+RtlLargeIntegerEqualToZero(
+  /*IN*/ LARGE_INTEGER  Operand);
+
+NTOSAPI
+BOOLEAN
+DDKAPI
+RtlLargeIntegerGreaterOrEqualToZero(
+  /*IN*/ LARGE_INTEGER  Operand);
+
+NTOSAPI
+BOOLEAN
+DDKAPI
+RtlLargeIntegerGreaterThan(
+  /*IN*/ LARGE_INTEGER  Operand1,
+  /*IN*/ LARGE_INTEGER  Operand2);
+
+NTOSAPI
+BOOLEAN
+DDKAPI
+RtlLargeIntegerGreaterThanOrEqualTo(
+  /*IN*/ LARGE_INTEGER  Operand1,
+  /*IN*/ LARGE_INTEGER  Operand2);
+
+NTOSAPI
+BOOLEAN
+DDKAPI
+RtlLargeIntegerGreaterThanZero(
+  /*IN*/ LARGE_INTEGER  Operand);
+
+NTOSAPI
+BOOLEAN
+DDKAPI
+RtlLargeIntegerLessOrEqualToZero(
+  /*IN*/ LARGE_INTEGER  Operand);
+
+NTOSAPI
+BOOLEAN
+DDKAPI
+RtlLargeIntegerLessThan(
+  /*IN*/ LARGE_INTEGER  Operand1,
+  /*IN*/ LARGE_INTEGER  Operand2);
+
+NTOSAPI
+BOOLEAN
+DDKAPI
+RtlLargeIntegerLessThanOrEqualTo(
+  /*IN*/ LARGE_INTEGER  Operand1,
+  /*IN*/ LARGE_INTEGER  Operand2);
+
+NTOSAPI
+BOOLEAN
+DDKAPI
+RtlLargeIntegerLessThanZero(
+  /*IN*/ LARGE_INTEGER  Operand);
+
+NTOSAPI
+LARGE_INTEGER
+DDKAPI
+RtlLargeIntegerNegate(
+  /*IN*/ LARGE_INTEGER  Subtrahend);
+
+NTOSAPI
+BOOLEAN
+DDKAPI
+RtlLargeIntegerNotEqualTo(
+  /*IN*/ LARGE_INTEGER  Operand1,
+  /*IN*/ LARGE_INTEGER  Operand2);
+
+NTOSAPI
+BOOLEAN
+DDKAPI
+RtlLargeIntegerNotEqualToZero(
+  /*IN*/ LARGE_INTEGER  Operand);
+
+NTOSAPI
+LARGE_INTEGER
+DDKAPI
+RtlLargeIntegerShiftLeft(
+  /*IN*/ LARGE_INTEGER  LargeInteger,
+  /*IN*/ CCHAR  ShiftCount);
+
+NTOSAPI
+LARGE_INTEGER
+DDKAPI
+RtlLargeIntegerShiftRight(
+  /*IN*/ LARGE_INTEGER  LargeInteger,
+  /*IN*/ CCHAR  ShiftCount);
+
+NTOSAPI
+LARGE_INTEGER
+DDKAPI
+RtlLargeIntegerSubtract(
+  /*IN*/ LARGE_INTEGER  Minuend,
+  /*IN*/ LARGE_INTEGER  Subtrahend);
+
+
+/*
+ * ULONG
+ * COMPUTE_PAGES_SPANNED(
+ * IN PVOID  Va,
+ * IN ULONG  Size)
+ */
+#define COMPUTE_PAGES_SPANNED(Va, \
+                              Size) \
+  (ADDRESS_AND_SIZE_TO_SPAN_PAGES(Va, Size))
+
+
+/*
+** Architecture specific functions
+*/
+
+#ifdef _X86_
+
+NTOSAPI
+INTERLOCKED_RESULT
+DDKAPI
+Exi386InterlockedIncrementLong(
+  /*IN*/ PLONG  Addend);
+
+NTOSAPI
+INTERLOCKED_RESULT
+DDKFASTAPI
+Exfi386InterlockedIncrementLong(
+  /*IN*/ PLONG  Addend);
+
+NTOSAPI
+INTERLOCKED_RESULT
+DDKAPI
+Exi386InterlockedDecrementLong(
+  /*IN*/ PLONG  Addend);
+
+NTOSAPI
+INTERLOCKED_RESULT
+DDKFASTAPI
+Exfi386InterlockedDecrementLong(
+  /*IN*/ PLONG  Addend);
+
+NTOSAPI
+ULONG
+DDKAPI
+Exi386InterlockedExchangeUlong(
+  /*IN*/ PULONG  Target,
+  /*IN*/ ULONG  Value);
+
+NTOSAPI
+ULONG
+DDKFASTAPI
+Exfi386InterlockedExchangeUlong(
+  /*IN*/ PULONG  Target,
+  /*IN*/ ULONG  Value);
+
+#define ExInterlockedIncrementLong(Addend,Lock) Exfi386InterlockedIncrementLong(Addend)
+#define ExInterlockedDecrementLong(Addend,Lock) Exfi386InterlockedDecrementLong(Addend)
+#define ExInterlockedExchangeUlong(Target, Value, Lock) Exfi386InterlockedExchangeUlong(Target, Value)
+
+#endif /* _X86_ */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __WINNT4_H */
Index: Daodan/MinGW/include/ddk/winxp.h
===================================================================
--- Daodan/MinGW/include/ddk/winxp.h	(revision 1046)
+++ Daodan/MinGW/include/ddk/winxp.h	(revision 1046)
@@ -0,0 +1,38 @@
+/*
+ * winxp.h
+ *
+ * Definitions only used in Windows XP and earlier versions
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __WINXP_H
+#define __WINXP_H
+
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __WINXP_H */
Index: Daodan/MinGW/include/ddk/ws2san.h
===================================================================
--- Daodan/MinGW/include/ddk/ws2san.h	(revision 1046)
+++ Daodan/MinGW/include/ddk/ws2san.h	(revision 1046)
@@ -0,0 +1,248 @@
+/*
+ * ws2san.h
+ *
+ * WinSock Direct (SAN) support
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __WS2SAN_H
+#define __WS2SAN_H
+
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <winsock2.h>
+#include "ntddk.h"
+
+
+#define WSPAPI STDCALL
+
+/* FIXME: Unknown definitions */
+typedef PVOID LPWSPDATA;
+typedef PDWORD LPWSATHREADID;
+typedef PVOID LPWSPPROC_TABLE;
+typedef struct _WSPUPCALLTABLEEX WSPUPCALLTABLEEX;
+typedef WSPUPCALLTABLEEX *LPWSPUPCALLTABLEEX;
+
+#define SO_MAX_RDMA_SIZE                  0x700D
+#define SO_RDMA_THRESHOLD_SIZE            0x700E
+
+#define WSAID_REGISTERMEMORY \
+  {0xC0B422F5, 0xF58C, 0x11d1, {0xAD, 0x6C, 0x00, 0xC0, 0x4F, 0xA3, 0x4A, 0x2D}}
+
+#define WSAID_DEREGISTERMEMORY \
+  {0xC0B422F6, 0xF58C, 0x11d1, {0xAD, 0x6C, 0x00, 0xC0, 0x4F, 0xA3, 0x4A, 0x2D}}
+
+#define WSAID_REGISTERRDMAMEMORY \
+  {0xC0B422F7, 0xF58C, 0x11d1, {0xAD, 0x6C, 0x00, 0xC0, 0x4F, 0xA3, 0x4A, 0x2D}}
+
+#define WSAID_DEREGISTERRDMAMEMORY \
+  {0xC0B422F8, 0xF58C, 0x11d1, {0xAD, 0x6C, 0x00, 0xC0, 0x4F, 0xA3, 0x4A, 0x2D}}
+
+#define WSAID_RDMAWRITE \
+  {0xC0B422F9, 0xF58C, 0x11d1, {0xAD, 0x6C, 0x00, 0xC0, 0x4F, 0xA3, 0x4A, 0x2D}}
+
+#define WSAID_RDMAREAD \
+  {0xC0B422FA, 0xF58C, 0x11d1, {0xAD, 0x6C, 0x00, 0xC0, 0x4F, 0xA3, 0x4A, 0x2D}}
+
+#define WSAID_MEMORYREGISTRATIONCACHECALLBACK \
+  {0xE5DA4AF8, 0xD824, 0x48CD, {0xA7, 0x99, 0x63, 0x37, 0xA9, 0x8E, 0xD2, 0xAF}}
+
+typedef struct _WSABUFEX {
+  u_long  len;
+  char FAR  *buf;
+  HANDLE  handle;
+} WSABUFEX, FAR * LPWSABUFEX;
+
+#if 0
+typedef struct _WSPUPCALLTABLEEX {
+  LPWPUCLOSEEVENT  lpWPUCloseEvent;
+  LPWPUCLOSESOCKETHANDLE  lpWPUCloseSocketHandle;
+  LPWPUCREATEEVENT  lpWPUCreateEvent;
+  LPWPUCREATESOCKETHANDLE  lpWPUCreateSocketHandle;
+  LPWPUFDISSET  lpWPUFDIsSet;
+  LPWPUGETPROVIDERPATH  lpWPUGetProviderPath;
+  LPWPUMODIFYIFSHANDLE  lpWPUModifyIFSHandle;
+  LPWPUPOSTMESSAGE  lpWPUPostMessage;
+  LPWPUQUERYBLOCKINGCALLBACK  lpWPUQueryBlockingCallback;
+  LPWPUQUERYSOCKETHANDLECONTEXT  lpWPUQuerySocketHandleContext;
+  LPWPUQUEUEAPC  lpWPUQueueApc;
+  LPWPURESETEVENT  lpWPUResetEvent;
+  LPWPUSETEVENT  lpWPUSetEvent;
+  LPWPUOPENCURRENTTHREAD  lpWPUOpenCurrentThread;
+  LPWPUCLOSETHREAD  lpWPUCloseThread;
+  LPWPUCOMPLETEOVERLAPPEDREQUEST lpWPUCompleteOverlappedRequest;
+} WSPUPCALLTABLEEX, FAR * LPWSPUPCALLTABLEEX;
+#endif
+
+int WSPAPI
+WSPStartupEx(
+  /*IN*/ WORD  wVersionRequested,
+  /*OUT*/ LPWSPDATA  lpWSPData,
+  /*IN*/ LPWSAPROTOCOL_INFOW  lpProtocolInfo,
+  /*IN*/ LPWSPUPCALLTABLEEX  lpUpcallTable,
+  /*OUT*/ LPWSPPROC_TABLE  lpProcTable);
+
+typedef int WSPAPI
+(*LPWSPSTARTUPEX)(
+  /*IN*/ WORD  wVersionRequested,
+  /*OUT*/ LPWSPDATA  lpWSPData,
+  /*IN*/ LPWSAPROTOCOL_INFOW  lpProtocolInfo,
+  /*IN*/ LPWSPUPCALLTABLEEX  lpUpcallTable,
+  /*OUT*/ LPWSPPROC_TABLE  lpProcTable);
+
+#define MEM_READ                          1
+#define MEM_WRITE                         2
+#define MEM_READWRITE                     3
+
+int WSPAPI
+WSPDeregisterMemory(
+  /*IN*/ SOCKET  s,
+  /*IN*/ HANDLE  Handle,
+  /*OUT*/ LPINT  lpErrno);
+
+typedef int WSPAPI
+(*LPFN_WSPDEREGISTERMEMORY)(
+  /*IN*/ SOCKET  s,
+  /*IN*/ HANDLE  Handle,
+  /*OUT*/ LPINT  lpErrno);
+
+int WSPAPI
+WSPDeregisterRdmaMemory(
+  /*IN*/ SOCKET  s,
+  /*IN*/ LPVOID  lpRdmaBufferDescriptor,
+  /*IN*/ DWORD  dwDescriptorLength,
+  /*OUT*/ LPINT  lpErrno);
+
+typedef int WSPAPI
+(*LPFN_WSPDEREGISTERRDMAMEMORY)(
+  /*IN*/ SOCKET  s,
+  /*IN*/ LPVOID  lpRdmaBufferDescriptor,
+  /*IN*/ DWORD  dwDescriptorLength,
+  /*OUT*/ LPINT  lpErrno);
+
+int WSPAPI
+WSPMemoryRegistrationCacheCallback(
+  /*IN*/ PVOID  lpvAddress,
+  /*IN*/ SIZE_T  Size,
+  /*OUT*/ LPINT  lpErrno);
+
+typedef int WSPAPI
+(*LPFN_WSPMEMORYREGISTRATIONCACHECALLBACK)(
+  /*IN*/ PVOID  lpvAddress,
+  /*IN*/ SIZE_T  Size,
+  /*OUT*/ LPINT  lpErrno);
+
+int WSPAPI
+WSPRdmaRead(
+  /*IN*/ SOCKET  s,
+  /*IN*/ LPWSABUFEX  lpBuffers,
+  /*IN*/ DWORD  dwBufferCount,
+  /*IN*/ LPVOID  lpTargetBufferDescriptor,
+  /*IN*/ DWORD  dwTargetDescriptorLength,
+  /*IN*/ DWORD  dwTargetBufferOffset,
+  /*OUT*/ LPDWORD  lpdwNumberOfBytesRead,
+  /*IN*/ DWORD  dwFlags,
+  /*IN*/ LPWSAOVERLAPPED  lpOverlapped,
+  /*IN*/ LPWSAOVERLAPPED_COMPLETION_ROUTINE  lpCompletionRoutine,
+  /*IN*/ LPWSATHREADID  lpThreadId,
+  /*OUT*/ LPINT  lpErrno);
+
+typedef int WSPAPI
+(*LPFN_WSPRDMAREAD)(
+  /*IN*/ SOCKET  s,
+  /*IN*/ LPWSABUFEX  lpBuffers,
+  /*IN*/ DWORD  dwBufferCount,
+  /*IN*/ LPVOID  lpTargetBufferDescriptor,
+  /*IN*/ DWORD  dwTargetDescriptorLength,
+  /*IN*/ DWORD  dwTargetBufferOffset,
+  /*OUT*/ LPDWORD  lpdwNumberOfBytesRead,
+  /*IN*/ DWORD  dwFlags,
+  /*IN*/ LPWSAOVERLAPPED  lpOverlapped,
+  /*IN*/ LPWSAOVERLAPPED_COMPLETION_ROUTINE  lpCompletionRoutine,
+  /*IN*/ LPWSATHREADID  lpThreadId,
+  /*OUT*/ LPINT  lpErrno);
+
+int WSPAPI
+WSPRdmaWrite(
+  /*IN*/ SOCKET  s,
+  /*IN*/ LPWSABUFEX  lpBuffers,
+  /*IN*/ DWORD  dwBufferCount,
+  /*IN*/ LPVOID  lpTargetBufferDescriptor,
+  /*IN*/ DWORD  dwTargetDescriptorLength,
+  /*IN*/ DWORD  dwTargetBufferOffset,
+  /*OUT*/ LPDWORD  lpdwNumberOfBytesWritten,
+  /*IN*/ DWORD  dwFlags,
+  /*IN*/ LPWSAOVERLAPPED  lpOverlapped,
+  /*IN*/ LPWSAOVERLAPPED_COMPLETION_ROUTINE  lpCompletionRoutine,
+  /*IN*/ LPWSATHREADID  lpThreadId,
+  /*OUT*/ LPINT  lpErrno);
+
+typedef int WSPAPI
+(*LPFN_WSPRDMAWRITE)(
+  /*IN*/ SOCKET  s,
+  /*IN*/ LPWSABUFEX  lpBuffers,
+  /*IN*/ DWORD  dwBufferCount,
+  /*IN*/ LPVOID  lpTargetBufferDescriptor,
+  /*IN*/ DWORD  dwTargetDescriptorLength,
+  /*IN*/ DWORD  dwTargetBufferOffset,
+  /*OUT*/ LPDWORD  lpdwNumberOfBytesWritten,
+  /*IN*/ DWORD  dwFlags,
+  /*IN*/ LPWSAOVERLAPPED  lpOverlapped,
+  /*IN*/ LPWSAOVERLAPPED_COMPLETION_ROUTINE  lpCompletionRoutine,
+  /*IN*/ LPWSATHREADID  lpThreadId,
+  /*OUT*/ LPINT  lpErrno);
+
+HANDLE WSPAPI
+WSPRegisterMemory(
+  /*IN*/ SOCKET  s,
+  /*IN*/ PVOID  lpBuffer,
+  /*IN*/ DWORD  dwBufferLength,
+  /*IN*/ DWORD  dwFlags,
+  /*OUT*/ LPINT  lpErrno);
+
+int WSPAPI
+WSPRegisterRdmaMemory(
+  /*IN*/ SOCKET  s,
+  /*IN*/ PVOID  lpBuffer,
+  /*IN*/ DWORD  dwBufferLength,
+  /*IN*/ DWORD  dwFlags,
+  /*OUT*/ LPVOID  lpRdmaBufferDescriptor,
+  /*IN OUT*/ LPDWORD  lpdwDescriptorLength,
+  /*OUT*/ LPINT  lpErrno);
+
+typedef int WSPAPI
+(*LPFN_WSPREGISTERRDMAMEMORY)(
+  /*IN*/ SOCKET  s,
+  /*IN*/ PVOID  lpBuffer,
+  /*IN*/ DWORD  dwBufferLength,
+  /*IN*/ DWORD  dwFlags,
+  /*OUT*/ LPVOID  lpRdmaBufferDescriptor,
+  /*IN OUT*/ LPDWORD  lpdwDescriptorLength,
+  /*OUT*/ LPINT  lpErrno);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __WS2SAN_H */
Index: Daodan/MinGW/include/ddk/xfilter.h
===================================================================
--- Daodan/MinGW/include/ddk/xfilter.h	(revision 1046)
+++ Daodan/MinGW/include/ddk/xfilter.h	(revision 1046)
@@ -0,0 +1,239 @@
+/*
+ * xfilter.h
+ *
+ * Address filtering for NDIS MACs
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __XFILTER_H
+#define __XFILTER_H
+
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "ntddk.h"
+
+
+#define ETH_LENGTH_OF_ADDRESS             6
+
+#define ETH_IS_BROADCAST(Address) \
+  ((((PUCHAR)(Address))[0] == ((UCHAR)0xff)) && (((PUCHAR)(Address))[1] == ((UCHAR)0xff)))
+
+#define ETH_IS_MULTICAST(Address) \
+  (BOOLEAN)(((PUCHAR)(Address))[0] & ((UCHAR)0x01))
+
+#define ETH_COMPARE_NETWORK_ADDRESSES(_A, _B, _Result) \
+{ \
+	if (*(ULONG UNALIGNED *)&(_A)[2] > *(ULONG UNALIGNED *)&(_B)[2]) \
+	{ \
+    *(_Result) = 1; \
+	} \
+	else if (*(ULONG UNALIGNED *)&(_A)[2] < *(ULONG UNALIGNED *)&(_B)[2]) \
+	{ \
+    *(_Result) = (UINT)-1; \
+	} \
+	else if (*(USHORT UNALIGNED *)(_A) > *(USHORT UNALIGNED *)(_B)) \
+	{ \
+    *(_Result) = 1; \
+	} \
+	else if (*(USHORT UNALIGNED *)(_A) < *(USHORT UNALIGNED *)(_B)) \
+	{ \
+	  *(_Result) = (UINT)-1; \
+	} \
+	else \
+	{ \
+	  *(_Result) = 0; \
+	} \
+}
+
+#define ETH_COMPARE_NETWORK_ADDRESSES_EQ(_A,_B, _Result) \
+{ \
+	if ((*(ULONG UNALIGNED *)&(_A)[2] == *(ULONG UNALIGNED *)&(_B)[2]) && \
+    (*(USHORT UNALIGNED *)(_A) == *(USHORT UNALIGNED *)(_B))) \
+	{ \
+    *(_Result) = 0; \
+	} \
+	else \
+	{ \
+    *(_Result) = 1; \
+	} \
+}
+
+#define ETH_COPY_NETWORK_ADDRESS(_D, _S) \
+{ \
+	*((ULONG UNALIGNED *)(_D)) = *((ULONG UNALIGNED *)(_S)); \
+	*((USHORT UNALIGNED *)((UCHAR *)(_D) + 4)) = *((USHORT UNALIGNED *)((UCHAR *)(_S) + 4)); \
+}
+
+#define FDDI_LENGTH_OF_LONG_ADDRESS       6
+#define FDDI_LENGTH_OF_SHORT_ADDRESS      2
+
+#define FDDI_IS_BROADCAST(Address, AddressLength, Result)   \
+  *Result = ((*(PUCHAR)(Address) == (UCHAR)0xFF) && \
+  (*((PUCHAR)(Address) + 1) == (UCHAR)0xFF))
+
+#define FDDI_IS_MULTICAST(Address, AddressLength, Result) \
+  *Result = (BOOLEAN)(*(UCHAR *)(Address) & (UCHAR)0x01)
+
+#define FDDI_IS_SMT(FcByte, Result) \
+{ \
+  *Result = ((FcByte & ((UCHAR)0xf0)) == 0x40); \
+}
+
+
+#define FDDI_COMPARE_NETWORK_ADDRESSES(_A, _B, _Length, _Result) \
+{ \
+	if (*(USHORT UNALIGNED *)(_A) > *(USHORT UNALIGNED *)(_B)) \
+	{ \
+	  *(_Result) = 1; \
+	} \
+	else if (*(USHORT UNALIGNED *)(_A) < *(USHORT UNALIGNED *)(_B)) \
+	{ \
+	  *(_Result) = (UINT)-1; \
+	} \
+	else if (_Length == 2) \
+	{ \
+	  *(_Result) = 0; \
+	} \
+	else if (*(ULONG UNALIGNED *)((PUCHAR)(_A) + 2) > *(ULONG UNALIGNED *)((PUCHAR)(_B) + 2)) \
+	{ \
+	  *(_Result) = 1; \
+	} \
+	else if (*(ULONG UNALIGNED *)((PUCHAR)(_A) + 2) < *(ULONG UNALIGNED *)((PUCHAR)(_B) + 2)) \
+	{ \
+	  *(_Result) = (UINT)-1; \
+	} \
+	else \
+	{ \
+	  *(_Result) = 0; \
+	} \
+}
+
+#define FDDI_COMPARE_NETWORK_ADDRESSES_EQ(_A, _B, _Length, _Result) \
+{                                                                   \
+	if ((*(USHORT UNALIGNED *)(_A) == *(USHORT UNALIGNED *)(_B)) && \
+	  (((_Length) == 2) || \
+	    (*(ULONG UNALIGNED *)((PUCHAR)(_A) + 2) == *(ULONG UNALIGNED *)((PUCHAR)(_B) + 2)))) \
+	{ \
+	  *(_Result) = 0; \
+	} \
+	else \
+	{ \
+	  *(_Result) = 1; \
+	} \
+}
+
+#define FDDI_COPY_NETWORK_ADDRESS(D, S, AddressLength) \
+{ \
+	PCHAR _D = (D); \
+	PCHAR _S = (S); \
+	UINT _C = (AddressLength); \
+	for ( ; _C > 0 ; _D++, _S++, _C--) \
+	{ \
+	  *_D = *_S; \
+	} \
+}
+
+#define TR_LENGTH_OF_FUNCTIONAL           4
+#define TR_LENGTH_OF_ADDRESS              6
+
+typedef ULONG TR_FUNCTIONAL_ADDRESS;
+typedef ULONG TR_GROUP_ADDRESS;
+
+#define TR_IS_NOT_DIRECTED(_Address, _Result) \
+{ \
+  *(_Result) = (BOOLEAN)((_Address)[0] & 0x80); \
+}
+
+#define TR_IS_FUNCTIONAL(_Address, _Result) \
+{ \
+	*(_Result) = (BOOLEAN)(((_Address)[0] & 0x80) && !((_Address)[2] & 0x80)); \
+}
+
+#define TR_IS_GROUP(_Address, _Result) \
+{ \
+  *(_Result) = (BOOLEAN)((_Address)[0] & (_Address)[2] & 0x80); \
+}
+
+#define TR_IS_SOURCE_ROUTING(_Address, _Result) \
+{ \
+  *(_Result) = (BOOLEAN)((_Address)[0] & 0x80); \
+}
+
+#define TR_IS_MAC_FRAME(_PacketHeader) ((((PUCHAR)_PacketHeader)[1] & 0xFC) == 0)
+
+#define TR_IS_BROADCAST(_Address, _Result) \
+{ \
+	*(_Result) = (BOOLEAN)(((*(UNALIGNED USHORT *)&(_Address)[0] == 0xFFFF) || \
+		(*(UNALIGNED USHORT *)&(_Address)[0] == 0x00C0)) && \
+		(*(UNALIGNED ULONG  *)&(_Address)[2] == 0xFFFFFFFF)); \
+}
+
+#define TR_COMPARE_NETWORK_ADDRESSES(_A, _B, _Result) \
+{ \
+	if (*(ULONG UNALIGNED *)&(_A)[2] > *(ULONG UNALIGNED *)&(_B)[2]) \
+	{ \
+	  *(_Result) = 1; \
+	} \
+	else if (*(ULONG UNALIGNED *)&(_A)[2] < *(ULONG UNALIGNED *)&(_B)[2]) \
+	{ \
+	  *(_Result) = (UINT)-1; \
+	} \
+	else if (*(USHORT UNALIGNED *)(_A) > *(USHORT UNALIGNED *)(_B)) \
+	{ \
+	  *(_Result) = 1; \
+	} \
+	else if (*(USHORT UNALIGNED *)(_A) < *(USHORT UNALIGNED *)(_B)) \
+	{ \
+	  *(_Result) = (UINT)-1; \
+	} \
+	else \
+	{ \
+	  *(_Result) = 0; \
+	} \
+}
+
+#define TR_COPY_NETWORK_ADDRESS(_D, _S) \
+{ \
+	*((ULONG UNALIGNED *)(_D)) = *((ULONG UNALIGNED *)(_S)); \
+	*((USHORT UNALIGNED *)((UCHAR *)(_D)+4)) = *((USHORT UNALIGNED *)((UCHAR *)(_S) + 4)); \
+}
+
+#define TR_COMPARE_NETWORK_ADDRESSES_EQ(_A, _B, _Result) \
+{ \
+	if ((*(ULONG UNALIGNED  *)&(_A)[2] == *(ULONG UNALIGNED  *)&(_B)[2]) && \
+	    (*(USHORT UNALIGNED *)&(_A)[0] == *(USHORT UNALIGNED *)&(_B)[0])) \
+	{ \
+    *(_Result) = 0; \
+	} \
+	else \
+	{ \
+    *(_Result) = 1; \
+	} \
+}
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __XFILTER_H */
Index: Daodan/MinGW/include/devguid.h
===================================================================
--- Daodan/MinGW/include/devguid.h	(revision 1046)
+++ Daodan/MinGW/include/devguid.h	(revision 1046)
@@ -0,0 +1,65 @@
+#ifndef _DEVGUID_H
+#define _DEVGUID_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern const GUID GUID_DEVCLASS_WCEUSBS;
+extern const GUID GUID_DEVCLASS_USB;
+extern const GUID GUID_DEVCLASS_PNPPRINTERS;
+extern const GUID GUID_DEVCLASS_DOT4;
+extern const GUID GUID_DEVCLASS_DOT4PRINT;
+extern const GUID GUID_DEVCLASS_CDROM;
+extern const GUID GUID_DEVCLASS_COMPUTER;
+extern const GUID GUID_DEVCLASS_DISKDRIVE;
+extern const GUID GUID_DEVCLASS_DISPLAY;
+extern const GUID GUID_DEVCLASS_FDC;
+extern const GUID GUID_DEVCLASS_HDC;
+extern const GUID GUID_DEVCLASS_KEYBOARD;
+extern const GUID GUID_DEVCLASS_MEDIA;
+extern const GUID GUID_DEVCLASS_MODEM;
+extern const GUID GUID_DEVCLASS_MONITOR;
+extern const GUID GUID_DEVCLASS_MOUSE;
+extern const GUID GUID_DEVCLASS_MTD;
+extern const GUID GUID_DEVCLASS_MULTIFUNCTION;
+extern const GUID GUID_DEVCLASS_NET;
+extern const GUID GUID_DEVCLASS_NETCLIENT;
+extern const GUID GUID_DEVCLASS_NETSERVICE;
+extern const GUID GUID_DEVCLASS_NETTRANS;
+extern const GUID GUID_DEVCLASS_PCMCIA;
+extern const GUID GUID_DEVCLASS_PORTS;
+extern const GUID GUID_DEVCLASS_PRINTER;
+extern const GUID GUID_DEVCLASS_SCSIADAPTER;
+extern const GUID GUID_DEVCLASS_SYSTEM;
+extern const GUID GUID_DEVCLASS_UNKNOWN;
+extern const GUID GUID_DEVCLASS_FLOPPYDISK;
+extern const GUID GUID_DEVCLASS_PROCESSOR;
+extern const GUID GUID_DEVCLASS_MULTIPORTSERIAL;
+extern const GUID GUID_DEVCLASS_SMARTCARDREADER;
+extern const GUID GUID_DEVCLASS_VOLUMESNAPSHOT;
+extern const GUID GUID_DEVCLASS_1394DEBUG;
+extern const GUID GUID_DEVCLASS_1394;
+extern const GUID GUID_DEVCLASS_INFRARED;
+extern const GUID GUID_DEVCLASS_IMAGE;
+extern const GUID GUID_DEVCLASS_TAPEDRIVE;
+extern const GUID GUID_DEVCLASS_VOLUME;
+extern const GUID GUID_DEVCLASS_BATTERY;
+extern const GUID GUID_DEVCLASS_HIDCLASS;
+extern const GUID GUID_DEVCLASS_61883;
+extern const GUID GUID_DEVCLASS_LEGACYDRIVER;
+extern const GUID GUID_DEVCLASS_SDHOST;
+extern const GUID GUID_DEVCLASS_AVC;
+extern const GUID GUID_DEVCLASS_ENUM1394;
+extern const GUID GUID_DEVCLASS_MEDIUMCHANGER;
+extern const GUID GUID_DEVCLASS_NTAPM;
+extern const GUID GUID_DEVCLASS_SBP2;
+extern const GUID GUID_DEVCLASS_BLUETOOTH;
+extern const GUID GUID_DEVCLASS_PROBES;
+#ifdef __cplusplus
+}
+#endif
+#endif /* _DEVGUID_H */
Index: Daodan/MinGW/include/dhcpcsdk.h
===================================================================
--- Daodan/MinGW/include/dhcpcsdk.h	(revision 1046)
+++ Daodan/MinGW/include/dhcpcsdk.h	(revision 1046)
@@ -0,0 +1,42 @@
+#ifndef _DHCPCDSK_H
+#define _DHCPCDSK_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#if (_WIN32_WINNT >= 0x0500)
+#define DHCPCAPI_REGISTER_HANDLE_EVENT 0x00000001
+#define DHCPCAPI_REQUEST_PERSISTENT  0x00000001
+#define DHCPCAPI_REQUEST_SYNCHRONOUS 0x00000002
+typedef struct _DHCPAPI_CLASSID {
+	ULONG Flags;
+	LPBYTE Data;
+	ULONG nBytesData;
+} DHCPCAPI_CLASSID,*PDHCPCAPI_CLASSID,*LPDHCPCAPI_CLASSID;
+typedef struct _DHCPAPI_PARAMS {
+	ULONG Flags;
+	ULONG OptionId;
+	BOOL IsVendor;
+	LPBYTE Data;
+	DWORD nBytesData;
+} DHCPAPI_PARAMS,*PDHCPAPI_PARAMS,*LPDHCPAPI_PARAMS;
+typedef struct _DHCPAPI_PARAMS_ARRAY {
+	ULONG nParams;
+	LPDHCPAPI_PARAMS Params;
+} DHCPCAPI_PARAMS_ARRAY,*PDHCPCAPI_PARAMS_ARRAY,*LPDHCPCAPI_PARAMS_ARRAY;
+VOID WINAPI DhcpCApiCleanup(void);
+DWORD WINAPI DhcpCApiInitialize(LPDWORD);
+DWORD WINAPI DhcpDeRegisterParamChange(DWORD,LPVOID,LPVOID);
+DWORD WINAPI DhcpRegisterParamChange(DWORD,LPVOID,PWSTR,LPDHCPCAPI_CLASSID,DHCPCAPI_PARAMS_ARRAY,LPVOID);
+DWORD WINAPI DhcpRemoveDNSRegistrations(void);
+DWORD WINAPI DhcpUndoRequestParams(DWORD,LPVOID,LPWSTR,LPWSTR);
+#endif /* (_WIN32_WINNT >= 0x0500) */
+
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/dir.h
===================================================================
--- Daodan/MinGW/include/dir.h	(revision 1046)
+++ Daodan/MinGW/include/dir.h	(revision 1046)
@@ -0,0 +1,40 @@
+/*
+ * dir.h
+ *
+ * Obsolete header replaced by <io.h>; this stub is retained for
+ * backward compatibility only.
+ *
+ * $Id: dir.h,v 71af661f5309 2016/04/26 22:05:33 keithmarshall $
+ *
+ * Written by Colin Peters <colin@bird.fu.is.saga-u.ac.jp>
+ * Copyright (C) 1997-1999, 2001, 2016, MinGW.org Project
+ *
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice, this permission notice, and the following
+ * disclaimer shall be included in all copies or substantial portions of
+ * the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OF OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ *
+ */
+#ifndef _DIR_H
+#pragma GCC system_header
+#define _DIR_H
+
+#warning "<dir.h> is obsolete; please use <io.h> instead."
+#include "io.h"
+
+#endif	/* !_DIR_H: $RCSfile: dir.h,v $: end of file */
Index: Daodan/MinGW/include/direct.h
===================================================================
--- Daodan/MinGW/include/direct.h	(revision 1046)
+++ Daodan/MinGW/include/direct.h	(revision 1046)
@@ -0,0 +1,97 @@
+/*
+ * direct.h
+ *
+ * Functions for manipulating paths and directories, (included from io.h),
+ * and functions for manipulating the current drive assignment.
+ *
+ * $Id: direct.h,v 71af661f5309 2016/04/26 22:05:33 keithmarshall $
+ *
+ * Written by Colin Peters <colin@bird.fu.is.saga-u.ac.jp>
+ * Copyright (C) 1997, 1999-2001, 2003, 2004, 2007, 2016, MinGW.org Project.
+ *
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice, this permission notice, and the following
+ * disclaimer shall be included in all copies or substantial portions of
+ * the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OF OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ *
+ */
+#ifndef _DIRECT_H
+#pragma GCC system_header
+
+/* In addition to inclusion in its own right, this header supports
+ * selective inclusion by <wchar.h>; thus...
+ */
+#ifndef __WCHAR_H_SOURCED__
+ /* ...we defer definition of the normal multiple inclusion guard,
+  * until we know that this is NOT a selective inclusion request.
+  */
+#define _DIRECT_H
+
+#define __DIRECT_H_SOURCED__
+/* All MinGW headers are required to include <_mingw.h>; additionally,
+ * much of the content which we need here is defined in <io.h>, but we
+ * also need the declaration of the _getdiskfree() function prototype,
+ * and the definition for its associated _diskfree_t data structure,
+ * from <dos.h>; thus, we may simply include <dos.h> here, and let
+ * it take care of including both <mingw.h> and <io.h> for us.
+ */
+#include "dos.h"
+
+#undef __DIRECT_H_SOURCED__
+#endif	/* !__WCHAR_H_SOURCED__ */
+
+#ifndef RC_INVOKED
+
+_BEGIN_C_DECLS
+
+#ifdef _DIRECT_H
+/* Functions for manipulating disk drive selection; these are declared
+ * only when <direct.h> is included in its own right.
+ */
+_CRTIMP __cdecl __MINGW_NOTHROW  int _getdrive (void);
+_CRTIMP __cdecl __MINGW_NOTHROW  unsigned long _getdrives(void);
+_CRTIMP __cdecl __MINGW_NOTHROW  int _chdrive (int);
+_CRTIMP __cdecl __MINGW_NOTHROW  char *_getdcwd (int, char*, int);
+
+#endif	/* _DIRECT_H */
+
+/* The following group of function prototypes are to be declared
+ * either when including <dirent.h> in its own right, or when it
+ * is included selectively by <wchar.h>; however...
+ */
+#if defined __MSVCRT__ && ! (defined _DIRENT_H && defined _WCHAR_H)
+ /*
+  * ...they are available only within MSVCRT.DLL, (i.e. they are
+  * NOT provided by CRTDLL.DLL), and if both _DIRENT_H and _WCHAR_H
+  * are already defined, by the time we get to here, then this must
+  * be an inclusion of <dirent.h> in its own right, AFTER they have
+  * already been declared on behalf of <wchar.h>; there is no need
+  * to declare them again.
+  */
+_CRTIMP __cdecl __MINGW_NOTHROW  int _wchdir (const wchar_t *);
+_CRTIMP __cdecl __MINGW_NOTHROW  wchar_t *_wgetcwd (wchar_t *, int);
+_CRTIMP __cdecl __MINGW_NOTHROW  wchar_t *_wgetdcwd (int, wchar_t *, int);
+_CRTIMP __cdecl __MINGW_NOTHROW  int _wmkdir (const wchar_t *);
+_CRTIMP __cdecl __MINGW_NOTHROW  int _wrmdir (const wchar_t *);
+
+#endif	/* __MSVCRT__ && ! (defined _DIRENT_H && defined _WCHAR_H) */
+
+_END_C_DECLS
+
+#endif	/* ! RC_INVOKED */
+#endif  /* !_DIRECT_H: $RCSfile: direct.h,v $: end of file */
Index: Daodan/MinGW/include/dirent.h
===================================================================
--- Daodan/MinGW/include/dirent.h	(revision 1046)
+++ Daodan/MinGW/include/dirent.h	(revision 1046)
@@ -0,0 +1,163 @@
+/*
+ * DIRENT.H (formerly DIRLIB.H)
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is a part of the mingw-runtime package.
+ * No warranty is given; refer to the file DISCLAIMER within the package.
+ *
+ */
+#ifndef _DIRENT_H_
+#define _DIRENT_H_
+#pragma GCC system_header
+
+/* All the headers include this file. */
+#include <_mingw.h>
+
+#include <io.h>
+
+#ifndef RC_INVOKED
+
+_BEGIN_C_DECLS
+
+struct dirent
+{
+  long            d_ino;		/* Always zero. */
+  unsigned short  d_reclen;		/* Always sizeof struct dirent. */
+  unsigned short  d_namlen;		/* Length of name in d_name. */
+  unsigned        d_type;		/* File attributes */
+  char            d_name[FILENAME_MAX]; /* File name. */
+};
+
+/* This opaque data type represents the private structure
+ * through which a directory stream is referenced.
+ */
+typedef struct __dirstream_t DIR;
+
+DIR* __cdecl __MINGW_NOTHROW __mingw_opendir (const char*);
+struct dirent* __cdecl __MINGW_NOTHROW __mingw_readdir (DIR*);
+int __cdecl __MINGW_NOTHROW __mingw_closedir (DIR*);
+void __cdecl __MINGW_NOTHROW __mingw_rewinddir (DIR*);
+long __cdecl __MINGW_NOTHROW __mingw_telldir (DIR*);
+void __cdecl __MINGW_NOTHROW __mingw_seekdir (DIR*, long);
+
+__CRT_ALIAS __JMPSTUB__(( FUNCTION = opendir ))
+DIR* __cdecl __MINGW_NOTHROW opendir (const char *__dirname)
+{ return __mingw_opendir (__dirname); }
+
+__CRT_ALIAS __JMPSTUB__(( FUNCTION = readdir ))
+struct dirent* __cdecl __MINGW_NOTHROW readdir (DIR *__dir)
+{ return __mingw_readdir (__dir); }
+
+__CRT_ALIAS __JMPSTUB__(( FUNCTION = closedir ))
+int __cdecl __MINGW_NOTHROW closedir (DIR *__dir)
+{ return __mingw_closedir (__dir); }
+
+__CRT_ALIAS __JMPSTUB__(( FUNCTION = rewinddir ))
+void __cdecl __MINGW_NOTHROW rewinddir (DIR *__dir)
+{ return __mingw_rewinddir (__dir); }
+
+__CRT_ALIAS __JMPSTUB__(( FUNCTION = telldir ))
+long __cdecl __MINGW_NOTHROW telldir (DIR *__dir)
+{ return __mingw_telldir (__dir); }
+
+__CRT_ALIAS __JMPSTUB__(( FUNCTION = seekdir ))
+void __cdecl __MINGW_NOTHROW seekdir (DIR *__dir, long __loc)
+{ return __mingw_seekdir (__dir, __loc); }
+
+
+/* wide char versions */
+
+struct _wdirent
+{
+  long            d_ino;		/* Always zero. */
+  unsigned short  d_reclen;		/* Always size of struct _wdirent. */
+  unsigned short  d_namlen;		/* Length of name in d_name. */
+  unsigned        d_type;		/* File attributes */
+  wchar_t         d_name[FILENAME_MAX]; /* File name. */
+};
+
+/* This opaque data type represents the private structure
+ * through which a wide directory stream is referenced.
+ */
+typedef struct __wdirstream_t _WDIR;
+
+_WDIR* __cdecl __MINGW_NOTHROW __mingw__wopendir (const wchar_t*);
+struct _wdirent*  __cdecl __MINGW_NOTHROW __mingw__wreaddir (_WDIR*);
+int __cdecl __MINGW_NOTHROW __mingw__wclosedir (_WDIR*);
+void __cdecl __MINGW_NOTHROW __mingw__wrewinddir (_WDIR*);
+long __cdecl __MINGW_NOTHROW __mingw__wtelldir (_WDIR*);
+void __cdecl __MINGW_NOTHROW __mingw__wseekdir (_WDIR*, long);
+
+__CRT_ALIAS __JMPSTUB__(( FUNCTION = _wopendir ))
+_WDIR* __cdecl __MINGW_NOTHROW _wopendir (const wchar_t *__dirname)
+{ return __mingw__wopendir (__dirname); }
+
+__CRT_ALIAS __JMPSTUB__(( FUNCTION = _wreaddir ))
+struct _wdirent*  __cdecl __MINGW_NOTHROW _wreaddir (_WDIR *__dir)
+{ return __mingw__wreaddir (__dir); }
+
+__CRT_ALIAS __JMPSTUB__(( FUNCTION = _wclosedir ))
+int __cdecl __MINGW_NOTHROW _wclosedir (_WDIR *__dir)
+{ return __mingw__wclosedir (__dir); }
+
+__CRT_ALIAS __JMPSTUB__(( FUNCTION = _wrewinddir ))
+void __cdecl __MINGW_NOTHROW _wrewinddir (_WDIR *__dir)
+{ return __mingw__wrewinddir (__dir); }
+
+__CRT_ALIAS __JMPSTUB__(( FUNCTION = _wtelldir ))
+long __cdecl __MINGW_NOTHROW _wtelldir (_WDIR *__dir)
+{ return __mingw__wtelldir (__dir); }
+
+__CRT_ALIAS __JMPSTUB__(( FUNCTION = _wseekdir ))
+void __cdecl __MINGW_NOTHROW _wseekdir (_WDIR *__dir, long __loc)
+{ return __mingw__wseekdir (__dir, __loc); }
+
+_END_C_DECLS
+
+#if defined(_BSD_SOURCE) || defined(_WIN32)
+/*
+ * BSD-ish systems define manifest constants for the d_type field;
+ * although probably only DT_REG and DT_DIR are useful on Win32, we
+ * try to map them as best we can from the _finddata.attrib field.
+ *
+ * The relevant Microsoft manifest values are:
+ *
+ *   _A_NORMAL	(0x0000)	normal file: best fit for DT_REG
+ *   _A_RDONLY	(0x0001)	read-only: no BSD d_type equivalent
+ *   _A_HIDDEN	(0x0002)	hidden entity: no BSD equivalent
+ *   _A_SYSTEM	(0x0004)	system entity: no BSD equivalent
+ *   _A_VOLID	(0x0008)	volume label: no BSD equivalent
+ *   _A_SUBDIR	(0x0010)	directory: best fit for DT_DIR
+ *   _A_ARCH	(0x0020)	"dirty": no BSD equivalent
+ *
+ * Thus, we may immediately define:
+ */
+#define DT_REG   	_A_NORMAL
+#define DT_DIR   	_A_SUBDIR
+
+/* The remaining BSD d_type manifest values have no Win32 equivalents;
+ * we will define them artificially, and then we will ensure that our
+ * opendir()/readdir() implementation will never assign them; (we will
+ * substitute DT_UNKNOWN, but it would be unwise to simply make these
+ * equivalent to that, since an application is likely to simply check
+ * for d_type equal to any one of these defined types, and thus could
+ * mistakenly identify DT_UNKNOWN as being of the tested type):
+ */
+#define DT_BLK   	(((_A_SUBDIR) << 4) | DT_UNKNOWN)
+#define DT_CHR   	(((_A_SUBDIR) << 5) | DT_UNKNOWN)
+#define DT_FIFO  	(((_A_SUBDIR) << 6) | DT_UNKNOWN)
+#define DT_LNK   	(((_A_SUBDIR) << 7) | DT_UNKNOWN)
+#define DT_SOCK  	(((_A_SUBDIR) << 8) | DT_UNKNOWN)
+
+/* No file system entity can ever be simultaneously a volume label
+ * and a directory; we will exploit this to unambiguously define:
+ */
+#define DT_UNKNOWN	(_A_VOLID | _A_SUBDIR)
+
+#define _DIRENT_HAVE_D_TYPE    1
+#define _DIRENT_HAVE_D_RECLEN  1
+#define _DIRENT_HAVE_D_NAMLEN  1
+
+#endif  /* _BSD_SOURCE */
+#endif	/* ! RC_INVOKED */
+
+#endif	/* !defined _DIRENT_H_ */
Index: Daodan/MinGW/include/dlfcn.h
===================================================================
--- Daodan/MinGW/include/dlfcn.h	(revision 1046)
+++ Daodan/MinGW/include/dlfcn.h	(revision 1046)
@@ -0,0 +1,94 @@
+/*
+ * dlfcn.h
+ *
+ * Public interface declarations for (approximately) POSIX conforming
+ * dlopen(), dlsym(), dlclose(), and dlerror() API functions.
+ *
+ * $Id: dlfcn.h,v 82d2db93e4de 2014/11/11 18:13:14 keithmarshall $
+ *
+ * Written by Keith Marshall <keithmarshall@users.sourceforge.net>
+ * Copyright (C) 2014, MinGW.org Project
+ *
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice, this permission notice, and the following
+ * disclaimer shall be included in all copies or substantial portions of
+ * the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OF OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ *
+ */
+#ifndef _DLFCN_H
+#define _DLFCN_H  1
+#pragma GCC system_header
+
+#include <_mingw.h>
+
+/* POSIX requires the following four definitions.  Our implementation
+ * (currently) does not support the behaviour associated with RTLD_LAZY;
+ * if specified, it is simply ignored; RTLD_NOW behaviour will prevail.
+ */
+#define RTLD_NOW	0
+#define RTLD_LAZY	1
+#define RTLD_GLOBAL	2
+#define RTLD_LOCAL	4
+
+/* POSIX does not yet require the following pair, but reserves them for
+ * future capabilities; they will be used in contexts where a DLL module
+ * handle is expected, so we reserve values of suitable type, which are
+ * unlikely to ever occur as real module handles in practice.
+ */
+#define RTLD_DEFAULT	(void *)(-1)
+#define RTLD_NEXT	(void *)(-3)
+
+/* The four dlfcn API functions, dlopen(), dlsym(), dlerror(), and dlclose(),
+ * are each defined privately, and made publicly accessible via corresponding
+ * function pointers, within the following publicly visible structure.
+ */
+_EXTERN_C struct __dlfcn__
+{ void *(*dlopen)( const char *, int );
+  void *(*dlsym)( void *__restrict__, const char *__restrict__ );
+  char *(*dlerror)( void );
+  int (*dlclose)( void * );
+} __mingw_dlfcn;
+
+/* Declare the public API for each of these functions...
+ */
+_BEGIN_C_DECLS
+
+/* In any event, we always declare prototypes for all four functions.
+ */
+void * dlopen( const char *, int );
+void * dlsym( void *__restrict__, const char *__restrict__ );
+int    dlclose( void * );
+char * dlerror( void );
+
+__CRT_ALIAS __LIBIMPL__(( FUNCTION = dlopen ))
+void *dlopen( const char *__name, int __mode )
+{ return __mingw_dlfcn.dlopen( __name, __mode ); }
+
+__CRT_ALIAS __LIBIMPL__(( FUNCTION = dlsym ))
+void *dlsym( void *__restrict__ __module, const char *__restrict__ __name )
+{ return __mingw_dlfcn.dlsym( __module, __name ); }
+
+__CRT_ALIAS __LIBIMPL__(( FUNCTION = dlclose ))
+int dlclose( void *__module ){ return __mingw_dlfcn.dlclose( __module ); }
+
+__CRT_ALIAS __LIBIMPL__(( FUNCTION = dlerror ))
+char *dlerror( void ){ return __mingw_dlfcn.dlerror(); }
+
+_END_C_DECLS
+
+#endif /* _DLFCN_H: $RCSfile: dlfcn.h,v $: end of file */
Index: Daodan/MinGW/include/dlgs.h
===================================================================
--- Daodan/MinGW/include/dlgs.h	(revision 1046)
+++ Daodan/MinGW/include/dlgs.h	(revision 1046)
@@ -0,0 +1,186 @@
+#ifndef _DLGS_H
+#define _DLGS_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#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 PAGESETUPDLGORD 1546
+#define ctlFirst 0x400
+#define ctlLast 0x4ff
+#define chx1 0x410
+#define chx2 0x411
+#define chx3 0x412
+#define chx4 0x413
+#define chx5 0x414
+#define chx6 0x415
+#define chx7 0x416
+#define chx8 0x417
+#define chx9 0x418
+#define chx10 0x419
+#define chx11 0x41a
+#define chx12 0x41b
+#define chx13 0x41c
+#define chx14 0x41d
+#define chx15 0x41e
+#define chx16 0x41f
+#define cmb1 0x470
+#define cmb2 0x471
+#define cmb3 0x472
+#define cmb4 0x473
+#define cmb5 0x474
+#define cmb6 0x475
+#define cmb7 0x476
+#define cmb8 0x477
+#define cmb9 0x478
+#define cmb10 0x479
+#define cmb11 0x47a
+#define cmb12 0x47b
+#define cmb13 0x47c
+#define cmb14 0x47d
+#define cmb15 0x47e
+#define cmb16 0x47f
+#define edt1 0x480
+#define edt2 0x481
+#define edt3 0x482
+#define edt4 0x483
+#define edt5 0x484
+#define edt6 0x485
+#define edt7 0x486
+#define edt8 0x487
+#define edt9 0x488
+#define edt10 0x489
+#define edt11 0x48a
+#define edt12 0x48b
+#define edt13 0x48c
+#define edt14 0x48d
+#define edt15 0x48e
+#define edt16 0x48f
+#define frm1 0x434
+#define frm2 0x435
+#define frm3 0x436
+#define frm4 0x437
+#define grp1 0x430
+#define grp2 0x431
+#define grp3 0x432
+#define grp4 0x433
+#define ico1 0x43c
+#define ico2 0x43d
+#define ico3 0x43e
+#define ico4 0x43f
+#define lst1 0x460
+#define lst2 0x461
+#define lst3 0x462
+#define lst4 0x463
+#define lst5 0x464
+#define lst6 0x465
+#define lst7 0x466
+#define lst8 0x467
+#define lst9 0x468
+#define lst10 0x469
+#define lst11 0x46a
+#define lst12 0x46b
+#define lst13 0x46c
+#define lst14 0x46d
+#define lst15 0x46e
+#define lst16 0x46f
+#define psh1 0x400
+#define psh2 0x401
+#define psh3 0x402
+#define psh4 0x403
+#define psh5 0x404
+#define psh6 0x405
+#define psh7 0x406
+#define psh8 0x407
+#define psh9 0x408
+#define psh10 0x409
+#define psh11 0x40a
+#define psh12 0x40b
+#define psh13 0x40c
+#define psh14 0x40d
+#define psh15 0x40e
+#define pshHelp 0x40e
+#define psh16 0x40f
+#define rad1 0x420
+#define rad2 0x421
+#define rad3 0x422
+#define rad4 0x423
+#define rad5 0x424
+#define rad6 0x425
+#define rad7 0x426
+#define rad8 0x427
+#define rad9 0x428
+#define rad10 0x429
+#define rad11 0x42a
+#define rad12 0x42b
+#define rad13 0x42c
+#define rad14 0x42d
+#define rad15 0x42e
+#define rad16 0x42f
+#define rct1 0x438
+#define rct2 0x439
+#define rct3 0x43a
+#define rct4 0x43b
+#define scr1 0x490
+#define scr2 0x491
+#define scr3 0x492
+#define scr4 0x493
+#define scr5 0x494
+#define scr6 0x495
+#define scr7 0x496
+#define scr8 0x497
+#define stc1 0x440
+#define stc2 0x441
+#define stc3 0x442
+#define stc4 0x443
+#define stc5 0x444
+#define stc6 0x445
+#define stc7 0x446
+#define stc8 0x447
+#define stc9 0x448
+#define stc10 0x449
+#define stc11 0x44a
+#define stc12 0x44b
+#define stc13 0x44c
+#define stc14 0x44d
+#define stc15 0x44e
+#define stc16 0x44f
+#define stc17 0x450
+#define stc18 0x451
+#define stc19 0x452
+#define stc20 0x453
+#define stc21 0x454
+#define stc22 0x455
+#define stc23 0x456
+#define stc24 0x457
+#define stc25 0x458
+#define stc26 0x459
+#define stc27 0x45a
+#define stc28 0x45b
+#define stc29 0x45c
+#define stc30 0x45d
+#define stc31 0x45e
+#define stc32 0x45f
+#ifndef RC_INVOKED
+typedef struct tagCRGB {
+ BYTE bRed;
+ BYTE bGreen;
+ BYTE bBlue;
+ BYTE bExtra;
+} CRGB;
+#endif
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/docobj.h
===================================================================
--- Daodan/MinGW/include/docobj.h	(revision 1046)
+++ Daodan/MinGW/include/docobj.h	(revision 1046)
@@ -0,0 +1,147 @@
+#ifndef _DOCOBJ_H
+#define _DOCOBJ_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define OLECMDERR_E_UNKNOWNGROUP (-2147221244)
+#define OLECMDERR_E_DISABLED (-2147221247)
+#define OLECMDERR_E_NOHELP (-2147221246)
+#define OLECMDERR_E_CANCELED (-2147221245)
+#define OLECMDERR_E_NOTSUPPORTED (-2147221248)
+
+typedef enum {
+	OLECMDID_OPEN = 1,
+	OLECMDID_NEW = 2,
+	OLECMDID_SAVE = 3,
+	OLECMDID_SAVEAS = 4,
+	OLECMDID_SAVECOPYAS = 5,
+	OLECMDID_PRINT = 6,
+	OLECMDID_PRINTPREVIEW = 7,
+	OLECMDID_PAGESETUP = 8,
+	OLECMDID_SPELL = 9,
+	OLECMDID_PROPERTIES = 10,
+	OLECMDID_CUT = 11,
+	OLECMDID_COPY = 12,
+	OLECMDID_PASTE = 13,
+	OLECMDID_PASTESPECIAL = 14,
+	OLECMDID_UNDO = 15,
+	OLECMDID_REDO = 16,
+	OLECMDID_SELECTALL = 17,
+	OLECMDID_CLEARSELECTION = 18,
+	OLECMDID_ZOOM = 19,
+	OLECMDID_GETZOOMRANGE = 20,
+	OLECMDID_UPDATECOMMANDS = 21,
+	OLECMDID_REFRESH = 22,
+	OLECMDID_STOP = 23,
+	OLECMDID_HIDETOOLBARS = 24,
+	OLECMDID_SETPROGRESSMAX = 25,
+	OLECMDID_SETPROGRESSPOS = 26,
+	OLECMDID_SETPROGRESSTEXT = 27,
+	OLECMDID_SETTITLE = 28,
+	OLECMDID_SETDOWNLOADSTATE = 29,
+	OLECMDID_STOPDOWNLOAD = 30
+} OLECMDID;
+typedef enum {
+	OLECMDF_SUPPORTED = 1,
+	OLECMDF_ENABLED = 2,
+	OLECMDF_LATCHED = 4,
+	OLECMDF_NINCHED = 8
+} OLECMDF;
+typedef enum {
+	OLECMDEXECOPT_DODEFAULT = 0,
+	OLECMDEXECOPT_PROMPTUSER = 1,
+	OLECMDEXECOPT_DONTPROMPTUSER = 2,
+	OLECMDEXECOPT_SHOWHELP = 3
+} OLECMDEXECOPT;
+
+typedef struct _tagOLECMDTEXT {
+	DWORD cmdtextf;
+	ULONG cwActual;
+	ULONG cwBuf;
+	wchar_t rgwz[1];
+} OLECMDTEXT;
+typedef struct _tagOLECMD {
+	ULONG cmdID;
+	DWORD cmdf;
+} OLECMD;
+
+typedef _COM_interface IOleInPlaceSite *LPOLEINPLACESITE;
+typedef _COM_interface IEnumOleDocumentViews *LPENUMOLEDOCUMENTVIEWS;
+
+EXTERN_C const IID IID_IContinueCallback;
+EXTERN_C const IID IID_IEnumOleDocumentViews;
+EXTERN_C const IID IID_IPrint;
+
+EXTERN_C const IID IID_IOleDocumentView;
+#define INTERFACE IOleDocumentView
+DECLARE_INTERFACE_(IOleDocumentView,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+
+	STDMETHOD(SetInPlaceSite)(THIS_ LPOLEINPLACESITE) PURE;
+	STDMETHOD(GetInPlaceSite)(THIS_ LPOLEINPLACESITE*) PURE;
+	STDMETHOD(GetDocument)(THIS_ IUnknown**) PURE;
+	STDMETHOD(SetRect)(THIS_ LPRECT) PURE;
+	STDMETHOD(GetRect)(THIS_ LPRECT) PURE;
+	STDMETHOD(SetRectComplex)(THIS_ LPRECT,LPRECT,LPRECT,LPRECT) PURE;
+	STDMETHOD(Show)(THIS_ BOOL) PURE;
+	STDMETHOD(UIActivate)(THIS_ BOOL) PURE;
+	STDMETHOD(Open)(THIS) PURE;
+	STDMETHOD(Close)(THIS_ DWORD) PURE;
+	STDMETHOD(SaveViewState)(THIS_ IStream*) PURE;
+	STDMETHOD(ApplyViewState)(THIS_ IStream*) PURE;
+	STDMETHOD(Clone)(THIS_ LPOLEINPLACESITE,IOleDocumentView**) PURE;
+};
+#undef INTERFACE
+DECLARE_ENUMERATOR_(IEnumOleDocumentViews,IOleDocumentView);
+
+EXTERN_C const IID IID_IOleDocument;
+#define INTERFACE IOleDocument
+DECLARE_INTERFACE_(IOleDocument,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+
+	STDMETHOD(CreateView)(THIS_ LPOLEINPLACESITE,IStream*,DWORD,IOleDocumentView**) PURE;
+	STDMETHOD(GetDocMiscStatus)(THIS_ DWORD*) PURE;
+	STDMETHOD(EnumViews)(THIS_ LPENUMOLEDOCUMENTVIEWS*,IOleDocumentView**) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IOleCommandTarget;
+#define INTERFACE IOleCommandTarget
+DECLARE_INTERFACE_(IOleCommandTarget,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+
+	STDMETHOD(QueryStatus)(THIS_ const GUID*,ULONG,OLECMD*,OLECMDTEXT*) PURE;
+	STDMETHOD(Exec)(THIS_ const GUID*,DWORD,DWORD,VARIANTARG*,VARIANTARG*) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IOleDocumentSite;
+#define INTERFACE IOleDocumentSite
+DECLARE_INTERFACE_(IOleDocumentSite,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+
+	STDMETHOD(ActivateMe)(THIS_ IOleDocumentView*) PURE;
+};
+#undef INTERFACE
+
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/dos.h
===================================================================
--- Daodan/MinGW/include/dos.h	(revision 1046)
+++ Daodan/MinGW/include/dos.h	(revision 1046)
@@ -0,0 +1,136 @@
+/*
+ * dos.h
+ *
+ * Functions and structures inherited from MS-DOS.
+ *
+ * $Id: dos.h,v 71af661f5309 2016/04/26 22:05:33 keithmarshall $
+ *
+ * Written by Jan-Jaap van der Heijden
+ * Copyright (C) 1997-1999, 2001-2004, 2007, 2016, MinGW.org Project.
+ *
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice, this permission notice, and the following
+ * disclaimer shall be included in all copies or substantial portions of
+ * the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OF OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ *
+ */
+#ifndef	_DOS_H
+#pragma GCC system_header
+
+/* This header supports selective inclusion by <direct.h>, for delegated
+ * access to the content of <io.h>, and for declaration of the prototype
+ * and associated data structure for the _getdiskfree() function; since
+ * including <dos.h> in this manner does not make all of its content
+ * visible, we defer definition of its multiple inclusion guard...
+ */
+#ifndef __DIRECT_H_SOURCED__
+ /* ...until we have determined that this inclusion is NOT a selective
+  * request from <direct.h>; in spite of it being obsolete, it appears
+  * that the user may have included <dos.h> directly.
+  */
+#define	_DOS_H
+#warning "<dos.h> is obsolete; consider using <direct.h> instead."
+#endif	/* !__DIRECT_H_SOURCED__ */
+
+/* All MinGW headers are required to include <_mingw.h>; additionally,
+ * for DOS file attributes, we must include <io.h>.  By unconditionally
+ * including <io.h> here, we may delegate the inclusion of <_mingw.h> to
+ * it, while also allowing <direct.h> to delegate responsibility for the
+ * inclusion of both <_mingw.h> and <io.h> to us.
+ */
+#include "io.h"
+
+#ifndef RC_INVOKED
+
+_BEGIN_C_DECLS
+
+/* The following declarations are to be visible ONLY when <dos.h>
+ * is included in its own right; they represent entities which are
+ * present in CRTDLL.DLL, but not in MSVCRT.DLL
+ */
+#if defined _DOS_H && ! defined __MSVCRT__
+#ifndef __DECLSPEC_SUPPORTED
+
+# define _basemajor    (*_imp___basemajor_dll)
+# define _baseminor    (*_imp___baseminor_dll)
+# define _baseversion  (*_imp___baseversion_dll)
+# define _osmajor      (*_imp___osmajor_dll)
+# define _osminor      (*_imp___osminor_dll)
+# define _osmode       (*_imp___osmode_dll)
+
+extern unsigned int *_imp___basemajor_dll;
+extern unsigned int *_imp___baseminor_dll;
+extern unsigned int *_imp___baseversion_dll;
+extern unsigned int *_imp___osmajor_dll;
+extern unsigned int *_imp___osminor_dll;
+extern unsigned int *_imp___osmode_dll;
+
+#else /* __DECLSPEC_SUPPORTED */
+
+# define _basemajor    _basemajor_dll
+# define _baseminor    _baseminor_dll
+# define _baseversion  _baseversion_dll
+# define _osmajor      _osmajor_dll
+# define _osminor      _osminor_dll
+# define _osmode       _osmode_dll
+
+__MINGW_IMPORT unsigned int _basemajor_dll;
+__MINGW_IMPORT unsigned int _baseminor_dll;
+__MINGW_IMPORT unsigned int _baseversion_dll;
+__MINGW_IMPORT unsigned int _osmajor_dll;
+__MINGW_IMPORT unsigned int _osminor_dll;
+__MINGW_IMPORT unsigned int _osmode_dll;
+
+#endif	/* __DECLSPEC_SUPPORTED */
+#endif	/* _DOS_H && !__MSVCRT__ */
+
+/* The following section, which declares the _getdiskfree() function
+ * prototype, and also defines its associated _diskfree_t data structure,
+ * is to be processed both when including <dos.h> in its own right, and
+ * when selectively included by <direct.h>; however...
+ */
+#if ! (defined _DOS_H && defined _DIRECT_H)
+ /* ...when both the _DOS_H guard, and the _DIRECT_H multiple inclusion
+  * guards have been defined, by the time we get to here, then this is
+  * <dos.h> inclusion in its own right, and we have ALREADY processed
+  * these definitions through selective inclusion by <direct.h>; we
+  * MUST NOT process them a second time.
+  */
+#ifndef	_NO_OLDNAMES
+# define diskfree_t  _diskfree_t
+#endif
+
+struct _diskfree_t
+{ /* A structure in which to store information about disk
+   * free space, as returned by the _getdiskfree() function.
+   */
+  unsigned total_clusters;
+  unsigned avail_clusters;
+  unsigned sectors_per_cluster;
+  unsigned bytes_per_sector;
+};
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+unsigned _getdiskfree (unsigned, struct _diskfree_t *);
+
+#endif	/* ! ( _DOS_H && _DIRECT_H) */
+
+_END_C_DECLS
+
+#endif	/* ! RC_INVOKED */
+#endif  /* !_DOS_H: $RCSfile: dos.h,v $: end of file */
Index: Daodan/MinGW/include/dsadmin.h
===================================================================
--- Daodan/MinGW/include/dsadmin.h	(revision 1046)
+++ Daodan/MinGW/include/dsadmin.h	(revision 1046)
@@ -0,0 +1,38 @@
+/*
+ * dsadmin.h - Active Directory
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain.  You may use,
+ * modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY.  ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED.  This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+#ifndef _DSADMIN_H
+#define _DSADMIN_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*--- Active Directory Reference - Active Directory Structures - Active Directory Admin Structures */
+#if (_WIN32_WINNT >= 0x0500)
+typedef struct {
+	DWORD dwSize;
+	HICON hObjClassIcon;
+	LPWSTR lpszWizTitle;
+	LPWSTR lpszContDisplayName;
+} DSA_NEWOBJ_DISPINFO,*LPDSA_NEWOBJ_DISPINFO;
+#endif /* (_WIN32_WINNT >= 0x0500) */
+
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/dsclient.h
===================================================================
--- Daodan/MinGW/include/dsclient.h	(revision 1046)
+++ Daodan/MinGW/include/dsclient.h	(revision 1046)
@@ -0,0 +1,186 @@
+/*
+ * dsclient.h - Active Directory
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain.  You may use,
+ * modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY.  ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED.  This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+#ifndef _DSCLIENT_H
+#define _DSCLIENT_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#if (_WIN32_WINNT >= 0x0500)
+/*--- Active Directory Reference - Active Directory Functions - Active Directory Display Functions - BFFCallBack */
+#define DSBM_QUERYINSERTW 0x0064
+#define DSBM_QUERYINSERTA 0x0065
+#define DSBM_CHANGEIMAGESTATE 0x0066
+#define DSBM_HELP 0x0067
+#define DSBM_CONTEXTMENU 0x0068
+#ifdef UNICODE
+#define DSBM_QUERYINSERT DSBM_QUERYINSERTW
+#else
+#define DSBM_QUERYINSERT DSBM_QUERYINSERTA
+#endif
+/*--- Active Directory Reference - Active Directory Structures - Active Directory Display Structures */
+typedef struct _DOMAINDESC {
+	LPWSTR pszName;
+	LPWSTR pszPath;
+	LPWSTR pszNCName;
+	LPWSTR pszTrustParent;
+	LPWSTR pszObjectClass;
+	ULONG ulFlags;
+	BOOL fDownLevel;
+	struct _DOMAINDESC* pdChildList;
+	struct _DOMAINDESC* pdNextSibling;
+} DOMAIN_DESC,DOMAINDESC,*PDOMAIN_DESC,*LPDOMAINDESC;
+typedef struct {
+	DWORD dsSize;
+	DWORD dwCount;
+	DOMAINDESC aDomains[1];
+} DOMAINTREE,DOMAIN_TREE,*PDOMAIN_TREE,*LPDOMAINTREE;
+#define DSB_MAX_DISPLAYNAME_CHARS 64
+typedef struct {
+	DWORD cbStruct;
+	LPCWSTR pszADsPath;
+	LPCWSTR pszClass;
+	DWORD dwMask;
+	DWORD dwState;
+	DWORD dwStateMask;
+	CHAR szDisplayName[DSB_MAX_DISPLAYNAME_CHARS];
+	CHAR szIconLocation[MAX_PATH];
+	INT iIconResID;
+} DSBITEMA,*PDSBITEMA;
+typedef struct {
+	DWORD cbStruct;
+	LPCWSTR pszADsPath;
+	LPCWSTR pszClass;
+	DWORD dwMask;
+	DWORD dwState;
+	DWORD dwStateMask;
+	CHAR szDisplayName[DSB_MAX_DISPLAYNAME_CHARS];
+	CHAR szIconLocation[MAX_PATH];
+	INT iIconResID;
+} DSBITEMW,*PDSBITEMW;
+#define DSBF_STATE 0x00000001
+#define DSBF_ICONLOCATION 0x00000002
+#define DSBF_DISPLAYNAME 0x00000004
+#define DSBS_CHECKED 0x00000001
+#define DSBS_HIDDEN 0x00000002
+#define DSBS_ROOT 0x00000004
+typedef struct {
+	DWORD cbStruct;
+	HWND hwndOwner;
+	LPCSTR pszCaption;
+	LPCSTR pszTitle;
+	LPCWSTR pszRoot;
+	LPWSTR pszPath;
+	ULONG cchPath;
+	DWORD dwFlags;
+	BFFCALLBACK pfnCallback;
+	LPARAM lParam;
+	DWORD dwReturnFormat;
+	LPCWSTR pUserName;
+	LPCWSTR pPassword;
+	LPWSTR pszObjectClass;
+	ULONG cchObjectClass;
+} DSBROWSEINFOA,*PDSBROWSEINFOA;
+typedef struct {
+	DWORD cbStruct;
+	HWND hwndOwner;
+	LPCWSTR pszCaption;
+	LPCWSTR pszTitle;
+	LPCWSTR pszRoot;
+	LPWSTR pszPath;
+	ULONG cchPath;
+	DWORD dwFlags;
+	BFFCALLBACK pfnCallback;
+	LPARAM lParam;
+	DWORD dwReturnFormat;
+	LPCWSTR pUserName;
+	LPCWSTR pPassword;
+	LPWSTR pszObjectClass;
+	ULONG cchObjectClass;
+} DSBROWSEINFOW,*PDSBROWSEINFOW;
+#define DSBI_NOBUTTONS 0x00000001
+#define DSBI_NOLINES 0x00000002
+#define DSBI_NOLINESATROOT 0x00000004
+#define DSBI_CHECKBOXES 0x00000100
+#define DSBI_NOROOT 0x00010000
+#define DSBI_INCLUDEHIDDEN 0x00020000
+#define DSBI_EXPANDONOPEN 0x00040000
+#define DSBI_ENTIREDIRECTORY 0x00090000
+#define DSBI_RETURN_FORMAT 0x00100000
+#define DSBI_HASCREDENTIALS 0x00200000
+#define DSBI_IGNORETREATASLEAF 0x00400000
+#define DSBI_SIMPLEAUTHENTICATE 0x00800000
+#define DSBI_RETURNOBJECTCLASS 0x01000000
+#define DSBI_DONTSIGNSEAL 0x02000000
+typedef struct {
+	DWORD dwFlags;
+	CLSID clsidWizardDialog;
+	CLSID clsidWizardPrimaryPage;
+	DWORD cWizardExtensions;
+	CLSID aWizardExtensions[1];
+} DSCLASSCREATIONINFO,*LPDSCLASSCREATIONINFO;
+#define DSCCIF_HASWIZARDDIALOG 0x00000001
+#define DSCCIF_HASWIZARDPRIMARYPAGE 0x00000002
+typedef struct _DSDISPLAYSPECOPTIONS {
+	DWORD dwSize;
+	DWORD dwFlags;
+	DWORD offsetAttribPrefix;
+	DWORD offsetUserName;
+	DWORD offsetPassword;
+	DWORD offsetServer;
+	DWORD offsetServerConfigPath;
+} DSDISPLAYSPECOPTIONS,*PDSDISPLAYSPECOPTIONS,*LPDSDISPLAYSPECOPTIONS;
+#define DSDSOF_HASUSERANDSERVERINFO 0x00000001
+#define DSDSOF_SIMPLEAUTHENTICATE 0x00000002
+#define DSDSOF_DONTSIGNSEAL 0x00000004
+#define DSDSOF_DSAVAILABLE 0x40000000
+typedef struct {
+	DWORD dwFlags;
+	DWORD dwProviderFlags;
+	DWORD offsetName;
+	DWORD offsetClass;
+} DSOBJECT,*LPDSOBJECT;
+#define DSOBJECT_ISCONTAINER 0x00000001
+#define DSOBJECT_READONLYPAGES 0x80000000
+#define DSPROVIDER_UNUSED_0 0x00000001
+#define DSPROVIDER_UNUSED_1 0x00000002
+#define DSPROVIDER_UNUSED_2 0x00000004
+#define DSPROVIDER_UNUSED_3 0x00000008
+#define DSPROVIDER_ADVANCED 0x00000010
+typedef struct {
+	CLSID clsidNamespace;
+	UINT cItems;
+	DSOBJECT aObjects[1];
+} DSOBJECTNAMES,*LPDSOBJECTNAMES;
+typedef struct {
+	DWORD offsetString;
+} DSPROPERTYPAGEINFO,*LPDSPROPERTYPAGEINFO;
+#ifdef UNICODE
+typedef DSBITEMW DSBITEM,*PDSBITEM;
+typedef DSBROWSEINFOW DSBROWSEINFO,*PDSBROWSEINFO;
+#else
+typedef DSBITEMA DSBITEM,*PDSBITEM;
+typedef DSBROWSEINFOA DSBROWSEINFO,*PDSBROWSEINFO;
+#endif
+#endif /* (_WIN32_WINNT >= 0x0500) */
+
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/dsgetdc.h
===================================================================
--- Daodan/MinGW/include/dsgetdc.h	(revision 1046)
+++ Daodan/MinGW/include/dsgetdc.h	(revision 1046)
@@ -0,0 +1,121 @@
+/*
+ * dsgetdc.h - Active Directory
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain.  You may use,
+ * modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY.  ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED.  This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+#ifndef _DSGETDC_H
+#define _DSGETDC_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*--- Active Directory Reference - Active Directory Structures - Directory Service Structures */
+#if (_WIN32_WINNT >= 0x0500)
+#define DS_FORCE_REDISCOVERY 0x00000001
+#define DS_DIRECTORY_SERVICE_REQUIRED 0x00000010
+#define DS_DIRECTORY_SERVICE_PREFERRED 0x00000020
+#define DS_GC_SERVER_REQUIRED 0x00000040
+#define DS_PDC_REQUIRED 0x00000080
+#define DS_BACKGROUND_ONLY 0x00000100
+#define DS_IP_REQUIRED 0x00000200
+#define DS_KDC_REQUIRED 0x00000400
+#define DS_TIMESERV_REQUIRED 0x00000800
+#define DS_WRITABLE_REQUIRED 0x00001000
+#define DS_GOOD_TIMESERV_PREFERRED 0x00002000
+#define DS_AVOID_SELF 0x00004000
+#define DS_ONLY_LDAP_NEEDED 0x00008000
+#define DS_IS_FLAT_NAME 0x00010000
+#define DS_IS_DNS_NAME 0x00020000
+#define DS_RETURN_DNS_NAME 0x40000000
+#define DS_RETURN_FLAT_NAME 0x80000000
+typedef struct _DOMAIN_CONTROLLER_INFOA {
+	LPSTR DomainControllerName;
+	LPSTR DomainControllerAddress;
+	ULONG DomainControllerAddressType;
+	GUID DomainGuid;
+	LPSTR DomainName;
+	LPSTR DnsForestName;
+	ULONG Flags;
+	LPSTR DcSiteName;
+	LPSTR ClientSiteName;
+} DOMAIN_CONTROLLER_INFOA,*PDOMAIN_CONTROLLER_INFOA;
+typedef struct _DOMAIN_CONTROLLER_INFOW {
+	LPWSTR DomainControllerName;
+	LPWSTR DomainControllerAddress;
+	ULONG DomainControllerAddressType;
+	GUID DomainGuid;
+	LPWSTR DomainName;
+	LPWSTR DnsForestName;
+	ULONG Flags;
+	LPWSTR DcSiteName;
+	LPWSTR ClientSiteName;
+} DOMAIN_CONTROLLER_INFOW,*PDOMAIN_CONTROLLER_INFOW;
+#define DS_INET_ADDRESS 0x0001
+#define DS_NETBIOS_ADDRESS 0x0002
+#define DS_PDC_FLAG 0x00000001
+#define DS_GC_FLAG 0x00000004
+#define DS_DS_FLAG 0x00000010
+#define DS_KDC_FLAG 0x00000020
+#define DS_TIMESERV_FLAG 0x00000040
+#define DS_WRITABLE_FLAG 0x00000100
+#define DS_DNS_CONTROLLER_FLAG 0x20000000
+#define DS_DNS_DOMAIN_FLAG 0x40000000
+#define DS_DNS_FOREST_FLAG 0x80000000
+typedef struct _DS_DOMAIN_TRUSTSA {
+	LPSTR NetbiosDomainName;
+	LPSTR DnsDomainName;
+	ULONG Flags;
+	ULONG ParentIndex;
+	ULONG TrustType;
+	ULONG TrustAttributes;
+	PSID DomainSid;
+	GUID DomainGuid;
+} DS_DOMAIN_TRUSTSA,*PDS_DOMAIN_TRUSTSA;
+typedef struct _DS_DOMAIN_TRUSTSW {
+	LPWSTR NetbiosDomainName;
+	LPWSTR DnsDomainName;
+	ULONG Flags;
+	ULONG ParentIndex;
+	ULONG TrustType;
+	ULONG TrustAttributes;
+	PSID DomainSid;
+	GUID DomainGuid;
+} DS_DOMAIN_TRUSTSW,*PDS_DOMAIN_TRUSTSW;
+#define DS_DOMAIN_IN_FOREST 0x0001
+#define DS_DOMAIN_DIRECT_OUTBOUND 0x0002
+#define DS_DOMAIN_TREE_ROOT 0x0004
+#define DS_DOMAIN_PRIMARY 0x0008
+#define DS_DOMAIN_NATIVE_MODE 0x0010
+#define DS_DOMAIN_DIRECT_INBOUND 0x0020
+
+DWORD WINAPI DsGetDcNameW(LPCWSTR, LPCWSTR, GUID*, LPCWSTR, ULONG, PDOMAIN_CONTROLLER_INFOW*);
+DWORD WINAPI DsGetDcNameA(LPCSTR, LPCSTR, GUID*, LPCSTR, ULONG, PDOMAIN_CONTROLLER_INFOA*);
+
+#ifdef UNICODE
+typedef DOMAIN_CONTROLLER_INFOW DOMAIN_CONTROLLER_INFO,*PDOMAIN_CONTROLLER_INFO;
+typedef DS_DOMAIN_TRUSTSW DS_DOMAIN_TRUSTS,*PDS_DOMAIN_TRUSTS;
+#define DsGetDcName DsGetDcNameW
+#else
+typedef DOMAIN_CONTROLLER_INFOA DOMAIN_CONTROLLER_INFO,*PDOMAIN_CONTROLLER_INFO;
+typedef DS_DOMAIN_TRUSTSA DS_DOMAIN_TRUSTS,*PDS_DOMAIN_TRUSTS;
+#define DsGetDcName DsGetDcNameA
+#endif
+#endif /* (_WIN32_WINNT >= 0x0500) */
+
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/dshow.h
===================================================================
--- Daodan/MinGW/include/dshow.h	(revision 1046)
+++ Daodan/MinGW/include/dshow.h	(revision 1046)
@@ -0,0 +1,108 @@
+#ifndef _DSHOW_H
+#define _DSHOW_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#include <strmif.h>
+#include <amaudio.h>
+#include <amvideo.h>
+#include <evcode.h>
+#include <audevcod.h>
+#include <dvdevcod.h>
+#include <errors.h>
+#include <vptype.h>
+#include <ks.h>
+#include <vidcap.h>
+#include <bdatypes.h>
+#include <dvdmedia.h>
+#include <il21dec.h>
+#include <ddraw.h> /* DDSCAPS2, DDPIXELFORMAT */
+#ifndef _WINGDI_H
+#include <wingdi.h> /* BITMAPINFOHEADER */
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*--- DirectShow Reference - DirectShow Enumerated Types */
+typedef enum _AM_ASPECT_RATIO_MODE {
+	AM_ARMODE_STRETCHED,
+	AM_ARMODE_LETTER_BOX,
+	AM_ARMODE_CROP,
+	AM_ARMODE_STRETCHED_AS_PRIMARY
+} AM_ASPECT_RATIO_MODE;
+typedef enum _AM_WST_DRAWBGMODE {
+	AM_WST_DRAWBGMODE_Opaque,
+	AM_WST_DRAWBGMODE_Transparent
+} AM_WST_DRAWBGMODE,*PAM_WST_DRAWBGMODE;
+typedef enum _AM_WST_LEVEL {
+	AM_WST_LEVEL_1_5 = 0
+} AM_WST_LEVEL,*PAM_WST_LEVEL;
+typedef enum _AM_WST_SERVICE {
+	AM_WST_SERVICE_None = 0,
+	AM_WST_SERVICE_Text,
+	AM_WST_SERVICE_IDS,
+	AM_WST_SERVICE_Invalid
+} AM_WST_SERVICE,*PAM_WST_SERVICE;
+typedef enum _AM_WST_STATE {
+	AM_WST_STATE_Off = 0,
+	AM_WST_STATE_On
+} AM_WST_STATE,*PAM_WST_STATE;
+typedef enum _AM_WST_STYLE {
+	AM_WST_STYLE_None = 0,
+	AM_WST_STYLE_Invers
+} AM_WST_STYLE,*PAM_WST_STYLE;
+typedef enum {
+	AM_EXSEEK_CANSEEK= 1,
+	AM_EXSEEK_CANSCAN = 2,
+	AM_EXSEEK_MARKERSEEK = 4,
+	AM_EXSEEK_SCANWITHOUTCLOCK = 8,
+	AM_EXSEEK_NOSTANDARDREPAINT = 16,
+	AM_EXSEEK_BUFFERING = 32,
+	AM_EXSEEK_SENDS_VIDEOFRAMEREADY = 64
+} AMExtendedSeekingCapabilities;
+/*--- DirectShow Reference - DirectShow Structures */
+typedef struct _AM_WST_PAGE {
+	DWORD dwPageNr;
+	DWORD dwSubPageNr;
+	BYTE *pucPageData;
+} AM_WST_PAGE,*PAM_WST_PAGE;
+typedef struct _tag_AMVABeginFrameInfo{
+	DWORD dwDestSurfaceIndex;
+	LPVOID pInputData;
+	DWORD dwSizeInputData;
+	LPVOID pOutputData;
+	DWORD dwSizeOutputData;
+ } AMVABeginFrameInfo,*LPAMVABeginFrameInfo;
+typedef struct _tag_AMVACompBufferInfo{
+	DWORD dwNumCompBuffers;
+	DWORD dwWidthToCreate;
+	DWORD dwHeightToCreate;
+	DWORD dwBytesToAllocate;
+	DDSCAPS2 ddCompCaps;
+	DDPIXELFORMAT ddPixelFormat;
+} AMVACompBufferInfo,*LPAMVACompBufferInfo;
+typedef struct _tag_AMVAEndFrameInfo{
+	DWORD dwSizeMiscData;
+	LPVOID pMiscData;
+} AMVAEndFrameInfo,*LPAMVAEndFrameInfo;
+typedef struct _tag_AMVAInternalMemInfo{
+	DWORD dwScratchMemAlloc;
+} AMVAInternalMemInfo,*LPAMVAInternalMemInfo;
+typedef struct _tag_AMVAUncompBufferInfo{
+	DWORD dwMinNumSurfaces;
+	DWORD dwMaxNumSurfaces;
+	DDPIXELFORMAT ddUncompPixelFormat;
+} AMVAUncompBufferInfo,*LPAMVAUncompBufferInfo;
+ typedef struct _tag_AMVAUncompDataInfo{
+	DWORD dwUncompWidth;
+	DWORD dwUncompHeight;
+	DDPIXELFORMAT ddUncompPixelFormat;
+} AMVAUncompDataInfo,*LPAMVAUncompDataInfo;
+
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/dsquery.h
===================================================================
--- Daodan/MinGW/include/dsquery.h	(revision 1046)
+++ Daodan/MinGW/include/dsquery.h	(revision 1046)
@@ -0,0 +1,72 @@
+/*
+ * dsquery.h - Active Directory
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain.  You may use,
+ * modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY.  ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED.  This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+#ifndef _DSQUERY_H
+#define _DSQUERY_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*--- Active Directory Reference - Active Directory Structures - Active Directory Display Structures */
+#if (_WIN32_WINNT >= 0x0500)
+typedef struct {
+	DWORD dwFlags;
+	INT fmt;
+	INT cx;
+	INT idsName;
+	LONG offsetProperty;
+	DWORD dwReserved;
+} DSCOLUMN,*LPDSCOLUMN;
+#define DSCOLUMNPROP_ADSPATH -1
+#define DSCOLUMNPROP_OBJECTCLASS -2
+typedef struct {
+	DWORD cbStruct;
+	LONG cClasses;
+	DWORD offsetClass[1];
+} DSQUERYCLASSLIST,*LPDSQUERYCLASSLIST;
+typedef struct {
+	DWORD cbStruct;
+	DWORD dwFlags;
+	LPWSTR pDefaultScope;
+	LPWSTR pDefaultSaveLocation;
+	LPWSTR pUserName;
+	LPWSTR pPassword;
+	LPWSTR pServer;
+} DSQUERYINITPARAMS,*LPDSQUERYINITPARAMS;
+#define DSQPF_NOSAVE 0x00000001
+#define DSQPF_SAVELOCATION 0x00000002
+#define DSQPF_SHOWHIDDENOBJECTS 0x00000004
+#define DSQPF_ENABLEADMINFEATURES 0x00000008
+#define DSQPF_ENABLEADVANCEDFEATURES 0x00000010
+#define DSQPF_HASCREDENTIALS 0x00000020
+#define DSQPF_NOCHOOSECOLUMNS 0x00000040
+typedef struct {
+	DWORD cbStruct;
+	DWORD dwFlags;
+	HINSTANCE hInstance;
+	LONG offsetQuery;
+	LONG iColumns;
+	DWORD dwReserved;
+	DSCOLUMN aColumns[1];
+} DSQUERYPARAMS,*LPDSQUERYPARAMS;
+#endif /* (_WIN32_WINNT >= 0x0500) */
+
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/dsrole.h
===================================================================
--- Daodan/MinGW/include/dsrole.h	(revision 1046)
+++ Daodan/MinGW/include/dsrole.h	(revision 1046)
@@ -0,0 +1,75 @@
+/*
+ * dsrole.h - Active Directory
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain.  You may use,
+ * modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY.  ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED.  This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+#ifndef _DSROLE_H
+#define _DSROLE_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#if (_WIN32_WINNT >= 0x0500)
+/*--- Active Directory Reference - Active Directory Enumerations */
+typedef enum {
+	DsRole_RoleStandaloneWorkstation,
+	DsRole_RoleMemberWorkstation,
+	DsRole_RoleStandaloneServer,
+	DsRole_RoleMemberServer,
+	DsRole_RoleBackupDomainController,
+	DsRole_RolePrimaryDomainController
+} DSROLE_MACHINE_ROLE;
+typedef enum {
+	DsRoleOperationIdle,
+	DsRoleOperationActive,
+	DsRoleOperationNeedReboot
+} DSROLE_OPERATION_STATE;
+typedef enum {
+	DsRolePrimaryDomainInfoBasic,
+	DsRoleUpgradeStatus,
+	DsRoleOperationState
+} DSROLE_PRIMARY_DOMAIN_INFO_LEVEL;
+typedef enum {
+	DsRoleServerUnknown,
+	DsRoleServerPrimary,
+	DsRoleServerBackup
+} DSROLE_SERVER_STATE;
+/*--- Active Directory Reference - Active Directory Structures - Directory Service Structures */
+typedef struct {
+	DSROLE_OPERATION_STATE OperationState;
+} DSROLE_OPERATION_STATE_INFO;
+typedef struct _DSROLE_PRIMARY_DOMAIN_INFO_BASIC {
+	DSROLE_MACHINE_ROLE MachineRole;
+	ULONG Flags;
+	LPWSTR DomainNameFlat;
+	LPWSTR DomainNameDns;
+	LPWSTR DomainForestName;
+	GUID DomainGuid;
+} DSROLE_PRIMARY_DOMAIN_INFO_BASIC,*PDSROLE_PRIMARY_DOMAIN_INFO_BASIC;
+#define DSROLE_PRIMARY_DS_RUNNING 0x00000001
+#define DSROLE_PRIMARY_DS_MIXED_MODE 0x00000002
+#define DSROLE_UPGRADE_IN_PROGRESS 0x00000004
+#define DSROLE_PRIMARY_DOMAIN_GUID_PRESENT 0x01000000
+typedef struct _DSROLE_UPGRADE_STATUS_INFO {
+	ULONG OperationState;
+	DSROLE_SERVER_STATE PreviousServerState;
+} DSROLE_UPGRADE_STATUS_INFO,*PDSROLE_UPGRADE_STATUS_INFO;
+#endif /* (_WIN32_WINNT >= 0x0500) */
+
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/dvdevcod.h
===================================================================
--- Daodan/MinGW/include/dvdevcod.h	(revision 1046)
+++ Daodan/MinGW/include/dvdevcod.h	(revision 1046)
@@ -0,0 +1,76 @@
+#ifndef _DVDEVCOD_H
+#define _DVDEVCOD_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define EC_DVD_ANGLE_CHANGE 0x0106
+#define EC_DVD_ANGLES_AVAILABLE 0x0113
+#define EC_DVD_AUDIO_STREAM_CHANGE 0x0104
+#define EC_DVD_BUTTON_AUTO_ACTIVATED 0x0115
+#define EC_DVD_BUTTON_CHANGE 0x0107
+#define EC_DVD_CHAPTER_AUTOSTOP 0x010E
+#define EC_DVD_CHAPTER_START 0x0103
+#define EC_DVD_CMD_START 0x0116
+#define EC_DVD_CMD_END 0x0117
+#define EC_DVD_CURRENT_HMSF_TIME 0x011A
+#define EC_DVD_CURRENT_TIME 0x010B
+#define EC_DVD_DISC_EJECTED 0x0118
+#define EC_DVD_DISC_INSERTED 0x0119
+#define EC_DVD_DOMAIN_CHANGE 0x0101
+#define EC_DVD_ERROR 0x010C
+#define EC_DVD_KARAOKE_MODE 0x011B
+#define EC_DVD_NO_FP_PGC 0x010F
+#define EC_DVD_PARENTAL_LEVEL_CHANGE 0x0111
+#define EC_DVD_PLAYBACK_RATE_CHANGE 0x0110
+#define EC_DVD_PLAYBACK_STOPPED 0x0112
+#define EC_DVD_PLAYPERIOD_AUTOSTOP 0x0114
+#define EC_DVD_STILL_OFF 0x010A
+#define EC_DVD_STILL_ON 0x0109
+#define EC_DVD_SUBPICTURE_STREAM_CHANGE 0x0105
+#define EC_DVD_TITLE_CHANGE 0x0102
+#define EC_DVD_VALID_UOPS_CHANGE 0x0108
+#define EC_DVD_WARNING 0x010D
+typedef enum _tagDVD_ERROR {
+	DVD_ERROR_Unexpected = 1,
+	DVD_ERROR_CopyProtectFail = 2,
+	DVD_ERROR_InvalidDVD1_0Disc = 3,
+	DVD_ERROR_InvalidDiscRegion = 4,
+	DVD_ERROR_LowParentalLevel = 5,
+	DVD_ERROR_MacrovisionFail = 6,
+	DVD_ERROR_IncompatibleSystemAndDecoderRegions = 7,
+	DVD_ERROR_IncompatibleDiscAndDecoderRegions = 8
+} DVD_ERROR;
+typedef enum _tagDVD_PB_STOPPED {
+	DVD_PB_STOPPED_Other = 0,
+	DVD_PB_STOPPED_NoBranch = 1,
+	DVD_PB_STOPPED_NoFirstPlayDomain = 2,
+	DVD_PB_STOPPED_StopCommand = 3,
+	DVD_PB_STOPPED_Reset = 4,
+	DVD_PB_STOPPED_DiscEjected = 5,
+	DVD_PB_STOPPED_IllegalNavCommand = 6,
+	DVD_PB_STOPPED_PlayPeriodAutoStop = 7,
+	DVD_PB_STOPPED_PlayChapterAutoStop = 8,
+	DVD_PB_STOPPED_ParentalFailure = 9,
+	DVD_PB_STOPPED_RegionFailure = 10,
+	DVD_PB_STOPPED_MacrovisionFailure = 11,
+	DVD_PB_STOPPED_DiscReadError = 12,
+	DVD_PB_STOPPED_CopyProtectFailure = 13
+} DVD_PB_STOPPED;
+typedef enum _tagDVD_WARNING {
+	DVD_WARNING_InvalidDVD1_0Disc = 1,
+	DVD_WARNING_FormatNotSupported = 2,
+	DVD_WARNING_IllegalNavCommand = 3,
+	DVD_WARNING_Open = 4,
+	DVD_WARNING_Seek = 5,
+	DVD_WARNING_Read = 6
+} DVD_WARNING;
+
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/dvdmedia.h
===================================================================
--- Daodan/MinGW/include/dvdmedia.h	(revision 1046)
+++ Daodan/MinGW/include/dvdmedia.h	(revision 1046)
@@ -0,0 +1,101 @@
+#ifndef _DVDMEDIA_H
+#define _DVDMEDIA_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#ifndef _STRMIF_H
+#include <strmif.h>
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*--- DirectShow Reference - DirectShow Structures - AM_SAMPLE2_PROPERTIES Structure */
+#define AM_VIDEO_FLAG_FIELD_MASK 0x0003
+#define AM_VIDEO_FLAG_INTERLEAVED_FRAME 0x0000
+#define AM_VIDEO_FLAG_FIELD1 0x0001
+#define AM_VIDEO_FLAG_FIELD2 0x0002
+#define AM_VIDEO_FLAG_FIELD1FIRST 0x0004
+#define AM_VIDEO_FLAG_WEAVE 0x0008
+#define AM_VIDEO_FLAG_REPEAT_FIELD 0x0040
+/*--- DirectShow Reference - DirectShow Enumerated Types */
+enum AM_MPEG2Level {
+	AM_MPEG2Level_Low = 1,
+	AM_MPEG2Level_Main,
+	AM_MPEG2Level_High1440,
+	AM_MPEG2Level_High
+};
+enum AM_MPEG2Profile {
+	AM_MPEG2Profile_Simple = 1,
+	AM_MPEG2Profile_Main,
+	AM_MPEG2Profile_SNRScalable,
+	AM_MPEG2Profile_SpatiallyScalable,
+	AM_MPEG2Profile_High
+};
+typedef enum {
+	AM_RATE_ChangeRate = 1,
+	AM_RATE_FullDataRateMax = 2,
+	AM_RATE_ReverseDecode = 3,
+	AM_RATE_DecoderPosition = 4,
+	AM_RATE_DecoderVersion = 5
+} AM_PROPERTY_DVD_RATE_CHANGE;
+/*--- DirectShow Reference - DirectShow Structures */
+typedef struct tagVIDEOINFOHEADER2 {
+	RECT rcSource;
+	RECT rcTarget;
+	DWORD dwBitRate;
+	DWORD dwBitErrorRate;
+	REFERENCE_TIME AvgTimePerFrame;
+	DWORD dwInterlaceFlags;
+	DWORD dwCopyProtectFlags;
+	DWORD dwPictAspectRatioX;
+	DWORD dwPictAspectRatioY;
+	union {
+		DWORD dwControlFlags;
+		DWORD dwReserved1;
+	};
+	DWORD dwReserved2;
+	BITMAPINFOHEADER bmiHeader;
+} VIDEOINFOHEADER2;
+#define AMINTERLACE_IsInterlaced 0x00000001
+#define AMINTERLACE_1FieldPerSample 0x00000002
+#define AMINTERLACE_Field1First 0x00000004
+#define AMINTERLACE_FieldPatField1Only 0x00000000
+#define AMINTERLACE_FieldPatField2Only 0x00000010
+#define AMINTERLACE_FieldPatBothRegular 0x00000020
+#define AMINTERLACE_FieldPatBothIrregular 0x00000030
+#define AMINTERLACE_DisplayModeBobOnly 0x00000000
+#define AMINTERLACE_DisplayModeWeaveOnly 0x00000040
+#define AMINTERLACE_DisplayModeBobOrWeave 0x00000080
+#define AMINTERLACE_FieldPatternMask 0x00000030
+#define AMINTERLACE_DisplayModeMask 0x000000C0
+#define AMCONTROL_USED 0x00000001
+#define AMCONTROL_PAD_TO_4x3 0x00000002
+#define AMCONTROL_PAD_TO_16x9 0x00000004
+#define AMCONTROL_COLORINFO_PRESENT 0x00000008
+typedef struct tagMPEG2VIDEOINFO {
+	VIDEOINFOHEADER2 hdr;
+	DWORD dwStartTimeCode;
+	DWORD cbSequenceHeader;
+	DWORD dwProfile;
+	DWORD dwLevel;
+	DWORD dwFlags;
+	DWORD dwSequenceHeader[1];
+} MPEG2VIDEOINFO;
+#define AMMPEG2_DoPanScan 0x00000001
+#define AMMPEG2_DVDLine21Field1 0x00000002
+#define AMMPEG2_DVDLine21Field2 0x00000004
+#define AMMPEG2_SourceIsLetterboxed 0x00000008
+#define AMMPEG2_FilmCameraMode 0x00000010
+#define AMMPEG2_LetterboxAnalogOut 0x00000020
+#define AMMPEG2_DSS_UserData 0x00000040
+#define AMMPEG2_DVB_UserData 0x00000080
+#define AMMPEG2_27MhzTimebase 0x00000100
+#define AMMPEG2_WidescreenAnalogOut 0x00000200
+
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/dxerr8.h
===================================================================
--- Daodan/MinGW/include/dxerr8.h	(revision 1046)
+++ Daodan/MinGW/include/dxerr8.h	(revision 1046)
@@ -0,0 +1,53 @@
+/*
+
+	dxerr8.h - Header file for the DirectX 8 Error API
+
+	Written by Filip Navara <xnavara@volny.cz>
+
+	This library is distributed in the hope that it will be useful,
+	but WITHOUT ANY WARRANTY; without even the implied warranty of
+	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+*/
+
+#ifndef _DXERR8_H
+#define _DXERR8_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+const char *WINAPI DXGetErrorString8A(HRESULT);
+const WCHAR *WINAPI DXGetErrorString8W(HRESULT);
+const char* WINAPI DXGetErrorDescription8A(HRESULT);
+const WCHAR* WINAPI DXGetErrorDescription8W(HRESULT);
+HRESULT WINAPI DXTraceA(const char*,DWORD,HRESULT,const char*,BOOL);
+HRESULT WINAPI DXTraceW(const char*,DWORD,HRESULT,const WCHAR*,BOOL);
+
+#ifdef UNICODE
+#define DXGetErrorString8 DXGetErrorString8W
+#define DXGetErrorDescription8 DXGetErrorDescription8W
+#define DXTrace DXTraceW
+#else
+#define DXGetErrorString8 DXGetErrorString8A
+#define DXGetErrorDescription8 DXGetErrorDescription8A
+#define DXTrace DXTraceA
+#endif
+
+#if defined(DEBUG) || defined(_DEBUG)
+#define DXTRACE_MSG(str)	DXTrace(__FILE__,(DWORD)__LINE__,0,str,FALSE)
+#define DXTRACE_ERR(str,hr)	DXTrace(__FILE__,(DWORD)__LINE__,hr,str,TRUE)
+#define DXTRACE_ERR_NOMSGBOX(str,hr)	DXTrace(__FILE__,(DWORD)__LINE__,hr,str,FALSE)
+#else
+#define DXTRACE_MSG(str)	(0L)
+#define DXTRACE_ERR(str,hr)	(hr)
+#define DXTRACE_ERR_NOMSGBOX(str,hr)	(hr)
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/dxerr9.h
===================================================================
--- Daodan/MinGW/include/dxerr9.h	(revision 1046)
+++ Daodan/MinGW/include/dxerr9.h	(revision 1046)
@@ -0,0 +1,53 @@
+/*
+
+	dxerr9.h - Header file for the DirectX 9 Error API
+
+	Written by Filip Navara <xnavara@volny.cz>
+
+	This library is distributed in the hope that it will be useful,
+	but WITHOUT ANY WARRANTY; without even the implied warranty of
+	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+*/
+
+#ifndef _DXERR9_H
+#define _DXERR9_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+const char *WINAPI DXGetErrorString9A(HRESULT);
+const WCHAR *WINAPI DXGetErrorString9W(HRESULT);
+const char* WINAPI DXGetErrorDescription9A(HRESULT);
+const WCHAR* WINAPI DXGetErrorDescription9W(HRESULT);
+HRESULT WINAPI DXTraceA(const char*,DWORD,HRESULT,const char*,BOOL);
+HRESULT WINAPI DXTraceW(const char*,DWORD,HRESULT,const WCHAR*,BOOL);
+
+#ifdef UNICODE
+#define DXGetErrorString9 DXGetErrorString9W
+#define DXGetErrorDescription9 DXGetErrorDescription9W
+#define DXTrace DXTraceW
+#else
+#define DXGetErrorString9 DXGetErrorString9A
+#define DXGetErrorDescription9 DXGetErrorDescription9A
+#define DXTrace DXTraceA
+#endif
+
+#if defined(DEBUG) || defined(_DEBUG)
+#define DXTRACE_MSG(str)	DXTrace(__FILE__,(DWORD)__LINE__,0,str,FALSE)
+#define DXTRACE_ERR(str,hr)	DXTrace(__FILE__,(DWORD)__LINE__,hr,str,FALSE)
+#define DXTRACE_ERR_MSGBOX(str,hr)	DXTrace(__FILE__,(DWORD)__LINE__,hr,str,TRUE)
+#else
+#define DXTRACE_MSG(str)	(0L)
+#define DXTRACE_ERR(str,hr)	(hr)
+#define DXTRACE_ERR_MSGBOX(str,hr)	(hr)
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/edevdefs.h
===================================================================
--- Daodan/MinGW/include/edevdefs.h	(revision 1046)
+++ Daodan/MinGW/include/edevdefs.h	(revision 1046)
@@ -0,0 +1,346 @@
+#ifndef _EDEVDEFS_H
+#define _EDEVDEFS_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#define ED_TOP 0x00000001
+#define ED_MIDDLE 0x00000002
+#define ED_BOTTOM 0x00000004
+#define ED_LEFT 0x00000100
+#define ED_CENTER 0x00000200
+#define ED_RIGHT 0x00000400
+#define ED_DEVCAP_CAN_RECORD 0x00001001
+#define ED_DEVCAP_CAN_RECORD_STROBE 0x00001002
+#define ED_DEVCAP_HAS_AUDIO 0x00001003
+#define ED_DEVCAP_HAS_VIDEO  0x00001004
+#define ED_DEVCAP_USES_FILES 0x00001005
+#define ED_DEVCAP_CAN_SAVE 0x00001006
+#define ED_DEVCAP_DEVICE_TYPE 0x00001007
+#define ED_DEVTYPE_VCR 0x00001008
+#define ED_DEVTYPE_LASERDISK 0x00001009
+#define ED_DEVTYPE_ATR 0x0000100A
+#define ED_DEVTYPE_DDR 0x0000100B
+#define ED_DEVTYPE_ROUTER 0x0000100C
+#define ED_DEVTYPE_KEYER 0x0000100D
+#define ED_DEVTYPE_MIXER_VIDEO 0x000010OE
+#define ED_DEVTYPE_DVE 0x000010OF
+#define ED_DEVTYPE_WIPEGEN 0x00001010
+#define ED_DEVTYPE_MIXER_AUDIO 0x00001011
+#define ED_DEVTYPE_CG 0x00001012
+#define ED_DEVTYPE_TBC 0x00001013
+#define ED_DEVTYPE_TCG 0x00001014
+#define ED_DEVTYPE_GPI 0x00001015
+#define ED_DEVTYPE_JOYSTICK 0x00001016
+#define ED_DEVTYPE_KEYBOARD 0x00001017
+#define ED_DEVCAP_EXTERNAL_DEVICE_ID 0x00001018
+#define ED_DEVCAP_TIMECODE_READ 0x00001019
+#define ED_DEVCAP_TIMECODE_WRITE 0x0000101A
+#define ED_DEVCAP_CTLTRK_READ 0x0000101B
+#define ED_DEVCAP_INDEX_READ 0x0000101C
+#define ED_DEVCAP_PREROLL 0x0000101D
+#define ED_DEVCAP_POSTROLL 0x0000101E
+#define ED_DEVCAP_SYNC_ACCURACY 0x0000101F
+#define ED_SYNCACC_PRECISE 0x00001020
+#define ED_SYNCACC_FRAME 0x00001021
+#define ED_SYNCACC_ROUGH 0x00001022
+#define ED_DEVCAP_NORMAL_RATE 0x00001023
+#define ED_RATE_24 0x00001024
+#define ED_RATE_25 0x00001025
+#define ED_RATE_2997 0x00001026
+#define ED_RATE_30 0x00001027
+#define ED_DEVCAP_CAN_PREVIEW 0x00001028
+#define ED_DEVCAP_CAN_MONITOR_SOURCES 0x00001029
+#define ED_DEVCAP_CAN_TEST 0x0000102A
+#define ED_DEVCAP_VIDEO_INPUTS 0x0000102B
+#define ED_DEVCAP_AUDIO_INPUTS 0x0000102C
+#define ED_DEVCAP_NEEDS_CALIBRATING 0x0000102D
+#define ED_DEVCAP_SEEK_TYPE 0x0000102E
+#define ED_SEEK_PERFECT 0x0000102F
+#define ED_SEEK_FAST 0x00001030
+#define ED_SEEK_SLOW 0x00001031
+#define ED_POWER_ON 0x00001032
+#define ED_POWER_OFF 0x00001033
+#define ED_POWER_STANDBY 0x00001034
+#define ED_ACTIVE 0x00001035
+#define ED_INACTIVE 0x00001036
+#define ED_ALL 0x00001037
+#define ED_TEST 0x00001038
+#define ED_TRANSCAP_CAN_EJECT 0x00001064
+#define ED_TRANSCAP_CAN_BUMP_PLAY 0x00001065
+#define ED_TRANSCAP_CAN_PLAY_BACKWARDS 0x00001066
+#define ED_TRANSCAP_CAN_SET_EE 0x00001067
+#define ED_TRANSCAP_CAN_SET_PB 0x00001068
+#define ED_TRANSCAP_CAN_DELAY_VIDEO_IN 0x00001069
+#define ED_TRANSCAP_CAN_DELAY_VIDEO_OUT 0x0000106A
+#define ED_TRANSCAP_CAN_DELAY_AUDIO_IN 0x0000106B
+#define ED_TRANSCAP_CAN_DELAY_AUDIO_OUT 0x0000106C
+#define ED_TRANSCAP_FWD_VARIABLE_MAX 0x0000106D
+#define ED_TRANSCAP_REV_VARIABLE_MAX 0x0000106E
+#define ED_TRANSCAP_NUM_AUDIO_TRACKS 0x0000106F
+#define ED_TRANSCAP_LTC_TRACK 0x00001070
+#define ED_TRANSCAP_NEEDS_TBC 0x00001071
+#define ED_TRANSCAP_NEEDS_CUEING 0x00001072
+#define ED_TRANSCAP_CAN_INSERT 0x00001073
+#define ED_TRANSCAP_CAN_ASSEMBLE 0x00001074
+#define ED_TRANSCAP_FIELD_STEP 0x00001075
+#define ED_TRANSCAP_CLOCK_INC_RATE 0x00001076
+#define ED_TRANSCAP_CAN_DETECT_LENGTH 0x00001077
+#define ED_TRANSCAP_CAN_FREEZE 0x00001078
+#define ED_TRANSCAP_HAS_TUNER 0x00001079
+#define ED_TRANSCAP_HAS_TIMER 0x0000107A
+#define ED_TRANSCAP_HAS_CLOCK 0x0000107B
+#define ED_MEDIA_SPIN_UP 0x00001082
+#define ED_MEDIA_SPIN_DOWN 0x00001083
+#define ED_MEDIA_UNLOAD 0x00001084
+#define ED_MODE_PLAY 0x000010C8
+#define ED_MODE_STOP 0x000010C9
+#define ED_MODE_FREEZE 0x000010CA
+#define ED_MODE_THAW 0x000010CB
+#define ED_MODE_FF 0x000010CC
+#define ED_MODE_REW 0x000010CD
+#define ED_MODE_RECORD 0x000010CE
+#define ED_MODE_RECORD_STROBE 0x000010CF
+#define ED_MODE_STEP 0x000010D0
+#define ED_MODE_STEP_FWD 0x000010D0
+#define ED_MODE_SHUTTLE 0x000010D1
+#define ED_MODE_EDIT_CUE 0x000010D2
+#define ED_MODE_VAR_SPEED 0x000010D3
+#define ED_MODE_PERFORM 0x000010D4
+#define ED_MODE_LINK_ON 0x00001118
+#define ED_MODE_LINK_OFF 0x00001119
+#define ED_TCG_TIMECODE_TYPE 0x00001190
+#define ED_TCG_SMPTE_LTC 0x00001191
+#define ED_TCG_SMPTE_VITC 0x00001192
+#define ED_TCG_MIDI_QF 0x00001193
+#define ED_TCG_MIDI_FULL 0x00001194
+#define ED_TCG_FRAMERATE 0x00001195
+#define ED_TCG_SYNC_SOURCE 0x0000119A
+#define ED_TCG_VIDEO 0x0000119B
+#define ED_TCG_READER 0x0000119C
+#define ED_TCG_FREE 0x0000119D
+#define ED_TCG_REFERENCE_SOURCE 0x0000119E
+#define ED_TCR_SOURCE 0x000011A0
+#define ED_TCR_LTC 0x000011A1
+#define ED_TCR_VITC 0x000011A2
+#define ED_TCR_CT 0x000011A3
+#define ED_TCR_FTC 0x000011A4
+#define ED_TCR_LAST_VALUE 0x000011A5
+#define ED_TCD_SOURCE 0x000011A6
+#define ED_TCR 0x000011A7
+#define ED_TCG 0x000011A8
+#define ED_TCD_SIZE 0x000011A9
+#define ED_SMALL 0x000011AA
+#define ED_MED 0x000011AB
+#define ED_LARGE 0x000011AC
+#define ED_TCD_POSITION 0x000011AD
+#define ED_TCD_INTENSITY 0x000011B4
+#define ED_HIGH 0x000011B5
+#define ED_LOW 0x000011B6
+#define ED_TCD_TRANSPARENCY 0x000011B7
+#define ED_TCD_INVERT 0x000011B8
+#define ED_MODE 0x000011F4
+#define ED_ERROR 0x000011F5
+#define ED_LOCAL 0x000011F6
+#define ED_RECORD_INHIBIT 0x000011F7
+#define ED_SERVO_LOCK 0x000011F8
+#define ED_MEDIA_PRESENT 0x000011F9
+#define ED_MEDIA_LENGTH 0x000011FA
+#define ED_MEDIA_SIZE 0x000011FB
+#define ED_MEDIA_TRACK_COUNT 0x000011FC
+#define ED_MEDIA_TRACK_LENGTH 0x000011FD
+#define ED_MEDIA_SIDE 0x000011FE
+#define ED_MEDIA_TYPE 0x000011FF
+#define ED_MEDIA_VHS 0x00001200
+#define ED_MEDIA_SVHS 0x00001201
+#define ED_MEDIA_HI8 0x00001202
+#define ED_MEDIA_UMATIC 0x00001203
+#define ED_MEDIA_DVC 0x00001204
+#define ED_MEDIA_1_INCH 0x00001205
+#define ED_MEDIA_D1 0x00001206
+#define ED_MEDIA_D2 0x00001207
+#define ED_MEDIA_D3 0x00001208
+#define ED_MEDIA_D5 0x00001209
+#define ED_MEDIA_DBETA 0x0000120A
+#define ED_MEDIA_BETA 0x0000120B
+#define ED_MEDIA_8MM 0x0000120C
+#define ED_MEDIA_DDR 0x0000120D
+#define ED_MEDIA_OTHER 0x0000120E
+#define ED_MEDIA_CLV 0x0000120F
+#define ED_MEDIA_CAV 0x00001210
+#define ED_MEDIA_POSITION 0x00001211
+#define ED_LINK_MODE 0x00001212
+#define ED_TRANSBASIC_TIME_FORMAT 0x0000121C
+#define ED_FORMAT_MILLISECONDS 0x0000121D
+#define ED_FORMAT_FRAMES 0x0000121E
+#define ED_FORMAT_REFERENCE_TIME 0x0000121F
+#define ED_FORMAT_HMSF 0x00001223
+#define ED_FORMAT_TMSF 0x00001224
+#define ED_TRANSBASIC_TIME_REFERENCE 0x00001225
+#define ED_TIMEREF_TIMECODE 0x00001226
+#define ED_TIMEREF_CONTROL_TRACK 0x00001227
+#define ED_TIMEREF_INDEX 0x00001228
+#define ED_TRANSBASIC_SUPERIMPOSE 0x00001229
+#define ED_TRANSBASIC_END_STOP_ACTION 0x0000122A
+#define ED_TRANSBASIC_RECORD_FORMAT 0x0000122B
+#define ED_RECORD_FORMAT_SP 0x0000122C
+#define ED_RECORD_FORMAT_LP 0x0000122D
+#define ED_RECORD_FORMAT_EP 0x0000122E
+#define ED_TRANSBASIC_STEP_COUNT 0x0000122F
+#define ED_TRANSBASIC_STEP_UNIT 0x00001230
+#define ED_STEP_FIELD 0x00001231
+#define ED_STEP_FRAME 0x00001232
+#define ED_STEP_3_2 0x00001233
+#define ED_TRANSBASIC_PREROLL 0x00001234
+#define ED_TRANSBASIC_RECPREROLL 0x00001235
+#define ED_TRANSBASIC_POSTROLL 0x00001236
+#define ED_TRANSBASIC_EDIT_DELAY 0x00001237
+#define ED_TRANSBASIC_PLAYTC_DELAY 0x00001238
+#define ED_TRANSBASIC_RECTC_DELAY 0x00001239
+#define ED_TRANSBASIC_EDIT_FIELD 0x0000123A
+#define ED_TRANSBASIC_FRAME_SERVO 0x0000123B
+#define ED_TRANSBASIC_CF_SERVO 0x0000123C
+#define ED_TRANSBASIC_SERVO_REF 0x0000123D
+#define ED_REF_EXTERNAL 0x0000123E
+#define ED_REF_INPUT 0x0000123F
+#define ED_REF_INTERNAL 0x00001240
+#define ED_REF_AUTO 0x00001241
+#define ED_TRANSBASIC_WARN_GL 0x00001242
+#define ED_TRANSBASIC_SET_TRACKING 0x00001243
+#define ED_TRACKING_PLUS 0x00001244
+#define ED_TRACKING_MINUS 0x00001245
+#define ED_TRACKING_RESET 0x00001246
+#define ED_TRANSBASIC_SET_FREEZE_TIMEOUT 0x00001247
+#define ED_TRANSBASIC_VOLUME_NAME 0x00001248
+#define ED_TRANSBASIC_BALLISTIC_1 0x00001249
+#define ED_TRANSBASIC_BALLISTIC_2 0x0000124A
+#define ED_TRANSBASIC_BALLISTIC_3 0x0000124B
+#define ED_TRANSBASIC_BALLISTIC_4 0x0000124C
+#define ED_TRANSBASIC_BALLISTIC_5 0x0000124D
+#define ED_TRANSBASIC_BALLISTIC_6 0x0000124E
+#define ED_TRANSBASIC_BALLISTIC_7 0x0000124F
+#define ED_TRANSBASIC_BALLISTIC_8 0x00001250
+#define ED_TRANSBASIC_BALLISTIC_9 0x00001251
+#define ED_TRANSBASIC_BALLISTIC_10 0x00001252
+#define ED_TRANSBASIC_BALLISTIC_11 0x00001253
+#define ED_TRANSBASIC_BALLISTIC_12 0x00001254
+#define ED_TRANSBASIC_BALLISTIC_13 0x00001255
+#define ED_TRANSBASIC_BALLISTIC_14 0x00001256
+#define ED_TRANSBASIC_BALLISTIC_15 0x00001257
+#define ED_TRANSBASIC_BALLISTIC_16 0x00001258
+#define ED_TRANSBASIC_BALLISTIC_17 0x00001259
+#define ED_TRANSBASIC_BALLISTIC_18 0x0000125A
+#define ED_TRANSBASIC_BALLISTIC_19 0x0000125B
+#define ED_TRANSBASIC_BALLISTIC_20 0x0000125C
+#define ED_TRANSBASIC_SETCLOCK 0x0000125D
+#define ED_TRANSBASIC_SET_COUNTER_FORMAT 0x0000125E
+#define ED_TRANSBASIC_SET_COUNTER_VALUE 0x0000125F
+#define ED_TRANSBASIC_SETTUNER_CH_UP 0x00001260
+#define ED_TRANSBASIC_SETTUNER_CH_DN 0x00001261
+#define ED_TRANSBASIC_SETTUNER_SK_UP 0x00001262
+#define ED_TRANSBASIC_SETTUNER_SK_DN 0x00001263
+#define ED_TRANSBASIC_SETTUNER_CH 0x00001264
+#define ED_TRANSBASIC_SETTUNER_NUM 0x00001265
+#define ED_TRANSBASIC_SETTIMER_EVENT 0x00001266
+#define ED_TRANSBASIC_SETTIMER_STARTDAY 0x00001267
+#define ED_TRANSBASIC_SETTIMER_STARTTIME 0x00001268
+#define ED_TRANSBASIC_SETTIMER_STOPDAY 0x00001269
+#define ED_TRANSBASIC_SETTIMER_STOPTIME 0x0000126A
+#define ED_TRANSVIDEO_SET_OUTPUT 0x00001276
+#define ED_E2E 0x00001277
+#define ED_PLAYBACK 0x00001278
+#define ED_OFF 0x00001279
+#define ED_TRANSVIDEO_SET_SOURCE 0x0000127A
+#define ED_TRANSAUDIO_ENABLE_OUTPUT 0x00001280
+#define ED_TRANSAUDIO_ENABLE_RECORD 0x00001282
+#define ED_TRANSAUDIO_ENABLE_SELSYNC 0x00001283
+#define ED_TRANSAUDIO_SET_SOURCE 0x00001284
+#define ED_TRANSAUDIO_SET_MONITOR 0x00001285
+#define ED_INVALID 0x0000128C
+#define ED_EXECUTING 0x0000128D
+#define ED_REGISTER 0x0000128E
+#define ED_DELETE 0x0000128F
+#define ED_EDIT_HEVENT 0x00001290
+#define ED_EDIT_TEST 0x00001291
+#define ED_EDIT_IMMEDIATE 0x00001292
+#define ED_EDIT_MODE 0x00001293
+#define ED_EDIT_MODE_ASSEMBLE 0x00001294
+#define ED_EDIT_MODE_INSERT 0x00001295
+#define ED_EDIT_MODE_CRASH_RECORD 0x00001296
+#define ED_EDIT_MODE_BOOKMARK_TIME 0x00001297
+#define ED_EDIT_MODE_BOOKMARK_CHAPTER 0x00001298
+#define ED_EDIT_MASTER 0x0000129A
+#define ED_EDIT_TRACK 0x0000129B
+#define ED_EDIT_SRC_INPOINT 0x0000129C
+#define ED_EDIT_SRC_OUTPOINT 0x0000129D
+#define ED_EDIT_REC_INPOINT 0x0000129E
+#define ED_EDIT_REC_OUTPOINT 0x0000129F
+#define ED_EDIT_REHEARSE_MODE 0x000012A0
+#define ED_EDIT_BVB 0x000012A1
+#define ED_EDIT_VBV 0x000012A2
+#define ED_EDIT_VVV 0x000012A3
+#define ED_EDIT_PERFORM 0x000012A4
+#define ED_EDIT_ABORT 0x000012A5
+#define ED_EDIT_TIMEOUT 0x000012A6
+#define ED_EDIT_SEEK 0x000012A7
+#define ED_EDIT_SEEK_EDIT_IN 0x000012A9
+#define ED_EDIT_SEEK_EDIT_OUT 0x000012AA
+#define ED_EDIT_SEEK_PREROLL 0x000012AB
+#define ED_EDIT_SEEK_PREROLL_CT 0x000012AC
+#define ED_EDIT_SEEK_BOOKMARK 0x000012AD
+#define ED_EDIT_OFFSET 0x000012AE
+#define ED_ERR_DEVICE_NOT_READY 0x000012BC
+#define ED_TRANSCAP_FWD_VARIABLE_MIN 0x00001320
+#define ED_TRANSCAP_REV_VARIABLE_MIN 0x00001321
+#define ED_TRANSCAP_FWD_SHUTTLE_MAX 0x00001322
+#define ED_TRANSCAP_FWD_SHUTTLE_MIN 0x00001323
+#define ED_TRANSCAP_REV_SHUTTLE_MAX 0x00001324
+#define ED_TRANSCAP_REV_SHUTTLE_MIN 0x00001325
+#define ED_TRANSCAP_MULTIPLE_EDITS 0x00001326
+#define ED_TRANSCAP_IS_MASTER 0x00001327
+#define ED_MODE_RECORD_FREEZE 0x00001328
+#define ED_MODE_STEP_REV 0x00001329
+#define ED_MODE_NOTIFY_ENABLE 0x0000132A
+#define ED_MODE_NOTIFY_DISABLE 0x0000132B
+#define ED_MODE_SHOT_SEARCH 0x0000132C
+#define ED_MEDIA_SX 0x0000132D
+#define ED_TRANSCAP_HAS_DT 0x0000132E
+#define ED_EDIT_PREREAD 0x0000132F
+#define ED_AUDIO_1 0x00000001
+#define ED_AUDIO_2 0x00000002
+#define ED_AUDIO_3 0x00000004
+#define ED_AUDIO_4 0x00000008
+#define ED_AUDIO_5 0x00000010
+#define ED_AUDIO_6 0x00000020
+#define ED_AUDIO_7 0x00000040
+#define ED_AUDIO_8 0x00000080
+#define ED_AUDIO_9 0x00000100
+#define ED_AUDIO_10 0x00000200
+#define ED_AUDIO_11 0x00000400
+#define ED_AUDIO_12 0x00000800
+#define ED_AUDIO_13 0x00001000
+#define ED_AUDIO_14 0x00002000
+#define ED_AUDIO_15 0x00004000
+#define ED_AUDIO_16 0x00008000
+#define ED_AUDIO_17 0x00010000
+#define ED_AUDIO_18 0x00020000
+#define ED_AUDIO_19 0x00040000
+#define ED_AUDIO_20 0x00080000
+#define ED_AUDIO_21 0x00100000
+#define ED_AUDIO_22 0x00200000
+#define ED_AUDIO_23 0x00400000
+#define ED_AUDIO_24 0x00800000
+#define ED_AUDIO_ALL 0x10000000
+#define ED_VIDEO 0x02000000
+#define DEV_PORT_SIM 0x00000001
+#define DEV_PORT_COM1 0x00000002
+#define DEV_PORT_COM2 0x00000003
+#define DEV_PORT_COM3 0x00000004
+#define DEV_PORT_COM4 0x00000005
+#define DEV_PORT_DIAQ 0x00000006
+#define DEV_PORT_ARTI 0x00000007
+#define DEV_PORT_1394 0x00000008
+#define DEV_PORT_USB 0x00000009
+#define DEV_PORT_MIN DEV_PORT_SIM
+
+#endif
Index: Daodan/MinGW/include/errno.h
===================================================================
--- Daodan/MinGW/include/errno.h	(revision 1046)
+++ Daodan/MinGW/include/errno.h	(revision 1046)
@@ -0,0 +1,101 @@
+/*
+ * errno.h
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is a part of the mingw-runtime package.
+ * No warranty is given; refer to the file DISCLAIMER within the package.
+ *
+ * Error numbers and access to error reporting.
+ *
+ */
+
+#ifndef _ERRNO_H_
+#define	_ERRNO_H_
+
+/* All the headers include this file. */
+#include <_mingw.h>
+
+/*
+ * Error numbers.
+ * TODO: Can't be sure of some of these assignments, I guessed from the
+ * names given by strerror and the defines in the Cygnus errno.h. A lot
+ * of the names from the Cygnus errno.h are not represented, and a few
+ * of the descriptions returned by strerror do not obviously match
+ * their error naming.
+ */
+#define EPERM		1	/* Operation not permitted */
+#define	ENOFILE		2	/* No such file or directory */
+#define	ENOENT		2
+#define	ESRCH		3	/* No such process */
+#define	EINTR		4	/* Interrupted function call */
+#define	EIO		5	/* Input/output error */
+#define	ENXIO		6	/* No such device or address */
+#define	E2BIG		7	/* Arg list too long */
+#define	ENOEXEC		8	/* Exec format error */
+#define	EBADF		9	/* Bad file descriptor */
+#define	ECHILD		10	/* No child processes */
+#define	EAGAIN		11	/* Resource temporarily unavailable */
+#define	ENOMEM		12	/* Not enough space */
+#define	EACCES		13	/* Permission denied */
+#define	EFAULT		14	/* Bad address */
+/* 15 - Unknown Error */
+#define	EBUSY		16	/* strerror reports "Resource device" */
+#define	EEXIST		17	/* File exists */
+#define	EXDEV		18	/* Improper link (cross-device link?) */
+#define	ENODEV		19	/* No such device */
+#define	ENOTDIR		20	/* Not a directory */
+#define	EISDIR		21	/* Is a directory */
+#define	EINVAL		22	/* Invalid argument */
+#define	ENFILE		23	/* Too many open files in system */
+#define	EMFILE		24	/* Too many open files */
+#define	ENOTTY		25	/* Inappropriate I/O control operation */
+/* 26 - Unknown Error */
+#define	EFBIG		27	/* File too large */
+#define	ENOSPC		28	/* No space left on device */
+#define	ESPIPE		29	/* Invalid seek (seek on a pipe?) */
+#define	EROFS		30	/* Read-only file system */
+#define	EMLINK		31	/* Too many links */
+#define	EPIPE		32	/* Broken pipe */
+#define	EDOM		33	/* Domain error (math functions) */
+#define	ERANGE		34	/* Result too large (possibly too small) */
+/* 35 - Unknown Error */
+#define	EDEADLOCK	36	/* Resource deadlock avoided (non-Cyg) */
+#define	EDEADLK		36
+/* 37 - Unknown Error */
+#define	ENAMETOOLONG	38	/* Filename too long (91 in Cyg?) */
+#define	ENOLCK		39	/* No locks available (46 in Cyg?) */
+#define	ENOSYS		40	/* Function not implemented (88 in Cyg?) */
+#define	ENOTEMPTY	41	/* Directory not empty (90 in Cyg?) */
+#define	EILSEQ		42	/* Illegal byte sequence */
+
+/*
+ * NOTE: ENAMETOOLONG and ENOTEMPTY conflict with definitions in the
+ *       sockets.h header provided with windows32api-0.1.2.
+ *       You should go and put an #if 0 ... #endif around the whole block
+ *       of errors (look at the comment above them).
+ */
+
+#ifndef	RC_INVOKED
+
+#ifdef	__cplusplus
+extern "C" {
+#endif
+
+/*
+ * Definitions of errno. For _doserrno, sys_nerr and * sys_errlist, see
+ * stdlib.h.
+ */
+#ifdef _UWIN
+#undef errno
+extern int errno;
+#else
+_CRTIMP int* __cdecl __MINGW_NOTHROW _errno(void);
+#define	errno		(*_errno())
+#endif
+
+#ifdef	__cplusplus
+}
+#endif
+
+#endif	/* Not RC_INVOKED */
+
+#endif	/* Not _ERRNO_H_ */
Index: Daodan/MinGW/include/errorrep.h
===================================================================
--- Daodan/MinGW/include/errorrep.h	(revision 1046)
+++ Daodan/MinGW/include/errorrep.h	(revision 1046)
@@ -0,0 +1,40 @@
+#ifndef _ERRORREP_H
+#define _ERRORREP_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#if (_WIN32_WINNT >= 0x0501)
+typedef enum {
+	frrvErr = 3,
+	frrvErrNoDW = 4,
+	frrvErrTimeout = 5,
+	frrvLaunchDebugger = 6,
+	frrvOk = 0,
+	frrvOkHeadless = 7,
+	frrvOkManifest = 1,
+	frrvOkQueued = 2
+} EFaultRepRetVal;
+BOOL WINAPI AddERExcludedApplicationA(LPCSTR);
+BOOL WINAPI AddERExcludedApplicationW(LPCWSTR);
+EFaultRepRetVal WINAPI ReportFault(LPEXCEPTION_POINTERS,DWORD);
+#endif
+
+#ifdef UNICODE
+#if (_WIN32_WINNT >= 0x0501)
+#define AddERExcludedApplication AddERExcludedApplicationW
+#endif
+#else
+#if (_WIN32_WINNT >= 0x0501)
+#define AddERExcludedApplication AddERExcludedApplicationA
+#endif
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/errors.h
===================================================================
--- Daodan/MinGW/include/errors.h	(revision 1046)
+++ Daodan/MinGW/include/errors.h	(revision 1046)
@@ -0,0 +1,169 @@
+#ifndef _ERRORS_H
+#define _ERRORS_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*--- DirectShow Reference - Constants and GUIDs - Error and Success Codes */
+#define VFW_S_NO_MORE_ITEMS 0x00040103
+#define VFW_S_DUPLICATE_NAME 0x0004022D
+#define VFW_S_STATE_INTERMEDIATE 0x00040237
+#define VFW_S_PARTIAL_RENDER 0x00040242
+#define VFW_S_SOME_DATA_IGNORED 0x00040245
+#define VFW_S_CONNECTIONS_DEFERRED 0x00040246
+#define VFW_S_RESOURCE_NOT_NEEDED 0x00040250
+#define VFW_S_MEDIA_TYPE_IGNORED 0x00040254
+#define VFW_S_VIDEO_NOT_RENDERED 0x00040257
+#define VFW_S_AUDIO_NOT_RENDERED 0x00040258
+#define VFW_S_RPZA 0x0004025A
+#define VFW_S_ESTIMATED 0x00040260
+#define VFW_S_RESERVED 0x00040263
+#define VFW_S_STREAM_OFF 0x00040267
+#define VFW_S_CANT_CUE 0x00040268
+#define VFW_S_NOPREVIEWPIN 0x0004027E
+#define VFW_S_DVD_NON_ONE_SEQUENTIAL 0x00040280
+#define VFW_S_DVD_CHANNEL_CONTENTS_NOT_AVAILABLE 0x0004028C
+#define VFW_S_DVD_NOT_ACCURATE 0x0004028D
+#define VFW_E_INVALIDMEDIATYPE 0x80040200
+#define VFW_E_INVALIDSUBTYPE 0x80040201
+#define VFW_E_NEED_OWNER 0x80040202
+#define VFW_E_ENUM_OUT_OF_SYNC 0x80040203
+#define VFW_E_ALREADY_CONNECTED 0x80040204
+#define VFW_E_FILTER_ACTIVE 0x80040205
+#define VFW_E_NO_TYPES 0x80040206
+#define VFW_E_NO_ACCEPTABLE_TYPES 0x80040207
+#define VFW_E_INVALID_DIRECTION 0x80040208
+#define VFW_E_NOT_CONNECTED 0x80040209
+#define VFW_E_NO_ALLOCATOR 0x8004020A
+#define VFW_E_RUNTIME_ERROR 0x8004020B
+#define VFW_E_BUFFER_NOTSET 0x8004020C
+#define VFW_E_BUFFER_OVERFLOW 0x8004020D
+#define VFW_E_BADALIGN 0x8004020E
+#define VFW_E_ALREADY_COMMITTED 0x8004020F
+#define VFW_E_BUFFERS_OUTSTANDING 0x80040210
+#define VFW_E_NOT_COMMITTED 0x80040211
+#define VFW_E_SIZENOTSET 0x80040212
+#define VFW_E_NO_CLOCK 0x80040213
+#define VFW_E_NO_SINK 0x80040214
+#define VFW_E_NO_INTERFACE 0x80040215
+#define VFW_E_NOT_FOUND 0x80040216
+#define VFW_E_CANNOT_CONNECT 0x80040217
+#define VFW_E_CANNOT_RENDER 0x80040218
+#define VFW_E_CHANGING_FORMAT 0x80040219
+#define VFW_E_NO_COLOR_KEY_SET 0x8004021A
+#define VFW_E_NOT_OVERLAY_CONNECTION 0x8004021B
+#define VFW_E_NOT_SAMPLE_CONNECTION 0x8004021C
+#define VFW_E_PALETTE_SET 0x8004021D
+#define VFW_E_COLOR_KEY_SET 0x8004021E
+#define VFW_E_NO_COLOR_KEY_FOUND 0x8004021F
+#define VFW_E_NO_PALETTE_AVAILABLE 0x80040220
+#define VFW_E_NO_DISPLAY_PALETTE 0x80040221
+#define VFW_E_TOO_MANY_COLORS 0x80040222
+#define VFW_E_STATE_CHANGED 0x80040223
+#define VFW_E_NOT_STOPPED 0x80040224
+#define VFW_E_NOT_PAUSED 0x80040225
+#define VFW_E_NOT_RUNNING 0x80040226
+#define VFW_E_WRONG_STATE 0x80040227
+#define VFW_E_START_TIME_AFTER_END 0x80040228
+#define VFW_E_INVALID_RECT 0x80040229
+#define VFW_E_TYPE_NOT_ACCEPTED 0x8004022A
+#define VFW_E_SAMPLE_REJECTED 0x8004022B
+#define VFW_E_SAMPLE_REJECTED_EOS 0x8004022C
+#define VFW_E_DUPLICATE_NAME 0x8004022D
+#define VFW_E_TIMEOUT 0x8004022E
+#define VFW_E_INVALID_FILE_FORMAT 0x8004022F
+#define VFW_E_ENUM_OUT_OF_RANGE 0x80040230
+#define VFW_E_CIRCULAR_GRAPH 0x80040231
+#define VFW_E_NOT_ALLOWED_TO_SAVE 0x80040232
+#define VFW_E_TIME_ALREADY_PASSED 0x80040233
+#define VFW_E_ALREADY_CANCELLED 0x80040234
+#define VFW_E_CORRUPT_GRAPH_FILE 0x80040235
+#define VFW_E_ADVISE_ALREADY_SET 0x80040236
+#define VFW_E_NO_MODEX_AVAILABLE 0x80040238
+#define VFW_E_NO_ADVISE_SET 0x80040239
+#define VFW_E_NO_FULLSCREEN 0x8004023A
+#define VFW_E_IN_FULLSCREEN_MODE 0x8004023B
+#define VFW_E_UNKNOWN_FILE_TYPE 0x80040240
+#define VFW_E_CANNOT_LOAD_SOURCE_FILTER 0x80040241
+#define VFW_E_FILE_TOO_SHORT 0x80040243
+#define VFW_E_INVALID_FILE_VERSION 0x80040244
+#define VFW_E_INVALID_CLSID 0x80040247
+#define VFW_E_INVALID_MEDIA_TYPE 0x80040248
+#define VFW_E_SAMPLE_TIME_NOT_SET 0x80040249
+#define VFW_E_MEDIA_TIME_NOT_SET 0x80040251
+#define VFW_E_NO_TIME_FORMAT_SET 0x80040252
+#define VFW_E_MONO_AUDIO_HW 0x80040253
+#define VFW_E_NO_DECOMPRESSOR 0x80040255
+#define VFW_E_NO_AUDIO_HARDWARE 0x80040256
+#define VFW_E_RPZA 0x80040259
+#define VFW_E_PROCESSOR_NOT_SUITABLE 0x8004025B
+#define VFW_E_UNSUPPORTED_AUDIO 0x8004025C
+#define VFW_E_UNSUPPORTED_VIDEO 0x8004025D
+#define VFW_E_MPEG_NOT_CONSTRAINED 0x8004025E
+#define VFW_E_NOT_IN_GRAPH 0x8004025F
+#define VFW_E_NO_TIME_FORMAT 0x80040261
+#define VFW_E_READ_ONLY 0x80040262
+#define VFW_E_BUFFER_UNDERFLOW 0x80040264
+#define VFW_E_UNSUPPORTED_STREAM 0x80040265
+#define VFW_E_NO_TRANSPORT 0x80040266
+#define VFW_E_BAD_VIDEOCD 0x80040269
+#define VFW_S_NO_STOP_TIME 0x80040270
+#define VFW_E_OUT_OF_VIDEO_MEMORY 0x80040271
+#define VFW_E_VP_NEGOTIATION_FAILED 0x80040272
+#define VFW_E_DDRAW_CAPS_NOT_SUITABLE 0x80040273
+#define VFW_E_NO_VP_HARDWARE 0x80040274
+#define VFW_E_NO_CAPTURE_HARDWARE 0x80040275
+#define VFW_E_DVD_OPERATION_INHIBITED 0x80040276
+#define VFW_E_DVD_INVALIDDOMAIN 0x80040277
+#define VFW_E_DVD_NO_BUTTON 0x80040278
+#define VFW_E_DVD_GRAPHNOTREADY 0x80040279
+#define VFW_E_DVD_RENDERFAIL 0x8004027A
+#define VFW_E_DVD_DECNOTENOUGH 0x8004027B
+#define VFW_E_DDRAW_VERSION_NOT_SUITABLE 0x8004027C
+#define VFW_E_COPYPROT_FAILED 0x8004027D
+#define VFW_E_TIME_EXPIRED 0x8004027F
+#define VFW_E_DVD_WRONG_SPEED 0x80040281
+#define VFW_E_DVD_MENU_DOES_NOT_EXIST 0x80040282
+#define VFW_E_DVD_CMD_CANCELLED 0x80040283
+#define VFW_E_DVD_STATE_WRONG_VERSION 0x80040284
+#define VFW_E_DVD_STATE_CORRUPT 0x80040285
+#define VFW_E_DVD_STATE_WRONG_DISC 0x80040286
+#define VFW_E_DVD_INCOMPATIBLE_REGION 0x80040287
+#define VFW_E_DVD_NO_ATTRIBUTES 0x80040288
+#define VFW_E_DVD_NO_GOUP_PGC 0x80040289
+#define VFW_E_DVD_LOW_PARENTAL_LEVEL 0x8004028A
+#define VFW_E_DVD_NOT_IN_KARAOKE_MODE 0x8004028B
+#define VFW_E_FRAME_STEP_UNSUPPORTED 0x8004028E
+#define VFW_E_DVD_STREAM_DISABLED 0x8004028F
+#define VFW_E_DVD_TITLE_UNKNOWN 0x80040290
+#define VFW_E_DVD_INVALID_DISC 0x80040291
+#define VFW_E_DVD_NO_RESUME_INFORMATION 0x80040292
+#define VFW_E_PIN_ALREADY_BLOCKED_ON_THIS_THREAD 0x80040293
+#define VFW_E_PIN_ALREADY_BLOCKED 0x80040294
+#define VFW_E_CERTIFICATION_FAILURE 0x80040295
+#define VFW_E_VMR_NOT_IN_MIXER_MODE 0x80040296
+#define VFW_E_VMR_NO_AP_SUPPLIED 0x80040297
+#define VFW_E_VMR_NO_DEINTERLACE_HW 0x80040298
+#define VFW_E_VMR_NO_PROCAMP_HW 0x80040299
+#define VFW_E_DVD_VMR9_INCOMPATIBLEDEC 0x8004029A
+#define VFW_E_NO_COPP_HW 0x8004029B
+#define VFW_E_BAD_KEY 0x800403F2
+/*--- DirectShow Reference - Functions */
+#define MAX_ERROR_TEXT_LEN 160
+/*--- DirectShow Reference - Functions */
+DWORD WINAPI AMGetErrorTextA(HRESULT,CHAR*,DWORD);
+DWORD WINAPI AMGetErrorTextW(HRESULT,WCHAR*,DWORD);
+#ifdef UNICODE
+#define AMGetErrorText AMGetErrorTextW
+#else
+#define AMGetErrorText AMGetErrorTextA
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/evcode.h
===================================================================
--- Daodan/MinGW/include/evcode.h	(revision 1046)
+++ Daodan/MinGW/include/evcode.h	(revision 1046)
@@ -0,0 +1,68 @@
+#ifndef _EVCODE_H
+#define _EVCODE_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*--- DirectShow Reference - Constants and GUIDs - Event Notification Codes */
+#define EC_ACTIVATE 0x0013
+#define EC_BUFFERING_DATA 0x0011
+#define EC_BUILT 0x0300
+#define EC_CLOCK_CHANGED 0x000D
+#define EC_CLOCK_UNSET 0x0051
+#define EC_CODECAPI_EVENT 0x0057
+#define EC_COMPLETE 0x0001
+#define EC_DEVICE_LOST 0x001F
+#define EC_DISPLAY_CHANGED 0x0016
+#define EC_END_OF_SEGMENT 0x001C
+#define EC_ERROR_STILLPLAYING 0x0008
+#define EC_ERRORABORT 0x0003
+#define EC_EXTDEVICE_MODE_CHANGE 0x0031
+#define EC_FULLSCREEN_LOST 0x0012
+#define EC_GRAPH_CHANGED 0x0050
+#define EC_LENGTH_CHANGED 0x001E
+#define EC_NEED_RESTART 0x0014
+#define EC_NOTIFY_WINDOW 0x0019
+#define EC_OLE_EVENT 0x0018
+#define EC_OPENING_FILE 0x0010
+#define EC_PALETTE_CHANGED 0x0009
+#define EC_PAUSED 0x000E
+#define EC_PREPROCESS_COMPLETE 0x0056
+#define EC_QUALITY_CHANGE 0x000B
+#define EC_REPAINT 0x0005
+#define EC_SEGMENT_STARTED 0x001D
+#define EC_SHUTTING_DOWN 0x000C
+#define EC_SNDDEV_IN_ERROR 0x0200
+#define EC_SNDDEV_OUT_ERROR 0x0201
+#define EC_STARVATION 0x0017
+#define EC_STATE_CHANGE 0x0032
+#define EC_STEP_COMPLETE 0x0024
+#define EC_STREAM_CONTROL_STARTED 0x001B
+#define EC_STREAM_CONTROL_STOPPED 0x001A
+#define EC_STREAM_ERROR_STILLPLAYING 0x0007
+#define EC_STREAM_ERROR_STOPPED 0x0006
+#define EC_TIMECODE_AVAILABLE 0x0030
+#define EC_UNBUILT 0x0301
+#define EC_USERABORT 0x0002
+#define EC_VIDEO_SIZE_CHANGED 0x000A
+#define EC_VMR_RENDERDEVICE_SET 0x0053
+#define EC_VMR_SURFACE_FLIPPED 0x0054
+#define EC_VMR_RECONNECTION_FAILED 0x0055
+#define EC_WINDOW_DESTROYED 0x0015
+#define EC_WMT_EVENT 0x0252
+#define EC_WMT_INDEX_EVENT 0x0251
+#define EC_USER 0x8000
+/*--- DirectShow Reference - DirectShow Structures */
+typedef struct {
+	HRESULT hrStatus;
+	void   *pData;
+} AM_WMT_EVENT_DATA;
+
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/excpt.h
===================================================================
--- Daodan/MinGW/include/excpt.h	(revision 1046)
+++ Daodan/MinGW/include/excpt.h	(revision 1046)
@@ -0,0 +1,186 @@
+/*
+ * excpt.h
+ *
+ * Experimental support for operating system level structured handling
+ * of exceptions.
+ *
+ * $Id: excpt.h,v 14fc79433294 2016/06/28 13:50:38 keithmarshall $
+ *
+ * Written by Colin Peters <colin@bird.fu.is.saga-u.ac.jp>
+ * Revised by Keith Marshall <keithmarshall@users.sourceforge.net>
+ * Copyright (C) 1997, 1999, 2001-2002, 2004, 2007, 2012, 2016,
+ *  MinGW.org Project.
+ *
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice, this permission notice, and the following
+ * disclaimer shall be included in all copies or substantial portions of
+ * the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OF OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ *
+ */
+#ifndef _EXCPT_H
+#pragma GCC system_header
+#define _EXCPT_H
+
+/* FIXME: this utility macro, to allocate stack space for any aggregate
+ * data type, with an explicit type cast of a pointer to that data type,
+ * deserves a place in a more universally accessible header file.  The
+ * type cast is not strictly necessary for C, (but is permitted); it is
+ * essential for C++.
+ */
+#define __typecast_alloca(type) (type *)(__builtin_alloca( sizeof(type) ))
+
+/* All MinGW CRT headers are required to include <_mingw.h>
+ */
+#include <_mingw.h>
+
+/* Exception handler functions require definitions of _CONTEXT, and
+ * _EXCEPTION_RECORD structures, which are provided in <windef.h>
+ */
+#include <windef.h>
+
+#ifndef _EXCPT_W32API_H
+/* FIXME: These constants, structs, and typedefs should be defined
+ * in the Win32 API headers; (we need to establish where -- perhaps
+ * this header itself should be redesignated as a W32API header).
+ */
+#define EH_NONCONTINUABLE	0x01
+#define EH_UNWINDING		0x02
+#define EH_EXIT_UNWIND		0x04
+#define EH_STACK_INVALID	0x08
+#define EH_NESTED_CALL		0x10
+
+#ifndef RC_INVOKED
+
+typedef enum
+{ ExceptionContinueExecution,
+  ExceptionContinueSearch,
+  ExceptionNestedException,
+  ExceptionCollidedUnwind
+} EXCEPTION_DISPOSITION;
+
+#endif	/* ! RC_INVOKED */
+#endif	/* !_EXCPT_W2API_H */
+
+#ifndef RC_INVOKED
+
+_BEGIN_C_DECLS
+
+/* The type of function that is expected as an exception handler,
+ * to be installed by the __try1(__handler) primitive.
+ */
+typedef EXCEPTION_DISPOSITION (*PEXCEPTION_HANDLER)
+(struct _EXCEPTION_RECORD *, void *, struct _CONTEXT *, void *);
+
+typedef struct _EXCEPTION_REGISTRATION
+{ /* Maps the structure of the exception handler registration
+   * block, as installed by the __try1(__handler) primitive.
+   */
+  struct _EXCEPTION_REGISTRATION	*prev;
+  PEXCEPTION_HANDLER			 handler;
+} EXCEPTION_REGISTRATION, *PEXCEPTION_REGISTRATION;
+
+/* Aliases which may be preferred, when referring to the
+ * EXCEPTION_REGISTRATION structure.
+ */
+typedef EXCEPTION_REGISTRATION EXCEPTION_REGISTRATION_RECORD;
+typedef PEXCEPTION_REGISTRATION PEXCEPTION_REGISTRATION_RECORD;
+
+/* Deployment of exception handlers is facilitated by the pair
+ * of macros, __try1(_handler) and __except1.
+ *
+ * CAUTION: __try1(__handler) and __except1 must be deployed as
+ * a complementary pair, within the scope of the stack frame of
+ * a single function, with __try1(__handler) preceding the use
+ * of __except1.  Failure to invoke __except1 before release of
+ * any stack frame, in which __try1(__handler) has been invoked,
+ * will invalidate the EXCEPTION_REGISTRATION_RECORD, which has
+ * been installed by __try1(_handler), at the head of the active
+ * exception handler chain; this will cause undefined behaviour,
+ * which is sure to go badly.
+ *
+ * To accommodate implementation differences between _WIN32 and
+ * _WIN64 hosts, the actual implementations of __try1(__handler)
+ * and __except1 are expressed in terms of a pair of lower level
+ * internal macros, namely:
+ *
+ * Macro: __try1_setup(__handler,__wsize,__ts)
+ *
+ * Helper for implementation of macro __try1(__handler); allocate
+ * a block of memory, within the stack frame of the calling function,
+ * which is then initialized as an EXCEPTION_REGISTRATION_RECORD, and
+ * linked to the head of the installed exception handler chain.
+ *
+ * Inputs:
+ *  __handler	pointer to an EXCEPTION_HANDLER function.
+ *  __wsize	the Intel host word size pointer description.
+ *  __ts	thread information segment register name.
+ */
+#define __try1_setup(__handler,__wsize,__ts)				\
+{ EXCEPTION_REGISTRATION *__hook;					\
+  __hook = __typecast_alloca( EXCEPTION_REGISTRATION ); 		\
+  __hook->handler = __handler;						\
+  __asm__ __volatile__							\
+  ( "mov{%z0}\t{%%|%0, "__wsize" }"__ts":{|[}0x0{, %0|]}\n\t"		\
+    "mov{%z1}\t{%1, %%|"__wsize" }"__ts":{|[}0x0{|], %1}"		\
+    :"=r"(__hook->prev):"r"(__hook):"memory"				\
+  );									\
+}
+
+/* Macro: __except1_teardown(__wsize,__ts)
+ *
+ * Helper which provides the implementation for the __except1
+ * complement to __try1(__handler) macro; it unlinks the first
+ * EXCEPTION_REGISTRATION_RECORD from the head of the exception
+ * handler chain.  Arguments are as described for those of the
+ * same name, in the __try1_setup macro argument list.
+ */
+#define __except1_teardown(__wsize,__ts) 				\
+{ register EXCEPTION_REGISTRATION *__hook;				\
+  __asm__ __volatile__							\
+  ( "mov{%z0}\t{%%|%0, "__wsize" }"__ts":{|[}0x0{, %0|]}\n\t"		\
+    "mov{%z0}\t{(}%0{)}, {|"__wsize" [}%0{|]}\n\t"			\
+    "mov{%z0}\t{%0, %%|"__wsize" }"__ts":{|[}0x0{|], %0}"		\
+    :"+r"(__hook)::"memory"						\
+  );									\
+}
+
+/* Specialization of the above primitives, creating __try1(__handler),
+ * and its complementary __except1 implementation, with the appropriate
+ * assignments of word size and TIB segment register, for each of...
+ */
+#ifdef _WIN64
+/* ...64-bit windows, for which the word size for representation of
+ * pointers, in Intel-syntax code, is "QWORD PTR", and the gs segment
+ * is used for access to the thread information block...
+ */
+# define __try1(__handler) __try1_setup(__handler,"QWORD PTR","gs")
+# define __except1 __except1_teardown("QWORD PTR","gs")
+
+#else	/* _WIN32 */
+/* ...while in 32-bit windows, the corresponding pointer word size
+ * is "DWORD PTR", and the the thread information block is located
+ * in the fs segment.
+ */
+# define __try1(__handler) __try1_setup(__handler,"DWORD PTR","fs")
+# define __except1 __except1_teardown("DWORD PTR","fs")
+#endif
+
+_END_C_DECLS
+
+#endif	/* ! RC_INVOKED */
+#endif	/* !_EXCPT_H: $RCSfile: excpt.h,v $: end of file */
Index: Daodan/MinGW/include/exdisp.h
===================================================================
--- Daodan/MinGW/include/exdisp.h	(revision 1046)
+++ Daodan/MinGW/include/exdisp.h	(revision 1046)
@@ -0,0 +1,225 @@
+#ifndef _EXDISP_H
+#define _EXDISP_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+#ifdef __cplusplus
+extern "C" {
+#endif
+#include <oaidl.h>
+#include <ocidl.h>
+#include <docobj.h>
+
+EXTERN_C const CLSID CLSID_WebBrowser;
+EXTERN_C const IID DIID_DWebBrowserEvents;
+
+typedef enum {
+	navOpenInNewWindow = 0x1,
+	navNoHistory = 0x2,
+	navNoReadFromCache = 0x4,
+	navNoWriteTocache = 0x8,
+	navAllowAutosearch = 0x10,
+	navBrowserBar = 0x20,
+	navHyperLink = 0x40
+} BrowserNavConstants;
+
+EXTERN_C const IID IID_IWebBrowser;
+#define INTERFACE IWebBrowser
+DECLARE_INTERFACE_(IWebBrowser,IDispatch)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetTypeInfoCount)(THIS_ UINT*) PURE;
+	STDMETHOD(GetTypeInfo)(THIS_ UINT,LCID,LPTYPEINFO*) PURE;
+	STDMETHOD(GetIDsOfNames)(THIS_ REFIID,LPOLESTR*,UINT,LCID,DISPID*) PURE;
+	STDMETHOD(Invoke)(THIS_ DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*) PURE;
+
+	STDMETHOD(GoBack)(THIS) PURE;
+	STDMETHOD(GoForward)(THIS) PURE;
+	STDMETHOD(GoHome)(THIS) PURE;
+	STDMETHOD(GoSearch)(THIS) PURE;
+	STDMETHOD(Navigate)(THIS_ BSTR,VARIANT*,VARIANT*,VARIANT*,VARIANT*) PURE;
+	STDMETHOD(Refresh)(THIS) PURE;
+	STDMETHOD(Refresh2)(THIS_ VARIANT*) PURE;
+	STDMETHOD(Stop)(THIS) PURE;
+	STDMETHOD(get_Application)(THIS_ IDispatch**) PURE;
+	STDMETHOD(get_Parent)(THIS_ IDispatch**) PURE;
+	STDMETHOD(get_Container)(THIS_ IDispatch**) PURE;
+	STDMETHOD(get_Document)(THIS_ IDispatch**) PURE;
+	STDMETHOD(get_TopLevelContainer)(THIS_ VARIANT_BOOL*) PURE;
+	STDMETHOD(get_Type)(THIS_ BSTR*) PURE;
+	STDMETHOD(get_Left)(THIS_ long*) PURE;
+	STDMETHOD(put_Left)(THIS_ long) PURE;
+	STDMETHOD(get_Top)(THIS_ long*) PURE;
+	STDMETHOD(put_Top)(THIS_ long) PURE;
+	STDMETHOD(get_Width)(THIS_ long*) PURE;
+	STDMETHOD(put_Width)(THIS_ long) PURE;
+	STDMETHOD(get_Height)(THIS_ long*) PURE;
+	STDMETHOD(put_Height)(THIS_ long) PURE;
+	STDMETHOD(get_LocationName)(THIS_ BSTR*) PURE;
+	STDMETHOD(get_LocationURL)(THIS_ BSTR*) PURE;
+	STDMETHOD(get_Busy)(THIS_ VARIANT_BOOL*) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IWebBrowserApp;
+#define INTERFACE IWebBrowserApp
+DECLARE_INTERFACE_(IWebBrowserApp,IWebBrowser)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetTypeInfoCount)(THIS_ UINT*) PURE;
+	STDMETHOD(GetTypeInfo)(THIS_ UINT,LCID,LPTYPEINFO*) PURE;
+	STDMETHOD(GetIDsOfNames)(THIS_ REFIID,LPOLESTR*,UINT,LCID,DISPID*) PURE;
+	STDMETHOD(Invoke)(THIS_ DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*) PURE;
+
+	STDMETHOD(GoBack)(THIS) PURE;
+	STDMETHOD(GoForward)(THIS) PURE;
+	STDMETHOD(GoHome)(THIS) PURE;
+	STDMETHOD(GoSearch)(THIS) PURE;
+	STDMETHOD(Navigate)(THIS_ BSTR,VARIANT*,VARIANT*,VARIANT*,VARIANT*) PURE;
+	STDMETHOD(Refresh)(THIS) PURE;
+	STDMETHOD(Refresh2)(THIS_ VARIANT*) PURE;
+	STDMETHOD(Stop)(THIS) PURE;
+	STDMETHOD(get_Application)(THIS_ IDispatch**) PURE;
+	STDMETHOD(get_Parent)(THIS_ IDispatch**) PURE;
+	STDMETHOD(get_Container)(THIS_ IDispatch**) PURE;
+	STDMETHOD(get_Document)(THIS_ IDispatch**) PURE;
+	STDMETHOD(get_TopLevelContainer)(THIS_ VARIANT_BOOL*) PURE;
+	STDMETHOD(get_Type)(THIS_ BSTR*) PURE;
+	STDMETHOD(get_Left)(THIS_ long*) PURE;
+	STDMETHOD(put_Left)(THIS_ long) PURE;
+	STDMETHOD(get_Top)(THIS_ long*) PURE;
+	STDMETHOD(put_Top)(THIS_ long) PURE;
+	STDMETHOD(get_Width)(THIS_ long*) PURE;
+	STDMETHOD(put_Width)(THIS_ long) PURE;
+	STDMETHOD(get_Height)(THIS_ long*) PURE;
+	STDMETHOD(put_Height)(THIS_ long) PURE;
+	STDMETHOD(get_LocationName)(THIS_ BSTR*) PURE;
+	STDMETHOD(get_LocationURL)(THIS_ BSTR*) PURE;
+	STDMETHOD(get_Busy)(THIS_ VARIANT_BOOL*) PURE;
+
+	STDMETHOD(Quit)(THIS) PURE;
+	STDMETHOD(ClientToWindow)(THIS_ int*,int*) PURE;
+	STDMETHOD(PutProperty)(THIS_ BSTR,VARIANT) PURE;
+	STDMETHOD(GetProperty)(THIS_ BSTR,VARIANT*) PURE;
+	STDMETHOD(get_Name)(THIS_ BSTR*) PURE;
+	STDMETHOD(get_HWND)(THIS_ long*) PURE;
+	STDMETHOD(get_FullName)(THIS_ BSTR*) PURE;
+	STDMETHOD(get_Path)(THIS_ BSTR*) PURE;
+	STDMETHOD(get_Visible)(THIS_ VARIANT_BOOL*) PURE;
+	STDMETHOD(put_Visible)(THIS_ VARIANT_BOOL) PURE;
+	STDMETHOD(get_StatusBar)(THIS_ VARIANT_BOOL*) PURE;
+	STDMETHOD(put_StatusBar)(THIS_ VARIANT_BOOL) PURE;
+	STDMETHOD(get_StatusText)(THIS_ BSTR*) PURE;
+	STDMETHOD(put_StatusText)(THIS_ BSTR) PURE;
+	STDMETHOD(get_ToolBar)(THIS_ int*) PURE;
+	STDMETHOD(put_ToolBar)(THIS_ int) PURE;
+	STDMETHOD(get_MenuBar)(THIS_ VARIANT_BOOL*) PURE;
+	STDMETHOD(put_MenuBar)(THIS_ VARIANT_BOOL) PURE;
+	STDMETHOD(get_FullScreen)(THIS_ VARIANT_BOOL*) PURE;
+	STDMETHOD(put_FullScreen)(THIS_ VARIANT_BOOL) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IWebBrowser2;
+#define INTERFACE IWebBrowser2
+DECLARE_INTERFACE_(IWebBrowser2,IWebBrowserApp)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetTypeInfoCount)(THIS_ UINT*) PURE;
+	STDMETHOD(GetTypeInfo)(THIS_ UINT,LCID,LPTYPEINFO*) PURE;
+	STDMETHOD(GetIDsOfNames)(THIS_ REFIID,LPOLESTR*,UINT,LCID,DISPID*) PURE;
+	STDMETHOD(Invoke)(THIS_ DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*) PURE;
+
+	STDMETHOD(GoBack)(THIS) PURE;
+	STDMETHOD(GoForward)(THIS) PURE;
+	STDMETHOD(GoHome)(THIS) PURE;
+	STDMETHOD(GoSearch)(THIS) PURE;
+	STDMETHOD(Navigate)(THIS_ BSTR,VARIANT*,VARIANT*,VARIANT*,VARIANT*) PURE;
+	STDMETHOD(Refresh)(THIS) PURE;
+	STDMETHOD(Refresh2)(THIS_ VARIANT*) PURE;
+	STDMETHOD(Stop)(THIS) PURE;
+	STDMETHOD(get_Application)(THIS_ IDispatch**) PURE;
+	STDMETHOD(get_Parent)(THIS_ IDispatch**) PURE;
+	STDMETHOD(get_Container)(THIS_ IDispatch**) PURE;
+	STDMETHOD(get_Document)(THIS_ IDispatch**) PURE;
+	STDMETHOD(get_TopLevelContainer)(THIS_ VARIANT_BOOL*) PURE;
+	STDMETHOD(get_Type)(THIS_ BSTR*) PURE;
+	STDMETHOD(get_Left)(THIS_ long*) PURE;
+	STDMETHOD(put_Left)(THIS_ long) PURE;
+	STDMETHOD(get_Top)(THIS_ long*) PURE;
+	STDMETHOD(put_Top)(THIS_ long) PURE;
+	STDMETHOD(get_Width)(THIS_ long*) PURE;
+	STDMETHOD(put_Width)(THIS_ long) PURE;
+	STDMETHOD(get_Height)(THIS_ long*) PURE;
+	STDMETHOD(put_Height)(THIS_ long) PURE;
+	STDMETHOD(get_LocationName)(THIS_ BSTR*) PURE;
+	STDMETHOD(get_LocationURL)(THIS_ BSTR*) PURE;
+	STDMETHOD(get_Busy)(THIS_ VARIANT_BOOL*) PURE;
+
+	STDMETHOD(Quit)(THIS) PURE;
+	STDMETHOD(ClientToWindow)(THIS_ int*,int*) PURE;
+	STDMETHOD(PutProperty)(THIS_ BSTR,VARIANT) PURE;
+	STDMETHOD(GetProperty)(THIS_ BSTR,VARIANT*) PURE;
+	STDMETHOD(get_Name)(THIS_ BSTR*) PURE;
+	STDMETHOD(get_HWND)(THIS_ long*) PURE;
+	STDMETHOD(get_FullName)(THIS_ BSTR*) PURE;
+	STDMETHOD(get_Path)(THIS_ BSTR*) PURE;
+	STDMETHOD(get_Visible)(THIS_ VARIANT_BOOL*) PURE;
+	STDMETHOD(put_Visible)(THIS_ VARIANT_BOOL) PURE;
+	STDMETHOD(get_StatusBar)(THIS_ VARIANT_BOOL*) PURE;
+	STDMETHOD(put_StatusBar)(THIS_ VARIANT_BOOL) PURE;
+	STDMETHOD(get_StatusText)(THIS_ BSTR*) PURE;
+	STDMETHOD(put_StatusText)(THIS_ BSTR) PURE;
+	STDMETHOD(get_ToolBar)(THIS_ int*) PURE;
+	STDMETHOD(put_ToolBar)(THIS_ int) PURE;
+	STDMETHOD(get_MenuBar)(THIS_ VARIANT_BOOL*) PURE;
+	STDMETHOD(put_MenuBar)(THIS_ VARIANT_BOOL) PURE;
+	STDMETHOD(get_FullScreen)(THIS_ VARIANT_BOOL*) PURE;
+	STDMETHOD(put_FullScreen)(THIS_ VARIANT_BOOL) PURE;
+
+	STDMETHOD(Navigate2)(THIS_ VARIANT*,VARIANT*,VARIANT*,VARIANT*,VARIANT*) PURE;
+	STDMETHOD(QueryStatusWB)(THIS_ OLECMDID,OLECMDF*) PURE;
+	STDMETHOD(ExecWB)(THIS_ OLECMDID,OLECMDEXECOPT,VARIANT*,VARIANT*) PURE;
+	STDMETHOD(ShowBrowserBar)(THIS_ VARIANT*,VARIANT*,VARIANT*) PURE;
+	STDMETHOD(get_ReadyState)(THIS_ READYSTATE*) PURE;
+	STDMETHOD(get_Offline)(THIS_ VARIANT_BOOL*) PURE;
+	STDMETHOD(put_Offline)(THIS_ VARIANT_BOOL) PURE;
+	STDMETHOD(get_Silent)(THIS_ VARIANT_BOOL*) PURE;
+	STDMETHOD(put_Silent)(THIS_ VARIANT_BOOL) PURE;
+	STDMETHOD(get_RegisterAsBrowser)(THIS_ VARIANT_BOOL*) PURE;
+	STDMETHOD(put_RegisterAsBrowser)(THIS_ VARIANT_BOOL) PURE;
+	STDMETHOD(get_RegistaerAsDropTarget)(THIS_ VARIANT_BOOL*) PURE;
+	STDMETHOD(put_RegisterAsDropTarget)(THIS_ VARIANT_BOOL) PURE;
+	STDMETHOD(get_TheaterMode)(THIS_ VARIANT_BOOL*) PURE;
+	STDMETHOD(put_TheaterMode)(THIS_ VARIANT_BOOL) PURE;
+	STDMETHOD(get_AddressBar)(THIS_ VARIANT_BOOL*) PURE;
+	STDMETHOD(put_AddressBar)(THIS_ VARIANT_BOOL) PURE;
+	STDMETHOD(get_Resizable)(THIS_ VARIANT_BOOL*) PURE;
+	STDMETHOD(put_Resizable)(THIS_ VARIANT_BOOL) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID DIID_DWebBrowserEvents2;
+#define INTERFACE DWebBrowserEvents2
+DECLARE_INTERFACE_(DWebBrowserEvents2,IDispatch)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetTypeInfoCount)(THIS_ UINT*) PURE;
+	STDMETHOD(GetTypeInfo)(THIS_ UINT,LCID,LPTYPEINFO*) PURE;
+	STDMETHOD(GetIDsOfNames)(THIS_ REFIID,LPOLESTR*,UINT,LCID,DISPID*) PURE;
+	STDMETHOD(Invoke)(THIS_ DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*) PURE;
+};
+#undef INTERFACE
+
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/exdispid.h
===================================================================
--- Daodan/MinGW/include/exdispid.h	(revision 1046)
+++ Daodan/MinGW/include/exdispid.h	(revision 1046)
@@ -0,0 +1,14 @@
+#ifndef _EXDISPID_H
+#define _EXDISPID_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#define DISPID_BEFORENAVIGATE2 250
+#define DISPID_NEWWINDOW2 251
+#define DISPID_PROGRESSCHANGE 108
+#define DISPID_DOCUMENTCOMPLETE 259
+#define DISPID_STATUSTEXTCHANGE 102
+#define DISPID_TITLECHANGE 113
+
+#endif
Index: Daodan/MinGW/include/fcntl.h
===================================================================
--- Daodan/MinGW/include/fcntl.h	(revision 1046)
+++ Daodan/MinGW/include/fcntl.h	(revision 1046)
@@ -0,0 +1,75 @@
+/*
+ * fcntl.h
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is a part of the mingw-runtime package.
+ * No warranty is given; refer to the file DISCLAIMER within the package.
+ *
+ * Access constants for _open. Note that the permissions constants are
+ * in sys/stat.h (ick).
+ *
+ */
+#ifndef _FCNTL_H_
+#define _FCNTL_H_
+
+/* All the headers include this file. */
+#include <_mingw.h>
+
+/*
+ * It appears that fcntl.h should include io.h for compatibility...
+ */
+#include <io.h>
+
+/* Specifiy one of these flags to define the access mode. */
+#define	_O_RDONLY	0
+#define _O_WRONLY	1
+#define _O_RDWR		2
+
+/* Mask for access mode bits in the _open flags. */
+#define _O_ACCMODE	(_O_RDONLY|_O_WRONLY|_O_RDWR)
+
+#define	_O_APPEND	0x0008	/* Writes will add to the end of the file. */
+
+#define	_O_RANDOM	0x0010
+#define	_O_SEQUENTIAL	0x0020
+#define	_O_TEMPORARY	0x0040	/* Make the file dissappear after closing.
+				 * WARNING: Even if not created by _open! */
+#define	_O_NOINHERIT	0x0080
+
+#define	_O_CREAT	0x0100	/* Create the file if it does not exist. */
+#define	_O_TRUNC	0x0200	/* Truncate the file if it does exist. */
+#define	_O_EXCL		0x0400	/* Open only if the file does not exist. */
+
+#define _O_SHORT_LIVED  0x1000
+
+/* NOTE: Text is the default even if the given _O_TEXT bit is not on. */
+#define	_O_TEXT		0x4000	/* CR-LF in file becomes LF in memory. */
+#define	_O_BINARY	0x8000	/* Input and output is not translated. */
+#define	_O_RAW		_O_BINARY
+
+#if (__MSVCRT_VERSION__ >= 0x0800)
+#define _O_WTEXT	0x10000
+#define _O_U16TEXT	0x20000
+#define _O_U8TEXT	0x40000
+#endif
+
+#ifndef	_NO_OLDNAMES
+
+/* POSIX/Non-ANSI names for increased portability */
+#define	O_RDONLY	_O_RDONLY
+#define O_WRONLY	_O_WRONLY
+#define O_RDWR		_O_RDWR
+#define O_ACCMODE	_O_ACCMODE
+#define	O_APPEND	_O_APPEND
+#define	O_CREAT		_O_CREAT
+#define	O_TRUNC		_O_TRUNC
+#define	O_EXCL		_O_EXCL
+#define	O_TEXT		_O_TEXT
+#define	O_BINARY	_O_BINARY
+#define	O_TEMPORARY	_O_TEMPORARY
+#define O_NOINHERIT	_O_NOINHERIT
+#define O_SEQUENTIAL	_O_SEQUENTIAL
+#define	O_RANDOM	_O_RANDOM
+
+#endif	/* Not _NO_OLDNAMES */
+
+#endif	/* Not _FCNTL_H_ */
Index: Daodan/MinGW/include/fenv.h
===================================================================
--- Daodan/MinGW/include/fenv.h	(revision 1046)
+++ Daodan/MinGW/include/fenv.h	(revision 1046)
@@ -0,0 +1,107 @@
+#ifndef _FENV_H_
+#define _FENV_H_
+
+#include <_mingw.h>
+
+/* FPU status word exception flags */
+#define FE_INVALID	0x01
+#define FE_DENORMAL	0x02
+#define FE_DIVBYZERO	0x04
+#define FE_OVERFLOW	0x08
+#define FE_UNDERFLOW	0x10
+#define FE_INEXACT	0x20
+#define FE_ALL_EXCEPT (FE_INVALID | FE_DENORMAL | FE_DIVBYZERO \
+		       | FE_OVERFLOW | FE_UNDERFLOW | FE_INEXACT)
+
+/* FPU control word rounding flags */
+#define FE_TONEAREST	0x0000
+#define FE_DOWNWARD	0x0400
+#define FE_UPWARD	0x0800
+#define FE_TOWARDZERO	0x0c00
+
+/* The MXCSR exception flags are the same as the
+   FE flags. */
+#define __MXCSR_EXCEPT_FLAG_SHIFT 0
+
+/* How much to shift FE status word exception flags
+   to get the MXCSR exeptions masks,  */
+#define __MXCSR_EXCEPT_MASK_SHIFT 7
+
+/* How much to shift FE control word rounding flags
+   to get MXCSR rounding flags,  */
+#define __MXCSR_ROUND_FLAG_SHIFT 3
+
+#ifndef RC_INVOKED
+/*
+  For now, support only for the basic abstraction of flags that are
+  either set or clear. fexcept_t could be  structure that holds more
+  info about the fp environment.
+*/
+typedef unsigned short fexcept_t;
+
+/* This 32-byte struct represents the entire floating point
+   environment as stored by fnstenv or fstenv, augmented by
+   the  contents of the MXCSR register, as stored by stmxcsr
+   (if CPU supports it). */
+typedef struct
+{
+  unsigned short __control_word;
+  unsigned short __unused0;
+  unsigned short __status_word;
+  unsigned short __unused1;
+  unsigned short __tag_word;
+  unsigned short __unused2;
+  unsigned int	 __ip_offset;    /* instruction pointer offset */
+  unsigned short __ip_selector;
+  unsigned short __opcode;
+  unsigned int	 __data_offset;
+  unsigned short __data_selector;
+  unsigned short  __unused3;
+  unsigned int __mxcsr; /* contents of the MXCSR register  */
+} fenv_t;
+
+
+/*The C99 standard (7.6.9) allows us to define implementation-specific macros for
+  different fp environments */
+
+/* The default Intel x87 floating point environment (64-bit mantissa) */
+#define FE_PC64_ENV ((const fenv_t *)-1)
+
+/* The floating point environment set by MSVCRT _fpreset (53-bit mantissa) */
+#define FE_PC53_ENV ((const fenv_t *)-2)
+
+/* The FE_DFL_ENV macro is required by standard.
+  fesetenv will use the environment set at app startup.*/
+#define FE_DFL_ENV ((const fenv_t *) 0)
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*TODO: Some of these could be inlined */
+/* 7.6.2 Exception */
+
+extern int __cdecl __MINGW_NOTHROW feclearexcept (int);
+extern int __cdecl __MINGW_NOTHROW fegetexceptflag (fexcept_t * flagp, int excepts);
+extern int __cdecl __MINGW_NOTHROW feraiseexcept (int excepts );
+extern int __cdecl __MINGW_NOTHROW fesetexceptflag (const fexcept_t *, int);
+extern int __cdecl __MINGW_NOTHROW fetestexcept (int excepts);
+
+/* 7.6.3 Rounding */
+
+extern int __cdecl __MINGW_NOTHROW fegetround (void);
+extern int __cdecl __MINGW_NOTHROW fesetround (int mode);
+
+/* 7.6.4 Environment */
+
+extern int __cdecl __MINGW_NOTHROW fegetenv (fenv_t * envp);
+extern int __cdecl __MINGW_NOTHROW fesetenv (const fenv_t * );
+extern int __cdecl __MINGW_NOTHROW feupdateenv (const fenv_t *);
+extern int __cdecl __MINGW_NOTHROW feholdexcept (fenv_t *);
+
+#ifdef __cplusplus
+}
+#endif
+#endif	/* Not RC_INVOKED */
+
+#endif /* ndef _FENV_H */
Index: Daodan/MinGW/include/float.h
===================================================================
--- Daodan/MinGW/include/float.h	(revision 1046)
+++ Daodan/MinGW/include/float.h	(revision 1046)
@@ -0,0 +1,169 @@
+#ifndef _MINGW_FLOAT_H_
+/*
+ * float.h
+ *
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is a part of the mingw-runtime package.
+ * No warranty is given; refer to the file DISCLAIMER within the package.
+ *
+ * Constants related to floating point arithmetic.
+ *
+ * Also included here are some non-ANSI bits for accessing the floating
+ * point controller.
+ *
+ */
+#define _MINGW_FLOAT_H_
+/*
+ * NOTE:
+ *
+ * GCC provides float.h, but it doesn't include the non-standard stuff for
+ * accessing the fp controller.  We parse the GCC-supplied header, for its
+ * standard content, and then define the MS-specific extensions here.
+ *
+ * In a MinGW standard Win32 hosted environment, this should be the float.h
+ * found by a system include path search, but this can't be guaranteed; for
+ * a cross-compiler setup, the GCC-supplied header, which is guarded by the
+ * _FLOAT_H___ macro, may be found first, thus...
+ *
+ */
+#if !defined(_FLOAT_H___) && !defined(__FLOAT_H)
+
+ /*
+  * ...when we didn't find the GCC-supplied header first, we want to pull
+  * it in now; include_next should achieve this, (and we must rely on the
+  * GCC header maintainers to extend us the same courtesy, to get this one
+  * pulled in, when the GCC-supplied header is found first).
+  *
+  */
+# include_next <float.h>
+#endif
+
+/* All the headers include this file. */
+#include <_mingw.h>
+
+/*
+ * Functions and definitions for controlling the FPU.
+ */
+#ifndef	__STRICT_ANSI__
+
+/* TODO: These constants are only valid for x86 machines */
+
+/* Control word masks for unMask */
+#define	_MCW_EM		0x0008001F	/* Error masks */
+#define	_MCW_IC		0x00040000	/* Infinity */
+#define	_MCW_RC		0x00000300	/* Rounding */
+#define	_MCW_PC		0x00030000	/* Precision */
+
+/* Control word values for unNew (use with related unMask above) */
+#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
+
+/* These are also defined in Mingw math.h, needed to work around
+   GCC build issues.  */
+/* Return values for fpclass. */
+#ifndef __MINGW_FPCLASS_DEFINED
+#define __MINGW_FPCLASS_DEFINED 1
+#define	_FPCLASS_SNAN	0x0001	/* Signaling "Not a Number" */
+#define	_FPCLASS_QNAN	0x0002	/* Quiet "Not a Number" */
+#define	_FPCLASS_NINF	0x0004	/* Negative Infinity */
+#define	_FPCLASS_NN	0x0008	/* Negative Normal */
+#define	_FPCLASS_ND	0x0010	/* Negative Denormal */
+#define	_FPCLASS_NZ	0x0020	/* Negative Zero */
+#define	_FPCLASS_PZ	0x0040	/* Positive Zero */
+#define	_FPCLASS_PD	0x0080	/* Positive Denormal */
+#define	_FPCLASS_PN	0x0100	/* Positive Normal */
+#define	_FPCLASS_PINF	0x0200	/* Positive Infinity */
+#endif /* __MINGW_FPCLASS_DEFINED */
+
+/* invalid subconditions (_SW_INVALID also set) */
+#define _SW_UNEMULATED		0x0040  /* unemulated instruction */
+#define _SW_SQRTNEG		0x0080  /* square root of a neg number */
+#define _SW_STACKOVERFLOW	0x0200  /* FP stack overflow */
+#define _SW_STACKUNDERFLOW	0x0400  /* FP stack underflow */
+
+/*  Floating point error signals and return codes */
+#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    /* raise( SIGFPE ); */
+
+#ifndef RC_INVOKED
+
+#ifdef	__cplusplus
+extern "C" {
+#endif
+
+/* Set the FPU control word as cw = (cw & ~unMask) | (unNew & unMask),
+ * i.e. change the bits in unMask to have the values they have in unNew,
+ * leaving other bits unchanged. */
+_CRTIMP unsigned int __cdecl __MINGW_NOTHROW _controlfp (unsigned int unNew, unsigned int unMask);
+_CRTIMP unsigned int __cdecl __MINGW_NOTHROW _control87 (unsigned int unNew, unsigned int unMask);
+
+
+_CRTIMP unsigned int __cdecl __MINGW_NOTHROW _clearfp (void);	/* Clear the FPU status word */
+_CRTIMP unsigned int __cdecl __MINGW_NOTHROW _statusfp (void);	/* Report the FPU status word */
+#define		_clear87	_clearfp
+#define		_status87	_statusfp
+
+
+/*
+   MSVCRT.dll _fpreset initializes the control register to 0x27f,
+   the status register to zero and the tag word to 0FFFFh.
+   This differs from asm instruction finit/fninit which set control
+   word to 0x37f (64 bit mantissa precison rather than 53 bit).
+   By default, the mingw version of _fpreset sets fp control as
+   per fninit. To use the MSVCRT.dll _fpreset, include CRT_fp8.o when
+   building your application.
+*/
+void __cdecl __MINGW_NOTHROW _fpreset (void);
+void __cdecl __MINGW_NOTHROW fpreset (void);
+
+/* Global 'variable' for the current floating point error code. */
+_CRTIMP int * __cdecl __MINGW_NOTHROW __fpecode(void);
+#define	_fpecode	(*(__fpecode()))
+
+/*
+ * IEEE recommended functions.  MS puts them in float.h
+ * but they really belong in math.h.
+ */
+
+_CRTIMP double __cdecl __MINGW_NOTHROW _chgsign	(double);
+_CRTIMP double __cdecl __MINGW_NOTHROW _copysign (double, double);
+_CRTIMP double __cdecl __MINGW_NOTHROW _logb (double);
+_CRTIMP double __cdecl __MINGW_NOTHROW _nextafter (double, double);
+_CRTIMP double __cdecl __MINGW_NOTHROW _scalb (double, long);
+
+_CRTIMP int __cdecl __MINGW_NOTHROW _finite (double);
+_CRTIMP int __cdecl __MINGW_NOTHROW _fpclass (double);
+_CRTIMP int __cdecl __MINGW_NOTHROW _isnan (double);
+
+#ifdef	__cplusplus
+}
+#endif
+
+#endif	/* Not RC_INVOKED */
+
+#endif	/* Not __STRICT_ANSI__ */
+
+#endif /* _MINGW_FLOAT_H_ */
+
Index: Daodan/MinGW/include/fltdefs.h
===================================================================
--- Daodan/MinGW/include/fltdefs.h	(revision 1046)
+++ Daodan/MinGW/include/fltdefs.h	(revision 1046)
@@ -0,0 +1,50 @@
+/*
+ * fltdefs.h - Routing and Remote Access Services
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain.  You may use,
+ * modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY.  ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED.  This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+#ifndef _FLTDEFS_H
+#define _FLTDEFS_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*--- Packet Filtering Reference - Packet Filtering Enumerated Types */
+#if (_WIN32_WINNT >= 0x0500)
+typedef enum _GlobalFilter {
+	GF_FRAGMENTS = 2,
+	GF_STRONGHOST = 8,
+	GF_FRAGCACHE = 9
+} GLOBAL_FILTER,*PGLOBAL_FILTER;
+typedef enum _PfAddresType {
+	PF_IPV4,
+	PF_IPV6
+} PFADDRESSTYPE,*PPFADDRESSTYPE;
+typedef enum _PfForwardAction {
+	PF_ACTION_FORWARD = 0,
+	PF_ACTION_DROP
+} PFFORWARD_ACTION,*PPFFORWARD_ACTION;
+typedef enum _PfFrameType {
+	PFFT_FILTER = 1,
+	PFFT_FRAG = 2,
+	PFFT_SPOOF = 3
+} PFFRAMETYPE,*PPFFRAMETYPE;
+#endif /* (_WIN32_WINNT >= 0x0500) */
+
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/gdiplus.h
===================================================================
--- Daodan/MinGW/include/gdiplus.h	(revision 1046)
+++ Daodan/MinGW/include/gdiplus.h	(revision 1046)
@@ -0,0 +1,1 @@
+#include "gdiplus/gdiplus.h"
Index: Daodan/MinGW/include/gdiplus/gdiplus.h
===================================================================
--- Daodan/MinGW/include/gdiplus/gdiplus.h	(revision 1046)
+++ Daodan/MinGW/include/gdiplus/gdiplus.h	(revision 1046)
@@ -0,0 +1,81 @@
+/*
+ * gdiplus.h
+ *
+ * GDI+ main header
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Markus Koenig <markus@stber-koenig.de>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __GDIPLUS_H
+#define __GDIPLUS_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifndef RC_INVOKED
+
+#include <stddef.h>
+#include <math.h>
+#include <windef.h>
+#include <wingdi.h>
+
+#include <basetyps.h>
+typedef _COM_interface IStream IStream;
+typedef _COM_interface IDirectDrawSurface7 IDirectDrawSurface7;
+
+#ifdef __cplusplus
+namespace Gdiplus {
+#endif
+
+typedef float REAL;
+typedef SHORT INT16;
+typedef WORD UINT16;
+
+#include "gdiplusenums.h"
+#include "gdiplustypes.h"
+#include "gdiplusgpstubs.h"
+#include "gdiplusimaging.h"
+#include "gdiplusinit.h"
+#include "gdiplusmem.h"
+#include "gdiplusmetaheader.h"
+#include "gdipluspixelformats.h"
+#include "gdipluscolor.h"
+#include "gdipluscolormatrix.h"
+#include "gdiplusflat.h"
+#include "gdipluseffects.h"
+#include "gdiplusimagecodec.h"
+
+#ifdef __cplusplus
+#include "gdiplusbase.h"
+#include "gdiplusheaders.h"
+#include "gdiplusimageattributes.h"
+#include "gdiplusmatrix.h"
+#include "gdiplusbrush.h"
+#include "gdiplusmetafile.h"
+#include "gdipluspen.h"
+#include "gdiplusstringformat.h"
+#include "gdipluspath.h"
+#include "gdiplusgraphics.h"
+#include "gdipluslinecaps.h"
+#include "gdiplusimpl.h"
+
+}  /* namespace Gdiplus */
+#endif /* __cplusplus */
+
+#endif /* !RC_INVOKED */
+
+#endif /* __GDIPLUS_H */
Index: Daodan/MinGW/include/gdiplus/gdiplusbase.h
===================================================================
--- Daodan/MinGW/include/gdiplus/gdiplusbase.h	(revision 1046)
+++ Daodan/MinGW/include/gdiplus/gdiplusbase.h	(revision 1046)
@@ -0,0 +1,54 @@
+/*
+ * gdiplusbase.h
+ *
+ * GDI+ base class
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Markus Koenig <markus@stber-koenig.de>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __GDIPLUS_BASE_H
+#define __GDIPLUS_BASE_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifndef __cplusplus
+#error "A C++ compiler is required to include gdiplusbase.h."
+#endif
+
+class GdiplusBase
+{
+public:
+	static void* operator new(size_t in_size)
+	{
+		return DllExports::GdipAlloc(in_size);
+	}
+	static void* operator new[](size_t in_size)
+	{
+		return DllExports::GdipAlloc(in_size);
+	}
+	static void operator delete(void *in_pVoid)
+	{
+		DllExports::GdipFree(in_pVoid);
+	}
+	static void operator delete[](void *in_pVoid)
+	{
+		DllExports::GdipFree(in_pVoid);
+	}
+};
+
+#endif /* __GDIPLUS_BASE_H */
Index: Daodan/MinGW/include/gdiplus/gdiplusbrush.h
===================================================================
--- Daodan/MinGW/include/gdiplus/gdiplusbrush.h	(revision 1046)
+++ Daodan/MinGW/include/gdiplus/gdiplusbrush.h	(revision 1046)
@@ -0,0 +1,606 @@
+/*
+ * gdiplusbrush.h
+ *
+ * GDI+ brush classes
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Markus Koenig <markus@stber-koenig.de>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __GDIPLUS_BRUSH_H
+#define __GDIPLUS_BRUSH_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifndef __cplusplus
+#error "A C++ compiler is required to include gdiplusbrush.h."
+#endif
+
+class Brush: public GdiplusBase
+{
+	friend class HatchBrush;
+	friend class LinearGradientBrush;
+	friend class PathGradientBrush;
+	friend class SolidBrush;
+	friend class TextureBrush;
+	friend class Graphics;
+	friend class Pen;
+
+public:
+	virtual ~Brush()
+	{
+		DllExports::GdipDeleteBrush(nativeBrush);
+	}
+	virtual Brush* Clone() const  // each subclass must implement this
+	{
+		lastStatus = NotImplemented;
+		return NULL;
+	}
+
+	Status GetLastStatus() const
+	{
+		Status result = lastStatus;
+		lastStatus = Ok;
+		return result;
+	}
+	BrushType GetType() const
+	{
+		BrushType result = BrushTypeSolidColor;
+		updateStatus(DllExports::GdipGetBrushType(nativeBrush, &result));
+		return result;  
+	}
+
+private:
+	Brush(): nativeBrush(NULL), lastStatus(Ok) {}
+	Brush(GpBrush *brush, Status status):
+		nativeBrush(brush), lastStatus(status) {}
+	Brush(const Brush& brush);
+	Brush& operator=(const Brush&);
+
+	Status updateStatus(Status newStatus) const
+	{
+		if (newStatus != Ok) lastStatus = newStatus;
+		return newStatus;
+	}
+
+	GpBrush *nativeBrush;
+	mutable Status lastStatus;
+};
+
+class HatchBrush: public Brush
+{
+public:
+	HatchBrush(HatchStyle hatchStyle,
+			const Color& foreColor,
+			const Color& backColor = Color())
+	{
+		GpHatch *nativeHatch = NULL;
+		lastStatus = DllExports::GdipCreateHatchBrush(hatchStyle,
+				foreColor.GetValue(), backColor.GetValue(),
+				&nativeHatch);
+		nativeBrush = nativeHatch; 
+	}
+	virtual HatchBrush* Clone() const
+	{
+		GpBrush *cloneBrush = NULL;
+		Status status = updateStatus(DllExports::GdipCloneBrush(
+				nativeBrush, &cloneBrush));
+		if (status == Ok) {
+			HatchBrush *result =
+				new HatchBrush(cloneBrush, lastStatus);
+			if (!result) {
+				DllExports::GdipDeleteBrush(cloneBrush);
+				updateStatus(OutOfMemory);
+			}
+			return result;
+		} else {
+			return NULL;
+		}
+	}
+
+	Status GetBackgroundColor(Color *color) const
+	{
+		return updateStatus(DllExports::GdipGetHatchBackgroundColor(
+				(GpHatch*) nativeBrush,
+				color ? &color->Value : NULL));
+	}
+	Status GetForegroundColor(Color *color) const
+	{
+		return updateStatus(DllExports::GdipGetHatchForegroundColor(
+				(GpHatch*) nativeBrush,
+				color ? &color->Value : NULL));
+	}
+	HatchStyle GetHatchStyle() const
+	{
+		HatchStyle result;
+		updateStatus(DllExports::GdipGetHatchStyle(
+				(GpHatch*) nativeBrush, &result));
+		return result;
+	}
+
+private:
+	HatchBrush(GpBrush *brush, Status status): Brush(brush, status) {}
+	HatchBrush(const HatchBrush& brush);
+	HatchBrush& operator=(const HatchBrush&);
+};
+
+class LinearGradientBrush: public Brush
+{
+public:
+	LinearGradientBrush(const PointF& point1, const PointF& point2,
+			const Color& color1, const Color& color2)
+	{
+		GpLineGradient *nativeLineGradient = NULL;
+		lastStatus = DllExports::GdipCreateLineBrush(
+				&point1, &point2,
+				color1.GetValue(), color2.GetValue(),
+				WrapModeTile, &nativeLineGradient);
+		nativeBrush = nativeLineGradient;
+	}
+	LinearGradientBrush(const Point& point1, const Point& point2,
+			const Color& color1, const Color& color2)
+	{
+		GpLineGradient *nativeLineGradient = NULL;
+		lastStatus = DllExports::GdipCreateLineBrushI(
+				&point1, &point2,
+				color1.GetValue(), color2.GetValue(),
+				WrapModeTile, &nativeLineGradient);
+		nativeBrush = nativeLineGradient;
+	}
+	LinearGradientBrush(const RectF& rect, const Color& color1,
+			const Color& color2, LinearGradientMode mode)
+	{
+		GpLineGradient *nativeLineGradient = NULL;
+		lastStatus = DllExports::GdipCreateLineBrushFromRect(
+				&rect, color1.GetValue(), color2.GetValue(),
+				mode, WrapModeTile, &nativeLineGradient);
+		nativeBrush = nativeLineGradient;
+	}
+	LinearGradientBrush(const Rect& rect, const Color& color1,
+			const Color& color2, LinearGradientMode mode)
+	{
+		GpLineGradient *nativeLineGradient = NULL;
+		lastStatus = DllExports::GdipCreateLineBrushFromRectI(
+				&rect, color1.GetValue(), color2.GetValue(),
+				mode, WrapModeTile, &nativeLineGradient);
+		nativeBrush = nativeLineGradient;
+	}
+	LinearGradientBrush(const RectF& rect, const Color& color1,
+			const Color& color2, REAL angle,
+			BOOL isAngleScalable = FALSE)
+	{
+		GpLineGradient *nativeLineGradient = NULL;
+		lastStatus = DllExports::GdipCreateLineBrushFromRectWithAngle(
+				&rect, color1.GetValue(), color2.GetValue(),
+				angle, isAngleScalable, WrapModeTile,
+				&nativeLineGradient);
+		nativeBrush = nativeLineGradient;
+	}
+	LinearGradientBrush(const Rect& rect, const Color& color1,
+			const Color& color2, REAL angle,
+			BOOL isAngleScalable = FALSE)
+	{
+		GpLineGradient *nativeLineGradient = NULL;
+		lastStatus = DllExports::GdipCreateLineBrushFromRectWithAngleI(
+				&rect, color1.GetValue(), color2.GetValue(),
+				angle, isAngleScalable, WrapModeTile,
+				&nativeLineGradient);
+		nativeBrush = nativeLineGradient;
+	}
+	virtual LinearGradientBrush* Clone() const
+	{
+		GpBrush *cloneBrush = NULL;
+		Status status = updateStatus(DllExports::GdipCloneBrush(
+				nativeBrush, &cloneBrush));
+		if (status == Ok) {
+			LinearGradientBrush *result =
+				new LinearGradientBrush(cloneBrush, lastStatus);
+			if (!result) {
+				DllExports::GdipDeleteBrush(cloneBrush);
+				updateStatus(OutOfMemory);
+			}
+			return result;
+		} else {
+			return NULL;
+		}
+	}
+
+	Status GetBlend(REAL *blendFactors, REAL *blendPositions,
+			INT count) const
+	{
+		return updateStatus(DllExports::GdipGetLineBlend(
+				(GpLineGradient*) nativeBrush,
+				blendFactors, blendPositions, count));
+	}
+	INT GetBlendCount() const
+	{
+		INT result = 0;
+		updateStatus(DllExports::GdipGetLineBlendCount(
+				(GpLineGradient*) nativeBrush, &result));
+		return result;
+	}
+	BOOL GetGammaCorrection() const
+	{
+		BOOL result = FALSE;
+		updateStatus(DllExports::GdipGetLineGammaCorrection(
+				(GpLineGradient*) nativeBrush, &result));
+		return result;
+	}
+	INT GetInterpolationColorCount() const
+	{
+		INT result = 0;
+		updateStatus(DllExports::GdipGetLinePresetBlendCount(
+				(GpLineGradient*) nativeBrush, &result));
+		return result;
+	}
+	Status GetInterpolationColors(Color *presetColors,
+			REAL *blendPositions, INT count) const
+	{
+		if (!presetColors || count <= 0)
+			return lastStatus = InvalidParameter;
+
+		ARGB *presetArgb =
+			(ARGB*) DllExports::GdipAlloc(count * sizeof(ARGB));
+		if (!presetArgb)
+			return lastStatus = OutOfMemory;
+
+		Status status = updateStatus(DllExports::GdipGetLinePresetBlend(
+				(GpLineGradient*) nativeBrush, presetArgb,
+				blendPositions, count));
+		for (INT i = 0; i < count; ++i) {
+			presetColors[i].SetValue(presetArgb[i]);
+		}
+		DllExports::GdipFree((void*) presetArgb);
+		return status;
+	}
+	Status GetLinearColors(Color *colors) const
+	{
+		if (!colors) return lastStatus = InvalidParameter;
+
+		ARGB colorsArgb[2];
+		Status status = updateStatus(DllExports::GdipGetLineColors(
+				(GpLineGradient*) nativeBrush, colorsArgb));
+		colors[0].SetValue(colorsArgb[0]);
+		colors[1].SetValue(colorsArgb[1]);
+		return status;
+	}
+	Status GetRectangle(RectF *rect) const
+	{
+		return updateStatus(DllExports::GdipGetLineRect(
+				(GpLineGradient*) nativeBrush, rect));
+	}
+	Status GetRectangle(Rect *rect) const
+	{
+		return updateStatus(DllExports::GdipGetLineRectI(
+				(GpLineGradient*) nativeBrush, rect));
+	}
+	Status GetTransform(Matrix *matrix) const
+	{
+		return updateStatus(DllExports::GdipGetLineTransform(
+				(GpLineGradient*) nativeBrush,
+				matrix ? matrix->nativeMatrix : NULL));
+	}
+	WrapMode GetWrapMode() const
+	{
+		WrapMode wrapMode = WrapModeTile;
+		updateStatus(DllExports::GdipGetLineWrapMode(
+				(GpLineGradient*) nativeBrush, &wrapMode));
+		return wrapMode;
+	}
+	Status MultiplyTransform(const Matrix *matrix,
+			MatrixOrder order = MatrixOrderPrepend)
+	{
+		return updateStatus(DllExports::GdipMultiplyLineTransform(
+				(GpLineGradient*) nativeBrush,
+				matrix ? matrix->nativeMatrix : NULL, order));
+	}
+	Status ResetTransform()
+	{
+		return updateStatus(DllExports::GdipResetLineTransform(
+				(GpLineGradient*) nativeBrush));
+	}
+	Status RotateTranform(REAL angle, MatrixOrder order = MatrixOrderPrepend)
+	{
+		return updateStatus(DllExports::GdipRotateLineTransform(
+				(GpLineGradient*) nativeBrush, angle, order));
+	}
+	Status ScaleTransform(REAL sx, REAL sy,
+			MatrixOrder order = MatrixOrderPrepend)
+	{
+		return updateStatus(DllExports::GdipScaleLineTransform(
+				(GpLineGradient*) nativeBrush, sx, sy, order));
+	}
+	Status SetBlend(const REAL *blendFactors,
+			const REAL *blendPositions, INT count)
+	{
+		return updateStatus(DllExports::GdipSetLineBlend(
+				(GpLineGradient*) nativeBrush,
+				blendFactors, blendPositions, count));
+	}
+	Status SetBlendBellShape(REAL focus, REAL scale = 1.0f)
+	{
+		return updateStatus(DllExports::GdipSetLineSigmaBlend(
+				(GpLineGradient*) nativeBrush,
+				focus, scale));
+	}
+	Status SetBlendTriangularShape(REAL focus, REAL scale = 1.0f)
+	{
+		return updateStatus(DllExports::GdipSetLineLinearBlend(
+				(GpLineGradient*) nativeBrush,
+				focus, scale));
+	}
+	Status SetGammaCorrection(BOOL useGammaCorrection)
+	{
+		return updateStatus(DllExports::GdipSetLineGammaCorrection(
+				(GpLineGradient*) nativeBrush,
+				useGammaCorrection));
+	}
+	Status SetInterpolationColors(const Color *presetColors,
+			const REAL *blendPositions, INT count)
+	{
+		if (!presetColors || count < 0)
+			return lastStatus = InvalidParameter;
+
+		ARGB *presetArgb =
+			(ARGB*) DllExports::GdipAlloc(count * sizeof(ARGB));
+		if (!presetArgb)
+			return lastStatus = OutOfMemory;
+		for (INT i = 0; i < count; ++i) {
+			presetArgb[i] = presetColors[i].GetValue();
+		}
+
+		Status status = updateStatus(DllExports::GdipSetLinePresetBlend(
+				(GpLineGradient*) nativeBrush,
+				presetArgb, blendPositions, count));
+		DllExports::GdipFree((void*) presetArgb);
+		return status;
+	}
+	Status SetLinearColors(const Color& color1, const Color& color2)
+	{
+		return updateStatus(DllExports::GdipSetLineColors(
+				(GpLineGradient*) nativeBrush,
+				color1.GetValue(), color2.GetValue()));
+	}
+	Status SetTransform(const Matrix *matrix)
+	{
+		return updateStatus(DllExports::GdipSetLineTransform(
+				(GpLineGradient*) nativeBrush,
+				matrix ? matrix->nativeMatrix : NULL));
+	}
+	Status SetWrapMode(WrapMode wrapMode)
+	{
+		return updateStatus(DllExports::GdipSetLineWrapMode(
+				(GpLineGradient*) nativeBrush, wrapMode));
+	}
+	Status TranslateTransform(REAL dx, REAL dy,
+			MatrixOrder order = MatrixOrderPrepend)
+	{
+		return updateStatus(DllExports::GdipTranslateLineTransform(
+				(GpLineGradient*) nativeBrush, dx, dy, order));
+	}
+
+private:
+	LinearGradientBrush(GpBrush *brush, Status status): Brush(brush, status) {}
+	LinearGradientBrush(const LinearGradientBrush& brush);
+	LinearGradientBrush& operator=(const LinearGradientBrush&);
+};
+
+class SolidBrush: public Brush
+{
+public:
+	SolidBrush(const Color& color)
+	{
+		GpSolidFill *nativeSolidFill = NULL;
+		lastStatus = DllExports::GdipCreateSolidFill(
+				color.GetValue(), &nativeSolidFill);
+		nativeBrush = nativeSolidFill; 
+	}
+	virtual SolidBrush* Clone() const
+	{
+		GpBrush *cloneBrush = NULL;
+		Status status = updateStatus(DllExports::GdipCloneBrush(
+				nativeBrush, &cloneBrush));
+		if (status == Ok) {
+			SolidBrush *result =
+				new SolidBrush(cloneBrush, lastStatus);
+			if (!result) {
+				DllExports::GdipDeleteBrush(cloneBrush);
+				updateStatus(OutOfMemory);
+			}
+			return result;
+		} else {
+			return NULL;
+		}
+	}
+
+	Status GetColor(Color *color) const
+	{
+		return updateStatus(DllExports::GdipGetSolidFillColor(
+				(GpSolidFill*) nativeBrush,
+				color ? &color->Value : NULL));
+	}
+	Status SetColor(const Color& color)
+	{
+		return updateStatus(DllExports::GdipSetSolidFillColor(
+				(GpSolidFill*) nativeBrush, color.GetValue()));
+	}
+
+private:
+	SolidBrush(GpBrush *brush, Status status): Brush(brush, status) {}
+	SolidBrush(const SolidBrush&);
+	SolidBrush& operator=(const SolidBrush&);
+};
+
+class TextureBrush: public Brush
+{
+public:
+	TextureBrush(Image *image, WrapMode wrapMode = WrapModeTile)
+	{
+		GpTexture *nativeTexture = NULL;
+		lastStatus = DllExports::GdipCreateTexture(
+				image ? image->nativeImage : NULL,
+				wrapMode, &nativeTexture);
+		nativeBrush = nativeTexture;
+	}
+	TextureBrush(Image *image, WrapMode wrapMode,
+			REAL dstX, REAL dstY, REAL dstWidth, REAL dstHeight)
+	{
+		GpTexture *nativeTexture = NULL;
+		lastStatus = DllExports::GdipCreateTexture2(
+				image ? image->nativeImage : NULL,
+				wrapMode, dstX, dstY, dstWidth, dstHeight,
+				&nativeTexture);
+		nativeBrush = nativeTexture;
+	}
+	TextureBrush(Image *image, WrapMode wrapMode,
+			INT dstX, INT dstY, INT dstWidth, INT dstHeight)
+	{
+		GpTexture *nativeTexture = NULL;
+		lastStatus = DllExports::GdipCreateTexture2I(
+				image ? image->nativeImage : NULL,
+				wrapMode, dstX, dstY, dstWidth, dstHeight,
+				&nativeTexture);
+		nativeBrush = nativeTexture;
+	}
+	TextureBrush(Image *image, WrapMode wrapMode, const RectF& dstRect)
+	{
+		GpTexture *nativeTexture = NULL;
+		lastStatus = DllExports::GdipCreateTexture2(
+				image ? image->nativeImage : NULL, wrapMode,
+				dstRect.X, dstRect.Y,
+				dstRect.Width, dstRect.Height, &nativeTexture);
+		nativeBrush = nativeTexture;
+	}
+	TextureBrush(Image *image, WrapMode wrapMode, const Rect& dstRect)
+	{
+		GpTexture *nativeTexture = NULL;
+		lastStatus = DllExports::GdipCreateTexture2I(
+				image ? image->nativeImage : NULL, wrapMode,
+				dstRect.X, dstRect.Y,
+				dstRect.Width, dstRect.Height, &nativeTexture);
+		nativeBrush = nativeTexture;
+	}
+	TextureBrush(Image *image, const RectF& dstRect,
+			ImageAttributes *imageAttributes = NULL)
+	{
+		GpTexture *nativeTexture = NULL;
+		lastStatus = DllExports::GdipCreateTextureIA(
+				image ? image->nativeImage : NULL,
+				imageAttributes ? imageAttributes->nativeImageAttributes : NULL,
+				dstRect.X, dstRect.Y,
+				dstRect.Width, dstRect.Height, &nativeTexture);
+		nativeBrush = nativeTexture;
+	}
+	TextureBrush(Image *image, const Rect& dstRect,
+			ImageAttributes *imageAttributes = NULL)
+	{
+		GpTexture *nativeTexture = NULL;
+		lastStatus = DllExports::GdipCreateTextureIAI(
+				image ? image->nativeImage : NULL,
+				imageAttributes ? imageAttributes->nativeImageAttributes : NULL,
+				dstRect.X, dstRect.Y,
+				dstRect.Width, dstRect.Height, &nativeTexture);
+		nativeBrush = nativeTexture;
+	}
+	virtual TextureBrush* Clone() const
+	{
+		GpBrush *cloneBrush = NULL;
+		Status status = updateStatus(DllExports::GdipCloneBrush(
+				nativeBrush, &cloneBrush));
+		if (status == Ok) {
+			TextureBrush *result =
+				new TextureBrush(cloneBrush, lastStatus);
+			if (!result) {
+				DllExports::GdipDeleteBrush(cloneBrush);
+				updateStatus(OutOfMemory);
+			}
+			return result;
+		} else {
+			return NULL;
+		}
+	}
+
+	//TODO: implement TextureBrush::GetImage()
+	//Image *GetImage() const
+	//{
+	//	// where is the Image allocated (static,member,new,other)?
+	//	// GdipGetTextureImage just returns a GpImage*
+	//	updateStatus(NotImplemented);
+	//	return NULL;
+	//}
+	Status GetTransfrom(Matrix *matrix) const
+	{
+		return updateStatus(DllExports::GdipGetTextureTransform(
+				(GpTexture*) nativeBrush,
+				matrix ? matrix->nativeMatrix : NULL));
+	}
+	WrapMode GetWrapMode() const
+	{
+		WrapMode result = WrapModeTile;
+		updateStatus(DllExports::GdipGetTextureWrapMode(
+				(GpTexture*) nativeBrush, &result));
+		return result;
+	}
+	Status MultiplyTransform(const Matrix *matrix,
+			MatrixOrder order = MatrixOrderPrepend)
+	{
+		return updateStatus(DllExports::GdipMultiplyTextureTransform(
+				(GpTexture*) nativeBrush,
+				matrix ? matrix->nativeMatrix : NULL, order));
+	}
+	Status ResetTransform()
+	{
+		return updateStatus(DllExports::GdipResetTextureTransform(
+				(GpTexture*) nativeBrush));
+	}
+	Status RotateTransform(REAL angle,
+			MatrixOrder order = MatrixOrderPrepend)
+	{
+		return updateStatus(DllExports::GdipRotateTextureTransform(
+				(GpTexture*) nativeBrush, angle, order));
+	}
+	Status ScaleTransform(REAL sx, REAL sy,
+			MatrixOrder order = MatrixOrderPrepend)
+	{
+		return updateStatus(DllExports::GdipScaleTextureTransform(
+				(GpTexture*) nativeBrush, sx, sy, order));
+	}
+	Status SetTransform(const Matrix *matrix)
+	{
+		return updateStatus(DllExports::GdipSetTextureTransform(
+				(GpTexture*) nativeBrush,
+				matrix ? matrix->nativeMatrix : NULL));
+	}
+	Status SetWrapMode(WrapMode wrapMode)
+	{
+		return updateStatus(DllExports::GdipSetTextureWrapMode(
+				(GpTexture*) nativeBrush, wrapMode));
+	}
+	Status TranslateTransform(REAL dx, REAL dy,
+			MatrixOrder order = MatrixOrderPrepend)
+	{
+		return updateStatus(DllExports::GdipTranslateTextureTransform(
+				(GpTexture*) nativeBrush, dx, dy, order));
+	}
+
+private:
+	TextureBrush(GpBrush *brush, Status status): Brush(brush, status) {}
+	TextureBrush(const TextureBrush&);
+	TextureBrush& operator=(const TextureBrush&);
+};
+
+#endif /* __GDIPLUS_BRUSH_H */
Index: Daodan/MinGW/include/gdiplus/gdipluscolor.h
===================================================================
--- Daodan/MinGW/include/gdiplus/gdipluscolor.h	(revision 1046)
+++ Daodan/MinGW/include/gdiplus/gdipluscolor.h	(revision 1046)
@@ -0,0 +1,262 @@
+/*
+ * gdipluscolor.h
+ *
+ * GDI+ color
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Markus Koenig <markus@stber-koenig.de>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __GDIPLUS_COLOR_H
+#define __GDIPLUS_COLOR_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+typedef enum ColorChannelFlags {
+	ColorChannelFlagsC = 0,
+	ColorChannelFlagsM = 1,
+	ColorChannelFlagsY = 2,
+	ColorChannelFlagsK = 3,
+	ColorChannelFlagsLast = 4
+} ColorChannelFlags;
+
+typedef struct Color
+{
+	#ifdef __cplusplus
+	private:
+	#endif
+	ARGB Value;
+
+	#ifdef __cplusplus
+	public:
+	friend class Bitmap;
+	friend class Graphics;
+	friend class HatchBrush;
+	friend class PathGradientBrush;
+	friend class Pen;
+	friend class SolidBrush;
+
+	static ARGB MakeARGB(BYTE a, BYTE r, BYTE g, BYTE b)
+	{
+		return (ARGB) ((((DWORD) a) << 24) | (((DWORD) r) << 16)
+		             | (((DWORD) g) << 8) | ((DWORD) b));
+	}
+
+	static const ARGB AlphaMask            = 0xFF000000UL;
+
+	static const ARGB AliceBlue            = 0xFFF0F8FFUL;
+	static const ARGB AntiqueWhite         = 0xFFFAEBD7UL;
+	static const ARGB Aqua                 = 0xFF00FFFFUL;
+	static const ARGB Aquamarine           = 0xFF7FFFD4UL;
+	static const ARGB Azure                = 0xFFF0FFFFUL;
+	static const ARGB Beige                = 0xFFF5F5DCUL;
+	static const ARGB Bisque               = 0xFFFFE4C4UL;
+	static const ARGB Black                = 0xFF000000UL;
+	static const ARGB BlanchedAlmond       = 0xFFFFEBCDUL;
+	static const ARGB Blue                 = 0xFF0000FFUL;
+	static const ARGB BlueViolet           = 0xFF8A2BE2UL;
+	static const ARGB Brown                = 0xFFA52A2AUL;
+	static const ARGB BurlyWood            = 0xFFDEB887UL;
+	static const ARGB CadetBlue            = 0xFF5F9EA0UL;
+	static const ARGB Chartreuse           = 0xFF7FFF00UL;
+	static const ARGB Chocolate            = 0xFFD2691EUL;
+	static const ARGB Coral                = 0xFFFF7F50UL;
+	static const ARGB CornflowerBlue       = 0xFF6495EDUL;
+	static const ARGB Cornsilk             = 0xFFFFF8DCUL;
+	static const ARGB Crimson              = 0xFFDC143CUL;
+	static const ARGB Cyan                 = 0xFF00FFFFUL;
+	static const ARGB DarkBlue             = 0xFF00008BUL;
+	static const ARGB DarkCyan             = 0xFF008B8BUL;
+	static const ARGB DarkGoldenrod        = 0xFFB8860BUL;
+	static const ARGB DarkGray             = 0xFFA9A9A9UL;
+	static const ARGB DarkGreen            = 0xFF006400UL;
+	static const ARGB DarkKhaki            = 0xFFBDB76BUL;
+	static const ARGB DarkMagenta          = 0xFF8B008BUL;
+	static const ARGB DarkOliveGreen       = 0xFF556B2FUL;
+	static const ARGB DarkOrange           = 0xFFFF8C00UL;
+	static const ARGB DarkOrchid           = 0xFF9932CCUL;
+	static const ARGB DarkRed              = 0xFF8B0000UL;
+	static const ARGB DarkSalmon           = 0xFFE9967AUL;
+	static const ARGB DarkSeaGreen         = 0xFF8FBC8FUL;
+	static const ARGB DarkSlateBlue        = 0xFF483D8BUL;
+	static const ARGB DarkSlateGray        = 0xFF2F4F4FUL;
+	static const ARGB DarkTurquoise        = 0xFF00CED1UL;
+	static const ARGB DarkViolet           = 0xFF9400D3UL;
+	static const ARGB DeepPink             = 0xFFFF1493UL;
+	static const ARGB DeepSkyBlue          = 0xFF00BFFFUL;
+	static const ARGB DimGray              = 0xFF696969UL;
+	static const ARGB DodgerBlue           = 0xFF1E90FFUL;
+	static const ARGB Firebrick            = 0xFFB22222UL;
+	static const ARGB FloralWhite          = 0xFFFFFAF0UL;
+	static const ARGB ForestGreen          = 0xFF228B22UL;
+	static const ARGB Fuchsia              = 0xFFFF00FFUL;
+	static const ARGB Gainsboro            = 0xFFDCDCDCUL;
+	static const ARGB GhostWhite           = 0xFFF8F8FFUL;
+	static const ARGB Gold                 = 0xFFFFD700UL;
+	static const ARGB Goldenrod            = 0xFFDAA520UL;
+	static const ARGB Gray                 = 0xFF808080UL;
+	static const ARGB Green                = 0xFF008000UL;
+	static const ARGB GreenYellow          = 0xFFADFF2FUL;
+	static const ARGB Honeydew             = 0xFFF0FFF0UL;
+	static const ARGB HotPink              = 0xFFFF69B4UL;
+	static const ARGB IndianRed            = 0xFFCD5C5CUL;
+	static const ARGB Indigo               = 0xFF4B0082UL;
+	static const ARGB Ivory                = 0xFFFFFFF0UL;
+	static const ARGB Khaki                = 0xFFF0E68CUL;
+	static const ARGB Lavender             = 0xFFE6E6FAUL;
+	static const ARGB LavenderBlush        = 0xFFFFF0F5UL;
+	static const ARGB LawnGreen            = 0xFF7CFC00UL;
+	static const ARGB LemonChiffon         = 0xFFFFFACDUL;
+	static const ARGB LightBlue            = 0xFFADD8E6UL;
+	static const ARGB LightCoral           = 0xFFF08080UL;
+	static const ARGB LightCyan            = 0xFFE0FFFFUL;
+	static const ARGB LightGoldenrodYellow = 0xFFFAFAD2UL;
+	static const ARGB LightGray            = 0xFFD3D3D3UL;
+	static const ARGB LightGreen           = 0xFF90EE90UL;
+	static const ARGB LightPink            = 0xFFFFB6C1UL;
+	static const ARGB LightSalmon          = 0xFFFFA07AUL;
+	static const ARGB LightSeaGreen        = 0xFF20B2AAUL;
+	static const ARGB LightSkyBlue         = 0xFF87CEFAUL;
+	static const ARGB LightSlateGray       = 0xFF778899UL;
+	static const ARGB LightSteelBlue       = 0xFFB0C4DEUL;
+	static const ARGB LightYellow          = 0xFFFFFFE0UL;
+	static const ARGB Lime                 = 0xFF00FF00UL;
+	static const ARGB LimeGreen            = 0xFF32CD32UL;
+	static const ARGB Linen                = 0xFFFAF0E6UL;
+	static const ARGB Magenta              = 0xFFFF00FFUL;
+	static const ARGB Maroon               = 0xFF800000UL;
+	static const ARGB MediumAquamarine     = 0xFF66CDAAUL;
+	static const ARGB MediumBlue           = 0xFF0000CDUL;
+	static const ARGB MediumOrchid         = 0xFFBA55D3UL;
+	static const ARGB MediumPurple         = 0xFF9370DBUL;
+	static const ARGB MediumSeaGreen       = 0xFF3CB371UL;
+	static const ARGB MediumSlateBlue      = 0xFF7B68EEUL;
+	static const ARGB MediumSpringGreen    = 0xFF00FA9AUL;
+	static const ARGB MediumTurquoise      = 0xFF48D1CCUL;
+	static const ARGB MediumVioletRed      = 0xFFC71585UL;
+	static const ARGB MidnightBlue         = 0xFF191970UL;
+	static const ARGB MintCream            = 0xFFF5FFFAUL;
+	static const ARGB MistyRose            = 0xFFFFE4E1UL;
+	static const ARGB Moccasin             = 0xFFFFE4B5UL;
+	static const ARGB NavajoWhite          = 0xFFFFDEADUL;
+	static const ARGB Navy                 = 0xFF000080UL;
+	static const ARGB OldLace              = 0xFFFDF5E6UL;
+	static const ARGB Olive                = 0xFF808000UL;
+	static const ARGB OliveDrab            = 0xFF6B8E23UL;
+	static const ARGB Orange               = 0xFFFFA500UL;
+	static const ARGB OrangeRed            = 0xFFFF4500UL;
+	static const ARGB Orchid               = 0xFFDA70D6UL;
+	static const ARGB PaleGoldenrod        = 0xFFEEE8AAUL;
+	static const ARGB PaleGreen            = 0xFF98FB98UL;
+	static const ARGB PaleTurquoise        = 0xFFAFEEEEUL;
+	static const ARGB PaleVioletRed        = 0xFFDB7093UL;
+	static const ARGB PapayaWhip           = 0xFFFFEFD5UL;
+	static const ARGB PeachPuff            = 0xFFFFDAB9UL;
+	static const ARGB Peru                 = 0xFFCD853FUL;
+	static const ARGB Pink                 = 0xFFFFC0CBUL;
+	static const ARGB Plum                 = 0xFFDDA0DDUL;
+	static const ARGB PowderBlue           = 0xFFB0E0E6UL;
+	static const ARGB Purple               = 0xFF800080UL;
+	static const ARGB Red                  = 0xFFFF0000UL;
+	static const ARGB RosyBrown            = 0xFFBC8F8FUL;
+	static const ARGB RoyalBlue            = 0xFF4169E1UL;
+	static const ARGB SaddleBrown          = 0xFF8B4513UL;
+	static const ARGB Salmon               = 0xFFFA8072UL;
+	static const ARGB SandyBrown           = 0xFFF4A460UL;
+	static const ARGB SeaGreen             = 0xFF2E8B57UL;
+	static const ARGB SeaShell             = 0xFFFFF5EEUL;
+	static const ARGB Sienna               = 0xFFA0522DUL;
+	static const ARGB Silver               = 0xFFC0C0C0UL;
+	static const ARGB SkyBlue              = 0xFF87CEEBUL;
+	static const ARGB SlateBlue            = 0xFF6A5ACDUL;
+	static const ARGB SlateGray            = 0xFF708090UL;
+	static const ARGB Snow                 = 0xFFFFFAFAUL;
+	static const ARGB SpringGreen          = 0xFF00FF7FUL;
+	static const ARGB SteelBlue            = 0xFF4682B4UL;
+	static const ARGB Tan                  = 0xFFD2B48CUL;
+	static const ARGB Teal                 = 0xFF008080UL;
+	static const ARGB Thistle              = 0xFFD8BFD8UL;
+	static const ARGB Tomato               = 0xFFFF6347UL;
+	static const ARGB Transparent          = 0x00FFFFFFUL;
+	static const ARGB Turquoise            = 0xFF40E0D0UL;
+	static const ARGB Violet               = 0xFFEE82EEUL;
+	static const ARGB Wheat                = 0xFFF5DEB3UL;
+	static const ARGB White                = 0xFFFFFFFFUL;
+	static const ARGB WhiteSmoke           = 0xFFF5F5F5UL;
+	static const ARGB Yellow               = 0xFFFFFF00UL;
+	static const ARGB YellowGreen          = 0xFF9ACD32UL;
+
+	Color(): Value(0xFF000000) {}
+	Color(ARGB argb): Value(argb) {}
+	Color(BYTE r, BYTE g, BYTE b): Value(MakeARGB(0xFF, r, g, b)) {}
+	Color(BYTE a, BYTE r, BYTE g, BYTE b): Value(MakeARGB(a, r, g, b)) {}
+
+	BYTE GetA() const
+	{
+		return (BYTE) (Value >> 24);
+	}
+	BYTE GetAlpha() const
+	{
+		return (BYTE) (Value >> 24);
+	}
+	BYTE GetB() const
+	{
+		return (BYTE) Value;
+	}
+	BYTE GetBlue() const
+	{
+		return (BYTE) Value;
+	}
+	BYTE GetG() const
+	{
+		return (BYTE) (Value >> 8);
+	}
+	BYTE GetGreen() const
+	{
+		return (BYTE) (Value >> 8);
+	}
+	BYTE GetR() const
+	{
+		return (BYTE) (Value >> 16);
+	}
+	BYTE GetRed() const
+	{
+		return (BYTE) (Value >> 16);
+	}
+	ARGB GetValue() const
+	{
+		return Value;
+	}
+	VOID SetFromCOLORREF(COLORREF rgb)
+	{
+		BYTE r = (BYTE) rgb;
+		BYTE g = (BYTE) (rgb >> 8);
+		BYTE b = (BYTE) (rgb >> 16);
+		Value = MakeARGB(0xFF, r, g, b);
+	}
+	VOID SetValue(ARGB argb)
+	{
+		Value = argb;
+	}
+	COLORREF ToCOLORREF() const
+	{
+		return RGB(GetRed(), GetGreen(), GetBlue());
+	}
+	#endif /* __cplusplus */
+} Color;
+
+#endif /* __GDIPLUS_COLOR_H */
Index: Daodan/MinGW/include/gdiplus/gdipluscolormatrix.h
===================================================================
--- Daodan/MinGW/include/gdiplus/gdipluscolormatrix.h	(revision 1046)
+++ Daodan/MinGW/include/gdiplus/gdipluscolormatrix.h	(revision 1046)
@@ -0,0 +1,67 @@
+/*
+ * gdipluscolormatrix.h
+ *
+ * GDI+ color mappings
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Markus Koenig <markus@stber-koenig.de>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __GDIPLUS_COLORMATRIX_H
+#define __GDIPLUS_COLORMATRIX_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+typedef enum ColorAdjustType {
+	ColorAdjustTypeDefault = 0,
+	ColorAdjustTypeBitmap = 1,
+	ColorAdjustTypeBrush = 2,
+	ColorAdjustTypePen = 3,
+	ColorAdjustTypeText = 4,
+	ColorAdjustTypeCount = 5,
+	ColorAdjustTypeAny = 6
+} ColorAdjustType;
+
+typedef enum ColorMatrixFlags {
+	ColorMatrixFlagsDefault = 0,
+	ColorMatrixFlagsSkipGrays = 1,
+	ColorMatrixFlagsAltGray = 2
+} ColorMatrixFlags;
+
+typedef enum HistogramFormat {
+	HistogramFormatARGB = 0,
+	HistogramFormatPARGB = 1,
+	HistogramFormatRGB = 2,
+	HistogramFormatGray = 3,
+	HistogramFormatB = 4,
+	HistogramFormatG = 5,
+	HistogramFormatR = 6,
+	HistogramFormatA = 7
+} HistogramFormat;
+
+typedef struct ColorMap {
+	Color oldColor;
+	Color newColor;
+} ColorMap;
+
+typedef struct ColorMatrix {
+	REAL m[5][5];
+} ColorMatrix;
+
+typedef BYTE ColorChannelLUT[256];
+
+#endif /* __GDIPLUS_COLORMATRIX_H */
Index: Daodan/MinGW/include/gdiplus/gdipluseffects.h
===================================================================
--- Daodan/MinGW/include/gdiplus/gdipluseffects.h	(revision 1046)
+++ Daodan/MinGW/include/gdiplus/gdipluseffects.h	(revision 1046)
@@ -0,0 +1,116 @@
+/*
+ * gdipluseffects.h
+ *
+ * GDI+ filters and effects
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Markus Koenig <markus@stber-koenig.de>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __GDIPLUS_EFFECTS_H
+#define __GDIPLUS_EFFECTS_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+typedef enum CurveAdjustments {
+	AdjustExposure = 0,
+	AdjustDensity = 1,
+	AdjustContrast = 2,
+	AdjustHighlight = 3,
+	AdjustShadow = 4,
+	AdjustMidtone = 5,
+	AdjustWhiteSaturation = 6,
+	AdjustBlackSaturation = 7
+} CurveAdjustments;
+
+typedef enum CurveChannel {
+	CurveChannelAll = 0,
+	CurveChannelRed = 1,
+	CurveChannelGreen = 2,
+	CurveChannelBlue = 3
+} CurveChannel;
+
+typedef struct BlurParams {
+	REAL radius;
+	BOOL expandEdge;
+} BlurParams;
+
+typedef struct BrightnessContrastParams {
+	INT brightnessLevel;
+	INT contrastLevel;
+} BrightnessContrastParams;
+
+typedef struct ColorBalanceParams {
+	INT cyanRed;
+	INT magentaGreen;
+	INT yellowBlue;
+} ColorBalanceParams;
+
+typedef struct ColorCurveParams {
+	CurveAdjustments adjustment;
+	CurveChannel channel;
+	INT adjustValue;
+} ColorCurveParams;
+
+typedef struct ColorLUTParams {
+	ColorChannelLUT lutB;
+	ColorChannelLUT lutG;
+	ColorChannelLUT lutR;
+	ColorChannelLUT lutA;
+} ColorLUTParams;
+
+typedef struct HueSaturationLightnessParams {
+	INT hueLevel;
+	INT saturationLevel;
+	INT lightnessLevel;
+} HueSaturationLightnessParams;
+
+typedef struct LevelsParams {
+	INT highlight;
+	INT midtone;
+	INT shadow;
+} LevelsParams;
+
+typedef struct RedEyeCorrectionParams {
+	UINT numberOfAreas;
+	RECT *areas;
+} RedEyeCorrectionParams;
+
+typedef struct SharpenParams {
+	REAL radius;
+	REAL amount;
+} SharpenParams;
+
+typedef struct TintParams {
+	INT hue;
+	INT amount;
+} TintParams;
+
+extern const GUID BlurEffectGuid;                    /* ? */
+extern const GUID BrightnessContrastEffectGuid;      /* ? */
+extern const GUID ColorBalanceEffectGuid;            /* ? */
+extern const GUID ColorCurveEffectGuid;              /* ? */
+extern const GUID ColorLUTEffectGuid;                /* ? */
+extern const GUID ColorMatrixEffectGuid;             /* ? */
+extern const GUID HueSaturationLightnessEffectGuid;  /* ? */
+extern const GUID LevelsEffectGuid;                  /* ? */
+extern const GUID RedEyeCorrectionEffectGuid;        /* ? */
+extern const GUID SharpenEffectGuid;                 /* ? */
+extern const GUID TintEffectGuid;                    /* ? */
+
+
+#endif /* __GDIPLUS_EFFECTS_H */
Index: Daodan/MinGW/include/gdiplus/gdiplusenums.h
===================================================================
--- Daodan/MinGW/include/gdiplus/gdiplusenums.h	(revision 1046)
+++ Daodan/MinGW/include/gdiplus/gdiplusenums.h	(revision 1046)
@@ -0,0 +1,755 @@
+/*
+ * gdiplusenums.h
+ *
+ * GDI+ enumerations
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Markus Koenig <markus@stber-koenig.de>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __GDIPLUS_ENUMS_H
+#define __GDIPLUS_ENUMS_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+typedef enum BrushType {
+	BrushTypeSolidColor = 0,
+	BrushTypeHatchFill = 1,
+	BrushTypeTextureFill = 2,
+	BrushTypePathGradient = 3,
+	BrushTypeLinearGradient = 4
+} BrushType;
+
+typedef enum CombineMode {
+	CombineModeReplace = 0,
+	CombineModeIntersect = 1,
+	CombineModeUnion = 2,
+	CombineModeXor = 3,
+	CombineModeExclude = 4,
+	CombineModeComplement = 5
+} CombineMode;
+
+typedef enum CompositingMode {
+	CompositingModeSourceOver = 0,
+	CompositingModeSourceCopy = 1
+} CompositingMode;
+
+typedef enum CompositingQuality {
+	CompositingQualityDefault = 0,
+	CompositingQualityHighSpeed = 1,
+	CompositingQualityHighQuality = 2,
+	CompositingQualityGammaCorrected = 3,
+	CompositingQualityAssumeLinear = 4
+} CompositingQuality;
+
+typedef enum CoordinateSpace {
+	CoordinateSpaceWorld = 0,
+	CoordinateSpacePage = 1,
+	CoordinateSpaceDevice = 2
+} CoordinateSpace;
+
+typedef enum CustomLineCapType {
+	CustomLineCapTypeDefault = 0,
+	CustomLineCapTypeAdjustableArrow = 1
+} CustomLineCapType;
+
+typedef enum DashCap {
+	DashCapFlat = 0,
+	DashCapRound = 2,
+	DashCapTriangle = 3
+} DashCap;
+
+typedef enum DashStyle {
+	DashStyleSolid = 0,
+	DashStyleDash = 1,
+	DashStyleDot = 2,
+	DashStyleDashDot = 3,
+	DashStyleDashDotDot = 4,
+	DashStyleCustom = 5
+} DashStyle;
+
+typedef enum DitherType {
+	DitherTypeNone = 0,
+	DitherTypeSolid = 1,
+	DitherTypeOrdered4x4 = 2,
+	DitherTypeOrdered8x8 = 3,
+	DitherTypeOrdered16x16 = 4,
+	DitherTypeOrdered91x91 = 5,
+	DitherTypeSpiral4x4 = 6,
+	DitherTypeSpiral8x8 = 7,
+	DitherTypeDualSpiral4x4 = 8,
+	DitherTypeDualSpiral8x8 = 9,
+	DitherTypeErrorDiffusion = 10
+} DitherType;
+
+typedef enum DriverStringOptions {
+	DriverStringOptionsCmapLookup = 1,
+	DriverStringOptionsVertical = 2,
+	DriverStringOptionsRealizedAdvance = 4,
+	DriverStringOptionsLimitSubpixel = 8
+} DriverStringOptions;
+
+#define GDIP_WMF_RECORD_TO_EMFPLUS(meta) ((meta) | 0x10000)
+#define GDIP_EMFPLUS_RECORD_BASE (0x4000)
+typedef enum EmfPlusRecordType {
+	WmfRecordTypeSetBkColor                    = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETBKCOLOR),
+	WmfRecordTypeSetBkMode                     = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETBKMODE),
+	WmfRecordTypeSetMapMode                    = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETMAPMODE),
+	WmfRecordTypeSetROP2                       = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETROP2),
+	WmfRecordTypeSetRelAbs                     = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETRELABS),
+	WmfRecordTypeSetPolyFillMode               = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETPOLYFILLMODE),
+	WmfRecordTypeSetStretchBltMode             = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETSTRETCHBLTMODE),
+	WmfRecordTypeSetTextCharExtra              = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETTEXTCHAREXTRA),
+	WmfRecordTypeSetTextColor                  = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETTEXTCOLOR),
+	WmfRecordTypeSetTextJustification          = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETTEXTJUSTIFICATION),
+	WmfRecordTypeSetWindowOrg                  = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETWINDOWORG),
+	WmfRecordTypeSetWindowExt                  = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETWINDOWEXT),
+	WmfRecordTypeSetViewportOrg                = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETVIEWPORTORG),
+	WmfRecordTypeSetViewportExt                = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETVIEWPORTEXT),
+	WmfRecordTypeOffsetWindowOrg               = GDIP_WMF_RECORD_TO_EMFPLUS(META_OFFSETWINDOWORG),
+	WmfRecordTypeScaleWindowExt                = GDIP_WMF_RECORD_TO_EMFPLUS(META_SCALEWINDOWEXT),
+	WmfRecordTypeOffsetViewportOrg             = GDIP_WMF_RECORD_TO_EMFPLUS(META_OFFSETVIEWPORTORG),
+	WmfRecordTypeScaleViewportExt              = GDIP_WMF_RECORD_TO_EMFPLUS(META_SCALEVIEWPORTEXT),
+	WmfRecordTypeLineTo                        = GDIP_WMF_RECORD_TO_EMFPLUS(META_LINETO),
+	WmfRecordTypeMoveTo                        = GDIP_WMF_RECORD_TO_EMFPLUS(META_MOVETO),
+	WmfRecordTypeExcludeClipRect               = GDIP_WMF_RECORD_TO_EMFPLUS(META_EXCLUDECLIPRECT),
+	WmfRecordTypeIntersectClipRect             = GDIP_WMF_RECORD_TO_EMFPLUS(META_INTERSECTCLIPRECT),
+	WmfRecordTypeArc                           = GDIP_WMF_RECORD_TO_EMFPLUS(META_ARC),
+	WmfRecordTypeEllipse                       = GDIP_WMF_RECORD_TO_EMFPLUS(META_ELLIPSE),
+	WmfRecordTypeFloodFill                     = GDIP_WMF_RECORD_TO_EMFPLUS(META_FLOODFILL),
+	WmfRecordTypePie                           = GDIP_WMF_RECORD_TO_EMFPLUS(META_PIE),
+	WmfRecordTypeRectangle                     = GDIP_WMF_RECORD_TO_EMFPLUS(META_RECTANGLE),
+	WmfRecordTypeRoundRect                     = GDIP_WMF_RECORD_TO_EMFPLUS(META_ROUNDRECT),
+	WmfRecordTypePatBlt                        = GDIP_WMF_RECORD_TO_EMFPLUS(META_PATBLT),
+	WmfRecordTypeSaveDC                        = GDIP_WMF_RECORD_TO_EMFPLUS(META_SAVEDC),
+	WmfRecordTypeSetPixel                      = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETPIXEL),
+	WmfRecordTypeOffsetClipRgn                 = GDIP_WMF_RECORD_TO_EMFPLUS(META_OFFSETCLIPRGN),
+	WmfRecordTypeTextOut                       = GDIP_WMF_RECORD_TO_EMFPLUS(META_TEXTOUT),
+	WmfRecordTypeBitBlt                        = GDIP_WMF_RECORD_TO_EMFPLUS(META_BITBLT),
+	WmfRecordTypeStretchBlt                    = GDIP_WMF_RECORD_TO_EMFPLUS(META_STRETCHBLT),
+	WmfRecordTypePolygon                       = GDIP_WMF_RECORD_TO_EMFPLUS(META_POLYGON),
+	WmfRecordTypePolyline                      = GDIP_WMF_RECORD_TO_EMFPLUS(META_POLYLINE),
+	WmfRecordTypeEscape                        = GDIP_WMF_RECORD_TO_EMFPLUS(META_ESCAPE),
+	WmfRecordTypeRestoreDC                     = GDIP_WMF_RECORD_TO_EMFPLUS(META_RESTOREDC),
+	WmfRecordTypeFillRegion                    = GDIP_WMF_RECORD_TO_EMFPLUS(META_FILLREGION),
+	WmfRecordTypeFrameRegion                   = GDIP_WMF_RECORD_TO_EMFPLUS(META_FRAMEREGION),
+	WmfRecordTypeInvertRegion                  = GDIP_WMF_RECORD_TO_EMFPLUS(META_INVERTREGION),
+	WmfRecordTypePaintRegion                   = GDIP_WMF_RECORD_TO_EMFPLUS(META_PAINTREGION),
+	WmfRecordTypeSelectClipRegion              = GDIP_WMF_RECORD_TO_EMFPLUS(META_SELECTCLIPREGION),
+	WmfRecordTypeSelectObject                  = GDIP_WMF_RECORD_TO_EMFPLUS(META_SELECTOBJECT),
+	WmfRecordTypeSetTextAlign                  = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETTEXTALIGN),
+	WmfRecordTypeDrawText                      = GDIP_WMF_RECORD_TO_EMFPLUS(0x062F),
+	WmfRecordTypeChord                         = GDIP_WMF_RECORD_TO_EMFPLUS(META_CHORD),
+	WmfRecordTypeSetMapperFlags                = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETMAPPERFLAGS),
+	WmfRecordTypeExtTextOut                    = GDIP_WMF_RECORD_TO_EMFPLUS(META_EXTTEXTOUT),
+	WmfRecordTypeSetDIBToDev                   = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETDIBTODEV),
+	WmfRecordTypeSelectPalette                 = GDIP_WMF_RECORD_TO_EMFPLUS(META_SELECTPALETTE),
+	WmfRecordTypeRealizePalette                = GDIP_WMF_RECORD_TO_EMFPLUS(META_REALIZEPALETTE),
+	WmfRecordTypeAnimatePalette                = GDIP_WMF_RECORD_TO_EMFPLUS(META_ANIMATEPALETTE),
+	WmfRecordTypeSetPalEntries                 = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETPALENTRIES),
+	WmfRecordTypePolyPolygon                   = GDIP_WMF_RECORD_TO_EMFPLUS(META_POLYPOLYGON),
+	WmfRecordTypeResizePalette                 = GDIP_WMF_RECORD_TO_EMFPLUS(META_RESIZEPALETTE),
+	WmfRecordTypeDIBBitBlt                     = GDIP_WMF_RECORD_TO_EMFPLUS(META_DIBBITBLT),
+	WmfRecordTypeDIBStretchBlt                 = GDIP_WMF_RECORD_TO_EMFPLUS(META_DIBSTRETCHBLT),
+	WmfRecordTypeDIBCreatePatternBrush         = GDIP_WMF_RECORD_TO_EMFPLUS(META_DIBCREATEPATTERNBRUSH),
+	WmfRecordTypeStretchDIB                    = GDIP_WMF_RECORD_TO_EMFPLUS(META_STRETCHDIB),
+	WmfRecordTypeExtFloodFill                  = GDIP_WMF_RECORD_TO_EMFPLUS(META_EXTFLOODFILL),
+	WmfRecordTypeSetLayout                     = GDIP_WMF_RECORD_TO_EMFPLUS(0x0149),
+	WmfRecordTypeResetDC                       = GDIP_WMF_RECORD_TO_EMFPLUS(0x014C),
+	WmfRecordTypeStartDoc                      = GDIP_WMF_RECORD_TO_EMFPLUS(0x014D),
+	WmfRecordTypeStartPage                     = GDIP_WMF_RECORD_TO_EMFPLUS(0x004F),
+	WmfRecordTypeEndPage                       = GDIP_WMF_RECORD_TO_EMFPLUS(0x0050),
+	WmfRecordTypeAbortDoc                      = GDIP_WMF_RECORD_TO_EMFPLUS(0x0052),
+	WmfRecordTypeEndDoc                        = GDIP_WMF_RECORD_TO_EMFPLUS(0x005E),
+	WmfRecordTypeDeleteObject                  = GDIP_WMF_RECORD_TO_EMFPLUS(META_DELETEOBJECT),
+	WmfRecordTypeCreatePalette                 = GDIP_WMF_RECORD_TO_EMFPLUS(META_CREATEPALETTE),
+	WmfRecordTypeCreateBrush                   = GDIP_WMF_RECORD_TO_EMFPLUS(0x00F8),
+	WmfRecordTypeCreatePatternBrush            = GDIP_WMF_RECORD_TO_EMFPLUS(META_CREATEPATTERNBRUSH),
+	WmfRecordTypeCreatePenIndirect             = GDIP_WMF_RECORD_TO_EMFPLUS(META_CREATEPENINDIRECT),
+	WmfRecordTypeCreateFontIndirect            = GDIP_WMF_RECORD_TO_EMFPLUS(META_CREATEFONTINDIRECT),
+	WmfRecordTypeCreateBrushIndirect           = GDIP_WMF_RECORD_TO_EMFPLUS(META_CREATEBRUSHINDIRECT),
+	WmfRecordTypeCreateBitmapIndirect          = GDIP_WMF_RECORD_TO_EMFPLUS(0x02FD),
+	WmfRecordTypeCreateBitmap                  = GDIP_WMF_RECORD_TO_EMFPLUS(0x06FE),
+	WmfRecordTypeCreateRegion                  = GDIP_WMF_RECORD_TO_EMFPLUS(META_CREATEREGION),
+	EmfRecordTypeHeader                        = EMR_HEADER,
+	EmfRecordTypePolyBezier                    = EMR_POLYBEZIER,
+	EmfRecordTypePolygon                       = EMR_POLYGON,
+	EmfRecordTypePolyline                      = EMR_POLYLINE,
+	EmfRecordTypePolyBezierTo                  = EMR_POLYBEZIERTO,
+	EmfRecordTypePolyLineTo                    = EMR_POLYLINETO,
+	EmfRecordTypePolyPolyline                  = EMR_POLYPOLYLINE,
+	EmfRecordTypePolyPolygon                   = EMR_POLYPOLYGON,
+	EmfRecordTypeSetWindowExtEx                = EMR_SETWINDOWEXTEX,
+	EmfRecordTypeSetWindowOrgEx                = EMR_SETWINDOWORGEX,
+	EmfRecordTypeSetViewportExtEx              = EMR_SETVIEWPORTEXTEX,
+	EmfRecordTypeSetViewportOrgEx              = EMR_SETVIEWPORTORGEX,
+	EmfRecordTypeSetBrushOrgEx                 = EMR_SETBRUSHORGEX,
+	EmfRecordTypeEOF                           = EMR_EOF,
+	EmfRecordTypeSetPixelV                     = EMR_SETPIXELV,
+	EmfRecordTypeSetMapperFlags                = EMR_SETMAPPERFLAGS,
+	EmfRecordTypeSetMapMode                    = EMR_SETMAPMODE,
+	EmfRecordTypeSetBkMode                     = EMR_SETBKMODE,
+	EmfRecordTypeSetPolyFillMode               = EMR_SETPOLYFILLMODE,
+	EmfRecordTypeSetROP2                       = EMR_SETROP2,
+	EmfRecordTypeSetStretchBltMode             = EMR_SETSTRETCHBLTMODE,
+	EmfRecordTypeSetTextAlign                  = EMR_SETTEXTALIGN,
+	EmfRecordTypeSetColorAdjustment            = EMR_SETCOLORADJUSTMENT,
+	EmfRecordTypeSetTextColor                  = EMR_SETTEXTCOLOR,
+	EmfRecordTypeSetBkColor                    = EMR_SETBKCOLOR,
+	EmfRecordTypeOffsetClipRgn                 = EMR_OFFSETCLIPRGN,
+	EmfRecordTypeMoveToEx                      = EMR_MOVETOEX,
+	EmfRecordTypeSetMetaRgn                    = EMR_SETMETARGN,
+	EmfRecordTypeExcludeClipRect               = EMR_EXCLUDECLIPRECT,
+	EmfRecordTypeIntersectClipRect             = EMR_INTERSECTCLIPRECT,
+	EmfRecordTypeScaleViewportExtEx            = EMR_SCALEVIEWPORTEXTEX,
+	EmfRecordTypeScaleWindowExtEx              = EMR_SCALEWINDOWEXTEX,
+	EmfRecordTypeSaveDC                        = EMR_SAVEDC,
+	EmfRecordTypeRestoreDC                     = EMR_RESTOREDC,
+	EmfRecordTypeSetWorldTransform             = EMR_SETWORLDTRANSFORM,
+	EmfRecordTypeModifyWorldTransform          = EMR_MODIFYWORLDTRANSFORM,
+	EmfRecordTypeSelectObject                  = EMR_SELECTOBJECT,
+	EmfRecordTypeCreatePen                     = EMR_CREATEPEN,
+	EmfRecordTypeCreateBrushIndirect           = EMR_CREATEBRUSHINDIRECT,
+	EmfRecordTypeDeleteObject                  = EMR_DELETEOBJECT,
+	EmfRecordTypeAngleArc                      = EMR_ANGLEARC,
+	EmfRecordTypeEllipse                       = EMR_ELLIPSE,
+	EmfRecordTypeRectangle                     = EMR_RECTANGLE,
+	EmfRecordTypeRoundRect                     = EMR_ROUNDRECT,
+	EmfRecordTypeArc                           = EMR_ARC,
+	EmfRecordTypeChord                         = EMR_CHORD,
+	EmfRecordTypePie                           = EMR_PIE,
+	EmfRecordTypeSelectPalette                 = EMR_SELECTPALETTE,
+	EmfRecordTypeCreatePalette                 = EMR_CREATEPALETTE,
+	EmfRecordTypeSetPaletteEntries             = EMR_SETPALETTEENTRIES,
+	EmfRecordTypeResizePalette                 = EMR_RESIZEPALETTE,
+	EmfRecordTypeRealizePalette                = EMR_REALIZEPALETTE,
+	EmfRecordTypeExtFloodFill                  = EMR_EXTFLOODFILL,
+	EmfRecordTypeLineTo                        = EMR_LINETO,
+	EmfRecordTypeArcTo                         = EMR_ARCTO,
+	EmfRecordTypePolyDraw                      = EMR_POLYDRAW,
+	EmfRecordTypeSetArcDirection               = EMR_SETARCDIRECTION,
+	EmfRecordTypeSetMiterLimit                 = EMR_SETMITERLIMIT,
+	EmfRecordTypeBeginPath                     = EMR_BEGINPATH,
+	EmfRecordTypeEndPath                       = EMR_ENDPATH,
+	EmfRecordTypeCloseFigure                   = EMR_CLOSEFIGURE,
+	EmfRecordTypeFillPath                      = EMR_FILLPATH,
+	EmfRecordTypeStrokeAndFillPath             = EMR_STROKEANDFILLPATH,
+	EmfRecordTypeStrokePath                    = EMR_STROKEPATH,
+	EmfRecordTypeFlattenPath                   = EMR_FLATTENPATH,
+	EmfRecordTypeWidenPath                     = EMR_WIDENPATH,
+	EmfRecordTypeSelectClipPath                = EMR_SELECTCLIPPATH,
+	EmfRecordTypeAbortPath                     = EMR_ABORTPATH,
+	EmfRecordTypeReserved_069                  = 69,
+	EmfRecordTypeGdiComment                    = EMR_GDICOMMENT,
+	EmfRecordTypeFillRgn                       = EMR_FILLRGN,
+	EmfRecordTypeFrameRgn                      = EMR_FRAMERGN,
+	EmfRecordTypeInvertRgn                     = EMR_INVERTRGN,
+	EmfRecordTypePaintRgn                      = EMR_PAINTRGN,
+	EmfRecordTypeExtSelectClipRgn              = EMR_EXTSELECTCLIPRGN,
+	EmfRecordTypeBitBlt                        = EMR_BITBLT,
+	EmfRecordTypeStretchBlt                    = EMR_STRETCHBLT,
+	EmfRecordTypeMaskBlt                       = EMR_MASKBLT,
+	EmfRecordTypePlgBlt                        = EMR_PLGBLT,
+	EmfRecordTypeSetDIBitsToDevice             = EMR_SETDIBITSTODEVICE,
+	EmfRecordTypeStretchDIBits                 = EMR_STRETCHDIBITS,
+	EmfRecordTypeExtCreateFontIndirect         = EMR_EXTCREATEFONTINDIRECTW,
+	EmfRecordTypeExtTextOutA                   = EMR_EXTTEXTOUTA,
+	EmfRecordTypeExtTextOutW                   = EMR_EXTTEXTOUTW,
+	EmfRecordTypePolyBezier16                  = EMR_POLYBEZIER16,
+	EmfRecordTypePolygon16                     = EMR_POLYGON16,
+	EmfRecordTypePolyline16                    = EMR_POLYLINE16,
+	EmfRecordTypePolyBezierTo16                = EMR_POLYBEZIERTO16,
+	EmfRecordTypePolylineTo16                  = EMR_POLYLINETO16,
+	EmfRecordTypePolyPolyline16                = EMR_POLYPOLYLINE16,
+	EmfRecordTypePolyPolygon16                 = EMR_POLYPOLYGON16,
+	EmfRecordTypePolyDraw16                    = EMR_POLYDRAW16,
+	EmfRecordTypeCreateMonoBrush               = EMR_CREATEMONOBRUSH,
+	EmfRecordTypeCreateDIBPatternBrushPt       = EMR_CREATEDIBPATTERNBRUSHPT,
+	EmfRecordTypeExtCreatePen                  = EMR_EXTCREATEPEN,
+	EmfRecordTypePolyTextOutA                  = EMR_POLYTEXTOUTA,
+	EmfRecordTypePolyTextOutW                  = EMR_POLYTEXTOUTW,
+	EmfRecordTypeSetICMMode                    = 98,
+	EmfRecordTypeCreateColorSpace              = 99,
+	EmfRecordTypeSetColorSpace                 = 100,
+	EmfRecordTypeDeleteColorSpace              = 101,
+	EmfRecordTypeGLSRecord                     = 102,
+	EmfRecordTypeGLSBoundedRecord              = 103,
+	EmfRecordTypePixelFormat                   = 104,
+	EmfRecordTypeDrawEscape                    = 105,
+	EmfRecordTypeExtEscape                     = 106,
+	EmfRecordTypeStartDoc                      = 107,
+	EmfRecordTypeSmallTextOut                  = 108,
+	EmfRecordTypeForceUFIMapping               = 109,
+	EmfRecordTypeNamedEscape                   = 110,
+	EmfRecordTypeColorCorrectPalette           = 111,
+	EmfRecordTypeSetICMProfileA                = 112,
+	EmfRecordTypeSetICMProfileW                = 113,
+	EmfRecordTypeAlphaBlend                    = 114,
+	EmfRecordTypeSetLayout                     = 115,
+	EmfRecordTypeTransparentBlt                = 116,
+	EmfRecordTypeReserved_117                  = 117,
+	EmfRecordTypeGradientFill                  = 118,
+	EmfRecordTypeSetLinkedUFIs                 = 119,
+	EmfRecordTypeSetTextJustification          = 120,
+	EmfRecordTypeColorMatchToTargetW           = 121,
+	EmfRecordTypeCreateColorSpaceW             = 122,
+	EmfRecordTypeMax                           = 122,
+	EmfRecordTypeMin                           = 1,
+	EmfPlusRecordTypeInvalid                   = GDIP_EMFPLUS_RECORD_BASE,
+	EmfPlusRecordTypeHeader,
+	EmfPlusRecordTypeEndOfFile,
+	EmfPlusRecordTypeComment,
+	EmfPlusRecordTypeGetDC,
+	EmfPlusRecordTypeMultiFormatStart,
+	EmfPlusRecordTypeMultiFormatSection,
+	EmfPlusRecordTypeMultiFormatEnd,
+	EmfPlusRecordTypeObject,
+	EmfPlusRecordTypeClear,
+	EmfPlusRecordTypeFillRects,
+	EmfPlusRecordTypeDrawRects,
+	EmfPlusRecordTypeFillPolygon,
+	EmfPlusRecordTypeDrawLines,
+	EmfPlusRecordTypeFillEllipse,
+	EmfPlusRecordTypeDrawEllipse,
+	EmfPlusRecordTypeFillPie,
+	EmfPlusRecordTypeDrawPie,
+	EmfPlusRecordTypeDrawArc,
+	EmfPlusRecordTypeFillRegion,
+	EmfPlusRecordTypeFillPath,
+	EmfPlusRecordTypeDrawPath,
+	EmfPlusRecordTypeFillClosedCurve,
+	EmfPlusRecordTypeDrawClosedCurve,
+	EmfPlusRecordTypeDrawCurve,
+	EmfPlusRecordTypeDrawBeziers,
+	EmfPlusRecordTypeDrawImage,
+	EmfPlusRecordTypeDrawImagePoints,
+	EmfPlusRecordTypeDrawString,
+	EmfPlusRecordTypeSetRenderingOrigin,
+	EmfPlusRecordTypeSetAntiAliasMode,
+	EmfPlusRecordTypeSetTextRenderingHint,
+	EmfPlusRecordTypeSetTextContrast,
+	EmfPlusRecordTypeSetGammaValue,
+	EmfPlusRecordTypeSetInterpolationMode,
+	EmfPlusRecordTypeSetPixelOffsetMode,
+	EmfPlusRecordTypeSetCompositingMode,
+	EmfPlusRecordTypeSetCompositingQuality,
+	EmfPlusRecordTypeSave,
+	EmfPlusRecordTypeRestore,
+	EmfPlusRecordTypeBeginContainer,
+	EmfPlusRecordTypeBeginContainerNoParams,
+	EmfPlusRecordTypeEndContainer,
+	EmfPlusRecordTypeSetWorldTransform,
+	EmfPlusRecordTypeResetWorldTransform,
+	EmfPlusRecordTypeMultiplyWorldTransform,
+	EmfPlusRecordTypeTranslateWorldTransform,
+	EmfPlusRecordTypeScaleWorldTransform,
+	EmfPlusRecordTypeRotateWorldTransform,
+	EmfPlusRecordTypeSetPageTransform,
+	EmfPlusRecordTypeResetClip,
+	EmfPlusRecordTypeSetClipRect,
+	EmfPlusRecordTypeSetClipPath,
+	EmfPlusRecordTypeSetClipRegion,
+	EmfPlusRecordTypeOffsetClip,
+	EmfPlusRecordTypeDrawDriverString,
+	EmfPlusRecordTypeStrokeFillPath,
+	EmfPlusRecordTypeSerializableObject,
+	EmfPlusRecordTypeSetTSGraphics,
+	EmfPlusRecordTypeSetTSClip,
+	EmfPlusRecordTotal,
+	EmfPlusRecordTypeMax = EmfPlusRecordTotal-1,
+	EmfPlusRecordTypeMin = EmfPlusRecordTypeHeader
+} EmfPlusRecordType;
+
+typedef enum EmfToWmfBitsFlags {
+	EmfToWmfBitsFlagsDefault = 0,
+	EmfToWmfBitsFlagsEmbedEmf = 1,
+	EmfToWmfBitsFlagsIncludePlaceable = 2,
+	EmfToWmfBitsFlagsNoXORClip = 4
+} EmfToWmfBitsFlags;
+
+typedef enum EmfType {
+	EmfTypeEmfOnly = 3,
+	EmfTypeEmfPlusOnly = 4,
+	EmfTypeEmfPlusDual = 5
+} EmfType;
+
+typedef enum EncoderParameterValueType {
+	EncoderParameterValueTypeByte = 1,
+	EncoderParameterValueTypeASCII = 2,
+	EncoderParameterValueTypeShort = 3,
+	EncoderParameterValueTypeLong = 4,
+	EncoderParameterValueTypeRational = 5,
+	EncoderParameterValueTypeLongRange = 6,
+	EncoderParameterValueTypeUndefined = 7,
+	EncoderParameterValueTypeRationalRange = 8,
+	EncoderParameterValueTypePointer = 9
+} EncoderParameterValueType;
+
+typedef enum EncoderValue {
+	EncoderValueColorTypeCMYK = 0,
+	EncoderValueColorTypeYCCK = 1,
+	EncoderValueCompressionLZW = 2,
+	EncoderValueCompressionCCITT3 = 3,
+	EncoderValueCompressionCCITT4 = 4,
+	EncoderValueCompressionRle = 5,
+	EncoderValueCompressionNone = 6,
+	EncoderValueScanMethodInterlaced = 7,
+	EncoderValueScanMethodNonInterlaced = 8,
+	EncoderValueVersionGif87 = 9,
+	EncoderValueVersionGif89 = 10,
+	EncoderValueRenderProgressive = 11,
+	EncoderValueRenderNonProgressive = 12,
+	EncoderValueTransformRotate90 = 13,
+	EncoderValueTransformRotate180 = 14,
+	EncoderValueTransformRotate270 = 15,
+	EncoderValueTransformFlipHorizontal = 16,
+	EncoderValueTransformFlipVertical = 17,
+	EncoderValueMultiFrame = 18,
+	EncoderValueLastFrame = 19,
+	EncoderValueFlush = 20,
+	EncoderValueFrameDimensionTime = 21,
+	EncoderValueFrameDimensionResolution = 22,
+	EncoderValueFrameDimensionPage = 23
+} EncoderValue;
+
+typedef enum FillMode {
+	FillModeAlternate = 0,
+	FillModeWinding = 1
+} FillMode;
+
+typedef enum FlushIntention {
+	FlushIntentionFlush = 0,
+	FlushIntentionSync = 1
+} FlushIntention;
+
+typedef enum FontStyle {
+	FontStyleRegular = 0,
+	FontStyleBold = 1,
+	FontStyleItalic = 2,
+	FontStyleBoldItalic = 3,
+	FontStyleUnderline = 4,
+	FontStyleStrikeout = 8
+} FontStyle;
+
+typedef enum HatchStyle {
+	HatchStyleHorizontal = 0,
+	HatchStyleVertical = 1,
+	HatchStyleForwardDiagonal = 2,
+	HatchStyleBackwardDiagonal = 3,
+	HatchStyleCross = 4,
+	HatchStyleLargeGrid = 4,
+	HatchStyleDiagonalCross = 5,
+	HatchStyle05Percent = 6,
+	HatchStyle10Percent = 7,
+	HatchStyle20Percent = 8,
+	HatchStyle25Percent = 9,
+	HatchStyle30Percent = 10,
+	HatchStyle40Percent = 11,
+	HatchStyle50Percent = 12,
+	HatchStyle60Percent = 13,
+	HatchStyle70Percent = 14,
+	HatchStyle75Percent = 15,
+	HatchStyle80Percent = 16,
+	HatchStyle90Percent = 17,
+	HatchStyleLightDownwardDiagonal = 18,
+	HatchStyleLightUpwardDiagonal = 19,
+	HatchStyleDarkDownwardDiagonal = 20,
+	HatchStyleDarkUpwardDiagonal = 21,
+	HatchStyleWideDownwardDiagonal = 22,
+	HatchStyleWideUpwardDiagonal = 23,
+	HatchStyleLightVertical = 24,
+	HatchStyleLightHorizontal = 25,
+	HatchStyleNarrowVertical = 26,
+	HatchStyleNarrowHorizontal = 27,
+	HatchStyleDarkVertical = 28,
+	HatchStyleDarkHorizontal = 29,
+	HatchStyleDashedDownwardDiagonal = 30,
+	HatchStyleDashedUpwardDiagonal = 31,
+	HatchStyleDashedHorizontal = 32,
+	HatchStyleDashedVertical = 33,
+	HatchStyleSmallConfetti = 34,
+	HatchStyleLargeConfetti = 35,
+	HatchStyleZigZag = 36,
+	HatchStyleWave = 37,
+	HatchStyleDiagonalBrick = 38,
+	HatchStyleHorizontalBrick = 39,
+	HatchStyleWeave = 40,
+	HatchStylePlaid = 41,
+	HatchStyleDivot = 42,
+	HatchStyleDottedGrid = 43,
+	HatchStyleDottedDiamond = 44,
+	HatchStyleShingle = 45,
+	HatchStyleTrellis = 46,
+	HatchStyleSphere = 47,
+	HatchStyleSmallGrid = 48,
+	HatchStyleSmallCheckerBoard = 49,
+	HatchStyleLargeCheckerBoard = 50,
+	HatchStyleOutlinedDiamond = 51,
+	HatchStyleSolidDiamond = 52,
+	HatchStyleTotal = 53,
+	HatchStyleMin = HatchStyleHorizontal,
+	HatchStyleMax = HatchStyleTotal - 1
+} HatchStyle;
+
+typedef enum HotkeyPrefix {
+	HotkeyPrefixNone = 0,
+	HotkeyPrefixShow = 1,
+	HotkeyPrefixHide = 2
+} HotkeyPrefix;
+
+typedef enum ImageType {
+	ImageTypeUnknown = 0,
+	ImageTypeBitmap = 1,
+	ImageTypeMetafile = 2
+} ImageType;
+
+/* TODO: InterpolationMode */
+typedef enum InterpolationMode {
+	/*InterpolationModeInvalid = QualityModeInvalid,*/
+	InterpolationModeDefault = 0,
+	InterpolationModeLowQuality = 1,
+	InterpolationModeHighQuality = 2,
+	InterpolationModeBilinear = 3,
+	InterpolationModeBicubic = 4,
+	InterpolationModeNearestNeighbor = 5,
+	InterpolationModeHighQualityBilinear = 6,
+	InterpolationModeHighQualityBicubic = 7
+} InterpolationMode;
+
+typedef enum LinearGradientMode {
+	LinearGradientModeHorizontal = 0,
+	LinearGradientModeVertical = 1,
+	LinearGradientModeForwardDiagonal = 2,
+	LinearGradientModeBackwardDiagonal = 3 
+} LinearGradientMode;
+
+typedef enum LineCap {
+	LineCapFlat = 0,
+	LineCapSquare = 1,
+	LineCapRound = 2,
+	LineCapTriangle = 3,
+	LineCapNoAnchor = 16,
+	LineCapSquareAnchor = 17,
+	LineCapRoundAnchor = 18,
+	LineCapDiamondAnchor = 19,
+	LineCapArrowAnchor = 20,
+	LineCapCustom = 255
+} LineCap;
+
+typedef enum LineJoin {
+	LineJoinMiter = 0,
+	LineJoinBevel = 1,
+	LineJoinRound = 2,
+	LineJoinMiterClipped = 3
+} LineJoin;
+
+typedef enum MatrixOrder {
+	MatrixOrderPrepend = 0,
+	MatrixOrderAppend = 1
+} MatrixOrder;
+
+typedef enum MetafileFrameUnit {
+	MetafileFrameUnitPixel = 2,
+	MetafileFrameUnitPoint = 3,
+	MetafileFrameUnitInch = 4,
+	MetafileFrameUnitDocument = 5,
+	MetafileFrameUnitMillimeter = 6,
+	MetafileFrameUnitGdi = 7
+} MetafileFrameUnit;
+
+typedef enum MetafileType {
+	MetafileTypeInvalid = 0,
+	MetafileTypeWmf = 1,
+	MetafileTypeWmfPlaceable = 2,
+	MetafileTypeEmf = 3,
+	MetafileTypeEmfPlusOnly = 4,
+	MetafileTypeEmfPlusDual = 5
+} MetafileType;
+
+typedef enum ObjectType {
+	ObjectTypeInvalid = 0,
+	ObjectTypeBrush = 1,
+	ObjectTypePen = 2,
+	ObjectTypePath = 3,
+	ObjectTypeRegion = 4,
+	ObjectTypeFont = 5,
+	ObjectTypeStringFormat = 6,
+	ObjectTypeImageAttributes = 7,
+	ObjectTypeCustomLineCap = 8,
+	ObjectTypeGraphics = 9,
+	ObjectTypeMin = ObjectTypeBrush,
+	ObjectTypeMax = ObjectTypeGraphics
+} ObjectType;
+
+typedef enum PathPointType {
+	PathPointTypeStart = 0x00,
+	PathPointTypeLine = 0x01,
+	PathPointTypeBezier = 0x03,
+	PathPointTypeBezier3 = 0x03,
+	PathPointTypePathTypeMask = 0x07,
+	PathPointTypePathDashMode = 0x10,
+	PathPointTypePathMarker = 0x20,
+	PathPointTypeCloseSubpath = 0x80
+} PathPointType;
+
+typedef enum PenAlignment {
+	PenAlignmentCenter = 0,
+	PenAlignmentInset = 1
+} PenAlignment;
+
+typedef enum PenType {
+	PenTypeUnknown = -1, 
+	PenTypeSolidColor = 0,
+	PenTypeHatchFill = 1,
+	PenTypeTextureFill = 2,
+	PenTypePathGradient = 3,
+	PenTypeLinearGradient = 4
+} PenType;
+
+/* TODO: PixelOffsetMode */
+typedef enum PixelOffsetMode {
+	/*PixelOffsetModeInvalid = QualityModeInvalid,*/
+	PixelOffsetModeDefault = 0,
+	PixelOffsetModeHighSpeed = 1,
+	PixelOffsetModeHighQuality = 2,
+	PixelOffsetModeNone = 3,
+	PixelOffsetModeHalf = 4
+} PixelOffsetMode;
+
+/* TODO: QualityMode */
+typedef enum QualityMode {
+	/*QualityModeInvalid = ?,*/
+	QualityModeDefault = 0,
+	QualityModeLow = 1,
+	QualityModeHigh = 2
+} QualityMode;
+
+/* TODO: SmoothingMode */
+typedef enum SmoothingMode {
+	/*SmoothingModeInvalid = QualityModeInvalid,*/
+	SmoothingModeDefault = 0,
+	SmoothingModeHighSpeed = 1,
+	SmoothingModeHighQuality = 2,
+	SmoothingModeNone = 3,
+	SmoothingModeAntiAlias8x4 = 4,
+	SmoothingModeAntiAlias = 4,
+	SmoothingModeAntiAlias8x8 = 5
+} SmoothingMode;
+
+typedef enum StringAlignment {
+	StringAlignmentNear = 0,
+	StringAlignmentCenter = 1,
+	StringAlignmentFar = 2
+} StringAlignment;
+
+typedef enum StringDigitSubstitute {
+	StringDigitSubstituteUser = 0,
+	StringDigitSubstituteNone = 1,
+	StringDigitSubstituteNational = 2,
+	StringDigitSubstituteTraditional = 3
+} StringDigitSubstitute;
+
+typedef enum StringFormatFlags {
+	StringFormatFlagsDirectionRightToLeft = 0x00000001,
+	StringFormatFlagsDirectionVertical = 0x00000002,
+	StringFormatFlagsNoFitBlackBox = 0x00000004,
+	StringFormatFlagsDisplayFormatControl = 0x00000020,
+	StringFormatFlagsNoFontFallback = 0x00000400,
+	StringFormatFlagsMeasureTrailingSpaces = 0x00000800,
+	StringFormatFlagsNoWrap = 0x00001000,
+	StringFormatFlagsLineLimit = 0x00002000,
+	StringFormatFlagsNoClip = 0x00004000
+} StringFormatFlags;
+
+typedef enum StringTrimming {
+	StringTrimmingNone = 0,
+	StringTrimmingCharacter = 1,
+	StringTrimmingWord = 2,
+	StringTrimmingEllipsisCharacter = 3,
+	StringTrimmingEllipsisWord = 4,
+	StringTrimmingEllipsisPath = 5
+} StringTrimming;
+
+typedef enum TextRenderingHint {
+	TextRenderingHintSystemDefault = 0,
+	TextRenderingHintSingleBitPerPixelGridFit = 1,
+	TextRenderingHintSingleBitPerPixel = 2,
+	TextRenderingHintAntiAliasGridFit = 3,
+	TextRenderingHintAntiAlias = 4,
+	TextRenderingHintClearTypeGridFit = 5
+} TextRenderingHint;
+
+typedef enum Unit {
+	UnitWorld = 0,
+	UnitDisplay = 1,
+	UnitPixel = 2,
+	UnitPoint = 3,
+	UnitInch = 4,
+	UnitDocument = 5,
+	UnitMillimeter = 6
+} Unit;
+
+typedef enum WarpMode {
+	WarpModePerspective = 0,
+	WarpModeBilinear = 1
+} WarpMode;
+
+typedef enum WrapMode {
+	WrapModeTile = 0,
+	WrapModeTileFlipX = 1,
+	WrapModeTileFlipY = 2,
+	WrapModeTileFlipXY = 3,
+	WrapModeClamp = 4
+} WrapMode;
+
+typedef enum GpTestControlEnum {
+	TestControlForceBilinear = 0,
+	TestControlForceNoICM = 1,
+	TestControlGetBuildNumber = 2
+} GpTestControlEnum;
+
+/* Opaque handles to information blocks on an internal GDI+ stack. */
+typedef DWORD GraphicsContainer;
+typedef DWORD GraphicsState;
+
+/* Default flatness for GraphicsPath methods Flatten, Outline, Warp, Widen */
+/* FIXME: Is FlatnessDefault = 0.25f correct? */
+#ifdef __cplusplus
+const REAL FlatnessDefault = 0.25f;
+#else
+#define FlatnessDefault ((REAL) 0.25f)
+#endif
+
+static __inline__ BOOL ObjectTypeIsValid(ObjectType type)
+{
+	switch (type) {
+		case ObjectTypeBrush:
+		case ObjectTypePen:
+		case ObjectTypePath:
+		case ObjectTypeRegion:
+		case ObjectTypeFont:
+		case ObjectTypeStringFormat:
+		case ObjectTypeImageAttributes:
+		case ObjectTypeCustomLineCap:
+		case ObjectTypeGraphics:
+			return TRUE;
+		default:
+			return FALSE;
+	}
+}
+
+#endif /* __GDIPLUS_ENUMS_H */
Index: Daodan/MinGW/include/gdiplus/gdiplusflat.h
===================================================================
--- Daodan/MinGW/include/gdiplus/gdiplusflat.h	(revision 1046)
+++ Daodan/MinGW/include/gdiplus/gdiplusflat.h	(revision 1046)
@@ -0,0 +1,722 @@
+/*
+ * gdiplusflat.h
+ *
+ * GDI+ Flat API
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Markus Koenig <markus@stber-koenig.de>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __GDIPLUS_FLAT_H
+#define __GDIPLUS_FLAT_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+namespace DllExports {
+extern "C" {
+#endif
+
+/* AdjustableArrowCap functions */
+GpStatus WINGDIPAPI GdipCreateAdjustableArrowCap(REAL,REAL,BOOL,GpAdjustableArrowCap**);
+GpStatus WINGDIPAPI GdipSetAdjustableArrowCapHeight(GpAdjustableArrowCap*,REAL);
+GpStatus WINGDIPAPI GdipGetAdjustableArrowCapHeight(GpAdjustableArrowCap*,REAL*);
+GpStatus WINGDIPAPI GdipSetAdjustableArrowCapWidth(GpAdjustableArrowCap*,REAL);
+GpStatus WINGDIPAPI GdipGetAdjustableArrowCapWidth(GpAdjustableArrowCap*,REAL*);
+GpStatus WINGDIPAPI GdipSetAdjustableArrowCapMiddleInset(GpAdjustableArrowCap*,REAL);
+GpStatus WINGDIPAPI GdipGetAdjustableArrowCapMiddleInset(GpAdjustableArrowCap*,REAL*);
+GpStatus WINGDIPAPI GdipSetAdjustableArrowCapFillState(GpAdjustableArrowCap*,BOOL);
+GpStatus WINGDIPAPI GdipGetAdjustableArrowCapFillState(GpAdjustableArrowCap*,BOOL*);
+
+/* Bitmap functions */
+GpStatus WINGDIPAPI GdipCreateBitmapFromStream(IStream*,GpBitmap**);
+GpStatus WINGDIPAPI GdipCreateBitmapFromFile(GDIPCONST WCHAR*,GpBitmap**);
+GpStatus WINGDIPAPI GdipCreateBitmapFromStreamICM(IStream*,GpBitmap**);
+GpStatus WINGDIPAPI GdipCreateBitmapFromFileICM(GDIPCONST WCHAR*,GpBitmap**);
+GpStatus WINGDIPAPI GdipCreateBitmapFromScan0(INT,INT,INT,PixelFormat,BYTE*,GpBitmap**);
+GpStatus WINGDIPAPI GdipCreateBitmapFromGraphics(INT,INT,GpGraphics*,GpBitmap**);
+GpStatus WINGDIPAPI GdipCreateBitmapFromDirectDrawSurface(IDirectDrawSurface7*,GpBitmap**);
+GpStatus WINGDIPAPI GdipCreateBitmapFromGdiDib(GDIPCONST BITMAPINFO*,VOID*,GpBitmap**);
+GpStatus WINGDIPAPI GdipCreateBitmapFromHBITMAP(HBITMAP,HPALETTE,GpBitmap**);
+GpStatus WINGDIPAPI GdipCreateHBITMAPFromBitmap(GpBitmap*,HBITMAP*,ARGB);
+GpStatus WINGDIPAPI GdipCreateBitmapFromHICON(HICON,GpBitmap**);
+GpStatus WINGDIPAPI GdipCreateHICONFromBitmap(GpBitmap*,HICON*);
+GpStatus WINGDIPAPI GdipCreateBitmapFromResource(HINSTANCE,GDIPCONST WCHAR*,GpBitmap**);
+GpStatus WINGDIPAPI GdipCloneBitmapArea(REAL,REAL,REAL,REAL,PixelFormat,GpBitmap*,GpBitmap**);
+GpStatus WINGDIPAPI GdipCloneBitmapAreaI(INT,INT,INT,INT,PixelFormat,GpBitmap*,GpBitmap**);
+GpStatus WINGDIPAPI GdipBitmapLockBits(GpBitmap*,GDIPCONST GpRect*,UINT,PixelFormat,BitmapData*);
+GpStatus WINGDIPAPI GdipBitmapUnlockBits(GpBitmap*,BitmapData*);
+GpStatus WINGDIPAPI GdipBitmapGetPixel(GpBitmap*,INT,INT,ARGB*);
+GpStatus WINGDIPAPI GdipBitmapSetPixel(GpBitmap*,INT,INT,ARGB);
+GpStatus WINGDIPAPI GdipBitmapSetResolution(GpBitmap*,REAL,REAL);
+GpStatus WINGDIPAPI GdipBitmapConvertFormat(GpBitmap*,PixelFormat,DitherType,PaletteType,ColorPalette*,REAL);
+GpStatus WINGDIPAPI GdipInitializePalette(ColorPalette*,PaletteType,INT,BOOL,GpBitmap*);
+GpStatus WINGDIPAPI GdipBitmapApplyEffect(GpBitmap*,CGpEffect*,RECT*,BOOL,VOID**,INT*);
+GpStatus WINGDIPAPI GdipBitmapCreateApplyEffect(GpBitmap**,INT,CGpEffect*,RECT*,RECT*,GpBitmap**,BOOL,VOID**,INT*);
+GpStatus WINGDIPAPI GdipBitmapGetHistogram(GpBitmap*,HistogramFormat,UINT,UINT*,UINT*,UINT*,UINT*);
+GpStatus WINGDIPAPI GdipBitmapGetHistogramSize(HistogramFormat,UINT*);
+
+/* Brush functions */
+GpStatus WINGDIPAPI GdipCloneBrush(GpBrush*,GpBrush**);
+GpStatus WINGDIPAPI GdipDeleteBrush(GpBrush*);
+GpStatus WINGDIPAPI GdipGetBrushType(GpBrush*,GpBrushType*);
+
+/* CachedBitmap functions */
+GpStatus WINGDIPAPI GdipCreateCachedBitmap(GpBitmap*,GpGraphics*,GpCachedBitmap**);
+GpStatus WINGDIPAPI GdipDeleteCachedBitmap(GpCachedBitmap*);
+GpStatus WINGDIPAPI GdipDrawCachedBitmap(GpGraphics*,GpCachedBitmap*,INT,INT);
+
+/* CustomLineCap functions */
+GpStatus WINGDIPAPI GdipCreateCustomLineCap(GpPath*,GpPath*,GpLineCap,REAL,GpCustomLineCap**);
+GpStatus WINGDIPAPI GdipDeleteCustomLineCap(GpCustomLineCap*);
+GpStatus WINGDIPAPI GdipCloneCustomLineCap(GpCustomLineCap*,GpCustomLineCap**);
+GpStatus WINGDIPAPI GdipGetCustomLineCapType(GpCustomLineCap*,CustomLineCapType*);
+GpStatus WINGDIPAPI GdipSetCustomLineCapStrokeCaps(GpCustomLineCap*,GpLineCap,GpLineCap);
+GpStatus WINGDIPAPI GdipGetCustomLineCapStrokeCaps(GpCustomLineCap*,GpLineCap*,GpLineCap*);
+GpStatus WINGDIPAPI GdipSetCustomLineCapStrokeJoin(GpCustomLineCap*,GpLineJoin);
+GpStatus WINGDIPAPI GdipGetCustomLineCapStrokeJoin(GpCustomLineCap*,GpLineJoin*);
+GpStatus WINGDIPAPI GdipSetCustomLineCapBaseCap(GpCustomLineCap*,GpLineCap);
+GpStatus WINGDIPAPI GdipGetCustomLineCapBaseCap(GpCustomLineCap*,GpLineCap*);
+GpStatus WINGDIPAPI GdipSetCustomLineCapBaseInset(GpCustomLineCap*,REAL);
+GpStatus WINGDIPAPI GdipGetCustomLineCapBaseInset(GpCustomLineCap*,REAL*);
+GpStatus WINGDIPAPI GdipSetCustomLineCapWidthScale(GpCustomLineCap*,REAL);
+GpStatus WINGDIPAPI GdipGetCustomLineCapWidthScale(GpCustomLineCap*,REAL*);
+
+/* Effect functions */
+GpStatus WINGDIPAPI GdipCreateEffect(GDIPCONST GUID,CGpEffect**);
+GpStatus WINGDIPAPI GdipDeleteEffect(CGpEffect*);
+GpStatus WINGDIPAPI GdipGetEffectParameterSize(CGpEffect*,UINT*);
+GpStatus WINGDIPAPI GdipSetEffectParameters(CGpEffect*,GDIPCONST VOID*,UINT);
+GpStatus WINGDIPAPI GdipGetEffectParameters(CGpEffect*,UINT*,VOID*);
+
+/* Font functions */
+GpStatus WINGDIPAPI GdipCreateFontFromDC(HDC,GpFont**);
+GpStatus WINGDIPAPI GdipCreateFontFromLogfontA(HDC,GDIPCONST LOGFONTA*,GpFont**);
+GpStatus WINGDIPAPI GdipCreateFontFromLogfontW(HDC,GDIPCONST LOGFONTW*,GpFont**);
+GpStatus WINGDIPAPI GdipCreateFont(GDIPCONST GpFontFamily*,REAL,INT,Unit,GpFont**);
+GpStatus WINGDIPAPI GdipCloneFont(GpFont*,GpFont**);
+GpStatus WINGDIPAPI GdipDeleteFont(GpFont*);
+GpStatus WINGDIPAPI GdipGetFamily(GpFont*,GpFontFamily**);
+GpStatus WINGDIPAPI GdipGetFontStyle(GpFont*,INT*);
+GpStatus WINGDIPAPI GdipGetFontSize(GpFont*,REAL*);
+GpStatus WINGDIPAPI GdipGetFontUnit(GpFont*,Unit*);
+GpStatus WINGDIPAPI GdipGetFontHeight(GDIPCONST GpFont*,GDIPCONST GpGraphics*,REAL*);
+GpStatus WINGDIPAPI GdipGetFontHeightGivenDPI(GDIPCONST GpFont*,REAL,REAL*);
+GpStatus WINGDIPAPI GdipGetLogFontA(GpFont*,GpGraphics*,LOGFONTA*);
+GpStatus WINGDIPAPI GdipGetLogFontW(GpFont*,GpGraphics*,LOGFONTW*);
+GpStatus WINGDIPAPI GdipNewInstalledFontCollection(GpFontCollection**);
+GpStatus WINGDIPAPI GdipNewPrivateFontCollection(GpFontCollection**);
+GpStatus WINGDIPAPI GdipDeletePrivateFontCollection(GpFontCollection**);
+GpStatus WINGDIPAPI GdipGetFontCollectionFamilyCount(GpFontCollection*,INT*);
+GpStatus WINGDIPAPI GdipGetFontCollectionFamilyList(GpFontCollection*,INT,GpFontFamily**,INT*);
+GpStatus WINGDIPAPI GdipPrivateAddFontFile(GpFontCollection*,GDIPCONST WCHAR*);
+GpStatus WINGDIPAPI GdipPrivateAddMemoryFont(GpFontCollection*,GDIPCONST void*,INT);
+
+/* FontFamily functions */
+GpStatus WINGDIPAPI GdipCreateFontFamilyFromName(GDIPCONST WCHAR*,GpFontCollection*,GpFontFamily**);
+GpStatus WINGDIPAPI GdipDeleteFontFamily(GpFontFamily*);
+GpStatus WINGDIPAPI GdipCloneFontFamily(GpFontFamily*,GpFontFamily**);
+GpStatus WINGDIPAPI GdipGetGenericFontFamilySansSerif(GpFontFamily**);
+GpStatus WINGDIPAPI GdipGetGenericFontFamilySerif(GpFontFamily**);
+GpStatus WINGDIPAPI GdipGetGenericFontFamilyMonospace(GpFontFamily**);
+GpStatus WINGDIPAPI GdipGetFamilyName(GDIPCONST GpFontFamily*,WCHAR[LF_FACESIZE],LANGID);
+GpStatus WINGDIPAPI GdipIsStyleAvailable(GDIPCONST GpFontFamily*,INT,BOOL*);
+GpStatus WINGDIPAPI GdipFontCollectionEnumerable(GpFontCollection*,GpGraphics*,INT*);
+GpStatus WINGDIPAPI GdipFontCollectionEnumerate(GpFontCollection*,INT,GpFontFamily**,INT*,GpGraphics*);
+GpStatus WINGDIPAPI GdipGetEmHeight(GDIPCONST GpFontFamily*,INT,UINT16*);
+GpStatus WINGDIPAPI GdipGetCellAscent(GDIPCONST GpFontFamily*,INT,UINT16*);
+GpStatus WINGDIPAPI GdipGetCellDescent(GDIPCONST GpFontFamily*,INT,UINT16*);
+GpStatus WINGDIPAPI GdipGetLineSpacing(GDIPCONST GpFontFamily*,INT,UINT16*);
+
+/* Graphics functions */
+GpStatus WINGDIPAPI GdipFlush(GpGraphics*,GpFlushIntention);
+GpStatus WINGDIPAPI GdipCreateFromHDC(HDC,GpGraphics**);
+GpStatus WINGDIPAPI GdipCreateFromHDC2(HDC,HANDLE,GpGraphics**);
+GpStatus WINGDIPAPI GdipCreateFromHWND(HWND,GpGraphics**);
+GpStatus WINGDIPAPI GdipCreateFromHWNDICM(HWND,GpGraphics**);
+GpStatus WINGDIPAPI GdipDeleteGraphics(GpGraphics*);
+GpStatus WINGDIPAPI GdipGetDC(GpGraphics*,HDC*);
+GpStatus WINGDIPAPI GdipReleaseDC(GpGraphics*,HDC);
+GpStatus WINGDIPAPI GdipSetCompositingMode(GpGraphics*,CompositingMode);
+GpStatus WINGDIPAPI GdipGetCompositingMode(GpGraphics*,CompositingMode*);
+GpStatus WINGDIPAPI GdipSetRenderingOrigin(GpGraphics*,INT,INT);
+GpStatus WINGDIPAPI GdipGetRenderingOrigin(GpGraphics*,INT*,INT*);
+GpStatus WINGDIPAPI GdipSetCompositingQuality(GpGraphics*,CompositingQuality);
+GpStatus WINGDIPAPI GdipGetCompositingQuality(GpGraphics*,CompositingQuality*);
+GpStatus WINGDIPAPI GdipSetSmoothingMode(GpGraphics*,SmoothingMode);
+GpStatus WINGDIPAPI GdipGetSmoothingMode(GpGraphics*,SmoothingMode*);
+GpStatus WINGDIPAPI GdipSetPixelOffsetMode(GpGraphics*,PixelOffsetMode);
+GpStatus WINGDIPAPI GdipGetPixelOffsetMode(GpGraphics*,PixelOffsetMode*);
+GpStatus WINGDIPAPI GdipSetTextRenderingHint(GpGraphics*,TextRenderingHint);
+GpStatus WINGDIPAPI GdipGetTextRenderingHint(GpGraphics*,TextRenderingHint*);
+GpStatus WINGDIPAPI GdipSetTextContrast(GpGraphics*,UINT);
+GpStatus WINGDIPAPI GdipGetTextContrast(GpGraphics*,UINT*);
+GpStatus WINGDIPAPI GdipSetInterpolationMode(GpGraphics*,InterpolationMode);
+GpStatus WINGDIPAPI GdipGraphicsSetAbort(GpGraphics*,GdiplusAbort*);
+GpStatus WINGDIPAPI GdipGetInterpolationMode(GpGraphics*,InterpolationMode*);
+GpStatus WINGDIPAPI GdipSetWorldTransform(GpGraphics*,GpMatrix*);
+GpStatus WINGDIPAPI GdipResetWorldTransform(GpGraphics*);
+GpStatus WINGDIPAPI GdipMultiplyWorldTransform(GpGraphics*,GDIPCONST GpMatrix*,GpMatrixOrder);
+GpStatus WINGDIPAPI GdipTranslateWorldTransform(GpGraphics*,REAL,REAL,GpMatrixOrder);
+GpStatus WINGDIPAPI GdipScaleWorldTransform(GpGraphics*,REAL,REAL,GpMatrixOrder);
+GpStatus WINGDIPAPI GdipRotateWorldTransform(GpGraphics*,REAL,GpMatrixOrder);
+GpStatus WINGDIPAPI GdipGetWorldTransform(GpGraphics*,GpMatrix*);
+GpStatus WINGDIPAPI GdipResetPageTransform(GpGraphics*);
+GpStatus WINGDIPAPI GdipGetPageUnit(GpGraphics*,GpUnit*);
+GpStatus WINGDIPAPI GdipGetPageScale(GpGraphics*,REAL*);
+GpStatus WINGDIPAPI GdipSetPageUnit(GpGraphics*,GpUnit);
+GpStatus WINGDIPAPI GdipSetPageScale(GpGraphics*,REAL);
+GpStatus WINGDIPAPI GdipGetDpiX(GpGraphics*,REAL*);
+GpStatus WINGDIPAPI GdipGetDpiY(GpGraphics*,REAL*);
+GpStatus WINGDIPAPI GdipTransformPoints(GpGraphics*,GpCoordinateSpace,GpCoordinateSpace,GpPointF*,INT);
+GpStatus WINGDIPAPI GdipTransformPointsI(GpGraphics*,GpCoordinateSpace,GpCoordinateSpace,GpPoint*,INT);
+GpStatus WINGDIPAPI GdipGetNearestColor(GpGraphics*,ARGB*);
+HPALETTE WINGDIPAPI GdipCreateHalftonePalette(void);
+GpStatus WINGDIPAPI GdipDrawLine(GpGraphics*,GpPen*,REAL,REAL,REAL,REAL);
+GpStatus WINGDIPAPI GdipDrawLineI(GpGraphics*,GpPen*,INT,INT,INT,INT);
+GpStatus WINGDIPAPI GdipDrawLines(GpGraphics*,GpPen*,GDIPCONST GpPointF*,INT);
+GpStatus WINGDIPAPI GdipDrawLinesI(GpGraphics*,GpPen*,GDIPCONST GpPoint*,INT);
+GpStatus WINGDIPAPI GdipDrawArc(GpGraphics*,GpPen*,REAL,REAL,REAL,REAL,REAL,REAL);
+GpStatus WINGDIPAPI GdipDrawArcI(GpGraphics*,GpPen*,INT,INT,INT,INT,REAL,REAL);
+GpStatus WINGDIPAPI GdipDrawBezier(GpGraphics*,GpPen*,REAL,REAL,REAL,REAL,REAL,REAL,REAL,REAL);
+GpStatus WINGDIPAPI GdipDrawBezierI(GpGraphics*,GpPen*,INT,INT,INT,INT,INT,INT,INT,INT);
+GpStatus WINGDIPAPI GdipDrawBeziers(GpGraphics*,GpPen*,GDIPCONST GpPointF*,INT);
+GpStatus WINGDIPAPI GdipDrawBeziersI(GpGraphics*,GpPen*,GDIPCONST GpPoint*,INT);
+GpStatus WINGDIPAPI GdipDrawRectangle(GpGraphics*,GpPen*,REAL,REAL,REAL,REAL);
+GpStatus WINGDIPAPI GdipDrawRectangleI(GpGraphics*,GpPen*,INT,INT,INT,INT);
+GpStatus WINGDIPAPI GdipDrawRectangles(GpGraphics*,GpPen*,GDIPCONST GpRectF*,INT);
+GpStatus WINGDIPAPI GdipDrawRectanglesI(GpGraphics*,GpPen*,GDIPCONST GpRect*,INT);
+GpStatus WINGDIPAPI GdipDrawEllipse(GpGraphics*,GpPen*,REAL,REAL,REAL,REAL);
+GpStatus WINGDIPAPI GdipDrawEllipseI(GpGraphics*,GpPen*,INT,INT,INT,INT);
+GpStatus WINGDIPAPI GdipDrawPie(GpGraphics*,GpPen*,REAL,REAL,REAL,REAL,REAL,REAL);
+GpStatus WINGDIPAPI GdipDrawPieI(GpGraphics*,GpPen*,INT,INT,INT,INT,REAL,REAL);
+GpStatus WINGDIPAPI GdipDrawPolygon(GpGraphics*,GpPen*,GDIPCONST GpPointF*,INT);
+GpStatus WINGDIPAPI GdipDrawPolygonI(GpGraphics*,GpPen*,GDIPCONST GpPoint*,INT);
+GpStatus WINGDIPAPI GdipDrawPath(GpGraphics*,GpPen*,GpPath*);
+GpStatus WINGDIPAPI GdipDrawCurve(GpGraphics*,GpPen*,GDIPCONST GpPointF*,INT);
+GpStatus WINGDIPAPI GdipDrawCurveI(GpGraphics*,GpPen*,GDIPCONST GpPoint*,INT);
+GpStatus WINGDIPAPI GdipDrawCurve2(GpGraphics*,GpPen*,GDIPCONST GpPointF*,INT,REAL);
+GpStatus WINGDIPAPI GdipDrawCurve2I(GpGraphics*,GpPen*,GDIPCONST GpPoint*,INT,REAL);
+GpStatus WINGDIPAPI GdipDrawCurve3(GpGraphics*,GpPen*,GDIPCONST GpPointF*,INT,INT,INT,REAL);
+GpStatus WINGDIPAPI GdipDrawCurve3I(GpGraphics*,GpPen*,GDIPCONST GpPoint*,INT,INT,INT,REAL);
+GpStatus WINGDIPAPI GdipDrawClosedCurve(GpGraphics*,GpPen*,GDIPCONST GpPointF*,INT);
+GpStatus WINGDIPAPI GdipDrawClosedCurveI(GpGraphics*,GpPen*,GDIPCONST GpPoint*,INT);
+GpStatus WINGDIPAPI GdipDrawClosedCurve2(GpGraphics*,GpPen*,GDIPCONST GpPointF*,INT,REAL);
+GpStatus WINGDIPAPI GdipDrawClosedCurve2I(GpGraphics*,GpPen*,GDIPCONST GpPoint*,INT,REAL);
+GpStatus WINGDIPAPI GdipGraphicsClear(GpGraphics*,ARGB);
+GpStatus WINGDIPAPI GdipFillRectangle(GpGraphics*,GpBrush*,REAL,REAL,REAL,REAL);
+GpStatus WINGDIPAPI GdipFillRectangleI(GpGraphics*,GpBrush*,INT,INT,INT,INT);
+GpStatus WINGDIPAPI GdipFillRectangles(GpGraphics*,GpBrush*,GDIPCONST GpRectF*,INT);
+GpStatus WINGDIPAPI GdipFillRectanglesI(GpGraphics*,GpBrush*,GDIPCONST GpRect*,INT);
+GpStatus WINGDIPAPI GdipFillPolygon(GpGraphics*,GpBrush*,GDIPCONST GpPointF*,INT,GpFillMode);
+GpStatus WINGDIPAPI GdipFillPolygonI(GpGraphics*,GpBrush*,GDIPCONST GpPoint*,INT,GpFillMode);
+GpStatus WINGDIPAPI GdipFillPolygon2(GpGraphics*,GpBrush*,GDIPCONST GpPointF*,INT);
+GpStatus WINGDIPAPI GdipFillPolygon2I(GpGraphics*,GpBrush*,GDIPCONST GpPoint*,INT);
+GpStatus WINGDIPAPI GdipFillEllipse(GpGraphics*,GpBrush*,REAL,REAL,REAL,REAL);
+GpStatus WINGDIPAPI GdipFillEllipseI(GpGraphics*,GpBrush*,INT,INT,INT,INT);
+GpStatus WINGDIPAPI GdipFillPie(GpGraphics*,GpBrush*,REAL,REAL,REAL,REAL,REAL,REAL);
+GpStatus WINGDIPAPI GdipFillPieI(GpGraphics*,GpBrush*,INT,INT,INT,INT,REAL,REAL);
+GpStatus WINGDIPAPI GdipFillPath(GpGraphics*,GpBrush*,GpPath*);
+GpStatus WINGDIPAPI GdipFillClosedCurve(GpGraphics*,GpBrush*,GDIPCONST GpPointF*,INT);
+GpStatus WINGDIPAPI GdipFillClosedCurveI(GpGraphics*,GpBrush*,GDIPCONST GpPoint*,INT);
+GpStatus WINGDIPAPI GdipFillClosedCurve2(GpGraphics*,GpBrush*,GDIPCONST GpPointF*,INT,REAL,GpFillMode);
+GpStatus WINGDIPAPI GdipFillClosedCurve2I(GpGraphics*,GpBrush*,GDIPCONST GpPoint*,INT,REAL,GpFillMode);
+GpStatus WINGDIPAPI GdipFillRegion(GpGraphics*,GpBrush*,GpRegion*);
+GpStatus WINGDIPAPI GdipDrawImage(GpGraphics*,GpImage*,REAL,REAL);
+GpStatus WINGDIPAPI GdipDrawImageI(GpGraphics*,GpImage*,INT,INT);
+GpStatus WINGDIPAPI GdipDrawImageRect(GpGraphics*,GpImage*,REAL,REAL,REAL,REAL);
+GpStatus WINGDIPAPI GdipDrawImageRectI(GpGraphics*,GpImage*,INT,INT,INT,INT);
+GpStatus WINGDIPAPI GdipDrawImagePoints(GpGraphics*,GpImage*,GDIPCONST GpPointF*,INT);
+GpStatus WINGDIPAPI GdipDrawImagePointsI(GpGraphics*,GpImage*,GDIPCONST GpPoint*,INT);
+GpStatus WINGDIPAPI GdipDrawImagePointRect(GpGraphics*,GpImage*,REAL,REAL,REAL,REAL,REAL,REAL,GpUnit);
+GpStatus WINGDIPAPI GdipDrawImagePointRectI(GpGraphics*,GpImage*,INT,INT,INT,INT,INT,INT,GpUnit);
+GpStatus WINGDIPAPI GdipDrawImageRectRect(GpGraphics*,GpImage*,REAL,REAL,REAL,REAL,REAL,REAL,REAL,REAL,GpUnit,GDIPCONST GpImageAttributes*,DrawImageAbort,VOID*);
+GpStatus WINGDIPAPI GdipDrawImageRectRectI(GpGraphics*,GpImage*,INT,INT,INT,INT,INT,INT,INT,INT,GpUnit,GDIPCONST GpImageAttributes*,DrawImageAbort,VOID*);
+GpStatus WINGDIPAPI GdipDrawImagePointsRect(GpGraphics*,GpImage*,GDIPCONST GpPointF*,INT,REAL,REAL,REAL,REAL,GpUnit,GDIPCONST GpImageAttributes*,DrawImageAbort,VOID*);
+GpStatus WINGDIPAPI GdipDrawImagePointsRectI(GpGraphics*,GpImage*,GDIPCONST GpPoint*,INT,INT,INT,INT,INT,GpUnit,GDIPCONST GpImageAttributes*,DrawImageAbort,VOID*);
+GpStatus WINGDIPAPI GdipDrawImageFX(GpGraphics*,GpImage*,GpRectF*,GpMatrix*,CGpEffect*,GpImageAttributes*,GpUnit);
+#ifdef __cplusplus
+GpStatus WINGDIPAPI GdipEnumerateMetafileDestPoint(GpGraphics*,GDIPCONST GpMetafile*,GDIPCONST PointF&,EnumerateMetafileProc,VOID*,GDIPCONST GpImageAttributes*);
+GpStatus WINGDIPAPI GdipEnumerateMetafileDestPointI(GpGraphics*,GDIPCONST GpMetafile*,GDIPCONST Point&,EnumerateMetafileProc,VOID*,GDIPCONST GpImageAttributes*);
+GpStatus WINGDIPAPI GdipEnumerateMetafileDestRect(GpGraphics*,GDIPCONST GpMetafile*,GDIPCONST RectF&,EnumerateMetafileProc,VOID*,GDIPCONST GpImageAttributes*);
+GpStatus WINGDIPAPI GdipEnumerateMetafileDestRectI(GpGraphics*,GDIPCONST GpMetafile*,GDIPCONST Rect&,EnumerateMetafileProc,VOID*,GDIPCONST GpImageAttributes*);
+#endif
+GpStatus WINGDIPAPI GdipEnumerateMetafileDestPoints(GpGraphics*,GDIPCONST GpMetafile*,GDIPCONST PointF*,INT,EnumerateMetafileProc,VOID*,GDIPCONST GpImageAttributes*);
+GpStatus WINGDIPAPI GdipEnumerateMetafileDestPointsI(GpGraphics*,GDIPCONST GpMetafile*,GDIPCONST Point*,INT,EnumerateMetafileProc,VOID*,GDIPCONST GpImageAttributes*);
+#ifdef __cplusplus
+GpStatus WINGDIPAPI GdipEnumerateMetafileSrcRectDestPoint(GpGraphics*,GDIPCONST GpMetafile*,GDIPCONST PointF&,GDIPCONST RectF&,Unit,EnumerateMetafileProc,VOID*,GDIPCONST GpImageAttributes*);
+GpStatus WINGDIPAPI GdipEnumerateMetafileSrcRectDestPointI(GpGraphics*,GDIPCONST GpMetafile*,GDIPCONST Point&,GDIPCONST Rect&,Unit,EnumerateMetafileProc,VOID*,GDIPCONST GpImageAttributes*);
+GpStatus WINGDIPAPI GdipEnumerateMetafileSrcRectDestRect(GpGraphics*,GDIPCONST GpMetafile*,GDIPCONST RectF&,GDIPCONST RectF&,Unit,EnumerateMetafileProc,VOID*,GDIPCONST GpImageAttributes*);
+GpStatus WINGDIPAPI GdipEnumerateMetafileSrcRectDestRectI(GpGraphics*,GDIPCONST GpMetafile*,GDIPCONST Rect&,GDIPCONST Rect&,Unit,EnumerateMetafileProc,VOID*,GDIPCONST GpImageAttributes*);
+GpStatus WINGDIPAPI GdipEnumerateMetafileSrcRectDestPoints(GpGraphics*,GDIPCONST GpMetafile*,GDIPCONST PointF*,INT,GDIPCONST RectF&,Unit,EnumerateMetafileProc,VOID*,GDIPCONST GpImageAttributes*);
+GpStatus WINGDIPAPI GdipEnumerateMetafileSrcRectDestPointsI(GpGraphics*,GDIPCONST GpMetafile*,GDIPCONST Point*,INT,GDIPCONST Rect&,Unit,EnumerateMetafileProc,VOID*,GDIPCONST GpImageAttributes*);
+#endif
+GpStatus WINGDIPAPI GdipSetClipGraphics(GpGraphics*,GpGraphics*,CombineMode);
+GpStatus WINGDIPAPI GdipSetClipRect(GpGraphics*,REAL,REAL,REAL,REAL,CombineMode);
+GpStatus WINGDIPAPI GdipSetClipRectI(GpGraphics*,INT,INT,INT,INT,CombineMode);
+GpStatus WINGDIPAPI GdipSetClipPath(GpGraphics*,GpPath*,CombineMode);
+GpStatus WINGDIPAPI GdipSetClipRegion(GpGraphics*,GpRegion*,CombineMode);
+GpStatus WINGDIPAPI GdipSetClipHrgn(GpGraphics*,HRGN,CombineMode);
+GpStatus WINGDIPAPI GdipResetClip(GpGraphics*);
+GpStatus WINGDIPAPI GdipTranslateClip(GpGraphics*,REAL,REAL);
+GpStatus WINGDIPAPI GdipTranslateClipI(GpGraphics*,INT,INT);
+GpStatus WINGDIPAPI GdipGetClip(GpGraphics*,GpRegion*);
+GpStatus WINGDIPAPI GdipGetClipBounds(GpGraphics*,GpRectF*);
+GpStatus WINGDIPAPI GdipGetClipBoundsI(GpGraphics*,GpRect*);
+GpStatus WINGDIPAPI GdipIsClipEmpty(GpGraphics*,BOOL*);
+GpStatus WINGDIPAPI GdipGetVisibleClipBounds(GpGraphics*,GpRectF*);
+GpStatus WINGDIPAPI GdipGetVisibleClipBoundsI(GpGraphics*,GpRect*);
+GpStatus WINGDIPAPI GdipIsVisibleClipEmpty(GpGraphics*,BOOL*);
+GpStatus WINGDIPAPI GdipIsVisiblePoint(GpGraphics*,REAL,REAL,BOOL*);
+GpStatus WINGDIPAPI GdipIsVisiblePointI(GpGraphics*,INT,INT,BOOL*);
+GpStatus WINGDIPAPI GdipIsVisibleRect(GpGraphics*,REAL,REAL,REAL,REAL,BOOL*);
+GpStatus WINGDIPAPI GdipIsVisibleRectI(GpGraphics*,INT,INT,INT,INT,BOOL*);
+GpStatus WINGDIPAPI GdipSaveGraphics(GpGraphics*,GraphicsState*);
+GpStatus WINGDIPAPI GdipRestoreGraphics(GpGraphics*,GraphicsState);
+GpStatus WINGDIPAPI GdipBeginContainer(GpGraphics*,GDIPCONST GpRectF*,GDIPCONST GpRectF*,GpUnit,GraphicsContainer*);
+GpStatus WINGDIPAPI GdipBeginContainerI(GpGraphics*,GDIPCONST GpRect*,GDIPCONST GpRect*,GpUnit,GraphicsContainer*);
+GpStatus WINGDIPAPI GdipBeginContainer2(GpGraphics*,GraphicsContainer*);
+GpStatus WINGDIPAPI GdipEndContainer(GpGraphics*,GraphicsContainer);
+GpStatus WINGDIPAPI GdipComment(GpGraphics*,UINT,GDIPCONST BYTE*);
+
+/* GraphicsPath functions */
+GpStatus WINGDIPAPI GdipCreatePath(GpFillMode,GpPath**);
+GpStatus WINGDIPAPI GdipCreatePath2(GDIPCONST GpPointF*,GDIPCONST BYTE*,INT,GpFillMode,GpPath**);
+GpStatus WINGDIPAPI GdipCreatePath2I(GDIPCONST GpPoint*,GDIPCONST BYTE*,INT,GpFillMode,GpPath**);
+GpStatus WINGDIPAPI GdipClonePath(GpPath*,GpPath**);
+GpStatus WINGDIPAPI GdipDeletePath(GpPath*);
+GpStatus WINGDIPAPI GdipResetPath(GpPath*);
+GpStatus WINGDIPAPI GdipGetPointCount(GpPath*,INT*);
+GpStatus WINGDIPAPI GdipGetPathTypes(GpPath*,BYTE*,INT);
+GpStatus WINGDIPAPI GdipGetPathPoints(GpPath*,GpPointF*,INT);
+GpStatus WINGDIPAPI GdipGetPathPointsI(GpPath*,GpPoint*,INT);
+GpStatus WINGDIPAPI GdipGetPathFillMode(GpPath*,GpFillMode*);
+GpStatus WINGDIPAPI GdipSetPathFillMode(GpPath*,GpFillMode);
+GpStatus WINGDIPAPI GdipGetPathData(GpPath*,GpPathData*);
+GpStatus WINGDIPAPI GdipStartPathFigure(GpPath*);
+GpStatus WINGDIPAPI GdipClosePathFigure(GpPath*);
+GpStatus WINGDIPAPI GdipClosePathFigures(GpPath*);
+GpStatus WINGDIPAPI GdipSetPathMarker(GpPath*);
+GpStatus WINGDIPAPI GdipClearPathMarkers(GpPath*);
+GpStatus WINGDIPAPI GdipReversePath(GpPath*);
+GpStatus WINGDIPAPI GdipGetPathLastPoint(GpPath*,GpPointF*);
+GpStatus WINGDIPAPI GdipAddPathLine(GpPath*,REAL,REAL,REAL,REAL);
+GpStatus WINGDIPAPI GdipAddPathLine2(GpPath*,GDIPCONST GpPointF*,INT);
+GpStatus WINGDIPAPI GdipAddPathArc(GpPath*,REAL,REAL,REAL,REAL,REAL,REAL);
+GpStatus WINGDIPAPI GdipAddPathBezier(GpPath*,REAL,REAL,REAL,REAL,REAL,REAL,REAL,REAL);
+GpStatus WINGDIPAPI GdipAddPathBeziers(GpPath*,GDIPCONST GpPointF*,INT);
+GpStatus WINGDIPAPI GdipAddPathCurve(GpPath*,GDIPCONST GpPointF*,INT);
+GpStatus WINGDIPAPI GdipAddPathCurve2(GpPath*,GDIPCONST GpPointF*,INT,REAL);
+GpStatus WINGDIPAPI GdipAddPathCurve3(GpPath*,GDIPCONST GpPointF*,INT,INT,INT,REAL);
+GpStatus WINGDIPAPI GdipAddPathClosedCurve(GpPath*,GDIPCONST GpPointF*,INT);
+GpStatus WINGDIPAPI GdipAddPathClosedCurve2(GpPath*,GDIPCONST GpPointF*,INT,REAL);
+GpStatus WINGDIPAPI GdipAddPathRectangle(GpPath*,REAL,REAL,REAL,REAL);
+GpStatus WINGDIPAPI GdipAddPathRectangles(GpPath*,GDIPCONST GpRectF*,INT);
+GpStatus WINGDIPAPI GdipAddPathEllipse(GpPath*,REAL,REAL,REAL,REAL);
+GpStatus WINGDIPAPI GdipAddPathPie(GpPath*,REAL,REAL,REAL,REAL,REAL,REAL);
+GpStatus WINGDIPAPI GdipAddPathPolygon(GpPath*,GDIPCONST GpPointF*,INT);
+GpStatus WINGDIPAPI GdipAddPathPath(GpPath*,GDIPCONST GpPath*,BOOL);
+GpStatus WINGDIPAPI GdipAddPathString(GpPath*,GDIPCONST WCHAR*,INT,GDIPCONST GpFontFamily*,INT,REAL,GDIPCONST RectF*,GDIPCONST GpStringFormat*);
+GpStatus WINGDIPAPI GdipAddPathStringI(GpPath*,GDIPCONST WCHAR*,INT,GDIPCONST GpFontFamily*,INT,REAL,GDIPCONST Rect*,GDIPCONST GpStringFormat*);
+GpStatus WINGDIPAPI GdipAddPathLineI(GpPath*,INT,INT,INT,INT);
+GpStatus WINGDIPAPI GdipAddPathLine2I(GpPath*,GDIPCONST GpPoint*,INT);
+GpStatus WINGDIPAPI GdipAddPathArcI(GpPath*,INT,INT,INT,INT,REAL,REAL);
+GpStatus WINGDIPAPI GdipAddPathBezierI(GpPath*,INT,INT,INT,INT,INT,INT,INT,INT);
+GpStatus WINGDIPAPI GdipAddPathBeziersI(GpPath*,GDIPCONST GpPoint*,INT);
+GpStatus WINGDIPAPI GdipAddPathCurveI(GpPath*,GDIPCONST GpPoint*,INT);
+GpStatus WINGDIPAPI GdipAddPathCurve2I(GpPath*,GDIPCONST GpPoint*,INT,REAL);
+GpStatus WINGDIPAPI GdipAddPathCurve3I(GpPath*,GDIPCONST GpPoint*,INT,INT,INT,REAL);
+GpStatus WINGDIPAPI GdipAddPathClosedCurveI(GpPath*,GDIPCONST GpPoint*,INT);
+GpStatus WINGDIPAPI GdipAddPathClosedCurve2I(GpPath*,GDIPCONST GpPoint*,INT,REAL);
+GpStatus WINGDIPAPI GdipAddPathRectangleI(GpPath*,INT,INT,INT,INT);
+GpStatus WINGDIPAPI GdipAddPathRectanglesI(GpPath*,GDIPCONST GpRect*,INT);
+GpStatus WINGDIPAPI GdipAddPathEllipseI(GpPath*,INT,INT,INT,INT);
+GpStatus WINGDIPAPI GdipAddPathPieI(GpPath*,INT,INT,INT,INT,REAL,REAL);
+GpStatus WINGDIPAPI GdipAddPathPolygonI(GpPath*,GDIPCONST GpPoint*,INT);
+GpStatus WINGDIPAPI GdipFlattenPath(GpPath*,GpMatrix*,REAL);
+GpStatus WINGDIPAPI GdipWindingModeOutline(GpPath*,GpMatrix*,REAL);
+GpStatus WINGDIPAPI GdipWidenPath(GpPath*,GpPen*,GpMatrix*,REAL);
+GpStatus WINGDIPAPI GdipWarpPath(GpPath*,GpMatrix*,GDIPCONST GpPointF*,INT,REAL,REAL,REAL,REAL,WarpMode,REAL);
+GpStatus WINGDIPAPI GdipTransformPath(GpPath*,GpMatrix*);
+GpStatus WINGDIPAPI GdipGetPathWorldBounds(GpPath*,GpRectF*,GDIPCONST GpMatrix*,GDIPCONST GpPen*);
+GpStatus WINGDIPAPI GdipGetPathWorldBoundsI(GpPath*,GpRect*,GDIPCONST GpMatrix*,GDIPCONST GpPen*);
+GpStatus WINGDIPAPI GdipIsVisiblePathPoint(GpPath*,REAL,REAL,GpGraphics*,BOOL*);
+GpStatus WINGDIPAPI GdipIsVisiblePathPointI(GpPath*,INT,INT,GpGraphics*,BOOL*);
+GpStatus WINGDIPAPI GdipIsOutlineVisiblePathPoint(GpPath*,REAL,REAL,GpPen*,GpGraphics*,BOOL*);
+GpStatus WINGDIPAPI GdipIsOutlineVisiblePathPointI(GpPath*,INT,INT,GpPen*,GpGraphics*,BOOL*);
+
+/* HatchBrush functions */
+GpStatus WINGDIPAPI GdipCreateHatchBrush(GpHatchStyle,ARGB,ARGB,GpHatch**);
+GpStatus WINGDIPAPI GdipGetHatchStyle(GpHatch*,GpHatchStyle*);
+GpStatus WINGDIPAPI GdipGetHatchForegroundColor(GpHatch*,ARGB*);
+GpStatus WINGDIPAPI GdipGetHatchBackgroundColor(GpHatch*,ARGB*);
+
+/* Image functions */
+GpStatus WINGDIPAPI GdipLoadImageFromStream(IStream*,GpImage**);
+GpStatus WINGDIPAPI GdipLoadImageFromFile(GDIPCONST WCHAR*,GpImage**);
+GpStatus WINGDIPAPI GdipLoadImageFromStreamICM(IStream*,GpImage**);
+GpStatus WINGDIPAPI GdipLoadImageFromFileICM(GDIPCONST WCHAR*,GpImage**);
+GpStatus WINGDIPAPI GdipCloneImage(GpImage*,GpImage**);
+GpStatus WINGDIPAPI GdipDisposeImage(GpImage*);
+GpStatus WINGDIPAPI GdipSaveImageToFile(GpImage*,GDIPCONST WCHAR*,GDIPCONST CLSID*,GDIPCONST EncoderParameters*);
+GpStatus WINGDIPAPI GdipSaveImageToStream(GpImage*,IStream*,GDIPCONST CLSID*,GDIPCONST EncoderParameters*);
+GpStatus WINGDIPAPI GdipSaveAdd(GpImage*,GDIPCONST EncoderParameters*);
+GpStatus WINGDIPAPI GdipSaveAddImage(GpImage*,GpImage*,GDIPCONST EncoderParameters*);
+GpStatus WINGDIPAPI GdipGetImageGraphicsContext(GpImage*,GpGraphics**);
+GpStatus WINGDIPAPI GdipGetImageBounds(GpImage*,GpRectF*,GpUnit*);
+GpStatus WINGDIPAPI GdipGetImageDimension(GpImage*,REAL*,REAL*);
+GpStatus WINGDIPAPI GdipGetImageType(GpImage*,ImageType*);
+GpStatus WINGDIPAPI GdipGetImageWidth(GpImage*,UINT*);
+GpStatus WINGDIPAPI GdipGetImageHeight(GpImage*,UINT*);
+GpStatus WINGDIPAPI GdipGetImageHorizontalResolution(GpImage*,REAL*);
+GpStatus WINGDIPAPI GdipGetImageVerticalResolution(GpImage*,REAL*);
+GpStatus WINGDIPAPI GdipGetImageFlags(GpImage*,UINT*);
+GpStatus WINGDIPAPI GdipGetImageRawFormat(GpImage*,GUID*);
+GpStatus WINGDIPAPI GdipGetImagePixelFormat(GpImage*,PixelFormat*);
+GpStatus WINGDIPAPI GdipGetImageThumbnail(GpImage*,UINT,UINT,GpImage**,GetThumbnailImageAbort,VOID*);
+GpStatus WINGDIPAPI GdipGetEncoderParameterListSize(GpImage*,GDIPCONST CLSID*,UINT*);
+GpStatus WINGDIPAPI GdipGetEncoderParameterList(GpImage*,GDIPCONST CLSID*,UINT,EncoderParameters*);
+GpStatus WINGDIPAPI GdipImageGetFrameDimensionsCount(GpImage*,UINT*);
+GpStatus WINGDIPAPI GdipImageGetFrameDimensionsList(GpImage*,GUID*,UINT);
+GpStatus WINGDIPAPI GdipImageGetFrameCount(GpImage*,GDIPCONST GUID*,UINT*);
+GpStatus WINGDIPAPI GdipImageSelectActiveFrame(GpImage*,GDIPCONST GUID*,UINT);
+GpStatus WINGDIPAPI GdipImageRotateFlip(GpImage*,RotateFlipType);
+GpStatus WINGDIPAPI GdipGetImagePalette(GpImage*,ColorPalette*,INT);
+GpStatus WINGDIPAPI GdipSetImagePalette(GpImage*,GDIPCONST ColorPalette*);
+GpStatus WINGDIPAPI GdipGetImagePaletteSize(GpImage*,INT*);
+GpStatus WINGDIPAPI GdipGetPropertyCount(GpImage*,UINT*);
+GpStatus WINGDIPAPI GdipGetPropertyIdList(GpImage*,UINT,PROPID*);
+GpStatus WINGDIPAPI GdipGetPropertyItemSize(GpImage*,PROPID,UINT*);
+GpStatus WINGDIPAPI GdipGetPropertyItem(GpImage*,PROPID,UINT,PropertyItem*);
+GpStatus WINGDIPAPI GdipGetPropertySize(GpImage*,UINT*,UINT*);
+GpStatus WINGDIPAPI GdipGetAllPropertyItems(GpImage*,UINT,UINT,PropertyItem*);
+GpStatus WINGDIPAPI GdipRemovePropertyItem(GpImage*,PROPID);
+GpStatus WINGDIPAPI GdipSetPropertyItem(GpImage*,GDIPCONST PropertyItem*);
+GpStatus WINGDIPAPI GdipFindFirstImageItem(GpImage*,ImageItemData*);
+GpStatus WINGDIPAPI GdipFindNextImageItem(GpImage*,ImageItemData*);
+GpStatus WINGDIPAPI GdipGetImageItemData(GpImage*,ImageItemData*);
+GpStatus WINGDIPAPI GdipImageSetAbort(GpImage*,GdiplusAbort*);
+GpStatus WINGDIPAPI GdipImageForceValidation(GpImage*);
+
+/* Image codec functions */
+GpStatus WINGDIPAPI GdipGetImageDecodersSize(UINT*,UINT*);
+GpStatus WINGDIPAPI GdipGetImageDecoders(UINT,UINT,ImageCodecInfo*);
+GpStatus WINGDIPAPI GdipGetImageEncodersSize(UINT*,UINT*);
+GpStatus WINGDIPAPI GdipGetImageEncoders(UINT,UINT,ImageCodecInfo*);
+
+/* ImageAttributes functions */
+GpStatus WINGDIPAPI GdipCreateImageAttributes(GpImageAttributes**);
+GpStatus WINGDIPAPI GdipCloneImageAttributes(GDIPCONST GpImageAttributes*,GpImageAttributes**);
+GpStatus WINGDIPAPI GdipDisposeImageAttributes(GpImageAttributes*);
+GpStatus WINGDIPAPI GdipSetImageAttributesToIdentity(GpImageAttributes*,ColorAdjustType);
+GpStatus WINGDIPAPI GdipResetImageAttributes(GpImageAttributes*,ColorAdjustType);
+GpStatus WINGDIPAPI GdipSetImageAttributesColorMatrix(GpImageAttributes*,ColorAdjustType,BOOL,GDIPCONST ColorMatrix*,GDIPCONST ColorMatrix*,ColorMatrixFlags);
+GpStatus WINGDIPAPI GdipSetImageAttributesThreshold(GpImageAttributes*,ColorAdjustType,BOOL,REAL);
+GpStatus WINGDIPAPI GdipSetImageAttributesGamma(GpImageAttributes*,ColorAdjustType,BOOL,REAL);
+GpStatus WINGDIPAPI GdipSetImageAttributesNoOp(GpImageAttributes*,ColorAdjustType,BOOL);
+GpStatus WINGDIPAPI GdipSetImageAttributesColorKeys(GpImageAttributes*,ColorAdjustType,BOOL,ARGB,ARGB);
+GpStatus WINGDIPAPI GdipSetImageAttributesOutputChannel(GpImageAttributes*,ColorAdjustType,BOOL,ColorChannelFlags);
+GpStatus WINGDIPAPI GdipSetImageAttributesOutputChannelColorProfile(GpImageAttributes*,ColorAdjustType,BOOL,GDIPCONST WCHAR*);
+GpStatus WINGDIPAPI GdipSetImageAttributesRemapTable(GpImageAttributes*,ColorAdjustType,BOOL,UINT,GDIPCONST ColorMap*);
+GpStatus WINGDIPAPI GdipSetImageAttributesWrapMode(GpImageAttributes*,WrapMode,ARGB,BOOL);
+GpStatus WINGDIPAPI GdipSetImageAttributesICMMode(GpImageAttributes*,BOOL);
+GpStatus WINGDIPAPI GdipGetImageAttributesAdjustedPalette(GpImageAttributes*,ColorPalette*,ColorAdjustType);
+GpStatus WINGDIPAPI GdipSetImageAttributesCachedBackground(GpImageAttributes*,BOOL);
+
+/* LinearGradientBrush functions */
+GpStatus WINGDIPAPI GdipCreateLineBrush(GDIPCONST GpPointF*,GDIPCONST GpPointF*,ARGB,ARGB,GpWrapMode,GpLineGradient**);
+GpStatus WINGDIPAPI GdipCreateLineBrushI(GDIPCONST GpPoint*,GDIPCONST GpPoint*,ARGB,ARGB,GpWrapMode,GpLineGradient**);
+GpStatus WINGDIPAPI GdipCreateLineBrushFromRect(GDIPCONST GpRectF*,ARGB,ARGB,LinearGradientMode,GpWrapMode,GpLineGradient**);
+GpStatus WINGDIPAPI GdipCreateLineBrushFromRectI(GDIPCONST GpRect*,ARGB,ARGB,LinearGradientMode,GpWrapMode,GpLineGradient**);
+GpStatus WINGDIPAPI GdipCreateLineBrushFromRectWithAngle(GDIPCONST GpRectF*,ARGB,ARGB,REAL,BOOL,GpWrapMode,GpLineGradient**);
+GpStatus WINGDIPAPI GdipCreateLineBrushFromRectWithAngleI(GDIPCONST GpRect*,ARGB,ARGB,REAL,BOOL,GpWrapMode,GpLineGradient**);
+GpStatus WINGDIPAPI GdipSetLineColors(GpLineGradient*,ARGB,ARGB);
+GpStatus WINGDIPAPI GdipGetLineColors(GpLineGradient*,ARGB*);
+GpStatus WINGDIPAPI GdipGetLineRect(GpLineGradient*,GpRectF*);
+GpStatus WINGDIPAPI GdipGetLineRectI(GpLineGradient*,GpRect*);
+GpStatus WINGDIPAPI GdipSetLineGammaCorrection(GpLineGradient*,BOOL);
+GpStatus WINGDIPAPI GdipGetLineGammaCorrection(GpLineGradient*,BOOL*);
+GpStatus WINGDIPAPI GdipGetLineBlendCount(GpLineGradient*,INT*);
+GpStatus WINGDIPAPI GdipGetLineBlend(GpLineGradient*,REAL*,REAL*,INT);
+GpStatus WINGDIPAPI GdipSetLineBlend(GpLineGradient*,GDIPCONST REAL*,GDIPCONST REAL*,INT);
+GpStatus WINGDIPAPI GdipGetLinePresetBlendCount(GpLineGradient*,INT*);
+GpStatus WINGDIPAPI GdipGetLinePresetBlend(GpLineGradient*,ARGB*,REAL*,INT);
+GpStatus WINGDIPAPI GdipSetLinePresetBlend(GpLineGradient*,GDIPCONST ARGB*,GDIPCONST REAL*,INT);
+GpStatus WINGDIPAPI GdipSetLineSigmaBlend(GpLineGradient*,REAL,REAL);
+GpStatus WINGDIPAPI GdipSetLineLinearBlend(GpLineGradient*,REAL,REAL);
+GpStatus WINGDIPAPI GdipSetLineWrapMode(GpLineGradient*,GpWrapMode);
+GpStatus WINGDIPAPI GdipGetLineWrapMode(GpLineGradient*,GpWrapMode*);
+GpStatus WINGDIPAPI GdipGetLineTransform(GpLineGradient*,GpMatrix*);
+GpStatus WINGDIPAPI GdipSetLineTransform(GpLineGradient*,GDIPCONST GpMatrix*);
+GpStatus WINGDIPAPI GdipResetLineTransform(GpLineGradient*);
+GpStatus WINGDIPAPI GdipMultiplyLineTransform(GpLineGradient*,GDIPCONST GpMatrix*,GpMatrixOrder);
+GpStatus WINGDIPAPI GdipTranslateLineTransform(GpLineGradient*,REAL,REAL,GpMatrixOrder);
+GpStatus WINGDIPAPI GdipScaleLineTransform(GpLineGradient*,REAL,REAL,GpMatrixOrder);
+GpStatus WINGDIPAPI GdipRotateLineTransform(GpLineGradient*,REAL,GpMatrixOrder);
+
+/* Matrix functions */
+GpStatus WINGDIPAPI GdipCreateMatrix(GpMatrix**);
+GpStatus WINGDIPAPI GdipCreateMatrix2(REAL,REAL,REAL,REAL,REAL,REAL,GpMatrix**);
+GpStatus WINGDIPAPI GdipCreateMatrix3(GDIPCONST GpRectF*,GDIPCONST GpPointF*,GpMatrix**);
+GpStatus WINGDIPAPI GdipCreateMatrix3I(GDIPCONST GpRect*,GDIPCONST GpPoint*,GpMatrix**);
+GpStatus WINGDIPAPI GdipCloneMatrix(GpMatrix*,GpMatrix**);
+GpStatus WINGDIPAPI GdipDeleteMatrix(GpMatrix*);
+GpStatus WINGDIPAPI GdipSetMatrixElements(GpMatrix*,REAL,REAL,REAL,REAL,REAL,REAL);
+GpStatus WINGDIPAPI GdipMultiplyMatrix(GpMatrix*,GpMatrix*,GpMatrixOrder);
+GpStatus WINGDIPAPI GdipTranslateMatrix(GpMatrix*,REAL,REAL,GpMatrixOrder);
+GpStatus WINGDIPAPI GdipScaleMatrix(GpMatrix*,REAL,REAL,GpMatrixOrder);
+GpStatus WINGDIPAPI GdipRotateMatrix(GpMatrix*,REAL,GpMatrixOrder);
+GpStatus WINGDIPAPI GdipShearMatrix(GpMatrix*,REAL,REAL,GpMatrixOrder);
+GpStatus WINGDIPAPI GdipInvertMatrix(GpMatrix*);
+GpStatus WINGDIPAPI GdipTransformMatrixPoints(GpMatrix*,GpPointF*,INT);
+GpStatus WINGDIPAPI GdipTransformMatrixPointsI(GpMatrix*,GpPoint*,INT);
+GpStatus WINGDIPAPI GdipVectorTransformMatrixPoints(GpMatrix*,GpPointF*,INT);
+GpStatus WINGDIPAPI GdipVectorTransformMatrixPointsI(GpMatrix*,GpPoint*,INT);
+GpStatus WINGDIPAPI GdipGetMatrixElements(GDIPCONST GpMatrix*,REAL*);
+GpStatus WINGDIPAPI GdipIsMatrixInvertible(GDIPCONST GpMatrix*,BOOL*);
+GpStatus WINGDIPAPI GdipIsMatrixIdentity(GDIPCONST GpMatrix*,BOOL*);
+GpStatus WINGDIPAPI GdipIsMatrixEqual(GDIPCONST GpMatrix*,GDIPCONST GpMatrix*,BOOL*);
+
+/* Metafile functions */
+GpStatus WINGDIPAPI GdipGetMetafileHeaderFromEmf(HENHMETAFILE,MetafileHeader*);
+GpStatus WINGDIPAPI GdipGetMetafileHeaderFromFile(GDIPCONST WCHAR*,MetafileHeader*);
+GpStatus WINGDIPAPI GdipGetMetafileHeaderFromStream(IStream*,MetafileHeader*);
+GpStatus WINGDIPAPI GdipGetMetafileHeaderFromMetafile(GpMetafile*,MetafileHeader*);
+GpStatus WINGDIPAPI GdipGetHemfFromMetafile(GpMetafile*,HENHMETAFILE*);
+GpStatus WINGDIPAPI GdipCreateStreamOnFile(GDIPCONST WCHAR*,UINT,IStream**);
+GpStatus WINGDIPAPI GdipCreateMetafileFromWmf(HMETAFILE,BOOL,GDIPCONST WmfPlaceableFileHeader*,GpMetafile**);
+GpStatus WINGDIPAPI GdipCreateMetafileFromEmf(HENHMETAFILE,BOOL,GpMetafile**);
+GpStatus WINGDIPAPI GdipCreateMetafileFromFile(GDIPCONST WCHAR*,GpMetafile**);
+GpStatus WINGDIPAPI GdipCreateMetafileFromWmfFile(GDIPCONST WCHAR*,GDIPCONST WmfPlaceableFileHeader*,GpMetafile**);
+GpStatus WINGDIPAPI GdipCreateMetafileFromStream(IStream*,GpMetafile**);
+GpStatus WINGDIPAPI GdipRecordMetafile(HDC,EmfType,GDIPCONST GpRectF*,MetafileFrameUnit,GDIPCONST WCHAR*,GpMetafile**);
+GpStatus WINGDIPAPI GdipRecordMetafileI(HDC,EmfType,GDIPCONST GpRect*,MetafileFrameUnit,GDIPCONST WCHAR*,GpMetafile**);
+GpStatus WINGDIPAPI GdipRecordMetafileFileName(GDIPCONST WCHAR*,HDC,EmfType,GDIPCONST GpRectF*,MetafileFrameUnit,GDIPCONST WCHAR*,GpMetafile**);
+GpStatus WINGDIPAPI GdipRecordMetafileFileNameI(GDIPCONST WCHAR*,HDC,EmfType,GDIPCONST GpRect*,MetafileFrameUnit,GDIPCONST WCHAR*,GpMetafile**);
+GpStatus WINGDIPAPI GdipRecordMetafileStream(IStream*,HDC,EmfType,GDIPCONST GpRectF*,MetafileFrameUnit,GDIPCONST WCHAR*,GpMetafile**);
+GpStatus WINGDIPAPI GdipRecordMetafileStreamI(IStream*,HDC,EmfType,GDIPCONST GpRect*,MetafileFrameUnit,GDIPCONST WCHAR*,GpMetafile**);
+GpStatus WINGDIPAPI GdipPlayMetafileRecord(GDIPCONST GpMetafile*,EmfPlusRecordType,UINT,UINT,GDIPCONST BYTE*);
+GpStatus WINGDIPAPI GdipSetMetafileDownLevelRasterizationLimit(GpMetafile*,UINT);
+GpStatus WINGDIPAPI GdipGetMetafileDownLevelRasterizationLimit(GDIPCONST GpMetafile*,UINT*);
+GpStatus WINGDIPAPI GdipConvertToEmfPlus(GDIPCONST GpGraphics*,GpMetafile*,BOOL*,EmfType,GDIPCONST WCHAR*,GpMetafile**);
+GpStatus WINGDIPAPI GdipConvertToEmfPlusToFile(GDIPCONST GpGraphics*,GpMetafile*,BOOL*,GDIPCONST WCHAR*,EmfType,GDIPCONST WCHAR*,GpMetafile**);
+GpStatus WINGDIPAPI GdipConvertToEmfPlusToStream(GDIPCONST GpGraphics*,GpMetafile*,BOOL*,IStream*,EmfType,GDIPCONST WCHAR*,GpMetafile**);
+UINT WINGDIPAPI GdipEmfToWmfBits(HENHMETAFILE,UINT,LPBYTE,INT,INT);
+
+/* PathGradientBrush functions */
+GpStatus WINGDIPAPI GdipCreatePathGradient(GDIPCONST GpPointF*,INT,GpWrapMode,GpPathGradient**);
+GpStatus WINGDIPAPI GdipCreatePathGradientI(GDIPCONST GpPoint*,INT,GpWrapMode,GpPathGradient**);
+GpStatus WINGDIPAPI GdipCreatePathGradientFromPath(GDIPCONST GpPath*,GpPathGradient**);
+GpStatus WINGDIPAPI GdipGetPathGradientCenterColor(GpPathGradient*,ARGB*);
+GpStatus WINGDIPAPI GdipSetPathGradientCenterColor(GpPathGradient*,ARGB);
+GpStatus WINGDIPAPI GdipGetPathGradientSurroundColorsWithCount(GpPathGradient*,ARGB*,INT*);
+GpStatus WINGDIPAPI GdipSetPathGradientSurroundColorsWithCount(GpPathGradient*,GDIPCONST ARGB*,INT*);
+GpStatus WINGDIPAPI GdipGetPathGradientPath(GpPathGradient*,GpPath*);
+GpStatus WINGDIPAPI GdipSetPathGradientPath(GpPathGradient*,GDIPCONST GpPath*);
+GpStatus WINGDIPAPI GdipGetPathGradientCenterPoint(GpPathGradient*,GpPointF*);
+GpStatus WINGDIPAPI GdipGetPathGradientCenterPointI(GpPathGradient*,GpPoint*);
+GpStatus WINGDIPAPI GdipSetPathGradientCenterPoint(GpPathGradient*,GDIPCONST GpPointF*);
+GpStatus WINGDIPAPI GdipSetPathGradientCenterPointI(GpPathGradient*,GDIPCONST GpPoint*);
+GpStatus WINGDIPAPI GdipGetPathGradientRect(GpPathGradient*,GpRectF*);
+GpStatus WINGDIPAPI GdipGetPathGradientRectI(GpPathGradient*,GpRect*);
+GpStatus WINGDIPAPI GdipGetPathGradientPointCount(GpPathGradient*,INT*);
+GpStatus WINGDIPAPI GdipGetPathGradientSurroundColorCount(GpPathGradient*,INT*);
+GpStatus WINGDIPAPI GdipSetPathGradientGammaCorrection(GpPathGradient*,BOOL);
+GpStatus WINGDIPAPI GdipGetPathGradientGammaCorrection(GpPathGradient*,BOOL*);
+GpStatus WINGDIPAPI GdipGetPathGradientBlendCount(GpPathGradient*,INT*);
+GpStatus WINGDIPAPI GdipGetPathGradientBlend(GpPathGradient*,REAL*,REAL*,INT);
+GpStatus WINGDIPAPI GdipSetPathGradientBlend(GpPathGradient*,GDIPCONST REAL*,GDIPCONST REAL*,INT);
+GpStatus WINGDIPAPI GdipGetPathGradientPresetBlendCount(GpPathGradient*,INT*);
+GpStatus WINGDIPAPI GdipGetPathGradientPresetBlend(GpPathGradient*,ARGB*,REAL*,INT);
+GpStatus WINGDIPAPI GdipSetPathGradientPresetBlend(GpPathGradient*,GDIPCONST ARGB*,GDIPCONST REAL*,INT);
+GpStatus WINGDIPAPI GdipSetPathGradientSigmaBlend(GpPathGradient*,REAL,REAL);
+GpStatus WINGDIPAPI GdipSetPathGradientLinearBlend(GpPathGradient*,REAL,REAL);
+GpStatus WINGDIPAPI GdipGetPathGradientWrapMode(GpPathGradient*,GpWrapMode*);
+GpStatus WINGDIPAPI GdipSetPathGradientWrapMode(GpPathGradient*,GpWrapMode);
+GpStatus WINGDIPAPI GdipGetPathGradientTransform(GpPathGradient*,GpMatrix*);
+GpStatus WINGDIPAPI GdipSetPathGradientTransform(GpPathGradient*,GpMatrix*);
+GpStatus WINGDIPAPI GdipResetPathGradientTransform(GpPathGradient*);
+GpStatus WINGDIPAPI GdipMultiplyPathGradientTransform(GpPathGradient*,GDIPCONST GpMatrix*,GpMatrixOrder);
+GpStatus WINGDIPAPI GdipTranslatePathGradientTransform(GpPathGradient*,REAL,REAL,GpMatrixOrder);
+GpStatus WINGDIPAPI GdipScalePathGradientTransform(GpPathGradient*,REAL,REAL,GpMatrixOrder);
+GpStatus WINGDIPAPI GdipRotatePathGradientTransform(GpPathGradient*,REAL,GpMatrixOrder);
+GpStatus WINGDIPAPI GdipGetPathGradientFocusScales(GpPathGradient*,REAL*,REAL*);
+GpStatus WINGDIPAPI GdipSetPathGradientFocusScales(GpPathGradient*,REAL,REAL);
+
+/* PathIterator functions */
+GpStatus WINGDIPAPI GdipCreatePathIter(GpPathIterator**,GpPath*);
+GpStatus WINGDIPAPI GdipDeletePathIter(GpPathIterator*);
+GpStatus WINGDIPAPI GdipPathIterNextSubpath(GpPathIterator*,INT*,INT*,INT*,BOOL*);
+GpStatus WINGDIPAPI GdipPathIterNextSubpathPath(GpPathIterator*,INT*,GpPath*,BOOL*);
+GpStatus WINGDIPAPI GdipPathIterNextPathType(GpPathIterator*,INT*,BYTE*,INT*,INT*);
+GpStatus WINGDIPAPI GdipPathIterNextMarker(GpPathIterator*,INT*,INT*,INT*);
+GpStatus WINGDIPAPI GdipPathIterNextMarkerPath(GpPathIterator*,INT*,GpPath*);
+GpStatus WINGDIPAPI GdipPathIterGetCount(GpPathIterator*,INT*);
+GpStatus WINGDIPAPI GdipPathIterGetSubpathCount(GpPathIterator*,INT*);
+GpStatus WINGDIPAPI GdipPathIterIsValid(GpPathIterator*,BOOL*);
+GpStatus WINGDIPAPI GdipPathIterHasCurve(GpPathIterator*,BOOL*);
+GpStatus WINGDIPAPI GdipPathIterRewind(GpPathIterator*);
+GpStatus WINGDIPAPI GdipPathIterEnumerate(GpPathIterator*,INT*,GpPointF*,BYTE*,INT);
+GpStatus WINGDIPAPI GdipPathIterCopyData(GpPathIterator*,INT*,GpPointF*,BYTE*,INT,INT);
+
+/* Pen functions */
+GpStatus WINGDIPAPI GdipCreatePen1(ARGB,REAL,GpUnit,GpPen**);
+GpStatus WINGDIPAPI GdipCreatePen2(GpBrush*,REAL,GpUnit,GpPen**);
+GpStatus WINGDIPAPI GdipClonePen(GpPen*,GpPen**);
+GpStatus WINGDIPAPI GdipDeletePen(GpPen*);
+GpStatus WINGDIPAPI GdipSetPenWidth(GpPen*,REAL);
+GpStatus WINGDIPAPI GdipGetPenWidth(GpPen*,REAL*);
+GpStatus WINGDIPAPI GdipSetPenUnit(GpPen*,GpUnit);
+GpStatus WINGDIPAPI GdipGetPenUnit(GpPen*,GpUnit*);
+GpStatus WINGDIPAPI GdipSetPenLineCap197819(GpPen*,GpLineCap,GpLineCap,GpDashCap);
+GpStatus WINGDIPAPI GdipSetPenStartCap(GpPen*,GpLineCap);
+GpStatus WINGDIPAPI GdipSetPenEndCap(GpPen*,GpLineCap);
+GpStatus WINGDIPAPI GdipSetPenDashCap197819(GpPen*,GpDashCap);
+GpStatus WINGDIPAPI GdipGetPenStartCap(GpPen*,GpLineCap*);
+GpStatus WINGDIPAPI GdipGetPenEndCap(GpPen*,GpLineCap*);
+GpStatus WINGDIPAPI GdipGetPenDashCap197819(GpPen*,GpDashCap*);
+GpStatus WINGDIPAPI GdipSetPenLineJoin(GpPen*,GpLineJoin);
+GpStatus WINGDIPAPI GdipGetPenLineJoin(GpPen*,GpLineJoin*);
+GpStatus WINGDIPAPI GdipSetPenCustomStartCap(GpPen*,GpCustomLineCap*);
+GpStatus WINGDIPAPI GdipGetPenCustomStartCap(GpPen*,GpCustomLineCap**);
+GpStatus WINGDIPAPI GdipSetPenCustomEndCap(GpPen*,GpCustomLineCap*);
+GpStatus WINGDIPAPI GdipGetPenCustomEndCap(GpPen*,GpCustomLineCap**);
+GpStatus WINGDIPAPI GdipSetPenMiterLimit(GpPen*,REAL);
+GpStatus WINGDIPAPI GdipGetPenMiterLimit(GpPen*,REAL*);
+GpStatus WINGDIPAPI GdipSetPenMode(GpPen*,GpPenAlignment);
+GpStatus WINGDIPAPI GdipGetPenMode(GpPen*,GpPenAlignment*);
+GpStatus WINGDIPAPI GdipSetPenTransform(GpPen*,GpMatrix*);
+GpStatus WINGDIPAPI GdipGetPenTransform(GpPen*,GpMatrix*);
+GpStatus WINGDIPAPI GdipResetPenTransform(GpPen*);
+GpStatus WINGDIPAPI GdipMultiplyPenTransform(GpPen*,GDIPCONST GpMatrix*,GpMatrixOrder);
+GpStatus WINGDIPAPI GdipTranslatePenTransform(GpPen*,REAL,REAL,GpMatrixOrder);
+GpStatus WINGDIPAPI GdipScalePenTransform(GpPen*,REAL,REAL,GpMatrixOrder);
+GpStatus WINGDIPAPI GdipRotatePenTransform(GpPen*,REAL,GpMatrixOrder);
+GpStatus WINGDIPAPI GdipSetPenColor(GpPen*,ARGB);
+GpStatus WINGDIPAPI GdipGetPenColor(GpPen*,ARGB*);
+GpStatus WINGDIPAPI GdipSetPenBrushFill(GpPen*,GpBrush*);
+GpStatus WINGDIPAPI GdipGetPenBrushFill(GpPen*,GpBrush**);
+GpStatus WINGDIPAPI GdipGetPenFillType(GpPen*,GpPenType*);
+GpStatus WINGDIPAPI GdipGetPenDashStyle(GpPen*,GpDashStyle*);
+GpStatus WINGDIPAPI GdipSetPenDashStyle(GpPen*,GpDashStyle);
+GpStatus WINGDIPAPI GdipGetPenDashOffset(GpPen*,REAL*);
+GpStatus WINGDIPAPI GdipSetPenDashOffset(GpPen*,REAL);
+GpStatus WINGDIPAPI GdipGetPenDashCount(GpPen*,INT*);
+GpStatus WINGDIPAPI GdipSetPenDashArray(GpPen*,GDIPCONST REAL*,INT);
+GpStatus WINGDIPAPI GdipGetPenDashArray(GpPen*,REAL*,INT);
+GpStatus WINGDIPAPI GdipGetPenCompoundCount(GpPen*,INT*);
+GpStatus WINGDIPAPI GdipSetPenCompoundArray(GpPen*,GDIPCONST REAL*,INT);
+GpStatus WINGDIPAPI GdipGetPenCompoundArray(GpPen*,REAL*,INT);
+
+/* Region functions */
+GpStatus WINGDIPAPI GdipCreateRegion(GpRegion**);
+GpStatus WINGDIPAPI GdipCreateRegionRect(GDIPCONST GpRectF*,GpRegion**);
+GpStatus WINGDIPAPI GdipCreateRegionRectI(GDIPCONST GpRect*,GpRegion**);
+GpStatus WINGDIPAPI GdipCreateRegionPath(GpPath*,GpRegion**);
+GpStatus WINGDIPAPI GdipCreateRegionRgnData(GDIPCONST BYTE*,INT,GpRegion**);
+GpStatus WINGDIPAPI GdipCreateRegionHrgn(HRGN,GpRegion**);
+GpStatus WINGDIPAPI GdipCloneRegion(GpRegion*,GpRegion**);
+GpStatus WINGDIPAPI GdipDeleteRegion(GpRegion*);
+GpStatus WINGDIPAPI GdipSetInfinite(GpRegion*);
+GpStatus WINGDIPAPI GdipSetEmpty(GpRegion*);
+GpStatus WINGDIPAPI GdipCombineRegionRect(GpRegion*,GDIPCONST GpRectF*,CombineMode);
+GpStatus WINGDIPAPI GdipCombineRegionRectI(GpRegion*,GDIPCONST GpRect*,CombineMode);
+GpStatus WINGDIPAPI GdipCombineRegionPath(GpRegion*,GpPath*,CombineMode);
+GpStatus WINGDIPAPI GdipCombineRegionRegion(GpRegion*,GpRegion*,CombineMode);
+GpStatus WINGDIPAPI GdipTranslateRegion(GpRegion*,REAL,REAL);
+GpStatus WINGDIPAPI GdipTranslateRegionI(GpRegion*,INT,INT);
+GpStatus WINGDIPAPI GdipTransformRegion(GpRegion*,GpMatrix*);
+GpStatus WINGDIPAPI GdipGetRegionBounds(GpRegion*,GpGraphics*,GpRectF*);
+GpStatus WINGDIPAPI GdipGetRegionBoundsI(GpRegion*,GpGraphics*,GpRect*);
+GpStatus WINGDIPAPI GdipGetRegionHRgn(GpRegion*,GpGraphics*,HRGN*);
+GpStatus WINGDIPAPI GdipIsEmptyRegion(GpRegion*,GpGraphics*,BOOL*);
+GpStatus WINGDIPAPI GdipIsInfiniteRegion(GpRegion*,GpGraphics*,BOOL*);
+GpStatus WINGDIPAPI GdipIsEqualRegion(GpRegion*,GpRegion*,GpGraphics*,BOOL*);
+GpStatus WINGDIPAPI GdipGetRegionDataSize(GpRegion*,UINT*);
+GpStatus WINGDIPAPI GdipGetRegionData(GpRegion*,BYTE*,UINT,UINT*);
+GpStatus WINGDIPAPI GdipIsVisibleRegionPoint(GpRegion*,REAL,REAL,GpGraphics*,BOOL*);
+GpStatus WINGDIPAPI GdipIsVisibleRegionPointI(GpRegion*,INT,INT,GpGraphics*,BOOL*);
+GpStatus WINGDIPAPI GdipIsVisibleRegionRect(GpRegion*,REAL,REAL,REAL,REAL,GpGraphics*,BOOL*);
+GpStatus WINGDIPAPI GdipIsVisibleRegionRectI(GpRegion*,INT,INT,INT,INT,GpGraphics*,BOOL*);
+GpStatus WINGDIPAPI GdipGetRegionScansCount(GpRegion*,UINT*,GpMatrix*);
+GpStatus WINGDIPAPI GdipGetRegionScans(GpRegion*,GpRectF*,INT*,GpMatrix*);
+GpStatus WINGDIPAPI GdipGetRegionScansI(GpRegion*,GpRect*,INT*,GpMatrix*);
+
+/* SolidBrush functions */
+GpStatus WINGDIPAPI GdipCreateSolidFill(ARGB,GpSolidFill**);
+GpStatus WINGDIPAPI GdipSetSolidFillColor(GpSolidFill*,ARGB);
+GpStatus WINGDIPAPI GdipGetSolidFillColor(GpSolidFill*,ARGB*);
+
+/* StringFormat functions */
+GpStatus WINGDIPAPI GdipCreateStringFormat(INT,LANGID,GpStringFormat**);
+GpStatus WINGDIPAPI GdipStringFormatGetGenericDefault(GpStringFormat**);
+GpStatus WINGDIPAPI GdipStringFormatGetGenericTypographic(GpStringFormat**);
+GpStatus WINGDIPAPI GdipDeleteStringFormat(GpStringFormat*);
+GpStatus WINGDIPAPI GdipCloneStringFormat(GDIPCONST GpStringFormat*,GpStringFormat**);
+GpStatus WINGDIPAPI GdipSetStringFormatFlags(GpStringFormat*,INT);
+GpStatus WINGDIPAPI GdipGetStringFormatFlags(GDIPCONST GpStringFormat*,INT*);
+GpStatus WINGDIPAPI GdipSetStringFormatAlign(GpStringFormat*,StringAlignment);
+GpStatus WINGDIPAPI GdipGetStringFormatAlign(GDIPCONST GpStringFormat*,StringAlignment*);
+GpStatus WINGDIPAPI GdipSetStringFormatLineAlign(GpStringFormat*,StringAlignment);
+GpStatus WINGDIPAPI GdipGetStringFormatLineAlign(GDIPCONST GpStringFormat*,StringAlignment*);
+GpStatus WINGDIPAPI GdipSetStringFormatTrimming(GpStringFormat*,StringTrimming);
+GpStatus WINGDIPAPI GdipGetStringFormatTrimming(GDIPCONST GpStringFormat*,StringTrimming*);
+GpStatus WINGDIPAPI GdipSetStringFormatHotkeyPrefix(GpStringFormat*,INT);
+GpStatus WINGDIPAPI GdipGetStringFormatHotkeyPrefix(GDIPCONST GpStringFormat*,INT*);
+GpStatus WINGDIPAPI GdipSetStringFormatTabStops(GpStringFormat*,REAL,INT,GDIPCONST REAL*);
+GpStatus WINGDIPAPI GdipGetStringFormatTabStops(GDIPCONST GpStringFormat*,INT,REAL*,REAL*);
+GpStatus WINGDIPAPI GdipGetStringFormatTabStopCount(GDIPCONST GpStringFormat*,INT*);
+GpStatus WINGDIPAPI GdipSetStringFormatDigitSubstitution(GpStringFormat*,LANGID,StringDigitSubstitute);
+GpStatus WINGDIPAPI GdipGetStringFormatDigitSubstitution(GDIPCONST GpStringFormat*,LANGID*,StringDigitSubstitute*);
+GpStatus WINGDIPAPI GdipGetStringFormatMeasurableCharacterRangeCount(GDIPCONST GpStringFormat*,INT*);
+GpStatus WINGDIPAPI GdipSetStringFormatMeasurableCharacterRanges(GpStringFormat*,INT,GDIPCONST CharacterRange*);
+
+/* Text functions */
+GpStatus WINGDIPAPI GdipDrawString(GpGraphics*,GDIPCONST WCHAR*,INT,GDIPCONST GpFont*,GDIPCONST RectF*,GDIPCONST GpStringFormat*,GDIPCONST GpBrush*);
+GpStatus WINGDIPAPI GdipMeasureString(GpGraphics*,GDIPCONST WCHAR*,INT,GDIPCONST GpFont*,GDIPCONST RectF*,GDIPCONST GpStringFormat*,RectF*,INT*,INT*);
+#ifdef __cplusplus
+GpStatus WINGDIPAPI GdipMeasureCharacterRanges(GpGraphics*,GDIPCONST WCHAR*,INT,GDIPCONST GpFont*,GDIPCONST RectF&,GDIPCONST GpStringFormat*,INT,GpRegion**);
+#endif
+GpStatus WINGDIPAPI GdipDrawDriverString(GpGraphics*,GDIPCONST UINT16*,INT,GDIPCONST GpFont*,GDIPCONST GpBrush*,GDIPCONST PointF*,INT,GDIPCONST GpMatrix*);
+GpStatus WINGDIPAPI GdipMeasureDriverString(GpGraphics*,GDIPCONST UINT16*,INT,GDIPCONST GpFont*,GDIPCONST PointF*,INT,GDIPCONST GpMatrix*,RectF*);
+
+/* TextureBrush functions */
+GpStatus WINGDIPAPI GdipCreateTexture(GpImage*,GpWrapMode,GpTexture**);
+GpStatus WINGDIPAPI GdipCreateTexture2(GpImage*,GpWrapMode,REAL,REAL,REAL,REAL,GpTexture**);
+GpStatus WINGDIPAPI GdipCreateTexture2I(GpImage*,GpWrapMode,INT,INT,INT,INT,GpTexture**);
+GpStatus WINGDIPAPI GdipCreateTextureIA(GpImage*,GDIPCONST GpImageAttributes*,REAL,REAL,REAL,REAL,GpTexture**);
+GpStatus WINGDIPAPI GdipCreateTextureIAI(GpImage*,GDIPCONST GpImageAttributes*,INT,INT,INT,INT,GpTexture**);
+GpStatus WINGDIPAPI GdipGetTextureTransform(GpTexture*,GpMatrix*);
+GpStatus WINGDIPAPI GdipSetTextureTransform(GpTexture*,GDIPCONST GpMatrix*);
+GpStatus WINGDIPAPI GdipResetTextureTransform(GpTexture*);
+GpStatus WINGDIPAPI GdipMultiplyTextureTransform(GpTexture*,GDIPCONST GpMatrix*,GpMatrixOrder);
+GpStatus WINGDIPAPI GdipTranslateTextureTransform(GpTexture*,REAL,REAL,GpMatrixOrder);
+GpStatus WINGDIPAPI GdipScaleTextureTransform(GpTexture*,REAL,REAL,GpMatrixOrder);
+GpStatus WINGDIPAPI GdipRotateTextureTransform(GpTexture*,REAL,GpMatrixOrder);
+GpStatus WINGDIPAPI GdipSetTextureWrapMode(GpTexture*,GpWrapMode);
+GpStatus WINGDIPAPI GdipGetTextureWrapMode(GpTexture*,GpWrapMode*);
+GpStatus WINGDIPAPI GdipGetTextureImage(GpTexture*,GpImage**);
+
+/* uncategorized functions */
+GpStatus WINGDIPAPI GdipTestControl(GpTestControlEnum,void*);
+
+#ifdef __cplusplus
+}  /* extern "C" */
+}  /* namespace DllExports */
+#endif
+
+#endif /* __GDIPLUS_FLAT_H */
Index: Daodan/MinGW/include/gdiplus/gdiplusgpstubs.h
===================================================================
--- Daodan/MinGW/include/gdiplus/gdiplusgpstubs.h	(revision 1046)
+++ Daodan/MinGW/include/gdiplus/gdiplusgpstubs.h	(revision 1046)
@@ -0,0 +1,139 @@
+/*
+ * gdiplusgpstubs.h
+ *
+ * GDI+ Gp* type declarations
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Markus Koenig <markus@stber-koenig.de>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __GDIPLUS_GPSTUBS_H
+#define __GDIPLUS_GPSTUBS_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+typedef Point GpPoint;
+typedef PointF GpPointF;
+typedef Rect GpRect;
+typedef RectF GpRectF;
+typedef Size GpSize;
+typedef SizeF GpSizeF;
+
+typedef enum BrushType GpBrushType;
+typedef enum CombineMode GpCombineMode;
+typedef enum CompositingMode GpCompositingMode;
+typedef enum CompositingQuality GpCompositingQuality;
+typedef enum CoordinateSpace GpCoordinateSpace;
+typedef enum CustomLineCapType GpCustomLineCapType;
+typedef enum DashCap GpDashCap;
+typedef enum DashStyle GpDashStyle;
+typedef enum DitherType GpDitherType;
+typedef enum DriverStringOptions GpDriverStringOptions;
+typedef enum EmfPlusRecordType GpEmfPlusRecordType;
+typedef enum EmfToWmfBitsFlags GpEmfToWmfBitsFlags;
+typedef enum EmfType GpEmfType;
+typedef enum EncoderParameterValueType GpEncoderParameterValueType;
+typedef enum EncoderValue GpEncoderValue;
+typedef enum FillMode GpFillMode;
+typedef enum FlushIntention GpFlushIntention;
+typedef enum FontStyle GpFontStyle;
+typedef enum HatchStyle GpHatchStyle;
+typedef enum HotkeyPrefix GpHotkeyPrefix;
+typedef enum ImageType GpImageType;
+typedef enum InterpolationMode GpInterpolationMode;
+typedef enum LinearGradientMode GpLinearGradientMode;
+typedef enum LineCap GpLineCap;
+typedef enum LineJoin GpLineJoin;
+typedef enum MatrixOrder GpMatrixOrder;
+typedef enum MetafileFrameUnit GpMetafileFrameUnit;
+typedef enum MetafileType GpMetafileType;
+typedef enum ObjectType GpObjectType;
+typedef enum PathPointType GpPathPointType;
+typedef enum PenAlignment GpPenAlignment;
+typedef enum PenType GpPenType;
+typedef enum PixelOffsetMode GpPixelOffsetMode;
+typedef enum QualityMode GpQualityMode;
+typedef enum SmoothingMode GpSmoothingMode;
+typedef enum StringAlignment GpStringAlignment;
+typedef enum StringDigitSubstitute GpStringDigitSubstitute;
+typedef enum StringFormatFlags GpStringFormatFlags;
+typedef enum StringTrimming GpStringTrimming;
+typedef enum TextRenderingHint GpTextRenderingHint;
+typedef enum Unit GpUnit;
+typedef enum WarpMode GpWarpMode;
+typedef enum WrapMode GpWrapMode;
+
+#ifdef __cplusplus
+
+class CGpEffect {}; 
+class GpCustomLineCap {};
+class GpImage {};
+
+class GpAdjustableArrowCap: public GpCustomLineCap {};
+class GpBitmap: public GpImage {};
+class GpBrush {};
+class GpCachedBitmap {};
+class GpFont {};
+class GpFontCollection {};
+class GpFontFamily {};
+class GpGraphics {};
+class GpHatch: public GpBrush {};         /* HatchBrush */
+class GpImageAttributes {};
+class GpLineGradient: public GpBrush {};  /* LinearGradientBrush */
+class GpMatrix {};
+class GpMetafile: public GpImage {};
+class GpPath {};                          /* GraphicsPath */
+class GpPathData {};
+class GpPathGradient: public GpBrush {};  /* PathGradientBrush */
+class GpPathIterator {};                  /* GraphicsPathIterator */
+class GpPen {};
+class GpRegion {};
+class GpSolidFill: public GpBrush {};     /* SolidBrush */
+class GpStringFormat {};
+class GpTexture: public GpBrush {};       /* TextureBrush */
+
+#else /* !__cplusplus */
+
+typedef void CGpEffect;
+typedef void GpAdjustableArrowCap;
+typedef void GpBitmap;
+typedef void GpBrush;
+typedef void GpCachedBitmap;
+typedef void GpCustomLineCap;
+typedef void GpFont;
+typedef void GpFontFamily;
+typedef void GpFontCollection;
+typedef void GpGraphics;
+typedef void GpHatch;
+typedef void GpImage;
+typedef void GpImageAttributes;
+typedef void GpLineGradient;
+typedef void GpMatrix;
+typedef void GpMetafile;
+typedef void GpPath;
+typedef void GpPathData;
+typedef void GpPathGradient;
+typedef void GpPathIterator;
+typedef void GpPen;
+typedef void GpRegion;
+typedef void GpSolidFill;
+typedef void GpStringFormat;
+typedef void GpTexture;
+
+#endif /* !__cplusplus */
+
+#endif /* __GDIPLUS_GPSTUBS_H */
Index: Daodan/MinGW/include/gdiplus/gdiplusgraphics.h
===================================================================
--- Daodan/MinGW/include/gdiplus/gdiplusgraphics.h	(revision 1046)
+++ Daodan/MinGW/include/gdiplus/gdiplusgraphics.h	(revision 1046)
@@ -0,0 +1,1540 @@
+/*
+ * gdiplusgraphics.h
+ *
+ * GDI+ Graphics class
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Markus Koenig <markus@stber-koenig.de>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __GDIPLUS_GRAPHICS_H
+#define __GDIPLUS_GRAPHICS_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifndef __cplusplus
+#error "A C++ compiler is required to include gdiplusgraphics.h."
+#endif
+
+class Graphics: public GdiplusBase
+{
+	friend class Bitmap;
+	friend class CachedBitmap;
+	friend class Font;
+	friend class GraphicsPath;
+	friend class Metafile;
+	friend class Region;
+
+public:
+	static Graphics* FromHDC(HDC hdc)
+	{
+		return new Graphics(hdc);
+	}
+	static Graphics* FromHDC(HDC hdc, HANDLE hdevice)
+	{
+		return new Graphics(hdc, hdevice);
+	}
+	static Graphics* FromHWND(HWND hwnd, BOOL icm = FALSE)
+	{
+		return new Graphics(hwnd, icm);
+	}
+	static Graphics* FromImage(Image *image)
+	{
+		return new Graphics(image);
+	}
+	static HPALETTE GetHalftonePalette()
+	{
+		return DllExports::GdipCreateHalftonePalette();
+	}
+
+	Graphics(Image *image): nativeGraphics(NULL), lastStatus(Ok)
+	{
+		lastStatus = DllExports::GdipGetImageGraphicsContext(
+				image ? image->nativeImage : NULL,
+				&nativeGraphics);
+	}
+	Graphics(HDC hdc): nativeGraphics(NULL), lastStatus(Ok)
+	{
+		lastStatus = DllExports::GdipCreateFromHDC(
+				hdc, &nativeGraphics);
+	}
+	Graphics(HDC hdc, HANDLE hdevice): nativeGraphics(NULL), lastStatus(Ok)
+	{
+		lastStatus = DllExports::GdipCreateFromHDC2(
+				hdc, hdevice, &nativeGraphics);
+	}
+	Graphics(HWND hwnd, BOOL icm = FALSE):
+		nativeGraphics(NULL), lastStatus(Ok)
+	{
+		if (icm) {
+			lastStatus = DllExports::GdipCreateFromHWNDICM(
+					hwnd, &nativeGraphics);
+		} else {
+			lastStatus = DllExports::GdipCreateFromHWND(
+					hwnd, &nativeGraphics);
+		}
+	}
+	~Graphics()
+	{
+		DllExports::GdipDeleteGraphics(nativeGraphics);
+	}
+
+	Status AddMetafileComment(const BYTE *data, UINT sizeData)
+	{
+		return updateStatus(DllExports::GdipComment(
+				nativeGraphics, sizeData, data));
+	}
+	GraphicsContainer BeginContainer()
+	{
+		GraphicsContainer result = 0;
+		updateStatus(DllExports::GdipBeginContainer2(
+				nativeGraphics, &result));
+		return result;
+	}
+	GraphicsContainer BeginContainer(const RectF& dstrect,
+			const RectF& srcrect, Unit unit)
+	{
+		GraphicsContainer result = 0;
+		updateStatus(DllExports::GdipBeginContainer(
+				nativeGraphics, &dstrect, &srcrect, unit,
+				&result));
+		return result;
+	}
+	GraphicsContainer BeginContainer(const Rect& dstrect,
+			const Rect& srcrect, Unit unit)
+	{
+		GraphicsContainer result = 0;
+		updateStatus(DllExports::GdipBeginContainerI(
+				nativeGraphics, &dstrect, &srcrect, unit,
+				&result));
+		return result;
+	}
+	Status Clear(const Color& color)
+	{
+		return updateStatus(DllExports::GdipGraphicsClear(
+				nativeGraphics, color.GetValue()));
+	}
+	Status DrawArc(const Pen *pen, REAL x, REAL y, REAL width, REAL height,
+			REAL startAngle, REAL sweepAngle)
+	{
+		return updateStatus(DllExports::GdipDrawArc(
+				nativeGraphics, pen ? pen->nativePen : NULL,
+				x, y, width, height, startAngle, sweepAngle));
+	}
+	Status DrawArc(const Pen *pen, INT x, INT y, INT width, INT height,
+			REAL startAngle, REAL sweepAngle)
+	{
+		return updateStatus(DllExports::GdipDrawArcI(
+				nativeGraphics, pen ? pen->nativePen : NULL,
+				x, y, width, height, startAngle, sweepAngle));
+	}
+	Status DrawArc(const Pen *pen, const RectF& rect,
+			REAL startAngle, REAL sweepAngle)
+	{
+		return updateStatus(DllExports::GdipDrawArc(
+				nativeGraphics, pen ? pen->nativePen : NULL,
+				rect.X, rect.Y, rect.Width, rect.Height,
+				startAngle, sweepAngle));
+	}
+	Status DrawArc(const Pen *pen, const Rect& rect,
+			REAL startAngle, REAL sweepAngle)
+	{
+		return updateStatus(DllExports::GdipDrawArcI(
+				nativeGraphics, pen ? pen->nativePen : NULL,
+				rect.X, rect.Y, rect.Width, rect.Height,
+				startAngle, sweepAngle));
+	}
+	Status DrawBezier(const Pen *pen,
+			REAL x1, REAL y1, REAL x2, REAL y2,
+			REAL x3, REAL y3, REAL x4, REAL y4)
+	{
+		return updateStatus(DllExports::GdipDrawBezier(
+				nativeGraphics, pen ? pen->nativePen : NULL,
+				x1, y1, x2, y2, x3, y3, x4, y4));
+	}
+	Status DrawBezier(const Pen *pen,
+			INT x1, INT y1, INT x2, INT y2,
+			INT x3, INT y3, INT x4, INT y4)
+	{
+		return updateStatus(DllExports::GdipDrawBezierI(
+				nativeGraphics, pen ? pen->nativePen : NULL,
+				x1, y1, x2, y2, x3, y3, x4, y4));
+	}
+	Status DrawBezier(const Pen *pen,
+			const PointF& pt1, const PointF& pt2,
+			const PointF& pt3, const PointF& pt4)
+	{
+		return updateStatus(DllExports::GdipDrawBezier(
+				nativeGraphics, pen ? pen->nativePen : NULL,
+				pt1.X, pt1.Y, pt2.X, pt2.Y,
+				pt3.X, pt3.Y, pt4.X, pt4.Y));
+	}
+	Status DrawBezier(const Pen *pen,
+			const Point& pt1, const Point& pt2,
+			const Point& pt3, const Point& pt4)
+	{
+		return updateStatus(DllExports::GdipDrawBezierI(
+				nativeGraphics, pen ? pen->nativePen : NULL,
+				pt1.X, pt1.Y, pt2.X, pt2.Y,
+				pt3.X, pt3.Y, pt4.X, pt4.Y));
+	}
+	Status DrawBeziers(const Pen *pen, const PointF *points, INT count)
+	{
+		return updateStatus(DllExports::GdipDrawBeziers(
+				nativeGraphics, pen ? pen->nativePen : NULL,
+				points, count));
+	}
+	Status DrawBeziers(const Pen *pen, const Point *points, INT count)
+	{
+		return updateStatus(DllExports::GdipDrawBeziersI(
+				nativeGraphics, pen ? pen->nativePen : NULL,
+				points, count));
+	}
+	Status DrawCachedBitmap(CachedBitmap *cb, INT x, INT y)
+	{
+		return updateStatus(DllExports::GdipDrawCachedBitmap(
+				nativeGraphics,
+				cb ? cb->nativeCachedBitmap : NULL,
+				x, y));
+	}
+	Status DrawClosedCurve(const Pen *pen, const PointF *points, INT count)
+	{
+		return updateStatus(DllExports::GdipDrawClosedCurve(
+				nativeGraphics, pen ? pen->nativePen : NULL,
+				points, count));
+	}
+	Status DrawClosedCurve(const Pen *pen, const Point *points, INT count)
+	{
+		return updateStatus(DllExports::GdipDrawClosedCurveI(
+				nativeGraphics, pen ? pen->nativePen : NULL,
+				points, count));
+	}
+	Status DrawClosedCurve(const Pen *pen, const PointF *points, INT count,
+			REAL tension)
+	{
+		return updateStatus(DllExports::GdipDrawClosedCurve2(
+				nativeGraphics, pen ? pen->nativePen : NULL,
+				points, count, tension));
+	}
+	Status DrawClosedCurve(const Pen *pen, const Point *points, INT count,
+			REAL tension)
+	{
+		return updateStatus(DllExports::GdipDrawClosedCurve2I(
+				nativeGraphics, pen ? pen->nativePen : NULL,
+				points, count, tension));
+	}
+	Status DrawCurve(const Pen *pen, const PointF *points, INT count)
+	{
+		return updateStatus(DllExports::GdipDrawCurve(
+				nativeGraphics, pen ? pen->nativePen : NULL,
+				points, count));
+	}
+	Status DrawCurve(const Pen *pen, const Point *points, INT count)
+	{
+		return updateStatus(DllExports::GdipDrawCurveI(
+				nativeGraphics, pen ? pen->nativePen : NULL,
+				points, count));
+	}
+	Status DrawCurve(const Pen *pen, const PointF *points, INT count,
+			REAL tension)
+	{
+		return updateStatus(DllExports::GdipDrawCurve2(
+				nativeGraphics, pen ? pen->nativePen : NULL,
+				points, count, tension));
+	}
+	Status DrawCurve(const Pen *pen, const Point *points, INT count,
+			REAL tension)
+	{
+		return updateStatus(DllExports::GdipDrawCurve2I(
+				nativeGraphics, pen ? pen->nativePen : NULL,
+				points, count, tension));
+	}
+	Status DrawCurve(const Pen *pen, const PointF *points, INT count,
+			INT offset, INT numberOfSegments, REAL tension)
+	{
+		return updateStatus(DllExports::GdipDrawCurve3(
+				nativeGraphics, pen ? pen->nativePen : NULL,
+				points, count, offset,
+				numberOfSegments, tension));
+	}
+	Status DrawCurve(const Pen *pen, const Point *points, INT count,
+			INT offset, INT numberOfSegments, REAL tension)
+	{
+		return updateStatus(DllExports::GdipDrawCurve3I(
+				nativeGraphics, pen ? pen->nativePen : NULL,
+				points, count, offset,
+				numberOfSegments, tension));
+	}
+	Status DrawDriverString(const UINT16 *text, INT length,
+			const Font *font, const Brush *brush,
+			const PointF *positions, INT flags,
+			const Matrix *matrix)
+	{
+		return updateStatus(DllExports::GdipDrawDriverString(
+				nativeGraphics, text, length,
+				font ? font->nativeFont : NULL,
+				brush ? brush->nativeBrush : NULL,
+				positions, flags,
+				matrix ? matrix->nativeMatrix : NULL));
+	}
+	Status DrawEllipse(const Pen *pen,
+			REAL x, REAL y, REAL width, REAL height)
+	{
+		return updateStatus(DllExports::GdipDrawEllipse(
+				nativeGraphics, pen ? pen->nativePen : NULL,
+				x, y, width, height));
+	}
+	Status DrawEllipse(const Pen *pen, INT x, INT y, INT width, INT height)
+	{
+		return updateStatus(DllExports::GdipDrawEllipseI(
+				nativeGraphics, pen ? pen->nativePen : NULL,
+				x, y, width, height));
+	}
+	Status DrawEllipse(const Pen *pen, const RectF& rect)
+	{
+		return updateStatus(DllExports::GdipDrawEllipse(
+				nativeGraphics, pen ? pen->nativePen : NULL,
+				rect.X, rect.Y, rect.Width, rect.Height));
+	}
+	Status DrawEllipse(const Pen *pen, const Rect& rect)
+	{
+		return updateStatus(DllExports::GdipDrawEllipseI(
+				nativeGraphics, pen ? pen->nativePen : NULL,
+				rect.X, rect.Y, rect.Width, rect.Height));
+	}
+	Status DrawImage(Image *image, REAL x, REAL y)
+	{
+		return updateStatus(DllExports::GdipDrawImage(
+				nativeGraphics,
+				image ? image->nativeImage : NULL,
+				x, y));
+	}
+	Status DrawImage(Image *image, INT x, INT y)
+	{
+		return updateStatus(DllExports::GdipDrawImageI(
+				nativeGraphics,
+				image ? image->nativeImage : NULL,
+				x, y));
+	}
+	Status DrawImage(Image *image, const PointF& point)
+	{
+		return updateStatus(DllExports::GdipDrawImage(
+				nativeGraphics,
+				image ? image->nativeImage : NULL,
+				point.X, point.Y));
+	}
+	Status DrawImage(Image *image, const Point& point)
+	{
+		return updateStatus(DllExports::GdipDrawImageI(
+				nativeGraphics,
+				image ? image->nativeImage : NULL,
+				point.X, point.Y));
+	}
+	Status DrawImage(Image *image, REAL x, REAL y, REAL width, REAL height)
+	{
+		return updateStatus(DllExports::GdipDrawImageRect(
+				nativeGraphics,
+				image ? image->nativeImage : NULL,
+				x, y, width, height));
+	}
+	Status DrawImage(Image *image, INT x, INT y, INT width, INT height)
+	{
+		return updateStatus(DllExports::GdipDrawImageRectI(
+				nativeGraphics,
+				image ? image->nativeImage : NULL,
+				x, y, width, height));
+	}
+	Status DrawImage(Image *image, const RectF& rect)
+	{
+		return updateStatus(DllExports::GdipDrawImageRect(
+				nativeGraphics,
+				image ? image->nativeImage : NULL,
+				rect.X, rect.Y, rect.Width, rect.Height));
+	}
+	Status DrawImage(Image *image, const Rect& rect)
+	{
+		return updateStatus(DllExports::GdipDrawImageRectI(
+				nativeGraphics,
+				image ? image->nativeImage : NULL,
+				rect.X, rect.Y, rect.Width, rect.Height));
+	}
+	Status DrawImage(Image *image, const PointF *destPoints, INT count)
+	{
+		return updateStatus(DllExports::GdipDrawImagePoints(
+				nativeGraphics,
+				image ? image->nativeImage : NULL,
+				destPoints, count));
+	}
+	Status DrawImage(Image *image, const Point *destPoints, INT count)
+	{
+		return updateStatus(DllExports::GdipDrawImagePointsI(
+				nativeGraphics,
+				image ? image->nativeImage : NULL,
+				destPoints, count));
+	}
+	Status DrawImage(Image *image, REAL x, REAL y, REAL srcx, REAL srcy,
+			REAL srcwidth, REAL srcheight, Unit srcUnit)
+	{
+		return updateStatus(DllExports::GdipDrawImagePointRect(
+				nativeGraphics,
+				image ? image->nativeImage : NULL,
+				x, y, srcx, srcy, srcwidth, srcheight,
+				srcUnit));
+	}
+	Status DrawImage(Image *image, INT x, INT y, INT srcx, INT srcy,
+			INT srcwidth, INT srcheight, Unit srcUnit)
+	{
+		return updateStatus(DllExports::GdipDrawImagePointRectI(
+				nativeGraphics,
+				image ? image->nativeImage : NULL,
+				x, y, srcx, srcy, srcwidth, srcheight,
+				srcUnit));
+	}
+	Status DrawImage(Image *image, const RectF& destRect,
+			REAL srcx, REAL srcy, REAL srcwidth, REAL srcheight,
+			Unit srcUnit,
+			const ImageAttributes *imageAttributes = NULL,
+			DrawImageAbort callback = NULL,
+			VOID *callbackData = NULL)
+	{
+		return updateStatus(DllExports::GdipDrawImageRectRect(
+				nativeGraphics,
+				image ? image->nativeImage : NULL,
+				destRect.X, destRect.Y,
+				destRect.Width, destRect.Height,
+				srcx, srcy, srcwidth, srcheight, srcUnit,
+				imageAttributes ? imageAttributes->nativeImageAttributes : NULL,
+				callback, callbackData));
+	}
+	Status DrawImage(Image *image, const Rect& destRect,
+			INT srcx, INT srcy, INT srcwidth, INT srcheight,
+			Unit srcUnit,
+			const ImageAttributes *imageAttributes = NULL,
+			DrawImageAbort callback = NULL,
+			VOID *callbackData = NULL)
+	{
+		return updateStatus(DllExports::GdipDrawImageRectRectI(
+				nativeGraphics,
+				image ? image->nativeImage : NULL,
+				destRect.X, destRect.Y,
+				destRect.Width, destRect.Height,
+				srcx, srcy, srcwidth, srcheight, srcUnit,
+				imageAttributes ? imageAttributes->nativeImageAttributes : NULL,
+				callback, callbackData));
+	}
+	Status DrawImage(Image *image, const RectF& destRect,
+			const RectF& sourceRect, Unit srcUnit,
+			const ImageAttributes *imageAttributes = NULL)
+	{
+		return updateStatus(DllExports::GdipDrawImageRectRectI(
+				nativeGraphics,
+				image ? image->nativeImage : NULL,
+				destRect.X, destRect.Y,
+				destRect.Width, destRect.Height,
+				sourceRect.X, sourceRect.Y,
+				sourceRect.Width, sourceRect.Height, srcUnit,
+				imageAttributes ? imageAttributes->nativeImageAttributes : NULL,
+				NULL, NULL));
+	}
+	Status DrawImage(Image *image, const PointF *destPoints, INT count,
+			REAL srcx, REAL srcy, REAL srcwidth, REAL srcheight,
+			Unit srcUnit,
+			const ImageAttributes *imageAttributes = NULL,
+			DrawImageAbort callback = NULL,
+			VOID *callbackData = NULL)
+	{
+		return updateStatus(DllExports::GdipDrawImagePointsRect(
+				nativeGraphics,
+				image ? image->nativeImage : NULL,
+				destPoints, count,
+				srcx, srcy, srcwidth, srcheight, srcUnit,
+				imageAttributes ? imageAttributes->nativeImageAttributes : NULL,
+				callback, callbackData));
+	}
+	Status DrawImage(Image *image, const Point *destPoints, INT count,
+			INT srcx, INT srcy, INT srcwidth, INT srcheight,
+			Unit srcUnit,
+			const ImageAttributes *imageAttributes = NULL,
+			DrawImageAbort callback = NULL,
+			VOID *callbackData = NULL)
+	{
+		return updateStatus(DllExports::GdipDrawImagePointsRectI(
+				nativeGraphics,
+				image ? image->nativeImage : NULL,
+				destPoints, count,
+				srcx, srcy, srcwidth, srcheight, srcUnit,
+				imageAttributes ? imageAttributes->nativeImageAttributes : NULL,
+				callback, callbackData));
+	}
+	// TODO: [GDI+ 1.1] Graphics::DrawImage(..Effect..)
+	//Status DrawImage(Image *image, RectF *sourceRect, Matrix *matrix,
+	//		Effect *effect, ImageAttributes *imageAttributes,
+	//		Unit srcUnit)
+	//{
+	//	return updateStatus(DllExports::GdipDrawImageFX(
+	//			nativeGraphics,
+	//			image ? image->nativeImage : NULL,
+	//			sourceRect,
+	//			matrix ? matrix->nativeMatrix : NULL,
+	//			effect ? effect->nativeEffect : NULL,
+	//			imageAttributes ? imageAttributes->nativeImageAttributes : NULL,
+	//			srcUnit));
+	//}
+	Status DrawLine(const Pen *pen, REAL x1, REAL y1, REAL x2, REAL y2)
+	{
+		return updateStatus(DllExports::GdipDrawLine(
+				nativeGraphics, pen ? pen->nativePen : NULL,
+				x1, y1, x2, y2));
+	}
+	Status DrawLine(const Pen *pen, INT x1, INT y1, INT x2, INT y2)
+	{
+		return updateStatus(DllExports::GdipDrawLineI(
+				nativeGraphics, pen ? pen->nativePen : NULL,
+				x1, y1, x2, y2));
+	}
+	Status DrawLine(const Pen *pen, const PointF& pt1, const PointF& pt2)
+	{
+		return updateStatus(DllExports::GdipDrawLine(
+				nativeGraphics, pen ? pen->nativePen : NULL,
+				pt1.X, pt1.Y, pt2.X, pt2.Y));
+	}
+	Status DrawLine(const Pen *pen, const Point& pt1, const Point& pt2)
+	{
+		return updateStatus(DllExports::GdipDrawLineI(
+				nativeGraphics, pen ? pen->nativePen : NULL,
+				pt1.X, pt1.Y, pt2.X, pt2.Y));
+	}
+	Status DrawLines(const Pen *pen, const PointF *points, INT count)
+	{
+		return updateStatus(DllExports::GdipDrawLines(
+				nativeGraphics, pen ? pen->nativePen : NULL,
+				points, count));
+	}
+	Status DrawLines(const Pen *pen, const Point *points, INT count)
+	{
+		return updateStatus(DllExports::GdipDrawLinesI(
+				nativeGraphics, pen ? pen->nativePen : NULL,
+				points, count));
+	}
+	Status DrawPath(const Pen *pen, const GraphicsPath *path)
+	{
+		return updateStatus(DllExports::GdipDrawPath(
+				nativeGraphics, pen ? pen->nativePen : NULL,
+				path ? path->nativePath : NULL));
+	}
+	Status DrawPie(const Pen *pen, REAL x, REAL y, REAL width, REAL height,
+			REAL startAngle, REAL sweepAngle)
+	{
+		return updateStatus(DllExports::GdipDrawPie(
+				nativeGraphics, pen ? pen->nativePen : NULL,
+				x, y, width, height, startAngle, sweepAngle));
+	}
+	Status DrawPie(const Pen *pen, INT x, INT y, INT width, INT height,
+			REAL startAngle, REAL sweepAngle)
+	{
+		return updateStatus(DllExports::GdipDrawPieI(
+				nativeGraphics, pen ? pen->nativePen : NULL,
+				x, y, width, height, startAngle, sweepAngle));
+	}
+	Status DrawPie(const Pen *pen, const RectF& rect,
+			REAL startAngle, REAL sweepAngle)
+	{
+		return updateStatus(DllExports::GdipDrawPie(
+				nativeGraphics, pen ? pen->nativePen : NULL,
+				rect.X, rect.Y, rect.Width, rect.Height,
+				startAngle, sweepAngle));
+	}
+	Status DrawPie(const Pen *pen, const Rect& rect,
+			REAL startAngle, REAL sweepAngle)
+	{
+		return updateStatus(DllExports::GdipDrawPieI(
+				nativeGraphics, pen ? pen->nativePen : NULL,
+				rect.X, rect.Y, rect.Width, rect.Height,
+				startAngle, sweepAngle));
+	}
+	Status DrawPolygon(const Pen *pen, const PointF *points, INT count)
+	{
+		return updateStatus(DllExports::GdipDrawPolygon(
+				nativeGraphics, pen ? pen->nativePen : NULL,
+				points, count));
+	}
+	Status DrawPolygon(const Pen *pen, const Point *points, INT count)
+	{
+		return updateStatus(DllExports::GdipDrawPolygonI(
+				nativeGraphics, pen ? pen->nativePen : NULL,
+				points, count));
+	}
+	Status DrawRectangle(const Pen *pen,
+			REAL x, REAL y, REAL width, REAL height)
+	{
+		return updateStatus(DllExports::GdipDrawRectangle(
+				nativeGraphics, pen ? pen->nativePen : NULL,
+				x, y, width, height));
+	}
+	Status DrawRectangle(const Pen *pen,
+			INT x, INT y, INT width, INT height)
+	{
+		return updateStatus(DllExports::GdipDrawRectangleI(
+				nativeGraphics, pen ? pen->nativePen : NULL,
+				x, y, width, height));
+	}
+	Status DrawRectangle(const Pen *pen, const RectF& rect)
+	{
+		return updateStatus(DllExports::GdipDrawRectangle(
+				nativeGraphics, pen ? pen->nativePen : NULL,
+				rect.X, rect.Y, rect.Width, rect.Height));
+	}
+	Status DrawRectangle(const Pen *pen, const Rect& rect)
+	{
+		return updateStatus(DllExports::GdipDrawRectangleI(
+				nativeGraphics, pen ? pen->nativePen : NULL,
+				rect.X, rect.Y, rect.Width, rect.Height));
+	}
+	Status DrawRectangles(const Pen *pen, const RectF *rects, INT count)
+	{
+		return updateStatus(DllExports::GdipDrawRectangles(
+				nativeGraphics, pen ? pen->nativePen : NULL,
+				rects, count));
+	}
+	Status DrawRectangles(const Pen *pen, const Rect *rects, INT count)
+	{
+		return updateStatus(DllExports::GdipDrawRectanglesI(
+				nativeGraphics, pen ? pen->nativePen : NULL,
+				rects, count));
+	}
+	Status DrawString(const WCHAR *string, INT length, const Font *font,
+			const PointF& origin, const Brush *brush)
+	{
+		RectF layoutRect(origin.X, origin.Y, 0.0f, 0.0f);
+		return updateStatus(DllExports::GdipDrawString(
+				nativeGraphics, string, length,
+				font ? font->nativeFont : NULL,
+				&layoutRect, NULL,
+				brush ? brush->nativeBrush : NULL));
+	}
+	Status DrawString(const WCHAR *string, INT length,
+			const Font *font, const PointF& origin,
+			const StringFormat *stringFormat, const Brush *brush)
+	{
+		RectF layoutRect(origin.X, origin.Y, 0.0f, 0.0f);
+		return updateStatus(DllExports::GdipDrawString(
+				nativeGraphics, string, length,
+				font ? font->nativeFont : NULL,
+				&layoutRect,
+				stringFormat ? stringFormat->nativeStringFormat : NULL,
+				brush ? brush->nativeBrush : NULL));
+	}
+	Status DrawString(const WCHAR *string, INT length,
+			const Font *font, const RectF& layoutRect,
+			const StringFormat *stringFormat, const Brush *brush)
+	{
+		return updateStatus(DllExports::GdipDrawString(
+				nativeGraphics, string, length,
+				font ? font->nativeFont : NULL,
+				&layoutRect,
+				stringFormat ? stringFormat->nativeStringFormat : NULL,
+				brush ? brush->nativeBrush : NULL));
+	}
+	Status EndContainer(GraphicsContainer state)
+	{
+		return updateStatus(DllExports::GdipEndContainer(
+				nativeGraphics, state));
+	}
+	Status EnumerateMetafile(const Metafile *metafile,
+			const PointF& destPoint,
+			EnumerateMetafileProc callback,
+			VOID *callbackData = NULL,
+			ImageAttributes *imageAttributes = NULL)
+	{
+		return updateStatus(DllExports::GdipEnumerateMetafileDestPoint(
+				nativeGraphics,
+				metafile ? ((GpMetafile*) metafile->nativeImage) : NULL,
+				destPoint, callback, callbackData,
+				imageAttributes ? imageAttributes->nativeImageAttributes : NULL));
+	}
+	Status EnumerateMetafile(const Metafile *metafile,
+			const Point& destPoint,
+			EnumerateMetafileProc callback,
+			VOID *callbackData = NULL,
+			ImageAttributes *imageAttributes = NULL)
+	{
+		return updateStatus(DllExports::GdipEnumerateMetafileDestPointI(
+				nativeGraphics,
+				metafile ? ((GpMetafile*) metafile->nativeImage) : NULL,
+				destPoint, callback, callbackData,
+				imageAttributes ? imageAttributes->nativeImageAttributes : NULL));
+	}
+	Status EnumerateMetafile(const Metafile *metafile,
+			const RectF& destRect,
+			EnumerateMetafileProc callback,
+			VOID *callbackData = NULL,
+			ImageAttributes *imageAttributes = NULL)
+	{
+		return updateStatus(DllExports::GdipEnumerateMetafileDestRect(
+				nativeGraphics,
+				metafile ? ((GpMetafile*) metafile->nativeImage) : NULL,
+				destRect, callback, callbackData,
+				imageAttributes ? imageAttributes->nativeImageAttributes : NULL));
+	}
+	Status EnumerateMetafile(const Metafile *metafile,
+			const Rect& destRect,
+			EnumerateMetafileProc callback,
+			VOID *callbackData = NULL,
+			ImageAttributes *imageAttributes = NULL)
+	{
+		return updateStatus(DllExports::GdipEnumerateMetafileDestRectI(
+				nativeGraphics,
+				metafile ? ((GpMetafile*) metafile->nativeImage) : NULL,
+				destRect, callback, callbackData,
+				imageAttributes ? imageAttributes->nativeImageAttributes : NULL));
+	}
+	Status EnumerateMetafile(const Metafile *metafile,
+			const PointF *destPoints, INT count,
+			EnumerateMetafileProc callback,
+			VOID *callbackData = NULL,
+			ImageAttributes *imageAttributes = NULL)
+	{
+		return updateStatus(DllExports::GdipEnumerateMetafileDestPoints(
+				nativeGraphics,
+				metafile ? ((GpMetafile*) metafile->nativeImage) : NULL,
+				destPoints, count, callback, callbackData,
+				imageAttributes ? imageAttributes->nativeImageAttributes : NULL));
+	}
+	Status EnumerateMetafile(const Metafile *metafile,
+			const Point *destPoints, INT count,
+			EnumerateMetafileProc callback,
+			VOID *callbackData = NULL,
+			ImageAttributes *imageAttributes = NULL)
+	{
+		return updateStatus(DllExports::GdipEnumerateMetafileDestPointsI(
+				nativeGraphics,
+				metafile ? ((GpMetafile*) metafile->nativeImage) : NULL,
+				destPoints, count, callback, callbackData,
+				imageAttributes ? imageAttributes->nativeImageAttributes : NULL));
+	}
+	Status EnumerateMetafile(const Metafile *metafile,
+			const PointF& destPoint,
+			const RectF& srcRect, Unit srcUnit,
+			EnumerateMetafileProc callback,
+			VOID *callbackData = NULL,
+			ImageAttributes *imageAttributes = NULL)
+	{
+		return updateStatus(DllExports::GdipEnumerateMetafileSrcRectDestPoint(
+				nativeGraphics,
+				metafile ? ((GpMetafile*) metafile->nativeImage) : NULL,
+				destPoint, srcRect, srcUnit,
+				callback, callbackData,
+				imageAttributes ? imageAttributes->nativeImageAttributes : NULL));
+	}
+	Status EnumerateMetafile(const Metafile *metafile,
+			const Point& destPoint,
+			const Rect& srcRect, Unit srcUnit,
+			EnumerateMetafileProc callback,
+			VOID *callbackData = NULL,
+			ImageAttributes *imageAttributes = NULL)
+	{
+		return updateStatus(DllExports::GdipEnumerateMetafileSrcRectDestPointI(
+				nativeGraphics,
+				metafile ? ((GpMetafile*) metafile->nativeImage) : NULL,
+				destPoint, srcRect, srcUnit,
+				callback, callbackData,
+				imageAttributes ? imageAttributes->nativeImageAttributes : NULL));
+	}
+	Status EnumerateMetafile(const Metafile *metafile,
+			const RectF& destRect,
+			const RectF& srcRect, Unit srcUnit,
+			EnumerateMetafileProc callback,
+			VOID *callbackData = NULL,
+			ImageAttributes *imageAttributes = NULL)
+	{
+		return updateStatus(DllExports::GdipEnumerateMetafileSrcRectDestRect(
+				nativeGraphics,
+				metafile ? ((GpMetafile*) metafile->nativeImage) : NULL,
+				destRect, srcRect, srcUnit,
+				callback, callbackData,
+				imageAttributes ? imageAttributes->nativeImageAttributes : NULL));
+	}
+	Status EnumerateMetafile(const Metafile *metafile,
+			const Rect& destRect,
+			const Rect& srcRect, Unit srcUnit,
+			EnumerateMetafileProc callback,
+			VOID *callbackData = NULL,
+			ImageAttributes *imageAttributes = NULL)
+	{
+		return updateStatus(DllExports::GdipEnumerateMetafileSrcRectDestRectI(
+				nativeGraphics,
+				metafile ? ((GpMetafile*) metafile->nativeImage) : NULL,
+				destRect, srcRect, srcUnit,
+				callback, callbackData,
+				imageAttributes ? imageAttributes->nativeImageAttributes : NULL));
+	}
+	Status EnumerateMetafile(const Metafile *metafile,
+			const PointF* destPoints, INT count,
+			const RectF& srcRect, Unit srcUnit,
+			EnumerateMetafileProc callback,
+			VOID *callbackData = NULL,
+			ImageAttributes *imageAttributes = NULL)
+	{
+		return updateStatus(DllExports::GdipEnumerateMetafileSrcRectDestPoints(
+				nativeGraphics,
+				metafile ? ((GpMetafile*) metafile->nativeImage) : NULL,
+				destPoints, count, srcRect, srcUnit,
+				callback, callbackData,
+				imageAttributes ? imageAttributes->nativeImageAttributes : NULL));
+	}
+	Status EnumerateMetafile(const Metafile *metafile,
+			const Point* destPoints, INT count,
+			const Rect& srcRect, Unit srcUnit,
+			EnumerateMetafileProc callback,
+			VOID *callbackData = NULL,
+			ImageAttributes *imageAttributes = NULL)
+	{
+		return updateStatus(DllExports::GdipEnumerateMetafileSrcRectDestPointsI(
+				nativeGraphics,
+				metafile ? ((GpMetafile*) metafile->nativeImage) : NULL,
+				destPoints, count, srcRect, srcUnit,
+				callback, callbackData,
+				imageAttributes ? imageAttributes->nativeImageAttributes : NULL));
+	}
+	Status ExcludeClip(const RectF& rect)
+	{
+		return updateStatus(DllExports::GdipSetClipRect(
+				nativeGraphics,
+				rect.X, rect.Y, rect.Width, rect.Height,
+				CombineModeExclude));
+	}
+	Status ExcludeClip(const Rect& rect)
+	{
+		return updateStatus(DllExports::GdipSetClipRectI(
+				nativeGraphics,
+				rect.X, rect.Y, rect.Width, rect.Height,
+				CombineModeExclude));
+	}
+	Status ExcludeClip(const Region *region)
+	{
+		return updateStatus(DllExports::GdipSetClipRegion(
+				nativeGraphics,
+				region ? region->nativeRegion : NULL,
+				CombineModeExclude));
+	}
+	Status FillClosedCurve(const Brush *brush,
+			const PointF *points, INT count)
+	{
+		return updateStatus(DllExports::GdipFillClosedCurve(
+				nativeGraphics,
+				brush ? brush->nativeBrush : NULL,
+				points, count));
+	}
+	Status FillClosedCurve(const Brush *brush,
+			const Point *points, INT count)
+	{
+		return updateStatus(DllExports::GdipFillClosedCurveI(
+				nativeGraphics,
+				brush ? brush->nativeBrush : NULL,
+				points, count));
+	}
+	Status FillClosedCurve(const Brush *brush,
+			const PointF *points, INT count,
+			FillMode fillMode, REAL tension = 0.5f)
+	{
+		return updateStatus(DllExports::GdipFillClosedCurve2(
+				nativeGraphics,
+				brush ? brush->nativeBrush : NULL,
+				points, count, tension, fillMode));
+	}
+	Status FillClosedCurve(const Brush *brush,
+			const Point *points, INT count,
+			FillMode fillMode, REAL tension = 0.5f)
+	{
+		return updateStatus(DllExports::GdipFillClosedCurve2I(
+				nativeGraphics,
+				brush ? brush->nativeBrush : NULL,
+				points, count, tension, fillMode));
+	}
+	Status FillEllipse(const Brush *brush,
+			REAL x, REAL y, REAL width, REAL height)
+	{
+		return updateStatus(DllExports::GdipFillEllipse(
+				nativeGraphics,
+				brush ? brush->nativeBrush : NULL,
+				x, y, width, height));
+	}
+	Status FillEllipse(const Brush *brush,
+			INT x, INT y, INT width, INT height)
+	{
+		return updateStatus(DllExports::GdipFillEllipseI(
+				nativeGraphics,
+				brush ? brush->nativeBrush : NULL,
+				x, y, width, height));
+	}
+	Status FillEllipse(const Brush *brush, const RectF& rect)
+	{
+		return updateStatus(DllExports::GdipFillEllipse(
+				nativeGraphics,
+				brush ? brush->nativeBrush : NULL,
+				rect.X, rect.Y, rect.Width, rect.Height));
+	}
+	Status FillEllipse(const Brush *brush, const Rect& rect)
+	{
+		return updateStatus(DllExports::GdipFillEllipseI(
+				nativeGraphics,
+				brush ? brush->nativeBrush : NULL,
+				rect.X, rect.Y, rect.Width, rect.Height));
+	}
+	Status FillPath(const Brush *brush, const GraphicsPath *path)
+	{
+		return updateStatus(DllExports::GdipFillPath(
+				nativeGraphics,
+				brush ? brush->nativeBrush : NULL,
+				path ? path->nativePath : NULL));
+	}
+	Status FillPie(const Brush *brush,
+			REAL x, REAL y, REAL width, REAL height,
+			REAL startAngle, REAL sweepAngle)
+	{
+		return updateStatus(DllExports::GdipFillPie(
+				nativeGraphics,
+				brush ? brush->nativeBrush : NULL,
+				x, y, width, height, startAngle, sweepAngle));
+	}
+	Status FillPie(const Brush *brush, INT x, INT y, INT width, INT height,
+			REAL startAngle, REAL sweepAngle)
+	{
+		return updateStatus(DllExports::GdipFillPieI(
+				nativeGraphics,
+				brush ? brush->nativeBrush : NULL,
+				x, y, width, height, startAngle, sweepAngle));
+	}
+	Status FillPie(const Brush *brush, const RectF& rect,
+			REAL startAngle, REAL sweepAngle)
+	{
+		return updateStatus(DllExports::GdipFillPie(
+				nativeGraphics,
+				brush ? brush->nativeBrush : NULL,
+				rect.X, rect.Y, rect.Width, rect.Height,
+				startAngle, sweepAngle));
+	}
+	Status FillPie(const Brush *brush, const Rect& rect,
+			REAL startAngle, REAL sweepAngle)
+	{
+		return updateStatus(DllExports::GdipFillPieI(
+				nativeGraphics,
+				brush ? brush->nativeBrush : NULL,
+				rect.X, rect.Y, rect.Width, rect.Height,
+				startAngle, sweepAngle));
+	}
+	Status FillPolygon(const Brush *brush, const PointF *points, INT count)
+	{
+		return updateStatus(DllExports::GdipFillPolygon(
+				nativeGraphics,
+				brush ? brush->nativeBrush : NULL,
+				points, count, FillModeAlternate));
+	}
+	Status FillPolygon(const Brush *brush, const Point *points, INT count)
+	{
+		return updateStatus(DllExports::GdipFillPolygonI(
+				nativeGraphics,
+				brush ? brush->nativeBrush : NULL,
+				points, count, FillModeAlternate));
+	}
+	Status FillPolygon(const Brush *brush, const PointF *points, INT count,
+			FillMode fillMode)
+	{
+		return updateStatus(DllExports::GdipFillPolygon(
+				nativeGraphics,
+				brush ? brush->nativeBrush : NULL,
+				points, count, fillMode));
+	}
+	Status FillPolygon(const Brush *brush, const Point *points, INT count,
+			FillMode fillMode)
+	{
+		return updateStatus(DllExports::GdipFillPolygonI(
+				nativeGraphics,
+				brush ? brush->nativeBrush : NULL,
+				points, count, fillMode));
+	}
+	Status FillRectangle(const Brush *brush,
+			REAL x, REAL y, REAL width, REAL height)
+	{
+		return updateStatus(DllExports::GdipFillRectangle(
+				nativeGraphics,
+				brush ? brush->nativeBrush : NULL,
+				x, y, width, height));
+	}
+	Status FillRectangle(const Brush *brush,
+			INT x, INT y, INT width, INT height)
+	{
+		return updateStatus(DllExports::GdipFillRectangleI(
+				nativeGraphics,
+				brush ? brush->nativeBrush : NULL,
+				x, y, width, height));
+	}
+	Status FillRectangle(const Brush *brush, const RectF& rect)
+	{
+		return updateStatus(DllExports::GdipFillRectangle(
+				nativeGraphics,
+				brush ? brush->nativeBrush : NULL,
+				rect.X, rect.Y, rect.Width, rect.Height));
+	}
+	Status FillRectangle(const Brush *brush, const Rect& rect)
+	{
+		return updateStatus(DllExports::GdipFillRectangleI(
+				nativeGraphics,
+				brush ? brush->nativeBrush : NULL,
+				rect.X, rect.Y, rect.Width, rect.Height));
+	}
+	Status FillRectangles(const Brush *brush, const RectF *rects, INT count)
+	{
+		return updateStatus(DllExports::GdipFillRectangles(
+				nativeGraphics,
+				brush ? brush->nativeBrush : NULL,
+				rects, count));
+	}
+	Status FillRectangles(const Brush *brush, const Rect *rects, INT count)
+	{
+		return updateStatus(DllExports::GdipFillRectanglesI(
+				nativeGraphics,
+				brush ? brush->nativeBrush : NULL,
+				rects, count));
+	}
+	Status FillRegion(const Brush *brush, const Region *region)
+	{
+		return updateStatus(DllExports::GdipFillRegion(
+				nativeGraphics,
+				brush ? brush->nativeBrush : NULL,
+				region ? region->nativeRegion : NULL));
+	}
+	VOID Flush(FlushIntention intention = FlushIntentionFlush)
+	{
+		updateStatus(DllExports::GdipFlush(nativeGraphics, intention));
+	}
+	Status GetClip(Region *region) const
+	{
+		return updateStatus(DllExports::GdipGetClip(
+				nativeGraphics,
+				region ? region->nativeRegion : NULL));
+	}
+	Status GetClipBounds(RectF *rect) const
+	{
+		return updateStatus(DllExports::GdipGetClipBounds(
+				nativeGraphics, rect));
+	}
+	Status GetClipBounds(Rect *rect) const
+	{
+		return updateStatus(DllExports::GdipGetClipBoundsI(
+				nativeGraphics, rect));
+	}
+	CompositingMode GetCompositingMode() const
+	{
+		CompositingMode result = CompositingModeSourceOver;
+		updateStatus(DllExports::GdipGetCompositingMode(
+				nativeGraphics, &result));
+		return result;
+	}
+	CompositingQuality GetCompositingQuality() const
+	{
+		CompositingQuality result = CompositingQualityDefault;
+		updateStatus(DllExports::GdipGetCompositingQuality(
+				nativeGraphics, &result));
+		return result;
+	}
+	REAL GetDpiX() const
+	{
+		REAL result = 0.0f;
+		updateStatus(DllExports::GdipGetDpiX(nativeGraphics, &result));
+		return result;
+	}
+	REAL GetDpiY() const
+	{
+		REAL result = 0.0f;
+		updateStatus(DllExports::GdipGetDpiY(nativeGraphics, &result));
+		return result;
+	}
+	HDC GetHDC()
+	{
+		HDC result = NULL;
+		updateStatus(DllExports::GdipGetDC(nativeGraphics, &result));
+		return result;
+	}
+	InterpolationMode GetInterpolationMode() const
+	{
+		InterpolationMode result = InterpolationModeDefault;
+		updateStatus(DllExports::GdipGetInterpolationMode(
+				nativeGraphics, &result));
+		return result;
+	}
+	Status GetLastStatus() const
+	{
+		Status result = lastStatus;
+		lastStatus = Ok;
+		return result;
+	}
+	Status GetNearestColor(Color *color) const
+	{
+		return updateStatus(DllExports::GdipGetNearestColor(
+				nativeGraphics, color ? &color->Value : NULL));
+	}
+	REAL GetPageScale() const
+	{
+		REAL result = 0.0f;
+		updateStatus(DllExports::GdipGetPageScale(
+				nativeGraphics, &result));
+		return result;
+	}
+	Unit GetPageUnit() const
+	{
+		Unit result = UnitWorld;
+		updateStatus(DllExports::GdipGetPageUnit(
+				nativeGraphics, &result));
+		return result;
+	}
+	PixelOffsetMode GetPixelOffsetMode() const
+	{
+		PixelOffsetMode result = PixelOffsetModeDefault;
+		updateStatus(DllExports::GdipGetPixelOffsetMode(
+				nativeGraphics, &result));
+		return result;
+	}
+	Status GetRenderingOrigin(INT *x, INT *y) const
+	{
+		return updateStatus(DllExports::GdipGetRenderingOrigin(
+				nativeGraphics, x, y));
+	}
+	SmoothingMode GetSmoothingMode() const
+	{
+		SmoothingMode result = SmoothingModeDefault;
+		updateStatus(DllExports::GdipGetSmoothingMode(
+				nativeGraphics, &result));
+		return result;
+	}
+	UINT GetTextContrast() const
+	{
+		UINT result = 0;
+		updateStatus(DllExports::GdipGetTextContrast(
+				nativeGraphics, &result));
+		return result;
+	}
+	TextRenderingHint GetTextRenderingHint() const
+	{
+		TextRenderingHint result = TextRenderingHintSystemDefault;
+		updateStatus(DllExports::GdipGetTextRenderingHint(
+				nativeGraphics, &result));
+		return result;
+	}
+	Status GetTransform(Matrix *matrix) const
+	{
+		return updateStatus(DllExports::GdipGetWorldTransform(
+				nativeGraphics,
+				matrix ? matrix->nativeMatrix : NULL));
+	}
+	Status GetVisibleClipBounds(RectF *rect) const
+	{
+		return updateStatus(DllExports::GdipGetVisibleClipBounds(
+				nativeGraphics, rect));
+	}
+	Status GetVisibleClipBounds(Rect *rect) const
+	{
+		return updateStatus(DllExports::GdipGetVisibleClipBoundsI(
+				nativeGraphics, rect));
+	}
+	Status IntersectClip(const RectF& rect)
+	{
+		return updateStatus(DllExports::GdipSetClipRect(
+				nativeGraphics,
+				rect.X, rect.Y, rect.Width, rect.Height,
+				CombineModeIntersect));
+	}
+	Status IntersectClip(const Rect& rect)
+	{
+		return updateStatus(DllExports::GdipSetClipRectI(
+				nativeGraphics,
+				rect.X, rect.Y, rect.Width, rect.Height,
+				CombineModeIntersect));
+	}
+	Status IntersectClip(const Region *region)
+	{
+		return updateStatus(DllExports::GdipSetClipRegion(
+				nativeGraphics,
+				region ? region->nativeRegion : NULL,
+				CombineModeIntersect));
+	}
+	BOOL IsClipEmpty() const
+	{
+		BOOL result = FALSE;
+		updateStatus(DllExports::GdipIsClipEmpty(
+				nativeGraphics, &result));
+		return result;
+	}
+	BOOL IsVisible(REAL x, REAL y) const
+	{
+		BOOL result = FALSE;
+		updateStatus(DllExports::GdipIsVisiblePoint(
+				nativeGraphics, x, y, &result));
+		return result;
+	}
+	BOOL IsVisible(INT x, INT y) const
+	{
+		BOOL result = FALSE;
+		updateStatus(DllExports::GdipIsVisiblePointI(
+				nativeGraphics, x, y, &result));
+		return result;
+	}
+	BOOL IsVisible(const PointF& point) const
+	{
+		BOOL result = FALSE;
+		updateStatus(DllExports::GdipIsVisiblePoint(
+				nativeGraphics, point.X, point.Y, &result));
+		return result;
+	}
+	BOOL IsVisible(const Point& point) const
+	{
+		BOOL result = FALSE;
+		updateStatus(DllExports::GdipIsVisiblePointI(
+				nativeGraphics, point.X, point.Y, &result));
+		return result;
+	}
+	BOOL IsVisible(REAL x, REAL y, REAL width, REAL height) const
+	{
+		BOOL result = FALSE;
+		updateStatus(DllExports::GdipIsVisibleRect(
+				nativeGraphics, x, y, width, height, &result));
+		return result;
+	}
+	BOOL IsVisible(INT x, INT y, INT width, INT height) const
+	{
+		BOOL result = FALSE;
+		updateStatus(DllExports::GdipIsVisibleRectI(
+				nativeGraphics, x, y, width, height, &result));
+		return result;
+	}
+	BOOL IsVisible(const RectF& rect) const
+	{
+		BOOL result = FALSE;
+		updateStatus(DllExports::GdipIsVisibleRect(
+				nativeGraphics, rect.X, rect.Y,
+				rect.Width, rect.Height, &result));
+		return result;
+	}
+	BOOL IsVisible(const Rect& rect) const
+	{
+		BOOL result = FALSE;
+		updateStatus(DllExports::GdipIsVisibleRectI(
+				nativeGraphics, rect.X, rect.Y,
+				rect.Width, rect.Height, &result));
+		return result;
+	}
+	BOOL IsVisibleClipEmpty() const
+	{
+		BOOL result = FALSE;
+		updateStatus(DllExports::GdipIsVisibleClipEmpty(
+				nativeGraphics, &result));
+		return result;
+	}
+	Status MeasureCharacterRanges(const WCHAR *string, INT length,
+			const Font *font, const RectF& layoutRect,
+			const StringFormat *stringFormat,
+			INT regionCount, Region *regions) const
+	{
+		if (regionCount <= 0 || !regions)
+			return lastStatus = InvalidParameter;
+
+		GpRegion **nativeRegionArray = (GpRegion**)
+			DllExports::GdipAlloc(regionCount * sizeof(GpRegion*));
+		if (!nativeRegionArray)
+			return lastStatus = OutOfMemory;
+		for (int i = 0; i < regionCount; ++i) {
+			nativeRegionArray[i] = regions[i].nativeRegion;
+		}
+		Status status = updateStatus(DllExports::GdipMeasureCharacterRanges(
+				nativeGraphics, string, length,
+				font ? font->nativeFont : NULL,
+				layoutRect,
+				stringFormat ? stringFormat->nativeStringFormat : NULL,
+				regionCount, nativeRegionArray));
+		DllExports::GdipFree(nativeRegionArray);
+		return status;
+	}
+	Status MeasureDriverString(const UINT16 *text, INT length,
+			const Font *font, const PointF *positions, INT flags,
+			const Matrix *matrix, RectF *boundingBox) const
+	{
+		return updateStatus(DllExports::GdipMeasureDriverString(
+				nativeGraphics, text, length,
+				font ? font->nativeFont : NULL,
+				positions, flags,
+				matrix ? matrix->nativeMatrix : NULL,
+				boundingBox));
+	}
+	Status MeasureString(const WCHAR *string, INT length,
+			const Font *font, const RectF& layoutRect,
+			RectF *boundingBox) const
+	{
+		return updateStatus(DllExports::GdipMeasureString(
+				nativeGraphics, string, length,
+				font ? font->nativeFont : NULL,
+				&layoutRect, NULL, boundingBox, NULL, NULL));
+	}
+	Status MeasureString(const WCHAR *string, INT length,
+			const Font *font, const RectF& layoutRect,
+			const StringFormat *stringFormat, RectF *boundingBox,
+			INT *codepointsFitted = NULL,
+			INT *linesFitted = NULL) const
+	{
+		return updateStatus(DllExports::GdipMeasureString(
+				nativeGraphics, string, length,
+				font ? font->nativeFont : NULL,
+				&layoutRect,
+				stringFormat ? stringFormat->nativeStringFormat : NULL,
+				boundingBox, codepointsFitted, linesFitted));
+	}
+	Status MeasureString(const WCHAR *string, INT length,
+			const Font *font, const SizeF& layoutRectSize,
+			const StringFormat *stringFormat, SizeF *size,
+			INT *codepointsFitted = NULL,
+			INT *linesFitted = NULL) const
+	{
+		if (!size) return lastStatus = InvalidParameter;
+		RectF layoutRect(PointF(0.0f, 0.0f), layoutRectSize);
+		RectF boundingBox;
+		Status status = updateStatus(DllExports::GdipMeasureString(
+				nativeGraphics, string, length,
+				font ? font->nativeFont : NULL,
+				&layoutRect,
+				stringFormat ? stringFormat->nativeStringFormat : NULL,
+				&boundingBox, codepointsFitted, linesFitted));
+		boundingBox.GetSize(size);
+		return status;
+	}
+	Status MeasureString(const WCHAR *string, INT length,
+			const Font *font, const PointF& origin,
+			RectF *boundingBox) const
+	{
+		RectF layoutRect(origin, SizeF(0.0f, 0.0f));
+		return updateStatus(DllExports::GdipMeasureString(
+				nativeGraphics, string, length,
+				font ? font->nativeFont : NULL,
+				&layoutRect, NULL, boundingBox, NULL, NULL));
+	}
+	Status MeasureString(const WCHAR *string, INT length,
+			const Font *font, const PointF& origin,
+			const StringFormat *stringFormat,
+			RectF *boundingBox) const
+	{
+		RectF layoutRect(origin, SizeF(0.0f, 0.0f));
+		return updateStatus(DllExports::GdipMeasureString(
+				nativeGraphics, string, length,
+				font ? font->nativeFont : NULL,
+				&layoutRect,
+				stringFormat ? stringFormat->nativeStringFormat : NULL,
+				boundingBox, NULL, NULL));
+	}
+	Status MultiplyTransform(const Matrix *matrix,
+			MatrixOrder order = MatrixOrderPrepend)
+	{
+		return updateStatus(DllExports::GdipMultiplyWorldTransform(
+				nativeGraphics,
+				matrix ? matrix->nativeMatrix : NULL, order));
+	}
+	VOID ReleaseHDC(HDC hdc)
+	{
+		updateStatus(DllExports::GdipReleaseDC(nativeGraphics, hdc));
+	}
+	Status ResetClip()
+	{
+		return updateStatus(DllExports::GdipResetClip(nativeGraphics));
+	}
+	Status ResetTransform()
+	{
+		return updateStatus(DllExports::GdipResetWorldTransform(
+				nativeGraphics));
+	}
+	Status Restore(GraphicsState state)
+	{
+		return updateStatus(DllExports::GdipRestoreGraphics(
+				nativeGraphics, state));
+	}
+	Status RotateTransform(REAL angle,
+			MatrixOrder order = MatrixOrderPrepend)
+	{
+		return updateStatus(DllExports::GdipRotateWorldTransform(
+				nativeGraphics, angle, order));
+	}
+	GraphicsState Save() const
+	{
+		GraphicsState result = 0;
+		updateStatus(DllExports::GdipSaveGraphics(
+				nativeGraphics, &result));
+		return result;
+	}
+	Status ScaleTransform(REAL sx, REAL sy,
+			MatrixOrder order = MatrixOrderPrepend)
+	{
+		return updateStatus(DllExports::GdipScaleWorldTransform(
+				nativeGraphics, sx, sy, order));
+	}
+	VOID SetAbort()
+	{
+		updateStatus(NotImplemented);
+	}
+	Status SetClip(const Graphics *g,
+			CombineMode combineMode = CombineModeReplace)
+	{
+		return updateStatus(DllExports::GdipSetClipGraphics(
+				nativeGraphics, g ? g->nativeGraphics : NULL,
+				combineMode));
+	}
+	Status SetClip(const RectF& rect,
+			CombineMode combineMode = CombineModeReplace)
+	{
+		return updateStatus(DllExports::GdipSetClipRect(
+				nativeGraphics,
+				rect.X, rect.Y, rect.Width, rect.Height,
+				combineMode));
+	}
+	Status SetClip(const Rect& rect,
+			CombineMode combineMode = CombineModeReplace)
+	{
+		return updateStatus(DllExports::GdipSetClipRectI(
+				nativeGraphics,
+				rect.X, rect.Y, rect.Width, rect.Height,
+				combineMode));
+	}
+	Status SetClip(const GraphicsPath *path,
+			CombineMode combineMode = CombineModeReplace)
+	{
+		return updateStatus(DllExports::GdipSetClipPath(
+				nativeGraphics,
+				path ? path->nativePath : NULL,
+				combineMode));
+	}
+	Status SetClip(const Region *region,
+			CombineMode combineMode = CombineModeReplace)
+	{
+		return updateStatus(DllExports::GdipSetClipRegion(
+				nativeGraphics,
+				region ? region->nativeRegion : NULL,
+				combineMode));
+	}
+	Status SetClip(HRGN hRgn, CombineMode combineMode = CombineModeReplace)
+	{
+		return updateStatus(DllExports::GdipSetClipHrgn(
+				nativeGraphics, hRgn, combineMode));
+	}
+	Status SetCompositingMode(CompositingMode compositingMode)
+	{
+		return updateStatus(DllExports::GdipSetCompositingMode(
+				nativeGraphics, compositingMode));
+	}
+	Status SetCompositingQuality(CompositingQuality compositingQuality)
+	{
+		return updateStatus(DllExports::GdipSetCompositingQuality(
+				nativeGraphics, compositingQuality));
+	}
+	Status SetInterpolationMode(InterpolationMode interpolationMode)
+	{
+		return updateStatus(DllExports::GdipSetInterpolationMode(
+				nativeGraphics, interpolationMode));
+	}
+	Status SetPageScale(REAL scale)
+	{
+		return updateStatus(DllExports::GdipSetPageScale(
+				nativeGraphics, scale));
+	}
+	Status SetPageUnit(Unit unit)
+	{
+		return updateStatus(DllExports::GdipSetPageUnit(
+				nativeGraphics, unit));
+	}
+	Status SetPixelOffsetMode(PixelOffsetMode pixelOffsetMode)
+	{
+		return updateStatus(DllExports::GdipSetPixelOffsetMode(
+				nativeGraphics, pixelOffsetMode));
+	}
+	Status SetRenderingOrigin(INT x, INT y)
+	{
+		return updateStatus(DllExports::GdipSetRenderingOrigin(
+				nativeGraphics, x, y));
+	}
+	Status SetSmoothingMode(SmoothingMode smoothingMode)
+	{
+		return updateStatus(DllExports::GdipSetSmoothingMode(
+				nativeGraphics, smoothingMode));
+	}
+	Status SetTextContrast(UINT contrast)
+	{
+		return updateStatus(DllExports::GdipSetTextContrast(
+				nativeGraphics, contrast));
+	}
+	Status SetTextRenderingHint(TextRenderingHint textRenderingHint)
+	{
+		return updateStatus(DllExports::GdipSetTextRenderingHint(
+				nativeGraphics, textRenderingHint));
+	}
+	Status SetTransform(const Matrix *matrix)
+	{
+		return updateStatus(DllExports::GdipSetWorldTransform(
+				nativeGraphics,
+				matrix ? matrix->nativeMatrix : NULL));
+	}
+	Status TransformPoints(CoordinateSpace destSpace,
+			CoordinateSpace srcSpace,
+			PointF *pts, INT count) const
+	{
+		return updateStatus(DllExports::GdipTransformPoints(
+				nativeGraphics, destSpace, srcSpace,
+				pts, count));
+	}
+	Status TransformPoints(CoordinateSpace destSpace,
+			CoordinateSpace srcSpace,
+			Point *pts, INT count) const
+	{
+		return updateStatus(DllExports::GdipTransformPointsI(
+				nativeGraphics, destSpace, srcSpace,
+				pts, count));
+	}
+	Status TranslateClip(REAL dx, REAL dy)
+	{
+		return updateStatus(DllExports::GdipTranslateClip(
+				nativeGraphics, dx, dy));
+	}
+	Status TranslateClip(INT dx, INT dy)
+	{
+		return updateStatus(DllExports::GdipTranslateClipI(
+				nativeGraphics, dx, dy));
+	}
+	Status TranslateTransform(REAL dx, REAL dy,
+			MatrixOrder order = MatrixOrderPrepend)
+	{
+		return updateStatus(DllExports::GdipTranslateWorldTransform(
+				nativeGraphics, dx, dy, order));
+	}
+
+private:
+	Graphics(const Graphics&);
+	Graphics& operator=(const Graphics&);
+
+	Status updateStatus(Status newStatus) const
+	{
+		if (newStatus != Ok) lastStatus = newStatus;
+		return newStatus;
+	}
+
+	GpGraphics *nativeGraphics;
+	mutable Status lastStatus;
+};
+
+#endif /* __GDIPLUS_GRAPHICS_H */
Index: Daodan/MinGW/include/gdiplus/gdiplusheaders.h
===================================================================
--- Daodan/MinGW/include/gdiplus/gdiplusheaders.h	(revision 1046)
+++ Daodan/MinGW/include/gdiplus/gdiplusheaders.h	(revision 1046)
@@ -0,0 +1,581 @@
+/*
+ * gdiplusheaders.h
+ *
+ * GDI+ Bitmap, CachedBitmap, CustomLineCap, Font, FontCollection,
+ *      FontFamily, Image, InstalledFontCollection, PrivateFontCollection,
+ *      Region class definitions.
+ *      Implementation of these classes is in gdiplusimpl.h.
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Markus Koenig <markus@stber-koenig.de>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __GDIPLUS_HEADERS_H
+#define __GDIPLUS_HEADERS_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifndef __cplusplus
+#error "A C++ compiler is required to include gdiplusheaders.h."
+#endif
+
+/*
+ * Note: Virtual inline functions (dtors, Clone()) are implemented here: If
+ * these were defined outside class scope, the compiler would always generate
+ * code for them (and the vtable), even if these classes were never used.
+ */
+
+class Bitmap;
+class Effect;
+class FontCollection;
+class FontFamily;
+class Graphics;
+class GraphicsPath;
+class Matrix;
+class Pen;
+
+class Image: public GdiplusBase
+{
+	friend class Bitmap;
+	friend class Metafile;
+	friend class CachedBitmap;
+	friend class Graphics;
+	friend class TextureBrush;
+
+public:
+	static Image* FromFile(const WCHAR *filename,
+			BOOL useEmbeddedColorManagement = FALSE);
+	static Image* FromStream(IStream *stream,
+			BOOL useEmbeddedColorManagement = FALSE);
+
+	Image(const WCHAR *filename, BOOL useEmbeddedColorManagement = FALSE);
+	Image(IStream *stream, BOOL useEmbeddedColorManagement = FALSE);
+
+	virtual ~Image()
+	{
+		DllExports::GdipDisposeImage(nativeImage);
+	}
+	virtual Image* Clone() const
+	{
+		GpImage *cloneImage = NULL;
+		Status status = updateStatus(DllExports::GdipCloneImage(
+				nativeImage, &cloneImage));
+		if (status == Ok) {
+			Image *result = new Image(cloneImage, lastStatus);
+			if (!result) {
+				DllExports::GdipDisposeImage(cloneImage);
+				lastStatus = OutOfMemory;
+			}
+			return result;
+		} else {
+			return NULL;
+		}
+	}
+
+	Status FindFirstItem(ImageItemData *item);
+	Status FindNextItem(ImageItemData *item);
+	Status GetAllPropertyItems(UINT totalBufferSize,
+			UINT numProperties, PropertyItem *allItems);
+	Status GetBounds(RectF *srcRect, Unit *srcUnit);
+	Status GetEncoderParameterList(const CLSID *clsidEncoder,
+			UINT size, EncoderParameters *buffer);
+	UINT GetEncoderParameterListSize(const CLSID *clsidEncoder);
+	UINT GetFlags();
+	UINT GetFrameCount(const GUID *dimensionID);
+	UINT GetFrameDimensionsCount();
+	Status GetFrameDimensionsList(GUID *dimensionIDs, UINT count);
+	UINT GetHeight();
+	REAL GetHorizontalResolution();
+	Status GetItemData(ImageItemData *item);
+	Status GetPalette(ColorPalette *palette, INT size);
+	INT GetPaletteSize();
+	Status GetPhysicalDimension(SizeF *size);
+	PixelFormat GetPixelFormat();
+	UINT GetPropertyCount();
+	Status GetPropertyIdList(UINT numOfProperty, PROPID *list);
+	Status GetPropertyItem(PROPID propId, UINT propSize,
+			PropertyItem *buffer);
+	UINT GetPropertyItemSize(PROPID propId);
+	Status GetPropertySize(UINT *totalBufferSize, UINT *numProperties);
+	Status GetRawFormat(GUID *format);
+	Image* GetThumbnailImage(UINT thumbWidth, UINT thumbHeight,
+			GetThumbnailImageAbort callback, VOID *callbackData);
+	ImageType GetType() const;
+	REAL GetVerticalResolution();
+	UINT GetWidth();
+	Status RemovePropertyItem(PROPID propId);
+	Status RotateFlip(RotateFlipType rotateFlipType);
+	Status Save(IStream *stream, const CLSID *clsidEncoder,
+			const EncoderParameters *encoderParams);
+	Status Save(const WCHAR *filename, const CLSID *clsidEncoder,
+			const EncoderParameters *encoderParams);
+	Status SaveAdd(const EncoderParameters *encoderParams);
+	Status SaveAdd(Image *newImage, const EncoderParameters *encoderParams);
+	Status SelectActiveFrame(const GUID *dimensionID, UINT frameIndex);
+	Status SetAbort(GdiplusAbort *pIAbort);
+	Status SetPalette(const ColorPalette *palette);
+	Status SetPropertyItem(const PropertyItem *item);
+
+	Status GetLastStatus() const
+	{
+		Status result = lastStatus;
+		lastStatus = Ok;
+		return result;
+	}
+
+private:
+	Image(GpImage *image, Status status):
+		nativeImage(image), lastStatus(status) {}
+	Image(const Image&);
+	Image& operator=(const Image&);
+
+	Status updateStatus(Status newStatus) const
+	{
+		if (newStatus != Ok) lastStatus = newStatus;
+		return newStatus;
+	}
+
+	GpImage *nativeImage;
+	mutable Status lastStatus;
+};
+
+class Bitmap: public Image
+{
+public:
+	static Bitmap* FromBITMAPINFO(const BITMAPINFO *gdiBitmapInfo,
+			VOID *gdiBitmapData);
+	static Bitmap* FromDirectDrawSurface7(IDirectDrawSurface7 *surface);
+	static Bitmap* FromFile(const WCHAR *filename,
+			BOOL useEmbeddedColorManagement = FALSE);
+	static Bitmap* FromHBITMAP(HBITMAP hbm, HPALETTE hpal);
+	static Bitmap* FromHICON(HICON icon);
+	static Bitmap* FromResource(HINSTANCE hInstance,
+			const WCHAR *bitmapName);
+	static Bitmap* FromStream(IStream *stream,
+			BOOL useEmbeddedColorManagement = FALSE);
+	static Status ApplyEffect(Bitmap **inputs, INT numInputs,
+			Effect *effect, RECT *ROI,
+			RECT *outputRect, Bitmap **output);
+	static Status InitializePalette(ColorPalette *palette,
+			PaletteType paletteType, INT optimalColors,
+			BOOL useTransparentColor, Bitmap *bitmap);
+
+	Bitmap(const BITMAPINFO *gdiBitmapInfo, VOID *gdiBitmapData);
+	Bitmap(IDirectDrawSurface7 *surface);
+	Bitmap(const WCHAR *filename, BOOL useEmbeddedColorManagement = FALSE);
+	Bitmap(HBITMAP hbm, HPALETTE hpal);
+	Bitmap(HICON hicon);
+	Bitmap(HINSTANCE hInstance, const WCHAR *bitmapName);
+	Bitmap(IStream *stream, BOOL useEmbeddedColorManagement = FALSE);
+	Bitmap(INT width, INT height, Graphics *target);
+	Bitmap(INT width, INT height, PixelFormat format = PixelFormat32bppARGB);
+	Bitmap(INT width, INT height, INT stride, PixelFormat format, BYTE *scan0);
+
+	virtual ~Bitmap()
+	{
+	}
+	virtual Bitmap* Clone() const
+	{
+		GpImage *cloneImage = NULL;
+		Status status = updateStatus(DllExports::GdipCloneImage(
+				nativeImage, &cloneImage));
+		if (status == Ok) {
+			Bitmap *result = new Bitmap(cloneImage, lastStatus);
+			if (!result) {
+				DllExports::GdipDisposeImage(cloneImage);
+				lastStatus = OutOfMemory;
+			}
+			return result;
+		} else {
+			return NULL;
+		}
+	}
+
+	Bitmap* Clone(const RectF& rect, PixelFormat format) const;
+	Bitmap* Clone(const Rect& rect, PixelFormat format) const;
+	Bitmap* Clone(REAL x, REAL y, REAL width, REAL height,
+			PixelFormat format) const;
+	Bitmap* Clone(INT x, INT y, INT width, INT height,
+			PixelFormat format) const;
+
+	Status ApplyEffect(Effect *effect, RECT *ROI);
+	Status ConvertFormat(PixelFormat format, DitherType ditherType,
+			PaletteType paletteType, ColorPalette *palette,
+			REAL alphaThresholdPercent);
+	Status GetHBITMAP(const Color& colorBackground, HBITMAP *hbmReturn) const;
+	Status GetHICON(HICON *icon) const;
+	Status GetHistogram(HistogramFormat format, UINT numberOfEntries,
+			UINT *channel0, UINT *channel1,
+			UINT *channel2, UINT *channel3) const;
+	Status GetHistogramSize(HistogramFormat format,
+			UINT *numberOfEntries) const;
+	Status GetPixel(INT x, INT y, Color *color) const;
+	Status LockBits(const Rect *rect, UINT flags, PixelFormat format,
+			BitmapData *lockedBitmapData);
+	Status SetPixel(INT x, INT y, const Color& color);
+	Status SetResolution(REAL xdpi, REAL ydpi);
+	Status UnlockBits(BitmapData *lcokedBitmapData);
+
+private:
+	Bitmap(GpImage *image, Status status): Image(image, status) {}
+	Bitmap(const Bitmap&);
+	Bitmap& operator=(const Bitmap&);
+};
+
+class CachedBitmap: public GdiplusBase
+{
+	friend class Graphics;
+
+public:
+	CachedBitmap(Bitmap *bitmap, Graphics *graphics);
+	~CachedBitmap();
+
+	Status GetLastStatus() const
+	{
+		return lastStatus;
+	}
+
+private:
+	CachedBitmap(const CachedBitmap&);
+	CachedBitmap& operator=(const CachedBitmap&);
+
+	GpCachedBitmap *nativeCachedBitmap;
+	Status lastStatus;
+};
+
+class CustomLineCap: public GdiplusBase
+{
+	friend class AdjustableArrowCap;
+	friend class Pen;
+
+public:
+	CustomLineCap(const GraphicsPath *fillPath,
+			const GraphicsPath *strokePath,
+			LineCap baseCap = LineCapFlat,
+			REAL baseInset = 0.0f);
+
+	virtual ~CustomLineCap()
+	{
+		DllExports::GdipDeleteCustomLineCap(nativeCustomLineCap);
+	}
+	virtual CustomLineCap* Clone() const
+	{
+		GpCustomLineCap *cloneCustomLineCap = NULL;
+		Status status = updateStatus(DllExports::GdipCloneCustomLineCap(
+				nativeCustomLineCap, &cloneCustomLineCap));
+		if (status == Ok) {
+			CustomLineCap *result = new CustomLineCap(
+					cloneCustomLineCap, lastStatus);
+			if (!result) {
+				DllExports::GdipDeleteCustomLineCap(cloneCustomLineCap);
+				lastStatus = OutOfMemory;
+			}
+			return result;
+		} else {
+			return NULL;
+		}
+	}
+
+	LineCap GetBaseCap() const;
+	REAL GetBaseInset() const;
+	Status GetStrokeCaps(LineCap *startCap, LineCap *endCap) const;
+	LineJoin GetStrokeJoin() const;
+	REAL GetWidthScale() const;
+	Status SetBaseCap(LineCap baseCap);
+	Status SetBaseInset(REAL inset);
+	Status SetStrokeCap(LineCap strokeCap);
+	Status SetStrokeCaps(LineCap startCap, LineCap endCap);
+	Status SetStrokeJoin(LineJoin lineJoin);
+	Status SetWidthScale(REAL widthScale);
+
+	Status GetLastStatus() const
+	{
+		Status result = lastStatus;
+		lastStatus = Ok;
+		return result;
+	}
+
+private:
+	CustomLineCap(GpCustomLineCap *customLineCap, Status status):
+		nativeCustomLineCap(customLineCap), lastStatus(status) {}
+	CustomLineCap(const CustomLineCap&);
+	CustomLineCap& operator=(const CustomLineCap&);
+
+	Status updateStatus(Status newStatus) const
+	{
+		if (newStatus != Ok) lastStatus = newStatus;
+		return newStatus;
+	}
+
+	GpCustomLineCap *nativeCustomLineCap;
+	mutable Status lastStatus;
+};
+
+class Font: public GdiplusBase
+{
+	friend class Graphics;
+
+public:
+	Font(const FontFamily *family, REAL emSize,
+			INT style = FontStyleRegular,
+			Unit unit = UnitPoint);
+	Font(HDC hdc, HFONT hfont);
+	Font(HDC hdc, const LOGFONTA *logfont);
+	Font(HDC hdc, const LOGFONTW *logfont);
+	Font(HDC hdc);
+	Font(const WCHAR *familyName, REAL emSize,
+			INT style = FontStyleRegular,
+			Unit unit = UnitPoint,
+			const FontCollection *fontCollection = NULL);
+	~Font();
+	Font* Clone() const;
+
+	Status GetFamily(FontFamily *family) const;
+	REAL GetHeight(const Graphics *graphics) const;
+	REAL GetHeight(REAL dpi) const;
+	Status GetLogFontA(const Graphics *graphics, LOGFONTA *logfontA) const;
+	Status GetLogFontW(const Graphics *graphics, LOGFONTW *logfontW) const;
+	REAL GetSize() const;
+	INT GetStyle() const;
+	Unit GetUnit() const;
+
+	Status GetLastStatus() const
+	{
+		return lastStatus;
+	}
+	BOOL IsAvailable() const
+	{
+		return nativeFont != NULL;
+	}
+
+private:
+	Font(GpFont *font, Status status):
+		nativeFont(font), lastStatus(status) {}
+	Font(const Font&);
+	Font& operator=(const Font&);
+
+	Status updateStatus(Status newStatus) const
+	{
+		if (newStatus != Ok) lastStatus = newStatus;
+		return newStatus;
+	}
+
+	GpFont *nativeFont;
+	mutable Status lastStatus;
+};
+
+class FontCollection: public GdiplusBase
+{
+	friend class InstalledFontCollection;
+	friend class PrivateFontCollection;
+	friend class Font;
+	friend class FontFamily;
+
+public:
+	FontCollection();
+	virtual ~FontCollection() {}
+
+	Status GetFamilies(INT numSought, FontFamily *families,
+			INT *numFound) const;
+	INT GetFamilyCount() const;
+
+	Status GetLastStatus() const
+	{
+		return lastStatus;
+	}
+
+private:
+	FontCollection(const FontCollection&);
+	FontCollection& operator=(const FontCollection&);
+
+	Status updateStatus(Status newStatus) const
+	{
+		return lastStatus = newStatus;
+	}
+
+	GpFontCollection *nativeFontCollection;
+	mutable Status lastStatus;
+};
+
+class FontFamily: public GdiplusBase
+{
+	friend class Font;
+	friend class FontCollection;
+	friend class GraphicsPath;
+
+public:
+	static const FontFamily* GenericMonospace();
+	static const FontFamily* GenericSansSerif();
+	static const FontFamily* GenericSerif();
+
+	FontFamily();
+	FontFamily(const WCHAR *name,
+			const FontCollection *fontCollection = NULL);
+	~FontFamily();
+	FontFamily* Clone() const;
+
+	UINT16 GetCellAscent(INT style) const;
+	UINT16 GetCellDescent(INT style) const;
+	UINT16 GetEmHeight(INT style) const;
+	Status GetFamilyName(WCHAR name[LF_FACESIZE],
+			LANGID language = LANG_NEUTRAL) const;
+	UINT16 GetLineSpacing(INT style) const;
+	BOOL IsStyleAvailable(INT style) const;
+
+	Status GetLastStatus() const
+	{
+		Status result = lastStatus;
+		lastStatus = Ok;
+		return result;
+	}
+	BOOL IsAvailable() const
+	{
+		return nativeFontFamily != NULL;
+	}
+
+private:
+	FontFamily(GpFontFamily *fontFamily, Status status):
+		nativeFontFamily(fontFamily), lastStatus(status) {}
+	FontFamily(const FontFamily&);
+	FontFamily& operator=(const FontFamily&);
+
+	Status updateStatus(Status newStatus) const
+	{
+		if (newStatus != Ok) lastStatus = newStatus;
+		return newStatus;
+	}
+
+	GpFontFamily *nativeFontFamily;
+	mutable Status lastStatus;
+};
+
+class InstalledFontCollection: public FontCollection
+{
+public:
+	InstalledFontCollection();
+	virtual ~InstalledFontCollection() {}
+};
+
+class PrivateFontCollection: public FontCollection
+{
+public:
+	PrivateFontCollection();
+
+	virtual ~PrivateFontCollection()
+	{
+		DllExports::GdipDeletePrivateFontCollection(&nativeFontCollection);
+	}
+
+	Status AddFontFile(const WCHAR *filename);
+	Status AddMemoryFont(const VOID *memory, INT length);
+};
+
+class Region: public GdiplusBase
+{
+	friend class Graphics;
+
+public:
+	static Region* FromHRGN(HRGN hrgn);
+
+	Region();
+	Region(const RectF& rect);
+	Region(const Rect& rect);
+	Region(const GraphicsPath *path);
+	Region(const BYTE *regionData, INT size);
+	Region(HRGN hrgn);
+	~Region();
+	Region* Clone() const;
+
+	Status Complement(const RectF& rect);
+	Status Complement(const Rect& rect);
+	Status Complement(const Region *region);
+	Status Complement(const GraphicsPath *path);
+	BOOL Equals(const Region *region, const Graphics *graphics) const;
+	Status Exclude(const RectF& rect);
+	Status Exclude(const Rect& rect);
+	Status Exclude(const Region *region);
+	Status Exclude(const GraphicsPath *path);
+	Status GetBounds(RectF *rect, const Graphics *graphics) const;
+	Status GetBounds(Rect *rect, const Graphics *graphics) const;
+	Status GetData(BYTE *buffer, UINT bufferSize, UINT *sizeFilled) const;
+	UINT GetDataSize() const;
+	HRGN GetHRGN(const Graphics *graphics) const;
+	Status GetRegionScans(const Matrix *matrix,
+			RectF *rects, INT *count) const;
+	Status GetRegionScans(const Matrix *matrix,
+			Rect *rects, INT *count) const;
+	UINT GetRegionScansCount(const Matrix *matrix) const;
+	Status Intersect(const RectF& rect);
+	Status Intersect(const Rect& rect);
+	Status Intersect(const Region *region);
+	Status Intersect(const GraphicsPath *path);
+	BOOL IsEmpty(const Graphics *graphics) const;
+	BOOL IsInfinite(const Graphics *graphics) const;
+	BOOL IsVisible(REAL x, REAL y,
+			const Graphics *graphics = NULL) const;
+	BOOL IsVisible(INT x, INT y,
+			const Graphics *graphics = NULL) const;
+	BOOL IsVisible(const PointF& point,
+			const Graphics *graphics = NULL) const;
+	BOOL IsVisible(const Point& point,
+			const Graphics *graphics = NULL) const;
+	BOOL IsVisible(REAL x, REAL y, REAL width, REAL height,
+			const Graphics *graphics = NULL) const;
+	BOOL IsVisible(INT x, INT y, INT width, INT height,
+			const Graphics *graphics = NULL) const;
+	BOOL IsVisible(const RectF& rect,
+			const Graphics *graphics = NULL) const;
+	BOOL IsVisible(const Rect& rect,
+			const Graphics *graphics = NULL) const;
+	Status MakeEmpty();
+	Status MakeInfinite();
+	Status Transform(const Matrix *matrix);
+	Status Translate(REAL dx, REAL dy);
+	Status Translate(INT dx, INT dy);
+	Status Union(const RectF& rect);
+	Status Union(const Rect& rect);
+	Status Union(const Region *region);
+	Status Union(const GraphicsPath *path);
+	Status Xor(const RectF& rect);
+	Status Xor(const Rect& rect);
+	Status Xor(const Region *region);
+	Status Xor(const GraphicsPath *path);
+
+	Status GetLastStatus() const
+	{
+		Status result = lastStatus;
+		lastStatus = Ok;
+		return result;
+	}
+
+private:
+	Region(GpRegion *region, Status status):
+		nativeRegion(region), lastStatus(status) {}
+	Region(const Region&);
+	Region& operator=(const Region&);
+
+	Status updateStatus(Status newStatus) const
+	{
+		if (newStatus != Ok) lastStatus = newStatus;
+		return newStatus;
+	}
+
+	GpRegion *nativeRegion;
+	mutable Status lastStatus;
+};
+
+#endif /* __GDIPLUS_HEADERS_H */
Index: Daodan/MinGW/include/gdiplus/gdiplusimageattributes.h
===================================================================
--- Daodan/MinGW/include/gdiplus/gdiplusimageattributes.h	(revision 1046)
+++ Daodan/MinGW/include/gdiplus/gdiplusimageattributes.h	(revision 1046)
@@ -0,0 +1,236 @@
+/*
+ * gdiplusimageattributes.h
+ *
+ * GDI+ ImageAttributes class
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Markus Koenig <markus@stber-koenig.de>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __GDIPLUS_IMAGEATTRIBUTES_H
+#define __GDIPLUS_IMAGEATTRIBUTES_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifndef __cplusplus
+#error "A C++ compiler is required to include gdiplusimageattributes.h."
+#endif
+
+class ImageAttributes: public GdiplusBase
+{
+	friend class Graphics;
+	friend class TextureBrush;
+
+public:
+	ImageAttributes(): nativeImageAttributes(NULL), lastStatus(Ok)
+	{
+		lastStatus = DllExports::GdipCreateImageAttributes(
+				&nativeImageAttributes);
+	}
+	~ImageAttributes()
+	{
+		DllExports::GdipDisposeImageAttributes(nativeImageAttributes);
+	}
+	ImageAttributes* Clone() const
+	{
+		GpImageAttributes *cloneImageAttributes = NULL;
+		Status status = updateStatus(DllExports::GdipCloneImageAttributes(
+				nativeImageAttributes, &cloneImageAttributes));
+		if (status == Ok) {
+			ImageAttributes *result = new ImageAttributes(
+					cloneImageAttributes, lastStatus);
+			if (!result) {
+				DllExports::GdipDisposeImageAttributes(cloneImageAttributes);
+				lastStatus = OutOfMemory;
+			}
+			return result;
+		} else {
+			return NULL;
+		}
+	}
+
+	Status ClearBrushRemapTable()
+	{
+		return updateStatus(DllExports::GdipSetImageAttributesRemapTable(
+				nativeImageAttributes, ColorAdjustTypeBrush,
+				FALSE, 0, NULL));
+	}
+	Status ClearColorKey(ColorAdjustType type = ColorAdjustTypeDefault)
+	{
+		return updateStatus(DllExports::GdipSetImageAttributesColorKeys(
+				nativeImageAttributes, type, FALSE, 0, 0));
+	}
+	Status ClearColorMatrices(ColorAdjustType type = ColorAdjustTypeDefault)
+	{
+		return updateStatus(DllExports::GdipSetImageAttributesColorMatrix(
+				nativeImageAttributes, type, FALSE,
+				NULL, NULL, ColorMatrixFlagsDefault));
+	}
+	Status ClearColorMatrix(ColorAdjustType type = ColorAdjustTypeDefault)
+	{
+		return updateStatus(DllExports::GdipSetImageAttributesColorMatrix(
+				nativeImageAttributes, type, FALSE,
+				NULL, NULL, ColorMatrixFlagsDefault));
+	}
+	Status ClearGamma(ColorAdjustType type = ColorAdjustTypeDefault)
+	{
+		return updateStatus(DllExports::GdipSetImageAttributesGamma(
+				nativeImageAttributes, type, FALSE, 1.0f));
+	}
+	Status ClearNoOp(ColorAdjustType type = ColorAdjustTypeDefault)
+	{
+		return updateStatus(DllExports::GdipSetImageAttributesNoOp(
+				nativeImageAttributes, type, FALSE));
+	}
+	Status ClearOutputChannel(ColorAdjustType type = ColorAdjustTypeDefault)
+	{
+		return updateStatus(DllExports::GdipSetImageAttributesOutputChannel(
+				nativeImageAttributes, type, FALSE,
+				ColorChannelFlagsC));
+	}
+	Status ClearOutputChannelColorProfile(
+			ColorAdjustType type = ColorAdjustTypeDefault)
+	{
+		return updateStatus(DllExports::GdipSetImageAttributesOutputChannelColorProfile(
+				nativeImageAttributes, type, FALSE, NULL));
+	}
+	Status ClearRemapTable(ColorAdjustType type = ColorAdjustTypeDefault)
+	{
+		return updateStatus(DllExports::GdipSetImageAttributesRemapTable(
+				nativeImageAttributes, type, FALSE, 0, NULL));
+	}
+	Status ClearThreshold(ColorAdjustType type = ColorAdjustTypeDefault)
+	{
+		return updateStatus(DllExports::GdipSetImageAttributesThreshold(
+				nativeImageAttributes, type, FALSE, 0.0));
+	}
+	Status GetAdjustedPalette(ColorPalette *colorPalette,
+			ColorAdjustType type) const
+	{
+		return updateStatus(DllExports::GdipGetImageAttributesAdjustedPalette(
+				nativeImageAttributes, colorPalette, type));
+	}
+	Status GetLastStatus() const
+	{
+		Status result = lastStatus;
+		lastStatus = Ok;
+		return result;
+	}
+	Status Reset(ColorAdjustType type = ColorAdjustTypeDefault)
+	{
+		return updateStatus(DllExports::GdipResetImageAttributes(
+				nativeImageAttributes, type));
+	}
+	Status SetBrushRemapTable(UINT mapSize, ColorMap *map)
+	{
+		return updateStatus(DllExports::GdipSetImageAttributesRemapTable(
+				nativeImageAttributes, ColorAdjustTypeBrush,
+				TRUE, mapSize, map));
+	}
+	Status SetColorKey(const Color& colorLow, const Color& colorHigh,
+			ColorAdjustType type = ColorAdjustTypeDefault)
+	{
+		return updateStatus(DllExports::GdipSetImageAttributesColorKeys(
+				nativeImageAttributes, type, TRUE,
+				colorLow.GetValue(), colorHigh.GetValue()));
+	}
+	Status SetColorMatrices(const ColorMatrix *colorMatrix,
+			const ColorMatrix *grayMatrix,
+			ColorMatrixFlags mode = ColorMatrixFlagsDefault,
+			ColorAdjustType type = ColorAdjustTypeDefault)
+	{
+		return updateStatus(DllExports::GdipSetImageAttributesColorMatrix(
+				nativeImageAttributes, type, TRUE,
+				colorMatrix, grayMatrix, mode));
+	}
+	Status SetColorMatrix(const ColorMatrix *colorMatrix,
+			ColorMatrixFlags mode = ColorMatrixFlagsDefault,
+			ColorAdjustType type = ColorAdjustTypeDefault)
+	{
+		return updateStatus(DllExports::GdipSetImageAttributesColorMatrix(
+				nativeImageAttributes, type, TRUE,
+				colorMatrix, NULL, mode));
+	}
+	Status SetGamma(REAL gamma,
+			ColorAdjustType type = ColorAdjustTypeDefault)
+	{
+		return updateStatus(DllExports::GdipSetImageAttributesGamma(
+				nativeImageAttributes, type, TRUE, gamma));
+	}
+	Status SetNoOp(ColorAdjustType type = ColorAdjustTypeDefault)
+	{
+		return updateStatus(DllExports::GdipSetImageAttributesNoOp(
+				nativeImageAttributes, type, TRUE));
+	}
+	Status SetOutputChannel(ColorChannelFlags channelFlags,
+			ColorAdjustType type = ColorAdjustTypeDefault)
+	{
+		return updateStatus(DllExports::GdipSetImageAttributesOutputChannel(
+				nativeImageAttributes, type, TRUE,
+				channelFlags));
+	}
+	Status SetOutputChannelColorProfile(const WCHAR *colorProfileFilename,
+			ColorAdjustType type = ColorAdjustTypeDefault)
+	{
+		return updateStatus(DllExports::GdipSetImageAttributesOutputChannelColorProfile(
+				nativeImageAttributes, type, TRUE,
+				colorProfileFilename));
+	}
+	Status SetRemapTable(UINT mapSize, const ColorMap *map,
+			ColorAdjustType type = ColorAdjustTypeDefault)
+	{
+		return updateStatus(DllExports::GdipSetImageAttributesRemapTable(
+				nativeImageAttributes, type, TRUE,
+				mapSize, map));
+	}
+	Status SetThreshold(REAL threshold,
+			ColorAdjustType type = ColorAdjustTypeDefault)
+	{
+		return updateStatus(DllExports::GdipSetImageAttributesThreshold(
+				nativeImageAttributes, type, TRUE, threshold));
+	}
+	Status SetToIdentity(ColorAdjustType type = ColorAdjustTypeDefault)
+	{
+		return updateStatus(DllExports::GdipSetImageAttributesToIdentity(
+				nativeImageAttributes, type));
+	}
+	Status SetWrapMode(WrapMode wrap, const Color& color = Color(),
+			BOOL clamp = FALSE)
+	{
+		return updateStatus(DllExports::GdipSetImageAttributesWrapMode(
+				nativeImageAttributes, wrap,
+				color.GetValue(), clamp));
+	}
+
+private:
+	ImageAttributes(GpImageAttributes *imageAttributes, Status status):
+		nativeImageAttributes(imageAttributes), lastStatus(status) {}
+	ImageAttributes(const ImageAttributes&);
+	ImageAttributes& operator=(const ImageAttributes&);
+
+	Status updateStatus(Status newStatus) const
+	{
+		if (newStatus != Ok) lastStatus = newStatus;
+		return newStatus;
+	}
+
+	GpImageAttributes *nativeImageAttributes;
+	mutable Status lastStatus;
+};
+
+
+#endif /* __GDIPLUS_IMAGEATTRIBUTES_H */
Index: Daodan/MinGW/include/gdiplus/gdiplusimagecodec.h
===================================================================
--- Daodan/MinGW/include/gdiplus/gdiplusimagecodec.h	(revision 1046)
+++ Daodan/MinGW/include/gdiplus/gdiplusimagecodec.h	(revision 1046)
@@ -0,0 +1,67 @@
+/*
+ * gdiplusimagecodec.h
+ *
+ * GDI+ image decoders and encoders
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Markus Koenig <markus@stber-koenig.de>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __GDIPLUS_IMAGECODEC_H
+#define __GDIPLUS_IMAGECODEC_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+static __inline__ GpStatus GetImageDecoders(UINT numDecoders, UINT size,
+		ImageCodecInfo *decoders)
+{
+	#ifdef __cplusplus
+	return DllExports::GdipGetImageDecoders(numDecoders, size, decoders);
+	#else
+	return GdipGetImageDecoders(numDecoders, size, decoders);
+	#endif
+}
+
+static __inline__ GpStatus GetImageDecodersSize(UINT *numDecoders, UINT *size)
+{
+	#ifdef __cplusplus
+	return DllExports::GdipGetImageDecodersSize(numDecoders, size);
+	#else
+	return GdipGetImageDecodersSize(numDecoders, size);
+	#endif
+}
+
+static __inline__ GpStatus GetImageEncoders(UINT numEncoders, UINT size,
+		ImageCodecInfo *encoders)
+{
+	#ifdef __cplusplus
+	return DllExports::GdipGetImageEncoders(numEncoders, size, encoders);
+	#else
+	return GdipGetImageEncoders(numEncoders, size, encoders);
+	#endif
+}
+
+static __inline__ GpStatus GetImageEncodersSize(UINT *numEncoders, UINT *size)
+{
+	#ifdef __cplusplus
+	return DllExports::GdipGetImageEncodersSize(numEncoders, size);
+	#else
+	return GdipGetImageEncodersSize(numEncoders, size);
+	#endif
+}
+
+#endif /* __GDIPLUS_IMAGECODEC_H */
Index: Daodan/MinGW/include/gdiplus/gdiplusimaging.h
===================================================================
--- Daodan/MinGW/include/gdiplus/gdiplusimaging.h	(revision 1046)
+++ Daodan/MinGW/include/gdiplus/gdiplusimaging.h	(revision 1046)
@@ -0,0 +1,411 @@
+/*
+ * gdiplusimaging.h
+ *
+ * GDI+ Imaging and image metadata
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Markus Koenig <markus@stber-koenig.de>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __GDIPLUS_IMAGING_H
+#define __GDIPLUS_IMAGING_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+typedef enum ImageCodecFlags {
+	ImageCodecFlagsEncoder = 0x00000001,
+	ImageCodecFlagsDecoder = 0x00000002,
+	ImageCodecFlagsSupportBitmap = 0x00000004,
+	ImageCodecFlagsSupportVector = 0x00000008,
+	ImageCodecFlagsSeekableEncode = 0x00000010,
+	ImageCodecFlagsBlockingDecode = 0x00000020,
+	ImageCodecFlagsBuiltin = 0x00010000,
+	ImageCodecFlagsSystem = 0x00020000,
+	ImageCodecFlagsUser = 0x00040000
+} ImageCodecFlags;
+
+typedef enum ImageFlags {
+	ImageFlagsNone = 0,
+	ImageFlagsScalable = 0x00000001,
+	ImageFlagsHasAlpha = 0x00000002,
+	ImageFlagsHasTranslucent = 0x00000004,
+	ImageFlagsPartiallyScalable = 0x00000008,
+	ImageFlagsColorSpaceRGB = 0x00000010,
+	ImageFlagsColorSpaceCMYK = 0x00000020,
+	ImageFlagsColorSpaceGRAY = 0x00000040,
+	ImageFlagsColorSpaceYCBCR = 0x00000080,
+	ImageFlagsColorSpaceYCCK = 0x00000100,
+	ImageFlagsHasRealDPI = 0x00001000,
+	ImageFlagsHasRealPixelSize = 0x00002000,
+	ImageFlagsReadOnly = 0x00010000,
+	ImageFlagsCaching = 0x00020000
+} ImageFlags;
+
+typedef enum ImageLockMode {
+	ImageLockModeRead = 1,
+	ImageLockModeWrite = 2,
+	ImageLockModeUserInputBuf = 4
+} ImageLockMode;
+
+typedef enum ItemDataPosition {
+	ItemDataPositionAfterHeader = 0,
+	ItemDataPositionAfterPalette = 1,
+	ItemDataPositionAfterBits = 2
+} ItemDataPosition;
+
+typedef enum RotateFlipType {
+	RotateNoneFlipNone = 0,
+	Rotate90FlipNone = 1,
+	Rotate180FlipNone = 2,
+	Rotate270FlipNone = 3,
+	RotateNoneFlipX = 4,
+	Rotate90FlipX = 5,
+	Rotate180FlipX = 6,
+	Rotate270FlipX = 7,
+	Rotate180FlipXY = 0,
+	Rotate270FlipXY = 1, 
+	RotateNoneFlipXY = 2,
+	Rotate90FlipXY = 3,
+	Rotate180FlipY = 4,
+	Rotate270FlipY = 5,
+	RotateNoneFlipY = 6,
+	Rotate90FlipY = 7
+} RotateFlipType;
+
+typedef struct BitmapData {
+	UINT Width;
+	UINT Height;
+	INT Stride;
+	INT PixelFormat;  /* MSDN: "PixelFormat PixelFormat;" */
+	VOID *Scan0;
+	UINT_PTR Reserved;
+} BitmapData;
+
+typedef struct EncoderParameter {
+	GUID Guid;
+	ULONG NumberOfValues;
+	ULONG Type;
+	VOID *Value;
+} EncoderParameter;
+
+typedef struct EncoderParameters {
+	UINT Count;
+	EncoderParameter Parameter[1];
+} EncoderParameters;
+
+typedef struct ImageCodecInfo {
+	CLSID Clsid;
+	GUID FormatID;
+	WCHAR *CodecName;
+	WCHAR *DllName;
+	WCHAR *FormatDescription;
+	WCHAR *FilenameExtension;
+	WCHAR *MimeType;
+	DWORD Flags;
+	DWORD Version;
+	DWORD SigCount;
+	DWORD SigSize;
+	BYTE *SigPattern;
+	BYTE *SigMask;
+} ImageCodecInfo;
+
+/* FIXME: The order of fields is probably wrong. Please don't use this
+ * structure until this problem is resolved!  Can't test because
+ * ImageItemData is not supported by the redistributable GDI+ 1.0 DLL. */
+typedef struct ImageItemData {
+	UINT Size;
+	UINT Position;
+	VOID *Desc;
+	UINT DescSize;
+	UINT *Data;
+	UINT DataSize;
+	UINT Cookie;
+} ImageItemData;
+
+typedef struct PropertyItem {
+	PROPID id;
+	ULONG length;
+	WORD type;
+	VOID *value;
+} PropertyItem;
+
+#define PropertyTagGpsVer ((PROPID) 0x0000)
+#define PropertyTagGpsLatitudeRef ((PROPID) 0x0001)
+#define PropertyTagGpsLatitude ((PROPID) 0x0002)
+#define PropertyTagGpsLongitudeRef ((PROPID) 0x0003)
+#define PropertyTagGpsLongitude ((PROPID) 0x0004)
+#define PropertyTagGpsAltitudeRef ((PROPID) 0x0005)
+#define PropertyTagGpsAltitude ((PROPID) 0x0006)
+#define PropertyTagGpsGpsTime ((PROPID) 0x0007)
+#define PropertyTagGpsGpsSatellites ((PROPID) 0x0008)
+#define PropertyTagGpsGpsStatus ((PROPID) 0x0009)
+#define PropertyTagGpsGpsMeasureMode ((PROPID) 0x000A)
+#define PropertyTagGpsGpsDop ((PROPID) 0x000B)
+#define PropertyTagGpsSpeedRef ((PROPID) 0x000C)
+#define PropertyTagGpsSpeed ((PROPID) 0x000D)
+#define PropertyTagGpsTrackRef ((PROPID) 0x000E)
+#define PropertyTagGpsTrack ((PROPID) 0x000F)
+#define PropertyTagGpsImgDirRef ((PROPID) 0x0010)
+#define PropertyTagGpsImgDir ((PROPID) 0x0011)
+#define PropertyTagGpsMapDatum ((PROPID) 0x0012)
+#define PropertyTagGpsDestLatRef ((PROPID) 0x0013)
+#define PropertyTagGpsDestLat ((PROPID) 0x0014)
+#define PropertyTagGpsDestLongRef ((PROPID) 0x0015)
+#define PropertyTagGpsDestLong ((PROPID) 0x0016)
+#define PropertyTagGpsDestBearRef ((PROPID) 0x0017)
+#define PropertyTagGpsDestBear ((PROPID) 0x0018)
+#define PropertyTagGpsDestDistRef ((PROPID) 0x0019)
+#define PropertyTagGpsDestDist ((PROPID) 0x001A)
+#define PropertyTagNewSubfileType ((PROPID) 0x00FE)
+#define PropertyTagSubfileType ((PROPID) 0x00FF)
+#define PropertyTagImageWidth ((PROPID) 0x0100)
+#define PropertyTagImageHeight ((PROPID) 0x0101)
+#define PropertyTagBitsPerSample ((PROPID) 0x0102)
+#define PropertyTagCompression ((PROPID) 0x0103)
+#define PropertyTagPhotometricInterp ((PROPID) 0x0106)
+#define PropertyTagThreshHolding ((PROPID) 0x0107)
+#define PropertyTagCellWidth ((PROPID) 0x0108)
+#define PropertyTagCellHeight ((PROPID) 0x0109)
+#define PropertyTagFillOrder ((PROPID) 0x010A)
+#define PropertyTagDocumentName ((PROPID) 0x010D)
+#define PropertyTagImageDescription ((PROPID) 0x010E)
+#define PropertyTagEquipMake ((PROPID) 0x010F)
+#define PropertyTagEquipModel ((PROPID) 0x0110)
+#define PropertyTagStripOffsets ((PROPID) 0x0111)
+#define PropertyTagOrientation ((PROPID) 0x0112)
+#define PropertyTagSamplesPerPixel ((PROPID) 0x0115)
+#define PropertyTagRowsPerStrip ((PROPID) 0x0116)
+#define PropertyTagStripBytesCount ((PROPID) 0x0117)
+#define PropertyTagMinSampleValue ((PROPID) 0x0118)
+#define PropertyTagMaxSampleValue ((PROPID) 0x0119)
+#define PropertyTagXResolution ((PROPID) 0x011A)
+#define PropertyTagYResolution ((PROPID) 0x011B)
+#define PropertyTagPlanarConfig ((PROPID) 0x011C)
+#define PropertyTagPageName ((PROPID) 0x011D)
+#define PropertyTagXPosition ((PROPID) 0x011E)
+#define PropertyTagYPosition ((PROPID) 0x011F)
+#define PropertyTagFreeOffset ((PROPID) 0x0120)
+#define PropertyTagFreeByteCounts ((PROPID) 0x0121)
+#define PropertyTagGrayResponseUnit ((PROPID) 0x0122)
+#define PropertyTagGrayResponseCurve ((PROPID) 0x0123)
+#define PropertyTagT4Option ((PROPID) 0x0124)
+#define PropertyTagT6Option ((PROPID) 0x0125)
+#define PropertyTagResolutionUnit ((PROPID) 0x0128)
+#define PropertyTagPageNumber ((PROPID) 0x0129)
+#define PropertyTagTransferFunction ((PROPID) 0x012D)
+#define PropertyTagSoftwareUsed ((PROPID) 0x0131)
+#define PropertyTagDateTime ((PROPID) 0x0132)
+#define PropertyTagArtist ((PROPID) 0x013B)
+#define PropertyTagHostComputer ((PROPID) 0x013C)
+#define PropertyTagPredictor ((PROPID) 0x013D)
+#define PropertyTagWhitePoint ((PROPID) 0x013E)
+#define PropertyTagPrimaryChromaticities ((PROPID) 0x013F)
+#define PropertyTagColorMap ((PROPID) 0x0140)
+#define PropertyTagHalftoneHints ((PROPID) 0x0141)
+#define PropertyTagTileWidth ((PROPID) 0x0142)
+#define PropertyTagTileLength ((PROPID) 0x0143)
+#define PropertyTagTileOffset ((PROPID) 0x0144)
+#define PropertyTagTileByteCounts ((PROPID) 0x0145)
+#define PropertyTagInkSet ((PROPID) 0x014C)
+#define PropertyTagInkNames ((PROPID) 0x014D)
+#define PropertyTagNumberOfInks ((PROPID) 0x014E)
+#define PropertyTagDotRange ((PROPID) 0x0150)
+#define PropertyTagTargetPrinter ((PROPID) 0x0151)
+#define PropertyTagExtraSamples ((PROPID) 0x0152)
+#define PropertyTagSampleFormat ((PROPID) 0x0153)
+#define PropertyTagSMinSampleValue ((PROPID) 0x0154)
+#define PropertyTagSMaxSampleValue ((PROPID) 0x0155)
+#define PropertyTagTransferRange ((PROPID) 0x0156)
+#define PropertyTagJPEGProc ((PROPID) 0x0200)
+#define PropertyTagJPEGInterFormat ((PROPID) 0x0201)
+#define PropertyTagJPEGInterLength ((PROPID) 0x0202)
+#define PropertyTagJPEGRestartInterval ((PROPID) 0x0203)
+#define PropertyTagJPEGLosslessPredictors ((PROPID) 0x0205)
+#define PropertyTagJPEGPointTransforms ((PROPID) 0x0206)
+#define PropertyTagJPEGQTables ((PROPID) 0x0207)
+#define PropertyTagJPEGDCTables ((PROPID) 0x0208)
+#define PropertyTagJPEGACTables ((PROPID) 0x0209)
+#define PropertyTagYCbCrCoefficients ((PROPID) 0x0211)
+#define PropertyTagYCbCrSubsampling ((PROPID) 0x0212)
+#define PropertyTagYCbCrPositioning ((PROPID) 0x0213)
+#define PropertyTagREFBlackWhite ((PROPID) 0x0214)
+#define PropertyTagGamma ((PROPID) 0x0301)
+#define PropertyTagICCProfileDescriptor ((PROPID) 0x0302)
+#define PropertyTagSRGBRenderingIntent ((PROPID) 0x0303)
+#define PropertyTagImageTitle ((PROPID) 0x0320)
+#define PropertyTagResolutionXUnit ((PROPID) 0x5001)
+#define PropertyTagResolutionYUnit ((PROPID) 0x5002)
+#define PropertyTagResolutionXLengthUnit ((PROPID) 0x5003)
+#define PropertyTagResolutionYLengthUnit ((PROPID) 0x5004)
+#define PropertyTagPrintFlags ((PROPID) 0x5005)
+#define PropertyTagPrintFlagsVersion ((PROPID) 0x5006)
+#define PropertyTagPrintFlagsCrop ((PROPID) 0x5007)
+#define PropertyTagPrintFlagsBleedWidth ((PROPID) 0x5008)
+#define PropertyTagPrintFlagsBleedWidthScale ((PROPID) 0x5009)
+#define PropertyTagHalftoneLPI ((PROPID) 0x500A)
+#define PropertyTagHalftoneLPIUnit ((PROPID) 0x500B)
+#define PropertyTagHalftoneDegree ((PROPID) 0x500C)
+#define PropertyTagHalftoneShape ((PROPID) 0x500D)
+#define PropertyTagHalftoneMisc ((PROPID) 0x500E)
+#define PropertyTagHalftoneScreen ((PROPID) 0x500F)
+#define PropertyTagJPEGQuality ((PROPID) 0x5010)
+#define PropertyTagGridSize ((PROPID) 0x5011)
+#define PropertyTagThumbnailFormat ((PROPID) 0x5012)
+#define PropertyTagThumbnailWidth ((PROPID) 0x5013)
+#define PropertyTagThumbnailHeight ((PROPID) 0x5014)
+#define PropertyTagThumbnailColorDepth ((PROPID) 0x5015)
+#define PropertyTagThumbnailPlanes ((PROPID) 0x5016)
+#define PropertyTagThumbnailRawBytes ((PROPID) 0x5017)
+#define PropertyTagThumbnailSize ((PROPID) 0x5018)
+#define PropertyTagThumbnailCompressedSize ((PROPID) 0x5019)
+#define PropertyTagColorTransferFunction ((PROPID) 0x501A)
+#define PropertyTagThumbnailData ((PROPID) 0x501B)
+#define PropertyTagThumbnailImageWidth ((PROPID) 0x5020)
+#define PropertyTagThumbnailImageHeight ((PROPID) 0x5021)
+#define PropertyTagThumbnailBitsPerSample ((PROPID) 0x5022)
+#define PropertyTagThumbnailCompression ((PROPID) 0x5023)
+#define PropertyTagThumbnailPhotometricInterp ((PROPID) 0x5024)
+#define PropertyTagThumbnailImageDescription ((PROPID) 0x5025)
+#define PropertyTagThumbnailEquipMake ((PROPID) 0x5026)
+#define PropertyTagThumbnailEquipModel ((PROPID) 0x5027)
+#define PropertyTagThumbnailStripOffsets ((PROPID) 0x5028)
+#define PropertyTagThumbnailOrientation ((PROPID) 0x5029)
+#define PropertyTagThumbnailSamplesPerPixel ((PROPID) 0x502A)
+#define PropertyTagThumbnailRowsPerStrip ((PROPID) 0x502B)
+#define PropertyTagThumbnailStripBytesCount ((PROPID) 0x502C)
+#define PropertyTagThumbnailResolutionX ((PROPID) 0x502D)
+#define PropertyTagThumbnailResolutionY ((PROPID) 0x502E)
+#define PropertyTagThumbnailPlanarConfig ((PROPID) 0x502F)
+#define PropertyTagThumbnailResolutionUnit ((PROPID) 0x5030)
+#define PropertyTagThumbnailTransferFunction ((PROPID) 0x5031)
+#define PropertyTagThumbnailSoftwareUsed ((PROPID) 0x5032)
+#define PropertyTagThumbnailDateTime ((PROPID) 0x5033)
+#define PropertyTagThumbnailArtist ((PROPID) 0x5034)
+#define PropertyTagThumbnailWhitePoint ((PROPID) 0x5035)
+#define PropertyTagThumbnailPrimaryChromaticities ((PROPID) 0x5036)
+#define PropertyTagThumbnailYCbCrCoefficients ((PROPID) 0x5037)
+#define PropertyTagThumbnailYCbCrSubsampling ((PROPID) 0x5038)
+#define PropertyTagThumbnailYCbCrPositioning ((PROPID) 0x5039)
+#define PropertyTagThumbnailRefBlackWhite ((PROPID) 0x503A)
+#define PropertyTagThumbnailCopyRight ((PROPID) 0x503B)
+#define PropertyTagLuminanceTable ((PROPID) 0x5090)
+#define PropertyTagChrominanceTable ((PROPID) 0x5091)
+#define PropertyTagFrameDelay ((PROPID) 0x5100)
+#define PropertyTagLoopCount ((PROPID) 0x5101)
+#define PropertyTagGlobalPalette ((PROPID) 0x5102)
+#define PropertyTagIndexBackground ((PROPID) 0x5103)
+#define PropertyTagIndexTransparent ((PROPID) 0x5104)
+#define PropertyTagPixelUnit ((PROPID) 0x5110)
+#define PropertyTagPixelPerUnitX ((PROPID) 0x5111)
+#define PropertyTagPixelPerUnitY ((PROPID) 0x5112)
+#define PropertyTagPaletteHistogram ((PROPID) 0x5113)
+#define PropertyTagCopyright ((PROPID) 0x8298)
+#define PropertyTagExifExposureTime ((PROPID) 0x829A)
+#define PropertyTagExifFNumber ((PROPID) 0x829D)
+#define PropertyTagExifIFD ((PROPID) 0x8769)
+#define PropertyTagICCProfile ((PROPID) 0x8773)
+#define PropertyTagExifExposureProg ((PROPID) 0x8822)
+#define PropertyTagExifSpectralSense ((PROPID) 0x8824)
+#define PropertyTagGpsIFD ((PROPID) 0x8825)
+#define PropertyTagExifISOSpeed ((PROPID) 0x8827)
+#define PropertyTagExifOECF ((PROPID) 0x8828)
+#define PropertyTagExifVer ((PROPID) 0x9000)
+#define PropertyTagExifDTOrig ((PROPID) 0x9003)
+#define PropertyTagExifDTDigitized ((PROPID) 0x9004)
+#define PropertyTagExifCompConfig ((PROPID) 0x9101)
+#define PropertyTagExifCompBPP ((PROPID) 0x9102)
+#define PropertyTagExifShutterSpeed ((PROPID) 0x9201)
+#define PropertyTagExifAperture ((PROPID) 0x9202)
+#define PropertyTagExifBrightness ((PROPID) 0x9203)
+#define PropertyTagExifExposureBias ((PROPID) 0x9204)
+#define PropertyTagExifMaxAperture ((PROPID) 0x9205)
+#define PropertyTagExifSubjectDist ((PROPID) 0x9206)
+#define PropertyTagExifMeteringMode ((PROPID) 0x9207)
+#define PropertyTagExifLightSource ((PROPID) 0x9208)
+#define PropertyTagExifFlash ((PROPID) 0x9209)
+#define PropertyTagExifFocalLength ((PROPID) 0x920A)
+#define PropertyTagExifMakerNote ((PROPID) 0x927C)
+#define PropertyTagExifUserComment ((PROPID) 0x9286)
+#define PropertyTagExifDTSubsec ((PROPID) 0x9290)
+#define PropertyTagExifDTOrigSS ((PROPID) 0x9291)
+#define PropertyTagExifDTDigSS ((PROPID) 0x9292)
+#define PropertyTagExifFPXVer ((PROPID) 0xA000)
+#define PropertyTagExifColorSpace ((PROPID) 0xA001)
+#define PropertyTagExifPixXDim ((PROPID) 0xA002)
+#define PropertyTagExifPixYDim ((PROPID) 0xA003)
+#define PropertyTagExifRelatedWav ((PROPID) 0xA004)
+#define PropertyTagExifInterop ((PROPID) 0xA005)
+#define PropertyTagExifFlashEnergy ((PROPID) 0xA20B)
+#define PropertyTagExifSpatialFR ((PROPID) 0xA20C)
+#define PropertyTagExifFocalXRes ((PROPID) 0xA20E)
+#define PropertyTagExifFocalYRes ((PROPID) 0xA20F)
+#define PropertyTagExifFocalResUnit ((PROPID) 0xA210)
+#define PropertyTagExifSubjectLoc ((PROPID) 0xA214)
+#define PropertyTagExifExposureIndex ((PROPID) 0xA215)
+#define PropertyTagExifSensingMethod ((PROPID) 0xA217)
+#define PropertyTagExifFileSource ((PROPID) 0xA300)
+#define PropertyTagExifSceneType ((PROPID) 0xA301)
+#define PropertyTagExifCfaPattern ((PROPID) 0xA302)
+
+#define PropertyTagTypeByte ((WORD) 1)
+#define PropertyTagTypeASCII ((WORD) 2)
+#define PropertyTagTypeShort ((WORD) 3)
+#define PropertyTagTypeLong ((WORD) 4)
+#define PropertyTagTypeRational ((WORD) 5)
+#define PropertyTagTypeUndefined ((WORD) 7)
+#define PropertyTagTypeSLONG ((WORD) 9)
+#define PropertyTagTypeSRational ((WORD) 10)
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern const GUID EncoderChrominanceTable;   /* f2e455dc-09b3-4316-8260-676ada32481c */
+extern const GUID EncoderColorDepth;         /* 66087055-ad66-4c7c-9a18-38a2310b8337 */
+extern const GUID EncoderColorSpace;         /* ? */
+extern const GUID EncoderCompression;        /* e09d739d-ccd4-44ee-8eba-3fbf8be4fc58 */
+extern const GUID EncoderImageItems;         /* ? */
+extern const GUID EncoderLuminanceTable;     /* edb33bce-0266-4a77-b904-27216099e717 */
+extern const GUID EncoderQuality;            /* 1d5be4b5-fa4a-452d-9cdd-5db35105e7eb */
+extern const GUID EncoderRenderMethod;       /* 6d42c53a-229a-4825-8bb7-5c99e2b9a8b8 */
+extern const GUID EncoderSaveAsCMYK;         /* ? */
+extern const GUID EncoderSaveFlag;           /* 292266fc-ac40-47bf-8cfc-a85b89a655de */
+extern const GUID EncoderScanMethod;         /* 3a4e2661-3109-4e56-8536-42c156e7dcfa */
+extern const GUID EncoderTransformation;     /* 8d0eb2d1-a58e-4ea8-aa14-108074b7b6f9 */
+extern const GUID EncoderVersion;            /* 24d18c76-814a-41a4-bf53-1c219cccf797 */
+
+extern const GUID ImageFormatBMP;            /* b96b3cab-0728-11d3-9d7b-0000f81ef32e */
+extern const GUID ImageFormatEMF;            /* b96b3cac-0728-11d3-9d7b-0000f81ef32e */
+extern const GUID ImageFormatEXIF;           /* ? */
+extern const GUID ImageFormatGIF;            /* b96b3cb0-0728-11d3-9d7b-0000f81ef32e */
+extern const GUID ImageFormatIcon;           /* b96b3cb5-0728-11d3-9d7b-0000f81ef32e */
+extern const GUID ImageFormatJPEG;           /* b96b3cae-0728-11d3-9d7b-0000f81ef32e */
+extern const GUID ImageFormatMemoryBMP;      /* b96b3caa-0728-11d3-9d7b-0000f81ef32e */
+extern const GUID ImageFormatPNG;            /* b96b3caf-0728-11d3-9d7b-0000f81ef32e */
+extern const GUID ImageFormatTIFF;           /* b96b3cb1-0728-11d3-9d7b-0000f81ef32e */
+extern const GUID ImageFormatUndefined;      /* ? */
+extern const GUID ImageFormatWMF;            /* b96b3cad-0728-11d3-9d7b-0000f81ef32e */
+
+extern const GUID FrameDimensionPage;        /* 7462dc86-6180-4c7e-8e3f-ee7333a7a483 */
+extern const GUID FrameDimensionResolution;  /* ? */
+extern const GUID FrameDimensionTime;        /* 6aedbd6d-3fb5-418a-83a6-7f45229dc872 */
+
+#ifdef __cplusplus
+}  /* extern "C" */
+#endif
+
+#endif /* __GDIPLUS_IMAGING_H */
Index: Daodan/MinGW/include/gdiplus/gdiplusimpl.h
===================================================================
--- Daodan/MinGW/include/gdiplus/gdiplusimpl.h	(revision 1046)
+++ Daodan/MinGW/include/gdiplus/gdiplusimpl.h	(revision 1046)
@@ -0,0 +1,1613 @@
+/*
+ * gdiplusimpl.h
+ *
+ * GDI+ Bitmap, CachedBitmap, CustomLineCap, Font, FontCollection, FontFamily,
+ *      Image, InstalledFontCollection, PrivateFontCollection, Region
+ *      implementation.  Definitions of these classes are in gdiplusheaders.h.
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Markus Koenig <markus@stber-koenig.de>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __GDIPLUS_IMPL_H
+#define __GDIPLUS_IMPL_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifndef __cplusplus
+#error "A C++ compiler is required to include gdiplusimpl.h."
+#endif
+
+/*
+ * FIXME: I called this file gdiplusimpl.h, but what should it really be called?
+ * Or did Microsoft create separate files for each class implemented here?
+ */
+
+
+// Image
+
+__inline__ Image* Image::FromFile(const WCHAR *filename,
+		BOOL useEmbeddedColorManagement)
+{
+	return new Image(filename, useEmbeddedColorManagement);
+}
+
+__inline__ Image* Image::FromStream(IStream *stream,
+		BOOL useEmbeddedColorManagement)
+{
+	return new Image(stream, useEmbeddedColorManagement);
+}
+
+__inline__ Image::Image(const WCHAR *filename, BOOL useEmbeddedColorManagement):
+	nativeImage(NULL), lastStatus(Ok)
+{
+	if (useEmbeddedColorManagement) {
+		lastStatus = DllExports::GdipLoadImageFromFileICM(
+				filename, &nativeImage);
+	} else {
+		lastStatus = DllExports::GdipLoadImageFromFile(
+				filename, &nativeImage);
+	}
+}
+
+__inline__ Image::Image(IStream *stream, BOOL useEmbeddedColorManagement):
+	nativeImage(NULL), lastStatus(Ok)
+{
+	if (useEmbeddedColorManagement) {
+		lastStatus = DllExports::GdipLoadImageFromStreamICM(
+				stream, &nativeImage);
+	} else {
+		lastStatus = DllExports::GdipLoadImageFromStream(
+				stream, &nativeImage);
+	}
+}
+
+__inline__ Status Image::FindFirstItem(ImageItemData *item)
+{
+	// FIXME: can't test GdipFindFirstImageItem b/c it isn't exported in 1.0
+	return updateStatus(DllExports::GdipFindFirstImageItem(
+			nativeImage, item));
+}
+
+__inline__ Status Image::FindNextItem(ImageItemData *item)
+{
+	// FIXME: can't test GdipFindFirstImageItem b/c it isn't exported in 1.0
+	return updateStatus(DllExports::GdipFindNextImageItem(
+			nativeImage, item));
+}
+
+__inline__ Status Image::GetAllPropertyItems(UINT totalBufferSize,
+		UINT numProperties, PropertyItem *allItems)
+{
+	return updateStatus(DllExports::GdipGetAllPropertyItems(
+			nativeImage, totalBufferSize, numProperties, allItems));
+}
+
+__inline__ Status Image::GetBounds(RectF *srcRect, Unit *srcUnit)
+{
+	return updateStatus(DllExports::GdipGetImageBounds(
+			nativeImage, srcRect, srcUnit));
+}
+
+__inline__ Status Image::GetEncoderParameterList(const CLSID *clsidEncoder,
+		UINT size, EncoderParameters *buffer)
+{
+	return updateStatus(DllExports::GdipGetEncoderParameterList(
+			nativeImage, clsidEncoder, size, buffer));
+}
+
+__inline__ UINT Image::GetEncoderParameterListSize(const CLSID *clsidEncoder)
+{
+	UINT result = 0;
+	updateStatus(DllExports::GdipGetEncoderParameterListSize(
+			nativeImage, clsidEncoder, &result));
+	return result;
+}
+
+__inline__ UINT Image::GetFlags()
+{
+	UINT result = 0;
+	updateStatus(DllExports::GdipGetImageFlags(nativeImage, &result));
+	return result;
+}
+
+__inline__ UINT Image::GetFrameCount(const GUID *dimensionID)
+{
+	UINT result = 0;
+	updateStatus(DllExports::GdipImageGetFrameCount(
+			nativeImage, dimensionID, &result));
+	return result;
+}
+
+__inline__ UINT Image::GetFrameDimensionsCount()
+{
+	UINT result = 0;
+	updateStatus(DllExports::GdipImageGetFrameDimensionsCount(
+			nativeImage, &result));
+	return result;
+}
+
+__inline__ Status Image::GetFrameDimensionsList(GUID *dimensionIDs, UINT count)
+{
+	return updateStatus(DllExports::GdipImageGetFrameDimensionsList(
+			nativeImage, dimensionIDs, count));
+}
+
+__inline__ UINT Image::GetHeight()
+{
+	UINT result = 0;
+	updateStatus(DllExports::GdipGetImageHeight(nativeImage, &result));
+	return result;
+}
+
+__inline__ REAL Image::GetHorizontalResolution()
+{
+	REAL result = 0.0f;
+	updateStatus(DllExports::GdipGetImageHorizontalResolution(
+			nativeImage, &result));
+	return result;
+}
+
+__inline__ Status Image::GetItemData(ImageItemData *item)
+{
+	// FIXME: can't test GdipGetImageItemData b/c it isn't exported in 1.0
+	return updateStatus(DllExports::GdipGetImageItemData(
+			nativeImage, item));
+}
+
+__inline__ Status Image::GetPalette(ColorPalette *palette, INT size)
+{
+	return updateStatus(DllExports::GdipGetImagePalette(
+			nativeImage, palette, size));
+}
+
+__inline__ INT Image::GetPaletteSize()
+{
+	INT result = 0;
+	updateStatus(DllExports::GdipGetImagePaletteSize(nativeImage, &result));
+	return result;
+}
+
+__inline__ Status Image::GetPhysicalDimension(SizeF *size)
+{
+	if (!size) return lastStatus = InvalidParameter;
+	return updateStatus(DllExports::GdipGetImageDimension(
+			nativeImage, &size->Width, &size->Height));
+}
+
+__inline__ PixelFormat Image::GetPixelFormat()
+{
+	PixelFormat result = (PixelFormat) 0;
+	updateStatus(DllExports::GdipGetImagePixelFormat(nativeImage, &result));
+	return result;
+}
+
+__inline__ UINT Image::GetPropertyCount()
+{
+	UINT result = 0;
+	updateStatus(DllExports::GdipGetPropertyCount(nativeImage, &result));
+	return result;
+}
+
+__inline__ Status Image::GetPropertyIdList(UINT numOfProperty, PROPID *list)
+{
+	return updateStatus(DllExports::GdipGetPropertyIdList(
+			nativeImage, numOfProperty, list));
+}
+
+__inline__ Status Image::GetPropertyItem(PROPID propId, UINT propSize,
+		PropertyItem *buffer)
+{
+	return updateStatus(DllExports::GdipGetPropertyItem(
+			nativeImage, propId, propSize, buffer));
+}
+
+__inline__ UINT Image::GetPropertyItemSize(PROPID propId)
+{
+	UINT result = 0;
+	updateStatus(DllExports::GdipGetPropertyItemSize(
+			nativeImage, propId, &result));
+	return result;
+}
+
+__inline__ Status Image::GetPropertySize(
+		UINT *totalBufferSize, UINT *numProperties)
+{
+	return updateStatus(DllExports::GdipGetPropertySize(
+			nativeImage, totalBufferSize, numProperties));
+}
+
+__inline__ Status Image::GetRawFormat(GUID *format)
+{
+	return updateStatus(DllExports::GdipGetImageRawFormat(
+			nativeImage, format));
+}
+
+__inline__ Image* Image::GetThumbnailImage(UINT thumbWidth, UINT thumbHeight,
+		GetThumbnailImageAbort callback, VOID *callbackData)
+{
+	GpImage *thumbImage = NULL;
+	Status status = updateStatus(DllExports::GdipGetImageThumbnail(
+			nativeImage, thumbWidth, thumbHeight, &thumbImage,
+			callback, callbackData));
+
+	if (status == Ok) {
+		Image *result = new Image(thumbImage, Ok);
+		if (!result) {
+			DllExports::GdipDisposeImage(thumbImage);
+			lastStatus = OutOfMemory;
+		}
+		return result;
+	} else {
+		return NULL;
+	}
+}
+
+__inline__ ImageType Image::GetType() const
+{
+	ImageType result = ImageTypeUnknown;
+	updateStatus(DllExports::GdipGetImageType(nativeImage, &result));
+	return result;
+}
+
+__inline__ REAL Image::GetVerticalResolution()
+{
+	REAL result = 0.0f;
+	updateStatus(DllExports::GdipGetImageVerticalResolution(
+			nativeImage, &result));
+	return result;
+}
+
+__inline__ UINT Image::GetWidth()
+{
+	UINT result = 0;
+	updateStatus(DllExports::GdipGetImageWidth(nativeImage, &result));
+	return result;
+}
+
+__inline__ Status Image::RemovePropertyItem(PROPID propId)
+{
+	return updateStatus(DllExports::GdipRemovePropertyItem(
+			nativeImage, propId));
+}
+
+__inline__ Status Image::RotateFlip(RotateFlipType rotateFlipType)
+{
+	return updateStatus(DllExports::GdipImageRotateFlip(
+			nativeImage, rotateFlipType));
+}
+
+__inline__ Status Image::Save(const WCHAR *filename, const CLSID *clsidEncoder,
+		const EncoderParameters *encoderParams)
+{
+	return updateStatus(DllExports::GdipSaveImageToFile(
+			nativeImage, filename, clsidEncoder, encoderParams));
+}
+
+__inline__ Status Image::Save(IStream *stream, const CLSID *clsidEncoder,
+		const EncoderParameters *encoderParams)
+{
+	return updateStatus(DllExports::GdipSaveImageToStream(
+			nativeImage, stream, clsidEncoder, encoderParams));
+}
+
+__inline__ Status Image::SaveAdd(const EncoderParameters *encoderParams)
+{
+	return updateStatus(DllExports::GdipSaveAdd(
+			nativeImage, encoderParams));
+}
+
+__inline__ Status Image::SaveAdd(Image *newImage,
+		const EncoderParameters *encoderParams)
+{
+	return updateStatus(DllExports::GdipSaveAddImage(
+			nativeImage,
+			newImage ? newImage->nativeImage : NULL,
+			encoderParams));
+}
+
+__inline__ Status Image::SelectActiveFrame(
+		const GUID *dimensionID, UINT frameIndex)
+{
+	return updateStatus(DllExports::GdipImageSelectActiveFrame(
+			nativeImage, dimensionID, frameIndex));
+}
+
+__inline__ Status Image::SetAbort(GdiplusAbort *pIAbort)
+{
+	// FIXME: can't test GdipImageSetAbort because it isn't exported in 1.0
+	return updateStatus(DllExports::GdipImageSetAbort(
+			nativeImage, pIAbort));
+}
+
+__inline__ Status Image::SetPalette(const ColorPalette *palette)
+{
+	return updateStatus(DllExports::GdipSetImagePalette(
+			nativeImage, palette));
+}
+
+__inline__ Status Image::SetPropertyItem(const PropertyItem *item)
+{
+	return updateStatus(DllExports::GdipSetPropertyItem(nativeImage, item));
+}
+
+
+// Bitmap
+
+__inline__ Bitmap* Bitmap::FromBITMAPINFO(const BITMAPINFO *gdiBitmapInfo,
+		VOID *gdiBitmapData)
+{
+	return new Bitmap(gdiBitmapInfo, gdiBitmapData);
+}
+
+__inline__ Bitmap* Bitmap::FromDirectDrawSurface7(IDirectDrawSurface7 *surface)
+{
+	return new Bitmap(surface);
+}
+
+__inline__ Bitmap* Bitmap::FromFile(const WCHAR *filename,
+		BOOL useEmbeddedColorManagement)
+{
+	return new Bitmap(filename, useEmbeddedColorManagement);
+}
+
+__inline__ Bitmap* Bitmap::FromHBITMAP(HBITMAP hbm, HPALETTE hpal)
+{
+	return new Bitmap(hbm, hpal);
+}
+
+__inline__ Bitmap* Bitmap::FromHICON(HICON icon)
+{
+	return new Bitmap(icon);
+}
+
+__inline__ Bitmap* Bitmap::FromResource(
+		HINSTANCE hInstance, const WCHAR *bitmapName)
+{
+	return new Bitmap(hInstance, bitmapName);
+}
+
+__inline__ Bitmap* Bitmap::FromStream(IStream *stream,
+		BOOL useEmbeddedColorManagement)
+{
+	return new Bitmap(stream, useEmbeddedColorManagement);
+}
+
+//TODO: [GDI+ 1.1] Bitmap::ApplyEffect
+//__inline__ Status Bitmap::ApplyEffect(Bitmap **inputs, INT numInputs,
+//		Effect *effect, RECT *ROI, RECT *outputRect, Bitmap **output)
+//{
+//	return NotImplemented;
+//}
+
+__inline__ Status Bitmap::InitializePalette(ColorPalette *palette,
+		PaletteType paletteType, INT optimalColors,
+		BOOL useTransparentColor, Bitmap *bitmap)
+{
+	// FIXME: can't test GdipInitializePalette b/c it isn't exported in 1.0
+	return DllExports::GdipInitializePalette(palette, paletteType,
+			optimalColors, useTransparentColor,
+			bitmap ? (GpBitmap*) bitmap->nativeImage : NULL);
+}
+
+__inline__ Bitmap::Bitmap(const BITMAPINFO *gdiBitmapInfo, VOID *gdiBitmapData):
+	Image(NULL, Ok)
+{
+	GpBitmap *nativeBitmap = NULL;
+	lastStatus = DllExports::GdipCreateBitmapFromGdiDib(
+			gdiBitmapInfo, gdiBitmapData, &nativeBitmap);
+	nativeImage = nativeBitmap;
+}
+
+__inline__ Bitmap::Bitmap(IDirectDrawSurface7 *surface): Image(NULL, Ok)
+{
+	GpBitmap *nativeBitmap = NULL;
+	lastStatus = DllExports::GdipCreateBitmapFromDirectDrawSurface(
+			surface, &nativeBitmap);
+	nativeImage = nativeBitmap;
+}
+
+__inline__ Bitmap::Bitmap(const WCHAR *filename,
+		BOOL useEmbeddedColorManagement): Image(NULL, Ok)
+{
+	GpBitmap *nativeBitmap = NULL;
+	if (useEmbeddedColorManagement) {
+		lastStatus = DllExports::GdipCreateBitmapFromFileICM(
+				filename, &nativeBitmap);
+	} else {
+		lastStatus = DllExports::GdipCreateBitmapFromFile(
+				filename, &nativeBitmap);
+	}
+	nativeImage = nativeBitmap;
+}
+
+__inline__ Bitmap::Bitmap(HBITMAP hbm, HPALETTE hpal):
+	Image(NULL, Ok)
+{
+	GpBitmap *nativeBitmap = NULL;
+	lastStatus = DllExports::GdipCreateBitmapFromHBITMAP(
+			hbm, hpal, &nativeBitmap);
+	nativeImage = nativeBitmap;
+}
+
+__inline__ Bitmap::Bitmap(HICON hicon):
+	Image(NULL, Ok)
+{
+	GpBitmap *nativeBitmap = NULL;
+	lastStatus = DllExports::GdipCreateBitmapFromHICON(hicon, &nativeBitmap);
+	nativeImage = nativeBitmap;
+}
+
+__inline__ Bitmap::Bitmap(HINSTANCE hInstance, const WCHAR *bitmapName):
+	Image(NULL, Ok)
+{
+	GpBitmap *nativeBitmap = NULL;
+	lastStatus = DllExports::GdipCreateBitmapFromResource(
+			hInstance, bitmapName, &nativeBitmap);
+	nativeImage = nativeBitmap;
+}
+
+__inline__ Bitmap::Bitmap(IStream *stream, BOOL useEmbeddedColorManagement):
+	Image(NULL, Ok)
+{
+	GpBitmap *nativeBitmap = NULL;
+	if (useEmbeddedColorManagement) {
+		lastStatus = DllExports::GdipCreateBitmapFromStreamICM(
+				stream, &nativeBitmap);
+	} else {
+		lastStatus = DllExports::GdipCreateBitmapFromStream(
+				stream, &nativeBitmap);
+	}
+	nativeImage = nativeBitmap;
+}
+
+__inline__ Bitmap::Bitmap(INT width, INT height, Graphics *target):
+	Image(NULL, Ok)
+{
+	GpBitmap *nativeBitmap = NULL;
+	lastStatus = DllExports::GdipCreateBitmapFromGraphics(
+			width, height, target ? target->nativeGraphics : NULL,
+			&nativeBitmap);
+	nativeImage = nativeBitmap;
+}
+
+__inline__ Bitmap::Bitmap(INT width, INT height, PixelFormat format):
+	Image(NULL, Ok)
+{
+	GpBitmap *nativeBitmap = NULL;
+	lastStatus = DllExports::GdipCreateBitmapFromScan0(
+			width, height, 0, format, NULL, &nativeBitmap);
+	nativeImage = nativeBitmap;
+}
+
+__inline__ Bitmap::Bitmap(INT width, INT height, INT stride,
+		PixelFormat format, BYTE *scan0): Image(NULL, Ok)
+{
+	GpBitmap *nativeBitmap = NULL;
+	lastStatus = DllExports::GdipCreateBitmapFromScan0(
+			width, height, stride, format, scan0, &nativeBitmap);
+	nativeImage = nativeBitmap;
+}
+
+__inline__ Bitmap* Bitmap::Clone(const RectF& rect, PixelFormat format) const
+{
+	return Clone(rect.X, rect.Y, rect.Width, rect.Height, format);
+}
+
+__inline__ Bitmap* Bitmap::Clone(const Rect& rect, PixelFormat format) const
+{
+	return Clone(rect.X, rect.Y, rect.Width, rect.Height, format);
+}
+
+__inline__ Bitmap* Bitmap::Clone(REAL x, REAL y, REAL width, REAL height,
+		PixelFormat format) const
+{
+	GpBitmap *cloneBitmap = NULL;
+	Status status = updateStatus(DllExports::GdipCloneBitmapArea(
+			x, y, width, height, format,
+			(GpBitmap*) nativeImage, &cloneBitmap));
+	if (status == Ok) {
+		Bitmap *result = new Bitmap(cloneBitmap, lastStatus);
+		if (!result) {
+			DllExports::GdipDisposeImage(cloneBitmap);
+			lastStatus = OutOfMemory;
+		}
+		return result;
+	} else {
+		return NULL;
+	}
+}
+
+__inline__ Bitmap* Bitmap::Clone(INT x, INT y, INT width, INT height,
+		PixelFormat format) const
+{
+	GpBitmap *cloneBitmap = NULL;
+	Status status = updateStatus(DllExports::GdipCloneBitmapAreaI(
+			x, y, width, height, format,
+			(GpBitmap*) nativeImage, &cloneBitmap));
+	if (status == Ok) {
+		Bitmap *result = new Bitmap(cloneBitmap, lastStatus);
+		if (!result) {
+			DllExports::GdipDisposeImage(cloneBitmap);
+			lastStatus = OutOfMemory;
+		}
+		return result;
+	} else {
+		return NULL;
+	}
+}
+
+//TODO: [GDI+ 1.1] Bitmap::ApplyEffect
+//__inline__ Status Bitmap::ApplyEffect(Effect *effect, RECT *ROI)
+//{
+//	return NotImplemented;
+//}
+
+__inline__ Status Bitmap::ConvertFormat(PixelFormat format,
+		DitherType ditherType, PaletteType paletteType,
+		ColorPalette *palette, REAL alphaThresholdPercent)
+{
+	// FIXME: can't test GdipBitmapConvertFormat b/c it isn't exported in 1.0
+	return updateStatus(DllExports::GdipBitmapConvertFormat(
+			(GpBitmap*) nativeImage, format, ditherType,
+			paletteType, palette, alphaThresholdPercent));
+}
+
+__inline__ Status Bitmap::GetHBITMAP(
+		const Color& colorBackground, HBITMAP *hbmReturn) const
+{
+	return updateStatus(DllExports::GdipCreateHBITMAPFromBitmap(
+			(GpBitmap*) nativeImage, hbmReturn,
+			colorBackground.GetValue()));
+}
+
+__inline__ Status Bitmap::GetHICON(HICON *icon) const
+{
+	return updateStatus(DllExports::GdipCreateHICONFromBitmap(
+			(GpBitmap*) nativeImage, icon));
+}
+
+__inline__ Status Bitmap::GetHistogram(HistogramFormat format,
+		UINT numberOfEntries,
+		UINT *channel0, UINT *channel1,
+		UINT *channel2, UINT *channel3) const
+{
+	return updateStatus(DllExports::GdipBitmapGetHistogram(
+			(GpBitmap*) nativeImage, format, numberOfEntries,
+			channel0, channel1, channel2, channel3));
+}
+
+__inline__ Status Bitmap::GetHistogramSize(HistogramFormat format,
+		UINT *numberOfEntries) const
+{
+	return updateStatus(DllExports::GdipBitmapGetHistogramSize(
+			format, numberOfEntries));
+}
+
+__inline__ Status Bitmap::GetPixel(INT x, INT y, Color *color) const
+{
+	return updateStatus(DllExports::GdipBitmapGetPixel(
+			(GpBitmap*) nativeImage, x, y,
+			color ? &color->Value : NULL));
+}
+
+__inline__ Status Bitmap::LockBits(const Rect *rect, UINT flags,
+		PixelFormat format, BitmapData *lockedBitmapData)
+{
+	return updateStatus(DllExports::GdipBitmapLockBits(
+			(GpBitmap*) nativeImage, rect, flags, format,
+			lockedBitmapData));
+}
+
+__inline__ Status Bitmap::SetPixel(INT x, INT y, const Color& color)
+{
+	return updateStatus(DllExports::GdipBitmapSetPixel(
+			(GpBitmap*) nativeImage, x, y, color.GetValue()));
+}
+
+__inline__ Status Bitmap::SetResolution(REAL xdpi, REAL ydpi)
+{
+	return updateStatus(DllExports::GdipBitmapSetResolution(
+			(GpBitmap*) nativeImage, xdpi, ydpi));
+}
+
+__inline__ Status Bitmap::UnlockBits(BitmapData *lockedBitmapData)
+{
+	return updateStatus(DllExports::GdipBitmapUnlockBits(
+			(GpBitmap*) nativeImage, lockedBitmapData));
+}
+
+
+// CachedBitmap
+
+__inline__ CachedBitmap::CachedBitmap(Bitmap *bitmap, Graphics *graphics):
+	nativeCachedBitmap(NULL), lastStatus(Ok)
+{
+	lastStatus = DllExports::GdipCreateCachedBitmap(
+			bitmap ? ((GpBitmap*) bitmap->nativeImage) : NULL,
+			graphics ? graphics->nativeGraphics : NULL,
+			&nativeCachedBitmap);
+}
+
+__inline__ CachedBitmap::~CachedBitmap()
+{
+	DllExports::GdipDeleteCachedBitmap(nativeCachedBitmap);
+}
+
+
+// CustomLineCap
+
+__inline__ CustomLineCap::CustomLineCap(
+		const GraphicsPath *fillPath,
+		const GraphicsPath *strokePath,
+		LineCap baseCap, REAL baseInset):
+		nativeCustomLineCap(NULL), lastStatus(Ok)
+{
+	lastStatus = DllExports::GdipCreateCustomLineCap(
+			fillPath ? fillPath->nativePath : NULL,
+			strokePath ? strokePath->nativePath : NULL,
+			baseCap, baseInset, &nativeCustomLineCap);
+}
+
+__inline__ LineCap CustomLineCap::GetBaseCap() const
+{
+	LineCap result = LineCapFlat;
+	updateStatus(DllExports::GdipGetCustomLineCapBaseCap(
+			nativeCustomLineCap, &result));
+	return result;
+}
+
+__inline__ REAL CustomLineCap::GetBaseInset() const
+{
+	REAL result = 0.0f;
+	updateStatus(DllExports::GdipGetCustomLineCapBaseInset(
+			nativeCustomLineCap, &result));
+	return result;
+}
+
+__inline__ Status CustomLineCap::GetStrokeCaps(LineCap *startCap,
+		LineCap *endCap) const
+{
+	return updateStatus(DllExports::GdipGetCustomLineCapStrokeCaps(
+			nativeCustomLineCap, startCap, endCap));
+}
+
+__inline__ LineJoin CustomLineCap::GetStrokeJoin() const
+{
+	LineJoin result = LineJoinMiter;
+	updateStatus(DllExports::GdipGetCustomLineCapStrokeJoin(
+			nativeCustomLineCap, &result));
+	return result;
+}
+
+__inline__ REAL CustomLineCap::GetWidthScale() const
+{
+	REAL result = 0.0f;
+	updateStatus(DllExports::GdipGetCustomLineCapWidthScale(
+			nativeCustomLineCap, &result));
+	return result;
+}
+
+__inline__ Status CustomLineCap::SetBaseCap(LineCap baseCap)
+{
+	return updateStatus(DllExports::GdipSetCustomLineCapBaseCap(
+			nativeCustomLineCap, baseCap));
+}
+
+__inline__ Status CustomLineCap::SetBaseInset(REAL inset)
+{
+	return updateStatus(DllExports::GdipSetCustomLineCapBaseInset(
+			nativeCustomLineCap, inset));
+}
+
+__inline__ Status CustomLineCap::SetStrokeCap(LineCap strokeCap)
+{
+	return updateStatus(DllExports::GdipSetCustomLineCapStrokeCaps(
+			nativeCustomLineCap, strokeCap, strokeCap));
+}
+
+__inline__ Status CustomLineCap::SetStrokeCaps(LineCap startCap, LineCap endCap)
+{
+	return updateStatus(DllExports::GdipSetCustomLineCapStrokeCaps(
+			nativeCustomLineCap, startCap, endCap));
+}
+
+__inline__ Status CustomLineCap::SetStrokeJoin(LineJoin lineJoin)
+{
+	return updateStatus(DllExports::GdipSetCustomLineCapStrokeJoin(
+			nativeCustomLineCap, lineJoin));
+}
+
+__inline__ Status CustomLineCap::SetWidthScale(REAL widthScale)
+{
+	return updateStatus(DllExports::GdipSetCustomLineCapWidthScale(
+			nativeCustomLineCap, widthScale));
+}
+
+
+// Font
+
+__inline__ Font::Font(const FontFamily *family,
+		REAL emSize, INT style, Unit unit):
+		nativeFont(NULL), lastStatus(Ok)
+{
+	lastStatus = DllExports::GdipCreateFont(
+			family ? family->nativeFontFamily : NULL,
+			emSize, style, unit, &nativeFont);
+}
+
+__inline__ Font::Font(HDC hdc, HFONT hfont):
+	nativeFont(NULL), lastStatus(Ok)
+{
+	LOGFONTW logfont;
+	if (GetObject(hfont, sizeof logfont, &logfont)) {
+		lastStatus = DllExports::GdipCreateFontFromLogfontW(
+				hdc, &logfont, &nativeFont);
+	} else {
+		lastStatus = DllExports::GdipCreateFontFromDC(
+				hdc, &nativeFont);
+	}
+}
+
+__inline__ Font::Font(HDC hdc, const LOGFONTA *logfont):
+	nativeFont(NULL), lastStatus(Ok)
+{
+	lastStatus = DllExports::GdipCreateFontFromLogfontA(
+			hdc, logfont, &nativeFont);
+}
+
+__inline__ Font::Font(HDC hdc, const LOGFONTW *logfont):
+	nativeFont(NULL), lastStatus(Ok)
+{
+	lastStatus = DllExports::GdipCreateFontFromLogfontW(
+			hdc, logfont, &nativeFont);
+}
+
+__inline__ Font::Font(HDC hdc):
+	nativeFont(NULL), lastStatus(Ok)
+{
+	lastStatus = DllExports::GdipCreateFontFromDC(hdc, &nativeFont);
+}
+
+__inline__ Font::Font(const WCHAR *familyName, REAL emSize, INT style,
+		Unit unit, const FontCollection *fontCollection):
+		nativeFont(NULL), lastStatus(Ok)
+{
+	GpFontFamily *nativeFamily = NULL;
+	lastStatus = DllExports::GdipCreateFontFamilyFromName(
+			familyName,
+			fontCollection ? fontCollection->nativeFontCollection : NULL,
+			&nativeFamily);
+
+	if (nativeFamily) {
+		lastStatus = DllExports::GdipCreateFont(
+				nativeFamily, emSize, style, unit, &nativeFont);
+		DllExports::GdipDeleteFontFamily(nativeFamily);
+	}
+}
+
+__inline__ Font::~Font()
+{
+	DllExports::GdipDeleteFont(nativeFont);
+}
+
+__inline__ Font* Font::Clone() const
+{
+	GpFont *cloneFont = NULL;
+	Status status = updateStatus(DllExports::GdipCloneFont(
+			nativeFont, &cloneFont));
+	if (status == Ok) {
+		Font *result = new Font(cloneFont, lastStatus);
+		if (!result) {
+			DllExports::GdipDeleteFont(cloneFont);
+			lastStatus = OutOfMemory;
+		}
+		return result;
+	} else {
+		return NULL;
+	}
+}
+
+__inline__ Status Font::GetFamily(FontFamily *family) const
+{
+	if (!family) return lastStatus = InvalidParameter;
+	// FIXME: do we need to call GdipDeleteFontFamily first?
+	return family->lastStatus = updateStatus(DllExports::GdipGetFamily(
+			nativeFont, &family->nativeFontFamily));
+}
+
+__inline__ REAL Font::GetHeight(const Graphics *graphics) const
+{
+	REAL result = 0.0f;
+	updateStatus(DllExports::GdipGetFontHeight(
+			nativeFont, graphics ? graphics->nativeGraphics : NULL,
+			&result));
+	return result;
+}
+
+__inline__ REAL Font::GetHeight(REAL dpi) const
+{
+	REAL result = 0.0f;
+	updateStatus(DllExports::GdipGetFontHeightGivenDPI(
+			nativeFont, dpi, &result));
+	return result;
+}
+
+__inline__ Status Font::GetLogFontA(const Graphics *graphics, LOGFONTA *logfontA)
+const
+{
+	return updateStatus(DllExports::GdipGetLogFontA(
+			nativeFont, graphics ? graphics->nativeGraphics : NULL,
+			logfontA));
+}
+
+__inline__ Status Font::GetLogFontW(const Graphics *graphics, LOGFONTW *logfontW)
+const
+{
+	return updateStatus(DllExports::GdipGetLogFontW(
+			nativeFont, graphics ? graphics->nativeGraphics : NULL,
+			logfontW));
+}
+
+__inline__ REAL Font::GetSize() const
+{
+	REAL result = 0.0;
+	updateStatus(DllExports::GdipGetFontSize(nativeFont, &result));
+	return result;
+}
+
+__inline__ INT Font::GetStyle() const
+{
+	INT result = FontStyleRegular;
+	updateStatus(DllExports::GdipGetFontStyle(nativeFont, &result));
+	return result;
+}
+
+__inline__ Unit Font::GetUnit() const
+{
+	Unit result = UnitPoint;
+	updateStatus(DllExports::GdipGetFontUnit(nativeFont, &result));
+	return result;
+}
+
+
+// FontCollection
+
+__inline__ FontCollection::FontCollection():
+	nativeFontCollection(NULL), lastStatus(Ok)
+{
+}
+
+__inline__ Status FontCollection::GetFamilies(INT numSought,
+		FontFamily *families, INT *numFound) const
+{
+	if (numSought <= 0 || !families || !numFound)
+		return lastStatus = InvalidParameter;
+
+	for (int i = 0; i < numSought; ++i) {
+		families[i].nativeFontFamily = NULL;
+		families[i].lastStatus = FontFamilyNotFound;
+	}
+	*numFound = 0;
+
+	GpFontFamily **nativeFamilyArray = (GpFontFamily**)
+		DllExports::GdipAlloc(numSought * sizeof (GpFontFamily*));
+	if (!nativeFamilyArray)
+		return lastStatus = OutOfMemory;
+
+	Status status = updateStatus(DllExports::GdipGetFontCollectionFamilyList(
+			nativeFontCollection, numSought, nativeFamilyArray,
+			numFound));
+
+	// FIXME: must the native GpFontFamily objects be cloned? Seems so.
+	// (if this is not done, the "Creating a Private Font Collection"
+	// example crashes on "delete[] pFontFamily")
+
+	if (status == Ok) {
+		for (int i = 0; i < *numFound; ++i) {
+			families[i].lastStatus =
+				updateStatus(DllExports::GdipCloneFontFamily(
+					nativeFamilyArray[i],
+					&families[i].nativeFontFamily));
+		}
+	}
+
+	DllExports::GdipFree(nativeFamilyArray);
+	return status;
+}
+
+__inline__ INT FontCollection::GetFamilyCount() const
+{
+	INT result = 0;
+	updateStatus(DllExports::GdipGetFontCollectionFamilyCount(
+			nativeFontCollection, &result));
+	return result;
+}
+
+
+// FontFamily
+
+// FIXME: do FontFamily::GenericMonospace() et al. need to be thread safe?
+// FIXME: maybe put parts of this in gdiplus.c
+
+extern "C" void *_GdipFontFamilyCachedGenericMonospace;
+extern "C" void *_GdipFontFamilyCachedGenericSansSerif;
+extern "C" void *_GdipFontFamilyCachedGenericSerif;
+
+__inline__ const FontFamily* FontFamily::GenericMonospace()
+{
+	if (!_GdipFontFamilyCachedGenericMonospace) {
+		GpFontFamily *nativeFontFamily = 0;
+		Status status = DllExports::GdipGetGenericFontFamilyMonospace(
+				&nativeFontFamily);
+		if (status == Ok && nativeFontFamily) {
+			_GdipFontFamilyCachedGenericMonospace = (void*)
+				new FontFamily(nativeFontFamily, Ok);
+		}
+	}
+	return (FontFamily*) _GdipFontFamilyCachedGenericMonospace;
+}
+
+__inline__ const FontFamily* FontFamily::GenericSansSerif()
+{
+	if (!_GdipFontFamilyCachedGenericSansSerif) {
+		GpFontFamily *nativeFontFamily = 0;
+		Status status = DllExports::GdipGetGenericFontFamilySansSerif(
+				&nativeFontFamily);
+		if (status == Ok && nativeFontFamily) {
+			_GdipFontFamilyCachedGenericSansSerif = (void*)
+				new FontFamily(nativeFontFamily, Ok);
+		}
+	}
+	return (FontFamily*) _GdipFontFamilyCachedGenericSansSerif;
+}
+
+__inline__ const FontFamily* FontFamily::GenericSerif()
+{
+	if (!_GdipFontFamilyCachedGenericSerif) {
+		GpFontFamily *nativeFontFamily = 0;
+		Status status = DllExports::GdipGetGenericFontFamilySerif(
+				&nativeFontFamily);
+		if (status == Ok && nativeFontFamily) {
+			_GdipFontFamilyCachedGenericSerif = (void*)
+				new FontFamily(nativeFontFamily, Ok);
+		}
+	}
+	return (FontFamily*) _GdipFontFamilyCachedGenericSerif;
+}
+
+__inline__ FontFamily::FontFamily():
+	nativeFontFamily(NULL), lastStatus(Ok)
+{
+}
+
+__inline__ FontFamily::FontFamily(const WCHAR *name,
+		const FontCollection *fontCollection):
+		nativeFontFamily(NULL), lastStatus(Ok)
+{
+	lastStatus = DllExports::GdipCreateFontFamilyFromName(name,
+			fontCollection ? fontCollection->nativeFontCollection : NULL,
+			&nativeFontFamily);
+}
+
+__inline__ FontFamily::~FontFamily()
+{
+	DllExports::GdipDeleteFontFamily(nativeFontFamily);
+}
+
+__inline__ FontFamily* FontFamily::Clone() const
+{
+	GpFontFamily *cloneFontFamily = NULL;
+	Status status = updateStatus(DllExports::GdipCloneFontFamily(
+			nativeFontFamily, &cloneFontFamily));
+	if (status == Ok) {
+		FontFamily *result = new FontFamily(cloneFontFamily, lastStatus);
+		if (!result) {
+			DllExports::GdipDeleteFontFamily(cloneFontFamily);
+			lastStatus = OutOfMemory;
+		}
+		return result;
+	} else {
+		return NULL;
+	}
+}
+
+__inline__ UINT16 FontFamily::GetCellAscent(INT style) const
+{
+	UINT16 result = 0;
+	updateStatus(DllExports::GdipGetCellAscent(
+			nativeFontFamily, style, &result));
+	return result;
+}
+
+__inline__ UINT16 FontFamily::GetCellDescent(INT style) const
+{
+	UINT16 result = 0;
+	updateStatus(DllExports::GdipGetCellDescent(
+			nativeFontFamily, style, &result));
+	return result;
+}
+
+__inline__ UINT16 FontFamily::GetEmHeight(INT style) const
+{
+	UINT16 result = 0;
+	updateStatus(DllExports::GdipGetEmHeight(
+			nativeFontFamily, style, &result));
+	return result;
+}
+
+__inline__ Status FontFamily::GetFamilyName(WCHAR name[LF_FACESIZE],
+		LANGID language) const
+{
+	return updateStatus(DllExports::GdipGetFamilyName(
+			nativeFontFamily, name, language));
+}
+
+__inline__ UINT16 FontFamily::GetLineSpacing(INT style) const
+{
+	UINT16 result = 0;
+	updateStatus(DllExports::GdipGetLineSpacing(
+			nativeFontFamily, style, &result));
+	return result;
+}
+
+__inline__ BOOL FontFamily::IsStyleAvailable(INT style) const
+{
+	BOOL result = FALSE;
+	updateStatus(DllExports::GdipIsStyleAvailable(
+			nativeFontFamily, style, &result));
+	return result;
+}
+
+
+// InstalledFontCollection
+
+__inline__ InstalledFontCollection::InstalledFontCollection()
+{
+	lastStatus = DllExports::GdipNewInstalledFontCollection(
+			&nativeFontCollection);
+}
+
+
+// PrivateFontCollection
+
+__inline__ PrivateFontCollection::PrivateFontCollection()
+{
+	lastStatus = DllExports::GdipNewPrivateFontCollection(
+			&nativeFontCollection);
+}
+
+__inline__ Status PrivateFontCollection::AddFontFile(const WCHAR *filename)
+{
+	return updateStatus(DllExports::GdipPrivateAddFontFile(
+			nativeFontCollection, filename));
+}
+
+__inline__ Status PrivateFontCollection::AddMemoryFont(
+		const VOID *memory, INT length)
+{
+	return updateStatus(DllExports::GdipPrivateAddMemoryFont(
+			nativeFontCollection, memory, length));
+}
+
+
+// Region
+
+__inline__ Region* Region::FromHRGN(HRGN hrgn)
+{
+	return new Region(hrgn);
+}
+
+__inline__ Region::Region(): nativeRegion(NULL), lastStatus(Ok)
+{
+	lastStatus = DllExports::GdipCreateRegion(&nativeRegion);
+}
+
+__inline__ Region::Region(const RectF& rect): nativeRegion(NULL), lastStatus(Ok)
+{
+	lastStatus = DllExports::GdipCreateRegionRect(&rect, &nativeRegion);
+}
+
+__inline__ Region::Region(const Rect& rect): nativeRegion(NULL), lastStatus(Ok)
+{
+	lastStatus = DllExports::GdipCreateRegionRectI(&rect, &nativeRegion);
+}
+
+__inline__ Region::Region(const GraphicsPath *path):
+	nativeRegion(NULL), lastStatus(Ok)
+{
+	lastStatus = DllExports::GdipCreateRegionPath(
+			path ? path->nativePath : NULL, &nativeRegion);
+}
+
+__inline__ Region::Region(const BYTE *regionData, INT size):
+	nativeRegion(NULL), lastStatus(Ok)
+{
+	lastStatus = DllExports::GdipCreateRegionRgnData(
+			regionData, size, &nativeRegion);
+}
+
+__inline__ Region::Region(HRGN hrgn): nativeRegion(NULL), lastStatus(Ok)
+{
+	lastStatus = DllExports::GdipCreateRegionHrgn(hrgn, &nativeRegion);
+}
+
+__inline__ Region::~Region()
+{
+	DllExports::GdipDeleteRegion(nativeRegion);
+}
+
+__inline__ Region* Region::Clone() const
+{
+	GpRegion *cloneRegion = NULL;
+	Status status = updateStatus(DllExports::GdipCloneRegion(
+			nativeRegion, &cloneRegion));
+	if (status == Ok) {
+		Region *result = new Region(cloneRegion, lastStatus);
+		if (!result) {
+			DllExports::GdipDeleteRegion(cloneRegion);
+			lastStatus = OutOfMemory;
+		}
+		return result;
+	} else {
+		return NULL;
+	}
+}
+
+__inline__ Status Region::Complement(const RectF& rect)
+{
+	return updateStatus(DllExports::GdipCombineRegionRect(
+			nativeRegion, &rect, CombineModeComplement));
+}
+
+__inline__ Status Region::Complement(const Rect& rect)
+{
+	return updateStatus(DllExports::GdipCombineRegionRectI(
+			nativeRegion, &rect, CombineModeComplement));
+}
+
+__inline__ Status Region::Complement(const Region *region)
+{
+	return updateStatus(DllExports::GdipCombineRegionRegion(
+			nativeRegion, region ? region->nativeRegion : NULL,
+			CombineModeComplement));
+}
+
+__inline__ Status Region::Complement(const GraphicsPath *path)
+{
+	return updateStatus(DllExports::GdipCombineRegionPath(
+			nativeRegion, path ? path->nativePath : NULL,
+			CombineModeComplement));
+}
+
+__inline__ BOOL Region::Equals(const Region *region, const Graphics *graphics)
+const
+{
+	BOOL result = FALSE;
+	updateStatus(DllExports::GdipIsEqualRegion(
+			nativeRegion, region ? region->nativeRegion : NULL,
+			graphics ? graphics->nativeGraphics : NULL, &result));
+	return result;
+}
+
+__inline__ Status Region::Exclude(const RectF& rect)
+{
+	return updateStatus(DllExports::GdipCombineRegionRect(
+			nativeRegion, &rect, CombineModeExclude));
+}
+
+__inline__ Status Region::Exclude(const Rect& rect)
+{
+	return updateStatus(DllExports::GdipCombineRegionRectI(
+			nativeRegion, &rect, CombineModeExclude));
+}
+
+__inline__ Status Region::Exclude(const Region *region)
+{
+	return updateStatus(DllExports::GdipCombineRegionRegion(
+			nativeRegion, region ? region->nativeRegion : NULL,
+			CombineModeExclude));
+}
+
+__inline__ Status Region::Exclude(const GraphicsPath *path)
+{
+	return updateStatus(DllExports::GdipCombineRegionPath(
+			nativeRegion, path ? path->nativePath : NULL,
+			CombineModeExclude));
+}
+
+__inline__ Status Region::GetBounds(RectF *rect, const Graphics *graphics) const
+{
+	return updateStatus(DllExports::GdipGetRegionBounds(nativeRegion,
+			graphics ? graphics->nativeGraphics : NULL, rect));
+}
+
+__inline__ Status Region::GetBounds(Rect *rect, const Graphics *graphics) const
+{
+	return updateStatus(DllExports::GdipGetRegionBoundsI(nativeRegion,
+			graphics ? graphics->nativeGraphics : NULL, rect));
+}
+
+__inline__ Status Region::GetData(BYTE *buffer, UINT bufferSize,
+		UINT *sizeFilled) const
+{
+	return updateStatus(DllExports::GdipGetRegionData(
+			nativeRegion, buffer, bufferSize, sizeFilled));
+}
+
+__inline__ UINT Region::GetDataSize() const
+{
+	UINT result = 0;
+	updateStatus(DllExports::GdipGetRegionDataSize(nativeRegion, &result));
+	return result;
+}
+
+__inline__ HRGN Region::GetHRGN(const Graphics *graphics) const
+{
+	HRGN result = NULL;
+	updateStatus(DllExports::GdipGetRegionHRgn(nativeRegion,
+			graphics ? graphics->nativeGraphics : NULL, &result));
+	return result;
+}
+
+__inline__ Status Region::GetRegionScans(const Matrix *matrix,
+		RectF *rects, INT *count) const
+{
+	return updateStatus(DllExports::GdipGetRegionScans(
+			nativeRegion, rects, count,
+			matrix ? matrix->nativeMatrix : NULL));
+}
+
+__inline__ Status Region::GetRegionScans(const Matrix *matrix,
+		Rect *rects, INT *count) const
+{
+	return updateStatus(DllExports::GdipGetRegionScansI(
+			nativeRegion, rects, count,
+			matrix ? matrix->nativeMatrix : NULL));
+}
+
+__inline__ UINT Region::GetRegionScansCount(const Matrix *matrix) const
+{
+	UINT result = 0;
+	updateStatus(DllExports::GdipGetRegionScansCount(
+			nativeRegion, &result,
+			matrix ? matrix->nativeMatrix : NULL));
+	return result;
+}
+
+__inline__ Status Region::Intersect(const RectF& rect)
+{
+	return updateStatus(DllExports::GdipCombineRegionRect(
+			nativeRegion, &rect, CombineModeIntersect));
+}
+
+__inline__ Status Region::Intersect(const Rect& rect)
+{
+	return updateStatus(DllExports::GdipCombineRegionRectI(
+			nativeRegion, &rect, CombineModeIntersect));
+}
+
+__inline__ Status Region::Intersect(const Region *region)
+{
+	return updateStatus(DllExports::GdipCombineRegionRegion(
+			nativeRegion, region ? region->nativeRegion : NULL,
+			CombineModeIntersect));
+}
+
+__inline__ Status Region::Intersect(const GraphicsPath *path)
+{
+	return updateStatus(DllExports::GdipCombineRegionPath(
+			nativeRegion, path ? path->nativePath : NULL,
+			CombineModeIntersect));
+}
+
+__inline__ BOOL Region::IsEmpty(const Graphics *graphics) const
+{
+	BOOL result = FALSE;
+	updateStatus(DllExports::GdipIsEmptyRegion(nativeRegion,
+			graphics ? graphics->nativeGraphics : NULL, &result));
+	return result;
+}
+
+__inline__ BOOL Region::IsInfinite(const Graphics *graphics) const
+{
+	BOOL result = FALSE;
+	updateStatus(DllExports::GdipIsInfiniteRegion(nativeRegion,
+			graphics ? graphics->nativeGraphics : NULL, &result));
+	return result;
+}
+
+__inline__ BOOL Region::IsVisible(REAL x, REAL y,
+		const Graphics *graphics) const
+{
+	BOOL result = FALSE;
+	updateStatus(DllExports::GdipIsVisibleRegionPoint(
+			nativeRegion, x, y,
+			graphics ? graphics->nativeGraphics : NULL, &result));
+	return result;
+}
+
+__inline__ BOOL Region::IsVisible(INT x, INT y,
+		const Graphics *graphics) const
+{
+	BOOL result = FALSE;
+	updateStatus(DllExports::GdipIsVisibleRegionPointI(
+			nativeRegion, x, y,
+			graphics ? graphics->nativeGraphics : NULL, &result));
+	return result;
+}
+
+__inline__ BOOL Region::IsVisible(const PointF& point,
+		const Graphics *graphics) const
+{
+	BOOL result = FALSE;
+	updateStatus(DllExports::GdipIsVisibleRegionPoint(
+			nativeRegion, point.X, point.Y,
+			graphics ? graphics->nativeGraphics : NULL, &result));
+	return result;
+}
+
+__inline__ BOOL Region::IsVisible(const Point& point,
+		const Graphics *graphics) const
+{
+	BOOL result = FALSE;
+	updateStatus(DllExports::GdipIsVisibleRegionPointI(
+			nativeRegion, point.X, point.Y,
+			graphics ? graphics->nativeGraphics : NULL, &result));
+	return result;
+}
+
+__inline__ BOOL Region::IsVisible(REAL x, REAL y, REAL width, REAL height,
+		const Graphics *graphics) const
+{
+	BOOL result = FALSE;
+	updateStatus(DllExports::GdipIsVisibleRegionRect(
+			nativeRegion, x, y, width, height,
+			graphics ? graphics->nativeGraphics : NULL, &result));
+	return result;
+}
+
+__inline__ BOOL Region::IsVisible(INT x, INT y, INT width, INT height,
+		const Graphics *graphics) const
+{
+	BOOL result = FALSE;
+	updateStatus(DllExports::GdipIsVisibleRegionRectI(
+			nativeRegion, x, y, width, height,
+			graphics ? graphics->nativeGraphics : NULL, &result));
+	return result;
+}
+
+__inline__ BOOL Region::IsVisible(const RectF& rect,
+		const Graphics *graphics) const
+{
+	BOOL result = FALSE;
+	updateStatus(DllExports::GdipIsVisibleRegionRect(
+			nativeRegion, rect.X, rect.Y, rect.Width, rect.Height,
+			graphics ? graphics->nativeGraphics : NULL, &result));
+	return result;
+}
+
+__inline__ BOOL Region::IsVisible(const Rect& rect,
+		const Graphics *graphics) const
+{
+	BOOL result = FALSE;
+	updateStatus(DllExports::GdipIsVisibleRegionRectI(
+			nativeRegion, rect.X, rect.Y, rect.Width, rect.Height,
+			graphics ? graphics->nativeGraphics : NULL, &result));
+	return result;
+}
+
+__inline__ Status Region::MakeEmpty()
+{
+	return updateStatus(DllExports::GdipSetEmpty(nativeRegion));
+}
+
+__inline__ Status Region::MakeInfinite()
+{
+	return updateStatus(DllExports::GdipSetInfinite(nativeRegion));
+}
+
+__inline__ Status Region::Transform(const Matrix *matrix)
+{
+	return updateStatus(DllExports::GdipTransformRegion(
+			nativeRegion, matrix ? matrix->nativeMatrix : NULL));
+}
+
+__inline__ Status Region::Translate(REAL dx, REAL dy)
+{
+	return updateStatus(DllExports::GdipTranslateRegion(
+			nativeRegion, dx, dy));
+}
+
+__inline__ Status Region::Translate(INT dx, INT dy)
+{
+	return updateStatus(DllExports::GdipTranslateRegionI(
+			nativeRegion, dx, dy));
+}
+
+__inline__ Status Region::Union(const RectF& rect)
+{
+	return updateStatus(DllExports::GdipCombineRegionRect(
+			nativeRegion, &rect, CombineModeUnion));
+}
+
+__inline__ Status Region::Union(const Rect& rect)
+{
+	return updateStatus(DllExports::GdipCombineRegionRectI(
+			nativeRegion, &rect, CombineModeUnion));
+}
+
+__inline__ Status Region::Union(const Region *region)
+{
+	return updateStatus(DllExports::GdipCombineRegionRegion(
+			nativeRegion, region ? region->nativeRegion : NULL,
+			CombineModeUnion));
+}
+
+__inline__ Status Region::Union(const GraphicsPath *path)
+{
+	return updateStatus(DllExports::GdipCombineRegionPath(
+			nativeRegion, path ? path->nativePath : NULL,
+			CombineModeUnion));
+}
+
+__inline__ Status Region::Xor(const RectF& rect)
+{
+	return updateStatus(DllExports::GdipCombineRegionRect(
+			nativeRegion, &rect, CombineModeXor));
+}
+
+__inline__ Status Region::Xor(const Rect& rect)
+{
+	return updateStatus(DllExports::GdipCombineRegionRectI(
+			nativeRegion, &rect, CombineModeXor));
+}
+
+__inline__ Status Region::Xor(const Region *region)
+{
+	return updateStatus(DllExports::GdipCombineRegionRegion(
+			nativeRegion, region ? region->nativeRegion : NULL,
+			CombineModeXor));
+}
+
+__inline__ Status Region::Xor(const GraphicsPath *path)
+{
+	return updateStatus(DllExports::GdipCombineRegionPath(
+			nativeRegion, path ? path->nativePath : NULL,
+			CombineModeXor));
+}
+
+
+// GraphicsPath
+
+__inline__ BOOL GraphicsPath::IsOutlineVisible(REAL x, REAL y, const Pen *pen,
+		const Graphics *g) const
+{
+	BOOL result = FALSE;
+	updateStatus(DllExports::GdipIsOutlineVisiblePathPoint(
+			nativePath, x, y, pen ? pen->nativePen : NULL,
+			g ? g->nativeGraphics : NULL, &result));
+	return result;
+}
+
+__inline__ BOOL GraphicsPath::IsOutlineVisible(INT x, INT y, const Pen *pen,
+		const Graphics *g) const
+{
+	BOOL result = FALSE;
+	updateStatus(DllExports::GdipIsOutlineVisiblePathPointI(
+			nativePath, x, y, pen ? pen->nativePen : NULL,
+			g ? g->nativeGraphics : NULL, &result));
+	return result;
+}
+
+__inline__ BOOL GraphicsPath::IsOutlineVisible(const PointF& point, const Pen *pen,
+		const Graphics *g) const
+{
+	BOOL result = FALSE;
+	updateStatus(DllExports::GdipIsOutlineVisiblePathPoint(
+			nativePath, point.X, point.Y,
+			pen ? pen->nativePen : NULL,
+			g ? g->nativeGraphics : NULL, &result));
+	return result;
+}
+
+__inline__ BOOL GraphicsPath::IsOutlineVisible(const Point& point, const Pen *pen,
+		const Graphics *g) const
+{
+	BOOL result = FALSE;
+	updateStatus(DllExports::GdipIsOutlineVisiblePathPointI(
+			nativePath, point.X, point.Y,
+			pen ? pen->nativePen : NULL,
+			g ? g->nativeGraphics : NULL, &result));
+	return result;
+}
+
+__inline__ BOOL GraphicsPath::IsVisible(REAL x, REAL y, const Graphics *g) const
+{
+	BOOL result = FALSE;
+	updateStatus(DllExports::GdipIsVisiblePathPoint(
+			nativePath, x, y,
+			g ? g->nativeGraphics : NULL, &result));
+	return result;
+}
+__inline__ BOOL GraphicsPath::IsVisible(INT x, INT y, const Graphics *g) const
+{
+	BOOL result = FALSE;
+	updateStatus(DllExports::GdipIsVisiblePathPointI(
+			nativePath, x, y,
+			g ? g->nativeGraphics : NULL, &result));
+	return result;
+}
+
+__inline__ BOOL GraphicsPath::IsVisible(const PointF& point,
+		const Graphics *g) const
+{
+	BOOL result = FALSE;
+	updateStatus(DllExports::GdipIsVisiblePathPoint(
+			nativePath, point.X, point.Y,
+			g ? g->nativeGraphics : NULL, &result));
+	return result;
+}
+
+__inline__ BOOL GraphicsPath::IsVisible(const Point& point, const Graphics *g) const
+{
+	BOOL result = FALSE;
+	updateStatus(DllExports::GdipIsVisiblePathPointI(
+			nativePath, point.X, point.Y,
+			g ? g->nativeGraphics : NULL, &result));
+	return result;
+}
+
+
+// PathData
+
+__inline__ Status PathData::AllocateArrays(INT capacity)
+{
+	if (capacity < 0) {
+		return InvalidParameter;
+	} else if (Count < capacity) {
+		FreeArrays();
+
+		PointF *pointArray = (PointF*)
+			DllExports::GdipAlloc(capacity * sizeof(PointF));
+		if (!pointArray)
+			return OutOfMemory;
+
+		BYTE *typeArray = (BYTE*)
+			DllExports::GdipAlloc(capacity * sizeof(BYTE));
+		if (!typeArray) {
+			DllExports::GdipFree(pointArray);
+			return OutOfMemory;
+		}
+
+		Count = capacity;
+		Points = pointArray;
+		Types = typeArray;
+	}
+	return Ok;
+}
+
+__inline__ VOID PathData::FreeArrays()
+{
+	if (Points) DllExports::GdipFree(Points);
+	if (Types) DllExports::GdipFree(Types);
+	Count = 0;
+	Points = NULL;
+	Types = NULL;
+}
+
+#endif /* __GDIPLUS_IMPL_H */
Index: Daodan/MinGW/include/gdiplus/gdiplusinit.h
===================================================================
--- Daodan/MinGW/include/gdiplus/gdiplusinit.h	(revision 1046)
+++ Daodan/MinGW/include/gdiplus/gdiplusinit.h	(revision 1046)
@@ -0,0 +1,74 @@
+/*
+ * gdiplusinit.h
+ *
+ * GDI+ Initialization
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Markus Koenig <markus@stber-koenig.de>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __GDIPLUS_INIT_H
+#define __GDIPLUS_INIT_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+typedef struct GdiplusStartupInput {
+	UINT32 GdiplusVersion;
+	DebugEventProc DebugEventCallback;
+	BOOL SuppressBackgroundThread;
+	BOOL SuppressExternalCodecs;
+
+	#ifdef __cplusplus
+	GdiplusStartupInput(DebugEventProc debugEventCallback = NULL,
+	                    BOOL suppressBackgroundThread = FALSE,
+	                    BOOL suppressExternalCodecs = FALSE):
+		GdiplusVersion(1),
+		DebugEventCallback(debugEventCallback),
+		SuppressBackgroundThread(suppressBackgroundThread),
+		SuppressExternalCodecs(suppressExternalCodecs) {}
+	#endif /* __cplusplus */
+} GdiplusStartupInput;
+
+typedef GpStatus WINGDIPAPI (*NotificationHookProc)(ULONG_PTR *token);
+typedef VOID WINGDIPAPI (*NotificationUnhookProc)(ULONG_PTR token);
+
+typedef struct GdiplusStartupOutput {
+	NotificationHookProc NotificationHook;
+	NotificationUnhookProc NotificationUnhook;
+
+	#ifdef __cplusplus
+	GdiplusStartupOutput():
+		NotificationHook(NULL),
+		NotificationUnhook(NULL) {}
+	#endif /* __cplusplus */
+} GdiplusStartupOutput;
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+GpStatus WINGDIPAPI GdiplusStartup(ULONG_PTR*,GDIPCONST GdiplusStartupInput*,GdiplusStartupOutput*);
+VOID WINGDIPAPI GdiplusShutdown(ULONG_PTR);
+GpStatus WINGDIPAPI GdiplusNotificationHook(ULONG_PTR*);
+VOID WINGDIPAPI GdiplusNotificationUnhook(ULONG_PTR);
+
+#ifdef __cplusplus
+}  /* extern "C" */
+#endif
+
+
+#endif /* __GDIPLUS_INIT_H */
Index: Daodan/MinGW/include/gdiplus/gdipluslinecaps.h
===================================================================
--- Daodan/MinGW/include/gdiplus/gdipluslinecaps.h	(revision 1046)
+++ Daodan/MinGW/include/gdiplus/gdipluslinecaps.h	(revision 1046)
@@ -0,0 +1,131 @@
+/*
+ * gdipluslinecaps.h
+ *
+ * GDI+ AdjustableArrowCap class
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Markus Koenig <markus@stber-koenig.de>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __GDIPLUS_LINECAPS_H
+#define __GDIPLUS_LINECAPS_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifndef __cplusplus
+#error "A C++ compiler is required to include gdipluslinecaps.h."
+#endif
+
+class AdjustableArrowCap: public CustomLineCap
+{
+public:
+	AdjustableArrowCap(REAL height, REAL width, BOOL isFilled):
+		CustomLineCap(NULL, Ok)
+	{
+		GpAdjustableArrowCap *nativeAdjustableArrowCap = NULL;
+		lastStatus = DllExports::GdipCreateAdjustableArrowCap(
+				height, width, isFilled,
+				&nativeAdjustableArrowCap);
+		nativeCustomLineCap = nativeAdjustableArrowCap;
+	}
+	virtual ~AdjustableArrowCap()
+	{
+	}
+	virtual AdjustableArrowCap* Clone() const
+	{
+		GpCustomLineCap *cloneCustomLineCap = NULL;
+		Status status = updateStatus(DllExports::GdipCloneCustomLineCap(
+				nativeCustomLineCap, &cloneCustomLineCap));
+		if (status == Ok) {
+			AdjustableArrowCap *result = new AdjustableArrowCap(
+					cloneCustomLineCap, lastStatus);
+			if (!result) {
+				DllExports::GdipDeleteCustomLineCap(
+						cloneCustomLineCap);
+				lastStatus = OutOfMemory;
+			}
+			return result;
+		} else {
+			return NULL;
+		}
+	}
+
+	REAL GetHeight() const
+	{
+		REAL result = 0.0f;
+		updateStatus(DllExports::GdipGetAdjustableArrowCapHeight(
+				(GpAdjustableArrowCap*) nativeCustomLineCap,
+				&result));
+		return result;
+	}
+	REAL GetMiddleInset() const
+	{
+		REAL result = 0.0f;
+		updateStatus(DllExports::GdipGetAdjustableArrowCapMiddleInset(
+				(GpAdjustableArrowCap*) nativeCustomLineCap,
+				&result));
+		return result;
+	}
+	REAL GetWidth() const
+	{
+		REAL result = 0.0f;
+		updateStatus(DllExports::GdipGetAdjustableArrowCapWidth(
+				(GpAdjustableArrowCap*) nativeCustomLineCap,
+				&result));
+		return result;
+	}
+	BOOL IsFilled() const
+	{
+		BOOL result = FALSE;
+		updateStatus(DllExports::GdipGetAdjustableArrowCapFillState(
+				(GpAdjustableArrowCap*) nativeCustomLineCap,
+				&result));
+		return result;
+	}
+	Status SetFillState(BOOL isFilled)
+	{
+		return updateStatus(DllExports::GdipSetAdjustableArrowCapFillState(
+				(GpAdjustableArrowCap*) nativeCustomLineCap,
+				isFilled));
+	}
+	Status SetHeight(REAL height)
+	{
+		return updateStatus(DllExports::GdipSetAdjustableArrowCapHeight(
+				(GpAdjustableArrowCap*) nativeCustomLineCap,
+				height));
+	}
+	Status SetMiddleInset(REAL middleInset)
+	{
+		return updateStatus(DllExports::GdipSetAdjustableArrowCapMiddleInset(
+				(GpAdjustableArrowCap*) nativeCustomLineCap,
+				middleInset));
+	}
+	Status SetWidth(REAL width)
+	{
+		return updateStatus(DllExports::GdipSetAdjustableArrowCapWidth(
+				(GpAdjustableArrowCap*) nativeCustomLineCap,
+				width));
+	}
+
+private:
+	AdjustableArrowCap(GpCustomLineCap *customLineCap, Status status):
+		CustomLineCap(customLineCap, status) {}
+	AdjustableArrowCap(const AdjustableArrowCap&);
+	AdjustableArrowCap& operator=(const AdjustableArrowCap&);
+};
+
+#endif /* __GDIPLUS_LINECAPS_H */
Index: Daodan/MinGW/include/gdiplus/gdiplusmatrix.h
===================================================================
--- Daodan/MinGW/include/gdiplus/gdiplusmatrix.h	(revision 1046)
+++ Daodan/MinGW/include/gdiplus/gdiplusmatrix.h	(revision 1046)
@@ -0,0 +1,240 @@
+/*
+ * gdiplusmatrix.h
+ *
+ * GDI+ Matrix class
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Markus Koenig <markus@stber-koenig.de>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __GDIPLUS_MATRIX_H
+#define __GDIPLUS_MATRIX_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifndef __cplusplus
+#error "A C++ compiler is required to include gdiplusmatrix.h."
+#endif
+
+#define GDIP_MATRIX_PI \
+	3.1415926535897932384626433832795028841971693993751058209749445923078164
+
+class Matrix: public GdiplusBase
+{
+	friend class Graphics;
+	friend class GraphicsPath;
+	friend class LinearGradientBrush;
+	friend class PathGradientBrush;
+	friend class Pen;
+	friend class Region;
+	friend class TextureBrush;
+
+public:
+	Matrix(): nativeMatrix(NULL), lastStatus(Ok)
+	{
+		lastStatus = DllExports::GdipCreateMatrix(&nativeMatrix);
+	}
+	Matrix(REAL m11, REAL m12, REAL m21, REAL m22, REAL dx, REAL dy):
+			nativeMatrix(NULL), lastStatus(Ok)
+	{
+		lastStatus = DllExports::GdipCreateMatrix2(
+				m11, m12, m21, m22, dx, dy,
+				&nativeMatrix);
+	}
+	Matrix(const RectF& rect, const PointF *dstplg):
+			nativeMatrix(NULL), lastStatus(Ok)
+	{
+		lastStatus = DllExports::GdipCreateMatrix3(
+				&rect, dstplg, &nativeMatrix);
+	}
+	Matrix(const Rect& rect, const Point *dstplg):
+			nativeMatrix(NULL), lastStatus(Ok)
+	{
+		lastStatus = DllExports::GdipCreateMatrix3I(
+				&rect, dstplg, &nativeMatrix);
+	}
+	~Matrix()
+	{
+		DllExports::GdipDeleteMatrix(nativeMatrix);
+	}
+	Matrix* Clone() const
+	{
+		GpMatrix *cloneMatrix = NULL;
+		Status status = updateStatus(DllExports::GdipCloneMatrix(
+				nativeMatrix, &cloneMatrix));
+		if (status == Ok) {
+			Matrix *result = new Matrix(cloneMatrix, lastStatus);
+			if (!result) {
+				DllExports::GdipDeleteMatrix(cloneMatrix);
+				lastStatus = OutOfMemory;
+			}
+			return result;
+		} else {
+			return NULL;
+		}
+	}
+
+	BOOL Equals(const Matrix *matrix) const
+	{
+		BOOL result;
+		updateStatus(DllExports::GdipIsMatrixEqual(
+				nativeMatrix,
+				matrix ? matrix->nativeMatrix : NULL, &result));
+		return result;
+	}
+	Status GetElements(REAL *m) const
+	{
+		return updateStatus(DllExports::GdipGetMatrixElements(
+				nativeMatrix, m));
+	}
+	Status GetLastStatus() const
+	{
+		Status result = lastStatus;
+		lastStatus = Ok;
+		return result;
+	}
+	Status Invert()
+	{
+		return updateStatus(DllExports::GdipInvertMatrix(nativeMatrix));
+	}
+	BOOL IsIdentity() const
+	{
+		BOOL result;
+		updateStatus(DllExports::GdipIsMatrixIdentity(
+				nativeMatrix, &result));
+		return result;
+	}
+	BOOL IsInvertible() const
+	{
+		BOOL result;
+		updateStatus(DllExports::GdipIsMatrixInvertible(
+				nativeMatrix, &result));
+		return result;
+	}
+	Status Multiply(const Matrix *matrix,
+			MatrixOrder order = MatrixOrderPrepend)
+	{
+		return updateStatus(DllExports::GdipMultiplyMatrix(
+				nativeMatrix,
+				matrix ? matrix->nativeMatrix : NULL, order));
+	}
+	REAL OffsetX() const
+	{
+		REAL m[6];
+		updateStatus(DllExports::GdipGetMatrixElements(nativeMatrix, m));
+		return m[4];
+	}
+	REAL OffsetY() const
+	{
+		REAL m[6];
+		updateStatus(DllExports::GdipGetMatrixElements(nativeMatrix, m));
+		return m[5];
+	}
+	Status Reset()
+	{
+		return updateStatus(DllExports::GdipSetMatrixElements(
+				nativeMatrix,
+				1.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f));
+	}
+	Status Rotate(REAL angle, MatrixOrder order = MatrixOrderPrepend)
+	{
+		return updateStatus(DllExports::GdipRotateMatrix(
+				nativeMatrix, angle, order));
+	}
+	Status RotateAt(REAL angle, const PointF& center,
+			MatrixOrder order = MatrixOrderPrepend)
+	{
+		REAL angleRadian = angle * GDIP_MATRIX_PI / 180.0f;
+		REAL cosAngle = ::cos(angleRadian);
+		REAL sinAngle = ::sin(angleRadian);
+		REAL x = center.X;
+		REAL y = center.Y;
+
+		Matrix matrix2(cosAngle, sinAngle, -sinAngle, cosAngle,
+				x * (1.0f-cosAngle) + y * sinAngle,
+				-x * sinAngle + y * (1.0f-cosAngle));
+		Status status = matrix2.GetLastStatus();
+		if (status == Ok) {
+			return Multiply(&matrix2, order);
+		} else {
+			return lastStatus = status;
+		}
+	}
+	Status Scale(REAL scaleX, REAL scaleY,
+			MatrixOrder order = MatrixOrderPrepend)
+	{
+		return updateStatus(DllExports::GdipScaleMatrix(
+				nativeMatrix, scaleX, scaleY, order));
+	}
+	Status SetElements(REAL m11, REAL m12, REAL m21, REAL m22,
+			REAL dx, REAL dy)
+	{
+		return updateStatus(DllExports::GdipSetMatrixElements(
+				nativeMatrix, m11, m12, m21, m22, dx, dy));
+	}
+	Status Shear(REAL shearX, REAL shearY,
+			MatrixOrder order = MatrixOrderPrepend)
+	{
+		return updateStatus(DllExports::GdipShearMatrix(
+				nativeMatrix, shearX, shearY, order));
+	}
+	Status TransformPoints(PointF *pts, INT count = 1) const
+	{
+		return updateStatus(DllExports::GdipTransformMatrixPoints(
+				nativeMatrix, pts, count));
+	}
+	Status TransformPoints(Point *pts, INT count = 1) const
+	{
+		return updateStatus(DllExports::GdipTransformMatrixPointsI(
+				nativeMatrix, pts, count));
+	}
+	Status TransformVectors(PointF *pts, INT count = 1) const
+	{
+		return updateStatus(DllExports::GdipVectorTransformMatrixPoints(
+				nativeMatrix, pts, count));
+	}
+	Status TransformVectors(Point *pts, INT count = 1) const
+	{
+		return updateStatus(DllExports::GdipVectorTransformMatrixPointsI(
+				nativeMatrix, pts, count));
+	}
+	Status Translate(REAL offsetX, REAL offsetY,
+			MatrixOrder order = MatrixOrderPrepend)
+	{
+		return updateStatus(DllExports::GdipTranslateMatrix(
+				nativeMatrix, offsetX, offsetY, order));
+	}
+
+private:
+	Matrix(GpMatrix *matrix, Status status):
+		nativeMatrix(matrix), lastStatus(status) {}
+	Matrix(const Matrix&);
+	Matrix& operator=(const Matrix&);
+
+	Status updateStatus(Status newStatus) const
+	{
+		if (newStatus != Ok) lastStatus = newStatus;
+		return newStatus;
+	}
+
+	GpMatrix *nativeMatrix;
+	mutable Status lastStatus;
+};
+
+#undef GDIP_MATRIX_PI
+
+#endif /* __GDIPLUS_MATRIX_H */
Index: Daodan/MinGW/include/gdiplus/gdiplusmem.h
===================================================================
--- Daodan/MinGW/include/gdiplus/gdiplusmem.h	(revision 1046)
+++ Daodan/MinGW/include/gdiplus/gdiplusmem.h	(revision 1046)
@@ -0,0 +1,42 @@
+/*
+ * gdiplusmem.h
+ *
+ * GDI+ memory allocation
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Markus Koenig <markus@stber-koenig.de>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __GDIPLUS_MEM_H
+#define __GDIPLUS_MEM_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+namespace DllExports {
+extern "C" {
+#endif
+
+VOID* WINGDIPAPI GdipAlloc(size_t);
+VOID WINGDIPAPI GdipFree(VOID*);
+
+#ifdef __cplusplus
+}  /* extern "C" */
+}  /* namespace DllExports */
+#endif
+
+#endif /* __GDIPLUS_MEM_H */
Index: Daodan/MinGW/include/gdiplus/gdiplusmetafile.h
===================================================================
--- Daodan/MinGW/include/gdiplus/gdiplusmetafile.h	(revision 1046)
+++ Daodan/MinGW/include/gdiplus/gdiplusmetafile.h	(revision 1046)
@@ -0,0 +1,305 @@
+/*
+ * gdiplusmetafile.h
+ *
+ * GDI+ Metafile class
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Markus Koenig <markus@stber-koenig.de>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __GDIPLUS_METAFILE_H
+#define __GDIPLUS_METAFILE_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifndef __cplusplus
+#error "A C++ compiler is required to include gdiplusmetafile.h."
+#endif
+
+class Metafile: public Image
+{
+public:
+	static UINT EmfToWmfBits(HENHMETAFILE hEmf,
+			UINT cbData16, LPBYTE pData16,
+			INT iMapMode = MM_ANISOTROPIC,
+			EmfToWmfBitsFlags eFlags = EmfToWmfBitsFlagsDefault)
+	{
+		return DllExports::GdipEmfToWmfBits(hEmf,
+				cbData16, pData16, iMapMode, eFlags);
+	}
+	static Status GetMetafileHeader(const WCHAR *filename,
+			MetafileHeader *header)
+	{
+		return DllExports::GdipGetMetafileHeaderFromFile(
+				filename, header);
+	}
+	static Status GetMetafileHeader(IStream *stream, MetafileHeader *header)
+	{
+		return DllExports::GdipGetMetafileHeaderFromStream(
+				stream, header);
+	}
+	////TODO: Metafile::GetMetafileHeader
+	//static Status GetMetafileHeader(HMETAFILE hWmf,
+	//		const WmfPlaceableFileHeader *wmfPlaceableFileHeader,
+	//		MetafileHeader *header)
+	//{
+	//	// WTF: No flat API to do this.
+	//	return NotImplemented;
+	//}
+	static Status GetMetafileHeader(HENHMETAFILE hEmf,
+			MetafileHeader *header)
+	{
+		return DllExports::GdipGetMetafileHeaderFromEmf(hEmf, header);
+	}
+
+	Metafile(HMETAFILE hWmf,
+			const WmfPlaceableFileHeader *wmfPlaceableFileHeader,
+			BOOL deleteWmf = FALSE): Image(NULL, Ok)
+	{
+		GpMetafile *nativeMetafile = NULL;
+		lastStatus = DllExports::GdipCreateMetafileFromWmf(
+				hWmf, deleteWmf, wmfPlaceableFileHeader,
+				&nativeMetafile);
+		nativeImage = nativeMetafile;
+	}
+	Metafile(HENHMETAFILE hEmf, BOOL deleteEmf = FALSE): Image(NULL, Ok)
+	{
+		GpMetafile *nativeMetafile = NULL;
+		lastStatus = DllExports::GdipCreateMetafileFromEmf(
+				hEmf, deleteEmf, &nativeMetafile);
+		nativeImage = nativeMetafile;
+	}
+	Metafile(const WCHAR *filename): Image(NULL, Ok)
+	{
+		GpMetafile *nativeMetafile = NULL;
+		lastStatus = DllExports::GdipCreateMetafileFromFile(
+				filename, &nativeMetafile);
+		nativeImage = nativeMetafile;
+	}
+	Metafile(const WCHAR *filename,
+			const WmfPlaceableFileHeader *wmfPlaceableFileHeader):
+			Image(NULL, Ok)
+	{
+		GpMetafile *nativeMetafile = NULL;
+		lastStatus = DllExports::GdipCreateMetafileFromWmfFile(
+				filename, wmfPlaceableFileHeader,
+				&nativeMetafile);
+		nativeImage = nativeMetafile;
+	}
+	Metafile(IStream *stream): Image(NULL, Ok)
+	{
+		GpMetafile *nativeMetafile = NULL;
+		lastStatus = DllExports::GdipCreateMetafileFromStream(
+				stream, &nativeMetafile);
+		nativeImage = nativeMetafile;
+	}
+	Metafile(HDC referenceHdc, EmfType type = EmfTypeEmfPlusDual,
+			const WCHAR *description = NULL): Image(NULL, Ok)
+	{
+		GpMetafile *nativeMetafile = NULL;
+		lastStatus = DllExports::GdipRecordMetafile(
+				referenceHdc, type, NULL, MetafileFrameUnitGdi,
+				description, &nativeMetafile);
+		nativeImage = nativeMetafile;
+	}
+	Metafile(HDC referenceHdc, const RectF& frameRect,
+			MetafileFrameUnit frameUnit = MetafileFrameUnitGdi,
+			EmfType type = EmfTypeEmfPlusDual,
+			const WCHAR *description = NULL): Image(NULL, Ok)
+	{
+		GpMetafile *nativeMetafile = NULL;
+		lastStatus = DllExports::GdipRecordMetafile(
+				referenceHdc, type, &frameRect, frameUnit,
+				description, &nativeMetafile);
+		nativeImage = nativeMetafile;
+	}
+	Metafile(HDC referenceHdc, const Rect& frameRect,
+			MetafileFrameUnit frameUnit = MetafileFrameUnitGdi,
+			EmfType type = EmfTypeEmfPlusDual,
+			const WCHAR *description = NULL): Image(NULL, Ok)
+	{
+		GpMetafile *nativeMetafile = NULL;
+		lastStatus = DllExports::GdipRecordMetafileI(
+				referenceHdc, type, &frameRect, frameUnit,
+				description, &nativeMetafile);
+		nativeImage = nativeMetafile;
+	}
+	Metafile(const WCHAR *filename, HDC referenceHdc,
+			EmfType type = EmfTypeEmfPlusDual,
+			const WCHAR *description = NULL): Image(NULL, Ok)
+	{
+		GpMetafile *nativeMetafile = NULL;
+		lastStatus = DllExports::GdipRecordMetafileFileName(
+				filename, referenceHdc, type, NULL,
+				MetafileFrameUnitGdi, description,
+				&nativeMetafile);
+		nativeImage = nativeMetafile;
+	}
+	Metafile(const WCHAR *filename, HDC referenceHdc,
+			const RectF& frameRect,
+			MetafileFrameUnit frameUnit = MetafileFrameUnitGdi,
+			EmfType type = EmfTypeEmfPlusDual,
+			const WCHAR *description = NULL): Image(NULL, Ok)
+	{
+		GpMetafile *nativeMetafile = NULL;
+		lastStatus = DllExports::GdipRecordMetafileFileName(
+				filename, referenceHdc, type, &frameRect,
+				frameUnit, description, &nativeMetafile);
+		nativeImage = nativeMetafile;
+	}
+	Metafile(const WCHAR *filename, HDC referenceHdc,
+			const Rect& frameRect,
+			MetafileFrameUnit frameUnit = MetafileFrameUnitGdi,
+			EmfType type = EmfTypeEmfPlusDual,
+			const WCHAR *description = NULL): Image(NULL, Ok)
+	{
+		GpMetafile *nativeMetafile = NULL;
+		lastStatus = DllExports::GdipRecordMetafileFileNameI(
+				filename, referenceHdc, type, &frameRect,
+				frameUnit, description, &nativeMetafile);
+		nativeImage = nativeMetafile;
+	}
+	Metafile(IStream *stream, HDC referenceHdc,
+			EmfType type = EmfTypeEmfPlusDual,
+			const WCHAR *description = NULL): Image(NULL, Ok)
+	{
+		GpMetafile *nativeMetafile = NULL;
+		lastStatus = DllExports::GdipRecordMetafileStream(
+				stream, referenceHdc, type, NULL,
+				MetafileFrameUnitGdi, description,
+				&nativeMetafile);
+		nativeImage = nativeMetafile;
+	}
+	Metafile(IStream *stream, HDC referenceHdc, const RectF& frameRect,
+			MetafileFrameUnit frameUnit = MetafileFrameUnitGdi,
+			EmfType type = EmfTypeEmfPlusDual,
+			const WCHAR *description = NULL): Image(NULL, Ok)
+	{
+		GpMetafile *nativeMetafile = NULL;
+		lastStatus = DllExports::GdipRecordMetafileStream(
+				stream, referenceHdc, type, &frameRect,
+				frameUnit, description, &nativeMetafile);
+		nativeImage = nativeMetafile;
+	}
+	Metafile(IStream *stream, HDC referenceHdc, const Rect& frameRect,
+			MetafileFrameUnit frameUnit = MetafileFrameUnitGdi,
+			EmfType type = EmfTypeEmfPlusDual,
+			const WCHAR *description = NULL): Image(NULL, Ok)
+	{
+		GpMetafile *nativeMetafile = NULL;
+		lastStatus = DllExports::GdipRecordMetafileStreamI(
+				stream, referenceHdc, type, &frameRect,
+				frameUnit, description, &nativeMetafile);
+		nativeImage = nativeMetafile;
+	}
+	virtual ~Metafile()
+	{
+	}
+	virtual Metafile* Clone() const
+	{
+		GpImage *cloneImage = NULL;
+		Status status = updateStatus(DllExports::GdipCloneImage(
+				nativeImage, &cloneImage));
+		if (status == Ok) {
+			Metafile *result = new Metafile(cloneImage, lastStatus);
+			if (!result) {
+				DllExports::GdipDisposeImage(cloneImage);
+				lastStatus = OutOfMemory;
+			}
+			return result;
+		} else {
+			return NULL;
+		}
+	}
+
+	////TODO: [GDI+ 1.1] Metafile::ConvertToEmfPlus
+	//Status ConvertToEmfPlus(const Graphics *refGraphics,
+	//		BOOL *conversionSuccess = NULL,
+	//		EmfType emfType = EmfTypeEmfPlusOnly,
+	//		const WCHAR *description = NULL)
+	//{
+	//	// FIXME: can't test GdipConvertToEmfPlus because it isn't exported in 1.0
+	//	return updateStatus(DllExports::GdipConvertToEmfPlus(
+	//			refGraphics ? refGraphics->nativeGraphics : NULL,
+	//			(GpMetafile*) nativeImage,
+	//			conversionSuccess, emfType, description, ???));
+	//}
+	////TODO: [GDI+ 1.1] Metafile::ConvertToEmfPlus
+	//Status ConvertToEmfPlus(const Graphics *refGraphics,
+	//		const WCHAR *filename,
+	//		BOOL *conversionSuccess = NULL,
+	//		EmfType emfType = EmfTypeEmfPlusOnly,
+	//		const WCHAR *description = NULL)
+	//{
+	//	// FIXME: can't test GdipConvertToEmfPlusToFile because it isn't exported in 1.0
+	//	return updateStatus(DllExports::GdipConvertToEmfPlusToFile(
+	//			refGraphics ? refGraphics->nativeGraphics : NULL,
+	//			(GpMetafile*) nativeImage, conversionSuccess,
+	//			filename, emfType, description, ???));
+	//}
+	////TODO: [GDI+ 1.1] Metafile::ConvertToEmfPlus
+	//Status ConvertToEmfPlus(const Graphics *refGraphics,
+	//		IStream *stream,
+	//		BOOL *conversionSuccess = NULL,
+	//		EmfType emfType = EmfTypeEmfPlusOnly,
+	//		const WCHAR *description = NULL)
+	//{
+	//	// FIXME: can't test GdipConvertToEmfPlusToStream because it isn't exported in 1.0
+	//	return updateStatus(DllExports::GdipConvertToEmfPlusToStream(
+	//			refGraphics ? refGraphics->nativeGraphics : NULL,
+	//			(GpMetafile*) nativeImage, conversionSuccess,
+	//			stream, emfType, description, ???));
+	//}
+	UINT GetDownLevelRasterizationLimit() const
+	{
+		UINT result = 0;
+		updateStatus(DllExports::GdipGetMetafileDownLevelRasterizationLimit(
+				(GpMetafile*) nativeImage, &result));
+		return result;
+	}
+	HENHMETAFILE GetHENHMETAFILE()
+	{
+		HENHMETAFILE result = NULL;
+		updateStatus(DllExports::GdipGetHemfFromMetafile(
+				(GpMetafile*) nativeImage, &result));
+		return result;
+	}
+	Status GetMetafileHeader(MetafileHeader *header) const
+	{
+		return updateStatus(DllExports::GdipGetMetafileHeaderFromMetafile(
+				(GpMetafile*) nativeImage, header));
+	}
+	Status PlayRecord(EmfPlusRecordType recordType, UINT flags,
+			UINT dataSize, const BYTE *data) const
+	{
+		return updateStatus(DllExports::GdipPlayMetafileRecord(
+				(GpMetafile*) nativeImage,
+				recordType, flags, dataSize, data));
+	}
+	Status SetDownLevelRasterizationLimit(UINT limitDpi)
+	{
+		return updateStatus(DllExports::GdipSetMetafileDownLevelRasterizationLimit(
+				(GpMetafile*) nativeImage, limitDpi));
+	}
+
+private:
+	Metafile(GpImage *image, Status status): Image(image, status) {}
+	Metafile(const Metafile&);
+	Metafile& operator=(const Metafile&);
+};
+
+#endif /* __GDIPLUS_METAFILE_H */
Index: Daodan/MinGW/include/gdiplus/gdiplusmetaheader.h
===================================================================
--- Daodan/MinGW/include/gdiplus/gdiplusmetaheader.h	(revision 1046)
+++ Daodan/MinGW/include/gdiplus/gdiplusmetaheader.h	(revision 1046)
@@ -0,0 +1,193 @@
+/*
+ * gdiplusmetaheader.h
+ *
+ * GDI+ metafile header structure
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Markus Koenig <markus@stber-koenig.de>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __GDIPLUS_METAHEADER_H
+#define __GDIPLUS_METAHEADER_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+
+/*
+ * FIXME: is 1 the correct value for GDIP_EMFPLUSFLAGS_DISPLAY? This number
+ * has been determined by calling Metafile::GetMetafileHeader() on a EMF+
+ * metafile which was recorded on a display device context (SampleMetafile.emf).
+ */
+#ifdef __cplusplus
+const UINT GDIP_EMFPLUSFLAGS_DISPLAY = 1;
+#else
+#define GDIP_EMFPLUSFLAGS_DISPLAY ((UINT) 1)
+#endif
+
+typedef struct tagENHMETAHEADER3 {
+	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;
+} ENHMETAHEADER3,*LPENHMETAHEADER3;
+
+typedef struct PWMFRect16 {
+	INT16 Left;
+	INT16 Top;
+	INT16 Right;
+	INT16 Bottom;
+} PWMFRect16;
+
+typedef struct WmfPlaceableFileHeader {
+	UINT32 Key;
+	INT16 Hmf;
+	PWMFRect16 BoundingBox;
+	INT16 Inch;
+	UINT32 Reserved;
+	INT16 Checksum;
+} WmfPlaceableFileHeader;
+
+typedef struct MetafileHeader {
+	MetafileType Type;
+	UINT Size;
+	UINT Version;
+	UINT EmfPlusFlags;
+	REAL DpiX;
+	REAL DpiY;
+	INT X;
+	INT Y;
+	INT Width;
+	INT Height;
+	__extension__ union {
+		METAHEADER WmfHeader;
+		ENHMETAHEADER3 EmfHeader;
+	};
+	INT EmfPlusHeaderSize;
+	INT LogicalDpiX;
+	INT LogicalDpiY;
+
+	#ifdef __cplusplus
+	public:
+	void GetBounds(Rect *rect) const
+	{
+		if (rect)
+		{
+			rect->X = X;
+			rect->Y = Y;
+			rect->Width = Width;
+			rect->Height = Height;
+		}
+	}
+	REAL GetDpiX() const
+	{
+		return DpiX;
+	}
+	REAL GetDpiY() const
+	{
+		return DpiY;
+	}
+	const ENHMETAHEADER3* GetEmfHeader() const
+	{
+		if (Type == MetafileTypeEmf
+				|| Type == MetafileTypeEmfPlusOnly
+				|| Type == MetafileTypeEmfPlusDual)
+		{
+			return &EmfHeader;
+		}
+		else
+		{
+			return NULL;
+		}
+	}
+	UINT GetEmfPlusFlags() const
+	{
+		return EmfPlusFlags;
+	}
+	UINT GetMetafileSize() const
+	{
+		return Size;
+	}
+	MetafileType GetType() const
+	{
+		return Type;
+	}
+	UINT GetVersion() const
+	{
+		return Version;
+	}
+	const METAHEADER* GetWmfHeader() const
+	{
+		if (Type == MetafileTypeWmf || Type == MetafileTypeWmfPlaceable)
+		{
+			return &WmfHeader;
+		}
+		else
+		{
+			return NULL;
+		}
+	}
+	BOOL IsDisplay() const
+	{
+		return EmfPlusFlags == GDIP_EMFPLUSFLAGS_DISPLAY;
+	}
+	BOOL IsEmf() const
+	{
+		return Type == MetafileTypeEmf;
+	}
+	BOOL IsEmfOrEmfPlus() const
+	{
+		return Type == MetafileTypeEmf
+			|| Type == MetafileTypeEmfPlusOnly
+			|| Type == MetafileTypeEmfPlusDual;
+	}
+	BOOL IsEmfPlus() const
+	{
+		return Type == MetafileTypeEmfPlusOnly
+			|| Type == MetafileTypeEmfPlusDual;
+	}
+	BOOL IsEmfPlusDual() const
+	{
+		return Type == MetafileTypeEmfPlusDual;
+	}
+	BOOL IsEmfPlusOnly() const
+	{
+		return Type == MetafileTypeEmfPlusOnly;
+	}
+	BOOL IsWmf() const
+	{
+		return Type == MetafileTypeWmf
+			|| Type == MetafileTypeWmfPlaceable;
+	}
+	BOOL IsWmfPlaceable() const
+	{
+		return Type == MetafileTypeWmfPlaceable;
+	}
+	#endif
+} MetafileHeader;
+
+#endif /* __GDIPLUS_METAHEADER_H */
Index: Daodan/MinGW/include/gdiplus/gdipluspath.h
===================================================================
--- Daodan/MinGW/include/gdiplus/gdipluspath.h	(revision 1046)
+++ Daodan/MinGW/include/gdiplus/gdipluspath.h	(revision 1046)
@@ -0,0 +1,964 @@
+/*
+ * gdipluspath.h
+ *
+ * GDI+ GraphicsPath class
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Markus Koenig <markus@stber-koenig.de>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __GDIPLUS_PATH_H
+#define __GDIPLUS_PATH_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifndef __cplusplus
+#error "A C++ compiler is required to include gdipluspath.h."
+#endif
+
+// Note that some methods of GraphicsPath are implemented in gdiplusimpl.h.
+// This avoids a cyclic dependency on Graphics and Pen.
+
+class GraphicsPath: public GdiplusBase
+{
+	friend class CustomLineCap;
+	friend class Graphics;
+	friend class GraphicsPathIterator;
+	friend class PathGradientBrush;
+	friend class Region;
+
+public:
+	GraphicsPath(FillMode fillMode = FillModeAlternate):
+			nativePath(NULL), lastStatus(Ok)
+	{
+		lastStatus = DllExports::GdipCreatePath(fillMode, &nativePath);
+	}
+	GraphicsPath(const PointF *points, const BYTE *types, INT count,
+			FillMode fillMode = FillModeAlternate):
+			nativePath(NULL), lastStatus(Ok)
+	{
+		lastStatus = DllExports::GdipCreatePath2(
+				points, types, count, fillMode, &nativePath);
+	}
+	GraphicsPath(const Point *points, const BYTE *types, INT count,
+			FillMode fillMode = FillModeAlternate):
+			nativePath(NULL), lastStatus(Ok)
+	{
+		lastStatus = DllExports::GdipCreatePath2I(
+				points, types, count, fillMode, &nativePath);
+	}
+	~GraphicsPath()
+	{
+		DllExports::GdipDeletePath(nativePath);
+	}
+	GraphicsPath* Clone() const
+	{
+		GpPath *clonePath = NULL;
+		Status status = updateStatus(DllExports::GdipClonePath(
+				nativePath, &clonePath));
+		if (status == Ok) {
+			GraphicsPath *result = new GraphicsPath(clonePath, lastStatus);
+			if (!result) {
+				DllExports::GdipDeletePath(clonePath);
+				lastStatus = OutOfMemory;
+			}
+			return result;
+		} else {
+			return NULL;
+		}
+	}
+
+	Status AddArc(REAL x, REAL y, REAL width, REAL height,
+			REAL startAngle, REAL sweepAngle)
+	{
+		return updateStatus(DllExports::GdipAddPathArc(nativePath,
+				x, y, width, height, startAngle, sweepAngle));
+	}
+	Status AddArc(INT x, INT y, INT width, INT height,
+			REAL startAngle, REAL sweepAngle)
+	{
+		return updateStatus(DllExports::GdipAddPathArcI(nativePath,
+				x, y, width, height, startAngle, sweepAngle));
+	}
+	Status AddArc(const RectF& rect, REAL startAngle, REAL sweepAngle)
+	{
+		return updateStatus(DllExports::GdipAddPathArc(nativePath,
+				rect.X, rect.Y, rect.Width, rect.Height,
+				startAngle, sweepAngle));
+	}
+	Status AddArc(const Rect& rect, REAL startAngle, REAL sweepAngle)
+	{
+		return updateStatus(DllExports::GdipAddPathArcI(nativePath,
+				rect.X, rect.Y, rect.Width, rect.Height,
+				startAngle, sweepAngle));
+	}
+	Status AddBezier(REAL x1, REAL y1, REAL x2, REAL y2,
+			REAL x3, REAL y3, REAL x4, REAL y4)
+	{
+		return updateStatus(DllExports::GdipAddPathBezier(nativePath,
+				x1, y1, x2, y2, x3, y3, x4, y4));
+	}
+	Status AddBezier(INT x1, INT y1, INT x2, INT y2,
+			INT x3, INT y3, INT x4, INT y4)
+	{
+		return updateStatus(DllExports::GdipAddPathBezierI(nativePath,
+				x1, y1, x2, y2, x3, y3, x4, y4));
+	}
+	Status AddBezier(const PointF& pt1, const PointF& pt2,
+			const PointF& pt3, const PointF& pt4)
+	{
+		return updateStatus(DllExports::GdipAddPathBezier(nativePath,
+				pt1.X, pt1.Y, pt2.X, pt2.Y,
+				pt3.X, pt3.Y, pt4.X, pt4.Y));
+	}
+	Status AddBezier(const Point& pt1, const Point& pt2,
+			const Point& pt3, const Point& pt4)
+	{
+		return updateStatus(DllExports::GdipAddPathBezierI(nativePath,
+				pt1.X, pt1.Y, pt2.X, pt2.Y,
+				pt3.X, pt3.Y, pt4.X, pt4.Y));
+	}
+	Status AddBeziers(const PointF *points, INT count)
+	{
+		return updateStatus(DllExports::GdipAddPathBeziers(
+				nativePath, points, count));
+	}
+	Status AddBeziers(const Point *points, INT count)
+	{
+		return updateStatus(DllExports::GdipAddPathBeziersI(
+				nativePath, points, count));
+	}
+	Status AddClosedCurve(const PointF *points, INT count)
+	{
+		return updateStatus(DllExports::GdipAddPathClosedCurve(
+				nativePath, points, count));
+	}
+	Status AddClosedCurve(const Point *points, INT count)
+	{
+		return updateStatus(DllExports::GdipAddPathClosedCurveI(
+				nativePath, points, count));
+	}
+	Status AddClosedCurve(const PointF *points, INT count, REAL tension)
+	{
+		return updateStatus(DllExports::GdipAddPathClosedCurve2(
+				nativePath, points, count, tension));
+	}
+	Status AddClosedCurve(const Point *points, INT count, REAL tension)
+	{
+		return updateStatus(DllExports::GdipAddPathClosedCurve2I(
+				nativePath, points, count, tension));
+	}
+	Status AddCurve(const PointF *points, INT count)
+	{
+		return updateStatus(DllExports::GdipAddPathCurve(
+				nativePath, points, count));
+	}
+	Status AddCurve(const Point *points, INT count)
+	{
+		return updateStatus(DllExports::GdipAddPathCurveI(
+				nativePath, points, count));
+	}
+	Status AddCurve(const PointF *points, INT count, REAL tension)
+	{
+		return updateStatus(DllExports::GdipAddPathCurve2(
+				nativePath, points, count, tension));
+	}
+	Status AddCurve(const Point *points, INT count, REAL tension)
+	{
+		return updateStatus(DllExports::GdipAddPathCurve2I(
+				nativePath, points, count, tension));
+	}
+	Status AddCurve(const PointF *points, INT count, INT offset,
+			INT numberOfSegments, REAL tension)
+	{
+		return updateStatus(DllExports::GdipAddPathCurve3(
+				nativePath, points, count,
+				offset, numberOfSegments, tension));
+	}
+	Status AddCurve(const Point *points, INT count, INT offset,
+			INT numberOfSegments, REAL tension)
+	{
+		return updateStatus(DllExports::GdipAddPathCurve3I(
+				nativePath, points, count,
+				offset, numberOfSegments, tension));
+	}
+	Status AddEllipse(REAL x, REAL y, REAL width, REAL height)
+	{
+		return updateStatus(DllExports::GdipAddPathEllipse(nativePath,
+				x, y, width, height));
+	}
+	Status AddEllipse(INT x, INT y, INT width, INT height)
+	{
+		return updateStatus(DllExports::GdipAddPathEllipseI(nativePath,
+				x, y, width, height));
+	}
+	Status AddEllipse(const RectF& rect)
+	{
+		return updateStatus(DllExports::GdipAddPathEllipse(nativePath,
+				rect.X, rect.Y, rect.Width, rect.Height));
+	}
+	Status AddEllipse(const Rect& rect)
+	{
+		return updateStatus(DllExports::GdipAddPathEllipseI(nativePath,
+				rect.X, rect.Y, rect.Width, rect.Height));
+	}
+	Status AddLine(REAL x1, REAL y1, REAL x2, REAL y2)
+	{
+		return updateStatus(DllExports::GdipAddPathLine(nativePath,
+				x1, y1, x2, y2));
+	}
+	Status AddLine(INT x1, INT y1, INT x2, INT y2)
+	{
+		return updateStatus(DllExports::GdipAddPathLineI(nativePath,
+				x1, y1, x2, y2));
+	}
+	Status AddLine(const PointF& pt1, const PointF& pt2)
+	{
+		return updateStatus(DllExports::GdipAddPathLine(nativePath,
+				pt1.X, pt1.Y, pt2.X, pt2.Y));
+	}
+	Status AddLine(const Point& pt1, const Point& pt2)
+	{
+		return updateStatus(DllExports::GdipAddPathLineI(nativePath,
+				pt1.X, pt1.Y, pt2.X, pt2.Y));
+	}
+	Status AddLines(const PointF *points, INT count)
+	{
+		return updateStatus(DllExports::GdipAddPathLine2(nativePath,
+				points, count));
+	}
+	Status AddLines(const Point *points, INT count)
+	{
+		return updateStatus(DllExports::GdipAddPathLine2I(nativePath,
+				points, count));
+	}
+	Status AddPath(const GraphicsPath *addingPath, BOOL connect)
+	{
+		return updateStatus(DllExports::GdipAddPathPath(nativePath,
+				addingPath ? addingPath->nativePath : NULL,
+				connect));
+	}
+	Status AddPie(REAL x, REAL y, REAL width, REAL height,
+			REAL startAngle, REAL sweepAngle)
+	{
+		return updateStatus(DllExports::GdipAddPathPie(nativePath,
+				x, y, width, height, startAngle, sweepAngle));
+	}
+	Status AddPie(INT x, INT y, INT width, INT height,
+			REAL startAngle, REAL sweepAngle)
+	{
+		return updateStatus(DllExports::GdipAddPathPieI(nativePath,
+				x, y, width, height, startAngle, sweepAngle));
+	}
+	Status AddPie(const RectF& rect, REAL startAngle, REAL sweepAngle)
+	{
+		return updateStatus(DllExports::GdipAddPathPie(nativePath,
+				rect.X, rect.Y, rect.Width, rect.Height,
+				startAngle, sweepAngle));
+	}
+	Status AddPie(const Rect& rect, REAL startAngle, REAL sweepAngle)
+	{
+		return updateStatus(DllExports::GdipAddPathPieI(nativePath,
+				rect.X, rect.Y, rect.Width, rect.Height,
+				startAngle, sweepAngle));
+	}
+	Status AddPolygon(const PointF *points, INT count)
+	{
+		return updateStatus(DllExports::GdipAddPathPolygon(nativePath,
+				points, count));
+	}
+	Status AddPolygon(const Point *points, INT count)
+	{
+		return updateStatus(DllExports::GdipAddPathPolygonI(nativePath,
+				points, count));
+	}
+	Status AddRectangle(const RectF& rect)
+	{
+		return updateStatus(DllExports::GdipAddPathRectangle(nativePath,
+				rect.X, rect.Y, rect.Width, rect.Height));
+	}
+	Status AddRectangle(const Rect& rect)
+	{
+		return updateStatus(DllExports::GdipAddPathRectangleI(
+				nativePath,
+				rect.X, rect.Y, rect.Width, rect.Height));
+	}
+	Status AddRectangles(const RectF *rects, INT count)
+	{
+		return updateStatus(DllExports::GdipAddPathRectangles(
+				nativePath, rects, count));
+	}
+	Status AddRectangles(const Rect *rects, INT count)
+	{
+		return updateStatus(DllExports::GdipAddPathRectanglesI(
+				nativePath, rects, count));
+	}
+	Status AddString(const WCHAR *string, INT length,
+			const FontFamily *family, INT style, REAL emSize,
+			const PointF& origin, const StringFormat *format)
+	{
+		RectF layoutRect(origin, SizeF(0.0f, 0.0f));
+		return updateStatus(DllExports::GdipAddPathString(nativePath,
+				string, length,
+				family ? family->nativeFontFamily : NULL,
+				style, emSize, &layoutRect,
+				format ? format->nativeStringFormat : NULL));
+	}
+	Status AddString(const WCHAR *string, INT length,
+			const FontFamily *family, INT style, REAL emSize,
+			const Point& origin, const StringFormat *format)
+	{
+		Rect layoutRect(origin, Size(0, 0));
+		return updateStatus(DllExports::GdipAddPathStringI(nativePath,
+				string, length,
+				family ? family->nativeFontFamily : NULL,
+				style, emSize, &layoutRect,
+				format ? format->nativeStringFormat : NULL));
+	}
+	Status AddString(const WCHAR *string, INT length,
+			const FontFamily *family, INT style, REAL emSize,
+			const RectF& layoutRect, const StringFormat *format)
+	{
+		return updateStatus(DllExports::GdipAddPathString(nativePath,
+				string, length,
+				family ? family->nativeFontFamily : NULL,
+				style, emSize, &layoutRect,
+				format ? format->nativeStringFormat : NULL));
+	}
+	Status AddString(const WCHAR *string, INT length,
+			const FontFamily *family, INT style, REAL emSize,
+			const Rect& layoutRect, const StringFormat *format)
+	{
+		return updateStatus(DllExports::GdipAddPathStringI(nativePath,
+				string, length,
+				family ? family->nativeFontFamily : NULL,
+				style, emSize, &layoutRect,
+				format ? format->nativeStringFormat : NULL));
+	}
+	Status ClearMarkers()
+	{
+		return updateStatus(DllExports::GdipClearPathMarkers(
+				nativePath));
+	}
+	Status CloseAllFigures()
+	{
+		return updateStatus(DllExports::GdipClosePathFigures(
+				nativePath));
+	}
+	Status CloseFigure()
+	{
+		return updateStatus(DllExports::GdipClosePathFigure(
+				nativePath));
+	}
+	Status Flatten(const Matrix *matrix = NULL,
+			REAL flatness = FlatnessDefault)
+	{
+		return updateStatus(DllExports::GdipFlattenPath(nativePath,
+				matrix ? matrix->nativeMatrix : NULL,
+				flatness));
+	}
+	Status GetBounds(RectF *bounds, const Matrix *matrix = NULL,
+			const Pen *pen = NULL) const
+	{
+		return updateStatus(DllExports::GdipGetPathWorldBounds(
+				nativePath, bounds,
+				matrix ? matrix->nativeMatrix : NULL,
+				pen ? pen->nativePen : NULL));
+	}
+	Status GetBounds(Rect *bounds, const Matrix *matrix = NULL,
+			const Pen *pen = NULL) const
+	{
+		return updateStatus(DllExports::GdipGetPathWorldBoundsI(
+				nativePath, bounds,
+				matrix ? matrix->nativeMatrix : NULL,
+				pen ? pen->nativePen : NULL));
+	}	
+	FillMode GetFillMode() const
+	{
+		FillMode result = FillModeAlternate;
+		updateStatus(DllExports::GdipGetPathFillMode(nativePath,
+				&result));
+		return result;
+	}
+	Status GetLastPoint(PointF *lastPoint) const
+	{
+		return updateStatus(DllExports::GdipGetPathLastPoint(
+				nativePath, lastPoint));
+	}
+	Status GetLastStatus() const
+	{
+		Status result = lastStatus;
+		lastStatus = Ok;
+		return result;
+	}
+	Status GetPathData(PathData *pathData) const
+	{
+		if (!pathData) return lastStatus = InvalidParameter;
+
+		Status status;
+		INT count;
+
+		status = updateStatus(DllExports::GdipGetPointCount(
+				nativePath, &count));
+		if (status != Ok) return status;
+
+		status = updateStatus(pathData->AllocateArrays(count));
+		if (status != Ok) return status;
+
+		return updateStatus(DllExports::GdipGetPathData(
+				nativePath, (GpPathData*) pathData));
+	}
+	Status GetPathPoints(PointF *points, INT count) const
+	{
+		return updateStatus(DllExports::GdipGetPathPoints(nativePath,
+				points, count));
+	}
+	Status GetPathPoints(Point *points, INT count) const
+	{
+		return updateStatus(DllExports::GdipGetPathPointsI(nativePath,
+				points, count));
+	}
+	Status GetPathTypes(BYTE *types, INT count) const
+	{
+		return updateStatus(DllExports::GdipGetPathTypes(nativePath,
+				types, count));
+	}
+	INT GetPointCount() const
+	{
+		INT result = 0;
+		updateStatus(DllExports::GdipGetPointCount(nativePath,
+				&result));
+		return result;
+	}
+	BOOL IsOutlineVisible(REAL x, REAL y, const Pen *pen,
+			const Graphics *g = NULL) const;
+	BOOL IsOutlineVisible(INT x, INT y, const Pen *pen,
+			const Graphics *g = NULL) const;
+	BOOL IsOutlineVisible(const PointF& point, const Pen *pen,
+			const Graphics *g = NULL) const;
+	BOOL IsOutlineVisible(const Point& point, const Pen *pen,
+			const Graphics *g = NULL) const;
+	BOOL IsVisible(REAL x, REAL y, const Graphics *g = NULL) const;
+	BOOL IsVisible(INT x, INT y, const Graphics *g = NULL) const;
+	BOOL IsVisible(const PointF& point, const Graphics *g = NULL) const;
+	BOOL IsVisible(const Point& point, const Graphics *g = NULL) const;
+	Status Outline(const Matrix *matrix = NULL,
+			REAL flatness = FlatnessDefault)
+	{
+		return updateStatus(DllExports::GdipWindingModeOutline(
+				nativePath,
+				matrix ? matrix->nativeMatrix : NULL,
+				flatness));
+	}
+	Status Reset()
+	{
+		return updateStatus(DllExports::GdipResetPath(nativePath));
+	}
+	Status Reverse()
+	{
+		return updateStatus(DllExports::GdipReversePath(nativePath));
+	}
+	Status SetFillMode(FillMode fillMode)
+	{
+		return updateStatus(DllExports::GdipSetPathFillMode(
+				nativePath, fillMode));
+	}
+	Status SetMarker()
+	{
+		return updateStatus(DllExports::GdipSetPathMarker(nativePath));
+	}
+	Status StartFigure()
+	{
+		return updateStatus(DllExports::GdipStartPathFigure(
+				nativePath));
+	}
+	Status Transform(const Matrix *matrix)
+	{
+		return updateStatus(DllExports::GdipTransformPath(
+				nativePath,
+				matrix ? matrix->nativeMatrix : NULL));
+	}
+	Status Warp(const PointF *destPoints, INT count, const RectF& srcRect,
+			const Matrix *matrix = NULL,
+			WarpMode warpMode = WarpModePerspective,
+			REAL flatness = FlatnessDefault)
+	{
+		return updateStatus(DllExports::GdipWarpPath(nativePath,
+				matrix ? matrix->nativeMatrix : NULL,
+				destPoints, count,
+				srcRect.X, srcRect.Y,
+				srcRect.Width, srcRect.Height,
+				warpMode, flatness));
+	}
+	Status Widen(const Pen *pen, const Matrix *matrix = NULL,
+			REAL flatness = FlatnessDefault)
+	{
+		return updateStatus(DllExports::GdipWidenPath(nativePath,
+				pen ? pen->nativePen : NULL,
+				matrix ? matrix->nativeMatrix : NULL,
+				flatness));
+	}
+
+private:
+	GraphicsPath(GpPath *path, Status status):
+		nativePath(path), lastStatus(status) {}
+	GraphicsPath(const GraphicsPath&);
+	GraphicsPath& operator=(const GraphicsPath&);
+
+	Status updateStatus(Status newStatus) const
+	{
+		if (newStatus != Ok) lastStatus = newStatus;
+		return newStatus;
+	}
+
+	GpPath *nativePath;
+	mutable Status lastStatus;
+};
+
+class GraphicsPathIterator: public GdiplusBase
+{
+public:
+	GraphicsPathIterator(GraphicsPath *path):
+		nativePathIterator(NULL), lastStatus(Ok)
+	{
+		lastStatus = DllExports::GdipCreatePathIter(
+				&nativePathIterator,
+				path ? path->nativePath : NULL);
+	}
+	~GraphicsPathIterator()
+	{
+		DllExports::GdipDeletePathIter(nativePathIterator);
+	}
+
+	INT CopyData(PointF *points, BYTE *types, INT startIndex, INT endIndex)
+	{
+		INT result = 0;
+		updateStatus(DllExports::GdipPathIterCopyData(
+				nativePathIterator, &result,
+				points, types, startIndex, endIndex));
+		return result;
+	}
+	INT Enumerate(PointF *points, BYTE *types, INT count)
+	{
+		INT result = 0;
+		updateStatus(DllExports::GdipPathIterEnumerate(
+				nativePathIterator, &result,
+				points, types, count));
+		return result;
+	}
+	INT GetCount() const
+	{
+		INT result = 0;
+		updateStatus(DllExports::GdipPathIterGetCount(
+				nativePathIterator, &result));
+		return result;
+	}
+	Status GetLastStatus() const
+	{
+		Status result = lastStatus;
+		lastStatus = Ok;
+		return result;
+	}
+	INT GetSubpathCount() const
+	{
+		INT result = 0;
+		updateStatus(DllExports::GdipPathIterGetSubpathCount(
+				nativePathIterator, &result));
+		return result;
+	}
+	BOOL HasCurve() const
+	{
+		BOOL result = FALSE;
+		updateStatus(DllExports::GdipPathIterHasCurve(
+				nativePathIterator, &result));
+		return result;
+	}
+	INT NextMarker(INT *startIndex, INT *endIndex)
+	{
+		INT result = 0;
+		updateStatus(DllExports::GdipPathIterNextMarker(
+				nativePathIterator, &result,
+				startIndex, endIndex));
+		return result;
+	}
+	INT NextMarker(GraphicsPath *path)
+	{
+		INT result = 0;
+		updateStatus(DllExports::GdipPathIterNextMarkerPath(
+				nativePathIterator, &result,
+				path ? path->nativePath : NULL));
+		return result;
+	}
+	INT NextPathType(BYTE *pathType, INT *startIndex, INT *endIndex)
+	{
+		INT result = 0;
+		updateStatus(DllExports::GdipPathIterNextPathType(
+				nativePathIterator, &result,
+				pathType, startIndex, endIndex));
+		return result;
+	}
+	INT NextSubpath(INT *startIndex, INT *endIndex, BOOL *isClosed)
+	{
+		INT result = 0;
+		updateStatus(DllExports::GdipPathIterNextSubpath(
+				nativePathIterator, &result,
+				startIndex, endIndex, isClosed));
+		return result;
+	}
+	INT NextSubpath(GraphicsPath *path, BOOL *isClosed)
+	{
+		INT result = 0;
+		updateStatus(DllExports::GdipPathIterNextSubpathPath(
+				nativePathIterator, &result,
+				path ? path->nativePath : NULL, isClosed));
+		return result;
+	}
+	VOID Rewind()
+	{
+		updateStatus(DllExports::GdipPathIterRewind(
+				nativePathIterator));
+	}
+
+private:
+	GraphicsPathIterator(GpPathIterator *pathIterator, Status status):
+		nativePathIterator(pathIterator), lastStatus(status) {}
+	GraphicsPathIterator(const GraphicsPathIterator&);
+	GraphicsPathIterator& operator=(const GraphicsPathIterator&);
+
+	Status updateStatus(Status newStatus) const
+	{
+		if (newStatus != Ok) lastStatus = newStatus;
+		return newStatus;
+	}
+
+	GpPathIterator *nativePathIterator;
+	mutable Status lastStatus;
+};
+
+class PathGradientBrush: public Brush
+{
+public:
+	PathGradientBrush(const PointF *points, INT count,
+			WrapMode wrapMode = WrapModeClamp)
+	{
+		GpPathGradient *nativePathGradient = NULL;
+		lastStatus = DllExports::GdipCreatePathGradient(
+				points, count, wrapMode, &nativePathGradient);
+		nativeBrush = nativePathGradient;
+	}
+	PathGradientBrush(const Point *points, INT count,
+			WrapMode wrapMode = WrapModeClamp)
+	{
+		GpPathGradient *nativePathGradient = NULL;
+		lastStatus = DllExports::GdipCreatePathGradientI(
+				points, count, wrapMode, &nativePathGradient);
+		nativeBrush = nativePathGradient;
+	}
+	PathGradientBrush(const GraphicsPath *path)
+	{
+		GpPathGradient *nativePathGradient = NULL;
+		lastStatus = DllExports::GdipCreatePathGradientFromPath(
+				path ? path->nativePath : NULL,
+				&nativePathGradient);
+		nativeBrush = nativePathGradient;
+	}
+	virtual PathGradientBrush *Clone() const
+	{
+		GpBrush *cloneBrush = NULL;
+		Status status = updateStatus(DllExports::GdipCloneBrush(
+				nativeBrush, &cloneBrush));
+		if (status == Ok) {
+			PathGradientBrush *result =
+				new PathGradientBrush(cloneBrush, lastStatus);
+			if (!result) {
+				DllExports::GdipDeleteBrush(cloneBrush);
+				updateStatus(OutOfMemory);
+			}
+			return result;
+		} else {
+			return NULL;
+		}
+	}
+
+	Status GetBlend(REAL *blendFactors, REAL *blendPositions,
+			INT count) const
+	{
+		return updateStatus(DllExports::GdipGetPathGradientBlend(
+				(GpPathGradient*) nativeBrush,
+				blendFactors, blendPositions, count));
+	}
+	INT GetBlendCount() const
+	{
+		INT result = 0;
+		updateStatus(DllExports::GdipGetPathGradientBlendCount(
+				(GpPathGradient*) nativeBrush, &result));
+		return result;
+	}
+	Status GetCenterColor(Color *color) const
+	{
+		return updateStatus(DllExports::GdipGetPathGradientCenterColor(
+				(GpPathGradient*) nativeBrush,
+				color ? &color->Value : NULL));
+	}
+	Status GetCenterPoint(PointF *point) const
+	{
+		return updateStatus(DllExports::GdipGetPathGradientCenterPoint(
+				(GpPathGradient*) nativeBrush, point));
+	}
+	Status GetCenterPoint(Point *point) const
+	{
+		return updateStatus(DllExports::GdipGetPathGradientCenterPointI(
+				(GpPathGradient*) nativeBrush, point));
+	}
+	Status GetFocusScales(REAL *xScale, REAL *yScale) const
+	{
+		return updateStatus(DllExports::GdipGetPathGradientFocusScales(
+				(GpPathGradient*) nativeBrush, xScale, yScale));
+	}
+	BOOL GetGammaCorrection() const
+	{
+		BOOL result = FALSE;
+		updateStatus(DllExports::GdipGetPathGradientGammaCorrection(
+				(GpPathGradient*) nativeBrush, &result));
+		return result;
+	}
+	//Status GetGraphicsPath(GraphicsPath *path) const
+	//{
+	//	// TODO: implement PathGradientBrush::GetGraphicsPath
+	//	return updateStatus(NotImplemented);
+	//}
+	INT GetInterpolationColorCount() const
+	{
+		INT result = 0;
+		updateStatus(DllExports::GdipGetPathGradientPresetBlendCount(
+				(GpPathGradient*) nativeBrush, &result));
+		return result;
+	}
+	Status GetInterpolationColors(Color *presetColors,
+			REAL *blendPositions, INT count) const
+	{
+		if (!presetColors || count <= 0)
+			return lastStatus = InvalidParameter;
+
+		ARGB *presetArgb =
+			(ARGB*) DllExports::GdipAlloc(count * sizeof(ARGB));
+		if (!presetArgb)
+			return lastStatus = OutOfMemory;
+
+		Status status = updateStatus(DllExports::GdipGetPathGradientPresetBlend(
+				(GpPathGradient*) nativeBrush,
+				presetArgb, blendPositions, count));
+		for (INT i = 0; i < count; ++i) {
+			presetColors[i].SetValue(presetArgb[i]);
+		}
+		DllExports::GdipFree((void*) presetArgb);
+		return status;
+	}
+	INT GetPointCount() const
+	{
+		INT result = 0;
+		updateStatus(DllExports::GdipGetPathGradientPointCount(
+				(GpPathGradient*) nativeBrush, &result));
+		return result;
+	}
+	Status GetRectangle(RectF *rect) const
+	{
+		return updateStatus(DllExports::GdipGetPathGradientRect(
+				(GpPathGradient*) nativeBrush, rect));
+	}
+	Status GetRectangle(Rect *rect) const
+	{
+		return updateStatus(DllExports::GdipGetPathGradientRectI(
+				(GpPathGradient*) nativeBrush, rect));
+	}
+	INT GetSurroundColorCount() const
+	{
+		INT result = 0;
+		updateStatus(DllExports::GdipGetPathGradientSurroundColorCount(
+				(GpPathGradient*) nativeBrush, &result));
+		return result;
+	}
+	Status GetSurroundColors(Color *colors, INT *count)
+	{
+		if (!colors || !count || *count <= 0)
+			return lastStatus = InvalidParameter;
+
+		ARGB *colorsArgb =
+			(ARGB*) DllExports::GdipAlloc(*count * sizeof(ARGB));
+		if (!colorsArgb)
+			return lastStatus = OutOfMemory;
+
+		Status status = updateStatus(DllExports::GdipGetPathGradientSurroundColorsWithCount(
+				(GpPathGradient*) nativeBrush,
+				colorsArgb, count));
+		for (INT i = 0; i < *count; ++i) {
+			colors[i].SetValue(colorsArgb[i]);
+		}
+		DllExports::GdipFree((void*) colorsArgb);
+		return status;
+	}
+	Status GetTransform(Matrix *matrix) const
+	{
+		return updateStatus(DllExports::GdipGetPathGradientTransform(
+				(GpPathGradient*) nativeBrush,
+				matrix ? matrix->nativeMatrix : NULL));
+	}
+	WrapMode GetWrapMode() const
+	{
+		WrapMode result = WrapModeTile;
+		updateStatus(DllExports::GdipGetPathGradientWrapMode(
+				(GpPathGradient*) nativeBrush, &result));
+		return result;
+	}
+	Status MultiplyTransform(const Matrix *matrix,
+			MatrixOrder order = MatrixOrderPrepend)
+	{
+		return updateStatus(DllExports::GdipMultiplyPathGradientTransform(
+				(GpPathGradient*) nativeBrush,
+				matrix ? matrix->nativeMatrix : NULL, order));
+	}
+	Status ResetTransform()
+	{
+		return updateStatus(DllExports::GdipResetPathGradientTransform(
+				(GpPathGradient*) nativeBrush));
+	}
+	Status RotateTransform(REAL angle,
+			MatrixOrder order = MatrixOrderPrepend)
+	{
+		return updateStatus(DllExports::GdipRotatePathGradientTransform(
+				(GpPathGradient*) nativeBrush, angle, order));
+	}
+	Status ScaleTransform(REAL sx, REAL sy,
+			MatrixOrder order = MatrixOrderPrepend)
+	{
+		return updateStatus(DllExports::GdipScalePathGradientTransform(
+				(GpPathGradient*) nativeBrush, sx, sy, order));
+	}
+	Status SetBlend(REAL *blendFactors, REAL *blendPositions, INT count)
+	{
+		return updateStatus(DllExports::GdipSetPathGradientBlend(
+				(GpPathGradient*) nativeBrush,
+				blendFactors, blendPositions, count));
+	}
+	Status SetBlendBellShape(REAL focus, REAL scale = 1.0f)
+	{
+		return updateStatus(DllExports::GdipSetPathGradientSigmaBlend(
+				(GpPathGradient*) nativeBrush, focus, scale));
+	}
+	Status SetBlendTriangularShape(REAL focus, REAL scale = 1.0f)
+	{
+		return updateStatus(DllExports::GdipSetPathGradientLinearBlend(
+				(GpPathGradient*) nativeBrush, focus, scale));
+	}
+	Status SetCenterColor(const Color& color)
+	{
+		return updateStatus(DllExports::GdipSetPathGradientCenterColor(
+				(GpPathGradient*) nativeBrush,
+				color.GetValue()));
+	}
+	Status SetCenterPoint(const PointF& point)
+	{
+		return updateStatus(DllExports::GdipSetPathGradientCenterPoint(
+				(GpPathGradient*) nativeBrush, &point));
+	}
+	Status SetCenterPoint(const Point& point)
+	{
+		return updateStatus(DllExports::GdipSetPathGradientCenterPointI(
+				(GpPathGradient*) nativeBrush, &point));
+	}
+	Status SetFocusScales(REAL xScale, REAL yScale)
+	{
+		return updateStatus(DllExports::GdipSetPathGradientFocusScales(
+				(GpPathGradient*) nativeBrush, xScale, yScale));
+	}
+	Status SetGammaCorrection(BOOL useGammaCorrection)
+	{
+		return updateStatus(DllExports::GdipSetPathGradientGammaCorrection(
+				(GpPathGradient*) nativeBrush,
+				useGammaCorrection));
+	}
+	//Status SetGraphicsPath(const GraphicsPath *path)
+	//{
+	//	// TODO: implement PathGradientBrush::SetGraphicsPath
+	//	return updateStatus(NotImplemented);
+	//}
+	Status SetInterpolationColors(const Color *presetColors,
+			REAL *blendPositions, INT count)
+	{
+		if (!presetColors || count <= 0)
+			return lastStatus = InvalidParameter;
+
+		ARGB *presetArgb =
+			(ARGB*) DllExports::GdipAlloc(count * sizeof(ARGB));
+		if (!presetArgb)
+			return lastStatus = OutOfMemory;
+		for (INT i = 0; i < count; ++i) {
+			presetArgb[i] = presetColors[i].GetValue();
+		}
+
+		Status status = updateStatus(DllExports::GdipSetPathGradientPresetBlend(
+				(GpPathGradient*) nativeBrush,
+				presetArgb, blendPositions, count));
+		DllExports::GdipFree((void*) presetArgb);
+		return status;
+	}
+	Status SetSurroundColors(const Color *colors, INT *count)
+	{
+		if (!colors || !count || *count <= 0)
+			return lastStatus = InvalidParameter;
+
+		ARGB *colorsArgb =
+			(ARGB*) DllExports::GdipAlloc(*count * sizeof(ARGB));
+		if (!colorsArgb)
+			return lastStatus = OutOfMemory;
+		for (INT i = 0; i < *count; ++i) {
+			colorsArgb[i] = colors[i].GetValue();
+		}
+
+		Status status = updateStatus(DllExports::GdipSetPathGradientSurroundColorsWithCount(
+				(GpPathGradient*) nativeBrush,
+				colorsArgb, count));
+		DllExports::GdipFree((void*) colorsArgb);
+		return status;
+	}
+	Status SetTransform(const Matrix *matrix)
+	{
+		return updateStatus(DllExports::GdipSetPathGradientTransform(
+				(GpPathGradient*) nativeBrush,
+				matrix ? matrix->nativeMatrix : NULL));
+	}
+	Status SetWrapMode(WrapMode wrapMode)
+	{
+		return updateStatus(DllExports::GdipSetPathGradientWrapMode(
+				(GpPathGradient*) nativeBrush, wrapMode));
+	}
+	Status TranslateTransform(REAL dx, REAL dy,
+			MatrixOrder order = MatrixOrderPrepend)
+	{
+		return updateStatus(DllExports::GdipTranslatePathGradientTransform(
+				(GpPathGradient*) nativeBrush, dx, dy, order));
+	}
+
+private:
+	PathGradientBrush(GpBrush *brush, Status status): Brush(brush, status) {}
+	PathGradientBrush(const PathGradientBrush&);
+	PathGradientBrush& operator=(const PathGradientBrush&);
+};
+
+
+
+#endif /* __GDIPLUS_PATH_H */
Index: Daodan/MinGW/include/gdiplus/gdipluspen.h
===================================================================
--- Daodan/MinGW/include/gdiplus/gdipluspen.h	(revision 1046)
+++ Daodan/MinGW/include/gdiplus/gdipluspen.h	(revision 1046)
@@ -0,0 +1,338 @@
+/*
+ * gdipluspen.h
+ *
+ * GDI+ Pen class
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Markus Koenig <markus@stber-koenig.de>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __GDIPLUS_PEN_H
+#define __GDIPLUS_PEN_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifndef __cplusplus
+#error "A C++ compiler is required to include gdipluspen.h."
+#endif
+
+class Pen: public GdiplusBase
+{
+	friend class Graphics;
+	friend class GraphicsPath;
+
+public:
+	Pen(const Color& color, REAL width = 1.0f):
+		nativePen(NULL), lastStatus(Ok)
+	{
+		lastStatus = DllExports::GdipCreatePen1(
+				color.GetValue(), width, UnitWorld,
+				&nativePen);
+	}
+	Pen(const Brush *brush, REAL width = 1.0f):
+		nativePen(NULL), lastStatus(Ok)
+	{
+		lastStatus = DllExports::GdipCreatePen2(
+				brush ? brush->nativeBrush : NULL,
+				width, UnitWorld, &nativePen);
+	}
+	~Pen()
+	{
+		DllExports::GdipDeletePen(nativePen);
+	}
+	Pen* Clone() const
+	{
+		GpPen *clonePen = NULL;
+		Status status = updateStatus(DllExports::GdipClonePen(
+				nativePen, &clonePen));
+		if (status == Ok) {
+			Pen *result = new Pen(clonePen, lastStatus);
+			if (!result) {
+				DllExports::GdipDeletePen(clonePen);
+				lastStatus = OutOfMemory;
+			}
+			return result;
+		} else {
+			return NULL;
+		}
+	}
+
+	PenAlignment GetAlignment() const
+	{
+		PenAlignment result = PenAlignmentCenter;
+		updateStatus(DllExports::GdipGetPenMode(nativePen, &result));
+		return result;
+	}
+	// TODO: implement Pen::GetBrush()
+	//Brush *GetBrush() const
+	//{
+	//	// where is the pen brush allocated (static,member,new,other)?
+	//	// GdipGetPenBrushFill just returns a GpBrush*
+	//	updateStatus(NotImplemented);
+	//	return NULL;
+	//}
+	Status GetColor(Color *color) const
+	{
+		return updateStatus(DllExports::GdipGetPenColor(
+				nativePen, color ? &color->Value : NULL));
+	}
+	Status GetCompoundArray(REAL *compoundArray, INT count) const
+	{
+		return updateStatus(DllExports::GdipGetPenCompoundArray(
+				nativePen, compoundArray, count));
+	}
+	INT GetCompoundArrayCount() const
+	{
+		INT result = 0;
+		updateStatus(DllExports::GdipGetPenCompoundCount(
+				nativePen, &result));
+		return result;
+	}
+	Status GetCustomEndCap(CustomLineCap *customCap) const
+	{
+		if (!customCap) return lastStatus = InvalidParameter;
+		// FIXME: do we need to call GdipDeleteCustomLineCap first?
+		return updateStatus(DllExports::GdipGetPenCustomEndCap(
+				nativePen, &customCap->nativeCustomLineCap));
+	}
+	Status GetCustomStartCap(CustomLineCap *customCap) const
+	{
+		if (!customCap) return lastStatus = InvalidParameter;
+		// FIXME: do we need to call GdipDeleteCustomLineCap first?
+		return updateStatus(DllExports::GdipGetPenCustomStartCap(
+				nativePen, &customCap->nativeCustomLineCap));
+	}
+	DashCap GetDashCap() const
+	{
+		DashCap result = DashCapFlat;
+		updateStatus(DllExports::GdipGetPenDashCap197819(
+				nativePen, &result));
+		return result;
+	}
+	REAL GetDashOffset() const
+	{
+		REAL result = 0.0f;
+		updateStatus(DllExports::GdipGetPenDashOffset(
+				nativePen, &result));
+		return result;
+	}
+	Status GetDashPattern(REAL *dashArray, INT count) const
+	{
+		return updateStatus(DllExports::GdipGetPenDashArray(
+				nativePen, dashArray, count));
+	}
+	INT GetDashPatternCount() const
+	{
+		INT result = 0;
+		updateStatus(DllExports::GdipGetPenDashCount(
+				nativePen, &result));
+		return result;
+	}
+	DashStyle GetDashStyle() const
+	{
+		DashStyle result = DashStyleSolid;
+		updateStatus(DllExports::GdipGetPenDashStyle(
+				nativePen, &result));
+		return result;
+	}
+	LineCap GetEndCap() const
+	{
+		LineCap result = LineCapFlat;
+		updateStatus(DllExports::GdipGetPenEndCap(nativePen, &result));
+		return result;
+	}
+	Status GetLastStatus() const
+	{
+		Status result = lastStatus;
+		lastStatus = Ok;
+		return result;
+	}
+	LineJoin GetLineJoin() const
+	{
+		LineJoin result = LineJoinMiter;
+		updateStatus(DllExports::GdipGetPenLineJoin(
+				nativePen, &result));
+		return result;
+	}
+	REAL GetMiterLimit() const
+	{
+		REAL result = 10.0f;
+		updateStatus(DllExports::GdipGetPenMiterLimit(
+				nativePen, &result));
+		return result;
+	}
+	PenType GetPenType() const
+	{
+		PenType result = PenTypeUnknown;
+		updateStatus(DllExports::GdipGetPenFillType(
+				nativePen, &result));
+		return result;
+	}
+	LineCap GetStartCap() const
+	{
+		LineCap result = LineCapFlat;
+		updateStatus(DllExports::GdipGetPenStartCap(
+				nativePen, &result));
+		return result;
+	}
+	Status GetTransform(Matrix *matrix) const
+	{
+		return updateStatus(DllExports::GdipGetPenTransform(
+				nativePen,
+				matrix ? matrix->nativeMatrix : NULL));
+	}
+	REAL GetWidth() const
+	{
+		REAL result = 1.0f;
+		updateStatus(DllExports::GdipGetPenWidth(nativePen, &result));
+		return result;
+	}
+	Status MultiplyTransform(const Matrix *matrix,
+			MatrixOrder order = MatrixOrderPrepend)
+	{
+		return updateStatus(DllExports::GdipMultiplyPenTransform(
+				nativePen,
+				matrix ? matrix->nativeMatrix : NULL, order));
+	}
+	Status ResetTransform()
+	{
+		return updateStatus(DllExports::GdipResetPenTransform(
+				nativePen));
+	}
+	Status RotateTransform(REAL angle,
+			MatrixOrder order = MatrixOrderPrepend)
+	{
+		return updateStatus(DllExports::GdipRotatePenTransform(
+				nativePen, angle, order));
+	}
+	Status ScaleTransform(REAL sx, REAL sy,
+			MatrixOrder order = MatrixOrderPrepend)
+	{
+		return updateStatus(DllExports::GdipScalePenTransform(
+				nativePen, sx, sy, order));
+	}
+	Status SetAlignment(PenAlignment penAlignment)
+	{
+		return updateStatus(DllExports::GdipSetPenMode(
+				nativePen, penAlignment));
+	}
+	Status SetBrush(const Brush *brush)
+	{
+		return updateStatus(DllExports::GdipSetPenBrushFill(
+				nativePen, brush ? brush->nativeBrush : NULL));
+	}
+	Status SetColor(const Color& color)
+	{
+		return updateStatus(DllExports::GdipSetPenColor(
+				nativePen, color.GetValue()));
+	}
+	Status SetCompoundArray(const REAL *compoundArray, INT count)
+	{
+		return updateStatus(DllExports::GdipSetPenCompoundArray(
+				nativePen, compoundArray, count));
+	}
+	Status SetCustomEndCap(const CustomLineCap *customCap)
+	{
+		return updateStatus(DllExports::GdipSetPenCustomEndCap(
+				nativePen,
+				customCap ? customCap->nativeCustomLineCap : NULL));
+	}
+	Status SetCustomStartCap(const CustomLineCap *customCap)
+	{
+		return updateStatus(DllExports::GdipSetPenCustomStartCap(
+				nativePen,
+				customCap ? customCap->nativeCustomLineCap : NULL));
+	}
+	Status SetDashCap(DashCap dashCap)
+	{
+		return updateStatus(DllExports::GdipSetPenDashCap197819(
+				nativePen, dashCap));
+	}
+	Status SetDashOffset(REAL dashOffset)
+	{
+		return updateStatus(DllExports::GdipSetPenDashOffset(
+				nativePen, dashOffset));
+	}
+	Status SetDashPattern(const REAL *dashArray, INT count)
+	{
+		return updateStatus(DllExports::GdipSetPenDashArray(
+				nativePen, dashArray, count));
+	}
+	Status SetDashStyle(DashStyle dashStyle)
+	{
+		return updateStatus(DllExports::GdipSetPenDashStyle(
+				nativePen, dashStyle));
+	}
+	Status SetEndCap(LineCap endCap)
+	{
+		return updateStatus(DllExports::GdipSetPenEndCap(
+				nativePen, endCap));
+	}
+	Status SetLineCap(LineCap startCap, LineCap endCap, DashCap dashCap)
+	{
+		return updateStatus(DllExports::GdipSetPenLineCap197819(
+				nativePen, startCap, endCap, dashCap));
+	}
+	Status SetLineJoin(LineJoin lineJoin)
+	{
+		return updateStatus(DllExports::GdipSetPenLineJoin(
+				nativePen, lineJoin));
+	}
+	Status SetMiterLimit(REAL miterLimit)
+	{
+		return updateStatus(DllExports::GdipSetPenMiterLimit(
+				nativePen, miterLimit));
+	}
+	Status SetStartCap(LineCap startCap)
+	{
+		return updateStatus(DllExports::GdipSetPenStartCap(
+				nativePen, startCap));
+	}
+	Status SetTransform(const Matrix *matrix)
+	{
+		return updateStatus(DllExports::GdipSetPenTransform(
+				nativePen,
+				matrix ? matrix->nativeMatrix : NULL));
+	}
+	Status SetWidth(REAL width)
+	{
+		return updateStatus(DllExports::GdipSetPenWidth(
+				nativePen, width));
+	}
+	Status TranslateTransform(REAL dx, REAL dy,
+			MatrixOrder order = MatrixOrderPrepend)
+	{
+		return updateStatus(DllExports::GdipTranslatePenTransform(
+				nativePen, dx, dy, order));
+	}
+
+private:
+	Pen(GpPen *pen, Status status): nativePen(pen), lastStatus(status) {}
+	Pen(const Pen& pen);
+	Pen& operator=(const Pen&);
+
+	Status updateStatus(Status newStatus) const
+	{
+		if (newStatus != Ok) lastStatus = newStatus;
+		return newStatus;
+	}
+
+	GpPen *nativePen;
+	mutable Status lastStatus;
+};
+
+#endif /* __GDIPLUS_PEN_H */
Index: Daodan/MinGW/include/gdiplus/gdipluspixelformats.h
===================================================================
--- Daodan/MinGW/include/gdiplus/gdipluspixelformats.h	(revision 1046)
+++ Daodan/MinGW/include/gdiplus/gdipluspixelformats.h	(revision 1046)
@@ -0,0 +1,120 @@
+/*
+ * gdipluspixelformats.h
+ *
+ * GDI+ pixel formats
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Markus Koenig <markus@stber-koenig.de>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __GDIPLUS_PIXELFORMATS_H
+#define __GDIPLUS_PIXELFORMATS_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+typedef DWORD ARGB;
+typedef INT PixelFormat;
+
+#define PixelFormatIndexed ((INT) 0x00010000)
+#define PixelFormatGDI ((INT) 0x00020000)
+#define PixelFormatAlpha ((INT) 0x00040000)
+#define PixelFormatPAlpha ((INT) 0x00080000)
+#define PixelFormatExtended ((INT) 0x00100000)
+#define PixelFormatCanonical ((INT) 0x00200000)
+#define PixelFormatUndefined ((INT) 0)
+#define PixelFormatDontCare ((INT) 0)
+#define PixelFormat1bppIndexed ((INT) \
+	(1 | (1<<8) | PixelFormatIndexed | PixelFormatGDI))
+#define PixelFormat4bppIndexed ((INT) \
+	(2 | (4<<8) | PixelFormatIndexed | PixelFormatGDI))
+#define PixelFormat8bppIndexed ((INT) \
+	(3 | (8<<8) | PixelFormatIndexed | PixelFormatGDI))
+#define PixelFormat16bppGrayScale ((INT) \
+	(4 | (16<<8) | PixelFormatExtended))
+#define PixelFormat16bppRGB555 ((INT) \
+	(5 | (16<<8) | PixelFormatGDI))
+#define PixelFormat16bppRGB565 ((INT) \
+	(6 | (16<<8) | PixelFormatGDI))
+#define PixelFormat16bppARGB1555 ((INT) \
+	(7 | (16<<8) | PixelFormatAlpha | PixelFormatGDI))
+#define PixelFormat24bppRGB ((INT) \
+	(8 | (24<<8) | PixelFormatGDI))
+#define PixelFormat32bppRGB ((INT) \
+	(9 | (32<<8) | PixelFormatGDI))
+#define PixelFormat32bppARGB ((INT) \
+	(10 | (32<<8) | PixelFormatAlpha | PixelFormatGDI | PixelFormatCanonical))
+#define PixelFormat32bppPARGB ((INT) \
+	(11 | (32<<8) | PixelFormatAlpha | PixelFormatPAlpha | PixelFormatGDI))
+#define PixelFormat48bppRGB ((INT) \
+	(12 | (48<<8) | PixelFormatExtended))
+#define PixelFormat64bppARGB ((INT) \
+	(13 | (64<<8) | PixelFormatAlpha | PixelFormatCanonical | PixelFormatExtended))
+#define PixelFormat64bppPARGB ((INT) \
+	(14 | (64<<8) | PixelFormatAlpha | PixelFormatPAlpha | PixelFormatExtended))
+#define PixelFormatMax ((INT) 15)
+
+typedef enum PaletteFlags {
+	PaletteFlagsHasAlpha = 1,
+	PaletteFlagsGrayScale = 2,
+	PaletteFlagsHalftone = 4
+} PaletteFlags;
+
+typedef enum PaletteType {
+	PaletteTypeCustom = 0,
+	PaletteTypeOptimal = 1,
+	PaletteTypeFixedBW = 2,
+	PaletteTypeFixedHalftone8 = 3,
+	PaletteTypeFixedHalftone27 = 4,
+	PaletteTypeFixedHalftone64 = 5,
+	PaletteTypeFixedHalftone125 = 6,
+	PaletteTypeFixedHalftone216 = 7,
+	PaletteTypeFixedHalftone252 = 8,
+	PaletteTypeFixedHalftone256 = 9
+} PaletteType;
+
+typedef struct ColorPalette {
+	UINT Flags;
+	UINT Count;
+	ARGB Entries[1];
+} ColorPalette;
+
+static __inline__ UINT GetPixelFormatSize(PixelFormat pixfmt)
+{
+	return (((UINT) pixfmt) & 0xff00U) >> 8;
+}
+
+static __inline__ BOOL IsAlphaPixelFormat(PixelFormat pixfmt)
+{
+	return (pixfmt & PixelFormatAlpha) != 0;
+}
+
+static __inline__ BOOL IsCanonicalPixelFormat(PixelFormat pixfmt)
+{
+	return (pixfmt & PixelFormatCanonical) != 0;
+}
+
+static __inline__ BOOL IsExtendedPixelFormat(PixelFormat pixfmt)
+{
+	return (pixfmt & PixelFormatExtended) != 0;
+}
+
+static __inline__ BOOL IsIndexedPixelFormat(PixelFormat pixfmt)
+{
+	return (pixfmt & PixelFormatIndexed) != 0;
+}
+
+#endif /* __GDIPLUS_PIXELFORMATS_H */
Index: Daodan/MinGW/include/gdiplus/gdiplusstringformat.h
===================================================================
--- Daodan/MinGW/include/gdiplus/gdiplusstringformat.h	(revision 1046)
+++ Daodan/MinGW/include/gdiplus/gdiplusstringformat.h	(revision 1046)
@@ -0,0 +1,251 @@
+/*
+ * gdiplusstringformat.h
+ *
+ * GDI+ StringFormat class
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Markus Koenig <markus@stber-koenig.de>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __GDIPLUS_STRINGFORMAT_H
+#define __GDIPLUS_STRINGFORMAT_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifndef __cplusplus
+#error "A C++ compiler is required to include gdiplusstringformat.h."
+#endif
+
+class StringFormat: public GdiplusBase
+{
+	friend class Graphics;
+	friend class GraphicsPath;
+
+public:
+	static const StringFormat* GenericDefault();
+	static const StringFormat* GenericTypographic();
+
+	StringFormat(INT formatFlags = 0, LANGID language = LANG_NEUTRAL):
+			nativeStringFormat(NULL), lastStatus(Ok)
+	{
+		lastStatus = DllExports::GdipCreateStringFormat(
+				formatFlags, language, &nativeStringFormat);
+	}
+	StringFormat(const StringFormat *format):
+			nativeStringFormat(NULL), lastStatus(Ok)
+	{
+		lastStatus = DllExports::GdipCloneStringFormat(
+				format ? format->nativeStringFormat : NULL,
+				&nativeStringFormat);
+	}
+	~StringFormat()
+	{
+		DllExports::GdipDeleteStringFormat(nativeStringFormat);
+	}
+	StringFormat* Clone() const
+	{
+		GpStringFormat *cloneStringFormat = NULL;
+		Status status = updateStatus(DllExports::GdipCloneStringFormat(
+				nativeStringFormat, &cloneStringFormat));
+		if (status == Ok) {
+			StringFormat *result = new StringFormat(
+					cloneStringFormat, lastStatus);
+			if (!result) {
+				DllExports::GdipDeleteStringFormat(cloneStringFormat);
+				lastStatus = OutOfMemory;
+			}
+			return result;
+		} else {
+			return NULL;
+		}
+	}
+
+	StringAlignment GetAlignment() const
+	{
+		StringAlignment result = StringAlignmentNear;
+		updateStatus(DllExports::GdipGetStringFormatAlign(
+				nativeStringFormat, &result));
+		return result;
+	}
+	LANGID GetDigitSubstitutionLanguage() const
+	{
+		LANGID result = 0;
+		StringDigitSubstitute method;
+		updateStatus(DllExports::GdipGetStringFormatDigitSubstitution(
+				nativeStringFormat, &result, &method));
+		return result;
+	}
+	StringDigitSubstitute GetDigitSubstitutionMethod() const
+	{
+		LANGID language;
+		StringDigitSubstitute result = StringDigitSubstituteUser;
+		updateStatus(DllExports::GdipGetStringFormatDigitSubstitution(
+				nativeStringFormat, &language, &result));
+		return result;
+	}
+	INT GetFormatFlags() const
+	{
+		INT result = 0;
+		updateStatus(DllExports::GdipGetStringFormatFlags(
+				nativeStringFormat, &result));
+		return result;
+	}
+	HotkeyPrefix GetHotkeyPrefix() const
+	{
+		HotkeyPrefix result = HotkeyPrefixNone;
+		updateStatus(DllExports::GdipGetStringFormatHotkeyPrefix(
+				nativeStringFormat, (INT*) &result));
+		return result;
+	}
+	Status GetLastStatus() const
+	{
+		Status result = lastStatus;
+		lastStatus = Ok;
+		return result;
+	}
+	StringAlignment GetLineAlignment() const
+	{
+		StringAlignment result = StringAlignmentNear;
+		updateStatus(DllExports::GdipGetStringFormatLineAlign(
+				nativeStringFormat, &result));
+		return result;
+	}
+	INT GetMeasurableCharacterRangeCount() const
+	{
+		INT result = 0;
+		updateStatus(DllExports::GdipGetStringFormatMeasurableCharacterRangeCount(
+				nativeStringFormat, &result));
+		return result;
+	}
+	INT GetTabStopCount() const
+	{
+		INT result = 0;
+		updateStatus(DllExports::GdipGetStringFormatTabStopCount(
+				nativeStringFormat, &result));
+		return result;
+	}
+	Status GetTabStops(INT count, REAL *firstTabOffset, REAL *tabStops)
+	{
+		return updateStatus(DllExports::GdipGetStringFormatTabStops(
+				nativeStringFormat, count,
+				firstTabOffset, tabStops));
+	}
+	StringTrimming GetTrimming() const
+	{
+		StringTrimming result = StringTrimmingNone;
+		updateStatus(DllExports::GdipGetStringFormatTrimming(
+				nativeStringFormat, &result));
+		return result;
+	}
+	Status SetAlignment(StringAlignment align)
+	{
+		return updateStatus(DllExports::GdipSetStringFormatAlign(
+				nativeStringFormat, align));
+	}
+	Status SetDigitSubstitution(LANGID language,
+			StringDigitSubstitute substitute)
+	{
+		return updateStatus(DllExports::GdipSetStringFormatDigitSubstitution(
+				nativeStringFormat, language, substitute));
+	}
+	Status SetFormatFlags(INT flags)
+	{
+		return updateStatus(DllExports::GdipSetStringFormatFlags(
+				nativeStringFormat, flags));
+	}
+	Status SetHotkeyPrefix(HotkeyPrefix hotkeyPrefix)
+	{
+		return updateStatus(DllExports::GdipSetStringFormatHotkeyPrefix(
+				nativeStringFormat, (INT) hotkeyPrefix));
+	}
+	Status SetLineAlignment(StringAlignment align)
+	{
+		return updateStatus(DllExports::GdipSetStringFormatLineAlign(
+				nativeStringFormat, align));
+	}
+	Status SetMeasurableCharacterRanges(INT rangeCount,
+			const CharacterRange *ranges)
+	{
+		return updateStatus(DllExports::GdipSetStringFormatMeasurableCharacterRanges(
+				nativeStringFormat, rangeCount, ranges));
+	}
+	Status SetTabStops(REAL firstTabOffset, INT count, const REAL *tabStops)
+	{
+		return updateStatus(DllExports::GdipSetStringFormatTabStops(
+				nativeStringFormat, firstTabOffset,
+				count, tabStops));
+	}
+	Status SetTrimming(StringTrimming trimming)
+	{
+		return updateStatus(DllExports::GdipSetStringFormatTrimming(
+				nativeStringFormat, trimming));
+	}
+
+private:
+	StringFormat(GpStringFormat *stringFormat, Status status):
+		nativeStringFormat(stringFormat), lastStatus(status) {}
+	StringFormat(const StringFormat&);
+	StringFormat& operator=(const StringFormat&);
+
+	Status updateStatus(Status newStatus) const
+	{
+		if (newStatus != Ok) lastStatus = newStatus;
+		return newStatus;
+	}
+
+	GpStringFormat *nativeStringFormat;
+	mutable Status lastStatus;
+};
+
+
+// FIXME: do StringFormat::GenericDefault() et al. need to be thread safe?
+// FIXME: maybe put this in gdiplus.c?
+
+extern "C" void *_GdipStringFormatCachedGenericDefault;
+extern "C" void *_GdipStringFormatCachedGenericTypographic;
+
+__inline__ const StringFormat* StringFormat::GenericDefault()
+{
+	if (!_GdipStringFormatCachedGenericDefault) {
+		GpStringFormat *nativeStringFormat = 0;
+		Status status = DllExports::GdipStringFormatGetGenericDefault(
+				&nativeStringFormat);
+		if (status == Ok && nativeStringFormat) {
+			_GdipStringFormatCachedGenericDefault = (void*)
+				new StringFormat(nativeStringFormat, Ok);
+		}
+	}
+	return (StringFormat*) _GdipStringFormatCachedGenericDefault;
+}
+
+__inline__ const StringFormat* StringFormat::GenericTypographic()
+{
+	if (!_GdipStringFormatCachedGenericTypographic) {
+		GpStringFormat *nativeStringFormat = 0;
+		Status status = DllExports::GdipStringFormatGetGenericTypographic(
+				&nativeStringFormat);
+		if (status == Ok && nativeStringFormat) {
+			_GdipStringFormatCachedGenericTypographic = (void*)
+				new StringFormat(nativeStringFormat, Ok);
+		}
+	}
+	return (StringFormat*) _GdipStringFormatCachedGenericTypographic;
+}
+
+
+
+#endif /* __GDIPLUS_STRINGFORMAT_H */
Index: Daodan/MinGW/include/gdiplus/gdiplustypes.h
===================================================================
--- Daodan/MinGW/include/gdiplus/gdiplustypes.h	(revision 1046)
+++ Daodan/MinGW/include/gdiplus/gdiplustypes.h	(revision 1046)
@@ -0,0 +1,456 @@
+/*
+ * gdiplustypes.h
+ *
+ * GDI+ basic type declarations
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Markus Koenig <markus@stber-koenig.de>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __GDIPLUS_TYPES_H
+#define __GDIPLUS_TYPES_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#define WINGDIPAPI __stdcall
+#define GDIPCONST const
+
+typedef enum GpStatus {
+	Ok = 0,
+	GenericError = 1,
+	InvalidParameter = 2,
+	OutOfMemory = 3,
+	ObjectBusy = 4,
+	InsufficientBuffer = 5,
+	NotImplemented = 6,
+	Win32Error = 7,
+	WrongState = 8,
+	Aborted = 9,
+	FileNotFound = 10,
+	ValueOverflow = 11,
+	AccessDenied = 12,
+	UnknownImageFormat = 13,
+	FontFamilyNotFound = 14,
+	FontStyleNotFound = 15,
+	NotTrueTypeFont = 16,
+	UnsupportedGdiplusVersion = 17,
+	GdiplusNotInitialized = 18,
+	PropertyNotFound = 19,
+	PropertyNotSupported = 20,
+	ProfileNotFound = 21
+} GpStatus;
+
+#ifdef __cplusplus
+typedef GpStatus Status;
+#endif
+
+typedef struct Size {
+	INT Width;
+	INT Height;
+
+	#ifdef __cplusplus
+	Size(): Width(0), Height(0) {}
+	Size(INT width, INT height): Width(width), Height(height) {}
+	Size(const Size& size): Width(size.Width), Height(size.Height) {}
+	
+	BOOL Empty() const {
+		return Width == 0 && Height == 0;
+	}
+	BOOL Equals(const Size& size) const {
+		return Width == size.Width && Height == size.Height;
+	}
+	Size operator+(const Size& size) const {
+		return Size(Width + size.Width, Height + size.Height);
+	}
+	Size operator-(const Size& size) const {
+		return Size(Width - size.Width, Height - size.Height);
+	}
+	#endif /* __cplusplus */
+} Size;
+
+typedef struct SizeF {
+	REAL Width;
+	REAL Height;
+
+	#ifdef __cplusplus
+	SizeF(): Width(0.0f), Height(0.0f) {}
+	SizeF(REAL width, REAL height): Width(width), Height(height) {}
+	SizeF(const SizeF& size): Width(size.Width), Height(size.Height) {}
+	
+	BOOL Empty() const {
+		return Width == 0.0f && Height == 0.0f;
+	}
+	BOOL Equals(const SizeF& size) const {
+		return Width == size.Width && Height == size.Height;
+	}
+	SizeF operator+(const SizeF& size) const {
+		return SizeF(Width + size.Width, Height + size.Height);
+	}
+	SizeF operator-(const SizeF& size) const {
+		return SizeF(Width - size.Width, Height - size.Height);
+	}
+	#endif /* __cplusplus */
+} SizeF;
+
+typedef struct Point {
+	INT X;
+	INT Y;
+
+	#ifdef __cplusplus
+	Point(): X(0), Y(0) {}
+	Point(INT x, INT y): X(x), Y(y) {}
+	Point(const Point& point): X(point.X), Y(point.Y) {}
+	Point(const Size& size): X(size.Width), Y(size.Height) {}
+	
+	BOOL Equals(const Point& point) const {
+		return X == point.X && Y == point.Y;
+	}
+	Point operator+(const Point& point) const {
+		return Point(X + point.X, Y + point.Y);
+	}
+	Point operator-(const Point& point) const {
+		return Point(X - point.X, Y - point.Y);
+	}
+	#endif /* __cplusplus */
+} Point;
+
+typedef struct PointF {
+	REAL X;
+	REAL Y;
+
+	#ifdef __cplusplus
+	PointF(): X(0.0f), Y(0.0f) {}
+	PointF(REAL x, REAL y): X(x), Y(y) {}
+	PointF(const PointF& point): X(point.X), Y(point.Y) {}
+	PointF(const SizeF& size): X(size.Width), Y(size.Height) {}
+	
+	BOOL Equals(const PointF& point) const {
+		return X == point.X && Y == point.Y;
+	}
+	PointF operator+(const PointF& point) const {
+		return PointF(X + point.X, Y + point.Y);
+	}
+	PointF operator-(const PointF& point) const {
+		return PointF(X - point.X, Y - point.Y);
+	}
+	#endif /* __cplusplus */
+} PointF;
+
+typedef struct Rect {
+	INT X;
+	INT Y;
+	INT Width;
+	INT Height;
+
+	#ifdef __cplusplus
+	Rect(): X(0), Y(0), Width(0), Height(0) {}
+	Rect(const Point& location, const Size& size):
+		X(location.X), Y(location.Y),
+		Width(size.Width), Height(size.Height) {}
+	Rect(INT x, INT y, INT width, INT height):
+		X(x), Y(y), Width(width), Height(height) {}
+	
+	Rect* Clone() const {
+		return new Rect(X, Y, Width, Height);
+	}
+	BOOL Contains(INT x, INT y) const {
+		return X <= x && Y <= y && x < X+Width && y < Y+Height;
+	}
+	BOOL Contains(const Point& point) const {
+		return Contains(point.X, point.Y);
+	}
+	BOOL Contains(const Rect& rect) const {
+		return X <= rect.X && Y <= rect.Y
+			&& rect.X+rect.Width <= X+Width
+			&& rect.Y+rect.Height <= Y+Height;
+	}
+	BOOL Equals(const Rect& rect) const {
+		return X == rect.X && Y == rect.Y
+			&& Width == rect.Width && Height == rect.Height;
+	}
+	INT GetBottom() const {
+		return Y+Height;
+	}
+	VOID GetBounds(Rect *rect) const {
+		if (rect != NULL) {
+			rect->X = X;
+			rect->Y = Y;
+			rect->Width = Width;
+			rect->Height = Height;
+		}
+	}
+	INT GetLeft() const {
+		return X;
+	}
+	VOID GetLocation(Point *point) const {
+		if (point != NULL) {
+			point->X = X;
+			point->Y = Y;
+		}
+	}
+	INT GetRight() const {
+		return X+Width;
+	}
+	VOID GetSize(Size *size) const {
+		if (size != NULL) {
+			size->Width = Width;
+			size->Height = Height;
+		}
+	}
+	INT GetTop() const {
+		return Y;
+	}
+	BOOL IsEmptyArea() const {
+		return Width <= 0 || Height <= 0;
+	}
+	VOID Inflate(INT dx, INT dy) {
+		X -= dx;
+		Y -= dy;
+		Width += 2*dx;
+		Height += 2*dy;
+	}
+	VOID Inflate(const Point& point) {
+		Inflate(point.X, point.Y);
+	}
+	static BOOL Intersect(Rect& c, const Rect& a, const Rect& b) {
+		INT intersectLeft   = (a.X < b.X) ? b.X : a.X;
+		INT intersectTop    = (a.Y < b.Y) ? b.Y : a.Y; 
+		INT intersectRight  = (a.GetRight() < b.GetRight())
+					? a.GetRight() : b.GetRight();
+		INT intersectBottom = (a.GetBottom() < b.GetBottom())
+					? a.GetBottom() : b.GetBottom();
+		c.X = intersectLeft;
+		c.Y = intersectTop;
+		c.Width = intersectRight - intersectLeft;
+		c.Height = intersectBottom - intersectTop;
+		return !c.IsEmptyArea();  
+	}
+	BOOL Intersect(const Rect& rect) {
+		return Intersect(*this, *this, rect);
+	}
+	BOOL IntersectsWith(const Rect& rc) const {
+		INT intersectLeft   = (X < rc.X) ? rc.X : X;
+		INT intersectTop    = (Y < rc.Y) ? rc.Y : Y; 
+		INT intersectRight  = (GetRight() < rc.GetRight())
+					? GetRight() : rc.GetRight();
+		INT intersectBottom = (GetBottom() < rc.GetBottom())
+					? GetBottom() : rc.GetBottom();
+		return intersectLeft < intersectRight
+			&& intersectTop < intersectBottom;
+	}
+	VOID Offset(INT dx, INT dy) {
+		X += dx;
+		Y += dy;
+	}
+	VOID Offset(const Point& point) {
+		Offset(point.X, point.Y);
+	}
+	static BOOL Union(Rect& c, const Rect& a, const Rect& b) {
+		INT unionLeft   = (a.X < b.X) ? a.X : b.X;
+		INT unionTop    = (a.Y < b.Y) ? a.Y : b.Y; 
+		INT unionRight  = (a.GetRight() < b.GetRight())
+					? b.GetRight() : a.GetRight();
+		INT unionBottom = (a.GetBottom() < b.GetBottom())
+					? b.GetBottom() : a.GetBottom();
+		c.X = unionLeft;
+		c.Y = unionTop;
+		c.Width = unionRight - unionLeft;
+		c.Height = unionBottom - unionTop;
+		return !c.IsEmptyArea();
+	}
+	#endif /* __cplusplus */
+} Rect;
+
+typedef struct RectF {
+	REAL X;
+	REAL Y;
+	REAL Width;
+	REAL Height;
+
+	#ifdef __cplusplus
+	RectF(): X(0.0f), Y(0.0f), Width(0.0f), Height(0.0f) {}
+	RectF(const PointF& location, const SizeF& size):
+		X(location.X), Y(location.Y),
+		Width(size.Width), Height(size.Height) {}
+	RectF(REAL x, REAL y, REAL width, REAL height):
+		X(x), Y(y), Width(width), Height(height) {}
+	
+	RectF* Clone() const {
+		return new RectF(X, Y, Width, Height);
+	}
+	BOOL Contains(REAL x, REAL y) const {
+		return X <= x && Y <= y && x < X+Width && y < Y+Height;
+	}
+	BOOL Contains(const PointF& point) const {
+		return Contains(point.X, point.Y);
+	}
+	BOOL Contains(const RectF& rect) const {
+		return X <= rect.X && Y <= rect.Y
+			&& rect.X+rect.Width <= X+Width
+			&& rect.Y+rect.Height <= Y+Height;
+	}
+	BOOL Equals(const RectF& rect) const {
+		return X == rect.X && Y == rect.Y
+			&& Width == rect.Width && Height == rect.Height;
+	}
+	REAL GetBottom() const {
+		return Y+Height;
+	}
+	VOID GetBounds(RectF *rect) const {
+		if (rect != NULL) {
+			rect->X = X;
+			rect->Y = Y;
+			rect->Width = Width;
+			rect->Height = Height;
+		}
+	}
+	REAL GetLeft() const {
+		return X;
+	}
+	VOID GetLocation(PointF *point) const {
+		if (point != NULL) {
+			point->X = X;
+			point->Y = Y;
+		}
+	}
+	REAL GetRight() const {
+		return X+Width;
+	}
+	VOID GetSize(SizeF *size) const {
+		if (size != NULL) {
+			size->Width = Width;
+			size->Height = Height;
+		}
+	}
+	REAL GetTop() const {
+		return Y;
+	}
+	BOOL IsEmptyArea() const {
+		return Width <= 0.0f || Height <= 0.0f;
+	}
+	VOID Inflate(REAL dx, REAL dy) {
+		X -= dx;
+		Y -= dy;
+		Width += 2*dx;
+		Height += 2*dy;
+	}
+	VOID Inflate(const PointF& point) {
+		Inflate(point.X, point.Y);
+	}
+	static BOOL Intersect(RectF& c, const RectF& a, const RectF& b) {
+		INT intersectLeft   = (a.X < b.X) ? b.X : a.X;
+		INT intersectTop    = (a.Y < b.Y) ? b.Y : a.Y; 
+		INT intersectRight  = (a.GetRight() < b.GetRight())
+					? a.GetRight() : b.GetRight();
+		INT intersectBottom = (a.GetBottom() < b.GetBottom())
+					? a.GetBottom() : b.GetBottom();
+		c.X = intersectLeft;
+		c.Y = intersectTop;
+		c.Width = intersectRight - intersectLeft;
+		c.Height = intersectBottom - intersectTop;
+		return !c.IsEmptyArea();  
+	}
+	BOOL Intersect(const RectF& rect) {
+		return Intersect(*this, *this, rect);
+	}
+	BOOL IntersectsWith(const RectF& rc) const {
+		INT intersectLeft   = (X < rc.X) ? rc.X : X;
+		INT intersectTop    = (Y < rc.Y) ? rc.Y : Y; 
+		INT intersectRight  = (GetRight() < rc.GetRight())
+					? GetRight() : rc.GetRight();
+		INT intersectBottom = (GetBottom() < rc.GetBottom())
+					? GetBottom() : rc.GetBottom();
+		return intersectLeft < intersectRight
+			&& intersectTop < intersectBottom;
+	}
+	VOID Offset(REAL dx, REAL dy) {
+		X += dx;
+		Y += dy;
+	}
+	VOID Offset(const PointF& point) {
+		Offset(point.X, point.Y);
+	}
+	static BOOL Union(RectF& c, const RectF& a, const RectF& b) {
+		INT unionLeft   = (a.X < b.X) ? a.X : b.X;
+		INT unionTop    = (a.Y < b.Y) ? a.Y : b.Y; 
+		INT unionRight  = (a.GetRight() < b.GetRight())
+					? b.GetRight() : a.GetRight();
+		INT unionBottom = (a.GetBottom() < b.GetBottom())
+					? b.GetBottom() : a.GetBottom();
+		c.X = unionLeft;
+		c.Y = unionTop;
+		c.Width = unionRight - unionLeft;
+		c.Height = unionBottom - unionTop;
+		return !c.IsEmptyArea();
+	}
+	#endif /* __cplusplus */
+} RectF;
+
+/* FIXME: Are descendants of this class, when compiled with g++,
+   binary compatible with MSVC++ code (especially GDIPLUS.DLL of course)? */
+#ifdef __cplusplus
+struct GdiplusAbort {
+	virtual HRESULT __stdcall Abort(void) { return NO_ERROR; }
+};
+#else
+typedef struct GdiplusAbort GdiplusAbort;  /* incomplete type */
+#endif
+
+typedef struct CharacterRange {
+	INT First;
+	INT Length;
+
+	#ifdef __cplusplus
+	CharacterRange(): First(0), Length(0) {}
+	CharacterRange(INT first, INT length): First(first), Length(length) {}
+	CharacterRange& operator=(const CharacterRange& rhs) {
+		/* This gracefully handles self-assignment */
+		First = rhs.First;
+		Length = rhs.Length;
+		return *this;
+	}
+	#endif /* __cplusplus */
+} CharacterRange;
+
+typedef struct PathData {
+	INT Count;
+	PointF *Points;
+	BYTE *Types;
+
+	#ifdef __cplusplus
+	friend class GraphicsPath;
+
+	PathData(): Count(0), Points(NULL), Types(NULL) {}
+	~PathData() {
+		FreeArrays();
+	}
+private:
+	/* used by GraphicsPath::GetPathData, defined in gdipluspath.h */
+	Status AllocateArrays(INT capacity);
+	VOID FreeArrays();
+	#endif /* __cplusplus */
+} PathData;
+
+/* Callback function types */
+/* FIXME: need a correct definition for these function pointer types */
+typedef void *DebugEventProc;
+typedef BOOL CALLBACK (*EnumerateMetafileProc)(EmfPlusRecordType,UINT,UINT,const BYTE*,VOID*);
+typedef void *DrawImageAbort;
+typedef void *GetThumbnailImageAbort;
+
+
+#endif /* __GDIPLUS_TYPES_H */
Index: Daodan/MinGW/include/getopt.h
===================================================================
--- Daodan/MinGW/include/getopt.h	(revision 1046)
+++ Daodan/MinGW/include/getopt.h	(revision 1046)
@@ -0,0 +1,111 @@
+#ifndef __GETOPT_H__
+/*
+ * getopt.h
+ *
+ * $Id: getopt.h,v 7d9fd83ab3c3 2014/10/21 21:25:10 keithmarshall $
+ *
+ * Defines constants and function prototypes required to implement
+ * the `getopt', `getopt_long' and `getopt_long_only' APIs.
+ *
+ * This file is part of the MinGW32 package set.
+ *
+ * Contributed by Keith Marshall <keithmarshall@users.sourceforge.net>
+ *
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ * $Revision: 7d9fd83ab3c3 $
+ * $Author: keithmarshall $
+ * $Date: 2014/10/21 21:25:10 $
+ *
+ */
+#define __GETOPT_H__
+
+/* All the headers include this file. */
+#include <_mingw.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern int optind;		/* index of first non-option in argv      */
+extern int optopt;		/* single option character, as parsed     */
+extern int opterr;		/* flag to enable built-in diagnostics... */
+				/* (user may set to zero, to suppress)    */
+
+extern char *optarg;		/* pointer to argument of current option  */
+
+extern int getopt( int, char * const [], const char * );
+
+#ifdef _BSD_SOURCE
+/*
+ * BSD adds the non-standard `optreset' feature, for reinitialisation
+ * of `getopt' parsing.  We support this feature, for applications which
+ * proclaim their BSD heritage, before including this header; however,
+ * to maintain portability, developers are advised to avoid it.
+ */
+# define optreset  __mingw_optreset
+
+extern int optreset;
+#endif
+#ifdef __cplusplus
+}
+#endif
+/*
+ * POSIX requires the `getopt' API to be specified in `unistd.h';
+ * thus, `unistd.h' includes this header.  However, we do not want
+ * to expose the `getopt_long' or `getopt_long_only' APIs, when
+ * included in this manner.  Thus, close the standard __GETOPT_H__
+ * declarations block, and open an additional __GETOPT_LONG_H__
+ * specific block, only when *not* __UNISTD_H_SOURCED__, in which
+ * to declare the extended API.
+ */
+#endif /* !defined(__GETOPT_H__) */
+#if !defined(__UNISTD_H_SOURCED__) && !defined(__GETOPT_LONG_H__)
+#define __GETOPT_LONG_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct option		/* specification for a long form option...	*/
+{
+  const char *name;		/* option name, without leading hyphens */
+  int         has_arg;		/* does it take an argument?		*/
+  int        *flag;		/* where to save its status, or NULL	*/
+  int         val;		/* its associated status value		*/
+};
+
+enum    		/* permitted values for its `has_arg' field...	*/
+{
+  no_argument = 0,      	/* option never takes an argument	*/
+  required_argument,		/* option always requires an argument	*/
+  optional_argument		/* option may take an argument		*/
+};
+
+extern int getopt_long( int, char * const [], const char *, const struct option *, int * );
+extern int getopt_long_only( int, char * const [], const char *, const struct option *, int * );
+/*
+ * Previous MinGW implementation had...
+ */
+#ifndef HAVE_DECL_GETOPT
+/*
+ * ...for the long form API only; keep this for compatibility.
+ */
+# define HAVE_DECL_GETOPT	1
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* !defined(__UNISTD_H_SOURCED__) && !defined(__GETOPT_LONG_H__) */
+/* $RCSfile: getopt.h,v $$Revision: 7d9fd83ab3c3 $: end of file */
Index: Daodan/MinGW/include/glob.h
===================================================================
--- Daodan/MinGW/include/glob.h	(revision 1046)
+++ Daodan/MinGW/include/glob.h	(revision 1046)
@@ -0,0 +1,161 @@
+#ifndef _GLOB_H
+/*
+ * glob.h
+ *
+ * Header file supporting a MinGW implementation of an (approximately)
+ * POSIX conforming glob() and globfree() API.
+ *
+ * $Id: glob.h,v 21b61b814e54 2016/07/10 21:38:45 keithmarshall $
+ *
+ * Written by Keith Marshall <keithmarshall@users.sourceforge.net>
+ * Copyright (C) 2011, 2012, 2014, 2016, MinGW.org Project.
+ *
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice, this permission notice, and the following
+ * disclaimer shall be included in all copies or substantial portions of
+ * the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OF OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ *
+ */
+#define _GLOB_H  1
+#include <_mingw.h>
+#pragma GCC system_header
+
+#ifndef RC_INVOKED
+/* POSIX requires glob.h to define the size_t type; we need to
+ * get this from GCC, just as sys/types.h does.
+ */
+#define __need_size_t
+#include <stddef.h>
+
+typedef
+struct glob_t
+{ /* The structure, in which glob() returns the list of file system
+   * entities which it has matched.
+   */
+  void     * gl_magic;	/* reserved field; pointer to a glob signature	*/
+  size_t     gl_pathc;	/* counter for paths matched			*/
+  char    ** gl_pathv;	/* list of matching path names			*/
+  size_t     gl_offs;	/* number of initial unused slots in gl_pathv	*/
+} glob_t;
+
+/* A macro to facilitate definition of the flags which are used to
+ * control the operation of glob().
+ */
+#define __GLOB_FLAG__(NAME)  (1 << __GLOB_##NAME##_OFFSET)
+enum {
+  /* Identify the zero-based offset values which are used to specify
+   * the individual bit positions for each __GLOB_FLAG; the initial
+   * list specifies the standard set of flags required by POSIX.
+   */
+  __GLOB_APPEND_OFFSET = 0,
+  __GLOB_DOOFFS_OFFSET,
+  __GLOB_ERR_OFFSET,
+  __GLOB_MARK_OFFSET,
+  __GLOB_NOCHECK_OFFSET,
+  __GLOB_NOESCAPE_OFFSET,
+  __GLOB_NOSORT_OFFSET,
+  /*
+   * GNU's implementation of glob() supports a supplementary set of
+   * options, none of which are required by POSIX.  We include these
+   * for reference, and to reserve the flag identities for a possible
+   * future implementation; the current MinGW implementation does not
+   * support them.
+   */
+  __GLOB_TILDE_OFFSET,
+  __GLOB_TILDE_CHECK_OFFSET,
+  __GLOB_PERIOD_OFFSET,
+  __GLOB_BRACE_OFFSET,
+  __GLOB_ONLYDIR_OFFSET,
+  __GLOB_ALTDIRFUNC_OFFSET,
+  __GLOB_NOMAGIC_OFFSET,
+  /*
+   * This MinGW implementation DOES add support for the following
+   * custom options, which offer improved handling of MS-Windows
+   * specific peculiarities:--
+   *
+   *   GLOB_CASEMATCH	    makes glob() respect case sensitivity
+   *			    in path name matches; this is similar
+   *			    to default behaviour on POSIX systems,
+   *			    but to better support the MS-Windows
+   *			    file system, the MinGW implementation
+   *			    of glob() performs a CASE INSENSITIVE
+   *			    character match by default, (except
+   *			    when matching within character group
+   *			    patterns, which are ALWAYS assumed to
+   *			    require CASE SENSITIVE matching).
+   */
+  __GLOB_CASEMATCH_OFFSET,
+  /*
+   * The following is a convenience, to mark the end of the enumeration;
+   * it is NEVER used to locate any user visible __GLOB_FLAG__, but it
+   * MUST remain as the final entry in the enumerated list.
+   */
+  __GLOB_FLAG_OFFSET_HIGH_WATER_MARK
+};
+
+/* Definitions of the mandatory flags, as specified by POSIX.
+ */
+#define GLOB_APPEND	  __GLOB_FLAG__(APPEND)
+#define GLOB_DOOFFS	  __GLOB_FLAG__(DOOFFS)
+#define GLOB_ERR	  __GLOB_FLAG__(ERR)
+#define GLOB_MARK	  __GLOB_FLAG__(MARK)
+#define GLOB_NOCHECK	  __GLOB_FLAG__(NOCHECK)
+#define GLOB_NOESCAPE	  __GLOB_FLAG__(NOESCAPE)
+#define GLOB_NOSORT	  __GLOB_FLAG__(NOSORT)
+
+/* Additional flags definitions, for MinGW specific extensions.
+ */
+#define GLOB_CASEMATCH	  __GLOB_FLAG__(CASEMATCH)
+
+_BEGIN_C_DECLS
+/*
+ * Function prototypes.  Formally POSIX mandates:
+ *
+ *  int glob( const char *, int, int (*)( const char *, int ), glob_t * );
+ *  void globfree( glob_t * );
+ *
+ * However, our actual function implementations are provided via this
+ * pair of reserved function names...
+ */
+int __mingw_glob (const char *, int, int (*)(const char *, int), glob_t *);
+void __mingw_globfree (glob_t *);
+
+/* ...to which the standard names are then mapped as aliases,
+ * via __CRT_ALIAS inline function expansion.
+ */
+__CRT_ALIAS __JMPSTUB__(( FUNCTION = glob ))
+# define __ERRFUNC_P  (*__errfunc) (const char *, int)
+int glob (const char *__pattern, int __flags, int __ERRFUNC_P, glob_t *__data)
+{ return __mingw_glob (__pattern, __flags, __errfunc, __data); }
+# undef __ERRFUNC_P
+
+__CRT_ALIAS __JMPSTUB__(( FUNCTION = globfree ))
+void globfree (glob_t *__data){ return __mingw_globfree (__data); }
+
+_END_C_DECLS
+
+/* Manifest definitions for the possible status values
+ * which glob() may return.
+ */
+#define GLOB_SUCCESS	(0)
+#define GLOB_ABORTED	(1)
+#define GLOB_NOMATCH	(2)
+#define GLOB_NOSPACE	(3)
+
+#endif /* ! RC_INVOKED */
+#endif /* ! defined _GLOB_H */
Index: Daodan/MinGW/include/gmon.h
===================================================================
--- Daodan/MinGW/include/gmon.h	(revision 1046)
+++ Daodan/MinGW/include/gmon.h	(revision 1046)
@@ -0,0 +1,181 @@
+/*	$OpenBSD: gmon.h,v 1.3 1996/04/21 22:31:46 deraadt Exp $	*/
+/*	$NetBSD: gmon.h,v 1.5 1996/04/09 20:55:30 cgd Exp $	*/
+
+/*-
+ * Copyright (c) 1982, 1986, 1992, 1993
+ *	The Regents of the University of California.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *	This product includes software developed by the University of
+ *	California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ *	@(#)gmon.h	8.2 (Berkeley) 1/4/94
+ */
+
+/*
+ * This file is taken from Cygwin distribution. Please keep it in sync.
+ * The differences should be within __MINGW32__ guard.
+ */
+
+#ifndef _SYS_GMON_H_
+#define _SYS_GMON_H_
+
+#ifndef __P
+#define __P(x) x
+#endif
+
+#include <profile.h>
+
+#ifdef __MINGW32__
+#ifndef _BSDTYPES_DEFINED
+typedef unsigned char u_char;
+typedef unsigned short u_short;
+typedef unsigned int u_int;
+typedef unsigned long u_long;
+#define _BSDTYPES_DEFINED
+#endif /* _BSDTYPES_DEFINED */
+#endif /* __MINGW32__*/
+
+/*
+ * Structure prepended to gmon.out profiling data file.
+ */
+struct gmonhdr {
+	u_long	lpc;		/* base pc address of sample buffer */
+	u_long	hpc;		/* max pc address of sampled buffer */
+	int	ncnt;		/* size of sample buffer (plus this header) */
+	int	version;	/* version number */
+	int	profrate;	/* profiling clock rate */
+	int	spare[3];	/* reserved */
+};
+#define GMONVERSION	0x00051879
+
+/*
+ * histogram counters are unsigned shorts (according to the kernel).
+ */
+#define	HISTCOUNTER	unsigned short
+
+/*
+ * fraction of text space to allocate for histogram counters here, 1/2
+ */
+#define	HISTFRACTION	2
+
+/*
+ * Fraction of text space to allocate for from hash buckets.
+ * The value of HASHFRACTION is based on the minimum number of bytes
+ * of separation between two subroutine call points in the object code.
+ * Given MIN_SUBR_SEPARATION bytes of separation the value of
+ * HASHFRACTION is calculated as:
+ *
+ *	HASHFRACTION = MIN_SUBR_SEPARATION / (2 * sizeof(short) - 1);
+ *
+ * For example, on the VAX, the shortest two call sequence is:
+ *
+ *	calls	$0,(r0)
+ *	calls	$0,(r0)
+ *
+ * which is separated by only three bytes, thus HASHFRACTION is
+ * calculated as:
+ *
+ *	HASHFRACTION = 3 / (2 * 2 - 1) = 1
+ *
+ * Note that the division above rounds down, thus if MIN_SUBR_FRACTION
+ * is less than three, this algorithm will not work!
+ *
+ * In practice, however, call instructions are rarely at a minimal
+ * distance.  Hence, we will define HASHFRACTION to be 2 across all
+ * architectures.  This saves a reasonable amount of space for
+ * profiling data structures without (in practice) sacrificing
+ * any granularity.
+ */
+#define	HASHFRACTION	2
+
+/*
+ * percent of text space to allocate for tostructs with a minimum.
+ */
+#define ARCDENSITY	2
+#define MINARCS		50
+#define MAXARCS		((1 << (8 * sizeof(HISTCOUNTER))) - 2)
+
+struct tostruct {
+	u_long	selfpc;
+	long	count;
+	u_short	link;
+	u_short pad;
+};
+
+/*
+ * a raw arc, with pointers to the calling site and
+ * the called site and a count.
+ */
+struct rawarc {
+	u_long	raw_frompc;
+	u_long	raw_selfpc;
+	long	raw_count;
+};
+
+/*
+ * general rounding functions.
+ */
+#define ROUNDDOWN(x,y)	(((x)/(y))*(y))
+#define ROUNDUP(x,y)	((((x)+(y)-1)/(y))*(y))
+
+/*
+ * The profiling data structures are housed in this structure.
+ */
+struct gmonparam {
+	int		state;
+	u_short		*kcount;
+	u_long		kcountsize;
+	u_short		*froms;
+	u_long		fromssize;
+	struct tostruct	*tos;
+	u_long		tossize;
+	long		tolimit;
+	u_long		lowpc;
+	u_long		highpc;
+	u_long		textsize;
+	u_long		hashfraction;
+};
+extern struct gmonparam _gmonparam;
+
+/*
+ * Possible states of profiling.
+ */
+#define	GMON_PROF_ON	0
+#define	GMON_PROF_BUSY	1
+#define	GMON_PROF_ERROR	2
+#define	GMON_PROF_OFF	3
+
+/*
+ * Sysctl definitions for extracting profiling information from the kernel.
+ */
+#define	GPROF_STATE	0	/* int: profiling enabling variable */
+#define	GPROF_COUNT	1	/* struct: profile tick count buffer */
+#define	GPROF_FROMS	2	/* struct: from location hash bucket */
+#define	GPROF_TOS	3	/* struct: destination/count structure */
+#define	GPROF_GMONPARAM	4	/* struct: profiling parameters (see above) */
+#endif /* !_SYS_GMONH_ */
Index: Daodan/MinGW/include/httpext.h
===================================================================
--- Daodan/MinGW/include/httpext.h	(revision 1046)
+++ Daodan/MinGW/include/httpext.h	(revision 1046)
@@ -0,0 +1,98 @@
+/*
+       httpext.h - Header for ISAPI extensions.
+
+       This file is part of a free library for the Win32 API.
+
+       This library is distributed in the hope that it will be useful,
+       but WITHOUT ANY WARRANTY; without even the implied warranty of
+       MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+*/
+
+#ifndef _HTTPEXT_H
+#define _HTTPEXT_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#include <windows.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define	HSE_VERSION_MAJOR	2
+#define	HSE_VERSION_MINOR	0
+#define	HSE_LOG_BUFFER_LEN	80
+#define	HSE_MAX_EXT_DLL_NAME_LEN	256
+#define	HSE_STATUS_SUCCESS	1
+#define	HSE_STATUS_SUCCESS_AND_KEEP_CONN	2
+#define	HSE_STATUS_PENDING	3
+#define	HSE_STATUS_ERROR	4
+#define	HSE_REQ_BASE	0
+#define	HSE_REQ_SEND_URL_REDIRECT_RESP	1
+#define	HSE_REQ_SEND_URL	2
+#define	HSE_REQ_SEND_RESPONSE_HEADER	3
+#define	HSE_REQ_DONE_WITH_SESSION	4
+#define	HSE_REQ_SEND_RESPONSE_HEADER_EX	1016
+#define	HSE_REQ_END_RESERVED	1000
+#define	HSE_TERM_ADVISORY_UNLOAD	0x00000001
+#define	HSE_TERM_MUST_UNLOAD	0x00000002
+#define	HSE_IO_SYNC	0x00000001
+#define	HSE_IO_ASYNC	0x00000002
+#define	HSE_IO_DISCONNECT_AFTER_SEND	0x00000004
+#define	HSE_IO_SEND_HEADERS	0x00000008
+typedef	LPVOID HCONN;
+typedef	struct _HSE_VERSION_INFO {
+	DWORD	dwExtensionVersion;
+	CHAR	lpszExtensionDesc[HSE_MAX_EXT_DLL_NAME_LEN];
+} HSE_VERSION_INFO, *LPHSE_VERSION_INFO;
+typedef	struct _EXTENSION_CONTROL_BLOCK	{
+	DWORD	cbSize;
+	DWORD	dwVersion;
+	HCONN	ConnID;
+	DWORD	dwHttpStatusCode;
+	CHAR	lpszLogData[HSE_LOG_BUFFER_LEN];
+	LPSTR	lpszMethod;
+	LPSTR	lpszQueryString;
+	LPSTR	lpszPathInfo;
+	LPSTR	lpszPathTranslated;
+	DWORD	cbTotalBytes;
+	DWORD	cbAvailable;
+	LPBYTE	lpbData;
+	LPSTR	lpszContentType;
+	BOOL	(PASCAL	*GetServerVariable)(HCONN,LPSTR,LPVOID,LPDWORD);
+	BOOL	(PASCAL	*WriteClient)(HCONN,LPVOID,LPDWORD,DWORD);
+	BOOL	(PASCAL	*ReadClient)(HCONN,LPVOID,LPDWORD);
+	BOOL	(PASCAL	*ServerSupportFunction)(HCONN,DWORD,LPVOID,LPDWORD,LPDWORD);
+} EXTENSION_CONTROL_BLOCK, *LPEXTENSION_CONTROL_BLOCK;
+typedef	BOOL	(PASCAL	*PFN_GETEXTENSIONVERSION)(HSE_VERSION_INFO*);
+typedef	DWORD	(PASCAL	*PFN_HTTPEXTENSIONPROC)(EXTENSION_CONTROL_BLOCK*);
+typedef	BOOL	(PASCAL	*PFN_TERMINATEEXTENSION)(DWORD);
+typedef	VOID	(PASCAL	*PFN_HSE_IO_COMPLETION)(EXTENSION_CONTROL_BLOCK*,PVOID,DWORD,DWORD);
+typedef struct _HSE_TF_INFO {
+	PFN_HSE_IO_COMPLETION pfnHseIO;
+	PVOID pContext;
+	HANDLE hFile;
+	LPCSTR pszStatusCode;
+	DWORD BytesToWrite;
+	DWORD Offset;
+	PVOID pHead;
+	DWORD HeadLength;
+	PVOID pTail;
+	DWORD TailLength;
+	DWORD dwFlags;
+} HSE_TF_INFO, *LPHSE_TF_INFO;
+typedef struct _HSE_SEND_HEADER_EX_INFO {
+	LPCSTR pszStatus;
+	LPCSTR pszHeader;
+	DWORD cchStatus;
+	DWORD cchHeader;
+	BOOL fKeepConn;
+} HSE_SEND_HEADER_EX_INFO, * LPHSE_SEND_HEADER_EX_INF;
+BOOL	PASCAL	GetExtensionVersion(HSE_VERSION_INFO*);
+DWORD	PASCAL	HttpExtensionProc(EXTENSION_CONTROL_BLOCK*);
+BOOL	PASCAL	TerminateExtension(DWORD);
+#ifdef __cplusplus
+}
+#endif
+#endif /* _HTTPEXT_H */
Index: Daodan/MinGW/include/icm.h
===================================================================
--- Daodan/MinGW/include/icm.h	(revision 1046)
+++ Daodan/MinGW/include/icm.h	(revision 1046)
@@ -0,0 +1,399 @@
+#ifndef _ICM_H
+#define _ICM_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#if (_WIN32_WINDOWS >= 0x0410 || _WIN32_WINNT >= 0x0500)
+#define MAX_COLOR_CHANNELS 8
+#define PROFILE_FILENAME 1
+#define PROFILE_MEMBUFFER 2
+#define PROFILE_READ 1
+#define PROFILE_READWRITE 2
+#define CLASS_SCANNER 0x73636E72
+#define CLASS_MONITOR 0x6D6E7472
+#define CLASS_PRINTER 0x70727472
+#define CLASS_LINK 0x6C696E6B
+#define CLASS_COLORSPAC 0x73706163
+#define CLASS_ABSTRACT 0x61627374
+#define CLASS_NAMED 0x6E6D636C
+#define SPACE_XYZ 0x58595A20
+#define SPACE_Lab 0x4C616220
+#define SPACE_Luv 0x4C757620
+#define SPACE_YCbCr 0x59436272
+#define SPACE_Yxy 0x59787920
+#define SPACE_RGB 0x52474220
+#define SPACE_GRAY 0x47524159
+#define SPACE_HSV 0x48535620
+#define SPACE_HLS 0x484C5320
+#define SPACE_CMYK 0x434D594B
+#define SPACE_CMY 0x434D5920
+#define SPACE_2_CHANNEL 0x32434C52
+#define SPACE_3_CHANNEL 0x33434C52
+#define SPACE_4_CHANNEL 0x34434C52
+#define SPACE_5_CHANNEL 0x35434C52
+#define SPACE_6_CHANNEL 0x36434C52
+#define SPACE_7_CHANNEL 0x37434C52
+#define SPACE_8_CHANNEL 0x38434C52
+#define FLAG_EMBEDDEDPROFILE 1
+#define FLAG_DEPENDENTONDATA 2
+#define ATTRIB_TRANSPARENCY 1
+#define ATTRIB_MATTE 2
+#define INTENT_PERCEPTUAL 0
+#define INTENT_RELATIVE_COLORIMETRIC 1
+#define INTENT_SATURATION 2
+#define INTENT_ABSOLUTE_COLORIMETRIC 3
+#define COLOR_MATCH_VERSION 0x200
+#define CMS_DISABLEICM 0x1
+#define CMS_ENABLEPROOFING 0x2
+#define CMS_SETRENDERINTENT 0x4
+#define CMS_SETPROOFINTENT 0x8
+#define CMS_SETMONITORPROFILE 0x10
+#define CMS_SETPRINTERPROFILE 0x20
+#define CMS_SETTARGETPROFILE 0x40
+#define CMS_USEHOOK 0x80
+#define CMS_USEAPPLYCALLBACK 0x100
+#define CMS_USEDESCRIPTION 0x200
+#define CMS_TARGETOVERFLOW 0x20000000
+#define CMS_PRINTERROVERFLOW 0x40000000
+#define CMS_MONITOROVERFLOW 0x80000000
+
+DECLARE_HANDLE(HPROFILE);
+typedef HPROFILE *PHPROFILE,*LPHPROFILE;
+DECLARE_HANDLE(HTRANSFORM);\
+
+typedef BOOL (CALLBACK *PBMCALLBACKFN)(ULONG,ULONG,LPARAM);
+struct _tagCOLORMATCHSETUPA;
+struct _tagCOLORMATCHSETUPW;
+typedef BOOL (CALLBACK *PCMSCALLBACKA)(struct _tagCOLORMATCHSETUPA*,LPARAM);
+typedef BOOL (CALLBACK *PCMSCALLBACKW)(struct _tagCOLORMATCHSETUPW*,LPARAM);
+
+typedef CHAR COLOR_NAME[32];
+typedef COLOR_NAME *PCOLOR_NAME,*LPCOLOR_NAME;
+typedef DWORD TAGTYPE,*PTAGTYPE,*LPTAGTYPE;
+typedef enum
+{
+  BM_x555RGB      = 0x0000,
+  BM_x555XYZ      = 0x0101,
+  BM_x555Yxy,
+  BM_x555Lab,
+  BM_x555G3CH,
+  BM_RGBTRIPLETS  = 0x0002,
+  BM_BGRTRIPLETS  = 0x0004,
+  BM_XYZTRIPLETS  = 0x0201,
+  BM_YxyTRIPLETS,
+  BM_LabTRIPLETS,
+  BM_G3CHTRIPLETS,
+  BM_5CHANNEL,
+  BM_6CHANNEL,
+  BM_7CHANNEL,
+  BM_8CHANNEL,
+  BM_GRAY,
+  BM_xRGBQUADS    = 0x0008,
+  BM_xBGRQUADS    = 0x0010,
+  BM_xG3CHQUADS   = 0x0304,
+  BM_KYMCQUADS,
+  BM_CMYKQUADS    = 0x0020,
+  BM_10b_RGB      = 0x0009,
+  BM_10b_XYZ      = 0x0401,
+  BM_10b_Yxy,
+  BM_10b_Lab,
+  BM_10b_G3CH,
+  BM_NAMED_INDEX,
+  BM_16b_RGB      = 0x000A,
+  BM_16b_XYZ      = 0x0501,
+  BM_16b_Yxy,
+  BM_16b_Lab,
+  BM_16b_G3CH,
+  BM_16b_GRAY,
+  BM_565RGB       = 0x0001
+} BMFORMAT,*PBMFORMAT,*LPBMFORMAT;
+typedef enum
+{
+  COLOR_GRAY       =   1,
+  COLOR_RGB,
+  COLOR_XYZ,
+  COLOR_Yxy,
+  COLOR_Lab,
+  COLOR_3_CHANNEL,
+  COLOR_CMYK,
+  COLOR_5_CHANNEL,
+  COLOR_6_CHANNEL,
+  COLOR_7_CHANNEL,
+  COLOR_8_CHANNEL,
+  COLOR_NAMED
+} COLORTYPE,*PCOLORTYPE,*LPCOLORTYPE;
+struct GRAYCOLOR {
+  WORD    gray;
+};
+struct RGBCOLOR {
+  WORD    red;
+  WORD    green;
+  WORD    blue;
+};
+struct CMYKCOLOR {
+  WORD    cyan;
+  WORD    magenta;
+  WORD    yellow;
+  WORD    black;
+};
+struct XYZCOLOR {
+  WORD    X;
+  WORD    Y;
+  WORD    Z;
+};
+struct YxyCOLOR {
+  WORD    Y;
+  WORD    x;
+  WORD    y;
+};
+struct LabCOLOR {
+  WORD    L;
+  WORD    a;
+  WORD    b;
+};
+struct GENERIC3CHANNEL {
+  WORD    ch1;
+  WORD    ch2;
+  WORD    ch3;
+};
+struct NAMEDCOLOR {
+  DWORD   dwIndex;
+};
+struct HiFiCOLOR {
+  BYTE    channel[MAX_COLOR_CHANNELS];
+};
+typedef union tagCOLOR {
+  struct GRAYCOLOR        gray;
+  struct RGBCOLOR         rgb;
+  struct CMYKCOLOR        cmyk;
+  struct XYZCOLOR         XYZ;
+  struct YxyCOLOR         Yxy;
+  struct LabCOLOR         Lab;
+  struct GENERIC3CHANNEL  gen3ch;
+  struct NAMEDCOLOR       named;
+  struct HiFiCOLOR        hifi;
+} COLOR,*PCOLOR,*LPCOLOR;
+typedef struct _tagCOLORMATCHSETUPA {
+  DWORD         dwSize;
+  DWORD         dwVersion;
+  DWORD         dwFlags;
+  HWND          hwndOwner;
+  PCSTR         pSourceName;
+  PCSTR         pDisplayName;
+  PCSTR         pPrinterName;
+  DWORD         dwRenderIntent;
+  DWORD         dwProofingIntent;
+  PSTR          pMonitorProfile;
+  DWORD         ccMonitorProfile;
+  PSTR          pPrinterProfile;
+  DWORD         ccPrinterProfile;
+  PSTR          pTargetProfile;
+  DWORD         ccTargetProfile;
+  DLGPROC       lpfnHook;
+  LPARAM        lParam;
+  PCMSCALLBACKA lpfnApplyCallback;
+  LPARAM        lParamApplyCallback;
+} COLORMATCHSETUPA,*PCOLORMATCHSETUPA,*LPCOLORMATCHSETUPA;
+typedef struct _tagCOLORMATCHSETUPW {
+  DWORD         dwSize;
+  DWORD         dwVersion;
+  DWORD         dwFlags;
+  HWND          hwndOwner;
+  PCWSTR        pSourceName;
+  PCWSTR        pDisplayName;
+  PCWSTR        pPrinterName;
+  DWORD         dwRenderIntent;
+  DWORD         dwProofingIntent;
+  PWSTR         pMonitorProfile;
+  DWORD         ccMonitorProfile;
+  PWSTR         pPrinterProfile;
+  DWORD         ccPrinterProfile;
+  PWSTR         pTargetProfile;
+  DWORD         ccTargetProfile;
+  DLGPROC       lpfnHook;
+  LPARAM        lParam;
+  PCMSCALLBACKW lpfnApplyCallback;
+  LPARAM        lParamApplyCallback;
+} COLORMATCHSETUPW,*PCOLORMATCHSETUPW,*LPCOLORMATCHSETUPW;
+typedef struct tagENUMTYPEW {
+  DWORD   dwSize;
+  DWORD   dwVersion;
+  DWORD   dwFields;
+  PCWSTR  pDeviceName;
+  DWORD   dwMediaType;
+  DWORD   dwDitheringMode;
+  DWORD   dwResolution[2];
+  DWORD   dwCMMType;
+  DWORD   dwClass;
+  DWORD   dwDataColorSpace;
+  DWORD   dwConnectionSpace;
+  DWORD   dwSignature;
+  DWORD   dwPlatform;
+  DWORD   dwProfileFlags;
+  DWORD   dwManufacturer;
+  DWORD   dwModel;
+  DWORD   dwAttributes[2];
+  DWORD   dwRenderingIntent;
+  DWORD   dwCreator;
+  DWORD   dwDeviceClass;
+} ENUMTYPEW,*PENUMTYPEW,*LPENUMTYPEW;
+typedef struct tagENUMTYPEA {
+  DWORD   dwSize;
+  DWORD   dwVersion;
+  DWORD   dwFields;
+  PCSTR   pDeviceName;
+  DWORD   dwMediaType;
+  DWORD   dwDitheringMode;
+  DWORD   dwResolution[2];
+  DWORD   dwCMMType;
+  DWORD   dwClass;
+  DWORD   dwDataColorSpace;
+  DWORD   dwConnectionSpace;
+  DWORD   dwSignature;
+  DWORD   dwPlatform;
+  DWORD   dwProfileFlags;
+  DWORD   dwManufacturer;
+  DWORD   dwModel;
+  DWORD   dwAttributes[2];
+  DWORD   dwRenderingIntent;
+  DWORD   dwCreator;
+  DWORD   dwDeviceClass;
+} ENUMTYPEA,*PENUMTYPEA,*LPENUMTYPEA;
+typedef struct tagNAMED_PROFILE_INFO{
+  DWORD         dwFlags;
+  DWORD         dwCount;
+  DWORD         dwCountDevCoordinates;
+  COLOR_NAME    szPrefix;
+  COLOR_NAME    szSuffix;
+} NAMED_PROFILE_INFO,*PNAMED_PROFILE_INFO,*LPNAMED_PROFILE_INFO;
+typedef struct tagPROFILE {
+  DWORD    dwType;
+  PVOID    pProfileData;
+  DWORD    cbDataSize;
+} PROFILE,*PPROFILE,*LPPROFILE;
+typedef struct tagPROFILEHEADER {
+  DWORD   phSize;
+  DWORD   phCMMType;
+  DWORD   phVersion;
+  DWORD   phClass;
+  DWORD   phDataColorSpace;
+  DWORD   phConnectionSpace;
+  DWORD   phDateTime[3];
+  DWORD   phSignature;
+  DWORD   phPlatform;
+  DWORD   phProfileFlags;
+  DWORD   phManufacturer;
+  DWORD   phModel;
+  DWORD   phAttributes[2];
+  DWORD   phRenderingIntent;
+  CIEXYZ  phIlluminant;
+  DWORD   phCreator;
+  BYTE    phReserved[44];
+} PROFILEHEADER,*PPROFILEHEADER,*LPPROFILEHEADER;
+
+BOOL WINAPI AssociateColorProfileWithDeviceA(PCSTR,PCSTR,PCSTR);
+BOOL WINAPI AssociateColorProfileWithDeviceW(PCWSTR,PCWSTR,PCWSTR);
+BOOL WINAPI CheckBitmapBits(HTRANSFORM,PVOID,BMFORMAT,DWORD,DWORD,DWORD,PBYTE,PBMCALLBACKFN,LPARAM);
+BOOL WINAPI CheckColors(HTRANSFORM,PCOLOR,DWORD,COLORTYPE,PBYTE);
+BOOL WINAPI CloseColorProfile(HPROFILE);
+BOOL WINAPI ConvertColorNameToIndex(HPROFILE,PCOLOR_NAME,PDWORD,DWORD);
+BOOL WINAPI ConvertIndexToColorName(HPROFILE,PDWORD,PCOLOR_NAME,DWORD);
+HTRANSFORM WINAPI CreateColorTransformA(LPLOGCOLORSPACEA,HPROFILE,HPROFILE,DWORD);
+HTRANSFORM WINAPI CreateColorTransformW(LPLOGCOLORSPACEW,HPROFILE,HPROFILE,DWORD);
+BOOL WINAPI CreateDeviceLinkProfile(PHPROFILE,DWORD,PDWORD,DWORD,DWORD,PBYTE*,DWORD);
+HTRANSFORM WINAPI CreateMultiProfileTransform(PHPROFILE,DWORD,PDWORD,DWORD,DWORD,DWORD);
+BOOL WINAPI CreateProfileFromLogColorSpaceA(LPLOGCOLORSPACEA,PBYTE*);
+BOOL WINAPI CreateProfileFromLogColorSpaceW(LPLOGCOLORSPACEW,PBYTE*);
+BOOL WINAPI DeleteColorTransform(HTRANSFORM);
+BOOL WINAPI DisassociateColorProfileFromDeviceA(PCSTR,PCSTR,PCSTR);
+BOOL WINAPI DisassociateColorProfileFromDeviceW(PCWSTR,PCWSTR,PCWSTR);
+BOOL WINAPI EnumColorProfilesA(PCSTR,PENUMTYPEA,PBYTE,PDWORD,PDWORD);
+BOOL WINAPI EnumColorProfilesW(PCWSTR,PENUMTYPEW,PBYTE,PDWORD,PDWORD);
+DWORD WINAPI GetCMMInfo(HTRANSFORM,DWORD);
+BOOL WINAPI GetColorDirectoryA(PCSTR,PSTR,PDWORD);
+BOOL WINAPI GetColorDirectoryW(PCWSTR,PWSTR,PDWORD);
+BOOL WINAPI GetColorProfileElement(HPROFILE,TAGTYPE,DWORD,PDWORD,PVOID,PBOOL);
+BOOL WINAPI GetColorProfileElementTag(HPROFILE,DWORD,PTAGTYPE);
+BOOL WINAPI GetColorProfileFromHandle(HPROFILE,PBYTE,PDWORD);
+BOOL WINAPI GetColorProfileHeader(HPROFILE,PPROFILEHEADER);
+BOOL WINAPI GetCountColorProfileElements(HPROFILE,PDWORD);
+BOOL WINAPI GetNamedProfileInfo(HPROFILE,PNAMED_PROFILE_INFO);
+BOOL WINAPI GetPS2ColorRenderingDictionary(HPROFILE,DWORD,PBYTE,PDWORD,PBOOL);
+BOOL WINAPI GetPS2ColorRenderingIntent(HPROFILE,DWORD,PBYTE,PDWORD);
+BOOL WINAPI GetPS2ColorSpaceArray(HPROFILE,DWORD,DWORD,PBYTE,PDWORD,PBOOL);
+BOOL WINAPI GetStandardColorSpaceProfileA(PCSTR,DWORD,PSTR,PDWORD);
+BOOL WINAPI GetStandardColorSpaceProfileW(PCWSTR,DWORD,PWSTR,PDWORD);
+BOOL WINAPI InstallColorProfileA(PCSTR,PCSTR);
+BOOL WINAPI InstallColorProfileW(PCWSTR,PCWSTR);
+BOOL WINAPI IsColorProfileTagPresent(HPROFILE,TAGTYPE,PBOOL);
+BOOL WINAPI IsColorProfileValid(HPROFILE,PBOOL);
+HPROFILE WINAPI OpenColorProfileA(PPROFILE,DWORD,DWORD,DWORD);
+HPROFILE WINAPI OpenColorProfileW(PPROFILE,DWORD,DWORD,DWORD);
+BOOL WINAPI RegisterCMMA(PCSTR,DWORD,PCSTR);
+BOOL WINAPI RegisterCMMW(PCWSTR,DWORD,PCWSTR);
+BOOL WINAPI SelectCMM(DWORD);
+BOOL WINAPI SetColorProfileElement(HPROFILE,TAGTYPE,DWORD,PDWORD,PVOID);
+BOOL WINAPI SetColorProfileElementReference(HPROFILE,TAGTYPE,TAGTYPE);
+BOOL WINAPI SetColorProfileElementSize(HPROFILE,TAGTYPE,DWORD);
+BOOL WINAPI SetColorProfileHeader(HPROFILE,PPROFILEHEADER);
+BOOL WINAPI SetStandardColorSpaceProfileA(PCSTR,DWORD,PCSTR);
+BOOL WINAPI SetStandardColorSpaceProfileW(PCWSTR,DWORD,PCSTR);
+BOOL WINAPI SetupColorMatchingA(PCOLORMATCHSETUPA);
+BOOL WINAPI SetupColorMatchingW(PCOLORMATCHSETUPW);
+BOOL WINAPI TranslateBitmapBits(HTRANSFORM,PVOID,BMFORMAT,DWORD,DWORD,DWORD,PVOID,BMFORMAT,DWORD,PBMCALLBACKFN,ULONG);
+BOOL WINAPI TranslateColors(HTRANSFORM,PCOLOR,DWORD,COLORTYPE,PCOLOR,COLORTYPE);
+BOOL WINAPI UninstallColorProfileA(PCSTR,PCSTR,BOOL);
+BOOL WINAPI UninstallColorProfileW(PCWSTR,PCWSTR,BOOL);
+BOOL WINAPI UnregisterCMMA(PCSTR,DWORD);
+BOOL WINAPI UnregisterCMMW(PCWSTR,DWORD);
+
+#ifdef UNICODE
+typedef PCMSCALLBACKW PCMSCALLBACK;
+typedef COLORMATCHSETUPW COLORMATCHSETUP,*PCOLORMATCHSETUP,*LPCOLORMATCHSETUP;
+typedef ENUMTYPEW ENUMTYPE,*PENUMTYPE,*LPENUMTYPE;
+#define AssociateColorProfileWithDevice AssociateColorProfileWithDeviceW
+#define CreateColorTransform CreateColorTransformW
+#define CreateProfileFromLogColorSpace CreateProfileFromLogColorSpaceW
+#define DisassociateColorProfileFromDevice DisassociateColorProfileFromDeviceW
+#define EnumColorProfiles EnumColorProfilesW
+#define GetColorDirectory GetColorDirectoryW
+#define GetStandardColorSpaceProfile GetStandardColorSpaceProfileW
+#define InstallColorProfile InstallColorProfileW
+#define OpenColorProfile OpenColorProfileW
+#define RegisterCMM RegisterCMMW
+#define SetStandardColorSpaceProfile SetStandardColorSpaceProfileW
+#define SetupColorMatching SetupColorMatchingW
+#define UninstallColorProfile UninstallColorProfileW
+#define UnregisterCMM UnregisterCMMW
+#else /* UNICODE */
+typedef PCMSCALLBACKA PCMSCALLBACK;
+typedef COLORMATCHSETUPA COLORMATCHSETUP,*PCOLORMATCHSETUP,*LPCOLORMATCHSETUP;
+typedef ENUMTYPEA ENUMTYPE,*PENUMTYPE,*LPENUMTYPE;
+#define AssociateColorProfileWithDevice AssociateColorProfileWithDeviceA
+#define CreateColorTransform CreateColorTransformA
+#define CreateProfileFromLogColorSpace CreateProfileFromLogColorSpaceA
+#define DisassociateColorProfileFromDevice DisassociateColorProfileFromDeviceA
+#define EnumColorProfiles EnumColorProfilesA
+#define GetColorDirectory GetColorDirectoryA
+#define GetStandardColorSpaceProfile GetStandardColorSpaceProfileA
+#define InstallColorProfile InstallColorProfileA
+#define OpenColorProfile OpenColorProfileA
+#define RegisterCMM RegisterCMMA
+#define SetStandardColorSpaceProfile SetStandardColorSpaceProfileA
+#define SetupColorMatching SetupColorMatchingA
+#define UninstallColorProfile UninstallColorProfileA
+#define UnregisterCMM UnregisterCMMA
+#endif /* !UNICODE */
+
+#endif /* (_WIN32_WINDOWS >= 0x0410 || _WIN32_WINNT >= 0x0500) */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _ICM_H */
Index: Daodan/MinGW/include/idispids.h
===================================================================
--- Daodan/MinGW/include/idispids.h	(revision 1046)
+++ Daodan/MinGW/include/idispids.h	(revision 1046)
@@ -0,0 +1,10 @@
+#ifndef _IDISPIDS_H
+#define _IDISPIDS_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#define DISPID_AMBIENT_OFFLINEIFNOTCONNECTED (-5501)
+#define DISPID_AMBIENT_SILENT (-5502)
+
+#endif
Index: Daodan/MinGW/include/il21dec.h
===================================================================
--- Daodan/MinGW/include/il21dec.h	(revision 1046)
+++ Daodan/MinGW/include/il21dec.h	(revision 1046)
@@ -0,0 +1,35 @@
+#ifndef _IL21DEC_H
+#define _IL21DEC_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*--- DirectShow Reference - DirectShow Enumerated Types */
+typedef enum _AM_LINE21_CCLEVEL {
+	AM_L21_CCLEVEL_TC2
+} AM_LINE21_CCLEVEL,*PAM_LINE21_CCLEVEL;
+typedef enum _AM_LINE21_CCSERVICE {
+	AM_L21_CCSERVICE_None,
+	AM_L21_CCSERVICE_Caption1,
+	AM_L21_CCSERVICE_Caption2,
+	AM_L21_CCSERVICE_Text1,
+	AM_L21_CCSERVICE_Text2,
+	AM_L21_CCSERVICE_XDS,
+} AM_LINE21_CCSERVICE,*PAM_LINE21_CCSERVICE;
+typedef enum _AM_LINE21_CCSTATE {
+	AM_L21_CCSTATE_Off,
+	AM_L21_CCSTATE_On
+} AM_LINE21_CCSTATE,*PAM_LINE21_CCSTATE;
+typedef enum _AM_LINE21_DRAWBGMODE {
+	AM_L21_DRAWBGMODE_Opaque,
+	AM_L21_DRAWBGMODE_Transparent
+} AM_LINE21_DRAWBGMODE,*PAM_LINE21_DRAWBGMODE;
+
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/imagehlp.h
===================================================================
--- Daodan/MinGW/include/imagehlp.h	(revision 1046)
+++ Daodan/MinGW/include/imagehlp.h	(revision 1046)
@@ -0,0 +1,329 @@
+/*
+	imagehlp.h - Include file for IMAGEHLP.DLL APIs
+
+	Written by Mumit Khan <khan@nanotech.wisc.edu>
+
+	This file is part of a free library for the Win32 API.
+
+	NOTE: This strictly does not belong in the Win32 API since it's
+	really part of Platform SDK. However,GDB needs it and we might
+	as well provide it here.
+
+	This library is distributed in the hope that it will be useful,
+	but WITHOUT ANY WARRANTY; without even the implied warranty of
+	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+*/
+
+#ifndef _IMAGEHLP_H
+#define _IMAGEHLP_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define API_VERSION_NUMBER 7
+#define BIND_NO_BOUND_IMPORTS 0x00000001
+#define BIND_NO_UPDATE 0x00000002
+#define BIND_ALL_IMAGES 0x00000004
+#define BIND_CACHE_IMPORT_DLLS 0x00000008
+#define CBA_DEFERRED_SYMBOL_LOAD_START 1
+#define CBA_DEFERRED_SYMBOL_LOAD_COMPLETE 2
+#define CBA_DEFERRED_SYMBOL_LOAD_FAILURE 3
+#define CBA_SYMBOLS_UNLOADED 4
+#define CBA_DUPLICATE_SYMBOL 5
+#define CERT_PE_IMAGE_DIGEST_DEBUG_INFO 1
+#define CERT_PE_IMAGE_DIGEST_RESOURCES 2
+#define CERT_PE_IMAGE_DIGEST_ALL_IMPORT_INFO 4
+#define CERT_PE_IMAGE_DIGEST_NON_PE_INFO 8
+#define CERT_SECTION_TYPE_ANY 255
+#define CHECKSUM_SUCCESS	0
+#define CHECKSUM_OPEN_FAILURE	1
+#define CHECKSUM_MAP_FAILURE	2
+#define CHECKSUM_MAPVIEW_FAILURE	3
+#define CHECKSUM_UNICODE_FAILURE	4
+#define IMAGE_SEPARATION	65536
+#define SPLITSYM_REMOVE_PRIVATE	1
+#define SPLITSYM_EXTRACT_ALL	2
+#define SPLITSYM_SYMBOLPATH_IS_SRC	4
+#define SYMF_OMAP_GENERATED	1
+#define SYMF_OMAP_MODIFIED	2
+#define SYMOPT_CASE_INSENSITIVE	1
+#define SYMOPT_UNDNAME	2
+#define SYMOPT_DEFERRED_LOADS	4
+#define SYMOPT_NO_CPP	8
+#define SYMOPT_LOAD_LINES	16
+#define SYMOPT_OMAP_FIND_NEAREST	32
+#define UNDNAME_COMPLETE	0
+#define UNDNAME_NO_LEADING_UNDERSCORES	1
+#define UNDNAME_NO_MS_KEYWORDS	2
+#define UNDNAME_NO_FUNCTION_RETURNS	4
+#define UNDNAME_NO_ALLOCATION_MODEL	8
+#define UNDNAME_NO_ALLOCATION_LANGUAGE	16
+#define UNDNAME_NO_MS_THISTYPE	32
+#define UNDNAME_NO_CV_THISTYPE	64
+#define UNDNAME_NO_THISTYPE	96
+#define UNDNAME_NO_ACCESS_SPECIFIERS	128
+#define UNDNAME_NO_THROW_SIGNATURES	256
+#define UNDNAME_NO_MEMBER_TYPE	512
+#define UNDNAME_NO_RETURN_UDT_MODEL	1024
+#define UNDNAME_32_BIT_DECODE	2048
+#define UNDNAME_NAME_ONLY	4096
+#define UNDNAME_NO_ARGUMENTS	8192
+#define UNDNAME_NO_SPECIAL_SYMS	16384
+
+#define _IMAGEHLPAPI DECLSPEC_IMPORT WINAPI
+
+#ifndef RC_INVOKED
+
+typedef enum _IMAGEHLP_STATUS_REASON {
+	BindOutOfMemory,
+	BindRvaToVaFailed,
+	BindNoRoomInImage,
+	BindImportModuleFailed,
+	BindImportProcedureFailed,
+	BindImportModule,
+	BindImportProcedure,
+	BindForwarder,
+	BindForwarderNOT,
+	BindImageModified,
+	BindExpandFileHeaders,
+	BindImageComplete,
+	BindMismatchedSymbols,
+	BindSymbolsNotUpdated
+} IMAGEHLP_STATUS_REASON;
+typedef BOOL(STDCALL*PIMAGEHLP_STATUS_ROUTINE)(IMAGEHLP_STATUS_REASON,LPSTR,LPSTR,ULONG,ULONG);
+typedef struct _LOADED_IMAGE {
+	LPSTR ModuleName;
+	HANDLE hFile;
+	PUCHAR MappedAddress;
+	PIMAGE_NT_HEADERS FileHeader;
+	PIMAGE_SECTION_HEADER LastRvaSection;
+	ULONG NumberOfSections;
+	PIMAGE_SECTION_HEADER Sections;
+	ULONG Characteristics;
+	BOOLEAN fSystemImage;
+	BOOLEAN fDOSImage;
+	LIST_ENTRY Links;
+	ULONG SizeOfImage;
+} LOADED_IMAGE,*PLOADED_IMAGE;
+typedef struct _IMAGE_DEBUG_INFORMATION {
+	LIST_ENTRY List;
+	DWORD Size;
+	PVOID MappedBase;
+	USHORT Machine;
+	USHORT Characteristics;
+	DWORD CheckSum;
+	DWORD ImageBase;
+	DWORD SizeOfImage;
+	DWORD NumberOfSections;
+	PIMAGE_SECTION_HEADER Sections;
+	DWORD ExportedNamesSize;
+	LPSTR ExportedNames;
+	DWORD NumberOfFunctionTableEntries;
+	PIMAGE_FUNCTION_ENTRY FunctionTableEntries;
+	DWORD LowestFunctionStartingAddress;
+	DWORD HighestFunctionEndingAddress;
+	DWORD NumberOfFpoTableEntries;
+	PFPO_DATA FpoTableEntries;
+	DWORD SizeOfCoffSymbols;
+	PIMAGE_COFF_SYMBOLS_HEADER CoffSymbols;
+	DWORD SizeOfCodeViewSymbols;
+	PVOID CodeViewSymbols;
+	LPSTR ImageFilePath;
+	LPSTR ImageFileName;
+	LPSTR DebugFilePath;
+	DWORD TimeDateStamp;
+	BOOL RomImage;
+	PIMAGE_DEBUG_DIRECTORY DebugDirectory;
+	DWORD NumberOfDebugDirectories;
+	DWORD Reserved[3];
+} IMAGE_DEBUG_INFORMATION,*PIMAGE_DEBUG_INFORMATION;
+typedef enum {
+	AddrMode1616,
+	AddrMode1632,
+	AddrModeReal,
+	AddrModeFlat
+} ADDRESS_MODE;
+typedef struct _tagADDRESS {
+	DWORD Offset;
+	WORD Segment;
+	ADDRESS_MODE Mode;
+} ADDRESS,*LPADDRESS;
+typedef struct _KDHELP {
+	DWORD Thread;
+	DWORD ThCallbackStack;
+	DWORD NextCallback;
+	DWORD FramePointer;
+	DWORD KiCallUserMode;
+	DWORD KeUserCallbackDispatcher;
+	DWORD SystemRangeStart;
+} KDHELP,*PKDHELP;
+typedef struct _tagSTACKFRAME {
+	ADDRESS AddrPC;
+	ADDRESS AddrReturn;
+	ADDRESS AddrFrame;
+	ADDRESS AddrStack;
+	LPVOID FuncTableEntry;
+	DWORD Params[4];
+	BOOL Far;
+	BOOL Virtual;
+	DWORD Reserved[3];
+	KDHELP KdHelp;
+} STACKFRAME,*LPSTACKFRAME;
+typedef BOOL(STDCALL*PREAD_PROCESS_MEMORY_ROUTINE)(HANDLE,DWORD,PVOID,DWORD,PDWORD);
+typedef LPVOID(STDCALL*PFUNCTION_TABLE_ACCESS_ROUTINE)(HANDLE,DWORD);
+typedef DWORD(STDCALL*PGET_MODULE_BASE_ROUTINE)(HANDLE,DWORD);
+typedef DWORD(STDCALL*PTRANSLATE_ADDRESS_ROUTINE)(HANDLE,HANDLE,LPADDRESS);
+typedef struct API_VERSION {
+	USHORT MajorVersion;
+	USHORT MinorVersion;
+	USHORT Revision;
+	USHORT Reserved;
+} API_VERSION,*LPAPI_VERSION;
+typedef BOOL(CALLBACK*PSYM_ENUMMODULES_CALLBACK)(LPSTR,ULONG,PVOID);
+typedef BOOL(CALLBACK*PSYM_ENUMSYMBOLS_CALLBACK)(LPSTR,ULONG,ULONG,PVOID);
+typedef BOOL(CALLBACK*PENUMLOADED_MODULES_CALLBACK)(LPSTR,ULONG,ULONG,PVOID);
+typedef BOOL(CALLBACK*PSYMBOL_REGISTERED_CALLBACK)(HANDLE,ULONG,PVOID,PVOID);
+typedef enum {
+	SymNone,
+	SymCoff,
+	SymCv,
+	SymPdb,
+	SymExport,
+	SymDeferred,
+	SymSym
+} SYM_TYPE;
+typedef struct _IMAGEHLP_SYMBOL {
+	DWORD SizeOfStruct;
+	DWORD Address;
+	DWORD Size;
+	DWORD Flags;
+	DWORD MaxNameLength;
+	CHAR Name[1];
+} IMAGEHLP_SYMBOL,*PIMAGEHLP_SYMBOL;
+typedef struct _IMAGEHLP_MODULE {
+	DWORD SizeOfStruct;
+	DWORD BaseOfImage;
+	DWORD ImageSize;
+	DWORD TimeDateStamp;
+	DWORD CheckSum;
+	DWORD NumSyms;
+	SYM_TYPE SymType;
+	CHAR ModuleName[32];
+	CHAR ImageName[256];
+	CHAR LoadedImageName[256];
+} IMAGEHLP_MODULE,*PIMAGEHLP_MODULE;
+typedef struct _IMAGEHLP_LINE {
+	DWORD SizeOfStruct;
+	DWORD Key;
+	DWORD LineNumber;
+	PCHAR FileName;
+	DWORD Address;
+} IMAGEHLP_LINE,*PIMAGEHLP_LINE;
+typedef struct _IMAGEHLP_DEFERRED_SYMBOL_LOAD {
+	DWORD SizeOfStruct;
+	DWORD BaseOfImage;
+	DWORD CheckSum;
+	DWORD TimeDateStamp;
+	CHAR FileName[MAX_PATH];
+	BOOLEAN Reparse;
+} IMAGEHLP_DEFERRED_SYMBOL_LOAD,*PIMAGEHLP_DEFERRED_SYMBOL_LOAD;
+typedef struct _IMAGEHLP_DUPLICATE_SYMBOL {
+	DWORD SizeOfStruct;
+	DWORD NumberOfDups;
+	PIMAGEHLP_SYMBOL Symbol;
+	ULONG SelectedSymbol;
+} IMAGEHLP_DUPLICATE_SYMBOL,*PIMAGEHLP_DUPLICATE_SYMBOL;
+typedef PVOID DIGEST_HANDLE;
+typedef BOOL(WINAPI*DIGEST_FUNCTION)(DIGEST_HANDLE refdata,PBYTE pData,DWORD dwLength);
+
+PIMAGE_NT_HEADERS _IMAGEHLPAPI CheckSumMappedFile(LPVOID,DWORD,LPDWORD,LPDWORD);
+DWORD _IMAGEHLPAPI MapFileAndCheckSumA(LPSTR,LPDWORD,LPDWORD);
+DWORD _IMAGEHLPAPI MapFileAndCheckSumW(PWSTR,LPDWORD,LPDWORD);
+BOOL _IMAGEHLPAPI TouchFileTimes(HANDLE,LPSYSTEMTIME);
+BOOL _IMAGEHLPAPI SplitSymbols(LPSTR,LPSTR,LPSTR,DWORD);
+HANDLE _IMAGEHLPAPI FindDebugInfoFile(LPSTR,LPSTR,LPSTR);
+HANDLE _IMAGEHLPAPI FindExecutableImage(LPSTR,LPSTR,LPSTR);
+BOOL _IMAGEHLPAPI UpdateDebugInfoFile(LPSTR,LPSTR,LPSTR,PIMAGE_NT_HEADERS);
+BOOL _IMAGEHLPAPI UpdateDebugInfoFileEx(LPSTR,LPSTR,LPSTR,PIMAGE_NT_HEADERS,DWORD);
+BOOL _IMAGEHLPAPI BindImage(/*IN*/ LPSTR,/*IN*/ LPSTR,/*IN*/ LPSTR);
+BOOL _IMAGEHLPAPI BindImageEx(/*IN*/ DWORD,/*IN*/ LPSTR,/*IN*/ LPSTR,/*IN*/ LPSTR,/*IN*/ PIMAGEHLP_STATUS_ROUTINE);
+BOOL _IMAGEHLPAPI ReBaseImage(/*IN*/ LPSTR,/*IN*/ LPSTR,/*IN*/ BOOL,/*IN*/ BOOL,/*IN*/ BOOL,/*IN*/ ULONG,/*OUT*/ ULONG*,/*OUT*/ ULONG*,/*OUT*/ ULONG*,/*IN OUT*/ ULONG*,/*IN*/ ULONG);
+
+PLOADED_IMAGE _IMAGEHLPAPI ImageLoad(LPSTR,LPSTR);
+BOOL _IMAGEHLPAPI ImageUnload(PLOADED_IMAGE);
+PIMAGE_NT_HEADERS _IMAGEHLPAPI ImageNtHeader(/*IN*/ PVOID);
+PVOID _IMAGEHLPAPI ImageDirectoryEntryToData(/*IN*/ PVOID,/*IN*/ BOOLEAN,/*IN*/ USHORT,/*OUT*/ PULONG);
+PIMAGE_SECTION_HEADER _IMAGEHLPAPI ImageRvaToSection(/*IN*/ PIMAGE_NT_HEADERS,/*IN*/ PVOID,/*IN*/ ULONG);
+PVOID _IMAGEHLPAPI ImageRvaToVa(/*IN*/ PIMAGE_NT_HEADERS,/*IN*/ PVOID,/*IN*/ ULONG,/*IN OUT*/ PIMAGE_SECTION_HEADER*);
+BOOL _IMAGEHLPAPI MapAndLoad(LPSTR,LPSTR,PLOADED_IMAGE,BOOL,BOOL);
+BOOL _IMAGEHLPAPI GetImageConfigInformation(PLOADED_IMAGE,PIMAGE_LOAD_CONFIG_DIRECTORY);
+DWORD _IMAGEHLPAPI GetImageUnusedHeaderBytes(PLOADED_IMAGE,LPDWORD);
+BOOL _IMAGEHLPAPI SetImageConfigInformation(PLOADED_IMAGE,PIMAGE_LOAD_CONFIG_DIRECTORY);
+BOOL _IMAGEHLPAPI UnMapAndLoad(PLOADED_IMAGE);
+PIMAGE_DEBUG_INFORMATION _IMAGEHLPAPI MapDebugInformation(HANDLE,LPSTR,LPSTR,DWORD);
+BOOL _IMAGEHLPAPI UnmapDebugInformation(PIMAGE_DEBUG_INFORMATION);
+HANDLE _IMAGEHLPAPI FindExecutableImage(LPSTR,LPSTR,LPSTR);
+BOOL _IMAGEHLPAPI SearchTreeForFile(LPSTR,LPSTR,LPSTR);
+BOOL _IMAGEHLPAPI MakeSureDirectoryPathExists(LPCSTR);
+DWORD _IMAGEHLPAPI WINAPI UnDecorateSymbolName(LPCSTR,LPSTR,DWORD, DWORD);
+BOOL
+_IMAGEHLPAPI
+StackWalk(DWORD,HANDLE,HANDLE,LPSTACKFRAME,LPVOID,PREAD_PROCESS_MEMORY_ROUTINE,PFUNCTION_TABLE_ACCESS_ROUTINE,PGET_MODULE_BASE_ROUTINE,PTRANSLATE_ADDRESS_ROUTINE);
+LPAPI_VERSION _IMAGEHLPAPI ImagehlpApiVersion(VOID);
+LPAPI_VERSION _IMAGEHLPAPI ImagehlpApiVersionEx(LPAPI_VERSION);
+DWORD _IMAGEHLPAPI GetTimestampForLoadedLibrary(HMODULE);
+BOOL _IMAGEHLPAPI RemovePrivateCvSymbolic(PCHAR,PCHAR*,ULONG*);
+VOID _IMAGEHLPAPI RemoveRelocations(PCHAR);
+DWORD _IMAGEHLPAPI SymSetOptions(/*IN*/ DWORD);
+DWORD _IMAGEHLPAPI SymGetOptions(VOID);
+BOOL _IMAGEHLPAPI SymCleanup(/*IN*/ HANDLE);
+BOOL _IMAGEHLPAPI SymEnumerateModules(/*IN*/ HANDLE,/*IN*/ PSYM_ENUMMODULES_CALLBACK,/*IN*/ PVOID);
+BOOL _IMAGEHLPAPI SymEnumerateSymbols(/*IN*/ HANDLE,/*IN*/ DWORD,/*IN*/ PSYM_ENUMSYMBOLS_CALLBACK,/*IN*/ PVOID);
+BOOL _IMAGEHLPAPI EnumerateLoadedModules(/*IN*/ HANDLE,/*IN*/ PENUMLOADED_MODULES_CALLBACK,/*IN*/ PVOID);
+LPVOID _IMAGEHLPAPI SymFunctionTableAccess(HANDLE,DWORD);
+BOOL _IMAGEHLPAPI SymGetModuleInfo(/*IN*/ HANDLE,/*IN*/ DWORD,/*OUT*/ PIMAGEHLP_MODULE);
+DWORD _IMAGEHLPAPI SymGetModuleBase(/*IN*/ HANDLE,/*IN*/ DWORD);
+BOOL _IMAGEHLPAPI SymGetSymFromAddr(/*IN*/ HANDLE,/*IN*/ DWORD,/*OUT*/ PDWORD,/*OUT*/ PIMAGEHLP_SYMBOL);
+BOOL _IMAGEHLPAPI SymGetSymFromName(/*IN*/ HANDLE,/*IN*/ LPSTR,/*OUT*/ PIMAGEHLP_SYMBOL);
+BOOL _IMAGEHLPAPI SymGetSymNext(/*IN*/ HANDLE,/*IN OUT*/ PIMAGEHLP_SYMBOL);
+BOOL _IMAGEHLPAPI SymGetSymPrev(/*IN*/ HANDLE,/*IN OUT*/ PIMAGEHLP_SYMBOL);
+BOOL _IMAGEHLPAPI SymGetLineFromAddr(/*IN*/ HANDLE,/*IN*/ DWORD,/*OUT*/ PDWORD,/*OUT*/ PIMAGEHLP_LINE);
+BOOL _IMAGEHLPAPI SymGetLineFromName(/*IN*/ HANDLE,/*IN*/ LPSTR,/*IN*/ LPSTR,/*IN*/ DWORD,/*OUT*/ PLONG,/*IN OUT*/ PIMAGEHLP_LINE);
+BOOL _IMAGEHLPAPI SymGetLineNext(/*IN*/ HANDLE,/*IN OUT*/ PIMAGEHLP_LINE);
+BOOL _IMAGEHLPAPI SymGetLinePrev(/*IN*/ HANDLE,/*IN OUT*/ PIMAGEHLP_LINE);
+BOOL _IMAGEHLPAPI SymMatchFileName(/*IN*/ LPSTR,/*IN*/ LPSTR,/*OUT*/ LPSTR*,/*OUT*/ LPSTR*);
+BOOL _IMAGEHLPAPI SymInitialize(/*IN*/ HANDLE,/*IN*/ LPSTR,/*IN*/ BOOL);
+BOOL _IMAGEHLPAPI SymGetSearchPath(/*IN*/ HANDLE,/*OUT*/ LPSTR,/*IN*/ DWORD);
+BOOL _IMAGEHLPAPI SymSetSearchPath(/*IN*/ HANDLE,/*IN*/ LPSTR);
+BOOL _IMAGEHLPAPI SymLoadModule(/*IN*/ HANDLE,/*IN*/ HANDLE,/*IN*/ PSTR,/*IN*/ PSTR,/*IN*/ DWORD,/*IN*/ DWORD);
+BOOL _IMAGEHLPAPI SymUnloadModule(/*IN*/ HANDLE,/*IN*/ DWORD);
+BOOL _IMAGEHLPAPI SymUnDName(/*IN*/ PIMAGEHLP_SYMBOL,/*OUT*/ LPSTR,/*IN*/ DWORD);
+BOOL _IMAGEHLPAPI SymRegisterCallback(/*IN*/ HANDLE,/*IN*/ PSYMBOL_REGISTERED_CALLBACK,/*IN*/ PVOID);
+BOOL _IMAGEHLPAPI ImageGetDigestStream(/*IN*/ HANDLE,/*IN*/ DWORD,/*IN*/ DIGEST_FUNCTION,/*IN*/ DIGEST_HANDLE);
+BOOL _IMAGEHLPAPI ImageAddCertificate(/*IN*/ HANDLE,/*IN*/ LPWIN_CERTIFICATE,/*OUT*/ PDWORD);
+BOOL _IMAGEHLPAPI ImageRemoveCertificate(/*IN*/ HANDLE,/*IN*/ DWORD);
+BOOL _IMAGEHLPAPI ImageEnumerateCertificates(/*IN*/ HANDLE,/*IN*/ WORD,/*OUT*/ PDWORD,/*IN OUT*/ PDWORD /*OPTIONAL*/,/*IN OUT*/ DWORD /*OPTIONAL*/);
+BOOL _IMAGEHLPAPI ImageGetCertificateData(/*IN*/ HANDLE,/*IN*/ DWORD,/*OUT*/ LPWIN_CERTIFICATE,/*IN OUT*/ PDWORD);
+BOOL _IMAGEHLPAPI ImageGetCertificateHeader(/*IN*/ HANDLE,/*IN*/ DWORD,/*IN OUT*/ LPWIN_CERTIFICATE);
+BOOL _IMAGEHLPAPI CopyPdb(CHAR const*,CHAR const*,BOOL);
+BOOL _IMAGEHLPAPI RemovePrivateCvSymbolicEx(PCHAR,ULONG,PCHAR*,ULONG*);
+
+#endif /* RC_INVOKED */
+
+#ifdef UNICODE
+#define MapFileAndCheckSum MapFileAndCheckSumW
+#else
+#define MapFileAndCheckSum MapFileAndCheckSumA
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _IMAGEHLP_H */
+
Index: Daodan/MinGW/include/imm.h
===================================================================
--- Daodan/MinGW/include/imm.h	(revision 1046)
+++ Daodan/MinGW/include/imm.h	(revision 1046)
@@ -0,0 +1,452 @@
+#ifndef _IMM_H
+#define _IMM_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define WM_CONVERTREQUESTEX 0x108
+#define WM_IME_STARTCOMPOSITION 0x10D
+#define WM_IME_ENDCOMPOSITION 0x10E
+#define WM_IME_COMPOSITION 0x10F
+#define WM_IME_KEYLAST 0x10F
+#define WM_IME_SETCONTEXT 0x281
+#define WM_IME_NOTIFY 0x282
+#define WM_IME_CONTROL 0x283
+#define WM_IME_COMPOSITIONFULL 0x284
+#define WM_IME_SELECT 0x285
+#define WM_IME_CHAR 0x286
+#define WM_IME_KEYDOWN 0x290
+#define WM_IME_KEYUP 0x291
+#if (_WIN32_WINNT >= 0x0500)
+#define WM_IME_REQUEST 0x0288
+#endif
+#define IMC_GETCANDIDATEPOS 7
+#define IMC_SETCANDIDATEPOS 8
+#define IMC_GETCOMPOSITIONFONT 9
+#define IMC_SETCOMPOSITIONFONT 10
+#define IMC_GETCOMPOSITIONWINDOW 11
+#define IMC_SETCOMPOSITIONWINDOW 12
+#define IMC_GETSTATUSWINDOWPOS 15
+#define IMC_SETSTATUSWINDOWPOS 16
+#define IMC_CLOSESTATUSWINDOW 0x21
+#define IMC_OPENSTATUSWINDOW 0x22
+#define IMN_CLOSESTATUSWINDOW 1
+#define IMN_OPENSTATUSWINDOW 2
+#define IMN_CHANGECANDIDATE 3
+#define IMN_CLOSECANDIDATE 4
+#define IMN_OPENCANDIDATE 5
+#define IMN_SETCONVERSIONMODE 6
+#define IMN_SETSENTENCEMODE 7
+#define IMN_SETOPENSTATUS 8
+#define IMN_SETCANDIDATEPOS 9
+#define IMN_SETCOMPOSITIONFONT 10
+#define IMN_SETCOMPOSITIONWINDOW 11
+#define IMN_SETSTATUSWINDOWPOS 12
+#define IMN_GUIDELINE 13
+#define IMN_PRIVATE 14
+#define NI_OPENCANDIDATE 16
+#define NI_CLOSECANDIDATE 17
+#define NI_SELECTCANDIDATESTR 18
+#define NI_CHANGECANDIDATELIST 19
+#define NI_FINALIZECONVERSIONRESULT 20
+#define NI_COMPOSITIONSTR 21
+#define NI_SETCANDIDATE_PAGESTART 22
+#define NI_SETCANDIDATE_PAGESIZE 23
+#define NI_IMEMENUSELECTED 24
+#define ISC_SHOWUICANDIDATEWINDOW 1
+#define ISC_SHOWUICOMPOSITIONWINDOW 0x80000000
+#define ISC_SHOWUIGUIDELINE 0x40000000
+#define ISC_SHOWUIALLCANDIDATEWINDOW 15
+#define ISC_SHOWUIALL 0xC000000F
+#define CPS_COMPLETE 1
+#define CPS_CONVERT 2
+#define CPS_REVERT 3
+#define CPS_CANCEL 4
+#define IME_CHOTKEY_IME_NONIME_TOGGLE 16
+#define IME_CHOTKEY_SHAPE_TOGGLE 17
+#define IME_CHOTKEY_SYMBOL_TOGGLE 18
+#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 256
+#define IME_HOTKEY_DSWITCH_LAST 0x11F
+#define IME_ITHOTKEY_RESEND_RESULTSTR 512
+#define IME_ITHOTKEY_PREVIOUS_COMPOSITION 513
+#define IME_ITHOTKEY_UISTYLE_TOGGLE 514
+#define GCS_COMPREADSTR 1
+#define GCS_COMPREADATTR 2
+#define GCS_COMPREADCLAUSE 4
+#define GCS_COMPSTR 8
+#define GCS_COMPATTR 16
+#define GCS_COMPCLAUSE 32
+#define GCS_CURSORPOS 128
+#define GCS_DELTASTART 256
+#define GCS_RESULTREADSTR 512
+#define GCS_RESULTREADCLAUSE 1024
+#define GCS_RESULTSTR 2048
+#define GCS_RESULTCLAUSE 4096
+#define CS_INSERTCHAR 0x2000
+#define CS_NOMOVECARET 0x4000
+#define IMEVER_0310 0x3000A
+#define IMEVER_0400 0x40000
+#define IME_PROP_AT_CARET 0x10000
+#define IME_PROP_SPECIAL_UI 0x20000
+#define IME_PROP_CANDLIST_START_FROM_1 0x40000
+#define IME_PROP_UNICODE 0x80000
+#define UI_CAP_2700 1
+#define UI_CAP_ROT90 2
+#define UI_CAP_ROTANY 4
+#define SCS_CAP_COMPSTR 1
+#define SCS_CAP_MAKEREAD 2
+#define SELECT_CAP_CONVERSION 1
+#define SELECT_CAP_SENTENCE 2
+#define GGL_LEVEL 1
+#define GGL_INDEX 2
+#define GGL_STRING 3
+#define GGL_PRIVATE 4
+#define GL_LEVEL_NOGUIDELINE 0
+#define GL_LEVEL_FATAL 1
+#define GL_LEVEL_ERROR 2
+#define GL_LEVEL_WARNING 3
+#define GL_LEVEL_INFORMATION 4
+#define GL_ID_UNKNOWN 0
+#define GL_ID_NOMODULE 1
+#define GL_ID_NODICTIONARY 16
+#define GL_ID_CANNOTSAVE 17
+#define GL_ID_NOCONVERT 32
+#define GL_ID_TYPINGERROR 33
+#define GL_ID_TOOMANYSTROKE 34
+#define GL_ID_READINGCONFLICT 35
+#define GL_ID_INPUTREADING 36
+#define GL_ID_INPUTRADICAL 37
+#define GL_ID_INPUTCODE 38
+#define GL_ID_INPUTSYMBOL 39
+#define GL_ID_CHOOSECANDIDATE 40
+#define GL_ID_REVERSECONVERSION 41
+#define GL_ID_PRIVATE_FIRST 0x8000
+#define GL_ID_PRIVATE_LAST 0xFFFF
+#define IGP_GETIMEVERSION (DWORD)(-4)
+#define IGP_PROPERTY 4
+#define IGP_CONVERSION 8
+#define IGP_SENTENCE 12
+#define IGP_UI 16
+#define IGP_SETCOMPSTR 0x14
+#define IGP_SELECT 0x18
+#define SCS_SETSTR (GCS_COMPREADSTR|GCS_COMPSTR)
+#define SCS_CHANGEATTR (GCS_COMPREADATTR|GCS_COMPATTR)
+#define SCS_CHANGECLAUSE (GCS_COMPREADCLAUSE|GCS_COMPCLAUSE)
+#define ATTR_INPUT 0
+#define ATTR_TARGET_CONVERTED 1
+#define ATTR_CONVERTED 2
+#define ATTR_TARGET_NOTCONVERTED 3
+#define ATTR_INPUT_ERROR 4
+#define ATTR_FIXEDCONVERTED 5
+#define CFS_DEFAULT 0
+#define CFS_RECT 1
+#define CFS_POINT 2
+#define CFS_SCREEN 4
+#define CFS_FORCE_POSITION 32
+#define CFS_CANDIDATEPOS 64
+#define CFS_EXCLUDE 128
+#define GCL_CONVERSION 1
+#define GCL_REVERSECONVERSION 2
+#define GCL_REVERSE_LENGTH 3
+#define IME_CMODE_ALPHANUMERIC 0
+#define IME_CMODE_NATIVE 1
+#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 2
+#define IME_CMODE_LANGUAGE 3
+#define IME_CMODE_FULLSHAPE 8
+#define IME_CMODE_ROMAN 16
+#define IME_CMODE_CHARCODE 32
+#define IME_CMODE_HANJACONVERT 64
+#define IME_CMODE_SOFTKBD 128
+#define IME_CMODE_NOCONVERSION 256
+#define IME_CMODE_EUDC 512
+#define IME_CMODE_SYMBOL 1024
+#define IME_CMODE_FIXED 2048
+#define IME_SMODE_NONE 0
+#define IME_SMODE_PLAURALCLAUSE 1
+#define IME_SMODE_SINGLECONVERT 2
+#define IME_SMODE_AUTOMATIC 4
+#define IME_SMODE_PHRASEPREDICT 8
+#define IME_CAND_UNKNOWN 0
+#define IME_CAND_READ 1
+#define IME_CAND_CODE 2
+#define IME_CAND_MEANING 3
+#define IME_CAND_RADICAL 4
+#define IME_CAND_STROKE 5
+#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 3
+#define IME_ESC_RESERVED_FIRST 4
+#define IME_ESC_RESERVED_LAST 0x7FF
+#define IME_ESC_PRIVATE_FIRST 0x800
+#define IME_ESC_PRIVATE_LAST 0xFFF
+#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_REGWORD_STYLE_EUDC 1
+#define IME_REGWORD_STYLE_USER_FIRST 0x80000000
+#define IME_REGWORD_STYLE_USER_LAST 0xFFFFFFFF
+#define IMR_RECONVERTSTRING 4
+#define IMR_QUERYCHARPOSITION 6
+#define SOFTKEYBOARD_TYPE_T1 1
+#define SOFTKEYBOARD_TYPE_C1 2
+#define IMEMENUITEM_STRING_SIZE 80
+#define MOD_ALT 1
+#define MOD_CONTROL 2
+#define MOD_SHIFT 4
+#define MOD_WIN 8
+#define MOD_IGNORE_ALL_MODIFIER 1024
+#define MOD_ON_KEYUP  2048
+#define MOD_RIGHT 16384
+#define MOD_LEFT 32768
+#define IACE_CHILDREN 1
+#define IACE_DEFAULT 16
+#define IACE_IGNORENOCONTEXT 32
+#define IGIMIF_RIGHTMENU 1
+#define IGIMII_CMODE 1
+#define IGIMII_SMODE 2
+#define IGIMII_CONFIGURE 4
+#define IGIMII_TOOLS 8
+#define IGIMII_HELP 16
+#define IGIMII_OTHER 32
+#define IGIMII_INPUTTOOLS 64
+#define IMFT_RADIOCHECK 1
+#define IMFT_SEPARATOR 2
+#define IMFT_SUBMENU 4
+#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
+#ifndef VK_PROCESSKEY
+#define VK_PROCESSKEY 0x0E5
+#endif
+#define STYLE_DESCRIPTION_SIZE 32
+typedef DWORD HIMC;
+typedef DWORD HIMCC;
+typedef HKL *LPHKL;
+typedef struct tagCOMPOSITIONFORM {
+	DWORD dwStyle;
+	POINT ptCurrentPos;
+	RECT rcArea;
+} COMPOSITIONFORM,*PCOMPOSITIONFORM,*LPCOMPOSITIONFORM;
+typedef struct tagCANDIDATEFORM {
+	DWORD dwIndex;
+	DWORD dwStyle;
+	POINT ptCurrentPos;
+	RECT rcArea;
+} CANDIDATEFORM,*PCANDIDATEFORM,*LPCANDIDATEFORM;
+typedef struct tagCANDIDATELIST {
+	DWORD dwSize;
+	DWORD dwStyle;
+	DWORD dwCount;
+	DWORD dwSelection;
+	DWORD dwPageStart;
+	DWORD dwPageSize;
+	DWORD dwOffset[1];
+} CANDIDATELIST,*PCANDIDATELIST,*LPCANDIDATELIST;
+typedef struct tagIMECHARPOSITION {
+  DWORD  dwSize;
+  DWORD  dwCharPos;
+  POINT  pt;
+  UINT   cLineHeight;
+  RECT   rcDocument;
+} IMECHARPOSITION, *PIMECHARPOSITION;
+typedef struct tagRECONVERTSTRING {
+  DWORD dwSize;
+  DWORD dwVersion;
+  DWORD dwStrLen;
+  DWORD dwStrOffset;
+  DWORD dwCompStrLen;
+  DWORD dwCompStrOffset;
+  DWORD dwTargetStrLen;
+  DWORD dwTargetStrOffset;
+} RECONVERTSTRING, *PRECONVERTSTRING;
+typedef struct tagREGISTERWORDA {
+	LPSTR lpReading;
+	LPSTR lpWord;
+} REGISTERWORDA,*PREGISTERWORDA,*LPREGISTERWORDA;
+typedef struct tagREGISTERWORDW {
+	LPWSTR lpReading;
+	LPWSTR lpWord;
+} REGISTERWORDW,*PREGISTERWORDW,*LPREGISTERWORDW;
+typedef struct tagSTYLEBUFA {
+	DWORD dwStyle;
+	CHAR szDescription[STYLE_DESCRIPTION_SIZE];
+} STYLEBUFA,*PSTYLEBUFA,*LPSTYLEBUFA;
+typedef struct tagSTYLEBUFW {
+	DWORD dwStyle;
+	WCHAR szDescription[STYLE_DESCRIPTION_SIZE];
+} STYLEBUFW,*PSTYLEBUFW,*LPSTYLEBUFW;
+typedef struct tagIMEMENUITEMINFOA {
+	UINT cbSize;
+	UINT fType;
+	UINT fState;
+	UINT wID;
+	HBITMAP hbmpChecked;
+	HBITMAP hbmpUnchecked;
+	DWORD dwItemData;
+	CHAR szString[IMEMENUITEM_STRING_SIZE];
+	HBITMAP hbmpItem;
+} IMEMENUITEMINFOA,*PIMEMENUITEMINFOA,*LPIMEMENUITEMINFOA;
+typedef struct tagIMEMENUITEMINFOW {
+	UINT cbSize;
+	UINT fType;
+	UINT fState;
+	UINT wID;
+	HBITMAP hbmpChecked;
+	HBITMAP hbmpUnchecked;
+	DWORD dwItemData;
+	WCHAR szString[IMEMENUITEM_STRING_SIZE];
+	HBITMAP hbmpItem;
+} IMEMENUITEMINFOW,*PIMEMENUITEMINFOW,*LPIMEMENUITEMINFOW;
+typedef int (CALLBACK *REGISTERWORDENUMPROCA)(LPCSTR, DWORD, LPCSTR, LPVOID);
+typedef int (CALLBACK *REGISTERWORDENUMPROCW)(LPCWSTR, DWORD, LPCWSTR, LPVOID);
+#ifdef UNICODE
+#define REGISTERWORDENUMPROC REGISTERWORDENUMPROCW
+typedef REGISTERWORDW REGISTERWORD,*PREGISTERWORD,*LPREGISTERWORD;
+typedef STYLEBUFW STYLEBUF,*PSTYLEBUF,*LPSTYLEBUF;
+typedef IMEMENUITEMINFOW IMEMENUITEMINFO,*PIMEMENUITEMINFO,*LPIMEMENUITEMINFO;
+#else
+#define REGISTERWORDENUMPROC REGISTERWORDENUMPROCA
+typedef REGISTERWORDA REGISTERWORD,*PREGISTERWORD,*LPREGISTERWORD;
+typedef STYLEBUFA STYLEBUF,*PSTYLEBUF,*LPSTYLEBUF;
+typedef IMEMENUITEMINFOA IMEMENUITEMINFO,*PIMEMENUITEMINFO,*LPIMEMENUITEMINFO;
+#endif
+HKL WINAPI ImmInstallIMEA(LPCSTR,LPCSTR);
+HKL WINAPI ImmInstallIMEW(LPCWSTR,LPCWSTR);
+HWND WINAPI ImmGetDefaultIMEWnd(HWND);
+UINT WINAPI ImmGetDescriptionA(HKL,LPSTR,UINT);
+UINT WINAPI ImmGetDescriptionW(HKL,LPWSTR,UINT);
+UINT WINAPI ImmGetIMEFileNameA(HKL,LPSTR,UINT);
+UINT WINAPI ImmGetIMEFileNameW(HKL,LPWSTR,UINT);
+DWORD WINAPI ImmGetProperty(HKL,DWORD);
+BOOL WINAPI ImmIsIME(HKL);
+BOOL WINAPI ImmSimulateHotKey(HWND,DWORD);
+HIMC WINAPI ImmCreateContext(void);
+BOOL WINAPI ImmDestroyContext(HIMC);
+HIMC WINAPI ImmGetContext(HWND);
+BOOL WINAPI ImmReleaseContext(HWND,HIMC);
+HIMC WINAPI ImmAssociateContext(HWND,HIMC);
+LONG WINAPI ImmGetCompositionStringA(HIMC,DWORD,PVOID,DWORD);
+LONG WINAPI ImmGetCompositionStringW(HIMC,DWORD,PVOID,DWORD);
+BOOL WINAPI ImmSetCompositionStringA(HIMC,DWORD,PCVOID,DWORD,PCVOID,DWORD);
+BOOL WINAPI ImmSetCompositionStringW(HIMC,DWORD,PCVOID,DWORD,PCVOID,DWORD);
+DWORD WINAPI ImmGetCandidateListCountA(HIMC,PDWORD);
+DWORD WINAPI ImmGetCandidateListCountW(HIMC,PDWORD);
+DWORD WINAPI ImmGetCandidateListA(HIMC,DWORD,PCANDIDATELIST,DWORD);
+DWORD WINAPI ImmGetCandidateListW(HIMC,DWORD,PCANDIDATELIST,DWORD);
+DWORD WINAPI ImmGetGuideLineA(HIMC,DWORD,LPSTR,DWORD);
+DWORD WINAPI ImmGetGuideLineW(HIMC,DWORD,LPWSTR,DWORD);
+BOOL WINAPI ImmGetConversionStatus(HIMC,LPDWORD,PDWORD);
+BOOL WINAPI ImmSetConversionStatus(HIMC,DWORD,DWORD);
+BOOL WINAPI ImmGetOpenStatus(HIMC);
+BOOL WINAPI ImmSetOpenStatus(HIMC,BOOL);
+#ifndef NOGDI
+BOOL WINAPI ImmGetCompositionFontA(HIMC,LPLOGFONTA);
+BOOL WINAPI ImmGetCompositionFontW(HIMC,LPLOGFONTW);
+BOOL WINAPI ImmSetCompositionFontA(HIMC,LPLOGFONTA);
+BOOL WINAPI ImmSetCompositionFontW(HIMC,LPLOGFONTW);
+#endif
+BOOL WINAPI ImmConfigureIMEA(HKL,HWND,DWORD,PVOID);
+BOOL WINAPI ImmConfigureIMEW(HKL,HWND,DWORD,PVOID);
+LRESULT WINAPI ImmEscapeA(HKL,HIMC,UINT,PVOID);
+LRESULT WINAPI ImmEscapeW(HKL,HIMC,UINT,PVOID);
+DWORD WINAPI ImmGetConversionListA(HKL,HIMC,LPCSTR,PCANDIDATELIST,DWORD,UINT);
+DWORD WINAPI ImmGetConversionListW(HKL,HIMC,LPCWSTR,PCANDIDATELIST,DWORD,UINT);
+BOOL WINAPI ImmNotifyIME(HIMC,DWORD,DWORD,DWORD);
+BOOL WINAPI ImmGetStatusWindowPos(HIMC,LPPOINT);
+BOOL WINAPI ImmSetStatusWindowPos(HIMC,LPPOINT);
+BOOL WINAPI ImmGetCompositionWindow(HIMC,PCOMPOSITIONFORM);
+BOOL WINAPI ImmSetCompositionWindow(HIMC,PCOMPOSITIONFORM);
+BOOL WINAPI ImmGetCandidateWindow(HIMC,DWORD,PCANDIDATEFORM);
+BOOL WINAPI ImmSetCandidateWindow(HIMC,PCANDIDATEFORM);
+BOOL WINAPI ImmIsUIMessageA(HWND,UINT,WPARAM,LPARAM);
+BOOL WINAPI ImmIsUIMessageW(HWND,UINT,WPARAM,LPARAM);
+UINT WINAPI ImmGetVirtualKey(HWND);
+BOOL WINAPI ImmRegisterWordA(HKL,LPCSTR,DWORD,LPCSTR);
+BOOL WINAPI ImmRegisterWordW(HKL,LPCWSTR,DWORD,LPCWSTR);
+BOOL WINAPI ImmUnregisterWordA(HKL,LPCSTR,DWORD,LPCSTR);
+BOOL WINAPI ImmUnregisterWordW(HKL,LPCWSTR,DWORD,LPCWSTR);
+UINT WINAPI ImmGetRegisterWordStyleA(HKL,UINT,PSTYLEBUFA);
+UINT WINAPI ImmGetRegisterWordStyleW(HKL,UINT,PSTYLEBUFW);
+UINT WINAPI ImmEnumRegisterWordA(HKL,REGISTERWORDENUMPROCA,LPCSTR,DWORD,LPCSTR,PVOID);
+UINT WINAPI ImmEnumRegisterWordW(HKL,REGISTERWORDENUMPROCW,LPCWSTR,DWORD,LPCWSTR,PVOID);
+BOOL WINAPI EnableEUDC(BOOL);
+BOOL WINAPI ImmDisableIME(DWORD);
+DWORD WINAPI ImmGetImeMenuItemsA(HIMC,DWORD,DWORD,LPIMEMENUITEMINFOA,LPIMEMENUITEMINFOA,DWORD);
+DWORD WINAPI ImmGetImeMenuItemsW(HIMC,DWORD,DWORD,LPIMEMENUITEMINFOW,LPIMEMENUITEMINFOW,DWORD);
+
+#ifdef UNICODE
+#define ImmEnumRegisterWord ImmEnumRegisterWordW
+#define ImmGetRegisterWordStyle ImmGetRegisterWordStyleW
+#define ImmUnregisterWord ImmUnregisterWordW
+#define ImmRegisterWord ImmRegisterWordW
+#define ImmInstallIME ImmInstallIMEW
+#define ImmIsUIMessage ImmIsUIMessageW
+#define ImmGetConversionList ImmGetConversionListW
+#define ImmEscape ImmEscapeW
+#define ImmConfigureIME ImmConfigureIMEW
+#ifndef NOGDI
+#define ImmSetCompositionFont ImmSetCompositionFontW
+#define ImmGetCompositionFont ImmGetCompositionFontW
+#endif
+#define ImmGetGuideLine ImmGetGuideLineW
+#define ImmGetCandidateList ImmGetCandidateListW
+#define ImmGetCandidateListCount ImmGetCandidateListCountW
+#define ImmSetCompositionString ImmSetCompositionStringW
+#define ImmGetCompositionString ImmGetCompositionStringW
+#define ImmGetDescription ImmGetDescriptionW
+#define ImmGetIMEFileName ImmGetIMEFileNameW
+#define ImmGetImeMenuItems ImmGetImeMenuItemsW
+#else
+#define ImmEnumRegisterWord ImmEnumRegisterWordA
+#define ImmGetRegisterWordStyle ImmGetRegisterWordStyleA
+#define ImmUnregisterWord ImmUnregisterWordA
+#define ImmRegisterWord ImmRegisterWordA
+#define ImmInstallIME ImmInstallIMEA
+#define ImmIsUIMessage ImmIsUIMessageA
+#define ImmGetConversionList ImmGetConversionListA
+#define ImmEscape ImmEscapeA
+#define ImmConfigureIME ImmConfigureIMEA
+#ifndef NOGDI
+#define ImmSetCompositionFont ImmSetCompositionFontA
+#define ImmGetCompositionFont ImmGetCompositionFontA
+#endif
+#define ImmGetGuideLine ImmGetGuideLineA
+#define ImmGetCandidateList ImmGetCandidateListA
+#define ImmGetCandidateListCount ImmGetCandidateListCountA
+#define ImmSetCompositionString ImmSetCompositionStringA
+#define ImmGetCompositionString ImmGetCompositionStringA
+#define ImmGetDescription ImmGetDescriptionA
+#define ImmGetIMEFileName ImmGetIMEFileNameA
+#define ImmGetImeMenuItems ImmGetImeMenuItemsW
+#endif
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/initguid.h
===================================================================
--- Daodan/MinGW/include/initguid.h	(revision 1046)
+++ Daodan/MinGW/include/initguid.h	(revision 1046)
@@ -0,0 +1,12 @@
+#ifndef _INITGUID_H
+#define _INITGUID_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifndef DEFINE_GUID
+#include <basetyps.h>
+#endif
+#undef DEFINE_GUID
+#define DEFINE_GUID(n,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) GUID_EXT const GUID n GUID_SECT = {l,w1,w2,{b1,b2,b3,b4,b5,b6,b7,b8}}
+#endif
Index: Daodan/MinGW/include/intshcut.h
===================================================================
--- Daodan/MinGW/include/intshcut.h	(revision 1046)
+++ Daodan/MinGW/include/intshcut.h	(revision 1046)
@@ -0,0 +1,82 @@
+#ifndef _INTSHCUT_H
+#define _INTSHCUT_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#include <isguids.h>
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define INTSHCUTAPI DECLSPEC_IMPORT
+#define E_FLAGS MAKE_SCODE(SEVERITY_ERROR,FACILITY_ITF,0x1000)
+#define IS_E_EXEC_FAILED MAKE_SCODE(SEVERITY_ERROR,FACILITY_ITF,0x2002)
+#define URL_E_INVALID_SYNTAX MAKE_SCODE(SEVERITY_ERROR,FACILITY_ITF,0x1001)
+#define URL_E_UNREGISTERED_PROTOCOL MAKE_SCODE(SEVERITY_ERROR,FACILITY_ITF,0x1002)
+typedef enum iurl_seturl_flags {
+ IURL_SETURL_FL_GUESS_PROTOCOL=1,
+ IURL_SETURL_FL_USE_DEFAULT_PROTOCOL,
+ ALL_IURL_SETURL_FLAGS=(IURL_SETURL_FL_GUESS_PROTOCOL|IURL_SETURL_FL_USE_DEFAULT_PROTOCOL)
+} IURL_SETURL_FLAGS;
+typedef enum iurl_invokecommand_flags {
+ IURL_INVOKECOMMAND_FL_ALLOW_UI=1,
+ IURL_INVOKECOMMAND_FL_USE_DEFAULT_VERB,
+ ALL_IURL_INVOKECOMMAND_FLAGS=(IURL_INVOKECOMMAND_FL_ALLOW_UI|IURL_INVOKECOMMAND_FL_USE_DEFAULT_VERB)
+} IURL_INVOKECOMMAND_FLAGS;
+typedef enum translateurl_in_flags {
+ TRANSLATEURL_FL_GUESS_PROTOCOL=1,
+ TRANSLATEURL_FL_USE_DEFAULT_PROTOCOL,
+ ALL_TRANSLATEURL_FLAGS=(TRANSLATEURL_FL_GUESS_PROTOCOL|TRANSLATEURL_FL_USE_DEFAULT_PROTOCOL)
+} TRANSLATEURL_IN_FLAGS;
+typedef enum urlassociationdialog_in_flags {
+ URLASSOCDLG_FL_USE_DEFAULT_NAME=1,
+ URLASSOCDLG_FL_REGISTER_ASSOC,
+ ALL_URLASSOCDLG_FLAGS=(URLASSOCDLG_FL_USE_DEFAULT_NAME|URLASSOCDLG_FL_REGISTER_ASSOC)
+} URLASSOCIATIONDIALOG_IN_FLAGS;
+typedef enum mimeassociationdialog_in_flags {
+ MIMEASSOCDLG_FL_REGISTER_ASSOC=1,
+ ALL_MIMEASSOCDLG_FLAGS=MIMEASSOCDLG_FL_REGISTER_ASSOC
+} MIMEASSOCIATIONDIALOG_IN_FLAGS;
+typedef struct urlinvokecommandinfo {
+ DWORD dwcbSize;
+ DWORD dwFlags;
+ HWND hwndParent;
+ PCSTR pcszVerb;
+} URLINVOKECOMMANDINFO,*PURLINVOKECOMMANDINFO;
+typedef const URLINVOKECOMMANDINFO CURLINVOKECOMMANDINFO;
+typedef const URLINVOKECOMMANDINFO *PCURLINVOKECOMMANDINFO;
+#define INTERFACE IUniformResourceLocator
+DECLARE_INTERFACE_(IUniformResourceLocator,IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(SetURL)(THIS_ PCSTR,DWORD) PURE;
+ STDMETHOD(GetURL)(THIS_ PSTR*) PURE;
+ STDMETHOD(InvokeCommand)(THIS_ PURLINVOKECOMMANDINFO) PURE;
+};
+#undef INTERFACE
+typedef IUniformResourceLocator *PIUniformResourceLocator;
+typedef const IUniformResourceLocator CIUniformResourceLocator;
+typedef const IUniformResourceLocator *PCIUniformResourceLocator;
+
+BOOL WINAPI InetIsOffline(DWORD);
+HRESULT WINAPI MIMEAssociationDialogA(HWND,DWORD,PCSTR,PCSTR,PSTR,UINT);
+HRESULT WINAPI MIMEAssociationDialogW(HWND,DWORD,PCWSTR,PCWSTR,PWSTR,UINT);
+HRESULT WINAPI TranslateURLA(PCSTR,DWORD,PSTR*);
+HRESULT WINAPI TranslateURLW(PCWSTR,DWORD,PWSTR*);
+HRESULT WINAPI URLAssociationDialogA(HWND,DWORD,PCSTR,PCSTR,PSTR,UINT);
+HRESULT WINAPI URLAssociationDialogW(HWND,DWORD,PCWSTR,PCWSTR,PWSTR,UINT);
+#ifdef UNICODE
+#define TranslateURL TranslateURLW
+#define MIMEAssociationDialog MIMEAssociationDialogW
+#define URLAssociationDialog URLAssociationDialogW
+#else
+#define TranslateURL TranslateURLA
+#define MIMEAssociationDialog MIMEAssociationDialogA
+#define URLAssociationDialog URLAssociationDialogA
+#endif
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/inttypes.h
===================================================================
--- Daodan/MinGW/include/inttypes.h	(revision 1046)
+++ Daodan/MinGW/include/inttypes.h	(revision 1046)
@@ -0,0 +1,287 @@
+/* 7.8 Format conversion of integer types <inttypes.h> */
+
+#ifndef _INTTYPES_H_
+#define _INTTYPES_H_
+
+#include <_mingw.h>
+#include <stdint.h>
+#define __need_wchar_t
+#include <stddef.h>
+
+_BEGIN_C_DECLS
+
+typedef struct {
+	intmax_t quot;
+	intmax_t rem;
+	} imaxdiv_t;
+
+#if !defined(__cplusplus) || defined(__STDC_FORMAT_MACROS)
+
+/* 7.8.1 Macros for format specifiers
+ *
+ * MS runtime does not yet understand C9x standard "ll"
+ * length specifier. It appears to treat "ll" as "l".
+ * The non-standard I64 length specifier causes warning in GCC,
+ * but understood by MS runtime functions.
+ */
+
+/* fprintf macros for signed types */
+#define PRId8 "d"
+#define PRId16 "d"
+#define PRId32 "d"
+#define PRId64 "I64d"
+
+#define PRIdLEAST8 "d"
+#define PRIdLEAST16 "d"
+#define PRIdLEAST32 "d"
+#define PRIdLEAST64 "I64d"
+
+#define PRIdFAST8 "d"
+#define PRIdFAST16 "d"
+#define PRIdFAST32 "d"
+#define PRIdFAST64 "I64d"
+
+#define PRIdMAX "I64d"
+#define PRIdPTR "d"
+
+#define PRIi8 "i"
+#define PRIi16 "i"
+#define PRIi32 "i"
+#define PRIi64 "I64i"
+
+#define PRIiLEAST8 "i"
+#define PRIiLEAST16 "i"
+#define PRIiLEAST32 "i"
+#define PRIiLEAST64 "I64i"
+
+#define PRIiFAST8 "i"
+#define PRIiFAST16 "i"
+#define PRIiFAST32 "i"
+#define PRIiFAST64 "I64i"
+
+#define PRIiMAX "I64i"
+#define PRIiPTR "i"
+
+#define PRIo8 "o"
+#define PRIo16 "o"
+#define PRIo32 "o"
+#define PRIo64 "I64o"
+
+#define PRIoLEAST8 "o"
+#define PRIoLEAST16 "o"
+#define PRIoLEAST32 "o"
+#define PRIoLEAST64 "I64o"
+
+#define PRIoFAST8 "o"
+#define PRIoFAST16 "o"
+#define PRIoFAST32 "o"
+#define PRIoFAST64 "I64o"
+
+#define PRIoMAX "I64o"
+
+#define PRIoPTR "o"
+
+/* fprintf macros for unsigned types */
+#define PRIu8 "u"
+#define PRIu16 "u"
+#define PRIu32 "u"
+#define PRIu64 "I64u"
+
+
+#define PRIuLEAST8 "u"
+#define PRIuLEAST16 "u"
+#define PRIuLEAST32 "u"
+#define PRIuLEAST64 "I64u"
+
+#define PRIuFAST8 "u"
+#define PRIuFAST16 "u"
+#define PRIuFAST32 "u"
+#define PRIuFAST64 "I64u"
+
+#define PRIuMAX "I64u"
+#define PRIuPTR "u"
+
+#define PRIx8 "x"
+#define PRIx16 "x"
+#define PRIx32 "x"
+#define PRIx64 "I64x"
+
+#define PRIxLEAST8 "x"
+#define PRIxLEAST16 "x"
+#define PRIxLEAST32 "x"
+#define PRIxLEAST64 "I64x"
+
+#define PRIxFAST8 "x"
+#define PRIxFAST16 "x"
+#define PRIxFAST32 "x"
+#define PRIxFAST64 "I64x"
+
+#define PRIxMAX "I64x"
+#define PRIxPTR "x"
+
+#define PRIX8 "X"
+#define PRIX16 "X"
+#define PRIX32 "X"
+#define PRIX64 "I64X"
+
+#define PRIXLEAST8 "X"
+#define PRIXLEAST16 "X"
+#define PRIXLEAST32 "X"
+#define PRIXLEAST64 "I64X"
+
+#define PRIXFAST8 "X"
+#define PRIXFAST16 "X"
+#define PRIXFAST32 "X"
+#define PRIXFAST64 "I64X"
+
+#define PRIXMAX "I64X"
+#define PRIXPTR "X"
+
+/*
+ *   fscanf macros for signed int types
+ *   NOTE: if 32-bit int is used for int_fast8_t and int_fast16_t
+ *   (see stdint.h, 7.18.1.3), FAST8 and FAST16 should have
+ *   no length identifiers
+ */
+
+#define SCNd16 "hd"
+#define SCNd32 "d"
+#define SCNd64 "I64d"
+
+#define SCNdLEAST16 "hd"
+#define SCNdLEAST32 "d"
+#define SCNdLEAST64 "I64d"
+
+#define SCNdFAST16 "hd"
+#define SCNdFAST32 "d"
+#define SCNdFAST64 "I64d"
+
+#define SCNdMAX "I64d"
+#define SCNdPTR "d"
+
+#define SCNi16 "hi"
+#define SCNi32 "i"
+#define SCNi64 "I64i"
+
+#define SCNiLEAST16 "hi"
+#define SCNiLEAST32 "i"
+#define SCNiLEAST64 "I64i"
+
+#define SCNiFAST16 "hi"
+#define SCNiFAST32 "i"
+#define SCNiFAST64 "I64i"
+
+#define SCNiMAX "I64i"
+#define SCNiPTR "i"
+
+#define SCNo16 "ho"
+#define SCNo32 "o"
+#define SCNo64 "I64o"
+
+#define SCNoLEAST16 "ho"
+#define SCNoLEAST32 "o"
+#define SCNoLEAST64 "I64o"
+
+#define SCNoFAST16 "ho"
+#define SCNoFAST32 "o"
+#define SCNoFAST64 "I64o"
+
+#define SCNoMAX "I64o"
+#define SCNoPTR "o"
+
+#define SCNx16 "hx"
+#define SCNx32 "x"
+#define SCNx64 "I64x"
+
+#define SCNxLEAST16 "hx"
+#define SCNxLEAST32 "x"
+#define SCNxLEAST64 "I64x"
+
+#define SCNxFAST16 "hx"
+#define SCNxFAST32 "x"
+#define SCNxFAST64 "I64x"
+
+#define SCNxMAX "I64x"
+#define SCNxPTR "x"
+
+
+/* fscanf macros for unsigned int types */
+
+#define SCNu16 "hu"
+#define SCNu32 "u"
+#define SCNu64 "I64u"
+
+#define SCNuLEAST16 "hu"
+#define SCNuLEAST32 "u"
+#define SCNuLEAST64 "I64u"
+
+#define SCNuFAST16 "hu"
+#define SCNuFAST32 "u"
+#define SCNuFAST64 "I64u"
+
+#define SCNuMAX "I64u"
+#define SCNuPTR "u"
+
+#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+/*
+ * no length modifier for char types prior to C9x
+ * MS runtime  scanf appears to treat "hh" as "h"
+ */
+
+/* signed char */
+#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"
+
+/* unsigned char */
+#define SCNu8 "hhu"
+#define SCNuLEAST8 "hhu"
+#define SCNuFAST8 "hhu"
+#endif /* __STDC_VERSION__ >= 199901 */
+
+#endif	/* !defined(__cplusplus) || defined(__STDC_FORMAT_MACROS) */
+
+intmax_t __cdecl __MINGW_NOTHROW imaxabs (intmax_t j);
+#ifndef __NO_INLINE__
+__CRT_INLINE __LIBIMPL__(( FUNCTION = imaxabs ))
+intmax_t __cdecl __MINGW_NOTHROW imaxabs (intmax_t __j)
+{ return __j >= 0 ? __j : -__j; }
+
+/* Since intmax_t is effectively analogous to long long, the preceding
+ * implementation will serve admirably as the external representation of
+ * both imaxabs() and llabs(); declare so here, by providing a prototype
+ * only, with the corresponding inline implementation in stdlib.h
+ */
+__CRT_INLINE __LIBIMPL__(( ALIAS = imaxabs ))
+long long llabs (long long);
+#endif
+
+imaxdiv_t __cdecl __MINGW_NOTHROW imaxdiv (intmax_t numer, intmax_t denom);
+
+/* 7.8.2 Conversion functions for greatest-width integer types */
+
+intmax_t __cdecl __MINGW_NOTHROW strtoimax (const char* __restrict__ nptr,
+                            char** __restrict__ endptr, int base);
+uintmax_t __cdecl __MINGW_NOTHROW strtoumax (const char* __restrict__ nptr,
+			     char** __restrict__ endptr, int base);
+
+intmax_t __cdecl __MINGW_NOTHROW wcstoimax (const wchar_t* __restrict__ nptr,
+                            wchar_t** __restrict__ endptr, int base);
+uintmax_t __cdecl __MINGW_NOTHROW wcstoumax (const wchar_t* __restrict__ nptr,
+			     wchar_t** __restrict__ endptr, int base);
+
+_END_C_DECLS
+
+#endif /* ndef _INTTYPES_H */
Index: Daodan/MinGW/include/io.h
===================================================================
--- Daodan/MinGW/include/io.h	(revision 1046)
+++ Daodan/MinGW/include/io.h	(revision 1046)
@@ -0,0 +1,680 @@
+/*
+ * io.h
+ *
+ * System level I/O functions and types.
+ *
+ * $Id: io.h,v 0e4f78dbc1ba 2016/06/17 14:16:01 keithmarshall $
+ *
+ * Written by Colin Peters <colin@bird.fu.is.saga-u.ac.jp>
+ * Copyright (C) 1997-2004, 2007, 2009, 2010, 2014-2016, MinGW.org Project.
+ *
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice, this permission notice, and the following
+ * disclaimer shall be included in all copies or substantial portions of
+ * the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OF OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ *
+ *
+ * NOTE: The file manipulation functions provided by Microsoft seem to
+ * work with either slash (/) or backslash (\) as the directory separator;
+ * (this is consistent with Microsoft's own documentation, on MSDN).
+ *
+ */
+#ifndef _IO_H
+#pragma GCC system_header
+
+/* Defer definition of the _IO_H multiple inclusion guard, to allow
+ * for selective inclusion by <wchar.h>, (in which case we should
+ * NOT define it).
+ */
+#ifndef __WCHAR_H_SOURCED__
+#define _IO_H
+
+/* All MinGW headers must include <_mingw.h>; we may do it here,
+ * assuming that <wchar.h> will have already take care to do so in
+ * the selective inclusion case.
+ */
+#include <_mingw.h>
+
+/* We also need time_t, and off_t, (and their variants); although
+ * it gives us more than we really need, this will provide them...
+ */
+#include <sys/types.h>
+
+#endif	/* !__WCHAR_H_SOURCED__ */
+
+/* This will give us intptr_t, which we need in ALL cases, whether
+ * including <io.h> directly, or selectively via <wchar.h>; (note: we
+ * use the #include "..." form here, to ensure that we read the type
+ * definition directly from the stdint.h header located in the same
+ * directory as this <io.h> file).
+ */
+#define __need_intptr_t
+#include "stdint.h"
+
+/* Attributes of files as returned by _findfirst() et al.  MSDN is not
+ * explicit about whether or not these should be defined when including
+ * <wchar.h>, but since they complement the _wfindfirst() API, which is
+ * declared there, it seems logical to make them visible in all cases
+ * of <io.h> inclusion.
+ */
+#define _A_NORMAL	0x00000000
+#define _A_RDONLY	0x00000001
+#define _A_HIDDEN	0x00000002
+#define _A_SYSTEM	0x00000004
+#define _A_VOLID	0x00000008
+#define _A_SUBDIR	0x00000010
+#define _A_ARCH 	0x00000020
+
+#ifndef RC_INVOKED
+
+/* The maximum length of a file name.  It may be better to use the Windows'
+ * GetVolumeInformation() function in preference to this constant, but hey,
+ * this works!  In any case, we use this manifest constant when we declare
+ * the _findfirst() API, so its definition must be visible in all places
+ * where this, or any of its variants, is declared.
+ *
+ * Note that <stdio.h> also defines this, but we don't guard it, so that
+ * the compiler has a chance to catch inconsistencies.
+ */
+#define FILENAME_MAX	(260)
+
+/* We must define _fsize_t, but some compilers (including GCC prior to
+ * version 4.0), may choke if we try to do so more than once...
+ */
+#if ! (defined _IO_H && defined _WCHAR_H)
+ /* ...so DO NOT define it during direct <io.h> inclusion, (i.e. _IO_H
+  * is defined), if <wchar.h> has already caused it to be defined, (i.e.
+  * _WCHAR_H is ALSO defined).
+  */
+typedef	unsigned long	_fsize_t;
+#endif	/* ! (_IO_H && _WCHAR_H) */
+
+/* Functions for searching for files: _findfirst() sets errno to ENOENT,
+ * and returns -1 if no match is found; otherwise it returns a handle to
+ * be used in _findnext() and _findclose() calls. _findnext() may then be
+ * used to identify further matches; it updates the search data, returning
+ * zero, each time a further match is found, ultimately setting errno to
+ * ENOENT, and returning -1 when no further match can be found.  When all
+ * expected matches have been identified, _findclose() should be called,
+ * to release the resources allocated to the search data.
+ *
+ * The API comprises several variants of the _findfirst() and _findnext()
+ * functions, conforming generally to the usage model:
+ *
+ *  intptr_t handle = _findfirst (filespec, &search_data );
+ *  if (handle >= (intptr_t)(0)) do { process search_data;
+ *   } while (_findnext (handle, &search_data));
+ *
+ * where "filespec" represents a char *, or a wchar_t * specification,
+ * (which may include wild cards), for a file name pattern to be matched,
+ * and "search_data" represents a variant of the structure:
+ */
+#define __struct_finddata_t(__fd_time_t, __fd_size_t)			\
+{ unsigned	attrib;		/* Attributes, see constants above. */	\
+  __fd_time_t	time_create;						\
+  __fd_time_t	time_access;	/* always midnight local time */	\
+  __fd_time_t	time_write;						\
+  __fd_size_t	size;							\
+  __fd_name_t	name[FILENAME_MAX];	/* may include spaces. */	\
+}
+
+/* Time type and file size variations for __struct_finddata_t apply, for the
+ * various functions comprising the file name search API, as tabulated below:
+ *
+ * Note: this is a reproduction of reference data as published in the MSDN
+ * online documentation for the file name search API; it applies, specifically,
+ * to the implementation of this API in the non-free run-time library versions
+ * from MSVCR80.DLL onwards, (i.e. when __MSVCRT_VERSION__ is defined, and is
+ * assigned a value >= 0x800).  When linking to the freely available MSVCRT.DLL
+ * runtime, (__MSVCRT_VERSION__ should not be defined), or any earlier version
+ * of the non-free run-time, the _USE_32BIT_TIME_T feature test is irrelevant;
+ * the information presented in this table should be interpreted as if this
+ * feature is always implicitly enabled.
+ *
+ *  Functions	       _USE_32BIT_TIME_T defined?    __fd_time_t     __fd_size_t
+ *
+ * _findfirst(),	Not defined			64-bit		32-bit
+ * _wfindfirst()
+ * _findfirst(),	Defined				32-bit		32-bit
+ * _wfindfirst()
+ *
+ * _findfirst32(),	Not affected by the macro	32-bit		32-bit
+ * _wfindfirst32()	definition
+ *
+ * _findfirst64(),	Not affected by the macro	64-bit		64-bit
+ * _wfindfirst64()	definition
+ *
+ * _findfirsti64(),	Not defined			64-bit		64-bit
+ * _wfindfirsti64()
+ * _findfirsti64(),	Defined				32-bit		64-bit
+ * _wfindfirsti64()
+ *
+ * _findfirst32i64(),	Not affected by the macro	32-bit		64-bit
+ * _wfindfirst32i64()	definition
+ *
+ * _findfirst64i32(),	Not affected by the macro	64-bit		32-bit
+ * _wfindfirst64i32()	definition
+ *
+ */
+_BEGIN_C_DECLS
+
+#ifdef _IO_H
+#define __fd_name_t  char
+
+/* The most universally available variants of the file name search
+ * API employ either a generic representation of the related data, or
+ * a variant in which the time stamps are represented generically, but
+ * the file size is explicitly expressed as a 64-bit value.
+ */
+struct _finddata_t __struct_finddata_t (time_t, _fsize_t);
+struct _finddatai64_t __struct_finddata_t (time_t, __int64);
+
+/* Functions to manipulate data in either of these representations are
+ * provided, as physical entities, in ALL versions of MSVCRT.DLL, and
+ * in the non-free variants predating MSVCR80.DLL; (each such physical
+ * function implementation interprets "generic" as 32-bit for both the
+ * time_t and _fsize_t data fields).  From MSVCR80.DLL onward, there is
+ * no physical implementation of these functions; they are emulated by
+ * inline replacements (implemented below), which introduce ambiguity
+ * in the interpretation of "generic", (noted as applicable): thus...
+ */
+#if __MSVCRT_VERSION__ < __MSVCR80_DLL
+/* ...these physical function APIs are declared only when it is NOT
+ * specified that MSVCR80.DLL or later is to be used.
+ */
+_CRTIMP __cdecl __MINGW_NOTHROW
+intptr_t _findfirst (const char *, struct _finddata_t *);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+int _findnext (intptr_t, struct _finddata_t *);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+intptr_t _findfirsti64 (const char *, struct _finddatai64_t *);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+int _findnexti64 (intptr_t, struct _finddatai64_t *);
+
+#endif	/* __MSVCRT_VERSION__ < __MSVCR80_DLL */
+
+#if _WIN32_WINNT >= _WIN32_WINNT_WIN2K || __MSVCRT_VERSION__ >= __MSVCR61_DLL
+/* The Win2K release of MSVCRT.DLL added a third variant of the API,
+ * which had originally been introduced in MSVCR61.DLL; this variant
+ * uses a data representation having both 64-bit time stamp values,
+ * and 64-bit file size values.  (Note that there was no explictly
+ * all 32-bit variant added at this point in the evolution of the
+ * API; had there been, it would have been identically equivalent
+ * to the original generic _findfirst()/_findnext() implementation).
+ */
+struct __finddata64_t __struct_finddata_t (__time64_t, __int64);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+intptr_t _findfirst64 (const char *, struct __finddata64_t *);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+int _findnext64 (intptr_t, struct __finddata64_t *);
+
+#if __MSVCRT_VERSION__ >= __MSVCR80_DLL
+/* MSVCR80.DLL introduced three new data structures, with explicitly
+ * sized elements; in the order specified below, the first and second
+ * of these three are identically equivalent to the representations of
+ * struct _finddata_t, and struct _finddatai64_t, as they are required
+ * to be implemented to match the implementations of the corresponding
+ * functions in ALL versions of MSVCRT.DLL, whereas the third has no
+ * counterpart, in ANY version of MSVCRT.DLL.
+ */
+struct _finddata32_t __struct_finddata_t (__time32_t, __int32);
+struct _finddata32i64_t __struct_finddata_t (__time32_t, __int64);
+struct _finddata64i32_t __struct_finddata_t (__time64_t, __int32);
+
+/* The actual functions implemented in MSVCR80.DLL, and its derivatives,
+ * corresponding to each of these three data structures are:
+ */
+_CRTIMP __cdecl __MINGW_NOTHROW
+intptr_t _findfirst32 (const char *, struct _finddata32_t *);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+int _findnext32 (intptr_t, struct _finddata32_t *);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+intptr_t _findfirst32i64 (const char *, struct _finddata32i64_t *);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+int _findnext32i64 (intptr_t, struct _finddata32i64_t *);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+intptr_t _findfirst64i32 (const char *, struct _finddata64i32_t *);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+int _findnext64i32 (intptr_t, struct _finddata64i32_t *);
+
+/* Since MSVCR80.DLL, and its later derivatives, provide no physical
+ * implementations of the original file name search API functions, we
+ * must emulate them, (as Microsoft do), by providing replacements in
+ * the form of inline functions; in doing so, we also need to contend
+ * with the insane ambiguity of Microsoft's _USE_32BIT_TIME_T feature
+ * test; thus...
+ */
+#if defined _USE_32BIT_TIME_T
+/* ...when the user has defined the _USE_32BIT_TIME_T macro, we provide
+ * inline implementations which remain fully compatible with the actual
+ * functions, as provided by MSVCRT.DLL; (note that we do not provide
+ * __JMPSTUB__ or __LIBIMPL__ references here, since we have no basis
+ * for a rational choice between ambiguous alternatives).
+ */
+__CRT_ALIAS __cdecl __MINGW_NOTHROW
+intptr_t _findfirst (const char *__filespec, struct _finddata_t *__search)
+{ return _findfirst32 (__filespec, (struct _finddata32_t *)(__search)); }
+
+__CRT_ALIAS __cdecl __MINGW_NOTHROW
+int _findnext (intptr_t __handle, struct _finddata_t *__search)
+{ return _findnext32 (__handle, (struct _finddata32_t *)(__search)); }
+
+__CRT_ALIAS __cdecl __MINGW_NOTHROW
+intptr_t _findfirsti64 (const char *__filespec, struct _finddatai64_t *__search)
+{ return _findfirst32i64 (__filespec, (struct _finddata32i64_t *)(__search)); }
+
+__CRT_ALIAS __cdecl __MINGW_NOTHROW
+int _findnexti64 (intptr_t __handle, struct _finddatai64_t *__search)
+{ return _findnext32i64 (__handle, (struct _finddata32i64_t *)(__search)); }
+
+#else	/* !_USE_32BIT_TIME_T */
+/* ...but, when the user has NOT defined _USE_32BIT_TIME_T, we emulate
+ * the brain damaged default behaviour of Microsoft's own SDKs.  This
+ * accommodates an extended range of valid time stamp values, but it
+ * utterly destroys compatibility with MSVCRT.DLL!
+ */
+__CRT_ALIAS __cdecl __MINGW_NOTHROW
+intptr_t _findfirst (const char *__filespec, struct _finddata_t *__search)
+{ return _findfirst64i32 (__filespec, (struct _finddata64i32_t *)(__search)); }
+
+__CRT_ALIAS __cdecl __MINGW_NOTHROW
+int _findnext (intptr_t __handle, struct _finddata_t *__search)
+{ return _findnext64i32 (__handle, (struct _finddata64i32_t *)(__search)); }
+
+__CRT_ALIAS __cdecl __MINGW_NOTHROW
+intptr_t _findfirsti64 (const char *__filespec, struct _finddatai64_t *__search)
+{ return _findfirst64 (__filespec, (struct __finddata64_t *)(__search)); }
+
+__CRT_ALIAS __cdecl __MINGW_NOTHROW
+int _findnexti64 (intptr_t __handle, struct _finddatai64_t *__search)
+{ return _findnext64 (__handle, (struct __finddata64_t *)(__search)); }
+
+#endif	/* !_USE_32BIT_TIME_T */
+#endif	/* __MSVCRT_VERSION__ >= __MSVCR80_DLL */
+#endif	/* >= WIN2K || >= MSVCR61.DLL */
+
+#undef  __fd_name_t
+#endif	/* _IO_H */
+
+#if ! (defined _IO_H && defined _WCHAR_H)
+/* Wide character file name analogue of the file name search API;
+ * declared both here, in <io.h>, and via selective inclusion from
+ * <wchar.h>, it mirrors all aspects of the preceding API declarations,
+ * except that all file names are expressed as wchar_t.
+ */
+#define __fd_name_t  wchar_t
+
+/* Thus, the original API comprised this pair of generically specified
+ * data structures...
+ */
+struct _wfinddata_t __struct_finddata_t (time_t, _fsize_t);
+struct _wfinddatai64_t __struct_finddata_t (time_t, __int64);
+
+#if __MSVCRT_VERSION__ < __MSVCR80_DLL
+/* ...with corresponding functions to manipulate them; once again, there
+ * is no physical implementation of these in MSVCR80.DLL or later, so we
+ * declare them only when it is NOT specified that one of these run-time
+ * library versions is to be used.
+ */
+_CRTIMP __cdecl __MINGW_NOTHROW
+intptr_t _wfindfirst (const wchar_t *, struct _wfinddata_t *);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+int _wfindnext (intptr_t, struct _wfinddata_t *);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+intptr_t _wfindfirsti64 (const wchar_t *, struct _wfinddatai64_t *);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+int _wfindnexti64 (intptr_t, struct _wfinddatai64_t *);
+
+#endif	/* __MSVCRT_VERSION__ < __MSVCR80_DLL */
+
+#if _WIN32_WINNT >= _WIN32_WINNT_WIN2K || __MSVCRT_VERSION__ >= __MSVCR61_DLL
+/* Win2K also added an all-64-bit variant of the _wfinddata API to
+ * MSVCRT.DLL, after it originally appeared in MSVCR61.DLL.
+ */
+struct __wfinddata64_t __struct_finddata_t (__time64_t, __int64);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+intptr_t _wfindfirst64 (const wchar_t *, struct __wfinddata64_t *);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+int _wfindnext64 (intptr_t, struct __wfinddata64_t *);
+
+#if __MSVCRT_VERSION__ >= __MSVCR80_DLL
+/* MSVCR80.DLL introduced a further three variants, which remain
+ * exclusive to it and its later derivatives; none of these are
+ * available in any version of MSVCRT.DLL.
+ */
+struct __wfinddata32_t __struct_finddata_t (__time32_t, __int32);
+struct _wfinddata32i64_t __struct_finddata_t (__time32_t, __int64);
+struct _wfinddata64i32_t __struct_finddata_t (__time64_t, __int32);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+intptr_t _wfindfirst32 (const wchar_t *, struct __wfinddata32_t *);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+int _wfindnext32 (intptr_t, struct __wfinddata32_t *);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+intptr_t _wfindfirst32i64 (const wchar_t *, struct _wfinddata32i64_t *);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+int _wfindnext32i64 (intptr_t, struct _wfinddata32i64_t *);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+intptr_t _wfindfirst64i32 (const wchar_t *, struct _wfinddata64i32_t *);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+int _wfindnext64i32 (intptr_t, struct _wfinddata64i32_t *);
+
+/* Once again, the variants of this API with generic time_t data
+ * fields are NOT supported by any physical function implementation
+ * in MSVCR80.DLL and later, so must be emulated; (again, we do not
+ * provide any __JMPSTUB__ or __LIBIMPL__ references).
+ */
+#ifdef _USE_32BIT_TIME_T
+/* First, we provide inline implementations which retain compatibility
+ * with the physical implementations in MSVCRT.DLL; they require the
+ * user to define the _USE_32BIT_TIME_T feature test macro...
+ */
+__CRT_ALIAS __cdecl __MINGW_NOTHROW
+intptr_t _wfindfirst (const wchar_t *__filespec, struct _wfinddata_t *__search)
+{ return _wfindfirst32 (__filespec, (struct __wfinddata32_t *)(__search)); }
+
+__CRT_ALIAS __cdecl __MINGW_NOTHROW
+int _wfindnext (intptr_t __handle, struct _wfinddata_t *__search)
+{ return _wfindnext32 (__handle, (struct __wfinddata32_t *)(__search)); }
+
+__CRT_ALIAS __cdecl __MINGW_NOTHROW
+intptr_t _wfindfirsti64 (const wchar_t *__filespec, struct _wfinddatai64_t *__search)
+{ return _wfindfirst32i64 (__filespec, (struct _wfinddata32i64_t *)(__search)); }
+
+__CRT_ALIAS __cdecl __MINGW_NOTHROW
+int _wfindnexti64 (intptr_t __handle, struct _wfinddatai64_t *__search)
+{ return _wfindnext32i64 (__handle, (struct _wfinddata32i64_t *)(__search)); }
+
+#else	/* !_USE_32BIT_TIME_T */
+/* ...whereas the brain damaged Microsoft defaults, which apply when
+ * _USE_32BIT_TIME_T is not defined, break MSVCRT.DLL compatibility.
+ */
+__CRT_ALIAS __cdecl __MINGW_NOTHROW
+intptr_t _wfindfirst (const wchar_t *__filespec, struct _wfinddata_t *__search)
+{ return _wfindfirst64i32 (__filespec, (struct _wfinddata64i32_t *)(__search)); }
+
+__CRT_ALIAS __cdecl __MINGW_NOTHROW
+int _wfindnext (intptr_t __handle, struct _wfinddata_t *__search)
+{ return _wfindnext64i32 (__handle, (struct _wfinddata64i32_t *)(__search)); }
+
+__CRT_ALIAS __cdecl __MINGW_NOTHROW
+intptr_t _wfindfirsti64 (const wchar_t *__filespec, struct _wfinddatai64_t *__search)
+{ return _wfindfirst64 (__filespec, (struct __wfinddata64_t *)(__search)); }
+
+__CRT_ALIAS __cdecl __MINGW_NOTHROW
+int _wfindnexti64 (intptr_t __handle, struct _wfinddatai64_t *__search)
+{ return _wfindnext64 (__handle, (struct __wfinddata64_t *)(__search)); }
+
+#endif	/* !_USE_32BIT_TIME_T */
+#endif	/* __MSVCRT_VERSION__ >= MSVCR80.DLL */
+#endif	/* >= _WIN2K || >= MSVCR61.DLL */
+
+#undef __fd_name_t
+#endif	/* ! (_IO_H && _WCHAR_H) */
+
+/* We have no further use for the __struct_finddata_t macro; delete it!
+ */
+#undef __struct_finddata_t
+
+/* MSDN documents that <io.h> must be included to get a prototype for
+ * _findclose(), which kind of negates the usefulness of declaring the
+ * wchar_t variants of the file name search API in <wchar.h>; mitigate
+ * this anomaly, by declaring _findclose() such that either <io.h> or
+ * <wchar.h> will provide it.
+ */
+_CRTIMP __cdecl __MINGW_NOTHROW  int _findclose (intptr_t);
+
+#ifdef _IO_H
+/* The following declarations are to be exposed only when <io.h> is
+ * included directly.
+ */
+_CRTIMP __cdecl __MINGW_NOTHROW  int _chdir (const char *);
+_CRTIMP __cdecl __MINGW_NOTHROW  char *_getcwd (char *, int);
+_CRTIMP __cdecl __MINGW_NOTHROW  int _mkdir (const char *);
+_CRTIMP __cdecl __MINGW_NOTHROW  char *_mktemp (char *);
+_CRTIMP __cdecl __MINGW_NOTHROW  int _rmdir (const char *);
+_CRTIMP __cdecl __MINGW_NOTHROW  int _chmod (const char *, int);
+
+#ifdef __MSVCRT__
+_CRTIMP __cdecl __MINGW_NOTHROW  __int64 _filelengthi64 (int);
+_CRTIMP __cdecl __MINGW_NOTHROW  __int64 _lseeki64 (int, __int64, int);
+_CRTIMP __cdecl __MINGW_NOTHROW  __int64 _telli64 (int);
+
+#ifndef __NO_MINGW_LFS
+__CRT_INLINE __off64_t lseek64 (int, __off64_t, int);
+__CRT_INLINE __JMPSTUB__(( FUNCTION = lseek64, REMAPPED = _lseeki64 ))
+__off64_t lseek64 (int fd, __off64_t offset, int whence)
+{ return _lseeki64 (fd, (__int64)(offset), whence); }
+#endif
+
+#endif /* __MSVCRT__ */
+
+#ifndef _NO_OLDNAMES
+
+#ifndef _UWIN
+_CRTIMP __cdecl __MINGW_NOTHROW  int chdir (const char *);
+_CRTIMP __cdecl __MINGW_NOTHROW  char *getcwd (char *, int);
+_CRTIMP __cdecl __MINGW_NOTHROW  int mkdir (const char *);
+_CRTIMP __cdecl __MINGW_NOTHROW  char *mktemp (char *);
+_CRTIMP __cdecl __MINGW_NOTHROW  int rmdir (const char *);
+_CRTIMP __cdecl __MINGW_NOTHROW  int chmod (const char *, int);
+#endif /* _UWIN */
+
+#endif /* !_NO_OLDNAMES */
+#endif	/* _IO_H */
+
+_END_C_DECLS
+
+#endif	/* ! RC_INVOKED */
+
+#ifdef _IO_H
+/* Still applicable only when <io.h> is included directly, but we also
+ * allow the resource compiler to see these.
+ *
+ * TODO: Maximum number of open handles has not been tested; we just set
+ * it the same as FOPEN_MAX.
+ */
+#define HANDLE_MAX	FOPEN_MAX
+
+/* Some defines for _access() mode checking: (Microsoft doesn't define
+ * them, but it doesn't seem to hurt to add them ... or perhaps it does
+ * hurt; on newer versions of MSVCRT.DLL, an access mode of 1 may raise
+ * an invalid parameter error!
+ */
+#define F_OK	0	/* Check for file existence */
+#define X_OK	1	/* MS access() doesn't check for execute permission. */
+#define W_OK	2	/* Check for write permission */
+#define R_OK	4	/* Check for read permission */
+#endif	/* _IO_H */
+
+#ifndef RC_INVOKED
+
+_BEGIN_C_DECLS
+
+#ifdef _IO_H
+/* Again, specific to <io.h>, but not applicable to resources.
+ */
+_CRTIMP __cdecl __MINGW_NOTHROW  int _access (const char *, int);
+_CRTIMP __cdecl __MINGW_NOTHROW  int _chsize (int, long);
+_CRTIMP __cdecl __MINGW_NOTHROW  int _close (int);
+_CRTIMP __cdecl __MINGW_NOTHROW  int _commit (int);
+
+/* NOTE: The only significant permissions bit appears to be
+ * bit 7 (0x80), the "owner write permission" bit (on FAT).
+ */
+_CRTIMP __cdecl __MINGW_NOTHROW  int _creat (const char *, int);
+
+_CRTIMP __cdecl __MINGW_NOTHROW  int _dup (int);
+_CRTIMP __cdecl __MINGW_NOTHROW  int _dup2 (int, int);
+_CRTIMP __cdecl __MINGW_NOTHROW  long _filelength (int);
+_CRTIMP __cdecl __MINGW_NOTHROW  long _get_osfhandle (int);
+_CRTIMP __cdecl __MINGW_NOTHROW  int _isatty (int);
+
+#ifndef	_STREAM_COMPAT
+/* In a very odd turn of events this function is excluded from those
+ * files which define _STREAM_COMPAT. This is required in order to
+ * build GNU libio because of a conflict with _eof in streambuf.h
+ * line 107. Actually I might just be able to change the name of
+ * the enum member in streambuf.h ... we'll see. TODO
+ */
+_CRTIMP __cdecl __MINGW_NOTHROW  int _eof (int);
+#endif
+
+/* Locking files: attribute constants are defined in <sys/locking.h>,
+ * which users are expected to include.
+ */
+_CRTIMP __cdecl __MINGW_NOTHROW  int _locking (int, int, long);
+
+_CRTIMP __cdecl __MINGW_NOTHROW  long _lseek (int, long, int);
+
+/* Opening files, (or streams); manifest constants for construction of
+ * the mode flags are defined in <fctl.h>, which users are expected to
+ * include.  The "optional" third argument is an unsigned int; it is
+ * REQUIRED, when creating a new file, to specify the permissions to
+ * apply when said file is released by the creating process.
+ */
+_CRTIMP __cdecl __MINGW_NOTHROW  int _open (const char *, int, ...);
+
+_CRTIMP __cdecl __MINGW_NOTHROW  int _open_osfhandle (intptr_t, int);
+_CRTIMP __cdecl __MINGW_NOTHROW  int _pipe (int *, unsigned int, int);
+_CRTIMP __cdecl __MINGW_NOTHROW  int _read (int, void *, unsigned int);
+_CRTIMP __cdecl __MINGW_NOTHROW  int _setmode (int, int);
+
+/* Microsoft declares remove() & rename(), (but not their wchar_t
+ * counterparts), in <io.h> as well as in <stdio.h>; these should be
+ * consistent with <stdio.h>, but we trust the compiler to alert us
+ * (eventually) if not.
+ */
+_CRTIMP __cdecl __MINGW_NOTHROW  int remove (const char *);
+_CRTIMP __cdecl __MINGW_NOTHROW  int rename (const char *, const char *);
+
+/* Open files with specified sharing attributes; manifest constants
+ * for constructing the sharing mode argument are in <share.h>, which
+ * users must include.  The optional fourth argument is an unsigned
+ * int, specifing permissions to apply after closing a new file.
+ */
+_CRTIMP __cdecl __MINGW_NOTHROW  int _sopen (const char *, int, int, ...);
+
+_CRTIMP __cdecl __MINGW_NOTHROW  long _tell (int);
+
+/* FIXME: POSIX wants umask() in <sys/stat.h>, and, although vague,
+ * Microsoft may agree; we declare it here as well!
+ */
+_CRTIMP __cdecl __MINGW_NOTHROW  int _umask (int);
+_CRTIMP __cdecl __MINGW_NOTHROW  int _unlink (const char *);
+_CRTIMP __cdecl __MINGW_NOTHROW  int _write (int, const void *, unsigned int);
+#endif	/* _IO_H */
+
+#if defined __MSVCRT__ && ! (defined _IO_H && defined _WCHAR_H)
+/* These wchar_t functions are made available for selective inclusion
+ * by <wchar.h>, in addition to direct inclusion of <io.h>, but they
+ * are only supported by MSVCRT.DLL and derivatives; they don't exist
+ * in CRTDLL.DLL.  Furthermore, if both _IO_H and _WCHAR_H have been
+ * defined, by the time we get here, then this must be direct <io.h>
+ * inclusion, and we've already declared these by prior inclusion of
+ * <wchar.h>; there is no need to declare them again.
+ */
+_CRTIMP __cdecl __MINGW_NOTHROW  int _waccess (const wchar_t *, int);
+_CRTIMP __cdecl __MINGW_NOTHROW  int _wchmod (const wchar_t *, int);
+_CRTIMP __cdecl __MINGW_NOTHROW  int _wcreat (const wchar_t *, int);
+_CRTIMP __cdecl __MINGW_NOTHROW  int _wunlink (const wchar_t *);
+_CRTIMP __cdecl __MINGW_NOTHROW  int _wopen (const wchar_t *, int, ...);
+_CRTIMP __cdecl __MINGW_NOTHROW  int _wsopen (const wchar_t *, int, int, ...);
+_CRTIMP __cdecl __MINGW_NOTHROW  wchar_t *_wmktemp (wchar_t *);
+#endif /* __MSVCRT__ && ! (_IO_H && _WCHAR_H) */
+
+#if defined _IO_H && ! defined _NO_OLDNAMES
+/* Non-underscored versions of non-ANSI functions to improve portability;
+ * these are implemented in libmoldname.a, and once again are declared
+ * only when <io.h> is included directly.
+ */
+#ifndef _UWIN
+_CRTIMP __cdecl __MINGW_NOTHROW  int access (const char*, int);
+_CRTIMP __cdecl __MINGW_NOTHROW  int chsize (int, long );
+_CRTIMP __cdecl __MINGW_NOTHROW  int close (int);
+_CRTIMP __cdecl __MINGW_NOTHROW  int creat (const char*, int);
+_CRTIMP __cdecl __MINGW_NOTHROW  int dup (int);
+_CRTIMP __cdecl __MINGW_NOTHROW  int dup2 (int, int);
+_CRTIMP __cdecl __MINGW_NOTHROW  int eof (int);
+_CRTIMP __cdecl __MINGW_NOTHROW  long filelength (int);
+_CRTIMP __cdecl __MINGW_NOTHROW  int isatty (int);
+_CRTIMP __cdecl __MINGW_NOTHROW  long lseek (int, long, int);
+_CRTIMP __cdecl __MINGW_NOTHROW  int open (const char*, int, ...);
+_CRTIMP __cdecl __MINGW_NOTHROW  int read (int, void*, unsigned int);
+_CRTIMP __cdecl __MINGW_NOTHROW  int setmode (int, int);
+_CRTIMP __cdecl __MINGW_NOTHROW  int sopen (const char*, int, int, ...);
+_CRTIMP __cdecl __MINGW_NOTHROW  long tell (int);
+_CRTIMP __cdecl __MINGW_NOTHROW  int umask (int);
+_CRTIMP __cdecl __MINGW_NOTHROW  int unlink (const char*);
+_CRTIMP __cdecl __MINGW_NOTHROW  int write (int, const void*, unsigned int);
+#endif /* !_UWIN */
+
+#ifdef __USE_MINGW_ACCESS
+/* Old versions of MSVCRT.DLL's access() just ignored X_OK, while the
+ * version shipped with Vista fails; this inline implementation of the
+ * portably named access() function protects against such failure.
+ */
+#define access(__fname,__mode)  __mingw_access (__fname, __mode)
+static __inline__ int __mingw_access (const char* __fname, int __mode)
+  { return  _access (__fname, __mode & ~X_OK); }
+#endif	/* _USE_MINGW_ACCESS */
+
+#if 0
+/* FIXME:
+ * Wide character versions: may also be declared in <wchar.h>.
+ * Where do these live?  Not in libmoldname.a nor in libmsvcrt.a;
+ * do they exist at all?
+ */
+int 		waccess(const wchar_t *, int);
+int 		wchmod(const wchar_t *, int);
+int 		wcreat(const wchar_t *, int);
+long 		wfindfirst(wchar_t *, struct _wfinddata_t *);
+int 		wfindnext(long, struct _wfinddata_t *);
+int 		wunlink(const wchar_t *);
+int 		wrename(const wchar_t *, const wchar_t *);
+int 		wopen(const wchar_t *, int, ...);
+int 		wsopen(const wchar_t *, int, int, ...);
+wchar_t * 	wmktemp(wchar_t *);
+#endif
+
+#endif	/* !_NO_OLDNAMES */
+
+_END_C_DECLS
+
+#endif	/* ! RC_INVOKED */
+#endif	/* !_IO_H: $RCSfile: io.h,v $: end of file */
Index: Daodan/MinGW/include/ipexport.h
===================================================================
--- Daodan/MinGW/include/ipexport.h	(revision 1046)
+++ Daodan/MinGW/include/ipexport.h	(revision 1046)
@@ -0,0 +1,88 @@
+#ifndef _IPEXPORT_H
+#define _IPEXPORT_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#ifndef ANY_SIZE
+#define ANY_SIZE 1
+#endif
+#define MAX_ADAPTER_NAME 128
+/* IP STATUS flags */
+#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_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_GENERAL_FAILURE  (IP_STATUS_BASE + 50)
+#define MAX_IP_STATUS   IP_GENERAL_FAILURE
+#define IP_PENDING  (IP_STATUS_BASE + 255)
+/* IP header Flags values */
+#define IP_FLAG_DF  0x2
+/*  IP Option types */
+#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
+
+typedef unsigned long IPAddr, IPMask, IP_STATUS;
+typedef struct ip_option_information {
+  unsigned char Ttl;
+  unsigned char Tos;
+  unsigned char Flags;
+  unsigned char OptionsSize;
+  unsigned char* OptionsData;
+}IP_OPTION_INFORMATION, *PIP_OPTION_INFORMATION;
+typedef struct icmp_echo_reply {
+  IPAddr        Address;
+  unsigned long Status;
+  unsigned long RoundTripTime;
+  unsigned short    DataSize;
+  unsigned short    Reserved;
+  void* Data;
+  struct ip_option_information   Options;
+} ICMP_ECHO_REPLY, *PICMP_ECHO_REPLY;
+typedef struct {
+  ULONG Index;
+  WCHAR  Name[MAX_ADAPTER_NAME];
+} IP_ADAPTER_INDEX_MAP, *PIP_ADAPTER_INDEX_MAP;
+typedef struct {
+  LONG NumAdapters;
+  IP_ADAPTER_INDEX_MAP Adapter[ANY_SIZE];
+} 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;
+#ifdef __cplusplus
+}
+#endif
+#endif /* _IPEXPORT_H */
Index: Daodan/MinGW/include/iphlpapi.h
===================================================================
--- Daodan/MinGW/include/iphlpapi.h	(revision 1046)
+++ Daodan/MinGW/include/iphlpapi.h	(revision 1046)
@@ -0,0 +1,77 @@
+#ifndef _IPHLPAPI_H
+#define _IPHLPAPI_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#include <iprtrmib.h>
+#include <ipexport.h>
+#include <iptypes.h>
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#if (_WIN32_WINNT >= 0x0501)
+#define GAA_FLAG_SKIP_UNICAST 0x00000001
+#define GAA_FLAG_SKIP_ANYCAST 0x00000002
+#define GAA_FLAG_SKIP_MULTICAST 0x00000004
+#define GAA_FLAG_SKIP_DNS_SERVER 0x00000008
+#define GAA_FLAG_INCLUDE_PREFIX 0x00000010
+#define GAA_FLAG_SKIP_FRIENDLY_NAME 0x00000020
+#endif
+
+DWORD WINAPI AddIPAddress(IPAddr,IPMask,DWORD,PULONG,PULONG);
+DWORD WINAPI CreateIpForwardEntry(PMIB_IPFORWARDROW);
+DWORD WINAPI CreateIpNetEntry(PMIB_IPNETROW);
+DWORD WINAPI CreateProxyArpEntry(DWORD,DWORD,DWORD);
+DWORD WINAPI DeleteIPAddress(ULONG);
+DWORD WINAPI DeleteIpForwardEntry(PMIB_IPFORWARDROW);
+DWORD WINAPI DeleteIpNetEntry(PMIB_IPNETROW);
+DWORD WINAPI DeleteProxyArpEntry(DWORD,DWORD,DWORD);
+DWORD WINAPI EnableRouter(HANDLE*,OVERLAPPED*);
+DWORD WINAPI FlushIpNetTable(DWORD);
+#if (_WIN32_WINNT >= 0x0501 && defined(_WINSOCK2_H))
+ULONG WINAPI GetAdaptersAddresses(ULONG,ULONG,PVOID,PIP_ADAPTER_ADDRESSES,PULONG);
+#endif
+DWORD WINAPI GetAdapterIndex(LPWSTR,PULONG);
+DWORD WINAPI GetAdaptersInfo(PIP_ADAPTER_INFO,PULONG);
+DWORD WINAPI GetBestInterface(IPAddr,PDWORD);
+DWORD WINAPI GetBestRoute(DWORD,DWORD,PMIB_IPFORWARDROW);
+#if (_WIN32_WINNT >= 0x0501)
+DWORD WINAPI GetExtendedTcpTable (PVOID,PDWORD,BOOL,ULONG,TCP_TABLE_CLASS,ULONG);
+#endif
+DWORD WINAPI GetFriendlyIfIndex(DWORD);
+DWORD WINAPI GetIcmpStatistics(PMIB_ICMP);
+DWORD WINAPI GetIfEntry(PMIB_IFROW);
+DWORD WINAPI GetIfTable(PMIB_IFTABLE,PULONG,BOOL);
+DWORD WINAPI GetInterfaceInfo(PIP_INTERFACE_INFO,PULONG);
+DWORD WINAPI GetIpAddrTable(PMIB_IPADDRTABLE,PULONG,BOOL);
+DWORD WINAPI GetIpForwardTable(PMIB_IPFORWARDTABLE,PULONG,BOOL);
+DWORD WINAPI GetIpNetTable(PMIB_IPNETTABLE,PULONG,BOOL);
+DWORD WINAPI GetIpStatistics(PMIB_IPSTATS);
+DWORD WINAPI GetNetworkParams(PFIXED_INFO,PULONG);
+DWORD WINAPI GetNumberOfInterfaces(PDWORD);
+DWORD WINAPI GetPerAdapterInfo(ULONG,PIP_PER_ADAPTER_INFO, PULONG);
+BOOL WINAPI GetRTTAndHopCount(IPAddr,PULONG,ULONG,PULONG);
+DWORD WINAPI GetTcpStatistics(PMIB_TCPSTATS);
+DWORD WINAPI GetTcpTable(PMIB_TCPTABLE,PDWORD,BOOL);
+DWORD WINAPI GetUniDirectionalAdapterInfo(PIP_UNIDIRECTIONAL_ADAPTER_ADDRESS,PULONG);
+DWORD WINAPI GetUdpStatistics(PMIB_UDPSTATS);
+DWORD WINAPI GetUdpTable(PMIB_UDPTABLE,PDWORD,BOOL);
+DWORD WINAPI IpReleaseAddress(PIP_ADAPTER_INDEX_MAP);
+DWORD WINAPI IpRenewAddress(PIP_ADAPTER_INDEX_MAP);
+DWORD WINAPI NotifyAddrChange(PHANDLE,LPOVERLAPPED);
+DWORD WINAPI NotifyRouteChange(PHANDLE,LPOVERLAPPED);
+DWORD WINAPI SendARP(IPAddr,IPAddr,PULONG,PULONG);
+DWORD WINAPI SetIfEntry(PMIB_IFROW);
+DWORD WINAPI SetIpForwardEntry(PMIB_IPFORWARDROW);
+DWORD WINAPI SetIpNetEntry(PMIB_IPNETROW);
+DWORD WINAPI SetIpStatistics(PMIB_IPSTATS);
+DWORD WINAPI SetIpTTL(UINT);
+DWORD WINAPI SetTcpEntry(PMIB_TCPROW);
+DWORD WINAPI UnenableRouter(OVERLAPPED*, LPDWORD);
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* _IPHLPAPI_H */
Index: Daodan/MinGW/include/ipifcons.h
===================================================================
--- Daodan/MinGW/include/ipifcons.h	(revision 1046)
+++ Daodan/MinGW/include/ipifcons.h	(revision 1046)
@@ -0,0 +1,199 @@
+/*
+	ipifcons.h - Routing and Remote Access Services
+
+	This file is part of a free library for the Win32 API.
+
+	This library is distributed in the hope that it will be useful,
+	but WITHOUT ANY WARRANTY; without even the implied warranty of
+	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+*/
+#ifndef _IPIFCONS_H
+#define _IPIFCONS_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#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_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 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
+
+#endif
Index: Daodan/MinGW/include/ipinfoid.h
===================================================================
--- Daodan/MinGW/include/ipinfoid.h	(revision 1046)
+++ Daodan/MinGW/include/ipinfoid.h	(revision 1046)
@@ -0,0 +1,43 @@
+/*
+ * ipinfoid.h - Routing and Remote Access Services
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain.  You may use,
+ * modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY.  ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED.  This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+#ifndef _IPINFOID_H
+#define _IPINFOID_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+/*--- Router Management Reference - Router Information Enumeration Types */
+#define IP_IN_FILTER_INFO 0xFFFF0001
+#define IP_OUT_FILTER_INFO 0xFFFF0002
+#define IP_GLOBAL_INFO 0xFFFF0003
+#define IP_INTERFACE_STATUS_INFO 0xFFFF0004
+#define IP_ROUTE_INFO 0xFFFF0005
+#define IP_PROT_PRIORITY_INFO 0xFFFF0006
+#define IP_ROUTER_DISC_INFO 0xFFFF0007
+#define IP_DEMAND_DIAL_FILTER_INFO 0xFFFF0009
+#define IP_MCAST_HEARBEAT_INFO 0xFFFF000A
+#define IP_MCAST_BOUNDARY_INFO 0xFFFF000B
+#define IP_IPINIP_CFG_INFO 0xFFFF000C
+#define IP_IFFILTER_INFO 0xFFFF000D
+#define IP_MCAST_LIMIT_INFO 0xFFFF000E
+/*#define IP_DEMAND_DIAL_FILTER_INFO_V6 */
+/*#define IP_FILTER_ENABLE_INFO_V6 */
+/*#define IP_IN_FILTER_INFO_V6 */
+/*#define IP_IFFILTER_INFO_V6 */
+/*#define IP_OUT_FILTER_INFO_V6 */
+/*#define IPV6_GLOBAL_INFO */
+/*#define IPV6_ROUTE_INFO */
+
+#endif
Index: Daodan/MinGW/include/iprtrmib.h
===================================================================
--- Daodan/MinGW/include/iprtrmib.h	(revision 1046)
+++ Daodan/MinGW/include/iprtrmib.h	(revision 1046)
@@ -0,0 +1,246 @@
+#ifndef _IPRTRMIB_H
+#define _IPRTRMIB_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#include <ipifcons.h>
+#ifdef __cplusplus
+extern "C" {
+#endif
+#ifndef ANY_SIZE
+#define ANY_SIZE 1
+#endif
+#define MAXLEN_PHYSADDR 8
+#define MAXLEN_IFDESCR 256
+#ifndef MAX_INTERFACE_NAME_LEN
+#define MAX_INTERFACE_NAME_LEN 256
+#endif
+#define MIB_IPNET_TYPE_OTHER 1
+#define MIB_IPNET_TYPE_INVALID 2
+#define MIB_IPNET_TYPE_DYNAMIC 3
+#define MIB_IPNET_TYPE_STATIC 4
+#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_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
+#define MIB_USE_CURRENT_TTL ((DWORD)-1)
+#define MIB_USE_CURRENT_FORWARDING ((DWORD)-1)
+#define MIB_TCP_MAXCONN_DYNAMIC ((DWORD)-1)
+typedef enum {
+  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 {
+  DWORD dwAddr;
+  DWORD dwIndex;
+  DWORD dwMask;
+  DWORD dwBCastAddr;
+  DWORD dwReasmSize;
+  unsigned short unused1;
+  unsigned short wType;
+} MIB_IPADDRROW, *PMIB_IPADDRROW;
+typedef struct {
+  DWORD dwNumEntries;
+  MIB_IPADDRROW table[ANY_SIZE];
+} MIB_IPADDRTABLE, *PMIB_IPADDRTABLE;
+typedef struct {
+  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;
+typedef struct {
+  DWORD dwNumEntries;
+  MIB_IPFORWARDROW table[ANY_SIZE];
+} MIB_IPFORWARDTABLE, *PMIB_IPFORWARDTABLE;
+typedef struct {
+  DWORD dwIndex;
+  DWORD dwPhysAddrLen;
+  BYTE bPhysAddr[MAXLEN_PHYSADDR];
+  DWORD dwAddr;
+  DWORD dwType;
+} MIB_IPNETROW, *PMIB_IPNETROW;
+typedef struct {
+  DWORD dwNumEntries;
+  MIB_IPNETROW table[ANY_SIZE];
+} MIB_IPNETTABLE, *PMIB_IPNETTABLE;
+typedef struct {
+  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 {
+  MIBICMPSTATS icmpInStats;
+  MIBICMPSTATS icmpOutStats;
+} MIBICMPINFO, *PMIBICMPINFO;
+typedef struct {
+  MIBICMPINFO stats;
+} MIB_ICMP, *PMIB_ICMP;
+typedef struct {
+  WCHAR wszName[MAX_INTERFACE_NAME_LEN];
+  DWORD dwIndex;
+  DWORD dwType;
+  DWORD dwMtu;
+  DWORD dwSpeed;
+  DWORD dwPhysAddrLen;
+  BYTE bPhysAddr[MAXLEN_PHYSADDR];
+  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[MAXLEN_IFDESCR];
+} MIB_IFROW, *PMIB_IFROW;
+typedef struct {
+  DWORD dwNumEntries;
+  MIB_IFROW table[ANY_SIZE];
+} MIB_IFTABLE, *PMIB_IFTABLE;
+typedef struct {
+  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;
+typedef struct {
+  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;
+typedef struct {
+  DWORD dwState;
+  DWORD dwLocalAddr;
+  DWORD dwLocalPort;
+  DWORD dwRemoteAddr;
+  DWORD dwRemotePort;
+} MIB_TCPROW, *PMIB_TCPROW;
+typedef struct {
+  DWORD dwNumEntries;
+  MIB_TCPROW table[ANY_SIZE];
+} MIB_TCPTABLE, *PMIB_TCPTABLE;
+typedef struct {
+  DWORD dwState;
+  DWORD dwLocalAddr;
+  DWORD dwLocalPort;
+  DWORD dwRemoteAddr;
+  DWORD dwRemotePort;
+  DWORD dwOwningPid;
+} MIB_TCPROW_OWNER_PID, *PMIB_TCPROW_OWNER_PID;
+typedef struct {
+  DWORD dwNumEntries;
+  MIB_TCPROW_OWNER_PID table[ANY_SIZE];
+} MIB_TCPTABLE_OWNER_PID, *PMIB_TCPTABLE_OWNER_PID;
+typedef struct {
+  DWORD dwInDatagrams;
+  DWORD dwNoPorts;
+  DWORD dwInErrors;
+  DWORD dwOutDatagrams;
+  DWORD dwNumAddrs;
+} MIB_UDPSTATS, *PMIB_UDPSTATS;
+typedef struct {
+  DWORD dwLocalAddr;
+  DWORD dwLocalPort;
+} MIB_UDPROW, *PMIB_UDPROW;
+typedef struct {
+  DWORD dwNumEntries;
+  MIB_UDPROW table[ANY_SIZE];
+} MIB_UDPTABLE, *PMIB_UDPTABLE;
+typedef struct {
+  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 {
+  DWORD dwNumEntries;
+  MIB_TCP6ROW_OWNER_PID table[ANY_SIZE];
+} MIB_TCP6TABLE_OWNER_PID,  *PMIB_TCP6TABLE_OWNER_PID;
+#ifdef __cplusplus
+}
+#endif
+#endif /* _IPRTRMIB_H */
Index: Daodan/MinGW/include/iptypes.h
===================================================================
--- Daodan/MinGW/include/iptypes.h	(revision 1046)
+++ Daodan/MinGW/include/iptypes.h	(revision 1046)
@@ -0,0 +1,229 @@
+#ifndef _IPTYPES_H
+#define _IPTYPES_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#include <sys/types.h>
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define DEFAULT_MINIMUM_ENTITIES 32
+#define MAX_ADAPTER_ADDRESS_LENGTH 8
+#define MAX_ADAPTER_DESCRIPTION_LENGTH 128
+#define MAX_ADAPTER_NAME_LENGTH 256
+#define MAX_DOMAIN_NAME_LEN 128
+#define MAX_HOSTNAME_LEN 128
+#define MAX_SCOPE_ID_LEN 256
+#define BROADCAST_NODETYPE 1
+#define PEER_TO_PEER_NODETYPE 2
+#define MIXED_NODETYPE 4
+#define HYBRID_NODETYPE 8
+#define IF_OTHER_ADAPTERTYPE 0
+#define IF_ETHERNET_ADAPTERTYPE 1
+#define IF_TOKEN_RING_ADAPTERTYPE 2
+#define IF_FDDI_ADAPTERTYPE 3
+#define IF_PPP_ADAPTERTYPE 4
+#define IF_LOOPBACK_ADAPTERTYPE 5
+#if (_WIN32_WINNT >= 0x0501)
+#define IP_ADAPTER_DDNS_ENABLED 0x00000001
+#define IP_ADAPTER_REGISTER_ADAPTER_SUFFIX 0x00000002
+#define IP_ADAPTER_DHCP_ENABLED 0x00000004
+#define IP_ADAPTER_RECEIVE_ONLY 0x00000008
+#define IP_ADAPTER_NO_MULTICAST 0x00000010
+#define IP_ADAPTER_IPV6_OTHER_STATEFUL_CONFIG 0x00000020
+#define IP_ADAPTER_ADDRESS_DNS_ELIGIBLE 0x00000001
+#define IP_ADAPTER_ADDRESS_TRANSIENT 0x00000002
+#endif
+
+typedef struct {
+  char String[16];
+} 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[MAX_ADAPTER_NAME_LENGTH+4];
+  char Description[MAX_ADAPTER_DESCRIPTION_LENGTH+4];
+  UINT AddressLength;
+  BYTE Address[MAX_ADAPTER_ADDRESS_LENGTH];
+  DWORD Index;
+  UINT Type;
+  UINT DhcpEnabled;
+  PIP_ADDR_STRING CurrentIpAddress;
+  IP_ADDR_STRING IpAddressList;
+  IP_ADDR_STRING GatewayList;
+  IP_ADDR_STRING DhcpServer;
+  BOOL HaveWins;
+  IP_ADDR_STRING PrimaryWinsServer;
+  IP_ADDR_STRING SecondaryWinsServer;
+  time_t LeaseObtained;
+  time_t LeaseExpires;
+} IP_ADAPTER_INFO, *PIP_ADAPTER_INFO;
+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 _FIXED_INFO {
+  char HostName[MAX_HOSTNAME_LEN+4] ;
+  char DomainName[MAX_DOMAIN_NAME_LEN+4];
+  PIP_ADDR_STRING CurrentDnsServer;
+  IP_ADDR_STRING DnsServerList;
+  UINT NodeType;
+  char ScopeId[MAX_SCOPE_ID_LEN+4];
+  UINT EnableRouting;
+  UINT EnableProxy;
+  UINT EnableDns;
+} FIXED_INFO, *PFIXED_INFO;
+#if (_WIN32_WINNT >= 0x0501) && defined(_WINSOCK2_H)
+typedef enum {
+  IfOperStatusUp = 1,
+  IfOperStatusDown,
+  IfOperStatusTesting,
+  IfOperStatusUnknown,
+  IfOperStatusDormant,
+  IfOperStatusNotPresent,
+  IfOperStatusLowerLayerDown
+} IF_OPER_STATUS;
+typedef enum {
+  IpDadStateInvalid = 0,
+  IpDadStateTentative,
+  IpDadStateDuplicate,
+  IpDadStateDeprecated,
+  IpDadStatePreferred
+} IP_DAD_STATE;
+typedef enum {
+  IpPrefixOriginOther = 0,
+  IpPrefixOriginManual,
+  IpPrefixOriginWellKnown,
+  IpPrefixOriginDhcp,
+  IpPrefixOriginRouterAdvertisement
+} IP_PREFIX_ORIGIN;
+typedef enum {
+  IpSuffixOriginOther = 0,
+  IpSuffixOriginManual,
+  IpSuffixOriginWellKnown,
+  IpSuffixOriginDhcp,
+  IpSuffixOriginLinkLayerAddress,
+  IpSuffixOriginRandom
+} IP_SUFFIX_ORIGIN;
+typedef enum {
+  ScopeLevelInterface = 1,
+  ScopeLevelLink = 2,
+  ScopeLevelSubnet = 3,
+  ScopeLevelAdmin = 4,
+  ScopeLevelSite = 5,
+  ScopeLevelOrganization = 8,
+  ScopeLevelGlobal = 14
+} SCOPE_LEVEL;
+typedef struct {
+  ULONG Index;
+  ULONG MediaType;
+  UCHAR ConnectionType;
+  UCHAR AccessType;
+  GUID DeviceGuid;
+  GUID InterfaceGuid;
+} IP_INTERFACE_NAME_INFO,*PIP_INTERFACE_NAME_INFO;
+typedef struct _IP_ADAPTER_ANYCAST_ADDRESS {
+  _ANONYMOUS_UNION union {
+    ULONGLONG Alignment;
+    _ANONYMOUS_STRUCT struct {
+      ULONG Length;
+      DWORD Flags;
+    } DUMMYSTRUCTNAME;
+  } DUMMYUNIONNAME;
+  struct _IP_ADAPTER_ANYCAST_ADDRESS* Next;
+  SOCKET_ADDRESS Address;
+} IP_ADAPTER_ANYCAST_ADDRESS,*PIP_ADAPTER_ANYCAST_ADDRESS;
+typedef struct _IP_ADAPTER_MULTICAST_ADDRESS {
+  _ANONYMOUS_UNION union {
+    ULONGLONG Alignment;
+    _ANONYMOUS_STRUCT struct {
+      ULONG Length;
+      DWORD Flags;
+    } DUMMYSTRUCTNAME;
+  } DUMMYUNIONNAME;
+  struct _IP_ADAPTER_MULTICAST_ADDRESS* Next;
+  SOCKET_ADDRESS Address;
+} IP_ADAPTER_MULTICAST_ADDRESS,*PIP_ADAPTER_MULTICAST_ADDRESS;
+typedef struct _IP_ADAPTER_UNICAST_ADDRESS {
+  _ANONYMOUS_UNION union {
+    ULONGLONG Alignment;
+    _ANONYMOUS_STRUCT struct {
+      ULONG Length;
+      DWORD Flags;
+    }  DUMMYSTRUCTNAME;
+  } DUMMYUNIONNAME;
+  struct _IP_ADAPTER_UNICAST_ADDRESS* 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,*PIP_ADAPTER_UNICAST_ADDRESS;
+typedef struct _IP_ADAPTER_DNS_SERVER_ADDRESS {
+  _ANONYMOUS_UNION union {
+    ULONGLONG Alignment;
+    _ANONYMOUS_STRUCT struct {
+      ULONG Length;
+      DWORD Reserved;
+    } DUMMYSTRUCTNAME;
+  } DUMMYUNIONNAME;
+  struct _IP_ADAPTER_DNS_SERVER_ADDRESS* Next;
+  SOCKET_ADDRESS Address;
+} IP_ADAPTER_DNS_SERVER_ADDRESS,*PIP_ADAPTER_DNS_SERVER_ADDRESS;
+typedef struct _IP_ADAPTER_PREFIX {
+  _ANONYMOUS_UNION union {
+    ULONGLONG Alignment;
+    _ANONYMOUS_STRUCT struct {
+      ULONG Length;
+      DWORD Flags;
+    } DUMMYSTRUCTNAME;
+  } DUMMYUNIONNAME;
+  struct _IP_ADAPTER_PREFIX* Next;
+  SOCKET_ADDRESS Address;
+  ULONG PrefixLength;
+} IP_ADAPTER_PREFIX,*PIP_ADAPTER_PREFIX;
+typedef struct _IP_ADAPTER_ADDRESSES {
+  _ANONYMOUS_UNION union {
+    ULONGLONG Alignment;
+    _ANONYMOUS_STRUCT struct {
+      ULONG Length;
+      DWORD IfIndex;
+    } DUMMYSTRUCTNAME;
+  } DUMMYUNIONNAME;
+  struct _IP_ADAPTER_ADDRESSES* Next;
+  PCHAR AdapterName;
+  PIP_ADAPTER_UNICAST_ADDRESS FirstUnicastAddress;
+  PIP_ADAPTER_ANYCAST_ADDRESS FirstAnycastAddress;
+  PIP_ADAPTER_MULTICAST_ADDRESS FirstMulticastAddress;
+  PIP_ADAPTER_DNS_SERVER_ADDRESS FirstDnsServerAddress;
+  PWCHAR DnsSuffix;
+  PWCHAR Description;
+  PWCHAR FriendlyName;
+  BYTE PhysicalAddress[MAX_ADAPTER_ADDRESS_LENGTH];
+  DWORD PhysicalAddressLength;
+  DWORD Flags;
+  DWORD Mtu;
+  DWORD IfType;
+  IF_OPER_STATUS OperStatus;
+  DWORD Ipv6IfIndex;
+  DWORD ZoneIndices[16];
+  PIP_ADAPTER_PREFIX FirstPrefix;
+} IP_ADAPTER_ADDRESSES,*PIP_ADAPTER_ADDRESSES;
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* _IPTYPES_H */
Index: Daodan/MinGW/include/ipxconst.h
===================================================================
--- Daodan/MinGW/include/ipxconst.h	(revision 1046)
+++ Daodan/MinGW/include/ipxconst.h	(revision 1046)
@@ -0,0 +1,36 @@
+/*
+ * ipxconst.h - Routing and Remote Access Services
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain.  You may use,
+ * modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY.  ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED.  This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+#ifndef _IPXCONST_H
+#define _IPXCONST_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*--- Router Management Reference - Router Information Structures - IPX Information Structures */
+#if (_WIN32_WINNT >= 0x0500)
+#define ADMIN_STATE_DISABLED 0x00000001
+#define ADMIN_STATE_ENABLED 0x00000002
+#define ADMIN_STATE_ENABLED_ONLY_FOR_NETBIOS_STATIC_ROUTING 0x00000003
+#define ADMIN_STATE_ENABLED_ONLY_FOR_OPER_STATE_UP 0x00000004
+#endif /* (_WIN32_WINNT >= 0x0500) */
+
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/ipxrtdef.h
===================================================================
--- Daodan/MinGW/include/ipxrtdef.h	(revision 1046)
+++ Daodan/MinGW/include/ipxrtdef.h	(revision 1046)
@@ -0,0 +1,58 @@
+/*
+ * ipxrtdef.h - Routing and Remote Access Services
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain.  You may use,
+ * modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY.  ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED.  This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+#ifndef _IPXRTDEF_H
+#define _IPXRTDEF_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#include <stm.h>
+#include <ipxconst.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*--- Router Management Reference - Router Information Enumeration Types */
+#define IPX_INTERFACE_INFO_TYPE 0x0001
+#define IPX_STATIC_ROUTE_INFO_TYPE 0x0002
+#define IPX_STATIC_SERVICE_INFO_TYPE 0x0003
+#define IPX_SERVICE_FILTER_INFO_TYPE 0x0004
+#define IPX_ROUTE_FILTER_INFO_TYPE 0x0005
+#define IPX_IN_TRAFFIC_FILTER_INFO_TYPE 0x0006
+#define IPX_ADAPTER_INFO_TYPE 0x0007
+#define IPXWAN_INTERFACE_INFO_TYPE 0x0008
+#define IPX_GLOBAL_INFO_TYPE 0x0009
+#define IPX_STATIC_NETBIOS_NAME_INFO_TYPE 0x000A
+#define IPX_IN_TRAFFIC_FILTER_GLOBAL_INFO_TYPE 0x000B
+#define IPX_OUT_TRAFFIC_FILTER_INFO_TYPE 0x000C
+#define IPX_OUT_TRAFFIC_FILTER_GLOBAL_INFO_TYPE 0x000D
+/*--- Router Management Reference - Router Information Structures - IPX Information Structures */
+#if (_WIN32_WINNT >= 0x0500)
+typedef struct _IPX_IF_INFO {
+	ULONG AdminState;
+	ULONG NetbiosAccept;
+	ULONG NetbiosDeliver;
+} IPX_IF_INFO,*PIPX_IF_INFO;
+typedef IPX_SERVER_ENTRY IPX_STATIC_SERVICE_INFO,*PIPX_STATIC_SERVICE_INFO;
+typedef struct _IPXWAN_IF_INFO {
+	ULONG AdminState;
+} IPXWAN_IF_INFO,*PIPXWAN_IF_INFO;
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/ipxtfflt.h
===================================================================
--- Daodan/MinGW/include/ipxtfflt.h	(revision 1046)
+++ Daodan/MinGW/include/ipxtfflt.h	(revision 1046)
@@ -0,0 +1,38 @@
+/*
+ * ipxtfflt.h - Routing and Remote Access Services
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain.  You may use,
+ * modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY.  ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED.  This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+#ifndef _IPXTFFLT_H
+#define _IPXTFFLT_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*--- Router Management Reference - Router Information Structures - IPX Information Structures */
+#if 0
+typedef struct {
+	???
+} IPX_TRAFFIC_FILTER_INFO,*PIPX_TRAFFIC_FILTER_INFO;
+typedef struct {
+	???
+} IPX_TRAFFIC_FILTER_GLOBAL_INFO,*PIPX_TRAFFIC_FILTER_GLOBAL_INFO;
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/isguids.h
===================================================================
--- Daodan/MinGW/include/isguids.h	(revision 1046)
+++ Daodan/MinGW/include/isguids.h	(revision 1046)
@@ -0,0 +1,15 @@
+#ifndef _ISGUID_H
+#define _ISGUID_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+extern const GUID CLSID_InternetShortcut;
+extern const GUID IID_IUniformResourceLocator;
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/ks.h
===================================================================
--- Daodan/MinGW/include/ks.h	(revision 1046)
+++ Daodan/MinGW/include/ks.h	(revision 1046)
@@ -0,0 +1,20 @@
+#ifndef _KS_H
+#define _KS_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*--- DirectShow Reference - DirectShow Structures */
+typedef struct {
+	ULONG Size;
+	ULONG Count;
+} KSMULTIPLE_ITEM,*PKSMULTIPLE_ITEM;
+
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/ksmedia.h
===================================================================
--- Daodan/MinGW/include/ksmedia.h	(revision 1046)
+++ Daodan/MinGW/include/ksmedia.h	(revision 1046)
@@ -0,0 +1,23 @@
+#ifndef _KSMEDIA_H
+#define _KSMEDIA_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*--- DirectShow Reference - DirectShow Enumerated Types - CameraControlFlags Enumeration */
+#define KSPROPERTY_CAMERACONTROL_FLAGS_AUTO 0x0001L
+#define KSPROPERTY_CAMERACONTROL_FLAGS_MANUAL 0x0002L
+#define KSPROPERTY_CAMERACONTROL_FLAGS_ABSOLUTE 0x0000L
+#define KSPROPERTY_CAMERACONTROL_FLAGS_RELATIVE 0x0010L
+/*--- DirectShow Reference - DirectShow Enumerated Types - VideoProcAmpFlags Enumeration */
+#define KSPROPERTY_VIDEOPROCAMP_FLAGS_AUTO 0X0001L
+#define KSPROPERTY_VIDEOPROCAMP_FLAGS_MANUAL 0X0002L
+
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/largeint.h
===================================================================
--- Daodan/MinGW/include/largeint.h	(revision 1046)
+++ Daodan/MinGW/include/largeint.h	(revision 1046)
@@ -0,0 +1,112 @@
+/*
+  largeint.h
+
+  Header for 64 bit integer arithmetics library
+
+ */
+#ifndef _LARGEINT_H
+#define _LARGEINT_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#include <windows.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifdef _HAVE_INT64
+#define _toi (__int64)
+#define _toui (unsigned __int64)
+#else
+#error "64 bit integers not supported"
+#endif
+
+/*
+  We don't let the compiler see the prototypes if we are compiling the
+  library because if it does it will choke on conflicting types in the
+  prototypes.
+*/
+
+#if defined(LARGEINT_PROTOS) || defined(__COMPILING_LARGEINT)
+
+#ifndef __COMPILING_LARGEINT
+/* addition/subtraction */
+LARGE_INTEGER WINAPI LargeIntegerAdd (LARGE_INTEGER, LARGE_INTEGER);
+LARGE_INTEGER WINAPI LargeIntegerSubtract (LARGE_INTEGER, LARGE_INTEGER);
+
+/* bit operations */
+LARGE_INTEGER WINAPI LargeIntegerArithmeticShift (LARGE_INTEGER, int);
+LARGE_INTEGER WINAPI LargeIntegerShiftLeft (LARGE_INTEGER, int);
+LARGE_INTEGER WINAPI LargeIntegerShiftRight (LARGE_INTEGER, int);
+LARGE_INTEGER WINAPI LargeIntegerNegate (LARGE_INTEGER);
+
+/* conversion */
+LARGE_INTEGER WINAPI ConvertLongToLargeInteger (LONG);
+LARGE_INTEGER WINAPI ConvertUlongToLargeInteger (ULONG);
+
+/* multiplication */
+LARGE_INTEGER WINAPI EnlargedIntegerMultiply (LONG, LONG);
+LARGE_INTEGER WINAPI EnlargedUnsignedMultiply (ULONG, ULONG);
+LARGE_INTEGER WINAPI ExtendedIntegerMultiply (LARGE_INTEGER, LONG);
+/* FIXME: is this not part of largeint? */
+LARGE_INTEGER WINAPI LargeIntegerMultiply (LARGE_INTEGER, LARGE_INTEGER);
+#endif /* __COMPILING_LARGEINT */
+
+#else
+
+#define LargeIntegerAdd(a,b) (LARGE_INTEGER)(_toi(a) + _toi(b))
+#define LargeIntegerSubtract(a,b) (LARGE_INTEGER)(_toi(a) - _toi(b))
+#define LargeIntegerRightShift(i,n) (LARGE_INTEGER)(_toi(i) >> (n))
+#define LargeIntegerArithmeticShift LargeIntegerRightShift
+#define LargeIntegerLeftShift(i,n) (LARGE_INTEGER)(_toi(i) << (n))
+#define LargeIntegerNegate(i) (LARGE_INTEGER)(- _toi(i))
+#define EnlargedIntegerMultiply(a,b) (LARGE_INTEGER)(_toi(a) * _toi(b))
+#define EnlargedUnsignedMultiply(a,b) (LARGE_INTEGER)(_toui(a) * _toui(b))
+#define ExtendedIntegerMultiply(a,b) (LARGE_INTEGER)(_toi(a) * _toi(b))
+/* FIXME: should this exist */
+#define LargeIntegerMultiply(a,b) (LARGE_INTEGER)(_toi(a) * _toi(b))
+#define ConvertLongToLargeInteger(l) (LARGE_INTEGER)(_toi(l))
+#define ConvertUlongToLargeInteger(ul) (LARGE_INTEGER)(_toui(ul))
+
+#endif /* LARGEINT_PROTOS || __COMPILING_LARGEINT */
+
+#ifndef __COMPILING_LARGEINT
+/* division; no macros of these because of multiple expansion */
+LARGE_INTEGER WINAPI LargeIntegerDivide (LARGE_INTEGER, LARGE_INTEGER, PLARGE_INTEGER);
+ULONG WINAPI EnlargedUnsignedDivide (ULARGE_INTEGER, ULONG, PULONG);
+LARGE_INTEGER WINAPI ExtendedLargeIntegerDivide (LARGE_INTEGER, ULONG, PULONG);
+LARGE_INTEGER WINAPI ExtendedMagicDivide (LARGE_INTEGER, LARGE_INTEGER, int);
+#endif /* __COMPILING_LARGEINT */
+
+#define LargeIntegerAnd(dest, src, m) \
+{ \
+  dest._STRUCT_NAME(u.)LowPart = s._STRUCT_NAME(u.)LowPart & m._STRUCT_NAME(u.)LowPart; \
+  dest._STRUCT_NAME(u.)HighPart = s._STRUCT_NAME(u.)HighPart & m._STRUCT_NAME(u.)HighPart; \
+}
+
+/* comparision */
+#define LargeIntegerGreaterThan(a,b) (_toi(a) > _toi(b))
+#define LargeIntegerGreaterThanOrEqual(a,b) (_toi(a) >= _toi(b))
+#define LargeIntegerEqualTo(a,b) (_toi(a) == _toi(b))
+#define LargeIntegerNotEqualTo(a,b) (_toi(a) != _toi(b))
+#define LargeIntegerLessThan(a,b) (_toi(a) < _toi(b))
+#define LargeIntegerLessThanOrEqualTo(a,b) (_toi(a) <= _toi(b))
+#define LargeIntegerGreaterThanZero(a) (_toi(a) > 0)
+#define LargeIntegerGreaterOrEqualToZero(a) ((a)._STRUCT_NAME(u.)HighPart > 0)
+#define LargeIntegerEqualToZero(a) !((a)._STRUCT_NAME(u.)LowPart | (a)._STRUCT_NAME(u.)HighPart)
+#define LargeIntegerNotEqualToZero(a) ((a)._STRUCT_NAME(u.)LowPart | (a)._STRUCT_NAME(u.)HighPart)
+#define LargeIntegerLessThanZero(a) ((a)._STRUCT_NAME(u.)HighPart < 0)
+#define LargeIntegerLessOrEqualToZero(a) (_toi(a) <= 0)
+
+#ifndef __COMPILING_LARGEINT
+#undef _toi
+#undef _toui
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _LARGEINT_H */
Index: Daodan/MinGW/include/libgen.h
===================================================================
--- Daodan/MinGW/include/libgen.h	(revision 1046)
+++ Daodan/MinGW/include/libgen.h	(revision 1046)
@@ -0,0 +1,54 @@
+#ifndef _LIBGEN_H_
+/*
+ * libgen.h
+ *
+ * Functions for splitting pathnames into dirname and basename components.
+ *
+ * $Id: libgen.h,v 916f43b3e665 2014/11/08 23:54:51 keithmarshall $
+ *
+ * Written by Keith Marshall <keithmarshall@users.sourceforge.net>
+ * Copyright (C) 2006, 2007, 2014, MinGW.org Project
+ *
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice, this permission notice, and the following
+ * disclaimer shall be included in all copies or substantial portions of
+ * the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OF OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ *
+ */
+#define _LIBGEN_H_
+
+/* All the headers include this file. */
+#include <_mingw.h>
+
+_BEGIN_C_DECLS
+
+extern __cdecl __MINGW_NOTHROW char *basename (char *);
+extern __cdecl __MINGW_NOTHROW char *dirname  (char *);
+
+extern __cdecl __MINGW_NOTHROW char *__mingw_basename (char *);
+extern __cdecl __MINGW_NOTHROW char *__mingw_dirname  (char *);
+
+__CRT_ALIAS __JMPSTUB__(( FUNCTION = basename ))
+__cdecl char *basename (char *__path){ return __mingw_basename (__path); }
+
+__CRT_ALIAS __JMPSTUB__(( FUNCTION = dirname ))
+__cdecl char *dirname (char *__path){ return __mingw_dirname (__path); }
+
+_END_C_DECLS
+
+#endif	/* _LIBGEN_H_: end of file */
Index: Daodan/MinGW/include/limits.h
===================================================================
--- Daodan/MinGW/include/limits.h	(revision 1046)
+++ Daodan/MinGW/include/limits.h	(revision 1046)
@@ -0,0 +1,115 @@
+/*
+ * limits.h
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is a part of the mingw-runtime package.
+ * No warranty is given; refer to the file DISCLAIMER within the package.
+ *
+ * Functions for manipulating paths and directories (included from io.h)
+ * plus functions for setting the current drive.
+ *
+ * Defines constants for the sizes of integral types.
+ *
+ * NOTE: GCC should supply a version of this header and it should be safe to
+ *       use that version instead of this one (maybe safer).
+ *
+ */
+
+#ifndef _LIMITS_H_
+#define _LIMITS_H_
+
+/* All the headers include this file. */
+#include <_mingw.h>
+
+/*
+ * File system limits
+ *
+ * TODO: NAME_MAX and OPEN_MAX are file system limits or not? Are they the
+ *       same as FILENAME_MAX and FOPEN_MAX from stdio.h?
+ * NOTE: PATH_MAX is the POSIX equivalent for Microsoft's MAX_PATH; the two
+ *       are semantically identical, with a limit of 259 characters for the
+ *       path name, plus one for a terminating NUL, for a total of 260.
+ */
+#ifndef __STRICT_ANSI__
+# define PATH_MAX	260
+#endif
+
+/*
+ * Characteristics of the char data type.
+ *
+ * TODO: Is MB_LEN_MAX correct?
+ */
+#define CHAR_BIT	8
+#define MB_LEN_MAX	2
+
+#define SCHAR_MIN	(-128)
+#define SCHAR_MAX	127
+
+#define UCHAR_MAX	255
+
+/* TODO: Is this safe? I think it might just be testing the preprocessor,
+ *       not the compiler itself... */
+#if	('\x80' < 0)
+#define CHAR_MIN	SCHAR_MIN
+#define CHAR_MAX	SCHAR_MAX
+#else
+#define CHAR_MIN	0
+#define CHAR_MAX	UCHAR_MAX
+#endif
+
+/*
+ * Maximum and minimum values for ints.
+ */
+#define INT_MAX		2147483647
+#define INT_MIN		(-INT_MAX-1)
+
+#define UINT_MAX	0xffffffff
+
+/*
+ * Maximum and minimum values for shorts.
+ */
+#define SHRT_MAX	32767
+#define SHRT_MIN	(-SHRT_MAX-1)
+
+#define USHRT_MAX	0xffff
+
+/*
+ * Maximum and minimum values for longs and unsigned longs.
+ *
+ * TODO: This is not correct for Alphas, which have 64 bit longs.
+ */
+#define LONG_MAX	2147483647L
+#define LONG_MIN	(-LONG_MAX-1)
+
+#define ULONG_MAX	0xffffffffUL
+
+#ifndef __STRICT_ANSI__
+/* POSIX wants this.  */
+#define SSIZE_MAX LONG_MAX
+#endif
+
+#if (defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) \
+     || !defined(__STRICT_ANSI__)
+/* ISO C9x macro names */
+#define LLONG_MAX 9223372036854775807LL
+#define LLONG_MIN (-LLONG_MAX - 1)
+#define ULLONG_MAX (2ULL * LLONG_MAX + 1)
+#endif
+
+/*
+ * The GNU C compiler also allows 'long long int'
+ */
+#if !defined(__STRICT_ANSI__) && defined(__GNUC__)
+
+#define LONG_LONG_MAX	9223372036854775807LL
+#define LONG_LONG_MIN	(-LONG_LONG_MAX-1)
+#define ULONG_LONG_MAX	(2ULL * LONG_LONG_MAX + 1)
+
+/* MSVC compatibility */
+#define _I64_MIN LONG_LONG_MIN
+#define _I64_MAX LONG_LONG_MAX
+#define _UI64_MAX ULONG_LONG_MAX
+
+#endif /* Not Strict ANSI and GNU C compiler */
+
+
+#endif /* not _LIMITS_H_ */
Index: Daodan/MinGW/include/lm.h
===================================================================
--- Daodan/MinGW/include/lm.h	(revision 1046)
+++ Daodan/MinGW/include/lm.h	(revision 1046)
@@ -0,0 +1,27 @@
+#ifndef _LM_H
+#define _LM_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#include <lmcons.h>
+#include <lmaccess.h>
+#include <lmalert.h>
+#include <lmat.h>
+#include <lmaudit.h>
+#include <lmchdev.h>
+#include <lmconfig.h>
+#include <lmerr.h>
+#include <lmmsg.h>
+#include <lmshare.h>
+#include <lmapibuf.h>
+#include <lmremutl.h>
+#include <lmrepl.h>
+#include <lmuse.h>
+#include <lmerrlog.h>
+#include <lmsvc.h>
+#include <lmwksta.h>
+#include <lmserver.h>
+#include <lmstats.h>
+
+#endif
Index: Daodan/MinGW/include/lmaccess.h
===================================================================
--- Daodan/MinGW/include/lmaccess.h	(revision 1046)
+++ Daodan/MinGW/include/lmaccess.h	(revision 1046)
@@ -0,0 +1,654 @@
+#ifndef _LMACCESS_H
+#define _LMACCESS_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#include <lmcons.h>
+#define GROUP_SPECIALGRP_USERS L"USERS"
+#define GROUP_SPECIALGRP_ADMINS L"ADMINS"
+#define GROUP_SPECIALGRP_GUESTS L"GUESTS"
+#define GROUP_SPECIALGRP_LOCAL L"LOCAL"
+#define ACCESS_LETTERS "RWCXDAP "
+#define NETLOGON_CONTROL_QUERY 1
+#define NETLOGON_CONTROL_REPLICATE 2
+#define NETLOGON_CONTROL_SYNCHRONIZE 3
+#define NETLOGON_CONTROL_PDC_REPLICATE 4
+#define NETLOGON_CONTROL_REDISCOVER 5
+#define NETLOGON_CONTROL_TC_QUERY 6
+#define NETLOGON_CONTROL_BACKUP_CHANGE_LOG 65532
+#define NETLOGON_CONTROL_TRUNCATE_LOG 65533
+#define NETLOGON_CONTROL_SET_DBFLAG 65534
+#define NETLOGON_CONTROL_BREAKPOINT 65535
+#define UF_SCRIPT 1
+#define UF_ACCOUNTDISABLE 2
+#define UF_HOMEDIR_REQUIRED 8
+#define UF_LOCKOUT 16
+#define UF_PASSWD_NOTREQD 32
+#define UF_PASSWD_CANT_CHANGE 64
+#define UF_TEMP_DUPLICATE_ACCOUNT 256
+#define UF_NORMAL_ACCOUNT 512
+#define UF_INTERDOMAIN_TRUST_ACCOUNT 2048
+#define UF_WORKSTATION_TRUST_ACCOUNT 4096
+#define UF_SERVER_TRUST_ACCOUNT 8192
+#define UF_MNS_LOGON_ACCOUNT 131072
+#define UF_MACHINE_ACCOUNT_MASK (UF_INTERDOMAIN_TRUST_ACCOUNT|UF_WORKSTATION_TRUST_ACCOUNT|UF_SERVER_TRUST_ACCOUNT)
+#define UF_ACCOUNT_TYPE_MASK (UF_TEMP_DUPLICATE_ACCOUNT|UF_NORMAL_ACCOUNT|UF_INTERDOMAIN_TRUST_ACCOUNT|UF_WORKSTATION_TRUST_ACCOUNT|UF_SERVER_TRUST_ACCOUNT)
+#define UF_DONT_EXPIRE_PASSWD 65536
+#define UF_SETTABLE_BITS (UF_SCRIPT|UF_ACCOUNTDISABLE|UF_LOCKOUT|UF_HOMEDIR_REQUIRED|UF_PASSWD_NOTREQD|UF_PASSWD_CANT_CHANGE|UF_ACCOUNT_TYPE_MASK|UF_DONT_EXPIRE_PASSWD)
+#define FILTER_TEMP_DUPLICATE_ACCOUNT 1
+#define FILTER_NORMAL_ACCOUNT 2
+#define FILTER_INTERDOMAIN_TRUST_ACCOUNT 8
+#define FILTER_WORKSTATION_TRUST_ACCOUNT 16
+#define FILTER_SERVER_TRUST_ACCOUNT 32
+#define LG_INCLUDE_INDIRECT 1
+#define AF_OP_PRINT 1
+#define AF_OP_COMM 2
+#define AF_OP_SERVER 4
+#define AF_OP_ACCOUNTS 8
+#define AF_SETTABLE_BITS (AF_OP_PRINT|AF_OP_COMM|AF_OP_SERVER|AF_OP_ACCOUNTS)
+#define UAS_ROLE_STANDALONE 0
+#define UAS_ROLE_MEMBER 1
+#define UAS_ROLE_BACKUP 2
+#define UAS_ROLE_PRIMARY 3
+#define USER_NAME_PARMNUM 1
+#define USER_PASSWORD_PARMNUM 3
+#define USER_PASSWORD_AGE_PARMNUM 4
+#define USER_PRIV_PARMNUM 5
+#define USER_HOME_DIR_PARMNUM 6
+#define USER_COMMENT_PARMNUM 7
+#define USER_FLAGS_PARMNUM 8
+#define USER_SCRIPT_PATH_PARMNUM 9
+#define USER_AUTH_FLAGS_PARMNUM 10
+#define USER_FULL_NAME_PARMNUM 11
+#define USER_USR_COMMENT_PARMNUM 12
+#define USER_PARMS_PARMNUM 13
+#define USER_WORKSTATIONS_PARMNUM 14
+#define USER_LAST_LOGON_PARMNUM 15
+#define USER_LAST_LOGOFF_PARMNUM 16
+#define USER_ACCT_EXPIRES_PARMNUM 17
+#define USER_MAX_STORAGE_PARMNUM 18
+#define USER_UNITS_PER_WEEK_PARMNUM 19
+#define USER_LOGON_HOURS_PARMNUM 20
+#define USER_PAD_PW_COUNT_PARMNUM 21
+#define USER_NUM_LOGONS_PARMNUM 22
+#define USER_LOGON_SERVER_PARMNUM 23
+#define USER_COUNTRY_CODE_PARMNUM 24
+#define USER_CODE_PAGE_PARMNUM 25
+#define USER_PRIMARY_GROUP_PARMNUM 51
+#define USER_PROFILE 52
+#define USER_PROFILE_PARMNUM 52
+#define USER_HOME_DIR_DRIVE_PARMNUM 53
+#define USER_NAME_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+USER_NAME_PARMNUM)
+#define USER_PASSWORD_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+USER_PASSWORD_PARMNUM)
+#define USER_PASSWORD_AGE_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+USER_PASSWORD_AGE_PARMNUM)
+#define USER_PRIV_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+USER_PRIV_PARMNUM)
+#define USER_HOME_DIR_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+USER_HOME_DIR_PARMNUM)
+#define USER_COMMENT_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+USER_COMMENT_PARMNUM)
+#define USER_FLAGS_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+USER_FLAGS_PARMNUM)
+#define USER_SCRIPT_PATH_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+USER_SCRIPT_PATH_PARMNUM)
+#define USER_AUTH_FLAGS_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+USER_AUTH_FLAGS_PARMNUM)
+#define USER_FULL_NAME_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+USER_FULL_NAME_PARMNUM)
+#define USER_USR_COMMENT_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+USER_USR_COMMENT_PARMNUM)
+#define USER_PARMS_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+USER_PARMS_PARMNUM)
+#define USER_WORKSTATIONS_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+USER_WORKSTATIONS_PARMNUM)
+#define USER_LAST_LOGON_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+USER_LAST_LOGON_PARMNUM)
+#define USER_LAST_LOGOFF_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+USER_LAST_LOGOFF_PARMNUM)
+#define USER_ACCT_EXPIRES_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+USER_ACCT_EXPIRES_PARMNUM)
+#define USER_MAX_STORAGE_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+USER_MAX_STORAGE_PARMNUM)
+#define USER_UNITS_PER_WEEK_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+USER_UNITS_PER_WEEK_PARMNUM)
+#define USER_LOGON_HOURS_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+USER_LOGON_HOURS_PARMNUM)
+#define USER_PAD_PW_COUNT_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+USER_PAD_PW_COUNT_PARMNUM)
+#define USER_NUM_LOGONS_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+USER_NUM_LOGONS_PARMNUM)
+#define USER_LOGON_SERVER_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+USER_LOGON_SERVER_PARMNUM)
+#define USER_COUNTRY_CODE_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+USER_COUNTRY_CODE_PARMNUM)
+#define USER_CODE_PAGE_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+USER_CODE_PAGE_PARMNUM)
+#define USER_PRIMARY_GROUP_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+USER_PRIMARY_GROUP_PARMNUM)
+#define USER_POSIX_ID_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+USER_POSIX_ID_PARMNUM)
+#define USER_HOME_DIR_DRIVE_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+USER_HOME_DIR_DRIVE_PARMNUM)
+#define NULL_USERSETINFO_PASSWD " "
+#define TIMEQ_FOREVER ((ULONG)-1)
+#define USER_MAXSTORAGE_UNLIMITED ((ULONG)-1)
+#define USER_NO_LOGOFF ((ULONG)-1L)
+#define UNITS_PER_DAY 24
+#define UNITS_PER_WEEK  168
+#define USER_PRIV_MASK 3
+#define USER_PRIV_GUEST 0
+#define USER_PRIV_USER 1
+#define USER_PRIV_ADMIN 2
+#define MAX_PASSWD_LEN PWLEN
+#define DEF_MIN_PWLEN 6
+#define DEF_PWUNIQUENESS 5
+#define DEF_MAX_PWHIST 8
+#define DEF_MAX_PWAGE TIMEQ_FOREVER
+#define DEF_MIN_PWAGE 0
+#define DEF_FORCE_LOGOFF (ULONG)0xffffffff
+#define DEF_MAX_BADPW 0
+#define ONE_DAY 86400
+#define VALIDATED_LOGON 0
+#define PASSWORD_EXPIRED 2
+#define NON_VALIDATED_LOGON 3
+#define VALID_LOGOFF 1
+#define MODALS_MIN_PASSWD_LEN_PARMNUM 1
+#define MODALS_MAX_PASSWD_AGE_PARMNUM 2
+#define MODALS_MIN_PASSWD_AGE_PARMNUM 3
+#define MODALS_FORCE_LOGOFF_PARMNUM 4
+#define MODALS_PASSWD_HIST_LEN_PARMNUM 5
+#define MODALS_ROLE_PARMNUM 6
+#define MODALS_PRIMARY_PARMNUM 7
+#define MODALS_DOMAIN_NAME_PARMNUM 8
+#define MODALS_DOMAIN_ID_PARMNUM 9
+#define MODALS_LOCKOUT_DURATION_PARMNUM 10
+#define MODALS_LOCKOUT_OBSERVATION_WINDOW_PARMNUM 11
+#define MODALS_LOCKOUT_THRESHOLD_PARMNUM 12
+#define MODALS_MIN_PASSWD_LEN_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+MODALS_MIN_PASSWD_LEN_PARMNUM)
+#define MODALS_MAX_PASSWD_AGE_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+MODALS_MAX_PASSWD_AGE_PARMNUM)
+#define MODALS_MIN_PASSWD_AGE_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+MODALS_MIN_PASSWD_AGE_PARMNUM)
+#define MODALS_FORCE_LOGOFF_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+MODALS_FORCE_LOGOFF_PARMNUM)
+#define MODALS_PASSWD_HIST_LEN_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+MODALS_PASSWD_HIST_LEN_PARMNUM)
+#define MODALS_ROLE_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+MODALS_ROLE_PARMNUM)
+#define MODALS_PRIMARY_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+MODALS_PRIMARY_PARMNUM)
+#define MODALS_DOMAIN_NAME_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+MODALS_DOMAIN_NAME_PARMNUM)
+#define MODALS_DOMAIN_ID_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+MODALS_DOMAIN_ID_PARMNUM)
+#define GROUPIDMASK 0x8000
+#define GROUP_ALL_PARMNUM 0
+#define GROUP_NAME_PARMNUM 1
+#define GROUP_COMMENT_PARMNUM 2
+#define GROUP_ATTRIBUTES_PARMNUM 3
+#define GROUP_ALL_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+GROUP_ALL_PARMNUM)
+#define GROUP_NAME_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+GROUP_NAME_PARMNUM)
+#define GROUP_COMMENT_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+GROUP_COMMENT_PARMNUM)
+#define GROUP_ATTRIBUTES_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+GROUP_ATTRIBUTES_PARMNUM)
+#define GROUP_POSIX_ID_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+GROUP_POSIX_ID_PARMNUM)
+#define LOCALGROUP_NAME_PARMNUM 1
+#define LOCALGROUP_COMMENT_PARMNUM 2
+#define MAXPERMENTRIES 64
+#define ACCESS_NONE 0
+#define ACCESS_ALL (ACCESS_READ|ACCESS_WRITE|ACCESS_CREATE|ACCESS_EXEC|ACCESS_DELETE|ACCESS_ATRIB|ACCESS_PERM)
+#define ACCESS_READ 1
+#define ACCESS_WRITE 2
+#define ACCESS_CREATE 4
+#define ACCESS_EXEC 8
+#define ACCESS_DELETE 16
+#define ACCESS_ATRIB 32
+#define ACCESS_PERM 64
+#define ACCESS_GROUP 0x8000
+#define ACCESS_AUDIT 1
+#define ACCESS_SUCCESS_OPEN 16
+#define ACCESS_SUCCESS_WRITE 32
+#define ACCESS_SUCCESS_DELETE 64
+#define ACCESS_SUCCESS_ACL 128
+#define ACCESS_SUCCESS_MASK 240
+#define ACCESS_FAIL_OPEN 256
+#define ACCESS_FAIL_WRITE 512
+#define ACCESS_FAIL_DELETE 1024
+#define ACCESS_FAIL_ACL 2048
+#define ACCESS_FAIL_MASK 3840
+#define ACCESS_FAIL_SHIFT 4
+#define ACCESS_RESOURCE_NAME_PARMNUM 1
+#define ACCESS_ATTR_PARMNUM 2
+#define ACCESS_COUNT_PARMNUM 3
+#define ACCESS_ACCESS_LIST_PARMNUM 4
+#define ACCESS_RESOURCE_NAME_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+ACCESS_RESOURCE_NAME_PARMNUM)
+#define ACCESS_ATTR_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+ACCESS_ATTR_PARMNUM)
+#define ACCESS_COUNT_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+ACCESS_COUNT_PARMNUM)
+#define ACCESS_ACCESS_LIST_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+ACCESS_ACCESS_LIST_PARMNUM)
+#define NETLOGON_REPLICATION_NEEDED 1
+#define NETLOGON_REPLICATION_IN_PROGRESS 2
+#define NETLOGON_FULL_SYNC_REPLICATION 4
+#define NETLOGON_REDO_NEEDED 8
+
+typedef struct _USER_INFO_0 { LPWSTR usri0_name; }USER_INFO_0,*PUSER_INFO_0,*LPUSER_INFO_0;
+typedef struct _USER_INFO_1 {
+	LPWSTR usri1_name;
+	LPWSTR usri1_password;
+	DWORD usri1_password_age;
+	DWORD usri1_priv;
+	LPWSTR usri1_home_dir;
+	LPWSTR usri1_comment;
+	DWORD usri1_flags;
+	LPWSTR usri1_script_path;
+}USER_INFO_1,*PUSER_INFO_1,*LPUSER_INFO_1;
+typedef struct _USER_INFO_2 {
+	LPWSTR usri2_name;
+	LPWSTR usri2_password;
+	DWORD usri2_password_age;
+	DWORD usri2_priv;
+	LPWSTR usri2_home_dir;
+	LPWSTR usri2_comment;
+	DWORD usri2_flags;
+	LPWSTR usri2_script_path;
+	DWORD usri2_auth_flags;
+	LPWSTR usri2_full_name;
+	LPWSTR usri2_usr_comment;
+	LPWSTR usri2_parms;
+	LPWSTR usri2_workstations;
+	DWORD usri2_last_logon;
+	DWORD usri2_last_logoff;
+	DWORD usri2_acct_expires;
+	DWORD usri2_max_storage;
+	DWORD usri2_units_per_week;
+	PBYTE usri2_logon_hours;
+	DWORD usri2_bad_pw_count;
+	DWORD usri2_num_logons;
+	LPWSTR usri2_logon_server;
+	DWORD usri2_country_code;
+	DWORD usri2_code_page;
+}USER_INFO_2,*PUSER_INFO_2,*LPUSER_INFO_2;
+typedef struct _USER_INFO_3 {
+	LPWSTR usri3_name;
+	LPWSTR usri3_password;
+	DWORD usri3_password_age;
+	DWORD usri3_priv;
+	LPWSTR usri3_home_dir;
+	LPWSTR usri3_comment;
+	DWORD usri3_flags;
+	LPWSTR usri3_script_path;
+	DWORD usri3_auth_flags;
+	LPWSTR usri3_full_name;
+	LPWSTR usri3_usr_comment;
+	LPWSTR usri3_parms;
+	LPWSTR usri3_workstations;
+	DWORD usri3_last_logon;
+	DWORD usri3_last_logoff;
+	DWORD usri3_acct_expires;
+	DWORD usri3_max_storage;
+	DWORD usri3_units_per_week;
+	PBYTE usri3_logon_hours;
+	DWORD usri3_bad_pw_count;
+	DWORD usri3_num_logons;
+	LPWSTR usri3_logon_server;
+	DWORD usri3_country_code;
+	DWORD usri3_code_page;
+	DWORD usri3_user_id;
+	DWORD usri3_primary_group_id;
+	LPWSTR usri3_profile;
+	LPWSTR usri3_home_dir_drive;
+	DWORD usri3_password_expired;
+}USER_INFO_3,*PUSER_INFO_3,*LPUSER_INFO_3;
+typedef struct _USER_INFO_4 {
+	LPWSTR usri4_name;
+	LPWSTR usri4_password;
+	DWORD usri4_password_age;
+	DWORD usri4_priv;
+	LPWSTR usri4_home_dir;
+	LPWSTR usri4_comment;
+	DWORD usri4_flags;
+	LPWSTR usri4_script_path;
+	DWORD usri4_auth_flags;
+	LPWSTR usri4_full_name;
+	LPWSTR usri4_usr_comment;
+	LPWSTR usri4_parms;
+	LPWSTR usri4_workstations;
+	DWORD usri4_last_logon;
+	DWORD usri4_last_logoff;
+	DWORD usri4_acct_expires;
+	DWORD usri4_max_storage;
+	DWORD usri4_units_per_week;
+	PBYTE usri4_logon_hours;
+	DWORD usri4_bad_pw_count;
+	DWORD usri4_num_logons;
+	LPWSTR usri4_logon_server;
+	DWORD usri4_country_code;
+	DWORD usri4_code_page;
+	PSID usri4_user_sid;
+	DWORD usri4_primary_group_id;
+	LPWSTR usri4_profile;
+	LPWSTR usri4_home_dir_drive;
+	DWORD usri4_password_expired;
+}USER_INFO_4,*PUSER_INFO_4,*LPUSER_INFO_4;
+typedef struct _USER_INFO_10 {
+	LPWSTR usri10_name;
+	LPWSTR usri10_comment;
+	LPWSTR usri10_usr_comment;
+	LPWSTR usri10_full_name;
+}USER_INFO_10,*PUSER_INFO_10,*LPUSER_INFO_10;
+typedef struct _USER_INFO_11 {
+	LPWSTR usri11_name;
+	LPWSTR usri11_comment;
+	LPWSTR usri11_usr_comment;
+	LPWSTR usri11_full_name;
+	DWORD usri11_priv;
+	DWORD usri11_auth_flags;
+	DWORD usri11_password_age;
+	LPWSTR usri11_home_dir;
+	LPWSTR usri11_parms;
+	DWORD usri11_last_logon;
+	DWORD usri11_last_logoff;
+	DWORD usri11_bad_pw_count;
+	DWORD usri11_num_logons;
+	LPWSTR usri11_logon_server;
+	DWORD usri11_country_code;
+	LPWSTR usri11_workstations;
+	DWORD usri11_max_storage;
+	DWORD usri11_units_per_week;
+	PBYTE usri11_logon_hours;
+	DWORD usri11_code_page;
+}USER_INFO_11,*PUSER_INFO_11,*LPUSER_INFO_11;
+typedef struct _USER_INFO_20 {
+	LPWSTR usri20_name;
+	LPWSTR usri20_full_name;
+	LPWSTR usri20_comment;
+	DWORD usri20_flags;
+	DWORD usri20_user_id;
+}USER_INFO_20,*PUSER_INFO_20,*LPUSER_INFO_20;
+typedef struct _USER_INFO_21 {
+	BYTE usri21_password[ENCRYPTED_PWLEN];
+}USER_INFO_21,*PUSER_INFO_21,*LPUSER_INFO_21;
+typedef struct _USER_INFO_22 {
+	LPWSTR usri22_name;
+	BYTE usri22_password[ENCRYPTED_PWLEN];
+	DWORD usri22_password_age;
+	DWORD usri22_priv;
+	LPWSTR usri22_home_dir;
+	LPWSTR usri22_comment;
+	DWORD usri22_flags;
+	LPWSTR usri22_script_path;
+	DWORD usri22_auth_flags;
+	LPWSTR usri22_full_name;
+	LPWSTR usri22_usr_comment;
+	LPWSTR usri22_parms;
+	LPWSTR usri22_workstations;
+	DWORD usri22_last_logon;
+	DWORD usri22_last_logoff;
+	DWORD usri22_acct_expires;
+	DWORD usri22_max_storage;
+	DWORD usri22_units_per_week;
+	PBYTE usri22_logon_hours;
+	DWORD usri22_bad_pw_count;
+	DWORD usri22_num_logons;
+	LPWSTR usri22_logon_server;
+	DWORD usri22_country_code;
+	DWORD usri22_code_page;
+}USER_INFO_22,*PUSER_INFO_22,*LPUSER_INFO_22;
+typedef struct _USER_INFO_23 {
+	LPWSTR usri23_name;
+	LPWSTR usri23_full_name;
+	LPWSTR usri23_comment;
+	DWORD usri23_flags;
+	PSID usri23_user_sid;
+}USER_INFO_23,*PUSER_INFO_23,*LPUSER_INFO_23;
+typedef struct _USER_INFO_1003 {
+	LPWSTR usri1003_password;
+} USER_INFO_1003,*PUSER_INFO_1003,*LPUSER_INFO_1003;
+typedef struct _USER_INFO_1005 {
+	DWORD usri1005_priv;
+} USER_INFO_1005,*PUSER_INFO_1005,*LPUSER_INFO_1005;
+typedef struct _USER_INFO_1006 {
+	LPWSTR usri1006_home_dir;
+} USER_INFO_1006,*PUSER_INFO_1006,*LPUSER_INFO_1006;
+typedef struct _USER_INFO_1007 {
+	LPWSTR usri1007_comment;
+} USER_INFO_1007,*PUSER_INFO_1007,*LPUSER_INFO_1007;
+typedef struct _USER_INFO_1008 {
+	DWORD usri1008_flags;
+} USER_INFO_1008,*PUSER_INFO_1008,*LPUSER_INFO_1008;
+typedef struct _USER_INFO_1009 {
+	LPWSTR usri1009_script_path;
+} USER_INFO_1009,*PUSER_INFO_1009,*LPUSER_INFO_1009;
+typedef struct _USER_INFO_1010 {
+	DWORD usri1010_auth_flags;
+} USER_INFO_1010,*PUSER_INFO_1010,*LPUSER_INFO_1010;
+typedef struct _USER_INFO_1011 {
+	LPWSTR usri1011_full_name;
+} USER_INFO_1011,*PUSER_INFO_1011,*LPUSER_INFO_1011;
+typedef struct _USER_INFO_1012 {
+	LPWSTR usri1012_usr_comment;
+} USER_INFO_1012,*PUSER_INFO_1012,*LPUSER_INFO_1012;
+typedef struct _USER_INFO_1013 {
+	LPWSTR usri1013_parms;
+} USER_INFO_1013,*PUSER_INFO_1013,*LPUSER_INFO_1013;
+typedef struct _USER_INFO_1014 {
+	LPWSTR usri1014_workstations;
+} USER_INFO_1014,*PUSER_INFO_1014,*LPUSER_INFO_1014;
+typedef struct _USER_INFO_1017 {
+	DWORD usri1017_acct_expires;
+} USER_INFO_1017,*PUSER_INFO_1017,*LPUSER_INFO_1017;
+typedef struct _USER_INFO_1018 {
+	DWORD usri1018_max_storage;
+} USER_INFO_1018,*PUSER_INFO_1018,*LPUSER_INFO_1018;
+typedef struct _USER_INFO_1020 {
+	DWORD usri1020_units_per_week;
+	PBYTE usri1020_logon_hours;
+} USER_INFO_1020,*PUSER_INFO_1020,*LPUSER_INFO_1020;
+typedef struct _USER_INFO_1023 {
+	LPWSTR usri1023_logon_server;
+} USER_INFO_1023,*PUSER_INFO_1023,*LPUSER_INFO_1023;
+typedef struct _USER_INFO_1024 {
+	DWORD usri1024_country_code;
+} USER_INFO_1024,*PUSER_INFO_1024,*LPUSER_INFO_1024;
+typedef struct _USER_INFO_1025 {
+	DWORD usri1025_code_page;
+} USER_INFO_1025,*PUSER_INFO_1025,*LPUSER_INFO_1025;
+typedef struct _USER_INFO_1051 {
+	DWORD usri1051_primary_group_id;
+} USER_INFO_1051,*PUSER_INFO_1051,*LPUSER_INFO_1051;
+typedef struct _USER_INFO_1052 {
+	LPWSTR usri1052_profile;
+} USER_INFO_1052,*PUSER_INFO_1052,*LPUSER_INFO_1052;
+typedef struct _USER_INFO_1053 {
+	LPWSTR usri1053_home_dir_drive;
+} USER_INFO_1053,*PUSER_INFO_1053,*LPUSER_INFO_1053;
+typedef struct _USER_MODALS_INFO_0 {
+	DWORD usrmod0_min_passwd_len;
+	DWORD usrmod0_max_passwd_age;
+	DWORD usrmod0_min_passwd_age;
+	DWORD usrmod0_force_logoff;
+	DWORD usrmod0_password_hist_len;
+}USER_MODALS_INFO_0,*PUSER_MODALS_INFO_0,*LPUSER_MODALS_INFO_0;
+typedef struct _USER_MODALS_INFO_1 {
+	DWORD usrmod1_role;
+	LPWSTR usrmod1_primary;
+}USER_MODALS_INFO_1,*PUSER_MODALS_INFO_1,*LPUSER_MODALS_INFO_1;
+typedef struct _USER_MODALS_INFO_2 {
+	LPWSTR usrmod2_domain_name;
+	PSID usrmod2_domain_id;
+}USER_MODALS_INFO_2,*PUSER_MODALS_INFO_2,*LPUSER_MODALS_INFO_2;
+typedef struct _USER_MODALS_INFO_3 {
+	DWORD usrmod3_lockout_duration;
+	DWORD usrmod3_lockout_observation_window;
+	DWORD usrmod3_lockout_threshold;
+}USER_MODALS_INFO_3,*PUSER_MODALS_INFO_3,*LPUSER_MODALS_INFO_3;
+typedef struct _USER_MODALS_INFO_1001 {
+	DWORD usrmod1001_min_passwd_len;
+} USER_MODALS_INFO_1001,*PUSER_MODALS_INFO_1001,*LPUSER_MODALS_INFO_1001;
+typedef struct _USER_MODALS_INFO_1002 {
+	DWORD usrmod1002_max_passwd_age;
+} USER_MODALS_INFO_1002,*PUSER_MODALS_INFO_1002,*LPUSER_MODALS_INFO_1002;
+typedef struct _USER_MODALS_INFO_1003 {
+	DWORD usrmod1003_min_passwd_age;
+} USER_MODALS_INFO_1003,*PUSER_MODALS_INFO_1003,*LPUSER_MODALS_INFO_1003;
+typedef struct _USER_MODALS_INFO_1004 {
+	DWORD usrmod1004_force_logoff;
+} USER_MODALS_INFO_1004,*PUSER_MODALS_INFO_1004,*LPUSER_MODALS_INFO_1004;
+typedef struct _USER_MODALS_INFO_1005 {
+	DWORD usrmod1005_password_hist_len;
+} USER_MODALS_INFO_1005,*PUSER_MODALS_INFO_1005,*LPUSER_MODALS_INFO_1005;
+typedef struct _USER_MODALS_INFO_1006 {
+	DWORD usrmod1006_role;
+} USER_MODALS_INFO_1006,*PUSER_MODALS_INFO_1006,*LPUSER_MODALS_INFO_1006;
+typedef struct _USER_MODALS_INFO_1007 {
+	LPWSTR usrmod1007_primary;
+} USER_MODALS_INFO_1007,*PUSER_MODALS_INFO_1007,*LPUSER_MODALS_INFO_1007;
+typedef struct _GROUP_INFO_0 {
+	LPWSTR grpi0_name;
+}GROUP_INFO_0,*PGROUP_INFO_0,*LPGROUP_INFO_0;
+typedef struct _GROUP_INFO_1 {
+	LPWSTR grpi1_name;
+	LPWSTR grpi1_comment;
+}GROUP_INFO_1,*PGROUP_INFO_1,*LPGROUP_INFO_1;
+typedef struct _GROUP_INFO_2 {
+	LPWSTR grpi2_name;
+	LPWSTR grpi2_comment;
+	DWORD grpi2_group_id;
+	DWORD grpi2_attributes;
+}GROUP_INFO_2,*PGROUP_INFO_2;
+typedef struct _GROUP_INFO_3 {
+	LPWSTR grpi3_name;
+	LPWSTR grpi3_comment;
+	PSID grpi3_group_sid;
+	DWORD grpi3_attributes;
+}GROUP_INFO_3,*PGROUP_INFO_3;
+typedef struct _GROUP_INFO_1002 {
+	LPWSTR grpi1002_comment;
+} GROUP_INFO_1002,*PGROUP_INFO_1002,*LPGROUP_INFO_1002;
+typedef struct _GROUP_INFO_1005 {
+	DWORD grpi1005_attributes;
+} GROUP_INFO_1005,*PGROUP_INFO_1005,*LPGROUP_INFO_1005;
+typedef struct _GROUP_USERS_INFO_0 {
+	LPWSTR grui0_name;
+} GROUP_USERS_INFO_0,*PGROUP_USERS_INFO_0,*LPGROUP_USERS_INFO_0;
+typedef struct _GROUP_USERS_INFO_1 {
+	LPWSTR grui1_name;
+	DWORD grui1_attributes;
+} GROUP_USERS_INFO_1,*PGROUP_USERS_INFO_1,*LPGROUP_USERS_INFO_1;
+typedef struct _LOCALGROUP_INFO_0 {
+	LPWSTR lgrpi0_name;
+}LOCALGROUP_INFO_0,*PLOCALGROUP_INFO_0,*LPLOCALGROUP_INFO_0;
+typedef struct _LOCALGROUP_INFO_1 {
+	LPWSTR lgrpi1_name;
+	LPWSTR lgrpi1_comment;
+}LOCALGROUP_INFO_1,*PLOCALGROUP_INFO_1,*LPLOCALGROUP_INFO_1;
+typedef struct _LOCALGROUP_INFO_1002 {
+	LPWSTR lgrpi1002_comment;
+}LOCALGROUP_INFO_1002,*PLOCALGROUP_INFO_1002,*LPLOCALGROUP_INFO_1002;
+typedef struct _LOCALGROUP_MEMBERS_INFO_0 {
+	PSID lgrmi0_sid;
+} LOCALGROUP_MEMBERS_INFO_0,*PLOCALGROUP_MEMBERS_INFO_0,*LPLOCALGROUP_MEMBERS_INFO_0;
+typedef struct _LOCALGROUP_MEMBERS_INFO_1 {
+	PSID lgrmi1_sid;
+	SID_NAME_USE lgrmi1_sidusage;
+	LPWSTR lgrmi1_name;
+} LOCALGROUP_MEMBERS_INFO_1,*PLOCALGROUP_MEMBERS_INFO_1,*LPLOCALGROUP_MEMBERS_INFO_1;
+typedef struct _LOCALGROUP_MEMBERS_INFO_2 {
+	PSID lgrmi2_sid;
+	SID_NAME_USE lgrmi2_sidusage;
+	LPWSTR lgrmi2_domainandname;
+} LOCALGROUP_MEMBERS_INFO_2,*PLOCALGROUP_MEMBERS_INFO_2,*LPLOCALGROUP_MEMBERS_INFO_2;
+typedef struct _LOCALGROUP_MEMBERS_INFO_3 {
+	LPWSTR lgrmi3_domainandname;
+} LOCALGROUP_MEMBERS_INFO_3,*PLOCALGROUP_MEMBERS_INFO_3,
+*LPLOCALGROUP_MEMBERS_INFO_3;
+typedef struct _LOCALGROUP_USERS_INFO_0 {
+	LPWSTR lgrui0_name;
+} LOCALGROUP_USERS_INFO_0,*PLOCALGROUP_USERS_INFO_0,*LPLOCALGROUP_USERS_INFO_0;
+typedef struct _NET_DISPLAY_USER {
+	LPWSTR usri1_name;
+	LPWSTR usri1_comment;
+	DWORD usri1_flags;
+	LPWSTR usri1_full_name;
+	DWORD usri1_user_id;
+	DWORD usri1_next_index;
+} NET_DISPLAY_USER,*PNET_DISPLAY_USER;
+typedef struct _NET_DISPLAY_MACHINE {
+	LPWSTR usri2_name;
+	LPWSTR usri2_comment;
+	DWORD usri2_flags;
+	DWORD usri2_user_id;
+	DWORD usri2_next_index;
+} NET_DISPLAY_MACHINE,*PNET_DISPLAY_MACHINE;
+typedef struct _NET_DISPLAY_GROUP {
+	LPWSTR grpi3_name;
+	LPWSTR grpi3_comment;
+	DWORD grpi3_group_id;
+	DWORD grpi3_attributes;
+	DWORD grpi3_next_index;
+} NET_DISPLAY_GROUP,*PNET_DISPLAY_GROUP;
+typedef struct _ACCESS_INFO_0 {
+	LPTSTR acc0_resource_name;
+}ACCESS_INFO_0,*PACCESS_INFO_0,*LPACCESS_INFO_0;
+typedef struct _ACCESS_INFO_1 {
+	LPTSTR acc1_resource_name;
+	DWORD acc1_attr;
+	DWORD acc1_count;
+}ACCESS_INFO_1,*PACCESS_INFO_1,*LPACCESS_INFO_1;
+typedef struct _ACCESS_INFO_1002 {
+	DWORD acc1002_attr;
+} ACCESS_INFO_1002,*PACCESS_INFO_1002,*LPACCESS_INFO_1002;
+typedef struct _ACCESS_LIST {
+	LPTSTR acl_ugname;
+	DWORD acl_access;
+}ACCESS_LIST,*PACCESS_LIST,*LPACCESS_LIST;
+typedef struct _NETLOGON_INFO_1 {
+	DWORD netlog1_flags;
+	NET_API_STATUS netlog1_pdc_connection_status;
+} NETLOGON_INFO_1,*PNETLOGON_INFO_1;
+typedef struct _NETLOGON_INFO_2 {
+	DWORD netlog2_flags;
+	NET_API_STATUS netlog2_pdc_connection_status;
+	LPWSTR netlog2_trusted_dc_name;
+	NET_API_STATUS netlog2_tc_connection_status;
+} NETLOGON_INFO_2,*PNETLOGON_INFO_2;
+typedef struct _NETLOGON_INFO_3 {
+	DWORD netlog3_flags;
+	DWORD netlog3_logon_attempts;
+	DWORD netlog3_reserved1;
+	DWORD netlog3_reserved2;
+	DWORD netlog3_reserved3;
+	DWORD netlog3_reserved4;
+	DWORD netlog3_reserved5;
+} NETLOGON_INFO_3,*PNETLOGON_INFO_3;
+
+#if 0
+/* MS has these defined, but the RxNetAccessXX functions aren't documented nor do
+   they exist in any headers */
+#define NetAccessAdd RxNetAccessAdd
+#define NetAccessEnum RxNetAccessEnum
+#define NetAccessGetInfo RxNetAccessGetInfo
+#define NetAccessSetInfo RxNetAccessSetInfo
+#define NetAccessDel RxNetAccessDel
+#define NetAccessGetUserPerms RxNetAccessGetUserPerms
+/* These are obsolete */
+NET_API_STATUS WINAPI NetAccessAdd(LPCWSTR,DWORD,PBYTE,PDWORD);
+NET_API_STATUS WINAPI NetAccessEnum(LPCWSTR,LPCWSTR,DWORD,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD);
+NET_API_STATUS WINAPI NetAccessGetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE*);
+NET_API_STATUS WINAPI NetAccessSetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE,PDWORD);
+NET_API_STATUS WINAPI NetAccessDel(LPCWSTR,LPCWSTR);
+NET_API_STATUS WINAPI NetAccessGetUserPerms(LPCWSTR,LPCWSTR,LPCWSTR,PDWORD);
+#endif
+
+NET_API_STATUS WINAPI NetUserAdd(LPCWSTR,DWORD,PBYTE,PDWORD);
+NET_API_STATUS WINAPI NetUserEnum(LPCWSTR,DWORD,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD);
+NET_API_STATUS WINAPI NetUserGetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE*);
+NET_API_STATUS WINAPI NetUserSetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE,PDWORD);
+NET_API_STATUS WINAPI NetUserDel(LPCWSTR,LPCWSTR);
+NET_API_STATUS WINAPI NetUserGetGroups(LPCWSTR,LPCWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD);
+NET_API_STATUS WINAPI NetUserSetGroups(LPCWSTR,LPCWSTR,DWORD,PBYTE,DWORD);
+NET_API_STATUS WINAPI NetUserGetLocalGroups(LPCWSTR,LPCWSTR,DWORD,DWORD,PBYTE*,DWORD,PDWORD,PDWORD);
+NET_API_STATUS WINAPI NetUserModalsGet(LPCWSTR,DWORD,PBYTE*);
+NET_API_STATUS WINAPI NetUserModalsSet(LPCWSTR,DWORD,PBYTE,PDWORD);
+NET_API_STATUS WINAPI NetUserChangePassword(LPCWSTR,LPCWSTR,LPCWSTR,LPCWSTR);
+NET_API_STATUS WINAPI NetGroupAdd(LPCWSTR,DWORD,PBYTE,PDWORD);
+NET_API_STATUS WINAPI NetGroupAddUser(LPCWSTR,LPCWSTR,LPCWSTR);
+NET_API_STATUS WINAPI NetGroupEnum(LPCWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD);
+NET_API_STATUS WINAPI NetGroupGetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE*);
+NET_API_STATUS WINAPI NetGroupSetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE,PDWORD);
+NET_API_STATUS WINAPI NetGroupDel(LPCWSTR,LPCWSTR);
+NET_API_STATUS WINAPI NetGroupDelUser(LPCWSTR,LPCWSTR,LPCWSTR);
+NET_API_STATUS WINAPI NetGroupGetUsers(LPCWSTR,LPCWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD);
+NET_API_STATUS WINAPI NetGroupSetUsers(LPCWSTR,LPCWSTR,DWORD,PBYTE,DWORD);
+NET_API_STATUS WINAPI NetLocalGroupAdd(LPCWSTR,DWORD,PBYTE,PDWORD);
+NET_API_STATUS WINAPI NetLocalGroupAddMember(LPCWSTR,LPCWSTR,PSID);
+NET_API_STATUS WINAPI NetLocalGroupEnum(LPCWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD);
+NET_API_STATUS WINAPI NetLocalGroupGetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE*);
+NET_API_STATUS WINAPI NetLocalGroupSetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE,PDWORD);
+NET_API_STATUS WINAPI NetLocalGroupDel(LPCWSTR,LPCWSTR);
+NET_API_STATUS WINAPI NetLocalGroupDelMember(LPCWSTR,LPCWSTR,PSID);
+NET_API_STATUS WINAPI NetLocalGroupGetMembers(LPCWSTR,LPCWSTR,DWORD,PBYTE*,DWORD,
+PDWORD,PDWORD,PDWORD);
+NET_API_STATUS WINAPI NetLocalGroupSetMembers(LPCWSTR,LPCWSTR,DWORD,PBYTE,DWORD);
+NET_API_STATUS WINAPI NetLocalGroupAddMembers(LPCWSTR,LPCWSTR,DWORD,PBYTE,DWORD);
+NET_API_STATUS WINAPI NetLocalGroupDelMembers(LPCWSTR,LPCWSTR,DWORD,PBYTE,DWORD);
+NET_API_STATUS WINAPI NetQueryDisplayInformation(LPCWSTR,DWORD,DWORD,DWORD,DWORD,PDWORD,PVOID*);
+NET_API_STATUS WINAPI NetGetDisplayInformationIndex(LPCWSTR,DWORD,LPCWSTR,PDWORD);
+NET_API_STATUS WINAPI NetGetDCName(LPCWSTR,LPCWSTR,PBYTE*);
+NET_API_STATUS WINAPI NetGetAnyDCName(LPCWSTR,LPCWSTR,PBYTE*);
+NET_API_STATUS WINAPI I_NetLogonControl(LPCWSTR,DWORD,DWORD,PBYTE*);
+NET_API_STATUS WINAPI I_NetLogonControl2(LPCWSTR,DWORD,DWORD,PBYTE,PBYTE*);
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/lmalert.h
===================================================================
--- Daodan/MinGW/include/lmalert.h	(revision 1046)
+++ Daodan/MinGW/include/lmalert.h	(revision 1046)
@@ -0,0 +1,60 @@
+#ifndef _LMALERT_H
+#define _LMALERT_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#define ALERTER_MAILSLOT TEXT("\\\\.\\MAILSLOT\\Alerter")
+#define ALERT_PRINT_EVENT TEXT("PRINTING")
+#define ALERT_MESSAGE_EVENT TEXT("MESSAGE")
+#define ALERT_ERRORLOG_EVENT TEXT("ERRORLOG")
+#define ALERT_ADMIN_EVENT TEXT("ADMIN")
+#define ALERT_USER_EVENT TEXT("USER")
+#define ALERT_OTHER_INFO(x) ((PBYTE)(x)+sizeof(STD_ALERT))
+#define ALERT_VAR_DATA(p) ((PBYTE)(p)+sizeof(*p))
+#define PRJOB_QSTATUS 3
+#define PRJOB_DEVSTATUS 508
+#define PRJOB_COMPLETE 4
+#define PRJOB_INTERV 8
+#define PRJOB_ 16
+#define PRJOB_DESTOFFLINE 32
+#define PRJOB_DESTPAUSED 64
+#define PRJOB_NOTIFY 128
+#define PRJOB_DESTNOPAPER 256
+#define PRJOB_DELETED 32768
+#define PRJOB_QS_QUEUED 0
+#define PRJOB_QS_PAUSED 1
+#define PRJOB_QS_SPOOLING 2
+#define PRJOB_QS_PRINTING 3
+#ifdef __cplusplus
+extern "C" {
+#endif
+typedef struct _ADMIN_OTHER_INFO {
+	DWORD alrtad_errcode;
+	DWORD alrtad_numstrings;
+}ADMIN_OTHER_INFO,*PADMIN_OTHER_INFO,*LPADMIN_OTHER_INFO;
+typedef struct _STD_ALERT {
+	DWORD alrt_timestamp;
+	TCHAR alrt_eventname[EVLEN+1];
+	TCHAR alrt_servicename[SNLEN+1];
+}STD_ALERT,*PSTD_ALERT,*LPSTD_ALERT;
+typedef struct _ERRLOG_OTHER_INFO {
+	DWORD alrter_errcode;
+	DWORD alrter_offset;
+}ERRLOG_OTHER_INFO,*PERRLOG_OTHER_INFO,*LPERRLOG_OTHER_INFO;
+typedef struct _PRINT_OTHER_INFO {
+	DWORD alrtpr_jobid;
+	DWORD alrtpr_status;
+	DWORD alrtpr_submitted;
+	DWORD alrtpr_size;
+}PRINT_OTHER_INFO,*PPRINT_OTHER_INFO,*LPPRINT_OTHER_INFO;
+typedef struct _USER_OTHER_INFO {
+	DWORD alrtus_errcode;
+	DWORD alrtus_numstrings;
+}USER_OTHER_INFO,*PUSER_OTHER_INFO,*LPUSER_OTHER_INFO;
+NET_API_STATUS WINAPI NetAlertRaise(LPCWSTR,PVOID,DWORD);
+NET_API_STATUS WINAPI NetAlertRaiseEx(LPCWSTR,PVOID,DWORD,LPCWSTR);
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/lmapibuf.h
===================================================================
--- Daodan/MinGW/include/lmapibuf.h	(revision 1046)
+++ Daodan/MinGW/include/lmapibuf.h	(revision 1046)
@@ -0,0 +1,18 @@
+#ifndef _LMAPIBUF_H
+#define _LMAPIBUF_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+NET_API_STATUS WINAPI NetApiBufferAllocate(DWORD,PVOID*);
+NET_API_STATUS WINAPI NetApiBufferFree(PVOID);
+NET_API_STATUS WINAPI NetApiBufferReallocate(PVOID,DWORD,PVOID*);
+NET_API_STATUS WINAPI NetApiBufferSize(PVOID,PDWORD);
+NET_API_STATUS WINAPI NetapipBufferAllocate(DWORD,PVOID*);
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/lmat.h
===================================================================
--- Daodan/MinGW/include/lmat.h	(revision 1046)
+++ Daodan/MinGW/include/lmat.h	(revision 1046)
@@ -0,0 +1,39 @@
+#ifndef _LMAT_H
+#define _LMAT_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define JOB_RUN_PERIODICALLY	1
+#define JOB_EXEC_ERROR	2
+#define JOB_RUNS_TODAY	4
+#define JOB_ADD_CURRENT_DATE	8
+#define JOB_NONINTERACTIVE	16
+#define JOB_INPUT_FLAGS	(JOB_RUN_PERIODICALLY|JOB_ADD_CURRENT_DATE|JOB_NONINTERACTIVE)
+#define JOB_OUTPUT_FLAGS (JOB_RUN_PERIODICALLY|JOB_EXEC_ERROR|JOB_RUNS_TODAY|JOB_NONINTERACTIVE)
+typedef struct _AT_ENUM {
+	DWORD JobId;
+	DWORD JobTime;
+	DWORD DaysOfMonth;
+	UCHAR DaysOfWeek;
+	UCHAR Flags;
+	LPWSTR Command;
+} AT_ENUM,*PAT_ENUM,*LPAT_ENUM;
+typedef struct _AT_INFO {
+	DWORD JobTime;
+	DWORD DaysOfMonth;
+	UCHAR DaysOfWeek;
+	UCHAR Flags;
+	LPWSTR Command;
+} AT_INFO,*PAT_INFO,*LPAT_INFO;
+NET_API_STATUS WINAPI NetScheduleJobAdd(LPWSTR,PBYTE,LPDWORD);
+NET_API_STATUS WINAPI NetScheduleJobDel(LPWSTR,DWORD,DWORD);
+NET_API_STATUS WINAPI NetScheduleJobEnum(LPWSTR,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD);
+NET_API_STATUS WINAPI NetScheduleJobGetInfo(LPWSTR,DWORD,PBYTE*);
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/lmaudit.h
===================================================================
--- Daodan/MinGW/include/lmaudit.h	(revision 1046)
+++ Daodan/MinGW/include/lmaudit.h	(revision 1046)
@@ -0,0 +1,250 @@
+#ifndef _LMAUDIT_H
+#define _LMAUDIT_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define REVISED_AUDIT_ENTRY_STRUCT
+#define LOGFLAGS_FORWARD 0
+#define LOGFLAGS_BACKWARD 1
+#define LOGFLAGS_SEEK 2
+#define ACTION_LOCKOUT 0
+#define ACTION_ADMINUNLOCK 1
+#define AE_GUEST 0
+#define AE_USER 1
+#define AE_ADMIN 2
+#define AE_NORMAL 0
+#define AE_USERLIMIT 0
+#define AE_GENERAL 0
+#define AE_ERROR 1
+#define AE_SESSDIS 1
+#define AE_BADPW 1
+#define AE_AUTODIS 2
+#define AE_UNSHARE 2
+#define AE_ADMINPRIVREQD 2
+#define AE_ADMINDIS 3
+#define AE_NOACCESSPERM 3
+#define AE_ACCRESTRICT 4
+#define AE_NORMAL_CLOSE 0
+#define AE_SES_CLOSE 1
+#define AE_ADMIN_CLOSE 2
+#define AE_LIM_UNKNOWN 0
+#define AE_LIM_LOGONHOURS 1
+#define AE_LIM_EXPIRED 2
+#define AE_LIM_INVAL_WKSTA 3
+#define AE_LIM_DISABLED 4
+#define AE_LIM_DELETED 5
+#define AE_MOD 0
+#define AE_DELETE 1
+#define AE_ADD 2
+#define AE_UAS_USER 0
+#define AE_UAS_GROUP 1
+#define AE_UAS_MODALS 2
+#define SVAUD_SERVICE  1
+#define SVAUD_GOODSESSLOGON 6
+#define SVAUD_BADSESSLOGON 24
+#define SVAUD_SESSLOGON (SVAUD_GOODSESSLOGON|SVAUD_BADSESSLOGON)
+#define SVAUD_GOODNETLOGON 96
+#define SVAUD_BADNETLOGON 384
+#define SVAUD_NETLOGON (SVAUD_GOODNETLOGON|SVAUD_BADNETLOGON)
+#define SVAUD_LOGON (SVAUD_NETLOGON|SVAUD_SESSLOGON)
+#define SVAUD_GOODUSE 0x600
+#define SVAUD_BADUSE 0x1800
+#define SVAUD_USE (SVAUD_GOODUSE|SVAUD_BADUSE)
+#define SVAUD_USERLIST 8192
+#define SVAUD_PERMISSIONS 16384
+#define SVAUD_RESOURCE 32768
+#define SVAUD_LOGONLIM 65536
+#define AA_AUDIT_ALL 1
+#define AA_A_OWNER 4
+#define AA_CLOSE 8
+#define AA_S_OPEN 16
+#define AA_S_WRITE 32
+#define AA_S_CREATE 32
+#define AA_S_DELETE 64
+#define AA_S_ACL 128
+#define AA_S_ALL 253
+#define AA_F_OPEN 256
+#define AA_F_WRITE 512
+#define AA_F_CREATE 512
+#define AA_F_DELETE 1024
+#define AA_F_ACL 2048
+#define AA_F_ALL (AA_F_OPEN|AA_F_WRITE|AA_F_DELETE|AA_F_ACL)
+#define AA_A_OPEN 2048
+#define AA_A_WRITE 4096
+#define AA_A_CREATE 8192
+#define AA_A_DELETE 16384
+#define AA_A_ACL 32768
+#define AA_A_ALL (AA_F_OPEN|AA_F_WRITE|AA_F_DELETE|AA_F_ACL)
+typedef struct _AUDIT_ENTRY {
+	DWORD ae_len;
+	DWORD ae_reserved;
+	DWORD ae_time;
+	DWORD ae_type;
+	DWORD ae_data_offset;
+	DWORD ae_data_size;
+} AUDIT_ENTRY,*PAUDIT_ENTRY,*LPAUDIT_ENTRY;
+typedef struct _HLOG {
+	DWORD time;
+	DWORD last_flags;
+	DWORD offset;
+	DWORD rec_offset;
+} HLOG,*PHLOG,*LPHLOG;
+typedef struct _AE_SRVSTATUS {
+	DWORD ae_sv_status;
+} AE_SRVSTATUS,*PAE_SRVSTATUS,*LPAE_SRVSTATUS;
+typedef struct _AE_SESSLOGON {
+	DWORD ae_so_compname;
+	DWORD ae_so_username;
+	DWORD ae_so_privilege;
+} AE_SESSLOGON,*PAE_SESSLOGON,*LPAE_SESSLOGON;
+typedef struct _AE_SESSLOGOFF {
+	DWORD ae_sf_compname;
+	DWORD ae_sf_username;
+	DWORD ae_sf_reason;
+} AE_SESSLOGOFF,*PAE_SESSLOGOFF,*LPAE_SESSLOGOFF;
+typedef struct _AE_SESSPWERR {
+	DWORD ae_sp_compname;
+	DWORD ae_sp_username;
+} AE_SESSPWERR,*PAE_SESSPWERR,*LPAE_SESSPWERR;
+typedef struct _AE_CONNSTART {
+	DWORD ae_ct_compname;
+	DWORD ae_ct_username;
+	DWORD ae_ct_netname;
+	DWORD ae_ct_connid;
+} AE_CONNSTART,*PAE_CONNSTART,*LPAE_CONNSTART;
+typedef struct _AE_CONNSTOP {
+	DWORD ae_cp_compname;
+	DWORD ae_cp_username;
+	DWORD ae_cp_netname;
+	DWORD ae_cp_connid;
+	DWORD ae_cp_reason;
+} AE_CONNSTOP,*PAE_CONNSTOP,*LPAE_CONNSTOP;
+typedef struct _AE_CONNREJ {
+	DWORD ae_cr_compname;
+	DWORD ae_cr_username;
+	DWORD ae_cr_netname;
+	DWORD ae_cr_reason;
+} AE_CONNREJ,*PAE_CONNREJ,*LPAE_CONNREJ;
+typedef struct _AE_RESACCESS {
+	DWORD ae_ra_compname;
+	DWORD ae_ra_username;
+	DWORD ae_ra_resname;
+	DWORD ae_ra_operation;
+	DWORD ae_ra_returncode;
+	DWORD ae_ra_restype;
+	DWORD ae_ra_fileid;
+} AE_RESACCESS,*PAE_RESACCESS,*LPAE_RESACCESS;
+typedef struct _AE_RESACCESSREJ {
+	DWORD ae_rr_compname;
+	DWORD ae_rr_username;
+	DWORD ae_rr_resname;
+	DWORD ae_rr_operation;
+} AE_RESACCESSREJ,*PAE_RESACCESSREJ,*LPAE_RESACCESSREJ;
+typedef struct _AE_CLOSEFILE {
+	DWORD ae_cf_compname;
+	DWORD ae_cf_username;
+	DWORD ae_cf_resname;
+	DWORD ae_cf_fileid;
+	DWORD ae_cf_duration;
+	DWORD ae_cf_reason;
+} AE_CLOSEFILE,*PAE_CLOSEFILE,*LPAE_CLOSEFILE;
+typedef struct _AE_SERVICESTAT {
+	DWORD ae_ss_compname;
+	DWORD ae_ss_username;
+	DWORD ae_ss_svcname;
+	DWORD ae_ss_status;
+	DWORD ae_ss_code;
+	DWORD ae_ss_text;
+	DWORD ae_ss_returnval;
+} AE_SERVICESTAT,*PAE_SERVICESTAT,*LPAE_SERVICESTAT;
+typedef struct _AE_ACLMOD {
+	DWORD ae_am_compname;
+	DWORD ae_am_username;
+	DWORD ae_am_resname;
+	DWORD ae_am_action;
+	DWORD ae_am_datalen;
+} AE_ACLMOD,*PAE_ACLMOD,*LPAE_ACLMOD;
+typedef struct _AE_UASMOD {
+	DWORD ae_um_compname;
+	DWORD ae_um_username;
+	DWORD ae_um_resname;
+	DWORD ae_um_rectype;
+	DWORD ae_um_action;
+	DWORD ae_um_datalen;
+} AE_UASMOD,*PAE_UASMOD,*LPAE_UASMOD;
+typedef struct _AE_NETLOGON {
+	DWORD ae_no_compname;
+	DWORD ae_no_username;
+	DWORD ae_no_privilege;
+	DWORD ae_no_authflags;
+} AE_NETLOGON,*PAE_NETLOGON,*LPAE_NETLOGON;
+typedef struct _AE_NETLOGOFF {
+	DWORD ae_nf_compname;
+	DWORD ae_nf_username;
+	DWORD ae_nf_reserved1;
+	DWORD ae_nf_reserved2;
+} AE_NETLOGOFF,*PAE_NETLOGOFF,*LPAE_NETLOGOFF;
+typedef struct _AE_ACCLIM {
+	DWORD ae_al_compname;
+	DWORD ae_al_username;
+	DWORD ae_al_resname;
+	DWORD ae_al_limit;
+} AE_ACCLIM,*PAE_ACCLIM,*LPAE_ACCLIM;
+typedef struct _AE_LOCKOUT {
+	DWORD ae_lk_compname;
+	DWORD ae_lk_username;
+	DWORD ae_lk_action;
+	DWORD ae_lk_bad_pw_count;
+} AE_LOCKOUT,*PAE_LOCKOUT,*LPAE_LOCKOUT;
+typedef struct _AE_GENERIC {
+	DWORD ae_ge_msgfile;
+	DWORD ae_ge_msgnum;
+	DWORD ae_ge_params;
+	DWORD ae_ge_param1;
+	DWORD ae_ge_param2;
+	DWORD ae_ge_param3;
+	DWORD ae_ge_param4;
+	DWORD ae_ge_param5;
+	DWORD ae_ge_param6;
+	DWORD ae_ge_param7;
+	DWORD ae_ge_param8;
+	DWORD ae_ge_param9;
+} AE_GENERIC,*PAE_GENERIC,*LPAE_GENERIC;
+NET_API_STATUS WINAPI NetAuditClear(LPCWSTR,LPCWSTR,LPCWSTR);
+NET_API_STATUS WINAPI NetAuditRead(LPTSTR,LPTSTR,LPHLOG,DWORD,PDWORD,DWORD,DWORD,PBYTE*,DWORD,PDWORD,PDWORD);
+NET_API_STATUS WINAPI NetAuditWrite(DWORD,PBYTE,DWORD,LPTSTR,PBYTE);
+
+/* These conflict with struct typedefs, why? */
+#define AE_SRVSTATUS 0
+#define AE_SESSLOGON 1
+#define AE_SESSLOGOFF 2
+#define AE_SESSPWERR 3
+#define AE_CONNSTART 4
+#define AE_CONNSTOP 5
+#define AE_CONNREJ 6
+#define AE_RESACCESS 7
+#define AE_RESACCESSREJ 8
+#define AE_CLOSEFILE 9
+#define AE_SERVICESTAT 11
+#define AE_ACLMOD 12
+#define AE_UASMOD 13
+#define AE_NETLOGON 14
+#define AE_NETLOGOFF 15
+#define AE_NETLOGDENIED 16
+#define AE_ACCLIMITEXCD 17
+#define AE_RESACCESS2 18
+#define AE_ACLMODFAIL 19
+#define AE_LOCKOUT 20
+#define AE_GENERIC_TYPE 21
+#define AE_SRVSTART 0
+#define AE_SRVPAUSED 1
+#define AE_SRVCONT 2
+#define AE_SRVSTOP 3
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/lmbrowsr.h
===================================================================
--- Daodan/MinGW/include/lmbrowsr.h	(revision 1046)
+++ Daodan/MinGW/include/lmbrowsr.h	(revision 1046)
@@ -0,0 +1,74 @@
+#ifndef _LMBROWSR_H
+#define _LMBROWSR_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define BROWSER_ROLE_PDC 1
+#define BROWSER_ROLE_BDC 2
+typedef struct _BROWSER_STATISTICS {
+	LARGE_INTEGER StatisticsStartTime;
+	LARGE_INTEGER NumberOfServerAnnouncements;
+	LARGE_INTEGER NumberOfDomainAnnouncements;
+	ULONG NumberOfElectionPackets;
+	ULONG NumberOfMailslotWrites;
+	ULONG NumberOfGetBrowserServerListRequests;
+	ULONG NumberOfServerEnumerations;
+	ULONG NumberOfDomainEnumerations;
+	ULONG NumberOfOtherEnumerations;
+	ULONG NumberOfMissedServerAnnouncements;
+	ULONG NumberOfMissedMailslotDatagrams;
+	ULONG NumberOfMissedGetBrowserServerListRequests;
+	ULONG NumberOfFailedServerAnnounceAllocations;
+	ULONG NumberOfFailedMailslotAllocations;
+	ULONG NumberOfFailedMailslotReceives;
+	ULONG NumberOfFailedMailslotWrites;
+	ULONG NumberOfFailedMailslotOpens;
+	ULONG NumberOfDuplicateMasterAnnouncements;
+LARGE_INTEGER NumberOfIllegalDatagrams;
+} BROWSER_STATISTICS,*PBROWSER_STATISTICS,*LPBROWSER_STATISTICS;
+typedef struct _BROWSER_STATISTICS_100 {
+	LARGE_INTEGER StartTime;
+	LARGE_INTEGER NumberOfServerAnnouncements;
+	LARGE_INTEGER NumberOfDomainAnnouncements;
+	ULONG NumberOfElectionPackets;
+	ULONG NumberOfMailslotWrites;
+	ULONG NumberOfGetBrowserServerListRequests;
+	LARGE_INTEGER NumberOfIllegalDatagrams;
+} BROWSER_STATISTICS_100,*PBROWSER_STATISTICS_100;
+typedef struct _BROWSER_STATISTICS_101 {
+	LARGE_INTEGER StartTime;
+	LARGE_INTEGER NumberOfServerAnnouncements;
+	LARGE_INTEGER NumberOfDomainAnnouncements;
+	ULONG NumberOfElectionPackets;
+	ULONG NumberOfMailslotWrites;
+	ULONG NumberOfGetBrowserServerListRequests;
+	LARGE_INTEGER NumberOfIllegalDatagrams;
+	ULONG NumberOfMissedServerAnnouncements;
+	ULONG NumberOfMissedMailslotDatagrams;
+	ULONG NumberOfMissedGetBrowserServerListRequests;
+	ULONG NumberOfFailedServerAnnounceAllocations;
+	ULONG NumberOfFailedMailslotAllocations;
+	ULONG NumberOfFailedMailslotReceives;
+	ULONG NumberOfFailedMailslotWrites;
+	ULONG NumberOfFailedMailslotOpens;
+	ULONG NumberOfDuplicateMasterAnnouncements;
+} BROWSER_STATISTICS_101,*PBROWSER_STATISTICS_101;
+
+NET_API_STATUS WINAPI I_BrowserServerEnum(LPCWSTR,LPCWSTR,LPCWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,DWORD,LPCWSTR,PDWORD);
+NET_API_STATUS WINAPI I_BrowserServerEnumEx(LPCWSTR,LPCWSTR,LPCWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,DWORD,LPCWSTR,LPCWSTR);
+NET_API_STATUS I_BrowserQueryEmulatedDomains(LPWSTR,PBYTE*,PDWORD);
+NET_API_STATUS I_BrowserQueryOtherDomains(LPCWSTR,PBYTE*,PDWORD,PDWORD);
+NET_API_STATUS I_BrowserResetNetlogonState(LPCWSTR);
+NET_API_STATUS I_BrowserSetNetlogonState(LPWSTR,LPWSTR,LPWSTR,DWORD);
+NET_API_STATUS I_BrowserQueryStatistics(LPCWSTR,LPBROWSER_STATISTICS*);
+NET_API_STATUS I_BrowserResetStatistics(LPCWSTR);
+WORD I_BrowserServerEnumForXactsrv(LPCWSTR,LPCWSTR,ULONG,USHORT,PVOID,WORD,DWORD,PDWORD,PDWORD,DWORD,LPCWSTR,LPCWSTR,PWORD);
+NET_API_STATUS I_BrowserDebugTrace(PWCHAR,PCHAR);
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/lmchdev.h
===================================================================
--- Daodan/MinGW/include/lmchdev.h	(revision 1046)
+++ Daodan/MinGW/include/lmchdev.h	(revision 1046)
@@ -0,0 +1,61 @@
+#ifndef _LMCHDEV_H
+#define _LMCHDEV_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define CHARDEVQ_NO_REQUESTS (-1)
+#define CHARDEV_CLOSE 0
+#define CHARDEVQ_MAX_PRIORITY 1
+#define CHARDEVQ_DEV_PARMNUM 1
+#define HANDLE_INFO_LEVEL_1 1
+#define HANDLE_CHARTIME_PARMNUM 1
+#define HANDLE_CHARCOUNT_PARMNUM 2
+#define CHARDEV_STAT_OPENED 2
+#define CHARDEVQ_PRIORITY_PARMNUM 2
+#define CHARDEVQ_DEVS_PARMNUM 3
+#define CHARDEV_STAT_ERROR 4
+#define CHARDEVQ_NUMUSERS_PARMNUM 4
+#define CHARDEVQ_NUMAHEAD_PARMNUM 5
+#define CHARDEVQ_DEF_PRIORITY 5
+#define CHARDEVQ_PRIORITY_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+CHARDEVQ_PRIORITY_PARMNUM)
+#define CHARDEVQ_DEVS_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+CHARDEVQ_DEVS_PARMNUM)
+#define CHARDEVQ_MIN_PRIORITY 9
+typedef struct _CHARDEV_INFO_0 { LPWSTR ch0_dev; } CHARDEV_INFO_0,*PCHARDEV_INFO_0,*LPCHARDEV_INFO_0;
+typedef struct _CHARDEV_INFO_1 {
+	LPWSTR ch1_dev;
+	DWORD ch1_status;
+	LPWSTR ch1_username;
+	DWORD ch1_time;
+} CHARDEV_INFO_1,*PCHARDEV_INFO_1,*LPCHARDEV_INFO_1;
+typedef struct _CHARDEVQ_INFO_0 { LPWSTR cq0_dev; } CHARDEVQ_INFO_0,*PCHARDEVQ_INFO_0,*LPCHARDEVQ_INFO_0;
+typedef struct _CHARDEVQ_INFO_1 {
+	LPWSTR cq1_dev;
+	DWORD cq1_priority;
+	LPWSTR cq1_devs;
+	DWORD cq1_numusers;
+	DWORD cq1_numahead;
+} CHARDEVQ_INFO_1,*PCHARDEVQ_INFO_1,*LPCHARDEVQ_INFO_1;
+typedef struct _CHARDEVQ_INFO_1002 { DWORD cq1002_priority; } CHARDEVQ_INFO_1002,*PCHARDEVQ_INFO_1002,*LPCHARDEVQ_INFO_1002;
+typedef struct _CHARDEVQ_INFO_1003 { LPWSTR cq1003_devs; } CHARDEVQ_INFO_1003,*PCHARDEVQ_INFO_1003,*LPCHARDEVQ_INFO_1003;
+typedef struct _HANDLE_INFO_1 {
+	DWORD hdli1_chartime;
+	DWORD hdli1_charcount;
+}HANDLE_INFO_1,*PHANDLE_INFO_1,*LPHANDLE_INFO_1;
+NET_API_STATUS WINAPI NetCharDevEnum(LPCWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD);
+NET_API_STATUS WINAPI NetCharDevGetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE*);
+NET_API_STATUS WINAPI NetCharDevControl(LPCWSTR,LPCWSTR,DWORD);
+NET_API_STATUS WINAPI NetCharDevQEnum(LPCWSTR,LPCWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD);
+NET_API_STATUS WINAPI NetCharDevQGetInfo(LPCWSTR,LPCWSTR,LPCWSTR,DWORD,PBYTE*);
+NET_API_STATUS WINAPI NetCharDevQSetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE,PDWORD);
+NET_API_STATUS WINAPI NetCharDevQPurge(LPCWSTR,LPCWSTR);
+NET_API_STATUS WINAPI NetCharDevQPurgeSelf(LPCWSTR,LPCWSTR,LPCWSTR);
+NET_API_STATUS WINAPI NetHandleGetInfo(HANDLE,DWORD,PBYTE*);
+NET_API_STATUS WINAPI NetHandleSetInfo(HANDLE,DWORD,PBYTE,DWORD,PDWORD);
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/lmconfig.h
===================================================================
--- Daodan/MinGW/include/lmconfig.h	(revision 1046)
+++ Daodan/MinGW/include/lmconfig.h	(revision 1046)
@@ -0,0 +1,21 @@
+#ifndef _LMCONFIG_H
+#define _LMCONFIG_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define REVISED_CONFIG_APIS
+typedef struct _CONFIG_INFO_0 {
+	LPWSTR cfgi0_key;
+	LPWSTR cfgi0_data;
+} CONFIG_INFO_0,*PCONFIG_INFO_0,*LPCONFIG_INFO_0;
+NET_API_STATUS WINAPI NetConfigGet(LPCWSTR,LPCWSTR,LPCWSTR,PBYTE*);
+NET_API_STATUS WINAPI NetConfigGetAll(LPCWSTR,LPCWSTR,PBYTE*);
+NET_API_STATUS WINAPI NetConfigSet(LPCWSTR,LPCWSTR,LPCWSTR,DWORD,DWORD,PBYTE,DWORD);
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/lmcons.h
===================================================================
--- Daodan/MinGW/include/lmcons.h	(revision 1046)
+++ Daodan/MinGW/include/lmcons.h	(revision 1046)
@@ -0,0 +1,75 @@
+#ifndef _LMCONS_H
+#define _LMCONS_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#define MESSAGE_FILENAME TEXT("NETMSG")
+#define OS2MSG_FILENAME TEXT("BASE")
+#define HELP_MSG_FILENAME TEXT("NETH")
+#define NET_API_FUNCTION __stdcall
+#define NET_API_STATUS DWORD
+#define API_RET_TYPE NET_API_STATUS
+#define MIN_LANMAN_MESSAGE_ID NERR_BASE
+#define MAX_LANMAN_MESSAGE_ID 5799
+#ifndef CNLEN /* also in nddeapi.h */
+#define CNLEN 15
+#define UNCLEN (CNLEN + 2)
+#endif
+#define DNLEN 15
+#define LM20_CNLEN 15
+#define LM20_DNLEN 15
+#define LM20_SNLEN 15
+#define LM20_STXTLEN 63
+#define LM20_UNCLEN (LM20_CNLEN+2)
+#define LM20_NNLEN 12
+#define LM20_RMLEN (LM20_UNCLEN+1+LM20_NNLEN)
+#define NNLEN 80
+#define RMLEN (UNCLEN+1+NNLEN)
+#define SNLEN 80
+#define STXTLEN 256
+#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 PLATFORM_ID_DOS 300
+#define PLATFORM_ID_OS2 400
+#define PLATFORM_ID_NT 500
+#define PLATFORM_ID_OSF 600
+#define PLATFORM_ID_VMS 700
+/* new typedef in W2K */
+#if defined( _WIN32_WINNT ) || defined( WINNT ) || defined( FORCE_UNICODE )
+#define LMSTR   LPWSTR
+#define LMCSTR  LPCWSTR
+#else
+#define LMSTR   LPSTR
+#define LMCSTR  LPCSTR
+#endif
+
+#endif
Index: Daodan/MinGW/include/lmerr.h
===================================================================
--- Daodan/MinGW/include/lmerr.h	(revision 1046)
+++ Daodan/MinGW/include/lmerr.h	(revision 1046)
@@ -0,0 +1,306 @@
+#ifndef _LMERR_H
+#define _LMERR_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#include <winerror.h>
+#define NERR_Success 0
+#define NERR_BASE 2100
+#define NERR_NetNotStarted (NERR_BASE+2)
+#define NERR_UnknownServer (NERR_BASE+3)
+#define NERR_ShareMem (NERR_BASE+4)
+#define NERR_NoNetworkResource (NERR_BASE+5)
+#define NERR_RemoteOnly (NERR_BASE+6)
+#define NERR_DevNotRedirected (NERR_BASE+7)
+#define NERR_ServerNotStarted (NERR_BASE+14)
+#define NERR_ItemNotFound (NERR_BASE+15)
+#define NERR_UnknownDevDir (NERR_BASE+16)
+#define NERR_RedirectedPath (NERR_BASE+17)
+#define NERR_DuplicateShare (NERR_BASE+18)
+#define NERR_NoRoom (NERR_BASE+19)
+#define NERR_TooManyItems (NERR_BASE+21)
+#define NERR_InvalidMaxUsers (NERR_BASE+22)
+#define NERR_BufTooSmall (NERR_BASE+23)
+#define NERR_RemoteErr (NERR_BASE+27)
+#define NERR_LanmanIniError (NERR_BASE+31)
+#define NERR_NetworkError (NERR_BASE+36)
+#define NERR_WkstaInconsistentState (NERR_BASE+37)
+#define NERR_WkstaNotStarted (NERR_BASE+38)
+#define NERR_BrowserNotStarted (NERR_BASE+39)
+#define NERR_InternalError (NERR_BASE+40)
+#define NERR_BadTransactConfig (NERR_BASE+41)
+#define NERR_InvalidAPI (NERR_BASE+42)
+#define NERR_BadEventName (NERR_BASE+43)
+#define NERR_DupNameReboot (NERR_BASE+44)
+#define NERR_CfgCompNotFound (NERR_BASE+46)
+#define NERR_CfgParamNotFound (NERR_BASE+47)
+#define NERR_LineTooLong (NERR_BASE+49)
+#define NERR_QNotFound (NERR_BASE+50)
+#define NERR_JobNotFound (NERR_BASE+51)
+#define NERR_DestNotFound (NERR_BASE+52)
+#define NERR_DestExists (NERR_BASE+53)
+#define NERR_QExists (NERR_BASE+54)
+#define NERR_QNoRoom (NERR_BASE+55)
+#define NERR_JobNoRoom (NERR_BASE+56)
+#define NERR_DestNoRoom (NERR_BASE+57)
+#define NERR_DestIdle (NERR_BASE+58)
+#define NERR_DestInvalidOp (NERR_BASE+59)
+#define NERR_ProcNoRespond (NERR_BASE+60)
+#define NERR_SpoolerNotLoaded (NERR_BASE+61)
+#define NERR_DestInvalidState (NERR_BASE+62)
+#define NERR_QInvalidState (NERR_BASE+63)
+#define NERR_JobInvalidState (NERR_BASE+64)
+#define NERR_SpoolNoMemory (NERR_BASE+65)
+#define NERR_DriverNotFound (NERR_BASE+66)
+#define NERR_DataTypeInvalid (NERR_BASE+67)
+#define NERR_ProcNotFound (NERR_BASE+68)
+#define NERR_ServiceTableLocked (NERR_BASE+80)
+#define NERR_ServiceTableFull (NERR_BASE+81)
+#define NERR_ServiceInstalled (NERR_BASE+82)
+#define NERR_ServiceEntryLocked (NERR_BASE+83)
+#define NERR_ServiceNotInstalled (NERR_BASE+84)
+#define NERR_BadServiceName (NERR_BASE+85)
+#define NERR_ServiceCtlTimeout (NERR_BASE+86)
+#define NERR_ServiceCtlBusy (NERR_BASE+87)
+#define NERR_BadServiceProgName (NERR_BASE+88)
+#define NERR_ServiceNotCtrl (NERR_BASE+89)
+#define NERR_ServiceKillProc (NERR_BASE+90)
+#define NERR_ServiceCtlNotValid (NERR_BASE+91)
+#define NERR_NotInDispatchTbl (NERR_BASE+92)
+#define NERR_BadControlRecv (NERR_BASE+93)
+#define NERR_ServiceNotStarting (NERR_BASE+94)
+#define NERR_AlreadyLoggedOn (NERR_BASE+100)
+#define NERR_NotLoggedOn (NERR_BASE+101)
+#define NERR_BadUsername (NERR_BASE+102)
+#define NERR_BadPassword (NERR_BASE+103)
+#define NERR_UnableToAddName_W (NERR_BASE+104)
+#define NERR_UnableToAddName_F (NERR_BASE+105)
+#define NERR_UnableToDelName_W (NERR_BASE+106)
+#define NERR_UnableToDelName_F (NERR_BASE+107)
+#define NERR_LogonsPaused (NERR_BASE+109)
+#define NERR_LogonServerConflict (NERR_BASE+110)
+#define NERR_LogonNoUserPath (NERR_BASE+111)
+#define NERR_LogonScriptError (NERR_BASE+112)
+#define NERR_StandaloneLogon (NERR_BASE+114)
+#define NERR_LogonServerNotFound (NERR_BASE+115)
+#define NERR_LogonDomainExists (NERR_BASE+116)
+#define NERR_NonValidatedLogon (NERR_BASE+117)
+#define NERR_ACFNotFound (NERR_BASE+119)
+#define NERR_GroupNotFound (NERR_BASE+120)
+#define NERR_UserNotFound (NERR_BASE+121)
+#define NERR_ResourceNotFound (NERR_BASE+122)
+#define NERR_GroupExists (NERR_BASE+123)
+#define NERR_UserExists (NERR_BASE+124)
+#define NERR_ResourceExists (NERR_BASE+125)
+#define NERR_NotPrimary (NERR_BASE+126)
+#define NERR_ACFNotLoaded (NERR_BASE+127)
+#define NERR_ACFNoRoom (NERR_BASE+128)
+#define NERR_ACFFileIOFail (NERR_BASE+129)
+#define NERR_ACFTooManyLists (NERR_BASE+130)
+#define NERR_UserLogon (NERR_BASE+131)
+#define NERR_ACFNoParent (NERR_BASE+132)
+#define NERR_CanNotGrowSegment (NERR_BASE+133)
+#define NERR_SpeGroupOp (NERR_BASE+134)
+#define NERR_NotInCache (NERR_BASE+135)
+#define NERR_UserInGroup (NERR_BASE+136)
+#define NERR_UserNotInGroup (NERR_BASE+137)
+#define NERR_AccountUndefined (NERR_BASE+138)
+#define NERR_AccountExpired (NERR_BASE+139)
+#define NERR_InvalidWorkstation (NERR_BASE+140)
+#define NERR_InvalidLogonHours (NERR_BASE+141)
+#define NERR_PasswordExpired (NERR_BASE+142)
+#define NERR_PasswordCantChange (NERR_BASE+143)
+#define NERR_PasswordHistConflict (NERR_BASE+144)
+#define NERR_PasswordTooShort (NERR_BASE+145)
+#define NERR_PasswordTooRecent (NERR_BASE+146)
+#define NERR_InvalidDatabase (NERR_BASE+147)
+#define NERR_DatabaseUpToDate (NERR_BASE+148)
+#define NERR_SyncRequired (NERR_BASE+149)
+#define NERR_UseNotFound (NERR_BASE+150)
+#define NERR_BadAsgType (NERR_BASE+151)
+#define NERR_DeviceIsShared (NERR_BASE+152)
+#define NERR_NoComputerName (NERR_BASE+170)
+#define NERR_MsgAlreadyStarted (NERR_BASE+171)
+#define NERR_MsgInitFailed (NERR_BASE+172)
+#define NERR_NameNotFound (NERR_BASE+173)
+#define NERR_AlreadyForwarded (NERR_BASE+174)
+#define NERR_AddForwarded (NERR_BASE+175)
+#define NERR_AlreadyExists (NERR_BASE+176)
+#define NERR_TooManyNames (NERR_BASE+177)
+#define NERR_DelComputerName (NERR_BASE+178)
+#define NERR_LocalForward (NERR_BASE+179)
+#define NERR_GrpMsgProcessor (NERR_BASE+180)
+#define NERR_PausedRemote (NERR_BASE+181)
+#define NERR_BadReceive (NERR_BASE+182)
+#define NERR_NameInUse (NERR_BASE+183)
+#define NERR_MsgNotStarted (NERR_BASE+184)
+#define NERR_NotLocalName (NERR_BASE+185)
+#define NERR_NoForwardName (NERR_BASE+186)
+#define NERR_RemoteFull (NERR_BASE+187)
+#define NERR_NameNotForwarded (NERR_BASE+188)
+#define NERR_TruncatedBroadcast (NERR_BASE+189)
+#define NERR_InvalidDevice (NERR_BASE+194)
+#define NERR_WriteFault (NERR_BASE+195)
+#define NERR_DuplicateName (NERR_BASE+197)
+#define NERR_DeleteLater (NERR_BASE+198)
+#define NERR_IncompleteDel (NERR_BASE+199)
+#define NERR_MultipleNets (NERR_BASE+200)
+#define NERR_NetNameNotFound (NERR_BASE+210)
+#define NERR_DeviceNotShared (NERR_BASE+211)
+#define NERR_ClientNameNotFound (NERR_BASE+212)
+#define NERR_FileIdNotFound (NERR_BASE+214)
+#define NERR_ExecFailure (NERR_BASE+215)
+#define NERR_TmpFile (NERR_BASE+216)
+#define NERR_TooMuchData (NERR_BASE+217)
+#define NERR_DeviceShareConflict (NERR_BASE+218)
+#define NERR_BrowserTableIncomplete (NERR_BASE+219)
+#define NERR_NotLocalDomain (NERR_BASE+220)
+#define NERR_DevInvalidOpCode (NERR_BASE+231)
+#define NERR_DevNotFound (NERR_BASE+232)
+#define NERR_DevNotOpen (NERR_BASE+233)
+#define NERR_BadQueueDevString (NERR_BASE+234)
+#define NERR_BadQueuePriority (NERR_BASE+235)
+#define NERR_NoCommDevs (NERR_BASE+237)
+#define NERR_QueueNotFound (NERR_BASE+238)
+#define NERR_BadDevString (NERR_BASE+240)
+#define NERR_BadDev (NERR_BASE+241)
+#define NERR_InUseBySpooler (NERR_BASE+242)
+#define NERR_CommDevInUse (NERR_BASE+243)
+#define NERR_InvalidComputer (NERR_BASE+251)
+#define NERR_MaxLenExceeded (NERR_BASE+254)
+#define NERR_BadComponent (NERR_BASE+256)
+#define NERR_CantType (NERR_BASE+257)
+#define NERR_TooManyEntries (NERR_BASE+262)
+#define NERR_ProfileFileTooBig (NERR_BASE+270)
+#define NERR_ProfileOffset (NERR_BASE+271)
+#define NERR_ProfileCleanup (NERR_BASE+272)
+#define NERR_ProfileUnknownCmd (NERR_BASE+273)
+#define NERR_ProfileLoadErr (NERR_BASE+274)
+#define NERR_ProfileSaveErr (NERR_BASE+275)
+#define NERR_LogOverflow (NERR_BASE+277)
+#define NERR_LogFileChanged (NERR_BASE+278)
+#define NERR_LogFileCorrupt (NERR_BASE+279)
+#define NERR_SourceIsDir (NERR_BASE+280)
+#define NERR_BadSource (NERR_BASE+281)
+#define NERR_BadDest (NERR_BASE+282)
+#define NERR_DifferentServers (NERR_BASE+283)
+#define NERR_RunSrvPaused (NERR_BASE+285)
+#define NERR_ErrCommRunSrv (NERR_BASE+289)
+#define NERR_ErrorExecingGhost (NERR_BASE+291)
+#define NERR_ShareNotFound (NERR_BASE+292)
+#define NERR_InvalidLana (NERR_BASE+300)
+#define NERR_OpenFiles (NERR_BASE+301)
+#define NERR_ActiveConns (NERR_BASE+302)
+#define NERR_BadPasswordCore (NERR_BASE+303)
+#define NERR_DevInUse (NERR_BASE+304)
+#define NERR_LocalDrive (NERR_BASE+305)
+#define NERR_AlertExists (NERR_BASE+330)
+#define NERR_TooManyAlerts (NERR_BASE+331)
+#define NERR_NoSuchAlert (NERR_BASE+332)
+#define NERR_BadRecipient (NERR_BASE+333)
+#define NERR_AcctLimitExceeded (NERR_BASE+334)
+#define NERR_InvalidLogSeek (NERR_BASE+340)
+#define NERR_BadUasConfig (NERR_BASE+350)
+#define NERR_InvalidUASOp (NERR_BASE+351)
+#define NERR_LastAdmin (NERR_BASE+352)
+#define NERR_DCNotFound (NERR_BASE+353)
+#define NERR_LogonTrackingError (NERR_BASE+354)
+#define NERR_NetlogonNotStarted (NERR_BASE+355)
+#define NERR_CanNotGrowUASFile (NERR_BASE+356)
+#define NERR_TimeDiffAtDC (NERR_BASE+357)
+#define NERR_PasswordMismatch (NERR_BASE+358)
+#define NERR_NoSuchServer (NERR_BASE+360)
+#define NERR_NoSuchSession (NERR_BASE+361)
+#define NERR_NoSuchConnection (NERR_BASE+362)
+#define NERR_TooManyServers (NERR_BASE+363)
+#define NERR_TooManySessions (NERR_BASE+364)
+#define NERR_TooManyConnections (NERR_BASE+365)
+#define NERR_TooManyFiles (NERR_BASE+366)
+#define NERR_NoAlternateServers (NERR_BASE+367)
+#define NERR_TryDownLevel (NERR_BASE+370)
+#define NERR_UPSDriverNotStarted (NERR_BASE+380)
+#define NERR_UPSInvalidConfig (NERR_BASE+381)
+#define NERR_UPSInvalidCommPort (NERR_BASE+382)
+#define NERR_UPSSignalAsserted (NERR_BASE+383)
+#define NERR_UPSShutdownFailed (NERR_BASE+384)
+#define NERR_BadDosRetCode (NERR_BASE+400)
+#define NERR_ProgNeedsExtraMem (NERR_BASE+401)
+#define NERR_BadDosFunction (NERR_BASE+402)
+#define NERR_RemoteBootFailed (NERR_BASE+403)
+#define NERR_BadFileCheckSum (NERR_BASE+404)
+#define NERR_NoRplBootSystem (NERR_BASE+405)
+#define NERR_RplLoadrNetBiosErr (NERR_BASE+406)
+#define NERR_RplLoadrDiskErr (NERR_BASE+407)
+#define NERR_ImageParamErr (NERR_BASE+408)
+#define NERR_TooManyImageParams (NERR_BASE+409)
+#define NERR_NonDosFloppyUsed (NERR_BASE+410)
+#define NERR_RplBootRestart (NERR_BASE+411)
+#define NERR_RplSrvrCallFailed (NERR_BASE+412)
+#define NERR_CantConnectRplSrvr (NERR_BASE+413)
+#define NERR_CantOpenImageFile (NERR_BASE+414)
+#define NERR_CallingRplSrvr (NERR_BASE+415)
+#define NERR_StartingRplBoot (NERR_BASE+416)
+#define NERR_RplBootServiceTerm (NERR_BASE+417)
+#define NERR_RplBootStartFailed (NERR_BASE+418)
+#define NERR_RPL_CONNECTED (NERR_BASE+419)
+#define NERR_BrowserConfiguredToNotRun (NERR_BASE+450)
+#define NERR_RplNoAdaptersStarted (NERR_BASE+510)
+#define NERR_RplBadRegistry (NERR_BASE+511)
+#define NERR_RplBadDatabase (NERR_BASE+512)
+#define NERR_RplRplfilesShare (NERR_BASE+513)
+#define NERR_RplNotRplServer (NERR_BASE+514)
+#define NERR_RplCannotEnum (NERR_BASE+515)
+#define NERR_RplWkstaInfoCorrupted (NERR_BASE+516)
+#define NERR_RplWkstaNotFound (NERR_BASE+517)
+#define NERR_RplWkstaNameUnavailable (NERR_BASE+518)
+#define NERR_RplProfileInfoCorrupted (NERR_BASE+519)
+#define NERR_RplProfileNotFound (NERR_BASE+520)
+#define NERR_RplProfileNameUnavailable (NERR_BASE+521)
+#define NERR_RplProfileNotEmpty (NERR_BASE+522)
+#define NERR_RplConfigInfoCorrupted (NERR_BASE+523)
+#define NERR_RplConfigNotFound (NERR_BASE+524)
+#define NERR_RplAdapterInfoCorrupted (NERR_BASE+525)
+#define NERR_RplInternal (NERR_BASE+526)
+#define NERR_RplVendorInfoCorrupted (NERR_BASE+527)
+#define NERR_RplBootInfoCorrupted (NERR_BASE+528)
+#define NERR_RplWkstaNeedsUserAcct (NERR_BASE+529)
+#define NERR_RplNeedsRPLUSERAcct (NERR_BASE+530)
+#define NERR_RplBootNotFound (NERR_BASE+531)
+#define NERR_RplIncompatibleProfile (NERR_BASE+532)
+#define NERR_RplAdapterNameUnavailable (NERR_BASE+533)
+#define NERR_RplConfigNotEmpty (NERR_BASE+534)
+#define NERR_RplBootInUse (NERR_BASE+535)
+#define NERR_RplBackupDatabase (NERR_BASE+536)
+#define NERR_RplAdapterNotFound (NERR_BASE+537)
+#define NERR_RplVendorNotFound (NERR_BASE+538)
+#define NERR_RplVendorNameUnavailable (NERR_BASE+539)
+#define NERR_RplBootNameUnavailable (NERR_BASE+540)
+#define NERR_RplConfigNameUnavailable (NERR_BASE+541)
+#define NERR_DfsInternalCorruption (NERR_BASE+560)
+#define NERR_DfsVolumeDataCorrupt (NERR_BASE+561)
+#define NERR_DfsNoSuchVolume (NERR_BASE+562)
+#define NERR_DfsVolumeAlreadyExists (NERR_BASE+563)
+#define NERR_DfsAlreadyShared (NERR_BASE+564)
+#define NERR_DfsNoSuchShare (NERR_BASE+565)
+#define NERR_DfsNotALeafVolume (NERR_BASE+566)
+#define NERR_DfsLeafVolume (NERR_BASE+567)
+#define NERR_DfsVolumeHasMultipleServers (NERR_BASE+568)
+#define NERR_DfsCantCreateJunctionPoint (NERR_BASE+569)
+#define NERR_DfsServerNotDfsAware (NERR_BASE+570)
+#define NERR_DfsBadRenamePath (NERR_BASE+571)
+#define NERR_DfsVolumeIsOffline (NERR_BASE+572)
+#define NERR_DfsNoSuchServer (NERR_BASE+573)
+#define NERR_DfsCyclicalName (NERR_BASE+574)
+#define NERR_DfsNotSupportedInServerDfs (NERR_BASE+575)
+#define NERR_DfsDuplicateService (NERR_BASE+576)
+#define NERR_DfsCantRemoveLastServerShare (NERR_BASE+577)
+#define NERR_DfsVolumeIsInterDfs  (NERR_BASE+578)
+#define NERR_DfsInconsistent (NERR_BASE+579)
+#define NERR_DfsServerUpgraded (NERR_BASE+580)
+#define NERR_DfsDataIsIdentical (NERR_BASE+581)
+#define NERR_DfsCantRemoveDfsRoot (NERR_BASE+582)
+#define NERR_DfsChildOrParentInDfs (NERR_BASE+583)
+#define NERR_DfsInternalError (NERR_BASE+590)
+#define MAX_NERR (NERR_BASE+899)
+#endif
Index: Daodan/MinGW/include/lmerrlog.h
===================================================================
--- Daodan/MinGW/include/lmerrlog.h	(revision 1046)
+++ Daodan/MinGW/include/lmerrlog.h	(revision 1046)
@@ -0,0 +1,211 @@
+#ifndef _LMERRLOG_H
+#define _LMERRLOG_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define ERRLOG_BASE 3100
+#define ERRLOG2_BASE 5700
+#define LOGFLAGS_FORWARD 0
+#define LOGFLAGS_BACKWARD 1
+#define LOGFLAGS_SEEK 2
+#define NELOG_Internal_Error ERRLOG_BASE
+#define NELOG_Resource_Shortage (ERRLOG_BASE+1)
+#define NELOG_Unable_To_Lock_Segment (ERRLOG_BASE+2)
+#define NELOG_Unable_To_Unlock_Segment (ERRLOG_BASE+3)
+#define NELOG_Uninstall_Service (ERRLOG_BASE+4)
+#define NELOG_Init_Exec_Fail (ERRLOG_BASE+5)
+#define NELOG_Ncb_Error (ERRLOG_BASE+6)
+#define NELOG_Net_Not_Started (ERRLOG_BASE+7)
+#define NELOG_Ioctl_Error (ERRLOG_BASE+8)
+#define NELOG_System_Semaphore (ERRLOG_BASE+9)
+#define NELOG_Init_OpenCreate_Err (ERRLOG_BASE+10)
+#define NELOG_NetBios (ERRLOG_BASE+11)
+#define NELOG_SMB_Illegal (ERRLOG_BASE+12)
+#define NELOG_Service_Fail (ERRLOG_BASE+13)
+#define NELOG_Entries_Lost (ERRLOG_BASE+14)
+#define NELOG_Init_Seg_Overflow (ERRLOG_BASE+20)
+#define NELOG_Srv_No_Mem_Grow (ERRLOG_BASE+21)
+#define NELOG_Access_File_Bad (ERRLOG_BASE+22)
+#define NELOG_Srvnet_Not_Started (ERRLOG_BASE+23)
+#define NELOG_Init_Chardev_Err (ERRLOG_BASE+24)
+#define NELOG_Remote_API (ERRLOG_BASE+25)
+#define NELOG_Ncb_TooManyErr (ERRLOG_BASE+26)
+#define NELOG_Mailslot_err (ERRLOG_BASE+27)
+#define NELOG_ReleaseMem_Alert (ERRLOG_BASE+28)
+#define NELOG_AT_cannot_write (ERRLOG_BASE+29)
+#define NELOG_Cant_Make_Msg_File (ERRLOG_BASE+30)
+#define NELOG_Exec_Netservr_NoMem (ERRLOG_BASE+31)
+#define NELOG_Server_Lock_Failure (ERRLOG_BASE+32)
+#define NELOG_Msg_Shutdown (ERRLOG_BASE+40)
+#define NELOG_Msg_Sem_Shutdown (ERRLOG_BASE+41)
+#define NELOG_Msg_Log_Err (ERRLOG_BASE+50)
+#define NELOG_VIO_POPUP_ERR (ERRLOG_BASE+51)
+#define NELOG_Msg_Unexpected_SMB_Type (ERRLOG_BASE+52)
+#define NELOG_Wksta_Infoseg (ERRLOG_BASE+60)
+#define NELOG_Wksta_Compname (ERRLOG_BASE+61)
+#define NELOG_Wksta_BiosThreadFailure (ERRLOG_BASE+62)
+#define NELOG_Wksta_IniSeg (ERRLOG_BASE+63)
+#define NELOG_Wksta_HostTab_Full (ERRLOG_BASE+64)
+#define NELOG_Wksta_Bad_Mailslot_SMB (ERRLOG_BASE+65)
+#define NELOG_Wksta_UASInit (ERRLOG_BASE+66)
+#define NELOG_Wksta_SSIRelogon (ERRLOG_BASE+67)
+#define NELOG_Build_Name (ERRLOG_BASE+70)
+#define NELOG_Name_Expansion (ERRLOG_BASE+71)
+#define NELOG_Message_Send (ERRLOG_BASE+72)
+#define NELOG_Mail_Slt_Err (ERRLOG_BASE+73)
+#define NELOG_AT_cannot_read (ERRLOG_BASE+74)
+#define NELOG_AT_sched_err (ERRLOG_BASE+75)
+#define NELOG_AT_schedule_file_created (ERRLOG_BASE+76)
+#define NELOG_Srvnet_NB_Open (ERRLOG_BASE+77)
+#define NELOG_AT_Exec_Err (ERRLOG_BASE+78)
+#define NELOG_Lazy_Write_Err (ERRLOG_BASE+80)
+#define NELOG_HotFix (ERRLOG_BASE+81)
+#define NELOG_HardErr_From_Server (ERRLOG_BASE+82)
+#define NELOG_LocalSecFail1 (ERRLOG_BASE+83)
+#define NELOG_LocalSecFail2 (ERRLOG_BASE+84)
+#define NELOG_LocalSecFail3 (ERRLOG_BASE+85)
+#define NELOG_LocalSecGeneralFail (ERRLOG_BASE+86)
+#define NELOG_NetWkSta_Internal_Error (ERRLOG_BASE+90)
+#define NELOG_NetWkSta_No_Resource (ERRLOG_BASE+91)
+#define NELOG_NetWkSta_SMB_Err (ERRLOG_BASE+92)
+#define NELOG_NetWkSta_VC_Err (ERRLOG_BASE+93)
+#define NELOG_NetWkSta_Stuck_VC_Err (ERRLOG_BASE+94)
+#define NELOG_NetWkSta_NCB_Err (ERRLOG_BASE+95)
+#define NELOG_NetWkSta_Write_Behind_Err (ERRLOG_BASE+96)
+#define NELOG_NetWkSta_Reset_Err (ERRLOG_BASE+97)
+#define NELOG_NetWkSta_Too_Many (ERRLOG_BASE+98)
+#define NELOG_Srv_Thread_Failure (ERRLOG_BASE+104)
+#define NELOG_Srv_Close_Failure (ERRLOG_BASE+105)
+#define NELOG_ReplUserCurDir (ERRLOG_BASE+106)
+#define NELOG_ReplCannotMasterDir (ERRLOG_BASE+107)
+#define NELOG_ReplUpdateError (ERRLOG_BASE+108)
+#define NELOG_ReplLostMaster (ERRLOG_BASE+109)
+#define NELOG_NetlogonAuthDCFail (ERRLOG_BASE+110)
+#define NELOG_ReplLogonFailed (ERRLOG_BASE+111)
+#define NELOG_ReplNetErr (ERRLOG_BASE+112)
+#define NELOG_ReplMaxFiles (ERRLOG_BASE+113)
+#define NELOG_ReplMaxTreeDepth (ERRLOG_BASE+114)
+#define NELOG_ReplBadMsg (ERRLOG_BASE+115)
+#define NELOG_ReplSysErr (ERRLOG_BASE+116)
+#define NELOG_ReplUserLoged (ERRLOG_BASE+117)
+#define NELOG_ReplBadImport (ERRLOG_BASE+118)
+#define NELOG_ReplBadExport (ERRLOG_BASE+119)
+#define NELOG_ReplSignalFileErr (ERRLOG_BASE+120)
+#define NELOG_DiskFT (ERRLOG_BASE+121)
+#define NELOG_ReplAccessDenied (ERRLOG_BASE+122)
+#define NELOG_NetlogonFailedPrimary (ERRLOG_BASE+123)
+#define NELOG_NetlogonPasswdSetFailed (ERRLOG_BASE+124)
+#define NELOG_NetlogonTrackingError (ERRLOG_BASE+125)
+#define NELOG_NetlogonSyncError (ERRLOG_BASE+126)
+#define NELOG_UPS_PowerOut (ERRLOG_BASE+130)
+#define NELOG_UPS_Shutdown (ERRLOG_BASE+131)
+#define NELOG_UPS_CmdFileError (ERRLOG_BASE+132)
+#define NELOG_UPS_CannotOpenDriver (ERRLOG_BASE+133)
+#define NELOG_UPS_PowerBack (ERRLOG_BASE+134)
+#define NELOG_UPS_CmdFileConfig (ERRLOG_BASE+135)
+#define NELOG_UPS_CmdFileExec (ERRLOG_BASE+136)
+#define NELOG_Missing_Parameter (ERRLOG_BASE+150)
+#define NELOG_Invalid_Config_Line (ERRLOG_BASE+151)
+#define NELOG_Invalid_Config_File (ERRLOG_BASE+152)
+#define NELOG_File_Changed (ERRLOG_BASE+153)
+#define NELOG_Files_Dont_Fit (ERRLOG_BASE+154)
+#define NELOG_Wrong_DLL_Version (ERRLOG_BASE+155)
+#define NELOG_Error_in_DLL (ERRLOG_BASE+156)
+#define NELOG_System_Error (ERRLOG_BASE+157)
+#define NELOG_FT_ErrLog_Too_Large (ERRLOG_BASE+158)
+#define NELOG_FT_Update_In_Progress (ERRLOG_BASE+159)
+#define NELOG_OEM_Code (ERRLOG_BASE+199)
+#define NELOG_NetlogonSSIInitError ERRLOG2_BASE
+#define NELOG_NetlogonFailedToUpdateTrustList (ERRLOG2_BASE+1)
+#define NELOG_NetlogonFailedToAddRpcInterface (ERRLOG2_BASE+2)
+#define NELOG_NetlogonFailedToReadMailslot (ERRLOG2_BASE+3)
+#define NELOG_NetlogonFailedToRegisterSC (ERRLOG2_BASE+4)
+#define NELOG_NetlogonChangeLogCorrupt (ERRLOG2_BASE+5)
+#define NELOG_NetlogonFailedToCreateShare (ERRLOG2_BASE+6)
+#define NELOG_NetlogonDownLevelLogonFailed (ERRLOG2_BASE+7)
+#define NELOG_NetlogonDownLevelLogoffFailed (ERRLOG2_BASE+8)
+#define NELOG_NetlogonNTLogonFailed (ERRLOG2_BASE+9)
+#define NELOG_NetlogonNTLogoffFailed (ERRLOG2_BASE+10)
+#define NELOG_NetlogonPartialSyncCallSuccess (ERRLOG2_BASE+11)
+#define NELOG_NetlogonPartialSyncCallFailed (ERRLOG2_BASE+12)
+#define NELOG_NetlogonFullSyncCallSuccess (ERRLOG2_BASE+13)
+#define NELOG_NetlogonFullSyncCallFailed (ERRLOG2_BASE+14)
+#define NELOG_NetlogonPartialSyncSuccess (ERRLOG2_BASE+15)
+#define NELOG_NetlogonPartialSyncFailed (ERRLOG2_BASE+16)
+#define NELOG_NetlogonFullSyncSuccess (ERRLOG2_BASE+17)
+#define NELOG_NetlogonFullSyncFailed (ERRLOG2_BASE+18)
+#define NELOG_NetlogonAuthNoDomainController (ERRLOG2_BASE+19)
+#define NELOG_NetlogonAuthNoTrustLsaSecret (ERRLOG2_BASE+20)
+#define NELOG_NetlogonAuthNoTrustSamAccount (ERRLOG2_BASE+21)
+#define NELOG_NetlogonServerAuthFailed (ERRLOG2_BASE+22)
+#define NELOG_NetlogonServerAuthNoTrustSamAccount (ERRLOG2_BASE+23)
+#define NELOG_FailedToRegisterSC (ERRLOG2_BASE+24)
+#define NELOG_FailedToSetServiceStatus (ERRLOG2_BASE+25)
+#define NELOG_FailedToGetComputerName (ERRLOG2_BASE+26)
+#define NELOG_DriverNotLoaded (ERRLOG2_BASE+27)
+#define NELOG_NoTranportLoaded (ERRLOG2_BASE+28)
+#define NELOG_NetlogonFailedDomainDelta (ERRLOG2_BASE+29)
+#define NELOG_NetlogonFailedGlobalGroupDelta (ERRLOG2_BASE+30)
+#define NELOG_NetlogonFailedLocalGroupDelta (ERRLOG2_BASE+31)
+#define NELOG_NetlogonFailedUserDelta (ERRLOG2_BASE+32)
+#define NELOG_NetlogonFailedPolicyDelta (ERRLOG2_BASE+33)
+#define NELOG_NetlogonFailedTrustedDomainDelta (ERRLOG2_BASE+34)
+#define NELOG_NetlogonFailedAccountDelta (ERRLOG2_BASE+35)
+#define NELOG_NetlogonFailedSecretDelta (ERRLOG2_BASE+36)
+#define NELOG_NetlogonSystemError (ERRLOG2_BASE+37)
+#define NELOG_NetlogonDuplicateMachineAccounts (ERRLOG2_BASE+38)
+#define NELOG_NetlogonTooManyGlobalGroups (ERRLOG2_BASE+39)
+#define NELOG_NetlogonBrowserDriver (ERRLOG2_BASE+40)
+#define NELOG_NetlogonAddNameFailure (ERRLOG2_BASE+41)
+#define NELOG_RplMessages (ERRLOG2_BASE+42)
+#define NELOG_RplXnsBoot (ERRLOG2_BASE+43)
+#define NELOG_RplSystem (ERRLOG2_BASE+44)
+#define NELOG_RplWkstaTimeout (ERRLOG2_BASE+45)
+#define NELOG_RplWkstaFileOpen (ERRLOG2_BASE+46)
+#define NELOG_RplWkstaFileRead (ERRLOG2_BASE+47)
+#define NELOG_RplWkstaMemory (ERRLOG2_BASE+48)
+#define NELOG_RplWkstaFileChecksum (ERRLOG2_BASE+49)
+#define NELOG_RplWkstaFileLineCount (ERRLOG2_BASE+50)
+#define NELOG_RplWkstaBbcFile (ERRLOG2_BASE+51)
+#define NELOG_RplWkstaFileSize (ERRLOG2_BASE+52)
+#define NELOG_RplWkstaInternal (ERRLOG2_BASE+53)
+#define NELOG_RplWkstaWrongVersion (ERRLOG2_BASE+54)
+#define NELOG_RplWkstaNetwork (ERRLOG2_BASE+55)
+#define NELOG_RplAdapterResource (ERRLOG2_BASE+56)
+#define NELOG_RplFileCopy (ERRLOG2_BASE+57)
+#define NELOG_RplFileDelete (ERRLOG2_BASE+58)
+#define NELOG_RplFilePerms (ERRLOG2_BASE+59)
+#define NELOG_RplCheckConfigs (ERRLOG2_BASE+60)
+#define NELOG_RplCreateProfiles (ERRLOG2_BASE+61)
+#define NELOG_RplRegistry (ERRLOG2_BASE+62)
+#define NELOG_RplReplaceRPLDISK (ERRLOG2_BASE+63)
+#define NELOG_RplCheckSecurity (ERRLOG2_BASE+64)
+#define NELOG_RplBackupDatabase (ERRLOG2_BASE+65)
+#define NELOG_RplInitDatabase (ERRLOG2_BASE+66)
+#define NELOG_RplRestoreDatabaseFailure (ERRLOG2_BASE+67)
+#define NELOG_RplRestoreDatabaseSuccess (ERRLOG2_BASE+68)
+#define NELOG_RplInitRestoredDatabase (ERRLOG2_BASE+69)
+#define NELOG_NetlogonSessionTypeWrong (ERRLOG2_BASE+70)
+#define REVISED_ERROR_LOG_STRUCT
+typedef struct _ERROR_LOG {
+	DWORD el_len;
+	DWORD el_reserved;
+	DWORD el_time;
+	DWORD el_error;
+	LPWSTR el_name;
+	LPWSTR el_text;
+	LPBYTE el_data;
+	DWORD el_data_size;
+	DWORD el_nstrings;
+} ERROR_LOG,*PERROR_LOG,*LPERROR_LOG;
+NET_API_STATUS WINAPI NetErrorLogClear(LPCWSTR,LPCWSTR,LPBYTE);
+NET_API_STATUS WINAPI NetErrorLogRead(LPCWSTR,LPWSTR,LPHLOG,DWORD,LPDWORD,DWORD,DWORD,LPBYTE*,DWORD,LPDWORD,LPDWORD);
+NET_API_STATUS WINAPI NetErrorLogWrite(LPBYTE,DWORD,LPCWSTR,LPBYTE,DWORD,LPBYTE,DWORD,LPBYTE);
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/lmmsg.h
===================================================================
--- Daodan/MinGW/include/lmmsg.h	(revision 1046)
+++ Daodan/MinGW/include/lmmsg.h	(revision 1046)
@@ -0,0 +1,27 @@
+#ifndef _LMMSG_H
+#define _LMMSG_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define MSGNAME_NOT_FORWARDED 0
+#define MSGNAME_FORWARDED_TO 4
+#define MSGNAME_FORWARDED_FROM 16
+typedef struct _MSG_INFO_0 { LPWSTR msgi0_name; }MSG_INFO_0,*PMSG_INFO_0,*LPMSG_INFO_0;
+typedef struct _MSG_INFO_1 {
+	LPWSTR msgi1_name;
+	DWORD msgi1_forward_flag;
+	LPWSTR msgi1_forward;
+}MSG_INFO_1,*PMSG_INFO_1,*LPMSG_INFO_1;
+NET_API_STATUS WINAPI NetMessageBufferSend(LPCWSTR,LPCWSTR,LPCWSTR,PBYTE,DWORD);
+NET_API_STATUS WINAPI NetMessageNameAdd(LPCWSTR,LPCWSTR);
+NET_API_STATUS WINAPI NetMessageNameDel(LPCWSTR,LPCWSTR);
+NET_API_STATUS WINAPI NetMessageNameEnum(LPCWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD);
+NET_API_STATUS WINAPI NetMessageNameGetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE*);
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/lmremutl.h
===================================================================
--- Daodan/MinGW/include/lmremutl.h	(revision 1046)
+++ Daodan/MinGW/include/lmremutl.h	(revision 1046)
@@ -0,0 +1,45 @@
+#ifndef _LMREMUTL_H
+#define _LMREMUTL_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define SUPPORTS_REMOTE_ADMIN_PROTOCOL 2
+#define SUPPORTS_RPC 4
+#define SUPPORTS_SAM_PROTOCOL 8
+#define SUPPORTS_UNICODE 16
+#define SUPPORTS_LOCAL 32
+#define SUPPORTS_ANY 0xFFFFFFFF
+#define NO_PERMISSION_REQUIRED 1
+#define ALLOCATE_RESPONSE 2
+#define USE_SPECIFIC_TRANSPORT 0x80000000
+#ifndef DESC_CHAR_UNICODE
+typedef CHAR DESC_CHAR;
+#else
+typedef WCHAR DESC_CHAR;
+#endif
+typedef DESC_CHAR *LPDESC;
+typedef struct _TIME_OF_DAY_INFO {
+	DWORD tod_elapsedt;
+	DWORD tod_msecs;
+	DWORD tod_hours;
+	DWORD tod_mins;
+	DWORD tod_secs;
+	DWORD tod_hunds;
+	LONG tod_timezone;
+	DWORD tod_tinterval;
+	DWORD tod_day;
+	DWORD tod_month;
+	DWORD tod_year;
+	DWORD tod_weekday;
+} TIME_OF_DAY_INFO,*PTIME_OF_DAY_INFO,*LPTIME_OF_DAY_INFO;
+NET_API_STATUS WINAPI NetRemoteTOD(LPCWSTR,PBYTE*);
+NET_API_STATUS WINAPI NetRemoteComputerSupports(LPCWSTR,DWORD,PDWORD);
+NET_API_STATUS RxRemoteApi(DWORD,LPCWSTR,LPDESC,LPDESC,LPDESC,LPDESC,LPDESC,LPDESC,LPDESC,DWORD,... );
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/lmrepl.h
===================================================================
--- Daodan/MinGW/include/lmrepl.h	(revision 1046)
+++ Daodan/MinGW/include/lmrepl.h	(revision 1046)
@@ -0,0 +1,94 @@
+#ifndef _LMREPL_H
+#define _LMREPL_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define REPL_ROLE_EXPORT 1
+#define REPL_ROLE_IMPORT 2
+#define REPL_ROLE_BOTH 3
+#define REPL_INTERVAL_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+0)
+#define REPL_PULSE_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+1)
+#define REPL_GUARDTIME_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+2)
+#define REPL_RANDOM_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+3)
+#define REPL_UNLOCK_NOFORCE 0
+#define REPL_UNLOCK_FORCE 1
+#define REPL_STATE_OK 0
+#define REPL_STATE_NO_MASTER 1
+#define REPL_STATE_NO_SYNC 2
+#define REPL_STATE_NEVER_REPLICATED 3
+#define REPL_INTEGRITY_FILE 1
+#define REPL_INTEGRITY_TREE 2
+#define REPL_EXTENT_FILE 1
+#define REPL_EXTENT_TREE 2
+#define REPL_EXPORT_INTEGRITY_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+0)
+#define REPL_EXPORT_EXTENT_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+1)
+typedef struct _REPL_INFO_0 {
+	DWORD rp0_role;
+	LPWSTR rp0_exportpath;
+	LPWSTR rp0_exportlist;
+	LPWSTR rp0_importpath;
+	LPWSTR rp0_importlist;
+	LPWSTR rp0_logonusername;
+	DWORD rp0_interval;
+	DWORD rp0_pulse;
+	DWORD rp0_guardtime;
+	DWORD rp0_random;
+} REPL_INFO_0,*PREPL_INFO_0,*LPREPL_INFO_0;
+typedef struct _REPL_INFO_1000 { DWORD rp1000_interval; } REPL_INFO_1000,*PREPL_INFO_1000,*LPREPL_INFO_1000;
+typedef struct _REPL_INFO_1001 { DWORD rp1001_pulse; } REPL_INFO_1001,*PREPL_INFO_1001,*LPREPL_INFO_1001;
+typedef struct _REPL_INFO_1002 { DWORD rp1002_guardtime; } REPL_INFO_1002,*PREPL_INFO_1002,*LPREPL_INFO_1002;
+typedef struct _REPL_INFO_1003 { DWORD rp1003_random; } REPL_INFO_1003,*PREPL_INFO_1003,*LPREPL_INFO_1003;
+
+NET_API_STATUS WINAPI NetReplGetInfo(LPCWSTR,DWORD,PBYTE*);
+NET_API_STATUS WINAPI NetReplSetInfo(LPCWSTR,DWORD,PBYTE,PDWORD);
+typedef struct _REPL_EDIR_INFO_0 {
+	LPWSTR rped0_dirname;
+} REPL_EDIR_INFO_0,*PREPL_EDIR_INFO_0,*LPREPL_EDIR_INFO_0;
+typedef struct _REPL_EDIR_INFO_1 {
+	LPWSTR rped1_dirname;
+	DWORD rped1_integrity;
+	DWORD rped1_extent;
+} REPL_EDIR_INFO_1,*PREPL_EDIR_INFO_1,*LPREPL_EDIR_INFO_1;
+typedef struct _REPL_EDIR_INFO_2 {
+	LPWSTR rped2_dirname;
+	DWORD rped2_integrity;
+	DWORD rped2_extent;
+	DWORD rped2_lockcount;
+	DWORD rped2_locktime;
+} REPL_EDIR_INFO_2,*PREPL_EDIR_INFO_2,*LPREPL_EDIR_INFO_2;
+typedef struct _REPL_EDIR_INFO_1000 {
+	DWORD rped1000_integrity;
+} REPL_EDIR_INFO_1000,*PREPL_EDIR_INFO_1000,*LPREPL_EDIR_INFO_1000;
+typedef struct _REPL_EDIR_INFO_1001 {
+	DWORD rped1001_extent;
+} REPL_EDIR_INFO_1001,*PREPL_EDIR_INFO_1001,*LPREPL_EDIR_INFO_1001;
+typedef struct _REPL_IDIR_INFO_0 { LPWSTR rpid0_dirname; } REPL_IDIR_INFO_0,*PREPL_IDIR_INFO_0,*LPREPL_IDIR_INFO_0;
+typedef struct _REPL_IDIR_INFO_1 {
+	LPWSTR rpid1_dirname;
+	DWORD rpid1_state;
+	LPWSTR rpid1_mastername;
+	DWORD rpid1_last_update_time;
+	DWORD rpid1_lockcount;
+	DWORD rpid1_locktime;
+} REPL_IDIR_INFO_1,*PREPL_IDIR_INFO_1,*LPREPL_IDIR_INFO_1;
+NET_API_STATUS WINAPI NetReplExportDirAdd(LPCWSTR,DWORD,PBYTE,PDWORD);
+NET_API_STATUS WINAPI NetReplExportDirDel(LPCWSTR,LPCWSTR);
+NET_API_STATUS WINAPI NetReplExportDirEnum(LPCWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD);
+NET_API_STATUS WINAPI NetReplExportDirGetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE*);
+NET_API_STATUS WINAPI NetReplExportDirSetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE,PDWORD);
+NET_API_STATUS WINAPI NetReplExportDirLock(LPCWSTR,LPCWSTR);
+NET_API_STATUS WINAPI NetReplExportDirUnlock(LPCWSTR,LPCWSTR,DWORD);
+NET_API_STATUS WINAPI NetReplImportDirAdd(LPCWSTR,DWORD,PBYTE,PDWORD);
+NET_API_STATUS WINAPI NetReplImportDirDel(LPCWSTR,LPCWSTR);
+NET_API_STATUS WINAPI NetReplImportDirEnum(LPCWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD);
+NET_API_STATUS WINAPI NetReplImportDirGetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE*);
+NET_API_STATUS WINAPI NetReplImportDirLock(LPCWSTR,LPCWSTR);
+NET_API_STATUS WINAPI NetReplImportDirUnlock(LPCWSTR,LPCWSTR,DWORD);
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/lmserver.h
===================================================================
--- Daodan/MinGW/include/lmserver.h	(revision 1046)
+++ Daodan/MinGW/include/lmserver.h	(revision 1046)
@@ -0,0 +1,606 @@
+#ifndef _LMSERVER_H
+#define _LMSERVER_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#include <winsvc.h>
+#include <lmcons.h>
+typedef struct _SERVER_INFO_100 {
+DWORD	sv100_platform_id;
+LPWSTR	sv100_name;
+} SERVER_INFO_100,*PSERVER_INFO_100,*LPSERVER_INFO_100;
+typedef struct _SERVER_INFO_101 {
+DWORD	sv101_platform_id;
+LPWSTR	sv101_name;
+DWORD	sv101_version_major;
+DWORD	sv101_version_minor;
+DWORD	sv101_type;
+LPWSTR	sv101_comment;
+} SERVER_INFO_101,*PSERVER_INFO_101,*LPSERVER_INFO_101;
+typedef struct _SERVER_INFO_102 {
+DWORD	sv102_platform_id;
+LPWSTR	sv102_name;
+DWORD	sv102_version_major;
+DWORD	sv102_version_minor;
+DWORD	sv102_type;
+LPWSTR	sv102_comment;
+DWORD	sv102_users;
+LONG	sv102_disc;
+BOOL	sv102_hidden;
+DWORD	sv102_announce;
+DWORD	sv102_anndelta;
+DWORD	sv102_licenses;
+LPWSTR	sv102_userpath;
+} SERVER_INFO_102,*PSERVER_INFO_102,*LPSERVER_INFO_102;
+typedef struct _SERVER_INFO_402 {
+DWORD	sv402_ulist_mtime;
+DWORD	sv402_glist_mtime;
+DWORD	sv402_alist_mtime;
+LPWSTR	sv402_alerts;
+DWORD	sv402_security;
+DWORD	sv402_numadmin;
+DWORD	sv402_lanmask;
+LPWSTR	sv402_guestacct;
+DWORD	sv402_chdevs;
+DWORD	sv402_chdevq;
+DWORD	sv402_chdevjobs;
+DWORD	sv402_connections;
+DWORD	sv402_shares;
+DWORD	sv402_openfiles;
+DWORD	sv402_sessopens;
+DWORD	sv402_sessvcs;
+DWORD	sv402_sessreqs;
+DWORD	sv402_opensearch;
+DWORD	sv402_activelocks;
+DWORD	sv402_numreqbuf;
+DWORD	sv402_sizreqbuf;
+DWORD	sv402_numbigbuf;
+DWORD	sv402_numfiletasks;
+DWORD	sv402_alertsched;
+DWORD	sv402_erroralert;
+DWORD	sv402_logonalert;
+DWORD	sv402_accessalert;
+DWORD	sv402_diskalert;
+DWORD	sv402_netioalert;
+DWORD	sv402_maxauditsz;
+LPWSTR	sv402_srvheuristics;
+} SERVER_INFO_402,*PSERVER_INFO_402,*LPSERVER_INFO_402;
+typedef struct _SERVER_INFO_403 {
+DWORD	sv403_ulist_mtime;
+DWORD	sv403_glist_mtime;
+DWORD	sv403_alist_mtime;
+LPWSTR	sv403_alerts;
+DWORD	sv403_security;
+DWORD	sv403_numadmin;
+DWORD	sv403_lanmask;
+LPWSTR	sv403_guestacct;
+DWORD	sv403_chdevs;
+DWORD	sv403_chdevq;
+DWORD	sv403_chdevjobs;
+DWORD	sv403_connections;
+DWORD	sv403_shares;
+DWORD	sv403_openfiles;
+DWORD	sv403_sessopens;
+DWORD	sv403_sessvcs;
+DWORD	sv403_sessreqs;
+DWORD	sv403_opensearch;
+DWORD	sv403_activelocks;
+DWORD	sv403_numreqbuf;
+DWORD	sv403_sizreqbuf;
+DWORD	sv403_numbigbuf;
+DWORD	sv403_numfiletasks;
+DWORD	sv403_alertsched;
+DWORD	sv403_erroralert;
+DWORD	sv403_logonalert;
+DWORD	sv403_accessalert;
+DWORD	sv403_diskalert;
+DWORD	sv403_netioalert;
+DWORD	sv403_maxauditsz;
+LPWSTR	sv403_srvheuristics;
+DWORD	sv403_auditedevents;
+DWORD	sv403_autoprofile;
+LPWSTR	sv403_autopath;
+} SERVER_INFO_403,*PSERVER_INFO_403,*LPSERVER_INFO_403;
+typedef struct _SERVER_INFO_502 {
+DWORD	sv502_sessopens;
+DWORD	sv502_sessvcs;
+DWORD	sv502_opensearch;
+DWORD	sv502_sizreqbuf;
+DWORD	sv502_initworkitems;
+DWORD	sv502_maxworkitems;
+DWORD	sv502_rawworkitems;
+DWORD	sv502_irpstacksize;
+DWORD	sv502_maxrawbuflen;
+DWORD	sv502_sessusers;
+DWORD	sv502_sessconns;
+DWORD	sv502_maxpagedmemoryusage;
+DWORD	sv502_maxnonpagedmemoryusage;
+BOOL	sv502_enablesoftcompat;
+BOOL	sv502_enableforcedlogoff;
+BOOL	sv502_timesource;
+BOOL	sv502_acceptdownlevelapis;
+BOOL	sv502_lmannounce;
+} SERVER_INFO_502,*PSERVER_INFO_502,*LPSERVER_INFO_502;
+typedef struct _SERVER_INFO_503 {
+DWORD	sv503_sessopens;
+DWORD	sv503_sessvcs;
+DWORD	sv503_opensearch;
+DWORD	sv503_sizreqbuf;
+DWORD	sv503_initworkitems;
+DWORD	sv503_maxworkitems;
+DWORD	sv503_rawworkitems;
+DWORD	sv503_irpstacksize;
+DWORD	sv503_maxrawbuflen;
+DWORD	sv503_sessusers;
+DWORD	sv503_sessconns;
+DWORD	sv503_maxpagedmemoryusage;
+DWORD	sv503_maxnonpagedmemoryusage;
+BOOL	sv503_enablesoftcompat;
+BOOL	sv503_enableforcedlogoff;
+BOOL	sv503_timesource;
+BOOL	sv503_acceptdownlevelapis;
+BOOL	sv503_lmannounce;
+LPWSTR	sv503_domain;
+DWORD	sv503_maxcopyreadlen;
+DWORD	sv503_maxcopywritelen;
+DWORD	sv503_minkeepsearch;
+DWORD	sv503_maxkeepsearch;
+DWORD	sv503_minkeepcomplsearch;
+DWORD	sv503_maxkeepcomplsearch;
+DWORD	sv503_threadcountadd;
+DWORD	sv503_numblockthreads;
+DWORD	sv503_scavtimeout;
+DWORD	sv503_minrcvqueue;
+DWORD	sv503_minfreeworkitems;
+DWORD	sv503_xactmemsize;
+DWORD	sv503_threadpriority;
+DWORD	sv503_maxmpxct;
+DWORD	sv503_oplockbreakwait;
+DWORD	sv503_oplockbreakresponsewait;
+BOOL	sv503_enableoplocks;
+BOOL	sv503_enableoplockforceclose;
+BOOL	sv503_enablefcbopens;
+BOOL	sv503_enableraw;
+BOOL	sv503_enablesharednetdrives;
+DWORD	sv503_minfreeconnections;
+DWORD	sv503_maxfreeconnections;
+} SERVER_INFO_503,*PSERVER_INFO_503,*LPSERVER_INFO_503;
+typedef struct _SERVER_INFO_599 {
+DWORD	sv599_sessopens;
+DWORD	sv599_sessvcs;
+DWORD	sv599_opensearch;
+DWORD	sv599_sizreqbuf;
+DWORD	sv599_initworkitems;
+DWORD	sv599_maxworkitems;
+DWORD	sv599_rawworkitems;
+DWORD	sv599_irpstacksize;
+DWORD	sv599_maxrawbuflen;
+DWORD	sv599_sessusers;
+DWORD	sv599_sessconns;
+DWORD	sv599_maxpagedmemoryusage;
+DWORD	sv599_maxnonpagedmemoryusage;
+BOOL	sv599_enablesoftcompat;
+BOOL	sv599_enableforcedlogoff;
+BOOL	sv599_timesource;
+BOOL	sv599_acceptdownlevelapis;
+BOOL	sv599_lmannounce;
+LPWSTR	sv599_domain;
+DWORD	sv599_maxcopyreadlen;
+DWORD	sv599_maxcopywritelen;
+DWORD	sv599_minkeepsearch;
+DWORD	sv599_maxkeepsearch;
+DWORD	sv599_minkeepcomplsearch;
+DWORD	sv599_maxkeepcomplsearch;
+DWORD	sv599_threadcountadd;
+DWORD	sv599_numblockthreads;
+DWORD	sv599_scavtimeout;
+DWORD	sv599_minrcvqueue;
+DWORD	sv599_minfreeworkitems;
+DWORD	sv599_xactmemsize;
+DWORD	sv599_threadpriority;
+DWORD	sv599_maxmpxct;
+DWORD	sv599_oplockbreakwait;
+DWORD	sv599_oplockbreakresponsewait;
+BOOL	sv599_enableoplocks;
+BOOL	sv599_enableoplockforceclose;
+BOOL	sv599_enablefcbopens;
+BOOL	sv599_enableraw;
+BOOL	sv599_enablesharednetdrives;
+DWORD	sv599_minfreeconnections;
+DWORD	sv599_maxfreeconnections;
+DWORD	sv599_initsesstable;
+DWORD	sv599_initconntable;
+DWORD	sv599_initfiletable;
+DWORD	sv599_initsearchtable;
+DWORD	sv599_alertschedule;
+DWORD	sv599_errorthreshold;
+DWORD	sv599_networkerrorthreshold;
+DWORD	sv599_diskspacethreshold;
+DWORD	sv599_reserved;
+DWORD	sv599_maxlinkdelay;
+DWORD	sv599_minlinkthroughput;
+DWORD	sv599_linkinfovalidtime;
+DWORD	sv599_scavqosinfoupdatetime;
+DWORD	sv599_maxworkitemidletime;
+} SERVER_INFO_599,*PSERVER_INFO_599,*LPSERVER_INFO_599;
+typedef struct _SERVER_INFO_598 {
+DWORD	sv598_maxrawworkitems;
+DWORD	sv598_maxthreadsperqueue;
+DWORD	sv598_producttype;
+DWORD	sv598_serversize;
+DWORD	sv598_connectionlessautodisc;
+DWORD	sv598_sharingviolationretries;
+DWORD	sv598_sharingviolationdelay;
+DWORD	sv598_maxglobalopensearch;
+DWORD	sv598_removeduplicatesearches;
+DWORD	sv598_lockviolationoffset;
+DWORD	sv598_lockviolationdelay;
+DWORD	sv598_mdlreadswitchover;
+DWORD	sv598_cachedopenlimit;
+DWORD	sv598_otherqueueaffinity;
+BOOL	sv598_restrictnullsessaccess;
+BOOL	sv598_enablewfw311directipx;
+DWORD	sv598_queuesamplesecs;
+DWORD	sv598_balancecount;
+DWORD	sv598_preferredaffinity;
+DWORD	sv598_maxfreerfcbs;
+DWORD	sv598_maxfreemfcbs;
+DWORD	sv598_maxfreelfcbs;
+DWORD	sv598_maxfreepagedpoolchunks;
+DWORD	sv598_minpagedpoolchunksize;
+DWORD	sv598_maxpagedpoolchunksize;
+BOOL	sv598_sendsfrompreferredprocessor;
+} SERVER_INFO_598,*PSERVER_INFO_598,*LPSERVER_INFO_598;
+typedef struct _SERVER_INFO_1005 {LPWSTR sv1005_comment; } SERVER_INFO_1005,*PSERVER_INFO_1005,*LPSERVER_INFO_1005;
+typedef struct _SERVER_INFO_1107 { DWORD sv1107_users; } SERVER_INFO_1107,*PSERVER_INFO_1107,*LPSERVER_INFO_1107;
+typedef struct _SERVER_INFO_1010 { LONG sv1010_disc; } SERVER_INFO_1010,*PSERVER_INFO_1010,*LPSERVER_INFO_1010;
+typedef struct _SERVER_INFO_1016 { BOOL sv1016_hidden; } SERVER_INFO_1016,*PSERVER_INFO_1016,*LPSERVER_INFO_1016;
+typedef struct _SERVER_INFO_1017 { DWORD sv1017_announce; } SERVER_INFO_1017,*PSERVER_INFO_1017,*LPSERVER_INFO_1017;
+typedef struct _SERVER_INFO_1018 { DWORD sv1018_anndelta; } SERVER_INFO_1018,*PSERVER_INFO_1018,*LPSERVER_INFO_1018;
+typedef struct _SERVER_INFO_1501 { DWORD sv1501_sessopens; } SERVER_INFO_1501,*PSERVER_INFO_1501,*LPSERVER_INFO_1501;
+typedef struct _SERVER_INFO_1502 { DWORD sv1502_sessvcs; } SERVER_INFO_1502,*PSERVER_INFO_1502,*LPSERVER_INFO_1502;
+typedef struct _SERVER_INFO_1503 { DWORD sv1503_opensearch; } SERVER_INFO_1503,*PSERVER_INFO_1503,*LPSERVER_INFO_1503;
+typedef struct _SERVER_INFO_1506 { DWORD sv1506_maxworkitems; } SERVER_INFO_1506,*PSERVER_INFO_1506,*LPSERVER_INFO_1506;
+typedef struct _SERVER_INFO_1509 { DWORD sv1509_maxrawbuflen; } SERVER_INFO_1509,*PSERVER_INFO_1509,*LPSERVER_INFO_1509;
+typedef struct _SERVER_INFO_1510 { DWORD sv1510_sessusers; } SERVER_INFO_1510,*PSERVER_INFO_1510,*LPSERVER_INFO_1510;
+typedef struct _SERVER_INFO_1511 { DWORD sv1511_sessconns; } SERVER_INFO_1511,*PSERVER_INFO_1511,*LPSERVER_INFO_1511;
+typedef struct _SERVER_INFO_1512 { DWORD sv1512_maxnonpagedmemoryusage; } SERVER_INFO_1512,*PSERVER_INFO_1512,*LPSERVER_INFO_1512;
+typedef struct _SERVER_INFO_1513 { DWORD sv1513_maxpagedmemoryusage; } SERVER_INFO_1513,*PSERVER_INFO_1513,*LPSERVER_INFO_1513;
+typedef struct _SERVER_INFO_1514 { BOOL sv1514_enablesoftcompat; } SERVER_INFO_1514,*PSERVER_INFO_1514,*LPSERVER_INFO_1514;
+typedef struct _SERVER_INFO_1515 { BOOL sv1515_enableforcedlogoff; } SERVER_INFO_1515,*PSERVER_INFO_1515,*LPSERVER_INFO_1515;
+typedef struct _SERVER_INFO_1516 { BOOL sv1516_timesource; } SERVER_INFO_1516,*PSERVER_INFO_1516,*LPSERVER_INFO_1516;
+typedef struct _SERVER_INFO_1518 { BOOL sv1518_lmannounce; } SERVER_INFO_1518,*PSERVER_INFO_1518,*LPSERVER_INFO_1518;
+typedef struct _SERVER_INFO_1520 { DWORD sv1520_maxcopyreadlen; } SERVER_INFO_1520,*PSERVER_INFO_1520,*LPSERVER_INFO_1520;
+typedef struct _SERVER_INFO_1521 { DWORD sv1521_maxcopywritelen; } SERVER_INFO_1521,*PSERVER_INFO_1521,*LPSERVER_INFO_1521;
+typedef struct _SERVER_INFO_1522 { DWORD sv1522_minkeepsearch; } SERVER_INFO_1522,*PSERVER_INFO_1522,*LPSERVER_INFO_1522;
+typedef struct _SERVER_INFO_1523 { DWORD sv1523_maxkeepsearch; } SERVER_INFO_1523,*PSERVER_INFO_1523,*LPSERVER_INFO_1523;
+typedef struct _SERVER_INFO_1524 { DWORD sv1524_minkeepcomplsearch; } SERVER_INFO_1524,*PSERVER_INFO_1524,*LPSERVER_INFO_1524;
+typedef struct _SERVER_INFO_1525 { DWORD sv1525_maxkeepcomplsearch; } SERVER_INFO_1525,*PSERVER_INFO_1525,*LPSERVER_INFO_1525;
+typedef struct _SERVER_INFO_1528 { DWORD sv1528_scavtimeout; } SERVER_INFO_1528,*PSERVER_INFO_1528,*LPSERVER_INFO_1528;
+typedef struct _SERVER_INFO_1529 { DWORD sv1529_minrcvqueue; } SERVER_INFO_1529,*PSERVER_INFO_1529,*LPSERVER_INFO_1529;
+typedef struct _SERVER_INFO_1530 { DWORD sv1530_minfreeworkitems; } SERVER_INFO_1530,*PSERVER_INFO_1530,*LPSERVER_INFO_1530;
+typedef struct _SERVER_INFO_1533 { DWORD sv1533_maxmpxct; } SERVER_INFO_1533,*PSERVER_INFO_1533,*LPSERVER_INFO_1533;
+typedef struct _SERVER_INFO_1534 { DWORD sv1534_oplockbreakwait; } SERVER_INFO_1534,*PSERVER_INFO_1534,*LPSERVER_INFO_1534;
+typedef struct _SERVER_INFO_1535 { DWORD sv1535_oplockbreakresponsewait; } SERVER_INFO_1535,*PSERVER_INFO_1535,*LPSERVER_INFO_1535;
+typedef struct _SERVER_INFO_1536 { BOOL sv1536_enableoplocks; } SERVER_INFO_1536,*PSERVER_INFO_1536,*LPSERVER_INFO_1536;
+typedef struct _SERVER_INFO_1537 { BOOL sv1537_enableoplockforceclose; } SERVER_INFO_1537,*PSERVER_INFO_1537,*LPSERVER_INFO_1537;
+typedef struct _SERVER_INFO_1538 { BOOL sv1538_enablefcbopens; } SERVER_INFO_1538,*PSERVER_INFO_1538,*LPSERVER_INFO_1538;
+typedef struct _SERVER_INFO_1539 { BOOL sv1539_enableraw; } SERVER_INFO_1539,*PSERVER_INFO_1539,*LPSERVER_INFO_1539;
+typedef struct _SERVER_INFO_1540 { BOOL sv1540_enablesharednetdrives; } SERVER_INFO_1540,*PSERVER_INFO_1540,*LPSERVER_INFO_1540;
+typedef struct _SERVER_INFO_1541 { BOOL sv1541_minfreeconnections; } SERVER_INFO_1541,*PSERVER_INFO_1541,*LPSERVER_INFO_1541;
+typedef struct _SERVER_INFO_1542 { BOOL sv1542_maxfreeconnections; } SERVER_INFO_1542,*PSERVER_INFO_1542,*LPSERVER_INFO_1542;
+typedef struct _SERVER_INFO_1543 { DWORD sv1543_initsesstable; } SERVER_INFO_1543,*PSERVER_INFO_1543,*LPSERVER_INFO_1543;
+typedef struct _SERVER_INFO_1544 { DWORD sv1544_initconntable; } SERVER_INFO_1544,*PSERVER_INFO_1544,*LPSERVER_INFO_1544;
+typedef struct _SERVER_INFO_1545 { DWORD sv1545_initfiletable; } SERVER_INFO_1545,*PSERVER_INFO_1545,*LPSERVER_INFO_1545;
+typedef struct _SERVER_INFO_1546 { DWORD sv1546_initsearchtable; } SERVER_INFO_1546,*PSERVER_INFO_1546,*LPSERVER_INFO_1546;
+typedef struct _SERVER_INFO_1547 { DWORD sv1547_alertschedule; } SERVER_INFO_1547,*PSERVER_INFO_1547,*LPSERVER_INFO_1547;
+typedef struct _SERVER_INFO_1548 { DWORD sv1548_errorthreshold; } SERVER_INFO_1548,*PSERVER_INFO_1548,*LPSERVER_INFO_1548;
+typedef struct _SERVER_INFO_1549 { DWORD sv1549_networkerrorthreshold; } SERVER_INFO_1549,*PSERVER_INFO_1549,*LPSERVER_INFO_1549;
+typedef struct _SERVER_INFO_1550 { DWORD sv1550_diskspacethreshold; } SERVER_INFO_1550,*PSERVER_INFO_1550,*LPSERVER_INFO_1550;
+typedef struct _SERVER_INFO_1552 { DWORD sv1552_maxlinkdelay; } SERVER_INFO_1552,*PSERVER_INFO_1552,*LPSERVER_INFO_1552;
+typedef struct _SERVER_INFO_1553 { DWORD sv1553_minlinkthroughput; } SERVER_INFO_1553,*PSERVER_INFO_1553,*LPSERVER_INFO_1553;
+typedef struct _SERVER_INFO_1554 { DWORD sv1554_linkinfovalidtime; } SERVER_INFO_1554,*PSERVER_INFO_1554,*LPSERVER_INFO_1554;
+typedef struct _SERVER_INFO_1555 { DWORD sv1555_scavqosinfoupdatetime; } SERVER_INFO_1555,*PSERVER_INFO_1555,*LPSERVER_INFO_1555;
+typedef struct _SERVER_INFO_1556 { DWORD sv1556_maxworkitemidletime; } SERVER_INFO_1556,*PSERVER_INFO_1556,*LPSERVER_INFO_1556;
+typedef struct _SERVER_INFO_1557 { DWORD sv1557_maxrawworkitems; } SERVER_INFO_1557,*PSERVER_INFO_1557,*LPSERVER_INFO_1557;
+typedef struct _SERVER_INFO_1560 { DWORD sv1560_producttype; } SERVER_INFO_1560,*PSERVER_INFO_1560,*LPSERVER_INFO_1560;
+typedef struct _SERVER_INFO_1561 { DWORD sv1561_serversize; } SERVER_INFO_1561,*PSERVER_INFO_1561,*LPSERVER_INFO_1561;
+typedef struct _SERVER_INFO_1562 { DWORD sv1562_connectionlessautodisc; } SERVER_INFO_1562,*PSERVER_INFO_1562,*LPSERVER_INFO_1562;
+typedef struct _SERVER_INFO_1563 { DWORD sv1563_sharingviolationretries; } SERVER_INFO_1563,*PSERVER_INFO_1563,*LPSERVER_INFO_1563;
+typedef struct _SERVER_INFO_1564 { DWORD sv1564_sharingviolationdelay; } SERVER_INFO_1564,*PSERVER_INFO_1564,*LPSERVER_INFO_1564;
+typedef struct _SERVER_INFO_1565 { DWORD sv1565_maxglobalopensearch; } SERVER_INFO_1565,*PSERVER_INFO_1565,*LPSERVER_INFO_1565;
+typedef struct _SERVER_INFO_1566 { BOOL sv1566_removeduplicatesearches; } SERVER_INFO_1566,*PSERVER_INFO_1566,*LPSERVER_INFO_1566;
+typedef struct _SERVER_INFO_1567 { DWORD sv1567_lockviolationretries; } SERVER_INFO_1567,*PSERVER_INFO_1567,*LPSERVER_INFO_1567;
+typedef struct _SERVER_INFO_1568 { DWORD sv1568_lockviolationoffset; } SERVER_INFO_1568,*PSERVER_INFO_1568,*LPSERVER_INFO_1568;
+typedef struct _SERVER_INFO_1569 { DWORD sv1569_lockviolationdelay; } SERVER_INFO_1569,*PSERVER_INFO_1569,*LPSERVER_INFO_1569;
+typedef struct _SERVER_INFO_1570 { DWORD sv1570_mdlreadswitchover; } SERVER_INFO_1570,*PSERVER_INFO_1570,*LPSERVER_INFO_1570;
+typedef struct _SERVER_INFO_1571 { DWORD sv1571_cachedopenlimit; } SERVER_INFO_1571,*PSERVER_INFO_1571,*LPSERVER_INFO_1571;
+typedef struct _SERVER_INFO_1572 { DWORD sv1572_criticalthreads; } SERVER_INFO_1572,*PSERVER_INFO_1572,*LPSERVER_INFO_1572;
+typedef struct _SERVER_INFO_1573 { DWORD sv1573_restrictnullsessaccess; } SERVER_INFO_1573,*PSERVER_INFO_1573,*LPSERVER_INFO_1573;
+typedef struct _SERVER_INFO_1574 { DWORD sv1574_enablewfw311directipx;} SERVER_INFO_1574,*PSERVER_INFO_1574,*LPSERVER_INFO_1574;
+typedef struct _SERVER_INFO_1575 { DWORD sv1575_otherqueueaffinity; } SERVER_INFO_1575,*PSERVER_INFO_1575,*LPSERVER_INFO_1575;
+typedef struct _SERVER_INFO_1576 { DWORD sv1576_queuesamplesecs; } SERVER_INFO_1576,*PSERVER_INFO_1576,*LPSERVER_INFO_1576;
+typedef struct _SERVER_INFO_1577 { DWORD sv1577_balancecount; } SERVER_INFO_1577,*PSERVER_INFO_1577,*LPSERVER_INFO_1577;
+typedef struct _SERVER_INFO_1578 { DWORD sv1578_preferredaffinity; } SERVER_INFO_1578,*PSERVER_INFO_1578,*LPSERVER_INFO_1578;
+typedef struct _SERVER_INFO_1579 { DWORD sv1579_maxfreerfcbs; } SERVER_INFO_1579,*PSERVER_INFO_1579,*LPSERVER_INFO_1579;
+typedef struct _SERVER_INFO_1580 { DWORD sv1580_maxfreemfcbs; } SERVER_INFO_1580,*PSERVER_INFO_1580,*LPSERVER_INFO_1580;
+typedef struct _SERVER_INFO_1581 { DWORD sv1581_maxfreemlcbs; } SERVER_INFO_1581,*PSERVER_INFO_1581,*LPSERVER_INFO_1581;
+typedef struct _SERVER_INFO_1582 { DWORD sv1582_maxfreepagedpoolchunks; } SERVER_INFO_1582,*PSERVER_INFO_1582,*LPSERVER_INFO_1582;
+typedef struct _SERVER_INFO_1583 { DWORD sv1583_minpagedpoolchunksize; } SERVER_INFO_1583,*PSERVER_INFO_1583,*LPSERVER_INFO_1583;
+typedef struct _SERVER_INFO_1584 { DWORD sv1584_maxpagedpoolchunksize; } SERVER_INFO_1584,*PSERVER_INFO_1584,*LPSERVER_INFO_1584;
+typedef struct _SERVER_INFO_1585 { BOOL sv1585_sendsfrompreferredprocessor; } SERVER_INFO_1585,*PSERVER_INFO_1585,*LPSERVER_INFO_1585;
+typedef struct _SERVER_INFO_1586 { BOOL sv1586_maxthreadsperqueue; } SERVER_INFO_1586,*PSERVER_INFO_1586,*LPSERVER_INFO_1586;
+typedef struct _SERVER_TRANSPORT_INFO_0 {
+DWORD svti0_numberofvcs;
+LPWSTR	svti0_transportname;
+PBYTE	svti0_transportaddress;
+DWORD	svti0_transportaddresslength;
+LPWSTR	svti0_networkaddress;
+} SERVER_TRANSPORT_INFO_0,*PSERVER_TRANSPORT_INFO_0,*LPSERVER_TRANSPORT_INFO_0;
+
+NET_API_STATUS WINAPI NetServerEnum(LPCWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,DWORD,LPCWSTR,PDWORD);
+NET_API_STATUS WINAPI NetServerEnumEx(LPCWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,DWORD,LPCWSTR,LPCWSTR);
+NET_API_STATUS WINAPI NetServerGetInfo(LPWSTR,DWORD,PBYTE*);
+NET_API_STATUS WINAPI NetServerSetInfo(LPWSTR,DWORD,PBYTE,PDWORD);
+NET_API_STATUS NetServerSetInfoCommandLine(WORD,LPWSTR*);
+NET_API_STATUS WINAPI NetServerDiskEnum(LPWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD);
+NET_API_STATUS WINAPI NetServerComputerNameAdd(LPWSTR,LPWSTR,LPWSTR);
+NET_API_STATUS WINAPI NetServerComputerNameDel(LPWSTR,LPWSTR);
+NET_API_STATUS WINAPI NetServerTransportAdd(LPWSTR,DWORD,PBYTE);
+NET_API_STATUS WINAPI NetServerTransportAddEx(LPWSTR,DWORD,PBYTE);
+NET_API_STATUS WINAPI NetServerTransportDel(LPWSTR,DWORD,PBYTE);
+NET_API_STATUS WINAPI NetServerTransportEnum(LPWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD);
+BOOL SetServiceBits(SERVICE_STATUS_HANDLE,DWORD,BOOL,BOOL);
+
+#define SVI1_NUM_ELEMENTS	5
+#define SVI2_NUM_ELEMENTS	40
+#define SVI3_NUM_ELEMENTS	44
+#define SV_MAX_CMD_LEN	PATHLEN
+#define SW_AUTOPROF_LOAD_MASK 1
+#define SW_AUTOPROF_SAVE_MASK 2
+#define SV_MAX_SRV_HEUR_LEN	32
+#define SV_USERS_PER_LICENSE	5
+#define SV_PLATFORM_ID_OS2 400
+#define SV_PLATFORM_ID_NT 500
+#define MAJOR_VERSION_MASK 15
+#define SV_TYPE_WORKSTATION	1
+#define SV_TYPE_SERVER 2
+#define SV_TYPE_SQLSERVER 4
+#define SV_TYPE_DOMAIN_CTRL 8
+#define SV_TYPE_DOMAIN_BAKCTRL 16
+#define SV_TYPE_TIME_SOURCE 32
+#define SV_TYPE_AFP 64
+#define SV_TYPE_NOVELL 128
+#define SV_TYPE_DOMAIN_MEMBER 256
+#define SV_TYPE_PRINTQ_SERVER 512
+#define SV_TYPE_DIALIN_SERVER 1024
+#define SV_TYPE_XENIX_SERVER 2048
+#define SV_TYPE_SERVER_UNIX	SV_TYPE_XENIX_SERVER
+#define SV_TYPE_NT 4096
+#define SV_TYPE_WFW 8192
+#define SV_TYPE_SERVER_MFPN 16384
+#define SV_TYPE_SERVER_NT 32768
+#define SV_TYPE_POTENTIAL_BROWSER 65536
+#define SV_TYPE_BACKUP_BROWSER	0x20000
+#define SV_TYPE_MASTER_BROWSER	0x40000
+#define SV_TYPE_DOMAIN_MASTER	0x80000
+#define SV_TYPE_SERVER_OSF	0x100000
+#define SV_TYPE_SERVER_VMS	0x200000
+#define SV_TYPE_WINDOWS	0x400000
+#define SV_TYPE_ALTERNATE_XPORT	0x20000000
+#define SV_TYPE_LOCAL_LIST_ONLY	0x40000000
+#define SV_TYPE_DOMAIN_ENUM	0x80000000
+#define SV_TYPE_ALL	0xFFFFFFFF
+#define SV_NODISC	(-1)
+#define SV_USERSECURITY	1
+#define SV_SHARESECURITY	0
+#define SV_HIDDEN	1
+#define SV_VISIBLE	0
+#define SV_PLATFORM_ID_PARMNUM	101
+#define SV_NAME_PARMNUM	102
+#define SV_VERSION_MAJOR_PARMNUM	103
+#define SV_VERSION_MINOR_PARMNUM	104
+#define SV_TYPE_PARMNUM	105
+#define SV_COMMENT_PARMNUM	5
+#define SV_USERS_PARMNUM	107
+#define SV_DISC_PARMNUM	10
+#define SV_HIDDEN_PARMNUM	16
+#define SV_ANNOUNCE_PARMNUM	17
+#define SV_ANNDELTA_PARMNUM	18
+#define SV_USERPATH_PARMNUM	112
+#define SV_ULIST_MTIME_PARMNUM	401
+#define SV_GLIST_MTIME_PARMNUM	402
+#define SV_ALIST_MTIME_PARMNUM	403
+#define SV_ALERTS_PARMNUM	11
+#define SV_SECURITY_PARMNUM	405
+#define SV_NUMADMIN_PARMNUM	406
+#define SV_LANMASK_PARMNUM	407
+#define SV_GUESTACC_PARMNUM	408
+#define SV_CHDEVQ_PARMNUM	410
+#define SV_CHDEVJOBS_PARMNUM	411
+#define SV_CONNECTIONS_PARMNUM	412
+#define SV_SHARES_PARMNUM	413
+#define SV_OPENFILES_PARMNUM	414
+#define SV_SESSREQS_PARMNUM	417
+#define SV_ACTIVELOCKS_PARMNUM	419
+#define SV_NUMREQBUF_PARMNUM	420
+#define SV_NUMBIGBUF_PARMNUM	422
+#define SV_NUMFILETASKS_PARMNUM	423
+#define SV_ALERTSCHED_PARMNUM	37
+#define SV_ERRORALERT_PARMNUM	38
+#define SV_LOGONALERT_PARMNUM	39
+#define SV_ACCESSALERT_PARMNUM	40
+#define SV_DISKALERT_PARMNUM	41
+#define SV_NETIOALERT_PARMNUM	42
+#define SV_MAXAUDITSZ_PARMNUM	43
+#define SV_SRVHEURISTICS_PARMNUM	431
+#define SV_SESSOPENS_PARMNUM	501
+#define SV_SESSVCS_PARMNUM	502
+#define SV_OPENSEARCH_PARMNUM	503
+#define SV_SIZREQBUF_PARMNUM	504
+#define SV_INITWORKITEMS_PARMNUM	505
+#define SV_MAXWORKITEMS_PARMNUM	506
+#define SV_RAWWORKITEMS_PARMNUM	507
+#define SV_IRPSTACKSIZE_PARMNUM	508
+#define SV_MAXRAWBUFLEN_PARMNUM	509
+#define SV_SESSUSERS_PARMNUM	510
+#define SV_SESSCONNS_PARMNUM	511
+#define SV_MAXNONPAGEDMEMORYUSAGE_PARMNUM 512
+#define SV_MAXPAGEDMEMORYUSAGE_PARMNUM	513
+#define SV_ENABLESOFTCOMPAT_PARMNUM	514
+#define SV_ENABLEFORCEDLOGOFF_PARMNUM	515
+#define SV_TIMESOURCE_PARMNUM	516
+#define SV_ACCEPTDOWNLEVELAPIS_PARMNUM	517
+#define SV_LMANNOUNCE_PARMNUM	518
+#define SV_DOMAIN_PARMNUM	519
+#define SV_MAXCOPYREADLEN_PARMNUM	520
+#define SV_MAXCOPYWRITELEN_PARMNUM	521
+#define SV_MINKEEPSEARCH_PARMNUM	522
+#define SV_MAXKEEPSEARCH_PARMNUM	523
+#define SV_MINKEEPCOMPLSEARCH_PARMNUM	524
+#define SV_MAXKEEPCOMPLSEARCH_PARMNUM	525
+#define SV_THREADCOUNTADD_PARMNUM	526
+#define SV_NUMBLOCKTHREADS_PARMNUM	527
+#define SV_SCAVTIMEOUT_PARMNUM	528
+#define SV_MINRCVQUEUE_PARMNUM	529
+#define SV_MINFREEWORKITEMS_PARMNUM	530
+#define SV_XACTMEMSIZE_PARMNUM	531
+#define SV_THREADPRIORITY_PARMNUM	532
+#define SV_MAXMPXCT_PARMNUM	533
+#define SV_OPLOCKBREAKWAIT_PARMNUM	534
+#define SV_OPLOCKBREAKRESPONSEWAIT_PARMNUM 535
+#define SV_ENABLEOPLOCKS_PARMNUM	536
+#define SV_ENABLEOPLOCKFORCECLOSE_PARMNUM 537
+#define SV_ENABLEFCBOPENS_PARMNUM	538
+#define SV_ENABLERAW_PARMNUM	539
+#define SV_ENABLESHAREDNETDRIVES_PARMNUM	540
+#define SV_MINFREECONNECTIONS_PARMNUM	541
+#define SV_MAXFREECONNECTIONS_PARMNUM	542
+#define SV_INITSESSTABLE_PARMNUM	543
+#define SV_INITCONNTABLE_PARMNUM	544
+#define SV_INITFILETABLE_PARMNUM	545
+#define SV_INITSEARCHTABLE_PARMNUM	546
+#define SV_ALERTSCHEDULE_PARMNUM	547
+#define SV_ERRORTHRESHOLD_PARMNUM	548
+#define SV_NETWORKERRORTHRESHOLD_PARMNUM	549
+#define SV_DISKSPACETHRESHOLD_PARMNUM	550
+#define SV_MAXLINKDELAY_PARMNUM	552
+#define SV_MINLINKTHROUGHPUT_PARMNUM	553
+#define SV_LINKINFOVALIDTIME_PARMNUM	554
+#define SV_SCAVQOSINFOUPDATETIME_PARMNUM	555
+#define SV_MAXWORKITEMIDLETIME_PARMNUM	556
+#define SV_MAXRAWWORKITEMS_PARMNUM	557
+#define SV_PRODUCTTYPE_PARMNUM	560
+#define SV_SERVERSIZE_PARMNUM	561
+#define SV_CONNECTIONLESSAUTODISC_PARMNUM 562
+#define SV_SHARINGVIOLATIONRETRIES_PARMNUM 563
+#define SV_SHARINGVIOLATIONDELAY_PARMNUM	564
+#define SV_MAXGLOBALOPENSEARCH_PARMNUM	565
+#define SV_REMOVEDUPLICATESEARCHES_PARMNUM 566
+#define SV_LOCKVIOLATIONRETRIES_PARMNUM	567
+#define SV_LOCKVIOLATIONOFFSET_PARMNUM	568
+#define SV_LOCKVIOLATIONDELAY_PARMNUM	569
+#define SV_MDLREADSWITCHOVER_PARMNUM	570
+#define SV_CACHEDOPENLIMIT_PARMNUM	571
+#define SV_CRITICALTHREADS_PARMNUM	572
+#define SV_RESTRICTNULLSESSACCESS_PARMNUM 573
+#define SV_ENABLEWFW311DIRECTIPX_PARMNUM	574
+#define SV_OTHERQUEUEAFFINITY_PARMNUM	575
+#define SV_QUEUESAMPLESECS_PARMNUM	576
+#define SV_BALANCECOUNT_PARMNUM	577
+#define SV_PREFERREDAFFINITY_PARMNUM	578
+#define SV_MAXFREERFCBS_PARMNUM	579
+#define SV_MAXFREEMFCBS_PARMNUM	580
+#define SV_MAXFREELFCBS_PARMNUM	581
+#define SV_MAXFREEPAGEDPOOLCHUNKS_PARMNUM 582
+#define SV_MINPAGEDPOOLCHUNKSIZE_PARMNUM	583
+#define SV_MAXPAGEDPOOLCHUNKSIZE_PARMNUM	584
+#define SV_SENDSFROMPREFERREDPROCESSOR_PARMNUM	585
+#define SV_MAXTHREADSPERQUEUE_PARMNUM	586
+#define SV_COMMENT_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_COMMENT_PARMNUM)
+#define SV_USERS_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_USERS_PARMNUM)
+#define SV_DISC_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_DISC_PARMNUM)
+#define SV_HIDDEN_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_HIDDEN_PARMNUM)
+#define SV_ANNOUNCE_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_ANNOUNCE_PARMNUM)
+#define SV_ANNDELTA_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_ANNDELTA_PARMNUM)
+#define SV_SESSOPENS_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_SESSOPENS_PARMNUM)
+#define SV_SESSVCS_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_SESSVCS_PARMNUM)
+#define SV_OPENSEARCH_INFOLEVEL	(PARMNUM_BASE_INFOLEVEL+SV_OPENSEARCH_PARMNUM)
+#define SV_MAXWORKITEMS_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_MAXWORKITEMS_PARMNUM)
+#define SV_MAXRAWBUFLEN_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_MAXRAWBUFLEN_PARMNUM)
+#define SV_SESSUSERS_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_SESSUSERS_PARMNUM)
+#define SV_SESSCONNS_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_SESSCONNS_PARMNUM)
+#define SV_MAXNONPAGEDMEMORYUSAGE_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_MAXNONPAGEDMEMORYUSAGE_PARMNUM)
+#define SV_MAXPAGEDMEMORYUSAGE_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_MAXPAGEDMEMORYUSAGE_PARMNUM)
+#define SV_ENABLESOFTCOMPAT_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_ENABLESOFTCOMPAT_PARMNUM)
+#define SV_ENABLEFORCEDLOGOFF_INFOLEVEL	(PARMNUM_BASE_INFOLEVEL+SV_ENABLEFORCEDLOGOFF_PARMNUM)
+#define SV_TIMESOURCE_INFOLEVEL	(PARMNUM_BASE_INFOLEVEL+SV_TIMESOURCE_PARMNUM)
+#define SV_LMANNOUNCE_INFOLEVEL	(PARMNUM_BASE_INFOLEVEL+SV_LMANNOUNCE_PARMNUM)
+#define SV_MAXCOPYREADLEN_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_MAXCOPYREADLEN_PARMNUM)
+#define SV_MAXCOPYWRITELEN_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_MAXCOPYWRITELEN_PARMNUM)
+#define SV_MINKEEPSEARCH_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_MINKEEPSEARCH_PARMNUM)
+#define SV_MAXKEEPSEARCH_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_MAXKEEPSEARCH_PARMNUM)
+#define SV_MINKEEPCOMPLSEARCH_INFOLEVEL	(PARMNUM_BASE_INFOLEVEL+SV_MINKEEPCOMPLSEARCH_PARMNUM)
+#define SV_MAXKEEPCOMPLSEARCH_INFOLEVEL	(PARMNUM_BASE_INFOLEVEL+SV_MAXKEEPCOMPLSEARCH_PARMNUM)
+#define SV_SCAVTIMEOUT_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_SCAVTIMEOUT_PARMNUM)
+#define SV_MINRCVQUEUE_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_MINRCVQUEUE_PARMNUM)
+#define SV_MINFREEWORKITEMS_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_MINFREEWORKITEMS_PARMNUM)
+#define SV_MAXMPXCT_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_MAXMPXCT_PARMNUM)
+#define SV_OPLOCKBREAKWAIT_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_OPLOCKBREAKWAIT_PARMNUM)
+#define SV_OPLOCKBREAKRESPONSEWAIT_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_OPLOCKBREAKRESPONSEWAIT_PARMNUM)
+#define SV_ENABLEOPLOCKS_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_ENABLEOPLOCKS_PARMNUM)
+#define SV_ENABLEOPLOCKFORCECLOSE_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_ENABLEOPLOCKFORCECLOSE_PARMNUM)
+#define SV_ENABLEFCBOPENS_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_ENABLEFCBOPENS_PARMNUM)
+#define SV_ENABLERAW_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_ENABLERAW_PARMNUM)
+#define SV_ENABLESHAREDNETDRIVES_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_ENABLESHAREDNETDRIVES_PARMNUM)
+#define SV_MINFREECONNECTIONS_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_MINFREECONNECTIONS_PARMNUM)
+#define SV_MAXFREECONNECTIONS_INFOLEVEL	(PARMNUM_BASE_INFOLEVEL+SV_MAXFREECONNECTIONS_PARMNUM)
+#define SV_INITSESSTABLE_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_INITSESSTABLE_PARMNUM)
+#define SV_INITCONNTABLE_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_INITCONNTABLE_PARMNUM)
+#define SV_INITFILETABLE_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_INITFILETABLE_PARMNUM)
+#define SV_INITSEARCHTABLE_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_INITSEARCHTABLE_PARMNUM)
+#define SV_ALERTSCHEDULE_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_ALERTSCHEDULE_PARMNUM)
+#define SV_ERRORTHRESHOLD_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_ERRORTHRESHOLD_PARMNUM)
+#define SV_NETWORKERRORTHRESHOLD_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_NETWORKERRORTHRESHOLD_PARMNUM)
+#define SV_DISKSPACETHRESHOLD_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_DISKSPACETHRESHOLD_PARMNUM)
+#define SV_MAXLINKDELAY_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_MAXLINKDELAY_PARMNUM)
+#define SV_MINLINKTHROUGHPUT_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_MINLINKTHROUGHPUT_PARMNUM)
+#define SV_LINKINFOVALIDTIME_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_LINKINFOVALIDTIME_PARMNUM)
+#define SV_SCAVQOSINFOUPDATETIME_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_SCAVQOSINFOUPDATETIME_PARMNUM)
+#define SV_MAXWORKITEMIDLETIME_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_MAXWORKITEMIDLETIME_PARMNUM)
+#define SV_MAXRAWWORKITEMS_INFOLOEVEL (PARMNUM_BASE_INFOLEVEL+SV_MAXRAWWORKITEMS_PARMNUM)
+#define SV_PRODUCTTYPE_INFOLOEVEL (PARMNUM_BASE_INFOLEVEL+SV_PRODUCTTYPE_PARMNUM)
+#define SV_SERVERSIZE_INFOLOEVEL (PARMNUM_BASE_INFOLEVEL+SV_SERVERSIZE_PARMNUM)
+#define SV_CONNECTIONLESSAUTODISC_INFOLOEVEL (PARMNUM_BASE_INFOLEVEL+SV_CONNECTIONLESSAUTODISC_PARMNUM)
+#define SV_SHARINGVIOLATIONRETRIES_INFOLOEVEL (PARMNUM_BASE_INFOLEVEL+SV_SHARINGVIOLATIONRETRIES_PARMNUM)
+#define SV_SHARINGVIOLATIONDELAY_INFOLOEVEL (PARMNUM_BASE_INFOLEVEL+SV_SHARINGVIOLATIONDELAY_PARMNUM)
+#define SV_MAXGLOBALOPENSEARCH_INFOLOEVEL (PARMNUM_BASE_INFOLEVEL+SV_MAXGLOBALOPENSEARCH_PARMNUM)
+#define SV_REMOVEDUPLICATESEARCHES_INFOLOEVEL (PARMNUM_BASE_INFOLEVEL+SV_REMOVEDUPLICATESEARCHES_PARMNUM)
+#define SV_LOCKVIOLATIONRETRIES_INFOLOEVEL (PARMNUM_BASE_INFOLEVEL+SV_LOCKVIOLATIONRETRIES_PARMNUM)
+#define SV_LOCKVIOLATIONOFFSET_INFOLOEVEL (PARMNUM_BASE_INFOLEVEL+SV_LOCKVIOLATIONOFFSET_PARMNUM)
+#define SV_LOCKVIOLATIONDELAY_INFOLOEVEL (PARMNUM_BASE_INFOLEVEL+SV_LOCKVIOLATIONDELAY_PARMNUM)
+#define SV_MDLREADSWITCHOVER_INFOLOEVEL (PARMNUM_BASE_INFOLEVEL+SV_MDLREADSWITCHOVER_PARMNUM)
+#define SV_CACHEDOPENLIMIT_INFOLOEVEL (PARMNUM_BASE_INFOLEVEL+SV_CACHEDOPENLIMIT_PARMNUM)
+#define SV_CRITICALTHREADS_INFOLOEVEL (PARMNUM_BASE_INFOLEVEL+SV_CRITICALTHREADS_PARMNUM)
+#define SV_RESTRICTNULLSESSACCESS_INFOLOEVEL (PARMNUM_BASE_INFOLEVEL+SV_RESTRICTNULLSESSACCESS_PARMNUM)
+#define SV_ENABLEWFW311DIRECTIPX_INFOLOEVEL (PARMNUM_BASE_INFOLEVEL+SV_ENABLEWFW311DIRECTIPX_PARMNUM)
+#define SV_OTHERQUEUEAFFINITY_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_OTHERQUEUEAFFINITY_PARMNUM)
+#define SV_QUEUESAMPLESECS_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_QUEUESAMPLESECS_PARMNUM)
+#define SV_BALANCECOUNT_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_BALANCECOUNT_PARMNUM)
+#define SV_PREFERREDAFFINITY_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_PREFERREDAFFINITY_PARMNUM)
+#define SV_MAXFREERFCBS_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_MAXFREERFCBS_PARMNUM)
+#define SV_MAXFREEMFCBS_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_MAXFREEMFCBS_PARMNUM)
+#define SV_MAXFREELFCBS_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_MAXFREELFCBS_PARMNUM)
+#define SV_MAXFREEPAGEDPOOLCHUNKS_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_MAXFREEPAGEDPOOLCHUNKS_PARMNUM)
+#define SV_MINPAGEDPOOLCHUNKSIZE_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_MINPAGEDPOOLCHUNKSIZE_PARMNUM)
+#define SV_MAXPAGEDPOOLCHUNKSIZE_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_MAXPAGEDPOOLCHUNKSIZE_PARMNUM)
+#define SV_SENDSFROMPREFERREDPROCESSOR_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_SENDSFROMPREFERREDPROCESSOR_PARMNUM)
+#define SV_MAXTHREADSPERQUEUE_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_MAXTHREADSPERQUEUE_PARMNUM)
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/lmshare.h
===================================================================
--- Daodan/MinGW/include/lmshare.h	(revision 1046)
+++ Daodan/MinGW/include/lmshare.h	(revision 1046)
@@ -0,0 +1,147 @@
+#ifndef _LMSHARE_H
+#define _LMSHARE_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#include <lmcons.h>
+#define SHARE_NETNAME_PARMNUM 1
+#define SHARE_TYPE_PARMNUM 3
+#define SHARE_REMARK_PARMNUM 4
+#define SHARE_PERMISSIONS_PARMNUM 5
+#define SHARE_MAX_USES_PARMNUM 6
+#define SHARE_CURRENT_USES_PARMNUM 7
+#define SHARE_PATH_PARMNUM 8
+#define SHARE_PASSWD_PARMNUM 9
+#define SHARE_FILE_SD_PARMNUM 501
+#define SHARE_REMARK_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SHARE_REMARK_PARMNUM)
+#define SHARE_MAX_USES_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SHARE_MAX_USES_PARMNUM)
+#define SHARE_FILE_SD_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SHARE_FILE_SD_PARMNUM)
+#define SHI1_NUM_ELEMENTS 4
+#define SHI2_NUM_ELEMENTS 10
+#define STYPE_DISKTREE 0
+#define STYPE_PRINTQ 1
+#define STYPE_DEVICE 2
+#define STYPE_IPC 3
+#define STYPE_DFS 100
+#define STYPE_SPECIAL 0x80000000
+#define SHI_USES_UNLIMITED (DWORD)(-1)
+#define SESS_GUEST 1
+#define SESS_NOENCRYPTION 2
+#define SESI1_NUM_ELEMENTS 8
+#define SESI2_NUM_ELEMENTS 9
+#define PERM_FILE_READ 1
+#define PERM_FILE_WRITE 2
+#define PERM_FILE_CREATE 4
+typedef struct _FILE_INFO_2 { DWORD fi2_id;} FILE_INFO_2,*PFILE_INFO_2,*LPFILE_INFO_2;
+typedef struct _FILE_INFO_3 {
+	DWORD fi3_id;
+	DWORD fi3_permissions;
+	DWORD fi3_num_locks;
+	LPTSTR fi3_pathname;
+	LPTSTR fi3_username;
+} FILE_INFO_3,*PFILE_INFO_3,*LPFILE_INFO_3;
+typedef struct _SHARE_INFO_0 { LPTSTR shi0_netname; } SHARE_INFO_0,*PSHARE_INFO_0,*LPSHARE_INFO_0;
+typedef struct _SHARE_INFO_1 {
+	LPTSTR shi1_netname;
+	DWORD shi1_type;
+	LPTSTR shi1_remark;
+} SHARE_INFO_1,*PSHARE_INFO_1,*LPSHARE_INFO_1;
+typedef struct _SHARE_INFO_2 {
+	LPTSTR shi2_netname;
+	DWORD shi2_type;
+	LPTSTR shi2_remark;
+	DWORD shi2_permissions;
+	DWORD shi2_max_uses;
+	DWORD shi2_current_uses;
+	LPTSTR shi2_path;
+	LPTSTR shi2_passwd;
+} SHARE_INFO_2,*PSHARE_INFO_2,*LPSHARE_INFO_2;
+typedef struct _SHARE_INFO_502 {
+	LPTSTR shi502_netname;
+	DWORD shi502_type;
+	LPTSTR shi502_remark;
+	DWORD shi502_permissions;
+	DWORD shi502_max_uses;
+	DWORD shi502_current_uses;
+	LPTSTR shi502_path;
+	LPTSTR shi502_passwd;
+	DWORD shi502_reserved;
+	PSECURITY_DESCRIPTOR shi502_security_descriptor;
+} SHARE_INFO_502,*PSHARE_INFO_502,*LPSHARE_INFO_502;
+typedef struct _SHARE_INFO_1004 {
+	LPTSTR shi1004_remark;
+} SHARE_INFO_1004,*PSHARE_INFO_1004,*LPSHARE_INFO_1004;
+typedef struct _SHARE_INFO_1006 {
+	DWORD shi1006_max_uses;
+} SHARE_INFO_1006,*PSHARE_INFO_1006,*LPSHARE_INFO_1006;
+typedef struct _SHARE_INFO_1501 {
+	DWORD shi1501_reserved;
+	PSECURITY_DESCRIPTOR shi1501_security_descriptor;
+} SHARE_INFO_1501,*PSHARE_INFO_1501,*LPSHARE_INFO_1501;
+typedef struct _SESSION_INFO_0 { LPWSTR sesi0_cname; } SESSION_INFO_0,*PSESSION_INFO_0,*LPSESSION_INFO_0;
+typedef struct _SESSION_INFO_1 {
+	LPTSTR sesi1_cname;
+	LPTSTR sesi1_username;
+	DWORD sesi1_num_opens;
+	DWORD sesi1_time;
+	DWORD sesi1_idle_time;
+	DWORD sesi1_user_flags;
+} SESSION_INFO_1,*PSESSION_INFO_1,*LPSESSION_INFO_1;
+typedef struct _SESSION_INFO_2 {
+	LPTSTR sesi2_cname;
+	LPTSTR sesi2_username;
+	DWORD sesi2_num_opens;
+	DWORD sesi2_time;
+	DWORD sesi2_idle_time;
+	DWORD sesi2_user_flags;
+	LPWSTR sesi2_cltype_name;
+} SESSION_INFO_2,*PSESSION_INFO_2,*LPSESSION_INFO_2;
+typedef struct _SESSION_INFO_10 {
+	LPWSTR sesi10_cname;
+	LPWSTR sesi10_username;
+	DWORD sesi10_time;
+	DWORD sesi10_idle_time;
+} SESSION_INFO_10,*PSESSION_INFO_10,*LPSESSION_INFO_10;
+typedef struct _SESSION_INFO_502 {
+	LPWSTR sesi502_cname;
+	LPWSTR sesi502_username;
+	DWORD sesi502_num_opens;
+	DWORD sesi502_time;
+	DWORD sesi502_idle_time;
+	DWORD sesi502_user_flags;
+	LPWSTR sesi502_cltype_name;
+	LPWSTR sesi502_transport;
+} SESSION_INFO_502,*PSESSION_INFO_502,*LPSESSION_INFO_502;
+typedef struct _CONNECTION_INFO_0 { DWORD coni0_id; } CONNECTION_INFO_0,*PCONNECTION_INFO_0,*LPCONNECTION_INFO_0;
+typedef struct _CONNECTION_INFO_1 {
+	DWORD coni1_id;
+	DWORD coni1_type;
+	DWORD coni1_num_opens;
+	DWORD coni1_num_users;
+	DWORD coni1_time;
+	LPWSTR coni1_username;
+	LPWSTR coni1_netname;
+} CONNECTION_INFO_1,*PCONNECTION_INFO_1,*LPCONNECTION_INFO_1;
+NET_API_STATUS WINAPI NetShareAdd(LPWSTR,DWORD,PBYTE,PDWORD);
+NET_API_STATUS WINAPI NetShareEnum(LPWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD);
+NET_API_STATUS WINAPI NetShareEnumSticky(LPWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD resume_handle);
+NET_API_STATUS WINAPI NetShareGetInfo(LPWSTR,LPWSTR,DWORD,PBYTE*);
+NET_API_STATUS WINAPI NetShareSetInfo(LPWSTR,LPWSTR,DWORD,PBYTE,PDWORD);
+NET_API_STATUS WINAPI NetShareDel(LPWSTR,LPWSTR,DWORD);
+NET_API_STATUS WINAPI NetShareDelSticky(LPWSTR,LPWSTR,DWORD);
+NET_API_STATUS WINAPI NetShareCheck(LPWSTR,LPWSTR,PDWORD);
+NET_API_STATUS WINAPI NetSessionEnum(LPWSTR,LPWSTR,LPWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD);
+NET_API_STATUS WINAPI NetSessionDel(LPWSTR,LPWSTR,LPWSTR);
+NET_API_STATUS WINAPI NetSessionGetInfo(LPWSTR,LPWSTR,LPWSTR,DWORD,PBYTE*);
+NET_API_STATUS WINAPI NetConnectionEnum(LPWSTR,LPWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD);
+NET_API_STATUS WINAPI NetFileClose(LPWSTR,DWORD);
+NET_API_STATUS WINAPI NetFileEnum(LPWSTR,LPWSTR,LPWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD);
+NET_API_STATUS WINAPI NetFileGetInfo(LPWSTR,DWORD,DWORD,PBYTE*);
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/lmsname.h
===================================================================
--- Daodan/MinGW/include/lmsname.h	(revision 1046)
+++ Daodan/MinGW/include/lmsname.h	(revision 1046)
@@ -0,0 +1,58 @@
+#ifndef _LMSNAME_H
+#define _LMSNAME_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#define SERVICE_WORKSTATION TEXT("LanmanWorkstation")
+#define SERVICE_LM20_WORKSTATION TEXT("WORKSTATION")
+#define WORKSTATION_DISPLAY_NAME TEXT("Workstation")
+#define SERVICE_SERVER TEXT("LanmanServer")
+#define SERVICE_LM20_SERVER TEXT("SERVER")
+#define SERVER_DISPLAY_NAME TEXT("Server")
+#define SERVICE_BROWSER TEXT("BROWSER")
+#define SERVICE_LM20_BROWSER SERVICE_BROWSER
+#define SERVICE_MESSENGER TEXT("MESSENGER")
+#define SERVICE_LM20_MESSENGER SERVICE_MESSENGER
+#define SERVICE_NETRUN TEXT("NETRUN")
+#define SERVICE_LM20_NETRUN SERVICE_NETRUN
+#define SERVICE_SPOOLER TEXT("SPOOLER")
+#define SERVICE_LM20_SPOOLER SERVICE_SPOOLER
+#define SERVICE_ALERTER TEXT("ALERTER")
+#define SERVICE_LM20_ALERTER SERVICE_ALERTER
+#define SERVICE_NETLOGON TEXT("NETLOGON")
+#define SERVICE_LM20_NETLOGON SERVICE_NETLOGON
+#define SERVICE_NETPOPUP TEXT("NETPOPUP")
+#define SERVICE_LM20_NETPOPUP SERVICE_NETPOPUP
+#define SERVICE_SQLSERVER TEXT("SQLSERVER")
+#define SERVICE_LM20_SQLSERVER SERVICE_SQLSERVER
+#define SERVICE_REPL TEXT("REPLICATOR")
+#define SERVICE_LM20_REPL SERVICE_REPL
+#define SERVICE_RIPL TEXT("REMOTEBOOT")
+#define SERVICE_LM20_RIPL SERVICE_RIPL
+#define SERVICE_TIMESOURCE TEXT("TIMESOURCE")
+#define SERVICE_LM20_TIMESOURCE SERVICE_TIMESOURCE
+#define SERVICE_AFP TEXT("AFP")
+#define SERVICE_LM20_AFP SERVICE_AFP
+#define SERVICE_UPS TEXT("UPS")
+#define SERVICE_LM20_UPS SERVICE_UPS
+#define SERVICE_XACTSRV TEXT("XACTSRV")
+#define SERVICE_LM20_XACTSRV SERVICE_XACTSRV
+#define SERVICE_TCPIP TEXT("TCPIP")
+#define SERVICE_LM20_TCPIP SERVICE_TCPIP
+#define SERVICE_NBT TEXT("NBT")
+#define SERVICE_LM20_NBT SERVICE_NBT
+#define SERVICE_LMHOSTS TEXT("LMHOSTS")
+#define SERVICE_LM20_LMHOSTS SERVICE_LMHOSTS
+#define SERVICE_TELNET TEXT("Telnet")
+#define SERVICE_LM20_TELNET SERVICE_TELNET
+#define SERVICE_SCHEDULE TEXT("Schedule")
+#define SERVICE_LM20_SCHEDULE SERVICE_SCHEDULE
+#define SERVICE_NTLMSSP TEXT("NtLmSsp")
+#define SERVICE_DHCP TEXT("DHCP")
+#define SERVICE_LM20_DHCP SERVICE_DHCP
+#define SERVICE_NWSAP TEXT("NwSapAgent")
+#define SERVICE_LM20_NWSAP SERVICE_NWSAP
+#define NWSAP_DISPLAY_NAME TEXT("NW Sap Agent")
+#define SERVICE_NWCS TEXT("NWCWorkstation")
+#endif
Index: Daodan/MinGW/include/lmstats.h
===================================================================
--- Daodan/MinGW/include/lmstats.h	(revision 1046)
+++ Daodan/MinGW/include/lmstats.h	(revision 1046)
@@ -0,0 +1,114 @@
+#ifndef _LMSTATS_H
+#define _LMSTATS_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define STATSOPT_CLR 1
+#define STATS_NO_VALUE ((ULONG)-1)
+#define STATS_OVERFLOW ((ULONG)-2)
+typedef struct _STAT_SERVER_0 {
+	DWORD sts0_start;
+	DWORD sts0_fopens;
+	DWORD sts0_devopens;
+	DWORD sts0_jobsqueued;
+	DWORD sts0_sopens;
+	DWORD sts0_stimedout;
+	DWORD sts0_serrorout;
+	DWORD sts0_pwerrors;
+	DWORD sts0_permerrors;
+	DWORD sts0_syserrors;
+	DWORD sts0_bytessent_low;
+	DWORD sts0_bytessent_high;
+	DWORD sts0_bytesrcvd_low;
+	DWORD sts0_bytesrcvd_high;
+	DWORD sts0_avresponse;
+	DWORD sts0_reqbufneed;
+	DWORD sts0_bigbufneed;
+} STAT_SERVER_0,*PSTAT_SERVER_0,*LPSTAT_SERVER_0;
+#ifdef LM20_WORKSTATION_STATISTICS
+typedef struct _STAT_WORKSTATION_0 {
+	DWORD stw0_start;
+	DWORD stw0_numNCB_r;
+	DWORD stw0_numNCB_s;
+	DWORD stw0_numNCB_a;
+	DWORD stw0_fiNCB_r;
+	DWORD stw0_fiNCB_s;
+	DWORD stw0_fiNCB_a;
+	DWORD stw0_fcNCB_r;
+	DWORD stw0_fcNCB_s;
+	DWORD stw0_fcNCB_a;
+	DWORD stw0_sesstart;
+	DWORD stw0_sessfailcon;
+	DWORD stw0_sessbroke;
+	DWORD stw0_uses;
+	DWORD stw0_usefail;
+	DWORD stw0_autorec;
+	DWORD stw0_bytessent_r_lo;
+	DWORD stw0_bytessent_r_hi;
+	DWORD stw0_bytesrcvd_r_lo;
+	DWORD stw0_bytesrcvd_r_hi;
+	DWORD stw0_bytessent_s_lo;
+	DWORD stw0_bytessent_s_hi;
+	DWORD stw0_bytesrcvd_s_lo;
+	DWORD stw0_bytesrcvd_s_hi;
+	DWORD stw0_bytessent_a_lo;
+	DWORD stw0_bytessent_a_hi;
+	DWORD stw0_bytesrcvd_a_lo;
+	DWORD stw0_bytesrcvd_a_hi;
+	DWORD stw0_reqbufneed;
+	DWORD stw0_bigbufneed;
+} STAT_WORKSTATION_0,*PSTAT_WORKSTATION_0,*LPSTAT_WORKSTATION_0;
+#else
+typedef struct _STAT_WORKSTATION_0 {
+	LARGE_INTEGER StatisticsStartTime;
+	LARGE_INTEGER BytesReceived;
+	LARGE_INTEGER SmbsReceived;
+	LARGE_INTEGER PagingReadBytesRequested;
+	LARGE_INTEGER NonPagingReadBytesRequested;
+	LARGE_INTEGER CacheReadBytesRequested;
+	LARGE_INTEGER NetworkReadBytesRequested;
+	LARGE_INTEGER BytesTransmitted;
+	LARGE_INTEGER SmbsTransmitted;
+	LARGE_INTEGER PagingWriteBytesRequested;
+	LARGE_INTEGER NonPagingWriteBytesRequested;
+	LARGE_INTEGER CacheWriteBytesRequested;
+	LARGE_INTEGER NetworkWriteBytesRequested;
+	DWORD InitiallyFailedOperations;
+	DWORD FailedCompletionOperations;
+	DWORD ReadOperations;
+	DWORD RandomReadOperations;
+	DWORD ReadSmbs;
+	DWORD LargeReadSmbs;
+	DWORD SmallReadSmbs;
+	DWORD WriteOperations;
+	DWORD RandomWriteOperations;
+	DWORD WriteSmbs;
+	DWORD LargeWriteSmbs;
+	DWORD SmallWriteSmbs;
+	DWORD RawReadsDenied;
+	DWORD RawWritesDenied;
+	DWORD NetworkErrors;
+	DWORD Sessions;
+	DWORD FailedSessions;
+	DWORD Reconnects;
+	DWORD CoreConnects;
+	DWORD Lanman20Connects;
+	DWORD Lanman21Connects;
+	DWORD LanmanNtConnects;
+	DWORD ServerDisconnects;
+	DWORD HungSessions;
+	DWORD UseCount;
+	DWORD FailedUseCount;
+	DWORD CurrentCommands;
+} STAT_WORKSTATION_0,*PSTAT_WORKSTATION_0,*LPSTAT_WORKSTATION_0;
+#endif
+
+NET_API_STATUS WINAPI NetStatisticsGet(LPWSTR,LPWSTR,DWORD,DWORD,PBYTE*);
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/lmsvc.h
===================================================================
--- Daodan/MinGW/include/lmsvc.h	(revision 1046)
+++ Daodan/MinGW/include/lmsvc.h	(revision 1046)
@@ -0,0 +1,134 @@
+#ifndef _LMSVC_H
+#define _LMSVC_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#include <lmsname.h>
+#define SERVICE_DOS_ENCRYPTION TEXT("ENCRYPT")
+#define SERVICE_UNINSTALLED 0
+#define SERVICE_INSTALL_PENDING 1
+#define SERVICE_UNINSTALL_PENDING 2
+#define SERVICE_INSTALLED 3
+#define SERVICE_INSTALL_STATE 3
+#define SERVICE_PAUSE_STATE 18
+#define LM20_SERVICE_ACTIVE 0
+#define LM20_SERVICE_CONTINUE_PENDING 4
+#define LM20_SERVICE_PAUSE_PENDING 8
+#define LM20_SERVICE_PAUSED 18
+#define SERVICE_NOT_UNINSTALLABLE 0
+#define SERVICE_UNINSTALLABLE 16
+#define SERVICE_NOT_PAUSABLE 0
+#define SERVICE_PAUSABLE 32
+#define SERVICE_REDIR_PAUSED 0x700
+#define SERVICE_REDIR_DISK_PAUSED 256
+#define SERVICE_REDIR_PRINT_PAUSED 512
+#define SERVICE_REDIR_COMM_PAUSED 1024
+#define SERVICE_CTRL_INTERROGATE 0
+#define SERVICE_CTRL_PAUSE 1
+#define SERVICE_CTRL_CONTINUE 2
+#define SERVICE_CTRL_UNINSTALL 3
+#define SERVICE_CTRL_REDIR_DISK 1
+#define SERVICE_CTRL_REDIR_PRINT 2
+#define SERVICE_CTRL_REDIR_COMM 4
+#define SERVICE_IP_NO_HINT 0
+#define SERVICE_CCP_NO_HINT 0
+#define SERVICE_IP_QUERY_HINT 0x10000
+#define SERVICE_CCP_QUERY_HINT 0x10000
+#define SERVICE_IP_CHKPT_NUM 255
+#define SERVICE_CCP_CHKPT_NUM 255
+#define SERVICE_IP_WAIT_TIME 0xFF00
+#define SERVICE_CCP_WAIT_TIME 0xFF00
+#define SERVICE_IP_WAITTIME_SHIFT 8
+#define SERVICE_NTIP_WAITTIME_SHIFT 12
+#define UPPER_HINT_MASK 0xFF00
+#define LOWER_HINT_MASK 255
+#define UPPER_GET_HINT_MASK 0xFF00000
+#define LOWER_GET_HINT_MASK 0xFF00
+#define SERVICE_NT_MAXTIME 0xFFFF
+#define SERVICE_RESRV_MASK 0x1FFFF
+#define SERVICE_MAXTIME 255
+#define SERVICE_BASE 3050
+#define SERVICE_UIC_NORMAL 0
+#define SERVICE_UIC_BADPARMVAL (SERVICE_BASE+1)
+#define SERVICE_UIC_MISSPARM (SERVICE_BASE+2)
+#define SERVICE_UIC_UNKPARM (SERVICE_BASE+3)
+#define SERVICE_UIC_RESOURCE (SERVICE_BASE+4)
+#define SERVICE_UIC_CONFIG (SERVICE_BASE+5)
+#define SERVICE_UIC_SYSTEM (SERVICE_BASE+6)
+#define SERVICE_UIC_INTERNAL (SERVICE_BASE+7)
+#define SERVICE_UIC_AMBIGPARM (SERVICE_BASE+8)
+#define SERVICE_UIC_DUPPARM (SERVICE_BASE+9)
+#define SERVICE_UIC_KILL (SERVICE_BASE+10)
+#define SERVICE_UIC_EXEC (SERVICE_BASE+11)
+#define SERVICE_UIC_SUBSERV (SERVICE_BASE+12)
+#define SERVICE_UIC_CONFLPARM (SERVICE_BASE+13)
+#define SERVICE_UIC_FILE (SERVICE_BASE+14)
+#define SERVICE_UIC_M_NULL 0
+#define SERVICE_UIC_M_MEMORY (SERVICE_BASE+20)
+#define SERVICE_UIC_M_DISK (SERVICE_BASE+21)
+#define SERVICE_UIC_M_THREADS (SERVICE_BASE+22)
+#define SERVICE_UIC_M_PROCESSES (SERVICE_BASE+23)
+#define SERVICE_UIC_M_SECURITY (SERVICE_BASE+24)
+#define SERVICE_UIC_M_LANROOT (SERVICE_BASE+25)
+#define SERVICE_UIC_M_REDIR (SERVICE_BASE+26)
+#define SERVICE_UIC_M_SERVER (SERVICE_BASE+27)
+#define SERVICE_UIC_M_SEC_FILE_ERR (SERVICE_BASE+28)
+#define SERVICE_UIC_M_FILES (SERVICE_BASE+29)
+#define SERVICE_UIC_M_LOGS (SERVICE_BASE+30)
+#define SERVICE_UIC_M_LANGROUP (SERVICE_BASE+31)
+#define SERVICE_UIC_M_MSGNAME (SERVICE_BASE+32)
+#define SERVICE_UIC_M_ANNOUNCE (SERVICE_BASE+33)
+#define SERVICE_UIC_M_UAS (SERVICE_BASE+34)
+#define SERVICE_UIC_M_SERVER_SEC_ERR (SERVICE_BASE+35)
+#define SERVICE_UIC_M_WKSTA (SERVICE_BASE+37)
+#define SERVICE_UIC_M_ERRLOG (SERVICE_BASE+38)
+#define SERVICE_UIC_M_FILE_UW (SERVICE_BASE+39)
+#define SERVICE_UIC_M_ADDPAK (SERVICE_BASE+40)
+#define SERVICE_UIC_M_LAZY (SERVICE_BASE+41)
+#define SERVICE_UIC_M_UAS_MACHINE_ACCT (SERVICE_BASE+42)
+#define SERVICE_UIC_M_UAS_SERVERS_NMEMB (SERVICE_BASE+43)
+#define SERVICE_UIC_M_UAS_SERVERS_NOGRP (SERVICE_BASE+44)
+#define SERVICE_UIC_M_UAS_INVALID_ROLE (SERVICE_BASE+45)
+#define SERVICE_UIC_M_NETLOGON_NO_DC (SERVICE_BASE+46)
+#define SERVICE_UIC_M_NETLOGON_DC_CFLCT (SERVICE_BASE+47)
+#define SERVICE_UIC_M_NETLOGON_AUTH (SERVICE_BASE+48)
+#define SERVICE_UIC_M_UAS_PROLOG (SERVICE_BASE+49)
+#define SERVICE2_BASE 5600
+#define SERVICE_UIC_M_NETLOGON_MPATH (SERVICE2_BASE+0)
+#define SERVICE_UIC_M_LSA_MACHINE_ACCT (SERVICE2_BASE+1)
+#define SERVICE_UIC_M_DATABASE_ERROR (SERVICE2_BASE+2)
+
+typedef struct _SERVICE_INFO_0 { LPWSTR svci0_name;} SERVICE_INFO_0,*PSERVICE_INFO_0,* LPSERVICE_INFO_0;
+typedef struct _SERVICE_INFO_1 {
+	LPWSTR svci1_name;
+	DWORD svci1_status;
+	DWORD svci1_code;
+	DWORD svci1_pid;
+} SERVICE_INFO_1,*PSERVICE_INFO_1,* LPSERVICE_INFO_1;
+typedef struct _SERVICE_INFO_2 {
+	LPWSTR svci2_name;
+	DWORD svci2_status;
+	DWORD svci2_code;
+	DWORD svci2_pid;
+	LPWSTR svci2_text;
+	DWORD svci2_specific_error;
+	LPWSTR svci2_display_name;
+} SERVICE_INFO_2,*PSERVICE_INFO_2,* LPSERVICE_INFO_2;
+
+NET_API_STATUS WINAPI NetServiceControl(LPCWSTR,LPCWSTR,DWORD,DWORD,PBYTE*);
+NET_API_STATUS WINAPI NetServiceEnum(LPCWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD);
+NET_API_STATUS WINAPI NetServiceGetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE*);
+NET_API_STATUS WINAPI NetServiceInstall(LPCWSTR,LPCWSTR,DWORD,LPCWSTR*,PBYTE*);
+#define SERVICE_IP_CODE(t,n) ((long)SERVICE_IP_QUERY_HINT|(long)(n|(t<<SERVICE_IP_WAITTIME_SHIFT)))
+#define SERVICE_CCP_CODE(t,n) ((long)SERVICE_CCP_QUERY_HINT|(long)(n|(t<<SERVICE_IP_WAITTIME_SHIFT)))
+#define SERVICE_UIC_CODE(c,m) ((long)(((long)c<<16)|(long)(USHORT)m))
+#define SERVICE_NT_CCP_CODE(t,n) (((long)SERVICE_CCP_QUERY_HINT)|((long)(n))|(((t)&LOWER_HINT_MASK)<<SERVICE_IP_WAITTIME_SHIFT)|(((t)&UPPER_HINT_MASK)<<SERVICE_NTIP_WAITTIME_SHIFT))
+#define SERVICE_NT_WAIT_GET(c) ((((c)&UPPER_GET_HINT_MASK)>>SERVICE_NTIP_WAITTIME_SHIFT)|(((c)&LOWER_GET_HINT_MASK)>>SERVICE_IP_WAITTIME_SHIFT))
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/lmuse.h
===================================================================
--- Daodan/MinGW/include/lmuse.h	(revision 1046)
+++ Daodan/MinGW/include/lmuse.h	(revision 1046)
@@ -0,0 +1,60 @@
+#ifndef _LMUSE_H
+#define _LMUSE_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#include <lmuseflg.h>
+#define USE_LOCAL_PARMNUM 1
+#define USE_REMOTE_PARMNUM 2
+#define USE_PASSWORD_PARMNUM 3
+#define USE_ASGTYPE_PARMNUM 4
+#define USE_USERNAME_PARMNUM 5
+#define USE_DOMAINNAME_PARMNUM 6
+#define USE_OK 0
+#define USE_PAUSED 1
+#define USE_SESSLOST 2
+#define USE_DISCONN 2
+#define USE_NETERR 3
+#define USE_CONN 4
+#define USE_RECONN 5
+#define USE_WILDCARD ((DWORD)-1)
+#define USE_DISKDEV 0
+#define USE_SPOOLDEV 1
+#define USE_CHARDEV 2
+#define USE_IPC 3
+typedef struct _USE_INFO_0 {
+	LPWSTR ui0_local;
+	LPWSTR ui0_remote;
+}USE_INFO_0,*PUSE_INFO_0,*LPUSE_INFO_0;
+typedef struct _USE_INFO_1 {
+	LPWSTR ui1_local;
+	LPWSTR ui1_remote;
+	LPWSTR ui1_password;
+	DWORD ui1_status;
+	DWORD ui1_asg_type;
+	DWORD ui1_refcount;
+	DWORD ui1_usecount;
+}USE_INFO_1,*PUSE_INFO_1,*LPUSE_INFO_1;
+typedef struct _USE_INFO_2 {
+	LPWSTR ui2_local;
+	LPWSTR ui2_remote;
+	LPWSTR ui2_password;
+	DWORD ui2_status;
+	DWORD ui2_asg_type;
+	DWORD ui2_refcount;
+	DWORD ui2_usecount;
+	LPWSTR ui2_username;
+	LPWSTR ui2_domainname;
+}USE_INFO_2,*PUSE_INFO_2,*LPUSE_INFO_2;
+NET_API_STATUS WINAPI NetUseAdd(LPWSTR,DWORD,PBYTE,PDWORD);
+NET_API_STATUS WINAPI NetUseDel(LPWSTR,LPWSTR,DWORD);
+NET_API_STATUS WINAPI NetUseEnum(LPWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD);
+NET_API_STATUS WINAPI NetUseGetInfo(LPWSTR,LPWSTR,DWORD,PBYTE*);
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/lmuseflg.h
===================================================================
--- Daodan/MinGW/include/lmuseflg.h	(revision 1046)
+++ Daodan/MinGW/include/lmuseflg.h	(revision 1046)
@@ -0,0 +1,10 @@
+#ifndef _LMUSEFLG_H
+#define _LMUSEFLG_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#define USE_NOFORCE 0
+#define USE_FORCE 1
+#define USE_LOTS_OF_FORCE 2
+#endif
Index: Daodan/MinGW/include/lmwksta.h
===================================================================
--- Daodan/MinGW/include/lmwksta.h	(revision 1046)
+++ Daodan/MinGW/include/lmwksta.h	(revision 1046)
@@ -0,0 +1,233 @@
+#ifndef _LMWKSTA_H
+#define _LMWKSTA_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#include <lmuseflg.h>
+#define WKSTA_PLATFORM_ID_PARMNUM 100
+#define WKSTA_COMPUTERNAME_PARMNUM 1
+#define WKSTA_LANGROUP_PARMNUM 2
+#define WKSTA_VER_MAJOR_PARMNUM 4
+#define WKSTA_VER_MINOR_PARMNUM 5
+#define WKSTA_LOGGED_ON_USERS_PARMNUM 6
+#define WKSTA_LANROOT_PARMNUM 7
+#define WKSTA_LOGON_DOMAIN_PARMNUM 8
+#define WKSTA_LOGON_SERVER_PARMNUM 9
+#define WKSTA_CHARWAIT_PARMNUM 10
+#define WKSTA_CHARTIME_PARMNUM 11
+#define WKSTA_CHARCOUNT_PARMNUM 12
+#define WKSTA_KEEPCONN_PARMNUM 13
+#define WKSTA_KEEPSEARCH_PARMNUM 14
+#define WKSTA_MAXCMDS_PARMNUM 15
+#define WKSTA_NUMWORKBUF_PARMNUM 16
+#define WKSTA_MAXWRKCACHE_PARMNUM 17
+#define WKSTA_SESSTIMEOUT_PARMNUM 18
+#define WKSTA_SIZERROR_PARMNUM 19
+#define WKSTA_NUMALERTS_PARMNUM 20
+#define WKSTA_NUMSERVICES_PARMNUM 21
+#define WKSTA_NUMCHARBUF_PARMNUM 22
+#define WKSTA_SIZCHARBUF_PARMNUM 23
+#define WKSTA_ERRLOGSZ_PARMNUM 27
+#define WKSTA_PRINTBUFTIME_PARMNUM 28
+#define WKSTA_SIZWORKBUF_PARMNUM 29
+#define WKSTA_MAILSLOTS_PARMNUM 30
+#define WKSTA_NUMDGRAMBUF_PARMNUM 31
+#define WKSTA_WRKHEURISTICS_PARMNUM 32
+#define WKSTA_MAXTHREADS_PARMNUM 33
+#define WKSTA_LOCKQUOTA_PARMNUM 41
+#define WKSTA_LOCKINCREMENT_PARMNUM 42
+#define WKSTA_LOCKMAXIMUM_PARMNUM 43
+#define WKSTA_PIPEINCREMENT_PARMNUM 44
+#define WKSTA_PIPEMAXIMUM_PARMNUM 45
+#define WKSTA_DORMANTFILELIMIT_PARMNUM 46
+#define WKSTA_CACHEFILETIMEOUT_PARMNUM 47
+#define WKSTA_USEOPPORTUNISTICLOCKING_PARMNUM 48
+#define WKSTA_USEUNLOCKBEHIND_PARMNUM 49
+#define WKSTA_USECLOSEBEHIND_PARMNUM 50
+#define WKSTA_BUFFERNAMEDPIPES_PARMNUM 51
+#define WKSTA_USELOCKANDREADANDUNLOCK_PARMNUM 52
+#define WKSTA_UTILIZENTCACHING_PARMNUM 53
+#define WKSTA_USERAWREAD_PARMNUM 54
+#define WKSTA_USERAWWRITE_PARMNUM 55
+#define WKSTA_USEWRITERAWWITHDATA_PARMNUM 56
+#define WKSTA_USEENCRYPTION_PARMNUM 57
+#define WKSTA_BUFFILESWITHDENYWRITE_PARMNUM 58
+#define WKSTA_BUFFERREADONLYFILES_PARMNUM 59
+#define WKSTA_FORCECORECREATEMODE_PARMNUM 60
+#define WKSTA_USE512BYTESMAXTRANSFER_PARMNUM 61
+#define WKSTA_READAHEADTHRUPUT_PARMNUM 62
+#define WKSTA_OTH_DOMAINS_PARMNUM 101
+#define TRANSPORT_QUALITYOFSERVICE_PARMNUM 201
+#define TRANSPORT_NAME_PARMNUM 202
+
+typedef struct _WKSTA_INFO_100 {
+	DWORD wki100_platform_id;
+	LPWSTR wki100_computername;
+	LPWSTR wki100_langroup;
+	DWORD wki100_ver_major;
+	DWORD wki100_ver_minor;
+}WKSTA_INFO_100,*PWKSTA_INFO_100,*LPWKSTA_INFO_100;
+typedef struct _WKSTA_INFO_101 {
+	DWORD wki101_platform_id;
+	LPWSTR wki101_computername;
+	LPWSTR wki101_langroup;
+	DWORD wki101_ver_major;
+	DWORD wki101_ver_minor;
+	LPWSTR wki101_lanroot;
+}WKSTA_INFO_101,*PWKSTA_INFO_101,*LPWKSTA_INFO_101;
+typedef struct _WKSTA_INFO_102 {
+	DWORD wki102_platform_id;
+	LPWSTR wki102_computername;
+	LPWSTR wki102_langroup;
+	DWORD wki102_ver_major;
+	DWORD wki102_ver_minor;
+	LPWSTR wki102_lanroot;
+	DWORD wki102_logged_on_users;
+}WKSTA_INFO_102,*PWKSTA_INFO_102,*LPWKSTA_INFO_102;
+typedef struct _WKSTA_INFO_302{
+	DWORD wki302_char_wait;
+	DWORD wki302_collection_time;
+	DWORD wki302_maximum_collection_count;
+	DWORD wki302_keep_conn;
+	DWORD wki302_keep_search;
+	DWORD wki302_max_cmds;
+	DWORD wki302_num_work_buf;
+	DWORD wki302_siz_work_buf;
+	DWORD wki302_max_wrk_cache;
+	DWORD wki302_sess_timeout;
+	DWORD wki302_siz_error;
+	DWORD wki302_num_alerts;
+	DWORD wki302_num_services;
+	DWORD wki302_errlog_sz;
+	DWORD wki302_print_buf_time;
+	DWORD wki302_num_char_buf;
+	DWORD wki302_siz_char_buf;
+	LPWSTR wki302_wrk_heuristics;
+	DWORD wki302_mailslots;
+	DWORD wki302_num_dgram_buf;
+}WKSTA_INFO_302,*PWKSTA_INFO_302,*LPWKSTA_INFO_302;
+typedef struct _WKSTA_INFO_402{
+	DWORD wki402_char_wait;
+	DWORD wki402_collection_time;
+	DWORD wki402_maximum_collection_count;
+	DWORD wki402_keep_conn;
+	DWORD wki402_keep_search;
+	DWORD wki402_max_cmds;
+	DWORD wki402_num_work_buf;
+	DWORD wki402_siz_work_buf;
+	DWORD wki402_max_wrk_cache;
+	DWORD wki402_sess_timeout;
+	DWORD wki402_siz_error;
+	DWORD wki402_num_alerts;
+	DWORD wki402_num_services;
+	DWORD wki402_errlog_sz;
+	DWORD wki402_print_buf_time;
+	DWORD wki402_num_char_buf;
+	DWORD wki402_siz_char_buf;
+	LPWSTR wki402_wrk_heuristics;
+	DWORD wki402_mailslots;
+	DWORD wki402_num_dgram_buf;
+	DWORD wki402_max_threads;
+}WKSTA_INFO_402,*PWKSTA_INFO_402,*LPWKSTA_INFO_402;
+typedef struct _WKSTA_INFO_502{
+	DWORD wki502_char_wait;
+	DWORD wki502_collection_time;
+	DWORD wki502_maximum_collection_count;
+	DWORD wki502_keep_conn;
+	DWORD wki502_max_cmds;
+	DWORD wki502_sess_timeout;
+	DWORD wki502_siz_char_buf;
+	DWORD wki502_max_threads;
+	DWORD wki502_lock_quota;
+	DWORD wki502_lock_increment;
+	DWORD wki502_lock_maximum;
+	DWORD wki502_pipe_increment;
+	DWORD wki502_pipe_maximum;
+	DWORD wki502_cache_file_timeout;
+	DWORD wki502_dormant_file_limit;
+	DWORD wki502_read_ahead_throughput;
+	DWORD wki502_num_mailslot_buffers;
+	DWORD wki502_num_srv_announce_buffers;
+	DWORD wki502_max_illegal_datagram_events;
+	DWORD wki502_illegal_datagram_event_reset_frequency;
+	BOOL wki502_log_election_packets;
+	BOOL wki502_use_opportunistic_locking;
+	BOOL wki502_use_unlock_behind;
+	BOOL wki502_use_close_behind;
+	BOOL wki502_buf_named_pipes;
+	BOOL wki502_use_lock_read_unlock;
+	BOOL wki502_utilize_nt_caching;
+	BOOL wki502_use_raw_read;
+	BOOL wki502_use_raw_write;
+	BOOL wki502_use_write_raw_data;
+	BOOL wki502_use_encryption;
+	BOOL wki502_buf_files_deny_write;
+	BOOL wki502_buf_read_only_files;
+	BOOL wki502_force_core_create_mode;
+	BOOL wki502_use_512_byte_max_transfer;
+}WKSTA_INFO_502,*PWKSTA_INFO_502,*LPWKSTA_INFO_502;
+typedef struct _WKSTA_INFO_1010 { DWORD wki1010_char_wait;} WKSTA_INFO_1010,*PWKSTA_INFO_1010,*LPWKSTA_INFO_1010;
+typedef struct _WKSTA_INFO_1011 { DWORD wki1011_collection_time;} WKSTA_INFO_1011,*PWKSTA_INFO_1011,*LPWKSTA_INFO_1011;
+typedef struct _WKSTA_INFO_1012 { DWORD wki1012_maximum_collection_count;} WKSTA_INFO_1012,*PWKSTA_INFO_1012,*LPWKSTA_INFO_1012;
+typedef struct _WKSTA_INFO_1027 { DWORD wki1027_errlog_sz;} WKSTA_INFO_1027,*PWKSTA_INFO_1027,*LPWKSTA_INFO_1027;
+typedef struct _WKSTA_INFO_1028 { DWORD wki1028_print_buf_time;} WKSTA_INFO_1028,*PWKSTA_INFO_1028,*LPWKSTA_INFO_1028;
+typedef struct _WKSTA_INFO_1032 { DWORD wki1032_wrk_heuristics;} WKSTA_INFO_1032,*PWKSTA_INFO_1032,*LPWKSTA_INFO_1032;
+typedef struct _WKSTA_INFO_1013 { DWORD wki1013_keep_conn;} WKSTA_INFO_1013,*PWKSTA_INFO_1013,*LPWKSTA_INFO_1013;
+typedef struct _WKSTA_INFO_1018 { DWORD wki1018_sess_timeout;} WKSTA_INFO_1018,*PWKSTA_INFO_1018,*LPWKSTA_INFO_1018;
+typedef struct _WKSTA_INFO_1023 { DWORD wki1023_siz_char_buf;} WKSTA_INFO_1023,*PWKSTA_INFO_1023,*LPWKSTA_INFO_1023;
+typedef struct _WKSTA_INFO_1033 { DWORD wki1033_max_threads;} WKSTA_INFO_1033,*PWKSTA_INFO_1033,*LPWKSTA_INFO_1033;
+typedef struct _WKSTA_INFO_1041 { DWORD wki1041_lock_quota;} WKSTA_INFO_1041,*PWKSTA_INFO_1041,*LPWKSTA_INFO_1041;
+typedef struct _WKSTA_INFO_1042 { DWORD wki1042_lock_increment;} WKSTA_INFO_1042,*PWKSTA_INFO_1042,*LPWKSTA_INFO_1042;
+typedef struct _WKSTA_INFO_1043 { DWORD wki1043_lock_maximum;} WKSTA_INFO_1043,*PWKSTA_INFO_1043,*LPWKSTA_INFO_1043;
+typedef struct _WKSTA_INFO_1044 { DWORD wki1044_pipe_increment;} WKSTA_INFO_1044,*PWKSTA_INFO_1044,*LPWKSTA_INFO_1044;
+typedef struct _WKSTA_INFO_1045 { DWORD wki1045_pipe_maximum;} WKSTA_INFO_1045,*PWKSTA_INFO_1045,*LPWKSTA_INFO_1045;
+typedef struct _WKSTA_INFO_1046 { DWORD wki1046_dormant_file_limit;} WKSTA_INFO_1046,*PWKSTA_INFO_1046,*LPWKSTA_INFO_1046;
+typedef struct _WKSTA_INFO_1047 { DWORD wki1047_cache_file_timeout;} WKSTA_INFO_1047,*PWKSTA_INFO_1047,*LPWKSTA_INFO_1047;
+typedef struct _WKSTA_INFO_1048 { BOOL wki1048_use_opportunistic_locking;} WKSTA_INFO_1048,*PWKSTA_INFO_1048,*LPWKSTA_INFO_1048;
+typedef struct _WKSTA_INFO_1049 { BOOL wki1049_use_unlock_behind;} WKSTA_INFO_1049,*PWKSTA_INFO_1049,*LPWKSTA_INFO_1049;
+typedef struct _WKSTA_INFO_1050 { BOOL wki1050_use_close_behind;} WKSTA_INFO_1050,*PWKSTA_INFO_1050,*LPWKSTA_INFO_1050;
+typedef struct _WKSTA_INFO_1051 { BOOL wki1051_buf_named_pipes;} WKSTA_INFO_1051,*PWKSTA_INFO_1051,*LPWKSTA_INFO_1051;
+typedef struct _WKSTA_INFO_1052 { BOOL wki1052_use_lock_read_unlock;} WKSTA_INFO_1052,*PWKSTA_INFO_1052,*LPWKSTA_INFO_1052;
+typedef struct _WKSTA_INFO_1053 { BOOL wki1053_utilize_nt_caching;} WKSTA_INFO_1053,*PWKSTA_INFO_1053,*LPWKSTA_INFO_1053;
+typedef struct _WKSTA_INFO_1054 { BOOL wki1054_use_raw_read;} WKSTA_INFO_1054,*PWKSTA_INFO_1054,*LPWKSTA_INFO_1054;
+typedef struct _WKSTA_INFO_1055 { BOOL wki1055_use_raw_write;} WKSTA_INFO_1055,*PWKSTA_INFO_1055,*LPWKSTA_INFO_1055;
+typedef struct _WKSTA_INFO_1056 { BOOL wki1056_use_write_raw_data;} WKSTA_INFO_1056,*PWKSTA_INFO_1056,*LPWKSTA_INFO_1056;
+typedef struct _WKSTA_INFO_1057 { BOOL wki1057_use_encryption;} WKSTA_INFO_1057,*PWKSTA_INFO_1057,*LPWKSTA_INFO_1057;
+typedef struct _WKSTA_INFO_1058 { BOOL wki1058_buf_files_deny_write;} WKSTA_INFO_1058,*PWKSTA_INFO_1058,*LPWKSTA_INFO_1058;
+typedef struct _WKSTA_INFO_1059 { BOOL wki1059_buf_read_only_files;} WKSTA_INFO_1059,*PWKSTA_INFO_1059,*LPWKSTA_INFO_1059;
+typedef struct _WKSTA_INFO_1060 { BOOL wki1060_force_core_create_mode;} WKSTA_INFO_1060,*PWKSTA_INFO_1060,*LPWKSTA_INFO_1060;
+typedef struct _WKSTA_INFO_1061 { BOOL wki1061_use_512_byte_max_transfer;} WKSTA_INFO_1061,*PWKSTA_INFO_1061,*LPWKSTA_INFO_1061;
+typedef struct _WKSTA_INFO_1062 { DWORD wki1062_read_ahead_throughput;} WKSTA_INFO_1062,*PWKSTA_INFO_1062,*LPWKSTA_INFO_1062;
+typedef struct _WKSTA_USER_INFO_0 { LPWSTR wkui0_username;}WKSTA_USER_INFO_0,*PWKSTA_USER_INFO_0,*LPWKSTA_USER_INFO_0;
+typedef struct _WKSTA_USER_INFO_1 {
+	LPWSTR wkui1_username;
+	LPWSTR wkui1_logon_domain;
+	LPWSTR wkui1_oth_domains;
+	LPWSTR wkui1_logon_server;
+}WKSTA_USER_INFO_1,*PWKSTA_USER_INFO_1,*LPWKSTA_USER_INFO_1;
+typedef struct _WKSTA_USER_INFO_1101 { LPWSTR wkui1101_oth_domains;} WKSTA_USER_INFO_1101,*PWKSTA_USER_INFO_1101,*LPWKSTA_USER_INFO_1101;
+typedef struct _WKSTA_TRANSPORT_INFO_0 {
+	DWORD wkti0_quality_of_service;
+	DWORD wkti0_number_of_vcs;
+	LPWSTR wkti0_transport_name;
+	LPWSTR wkti0_transport_address;
+	BOOL wkti0_wan_ish;
+}WKSTA_TRANSPORT_INFO_0,*PWKSTA_TRANSPORT_INFO_0,*LPWKSTA_TRANSPORT_INFO_0;
+
+NET_API_STATUS WINAPI NetWkstaGetInfo(LPWSTR,DWORD,PBYTE*);
+NET_API_STATUS WINAPI NetWkstaSetInfo(LPWSTR,DWORD,PBYTE,PDWORD);
+NET_API_STATUS WINAPI NetWkstaUserGetInfo(LPWSTR,DWORD,PBYTE*);
+NET_API_STATUS WINAPI NetWkstaUserSetInfo(LPWSTR,DWORD,PBYTE,PDWORD);
+NET_API_STATUS WINAPI NetWkstaUserEnum(LPWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD);
+NET_API_STATUS WINAPI NetWkstaTransportAdd(LPWSTR,DWORD,PBYTE,PDWORD);
+NET_API_STATUS WINAPI NetWkstaTransportDel(LPWSTR,LPWSTR,DWORD);
+NET_API_STATUS WINAPI NetWkstaTransportEnum(LPWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD);
+
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/locale.h
===================================================================
--- Daodan/MinGW/include/locale.h	(revision 1046)
+++ Daodan/MinGW/include/locale.h	(revision 1046)
@@ -0,0 +1,189 @@
+/*
+ * locale.h
+ *
+ * Functions and types for localization (ie. changing the appearance of
+ * output based on the standards of a certain country, or region).
+ *
+ * $Id: locale.h,v a3059ad5ee79 2016/06/12 19:22:07 keithmarshall $
+ *
+ * Written by Colin Peters <colin@bird.fu.is.saga-u.ac.jp>
+ * Copyright (C) 1997, 1999-2001, 2003, 2004, 2007, 2016, MinGW.org Project.
+ *
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice, this permission notice, and the following
+ * disclaimer shall be included in all copies or substantial portions of
+ * the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OF OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ *
+ */
+#ifndef	_LOCALE_H
+#pragma GCC system_header
+
+/* Some headers will include this file, just to acquire a globally
+ * consistent definition for the opaque locale_t data object type; it
+ * is only useful on Vista, or for users of non-free MSVCR80.DLL, (or
+ * its later derivatives), so, when either of these is applicable,
+ * ensure that we define it, (if we haven't done so already).
+ */
+#if ! defined __have_typedef_locale_t \
+&& (__MSVCRT_VERSION__ >= __MSVCR80_DLL || _WIN32_WINNT >= _WIN32_WINNT_VISTA)
+/*
+ * FIXME: Do these actually have any value for Vista?  Although the Vista
+ * release of MSVCRT.DLL exports several functions which require locale_t
+ * parameters, it appears to lack any mechanism whereby an object of that
+ * type might be created, or otherwise, a reference to such an object may
+ * be acquired.
+ */
+typedef struct __mingw_opaque_locale_t  *_locale_t;
+typedef struct __mingw_opaque_locale_t  * locale_t;
+
+/* Set a (private) pre-processor flag, to indicate that these data types
+ * have been defined; although GCC versions from 4.x onwards may accept
+ * repeated (consistent) definitions, this flag gives us the facility to
+ * avoid the overhead of repeatedly parsing this file, just to satisfy a
+ * __need_locale_t request which has been satisfied already.
+ */
+#define __have_typedef_locale_t  1
+#endif	/* !__have_typedef_locale_t */
+
+/* When we are interested in more than just locale_t...
+ */
+#ifndef __need_locale_t
+/* ...content from <locale.h> is selectively shared with <wchar.h>;
+ * defer definition of the normal repeat inclusion guard, until...
+ */
+#ifndef __WCHAR_H_SOURCED__
+ /* ...we have confirmed that this inclusion is NOT the <wchar.h>
+  * selective request, or just a __need_locale_t request.
+  */
+#define	_LOCALE_H
+
+/* All MinGW headers should include <_mingw.h>; do so only when NOT
+ * sourced by <wchar.h>, (which should have included it already).
+ */
+#include <_mingw.h>
+
+#define	LC_ALL		0
+#define LC_COLLATE	1
+#define LC_CTYPE	2
+#define	LC_MONETARY	3
+#define	LC_NUMERIC	4
+#define	LC_TIME		5
+#define	LC_MIN		LC_ALL
+#define	LC_MAX		LC_TIME
+
+#ifndef RC_INVOKED
+/* Both ISO-C and POSIX stipulate that <locale.h> should reproduce the
+ * definition of NULL, from <stddef.h>; although not required by either
+ * standard, we also require wchar_t, to support our declaration of the
+ * Microsoft specific _wsetlocale() function, below.
+ */
+#define __need_NULL
+#define __need_wchar_t
+#include <stddef.h>
+
+struct lconv
+{ /* The structure returned by the localeconv() function.
+   *
+   * AUTHOR'S NOTE:
+   * I have tried to test this, but I am limited by my knowledge of
+   * locale issues. The structure does not bomb if you look at the
+   * values, and 'decimal_point' even seems to be correct, but the
+   * rest of the values may, by default, not be particularly useful;
+   * indeed, they may even be meaningless, and in no way related to
+   * the international settings of the system.
+   */
+  char	*decimal_point;
+  char	*thousands_sep;
+  char	*grouping;
+  char	*int_curr_symbol;
+  char	*currency_symbol;
+  char	*mon_decimal_point;
+  char	*mon_thousands_sep;
+  char	*mon_grouping;
+  char	*positive_sign;
+  char	*negative_sign;
+  char	 int_frac_digits;
+  char	 frac_digits;
+  char	 p_cs_precedes;
+  char	 p_sep_by_space;
+  char	 n_cs_precedes;
+  char	 n_sep_by_space;
+  char	 p_sign_posn;
+  char	 n_sign_posn;
+};
+
+#endif	/* ! RC_INVOKED */
+#endif	/* !__WCHAR_H_SOURCED__ */
+
+#ifndef RC_INVOKED
+
+_BEGIN_C_DECLS
+
+#ifdef _LOCALE_H
+ /* The following pair of function prototypes are to be declared
+  * only when including <locale.h> in its own right, (i.e. when NOT
+  * sourced by <wchar.h>)...
+  */
+_CRTIMP __cdecl __MINGW_NOTHROW  char *setlocale (int, const char *);
+_CRTIMP __cdecl __MINGW_NOTHROW  struct lconv *localeconv (void);
+
+#endif
+ /* ...whereas, this must be declared in either case; (note that it
+  * not necessary to guard against a possible repeat declaration, as
+  * the compiler should accept this, without complaint, provided any
+  * prior declaration is consistent).
+  */
+_CRTIMP __cdecl __MINGW_NOTHROW  wchar_t *_wsetlocale (int, const wchar_t *);
+
+#if __MSVCRT_VERSION__ >= __MSVCR80_DLL
+/* The following are available to users of non-free MSVCR80.DLL, and
+ * its later derivatives.  They are REQUIRED to create, or otherwise
+ * acquire a reference to, a locale_t object; they SHOULD also have
+ * been made available in MSVCRT.DLL, from Vista onwards, to support
+ * the use of functions added in that release which require locale_t
+ * parameters, but it seems that Microsoft, exhibiting their usual
+ * ineptitude, have neglected that requirement.
+ */
+#ifdef _LOCALE_H
+/* This triplet of functions are to be declared only when <locale.h>
+ * is included directly, and so is parsed in full...
+ */
+_CRTIMP __cdecl __MINGW_NOTHROW  _locale_t _create_locale (int, const char *);
+_CRTIMP __cdecl __MINGW_NOTHROW  _locale_t _get_current_locale (void);
+_CRTIMP __cdecl __MINGW_NOTHROW   void     _free_locale (locale_t);
+
+#endif
+/* ...whereas, this is required both when included directly, and also
+ * when indirectly included by <wchar.h>
+ */
+_CRTIMP __cdecl __MINGW_NOTHROW  _locale_t _wcreate_locale (int, const wchar_t *);
+
+#endif	/* __MSVCRT_VERSION__ >= __MSVCR80_DLL */
+
+_END_C_DECLS
+
+#endif	/* ! RC_INVOKED */
+#endif	/* !__need_locale_t */
+
+/* We've already handled any pending __need_locale_t request; ensure
+ * that we cancel it, so that any more comprehensive further request,
+ * before _LOCALE_H is defined, will be handled appropriately.
+ */
+#undef	__need_locale_t
+
+#endif  /* !_LOCALE_H: $RCSfile: locale.h,v $: end of file */
Index: Daodan/MinGW/include/lzexpand.h
===================================================================
--- Daodan/MinGW/include/lzexpand.h	(revision 1046)
+++ Daodan/MinGW/include/lzexpand.h	(revision 1046)
@@ -0,0 +1,40 @@
+#ifndef _LZEXPAND_H
+#define _LZEXPAND_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#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)
+LONG WINAPI CopyLZFile(INT,INT);
+INT WINAPI GetExpandedNameA(LPSTR,LPSTR);
+INT WINAPI GetExpandedNameW(LPWSTR,LPWSTR);
+VOID APIENTRY LZClose(INT);
+LONG APIENTRY LZCopy(INT,INT);
+VOID WINAPI LZDone(VOID);
+INT WINAPI LZInit(INT);
+INT WINAPI LZOpenFileA(LPSTR,LPOFSTRUCT,WORD);
+INT WINAPI LZOpenFileW(LPWSTR,LPOFSTRUCT,WORD);
+INT WINAPI LZRead(INT,LPSTR,INT);
+LONG WINAPI LZSeek(INT,LONG,INT);
+INT WINAPI LZStart(VOID);
+#ifdef UNICODE
+#define GetExpandedName GetExpandedNameW
+#define LZOpenFile  LZOpenFileW
+#else
+#define GetExpandedName GetExpandedNameA
+#define LZOpenFile  LZOpenFileA
+#endif
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/malloc.h
===================================================================
--- Daodan/MinGW/include/malloc.h	(revision 1046)
+++ Daodan/MinGW/include/malloc.h	(revision 1046)
@@ -0,0 +1,103 @@
+/*
+ * malloc.h
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is a part of the mingw-runtime package.
+ * No warranty is given; refer to the file DISCLAIMER within the package.
+ *
+ * Support for programs which want to use malloc.h to get memory management
+ * functions. Unless you absolutely need some of these functions and they are
+ * not in the ANSI headers you should use the ANSI standard header files
+ * instead.
+ *
+ */
+
+#ifndef _MALLOC_H_
+#define _MALLOC_H_
+
+/* All the headers include this file. */
+#include <_mingw.h>
+
+#include <stdlib.h>
+
+#ifndef RC_INVOKED
+
+/*
+ * The structure used to walk through the heap with _heapwalk.
+ */
+typedef	struct _heapinfo
+{
+	int*	_pentry;
+	size_t	_size;
+	int	_useflag;
+} _HEAPINFO;
+
+/* Values for _heapinfo.useflag */
+#define _FREEENTRY 0
+#define _USEDENTRY 1
+
+/* Return codes for _heapwalk()  */
+#define _HEAPEMPTY	(-1)
+#define _HEAPOK		(-2)
+#define _HEAPBADBEGIN	(-3)
+#define _HEAPBADNODE	(-4)
+#define _HEAPEND	(-5)
+#define _HEAPBADPTR	(-6)
+
+/* maximum size of a user request for memory */
+#define _HEAP_MAXREQ  0xFFFFFFE0
+
+#ifdef	__cplusplus
+extern "C" {
+#endif
+/*
+   The _heap* memory allocation functions are supported on NT
+   but not W9x. On latter, they always set errno to ENOSYS.
+*/
+_CRTIMP int __cdecl __MINGW_NOTHROW _heapwalk (_HEAPINFO*);
+#ifdef __GNUC__
+#define _alloca(x) __builtin_alloca((x))
+#endif
+
+#ifndef	_NO_OLDNAMES
+_CRTIMP int __cdecl __MINGW_NOTHROW heapwalk (_HEAPINFO*);
+#ifdef __GNUC__
+#define alloca(x) __builtin_alloca((x))
+#endif
+#endif	/* Not _NO_OLDNAMES */
+
+_CRTIMP int __cdecl __MINGW_NOTHROW _heapchk (void);	/* Verify heap integrety. */
+_CRTIMP int __cdecl __MINGW_NOTHROW _heapmin (void);	/* Return unused heap to the OS. */
+_CRTIMP int __cdecl __MINGW_NOTHROW _heapset (unsigned int);
+
+_CRTIMP size_t __cdecl __MINGW_NOTHROW _msize (void*);
+_CRTIMP size_t __cdecl __MINGW_NOTHROW _get_sbh_threshold (void);
+_CRTIMP int __cdecl __MINGW_NOTHROW _set_sbh_threshold (size_t);
+_CRTIMP void* __cdecl __MINGW_NOTHROW _expand (void*, size_t);
+
+/* These require msvcr70.dll or higher. */
+#if __MSVCRT_VERSION__ >= 0x0700
+_CRTIMP void * __cdecl __MINGW_NOTHROW _aligned_offset_malloc(size_t, size_t, size_t);
+_CRTIMP void * __cdecl __MINGW_NOTHROW _aligned_offset_realloc(void*, size_t, size_t, size_t);
+_CRTIMP void * __cdecl __MINGW_NOTHROW _aligned_offset_recalloc(void*, size_t, size_t, size_t, size_t);
+
+_CRTIMP void * __cdecl __MINGW_NOTHROW _aligned_malloc (size_t, size_t);
+_CRTIMP void * __cdecl __MINGW_NOTHROW _aligned_realloc (void*, size_t, size_t);
+_CRTIMP void* __cdecl __MINGW_NOTHROW _aligned_recalloc(void*, size_t, size_t, size_t);
+_CRTIMP void __cdecl __MINGW_NOTHROW _aligned_free (void*);
+#endif /* __MSVCRT_VERSION__ >= 0x0700 */
+
+/* These require libmingwex.a. */
+void * __cdecl __MINGW_NOTHROW __mingw_aligned_offset_malloc (size_t, size_t, size_t);
+void * __cdecl __MINGW_NOTHROW __mingw_aligned_offset_realloc (void*, size_t, size_t, size_t);
+
+void * __cdecl __MINGW_NOTHROW __mingw_aligned_malloc (size_t, size_t);
+void * __cdecl __MINGW_NOTHROW __mingw_aligned_realloc (void*, size_t, size_t);
+void __cdecl __MINGW_NOTHROW __mingw_aligned_free (void*);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* RC_INVOKED */
+
+#endif /* Not _MALLOC_H_ */
Index: Daodan/MinGW/include/mapi.h
===================================================================
--- Daodan/MinGW/include/mapi.h	(revision 1046)
+++ Daodan/MinGW/include/mapi.h	(revision 1046)
@@ -0,0 +1,163 @@
+#ifndef _MAPI_H
+#define _MAPI_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define SUCCESS_SUCCESS			0
+#define MAPI_USER_ABORT			1
+#define MAPI_E_USER_ABORT		1
+#define MAPI_E_FAILURE			2
+#define MAPI_E_LOGIN_FAILURE		3
+#define MAPI_E_LOGON_FAILURE		3
+#define MAPI_E_DISK_FULL		4
+#define MAPI_E_INSUFFICIENT_MEMORY	5
+#define MAPI_E_ACCESS_DENIED		6
+#define MAPI_E_BLK_TOO_SMALL		6
+#define MAPI_E_TOO_MANY_SESSIONS	8
+#define MAPI_E_TOO_MANY_FILES		9
+#define MAPI_E_TOO_MANY_RECIPIENTS	10
+#define MAPI_E_ATTACHMENT_NOT_FOUND	11
+#define MAPI_E_ATTACHMENT_OPEN_FAILURE	12
+#define MAPI_E_ATTACHMENT_WRITE_FAILURE	13
+#define MAPI_E_UNKNOWN_RECIPIENT	14
+#define MAPI_E_BAD_RECIPTYPE		15
+#define MAPI_E_NO_MESSAGES		16
+#define MAPI_E_INVALID_MESSAGE		17
+#define MAPI_E_TEXT_TOO_LARGE		18
+#define MAPI_E_INVALID_SESSION		19
+#define MAPI_E_TYPE_NOT_SUPPORTED	20
+#define MAPI_E_AMBIGUOUS_RECIPIENT	21
+#define MAPI_E_AMBIGUOUS_RECIP		21
+#define MAPI_E_MESSAGE_IN_USE		22
+#define MAPI_E_NETWORK_FAILURE		23
+#define MAPI_E_INVALID_EDITFIELDS	24
+#define MAPI_E_INVALID_RECIPS		25
+#define MAPI_E_NOT_SUPPORTED		26
+
+#define MAPI_ORIG	0
+#define MAPI_TO		1
+#define MAPI_CC		2
+#define MAPI_BCC	3
+
+#define MAPI_LOGON_UI		0x0001
+#define MAPI_NEW_SESSION	0x0002
+#define MAPI_FORCE_DOWNLOAD	0x1000
+#define MAPI_LOGOFF_SHARED	0x0001
+#define MAPI_LOGOFF_UI		0x0002
+#define MAPI_DIALOG		0x0008
+#define MAPI_UNREAD_ONLY	0x0020
+#define MAPI_LONG_MSGID		0x4000
+#define MAPI_GUARANTEE_FIFO	0x0100
+#define MAPI_ENVELOPE_ONLY	0x0040
+#define MAPI_PEEK		0x0080
+#define MAPI_BODY_AS_FILE	0x0200
+#define MAPI_SUPPRESS_ATTACH	0x0800
+#define MAPI_AB_NOMODIFY	0x0400
+#define MAPI_OLE		0x0001
+#define MAPI_OLE_STATIC		0x0002
+#define MAPI_UNREAD		0x0001
+#define MAPI_RECEIPT_REQUESTED	0x0002
+#define MAPI_SENT		0x0004
+
+#ifndef RC_INVOKED
+typedef unsigned long FLAGS;
+typedef unsigned long LHANDLE;
+typedef unsigned long FAR *LPLHANDLE, FAR *LPULONG;
+
+typedef struct {
+  ULONG ulReserved;
+  ULONG ulRecipClass;
+  LPSTR lpszName;
+  LPSTR lpszAddress;
+  ULONG ulEIDSize;
+  LPVOID lpEntryID;
+} MapiRecipDesc, *lpMapiRecipDesc;
+typedef struct {
+  ULONG ulReserved;
+  ULONG flFlags;
+  ULONG nPosition;
+  LPSTR lpszPathName;
+  LPSTR lpszFileName;
+  LPVOID lpFileType;
+} MapiFileDesc, *lpMapiFileDesc;
+typedef struct {
+  ULONG ulReserved;
+  ULONG cbTag;
+  LPBYTE lpTag;
+  ULONG cbEncoding;
+  LPBYTE lpEncoding;
+} MapiFileTagExt, *lpMapiFileTagExt;
+typedef struct {
+  ULONG ulReserved;
+  LPSTR lpszSubject;
+  LPSTR lpszNoteText;
+  LPSTR lpszMessageType;
+  LPSTR lpszDateReceived;
+  LPSTR lpszConversationID;
+  FLAGS flFlags;
+  lpMapiRecipDesc lpOriginator;
+  ULONG nRecipCount;
+  lpMapiRecipDesc lpRecips;
+  ULONG nFileCount;
+  lpMapiFileDesc lpFiles;
+} MapiMessage, *lpMapiMessage;
+
+ULONG PASCAL MAPILogon (ULONG,LPSTR,LPSTR,FLAGS,ULONG,LPLHANDLE);
+ULONG PASCAL MAPISendMail (LHANDLE,ULONG,lpMapiMessage,FLAGS,ULONG);
+ULONG PASCAL MAPISendDocuments (ULONG,LPSTR,LPSTR,LPSTR,ULONG);
+ULONG PASCAL MAPIReadMail (LHANDLE,ULONG,LPSTR,FLAGS,ULONG,
+			   lpMapiMessage*);
+ULONG PASCAL MAPIFindNext (LHANDLE,ULONG,LPSTR,LPSTR,FLAGS,ULONG,LPSTR);
+ULONG PASCAL MAPIResolveName (LHANDLE,ULONG,LPSTR,FLAGS,ULONG,
+                             lpMapiRecipDesc*);
+ULONG PASCAL MAPIAddress (LHANDLE,ULONG,LPSTR,ULONG,LPSTR,ULONG,
+			  lpMapiRecipDesc,FLAGS,ULONG,LPULONG,
+			  lpMapiRecipDesc*);
+ULONG PASCAL MAPIFreeBuffer (LPVOID);
+ULONG PASCAL MAPIDetails (LHANDLE,ULONG,lpMapiRecipDesc,FLAGS,ULONG);
+ULONG PASCAL MAPISaveMail (LHANDLE,ULONG,lpMapiMessage lpszMessage,
+                           FLAGS,ULONG,LPSTR);
+ULONG PASCAL MAPIDeleteMail (LHANDLE lpSession,ULONG,LPSTR,FLAGS,ULONG);
+ULONG PASCAL MAPILogoff (LHANDLE,ULONG,FLAGS,ULONG);
+/* Netscape extensions.  */
+ULONG PASCAL MAPIGetNetscapeVersion (void);
+ULONG PASCAL MAPI_NSCP_SynchronizeClient (LHANDLE,ULONG);
+
+/* Handles for use with GetProcAddress */
+typedef ULONG (PASCAL * LPMAPILOGON) (ULONG,LPSTR,LPSTR,FLAGS,ULONG,
+				      LPLHANDLE);
+typedef ULONG (PASCAL * LPMAPISENDMAIL) (LHANDLE,ULONG,lpMapiMessage,
+					 FLAGS,ULONG);
+typedef ULONG (PASCAL * LPMAPISENDDOCUMENTS) (ULONG,LPSTR,LPSTR,
+					      LPSTR,ULONG);
+typedef ULONG (PASCAL * LPMAPIREADMAIL) (LHANDLE,ULONG,LPSTR,FLAGS,
+					 ULONG,lpMapiMessage*);
+typedef ULONG (PASCAL * LPMAPIFINDNEXT) (LHANDLE,ULONG,LPSTR,LPSTR,
+					 FLAGS,ULONG,LPSTR);
+typedef ULONG (PASCAL * LPMAPIRESOLVENAME) (LHANDLE,ULONG,LPSTR,FLAGS,
+					    ULONG,lpMapiRecipDesc*);
+typedef ULONG (PASCAL * LPMAPIADDRESS) (LHANDLE,ULONG,LPSTR,ULONG,LPSTR,
+					ULONG,lpMapiRecipDesc,FLAGS,ULONG,
+					LPULONG,lpMapiRecipDesc*);
+typedef ULONG (PASCAL * LPMAPIFREEBUFFER) (LPVOID lpv);
+typedef ULONG (PASCAL * LPMAPIDETAILS) (LHANDLE,ULONG,lpMapiRecipDesc,
+					FLAGS,ULONG);
+typedef ULONG (PASCAL * LPMAPISAVEMAIL) (LHANDLE,ULONG,lpMapiMessage,
+					 FLAGS,ULONG,LPSTR);
+typedef ULONG (PASCAL * LPMAPIDELETEMAIL) (LHANDLE lpSession,ULONG,
+					   LPSTR, FLAGS,ULONG);
+typedef ULONG (PASCAL * LPMAPILOGOFF)(LHANDLE,ULONG,FLAGS,ULONG);
+
+#endif /* RC_INVOKED */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* Not _MAPI_H */
+
Index: Daodan/MinGW/include/math.h
===================================================================
--- Daodan/MinGW/include/math.h	(revision 1046)
+++ Daodan/MinGW/include/math.h	(revision 1046)
@@ -0,0 +1,918 @@
+/*
+ * math.h
+ *
+ * ANSI/POSIX + Microsoft compatible mathematical function prototypes,
+ * associated macros, and manifest constant definitions.
+ *
+ * $Id: math.h,v c96797f9657b 2016/04/12 14:36:20 keithmarshall $
+ *
+ * Written by Colin Peters <colin@bird.fu.is.saga-u.ac.jp>
+ * Copyright (C) 1997-2009, 2014-2016, MinGW.org Project.
+ *
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice, this permission notice, and the following
+ * disclaimer shall be included in all copies or substantial portions of
+ * the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OF OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ *
+ */
+#ifndef _MATH_H
+#define _MATH_H
+#pragma GCC system_header
+
+/* All the headers include this file.
+ */
+#include <_mingw.h>
+
+/* Types for the _exception structure.
+ */
+#define _DOMAIN 	1	/* domain error in argument */
+#define _SING		2	/* singularity */
+#define _OVERFLOW	3	/* range overflow */
+#define _UNDERFLOW	4	/* range underflow */
+#define _TLOSS		5	/* total loss of precision */
+#define _PLOSS		6	/* partial loss of precision */
+
+#if ! defined __STRICT_ANSI__ && ! defined _NO_OLDNAMES
+/*
+ * Exception types with non-ANSI names for compatibility.
+ */
+#define DOMAIN		_DOMAIN
+#define SING		_SING
+#define OVERFLOW	_OVERFLOW
+#define UNDERFLOW	_UNDERFLOW
+#define TLOSS		_TLOSS
+#define PLOSS		_PLOSS
+
+#endif	/* !__STRICT_ANSI__ && !_NO_OLDNAMES */
+
+
+#if _POSIX_C_SOURCE || defined _USE_MATH_DEFINES
+/* Traditional/XOPEN math constants (double precison).  MSVC makes these
+ * available, only if _USE_MATH_DEFINES is specified; POSIX does so also,
+ * when _POSIX_C_SOURCE is defined and non-zero, (as will be the case by
+ * default in MinGW, unless __STRICT_ANSI__ checking is in effect).
+ */
+#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
+#endif
+
+/* These are also defined in MinGW float.h; needed here as well,
+ * to work around GCC build issues.
+ *
+ * FIXME: Since they're needed both in MinGW float.h and here,
+ * they should be moved to a common "parts" header.
+ */
+#if ! defined __STRICT_ANSI__ && ! defined __MINGW_FPCLASS_DEFINED
+#define __MINGW_FPCLASS_DEFINED  1
+
+/* IEEE 754 classication
+ */
+#define _FPCLASS_SNAN	0x0001	/* Signaling "Not a Number" */
+#define _FPCLASS_QNAN	0x0002	/* Quiet "Not a Number" */
+#define _FPCLASS_NINF	0x0004	/* Negative Infinity */
+#define _FPCLASS_NN	0x0008	/* Negative Normal */
+#define _FPCLASS_ND	0x0010	/* Negative Denormal */
+#define _FPCLASS_NZ	0x0020	/* Negative Zero */
+#define _FPCLASS_PZ	0x0040	/* Positive Zero */
+#define _FPCLASS_PD	0x0080	/* Positive Denormal */
+#define _FPCLASS_PN	0x0100	/* Positive Normal */
+#define _FPCLASS_PINF	0x0200	/* Positive Infinity */
+
+#endif	/* !__STRICT_ANSI__ && !__MINGW_FPCLASS_DEFINED */
+
+#ifndef RC_INVOKED
+
+_BEGIN_C_DECLS
+
+/* HUGE_VAL is returned by strtod when the value would overflow the
+ * representation of 'double'. There are other uses as well.
+ *
+ * __imp__HUGE is a pointer to the actual variable _HUGE in
+ * MSVCRT.DLL. If we used _HUGE directly we would get a pointer
+ * to a thunk function.
+ *
+ * NOTE: The CRTDLL version uses _HUGE_dll instead.
+ */
+#if __MINGW_GNUC_PREREQ(3, 3)
+#define HUGE_VAL __builtin_huge_val()
+
+#else
+#ifndef __DECLSPEC_SUPPORTED
+
+#ifdef __MSVCRT__
+extern double      *_imp___HUGE;
+#define HUGE_VAL  (*_imp___HUGE)
+
+#else /* CRTDLL */
+extern double      *_imp___HUGE_dll;
+#define HUGE_VAL  (*_imp___HUGE_dll)
+#endif
+
+#else /* __DECLSPEC_SUPPORTED */
+
+#ifdef __MSVCRT__
+__MINGW_IMPORT double	_HUGE;
+#define HUGE_VAL	_HUGE
+
+#else /* CRTDLL */
+__MINGW_IMPORT double	_HUGE_dll;
+#define HUGE_VAL	_HUGE_dll
+#endif
+
+#endif /* __DECLSPEC_SUPPORTED */
+#endif /* __MINGW_GNUC_PREREQ(3, 3) */
+
+struct _exception
+{
+  int     type;
+  char   *name;
+  double  arg1;
+  double  arg2;
+  double  retval;
+};
+
+_CRTIMP double __cdecl sin (double);
+_CRTIMP double __cdecl cos (double);
+_CRTIMP double __cdecl tan (double);
+_CRTIMP double __cdecl sinh (double);
+_CRTIMP double __cdecl cosh (double);
+_CRTIMP double __cdecl tanh (double);
+_CRTIMP double __cdecl asin (double);
+_CRTIMP double __cdecl acos (double);
+_CRTIMP double __cdecl atan (double);
+_CRTIMP double __cdecl atan2 (double, double);
+_CRTIMP double __cdecl exp (double);
+_CRTIMP double __cdecl log (double);
+_CRTIMP double __cdecl log10 (double);
+_CRTIMP	double __cdecl pow (double, double);
+_CRTIMP double __cdecl sqrt (double);
+_CRTIMP double __cdecl ceil (double);
+_CRTIMP double __cdecl floor (double);
+_CRTIMP double __cdecl fabs (double);
+_CRTIMP double __cdecl ldexp (double, int);
+_CRTIMP double __cdecl frexp (double, int*);
+_CRTIMP double __cdecl modf (double, double*);
+_CRTIMP double __cdecl fmod (double, double);
+
+#if 0
+/* Excess precision when using a 64-bit mantissa for FPU math ops can
+ * cause unexpected results with some of the MSVCRT math functions.  For
+ * example, unless the function return value is stored (truncating to
+ * 53-bit mantissa), calls to pow with both x and y as integral values
+ * sometimes produce a non-integral result.
+ *
+ * One workaround is to reset the FPU env to 53-bit mantissa
+ * by a call to fesetenv (FE_PC53_ENV).  Amother is to force storage
+ * of the return value of individual math functions using wrappers.
+ * NB, using these wrappers will disable builtin math functions and
+ * hence disable the folding of function results at compile time when
+ * arguments are constant.
+ */
+#define __DEFINE_FLOAT_STORE_MATHFN_D1(fn1)	\
+static __inline__ double			\
+__float_store_ ## fn1 (double x)		\
+{						\
+   __volatile__ double res = (fn1) (x); 	\
+  return res;					\
+}
+
+#define __DEFINE_FLOAT_STORE_MATHFN_D2(fn2)	\
+static __inline__ double			\
+__float_store_ ## fn2 (double x, double y)	\
+{						\
+  __volatile__ double res = (fn2) (x, y);	\
+  return res;					\
+}
+
+/* For example, here is how to force the result of the pow function
+ * to be stored:
+ */
+#undef pow
+/* Define the ___float_store_pow function and use it instead of pow().
+ */
+__DEFINE_FLOAT_STORE_MATHFN_D2 (pow)
+#define pow __float_store_pow
+#endif
+
+#ifndef __STRICT_ANSI__
+
+struct _complex
+{ /* Complex number (for _cabs).  This is the MS version; the
+   * ISO-C99 counterpart, _Complex, is an intrinsic type in GCC,
+   * and 'complex' is defined as a macro.  See <complex.h>
+   */
+  double  x;	/* Real part */
+  double  y;	/* Imaginary part */
+};
+
+_CRTIMP double __cdecl _cabs (struct _complex);
+
+_CRTIMP double __cdecl _hypot (double, double);
+_CRTIMP double __cdecl _j0 (double);
+_CRTIMP double __cdecl _j1 (double);
+_CRTIMP double __cdecl _jn (int, double);
+_CRTIMP double __cdecl _y0 (double);
+_CRTIMP double __cdecl _y1 (double);
+_CRTIMP double __cdecl _yn (int, double);
+_CRTIMP int __cdecl _matherr (struct _exception *);
+
+/* These are also declared in MinGW's <float.h>; we need them
+ * here as well to work around GCC build issues.
+ */
+/* BEGIN FLOAT.H COPY */
+/*
+ * IEEE recommended functions
+ */
+_CRTIMP double __cdecl _chgsign (double);
+_CRTIMP double __cdecl _copysign (double, double);
+_CRTIMP double __cdecl _logb (double);
+_CRTIMP double __cdecl _nextafter (double, double);
+_CRTIMP double __cdecl _scalb (double, long);
+
+_CRTIMP int __cdecl _finite (double);
+_CRTIMP int __cdecl _fpclass (double);
+_CRTIMP int __cdecl _isnan (double);
+
+/* END FLOAT.H COPY */
+
+
+#ifndef _NO_OLDNAMES
+/* Non-underscored versions of non-ANSI functions.
+ * These reside in liboldnames.a.
+ */
+_CRTIMP double __cdecl j0 (double);
+_CRTIMP double __cdecl j1 (double);
+_CRTIMP double __cdecl jn (int, double);
+_CRTIMP double __cdecl y0 (double);
+_CRTIMP double __cdecl y1 (double);
+_CRTIMP double __cdecl yn (int, double);
+
+_CRTIMP double __cdecl chgsign (double);
+/*
+ * scalb() is a GCC built-in.
+ * Exclude this _scalb() stub; the semantics are incompatible
+ * with the built-in implementation.
+ *
+_CRTIMP double __cdecl scalb (double, long);
+ *
+ */
+_CRTIMP int __cdecl finite (double);
+_CRTIMP int __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
+
+#endif	/* !_NO_OLDNAMES */
+
+#if _WIN32_WINNT >= _WIN32_WINNT_WINXP || __MSVCRT_VERSION__ >= __MSVCR70_DLL
+/*
+ * This requires WinXP, or MSVCR70.DLL, or later.
+ */
+_CRTIMP int __cdecl _set_SSE2_enable (int);
+
+#endif	/* >= WINXP || >= __MSVCR70_DLL */
+#endif	/* !__STRICT_ANSI__ */
+
+#if defined __cplusplus || defined _ISOC99_SOURCE
+
+# if __MINGW_GNUC_PREREQ(3, 3)
+#  define HUGE_VALF		__builtin_huge_valf()
+#  define HUGE_VALL		__builtin_huge_vall()
+#  define INFINITY		__builtin_inf()
+#  define NAN			__builtin_nan("")
+# else
+   extern const float		__INFF;
+   extern const long double	__INFL;
+   extern const double		__QNAN;
+
+#  define HUGE_VALF		__INFF
+#  define HUGE_VALL		__INFL
+#  define INFINITY		  HUGE_VALF
+#  define NAN			__QNAN
+
+# endif /* __MINGW_GNUC_PREREQ(3, 3) */
+
+#ifdef __FLT_EVAL_METHOD__
+/* Use the compiler's builtin definition for FLT_EVAL_METHOD
+ * to establish appropriate float_t and double_t typedefs.
+ */
+# if __FLT_EVAL_METHOD__ == 0
+   typedef float float_t;
+   typedef double double_t;
+
+# elif __FLT_EVAL_METHOD__ == 1
+   typedef double float_t;
+   typedef double double_t;
+
+# elif __FLT_EVAL_METHOD__ == 2
+   typedef long double float_t;
+   typedef long double double_t;
+
+# endif
+#else
+ /* ix87 FPU default
+  */
+  typedef long double float_t;
+  typedef long double double_t;
+#endif
+
+/* 7.12.3.1
+ * Return values for fpclassify.
+ * These are based on Intel x87 fpu condition codes
+ * in the high byte of status word and differ from
+ * the return values for MS IEEE 754 extension _fpclass()
+ */
+#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)
+/* 0x0200 is signbit mask */
+
+/* We can't inline float or double, because we want to ensure
+ * truncation to semantic type before classification; (a normal
+ * long double value might become subnormal when converted to
+ * double, and zero when converted to float.)
+ */
+extern int __cdecl __fpclassifyf (float);
+extern int __cdecl __fpclassify (double);
+extern int __cdecl __fpclassifyl (long double);
+
+#ifndef __NO_INLINE__
+__CRT_INLINE int __cdecl __fpclassifyl (long double x){
+  unsigned short sw;
+  __asm__ ("fxam; fstsw %%ax;" : "=a" (sw): "t" (x));
+  return sw & (FP_NAN | FP_NORMAL | FP_ZERO );
+}
+#endif
+
+#define fpclassify(x) (sizeof (x) == sizeof (float) ? __fpclassifyf (x)	  \
+		       : sizeof (x) == sizeof (double) ? __fpclassify (x) \
+		       : __fpclassifyl (x))
+
+/* 7.12.3.2 */
+#define isfinite(x) ((fpclassify(x) & FP_NAN) == 0)
+
+/* 7.12.3.3 */
+#define isinf(x) (fpclassify(x) == FP_INFINITE)
+
+/* 7.12.3.4 */
+/* We don't need to worry about truncation here:
+ * a NaN stays a NaN.
+ */
+extern int __cdecl __isnan (double);
+extern int __cdecl __isnanf (float);
+extern int __cdecl __isnanl (long double);
+#ifndef __NO_INLINE__
+__CRT_INLINE int __cdecl __isnan (double _x)
+{
+  unsigned short sw;
+  __asm__ ("fxam;"
+	   "fstsw %%ax": "=a" (sw) : "t" (_x));
+  return (sw & (FP_NAN | FP_NORMAL | FP_INFINITE | FP_ZERO | FP_SUBNORMAL))
+    == FP_NAN;
+}
+
+__CRT_INLINE int __cdecl __isnanf (float _x)
+{
+  unsigned short sw;
+  __asm__ ("fxam;"
+	    "fstsw %%ax": "=a" (sw) : "t" (_x));
+  return (sw & (FP_NAN | FP_NORMAL | FP_INFINITE | FP_ZERO | FP_SUBNORMAL))
+    == FP_NAN;
+}
+
+__CRT_INLINE int __cdecl __isnanl (long double _x)
+{
+  unsigned short sw;
+  __asm__ ("fxam;"
+	    "fstsw %%ax": "=a" (sw) : "t" (_x));
+  return (sw & (FP_NAN | FP_NORMAL | FP_INFINITE | FP_ZERO | FP_SUBNORMAL))
+    == FP_NAN;
+}
+#endif
+
+#define isnan(x) (sizeof (x) == sizeof (float) ? __isnanf (x)	\
+		  : sizeof (x) == sizeof (double) ? __isnan (x)	\
+		  : __isnanl (x))
+
+/* 7.12.3.5 */
+#define isnormal(x) (fpclassify(x) == FP_NORMAL)
+
+/* 7.12.3.6 The signbit macro */
+extern int __cdecl __signbit (double);
+extern int __cdecl __signbitf (float);
+extern int __cdecl __signbitl (long double);
+#ifndef __NO_INLINE__
+__CRT_INLINE int __cdecl __signbit (double x) {
+  unsigned short stw;
+  __asm__ ( "fxam; fstsw %%ax;": "=a" (stw) : "t" (x));
+  return (stw & 0x0200) != 0;
+}
+
+__CRT_INLINE int __cdecl __signbitf (float x) {
+  unsigned short stw;
+  __asm__ ("fxam; fstsw %%ax;": "=a" (stw) : "t" (x));
+  return (stw & 0x0200) != 0;
+}
+
+__CRT_INLINE int __cdecl __signbitl (long double x) {
+  unsigned short stw;
+  __asm__ ("fxam; fstsw %%ax;": "=a" (stw) : "t" (x));
+  return (stw & 0x0200) != 0;
+}
+#endif
+
+#define signbit(x) (sizeof (x) == sizeof (float) ? __signbitf (x)	\
+		    : sizeof (x) == sizeof (double) ? __signbit (x)	\
+		    : __signbitl (x))
+
+/* 7.12.4 Trigonometric functions: double in C89
+ */
+extern float __cdecl sinf (float);
+extern long double __cdecl sinl (long double);
+
+extern float __cdecl cosf (float);
+extern long double __cdecl cosl (long double);
+
+extern float __cdecl tanf (float);
+extern long double __cdecl tanl (long double);
+
+extern float __cdecl asinf (float);
+extern long double __cdecl asinl (long double);
+
+extern float __cdecl acosf (float);
+extern long double __cdecl acosl (long double);
+
+extern float __cdecl atanf (float);
+extern long double __cdecl atanl (long double);
+
+extern float __cdecl atan2f (float, float);
+extern long double __cdecl atan2l (long double, long double);
+
+/* 7.12.5 Hyperbolic functions: double in C89
+ */
+extern float __cdecl sinhf (float);
+#ifndef __NO_INLINE__
+__CRT_INLINE float __cdecl sinhf (float x)
+  {return (float) sinh (x);}
+#endif
+extern long double __cdecl sinhl (long double);
+
+extern float __cdecl coshf (float);
+#ifndef __NO_INLINE__
+__CRT_INLINE float __cdecl coshf (float x)
+  {return (float) cosh (x);}
+#endif
+extern long double __cdecl coshl (long double);
+
+extern float __cdecl tanhf (float);
+#ifndef __NO_INLINE__
+__CRT_INLINE float __cdecl tanhf (float x)
+  {return (float) tanh (x);}
+#endif
+extern long double __cdecl tanhl (long double);
+
+/* Inverse hyperbolic trig functions  */
+/* 7.12.5.1 */
+extern double __cdecl acosh (double);
+extern float __cdecl acoshf (float);
+extern long double __cdecl acoshl (long double);
+
+/* 7.12.5.2 */
+extern double __cdecl asinh (double);
+extern float __cdecl asinhf (float);
+extern long double __cdecl asinhl (long double);
+
+/* 7.12.5.3 */
+extern double __cdecl atanh (double);
+extern float __cdecl atanhf  (float);
+extern long double __cdecl atanhl (long double);
+
+/* Exponentials and logarithms  */
+/* 7.12.6.1 Double in C89 */
+extern float __cdecl expf (float);
+#ifndef __NO_INLINE__
+__CRT_INLINE float __cdecl expf (float x)
+  {return (float) exp (x);}
+#endif
+extern long double __cdecl expl (long double);
+
+/* 7.12.6.2 */
+extern double __cdecl exp2(double);
+extern float __cdecl exp2f(float);
+extern long double __cdecl exp2l(long double);
+
+/* 7.12.6.3 The expm1 functions */
+/* TODO: These could be inlined */
+extern double __cdecl expm1(double);
+extern float __cdecl expm1f(float);
+extern long double __cdecl expm1l(long double);
+
+/* 7.12.6.4 Double in C89 */
+extern float __cdecl frexpf (float, int*);
+#ifndef __NO_INLINE__
+__CRT_INLINE float __cdecl frexpf (float x, int* expn)
+  {return (float) frexp (x, expn);}
+#endif
+extern long double __cdecl frexpl (long double, int*);
+
+/* 7.12.6.5 */
+#define FP_ILOGB0 ((int)0x80000000)
+#define FP_ILOGBNAN ((int)0x80000000)
+extern int __cdecl ilogb (double);
+extern int __cdecl ilogbf (float);
+extern int __cdecl ilogbl (long double);
+
+/* 7.12.6.6  Double in C89 */
+extern float __cdecl ldexpf (float, int);
+#ifndef __NO_INLINE__
+__CRT_INLINE float __cdecl ldexpf (float x, int expn)
+  {return (float) ldexp (x, expn);}
+#endif
+extern long double __cdecl ldexpl (long double, int);
+
+/* 7.12.6.7 Double in C89 */
+extern float __cdecl logf (float);
+extern long double __cdecl logl (long double);
+
+/* 7.12.6.8 Double in C89 */
+extern float __cdecl log10f (float);
+extern long double __cdecl log10l (long double);
+
+/* 7.12.6.9 */
+extern double __cdecl log1p(double);
+extern float __cdecl log1pf(float);
+extern long double __cdecl log1pl(long double);
+
+/* 7.12.6.10 */
+extern double __cdecl log2 (double);
+extern float __cdecl log2f (float);
+extern long double __cdecl log2l (long double);
+
+/* 7.12.6.11 */
+extern double __cdecl logb (double);
+extern float __cdecl logbf (float);
+extern long double __cdecl logbl (long double);
+
+/* Inline versions.  GCC-4.0+ can do a better fast-math optimization
+ * with __builtins.
+ */
+#ifndef __NO_INLINE__
+#if !(__MINGW_GNUC_PREREQ (4, 0) && defined __FAST_MATH__ )
+__CRT_INLINE double __cdecl logb (double x)
+{
+  double res;
+  __asm__ ("fxtract\n\t"
+       "fstp	%%st" : "=t" (res) : "0" (x));
+  return res;
+}
+
+__CRT_INLINE float __cdecl logbf (float x)
+{
+  float res;
+  __asm__ ("fxtract\n\t"
+       "fstp	%%st" : "=t" (res) : "0" (x));
+  return res;
+}
+
+__CRT_INLINE long double __cdecl logbl (long double x)
+{
+  long double res;
+  __asm__ ("fxtract\n\t"
+       "fstp	%%st" : "=t" (res) : "0" (x));
+  return res;
+}
+#endif /* !__FAST_MATH__ || !__MINGW_GNUC_PREREQ (4, 0) */
+#endif /* !__NO_INLINE__ */
+
+/* 7.12.6.12  Double in C89 */
+extern float __cdecl modff (float, float*);
+extern long double __cdecl modfl (long double, long double*);
+
+/* 7.12.6.13 */
+extern double __cdecl scalbn (double, int);
+extern float __cdecl scalbnf (float, int);
+extern long double __cdecl scalbnl (long double, int);
+
+extern double __cdecl scalbln (double, long);
+extern float __cdecl scalblnf (float, long);
+extern long double __cdecl scalblnl (long double, long);
+
+/* 7.12.7.1 */
+/* Implementations adapted from Cephes versions */
+extern double __cdecl cbrt (double);
+extern float __cdecl cbrtf (float);
+extern long double __cdecl cbrtl (long double);
+
+/* 7.12.7.2 The fabs functions: Double in C89 */
+extern  float __cdecl fabsf (float x);
+extern long double __cdecl fabsl (long double x);
+
+/* 7.12.7.3  */
+extern double __cdecl hypot (double, double); /* in libmoldname.a */
+extern float __cdecl hypotf (float, float);
+extern long double __cdecl hypotl (long double, long double);
+
+/* 7.12.7.4 The pow functions. Double in C89 */
+extern float __cdecl powf (float, float);
+#ifndef __NO_INLINE__
+__CRT_INLINE float __cdecl powf (float x, float y)
+  {return (float) pow (x, y);}
+#endif
+extern long double __cdecl powl (long double, long double);
+
+/* 7.12.7.5 The sqrt functions. Double in C89. */
+extern float __cdecl sqrtf (float);
+extern long double __cdecl sqrtl (long double);
+
+/* 7.12.8.1 The erf functions  */
+extern double __cdecl erf (double);
+extern float __cdecl erff (float);
+extern long double __cdecl erfl (long double);
+
+/* 7.12.8.2 The erfc functions  */
+extern double __cdecl erfc (double);
+extern float __cdecl erfcf (float);
+extern long double __cdecl erfcl (long double);
+
+/* 7.12.8.3 The lgamma functions */
+extern double __cdecl lgamma (double);
+extern float __cdecl lgammaf (float);
+extern long double __cdecl lgammal (long double);
+
+/* 7.12.8.4 The tgamma functions */
+extern double __cdecl tgamma (double);
+extern float __cdecl tgammaf (float);
+extern long double __cdecl tgammal (long double);
+
+/* 7.12.9.1 Double in C89 */
+extern float __cdecl ceilf (float);
+extern long double __cdecl ceill (long double);
+
+/* 7.12.9.2 Double in C89 */
+extern float __cdecl floorf (float);
+extern long double __cdecl floorl (long double);
+
+/* 7.12.9.3 */
+extern double __cdecl nearbyint ( double);
+extern float __cdecl nearbyintf (float);
+extern long double __cdecl nearbyintl (long double);
+
+/* 7.12.9.4 */
+/* round, using fpu control word settings */
+extern double __cdecl rint (double);
+extern float __cdecl rintf (float);
+extern long double __cdecl rintl (long double);
+
+/* 7.12.9.5 */
+extern long __cdecl lrint (double);
+extern long __cdecl lrintf (float);
+extern long __cdecl lrintl (long double);
+
+extern long long __cdecl llrint (double);
+extern long long __cdecl llrintf (float);
+extern long long __cdecl llrintl (long double);
+
+/* Inline versions of above.
+ * GCC 4.0+ can do a better fast-math job with __builtins.
+ */
+#ifndef __NO_INLINE__
+#if !(__MINGW_GNUC_PREREQ (4, 0) && defined __FAST_MATH__ )
+__CRT_INLINE double __cdecl rint (double x)
+{
+  double retval;
+  __asm__ ("frndint;": "=t" (retval) : "0" (x));
+  return retval;
+}
+
+__CRT_INLINE float __cdecl rintf (float x)
+{
+  float retval;
+  __asm__ ("frndint;" : "=t" (retval) : "0" (x) );
+  return retval;
+}
+
+__CRT_INLINE long double __cdecl rintl (long double x)
+{
+  long double retval;
+  __asm__ ("frndint;" : "=t" (retval) : "0" (x) );
+  return retval;
+}
+
+__CRT_INLINE long __cdecl lrint (double x)
+{
+  long retval;
+  __asm__ __volatile__
+    ("fistpl %0"  : "=m" (retval) : "t" (x) : "st");
+  return retval;
+}
+
+__CRT_INLINE long __cdecl lrintf (float x)
+{
+  long retval;
+  __asm__ __volatile__
+    ("fistpl %0"  : "=m" (retval) : "t" (x) : "st");
+  return retval;
+}
+
+__CRT_INLINE long __cdecl lrintl (long double x)
+{
+  long retval;
+  __asm__ __volatile__
+    ("fistpl %0"  : "=m" (retval) : "t" (x) : "st");
+  return retval;
+}
+
+__CRT_INLINE long long __cdecl llrint (double x)
+{
+  long long retval;
+  __asm__ __volatile__
+    ("fistpll %0"  : "=m" (retval) : "t" (x) : "st");
+  return retval;
+}
+
+__CRT_INLINE long long __cdecl llrintf (float x)
+{
+  long long retval;
+  __asm__ __volatile__
+    ("fistpll %0"  : "=m" (retval) : "t" (x) : "st");
+  return retval;
+}
+
+__CRT_INLINE long long __cdecl llrintl (long double x)
+{
+  long long retval;
+  __asm__ __volatile__
+    ("fistpll %0"  : "=m" (retval) : "t" (x) : "st");
+  return retval;
+}
+#endif	/* !__FAST_MATH__ || !__MINGW_GNUC_PREREQ (4,0) */
+#endif	/* !__NO_INLINE__ */
+
+/* 7.12.9.6 */
+/* round away from zero, regardless of fpu control word settings */
+extern double __cdecl round (double);
+extern float __cdecl roundf (float);
+extern long double __cdecl roundl (long double);
+
+/* 7.12.9.7  */
+extern long __cdecl lround (double);
+extern long __cdecl lroundf (float);
+extern long __cdecl lroundl (long double);
+
+extern long long __cdecl llround (double);
+extern long long __cdecl llroundf (float);
+extern long long __cdecl llroundl (long double);
+
+/* 7.12.9.8 */
+/* round towards zero, regardless of fpu control word settings */
+extern double __cdecl trunc (double);
+extern float __cdecl truncf (float);
+extern long double __cdecl truncl (long double);
+
+/* 7.12.10.1 Double in C89 */
+extern float __cdecl fmodf (float, float);
+extern long double __cdecl fmodl (long double, long double);
+
+/* 7.12.10.2 */
+extern double __cdecl remainder (double, double);
+extern float __cdecl remainderf (float, float);
+extern long double __cdecl remainderl (long double, long double);
+
+/* 7.12.10.3 */
+extern double __cdecl remquo(double, double, int *);
+extern float __cdecl remquof(float, float, int *);
+extern long double __cdecl remquol(long double, long double, int *);
+
+/* 7.12.11.1 */
+extern double __cdecl copysign (double, double); /* in libmoldname.a */
+extern float __cdecl copysignf (float, float);
+extern long double __cdecl copysignl (long double, long double);
+
+/* 7.12.11.2 Return a NaN */
+extern double __cdecl nan(const char *tagp);
+extern float __cdecl nanf(const char *tagp);
+extern long double __cdecl nanl(const char *tagp);
+
+#ifndef __STRICT_ANSI__
+#define _nan()   nan("")
+#define _nanf()  nanf("")
+#define _nanl()  nanl("")
+#endif
+
+/* 7.12.11.3 */
+extern double __cdecl nextafter (double, double); /* in libmoldname.a */
+extern float __cdecl nextafterf (float, float);
+extern long double __cdecl nextafterl (long double, long double);
+
+/* 7.12.11.4 The nexttoward functions */
+extern double __cdecl nexttoward (double,  long double);
+extern float __cdecl nexttowardf (float,  long double);
+extern long double __cdecl nexttowardl (long double, long double);
+
+/* 7.12.12.1 */
+/*  x > y ? (x - y) : 0.0  */
+extern double __cdecl fdim (double x, double y);
+extern float __cdecl fdimf (float x, float y);
+extern long double __cdecl fdiml (long double x, long double y);
+
+/* fmax and fmin.
+   NaN arguments are treated as missing data: if one argument is a NaN
+   and the other numeric, then these functions choose the numeric
+   value. */
+
+/* 7.12.12.2 */
+extern double __cdecl fmax  (double, double);
+extern float __cdecl fmaxf (float, float);
+extern long double __cdecl fmaxl (long double, long double);
+
+/* 7.12.12.3 */
+extern double __cdecl fmin (double, double);
+extern float __cdecl fminf (float, float);
+extern long double __cdecl fminl (long double, long double);
+
+/* 7.12.13.1 */
+/* return x * y + z as a ternary op */
+extern double __cdecl fma (double, double, double);
+extern float __cdecl fmaf (float, float, float);
+extern long double __cdecl fmal (long double, long double, long double);
+
+
+/* 7.12.14
+ * With these functions, comparisons involving quiet NaNs set the FP
+ * condition code to "unordered".  The IEEE floating-point spec
+ * dictates that the result of floating-point comparisons should be
+ * false whenever a NaN is involved, with the exception of the != op,
+ * which always returns true: yes, (NaN != NaN) is true).
+ */
+#if __GNUC__ >= 3
+
+#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)
+
+#else	/* __GNUC__ < 3 */
+/*  helper  */
+extern int  __cdecl __fp_unordered_compare (long double, long double);
+#ifndef __NO_INLINE__
+__CRT_INLINE int  __cdecl
+__fp_unordered_compare (long double x, long double y){
+  unsigned short retval;
+  __asm__ ("fucom %%st(1);"
+	   "fnstsw;": "=a" (retval) : "t" (x), "u" (y));
+  return retval;
+}
+#endif	/* !__NO_INLINE__ */
+
+#define isgreater(x, y)       ((__fp_unordered_compare(x, y) & 0x4500) == 0)
+#define isless(x, y)          ((__fp_unordered_compare(y, x) & 0x4500) == 0)
+#define isgreaterequal(x, y)  ((__fp_unordered_compare(x, y) & FP_INFINITE) == 0)
+#define islessequal(x, y)     ((__fp_unordered_compare(y, x) & FP_INFINITE) == 0)
+#define islessgreater(x, y)   ((__fp_unordered_compare(x, y) & FP_SUBNORMAL) == 0)
+#define isunordered(x, y)     ((__fp_unordered_compare(x, y) & 0x4500) == 0x4500)
+
+#endif	/* __GNUC__ < 3 */
+#endif	/* __cplusplus || _ISOC99_SOURCE */
+
+_END_C_DECLS
+
+#endif	/* ! RC_INVOKED */
+#endif	/* !_MATH_H: $RCSfile: math.h,v $: end of file */
Index: Daodan/MinGW/include/mbctype.h
===================================================================
--- Daodan/MinGW/include/mbctype.h	(revision 1046)
+++ Daodan/MinGW/include/mbctype.h	(revision 1046)
@@ -0,0 +1,97 @@
+/*
+ * mbctype.h
+ *
+ * Functions for testing multibyte character types and converting characters.
+ *
+ * This file is part of the Mingw32 package.
+ *
+ *
+ *  THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ *  This source code is offered for use in the public domain. You may
+ *  use, modify or distribute it freely.
+ *
+ *  This code is distributed in the hope that it will be useful but
+ *  WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ *  DISCLAIMED. This includes but is not limited to warranties of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef _MBCTYPE_H_
+#define _MBCTYPE_H_
+
+/* All the headers include this file. */
+#include <_mingw.h>
+
+/* return values for _mbsbtype  and  _mbbtype in mbstring.h */
+#define _MBC_SINGLE 0
+#define _MBC_LEAD 1
+#define _MBC_TRAIL 2
+#define _MBC_ILLEGAL (-1)
+
+/*  args for setmbcp (in lieu of actual codepage)  */
+#define _MB_CP_SBCS 0
+#define _MB_CP_OEM (-2)
+#define _MB_CP_ANSI (-3)
+#define _MB_CP_LOCALE (-4)
+
+/* TODO: bit masks */
+/*
+#define _MS
+#define _MP
+#define _M1
+#define _M2
+#define _SBUP
+#define _SBLOW
+*/
+
+#ifndef RC_INVOKED
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef	__STRICT_ANSI__
+
+_CRTIMP int __cdecl __MINGW_NOTHROW _setmbcp (int);
+_CRTIMP int __cdecl __MINGW_NOTHROW _getmbcp (void);
+
+/* byte classification  */
+/* NB: Corresponding _ismbc* functions are in mbstring.h */
+
+_CRTIMP int __cdecl __MINGW_NOTHROW _ismbbalpha (unsigned int);
+_CRTIMP int __cdecl __MINGW_NOTHROW _ismbbalnum (unsigned int);
+_CRTIMP int __cdecl __MINGW_NOTHROW _ismbbgraph (unsigned int);
+_CRTIMP int __cdecl __MINGW_NOTHROW _ismbbprint (unsigned int);
+_CRTIMP int __cdecl __MINGW_NOTHROW _ismbbpunct (unsigned int);
+
+_CRTIMP int __cdecl __MINGW_NOTHROW _ismbbkana (unsigned int);
+_CRTIMP int __cdecl __MINGW_NOTHROW _ismbbkalnum (unsigned int);
+_CRTIMP int __cdecl __MINGW_NOTHROW _ismbbkprint (unsigned int);
+_CRTIMP int __cdecl __MINGW_NOTHROW _ismbbkpunct (unsigned int);
+
+
+/* these are also in mbstring.h */
+_CRTIMP int __cdecl __MINGW_NOTHROW _ismbblead (unsigned int);
+_CRTIMP int __cdecl __MINGW_NOTHROW _ismbbtrail (unsigned int);
+_CRTIMP int __cdecl __MINGW_NOTHROW _ismbslead (const unsigned char*, const unsigned char*);
+_CRTIMP int __cdecl __MINGW_NOTHROW _ismbstrail (const unsigned char*, const unsigned char*);
+
+#ifdef __DECLSPEC_SUPPORTED
+__MINGW_IMPORT unsigned char _mbctype[];
+__MINGW_IMPORT unsigned char _mbcasemap[];
+#endif
+
+/* TODO : _MBCS_ mappings go in tchar.h */
+
+#endif	/* Not strict ANSI */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* Not RC_INVOKED */
+
+#endif	/* Not _MCTYPE_H_ */
+
Index: Daodan/MinGW/include/mbstring.h
===================================================================
--- Daodan/MinGW/include/mbstring.h	(revision 1046)
+++ Daodan/MinGW/include/mbstring.h	(revision 1046)
@@ -0,0 +1,132 @@
+/*
+ * mbstring.h
+ *
+ * Protototypes for string functions supporting multibyte characters.
+ *
+ * This file is part of the Mingw32 package.
+ *
+ *
+ *  THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ *  This source code is offered for use in the public domain. You may
+ *  use, modify or distribute it freely.
+ *
+ *  This code is distributed in the hope that it will be useful but
+ *  WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ *  DISCLAIMED. This includes but is not limited to warranties of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef _MBSTRING_H_
+#define _MBSTRING_H_
+
+/* All the headers include this file. */
+#include <_mingw.h>
+
+#ifndef RC_INVOKED
+
+#define __need_size_t
+#include <stddef.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef	__STRICT_ANSI__
+
+/* character classification */
+_CRTIMP int __cdecl __MINGW_NOTHROW _ismbcalnum (unsigned int);
+_CRTIMP int __cdecl __MINGW_NOTHROW _ismbcalpha (unsigned int);
+_CRTIMP int __cdecl __MINGW_NOTHROW _ismbcdigit (unsigned int);
+_CRTIMP int __cdecl __MINGW_NOTHROW _ismbcgraph (unsigned int);
+_CRTIMP int __cdecl __MINGW_NOTHROW _ismbcprint (unsigned int);
+_CRTIMP int __cdecl __MINGW_NOTHROW _ismbcpunct (unsigned int);
+_CRTIMP int __cdecl __MINGW_NOTHROW _ismbcspace (unsigned int);
+_CRTIMP int __cdecl __MINGW_NOTHROW _ismbclower (unsigned int);
+_CRTIMP int __cdecl __MINGW_NOTHROW _ismbcupper (unsigned int);
+_CRTIMP int __cdecl __MINGW_NOTHROW _ismbclegal (unsigned int);
+_CRTIMP int __cdecl __MINGW_NOTHROW _ismbcsymbol (unsigned int);
+
+
+/* also in mbctype.h */
+_CRTIMP int __cdecl __MINGW_NOTHROW _ismbblead (unsigned int );
+_CRTIMP int __cdecl __MINGW_NOTHROW _ismbbtrail (unsigned int );
+_CRTIMP int __cdecl __MINGW_NOTHROW _ismbslead ( const unsigned char*, const unsigned char*);
+_CRTIMP int __cdecl __MINGW_NOTHROW _ismbstrail ( const unsigned char*, const unsigned char*);
+
+_CRTIMP unsigned int __cdecl __MINGW_NOTHROW _mbctolower (unsigned int);
+_CRTIMP unsigned int __cdecl __MINGW_NOTHROW _mbctoupper (unsigned int);
+
+_CRTIMP void __cdecl __MINGW_NOTHROW _mbccpy (unsigned char*, const unsigned char*);
+_CRTIMP size_t __cdecl __MINGW_NOTHROW _mbclen (const unsigned char*);
+
+_CRTIMP unsigned int __cdecl __MINGW_NOTHROW _mbbtombc (unsigned int);
+_CRTIMP unsigned int __cdecl __MINGW_NOTHROW _mbctombb (unsigned int);
+
+/* Return value constants for these are defined in mbctype.h.  */
+_CRTIMP int __cdecl __MINGW_NOTHROW _mbbtype (unsigned char, int);
+_CRTIMP int __cdecl __MINGW_NOTHROW _mbsbtype (const unsigned char*, size_t);
+
+_CRTIMP unsigned char* __cdecl __MINGW_NOTHROW  _mbscpy (unsigned char*, const unsigned char*);
+_CRTIMP unsigned char* __cdecl __MINGW_NOTHROW  _mbsncpy (unsigned char*, const unsigned char*, size_t);
+_CRTIMP unsigned char* __cdecl __MINGW_NOTHROW  _mbsnbcpy (unsigned char*, const unsigned char*, size_t);
+_CRTIMP unsigned char* __cdecl __MINGW_NOTHROW  _mbsset (unsigned char*, unsigned int);
+_CRTIMP unsigned char* __cdecl __MINGW_NOTHROW  _mbsnset (unsigned char*, unsigned int, size_t);
+_CRTIMP unsigned char* __cdecl __MINGW_NOTHROW  _mbsnbset (unsigned char*, unsigned int, size_t);
+_CRTIMP unsigned char* __cdecl __MINGW_NOTHROW  _mbsdup (const unsigned char*);
+_CRTIMP unsigned char* __cdecl __MINGW_NOTHROW  _mbsrev (unsigned char*);
+_CRTIMP unsigned char* __cdecl __MINGW_NOTHROW  _mbscat (unsigned char*, const unsigned char*);
+_CRTIMP unsigned char* __cdecl __MINGW_NOTHROW  _mbsncat (unsigned char*, const unsigned char*, size_t);
+_CRTIMP unsigned char* __cdecl __MINGW_NOTHROW  _mbsnbcat (unsigned char*, const unsigned char*, size_t);
+_CRTIMP size_t __cdecl __MINGW_NOTHROW _mbslen (const unsigned char*);
+_CRTIMP size_t __cdecl __MINGW_NOTHROW _mbsnbcnt (const unsigned char*, size_t);
+_CRTIMP size_t __cdecl __MINGW_NOTHROW _mbsnccnt (const unsigned char*, size_t);
+_CRTIMP unsigned char* __cdecl __MINGW_NOTHROW  _mbschr (const unsigned char*, unsigned int);
+_CRTIMP unsigned char* __cdecl __MINGW_NOTHROW  _mbsrchr (const unsigned char*, unsigned int);
+_CRTIMP size_t __cdecl __MINGW_NOTHROW _mbsspn (const unsigned char*, const unsigned char*);
+_CRTIMP size_t __cdecl __MINGW_NOTHROW _mbscspn (const unsigned char*, const unsigned char*);
+_CRTIMP unsigned char* __cdecl __MINGW_NOTHROW  _mbsspnp (const unsigned char*, const unsigned char*);
+_CRTIMP unsigned char* __cdecl __MINGW_NOTHROW  _mbspbrk (const unsigned char*, const unsigned char*);
+_CRTIMP int __cdecl __MINGW_NOTHROW _mbscmp (const unsigned char*, const unsigned char*);
+_CRTIMP int __cdecl __MINGW_NOTHROW _mbsicmp (const unsigned char*, const unsigned char*);
+_CRTIMP int __cdecl __MINGW_NOTHROW _mbsncmp (const unsigned char*, const unsigned char*, size_t);
+_CRTIMP int __cdecl __MINGW_NOTHROW _mbsnicmp (const unsigned char*, const unsigned char*, size_t);
+_CRTIMP int __cdecl __MINGW_NOTHROW _mbsnbcmp (const unsigned char*, const unsigned char*, size_t);
+_CRTIMP int __cdecl __MINGW_NOTHROW _mbsnbicmp (const unsigned char*, const unsigned char*, size_t);
+_CRTIMP int __cdecl __MINGW_NOTHROW _mbscoll (const unsigned char*, const unsigned char*);
+_CRTIMP int __cdecl __MINGW_NOTHROW _mbsicoll (const unsigned char*, const unsigned char*);
+_CRTIMP int __cdecl __MINGW_NOTHROW _mbsncoll (const unsigned char*, const unsigned char*, size_t);
+_CRTIMP int __cdecl __MINGW_NOTHROW _mbsnicoll (const unsigned char*, const unsigned char*, size_t);
+_CRTIMP int __cdecl __MINGW_NOTHROW _mbsnbcoll (const unsigned char*, const unsigned char*, size_t);
+_CRTIMP int __cdecl __MINGW_NOTHROW _mbsnbicoll (const unsigned char*, const unsigned char*, size_t);
+
+_CRTIMP unsigned char* __cdecl __MINGW_NOTHROW  _mbsinc (const unsigned char*);
+_CRTIMP unsigned char* __cdecl __MINGW_NOTHROW  _mbsninc (const unsigned char*, size_t);
+_CRTIMP unsigned char* __cdecl __MINGW_NOTHROW  _mbsdec (const unsigned char*, const unsigned char*);
+_CRTIMP unsigned int __cdecl __MINGW_NOTHROW _mbsnextc  (const unsigned char*);
+_CRTIMP unsigned char* __cdecl __MINGW_NOTHROW  _mbslwr (unsigned char*);
+_CRTIMP unsigned char* __cdecl __MINGW_NOTHROW  _mbsupr (unsigned char*);
+_CRTIMP unsigned char* __cdecl __MINGW_NOTHROW  _mbstok (unsigned char*, const unsigned char*);
+
+/* Kanji */
+_CRTIMP int __cdecl __MINGW_NOTHROW _ismbchira (unsigned int);
+_CRTIMP int __cdecl __MINGW_NOTHROW _ismbckata (unsigned int);
+_CRTIMP int __cdecl __MINGW_NOTHROW _ismbcl0 (unsigned int);
+_CRTIMP int __cdecl __MINGW_NOTHROW _ismbcl1 (unsigned int);
+_CRTIMP int __cdecl __MINGW_NOTHROW _ismbcl2 (unsigned int);
+_CRTIMP unsigned int __cdecl __MINGW_NOTHROW _mbcjistojms (unsigned int);
+_CRTIMP unsigned int __cdecl __MINGW_NOTHROW _mbcjmstojis (unsigned int);
+_CRTIMP unsigned int __cdecl __MINGW_NOTHROW _mbctohira (unsigned int);
+_CRTIMP unsigned int __cdecl __MINGW_NOTHROW _mbctokata (unsigned int);
+
+#endif	/* Not strict ANSI */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* Not RC_INVOKED */
+#endif	/* Not _MBSTRING_H_ */
+
+
Index: Daodan/MinGW/include/mciavi.h
===================================================================
--- Daodan/MinGW/include/mciavi.h	(revision 1046)
+++ Daodan/MinGW/include/mciavi.h	(revision 1046)
@@ -0,0 +1,25 @@
+#ifndef _MCIAVI_H
+#define _MCIAVI_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#define MCI_MCIAVI_PLAY_WINDOW 0x1000000
+#define	MCI_MCIAVI_PLAY_FULLSCREEN 0x2000000
+#define MCI_MCIAVI_PLAY_FULLBY2	0x4000000
+#define MCI_AVI_STATUS_FRAMES_SKIPPED 0x8001
+#define MCI_AVI_STATUS_LAST_PLAY_SPEED	0x8002
+#define MCI_AVI_STATUS_AUDIO_BREAKS	0x8003
+#define MCI_AVI_SETVIDEO_DRAW_PROCEDURE	0x8000
+#define MCI_AVI_SETVIDEO_PALETTE_COLOR	0x8100
+#define MCI_AVI_SETVIDEO_PALETTE_HALFTONE 0x0000FFFF
+#define MCIERR_AVI_OLDAVIFORMAT	(MCIERR_CUSTOM_DRIVER_BASE+100)
+#define MCIERR_AVI_NOTINTERLEAVED	(MCIERR_CUSTOM_DRIVER_BASE+101)
+#define MCIERR_AVI_NODISPDIB	(MCIERR_CUSTOM_DRIVER_BASE+102)
+#define MCIERR_AVI_CANTPLAYFULLSCREEN	(MCIERR_CUSTOM_DRIVER_BASE+103)
+#define MCIERR_AVI_TOOBIGFORVGA	(MCIERR_CUSTOM_DRIVER_BASE+104)
+#define MCIERR_AVI_NOCOMPRESSOR (MCIERR_CUSTOM_DRIVER_BASE+105)
+#define MCIERR_AVI_DISPLAYERROR (MCIERR_CUSTOM_DRIVER_BASE+106)
+#define MCIERR_AVI_AUDIOERROR	(MCIERR_CUSTOM_DRIVER_BASE+107)
+#define MCIERR_AVI_BADPALETTE	(MCIERR_CUSTOM_DRIVER_BASE+108)
+#endif
Index: Daodan/MinGW/include/mcx.h
===================================================================
--- Daodan/MinGW/include/mcx.h	(revision 1046)
+++ Daodan/MinGW/include/mcx.h	(revision 1046)
@@ -0,0 +1,77 @@
+#ifndef _MCX_H
+#define _MCX_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define DIALOPTION_BILLING 64
+#define DIALOPTION_QUIET 128
+#define DIALOPTION_DIALTONE 256
+#define MDMVOLFLAG_LOW	1
+#define MDMVOLFLAG_MEDIUM	2
+#define MDMVOLFLAG_HIGH	4
+#define MDMVOL_LOW	0
+#define MDMVOL_MEDIUM	1
+#define MDMVOL_HIGH	2
+#define MDMSPKRFLAG_OFF	1
+#define MDMSPKRFLAG_DIAL	2
+#define MDMSPKRFLAG_ON	4
+#define MDMSPKRFLAG_CALLSETUP	8
+#define MDMSPKR_OFF	0
+#define MDMSPKR_DIAL 1
+#define MDMSPKR_ON	2
+#define MDMSPKR_CALLSETUP	3
+#define MDM_COMPRESSION	1
+#define MDM_ERROR_CONTROL	2
+#define MDM_FORCED_EC	4
+#define MDM_CELLULAR	8
+#define MDM_FLOWCONTROL_HARD	16
+#define MDM_FLOWCONTROL_SOFT	32
+#define MDM_CCITT_OVERRIDE	64
+#define MDM_SPEED_ADJUST	128
+#define MDM_TONE_DIAL	256
+#define MDM_BLIND_DIAL	512
+#define MDM_V23_OVERRIDE	1024
+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;
+#ifdef __cplusplus
+}
+#endif
+#endif /* _MCX_H */
Index: Daodan/MinGW/include/mem.h
===================================================================
--- Daodan/MinGW/include/mem.h	(revision 1046)
+++ Daodan/MinGW/include/mem.h	(revision 1046)
@@ -0,0 +1,6 @@
+/*
+ * This file is part of the Mingw32 package.
+ *
+ * mem.h maps to string.h
+ */
+#include <string.h>
Index: Daodan/MinGW/include/memory.h
===================================================================
--- Daodan/MinGW/include/memory.h	(revision 1046)
+++ Daodan/MinGW/include/memory.h	(revision 1046)
@@ -0,0 +1,7 @@
+/*
+ * This file is part of the Mingw32 package.
+ *
+ * memory.h maps to the standard string.h header.
+ */
+
+#include	<string.h>
Index: Daodan/MinGW/include/mgm.h
===================================================================
--- Daodan/MinGW/include/mgm.h	(revision 1046)
+++ Daodan/MinGW/include/mgm.h	(revision 1046)
@@ -0,0 +1,75 @@
+#ifndef _MGM_H
+#define _MGM_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#if (_WIN32_WINNT >= 0x0500)
+#define MGM_JOIN_STATE_FLAG 0x00000001
+#define MGM_FORWARD_STATE_FLAG 0x00000002
+#define MGM_MFE_STATS_0 0x00000001
+#define MGM_MFE_STATS_1 0x00000002
+typedef enum _MGM_ENUM_TYPES {
+	ANY_SOURCE=0,
+	ALL_SOURCES
+} MGM_ENUM_TYPES;
+typedef struct _MGM_IF_ENTRY {
+	DWORD dwIfIndex;
+	DWORD dwIfNextHopAddr;
+	BOOL bIGMP;
+	BOOL bIsEnabled;
+} MGM_IF_ENTRY,*PMGM_IF_ENTRY;
+typedef DWORD(CALLBACK *PMGM_RPF_CALLBACK)(DWORD,DWORD,DWORD,DWORD,PDWORD,PDWORD,PDWORD,DWORD,PBYTE,PBYTE);
+typedef DWORD(CALLBACK *PMGM_CREATION_ALERT_CALLBACK)(DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,PMGM_IF_ENTRY);
+typedef DWORD(CALLBACK *PMGM_PRUNE_ALERT_CALLBACK)(DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,BOOL,PDWORD);
+typedef DWORD(CALLBACK *PMGM_JOIN_ALERT_CALLBACK)(DWORD,DWORD,DWORD,DWORD,BOOL);
+typedef DWORD(CALLBACK *PMGM_WRONG_IF_CALLBACK)(DWORD,DWORD,DWORD,DWORD,DWORD,PBYTE);
+typedef DWORD(CALLBACK *PMGM_LOCAL_JOIN_CALLBACK)(DWORD,DWORD,DWORD,DWORD,DWORD,DWORD);
+typedef DWORD(CALLBACK *PMGM_LOCAL_LEAVE_CALLBACK)(DWORD,DWORD,DWORD,DWORD,DWORD,DWORD);
+typedef DWORD(CALLBACK *PMGM_DISABLE_IGMP_CALLBACK)(DWORD,DWORD);
+typedef DWORD(CALLBACK *PMGM_ENABLE_IGMP_CALLBACK)(DWORD,DWORD);
+typedef struct _ROUTING_PROTOCOL_CONFIG {
+	DWORD dwCallbackFlags;
+	PMGM_RPF_CALLBACK pfnRpfCallback;
+	PMGM_CREATION_ALERT_CALLBACK pfnCreationAlertCallback;
+	PMGM_PRUNE_ALERT_CALLBACK pfnPruneAlertCallback;
+	PMGM_JOIN_ALERT_CALLBACK pfnJoinAlertCallback;
+	PMGM_WRONG_IF_CALLBACK pfnWrongIfCallback;
+	PMGM_LOCAL_JOIN_CALLBACK pfnLocalJoinCallback;
+	PMGM_LOCAL_LEAVE_CALLBACK pfnLocalLeaveCallback;
+	PMGM_DISABLE_IGMP_CALLBACK pfnDisableIgmpCallback;
+	PMGM_ENABLE_IGMP_CALLBACK pfnEnableIgmpCallback;
+} ROUTING_PROTOCOL_CONFIG,*PROUTING_PROTOCOL_CONFIG;
+typedef struct _SOURCE_GROUP_ENTRY {
+	DWORD dwSourceAddr;
+	DWORD dwSourceMask;
+	DWORD dwGroupAddr;
+	DWORD dwGroupMask;
+} SOURCE_GROUP_ENTRY,*PSOURCE_GROUP_ENTRY;
+DWORD WINAPI MgmAddGroupMembershipEntry(HANDLE,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD);
+DWORD WINAPI MgmDeleteGroupMembershipEntry(HANDLE,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD);
+DWORD WINAPI MgmDeRegisterMProtocol(HANDLE);
+DWORD WINAPI MgmGetFirstMfe(PDWORD,PBYTE,PDWORD);
+DWORD WINAPI MgmGetFirstMfeStats(PDWORD,PBYTE,PDWORD,DWORD);
+DWORD WINAPI MgmGetMfe(PMIB_IPMCAST_MFE,PDWORD,PBYTE);
+DWORD WINAPI MgmGetMfeStats(PMIB_IPMCAST_MFE,PDWORD,PBYTE,DWORD);
+DWORD WINAPI MgmGetNextMfe(PMIB_IPMCAST_MFE,PDWORD,PBYTE,PDWORD);
+DWORD WINAPI MgmGetNextMfeStats(PMIB_IPMCAST_MFE,PDWORD,PBYTE,PDWORD,DWORD);
+DWORD WINAPI MgmGetProtocolOnInterface(DWORD,DWORD,PDWORD,PDWORD);
+DWORD WINAPI MgmGroupEnumerationEnd(HANDLE);
+DWORD WINAPI MgmGroupEnumerationGetNext(HANDLE,PDWORD,PBYTE,PDWORD);
+DWORD WINAPI MgmGroupEnumerationStart(HANDLE,MGM_ENUM_TYPES,HANDLE*);
+DWORD WINAPI MgmRegisterMProtocol(PROUTING_PROTOCOL_CONFIG,DWORD,DWORD,HANDLE*);
+DWORD WINAPI MgmReleaseInterfaceOwnership(HANDLE,DWORD,DWORD);
+DWORD WINAPI MgmSetMfe(HANDLE,PMIB_IPMCAST_MFE);
+DWORD WINAPI MgmTakeInterfaceOwnership(HANDLE,DWORD,DWORD);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/mgmtapi.h
===================================================================
--- Daodan/MinGW/include/mgmtapi.h	(revision 1046)
+++ Daodan/MinGW/include/mgmtapi.h	(revision 1046)
@@ -0,0 +1,58 @@
+/*
+  mgmtapi.h - Header file for the SNMP Management API
+
+  Written by Filip Navara <xnavara@volny.cz>
+
+  References (2003-08-25):
+    http://msdn.microsoft.com/library/en-us/snmp/snmp/snmp_reference.asp
+
+  This library is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+*/
+
+#ifndef _MGMTAPI_H
+#define _MGMTAPI_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#ifndef _SNMP_H
+#include <snmp.h>
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define SNMP_MGMTAPI_TIMEOUT	40
+#define SNMP_MGMTAPI_SELECT_FDERRORS	41
+#define SNMP_MGMTAPI_TRAP_ERRORS	42
+#define SNMP_MGMTAPI_TRAP_DUPINIT	43
+#define SNMP_MGMTAPI_NOTRAPS	44
+#define SNMP_MGMTAPI_AGAIN	45
+#define SNMP_MGMTAPI_INVALID_CTL	46
+#define SNMP_MGMTAPI_INVALID_SESSION	47
+#define SNMP_MGMTAPI_INVALID_BUFFER	48
+#define MGMCTL_SETAGENTPORT	1
+
+#ifndef RC_INVOKED
+
+typedef PVOID LPSNMP_MGR_SESSION;
+
+BOOL WINSNMPAPI SnmpMgrClose(LPSNMP_MGR_SESSION);
+BOOL WINSNMPAPI SnmpMgrCtl(LPSNMP_MGR_SESSION,DWORD,LPVOID,DWORD,LPVOID,DWORD,LPDWORD);
+BOOL WINSNMPAPI SnmpMgrGetTrap(AsnObjectIdentifier*,AsnNetworkAddress*,AsnInteger*,AsnInteger*,AsnTimeticks*,SnmpVarBindList*);
+BOOL WINSNMPAPI SnmpMgrGetTrapEx(AsnObjectIdentifier*,AsnNetworkAddress*,AsnNetworkAddress*,AsnInteger*,AsnInteger*,AsnOctetString*,AsnTimeticks*,SnmpVarBindList*);
+BOOL WINSNMPAPI SnmpMgrOidToStr(AsnObjectIdentifier*,LPSTR*);
+LPSNMP_MGR_SESSION WINSNMPAPI SnmpMgrOpen(LPSTR,LPSTR,INT,INT);
+INT WINSNMPAPI SnmpMgrRequest(LPSNMP_MGR_SESSION,BYTE,SnmpVarBindList*,AsnInteger*,AsnInteger*);
+BOOL WINSNMPAPI SnmpMgrStrToOid(LPSTR,AsnObjectIdentifier*);
+BOOL WINSNMPAPI SnmpMgrTrapListen(HANDLE*);
+
+#endif /* RC_INVOKED */
+
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/mlang.h
===================================================================
--- Daodan/MinGW/include/mlang.h	(revision 1046)
+++ Daodan/MinGW/include/mlang.h	(revision 1046)
@@ -0,0 +1,349 @@
+#ifndef _MLANG_H
+#define _MLANG_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#include <windows.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#pragma pack(push,1)
+
+#define MAX_MIMECP_NAME   64
+#define MAX_MIMECSET_NAME 50
+#define MAX_SCRIPT_NAME   48
+#define MAX_MIMEFACE_NAME 32
+#define MAX_RFC1766_NAME   6
+#define MAX_LOCALE_NAME   32
+
+typedef enum tagMIMECONTF {
+    MIMECONTF_MAILNEWS = 0x00000001,
+    MIMECONTF_BROWSER = 0x00000002,
+    MIMECONTF_MINIMAL = 0x00000004,
+    MIMECONTF_IMPORT = 0x00000008,
+    MIMECONTF_SAVABLE_MAILNEWS = 0x00000100,
+    MIMECONTF_SAVABLE_BROWSER = 0x00000200,
+    MIMECONTF_EXPORT = 0x00000400,
+    MIMECONTF_PRIVCONVERTER = 0x00010000,
+    MIMECONTF_VALID = 0x00020000,
+    MIMECONTF_VALID_NLS = 0x00040000,
+    MIMECONTF_MIME_IE4 = 0x10000000,
+    MIMECONTF_MIME_LATEST = 0x20000000,
+    MIMECONTF_MIME_REGISTRY = 0x40000000
+} MIMECONTF;
+typedef enum tagMLCONVCHARF {
+    MLCONVCHARF_NONE = 0,
+    MLCONVCHARF_AUTODETECT = 1,
+    MLCONVCHARF_NCR_ENTITIZE = 2,
+    MLCONVCHARF_NAME_ENTITIZE = 4,
+    MLCONVCHARF_USEDEFCHAR = 8,
+    MLCONVCHARF_NOBESTFITCHARS = 16
+} MLCONVCHAR;
+typedef enum tagMLCPF {
+    MLDETECTF_MAILNEWS = 0x0001,
+    MLDETECTF_BROWSER = 0x0002,
+    MLDETECTF_VALID = 0x0004,
+    MLDETECTF_VALID_NLS = 0x0008,
+    MLDETECTF_PRESERVE_ORDER = 0x0010,
+    MLDETECTF_PREFERRED_ONLY = 0x0020,
+    MLDETECTF_FILTER_SPECIALCHAR = 0x0040
+} MLCP;
+typedef enum tagMLDETECTCP {
+    MLDETECTCP_NONE = 0,
+    MLDETECTCP_7BIT = 1,
+    MLDETECTCP_8BIT = 2,
+    MLDETECTCP_DBCS = 4,
+    MLDETECTCP_HTML = 8
+} MLDETECTCP;
+typedef enum tagSCRIPTFONTCONTF {
+    SCRIPTCONTF_FIXED_FONT = 0x00000001,
+    SCRIPTCONTF_PROPORTIONAL_FONT = 0x00000002,
+    SCRIPTCONTF_SCRIPT_USER = 0x00010000,
+    SCRIPTCONTF_SCRIPT_HIDE = 0x00020000,
+    SCRIPTCONTF_SCRIPT_SYSTEM = 0x00040000
+} SCRIPTFONTCONTF;
+typedef enum tagSCRIPTCONTF {
+    sidDefault,
+    sidMerge,
+    sidAsciiSym,
+    sidAsciiLatin,
+    sidLatin,
+    sidGreek,
+    sidCyrillic,
+    sidArmenian,
+    sidHebrew,
+    sidArabic,
+    sidDevanagari,
+    sidBengali,
+    sidGurmukhi,
+    sidGujarati,
+    sidOriya,
+    sidTamil,
+    sidTelugu,
+    sidKannada,
+    sidMalayalam,
+    sidThai,
+    sidLao,
+    sidTibetan,
+    sidGeorgian,
+    sidHangul,
+    sidKana,
+    sidBopomofo,
+    sidHan,
+    sidEthiopic,
+    sidCanSyllabic,
+    sidCherokee,
+    sidYi,
+    sidBraille,
+    sidRunic,
+    sidOgham,
+    sidSinhala,
+    sidSyriac,
+    sidBurmese,
+    sidKhmer,
+    sidThaana,
+    sidMongolian,
+    sidLim,
+    sidFEFirst = sidHangul,
+    sidFELast = sidHan
+} SCRIPTCONTF;
+
+typedef struct tagDetectEncodingInfo {
+    UINT nLangID;
+    UINT nCodePage;
+    INT nDocPercent;
+    INT nConfidence;
+} DetectEncodingInfo, *pDetectEncodingInfo;
+typedef struct tagMIMECPINFO {
+    DWORD dwFlags;
+    UINT uiCodePage;
+    UINT uiFamilyCodePage;
+    WCHAR wszDescription[MAX_MIMECP_NAME];
+    WCHAR wszWebCharset[MAX_MIMECSET_NAME];
+    WCHAR wszHeaderCharset[MAX_MIMECSET_NAME];
+    WCHAR wszBodyCharset[MAX_MIMECSET_NAME];
+    WCHAR wszFixedWidthFont[MAX_MIMEFACE_NAME];
+    WCHAR wszProportionalFont[MAX_MIMEFACE_NAME];
+    BYTE bGDICharset;
+} MIMECPINFO, *PMIMECPINFO;
+typedef struct tagMIMECSETINFO {
+    UINT uiCodePage;
+    UINT uiInternetEncoding;
+    WCHAR wszCharset[MAX_MIMECSET_NAME];
+} MIMECSETINFO, *PMIMECSETINFO;
+typedef struct tagRFC1766INFO {
+    LCID lcid;
+    WCHAR wszRfc1766[MAX_RFC1766_NAME];
+    WCHAR wszLocaleName[MAX_LOCALE_NAME];
+} RFC1766INFO, *PRFC1766INFO;
+typedef BYTE SCRIPT_ID;
+typedef struct tagSCRIPTINFO {
+    SCRIPT_ID ScriptId;
+    UINT uiCodePage;
+    WCHAR wszDescription[MAX_SCRIPT_NAME];
+    WCHAR wszFixedWidthFont[MAX_MIMEFACE_NAME];
+    WCHAR wszProportionalFont[MAX_MIMEFACE_NAME];
+} SCRIPTINFO, *PSCRIPTINFO;
+typedef struct tagUNICODERANGE {
+  WCHAR wcFrom;
+  WCHAR wcTo;
+} UNICODERANGE;
+
+typedef struct tagSCRIPTFONTINFO SCRIPTFONTINFO;
+
+EXTERN_C const IID IID_IEnumCodePage;
+#define INTERFACE IEnumCodePage
+DECLARE_INTERFACE_(IEnumCodePage,IUnknown)
+{
+        STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+        STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+        STDMETHOD_(ULONG,Release)(THIS) PURE;
+        STDMETHOD(Clone)(THIS_ IEnumCodePage**) PURE;
+        STDMETHOD(Next)(THIS_ ULONG,PMIMECPINFO,ULONG*) PURE;
+        STDMETHOD(Reset)(THIS) PURE;
+        STDMETHOD(Skip)(THIS_ ULONG) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IEnumRfc1766;
+#define INTERFACE IEnumRfc1766
+DECLARE_INTERFACE_(IEnumRfc1766,IUnknown)
+{
+        STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+        STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+        STDMETHOD_(ULONG,Release)(THIS) PURE;
+        STDMETHOD(Clone)(THIS_ IEnumRfc1766**) PURE;
+        STDMETHOD(Next)(THIS_ ULONG,PRFC1766INFO,ULONG*) PURE;
+        STDMETHOD(Reset)(THIS) PURE;
+        STDMETHOD(Skip)(THIS_ ULONG) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IEnumScript;
+#define INTERFACE IEnumScript
+DECLARE_INTERFACE_(IEnumScript,IUnknown)
+{
+        STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+        STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+        STDMETHOD_(ULONG,Release)(THIS) PURE;
+        STDMETHOD(Clone)(THIS_ IEnumScript**) PURE;
+        STDMETHOD(Next)(THIS_ ULONG,PSCRIPTINFO,ULONG*) PURE;
+        STDMETHOD(Reset)(THIS) PURE;
+        STDMETHOD(Skip)(THIS_ ULONG) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IMLangCodePages;
+#define INTERFACE IMLangCodePages
+DECLARE_INTERFACE_(IMLangCodePages,IUnknown)
+{
+        STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+        STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+        STDMETHOD_(ULONG,Release)(THIS) PURE;
+        STDMETHOD(GetCharCodePages)(THIS_ WCHAR,DWORD*) PURE;
+        STDMETHOD(GetStrCodePages)(THIS_ const WCHAR *,long,DWORD,DWORD*,long*) PURE;
+        STDMETHOD(CodePageToCodePages)(THIS_ UINT,DWORD*) PURE;
+        STDMETHOD(CodePagesToCodePage)(THIS_ DWORD,UINT,UINT*) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IMLangConvertCharset;
+#define INTERFACE IMLangConvertCharset
+DECLARE_INTERFACE_(IMLangConvertCharset,IUnknown)
+{
+        STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+        STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+        STDMETHOD_(ULONG,Release)(THIS) PURE;
+        STDMETHOD(Initialize)(THIS_ UINT,UINT,DWORD) PURE;
+        STDMETHOD(GetSourceCodePage)(THIS_ UINT*) PURE;
+        STDMETHOD(GetDestinationCodePage)(THIS_ UINT*) PURE;
+        STDMETHOD(GetProperty)(THIS_ DWORD*) PURE;
+        STDMETHOD(DoConversion)(THIS_ BYTE*,UINT*,BYTE*,UINT*) PURE;
+        STDMETHOD(DoConversionToUnicode)(THIS_ CHAR*,UINT*,WCHAR*,UINT*) PURE;
+        STDMETHOD(DoConversionFromUnicode)(THIS_ WCHAR*,UINT*,CHAR*,UINT*) PURE;
+};
+#undef INTERFACE
+EXTERN_C const CLSID CLSID_CMLangConvertCharset;
+
+EXTERN_C const IID IID_IMLangFontLink;
+#define INTERFACE IMLangFontLink
+DECLARE_INTERFACE_(IMLangFontLink,IMLangCodePages)
+{
+        STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+        STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+        STDMETHOD_(ULONG,Release)(THIS) PURE;
+        STDMETHOD(GetCharCodePages)(THIS_ WCHAR,DWORD*) PURE;
+        STDMETHOD(GetStrCodePages)(THIS_ const WCHAR *,long,DWORD,DWORD*,long*) PURE;
+        STDMETHOD(CodePageToCodePages)(THIS_ UINT,DWORD*) PURE;
+        STDMETHOD(CodePagesToCodePage)(THIS_ DWORD,UINT,UINT*) PURE;
+        STDMETHOD(GetFontCodePages)(THIS_ HDC,HFONT,DWORD*) PURE;
+        STDMETHOD(MapFont)(THIS_ HDC,DWORD,HFONT,HFONT*) PURE;
+        STDMETHOD(ReleaseFont)(THIS_ HFONT) PURE;
+        STDMETHOD(ResetFontMapping)(THIS) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IMLangFontLink2;
+#define INTERFACE IMLangFontLink2
+DECLARE_INTERFACE_(IMLangFontLink2,IMLangCodePages)
+{
+        STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+        STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+        STDMETHOD_(ULONG,Release)(THIS) PURE;
+        STDMETHOD(GetCharCodePages)(THIS_ WCHAR,DWORD*) PURE;
+        STDMETHOD(GetStrCodePages)(THIS_ const WCHAR *,long,DWORD,DWORD*,long*) PURE;
+        STDMETHOD(CodePageToCodePages)(THIS_ UINT,DWORD*) PURE;
+        STDMETHOD(CodePagesToCodePage)(THIS_ DWORD,UINT,UINT*) PURE;
+        STDMETHOD(GetFontCodePages)(THIS_ HDC,HFONT,DWORD*) PURE;
+        STDMETHOD(ReleaseFont)(THIS_ HFONT) PURE;
+        STDMETHOD(ResetFontMapping)(THIS) PURE;
+        STDMETHOD(MapFont)(THIS_ HDC,DWORD,WCHAR,HFONT*) PURE;
+        STDMETHOD(GetFontUnicodeRange)(THIS_ HDC,UINT*,UNICODERANGE*) PURE;
+        STDMETHOD(GetScriptFontInfo)(THIS_ SCRIPT_ID,DWORD,UINT*,SCRIPTFONTINFO*) PURE;
+        STDMETHOD(CodePageToScriptID)(THIS) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IMLangLineBreakConsole;
+#define INTERFACE IMLangLineBreakConsole
+DECLARE_INTERFACE_(IMLangLineBreakConsole,IMLangCodePages)
+{
+        STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+        STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+        STDMETHOD_(ULONG,Release)(THIS) PURE;
+        STDMETHOD(BreakLineML)(THIS) PURE;
+        STDMETHOD(BreakLineW)(THIS_ LCID,const WCHAR*,long,long,long*,long*) PURE;
+        STDMETHOD(BreakLineA)(THIS_ LCID,UINT,const CHAR*,long,long,long*,long*) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IMultiLanguage;
+#define INTERFACE IMultiLanguage
+DECLARE_INTERFACE_(IMultiLanguage,IUnknown)
+{
+        STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+        STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+        STDMETHOD_(ULONG,Release)(THIS) PURE;
+        STDMETHOD(GetNumberOfCodePageInfo)(THIS_ UINT*) PURE;
+        STDMETHOD(GetCodePageInfo)(THIS_ UINT,PMIMECPINFO) PURE;
+        STDMETHOD(GetFamilyCodePage)(THIS_ UINT,UINT*) PURE;
+        STDMETHOD(EnumCodePages)(THIS_ DWORD,IEnumCodePage**) PURE;
+        STDMETHOD(GetCharsetInfo)(THIS_ BSTR,PMIMECSETINFO) PURE;
+        STDMETHOD(IsConvertible)(THIS_ DWORD,DWORD) PURE;
+        STDMETHOD(ConvertString)(THIS_ DWORD*,DWORD,DWORD,BYTE*,UINT*,BYTE*,UINT*) PURE;
+        STDMETHOD(ConvertStringToUnicode)(THIS_ DWORD*,DWORD,CHAR*,UINT*,WCHAR*,UINT*) PURE;
+        STDMETHOD(ConvertStringFromUnicode)(THIS_ DWORD*,DWORD,WCHAR*,UINT*,CHAR*,UINT*) PURE;
+        STDMETHOD(ConvertStringReset)(THIS) PURE;
+        STDMETHOD(GetRfc1766FromLcid)(THIS_ LCID,BSTR*) PURE;
+        STDMETHOD(GetLcidFromRfc1766)(THIS_ LCID*,BSTR) PURE;
+        STDMETHOD(EnumRfc1766)(THIS_ IEnumRfc1766**) PURE;
+        STDMETHOD(GetRfc1766Info)(THIS_ LCID,PRFC1766INFO) PURE;
+        STDMETHOD(CreateConvertCharset)(THIS_ UINT,UINT,DWORD,IMLangConvertCharset**) PURE;
+};
+#undef INTERFACE
+EXTERN_C const CLSID CLSID_CMultiLanguage;
+
+EXTERN_C const IID IID_IMultiLanguage2;
+#define INTERFACE IMultiLanguage2
+DECLARE_INTERFACE_(IMultiLanguage2,IUnknown)
+{
+        STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+        STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+        STDMETHOD_(ULONG,Release)(THIS) PURE;
+        STDMETHOD(GetNumberOfCodePageInfo)(THIS_ UINT*) PURE;
+        STDMETHOD(GetCodePageInfo)(THIS_ UINT,PMIMECPINFO) PURE;
+        STDMETHOD(GetFamilyCodePage)(THIS_ UINT,UINT*) PURE;
+        STDMETHOD(EnumCodePages)(THIS_ DWORD,IEnumCodePage**) PURE;
+        STDMETHOD(GetCharsetInfo)(THIS_ BSTR,PMIMECSETINFO) PURE;
+        STDMETHOD(IsConvertible)(THIS_ DWORD,DWORD) PURE;
+        STDMETHOD(ConvertString)(THIS_ DWORD*,DWORD,DWORD,BYTE*,UINT*,BYTE*,UINT*) PURE;
+        STDMETHOD(ConvertStringToUnicode)(THIS_ DWORD*,DWORD,CHAR*,UINT*,WCHAR*,UINT*) PURE;
+        STDMETHOD(ConvertStringFromUnicode)(THIS_ DWORD*,DWORD,WCHAR*,UINT*,CHAR*,UINT*) PURE;
+        STDMETHOD(ConvertStringReset)(THIS) PURE;
+        STDMETHOD(GetRfc1766FromLcid)(THIS_ LCID,BSTR*) PURE;
+        STDMETHOD(GetLcidFromRfc1766)(THIS_ LCID*,BSTR) PURE;
+        STDMETHOD(EnumRfc1766)(THIS_ IEnumRfc1766**) PURE;
+        STDMETHOD(GetRfc1766Info)(THIS_ LCID,PRFC1766INFO) PURE;
+        STDMETHOD(CreateConvertCharset)(THIS_ UINT,UINT,DWORD,IMLangConvertCharset**) PURE;
+        STDMETHOD(ConvertStringInIStream)(THIS_ DWORD*,DWORD,WCHAR*,DWORD,DWORD,IStream*,IStream*) PURE;
+        STDMETHOD(ConvertStringToUnicodeEx)(THIS_ DWORD*,DWORD,CHAR*,UINT*,WCHAR*,UINT*,DWORD,WCHAR*) PURE;
+        STDMETHOD(ConvertStringFromUnicodeEx)(THIS_ DWORD*,DWORD,WCHAR*,UINT*,CHAR*,UINT*,DWORD,WCHAR*) PURE;
+        STDMETHOD(DetectCodepageInIStream)(THIS_ DWORD,DWORD,IStream*,DetectEncodingInfo*,INT*) PURE;
+        STDMETHOD(DetectInputCodepage)(THIS_ DWORD,DWORD,CHAR*,INT*,DetectEncodingInfo*,INT*) PURE;
+        STDMETHOD(ValidateCodePage)(THIS) PURE;
+        STDMETHOD(GetCodePageDescription)(THIS_ UINT,LCID,LPWSTR,int) PURE;
+        STDMETHOD(IsCodePageInstallable)(THIS) PURE;
+        STDMETHOD(SetMimeDBSource)(THIS_ MIMECONTF) PURE;
+        STDMETHOD(GetNumberOfScripts)(THIS_ UINT*) PURE;
+        STDMETHOD(EnumScripts)(THIS_ DWORD,LANGID,IEnumScript**) PURE;
+};
+#undef INTERFACE
+
+
+#pragma pack(pop)
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/mmreg.h
===================================================================
--- Daodan/MinGW/include/mmreg.h	(revision 1046)
+++ Daodan/MinGW/include/mmreg.h	(revision 1046)
@@ -0,0 +1,226 @@
+#ifndef _MMREG_H
+#define _MMREG_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#ifndef _MMSYSTEM_H
+#include <mmsystem.h>
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*--- DirectShow Reference - DirectShow Structures */
+typedef struct mpeg1waveformat_tag {
+	WAVEFORMATEX wfx;
+	WORD fwHeadLayer;
+	DWORD dwHeadBitrate;
+	WORD fwHeadMode;
+	WORD fwHeadModeExt;
+	WORD wHeadEmphasis;
+	WORD fwHeadFlags;
+	DWORD dwPTSLow;
+	DWORD dwPTSHigh;
+} MPEG1WAVEFORMAT;
+#define ACM_MPEG_LAYER1 0x0001
+#define ACM_MPEG_LAYER2 0x0002
+#define ACM_MPEG_LAYER3 0x0004
+#define ACM_MPEG_STEREO 0x0001
+#define ACM_MPEG_JOINTSTEREO 0x0002
+#define ACM_MPEG_DUALCHANNEL 0x0004
+#define ACM_MPEG_SINGLECHANNEL 0x0008
+#define ACM_MPEG_PRIVATEBIT 0x0001
+#define ACM_MPEG_COPYRIGHT 0x0002
+#define ACM_MPEG_ORIGINALHOME 0x0004
+#define ACM_MPEG_PROTECTIONBIT 0x0008
+#define ACM_MPEG_ID_MPEG1 0x0010
+typedef struct {
+	WAVEFORMATEX Format;
+	union {
+		WORD wValidBitsPerSample;
+		WORD wSamplesPerBlock;
+		WORD wReserved;
+	} Samples;
+	DWORD dwChannelMask;
+	GUID SubFormat;
+} WAVEFORMATEXTENSIBLE,*PWAVEFORMATEXTENSIBLE;
+#define SPEAKER_FRONT_LEFT 0x1
+#define SPEAKER_FRONT_RIGHT 0x2
+#define SPEAKER_FRONT_CENTER 0x4
+#define SPEAKER_LOW_FREQUENCY 0x8
+#define SPEAKER_BACK_LEFT 0x10
+#define SPEAKER_BACK_RIGHT 0x20
+#define SPEAKER_FRONT_LEFT_OF_CENTER 0x40
+#define SPEAKER_FRONT_RIGHT_OF_CENTER 0x80
+#define SPEAKER_BACK_CENTER 0x100
+#define SPEAKER_SIDE_LEFT 0x200
+#define SPEAKER_SIDE_RIGHT 0x400
+#define SPEAKER_TOP_CENTER 0x800
+#define SPEAKER_TOP_FRONT_LEFT 	0x1000
+#define SPEAKER_TOP_FRONT_CENTER 0x2000
+#define SPEAKER_TOP_FRONT_RIGHT 0x4000
+#define SPEAKER_TOP_BACK_LEFT 0x8000
+#define SPEAKER_TOP_BACK_CENTER 0x10000
+#define SPEAKER_TOP_BACK_RIGHT 0x20000
+
+/*msdn.microsoft.com/en-us/library/dd390710%28VS.85%29.aspx*/
+typedef struct mpeglayer3waveformat_tag {
+  WAVEFORMATEX wfx;
+  WORD         wID;
+  DWORD        fdwFlags;
+  WORD         nBlockSize;
+  WORD         nFramesPerBlock;
+  WORD         nCodecDelay;
+} MPEGLAYER3WAVEFORMAT, *LPMPEGLAYER3WAVEFORMAT;
+
+/* http://www.ietf.org/rfc/rfc2361.txt */
+#define WAVE_FORMAT_UNKNOWN                 0x0000
+#define WAVE_FORMAT_PCM                     0x0001
+#define WAVE_FORMAT_ADPCM                   0x0002
+#define WAVE_FORMAT_IEEE_FLOAT              0x0003
+#define WAVE_FORMAT_VSELP                   0x0004
+#define WAVE_FORMAT_IBM_CVSD                0x0005
+#define WAVE_FORMAT_ALAW                    0x0006
+#define WAVE_FORMAT_MULAW                   0x0007
+
+#define WAVE_FORMAT_OKI_ADPCM               0x0010
+#define WAVE_FORMAT_DVI_ADPCM               0x0011
+#define WAVE_FORMAT_MEDIASPACE_ADPCM        0x0012
+#define WAVE_FORMAT_SIERRA_ADPCM            0x0013
+#define WAVE_FORMAT_G723_ADPCM              0x0014
+#define WAVE_FORMAT_DIGIFIX                 0x0016
+#define WAVE_FORMAT_DIALOGIC_OKI_ADPCM      0x0017
+#define WAVE_FORMAT_MEDIAVISION_ADPCM       0x0018
+#define WAVE_FORMAT_CU_CODEC                0x0019
+#define WAVE_FORMAT_YAMAHA_ADPCM            0x0020
+#define WAVE_FORMAT_SONARC                  0x0021
+#define WAVE_FORMAT_DSPGROUP_TRUESPEECH     0x0022
+#define WAVE_FORMAT_ECHOSC1                 0x0023
+#define WAVE_FORMAT_AUDIOFILE_AF36          0x0024
+#define WAVE_FORMAT_APTX                    0x0025
+#define WAVE_FORMAT_AUDIOFILE_AF10          0x0026
+#define WAVE_FORMAT_PROSODY_1612            0x0027
+#define WAVE_FORMAT_LRC                     0x0028
+
+#define WAVE_FORMAT_DOLBY_AC2               0x0030
+#define WAVE_FORMAT_GSM610                  0x0031
+#define WAVE_FORMAT_MSNAUDIO                0x0032
+#define WAVE_FORMAT_ANTEX_ADPCME            0x0033
+#define WAVE_FORMAT_CONTROL_RES_VQLPC       0x0034
+#define WAVE_FORMAT_DIGIREAL                0x0035
+#define WAVE_FORMAT_DIGIADPCM               0x0036
+#define WAVE_FORMAT_CONTROL_RES_CR10        0x0037
+#define WAVE_FORMAT_NMS_VBXADPCM            0x0038
+#define WAVE_FORMAT_ROLAND_RDAC             0x0039
+#define WAVE_FORMAT_ECHOSC3                 0x003A
+#define WAVE_FORMAT_ROCKWELL_ADPCM          0x003B
+#define WAVE_FORMAT_ROCKWELL_DIGITALK       0x003C
+#define WAVE_FORMAT_XEBEC                   0x003D
+
+#define WAVE_FORMAT_G721_ADPCM              0x0040
+#define WAVE_FORMAT_G728_CELP               0x0041
+#define WAVE_FORMAT_MSG723                  0x0042
+
+#define WAVE_FORMAT_MPEG                    0x0050
+
+#define WAVE_FORMAT_RT24                    0x0052
+#define WAVE_FORMAT_PAC                     0x0053
+
+#define WAVE_FORMAT_MPEGLAYER3              0x0055
+
+#define WAVE_FORMAT_LUCENT_G723             0x0059
+#define WAVE_FORMAT_CIRRUS                  0x0060
+#define WAVE_FORMAT_ESPCM                   0x0061
+#define WAVE_FORMAT_VOXWARE                 0x0062
+#define WAVE_FORMAT_CANOPUS_ATRAC           0x0063
+#define WAVE_FORMAT_G726_ADPCM              0x0064
+#define WAVE_FORMAT_G722_ADPCM              0x0065
+#define WAVE_FORMAT_DSAT                    0x0066
+#define WAVE_FORMAT_DSAT_DISPLAY            0x0067
+
+#define WAVE_FORMAT_VOXWARE_BYTE_ALIGNED    0x0069
+#define WAVE_FORMAT_VOXWARE_AC8             0x0070
+#define WAVE_FORMAT_VOXWARE_AC10            0x0071
+#define WAVE_FORMAT_VOXWARE_AC16            0x0072
+#define WAVE_FORMAT_VOXWARE_AC20            0x0073
+#define WAVE_FORMAT_VOXWARE_RT24            0x0074
+#define WAVE_FORMAT_VOXWARE_RT29            0x0075
+#define WAVE_FORMAT_VOXWARE_RT29HW          0x0076
+#define WAVE_FORMAT_VOXWARE_VR12            0x0077
+#define WAVE_FORMAT_VOXWARE_VR18            0x0078
+#define WAVE_FORMAT_VOXWARE_TQ40            0x0079
+#define WAVE_FORMAT_SOFTSOUND               0x0080
+#define WAVE_FORMAT_VOXWARE_TQ60            0x0081
+#define WAVE_FORMAT_MSRT24                  0x0082
+#define WAVE_FORMAT_G729A                   0x0083
+#define WAVE_FORMAT_MVI_MV12                0x0084
+#define WAVE_FORMAT_DF_G726                 0x0085
+#define WAVE_FORMAT_DF_GSM610               0x0086
+
+#define WAVE_FORMAT_ISIAUDIO                0x0088
+#define WAVE_FORMAT_ONLIVE                  0x0089
+
+#define WAVE_FORMAT_SBC24                   0x0091
+#define WAVE_FORMAT_DOLBY_AC3_SPDIF         0x0092
+
+#define WAVE_FORMAT_ZYXEL_ADPCM             0x0097
+#define WAVE_FORMAT_PHILIPS_LPCBB           0x0098
+#define WAVE_FORMAT_PACKED                  0x0099
+#define WAVE_FORMAT_RHETOREX_ADPCM          0x0100
+#define WAVE_FORMAT_IRAT                    0x0101
+#define WAVE_FORMAT_VIVO_G723               0x0111
+#define WAVE_FORMAT_VIVO_SIREN              0x0112
+#define WAVE_FORMAT_DIGITAL_G723            0x0113
+
+#define WAVE_FORMAT_CREATIVE_ADPCM          0x0200
+
+#define WAVE_FORMAT_CREATIVE_FASTSPEECH8    0x0202
+#define WAVE_FORMAT_CREATIVE_FASTSPEECH10   0x0203
+
+#define WAVE_FORMAT_QUARTERDECK             0x0220
+
+#define WAVE_FORMAT_FM_TOWNS_SND            0x0300
+
+#define WAVE_FORMAT_BTV_DIGITAL             0x0400
+
+#define WAVE_FORMAT_VME_VMPCM               0x0680
+
+#define WAVE_FORMAT_OLIGSM                  0x1000
+#define WAVE_FORMAT_OLIADPCM                0x1001
+#define WAVE_FORMAT_OLICELP                 0x1002
+#define WAVE_FORMAT_OLISBC                  0x1003
+#define WAVE_FORMAT_OLIOPR                  0x1004
+
+#define WAVE_FORMAT_LH_CODEC                0x1100
+
+#define WAVE_FORMAT_NORRIS                  0x1400
+#define WAVE_FORMAT_ISIAUDIO                0x1401
+
+#define WAVE_FORMAT_SOUNDSPACE_MUSICOMPRESS 0x1500
+
+#define WAVE_FORMAT_DVM                     0x2000
+
+/* http://msdn.microsoft.com/en-us/library/aa372553%28VS.85%29.aspx */
+#define WAVE_FORMAT_RAW_AAC1                0x00FF
+#define WAVE_FORMAT_MPEG_HEAAC              0x1610
+#define WAVE_FORMAT_MPEG_ADTS_AAC           0x1600
+#define WAVE_FORMAT_DRM                     0x0009
+#define WAVE_FORMAT_DTS                     0x0008
+#define WAVE_FORMAT_WMAVOICE9               0x000A
+#define WAVE_FORMAT_WMASPDIF                0x0164
+#define WAVE_FORMAT_WMAUDIO_LOSSLESS        0x0163
+#define WAVE_FORMAT_WMAUDIO2                0x0161
+#define WAVE_FORMAT_WMAUDIO3                0x0162
+
+/* http://msdn.microsoft.com/en-us/library/dd317599%28VS.85%29.aspx */
+#define WAVE_FORMAT_MPEG_LOAS               0x1602
+#define WAVE_FORMAT_RAW_SPORT               0x0240
+#define WAVE_FORMAT_ESST_AC3                0x0241
+#define WAVE_FORMAT_DTS2                    0x2001
+
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/mmsystem.h
===================================================================
--- Daodan/MinGW/include/mmsystem.h	(revision 1046)
+++ Daodan/MinGW/include/mmsystem.h	(revision 1046)
@@ -0,0 +1,1943 @@
+
+#ifndef _MMSYSTEM_H
+#define _MMSYSTEM_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+#pragma pack(push,1)
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define	WINMMAPI	DECLSPEC_IMPORT
+#define _loadds
+#define _huge
+#define MAXPNAMELEN 32
+#define MAXERRORLENGTH 256
+#define MAX_JOYSTICKOEMVXDNAME 260
+#define _MMRESULT_
+#define TIME_MS 1
+#define TIME_SAMPLES 2
+#define TIME_BYTES 4
+#define TIME_SMPTE 8
+#define TIME_MIDI 16
+#define TIME_TICKS 32
+#define MAKEFOURCC(c0,c1,c2,c3) ((DWORD)(BYTE)(c0)|((DWORD)(BYTE)(c1)<<8)|((DWORD)(BYTE)(c2)<<16)|((DWORD)(BYTE)(c3)<<24))
+#ifndef mmioFOURCC
+#define mmioFOURCC(c0,c1,c2,c3) MAKEFOURCC(c0,c1,c2,c3)
+#endif
+#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_LASTERROR (MMSYSERR_BASE+20)
+#define DRV_LOAD 1
+#define DRV_ENABLE 2
+#define DRV_OPEN 3
+#define DRV_CLOSE 4
+#define DRV_DISABLE 5
+#define DRV_FREE 6
+#define DRV_CONFIGURE 7
+#define DRV_QUERYCONFIGURE 8
+#define DRV_INSTALL 9
+#define DRV_REMOVE 10
+#define DRV_EXITSESSION 11
+#define DRV_POWER 15
+#define DRV_RESERVED 0x800
+#define DRV_USER 0x4000
+#define DRVCNF_CANCEL 0
+#define DRVCNF_OK 1
+#define DRVCNF_RESTART 2
+#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 0x70000
+#define CALLBACK_NULL 0
+#define CALLBACK_WINDOW 0x10000
+#define CALLBACK_TASK 0x20000
+#define CALLBACK_FUNCTION 0x30000
+#define CALLBACK_THREAD CALLBACK_TASK
+#define CALLBACK_EVENT 0x50000
+#define SND_SYNC 0
+#define SND_ASYNC 1
+#define SND_NODEFAULT 2
+#define SND_MEMORY 4
+#define SND_LOOP 8
+#define SND_NOSTOP 16
+#define SND_NOWAIT	0x2000
+#define SND_ALIAS 0x10000
+#define SND_ALIAS_ID	0x110000
+#define SND_FILENAME 0x20000
+#define SND_RESOURCE 0x40004
+#define SND_PURGE 0x40
+#define SND_APPLICATION 0x80
+#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')
+#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)
+#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 1
+#define WAVE_ALLOWSYNC 2
+#define WAVE_MAPPED 4
+#define WAVE_FORMAT_DIRECT 8
+#define WAVE_FORMAT_DIRECT_QUERY (WAVE_FORMAT_QUERY|WAVE_FORMAT_DIRECT)
+#define WHDR_DONE 1
+#define WHDR_PREPARED 2
+#define WHDR_BEGINLOOP 4
+#define WHDR_ENDLOOP 8
+#define WHDR_INQUEUE 16
+#define WAVECAPS_PITCH 1
+#define WAVECAPS_PLAYBACKRATE 2
+#define WAVECAPS_VOLUME 4
+#define WAVECAPS_LRVOLUME 8
+#define WAVECAPS_SYNC 16
+#define WAVECAPS_SAMPLEACCURATE 32
+#define WAVECAPS_DIRECTSOUND 64
+#define WAVE_INVALIDFORMAT 0
+#define WAVE_FORMAT_1M08 1
+#define WAVE_FORMAT_1S08 2
+#define WAVE_FORMAT_1M16 4
+#define WAVE_FORMAT_1S16 8
+#define WAVE_FORMAT_2M08 16
+#define WAVE_FORMAT_2S08 32
+#define WAVE_FORMAT_2M16 64
+#define WAVE_FORMAT_2S16 128
+#define WAVE_FORMAT_4M08 256
+#define WAVE_FORMAT_4S08 512
+#define WAVE_FORMAT_4M16 1024
+#define WAVE_FORMAT_4S16 2048
+#define WAVE_FORMAT_PCM 1
+#define WAVE_FORMAT_EXTENSIBLE 0xFFFE
+#define MIDIERR_UNPREPARED MIDIERR_BASE
+#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)
+#define MIDIPATCHSIZE 128
+#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 32
+#define MIDI_CACHE_ALL 1
+#define MIDI_CACHE_BESTFIT 2
+#define MIDI_CACHE_QUERY 3
+#define MIDI_UNCACHE 4
+#define MOD_MIDIPORT 1
+#define MOD_SYNTH 2
+#define MOD_SQSYNTH 3
+#define MOD_FMSYNTH 4
+#define MOD_MAPPER 5
+#define MIDICAPS_VOLUME 1
+#define MIDICAPS_LRVOLUME 2
+#define MIDICAPS_CACHE 4
+#define MIDICAPS_STREAM 8
+#define MHDR_DONE 1
+#define MHDR_PREPARED 2
+#define MHDR_INQUEUE 4
+#define MHDR_ISSTRM 8
+#define MEVT_F_SHORT 0
+#define MEVT_F_LONG 0x80000000
+#define MEVT_F_CALLBACK 0x40000000
+#define MEVT_EVENTTYPE(x) ((BYTE)(((x)>>24)&0xFF))
+#define MEVT_EVENTPARM(x) ((DWORD)((x)&0xFFFFFFL))
+#define MEVT_SHORTMSG 0
+#define MEVT_TEMPO 1
+#define MEVT_NOP 2
+#define MEVT_LONGMSG ((BYTE)0x80)
+#define MEVT_COMMENT ((BYTE)0x82)
+#define MEVT_VERSION ((BYTE)0x84)
+#define MIDISTRM_ERROR (-2)
+#define MIDIPROP_SET 0x80000000
+#define MIDIPROP_GET 0x40000000
+#define MIDIPROP_TIMEDIV 1
+#define MIDIPROP_TEMPO 2
+#define AUX_MAPPER ((UINT)-1)
+#define AUXCAPS_CDAUDIO 1
+#define AUXCAPS_AUXIN 2
+#define AUXCAPS_VOLUME 1
+#define AUXCAPS_LRVOLUME 2
+#define MIXER_SHORT_NAME_CHARS 16
+#define MIXER_LONG_NAME_CHARS 64
+#define MIXERR_INVALLINE MIXERR_BASE
+#define MIXERR_INVALCONTROL (MIXERR_BASE+1)
+#define MIXERR_INVALVALUE (MIXERR_BASE+2)
+#define MIXERR_LASTERROR (MIXERR_BASE+2)
+#define MIXER_OBJECTF_HANDLE 0x80000000
+#define MIXER_OBJECTF_MIXER 0
+#define MIXER_OBJECTF_HMIXER (MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_MIXER)
+#define MIXER_OBJECTF_WAVEOUT 0x10000000
+#define MIXER_OBJECTF_HWAVEOUT (MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_WAVEOUT)
+#define MIXER_OBJECTF_WAVEIN 0x20000000
+#define MIXER_OBJECTF_HWAVEIN (MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_WAVEIN)
+#define MIXER_OBJECTF_MIDIOUT 0x30000000
+#define MIXER_OBJECTF_HMIDIOUT (MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_MIDIOUT)
+#define MIXER_OBJECTF_MIDIIN 0x40000000
+#define MIXER_OBJECTF_HMIDIIN (MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_MIDIIN)
+#define MIXER_OBJECTF_AUX 0x50000000
+#define MIXERLINE_LINEF_ACTIVE 1
+#define MIXERLINE_LINEF_DISCONNECTED 0x8000
+#define MIXERLINE_LINEF_SOURCE 0x80000000
+#define MIXERLINE_COMPONENTTYPE_DST_FIRST 0
+#define MIXERLINE_COMPONENTTYPE_DST_UNDEFINED MIXERLINE_COMPONENTTYPE_DST_FIRST
+#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 0x1000
+#define MIXERLINE_COMPONENTTYPE_SRC_UNDEFINED MIXERLINE_COMPONENTTYPE_SRC_FIRST
+#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
+#define MIXER_GETLINEINFOF_DESTINATION 0
+#define MIXER_GETLINEINFOF_SOURCE 1
+#define MIXER_GETLINEINFOF_LINEID 2
+#define MIXER_GETLINEINFOF_COMPONENTTYPE 3
+#define MIXER_GETLINEINFOF_TARGETTYPE 4
+#define MIXER_GETLINEINFOF_QUERYMASK 15
+#define MIXERCONTROL_CONTROLF_UNIFORM 1
+#define MIXERCONTROL_CONTROLF_MULTIPLE 2
+#define MIXERCONTROL_CONTROLF_DISABLED 0x80000000
+#define MIXERCONTROL_CT_CLASS_MASK 0xF0000000
+#define MIXERCONTROL_CT_CLASS_CUSTOM 0
+#define MIXERCONTROL_CT_CLASS_METER 0x10000000
+#define MIXERCONTROL_CT_CLASS_SWITCH 0x20000000
+#define MIXERCONTROL_CT_CLASS_NUMBER 0x30000000
+#define MIXERCONTROL_CT_CLASS_SLIDER 0x40000000
+#define MIXERCONTROL_CT_CLASS_FADER 0x50000000
+#define MIXERCONTROL_CT_CLASS_TIME 0x60000000
+#define MIXERCONTROL_CT_CLASS_LIST 0x70000000
+#define MIXERCONTROL_CT_SUBCLASS_MASK 0xF000000
+#define MIXERCONTROL_CT_SC_SWITCH_BOOLEAN 0
+#define MIXERCONTROL_CT_SC_SWITCH_BUTTON 0x1000000
+#define MIXERCONTROL_CT_SC_METER_POLLED 0
+#define MIXERCONTROL_CT_SC_TIME_MICROSECS 0
+#define MIXERCONTROL_CT_SC_TIME_MILLISECS 0x1000000
+#define MIXERCONTROL_CT_SC_LIST_SINGLE 0
+#define MIXERCONTROL_CT_SC_LIST_MULTIPLE 0x1000000
+#define MIXERCONTROL_CT_UNITS_MASK 0xFF0000
+#define MIXERCONTROL_CT_UNITS_CUSTOM 0
+#define MIXERCONTROL_CT_UNITS_BOOLEAN 0x10000
+#define MIXERCONTROL_CT_UNITS_SIGNED 0x20000
+#define MIXERCONTROL_CT_UNITS_UNSIGNED 0x30000
+#define MIXERCONTROL_CT_UNITS_DECIBELS 0x40000
+#define MIXERCONTROL_CT_UNITS_PERCENT 0x50000
+#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_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)
+#define MIXER_GETLINECONTROLSF_ALL 0
+#define MIXER_GETLINECONTROLSF_ONEBYID 1
+#define MIXER_GETLINECONTROLSF_ONEBYTYPE 2
+#define MIXER_GETLINECONTROLSF_QUERYMASK 15
+#define MIXER_GETCONTROLDETAILSF_VALUE 0
+#define MIXER_GETCONTROLDETAILSF_LISTTEXT 1
+#define MIXER_GETCONTROLDETAILSF_QUERYMASK 15
+#define MIXER_SETCONTROLDETAILSF_VALUE 0
+#define MIXER_SETCONTROLDETAILSF_CUSTOM 1
+#define MIXER_SETCONTROLDETAILSF_QUERYMASK 15
+#define TIMERR_NOERROR 0
+#define TIMERR_NOCANDO (TIMERR_BASE+1)
+#define TIMERR_STRUCT (TIMERR_BASE+33)
+#define TIME_ONESHOT 0
+#define TIME_PERIODIC 1
+#define TIME_CALLBACK_FUNCTION 0
+#define TIME_CALLBACK_EVENT_SET 16
+#define TIME_CALLBACK_EVENT_PULSE 32
+#if (WINVER >= 0x0501)
+#define TIME_KILL_SYNCHRONOUS 0x0100
+#endif
+#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 1
+#define JOY_BUTTON2 2
+#define JOY_BUTTON3 4
+#define JOY_BUTTON4 8
+#define JOY_BUTTON1CHG 256
+#define JOY_BUTTON2CHG 512
+#define JOY_BUTTON3CHG 1024
+#define JOY_BUTTON4CHG 2048
+#define JOY_BUTTON5 257
+#define JOY_BUTTON6 513
+#define JOY_BUTTON7 1025
+#define JOY_BUTTON8 2049
+#define JOY_BUTTON9 256
+#define JOY_BUTTON10 512
+#define JOY_BUTTON11 1024
+#define JOY_BUTTON12 2048
+#define JOY_BUTTON13 4096
+#define JOY_BUTTON14 8192
+#define JOY_BUTTON15 16384
+#define JOY_BUTTON16 32768
+#define JOY_BUTTON17 65536
+#define JOY_BUTTON18 0x20000
+#define JOY_BUTTON19 0x40000
+#define JOY_BUTTON20 0x80000
+#define JOY_BUTTON21 0x100000
+#define JOY_BUTTON22 0x200000
+#define JOY_BUTTON23 0x400000
+#define JOY_BUTTON24 0x800000
+#define JOY_BUTTON25 0x1000000
+#define JOY_BUTTON26 0x2000000
+#define JOY_BUTTON27 0x4000000
+#define JOY_BUTTON28 0x8000000
+#define JOY_BUTTON29 0x10000000
+#define JOY_BUTTON30 0x20000000
+#define JOY_BUTTON31 0x40000000
+#define JOY_BUTTON32 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	1
+#define JOY_RETURNY	2
+#define JOY_RETURNZ	4l
+#define JOY_RETURNR	8
+#define JOY_RETURNU	16
+#define JOY_RETURNV	32
+#define JOY_RETURNPOV	64
+#define JOY_RETURNBUTTONS	128
+#define JOY_RETURNRAWDATA	256
+#define JOY_RETURNPOVCTS	512
+#define JOY_RETURNCENTERED	1024
+#define JOY_USEDEADZONE	2048
+#define JOY_RETURNALL	(JOY_RETURNX|JOY_RETURNY|JOY_RETURNZ|JOY_RETURNR|JOY_RETURNU|JOY_RETURNV|JOY_RETURNPOV|JOY_RETURNBUTTONS)
+#define JOY_CAL_READALWAYS	0x10000
+#define JOY_CAL_READXYONLY	0x20000
+#define JOY_CAL_READ3	0x40000
+#define JOY_CAL_READ4	0x80000
+#define JOY_CAL_READXONLY	0x100000
+#define JOY_CAL_READYONLY	0x200000
+#define JOY_CAL_READ5	0x400000
+#define JOY_CAL_READ6	0x800000
+#define JOY_CAL_READZONLY	0x1000000
+#define JOY_CAL_READRONLY	0x2000000
+#define JOY_CAL_READUONLY	0x4000000
+#define JOY_CAL_READVONLY	0x8000000
+#define JOYSTICKID1 0
+#define JOYSTICKID2 1
+#define JOYCAPS_HASZ	1
+#define JOYCAPS_HASR	2
+#define JOYCAPS_HASU	4
+#define JOYCAPS_HASV	8
+#define JOYCAPS_HASPOV	16
+#define JOYCAPS_POV4DIR	32
+#define JOYCAPS_POVCTS	64
+#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 '+'
+#define MMIO_RWMODE 3
+#define MMIO_SHAREMODE 0x70
+#define MMIO_CREATE 0x1000
+#define MMIO_PARSE 256
+#define MMIO_DELETE 512
+#define MMIO_EXIST 0x4000
+#define MMIO_ALLOCBUF 0x10000
+#define MMIO_GETTEMP 0x20000
+#define MMIO_DIRTY 0x10000000
+#define MMIO_READ 0
+#define MMIO_WRITE 1
+#define MMIO_READWRITE 2
+#define MMIO_COMPAT 0
+#define MMIO_EXCLUSIVE 16
+#define MMIO_DENYWRITE 32
+#define MMIO_DENYREAD 0x30
+#define MMIO_DENYNONE 64
+#define MMIO_FHOPEN 16
+#define MMIO_EMPTYBUF 16
+#define MMIO_TOUPPER 16
+#define MMIO_INSTALLPROC 0x10000
+#define MMIO_GLOBALPROC 0x10000000
+#define MMIO_REMOVEPROC 0x20000
+#define MMIO_UNICODEPROC 0x1000000
+#define MMIO_FINDPROC 0x40000
+#define MMIO_FINDCHUNK 16
+#define MMIO_FINDRIFF 32
+#define MMIO_FINDLIST 64
+#define MMIO_CREATERIFF 32
+#define MMIO_CREATELIST 64
+#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 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 0x803
+#define MCI_CLOSE 0x804
+#define MCI_ESCAPE 0x805
+#define MCI_PLAY 0x806
+#define MCI_SEEK 0x807
+#define MCI_STOP 0x808
+#define MCI_PAUSE 0x809
+#define MCI_INFO 0x80A
+#define MCI_GETDEVCAPS 0x80B
+#define MCI_SPIN 0x80C
+#define MCI_SET 0x80D
+#define MCI_STEP 0x80E
+#define MCI_RECORD 0x80F
+#define MCI_SYSINFO 0x810
+#define MCI_BREAK 0x811
+#define MCI_SAVE 0x813
+#define MCI_STATUS 0x814
+#define MCI_CUE 0x830
+#define MCI_REALIZE 0x840
+#define MCI_WINDOW 0x841
+#define MCI_PUT 0x842
+#define MCI_WHERE 0x843
+#define MCI_FREEZE 0x844
+#define MCI_UNFREEZE 0x845
+#define MCI_LOAD 0x850
+#define MCI_CUT 0x851
+#define MCI_COPY 0x852
+#define MCI_PASTE 0x853
+#define MCI_UPDATE 0x854
+#define MCI_RESUME 0x855
+#define MCI_DELETE 0x856
+#define MCI_USER_MESSAGES (DRV_MCI_FIRST+0x400)
+#define MCI_LAST 0xFFF
+#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(t) ((BYTE)(t))
+#define MCI_MSF_SECOND(t) ((BYTE)(((WORD)(t))>>8))
+#define MCI_MSF_FRAME(t) ((BYTE)((t)>>16))
+#define MCI_MAKE_MSF(m,s,f) ((DWORD)(((BYTE)(m)|((WORD)(s)<<8))|(((DWORD)(BYTE)(f))<<16)))
+#define MCI_TMSF_TRACK(t) ((BYTE)(t))
+#define MCI_TMSF_MINUTE(t) ((BYTE)(((WORD)(t))>>8))
+#define MCI_TMSF_SECOND(t) ((BYTE)((t)>>16))
+#define MCI_TMSF_FRAME(t) ((BYTE)((t)>>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(t) ((BYTE)(t))
+#define MCI_HMS_MINUTE(t) ((BYTE)(((WORD)(t))>>8))
+#define MCI_HMS_SECOND(t) ((BYTE)((t)>>16))
+#define MCI_MAKE_HMS(h,m,s) ((DWORD)(((BYTE)(h)|((WORD)(m)<<8))|(((DWORD)(BYTE)(s))<<16)))
+#define MCI_NOTIFY_SUCCESSFUL 1
+#define MCI_NOTIFY_SUPERSEDED 2
+#define MCI_NOTIFY_ABORTED 4
+#define MCI_NOTIFY_FAILURE 8
+#define MCI_NOTIFY 1
+#define MCI_WAIT 2
+#define MCI_FROM 4
+#define MCI_TO 8
+#define MCI_TRACK 16
+#define MCI_OPEN_SHAREABLE 256
+#define MCI_OPEN_ELEMENT 512
+#define MCI_OPEN_ALIAS 1024
+#define MCI_OPEN_ELEMENT_ID 2048
+#define MCI_OPEN_TYPE_ID 0x1000
+#define MCI_OPEN_TYPE 0x2000
+#define MCI_SEEK_TO_START 256
+#define MCI_SEEK_TO_END 512
+#define MCI_STATUS_ITEM 256
+#define MCI_STATUS_START 512
+#define MCI_STATUS_LENGTH 1
+#define MCI_STATUS_POSITION 2
+#define MCI_STATUS_NUMBER_OF_TRACKS 3
+#define MCI_STATUS_MODE 4
+#define MCI_STATUS_MEDIA_PRESENT 5
+#define MCI_STATUS_TIME_FORMAT 6
+#define MCI_STATUS_READY 7
+#define MCI_STATUS_CURRENT_TRACK 8
+#define MCI_INFO_PRODUCT 256
+#define MCI_INFO_FILE 512
+#define MCI_INFO_MEDIA_UPC 1024
+#define MCI_INFO_MEDIA_IDENTITY 2048
+#define MCI_INFO_NAME 0x1000
+#define MCI_INFO_COPYRIGHT 0x2000
+#define MCI_GETDEVCAPS_ITEM 256
+#define MCI_GETDEVCAPS_CAN_RECORD 1
+#define MCI_GETDEVCAPS_HAS_AUDIO 2
+#define MCI_GETDEVCAPS_HAS_VIDEO 3
+#define MCI_GETDEVCAPS_DEVICE_TYPE 4
+#define MCI_GETDEVCAPS_USES_FILES 5
+#define MCI_GETDEVCAPS_COMPOUND_DEVICE 6
+#define MCI_GETDEVCAPS_CAN_EJECT 7
+#define MCI_GETDEVCAPS_CAN_PLAY 8
+#define MCI_GETDEVCAPS_CAN_SAVE 9
+#define MCI_SYSINFO_QUANTITY 256
+#define MCI_SYSINFO_OPEN 512
+#define MCI_SYSINFO_NAME 1024
+#define MCI_SYSINFO_INSTALLNAME 2048
+#define MCI_SET_DOOR_OPEN 256
+#define MCI_SET_DOOR_CLOSED 512
+#define MCI_SET_TIME_FORMAT 1024
+#define MCI_SET_AUDIO 2048
+#define MCI_SET_VIDEO 0x1000
+#define MCI_SET_ON 0x2000
+#define MCI_SET_OFF 0x4000
+#define MCI_SET_AUDIO_ALL 0
+#define MCI_SET_AUDIO_LEFT 1
+#define MCI_SET_AUDIO_RIGHT 2
+#define MCI_BREAK_KEY 256
+#define MCI_BREAK_HWND 512
+#define MCI_BREAK_OFF 1024
+#define MCI_RECORD_INSERT 256
+#define MCI_RECORD_OVERWRITE 512
+#define MCI_SAVE_FILE 256
+#define MCI_LOAD_FILE 256
+#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 0x10000
+#define MCI_VD_PLAY_FAST 0x20000
+#define MCI_VD_PLAY_SPEED 0x40000
+#define MCI_VD_PLAY_SCAN 0x80000
+#define MCI_VD_PLAY_SLOW 0x100000
+#define MCI_VD_SEEK_REVERSE 0x10000
+#define MCI_VD_STATUS_SPEED 0x4002
+#define MCI_VD_STATUS_FORWARD 0x4003
+#define MCI_VD_STATUS_MEDIA_TYPE 0x4004
+#define MCI_VD_STATUS_SIDE 0x4005
+#define MCI_VD_STATUS_DISC_SIZE 0x4006
+#define MCI_VD_GETDEVCAPS_CLV 0x10000
+#define MCI_VD_GETDEVCAPS_CAV 0x20000
+#define MCI_VD_SPIN_UP 0x10000
+#define MCI_VD_SPIN_DOWN 0x20000
+#define MCI_VD_GETDEVCAPS_CAN_REVERSE 0x4002
+#define MCI_VD_GETDEVCAPS_FAST_RATE 0x4003
+#define MCI_VD_GETDEVCAPS_SLOW_RATE 0x4004
+#define MCI_VD_GETDEVCAPS_NORMAL_RATE 0x4005
+#define MCI_VD_STEP_FRAMES 0x10000
+#define MCI_VD_STEP_REVERSE 0x20000
+#define MCI_VD_ESCAPE_STRING 256
+#define MCI_CDA_STATUS_TYPE_TRACK 0x4001
+#define MCI_CDA_TRACK_AUDIO MCI_CD_OFFSET
+#define MCI_CDA_TRACK_OTHER (MCI_CD_OFFSET+1)
+#define MCI_WAVE_PCM MCI_WAVE_OFFSET
+#define MCI_WAVE_MAPPER (MCI_WAVE_OFFSET+1)
+#define MCI_WAVE_OPEN_BUFFER 0x10000
+#define MCI_WAVE_SET_FORMATTAG 0x10000
+#define MCI_WAVE_SET_CHANNELS 0x20000
+#define MCI_WAVE_SET_SAMPLESPERSEC 0x40000
+#define MCI_WAVE_SET_AVGBYTESPERSEC 0x80000
+#define MCI_WAVE_SET_BLOCKALIGN 0x100000
+#define MCI_WAVE_SET_BITSPERSAMPLE 0x200000
+#define MCI_WAVE_INPUT 0x400000
+#define MCI_WAVE_OUTPUT 0x800000
+#define MCI_WAVE_STATUS_FORMATTAG 0x4001
+#define MCI_WAVE_STATUS_CHANNELS 0x4002
+#define MCI_WAVE_STATUS_SAMPLESPERSEC 0x4003
+#define MCI_WAVE_STATUS_AVGBYTESPERSEC 0x4004
+#define MCI_WAVE_STATUS_BLOCKALIGN 0x4005
+#define MCI_WAVE_STATUS_BITSPERSAMPLE 0x4006
+#define MCI_WAVE_STATUS_LEVEL 0x4007
+#define MCI_WAVE_SET_ANYINPUT 0x4000000
+#define MCI_WAVE_SET_ANYOUTPUT 0x8000000
+#define MCI_WAVE_GETDEVCAPS_INPUTS 0x4001
+#define MCI_WAVE_GETDEVCAPS_OUTPUTS 0x4002
+#define MCI_SEQ_DIV_PPQN MCI_SEQ_OFFSET
+#define MCI_SEQ_DIV_SMPTE_24 (MCI_SEQ_OFFSET+1)
+#define MCI_SEQ_DIV_SMPTE_25 (MCI_SEQ_OFFSET+2)
+#define MCI_SEQ_DIV_SMPTE_30DROP (MCI_SEQ_OFFSET+3)
+#define MCI_SEQ_DIV_SMPTE_30 (MCI_SEQ_OFFSET+4)
+#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 0x4002
+#define MCI_SEQ_STATUS_PORT 0x4003
+#define MCI_SEQ_STATUS_SLAVE 0x4007
+#define MCI_SEQ_STATUS_MASTER 0x4008
+#define MCI_SEQ_STATUS_OFFSET 0x4009
+#define MCI_SEQ_STATUS_DIVTYPE 0x400A
+#define MCI_SEQ_STATUS_NAME 0x400B
+#define MCI_SEQ_STATUS_COPYRIGHT 0x400C
+#define MCI_SEQ_SET_TEMPO 0x10000
+#define MCI_SEQ_SET_PORT 0x20000
+#define MCI_SEQ_SET_SLAVE 0x40000
+#define MCI_SEQ_SET_MASTER 0x80000
+#define MCI_SEQ_SET_OFFSET 0x1000000
+#define MCI_ANIM_OPEN_WS 0x10000
+#define MCI_ANIM_OPEN_PARENT 0x20000
+#define MCI_ANIM_OPEN_NOSTATIC 0x40000
+#define MCI_ANIM_PLAY_SPEED 0x10000
+#define MCI_ANIM_PLAY_REVERSE 0x20000
+#define MCI_ANIM_PLAY_FAST 0x40000
+#define MCI_ANIM_PLAY_SLOW 0x80000
+#define MCI_ANIM_PLAY_SCAN 0x100000
+#define MCI_ANIM_STEP_REVERSE 0x10000
+#define MCI_ANIM_STEP_FRAMES 0x20000
+#define MCI_ANIM_STATUS_SPEED 0x4001
+#define MCI_ANIM_STATUS_FORWARD 0x4002
+#define MCI_ANIM_STATUS_HWND 0x4003
+#define MCI_ANIM_STATUS_HPAL 0x4004
+#define MCI_ANIM_STATUS_STRETCH 0x4005
+#define MCI_ANIM_INFO_TEXT 0x10000
+#define MCI_ANIM_GETDEVCAPS_CAN_REVERSE 0x4001
+#define MCI_ANIM_GETDEVCAPS_FAST_RATE 0x4002
+#define MCI_ANIM_GETDEVCAPS_SLOW_RATE 0x4003
+#define MCI_ANIM_GETDEVCAPS_NORMAL_RATE 0x4004
+#define MCI_ANIM_GETDEVCAPS_PALETTES 0x4006
+#define MCI_ANIM_GETDEVCAPS_CAN_STRETCH 0x4007
+#define MCI_ANIM_GETDEVCAPS_MAX_WINDOWS 0x4008
+#define MCI_ANIM_REALIZE_NORM 0x10000
+#define MCI_ANIM_REALIZE_BKGD 0x20000
+#define MCI_ANIM_WINDOW_HWND 0x10000
+#define MCI_ANIM_WINDOW_STATE 0x40000
+#define MCI_ANIM_WINDOW_TEXT 0x80000
+#define MCI_ANIM_WINDOW_ENABLE_STRETCH 0x100000
+#define MCI_ANIM_WINDOW_DISABLE_STRETCH 0x200000
+#define MCI_ANIM_WINDOW_DEFAULT 0xL
+#define MCI_ANIM_RECT 0x10000
+#define MCI_ANIM_PUT_SOURCE 0x20000
+#define MCI_ANIM_PUT_DESTINATION 0x40000
+#define MCI_ANIM_WHERE_SOURCE 0x20000
+#define MCI_ANIM_WHERE_DESTINATION 0x40000
+#define MCI_ANIM_UPDATE_HDC 0x20000
+#define MCI_OVLY_OPEN_WS 0x10000
+#define MCI_OVLY_OPEN_PARENT 0x20000
+#define MCI_OVLY_STATUS_HWND 0x4001
+#define MCI_OVLY_STATUS_STRETCH 0x4002
+#define MCI_OVLY_INFO_TEXT 0x10000
+#define MCI_OVLY_GETDEVCAPS_CAN_STRETCH 0x4001
+#define MCI_OVLY_GETDEVCAPS_CAN_FREEZE 0x4002
+#define MCI_OVLY_GETDEVCAPS_MAX_WINDOWS 0x4003
+#define MCI_OVLY_WINDOW_HWND 0x10000
+#define MCI_OVLY_WINDOW_STATE 0x40000
+#define MCI_OVLY_WINDOW_TEXT 0x80000
+#define MCI_OVLY_WINDOW_ENABLE_STRETCH 0x100000
+#define MCI_OVLY_WINDOW_DISABLE_STRETCH 0x200000
+#define MCI_OVLY_WINDOW_DEFAULT 0xL
+#define MCI_OVLY_RECT 0x10000
+#define MCI_OVLY_PUT_SOURCE 0x20000
+#define MCI_OVLY_PUT_DESTINATION 0x40000
+#define MCI_OVLY_PUT_FRAME 0x80000
+#define MCI_OVLY_PUT_VIDEO 0x100000
+#define MCI_OVLY_WHERE_SOURCE 0x20000
+#define MCI_OVLY_WHERE_DESTINATION 0x40000
+#define MCI_OVLY_WHERE_FRAME 0x80000
+#define MCI_OVLY_WHERE_VIDEO 0x100000
+#define NEWTRANSPARENT 3
+#define QUERYROPSUPPORT 40
+#define SELECTDIB 41
+#define DIBINDEX(n) MAKELONG((n),0x10FF)
+#define SC_SCREENSAVE 0xF140
+#define CAPS1 94
+#define C1_TRANSPARENT 1
+#ifndef SEEK_SET
+#define SEEK_SET 0
+#endif
+#ifndef SEEK_CUR
+#define SEEK_CUR 1
+#endif
+#ifndef SEEK_END
+#define SEEK_END 2
+#endif
+
+typedef DWORD MCIERROR;
+typedef UINT MCIDEVICEID;
+typedef UINT(CALLBACK *YIELDPROC)(MCIDEVICEID,DWORD);
+typedef UINT MMVERSION;
+typedef UINT MMRESULT;
+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,*LPMMTIME;
+DECLARE_HANDLE(HDRVR);
+typedef struct tagDRVCONFIGINFO {
+	DWORD dwDCISize;
+	LPCWSTR lpszDCISectionName;
+	LPCWSTR lpszDCIAliasName;
+} DRVCONFIGINFO,*PDRVCONFIGINFO,*LPDRVCONFIGINFO;
+typedef struct DRVCONFIGINFOEX {
+	DWORD dwDCISize;
+	LPCWSTR lpszDCISectionName;
+	LPCWSTR lpszDCIAliasName;
+	DWORD dnDevNode;
+} DRVCONFIGINFOEX,*PDRVCONFIGINFOEX,*LPDRVCONFIGINFOEX;
+typedef LRESULT(CALLBACK* DRIVERPROC)(DWORD,HDRVR,UINT,LPARAM,LPARAM);
+typedef void (CALLBACK DRVCALLBACK)(HDRVR,UINT,DWORD,DWORD,DWORD);
+typedef DRVCALLBACK *LPDRVCALLBACK;
+typedef DRVCALLBACK *PDRVCALLBACK;
+DECLARE_HANDLE(HWAVE);
+DECLARE_HANDLE(HWAVEIN);
+DECLARE_HANDLE(HWAVEOUT);
+typedef HWAVEIN *LPHWAVEIN;
+typedef HWAVEOUT *LPHWAVEOUT;
+typedef DRVCALLBACK WAVECALLBACK;
+typedef WAVECALLBACK *LPWAVECALLBACK;
+typedef struct wavehdr_tag {
+	LPSTR lpData;
+	DWORD dwBufferLength;
+	DWORD dwBytesRecorded;
+	DWORD dwUser;
+	DWORD dwFlags;
+	DWORD dwLoops;
+	struct wavehdr_tag *lpNext;
+	DWORD reserved;
+} WAVEHDR,*PWAVEHDR,*LPWAVEHDR;
+typedef struct tagWAVEOUTCAPSA {
+	WORD wMid;
+	WORD wPid;
+	MMVERSION vDriverVersion;
+	CHAR szPname[MAXPNAMELEN];
+	DWORD dwFormats;
+	WORD wChannels;
+	WORD wReserved1;
+	DWORD dwSupport;
+} WAVEOUTCAPSA,*PWAVEOUTCAPSA,*LPWAVEOUTCAPSA;
+typedef struct tagWAVEOUTCAPSW {
+	WORD wMid;
+	WORD wPid;
+	MMVERSION vDriverVersion;
+	WCHAR szPname[MAXPNAMELEN];
+	DWORD dwFormats;
+	WORD wChannels;
+	WORD wReserved1;
+	DWORD dwSupport;
+} WAVEOUTCAPSW,*PWAVEOUTCAPSW,*LPWAVEOUTCAPSW;
+typedef struct tagWAVEINCAPSA {
+	WORD wMid;
+	WORD wPid;
+	MMVERSION vDriverVersion;
+	CHAR szPname[MAXPNAMELEN];
+	DWORD dwFormats;
+	WORD wChannels;
+	WORD wReserved1;
+} WAVEINCAPSA,*PWAVEINCAPSA,*LPWAVEINCAPSA;
+typedef struct tagWAVEINCAPSW {
+	WORD wMid;
+	WORD wPid;
+	MMVERSION vDriverVersion;
+	WCHAR szPname[MAXPNAMELEN];
+	DWORD dwFormats;
+	WORD wChannels;
+	WORD wReserved1;
+} WAVEINCAPSW,*PWAVEINCAPSW,*LPWAVEINCAPSW;
+typedef struct waveformat_tag {
+	WORD wFormatTag;
+	WORD nChannels;
+	DWORD nSamplesPerSec;
+	DWORD nAvgBytesPerSec;
+	WORD nBlockAlign;
+} WAVEFORMAT,*PWAVEFORMAT,*LPWAVEFORMAT;
+typedef struct pcmwaveformat_tag {
+	WAVEFORMAT wf;
+	WORD wBitsPerSample;
+} PCMWAVEFORMAT, *PPCMWAVEFORMAT,*LPPCMWAVEFORMAT;
+#ifndef _LPCWAVEFORMATEX_DEFINED
+#define _LPCWAVEFORMATEX_DEFINED
+#define _WAVEFORMATEX_
+typedef struct tWAVEFORMATEX {
+	WORD wFormatTag;
+	WORD nChannels;
+	DWORD nSamplesPerSec;
+	DWORD nAvgBytesPerSec;
+	WORD nBlockAlign;
+	WORD wBitsPerSample;
+	WORD cbSize;
+} WAVEFORMATEX,*PWAVEFORMATEX,*LPWAVEFORMATEX;
+typedef const WAVEFORMATEX *LPCWAVEFORMATEX;
+#endif
+DECLARE_HANDLE(HMIDI);
+DECLARE_HANDLE(HMIDIIN);
+DECLARE_HANDLE(HMIDIOUT);
+DECLARE_HANDLE(HMIDISTRM);
+typedef HMIDI *LPHMIDI;
+typedef HMIDIIN *LPHMIDIIN;
+typedef HMIDIOUT *LPHMIDIOUT;
+typedef HMIDISTRM *LPHMIDISTRM;
+typedef DRVCALLBACK MIDICALLBACK;
+typedef MIDICALLBACK *LPMIDICALLBACK;
+typedef WORD PATCHARRAY[MIDIPATCHSIZE];
+typedef WORD *LPPATCHARRAY;
+typedef WORD KEYARRAY[MIDIPATCHSIZE];
+typedef WORD *LPKEYARRAY;
+typedef struct tagMIDIOUTCAPSA {
+	WORD wMid;
+	WORD wPid;
+	MMVERSION vDriverVersion;
+	CHAR szPname[MAXPNAMELEN];
+	WORD wTechnology;
+	WORD wVoices;
+	WORD wNotes;
+	WORD wChannelMask;
+	DWORD dwSupport;
+} MIDIOUTCAPSA,*PMIDIOUTCAPSA,*LPMIDIOUTCAPSA;
+typedef struct tagMIDIOUTCAPSW {
+	WORD wMid;
+	WORD wPid;
+	MMVERSION vDriverVersion;
+	WCHAR szPname[MAXPNAMELEN];
+	WORD wTechnology;
+	WORD wVoices;
+	WORD wNotes;
+	WORD wChannelMask;
+	DWORD dwSupport;
+} MIDIOUTCAPSW,*PMIDIOUTCAPSW,*LPMIDIOUTCAPSW;
+typedef struct tagMIDIINCAPSA {
+	WORD wMid;
+	WORD wPid;
+	MMVERSION vDriverVersion;
+	CHAR szPname[MAXPNAMELEN];
+	DWORD dwSupport;
+} MIDIINCAPSA,*PMIDIINCAPSA,*LPMIDIINCAPSA;
+typedef struct tagMIDIINCAPSW {
+	WORD wMid;
+	WORD wPid;
+	MMVERSION vDriverVersion;
+	WCHAR szPname[MAXPNAMELEN];
+	DWORD dwSupport;
+} MIDIINCAPSW,*PMIDIINCAPSW,*NPMIDIINCAPSW,*LPMIDIINCAPSW;
+typedef struct midihdr_tag {
+	LPSTR lpData;
+	DWORD dwBufferLength;
+	DWORD dwBytesRecorded;
+	DWORD dwUser;
+	DWORD dwFlags;
+	struct midihdr_tag *lpNext;
+	DWORD reserved;
+	DWORD dwOffset;
+	DWORD dwReserved[8];
+} MIDIHDR,*PMIDIHDR,*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;
+typedef struct midiproptimediv_tag {
+	DWORD cbStruct;
+	DWORD dwTimeDiv;
+} MIDIPROPTIMEDIV,*LPMIDIPROPTIMEDIV;
+typedef struct midiproptempo_tag {
+	DWORD cbStruct;
+	DWORD dwTempo;
+} MIDIPROPTEMPO,*LPMIDIPROPTEMPO;
+typedef struct tagAUXCAPSA {
+	WORD wMid;
+	WORD wPid;
+	MMVERSION vDriverVersion;
+	CHAR szPname[MAXPNAMELEN];
+	WORD wTechnology;
+	WORD wReserved1;
+	DWORD dwSupport;
+} AUXCAPSA,*PAUXCAPSA,*LPAUXCAPSA;
+typedef struct tagAUXCAPSW {
+	WORD wMid;
+	WORD wPid;
+	MMVERSION vDriverVersion;
+	WCHAR szPname[MAXPNAMELEN];
+	WORD wTechnology;
+	WORD wReserved1;
+	DWORD dwSupport;
+} AUXCAPSW,*PAUXCAPSW,*LPAUXCAPSW;
+DECLARE_HANDLE(HMIXEROBJ);
+typedef HMIXEROBJ *LPHMIXEROBJ;
+DECLARE_HANDLE(HMIXER);
+typedef HMIXER *LPHMIXER;
+typedef struct tagMIXERCAPSA {
+	WORD wMid;
+	WORD wPid;
+	MMVERSION vDriverVersion;
+	CHAR szPname[MAXPNAMELEN];
+	DWORD fdwSupport;
+	DWORD cDestinations;
+} MIXERCAPSA,*PMIXERCAPSA,*LPMIXERCAPSA;
+typedef struct tagMIXERCAPSW {
+	WORD wMid;
+	WORD wPid;
+	MMVERSION vDriverVersion;
+	WCHAR szPname[MAXPNAMELEN];
+	DWORD fdwSupport;
+	DWORD cDestinations;
+} MIXERCAPSW,*PMIXERCAPSW,*LPMIXERCAPSW;
+typedef struct tagMIXERLINEA {
+	DWORD cbStruct;
+	DWORD dwDestination;
+	DWORD dwSource;
+	DWORD dwLineID;
+	DWORD fdwLine;
+	DWORD dwUser;
+	DWORD dwComponentType;
+	DWORD cChannels;
+	DWORD cConnections;
+	DWORD cControls;
+	CHAR szShortName[MIXER_SHORT_NAME_CHARS];
+	CHAR szName[MIXER_LONG_NAME_CHARS];
+	struct {
+		DWORD dwType;
+		DWORD dwDeviceID;
+		WORD wMid;
+		WORD wPid;
+		MMVERSION vDriverVersion;
+		CHAR szPname[MAXPNAMELEN];
+	} Target;
+} MIXERLINEA,*PMIXERLINEA,*LPMIXERLINEA;
+typedef struct tagMIXERLINEW {
+	DWORD cbStruct;
+	DWORD dwDestination;
+	DWORD dwSource;
+	DWORD dwLineID;
+	DWORD fdwLine;
+	DWORD dwUser;
+	DWORD dwComponentType;
+	DWORD cChannels;
+	DWORD cConnections;
+	DWORD cControls;
+	WCHAR szShortName[MIXER_SHORT_NAME_CHARS];
+	WCHAR szName[MIXER_LONG_NAME_CHARS];
+	struct {
+		DWORD dwType;
+		DWORD dwDeviceID;
+		WORD wMid;
+		WORD wPid;
+		MMVERSION vDriverVersion;
+		WCHAR szPname[MAXPNAMELEN];
+	} Target;
+} MIXERLINEW,*PMIXERLINEW,*LPMIXERLINEW;
+typedef struct tagMIXERCONTROLA {
+	DWORD cbStruct;
+	DWORD dwControlID;
+	DWORD dwControlType;
+	DWORD fdwControl;
+	DWORD cMultipleItems;
+	CHAR szShortName[MIXER_SHORT_NAME_CHARS];
+	CHAR szName[MIXER_LONG_NAME_CHARS];
+	union {
+		_ANONYMOUS_STRUCT struct {
+			LONG lMinimum;
+			LONG lMaximum;
+		}_STRUCT_NAME(s);
+		_ANONYMOUS_STRUCT struct {
+			DWORD dwMinimum;
+			DWORD dwMaximum;
+		}_STRUCT_NAME(s1);
+		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[MIXER_SHORT_NAME_CHARS];
+	WCHAR szName[MIXER_LONG_NAME_CHARS];
+	union {
+		_ANONYMOUS_STRUCT struct {
+			LONG lMinimum;
+			LONG lMaximum;
+		}_STRUCT_NAME(s);
+		_ANONYMOUS_STRUCT struct {
+			DWORD dwMinimum;
+			DWORD dwMaximum;
+		}_STRUCT_NAME(s1);
+		DWORD dwReserved[6];
+	} Bounds;
+	union {
+		DWORD cSteps;
+		DWORD cbCustomData;
+		DWORD dwReserved[6];
+	} Metrics;
+} MIXERCONTROLW,*PMIXERCONTROLW,*LPMIXERCONTROLW;
+typedef struct tagMIXERLINECONTROLSA {
+	DWORD cbStruct;
+	DWORD dwLineID;
+	_ANONYMOUS_UNION union {
+		DWORD dwControlID;
+		DWORD dwControlType;
+	} DUMMYUNIONNAME;
+	DWORD cControls;
+	DWORD cbmxctrl;
+	LPMIXERCONTROLA pamxctrl;
+} MIXERLINECONTROLSA,*PMIXERLINECONTROLSA,*LPMIXERLINECONTROLSA;
+typedef struct tagMIXERLINECONTROLSW {
+	DWORD cbStruct;
+	DWORD dwLineID;
+	_ANONYMOUS_UNION union {
+		DWORD dwControlID;
+		DWORD dwControlType;
+	} DUMMYUNIONNAME;
+	DWORD cControls;
+	DWORD cbmxctrl;
+	LPMIXERCONTROLW pamxctrl;
+} MIXERLINECONTROLSW,*PMIXERLINECONTROLSW,*LPMIXERLINECONTROLSW;
+typedef struct tMIXERCONTROLDETAILS {
+	DWORD cbStruct;
+	DWORD dwControlID;
+	DWORD cChannels;
+	_ANONYMOUS_UNION union {
+		HWND hwndOwner;
+		DWORD cMultipleItems;
+	} DUMMYUNIONNAME;
+	DWORD cbDetails;
+	PVOID paDetails;
+} MIXERCONTROLDETAILS,*PMIXERCONTROLDETAILS,*LPMIXERCONTROLDETAILS;
+typedef struct tagMIXERCONTROLDETAILS_LISTTEXTA {
+	DWORD dwParam1;
+	DWORD dwParam2;
+	CHAR szName[MIXER_LONG_NAME_CHARS];
+} MIXERCONTROLDETAILS_LISTTEXTA,*PMIXERCONTROLDETAILS_LISTTEXTA,*LPMIXERCONTROLDETAILS_LISTTEXTA;
+typedef struct tagMIXERCONTROLDETAILS_LISTTEXTW {
+	DWORD dwParam1;
+	DWORD dwParam2;
+	WCHAR szName[MIXER_LONG_NAME_CHARS];
+} MIXERCONTROLDETAILS_LISTTEXTW,*PMIXERCONTROLDETAILS_LISTTEXTW,*LPMIXERCONTROLDETAILS_LISTTEXTW;
+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;
+typedef void(CALLBACK TIMECALLBACK)(UINT,UINT,DWORD,DWORD,DWORD);
+typedef TIMECALLBACK *LPTIMECALLBACK;
+typedef struct timecaps_tag {
+	UINT wPeriodMin;
+	UINT wPeriodMax;
+} TIMECAPS,*PTIMECAPS,*LPTIMECAPS;
+typedef struct tagJOYCAPSA {
+	WORD wMid;
+	WORD wPid;
+	CHAR szPname[MAXPNAMELEN];
+	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[MAXPNAMELEN];
+	CHAR szOEMVxD[MAX_JOYSTICKOEMVXDNAME];
+} JOYCAPSA,*PJOYCAPSA,*LPJOYCAPSA;
+typedef struct tagJOYCAPSW {
+	WORD wMid;
+	WORD wPid;
+	WCHAR szPname[MAXPNAMELEN];
+	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[MAXPNAMELEN];
+	WCHAR szOEMVxD[MAX_JOYSTICKOEMVXDNAME];
+} JOYCAPSW,*PJOYCAPSW,*LPJOYCAPSW;
+typedef struct joyinfo_tag {
+	UINT wXpos;
+	UINT wYpos;
+	UINT wZpos;
+	UINT wButtons;
+} JOYINFO,*PJOYINFO,*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,*LPJOYINFOEX;
+typedef DWORD FOURCC;
+typedef char *HPSTR;
+DECLARE_HANDLE(HMMIO);
+typedef LRESULT (CALLBACK MMIOPROC)(LPSTR,UINT,LPARAM,LPARAM);
+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,*LPMMIOINFO;
+typedef const MMIOINFO *LPCMMIOINFO;
+typedef struct _MMCKINFO {
+	FOURCC ckid;
+	DWORD cksize;
+	FOURCC fccType;
+	DWORD dwDataOffset;
+	DWORD dwFlags;
+} MMCKINFO,*PMMCKINFO,*LPMMCKINFO;
+typedef const MMCKINFO *LPCMMCKINFO;
+typedef struct tagMCI_GENERIC_PARMS {
+	DWORD dwCallback;
+} MCI_GENERIC_PARMS,*PMCI_GENERIC_PARMS,*LPMCI_GENERIC_PARMS;
+typedef struct tagMCI_OPEN_PARMSA {
+	DWORD dwCallback;
+	MCIDEVICEID wDeviceID;
+	LPCSTR lpstrDeviceType;
+	LPCSTR lpstrElementName;
+	LPCSTR lpstrAlias;
+} MCI_OPEN_PARMSA,*PMCI_OPEN_PARMSA,*LPMCI_OPEN_PARMSA;
+typedef struct tagMCI_OPEN_PARMSW {
+	DWORD dwCallback;
+	MCIDEVICEID wDeviceID;
+	LPCWSTR lpstrDeviceType;
+	LPCWSTR lpstrElementName;
+	LPCWSTR lpstrAlias;
+} MCI_OPEN_PARMSW,*PMCI_OPEN_PARMSW,*LPMCI_OPEN_PARMSW;
+typedef struct tagMCI_PLAY_PARMS {
+	DWORD dwCallback;
+	DWORD dwFrom;
+	DWORD dwTo;
+} MCI_PLAY_PARMS,*PMCI_PLAY_PARMS,*LPMCI_PLAY_PARMS;
+typedef struct tagMCI_SEEK_PARMS {
+	DWORD dwCallback;
+	DWORD dwTo;
+} MCI_SEEK_PARMS, *PMCI_SEEK_PARMS,*LPMCI_SEEK_PARMS;
+typedef struct tagMCI_STATUS_PARMS {
+	DWORD dwCallback;
+	DWORD dwReturn;
+	DWORD dwItem;
+	DWORD dwTrack;
+} MCI_STATUS_PARMS,*PMCI_STATUS_PARMS,*LPMCI_STATUS_PARMS;
+typedef struct tagMCI_INFO_PARMSA {
+	DWORD dwCallback;
+	LPSTR lpstrReturn;
+	DWORD dwRetSize;
+} MCI_INFO_PARMSA,*LPMCI_INFO_PARMSA;
+typedef struct tagMCI_INFO_PARMSW {
+	DWORD dwCallback;
+	LPWSTR lpstrReturn;
+	DWORD dwRetSize;
+} MCI_INFO_PARMSW,*LPMCI_INFO_PARMSW;
+typedef struct tagMCI_GETDEVCAPS_PARMS {
+	DWORD dwCallback;
+	DWORD dwReturn;
+	DWORD dwItem;
+} MCI_GETDEVCAPS_PARMS,*PMCI_GETDEVCAPS_PARMS,*LPMCI_GETDEVCAPS_PARMS;
+typedef struct tagMCI_SYSINFO_PARMSA {
+	DWORD dwCallback;
+	LPSTR lpstrReturn;
+	DWORD dwRetSize;
+	DWORD dwNumber;
+	UINT wDeviceType;
+} MCI_SYSINFO_PARMSA,*PMCI_SYSINFO_PARMSA,*LPMCI_SYSINFO_PARMSA;
+typedef struct tagMCI_SYSINFO_PARMSW {
+	DWORD dwCallback;
+	LPWSTR lpstrReturn;
+	DWORD dwRetSize;
+	DWORD dwNumber;
+	UINT wDeviceType;
+} MCI_SYSINFO_PARMSW,*PMCI_SYSINFO_PARMSW,*LPMCI_SYSINFO_PARMSW;
+typedef struct tagMCI_SET_PARMS {
+	DWORD dwCallback;
+	DWORD dwTimeFormat;
+	DWORD dwAudio;
+} MCI_SET_PARMS,*PMCI_SET_PARMS,*LPMCI_SET_PARMS;
+typedef struct tagMCI_BREAK_PARMS {
+	DWORD dwCallback;
+	int nVirtKey;
+	HWND hwndBreak;
+} MCI_BREAK_PARMS,*PMCI_BREAK_PARMS,*LPMCI_BREAK_PARMS;
+typedef struct tagMCI_SAVE_PARMSA {
+	DWORD dwCallback;
+	LPCSTR lpfilename;
+} MCI_SAVE_PARMSA,*PMCI_SAVE_PARMSA,*LPMCI_SAVE_PARMSA;
+typedef struct tagMCI_SAVE_PARMSW {
+	DWORD dwCallback;
+	LPCWSTR lpfilename;
+} MCI_SAVE_PARMSW,*PMCI_SAVE_PARMSW,*LPMCI_SAVE_PARMSW;
+typedef struct tagMCI_LOAD_PARMSA {
+	DWORD dwCallback;
+	LPCSTR lpfilename;
+} MCI_LOAD_PARMSA,*PMCI_LOAD_PARMSA,*LPMCI_LOAD_PARMSA;
+typedef struct tagMCI_LOAD_PARMSW {
+	DWORD dwCallback;
+	LPCWSTR lpfilename;
+} MCI_LOAD_PARMSW,*PMCI_LOAD_PARMSW,*LPMCI_LOAD_PARMSW;
+typedef struct tagMCI_RECORD_PARMS {
+	DWORD dwCallback;
+	DWORD dwFrom;
+	DWORD dwTo;
+} MCI_RECORD_PARMS,*LPMCI_RECORD_PARMS;
+typedef struct tagMCI_VD_PLAY_PARMS {
+	DWORD 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 dwCallback;
+	DWORD dwFrames;
+} MCI_VD_STEP_PARMS,*PMCI_VD_STEP_PARMS,*LPMCI_VD_STEP_PARMS;
+typedef struct tagMCI_VD_ESCAPE_PARMSA {
+	DWORD dwCallback;
+	LPCSTR lpstrCommand;
+} MCI_VD_ESCAPE_PARMSA,*PMCI_VD_ESCAPE_PARMSA,*LPMCI_VD_ESCAPE_PARMSA;
+typedef struct tagMCI_VD_ESCAPE_PARMSW {
+	DWORD dwCallback;
+	LPCWSTR lpstrCommand;
+} MCI_VD_ESCAPE_PARMSW,*PMCI_VD_ESCAPE_PARMSW,*LPMCI_VD_ESCAPE_PARMSW;
+typedef struct tagMCI_WAVE_OPEN_PARMSA {
+	DWORD 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 dwCallback;
+	MCIDEVICEID wDeviceID;
+	LPCWSTR lpstrDeviceType;
+	LPCWSTR lpstrElementName;
+	LPCWSTR lpstrAlias;
+	DWORD dwBufferSeconds;
+} MCI_WAVE_OPEN_PARMSW,*PMCI_WAVE_OPEN_PARMSW,*LPMCI_WAVE_OPEN_PARMSW;
+typedef struct tagMCI_WAVE_DELETE_PARMS {
+	DWORD dwCallback;
+	DWORD dwFrom;
+	DWORD dwTo;
+} MCI_WAVE_DELETE_PARMS, *PMCI_WAVE_DELETE_PARMS,*LPMCI_WAVE_DELETE_PARMS;
+typedef struct tagMCI_WAVE_SET_PARMS {
+	DWORD 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;
+
+LRESULT WINAPI CloseDriver(HDRVR,LONG,LONG);
+HDRVR WINAPI OpenDriver(LPCWSTR,LPCWSTR,LONG);
+LRESULT WINAPI SendDriverMessage(HDRVR,UINT,LONG,LONG);
+HMODULE WINAPI DrvGetModuleHandle(HDRVR);
+HMODULE WINAPI GetDriverModuleHandle(HDRVR);
+LRESULT WINAPI DefDriverProc(DWORD,HDRVR,UINT,LPARAM,LPARAM);
+UINT WINAPI mmsystemGetVersion(void);
+#define OutputDebugStr OutputDebugString
+BOOL WINAPI sndPlaySoundA(LPCSTR,UINT);
+BOOL WINAPI sndPlaySoundW(LPCWSTR,UINT);
+BOOL WINAPI PlaySoundA(LPCSTR,HMODULE,DWORD);
+BOOL WINAPI PlaySoundW(LPCWSTR,HMODULE,DWORD);
+UINT WINAPI waveOutGetNumDevs(void);
+MMRESULT WINAPI waveOutGetDevCapsA(UINT,LPWAVEOUTCAPSA,UINT);
+MMRESULT WINAPI waveOutGetDevCapsW(UINT,LPWAVEOUTCAPSW,UINT);
+MMRESULT WINAPI waveOutGetVolume(HWAVEOUT,PDWORD);
+MMRESULT WINAPI waveOutSetVolume(HWAVEOUT,DWORD);
+MMRESULT WINAPI waveOutGetErrorTextA(MMRESULT,LPSTR,UINT);
+MMRESULT WINAPI waveOutGetErrorTextW(MMRESULT,LPWSTR,UINT);
+MMRESULT WINAPI waveOutOpen(LPHWAVEOUT,UINT,LPCWAVEFORMATEX,DWORD,DWORD,DWORD);
+MMRESULT WINAPI waveOutClose(HWAVEOUT);
+MMRESULT WINAPI waveOutPrepareHeader(HWAVEOUT,LPWAVEHDR,UINT);
+MMRESULT WINAPI waveOutUnprepareHeader(HWAVEOUT,LPWAVEHDR,UINT);
+MMRESULT WINAPI waveOutWrite(HWAVEOUT,LPWAVEHDR,UINT);
+MMRESULT WINAPI waveOutPause(HWAVEOUT);
+MMRESULT WINAPI waveOutRestart(HWAVEOUT);
+MMRESULT WINAPI waveOutReset(HWAVEOUT);
+MMRESULT WINAPI waveOutBreakLoop(HWAVEOUT);
+MMRESULT WINAPI waveOutGetPosition(HWAVEOUT,LPMMTIME,UINT);
+MMRESULT WINAPI waveOutGetPitch(HWAVEOUT,PDWORD);
+MMRESULT WINAPI waveOutSetPitch(HWAVEOUT,DWORD);
+MMRESULT WINAPI waveOutGetPlaybackRate(HWAVEOUT,PDWORD);
+MMRESULT WINAPI waveOutSetPlaybackRate(HWAVEOUT,DWORD);
+MMRESULT WINAPI waveOutGetID(HWAVEOUT,LPUINT);
+MMRESULT WINAPI waveOutMessage(HWAVEOUT,UINT,DWORD,DWORD);
+UINT WINAPI waveInGetNumDevs(void);
+MMRESULT WINAPI waveInGetDevCapsA(UINT,LPWAVEINCAPSA,UINT);
+MMRESULT WINAPI waveInGetDevCapsW(UINT,LPWAVEINCAPSW,UINT);
+MMRESULT WINAPI waveInGetErrorTextA(MMRESULT,LPSTR,UINT);
+MMRESULT WINAPI waveInGetErrorTextW(MMRESULT,LPWSTR,UINT);
+MMRESULT WINAPI waveInOpen(LPHWAVEIN,UINT,LPCWAVEFORMATEX,DWORD,DWORD,DWORD);
+MMRESULT WINAPI waveInClose(HWAVEIN);
+MMRESULT WINAPI waveInPrepareHeader(HWAVEIN,LPWAVEHDR,UINT);
+MMRESULT WINAPI waveInUnprepareHeader(HWAVEIN,LPWAVEHDR,UINT);
+MMRESULT WINAPI waveInAddBuffer(HWAVEIN,LPWAVEHDR,UINT);
+MMRESULT WINAPI waveInStart(HWAVEIN);
+MMRESULT WINAPI waveInStop(HWAVEIN);
+MMRESULT WINAPI waveInReset(HWAVEIN);
+MMRESULT WINAPI waveInGetPosition(HWAVEIN,LPMMTIME,UINT);
+MMRESULT WINAPI waveInGetID(HWAVEIN,LPUINT);
+MMRESULT WINAPI waveInMessage(HWAVEIN,UINT,DWORD,DWORD);
+UINT WINAPI midiOutGetNumDevs(void);
+MMRESULT WINAPI midiStreamOpen(LPHMIDISTRM,LPUINT,DWORD,DWORD,DWORD,DWORD);
+MMRESULT WINAPI midiStreamClose(HMIDISTRM);
+MMRESULT WINAPI midiStreamProperty(HMIDISTRM,LPBYTE,DWORD);
+MMRESULT WINAPI midiStreamPosition(HMIDISTRM,LPMMTIME,UINT);
+MMRESULT WINAPI midiStreamOut(HMIDISTRM,LPMIDIHDR,UINT);
+MMRESULT WINAPI midiStreamPause(HMIDISTRM);
+MMRESULT WINAPI midiStreamRestart(HMIDISTRM);
+MMRESULT WINAPI midiStreamStop(HMIDISTRM);
+MMRESULT WINAPI midiConnect(HMIDI,HMIDIOUT,PVOID);
+MMRESULT WINAPI midiDisconnect(HMIDI,HMIDIOUT,PVOID);
+MMRESULT WINAPI midiOutGetDevCapsA(UINT,LPMIDIOUTCAPSA,UINT);
+MMRESULT WINAPI midiOutGetDevCapsW(UINT,LPMIDIOUTCAPSW,UINT);
+MMRESULT WINAPI midiOutGetVolume(HMIDIOUT,PDWORD);
+MMRESULT WINAPI midiOutSetVolume(HMIDIOUT,DWORD);
+MMRESULT WINAPI midiOutGetErrorTextA(MMRESULT,LPSTR,UINT);
+MMRESULT WINAPI midiOutGetErrorTextW(MMRESULT,LPWSTR,UINT);
+MMRESULT WINAPI midiOutOpen(LPHMIDIOUT,UINT,DWORD,DWORD,DWORD);
+MMRESULT WINAPI midiOutClose(HMIDIOUT);
+MMRESULT WINAPI midiOutPrepareHeader(HMIDIOUT,LPMIDIHDR,UINT);
+MMRESULT WINAPI midiOutUnprepareHeader(HMIDIOUT,LPMIDIHDR,UINT);
+MMRESULT WINAPI midiOutShortMsg(HMIDIOUT,DWORD);
+MMRESULT WINAPI midiOutLongMsg(HMIDIOUT,LPMIDIHDR,UINT);
+MMRESULT WINAPI midiOutReset(HMIDIOUT);
+MMRESULT WINAPI midiOutCachePatches(HMIDIOUT,UINT,LPWORD,UINT);
+MMRESULT WINAPI midiOutCacheDrumPatches(HMIDIOUT,UINT,LPWORD,UINT);
+MMRESULT WINAPI midiOutGetID(HMIDIOUT,LPUINT);
+MMRESULT WINAPI midiOutMessage(HMIDIOUT,UINT,DWORD,DWORD);
+UINT WINAPI midiInGetNumDevs(void);
+MMRESULT WINAPI midiInGetDevCapsA(UINT,LPMIDIINCAPSA,UINT);
+MMRESULT WINAPI midiInGetDevCapsW(UINT,LPMIDIINCAPSW,UINT);
+MMRESULT WINAPI midiInGetErrorTextA(MMRESULT,LPSTR,UINT);
+MMRESULT WINAPI midiInGetErrorTextW(MMRESULT,LPWSTR,UINT);
+MMRESULT WINAPI midiInOpen(LPHMIDIIN,UINT,DWORD,DWORD,DWORD);
+MMRESULT WINAPI midiInClose(HMIDIIN);
+MMRESULT WINAPI midiInPrepareHeader(HMIDIIN,LPMIDIHDR,UINT);
+MMRESULT WINAPI midiInUnprepareHeader(HMIDIIN,LPMIDIHDR,UINT);
+MMRESULT WINAPI midiInAddBuffer(HMIDIIN,LPMIDIHDR,UINT);
+MMRESULT WINAPI midiInStart(HMIDIIN);
+MMRESULT WINAPI midiInStop(HMIDIIN);
+MMRESULT WINAPI midiInReset(HMIDIIN);
+MMRESULT WINAPI midiInGetID(HMIDIIN,LPUINT);
+MMRESULT WINAPI midiInMessage(HMIDIIN,UINT,DWORD,DWORD);
+UINT WINAPI auxGetNumDevs(void);
+MMRESULT WINAPI auxGetDevCapsA(UINT,LPAUXCAPSA,UINT);
+MMRESULT WINAPI auxGetDevCapsW(UINT,LPAUXCAPSW,UINT);
+MMRESULT WINAPI auxSetVolume(UINT,DWORD);
+MMRESULT WINAPI auxGetVolume(UINT,PDWORD);
+MMRESULT WINAPI auxOutMessage(UINT,UINT,DWORD,DWORD);
+UINT WINAPI mixerGetNumDevs(void);
+MMRESULT WINAPI mixerGetDevCapsA(UINT,LPMIXERCAPSA,UINT);
+MMRESULT WINAPI mixerGetDevCapsW(UINT,LPMIXERCAPSW,UINT);
+MMRESULT WINAPI mixerOpen(LPHMIXER,UINT,DWORD,DWORD,DWORD);
+MMRESULT WINAPI mixerClose(HMIXER);
+DWORD WINAPI mixerMessage(HMIXER,UINT,DWORD,DWORD);
+MMRESULT WINAPI mixerGetLineInfoA(HMIXEROBJ,LPMIXERLINEA,DWORD);
+MMRESULT WINAPI mixerGetLineInfoW(HMIXEROBJ,LPMIXERLINEW,DWORD);
+MMRESULT WINAPI mixerGetID(HMIXEROBJ,PUINT,DWORD);
+MMRESULT WINAPI mixerGetLineControlsA(HMIXEROBJ,LPMIXERLINECONTROLSA,DWORD);
+MMRESULT WINAPI mixerGetLineControlsW(HMIXEROBJ,LPMIXERLINECONTROLSW,DWORD);
+MMRESULT WINAPI mixerGetControlDetailsA(HMIXEROBJ,LPMIXERCONTROLDETAILS,DWORD);
+MMRESULT WINAPI mixerGetControlDetailsW(HMIXEROBJ,LPMIXERCONTROLDETAILS,DWORD);
+MMRESULT WINAPI mixerSetControlDetails(HMIXEROBJ,LPMIXERCONTROLDETAILS,DWORD);
+MMRESULT WINAPI timeGetSystemTime(LPMMTIME,UINT);
+DWORD WINAPI timeGetTime(void);
+MMRESULT WINAPI timeSetEvent(UINT,UINT,LPTIMECALLBACK,DWORD,UINT);
+MMRESULT WINAPI timeKillEvent(UINT);
+MMRESULT WINAPI timeGetDevCaps(LPTIMECAPS,UINT);
+MMRESULT WINAPI timeBeginPeriod(UINT);
+MMRESULT WINAPI timeEndPeriod(UINT);
+UINT WINAPI joyGetNumDevs(void);
+MMRESULT WINAPI joyGetDevCapsA(UINT,LPJOYCAPSA,UINT);
+MMRESULT WINAPI joyGetDevCapsW(UINT,LPJOYCAPSW,UINT);
+MMRESULT WINAPI joyGetPos(UINT,LPJOYINFO);
+MMRESULT WINAPI joyGetPosEx(UINT,LPJOYINFOEX);
+MMRESULT WINAPI joyGetThreshold(UINT,LPUINT);
+MMRESULT WINAPI joyReleaseCapture(UINT);
+MMRESULT WINAPI joySetCapture(HWND,UINT,UINT,BOOL);
+MMRESULT WINAPI joySetThreshold(UINT,UINT);
+FOURCC WINAPI mmioStringToFOURCCA(LPCSTR,UINT);
+FOURCC WINAPI mmioStringToFOURCCW(LPCWSTR,UINT);
+LPMMIOPROC WINAPI mmioInstallIOProcA(FOURCC,LPMMIOPROC,DWORD);
+LPMMIOPROC WINAPI mmioInstallIOProcW(FOURCC,LPMMIOPROC,DWORD);
+HMMIO WINAPI mmioOpenA(LPSTR,LPMMIOINFO,DWORD);
+HMMIO WINAPI mmioOpenW(LPWSTR,LPMMIOINFO,DWORD);
+MMRESULT WINAPI mmioRenameA(LPCSTR,LPCSTR,LPCMMIOINFO,DWORD);
+MMRESULT WINAPI mmioRenameW(LPCWSTR,LPCWSTR,LPCMMIOINFO,DWORD);
+MMRESULT WINAPI mmioClose(HMMIO,UINT);
+LONG WINAPI mmioRead(HMMIO,HPSTR,LONG);
+LONG WINAPI mmioWrite(HMMIO,LPCSTR,LONG);
+LONG WINAPI mmioSeek(HMMIO,LONG,int);
+MMRESULT WINAPI mmioGetInfo(HMMIO,LPMMIOINFO,UINT);
+MMRESULT WINAPI mmioSetInfo(HMMIO,LPCMMIOINFO,UINT);
+MMRESULT WINAPI mmioSetBuffer(HMMIO,LPSTR,LONG,UINT);
+MMRESULT WINAPI mmioFlush(HMMIO,UINT);
+MMRESULT WINAPI mmioAdvance(HMMIO,LPMMIOINFO,UINT);
+LRESULT WINAPI mmioSendMessage(HMMIO,UINT,LPARAM,LPARAM);
+MMRESULT WINAPI mmioDescend(HMMIO,LPMMCKINFO,const MMCKINFO*,UINT);
+MMRESULT WINAPI mmioAscend(HMMIO,LPMMCKINFO,UINT);
+MMRESULT WINAPI mmioCreateChunk(HMMIO,LPMMCKINFO,UINT);
+MCIERROR WINAPI mciSendCommandA(MCIDEVICEID,UINT,DWORD,DWORD);
+MCIERROR WINAPI mciSendCommandW(MCIDEVICEID,UINT,DWORD,DWORD);
+MCIERROR WINAPI mciSendStringA(LPCSTR,LPSTR,UINT,HWND);
+MCIERROR WINAPI mciSendStringW(LPCWSTR,LPWSTR,UINT,HWND);
+MCIDEVICEID WINAPI mciGetDeviceIDA(LPCSTR);
+MCIDEVICEID WINAPI mciGetDeviceIDW(LPCWSTR);
+MCIDEVICEID WINAPI mciGetDeviceIDFromElementIDA(DWORD,LPCSTR);
+MCIDEVICEID WINAPI mciGetDeviceIDFromElementIDW(DWORD,LPCWSTR);
+BOOL WINAPI mciGetErrorStringA(MCIERROR,LPSTR,UINT);
+BOOL WINAPI mciGetErrorStringW(MCIERROR,LPWSTR,UINT);
+BOOL WINAPI mciSetYieldProc(MCIDEVICEID,YIELDPROC,DWORD);
+HTASK WINAPI mciGetCreatorTask(MCIDEVICEID);
+YIELDPROC WINAPI mciGetYieldProc(MCIDEVICEID,PDWORD);
+
+typedef struct tagMCI_SEQ_SET_PARMS {
+	DWORD 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;
+typedef struct tagMCI_ANIM_OPEN_PARMSA {
+	DWORD 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 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 struct tagMCI_ANIM_PLAY_PARMS {
+	DWORD 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 dwCallback;
+	DWORD dwFrames;
+} MCI_ANIM_STEP_PARMS,*PMCI_ANIM_STEP_PARMS,*LPMCI_ANIM_STEP_PARMS;
+typedef struct tagMCI_ANIM_WINDOW_PARMSA {
+	DWORD 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 dwCallback;
+	HWND hWnd;
+	UINT nCmdShow;
+	LPCWSTR lpstrText;
+} MCI_ANIM_WINDOW_PARMSW,*PMCI_ANIM_WINDOW_PARMSW,*LPMCI_ANIM_WINDOW_PARMSW;
+typedef struct tagMCI_ANIM_RECT_PARMS {
+	DWORD dwCallback;
+#ifdef MCI_USE_OFFEXT
+	POINT ptOffset;
+	POINT ptExtent;
+#else
+	RECT rc;
+#endif
+} MCI_ANIM_RECT_PARMS,*PMCI_ANIM_RECT_PARMS,*LPMCI_ANIM_RECT_PARMS;
+typedef struct tagMCI_ANIM_UPDATE_PARMS {
+	DWORD dwCallback;
+	RECT rc;
+	HDC hDC;
+} MCI_ANIM_UPDATE_PARMS,*PMCI_ANIM_UPDATE_PARMS,*LPMCI_ANIM_UPDATE_PARMS;
+typedef struct tagMCI_OVLY_OPEN_PARMSA {
+	DWORD 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 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 struct tagMCI_OVLY_WINDOW_PARMSA {
+	DWORD 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 dwCallback;
+	HWND hWnd;
+	UINT nCmdShow;
+	LPCWSTR lpstrText;
+} MCI_OVLY_WINDOW_PARMSW,*PMCI_OVLY_WINDOW_PARMSW,*LPMCI_OVLY_WINDOW_PARMSW;
+typedef struct tagMCI_OVLY_RECT_PARMS {
+	DWORD dwCallback;
+#ifdef MCI_USE_OFFEXT
+	POINT ptOffset;
+	POINT ptExtent;
+#else
+	RECT rc;
+#endif
+} MCI_OVLY_RECT_PARMS,*PMCI_OVLY_RECT_PARMS,*LPMCI_OVLY_RECT_PARMS;
+typedef struct tagMCI_OVLY_SAVE_PARMSA {
+	DWORD dwCallback;
+	LPCSTR lpfilename;
+	RECT rc;
+} MCI_OVLY_SAVE_PARMSA,*PMCI_OVLY_SAVE_PARMSA,*LPMCI_OVLY_SAVE_PARMSA;
+typedef struct tagMCI_OVLY_SAVE_PARMSW {
+	DWORD dwCallback;
+	LPCWSTR lpfilename;
+	RECT rc;
+} MCI_OVLY_SAVE_PARMSW,*PMCI_OVLY_SAVE_PARMSW,*LPMCI_OVLY_SAVE_PARMSW;
+typedef struct tagMCI_OVLY_LOAD_PARMSA {
+	DWORD dwCallback;
+	LPCSTR lpfilename;
+	RECT rc;
+} MCI_OVLY_LOAD_PARMSA,*PMCI_OVLY_LOAD_PARMSA,*LPMCI_OVLY_LOAD_PARMSA;
+typedef struct tagMCI_OVLY_LOAD_PARMSW {
+	DWORD dwCallback;
+	LPCWSTR lpfilename;
+	RECT rc;
+} MCI_OVLY_LOAD_PARMSW,*PMCI_OVLY_LOAD_PARMSW,*LPMCI_OVLY_LOAD_PARMSW;
+
+#ifdef UNICODE
+typedef WAVEOUTCAPSW WAVEOUTCAPS,*PWAVEOUTCAPS,*LPWAVEOUTCAPS;
+typedef WAVEINCAPSW WAVEINCAPS,*PWAVEINCAPS,*LPWAVEINCAPS;
+typedef MIDIOUTCAPSW MIDIOUTCAPS,*PMIDIOUTCAPS,*LPMIDIOUTCAPS;
+typedef MIDIINCAPSW MIDIINCAPS,*PMIDIINCAPS,*LPMIDIINCAPS;
+typedef AUXCAPSW AUXCAPS,*PAUXCAPS,*LPAUXCAPS;
+typedef MIXERCAPSW MIXERCAPS,*PMIXERCAPS,*LPMIXERCAPS;
+typedef MIXERLINEW MIXERLINE,*PMIXERLINE,*LPMIXERLINE;
+typedef MIXERCONTROLW MIXERCONTROL,*PMIXERCONTROL,*LPMIXERCONTROL;
+typedef MIXERLINECONTROLSW MIXERLINECONTROLS,*PMIXERLINECONTROLS,*LPMIXERLINECONTROLS;
+typedef MIXERCONTROLDETAILS_LISTTEXTW MIXERCONTROLDETAILS_LISTTEXT,*PMIXERCONTROLDETAILS_LISTTEXT,*LPMIXERCONTROLDETAILS_LISTTEXT;
+typedef JOYCAPSW JOYCAPS,*PJOYCAPS,*LPJOYCAPS;
+typedef MCI_OPEN_PARMSW MCI_OPEN_PARMS,*PMCI_OPEN_PARMS,*LPMCI_OPEN_PARMS;
+typedef MCI_INFO_PARMSW MCI_INFO_PARMS,*LPMCI_INFO_PARMS;
+typedef MCI_SYSINFO_PARMSW MCI_SYSINFO_PARMS,*PMCI_SYSINFO_PARMS,*LPMCI_SYSINFO_PARMS;
+typedef MCI_SAVE_PARMSW MCI_SAVE_PARMS,*PMCI_SAVE_PARMS,*LPMCI_SAVE_PARMS;
+typedef MCI_LOAD_PARMSW MCI_LOAD_PARMS,*PMCI_LOAD_PARMS,*LPMCI_LOAD_PARMS;
+typedef MCI_VD_ESCAPE_PARMSW MCI_VD_ESCAPE_PARMS,*PMCI_VD_ESCAPE_PARMS,*LPMCI_VD_ESCAPE_PARMS;
+typedef MCI_WAVE_OPEN_PARMSW MCI_WAVE_OPEN_PARMS,*PMCI_WAVE_OPEN_PARMS,*LPMCI_WAVE_OPEN_PARMS;
+typedef MCI_ANIM_OPEN_PARMSW MCI_ANIM_OPEN_PARMS,*PMCI_ANIM_OPEN_PARMS,*LPMCI_ANIM_OPEN_PARMS;
+typedef MCI_ANIM_WINDOW_PARMSW MCI_ANIM_WINDOW_PARMS,*PMCI_ANIM_WINDOW_PARMS,*LPMCI_ANIM_WINDOW_PARMS;
+typedef MCI_OVLY_OPEN_PARMSW MCI_OVLY_OPEN_PARMS,*PMCI_OVLY_OPEN_PARMS,*LPMCI_OVLY_OPEN_PARMS;
+typedef MCI_OVLY_WINDOW_PARMSW MCI_OVLY_WINDOW_PARMS,*PMCI_OVLY_WINDOW_PARMS,*LPMCI_OVLY_WINDOW_PARMS;
+typedef MCI_OVLY_SAVE_PARMSW MCI_OVLY_SAVE_PARMS,*PMCI_OVLY_SAVE_PARMS,*LPMCI_OVLY_SAVE_PARMS;
+#define sndPlaySound sndPlaySoundW
+#define PlaySound PlaySoundW
+#define waveOutGetDevCaps waveOutGetDevCapsW
+#define waveOutGetErrorText waveOutGetErrorTextW
+#define waveInGetDevCaps waveInGetDevCapsW
+#define waveInGetErrorText waveInGetErrorTextW
+#define midiOutGetDevCaps midiOutGetDevCapsW
+#define midiOutGetErrorText midiOutGetErrorTextW
+#define midiInGetDevCaps midiInGetDevCapsW
+#define midiInGetErrorText midiInGetErrorTextW
+#define auxGetDevCaps auxGetDevCapsW
+#define mixerGetDevCaps mixerGetDevCapsW
+#define mixerGetLineInfo mixerGetLineInfoW
+#define mixerGetLineControls mixerGetLineControlsW
+#define mixerGetControlDetails mixerGetControlDetailsW
+#define joyGetDevCaps joyGetDevCapsW
+#define mmioInstallIOProc mmioInstallIOProcW
+#define mmioStringToFOURCC mmioStringToFOURCCW
+#define mmioOpen mmioOpenW
+#define mmioRename mmioRenameW
+#define mciSendCommand mciSendCommandW
+#define mciSendString mciSendStringW
+#define mciGetDeviceID mciGetDeviceIDW
+#define mciGetDeviceIDFromElementID mciGetDeviceIDFromElementIDW
+#define mciGetErrorString mciGetErrorStringW
+#else
+typedef WAVEOUTCAPSA WAVEOUTCAPS,*PWAVEOUTCAPS,*LPWAVEOUTCAPS;
+typedef WAVEINCAPSA WAVEINCAPS,*PWAVEINCAPS,*LPWAVEINCAPS;
+typedef MIDIOUTCAPSA MIDIOUTCAPS,*PMIDIOUTCAPS,*LPMIDIOUTCAPS;
+typedef MIDIINCAPSA MIDIINCAPS,*PMIDIINCAPS,*LPMIDIINCAPS;
+typedef AUXCAPSA AUXCAPS,*PAUXCAPS,*LPAUXCAPS;
+typedef MIXERCAPSA MIXERCAPS,*PMIXERCAPS,*LPMIXERCAPS;
+typedef MIXERLINEA MIXERLINE,*PMIXERLINE,*LPMIXERLINE;
+typedef MIXERCONTROLA MIXERCONTROL,*PMIXERCONTROL,*LPMIXERCONTROL;
+typedef MIXERLINECONTROLSA MIXERLINECONTROLS,*PMIXERLINECONTROLS,*LPMIXERLINECONTROLS;
+typedef MIXERCONTROLDETAILS_LISTTEXTA MIXERCONTROLDETAILS_LISTTEXT,*PMIXERCONTROLDETAILS_LISTTEXT,*LPMIXERCONTROLDETAILS_LISTTEXT;
+typedef JOYCAPSA JOYCAPS,*PJOYCAPS,*LPJOYCAPS;
+typedef MCI_OPEN_PARMSA MCI_OPEN_PARMS,*PMCI_OPEN_PARMS,*LPMCI_OPEN_PARMS;
+typedef MCI_INFO_PARMSA MCI_INFO_PARMS,*LPMCI_INFO_PARMS;
+typedef MCI_SYSINFO_PARMSA MCI_SYSINFO_PARMS,*PMCI_SYSINFO_PARMS,*LPMCI_SYSINFO_PARMS;
+typedef MCI_SAVE_PARMSA MCI_SAVE_PARMS,*PMCI_SAVE_PARMS,*LPMCI_SAVE_PARMS;
+typedef MCI_LOAD_PARMSA MCI_LOAD_PARMS,*PMCI_LOAD_PARMS,*LPMCI_LOAD_PARMS;
+typedef MCI_VD_ESCAPE_PARMSA MCI_VD_ESCAPE_PARMS,*PMCI_VD_ESCAPE_PARMS,*LPMCI_VD_ESCAPE_PARMS;
+typedef MCI_WAVE_OPEN_PARMSA MCI_WAVE_OPEN_PARMS,*PMCI_WAVE_OPEN_PARMS,*LPMCI_WAVE_OPEN_PARMS;
+typedef MCI_ANIM_OPEN_PARMSA MCI_ANIM_OPEN_PARMS,*PMCI_ANIM_OPEN_PARMS,*LPMCI_ANIM_OPEN_PARMS;
+typedef MCI_ANIM_WINDOW_PARMSA MCI_ANIM_WINDOW_PARMS,*PMCI_ANIM_WINDOW_PARMS,*LPMCI_ANIM_WINDOW_PARMS;
+typedef MCI_OVLY_OPEN_PARMSA MCI_OVLY_OPEN_PARMS,*PMCI_OVLY_OPEN_PARMS,*LPMCI_OVLY_OPEN_PARMS;
+typedef MCI_OVLY_WINDOW_PARMSA MCI_OVLY_WINDOW_PARMS,*PMCI_OVLY_WINDOW_PARMS,*LPMCI_OVLY_WINDOW_PARMS;
+typedef MCI_OVLY_SAVE_PARMSA MCI_OVLY_SAVE_PARMS,*PMCI_OVLY_SAVE_PARMS,*LPMCI_OVLY_SAVE_PARMS;
+#define sndPlaySound sndPlaySoundA
+#define PlaySound PlaySoundA
+#define waveOutGetDevCaps waveOutGetDevCapsA
+#define waveOutGetErrorText waveOutGetErrorTextA
+#define waveInGetDevCaps waveInGetDevCapsA
+#define waveInGetErrorText waveInGetErrorTextA
+#define midiOutGetDevCaps midiOutGetDevCapsA
+#define midiOutGetErrorText midiOutGetErrorTextA
+#define midiInGetDevCaps midiInGetDevCapsA
+#define midiInGetErrorText midiInGetErrorTextA
+#define auxGetDevCaps auxGetDevCapsA
+#define mixerGetDevCaps mixerGetDevCapsA
+#define mixerGetLineInfo mixerGetLineInfoA
+#define mixerGetLineControls mixerGetLineControlsA
+#define mixerGetControlDetails mixerGetControlDetailsA
+#define joyGetDevCaps joyGetDevCapsA
+#define mmioInstallIOProc mmioInstallIOProcA
+#define mmioStringToFOURCC mmioStringToFOURCCA
+#define mmioOpen mmioOpenA
+#define mmioRename mmioRenameA
+#define mciSendCommand mciSendCommandA
+#define mciSendString mciSendStringA
+#define mciGetDeviceID mciGetDeviceIDA
+#define mciGetDeviceIDFromElementID mciGetDeviceIDFromElementIDA
+#define mciGetErrorString mciGetErrorStringA
+#endif
+#ifdef __cplusplus
+}
+#endif
+#pragma pack(pop)
+#endif
Index: Daodan/MinGW/include/mpegtype.h
===================================================================
--- Daodan/MinGW/include/mpegtype.h	(revision 1046)
+++ Daodan/MinGW/include/mpegtype.h	(revision 1046)
@@ -0,0 +1,29 @@
+#ifndef _MPEGTYPE_H
+#define _MPEGTYPE_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#include <strmif.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*--- DirectShow Reference - DirectShow Structures */
+typedef struct tagAM_MPEGSTREAMTYPE {
+	DWORD dwStreamID;
+	DWORD dwReserved;
+	AM_MEDIA_TYPE mt;
+	BYTE bFormat[1];
+} AM_MPEGSTREAMTYPE;
+typedef struct tagAM_MPEGSYSTEMTYPE {
+	DWORD dwBitRate;
+	DWORD cStreams;
+	AM_MPEGSTREAMTYPE Streams[1];
+} AM_MPEGSYSTEMTYPE;
+
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/mprapi.h
===================================================================
--- Daodan/MinGW/include/mprapi.h	(revision 1046)
+++ Daodan/MinGW/include/mprapi.h	(revision 1046)
@@ -0,0 +1,576 @@
+/*
+ * mprapi.h - Routing and Remote Access Services
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain.  You may use,
+ * modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY.  ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED.  This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+#ifndef _MPRAPI_H
+#define _MPRAPI_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#include <ras.h>
+#include <lmcons.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#if (_WIN32_WINNT >= 0x0500)
+/*--- Router Management Reference - Router Management Enumerated Types */
+typedef enum _ROUTER_CONNECTION_STATE {
+	ROUTER_IF_STATE_UNREACHABLE,
+	ROUTER_IF_STATE_DISCONNECTED,
+	ROUTER_IF_STATE_CONNECTING,
+	ROUTER_IF_STATE_CONNECTED
+} ROUTER_CONNECTION_STATE;
+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;
+#define MPR_INTERFACE_ADMIN_DISABLED 0x00000002
+#define MPR_INTERFACE_CONNECTION_FAILURE 0x00000004
+#define MPR_INTERFACE_DIALOUT_HOURS_RESTRICTION 0x00000010
+#define MPR_INTERFACE_OUT_OF_RESOURCES 0x00000001
+#define MPR_INTERFACE_SERVICE_PAUSED 0x00000008
+#define MPR_INTERFACE_NO_MEDIA_SENSE 0x00000020
+#define MPR_INTERFACE_NO_DEVICE 0x00000040
+/*--- Router Management MIB Reference - Transport and Protocol Constants */
+#define PID_ATALK 0x00000029
+#define PID_IP 0x00000021
+#define PID_IPX 0x0000002B
+#define PID_NBF 0x0000003F
+/*--- Remote Access Service Administration Reference - RAS Administration Enumerated Types */
+typedef enum _RAS_HARDWARE_CONDITION {
+	RAS_HARDWARE_OPERATIONAL,
+	RAS_HARDWARE_FAILURE
+} RAS_HARDWARE_CONDITION;
+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;
+/*--- Remote Access Service Administration Reference - RAS Administration Structures */
+#define ATADDRESSLEN 32
+typedef struct _PPP_ATCP_INFO {
+	DWORD dwError;
+	WCHAR wszAddress[ATADDRESSLEN+1];
+} PPP_ATCP_INFO;
+typedef struct _PPP_CCP_INFO {
+	DWORD dwError;
+	DWORD dwCompressionAlgorithm;
+	DWORD dwOptions;
+	DWORD dwRemoteCompressionAlgorithm;
+	DWORD dwRemoteOptions;
+} PPP_CCP_INFO;
+#define RASCCPCA_STAC 0x00000005
+#define RASCCPCA_MPPC 0x00000006
+#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
+#define IPADDRESSLEN 15
+typedef struct _PPP_IPCP_INFO {
+	DWORD dwError;
+	WCHAR wszAddress[IPADDRESSLEN+1];
+	WCHAR wszRemoteAddress[IPADDRESSLEN+1];
+} PPP_IPCP_INFO;
+typedef struct _PPP_IPCP_INFO2 {
+	DWORD dwError;
+	WCHAR wszAddress[IPADDRESSLEN+1];
+	WCHAR wszRemoteAddress[IPADDRESSLEN+1];
+	DWORD dwOptions;
+	DWORD dwRemoteOptons;
+} PPP_IPCP_INFO2;
+#define IPXADDRESSLEN 22
+typedef struct _PPP_IPXCP_INFO {
+	DWORD dwError;
+	WCHAR wszAddress[IPXADDRESSLEN+1];
+} PPP_IPXCP_INFO;
+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;
+#define PPP_LCP_PAP 0x0000C023
+#define PPP_LCP_SPAP 0x0000C027
+#define PPP_LCP_CHAP 0x0000C223
+#define PPP_LCP_EAP 0x0000C227
+#define PPP_LCP_CHAP_MD5 0x00000005
+#define PPP_LCP_CHAP_MS 0x00000080
+#define PPP_LCP_CHAP_MSV2 0x00000081
+#define PPP_LCP_MULTILINK_FRAMING 0x00000001
+typedef struct _PPP_NBFCP_INFO {
+	DWORD dwError;
+	WCHAR wszWksta[NETBIOS_NAME_LEN+1];
+} PPP_NBFCP_INFO;
+typedef struct _PPP_INFO {
+	PPP_NBFCP_INFO nbf;
+	PPP_IPCP_INFO ip;
+	PPP_IPXCP_INFO ipx;
+	PPP_ATCP_INFO at;
+} PPP_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 MAX_INTERFACE_NAME_LEN 256
+typedef struct _RAS_CONNECTION_0 {
+	HANDLE hConnection;
+	HANDLE hInterface;
+	DWORD dwConnectDuration;
+	ROUTER_INTERFACE_TYPE dwInterfaceType;
+	DWORD dwConnectionFlags;
+	WCHAR wszInterfaceName[MAX_INTERFACE_NAME_LEN+1];
+	WCHAR wszUserName[UNLEN+1];
+	WCHAR wszLogonDomain[DNLEN+1];
+	WCHAR wszRemoteComputer[NETBIOS_NAME_LEN+1];
+} RAS_CONNECTION_0,*PRAS_CONNECTION_0;
+#define RAS_FLAGS_PPP_CONNECTION 0x00000001
+#define RAS_FLAGS_MESSENGER_PRESENT 0x00000002
+#define RAS_FLAGS_RAS_CONNECTION 0x00000004
+#define RAS_FLAGS_QUARANTINE_PRESENT 0x00000008
+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[UNLEN+1];
+	ROUTER_INTERFACE_TYPE dwInterfaceType;
+	GUID guid;
+	PPP_INFO_2 PppInfo2;
+} RAS_CONNECTION_2,*PRAS_CONNECTION_2;
+#define MAX_PORT_NAME 16
+#define MAX_MEDIA_NAME 16
+#define MAX_DEVICE_NAME 128
+#define MAX_DEVICETYPE_NAME 16
+typedef struct _RAS_PORT_0 {
+	HANDLE hPort;
+	HANDLE hConnection;
+	RAS_PORT_CONDITION dwPortCondition;
+	DWORD dwTotalNumberOfCalls;
+	DWORD dwConnectDuration;
+	WCHAR wszPortName[MAX_PORT_NAME+1];
+	WCHAR wszMediaName[MAX_MEDIA_NAME+1];
+	WCHAR wszDeviceName[MAX_DEVICE_NAME+1];
+	WCHAR wszDeviceType[MAX_DEVICETYPE_NAME+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 MAX_PHONE_NUMBER_LEN 128
+typedef struct _RAS_USER_0 {
+	BYTE bfPrivilege;
+	WCHAR wszPhoneNumber[MAX_PHONE_NUMBER_LEN+1];
+} RAS_USER_0,*PRAS_USER_0;
+#define RASPRIV_NoCallback 0x01
+#define RASPRIV_AdminSetCallback 0x02
+#define RASPRIV_CallerSetCallback 0x04
+#define RASPRIV_DialinPrivilege 0x08
+#define RASPRIV_CallbackType 0x07
+typedef struct _RAS_USER_1 {
+	BYTE bfPrivilege;
+	WCHAR wszPhoneNumber[MAX_PHONE_NUMBER_LEN+1];
+	BYTE bfPrivilege2;
+} RAS_USER_1,*PRAS_USER_1;
+#define RASPRIV2_DialinPolicy 0x01
+/*--- Router Management Reference - Router Management Structures */
+typedef struct _MPR_CREDENTIALSEX_0 {
+	DWORD  dwSize;
+	LPBYTE lpbCredentialsInfo;
+} MPR_CREDENTIALSEX_0,*PMPR_CREDENTIALSEX_0;
+#if (_WIN32_WINNT >= 0x0502)
+typedef struct _MPR_CREDENTIALSEX_1 {
+	DWORD  dwSize;
+	LPBYTE lpbCredentialsInfo;
+} MPR_CREDENTIALSEX_1,*PMPR_CREDENTIALSEX_1;
+#endif
+#define MPR_MaxDeviceType RAS_MaxDeviceType
+#define MPR_MaxDeviceName RAS_MaxDeviceName
+#define MPR_MaxPadType RAS_MaxPadType
+#define MPR_MaxX25Address RAS_MaxX25Address
+#define MPR_MaxFacilities RAS_MaxFacilities
+#define MPR_MaxUserData RAS_MaxUserData
+#define MPR_MaxPhoneNumber RAS_MaxPhoneNumber
+typedef struct _MPR_DEVICE_0 {
+	WCHAR szDeviceType[MPR_MaxDeviceType+1];
+	WCHAR szDeviceName[MPR_MaxDeviceName+1];
+} MPR_DEVICE_0,*PMPR_DEVICE_0;
+typedef struct _MPR_DEVICE_1 {
+	WCHAR szDeviceType[MPR_MaxDeviceType+1];
+	WCHAR szDeviceName[MPR_MaxDeviceName+1];
+	WCHAR szLocalPhoneNumber[MPR_MaxPhoneNumber+1];
+	PWCHAR szAlternates;
+} MPR_DEVICE_1,*PMPR_DEVICE_1;
+#define MAX_TRANSPORT_NAME_LEN 40
+typedef struct _MPR_IFTRANSPORT_0 {
+	DWORD dwTransportId;
+	HANDLE hIfTransport;
+	WCHAR wszIfTransportName[MAX_TRANSPORT_NAME_LEN+1];
+} MPR_IFTRANSPORT_0,*PMPR_IFTRANSPORT_0;
+typedef struct _MPR_INTERFACE_0 {
+	WCHAR wszInterfaceName[MAX_INTERFACE_NAME_LEN+1];
+	HANDLE hInterface;
+	BOOL fEnabled;
+	ROUTER_INTERFACE_TYPE dwIfType;
+	ROUTER_CONNECTION_STATE dwConnectionState;
+	DWORD fUnReachabilityReasons;
+	DWORD dwLastError;
+} MPR_INTERFACE_0,*PMPR_INTERFACE_0;
+typedef struct _MPR_INTERFACE_1 {
+	WCHAR wszInterfaceName[MAX_INTERFACE_NAME_LEN+1];
+	HANDLE hInterface;
+	BOOL fEnabled;
+	ROUTER_INTERFACE_TYPE IfType;
+	ROUTER_CONNECTION_STATE dwConnectionState;
+	DWORD fUnReachabilityReasons;
+	DWORD dwLastError;
+	LPWSTR lpwsDialoutHoursRestriction;
+} MPR_INTERFACE_1,*PMPR_INTERFACE_1;
+typedef struct _MPR_INTERFACE_2 {
+	WCHAR wszInterfaceName[MAX_INTERFACE_NAME_LEN+1];
+	HANDLE hInterface;
+	BOOL fEnabled;
+	ROUTER_INTERFACE_TYPE dwIfType;
+	ROUTER_CONNECTION_STATE dwConnectionState;
+	DWORD fUnReachabilityReasons;
+	DWORD dwLastError;
+	DWORD dwfOptions;
+	WCHAR szLocalPhoneNumber[RAS_MaxPhoneNumber+1];
+	PWCHAR szAlternates;
+	DWORD ipaddr;
+	DWORD ipaddrDns;
+	DWORD ipaddrDnsAlt;
+	DWORD ipaddrWins;
+	DWORD ipaddrWinsAlt;
+	DWORD dwfNetProtocols;
+	WCHAR szDeviceType[MPR_MaxDeviceType+1];
+	WCHAR szDeviceName[MPR_MaxDeviceName+1];
+	WCHAR szX25PadType[MPR_MaxPadType+1];
+	WCHAR szX25Address[MPR_MaxX25Address+1];
+	WCHAR szX25Facilities[MPR_MaxFacilities+1];
+	WCHAR szX25UserData[MPR_MaxUserData+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;
+#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_UseLogonCredentials RASEO_UseLogonCredentials
+#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 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 MPRDM_DialAll RASEDM_DialAll
+#define MPRDM_DialAsNeeded RASEDM_DialAsNeeded
+#define MPRIDS_Disabled RASIDS_Disabled
+#define MPRIDS_UseGlobalValue RASIDS_UseGlobalValue
+#define MPRET_Phone RASET_Phone
+#define MPRET_Vpn RASET_Vpn
+#define MPRET_Direct RASET_Direct
+#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
+#if (_WIN32_WINNT>=0x0600)
+typedef struct _MPR_INTERFACE_3 {
+	WCHAR wszInterfaceName[MAX_INTERFACE_NAME_LEN+1];
+	HANDLE hInterface;
+	BOOL fEnabled;
+	ROUTER_INTERFACE_TYPE dwIfType;
+	ROUTER_CONNECTION_STATE dwConnectionState;
+	DWORD fUnReachabilityReasons;
+	DWORD dwLastError;
+	DWORD dwfOptions;
+	WCHAR szLocalPhoneNumber[RAS_MaxPhoneNumber+1];
+	PWCHAR szAlternates;
+	DWORD ipaddr;
+	DWORD ipaddrDns;
+	DWORD ipaddrDnsAlt;
+	DWORD ipaddrWins;
+	DWORD ipaddrWinsAlt;
+	DWORD dwfNetProtocols;
+	WCHAR szDeviceType[MPR_MaxDeviceType+1];
+	WCHAR szDeviceName[MPR_MaxDeviceName+1];
+	WCHAR szX25PadType[MPR_MaxPadType+1];
+	WCHAR szX25Address[MPR_MaxX25Address+1];
+	WCHAR szX25Facilities[MPR_MaxFacilities+1];
+	WCHAR szX25UserData[MPR_MaxUserData+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;
+#endif
+typedef struct _MPR_SERVER_0 {
+	BOOL fLanOnlyMode;
+	DWORD dwUpTime;
+	DWORD dwTotalPorts;
+	DWORD dwPortsInUse;
+} MPR_SERVER_0,*PMPR_SERVER_0;
+#if (_WIN32_WINNT >= 0x0502)
+typedef struct _MPR_SERVER_1 {
+	DWORD dwNumPptpPorts;
+	DWORD dwPptpPortFlags;
+	DWORD dwNumL2tpPorts;
+	DWORD dwL2tpPortFlags;
+} MPR_SERVER_1,*PMPR_SERVER_1;
+#define MPR_ENABLE_RAS_ON_DEVICE 0x00000001
+#define MPR_ENABLE_ROUTING_ON_DEVICE 0x00000002
+#endif
+typedef struct _MPR_TRANSPORT_0 {
+	DWORD dwTransportId;
+	HANDLE hTransport;
+	WCHAR wszTransportName[MAX_TRANSPORT_NAME_LEN+1];
+} MPR_TRANSPORT_0,*PMPR_TRANSPORT_0;
+typedef HANDLE RAS_SERVER_HANDLE;
+typedef HANDLE MPR_SERVER_HANDLE;
+/*--- Remote Access Service Administration Reference - RAS Administration Functions */
+DWORD WINAPI MprAdminConnectionClearStats(RAS_SERVER_HANDLE,HANDLE);
+DWORD WINAPI MprAdminConnectionEnum(RAS_SERVER_HANDLE,DWORD,LPBYTE*,DWORD,LPDWORD,LPDWORD,LPDWORD);
+DWORD WINAPI MprAdminConnectionGetInfo(RAS_SERVER_HANDLE,DWORD,HANDLE,LPBYTE*);
+DWORD WINAPI MprAdminConnectionRemoveQuarantine(HANDLE,HANDLE,BOOL);
+DWORD WINAPI MprAdminPortClearStats(RAS_SERVER_HANDLE,HANDLE);
+DWORD WINAPI MprAdminPortDisconnect(RAS_SERVER_HANDLE,HANDLE);
+DWORD WINAPI MprAdminPortEnum(RAS_SERVER_HANDLE,DWORD,HANDLE,LPBYTE*,DWORD,LPDWORD,LPDWORD,LPDWORD);
+DWORD WINAPI MprAdminPortGetInfo(RAS_SERVER_HANDLE,DWORD,HANDLE,LPBYTE);
+DWORD WINAPI MprAdminPortReset(RAS_SERVER_HANDLE,HANDLE);
+/*--- Remote Access Service Administration Reference - RAS Administration Functions - RAS Admin DLL Functions */
+BOOL WINAPI MprAdminAcceptNewConnection(RAS_CONNECTION_0*,RAS_CONNECTION_1*);
+BOOL WINAPI MprAdminAcceptNewConnection2(RAS_CONNECTION_0*,RAS_CONNECTION_1*,RAS_CONNECTION_2*);
+BOOL WINAPI MprAdminAcceptNewLink(RAS_PORT_0*,RAS_PORT_1*);
+#if (_WIN32_WINNT >= 0x0600)
+BOOL WINAPI MprAdminAcceptReauthentication(RAS_CONNECTION_0*,RAS_CONNECTION_1*,RAS_CONNECTION_2*,RAS_CONNECTION_3*);
+#endif
+void WINAPI MprAdminConnectionHangupNotification(RAS_CONNECTION_0*,RAS_CONNECTION_1*);
+void WINAPI MprAdminConnectionHangupNotification2(RAS_CONNECTION_0*,RAS_CONNECTION_1*,RAS_CONNECTION_2*);
+DWORD WINAPI MprAdminGetIpAddressForUser(WCHAR*,WCHAR*,DWORD*,BOOL*);
+#if (_WIN32_WINNT >= 0x0502)
+DWORD WINAPI MprAdminInitializeDll(void);
+DWORD WINAPI MprAdminTerminateDll(void);
+#endif
+void WINAPI MprAdminLinkHangupNotification(RAS_PORT_0*,RAS_PORT_1*);
+void WINAPI MprAdminReleaseIpAddress(WCHAR*,WCHAR*,DWORD*);
+/*--- Remote Access Service Administration Reference - RAS Administration Functions - RAS User Administration Functions */
+DWORD WINAPI MprAdminGetPDCServer(const WCHAR*,const WCHAR*,LPWSTR);
+DWORD WINAPI MprAdminSendUserMessage(MPR_SERVER_HANDLE,HANDLE,LPWSTR);
+DWORD WINAPI MprAdminUserGetInfo(const WCHAR*,const WCHAR*,DWORD,LPBYTE);
+DWORD WINAPI MprAdminUserSetInfo(const WCHAR*,const WCHAR*,DWORD,const LPBYTE);
+/*--- Router Management Reference - Router Administration Functions */
+DWORD WINAPI MprAdminBufferFree(LPVOID);
+DWORD WINAPI MprAdminDeregisterConnectionNotification(MPR_SERVER_HANDLE,HANDLE);
+DWORD WINAPI MprAdminEstablishDomainRasServer(PWCHAR,PWCHAR,BOOL);
+DWORD WINAPI MprAdminGetErrorString(DWORD,LPWSTR*);
+DWORD WINAPI MprAdminInterfaceConnect(MPR_SERVER_HANDLE,HANDLE,HANDLE,BOOL);
+DWORD WINAPI MprAdminInterfaceCreate(MPR_SERVER_HANDLE,DWORD,LPBYTE,HANDLE*);
+DWORD WINAPI MprAdminInterfaceDelete(MPR_SERVER_HANDLE,HANDLE);
+DWORD WINAPI MprAdminInterfaceDeviceGetInfo(MPR_SERVER_HANDLE,HANDLE,DWORD,DWORD,LPBYTE*);
+DWORD WINAPI MprAdminInterfaceDeviceSetInfo(MPR_SERVER_HANDLE,HANDLE,DWORD,DWORD,LPBYTE);
+DWORD WINAPI MprAdminInterfaceDisconnect(MPR_SERVER_HANDLE,HANDLE);
+DWORD WINAPI MprAdminInterfaceEnum(MPR_SERVER_HANDLE,DWORD,LPBYTE*,DWORD,LPDWORD,LPDWORD,LPDWORD);
+DWORD WINAPI MprAdminInterfaceGetCredentials(LPWSTR,LPWSTR,LPWSTR,LPWSTR,LPWSTR);
+DWORD WINAPI MprAdminInterfaceGetHandle(MPR_SERVER_HANDLE,LPWSTR,HANDLE*,BOOL);
+DWORD WINAPI MprAdminInterfaceGetInfo(MPR_SERVER_HANDLE,HANDLE,DWORD,LPBYTE*);
+DWORD WINAPI MprAdminInterfaceQueryUpdateResult(MPR_SERVER_HANDLE,HANDLE,DWORD,LPDWORD);
+DWORD WINAPI MprAdminInterfaceSetCredentials(LPWSTR,LPWSTR,LPWSTR,LPWSTR,LPWSTR);
+DWORD WINAPI MprAdminInterfaceSetCredentialsEx(MPR_SERVER_HANDLE,HANDLE,DWORD,LPBYTE);
+DWORD WINAPI MprAdminInterfaceSetInfo(MPR_SERVER_HANDLE,HANDLE,DWORD,LPBYTE);
+DWORD WINAPI MprAdminInterfaceTransportAdd(MPR_SERVER_HANDLE,HANDLE,DWORD,LPBYTE,DWORD);
+DWORD WINAPI MprAdminInterfaceTransportGetInfo(MPR_SERVER_HANDLE,HANDLE,DWORD,LPBYTE*,LPDWORD);
+DWORD WINAPI MprAdminInterfaceTransportRemove(MPR_SERVER_HANDLE,HANDLE,DWORD);
+DWORD WINAPI MprAdminInterfaceTransportSetInfo(MPR_SERVER_HANDLE,HANDLE,DWORD,LPBYTE,DWORD);
+DWORD WINAPI MprAdminInterfaceUpdatePhonebookInfo(MPR_SERVER_HANDLE,HANDLE);
+DWORD WINAPI MprAdminInterfaceUpdateRoutes(MPR_SERVER_HANDLE,HANDLE,DWORD,HANDLE);
+DWORD WINAPI MprAdminIsDomainRasServer(PWCHAR,PWCHAR,PBOOL);
+BOOL WINAPI MprAdminIsServiceRunning(LPWSTR);
+DWORD WINAPI MprAdminRegisterConnectionNotification(MPR_SERVER_HANDLE,HANDLE);
+DWORD WINAPI MprAdminServerConnect(LPWSTR,MPR_SERVER_HANDLE*);
+void WINAPI MprAdminServerDisconnect(MPR_SERVER_HANDLE);
+DWORD WINAPI MprAdminServerGetCredentials(MPR_SERVER_HANDLE,DWORD,LPBYTE*);
+DWORD WINAPI MprAdminInterfaceGetCredentialsEx(MPR_SERVER_HANDLE,HANDLE,DWORD,LPBYTE*);
+DWORD WINAPI MprAdminServerGetInfo(MPR_SERVER_HANDLE,DWORD,LPBYTE*);
+DWORD WINAPI MprAdminServerSetCredentials(MPR_SERVER_HANDLE,DWORD,LPBYTE);
+DWORD WINAPI MprAdminServerSetInfo(MPR_SERVER_HANDLE,DWORD,LPBYTE);
+DWORD WINAPI MprAdminTransportCreate(MPR_SERVER_HANDLE,DWORD,LPWSTR,LPBYTE,DWORD,LPBYTE,DWORD,LPWSTR);
+DWORD WINAPI MprAdminTransportGetInfo(MPR_SERVER_HANDLE,DWORD,LPBYTE*,LPDWORD,LPBYTE*,LPDWORD);
+DWORD WINAPI MprAdminTransportSetInfo(MPR_SERVER_HANDLE,DWORD,LPBYTE,DWORD,LPBYTE,DWORD);
+/*--- Router Management Reference - Router Configuration Functions */
+DWORD WINAPI MprConfigBufferFree(LPVOID);
+DWORD WINAPI MprConfigGetFriendlyName(HANDLE,PWCHAR,PWCHAR,DWORD);
+DWORD WINAPI MprConfigGetGuidName(HANDLE,PWCHAR,PWCHAR,DWORD);
+DWORD WINAPI MprConfigInterfaceCreate(HANDLE,DWORD,LPBYTE,HANDLE*);
+DWORD WINAPI MprConfigInterfaceDelete(HANDLE,HANDLE);
+DWORD WINAPI MprConfigInterfaceEnum(HANDLE,DWORD,LPBYTE*,DWORD,LPDWORD,LPDWORD,LPDWORD);
+DWORD WINAPI MprConfigInterfaceGetHandle(HANDLE,LPWSTR,HANDLE*);
+DWORD WINAPI MprConfigInterfaceGetInfo(HANDLE,HANDLE,DWORD,LPBYTE*,LPDWORD);
+DWORD WINAPI MprConfigInterfaceSetInfo(HANDLE,HANDLE,DWORD,LPBYTE);
+DWORD WINAPI MprConfigInterfaceTransportAdd(HANDLE,HANDLE,DWORD,LPWSTR,LPBYTE,DWORD,HANDLE*);
+DWORD WINAPI MprConfigInterfaceTransportEnum(HANDLE,HANDLE,DWORD,LPBYTE*,DWORD,LPDWORD,LPDWORD,LPDWORD);
+DWORD WINAPI MprConfigInterfaceTransportGetHandle(HANDLE,HANDLE,DWORD,HANDLE*);
+DWORD WINAPI MprConfigInterfaceTransportGetInfo(HANDLE,HANDLE,HANDLE,LPBYTE*,LPDWORD);
+DWORD WINAPI MprConfigInterfaceTransportRemove(HANDLE,HANDLE,HANDLE);
+DWORD WINAPI MprConfigInterfaceTransportSetInfo(HANDLE,HANDLE,HANDLE,LPBYTE,DWORD);
+DWORD WINAPI MprConfigServerBackup(HANDLE,LPWSTR);
+DWORD WINAPI MprConfigServerConnect(LPWSTR,HANDLE*);
+void WINAPI MprConfigServerDisconnect(HANDLE);
+DWORD WINAPI MprConfigServerGetInfo(HANDLE,DWORD,LPBYTE*);
+DWORD WINAPI MprConfigServerInstall(DWORD,PVOID);
+DWORD WINAPI MprConfigServerRestore(HANDLE,LPWSTR);
+DWORD WINAPI MprConfigServerSetInfo(HANDLE,DWORD,LPBYTE);
+DWORD WINAPI MprConfigTransportCreate(HANDLE,DWORD,LPWSTR,LPBYTE,DWORD,LPBYTE,DWORD,LPWSTR,HANDLE);
+DWORD WINAPI MprConfigTransportDelete(HANDLE,HANDLE);
+DWORD WINAPI MprConfigTransportEnum(HANDLE,DWORD,LPBYTE*,DWORD,LPDWORD,LPDWORD,LPDWORD);
+DWORD WINAPI MprConfigTransportGetHandle(HANDLE,DWORD,HANDLE*);
+DWORD WINAPI MprConfigTransportGetInfo(HANDLE,HANDLE,LPBYTE*,LPDWORD,LPBYTE*,LPDWORD,LPWSTR*);
+DWORD WINAPI MprConfigTransportSetInfo(HANDLE,HANDLE,LPBYTE,DWORD,LPBYTE,DWORD,LPWSTR);
+/*--- Router Management Reference - Information Header Functions */
+DWORD WINAPI MprInfoBlockAdd(LPVOID,DWORD,DWORD,DWORD,LPBYTE,LPVOID*);
+DWORD WINAPI MprInfoBlockFind(LPVOID,DWORD,LPDWORD,LPDWORD,LPBYTE*);
+DWORD WINAPI MprInfoBlockQuerySize(LPVOID);
+DWORD WINAPI MprInfoBlockRemove(LPVOID,DWORD,LPVOID*);
+DWORD WINAPI MprInfoBlockSet(LPVOID,DWORD,DWORD,DWORD,LPBYTE,LPVOID*);
+DWORD WINAPI MprInfoCreate(DWORD,LPVOID*);
+DWORD WINAPI MprInfoDelete(LPVOID);
+DWORD WINAPI MprInfoDuplicate(LPVOID,LPVOID*);
+DWORD WINAPI MprInfoRemoveAll(LPVOID,LPVOID*);
+/*--- Router Management MIB Reference - Router Management MIB Functions */
+typedef HANDLE MIB_SERVER_HANDLE;
+DWORD WINAPI MprAdminMIBBufferFree(LPVOID);
+DWORD WINAPI MprAdminMIBEntryCreate(MIB_SERVER_HANDLE,DWORD,DWORD,LPVOID,DWORD);
+DWORD WINAPI MprAdminMIBEntryDelete(MIB_SERVER_HANDLE,DWORD,DWORD,LPVOID,DWORD);
+DWORD WINAPI MprAdminMIBEntryGet(MIB_SERVER_HANDLE,DWORD,DWORD,LPVOID,DWORD,LPVOID*,LPDWORD);
+DWORD WINAPI MprAdminMIBEntryGetFirst(MIB_SERVER_HANDLE,DWORD,DWORD,LPVOID,DWORD,LPVOID*,LPDWORD);
+DWORD WINAPI MprAdminMIBEntryGetNext(MIB_SERVER_HANDLE,DWORD,DWORD,LPVOID,DWORD,LPVOID*,LPDWORD);
+DWORD WINAPI MprAdminMIBEntrySet(MIB_SERVER_HANDLE,DWORD,DWORD,LPVOID,DWORD);
+DWORD WINAPI MprAdminMIBGetTrapInfo(MIB_SERVER_HANDLE,DWORD,DWORD,LPVOID,DWORD,LPVOID*,LPDWORD);
+DWORD WINAPI MprAdminMIBServerConnect(LPWSTR,MIB_SERVER_HANDLE*);
+void WINAPI MprAdminMIBServerDisconnect(MIB_SERVER_HANDLE);
+DWORD WINAPI MprAdminMIBSetTrapInfo(DWORD,DWORD,HANDLE,LPVOID,DWORD,LPVOID*,LPDWORD);
+#endif /* (_WIN32_WINNT >= 0x0500) */
+
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/mq.h
===================================================================
--- Daodan/MinGW/include/mq.h	(revision 1046)
+++ Daodan/MinGW/include/mq.h	(revision 1046)
@@ -0,0 +1,534 @@
+#ifndef _MQ_H
+#define _MQ_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define PROPID_Q_INSTANCE 101
+#define PROPID_Q_TYPE 102
+#define PROPID_Q_PATHNAME 103
+#define PROPID_Q_JOURNAL 104
+#define PROPID_Q_QUOTA 105
+#define PROPID_Q_BASEPRIORITY 106
+#define PROPID_Q_JOURNAL_QUOTA 107
+#define PROPID_Q_LABEL 108
+#define PROPID_Q_CREATE_TIME 109
+#define PROPID_Q_MODIFY_TIME 110
+#define PROPID_Q_AUTHENTICATE 111
+#define PROPID_Q_PRIV_LEVEL 112
+#define PROPID_Q_TRANSACTION 113
+#define PROPID_Q_PATHNAME_DNS 124
+#define PROPID_Q_MULTICAST_ADDRESS 125
+#define PROPID_Q_ADS_PATH 126
+#define MQ_TRANSACTIONAL_NONE 0
+#define MQ_TRANSACTIONAL 1
+#define MQ_AUTHENTICATE_NONE 0
+#define MQ_AUTHENTICATE 1
+#define MQ_PRIV_LEVEL_NONE 0
+#define MQ_PRIV_LEVEL_OPTIONAL 1
+#define MQ_PRIV_LEVEL_BODY 2
+/*#define PROPID_M_ABORT_COUNT*/
+#define PROPID_M_CLASS 1
+#define PROPID_M_MSGID 2
+#define PROPID_M_CORRELATIONID 3
+#define PROPID_M_PRIORITY 4
+#define PROPID_M_DELIVERY 5
+#define PROPID_M_ACKNOWLEDGE 6
+#define PROPID_M_JOURNAL 7
+#define PROPID_M_APPSPECIFIC 8
+#define PROPID_M_BODY 9
+#define PROPID_M_BODY_SIZE 10
+#define PROPID_M_LABEL 11
+#define PROPID_M_LABEL_LEN 12
+#define PROPID_M_TIME_TO_REACH_QUEUE 13
+#define PROPID_M_TIME_TO_BE_RECEIVED 14
+#define PROPID_M_RESP_QUEUE 15
+#define PROPID_M_RESP_QUEUE_LEN 16
+#define PROPID_M_ADMIN_QUEUE 17
+#define PROPID_M_ADMIN_QUEUE_LEN 18
+#define PROPID_M_VERSION 19
+#define PROPID_M_SENDERID 20
+#define PROPID_M_SENDERID_LEN 21
+#define PROPID_M_SENDERID_TYPE 22
+#define PROPID_M_PRIV_LEVEL 23
+#define PROPID_M_AUTH_LEVEL 24
+#define PROPID_M_AUTHENTICATED 25
+#define PROPID_M_HASH_ALG 26
+#define PROPID_M_ENCRYPTION_ALG 27
+#define PROPID_M_SENDER_CERT 28
+#define PROPID_M_SENDER_CERT_LEN 29
+#define PROPID_M_SRC_MACHINE_ID 30
+#define PROPID_M_SENTTIME 31
+#define PROPID_M_ARRIVEDTIME 32
+#define PROPID_M_DEST_QUEUE 33
+#define PROPID_M_DEST_QUEUE_LEN 34
+#define PROPID_M_EXTENSION 35
+#define PROPID_M_EXTENSION_LEN 36
+#define PROPID_M_SECURITY_CONTEXT 37
+#define PROPID_M_CONNECTOR_TYPE 38
+#define PROPID_M_XACT_STATUS_QUEUE 39
+#define PROPID_M_XACT_STATUS_QUEUE_LEN 40
+#define PROPID_M_TRACE 41
+#define PROPID_M_BODY_TYPE 42
+#define PROPID_M_DEST_SYMM_KEY 43
+#define PROPID_M_DEST_SYMM_KEY_LEN 44
+#define PROPID_M_SIGNATURE 45
+#define PROPID_M_SIGNATURE_LEN 46
+#define PROPID_M_PROV_TYPE 47
+#define PROPID_M_PROV_NAME 48
+#define PROPID_M_PROV_NAME_LEN 49
+#define PROPID_M_FIRST_IN_XACT 50
+#define PROPID_M_LAST_IN_XACT 51
+#define PROPID_M_XACTID 52
+#define PROPID_M_AUTHENTICATED_EX 53
+#if (_WIN32_WINNT >= 0x0501)
+#define PROPID_M_RESP_FORMAT_NAME 54
+#define PROPID_M_RESP_FORMAT_NAME_LEN 55
+#define PROPID_M_DEST_FORMAT_NAME 58
+#define PROPID_M_DEST_FORMAT_NAME_LEN 59
+#define PROPID_M_LOOKUPID 60
+#define PROPID_M_SOAP_ENVELOPE 61
+#define PROPID_M_SOAP_ENVELOPE_LEN 62
+#define PROPID_M_COMPOUND_MESSAGE 63
+#define PROPID_M_COMPOUND_MESSAGE_SIZE 64
+#define PROPID_M_SOAP_HEADER 65
+#define PROPID_M_SOAP_BODY 66
+#endif
+/*#define PROPID_M_TOTAL_ABORT_COUNT*/
+#define PROPID_M_CORRELATIONID_SIZE 20
+#define PROPID_M_MSGID_SIZE 20
+#define PROPID_M_XACTID_SIZE 20
+#define MQMSG_DELIVERY_EXPRESS 0
+#define MQMSG_DELIVERY_RECOVERABLE 1
+#define MQMSG_JOURNAL_NONE 0
+#define MQMSG_DEADLETTER 1
+#define MQMSG_JOURNAL 2
+#define MQMSG_TRACE_NONE 0
+#define MQMSG_SEND_ROUTE_TO_REPORT_QUEUE 1
+#define MQMSG_SENDERID_TYPE_NONE 0
+#define MQMSG_SENDERID_TYPE_SID 1
+#define MQMSG_NOT_FIRST_IN_XACT 0
+#define MQMSG_FIRST_IN_XACT 1
+#define MQMSG_NOT_LAST_IN_XACT 0
+#define MQMSG_LAST_IN_XACT 1
+#define MQMSG_PRIV_LEVEL_NONE 0
+/*#define MQMSG_PRIV_LEVEL_BODY*/
+#define MQMSG_PRIV_LEVEL_BODY_BASE 1
+#define MQMSG_PRIV_LEVEL_BODY_ENHANCED 3
+#define MQMSG_AUTHENTICATION_NOT_REQUESTED 0
+#define MQMSG_AUTHENTICATION_REQUESTED 1
+#define MQMSG_AUTHENTICATION_REQUESTED_EX 3
+#define MQMSG_AUTH_LEVEL_NONE 0
+#define MQMSG_AUTH_LEVEL_ALWAYS 1
+#define MQMSG_AUTH_LEVEL_MSMQ10 2
+#define MQMSG_AUTH_LEVEL_MSMQ20 4
+#define MQMSG_AUTH_LEVEL_SIG10 2
+#define MQMSG_AUTH_LEVEL_SIG20 4
+#define MQMSG_AUTH_LEVEL_SIG30 8
+#define MQMSG_AUTHENTICATED_SIG10 1
+#define MQMSG_AUTHENTICATED_SIG20 3
+#define MQMSG_AUTHENTICATED_SIG30 5
+#define MQMSG_AUTHENTICATED_SIGXML 9
+#define PROPID_MGMT_MSMQ_ACTIVEQUEUES 1
+#define PROPID_MGMT_MSMQ_PRIVATEQ 2
+#define PROPID_MGMT_MSMQ_DSSERVER 3
+#define PROPID_MGMT_MSMQ_CONNECTED 4
+#define PROPID_MGMT_MSMQ_TYPE 5
+#define PROPID_MGMT_MSMQ_BYTES_IN_ALL_QUEUES 6
+#define PROPID_MGMT_QUEUE_PATHNAME 1
+#define PROPID_MGMT_QUEUE_FORMATNAME 2
+#define PROPID_MGMT_QUEUE_TYPE 3
+#define PROPID_MGMT_QUEUE_LOCATION 4
+#define PROPID_MGMT_QUEUE_XACT 5
+#define PROPID_MGMT_QUEUE_FOREIGN 6
+#define PROPID_MGMT_QUEUE_MESSAGE_COUNT 7
+#define PROPID_MGMT_QUEUE_BYTES_IN_QUEUE 8
+#define PROPID_MGMT_QUEUE_JOURNAL_MESSAGE_COUNT 9
+#define PROPID_MGMT_QUEUE_BYTES_IN_JOURNAL 10
+#define PROPID_MGMT_QUEUE_STATE 11
+#define PROPID_MGMT_QUEUE_NEXTHOPS 12
+#define PROPID_MGMT_QUEUE_EOD_LAST_ACK 13
+#define PROPID_MGMT_QUEUE_EOD_LAST_ACK_TIME 14
+#define PROPID_MGMT_QUEUE_EOD_LAST_ACK_COUNT 15
+#define PROPID_MGMT_QUEUE_EOD_FIRST_NON_ACK 16
+#define PROPID_MGMT_QUEUE_EOD_LAST_NON_ACK 17
+#define PROPID_MGMT_QUEUE_EOD_NEXT_SEQ 18
+#define PROPID_MGMT_QUEUE_EOD_NO_READ_COUNT 19
+#define PROPID_MGMT_QUEUE_EOD_NO_ACK_COUNT 20
+#define PROPID_MGMT_QUEUE_EOD_RESEND_TIME 21
+#define PROPID_MGMT_QUEUE_EOD_RESEND_INTERVAL 22
+#define PROPID_MGMT_QUEUE_EOD_RESEND_COUNT 23
+#define PROPID_MGMT_QUEUE_EOD_SOURCE_INFO 24
+/*#define PROPID_MGMT_QUEUE_SUBQUEUE_COUNT*/
+/*#define PROPID_MGMT_QUEUE_SUBQUEUE_NAMES*/
+#define PROPID_PC_VERSION 5801
+#define PROPID_PC_DS_ENABLED 5802
+#define PROPID_QM_SITE_ID 201
+#define PROPID_QM_MACHINE_ID 202
+#define PROPID_QM_PATHNAME 203
+#define PROPID_QM_CONNECTION 204
+#define PROPID_QM_ENCRYPTION_PK 205
+#define PROPID_QM_ENCRYPTION_PK_BASE 231
+#define PROPID_QM_ENCRYPTION_PK_ENHANCED 232
+#define PROPID_QM_PATHNAME_DNS 233
+#define MQ_OK 0x00000000
+#define MQ_INFORMATION_PROPERTY 0x400E0001
+#define MQ_INFORMATION_ILLEGAL_PROPERTY 0x400E0002
+#define MQ_INFORMATION_PROPERTY_IGNORED 0x400E0003
+#define MQ_INFORMATION_UNSUPPORTED_PROPERTY 0x400E0004
+#define MQ_INFORMATION_DUPLICATE_PROPERTY 0x400E0005
+#define MQ_INFORMATION_OPERATION_PENDING 0x400E0006
+#define MQ_INFORMATION_FORMATNAME_BUFFER_TOO_SMALL 0x400E0009
+#define MQ_INFORMATION_INTERNAL_USER_CERT_EXIST 0x400E000A
+#define MQ_INFORMATION_OWNER_IGNORED 0x400E000B
+#define MQ_ERROR 0xC00E0001
+#define MQ_ERROR_PROPERTY 0xC00E0002
+#define MQ_ERROR_QUEUE_NOT_FOUND 0xC00E0003
+#define MQ_ERROR_QUEUE_NOT_ACTIVE 0xC00E0004
+#define MQ_ERROR_QUEUE_EXISTS 0xC00E0005
+#define MQ_ERROR_INVALID_PARAMETER 0xC00E0006
+#define MQ_ERROR_INVALID_HANDLE 0xC00E0007
+#define MQ_ERROR_OPERATION_CANCELLED0xC00E0008
+#define MQ_ERROR_SHARING_VIOLATION 0xC00E0009
+#define MQ_ERROR_SERVICE_NOT_AVAILABLE 0xC00E000B
+#define MQ_ERROR_MACHINE_NOT_FOUND 0xC00E000D
+#define MQ_ERROR_ILLEGAL_SORT 0xC00E0010
+#define MQ_ERROR_ILLEGAL_USER 0xC00E0011
+#define MQ_ERROR_NO_DS 0xC00E0013
+#define MQ_ERROR_ILLEGAL_QUEUE_PATHNAME 0xC00E0014
+#define MQ_ERROR_ILLEGAL_PROPERTY_VALUE 0xC00E0018
+#define MQ_ERROR_ILLEGAL_PROPERTY_VT 0xC00E0019
+#define MQ_ERROR_BUFFER_OVERFLOW 0xC00E001A
+#define MQ_ERROR_IO_TIMEOUT 0xC00E001B
+#define MQ_ERROR_ILLEGAL_CURSOR_ACTION 0xC00E001C
+#define MQ_ERROR_MESSAGE_ALREADY_RECEIVED 0xC00E001D
+#define MQ_ERROR_ILLEGAL_FORMATNAME 0xC00E001E
+#define MQ_ERROR_FORMATNAME_BUFFER_TOO_SMALL 0xC00E001F
+#define MQ_ERROR_UNSUPPORTED_FORMATNAME_OPERATION 0xC00E0020
+#define MQ_ERROR_ILLEGAL_SECURITY_DESCRIPTOR 0xC00E0021
+#define MQ_ERROR_SENDERID_BUFFER_TOO_SMALL 0xC00E0022
+#define MQ_ERROR_SECURITY_DESCRIPTOR_TOO_SMALL 0xC00E0023
+#define MQ_ERROR_CANNOT_IMPERSONATE_CLIENT 0xC00E0024
+#define MQ_ERROR_ACCESS_DENIED 0xC00E0025
+#define MQ_ERROR_PRIVILEGE_NOT_HELD 0xC00E0026
+#define MQ_ERROR_INSUFFICIENT_RESOURCES 0xC00E0027
+#define MQ_ERROR_USER_BUFFER_TOO_SMALL 0xC00E0028
+#define MQ_ERROR_MESSAGE_STORAGE_FAILED 0xC00E002A
+#define MQ_ERROR_SENDER_CERT_BUFFER_TOO_SMALL 0xC00E002B
+#define MQ_ERROR_INVALID_CERTIFICATE 0xC00E002C
+#define MQ_ERROR_CORRUPTED_INTERNAL_CERTIFICATE 0xC00E002D
+#define MQ_ERROR_INTERNAL_USER_CERT_EXIST 0xC00E002E
+#define MQ_ERROR_NO_INTERNAL_USER_CERT 0xC00E002F
+#define MQ_ERROR_CORRUPTED_SECURITY_DATA 0xC00E0030
+#define MQ_ERROR_CORRUPTED_PERSONAL_CERT_STORE 0xC00E0031
+#define MQ_ERROR_COMPUTER_DOES_NOT_SUPPORT_ENCRYPTION 0xC00E0033
+#define MQ_ERROR_BAD_SECURITY_CONTEXT 0xC00E0035
+#define MQ_ERROR_COULD_NOT_GET_USER_SID 0xC00E0036
+#define MQ_ERROR_COULD_NOT_GET_ACCOUNT_INFO 0xC00E0037
+#define MQ_ERROR_ILLEGAL_MQCOLUMNS 0xC00E0038
+#define MQ_ERROR_ILLEGAL_PROPID 0xC00E0039
+#define MQ_ERROR_ILLEGAL_RELATION 0xC00E003A
+#define MQ_ERROR_ILLEGAL_PROPERTY_SIZE 0xC00E003B
+#define MQ_ERROR_ILLEGAL_RESTRICTION_PROPID 0xC00E003C
+#define MQ_ERROR_ILLEGAL_MQQUEUEPROPS 0xC00E003D
+#define MQ_ERROR_PROPERTY_NOTALLOWED 0xC00E003E
+#define MQ_ERROR_INSUFFICIENT_PROPERTIES 0xC00E003F
+#define MQ_ERROR_MACHINE_EXISTS 0xC00E0040
+#define MQ_ERROR_ILLEGAL_MQQMPROPS 0xC00E0041
+#define MQ_ERROR_DS_IS_FULL 0xC00E0042
+#define MQ_ERROR_DS_ERROR 0xC00E0043
+#define MQ_ERROR_INVALID_OWNER 0xC00E0044
+#define MQ_ERROR_UNSUPPORTED_ACCESS_MODE 0xC00E0045
+#define MQ_ERROR_RESULT_BUFFER_TOO_SMALL 0xC00E0046
+#define MQ_ERROR_DELETE_CN_IN_USE 0xC00E0048
+#define MQ_ERROR_NO_RESPONSE_FROM_OBJECT_SERVER 0xC00E0049
+#define MQ_ERROR_OBJECT_SERVER_NOT_AVAILABLE 0xC00E004A
+#define MQ_ERROR_QUEUE_NOT_AVAILABLE 0xC00E004B
+#define MQ_ERROR_DTC_CONNECT 0xC00E004C
+#define MQ_ERROR_TRANSACTION_IMPORT 0xC00E004E
+#define MQ_ERROR_TRANSACTION_USAGE 0xC00E0050
+#define MQ_ERROR_TRANSACTION_SEQUENCE 0xC00E0051
+#define MQ_ERROR_MISSING_CONNECTOR_TYPE 0xC00E0055
+#define MQ_ERROR_STALE_HANDLE 0xC00E0056
+#define MQ_ERROR_TRANSACTION_ENLIST 0xC00E0058
+#define MQ_ERROR_QUEUE_DELETED 0xC00E005A
+#define MQ_ERROR_ILLEGAL_CONTEXT 0xC00E005B
+#define MQ_ERROR_ILLEGAL_SORT_PROPID 0xC00E005C
+#define MQ_ERROR_LABEL_TOO_LONG 0xC00E005D
+#define MQ_ERROR_LABEL_BUFFER_TOO_SMALL 0xC00E005E
+#define MQ_ERROR_MQIS_SERVER_EMPTY 0xC00E005F
+#define MQ_ERROR_MQIS_READONLY_MODE 0xC00E0060
+#define MQ_ERROR_SYMM_KEY_BUFFER_TOO_SMALL 0xC00E0061
+#define MQ_ERROR_SIGNATURE_BUFFER_TOO_SMALL 0xC00E0062
+#define MQ_ERROR_PROV_NAME_BUFFER_TOO_SMALL 0xC00E0063
+#define MQ_ERROR_ILLEGAL_OPERATION 0xC00E0064
+#define MQ_ERROR_WRITE_NOT_ALLOWED 0xC00E0065
+#define MQ_ERROR_WKS_CANT_SERVE_CLIENT 0xC00E0066
+#define MQ_ERROR_DEPEND_WKS_LICENSE_OVERFLOW 0xC00E0067
+#define MQ_CORRUPTED_QUEUE_WAS_DELETED 0xC00E0068
+#define MQ_ERROR_REMOTE_MACHINE_NOT_AVAILABLE 0xC00E0069
+#define MQ_ERROR_UNSUPPORTED_OPERATION 0xC00E006A
+#define MQ_ERROR_ENCRYPTION_PROVIDER_NOT_SUPPORTED 0xC00E006B
+#define MQ_ERROR_CANNOT_SET_CRYPTO_SEC_DESCR 0xC00E006C
+#define MQ_ERROR_CERTIFICATE_NOT_PROVIDED 0xC00E006D
+#define MQ_ERROR_Q_DNS_PROPERTY_NOT_SUPPORTED 0xC00E006E
+#define MQ_ERROR_CANNOT_CREATE_CERT_STORE 0xC00E006F
+#define MQ_ERROR_CANNOT_OPEN_CERT_STORE 0xC00E0070
+#define MQ_ERROR_ILLEGAL_ENTERPRISE_OPERATION 0xC00E0071
+#define MQ_ERROR_CANNOT_GRANT_ADD_GUID 0xC00E0072
+#define MQ_ERROR_CANNOT_LOAD_MSMQOCM 0xC00E0073
+#define MQ_ERROR_NO_ENTRY_POINT_MSMQOCM 0xC00E0074
+#define MQ_ERROR_NO_MSMQ_SERVERS_ON_DC 0xC00E0075
+#define MQ_ERROR_CANNOT_JOIN_DOMAIN 0xC00E0076
+#define MQ_ERROR_CANNOT_CREATE_ON_GC 0xC00E0077
+#define MQ_ERROR_GUID_NOT_MATCHING 0xC00E0078
+#define MQ_ERROR_PUBLIC_KEY_NOT_FOUND 0xC00E0079
+#define MQ_ERROR_PUBLIC_KEY_DOES_NOT_EXIST 0xC00E007A
+#define MQ_ERROR_ILLEGAL_MQPRIVATEPROPS 0xC00E007B
+#define MQ_ERROR_NO_GC_IN_DOMAIN 0xC00E007C
+#define MQ_ERROR_NO_MSMQ_SERVERS_ON_GC 0xC00E007D
+#define MQ_ERROR_CANNOT_GET_DN 0xC00E007E
+#define MQ_ERROR_CANNOT_HASH_DATA_EX 0xC00E007F
+#define MQ_ERROR_CANNOT_SIGN_DATA_EX 0xC00E0080
+#define MQ_ERROR_CANNOT_CREATE_HASH_EX 0xC00E0081
+#define MQ_ERROR_FAIL_VERIFY_SIGNATURE_EX 0xC00E0082
+#define MQ_ERROR_CANNOT_DELETE_PSC_OBJECTS 0xC00E0083
+#define MQ_ERROR_NO_MQUSER_OU 0xC00E0084
+#define MQ_ERROR_CANNOT_LOAD_MQAD 0xC00E0085
+#define MQ_ERROR_CANNOT_LOAD_MQDSSRV 0xC00E0086
+#define MQ_ERROR_PROPERTIES_CONFLICT 0xC00E0087
+#define MQ_ERROR_MESSAGE_NOT_FOUND 0xC00E0088
+#define MQ_ERROR_CANT_RESOLVE_SITES 0xC00E0089
+#define MQ_ERROR_NOT_SUPPORTED_BY_DEPENDENT_CLIENTS 0xC00E008A
+#define MQ_ERROR_OPERATION_NOT_SUPPORTED_BY_REMOTE_COMPUTER 0xC00E008B
+#define MQ_ERROR_NOT_A_CORRECT_OBJECT_CLASS 0xC00E008C
+#define MQ_ERROR_MULTI_SORT_KEYS 0xC00E008D
+#define MQ_ERROR_GC_NEEDED 0xC00E008E
+#define MQ_ERROR_DS_BIND_ROOT_FOREST 0xC00E008F
+#define MQ_ERROR_DS_LOCAL_USER 0xC00E0090
+#define MQ_ERROR_Q_ADS_PROPERTY_NOT_SUPPORTED 0xC00E0091
+#define MQ_ERROR_BAD_XML_FORMAT 0xC00E0092
+#define MQ_ERROR_UNSUPPORTED_CLASS xC00E0093
+#define MQ_ERROR_UNINITIALIZED_OBJECT 0xC00E0094
+#define MQ_ERROR_CANNOT_CREATE_PSC_OBJECTS 0xC00E0095
+#define MQ_ERROR_CANNOT_UPDATE_PSC_OBJECTS 0xC00E0096
+#define MQSEC_DELETE_MESSAGE 0x00000001
+#define MQSEC_PEEK_MESSAGE 0x00000002
+#define MQSEC_WRITE_MESSAGE 0x00000004
+#define MQSEC_DELETE_JOURNAL_MESSAGE 0x00000008
+#define MQSEC_SET_QUEUE_PROPERTIES 0x00000010
+#define MQSEC_GET_QUEUE_PROPERTIES 0x00000020
+#define MQSEC_DELETE_QUEUE 0x00010000
+#define MQSEC_GET_QUEUE_PERMISSIONS 0x00020000
+#define MQSEC_CHANGE_QUEUE_PERMISSIONS 0x00040000
+#define MQSEC_TAKE_QUEUE_OWNERSHIP 0x00080000
+#define MQSEC_RECEIVE_MESSAGE (MQSEC_DELETE_MESSAGE|MQSEC_PEEK_MESSAGE)
+#define MQSEC_RECEIVE_JOURNAL_MESSAGE (MQSEC_DELETE_JOURNAL_MESSAGE|MQSEC_PEEK_MESSAGE)
+#define MQSEC_QUEUE_GENERIC_READ (MQSEC_GET_QUEUE_PROPERTIES|MQSEC_GET_QUEUE_PERMISSIONS|MQSEC_RECEIVE_MESSAGE|MQSEC_RECEIVE_JOURNAL_MESSAGE)
+#define MQSEC_QUEUE_GENERIC_WRITE (MQSEC_GET_QUEUE_PROPERTIES|MQSEC_GET_QUEUE_PERMISSIONS|MQSEC_WRITE_MESSAGE)
+#define MQSEC_QUEUE_GENERIC_ALL (MQSEC_RECEIVE_MESSAGE|MQSEC_RECEIVE_JOURNAL_MESSAGE|MQSEC_WRITE_MESSAGE|MQSEC_SET_QUEUE_PROPERTIES|MQSEC_GET_QUEUE_PROPERTIES|MQSEC_DELETE_QUEUE|MQSEC_GET_QUEUE_PERMISSIONS|MQSEC_CHANGE_QUEUE_PERMISSIONS|MQSEC_TAKE_QUEUE_OWNERSHIP)
+#define MSMQ_CONNECTED L"CONNECTED"
+#define MSMQ_DISCONNECTED L"DISCONNECTED"
+#define MQ_RECEIVE_ACCESS 0x00000001
+#define MQ_SEND_ACCESS 0x00000002
+#define MQ_PEEK_ACCESS 0x00000020
+#define MQ_ADMIN_ACCESS 0x00000080
+#define MQ_DENY_NONE 0x00000000
+#define MQ_DENY_RECEIVE_SHARE 0x00000001
+#define MQ_ACTION_RECEIVE 0x00000000
+#define MQ_ACTION_PEEK_CURRENT 0x80000000
+#define MQ_ACTION_PEEK_NEXT 0x80000001
+/*#define MQ_NO_TRANSACTION*/
+/*#define MQ_MTS_TRANSACTION*/
+/*#define MQ_SINGLE_MESSAGE*/
+/*#define MQ_XA_TRANSACTION*/
+#if (_WIN32_WINNT >= 0x0501)
+#define MQ_LOOKUP_PEEK_CURRENT 0x40000010
+#define MQ_LOOKUP_PEEK_NEXT 0x40000011
+#define MQ_LOOKUP_PEEK_PREV 0x40000012
+#define MQ_LOOKUP_PEEK_FIRST 0x40000014
+#define MQ_LOOKUP_PEEK_LAST 0x40000018
+#define MQ_LOOKUP_RECEIVE_CURRENT 0x40000020
+#define MQ_LOOKUP_RECEIVE_NEXT 0x40000021
+#define MQ_LOOKUP_RECEIVE_PREV 0x40000022
+#define MQ_LOOKUP_RECEIVE_FIRST 0x40000024
+#define MQ_LOOKUP_RECEIVE_LAST 0x40000028
+#endif
+#if (_WIN32_WINNT >= 0x0500)
+#define MQCERT_REGISTER_ALWAYS 0x00000001
+#define MQCERT_REGISTER_IF_NOT_EXIST 0x00000002
+#endif
+#define PRLT 0
+#define PRLE 1
+#define PRGT 2
+#define PRGE 3
+#define PREQ 4
+#define PRNE 5
+#define MQ_MIN_PRIORITY 0
+#define MQ_MAX_PRIORITY 7
+#define MQ_DEFAULT_PRIORITY 3
+#define QUERY_SORTASCEND 0
+#define QUERY_SORTDESCEND 1
+
+typedef struct tagMQCOLUMNSET {
+	ULONG cCol;
+	PROPID *aCol;
+} MQCOLUMNSET;
+typedef PROPID MGMTPROPID;
+typedef struct tagMQMGMTPROPS {
+	DWORD cProp;
+	MGMTPROPID *aPropID;
+	MQPROPVARIANT *aPropVar;
+	HRESULT *aStatus;
+} MQMGMTPROPS;
+typedef PROPID MSGPROPID;
+typedef struct tagMQMSGPROPS {
+	DWORD cProp;
+	MSGPROPID *aPropID;
+	MQPROPVARIANT *aPropVar;
+	HRESULT *aStatus;
+} MQMSGPROPS;
+typedef PROPID QMPROPID;
+typedef struct tagMQPRIVATEPROPS {
+	DWORD cProp;
+	QMPROPID *aPropID;
+	MQPROPVARIANT *aPropVar;
+	HRESULT *aStatus;
+} MQPRIVATEPROPS;
+typedef struct tagMQPROPERTYRESTRICTION {
+	ULONG rel;
+	PROPID prop;
+	MQPROPVARIANT prval;
+} MQPROPERTYRESTRICTION;
+typedef struct tagMQQMPROPS {
+	DWORD cProp;
+	QMPROPID *aPropID;
+	MQPROPVARIANT *aPropVar;
+	HRESULT *aStatus;
+} MQQMPROPS;
+typedef PROPID QUEUEPROPID;
+typedef struct tagMQQUEUEPROPS {
+	DWORD cProp;
+	QUEUEPROPID *aPropID;
+	MQPROPVARIANT *aPropVar;
+	HRESULT *aStatus;
+} MQQUEUEPROPS;
+typedef struct tagMQRESTRICTION {
+	ULONG cRes;
+	MQPROPERTYRESTRICTION *paPropRes;
+} MQRESTRICTION;
+typedef struct tagMQSORTKEY {
+	PROPID propColumn;
+	ULONG dwOrder;
+} MQSORTKEY;
+typedef struct tagMQSORTSET {
+	ULONG cCol;
+	MQSORTKEY *aCol;
+} MQSORTSET;
+typedef struct tagMQPROPVARIANT {
+	VARTYPE vt;
+	WORD wReserved1;
+	WORD wReserved2;
+	WORD wReserved3;
+	union {
+		UCHAR bVal;
+		SHORT iVal;
+		USHORT uiVal;
+		VARIANT_BOOL boolVal;
+		LONG lVal;
+		ULONG ulVal;
+		ULARGE_INTEGER uhVal;
+		SCODE scode;
+		DATE date;
+		CLSID _RPC_FAR *puuid;
+		BLOB blob;
+		LPOLESTR bstrVal;
+		LPSTR pszVal;
+		LPWSTR pwszVal;
+		CAUB caub;
+		CAI cai;
+		CAUI caui;
+		CABOOL cabool;
+		CAL cal;
+		CAUL caul;
+		CACLSID cauuid;
+		CABSTR cabstr;
+		CALPWSTR calpwstr;
+		CAPROPVARIANT capropvar;
+	};                      
+} MQPROPVARIANT;
+typedef struct tagSEQUENCE_INFO {
+	LONGLONG SeqID;
+	ULONG SeqNo; 
+	ULONG PrevNo;
+} SEQUENCE_INFO;
+typedef HANDLE QUEUEHANDLE;
+typedef VOID (*PMQRECEIVECALLBACK)(VOID);
+
+#if (_WIN32_WINNT >= 0x0501)
+HRESULT WINAPI MQADsPathToFormatName(LPCWSTR,LPWSTR,LPDWORD);
+#endif
+HRESULT WINAPI MQBeginTransaction(ITransaction **);
+HRESULT WINAPI MQCloseCursor(HANDLE);
+HRESULT WINAPI MQCloseQueue(QUEUEHANDLE);
+HRESULT WINAPI MQCreateCursor(QUEUEHANDLE,PHANDLE);
+HRESULT WINAPI MQCreateQueue(PSECURITY_DESCRIPTOR,MQQUEUEPROPS *,LPWSTR,LPDWORD);
+HRESULT WINAPI MQDeleteQueue(LPCWSTR);
+VOID WINAPI MQFreeMemory(PVOID);
+VOID WINAPI MQFreeSecurityContext(HANDLE);
+HRESULT WINAPI MQGetMachineProperties(LPCWSTR,const GUID *,MQQMPROPS *);
+#if (_WIN32_WINNT >= 0x0500)
+HRESULT WINAPI MQGetOverlappedResult(LPOVERLAPPED);
+HRESULT WINAPI MQGetPrivateComputerInformation(LPCWSTR,MQPRIVATEPROPS *);
+#endif
+HRESULT WINAPI MQGetQueueProperties(LPCWSTR,MQQUEUEPROPS *);
+HRESULT WINAPI MQGetQueueSecurity(LPCWSTR,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR,DWORD,LPDWORD);
+HRESULT WINAPI MQGetSecurityContext(LPVOID,DWORD,HANDLE *);
+HRESULT WINAPI MQGetMachineProperties(LPCWSTR,const GUID *,MQQMPROPS *);
+HRESULT WINAPI MQGetOverlappedResult(LPOVERLAPPED);
+HRESULT WINAPI MQGetPrivateComputerInformation(LPCWSTR,MQPRIVATEPROPS *);
+HRESULT WINAPI MQGetQueueProperties(LPCWSTR,MQQUEUEPROPS *);
+HRESULT WINAPI MQGetQueueSecurity(LPCWSTR,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR,DWORD,LPDWORD);
+HRESULT WINAPI MQGetSecurityContext(LPVOID,DWORD,HANDLE *);
+#if (_WIN32_WINNT >= 0x0500)
+HRESULT WINAPI MQGetSecurityContextEx(LPVOID,DWORD,HANDLE *);
+#endif
+HRESULT WINAPI MQHandleToFormatName(QUEUEHANDLE,LPWSTR,LPDWORD);
+HRESULT WINAPI MQInstanceToFormatName(GUID *,LPWSTR,LPDWORD);
+HRESULT WINAPI MQLocateBegin(LPCWSTR,MQRESTRICTION *,MQCOLUMNSET *,MQSORTSET *,PHANDLE);
+HRESULT WINAPI MQLocateEnd(HANDLE);
+HRESULT WINAPI MQLocateNext(HANDLE,DWORD *,MQPROPVARIANT[]);
+#if (_WIN32_WINNT >= 0x0600)
+HRESULT WINAPI MQMarkMessageRejected(QUEUEHANDLE,ULONGLONG);
+#endif
+#if (_WIN32_WINNT >= 0x0501)
+HRESULT WINAPI MQMgmtAction(LPCWSTR,LPCWSTR,LPCWSTR);
+HRESULT WINAPI MQMgmtGetInfo(LPCWSTR,LPCWSTR,MQMGMTPROPS *);
+#endif
+#if (_WIN32_WINNT >= 0x0600)
+HRESULT WINAPI MQMoveMessage(QUEUEHANDLE,QUEUEHANDLE,ULONGLONG,ITransaction *);
+#endif
+HRESULT WINAPI MQOpenQueue(LPCWSTR,DWORD,DWORD,QUEUEHANDLE *);
+HRESULT WINAPI MQPathNameToFormatName(LPCWSTR,LPWSTR,LPDWORD);
+#if (_WIN32_WINNT >= 0x0501)
+HRESULT WINAPI MQPurgeQueue(QUEUEHANDLE);
+#endif
+HRESULT WINAPI MQReceiveMessage(QUEUEHANDLE,DWORD,DWORD,MQMSGPROPS *,LPOVERLAPPED,PMQRECEIVECALLBACK,HANDLE,ITransaction *);
+#if (_WIN32_WINNT >= 0x0501)
+HRESULT WINAPI MQReceiveMessageByLookupId(QUEUEHANDLE,ULONGLONG,DWORD,MQMSGPROPS *,LPOVERLAPPED,PMQRECEIVECALLBACK,ITransaction *);
+#endif
+#if (_WIN32_WINNT >= 0x0500)
+HRESULT WINAPI MQRegisterCertificate(DWORD,PVOID,DWORD);
+#endif
+HRESULT WINAPI MQSendMessage(QUEUEHANDLE,MQMSGPROPS *,ITransaction *);
+HRESULT WINAPI MQSetQueueProperties(LPCWSTR,MQQUEUEPROPS *);
+HRESULT WINAPI MQSetQueueSecurity(LPCWSTR,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR);
+
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/msacm.h
===================================================================
--- Daodan/MinGW/include/msacm.h	(revision 1046)
+++ Daodan/MinGW/include/msacm.h	(revision 1046)
@@ -0,0 +1,255 @@
+/*author: Adrian Sandor
+  written for MinGW*/
+#ifndef _MSACM_H
+#define _MSACM_H
+
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+DECLARE_HANDLE(HACMDRIVERID);
+typedef HACMDRIVERID *PHACMDRIVERID;
+typedef HACMDRIVERID *LPHACMDRIVERID;
+DECLARE_HANDLE(HACMDRIVER);
+typedef HACMDRIVER *PHACMDRIVER;
+typedef HACMDRIVER *LPHACMDRIVER;
+DECLARE_HANDLE(HACMSTREAM);
+typedef HACMSTREAM *PHACMSTREAM;
+typedef HACMSTREAM *LPHACMSTREAM;
+DECLARE_HANDLE(HACMOBJ);
+typedef HACMOBJ *PHACMOBJ;
+typedef HACMOBJ *LPHACMOBJ;
+
+/*found through experimentation*/
+#define ACMDRIVERDETAILS_SHORTNAME_CHARS 32
+#define ACMDRIVERDETAILS_LONGNAME_CHARS 128
+#define ACMDRIVERDETAILS_COPYRIGHT_CHARS 80
+#define ACMDRIVERDETAILS_LICENSING_CHARS 128
+
+/*I don't know the right values for these macros*/
+#define ACMFORMATDETAILS_FORMAT_CHARS 256
+#define ACMFORMATTAGDETAILS_FORMATTAG_CHARS 256
+#define ACMDRIVERDETAILS_FEATURES_CHARS 256
+
+/*msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_acmformatdetails_str.asp*/
+typedef struct {
+	DWORD          cbStruct;
+	DWORD          dwFormatIndex;
+	DWORD          dwFormatTag;
+	DWORD          fdwSupport;
+	LPWAVEFORMATEX pwfx;
+	DWORD          cbwfx;
+	char szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
+} ACMFORMATDETAILSA, *LPACMFORMATDETAILSA;
+typedef struct {
+	DWORD          cbStruct;
+	DWORD          dwFormatIndex;
+	DWORD          dwFormatTag;
+	DWORD          fdwSupport;
+	LPWAVEFORMATEX pwfx;
+	DWORD          cbwfx;
+	WCHAR szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
+} ACMFORMATDETAILSW, *LPACMFORMATDETAILSW;
+
+/*msdn.microsoft.com/en-us/library/dd742926%28VS.85%29.aspx*/
+typedef struct {
+  DWORD     cbStruct;
+  DWORD     fdwStatus;
+  DWORD_PTR dwUser;
+  LPBYTE    pbSrc;
+  DWORD     cbSrcLength;
+  DWORD     cbSrcLengthUsed;
+  DWORD_PTR dwSrcUser;
+  LPBYTE    pbDst;
+  DWORD     cbDstLength;
+  DWORD     cbDstLengthUsed;
+  DWORD_PTR dwDstUser;
+  DWORD     dwReservedDriver[10];
+} ACMSTREAMHEADER, *LPACMSTREAMHEADER;
+
+/*msdn.microsoft.com/en-us/library/dd757711%28v=VS.85%29.aspx*/
+typedef struct {
+  DWORD cbStruct;
+  DWORD dwFilterTag;
+  DWORD fdwFilter;
+  DWORD dwReserved[5];
+} WAVEFILTER, *LPWAVEFILTER;
+
+/*msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_acmformattagdetails_str.asp*/
+typedef struct {
+	DWORD cbStruct;
+	DWORD dwFormatTagIndex;
+	DWORD dwFormatTag;
+	DWORD cbFormatSize;
+	DWORD fdwSupport;
+	DWORD cStandardFormats;
+	char szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
+} ACMFORMATTAGDETAILSA, *LPACMFORMATTAGDETAILSA;
+typedef struct {
+	DWORD cbStruct;
+	DWORD dwFormatTagIndex;
+	DWORD dwFormatTag;
+	DWORD cbFormatSize;
+	DWORD fdwSupport;
+	DWORD cStandardFormats;
+	WCHAR szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
+} ACMFORMATTAGDETAILSW, *LPACMFORMATTAGDETAILSW;
+
+/*msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_acmdriverdetails_str.asp*/
+typedef struct {
+	DWORD  cbStruct;
+	FOURCC fccType;
+	FOURCC fccComp;
+	WORD   wMid;
+	WORD   wPid;
+	DWORD  vdwACM;
+	DWORD  vdwDriver;
+	DWORD  fdwSupport;
+	DWORD  cFormatTags;
+	DWORD  cFilterTags;
+	HICON  hicon;
+	char  szShortName[ACMDRIVERDETAILS_SHORTNAME_CHARS];
+	char  szLongName[ACMDRIVERDETAILS_LONGNAME_CHARS];
+	char  szCopyright[ACMDRIVERDETAILS_COPYRIGHT_CHARS];
+	char  szLicensing[ACMDRIVERDETAILS_LICENSING_CHARS];
+	char  szFeatures[ACMDRIVERDETAILS_FEATURES_CHARS];
+} ACMDRIVERDETAILSA, *LPACMDRIVERDETAILSA;
+typedef struct {
+	DWORD  cbStruct;
+	FOURCC fccType;
+	FOURCC fccComp;
+	WORD   wMid;
+	WORD   wPid;
+	DWORD  vdwACM;
+	DWORD  vdwDriver;
+	DWORD  fdwSupport;
+	DWORD  cFormatTags;
+	DWORD  cFilterTags;
+	HICON  hicon;
+	WCHAR  szShortName[ACMDRIVERDETAILS_SHORTNAME_CHARS];
+	WCHAR  szLongName[ACMDRIVERDETAILS_LONGNAME_CHARS];
+	WCHAR  szCopyright[ACMDRIVERDETAILS_COPYRIGHT_CHARS];
+	WCHAR  szLicensing[ACMDRIVERDETAILS_LICENSING_CHARS];
+	WCHAR  szFeatures[ACMDRIVERDETAILS_FEATURES_CHARS];
+} ACMDRIVERDETAILSW, *LPACMDRIVERDETAILSW;
+
+/*msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_acmformatenumcallback.asp*/
+typedef BOOL (CALLBACK *ACMFORMATENUMCBA) (
+	HACMDRIVERID        hadid,
+	LPACMFORMATDETAILSA pafd,
+	DWORD_PTR           dwInstance,
+	DWORD               fdwSupport
+);
+typedef BOOL (CALLBACK *ACMFORMATENUMCBW) (
+	HACMDRIVERID        hadid,
+	LPACMFORMATDETAILSW pafd,
+	DWORD_PTR           dwInstance,
+	DWORD               fdwSupport
+);
+
+/*msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_acmformattagenumcallback.asp*/
+typedef BOOL (CALLBACK *ACMFORMATTAGENUMCBA) (
+	HACMDRIVERID           hadid,
+	LPACMFORMATTAGDETAILSA paftd,
+	DWORD_PTR              dwInstance,
+	DWORD                  fdwSupport
+);
+typedef BOOL (CALLBACK *ACMFORMATTAGENUMCBW) (
+	HACMDRIVERID           hadid,
+	LPACMFORMATTAGDETAILSW paftd,
+	DWORD_PTR              dwInstance,
+	DWORD                  fdwSupport
+);
+
+/*msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_acmdriverenumcallback.asp*/
+typedef BOOL (CALLBACK *ACMDRIVERENUMCB) (
+	HACMDRIVERID hadid,
+	DWORD_PTR    dwInstance,
+	DWORD        fdwSupport
+);
+
+/*and now the functions...*/
+
+/*msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_acmdriveropen.asp*/
+MMRESULT WINAPI acmDriverOpen(LPHACMDRIVER phad, HACMDRIVERID hadid, DWORD fdwOpen);
+/*msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_acmdriverenum.asp*/
+MMRESULT WINAPI acmDriverEnum(ACMDRIVERENUMCB fnCallback, DWORD_PTR dwInstance, DWORD fdwEnum);
+/*msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_acmformatenum.asp*/
+MMRESULT WINAPI acmFormatEnumA(HACMDRIVER had, LPACMFORMATDETAILSA pafd, ACMFORMATENUMCBA fnCallback, DWORD_PTR dwInstance, DWORD fdwEnum);
+MMRESULT WINAPI acmFormatEnumW(HACMDRIVER had, LPACMFORMATDETAILSW pafd, ACMFORMATENUMCBW fnCallback, DWORD_PTR dwInstance, DWORD fdwEnum);
+
+/*msdn.microsoft.com/en-us/library/dd742885%28VS.85%29.aspx*/
+MMRESULT WINAPI acmDriverAddA(LPHACMDRIVERID phadid, HINSTANCE hinstModule, LPARAM lParam, DWORD dwPriority, DWORD fdwAdd);
+MMRESULT WINAPI acmDriverAddW(LPHACMDRIVERID phadid, HINSTANCE hinstModule, LPARAM lParam, DWORD dwPriority, DWORD fdwAdd);
+
+/*msdn.microsoft.com/en-us/library/dd742897%28v=VS.85%29.aspx*/
+MMRESULT WINAPI acmDriverRemove(HACMDRIVERID hadid, DWORD fdwRemove);
+
+/*msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_acmdriverclose.asp*/
+MMRESULT WINAPI acmDriverClose(HACMDRIVER had, DWORD fdwClose);
+/*msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_acmdriverdetails.asp*/
+MMRESULT WINAPI acmDriverDetailsA(HACMDRIVERID hadid, LPACMDRIVERDETAILSA padd, DWORD fdwDetails);
+MMRESULT WINAPI acmDriverDetailsW(HACMDRIVERID hadid, LPACMDRIVERDETAILSW padd, DWORD fdwDetails);
+/*msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_acmformattagenum.asp*/
+MMRESULT WINAPI acmFormatTagEnumA(HACMDRIVER had, LPACMFORMATTAGDETAILSA paftd, ACMFORMATTAGENUMCBA fnCallback, DWORD_PTR dwInstance, DWORD fdwEnum);
+MMRESULT WINAPI acmFormatTagEnumW(HACMDRIVER had, LPACMFORMATTAGDETAILSW paftd, ACMFORMATTAGENUMCBW fnCallback, DWORD_PTR dwInstance, DWORD fdwEnum);
+
+/*msdn.microsoft.com/en-us/library/dd742922(VS.85).aspx*/
+MMRESULT WINAPI acmMetrics(HACMOBJ hao, UINT uMetric, LPVOID pMetric);
+
+/*msdn.microsoft.com/en-us/library/dd742928%28VS.85%29.aspx*/
+MMRESULT WINAPI acmStreamOpen(LPHACMSTREAM phas, HACMDRIVER had, LPWAVEFORMATEX pwfxSrc, LPWAVEFORMATEX pwfxDst, LPWAVEFILTER pwfltr, DWORD_PTR dwCallback, DWORD_PTR dwInstance, DWORD fdwOpen);
+
+/*msdn.microsoft.com/en-us/library/dd742931%28VS.85%29.aspx*/
+MMRESULT WINAPI acmStreamSize(HACMSTREAM has, DWORD cbInput, LPDWORD pdwOutputBytes, DWORD fdwSize);
+
+/*msdn.microsoft.com/en-us/library/dd742929%28VS.85%29.aspx*/
+MMRESULT WINAPI acmStreamPrepareHeader(HACMSTREAM has, LPACMSTREAMHEADER pash, DWORD fdwPrepare);
+
+/*msdn.microsoft.com/en-us/library/dd742932%28VS.85%29.aspx*/
+MMRESULT WINAPI acmStreamUnprepareHeader(HACMSTREAM has, LPACMSTREAMHEADER pash, DWORD fdwUnprepare);
+
+/*msdn.microsoft.com/en-us/library/dd742930%28VS.85%29.aspx*/
+MMRESULT WINAPI acmStreamReset(HACMSTREAM has, DWORD fdwReset);
+
+/*msdn.microsoft.com/en-us/library/dd742923%28VS.85%29.aspx*/
+MMRESULT WINAPI acmStreamClose(HACMSTREAM has, DWORD fdwClose);
+
+/*msdn.microsoft.com/en-us/library/dd742924%28VS.85%29.aspx*/
+MMRESULT WINAPI acmStreamConvert(HACMSTREAM has, LPACMSTREAMHEADER pash, DWORD fdwConvert);
+
+#ifdef UNICODE
+
+typedef ACMFORMATDETAILSW ACMFORMATDETAILS, *LPACMFORMATDETAILS;
+typedef ACMFORMATTAGDETAILSW ACMFORMATTAGDETAILS, *LPACMFORMATTAGDETAILS;
+typedef ACMDRIVERDETAILSW ACMDRIVERDETAILS, *LPACMDRIVERDETAILS;
+typedef ACMFORMATENUMCBW ACMFORMATENUMCB;
+typedef ACMFORMATTAGENUMCBW ACMFORMATTAGENUMCB;
+#define acmFormatEnum acmFormatEnumW
+#define acmDriverDetails acmDriverDetailsW
+#define acmFormatTagEnum acmFormatTagEnumW
+#define acmDriverAdd acmDriverAddW
+
+#else /*ifdef UNICODE*/
+
+typedef ACMFORMATDETAILSA ACMFORMATDETAILS, *LPACMFORMATDETAILS;
+typedef ACMFORMATTAGDETAILSA ACMFORMATTAGDETAILS, *LPACMFORMATTAGDETAILS;
+typedef ACMDRIVERDETAILSA ACMDRIVERDETAILS, *LPACMDRIVERDETAILS;
+typedef ACMFORMATENUMCBA ACMFORMATENUMCB;
+typedef ACMFORMATTAGENUMCBA ACMFORMATTAGENUMCB;
+#define acmFormatEnum acmFormatEnumA
+#define acmDriverDetails acmDriverDetailsA
+#define acmFormatTagEnum acmFormatTagEnumA
+#define acmDriverAdd acmDriverAddA
+
+#endif /*ifdef UNICODE*/
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
Index: Daodan/MinGW/include/mshtml.h
===================================================================
--- Daodan/MinGW/include/mshtml.h	(revision 1046)
+++ Daodan/MinGW/include/mshtml.h	(revision 1046)
@@ -0,0 +1,704 @@
+#ifndef _MSHTML_H
+#define _MSHTML_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef _COM_interface IHTMLElementCollection *LPHTMLELEMENTCOLLECTION;
+typedef _COM_interface IHTMLElement *LPHTMLELEMENT;
+typedef _COM_interface IHTMLSelectionObject *LPHTMLSELECTIONOBJECT;
+typedef _COM_interface IHTMLFramesCollection *LPHTMLFRAMESCOLLECTION;
+typedef _COM_interface IHTMLLocation *LPHTMLLOCATION;
+typedef _COM_interface IHTMLWindow2 *LPHTMLWINDOW2;
+typedef _COM_interface IHTMLStyleSheetsCollection *LPHTMLSTYLESHEETSCOLLECTION;
+typedef _COM_interface IHTMLStyleSheet *LPHTMLSTYLESHEET;
+typedef _COM_interface IHTMLStyle *LPHTMLSTYLE;
+typedef _COM_interface IHTMLFiltersCollection *LPHTMLFILTERSCOLLECTION;
+typedef _COM_interface IHTMLLinkElement *LPHTMLLINKELEMENT;
+typedef _COM_interface IHTMLImgElement *LPHTMLIMGELEMENT;
+typedef _COM_interface IHTMLImageElementFactory *LPHTMLIMAGEELEMENTFACTORY;
+typedef _COM_interface IHTMLEventObj *LPHTMLEVENTOBJ;
+typedef _COM_interface IHTMLScreen *LPHTMLSCREEN;
+typedef _COM_interface IHTMLOptionElementFactory *LPHTMLOPTIONELEMENTFACTORY;
+typedef _COM_interface IOmHistory *LPOMHISTORY;
+typedef _COM_interface IOmNavigator *LPOMNAVIGATOR;
+
+EXTERN_C const IID IID_IHTMLLinkElement;
+#define INTERFACE IHTMLLinkElement
+DECLARE_INTERFACE_(IHTMLLinkElement,IDispatch)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetTypeInfoCount)(THIS_ UINT*) PURE;
+	STDMETHOD(GetTypeInfo)(THIS_ UINT,LCID,LPTYPEINFO*) PURE;
+	STDMETHOD(GetIDsOfNames)(THIS_ REFIID,LPOLESTR*,UINT,LCID,DISPID*) PURE;
+	STDMETHOD(Invoke)(THIS_ DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*) PURE;
+
+	STDMETHOD(put_href)(THIS_ BSTR) PURE;
+	STDMETHOD(get_href)(THIS_ BSTR*) PURE;
+	STDMETHOD(put_rel)(THIS_ BSTR) PURE;
+	STDMETHOD(get_rel)(THIS_ BSTR*) PURE;
+	STDMETHOD(put_rev)(THIS_ BSTR) PURE;
+	STDMETHOD(get_rev)(THIS_ BSTR*) PURE;
+	STDMETHOD(put_type)(THIS_ BSTR) PURE;
+	STDMETHOD(get_type)(THIS_ BSTR*) PURE;
+	STDMETHOD(get_readyState)(THIS_ BSTR*) PURE;
+	STDMETHOD(put_onreadystatechange)(THIS_ VARIANT) PURE;
+	STDMETHOD(get_onreadystatechange)(THIS_ VARIANT*) PURE;
+	STDMETHOD(put_onload)(THIS_ VARIANT) PURE;
+	STDMETHOD(get_onload)(THIS_ VARIANT*) PURE;
+	STDMETHOD(put_onerror)(THIS_ VARIANT) PURE;
+	STDMETHOD(get_onerror)(THIS_ VARIANT*) PURE;
+	STDMETHOD(get_styleSheet)(THIS_ LPHTMLSTYLESHEET*) PURE;
+	STDMETHOD(put_disabled)(THIS_ VARIANT_BOOL) PURE;
+	STDMETHOD(get_disabled)(THIS_ VARIANT_BOOL*) PURE;
+	STDMETHOD(put_media)(THIS_ BSTR) PURE;
+	STDMETHOD(get_media)(THIS_ BSTR*) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IHTMLImgElement;
+#define INTERFACE IHTMLImgElement
+DECLARE_INTERFACE_(IHTMLImgElement,IDispatch)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetTypeInfoCount)(THIS_ UINT*) PURE;
+	STDMETHOD(GetTypeInfo)(THIS_ UINT,LCID,LPTYPEINFO*) PURE;
+	STDMETHOD(GetIDsOfNames)(THIS_ REFIID,LPOLESTR*,UINT,LCID,DISPID*) PURE;
+	STDMETHOD(Invoke)(THIS_ DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*) PURE;
+
+	STDMETHOD(put_isMap)(THIS_ VARIANT_BOOL) PURE;
+	STDMETHOD(get_isMap)(THIS_ VARIANT_BOOL*) PURE;
+	STDMETHOD(put_useMap)(THIS_ BSTR) PURE;
+	STDMETHOD(get_useMap)(THIS_ BSTR*) PURE;
+	STDMETHOD(get_mimeType)(THIS_ BSTR*) PURE;
+	STDMETHOD(get_fileSize)(THIS_ BSTR*) PURE;
+	STDMETHOD(get_fileCreatedDate)(THIS_ BSTR*) PURE;
+	STDMETHOD(get_fileModifiedDate)(THIS_ BSTR*) PURE;
+	STDMETHOD(get_fileUpdatedDate)(THIS_ BSTR*) PURE;
+	STDMETHOD(get_protocol)(THIS_ BSTR*) PURE;
+	STDMETHOD(get_href)(THIS_ BSTR*) PURE;
+	STDMETHOD(get_nameProp)(THIS_ BSTR*) PURE;
+	STDMETHOD(put_border)(THIS_ VARIANT) PURE;
+	STDMETHOD(get_border)(THIS_ VARIANT*) PURE;
+	STDMETHOD(put_vspace)(THIS_ long) PURE;
+	STDMETHOD(get_vspace)(THIS_ long*) PURE;
+	STDMETHOD(put_hspace)(THIS_ long) PURE;
+	STDMETHOD(get_hspace)(THIS_ long*) PURE;
+	STDMETHOD(put_alt)(THIS_ BSTR) PURE;
+	STDMETHOD(get_alt)(THIS_ BSTR*) PURE;
+	STDMETHOD(put_src)(THIS_ BSTR) PURE;
+	STDMETHOD(get_src)(THIS_ BSTR*) PURE;
+	STDMETHOD(put_lowsrc)(THIS_ BSTR) PURE;
+	STDMETHOD(get_lowsrc)(THIS_ BSTR*) PURE;
+	STDMETHOD(put_vrml)(THIS_ BSTR) PURE;
+	STDMETHOD(get_vrml)(THIS_ BSTR*) PURE;
+	STDMETHOD(put_dynsrc)(THIS_ BSTR) PURE;
+	STDMETHOD(get_dynsrc)(THIS_ BSTR*) PURE;
+	STDMETHOD(get_readyState)(THIS_ BSTR*) PURE;
+	STDMETHOD(get_complete)(THIS_ VARIANT_BOOL*) PURE;
+	STDMETHOD(put_loop)(THIS_ VARIANT) PURE;
+	STDMETHOD(get_loop)(THIS_ VARIANT*) PURE;
+	STDMETHOD(put_align)(THIS_ BSTR) PURE;
+	STDMETHOD(get_align)(THIS_ BSTR*) PURE;
+	STDMETHOD(put_onload)(THIS_ VARIANT) PURE;
+	STDMETHOD(get_onload)(THIS_ VARIANT*) PURE;
+	STDMETHOD(put_onerror)(THIS_ VARIANT) PURE;
+	STDMETHOD(get_onerror)(THIS_ VARIANT*) PURE;
+	STDMETHOD(put_onabort)(THIS_ VARIANT) PURE;
+	STDMETHOD(get_onabort)(THIS_ VARIANT*) PURE;
+	STDMETHOD(put_name)(THIS_ BSTR) PURE;
+	STDMETHOD(get_name)(THIS_ BSTR*) PURE;
+	STDMETHOD(put_width)(THIS_ long) PURE;
+	STDMETHOD(get_width)(THIS_ long*) PURE;
+	STDMETHOD(put_height)(THIS_ long) PURE;
+	STDMETHOD(get_height)(THIS_ long*) PURE;
+	STDMETHOD(put_start)(THIS_ BSTR) PURE;
+	STDMETHOD(get_start)(THIS_ BSTR*) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IHTMLElementCollection;
+#define INTERFACE IHTMLElementCollection
+DECLARE_INTERFACE_(IHTMLElementCollection,IDispatch)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetTypeInfoCount)(THIS_ UINT*) PURE;
+	STDMETHOD(GetTypeInfo)(THIS_ UINT,LCID,LPTYPEINFO*) PURE;
+	STDMETHOD(GetIDsOfNames)(THIS_ REFIID,LPOLESTR*,UINT,LCID,DISPID*) PURE;
+	STDMETHOD(Invoke)(THIS_ DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*) PURE;
+
+	STDMETHOD(toString)(THIS_ BSTR*) PURE;
+	STDMETHOD(put_length)(THIS_ long) PURE;
+	STDMETHOD(get_length)(THIS_ long*) PURE;
+	STDMETHOD(get__newEnum)(THIS_ IUnknown**) PURE;
+	STDMETHOD(item)(THIS_ VARIANT,VARIANT,IDispatch**) PURE;
+	STDMETHOD(tags)(THIS_ VARIANT,IDispatch**) PURE;
+};
+#undef INTERFACE
+
+
+EXTERN_C const IID IID_IHTMLDocument;
+#define INTERFACE IHTMLDocument
+DECLARE_INTERFACE_(IHTMLDocument,IDispatch)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetTypeInfoCount)(THIS_ UINT*) PURE;
+	STDMETHOD(GetTypeInfo)(THIS_ UINT,LCID,LPTYPEINFO*) PURE;
+	STDMETHOD(GetIDsOfNames)(THIS_ REFIID,LPOLESTR*,UINT,LCID,DISPID*) PURE;
+	STDMETHOD(Invoke)(THIS_ DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*) PURE;
+
+	STDMETHOD(get_Script)(THIS_ IDispatch**) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IHTMLDocument2;
+#define INTERFACE IHTMLDocument2
+DECLARE_INTERFACE_(IHTMLDocument2,IHTMLDocument)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetTypeInfoCount)(THIS_ UINT*) PURE;
+	STDMETHOD(GetTypeInfo)(THIS_ UINT,LCID,LPTYPEINFO*) PURE;
+	STDMETHOD(GetIDsOfNames)(THIS_ REFIID,LPOLESTR*,UINT,LCID,DISPID*) PURE;
+	STDMETHOD(Invoke)(THIS_ DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*) PURE;
+
+	STDMETHOD(get_Script)(THIS_ IDispatch**) PURE;
+
+	STDMETHOD(get_all)(THIS_ LPHTMLELEMENTCOLLECTION*) PURE;
+	STDMETHOD(get_body)(THIS_ LPHTMLELEMENT*) PURE;
+	STDMETHOD(get_activeElement)(THIS_ LPHTMLELEMENT*) PURE;
+	STDMETHOD(get_images)(THIS_ LPHTMLELEMENTCOLLECTION*) PURE;
+	STDMETHOD(get_applets)(THIS_ LPHTMLELEMENTCOLLECTION*) PURE;
+	STDMETHOD(get_links)(THIS_ LPHTMLELEMENTCOLLECTION*) PURE;
+	STDMETHOD(get_forms)(THIS_ LPHTMLELEMENTCOLLECTION*) PURE;
+	STDMETHOD(get_anchors)(THIS_ LPHTMLELEMENTCOLLECTION*) PURE;
+	STDMETHOD(put_title)(THIS_ BSTR) PURE;
+	STDMETHOD(get_title)(THIS_ BSTR*) PURE;
+	STDMETHOD(get_scripts)(THIS_ LPHTMLELEMENTCOLLECTION*) PURE;
+	STDMETHOD(put_designMode)(THIS_ BSTR) PURE;
+	STDMETHOD(get_designMode)(THIS_ BSTR*) PURE;
+	STDMETHOD(get_selection)(THIS_ LPHTMLSELECTIONOBJECT*) PURE;
+	STDMETHOD(get_readyState)(THIS_ BSTR*) PURE;
+	STDMETHOD(get_frames)(THIS_ LPHTMLFRAMESCOLLECTION*) PURE;
+	STDMETHOD(get_embeds)(THIS_ LPHTMLELEMENTCOLLECTION*) PURE;
+	STDMETHOD(get_plugins)(THIS_ LPHTMLELEMENTCOLLECTION*) PURE;
+	STDMETHOD(put_alinkColor)(THIS_ VARIANT) PURE;
+	STDMETHOD(get_alinkColor)(THIS_ VARIANT*) PURE;
+	STDMETHOD(put_bgColor)(THIS_ VARIANT) PURE;
+	STDMETHOD(get_bgColor)(THIS_ VARIANT*) PURE;
+	STDMETHOD(put_fgColor)(THIS_ VARIANT) PURE;
+	STDMETHOD(get_fgColor)(THIS_ VARIANT*) PURE;
+	STDMETHOD(put_linkColor)(THIS_ VARIANT) PURE;
+	STDMETHOD(get_linkColor)(THIS_ VARIANT*) PURE;
+	STDMETHOD(put_vlinkColor)(THIS_ VARIANT) PURE;
+	STDMETHOD(get_vlinkColor)(THIS_ VARIANT*) PURE;
+	STDMETHOD(get_referrer)(THIS_ BSTR*) PURE;
+	STDMETHOD(get_location)(THIS_ LPHTMLLOCATION*) PURE;
+	STDMETHOD(get_lastModified)(THIS_ BSTR*) PURE;
+	STDMETHOD(put_URL)(THIS_ BSTR) PURE;
+	STDMETHOD(get_URL)(THIS_ BSTR*) PURE;
+	STDMETHOD(put_domain)(THIS_ BSTR) PURE;
+	STDMETHOD(get_domain)(THIS_ BSTR*) PURE;
+	STDMETHOD(put_cookie)(THIS_ BSTR) PURE;
+	STDMETHOD(get_cookie)(THIS_ BSTR*) PURE;
+	STDMETHOD(put_expands)(THIS_ VARIANT_BOOL) PURE;
+	STDMETHOD(get_expands)(THIS_ VARIANT_BOOL*) PURE;
+	STDMETHOD(put_charset)(THIS_ BSTR) PURE;
+	STDMETHOD(get_charset)(THIS_ BSTR*) PURE;
+	STDMETHOD(put_defaultCharset)(THIS_ BSTR) PURE;
+	STDMETHOD(get_defaultCharset)(THIS_ BSTR*) PURE;
+	STDMETHOD(get_mimeType)(THIS_ BSTR*) PURE;
+	STDMETHOD(get_fileSize)(THIS_ BSTR*) PURE;
+	STDMETHOD(get_fileCreatedDate)(THIS_ BSTR*) PURE;
+	STDMETHOD(get_fileModifiedDate)(THIS_ BSTR*) PURE;
+	STDMETHOD(get_fileUpdatedDate)(THIS_ BSTR*) PURE;
+	STDMETHOD(get_security)(THIS_ BSTR*) PURE;
+	STDMETHOD(get_protocol)(THIS_ BSTR*) PURE;
+	STDMETHOD(get_nameProp)(THIS_ BSTR*) PURE;
+	STDMETHOD(write)(THIS_ SAFEARRAY*) PURE;
+	STDMETHOD(writeln)(THIS_ SAFEARRAY*) PURE;
+	STDMETHOD(open)(THIS_ BSTR,VARIANT,VARIANT,VARIANT,IDispatch**) PURE;
+	STDMETHOD(close)(THIS) PURE;
+	STDMETHOD(clear)(THIS) PURE;
+	STDMETHOD(queryCommandSupported)(THIS_ BSTR,VARIANT_BOOL*) PURE;
+	STDMETHOD(queryCommandEnabled)(THIS_ BSTR,VARIANT_BOOL*) PURE;
+	STDMETHOD(queryCommandState)(THIS_ BSTR,VARIANT_BOOL*) PURE;
+	STDMETHOD(queryCommandIndeterm)(THIS_ BSTR,VARIANT_BOOL*) PURE;
+	STDMETHOD(queryCommandText)(THIS_ BSTR,BSTR*) PURE;
+	STDMETHOD(queryCommandValue)(THIS_ BSTR,VARIANT*) PURE;
+	STDMETHOD(execCommand)(THIS_ BSTR,VARIANT_BOOL,VARIANT,VARIANT_BOOL*) PURE;
+	STDMETHOD(execCommandShowHelp)(THIS_ BSTR,VARIANT_BOOL*) PURE;
+	STDMETHOD(createElement)(THIS_ BSTR,LPHTMLELEMENT*) PURE;
+	STDMETHOD(put_onhelp)(THIS_ VARIANT) PURE;
+	STDMETHOD(get_onhelp)(THIS_ VARIANT*) PURE;
+	STDMETHOD(put_onclick)(THIS_ VARIANT) PURE;
+	STDMETHOD(get_onclick)(THIS_ VARIANT*) PURE;
+	STDMETHOD(put_ondblclick)(THIS_ VARIANT) PURE;
+	STDMETHOD(get_ondblclick)(THIS_ VARIANT*) PURE;
+	STDMETHOD(put_onkeyup)(THIS_ VARIANT) PURE;
+	STDMETHOD(get_onkeyup)(THIS_ VARIANT*) PURE;
+	STDMETHOD(put_onkeydown)(THIS_ VARIANT) PURE;
+	STDMETHOD(get_onkeydown)(THIS_ VARIANT*) PURE;
+	STDMETHOD(put_onkeypress)(THIS_ VARIANT) PURE;
+	STDMETHOD(get_onkeypress)(THIS_ VARIANT*) PURE;
+	STDMETHOD(put_onmouseup)(THIS_ VARIANT) PURE;
+	STDMETHOD(get_onmouseup)(THIS_ VARIANT*) PURE;
+	STDMETHOD(put_onmousedown)(THIS_ VARIANT) PURE;
+	STDMETHOD(get_onmousedown)(THIS_ VARIANT*) PURE;
+	STDMETHOD(put_onmousemove)(THIS_ VARIANT) PURE;
+	STDMETHOD(get_onmousemove)(THIS_ VARIANT*) PURE;
+	STDMETHOD(put_onmouseout)(THIS_ VARIANT) PURE;
+	STDMETHOD(get_onmouseout)(THIS_ VARIANT*) PURE;
+	STDMETHOD(put_onmouseover)(THIS_ VARIANT) PURE;
+	STDMETHOD(get_onmouseover)(THIS_ VARIANT*) PURE;
+	STDMETHOD(put_onreadystatechange)(THIS_ VARIANT) PURE;
+	STDMETHOD(get_onreadystatechange)(THIS_ VARIANT*) PURE;
+	STDMETHOD(put_onafterupdate)(THIS_ VARIANT) PURE;
+	STDMETHOD(get_onafterupdate)(THIS_ VARIANT*) PURE;
+	STDMETHOD(put_onrowexit)(THIS_ VARIANT) PURE;
+	STDMETHOD(get_onrowexit)(THIS_ VARIANT*) PURE;
+	STDMETHOD(put_onrowenter)(THIS_ VARIANT) PURE;
+	STDMETHOD(get_onrowenter)(THIS_ VARIANT*) PURE;
+	STDMETHOD(put_ondragstart)(THIS_ VARIANT) PURE;
+	STDMETHOD(get_ondragstart)(THIS_ VARIANT*) PURE;
+	STDMETHOD(put_onselectstart)(THIS_ VARIANT) PURE;
+	STDMETHOD(get_onselectstart)(THIS_ VARIANT*) PURE;
+	STDMETHOD(elementFromPoint)(THIS_ long,long,LPHTMLELEMENT*) PURE;
+	STDMETHOD(get_parentWindow)(THIS_ LPHTMLWINDOW2*) PURE;
+	STDMETHOD(get_styleSheets)(THIS_ LPHTMLSTYLESHEETSCOLLECTION*) PURE;
+	STDMETHOD(put_onbeforeupdate)(THIS_ VARIANT) PURE;
+	STDMETHOD(get_onbeforeupdate)(THIS_ VARIANT*) PURE;
+	STDMETHOD(put_onerrorupdate)(THIS_ VARIANT) PURE;
+	STDMETHOD(get_onerrorupdate)(THIS_ VARIANT*) PURE;
+	STDMETHOD(toString)(THIS_ BSTR*) PURE;
+	STDMETHOD(createStyleSheet)(THIS_ BSTR,long,LPHTMLSTYLESHEET*) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IHTMLSelectionObject;
+#define INTERFACE IHTMLSelectionObject
+DECLARE_INTERFACE_(IHTMLSelectionObject,IDispatch)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetTypeInfoCount)(THIS_ UINT*) PURE;
+	STDMETHOD(GetTypeInfo)(THIS_ UINT,LCID,LPTYPEINFO*) PURE;
+	STDMETHOD(GetIDsOfNames)(THIS_ REFIID,LPOLESTR*,UINT,LCID,DISPID*) PURE;
+	STDMETHOD(Invoke)(THIS_ DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*) PURE;
+
+	STDMETHOD(createRange)(THIS_ IDispatch**) PURE;
+	STDMETHOD(empty)(THIS) PURE;
+	STDMETHOD(clear)(THIS) PURE;
+	STDMETHOD(get_type)(THIS_ BSTR*) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IHTMLTxtRange;
+#define INTERFACE IHTMLTxtRange
+DECLARE_INTERFACE_(IHTMLTxtRange,IDispatch)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetTypeInfoCount)(THIS_ UINT*) PURE;
+	STDMETHOD(GetTypeInfo)(THIS_ UINT,LCID,LPTYPEINFO*) PURE;
+	STDMETHOD(GetIDsOfNames)(THIS_ REFIID,LPOLESTR*,UINT,LCID,DISPID*) PURE;
+	STDMETHOD(Invoke)(THIS_ DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*) PURE;
+
+	STDMETHOD(get_htmlText)(THIS_ BSTR*) PURE;
+	STDMETHOD(put_text)(THIS_ BSTR) PURE;
+	STDMETHOD(get_text)(THIS_ BSTR*) PURE;
+	STDMETHOD(parentElement)(THIS_ LPHTMLELEMENT*) PURE;
+	STDMETHOD(duplicate)(THIS_ IHTMLTxtRange**) PURE;
+	STDMETHOD(inRange)(THIS_ IHTMLTxtRange*,VARIANT_BOOL*) PURE;
+	STDMETHOD(isEqual)(THIS_ IHTMLTxtRange*,VARIANT_BOOL*) PURE;
+	STDMETHOD(scrollIntoView)(THIS_ VARIANT_BOOL) PURE;
+	STDMETHOD(collapse)(THIS_ VARIANT_BOOL) PURE;
+	STDMETHOD(expand)(THIS_ BSTR,VARIANT_BOOL*) PURE;
+	STDMETHOD(move)(THIS_ BSTR,long,long*) PURE;
+	STDMETHOD(moveStart)(THIS_ BSTR,long,long*) PURE;
+	STDMETHOD(moveEnd)(THIS_ BSTR,long,long*) PURE;
+	STDMETHOD(select)(THIS) PURE;
+	STDMETHOD(pasteHTML)(THIS_ BSTR) PURE;
+	STDMETHOD(moveToElementText)(THIS_ LPHTMLELEMENT) PURE;
+	STDMETHOD(setEndPoint)(THIS_ BSTR,IHTMLTxtRange*) PURE;
+	STDMETHOD(compareEndPoints)(THIS_ BSTR,IHTMLTxtRange*,long*) PURE;
+	STDMETHOD(findText)(THIS_ BSTR,long,long,VARIANT_BOOL*) PURE;
+	STDMETHOD(moveToPoint)(THIS_ long,long) PURE;
+	STDMETHOD(getBookmark)(THIS_ BSTR*) PURE;
+	STDMETHOD(moveToBookbark)(THIS_ BSTR,VARIANT_BOOL*) PURE;
+	STDMETHOD(queryCommandSupported)(THIS_ BSTR,VARIANT_BOOL*) PURE;
+	STDMETHOD(queryCommandEnabled)(THIS_ BSTR,VARIANT_BOOL*) PURE;
+	STDMETHOD(queryCommandState)(THIS_ BSTR,VARIANT_BOOL*) PURE;
+	STDMETHOD(queryCommandIndeterm)(THIS_ BSTR,VARIANT_BOOL*) PURE;
+	STDMETHOD(queryCommandText)(THIS_ BSTR,BSTR*) PURE;
+	STDMETHOD(queryCommandValue)(THIS_ BSTR,VARIANT*) PURE;
+	STDMETHOD(execCommand)(THIS_ BSTR,VARIANT_BOOL,VARIANT,VARIANT_BOOL*) PURE;
+	STDMETHOD(execCommandShowHelp)(THIS_ BSTR,VARIANT_BOOL*) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IHTMLElement;
+#define INTERFACE IHTMLElement
+DECLARE_INTERFACE_(IHTMLElement,IDispatch)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetTypeInfoCount)(THIS_ UINT*) PURE;
+	STDMETHOD(GetTypeInfo)(THIS_ UINT,LCID,LPTYPEINFO*) PURE;
+	STDMETHOD(GetIDsOfNames)(THIS_ REFIID,LPOLESTR*,UINT,LCID,DISPID*) PURE;
+	STDMETHOD(Invoke)(THIS_ DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*) PURE;
+
+	STDMETHOD(setAttribute)(THIS_ BSTR,VARIANT,long) PURE;
+	STDMETHOD(getAttribute)(THIS_ BSTR,long,VARIANT*) PURE;
+	STDMETHOD(removeAttribute)(THIS_ BSTR,long,VARIANT_BOOL*) PURE;
+	STDMETHOD(put_className)(THIS_ BSTR) PURE;
+	STDMETHOD(get_className)(THIS_ BSTR*) PURE;
+	STDMETHOD(put_id)(THIS_ BSTR) PURE;
+	STDMETHOD(get_id)(THIS_ BSTR*) PURE;
+	STDMETHOD(get_tagName)(THIS_ BSTR*) PURE;
+	STDMETHOD(get_parentElement)(THIS_ LPHTMLELEMENT*) PURE;
+	STDMETHOD(get_style)(THIS_ LPHTMLSTYLE*) PURE;
+	STDMETHOD(put_onhelp)(THIS_ VARIANT) PURE;
+	STDMETHOD(get_onhelp)(THIS_ VARIANT*) PURE;
+	STDMETHOD(put_onclick)(THIS_ VARIANT) PURE;
+	STDMETHOD(get_onclick)(THIS_ VARIANT*) PURE;
+	STDMETHOD(put_ondblclick)(THIS_ VARIANT) PURE;
+	STDMETHOD(get_ondblclick)(THIS_ VARIANT*) PURE;
+	STDMETHOD(put_onkeydown)(THIS_ VARIANT) PURE;
+	STDMETHOD(get_onkeydown)(THIS_ VARIANT*) PURE;
+	STDMETHOD(put_onkeyup)(THIS_ VARIANT) PURE;
+	STDMETHOD(get_onkeyup)(THIS_ VARIANT*) PURE;
+	STDMETHOD(put_onkeypress)(THIS_ VARIANT) PURE;
+	STDMETHOD(get_onkeypress)(THIS_ VARIANT*) PURE;
+	STDMETHOD(put_onmouseout)(THIS_ VARIANT) PURE;
+	STDMETHOD(get_onmouseout)(THIS_ VARIANT*) PURE;
+	STDMETHOD(put_onmouseover)(THIS_ VARIANT) PURE;
+	STDMETHOD(get_onmouseover)(THIS_ VARIANT*) PURE;
+	STDMETHOD(put_onmousemove)(THIS_ VARIANT) PURE;
+	STDMETHOD(get_onmousemove)(THIS_ VARIANT*) PURE;
+	STDMETHOD(put_onmousedown)(THIS_ VARIANT) PURE;
+	STDMETHOD(get_onmousedown)(THIS_ VARIANT*) PURE;
+	STDMETHOD(put_onmouseup)(THIS_ VARIANT) PURE;
+	STDMETHOD(get_onmouseup)(THIS_ VARIANT*) PURE;
+	STDMETHOD(get_document)(THIS_ IDispatch**) PURE;
+	STDMETHOD(put_title)(THIS_ BSTR) PURE;
+	STDMETHOD(get_title)(THIS_ BSTR*) PURE;
+	STDMETHOD(put_language)(THIS_ BSTR) PURE;
+	STDMETHOD(get_language)(THIS_ BSTR*) PURE;
+	STDMETHOD(put_onselectstart)(THIS_ VARIANT) PURE;
+	STDMETHOD(get_onselectstart)(THIS_ VARIANT*) PURE;
+	STDMETHOD(scrollIntoView)(THIS_ VARIANT) PURE;
+	STDMETHOD(contains)(THIS_ LPHTMLELEMENT,VARIANT_BOOL*) PURE;
+	STDMETHOD(get_source3Index)(THIS_ long*) PURE;
+	STDMETHOD(get_recordNumber)(THIS_ VARIANT*) PURE;
+	STDMETHOD(put_lang)(THIS_ BSTR) PURE;
+	STDMETHOD(get_lang)(THIS_ BSTR*) PURE;
+	STDMETHOD(get_offsetLeft)(THIS_ long*) PURE;
+	STDMETHOD(get_offsetTop)(THIS_ long*) PURE;
+	STDMETHOD(get_offsetWidth)(THIS_ long*) PURE;
+	STDMETHOD(get_offsetHeight)(THIS_ long*) PURE;
+	STDMETHOD(get_offsetParent)(THIS_ LPHTMLELEMENT*) PURE;
+	STDMETHOD(put_innerHTML)(THIS_ BSTR) PURE;
+	STDMETHOD(get_innerHTML)(THIS_ BSTR*) PURE;
+	STDMETHOD(put_innerText)(THIS_ BSTR) PURE;
+	STDMETHOD(get_innerText)(THIS_ BSTR*) PURE;
+	STDMETHOD(put_outerHTML)(THIS_ BSTR) PURE;
+	STDMETHOD(get_outerHTML)(THIS_ BSTR*) PURE;
+	STDMETHOD(put_outerText)(THIS_ BSTR) PURE;
+	STDMETHOD(get_outerText)(THIS_ BSTR*) PURE;
+	STDMETHOD(insertAdjacentHTML)(THIS_ BSTR,BSTR) PURE;
+	STDMETHOD(insertAdjacentText)(THIS_ BSTR,BSTR) PURE;
+	STDMETHOD(get_parentTextEdit)(THIS_ LPHTMLELEMENT*) PURE;
+	STDMETHOD(isTextEdit)(THIS_ VARIANT_BOOL*) PURE;
+	STDMETHOD(click)(THIS) PURE;
+	STDMETHOD(get_filters)(THIS_ LPHTMLFILTERSCOLLECTION*) PURE;
+	STDMETHOD(put_ondragstart)(THIS_ VARIANT) PURE;
+	STDMETHOD(get_ondragstart)(THIS_ VARIANT*) PURE;
+	STDMETHOD(toString)(THIS_ BSTR*) PURE;
+	STDMETHOD(put_onbeforeupdate)(THIS_ VARIANT) PURE;
+	STDMETHOD(get_onbeforeupdate)(THIS_ VARIANT*) PURE;
+	STDMETHOD(put_onafterupdate)(THIS_ VARIANT) PURE;
+	STDMETHOD(get_onafterupdate)(THIS_ VARIANT*) PURE;
+	STDMETHOD(put_onerrorupdate)(THIS_ VARIANT) PURE;
+	STDMETHOD(get_onerrorupdate)(THIS_ VARIANT*) PURE;
+	STDMETHOD(put_onrowexit)(THIS_ VARIANT) PURE;
+	STDMETHOD(get_onrowexit)(THIS_ VARIANT*) PURE;
+	STDMETHOD(put_onrowenter)(THIS_ VARIANT) PURE;
+	STDMETHOD(get_onrowenter)(THIS_ VARIANT*) PURE;
+	STDMETHOD(put_ondatasetchanged)(THIS_ VARIANT) PURE;
+	STDMETHOD(get_ondatasetchanged)(THIS_ VARIANT*) PURE;
+	STDMETHOD(put_ondataavailable)(THIS_ VARIANT) PURE;
+	STDMETHOD(get_ondataavailable)(THIS_ VARIANT*) PURE;
+	STDMETHOD(put_ondatasetcomplete)(THIS_ VARIANT) PURE;
+	STDMETHOD(get_ondatasetcomplete)(THIS_ VARIANT*) PURE;
+	STDMETHOD(put_onfilterchange)(THIS_ VARIANT) PURE;
+	STDMETHOD(get_onfilterchange)(THIS_ VARIANT*) PURE;
+	STDMETHOD(get_children)(THIS_ IDispatch**) PURE;
+	STDMETHOD(get_all)(THIS_ IDispatch**) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IHTMLFramesCollection2;
+#define INTERFACE IHTMLFramesCollection2
+DECLARE_INTERFACE_(IHTMLFramesCollection2,IDispatch)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetTypeInfoCount)(THIS_ UINT*) PURE;
+	STDMETHOD(GetTypeInfo)(THIS_ UINT,LCID,LPTYPEINFO*) PURE;
+	STDMETHOD(GetIDsOfNames)(THIS_ REFIID,LPOLESTR*,UINT,LCID,DISPID*) PURE;
+	STDMETHOD(Invoke)(THIS_ DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*) PURE;
+
+    STDMETHOD(item)(THIS_ VARIANT*,VARIANT*) PURE;
+    STDMETHOD(get_length)(THIS_ long*) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IHTMLWindow2;
+#define INTERFACE IHTMLWindow2
+DECLARE_INTERFACE_(IHTMLWindow2,IHTMLFramesCollection2)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetTypeInfoCount)(THIS_ UINT*) PURE;
+	STDMETHOD(GetTypeInfo)(THIS_ UINT,LCID,LPTYPEINFO*) PURE;
+	STDMETHOD(GetIDsOfNames)(THIS_ REFIID,LPOLESTR*,UINT,LCID,DISPID*) PURE;
+	STDMETHOD(Invoke)(THIS_ DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*) PURE;
+	STDMETHOD(item)(THIS_ VARIANT*,VARIANT*) PURE;
+	STDMETHOD(get_length)(THIS_ long*) PURE;
+
+	STDMETHOD(get_frames)(THIS_ IHTMLFramesCollection2**) PURE;
+	STDMETHOD(put_defaultStatus)(THIS_ BSTR) PURE;
+	STDMETHOD(get_defaultStatus)(THIS_ BSTR*) PURE;
+	STDMETHOD(put_status)(THIS_ BSTR) PURE;
+	STDMETHOD(get_status)(THIS_ BSTR*) PURE;
+	STDMETHOD(setTimeout)(THIS_ BSTR,long,VARIANT*,long*) PURE;
+	STDMETHOD(clearTimeout)(THIS_ long) PURE;
+	STDMETHOD(alert)(THIS_ BSTR) PURE;
+	STDMETHOD(confirm)(THIS_ BSTR,VARIANT_BOOL*) PURE;
+	STDMETHOD(prompt)(THIS_ BSTR,BSTR,VARIANT*) PURE;
+	STDMETHOD(get_Image)(THIS_ LPHTMLIMAGEELEMENTFACTORY*) PURE;
+	STDMETHOD(get_location)(THIS_ LPHTMLLOCATION*) PURE;
+	STDMETHOD(get_history)(THIS_ LPOMHISTORY*) PURE;
+	STDMETHOD(close)(THIS) PURE;
+	STDMETHOD(put_opener)(THIS_ VARIANT) PURE;
+	STDMETHOD(get_opener)(THIS_ VARIANT*) PURE;
+	STDMETHOD(get_navigator)(THIS_ LPOMNAVIGATOR*) PURE;
+	STDMETHOD(put_name)(THIS_ BSTR) PURE;
+	STDMETHOD(get_name)(THIS_ BSTR*) PURE;
+	STDMETHOD(get_parent)(THIS_ LPHTMLWINDOW2*) PURE;
+	STDMETHOD(open)(THIS_ BSTR,BSTR,BSTR,VARIANT_BOOL,LPHTMLWINDOW2*) PURE;
+	STDMETHOD(get_self)(THIS_ LPHTMLWINDOW2*) PURE;
+	STDMETHOD(get_top)(THIS_ LPHTMLWINDOW2*) PURE;
+	STDMETHOD(get_window)(THIS_ LPHTMLWINDOW2*) PURE;
+	STDMETHOD(navigate)(THIS_ BSTR) PURE;
+	STDMETHOD(put_onfocus)(THIS_ VARIANT) PURE;
+	STDMETHOD(get_onfocus)(THIS_ VARIANT*) PURE;
+	STDMETHOD(put_onblur)(THIS_ VARIANT) PURE;
+	STDMETHOD(get_onblur)(THIS_ VARIANT*) PURE;
+	STDMETHOD(put_onload)(THIS_ VARIANT) PURE;
+	STDMETHOD(get_onload)(THIS_ VARIANT*) PURE;
+	STDMETHOD(put_onbeforeunload)(THIS_ VARIANT) PURE;
+	STDMETHOD(get_onbeforeunload)(THIS_ VARIANT*) PURE;
+	STDMETHOD(put_onunload)(THIS_ VARIANT) PURE;
+	STDMETHOD(get_onunload)(THIS_ VARIANT*) PURE;
+	STDMETHOD(put_onhelp)(THIS_ VARIANT) PURE;
+	STDMETHOD(get_onhelp)(THIS_ VARIANT*) PURE;
+	STDMETHOD(put_onerror)(THIS_ VARIANT) PURE;
+	STDMETHOD(get_onerror)(THIS_ VARIANT*) PURE;
+	STDMETHOD(put_onresize)(THIS_ VARIANT) PURE;
+	STDMETHOD(get_onresize)(THIS_ VARIANT*) PURE;
+	STDMETHOD(put_onscroll)(THIS_ VARIANT) PURE;
+	STDMETHOD(get_onscroll)(THIS_ VARIANT*) PURE;
+	STDMETHOD(get_document)(THIS_ IHTMLDocument2**) PURE;
+	STDMETHOD(get_event)(THIS_ LPHTMLEVENTOBJ*) PURE;
+	STDMETHOD(get__newEnum)(THIS_ IUnknown**) PURE;
+	STDMETHOD(showModalDialog)(THIS_ BSTR,VARIANT*,VARIANT*,VARIANT*) PURE;
+	STDMETHOD(showHelp)(THIS_ BSTR,VARIANT,BSTR) PURE;
+	STDMETHOD(get_screen)(THIS_ LPHTMLSCREEN*) PURE;
+	STDMETHOD(get_Option)(THIS_ LPHTMLOPTIONELEMENTFACTORY*) PURE;
+	STDMETHOD(focus)(THIS) PURE;
+	STDMETHOD(get_closed)(THIS_ VARIANT_BOOL*) PURE;
+	STDMETHOD(blur)(THIS) PURE;
+	STDMETHOD(scroll)(THIS_ long,long) PURE;
+	STDMETHOD(get_clientInformation)(THIS_ LPOMNAVIGATOR*) PURE;
+	STDMETHOD(setInterval)(THIS_ BSTR,long,VARIANT*,long*) PURE;
+	STDMETHOD(clearInterval)(THIS_ long) PURE;
+	STDMETHOD(put_offscreenBuffering)(THIS_ VARIANT) PURE;
+	STDMETHOD(get_offscreenBuffering)(THIS_ VARIANT*) PURE;
+	STDMETHOD(execScript)(THIS_ BSTR,BSTR,VARIANT*) PURE;
+	STDMETHOD(toString)(THIS_ BSTR*) PURE;
+	STDMETHOD(scrollBy)(THIS_ long,long) PURE;
+	STDMETHOD(scrollTo)(THIS_ long,long) PURE;
+	STDMETHOD(moveTo)(THIS_ long,long) PURE;
+	STDMETHOD(moveBy)(THIS_ long,long) PURE;
+	STDMETHOD(resizeTo)(THIS_ long,long) PURE;
+	STDMETHOD(resizeBy)(THIS_ long,long) PURE;
+	STDMETHOD(get_external)(THIS_ IDispatch**) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IHTMLFrameBase;
+#define INTERFACE IHTMLFrameBase
+DECLARE_INTERFACE_(IHTMLFrameBase,IDispatch)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetTypeInfoCount)(THIS_ UINT*) PURE;
+	STDMETHOD(GetTypeInfo)(THIS_ UINT,LCID,LPTYPEINFO*) PURE;
+	STDMETHOD(GetIDsOfNames)(THIS_ REFIID,LPOLESTR*,UINT,LCID,DISPID*) PURE;
+	STDMETHOD(Invoke)(THIS_ DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*) PURE;
+
+	STDMETHOD(put_src)(THIS_ BSTR) PURE;
+	STDMETHOD(get_src)(THIS_ BSTR*) PURE;
+	STDMETHOD(put_name)(THIS_ BSTR) PURE;
+	STDMETHOD(get_name)(THIS_ BSTR*) PURE;
+	STDMETHOD(put_border)(THIS_ VARIANT) PURE;
+	STDMETHOD(get_border)(THIS_ VARIANT*) PURE;
+	STDMETHOD(put_frameBorder)(THIS_ BSTR) PURE;
+	STDMETHOD(get_frameBorder)(THIS_ BSTR*) PURE;
+	STDMETHOD(put_frameSpacing)(THIS_ VARIANT) PURE;
+	STDMETHOD(get_frameSpacing)(THIS_ VARIANT*) PURE;
+	STDMETHOD(put_marginWidth)(THIS_ VARIANT) PURE;
+	STDMETHOD(get_marginWidth)(THIS_ VARIANT*) PURE;
+	STDMETHOD(put_marginHeight)(THIS_ VARIANT) PURE;
+	STDMETHOD(get_marginHeight)(THIS_ VARIANT*) PURE;
+	STDMETHOD(put_noResize)(THIS_ VARIANT_BOOL) PURE;
+	STDMETHOD(get_noResize)(THIS_ VARIANT_BOOL*) PURE;
+	STDMETHOD(put_scrolling)(THIS_ BSTR) PURE;
+	STDMETHOD(get_scrolling)(THIS_ BSTR*) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IHTMLFrameBase2;
+#define INTERFACE IHTMLFrameBase2
+DECLARE_INTERFACE_(IHTMLFrameBase2,IDispatch)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetTypeInfoCount)(THIS_ UINT*) PURE;
+	STDMETHOD(GetTypeInfo)(THIS_ UINT,LCID,LPTYPEINFO*) PURE;
+	STDMETHOD(GetIDsOfNames)(THIS_ REFIID,LPOLESTR*,UINT,LCID,DISPID*) PURE;
+	STDMETHOD(Invoke)(THIS_ DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*) PURE;
+
+	STDMETHOD(get_contentWindow)(THIS_ IHTMLWindow2 **) PURE;
+	STDMETHOD(put_onload)(THIS_ VARIANT) PURE;
+	STDMETHOD(get_onload)(THIS_ VARIANT*) PURE;
+	STDMETHOD(put_onreadystatechange)(THIS_ VARIANT) PURE;
+	STDMETHOD(get_onreadystatechange)(THIS_ VARIANT*) PURE;
+	STDMETHOD(get_readyState)(THIS_ BSTR*) PURE;
+	STDMETHOD(put_allowTransparency)(THIS_ VARIANT_BOOL) PURE;
+	STDMETHOD(get_allowTransparency)(THIS_ VARIANT_BOOL*) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IHTMLFrameBase3;
+#define INTERFACE IHTMLFrameBase3
+DECLARE_INTERFACE_(IHTMLFrameBase3,IDispatch)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetTypeInfoCount)(THIS_ UINT*) PURE;
+	STDMETHOD(GetTypeInfo)(THIS_ UINT,LCID,LPTYPEINFO*) PURE;
+	STDMETHOD(GetIDsOfNames)(THIS_ REFIID,LPOLESTR*,UINT,LCID,DISPID*) PURE;
+	STDMETHOD(Invoke)(THIS_ DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*) PURE;
+
+	STDMETHOD(put_longDesc)(THIS_ BSTR) PURE;
+	STDMETHOD(get_longDesc)(THIS_ BSTR*) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IHTMLBodyElement;
+#define INTERFACE IHTMLBodyElement
+DECLARE_INTERFACE_(IHTMLBodyElement,IDispatch)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetTypeInfoCount)(THIS_ UINT*) PURE;
+	STDMETHOD(GetTypeInfo)(THIS_ UINT,LCID,LPTYPEINFO*) PURE;
+	STDMETHOD(GetIDsOfNames)(THIS_ REFIID,LPOLESTR*,UINT,LCID,DISPID*) PURE;
+	STDMETHOD(Invoke)(THIS_ DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*) PURE;
+
+	STDMETHOD(put_background)(THIS_ BSTR) PURE;
+	STDMETHOD(get_background)(THIS_ BSTR*) PURE;
+	STDMETHOD(put_bgProperties)(THIS_ BSTR) PURE;
+	STDMETHOD(get_bgProperties)(THIS_ BSTR*) PURE;
+	STDMETHOD(put_leftMargin)(THIS_ VARIANT) PURE;
+	STDMETHOD(get_leftMargin)(THIS_ VARIANT*) PURE;
+	STDMETHOD(put_topMargin)(THIS_ VARIANT) PURE;
+	STDMETHOD(get_topMargin)(THIS_ VARIANT*) PURE;
+	STDMETHOD(put_rightMargin)(THIS_ VARIANT) PURE;
+	STDMETHOD(get_rightMargin)(THIS_ VARIANT*) PURE;
+	STDMETHOD(put_bottomMargin)(THIS_ VARIANT) PURE;
+	STDMETHOD(get_bottomMargin)(THIS_ VARIANT*) PURE;
+	STDMETHOD(put_noWrap)(THIS_ VARIANT_BOOL) PURE;
+	STDMETHOD(get_noWrap)(THIS_ VARIANT_BOOL*) PURE;
+	STDMETHOD(put_bgColor)(THIS_ VARIANT) PURE;
+	STDMETHOD(get_bgColor)(THIS_ VARIANT*) PURE;
+	STDMETHOD(put_text)(THIS_ VARIANT) PURE;
+	STDMETHOD(get_text)(THIS_ VARIANT*) PURE;
+	STDMETHOD(put_link)(THIS_ VARIANT) PURE;
+	STDMETHOD(get_link)(THIS_ VARIANT*) PURE;
+	STDMETHOD(put_vLink)(THIS_ VARIANT) PURE;
+	STDMETHOD(get_vLink)(THIS_ VARIANT*) PURE;
+	STDMETHOD(put_aLink)(THIS_ VARIANT) PURE;
+	STDMETHOD(get_aLink)(THIS_ VARIANT*) PURE;
+	STDMETHOD(put_onload)(THIS_ VARIANT) PURE;
+	STDMETHOD(get_onload)(THIS_ VARIANT*) PURE;
+	STDMETHOD(put_onunload)(THIS_ VARIANT) PURE;
+	STDMETHOD(get_onunload)(THIS_ VARIANT*) PURE;
+	STDMETHOD(put_scroll)(THIS_ BSTR) PURE;
+	STDMETHOD(get_scroll)(THIS_ BSTR*) PURE;
+	STDMETHOD(put_onselect)(THIS_ VARIANT) PURE;
+	STDMETHOD(get_onselect)(THIS_ VARIANT*) PURE;
+	STDMETHOD(put_onbeforeunload)(THIS_ VARIANT) PURE;
+	STDMETHOD(get_onbeforeunload)(THIS_ VARIANT*) PURE;
+	STDMETHOD(createTextRange)(THIS_ IHTMLTxtRange**) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IHTMLBodyElement2;
+#define INTERFACE IHTMLBodyElement2
+DECLARE_INTERFACE_(IHTMLBodyElement2,IDispatch)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetTypeInfoCount)(THIS_ UINT*) PURE;
+	STDMETHOD(GetTypeInfo)(THIS_ UINT,LCID,LPTYPEINFO*) PURE;
+	STDMETHOD(GetIDsOfNames)(THIS_ REFIID,LPOLESTR*,UINT,LCID,DISPID*) PURE;
+	STDMETHOD(Invoke)(THIS_ DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*) PURE;
+
+	STDMETHOD(put_onbeforeprint)(THIS_ VARIANT) PURE;
+	STDMETHOD(get_onbeforeprint)(THIS_ VARIANT*) PURE;
+	STDMETHOD(put_onafterprint)(THIS_ VARIANT) PURE;
+	STDMETHOD(get_onafterprint)(THIS_ VARIANT*) PURE;
+};
+#undef INTERFACE
+
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/msvcrtver.h
===================================================================
--- Daodan/MinGW/include/msvcrtver.h	(revision 1046)
+++ Daodan/MinGW/include/msvcrtver.h	(revision 1046)
@@ -0,0 +1,83 @@
+/*
+ * msvcrtver.h
+ *
+ * Macros for identification of specific versions of MSVC runtime
+ * libraries, which may be substituted for MSVCRT.DLL
+ *
+ * $Id: msvcrtver.h,v 6d8ad2c4dde7 2015/06/19 11:43:28 keithmarshall $
+ *
+ * Written by Keith Marshall <keithmarshall@users.sourceforge.net>
+ * Copyright (C) 2015, MinGW.org Project
+ *
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ *
+ */
+#ifndef _MSVCRTVER_H
+#define _MSVCRTVER_H
+#pragma GCC system_header
+
+/* When it is intended to link an application with any one of the
+ * MSVC version specific MSVCRxx.DLL libraries, rather than with the
+ * OS default MSVCRT.DLL, the particular substitute MSVCRxx.DLL may
+ * be specified as any one of the following...
+ */
+#define __MSVCR60_DLL		0x0600
+#define __MSVCR61_DLL		0x0601
+#define __MSVCR70_DLL		0x0700
+#define __MSVCR71_DLL		0x0701
+#define __MSVCR80_DLL		0x0800
+#define __MSVCR90_DLL		0x0900
+#define __MSVCR100_DLL		0x1000
+#define __MSVCR110_DLL		0x1100
+#define __MSVCR120_DLL		0x1200
+
+#ifndef __MSVCRT_VERSION__
+/* This may be set, when the intent is to link with any of the above
+ * non-freely distributable MSVCRxx.DLL libraries, rather than with the
+ * pseudo-free MSVCRT.DLL provided as an OS component.  High byte is the
+ * major version number, low byte is the minor; however, users are advised
+ * to use custom GCC specs files to set this, while also substituting the
+ * appropriate library in place of MSVCRT.DLL, rather than to simply set
+ * it directly.
+ *
+ * It should be noted that __MSVCRT_VERSION__ is NOT a good indicator of
+ * evolving MSVCRT.DLL features; that is better accomplished by using the
+ * NTDDI_VERSION setting from the Windows API.  Thus, users of MSVCRT.DLL
+ * should NOT set __MSVCRT_VERSION__, leaving us to establish a default,
+ * equivalent to MSVCR60.DLL, which seems reasonably well aligned with
+ * the feature set of the earliest MSVCRT.DLL version we support.
+ */
+# define __MSVCRT_VERSION__  __MSVCR60_DLL
+#endif
+
+/* This is an exception to the normal rule, that all mingwrt system
+ * header files should include _mingw.h, since inclusion of _mingw.h
+ * itself will cause this file to be included.  Thus, we recommend
+ * that this file should not be included directly, but we do not
+ * forbid doing so; however, in this event...
+ */
+#ifndef __MINGW_H
+/* ...we must ensure that _mingw.h has also been included.
+ */
+# include <_mingw.h>
+#endif
+
+#endif /* !_MSVCRTVER_H: $RCSfile: msvcrtver.h,v $: end of file */
Index: Daodan/MinGW/include/mswsock.h
===================================================================
--- Daodan/MinGW/include/mswsock.h	(revision 1046)
+++ Daodan/MinGW/include/mswsock.h	(revision 1046)
@@ -0,0 +1,113 @@
+/*
+ * mswsock.h
+ * MS-specific extensions to Windows Sockets, exported from mswsock.dll.
+ * These functions are N/A on Windows9x.
+ *
+ * This file is part of a free library for the Win32 API.
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ */
+
+#ifndef _MSWSOCK_H
+#define _MSWSOCK_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define SO_CONNDATA	0x7000
+#define SO_CONNOPT	0x7001
+#define SO_DISCDATA	0x7002
+#define SO_DISCOPT	0x7003
+#define SO_CONNDATALEN	0x7004
+#define SO_CONNOPTLEN	0x7005
+#define SO_DISCDATALEN	0x7006
+#define SO_DISCOPTLEN	0x7007
+#define SO_OPENTYPE	0x7008
+#define SO_SYNCHRONOUS_ALERT	0x10
+#define SO_SYNCHRONOUS_NONALERT	0x20
+#define SO_MAXDG	0x7009
+#define SO_MAXPATHDG	0x700A
+#define SO_UPDATE_ACCEPT_CONTEXT	0x700B
+#define SO_CONNECT_TIME	0x700C
+#define TCP_BSDURGENT	0x7000
+
+#define TF_DISCONNECT   1
+#define TF_REUSE_SOCKET 2
+#define TF_WRITE_BEHIND 4
+#define TF_USE_DEFAULT_WORKER   0
+#define TF_USE_SYSTEM_THREAD    16
+#define TF_USE_KERNEL_APC   32
+
+typedef struct _TRANSMIT_FILE_BUFFERS {
+	PVOID Head;
+	DWORD HeadLength;
+	PVOID Tail;
+	DWORD TailLength;
+} TRANSMIT_FILE_BUFFERS, *PTRANSMIT_FILE_BUFFERS, *LPTRANSMIT_FILE_BUFFERS;
+
+int PASCAL WSARecvEx(SOCKET,char*,int,int*);
+BOOL PASCAL TransmitFile(SOCKET,HANDLE,DWORD,DWORD,LPOVERLAPPED,LPTRANSMIT_FILE_BUFFERS,DWORD);
+BOOL PASCAL AcceptEx(SOCKET,SOCKET,PVOID,DWORD,DWORD,DWORD,LPDWORD,LPOVERLAPPED);
+VOID PASCAL GetAcceptExSockaddrs(PVOID,DWORD,DWORD,DWORD,struct sockaddr**, LPINT, struct sockaddr**, LPINT);
+
+#ifdef _WINSOCK2_H /* These require the winsock2 interface.  */
+
+#define TP_ELEMENT_FILE		1
+#define TP_ELEMENT_MEMORY	2
+#define TP_ELEMENT_EOP		4
+
+typedef struct _TRANSMIT_PACKETS_ELEMENT {
+	ULONG dwElFlags;
+	ULONG cLength;
+	_ANONYMOUS_UNION
+	union {
+		struct {
+			LARGE_INTEGER	nFileOffset;
+			HANDLE		hFile;
+		};
+		PVOID	pBuffer;
+	};
+} TRANSMIT_PACKETS_ELEMENT;
+
+typedef struct _WSAMSG {
+	LPSOCKADDR	name;
+	INT		namelen;
+	LPWSABUF	lpBuffers;
+	DWORD		dwBufferCount;
+	WSABUF		Control;
+	DWORD		dwFlags;
+} WSAMSG, *PWSAMSG, *LPWSAMSG;
+
+
+/* According to MSDN docs, the WSAMSG.Control buffer starts with a
+   cmsghdr header of the following form.  See also RFC 2292. */
+
+typedef struct wsacmsghdr {
+	UINT	cmsg_len;
+	INT	cmsg_level;
+ 	INT	cmsg_type;
+	/* followed by UCHAR cmsg_data[]; */
+} WSACMSGHDR;
+
+/* TODO: Standard Posix.1g macros as per RFC 2292, with WSA_uglification. */
+#if 0
+#define WSA_CMSG_FIRSTHDR(mhdr)
+#define WSA_CMSG_NXTHDR(mhdr, cmsg)
+#define WSA_CMSG_SPACE(length)
+#define WSA_CMSG_LEN(length)
+#endif
+
+BOOL PASCAL DisconnectEx(SOCKET,LPOVERLAPPED,DWORD,DWORD);
+int PASCAL WSARecvMsg(SOCKET,LPWSAMSG,LPDWORD,LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE);
+
+#endif /* _WINSOCK2_H */
+
+#ifdef __cplusplus
+}
+#endif
+#endif  /*  _MSWSOCK_H */
+
Index: Daodan/MinGW/include/nb30.h
===================================================================
--- Daodan/MinGW/include/nb30.h	(revision 1046)
+++ Daodan/MinGW/include/nb30.h	(revision 1046)
@@ -0,0 +1,186 @@
+#ifndef _NB30_H
+#define _NB30_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define NCBNAMSZ 16
+#define MAX_LANA 254
+#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
+#define LISTEN_OUTSTANDING 0x01
+#define CALL_PENDING 0x02
+#define SESSION_ESTABLISHED 0x03
+#define HANGUP_PENDING 0x04
+#define HANGUP_COMPLETE 0x05
+#define SESSION_ABORTED 0x06
+#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
+#define NCB_POST void CALLBACK
+typedef struct _ACTION_HEADER {
+	ULONG transport_id;
+	USHORT action_code;
+	USHORT reserved;
+} ACTION_HEADER,*PACTION_HEADER;
+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 _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 _FIND_NAME_HEADER {
+	WORD node_count;
+	UCHAR reserved;
+	UCHAR unique_group;
+} FIND_NAME_HEADER,*PFIND_NAME_HEADER;
+typedef struct _LANA_ENUM {
+	UCHAR length;
+	UCHAR lana[MAX_LANA+1];
+} LANA_ENUM,*PLANA_ENUM;
+typedef struct _NAME_BUFFER {
+	UCHAR name[NCBNAMSZ];
+	UCHAR name_num;
+	UCHAR name_flags;
+} NAME_BUFFER,*PNAME_BUFFER;
+typedef struct _NCB {
+	UCHAR ncb_command;
+	UCHAR ncb_retcode;
+	UCHAR ncb_lsn;
+	UCHAR ncb_num;
+	PUCHAR ncb_buffer;
+	WORD ncb_length;
+	UCHAR ncb_callname[NCBNAMSZ];
+	UCHAR ncb_name[NCBNAMSZ];
+	UCHAR ncb_rto;
+	UCHAR ncb_sto;
+	void (CALLBACK *ncb_post)(struct _NCB*);
+	UCHAR ncb_lana_num;
+	UCHAR ncb_cmd_cplt;
+	UCHAR ncb_reserve[10];
+	HANDLE ncb_event;
+} NCB,*PNCB;
+typedef struct _SESSION_BUFFER {
+	UCHAR lsn;
+	UCHAR state;
+	UCHAR local_name[NCBNAMSZ];
+	UCHAR remote_name[NCBNAMSZ];
+	UCHAR rcvs_outstanding;
+	UCHAR sends_outstanding;
+} SESSION_BUFFER,*PSESSION_BUFFER;
+typedef struct _SESSION_HEADER {
+	UCHAR sess_name;
+	UCHAR num_sess;
+	UCHAR rcv_dg_outstanding;
+	UCHAR rcv_any_outstanding;
+} SESSION_HEADER,*PSESSION_HEADER;
+UCHAR WINAPI Netbios(PNCB);
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/nddeapi.h
===================================================================
--- Daodan/MinGW/include/nddeapi.h	(revision 1046)
+++ Daodan/MinGW/include/nddeapi.h	(revision 1046)
@@ -0,0 +1,133 @@
+#ifndef _NDDEAPI_H
+#define _NDDEAPI_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#ifndef CNLEN /* also in lmcons.h */
+#define CNLEN 15
+#define UNCLEN (CNLEN + 2)
+#endif
+#define SEP_CHAR ','
+#define BAR_CHAR "|"
+#define SEP_WCHAR L','
+#define BAR_WCHAR L"|"
+#define NDDE_NO_ERROR 0
+#define NDDE_ACCESS_DENIED 1
+#define NDDE_BUF_TOO_SMALL 2
+#define NDDE_ERROR_MORE_DATA 3
+#define NDDE_INVALID_SERVER 4
+#define NDDE_INVALID_SHARE 5
+#define NDDE_INVALID_PARAMETER 6
+#define NDDE_INVALID_LEVEL 7
+#define NDDE_INVALID_PASSWORD 8
+#define NDDE_INVALID_ITEMNAME 9
+#define NDDE_INVALID_TOPIC 10
+#define NDDE_INTERNAL_ERROR 11
+#define NDDE_OUT_OF_MEMORY 12
+#define NDDE_INVALID_APPNAME 13
+#define NDDE_NOT_IMPLEMENTED 14
+#define NDDE_SHARE_ALREADY_EXIST 15
+#define NDDE_SHARE_NOT_EXIST 16
+#define NDDE_INVALID_FILENAME 17
+#define NDDE_NOT_RUNNING 18
+#define NDDE_INVALID_WINDOW 19
+#define NDDE_INVALID_SESSION 20
+#define NDDE_INVALID_ITEM_LIST 21
+#define NDDE_SHARE_DATA_CORRUPTED 22
+#define NDDE_REGISTRY_ERROR 23
+#define NDDE_CANT_ACCESS_SERVER 24
+#define NDDE_INVALID_SPECIAL_COMMAND 25
+#define NDDE_INVALID_SECURITY_DESC 26
+#define NDDE_TRUST_SHARE_FAIL 27
+#define MAX_NDDESHARENAME 256
+#define MAX_DOMAINNAME 15
+#define MAX_USERNAME 15
+#define MAX_APPNAME 255
+#define MAX_TOPICNAME 255
+#define MAX_ITEMNAME 255
+#define NDDEF_NOPASSWORDPROMPT 0x0001
+#define NDDEF_NOCACHELOOKUP 0x0002
+#define NDDEF_STRIP_NDDE 0x0004
+#define SHARE_TYPE_OLD 0x01
+#define SHARE_TYPE_NEW 0x02
+#define SHARE_TYPE_STATIC 0x04
+#define NDDE_TRUST_SHARE_START 0x80000000L
+#define NDDE_TRUST_SHARE_INIT 0x40000000L
+#define NDDE_TRUST_SHARE_DEL 0x20000000L
+#define NDDE_TRUST_CMD_SHOW 0x10000000L
+#define NDDE_CMD_SHOW_MASK 0x0000FFFFL
+struct NDdeShareInfo_tag {
+	LONG lRevision;
+	LPTSTR lpszShareName;
+	LONG lShareType;
+	LPTSTR lpszAppTopicList;
+	LONG fSharedFlag;
+	LONG fService;
+	LONG fStartAppFlag;
+	LONG nCmdShow;
+	LONG qModifyId[2];
+	LONG cNumItems;
+	LPTSTR lpszItemList;
+} NDDESHAREINFO,*PNDDESHAREINFO;
+
+UINT WINAPI NDdeGetErrorStringA(UINT,LPSTR,DWORD);
+UINT WINAPI NDdeGetErrorStringW(UINT,LPWSTR,DWORD);
+UINT WINAPI NDdeGetShareSecurityA(LPSTR,LPSTR,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR,DWORD,PDWORD);
+UINT WINAPI NDdeGetShareSecurityW(LPWSTR,LPWSTR,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR,DWORD,PDWORD);
+UINT WINAPI NDdeGetTrustedShareA(LPSTR,LPSTR,PDWORD,PDWORD,PDWORD);
+UINT WINAPI NDdeGetTrustedShareW(LPWSTR,LPWSTR,PDWORD,PDWORD,PDWORD);
+BOOL WINAPI NDdeIsValidShareNameA(LPSTR);
+BOOL WINAPI NDdeIsValidShareNameW(LPWSTR);
+BOOL WINAPI NDdeIsValidAppTopicListA(LPSTR);
+BOOL WINAPI NDdeIsValidAppTopicListW(LPWSTR);
+UINT WINAPI NDdeSetShareSecurityA(LPSTR,LPSTR,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR);
+UINT WINAPI NDdeSetShareSecurityW(LPWSTR,LPWSTR,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR);
+UINT WINAPI NDdeSetTrustedShareA(LPSTR,LPSTR,DWORD);
+UINT WINAPI NDdeSetTrustedShareW(LPWSTR,LPWSTR,DWORD);
+UINT WINAPI NDdeShareAddA(LPSTR,UINT,PSECURITY_DESCRIPTOR,PBYTE,DWORD);
+UINT WINAPI NDdeShareAddW(LPWSTR,UINT,PSECURITY_DESCRIPTOR,PBYTE,DWORD);
+UINT WINAPI NDdeShareDelA(LPSTR,LPSTR,UINT);
+UINT WINAPI NDdeShareDelW(LPWSTR,LPWSTR,UINT);
+UINT WINAPI NDdeShareEnumA(LPSTR,UINT,PBYTE,DWORD,PDWORD,PDWORD);
+UINT WINAPI NDdeShareEnumW(LPWSTR,UINT,PBYTE,DWORD,PDWORD,PDWORD);
+UINT WINAPI NDdeShareGetInfoA(LPSTR,LPSTR,UINT,PBYTE,DWORD,PDWORD,PWORD);
+UINT WINAPI NDdeShareGetInfoW(LPWSTR,LPWSTR,UINT,PBYTE,DWORD,PDWORD,PWORD);
+UINT WINAPI NDdeShareSetInfoA(LPSTR,LPSTR,UINT,PBYTE,DWORD,WORD);
+UINT WINAPI NDdeShareSetInfoW(LPWSTR,LPWSTR,UINT,PBYTE,DWORD,WORD);
+UINT WINAPI NDdeTrustedShareEnumA(LPSTR,UINT,PBYTE,DWORD,PDWORD,PDWORD);
+UINT WINAPI NDdeTrustedShareEnumW(LPWSTR,UINT,PBYTE,DWORD,PDWORD,PDWORD);
+#ifdef UNICODE
+#define NDdeShareAdd NDdeShareAddW
+#define NDdeShareDel NDdeShareDelW
+#define NDdeSetShareSecurity NDdeSetShareSecurityW
+#define NDdeGetShareSecurity NDdeGetShareSecurityW
+#define NDdeShareEnum NDdeShareEnumW
+#define NDdeShareGetInfo NDdeShareGetInfoW
+#define NDdeShareSetInfo NDdeShareSetInfoW
+#define NDdeGetErrorString NDdeGetErrorStringW
+#define NDdeSetTrustedShare NDdeSetTrustedShareW
+#define NDdeGetTrustedShare NDdeGetTrustedShareW
+#define NDdeTrustedShareEnum NDdeTrustedShareEnumW
+#else
+#define NDdeShareAdd NDdeShareAddA
+#define NDdeShareDel NDdeShareDelA
+#define NDdeSetShareSecurity NDdeSetShareSecurityA
+#define NDdeGetShareSecurity NDdeGetShareSecurityA
+#define NDdeShareEnum NDdeShareEnumA
+#define NDdeShareGetInfo NDdeShareGetInfoA
+#define NDdeShareSetInfo NDdeShareSetInfoA
+#define NDdeGetErrorString NDdeGetErrorStringA
+#define NDdeIsValidShareName NDdeIsValidShareNameA
+#define NDdeIsValidAppTopicList NDdeIsValidAppTopicListA
+#define NDdeSetTrustedShare NDdeSetTrustedShareA
+#define NDdeGetTrustedShare NDdeGetTrustedShareA
+#define NDdeTrustedShareEnum NDdeTrustedShareEnumA
+#endif
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/nspapi.h
===================================================================
--- Daodan/MinGW/include/nspapi.h	(revision 1046)
+++ Daodan/MinGW/include/nspapi.h	(revision 1046)
@@ -0,0 +1,126 @@
+#ifndef _NSPAPI_H
+#define _NSPAPI_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define NS_ALL		0
+
+#define NS_SAP		1
+#define NS_NDS		2
+#define NS_PEER_BROWSE	3
+
+#define NS_TCPIP_LOCAL	10
+#define NS_TCPIP_HOSTS	11
+#define NS_DNS		12
+#define NS_NETBT	13
+#define NS_WINS		14
+
+#define NS_NBP		20
+
+#define NS_MS		30
+#define NS_STDA		31
+#define NS_NTDS		32
+
+#define NS_X500		40
+#define NS_NIS		41
+#define NS_NISPLUS	42
+
+#define NS_WRQ		50
+
+#define SERVICE_REGISTER	1
+#define SERVICE_DEREGISTER	2
+#define SERVICE_FLUSH		3
+#define SERVICE_FLAG_HARD	0x00000002
+
+#ifndef RC_INVOKED
+
+#if defined (_WINSOCK_H) || defined (_WINSOCK2_H) /* needed for LPSOCKADDR */
+#ifndef __CSADDR_T_DEFINED /* also in winsock2.h, but not in winsock.h */
+#define __CSADDR_T_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;
+#endif
+#endif
+
+#ifndef __BLOB_T_DEFINED /* also in wtypes.h and winsock2.h */
+#define __BLOB_T_DEFINED
+typedef struct _BLOB {
+	ULONG	cbSize;
+	BYTE	*pBlobData;
+} BLOB,*PBLOB,*LPBLOB;
+#endif
+
+typedef struct _SERVICE_ADDRESS {
+	DWORD dwAddressType;
+	DWORD dwAddressFlags;
+	DWORD dwAddressLength;
+	DWORD dwPrincipalLength;
+	BYTE *lpAddress;
+	BYTE *lpPrincipal;
+} SERVICE_ADDRESS;
+typedef struct _SERVICE_ADDRESSES {
+	DWORD dwAddressCount;
+	SERVICE_ADDRESS Addresses[1];
+} SERVICE_ADDRESSES, *PSERVICE_ADDRESSES, *LPSERVICE_ADDRESSES;
+typedef struct _SERVICE_INFOA {
+	LPGUID lpServiceType;
+	LPSTR lpServiceName;
+	LPSTR lpComment;
+	LPSTR lpLocale;
+	DWORD dwDisplayHint;
+	DWORD dwVersion;
+	DWORD dwTime;
+	LPSTR lpMachineName;
+	LPSERVICE_ADDRESSES lpServiceAddress;
+	BLOB ServiceSpecificInfo;
+} SERVICE_INFOA, *LPSERVICE_INFOA;
+typedef struct _SERVICE_INFOW {
+	LPGUID lpServiceType;
+	LPWSTR lpServiceName;
+	LPWSTR lpComment;
+	LPWSTR lpLocale;
+	DWORD dwDisplayHint;
+	DWORD dwVersion;
+	DWORD dwTime;
+	LPWSTR lpMachineName;
+	LPSERVICE_ADDRESSES lpServiceAddress;
+	BLOB ServiceSpecificInfo;
+} SERVICE_INFOW, *LPSERVICE_INFOW;
+
+typedef void *LPSERVICE_ASYNC_INFO;
+INT WINAPI SetServiceA(DWORD,DWORD,DWORD,LPSERVICE_INFOA,LPSERVICE_ASYNC_INFO,LPDWORD);
+INT WINAPI SetServiceW(DWORD,DWORD,DWORD,LPSERVICE_INFOW,LPSERVICE_ASYNC_INFO,LPDWORD);
+INT WINAPI GetAddressByNameA(DWORD,LPGUID,LPSTR,LPINT,DWORD,LPSERVICE_ASYNC_INFO,LPVOID,LPDWORD,LPSTR,LPDWORD);
+INT WINAPI GetAddressByNameW(DWORD,LPGUID,LPWSTR,LPINT,DWORD,LPSERVICE_ASYNC_INFO,LPVOID,LPDWORD,LPWSTR,LPDWORD);
+
+#ifdef UNICODE
+typedef SERVICE_INFOW SERVICE_INFO, *LPSERVICE_INFO;
+#define _SERVICE_INFO SERVICE_INFOW
+#define SetService SetServiceW
+#define GetAddressByName GetAddressByNameW
+#else
+typedef SERVICE_INFOA SERVICE_INFO, *LPSERVICE_INFO;
+#define _SERVICE_INFO SERVICE_INFOA
+#define SetService SetServiceA
+#define GetAddressByName GetAddressByNameA
+#endif
+
+#endif /* RC_INVOKED */
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* _NSPAPI_H */
Index: Daodan/MinGW/include/ntdef.h
===================================================================
--- Daodan/MinGW/include/ntdef.h	(revision 1046)
+++ Daodan/MinGW/include/ntdef.h	(revision 1046)
@@ -0,0 +1,60 @@
+#ifndef _NTDEF_H
+#define _NTDEF_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#define NTAPI __stdcall
+#define OBJ_INHERIT 2L
+#define OBJ_PERMANENT 16L
+#define OBJ_EXCLUSIVE 32L
+#define OBJ_CASE_INSENSITIVE 64L
+#define OBJ_OPENIF 128L
+#define OBJ_OPENLINK 256L
+#define OBJ_VALID_ATTRIBUTES 498L
+#define InitializeObjectAttributes(p,n,a,r,s) { \
+  (p)->Length = sizeof(OBJECT_ATTRIBUTES); \
+  (p)->RootDirectory = (r); \
+  (p)->Attributes = (a); \
+  (p)->ObjectName = (n); \
+  (p)->SecurityDescriptor = (s); \
+  (p)->SecurityQualityOfService = NULL; \
+}
+#ifndef NT_SUCCESS
+#define NT_SUCCESS(x) ((x)>=0)
+#define STATUS_SUCCESS ((NTSTATUS)0)
+#endif
+#if !defined(_NTSECAPI_H) && !defined(_SUBAUTH_H)
+typedef LONG NTSTATUS, *PNTSTATUS;
+typedef struct _UNICODE_STRING {
+  USHORT Length;
+  USHORT MaximumLength;
+  PWSTR  Buffer;
+} UNICODE_STRING, *PUNICODE_STRING;
+typedef const UNICODE_STRING* PCUNICODE_STRING;
+typedef struct _STRING {
+  USHORT Length;
+  USHORT MaximumLength;
+  PCHAR  Buffer;
+} STRING, *PSTRING;
+#endif
+typedef STRING ANSI_STRING;
+typedef PSTRING PANSI_STRING;
+typedef STRING OEM_STRING;
+typedef PSTRING POEM_STRING;
+typedef LARGE_INTEGER PHYSICAL_ADDRESS, *PPHYSICAL_ADDRESS;
+typedef enum _SECTION_INHERIT {
+  ViewShare = 1,
+  ViewUnmap = 2
+} SECTION_INHERIT;
+#if !defined(_NTSECAPI_H)
+typedef struct _OBJECT_ATTRIBUTES {
+  ULONG Length;
+  HANDLE RootDirectory;
+  PUNICODE_STRING ObjectName;
+  ULONG Attributes;
+  PVOID SecurityDescriptor;
+  PVOID SecurityQualityOfService;
+} OBJECT_ATTRIBUTES, *POBJECT_ATTRIBUTES;
+#endif
+#endif /* _NTDEF_H */
Index: Daodan/MinGW/include/ntdll.h
===================================================================
--- Daodan/MinGW/include/ntdll.h	(revision 1046)
+++ Daodan/MinGW/include/ntdll.h	(revision 1046)
@@ -0,0 +1,15 @@
+#ifndef _NTDLL_H
+#define _NTDLL_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+typedef enum _SHUTDOWN_ACTION {
+     ShutdownNoReboot,
+     ShutdownReboot,
+     ShutdownPowerOff
+ } SHUTDOWN_ACTION;
+
+DWORD WINAPI NtShutdownSystem (SHUTDOWN_ACTION Action);
+
+#endif /* _NTDLL_H */
Index: Daodan/MinGW/include/ntdsapi.h
===================================================================
--- Daodan/MinGW/include/ntdsapi.h	(revision 1046)
+++ Daodan/MinGW/include/ntdsapi.h	(revision 1046)
@@ -0,0 +1,115 @@
+/*
+ * ntdsapi.h - Active Directory
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain.  You may use,
+ * modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY.  ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED.  This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+#ifndef _NTDSAPI_H
+#define _NTDSAPI_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*--- Active Directory Reference - Active Directory Enumerations */
+#if (_WIN32_WINNT >= 0x0501)
+typedef enum _DS_MANGLE_FOR {
+	DS_MANGLE_UNKNOWN = 0,
+	DS_MANGLE_OBJECT_RDN_FOR_DELETION = 1,
+	DS_MANGLE_OBJECT_RDN_FOR_NAME_CONFLICT = 2
+} DS_MANGLE_FOR;
+#endif /* (_WIN32_WINNT >= 0x0501) */
+#if (_WIN32_WINNT >= 0x0500)
+typedef enum {
+	DS_NAME_NO_ERROR = 0,
+	DS_NAME_ERROR_RESOLVING = 1,
+	DS_NAME_ERROR_NOT_FOUND = 2,
+	DS_NAME_ERROR_NOT_UNIQUE = 3,
+	DS_NAME_ERROR_NO_MAPPING = 4,
+	DS_NAME_ERROR_DOMAIN_ONLY = 5,
+	DS_NAME_ERROR_NO_SYNTACTICAL_MAPPING = 6,
+	DS_NAME_ERROR_TRUST_REFERRAL = 7
+} DS_NAME_ERROR;
+typedef enum {
+	DS_NAME_NO_FLAGS = 0x0,
+	DS_NAME_FLAG_SYNTACTICAL_ONLY = 0x1,
+	DS_NAME_FLAG_EVAL_AT_DC = 0x2,
+	DS_NAME_FLAG_GCVERIFY = 0x4,
+	DS_NAME_FLAG_TRUST_REFERRAL = 0x8
+} DS_NAME_FLAGS;
+typedef enum {
+	DS_UNKNOWN_NAME = 0,
+	DS_FQDN_1779_NAME = 1,
+	DS_NT4_ACCOUNT_NAME = 2,
+	DS_DISPLAY_NAME = 3,
+	DS_UNIQUE_ID_NAME = 6,
+	DS_CANONICAL_NAME = 7,
+	DS_USER_PRINCIPAL_NAME = 8,
+	DS_CANONICAL_NAME_EX = 9,
+	DS_SERVICE_PRINCIPAL_NAME = 10,
+	DS_SID_OR_SID_HISTORY_NAME = 11,
+	DS_DNS_DOMAIN_NAME = 12
+} DS_NAME_FORMAT;
+typedef enum _DS_REPL_INFO_TYPE {
+	DS_REPL_INFO_NEIGHBORS = 0,
+	DS_REPL_INFO_CURSORS_FOR_NC = 1,
+	DS_REPL_INFO_METADATA_FOR_OBJ = 2,
+	DS_REPL_INFO_KCC_DSA_CONNECT_FAILURES = 3,
+	DS_REPL_INFO_KCC_DSA_LINK_FAILURES = 4,
+	DS_REPL_INFO_PENDING_OPS = 5,
+	DS_REPL_INFO_METADATA_FOR_ATTR_VALUE = 6,
+	DS_REPL_INFO_CURSORS_2_FOR_NC = 7,
+	DS_REPL_INFO_CURSORS_3_FOR_NC = 8,
+	DS_REPL_INFO_METADATA_2_FOR_OBJ = 9,
+	DS_REPL_INFO_METADATA_2_FOR_ATTR_VALUE = 10
+} DS_REPL_INFO_TYPE;
+typedef enum {
+	DS_REPL_OP_TYPE_SYNC = 0,
+	DS_REPL_OP_TYPE_ADD,
+	DS_REPL_OP_TYPE_DELETE,
+	DS_REPL_OP_TYPE_MODIFY,
+	DS_REPL_OP_TYPE_UPDATE_REFS
+} DS_REPL_OP_TYPE;
+typedef enum {
+	DS_REPSYNCALL_WIN32_ERROR_CONTACTING_SERVER = 0,
+	DS_REPSYNCALL_WIN32_ERROR_REPLICATING = 1,
+	DS_REPSYNCALL_SERVER_UNREACHABLE = 2
+} DS_REPSYNCALL_ERROR;
+typedef enum {
+	DS_REPSYNCALL_EVENT_ERROR = 0,
+	DS_REPSYNCALL_EVENT_SYNC_STARTED = 1,
+	DS_REPSYNCALL_EVENT_SYNC_COMPLETED = 2,
+	DS_REPSYNCALL_EVENT_FINISHED = 3
+} DS_REPSYNCALL_EVENT;
+typedef enum {
+	DS_SPN_DNS_HOST = 0,
+	DS_SPN_DN_HOST = 1,
+	DS_SPN_NB_HOST = 2,
+	DS_SPN_DOMAIN = 3,
+	DS_SPN_NB_DOMAIN = 4,
+	DS_SPN_SERVICE = 5
+} DS_SPN_NAME_TYPE;
+typedef enum {
+	DS_SPN_ADD_SPN_OP = 0,
+	DS_SPN_REPLACE_SPN_OP = 1,
+	DS_SPN_DELETE_SPN_OP = 2
+} DS_SPN_WRITE_OP;
+
+
+#endif /* (_WIN32_WINNT >= 0x0500) */
+
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/ntdsbcli.h
===================================================================
--- Daodan/MinGW/include/ntdsbcli.h	(revision 1046)
+++ Daodan/MinGW/include/ntdsbcli.h	(revision 1046)
@@ -0,0 +1,45 @@
+/*
+ * ntdsbcli.h - Active Directory
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain.  You may use,
+ * modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY.  ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED.  This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+#ifndef _NTDSBCLI_H
+#define _NTDSBCLI_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*--- Active Directory Reference - Active Directory Structures - Directory Backup Structures */
+#if (_WIN32_WINNT >= 0x0500)
+typedef struct {
+	LPSTR szDatabaseName;
+	LPSTR szNewDatabaseName;
+} EDB_RSTMAPA,*PEDB_RSTMAPA;
+typedef struct {
+	LPWSTR szDatabaseName;
+	LPWSTR szNewDatabaseName;
+} EDB_RSTMAPW,*PEDB_RSTMAPW;
+#ifdef UNICODE
+typedef EDB_RSTMAPW EDB_RSTMAP,*PEDB_RSTMAP;
+#else
+typedef EDB_RSTMAPA EDB_RSTMAP,*PEDB_RSTMAP;
+#endif
+#endif /* (_WIN32_WINNT >= 0x0500) */
+
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/ntldap.h
===================================================================
--- Daodan/MinGW/include/ntldap.h	(revision 1046)
+++ Daodan/MinGW/include/ntldap.h	(revision 1046)
@@ -0,0 +1,60 @@
+/*
+  ntldap.h - Header file for the Windows LDAP API Extensions
+
+  Written by Filip Navara <xnavara@volny.cz>
+
+  References:
+    Lightweight Directory Access Protocol Reference
+    http://msdn.microsoft.com/library/en-us/netdir/ldap/ldap_reference.asp
+
+  This library is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+*/
+
+#ifndef _NTLDAP_H
+#define _NTLDAP_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#define LDAP_SERVER_ASQ_OID	"1.2.840.113556.1.4.1504"
+#define LDAP_SERVER_ASQ_OID_W	L"1.2.840.113556.1.4.1504"
+#define LDAP_SERVER_DIRSYNC_OID	"1.2.840.113556.1.4.841"
+#define LDAP_SERVER_DIRSYNC_OID_W	L"1.2.840.113556.1.4.841"
+#define LDAP_SERVER_SD_FLAGS_OID	"1.2.840.113556.1.4.801"
+#define LDAP_SERVER_SD_FLAGS_OID_W	L"1.2.840.113556.1.4.801"
+#define LDAP_SERVER_FAST_BIND_OID	"1.2.840.113556.1.4.1781"
+#define LDAP_SERVER_FAST_BIND_OID_W	L"1.2.840.113556.1.4.1781"
+#define LDAP_MATCHING_RULE_BIT_OR	"1.2.840.113556.1.4.804"
+#define LDAP_MATCHING_RULE_BIT_OR_W	L"1.2.840.113556.1.4.804"
+#define LDAP_MATCHING_RULE_BIT_AND	"1.2.840.113556.1.4.803"
+#define LDAP_MATCHING_RULE_BIT_AND_W	L"1.2.840.113556.1.4.803"
+#define LDAP_SERVER_EXTENDED_DN_OID	"1.2.840.113556.1.4.529"
+#define LDAP_SERVER_EXTENDED_DN_OID_W	L"1.2.840.113556.1.4.529"
+#define LDAP_SERVER_LAZY_COMMIT_OID	"1.2.840.113556.1.4.619"
+#define LDAP_SERVER_LAZY_COMMIT_OID_W	L"1.2.840.113556.1.4.619"
+#define LDAP_SERVER_TREE_DELETE_OID	"1.2.840.113556.1.4.805"
+#define LDAP_SERVER_TREE_DELETE_OID_W	L"1.2.840.113556.1.4.805"
+#define LDAP_SERVER_VERIFY_NAME_OID	"1.2.840.113556.1.4.1338"
+#define LDAP_SERVER_VERIFY_NAME_OID_W	L"1.2.840.113556.1.4.1338"
+#define LDAP_SERVER_SHOW_DELETED_OID	"1.2.840.113556.1.4.417"
+#define LDAP_SERVER_SHOW_DELETED_OID_W	L"1.2.840.113556.1.4.417"
+#define LDAP_SERVER_NOTIFICATION_OID	"1.2.840.113556.1.4.528"
+#define LDAP_SERVER_NOTIFICATION_OID_W	L"1.2.840.113556.1.4.528"
+#define LDAP_SERVER_DOMAIN_SCOPE_OID	"1.2.840.113556.1.4.1339"
+#define LDAP_SERVER_DOMAIN_SCOPE_OID_W	L"1.2.840.113556.1.4.1339"
+#define LDAP_CAP_ACTIVE_DIRECTORY_OID	"1.2.840.113556.1.4.800"
+#define LDAP_CAP_ACTIVE_DIRECTORY_OID_W	L"1.2.840.113556.1.4.800"
+#define LDAP_SERVER_SEARCH_OPTIONS_OID	"1.2.840.113556.1.4.1340"
+#define LDAP_SERVER_SEARCH_OPTIONS_OID_W	L"1.2.840.113556.1.4.1340"
+#define LDAP_CAP_ACTIVE_DIRECTORY_V51_OID	"1.2.840.113556.1.4.1670"
+#define LDAP_CAP_ACTIVE_DIRECTORY_V51_OID_W	L"1.2.840.113556.1.4.1670"
+#define LDAP_SERVER_PERMISSIVE_MODIFY_OID	"1.2.840.113556.1.4.1413"
+#define LDAP_SERVER_PERMISSIVE_MODIFY_OID_W	L"1.2.840.113556.1.4.1413"
+#define LDAP_SERVER_CROSSDOM_MOVE_TARGET_OID	"1.2.840.113556.1.4.521"
+#define LDAP_SERVER_CROSSDOM_MOVE_TARGET_OID_W	L"1.2.840.113556.1.4.521"
+#define SERVER_SEARCH_FLAG_DOMAIN_SCOPE	1
+#define SERVER_SEARCH_FLAG_PHANTOM_ROOT	2
+
+#endif /*  _NTLDAP_H */
Index: Daodan/MinGW/include/ntsecapi.h
===================================================================
--- Daodan/MinGW/include/ntsecapi.h	(revision 1046)
+++ Daodan/MinGW/include/ntsecapi.h	(revision 1046)
@@ -0,0 +1,612 @@
+#ifndef _NTSECAPI_H
+#define _NTSECAPI_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define KERB_WRAP_NO_ENCRYPT 0x80000001
+#define LOGON_GUEST 1
+#define LOGON_NOENCRYPTION 2
+#define LOGON_CACHED_ACCOUNT 4
+#define LOGON_USED_LM_PASSWORD 8
+#define LOGON_EXTRA_SIDS 32
+#define LOGON_SUBAUTH_SESSION_KEY 64
+#define LOGON_SERVER_TRUST_ACCOUNT 128
+#define LOGON_NTLMV2_ENABLED 256
+#define LOGON_RESOURCE_GROUPS 512
+#define LOGON_PROFILE_PATH_RETURNED 1024
+#define LOGON_GRACE_LOGON 16777216
+#define LSA_MODE_PASSWORD_PROTECTED 1
+#define LSA_MODE_INDIVIDUAL_ACCOUNTS 2
+#define LSA_MODE_MANDATORY_ACCESS 3
+#define LSA_MODE_LOG_FULL 4
+#define LSA_SUCCESS(x) ((LONG)(x)>=0)
+#define MICROSOFT_KERBEROS_NAME_A "Kerberos"
+#define MICROSOFT_KERBEROS_NAME_W L"Kerberos"
+#define MSV1_0_ALLOW_SERVER_TRUST_ACCOUNT 32
+#define MSV1_0_ALLOW_WORKSTATION_TRUST_ACCOUNT 2048
+#define MSV1_0_CHALLENGE_LENGTH 8
+#define MSV1_0_CLEARTEXT_PASSWORD_ALLOWED 2
+#define MSV1_0_CRED_LM_PRESENT 1
+#define MSV1_0_CRED_NT_PRESENT 2
+#define MSV1_0_CRED_VERSION 0
+#define MSV1_0_DONT_TRY_GUEST_ACCOUNT 16
+#define MSV1_0_LANMAN_SESSION_KEY_LENGTH 8
+#define MSV1_0_MAX_NTLM3_LIFE 1800
+#define MSV1_0_MAX_AVL_SIZE 64000
+#define MSV1_0_MNS_LOGON 16777216
+#define MSV1_0_NTLM3_RESPONSE_LENGTH 16
+#define MSV1_0_NTLM3_OWF_LENGTH 16
+#define MSV1_0_NTLM3_INPUT_LENGTH (sizeof(MSV1_0_NTLM3_RESPONSE)-MSV1_0_NTLM3_RESPONSE_LENGTH)
+#define MSV1_0_OWF_PASSWORD_LENGTH 16
+#define MSV1_0_PACKAGE_NAME "MICROSOFT_AUTHENTICATION_PACKAGE_V1_0"
+#define MSV1_0_PACKAGE_NAMEW L"MICROSOFT_AUTHENTICATION_PACKAGE_V1_0"
+#define MSV1_0_PACKAGE_NAMEW_LENGTH sizeof(MSV1_0_PACKAGE_NAMEW)-sizeof(WCHAR)
+#define MSV1_0_RETURN_USER_PARAMETERS 8
+#define MSV1_0_RETURN_PASSWORD_EXPIRY 64
+#define MSV1_0_RETURN_PROFILE_PATH 512
+#define MSV1_0_SUBAUTHENTICATION_DLL_EX 1048576
+#define MSV1_0_SUBAUTHENTICATION_DLL 0xff000000
+#define MSV1_0_SUBAUTHENTICATION_DLL_SHIFT 24
+#define MSV1_0_SUBAUTHENTICATION_DLL_RAS 2
+#define MSV1_0_SUBAUTHENTICATION_DLL_IIS 132
+#define MSV1_0_SUBAUTHENTICATION_FLAGS 0xff000000
+#define MSV1_0_SUBAUTHENTICATION_KEY "System\\CurrentControlSet\\Control\\Lsa\\MSV1_0"
+#define MSV1_0_SUBAUTHENTICATION_VALUE "Auth"
+#define MSV1_0_TRY_GUEST_ACCOUNT_ONLY 256
+#define MSV1_0_TRY_SPECIFIED_DOMAIN_ONLY 1024
+#define MSV1_0_UPDATE_LOGON_STATISTICS 4
+#define MSV1_0_USE_CLIENT_CHALLENGE 128
+#define MSV1_0_USER_SESSION_KEY_LENGTH 16
+#define POLICY_VIEW_LOCAL_INFORMATION 1
+#define POLICY_VIEW_AUDIT_INFORMATION 2
+#define POLICY_GET_PRIVATE_INFORMATION 4
+#define POLICY_TRUST_ADMIN 8
+#define POLICY_CREATE_ACCOUNT 16
+#define POLICY_CREATE_SECRET 32
+#define POLICY_CREATE_PRIVILEGE 64
+#define POLICY_SET_DEFAULT_QUOTA_LIMITS 128
+#define POLICY_SET_AUDIT_REQUIREMENTS 256
+#define POLICY_AUDIT_LOG_ADMIN 512
+#define POLICY_SERVER_ADMIN 1024
+#define POLICY_LOOKUP_NAMES 2048
+#define POLICY_READ (STANDARD_RIGHTS_READ|6)
+#define POLICY_WRITE (STANDARD_RIGHTS_WRITE|2040)
+#define POLICY_EXECUTE (STANDARD_RIGHTS_EXECUTE|2049)
+#define POLICY_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|4095)
+#define POLICY_AUDIT_EVENT_UNCHANGED 0
+#define POLICY_AUDIT_EVENT_SUCCESS 1
+#define POLICY_AUDIT_EVENT_FAILURE 2
+#define POLICY_AUDIT_EVENT_NONE 4
+#define POLICY_AUDIT_EVENT_MASK 7
+#define POLICY_LOCATION_LOCAL 1
+#define POLICY_LOCATION_DS 2
+#define POLICY_MACHINE_POLICY_LOCAL 0
+#define POLICY_MACHINE_POLICY_DEFAULTED 1
+#define POLICY_MACHINE_POLICY_EXPLICIT 2
+#define POLICY_MACHINE_POLICY_UNKNOWN 0xFFFFFFFF
+#define POLICY_QOS_SCHANEL_REQUIRED 1
+#define POLICY_QOS_OUTBOUND_INTEGRITY 2
+#define POLICY_QOS_OUTBOUND_CONFIDENTIALITY 4
+#define POLICY_QOS_INBOUND_INTEGREITY 8
+#define POLICY_QOS_INBOUND_CONFIDENTIALITY 16
+#define POLICY_QOS_ALLOW_LOCAL_ROOT_CERT_STORE 32
+#define POLICY_QOS_RAS_SERVER_ALLOWED 64
+#define POLICY_QOS_DHCP_SERVER_ALLOWD 128
+#define POLICY_KERBEROS_FORWARDABLE 1
+#define POLICY_KERBEROS_PROXYABLE 2
+#define POLICY_KERBEROS_RENEWABLE 4
+#define POLICY_KERBEROS_POSTDATEABLE 8
+#define SAM_PASSWORD_CHANGE_NOTIFY_ROUTINE "PasswordChangeNotify"
+#define SAM_INIT_NOTIFICATION_ROUTINE "InitializeChangeNotify"
+#define SAM_PASSWORD_FILTER_ROUTINE "PasswordFilter"
+#define SE_INTERACTIVE_LOGON_NAME TEXT("SeInteractiveLogonRight")
+#define SE_NETWORK_LOGON_NAME TEXT("SeNetworkLogonRight")
+#define SE_BATCH_LOGON_NAME TEXT("SeBatchLogonRight")
+#define SE_SERVICE_LOGON_NAME TEXT("SeServiceLogonRight")
+#define TRUST_ATTRIBUTE_NON_TRANSITIVE 1
+#define TRUST_ATTRIBUTE_UPLEVEL_ONLY 2
+#define TRUST_ATTRIBUTE_TREE_PARENT 4194304
+#define TRUST_ATTRIBUTES_VALID  -16580609
+#define TRUST_AUTH_TYPE_NONE 0
+#define TRUST_AUTH_TYPE_NT4OWF 1
+#define TRUST_AUTH_TYPE_CLEAR 2
+#define TRUST_DIRECTION_DISABLED 0
+#define TRUST_DIRECTION_INBOUND 1
+#define TRUST_DIRECTION_OUTBOUND 2
+#define TRUST_DIRECTION_BIDIRECTIONAL 3
+#define TRUST_TYPE_DOWNLEVEL 1
+#define TRUST_TYPE_UPLEVEL 2
+#define TRUST_TYPE_MIT 3
+#define TRUST_TYPE_DCE 4
+#if !defined(_NTDEF_H) && !defined(_SUBAUTH_H)
+typedef LONG NTSTATUS, *PNTSTATUS;
+typedef struct _UNICODE_STRING {
+  USHORT Length;
+  USHORT MaximumLength;
+  PWSTR Buffer;
+} UNICODE_STRING, *PUNICODE_STRING;
+typedef const UNICODE_STRING* PCUNICODE_STRING;
+typedef struct _STRING {
+  USHORT Length;
+  USHORT MaximumLength;
+  PCHAR Buffer;
+} STRING, *PSTRING;
+#endif
+typedef UNICODE_STRING LSA_UNICODE_STRING, *PLSA_UNICODE_STRING;
+typedef STRING LSA_STRING, *PLSA_STRING;
+typedef enum _MSV1_0_LOGON_SUBMIT_TYPE {
+  MsV1_0InteractiveLogon = 2,
+  MsV1_0Lm20Logon,
+  MsV1_0NetworkLogon,
+  MsV1_0SubAuthLogon,
+  MsV1_0WorkstationUnlockLogon = 7
+} MSV1_0_LOGON_SUBMIT_TYPE, *PMSV1_0_LOGON_SUBMIT_TYPE;
+typedef enum _MSV1_0_PROFILE_BUFFER_TYPE {
+  MsV1_0InteractiveProfile = 2,
+  MsV1_0Lm20LogonProfile,
+  MsV1_0SmartCardProfile
+} MSV1_0_PROFILE_BUFFER_TYPE, *PMSV1_0_PROFILE_BUFFER_TYPE;
+typedef enum {
+  MsvAvEOL,
+  MsvAvNbComputerName,
+  MsvAvNbDomainName,
+  MsvAvDnsComputerName,
+  MsvAvDnsDomainName
+} MSV1_0_AVID;
+typedef enum _MSV1_0_PROTOCOL_MESSAGE_TYPE {
+  MsV1_0Lm20ChallengeRequest = 0,
+  MsV1_0Lm20GetChallengeResponse,
+  MsV1_0EnumerateUsers,
+  MsV1_0GetUserInfo,
+  MsV1_0ReLogonUsers,
+  MsV1_0ChangePassword,
+  MsV1_0ChangeCachedPassword,
+  MsV1_0GenericPassthrough,
+  MsV1_0CacheLogon,
+  MsV1_0SubAuth,
+  MsV1_0DeriveCredential,
+  MsV1_0CacheLookup
+} MSV1_0_PROTOCOL_MESSAGE_TYPE, *PMSV1_0_PROTOCOL_MESSAGE_TYPE;
+typedef enum _POLICY_LSA_SERVER_ROLE {
+  PolicyServerRoleBackup = 2,
+  PolicyServerRolePrimary
+} POLICY_LSA_SERVER_ROLE, *PPOLICY_LSA_SERVER_ROLE;
+typedef enum _POLICY_SERVER_ENABLE_STATE {
+  PolicyServerEnabled = 2,
+  PolicyServerDisabled
+} POLICY_SERVER_ENABLE_STATE, *PPOLICY_SERVER_ENABLE_STATE;
+typedef enum _POLICY_INFORMATION_CLASS {
+  PolicyAuditLogInformation = 1,
+  PolicyAuditEventsInformation,
+  PolicyPrimaryDomainInformation,
+  PolicyPdAccountInformation,
+  PolicyAccountDomainInformation,
+  PolicyLsaServerRoleInformation,
+  PolicyReplicaSourceInformation,
+  PolicyDefaultQuotaInformation,
+  PolicyModificationInformation,
+  PolicyAuditFullSetInformation,
+  PolicyAuditFullQueryInformation,
+  PolicyDnsDomainInformation,
+  PolicyEfsInformation
+} POLICY_INFORMATION_CLASS, *PPOLICY_INFORMATION_CLASS;
+typedef enum _POLICY_AUDIT_EVENT_TYPE {
+  AuditCategorySystem,
+  AuditCategoryLogon,
+  AuditCategoryObjectAccess,
+  AuditCategoryPrivilegeUse,
+  AuditCategoryDetailedTracking,
+  AuditCategoryPolicyChange,
+  AuditCategoryAccountManagement,
+  AuditCategoryDirectoryServiceAccess,
+  AuditCategoryAccountLogon
+} POLICY_AUDIT_EVENT_TYPE, *PPOLICY_AUDIT_EVENT_TYPE;
+typedef enum _POLICY_LOCAL_INFORMATION_CLASS {
+  PolicyLocalAuditEventsInformation = 1,
+  PolicyLocalPdAccountInformation,
+  PolicyLocalAccountDomainInformation,
+  PolicyLocalLsaServerRoleInformation,
+  PolicyLocalReplicaSourceInformation,
+  PolicyLocalModificationInformation,
+  PolicyLocalAuditFullSetInformation,
+  PolicyLocalAuditFullQueryInformation,
+  PolicyLocalDnsDomainInformation,
+  PolicyLocalIPSecReferenceInformation,
+  PolicyLocalMachinePasswordInformation,
+  PolicyLocalQualityOfServiceInformation,
+  PolicyLocalPolicyLocationInformation
+} POLICY_LOCAL_INFORMATION_CLASS, *PPOLICY_LOCAL_INFORMATION_CLASS;
+typedef enum _POLICY_DOMAIN_INFORMATION_CLASS {
+  PolicyDomainIPSecReferenceInformation = 1,
+  PolicyDomainQualityOfServiceInformation,
+  PolicyDomainEfsInformation,
+  PolicyDomainPublicKeyInformation,
+  PolicyDomainPasswordPolicyInformation,
+  PolicyDomainLockoutInformation,
+  PolicyDomainKerberosTicketInformation
+} POLICY_DOMAIN_INFORMATION_CLASS, *PPOLICY_DOMAIN_INFORMATION_CLASS;
+typedef enum _SECURITY_LOGON_TYPE {
+  Interactive = 2,
+  Network,
+  Batch,
+  Service,
+  Proxy,
+  Unlock
+} SECURITY_LOGON_TYPE, *PSECURITY_LOGON_TYPE;
+typedef enum _TRUSTED_INFORMATION_CLASS {
+  TrustedDomainNameInformation = 1,
+  TrustedControllersInformation,
+  TrustedPosixOffsetInformation,
+  TrustedPasswordInformation,
+  TrustedDomainInformationBasic,
+  TrustedDomainInformationEx,
+  TrustedDomainAuthInformation,
+  TrustedDomainFullInformation
+} TRUSTED_INFORMATION_CLASS, *PTRUSTED_INFORMATION_CLASS;
+typedef struct _DOMAIN_PASSWORD_INFORMATION {
+  USHORT MinPasswordLength;
+  USHORT PasswordHistoryLength;
+  ULONG PasswordProperties;
+  LARGE_INTEGER MaxPasswordAge;
+  LARGE_INTEGER MinPasswordAge;
+} DOMAIN_PASSWORD_INFORMATION, *PDOMAIN_PASSWORD_INFORMATION;
+typedef ULONG LSA_ENUMERATION_HANDLE, *PLSA_ENUMERATION_HANDLE;
+typedef struct _LSA_ENUMERATION_INFORMATION {
+  PSID Sid;
+} LSA_ENUMERATION_INFORMATION, *PLSA_ENUMERATION_INFORMATION;
+typedef ULONG LSA_OPERATIONAL_MODE, *PLSA_OPERATIONAL_MODE;
+#if !defined(_NTDEF_H)
+typedef struct _LSA_OBJECT_ATTRIBUTES {
+  ULONG Length;
+  HANDLE RootDirectory;
+  PLSA_UNICODE_STRING ObjectName;
+  ULONG Attributes;
+  PVOID SecurityDescriptor;
+  PVOID SecurityQualityOfService;
+} OBJECT_ATTRIBUTES, *POBJECT_ATTRIBUTES;
+#endif
+typedef OBJECT_ATTRIBUTES LSA_OBJECT_ATTRIBUTES, *PLSA_OBJECT_ATTRIBUTES;
+typedef struct _LSA_TRUST_INFORMATION {
+  LSA_UNICODE_STRING Name;
+  PSID Sid;
+} LSA_TRUST_INFORMATION, *PLSA_TRUST_INFORMATION;
+typedef struct _LSA_REFERENCED_DOMAIN_LIST {
+  ULONG Entries;
+  PLSA_TRUST_INFORMATION Domains;
+} LSA_REFERENCED_DOMAIN_LIST, *PLSA_REFERENCED_DOMAIN_LIST;
+typedef struct _LSA_TRANSLATED_SID {
+  SID_NAME_USE Use;
+  ULONG RelativeId;
+  LONG DomainIndex;
+} LSA_TRANSLATED_SID, *PLSA_TRANSLATED_SID;
+typedef struct _LSA_TRANSLATED_NAME {
+  SID_NAME_USE Use;
+  LSA_UNICODE_STRING Name;
+  LONG DomainIndex;
+} LSA_TRANSLATED_NAME, *PLSA_TRANSLATED_NAME;
+typedef struct _MSV1_0_INTERACTIVE_LOGON {
+  MSV1_0_LOGON_SUBMIT_TYPE MessageType;
+  UNICODE_STRING LogonDomainName;
+  UNICODE_STRING UserName;
+  UNICODE_STRING Password;
+} MSV1_0_INTERACTIVE_LOGON, *PMSV1_0_INTERACTIVE_LOGON;
+typedef struct _MSV1_0_INTERACTIVE_PROFILE {
+  MSV1_0_PROFILE_BUFFER_TYPE MessageType;
+  USHORT LogonCount;
+  USHORT BadPasswordCount;
+  LARGE_INTEGER LogonTime;
+  LARGE_INTEGER LogoffTime;
+  LARGE_INTEGER KickOffTime;
+  LARGE_INTEGER PasswordLastSet;
+  LARGE_INTEGER PasswordCanChange;
+  LARGE_INTEGER PasswordMustChange;
+  UNICODE_STRING LogonScript;
+  UNICODE_STRING HomeDirectory;
+  UNICODE_STRING FullName;
+  UNICODE_STRING ProfilePath;
+  UNICODE_STRING HomeDirectoryDrive;
+  UNICODE_STRING LogonServer;
+  ULONG UserFlags;
+} MSV1_0_INTERACTIVE_PROFILE, *PMSV1_0_INTERACTIVE_PROFILE;
+typedef struct _MSV1_0_LM20_LOGON {
+  MSV1_0_LOGON_SUBMIT_TYPE MessageType;
+  UNICODE_STRING LogonDomainName;
+  UNICODE_STRING UserName;
+  UNICODE_STRING Workstation;
+  UCHAR ChallengeToClient[MSV1_0_CHALLENGE_LENGTH];
+  STRING CaseSensitiveChallengeResponse;
+  STRING CaseInsensitiveChallengeResponse;
+  ULONG ParameterControl;
+} MSV1_0_LM20_LOGON, * PMSV1_0_LM20_LOGON;
+typedef struct _MSV1_0_SUBAUTH_LOGON{ /* W2K only */
+  MSV1_0_LOGON_SUBMIT_TYPE MessageType;
+  UNICODE_STRING LogonDomainName;
+  UNICODE_STRING UserName;
+  UNICODE_STRING Workstation;
+  UCHAR ChallengeToClient[MSV1_0_CHALLENGE_LENGTH];
+  STRING AuthenticationInfo1;
+  STRING AuthenticationInfo2;
+  ULONG ParameterControl;
+  ULONG SubAuthPackageId;
+} MSV1_0_SUBAUTH_LOGON, * PMSV1_0_SUBAUTH_LOGON;
+typedef struct _MSV1_0_LM20_LOGON_PROFILE {
+  MSV1_0_PROFILE_BUFFER_TYPE MessageType;
+  LARGE_INTEGER KickOffTime;
+  LARGE_INTEGER LogoffTime;
+  ULONG UserFlags;
+  UCHAR UserSessionKey[MSV1_0_USER_SESSION_KEY_LENGTH];
+  UNICODE_STRING LogonDomainName;
+  UCHAR LanmanSessionKey[MSV1_0_LANMAN_SESSION_KEY_LENGTH];
+  UNICODE_STRING LogonServer;
+  UNICODE_STRING UserParameters;
+} MSV1_0_LM20_LOGON_PROFILE, * PMSV1_0_LM20_LOGON_PROFILE;
+typedef struct _MSV1_0_SUPPLEMENTAL_CREDENTIAL {
+  ULONG Version;
+  ULONG Flags;
+  UCHAR LmPassword[MSV1_0_OWF_PASSWORD_LENGTH];
+  UCHAR NtPassword[MSV1_0_OWF_PASSWORD_LENGTH];
+} MSV1_0_SUPPLEMENTAL_CREDENTIAL, *PMSV1_0_SUPPLEMENTAL_CREDENTIAL;
+typedef struct _MSV1_0_NTLM3_RESPONSE {
+  UCHAR Response[MSV1_0_NTLM3_RESPONSE_LENGTH];
+  UCHAR RespType;
+  UCHAR HiRespType;
+  USHORT Flags;
+  ULONG MsgWord;
+  ULONGLONG TimeStamp;
+  UCHAR ChallengeFromClient[MSV1_0_CHALLENGE_LENGTH];
+  ULONG AvPairsOff;
+  UCHAR Buffer[1];
+} MSV1_0_NTLM3_RESPONSE, *PMSV1_0_NTLM3_RESPONSE;
+typedef struct  _MSV1_0_AV_PAIR {
+  USHORT AvId;
+  USHORT AvLen;
+} MSV1_0_AV_PAIR, *PMSV1_0_AV_PAIR;
+typedef struct _MSV1_0_CHANGEPASSWORD_REQUEST {
+  MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType;
+  UNICODE_STRING DomainName;
+  UNICODE_STRING AccountName;
+  UNICODE_STRING OldPassword;
+  UNICODE_STRING NewPassword;
+  BOOLEAN Impersonating;
+} MSV1_0_CHANGEPASSWORD_REQUEST, *PMSV1_0_CHANGEPASSWORD_REQUEST;
+typedef struct _MSV1_0_CHANGEPASSWORD_RESPONSE {
+  MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType;
+  BOOLEAN PasswordInfoValid;
+  DOMAIN_PASSWORD_INFORMATION DomainPasswordInfo;
+} MSV1_0_CHANGEPASSWORD_RESPONSE, *PMSV1_0_CHANGEPASSWORD_RESPONSE;
+typedef struct _MSV1_0_SUBAUTH_REQUEST{
+  MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType;
+  ULONG SubAuthPackageId;
+  ULONG SubAuthInfoLength;
+  PUCHAR SubAuthSubmitBuffer;
+} MSV1_0_SUBAUTH_REQUEST, *PMSV1_0_SUBAUTH_REQUEST;
+typedef struct _MSV1_0_SUBAUTH_RESPONSE{
+  MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType;
+  ULONG SubAuthInfoLength;
+  PUCHAR SubAuthReturnBuffer;
+} MSV1_0_SUBAUTH_RESPONSE, *PMSV1_0_SUBAUTH_RESPONSE;
+#define MSV1_0_DERIVECRED_TYPE_SHA1 0
+typedef struct _MSV1_0_DERIVECRED_REQUEST {
+  MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType;
+  LUID LogonId;
+  ULONG DeriveCredType;
+  ULONG DeriveCredInfoLength;
+  UCHAR DeriveCredSubmitBuffer[1];
+} MSV1_0_DERIVECRED_REQUEST, *PMSV1_0_DERIVECRED_REQUEST;
+typedef struct _MSV1_0_DERIVECRED_RESPONSE {
+  MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType;
+  ULONG DeriveCredInfoLength;
+  UCHAR DeriveCredReturnBuffer[1];
+} MSV1_0_DERIVECRED_RESPONSE, *PMSV1_0_DERIVECRED_RESPONSE;
+typedef ULONG POLICY_AUDIT_EVENT_OPTIONS, *PPOLICY_AUDIT_EVENT_OPTIONS;
+typedef struct _POLICY_PRIVILEGE_DEFINITION {
+  LSA_UNICODE_STRING Name;
+  LUID LocalValue;
+} POLICY_PRIVILEGE_DEFINITION, *PPOLICY_PRIVILEGE_DEFINITION;
+typedef struct _POLICY_AUDIT_LOG_INFO {
+  ULONG AuditLogPercentFull;
+  ULONG MaximumLogSize;
+  LARGE_INTEGER AuditRetentionPeriod;
+  BOOLEAN AuditLogFullShutdownInProgress;
+  LARGE_INTEGER TimeToShutdown;
+  ULONG NextAuditRecordId;
+} POLICY_AUDIT_LOG_INFO, *PPOLICY_AUDIT_LOG_INFO;
+typedef struct _POLICY_AUDIT_EVENTS_INFO {
+  BOOLEAN AuditingMode;
+  PPOLICY_AUDIT_EVENT_OPTIONS EventAuditingOptions;
+  ULONG MaximumAuditEventCount;
+} POLICY_AUDIT_EVENTS_INFO, *PPOLICY_AUDIT_EVENTS_INFO;
+typedef struct _POLICY_ACCOUNT_DOMAIN_INFO {
+  LSA_UNICODE_STRING DomainName;
+  PSID DomainSid;
+} POLICY_ACCOUNT_DOMAIN_INFO, *PPOLICY_ACCOUNT_DOMAIN_INFO;
+typedef struct _POLICY_PRIMARY_DOMAIN_INFO {
+  LSA_UNICODE_STRING Name;
+  PSID Sid;
+} POLICY_PRIMARY_DOMAIN_INFO, *PPOLICY_PRIMARY_DOMAIN_INFO;
+typedef struct _POLICY_DNS_DOMAIN_INFO {
+  LSA_UNICODE_STRING Name;
+  LSA_UNICODE_STRING DnsDomainName;
+  LSA_UNICODE_STRING DnsForestName;
+  GUID DomainGuid;
+  PSID Sid;
+} POLICY_DNS_DOMAIN_INFO, *PPOLICY_DNS_DOMAIN_INFO;
+typedef struct _POLICY_PD_ACCOUNT_INFO {
+  LSA_UNICODE_STRING Name;
+} POLICY_PD_ACCOUNT_INFO, *PPOLICY_PD_ACCOUNT_INFO;
+typedef struct _POLICY_LSA_SERVER_ROLE_INFO {
+  POLICY_LSA_SERVER_ROLE LsaServerRole;
+} POLICY_LSA_SERVER_ROLE_INFO, *PPOLICY_LSA_SERVER_ROLE_INFO;
+typedef struct _POLICY_REPLICA_SOURCE_INFO {
+  LSA_UNICODE_STRING ReplicaSource;
+  LSA_UNICODE_STRING ReplicaAccountName;
+} POLICY_REPLICA_SOURCE_INFO, *PPOLICY_REPLICA_SOURCE_INFO;
+typedef struct _POLICY_DEFAULT_QUOTA_INFO {
+  QUOTA_LIMITS QuotaLimits;
+} POLICY_DEFAULT_QUOTA_INFO, *PPOLICY_DEFAULT_QUOTA_INFO;
+typedef struct _POLICY_MODIFICATION_INFO {
+  LARGE_INTEGER ModifiedId;
+  LARGE_INTEGER DatabaseCreationTime;
+} POLICY_MODIFICATION_INFO, *PPOLICY_MODIFICATION_INFO;
+typedef struct _POLICY_AUDIT_FULL_SET_INFO {
+  BOOLEAN ShutDownOnFull;
+} POLICY_AUDIT_FULL_SET_INFO, *PPOLICY_AUDIT_FULL_SET_INFO;
+typedef struct _POLICY_AUDIT_FULL_QUERY_INFO {
+  BOOLEAN ShutDownOnFull;
+  BOOLEAN LogIsFull;
+} POLICY_AUDIT_FULL_QUERY_INFO, *PPOLICY_AUDIT_FULL_QUERY_INFO;
+typedef struct _POLICY_EFS_INFO {
+  ULONG InfoLength;
+  PUCHAR EfsBlob;
+} POLICY_EFS_INFO, *PPOLICY_EFS_INFO;
+typedef struct _POLICY_LOCAL_IPSEC_REFERENCE_INFO {
+  LSA_UNICODE_STRING ObjectPath;
+} POLICY_LOCAL_IPSEC_REFERENCE_INFO, *PPOLICY_LOCAL_IPSEC_REFERENCE_INFO;
+typedef struct _POLICY_LOCAL_MACHINE_PASSWORD_INFO {
+  LARGE_INTEGER PasswordChangeInterval;
+} POLICY_LOCAL_MACHINE_PASSWORD_INFO, *PPOLICY_LOCAL_MACHINE_PASSWORD_INFO;
+typedef struct _POLICY_LOCAL_POLICY_LOCATION_INFO {
+  ULONG PolicyLocation;
+} POLICY_LOCAL_POLICY_LOCATION_INFO, *PPOLICY_LOCAL_POLICY_LOCATION_INFO;
+typedef struct _POLICY_LOCAL_QUALITY_OF_SERVICE_INFO {
+  ULONG QualityOfService;
+} POLICY_LOCAL_QUALITY_OF_SERVICE_INFO, *PPOLICY_LOCAL_QUALITY_OF_SERVICE_INFO;
+typedef struct _POLICY_LOCAL_QUALITY_OF_SERVICE_INFO POLICY_DOMAIN_QUALITY_OF_SERVICE_INFO;
+typedef struct _POLICY_LOCAL_QUALITY_OF_SERVICE_INFO *PPOLICY_DOMAIN_QUALITY_OF_SERVICE_INFO;
+typedef struct _POLICY_DOMAIN_PUBLIC_KEY_INFO {
+  ULONG InfoLength;
+  PUCHAR PublicKeyInfo;
+} POLICY_DOMAIN_PUBLIC_KEY_INFO, *PPOLICY_DOMAIN_PUBLIC_KEY_INFO;
+typedef struct _POLICY_DOMAIN_LOCKOUT_INFO {
+  LARGE_INTEGER LockoutDuration;
+  LARGE_INTEGER LockoutObservationWindow;
+  USHORT LockoutThreshold;
+} POLICY_DOMAIN_LOCKOUT_INFO, *PPOLICY_DOMAIN_LOCKOUT_INFO;
+typedef struct _POLICY_DOMAIN_PASSWORD_INFO {
+  USHORT MinPasswordLength;
+  USHORT PasswordHistoryLength;
+  ULONG PasswordProperties;
+  LARGE_INTEGER MaxPasswordAge;
+  LARGE_INTEGER MinPasswordAge;
+} POLICY_DOMAIN_PASSWORD_INFO, *PPOLICY_DOMAIN_PASSWORD_INFO;
+typedef struct _POLICY_DOMAIN_KERBEROS_TICKET_INFO {
+  ULONG AuthenticationOptions;
+  LARGE_INTEGER MinTicketAge;
+  LARGE_INTEGER MaxTicketAge;
+  LARGE_INTEGER MaxRenewAge;
+  LARGE_INTEGER ProxyLifetime;
+  LARGE_INTEGER ForceLogoff;
+} POLICY_DOMAIN_KERBEROS_TICKET_INFO, *PPOLICY_DOMAIN_KERBEROS_TICKET_INFO;
+typedef PVOID LSA_HANDLE, *PLSA_HANDLE;
+typedef struct _TRUSTED_DOMAIN_NAME_INFO {
+  LSA_UNICODE_STRING Name;
+} TRUSTED_DOMAIN_NAME_INFO, *PTRUSTED_DOMAIN_NAME_INFO;
+typedef struct _TRUSTED_CONTROLLERS_INFO {
+  ULONG Entries;
+  PLSA_UNICODE_STRING Names;
+} TRUSTED_CONTROLLERS_INFO, *PTRUSTED_CONTROLLERS_INFO;
+typedef struct _TRUSTED_POSIX_OFFSET_INFO {
+  ULONG Offset;
+} TRUSTED_POSIX_OFFSET_INFO, *PTRUSTED_POSIX_OFFSET_INFO;
+typedef struct _TRUSTED_PASSWORD_INFO {
+  LSA_UNICODE_STRING Password;
+  LSA_UNICODE_STRING OldPassword;
+} TRUSTED_PASSWORD_INFO, *PTRUSTED_PASSWORD_INFO;
+typedef  LSA_TRUST_INFORMATION TRUSTED_DOMAIN_INFORMATION_BASIC;
+typedef PLSA_TRUST_INFORMATION *PTRUSTED_DOMAIN_INFORMATION_BASIC;
+typedef struct _TRUSTED_DOMAIN_INFORMATION_EX {
+  LSA_UNICODE_STRING Name;
+  LSA_UNICODE_STRING FlatName;
+  PSID Sid;
+  ULONG TrustDirection;
+  ULONG TrustType;
+  ULONG TrustAttributes;
+} TRUSTED_DOMAIN_INFORMATION_EX, *PTRUSTED_DOMAIN_INFORMATION_EX;
+typedef struct _LSA_AUTH_INFORMATION {
+  LARGE_INTEGER LastUpdateTime;
+  ULONG AuthType;
+  ULONG AuthInfoLength;
+  PUCHAR AuthInfo;
+} LSA_AUTH_INFORMATION, *PLSA_AUTH_INFORMATION;
+typedef struct _TRUSTED_DOMAIN_AUTH_INFORMATION {
+  ULONG IncomingAuthInfos;
+  PLSA_AUTH_INFORMATION IncomingAuthenticationInformation;
+  PLSA_AUTH_INFORMATION IncomingPreviousAuthenticationInformation;
+  ULONG OutgoingAuthInfos;
+  PLSA_AUTH_INFORMATION OutgoingAuthenticationInformation;
+  PLSA_AUTH_INFORMATION OutgoingPreviousAuthenticationInformation;
+} TRUSTED_DOMAIN_AUTH_INFORMATION, *PTRUSTED_DOMAIN_AUTH_INFORMATION;
+typedef struct _TRUSTED_DOMAIN_FULL_INFORMATION {
+  TRUSTED_DOMAIN_INFORMATION_EX Information;
+  TRUSTED_POSIX_OFFSET_INFO PosixOffset;
+  TRUSTED_DOMAIN_AUTH_INFORMATION AuthInformation;
+} TRUSTED_DOMAIN_FULL_INFORMATION, *PTRUSTED_DOMAIN_FULL_INFORMATION;
+NTSTATUS NTAPI LsaAddAccountRights(LSA_HANDLE,PSID,PLSA_UNICODE_STRING,ULONG);
+NTSTATUS NTAPI LsaCallAuthenticationPackage(HANDLE,ULONG,PVOID,ULONG,PVOID*,
+                            PULONG,PNTSTATUS);
+NTSTATUS NTAPI LsaClose(LSA_HANDLE);
+NTSTATUS NTAPI LsaConnectUntrusted(PHANDLE);
+NTSTATUS NTAPI LsaCreateTrustedDomainEx(LSA_HANDLE,
+                            PTRUSTED_DOMAIN_INFORMATION_EX,
+                            PTRUSTED_DOMAIN_AUTH_INFORMATION,ACCESS_MASK,
+                            PLSA_HANDLE);
+NTSTATUS NTAPI LsaDeleteTrustedDomain(LSA_HANDLE,PSID);
+NTSTATUS NTAPI LsaDeregisterLogonProcess(HANDLE);
+NTSTATUS NTAPI LsaEnumerateAccountRights(LSA_HANDLE,PSID,PLSA_UNICODE_STRING*,PULONG);
+NTSTATUS NTAPI LsaEnumerateAccountsWithUserRight(LSA_HANDLE,PLSA_UNICODE_STRING,
+                            PVOID*,PULONG);
+NTSTATUS NTAPI LsaEnumerateTrustedDomains(LSA_HANDLE,PLSA_ENUMERATION_HANDLE,
+                            PVOID*,ULONG,PULONG);
+NTSTATUS NTAPI LsaEnumerateTrustedDomainsEx(LSA_HANDLE,PLSA_ENUMERATION_HANDLE,
+                            TRUSTED_INFORMATION_CLASS,PVOID*,ULONG,PULONG);
+NTSTATUS NTAPI LsaFreeMemory(PVOID);
+NTSTATUS NTAPI LsaFreeReturnBuffer(PVOID);
+NTSTATUS NTAPI LsaLogonUser(HANDLE,PLSA_STRING,SECURITY_LOGON_TYPE,ULONG,PVOID,
+                            ULONG,PTOKEN_GROUPS,PTOKEN_SOURCE,PVOID*,PULONG,
+                            PLUID,PHANDLE,PQUOTA_LIMITS,PNTSTATUS);
+NTSTATUS NTAPI LsaLookupAuthenticationPackage(HANDLE,PLSA_STRING,PULONG);
+NTSTATUS NTAPI LsaLookupNames(LSA_HANDLE,ULONG,PLSA_UNICODE_STRING,
+                            PLSA_REFERENCED_DOMAIN_LIST*,PLSA_TRANSLATED_SID*);
+NTSTATUS NTAPI LsaLookupSids(LSA_HANDLE,ULONG,PSID*,
+                            PLSA_REFERENCED_DOMAIN_LIST*,PLSA_TRANSLATED_NAME*);
+ULONG NTAPI LsaNtStatusToWinError(NTSTATUS);
+NTSTATUS NTAPI LsaOpenPolicy(PLSA_UNICODE_STRING,PLSA_OBJECT_ATTRIBUTES,
+                            ACCESS_MASK,PLSA_HANDLE);
+NTSTATUS NTAPI LsaQueryDomainInformationPolicy(LSA_HANDLE,
+                            POLICY_DOMAIN_INFORMATION_CLASS,PVOID*);
+NTSTATUS NTAPI LsaQueryInformationPolicy(LSA_HANDLE,POLICY_INFORMATION_CLASS,PVOID*);
+NTSTATUS NTAPI LsaQueryLocalInformationPolicy(LSA_HANDLE,
+                            POLICY_LOCAL_INFORMATION_CLASS,PVOID*);
+NTSTATUS NTAPI LsaQueryTrustedDomainInfo(LSA_HANDLE,PSID,
+                            TRUSTED_INFORMATION_CLASS,PVOID*);
+NTSTATUS NTAPI LsaQueryTrustedDomainInfoByName(LSA_HANDLE,PLSA_UNICODE_STRING,
+                            TRUSTED_INFORMATION_CLASS,PVOID*);
+NTSTATUS NTAPI LsaRegisterLogonProcess(PLSA_STRING,PHANDLE,PLSA_OPERATIONAL_MODE);
+NTSTATUS NTAPI LsaRemoveAccountRights(LSA_HANDLE,PSID,BOOLEAN,
+                            PLSA_UNICODE_STRING,ULONG);
+NTSTATUS NTAPI LsaRetrievePrivateData(LSA_HANDLE,PLSA_UNICODE_STRING,
+                            PLSA_UNICODE_STRING*);
+NTSTATUS NTAPI LsaSetDomainInformationPolicy(LSA_HANDLE,
+                            POLICY_DOMAIN_INFORMATION_CLASS,PVOID);
+NTSTATUS NTAPI LsaSetInformationPolicy(LSA_HANDLE,POLICY_INFORMATION_CLASS, PVOID);
+NTSTATUS NTAPI LsaSetLocalInformationPolicy(LSA_HANDLE,
+                            POLICY_LOCAL_INFORMATION_CLASS,PVOID);
+NTSTATUS NTAPI LsaSetTrustedDomainInformation(LSA_HANDLE,PSID,
+                            TRUSTED_INFORMATION_CLASS,PVOID);
+NTSTATUS NTAPI LsaSetTrustedDomainInfoByName(LSA_HANDLE,PLSA_UNICODE_STRING,
+                            TRUSTED_INFORMATION_CLASS,PVOID);
+NTSTATUS NTAPI LsaStorePrivateData(LSA_HANDLE,PLSA_UNICODE_STRING,
+                            PLSA_UNICODE_STRING);
+typedef NTSTATUS (*PSAM_PASSWORD_NOTIFICATION_ROUTINE)(PUNICODE_STRING,
+                            ULONG,PUNICODE_STRING);
+typedef BOOLEAN (*PSAM_INIT_NOTIFICATION_ROUTINE)(void);
+typedef BOOLEAN (*PSAM_PASSWORD_FILTER_ROUTINE)(PUNICODE_STRING,PUNICODE_STRING,
+                            PUNICODE_STRING,BOOLEAN);
+#ifdef __cplusplus
+}
+#endif
+#endif /* _NTSECAPI_H */
Index: Daodan/MinGW/include/ntsecpkg.h
===================================================================
--- Daodan/MinGW/include/ntsecpkg.h	(revision 1046)
+++ Daodan/MinGW/include/ntsecpkg.h	(revision 1046)
@@ -0,0 +1,431 @@
+#ifndef _NTSECPKG_H
+#define _NTSECPKG_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#include "windef.h"
+#include "ntsecapi.h"
+#include "security.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define ISC_REQ_DELEGATE 1
+#define ISC_REQ_MUTUAL_AUTH 2
+#define ISC_REQ_REPLAY_DETECT 4
+#define ISC_REQ_SEQUENCE_DETECT 8
+#define ISC_REQ_CONFIDENTIALITY  16
+#define ISC_REQ_USE_SESSION_KEY 32
+#define ISC_REQ_PROMPT_FOR_CREDS 64
+#define ISC_REQ_USE_SUPPLIED_CREDS  128
+#define ISC_REQ_ALLOCATE_MEMORY 256
+#define ISC_REQ_USE_DCE_STYLE 512
+#define ISC_REQ_DATAGRAM 1024
+#define ISC_REQ_CONNECTION 2048
+#define ISC_REQ_EXTENDED_ERROR 16384
+#define ISC_REQ_STREAM 32768
+#define ISC_REQ_INTEGRITY 65536
+#define ISC_REQ_MANUAL_CRED_VALIDATION 524288
+#define ISC_REQ_HTTP  268435456
+
+#define ISC_RET_EXTENDED_ERROR 16384
+
+#define ASC_REQ_DELEGATE 1
+#define ASC_REQ_MUTUAL_AUTH 2
+#define ASC_REQ_REPLAY_DETECT 4
+#define ASC_REQ_SEQUENCE_DETECT 8
+#define ASC_REQ_CONFIDENTIALITY 16
+#define ASC_REQ_USE_SESSION_KEY 32
+#define ASC_REQ_ALLOCATE_MEMORY 256
+#define ASC_REQ_USE_DCE_STYLE 512
+#define ASC_REQ_DATAGRAM 1024
+#define ASC_REQ_CONNECTION 2048
+#define ASC_REQ_EXTENDED_ERROR 32768
+#define ASC_REQ_STREAM 65536
+#define ASC_REQ_INTEGRITY 131072
+
+#define SECURITY_NATIVE_DREP  16
+#define SECURITY_NETWORK_DREP 0
+
+#define SECPKG_STATE_ENCRYPTION_PERMITTED               0x01
+#define SECPKG_STATE_STRONG_ENCRYPTION_PERMITTED        0x02
+#define SECPKG_STATE_DOMAIN_CONTROLLER                  0x04
+#define SECPKG_STATE_WORKSTATION                        0x08
+#define SECPKG_STATE_STANDALONE                         0x10
+
+/* enum definitions for Secure Service Provider/Authentication Packages */
+typedef enum _LSA_TOKEN_INFORMATION_TYPE {
+	LsaTokenInformationNull,
+	LsaTokenInformationV1
+} LSA_TOKEN_INFORMATION_TYPE, *PLSA_TOKEN_INFORMATION_TYPE;
+typedef enum _SECPKG_EXTENDED_INFORMATION_CLASS
+{
+	SecpkgGssInfo = 1,
+	SecpkgContextThunks,
+	SecpkgMutualAuthLevel,
+	SecpkgMaxInfo
+} SECPKG_EXTENDED_INFORMATION_CLASS;
+typedef enum _SECPKG_NAME_TYPE {
+	SecNameSamCompatible,
+	SecNameAlternateId,
+	SecNameFlat,
+	SecNameDN
+} SECPKG_NAME_TYPE;
+
+/* struct definitions for SSP/AP */
+typedef struct _SECPKG_PRIMARY_CRED {
+	LUID LogonId;
+	UNICODE_STRING DownlevelName;
+	UNICODE_STRING DomainName;
+	UNICODE_STRING Password;
+	UNICODE_STRING OldPassword;
+	PSID UserSid;
+	ULONG Flags;
+	UNICODE_STRING DnsDomainName;
+	UNICODE_STRING Upn;
+	UNICODE_STRING LogonServer;
+	UNICODE_STRING Spare1;
+	UNICODE_STRING Spare2;
+	UNICODE_STRING Spare3;
+	UNICODE_STRING Spare4;
+} SECPKG_PRIMARY_CRED, *PSECPKG_PRIMARY_CRED;
+typedef struct _SECPKG_SUPPLEMENTAL_CRED {
+	UNICODE_STRING PackageName;
+	ULONG CredentialSize;
+	PUCHAR Credentials;
+} SECPKG_SUPPLEMENTAL_CRED, *PSECPKG_SUPPLEMENTAL_CRED;
+typedef struct _SECPKG_SUPPLEMENTAL_CRED_ARRAY {
+	ULONG CredentialCount;
+	SECPKG_SUPPLEMENTAL_CRED Credentials[1];
+} SECPKG_SUPPLEMENTAL_CRED_ARRAY, *PSECPKG_SUPPLEMENTAL_CRED_ARRAY;
+typedef struct _SECPKG_PARAMETERS {
+	ULONG Version;
+	ULONG MachineState;
+	ULONG SetupMode;
+	PSID DomainSid;
+	UNICODE_STRING DomainName;
+	UNICODE_STRING DnsDomainName;
+	GUID DomainGuid;
+} SECPKG_PARAMETERS, *PSECPKG_PARAMETERS,
+  SECPKG_EVENT_DOMAIN_CHANGE, *PSECPKG_EVENT_DOMAIN_CHANGE;
+typedef struct _SECPKG_CLIENT_INFO {
+  LUID LogonId;
+  ULONG ProcessID;
+  ULONG ThreadID;
+  BOOLEAN HasTcbPrivilege;
+  BOOLEAN Impersonating;
+  BOOLEAN Restricted;
+} SECPKG_CLIENT_INFO,
+ *PSECPKG_CLIENT_INFO;
+typedef struct _SECURITY_USER_DATA {
+	SECURITY_STRING UserName;
+	SECURITY_STRING LogonDomainName;
+	SECURITY_STRING LogonServer;
+	PSID pSid;
+} SECURITY_USER_DATA, *PSECURITY_USER_DATA,
+  SecurityUserData, *PSecurityUserData;
+typedef struct _SECPKG_GSS_INFO {
+	ULONG EncodedIdLength;
+	UCHAR EncodedId[4];
+} SECPKG_GSS_INFO, *PSECPKG_GSS_INFO;
+typedef struct _SECPKG_CONTEXT_THUNKS {
+	ULONG InfoLevelCount;
+	ULONG Levels[1];
+} SECPKG_CONTEXT_THUNKS, *PSECPKG_CONTEXT_THUNKS;
+typedef struct _SECPKG_MUTUAL_AUTH_LEVEL {
+	ULONG MutualAuthLevel;
+} SECPKG_MUTUAL_AUTH_LEVEL, *PSECPKG_MUTUAL_AUTH_LEVEL;
+typedef struct _SECPKG_CALL_INFO {
+	ULONG ProcessId;
+	ULONG ThreadId;
+	ULONG Attributes;
+	ULONG CallCount;
+} SECPKG_CALL_INFO, *PSECPKG_CALL_INFO;
+typedef struct _SECPKG_EXTENDED_INFORMATION {
+	SECPKG_EXTENDED_INFORMATION_CLASS Class;
+	union {
+		SECPKG_GSS_INFO GssInfo;
+		SECPKG_CONTEXT_THUNKS ContextThunks;
+		SECPKG_MUTUAL_AUTH_LEVEL MutualAuthLevel;
+	} Info;
+} SECPKG_EXTENDED_INFORMATION, *PSECPKG_EXTENDED_INFORMATION;
+
+/* callbacks implemented by SSP/AP dlls and called by the LSA */
+typedef VOID (NTAPI *PLSA_CALLBACK_FUNCTION)(ULONG_PTR, ULONG_PTR, PSecBuffer,
+ PSecBuffer);
+
+/* misc typedefs used in the below prototypes */
+typedef PVOID *PLSA_CLIENT_REQUEST;
+typedef ULONG LSA_SEC_HANDLE, *PLSA_SEC_HANDLE;
+typedef LPTHREAD_START_ROUTINE SEC_THREAD_START;
+typedef PSECURITY_ATTRIBUTES SEC_ATTRS;
+
+/* functions used by SSP/AP obtainable by dispatch tables */
+typedef NTSTATUS (NTAPI *PLSA_REGISTER_CALLBACK)(ULONG, PLSA_CALLBACK_FUNCTION);
+typedef NTSTATUS (NTAPI *PLSA_CREATE_LOGON_SESSION)(PLUID);
+typedef NTSTATUS (NTAPI *PLSA_DELETE_LOGON_SESSION)(PLUID);
+typedef NTSTATUS (NTAPI *PLSA_ADD_CREDENTIAL)(PLUID, ULONG, PLSA_STRING,
+ PLSA_STRING);
+typedef NTSTATUS (NTAPI *PLSA_GET_CREDENTIALS)(PLUID, ULONG, PULONG, BOOLEAN,
+ PLSA_STRING, PULONG, PLSA_STRING);
+typedef NTSTATUS (NTAPI *PLSA_DELETE_CREDENTIAL)(PLUID, ULONG, PLSA_STRING);
+typedef PVOID (NTAPI *PLSA_ALLOCATE_LSA_HEAP)(ULONG);
+typedef VOID (NTAPI *PLSA_FREE_LSA_HEAP)(PVOID);
+typedef NTSTATUS (NTAPI *PLSA_ALLOCATE_CLIENT_BUFFER)(PLSA_CLIENT_REQUEST,
+ ULONG, PVOID*);
+typedef NTSTATUS (NTAPI *PLSA_FREE_CLIENT_BUFFER)(PLSA_CLIENT_REQUEST, PVOID);
+typedef NTSTATUS (NTAPI *PLSA_COPY_TO_CLIENT_BUFFER)(PLSA_CLIENT_REQUEST, ULONG,
+ PVOID, PVOID);
+typedef NTSTATUS (NTAPI *PLSA_COPY_FROM_CLIENT_BUFFER)(PLSA_CLIENT_REQUEST,
+ ULONG, PVOID, PVOID);
+typedef NTSTATUS (NTAPI *PLSA_IMPERSONATE_CLIENT)(void);
+typedef NTSTATUS (NTAPI *PLSA_UNLOAD_PACKAGE)(void);
+typedef NTSTATUS (NTAPI *PLSA_DUPLICATE_HANDLE)(HANDLE, PHANDLE);
+typedef NTSTATUS (NTAPI *PLSA_SAVE_SUPPLEMENTAL_CREDENTIALS)(PLUID, ULONG,
+ PVOID, BOOLEAN);
+typedef HANDLE (NTAPI *PLSA_CREATE_THREAD)(SEC_ATTRS, ULONG, SEC_THREAD_START,
+ PVOID, ULONG, PULONG);
+typedef NTSTATUS (NTAPI *PLSA_GET_CLIENT_INFO)(PSECPKG_CLIENT_INFO);
+typedef HANDLE (NTAPI *PLSA_REGISTER_NOTIFICATION)(SEC_THREAD_START, PVOID,
+ ULONG, ULONG, ULONG, ULONG, HANDLE);
+typedef NTSTATUS (NTAPI *PLSA_CANCEL_NOTIFICATION)(HANDLE);
+typedef NTSTATUS (NTAPI *PLSA_MAP_BUFFER)(PSecBuffer, PSecBuffer);
+typedef NTSTATUS (NTAPI *PLSA_CREATE_TOKEN)(PLUID, PTOKEN_SOURCE,
+ SECURITY_LOGON_TYPE, SECURITY_IMPERSONATION_LEVEL, LSA_TOKEN_INFORMATION_TYPE,
+ PVOID, PTOKEN_GROUPS, PUNICODE_STRING, PUNICODE_STRING, PUNICODE_STRING,
+ PUNICODE_STRING, PHANDLE, PNTSTATUS);
+typedef VOID (NTAPI *PLSA_AUDIT_LOGON)(NTSTATUS, NTSTATUS, PUNICODE_STRING,
+ PUNICODE_STRING, PUNICODE_STRING, OPTIONAL PSID, SECURITY_LOGON_TYPE,
+ PTOKEN_SOURCE, PLUID);
+typedef NTSTATUS (NTAPI *PLSA_CALL_PACKAGE)(PUNICODE_STRING, PVOID, ULONG,
+ PVOID*, PULONG, PNTSTATUS);
+typedef VOID (NTAPI *PLSA_FREE_LSA_HEAP)(PVOID);
+typedef BOOLEAN (NTAPI *PLSA_GET_CALL_INFO)(PSECPKG_CALL_INFO);
+typedef NTSTATUS (NTAPI *PLSA_CALL_PACKAGEEX)(PUNICODE_STRING, PVOID, PVOID,
+ ULONG, PVOID*, PULONG, PNTSTATUS);
+typedef PVOID (NTAPI *PLSA_CREATE_SHARED_MEMORY)(ULONG, ULONG);
+typedef PVOID (NTAPI *PLSA_ALLOCATE_SHARED_MEMORY)(PVOID, ULONG);
+typedef VOID (NTAPI *PLSA_FREE_SHARED_MEMORY)(PVOID, PVOID);
+typedef BOOLEAN (NTAPI *PLSA_DELETE_SHARED_MEMORY)(PVOID);
+typedef NTSTATUS (NTAPI *PLSA_OPEN_SAM_USER)(PSECURITY_STRING, SECPKG_NAME_TYPE,
+ PSECURITY_STRING, BOOLEAN, ULONG, PVOID*);
+typedef NTSTATUS (NTAPI *PLSA_GET_USER_CREDENTIALS)(PVOID, PVOID *, PULONG,
+ PVOID *, PULONG);
+typedef NTSTATUS (NTAPI *PLSA_GET_USER_AUTH_DATA)(PVOID, PUCHAR *, PULONG);
+typedef NTSTATUS (NTAPI *PLSA_CLOSE_SAM_USER)(PVOID);
+typedef NTSTATUS (NTAPI *PLSA_CONVERT_AUTH_DATA_TO_TOKEN)(PVOID, ULONG,
+ SECURITY_IMPERSONATION_LEVEL, PTOKEN_SOURCE, SECURITY_LOGON_TYPE,
+ PUNICODE_STRING, PHANDLE, PLUID, PUNICODE_STRING, PNTSTATUS);
+typedef NTSTATUS (NTAPI *PLSA_CLIENT_CALLBACK)(PCHAR, ULONG_PTR, ULONG_PTR,
+ PSecBuffer, PSecBuffer);
+typedef NTSTATUS (NTAPI *PLSA_UPDATE_PRIMARY_CREDENTIALS)(PSECPKG_PRIMARY_CRED, PSECPKG_SUPPLEMENTAL_CRED_ARRAY);
+typedef NTSTATUS (NTAPI *PLSA_GET_AUTH_DATA_FOR_USER)(PSECURITY_STRING,
+ SECPKG_NAME_TYPE, PSECURITY_STRING, PUCHAR *, PULONG, PUNICODE_STRING);
+typedef NTSTATUS (NTAPI *PLSA_CRACK_SINGLE_NAME)(ULONG, BOOLEAN,
+ PUNICODE_STRING, PUNICODE_STRING, ULONG, PUNICODE_STRING, PUNICODE_STRING,
+ PULONG);
+typedef NTSTATUS (NTAPI *PLSA_AUDIT_ACCOUNT_LOGON)(ULONG, BOOLEAN,
+ PUNICODE_STRING, PUNICODE_STRING, PUNICODE_STRING, NTSTATUS);
+typedef NTSTATUS (NTAPI *PLSA_CALL_PACKAGE_PASSTHROUGH)(PUNICODE_STRING, PVOID,
+ PVOID, ULONG, PVOID*, PULONG, PNTSTATUS);
+
+/* Dispatch tables of functions used by SSP/AP */
+typedef struct SECPKG_DLL_FUNCTIONS {
+	PLSA_ALLOCATE_LSA_HEAP AllocateHeap;
+	PLSA_FREE_LSA_HEAP FreeHeap;
+	PLSA_REGISTER_CALLBACK RegisterCallback;
+} SECPKG_DLL_FUNCTIONS,
+ *PSECPKG_DLL_FUNCTIONS;
+typedef struct LSA_DISPATCH_TABLE {
+	PLSA_CREATE_LOGON_SESSION CreateLogonSession;
+	PLSA_DELETE_LOGON_SESSION DeleteLogonSession;
+	PLSA_ADD_CREDENTIAL AddCredential;
+	PLSA_GET_CREDENTIALS GetCredentials;
+	PLSA_DELETE_CREDENTIAL DeleteCredential;
+	PLSA_ALLOCATE_LSA_HEAP AllocateLsaHeap;
+	PLSA_FREE_LSA_HEAP FreeLsaHeap;
+	PLSA_ALLOCATE_CLIENT_BUFFER AllocateClientBuffer;
+	PLSA_FREE_CLIENT_BUFFER FreeClientBuffer;
+	PLSA_COPY_TO_CLIENT_BUFFER CopyToClientBuffer;
+	PLSA_COPY_FROM_CLIENT_BUFFER CopyFromClientBuffer;
+} LSA_DISPATCH_TABLE,
+ *PLSA_DISPATCH_TABLE;
+typedef struct _LSA_SECPKG_FUNCTION_TABLE {
+	PLSA_CREATE_LOGON_SESSION CreateLogonSession;
+	PLSA_DELETE_LOGON_SESSION DeleteLogonSession;
+	PLSA_ADD_CREDENTIAL AddCredential;
+	PLSA_GET_CREDENTIALS GetCredentials;
+	PLSA_DELETE_CREDENTIAL DeleteCredential;
+	PLSA_ALLOCATE_LSA_HEAP AllocateLsaHeap;
+	PLSA_FREE_LSA_HEAP FreeLsaHeap;
+	PLSA_ALLOCATE_CLIENT_BUFFER AllocateClientBuffer;
+	PLSA_FREE_CLIENT_BUFFER FreeClientBuffer;
+	PLSA_COPY_TO_CLIENT_BUFFER CopyToClientBuffer;
+	PLSA_COPY_FROM_CLIENT_BUFFER CopyFromClientBuffer;
+	PLSA_IMPERSONATE_CLIENT ImpersonateClient;
+	PLSA_UNLOAD_PACKAGE UnloadPackage;
+	PLSA_DUPLICATE_HANDLE DuplicateHandle;
+	PLSA_SAVE_SUPPLEMENTAL_CREDENTIALS SaveSupplementalCredentials;
+	PLSA_CREATE_THREAD CreateThread;
+	PLSA_GET_CLIENT_INFO GetClientInfo;
+	PLSA_REGISTER_NOTIFICATION RegisterNotification;
+	PLSA_CANCEL_NOTIFICATION CancelNotification;
+	PLSA_MAP_BUFFER MapBuffer;
+	PLSA_CREATE_TOKEN CreateToken;
+	PLSA_AUDIT_LOGON AuditLogon;
+	PLSA_CALL_PACKAGE CallPackage;
+	PLSA_FREE_LSA_HEAP FreeReturnBuffer;
+	PLSA_GET_CALL_INFO GetCallInfo;
+	PLSA_CALL_PACKAGEEX CallPackageEx;
+	PLSA_CREATE_SHARED_MEMORY CreateSharedMemory;
+	PLSA_ALLOCATE_SHARED_MEMORY AllocateSharedMemory;
+	PLSA_FREE_SHARED_MEMORY FreeSharedMemory;
+	PLSA_DELETE_SHARED_MEMORY DeleteSharedMemory;
+	PLSA_OPEN_SAM_USER OpenSamUser;
+	PLSA_GET_USER_CREDENTIALS GetUserCredentials;
+	PLSA_GET_USER_AUTH_DATA GetUserAuthData;
+	PLSA_CLOSE_SAM_USER CloseSamUser;
+	PLSA_CONVERT_AUTH_DATA_TO_TOKEN ConvertAuthDataToToken;
+	PLSA_CLIENT_CALLBACK ClientCallback;
+	PLSA_UPDATE_PRIMARY_CREDENTIALS UpdateCredentials;
+	PLSA_GET_AUTH_DATA_FOR_USER GetAuthDataForUser;
+	PLSA_CRACK_SINGLE_NAME CrackSingleName;
+	PLSA_AUDIT_ACCOUNT_LOGON AuditAccountLogon;
+	PLSA_CALL_PACKAGE_PASSTHROUGH CallPackagePassthrough;
+} LSA_SECPKG_FUNCTION_TABLE,
+ *PLSA_SECPKG_FUNCTION_TABLE;
+
+/* functions implemented by SSP/AP obtainable by dispatch tables */
+typedef NTSTATUS (NTAPI *PLSA_AP_INITIALIZE_PACKAGE)(ULONG, PLSA_DISPATCH_TABLE,
+ PLSA_STRING, PLSA_STRING, PLSA_STRING *);
+typedef NTSTATUS (NTAPI *PLSA_AP_LOGON_USER)(LPWSTR, LPWSTR, LPWSTR, LPWSTR,
+ DWORD, DWORD, PHANDLE);
+typedef NTSTATUS (NTAPI *PLSA_AP_CALL_PACKAGE)(PUNICODE_STRING, PVOID, ULONG,
+ PVOID *, PULONG, PNTSTATUS);
+typedef VOID (NTAPI *PLSA_AP_LOGON_TERMINATED)(PLUID);
+typedef NTSTATUS (NTAPI *PLSA_AP_CALL_PACKAGE_UNTRUSTED)(PLSA_CLIENT_REQUEST,
+ PVOID, PVOID, ULONG, PVOID *, PULONG, PNTSTATUS);
+typedef NTSTATUS (NTAPI *PLSA_AP_CALL_PACKAGE_PASSTHROUGH)(PUNICODE_STRING,
+ PVOID, PVOID, ULONG, PVOID *, PULONG, PNTSTATUS);
+typedef NTSTATUS (NTAPI *PLSA_AP_LOGON_USER_EX)(PLSA_CLIENT_REQUEST,
+ SECURITY_LOGON_TYPE, PVOID, PVOID, ULONG, PVOID *, PULONG, PLUID, PNTSTATUS,
+ PLSA_TOKEN_INFORMATION_TYPE, PVOID *, PUNICODE_STRING *, PUNICODE_STRING *,
+ PUNICODE_STRING *);
+typedef NTSTATUS (NTAPI *PLSA_AP_LOGON_USER_EX2)(PLSA_CLIENT_REQUEST,
+ SECURITY_LOGON_TYPE, PVOID, PVOID, ULONG, PVOID *, PULONG, PLUID, PNTSTATUS,
+ PLSA_TOKEN_INFORMATION_TYPE, PVOID *, PUNICODE_STRING *, PUNICODE_STRING *,
+ PUNICODE_STRING *, PSECPKG_PRIMARY_CRED, PSECPKG_SUPPLEMENTAL_CRED_ARRAY *);
+typedef NTSTATUS (SpInitializeFn)(ULONG_PTR, PSECPKG_PARAMETERS,
+ PLSA_SECPKG_FUNCTION_TABLE);
+typedef NTSTATUS (NTAPI SpShutDownFn)(void);
+typedef NTSTATUS (NTAPI SpGetInfoFn)(PSecPkgInfoW);
+typedef NTSTATUS (NTAPI SpAcceptCredentialsFn)(SECURITY_LOGON_TYPE,
+ PUNICODE_STRING, PSECPKG_PRIMARY_CRED, PSECPKG_SUPPLEMENTAL_CRED);
+typedef NTSTATUS (NTAPI SpAcquireCredentialsHandleFn)(PUNICODE_STRING, ULONG,
+ PLUID, PVOID, PVOID, PVOID, PLSA_SEC_HANDLE, PTimeStamp);
+typedef NTSTATUS (NTAPI SpQueryCredentialsAttributesFn)(LSA_SEC_HANDLE, ULONG,
+ PVOID);
+typedef NTSTATUS (NTAPI SpFreeCredentialsHandleFn)(LSA_SEC_HANDLE);
+typedef NTSTATUS (NTAPI SpSaveCredentialsFn)(LSA_SEC_HANDLE, PSecBuffer);
+typedef NTSTATUS (NTAPI SpGetCredentialsFn)(LSA_SEC_HANDLE, PSecBuffer);
+typedef NTSTATUS (NTAPI SpDeleteCredentialsFn)(LSA_SEC_HANDLE, PSecBuffer);
+typedef NTSTATUS (NTAPI SpInitLsaModeContextFn)(LSA_SEC_HANDLE, LSA_SEC_HANDLE,
+ PUNICODE_STRING, ULONG, ULONG, PSecBufferDesc, PLSA_SEC_HANDLE, PSecBufferDesc,
+ PULONG, PTimeStamp, PBOOLEAN, PSecBuffer);
+typedef NTSTATUS (NTAPI SpAcceptLsaModeContextFn)(LSA_SEC_HANDLE,
+ LSA_SEC_HANDLE, PSecBufferDesc, ULONG, ULONG, PLSA_SEC_HANDLE, PSecBufferDesc,
+ PULONG, PTimeStamp, PBOOLEAN, PSecBuffer);
+typedef NTSTATUS (NTAPI SpDeleteContextFn)(LSA_SEC_HANDLE);
+typedef NTSTATUS (NTAPI SpApplyControlTokenFn)(LSA_SEC_HANDLE, PSecBufferDesc);
+typedef NTSTATUS (NTAPI SpGetUserInfoFn)(PLUID, ULONG, PSecurityUserData *);
+typedef NTSTATUS (NTAPI SpGetExtendedInformationFn)(
+ SECPKG_EXTENDED_INFORMATION_CLASS, PSECPKG_EXTENDED_INFORMATION *);
+typedef NTSTATUS (NTAPI SpQueryContextAttributesFn)(LSA_SEC_HANDLE, ULONG,
+ PVOID);
+typedef NTSTATUS (NTAPI SpAddCredentialsFn)(LSA_SEC_HANDLE, PUNICODE_STRING,
+ PUNICODE_STRING, ULONG, PVOID, PVOID, PVOID, PTimeStamp);
+typedef NTSTATUS (NTAPI SpSetExtendedInformationFn)(
+ SECPKG_EXTENDED_INFORMATION_CLASS, PSECPKG_EXTENDED_INFORMATION);
+typedef NTSTATUS (NTAPI SpInstanceInitFn)(ULONG, PSECPKG_DLL_FUNCTIONS,
+ PVOID *);
+typedef NTSTATUS (NTAPI SpInitUserModeContextFn)(LSA_SEC_HANDLE, PSecBuffer);
+typedef NTSTATUS (NTAPI SpMakeSignatureFn)(LSA_SEC_HANDLE, ULONG,
+ PSecBufferDesc, ULONG);
+typedef NTSTATUS (NTAPI SpVerifySignatureFn)(LSA_SEC_HANDLE, PSecBufferDesc,
+ ULONG, PULONG);
+typedef NTSTATUS (NTAPI SpSealMessageFn)(LSA_SEC_HANDLE, ULONG, PSecBufferDesc,
+ ULONG);
+typedef NTSTATUS (NTAPI SpUnsealMessageFn)(LSA_SEC_HANDLE, PSecBufferDesc,
+ ULONG, PULONG);
+typedef NTSTATUS (NTAPI SpGetContextTokenFn)(LSA_SEC_HANDLE, PHANDLE);
+typedef NTSTATUS (NTAPI SpCompleteAuthTokenFn)(LSA_SEC_HANDLE, PSecBufferDesc);
+typedef NTSTATUS (NTAPI SpFormatCredentialsFn)(PSecBuffer, PSecBuffer);
+typedef NTSTATUS (NTAPI SpMarshallSupplementalCredsFn)(ULONG, PUCHAR, PULONG,
+ PVOID *);
+typedef NTSTATUS (NTAPI SpExportSecurityContextFn)(LSA_SEC_HANDLE, ULONG,
+ PSecBuffer, PHANDLE);
+typedef NTSTATUS (NTAPI SpImportSecurityContextFn)(PSecBuffer, HANDLE,
+ PLSA_SEC_HANDLE);
+
+/* Dispatch tables of functions implemented by SSP/AP */
+typedef struct SECPKG_FUNCTION_TABLE {
+	PLSA_AP_INITIALIZE_PACKAGE InitializePackage;
+	PLSA_AP_LOGON_USER LogonUser;
+	PLSA_AP_CALL_PACKAGE CallPackage;
+	PLSA_AP_LOGON_TERMINATED LogonTerminated;
+	PLSA_AP_CALL_PACKAGE_UNTRUSTED CallPackageUntrusted;
+	PLSA_AP_CALL_PACKAGE_PASSTHROUGH CallPackagePassthrough;
+	PLSA_AP_LOGON_USER_EX LogonUserEx;
+	PLSA_AP_LOGON_USER_EX2 LogonUserEx2;
+	SpInitializeFn *Initialize;
+	SpShutDownFn *Shutdown;
+	SpGetInfoFn *GetInfo;
+	SpAcceptCredentialsFn *AcceptCredentials;
+	SpAcquireCredentialsHandleFn *AcquireCredentialsHandle;
+	SpQueryCredentialsAttributesFn *QueryCredentialsAttributes;
+	SpFreeCredentialsHandleFn *FreeCredentialsHandle;
+	SpSaveCredentialsFn *SaveCredentials;
+	SpGetCredentialsFn *GetCredentials;
+	SpDeleteCredentialsFn *DeleteCredentials;
+	SpInitLsaModeContextFn *InitLsaModeContext;
+	SpAcceptLsaModeContextFn *AcceptLsaModeContext;
+	SpDeleteContextFn *DeleteContext;
+	SpApplyControlTokenFn *ApplyControlToken;
+	SpGetUserInfoFn *GetUserInfo;
+	SpGetExtendedInformationFn *GetExtendedInformation;
+	SpQueryContextAttributesFn *QueryContextAttributes;
+	SpAddCredentialsFn *AddCredentials;
+	SpSetExtendedInformationFn *SetExtendedInformation;
+} SECPKG_FUNCTION_TABLE,
+ *PSECPKG_FUNCTION_TABLE;
+
+typedef struct SECPKG_USER_FUNCTION_TABLE {
+	SpInstanceInitFn *InstanceInit;
+	SpInitUserModeContextFn *InitUserModeContext;
+	SpMakeSignatureFn *MakeSignature;
+	SpVerifySignatureFn *VerifySignature;
+	SpSealMessageFn *SealMessage;
+	SpUnsealMessageFn *UnsealMessage;
+	SpGetContextTokenFn *GetContextToken;
+	SpQueryContextAttributesFn *QueryContextAttributes;
+	SpCompleteAuthTokenFn *CompleteAuthToken;
+	SpDeleteContextFn *DeleteUserModeContext;
+	SpFormatCredentialsFn *FormatCredentials;
+	SpMarshallSupplementalCredsFn *MarshallSupplementalCreds;
+	SpExportSecurityContextFn *ExportContext;
+	SpImportSecurityContextFn *ImportContext;
+} SECPKG_USER_FUNCTION_TABLE,
+ *PSECPKG_USER_FUNCTION_TABLE;
+
+/* Entry points to SSP/AP */
+typedef NTSTATUS (NTAPI *SpLsaModeInitializeFn)(ULONG, PULONG,
+ PSECPKG_FUNCTION_TABLE *, PULONG);
+typedef NTSTATUS (WINAPI *SpUserModeInitializeFn)(ULONG, PULONG,
+ PSECPKG_USER_FUNCTION_TABLE *, PULONG);
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* _NTSECPKG_H */
Index: Daodan/MinGW/include/oaidl.h
===================================================================
--- Daodan/MinGW/include/oaidl.h	(revision 1046)
+++ Daodan/MinGW/include/oaidl.h	(revision 1046)
@@ -0,0 +1,778 @@
+#ifndef _OAIDL_H
+#define _OAIDL_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#ifndef COM_NO_WINDOWS_H
+#include <windows.h>
+#include <ole2.h>
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#ifdef NONAMELESSUNION
+#define __VARIANT_NAME_1 n1
+#define __VARIANT_NAME_2 n2
+#define __VARIANT_NAME_3 n3
+#define __VARIANT_NAME_4 n4
+#else
+#define __tagVARIANT
+#define __VARIANT_NAME_1
+#define __VARIANT_NAME_2
+#define __VARIANT_NAME_3
+#define __VARIANT_NAME_4
+#endif
+#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)
+#define FADF_AUTO (1)
+#define FADF_STATIC (2)
+#define FADF_EMBEDDED (4)
+#define FADF_FIXEDSIZE (16)
+#define FADF_RECORD (32)
+#define FADF_HAVEIID (64)
+#define FADF_HAVEVARTYPE (128)
+#define FADF_BSTR (256)
+#define FADF_UNKNOWN (512)
+#define FADF_DISPATCH (1024)
+#define FADF_VARIANT (2048)
+#define FADF_RESERVED (0xf0e8)
+#define FADF_DATADELETED (0x1000)
+#define FADF_CREATEVECTOR (0x2000)
+#define PARAMFLAG_NONE (0)
+#define PARAMFLAG_FIN (1)
+#define PARAMFLAG_FOUT (2)
+#define PARAMFLAG_FLCID (4)
+#define PARAMFLAG_FRETVAL (8)
+#define PARAMFLAG_FOPT (16)
+#define PARAMFLAG_FHASDEFAULT (32)
+#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
+#define IMPLTYPEFLAG_FDEFAULT 1
+#define IMPLTYPEFLAG_FSOURCE 2
+#define IMPLTYPEFLAG_FRESTRICTED 4
+#define IMPLTYPEFLAG_FDEFAULTVTABLE 8
+
+typedef _COM_interface ITypeLib *LPTYPELIB;
+typedef _COM_interface ITypeLib2 *LPTYPELIB2;
+typedef _COM_interface ICreateTypeInfo *LPCREATETYPEINFO;
+typedef _COM_interface ICreateTypeInfo2 *LPCREATETYPEINFO2;
+typedef _COM_interface ICreateTypeLib *LPCREATETYPELIB;
+typedef _COM_interface ICreateTypeLib2 *LPCREATETYPELIB2;
+typedef _COM_interface ITypeComp *LPTYPECOMP;
+typedef _COM_interface ITypeInfo *LPTYPEINFO;
+typedef _COM_interface ITypeInfo2 *LPTYPEINFO2;
+typedef _COM_interface IErrorInfo *LPERRORINFO;
+typedef _COM_interface IDispatch *LPDISPATCH;
+typedef _COM_interface IEnumVARIANT *LPENUMVARIANT;
+typedef _COM_interface ICreateErrorInfo *LPCREATEERRORINFO;
+typedef _COM_interface ISupportErrorInfo *LPSUPPORTERRORINFO;
+typedef _COM_interface IRecordInfo *LPRECORDINFO;
+
+extern const IID IID_ITypeLib;
+extern const IID IID_ITypeLib2;
+extern const IID IID_ICreateTypeInfo;
+extern const IID IID_ICreateTypeInfo2;
+extern const IID IID_ICreateTypeLib;
+extern const IID IID_ICreateTypeLib2;
+extern const IID IID_ITypeInfo;
+extern const IID IID_ITypeInfo2;
+extern const IID IID_IErrorInfo;
+extern const IID IID_IDispatch;
+extern const IID IID_IEnumVARIANT;
+extern const IID IID_ICreateErrorInfo;
+extern const IID IID_ISupportErrorInfo;
+extern const IID IID_IRecordInfo;
+extern const IID IID_ITypeMarshal;
+
+typedef enum tagSYSKIND {
+	SYS_WIN16,SYS_WIN32,SYS_MAC
+} SYSKIND;
+typedef enum tagLIBFLAGS {
+	LIBFLAG_FRESTRICTED=1,LIBFLAG_FCONTROL=2,LIBFLAG_FHIDDEN=4,
+	LIBFLAG_FHASDISKIMAGE=8
+} LIBFLAGS;
+typedef struct tagTLIBATTR {
+	GUID guid;
+	LCID lcid;
+	SYSKIND syskind;
+	WORD wMajorVerNum;
+	WORD wMinorVerNum;
+	WORD wLibFlags;
+} TLIBATTR,*LPTLIBATTR;
+typedef CY CURRENCY;
+typedef struct tagSAFEARRAYBOUND {
+	ULONG cElements;
+	LONG lLbound;
+}SAFEARRAYBOUND,*LPSAFEARRAYBOUND;
+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;
+	LPDISPATCH *apDispatch;
+}SAFEARR_DISPATCH;
+typedef struct _wireSAFEARR_VARIANT {
+	ULONG Size;
+	struct _wireVARIANT *aVariant;
+}SAFEARR_VARIANT;
+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_TYPE;
+typedef struct _wireBRECORD  {
+	ULONG fFlags;
+	ULONG clSize;
+	LPRECORDINFO* pRecInfo;
+	byte* pRecord;
+} *wireBRECORD;
+typedef struct _wireSAFEARR_BRECORD {
+    ULONG Size;
+    wireBRECORD* aRecord;
+    } SAFEARR_BRECORD;
+typedef struct _wireSAFEARR_HAVEIID {
+	ULONG Size;
+	IUnknown** apUnknown;
+	IID iid;
+	} SAFEARR_HAVEIID;
+typedef struct _wireSAFEARRAY_UNION {
+	ULONG sfType;
+	union {
+		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,*LPSAFEARRAY;
+#if defined (__GNUC__) && !defined (NONAMELESSUNION)
+__extension__   /* no named members  */
+#endif
+typedef struct tagVARIANT {
+  _ANONYMOUS_UNION union {
+	struct __tagVARIANT {
+	VARTYPE vt;
+	WORD wReserved1;
+	WORD wReserved2;
+	WORD wReserved3;
+	_ANONYMOUS_UNION union {
+		long lVal;
+		LONGLONG llVal;
+		unsigned char bVal;
+		short iVal;
+		float fltVal;
+		double dblVal;
+		VARIANT_BOOL  boolVal;
+		SCODE scode;
+		CY cyVal;
+		DATE date;
+		BSTR bstrVal;
+		IUnknown *punkVal;
+		LPDISPATCH pdispVal;
+		SAFEARRAY *parray;
+		unsigned char *pbVal;
+		short *piVal;
+		long *plVal;
+		LONGLONG  * pllVal;
+		float *pfltVal;
+		double *pdblVal;
+		VARIANT_BOOL *pboolVal;
+		_VARIANT_BOOL  *pbool;
+		SCODE *pscode;
+		CY *pcyVal;
+		DATE *pdate;
+		BSTR *pbstrVal;
+		IUnknown **ppunkVal;
+		LPDISPATCH *ppdispVal;
+		SAFEARRAY **pparray;
+		struct tagVARIANT *pvarVal;
+		void *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;
+		_ANONYMOUS_STRUCT struct {
+			PVOID pvRecord;
+			struct IRecordInfo *pRecInfo;
+		} __VARIANT_NAME_4;
+	} __VARIANT_NAME_3;
+    } __VARIANT_NAME_2;
+    DECIMAL decVal;
+  } __VARIANT_NAME_1;
+} VARIANT,*LPVARIANT;
+typedef VARIANT VARIANTARG;
+typedef VARIANT *LPVARIANTARG;
+typedef struct _wireVARIANT {
+	DWORD clSize;
+	DWORD rpcReserved;
+	USHORT vt;
+	USHORT wReserved1;
+	USHORT wReserved2;
+	USHORT wReserved3;
+	_ANONYMOUS_UNION union {
+		LONG lVal;
+		LONGLONG llVal;
+		BYTE bVal;
+		SHORT iVal;
+		FLOAT fltVal;
+		DOUBLE dblVal;
+		VARIANT_BOOL boolVal;
+		SCODE scode;
+		CY cyVal;
+		DATE date;
+		wireBSTR bstrVal;
+		IUnknown *punkVal;
+		LPDISPATCH pdispVal;
+		wirePSAFEARRAY parray;
+		wireBRECORD brecVal;
+		BYTE *pbVal;
+		SHORT *piVal;
+		LONG *plVal;
+		FLOAT *pfltVal;
+		DOUBLE *pdblVal;
+		VARIANT_BOOL *pboolVal;
+		SCODE *pscode;
+		CY *pcyVal;
+		DATE *pdate;
+		wireBSTR *pbstrVal;
+		IUnknown **ppunkVal;
+		LPDISPATCH *ppdispVal;
+		wirePSAFEARRAY *pparray;
+		struct _wireVARIANT *pvarVal;
+		CHAR cVal;
+		USHORT uiVal;
+		ULONG ulVal;
+		ULONGLONG ullVal;
+		INT intVal;
+		UINT uintVal;
+		DECIMAL decVal;
+		DECIMAL *pdecVal;
+		CHAR *pcVal;
+		USHORT *puiVal;
+		ULONG *pulVal;
+		INT *pintVal;
+		UINT *puintVal;
+	} DUMMYUNIONNAME;
+} *wireVARIANT;
+typedef LONG DISPID;
+typedef DISPID MEMBERID;
+typedef DWORD HREFTYPE;
+typedef enum tagTYPEKIND {
+	TKIND_ENUM,TKIND_RECORD,TKIND_MODULE,TKIND_INTERFACE,TKIND_DISPATCH,
+	TKIND_COCLASS,TKIND_ALIAS,TKIND_UNION,TKIND_MAX
+}TYPEKIND;
+typedef struct tagTYPEDESC {
+	_ANONYMOUS_UNION union {
+		struct tagTYPEDESC *lptdesc;
+		struct tagARRAYDESC *lpadesc;
+		HREFTYPE hreftype;
+	} DUMMYUNIONNAME;
+	VARTYPE vt;
+}TYPEDESC;
+typedef struct tagARRAYDESC {
+	TYPEDESC tdescElem;
+	USHORT cDims;
+	SAFEARRAYBOUND rgbounds[1];
+}ARRAYDESC;
+typedef struct tagPARAMDESCEX {
+	ULONG cBytes;
+	VARIANTARG varDefaultValue;
+}PARAMDESCEX,*LPPARAMDESCEX;
+typedef struct tagPARAMDESC {
+	LPPARAMDESCEX pparamdescex;
+	USHORT wParamFlags;
+}PARAMDESC,*LPPARAMDESC;
+typedef struct tagIDLDESC {
+	ULONG dwReserved;
+	USHORT wIDLFlags;
+}IDLDESC,*LPIDLDESC;
+typedef struct tagELEMDESC {
+	TYPEDESC tdesc;
+	_ANONYMOUS_UNION union {
+		IDLDESC idldesc;
+		PARAMDESC paramdesc;
+	} DUMMYUNIONNAME;
+} 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,*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(__stdcall * pfnDeferredFillIn)(struct tagEXCEPINFO*);
+	SCODE scode;
+} EXCEPINFO,*LPEXCEPINFO;
+typedef enum tagCALLCONV {
+	CC_FASTCALL,CC_CDECL,CC_MSCPASCAL,CC_PASCAL=CC_MSCPASCAL,
+	CC_MACPASCAL,CC_STDCALL,CC_FPFASTCALL,CC_SYSCALL,CC_MPWCDECL,
+	CC_MPWPASCAL,CC_MAX=CC_MPWPASCAL
+}CALLCONV;
+typedef enum tagFUNCKIND {
+	FUNC_VIRTUAL,FUNC_PUREVIRTUAL,FUNC_NONVIRTUAL,
+	FUNC_STATIC,FUNC_DISPATCH
+}FUNCKIND;
+typedef enum tagINVOKEKIND {
+	INVOKE_FUNC=1,INVOKE_PROPERTYGET,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,*LPFUNCDESC;
+typedef enum tagVARKIND {
+	VAR_PERINSTANCE,VAR_STATIC,VAR_CONST,VAR_DISPATCH
+} VARKIND;
+typedef struct tagVARDESC {
+	MEMBERID memid;
+	LPOLESTR lpstrSchema;
+	_ANONYMOUS_UNION union {
+		ULONG oInst;
+		VARIANT *lpvarValue;
+	} DUMMYUNIONNAME;
+	ELEMDESC elemdescVar;
+	WORD wVarFlags;
+	VARKIND varkind;
+} VARDESC,*LPVARDESC;
+typedef enum tagTYPEFLAGS {
+	TYPEFLAG_FAPPOBJECT=1,TYPEFLAG_FCANCREATE=2,TYPEFLAG_FLICENSED=4,
+	TYPEFLAG_FPREDECLID=8,TYPEFLAG_FHIDDEN=16,TYPEFLAG_FCONTROL=32,
+	TYPEFLAG_FDUAL=64,TYPEFLAG_FNONEXTENSIBLE=128,
+	TYPEFLAG_FOLEAUTOMATION=256,TYPEFLAG_FRESTRICTED=512,
+	TYPEFLAG_FAGGREGATABLE=1024,TYPEFLAG_FREPLACEABLE=2048,
+	TYPEFLAG_FDISPATCHABLE=4096,TYPEFLAG_FREVERSEBIND=8192
+} TYPEFLAGS;
+typedef enum tagFUNCFLAGS {
+	FUNCFLAG_FRESTRICTED=1,FUNCFLAG_FSOURCE=2,FUNCFLAG_FBINDABLE=4,
+	FUNCFLAG_FREQUESTEDIT=8,FUNCFLAG_FDISPLAYBIND=16,FUNCFLAG_FDEFAULTBIND=32,
+	FUNCFLAG_FHIDDEN=64,FUNCFLAG_FUSESGETLASTERROR=128,FUNCFLAG_FDEFAULTCOLLELEM=256,
+	FUNCFLAG_FUIDEFAULT=512,FUNCFLAG_FNONBROWSABLE=1024,FUNCFLAG_FREPLACEABLE=2048,
+	FUNCFLAG_FIMMEDIATEBIND=4096
+} FUNCFLAGS;
+typedef enum tagVARFLAGS {
+	VARFLAG_FREADONLY=1,VARFLAG_FSOURCE=2,VARFLAG_FBINDABLE=4,VARFLAG_FREQUESTEDIT=8,
+	VARFLAG_FDISPLAYBIND=16,VARFLAG_FDEFAULTBIND=32,VARFLAG_FHIDDEN=64,VARFLAG_FRESTRICTED=128,
+	VARFLAG_FDEFAULTCOLLELEM=256,VARFLAG_FUIDEFAULT=512,VARFLAG_FNONBROWSABLE=1024,
+	VARFLAG_FREPLACEABLE=2048,VARFLAG_FIMMEDIATEBIND=4096
+} VARFLAGS;
+typedef struct tagCLEANLOCALSTORAGE {
+	IUnknown *pInterface;
+	PVOID pStorage;
+	DWORD flags;
+} CLEANLOCALSTORAGE;
+typedef struct tagCUSTDATAITEM {
+	GUID guid;
+	VARIANTARG varValue;
+} CUSTDATAITEM,*LPCUSTDATAITEM;
+typedef struct tagCUSTDATA {
+	DWORD cCustData;
+	LPCUSTDATAITEM prgCustData;
+} CUSTDATA,*LPCUSTDATA;
+
+typedef enum tagDESCKIND {
+        DESCKIND_NONE=0,DESCKIND_FUNCDESC=DESCKIND_NONE+1,
+        DESCKIND_VARDESC=DESCKIND_FUNCDESC+1,DESCKIND_TYPECOMP=DESCKIND_VARDESC+1,
+        DESCKIND_IMPLICITAPPOBJ=DESCKIND_TYPECOMP+1,
+        DESCKIND_MAX=DESCKIND_IMPLICITAPPOBJ+1
+} DESCKIND;
+
+typedef union tagBINDPTR {
+        LPFUNCDESC lpfuncdesc;
+        LPVARDESC lpvardesc;
+        LPTYPECOMP lptcomp;
+} BINDPTR,*LPBINDPTR;
+
+#define INTERFACE IDispatch
+DECLARE_INTERFACE_(IDispatch,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetTypeInfoCount)(THIS_ UINT*) PURE;
+	STDMETHOD(GetTypeInfo)(THIS_ UINT,LCID,LPTYPEINFO*) PURE;
+	STDMETHOD(GetIDsOfNames)(THIS_ REFIID,LPOLESTR*,UINT,LCID,DISPID*) PURE;
+	STDMETHOD(Invoke)(THIS_ DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*) PURE;
+};
+#undef INTERFACE
+
+#ifdef COBJMACROS
+#define IDispatch_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDispatch_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDispatch_Release(p) (p)->lpVtbl->Release(p)
+#define IDispatch_GetTypeInfoCount(p,a) (p)->lpVtbl->GetTypeInfoCount(p,a)
+#define IDispatch_GetTypeInfo(p,a,b,c) (p)->lpVtbl->GetTypeInfo(p,a,b,c)
+#define IDispatch_GetIDsOfNames(p,a,b,c,d,e) (p)->lpVtbl->GetIDsOfNames(p,a,b,c,d,e)
+#define IDispatch_Invoke(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->Invoke(p,a,b,c,d,e,f,g,h)
+#endif
+
+#define INTERFACE IEnumVARIANT
+DECLARE_INTERFACE_(IEnumVARIANT,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(Next)(THIS_ ULONG,VARIANT*,ULONG*) PURE;
+	STDMETHOD(Skip)(THIS_ ULONG) PURE;
+	STDMETHOD(Reset)(THIS) PURE;
+	STDMETHOD(Clone)(THIS_ IEnumVARIANT**) PURE;
+};
+#undef INTERFACE
+
+#define INTERFACE ITypeComp
+DECLARE_INTERFACE_(ITypeComp,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(Bind)(THIS_ LPOLESTR,ULONG,WORD,LPTYPEINFO*,DESCKIND*,LPBINDPTR) PURE;
+	STDMETHOD(BindType)(THIS_ LPOLESTR,ULONG,LPTYPEINFO*,LPTYPECOMP*) PURE;
+};
+#undef INTERFACE
+
+#define INTERFACE ITypeInfo
+DECLARE_INTERFACE_(ITypeInfo,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetTypeAttr)(THIS_ LPTYPEATTR*) PURE;
+	STDMETHOD(GetTypeComp)(THIS_ LPTYPECOMP*) PURE;
+	STDMETHOD(GetFuncDesc)(THIS_ UINT,LPFUNCDESC*) PURE;
+	STDMETHOD(GetVarDesc)(THIS_ UINT,LPVARDESC*) PURE;
+	STDMETHOD(GetNames)(THIS_ MEMBERID,BSTR*,UINT,UINT*) PURE;
+	STDMETHOD(GetRefTypeOfImplType)(THIS_ UINT,HREFTYPE*) PURE;
+	STDMETHOD(GetImplTypeFlags)(THIS_ UINT,INT*) PURE;
+	STDMETHOD(GetIDsOfNames)(THIS_ LPOLESTR*,UINT,MEMBERID*) PURE;
+	STDMETHOD(Invoke)(THIS_ PVOID,MEMBERID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*) PURE;
+	STDMETHOD(GetDocumentation)(THIS_ MEMBERID,BSTR*,BSTR*,DWORD*,BSTR*) PURE;
+	STDMETHOD(GetDllEntry)(THIS_ MEMBERID,INVOKEKIND,BSTR*,BSTR*,WORD*) PURE;
+	STDMETHOD(GetRefTypeInfo)(THIS_ HREFTYPE,LPTYPEINFO*) PURE;
+	STDMETHOD(AddressOfMember)(THIS_ MEMBERID,INVOKEKIND,PVOID*) PURE;
+	STDMETHOD(CreateInstance)(THIS_ LPUNKNOWN,REFIID,PVOID*) PURE;
+	STDMETHOD(GetMops)(THIS_ MEMBERID,BSTR*) PURE;
+	STDMETHOD(GetContainingTypeLib)(THIS_ LPTYPELIB*,UINT*) PURE;
+	STDMETHOD_(void,ReleaseTypeAttr)(THIS_ LPTYPEATTR) PURE;
+	STDMETHOD_(void,ReleaseFuncDesc)(THIS_ LPFUNCDESC) PURE;
+	STDMETHOD_(void,ReleaseVarDesc)(THIS_ LPVARDESC) PURE;
+};
+#undef INTERFACE
+
+#ifdef COBJMACROS
+#define ITypeInfo_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define ITypeInfo_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define ITypeInfo_Release(p) (p)->lpVtbl->Release(p)
+#define ITypeInfo_GetTypeAttr(p,a) (p)->lpVtbl->GetTypeAttr(p,a)
+#define ITypeInfo_GetTypeComp(p,a) (p)->lpVtbl->GetTypeComp(p,a)
+#define ITypeInfo_GetFuncDesc(p,a,b) (p)->lpVtbl->GetFuncDesc(p,a,b)
+#define ITypeInfo_GetVarDesc(p,a,b) (p)->lpVtbl->GetVarDesc(p,a,b)
+#define ITypeInfo_GetNames(p,a,b,c,d) (p)->lpVtbl->GetNames(p,a,b,c,d)
+#define ITypeInfo_GetRefTypeOfImplType(p,a,b) (p)->lpVtbl->GetRefTypeOfImplType(p,a,b)
+#define ITypeInfo_GetImplTypeFlags(p,a,b) (p)->lpVtbl->GetImplTypeFlags(p,a,b)
+#define ITypeInfo_GetIDsOfNames(p,a,b,c) (p)->lpVtbl->GetIDsOfNames(p,a,b,c)
+#define ITypeInfo_Invoke(p,a,b,c,d,e,f,g) (p)->lpVtbl->Invoke(p,a,b,c,d,e,f,g)
+#define ITypeInfo_GetDocumentation(p,a,b,c,d,e) (p)->lpVtbl->GetDocumentation(p,a,b,c,d,e)
+#define ITypeInfo_GetDllEntry(p,a,b,c,d,e) (p)->lpVtbl->GetDllEntry(p,a,b,c,d,e)
+#define ITypeInfo_GetRefTypeInfo(p,a,b) (p)->lpVtbl->GetRefTypeInfo(p,a,b)
+#define ITypeInfo_AddressOfMember(p,a,b,c) (p)->lpVtbl->AddressOfMember(p,a,b,c)
+#define ITypeInfo_CreateInstance(p,a,b,c) (p)->lpVtbl->CreateInstance(p,a,b,c)
+#define ITypeInfo_GetMops(p,a,b) (p)->lpVtbl->GetMops(p,a,b)
+#define ITypeInfo_GetContainingTypeLib(p,a,b) (p)->lpVtbl->GetContainingTypeLib(p,a,b)
+#define ITypeInfo_ReleaseTypeAttr(p,a) (p)->lpVtbl->ReleaseTypeAttr(p,a)
+#define ITypeInfo_ReleaseFuncDesc(p,a) (p)->lpVtbl->ReleaseFuncDesc(p,a)
+#define ITypeInfo_ReleaseVarDesc(p,a) (p)->lpVtbl->ReleaseVarDesc(p,a)
+#endif
+
+#define INTERFACE ITypeInfo2
+DECLARE_INTERFACE_(ITypeInfo2,ITypeInfo)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetTypeAttr)(THIS_ LPTYPEATTR*) PURE;
+	STDMETHOD(GetTypeComp)(THIS_ LPTYPECOMP*) PURE;
+	STDMETHOD(GetFuncDesc)(THIS_ UINT,LPFUNCDESC*) PURE;
+	STDMETHOD(GetVarDesc)(THIS_ UINT,LPVARDESC*) PURE;
+	STDMETHOD(GetNames)(THIS_ MEMBERID,BSTR*,UINT,UINT*) PURE;
+	STDMETHOD(GetRefTypeOfImplType)(THIS_ UINT,HREFTYPE*) PURE;
+	STDMETHOD(GetImplTypeFlags)(THIS_ UINT,INT*) PURE;
+	STDMETHOD(GetIDsOfNames)(THIS_ LPOLESTR*,UINT,MEMBERID*) PURE;
+	STDMETHOD(Invoke)(THIS_ PVOID,MEMBERID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*) PURE;
+	STDMETHOD(GetDocumentation)(THIS_ MEMBERID,BSTR*,BSTR*,DWORD*,BSTR*) PURE;
+	STDMETHOD(GetDllEntry)(THIS_ MEMBERID,INVOKEKIND,BSTR*,BSTR*,WORD*) PURE;
+	STDMETHOD(GetRefTypeInfo)(THIS_ HREFTYPE,LPTYPEINFO*) PURE;
+	STDMETHOD(AddressOfMember)(THIS_ MEMBERID,INVOKEKIND,PVOID*) PURE;
+	STDMETHOD(CreateInstance)(THIS_ LPUNKNOWN,REFIID,PVOID*) PURE;
+	STDMETHOD(GetMops)(THIS_ MEMBERID,BSTR*) PURE;
+	STDMETHOD(GetContainingTypeLib)(THIS_ LPTYPELIB*,UINT*) PURE;
+	STDMETHOD_(void,ReleaseTypeAttr)(THIS_ LPTYPEATTR) PURE;
+	STDMETHOD_(void,ReleaseFuncDesc)(THIS_ LPFUNCDESC) PURE;
+	STDMETHOD_(void,ReleaseVarDesc)(THIS_ LPVARDESC) PURE;
+	STDMETHOD(GetTypeKind)(THIS_ TYPEKIND*) PURE;
+	STDMETHOD(GetTypeFlags)(THIS_ ULONG*) PURE;
+	STDMETHOD(GetFuncIndexOfMemId)(THIS_ MEMBERID,INVOKEKIND,UINT*) PURE;
+	STDMETHOD(GetVarIndexOfMemId)(THIS_ MEMBERID,UINT*) PURE;
+	STDMETHOD(GetCustData)(THIS_ REFGUID,VARIANT*) PURE;
+	STDMETHOD(GetFuncCustData)(THIS_ UINT,REFGUID,VARIANT*) PURE;
+	STDMETHOD(GetParamCustData)(THIS_ UINT,UINT,REFGUID,VARIANT*) PURE;
+	STDMETHOD(GetVarCustData)(THIS_ UINT,REFGUID,VARIANT*) PURE;
+	STDMETHOD(GetImplTypeCustData)(THIS_ UINT,REFGUID,VARIANT*) PURE;
+	STDMETHOD(GetDocumentation2)(THIS_ MEMBERID,LCID,BSTR*,DWORD*,BSTR*) PURE;
+	STDMETHOD(GetAllCustData)(THIS_ CUSTDATA*) PURE;
+	STDMETHOD(GetAllFuncCustData)(THIS_ UINT,CUSTDATA*) PURE;
+	STDMETHOD(GetAllParamCustData)(THIS_ UINT,UINT,CUSTDATA*) PURE;
+	STDMETHOD(GetAllVarCustData)(THIS_ UINT,CUSTDATA*) PURE;
+	STDMETHOD(GetAllImplTypeCustData)(THIS_ UINT,CUSTDATA*) PURE;
+};
+#undef INTERFACE
+
+#define INTERFACE ITypeLib
+DECLARE_INTERFACE_(ITypeLib,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD_(UINT,GetTypeInfoCount)(THIS) PURE;
+	STDMETHOD(GetTypeInfo)(THIS_ UINT,ITypeInfo**) PURE;
+	STDMETHOD(GetTypeInfoType)(THIS_ UINT,TYPEKIND*) PURE;
+	STDMETHOD(GetTypeInfoOfGuid)(THIS_ REFGUID,ITypeInfo**) PURE;
+	STDMETHOD(GetLibAttr)(THIS_ TLIBATTR**) PURE;
+	STDMETHOD(GetTypeComp)(THIS_ ITypeComp**) PURE;
+	STDMETHOD(GetDocumentation)(THIS_ INT,BSTR*,BSTR*,DWORD*,BSTR*) PURE;
+	STDMETHOD(IsName)(THIS_ LPOLESTR,ULONG,BOOL*) PURE;
+	STDMETHOD(FindName)(THIS_ LPOLESTR,ULONG,ITypeInfo**,MEMBERID*,USHORT*) PURE;
+	STDMETHOD_(void,ReleaseTLibAttr)(THIS_ TLIBATTR*) PURE;
+};
+#undef INTERFACE
+
+#define INTERFACE ITypeLib2
+DECLARE_INTERFACE_(ITypeLib2,ITypeLib)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD_(UINT,GetTypeInfoCount)(THIS) PURE;
+	STDMETHOD(GetTypeInfo)(THIS_ UINT,ITypeInfo**) PURE;
+	STDMETHOD(GetTypeInfoType)(THIS_ UINT,TYPEKIND*) PURE;
+	STDMETHOD(GetTypeInfoOfGuid)(THIS_ REFGUID,ITypeInfo**) PURE;
+	STDMETHOD(GetLibAttr)(THIS_ TLIBATTR**) PURE;
+	STDMETHOD(GetTypeComp)(THIS_ ITypeComp**) PURE;
+	STDMETHOD(GetDocumentation)(THIS_ INT,BSTR*,BSTR*,DWORD*,BSTR*) PURE;
+	STDMETHOD(IsName)(THIS_ LPOLESTR,ULONG,BOOL*) PURE;
+	STDMETHOD(FindName)(THIS_ LPOLESTR,ULONG,ITypeInfo**,MEMBERID*,USHORT*) PURE;
+	STDMETHOD_(void,ReleaseTLibAttr)(THIS_ TLIBATTR*) PURE;
+	STDMETHOD(GetCustData)(THIS_ REFGUID,VARIANT*) PURE;
+	STDMETHOD(GetLibStatistics)(THIS_ ULONG*,ULONG*) PURE;
+	STDMETHOD(GetDocumentation2)(THIS_ INT,LCID,BSTR*,DWORD*,BSTR*) PURE;
+	STDMETHOD(GetAllCustData)(THIS_ CUSTDATA*) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IErrorInfo;
+#define INTERFACE IErrorInfo
+DECLARE_INTERFACE_(IErrorInfo, IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetGUID)(THIS_ GUID*) PURE;
+	STDMETHOD(GetSource)(THIS_ BSTR*) PURE;
+	STDMETHOD(GetDescription)(THIS_ BSTR*) PURE;
+	STDMETHOD(GetHelpFile)(THIS_ BSTR*) PURE;
+	STDMETHOD(GetHelpContext)(THIS_ DWORD*) PURE;
+};
+#undef INTERFACE
+
+#ifdef COBJMACROS
+#define IErrorInfo_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
+#define IErrorInfo_AddRef(T) (T)->lpVtbl->AddRef(T)
+#define IErrorInfo_Release(T) (T)->lpVtbl->Release(T)
+#define IErrorInfo_GetGUID(T,a) (T)->lpVtbl->GetGUID(T,a)
+#define IErrorInfo_GetSource(T,a) (T)->lpVtbl->GetSource(T,a)
+#define IErrorInfo_GetDescription(T,a) (T)->lpVtbl->GetDescription(T,a)
+#define IErrorInfo_GetHelpFile(T,a) (T)->lpVtbl->GetHelpFile(T,a)
+#define IErrorInfo_GetHelpContext(T,a) (T)->lpVtbl->GetHelpContext(T,a)
+#endif
+
+EXTERN_C const IID IID_ICreateErrorInfo;
+#define INTERFACE ICreateErrorInfo
+DECLARE_INTERFACE_(ICreateErrorInfo, IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*)PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(SetGUID)(THIS_ REFGUID) PURE;
+	STDMETHOD(SetSource)(THIS_ LPOLESTR) PURE;
+	STDMETHOD(SetDescription)(THIS_ LPOLESTR) PURE;
+	STDMETHOD(SetHelpFile)(THIS_ LPOLESTR) PURE;
+	STDMETHOD(SetHelpContext)(THIS_ DWORD) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_ISupportErrorInfo;
+#define INTERFACE ISupportErrorInfo
+DECLARE_INTERFACE_(ISupportErrorInfo, IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(InterfaceSupportsErrorInfo)(THIS_ REFIID) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IRecordInfo;
+#define INTERFACE IRecordInfo
+DECLARE_INTERFACE_(IRecordInfo, IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(RecordInit)(THIS_ PVOID) PURE;
+	STDMETHOD(RecordClear)(THIS_ PVOID) PURE;
+	STDMETHOD(RecordCopy)(THIS_ PVOID, PVOID) PURE;
+	STDMETHOD(GetGuid)(THIS_ GUID*) PURE;
+	STDMETHOD(GetName)(THIS_ BSTR*) PURE;
+	STDMETHOD(GetSize)(THIS_ ULONG*) PURE;
+	STDMETHOD(GetTypeInfo)(THIS_ ITypeInfo**) PURE;
+	STDMETHOD(GetField)(THIS_ PVOID,LPCOLESTR,VARIANT*) PURE;
+	STDMETHOD(GetFieldNoCopy)(THIS_ PVOID,LPCOLESTR,VARIANT*,PVOID*) PURE;
+	STDMETHOD(PutField )(THIS_ ULONG,PVOID,LPCOLESTR, VARIANT*) PURE;
+	STDMETHOD(PutFieldNoCopy)(THIS_ ULONG,PVOID,LPCOLESTR,VARIANT*) PURE;
+	STDMETHOD(GetFieldNames)(THIS_ ULONG*,BSTR*) PURE;
+	STDMETHOD_(BOOL,IsMatchingType)(THIS_ IRecordInfo*) PURE;
+	STDMETHOD_(PVOID,RecordCreate)(THIS) PURE;
+	STDMETHOD(RecordCreateCopy)(THIS_ PVOID,PVOID*) PURE;
+	STDMETHOD(RecordDestroy )(THIS_ PVOID) PURE;
+};
+#undef INTERFACE
+
+#ifdef COBJMACROS
+#define IRecordInfo_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IRecordInfo_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IRecordInfo_Release(p) (p)->lpVtbl->Release(p)
+#define IRecordInfo_RecordInit(p,a) (p)->lpVtbl->RecordInit(p,a)
+#define IRecordInfo_RecordClear(p,a) (p)->lpVtbl->RecordClear(p,a)
+#define IRecordInfo_RecordCopy(p,a,b) (p)->lpVtbl->RecordCopy(p,a,b)
+#define IRecordInfo_GetGuid(p,a) (p)->lpVtbl->GetGuid(p,a)
+#define IRecordInfo_GetName(p,a) (p)->lpVtbl->GetName(p,a)
+#define IRecordInfo_GetSize(p,a) (p)->lpVtbl->GetSize(p,a)
+#define IRecordInfo_GetTypeInfo(p,a) (p)->lpVtbl->GetTypeInfo(p,a)
+#define IRecordInfo_GetField(p,a,b,c) (p)->lpVtbl->GetField(p,a,b,c)
+#define IRecordInfo_GetFieldNoCopy(p,a,b,c,d) (p)->lpVtbl->GetFieldNoCopy(p,a,b,c,d)
+#define IRecordInfo_PutField(p,a,b,c,d) (p)->lpVtbl->PutField(p,a,b,c,d)
+#define IRecordInfo_PutFieldNoCopy(p,a,b,c,d) (p)->lpVtbl->PutFieldNoCopy(p,a,b,c,d)
+#define IRecordInfo_GetFieldNames(p,a,b) (p)->lpVtbl->GetFieldNames(p,a,b)
+#define IRecordInfo_IsMatchingType(p,a) (p)->lpVtbl->IsMatchingType(p,a)
+#define IRecordInfo_RecordCreate(p) (p)->lpVtbl->RecordCreate(p)
+#define IRecordInfo_RecordCreateCopy(p,a,b) (p)->lpVtbl->RecordCreateCopy(p,a,b)
+#define IRecordInfo_RecordDestroy(p,a) (p)->lpVtbl->RecordDestroy(p,a)
+#endif
+
+EXTERN_C const IID IID_ITypeMarshal;
+#define INTERFACE ITypeMarshal
+DECLARE_INTERFACE_(ITypeMarshal, IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(Size)(THIS_ PVOID,DWORD,PVOID,ULONG*) PURE;
+	STDMETHOD(Marshal)(THIS_ PVOID,DWORD,PVOID,ULONG,BYTE*,ULONG*) PURE;
+	STDMETHOD(Unmarshal)(THIS_ PVOID,DWORD,ULONG,BYTE*,ULONG*) PURE;
+	STDMETHOD(Free)(THIS_ PVOID) PURE;
+};
+#undef INTERFACE
+
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/objbase.h
===================================================================
--- Daodan/MinGW/include/objbase.h	(revision 1046)
+++ Daodan/MinGW/include/objbase.h	(revision 1046)
@@ -0,0 +1,203 @@
+/* Include here to prevent circular dependencies if windows.h
+   not already included */
+#include <rpc.h>
+#include <rpcndr.h>
+
+#ifndef _OBJBASE_H
+#define _OBJBASE_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#include <stdlib.h>
+#pragma pack(push,8)
+#include <basetyps.h>
+
+#define WINOLEAPI STDAPI
+#define WINOLEAPI_(type) STDAPI_(type)
+#define FARSTRUCT
+#define HUGEP
+#define LISet32(li,v) ((li).HighPart=(v)<0?-1:0,(li).LowPart=(v))
+#define ULISet32(li,v) ((li).HighPart=0,(li).LowPart=(v))
+#define CLSCTX_ALL (CLSCTX_INPROC_SERVER|CLSCTX_INPROC_HANDLER|CLSCTX_LOCAL_SERVER)
+#define CLSCTX_INPROC (CLSCTX_INPROC_SERVER|CLSCTX_INPROC_HANDLER)
+#define CLSCTX_SERVER (CLSCTX_INPROC_SERVER|CLSCTX_LOCAL_SERVER|CLSCTX_REMOTE_SERVER)
+#define MARSHALINTERFACE_MIN 500
+#define CWCSTORAGENAME 32
+#define STGM_DIRECT 0
+#define STGM_TRANSACTED 0x10000L
+#define STGM_SIMPLE 0x8000000L
+#define STGM_READ 0
+#define STGM_WRITE 1
+#define STGM_READWRITE 2
+#define STGM_SHARE_DENY_NONE 0x40
+#define STGM_SHARE_DENY_READ 0x30
+#define STGM_SHARE_DENY_WRITE 0x20
+#define STGM_SHARE_EXCLUSIVE 0x10
+#define STGM_PRIORITY 0x40000L
+#define STGM_DELETEONRELEASE 0x4000000
+#define STGM_NOSCRATCH 0x100000
+#define STGM_CREATE 0x1000
+#define STGM_CONVERT 0x20000
+#define STGM_NOSNAPSHOT 0x200000
+#define STGM_FAILIFTHERE 0
+#define CWCSTORAGENAME 32
+#define ASYNC_MODE_COMPATIBILITY	1
+#define ASYNC_MODE_DEFAULT	0
+#define STGTY_REPEAT	256
+#define STG_TOEND	0xFFFFFFFF
+#define STG_LAYOUT_SEQUENTIAL	0
+#define STG_LAYOUT_INTERLEAVED	1
+#define COM_RIGHTS_EXECUTE 1
+#define COM_RIGHTS_SAFE_FOR_SCRIPTING 2
+#define STGOPTIONS_VERSION 2
+typedef enum tagSTGFMT {
+	STGFMT_STORAGE = 0,
+	STGFMT_FILE = 3,
+	STGFMT_ANY = 4,
+	STGFMT_DOCFILE = 5
+} STGFMT;
+typedef struct tagSTGOPTIONS {
+	USHORT usVersion;
+	USHORT reserved;
+	ULONG ulSectorSize;
+	const WCHAR *pwcsTemplateFile;
+} STGOPTIONS;
+typedef enum tagREGCLS {
+	REGCLS_SINGLEUSE = 0,
+	REGCLS_MULTIPLEUSE = 1,
+	REGCLS_MULTI_SEPARATE = 2
+} REGCLS;
+#include <wtypes.h>
+#include <unknwn.h>
+#include <objidl.h>
+
+#ifdef __cplusplus
+inline BOOL IsEqualGUID(REFGUID rguid1, REFGUID rguid2)
+	{ return !memcmp(&rguid1, &rguid2, sizeof(GUID)); }
+inline BOOL operator==(const GUID& guidOne, const GUID& guidOther)
+	{ return !memcmp(&guidOne,&guidOther,sizeof(GUID)); }
+inline BOOL operator!=(const GUID& g1, const GUID& g2)
+	{ return !(g1 == g2); }
+#else
+#define IsEqualGUID(rguid1, rguid2) (!memcmp(rguid1, rguid2, sizeof(GUID)))
+#endif
+#define IsEqualIID(id1,id2) IsEqualGUID(id1,id2)
+#define IsEqualCLSID(id1,id2) IsEqualGUID(id1,id2)
+#include <cguid.h>
+
+typedef enum tagCOINIT {
+	COINIT_APARTMENTTHREADED	= 0x2,
+	COINIT_MULTITHREADED		= 0x0,
+	COINIT_DISABLE_OLE1DDE		= 0x4,
+	COINIT_SPEED_OVER_MEMORY	= 0x8
+} COINIT;
+typedef enum tagSTDMSHLFLAGS {
+    SMEXF_SERVER  = 0x01,
+    SMEXF_HANDLER = 0x02
+} STDMSHLFLAGS;
+
+WINOLEAPI_(DWORD) CoBuildVersion(void);
+WINOLEAPI CoInitialize(PVOID);
+WINOLEAPI CoInitializeEx(LPVOID,DWORD);
+WINOLEAPI_(void) CoUninitialize(void);
+WINOLEAPI CoGetMalloc(DWORD,LPMALLOC*);
+WINOLEAPI_(DWORD) CoGetCurrentProcess(void);
+WINOLEAPI CoRegisterMallocSpy(LPMALLOCSPY);
+WINOLEAPI CoRevokeMallocSpy(void);
+WINOLEAPI CoCreateStandardMalloc(DWORD,IMalloc**);
+#ifdef DBG
+WINOLEAPI_(ULONG) DebugCoGetRpcFault(void);
+WINOLEAPI_(void) DebugCoSetRpcFault(ULONG);
+#endif
+WINOLEAPI CoGetClassObject(REFCLSID,DWORD,COSERVERINFO*,REFIID,PVOID*);
+WINOLEAPI CoRegisterClassObject(REFCLSID,LPUNKNOWN,DWORD,DWORD,PDWORD);
+WINOLEAPI CoRevokeClassObject(DWORD);
+WINOLEAPI CoGetMarshalSizeMax(ULONG*,REFIID,LPUNKNOWN,DWORD,PVOID,DWORD);
+WINOLEAPI CoMarshalInterface(LPSTREAM,REFIID,LPUNKNOWN,DWORD,PVOID,DWORD);
+WINOLEAPI CoUnmarshalInterface(LPSTREAM,REFIID,PVOID*);
+WINOLEAPI CoMarshalHresult(LPSTREAM,HRESULT);
+WINOLEAPI CoUnmarshalHresult(LPSTREAM,HRESULT*);
+WINOLEAPI CoReleaseMarshalData(LPSTREAM);
+WINOLEAPI CoDisconnectObject(LPUNKNOWN,DWORD);
+WINOLEAPI CoLockObjectExternal(LPUNKNOWN,BOOL,BOOL);
+WINOLEAPI CoGetStandardMarshal(REFIID,LPUNKNOWN,DWORD,PVOID,DWORD,LPMARSHAL*);
+WINOLEAPI CoGetStdMarshalEx(LPUNKNOWN,DWORD,LPUNKNOWN*);
+WINOLEAPI_(BOOL) CoIsHandlerConnected(LPUNKNOWN);
+WINOLEAPI_(BOOL) CoHasStrongExternalConnections(LPUNKNOWN);
+WINOLEAPI CoMarshalInterThreadInterfaceInStream(REFIID,LPUNKNOWN,LPSTREAM*);
+WINOLEAPI CoGetInterfaceAndReleaseStream(LPSTREAM,REFIID,PVOID*);
+WINOLEAPI CoCreateFreeThreadedMarshaler(LPUNKNOWN,LPUNKNOWN*);
+WINOLEAPI_(HINSTANCE) CoLoadLibrary(LPOLESTR,BOOL);
+WINOLEAPI_(void) CoFreeLibrary(HINSTANCE);
+WINOLEAPI_(void) CoFreeAllLibraries(void);
+WINOLEAPI_(void) CoFreeUnusedLibraries(void);
+WINOLEAPI CoCreateInstance(REFCLSID,LPUNKNOWN,DWORD,REFIID,PVOID*);
+WINOLEAPI CoCreateInstanceEx(REFCLSID,IUnknown*,DWORD,COSERVERINFO*,DWORD,MULTI_QI*);
+WINOLEAPI StringFromCLSID(REFCLSID,LPOLESTR*);
+WINOLEAPI CLSIDFromString(LPOLESTR,LPCLSID);
+WINOLEAPI StringFromIID(REFIID,LPOLESTR*);
+WINOLEAPI IIDFromString(LPOLESTR,LPIID);
+WINOLEAPI_(BOOL) CoIsOle1Class(REFCLSID);
+WINOLEAPI ProgIDFromCLSID(REFCLSID,LPOLESTR*);
+WINOLEAPI CLSIDFromProgID(LPCOLESTR,LPCLSID);
+WINOLEAPI_(int) StringFromGUID2(REFGUID,LPOLESTR,int);
+WINOLEAPI CoCreateGuid(GUID*);
+WINOLEAPI_(BOOL) CoFileTimeToDosDateTime(FILETIME*,LPWORD,LPWORD);
+WINOLEAPI_(BOOL) CoDosDateTimeToFileTime(WORD,WORD,FILETIME*);
+WINOLEAPI CoFileTimeNow(FILETIME*);
+WINOLEAPI CoRegisterMessageFilter(LPMESSAGEFILTER,LPMESSAGEFILTER*);
+WINOLEAPI CoGetTreatAsClass(REFCLSID,LPCLSID);
+WINOLEAPI CoTreatAsClass(REFCLSID,REFCLSID);
+typedef HRESULT (STDAPICALLTYPE *LPFNGETCLASSOBJECT)(REFCLSID,REFIID,PVOID*);
+typedef HRESULT (STDAPICALLTYPE *LPFNCANUNLOADNOW)(void);
+STDAPI DllGetClassObject(REFCLSID,REFIID,PVOID*);
+STDAPI DllCanUnloadNow(void);
+WINOLEAPI_(PVOID) CoTaskMemAlloc(ULONG);
+WINOLEAPI_(PVOID) CoTaskMemRealloc(PVOID,ULONG);
+WINOLEAPI_(void) CoTaskMemFree(PVOID);
+WINOLEAPI CreateDataAdviseHolder(LPDATAADVISEHOLDER*);
+WINOLEAPI CreateDataCache(LPUNKNOWN,REFCLSID,REFIID,PVOID*);
+WINOLEAPI StgCreateDocfile(const OLECHAR*,DWORD,DWORD,IStorage**);
+WINOLEAPI StgCreateDocfileOnILockBytes(ILockBytes*,DWORD,DWORD,IStorage**);
+WINOLEAPI StgOpenStorage(const OLECHAR*,IStorage*,DWORD,SNB,DWORD,IStorage**);
+WINOLEAPI StgOpenStorageOnILockBytes(ILockBytes*,IStorage*,DWORD,SNB,DWORD,IStorage**);
+WINOLEAPI StgIsStorageFile(const OLECHAR*);
+WINOLEAPI StgIsStorageILockBytes(ILockBytes*);
+WINOLEAPI StgSetTimes(OLECHAR const*,FILETIME const*,FILETIME const*,FILETIME const*);
+WINOLEAPI StgCreateStorageEx(const WCHAR*,DWORD,DWORD,DWORD,STGOPTIONS*,void*,REFIID,void**);
+WINOLEAPI StgOpenStorageEx(const WCHAR*,DWORD,DWORD,DWORD,STGOPTIONS*,void*,REFIID,void**);
+WINOLEAPI BindMoniker(LPMONIKER,DWORD,REFIID,PVOID*);
+WINOLEAPI CoGetObject(LPCWSTR,BIND_OPTS*,REFIID,void**);
+WINOLEAPI MkParseDisplayName(LPBC,LPCOLESTR,ULONG*,LPMONIKER*);
+WINOLEAPI MonikerRelativePathTo(LPMONIKER,LPMONIKER,LPMONIKER*,BOOL);
+WINOLEAPI MonikerCommonPrefixWith(LPMONIKER,LPMONIKER,LPMONIKER*);
+WINOLEAPI CreateBindCtx(DWORD,LPBC*);
+WINOLEAPI CreateGenericComposite(LPMONIKER,LPMONIKER,LPMONIKER*);
+WINOLEAPI GetClassFile (LPCOLESTR,CLSID*);
+WINOLEAPI CreateFileMoniker(LPCOLESTR,LPMONIKER*);
+WINOLEAPI CreateItemMoniker(LPCOLESTR,LPCOLESTR,LPMONIKER*);
+WINOLEAPI CreateAntiMoniker(LPMONIKER*);
+WINOLEAPI CreatePointerMoniker(LPUNKNOWN,LPMONIKER*);
+WINOLEAPI GetRunningObjectTable(DWORD,LPRUNNINGOBJECTTABLE*);
+WINOLEAPI CoInitializeSecurity(PSECURITY_DESCRIPTOR,LONG,SOLE_AUTHENTICATION_SERVICE*, void*,DWORD,DWORD,void*,DWORD,void*);
+WINOLEAPI CoGetCallContext(REFIID,void**);
+WINOLEAPI CoQueryProxyBlanket(IUnknown*, DWORD*,DWORD*,OLECHAR**,DWORD*,DWORD*,RPC_AUTH_IDENTITY_HANDLE*,DWORD*);
+WINOLEAPI CoSetProxyBlanket(IUnknown*,DWORD,DWORD,OLECHAR*,DWORD,DWORD,RPC_AUTH_IDENTITY_HANDLE, DWORD);
+WINOLEAPI CoCopyProxy(IUnknown*,IUnknown**);
+WINOLEAPI CoQueryClientBlanket(DWORD*,DWORD*,OLECHAR**, DWORD*,DWORD*,RPC_AUTHZ_HANDLE*,DWORD*);
+WINOLEAPI CoImpersonateClient(void);
+WINOLEAPI CoRevertToSelf(void);
+WINOLEAPI CoQueryAuthenticationServices(DWORD*, SOLE_AUTHENTICATION_SERVICE**);
+WINOLEAPI CoSwitchCallContext(IUnknown*,IUnknown**);
+WINOLEAPI CoGetInstanceFromFile(COSERVERINFO*, CLSID*,IUnknown*,DWORD,DWORD,OLECHAR*,DWORD,MULTI_QI*);
+WINOLEAPI CoGetInstanceFromIStorage(COSERVERINFO*,CLSID*, IUnknown*,DWORD,struct IStorage*, DWORD,MULTI_QI*);
+WINOLEAPI_(ULONG) CoAddRefServerProcess(void);
+WINOLEAPI_(ULONG) CoReleaseServerProcess(void);
+WINOLEAPI CoResumeClassObjects(void);
+WINOLEAPI CoSuspendClassObjects(void);
+WINOLEAPI CoGetPSClsid(REFIID,CLSID*);
+WINOLEAPI CoRegisterPSClsid(REFIID,REFCLSID);
+
+#pragma pack(pop)
+#endif
Index: Daodan/MinGW/include/objfwd.h
===================================================================
--- Daodan/MinGW/include/objfwd.h	(revision 1046)
+++ Daodan/MinGW/include/objfwd.h	(revision 1046)
@@ -0,0 +1,57 @@
+#ifndef _OBJFWD_H
+#define _OBJFWD_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#include <basetyps.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+typedef _COM_interface IMoniker *LPMONIKER;
+typedef _COM_interface IStream *LPSTREAM;
+typedef _COM_interface IMarshal *LPMARSHAL;
+typedef _COM_interface IMalloc *LPMALLOC;
+typedef _COM_interface IMallocSpy *LPMALLOCSPY;
+typedef _COM_interface IMessageFilter *LPMESSAGEFILTER;
+typedef _COM_interface IPersist *LPPERSIST;
+typedef _COM_interface IPersistStream *LPPERSISTSTREAM;
+typedef _COM_interface IRunningObjectTable *LPRUNNINGOBJECTTABLE;
+typedef _COM_interface IBindCtx *LPBINDCTX,*LPBC;
+typedef _COM_interface IAdviseSink *LPADVISESINK;
+typedef _COM_interface IAdviseSink2 *LPADVISESINK2;
+typedef _COM_interface IDataObject *LPDATAOBJECT;
+typedef _COM_interface IDataAdviseHolder *LPDATAADVISEHOLDER;
+typedef _COM_interface IEnumMoniker *LPENUMMONIKER;
+typedef _COM_interface IEnumFORMATETC *LPENUMFORMATETC;
+typedef _COM_interface IEnumSTATDATA *LPENUMSTATDATA;
+typedef _COM_interface IEnumSTATSTG *LPENUMSTATSTG;
+typedef _COM_interface IEnumSTATPROPSTG LPENUMSTATPROPSTG;
+typedef _COM_interface IEnumString *LPENUMSTRING;
+typedef _COM_interface IEnumUnknown *LPENUMUNKNOWN;
+typedef _COM_interface IStorage *LPSTORAGE;
+typedef _COM_interface IPersistStorage *LPPERSISTSTORAGE;
+typedef _COM_interface ILockBytes *LPLOCKBYTES;
+typedef _COM_interface IStdMarshalInfo *LPSTDMARSHALINFO;
+typedef _COM_interface IExternalConnection *LPEXTERNALCONNECTION;
+typedef _COM_interface IRunnableObject *LPRUNNABLEOBJECT;
+typedef _COM_interface IROTData *LPROTDATA;
+typedef _COM_interface IPersistFile *LPPERSISTFILE;
+typedef _COM_interface IRootStorage *LPROOTSTORAGE;
+typedef _COM_interface IRpcChannelBuffer *LPRPCCHANNELBUFFER;
+typedef _COM_interface IRpcProxyBuffer *LPRPCPROXYBUFFER;
+typedef _COM_interface IRpcStubBuffer *LPRPCSTUBBUFFER;
+typedef _COM_interface IPropertyStorage *LPPROPERTYSTORAGE;
+typedef _COM_interface IEnumSTATPROPSETSTG *LPENUMSTATPROPSETSTG;
+typedef _COM_interface IPropertySetStorage *LPPROPERTYSETSTORAGE;
+typedef _COM_interface IClientSecurity *LPCLIENTSECURITY;
+typedef _COM_interface IServerSecurity *LPSERVERSECURITY;
+typedef _COM_interface IClassActivator *LPCLASSACTIVATOR;
+typedef _COM_interface IFillLockBytes *LPFILLLOCKBYTES;
+typedef _COM_interface IProgressNotify *LPPROGRESSNOTIFY;
+typedef _COM_interface ILayoutStorage *LPLAYOUTSTORAGE;
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/objidl.h
===================================================================
--- Daodan/MinGW/include/objidl.h	(revision 1046)
+++ Daodan/MinGW/include/objidl.h	(revision 1046)
@@ -0,0 +1,1771 @@
+#ifndef _OBJIDL_H
+#define _OBJIDL_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#include <objfwd.h>
+
+#define PIDSI_TITLE		0x00000002
+#define PIDSI_SUBJECT		0x00000003
+#define PIDSI_AUTHOR		0x00000004
+#define PIDSI_KEYWORDS		0x00000005
+#define PIDSI_COMMENTS		0x00000006
+#define PIDSI_TEMPLATE		0x00000007
+#define PIDSI_LASTAUTHOR	0x00000008
+#define PIDSI_REVNUMBER		0x00000009
+#define PIDSI_EDITTIME		0x0000000A
+#define PIDSI_LASTPRINTED	0x0000000B
+#define PIDSI_CREATE_DTM	0x0000000C
+#define PIDSI_LASTSAVE_DTM	0x0000000D
+#define PIDSI_PAGECOUNT		0x0000000E
+#define PIDSI_WORDCOUNT		0x0000000F
+#define PIDSI_CHARCOUNT		0x00000010
+#define PIDSI_THUMBNAIL		0x00000011
+#define PIDSI_APPNAME		0x00000012
+#define PIDSI_DOC_SECURITY	0x00000013
+#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 PRSPEC_INVALID	0xFFFFFFFF
+#define PRSPEC_LPWSTR	0x00000000
+#define PRSPEC_PROPID	0x00000001
+
+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,
+	STGTY_LOCKBYTES,
+	STGTY_PROPERTY
+} STGTY;
+typedef enum tagSTREAM_SEEK {
+	STREAM_SEEK_SET,
+	STREAM_SEEK_CUR,
+	STREAM_SEEK_END
+} STREAM_SEEK;
+typedef struct tagINTERFACEINFO {
+	LPUNKNOWN pUnk;
+	IID iid;
+	WORD wMethod;
+} INTERFACEINFO,*LPINTERFACEINFO;
+typedef enum tagCALLTYPE {
+	CALLTYPE_TOPLEVEL=1,
+	CALLTYPE_NESTED,
+	CALLTYPE_ASYNC,
+	CALLTYPE_TOPLEVEL_CALLPENDING,
+	CALLTYPE_ASYNC_CALLPENDING
+} CALLTYPE;
+typedef enum tagPENDINGTYPE {
+	PENDINGTYPE_TOPLEVEL=1,
+	PENDINGTYPE_NESTED
+} PENDINGTYPE;
+typedef enum tagPENDINGMSG {
+	PENDINGMSG_CANCELCALL=0,
+	PENDINGMSG_WAITNOPROCESS,
+	PENDINGMSG_WAITDEFPROCESS
+} PENDINGMSG;
+typedef OLECHAR **SNB;
+typedef enum tagDATADIR	{
+	DATADIR_GET=1,
+	DATADIR_SET
+} DATADIR;
+typedef WORD CLIPFORMAT,*LPCLIPFORMAT;
+typedef struct tagDVTARGETDEVICE {
+	DWORD tdSize;
+	WORD tdDriverNameOffset;
+	WORD tdDeviceNameOffset;
+	WORD tdPortNameOffset;
+	WORD tdExtDevmodeOffset;
+	BYTE tdData[1];
+} DVTARGETDEVICE;
+typedef struct tagFORMATETC {
+	CLIPFORMAT cfFormat;
+	DVTARGETDEVICE*ptd;
+	DWORD dwAspect;
+	LONG lindex;
+	DWORD tymed;
+} FORMATETC,*LPFORMATETC;
+typedef struct tagRemSTGMEDIUM {
+	DWORD tymed;
+	DWORD dwHandleType;
+	ULONG pData;
+	unsigned long pUnkForRelease;
+	unsigned long cbData;
+	BYTE data[1];
+} RemSTGMEDIUM;
+typedef struct tagHLITEM {
+	ULONG uHLID;
+	LPWSTR pwzFriendlyName;
+} HLITEM;
+typedef struct tagSTATDATA {
+	FORMATETC formatetc;
+	DWORD grfAdvf;
+	struct IAdviseSink *pAdvSink;
+	DWORD dwConnection;
+} STATDATA;
+typedef struct tagSTATPROPSETSTG {
+	FMTID fmtid;
+	CLSID clsid;
+	DWORD grfFlags;
+	FILETIME mtime;
+	FILETIME ctime;
+	FILETIME atime;
+} STATPROPSETSTG;
+typedef enum tagEXTCONN {
+	EXTCONN_STRONG=1,
+	EXTCONN_WEAK=2,
+	EXTCONN_CALLABLE=4
+} EXTCONN;
+typedef struct tagMULTI_QI {
+	const IID *pIID;
+	IUnknown *pItf;
+	HRESULT	hr;
+} MULTI_QI;
+typedef struct _AUTH_IDENTITY {
+	USHORT *User;
+	ULONG UserLength;
+	USHORT *Domain;
+	ULONG DomainLength;
+	USHORT *Password;
+	ULONG PasswordLength;
+	ULONG Flags;
+} AUTH_IDENTITY;
+typedef struct _COAUTHINFO{
+	DWORD dwAuthnSvc;
+	DWORD dwAuthzSvc;
+	LPWSTR pwszServerPrincName;
+	DWORD dwAuthnLevel;
+	DWORD dwImpersonationLevel;
+	AUTH_IDENTITY *pAuthIdentityData;
+	DWORD dwCapabilities;
+} COAUTHINFO;
+typedef struct  _COSERVERINFO {
+	DWORD dwReserved1;
+	LPWSTR pwszName;
+	COAUTHINFO *pAuthInfo;
+	DWORD dwReserved2;
+} COSERVERINFO;
+typedef struct tagBIND_OPTS {
+	DWORD cbStruct;
+	DWORD grfFlags;
+	DWORD grfMode;
+	DWORD dwTickCountDeadline;
+} BIND_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,*LPBIND_OPTS2;
+typedef enum tagBIND_FLAGS {
+	BIND_MAYBOTHERUSER=1,
+	BIND_JUSTTESTEXISTENCE
+} BIND_FLAGS;
+typedef struct tagSTGMEDIUM {
+	DWORD tymed;
+	_ANONYMOUS_UNION union {
+		HBITMAP hBitmap;
+		PVOID hMetaFilePict;
+		HENHMETAFILE hEnhMetaFile;
+		HGLOBAL hGlobal;
+		LPWSTR lpszFileName;
+		LPSTREAM pstm;
+		LPSTORAGE pstg;
+	} DUMMYUNIONNAME;
+	LPUNKNOWN pUnkForRelease;
+} STGMEDIUM,*LPSTGMEDIUM;
+typedef enum tagLOCKTYPE {
+	LOCK_WRITE=1,
+	LOCK_EXCLUSIVE=2,
+	LOCK_ONLYONCE=4
+} LOCKTYPE;
+typedef unsigned long RPCOLEDATAREP;
+typedef struct  tagRPCOLEMESSAGE {
+	PVOID reserved1;
+	RPCOLEDATAREP dataRepresentation;
+	PVOID Buffer;
+	ULONG cbBuffer;
+	ULONG iMethod;
+	PVOID reserved2[5];
+	ULONG rpcFlags;
+} RPCOLEMESSAGE, *PRPCOLEMESSAGE;
+typedef enum tagMKSYS {
+	MKSYS_NONE,
+	MKSYS_GENERICCOMPOSITE,
+	MKSYS_FILEMONIKER,
+	MKSYS_ANTIMONIKER,
+	MKSYS_ITEMMONIKER,
+	MKSYS_POINTERMONIKER
+} MKSYS;
+typedef enum tagMKREDUCE {
+	MKRREDUCE_ALL,
+	MKRREDUCE_ONE=196608,
+	MKRREDUCE_TOUSER=131072,
+	MKRREDUCE_THROUGHUSER=65536
+} MKRREDUCE;
+typedef struct tagRemSNB {
+	unsigned long ulCntStr;
+	unsigned long ulCntChar;
+	OLECHAR rgString[1];
+} RemSNB;
+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 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 enum tagSERVERCALL {
+	SERVERCALL_ISHANDLED,SERVERCALL_REJECTED,SERVERCALL_RETRYLATER
+} SERVERCALL;
+typedef struct tagCAUB {
+	ULONG cElems;
+	unsigned char *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 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 struct tagPROPVARIANT *LPPROPVARIANT;
+typedef struct tagCAPROPVARIANT {
+	ULONG cElems;
+	LPPROPVARIANT pElems;
+}CAPROPVARIANT;
+typedef struct tagPROPVARIANT {
+	VARTYPE vt;
+	WORD wReserved1;
+	WORD wReserved2;
+	WORD wReserved3;
+	_ANONYMOUS_UNION union {
+		CHAR cVal;
+		UCHAR bVal;
+		short iVal;
+		USHORT uiVal;
+		VARIANT_BOOL boolVal;
+#if 0
+/* bool is a standard type in C++, and a standard macro expanding
+   to the _Bool type in C99 (see stdbool.h) */
+		_VARIANT_BOOL bool;
+#endif
+		long lVal;
+		ULONG ulVal;
+		float fltVal;
+		SCODE scode;
+		LARGE_INTEGER hVal;
+		ULARGE_INTEGER uhVal;
+		double dblVal;
+		CY cyVal;
+		DATE date;
+		FILETIME filetime;
+		CLSID *puuid;
+		BLOB blob;
+		CLIPDATA *pclipdata;
+		LPSTREAM pStream;
+		LPSTORAGE pStorage;
+		BSTR bstrVal;
+		BSTRBLOB bstrblobVal;
+		LPSTR pszVal;
+		LPWSTR pwszVal;
+		CAUB caub;
+		CAI cai;
+		CAUI caui;
+		CABOOL cabool;
+		CAL cal;
+		CAUL caul;
+		CAFLT caflt;
+		CASCODE cascode;
+		CAH cah;
+		CAUH cauh;
+		CADBL cadbl;
+		CACY cacy;
+		CADATE cadate;
+		CAFILETIME cafiletime;
+		CACLSID cauuid;
+		CACLIPDATA caclipdata;
+		CABSTR cabstr;
+		CABSTRBLOB cabstrblob;
+		CALPSTR calpstr;
+		CALPWSTR calpwstr;
+		CAPROPVARIANT capropvar;
+	} DUMMYUNIONNAME;
+} PROPVARIANT;
+typedef struct tagPROPSPEC {
+	ULONG ulKind;
+	_ANONYMOUS_UNION union {
+		PROPID propid;
+		LPOLESTR lpwstr;
+	} DUMMYUNIONNAME;
+}PROPSPEC;
+typedef struct  tagSTATPROPSTG {
+	LPOLESTR lpwstrName;
+	PROPID propid;
+	VARTYPE vt;
+} STATPROPSTG;
+typedef enum PROPSETFLAG {
+	PROPSETFLAG_DEFAULT,PROPSETFLAG_NONSIMPLE,PROPSETFLAG_ANSI,
+	PROPSETFLAG_UNBUFFERED=4
+} PROPSETFLAG;
+typedef struct tagSTORAGELAYOUT {
+	DWORD LayoutType;
+	OLECHAR* pwcsElementName;
+	LARGE_INTEGER cOffset;
+	LARGE_INTEGER cBytes;
+} STORAGELAYOUT;
+typedef struct tagSOLE_AUTHENTICATION_SERVICE {
+    DWORD dwAuthnSvc;
+    DWORD dwAuthzSvc;
+    OLECHAR *pPrincipalName;
+    HRESULT hr;
+} SOLE_AUTHENTICATION_SERVICE;
+#define COLE_DEFAULT_PRINCIPAL ( ( OLECHAR* )-1 )
+typedef enum tagEOLE_AUTHENTICATION_CAPABILITIES {
+	EOAC_NONE = 0,
+	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;
+typedef struct tagSOLE_AUTHENTICATION_INFO {
+    DWORD dwAuthnSvc;
+    DWORD dwAuthzSvc;
+    void* pAuthInfo;
+} SOLE_AUTHENTICATION_INFO;
+#define COLE_DEFAULT_AUTHINFO ( ( void* )-1 )
+typedef struct tagSOLE_AUTHENTICATION_LIST {
+    DWORD cAuthInfo;
+    SOLE_AUTHENTICATION_INFO* aAuthInfo;
+} SOLE_AUTHENTICATION_LIST;
+
+EXTERN_C const FMTID FMTID_SummaryInformation;
+EXTERN_C const FMTID FMTID_DocSummaryInformation;
+EXTERN_C const FMTID FMTID_UserDefinedProperties;
+
+DECLARE_ENUMERATOR(FORMATETC);
+DECLARE_ENUMERATOR(HLITEM);
+DECLARE_ENUMERATOR(STATDATA);
+DECLARE_ENUMERATOR(STATPROPSETSTG);
+DECLARE_ENUMERATOR(STATPROPSTG);
+DECLARE_ENUMERATOR(STATSTG);
+DECLARE_ENUMERATOR_(IEnumString,LPOLESTR);
+DECLARE_ENUMERATOR_(IEnumMoniker,_COM_interface IMoniker*);
+DECLARE_ENUMERATOR_(IEnumUnknown,IUnknown*);
+
+EXTERN_C const IID IID_ISequentialStream;
+#define INTERFACE ISequentialStream
+DECLARE_INTERFACE_(ISequentialStream,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(Read)(THIS_ void*,ULONG,ULONG*) PURE;
+	STDMETHOD(Write)(THIS_ void const*,ULONG,ULONG*) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IStream;
+#define INTERFACE IStream
+DECLARE_INTERFACE_(IStream,ISequentialStream)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(Read)(THIS_ void*,ULONG,ULONG*) PURE;
+	STDMETHOD(Write)(THIS_ void const*,ULONG,ULONG*) PURE;
+	STDMETHOD(Seek)(THIS_ LARGE_INTEGER,DWORD,ULARGE_INTEGER*) PURE;
+	STDMETHOD(SetSize)(THIS_ ULARGE_INTEGER) PURE;
+	STDMETHOD(CopyTo)(THIS_ IStream*,ULARGE_INTEGER,ULARGE_INTEGER*,ULARGE_INTEGER*) PURE;
+	STDMETHOD(Commit)(THIS_ DWORD) PURE;
+	STDMETHOD(Revert)(THIS) PURE;
+	STDMETHOD(LockRegion)(THIS_ ULARGE_INTEGER,ULARGE_INTEGER,DWORD) PURE;
+	STDMETHOD(UnlockRegion)(THIS_ ULARGE_INTEGER,ULARGE_INTEGER,DWORD) PURE;
+	STDMETHOD(Stat)(THIS_ STATSTG*,DWORD) PURE;
+	STDMETHOD(Clone)(THIS_ LPSTREAM*) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IMarshal;
+#define INTERFACE IMarshal
+DECLARE_INTERFACE_(IMarshal,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetUnmarshalClass) (THIS_ REFIID,PVOID,DWORD,PVOID,DWORD,CLSID*) PURE;
+	STDMETHOD(GetMarshalSizeMax) (THIS_ REFIID,PVOID,DWORD,PVOID,PDWORD,ULONG*) PURE;
+	STDMETHOD(MarshalInterface) (THIS_ IStream*,REFIID,PVOID,DWORD,PVOID,DWORD) PURE;
+	STDMETHOD(UnmarshalInterface) (THIS_ IStream*,REFIID,void**) PURE;
+	STDMETHOD(ReleaseMarshalData) (THIS_ IStream*) PURE;
+	STDMETHOD(DisconnectObject) (THIS_ DWORD) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IStdMarshalInfo;
+#define INTERFACE IStdMarshalInfo
+DECLARE_INTERFACE_(IStdMarshalInfo,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetClassForHandler)(THIS_ DWORD,PVOID,CLSID*) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IMalloc;
+#define INTERFACE IMalloc
+DECLARE_INTERFACE_(IMalloc,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD_(void*,Alloc)(THIS_ ULONG) PURE;
+	STDMETHOD_(void*,Realloc)(THIS_ void*,ULONG) PURE;
+	STDMETHOD_(void,Free)(THIS_ void*) PURE;
+	STDMETHOD_(ULONG,GetSize)(THIS_ void*) PURE;
+	STDMETHOD_(int,DidAlloc)(THIS_ void*) PURE;
+	STDMETHOD_(void,HeapMinimize)(THIS) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IMallocSpy;
+#define INTERFACE IMallocSpy
+DECLARE_INTERFACE_(IMallocSpy,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD_(ULONG,PreAlloc)(THIS_ ULONG) PURE;
+	STDMETHOD_(void*,PostAlloc)(THIS_ void*) PURE;
+	STDMETHOD_(void*,PreFree)(THIS_ void*,BOOL) PURE;
+	STDMETHOD_(void,PostFree)(THIS_ BOOL) PURE;
+	STDMETHOD_(ULONG,PreRealloc)(THIS_ void*,ULONG,void**,BOOL) PURE;
+	STDMETHOD_(void*,PostRealloc)(THIS_ void*,BOOL) PURE;
+	STDMETHOD_(void*,PreGetSize)(THIS_ void*,BOOL) PURE;
+	STDMETHOD_(ULONG,PostGetSize)(THIS_ ULONG,BOOL) PURE;
+	STDMETHOD_(void*,PreDidAlloc)(THIS_ void*,BOOL) PURE;
+	STDMETHOD_(int,PostDidAlloc)(THIS_ void*,BOOL,int) PURE;
+	STDMETHOD_(void,PreHeapMinimize)(THIS) PURE;
+	STDMETHOD_(void,PostHeapMinimize)(THIS) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IMessageFilter;
+#define INTERFACE IMessageFilter
+DECLARE_INTERFACE_(IMessageFilter,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD_(DWORD,HandleInComingCall)(THIS_ DWORD,HTASK,DWORD,LPINTERFACEINFO) PURE;
+	STDMETHOD_(DWORD,RetryRejectedCall)(THIS_ HTASK,DWORD,DWORD) PURE;
+	STDMETHOD_(DWORD,MessagePending)(THIS_ HTASK,DWORD,DWORD) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IPersist;
+#define INTERFACE IPersist
+DECLARE_INTERFACE_(IPersist,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetClassID)(THIS_ CLSID*) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IPersistStream;
+#define INTERFACE IPersistStream
+DECLARE_INTERFACE_(IPersistStream,IPersist)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetClassID)(THIS_ LPCLSID) PURE;
+	STDMETHOD(IsDirty)(THIS) PURE;
+	STDMETHOD(Load)(THIS_ IStream*) PURE;
+	STDMETHOD(Save)(THIS_ IStream*,BOOL) PURE;
+	STDMETHOD(GetSizeMax)(THIS_ PULARGE_INTEGER) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IRunningObjectTable;
+#define INTERFACE IRunningObjectTable
+DECLARE_INTERFACE_(IRunningObjectTable,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(Register)(THIS_ DWORD,LPUNKNOWN,LPMONIKER,PDWORD) PURE;
+	STDMETHOD(Revoke)(THIS_ DWORD) PURE;
+	STDMETHOD(IsRunning)(THIS_ LPMONIKER) PURE;
+	STDMETHOD(GetObject)(THIS_ LPMONIKER,LPUNKNOWN*) PURE;
+	STDMETHOD(NoteChangeTime)(THIS_ DWORD,LPFILETIME) PURE;
+	STDMETHOD(GetTimeOfLastChange)(THIS_ LPMONIKER,LPFILETIME) PURE;
+	STDMETHOD(EnumRunning)(THIS_ IEnumMoniker**) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IBindCtx;
+#define INTERFACE IBindCtx
+DECLARE_INTERFACE_(IBindCtx,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(RegisterObjectBound)(THIS_ LPUNKNOWN) PURE;
+	STDMETHOD(RevokeObjectBound)(THIS_ LPUNKNOWN) PURE;
+	STDMETHOD(ReleaseBoundObjects)(THIS) PURE;
+	STDMETHOD(SetBindOptions)(THIS_ LPBIND_OPTS) PURE;
+	STDMETHOD(GetBindOptions)(THIS_ LPBIND_OPTS) PURE;
+	STDMETHOD(GetRunningObjectTable)(THIS_ IRunningObjectTable**) PURE;
+	STDMETHOD(RegisterObjectParam)(THIS_ LPOLESTR,IUnknown*) PURE;
+	STDMETHOD(GetObjectParam)(THIS_ LPOLESTR,IUnknown**) PURE;
+	STDMETHOD(EnumObjectParam)(THIS_ IEnumString**) PURE;
+	STDMETHOD(RevokeObjectParam)(THIS_ LPOLESTR) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IMoniker;
+#define INTERFACE IMoniker
+DECLARE_INTERFACE_(IMoniker,IPersistStream)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetClassID)(THIS_ LPCLSID) PURE;
+	STDMETHOD(IsDirty)(THIS) PURE;
+	STDMETHOD(Load)(THIS_ IStream*) PURE;
+	STDMETHOD(Save)(THIS_ IStream*,BOOL) PURE;
+	STDMETHOD(GetSizeMax)(THIS_ PULARGE_INTEGER) PURE;
+	STDMETHOD(BindToObject)(THIS_ IBindCtx*,IMoniker*,REFIID,PVOID*) PURE;
+	STDMETHOD(BindToStorage)(THIS_ IBindCtx*,IMoniker*,REFIID,PVOID*) PURE;
+	STDMETHOD(Reduce)(THIS_ IBindCtx*,DWORD,IMoniker**,IMoniker**) PURE;
+	STDMETHOD(ComposeWith)(THIS_ IMoniker*,BOOL,IMoniker**) PURE;
+	STDMETHOD(Enum)(THIS_ BOOL,IEnumMoniker**) PURE;
+	STDMETHOD(IsEqual)(THIS_ IMoniker*) PURE;
+	STDMETHOD(Hash)(THIS_ PDWORD) PURE;
+	STDMETHOD(IsRunning)(THIS_ IBindCtx*,IMoniker*,IMoniker*) PURE;
+	STDMETHOD(GetTimeOfLastChange)(THIS_ IBindCtx*,IMoniker*,LPFILETIME) PURE;
+	STDMETHOD(Inverse)(THIS_ IMoniker**) PURE;
+	STDMETHOD(CommonPrefixWith)(THIS_ IMoniker*,IMoniker**) PURE;
+	STDMETHOD(RelativePathTo)(THIS_ IMoniker*,IMoniker**) PURE;
+	STDMETHOD(GetDisplayName)(THIS_ IBindCtx*,IMoniker*,LPOLESTR*) PURE;
+	STDMETHOD(ParseDisplayName)(THIS_ IBindCtx*,IMoniker*,LPOLESTR,ULONG*,IMoniker**) PURE;
+	STDMETHOD(IsSystemMoniker)(THIS_ PDWORD) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IPersistStorage;
+#define INTERFACE IPersistStorage
+DECLARE_INTERFACE_(IPersistStorage,IPersist)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetClassID)(THIS_ CLSID*) PURE;
+	STDMETHOD(IsDirty)(THIS) PURE;
+	STDMETHOD(InitNew)(THIS_ LPSTORAGE) PURE;
+	STDMETHOD(Load)(THIS_ LPSTORAGE) PURE;
+	STDMETHOD(Save)(THIS_ LPSTORAGE,BOOL) PURE;
+	STDMETHOD(SaveCompleted)(THIS_ LPSTORAGE) PURE;
+	STDMETHOD(HandsOffStorage)(THIS) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IPersistFile;
+#define INTERFACE IPersistFile
+DECLARE_INTERFACE_(IPersistFile,IPersist)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetClassID)(THIS_ CLSID*) PURE;
+	STDMETHOD(IsDirty)(THIS) PURE;
+	STDMETHOD(Load)(THIS_ LPCOLESTR,DWORD) PURE;
+	STDMETHOD(Save)(THIS_ LPCOLESTR,BOOL) PURE;
+	STDMETHOD(SaveCompleted)(THIS_ LPCOLESTR) PURE;
+	STDMETHOD(GetCurFile)(THIS_ LPOLESTR*) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IAdviseSink;
+#define INTERFACE IAdviseSink
+DECLARE_INTERFACE_(IAdviseSink,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD_(void,OnDataChange)(THIS_ FORMATETC*,STGMEDIUM*) PURE;
+	STDMETHOD_(void,OnViewChange)(THIS_ DWORD,LONG) PURE;
+	STDMETHOD_(void,OnRename)(THIS_ IMoniker*) PURE;
+	STDMETHOD_(void,OnSave)(THIS) PURE;
+	STDMETHOD_(void,OnClose)(THIS) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IAdviseSink2;
+#define INTERFACE IAdviseSink2
+DECLARE_INTERFACE_(IAdviseSink2,IAdviseSink)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD_(void,OnDataChange)(THIS_ FORMATETC*,STGMEDIUM*) PURE;
+	STDMETHOD_(void,OnViewChange)(THIS_ DWORD,LONG) PURE;
+	STDMETHOD_(void,OnRename)(THIS_ IMoniker*) PURE;
+	STDMETHOD_(void,OnSave)(THIS) PURE;
+	STDMETHOD_(void,OnClose)(THIS) PURE;
+	STDMETHOD_(void,OnLinkSrcChange)(THIS_ IMoniker*);
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IDataObject;
+#define INTERFACE IDataObject
+DECLARE_INTERFACE_(IDataObject,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetData)(THIS_ FORMATETC*,STGMEDIUM*) PURE;
+	STDMETHOD(GetDataHere)(THIS_ FORMATETC*,STGMEDIUM*) PURE;
+	STDMETHOD(QueryGetData)(THIS_ FORMATETC*) PURE;
+	STDMETHOD(GetCanonicalFormatEtc)(THIS_ FORMATETC*,FORMATETC*) PURE;
+	STDMETHOD(SetData)(THIS_ FORMATETC*,STGMEDIUM*,BOOL) PURE;
+	STDMETHOD(EnumFormatEtc)(THIS_ DWORD,IEnumFORMATETC**) PURE;
+	STDMETHOD(DAdvise)(THIS_ FORMATETC*,DWORD,IAdviseSink*,PDWORD) PURE;
+	STDMETHOD(DUnadvise)(THIS_ DWORD) PURE;
+	STDMETHOD(EnumDAdvise)(THIS_ IEnumSTATDATA**) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IDataAdviseHolder;
+#define INTERFACE IDataAdviseHolder
+DECLARE_INTERFACE_(IDataAdviseHolder,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(Advise)(THIS_ IDataObject*,FORMATETC*,DWORD,IAdviseSink*,PDWORD) PURE;
+	STDMETHOD(Unadvise)(THIS_ DWORD) PURE;
+	STDMETHOD(EnumAdvise)(THIS_ IEnumSTATDATA**) PURE;
+	STDMETHOD(SendOnDataChange)(THIS_ IDataObject*,DWORD,DWORD) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IStorage;
+#define INTERFACE IStorage
+DECLARE_INTERFACE_(IStorage,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(CreateStream)(THIS_ LPCWSTR,DWORD,DWORD,DWORD,IStream**) PURE;
+	STDMETHOD(OpenStream)(THIS_ LPCWSTR,PVOID,DWORD,DWORD,IStream**) PURE;
+	STDMETHOD(CreateStorage)(THIS_ LPCWSTR,DWORD,DWORD,DWORD,IStorage**) PURE;
+	STDMETHOD(OpenStorage)(THIS_ LPCWSTR,IStorage*,DWORD,SNB,DWORD,IStorage**) PURE;
+	STDMETHOD(CopyTo)(THIS_ DWORD,IID const*,SNB,IStorage*) PURE;
+	STDMETHOD(MoveElementTo)(THIS_ LPCWSTR,IStorage*,LPCWSTR,DWORD) PURE;
+	STDMETHOD(Commit)(THIS_ DWORD) PURE;
+	STDMETHOD(Revert)(THIS) PURE;
+	STDMETHOD(EnumElements)(THIS_ DWORD,PVOID,DWORD,IEnumSTATSTG**) PURE;
+	STDMETHOD(DestroyElement)(THIS_ LPCWSTR) PURE;
+	STDMETHOD(RenameElement)(THIS_ LPCWSTR,LPCWSTR) PURE;
+	STDMETHOD(SetElementTimes)(THIS_ LPCWSTR,FILETIME const*,FILETIME const*,FILETIME const*) PURE;
+	STDMETHOD(SetClass)(THIS_ REFCLSID) PURE;
+	STDMETHOD(SetStateBits)(THIS_ DWORD,DWORD) PURE;
+	STDMETHOD(Stat)(THIS_ STATSTG*,DWORD) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IRootStorage;
+#define INTERFACE IRootStorage
+DECLARE_INTERFACE_(IRootStorage,IPersist)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(SwitchToFile)(THIS_ LPOLESTR) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IRpcChannelBuffer;
+#define INTERFACE IRpcChannelBuffer
+DECLARE_INTERFACE_(IRpcChannelBuffer,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetBuffer)(THIS_ RPCOLEMESSAGE*,REFIID) PURE;
+	STDMETHOD(SendReceive)(THIS_ RPCOLEMESSAGE*,PULONG) PURE;
+	STDMETHOD(FreeBuffer)(THIS_ RPCOLEMESSAGE*) PURE;
+	STDMETHOD(GetDestCtx)(THIS_ PDWORD,PVOID*) PURE;
+	STDMETHOD(IsConnected)(THIS) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IRpcProxyBuffer;
+#define INTERFACE IRpcProxyBuffer
+DECLARE_INTERFACE_(IRpcProxyBuffer,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(Connect)(THIS_ IRpcChannelBuffer*) PURE;
+	STDMETHOD_(void,Disconnect)(THIS) PURE;
+
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IRpcStubBuffer;
+#define INTERFACE IRpcStubBuffer
+DECLARE_INTERFACE_(IRpcStubBuffer,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(Connect)(THIS_ LPUNKNOWN) PURE;
+	STDMETHOD_(void,Disconnect)(THIS) PURE;
+	STDMETHOD(Invoke)(THIS_ RPCOLEMESSAGE*,LPRPCSTUBBUFFER) PURE;
+	STDMETHOD_(LPRPCSTUBBUFFER,IsIIDSupported)(THIS_ REFIID) PURE;
+	STDMETHOD_(ULONG,CountRefs)(THIS) PURE;
+	STDMETHOD(DebugServerQueryInterface)(THIS_ PVOID*) PURE;
+	STDMETHOD(DebugServerRelease)(THIS_ PVOID) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IPSFactoryBuffer;
+#define INTERFACE IPSFactoryBuffer
+DECLARE_INTERFACE_(IPSFactoryBuffer,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(CreateProxy)(THIS_ LPUNKNOWN,REFIID,LPRPCPROXYBUFFER*,PVOID*) PURE;
+	STDMETHOD(CreateStub)(THIS_ REFIID,LPUNKNOWN,LPRPCSTUBBUFFER*) PURE;
+};
+#undef INTERFACE
+typedef _COM_interface IPSFactoryBuffer *LPPSFACTORYBUFFER;
+
+EXTERN_C const IID IID_ILockBytes;
+#define INTERFACE ILockBytes
+DECLARE_INTERFACE_(ILockBytes,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(ReadAt)(THIS_ ULARGE_INTEGER,PVOID,ULONG,ULONG*) PURE;
+	STDMETHOD(WriteAt)(THIS_ ULARGE_INTEGER,PCVOID,ULONG,ULONG*) PURE;
+	STDMETHOD(Flush)(THIS) PURE;
+	STDMETHOD(SetSize)(THIS_ ULARGE_INTEGER) PURE;
+	STDMETHOD(LockRegion)(THIS_ ULARGE_INTEGER,ULARGE_INTEGER,DWORD) PURE;
+	STDMETHOD(UnlockRegion)(THIS_ ULARGE_INTEGER,ULARGE_INTEGER,DWORD) PURE;
+	STDMETHOD(Stat)(THIS_ STATSTG*,DWORD) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IExternalConnection;
+#define INTERFACE IExternalConnection
+DECLARE_INTERFACE_(IExternalConnection,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD_(DWORD,AddConnection)(THIS_ DWORD,DWORD) PURE;
+	STDMETHOD_(DWORD,ReleaseConnection)(THIS_ DWORD,DWORD,BOOL) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IRunnableObject;
+#define INTERFACE IRunnableObject
+DECLARE_INTERFACE_(IRunnableObject,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetRunningClass)(THIS_ LPCLSID) PURE;
+	STDMETHOD(Run)(THIS_ LPBC) PURE;
+	STDMETHOD_(BOOL,IsRunning)(THIS) PURE;
+	STDMETHOD(LockRunning)(THIS_ BOOL,BOOL) PURE;
+	STDMETHOD(SetContainedObject)(THIS_ BOOL) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IROTData;
+#define INTERFACE IROTData
+DECLARE_INTERFACE_(IROTData,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetComparisonData)(THIS_ PVOID,ULONG,PULONG) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IChannelHook;
+#define INTERFACE IChannelHook
+DECLARE_INTERFACE_(IChannelHook,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD_(void,ClientGetSize)(THIS_ REFGUID,REFIID,PULONG) PURE;
+	STDMETHOD_(void,ClientFillBuffer)(THIS_ REFGUID,REFIID,PULONG,PVOID) PURE;
+	STDMETHOD_(void,ClientNotify)(THIS_ REFGUID,REFIID,ULONG,PVOID,DWORD,HRESULT) PURE;
+	STDMETHOD_(void,ServerNotify)(THIS_ REFGUID,REFIID,ULONG,PVOID,DWORD) PURE;
+	STDMETHOD_(void,ServerGetSize)(THIS_ REFGUID,REFIID,HRESULT,PULONG) PURE;
+	STDMETHOD_(void,ServerFillBuffer)(THIS_ REFGUID,REFIID,PULONG,PVOID,HRESULT) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IPropertyStorage;
+#define INTERFACE IPropertyStorage
+DECLARE_INTERFACE_(IPropertyStorage,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(ReadMultiple)(THIS_ ULONG,PROPSPEC const*,PROPVARIANT*) PURE;
+	STDMETHOD(WriteMultiple)(THIS_ ULONG,PROPSPEC const*,PROPVARIANT*,PROPID) PURE;
+	STDMETHOD(DeleteMultiple)(THIS_ ULONG,PROPSPEC const*) PURE;
+	STDMETHOD(ReadPropertyNames)(THIS_ ULONG,PROPID const*,LPWSTR*) PURE;
+	STDMETHOD(WritePropertyNames)(THIS_ ULONG,PROPID const*,LPWSTR const*) PURE;
+	STDMETHOD(DeletePropertyNames)(THIS_ ULONG,PROPID const*) PURE;
+	STDMETHOD(SetClass)(THIS_ REFCLSID) PURE;
+	STDMETHOD(Commit)(THIS_ DWORD) PURE;
+	STDMETHOD(Revert)(THIS) PURE;
+	STDMETHOD(Enum)(THIS_ IEnumSTATPROPSTG**) PURE;
+	STDMETHOD(Stat)(THIS_ STATPROPSTG*) PURE;
+	STDMETHOD(SetTimes)(THIS_ FILETIME const*,FILETIME const*,FILETIME const*) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IPropertySetStorage;
+#define INTERFACE IPropertySetStorage
+DECLARE_INTERFACE_(IPropertySetStorage,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(Create)(THIS_ REFFMTID,CLSID*,DWORD,DWORD,LPPROPERTYSTORAGE*) PURE;
+	STDMETHOD(Open)(THIS_ REFFMTID,DWORD,LPPROPERTYSTORAGE*) PURE;
+	STDMETHOD(Delete)(THIS_ REFFMTID) PURE;
+	STDMETHOD(Enum)(THIS_ IEnumSTATPROPSETSTG**) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IClientSecurity;
+#define INTERFACE IClientSecurity
+DECLARE_INTERFACE_(IClientSecurity,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(QueryBlanket)(THIS_ PVOID,PDWORD,PDWORD,OLECHAR**,PDWORD,PDWORD,RPC_AUTH_IDENTITY_HANDLE**,PDWORD*) PURE;
+	STDMETHOD(SetBlanket)(THIS_ PVOID,DWORD,DWORD,LPWSTR,DWORD,DWORD,RPC_AUTH_IDENTITY_HANDLE*,DWORD) PURE;
+	STDMETHOD(CopyProxy)(THIS_ LPUNKNOWN,LPUNKNOWN*) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IServerSecurity;
+#define INTERFACE IServerSecurity
+DECLARE_INTERFACE_(IServerSecurity,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(QueryBlanket)(THIS_ PDWORD,PDWORD,OLECHAR**,PDWORD,PDWORD,RPC_AUTHZ_HANDLE*,PDWORD*) PURE;
+	STDMETHOD(ImpersonateClient)(THIS) PURE;
+	STDMETHOD(RevertToSelf)(THIS) PURE;
+	STDMETHOD(IsImpersonating)(THIS) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IClassActivator;
+#define INTERFACE IClassActivator
+DECLARE_INTERFACE_(IClassActivator,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetClassObject)(THIS_ REFCLSID,DWORD,LCID,REFIID,PVOID*) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IFillLockBytes;
+#define INTERFACE IFillLockBytes
+DECLARE_INTERFACE_(IFillLockBytes,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(FillAppend)(THIS_ void const*,ULONG,PULONG) PURE;
+	STDMETHOD(FillAt)(THIS_ ULARGE_INTEGER,void const*,ULONG,PULONG) PURE;
+	STDMETHOD(SetFillSize)(THIS_ ULARGE_INTEGER) PURE;
+	STDMETHOD(Terminate)(THIS_ BOOL) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IProgressNotify;
+#define INTERFACE IProgressNotify
+DECLARE_INTERFACE_(IProgressNotify,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(OnProgress)(THIS_ DWORD,DWORD,BOOL,BOOL) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_ILayoutStorage;
+#define INTERFACE ILayoutStorage
+DECLARE_INTERFACE_(ILayoutStorage,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(LayoutScript)(THIS_ STORAGELAYOUT*,DWORD,DWORD) PURE;
+	STDMETHOD(BeginMonitor)(THIS) PURE;
+	STDMETHOD(EndMonitor)(THIS) PURE;
+	STDMETHOD(ReLayoutDocfile)(THIS_ OLECHAR*) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IGlobalInterfaceTable;
+#define INTERFACE IGlobalInterfaceTable
+DECLARE_INTERFACE_(IGlobalInterfaceTable,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(RegisterInterfaceInGlobal)(THIS_ IUnknown*,REFIID,DWORD*) PURE;
+	STDMETHOD(RevokeInterfaceFromGlobal)(THIS_ DWORD) PURE;
+	STDMETHOD(GetInterfaceFromGlobal)(THIS_ DWORD,REFIID,void**) PURE;
+};
+#undef INTERFACE
+
+#ifdef COBJMACROS
+#define IGlobalInterfaceTable_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
+#define IGlobalInterfaceTable_AddRef(T) (T)->lpVtbl->AddRef(T)
+#define IGlobalInterfaceTable_Release(T) (T)->lpVtbl->Release(T)
+#define IGlobalInterfaceTable_RegisterInterfaceInGlobal(T,a,b,c) (T)->lpVtbl->RegisterInterfaceInGlobal(T,a,b,c)
+#define IGlobalInterfaceTable_RevokeInterfaceFromGlobal(T,a) (T)->lpVtbl->RevokeInterfaceFromGlobal(T,a)
+#define IGlobalInterfaceTable_GetInterfaceFromGlobal(T,a,b,c) (T)->lpVtbl->GetInterfaceFromGlobal(T,a,b,c)
+#endif
+
+HRESULT STDMETHODCALLTYPE IMarshal_GetUnmarshalClass_Proxy(IMarshal*,REFIID,void*,DWORD,void*,DWORD,CLSID*);
+void STDMETHODCALLTYPE IMarshal_GetUnmarshalClass_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IMarshal_GetMarshalSizeMax_Proxy(IMarshal*,REFIID,void*,DWORD,void*,DWORD,DWORD*);
+void STDMETHODCALLTYPE IMarshal_GetMarshalSizeMax_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IMarshal_MarshalInterface_Proxy(IMarshal*,IStream*,REFIID,void*,DWORD,void*,DWORD);
+void STDMETHODCALLTYPE IMarshal_MarshalInterface_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IMarshal_UnmarshalInterface_Proxy(IMarshal*,IStream*,REFIID,void**);
+void STDMETHODCALLTYPE IMarshal_UnmarshalInterface_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IMarshal_ReleaseMarshalData_Proxy(IMarshal*,IStream*);
+void STDMETHODCALLTYPE IMarshal_ReleaseMarshalData_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IMarshal_DisconnectObject_Proxy(IMarshal*,DWORD);
+void STDMETHODCALLTYPE IMarshal_DisconnectObject_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+void* STDMETHODCALLTYPE IMalloc_Alloc_Proxy(IMalloc*,ULONG);
+void STDMETHODCALLTYPE IMalloc_Alloc_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+void* STDMETHODCALLTYPE IMalloc_Realloc_Proxy(IMalloc*,void*,ULONG);
+void STDMETHODCALLTYPE IMalloc_Realloc_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+void STDMETHODCALLTYPE IMalloc_Free_Proxy(IMalloc*,void*);
+void STDMETHODCALLTYPE IMalloc_Free_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+ULONG STDMETHODCALLTYPE IMalloc_GetSize_Proxy(IMalloc*,void*);
+void STDMETHODCALLTYPE IMalloc_GetSize_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+int STDMETHODCALLTYPE IMalloc_DidAlloc_Proxy(IMalloc*,void*);
+void STDMETHODCALLTYPE IMalloc_DidAlloc_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+void STDMETHODCALLTYPE IMalloc_HeapMinimize_Proxy(IMalloc*);
+void STDMETHODCALLTYPE IMalloc_HeapMinimize_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+ULONG STDMETHODCALLTYPE IMallocSpy_PreAlloc_Proxy(IMallocSpy*,ULONG cbRequest);
+void STDMETHODCALLTYPE IMallocSpy_PreAlloc_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+void* STDMETHODCALLTYPE IMallocSpy_PostAlloc_Proxy(IMallocSpy*,void*);
+void STDMETHODCALLTYPE IMallocSpy_PostAlloc_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+void* STDMETHODCALLTYPE IMallocSpy_PreFree_Proxy(IMallocSpy*,void*,BOOL);
+void STDMETHODCALLTYPE IMallocSpy_PreFree_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+void STDMETHODCALLTYPE IMallocSpy_PostFree_Proxy(IMallocSpy*,BOOL);
+void STDMETHODCALLTYPE IMallocSpy_PostFree_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+ULONG STDMETHODCALLTYPE IMallocSpy_PreRealloc_Proxy(IMallocSpy*,void*,ULONG,void**,BOOL);
+void STDMETHODCALLTYPE IMallocSpy_PreRealloc_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+void* STDMETHODCALLTYPE IMallocSpy_PostRealloc_Proxy(IMallocSpy*,void*,BOOL);
+void STDMETHODCALLTYPE IMallocSpy_PostRealloc_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+void* STDMETHODCALLTYPE IMallocSpy_PreGetSize_Proxy(IMallocSpy*,void*,BOOL);
+void STDMETHODCALLTYPE IMallocSpy_PreGetSize_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+ULONG STDMETHODCALLTYPE IMallocSpy_PostGetSize_Proxy(IMallocSpy*,ULONG,BOOL);
+void STDMETHODCALLTYPE IMallocSpy_PostGetSize_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+void* STDMETHODCALLTYPE IMallocSpy_PreDidAlloc_Proxy(IMallocSpy*,void*,BOOL);
+void STDMETHODCALLTYPE IMallocSpy_PreDidAlloc_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+int STDMETHODCALLTYPE IMallocSpy_PostDidAlloc_Proxy(IMallocSpy*,void*,BOOL,int);
+void STDMETHODCALLTYPE IMallocSpy_PostDidAlloc_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+void STDMETHODCALLTYPE IMallocSpy_PreHeapMinimize_Proxy(IMallocSpy* );
+void STDMETHODCALLTYPE IMallocSpy_PreHeapMinimize_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+void STDMETHODCALLTYPE IMallocSpy_PostHeapMinimize_Proxy(IMallocSpy*);
+void STDMETHODCALLTYPE IMallocSpy_PostHeapMinimize_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IStdMarshalInfo_GetClassForHandler_Proxy(IStdMarshalInfo*,DWORD,void*,CLSID*);
+void STDMETHODCALLTYPE IStdMarshalInfo_GetClassForHandler_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+DWORD STDMETHODCALLTYPE IExternalConnection_AddConnection_Proxy(IExternalConnection*,DWORD,DWORD);
+void STDMETHODCALLTYPE IExternalConnection_AddConnection_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+DWORD STDMETHODCALLTYPE IExternalConnection_ReleaseConnection_Proxy(IExternalConnection*,DWORD,DWORD,BOOL);
+void STDMETHODCALLTYPE IExternalConnection_ReleaseConnection_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IEnumUnknown_RemoteNext_Proxy(IEnumUnknown*,ULONG,IUnknown**,ULONG*);
+void STDMETHODCALLTYPE IEnumUnknown_RemoteNext_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IEnumUnknown_Skip_Proxy(IEnumUnknown*,ULONG);
+void STDMETHODCALLTYPE IEnumUnknown_Skip_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IEnumUnknown_Reset_Proxy(IEnumUnknown* );
+void STDMETHODCALLTYPE IEnumUnknown_Reset_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IEnumUnknown_Clone_Proxy(IEnumUnknown*,IEnumUnknown**);
+void STDMETHODCALLTYPE IEnumUnknown_Clone_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IBindCtx_RegisterObjectBound_Proxy(IBindCtx*,IUnknown*punk);
+void STDMETHODCALLTYPE IBindCtx_RegisterObjectBound_Stub(IRpcStubBuffer*,IRpcChannelBuffer*_pRpcChannelBuffer,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IBindCtx_RevokeObjectBound_Proxy(IBindCtx*,IUnknown*punk);
+void STDMETHODCALLTYPE IBindCtx_RevokeObjectBound_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IBindCtx_ReleaseBoundObjects_Proxy(IBindCtx*);
+void STDMETHODCALLTYPE IBindCtx_ReleaseBoundObjects_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IBindCtx_SetBindOptions_Proxy(IBindCtx*,BIND_OPTS*);
+void STDMETHODCALLTYPE IBindCtx_SetBindOptions_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IBindCtx_GetBindOptions_Proxy(IBindCtx*,BIND_OPTS*pbindopts);
+void STDMETHODCALLTYPE IBindCtx_GetBindOptions_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IBindCtx_GetRunningObjectTable_Proxy(IBindCtx*,IRunningObjectTable**);
+void STDMETHODCALLTYPE IBindCtx_GetRunningObjectTable_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IBindCtx_RegisterObjectParam_Proxy(IBindCtx*,LPCSTR,IUnknown*);
+void STDMETHODCALLTYPE IBindCtx_RegisterObjectParam_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IBindCtx_GetObjectParam_Proxy(IBindCtx*,LPCSTR,IUnknown**);
+void STDMETHODCALLTYPE IBindCtx_GetObjectParam_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IBindCtx_EnumObjectParam_Proxy(IBindCtx*,IEnumString**);
+void STDMETHODCALLTYPE IBindCtx_EnumObjectParam_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IBindCtx_RevokeObjectParam_Proxy(IBindCtx*,LPCSTR);
+void STDMETHODCALLTYPE IBindCtx_RevokeObjectParam_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IEnumMoniker_RemoteNext_Proxy(IEnumMoniker*,ULONG,IMoniker**,ULONG*);
+void STDMETHODCALLTYPE IEnumMoniker_RemoteNext_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IEnumMoniker_Skip_Proxy(IEnumMoniker*,ULONG);
+void STDMETHODCALLTYPE IEnumMoniker_Skip_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IEnumMoniker_Reset_Proxy(IEnumMoniker*);
+void STDMETHODCALLTYPE IEnumMoniker_Reset_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IEnumMoniker_Clone_Proxy(IEnumMoniker*,IEnumMoniker**);
+void STDMETHODCALLTYPE IEnumMoniker_Clone_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IRunnableObject_GetRunningClass_Proxy(IRunnableObject*,LPCLSID);
+void STDMETHODCALLTYPE IRunnableObject_GetRunningClass_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IRunnableObject_Run_Proxy(IRunnableObject*,LPBINDCTX);
+void STDMETHODCALLTYPE IRunnableObject_Run_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+BOOL STDMETHODCALLTYPE IRunnableObject_IsRunning_Proxy(IRunnableObject*);
+void STDMETHODCALLTYPE IRunnableObject_IsRunning_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IRunnableObject_LockRunning_Proxy(IRunnableObject*,BOOL,BOOL);
+void STDMETHODCALLTYPE IRunnableObject_LockRunning_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IRunnableObject_SetContainedObject_Proxy(IRunnableObject*,BOOL);
+void STDMETHODCALLTYPE IRunnableObject_SetContainedObject_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IRunningObjectTable_Register_Proxy(IRunningObjectTable*,DWORD,IUnknown*,IMoniker*,DWORD*);
+void STDMETHODCALLTYPE IRunningObjectTable_Register_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IRunningObjectTable_Revoke_Proxy(IRunningObjectTable*,DWORD);
+void STDMETHODCALLTYPE IRunningObjectTable_Revoke_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IRunningObjectTable_IsRunning_Proxy(IRunningObjectTable*,IMoniker*);
+void STDMETHODCALLTYPE IRunningObjectTable_IsRunning_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IRunningObjectTable_GetObject_Proxy(IRunningObjectTable*,IMoniker*,IUnknown**);
+void STDMETHODCALLTYPE IRunningObjectTable_GetObject_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IRunningObjectTable_NoteChangeTime_Proxy(IRunningObjectTable*,DWORD,FILETIME*);
+void STDMETHODCALLTYPE IRunningObjectTable_NoteChangeTime_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IRunningObjectTable_GetTimeOfLastChange_Proxy(IRunningObjectTable*,IMoniker*,FILETIME*);
+void STDMETHODCALLTYPE IRunningObjectTable_GetTimeOfLastChange_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IRunningObjectTable_EnumRunning_Proxy(IRunningObjectTable*,IEnumMoniker**);
+void STDMETHODCALLTYPE IRunningObjectTable_EnumRunning_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IPersist_GetClassID_Proxy(IPersist*,CLSID*);
+void STDMETHODCALLTYPE IPersist_GetClassID_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IPersistStream_IsDirty_Proxy(IPersistStream*);
+void STDMETHODCALLTYPE IPersistStream_IsDirty_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IPersistStream_Load_Proxy(IPersistStream*,IStream*);
+void STDMETHODCALLTYPE IPersistStream_Load_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IPersistStream_Save_Proxy(IPersistStream*,IStream*,BOOL);
+void STDMETHODCALLTYPE IPersistStream_Save_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IPersistStream_GetSizeMax_Proxy(IPersistStream*,ULARGE_INTEGER*);
+void STDMETHODCALLTYPE IPersistStream_GetSizeMax_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IMoniker_RemoteBindToObject_Proxy(IMoniker*,IBindCtx*,IMoniker*,REFIID,IUnknown**);
+void STDMETHODCALLTYPE IMoniker_RemoteBindToObject_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IMoniker_RemoteBindToStorage_Proxy(IMoniker*,IBindCtx*,IMoniker*,REFIID,IUnknown**);
+void STDMETHODCALLTYPE IMoniker_RemoteBindToStorage_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IMoniker_Reduce_Proxy(IMoniker*,IBindCtx*,DWORD,IMoniker**,IMoniker**);
+void STDMETHODCALLTYPE IMoniker_Reduce_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IMoniker_ComposeWith_Proxy(IMoniker*,IMoniker*,BOOL,IMoniker**);
+void STDMETHODCALLTYPE IMoniker_ComposeWith_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IMoniker_Enum_Proxy(IMoniker*,BOOL,IEnumMoniker**);
+void STDMETHODCALLTYPE IMoniker_Enum_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IMoniker_IsEqual_Proxy(IMoniker*,IMoniker*);
+void STDMETHODCALLTYPE IMoniker_IsEqual_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IMoniker_Hash_Proxy(IMoniker*,DWORD*);
+void STDMETHODCALLTYPE IMoniker_Hash_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IMoniker_IsRunning_Proxy(IMoniker*,IBindCtx*,IMoniker*,IMoniker*);
+void STDMETHODCALLTYPE IMoniker_IsRunning_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IMoniker_GetTimeOfLastChange_Proxy(IMoniker*,IBindCtx*,IMoniker*,FILETIME*);
+void STDMETHODCALLTYPE IMoniker_GetTimeOfLastChange_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IMoniker_Inverse_Proxy(IMoniker*,IMoniker**);
+void STDMETHODCALLTYPE IMoniker_Inverse_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IMoniker_CommonPrefixWith_Proxy(IMoniker*,IMoniker*,IMoniker**);
+void STDMETHODCALLTYPE IMoniker_CommonPrefixWith_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IMoniker_RelativePathTo_Proxy(IMoniker*,IMoniker*,IMoniker**);
+void STDMETHODCALLTYPE IMoniker_RelativePathTo_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IMoniker_GetDisplayName_Proxy(IMoniker*,IBindCtx*,IMoniker*,LPCSTR*);
+void STDMETHODCALLTYPE IMoniker_GetDisplayName_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IMoniker_ParseDisplayName_Proxy(IMoniker*,IBindCtx*,IMoniker*,LPCSTR,ULONG*,IMoniker**);
+void STDMETHODCALLTYPE IMoniker_ParseDisplayName_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IMoniker_IsSystemMoniker_Proxy(IMoniker*,DWORD*);
+void STDMETHODCALLTYPE IMoniker_IsSystemMoniker_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IROTData_GetComparisonData_Proxy(IROTData*,BYTE*,ULONG cbMax,ULONG*);
+void STDMETHODCALLTYPE IROTData_GetComparisonData_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IEnumString_RemoteNext_Proxy(IEnumString*,ULONG,LPCSTR*rgelt,ULONG*);
+void STDMETHODCALLTYPE IEnumString_RemoteNext_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IEnumString_Skip_Proxy(IEnumString*,ULONG);
+void STDMETHODCALLTYPE IEnumString_Skip_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IEnumString_Reset_Proxy(IEnumString*);
+void STDMETHODCALLTYPE IEnumString_Reset_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IEnumString_Clone_Proxy(IEnumString*,IEnumString**);
+void STDMETHODCALLTYPE IEnumString_Clone_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IStream_RemoteRead_Proxy(IStream*,BYTE*,ULONG,ULONG*);
+void STDMETHODCALLTYPE IStream_RemoteRead_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IStream_RemoteWrite_Proxy(IStream*,BYTE*pv,ULONG,ULONG*);
+void STDMETHODCALLTYPE IStream_RemoteWrite_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IStream_RemoteSeek_Proxy(IStream*,LARGE_INTEGER,DWORD,ULARGE_INTEGER*);
+void STDMETHODCALLTYPE IStream_RemoteSeek_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IStream_SetSize_Proxy(IStream*,ULARGE_INTEGER);
+void STDMETHODCALLTYPE IStream_SetSize_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IStream_RemoteCopyTo_Proxy(IStream*,IStream*,ULARGE_INTEGER,ULARGE_INTEGER*,ULARGE_INTEGER*);
+void STDMETHODCALLTYPE IStream_RemoteCopyTo_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IStream_Commit_Proxy(IStream*,DWORD);
+void STDMETHODCALLTYPE IStream_Commit_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IStream_Revert_Proxy(IStream*);
+void STDMETHODCALLTYPE IStream_Revert_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IStream_LockRegion_Proxy(IStream*,ULARGE_INTEGER,ULARGE_INTEGER,DWORD);
+void STDMETHODCALLTYPE IStream_LockRegion_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IStream_UnlockRegion_Proxy(IStream*,ULARGE_INTEGER,ULARGE_INTEGER,DWORD);
+void STDMETHODCALLTYPE IStream_UnlockRegion_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IStream_Stat_Proxy(IStream*,STATSTG*,DWORD);
+void STDMETHODCALLTYPE IStream_Stat_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IStream_Clone_Proxy(IStream*,IStream**);
+void STDMETHODCALLTYPE IStream_Clone_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IEnumSTATSTG_RemoteNext_Proxy(IEnumSTATSTG*,ULONG,STATSTG*,ULONG*);
+void STDMETHODCALLTYPE IEnumSTATSTG_RemoteNext_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IEnumSTATSTG_Skip_Proxy(IEnumSTATSTG*,ULONG celt);
+void STDMETHODCALLTYPE IEnumSTATSTG_Skip_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IEnumSTATSTG_Reset_Proxy(IEnumSTATSTG*);
+void STDMETHODCALLTYPE IEnumSTATSTG_Reset_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IEnumSTATSTG_Clone_Proxy(IEnumSTATSTG*,IEnumSTATSTG**);
+void STDMETHODCALLTYPE IEnumSTATSTG_Clone_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IStorage_CreateStream_Proxy(IStorage*,OLECHAR*,DWORD,DWORD,DWORD,IStream**);
+void STDMETHODCALLTYPE IStorage_CreateStream_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IStorage_RemoteOpenStream_Proxy(IStorage*,const OLECHAR*,unsigned long,BYTE*,DWORD,DWORD,IStream**);
+void STDMETHODCALLTYPE IStorage_RemoteOpenStream_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IStorage_CreateStorage_Proxy(IStorage*,OLECHAR*,DWORD,DWORD,DWORD,IStorage**);
+void STDMETHODCALLTYPE IStorage_CreateStorage_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IStorage_OpenStorage_Proxy(IStorage*,OLECHAR*,IStorage*,DWORD,SNB,DWORD,IStorage**);
+void STDMETHODCALLTYPE IStorage_OpenStorage_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IStorage_CopyTo_Proxy(IStorage*,DWORD,const IID*,SNB,IStorage*);
+void STDMETHODCALLTYPE IStorage_CopyTo_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IStorage_MoveElementTo_Proxy(IStorage*,const OLECHAR*,IStorage*,const OLECHAR*,DWORD);
+void STDMETHODCALLTYPE IStorage_MoveElementTo_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IStorage_Commit_Proxy(IStorage*,DWORD);
+void STDMETHODCALLTYPE IStorage_Commit_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IStorage_Revert_Proxy(IStorage*);
+void STDMETHODCALLTYPE IStorage_Revert_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IStorage_RemoteEnumElements_Proxy(IStorage*,DWORD,unsigned long,BYTE*,DWORD,IEnumSTATSTG**);
+void STDMETHODCALLTYPE IStorage_RemoteEnumElements_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IStorage_DestroyElement_Proxy(IStorage*,OLECHAR*);
+void STDMETHODCALLTYPE IStorage_DestroyElement_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IStorage_RenameElement_Proxy(IStorage*,const OLECHAR*,const OLECHAR*);
+void STDMETHODCALLTYPE IStorage_RenameElement_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IStorage_SetElementTimes_Proxy(IStorage*,const OLECHAR*,const FILETIME*,const FILETIME*,const FILETIME*);
+void STDMETHODCALLTYPE IStorage_SetElementTimes_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IStorage_SetClass_Proxy(IStorage*,REFCLSID);
+void STDMETHODCALLTYPE IStorage_SetClass_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IStorage_SetStateBits_Proxy(IStorage*,DWORD,DWORD);
+void STDMETHODCALLTYPE IStorage_SetStateBits_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IStorage_Stat_Proxy(IStorage*,STATSTG*,DWORD);
+void STDMETHODCALLTYPE IStorage_Stat_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IPersistFile_IsDirty_Proxy(IPersistFile*);
+void STDMETHODCALLTYPE IPersistFile_IsDirty_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IPersistFile_Load_Proxy(IPersistFile*,LPCOLESTR,DWORD);
+void STDMETHODCALLTYPE IPersistFile_Load_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IPersistFile_Save_Proxy(IPersistFile*,LPCOLESTR pszFileName,BOOL);
+void STDMETHODCALLTYPE IPersistFile_Save_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IPersistFile_SaveCompleted_Proxy(IPersistFile*,LPCOLESTR);
+void STDMETHODCALLTYPE IPersistFile_SaveCompleted_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IPersistFile_GetCurFile_Proxy(IPersistFile*,LPCSTR*);
+void STDMETHODCALLTYPE IPersistFile_GetCurFile_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IPersistStorage_IsDirty_Proxy(IPersistStorage*);
+void STDMETHODCALLTYPE IPersistStorage_IsDirty_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IPersistStorage_InitNew_Proxy(IPersistStorage*,IStorage*);
+void STDMETHODCALLTYPE IPersistStorage_InitNew_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IPersistStorage_Load_Proxy(IPersistStorage*,IStorage*);
+void STDMETHODCALLTYPE IPersistStorage_Load_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IPersistStorage_Save_Proxy(IPersistStorage*,IStorage*,BOOL);
+void STDMETHODCALLTYPE IPersistStorage_Save_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IPersistStorage_SaveCompleted_Proxy(IPersistStorage*,IStorage*);
+void STDMETHODCALLTYPE IPersistStorage_SaveCompleted_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IPersistStorage_HandsOffStorage_Proxy(IPersistStorage*);
+void STDMETHODCALLTYPE IPersistStorage_HandsOffStorage_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE ILockBytes_RemoteReadAt_Proxy(ILockBytes*,ULARGE_INTEGER,BYTE*,ULONG,ULONG*);
+void STDMETHODCALLTYPE ILockBytes_RemoteReadAt_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE ILockBytes_RemoteWriteAt_Proxy(ILockBytes*,ULARGE_INTEGER,BYTE*pv,ULONG,ULONG*);
+void STDMETHODCALLTYPE ILockBytes_RemoteWriteAt_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE ILockBytes_Flush_Proxy(ILockBytes*);
+void STDMETHODCALLTYPE ILockBytes_Flush_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE ILockBytes_SetSize_Proxy(ILockBytes*,ULARGE_INTEGER);
+void STDMETHODCALLTYPE ILockBytes_SetSize_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE ILockBytes_LockRegion_Proxy(ILockBytes*,ULARGE_INTEGER,ULARGE_INTEGER,DWORD);
+void STDMETHODCALLTYPE ILockBytes_LockRegion_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE ILockBytes_UnlockRegion_Proxy(ILockBytes*,ULARGE_INTEGER,ULARGE_INTEGER,DWORD);
+void STDMETHODCALLTYPE ILockBytes_UnlockRegion_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE ILockBytes_Stat_Proxy(ILockBytes*,STATSTG*,DWORD);
+void STDMETHODCALLTYPE ILockBytes_Stat_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IEnumFORMATETC_RemoteNext_Proxy(IEnumFORMATETC*,ULONG,FORMATETC*,ULONG*);
+void STDMETHODCALLTYPE IEnumFORMATETC_RemoteNext_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IEnumFORMATETC_Skip_Proxy(IEnumFORMATETC*,ULONG);
+void STDMETHODCALLTYPE IEnumFORMATETC_Skip_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IEnumFORMATETC_Reset_Proxy(IEnumFORMATETC*);
+void STDMETHODCALLTYPE IEnumFORMATETC_Reset_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IEnumFORMATETC_Clone_Proxy(IEnumFORMATETC*,IEnumFORMATETC**);
+void STDMETHODCALLTYPE IEnumFORMATETC_Clone_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IEnumFORMATETC_Next_Proxy(IEnumFORMATETC*,ULONG,FORMATETC*,ULONG*);
+HRESULT STDMETHODCALLTYPE IEnumFORMATETC_Next_Stub(IEnumFORMATETC*,ULONG,FORMATETC*,ULONG*);
+HRESULT STDMETHODCALLTYPE IEnumSTATDATA_RemoteNext_Proxy(IEnumSTATDATA*,ULONG,STATDATA*,ULONG*);
+void STDMETHODCALLTYPE IEnumSTATDATA_RemoteNext_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IEnumSTATDATA_Skip_Proxy(IEnumSTATDATA*,ULONG);
+void STDMETHODCALLTYPE IEnumSTATDATA_Skip_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IEnumSTATDATA_Reset_Proxy(IEnumSTATDATA*);
+void STDMETHODCALLTYPE IEnumSTATDATA_Reset_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IEnumSTATDATA_Clone_Proxy(IEnumSTATDATA*,IEnumSTATDATA**);
+void STDMETHODCALLTYPE IEnumSTATDATA_Clone_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IEnumSTATDATA_Next_Proxy(IEnumSTATDATA*,ULONG,STATDATA*,ULONG*);
+HRESULT STDMETHODCALLTYPE IEnumSTATDATA_Next_Stub(IEnumSTATDATA*,ULONG,STATDATA*,ULONG*);
+HRESULT STDMETHODCALLTYPE IRootStorage_SwitchToFile_Proxy(IRootStorage*,LPCSTR);
+void STDMETHODCALLTYPE IRootStorage_SwitchToFile_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+void STDMETHODCALLTYPE IAdviseSink_RemoteOnDataChange_Proxy(IAdviseSink*,FORMATETC*,RemSTGMEDIUM*);
+void STDMETHODCALLTYPE IAdviseSink_RemoteOnDataChange_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+void STDMETHODCALLTYPE IAdviseSink_RemoteOnViewChange_Proxy(IAdviseSink*,DWORD,LONG);
+void STDMETHODCALLTYPE IAdviseSink_RemoteOnViewChange_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+void STDMETHODCALLTYPE IAdviseSink_RemoteOnRename_Proxy(IAdviseSink*,IMoniker*);
+void STDMETHODCALLTYPE IAdviseSink_RemoteOnRename_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+void STDMETHODCALLTYPE IAdviseSink_RemoteOnSave_Proxy(IAdviseSink*);
+void STDMETHODCALLTYPE IAdviseSink_RemoteOnSave_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IAdviseSink_RemoteOnClose_Proxy(IAdviseSink*);
+void STDMETHODCALLTYPE IAdviseSink_RemoteOnClose_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+void STDMETHODCALLTYPE IAdviseSink_OnDataChange_Proxy(IAdviseSink*,FORMATETC*,STGMEDIUM*);
+void STDMETHODCALLTYPE IAdviseSink_OnDataChange_Stub(IAdviseSink*,FORMATETC*,RemSTGMEDIUM*);
+void STDMETHODCALLTYPE IAdviseSink_OnViewChange_Proxy(IAdviseSink*,DWORD,LONG);
+void STDMETHODCALLTYPE IAdviseSink_OnViewChange_Stub(IAdviseSink*,DWORD,LONG);
+void STDMETHODCALLTYPE IAdviseSink_OnRename_Proxy(IAdviseSink*,IMoniker*);
+void STDMETHODCALLTYPE IAdviseSink_OnRename_Stub(IAdviseSink*,IMoniker*);
+void STDMETHODCALLTYPE IAdviseSink_OnSave_Proxy(IAdviseSink*);
+void STDMETHODCALLTYPE IAdviseSink_OnSave_Stub(IAdviseSink*);
+void STDMETHODCALLTYPE IAdviseSink_OnClose_Proxy(IAdviseSink*);
+HRESULT STDMETHODCALLTYPE IAdviseSink_OnClose_Stub(IAdviseSink*);
+void STDMETHODCALLTYPE IAdviseSink2_RemoteOnLinkSrcChange_Proxy(IAdviseSink2*,IMoniker*);
+void STDMETHODCALLTYPE IAdviseSink2_RemoteOnLinkSrcChange_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+void STDMETHODCALLTYPE IAdviseSink2_OnLinkSrcChange_Proxy(IAdviseSink2*,IMoniker*);
+void STDMETHODCALLTYPE IAdviseSink2_OnLinkSrcChange_Stub(IAdviseSink2*,IMoniker*);
+HRESULT STDMETHODCALLTYPE IDataObject_RemoteGetData_Proxy(IDataObject*,FORMATETC*,RemSTGMEDIUM**);
+void STDMETHODCALLTYPE IDataObject_RemoteGetData_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IDataObject_RemoteGetDataHere_Proxy(IDataObject*,FORMATETC*,RemSTGMEDIUM**);
+void STDMETHODCALLTYPE IDataObject_RemoteGetDataHere_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IDataObject_QueryGetData_Proxy(IDataObject*,FORMATETC*);
+void STDMETHODCALLTYPE IDataObject_QueryGetData_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IDataObject_GetCanonicalFormatEtc_Proxy(IDataObject*,FORMATETC*,FORMATETC*);
+void STDMETHODCALLTYPE IDataObject_GetCanonicalFormatEtc_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IDataObject_RemoteSetData_Proxy(IDataObject*,FORMATETC*,RemSTGMEDIUM*,BOOL);
+void STDMETHODCALLTYPE IDataObject_RemoteSetData_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IDataObject_EnumFormatEtc_Proxy(IDataObject*,DWORD,IEnumFORMATETC**);
+void STDMETHODCALLTYPE IDataObject_EnumFormatEtc_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IDataObject_DAdvise_Proxy(IDataObject*,FORMATETC*,DWORD,IAdviseSink*,DWORD*);
+void STDMETHODCALLTYPE IDataObject_DAdvise_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IDataObject_DUnadvise_Proxy(IDataObject*,DWORD);
+void STDMETHODCALLTYPE IDataObject_DUnadvise_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IDataObject_EnumDAdvise_Proxy(IDataObject*,IEnumSTATDATA**);
+void STDMETHODCALLTYPE IDataObject_EnumDAdvise_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IDataObject_GetData_Proxy(IDataObject*,FORMATETC*,STGMEDIUM*);
+HRESULT STDMETHODCALLTYPE IDataObject_GetData_Stub(IDataObject*,FORMATETC*,RemSTGMEDIUM**);
+HRESULT STDMETHODCALLTYPE IDataObject_GetDataHere_Proxy(IDataObject*,FORMATETC*,STGMEDIUM*);
+HRESULT STDMETHODCALLTYPE IDataObject_GetDataHere_Stub(IDataObject*,FORMATETC*,RemSTGMEDIUM**);
+HRESULT STDMETHODCALLTYPE IDataObject_SetData_Proxy(IDataObject*,FORMATETC*,STGMEDIUM*,BOOL);
+HRESULT STDMETHODCALLTYPE IDataObject_SetData_Stub(IDataObject*,FORMATETC*,RemSTGMEDIUM*,BOOL);
+HRESULT STDMETHODCALLTYPE IDataAdviseHolder_Advise_Proxy(IDataAdviseHolder*,IDataObject*,FORMATETC*,DWORD,IAdviseSink*,DWORD*);
+void STDMETHODCALLTYPE IDataAdviseHolder_Advise_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IDataAdviseHolder_Unadvise_Proxy(IDataAdviseHolder*,DWORD);
+void STDMETHODCALLTYPE IDataAdviseHolder_Unadvise_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IDataAdviseHolder_EnumAdvise_Proxy(IDataAdviseHolder*,IEnumSTATDATA**);
+void STDMETHODCALLTYPE IDataAdviseHolder_EnumAdvise_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IDataAdviseHolder_SendOnDataChange_Proxy(IDataAdviseHolder*,IDataObject*,DWORD,DWORD);
+void STDMETHODCALLTYPE IDataAdviseHolder_SendOnDataChange_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+DWORD STDMETHODCALLTYPE IMessageFilter_HandleInComingCall_Proxy(IMessageFilter*,DWORD,HTASK,DWORD,LPINTERFACEINFO);
+void STDMETHODCALLTYPE IMessageFilter_HandleInComingCall_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+DWORD STDMETHODCALLTYPE IMessageFilter_RetryRejectedCall_Proxy(IMessageFilter*,HTASK,DWORD,DWORD);
+void STDMETHODCALLTYPE IMessageFilter_RetryRejectedCall_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+DWORD STDMETHODCALLTYPE IMessageFilter_MessagePending_Proxy(IMessageFilter*,HTASK,DWORD,DWORD);
+void STDMETHODCALLTYPE IMessageFilter_MessagePending_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IRpcChannelBuffer_GetBuffer_Proxy(IRpcChannelBuffer*,RPCOLEMESSAGE*,REFIID);
+void STDMETHODCALLTYPE IRpcChannelBuffer_GetBuffer_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IRpcChannelBuffer_SendReceive_Proxy(IRpcChannelBuffer*,RPCOLEMESSAGE*,ULONG*);
+void STDMETHODCALLTYPE IRpcChannelBuffer_SendReceive_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IRpcChannelBuffer_FreeBuffer_Proxy(IRpcChannelBuffer*,RPCOLEMESSAGE*);
+void STDMETHODCALLTYPE IRpcChannelBuffer_FreeBuffer_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IRpcChannelBuffer_GetDestCtx_Proxy(IRpcChannelBuffer*,DWORD*,void**);
+void STDMETHODCALLTYPE IRpcChannelBuffer_GetDestCtx_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IRpcChannelBuffer_IsConnected_Proxy(IRpcChannelBuffer*);
+void STDMETHODCALLTYPE IRpcChannelBuffer_IsConnected_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IRpcProxyBuffer_Connect_Proxy(IRpcProxyBuffer*,IRpcChannelBuffer*pRpcChannelBuffer);
+void STDMETHODCALLTYPE IRpcProxyBuffer_Connect_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+void STDMETHODCALLTYPE IRpcProxyBuffer_Disconnect_Proxy(IRpcProxyBuffer*);
+void STDMETHODCALLTYPE IRpcProxyBuffer_Disconnect_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IRpcStubBuffer_Connect_Proxy(IRpcStubBuffer*,IUnknown*);
+void STDMETHODCALLTYPE IRpcStubBuffer_Connect_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+void STDMETHODCALLTYPE IRpcStubBuffer_Disconnect_Proxy(IRpcStubBuffer*);
+void STDMETHODCALLTYPE IRpcStubBuffer_Disconnect_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IRpcStubBuffer_Invoke_Proxy(IRpcStubBuffer*,RPCOLEMESSAGE*,IRpcChannelBuffer*);
+void STDMETHODCALLTYPE IRpcStubBuffer_Invoke_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+IRpcStubBuffer*STDMETHODCALLTYPE IRpcStubBuffer_IsIIDSupported_Proxy(IRpcStubBuffer*,REFIID);
+void STDMETHODCALLTYPE IRpcStubBuffer_IsIIDSupported_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+ULONG STDMETHODCALLTYPE IRpcStubBuffer_CountRefs_Proxy(IRpcStubBuffer*);
+void STDMETHODCALLTYPE IRpcStubBuffer_CountRefs_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IRpcStubBuffer_DebugServerQueryInterface_Proxy(IRpcStubBuffer*,void**);
+void STDMETHODCALLTYPE IRpcStubBuffer_DebugServerQueryInterface_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+void STDMETHODCALLTYPE IRpcStubBuffer_DebugServerRelease_Proxy(IRpcStubBuffer*,void*);
+void STDMETHODCALLTYPE IRpcStubBuffer_DebugServerRelease_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IPSFactoryBuffer_CreateProxy_Proxy(IPSFactoryBuffer*,IUnknown*,REFIID,IRpcProxyBuffer**,void**);
+void STDMETHODCALLTYPE IPSFactoryBuffer_CreateProxy_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IPSFactoryBuffer_CreateStub_Proxy(IPSFactoryBuffer*,REFIID,IUnknown*,IRpcStubBuffer**);
+void STDMETHODCALLTYPE IPSFactoryBuffer_CreateStub_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+void STDMETHODCALLTYPE SNB_to_xmit(SNB*,RemSNB**);
+void STDMETHODCALLTYPE SNB_from_xmit(RemSNB*,SNB*);
+void STDMETHODCALLTYPE SNB_free_inst(SNB*);
+void STDMETHODCALLTYPE SNB_free_xmit(RemSNB*);
+HRESULT STDMETHODCALLTYPE IEnumUnknown_Next_Proxy(IEnumUnknown*,ULONG,IUnknown**,ULONG*);
+HRESULT STDMETHODCALLTYPE IEnumUnknown_Next_Stub(IEnumUnknown*,ULONG,IUnknown**,ULONG*);
+HRESULT STDMETHODCALLTYPE IEnumMoniker_Next_Proxy(IEnumMoniker*,ULONG,IMoniker**,ULONG*);
+HRESULT STDMETHODCALLTYPE IEnumMoniker_Next_Stub(IEnumMoniker*,ULONG,IMoniker**,ULONG*);
+HRESULT STDMETHODCALLTYPE IMoniker_BindToObject_Proxy(IMoniker*,IBindCtx*,IMoniker*,REFIID,void**);
+HRESULT STDMETHODCALLTYPE IMoniker_BindToObject_Stub(IMoniker*,IBindCtx*,IMoniker*,REFIID,IUnknown**);
+HRESULT STDMETHODCALLTYPE IMoniker_BindToStorage_Proxy(IMoniker*,IBindCtx*,IMoniker*,REFIID,void**);
+HRESULT STDMETHODCALLTYPE IMoniker_BindToStorage_Stub(IMoniker*,IBindCtx*,IMoniker*,REFIID,IUnknown**);
+HRESULT STDMETHODCALLTYPE IEnumString_Next_Proxy(IEnumString*,ULONG,LPCSTR*,ULONG*);
+HRESULT STDMETHODCALLTYPE IEnumString_Next_Stub(IEnumString*,ULONG,LPCSTR*,ULONG*);
+HRESULT STDMETHODCALLTYPE IStream_Read_Proxy(IStream*,void*,ULONG,ULONG*);
+HRESULT STDMETHODCALLTYPE IStream_Read_Stub(IStream*,BYTE*,ULONG,ULONG*);
+HRESULT STDMETHODCALLTYPE IStream_Write_Proxy(IStream*,void*,ULONG,ULONG*);
+HRESULT STDMETHODCALLTYPE IStream_Write_Stub(IStream*,BYTE*,ULONG,ULONG*);
+HRESULT STDMETHODCALLTYPE IStream_Seek_Proxy(IStream*,LARGE_INTEGER,DWORD,ULARGE_INTEGER*);
+HRESULT STDMETHODCALLTYPE IStream_Seek_Stub(IStream*,LARGE_INTEGER,DWORD,ULARGE_INTEGER*);
+HRESULT STDMETHODCALLTYPE IStream_CopyTo_Proxy(IStream*,IStream*,ULARGE_INTEGER,ULARGE_INTEGER*,ULARGE_INTEGER*);
+HRESULT STDMETHODCALLTYPE IStream_CopyTo_Stub(IStream*,IStream*,ULARGE_INTEGER,ULARGE_INTEGER*,ULARGE_INTEGER*);
+HRESULT STDMETHODCALLTYPE IEnumSTATSTG_Next_Proxy(IEnumSTATSTG*,ULONG,STATSTG*,ULONG*);
+HRESULT STDMETHODCALLTYPE IEnumSTATSTG_Next_Stub(IEnumSTATSTG*,ULONG,STATSTG*,ULONG*);
+HRESULT STDMETHODCALLTYPE IStorage_OpenStream_Proxy(IStorage*,OLECHAR*,void*,DWORD,DWORD,IStream**);
+HRESULT STDMETHODCALLTYPE IStorage_OpenStream_Stub(IStorage*,OLECHAR*,unsigned long,BYTE*,DWORD,DWORD,IStream** );
+HRESULT STDMETHODCALLTYPE IStorage_EnumElements_Proxy(IStorage*,DWORD,void*,DWORD,IEnumSTATSTG**);
+HRESULT STDMETHODCALLTYPE IStorage_EnumElements_Stub(IStorage*,DWORD,unsigned long,BYTE*,DWORD,IEnumSTATSTG**);
+HRESULT STDMETHODCALLTYPE ILockBytes_ReadAt_Proxy(ILockBytes*,ULARGE_INTEGER,void*,ULONG,ULONG*);
+HRESULT STDMETHODCALLTYPE ILockBytes_ReadAt_Stub(ILockBytes*,ULARGE_INTEGER,BYTE*,ULONG,ULONG*);
+HRESULT STDMETHODCALLTYPE ILockBytes_WriteAt_Proxy(ILockBytes*,ULARGE_INTEGER,const void*,ULONG,ULONG*);
+HRESULT STDMETHODCALLTYPE ILockBytes_WriteAt_Stub(ILockBytes*,ULARGE_INTEGER,BYTE*,ULONG,ULONG*);
+
+#if (!defined (__cplusplus) || defined (CINTERFACE)) \
+    && defined (COBJMACROS)
+#define IMarshal_QueryInterface(T,r,p) (T)->lpVtbl->QueryInterface(T,r,p)
+#define IMarshal_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IMarshal_Release(This) (This)->lpVtbl->Release(This)
+#define IMarshal_GetUnmarshalClass(T,r,pv,dw,pvD,m,pC) (T)->lpVtbl->GetUnmarshalClass(T,r,pv,dw,pvD,m,pC)
+#define IMarshal_GetMarshalSizeMax(T,r,pv,dw,pD,m,p) (T)->lpVtbl->GetMarshalSizeMax(T,r,pv,dw,pD,m,p)
+#define IMarshal_MarshalInterface(T,p,r,pv,dw,pvD,m) (T)->lpVtbl->MarshalInterface(T,p,r,pv,dw,pv,m)
+#define IMarshal_UnmarshalInterface(T,p,r,pp) (T)->lpVtbl->UnmarshalInterface(T,p,r,pp)
+#define IMarshal_ReleaseMarshalData(T,p) (T)->lpVtbl->ReleaseMarshalData(T,p)
+#define IMarshal_DisconnectObject(T,d) (T)->lpVtbl->DisconnectObject(T,d)
+#define IMalloc_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IMalloc_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IMalloc_Release(This) (This)->lpVtbl->Release(This)
+#define IMalloc_Alloc(This,cb) (This)->lpVtbl->Alloc(This,cb)
+#define IMalloc_Realloc(This,pv,cb)	(This)->lpVtbl->Realloc(This,pv,cb)
+#define IMalloc_Free(This,pv) (This)->lpVtbl->Free(This,pv)
+#define IMalloc_GetSize(This,pv) (This)->lpVtbl->GetSize(This,pv)
+#define IMalloc_DidAlloc(This,pv) (This)->lpVtbl->DidAlloc(This,pv)
+#define IMalloc_HeapMinimize(This) (This)->lpVtbl->HeapMinimize(This)
+#define IMallocSpy_QueryInterface(T,r,p) (T)->lpVtbl->QueryInterface(T,r,p)
+#define IMallocSpy_AddRef(This)	(This)->lpVtbl->AddRef(This)
+#define IMallocSpy_Release(This) (This)->lpVtbl->Release(This)
+#define IMallocSpy_PreAlloc(T,c) (T)->lpVtbl->PreAlloc(T,c)
+#define IMallocSpy_PostAlloc(This,p) (This)->lpVtbl->PostAlloc(This,p)
+#define IMallocSpy_PreFree(This,p,f) (This)->lpVtbl->PreFree(This,p,f)
+#define IMallocSpy_PostFree(This,fSpyed) (This)->lpVtbl->PostFree(This,fSpyed)
+#define IMallocSpy_PreRealloc(T,p,c,pp,f) (T)->lpVtbl->PreRealloc(T,p,c,pp,f)
+#define IMallocSpy_PostRealloc(T,p,f) (T)->lpVtbl->PostRealloc(T,p,f)
+#define IMallocSpy_PreGetSize(This,p,f)	(This)->lpVtbl->PreGetSize(This,p,f)
+#define IMallocSpy_PostGetSize(This,cbActual,fSpyed) (This)->lpVtbl->PostGetSize(This,cbActual,fSpyed)
+#define IMallocSpy_PreDidAlloc(This,pRequest,fSpyed) (This)->lpVtbl->PreDidAlloc(This,pRequest,fSpyed)
+#define IMallocSpy_PostDidAlloc(This,pRequest,fSpyed,fActual) (This)->lpVtbl->PostDidAlloc(This,pRequest,fSpyed,fActual)
+#define IMallocSpy_PreHeapMinimize(T) (T)->lpVtbl->PreHeapMinimize(T)
+#define IMallocSpy_PostHeapMinimize(T) (T)->lpVtbl->PostHeapMinimize(T)
+#define IStdMarshalInfo_QueryInterface(T,r,p) (This)->lpVtbl->QueryInterface(T,r,p)
+#define IStdMarshalInfo_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IStdMarshalInfo_Release(This) (This)->lpVtbl->Release(This)
+#define IStdMarshalInfo_GetClassForHandler(This,D,p,C) (This)->lpVtbl->GetClassForHandler(This,D,p,C)
+#define IExternalConnection_QueryInterface(This,riid,ppvObject)	(This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IExternalConnection_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IExternalConnection_Release(This) (This)->lpVtbl->Release(This)
+#define IExternalConnection_AddConnection(T,e,r) (T)->lpVtbl->AddConnection(T,e,r)
+#define IExternalConnection_ReleaseConnection(This,e,r,f) (This)->lpVtbl->ReleaseConnection(This,e,r,f)
+#define IEnumUnknown_QueryInterface(T,r,p) (This)->lpVtbl->QueryInterface(T,r,p)
+#define IEnumUnknown_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IEnumUnknown_Release(This) (This)->lpVtbl->Release(This)
+#define IEnumUnknown_Next(This,celt,rgelt,p) (This)->lpVtbl->Next(This,celt,rgelt,p)
+#define IEnumUnknown_Skip(This,celt) (This)->lpVtbl->Skip(This,celt)
+#define IEnumUnknown_Reset(This) (This)->lpVtbl->Reset(This)
+#define IEnumUnknown_Clone(This,ppenum)	 (This)->lpVtbl->Clone(This,ppenum)
+#define IBindCtx_QueryInterface(T,r,p) (T)->lpVtbl->QueryInterface(T,r,p)
+#define IBindCtx_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IBindCtx_Release(This)	(This)->lpVtbl->Release(This)
+#define IBindCtx_RegisterObjectBound(T,p) (T)->lpVtbl->RegisterObjectBound(T,p)
+#define IBindCtx_RevokeObjectBound(T,p)	(T)->lpVtbl->RevokeObjectBound(T,p)
+#define IBindCtx_ReleaseBoundObjects(T) (T)->lpVtbl->ReleaseBoundObjects(T)
+#define IBindCtx_SetBindOptions(T,p) (T)->lpVtbl->SetBindOptions(T,p)
+#define IBindCtx_GetBindOptions(This,pbindopts)	(This)->lpVtbl->GetBindOptions(This,pbindopts)
+#define IBindCtx_GetRunningObjectTable(This,pprot) (This)->lpVtbl->GetRunningObjectTable(This,pprot)
+#define IBindCtx_RegisterObjectParam(This,pszKey,punk) (This)->lpVtbl->RegisterObjectParam(This,pszKey,punk)
+#define IBindCtx_GetObjectParam(This,pszKey,ppunk) (This)->lpVtbl->GetObjectParam(This,pszKey,ppunk)
+#define IBindCtx_EnumObjectParam(This,ppenum) (This)->lpVtbl->EnumObjectParam(This,ppenum)
+#define IBindCtx_RevokeObjectParam(This,pszKey)	(This)->lpVtbl->RevokeObjectParam(This,pszKey)
+#define IEnumMoniker_QueryInterface(T,r,p) (T)->lpVtbl->QueryInterface(T,r,p)
+#define IEnumMoniker_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IEnumMoniker_Release(This) (This)->lpVtbl->Release(This)
+#define IEnumMoniker_Next(This,celt,rgelt,pceltFetched)	(This)->lpVtbl->Next(This,celt,rgelt,pceltFetched)
+#define IEnumMoniker_Skip(This,celt) (This)->lpVtbl->Skip(This,celt)
+#define IEnumMoniker_Reset(This) (This)->lpVtbl->Reset(This)
+#define IEnumMoniker_Clone(This,ppenum) (This)->lpVtbl->Clone(This,ppenum)
+#define IRunnableObject_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IRunnableObject_AddRef(This)	(This)->lpVtbl->AddRef(This)
+#define IRunnableObject_Release(This)	(This)->lpVtbl->Release(This)
+#define IRunnableObject_GetRunningClass(This,lpClsid)	(This)->lpVtbl->GetRunningClass(This,lpClsid)
+#define IRunnableObject_Run(This,pbc)	(This)->lpVtbl->Run(This,pbc)
+#define IRunnableObject_IsRunning(This)	(This)->lpVtbl->IsRunning(This)
+#define IRunnableObject_LockRunning(This,fLock,fLastUnlockCloses) (This)->lpVtbl->LockRunning(This,fLock,fLastUnlockCloses)
+#define IRunnableObject_SetContainedObject(This,fContained) (This)->lpVtbl->SetContainedObject(This,fContained)
+#define IRunningObjectTable_QueryInterface(This,riid,ppvObject)	(This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IRunningObjectTable_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IRunningObjectTable_Release(This) (This)->lpVtbl->Release(This)
+#define IRunningObjectTable_Register(This,grfFlags,punkObject,pmkObjectName,pdwRegister) (This)->lpVtbl->Register(This,grfFlags,punkObject,pmkObjectName,pdwRegister)
+#define IRunningObjectTable_Revoke(This,dwRegister) (This)->lpVtbl->Revoke(This,dwRegister)
+#define IRunningObjectTable_IsRunning(This,pmkObjectName) (This)->lpVtbl->IsRunning(This,pmkObjectName)
+#define IRunningObjectTable_GetObject(This,pmkObjectName,ppunkObject) (This)->lpVtbl->GetObject(This,pmkObjectName,ppunkObject)
+#define IRunningObjectTable_NoteChangeTime(This,dwRegister,pfiletime) (This)->lpVtbl->NoteChangeTime(This,dwRegister,pfiletime)
+#define IRunningObjectTable_GetTimeOfLastChange(This,pmkObjectName,pfiletime) (This)->lpVtbl->GetTimeOfLastChange(This,pmkObjectName,pfiletime)
+#define IRunningObjectTable_EnumRunning(This,ppenumMoniker) (This)->lpVtbl->EnumRunning(This,ppenumMoniker)
+#define IPersist_QueryInterface(T,r,p) (T)->lpVtbl->QueryInterface(T,r,p)
+#define IPersist_AddRef(This)	(This)->lpVtbl->AddRef(This)
+#define IPersist_Release(This)	(This)->lpVtbl->Release(This)
+#define IPersist_GetClassID(This,pClassID) (This)->lpVtbl->GetClassID(This,pClassID)
+#define IPersistStream_QueryInterface(T,r,p) (T)->lpVtbl->QueryInterface(T,r,p)
+#define IPersistStream_AddRef(This)	(This)->lpVtbl->AddRef(This)
+#define IPersistStream_Release(This)	(This)->lpVtbl->Release(This)
+#define IPersistStream_GetClassID(T,p) (T)->lpVtbl->GetClassID(T,p)
+#define IPersistStream_IsDirty(This)	(This)->lpVtbl->IsDirty(This)
+#define IPersistStream_Load(This,pStm)	(This)->lpVtbl->Load(This,pStm)
+#define IPersistStream_Save(T,p,f) (T)->lpVtbl->Save(T,p,f)
+#define IPersistStream_GetSizeMax(T,p) (T)->lpVtbl->GetSizeMax(T,p)
+#define IMoniker_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IMoniker_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IMoniker_Release(This)	(This)->lpVtbl->Release(This)
+#define IMoniker_GetClassID(This,pClassID) (This)->lpVtbl->GetClassID(This,pClassID)
+#define IMoniker_IsDirty(This)	(This)->lpVtbl->IsDirty(This)
+#define IMoniker_Load(This,pStm) (This)->lpVtbl->Load(This,pStm)
+#define IMoniker_Save(This,pStm,fClearDirty) (This)->lpVtbl->Save(This,pStm,fClearDirty)
+#define IMoniker_GetSizeMax(This,pcbSize) (This)->lpVtbl->GetSizeMax(This,pcbSize)
+#define IMoniker_BindToObject(T,p,pm,r,pp) (T)->lpVtbl->BindToObject(T,p,pm,r,pp)
+#define IMoniker_BindToStorage(This,pbc,pmkToLeft,riid,ppvObj) (This)->lpVtbl->BindToStorage(This,pbc,pmkToLeft,riid,ppvObj)
+#define IMoniker_Reduce(This,pbc,dwReduceHowFar,ppmkToLeft,ppmkReduced)	(This)->lpVtbl->Reduce(This,pbc,dwReduceHowFar,ppmkToLeft,ppmkReduced)
+#define IMoniker_ComposeWith(This,pmkRight,fOnlyIfNotGeneric,ppmkComposite) (This)->lpVtbl->ComposeWith(This,pmkRight,fOnlyIfNotGeneric,ppmkComposite)
+#define IMoniker_Enum(T,f,pp) (T)->lpVtbl->Enum(T,f,pp)
+#define IMoniker_IsEqual(This,p) (This)->lpVtbl->IsEqual(This,p)
+#define IMoniker_Hash(This,pdwHash) (This)->lpVtbl->Hash(This,pdwHash)
+#define IMoniker_IsRunning(T,pbc,Left,N) (T)->lpVtbl->IsRunning(T,pbc,Left,N)
+#define IMoniker_GetTimeOfLastChange(This,pbc,pmkToLeft,pFileTime) (This)->lpVtbl->GetTimeOfLastChange(This,pbc,pmkToLeft,pFileTime)
+#define IMoniker_Inverse(This,ppmk) (This)->lpVtbl->Inverse(This,ppmk)
+#define IMoniker_CommonPrefixWith(This,pmkOther,ppmkPrefix) (This)->lpVtbl->CommonPrefixWith(This,pmkOther,ppmkPrefix)
+#define IMoniker_RelativePathTo(This,pmkOther,ppmkRelPath) (This)->lpVtbl->RelativePathTo(This,pmkOther,ppmkRelPath)
+#define IMoniker_GetDisplayName(This,pbc,pmkToLeft,ppszDisplayName) (This)->lpVtbl->GetDisplayName(This,pbc,pmkToLeft,ppszDisplayName)
+#define IMoniker_ParseDisplayName(This,pbc,pmkToLeft,pszDisplayName,pchEaten,ppmkOut) (This)->lpVtbl->ParseDisplayName(This,pbc,pmkToLeft,pszDisplayName,pchEaten,ppmkOut)
+#define IMoniker_IsSystemMoniker(This,pdwMksys)	(This)->lpVtbl->IsSystemMoniker(This,pdwMksys)
+#define IROTData_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IROTData_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IROTData_Release(This) (This)->lpVtbl->Release(This)
+#define IROTData_GetComparisonData(This,pbData,cbMax,pcbData) (This)->lpVtbl->GetComparisonData(This,pbData,cbMax,pcbData)
+#define IEnumString_QueryInterface(This,riid,ppvObject)	(This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IEnumString_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IEnumString_Release(This) (This)->lpVtbl->Release(This)
+#define IEnumString_Next(This,celt,rgelt,pceltFetched) (This)->lpVtbl->Next(This,celt,rgelt,pceltFetched)
+#define IEnumString_Skip(This,celt) (This)->lpVtbl->Skip(This,celt)
+#define IEnumString_Reset(This)	(This)->lpVtbl->Reset(This)
+#define IEnumString_Clone(This,ppenum) (This)->lpVtbl->Clone(This,ppenum)
+#define IStream_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IStream_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IStream_Release(This) (This)->lpVtbl->Release(This)
+#define IStream_Read(This,pv,cb,pcbRead) (This)->lpVtbl->Read(This,pv,cb,pcbRead)
+#define IStream_Write(This,pv,cb,pcbWritten) (This)->lpVtbl->Write(This,pv,cb,pcbWritten)
+#define IStream_Seek(This,dlibMove,dwOrigin,plibNewPosition) (This)->lpVtbl->Seek(This,dlibMove,dwOrigin,plibNewPosition)
+#define IStream_SetSize(This,libNewSize) (This)->lpVtbl->SetSize(This,libNewSize)
+#define IStream_CopyTo(This,pstm,cb,pcbRead,pcbWritten)	(This)->lpVtbl->CopyTo(This,pstm,cb,pcbRead,pcbWritten)
+#define IStream_Commit(This,grfCommitFlags) (This)->lpVtbl->Commit(This,grfCommitFlags)
+#define IStream_Revert(This) (This)->lpVtbl->Revert(This)
+#define IStream_LockRegion(This,libOffset,cb,dwLockType) (This)->lpVtbl->LockRegion(This,libOffset,cb,dwLockType)
+#define IStream_UnlockRegion(This,libOffset,cb,dwLockType) (This)->lpVtbl->UnlockRegion(This,libOffset,cb,dwLockType)
+#define IStream_Stat(This,pstatstg,grfStatFlag)	(This)->lpVtbl->Stat(This,pstatstg,grfStatFlag)
+#define IStream_Clone(This,ppstm) (This)->lpVtbl->Clone(This,ppstm)
+#define IEnumSTATSTG_QueryInterface(T,r,p) (T)->lpVtbl->QueryInterface(T,r,p)
+#define IEnumSTATSTG_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IEnumSTATSTG_Release(This) (This)->lpVtbl->Release(This)
+#define IEnumSTATSTG_Next(T,c,r,p) (T)->lpVtbl->Next(T,c,r,p)
+#define IEnumSTATSTG_Skip(This,celt)	(This)->lpVtbl->Skip(This,celt)
+#define IEnumSTATSTG_Reset(This) (This)->lpVtbl->Reset(This)
+#define IEnumSTATSTG_Clone(This,ppenum)	 (This)->lpVtbl->Clone(This,ppenum)
+#define IStorage_QueryInterface(T,r,p) (T)->lpVtbl->QueryInterface(T,r,p)
+#define IStorage_AddRef(This)	 (This)->lpVtbl->AddRef(This)
+#define IStorage_Release(This)	 (This)->lpVtbl->Release(This)
+#define IStorage_CreateStream(T,p,g,r1,r2,pp) (T)->lpVtbl->CreateStream(T,p,g,r1,r2,pp)
+#define IStorage_OpenStream(T,p,r1,g,r2,pp) (T)->lpVtbl->OpenStream(T,p,r1,g,r2,pp)
+#define IStorage_CreateStorage(T,p,g,d,r2,pp) (T)->lpVtbl->CreateStorage(T,p,g,d,r2,pp)
+#define IStorage_OpenStorage(This,pwcsName,pstgPriority,grfMode,snbExclude,reserved,ppstg) (This)->lpVtbl->OpenStorage(This,pwcsName,pstgPriority,grfMode,snbExclude,reserved,ppstg)
+#define IStorage_CopyTo(This,ciidExclude,rgiidExclude,snbExclude,pstgDest) (This)->lpVtbl->CopyTo(This,ciidExclude,rgiidExclude,snbExclude,pstgDest)
+#define IStorage_MoveElementTo(This,pwcsName,pstgDest,pwcsNewName,grfFlags) (This)->lpVtbl->MoveElementTo(This,pwcsName,pstgDest,pwcsNewName,grfFlags)
+#define IStorage_Commit(This,g) (This)->lpVtbl->Commit(This,g)
+#define IStorage_Revert(This) (This)->lpVtbl->Revert(This)
+#define IStorage_EnumElements(This,reserved1,reserved2,reserved3,ppenum) (This)->lpVtbl->EnumElements(This,reserved1,reserved2,reserved3,ppenum)
+#define IStorage_DestroyElement(This,pwcsName)	(This)->lpVtbl->DestroyElement(This,pwcsName)
+#define IStorage_RenameElement(This,pwcsOldName,pwcsNewName) (This)->lpVtbl->RenameElement(This,pwcsOldName,pwcsNewName)
+#define IStorage_SetElementTimes(This,pwcsName,pctime,patime,pmtime) (This)->lpVtbl->SetElementTimes(This,pwcsName,pctime,patime,pmtime)
+#define IStorage_SetClass(This,clsid) (This)->lpVtbl->SetClass(This,clsid)
+#define IStorage_SetStateBits(This,grfStateBits,grfMask) (This)->lpVtbl->SetStateBits(This,grfStateBits,grfMask)
+#define IStorage_Stat(This,p,g) (This)->lpVtbl->Stat(This,p,g)
+#define IPersistFile_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IPersistFile_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IPersistFile_Release(This) (This)->lpVtbl->Release(This)
+#define IPersistFile_GetClassID(This,pClassID)	(This)->lpVtbl->GetClassID(This,pClassID)
+#define IPersistFile_IsDirty(This) (This)->lpVtbl->IsDirty(This)
+#define IPersistFile_Load(This,pszFileName,dwMode) (This)->lpVtbl->Load(This,pszFileName,dwMode)
+#define IPersistFile_Save(This,pszFileName,fRemember) (This)->lpVtbl->Save(This,pszFileName,fRemember)
+#define IPersistFile_SaveCompleted(This,pszFileName) (This)->lpVtbl->SaveCompleted(This,pszFileName)
+#define IPersistFile_GetCurFile(This,ppszFileName) (This)->lpVtbl->GetCurFile(This,ppszFileName)
+#define IPersistStorage_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IPersistStorage_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IPersistStorage_Release(This) (This)->lpVtbl->Release(This)
+#define IPersistStorage_GetClassID(This,pClassID) (This)->lpVtbl->GetClassID(This,pClassID)
+#define IPersistStorage_IsDirty(This) (This)->lpVtbl->IsDirty(This)
+#define IPersistStorage_InitNew(This,pStg) (This)->lpVtbl->InitNew(This,pStg)
+#define IPersistStorage_Load(This,pStg)	(This)->lpVtbl->Load(This,pStg)
+#define IPersistStorage_Save(This,pStgSave,fSameAsLoad)	(This)->lpVtbl->Save(This,pStgSave,fSameAsLoad)
+#define IPersistStorage_SaveCompleted(This,pStgNew) (This)->lpVtbl->SaveCompleted(This,pStgNew)
+#define IPersistStorage_HandsOffStorage(This) (This)->lpVtbl->HandsOffStorage(This)
+#define ILockBytes_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define ILockBytes_AddRef(This)	(This)->lpVtbl->AddRef(This)
+#define ILockBytes_Release(This) (This)->lpVtbl->Release(This)
+#define ILockBytes_ReadAt(This,ulOffset,pv,cb,pcbRead) (This)->lpVtbl->ReadAt(This,ulOffset,pv,cb,pcbRead)
+#define ILockBytes_WriteAt(This,ulOffset,pv,cb,pcbWritten) (This)->lpVtbl->WriteAt(This,ulOffset,pv,cb,pcbWritten)
+#define ILockBytes_Flush(This) (This)->lpVtbl->Flush(This)
+#define ILockBytes_SetSize(This,cb) (This)->lpVtbl->SetSize(This,cb)
+#define ILockBytes_LockRegion(This,libOffset,cb,dwLockType) (This)->lpVtbl->LockRegion(This,libOffset,cb,dwLockType)
+#define ILockBytes_UnlockRegion(This,libOffset,cb,dwLockType) (This)->lpVtbl->UnlockRegion(This,libOffset,cb,dwLockType)
+#define ILockBytes_Stat(This,pstatstg,grfStatFlag) (This)->lpVtbl->Stat(This,pstatstg,grfStatFlag)
+#define IEnumFORMATETC_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IEnumFORMATETC_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IEnumFORMATETC_Release(This) (This)->lpVtbl->Release(This)
+#define IEnumFORMATETC_Next(This,celt,rgelt,pceltFetched) (This)->lpVtbl->Next(This,celt,rgelt,pceltFetched)
+#define IEnumFORMATETC_Skip(This,celt) (This)->lpVtbl->Skip(This,celt)
+#define IEnumFORMATETC_Reset(This) (This)->lpVtbl->Reset(This)
+#define IEnumFORMATETC_Clone(This,ppenum) (This)->lpVtbl->Clone(This,ppenum)
+#define IEnumSTATDATA_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IEnumSTATDATA_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IEnumSTATDATA_Release(This) (This)->lpVtbl->Release(This)
+#define IEnumSTATDATA_Next(This,celt,rgelt,pceltFetched) (This)->lpVtbl->Next(This,celt,rgelt,pceltFetched)
+#define IEnumSTATDATA_Skip(This,celt) (This)->lpVtbl->Skip(This,celt)
+#define IEnumSTATDATA_Reset(This) (This)->lpVtbl->Reset(This)
+#define IEnumSTATDATA_Clone(This,ppenum) (This)->lpVtbl->Clone(This,ppenum)
+#define IRootStorage_QueryInterface(T,r,O) (T)->lpVtbl->QueryInterface(T,r,O)
+#define IRootStorage_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IRootStorage_Release(This)	 (This)->lpVtbl->Release(This)
+#define IRootStorage_SwitchToFile(This,pszFile)	 (This)->lpVtbl->SwitchToFile(This,pszFile)
+#define IAdviseSink_QueryInterface(This,riid,ppvObject)	(This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IAdviseSink_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IAdviseSink_Release(This) (This)->lpVtbl->Release(This)
+#define IAdviseSink_OnDataChange(This,pFormatetc,pStgmed) (This)->lpVtbl->OnDataChange(This,pFormatetc,pStgmed)
+#define IAdviseSink_OnViewChange(This,dwAspect,lindex) (This)->lpVtbl->OnViewChange(This,dwAspect,lindex)
+#define IAdviseSink_OnRename(This,pmk) (This)->lpVtbl->OnRename(This,pmk)
+#define IAdviseSink_OnSave(This) (This)->lpVtbl->OnSave(This)
+#define IAdviseSink_OnClose(This) (This)->lpVtbl->OnClose(This)
+#define IAdviseSink2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IAdviseSink2_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IAdviseSink2_Release(This) (This)->lpVtbl->Release(This)
+#define IAdviseSink2_OnDataChange(This,pFormatetc,pStgmed) (This)->lpVtbl->OnDataChange(This,pFormatetc,pStgmed)
+#define IAdviseSink2_OnViewChange(This,dwAspect,lindex)	(This)->lpVtbl->OnViewChange(This,dwAspect,lindex)
+#define IAdviseSink2_OnRename(This,pmk)	(This)->lpVtbl->OnRename(This,pmk)
+#define IAdviseSink2_OnSave(This) (This)->lpVtbl->OnSave(This)
+#define IAdviseSink2_OnClose(This) (This)->lpVtbl->OnClose(This)
+#define IAdviseSink2_OnLinkSrcChange(This,pmk) (This)->lpVtbl->OnLinkSrcChange(This,pmk)
+#define IDataObject_QueryInterface(This,riid,ppvObject)	(This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IDataObject_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IDataObject_Release(This) (This)->lpVtbl->Release(This)
+#define IDataObject_GetData(This,pformatetcIn,pmedium) (This)->lpVtbl->GetData(This,pformatetcIn,pmedium)
+#define IDataObject_GetDataHere(This,pformatetc,pmedium) (This)->lpVtbl->GetDataHere(This,pformatetc,pmedium)
+#define IDataObject_QueryGetData(This,pformatetc) (This)->lpVtbl->QueryGetData(This,pformatetc)
+#define IDataObject_GetCanonicalFormatEtc(This,pformatectIn,pformatetcOut) (This)->lpVtbl->GetCanonicalFormatEtc(This,pformatectIn,pformatetcOut)
+#define IDataObject_SetData(This,pformatetc,pmedium,fRelease) (This)->lpVtbl->SetData(This,pformatetc,pmedium,fRelease)
+#define IDataObject_EnumFormatEtc(This,dwDirection,ppenumFormatEtc) (This)->lpVtbl->EnumFormatEtc(This,dwDirection,ppenumFormatEtc)
+#define IDataObject_DAdvise(This,pformatetc,advf,pAdvSink,pdwConnection) (This)->lpVtbl->DAdvise(This,pformatetc,advf,pAdvSink,pdwConnection)
+#define IDataObject_DUnadvise(This,dwConnection) (This)->lpVtbl->DUnadvise(This,dwConnection)
+#define IDataObject_EnumDAdvise(This,ppenumAdvise) (This)->lpVtbl->EnumDAdvise(This,ppenumAdvise)
+#define IDataAdviseHolder_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IDataAdviseHolder_AddRef(This)	(This)->lpVtbl->AddRef(This)
+#define IDataAdviseHolder_Release(This)	(This)->lpVtbl->Release(This)
+#define IDataAdviseHolder_Advise(This,pDataObject,pFetc,advf,pAdvise,pdwConnection) (This)->lpVtbl->Advise(This,pDataObject,pFetc,advf,pAdvise,pdwConnection)
+#define IDataAdviseHolder_Unadvise(This,dwConnection) (This)->lpVtbl->Unadvise(This,dwConnection)
+#define IDataAdviseHolder_EnumAdvise(This,ppenumAdvise)	(This)->lpVtbl->EnumAdvise(This,ppenumAdvise)
+#define IDataAdviseHolder_SendOnDataChange(This,pDataObject,dwReserved,advf) (This)->lpVtbl->SendOnDataChange(This,pDataObject,dwReserved,advf)
+#define IMessageFilter_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IMessageFilter_AddRef(This)	 (This)->lpVtbl->AddRef(This)
+#define IMessageFilter_Release(This)	 (This)->lpVtbl->Release(This)
+#define IMessageFilter_HandleInComingCall(T,d,h,dw,lp) (T)->lpVtbl->HandleInComingCall(T,d,h,dw,lp)
+#define IMessageFilter_RetryRejectedCall(s,C,T,R) (s)->lpVtbl->RetryRejectedCall(s,C,T,R)
+#define IMessageFilter_MessagePending(s,C,T,P) (s)->lpVtbl->MessagePending(This,C,T,P)
+#define IRpcChannelBuffer_QueryInterface(T,r,p)	(T)->lpVtbl->QueryInterface(T,r,p)
+#define IRpcChannelBuffer_AddRef(This)	(This)->lpVtbl->AddRef(This)
+#define IRpcChannelBuffer_Release(This)	(This)->lpVtbl->Release(This)
+#define IRpcChannelBuffer_GetBuffer(This,pMessage,riid)	(This)->lpVtbl->GetBuffer(This,pMessage,riid)
+#define IRpcChannelBuffer_SendReceive(T,p,pS) (T)->lpVtbl->SendReceive(T,p,pS)
+#define IRpcChannelBuffer_FreeBuffer(T,p) (T)->lpVtbl->FreeBuffer(T,p)
+#define IRpcChannelBuffer_GetDestCtx(This,pdwDestContext,ppvDestContext) (This)->lpVtbl->GetDestCtx(This,pdwDestContext,ppvDestContext)
+#define IRpcChannelBuffer_IsConnected(This) (This)->lpVtbl->IsConnected(This)
+#define IRpcProxyBuffer_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IRpcProxyBuffer_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IRpcProxyBuffer_Release(This) (This)->lpVtbl->Release(This)
+#define IRpcProxyBuffer_Connect(This,pRpcChannelBuffer)	(This)->lpVtbl->Connect(This,pRpcChannelBuffer)
+#define IRpcProxyBuffer_Disconnect(This) (This)->lpVtbl->Disconnect(This)
+#define IRpcStubBuffer_QueryInterface(T,r,pp) (T)->lpVtbl->QueryInterface(T,r,pp)
+#define IRpcStubBuffer_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IRpcStubBuffer_Release(This)	(This)->lpVtbl->Release(This)
+#define IRpcStubBuffer_Connect(This,p)	 (This)->lpVtbl->Connect(This,p)
+#define IRpcStubBuffer_Disconnect(This)	 (This)->lpVtbl->Disconnect(This)
+#define IRpcStubBuffer_Invoke(T,_prpcmsg,_p)	 (T)->lpVtbl->Invoke(T,_prpcmsg,_p)
+#define IRpcStubBuffer_IsIIDSupported(T,d) (T)->lpVtbl->IsIIDSupported(T,d)
+#define IRpcStubBuffer_CountRefs(This)	 (This)->lpVtbl->CountRefs(This)
+#define IRpcStubBuffer_DebugServerQueryInterface(T,p) (T)->lpVtbl->DebugServerQueryInterface(T,p)
+#define IRpcStubBuffer_DebugServerRelease(T,p) (T)->lpVtbl->DebugServerRelease(T,p)
+#define IPSFactoryBuffer_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IPSFactoryBuffer_AddRef(This)	(This)->lpVtbl->AddRef(This)
+#define IPSFactoryBuffer_Release(This)	(This)->lpVtbl->Release(This)
+#define IPSFactoryBuffer_CreateProxy(T,U,r,P,p) (T)->lpVtbl->CreateProxy(T,U,r,P,p)
+#define IPSFactoryBuffer_CreateStub(T,r,U,p) (T)->lpVtbl->CreateStub(T,r,U,p)
+#define IClassActivator_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
+#define IClassActivator_AddRef(T) (T)->lpVtbl->AddRef(T)
+#define IClassActivator_Release(T) (T)->lpVtbl->Release(T)
+#define IClassActivator_GetClassObject(T,a,b,c,d,e) (T)->lpVtbl->GetClassObject(T,a,b,c,d,e)
+#endif /* COBJMACROS */
+
+#endif
Index: Daodan/MinGW/include/objsafe.h
===================================================================
--- Daodan/MinGW/include/objsafe.h	(revision 1046)
+++ Daodan/MinGW/include/objsafe.h	(revision 1046)
@@ -0,0 +1,26 @@
+#ifndef _OBJSAFE_H
+#define _OBJSAFE_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define INTERFACESAFE_FOR_UNTRUSTED_CALLER 0x00000001
+#define INTERFACESAFE_FOR_UNTRUSTED_DATA 0x00000002
+
+EXTERN_C const IID IID_IObjectSafety;
+#define INTERFACE IObjectSafety
+DECLARE_INTERFACE_(IObjectSafety,IUnknown)
+{
+	STDMETHOD(GetInterfaceSafetyOptions)(THIS_ REFIID,DWORD*,DWORD*) PURE;
+	STDMETHOD(SetInterfaceSafetyOptions)(THIS_ REFIID,DWORD,DWORD) PURE;
+};
+#undef INTERFACE
+
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/objsel.h
===================================================================
--- Daodan/MinGW/include/objsel.h	(revision 1046)
+++ Daodan/MinGW/include/objsel.h	(revision 1046)
@@ -0,0 +1,118 @@
+/*
+ * objsel.h - Active Directory
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain.  You may use,
+ * modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY.  ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED.  This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+#ifndef _OBJSEL_H
+#define _OBJSEL_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*--- Active Directory Reference - Active Directory Structures - Object Picker Dialog Box Structures */
+#if (_WIN32_WINNT >= 0x0500)
+typedef struct _DS_SELECTION {
+	PWSTR pwzName;
+	PWSTR pwzADsPath;
+	PWSTR pwzClass;
+	PWSTR pwzUPN;
+	VARIANT *pvarFetchedAttributes;
+	ULONG flScopeType;
+} DS_SELECTION,*PDS_SELECTION;
+typedef struct _DS_SELECTION_LIST {
+	ULONG cItems;
+	ULONG cFetchedAttributes;
+	DS_SELECTION aDsSelection[ANYSIZE_ARRAY];
+} DS_SELECTION_LIST,*PDS_SELECTION_LIST;
+
+typedef struct _DSOP_UPLEVEL_FILTER_FLAGS {
+	ULONG flBothModes;
+	ULONG flMixedModeOnly;
+	ULONG flNativeModeOnly;
+} DSOP_UPLEVEL_FILTER_FLAGS;
+#define DSOP_FILTER_INCLUDE_ADVANCED_VIEW 0x00000001
+#define DSOP_FILTER_USERS 0x00000002
+#define DSOP_FILTER_BUILTIN_GROUPS 0x00000004
+#define DSOP_FILTER_WELL_KNOWN_PRINCIPALS 0x00000008
+#define DSOP_FILTER_UNIVERSAL_GROUPS_DL 0x00000010
+#define DSOP_FILTER_UNIVERSAL_GROUPS_SE 0x00000020
+#define DSOP_FILTER_GLOBAL_GROUPS_DL 0x00000040
+#define DSOP_FILTER_GLOBAL_GROUPS_SE 0x00000080
+#define DSOP_FILTER_DOMAIN_LOCAL_GROUPS_DL 0x00000100
+#define DSOP_FILTER_DOMAIN_LOCAL_GROUPS_SE 0x00000200
+#define DSOP_FILTER_CONTACTS 0x00000400
+#define DSOP_FILTER_COMPUTERS 0x00000800
+typedef struct _DSOP_FILTER_FLAGS {
+	DSOP_UPLEVEL_FILTER_FLAGS Uplevel;
+	ULONG flDownlevel;
+} DSOP_FILTER_FLAGS;
+#define DSOP_DOWNLEVEL_FILTER_USERS 0x80000001
+#define DSOP_DOWNLEVEL_FILTER_LOCAL_GROUPS 0x80000002
+#define DSOP_DOWNLEVEL_FILTER_GLOBAL_GROUPS 0x80000004
+#define DSOP_DOWNLEVEL_FILTER_COMPUTERS 0x80000008
+#define DSOP_DOWNLEVEL_FILTER_WORLD 0x80000010
+#define DSOP_DOWNLEVEL_FILTER_AUTHENTICATED_USER 0x80000020
+#define DSOP_DOWNLEVEL_FILTER_ANONYMOUS 0x80000040
+#define DSOP_DOWNLEVEL_FILTER_BATCH 0x80000080
+#define DSOP_DOWNLEVEL_FILTER_CREATOR_OWNER 0x80000100
+#define DSOP_DOWNLEVEL_FILTER_CREATOR_GROUP 0x80000200
+#define DSOP_DOWNLEVEL_FILTER_DIALUP 0x80000400
+#define DSOP_DOWNLEVEL_FILTER_INTERACTIVE 0x80000800
+#define DSOP_DOWNLEVEL_FILTER_NETWORK 0x80001000
+#define DSOP_DOWNLEVEL_FILTER_SERVICE 0x80002000
+#define DSOP_DOWNLEVEL_FILTER_SYSTEM 0x80004000
+#define DSOP_DOWNLEVEL_FILTER_EXCLUDE_BUILTIN_GROUPS 0x80008000
+#define DSOP_DOWNLEVEL_FILTER_TERMINAL_SERVER 0x80010000
+#define DSOP_DOWNLEVEL_FILTER_ALL_WELLKNOWN_SIDS 0x80020000
+#define DSOP_DOWNLEVEL_FILTER_LOCAL_SERVICE 0x80040000
+#define DSOP_DOWNLEVEL_FILTER_NETWORK_SERVICE 0x80080000
+#define DSOP_DOWNLEVEL_FILTER_REMOTE_LOGON 0x80100000
+typedef struct _DSOP_SCOPE_INIT_INFO {
+	ULONG cbSize;
+	ULONG flType;
+	ULONG flScope;
+	DSOP_FILTER_FLAGS FilterFlags;
+	PCWSTR pwzDcName;
+	PCWSTR pwzADsPath;
+	HRESULT hr;
+} DSOP_SCOPE_INIT_INFO,*PDSOP_SCOPE_INIT_INFO,*PCDSOP_SCOPE_INIT_INFO;
+#define DSOP_SCOPE_TYPE_TARGET_COMPUTER 0x00000001
+#define DSOP_SCOPE_TYPE_UPLEVEL_JOINED_DOMAIN 0x00000002
+#define DSOP_SCOPE_TYPE_DOWNLEVEL_JOINED_DOMAIN 0x00000004
+#define DSOP_SCOPE_TYPE_ENTERPRISE_DOMAIN 0x00000008
+#define DSOP_SCOPE_TYPE_GLOBAL_CATALOG 0x00000010
+#define DSOP_SCOPE_TYPE_EXTERNAL_UPLEVEL_DOMAIN 0x00000020
+#define DSOP_SCOPE_TYPE_EXTERNAL_DOWNLEVEL_DOMAIN 0x00000040
+#define DSOP_SCOPE_TYPE_WORKGROUP 0x00000080
+#define DSOP_SCOPE_TYPE_USER_ENTERED_UPLEVEL_SCOPE 0x00000100
+#define DSOP_SCOPE_TYPE_USER_ENTERED_DOWNLEVEL_SCOPE 0x00000200
+typedef struct _DSOP_INIT_INFO {
+	ULONG cbSize;
+	PCWSTR pwzTargetComputer;
+	ULONG cDsScopeInfos;
+	PDSOP_SCOPE_INIT_INFO aDsScopeInfos;
+	ULONG flOptions;
+	ULONG cAttributesToFetch;
+	PCWSTR* apwzAttributeNames;
+} DSOP_INIT_INFO,*PDSOP_INIT_INFO;
+#define DSOP_FLAG_MULTISELECT 0x00000001
+#define DSOP_FLAG_SKIP_TARGET_COMPUTER_DC_CHECK 0x00000002
+#endif /* (_WIN32_WINNT >= 0x0500) */
+
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/ocidl.h
===================================================================
--- Daodan/MinGW/include/ocidl.h	(revision 1046)
+++ Daodan/MinGW/include/ocidl.h	(revision 1046)
@@ -0,0 +1,856 @@
+#ifndef _OCIDL_H
+#define _OCIDL_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <ole2.h>
+
+typedef _COM_interface IErrorLog *LPERRORLOG;
+typedef _COM_interface IPropertyBag *LPPROPERTYBAG;
+typedef _COM_interface IPropertyBag2 *LPPROPERTYBAG2;
+typedef _COM_interface IEnumConnections *LPENUMCONNECTIONS;
+typedef _COM_interface IConnectionPoint *LPCONNECTIONPOINT;
+typedef _COM_interface IEnumConnectionPoints *LPENUMCONNECTIONPOINTS;
+typedef _COM_interface IPropertyPageSite *LPPROPERTYPAGESITE;
+typedef _COM_interface IFont *LPFONT;
+typedef _COM_interface IFontDisp *LPFONTDISP;
+typedef _COM_interface IOleUndoManager *LPOLEUNDOMANAGER;
+
+#ifndef OLE2ANSI
+typedef TEXTMETRICW TEXTMETRICOLE;
+#else
+typedef TEXTMETRIC TEXTMETRICOLE;
+#endif
+typedef TEXTMETRICOLE *LPTEXTMETRICOLE;
+typedef DWORD OLE_COLOR;
+typedef UINT OLE_HANDLE;
+typedef long OLE_XPOS_HIMETRIC;
+typedef long OLE_YPOS_HIMETRIC;
+typedef long OLE_XSIZE_HIMETRIC;
+typedef long OLE_YSIZE_HIMETRIC;
+
+typedef enum tagREADYSTATE {
+	READYSTATE_UNINITIALIZED = 0,
+	READYSTATE_LOADING = 1,
+	READYSTATE_LOADED = 2,
+	READYSTATE_INTERACTIVE = 3,
+	READYSTATE_COMPLETE = 4
+} READYSTATE;
+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;
+typedef enum tagQACONTAINERFLAGS
+{
+	QACONTAINER_SHOWHATCHING = 1,
+	QACONTAINER_SHOWGRABHANDLES = 2,
+	QACONTAINER_USERMODE = 4,
+	QACONTAINER_DISPLAYASDEFAULT = 8,
+	QACONTAINER_UIDEAD = 16,
+	QACONTAINER_AUTOCLIP = 32,
+	QACONTAINER_MESSAGEREFLECT = 64,
+	QACONTAINER_SUPPORTSMNEMONICS = 128
+} QACONTAINERFLAGS;
+typedef struct tagQACONTAINER
+{
+	ULONG cbSize;
+	_COM_interface IOleClientSite *pClientSite;
+	_COM_interface IAdviseSinkEx *pAdviseSink;
+	_COM_interface IPropertyNotifySink *pPropertyNotifySink;
+	IUnknown *pUnkEventSink;
+	DWORD dwAmbientFlags;
+	OLE_COLOR colorFore;
+	OLE_COLOR colorBack;
+	_COM_interface IFont *pFont;
+	_COM_interface IOleUndoManager *pUndoMgr;
+	DWORD dwAppearance;
+	LONG lcid;
+	HPALETTE hpal;
+	_COM_interface IBindHost *pBindHost;
+	_COM_interface IOleControlSite *pOleControlSite;
+	_COM_interface IServiceProvider *pServiceProvider;
+} QACONTAINER;
+typedef struct tagQACONTROL
+{
+	ULONG cbSize;
+	DWORD dwMiscStatus;
+	DWORD dwViewStatus;
+	DWORD dwEventCookie;
+	DWORD dwPropNotifyCookie;
+	DWORD dwPointerActivationPolicy;
+} QACONTROL;
+typedef struct tagPOINTF {
+	float x;
+	float y;
+} POINTF,*LPPOINTF;
+typedef struct tagCONTROLINFO {
+	ULONG cb;
+	HACCEL hAccel;
+	USHORT cAccel;
+	DWORD dwFlags;
+} CONTROLINFO,*LPCONTROLINFO;
+typedef struct tagCONNECTDATA {
+	LPUNKNOWN pUnk;
+	DWORD dwCookie;
+} CONNECTDATA,*LPCONNECTDATA;
+typedef struct tagLICINFO {
+	long cbLicInfo;
+	BOOL fRuntimeKeyAvail;
+	BOOL fLicVerified;
+} LICINFO,*LPLICINFO;
+typedef struct tagCAUUID {
+	ULONG cElems;
+	GUID *pElems;
+} CAUUID,*LPCAUUID;
+typedef struct tagCALPOLESTR {
+	ULONG cElems;
+	LPOLESTR *pElems;
+} CALPOLESTR,*LPCALPOLESTR;
+typedef struct tagCADWORD {
+	ULONG cElems;
+	DWORD *pElems;
+} CADWORD,*LPCADWORD;
+typedef struct tagPROPPAGEINFO {
+	ULONG cb;
+	LPOLESTR pszTitle;
+	SIZE size;
+	LPOLESTR pszDocString;
+	LPOLESTR pszHelpFile;
+	DWORD dwHelpContext;
+} PROPPAGEINFO,*LPPROPPAGEINFO;
+
+EXTERN_C const IID IID_IOleControl;
+#define INTERFACE IOleControl
+DECLARE_INTERFACE_(IOleControl,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetControlInfo)(THIS_ LPCONTROLINFO) PURE;
+	STDMETHOD(OnMnemonic)(THIS_ LPMSG) PURE;
+	STDMETHOD(OnAmbientPropertyChange)(THIS_ DISPID) PURE;
+	STDMETHOD(FreezeEvents)(THIS_ BOOL) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IOleControlSite;
+#define INTERFACE IOleControlSite
+DECLARE_INTERFACE_(IOleControlSite,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(OnControlInfoChanged)(THIS) PURE;
+	STDMETHOD(LockInPlaceActive)(THIS_ BOOL) PURE;
+	STDMETHOD(GetExtendedControl)(THIS_ LPDISPATCH*) PURE;
+	STDMETHOD(TransformCoords)(THIS_ POINTL*,POINTF*,DWORD) PURE;
+	STDMETHOD(TranslateAccelerator)(THIS_ LPMSG,DWORD) PURE;
+	STDMETHOD(OnFocus)(THIS_ BOOL) PURE;
+	STDMETHOD(ShowPropertyFrame)(THIS) PURE;
+};
+#undef INTERFACE
+
+#ifdef COBJMACROS
+#define IOleControlSite_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
+#define IOleControlSite_AddRef(T) (T)->lpVtbl->AddRef(T)
+#define IOleControlSite_Release(T) (T)->lpVtbl->Release(T)
+#define IOleControlSite_OnControlInfoChanged(T) (T)->lpVtbl->OnControlInfoChanged(T)
+#define IOleControlSite_LockInPlaceActive(T,a) (T)->lpVtbl->LockInPlaceActive(T,a)
+#define IOleControlSite_GetExtendedControl(T,a) (T)->lpVtbl->GetExtendedControl(T,a)
+#define IOleControlSite_TransformCoords(T,a,b,c) (T)->lpVtbl->TransformCoords(T,a,b,c)
+#define IOleControlSite_TranslateAccelerator(T,a,b) (T)->lpVtbl->TranslateAccelerator(T,a,b)
+#define IOleControlSite_OnFocus(T,a) (T)->lpVtbl->OnFocus(T,a)
+#define IOleControlSite_ShowPropertyFrame(T) (T)->lpVtbl->ShowPropertyFrame(T)
+#endif
+
+EXTERN_C const IID IID_ISimpleFrameSite;
+#define INTERFACE ISimpleFrameSite
+DECLARE_INTERFACE_(ISimpleFrameSite,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(PreMessageFilter)(THIS_ HWND,UINT,WPARAM,LPARAM,LRESULT*,PDWORD) PURE;
+	STDMETHOD(PostMessageFilter)(THIS_ HWND,UINT,WPARAM,LPARAM,LRESULT*,DWORD) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IErrorLog;
+#define INTERFACE IErrorLog
+DECLARE_INTERFACE_(IErrorLog,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(AddError)(THIS_ LPCOLESTR,LPEXCEPINFO) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IPropertyBag;
+#define INTERFACE IPropertyBag
+DECLARE_INTERFACE_(IPropertyBag,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(Read)(THIS_ LPCOLESTR,LPVARIANT,LPERRORLOG) PURE;
+	STDMETHOD(Write)(THIS_ LPCOLESTR,LPVARIANT) PURE;
+};
+#undef INTERFACE
+
+#ifdef COBJMACROS
+#define IPropertyBag_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
+#define IPropertyBag_AddRef(T) (T)->lpVtbl->AddRef(T)
+#define IPropertyBag_Release(T) (T)->lpVtbl->Release(T)
+#define IPropertyBag_Read(T,a,b,c) (T)->lpVtbl->Read(T,a,b,c)
+#define IPropertyBag_Write(T,a,b) (T)->lpVtbl->Write(T,a,b)
+#endif
+
+EXTERN_C const IID IID_IPropertyBag2;
+#define INTERFACE IPropertyBag2
+DECLARE_INTERFACE_(IPropertyBag2,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(Read)(THIS_ ULONG,PROPBAG2*,LPERRORLOG,VARIANT*,HRESULT*) PURE;
+	STDMETHOD(Write)(THIS_ ULONG,PROPBAG2*,VARIANT*) PURE;
+	STDMETHOD(CountProperties)(THIS_ ULONG*) PURE;
+	STDMETHOD(GetPropertyInfo)(THIS_ ULONG,ULONG,PROPBAG2*,ULONG*) PURE;
+	STDMETHOD(LoadObject)(THIS_ LPCOLESTR,DWORD,IUnknown*,LPERRORLOG) PURE;
+};
+#undef INTERFACE
+
+#ifdef COBJMACROS
+#define IPropertyBag2_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
+#define IPropertyBag2_AddRef(T) (T)->lpVtbl->AddRef(T)
+#define IPropertyBag2_Release(T) (T)->lpVtbl->Release(T)
+#define IPropertyBag2_Read(T,a,b,c,d,e) (T)->lpVtbl->Read(T,a,b,c,d,e)
+#define IPropertyBag2_Write(T,a,b,c) (T)->lpVtbl->Write(T,a,b,c)
+#define IPropertyBag2_CountProperties(T,a) (T)->lpVtbl->CountProperties(T,a)
+#define IPropertyBag2_GetPropertyInfo(T,a,b,c,d) (T)->lpVtbl->GetPropertyInfo(T,a,b,c,d)
+#define IPropertyBag2_LoadObject(T,a,b,c,d) (T)->lpVtbl->LoadObject(T,a,b,c,d)
+#endif
+
+EXTERN_C const IID IID_IPersistPropertyBag;
+#define INTERFACE IPersistPropertyBag
+DECLARE_INTERFACE_(IPersistPropertyBag,IPersist)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetClassID)(THIS_ LPCLSID) PURE;
+	STDMETHOD(InitNew)(THIS) PURE;
+	STDMETHOD(Load)(THIS_ LPPROPERTYBAG,LPERRORLOG) PURE;
+	STDMETHOD(Save)(THIS_ LPPROPERTYBAG,BOOL,BOOL) PURE;
+};
+#undef INTERFACE
+
+#ifdef COBJMACROS
+#define IPersistPropertyBag_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
+#define IPersistPropertyBag_AddRef(T) (T)->lpVtbl->AddRef(T)
+#define IPersistPropertyBag_Release(T) (T)->lpVtbl->Release(T)
+#define IPersistPropertyBag_GetClassID(T,a) (T)->lpVtbl->GetClassID(T,a)
+#define IPersistPropertyBag_InitNew(T) (T)->lpVtbl->InitNew(T)
+#define IPersistPropertyBag_Load(T,a,b) (T)->lpVtbl->Load(T,a,b)
+#define IPersistPropertyBag_Save(T,a,b,c) (T)->lpVtbl->Save(T,a,b,c)
+#endif
+
+EXTERN_C const IID IID_IPersistPropertyBag2;
+#define INTERFACE IPersistPropertyBag2
+DECLARE_INTERFACE_(IPersistPropertyBag2,IPersist)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetClassID)(THIS_ LPCLSID) PURE;
+	STDMETHOD(InitNew)(THIS) PURE;
+	STDMETHOD(Load)(THIS_ LPPROPERTYBAG2,LPERRORLOG) PURE;
+	STDMETHOD(Save)(THIS_ LPPROPERTYBAG2,BOOL,BOOL) PURE;
+	STDMETHOD(IsDirty)(THIS) PURE;
+};
+#undef INTERFACE
+
+#ifdef COBJMACROS
+#define IPersistPropertyBag2_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
+#define IPersistPropertyBag2_AddRef(T) (T)->lpVtbl->AddRef(T)
+#define IPersistPropertyBag2_Release(T) (T)->lpVtbl->Release(T)
+#define IPersistPropertyBag2_GetClassID(T,a) (T)->lpVtbl->GetClassID(T,a)
+#define IPersistPropertyBag2_InitNew(T) (T)->lpVtbl->InitNew(T)
+#define IPersistPropertyBag2_Load(T,a,b) (T)->lpVtbl->Load(T,a,b)
+#define IPersistPropertyBag2_Save(T,a,b,c) (T)->lpVtbl->Save(T,a,b,c)
+#define IPersistPropertyBag2_IsDirty(T) (T)->lpVtbl->IsDirty(T)
+#endif
+
+EXTERN_C const IID IID_IPersistStreamInit;
+#define INTERFACE IPersistStreamInit
+DECLARE_INTERFACE_(IPersistStreamInit,IPersist)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetClassID)(THIS_ LPCLSID) PURE;
+	STDMETHOD(IsDirty)(THIS) PURE;
+	STDMETHOD(Load)(THIS_ LPSTREAM) PURE;
+	STDMETHOD(Save)(THIS_ LPSTREAM,BOOL) PURE;
+	STDMETHOD(GetSizeMax)(THIS_ PULARGE_INTEGER) PURE;
+	STDMETHOD(InitNew)(THIS) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IPersistMemory;
+#define INTERFACE IPersistMemory
+DECLARE_INTERFACE_(IPersistMemory,IPersist)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetClassID)(THIS_ LPCLSID) PURE;
+	STDMETHOD(IsDirty)(THIS) PURE;
+	STDMETHOD(Load)(THIS_ PVOID,ULONG) PURE;
+	STDMETHOD(Save)(THIS_ PVOID,BOOL,ULONG) PURE;
+	STDMETHOD(GetSizeMax)(THIS_ PULONG) PURE;
+	STDMETHOD(InitNew)(THIS) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IPropertyNotifySink;
+#define INTERFACE IPropertyNotifySink
+DECLARE_INTERFACE_(IPropertyNotifySink,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(OnChanged)(THIS_ DISPID) PURE;
+	STDMETHOD(OnRequestEdit)(THIS_ DISPID) PURE;
+};
+#undef INTERFACE
+
+#ifdef COBJMACROS
+#define IPropertyNotifySink_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
+#define IPropertyNotifySink_AddRef(T) (T)->lpVtbl->AddRef(T)
+#define IPropertyNotifySink_Release(T) (T)->lpVtbl->Release(T)
+#define IPropertyNotifySink_OnChanged(T,a) (T)->lpVtbl->OnChanged(T,a)
+#define IPropertyNotifySink_OnRequestEdit(T,a) (T)->lpVtbl->OnRequestEdit(T,a)
+#endif
+
+EXTERN_C const IID IID_IProvideClassInfo;
+#define INTERFACE IProvideClassInfo
+DECLARE_INTERFACE_(IProvideClassInfo,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetClassInfo)(THIS_ LPTYPEINFO*) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IProvideClassInfo2;
+#define INTERFACE IProvideClassInfo2
+DECLARE_INTERFACE_(IProvideClassInfo2,IProvideClassInfo)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetClassInfo)(THIS_ LPTYPEINFO*) PURE;
+	STDMETHOD(GetGUID)(THIS_ DWORD,GUID*) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IConnectionPointContainer;
+#define INTERFACE IConnectionPointContainer
+DECLARE_INTERFACE_(IConnectionPointContainer,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(EnumConnectionPoints)(THIS_ LPENUMCONNECTIONPOINTS*) PURE;
+	STDMETHOD(FindConnectionPoint)(THIS_ REFIID,LPCONNECTIONPOINT*) PURE;
+};
+#undef INTERFACE
+
+#ifdef COBJMACROS
+#define IConnectionPointContainer_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
+#define IConnectionPointContainer_AddRef(T) (T)->lpVtbl->AddRef(T)
+#define IConnectionPointContainer_Release(T) (T)->lpVtbl->Release(T)
+#define IConnectionPointContainer_EnumConnectionPoints(T,a) (T)->lpVtbl->EnumConnectionPoints(T,a)
+#define IConnectionPointContainer_FindConnectionPoint(T,a,b) (T)->lpVtbl->FindConnectionPoint(T,a,b)
+#endif
+
+EXTERN_C const IID IID_IEnumConnectionPoints;
+#define INTERFACE IEnumConnectionPoints
+DECLARE_INTERFACE_(IEnumConnectionPoints,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(Next)(THIS_ ULONG,LPCONNECTIONPOINT*,ULONG*) PURE;
+	STDMETHOD(Skip)(THIS_ ULONG) PURE;
+	STDMETHOD(Reset)(THIS) PURE;
+	STDMETHOD(Clone)(THIS_ LPENUMCONNECTIONPOINTS*) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IConnectionPoint;
+#define INTERFACE IConnectionPoint
+DECLARE_INTERFACE_(IConnectionPoint,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetConnectionInterface)(THIS_ IID*) PURE;
+	STDMETHOD(GetConnectionPointContainer)(THIS_ IConnectionPointContainer**) PURE;
+	STDMETHOD(Advise)(THIS_ LPUNKNOWN,PDWORD) PURE;
+	STDMETHOD(Unadvise)(THIS_ DWORD) PURE;
+	STDMETHOD(EnumConnections)(THIS_ LPENUMCONNECTIONS*) PURE;
+};
+#undef INTERFACE
+
+#ifdef COBJMACROS
+#define IConnectionPoint_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
+#define IConnectionPoint_AddRef(T) (T)->lpVtbl->AddRef(T)
+#define IConnectionPoint_Release(T) (T)->lpVtbl->Release(T)
+#define IConnectionPoint_GetConnectionInterface(T,a) (T)->lpVtbl->GetConnectionInterface(T,a)
+#define IConnectionPoint_GetConnectionPointContainer(T,a) (T)->lpVtbl->GetConnectionPointContainer(T,a)
+#define IConnectionPoint_Advise(T,a,b) (T)->lpVtbl->Advise(T,a,b)
+#define IConnectionPoint_Unadvise(T,a) (T)->lpVtbl->Unadvise(T,a)
+#define IConnectionPoint_EnumConnections(T,a) (T)->lpVtbl->EnumConnections(T,a)
+#endif
+
+EXTERN_C const IID IID_IEnumConnections;
+#define INTERFACE IEnumConnections
+DECLARE_INTERFACE_(IEnumConnections,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(Next)(THIS_ ULONG,LPCONNECTDATA,PULONG) PURE;
+	STDMETHOD(Skip)(THIS_ ULONG) PURE;
+	STDMETHOD(Reset)(THIS) PURE;
+	STDMETHOD(Clone)(THIS_ LPENUMCONNECTIONS*) PURE;
+};
+#undef INTERFACE
+
+#ifdef COBJMACROS
+#define IEnumConnections_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
+#define IEnumConnections_AddRef(T) (T)->lpVtbl->AddRef(T)
+#define IEnumConnections_Release(T) (T)->lpVtbl->Release(T)
+#define IEnumConnections_Next(T,a,b,c) (T)->lpVtbl->Next(T,a,b,c)
+#define IEnumConnections_Skip(T,a) (T)->lpVtbl->Skip(T,a)
+#define IEnumConnections_Reset(T) (T)->lpVtbl->Reset(T)
+#define IEnumConnections_Clone(T,a) (T)->lpVtbl->Clone(T,a)
+#endif
+
+EXTERN_C const IID IID_IClassFactory2;
+#define INTERFACE IClassFactory2
+DECLARE_INTERFACE_(IClassFactory2,IClassFactory)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(CreateInstance)(THIS_ LPUNKNOWN,REFIID,PVOID*) PURE;
+	STDMETHOD(LockServer)(THIS_ BOOL) PURE;
+	STDMETHOD(GetLicInfo)(THIS_ LPLICINFO) PURE;
+	STDMETHOD(RequestLicKey)(THIS_ DWORD,BSTR*) PURE;
+	STDMETHOD(CreateInstanceLic)(THIS_ LPUNKNOWN,LPUNKNOWN,REFIID,BSTR,PVOID*) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_ISpecifyPropertyPages;
+#define INTERFACE ISpecifyPropertyPages
+DECLARE_INTERFACE_(ISpecifyPropertyPages,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetPages)(THIS_ CAUUID*) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IPerPropertyBrowsing;
+#define INTERFACE IPerPropertyBrowsing
+DECLARE_INTERFACE_(IPerPropertyBrowsing,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetDisplayString)(THIS_ DISPID,BSTR*) PURE;
+	STDMETHOD(MapPropertyToPage)(THIS_ DISPID,LPCLSID) PURE;
+	STDMETHOD(GetPredefinedStrings)(THIS_ DISPID,CALPOLESTR*,CADWORD*) PURE;
+	STDMETHOD(GetPredefinedValue)(THIS_ DISPID,DWORD,VARIANT*) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IPropertyPageSite;
+#define INTERFACE IPropertyPageSite
+DECLARE_INTERFACE_(IPropertyPageSite,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(OnStatusChange)(THIS_ DWORD) PURE;
+	STDMETHOD(GetLocaleID)(THIS_ LCID*) PURE;
+	STDMETHOD(GetPageContainer)(THIS_ LPUNKNOWN*) PURE;
+	STDMETHOD(TranslateAccelerator)(THIS_ LPMSG) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IPropertyPage;
+#define INTERFACE IPropertyPage
+DECLARE_INTERFACE_(IPropertyPage,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(SetPageSite)(THIS_ LPPROPERTYPAGESITE) PURE;
+	STDMETHOD(Activate)(THIS_ HWND,LPCRECT,BOOL) PURE;
+	STDMETHOD(Deactivate)(THIS) PURE;
+	STDMETHOD(GetPageInfo)(THIS_ LPPROPPAGEINFO) PURE;
+	STDMETHOD(SetObjects)(THIS_ ULONG,LPUNKNOWN*) PURE;
+	STDMETHOD(Show)(THIS_ UINT) PURE;
+	STDMETHOD(Move)(THIS_ LPCRECT) PURE;
+	STDMETHOD(IsPageDirty)(THIS) PURE;
+	STDMETHOD(Apply)(THIS) PURE;
+	STDMETHOD(Help)(THIS_ LPCOLESTR) PURE;
+	STDMETHOD(TranslateAccelerator)(THIS_ LPMSG) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IPropertyPage2;
+#define INTERFACE IPropertyPage2
+DECLARE_INTERFACE_(IPropertyPage2,IPropertyPage)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(SetPageSite)(THIS_ LPPROPERTYPAGESITE) PURE;
+	STDMETHOD(Activate)(THIS_ HWND,LPCRECT,BOOL) PURE;
+	STDMETHOD(Deactivate)(THIS) PURE;
+	STDMETHOD(GetPageInfo)(THIS_ LPPROPPAGEINFO) PURE;
+	STDMETHOD(SetObjects)(THIS_ ULONG,LPUNKNOWN*) PURE;
+	STDMETHOD(Show)(THIS_ UINT) PURE;
+	STDMETHOD(Move)(THIS_ LPCRECT) PURE;
+	STDMETHOD(IsPageDirty)(THIS) PURE;
+	STDMETHOD(Apply)(THIS) PURE;
+	STDMETHOD(Help)(THIS_ LPCOLESTR) PURE;
+	STDMETHOD(TranslateAccelerator)(THIS_ LPMSG) PURE;
+	STDMETHOD(EditProperty)(THIS_ DISPID) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IFont;
+#define INTERFACE IFont
+DECLARE_INTERFACE_(IFont,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(get_Name)(THIS_ BSTR*) PURE;
+	STDMETHOD(put_Name)(THIS_ BSTR) PURE;
+	STDMETHOD(get_Size)(THIS_ CY*) PURE;
+	STDMETHOD(put_Size)(THIS_ CY) PURE;
+	STDMETHOD(get_Bold)(THIS_ BOOL*) PURE;
+	STDMETHOD(put_Bold)(THIS_ BOOL) PURE;
+	STDMETHOD(get_Italic)(THIS_ BOOL*) PURE;
+	STDMETHOD(put_Italic)(THIS_ BOOL) PURE;
+	STDMETHOD(get_Underline)(THIS_ BOOL*) PURE;
+	STDMETHOD(put_Underline)(THIS_ BOOL) PURE;
+	STDMETHOD(get_Strikethrough)(THIS_ BOOL*) PURE;
+	STDMETHOD(put_Strikethrough)(THIS_ BOOL) PURE;
+	STDMETHOD(get_Weight)(THIS_ short*) PURE;
+	STDMETHOD(put_Weight)(THIS_ short) PURE;
+	STDMETHOD(get_Charset)(THIS_ short*) PURE;
+	STDMETHOD(put_Charset)(THIS_ short) PURE;
+	STDMETHOD(get_hFont)(THIS_ HFONT*) PURE;
+	STDMETHOD(Clone)(THIS_ IFont**) PURE;
+	STDMETHOD(IsEqual)(THIS_ IFont*) PURE;
+	STDMETHOD(SetRatio)(THIS_ long,long) PURE;
+	STDMETHOD(QueryTextMetrics)(THIS_ LPTEXTMETRICOLE) PURE;
+	STDMETHOD(AddRefHfont)(THIS_ HFONT) PURE;
+	STDMETHOD(ReleaseHfont)(THIS_ HFONT) PURE;
+	STDMETHOD(SetHdc)(THIS_ HDC) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IFontDisp;
+#define INTERFACE IFontDisp
+DECLARE_INTERFACE_(IFontDisp,IDispatch)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetTypeInfoCount)(THIS_ UINT*) PURE;
+	STDMETHOD(GetTypeInfo)(THIS_ UINT,LCID,LPTYPEINFO*) PURE;
+	STDMETHOD(GetIDsOfNames)(THIS_ REFIID,LPOLESTR*,UINT,LCID,DISPID*) PURE;
+	STDMETHOD(Invoke)(THIS_ DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IPicture;
+#define INTERFACE IPicture
+DECLARE_INTERFACE_(IPicture,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(get_Handle)(THIS_ OLE_HANDLE*) PURE;
+	STDMETHOD(get_hPal)(THIS_ OLE_HANDLE*) PURE;
+	STDMETHOD(get_Type)(THIS_ short*) PURE;
+	STDMETHOD(get_Width)(THIS_ OLE_XSIZE_HIMETRIC*) PURE;
+	STDMETHOD(get_Height)(THIS_ OLE_YSIZE_HIMETRIC*) PURE;
+	STDMETHOD(Render)(THIS_ HDC,long,long,long,long,OLE_XPOS_HIMETRIC,OLE_YPOS_HIMETRIC,OLE_XSIZE_HIMETRIC,OLE_YSIZE_HIMETRIC,LPCRECT) PURE;
+	STDMETHOD(set_hPal)(THIS_ OLE_HANDLE) PURE;
+	STDMETHOD(get_CurDC)(THIS_ HDC*) PURE;
+	STDMETHOD(SelectPicture)(THIS_ HDC,HDC*,OLE_HANDLE*) PURE;
+	STDMETHOD(get_KeepOriginalFormat)(THIS_ BOOL*) PURE;
+	STDMETHOD(put_KeepOriginalFormat)(THIS_ BOOL) PURE;
+	STDMETHOD(PictureChanged)(THIS) PURE;
+	STDMETHOD(SaveAsFile)(THIS_ LPSTREAM,BOOL,LONG*) PURE;
+	STDMETHOD(get_Attributes)(THIS_ PDWORD) PURE;
+};
+#undef INTERFACE
+
+#ifdef COBJMACROS
+#define IPicture_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IPicture_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IPicture_Release(p) (p)->lpVtbl->Release(p)
+#define IPicture_get_Handle(p,a) (p)->lpVtbl->get_Handle(p,a)
+#define IPicture_get_hPal(p,a) (p)->lpVtbl->get_hPal(p,a)
+#define IPicture_get_Type(p,a) (p)->lpVtbl->get_Type(p,a)
+#define IPicture_get_Width(p,a) (p)->lpVtbl->get_Width(p,a)
+#define IPicture_get_Height(p,a) (p)->lpVtbl->get_Height(p,a)
+#define IPicture_Render(p,a,b,c,d,e,f,g,h,i,j) (p)->lpVtbl->Render(p,a,b,c,d,e,f,g,h,i,j)
+#define IPicture_set_hPal(p,a) (p)->lpVtbl->set_hPal(p,a)
+#define IPicture_get_CurDC(p,a) (p)->lpVtbl->get_CurDC(p,a)
+#define IPicture_SelectPicture(p,a,b,c) (p)->lpVtbl->SelectPicture(p,a,b,c)
+#define IPicture_get_KeepOriginalFormat(p,a) (p)->lpVtbl->get_KeepOriginalFormat(p,a)
+#define IPicture_put_KeepOriginalFormat(p,a) (p)->lpVtbl->put_KeepOriginalFormat(p,a)
+#define IPicture_PictureChanged(p) (p)->lpVtbl->PictureChanged(p)
+#define IPicture_SaveAsFile(p,a,b,c) (p)->lpVtbl->SaveAsFile(p,a,b,c)
+#define IPicture_get_Attributes(p,a) (p)->lpVtbl->get_Attributes(p,a)
+#endif
+
+EXTERN_C const IID IID_IPictureDisp;
+#define INTERFACE IPictureDisp
+DECLARE_INTERFACE_(IPictureDisp,IDispatch)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetTypeInfoCount)(THIS_ UINT*) PURE;
+	STDMETHOD(GetTypeInfo)(THIS_ UINT,LCID,LPTYPEINFO*) PURE;
+	STDMETHOD(GetIDsOfNames)(THIS_ REFIID,LPOLESTR*,UINT,LCID,DISPID*) PURE;
+	STDMETHOD(Invoke)(THIS_ DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IOleInPlaceSiteEx;
+#define INTERFACE IOleInPlaceSiteEx
+DECLARE_INTERFACE_(IOleInPlaceSiteEx,IOleInPlaceSite)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetWindow)(THIS_ HWND*) PURE;
+	STDMETHOD(ContextSensitiveHelp)(THIS_ BOOL) PURE;
+	STDMETHOD(CanInPlaceActivate)(THIS) PURE;
+	STDMETHOD(OnInPlaceActivate)(THIS) PURE;
+	STDMETHOD(OnUIActivate)(THIS) PURE;
+	STDMETHOD(GetWindowContext)(THIS_ IOleInPlaceFrame**,IOleInPlaceUIWindow**,LPRECT,LPRECT,LPOLEINPLACEFRAMEINFO) PURE;
+	STDMETHOD(Scroll)(THIS_ SIZE) PURE;
+	STDMETHOD(OnUIDeactivate)(THIS_ BOOL) PURE;
+	STDMETHOD(OnInPlaceDeactivate)(THIS) PURE;
+	STDMETHOD(DiscardUndoState)(THIS) PURE;
+	STDMETHOD(DeactivateAndUndo)(THIS) PURE;
+	STDMETHOD(OnPosRectChange)(THIS_ LPCRECT) PURE;
+	STDMETHOD(OnInPlaceActivateEx)(THIS_ BOOL*,DWORD) PURE;
+	STDMETHOD(OnInPlaceDeactivateEx)(THIS_ BOOL) PURE;
+	STDMETHOD(RequestUIActivate)(THIS) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IObjectWithSite;
+#define INTERFACE IObjectWithSite
+DECLARE_INTERFACE_(IObjectWithSite,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(SetSite)(THIS_ IUnknown*) PURE;
+	STDMETHOD(GetSite)(THIS_ REFIID, void**) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IOleInPlaceSiteWindowless;
+#define INTERFACE IOleInPlaceSiteWindowless
+DECLARE_INTERFACE_(IOleInPlaceSiteWindowless,IOleInPlaceSiteEx)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetWindow)(THIS_ HWND*) PURE;
+	STDMETHOD(ContextSensitiveHelp)(THIS_ BOOL) PURE;
+	STDMETHOD(CanInPlaceActivate)(THIS) PURE;
+	STDMETHOD(OnInPlaceActivate)(THIS) PURE;
+	STDMETHOD(OnUIActivate)(THIS) PURE;
+	STDMETHOD(GetWindowContext)(THIS_ IOleInPlaceFrame**,IOleInPlaceUIWindow**,LPRECT,LPRECT,LPOLEINPLACEFRAMEINFO) PURE;
+	STDMETHOD(Scroll)(THIS_ SIZE) PURE;
+	STDMETHOD(OnUIDeactivate)(THIS_ BOOL) PURE;
+	STDMETHOD(OnInPlaceDeactivate)(THIS) PURE;
+	STDMETHOD(DiscardUndoState)(THIS) PURE;
+	STDMETHOD(DeactivateAndUndo)(THIS) PURE;
+	STDMETHOD(OnPosRectChange)(THIS_ LPCRECT) PURE;
+
+	STDMETHOD(OnInPlaceActivateEx)(THIS_ BOOL*,DWORD) PURE;
+	STDMETHOD(OnInPlaceDeactivateEx)(THIS_ BOOL) PURE;
+	STDMETHOD(RequestUIActivate)(THIS) PURE;
+
+	STDMETHOD(CanWindowlessActivate)(THIS) PURE;
+	STDMETHOD(GetCapture)(THIS) PURE;
+	STDMETHOD(SetCapture)(THIS_ BOOL) PURE;
+	STDMETHOD(GetFocus)(THIS) PURE;
+	STDMETHOD(SetFocus)(THIS_ BOOL) PURE;
+	STDMETHOD(GetDC)(THIS_ LPCRECT,DWORD,HDC*) PURE;
+	STDMETHOD(ReleaseDC)(THIS_ HDC) PURE;
+	STDMETHOD(InvalidateRect)(THIS_ LPCRECT,BOOL) PURE;
+	STDMETHOD(InvalidateRgn)(THIS_ HRGN,BOOL) PURE;
+	STDMETHOD(ScrollRect)(THIS_ INT,INT,LPCRECT,LPCRECT) PURE;
+	STDMETHOD(AdjustRect)(THIS_ LPCRECT) PURE;
+	STDMETHOD(OnDefWindowMessage)(THIS_ UINT,WPARAM,LPARAM,LRESULT*) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IAdviseSinkEx;
+#define INTERFACE IAdviseSinkEx
+DECLARE_INTERFACE_(IAdviseSinkEx,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD_(void,OnDataChange)(THIS_ FORMATETC*,STGMEDIUM*) PURE;
+	STDMETHOD_(void,OnViewChange)(THIS_ DWORD,LONG) PURE;
+	STDMETHOD_(void,OnRename)(THIS_ IMoniker*) PURE;
+	STDMETHOD_(void,OnSave)(THIS) PURE;
+	STDMETHOD_(void,OnClose)(THIS) PURE;
+	STDMETHOD(OnViewStatusChange)(THIS_ DWORD) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IPointerInactive;
+#define INTERFACE IPointerInactive
+DECLARE_INTERFACE_(IPointerInactive,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetActivationPolicy)(THIS_ DWORD*) PURE;
+	STDMETHOD(OnInactiveMouseMove)(THIS_ LPCRECT,LONG,LONG,DWORD) PURE;
+	STDMETHOD(OnInactiveSetCursor)(THIS_ LPCRECT,LONG,LONG,DWORD,BOOL) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IOleUndoUnit;
+#define INTERFACE IOleUndoUnit
+DECLARE_INTERFACE_(IOleUndoUnit,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(Do)(THIS_ LPOLEUNDOMANAGER) PURE;
+	STDMETHOD(GetDescription)(THIS_ BSTR*) PURE;
+	STDMETHOD(GetUnitType)(THIS_ CLSID*,LONG*) PURE;
+	STDMETHOD(OnNextAdd)(THIS) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IOleParentUndoUnit;
+#define INTERFACE IOleParentUndoUnit
+DECLARE_INTERFACE_(IOleParentUndoUnit,IOleUndoUnit)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(Do)(THIS_ LPOLEUNDOMANAGER) PURE;
+	STDMETHOD(GetDescription)(THIS_ BSTR*) PURE;
+	STDMETHOD(GetUnitType)(THIS_ CLSID*,LONG*) PURE;
+	STDMETHOD(OnNextAdd)(THIS) PURE;
+	STDMETHOD(Open)(THIS_ IOleParentUndoUnit*) PURE;
+	STDMETHOD(Close)(THIS_ IOleParentUndoUnit*,BOOL) PURE;
+	STDMETHOD(Add)(THIS_ IOleUndoUnit*) PURE;
+	STDMETHOD(FindUnit)(THIS_ IOleUndoUnit*) PURE;
+	STDMETHOD(GetParentState)(THIS_ DWORD*) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IEnumOleUndoUnits;
+#define INTERFACE IEnumOleUndoUnits
+DECLARE_INTERFACE_(IEnumOleUndoUnits,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(Next)(THIS_ ULONG,IOleUndoUnit**,ULONG*) PURE;
+	STDMETHOD(Skip)(THIS_ ULONG) PURE;
+	STDMETHOD(Reset)(THIS) PURE;
+	STDMETHOD(Clone)(THIS_ IEnumOleUndoUnits**) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IOleUndoManager;
+#define INTERFACE IOleUndoManager
+DECLARE_INTERFACE_(IOleUndoManager,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(Open)(THIS_ IOleParentUndoUnit*) PURE;
+	STDMETHOD(Close)(THIS_ IOleParentUndoUnit*,BOOL) PURE;
+	STDMETHOD(Add)(THIS_ IOleUndoUnit*) PURE;
+	STDMETHOD(GetOpenParentState)(THIS_ DWORD*) PURE;
+	STDMETHOD(DiscardFrom)(THIS_ IOleUndoUnit*) PURE;
+	STDMETHOD(UndoTo)(THIS_ IOleUndoUnit*) PURE;
+	STDMETHOD(RedoTo)(THIS_ IOleUndoUnit*) PURE;
+	STDMETHOD(EnumUndoable)(THIS_ IEnumOleUndoUnits**) PURE;
+	STDMETHOD(EnumRedoable)(THIS_ IEnumOleUndoUnits**) PURE;
+	STDMETHOD(GetLastUndoDescription)(THIS_ BSTR*) PURE;
+	STDMETHOD(GetLastRedoDescription)(THIS_ BSTR*) PURE;
+	STDMETHOD(Enable)(THIS_ BOOL) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IQuickActivate;
+#define INTERFACE IQuickActivate
+DECLARE_INTERFACE_(IQuickActivate,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(QuickActivate)(THIS_ QACONTAINER*,QACONTROL*) PURE;
+	STDMETHOD(SetContentExtent)(THIS_ LPSIZEL) PURE;
+	STDMETHOD(GetContentExtent)(THIS_ LPSIZEL) PURE;
+};
+#undef INTERFACE
+
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/odbcinst.h
===================================================================
--- Daodan/MinGW/include/odbcinst.h	(revision 1046)
+++ Daodan/MinGW/include/odbcinst.h	(revision 1046)
@@ -0,0 +1,148 @@
+#ifndef _ODBCINST_H
+#define _ODBCINST_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+#include <sql.h>
+#ifdef __cplusplus
+extern "C" {
+#endif
+#ifndef ODBCVER
+#define ODBCVER 0x0351
+#endif
+#define INSTAPI __stdcall
+#define  ODBC_ADD_DSN     1
+#define  ODBC_CONFIG_DSN  2
+#define  ODBC_REMOVE_DSN  3
+#if (ODBCVER >= 0x0250)
+#define ODBC_ADD_SYS_DSN 4
+#define ODBC_CONFIG_SYS_DSN 5
+#define ODBC_REMOVE_SYS_DSN 6
+#define ODBC_INSTALL_INQUIRY 1
+#define ODBC_INSTALL_COMPLETE 2
+#define ODBC_INSTALL_DRIVER 1
+#define ODBC_REMOVE_DRIVER 2
+#define ODBC_CONFIG_DRIVER 3
+#define ODBC_CONFIG_DRIVER_MAX 100
+#endif /* (ODBCVER >= 0x0250) */
+#if (ODBCVER >= 0x0300)
+#define ODBC_REMOVE_DEFAULT_DSN 7
+#define ODBC_BOTH_DSN 0
+#define ODBC_USER_DSN 1
+#define ODBC_SYSTEM_DSN 2
+#define ODBC_ERROR_GENERAL_ERR 1
+#define ODBC_ERROR_INVALID_BUFF_LEN 2
+#define ODBC_ERROR_INVALID_HWND 3
+#define ODBC_ERROR_INVALID_STR 4
+#define ODBC_ERROR_INVALID_REQUEST_TYPE 5
+#define ODBC_ERROR_COMPONENT_NOT_FOUND 6
+#define ODBC_ERROR_INVALID_NAME 7
+#define ODBC_ERROR_INVALID_KEYWORD_VALUE 8
+#define ODBC_ERROR_INVALID_DSN 9
+#define ODBC_ERROR_INVALID_INF 10
+#define ODBC_ERROR_REQUEST_FAILED 11
+#define ODBC_ERROR_INVALID_PATH 12
+#define ODBC_ERROR_LOAD_LIB_FAILED 13
+#define ODBC_ERROR_INVALID_PARAM_SEQUENCE 14
+#define ODBC_ERROR_INVALID_LOG_FILE 15
+#define ODBC_ERROR_USER_CANCELED 16
+#define ODBC_ERROR_USAGE_UPDATE_FAILED 17
+#define ODBC_ERROR_CREATE_DSN_FAILED 18
+#define ODBC_ERROR_WRITING_SYSINFO_FAILED 19
+#define ODBC_ERROR_REMOVE_DSN_FAILED 20
+#define ODBC_ERROR_OUT_OF_MEM 21
+#define ODBC_ERROR_OUTPUT_STRING_TRUNCATED 22
+#endif /* ODBCVER >= 0x0300 */
+
+#ifndef RC_INVOKED
+BOOL INSTAPI ConfigDSN(HWND,WORD,LPCSTR,LPCSTR);
+BOOL INSTAPI ConfigDSNW(HWND,WORD,LPCWSTR,LPCWSTR);
+BOOL INSTAPI ConfigTranslator(HWND,DWORD*);
+BOOL INSTAPI SQLConfigDataSource(HWND,WORD,LPCSTR,LPCSTR);
+BOOL INSTAPI SQLConfigDataSourceW(HWND,WORD,LPCWSTR,LPCWSTR);
+BOOL INSTAPI SQLCreateDataSource(HWND,LPCSTR);
+BOOL INSTAPI SQLCreateDataSourceW(HWND,LPCWSTR);
+BOOL INSTAPI SQLGetAvailableDrivers(LPCSTR,LPSTR,WORD,WORD*);
+BOOL INSTAPI SQLGetAvailableDriversW(LPCWSTR,LPWSTR,WORD,WORD*);
+BOOL INSTAPI SQLGetInstalledDrivers(LPSTR,WORD,WORD*);
+BOOL INSTAPI SQLGetInstalledDriversW(LPWSTR,WORD,WORD*);
+int INSTAPI SQLGetPrivateProfileString(LPCSTR,LPCSTR,LPCSTR,LPSTR,int,LPCSTR);
+int INSTAPI SQLGetPrivateProfileStringW(LPCWSTR,LPCWSTR,LPCWSTR,LPWSTR,int,LPCWSTR);
+BOOL INSTAPI SQLGetTranslator(HWND,LPSTR,WORD,WORD*,LPSTR,WORD,WORD*,DWORD*);
+BOOL INSTAPI SQLGetTranslatorW(HWND,LPWSTR,WORD,WORD*,LPWSTR,WORD,WORD*,DWORD*);
+BOOL INSTAPI SQLInstallDriver(LPCSTR,LPCSTR,LPSTR,WORD,WORD*);
+BOOL INSTAPI SQLInstallDriverManager(LPSTR,WORD,WORD*);
+BOOL INSTAPI SQLInstallDriverManagerW(LPWSTR,WORD,WORD*);
+BOOL INSTAPI SQLInstallDriverW(LPCWSTR,LPCWSTR,LPWSTR,WORD,WORD*);
+BOOL INSTAPI SQLInstallODBC(HWND,LPCSTR,LPCSTR,LPCSTR);
+BOOL INSTAPI SQLInstallODBCW(HWND,LPCWSTR,LPCWSTR,LPCWSTR);
+BOOL INSTAPI SQLManageDataSources(HWND);
+BOOL INSTAPI SQLRemoveDefaultDataSource(void);
+BOOL INSTAPI SQLRemoveDSNFromIni(LPCSTR);
+BOOL INSTAPI SQLRemoveDSNFromIniW(LPCWSTR);
+BOOL INSTAPI SQLValidDSN(LPCSTR);
+BOOL INSTAPI SQLValidDSNW(LPCWSTR);
+BOOL INSTAPI SQLWriteDSNToIni(LPCSTR,LPCSTR);
+BOOL INSTAPI SQLWriteDSNToIniW(LPCWSTR,LPCWSTR);
+BOOL INSTAPI SQLWritePrivateProfileString(LPCSTR,LPCSTR,LPCSTR,LPCSTR);
+BOOL INSTAPI SQLWritePrivateProfileStringW(LPCWSTR,LPCWSTR,LPCWSTR,LPCWSTR);
+#if(ODBCVER >= 0x0250)
+BOOL INSTAPI ConfigDriver(HWND,WORD,LPCSTR,LPCSTR,LPSTR,WORD,WORD*);
+BOOL INSTAPI ConfigDriverW(HWND,WORD,LPCWSTR,LPCWSTR,LPWSTR,WORD,WORD*);
+BOOL INSTAPI SQLConfigDriver(HWND,WORD,LPCSTR,LPCSTR,LPSTR,WORD,WORD*);
+BOOL INSTAPI SQLConfigDriverW(HWND,WORD,LPCWSTR,LPCWSTR,LPWSTR,WORD,WORD*);
+BOOL INSTAPI SQLInstallTranslator(LPCSTR,LPCSTR,LPCSTR,LPSTR,WORD,WORD*,WORD,LPDWORD);
+BOOL INSTAPI SQLInstallTranslatorW(LPCWSTR,LPCWSTR,LPCWSTR,LPWSTR,WORD,WORD*,WORD,LPDWORD);
+BOOL INSTAPI SQLRemoveDriver(LPCSTR,BOOL,LPDWORD);
+BOOL INSTAPI SQLRemoveDriverManager(LPDWORD);
+BOOL INSTAPI SQLRemoveDriverW(LPCWSTR,BOOL,LPDWORD);
+BOOL INSTAPI SQLRemoveTranslator(LPCSTR,LPDWORD);
+BOOL INSTAPI SQLRemoveTranslatorW(LPCWSTR,LPDWORD);
+#endif /* ODBCVER >= 0x0250 */
+#if (ODBCVER >= 0x0300)
+BOOL INSTAPI SQLGetConfigMode(UWORD*);
+BOOL INSTAPI SQLInstallDriverEx(LPCSTR,LPCSTR,LPSTR,WORD,WORD*,WORD,LPDWORD);
+BOOL INSTAPI SQLInstallDriverExW(LPCWSTR,LPCWSTR,LPWSTR,WORD,WORD*,WORD,LPDWORD);
+SQLRETURN INSTAPI SQLInstallerError(WORD,DWORD*,LPSTR,WORD,WORD*);
+SQLRETURN INSTAPI SQLInstallerErrorW(WORD,DWORD*,LPWSTR,WORD,WORD*);
+BOOL INSTAPI SQLInstallTranslatorEx(LPCSTR,LPCSTR,LPSTR,WORD,WORD*,WORD,LPDWORD);
+BOOL INSTAPI SQLInstallTranslatorExW(LPCWSTR,LPCWSTR,LPWSTR,WORD,WORD*,WORD,LPDWORD);
+SQLRETURN INSTAPI SQLPostInstallerError(DWORD,LPCSTR);
+SQLRETURN INSTAPI SQLPostInstallerErrorW(DWORD,LPCWSTR);
+BOOL INSTAPI SQLReadFileDSN(LPCSTR,LPCSTR,LPCSTR,LPSTR,WORD,WORD*);
+BOOL INSTAPI SQLReadFileDSNW(LPCWSTR,LPCWSTR,LPCWSTR,LPWSTR,WORD,WORD*);
+BOOL INSTAPI SQLSetConfigMode(UWORD);
+BOOL INSTAPI SQLWriteFileDSN(LPCSTR,LPCSTR,LPCSTR,LPCSTR);
+BOOL INSTAPI SQLWriteFileDSNW(LPCWSTR,LPCWSTR,LPCWSTR,LPCWSTR);
+#endif /* ODBCVER >= 0x0300 */
+
+#if defined (UNICODE) && !defined (SQL_NOUNICODEMAP)
+#define SQLConfigDataSource SQLConfigDataSourceW
+#define SQLConfigDriver SQLConfigDriverW
+#define SQLCreateDataSource SQLCreateDataSourceW
+#define SQLGetAvailableDrivers SQLGetAvailableDriversW
+#define SQLGetInstalledDrivers SQLGetInstalledDriversW
+#define SQLGetPrivateProfileString SQLGetPrivateProfileStringW
+#define SQLGetTranslator SQLGetTranslatorW
+#define SQLInstallDriver SQLInstallDriverW
+#define SQLInstallDriverEx SQLInstallDriverExW
+#define SQLInstallDriverManager SQLInstallDriverManagerW
+#define SQLInstallerError SQLInstallerErrorW
+#define SQLInstallODBC SQLInstallODBCW
+#define SQLInstallTranslator SQLInstallTranslatorW
+#define SQLInstallTranslatorEx SQLInstallTranslatorExW
+#define SQLPostInstallerError SQLPostInstallerErrorW
+#define SQLReadFileDSN SQLReadFileDSNW
+#define SQLRemoveDriver SQLRemoveDriverW
+#define SQLRemoveDSNFromIni SQLRemoveDSNFromIniW
+#define SQLRemoveTranslator SQLRemoveTranslatorW
+#define SQLValidDSN SQLValidDSNW
+#define SQLWriteDSNToIni SQLWriteDSNToIniW
+#define SQLWriteFileDSN SQLWriteFileDSNW
+#define SQLWritePrivateProfileString SQLWritePrivateProfileStringW
+#endif /* UNICODE && !SQL_NOUNICODEMAP */
+#endif /* RC_INVOKED */
+#ifdef __cplusplus
+}
+#endif
+#endif /* _ODBCINST_H */
Index: Daodan/MinGW/include/ole.h
===================================================================
--- Daodan/MinGW/include/ole.h	(revision 1046)
+++ Daodan/MinGW/include/ole.h	(revision 1046)
@@ -0,0 +1,308 @@
+#ifndef _OLE_H
+#define _OLE_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#ifdef STRICT
+#define OLE_LPCSTR LPCSTR
+#define OLE_CONST const
+#else
+#define OLE_LPCSTR LPSTR
+#define OLE_CONST
+#endif
+#define LRESULT LONG
+#define HGLOBAL HANDLE
+#define OT_LINK 1L
+#define OT_EMBEDDED 2L
+#define OT_STATIC 3L
+#define OLEVERB_PRIMARY 0
+#define OF_SET 1
+#define OF_GET 2
+#define OF_HANDLER 4
+
+typedef struct _OLETARGETDEVICE {
+	USHORT otdDeviceNameOffset;
+	USHORT otdDriverNameOffset;
+	USHORT otdPortNameOffset;
+	USHORT otdExtDevmodeOffset;
+	USHORT otdExtDevmodeSize;
+	USHORT otdEnvironmentOffset;
+	USHORT otdEnvironmentSize;
+	BYTE otdData[1];
+} OLETARGETDEVICE;
+typedef OLETARGETDEVICE *LPOLETARGETDEVICE;
+typedef enum {
+OLE_OK,
+OLE_WAIT_FOR_RELEASE,
+OLE_BUSY,
+OLE_ERROR_PROTECT_ONLY,
+OLE_ERROR_MEMORY,
+OLE_ERROR_STREAM,
+OLE_ERROR_STATIC,
+OLE_ERROR_BLANK,
+OLE_ERROR_DRAW,
+OLE_ERROR_METAFILE,
+OLE_ERROR_ABORT,
+OLE_ERROR_CLIPBOARD,
+OLE_ERROR_FORMAT,
+OLE_ERROR_OBJECT,
+OLE_ERROR_OPTION,
+OLE_ERROR_PROTOCOL,
+OLE_ERROR_ADDRESS,
+OLE_ERROR_NOT_EQUAL,
+OLE_ERROR_HANDLE,
+OLE_ERROR_GENERIC,
+OLE_ERROR_CLASS,
+OLE_ERROR_SYNTAX,
+OLE_ERROR_DATATYPE,
+OLE_ERROR_PALETTE,
+OLE_ERROR_NOT_LINK,
+OLE_ERROR_NOT_EMPTY,
+OLE_ERROR_SIZE,
+OLE_ERROR_DRIVE,
+OLE_ERROR_NETWORK,
+OLE_ERROR_NAME,
+OLE_ERROR_TEMPLATE,
+OLE_ERROR_NEW,
+OLE_ERROR_EDIT,
+OLE_ERROR_OPEN,
+OLE_ERROR_NOT_OPEN,
+OLE_ERROR_LAUNCH,
+OLE_ERROR_COMM,
+OLE_ERROR_TERMINATE,
+OLE_ERROR_COMMAND,
+OLE_ERROR_SHOW,
+OLE_ERROR_DOVERB,
+OLE_ERROR_ADVISE_NATIVE,
+OLE_ERROR_ADVISE_PICT,
+OLE_ERROR_ADVISE_RENAME,
+OLE_ERROR_POKE_NATIVE,
+OLE_ERROR_REQUEST_NATIVE,
+OLE_ERROR_REQUEST_PICT,
+OLE_ERROR_SERVER_BLOCKED,
+OLE_ERROR_REGISTRATION,
+OLE_ERROR_ALREADY_REGISTERED,
+OLE_ERROR_TASK,
+OLE_ERROR_OUTOFDATE,
+OLE_ERROR_CANT_UPDATE_CLIENT,
+OLE_ERROR_UPDATE,
+OLE_ERROR_SETDATA_FORMAT,
+OLE_ERROR_STATIC_FROM_OTHER_OS,
+OLE_ERROR_FILE_VER,
+OLE_WARN_DELETE_DATA = 1000
+} OLESTATUS;
+typedef enum {
+	OLE_CHANGED,
+	OLE_SAVED,
+	OLE_CLOSED,
+	OLE_RENAMED,
+	OLE_QUERY_PAINT,
+	OLE_RELEASE,
+	OLE_QUERY_RETRY
+} OLE_NOTIFICATION;
+typedef enum {
+	OLE_NONE,
+	OLE_DELETE,
+	OLE_LNKPASTE,
+	OLE_EMBPASTE,
+	OLE_SHOW,
+	OLE_RUN,
+	OLE_ACTIVATE,
+	OLE_UPDATE,
+	OLE_CLOSE,
+	OLE_RECONNECT,
+	OLE_SETUPDATEOPTIONS,
+	OLE_SERVERUNLAUNCH,
+	OLE_LOADFROMSTREAM,
+	OLE_SETDATA,
+	OLE_REQUESTDATA,
+	OLE_OTHER,
+	OLE_CREATE,
+	OLE_CREATEFROMTEMPLATE,
+	OLE_CREATELINKFROMFILE,
+	OLE_COPYFROMLNK,
+	OLE_CREATEFROMFILE,
+	OLE_CREATEINVISIBLE
+} OLE_RELEASE_METHOD;
+typedef enum {
+	olerender_none,
+	olerender_draw,
+	olerender_format
+	} OLEOPT_RENDER;
+typedef WORD OLECLIPFORMAT;
+typedef enum {
+	oleupdate_always,
+	oleupdate_onsave,
+#ifdef OLE_INTERNAL
+	oleupdate_oncall,
+	oleupdate_onclose
+#else
+	oleupdate_oncall
+#endif
+} OLEOPT_UPDATE;
+typedef HANDLE HOBJECT;
+typedef LONG LHSERVER;
+typedef LONG LHCLIENTDOC;
+typedef LONG LHSERVERDOC;
+typedef struct _OLEOBJECT *LPOLEOBJECT;
+typedef struct _OLESTREAM *LPOLESTREAM;
+typedef struct _OLECLIENT *LPOLECLIENT;
+typedef struct _OLEOBJECTVTBL {
+	void *(CALLBACK* QueryProtocol)(LPOLEOBJECT,OLE_LPCSTR);
+	OLESTATUS (CALLBACK* Release)(LPOLEOBJECT);
+	OLESTATUS (CALLBACK* Show)(LPOLEOBJECT,BOOL);
+	OLESTATUS (CALLBACK* DoVerb)(LPOLEOBJECT,UINT,BOOL,BOOL);
+	OLESTATUS (CALLBACK* GetData)(LPOLEOBJECT,OLECLIPFORMAT,HANDLE*);
+	OLESTATUS (CALLBACK* SetData)(LPOLEOBJECT,OLECLIPFORMAT,HANDLE);
+	OLESTATUS (CALLBACK* SetTargetDevice)(LPOLEOBJECT,HGLOBAL);
+	OLESTATUS (CALLBACK* SetBounds)(LPOLEOBJECT,OLE_CONST RECT*);
+	OLECLIPFORMAT (CALLBACK* EnumFormats)(LPOLEOBJECT,OLECLIPFORMAT);
+	OLESTATUS (CALLBACK* SetColorScheme)(LPOLEOBJECT,OLE_CONST LOGPALETTE*);
+#ifndef SERVERONLY
+	OLESTATUS (CALLBACK* Delete)(LPOLEOBJECT);
+	OLESTATUS (CALLBACK* SetHostNames)(LPOLEOBJECT,OLE_LPCSTR,OLE_LPCSTR);
+	OLESTATUS (CALLBACK* SaveToStream)(LPOLEOBJECT,LPOLESTREAM);
+	OLESTATUS (CALLBACK* Clone)(LPOLEOBJECT,LPOLECLIENT,LHCLIENTDOC,OLE_LPCSTR,LPOLEOBJECT*);
+	OLESTATUS (CALLBACK* CopyFromLink)(LPOLEOBJECT,LPOLECLIENT,LHCLIENTDOC,OLE_LPCSTR,LPOLEOBJECT*);
+	OLESTATUS (CALLBACK* Equal)(LPOLEOBJECT,LPOLEOBJECT);
+	OLESTATUS (CALLBACK* CopyToClipboard)(LPOLEOBJECT);
+	OLESTATUS (CALLBACK* Draw)(LPOLEOBJECT,HDC,OLE_CONST RECT*,OLE_CONST RECT*,HDC);
+	OLESTATUS (CALLBACK* Activate)(LPOLEOBJECT,UINT,BOOL,BOOL,HWND,OLE_CONST RECT*);
+	OLESTATUS (CALLBACK* Execute)(LPOLEOBJECT,HGLOBAL,UINT);
+	OLESTATUS (CALLBACK* Close)(LPOLEOBJECT);
+	OLESTATUS (CALLBACK* Update)(LPOLEOBJECT);
+	OLESTATUS (CALLBACK* Reconnect)(LPOLEOBJECT);
+	OLESTATUS (CALLBACK* ObjectConvert)(LPOLEOBJECT,OLE_LPCSTR,LPOLECLIENT,LHCLIENTDOC,OLE_LPCSTR,LPOLEOBJECT*);
+	OLESTATUS (CALLBACK* GetLinkUpdateOptions)(LPOLEOBJECT,OLEOPT_UPDATE*);
+	OLESTATUS (CALLBACK* SetLinkUpdateOptions)(LPOLEOBJECT,OLEOPT_UPDATE);
+	OLESTATUS (CALLBACK* Rename)(LPOLEOBJECT,OLE_LPCSTR);
+	OLESTATUS (CALLBACK* QueryName)(LPOLEOBJECT,LPSTR,UINT*);
+	OLESTATUS (CALLBACK* QueryType)(LPOLEOBJECT,LONG*);
+	OLESTATUS (CALLBACK* QueryBounds)(LPOLEOBJECT,RECT*);
+	OLESTATUS (CALLBACK* QuerySize)(LPOLEOBJECT,DWORD*);
+	OLESTATUS (CALLBACK* QueryOpen)(LPOLEOBJECT);
+	OLESTATUS (CALLBACK* QueryOutOfDate)(LPOLEOBJECT);
+	OLESTATUS (CALLBACK* QueryReleaseStatus)(LPOLEOBJECT);
+	OLESTATUS (CALLBACK* QueryReleaseError)(LPOLEOBJECT);
+	OLE_RELEASE_METHOD (CALLBACK* QueryReleaseMethod)(LPOLEOBJECT);
+	OLESTATUS (CALLBACK* RequestData)(LPOLEOBJECT,OLECLIPFORMAT);
+	OLESTATUS (CALLBACK* ObjectLong)(LPOLEOBJECT,UINT,LONG*);
+	OLESTATUS (CALLBACK* ChangeData)(LPOLEOBJECT,HANDLE,LPOLECLIENT,BOOL);
+#endif
+} OLEOBJECTVTBL;
+typedef OLEOBJECTVTBL*LPOLEOBJECTVTBL;
+#ifndef OLE_INTERNAL
+typedef struct _OLEOBJECT { LPOLEOBJECTVTBL lpvtbl; } OLEOBJECT;
+#endif
+typedef struct _OLECLIENTVTBL { int (CALLBACK* CallBack)(LPOLECLIENT,OLE_NOTIFICATION,LPOLEOBJECT); } OLECLIENTVTBL;
+typedef OLECLIENTVTBL *LPOLECLIENTVTBL;
+typedef struct _OLECLIENT { LPOLECLIENTVTBL lpvtbl; } OLECLIENT;
+typedef struct _OLESTREAMVTBL {
+	DWORD (CALLBACK* Get)(LPOLESTREAM,void*,DWORD);
+	DWORD (CALLBACK* Put)(LPOLESTREAM,OLE_CONST void*,DWORD);
+} OLESTREAMVTBL;
+typedef OLESTREAMVTBL *LPOLESTREAMVTBL;
+typedef struct _OLESTREAM { LPOLESTREAMVTBL lpstbl; } OLESTREAM;
+typedef enum {
+	OLE_SERVER_MULTI,
+	OLE_SERVER_SINGLE
+} OLE_SERVER_USE;
+typedef struct _OLESERVER *LPOLESERVER;
+typedef struct _OLESERVERDOC *LPOLESERVERDOC;
+typedef struct _OLESERVERVTBL {
+	OLESTATUS (CALLBACK* Open)(LPOLESERVER,LHSERVERDOC,OLE_LPCSTR,LPOLESERVERDOC*);
+	OLESTATUS (CALLBACK* Create)(LPOLESERVER,LHSERVERDOC,OLE_LPCSTR,OLE_LPCSTR,LPOLESERVERDOC*);
+	OLESTATUS (CALLBACK* CreateFromTemplate)(LPOLESERVER,LHSERVERDOC,OLE_LPCSTR,OLE_LPCSTR,OLE_LPCSTR,LPOLESERVERDOC*);
+	OLESTATUS (CALLBACK* Edit)(LPOLESERVER,LHSERVERDOC,OLE_LPCSTR,OLE_LPCSTR,LPOLESERVERDOC*);
+	OLESTATUS (CALLBACK* Exit)(LPOLESERVER);
+	OLESTATUS (CALLBACK* Release)(LPOLESERVER);
+	OLESTATUS (CALLBACK* Execute)(LPOLESERVER,HGLOBAL);
+} OLESERVERVTBL;
+typedef OLESERVERVTBL *LPOLESERVERVTBL;
+typedef struct _OLESERVER { LPOLESERVERVTBL lpvtbl; } OLESERVER;
+typedef struct _OLESERVERDOCVTBL {
+	OLESTATUS (CALLBACK* Save)(LPOLESERVERDOC);
+	OLESTATUS (CALLBACK* Close)(LPOLESERVERDOC);
+	OLESTATUS (CALLBACK* SetHostNames)(LPOLESERVERDOC,OLE_LPCSTR,OLE_LPCSTR);
+	OLESTATUS (CALLBACK* SetDocDimensions)(LPOLESERVERDOC,OLE_CONST RECT*);
+	OLESTATUS (CALLBACK* GetObject)(LPOLESERVERDOC,OLE_LPCSTR,LPOLEOBJECT*,LPOLECLIENT);
+	OLESTATUS (CALLBACK* Release)(LPOLESERVERDOC);
+	OLESTATUS (CALLBACK* SetColorScheme)(LPOLESERVERDOC,OLE_CONST LOGPALETTE*);
+	OLESTATUS (CALLBACK* Execute)(LPOLESERVERDOC,HGLOBAL);
+} OLESERVERDOCVTBL;
+typedef OLESERVERDOCVTBL *LPOLESERVERDOCVTBL;
+typedef struct _OLESERVERDOC { LPOLESERVERDOCVTBL lpvtbl; } OLESERVERDOC;
+OLESTATUS WINAPI OleDelete(LPOLEOBJECT);
+OLESTATUS WINAPI OleRelease(LPOLEOBJECT);
+OLESTATUS WINAPI OleSaveToStream(LPOLEOBJECT,LPOLESTREAM);
+OLESTATUS WINAPI OleEqual(LPOLEOBJECT,LPOLEOBJECT );
+OLESTATUS WINAPI OleCopyToClipboard(LPOLEOBJECT);
+OLESTATUS WINAPI OleSetHostNames(LPOLEOBJECT,LPCSTR,LPCSTR);
+OLESTATUS WINAPI OleSetTargetDevice(LPOLEOBJECT,HGLOBAL);
+OLESTATUS WINAPI OleSetBounds(LPOLEOBJECT,LPCRECT);
+OLESTATUS WINAPI OleSetColorScheme(LPOLEOBJECT,const LOGPALETTE*);
+OLESTATUS WINAPI OleQueryBounds(LPOLEOBJECT,RECT*);
+OLESTATUS WINAPI OleQuerySize(LPOLEOBJECT,DWORD*);
+OLESTATUS WINAPI OleDraw(LPOLEOBJECT,HDC,LPCRECT,LPCRECT,HDC);
+OLESTATUS WINAPI OleQueryOpen(LPOLEOBJECT);
+OLESTATUS WINAPI OleActivate(LPOLEOBJECT,UINT,BOOL,BOOL,HWND,LPCRECT);
+OLESTATUS WINAPI OleExecute(LPOLEOBJECT,HGLOBAL,UINT);
+OLESTATUS WINAPI OleClose(LPOLEOBJECT);
+OLESTATUS WINAPI OleUpdate(LPOLEOBJECT);
+OLESTATUS WINAPI OleReconnect(LPOLEOBJECT);
+OLESTATUS WINAPI OleGetLinkUpdateOptions(LPOLEOBJECT,OLEOPT_UPDATE*);
+OLESTATUS WINAPI OleSetLinkUpdateOptions(LPOLEOBJECT,OLEOPT_UPDATE);
+WINAPI void *OleQueryProtocol(LPOLEOBJECT,LPCSTR);
+OLESTATUS WINAPI OleQueryReleaseStatus(LPOLEOBJECT);
+OLESTATUS WINAPI OleQueryReleaseError(LPOLEOBJECT);
+OLE_RELEASE_METHOD WINAPI OleQueryReleaseMethod(LPOLEOBJECT);
+OLESTATUS WINAPI OleQueryType(LPOLEOBJECT,LONG*);
+DWORD WINAPI OleQueryClientVersion(void);
+DWORD WINAPI OleQueryServerVersion(void);
+OLECLIPFORMAT WINAPI OleEnumFormats(LPOLEOBJECT,OLECLIPFORMAT);
+OLESTATUS WINAPI OleGetData(LPOLEOBJECT,OLECLIPFORMAT,HANDLE*);
+OLESTATUS WINAPI OleSetData(LPOLEOBJECT,OLECLIPFORMAT,HANDLE);
+OLESTATUS WINAPI OleQueryOutOfDate(LPOLEOBJECT);
+OLESTATUS WINAPI OleRequestData(LPOLEOBJECT,OLECLIPFORMAT);
+OLESTATUS WINAPI OleQueryLinkFromClip(LPCSTR,OLEOPT_RENDER,OLECLIPFORMAT);
+OLESTATUS WINAPI OleQueryCreateFromClip(LPCSTR,OLEOPT_RENDER,OLECLIPFORMAT);
+OLESTATUS WINAPI OleCreateFromClip(LPCSTR,LPOLECLIENT,LHCLIENTDOC,LPCSTR,LPOLEOBJECT*,OLEOPT_RENDER,OLECLIPFORMAT);
+OLESTATUS WINAPI OleCreateLinkFromClip(LPCSTR,LPOLECLIENT,LHCLIENTDOC,LPCSTR,LPOLEOBJECT*,OLEOPT_RENDER,OLECLIPFORMAT);
+OLESTATUS WINAPI OleCreateFromFile(LPCSTR,LPOLECLIENT,LPCSTR,LPCSTR,LHCLIENTDOC,LPCSTR,LPOLEOBJECT*,OLEOPT_RENDER,OLECLIPFORMAT);
+OLESTATUS WINAPI OleCreateLinkFromFile(LPCSTR,LPOLECLIENT,LPCSTR,LPCSTR,LPCSTR,LHCLIENTDOC,LPCSTR,LPOLEOBJECT*,OLEOPT_RENDER,OLECLIPFORMAT);
+OLESTATUS WINAPI OleLoadFromStream(LPOLESTREAM,LPCSTR,LPOLECLIENT,LHCLIENTDOC,LPCSTR,LPOLEOBJECT*);
+OLESTATUS WINAPI OleCreate(LPCSTR,LPOLECLIENT,LPCSTR,LHCLIENTDOC,LPCSTR,LPOLEOBJECT*,OLEOPT_RENDER,OLECLIPFORMAT);
+OLESTATUS WINAPI OleCreateInvisible(LPCSTR,LPOLECLIENT,LPCSTR,LHCLIENTDOC,LPCSTR,LPOLEOBJECT*,OLEOPT_RENDER,OLECLIPFORMAT,BOOL);
+OLESTATUS WINAPI OleCreateFromTemplate(LPCSTR,LPOLECLIENT,LPCSTR,LHCLIENTDOC,LPCSTR,LPOLEOBJECT*,OLEOPT_RENDER,OLECLIPFORMAT);
+OLESTATUS WINAPI OleClone(LPOLEOBJECT,LPOLECLIENT,LHCLIENTDOC,LPCSTR,LPOLEOBJECT*);
+OLESTATUS WINAPI OleCopyFromLink(LPOLEOBJECT,LPCSTR,LPOLECLIENT,LHCLIENTDOC,LPCSTR,LPOLEOBJECT*);
+OLESTATUS WINAPI OleObjectConvert(LPOLEOBJECT,LPCSTR,LPOLECLIENT,LHCLIENTDOC,LPCSTR,LPOLEOBJECT*);
+OLESTATUS WINAPI OleRename(LPOLEOBJECT,LPCSTR);
+OLESTATUS WINAPI OleQueryName(LPOLEOBJECT,LPSTR,UINT*);
+OLESTATUS WINAPI OleRevokeObject(LPOLECLIENT);
+BOOL WINAPI OleIsDcMeta(HDC);
+OLESTATUS WINAPI OleRegisterClientDoc(LPCSTR,LPCSTR,LONG,LHCLIENTDOC*);
+OLESTATUS WINAPI OleRevokeClientDoc(LHCLIENTDOC);
+OLESTATUS WINAPI OleRenameClientDoc(LHCLIENTDOC,LPCSTR);
+OLESTATUS WINAPI OleRevertClientDoc(LHCLIENTDOC);
+OLESTATUS WINAPI OleSavedClientDoc(LHCLIENTDOC);
+OLESTATUS WINAPI OleEnumObjects(LHCLIENTDOC,LPOLEOBJECT*);
+OLESTATUS WINAPI OleRegisterServer(LPCSTR,LPOLESERVER,LHSERVER*,HINSTANCE,OLE_SERVER_USE);
+OLESTATUS WINAPI OleRevokeServer(LHSERVER);
+OLESTATUS WINAPI OleBlockServer(LHSERVER);
+OLESTATUS WINAPI OleUnblockServer(LHSERVER,BOOL*);
+OLESTATUS WINAPI OleLockServer(LPOLEOBJECT,LHSERVER*);
+OLESTATUS WINAPI OleUnlockServer(LHSERVER);
+OLESTATUS WINAPI OleRegisterServerDoc(LHSERVER,LPCSTR,LPOLESERVERDOC,LHSERVERDOC*);
+OLESTATUS WINAPI OleRevokeServerDoc(LHSERVERDOC);
+OLESTATUS WINAPI OleRenameServerDoc(LHSERVERDOC,LPCSTR);
+OLESTATUS WINAPI OleRevertServerDoc(LHSERVERDOC);
+OLESTATUS WINAPI OleSavedServerDoc(LHSERVERDOC);
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/ole2.h
===================================================================
--- Daodan/MinGW/include/ole2.h	(revision 1046)
+++ Daodan/MinGW/include/ole2.h	(revision 1046)
@@ -0,0 +1,110 @@
+#ifndef _OLE2_H
+#define _OLE2_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#pragma pack(push,8)
+#include <winerror.h>
+#include <objbase.h>
+#include <olectlid.h>
+#include <oleauto.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define E_DRAW VIEW_E_DRAW
+#define DATA_E_FORMATETC DV_E_FORMATETC
+#define OLEIVERB_PRIMARY (0L)
+#define OLEIVERB_SHOW (-1L)
+#define OLEIVERB_OPEN (-2L)
+#define OLEIVERB_HIDE (-3L)
+#define OLEIVERB_UIACTIVATE (-4L)
+#define OLEIVERB_INPLACEACTIVATE (-5L)
+#define OLEIVERB_DISCARDUNDOSTATE (-6L)
+#define EMBDHLP_INPROC_HANDLER 0x0000L
+#define EMBDHLP_INPROC_SERVER 0x0001L
+#define EMBDHLP_CREATENOW 0x00000000L
+#define EMBDHLP_DELAYCREATE 0x00010000L
+#include <oleidl.h>
+
+typedef struct _OLESTREAMVTBL *LPOLESTREAMVTBL;
+typedef struct _OLESTREAM {
+	LPOLESTREAMVTBL lpstbl;
+} OLESTREAM,*LPOLESTREAM;
+typedef struct _OLESTREAMVTBL {
+	DWORD (CALLBACK* Get)(LPOLESTREAM,void*,DWORD);
+	DWORD (CALLBACK* Put)(LPOLESTREAM,const void*,DWORD);
+} OLESTREAMVTBL;
+
+WINOLEAPI CreateDataAdviseHolder(LPDATAADVISEHOLDER*);
+WINOLEAPI_(DWORD) OleBuildVersion(void);
+WINOLEAPI ReadClassStg(LPSTORAGE,CLSID*);
+WINOLEAPI WriteClassStg(LPSTORAGE,REFCLSID);
+WINOLEAPI ReadClassStm(LPSTREAM,CLSID*);
+WINOLEAPI WriteClassStm(LPSTREAM,REFCLSID);
+WINOLEAPI WriteFmtUserTypeStg(LPSTORAGE,CLIPFORMAT,LPOLESTR);
+WINOLEAPI ReadFmtUserTypeStg(LPSTORAGE,CLIPFORMAT*,LPOLESTR*);
+WINOLEAPI OleInitialize(PVOID);
+WINOLEAPI_(void) OleUninitialize(void);
+WINOLEAPI OleQueryLinkFromData(LPDATAOBJECT);
+WINOLEAPI OleQueryCreateFromData(LPDATAOBJECT);
+WINOLEAPI OleCreate(REFCLSID,REFIID,DWORD,LPFORMATETC,LPOLECLIENTSITE,LPSTORAGE,PVOID*);
+WINOLEAPI OleCreateFromData(LPDATAOBJECT,REFIID,DWORD,LPFORMATETC,LPOLECLIENTSITE,LPSTORAGE,PVOID*);
+WINOLEAPI OleCreateLinkFromData(LPDATAOBJECT,REFIID,DWORD,LPFORMATETC,LPOLECLIENTSITE,LPSTORAGE,PVOID*);
+WINOLEAPI OleCreateStaticFromData(LPDATAOBJECT,REFIID,DWORD,LPFORMATETC,LPOLECLIENTSITE,LPSTORAGE,PVOID*);
+WINOLEAPI OleCreateLink(LPMONIKER,REFIID,DWORD,LPFORMATETC,LPOLECLIENTSITE,LPSTORAGE,PVOID*);
+WINOLEAPI OleCreateLinkToFile(LPCOLESTR,REFIID,DWORD,LPFORMATETC,LPOLECLIENTSITE,LPSTORAGE,PVOID*);
+WINOLEAPI OleCreateFromFile(REFCLSID,LPCOLESTR,REFIID,DWORD,LPFORMATETC,LPOLECLIENTSITE,LPSTORAGE,PVOID*);
+WINOLEAPI OleLoad(LPSTORAGE,REFIID,LPOLECLIENTSITE,PVOID*);
+WINOLEAPI OleSave(LPPERSISTSTORAGE,LPSTORAGE,BOOL);
+WINOLEAPI OleLoadFromStream(LPSTREAM,REFIID,PVOID*);
+WINOLEAPI OleSaveToStream(LPPERSISTSTREAM,LPSTREAM);
+WINOLEAPI OleSetContainedObject(LPUNKNOWN,BOOL);
+WINOLEAPI OleNoteObjectVisible(LPUNKNOWN,BOOL);
+WINOLEAPI RegisterDragDrop(HWND,LPDROPTARGET);
+WINOLEAPI RevokeDragDrop(HWND);
+WINOLEAPI DoDragDrop(LPDATAOBJECT,LPDROPSOURCE,DWORD,PDWORD);
+WINOLEAPI OleSetClipboard(LPDATAOBJECT);
+WINOLEAPI OleGetClipboard(LPDATAOBJECT*);
+WINOLEAPI OleFlushClipboard(void);
+WINOLEAPI OleIsCurrentClipboard(LPDATAOBJECT);
+WINOLEAPI_(HOLEMENU) OleCreateMenuDescriptor(HMENU,LPOLEMENUGROUPWIDTHS);
+WINOLEAPI OleSetMenuDescriptor(HOLEMENU,HWND,HWND,LPOLEINPLACEFRAME,LPOLEINPLACEACTIVEOBJECT);
+WINOLEAPI OleDestroyMenuDescriptor(HOLEMENU);
+WINOLEAPI OleTranslateAccelerator(LPOLEINPLACEFRAME,LPOLEINPLACEFRAMEINFO,LPMSG);
+WINOLEAPI_(HANDLE) OleDuplicateData(HANDLE,CLIPFORMAT,UINT);
+WINOLEAPI OleDraw(LPUNKNOWN,DWORD,HDC,LPCRECT);
+WINOLEAPI OleRun(LPUNKNOWN);
+WINOLEAPI_(BOOL) OleIsRunning(LPOLEOBJECT);
+WINOLEAPI OleLockRunning(LPUNKNOWN,BOOL,BOOL);
+WINOLEAPI_(void) ReleaseStgMedium(LPSTGMEDIUM);
+WINOLEAPI CreateOleAdviseHolder(LPOLEADVISEHOLDER*);
+WINOLEAPI OleCreateDefaultHandler(REFCLSID,LPUNKNOWN,REFIID,PVOID*);
+WINOLEAPI OleCreateEmbeddingHelper(REFCLSID,LPUNKNOWN,DWORD,LPCLASSFACTORY,REFIID,PVOID*);
+WINOLEAPI_(BOOL) IsAccelerator(HACCEL,int,LPMSG,WORD*);
+WINOLEAPI_(HGLOBAL) OleGetIconOfFile(LPOLESTR,BOOL);
+WINOLEAPI_(HGLOBAL) OleGetIconOfClass(REFCLSID,LPOLESTR,BOOL);
+WINOLEAPI_(HGLOBAL) OleMetafilePictFromIconAndLabel(HICON,LPOLESTR,LPOLESTR,UINT);
+WINOLEAPI OleRegGetUserType(REFCLSID,DWORD,LPOLESTR*);
+WINOLEAPI OleRegGetMiscStatus(REFCLSID,DWORD,DWORD*);
+WINOLEAPI OleRegEnumFormatEtc (REFCLSID,DWORD,LPENUMFORMATETC*);
+WINOLEAPI OleRegEnumVerbs (REFCLSID,LPENUMOLEVERB*);
+WINOLEAPI OleConvertOLESTREAMToIStorage(LPOLESTREAM,LPSTORAGE,const DVTARGETDEVICE*);
+WINOLEAPI OleConvertIStorageToOLESTREAM(LPSTORAGE,LPOLESTREAM);
+WINOLEAPI GetHGlobalFromILockBytes(LPLOCKBYTES,HGLOBAL*);
+WINOLEAPI CreateILockBytesOnHGlobal(HGLOBAL,BOOL,LPLOCKBYTES*);
+WINOLEAPI GetHGlobalFromStream(LPSTREAM,HGLOBAL*);
+WINOLEAPI CreateStreamOnHGlobal(HGLOBAL,BOOL,LPSTREAM*);
+WINOLEAPI OleDoAutoConvert(LPSTORAGE,LPCLSID);
+WINOLEAPI OleGetAutoConvert(REFCLSID,LPCLSID);
+WINOLEAPI OleSetAutoConvert(REFCLSID,REFCLSID);
+WINOLEAPI GetConvertStg(LPSTORAGE);
+WINOLEAPI SetConvertStg(LPSTORAGE,BOOL);
+WINOLEAPI OleConvertIStorageToOLESTREAMEx(LPSTORAGE,CLIPFORMAT,LONG,LONG,DWORD,LPSTGMEDIUM,LPOLESTREAM);
+WINOLEAPI OleConvertOLESTREAMToIStorageEx(LPOLESTREAM,LPSTORAGE,CLIPFORMAT*,LONG*,LONG*,DWORD*,LPSTGMEDIUM);
+#ifdef __cplusplus
+}
+#endif
+#pragma pack(pop)
+#endif
Index: Daodan/MinGW/include/ole2ver.h
===================================================================
--- Daodan/MinGW/include/ole2ver.h	(revision 1046)
+++ Daodan/MinGW/include/ole2ver.h	(revision 1046)
@@ -0,0 +1,8 @@
+#ifndef _OLE2VER_H
+#define _OLE2VER_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+#define rmm 23
+#define rup 639
+#endif
Index: Daodan/MinGW/include/oleacc.h
===================================================================
--- Daodan/MinGW/include/oleacc.h	(revision 1046)
+++ Daodan/MinGW/include/oleacc.h	(revision 1046)
@@ -0,0 +1,223 @@
+#ifndef _OLEACC_H
+#define _OLEACC_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define DISPID_ACC_PARENT                   (-5000)
+#define DISPID_ACC_CHILDCOUNT               (-5001)
+#define DISPID_ACC_CHILD                    (-5002)
+
+#define DISPID_ACC_NAME                     (-5003)
+#define DISPID_ACC_VALUE                    (-5004)
+#define DISPID_ACC_DESCRIPTION              (-5005)
+#define DISPID_ACC_ROLE                     (-5006)
+#define DISPID_ACC_STATE                    (-5007)
+#define DISPID_ACC_HELP                     (-5008)
+#define DISPID_ACC_HELPTOPIC                (-5009)
+#define DISPID_ACC_KEYBOARDSHORTCUT         (-5010)
+#define DISPID_ACC_FOCUS                    (-5011)
+#define DISPID_ACC_SELECTION                (-5012)
+#define DISPID_ACC_DEFAULTACTION            (-5013)
+
+#define DISPID_ACC_SELECT                   (-5014)
+#define DISPID_ACC_LOCATION                 (-5015)
+#define DISPID_ACC_NAVIGATE                 (-5016)
+#define DISPID_ACC_HITTEST                  (-5017)
+#define DISPID_ACC_DODEFAULTACTION          (-5018)
+
+#define NAVDIR_DOWN 2
+#define NAVDIR_FIRSTCHILD 7
+#define NAVDIR_LASTCHILD 8
+#define NAVDIR_LEFT 3
+#define NAVDIR_NEXT 5
+#define NAVDIR_PREVIOUS 6
+#define NAVDIR_RIGHT 4
+#define NAVDIR_UP 1
+
+#define ROLE_SYSTEM_ALERT 8
+#define ROLE_SYSTEM_ANIMATION 54
+#define ROLE_SYSTEM_APPLICATION 14
+#define ROLE_SYSTEM_BORDER 19
+#define ROLE_SYSTEM_BUTTONDROPDOWN  56
+#define ROLE_SYSTEM_BUTTONDROPDOWNGRID 58
+#define ROLE_SYSTEM_BUTTONMENU 57
+#define ROLE_SYSTEM_CARET 7
+#define ROLE_SYSTEM_CELL 29
+#define ROLE_SYSTEM_CHARACTER 32
+#define ROLE_SYSTEM_CHART 17
+#define ROLE_SYSTEM_CHECKBUTTON 44
+#define ROLE_SYSTEM_CLIENT 10
+#define ROLE_SYSTEM_CLOCK 61
+#define ROLE_SYSTEM_COLUMN 27
+#define ROLE_SYSTEM_COLUMNHEADER 25
+#define ROLE_SYSTEM_COMBOBOX 46
+#define ROLE_SYSTEM_CURSOR 6
+#define ROLE_SYSTEM_DIAGRAM 53
+#define ROLE_SYSTEM_DIAL 49
+#define ROLE_SYSTEM_DIALOG 18
+#define ROLE_SYSTEM_DOCUMENT 15
+#define ROLE_SYSTEM_DROPLIST 47
+#define ROLE_SYSTEM_EQUATION 55
+#define ROLE_SYSTEM_GRAPHIC 40
+#define ROLE_SYSTEM_GRIP 4
+#define ROLE_SYSTEM_GROUPING 20
+#define ROLE_SYSTEM_HELPBALLOON 31
+#define ROLE_SYSTEM_HOTKEYFIELD 50
+#define ROLE_SYSTEM_INDICATOR 39
+#define ROLE_SYSTEM_LINK 30
+#define ROLE_SYSTEM_LIST 33
+#define ROLE_SYSTEM_LISTITEM 34
+#define ROLE_SYSTEM_MENUBAR 2
+#define ROLE_SYSTEM_MENUITEM 12
+#define ROLE_SYSTEM_MENUPOPUP 11
+#define ROLE_SYSTEM_OUTLINE 35
+#define ROLE_SYSTEM_OUTLINEITEM 36
+#define ROLE_SYSTEM_PAGETAB 37
+#define ROLE_SYSTEM_PAGETABLIST 60
+#define ROLE_SYSTEM_PANE 16
+#define ROLE_SYSTEM_PROGRESSBAR 48
+#define ROLE_SYSTEM_PROPERTYPAGE 38
+#define ROLE_SYSTEM_PUSHBUTTON 43
+#define ROLE_SYSTEM_RADIOBUTTON 45
+#define ROLE_SYSTEM_ROW 28
+#define ROLE_SYSTEM_ROWHEADER 26
+#define ROLE_SYSTEM_SCROLLBAR 3
+#define ROLE_SYSTEM_SEPARATOR 21
+#define ROLE_SYSTEM_SLIDER 51
+#define ROLE_SYSTEM_SOUND 5
+#define ROLE_SYSTEM_SPINBUTTON 52
+#define ROLE_SYSTEM_STATICTEXT 41
+#define ROLE_SYSTEM_STATUSBAR 23
+#define ROLE_SYSTEM_TABLE 24
+#define ROLE_SYSTEM_TEXT 42
+#define ROLE_SYSTEM_TITLEBAR 1
+#define ROLE_SYSTEM_TOOLBAR 22
+#define ROLE_SYSTEM_TOOLTIP 13
+#define ROLE_SYSTEM_WHITESPACE 59
+#define ROLE_SYSTEM_WINDOW 9
+
+#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_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_VALID 0x1fffffff
+/* http://opensource.adobe.com/wiki/display/flexsdk/Accessibility+for+Spark+Components */
+#define STATE_SYSTEM_NORMAL 0x00000000
+#define STATE_SYSTEM_PROTECTED 0x20000000
+#define STATE_SYSTEM_HASPOPUP 0x40000000
+
+typedef enum tagSELFLAG
+{
+  SELFLAG_NONE = 0,
+  SELFLAG_TAKEFOCUS = 1,
+  SELFLAG_TAKESELECTION = 2,
+  SELFLAG_EXTENDSELECTION = 4,
+  SELFLAG_ADDSELECTION = 8,
+  SELFLAG_REMOVESELECTION = 16
+} SELFLAG;
+
+#define SELFLAG_VALID	0x0000001F
+
+/* DEFINE_GUID(LIBID_Accessibility, 0x1ea4dbf0, 0x3c3b,0x11cf, 0x81, 0x0c, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71); */
+/* DEFINE_GUID(IID_IAccessible,     0x618736e0, 0x3c3d,0x11cf, 0x81, 0x0c, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71); */
+EXTERN_C const IID LIBID_Accessibility;
+EXTERN_C const IID IID_IAccessible;
+
+#define INTERFACE IAccessible
+DECLARE_INTERFACE_(IAccessible, IDispatch)
+{
+    STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    STDMETHOD(GetTypeInfoCount)(THIS_ UINT*) PURE;
+    STDMETHOD(GetTypeInfo)(THIS_ UINT,LCID,LPTYPEINFO*) PURE;
+    STDMETHOD(GetIDsOfNames)(THIS_ REFIID,LPOLESTR*,UINT,LCID,DISPID*) PURE;
+    STDMETHOD(Invoke)(THIS_ DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*) PURE;
+
+    STDMETHOD(get_accParent)(THIS_ IDispatch**) PURE;
+    STDMETHOD(get_accChildCount)(THIS_ long*) PURE;
+    STDMETHOD(get_accChild)(THIS_ VARIANT, IDispatch **) PURE;
+    STDMETHOD(get_accName)(THIS_ VARIANT, BSTR*) PURE;
+    STDMETHOD(get_accValue)(THIS_ VARIANT, BSTR*) PURE;
+    STDMETHOD(get_accDescription)(THIS_ VARIANT, BSTR*) PURE;
+    STDMETHOD(get_accRole)(THIS_ VARIANT, VARIANT*) PURE;
+    STDMETHOD(get_accState)(THIS_ VARIANT, VARIANT*) PURE;
+    STDMETHOD(get_accHelp)(THIS_ VARIANT, BSTR*) PURE;
+    STDMETHOD(get_accHelpTopic)(THIS_ BSTR*, VARIANT, long*) PURE;
+    STDMETHOD(get_accKeyboardShortcut)(THIS_ VARIANT, BSTR*) PURE;
+    STDMETHOD(get_accFocus)(THIS_ VARIANT*) PURE;
+    STDMETHOD(get_accSelection)(THIS_ VARIANT*) PURE;
+    STDMETHOD(get_accDefaultAction)(THIS_ VARIANT, BSTR*) PURE;
+
+    STDMETHOD(accSelect)(THIS_ long, VARIANT) PURE;
+    STDMETHOD(accLocation)(THIS_ long*, long*, long*, long*, VARIANT) PURE;
+    STDMETHOD(accNavigate)(THIS_ long, VARIANT, VARIANT*) PURE;
+    STDMETHOD(accHitTest)(THIS_ long, long, VARIANT*) PURE;
+    STDMETHOD(accDoDefaultAction)(THIS_ VARIANT) PURE;
+
+    STDMETHOD(put_accName)(THIS_ VARIANT, BSTR) PURE;
+    STDMETHOD(put_accValue)(THIS_ VARIANT, BSTR) PURE;
+};
+#undef INTERFACE
+typedef IAccessible* LPACCESSIBLE;
+
+STDAPI AccessibleChildren(IAccessible*,LONG,LONG,VARIANT*,LONG*);
+STDAPI AccessibleObjectFromEvent(HWND,DWORD,DWORD,IAccessible**,VARIANT*);
+STDAPI AccessibleObjectFromPoint(POINT,IAccessible**,VARIANT*);
+STDAPI AccessibleObjectFromWindow(HWND,DWORD,REFIID,void**);
+STDAPI CreateStdAccessibleObject(HWND,LONG,REFIID,void**);
+STDAPI CreateStdAccessibleProxyA(HWND,LPCSTR,LONG,REFIID,void**);
+STDAPI CreateStdAccessibleProxyW(HWND,LPCWSTR,LONG,REFIID,void**);
+void WINAPI GetOleaccVersionInfo(DWORD*,DWORD*);
+UINT WINAPI GetRoleTextA(DWORD,LPSTR,UINT);
+UINT WINAPI GetRoleTextW(DWORD,LPWSTR,UINT);
+UINT WINAPI GetStateTextA(DWORD,LPSTR,UINT);
+UINT WINAPI GetStateTextW(DWORD,LPWSTR,UINT);
+LRESULT WINAPI LresultFromObject(REFIID,WPARAM,LPUNKNOWN);
+STDAPI ObjectFromLresult(LRESULT,REFIID,WPARAM,void**);
+STDAPI WindowFromAccessibleObject(IAccessible*,HWND*);
+
+#ifdef UNICODE
+#define CreateStdAccessibleProxy CreateStdAccessibleProxyW
+#define GetRoleText GetRoleTextW
+#define GetStateText GetStateTextW
+#else
+#define CreateStdAccessibleProxy CreateStdAccessibleProxyA
+#define GetRoleText GetRoleTextA
+#define GetStateText GetStateTextA
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* _OLEACC_H */
Index: Daodan/MinGW/include/oleauto.h
===================================================================
--- Daodan/MinGW/include/oleauto.h	(revision 1046)
+++ Daodan/MinGW/include/oleauto.h	(revision 1046)
@@ -0,0 +1,656 @@
+#ifndef _OLEAUTO_H
+#define _OLEAUTO_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#pragma pack(push,8)
+#define WINOLEAUTAPI STDAPI
+#define WINOLEAUTAPI_(type) STDAPI_(type)
+#define STDOLE_MAJORVERNUM 1
+#define STDOLE_MINORVERNUM 0
+#define STDOLE_LCID 0
+
+#define VARIANT_NOVALUEPROP 0x01
+#define VARIANT_ALPHABOOL 0x02
+#define VARIANT_NOUSEOVERRIDE 0x04
+#define VARIANT_LOCALBOOL 0x08
+
+#define VAR_TIMEVALUEONLY 0x0001
+#define VAR_DATEVALUEONLY 0x0002
+#define VAR_VALIDDATE 0x0004
+#define VAR_CALENDAR_HIJRI 0x0008
+#define VAR_LOCALBOOL 0x0010
+#define VAR_FORMAT_NOSUBSTITUTE 0x0020
+#define VAR_FOURDIGITYEARS 0x0040
+#define VAR_CALENDAR_THAI 0x0080
+#define VAR_CALENDAR_GREGORIAN 0x0100
+
+#define MEMBERID_NIL DISPID_UNKNOWN
+#define ID_DEFAULTINST (-2)
+#define DISPATCH_METHOD 1
+#define DISPATCH_PROPERTYGET 2
+#define DISPATCH_PROPERTYPUT 4
+#define DISPATCH_PROPERTYPUTREF 8
+#define LHashValOfName(l,n) LHashValOfNameSys(SYS_WIN32,l,n)
+#define WHashValOfLHashVal(h) ((unsigned short)(0x0000ffff&(h)))
+#define IsHashValCompatible(h1,h2) ((BOOL)((0x00ff0000&(h1))==(0x00ff0000&(h2))))
+#define ACTIVEOBJECT_STRONG 0
+#define ACTIVEOBJECT_WEAK 1
+#ifdef NONAMELESSUNION
+#define V_UNION(X,Y) ((X)->__VARIANT_NAME_1.__VARIANT_NAME_2.__VARIANT_NAME_3.Y)
+#define V_VT(X) ((X)->__VARIANT_NAME_1.__VARIANT_NAME_2.vt)
+#else
+#define V_UNION(X,Y) ((X)->Y)
+#define V_VT(X) ((X)->vt)
+#endif
+#define V_BOOL(X) V_UNION(X,boolVal)
+#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_UI2(X) V_UNION(X,uiVal)
+#define V_I2REF(X) V_UNION(X,piVal)
+#define V_I4(X) V_UNION(X,lVal)
+#define V_UI4(X) V_UNION(X,ulVal)
+#define V_I4REF(X) V_UNION(X,plVal)
+#define V_UI4REF(X) V_UNION(X,pulVal)
+#define V_I8(X) V_UNION(X,llVal)
+#define V_UI8(X) V_UNION(X,ullVal)
+#define V_I8REF(X) V_UNION(X,pllVal)
+#define V_UI8REF(X) V_UNION(X,pullVal)
+#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_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_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_LPSTR(X) V_UNION(X,pszVal)
+#define V_LPSTRREF(X) V_UNION(X,ppszVal)
+#define V_LPWSTR(X) V_UNION(X,pwszVal)
+#define V_LPWSTRREF(X) V_UNION(X,ppwszVal)
+#define V_FILETIME(X) V_UNION(X,filetime)
+#define V_FILETIMEREF(X) V_UNION(X,pfiletime)
+#define V_BLOB(X) V_UNION(X,blob)
+#define V_UUID(X) V_UNION(X,puuid)
+#define V_CLSID(X) V_UNION(X,puuid)
+#define V_ARRAY(X) V_UNION(X,parray)
+#define V_ARRAYREF(X) V_UNION(X,pparray)
+#define V_BYREF(X) V_UNION(X,byref)
+#if defined(NONAMELESSUNION)
+#define V_DECIMAL(X) ((X)->__VARIANT_NAME_1.decVal)
+#else
+#define V_DECIMAL(X) ((X)->decVal)
+#endif
+#define V_DECIMALREF(X) V_UNION(X,pdecVal)
+#define V_I1(X) V_UNION(X,cVal)
+
+#ifdef _WIN64
+#define V_INT_PTR(X) V_I8(X)
+#define V_UINT_PTR(X) V_UI8(X)
+#define V_INT_PTRREF(X) V_I8REF(X)
+#define V_UINT_PTRREF(X) V_UI8REF(X)
+#else
+#define V_INT_PTR(X) V_I4(X)
+#define V_UINT_PTR(X) V_UI4(X)
+#define V_INT_PTRREF(X) V_I4REF(X)
+#define V_UINT_PTRREF(X) V_UI4REF(X)
+#endif
+
+#define VARCMP_LT 0
+#define VARCMP_EQ 1
+#define VARCMP_GT 2
+#define VARCMP_NULL 3
+
+#define LOCALE_USE_NLS 0x10000000
+
+#define VARIANT_NOUSEROVERRIDE 0x04
+#define VARIANT_CALENDAR_HIJRI 0x08
+#define VARIANT_CALENDAR_THAI 0x20
+#define VARIANT_CALENDAR_GREGORIAN 0x40
+#define VARIANT_USE_NLS 0x80
+
+#define NUMPRS_LEADING_WHITE 0x00001
+#define NUMPRS_TRAILING_WHITE 0x00002
+#define NUMPRS_LEADING_PLUS 0x00004
+#define NUMPRS_TRAILING_PLUS 0x00008
+#define NUMPRS_LEADING_MINUS 0x00010
+#define NUMPRS_TRAILING_MINUS 0x00020
+#define NUMPRS_HEX_OCT 0x00040
+#define NUMPRS_PARENS 0x00080
+#define NUMPRS_DECIMAL 0x00100
+#define NUMPRS_THOUSANDS 0x00200
+#define NUMPRS_CURRENCY 0x00400
+#define NUMPRS_EXPONENT 0x00800
+#define NUMPRS_USE_ALL 0x01000
+#define NUMPRS_STD 0x01FFF
+#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)
+
+#include <oaidl.h>
+
+typedef enum tagREGKIND {
+	REGKIND_DEFAULT,
+	REGKIND_REGISTER,
+	REGKIND_NONE
+} REGKIND;
+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;
+
+typedef struct {
+	SYSTEMTIME st;
+	USHORT wDayOfYear;
+} UDATE;
+
+typedef struct {
+	int cDig;
+	unsigned long dwInFlags;
+	unsigned long dwOutFlags;
+	int cchUsed;
+	int nBaseShift;
+	int nPwr10;
+} NUMPARSE;
+
+WINOLEAUTAPI_(BSTR) SysAllocString(const OLECHAR*);
+WINOLEAUTAPI_(int) SysReAllocString(BSTR*,const OLECHAR*);
+WINOLEAUTAPI_(BSTR) SysAllocStringLen(const OLECHAR*,unsigned int);
+WINOLEAUTAPI_(int) SysReAllocStringLen(BSTR*,const OLECHAR*,unsigned int);
+WINOLEAUTAPI_(void) SysFreeString(BSTR);
+WINOLEAUTAPI_(unsigned int) SysStringLen(BSTR);
+WINOLEAUTAPI_(unsigned int) SysStringByteLen(BSTR);
+WINOLEAUTAPI_(BSTR) SysAllocStringByteLen(const char*,unsigned int);
+WINOLEAUTAPI_(int) DosDateTimeToVariantTime(unsigned short,unsigned short,double*);
+WINOLEAUTAPI_(int) VariantTimeToDosDateTime(double,unsigned short*,unsigned short*);
+WINOLEAUTAPI_(int) VariantTimeToSystemTime(double,LPSYSTEMTIME);
+WINOLEAUTAPI_(int) SystemTimeToVariantTime(LPSYSTEMTIME, double*);
+WINOLEAUTAPI VarDateFromUdate(UDATE*,ULONG,DATE*);
+WINOLEAUTAPI VarDateFromUdateEx(UDATE*,LCID,ULONG,DATE*);
+WINOLEAUTAPI VarUdateFromDate(DATE,ULONG,UDATE*);
+WINOLEAUTAPI SafeArrayAllocDescriptor(unsigned int,SAFEARRAY**);
+WINOLEAUTAPI SafeArrayAllocData(SAFEARRAY*);
+WINOLEAUTAPI_(SAFEARRAY*) SafeArrayCreate(VARTYPE,unsigned int,SAFEARRAYBOUND*);
+WINOLEAUTAPI SafeArrayDestroyDescriptor(SAFEARRAY*);
+WINOLEAUTAPI SafeArrayDestroyData(SAFEARRAY*);
+WINOLEAUTAPI SafeArrayDestroy(SAFEARRAY*);
+WINOLEAUTAPI SafeArrayRedim(SAFEARRAY*,SAFEARRAYBOUND*);
+WINOLEAUTAPI_(unsigned int) SafeArrayGetDim(SAFEARRAY*);
+WINOLEAUTAPI_(unsigned int) SafeArrayGetElemsize(SAFEARRAY*);
+WINOLEAUTAPI SafeArrayGetUBound(SAFEARRAY*,unsigned int,long*);
+WINOLEAUTAPI SafeArrayGetLBound(SAFEARRAY*,unsigned int,long*);
+WINOLEAUTAPI SafeArrayLock(SAFEARRAY*);
+WINOLEAUTAPI SafeArrayUnlock(SAFEARRAY*);
+WINOLEAUTAPI SafeArrayAccessData(SAFEARRAY*,void**);
+WINOLEAUTAPI SafeArrayUnaccessData(SAFEARRAY*);
+WINOLEAUTAPI SafeArrayGetElement(SAFEARRAY*,long*,void*);
+WINOLEAUTAPI SafeArrayPutElement(SAFEARRAY*,long*,void*);
+WINOLEAUTAPI SafeArrayCopy(SAFEARRAY*,SAFEARRAY**);
+WINOLEAUTAPI SafeArrayPtrOfIndex(SAFEARRAY*,long*,void**);
+WINOLEAUTAPI_(SAFEARRAY*) SafeArrayCreateVector(VARTYPE,LONG,ULONG);
+WINOLEAUTAPI_(SAFEARRAY*) SafeArrayCreateVectorEx(VARTYPE,LONG,ULONG,LPVOID);
+WINOLEAUTAPI SafeArrayAllocDescriptorEx(VARTYPE,UINT,SAFEARRAY**);
+WINOLEAUTAPI SafeArrayGetVartype(SAFEARRAY*,VARTYPE*);
+WINOLEAUTAPI SafeArraySetRecordInfo(SAFEARRAY*,IRecordInfo*);
+WINOLEAUTAPI SafeArrayGetRecordInfo(SAFEARRAY*,IRecordInfo**);
+WINOLEAUTAPI SafeArraySetIID(SAFEARRAY*,REFGUID);
+WINOLEAUTAPI SafeArrayGetIID(SAFEARRAY*,GUID*);
+WINOLEAUTAPI_(void) VariantInit(VARIANTARG*);
+WINOLEAUTAPI VariantClear(VARIANTARG*);
+WINOLEAUTAPI VariantCopy(VARIANTARG*,VARIANTARG*);
+WINOLEAUTAPI VariantCopyInd(VARIANT*,VARIANTARG*);
+WINOLEAUTAPI VariantChangeType(VARIANTARG*,VARIANTARG*,unsigned short,VARTYPE);
+WINOLEAUTAPI VariantChangeTypeEx(VARIANTARG*,VARIANTARG*,LCID,unsigned short,VARTYPE);
+WINOLEAUTAPI VarUI1FromI2(short,unsigned char*);
+WINOLEAUTAPI VarUI1FromI4(long,unsigned char*);
+WINOLEAUTAPI VarUI1FromR4(float,unsigned char*);
+WINOLEAUTAPI VarUI1FromR8(double,unsigned char*);
+WINOLEAUTAPI VarUI1FromCy(CY,unsigned char*);
+WINOLEAUTAPI VarUI1FromDate(DATE,unsigned char*);
+WINOLEAUTAPI VarUI1FromStr(OLECHAR*,LCID,unsigned long,unsigned char*);
+WINOLEAUTAPI VarUI1FromDisp(LPDISPATCH,LCID,unsigned char*);
+WINOLEAUTAPI VarUI1FromBool(VARIANT_BOOL,unsigned char*);
+WINOLEAUTAPI VarI2FromUI1(unsigned char,short*);
+WINOLEAUTAPI VarI2FromI4(long,short*);
+WINOLEAUTAPI VarI2FromR4(float,short*);
+WINOLEAUTAPI VarI2FromR8(double,short*);
+WINOLEAUTAPI VarI2FromCy(CY cyIn,short*);
+WINOLEAUTAPI VarI2FromDate(DATE,short*);
+WINOLEAUTAPI VarI2FromStr(OLECHAR*,LCID,unsigned long,short*);
+WINOLEAUTAPI VarI2FromDisp(LPDISPATCH,LCID,short*);
+WINOLEAUTAPI VarI2FromBool(VARIANT_BOOL,short*);
+WINOLEAUTAPI VarI4FromUI1(unsigned char,long*);
+WINOLEAUTAPI VarI4FromI2(short,long*);
+WINOLEAUTAPI VarI4FromR4(float,long*);
+WINOLEAUTAPI VarI4FromR8(double,long*);
+WINOLEAUTAPI VarI4FromCy(CY,long*);
+WINOLEAUTAPI VarI4FromDate(DATE,long*);
+WINOLEAUTAPI VarI4FromStr(OLECHAR*,LCID,unsigned long,long*);
+WINOLEAUTAPI VarI4FromDisp(LPDISPATCH,LCID,long*);
+WINOLEAUTAPI VarI4FromBool(VARIANT_BOOL,long*);
+WINOLEAUTAPI VarR4FromUI1(unsigned char,float*);
+WINOLEAUTAPI VarR4FromI2(short,float*);
+WINOLEAUTAPI VarR4FromI4(long,float*);
+WINOLEAUTAPI VarR4FromR8(double,float*);
+WINOLEAUTAPI VarR4FromCy(CY,float*);
+WINOLEAUTAPI VarR4FromDate(DATE,float*);
+WINOLEAUTAPI VarR4FromStr(OLECHAR*,LCID,unsigned long,float*);
+WINOLEAUTAPI VarR4FromDisp(LPDISPATCH,LCID,float*);
+WINOLEAUTAPI VarR4FromBool(VARIANT_BOOL,float*);
+WINOLEAUTAPI VarR8FromUI1(unsigned char,double*);
+WINOLEAUTAPI VarR8FromI2(short,double*);
+WINOLEAUTAPI VarR8FromI4(long,double*);
+WINOLEAUTAPI VarR8FromR4(float,double*);
+WINOLEAUTAPI VarR8FromCy(CY,double*);
+WINOLEAUTAPI VarR8FromDate(DATE,double*);
+WINOLEAUTAPI VarR8FromStr(OLECHAR*,LCID,unsigned long,double*);
+WINOLEAUTAPI VarR8FromDisp(LPDISPATCH,LCID,double*);
+WINOLEAUTAPI VarR8FromBool(VARIANT_BOOL,double*);
+WINOLEAUTAPI VarR8FromDec(DECIMAL*,double*);
+WINOLEAUTAPI VarDateFromUI1(unsigned char,DATE*);
+WINOLEAUTAPI VarDateFromI2(short,DATE*);
+WINOLEAUTAPI VarDateFromI4(long,DATE*);
+WINOLEAUTAPI VarDateFromR4(float,DATE*);
+WINOLEAUTAPI VarDateFromR8(double,DATE*);
+WINOLEAUTAPI VarDateFromCy(CY,DATE*);
+WINOLEAUTAPI VarDateFromStr(OLECHAR*,LCID,unsigned long,DATE*);
+WINOLEAUTAPI VarDateFromDisp(LPDISPATCH,LCID,DATE*);
+WINOLEAUTAPI VarDateFromBool(VARIANT_BOOL,DATE*);
+WINOLEAUTAPI VarCyFromUI1(unsigned char,CY*);
+WINOLEAUTAPI VarCyFromI2(short,CY*);
+WINOLEAUTAPI VarCyFromI4(long,CY*);
+WINOLEAUTAPI VarCyFromR4(float,CY*);
+WINOLEAUTAPI VarCyFromR8(double,CY*);
+WINOLEAUTAPI VarCyFromDate(DATE,CY*);
+WINOLEAUTAPI VarCyFromStr(OLECHAR*,LCID,unsigned long,CY*);
+WINOLEAUTAPI VarCyFromDisp(LPDISPATCH,LCID,CY*);
+WINOLEAUTAPI VarCyFromBool(VARIANT_BOOL,CY*);
+WINOLEAUTAPI VarBstrFromUI1(unsigned char,LCID,unsigned long,BSTR*);
+WINOLEAUTAPI VarBstrFromI2(short,LCID,unsigned long,BSTR*);
+WINOLEAUTAPI VarBstrFromI4(long,LCID,unsigned long,BSTR*);
+WINOLEAUTAPI VarBstrFromR4(float,LCID,unsigned long,BSTR*);
+WINOLEAUTAPI VarBstrFromR8(double,LCID,unsigned long,BSTR*);
+WINOLEAUTAPI VarBstrFromCy(CY,LCID,unsigned long,BSTR*);
+WINOLEAUTAPI VarBstrFromDate(DATE,LCID,unsigned long,BSTR*);
+WINOLEAUTAPI VarBstrFromDisp(LPDISPATCH,LCID,unsigned long,BSTR*);
+WINOLEAUTAPI VarBstrFromBool(VARIANT_BOOL,LCID,unsigned long,BSTR*);
+WINOLEAUTAPI VarBoolFromUI1(unsigned char,VARIANT_BOOL*);
+WINOLEAUTAPI VarBoolFromI2(short,VARIANT_BOOL*);
+WINOLEAUTAPI VarBoolFromI4(long,VARIANT_BOOL*);
+WINOLEAUTAPI VarBoolFromR4(float,VARIANT_BOOL*);
+WINOLEAUTAPI VarBoolFromR8(double,VARIANT_BOOL*);
+WINOLEAUTAPI VarBoolFromDate(DATE,VARIANT_BOOL*);
+WINOLEAUTAPI VarBoolFromCy(CY,VARIANT_BOOL*);
+WINOLEAUTAPI VarBoolFromStr(OLECHAR*,LCID,unsigned long,VARIANT_BOOL*);
+WINOLEAUTAPI VarBoolFromDisp(LPDISPATCH,LCID,VARIANT_BOOL*);
+WINOLEAUTAPI VarDecFromR8(double,DECIMAL*);
+WINOLEAUTAPI_(ULONG) LHashValOfNameSysA(SYSKIND,LCID,const char*);
+WINOLEAUTAPI_(ULONG) LHashValOfNameSys(SYSKIND,LCID,const OLECHAR*);
+WINOLEAUTAPI LoadTypeLib(const OLECHAR*,LPTYPELIB*);
+WINOLEAUTAPI LoadTypeLibEx(LPCOLESTR,REGKIND,LPTYPELIB*);
+WINOLEAUTAPI LoadRegTypeLib(REFGUID,WORD,WORD,LCID,LPTYPELIB*);
+WINOLEAUTAPI QueryPathOfRegTypeLib(REFGUID,unsigned short,unsigned short,LCID,LPBSTR);
+WINOLEAUTAPI RegisterTypeLib(LPTYPELIB,OLECHAR*,OLECHAR*);
+WINOLEAUTAPI UnRegisterTypeLib(REFGUID,WORD,WORD,LCID,SYSKIND);
+WINOLEAUTAPI CreateTypeLib(SYSKIND,const OLECHAR*,LPCREATETYPELIB*);
+WINOLEAUTAPI DispGetParam(DISPPARAMS*,UINT,VARTYPE,VARIANT*,UINT*);
+WINOLEAUTAPI DispGetIDsOfNames(LPTYPEINFO,OLECHAR**,UINT,DISPID*);
+WINOLEAUTAPI DispInvoke(void*,LPTYPEINFO,DISPID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*);
+WINOLEAUTAPI CreateDispTypeInfo(INTERFACEDATA*,LCID,LPTYPEINFO*);
+WINOLEAUTAPI CreateStdDispatch(IUnknown*,void*,LPTYPEINFO,IUnknown**);
+WINOLEAUTAPI RegisterActiveObject(IUnknown*,REFCLSID,DWORD,DWORD*);
+WINOLEAUTAPI RevokeActiveObject(DWORD,void*);
+WINOLEAUTAPI GetActiveObject(REFCLSID,void*,IUnknown**);
+WINOLEAUTAPI SetErrorInfo(unsigned long,LPERRORINFO);
+WINOLEAUTAPI GetErrorInfo(unsigned long,LPERRORINFO*);
+WINOLEAUTAPI CreateErrorInfo(LPCREATEERRORINFO*);
+WINOLEAUTAPI_(unsigned long) OaBuildVersion(void);
+WINOLEAUTAPI VectorFromBstr (BSTR, SAFEARRAY **);
+WINOLEAUTAPI BstrFromVector (SAFEARRAY *, BSTR *);
+WINOLEAUTAPI VarParseNumFromStr(OLECHAR*,LCID,ULONG,NUMPARSE*,BYTE*);
+WINOLEAUTAPI VarNumFromParseNum(NUMPARSE*,BYTE*,ULONG,VARIANT*);
+WINOLEAUTAPI_(HRESULT) GetRecordInfoFromTypeInfo (ITypeInfo*,IRecordInfo**);
+WINOLEAUTAPI_(HRESULT) GetRecordInfoFromGuids (REFGUID,ULONG,ULONG,LCID,REFGUID,IRecordInfo**);
+
+WINOLEAUTAPI VarAdd(LPVARIANT, LPVARIANT, LPVARIANT);
+WINOLEAUTAPI VarSub(LPVARIANT, LPVARIANT, LPVARIANT);
+WINOLEAUTAPI VarMul(LPVARIANT, LPVARIANT, LPVARIANT);
+WINOLEAUTAPI VarDiv(LPVARIANT, LPVARIANT, LPVARIANT);
+
+WINOLEAUTAPI VarUI1FromI2(SHORT,BYTE*);
+WINOLEAUTAPI VarUI1FromI4(LONG,BYTE*);
+WINOLEAUTAPI VarUI1FromI8(LONG64,BYTE*);
+WINOLEAUTAPI VarUI1FromR4(FLOAT,BYTE*);
+WINOLEAUTAPI VarUI1FromR8(DOUBLE,BYTE*);
+WINOLEAUTAPI VarUI1FromDate(DATE,BYTE*);
+WINOLEAUTAPI VarUI1FromBool(VARIANT_BOOL,BYTE*);
+WINOLEAUTAPI VarUI1FromI1(signed char,BYTE*);
+WINOLEAUTAPI VarUI1FromUI2(USHORT,BYTE*);
+WINOLEAUTAPI VarUI1FromUI4(ULONG,BYTE*);
+WINOLEAUTAPI VarUI1FromUI8(ULONG64,BYTE*);
+WINOLEAUTAPI VarUI1FromStr(OLECHAR*,LCID,ULONG,BYTE*);
+WINOLEAUTAPI VarUI1FromCy(CY,BYTE*);
+WINOLEAUTAPI VarUI1FromDec(DECIMAL*,BYTE*);
+WINOLEAUTAPI VarUI1FromDisp(IDispatch*,LCID,BYTE*);
+
+WINOLEAUTAPI VarI2FromUI1(BYTE,SHORT*);
+WINOLEAUTAPI VarI2FromI4(LONG,SHORT*);
+WINOLEAUTAPI VarI2FromI8(LONG64,SHORT*);
+WINOLEAUTAPI VarI2FromR4(FLOAT,SHORT*);
+WINOLEAUTAPI VarI2FromR8(DOUBLE,SHORT*);
+WINOLEAUTAPI VarI2FromDate(DATE,SHORT*);
+WINOLEAUTAPI VarI2FromBool(VARIANT_BOOL,SHORT*);
+WINOLEAUTAPI VarI2FromI1(signed char,SHORT*);
+WINOLEAUTAPI VarI2FromUI2(USHORT,SHORT*);
+WINOLEAUTAPI VarI2FromUI4(ULONG,SHORT*);
+WINOLEAUTAPI VarI2FromUI8(ULONG64,SHORT*);
+WINOLEAUTAPI VarI2FromStr(OLECHAR*,LCID,ULONG,SHORT*);
+WINOLEAUTAPI VarI2FromCy(CY,SHORT*);
+WINOLEAUTAPI VarI2FromDec(DECIMAL*,SHORT*);
+WINOLEAUTAPI VarI2FromDisp(IDispatch*,LCID,SHORT*);
+
+WINOLEAUTAPI VarI4FromUI1(BYTE,LONG*);
+WINOLEAUTAPI VarI4FromI2(SHORT,LONG*);
+WINOLEAUTAPI VarI4FromI8(LONG64,LONG*);
+WINOLEAUTAPI VarI4FromR4(FLOAT,LONG*);
+WINOLEAUTAPI VarI4FromR8(DOUBLE,LONG*);
+WINOLEAUTAPI VarI4FromDate(DATE,LONG*);
+WINOLEAUTAPI VarI4FromBool(VARIANT_BOOL,LONG*);
+WINOLEAUTAPI VarI4FromI1(signed char,LONG*);
+WINOLEAUTAPI VarI4FromUI2(USHORT,LONG*);
+WINOLEAUTAPI VarI4FromUI4(ULONG,LONG*);
+WINOLEAUTAPI VarI4FromUI8(ULONG64,LONG*);
+WINOLEAUTAPI VarI4FromStr(OLECHAR*,LCID,ULONG,LONG*);
+WINOLEAUTAPI VarI4FromCy(CY,LONG*);
+WINOLEAUTAPI VarI4FromDec(DECIMAL*,LONG*);
+WINOLEAUTAPI VarI4FromDisp(IDispatch*,LCID,LONG*);
+
+WINOLEAUTAPI VarI8FromUI1(BYTE,LONG64*);
+WINOLEAUTAPI VarI8FromI2(SHORT,LONG64*);
+WINOLEAUTAPI VarI8FromI4(LONG,LONG64*);
+WINOLEAUTAPI VarI8FromR4(FLOAT,LONG64*);
+WINOLEAUTAPI VarI8FromR8(DOUBLE,LONG64*);
+WINOLEAUTAPI VarI8FromDate(DATE,LONG64*);
+WINOLEAUTAPI VarI8FromStr(OLECHAR*,LCID,ULONG,LONG64*);
+WINOLEAUTAPI VarI8FromBool(VARIANT_BOOL,LONG64*);
+WINOLEAUTAPI VarI8FromI1(signed char,LONG64*);
+WINOLEAUTAPI VarI8FromUI2(USHORT,LONG64*);
+WINOLEAUTAPI VarI8FromUI4(ULONG,LONG64*);
+WINOLEAUTAPI VarI8FromUI8(ULONG64,LONG64*);
+WINOLEAUTAPI VarI8FromDec(DECIMAL *pdecIn,LONG64*);
+WINOLEAUTAPI VarI8FromInt(INT intIn,LONG64*);
+WINOLEAUTAPI VarI8FromCy(CY,LONG64*);
+WINOLEAUTAPI VarI8FromDisp(IDispatch*,LCID,LONG64*);
+
+WINOLEAUTAPI VarR4FromUI1(BYTE,FLOAT*);
+WINOLEAUTAPI VarR4FromI2(SHORT,FLOAT*);
+WINOLEAUTAPI VarR4FromI4(LONG,FLOAT*);
+WINOLEAUTAPI VarR4FromI8(LONG64,FLOAT*);
+WINOLEAUTAPI VarR4FromR8(DOUBLE,FLOAT*);
+WINOLEAUTAPI VarR4FromDate(DATE,FLOAT*);
+WINOLEAUTAPI VarR4FromBool(VARIANT_BOOL,FLOAT*);
+WINOLEAUTAPI VarR4FromI1(signed char,FLOAT*);
+WINOLEAUTAPI VarR4FromUI2(USHORT,FLOAT*);
+WINOLEAUTAPI VarR4FromUI4(ULONG,FLOAT*);
+WINOLEAUTAPI VarR4FromUI8(ULONG64,FLOAT*);
+WINOLEAUTAPI VarR4FromStr(OLECHAR*,LCID,ULONG,FLOAT*);
+WINOLEAUTAPI VarR4FromCy(CY,FLOAT*);
+WINOLEAUTAPI VarR4FromDec(DECIMAL*,FLOAT*);
+WINOLEAUTAPI VarR4FromDisp(IDispatch*,LCID,FLOAT*);
+
+WINOLEAUTAPI VarR8FromUI1(BYTE,double*);
+WINOLEAUTAPI VarR8FromI2(SHORT,double*);
+WINOLEAUTAPI VarR8FromI4(LONG,double*);
+WINOLEAUTAPI VarR8FromI8(LONG64,double*);
+WINOLEAUTAPI VarR8FromR4(FLOAT,double*);
+WINOLEAUTAPI VarR8FromDate(DATE,double*);
+WINOLEAUTAPI VarR8FromBool(VARIANT_BOOL,double*);
+WINOLEAUTAPI VarR8FromI1(signed char,double*);
+WINOLEAUTAPI VarR8FromUI2(USHORT,double*);
+WINOLEAUTAPI VarR8FromUI4(ULONG,double*);
+WINOLEAUTAPI VarR8FromUI8(ULONG64,double*);
+WINOLEAUTAPI VarR8FromStr(OLECHAR*,LCID,ULONG,double*);
+WINOLEAUTAPI VarR8FromCy(CY,double*);
+WINOLEAUTAPI VarR8FromDec(DECIMAL*,double*);
+WINOLEAUTAPI VarR8FromDisp(IDispatch*,LCID,double*);
+
+WINOLEAUTAPI VarDateFromUI1(BYTE,DATE*);
+WINOLEAUTAPI VarDateFromI2(SHORT,DATE*);
+WINOLEAUTAPI VarDateFromI4(LONG,DATE*);
+WINOLEAUTAPI VarDateFromI8(LONG64,DATE*);
+WINOLEAUTAPI VarDateFromR4(FLOAT,DATE*);
+WINOLEAUTAPI VarDateFromR8(DOUBLE,DATE*);
+WINOLEAUTAPI VarDateFromStr(OLECHAR*,LCID,ULONG,DATE*);
+WINOLEAUTAPI VarDateFromI1(signed char,DATE*);
+WINOLEAUTAPI VarDateFromUI2(USHORT,DATE*);
+WINOLEAUTAPI VarDateFromUI4(ULONG,DATE*);
+WINOLEAUTAPI VarDateFromUI8(ULONG64,DATE*);
+WINOLEAUTAPI VarDateFromBool(VARIANT_BOOL,DATE*);
+WINOLEAUTAPI VarDateFromCy(CY,DATE*);
+WINOLEAUTAPI VarDateFromDec(DECIMAL*,DATE*);
+WINOLEAUTAPI VarDateFromDisp(IDispatch*,LCID,DATE*);
+
+WINOLEAUTAPI VarCyFromUI1(BYTE,CY*);
+WINOLEAUTAPI VarCyFromI2(SHORT sIn,CY*);
+WINOLEAUTAPI VarCyFromI4(LONG,CY*);
+WINOLEAUTAPI VarCyFromI8(LONG64,CY*);
+WINOLEAUTAPI VarCyFromR4(FLOAT,CY*);
+WINOLEAUTAPI VarCyFromR8(DOUBLE,CY*);
+WINOLEAUTAPI VarCyFromDate(DATE,CY*);
+WINOLEAUTAPI VarCyFromStr(OLECHAR*,LCID,ULONG,CY*);
+WINOLEAUTAPI VarCyFromBool(VARIANT_BOOL,CY*);
+WINOLEAUTAPI VarCyFromI1(signed char,CY*);
+WINOLEAUTAPI VarCyFromUI2(USHORT,CY*);
+WINOLEAUTAPI VarCyFromUI4(ULONG,CY*);
+WINOLEAUTAPI VarCyFromUI8(ULONG64,CY*);
+WINOLEAUTAPI VarCyFromDec(DECIMAL*,CY*);
+WINOLEAUTAPI VarCyFromStr(OLECHAR*,LCID,ULONG,CY*);
+WINOLEAUTAPI VarCyFromDisp(IDispatch*,LCID,CY*);
+
+WINOLEAUTAPI VarBstrFromUI1(BYTE,LCID,ULONG,BSTR*);
+WINOLEAUTAPI VarBstrFromI2(SHORT,LCID,ULONG,BSTR*);
+WINOLEAUTAPI VarBstrFromI4(LONG,LCID,ULONG,BSTR*);
+WINOLEAUTAPI VarBstrFromI8(LONG64,LCID,ULONG,BSTR*);
+WINOLEAUTAPI VarBstrFromR4(FLOAT,LCID,ULONG,BSTR*);
+WINOLEAUTAPI VarBstrFromR8(DOUBLE,LCID,ULONG,BSTR*);
+WINOLEAUTAPI VarBstrFromDate(DATE,LCID,ULONG,BSTR*);
+WINOLEAUTAPI VarBstrFromBool(VARIANT_BOOL,LCID,ULONG,BSTR*);
+WINOLEAUTAPI VarBstrFromI1(signed char,LCID,ULONG,BSTR*);
+WINOLEAUTAPI VarBstrFromUI2(USHORT,LCID,ULONG,BSTR*);
+WINOLEAUTAPI VarBstrFromUI8(ULONG64,LCID,ULONG,BSTR*);
+WINOLEAUTAPI VarBstrFromUI4(ULONG,LCID,ULONG,BSTR*);
+WINOLEAUTAPI VarBstrFromCy(CY,LCID,ULONG,BSTR*);
+WINOLEAUTAPI VarBstrFromDec(DECIMAL*,LCID,ULONG,BSTR*);
+WINOLEAUTAPI VarBstrFromDisp(IDispatch*,LCID,ULONG,BSTR*);
+
+WINOLEAUTAPI VarBoolFromUI1(BYTE,VARIANT_BOOL*);
+WINOLEAUTAPI VarBoolFromI2(SHORT,VARIANT_BOOL*);
+WINOLEAUTAPI VarBoolFromI4(LONG,VARIANT_BOOL*);
+WINOLEAUTAPI VarBoolFromI8(LONG64,VARIANT_BOOL*);
+WINOLEAUTAPI VarBoolFromR4(FLOAT,VARIANT_BOOL*);
+WINOLEAUTAPI VarBoolFromR8(DOUBLE,VARIANT_BOOL*);
+WINOLEAUTAPI VarBoolFromDate(DATE,VARIANT_BOOL*);
+WINOLEAUTAPI VarBoolFromStr(OLECHAR*,LCID,ULONG,VARIANT_BOOL*);
+WINOLEAUTAPI VarBoolFromI1(signed char,VARIANT_BOOL*);
+WINOLEAUTAPI VarBoolFromUI2(USHORT,VARIANT_BOOL*);
+WINOLEAUTAPI VarBoolFromUI4(ULONG,VARIANT_BOOL*);
+WINOLEAUTAPI VarBoolFromUI8(ULONG64,VARIANT_BOOL*);
+WINOLEAUTAPI VarBoolFromCy(CY,VARIANT_BOOL*);
+WINOLEAUTAPI VarBoolFromDec(DECIMAL*,VARIANT_BOOL*);
+WINOLEAUTAPI VarBoolFromDisp(IDispatch*,LCID,VARIANT_BOOL*);
+
+WINOLEAUTAPI VarI1FromUI1(BYTE,signed char*);
+WINOLEAUTAPI VarI1FromI2(SHORT,signed char*);
+WINOLEAUTAPI VarI1FromI4(LONG,signed char*);
+WINOLEAUTAPI VarI1FromI8(LONG64,signed char*);
+WINOLEAUTAPI VarI1FromR4(FLOAT,signed char*);
+WINOLEAUTAPI VarI1FromR8(DOUBLE,signed char*);
+WINOLEAUTAPI VarI1FromDate(DATE,signed char*);
+WINOLEAUTAPI VarI1FromStr(OLECHAR*,LCID,ULONG,signed char*);
+WINOLEAUTAPI VarI1FromBool(VARIANT_BOOL,signed char*);
+WINOLEAUTAPI VarI1FromUI2(USHORT,signed char*);
+WINOLEAUTAPI VarI1FromUI4(ULONG,signed char*);
+WINOLEAUTAPI VarI1FromUI8(ULONG64,signed char*);
+WINOLEAUTAPI VarI1FromCy(CY,signed char*);
+WINOLEAUTAPI VarI1FromDec(DECIMAL*,signed char*);
+WINOLEAUTAPI VarI1FromDisp(IDispatch*,LCID,signed char*);
+
+WINOLEAUTAPI VarUI2FromUI1(BYTE,USHORT*);
+WINOLEAUTAPI VarUI2FromI2(SHORT,USHORT*);
+WINOLEAUTAPI VarUI2FromI4(LONG,USHORT*);
+WINOLEAUTAPI VarUI2FromI8(LONG64,USHORT*);
+WINOLEAUTAPI VarUI2FromR4(FLOAT,USHORT*);
+WINOLEAUTAPI VarUI2FromR8(DOUBLE,USHORT*);
+WINOLEAUTAPI VarUI2FromDate(DATE,USHORT*);
+WINOLEAUTAPI VarUI2FromStr(OLECHAR*,LCID,ULONG,USHORT*);
+WINOLEAUTAPI VarUI2FromBool(VARIANT_BOOL,USHORT*);
+WINOLEAUTAPI VarUI2FromI1(signed char,USHORT*);
+WINOLEAUTAPI VarUI2FromUI4(ULONG,USHORT*);
+WINOLEAUTAPI VarUI2FromUI8(ULONG64,USHORT*);
+WINOLEAUTAPI VarUI2FromCy(CY,USHORT*);
+WINOLEAUTAPI VarUI2FromDec(DECIMAL*,USHORT*);
+WINOLEAUTAPI VarUI2FromDisp(IDispatch*,LCID,USHORT*);
+
+WINOLEAUTAPI VarUI4FromStr(OLECHAR*,LCID,ULONG,ULONG*);
+WINOLEAUTAPI VarUI4FromUI1(BYTE,ULONG*);
+WINOLEAUTAPI VarUI4FromI2(SHORT,ULONG*);
+WINOLEAUTAPI VarUI4FromI4(LONG,ULONG*);
+WINOLEAUTAPI VarUI4FromI8(LONG64,ULONG*);
+WINOLEAUTAPI VarUI4FromR4(FLOAT,ULONG*);
+WINOLEAUTAPI VarUI4FromR8(DOUBLE,ULONG*);
+WINOLEAUTAPI VarUI4FromDate(DATE,ULONG*);
+WINOLEAUTAPI VarUI4FromBool(VARIANT_BOOL,ULONG*);
+WINOLEAUTAPI VarUI4FromI1(signed char,ULONG*);
+WINOLEAUTAPI VarUI4FromUI2(USHORT,ULONG*);
+WINOLEAUTAPI VarUI4FromUI8(ULONG64,ULONG*);
+WINOLEAUTAPI VarUI4FromCy(CY,ULONG*);
+WINOLEAUTAPI VarUI4FromDec(DECIMAL*,ULONG*);
+WINOLEAUTAPI VarUI4FromDisp(IDispatch*,LCID,ULONG*);
+
+WINOLEAUTAPI VarUI8FromUI1(BYTE,ULONG64*);
+WINOLEAUTAPI VarUI8FromI2(SHORT,ULONG64*);
+WINOLEAUTAPI VarUI8FromI4(LONG,ULONG64*);
+WINOLEAUTAPI VarUI8FromI8(LONG64,ULONG64*);
+WINOLEAUTAPI VarUI8FromR4(FLOAT,ULONG64*);
+WINOLEAUTAPI VarUI8FromR8(DOUBLE,ULONG64*);
+WINOLEAUTAPI VarUI8FromDate(DATE,ULONG64*);
+WINOLEAUTAPI VarUI8FromStr(OLECHAR*,LCID,ULONG,ULONG64*);
+WINOLEAUTAPI VarUI8FromBool(VARIANT_BOOL,ULONG64*);
+WINOLEAUTAPI VarUI8FromI1(signed char,ULONG64*);
+WINOLEAUTAPI VarUI8FromUI2(USHORT,ULONG64*);
+WINOLEAUTAPI VarUI8FromUI4(ULONG,ULONG64*);
+WINOLEAUTAPI VarUI8FromDec(DECIMAL*,ULONG64*);
+WINOLEAUTAPI VarUI8FromInt(INT,ULONG64*);
+WINOLEAUTAPI VarUI8FromCy(CY,ULONG64*);
+WINOLEAUTAPI VarUI8FromDisp(IDispatch*,LCID,ULONG64*);
+
+WINOLEAUTAPI VarDecFromUI1(BYTE,DECIMAL*);
+WINOLEAUTAPI VarDecFromI2(SHORT,DECIMAL*);
+WINOLEAUTAPI VarDecFromI4(LONG,DECIMAL*);
+WINOLEAUTAPI VarDecFromI8(LONG64,DECIMAL*);
+WINOLEAUTAPI VarDecFromR4(FLOAT,DECIMAL*);
+WINOLEAUTAPI VarDecFromR8(DOUBLE,DECIMAL*);
+WINOLEAUTAPI VarDecFromDate(DATE,DECIMAL*);
+WINOLEAUTAPI VarDecFromStr(OLECHAR*,LCID,ULONG,DECIMAL*);
+WINOLEAUTAPI VarDecFromBool(VARIANT_BOOL,DECIMAL*);
+WINOLEAUTAPI VarDecFromI1(signed char,DECIMAL*);
+WINOLEAUTAPI VarDecFromUI2(USHORT,DECIMAL*);
+WINOLEAUTAPI VarDecFromUI4(ULONG,DECIMAL*);
+WINOLEAUTAPI VarDecFromUI8(ULONG64,DECIMAL*);
+WINOLEAUTAPI VarDecFromCy(CY,DECIMAL*);
+WINOLEAUTAPI VarDecFromDisp(IDispatch*,LCID,DECIMAL*);
+
+WINOLEAUTAPI VarDecNeg(const DECIMAL*,DECIMAL*);
+WINOLEAUTAPI VarR4CmpR8(float,double);
+WINOLEAUTAPI VarR8Pow(double,double,double*);
+WINOLEAUTAPI VarR8Round(double,int,double*);
+WINOLEAUTAPI VarDecAbs(const DECIMAL*,DECIMAL*);
+WINOLEAUTAPI VarDecAdd(const DECIMAL*,const DECIMAL*,DECIMAL*);
+WINOLEAUTAPI VarDecCmp(const DECIMAL*,const DECIMAL*);
+WINOLEAUTAPI VarDecCmpR8(const DECIMAL*,DOUBLE);
+WINOLEAUTAPI VarDecDiv(const DECIMAL*,const DECIMAL*,DECIMAL*);
+WINOLEAUTAPI VarDecFix(const DECIMAL*,DECIMAL*);
+WINOLEAUTAPI VarDecInt(const DECIMAL*,DECIMAL*);
+WINOLEAUTAPI VarDecMul(const DECIMAL*,const DECIMAL*,DECIMAL*);
+WINOLEAUTAPI VarDecRound(const DECIMAL*,int,DECIMAL*);
+WINOLEAUTAPI VarDecSub(const DECIMAL*,const DECIMAL*,DECIMAL*);
+WINOLEAUTAPI VarCyAbs(const CY,CY*);
+WINOLEAUTAPI VarCyAdd(const CY,const CY,CY*);
+WINOLEAUTAPI VarCyCmp(const CY,const CY);
+WINOLEAUTAPI VarCyCmpR8(const CY,DOUBLE);
+WINOLEAUTAPI VarCyFix(const CY,CY*);
+WINOLEAUTAPI VarCyInt(const CY,CY*);
+WINOLEAUTAPI VarCyMul(const CY,CY,CY*);
+WINOLEAUTAPI VarCyMulI4(const CY,LONG,CY*);
+WINOLEAUTAPI VarCyMulI8(const CY,LONG64,CY*);
+WINOLEAUTAPI VarCyNeg(const CY,CY*);
+WINOLEAUTAPI VarCyRound(const CY,INT,CY*);
+WINOLEAUTAPI VarCySub(const CY,const CY,CY*);
+WINOLEAUTAPI VarAdd(LPVARIANT,LPVARIANT,LPVARIANT);
+WINOLEAUTAPI VarAnd(LPVARIANT,LPVARIANT,LPVARIANT);
+WINOLEAUTAPI VarCat(LPVARIANT,LPVARIANT,LPVARIANT);
+WINOLEAUTAPI VarDiv(LPVARIANT,LPVARIANT,LPVARIANT);
+WINOLEAUTAPI VarEqv(LPVARIANT,LPVARIANT,LPVARIANT);
+WINOLEAUTAPI VarIdiv(LPVARIANT,LPVARIANT,LPVARIANT);
+WINOLEAUTAPI VarImp(LPVARIANT,LPVARIANT,LPVARIANT);
+WINOLEAUTAPI VarMod(LPVARIANT,LPVARIANT,LPVARIANT);
+WINOLEAUTAPI VarMul(LPVARIANT,LPVARIANT,LPVARIANT);
+WINOLEAUTAPI VarOr(LPVARIANT,LPVARIANT,LPVARIANT);
+WINOLEAUTAPI VarPow(LPVARIANT,LPVARIANT,LPVARIANT);
+WINOLEAUTAPI VarSub(LPVARIANT,LPVARIANT,LPVARIANT);
+WINOLEAUTAPI VarXor(LPVARIANT,LPVARIANT,LPVARIANT);
+WINOLEAUTAPI VarAbs(LPVARIANT,LPVARIANT);
+WINOLEAUTAPI VarFix(LPVARIANT,LPVARIANT);
+WINOLEAUTAPI VarInt(LPVARIANT,LPVARIANT);
+WINOLEAUTAPI VarNeg(LPVARIANT,LPVARIANT);
+WINOLEAUTAPI VarNot(LPVARIANT,LPVARIANT);
+WINOLEAUTAPI VarRound(LPVARIANT,int,LPVARIANT);
+WINOLEAUTAPI VarCmp(LPVARIANT,LPVARIANT,LCID,ULONG);
+WINOLEAUTAPI VarBstrCmp(BSTR,BSTR,LCID,ULONG);
+WINOLEAUTAPI VarBstrCat(BSTR,BSTR,BSTR*);
+
+#pragma pack(pop)
+
+#endif
Index: Daodan/MinGW/include/olectl.h
===================================================================
--- Daodan/MinGW/include/olectl.h	(revision 1046)
+++ Daodan/MinGW/include/olectl.h	(revision 1046)
@@ -0,0 +1,323 @@
+#ifndef _OLECTL_H
+#define _OLECTL_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <ocidl.h>
+#include <olectlid.h>
+
+#define STD_CTL_SCODE(n) MAKE_SCODE(SEVERITY_ERROR,FACILITY_CONTROL,n)
+#define CTL_E_ILLEGALFUNCTIONCALL STD_CTL_SCODE(5)
+#define CTL_E_OVERFLOW STD_CTL_SCODE(6)
+#define CTL_E_OUTOFMEMORY STD_CTL_SCODE(7)
+#define CTL_E_DIVISIONBYZERO STD_CTL_SCODE(11)
+#define CTL_E_OUTOFSTRINGSPACE STD_CTL_SCODE(14)
+#define CTL_E_OUTOFSTACKSPACE STD_CTL_SCODE(28)
+#define CTL_E_BADFILENAMEORNUMBER STD_CTL_SCODE(52)
+#define CTL_E_FILENOTFOUND STD_CTL_SCODE(53)
+#define CTL_E_BADFILEMODE STD_CTL_SCODE(54)
+#define CTL_E_FILEALREADYOPEN STD_CTL_SCODE(55)
+#define CTL_E_DEVICEIOERROR STD_CTL_SCODE(57)
+#define CTL_E_FILEALREADYEXISTS STD_CTL_SCODE(58)
+#define CTL_E_BADRECORDLENGTH STD_CTL_SCODE(59)
+#define CTL_E_DISKFULL STD_CTL_SCODE(61)
+#define CTL_E_BADRECORDNUMBER STD_CTL_SCODE(63)
+#define CTL_E_BADFILENAME STD_CTL_SCODE(64)
+#define CTL_E_TOOMANYFILES STD_CTL_SCODE(67)
+#define CTL_E_DEVICEUNAVAILABLE STD_CTL_SCODE(68)
+#define CTL_E_PERMISSIONDENIED STD_CTL_SCODE(70)
+#define CTL_E_DISKNOTREADY STD_CTL_SCODE(71)
+#define CTL_E_PATHFILEACCESSERROR STD_CTL_SCODE(75)
+#define CTL_E_PATHNOTFOUND STD_CTL_SCODE(76)
+#define CTL_E_INVALIDPATTERNSTRING STD_CTL_SCODE(93)
+#define CTL_E_INVALIDUSEOFNULL STD_CTL_SCODE(94)
+#define CTL_E_INVALIDFILEFORMAT STD_CTL_SCODE(321)
+#define CTL_E_INVALIDPROPERTYVALUE STD_CTL_SCODE(380)
+#define CTL_E_INVALIDPROPERTYARRAYINDEX STD_CTL_SCODE(381)
+#define CTL_E_SETNOTSUPPORTEDATRUNTIME STD_CTL_SCODE(382)
+#define CTL_E_SETNOTSUPPORTED STD_CTL_SCODE(383)
+#define CTL_E_NEEDPROPERTYARRAYINDEX STD_CTL_SCODE(385)
+#define CTL_E_SETNOTPERMITTED STD_CTL_SCODE(387)
+#define CTL_E_GETNOTSUPPORTEDATRUNTIME STD_CTL_SCODE(393)
+#define CTL_E_GETNOTSUPPORTED STD_CTL_SCODE(394)
+#define CTL_E_PROPERTYNOTFOUND STD_CTL_SCODE(422)
+#define CTL_E_INVALIDCLIPBOARDFORMAT STD_CTL_SCODE(460)
+#define CTL_E_INVALIDPICTURE STD_CTL_SCODE(481)
+#define CTL_E_PRINTERERROR STD_CTL_SCODE(482)
+#define CTL_E_CANTSAVEFILETOTEMP STD_CTL_SCODE(735)
+#define CTL_E_SEARCHTEXTNOTFOUND STD_CTL_SCODE(744)
+#define CTL_E_REPLACEMENTSTOOLONG STD_CTL_SCODE(746)
+#define CUSTOM_CTL_SCODE(n) MAKE_SCODE(SEVERITY_ERROR,FACILITY_CONTROL,n)
+#define CTL_E_CUSTOM_FIRST CUSTOM_CTL_SCODE(600)
+#define CLASS_E_NOTLICENSED (CLASSFACTORY_E_FIRST+2)
+#define CONNECT_E_FIRST MAKE_SCODE(SEVERITY_ERROR,FACILITY_ITF,0x200)
+#define CONNECT_E_LAST MAKE_SCODE(SEVERITY_ERROR,FACILITY_ITF,0x20F)
+#define CONNECT_S_FIRST MAKE_SCODE(SEVERITY_SUCCESS,FACILITY_ITF,0x200)
+#define CONNECT_S_LAST MAKE_SCODE(SEVERITY_SUCCESS,FACILITY_ITF,0x20F)
+#define CONNECT_E_NOCONNECTION (CONNECT_E_FIRST+0)
+#define CONNECT_E_ADVISELIMIT (CONNECT_E_FIRST+1)
+#define CONNECT_E_CANNOTCONNECT (CONNECT_E_FIRST+2)
+#define CONNECT_E_OVERRIDDEN (CONNECT_E_FIRST+3)
+#define SELFREG_E_FIRST MAKE_SCODE(SEVERITY_ERROR,FACILITY_ITF,0x200)
+#define SELFREG_E_LAST MAKE_SCODE(SEVERITY_ERROR,FACILITY_ITF,0x20F)
+#define SELFREG_S_FIRST MAKE_SCODE(SEVERITY_SUCCESS,FACILITY_ITF,0x200)
+#define SELFREG_S_LAST MAKE_SCODE(SEVERITY_SUCCESS,FACILITY_ITF,0x20F)
+#define SELFREG_E_TYPELIB (SELFREG_E_FIRST+0)
+#define SELFREG_E_CLASS (SELFREG_E_FIRST+1)
+#define PERPROP_E_FIRST MAKE_SCODE(SEVERITY_ERROR,FACILITY_ITF,0x200)
+#define PERPROP_E_LAST MAKE_SCODE(SEVERITY_ERROR,FACILITY_ITF,0x20F)
+#define PERPROP_S_FIRST MAKE_SCODE(SEVERITY_SUCCESS,FACILITY_ITF,0x200)
+#define PERPROP_S_LAST MAKE_SCODE(SEVERITY_SUCCESS,FACILITY_ITF,0x20F)
+#define PERPROP_E_NOPAGEAVAILABLE PERPROP_E_FIRST
+#define OLEMISC_RECOMPOSEONRESIZE 0x1
+#define OLEMISC_ONLYICONIC 0x2
+#define OLEMISC_INSERTNOTREPLACE 0x4
+#define OLEMISC_STATIC 0x8
+#define OLEMISC_CANTLINKINSIDE 0x10
+#define OLEMISC_CANLINKBYOLE1 0x20
+#define OLEMISC_ISLINKOBJECT 0x40
+#define OLEMISC_INSIDEOUT 0x80
+#define OLEMISC_ACTIVATEWHENVISIBLE 0x100
+#define OLEMISC_RENDERINGISDEVICEINDEPENDENT 0x200
+#define OLEMISC_INVISIBLEATRUNTIME 0x400
+#define OLEMISC_ALWAYSRUN 0x800
+#define OLEMISC_ACTSLIKEBUTTON 0x1000
+#define OLEMISC_ACTSLIKELABEL 0x2000
+#define OLEMISC_NOUIACTIVATE 0x4000
+#define OLEMISC_ALIGNABLE 0x8000
+#define OLEMISC_SIMPLEFRAME 0x10000
+#define OLEMISC_SETCLIENTSITEFIRST 0x20000
+#define OLEMISC_IMEMODE 0x40000
+#define OLEMISC_IGNOREACTIVATEWHENVISIBLE 0x80000
+#define OLEMISC_WANTSTOMENUMERGE 0x100000
+#define OLEMISC_SUPPORTSMULTILEVELUNDO 0x200000
+#define OLEIVERB_PROPERTIES (-7)
+#define VT_STREAMED_PROPSET 73
+#define VT_STORED_PROPSET 74
+#define VT_BLOB_PROPSET 75
+#define VT_VERBOSE_ENUM	76
+#define VT_COLOR VT_I4
+#define VT_XPOS_PIXELS VT_I4
+#define VT_YPOS_PIXELS VT_I4
+#define VT_XSIZE_PIXELS VT_I4
+#define VT_YSIZE_PIXELS VT_I4
+#define VT_XPOS_HIMETRIC VT_I4
+#define VT_YPOS_HIMETRIC VT_I4
+#define VT_XSIZE_HIMETRIC VT_I4
+#define VT_YSIZE_HIMETRIC VT_I4
+#define VT_TRISTATE VT_I2
+#define VT_OPTEXCLUSIVE VT_BOOL
+#define VT_FONT VT_DISPATCH
+#define VT_PICTURE VT_DISPATCH
+#define VT_HANDLE VT_I4
+#define OCM__BASE (WM_USER+0x1c00)
+#define OCM_COMMAND (OCM__BASE+WM_COMMAND)
+#define OCM_CTLCOLORBTN (OCM__BASE+WM_CTLCOLORBTN)
+#define OCM_CTLCOLOREDIT (OCM__BASE+WM_CTLCOLOREDIT)
+#define OCM_CTLCOLORDLG (OCM__BASE+WM_CTLCOLORDLG)
+#define OCM_CTLCOLORLISTBOX (OCM__BASE+WM_CTLCOLORLISTBOX)
+#define OCM_CTLCOLORMSGBOX (OCM__BASE+WM_CTLCOLORMSGBOX)
+#define OCM_CTLCOLORSCROLLBAR (OCM__BASE+WM_CTLCOLORSCROLLBAR)
+#define OCM_CTLCOLORSTATIC (OCM__BASE+WM_CTLCOLORSTATIC)
+#define OCM_DRAWITEM (OCM__BASE+WM_DRAWITEM)
+#define OCM_MEASUREITEM (OCM__BASE+WM_MEASUREITEM)
+#define OCM_DELETEITEM (OCM__BASE+WM_DELETEITEM)
+#define OCM_VKEYTOITEM (OCM__BASE+WM_VKEYTOITEM)
+#define OCM_CHARTOITEM (OCM__BASE+WM_CHARTOITEM)
+#define OCM_COMPAREITEM (OCM__BASE+WM_COMPAREITEM)
+#define OCM_HSCROLL (OCM__BASE+WM_HSCROLL)
+#define OCM_VSCROLL (OCM__BASE+WM_VSCROLL)
+#define OCM_PARENTNOTIFY (OCM__BASE+WM_PARENTNOTIFY)
+#define OCM_NOTIFY (OCM__BASE+WM_NOTIFY)
+#define CTRLINFO_EATS_RETURN 1
+#define CTRLINFO_EATS_ESCAPE 2
+#define XFORMCOORDS_POSITION 1
+#define XFORMCOORDS_SIZE 2
+#define XFORMCOORDS_HIMETRICTOCONTAINER 4
+#define XFORMCOORDS_CONTAINERTOHIMETRIC 8
+#define GUIDKIND_DEFAULT_SOURCE_DISP_IID 1
+#define PROPPAGESTATUS_DIRTY 1
+#define PROPPAGESTATUS_VALIDATE 2
+#define FONTSIZE(n) {n##0000,0}
+#define PICTURE_SCALABLE 1
+#define PICTURE_TRANSPARENT 2
+#define PICTYPE_UNINITIALIZED (-1)
+#define PICTYPE_NONE	0
+#define PICTYPE_BITMAP	1
+#define PICTYPE_METAFILE	2
+#define PICTYPE_ICON	3
+#define PICTYPE_ENHMETAFILE	4
+#define DISPID_AUTOSIZE (-500)
+#define DISPID_BACKCOLOR (-501)
+#define DISPID_BACKSTYLE (-502)
+#define DISPID_BORDERCOLOR (-503)
+#define DISPID_BORDERSTYLE (-504)
+#define DISPID_BORDERWIDTH (-505)
+#define DISPID_DRAWMODE (-507)
+#define DISPID_DRAWSTYLE (-508)
+#define DISPID_DRAWWIDTH (-509)
+#define DISPID_FILLCOLOR (-510)
+#define DISPID_FILLSTYLE (-511)
+#define DISPID_FONT (-512)
+#define DISPID_FORECOLOR (-513)
+#define DISPID_ENABLED (-514)
+#define DISPID_HWND (-515)
+#define DISPID_TABSTOP (-516)
+#define DISPID_TEXT (-517)
+#define DISPID_CAPTION (-518)
+#define DISPID_BORDERVISIBLE (-519)
+#define DISPID_APPEARANCE	(-520)
+#define DISPID_MOUSEPOINTER	(-521)
+#define DISPID_MOUSEICON	(-522)
+#define DISPID_PICTURE	(-523)
+#define DISPID_VALID	(-524)
+#define DISPID_REFRESH (-550)
+#define DISPID_DOCLICK (-551)
+#define DISPID_ABOUTBOX (-552)
+#define DISPID_CLICK (-600)
+#define DISPID_DBLCLICK (-601)
+#define DISPID_KEYDOWN (-602)
+#define DISPID_KEYPRESS (-603)
+#define DISPID_KEYUP (-604)
+#define DISPID_MOUSEDOWN (-605)
+#define DISPID_MOUSEMOVE (-606)
+#define DISPID_MOUSEUP (-607)
+#define DISPID_ERROREVENT (-608)
+#define DISPID_AMBIENT_BACKCOLOR (-701)
+#define DISPID_AMBIENT_DISPLAYNAME (-702)
+#define DISPID_AMBIENT_FONT (-703)
+#define DISPID_AMBIENT_FORECOLOR (-704)
+#define DISPID_AMBIENT_LOCALEID (-705)
+#define DISPID_AMBIENT_MESSAGEREFLECT (-706)
+#define DISPID_AMBIENT_SCALEUNITS (-707)
+#define DISPID_AMBIENT_TEXTALIGN (-708)
+#define DISPID_AMBIENT_USERMODE (-709)
+#define DISPID_AMBIENT_UIDEAD (-710)
+#define DISPID_AMBIENT_SHOWGRABHANDLES (-711)
+#define DISPID_AMBIENT_SHOWHATCHING (-712)
+#define DISPID_AMBIENT_DISPLAYASDEFAULT (-713)
+#define DISPID_AMBIENT_SUPPORTSMNEMONICS (-714)
+#define DISPID_AMBIENT_AUTOCLIP (-715)
+#define DISPID_AMBIENT_APPEARANCE	(-716)
+#define DISPID_AMBIENT_CODEPAGE	(-725)
+#define DISPID_AMBIENT_PALETTE	(-726)
+#define DISPID_AMBIENT_CHARSET	(-727)
+#define DISPID_AMBIENT_RIGHTTOLEFT	(-732)
+#define DISPID_AMBIENT_TOPTOBOTTOM	(-733)
+
+#define DISPID_FONT_NAME 0
+#define DISPID_FONT_SIZE 2
+#define DISPID_FONT_BOLD 3
+#define DISPID_FONT_ITALIC 4
+#define DISPID_FONT_UNDER 5
+#define DISPID_FONT_STRIKE 6
+#define DISPID_FONT_WEIGHT 7
+#define DISPID_FONT_CHARSET 8
+#define DISPID_PICT_HANDLE 0
+#define DISPID_PICT_HPAL 2
+#define DISPID_PICT_TYPE 3
+#define DISPID_PICT_WIDTH 4
+#define DISPID_PICT_HEIGHT 5
+#define DISPID_PICT_RENDER 6
+
+typedef _COM_interface IOleControl *LPOLECONTROL;
+typedef _COM_interface IOleControlSite *LPOLECONTROLSITE;
+typedef _COM_interface ISimpleFrameSite *LPSIMPLEFRAMESITE;
+typedef _COM_interface IPersistPropertyBag *LPPERSISTPROPERTYBAG;
+typedef _COM_interface IPersistStreamInit *LPPERSISTSTREAMINIT;
+typedef _COM_interface IPersistMemory *LPPERSISTMEMORY;
+typedef _COM_interface IPropertyNotifySink* LPPROPERTYNOTIFYSINK;
+typedef _COM_interface IProvideClassInfo *LPPROVIDECLASSINFO;
+typedef _COM_interface IProvideClassInfo2 *LPPROVIDECLASSINFO2;
+typedef _COM_interface IConnectionPointContainer *LPCONNECTIONPOINTCONTAINER;
+typedef _COM_interface IClassFactory2 *LPCLASSFACTORY2;
+typedef _COM_interface ISpecifyPropertyPages *LPSPECIFYPROPERTYPAGES;
+typedef _COM_interface IPerPropertyBrowsing *LPPERPROPERTYBROWSING;
+typedef _COM_interface IPropertyPage *LPPROPERTYPAGE;
+typedef _COM_interface IPropertyPage2 *LPPROPERTYPAGE2;
+
+typedef _COM_interface IPicture *LPPICTURE;
+typedef _COM_interface IPictureDisp *LPPICTUREDISP;
+typedef long OLE_XPOS_PIXELS;
+typedef long OLE_YPOS_PIXELS;
+typedef long OLE_XSIZE_PIXELS;
+typedef long OLE_YSIZE_PIXELS;
+typedef float OLE_XPOS_CONTAINER;
+typedef float OLE_YPOS_CONTAINER;
+typedef float OLE_XSIZE_CONTAINER;
+
+typedef VARIANT_BOOL OLE_OPTEXCLUSIVE;
+typedef VARIANT_BOOL OLE_CANCELBOOL;
+typedef VARIANT_BOOL OLE_ENABLEDEFAULTBOOL;
+
+#pragma pack(push,8)
+typedef enum { triUnchecked,triChecked1,triGray } OLE_TRISTATE;
+typedef struct tagOCPFIPARAMS {
+	ULONG cbStructSize;
+	HWND hWndOwner;
+	int x;
+	int y;
+	LPCOLESTR lpszCaption;
+	ULONG cObjects;
+	LPUNKNOWN *lplpUnk;
+	ULONG cPages;
+	CLSID *lpPages;
+	LCID lcid;
+	DISPID dispidInitialProperty;
+} OCPFIPARAMS,*LPOCPFIPARAMS;
+typedef struct tagFONTDESC {
+	UINT cbSizeofstruct;
+	LPOLESTR lpstrName;
+	CY cySize;
+	SHORT sWeight;
+	SHORT sCharset;
+	BOOL fItalic;
+	BOOL fUnderline;
+	BOOL fStrikethrough;
+} FONTDESC,*LPFONTDESC;
+typedef struct tagPICTDESC {
+	UINT cbSizeofstruct;
+	UINT picType;
+	_ANONYMOUS_UNION union {
+		struct {
+			HBITMAP hbitmap;
+			HPALETTE hpal;
+		} bmp;
+		struct {
+			HMETAFILE hmeta;
+			int xExt;
+			int yExt;
+		} wmf;
+		struct {
+			HICON hicon;
+		} icon;
+		struct {
+			HENHMETAFILE hemf;
+		} emf;
+	} DUMMYUNIONNAME;
+} PICTDESC,*LPPICTDESC;
+#pragma pack(pop)
+
+STDAPI DllRegisterServer(void);
+STDAPI DllUnregisterServer(void);
+STDAPI OleCreateFontIndirect(LPFONTDESC,REFIID,PVOID*);
+STDAPI OleCreatePictureIndirect(LPPICTDESC,REFIID,BOOL,PVOID*);
+STDAPI OleCreatePropertyFrame(HWND,UINT,UINT,LPCOLESTR,ULONG,LPUNKNOWN*,ULONG,LPCLSID,LCID,DWORD,PVOID);
+STDAPI OleCreatePropertyFrameIndirect(LPOCPFIPARAMS);
+STDAPI_(HCURSOR) OleIconToCursor(HINSTANCE,HICON);
+STDAPI OleLoadPicture(LPSTREAM,LONG,BOOL,REFIID,PVOID*);
+STDAPI OleLoadPictureEx(LPSTREAM,LONG,BOOL,REFIID,DWORD,DWORD,DWORD,LPVOID*);
+STDAPI OleLoadPicturePath(LPOLESTR,LPUNKNOWN,DWORD,OLE_COLOR,REFIID,LPVOID*);
+STDAPI OleLoadPictureFile(VARIANT,LPDISPATCH*);
+STDAPI OleLoadPictureFileEx(VARIANT,DWORD,DWORD,DWORD,LPDISPATCH*);
+STDAPI OleSavePictureFile(LPDISPATCH,BSTR);
+STDAPI OleTranslateColor(OLE_COLOR,HPALETTE,COLORREF*);
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/olectlid.h
===================================================================
--- Daodan/MinGW/include/olectlid.h	(revision 1046)
+++ Daodan/MinGW/include/olectlid.h	(revision 1046)
@@ -0,0 +1,114 @@
+#ifndef _OLECTLID_H
+#define _OLECTLID_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern const GUID IID_IDispatch;
+extern const GUID IID_IPropertyNotifySink;
+extern const GUID IID_IClassFactory2;
+extern const GUID IID_IProvideClassInfo;
+extern const GUID IID_IProvideClassInfo2;
+extern const GUID IID_IConnectionPointContainer;
+extern const GUID IID_IEnumConnectionPoints;
+extern const GUID IID_IConnectionPoint;
+extern const GUID IID_IEnumConnections;
+extern const GUID IID_IOleControl;
+extern const GUID IID_IOleControlSite;
+extern const GUID IID_ISimpleFrameSite;
+extern const GUID IID_IPersistStreamInit;
+extern const GUID IID_IPersistMemory;
+extern const GUID IID_IPersistPropertyBag;
+extern const GUID IID_IPropertyBag;
+extern const GUID IID_IErrorLog;
+extern const GUID IID_IPropertyFrame;
+extern const GUID IID_ISpecifyPropertyPages;
+extern const GUID IID_IPerPropertyBrowsing;
+extern const GUID IID_IPropertyPageSite;
+extern const GUID IID_IPropertyPage;
+extern const GUID IID_IPropertyPage2;
+extern const GUID CLSID_CFontPropPage;
+extern const GUID CLSID_CColorPropPage;
+extern const GUID CLSID_CPicturePropPage;
+extern const GUID CLSID_PersistPropset;
+extern const GUID CLSID_ConvertVBX;
+extern const GUID CLSID_StdFont;
+extern const GUID CLSID_StdPicture;
+extern const GUID IID_IFont;
+extern const GUID IID_IFontDisp;
+extern const GUID IID_IPicture;
+extern const GUID IID_IPictureDisp;
+extern const GUID GUID_HIMETRIC;
+extern const GUID GUID_COLOR;
+extern const GUID GUID_XPOSPIXEL;
+extern const GUID GUID_YPOSPIXEL;
+extern const GUID GUID_XSIZEPIXEL;
+extern const GUID GUID_YSIZEPIXEL;
+extern const GUID GUID_XPOS;
+extern const GUID GUID_YPOS;
+extern const GUID GUID_XSIZE;
+extern const GUID GUID_YSIZE;
+extern const GUID GUID_TRISTATE;
+extern const GUID GUID_OPTIONVALUEEXCLUSIVE;
+extern const GUID GUID_CHECKVALUEEXCLUSIVE;
+extern const GUID GUID_FONTNAME;
+extern const GUID GUID_FONTSIZE;
+extern const GUID GUID_FONTBOLD;
+extern const GUID GUID_FONTITALIC;
+extern const GUID GUID_FONTUNDERSCORE;
+extern const GUID GUID_FONTSTRIKETHROUGH;
+extern const GUID GUID_HANDLE;
+extern const GUID IID_IEnumUnknown;
+extern const GUID IID_IEnumString;
+extern const GUID IID_IEnumMoniker;
+extern const GUID IID_IEnumFORMATETC;
+extern const GUID IID_IEnumOLEVERB;
+extern const GUID IID_IEnumSTATDATA;
+extern const GUID IID_IEnumSTATSTG;
+extern const GUID IID_IEnumGeneric;
+extern const GUID IID_IEnumHolder;
+extern const GUID IID_IEnumCallback;
+extern const GUID IID_IPersistStream;
+extern const GUID IID_IPersistStorage;
+extern const GUID IID_IPersistFile;
+extern const GUID IID_IPersist;
+extern const GUID IID_IViewObject;
+extern const GUID IID_IDataObject;
+extern const GUID IID_IAdviseSink;
+extern const GUID IID_IDataAdviseHolder;
+extern const GUID IID_IOleAdviseHolder;
+extern const GUID IID_IOleObject;
+extern const GUID IID_IOleInPlaceObject;
+extern const GUID IID_IOleWindow;
+extern const GUID IID_IOleInPlaceUIWindow;
+extern const GUID IID_IOleInPlaceFrame;
+extern const GUID IID_IOleInPlaceActiveObject;
+extern const GUID IID_IOleClientSite;
+extern const GUID IID_IOleInPlaceSite;
+extern const GUID IID_IParseDisplayName;
+extern const GUID IID_IOleContainer;
+extern const GUID IID_IOleItemContainer;
+extern const GUID IID_IOleLink;
+extern const GUID IID_IOleCache;
+extern const GUID IID_IOleManager;
+extern const GUID IID_IOlePresObj;
+extern const GUID IID_IDropSource;
+extern const GUID IID_IDropTarget;
+extern const GUID IID_IDebug;
+extern const GUID IID_IDebugStream;
+extern const GUID IID_IAdviseSink2;
+extern const GUID IID_IRunnableObject;
+extern const GUID IID_IViewObject2;
+extern const GUID IID_IOleCache2;
+extern const GUID IID_IOleCacheControl;
+extern const GUID CLSID_Picture_Metafile;
+extern const GUID CLSID_Picture_Dib;
+
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/oledlg.h
===================================================================
--- Daodan/MinGW/include/oledlg.h	(revision 1046)
+++ Daodan/MinGW/include/oledlg.h	(revision 1046)
@@ -0,0 +1,935 @@
+#ifndef _OLEDLG_H
+#define _OLEDLG_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#include <windows.h>
+#include <shellapi.h>
+#include <commdlg.h>
+#include <ole2.h>
+#include <string.h>
+/* #include <tchar.h> */
+#include <dlgs.h>
+#include <prsht.h>
+#define PS_MAXLINKTYPES 8
+#define OLESTDDELIM TEXT("\\")
+#define SZOLEUI_MSG_HELP TEXT("OLEUI_MSG_HELP")
+#define SZOLEUI_MSG_ENDDIALOG TEXT("OLEUI_MSG_ENDDIALOG")
+#define SZOLEUI_MSG_BROWSE TEXT("OLEUI_MSG_BROWSE")
+#define SZOLEUI_MSG_CHANGEICON TEXT("OLEUI_MSG_CHANGEICON")
+#define SZOLEUI_MSG_CLOSEBUSYDIALOG TEXT("OLEUI_MSG_CLOSEBUSYDIALOG")
+#define SZOLEUI_MSG_CONVERT TEXT("OLEUI_MSG_CONVERT")
+#define SZOLEUI_MSG_CHANGESOURCE TEXT("OLEUI_MSG_CHANGESOURCE")
+#define SZOLEUI_MSG_ADDCONTROL TEXT("OLEUI_MSG_ADDCONTROL")
+#define SZOLEUI_MSG_BROWSE_OFN TEXT("OLEUI_MSG_BROWSE_OFN")
+#define PROP_HWND_CHGICONDLG TEXT("HWND_CIDLG")
+#define IDC_OLEUIHELP 99
+#define IDC_IO_CREATENEW 2100
+#define IDC_IO_CREATEFROMFILE 2101
+#define IDC_IO_LINKFILE 2102
+#define IDC_IO_OBJECTTYPELIST 2103
+#define IDC_IO_DISPLAYASICON 2104
+#define IDC_IO_CHANGEICON 2105
+#define IDC_IO_FILE 2106
+#define IDC_IO_FILEDISPLAY 2107
+#define IDC_IO_RESULTIMAGE 2108
+#define IDC_IO_RESULTTEXT 2109
+#define IDC_IO_ICONDISPLAY 2110
+#define IDC_IO_OBJECTTYPETEXT 2111
+#define IDC_IO_FILETEXT 2112
+#define IDC_IO_FILETYPE 2113
+#define IDC_IO_INSERTCONTROL 2114
+#define IDC_IO_ADDCONTROL 2115
+#define IDC_IO_CONTROLTYPELIST 2116
+#define IDC_PS_PASTE 500
+#define IDC_PS_PASTELINK 501
+#define IDC_PS_SOURCETEXT 502
+#define IDC_PS_PASTELIST 503
+#define IDC_PS_PASTELINKLIST 504
+#define IDC_PS_DISPLAYLIST 505
+#define IDC_PS_DISPLAYASICON 506
+#define IDC_PS_ICONDISPLAY 507
+#define IDC_PS_CHANGEICON 508
+#define IDC_PS_RESULTIMAGE 509
+#define IDC_PS_RESULTTEXT 510
+#define IDC_CI_GROUP 120
+#define IDC_CI_CURRENT 121
+#define IDC_CI_CURRENTICON 122
+#define IDC_CI_DEFAULT 123
+#define IDC_CI_DEFAULTICON 124
+#define IDC_CI_FROMFILE 125
+#define IDC_CI_FROMFILEEDIT 126
+#define IDC_CI_ICONLIST 127
+#define IDC_CI_LABEL 128
+#define IDC_CI_LABELEDIT 129
+#define IDC_CI_BROWSE 130
+#define IDC_CI_ICONDISPLAY 131
+#define IDC_CV_OBJECTTYPE 150
+#define IDC_CV_DISPLAYASICON 152
+#define IDC_CV_CHANGEICON 153
+#define IDC_CV_ACTIVATELIST 154
+#define IDC_CV_CONVERTTO 155
+#define IDC_CV_ACTIVATEAS 156
+#define IDC_CV_RESULTTEXT 157
+#define IDC_CV_CONVERTLIST 158
+#define IDC_CV_ICONDISPLAY 165
+#define IDC_EL_CHANGESOURCE 201
+#define IDC_EL_AUTOMATIC 202
+#define IDC_EL_CANCELLINK 209
+#define IDC_EL_UPDATENOW 210
+#define IDC_EL_OPENSOURCE 211
+#define IDC_EL_MANUAL 212
+#define IDC_EL_LINKSOURCE 216
+#define IDC_EL_LINKTYPE 217
+#define IDC_EL_LINKSLISTBOX 206
+#define IDC_EL_COL1 220
+#define IDC_EL_COL2 221
+#define IDC_EL_COL3 222
+#define IDC_BZ_RETRY 600
+#define IDC_BZ_ICON 601
+#define IDC_BZ_MESSAGE1 602
+#define IDC_BZ_SWITCHTO 604
+#define IDC_UL_METER 1029
+#define IDC_UL_STOP 1030
+#define IDC_UL_PERCENT 1031
+#define IDC_UL_PROGRESS 1032
+#define IDC_PU_LINKS 900
+#define IDC_PU_TEXT 901
+#define IDC_PU_CONVERT 902
+#define IDC_PU_ICON 908
+#define IDC_GP_OBJECTNAME 1009
+#define IDC_GP_OBJECTTYPE 1010
+#define IDC_GP_OBJECTSIZE 1011
+#define IDC_GP_CONVERT 1013
+#define IDC_GP_OBJECTICON 1014
+#define IDC_GP_OBJECTLOCATION 1022
+#define IDC_VP_PERCENT 1000
+#define IDC_VP_CHANGEICON 1001
+#define IDC_VP_EDITABLE 1002
+#define IDC_VP_ASICON 1003
+#define IDC_VP_RELATIVE 1005
+#define IDC_VP_SPIN 1006
+#define IDC_VP_SCALETXT 1034
+#define IDC_VP_ICONDISPLAY 1021
+#define IDC_VP_RESULTIMAGE 1033
+#define IDC_LP_OPENSOURCE 1006
+#define IDC_LP_UPDATENOW 1007
+#define IDC_LP_BREAKLINK 1008
+#define IDC_LP_LINKSOURCE 1012
+#define IDC_LP_CHANGESOURCE 1015
+#define IDC_LP_AUTOMATIC 1016
+#define IDC_LP_MANUAL 1017
+#define IDC_LP_DATE 1018
+#define IDC_LP_TIME 1019
+#define IDD_INSERTOBJECT 1000
+#define IDD_CHANGEICON 1001
+#define IDD_CONVERT 1002
+#define IDD_PASTESPECIAL 1003
+#define IDD_EDITLINKS 1004
+#define IDD_BUSY 1006
+#define IDD_UPDATELINKS 1007
+#define IDD_CHANGESOURCE 1009
+#define IDD_INSERTFILEBROWSE 1010
+#define IDD_CHANGEICONBROWSE 1011
+#define IDD_CONVERTONLY 1012
+#define IDD_CHANGESOURCE4 1013
+#define IDD_GNRLPROPS 1100
+#define IDD_VIEWPROPS 1101
+#define IDD_LINKPROPS 1102
+#define IDD_CANNOTUPDATELINK 1008
+#define IDD_LINKSOURCEUNAVAILABLE 1020
+#define IDD_SERVERNOTFOUND 1023
+#define IDD_OUTOFMEMORY 1024
+#define IDD_SERVERNOTREGW 1021
+#define IDD_LINKTYPECHANGEDW 1022
+#define IDD_SERVERNOTREGA 1025
+#define IDD_LINKTYPECHANGEDA 1026
+#define ID_BROWSE_CHANGEICON 1
+#define ID_BROWSE_INSERTFILE 2
+#define ID_BROWSE_ADDCONTROL 3
+#define ID_BROWSE_CHANGESOURCE 4
+#define OLEUI_FALSE 0
+#define OLEUI_SUCCESS 1
+#define OLEUI_OK 1
+#define OLEUI_CANCEL 2
+#define OLEUI_ERR_STANDARDMIN 100
+#define OLEUI_ERR_STRUCTURENULL 101
+#define OLEUI_ERR_STRUCTUREINVALID 102
+#define OLEUI_ERR_CBSTRUCTINCORRECT 103
+#define OLEUI_ERR_HWNDOWNERINVALID 104
+#define OLEUI_ERR_LPSZCAPTIONINVALID 105
+#define OLEUI_ERR_LPFNHOOKINVALID 106
+#define OLEUI_ERR_HINSTANCEINVALID 107
+#define OLEUI_ERR_LPSZTEMPLATEINVALID 108
+#define OLEUI_ERR_HRESOURCEINVALID 109
+#define OLEUI_ERR_FINDTEMPLATEFAILURE 110
+#define OLEUI_ERR_LOADTEMPLATEFAILURE 111
+#define OLEUI_ERR_DIALOGFAILURE 112
+#define OLEUI_ERR_LOCALMEMALLOC 113
+#define OLEUI_ERR_GLOBALMEMALLOC 114
+#define OLEUI_ERR_LOADSTRING 115
+#define OLEUI_ERR_OLEMEMALLOC 116
+#define OLEUI_ERR_STANDARDMAX 116
+#define OPF_OBJECTISLINK 1
+#define OPF_NOFILLDEFAULT 2
+#define OPF_SHOWHELP 4
+#define OPF_DISABLECONVERT 8
+#define OLEUI_OPERR_SUBPROPNULL OLEUI_ERR_STANDARDMAX
+#define OLEUI_OPERR_SUBPROPINVALID (OLEUI_ERR_STANDARDMAX+1)
+#define OLEUI_OPERR_PROPSHEETNULL (OLEUI_ERR_STANDARDMAX+2)
+#define OLEUI_OPERR_PROPSHEETINVALID (OLEUI_ERR_STANDARDMAX+3)
+#define OLEUI_OPERR_SUPPROP (OLEUI_ERR_STANDARDMAX+4)
+#define OLEUI_OPERR_PROPSINVALID (OLEUI_ERR_STANDARDMAX+5)
+#define OLEUI_OPERR_PAGESINCORRECT (OLEUI_ERR_STANDARDMAX+6)
+#define OLEUI_OPERR_INVALIDPAGES (OLEUI_ERR_STANDARDMAX+7)
+#define OLEUI_OPERR_NOTSUPPORTED (OLEUI_ERR_STANDARDMAX+8)
+#define OLEUI_OPERR_DLGPROCNOTNULL (OLEUI_ERR_STANDARDMAX+9)
+#define OLEUI_OPERR_LPARAMNOTZERO (OLEUI_ERR_STANDARDMAX+10)
+#define OLEUI_GPERR_STRINGINVALID (OLEUI_ERR_STANDARDMAX+11)
+#define OLEUI_GPERR_CLASSIDINVALID (OLEUI_ERR_STANDARDMAX+12)
+#define OLEUI_GPERR_LPCLSIDEXCLUDEINVALID (OLEUI_ERR_STANDARDMAX+13)
+#define OLEUI_GPERR_CBFORMATINVALID (OLEUI_ERR_STANDARDMAX+14)
+#define OLEUI_VPERR_METAPICTINVALID (OLEUI_ERR_STANDARDMAX+15)
+#define OLEUI_VPERR_DVASPECTINVALID (OLEUI_ERR_STANDARDMAX+16)
+#define OLEUI_LPERR_LINKCNTRNULL (OLEUI_ERR_STANDARDMAX+17)
+#define OLEUI_LPERR_LINKCNTRINVALID (OLEUI_ERR_STANDARDMAX+18)
+#define OLEUI_OPERR_PROPERTYSHEET (OLEUI_ERR_STANDARDMAX+19)
+#define OLEUI_OPERR_OBJINFOINVALID (OLEUI_ERR_STANDARDMAX+20)
+#define OLEUI_OPERR_LINKINFOINVALID (OLEUI_ERR_STANDARDMAX+21)
+#define OLEUI_QUERY_GETCLASSID 65280
+#define OLEUI_QUERY_LINKBROKEN 65281
+#define IOF_SHOWHELP 1
+#define IOF_SELECTCREATENEW 2
+#define IOF_SELECTCREATEFROMFILE 4
+#define IOF_CHECKLINK 8
+#define IOF_CHECKDISPLAYASICON 16
+#define IOF_CREATENEWOBJECT 32
+#define IOF_CREATEFILEOBJECT 64
+#define IOF_CREATELINKOBJECT 128
+#define IOF_DISABLELINK 256
+#define IOF_VERIFYSERVERSEXIST 512
+#define IOF_DISABLEDISPLAYASICON 1024
+#define IOF_HIDECHANGEICON 2048
+#define IOF_SHOWINSERTCONTROL 4096
+#define IOF_SELECTCREATECONTROL 8192
+#define OLEUI_IOERR_LPSZFILEINVALID OLEUI_ERR_STANDARDMAX
+#define OLEUI_IOERR_LPSZLABELINVALID (OLEUI_ERR_STANDARDMAX+1)
+#define OLEUI_IOERR_HICONINVALID (OLEUI_ERR_STANDARDMAX+2)
+#define OLEUI_IOERR_LPFORMATETCINVALID (OLEUI_ERR_STANDARDMAX+3)
+#define OLEUI_IOERR_PPVOBJINVALID (OLEUI_ERR_STANDARDMAX+4)
+#define OLEUI_IOERR_LPIOLECLIENTSITEINVALID (OLEUI_ERR_STANDARDMAX+5)
+#define OLEUI_IOERR_LPISTORAGEINVALID (OLEUI_ERR_STANDARDMAX+6)
+#define OLEUI_IOERR_SCODEHASERROR (OLEUI_ERR_STANDARDMAX+7)
+#define OLEUI_IOERR_LPCLSIDEXCLUDEINVALID (OLEUI_ERR_STANDARDMAX+8)
+#define OLEUI_IOERR_CCHFILEINVALID (OLEUI_ERR_STANDARDMAX+9)
+#define PSF_SHOWHELP 1
+#define PSF_SELECTPASTE 2
+#define PSF_SELECTPASTELINK 4
+#define PSF_CHECKDISPLAYASICON 8
+#define PSF_DISABLEDISPLAYASICON 16
+#define PSF_HIDECHANGEICON 32
+#define PSF_STAYONCLIPBOARDCHANGE 64
+#define PSF_NOREFRESHDATAOBJECT 128
+#define OLEUI_IOERR_SRCDATAOBJECTINVALID OLEUI_ERR_STANDARDMAX
+#define OLEUI_IOERR_ARRPASTEENTRIESINVALID (OLEUI_ERR_STANDARDMAX+1)
+#define OLEUI_IOERR_ARRLINKTYPESINVALID (OLEUI_ERR_STANDARDMAX+2)
+#define OLEUI_PSERR_CLIPBOARDCHANGED (OLEUI_ERR_STANDARDMAX+3)
+#define OLEUI_PSERR_GETCLIPBOARDFAILED (OLEUI_ERR_STANDARDMAX+4)
+#define OLEUI_ELERR_LINKCNTRNULL OLEUI_ERR_STANDARDMAX
+#define OLEUI_ELERR_LINKCNTRINVALID (OLEUI_ERR_STANDARDMAX+1)
+#define ELF_SHOWHELP 1
+#define ELF_DISABLEUPDATENOW 2
+#define ELF_DISABLEOPENSOURCE 4
+#define ELF_DISABLECHANGESOURCE 8
+#define ELF_DISABLECANCELLINK 16
+#define CIF_SHOWHELP 1
+#define CIF_SELECTCURRENT 2
+#define CIF_SELECTDEFAULT 4
+#define CIF_SELECTFROMFILE 8
+#define CIF_USEICONEXE 16
+#define OLEUI_CIERR_MUSTHAVECLSID OLEUI_ERR_STANDARDMAX
+#define OLEUI_CIERR_MUSTHAVECURRENTMETAFILE (OLEUI_ERR_STANDARDMAX+1)
+#define OLEUI_CIERR_SZICONEXEINVALID (OLEUI_ERR_STANDARDMAX+2)
+#define CF_SHOWHELPBUTTON 1
+#define CF_SETCONVERTDEFAULT 2
+#define CF_SETACTIVATEDEFAULT 4
+#define CF_SELECTCONVERTTO 8
+#define CF_SELECTACTIVATEAS 16
+#define CF_DISABLEDISPLAYASICON 32
+#define CF_DISABLEACTIVATEAS 64
+#define CF_HIDECHANGEICON 128
+#define CF_CONVERTONLY 256
+#define OLEUI_CTERR_CLASSIDINVALID (OLEUI_ERR_STANDARDMAX+1)
+#define OLEUI_CTERR_DVASPECTINVALID (OLEUI_ERR_STANDARDMAX+2)
+#define OLEUI_CTERR_CBFORMATINVALID (OLEUI_ERR_STANDARDMAX+3)
+#define OLEUI_CTERR_HMETAPICTINVALID (OLEUI_ERR_STANDARDMAX+4)
+#define OLEUI_CTERR_STRINGINVALID (OLEUI_ERR_STANDARDMAX+5)
+#define BZ_DISABLECANCELBUTTON 1
+#define BZ_DISABLESWITCHTOBUTTON 2
+#define BZ_DISABLERETRYBUTTON 4
+#define BZ_NOTRESPONDINGDIALOG 8
+#define OLEUI_BZERR_HTASKINVALID OLEUI_ERR_STANDARDMAX
+#define OLEUI_BZ_SWITCHTOSELECTED (OLEUI_ERR_STANDARDMAX+1)
+#define OLEUI_BZ_RETRYSELECTED (OLEUI_ERR_STANDARDMAX+2)
+#define OLEUI_BZ_CALLUNBLOCKED (OLEUI_ERR_STANDARDMAX+3)
+#define CSF_SHOWHELP 1
+#define CSF_VALIDSOURCE 2
+#define CSF_ONLYGETSOURCE 4
+#define CSF_EXPLORER 8
+#define OLEUI_CSERR_LINKCNTRNULL OLEUI_ERR_STANDARDMAX
+#define OLEUI_CSERR_LINKCNTRINVALID (OLEUI_ERR_STANDARDMAX+1)
+#define OLEUI_CSERR_FROMNOTNULL (OLEUI_ERR_STANDARDMAX+2)
+#define OLEUI_CSERR_TONOTNULL (OLEUI_ERR_STANDARDMAX+3)
+#define OLEUI_CSERR_SOURCENULL (OLEUI_ERR_STANDARDMAX+4)
+#define OLEUI_CSERR_SOURCEINVALID (OLEUI_ERR_STANDARDMAX+5)
+#define OLEUI_CSERR_SOURCEPARSERROR (OLEUI_ERR_STANDARDMAX+6)
+#define OLEUI_CSERR_SOURCEPARSEERROR (OLEUI_ERR_STANDARDMAX+7)
+#define VPF_SELECTRELATIVE 1
+#define VPF_DISABLERELATIVE 2
+#define VPF_DISABLESCALE 4
+
+#ifndef RC_INVOKED
+#pragma pack(push, 8)
+typedef UINT (CALLBACK *LPFNOLEUIHOOK)(HWND, UINT, WPARAM, LPARAM);
+typedef struct tagOLEUIINSERTOBJECTW {
+	DWORD cbStruct;
+	DWORD dwFlags;
+	HWND hWndOwner;
+	LPCWSTR lpszCaption;
+	LPFNOLEUIHOOK lpfnHook;
+	LPARAM lCustData;
+	HINSTANCE hInstance;
+	LPCWSTR lpszTemplate;
+	HRSRC hResource;
+	CLSID clsid;
+	LPWSTR lpszFile;
+	UINT cchFile;
+	UINT cClsidExclude;
+	LPCLSID lpClsidExclude;
+	IID iid;
+	DWORD oleRender;
+	LPFORMATETC lpFormatEtc;
+	LPOLECLIENTSITE lpIOleClientSite;
+	LPSTORAGE lpIStorage;
+	PVOID *ppvObj;
+	SCODE sc;
+	HGLOBAL hMetaPict;
+} OLEUIINSERTOBJECTW,*POLEUIINSERTOBJECTW,*LPOLEUIINSERTOBJECTW;
+typedef struct tagOLEUIINSERTOBJECTA {
+	DWORD cbStruct;
+	DWORD dwFlags;
+	HWND hWndOwner;
+	LPCSTR lpszCaption;
+	LPFNOLEUIHOOK lpfnHook;
+	LPARAM lCustData;
+	HINSTANCE hInstance;
+	LPCSTR lpszTemplate;
+	HRSRC hResource;
+	CLSID clsid;
+	LPSTR lpszFile;
+	UINT cchFile;
+	UINT cClsidExclude;
+	LPCLSID lpClsidExclude;
+	IID iid;
+	DWORD oleRender;
+	LPFORMATETC lpFormatEtc;
+	LPOLECLIENTSITE lpIOleClientSite;
+	LPSTORAGE lpIStorage;
+	PVOID *ppvObj;
+	SCODE sc;
+	HGLOBAL hMetaPict;
+} OLEUIINSERTOBJECTA,*POLEUIINSERTOBJECTA,*LPOLEUIINSERTOBJECTA;
+STDAPI_(UINT) OleUIInsertObjectW(LPOLEUIINSERTOBJECTW);
+STDAPI_(UINT) OleUIInsertObjectA(LPOLEUIINSERTOBJECTA);
+typedef enum tagOLEUIPASTEFLAG {
+	OLEUIPASTE_PASTEONLY,
+	OLEUIPASTE_LINKTYPE1,
+	OLEUIPASTE_LINKTYPE2,
+	OLEUIPASTE_LINKTYPE3=4,
+	OLEUIPASTE_LINKTYPE4=8,
+	OLEUIPASTE_LINKTYPE5=16,
+	OLEUIPASTE_LINKTYPE6=32,
+	OLEUIPASTE_LINKTYPE7=64,
+	OLEUIPASTE_LINKTYPE8=128,
+	OLEUIPASTE_PASTE=512,
+	OLEUIPASTE_LINKANYTYPE=1024,
+	OLEUIPASTE_ENABLEICON=2048
+} OLEUIPASTEFLAG;
+typedef struct tagOLEUIPASTEENTRYW {
+	FORMATETC fmtetc;
+	LPCWSTR lpstrFormatName;
+	LPCWSTR lpstrResultText;
+	DWORD dwFlags;
+	DWORD dwScratchSpace;
+} OLEUIPASTEENTRYW,*POLEUIPASTEENTRYW,*LPOLEUIPASTEENTRYW;
+typedef struct tagOLEUIPASTEENTRYA {
+	FORMATETC fmtetc;
+	LPCSTR lpstrFormatName;
+	LPCSTR lpstrResultText;
+	DWORD dwFlags;
+	DWORD dwScratchSpace;
+} OLEUIPASTEENTRYA,*POLEUIPASTEENTRYA,*LPOLEUIPASTEENTRYA;
+typedef struct tagOLEUIPASTESPECIALW {
+	DWORD cbStruct;
+	DWORD dwFlags;
+	HWND hWndOwner;
+	LPCWSTR lpszCaption;
+	LPFNOLEUIHOOK lpfnHook;
+	LPARAM lCustData;
+	HINSTANCE hInstance;
+	LPCWSTR lpszTemplate;
+	HRSRC hResource;
+	LPDATAOBJECT lpSrcDataObj;
+	LPOLEUIPASTEENTRYW arrPasteEntries;
+	int cPasteEntries;
+	UINT *arrLinkTypes;
+	int cLinkTypes;
+	UINT cClsidExclude;
+	LPCLSID lpClsidExclude;
+	int nSelectedIndex;
+	BOOL fLink;
+	HGLOBAL hMetaPict;
+	SIZEL sizel;
+} OLEUIPASTESPECIALW,*POLEUIPASTESPECIALW,*LPOLEUIPASTESPECIALW;
+typedef struct tagOLEUIPASTESPECIALA {
+	DWORD cbStruct;
+	DWORD dwFlags;
+	HWND hWndOwner;
+	LPCSTR lpszCaption;
+	LPFNOLEUIHOOK lpfnHook;
+	LPARAM lCustData;
+	HINSTANCE hInstance;
+	LPCSTR lpszTemplate;
+	HRSRC hResource;
+	LPDATAOBJECT lpSrcDataObj;
+	LPOLEUIPASTEENTRYA arrPasteEntries;
+	int cPasteEntries;
+	UINT *arrLinkTypes;
+	int cLinkTypes;
+	UINT cClsidExclude;
+	LPCLSID lpClsidExclude;
+	int nSelectedIndex;
+	BOOL fLink;
+	HGLOBAL hMetaPict;
+	SIZEL sizel;
+} OLEUIPASTESPECIALA,*POLEUIPASTESPECIALA,*LPOLEUIPASTESPECIALA;
+#define INTERFACE IOleUILinkContainerW
+DECLARE_INTERFACE_(IOleUILinkContainerW, IUnknown)
+{
+	STDMETHOD(QueryInterface) (THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+	STDMETHOD_(ULONG,Release) (THIS) PURE;
+	STDMETHOD_(DWORD,GetNextLink) (THIS_ DWORD dwLink) PURE;
+	STDMETHOD(SetLinkUpdateOptions) (THIS_ DWORD,DWORD) PURE;
+	STDMETHOD(GetLinkUpdateOptions) (THIS_ DWORD,PDWORD) PURE;
+	STDMETHOD(SetLinkSource) (THIS_ DWORD, LPWSTR,ULONG,PULONG,BOOL) PURE;
+	STDMETHOD(GetLinkSource) (THIS_ DWORD,LPWSTR*,PULONG,LPWSTR*,LPWSTR*,BOOL*,BOOL*) PURE;
+	STDMETHOD(OpenLinkSource) (THIS_ DWORD) PURE;
+	STDMETHOD(UpdateLink) (THIS_ DWORD,BOOL,BOOL) PURE;
+	STDMETHOD(CancelLink) (THIS_ DWORD) PURE;
+};
+#undef INTERFACE
+typedef IOleUILinkContainerW *LPOLEUILINKCONTAINERW;
+#define INTERFACE IOleUILinkContainerA
+DECLARE_INTERFACE_(IOleUILinkContainerA, IUnknown)
+{
+	STDMETHOD(QueryInterface) (THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+	STDMETHOD_(ULONG,Release) (THIS) PURE;
+	STDMETHOD_(DWORD,GetNextLink) (THIS_ DWORD) PURE;
+	STDMETHOD(SetLinkUpdateOptions) (THIS_ DWORD,DWORD) PURE;
+	STDMETHOD(GetLinkUpdateOptions) (THIS_ DWORD,PDWORD) PURE;
+	STDMETHOD(SetLinkSource) (THIS_ DWORD, LPSTR,ULONG,PULONG,BOOL) PURE;
+	STDMETHOD(GetLinkSource) (THIS_ DWORD,LPSTR*,PULONG,LPSTR*,LPSTR*,BOOL*,BOOL*) PURE;
+	STDMETHOD(OpenLinkSource) (THIS_ DWORD) PURE;
+	STDMETHOD(UpdateLink) (THIS_ DWORD,BOOL,BOOL) PURE;
+	STDMETHOD(CancelLink) (THIS_ DWORD) PURE;
+};
+#undef INTERFACE
+typedef IOleUILinkContainerA *LPOLEUILINKCONTAINERA;
+typedef struct tagOLEUIEDITLINKSW {
+	DWORD cbStruct;
+	DWORD dwFlags;
+	HWND hWndOwner;
+	LPCWSTR lpszCaption;
+	LPFNOLEUIHOOK lpfnHook;
+	LPARAM lCustData;
+	HINSTANCE hInstance;
+	LPCWSTR lpszTemplate;
+	HRSRC hResource;
+	LPOLEUILINKCONTAINERW lpOleUILinkContainer;
+} OLEUIEDITLINKSW,*POLEUIEDITLINKSW,*LPOLEUIEDITLINKSW;
+typedef struct tagOLEUIEDITLINKSA {
+	DWORD cbStruct;
+	DWORD dwFlags;
+	HWND hWndOwner;
+	LPCSTR lpszCaption;
+	LPFNOLEUIHOOK lpfnHook;
+	LPARAM lCustData;
+	HINSTANCE hInstance;
+	LPCSTR lpszTemplate;
+	HRSRC hResource;
+	LPOLEUILINKCONTAINERA lpOleUILinkContainer;
+} OLEUIEDITLINKSA,*POLEUIEDITLINKSA,*LPOLEUIEDITLINKSA;
+typedef struct tagOLEUICHANGEICONW {
+	DWORD cbStruct;
+	DWORD dwFlags;
+	HWND hWndOwner;
+	LPCWSTR lpszCaption;
+	LPFNOLEUIHOOK lpfnHook;
+	LPARAM lCustData;
+	HINSTANCE hInstance;
+	LPCWSTR lpszTemplate;
+	HRSRC hResource;
+	HGLOBAL hMetaPict;
+	CLSID clsid;
+	WCHAR szIconExe[MAX_PATH];
+	int cchIconExe;
+} OLEUICHANGEICONW,*POLEUICHANGEICONW,*LPOLEUICHANGEICONW;
+typedef struct tagOLEUICHANGEICONA {
+	DWORD cbStruct;
+	DWORD dwFlags;
+	HWND hWndOwner;
+	LPCSTR lpszCaption;
+	LPFNOLEUIHOOK lpfnHook;
+	LPARAM lCustData;
+	HINSTANCE hInstance;
+	LPCSTR lpszTemplate;
+	HRSRC hResource;
+	HGLOBAL hMetaPict;
+	CLSID clsid;
+	CHAR szIconExe[MAX_PATH];
+	int cchIconExe;
+} OLEUICHANGEICONA,*POLEUICHANGEICONA,*LPOLEUICHANGEICONA;
+typedef struct tagOLEUICONVERTW {
+	DWORD cbStruct;
+	DWORD dwFlags;
+	HWND hWndOwner;
+	LPCWSTR lpszCaption;
+	LPFNOLEUIHOOK lpfnHook;
+	LPARAM lCustData;
+	HINSTANCE hInstance;
+	LPCWSTR lpszTemplate;
+	HRSRC hResource;
+	CLSID clsid;
+	CLSID clsidConvertDefault;
+	CLSID clsidActivateDefault;
+	CLSID clsidNew;
+	DWORD dvAspect;
+	WORD wFormat;
+	BOOL fIsLinkedObject;
+	HGLOBAL hMetaPict;
+	LPWSTR lpszUserType;
+	BOOL fObjectsIconChanged;
+	LPWSTR lpszDefLabel;
+	UINT cClsidExclude;
+	LPCLSID lpClsidExclude;
+} OLEUICONVERTW,*POLEUICONVERTW,*LPOLEUICONVERTW;
+typedef struct tagOLEUICONVERTA {
+	DWORD cbStruct;
+	DWORD dwFlags;
+	HWND hWndOwner;
+	LPCSTR lpszCaption;
+	LPFNOLEUIHOOK lpfnHook;
+	LPARAM lCustData;
+	HINSTANCE hInstance;
+	LPCSTR lpszTemplate;
+	HRSRC hResource;
+	CLSID clsid;
+	CLSID clsidConvertDefault;
+	CLSID clsidActivateDefault;
+	CLSID clsidNew;
+	DWORD dvAspect;
+	WORD wFormat;
+	BOOL fIsLinkedObject;
+	HGLOBAL hMetaPict;
+	LPSTR lpszUserType;
+	BOOL fObjectsIconChanged;
+	LPSTR lpszDefLabel;
+	UINT cClsidExclude;
+	LPCLSID lpClsidExclude;
+} OLEUICONVERTA,*POLEUICONVERTA,*LPOLEUICONVERTA;
+typedef struct tagOLEUIBUSYW {
+	DWORD cbStruct;
+	DWORD dwFlags;
+	HWND hWndOwner;
+	LPCWSTR lpszCaption;
+	LPFNOLEUIHOOK lpfnHook;
+	LPARAM lCustData;
+	HINSTANCE hInstance;
+	LPCWSTR lpszTemplate;
+	HRSRC hResource;
+	HTASK hTask;
+	HWND *lphWndDialog;
+} OLEUIBUSYW,*POLEUIBUSYW,*LPOLEUIBUSYW;
+typedef struct tagOLEUIBUSYA {
+	DWORD cbStruct;
+	DWORD dwFlags;
+	HWND hWndOwner;
+	LPCSTR lpszCaption;
+	LPFNOLEUIHOOK lpfnHook;
+	LPARAM lCustData;
+	HINSTANCE hInstance;
+	LPCSTR lpszTemplate;
+	HRSRC hResource;
+	HTASK hTask;
+	HWND *lphWndDialog;
+} OLEUIBUSYA,*POLEUIBUSYA,*LPOLEUIBUSYA;
+typedef struct tagOLEUICHANGESOURCEW {
+	DWORD cbStruct;
+	DWORD dwFlags;
+	HWND hWndOwner;
+	LPCWSTR lpszCaption;
+	LPFNOLEUIHOOK lpfnHook;
+	LPARAM lCustData;
+	HINSTANCE hInstance;
+	LPCWSTR lpszTemplate;
+	HRSRC hResource;
+	OPENFILENAMEW* lpOFN;
+	DWORD dwReserved1[4];
+	LPOLEUILINKCONTAINERW lpOleUILinkContainer;
+	DWORD dwLink;
+	LPWSTR lpszDisplayName;
+	ULONG nFileLength;
+	LPWSTR lpszFrom;
+	LPWSTR lpszTo;
+} OLEUICHANGESOURCEW,*POLEUICHANGESOURCEW,*LPOLEUICHANGESOURCEW;
+typedef struct tagOLEUICHANGESOURCEA {
+	DWORD cbStruct;
+	DWORD dwFlags;
+	HWND hWndOwner;
+	LPCSTR lpszCaption;
+	LPFNOLEUIHOOK lpfnHook;
+	LPARAM lCustData;
+	HINSTANCE hInstance;
+	LPCSTR lpszTemplate;
+	HRSRC hResource;
+	OPENFILENAMEA *lpOFN;
+	DWORD dwReserved1[4];
+	LPOLEUILINKCONTAINERA lpOleUILinkContainer;
+	DWORD dwLink;
+	LPSTR lpszDisplayName;
+	ULONG nFileLength;
+	LPSTR lpszFrom;
+	LPSTR lpszTo;
+} OLEUICHANGESOURCEA,*POLEUICHANGESOURCEA,*LPOLEUICHANGESOURCEA;
+#define INTERFACE IOleUIObjInfoW
+DECLARE_INTERFACE_(IOleUIObjInfoW, IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetObjectInfo)(THIS_ DWORD,PDWORD,LPWSTR*,LPWSTR*,LPWSTR*,LPWSTR*) PURE;
+	STDMETHOD(GetConvertInfo)(THIS_ DWORD,CLSID*,PWORD,CLSID*,LPCLSID*,UINT*) PURE;
+	STDMETHOD(ConvertObject)(THIS_ DWORD,REFCLSID) PURE;
+	STDMETHOD(GetViewInfo)(THIS_ DWORD,HGLOBAL*,PDWORD,int*) PURE;
+	STDMETHOD(SetViewInfo)(THIS_ DWORD,HGLOBAL,DWORD,int,BOOL) PURE;
+};
+#undef INTERFACE
+typedef IOleUIObjInfoW *LPOLEUIOBJINFOW;
+#define INTERFACE IOleUIObjInfoA
+DECLARE_INTERFACE_(IOleUIObjInfoA, IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetObjectInfo)(THIS_ DWORD,PDWORD,LPSTR*,LPSTR*,LPSTR*,LPSTR*) PURE;
+	STDMETHOD(GetConvertInfo)(THIS_ DWORD,CLSID*,PWORD,CLSID*,LPCLSID*,UINT*) PURE;
+	STDMETHOD(ConvertObject)(THIS_ DWORD,REFCLSID) PURE;
+	STDMETHOD(GetViewInfo)(THIS_ DWORD,HGLOBAL*,PDWORD,int*) PURE;
+	STDMETHOD(SetViewInfo)(THIS_ DWORD,HGLOBAL,DWORD,int,BOOL) PURE;
+};
+#undef INTERFACE
+typedef IOleUIObjInfoA *LPOLEUIOBJINFOA;
+#define INTERFACE IOleUILinkInfoW
+DECLARE_INTERFACE_(IOleUILinkInfoW, IOleUILinkContainerW)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD_(DWORD,GetNextLink)(THIS_ DWORD) PURE;
+	STDMETHOD(SetLinkUpdateOptions)(THIS_ DWORD,DWORD) PURE;
+	STDMETHOD(GetLinkUpdateOptions)(THIS_ DWORD,DWORD*) PURE;
+	STDMETHOD(SetLinkSource)(THIS_ DWORD,LPWSTR,ULONG,PULONG,BOOL) PURE;
+	STDMETHOD(GetLinkSource)(THIS_ DWORD,LPWSTR*,PULONG,LPWSTR*,LPWSTR*,BOOL*,BOOL*) PURE;
+	STDMETHOD(OpenLinkSource)(THIS_ DWORD) PURE;
+	STDMETHOD(UpdateLink)(THIS_ DWORD,BOOL,BOOL) PURE;
+	STDMETHOD(CancelLink)(THIS_ DWORD) PURE;
+	STDMETHOD(GetLastUpdate)(THIS_ DWORD,FILETIME*) PURE;
+};
+#undef INTERFACE
+typedef IOleUILinkInfoW *LPOLEUILINKINFOW;
+#define INTERFACE IOleUILinkInfoA
+DECLARE_INTERFACE_(IOleUILinkInfoA, IOleUILinkContainerA)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD_(DWORD,GetNextLink)(THIS_ DWORD) PURE;
+	STDMETHOD(SetLinkUpdateOptions)(THIS_ DWORD,DWORD) PURE;
+	STDMETHOD(GetLinkUpdateOptions)(THIS_ DWORD,DWORD*) PURE;
+	STDMETHOD(SetLinkSource)(THIS_ DWORD,LPSTR,ULONG,PULONG,BOOL) PURE;
+	STDMETHOD(GetLinkSource)(THIS_ DWORD,LPSTR*,PULONG,LPSTR*,LPSTR*,BOOL*,BOOL*) PURE;
+	STDMETHOD(OpenLinkSource)(THIS_ DWORD) PURE;
+	STDMETHOD(UpdateLink)(THIS_ DWORD,BOOL,BOOL) PURE;
+	STDMETHOD(CancelLink)(THIS_ DWORD) PURE;
+	STDMETHOD(GetLastUpdate)(THIS_ DWORD,FILETIME*) PURE;
+};
+#undef INTERFACE
+typedef IOleUILinkInfoA* LPOLEUILINKINFOA;
+struct tagOLEUIOBJECTPROPSW;
+struct tagOLEUIOBJECTPROPSA;
+typedef struct tagOLEUIGNRLPROPSW {
+	DWORD cbStruct;
+	DWORD dwFlags;
+	DWORD dwReserved1[2];
+	LPFNOLEUIHOOK lpfnHook;
+	LPARAM lCustData;
+	DWORD dwReserved2[3];
+	struct tagOLEUIOBJECTPROPSW* lpOP;
+} OLEUIGNRLPROPSW,*POLEUIGNRLPROPSW,*LPOLEUIGNRLPROPSW;
+typedef struct tagOLEUIGNRLPROPSA {
+	DWORD cbStruct;
+	DWORD dwFlags;
+	DWORD dwReserved1[2];
+	LPFNOLEUIHOOK lpfnHook;
+	LPARAM lCustData;
+	DWORD dwReserved2[3];
+	struct tagOLEUIOBJECTPROPSA* lpOP;
+} OLEUIGNRLPROPSA,*POLEUIGNRLPROPSA,*LPOLEUIGNRLPROPSA;
+typedef struct tagOLEUIVIEWPROPSW {
+	DWORD cbStruct;
+	DWORD dwFlags;
+	DWORD dwReserved1[2];
+	LPFNOLEUIHOOK lpfnHook;
+	LPARAM lCustData;
+	DWORD dwReserved2[3];
+	struct tagOLEUIOBJECTPROPSW* lpOP;
+	int nScaleMin;
+	int nScaleMax;
+} OLEUIVIEWPROPSW,*POLEUIVIEWPROPSW,*LPOLEUIVIEWPROPSW;
+typedef struct tagOLEUIVIEWPROPSA {
+	DWORD cbStruct;
+	DWORD dwFlags;
+	DWORD dwReserved1[2];
+	LPFNOLEUIHOOK lpfnHook;
+	LPARAM lCustData;
+	DWORD dwReserved2[3];
+	struct tagOLEUIOBJECTPROPSA *lpOP;
+	int nScaleMin;
+	int nScaleMax;
+} OLEUIVIEWPROPSA,*POLEUIVIEWPROPSA,*LPOLEUIVIEWPROPSA;
+typedef struct tagOLEUILINKPROPSW {
+	DWORD cbStruct;
+	DWORD dwFlags;
+	DWORD dwReserved1[2];
+	LPFNOLEUIHOOK lpfnHook;
+	LPARAM lCustData;
+	DWORD dwReserved2[3];
+	struct tagOLEUIOBJECTPROPSW *lpOP;
+} OLEUILINKPROPSW, *POLEUILINKPROPSW,* LPOLEUILINKPROPSW;
+typedef struct tagOLEUILINKPROPSA {
+	DWORD cbStruct;
+	DWORD dwFlags;
+	DWORD dwReserved1[2];
+	LPFNOLEUIHOOK lpfnHook;
+	LPARAM lCustData;
+	DWORD dwReserved2[3];
+	struct tagOLEUIOBJECTPROPSA* lpOP;
+} OLEUILINKPROPSA,*POLEUILINKPROPSA,*LPOLEUILINKPROPSA;
+typedef struct tagOLEUIOBJECTPROPSW {
+	DWORD cbStruct;
+	DWORD dwFlags;
+	LPPROPSHEETHEADERW lpPS;
+	DWORD dwObject;
+	LPOLEUIOBJINFOW lpObjInfo;
+	DWORD dwLink;
+	LPOLEUILINKINFOW lpLinkInfo;
+	LPOLEUIGNRLPROPSW lpGP;
+	LPOLEUIVIEWPROPSW lpVP;
+	LPOLEUILINKPROPSW lpLP;
+} OLEUIOBJECTPROPSW,*POLEUIOBJECTPROPSW,*LPOLEUIOBJECTPROPSW;
+typedef struct tagOLEUIOBJECTPROPSA {
+	DWORD cbStruct;
+	DWORD dwFlags;
+	LPPROPSHEETHEADERA lpPS;
+	DWORD dwObject;
+	LPOLEUIOBJINFOA lpObjInfo;
+	DWORD dwLink;
+	LPOLEUILINKINFOA lpLinkInfo;
+	LPOLEUIGNRLPROPSA lpGP;
+	LPOLEUIVIEWPROPSA lpVP;
+	LPOLEUILINKPROPSA lpLP;
+} OLEUIOBJECTPROPSA,*POLEUIOBJECTPROPSA,*LPOLEUIOBJECTPROPSA;
+
+STDAPI_(BOOL) OleUIAddVerbMenuW(LPOLEOBJECT,LPCWSTR,HMENU,UINT,UINT,UINT,BOOL,UINT,HMENU*);
+STDAPI_(BOOL) OleUIAddVerbMenuA(LPOLEOBJECT,LPCSTR,HMENU,UINT,UINT,UINT,BOOL,UINT,HMENU*);
+STDAPI_(UINT) OleUIBusyW(LPOLEUIBUSYW);
+STDAPI_(UINT) OleUIBusyA(LPOLEUIBUSYA);
+STDAPI_(BOOL) OleUICanConvertOrActivateAs(REFCLSID,BOOL,WORD);
+STDAPI_(UINT) OleUIChangeIconW(LPOLEUICHANGEICONW);
+STDAPI_(UINT) OleUIChangeIconA(LPOLEUICHANGEICONA);
+STDAPI_(UINT) OleUIChangeSourceW(LPOLEUICHANGESOURCEW);
+STDAPI_(UINT) OleUIChangeSourceA(LPOLEUICHANGESOURCEA);
+STDAPI_(UINT) OleUIConvertW(LPOLEUICONVERTW);
+STDAPI_(UINT) OleUIConvertA(LPOLEUICONVERTA);
+STDAPI_(UINT) OleUIEditLinksW(LPOLEUIEDITLINKSW);
+STDAPI_(UINT) OleUIEditLinksA(LPOLEUIEDITLINKSA);
+STDAPI_(UINT) OleUIObjectPropertiesW(LPOLEUIOBJECTPROPSW);
+STDAPI_(UINT) OleUIObjectPropertiesA(LPOLEUIOBJECTPROPSA);
+STDAPI_(UINT) OleUIPasteSpecialW(LPOLEUIPASTESPECIALW);
+STDAPI_(UINT) OleUIPasteSpecialA(LPOLEUIPASTESPECIALA);
+int OleUIPromptUserW(int,HWND,...);
+int OleUIPromptUserA(int,HWND,...);
+STDAPI_(BOOL) OleUIUpdateLinksW(LPOLEUILINKCONTAINERW,HWND,LPWSTR,int);
+STDAPI_(BOOL) OleUIUpdateLinksA(LPOLEUILINKCONTAINERA,HWND,LPSTR,int);
+
+#ifdef UNICODE
+#define IDD_SERVERNOTREG IDD_SERVERNOTREGW
+#define IDD_LINKTYPECHANGED IDD_LINKTYPECHANGEDW
+#define OleUIUpdateLinks OleUIUpdateLinksW
+#define OleUIAddVerbMenu OleUIAddVerbMenuW
+#define tagOLEUIOBJECTPROPS tagOLEUIOBJECTPROPSW
+#define OLEUIOBJECTPROPS OLEUIOBJECTPROPSW
+#define POLEUIOBJECTPROPS POLEUIOBJECTPROPSW
+#define LPOLEUIOBJECTPROPS LPOLEUIOBJECTPROPSW
+#define OleUIObjectProperties OleUIObjectPropertiesW
+#define tagOLEUIINSERTOBJECT tagOLEUIINSERTOBJECTW
+#define OLEUIINSERTOBJECT OLEUIINSERTOBJECTW
+#define POLEUIINSERTOBJECT POLEUIINSERTOBJECTW
+#define LPOLEUIINSERTOBJECT LPOLEUIINSERTOBJECTW
+#define OleUIInsertObject OleUIInsertObjectW
+#define OleUIPromptUser OleUIPromptUserW
+#define tagOLEUIPASTEENTRY tagOLEUIPASTEENTRYW
+#define OLEUIPASTEENTRY OLEUIPASTEENTRYW
+#define POLEUIPASTEENTRY POLEUIPASTEENTRYW
+#define LPOLEUIPASTEENTRY LPOLEUIPASTEENTRYW
+#define tagOLEUIPASTESPECIAL tagOLEUIPASTESPECIALW
+#define OLEUIPASTESPECIAL OLEUIPASTESPECIALW
+#define POLEUIPASTESPECIAL POLEUIPASTESPECIALW
+#define LPOLEUIPASTESPECIAL LPOLEUIPASTESPECIALW
+#define OleUIPasteSpecial OleUIPasteSpecialW
+#define IOleUILinkContainer IOleUILinkContainerW
+#define LPOLEUILINKCONTAINER LPOLEUILINKCONTAINERW
+#define tagOLEUIEDITLINKS tagOLEUIEDITLINKSW
+#define OLEUIEDITLINKS OLEUIEDITLINKSW
+#define POLEUIEDITLINKS POLEUIEDITLINKSW
+#define LPOLEUIEDITLINKS LPOLEUIEDITLINKSW
+#define OleUIEditLinks OleUIEditLinksW
+#define tagOLEUICHANGEICON tagOLEUICHANGEICONW
+#define OLEUICHANGEICON OLEUICHANGEICONW
+#define POLEUICHANGEICON POLEUICHANGEICONW
+#define LPOLEUICHANGEICON LPOLEUICHANGEICONW
+#define OleUIChangeIcon OleUIChangeIconW
+#define tagOLEUICONVERT tagOLEUICONVERTW
+#define OLEUICONVERT OLEUICONVERTW
+#define POLEUICONVERT POLEUICONVERTW
+#define LPOLEUICONVERT LPOLEUICONVERTW
+#define OleUIConvert OleUIConvertW
+#define tagOLEUIBUSY tagOLEUIBUSYW
+#define OLEUIBUSY OLEUIBUSYW
+#define POLEUIBUSY POLEUIBUSYW
+#define LPOLEUIBUSY LPOLEUIBUSYW
+#define OleUIBusy OleUIBusyW
+#define tagOLEUICHANGESOURCE tagOLEUICHANGESOURCEW
+#define OLEUICHANGESOURCE OLEUICHANGESOURCEW
+#define POLEUICHANGESOURCE POLEUICHANGESOURCEW
+#define LPOLEUICHANGESOURCE LPOLEUICHANGESOURCEW
+#define OleUIChangeSource OleUIChangeSourceW
+#define IOleUIObjInfo IOleUIObjInfoW
+#define LPOLEUIOBJINFO LPOLEUIOBJINFOW
+#define IOleUILinkInfo IOleUILinkInfoW
+#define IOleUILinkInfoVtbl IOleUILinkInfoWVtbl
+#define LPOLEUILINKINFO LPOLEUILINKINFOW
+#define tagOLEUIGNRLPROPS tagOLEUIGNRLPROPSW
+#define OLEUIGNRLPROPS OLEUIGNRLPROPSW
+#define POLEUIGNRLPROPS POLEUIGNRLPROPSW
+#define LPOLEUIGNRLPROPS LPOLEUIGNRLPROPSW
+#define tagOLEUIVIEWPROPS tagOLEUIVIEWPROPSW
+#define OLEUIVIEWPROPS OLEUIVIEWPROPSW
+#define POLEUIVIEWPROPS POLEUIVIEWPROPSW
+#define LPOLEUIVIEWPROPS LPOLEUIVIEWPROPSW
+#define tagOLEUILINKPROPS tagOLEUILINKPROPSW
+#define OLEUILINKPROPS OLEUILINKPROPSW
+#define POLEUILINKPROPS POLEUILINKPROPSW
+#define LPOLEUILINKPROPS LPOLEUILINKPROPSW
+#else
+#define IDD_SERVERNOTREG IDD_SERVERNOTREGA
+#define IDD_LINKTYPECHANGED IDD_LINKTYPECHANGEDA
+#define OleUIUpdateLinks OleUIUpdateLinksA
+#define OleUIAddVerbMenu OleUIAddVerbMenuA
+#define tagOLEUIOBJECTPROPS tagOLEUIOBJECTPROPSA
+#define OLEUIOBJECTPROPS OLEUIOBJECTPROPSA
+#define POLEUIOBJECTPROPS POLEUIOBJECTPROPSA
+#define LPOLEUIOBJECTPROPS LPOLEUIOBJECTPROPSA
+#define OleUIObjectProperties OleUIObjectPropertiesA
+#define tagOLEUIINSERTOBJECT tagOLEUIINSERTOBJECTA
+#define OLEUIINSERTOBJECT OLEUIINSERTOBJECTA
+#define POLEUIINSERTOBJECT POLEUIINSERTOBJECTA
+#define LPOLEUIINSERTOBJECT LPOLEUIINSERTOBJECTA
+#define OleUIInsertObject OleUIInsertObjectA
+#define OleUIPromptUser OleUIPromptUserA
+#define tagOLEUIPASTEENTRY tagOLEUIPASTEENTRYA
+#define OLEUIPASTEENTRY OLEUIPASTEENTRYA
+#define POLEUIPASTEENTRY POLEUIPASTEENTRYA
+#define LPOLEUIPASTEENTRY LPOLEUIPASTEENTRYA
+#define tagOLEUIPASTESPECIAL tagOLEUIPASTESPECIALA
+#define OLEUIPASTESPECIAL OLEUIPASTESPECIALA
+#define POLEUIPASTESPECIAL POLEUIPASTESPECIALA
+#define LPOLEUIPASTESPECIAL LPOLEUIPASTESPECIALA
+#define OleUIPasteSpecial OleUIPasteSpecialA
+#define IOleUILinkContainer IOleUILinkContainerA
+#define LPOLEUILINKCONTAINER LPOLEUILINKCONTAINERA
+#define tagOLEUIEDITLINKS tagOLEUIEDITLINKSA
+#define OLEUIEDITLINKS OLEUIEDITLINKSA
+#define POLEUIEDITLINKS POLEUIEDITLINKSA
+#define LPOLEUIEDITLINKS LPOLEUIEDITLINKSA
+#define OleUIEditLinks OleUIEditLinksA
+#define tagOLEUICHANGEICON tagOLEUICHANGEICONA
+#define OLEUICHANGEICON OLEUICHANGEICONA
+#define POLEUICHANGEICON POLEUICHANGEICONA
+#define LPOLEUICHANGEICON LPOLEUICHANGEICONA
+#define OleUIChangeIcon OleUIChangeIconA
+#define tagOLEUICONVERT tagOLEUICONVERTA
+#define OLEUICONVERT OLEUICONVERTA
+#define POLEUICONVERT POLEUICONVERTA
+#define LPOLEUICONVERT LPOLEUICONVERTA
+#define OleUIConvert OleUIConvertA
+#define tagOLEUIBUSY tagOLEUIBUSYA
+#define OLEUIBUSY OLEUIBUSYA
+#define POLEUIBUSY POLEUIBUSYA
+#define LPOLEUIBUSY LPOLEUIBUSYA
+#define OleUIBusy OleUIBusyA
+#define tagOLEUICHANGESOURCE tagOLEUICHANGESOURCEA
+#define OLEUICHANGESOURCE OLEUICHANGESOURCEA
+#define POLEUICHANGESOURCE POLEUICHANGESOURCEA
+#define LPOLEUICHANGESOURCE LPOLEUICHANGESOURCEA
+#define OleUIChangeSource OleUIChangeSourceA
+#define IOleUIObjInfo IOleUIObjInfoA
+#define LPOLEUIOBJINFO LPOLEUIOBJINFOA
+#define IOleUILinkInfo IOleUILinkInfoA
+#define IOleUILinkInfoVtbl IOleUILinkInfoAVtbl
+#define LPOLEUILINKINFO LPOLEUILINKINFOA
+#define tagOLEUIGNRLPROPS tagOLEUIGNRLPROPSA
+#define OLEUIGNRLPROPS OLEUIGNRLPROPSA
+#define POLEUIGNRLPROPS POLEUIGNRLPROPSA
+#define LPOLEUIGNRLPROPS LPOLEUIGNRLPROPSA
+#define tagOLEUIVIEWPROPS tagOLEUIVIEWPROPSA
+#define OLEUIVIEWPROPS OLEUIVIEWPROPSA
+#define POLEUIVIEWPROPS POLEUIVIEWPROPSA
+#define LPOLEUIVIEWPROPS LPOLEUIVIEWPROPSA
+#define tagOLEUILINKPROPS tagOLEUILINKPROPSA
+#define OLEUILINKPROPS OLEUILINKPROPSA
+#define POLEUILINKPROPS POLEUILINKPROPSA
+#define LPOLEUILINKPROPS LPOLEUILINKPROPSA
+#endif
+#pragma pack(pop)
+#endif
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/oleidl.h
===================================================================
--- Daodan/MinGW/include/oleidl.h	(revision 1046)
+++ Daodan/MinGW/include/oleidl.h	(revision 1046)
@@ -0,0 +1,575 @@
+#ifndef _OLEIDL_H
+#define _OLEIDL_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <objfwd.h>
+
+#define MK_ALT	32
+
+typedef _COM_interface IParseDisplayName *LPPARSEDISPLAYNAME;
+typedef _COM_interface IOleContainer *LPOLECONTAINER;
+typedef _COM_interface IOleClientSite *LPOLECLIENTSITE;
+typedef _COM_interface IOleObject *LPOLEOBJECT;
+typedef _COM_interface IDropTarget *LPDROPTARGET;
+typedef _COM_interface IDropSource *LPDROPSOURCE;
+typedef _COM_interface IEnumOleUndoUnits *LPENUMOLEUNDOUNITS;
+typedef _COM_interface IEnumOLEVERB *LPENUMOLEVERB;
+typedef _COM_interface IOleWindow *LPOLEWINDOW;
+typedef _COM_interface IOleInPlaceUIWindow *LPOLEINPLACEUIWINDOW;
+typedef _COM_interface IOleInPlaceActiveObject *LPOLEINPLACEACTIVEOBJECT;
+typedef _COM_interface IOleInPlaceFrame *LPOLEINPLACEFRAME;
+typedef _COM_interface IOleAdviseHolder *LPOLEADVISEHOLDER;
+typedef _COM_interface IViewObject *LPVIEWOBJECT;
+typedef _COM_interface IViewObject2 *LPVIEWOBJECT2;
+typedef _COM_interface IOleCache *LPOLECACHE;
+typedef _COM_interface IOleCache2 *LPOLECACHE2;
+typedef _COM_interface IOleCacheControl *LPOLECACHECONTROL;
+
+typedef enum tagBINDSPEED
+{
+	BINDSPEED_INDEFINITE=1,
+	BINDSPEED_MODERATE,
+	BINDSPEED_IMMEDIATE
+} BINDSPEED;
+typedef enum tagOLEWHICHMK {
+	OLEWHICHMK_CONTAINER=1,
+	OLEWHICHMK_OBJREL,
+	OLEWHICHMK_OBJFULL
+} OLEWHICHMK;
+typedef enum tagOLEGETMONIKER {
+	OLEGETMONIKER_ONLYIFTHERE=1,
+	OLEGETMONIKER_FORCEASSIGN,
+	OLEGETMONIKER_UNASSIGN,
+	OLEGETMONIKER_TEMPFORUSER
+} OLEGETMONIKER;
+typedef enum tagUSERCLASSTYPE {
+	USERCLASSTYPE_FULL=1,
+	USERCLASSTYPE_SHORT,
+	USERCLASSTYPE_APPNAME
+} USERCLASSTYPE;
+
+#ifdef __GNUC__
+__extension__  /* IS0 C says enums limited to range of int */
+#endif
+typedef enum tagDROPEFFECT {
+	DROPEFFECT_NONE=0,
+	DROPEFFECT_COPY=1,
+	DROPEFFECT_MOVE=2,
+	DROPEFFECT_LINK=4,
+	DROPEFFECT_SCROLL=0x80000000
+} DROPEFFECT;
+typedef struct tagOleMenuGroupWidths {
+	LONG width[6];
+} OLEMENUGROUPWIDTHS,*LPOLEMENUGROUPWIDTHS;
+typedef HGLOBAL HOLEMENU;
+typedef enum tagOLECLOSE {
+	OLECLOSE_SAVEIFDIRTY,
+	OLECLOSE_NOSAVE,
+	OLECLOSE_PROMPTSAVE
+} OLECLOSE;
+typedef struct tagOLEVERB {
+	LONG lVerb;
+	LPWSTR lpszVerbName;
+	DWORD fuFlags;
+	DWORD grfAttribs;
+} OLEVERB,*LPOLEVERB;
+typedef RECT BORDERWIDTHS;
+typedef LPRECT LPBORDERWIDTHS;
+typedef LPCRECT LPCBORDERWIDTHS;
+typedef struct tagOIFI {
+	UINT cb;
+	BOOL fMDIApp;
+	HWND hwndFrame;
+	HACCEL haccel;
+	UINT cAccelEntries;
+}OLEINPLACEFRAMEINFO,*LPOLEINPLACEFRAMEINFO;
+
+DECLARE_ENUMERATOR(OLEVERB);
+typedef IEnumOLEVERB IEnumOleVerb;
+
+EXTERN_C const IID IID_IParseDisplayName;
+#define INTERFACE IParseDisplayName
+DECLARE_INTERFACE_(IParseDisplayName,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(ParseDisplayName)(THIS_ IBindCtx*,LPOLESTR,ULONG*,IMoniker**) PURE;
+};
+#undef INTERFACE
+
+#ifdef COBJMACROS
+#define IParseDisplayName_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
+#define IParseDisplayName_AddRef(T) (T)->lpVtbl->AddRef(T)
+#define IParseDisplayName_Release(T) (T)->lpVtbl->Release(T)
+#define IParseDisplayName_ParseDisplayName(T,a,b,c,d) (T)->lpVtbl->ParseDisplayName(T,a,b,c,d)
+#endif
+
+EXTERN_C const IID IID_IOleContainer;
+#define INTERFACE IOleContainer
+DECLARE_INTERFACE_(IOleContainer,IParseDisplayName)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(ParseDisplayName)(THIS_ IBindCtx*,LPOLESTR,ULONG*,IMoniker**) PURE;
+	STDMETHOD(EnumObjects)(THIS_ DWORD,IEnumUnknown**) PURE;
+	STDMETHOD(LockContainer)(THIS_ BOOL) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IOleItemContainer;
+#define INTERFACE IOleItemContainer
+DECLARE_INTERFACE_(IOleItemContainer,IOleContainer)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(ParseDisplayName)(THIS_ IBindCtx*,LPOLESTR,ULONG*,IMoniker**) PURE;
+	STDMETHOD(EnumObjects)(THIS_ DWORD,IEnumUnknown**) PURE;
+	STDMETHOD(LockContainer)(THIS_ BOOL) PURE;
+	STDMETHOD(GetObject)(THIS_ LPOLESTR,DWORD,IBindCtx*,REFIID,void**) PURE;
+	STDMETHOD(GetObjectStorage)(THIS_ LPOLESTR,IBindCtx*,REFIID,void**) PURE;
+	STDMETHOD(IsRunning)(THIS_ LPOLESTR) PURE;
+};
+#undef INTERFACE
+
+#ifdef COBJMACROS
+#define IOleItemContainer_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
+#define IOleItemContainer_AddRef(T) (T)->lpVtbl->AddRef(T)
+#define IOleItemContainer_Release(T) (T)->lpVtbl->Release(T)
+#define IOleItemContainer_ParseDisplayName(T,a,b,c,d) (T)->lpVtbl->ParseDisplayName(T,a,b,c,d)
+#define IOleItemContainer_EnumObjects(T,a,b) (T)->lpVtbl->EnumObjects(T,a,b)
+#define IOleItemContainer_LockContainer(T,a) (T)->lpVtbl->LockContainer(T,a)
+#define IOleItemContainer_GetObject(T,a,b,c,d,e) (T)->lpVtbl->GetObject(T,a,b,c,d,e)
+#define IOleItemContainer_GetObjectStorage(T,a,b,c,d) (T)->lpVtbl->GetObjectStorage(T,a,b,c,d)
+#define IOleItemContainer_IsRunning(T,a) (T)->lpVtbl->IsRunning(T,a)
+#endif
+
+EXTERN_C const IID IID_IOleClientSite;
+#define INTERFACE IOleClientSite
+DECLARE_INTERFACE_(IOleClientSite,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(SaveObject)(THIS) PURE;
+	STDMETHOD(GetMoniker)(THIS_ DWORD,DWORD,LPMONIKER*) PURE;
+	STDMETHOD(GetContainer)(THIS_ LPOLECONTAINER*) PURE;
+	STDMETHOD(ShowObject)(THIS) PURE;
+	STDMETHOD(OnShowWindow)(THIS_ BOOL) PURE;
+	STDMETHOD(RequestNewObjectLayout)(THIS) PURE;
+};
+#undef INTERFACE
+
+#ifdef COBJMACROS
+#define IOleClientSite_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
+#define IOleClientSite_AddRef(T) (T)->lpVtbl->AddRef(T)
+#define IOleClientSite_Release(T) (T)->lpVtbl->Release(T)
+#define IOleClientSite_SaveObject(T) (T)->lpVtbl->SaveObject(T)
+#define IOleClientSite_GetMoniker(T,a,b,c) (T)->lpVtbl->GetMoniker(T,a,b,c)
+#define IOleClientSite_GetContainer(T,a) (T)->lpVtbl->GetContainer(T,a)
+#define IOleClientSite_ShowObject(T) (T)->lpVtbl->ShowObject(T)
+#define IOleClientSite_OnShowWindow(T,a) (T)->lpVtbl->OnShowWindow(T,a)
+#define IOleClientSite_RequestNewObjectLayout(T) (T)->lpVtbl->RequestNewObjectLayout(T)
+#endif
+
+EXTERN_C const IID IID_IOleObject;
+#define INTERFACE IOleObject
+DECLARE_INTERFACE_(IOleObject,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(SetClientSite)(THIS_ LPOLECLIENTSITE) PURE;
+	STDMETHOD(GetClientSite)(THIS_ LPOLECLIENTSITE*) PURE;
+	STDMETHOD(SetHostNames)(THIS_ LPCOLESTR,LPCOLESTR) PURE;
+	STDMETHOD(Close)(THIS_ DWORD) PURE;
+	STDMETHOD(SetMoniker)(THIS_ DWORD,LPMONIKER) PURE;
+	STDMETHOD(GetMoniker)(THIS_ DWORD,DWORD,LPMONIKER*) PURE;
+	STDMETHOD(InitFromData)(THIS_ LPDATAOBJECT,BOOL,DWORD) PURE;
+	STDMETHOD(GetClipboardData)(THIS_ DWORD,LPDATAOBJECT*) PURE;
+	STDMETHOD(DoVerb)(THIS_ LONG,LPMSG,LPOLECLIENTSITE,LONG,HWND,LPCRECT) PURE;
+	STDMETHOD(EnumVerbs)(THIS_ LPENUMOLEVERB*) PURE;
+	STDMETHOD(Update)(THIS) PURE;
+	STDMETHOD(IsUpToDate)(THIS) PURE;
+	STDMETHOD(GetUserClassID)(THIS_ LPCLSID) PURE;
+	STDMETHOD(GetUserType)(THIS_ DWORD,LPOLESTR*) PURE;
+	STDMETHOD(SetExtent)(THIS_ DWORD,SIZEL*) PURE;
+	STDMETHOD(GetExtent)(THIS_ DWORD,SIZEL*) PURE;
+	STDMETHOD(Advise)(THIS_ LPADVISESINK,PDWORD) PURE;
+	STDMETHOD(Unadvise)(THIS_ DWORD) PURE;
+	STDMETHOD(EnumAdvise)(THIS_ LPENUMSTATDATA*) PURE;
+	STDMETHOD(GetMiscStatus)(THIS_ DWORD,PDWORD) PURE;
+	STDMETHOD(SetColorScheme)(THIS_ LPLOGPALETTE) PURE;
+};
+#undef INTERFACE
+
+#ifdef COBJMACROS
+#define IOleObject_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
+#define IOleObject_AddRef(T) (T)->lpVtbl->AddRef(T)
+#define IOleObject_Release(T) (T)->lpVtbl->Release(T)
+#define IOleObject_SetClientSite(T,a) (T)->lpVtbl->SetClientSite(T,a)
+#define IOleObject_GetClientSite(T,a) (T)->lpVtbl->GetClientSite(T,a)
+#define IOleObject_SetHostNames(T,a,b) (T)->lpVtbl->SetHostNames(T,a,b)
+#define IOleObject_Close(T,a) (T)->lpVtbl->Close(T,a)
+#define IOleObject_SetMoniker(T,a,b) (T)->lpVtbl->SetMoniker(T,a,b)
+#define IOleObject_GetMoniker(T,a,b,c) (T)->lpVtbl->GetMoniker(T,a,b,c)
+#define IOleObject_InitFromData(T,a,b,c) (T)->lpVtbl->InitFromData(T,a,b,c)
+#define IOleObject_GetClipboardData(T,a,b) (T)->lpVtbl->GetClipboardData(T,a,b)
+#define IOleObject_DoVerb(T,a,b,c,d,e,f) (T)->lpVtbl->DoVerb(T,a,b,c,d,e,f)
+#define IOleObject_EnumVerbs(T,a) (T)->lpVtbl->EnumVerbs(T,a)
+#define IOleObject_Update(T) (T)->lpVtbl->Update(T)
+#define IOleObject_IsUpToDate(T) (T)->lpVtbl->IsUpToDate(T)
+#define IOleObject_GetUserClassID(T,a) (T)->lpVtbl->GetUserClassID(T,a)
+#define IOleObject_GetUserType(T,a,b) (T)->lpVtbl->GetUserType(T,a,b)
+#define IOleObject_SetExtent(T,a,b) (T)->lpVtbl->SetExtent(T,a,b)
+#define IOleObject_GetExtent(T,a,b) (T)->lpVtbl->GetExtent(T,a,b)
+#define IOleObject_Advise(T,a,b) (T)->lpVtbl->Advise(T,a,b)
+#define IOleObject_Unadvise(T,a) (T)->lpVtbl->Unadvise(T,a)
+#define IOleObject_EnumAdvise(T,a) (T)->lpVtbl->EnumAdvise(T,a)
+#define IOleObject_GetMiscStatus(T,a,b) (T)->lpVtbl->GetMiscStatus(T,a,b)
+#define IOleObject_SetColorScheme(T,a) (T)->lpVtbl->SetColorScheme(T,a)
+#endif
+
+EXTERN_C const IID IID_IOleWindow;
+#define INTERFACE IOleWindow
+DECLARE_INTERFACE_(IOleWindow,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetWindow)(THIS_ HWND*) PURE;
+	STDMETHOD(ContextSensitiveHelp)(THIS_ BOOL) PURE;
+};
+#undef INTERFACE
+
+#ifdef COBJMACROS
+#define IOleWindow_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
+#define IOleWindow_AddRef(T) (T)->lpVtbl->AddRef(T)
+#define IOleWindow_Release(T) (T)->lpVtbl->Release(T)
+#define IOleWindow_GetWindow(T,a) (T)->lpVtbl->GetWindow(T,a)
+#define IOleWindow_ContextSensitiveHelp(T,a) (T)->lpVtbl->ContextSensitiveHelp(T,a)
+#endif
+
+EXTERN_C const IID IID_IOleInPlaceUIWindow;
+#define INTERFACE IOleInPlaceUIWindow
+DECLARE_INTERFACE_(IOleInPlaceUIWindow,IOleWindow)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetWindow)(THIS_ HWND*) PURE;
+	STDMETHOD(ContextSensitiveHelp)(THIS_ BOOL) PURE;
+	STDMETHOD(GetBorder)(THIS_ LPRECT) PURE;
+	STDMETHOD(RequestBorderSpace)(THIS_ LPCBORDERWIDTHS) PURE;
+	STDMETHOD(SetBorderSpace)(THIS_ LPCBORDERWIDTHS) PURE;
+	STDMETHOD(SetActiveObject)(THIS_ LPOLEINPLACEACTIVEOBJECT,LPCOLESTR) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IOleInPlaceObject;
+#define INTERFACE IOleInPlaceObject
+DECLARE_INTERFACE_(IOleInPlaceObject,IOleWindow)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetWindow)(THIS_ HWND*) PURE;
+	STDMETHOD(ContextSensitiveHelp)(THIS_ BOOL) PURE;
+	STDMETHOD(InPlaceDeactivate)(THIS) PURE;
+	STDMETHOD(UIDeactivate)(THIS) PURE;
+	STDMETHOD(SetObjectRects)(THIS_ LPCRECT,LPCRECT) PURE;
+	STDMETHOD(ReactivateAndUndo)(THIS) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IOleInPlaceActiveObject;
+#define INTERFACE IOleInPlaceActiveObject
+DECLARE_INTERFACE_(IOleInPlaceActiveObject,IOleWindow)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetWindow)(THIS_ HWND*) PURE;
+	STDMETHOD(ContextSensitiveHelp)(THIS_ BOOL) PURE;
+	STDMETHOD(TranslateAccelerator)(THIS_ LPMSG) PURE;
+	STDMETHOD(OnFrameWindowActivate)(THIS_ BOOL) PURE;
+	STDMETHOD(OnDocWindowActivate)(THIS_ BOOL) PURE;
+	STDMETHOD(ResizeBorder)(THIS_ LPCRECT,LPOLEINPLACEUIWINDOW,BOOL) PURE;
+	STDMETHOD(EnableModeless)(THIS_ BOOL) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IOleInPlaceFrame;
+#define INTERFACE IOleInPlaceFrame
+DECLARE_INTERFACE_(IOleInPlaceFrame,IOleInPlaceUIWindow)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetWindow)(THIS_ HWND*) PURE;
+	STDMETHOD(ContextSensitiveHelp)(THIS_ BOOL) PURE;
+	STDMETHOD(GetBorder)(THIS_ LPRECT) PURE;
+	STDMETHOD(RequestBorderSpace)(THIS_ LPCBORDERWIDTHS) PURE;
+	STDMETHOD(SetBorderSpace)(THIS_ LPCBORDERWIDTHS) PURE;
+	STDMETHOD(SetActiveObject)(THIS_ LPOLEINPLACEACTIVEOBJECT,LPCOLESTR) PURE;
+	STDMETHOD(InsertMenus)(THIS_ HMENU,LPOLEMENUGROUPWIDTHS) PURE;
+	STDMETHOD(SetMenu)(THIS_ HMENU,HOLEMENU,HWND) PURE;
+	STDMETHOD(RemoveMenus)(THIS_ HMENU) PURE;
+	STDMETHOD(SetStatusText)(THIS_ LPCOLESTR) PURE;
+	STDMETHOD(EnableModeless)(THIS_ BOOL) PURE;
+	STDMETHOD(TranslateAccelerator)(THIS_ LPMSG,WORD) PURE;
+};
+#undef INTERFACE
+
+#ifdef COBJMACROS
+#define IOleInPlaceFrame_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
+#define IOleInPlaceFrame_AddRef(T) (T)->lpVtbl->AddRef(T)
+#define IOleInPlaceFrame_Release(T) (T)->lpVtbl->Release(T)
+#define IOleInPlaceFrame_GetWindow(T,a) (T)->lpVtbl->GetWindow(T,a)
+#define IOleInPlaceFrame_ContextSensitiveHelp(T,a) (T)->lpVtbl->ContextSensitiveHelp(T,a)
+#define IOleInPlaceFrame_GetBorder(T,a) (T)->lpVtbl->GetBorder(T,a)
+#define IOleInPlaceFrame_RequestBorderSpace(T,a) (T)->lpVtbl->RequestBorderSpace(T,a)
+#define IOleInPlaceFrame_SetBorderSpace(T,a) (T)->lpVtbl->SetBorderSpace(T,a)
+#define IOleInPlaceFrame_SetActiveObject(T,a,b) (T)->lpVtbl->SetActiveObject(T,a,b)
+#define IOleInPlaceFrame_InsertMenus(T,a,b) (T)->lpVtbl->InsertMenus(T,a,b)
+#define IOleInPlaceFrame_SetMenu(T,a,b,c) (T)->lpVtbl->SetMenu(T,a,b,c)
+#define IOleInPlaceFrame_RemoveMenus(T,a) (T)->lpVtbl->RemoveMenus(T,a)
+#define IOleInPlaceFrame_SetStatusText(T,a) (T)->lpVtbl->SetStatusText(T,a)
+#define IOleInPlaceFrame_EnableModeless(T,a) (T)->lpVtbl->EnableModeless(T,a)
+#define IOleInPlaceFrame_TranslateAccelerator(T,a,b) (T)->lpVtbl->TranslateAccelerator(T,a,b)
+#endif
+
+EXTERN_C const IID IID_IOleInPlaceSite;
+#define INTERFACE IOleInPlaceSite
+DECLARE_INTERFACE_(IOleInPlaceSite,IOleWindow)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetWindow)(THIS_ HWND*) PURE;
+	STDMETHOD(ContextSensitiveHelp)(THIS_ BOOL) PURE;
+	STDMETHOD(CanInPlaceActivate)(THIS) PURE;
+	STDMETHOD(OnInPlaceActivate)(THIS) PURE;
+	STDMETHOD(OnUIActivate)(THIS) PURE;
+	STDMETHOD(GetWindowContext)(THIS_ IOleInPlaceFrame**,IOleInPlaceUIWindow**,LPRECT,LPRECT,LPOLEINPLACEFRAMEINFO) PURE;
+	STDMETHOD(Scroll)(THIS_ SIZE) PURE;
+	STDMETHOD(OnUIDeactivate)(THIS_ BOOL) PURE;
+	STDMETHOD(OnInPlaceDeactivate)(THIS) PURE;
+	STDMETHOD(DiscardUndoState)(THIS) PURE;
+	STDMETHOD(DeactivateAndUndo)(THIS) PURE;
+	STDMETHOD(OnPosRectChange)(THIS_ LPCRECT) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IOleAdviseHolder;
+#define INTERFACE IOleAdviseHolder
+DECLARE_INTERFACE_(IOleAdviseHolder,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(Advise)(THIS_ LPADVISESINK,PDWORD) PURE;
+	STDMETHOD(Unadvise)(THIS_ DWORD) PURE;
+	STDMETHOD(EnumAdvise)(THIS_ LPENUMSTATDATA*) PURE;
+	STDMETHOD(SendOnRename)(THIS_ LPMONIKER) PURE;
+	STDMETHOD(SendOnSave)(THIS) PURE;
+	STDMETHOD(SendOnClose)(THIS) PURE;
+};
+#undef INTERFACE
+
+#ifdef COBJMACROS
+#define IOleAdviseHolder_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
+#define IOleAdviseHolder_AddRef(T) (T)->lpVtbl->AddRef(T)
+#define IOleAdviseHolder_Release(T) (T)->lpVtbl->Release(T)
+#define IOleAdviseHolder_Advise(T,a,b) (T)->lpVtbl->Advise(T,a,b)
+#define IOleAdviseHolder_Unadvise(T,a) (T)->lpVtbl->Unadvise(T,a)
+#define IOleAdviseHolder_EnumAdvise(T,a) (T)->lpVtbl->EnumAdvise(T,a)
+#define IOleAdviseHolder_SendOnRename(T,a) (T)->lpVtbl->SendOnRename(T,a)
+#define IOleAdviseHolder_SendOnSave(T) (T)->lpVtbl->SendOnSave(T)
+#define IOleAdviseHolder_SendOnClose(T) (T)->lpVtbl->SendOnClose(T)
+#endif
+
+EXTERN_C const IID IID_IDropSource;
+#define INTERFACE IDropSource
+DECLARE_INTERFACE_(IDropSource,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(QueryContinueDrag)(THIS_ BOOL,DWORD) PURE;
+	STDMETHOD(GiveFeedback)(THIS_ DWORD) PURE;
+};
+#undef INTERFACE
+
+#ifdef COBJMACROS
+#define IDropSource_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
+#define IDropSource_AddRef(T) (T)->lpVtbl->AddRef(T)
+#define IDropSource_Release(T) (T)->lpVtbl->Release(T)
+#define IDropSource_QueryContinueDrag(T,a,b) (T)->lpVtbl->QueryContinueDrag(T,a,b)
+#define IDropSource_GiveFeedback(T,a) (T)->lpVtbl->GiveFeedback(T,a)
+#endif
+
+EXTERN_C const IID IID_IDropTarget;
+#define INTERFACE IDropTarget
+DECLARE_INTERFACE_(IDropTarget,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(DragEnter)(THIS_ LPDATAOBJECT,DWORD,POINTL,PDWORD) PURE;
+	STDMETHOD(DragOver)(THIS_ DWORD,POINTL,PDWORD) PURE;
+	STDMETHOD(DragLeave)(THIS) PURE;
+	STDMETHOD(Drop)(THIS_ LPDATAOBJECT,DWORD,POINTL,PDWORD) PURE;
+};
+#undef INTERFACE
+
+#ifdef COBJMACROS
+#define IDropTarget_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
+#define IDropTarget_AddRef(T) (T)->lpVtbl->AddRef(T)
+#define IDropTarget_Release(T) (T)->lpVtbl->Release(T)
+#define IDropTarget_DragEnter(T,a,b,c,d) (T)->lpVtbl->DragEnter(T,a,b,c,d)
+#define IDropTarget_DragOver(T,a,b,c) (T)->lpVtbl->DragOver(T,a,b,c)
+#define IDropTarget_DragLeave(T) (T)->lpVtbl->DragLeave(T)
+#define IDropTarget_Drop(T,a,b,c,d) (T)->lpVtbl->Drop(T,a,b,c,d)
+#endif
+
+typedef BOOL(CALLBACK *__IView_pfncont)(DWORD);
+EXTERN_C const IID IID_IViewObject;
+#define INTERFACE IViewObject
+DECLARE_INTERFACE_(IViewObject,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(Draw)(THIS_ DWORD,LONG,PVOID,DVTARGETDEVICE*,HDC,HDC,LPCRECTL,LPCRECTL,__IView_pfncont pfnContinue,DWORD) PURE;
+	STDMETHOD(GetColorSet)(THIS_ DWORD,LONG,PVOID,DVTARGETDEVICE*,HDC,LPLOGPALETTE*) PURE;
+	STDMETHOD(Freeze)(THIS_ DWORD,LONG,PVOID,PDWORD) PURE;
+	STDMETHOD(Unfreeze)(THIS_ DWORD) PURE;
+	STDMETHOD(SetAdvise)(THIS_ DWORD,DWORD,IAdviseSink*) PURE;
+	STDMETHOD(GetAdvise)(THIS_ PDWORD,PDWORD,IAdviseSink**) PURE;
+};
+#undef INTERFACE
+
+#ifdef COBJMACROS
+#define IViewObject_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
+#define IViewObject_AddRef(T) (T)->lpVtbl->AddRef(T)
+#define IViewObject_Release(T) (T)->lpVtbl->Release(T)
+#define IViewObject_Draw(T,a,b,c,d,e,f,g,h,i,j) (T)->lpVtbl->Draw(T,a,b,c,d,e,f,g,h,i,j)
+#define IViewObject_GetColorSet(T,a,b,c,d,e,f) (T)->lpVtbl->GetColorSet(T,a,b,c,d,e,f)
+#define IViewObject_Freeze(T,a,b,c,d) (T)->lpVtbl->Freeze(T,a,b,c,d)
+#define IViewObject_Unfreeze(T,a) (T)->lpVtbl->Unfreeze(T,a)
+#define IViewObject_SetAdvise(T,a,b,c) (T)->lpVtbl->SetAdvise(T,a,b,c)
+#define IViewObject_GetAdvise(T,a,b,c) (T)->lpVtbl->GetAdvise(T,a,b,c)
+#endif
+
+EXTERN_C const IID IID_IViewObject2;
+#define INTERFACE IViewObject2
+DECLARE_INTERFACE_(IViewObject2,IViewObject)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(Draw)(THIS_ DWORD,LONG,PVOID,DVTARGETDEVICE*,HDC,HDC,LPCRECTL,LPCRECTL,__IView_pfncont pfnContinue,DWORD) PURE;
+	STDMETHOD(GetColorSet)(THIS_ DWORD,LONG,PVOID,DVTARGETDEVICE*,HDC,LPLOGPALETTE*) PURE;
+	STDMETHOD(Freeze)(THIS_ DWORD,LONG,PVOID,PDWORD) PURE;
+	STDMETHOD(Unfreeze)(THIS_ DWORD) PURE;
+	STDMETHOD(SetAdvise)(THIS_ DWORD,DWORD,IAdviseSink*) PURE;
+	STDMETHOD(GetAdvise)(THIS_ PDWORD,PDWORD,IAdviseSink**) PURE;
+	STDMETHOD(GetExtent)(THIS_ DWORD,LONG,DVTARGETDEVICE*,LPSIZEL) PURE;
+};
+#undef INTERFACE
+
+#ifdef COBJMACROS
+#define IViewObject2_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
+#define IViewObject2_AddRef(T) (T)->lpVtbl->AddRef(T)
+#define IViewObject2_Release(T) (T)->lpVtbl->Release(T)
+#define IViewObject2_Draw(T,a,b,c,d,e,f,g,h,i,j) (T)->lpVtbl->Draw(T,a,b,c,d,e,f,g,h,i,j)
+#define IViewObject2_GetColorSet(T,a,b,c,d,e,f) (T)->lpVtbl->GetColorSet(T,a,b,c,d,e,f)
+#define IViewObject2_Freeze(T,a,b,c,d) (T)->lpVtbl->Freeze(T,a,b,c,d)
+#define IViewObject2_Unfreeze(T,a) (T)->lpVtbl->Unfreeze(T,a)
+#define IViewObject2_SetAdvise(T,a,b,c) (T)->lpVtbl->SetAdvise(T,a,b,c)
+#define IViewObject2_GetAdvise(T,a,b,c) (T)->lpVtbl->GetAdvise(T,a,b,c)
+#define IViewObject2_GetExtent(T,a,b,c,d) (T)->lpVtbl->GetExtent(T,a,b,c,d)
+#endif
+
+EXTERN_C const IID IID_IOleCache;
+#define INTERFACE IOleCache
+DECLARE_INTERFACE_(IOleCache,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(Cache)(THIS_ FORMATETC*,DWORD,DWORD*) PURE;
+	STDMETHOD(Uncache)(THIS_ DWORD) PURE;
+	STDMETHOD(EnumCache)(THIS_ IEnumSTATDATA**);
+	STDMETHOD(InitCache)(THIS_ LPDATAOBJECT);
+	STDMETHOD(SetData)(THIS_ FORMATETC*,STGMEDIUM*,BOOL);
+};
+#undef INTERFACE
+
+#ifdef COBJMACROS
+#define IOleCache_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
+#define IOleCache_AddRef(T) (T)->lpVtbl->AddRef(T)
+#define IOleCache_Release(T) (T)->lpVtbl->Release(T)
+#define IOleCache_Cache(T,a,b,c) (T)->lpVtbl->Cache(T,a,b,c)
+#define IOleCache_Uncache(T,a) (T)->lpVtbl->Uncache(T,a)
+#define IOleCache_EnumCache(T,a) (T)->lpVtbl->EnumCache(T,a)
+#define IOleCache_InitCache(T,a) (T)->lpVtbl->InitCache(T,a)
+#define IOleCache_SetData(T,a,b,c) (T)->lpVtbl->SetData(T,a,b,c)
+#endif
+
+EXTERN_C const IID IID_IOleCache2;
+#define INTERFACE IOleCache2
+DECLARE_INTERFACE_(IOleCache2,IOleCache)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(Cache)(THIS_ FORMATETC*,DWORD,DWORD*) PURE;
+	STDMETHOD(Uncache)(THIS_ DWORD) PURE;
+	STDMETHOD(EnumCache)(THIS_ IEnumSTATDATA**) PURE;
+	STDMETHOD(InitCache)(THIS_ LPDATAOBJECT) PURE;
+	STDMETHOD(SetData)(THIS_ FORMATETC*,STGMEDIUM*,BOOL) PURE;
+	STDMETHOD(UpdateCache)(THIS_ LPDATAOBJECT,DWORD,LPVOID) PURE;
+	STDMETHOD(DiscardCache)(THIS_ DWORD) PURE;
+};
+#undef INTERFACE
+
+#ifdef COBJMACROS
+#define IOleCache2_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
+#define IOleCache2_AddRef(T) (T)->lpVtbl->AddRef(T)
+#define IOleCache2_Release(T) (T)->lpVtbl->Release(T)
+#define IOleCache2_Cache(T,a,b,c) (T)->lpVtbl->Cache(T,a,b,c)
+#define IOleCache2_Uncache(T,a) (T)->lpVtbl->Uncache(T,a)
+#define IOleCache2_EnumCache(T,a) (T)->lpVtbl->EnumCache(T,a)
+#define IOleCache2_InitCache(T,a) (T)->lpVtbl->InitCache(T,a)
+#define IOleCache2_SetData(T,a,b,c) (T)->lpVtbl->SetData(T,a,b,c)
+#define IOleCache2_UpdateCache(T,a,b,c) (T)->lpVtbl->UpdateCache(T,a,b,c)
+#define IOleCache2_DiscardCache(T,a) (T)->lpVtbl->DiscardCache(T,a)
+#endif
+
+EXTERN_C const IID IID_IOleCacheControl;
+#define INTERFACE IOleCacheControl
+DECLARE_INTERFACE_(IOleCacheControl,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(OnRun)(THIS_ LPDATAOBJECT) PURE;
+	STDMETHOD(OnStop)(THIS) PURE;
+};
+#undef INTERFACE
+
+#ifdef __cplusplus
+}
+#endif
+#endif
+
Index: Daodan/MinGW/include/pbt.h
===================================================================
--- Daodan/MinGW/include/pbt.h	(revision 1046)
+++ Daodan/MinGW/include/pbt.h	(revision 1046)
@@ -0,0 +1,24 @@
+#ifndef _PBT_H
+#define _PBT_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+/* Also in winuser.h  */
+#define PBT_APMQUERYSUSPEND 0
+#define PBT_APMQUERYSTANDBY 1
+#define PBT_APMQUERYSUSPENDFAILED 2
+#define PBT_APMQUERYSTANDBYFAILED 3
+#define PBT_APMSUSPEND 4
+#define PBT_APMSTANDBY 5
+#define PBT_APMRESUMECRITICAL 6
+#define PBT_APMRESUMESUSPEND 7
+#define PBT_APMRESUMESTANDBY 8
+#define PBT_APMBATTERYLOW 9
+#define PBT_APMPOWERSTATUSCHANGE 10
+#define PBT_APMOEMEVENT 11
+#define PBT_APMRESUMEAUTOMATIC 18
+
+#define PBTF_APMRESUMEFROMFAILURE 1
+
+#endif
Index: Daodan/MinGW/include/poppack.h
===================================================================
--- Daodan/MinGW/include/poppack.h	(revision 1046)
+++ Daodan/MinGW/include/poppack.h	(revision 1046)
@@ -0,0 +1,3 @@
+#ifndef RC_INVOKED
+#pragma pack(pop)
+#endif
Index: Daodan/MinGW/include/powrprof.h
===================================================================
--- Daodan/MinGW/include/powrprof.h	(revision 1046)
+++ Daodan/MinGW/include/powrprof.h	(revision 1046)
@@ -0,0 +1,120 @@
+#ifndef _POWRPROF_H
+#define _POWRPROF_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define EnableMultiBatteryDisplay 2
+#define EnablePasswordLogon 4
+#define EnableSysTrayBatteryMeter 1
+#define EnableWakeOnRing 8
+#define EnableVideoDimDisplay 16
+#define NEWSCHEME (UINT)-1
+
+#ifndef RC_INVOKED
+#include <ntdef.h>  /* for NTSTATUS */
+typedef struct _GLOBAL_MACHINE_POWER_POLICY{
+   ULONG Revision;
+   SYSTEM_POWER_STATE LidOpenWakeAc;
+   SYSTEM_POWER_STATE LidOpenWakeDc;
+   ULONG BroadcastCapacityResolution;
+} GLOBAL_MACHINE_POWER_POLICY, *PGLOBAL_MACHINE_POWER_POLICY;
+typedef struct _GLOBAL_USER_POWER_POLICY{
+   ULONG Revision;
+   POWER_ACTION_POLICY PowerButtonAc;
+   POWER_ACTION_POLICY PowerButtonDc;
+   POWER_ACTION_POLICY SleepButtonAc;
+   POWER_ACTION_POLICY SleepButtonDc;
+   POWER_ACTION_POLICY LidCloseAc;
+   POWER_ACTION_POLICY LidCloseDc;
+   SYSTEM_POWER_LEVEL DischargePolicy[NUM_DISCHARGE_POLICIES];
+   ULONG GlobalFlags;
+} GLOBAL_USER_POWER_POLICY, *PGLOBAL_USER_POWER_POLICY;
+typedef struct _GLOBAL_POWER_POLICY{
+   GLOBAL_USER_POWER_POLICY user;
+   GLOBAL_MACHINE_POWER_POLICY mach;
+} GLOBAL_POWER_POLICY, *PGLOBAL_POWER_POLICY;
+typedef struct _MACHINE_POWER_POLICY{
+   ULONG Revision;
+   SYSTEM_POWER_STATE MinSleepAc;
+   SYSTEM_POWER_STATE MinSleepDc;
+   SYSTEM_POWER_STATE ReducedLatencySleepAc;
+   SYSTEM_POWER_STATE ReducedLatencySleepDc;
+   ULONG DozeTimeoutAc;
+   ULONG DozeTimeoutDc;
+   ULONG DozeS4TimeoutAc;
+   ULONG DozeS4TimeoutDc;
+   UCHAR MinThrottleAc;
+   UCHAR MinThrottleDc;
+   UCHAR pad1[2];
+   POWER_ACTION_POLICY OverThrottledAc;
+   POWER_ACTION_POLICY OverThrottledDc;
+} MACHINE_POWER_POLICY, *PMACHINE_POWER_POLICY;
+typedef struct _MACHINE_PROCESSOR_POWER_POLICY {
+   ULONG Revision;
+   PROCESSOR_POWER_POLICY ProcessorPolicyAc;
+   PROCESSOR_POWER_POLICY ProcessorPolicyDc;
+} MACHINE_PROCESSOR_POWER_POLICY, *PMACHINE_PROCESSOR_POWER_POLICY;
+typedef struct _USER_POWER_POLICY{
+   ULONG Revision;
+   POWER_ACTION_POLICY IdleAc;
+   POWER_ACTION_POLICY IdleDc;
+   ULONG IdleTimeoutAc;
+   ULONG IdleTimeoutDc;
+   UCHAR IdleSensitivityAc;
+   UCHAR IdleSensitivityDc;
+   UCHAR ThrottlePolicyAc;
+   UCHAR ThrottlePolicyDc;
+   SYSTEM_POWER_STATE MaxSleepAc;
+   SYSTEM_POWER_STATE MaxSleepDc;
+   ULONG Reserved[2];
+   ULONG VideoTimeoutAc;
+   ULONG VideoTimeoutDc;
+   ULONG SpindownTimeoutAc;
+   ULONG SpindownTimeoutDc;
+   BOOLEAN OptimizeForPowerAc;
+   BOOLEAN OptimizeForPowerDc;
+   UCHAR FanThrottleToleranceAc;
+   UCHAR FanThrottleToleranceDc;
+   UCHAR ForcedThrottleAc;
+   UCHAR ForcedThrottleDc;
+} USER_POWER_POLICY, *PUSER_POWER_POLICY;
+typedef struct _POWER_POLICY{
+   USER_POWER_POLICY user;
+   MACHINE_POWER_POLICY mach;
+} POWER_POLICY, *PPOWER_POLICY;
+typedef BOOLEAN (CALLBACK* PWRSCHEMESENUMPROC)(UINT, DWORD, LPTSTR, DWORD, LPTSTR, PPOWER_POLICY, LPARAM);
+typedef BOOLEAN (CALLBACK* PFNNTINITIATEPWRACTION)(POWER_ACTION, SYSTEM_POWER_STATE, ULONG, BOOLEAN);
+NTSTATUS WINAPI CallNtPowerInformation(POWER_INFORMATION_LEVEL, PVOID, ULONG, PVOID, ULONG);
+BOOLEAN WINAPI CanUserWritePwrScheme(VOID);
+BOOLEAN WINAPI DeletePwrScheme(UINT);
+BOOLEAN WINAPI EnumPwrSchemes(PWRSCHEMESENUMPROC, LPARAM);
+BOOLEAN WINAPI GetActivePwrScheme(PUINT);
+BOOLEAN WINAPI GetCurrentPowerPolicies(PGLOBAL_POWER_POLICY, PPOWER_POLICY);
+BOOLEAN WINAPI GetPwrCapabilities(PSYSTEM_POWER_CAPABILITIES);
+BOOLEAN WINAPI GetPwrDiskSpindownRange(PUINT, PUINT);
+BOOLEAN WINAPI IsAdminOverrideActive(PADMINISTRATOR_POWER_POLICY);
+BOOLEAN WINAPI IsPwrHibernateAllowed(VOID);
+BOOLEAN WINAPI IsPwrShutdownAllowed(VOID);
+BOOLEAN WINAPI IsPwrSuspendAllowed(VOID);
+BOOLEAN WINAPI ReadGlobalPwrPolicy(PGLOBAL_POWER_POLICY);
+BOOLEAN WINAPI ReadProcessorPwrScheme(UINT, PMACHINE_PROCESSOR_POWER_POLICY);
+BOOLEAN WINAPI ReadPwrScheme(UINT, PPOWER_POLICY);
+BOOLEAN WINAPI SetActivePwrScheme(UINT, PGLOBAL_POWER_POLICY, PPOWER_POLICY);
+BOOLEAN WINAPI SetSuspendState(BOOLEAN, BOOLEAN, BOOLEAN);
+BOOLEAN WINAPI WriteGlobalPwrPolicy(PGLOBAL_POWER_POLICY);
+BOOLEAN WINAPI WriteProcessorPwrScheme(UINT, PMACHINE_PROCESSOR_POWER_POLICY);
+BOOLEAN WINAPI ValidatePowerPolicies(PGLOBAL_POWER_POLICY, PPOWER_POLICY);
+BOOLEAN WINAPI WritePwrScheme(PUINT, LPTSTR, LPTSTR, PPOWER_POLICY);
+
+#endif /* RC_INVOKED */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _POWRPROF_H */
Index: Daodan/MinGW/include/process.h
===================================================================
--- Daodan/MinGW/include/process.h	(revision 1046)
+++ Daodan/MinGW/include/process.h	(revision 1046)
@@ -0,0 +1,293 @@
+/*
+ * process.h
+ *
+ * Declarations of functions for spawning child processes.
+ *
+ * $Id: process.h,v 0e4f78dbc1ba 2016/06/17 14:16:01 keithmarshall $
+ *
+ * Written by Colin Peters <colin@bird.fu.is.saga-u.ac.jp>
+ * Copyright (C) 1997-2001, 2003-2004, 2007-2008, 2016, MinGW.org Project.
+ *
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice, this permission notice, and the following
+ * disclaimer shall be included in all copies or substantial portions of
+ * the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OF OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ *
+ */
+#ifndef _PROCESS_H
+#pragma GCC system_header
+
+/* Defer defining the normal _PROCESS_H multiple inclusion guard macro,
+ * to facilitate selective inclusion by <wchar.h>, (in which case we do
+ * not wish to define it).
+ */
+#ifndef __WCHAR_H_SOURCED__
+#define _PROCESS_H
+
+/* All MinGW headers must include <_mingw.h>; do so here, assuming
+ * that <wchar.h> will have already taken care of it, for the case
+ * of selective inclusion.
+ */
+#include <_mingw.h>
+
+/* This gives us more than we really need, but it gets us _pid_t
+ * (and its pid_t equivalent), which we do need.
+ */
+#include <sys/types.h>
+
+/* Constants for cwait actions; obsolete for Win32.
+ */
+#define _WAIT_CHILD		0
+#define _WAIT_GRANDCHILD	1
+
+#ifndef _NO_OLDNAMES
+#define WAIT_CHILD		_WAIT_CHILD
+#define WAIT_GRANDCHILD 	_WAIT_GRANDCHILD
+#endif	/* !_NO_OLDNAMES */
+#endif	/* !__WCHAR_H_SOURCED__ */
+
+/* Mode constants for spawn() functions.
+ */
+#define _P_WAIT 		0
+#define _P_NOWAIT		1
+#define _P_OVERLAY		2
+#define _OLD_P_OVERLAY		_P_OVERLAY
+#define _P_NOWAITO		3
+#define _P_DETACH		4
+
+#ifndef _NO_OLDNAMES
+#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
+#endif	/* !_NO_OLDNAMES */
+
+#ifndef RC_INVOKED
+
+/* All Microsoft implementations of the exec() and spawn() functions
+ * are declared with intptr_t as their return type; get its definition
+ * by selective inclusion from "stdint.h"; (note: use #include "..."
+ * here, to avoid side effects from any alternative <stdint.h>, which
+ * is not in the same directory as this <process.h>).
+ */
+#define __need_intptr_t
+#include "stdint.h"
+
+_BEGIN_C_DECLS
+
+#ifdef _PROCESS_H
+_CRTIMP __cdecl __MINGW_NOTHROW  void _cexit (void);
+_CRTIMP __cdecl __MINGW_NOTHROW  void _c_exit (void);
+
+_CRTIMP __cdecl __MINGW_NOTHROW  int _cwait (int *, _pid_t, int);
+
+_CRTIMP __cdecl __MINGW_NOTHROW  _pid_t _getpid (void);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+intptr_t _execl (const char *, const char *, ...);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+intptr_t _execle (const char *, const char *, ...);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+intptr_t _execlp (const char *, const char *, ...);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+intptr_t _execlpe (const char *, const char *, ...);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+intptr_t _execv (const char *, const char * const *);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+intptr_t _execve (const char *, const char * const *, const char * const *);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+intptr_t _execvp (const char *, const char * const *);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+intptr_t _execvpe (const char *, const char * const *, const char * const *);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+intptr_t _spawnl (int, const char *, const char *, ...);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+intptr_t _spawnle (int, const char *, const char *, ...);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+intptr_t _spawnlp (int, const char *, const char *, ...);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+intptr_t _spawnlpe (int, const char *, const char *, ...);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+intptr_t _spawnv (int, const char *, const char * const *);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+intptr_t _spawnve (int, const char *, const char * const *, const char * const *);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+intptr_t _spawnvp (int, const char *, const char * const *);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+intptr_t _spawnvpe (int, const char *, const char * const *, const char * const *);
+
+/* Thread initiation and termination functions.
+ *
+ * NOTE: Apparently _endthread() calls CloseHandle() on the handle of the
+ * thread, creating a potential for race conditions, if you are not careful.
+ * Basically, you MUST ensure that NOTHING attempts to do ANYTHING with the
+ * thread handle after the thread calls _endthread(), or returns from the
+ * thread function.
+ *
+ * NOTE: No old names for these functions.  Use the underscore.
+ */
+_CRTIMP __cdecl __MINGW_NOTHROW
+unsigned long _beginthread (void (*)(void *), unsigned, void *);
+
+_CRTIMP __cdecl __MINGW_NOTHROW  void _endthread (void);
+
+#ifdef __MSVCRT__
+_CRTIMP __cdecl __MINGW_NOTHROW  unsigned long _beginthreadex
+(void *, unsigned, unsigned (__stdcall *) (void *), void *, unsigned, unsigned *);
+
+_CRTIMP __cdecl __MINGW_NOTHROW  void _endthreadex (unsigned);
+#endif
+
+#ifndef _NO_OLDNAMES
+/* Functions named without the leading underscore, for portability.
+ * These functions live in liboldnames.a.
+ */
+_CRTIMP __cdecl __MINGW_NOTHROW  int cwait (int *, pid_t, int);
+_CRTIMP __cdecl __MINGW_NOTHROW  pid_t getpid (void);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+intptr_t execl (const char *, const char *, ...);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+intptr_t execle (const char *, const char *, ...);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+intptr_t execlp (const char *, const char *, ...);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+intptr_t execlpe (const char *, const char *,...);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+intptr_t execv (const char *, const char * const *);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+intptr_t execve (const char *, const char * const *, const char * const *);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+intptr_t execvp (const char *, const char * const *);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+intptr_t execvpe (const char *, const char * const *, const char * const *);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+intptr_t spawnl (int, const char *, const char *, ...);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+intptr_t spawnle (int, const char *, const char *, ...);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+intptr_t spawnlp (int, const char *, const char *, ...);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+intptr_t spawnlpe (int, const char *, const char *, ...);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+intptr_t spawnv (int, const char *, const char * const *);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+intptr_t spawnve (int, const char *, const char * const *, const char * const *);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+intptr_t spawnvp (int, const char *, const char * const *);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+intptr_t spawnvpe (int, const char *, const char * const *, const char * const *);
+
+#endif	/* !_NO_OLDNAMES */
+#endif	/* _PROCESS_H */
+
+#if ! (defined _PROCESS_H && defined _WCHAR_H)
+/* Wide character variations of the exec() and spawn() functions are
+ * declared both when <process.h> is included directly, and when it is
+ * selectively included by <wchar.h>; however, if both _PROCESS_H and
+ * _WCHAR_H are defined, by the time we get to here, then this must be
+ * the direct inclusion case, and these have already been declared as
+ * a result of selective inclusion; there is no need to declare them
+ * a second time.
+ */
+_CRTIMP __cdecl __MINGW_NOTHROW
+intptr_t _wexecl (const wchar_t *, const wchar_t *, ...);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+intptr_t _wexecle (const wchar_t *, const wchar_t *, ...);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+intptr_t _wexeclp (const wchar_t *, const wchar_t *, ...);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+intptr_t _wexeclpe (const wchar_t *, const wchar_t *, ...);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+intptr_t _wexecv (const wchar_t *, const wchar_t * const *);
+
+_CRTIMP __cdecl __MINGW_NOTHROW  intptr_t _wexecve
+(const wchar_t *, const wchar_t * const *, const wchar_t * const *);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+intptr_t _wexecvp (const wchar_t *, const wchar_t * const *);
+
+_CRTIMP __cdecl __MINGW_NOTHROW  intptr_t _wexecvpe
+(const wchar_t *, const wchar_t * const *, const wchar_t * const *);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+intptr_t _wspawnl (int, const wchar_t *, const wchar_t *, ...);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+intptr_t _wspawnle (int, const wchar_t *, const wchar_t *, ...);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+intptr_t _wspawnlp (int, const wchar_t *, const wchar_t *, ...);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+intptr_t _wspawnlpe (int, const wchar_t *, const wchar_t *, ...);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+intptr_t _wspawnv (int, const wchar_t *, const wchar_t * const *);
+
+_CRTIMP __cdecl __MINGW_NOTHROW  intptr_t _wspawnve
+(int, const wchar_t *, const wchar_t * const *, const wchar_t * const *);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+intptr_t _wspawnvp (int, const wchar_t *, const wchar_t * const *);
+
+_CRTIMP __cdecl __MINGW_NOTHROW intptr_t _wspawnvpe
+(int, const wchar_t *, const wchar_t * const *, const wchar_t * const *);
+
+#endif	/* ! (_PROCESS_H && _WCHAR_H) */
+
+_END_C_DECLS
+
+#endif	/* ! RC_INVOKED */
+#endif	/* !_PROCESS_H: $RCSfile: process.h,v $: end of file */
Index: Daodan/MinGW/include/profil.h
===================================================================
--- Daodan/MinGW/include/profil.h	(revision 1046)
+++ Daodan/MinGW/include/profil.h	(revision 1046)
@@ -0,0 +1,51 @@
+/* profil.h: gprof profiling header file
+
+   Copyright 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
+
+This file is part of Cygwin.
+
+This software is a copyrighted work licensed under the terms of the
+Cygwin license.  Please consult the file "CYGWIN_LICENSE" for
+details. */
+
+/*
+ * This file is taken from Cygwin distribution. Please keep it in sync.
+ * The differences should be within __MINGW32__ guard.
+ */
+
+/* profiling frequency.  (No larger than 1000) */
+#define PROF_HZ			100
+
+/* convert an addr to an index */
+#define PROFIDX(pc, base, scale)	\
+  ({									\
+    size_t i = (pc - base) / 2;				\
+    if (sizeof (unsigned long long int) > sizeof (size_t))		\
+      i = (unsigned long long int) i * scale / 65536;			\
+    else								\
+      i = i / 65536 * scale + i % 65536 * scale / 65536;		\
+    i;									\
+  })
+
+/* convert an index into an address */
+#define PROFADDR(idx, base, scale)		\
+  ((base)					\
+   + ((((unsigned long long)(idx) << 16)	\
+       / (unsigned long long)(scale)) << 1))
+
+/* convert a bin size into a scale */
+#define PROFSCALE(range, bins)		(((bins) << 16) / ((range) >> 1))
+
+typedef void *_WINHANDLE;
+
+struct profinfo {
+    _WINHANDLE targthr;			/* thread to profile */
+    _WINHANDLE profthr;			/* profiling thread */
+    u_short *counter;			/* profiling counters */
+    u_long lowpc, highpc;		/* range to be profiled */
+    u_int scale;			/* scale value of bins */
+};
+
+int profile_ctl(struct profinfo *, char *, size_t, u_long, u_int);
+int profil(char *, size_t, u_long, u_int);
+
Index: Daodan/MinGW/include/profile.h
===================================================================
--- Daodan/MinGW/include/profile.h	(revision 1046)
+++ Daodan/MinGW/include/profile.h	(revision 1046)
@@ -0,0 +1,83 @@
+/*	$NetBSD: profile.h,v 1.6 1995/03/28 18:17:08 jtc Exp $	*/
+
+/*
+ * Copyright (c) 1992, 1993
+ *	The Regents of the University of California.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *	This product includes software developed by the University of
+ *	California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ *	@(#)profile.h	8.1 (Berkeley) 6/11/93
+ */
+
+/*
+ * This file is taken from Cygwin distribution. Please keep it in sync.
+ * The differences should be within __MINGW32__ guard.
+ */
+/* If compiler doesn't inline, at least avoid passing args on the stack. */
+#define _MCOUNT_CALL __attribute__ ((regparm (2)))
+#define _MCOUNT_DECL static __inline__  void _MCOUNT_CALL _mcount
+
+/* FIXME: This works, but it would be cleaner to convert mcount into an
+   assembler stub that calls an extern  _mcount.
+   Older versions of GCC (pre-4.1) will still fail with regparm since the
+   compiler used %edx to store an unneeded counter variable.  */
+
+#define	MCOUNT \
+void									\
+mcount()								\
+{									\
+	u_long selfpc, frompcindex;					\
+	/*								\
+	 * Save registers, since this may be called from		\
+	 * the prologue of a regparm function.				\
+	 */								\
+	__asm __volatile__ ("pushl %eax\n\t"				\
+			    "pushl %ecx\n\t"				\
+		 	    "pushl %edx");				\
+	/*								\
+	 * find the return address for mcount,				\
+	 * and the return address for mcount's caller.			\
+	 *								\
+	 * selfpc = pc pushed by mcount call				\
+	 */								\
+	/* __asm  ("movl 4(%%ebp),%0" : "=r" (selfpc));	*/		\
+	selfpc = (u_long) __builtin_return_address (0);			\
+	/*								\
+	 * frompcindex = pc pushed by call into self.			\
+	 */								\
+	/*  __asm ("movl (%%ebp),%0;movl 4(%0),%0" : "=r" (frompcindex)); */  \
+	frompcindex = (u_long) __builtin_return_address (1);		\
+	_mcount(frompcindex, selfpc);					\
+	/*								\
+	 * Restore registers.						\
+	 */								\
+	__asm __volatile__ ("popl %edx\n\t"				\
+			    "popl %ecx\n\t"				\
+			    "popl %eax");				\
+}
Index: Daodan/MinGW/include/prsht.h
===================================================================
--- Daodan/MinGW/include/prsht.h	(revision 1046)
+++ Daodan/MinGW/include/prsht.h	(revision 1046)
@@ -0,0 +1,320 @@
+#ifndef _PRSHT_H
+#define _PRSHT_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifndef SNDMSG
+#ifdef __cplusplus
+#define SNDMSG ::SendMessage
+#else
+#define SNDMSG SendMessage
+#endif
+#endif /* ifndef SNDMSG */
+
+#ifndef POSTMSG
+#ifdef __cplusplus
+#define POSTMSG ::PostMessage
+#else
+#define POSTMSG PostMessage
+#endif
+#endif /* ifndef POSTMSG */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define MAXPROPPAGES	100
+#define PSP_DEFAULT	0
+#define PSP_DLGINDIRECT	1
+#define PSP_USEHICON	2
+#define PSP_USEICONID	4
+#define PSP_USETITLE	8
+#define PSP_RTLREADING	16
+#define PSP_HASHELP	32
+#define PSP_USEREFPARENT	64
+#define PSP_USECALLBACK	128
+#define PSP_PREMATURE	1024
+#if (_WIN32_IE >= 0x0400)
+#define PSP_HIDEHEADER	2048
+#define PSP_USEHEADERTITLE	4096
+#define PSP_USEHEADERSUBTITLE	8192
+#endif
+#define PSPCB_RELEASE	1
+#define PSPCB_CREATE	2
+#define PSH_DEFAULT	0
+#define PSH_PROPTITLE	1
+#define PSH_USEHICON	2
+#define PSH_USEICONID	4
+#define PSH_PROPSHEETPAGE	8
+#define PSH_WIZARDHASFINISH	16
+#define PSH_WIZARD	32
+#define PSH_USEPSTARTPAGE	64
+#define PSH_NOAPPLYNOW	128
+#define PSH_USECALLBACK	256
+#define PSH_HASHELP	512
+#define PSH_MODELESS	1024
+#define PSH_RTLREADING	2048
+#define PSH_WIZARDCONTEXTHELP	4096
+#if (_WIN32_IE >= 0x0400)
+#define PSH_WATERMARK	32768
+#define PSH_USEHBMWATERMARK	65536
+#define PSH_USEHPLWATERMARK	131072
+#define PSH_STRETCHWATERMARK	262144
+#define PSH_HEADER	524288
+#define PSH_USEHBMHEADER	1048576
+#define PSH_USEPAGELANG	2097152
+#if (_WIN32_IE < 0x0500)
+#define PSH_WIZARD97	0x00002000
+#else
+#define PSH_WIZARD97	0x01000000
+#endif
+#endif /* _WIN32_IE >= 0x0400 */
+#if (_WIN32_IE >= 0x0500)
+#define PSH_WIZARD_LITE	0x400000
+#define PSH_NOCONTEXTHELP	0x2000000
+#endif
+#define PSCB_INITIALIZED	1
+#define PSCB_PRECREATE	2
+#define PSM_GETTABCONTROL	1140
+#define PSM_GETCURRENTPAGEHWND	1142
+#define PSM_ISDIALOGMESSAGE	1141
+#define PSM_PRESSBUTTON	1137
+#define PSM_SETCURSELID	1138
+#define PSM_SETFINISHTEXTW	1145
+#define PSM_SETFINISHTEXTA	1139
+#define PSN_FIRST	(-200)
+#define PSN_LAST	(-299)
+#define PSN_APPLY	(-202)
+#define PSN_HELP	(-205)
+#define PSN_KILLACTIVE	(-201)
+#define PSN_QUERYCANCEL	(-209)
+#define PSN_RESET	(-203)
+#define PSN_SETACTIVE	(-200)
+#define PSN_WIZBACK	(-206)
+#define PSN_WIZFINISH	(-208)
+#define PSN_WIZNEXT	(-207)
+#define PSNRET_NOERROR	0
+#define PSNRET_INVALID	1
+#define PSNRET_INVALID_NOCHANGEPAGE	2
+#define ID_PSRESTARTWINDOWS	2
+#define ID_PSREBOOTSYSTEM 	3
+#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
+#define PSBTN_MAX	6
+#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 PSWIZB_BACK	1
+#define PSWIZB_NEXT	2
+#define PSWIZB_FINISH	4
+#define PSWIZB_DISABLEDFINISH	8
+#define PSM_SETWIZBUTTONS	(WM_USER+112)
+#define PSM_APPLY	(WM_USER+110)
+#define PSM_UNCHANGED	(WM_USER+109)
+#define PSM_QUERYSIBLINGS	(WM_USER+108)
+#define PSM_CANCELTOCLOSE	(WM_USER+107)
+#define PSM_REBOOTSYSTEM	(WM_USER+106)
+#define PSM_RESTARTWINDOWS	(WM_USER+105)
+#define PSM_CHANGED	(WM_USER+104)
+#define PSM_ADDPAGE	(WM_USER+103)
+#define PSM_REMOVEPAGE	(WM_USER+102)
+#define PSM_SETCURSEL	(WM_USER+101)
+#define PSM_SETTITLEA	(WM_USER+111)
+#define PSM_SETTITLEW	(WM_USER+120)
+
+#ifndef RC_INVOKED
+
+#pragma pack(push,8)
+typedef struct _PROPSHEETPAGEA {
+	DWORD	dwSize;
+	DWORD	dwFlags;
+	HINSTANCE	hInstance;
+	_ANONYMOUS_UNION union {
+		LPCSTR	pszTemplate;
+		LPCDLGTEMPLATE	pResource;
+	} DUMMYUNIONNAME;
+	_ANONYMOUS_UNION union {
+		HICON hIcon;
+		LPCSTR pszIcon;
+	} DUMMYUNIONNAME2;
+	LPCSTR	pszTitle;
+	DLGPROC	pfnDlgProc;
+	LPARAM	lParam;
+	UINT(CALLBACK *pfnCallback)(HWND,UINT,struct _PROPSHEETPAGEA*);
+	UINT *pcRefParent;
+#if (_WIN32_IE >= 0x0400)
+	LPCSTR pszHeaderTitle;
+	LPCSTR pszHeaderSubTitle;
+#endif
+} PROPSHEETPAGEA,*LPPROPSHEETPAGEA;
+typedef const PROPSHEETPAGEA *LPCPROPSHEETPAGEA;
+typedef struct _PROPSHEETPAGEW {
+	DWORD	dwSize;
+	DWORD	dwFlags;
+	HINSTANCE	hInstance;
+	_ANONYMOUS_UNION union {
+		LPCWSTR	pszTemplate;
+		LPCDLGTEMPLATE	pResource;
+	} DUMMYUNIONNAME;
+	_ANONYMOUS_UNION union {
+		HICON hIcon;
+		LPCWSTR pszIcon;
+	} DUMMYUNIONNAME2;
+	LPCWSTR	pszTitle;
+	DLGPROC	pfnDlgProc;
+	LPARAM	lParam;
+	UINT(CALLBACK *pfnCallback)(HWND,UINT,struct _PROPSHEETPAGEW*);
+	UINT *pcRefParent;
+#if (_WIN32_IE >= 0x0400)
+	LPCWSTR pszHeaderTitle;
+	LPCWSTR pszHeaderSubTitle;
+#endif
+} PROPSHEETPAGEW,*LPPROPSHEETPAGEW;
+typedef const PROPSHEETPAGEW *LPCPROPSHEETPAGEW;
+typedef UINT(CALLBACK *LPFNPSPCALLBACKA)(HWND,UINT,LPPROPSHEETPAGEA);
+typedef UINT(CALLBACK *LPFNPSPCALLBACKW)(HWND,UINT,LPPROPSHEETPAGEW);
+typedef int(CALLBACK *PFNPROPSHEETCALLBACK)(HWND,UINT,LPARAM);
+DECLARE_HANDLE(HPROPSHEETPAGE);
+typedef struct _PROPSHEETHEADERA {
+	DWORD	dwSize;
+	DWORD	dwFlags;
+	HWND	hwndParent;
+	HINSTANCE	hInstance;
+	_ANONYMOUS_UNION union {
+		HICON	hIcon;
+		LPCSTR	pszIcon;
+	}DUMMYUNIONNAME;
+	LPCSTR	pszCaption;
+	UINT	nPages;
+	_ANONYMOUS_UNION union {
+		UINT	nStartPage;
+		LPCSTR	pStartPage;
+	}DUMMYUNIONNAME2;
+	_ANONYMOUS_UNION union {
+		LPCPROPSHEETPAGEA ppsp;
+		HPROPSHEETPAGE *phpage;
+	}DUMMYUNIONNAME3;
+	PFNPROPSHEETCALLBACK pfnCallback;
+#if (_WIN32_IE >= 0x0400)
+	_ANONYMOUS_UNION union {
+		HBITMAP hbmWatermark;
+		LPCSTR pszbmWatermark;
+	} DUMMYUNIONNAME4;
+	HPALETTE hplWatermark;
+	_ANONYMOUS_UNION union {
+		HBITMAP hbmHeader;
+		LPCSTR pszbmHeader;
+	} DUMMYUNIONNAME5;
+#endif
+} PROPSHEETHEADERA,*LPPROPSHEETHEADERA;
+typedef const PROPSHEETHEADERA *LPCPROPSHEETHEADERA;
+typedef struct _PROPSHEETHEADERW {
+	DWORD	dwSize;
+	DWORD	dwFlags;
+	HWND	hwndParent;
+	HINSTANCE	hInstance;
+	_ANONYMOUS_UNION union {
+		HICON	hIcon;
+		LPCWSTR	pszIcon;
+	}DUMMYUNIONNAME;
+	LPCWSTR	pszCaption;
+	UINT	nPages;
+	_ANONYMOUS_UNION union {
+		UINT	nStartPage;
+		LPCWSTR	pStartPage;
+	}DUMMYUNIONNAME2;
+	_ANONYMOUS_UNION union {
+		LPCPROPSHEETPAGEW ppsp;
+		HPROPSHEETPAGE *phpage;
+	}DUMMYUNIONNAME3;
+	PFNPROPSHEETCALLBACK pfnCallback;
+#if (_WIN32_IE >= 0x0400)
+	_ANONYMOUS_UNION union {
+		HBITMAP hbmWatermark;
+		LPCWSTR pszbmWatermark;
+	} DUMMYUNIONNAME4;
+	HPALETTE hplWatermark;
+	_ANONYMOUS_UNION union {
+		HBITMAP hbmHeader;
+		LPCWSTR pszbmHeader;
+	} DUMMYUNIONNAME5;
+#endif
+} PROPSHEETHEADERW,*LPPROPSHEETHEADERW;
+typedef const PROPSHEETHEADERW *LPCPROPSHEETHEADERW;
+typedef BOOL(CALLBACK *LPFNADDPROPSHEETPAGE)(HPROPSHEETPAGE,LPARAM);
+typedef BOOL(CALLBACK *LPFNADDPROPSHEETPAGES)(LPVOID,LPFNADDPROPSHEETPAGE,LPARAM);
+typedef struct _PSHNOTIFY {
+	NMHDR hdr;
+	LPARAM lParam;
+} PSHNOTIFY,*LPPSHNOTIFY;
+
+#pragma pack(pop)
+
+HPROPSHEETPAGE WINAPI CreatePropertySheetPageA(LPCPROPSHEETPAGEA);
+HPROPSHEETPAGE WINAPI CreatePropertySheetPageW(LPCPROPSHEETPAGEW);
+BOOL WINAPI DestroyPropertySheetPage(HPROPSHEETPAGE);
+int WINAPI PropertySheetA(LPCPROPSHEETHEADERA);
+int WINAPI PropertySheetW(LPCPROPSHEETHEADERW);
+#define PropSheet_AddPage(d,p) SNDMSG(d,PSM_ADDPAGE,0,(LPARAM)p)
+#define PropSheet_Apply(d) SNDMSG(d,PSM_APPLY,0,0)
+#define PropSheet_CancelToClose(d) POSTMSG(d,PSM_CANCELTOCLOSE,0,0)
+#define PropSheet_Changed(d,w) SNDMSG(d,PSM_CHANGED,(WPARAM)w,0)
+#define PropSheet_GetCurrentPageHwnd(d) (HWND)SNDMSG(d,PSM_GETCURRENTPAGEHWND,0,0)
+#define PropSheet_GetTabControl(d) (HWND)SNDMSG(d,PSM_GETTABCONTROL,0,0)
+#define PropSheet_IsDialogMessage(d,m) (BOOL)SNDMSG(d,PSM_ISDIALOGMESSAGE,0,(LPARAM)m)
+#define PropSheet_PressButton(d,i) POSTMSG(d,PSM_PRESSBUTTON,i,0)
+#define PropSheet_QuerySiblings(d,w,l) SNDMSG(d,PSM_QUERYSIBLINGS,w,l)
+#define PropSheet_RebootSystem(d) SNDMSG(d,PSM_REBOOTSYSTEM,0,0)
+#define PropSheet_RemovePage(d,i,p) SNDMSG(d,PSM_REMOVEPAGE,i,(LPARAM)p)
+#define PropSheet_RestartWindows(d) SNDMSG(d,PSM_RESTARTWINDOWS,0,0)
+#define PropSheet_SetCurSel(d,p,i) SNDMSG(d,PSM_SETCURSEL,i,(LPARAM)p)
+#define PropSheet_SetCurSelByID(d,i) SNDMSG(d,PSM_SETCURSELID,0,i)
+#define PropSheet_SetFinishText(d,s) SNDMSG(d,PSM_SETFINISHTEXT,0,(LPARAM)s)
+#define PropSheet_SetTitle(d,w,s) SNDMSG(d,PSM_SETTITLE,w,(LPARAM)s)
+#define PropSheet_SetWizButtons(d,f) POSTMSG(d,PSM_SETWIZBUTTONS,0,(LPARAM)f)
+#define PropSheet_UnChanged(d,w) SNDMSG(d,PSM_UNCHANGED,(WPARAM)w,0)
+#endif
+
+#ifdef UNICODE
+#define LPFNPSPCALLBACK	LPFNPSPCALLBACKW
+#define PROPSHEETPAGE	PROPSHEETPAGEW
+#define LPPROPSHEETPAGE	LPPROPSHEETPAGEW
+#define LPCPROPSHEETPAGE	LPCPROPSHEETPAGEW
+#define PROPSHEETHEADER	PROPSHEETHEADERW
+#define LPPROPSHEETHEADER	LPPROPSHEETHEADERW
+#define LPCPROPSHEETHEADER	LPCPROPSHEETHEADERW
+#define PSM_SETTITLE PSM_SETTITLEW
+#define PSM_SETFINISHTEXT PSM_SETFINISHTEXTW
+#define CreatePropertySheetPage CreatePropertySheetPageW
+#define PropertySheet PropertySheetW
+#else
+#define LPFNPSPCALLBACK	LPFNPSPCALLBACKA
+#define PROPSHEETPAGE	PROPSHEETPAGEA
+#define LPPROPSHEETPAGE	LPPROPSHEETPAGEA
+#define LPCPROPSHEETPAGE	LPCPROPSHEETPAGEA
+#define PROPSHEETHEADER	PROPSHEETHEADERA
+#define LPPROPSHEETHEADER	LPPROPSHEETHEADERA
+#define LPCPROPSHEETHEADER	LPCPROPSHEETHEADERA
+#define PSM_SETTITLE PSM_SETTITLEA
+#define PSM_SETFINISHTEXT PSM_SETFINISHTEXTA
+#define CreatePropertySheetPage CreatePropertySheetPageA
+#define PropertySheet PropertySheetA
+#endif
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/psapi.h
===================================================================
--- Daodan/MinGW/include/psapi.h	(revision 1046)
+++ Daodan/MinGW/include/psapi.h	(revision 1046)
@@ -0,0 +1,153 @@
+/*
+	psapi.h - Include file for PSAPI.DLL APIs
+
+	Written by Mumit Khan <khan@nanotech.wisc.edu>
+
+	This file is part of a free library for the Win32 API.
+
+	NOTE: This strictly does not belong in the Win32 API since it's
+	really part of Platform SDK. However,GDB needs it and we might
+	as well provide it here.
+
+	This library is distributed in the hope that it will be useful,
+	but WITHOUT ANY WARRANTY; without even the implied warranty of
+	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+*/
+#ifndef _PSAPI_H
+#define _PSAPI_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef RC_INVOKED
+
+typedef struct _MODULEINFO {
+	LPVOID lpBaseOfDll;
+	DWORD SizeOfImage;
+	LPVOID EntryPoint;
+} MODULEINFO,*LPMODULEINFO;
+
+typedef struct _PSAPI_WS_WATCH_INFORMATION {
+	LPVOID FaultingPc;
+	LPVOID FaultingVa;
+} PSAPI_WS_WATCH_INFORMATION,*PPSAPI_WS_WATCH_INFORMATION;
+
+typedef struct _PROCESS_MEMORY_COUNTERS {
+	DWORD cb;
+	DWORD PageFaultCount;
+	DWORD PeakWorkingSetSize;
+	DWORD WorkingSetSize;
+	DWORD QuotaPeakPagedPoolUsage;
+	DWORD QuotaPagedPoolUsage;
+	DWORD QuotaPeakNonPagedPoolUsage;
+	DWORD QuotaNonPagedPoolUsage;
+	DWORD PagefileUsage;
+	DWORD PeakPagefileUsage;
+} PROCESS_MEMORY_COUNTERS,*PPROCESS_MEMORY_COUNTERS;
+
+typedef struct _PROCESS_MEMORY_COUNTERS_EX {
+	DWORD cb;
+	DWORD PageFaultCount;
+	DWORD PeakWorkingSetSize;
+	DWORD WorkingSetSize;
+	DWORD QuotaPeakPagedPoolUsage;
+	DWORD QuotaPagedPoolUsage;
+	DWORD QuotaPeakNonPagedPoolUsage;
+	DWORD QuotaNonPagedPoolUsage;
+	DWORD PagefileUsage;
+	DWORD PeakPagefileUsage;
+	DWORD PrivateUsage;
+} PROCESS_MEMORY_COUNTERS_EX,*PPROCESS_MEMORY_COUNTERS_EX;
+
+typedef struct _PERFORMANCE_INFORMATION {
+  DWORD cb;
+  DWORD CommitTotal;
+  DWORD CommitLimit;
+  DWORD CommitPeak;
+  DWORD PhysicalTotal;
+  DWORD PhysicalAvailable;
+  DWORD SystemCache;
+  DWORD KernelTotal;
+  DWORD KernelPaged;
+  DWORD KernelNonpaged;
+  DWORD PageSize;
+  DWORD HandleCount;
+  DWORD ProcessCount;
+  DWORD ThreadCount;
+} PERFORMANCE_INFORMATION, *PPERFORMANCE_INFORMATION;
+
+typedef union _PSAPI_WORKING_SET_BLOCK {
+  ULONG_PTR Flags;
+  struct {
+    ULONG_PTR Protection  :5;
+    ULONG_PTR ShareCount  :3;
+    ULONG_PTR Shared  :1;
+    ULONG_PTR Reserved  :3;
+    ULONG_PTR VirtualPage  :20;
+  } ;
+} PSAPI_WORKING_SET_BLOCK, *PPSAPI_WORKING_SET_BLOCK;
+
+typedef struct _PSAPI_WORKING_SET_INFORMATION {
+  ULONG_PTR               NumberOfEntries;
+  PSAPI_WORKING_SET_BLOCK WorkingSetInfo[1];
+} PSAPI_WORKING_SET_INFORMATION, *PPSAPI_WORKING_SET_INFORMATION;
+
+/* Grouped by application,not in alphabetical order. */
+BOOL WINAPI EnumProcesses(DWORD *,DWORD,DWORD *);
+BOOL WINAPI EnumProcessModules(HANDLE,HMODULE *,DWORD,LPDWORD);
+DWORD WINAPI GetModuleBaseNameA(HANDLE,HMODULE,LPSTR,DWORD);
+DWORD WINAPI GetModuleBaseNameW(HANDLE,HMODULE,LPWSTR,DWORD);
+DWORD WINAPI GetModuleFileNameExA(HANDLE,HMODULE,LPSTR,DWORD);
+DWORD WINAPI GetModuleFileNameExW(HANDLE,HMODULE,LPWSTR,DWORD);
+BOOL WINAPI GetModuleInformation(HANDLE,HMODULE,LPMODULEINFO,DWORD);
+BOOL WINAPI EmptyWorkingSet(HANDLE);
+BOOL WINAPI QueryWorkingSet(HANDLE,PVOID,DWORD);
+BOOL WINAPI InitializeProcessForWsWatch(HANDLE);
+BOOL WINAPI GetWsChanges(HANDLE,PPSAPI_WS_WATCH_INFORMATION,DWORD);
+DWORD WINAPI GetMappedFileNameW(HANDLE,LPVOID,LPWSTR,DWORD);
+DWORD WINAPI GetMappedFileNameA(HANDLE,LPVOID,LPSTR,DWORD);
+BOOL WINAPI EnumDeviceDrivers(LPVOID *,DWORD,LPDWORD);
+DWORD WINAPI GetDeviceDriverBaseNameA(LPVOID,LPSTR,DWORD);
+DWORD WINAPI GetDeviceDriverBaseNameW(LPVOID,LPWSTR,DWORD);
+DWORD WINAPI GetDeviceDriverFileNameA(LPVOID,LPSTR,DWORD);
+DWORD WINAPI GetDeviceDriverFileNameW(LPVOID,LPWSTR,DWORD);
+BOOL WINAPI GetProcessMemoryInfo(HANDLE,PPROCESS_MEMORY_COUNTERS,DWORD);
+BOOL WINAPI GetPerformanceInfo(PPERFORMANCE_INFORMATION,DWORD);
+#if (_WIN32_WINNT >= 0x0501)
+DWORD WINAPI GetProcessImageFileNameA(HANDLE,LPSTR,DWORD);
+DWORD WINAPI GetProcessImageFileNameW(HANDLE,LPWSTR,DWORD);
+#endif
+
+#endif /* not RC_INVOKED */
+
+#ifdef UNICODE
+#define GetModuleBaseName GetModuleBaseNameW
+#define GetModuleFileNameEx GetModuleFileNameExW
+#define GetMappedFileName GetMappedFileNameW
+#define GetDeviceDriverBaseName GetDeviceDriverBaseNameW
+#define GetDeviceDriverFileName GetDeviceDriverFileNameW
+#if (_WIN32_WINNT >= 0x0501)
+#define GetProcessImageFileName GetProcessImageFileNameW
+#endif
+#else
+#define GetModuleBaseName GetModuleBaseNameA
+#define GetModuleFileNameEx GetModuleFileNameExA
+#define GetMappedFileName GetMappedFileNameA
+#define GetDeviceDriverBaseName GetDeviceDriverBaseNameA
+#define GetDeviceDriverFileName GetDeviceDriverFileNameA
+#if (_WIN32_WINNT >= 0x0501)
+#define GetProcessImageFileName GetProcessImageFileNameA
+#endif
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PSAPI_H */
+
Index: Daodan/MinGW/include/pshpack1.h
===================================================================
--- Daodan/MinGW/include/pshpack1.h	(revision 1046)
+++ Daodan/MinGW/include/pshpack1.h	(revision 1046)
@@ -0,0 +1,3 @@
+#ifndef RC_INVOKED
+#pragma pack(push,1)
+#endif
Index: Daodan/MinGW/include/pshpack2.h
===================================================================
--- Daodan/MinGW/include/pshpack2.h	(revision 1046)
+++ Daodan/MinGW/include/pshpack2.h	(revision 1046)
@@ -0,0 +1,3 @@
+#ifndef RC_INVOKED
+#pragma pack(push,2)
+#endif
Index: Daodan/MinGW/include/pshpack4.h
===================================================================
--- Daodan/MinGW/include/pshpack4.h	(revision 1046)
+++ Daodan/MinGW/include/pshpack4.h	(revision 1046)
@@ -0,0 +1,3 @@
+#ifndef RC_INVOKED
+#pragma pack(push,4)
+#endif
Index: Daodan/MinGW/include/pshpack8.h
===================================================================
--- Daodan/MinGW/include/pshpack8.h	(revision 1046)
+++ Daodan/MinGW/include/pshpack8.h	(revision 1046)
@@ -0,0 +1,3 @@
+#ifndef RC_INVOKED
+#pragma pack(push,8)
+#endif
Index: Daodan/MinGW/include/pthread.h
===================================================================
--- Daodan/MinGW/include/pthread.h	(revision 1046)
+++ Daodan/MinGW/include/pthread.h	(revision 1046)
@@ -0,0 +1,1142 @@
+/*
+ * pthread.h
+ *
+ * This is an implementation of the threads API of the Single Unix Specification.
+ *
+ * --------------------------------------------------------------------------
+ *
+ *      Pthreads-win32 - POSIX Threads Library for Win32
+ *      Copyright(C) 1998 John E. Bossom
+ *      Copyright(C) 1999,2013 Pthreads-win32 contributors
+ *
+ *      Homepage1: http://sourceware.org/pthreads-win32/
+ *      Homepage2: http://sourceforge.net/projects/pthreads4w/
+ *
+ *      The current list of contributors is contained
+ *      in the file CONTRIBUTORS included with the source
+ *      code distribution. The list can also be seen at the
+ *      following World Wide Web location:
+ *      http://sources.redhat.com/pthreads-win32/contributors.html
+ *
+ *      This library is free software; you can redistribute it and/or
+ *      modify it under the terms of the GNU Lesser General Public
+ *      License as published by the Free Software Foundation; either
+ *      version 2 of the License, or (at your option) any later version.
+ *
+ *      This library is distributed in the hope that it will be useful,
+ *      but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *      Lesser General Public License for more details.
+ *
+ *      You should have received a copy of the GNU Lesser General Public
+ *      License along with this library in the file COPYING.LIB;
+ *      if not, write to the Free Software Foundation, Inc.,
+ *      59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
+ */
+#ifndef _PTHREAD_H
+#define _PTHREAD_H
+
+/* There are three implementations of cancel cleanup.
+ * Note that pthread.h is included in both application
+ * compilation units and also internally for the library.
+ * The code here and within the library aims to work
+ * for all reasonable combinations of environments.
+ *
+ * The three implementations are:
+ *
+ *   WIN32 SEH
+ *   C
+ *   C++
+ *
+ * Please note that exiting a push/pop block via
+ * "return", "exit", "break", or "continue" will
+ * lead to different behaviour amongst applications
+ * depending upon whether the library was built
+ * using SEH, C++, or C. For example, a library built
+ * with SEH will call the cleanup routine, while both
+ * C++ and C built versions will not.
+ */
+
+/* Define defaults for cleanup code.
+ * Note: Unless the build explicitly defines one of the following, then
+ * we default to standard C style cleanup. This style uses setjmp/longjmp
+ * in the cancellation and thread exit implementations and therefore won't
+ * do stack unwinding if linked to applications that have it (e.g.
+ * C++ apps). This is currently consistent with most/all commercial Unix
+ * POSIX threads implementations.
+ */
+#if !defined(__CLEANUP_SEH) && !defined(__CLEANUP_CXX) && !defined(__CLEANUP_C)
+# define __CLEANUP_C
+#endif
+
+#if defined(__CLEANUP_SEH) && (!defined(_MSC_VER) && !defined(__PTW32_RC_MSC))
+#error ERROR [__FILE__, line __LINE__]: SEH is not supported for this compiler.
+#endif
+
+#include <_ptw32.h>
+
+/*
+ * Stop here if we are being included by the resource compiler.
+ */
+#if !defined(RC_INVOKED)
+
+#undef  __PTW32_LEVEL
+#undef  __PTW32_LEVEL_MAX
+#define __PTW32_LEVEL_MAX  3
+
+#if _POSIX_C_SOURCE >= 200112L			/* POSIX.1-2001 and later */
+# define __PTW32_LEVEL  __PTW32_LEVEL_MAX	/* include everything     */
+
+#elif defined INCLUDE_NP			/* earlier than POSIX.1-2001, but... */
+# define __PTW32_LEVEL  2			/* include non-portable extensions   */
+
+#elif _POSIX_C_SOURCE >= 199309L		/* POSIX.1-1993           */
+# define __PTW32_LEVEL  1 			/* include 1b, 1c, and 1d */
+
+#elif defined _POSIX_SOURCE			/* early POSIX     */
+# define __PTW32_LEVEL  0			/* minimal support */
+
+#else						/* unspecified support level */
+# define __PTW32_LEVEL  __PTW32_LEVEL_MAX	/* include everything anyway */
+#endif
+
+/* -------------------------------------------------------------
+ *
+ * Module: pthread.h
+ *
+ * Purpose:
+ *      Provides an implementation of PThreads based upon the
+ *      standard:
+ *
+ *              POSIX 1003.1-2001
+ *  and
+ *    The Single Unix Specification version 3
+ *
+ *    (these two are equivalent)
+ *
+ *      in order to enhance code portability between Windows,
+ *  various commercial Unix implementations, and Linux.
+ *
+ *      See the ANNOUNCE file for a full list of conforming
+ *      routines and defined constants, and a list of missing
+ *      routines and constants not defined in this implementation.
+ *
+ * Authors:
+ *      There have been many contributors to this library.
+ *      The initial implementation was contributed by
+ *      John Bossom, and several others have provided major
+ *      sections or revisions of parts of the implementation.
+ *      Often significant effort has been contributed to
+ *      find and fix important bugs and other problems to
+ *      improve the reliability of the library, which sometimes
+ *      is not reflected in the amount of code which changed as
+ *      result.
+ *      As much as possible, the contributors are acknowledged
+ *      in the ChangeLog file in the source code distribution
+ *      where their changes are noted in detail.
+ *
+ *      Contributors are listed in the CONTRIBUTORS file.
+ *
+ *      As usual, all bouquets go to the contributors, and all
+ *      brickbats go to the project maintainer.
+ *
+ * Maintainer:
+ *      The code base for this project is coordinated and
+ *      eventually pre-tested, packaged, and made available by
+ *
+ *              Ross Johnson <rpj@callisto.canberra.edu.au>
+ *
+ * QA Testers:
+ *      Ultimately, the library is tested in the real world by
+ *      a host of competent and demanding scientists and
+ *      engineers who report bugs and/or provide solutions
+ *      which are then fixed or incorporated into subsequent
+ *      versions of the library. Each time a bug is fixed, a
+ *      test case is written to prove the fix and ensure
+ *      that later changes to the code don't reintroduce the
+ *      same error. The number of test cases is slowly growing
+ *      and therefore so is the code reliability.
+ *
+ * Compliance:
+ *      See the file ANNOUNCE for the list of implemented
+ *      and not-implemented routines and defined options.
+ *      Of course, these are all defined is this file as well.
+ *
+ * Web site:
+ *      The source code and other information about this library
+ *      are available from
+ *
+ *              http://sources.redhat.com/pthreads-win32/
+ *
+ * -------------------------------------------------------------
+ */
+enum
+{ /* Boolean values to make us independent of system includes. */
+  PTW32_FALSE = 0,
+  PTW32_TRUE = (! PTW32_FALSE)
+};
+
+#include <time.h>
+#include <sched.h>
+
+/* -------------------------------------------------------------
+ *
+ * POSIX 1003.1-2001 Options
+ * =========================
+ *
+ * Options are normally set in <unistd.h>, which is not provided
+ * with pthreads-win32.
+ *
+ * For conformance with the Single Unix Specification (version 3), all of the
+ * options below are defined, and have a value of either -1 (not supported)
+ * or yyyymm[dd]L (supported).
+ *
+ * These options can neither be left undefined nor have a value of 0, because
+ * either indicates that sysconf(), which is not implemented, may be used at
+ * runtime to check the status of the option.
+ *
+ * _POSIX_THREADS (== 20080912L)
+ *                      If == 20080912L, you can use threads
+ *
+ * _POSIX_THREAD_ATTR_STACKSIZE (== 200809L)
+ *                      If == 200809L, you can control the size of a thread's
+ *                      stack
+ *                              pthread_attr_getstacksize
+ *                              pthread_attr_setstacksize
+ *
+ * _POSIX_THREAD_ATTR_STACKADDR (== -1)
+ *                      If == 200809L, you can allocate and control a thread's
+ *                      stack. If not supported, the following functions
+ *                      will return ENOSYS, indicating they are not
+ *                      supported:
+ *                              pthread_attr_getstackaddr
+ *                              pthread_attr_setstackaddr
+ *
+ * _POSIX_THREAD_PRIORITY_SCHEDULING (== -1)
+ *                      If == 200112L, you can use realtime scheduling.
+ *                      This option indicates that the behaviour of some
+ *                      implemented functions conforms to the additional TPS
+ *                      requirements in the standard. E.g. rwlocks favour
+ *                      writers over readers when threads have equal priority.
+ *
+ * _POSIX_THREAD_PRIO_INHERIT (== -1)
+ *                      If == 200809L, you can create priority inheritance
+ *                      mutexes.
+ *                              pthread_mutexattr_getprotocol +
+ *                              pthread_mutexattr_setprotocol +
+ *
+ * _POSIX_THREAD_PRIO_PROTECT (== -1)
+ *                      If == 200809L, you can create priority ceiling mutexes
+ *                      Indicates the availability of:
+ *                              pthread_mutex_getprioceiling
+ *                              pthread_mutex_setprioceiling
+ *                              pthread_mutexattr_getprioceiling
+ *                              pthread_mutexattr_getprotocol     +
+ *                              pthread_mutexattr_setprioceiling
+ *                              pthread_mutexattr_setprotocol     +
+ *
+ * _POSIX_THREAD_PROCESS_SHARED (== -1)
+ *                      If set, you can create mutexes and condition
+ *                      variables that can be shared with another
+ *                      process.If set, indicates the availability
+ *                      of:
+ *                              pthread_mutexattr_getpshared
+ *                              pthread_mutexattr_setpshared
+ *                              pthread_condattr_getpshared
+ *                              pthread_condattr_setpshared
+ *
+ * _POSIX_THREAD_SAFE_FUNCTIONS (== 200809L)
+ *                      If == 200809L you can use the special *_r library
+ *                      functions that provide thread-safe behaviour
+ *
+ * _POSIX_READER_WRITER_LOCKS (== 200809L)
+ *                      If == 200809L, you can use read/write locks
+ *
+ * _POSIX_SPIN_LOCKS (== 200809L)
+ *                      If == 200809L, you can use spin locks
+ *
+ * _POSIX_BARRIERS (== 200809L)
+ *                      If == 200809L, you can use barriers
+ *
+ * _POSIX_ROBUST_MUTEXES (== 200809L)
+ *                      If == 200809L, you can use robust mutexes
+ *                      Officially this should also imply
+ *                      _POSIX_THREAD_PROCESS_SHARED != -1 however
+ *                      not here yet.
+ *
+ * -------------------------------------------------------------
+ */
+/* POSIX Options
+ */
+#undef  _POSIX_THREADS
+#define _POSIX_THREADS  200809L
+
+#undef  _POSIX_READER_WRITER_LOCKS
+#define _POSIX_READER_WRITER_LOCKS  200809L
+
+#undef  _POSIX_SPIN_LOCKS
+#define _POSIX_SPIN_LOCKS  200809L
+
+#undef  _POSIX_BARRIERS
+#define _POSIX_BARRIERS  200809L
+
+#undef  _POSIX_THREAD_SAFE_FUNCTIONS
+#define _POSIX_THREAD_SAFE_FUNCTIONS  200809L
+
+#undef  _POSIX_THREAD_ATTR_STACKSIZE
+#define _POSIX_THREAD_ATTR_STACKSIZE  200809L
+
+#undef  _POSIX_ROBUST_MUTEXES
+#define _POSIX_ROBUST_MUTEXES  200809L
+
+/* The following options are not supported
+ */
+#undef  _POSIX_THREAD_ATTR_STACKADDR
+#define _POSIX_THREAD_ATTR_STACKADDR  -1
+
+#undef  _POSIX_THREAD_PRIO_INHERIT
+#define _POSIX_THREAD_PRIO_INHERIT  -1
+
+#undef  _POSIX_THREAD_PRIO_PROTECT
+#define _POSIX_THREAD_PRIO_PROTECT  -1
+
+/* TPS is not fully supported.  */
+#undef  _POSIX_THREAD_PRIORITY_SCHEDULING
+#define _POSIX_THREAD_PRIORITY_SCHEDULING  -1
+
+#undef  _POSIX_THREAD_PROCESS_SHARED
+#define _POSIX_THREAD_PROCESS_SHARED  -1
+
+
+/* POSIX 1003.1-2001 Limits
+ * ===========================
+ *
+ * These limits are normally set in <limits.h>, which is not provided with
+ * pthreads-win32.
+ *
+ * PTHREAD_DESTRUCTOR_ITERATIONS
+ *                      Maximum number of attempts to destroy
+ *                      a thread's thread-specific data on
+ *                      termination (must be at least 4)
+ *
+ * PTHREAD_KEYS_MAX
+ *                      Maximum number of thread-specific data keys
+ *                      available per process (must be at least 128)
+ *
+ * PTHREAD_STACK_MIN
+ *                      Minimum supported stack size for a thread
+ *
+ * PTHREAD_THREADS_MAX
+ *                      Maximum number of threads supported per
+ *                      process (must be at least 64).
+ *
+ * SEM_NSEMS_MAX
+ *                      The maximum number of semaphores a process can have.
+ *                      (must be at least 256)
+ *
+ * SEM_VALUE_MAX
+ *                      The maximum value a semaphore can have.
+ *                      (must be at least 32767)
+ *
+ */
+#undef  _POSIX_THREAD_DESTRUCTOR_ITERATIONS
+#define _POSIX_THREAD_DESTRUCTOR_ITERATIONS     4
+
+#undef  PTHREAD_DESTRUCTOR_ITERATIONS
+#define PTHREAD_DESTRUCTOR_ITERATIONS           _POSIX_THREAD_DESTRUCTOR_ITERATIONS
+
+#undef  _POSIX_THREAD_KEYS_MAX
+#define _POSIX_THREAD_KEYS_MAX                  128
+
+#undef  PTHREAD_KEYS_MAX
+#define PTHREAD_KEYS_MAX                        _POSIX_THREAD_KEYS_MAX
+
+#undef  PTHREAD_STACK_MIN
+#define PTHREAD_STACK_MIN                       0
+
+#undef  _POSIX_THREAD_THREADS_MAX
+#define _POSIX_THREAD_THREADS_MAX               64
+
+/* Arbitrary value */
+#undef  PTHREAD_THREADS_MAX
+#define PTHREAD_THREADS_MAX                     2019
+
+#undef  _POSIX_SEM_NSEMS_MAX
+#define _POSIX_SEM_NSEMS_MAX                    256
+
+/* Arbitrary value */
+#undef  SEM_NSEMS_MAX
+#define SEM_NSEMS_MAX                           1024
+
+#undef  _POSIX_SEM_VALUE_MAX
+#define _POSIX_SEM_VALUE_MAX                    32767
+
+#undef  SEM_VALUE_MAX
+#define SEM_VALUE_MAX                           INT_MAX
+
+
+#if defined(_UWIN) && __PTW32_LEVEL >= __PTW32_LEVEL_MAX
+#   include     <sys/types.h>
+#else
+/* Generic handle type - intended to provide the lifetime-uniqueness that
+ * a simple pointer can't. It should scale for either
+ * 32 or 64 bit systems.
+ *
+ * The constraint with this approach is that applications must
+ * strictly comply with POSIX, e.g. not assume scalar type, only
+ * compare pthread_t using the API function pthread_equal(), etc.
+ *
+ * Applications can use the element 'p' to compare, e.g. for sorting,
+ * but it will be up to the application to determine if handles are
+ * live or dead, or resurrected for an entirely new/different thread.
+ */
+typedef struct
+{ void * p;                   /* Pointer to actual object */
+#if __PTW32_VERSION_MAJOR > 2
+  size_t x;                   /* Extra information - reuse count etc */
+#else
+  unsigned int x;             /* Extra information - reuse count etc */
+#endif
+} ptw32_handle_t;
+
+typedef ptw32_handle_t pthread_t;
+typedef struct pthread_attr_t_ * pthread_attr_t;
+typedef struct pthread_once_t_ pthread_once_t;
+typedef struct pthread_key_t_ * pthread_key_t;
+typedef struct pthread_mutex_t_ * pthread_mutex_t;
+typedef struct pthread_mutexattr_t_ * pthread_mutexattr_t;
+typedef struct pthread_cond_t_ * pthread_cond_t;
+typedef struct pthread_condattr_t_ * pthread_condattr_t;
+#endif
+
+typedef struct pthread_rwlock_t_ * pthread_rwlock_t;
+typedef struct pthread_rwlockattr_t_ * pthread_rwlockattr_t;
+typedef struct pthread_spinlock_t_ * pthread_spinlock_t;
+typedef struct pthread_barrier_t_ * pthread_barrier_t;
+typedef struct pthread_barrierattr_t_ * pthread_barrierattr_t;
+
+/* ====================
+ * ====================
+ * POSIX Threads
+ * ====================
+ * ====================
+ */
+
+enum
+{ /* pthread_attr_{get,set}detachstate
+   */
+  PTHREAD_CREATE_JOINABLE       = 0,  /* Default */
+  PTHREAD_CREATE_DETACHED       = 1,
+  /*
+   * pthread_attr_{get,set}inheritsched
+   */
+  PTHREAD_INHERIT_SCHED         = 0,
+  PTHREAD_EXPLICIT_SCHED        = 1,  /* Default */
+  /*
+   * pthread_{get,set}scope
+   */
+  PTHREAD_SCOPE_PROCESS         = 0,
+  PTHREAD_SCOPE_SYSTEM          = 1,  /* Default */
+  /*
+   * pthread_setcancelstate paramters
+   */
+  PTHREAD_CANCEL_ENABLE         = 0,  /* Default */
+  PTHREAD_CANCEL_DISABLE        = 1,
+  /*
+   * pthread_setcanceltype parameters
+   */
+  PTHREAD_CANCEL_ASYNCHRONOUS   = 0,
+  PTHREAD_CANCEL_DEFERRED       = 1,  /* Default */
+  /*
+   * pthread_mutexattr_{get,set}pshared
+   * pthread_condattr_{get,set}pshared
+   */
+  PTHREAD_PROCESS_PRIVATE       = 0,
+  PTHREAD_PROCESS_SHARED        = 1,
+  /*
+   * pthread_mutexattr_{get,set}robust
+   */
+  PTHREAD_MUTEX_STALLED         = 0,  /* Default */
+  PTHREAD_MUTEX_ROBUST          = 1,
+  /*
+   * pthread_barrier_wait
+   */
+  PTHREAD_BARRIER_SERIAL_THREAD = -1
+};
+
+/* ====================
+ * ====================
+ * cancellation
+ * ====================
+ * ====================
+ */
+#define PTHREAD_CANCELED       ((void *)(size_t) -1)
+
+
+/* ====================
+ * ====================
+ * Once Key
+ * ====================
+ * ====================
+ */
+#if __PTW32_VERSION_MAJOR > 2
+
+#define PTHREAD_ONCE_INIT       { PTW32_FALSE, 0 }
+
+struct pthread_once_t_
+{
+  void *       lock;		/* MCS lock */
+  int          done;    	/* indicates if user function has been executed */
+};
+
+#else
+
+#define PTHREAD_ONCE_INIT       { PTW32_FALSE, 0, 0, 0 }
+
+struct pthread_once_t_
+{
+  int          done;       	/* indicates if user function has been executed */
+  void *       lock;		/* MCS lock */
+  int          reserved1;
+  int          reserved2;
+};
+
+#endif
+
+
+/* ====================
+ * ====================
+ * Object initialisers
+ * ====================
+ * ====================
+ */
+#define PTHREAD_MUTEX_INITIALIZER ((pthread_mutex_t)(size_t) -1)
+#define PTHREAD_RECURSIVE_MUTEX_INITIALIZER ((pthread_mutex_t)(size_t) -2)
+#define PTHREAD_ERRORCHECK_MUTEX_INITIALIZER ((pthread_mutex_t)(size_t) -3)
+
+/* Compatibility with LinuxThreads
+ */
+#define PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP PTHREAD_RECURSIVE_MUTEX_INITIALIZER
+#define PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP PTHREAD_ERRORCHECK_MUTEX_INITIALIZER
+#define PTHREAD_COND_INITIALIZER ((pthread_cond_t)(size_t) -1)
+#define PTHREAD_RWLOCK_INITIALIZER ((pthread_rwlock_t)(size_t) -1)
+#define PTHREAD_SPINLOCK_INITIALIZER ((pthread_spinlock_t)(size_t) -1)
+
+
+/* Mutex types.
+ */
+enum
+{ /* Compatibility with LinuxThreads */
+  PTHREAD_MUTEX_FAST_NP,
+  PTHREAD_MUTEX_RECURSIVE_NP,
+  PTHREAD_MUTEX_ERRORCHECK_NP,
+  PTHREAD_MUTEX_TIMED_NP = PTHREAD_MUTEX_FAST_NP,
+  PTHREAD_MUTEX_ADAPTIVE_NP = PTHREAD_MUTEX_FAST_NP,
+  /* For compatibility with POSIX */
+  PTHREAD_MUTEX_NORMAL = PTHREAD_MUTEX_FAST_NP,
+  PTHREAD_MUTEX_RECURSIVE = PTHREAD_MUTEX_RECURSIVE_NP,
+  PTHREAD_MUTEX_ERRORCHECK = PTHREAD_MUTEX_ERRORCHECK_NP,
+  PTHREAD_MUTEX_DEFAULT = PTHREAD_MUTEX_NORMAL
+};
+
+
+typedef struct ptw32_cleanup_t ptw32_cleanup_t;
+
+#if defined(_MSC_VER)
+/* Disable MSVC 'anachronism used' warning */
+#pragma warning( disable : 4229 )
+#endif
+
+typedef void (* __PTW32_CDECL ptw32_cleanup_callback_t)(void *);
+
+#if defined(_MSC_VER)
+#pragma warning( default : 4229 )
+#endif
+
+struct ptw32_cleanup_t
+{
+  ptw32_cleanup_callback_t routine;
+  void *arg;
+  struct ptw32_cleanup_t *prev;
+};
+
+#if defined(__CLEANUP_SEH)
+        /* WIN32 SEH version of cancel cleanup.
+         */
+
+#define pthread_cleanup_push( _rout, _arg ) \
+        { \
+            ptw32_cleanup_t     _cleanup; \
+            \
+        _cleanup.routine        = (ptw32_cleanup_callback_t)(_rout); \
+            _cleanup.arg        = (_arg); \
+            __try \
+              { \
+
+#define pthread_cleanup_pop( _execute ) \
+              } \
+            __finally \
+                { \
+                    if( _execute || AbnormalTermination()) \
+                      { \
+                          (*(_cleanup.routine))( _cleanup.arg ); \
+                      } \
+                } \
+        }
+
+#else /* !__CLEANUP_SEH */
+
+#if defined(__CLEANUP_C)
+        /* C implementation of PThreads cancel cleanup
+         */
+
+#define pthread_cleanup_push( _rout, _arg ) \
+        { \
+            ptw32_cleanup_t     _cleanup; \
+            \
+            ptw32_push_cleanup( &_cleanup, (ptw32_cleanup_callback_t) (_rout), (_arg) ); \
+
+#define pthread_cleanup_pop( _execute ) \
+            (void) ptw32_pop_cleanup( _execute ); \
+        }
+
+#else /* !__CLEANUP_C */
+
+#if defined(__CLEANUP_CXX)
+        /* C++ version of cancel cleanup.
+         * - John E. Bossom.
+         */
+        class PThreadCleanup {
+          /*
+           * PThreadCleanup
+           *
+           * Purpose
+           *      This class is a C++ helper class that is
+           *      used to implement pthread_cleanup_push/
+           *      pthread_cleanup_pop.
+           *      The destructor of this class automatically
+           *      pops the pushed cleanup routine regardless
+           *      of how the code exits the scope
+           *      (i.e. such as by an exception)
+           */
+      ptw32_cleanup_callback_t cleanUpRout;
+          void    *       obj;
+          int             executeIt;
+
+        public:
+          PThreadCleanup() :
+            cleanUpRout( 0 ),
+            obj( 0 ),
+            executeIt( 0 )
+            /*
+             * No cleanup performed
+             */
+            {
+            }
+
+          PThreadCleanup(
+             ptw32_cleanup_callback_t routine,
+                         void    *       arg ) :
+            cleanUpRout( routine ),
+            obj( arg ),
+            executeIt( 1 )
+            /*
+             * Registers a cleanup routine for 'arg'
+             */
+            {
+            }
+
+          ~PThreadCleanup()
+            {
+              if ( executeIt && ((void *) cleanUpRout != (void *) 0) )
+                {
+                  (void) (*cleanUpRout)( obj );
+                }
+            }
+
+          void execute( int exec )
+            {
+              executeIt = exec;
+            }
+        };
+
+        /* C++ implementation of PThreads cancel cleanup;
+         * This implementation takes advantage of a helper
+         * class who's destructor automatically calls the
+         * cleanup routine if we exit our scope weirdly
+         */
+#define pthread_cleanup_push( _rout, _arg ) \
+        { \
+            PThreadCleanup  cleanup((ptw32_cleanup_callback_t)(_rout), \
+                                    (void *) (_arg) );
+
+#define pthread_cleanup_pop( _execute ) \
+            cleanup.execute( _execute ); \
+        }
+
+#else
+
+#error ERROR [__FILE__, line __LINE__]: Cleanup type undefined.
+
+#endif /* __CLEANUP_CXX */
+#endif /* __CLEANUP_C */
+#endif /* __CLEANUP_SEH */
+
+
+/*
+ * ===============
+ * ===============
+ * Methods
+ * ===============
+ * ===============
+ */
+
+__PTW32_BEGIN_C_DECLS
+
+/* PThread Attribute Functions
+ */
+__PTW32_DECLSPEC int pthread_attr_init (pthread_attr_t *);
+__PTW32_DECLSPEC int pthread_attr_destroy (pthread_attr_t *);
+
+__PTW32_DECLSPEC int pthread_attr_getaffinity_np
+(const pthread_attr_t *, size_t, cpu_set_t *);
+
+__PTW32_DECLSPEC int pthread_attr_getdetachstate (const pthread_attr_t *, int *);
+__PTW32_DECLSPEC int pthread_attr_getstackaddr (const pthread_attr_t *, void **);
+
+__PTW32_DECLSPEC int pthread_attr_getstacksize (const pthread_attr_t *, size_t *);
+
+__PTW32_DECLSPEC int pthread_attr_setaffinity_np
+(pthread_attr_t *, size_t, const cpu_set_t *);
+
+__PTW32_DECLSPEC int pthread_attr_setdetachstate (pthread_attr_t *, int); 
+__PTW32_DECLSPEC int pthread_attr_setstackaddr (pthread_attr_t *, void *); 
+__PTW32_DECLSPEC int pthread_attr_setstacksize (pthread_attr_t *, size_t);
+
+__PTW32_DECLSPEC int pthread_attr_getschedparam
+(const pthread_attr_t *, struct sched_param *);
+
+__PTW32_DECLSPEC int pthread_attr_setschedparam
+(pthread_attr_t *, const struct sched_param *);
+
+__PTW32_DECLSPEC int pthread_attr_setschedpolicy (pthread_attr_t *, int);
+__PTW32_DECLSPEC int pthread_attr_getschedpolicy (const pthread_attr_t *, int *);
+__PTW32_DECLSPEC int pthread_attr_setinheritsched (pthread_attr_t *, int);
+
+__PTW32_DECLSPEC int pthread_attr_getinheritsched
+(const pthread_attr_t *, int * inheritsched);
+
+__PTW32_DECLSPEC int pthread_attr_setscope (pthread_attr_t *, int); 
+__PTW32_DECLSPEC int pthread_attr_getscope (const pthread_attr_t *, int *);
+
+/* PThread Functions
+ */
+__PTW32_DECLSPEC int pthread_create
+(pthread_t *, const pthread_attr_t *, void *(__PTW32_CDECL *)(void *), void *);
+
+__PTW32_DECLSPEC int pthread_detach (pthread_t); 
+__PTW32_DECLSPEC int pthread_equal (pthread_t, pthread_t); 
+__PTW32_DECLSPEC void pthread_exit (void *); 
+__PTW32_DECLSPEC int pthread_join (pthread_t, void **); 
+__PTW32_DECLSPEC pthread_t pthread_self (void); 
+__PTW32_DECLSPEC int pthread_cancel (pthread_t); 
+__PTW32_DECLSPEC int pthread_setcancelstate (int, int *); 
+__PTW32_DECLSPEC int pthread_setcanceltype (int, int *); 
+__PTW32_DECLSPEC void pthread_testcancel (void);
+
+__PTW32_DECLSPEC int pthread_once
+(pthread_once_t *, void (__PTW32_CDECL *)(void));
+
+#if __PTW32_LEVEL >= __PTW32_LEVEL_MAX
+__PTW32_DECLSPEC ptw32_cleanup_t * ptw32_pop_cleanup (int);
+
+__PTW32_DECLSPEC void ptw32_push_cleanup
+(ptw32_cleanup_t *, ptw32_cleanup_callback_t, void *);
+
+#endif /* __PTW32_LEVEL >= __PTW32_LEVEL_MAX */
+
+/* Thread Specific Data Functions
+ */
+__PTW32_DECLSPEC int pthread_key_create
+(pthread_key_t *, void (__PTW32_CDECL *)(void *));
+
+__PTW32_DECLSPEC int pthread_key_delete (pthread_key_t);
+__PTW32_DECLSPEC int pthread_setspecific (pthread_key_t, const void *); 
+__PTW32_DECLSPEC void * pthread_getspecific (pthread_key_t);
+
+
+/* Mutex Attribute Functions
+ */
+__PTW32_DECLSPEC int pthread_mutexattr_init (pthread_mutexattr_t *);
+__PTW32_DECLSPEC int pthread_mutexattr_destroy (pthread_mutexattr_t *);
+
+__PTW32_DECLSPEC int pthread_mutexattr_getpshared
+(const pthread_mutexattr_t *, int *);
+
+__PTW32_DECLSPEC int pthread_mutexattr_setpshared (pthread_mutexattr_t *, int);
+__PTW32_DECLSPEC int pthread_mutexattr_settype (pthread_mutexattr_t *, int);
+
+__PTW32_DECLSPEC int pthread_mutexattr_gettype
+(const pthread_mutexattr_t *, int *);
+
+__PTW32_DECLSPEC int pthread_mutexattr_setrobust (pthread_mutexattr_t *, int);
+
+__PTW32_DECLSPEC int pthread_mutexattr_getrobust
+( const pthread_mutexattr_t *, int *);
+
+/* Barrier Attribute Functions
+ */
+__PTW32_DECLSPEC int pthread_barrierattr_init (pthread_barrierattr_t *);
+__PTW32_DECLSPEC int pthread_barrierattr_destroy (pthread_barrierattr_t *);
+
+__PTW32_DECLSPEC int pthread_barrierattr_getpshared
+(const pthread_barrierattr_t *, int *);
+
+__PTW32_DECLSPEC int pthread_barrierattr_setpshared
+(pthread_barrierattr_t *, int);
+
+/* Mutex Functions
+ */
+__PTW32_DECLSPEC int pthread_mutex_init
+(pthread_mutex_t *, const pthread_mutexattr_t *);
+
+__PTW32_DECLSPEC int pthread_mutex_destroy (pthread_mutex_t *);
+__PTW32_DECLSPEC int pthread_mutex_lock (pthread_mutex_t *);
+
+__PTW32_DECLSPEC int pthread_mutex_timedlock
+(pthread_mutex_t *, const struct timespec *);
+
+__PTW32_DECLSPEC int pthread_mutex_trylock (pthread_mutex_t *);
+__PTW32_DECLSPEC int pthread_mutex_unlock (pthread_mutex_t *);
+__PTW32_DECLSPEC int pthread_mutex_consistent (pthread_mutex_t *);
+
+/* Spinlock Functions
+ */
+__PTW32_DECLSPEC int pthread_spin_init (pthread_spinlock_t *, int);
+__PTW32_DECLSPEC int pthread_spin_destroy (pthread_spinlock_t *);
+__PTW32_DECLSPEC int pthread_spin_lock (pthread_spinlock_t *);
+__PTW32_DECLSPEC int pthread_spin_trylock (pthread_spinlock_t *);
+__PTW32_DECLSPEC int pthread_spin_unlock (pthread_spinlock_t *);
+
+/* Barrier Functions
+ */
+__PTW32_DECLSPEC int pthread_barrier_init
+(pthread_barrier_t *, const pthread_barrierattr_t *, unsigned int);
+
+__PTW32_DECLSPEC int pthread_barrier_destroy (pthread_barrier_t *);
+__PTW32_DECLSPEC int pthread_barrier_wait (pthread_barrier_t *);
+
+/* Condition Variable Attribute Functions
+ */
+__PTW32_DECLSPEC int pthread_condattr_init (pthread_condattr_t *);
+__PTW32_DECLSPEC int pthread_condattr_destroy (pthread_condattr_t *);
+
+__PTW32_DECLSPEC int pthread_condattr_getpshared
+(const pthread_condattr_t *, int *);
+
+__PTW32_DECLSPEC int pthread_condattr_setpshared (pthread_condattr_t *, int);
+
+/* Condition Variable Functions
+ */
+__PTW32_DECLSPEC int pthread_cond_init
+(pthread_cond_t *, const pthread_condattr_t *);
+
+__PTW32_DECLSPEC int pthread_cond_destroy (pthread_cond_t * cond);
+__PTW32_DECLSPEC int pthread_cond_wait (pthread_cond_t *, pthread_mutex_t *);
+
+__PTW32_DECLSPEC int pthread_cond_timedwait
+(pthread_cond_t *, pthread_mutex_t *, const struct timespec *);
+
+__PTW32_DECLSPEC int pthread_cond_signal (pthread_cond_t *);
+__PTW32_DECLSPEC int pthread_cond_broadcast (pthread_cond_t *);
+
+/* Scheduling
+ */
+__PTW32_DECLSPEC int pthread_setschedparam
+(pthread_t, int, const struct sched_param *);
+
+__PTW32_DECLSPEC int pthread_getschedparam
+(pthread_t, int *, struct sched_param *);
+
+__PTW32_DECLSPEC int pthread_setconcurrency (int);
+__PTW32_DECLSPEC int pthread_getconcurrency (void);
+
+/* Read-Write Lock Functions
+ */
+__PTW32_DECLSPEC int pthread_rwlock_init
+(pthread_rwlock_t *, const pthread_rwlockattr_t *);
+
+__PTW32_DECLSPEC int pthread_rwlock_destroy (pthread_rwlock_t *);
+__PTW32_DECLSPEC int pthread_rwlock_tryrdlock (pthread_rwlock_t *);
+__PTW32_DECLSPEC int pthread_rwlock_trywrlock (pthread_rwlock_t *);
+__PTW32_DECLSPEC int pthread_rwlock_rdlock (pthread_rwlock_t *);
+
+__PTW32_DECLSPEC int pthread_rwlock_timedrdlock
+(pthread_rwlock_t *, const struct timespec *);
+
+__PTW32_DECLSPEC int pthread_rwlock_wrlock (pthread_rwlock_t *);
+__PTW32_DECLSPEC int pthread_rwlock_timedwrlock
+(pthread_rwlock_t *, const struct timespec *);
+
+__PTW32_DECLSPEC int pthread_rwlock_unlock (pthread_rwlock_t *lock);
+__PTW32_DECLSPEC int pthread_rwlockattr_init (pthread_rwlockattr_t *);
+__PTW32_DECLSPEC int pthread_rwlockattr_destroy (pthread_rwlockattr_t *);
+
+__PTW32_DECLSPEC int pthread_rwlockattr_getpshared
+(const pthread_rwlockattr_t *, int *);
+
+__PTW32_DECLSPEC int pthread_rwlockattr_setpshared
+(pthread_rwlockattr_t *, int);
+
+#if __PTW32_LEVEL >= __PTW32_LEVEL_MAX - 1
+
+/* Signal Functions. Should be defined in <signal.h> but MSVC and MinGW32
+ * already have signal.h that don't define these.
+ */
+__PTW32_DECLSPEC int pthread_kill (pthread_t, int);
+
+/* Non-portable functions
+ */
+
+/* Compatibility with Linux.
+ */
+__PTW32_DECLSPEC int pthread_mutexattr_setkind_np (pthread_mutexattr_t *, int);
+__PTW32_DECLSPEC int pthread_mutexattr_getkind_np (pthread_mutexattr_t *, int *);
+
+__PTW32_DECLSPEC int pthread_timedjoin_np
+(pthread_t, void **, const struct timespec *);
+
+__PTW32_DECLSPEC int pthread_tryjoin_np (pthread_t, void **);
+
+__PTW32_DECLSPEC int pthread_setaffinity_np
+(pthread_t, size_t, const cpu_set_t *);
+
+__PTW32_DECLSPEC int pthread_getaffinity_np (pthread_t, size_t, cpu_set_t *);
+
+/* Possibly supported by other POSIX threads implementations
+ */
+__PTW32_DECLSPEC int pthread_delay_np (struct timespec *);
+__PTW32_DECLSPEC int pthread_num_processors_np (void);
+__PTW32_DECLSPEC unsigned __int64 pthread_getunique_np (pthread_t);
+
+/* Useful if an application wants to statically link
+ * the lib rather than load the DLL at run-time.
+ */
+__PTW32_DECLSPEC int pthread_win32_process_attach_np (void);
+__PTW32_DECLSPEC int pthread_win32_process_detach_np (void);
+__PTW32_DECLSPEC int pthread_win32_thread_attach_np (void);
+__PTW32_DECLSPEC int pthread_win32_thread_detach_np (void);
+
+/* Returns the first parameter "abstime" modified to represent the current system time.
+ * If "relative" is not NULL it represents an interval to add to "abstime".
+ */
+__PTW32_DECLSPEC struct timespec *pthread_win32_getabstime_np
+( struct timespec *, const struct timespec *);
+
+/* Features that are auto-detected at load/run time.
+ */
+__PTW32_DECLSPEC int pthread_win32_test_features_np (int);
+enum ptw32_features
+{
+  PTW32_SYSTEM_INTERLOCKED_COMPARE_EXCHANGE = 0x0001,	/* System provides it. */
+  PTW32_ALERTABLE_ASYNC_CANCEL              = 0x0002	/* Can cancel blocked threads. */
+};
+
+/* Register a system time change with the library.
+ * Causes the library to perform various functions
+ * in response to the change. Should be called whenever
+ * the application's top level window receives a
+ * WM_TIMECHANGE message. It can be passed directly to
+ * pthread_create() as a new thread if desired.
+ */
+__PTW32_DECLSPEC void *pthread_timechange_handler_np (void *);
+
+#endif /* __PTW32_LEVEL >= __PTW32_LEVEL_MAX - 1 */
+
+#if __PTW32_LEVEL >= __PTW32_LEVEL_MAX
+
+/* Returns the Win32 HANDLE for the POSIX thread.
+ */
+__PTW32_DECLSPEC void *pthread_getw32threadhandle_np (pthread_t);
+/*
+ * Returns the win32 thread ID for POSIX thread.
+ */
+__PTW32_DECLSPEC unsigned long pthread_getw32threadid_np (pthread_t);
+
+/* Sets the POSIX thread name. If _MSC_VER is defined the name should be displayed by
+ * the MSVS debugger.
+ */
+#if defined(_PTW32_COMPATIBILITY_BSD) || defined(_PTW32_COMPATIBILITY_TRU64)
+#define PTHREAD_MAX_NAMELEN_NP 16
+__PTW32_DECLSPEC int pthread_setname_np (pthread_t, const char *, void *);
+__PTW32_DECLSPEC int pthread_attr_setname_np (pthread_attr_t *, const char *, void *);
+#else
+__PTW32_DECLSPEC int pthread_setname_np (pthread_t, const char *);
+__PTW32_DECLSPEC int pthread_attr_setname_np (pthread_attr_t *, const char *);
+#endif
+
+__PTW32_DECLSPEC int pthread_getname_np (pthread_t, char *, int);
+__PTW32_DECLSPEC int pthread_attr_getname_np (pthread_attr_t *, char *, int);
+
+
+/* Protected Methods
+ *
+ * This function blocks until the given WIN32 handle
+ * is signalled or pthread_cancel had been called.
+ * This function allows the caller to hook into the
+ * PThreads cancel mechanism. It is implemented using
+ *
+ *              WaitForMultipleObjects
+ *
+ * on 'waitHandle' and a manually reset WIN32 Event
+ * used to implement pthread_cancel. The 'timeout'
+ * argument to TimedWait is simply passed to
+ * WaitForMultipleObjects.
+ */
+__PTW32_DECLSPEC int pthreadCancelableWait (void *);
+__PTW32_DECLSPEC int pthreadCancelableTimedWait (void *, unsigned long);
+
+#endif /* __PTW32_LEVEL >= __PTW32_LEVEL_MAX */
+
+/* Declare a thread-safe errno for Open Watcom
+ * (note: this has not been tested in a long time)
+ */
+#if defined(__WATCOMC__) && !defined(errno)
+# if defined(_MT) || defined(_DLL)
+   __declspec(dllimport) extern int * __cdecl _errno (void);
+#  define errno (*_errno())
+# endif
+#endif
+
+/* If pthreads-win32 is compiled as a DLL with MSVC, and
+ * both it and the application are linked against the static
+ * C runtime (i.e. with the /MT compiler flag), then the
+ * application will not see the same C runtime globals as
+ * the library. These include the errno variable, and the
+ * termination routine called by terminate(). For details,
+ * refer to the following links:
+ *
+ * http://support.microsoft.com/kb/94248
+ * (Section 4: Problems Encountered When Using Multiple CRT Libraries)
+ *
+ * http://social.msdn.microsoft.com/forums/en-US/vclanguage/thread/b4500c0d-1b69-40c7-9ef5-08da1025b5bf
+ *
+ * When pthreads-win32 is built with __PTW32_USES_SEPARATE_CRT
+ * defined, the following features are enabled:
+ *
+ * (1) In addition to setting the errno variable when errors
+ * occur, the library will also call SetLastError() with the
+ * same value. The application can then use GetLastError()
+ * to obtain the value of errno. (This pair of routines are
+ * in kernel32.dll, and so are not affected by the use of
+ * multiple CRT libraries.)
+ *
+ * (2) When C++ or SEH cleanup is used, the library defines
+ * a function pthread_win32_set_terminate_np(), which can be
+ * used to set the termination routine that should be called
+ * when an unhandled exception occurs in a thread function
+ * (or otherwise inside the library).
+ *
+ * Note: "_DLL" implies the /MD compiler flag.
+ */
+#if defined(_MSC_VER) && !defined(_DLL) && !defined(_PTW32_STATIC_LIB)
+# define __PTW32_USES_SEPARATE_CRT
+#endif
+
+#if defined(__PTW32_USES_SEPARATE_CRT) && (defined(__CLEANUP_CXX) || defined(__CLEANUP_SEH))
+typedef void (*ptw32_terminate_handler)();
+__PTW32_DECLSPEC ptw32_terminate_handler pthread_win32_set_terminate_np
+(ptw32_terminate_handler);
+#endif
+
+/* Some compiler environments don't define some things.
+ */
+#if defined(__BORLANDC__)
+# define _ftime ftime
+# define _timeb timeb
+#endif
+
+#if defined(__cplusplus)
+
+/* Internal exceptions
+ */
+class ptw32_exception {};
+class ptw32_exception_cancel : public ptw32_exception {};
+class ptw32_exception_exit   : public ptw32_exception {};
+
+#endif
+
+#if __PTW32_LEVEL >= __PTW32_LEVEL_MAX
+
+/* FIXME: This is only required if the library was built using SEH */
+/*
+ * Get internal SEH tag
+ */
+__PTW32_DECLSPEC unsigned long ptw32_get_exception_services_code (void);
+
+#endif /* __PTW32_LEVEL >= __PTW32_LEVEL_MAX */
+
+#if !defined(__PTW32_BUILD)
+
+#if defined(__CLEANUP_SEH)
+
+/* Redefine the SEH __except keyword to ensure that applications
+ * propagate our internal exceptions up to the library's internal handlers.
+ */
+#define __except( E ) \
+        __except( ( GetExceptionCode() == ptw32_get_exception_services_code() ) \
+                 ? EXCEPTION_CONTINUE_SEARCH : ( E ) )
+
+#endif /* __CLEANUP_SEH */
+
+#if defined(__CLEANUP_CXX)
+
+/* Redefine the C++ catch keyword to ensure that applications
+ * propagate our internal exceptions up to the library's internal handlers.
+ */
+#if defined(_MSC_VER)
+ /* WARNING: Replace any 'catch( ... )' with 'PtW32CatchAll'
+  * if you want Pthread-Win32 cancellation and pthread_exit to work.
+  */
+#if !defined(PtW32NoCatchWarn)
+
+#pragma message("Specify \"/DPtW32NoCatchWarn\" compiler flag to skip this message.")
+#pragma message("------------------------------------------------------------------")
+#pragma message("When compiling applications with MSVC++ and C++ exception handling:")
+#pragma message("  Replace any 'catch( ... )' in routines called from POSIX threads")
+#pragma message("  with 'PtW32CatchAll' or 'CATCHALL' if you want POSIX thread")
+#pragma message("  cancellation and pthread_exit to work. For example:")
+#pragma message("")
+#pragma message("    #if defined(PtW32CatchAll)")
+#pragma message("      PtW32CatchAll")
+#pragma message("    #else")
+#pragma message("      catch(...)")
+#pragma message("    #endif")
+#pragma message("        {")
+#pragma message("          /* Catchall block processing */")
+#pragma message("        }")
+#pragma message("------------------------------------------------------------------")
+
+#endif
+
+#define PtW32CatchAll \
+        catch( ptw32_exception & ) { throw; } \
+        catch( ... )
+
+#else /* _MSC_VER */
+
+#define catch( E ) \
+        catch( ptw32_exception & ) { throw; } \
+        catch( E )
+
+#endif /* _MSC_VER */
+#endif /* __CLEANUP_CXX */
+#endif /* ! __PTW32_BUILD */
+
+__PTW32_END_C_DECLS
+
+#undef __PTW32_LEVEL
+#undef __PTW32_LEVEL_MAX
+
+#endif /* ! RC_INVOKED */
+#endif /* !_PTHREAD_H */
Index: Daodan/MinGW/include/ptw32_errno.h
===================================================================
--- Daodan/MinGW/include/ptw32_errno.h	(revision 1046)
+++ Daodan/MinGW/include/ptw32_errno.h	(revision 1046)
@@ -0,0 +1,186 @@
+/*
+ * Module: ptw32_errno.h
+ *
+ * Purpose:
+ *      Provides a replacement for <errno.h>, with supplementary
+ *      definitions for platforms which already provide their own
+ *      implementation, or a complete substitute for WinCE.
+ *
+ * --------------------------------------------------------------------------
+ *
+ *      Pthreads-win32 - POSIX Threads Library for Win32
+ *      Copyright(C) 1998 John E. Bossom
+ *      Copyright(C) 1999-2012, 2016, Pthreads-win32 contributors
+ *
+ *      Homepage1: http://sourceware.org/pthreads-win32/
+ *      Homepage2: http://sourceforge.net/projects/pthreads4w/
+ *
+ *      The current list of contributors is contained
+ *      in the file CONTRIBUTORS included with the source
+ *      code distribution. The list can also be seen at the
+ *      following World Wide Web location:
+ *      http://sources.redhat.com/pthreads-win32/contributors.html
+ *
+ *      This library is free software; you can redistribute it and/or
+ *      modify it under the terms of the GNU Lesser General Public
+ *      License as published by the Free Software Foundation; either
+ *      version 2 of the License, or (at your option) any later version.
+ *
+ *      This library is distributed in the hope that it will be useful,
+ *      but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *      Lesser General Public License for more details.
+ *
+ *      You should have received a copy of the GNU Lesser General Public
+ *      License along with this library in the file COPYING.LIB;
+ *      if not, write to the Free Software Foundation, Inc.,
+ *      59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
+ *
+ */
+#ifndef _PTW32_ERRNO_H
+#define _PTW32_ERRNO_H
+
+/* We must ensure that the core pthreads-win32 definitions are
+ * read in.
+ */
+#include <_ptw32.h>
+
+#if HAVE_ERRNO_H || !(defined(_WIN32_WCE) || defined(UNDER_CE))
+/* Most Win32 platforms, except for WinCE, provide their own <errno.h>,
+ * so, when not compiling for WinCE, or its presence has been explicitly
+ * detected during project configuration, use it.
+ */
+# include <errno.h>
+
+#else
+/* Compiling for WinCE: we must furnish a replacement; these error codes
+ * are abstracted from MinGW.org's <errno.h>
+ */
+#define EPERM		1	/* Operation not permitted */
+#define ENOFILE 	2	/* No such file or directory */
+#define ENOENT		2
+#define ESRCH		3	/* No such process */
+#define EINTR		4	/* Interrupted function call */
+#define EIO		5	/* Input/output error */
+#define ENXIO		6	/* No such device or address */
+#define E2BIG		7	/* Arg list too long */
+#define ENOEXEC 	8	/* Exec format error */
+#define EBADF		9	/* Bad file descriptor */
+#define ECHILD		10	/* No child processes */
+#define EAGAIN		11	/* Resource temporarily unavailable */
+#define ENOMEM		12	/* Not enough space */
+#define EACCES		13	/* Permission denied */
+#define EFAULT		14	/* Bad address */
+/* 15 - Unknown Error */
+#define EBUSY		16	/* strerror reports "Resource device" */
+#define EEXIST		17	/* File exists */
+#define EXDEV		18	/* Improper link (cross-device link?) */
+#define ENODEV		19	/* No such device */
+#define ENOTDIR 	20	/* Not a directory */
+#define EISDIR		21	/* Is a directory */
+#define EINVAL		22	/* Invalid argument */
+#define ENFILE		23	/* Too many open files in system */
+#define EMFILE		24	/* Too many open files */
+#define ENOTTY		25	/* Inappropriate I/O control operation */
+/* 26 - Unknown Error */
+#define EFBIG		27	/* File too large */
+#define ENOSPC		28	/* No space left on device */
+#define ESPIPE		29	/* Invalid seek (seek on a pipe?) */
+#define EROFS		30	/* Read-only file system */
+#define EMLINK		31	/* Too many links */
+#define EPIPE		32	/* Broken pipe */
+#define EDOM		33	/* Domain error (math functions) */
+#define ERANGE		34	/* Result too large (possibly too small) */
+/* 35 - Unknown Error */
+#define EDEADLOCK	36	/* Resource deadlock avoided (non-Cyg) */
+#define EDEADLK 	36
+/* 37 - Unknown Error */
+#define ENAMETOOLONG	38	/* Filename too long (91 in Cyg?) */
+#define ENOLCK		39	/* No locks available (46 in Cyg?) */
+#define ENOSYS		40	/* Function not implemented (88 in Cyg?) */
+#define ENOTEMPTY	41	/* Directory not empty (90 in Cyg?) */
+#define EILSEQ		42	/* Illegal byte sequence */
+
+#ifndef RC_INVOKED
+
+__PTW32_BEGIN_C_DECLS
+/* Definition of errno.  For _doserrno, sys_nerr, and * sys_errlist,
+ * see stdlib.h.  (FIXME: this represents the implementation which is
+ * provided by MSVCRT.DLL, on all regular Windows Desktop and Server
+ * platforms; we may need to provide a replacement implementation,
+ * which will be suitable for WinCE).
+ */
+__declspec(dllimport) int __cdecl *_errno(void);
+#define errno (*_errno())
+
+__PTW32_END_C_DECLS
+
+#endif	/* ! RC_INVOKED */
+#endif	/* ! HAVE_ERRNO_H */
+
+/* Regardless of whether or not the target platform provides its own
+ * <errno.h>, we depend on several error codes which may not have been
+ * defined; ensure that we provide fall-back definitions.
+ */
+#define __PTW32_DEFINE_ERRNO(__CODE__)  (__PTW32_ERRNO_BASE__+__CODE__)
+
+#if __PTW32_VERSION_MAJOR > 2
+# define __PTW32_ERRNO_BASE__	   (1000 - 42)
+#else
+/* FIXME: This matches the original pthreads-win32 v2 definitions,
+ * but creates a conflict between EOWNERDEAD and EILSEQ.
+ */
+# define __PTW32_ERRNO_BASE__	   0
+#endif
+
+/* POSIX.1-2008 robust mutex support.
+ */
+#define __PTW32_EOWNERDEAD	 __PTW32_DEFINE_ERRNO( 42 )
+#define __PTW32_ENOTRECOVERABLE  __PTW32_DEFINE_ERRNO( 43 )
+
+#ifndef EOWNERDEAD
+#define EOWNERDEAD		 __PTW32_EOWNERDEAD
+#endif
+
+#ifndef ENOTRECOVERABLE
+#define ENOTRECOVERABLE 	 __PTW32_ENOTRECOVERABLE
+#endif
+
+#if !defined(EDEADLK)
+/* This is the standard name, prescribed by POSIX.1.  MinGW.org's
+ * <errno.h> already defines it, but some other platforms may not.
+ */
+# if defined(EDEADLOCK)
+#  define EDEADLK  EDEADLOCK	/* Some older MS tools defined it thus... */
+# else
+#  define EDEADLK  36		/* ...while MinGW.org defines both thus. */
+# endif
+#endif
+
+#if !defined(ENOTSUP)
+# define ENOTSUP   48		/* This is the value in Solaris. */
+#endif
+
+#if !defined(ENOSYS)
+# define ENOSYS   140		/* Semi-arbitrary value */
+#endif
+
+#if !defined(ETIMEDOUT)
+/* Not normally defined in Win32 <errno.h>, but at one time it may
+ * have been defined in <winsock.h>; this seems to be no longer the
+ * case, but WSAETIMEDOUT may offer a suitable substitute.
+ *
+ * FIXME: this may be incompatible with any application which wants
+ * to use <winsock2.h>
+ */
+# include <winsock.h>
+# if !defined(ETIMEDOUT)
+#  if defined(WSAETIMEDOUT)
+#   define ETIMEDOUT  WSAETIMEDOUT
+#  else
+#   define ETIMEDOUT  10060	/* This is the value of WSAETIMEDOUT in winsock.h. */
+#  endif
+# endif
+#endif
+
+#endif	/* ! _PTW32_ERRNO_H_ */
Index: Daodan/MinGW/include/qedit.h
===================================================================
--- Daodan/MinGW/include/qedit.h	(revision 1046)
+++ Daodan/MinGW/include/qedit.h	(revision 1046)
@@ -0,0 +1,70 @@
+#ifndef _QEDIT_H
+#define _QEDIT_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifndef _STRMIF_H
+#include <strmif.h>
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*--- DirectShow Reference - Constants and GUIDs - Error and Success Codes */
+#define S_WARN_OUTPUTRESET 0x00009DD4
+#define E_NOTINTREE 0x80040400
+#define E_RENDER_ENGINE_IS_BROKEN 0x80040401
+#define E_MUST_INIT_RENDERER 0x80040402
+#define E_NOTDETERMINED 0x80040403
+#define E_NO_TIMELINE 0x80040404
+/*--- DirectShow Editing Services - C++ Reference - Structures */
+typedef struct {
+	BSTR Name;
+	DISPID dispID;
+	LONG nValues;
+} DEXTER_PARAM;
+typedef struct {
+	VARIANT v;
+	REFERENCE_TIME rt;
+	DWORD dwInterp;
+} DEXTER_VALUE;
+typedef struct _SCompFmt0 {
+	long nFormatId;
+	AM_MEDIA_TYPE MediaType;
+} SCompFmt0;
+/*--- DirectShow Editing Services - C++ Reference - Enumerated Types */
+typedef enum {
+	DEXTERF_BOUNDING = -1,
+	DEXTERF_EXACTLY_AT = 0,
+	DEXTERF_FORWARDS = 1
+} DEXTERF_TRACK_SEARCH_FLAGS;
+typedef enum {
+	TIMELINE_MAJOR_TYPE_COMPOSITE = 1,
+	TIMELINE_MAJOR_TYPE_TRACK = 2,
+	TIMELINE_MAJOR_TYPE_SOURCE = 4,
+	TIMELINE_MAJOR_TYPE_TRANSITION = 8,
+	TIMELINE_MAJOR_TYPE_EFFECT = 16,
+	TIMELINE_MAJOR_TYPE_GROUP = 128
+} TIMELINE_MAJOR_TYPE;
+/*--- DirectShow Editing Services - C++ Reference - Constants */
+#define CONNECTF_DYNAMIC_NONE 0x00
+#define CONNECTF_DYNAMIC_SOURCES 0x01
+#define CONNECTF_DYNAMIC_EFFECTS 0x02
+#define SFN_VALIDATEF_CHECK 0x01
+#define SFN_VALIDATEF_POPUP 0x02
+#define SFN_VALIDATEF_TELLME 0x04
+#define SFN_VALIDATEF_REPLACE 0x08
+#define SFN_VALIDATEF_USELOCAL 0x10
+#define SFN_VALIDATEF_NOFIND 0x20
+#define SFN_VALIDATEF_IGNOREMUTED 0x40
+#define RESIZEF_STRETCH 0
+#define RESIZEF_CROP 1
+#define RESIZEF_PRESERVEASPECTRATIO 2
+#define RESIZEF_PRESERVEASPECTRATIO_NOLETTERBOX 3
+
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/rapi.h
===================================================================
--- Daodan/MinGW/include/rapi.h	(revision 1046)
+++ Daodan/MinGW/include/rapi.h	(revision 1046)
@@ -0,0 +1,54 @@
+/* rapi.h - main header file for the RAPI API
+
+        NOTE: This strictly does not belong in the Win32 API since it's
+        really part of Platform SDK.
+
+*/
+
+#ifndef _RAPI_H
+#define _RAPI_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+typedef struct IRAPIStream
+{
+  struct IRAPIStreamVtbl * lpVtbl;
+} IRAPIStream;
+
+typedef struct IRAPIStreamVtbl IRAPIStreamVtbl;
+
+typedef enum tagRAPISTREAMFLAG
+{
+  STREAM_TIMEOUT_READ
+} RAPISTREAMFLAG;
+
+struct IRAPIStreamVtbl
+{
+  HRESULT (__stdcall * SetRapiStat)( IRAPIStream *, RAPISTREAMFLAG, DWORD);
+  HRESULT (__stdcall * GetRapiStat)( IRAPIStream *, RAPISTREAMFLAG, DWORD *);
+};
+
+typedef  HRESULT (STDAPICALLTYPE RAPIEXT)(DWORD, BYTE, DWORD, BYTE, IRAPIStream	*);
+
+typedef struct _RAPIINIT
+{
+  DWORD cbSize;
+  HANDLE heRapiInit;
+  HRESULT hrRapiInit;
+} RAPIINIT;
+
+STDAPI CeRapiInit (void);
+STDAPI CeRapiInitEx (RAPIINIT*);
+STDAPI_(BOOL) CeCreateProcess (LPCWSTR, LPCWSTR, LPSECURITY_ATTRIBUTES, LPSECURITY_ATTRIBUTES,
+			       BOOL, DWORD, LPVOID, LPWSTR, LPSTARTUPINFO, LPPROCESS_INFORMATION);
+STDAPI CeRapiUninit (void);
+
+STDAPI_(BOOL) CeWriteFile (HANDLE, LPCVOID, DWORD, LPDWORD, LPOVERLAPPED);
+STDAPI_(HANDLE) CeCreateFile (LPCWSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES, DWORD, DWORD, HANDLE);
+STDAPI_(BOOL) CeCreateDirectory (LPCWSTR, LPSECURITY_ATTRIBUTES);
+STDAPI_(DWORD) CeGetLastError (void);
+STDAPI_(BOOL) CeGetFileTime (HANDLE, LPFILETIME, LPFILETIME, LPFILETIME);
+STDAPI_(BOOL) CeCloseHandle (HANDLE);
+
+#endif /* _RAPI_H */
Index: Daodan/MinGW/include/ras.h
===================================================================
--- Daodan/MinGW/include/ras.h	(revision 1046)
+++ Daodan/MinGW/include/ras.h	(revision 1046)
@@ -0,0 +1,997 @@
+#ifndef _RAS_H
+#define _RAS_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+#ifndef _LMCONS_H
+#include <lmcons.h>
+#endif
+
+/* TODO
+include <basetsd.h> from winnt.h so that this typedef is not necessary
+*/
+#ifndef _BASETSD_H
+typedef unsigned long ULONG_PTR, *PULONG_PTR;
+#endif
+
+#include <pshpack4.h>
+
+#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
+#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 REN_User                         0x00000000
+#define REN_AllUsers                     0x00000001
+#define VS_Default		                0
+#define VS_PptpOnly	                    1
+#define VS_PptpFirst	                2
+#define VS_L2tpOnly 	                3
+#define VS_L2tpFirst	                4
+#define RASDIALEVENT                    "RasDialEvent"
+#define WM_RASDIALEVENT                 0xCCCD
+#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
+#if (WINVER >= 0x501)
+#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
+#endif
+#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 RASET_Phone     1
+#define RASET_Vpn       2
+#define RASET_Direct    3
+#define RASET_Internet  4
+#if (WINVER >= 0x401)
+#define RASEO_SecureLocalFiles  0x00010000
+#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 RASADFLG_PositionDlg    0x00000001
+#define RASCM_UserName       0x00000001
+#define RASCM_Password       0x00000002
+#define RASCM_Domain         0x00000004
+#define RASADP_DisableConnectionQuery   0
+#define RASADP_LoginSessionDisable      1
+#define RASADP_SavedAddressesLimit      2
+#define RASADP_FailedConnectionTimeout  3
+#define RASADP_ConnectionQueryTimeout   4
+#endif  /* (WINVER >= 0x401) */
+#if (WINVER >= 0x500)
+#define RDEOPT_CustomDial   0x00001000
+#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 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 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 RASIPO_VJ                   0x00000001
+#define RCD_SingleUser              0
+#define RCD_AllUsers                0x00000001
+#define RCD_Eap                     0x00000002
+#define RASEAPF_NonInteractive      0x00000002
+#define RASEAPF_Logon               0x00000004
+#define RASEAPF_Preview             0x00000008
+#define ET_40Bit        1
+#define ET_128Bit       2
+#define ET_None         0
+#define ET_Require      1
+#define ET_RequireMax   2
+#define ET_Optional     3
+#endif /* (WINVER >= 0x500) */
+
+#define RASCS_PAUSED 0x1000
+#define RASCS_DONE   0x2000
+typedef 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 = RASCS_PAUSED,
+      RASCS_RetryAuthentication,
+      RASCS_CallbackSetByCaller,
+      RASCS_PasswordExpired,
+#if (WINVER >= 0x500)
+      RASCS_InvokeEapUI,
+#endif
+      RASCS_Connected = RASCS_DONE,
+      RASCS_Disconnected
+}  RASCONNSTATE, *LPRASCONNSTATE;
+
+typedef enum tagRASPROJECTION {
+    RASP_Amb =      0x10000,
+    RASP_PppNbf =   0x803F,
+    RASP_PppIpx =   0x802B,
+    RASP_PppIp =    0x8021,
+#if (WINVER >= 0x500)
+    RASP_PppCcp =   0x80FD,
+#endif
+    RASP_PppLcp =   0xC021,
+    RASP_Slip =     0x20000
+} RASPROJECTION, *LPRASPROJECTION;
+
+DECLARE_HANDLE (HRASCONN);
+typedef  HRASCONN* LPHRASCONN;
+
+typedef struct tagRASCONNW {
+    DWORD dwSize;
+    HRASCONN hrasconn;
+    WCHAR szEntryName[RAS_MaxEntryName + 1];
+#if (WINVER >= 0x400)
+    WCHAR szDeviceType[RAS_MaxDeviceType + 1];
+    WCHAR szDeviceName[RAS_MaxDeviceName + 1];
+#endif
+#if (WINVER >= 0x401)
+    WCHAR szPhonebook[MAX_PATH];
+    DWORD dwSubEntry;
+#endif
+#if (WINVER >= 0x500)
+    GUID guidEntry;
+#endif
+#if (WINVER >= 0x501)
+    DWORD dwFlags;
+    LUID luid;
+#endif
+} RASCONNW, *LPRASCONNW;
+
+typedef struct tagRASCONNA {
+    DWORD dwSize;
+    HRASCONN hrasconn;
+    CHAR szEntryName[RAS_MaxEntryName + 1];
+#if (WINVER >= 0x400)
+    CHAR szDeviceType[RAS_MaxDeviceType + 1];
+    CHAR szDeviceName[RAS_MaxDeviceName + 1];
+#endif
+#if (WINVER >= 0x401)
+    CHAR szPhonebook[MAX_PATH];
+    DWORD dwSubEntry;
+#endif
+#if (WINVER >= 0x500)
+    GUID guidEntry;
+#endif
+#if (WINVER >= 0x501)
+    DWORD dwFlags;
+    LUID luid;
+#endif
+} RASCONNA, *LPRASCONNA;
+
+typedef struct tagRASCONNSTATUSW {
+    DWORD dwSize;
+    RASCONNSTATE rasconnstate;
+    DWORD dwError;
+    WCHAR szDeviceType[RAS_MaxDeviceType + 1];
+    WCHAR szDeviceName[RAS_MaxDeviceName + 1];
+#if (WINVER >= 0x401)
+    WCHAR szPhoneNumber[RAS_MaxPhoneNumber + 1];
+#endif
+} RASCONNSTATUSW, *LPRASCONNSTATUSW;
+
+typedef struct tagRASCONNSTATUSA {
+    DWORD dwSize;
+    RASCONNSTATE rasconnstate;
+    DWORD dwError;
+    CHAR szDeviceType[RAS_MaxDeviceType + 1];
+    CHAR szDeviceName[RAS_MaxDeviceName + 1];
+#if (WINVER >= 0x401)
+    CHAR szPhoneNumber[RAS_MaxPhoneNumber + 1];
+#endif
+} RASCONNSTATUSA, *LPRASCONNSTATUSA;
+
+typedef struct tagRASDIALPARAMSW {
+    DWORD dwSize;
+    WCHAR szEntryName[RAS_MaxEntryName + 1];
+    WCHAR szPhoneNumber[RAS_MaxPhoneNumber + 1];
+    WCHAR szCallbackNumber[RAS_MaxCallbackNumber + 1];
+    WCHAR szUserName[UNLEN + 1];
+    WCHAR szPassword[PWLEN + 1];
+    WCHAR szDomain[DNLEN + 1];
+#if (WINVER >= 0x401)
+    DWORD dwSubEntry;
+    ULONG_PTR dwCallbackId;
+#endif
+} RASDIALPARAMSW, *LPRASDIALPARAMSW;
+
+typedef struct tagRASDIALPARAMSA {
+    DWORD dwSize;
+    CHAR szEntryName[RAS_MaxEntryName + 1];
+    CHAR szPhoneNumber[RAS_MaxPhoneNumber + 1];
+    CHAR szCallbackNumber[RAS_MaxCallbackNumber + 1];
+    CHAR szUserName[UNLEN + 1];
+    CHAR szPassword[PWLEN + 1];
+    CHAR szDomain[DNLEN + 1];
+#if (WINVER >= 0x401)
+    DWORD dwSubEntry;
+    ULONG_PTR dwCallbackId;
+#endif
+} RASDIALPARAMSA, *LPRASDIALPARAMSA;
+
+#if (WINVER >= 0x500)
+typedef struct tagRASEAPINFO {
+    DWORD dwSizeofEapInfo;
+    BYTE *pbEapInfo;
+} RASEAPINFO;
+#endif
+
+typedef struct tagRASDIALEXTENSIONS {
+    DWORD dwSize;
+    DWORD dwfOptions;
+    HWND hwndParent;
+    ULONG_PTR reserved;
+#if (WINVER >= 0x500)
+    ULONG_PTR reserved1;
+    RASEAPINFO RasEapInfo;
+#endif
+} RASDIALEXTENSIONS, *LPRASDIALEXTENSIONS;
+
+typedef struct tagRASENTRYNAMEW {
+    DWORD dwSize;
+    WCHAR szEntryName[RAS_MaxEntryName + 1];
+#if (WINVER >= 0x500)
+    DWORD dwFlags;
+    WCHAR szPhonebookPath[MAX_PATH + 1];
+#endif
+} RASENTRYNAMEW, *LPRASENTRYNAMEW;
+
+typedef struct tagRASENTRYNAMEA {
+    DWORD dwSize;
+    CHAR szEntryName[RAS_MaxEntryName + 1];
+#if (WINVER >= 0x500)
+    DWORD dwFlags;
+    CHAR szPhonebookPath[MAX_PATH + 1];
+#endif
+} RASENTRYNAMEA, *LPRASENTRYNAMEA;
+
+typedef struct tagRASAMBW {
+    DWORD dwSize;
+    DWORD dwError;
+    WCHAR szNetBiosError[NETBIOS_NAME_LEN + 1];
+    BYTE bLana;
+} RASAMBW, *LPRASAMBW;
+
+typedef struct tagRASAMBA {
+    DWORD dwSize;
+    DWORD dwError;
+    CHAR szNetBiosError[NETBIOS_NAME_LEN + 1];
+    BYTE bLana;
+} RASAMBA, *LPRASAMBA;
+
+typedef struct tagRASPPPNBFW {
+    DWORD dwSize;
+    DWORD dwError;
+    DWORD dwNetBiosError;
+    WCHAR szNetBiosError[NETBIOS_NAME_LEN + 1];
+    WCHAR szWorkstationName[NETBIOS_NAME_LEN + 1];
+    BYTE bLana;
+} RASPPPNBFW, *LPRASPPPNBFW;
+
+typedef struct tagRASPPPNBFA {
+    DWORD dwSize;
+    DWORD dwError;
+    DWORD dwNetBiosError;
+    CHAR szNetBiosError[NETBIOS_NAME_LEN + 1];
+    CHAR szWorkstationName[NETBIOS_NAME_LEN + 1];
+    BYTE bLana;
+} RASPPPNBFA, *LPRASPPPNBFA;
+
+typedef struct tagRASIPXW {
+    DWORD dwSize;
+    DWORD dwError;
+    WCHAR szIpxAddress[RAS_MaxIpxAddress + 1];
+} RASPPPIPXW, *LPRASPPPIPXW;
+
+typedef struct tagRASIPXA {
+    DWORD dwSize;
+    DWORD dwError;
+    CHAR szIpxAddress[RAS_MaxIpxAddress + 1];
+} RASPPPIPXA, *LPRASPPPIPXA;
+
+typedef struct tagRASPPPIPW {
+    DWORD dwSize;
+    DWORD dwError;
+    WCHAR szIpAddress[RAS_MaxIpAddress + 1];
+#ifndef WINNT35COMPATIBLE
+    WCHAR szServerIpAddress[RAS_MaxIpAddress + 1];
+#endif
+#if (WINVER >= 0x500)
+    DWORD dwOptions;
+    DWORD dwServerOptions;
+#endif
+} RASPPPIPW, *LPRASPPPIPW;
+
+typedef struct tagRASPPPIPA {
+    DWORD dwSize;
+    DWORD dwError;
+    CHAR szIpAddress[RAS_MaxIpAddress + 1];
+#ifndef WINNT35COMPATIBLE
+    CHAR szServerIpAddress[RAS_MaxIpAddress + 1];
+#endif
+#if (WINVER >= 0x500)
+    DWORD dwOptions;
+    DWORD dwServerOptions;
+#endif
+} RASPPPIPA, *LPRASPPPIPA;
+
+typedef struct tagRASPPPLCPW {
+    DWORD dwSize;
+    BOOL fBundled;
+#if (WINVER >= 0x500)
+    DWORD dwError;
+    DWORD dwAuthenticationProtocol;
+    DWORD dwAuthenticationData;
+    DWORD dwEapTypeId;
+    DWORD dwServerAuthenticationProtocol;
+    DWORD dwServerAuthenticationData;
+    DWORD dwServerEapTypeId;
+    BOOL fMultilink;
+    DWORD dwTerminateReason;
+    DWORD dwServerTerminateReason;
+    WCHAR szReplyMessage[RAS_MaxReplyMessage];
+    DWORD dwOptions;
+    DWORD dwServerOptions;
+#endif
+} RASPPPLCPW, *LPRASPPPLCPW;
+
+typedef struct tagRASPPPLCPA {
+    DWORD dwSize;
+    BOOL fBundled;
+#if (WINVER >= 0x500)
+    DWORD dwError;
+    DWORD dwAuthenticationProtocol;
+    DWORD dwAuthenticationData;
+    DWORD dwEapTypeId;
+    DWORD dwServerAuthenticationProtocol;
+    DWORD dwServerAuthenticationData;
+    DWORD dwServerEapTypeId;
+    BOOL fMultilink;
+    DWORD dwTerminateReason;
+    DWORD dwServerTerminateReason;
+    CHAR szReplyMessage[RAS_MaxReplyMessage];
+    DWORD dwOptions;
+    DWORD dwServerOptions;
+#endif
+} RASPPPLCPA, *LPRASPPPLCPA;
+
+typedef struct tagRASSLIPW {
+    DWORD dwSize;
+    DWORD dwError;
+    WCHAR szIpAddress[RAS_MaxIpAddress + 1];
+} RASSLIPW, *LPRASSLIPW;
+
+
+typedef struct tagRASSLIPA {
+    DWORD dwSize;
+    DWORD dwError;
+    CHAR szIpAddress[RAS_MaxIpAddress + 1];
+} RASSLIPA, *LPRASSLIPA;
+
+typedef struct tagRASDEVINFOW {
+    DWORD dwSize;
+    WCHAR szDeviceType[RAS_MaxDeviceType + 1];
+    WCHAR szDeviceName[RAS_MaxDeviceName + 1];
+} RASDEVINFOW, *LPRASDEVINFOW;
+
+typedef struct tagRASDEVINFOA {
+    DWORD dwSize;
+    CHAR szDeviceType[RAS_MaxDeviceType + 1];
+    CHAR szDeviceName[RAS_MaxDeviceName + 1];
+} RASDEVINFOA, *LPRASDEVINFOA;
+
+typedef struct tagRASCTRYINFO {
+    DWORD dwSize;
+    DWORD dwCountryID;
+    DWORD dwNextCountryID;
+    DWORD dwCountryCode;
+    DWORD dwCountryNameOffset;
+} RASCTRYINFO, *LPRASCTRYINFO;
+
+typedef RASCTRYINFO  RASCTRYINFOW, *LPRASCTRYINFOW;
+typedef RASCTRYINFO  RASCTRYINFOA, *LPRASCTRYINFOA;
+
+typedef struct tagRASIPADDR {
+    BYTE a;
+    BYTE b;
+    BYTE c;
+    BYTE d;
+} RASIPADDR;
+
+typedef struct tagRASENTRYW {
+    DWORD dwSize;
+    DWORD dwfOptions;
+    DWORD dwCountryID;
+    DWORD dwCountryCode;
+    WCHAR szAreaCode[RAS_MaxAreaCode + 1];
+    WCHAR szLocalPhoneNumber[RAS_MaxPhoneNumber + 1];
+    DWORD dwAlternateOffset;
+    RASIPADDR ipaddr;
+    RASIPADDR ipaddrDns;
+    RASIPADDR ipaddrDnsAlt;
+    RASIPADDR ipaddrWins;
+    RASIPADDR ipaddrWinsAlt;
+    DWORD dwFrameSize;
+    DWORD dwfNetProtocols;
+    DWORD dwFramingProtocol;
+    WCHAR szScript[MAX_PATH];
+    WCHAR szAutodialDll[MAX_PATH];
+    WCHAR szAutodialFunc[MAX_PATH];
+    WCHAR szDeviceType[RAS_MaxDeviceType + 1];
+    WCHAR szDeviceName[RAS_MaxDeviceName + 1];
+    WCHAR szX25PadType[RAS_MaxPadType + 1];
+    WCHAR szX25Address[RAS_MaxX25Address + 1];
+    WCHAR szX25Facilities[RAS_MaxFacilities + 1];
+    WCHAR szX25UserData[RAS_MaxUserData + 1];
+    DWORD dwChannels;
+    DWORD dwReserved1;
+    DWORD dwReserved2;
+#if (WINVER >= 0x401)
+    DWORD dwSubEntries;
+    DWORD dwDialMode;
+    DWORD dwDialExtraPercent;
+    DWORD dwDialExtraSampleSeconds;
+    DWORD dwHangUpExtraPercent;
+    DWORD dwHangUpExtraSampleSeconds;
+    DWORD dwIdleDisconnectSeconds;
+#endif
+#if (WINVER >= 0x500)
+    DWORD dwType;
+    DWORD dwEncryptionType;
+    DWORD dwCustomAuthKey;
+    GUID guidId;
+    WCHAR szCustomDialDll[MAX_PATH];
+    DWORD dwVpnStrategy;
+#endif
+#if (WINVER >= 0x501)
+	DWORD dwfOptions2;
+	DWORD dwfOptions3;
+	WCHAR szDnsSuffix[RAS_MaxDnsSuffix];
+	DWORD dwTcpWindowSize;
+	WCHAR szPrerequisitePbk[MAX_PATH];
+	WCHAR szPrerequisiteEntry[RAS_MaxEntryName + 1];
+	DWORD dwRedialCount;
+	DWORD dwRedialPause;
+#endif
+} RASENTRYW, *LPRASENTRYW;
+
+typedef struct tagRASENTRYA {
+    DWORD dwSize;
+    DWORD dwfOptions;
+    DWORD dwCountryID;
+    DWORD dwCountryCode;
+    CHAR szAreaCode[RAS_MaxAreaCode + 1];
+    CHAR szLocalPhoneNumber[RAS_MaxPhoneNumber + 1];
+    DWORD dwAlternateOffset;
+    RASIPADDR ipaddr;
+    RASIPADDR ipaddrDns;
+    RASIPADDR ipaddrDnsAlt;
+    RASIPADDR ipaddrWins;
+    RASIPADDR ipaddrWinsAlt;
+    DWORD dwFrameSize;
+    DWORD dwfNetProtocols;
+    DWORD dwFramingProtocol;
+    CHAR szScript[MAX_PATH];
+    CHAR szAutodialDll[MAX_PATH];
+    CHAR szAutodialFunc[MAX_PATH];
+    CHAR szDeviceType[RAS_MaxDeviceType + 1];
+    CHAR szDeviceName[RAS_MaxDeviceName + 1];
+    CHAR szX25PadType[RAS_MaxPadType + 1];
+    CHAR szX25Address[RAS_MaxX25Address + 1];
+    CHAR szX25Facilities[RAS_MaxFacilities + 1];
+    CHAR szX25UserData[RAS_MaxUserData + 1];
+    DWORD dwChannels;
+    DWORD dwReserved1;
+    DWORD dwReserved2;
+#if (WINVER >= 0x401)
+    DWORD dwSubEntries;
+    DWORD dwDialMode;
+    DWORD dwDialExtraPercent;
+    DWORD dwDialExtraSampleSeconds;
+    DWORD dwHangUpExtraPercent;
+    DWORD dwHangUpExtraSampleSeconds;
+    DWORD dwIdleDisconnectSeconds;
+#endif
+#if (WINVER >= 0x500)
+    DWORD dwType;
+    DWORD dwEncryptionType;
+    DWORD dwCustomAuthKey;
+    GUID guidId;
+    CHAR szCustomDialDll[MAX_PATH];
+    DWORD dwVpnStrategy;
+#endif
+#if (WINVER >= 0x501)
+	DWORD dwfOptions2;
+	DWORD dwfOptions3;
+	CHAR szDnsSuffix[RAS_MaxDnsSuffix];
+	DWORD dwTcpWindowSize;
+	CHAR szPrerequisitePbk[MAX_PATH];
+	CHAR szPrerequisiteEntry[RAS_MaxEntryName + 1];
+	DWORD dwRedialCount;
+	DWORD dwRedialPause;
+#endif
+} RASENTRYA, *LPRASENTRYA;
+
+
+#if (WINVER >= 0x401)
+typedef struct tagRASADPARAMS {
+    DWORD dwSize;
+    HWND hwndOwner;
+    DWORD dwFlags;
+    LONG xDlg;
+    LONG yDlg;
+} RASADPARAMS, *LPRASADPARAMS;
+
+typedef struct tagRASSUBENTRYW {
+    DWORD dwSize;
+    DWORD dwfFlags;
+    WCHAR szDeviceType[RAS_MaxDeviceType + 1];
+    WCHAR szDeviceName[RAS_MaxDeviceName + 1];
+    WCHAR szLocalPhoneNumber[RAS_MaxPhoneNumber + 1];
+    DWORD dwAlternateOffset;
+} RASSUBENTRYW, *LPRASSUBENTRYW;
+
+typedef struct tagRASSUBENTRYA {
+    DWORD dwSize;
+    DWORD dwfFlags;
+    CHAR szDeviceType[RAS_MaxDeviceType + 1];
+    CHAR szDeviceName[RAS_MaxDeviceName + 1];
+    CHAR szLocalPhoneNumber[RAS_MaxPhoneNumber + 1];
+    DWORD dwAlternateOffset;
+} RASSUBENTRYA, *LPRASSUBENTRYA;
+
+typedef struct tagRASCREDENTIALSW {
+    DWORD dwSize;
+    DWORD dwMask;
+    WCHAR szUserName[UNLEN + 1];
+    WCHAR szPassword[PWLEN + 1];
+    WCHAR szDomain[DNLEN + 1];
+} RASCREDENTIALSW, *LPRASCREDENTIALSW;
+
+typedef struct tagRASCREDENTIALSA {
+    DWORD dwSize;
+    DWORD dwMask;
+    CHAR szUserName[UNLEN + 1];
+    CHAR szPassword[PWLEN + 1];
+    CHAR szDomain[DNLEN + 1];
+} RASCREDENTIALSA, *LPRASCREDENTIALSA;
+
+typedef struct tagRASAUTODIALENTRYW {
+    DWORD dwSize;
+    DWORD dwFlags;
+    DWORD dwDialingLocation;
+    WCHAR szEntry[RAS_MaxEntryName + 1];
+} RASAUTODIALENTRYW, *LPRASAUTODIALENTRYW;
+
+typedef struct tagRASAUTODIALENTRYA {
+    DWORD dwSize;
+    DWORD dwFlags;
+    DWORD dwDialingLocation;
+    CHAR szEntry[RAS_MaxEntryName + 1];
+} RASAUTODIALENTRYA, *LPRASAUTODIALENTRYA;
+#endif /* (WINVER >= 0x401) */
+
+#if (WINVER >= 0x500)
+typedef struct tagRASPPPCCP {
+    DWORD dwSize;
+    DWORD dwError;
+    DWORD dwCompressionAlgorithm;
+    DWORD dwOptions;
+    DWORD dwServerCompressionAlgorithm;
+    DWORD dwServerOptions;
+} RASPPPCCP, *LPRASPPPCCP;
+
+typedef struct tagRASEAPUSERIDENTITYW {
+    WCHAR szUserName[UNLEN + 1];
+    DWORD dwSizeofEapInfo;
+    BYTE pbEapInfo[1];
+} RASEAPUSERIDENTITYW, *LPRASEAPUSERIDENTITYW;
+
+typedef struct tagRASEAPUSERIDENTITYA {
+    CHAR szUserName[UNLEN + 1];
+    DWORD dwSizeofEapInfo;
+    BYTE pbEapInfo[1];
+} RASEAPUSERIDENTITYA, *LPRASEAPUSERIDENTITYA;
+
+typedef struct tagRAS_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;
+#endif /* (WINVER >= 0x500) */
+
+
+/* UNICODE typedefs for structures*/
+#ifdef UNICODE
+typedef RASCONNW RASCONN, *LPRASCONN;
+typedef RASENTRYW  RASENTRY, *LPRASENTRY;
+typedef RASCONNSTATUSW RASCONNSTATUS, *LPRASCONNSTATUS;
+typedef RASDIALPARAMSW RASDIALPARAMS, *LPRASDIALPARAMS;
+typedef RASAMBW RASAMB, *LPRASAM;
+typedef RASPPPNBFW RASPPPNBF, *LPRASPPPNBF;
+typedef RASPPPIPXW RASPPPIPX, *LPRASPPPIPX;
+typedef RASPPPIPW RASPPPIP, *LPRASPPPIP;
+typedef RASPPPLCPW RASPPPLCP, *LPRASPPPLCP;
+typedef RASSLIPW RASSLIP, *LPRASSLIP;
+typedef RASDEVINFOW  RASDEVINFO, *LPRASDEVINFO;
+typedef RASENTRYNAMEW RASENTRYNAME, *LPRASENTRYNAME;
+
+#if (WINVER >= 0x401)
+typedef RASSUBENTRYW RASSUBENTRY, *LPRASSUBENTRY;
+typedef RASCREDENTIALSW RASCREDENTIALS, *LPRASCREDENTIALS;
+typedef RASAUTODIALENTRYW RASAUTODIALENTRY, *LPRASAUTODIALENTRY;
+#endif /* (WINVER >= 0x401) */
+
+#if (WINVER >= 0x500)
+typedef RASEAPUSERIDENTITYW RASEAPUSERIDENTITY, *LPRASEAPUSERIDENTITY;
+#endif /* (WINVER >= 0x500) */
+
+#else  /* ! defined UNICODE */
+typedef RASCONNA RASCONN, *LPRASCONN;
+typedef RASENTRYA  RASENTRY, *LPRASENTRY;
+typedef RASCONNSTATUSA RASCONNSTATUS, *LPRASCONNSTATUS;
+typedef RASDIALPARAMSA RASDIALPARAMS, *LPRASDIALPARAMS;
+typedef RASAMBA RASAMB, *LPRASAM;
+typedef RASPPPNBFA RASPPPNBF, *LPRASPPPNBF;
+typedef RASPPPIPXA RASPPPIPX, *LPRASPPPIPX;
+typedef RASPPPIPA RASPPPIP, *LPRASPPPIP;
+typedef RASPPPLCPA RASPPPLCP, *LPRASPPPLCP;
+typedef RASSLIPA RASSLIP, *LPRASSLIP;
+typedef RASDEVINFOA  RASDEVINFO, *LPRASDEVINFO;
+typedef RASENTRYNAMEA RASENTRYNAME, *LPRASENTRYNAME;
+
+#if (WINVER >= 0x401)
+typedef RASSUBENTRYA RASSUBENTRY, *LPRASSUBENTRY;
+typedef RASCREDENTIALSA RASCREDENTIALS, *LPRASCREDENTIALS;
+typedef RASAUTODIALENTRYA RASAUTODIALENTRY, *LPRASAUTODIALENTRY;
+#endif /*(WINVER >= 0x401)*/
+#if (WINVER >= 0x500)
+typedef RASEAPUSERIDENTITYA RASEAPUSERIDENTITY, *LPRASEAPUSERIDENTITY;
+#endif /* (WINVER >= 0x500) */
+#endif /* ! UNICODE */
+
+/* Callback prototypes */
+typedef BOOL (WINAPI * ORASADFUNC) (HWND, LPSTR, DWORD, LPDWORD); /* deprecated */
+typedef VOID (WINAPI * RASDIALFUNC) (UINT, RASCONNSTATE, DWORD);
+typedef VOID (WINAPI * RASDIALFUNC1) (HRASCONN, UINT, RASCONNSTATE, DWORD,
+					DWORD);
+typedef DWORD (WINAPI * RASDIALFUNC2) (ULONG_PTR, DWORD, HRASCONN, UINT,
+					RASCONNSTATE, DWORD, DWORD);
+
+/* External functions */
+DWORD APIENTRY RasDialA (LPRASDIALEXTENSIONS, LPCSTR, LPRASDIALPARAMSA,
+	    		DWORD, LPVOID, LPHRASCONN);
+DWORD APIENTRY RasDialW (LPRASDIALEXTENSIONS, LPCWSTR, LPRASDIALPARAMSW,
+    	        DWORD, LPVOID, LPHRASCONN);
+DWORD APIENTRY RasEnumConnectionsA (LPRASCONNA, LPDWORD, LPDWORD);
+DWORD APIENTRY RasEnumConnectionsW (LPRASCONNW, LPDWORD, LPDWORD);
+DWORD APIENTRY RasEnumEntriesA (LPCSTR, LPCSTR, LPRASENTRYNAMEA, LPDWORD,
+				LPDWORD);
+DWORD APIENTRY RasEnumEntriesW (LPCWSTR, LPCWSTR, LPRASENTRYNAMEW, LPDWORD,
+				LPDWORD);
+DWORD APIENTRY RasGetConnectStatusA (HRASCONN, LPRASCONNSTATUSA);
+DWORD APIENTRY RasGetConnectStatusW (HRASCONN, LPRASCONNSTATUSW);
+DWORD APIENTRY RasGetErrorStringA (UINT, LPSTR, DWORD);
+DWORD APIENTRY RasGetErrorStringW (UINT, LPWSTR, DWORD);
+DWORD APIENTRY RasHangUpA (HRASCONN);
+DWORD APIENTRY RasHangUpW (HRASCONN);
+DWORD APIENTRY RasGetProjectionInfoA (HRASCONN, RASPROJECTION, LPVOID,
+ 				LPDWORD);
+DWORD APIENTRY RasGetProjectionInfoW (HRASCONN, RASPROJECTION, LPVOID,
+				LPDWORD);
+DWORD APIENTRY RasCreatePhonebookEntryA (HWND, LPCSTR);
+DWORD APIENTRY RasCreatePhonebookEntryW (HWND, LPCWSTR);
+DWORD APIENTRY RasEditPhonebookEntryA (HWND, LPCSTR, LPCSTR);
+DWORD APIENTRY RasEditPhonebookEntryW (HWND, LPCWSTR, LPCWSTR);
+DWORD APIENTRY RasSetEntryDialParamsA (LPCSTR, LPRASDIALPARAMSA, BOOL);
+DWORD APIENTRY RasSetEntryDialParamsW (LPCWSTR, LPRASDIALPARAMSW, BOOL);
+DWORD APIENTRY RasGetEntryDialParamsA (LPCSTR, LPRASDIALPARAMSA, LPBOOL);
+DWORD APIENTRY RasGetEntryDialParamsW (LPCWSTR, LPRASDIALPARAMSW, LPBOOL);
+DWORD APIENTRY RasEnumDevicesA (LPRASDEVINFOA, LPDWORD, LPDWORD);
+DWORD APIENTRY RasEnumDevicesW (LPRASDEVINFOW, LPDWORD, LPDWORD);
+DWORD APIENTRY RasGetCountryInfoA (LPRASCTRYINFOA, LPDWORD);
+DWORD APIENTRY RasGetCountryInfoW (LPRASCTRYINFOW, LPDWORD);
+DWORD APIENTRY RasGetEntryPropertiesA (LPCSTR, LPCSTR, LPRASENTRYA, LPDWORD,
+				 LPBYTE, LPDWORD);
+DWORD APIENTRY RasGetEntryPropertiesW (LPCWSTR, LPCWSTR, LPRASENTRYW,
+				 LPDWORD, LPBYTE, LPDWORD);
+DWORD APIENTRY RasSetEntryPropertiesA (LPCSTR, LPCSTR, LPRASENTRYA, DWORD,
+				 LPBYTE, DWORD);
+DWORD APIENTRY RasSetEntryPropertiesW (LPCWSTR, LPCWSTR, LPRASENTRYW, DWORD,
+				 LPBYTE, DWORD);
+DWORD APIENTRY RasRenameEntryA (LPCSTR, LPCSTR, LPCSTR);
+DWORD APIENTRY RasRenameEntryW (LPCWSTR, LPCWSTR, LPCWSTR);
+DWORD APIENTRY RasDeleteEntryA (LPCSTR, LPCSTR);
+DWORD APIENTRY RasDeleteEntryW (LPCWSTR, LPCWSTR);
+DWORD APIENTRY RasValidateEntryNameA (LPCSTR, LPCSTR);
+DWORD APIENTRY RasValidateEntryNameW (LPCWSTR, LPCWSTR);
+
+#if (WINVER >= 0x401)
+typedef BOOL (WINAPI * RASADFUNCA) (LPSTR, LPSTR, LPRASADPARAMS, LPDWORD);
+typedef BOOL (WINAPI * RASADFUNCW) (LPWSTR, LPWSTR, LPRASADPARAMS, LPDWORD);
+
+DWORD APIENTRY RasGetSubEntryHandleA (HRASCONN, DWORD, LPHRASCONN);
+DWORD APIENTRY RasGetSubEntryHandleW (HRASCONN, DWORD, LPHRASCONN);
+DWORD APIENTRY RasGetCredentialsA (LPCSTR, LPCSTR, LPRASCREDENTIALSA);
+DWORD APIENTRY RasGetCredentialsW (LPCWSTR, LPCWSTR, LPRASCREDENTIALSW);
+DWORD APIENTRY RasSetCredentialsA (LPCSTR, LPCSTR, LPRASCREDENTIALSA, BOOL);
+DWORD APIENTRY RasSetCredentialsW (LPCWSTR, LPCWSTR, LPRASCREDENTIALSW, BOOL);
+DWORD APIENTRY RasConnectionNotificationA (HRASCONN, HANDLE, DWORD);
+DWORD APIENTRY RasConnectionNotificationW (HRASCONN, HANDLE, DWORD);
+DWORD APIENTRY RasGetSubEntryPropertiesA (LPCSTR, LPCSTR, DWORD,
+					LPRASSUBENTRYA, LPDWORD, LPBYTE, LPDWORD);
+DWORD APIENTRY RasGetSubEntryPropertiesW (LPCWSTR, LPCWSTR, DWORD,
+					LPRASSUBENTRYW, LPDWORD, LPBYTE, LPDWORD);
+DWORD APIENTRY RasSetSubEntryPropertiesA (LPCSTR, LPCSTR, DWORD,
+					LPRASSUBENTRYA, DWORD, LPBYTE, DWORD);
+DWORD APIENTRY RasSetSubEntryPropertiesW (LPCWSTR, LPCWSTR, DWORD,
+					LPRASSUBENTRYW, DWORD, LPBYTE, DWORD);
+DWORD APIENTRY RasGetAutodialAddressA (LPCSTR, LPDWORD, LPRASAUTODIALENTRYA,
+			        LPDWORD, LPDWORD);
+DWORD APIENTRY RasGetAutodialAddressW (LPCWSTR, LPDWORD,
+					LPRASAUTODIALENTRYW, LPDWORD, LPDWORD);
+DWORD APIENTRY RasSetAutodialAddressA (LPCSTR, DWORD, LPRASAUTODIALENTRYA,
+					DWORD, DWORD);
+DWORD APIENTRY RasSetAutodialAddressW (LPCWSTR, DWORD, LPRASAUTODIALENTRYW,
+					DWORD, DWORD);
+DWORD APIENTRY RasEnumAutodialAddressesA (LPSTR *, LPDWORD, LPDWORD);
+DWORD APIENTRY RasEnumAutodialAddressesW (LPWSTR *, LPDWORD, LPDWORD);
+DWORD APIENTRY RasGetAutodialEnableA (DWORD, LPBOOL);
+DWORD APIENTRY RasGetAutodialEnableW (DWORD, LPBOOL);
+DWORD APIENTRY RasSetAutodialEnableA (DWORD, BOOL);
+DWORD APIENTRY RasSetAutodialEnableW (DWORD, BOOL);
+DWORD APIENTRY RasGetAutodialParamA (DWORD, LPVOID, LPDWORD);
+DWORD APIENTRY RasGetAutodialParamW (DWORD, LPVOID, LPDWORD);
+DWORD APIENTRY RasSetAutodialParamA (DWORD, LPVOID, DWORD);
+DWORD APIENTRY RasSetAutodialParamW (DWORD, LPVOID, DWORD);
+#endif
+
+#if (WINVER >= 0x500)
+typedef DWORD (WINAPI * RasCustomHangUpFn) (HRASCONN);
+typedef DWORD (WINAPI * RasCustomDeleteEntryNotifyFn) (LPCTSTR,	LPCTSTR, DWORD);
+typedef DWORD (WINAPI * RasCustomDialFn) (HINSTANCE, LPRASDIALEXTENSIONS,
+				LPCTSTR, LPRASDIALPARAMS, DWORD, LPVOID, LPHRASCONN, DWORD);
+
+DWORD APIENTRY RasInvokeEapUI (HRASCONN, DWORD, LPRASDIALEXTENSIONS, HWND);
+DWORD APIENTRY RasGetLinkStatistics (HRASCONN, DWORD, RAS_STATS*);
+DWORD APIENTRY RasGetConnectionStatistics (HRASCONN, RAS_STATS*);
+DWORD APIENTRY RasClearLinkStatistics (HRASCONN, DWORD);
+DWORD APIENTRY RasClearConnectionStatistics (HRASCONN);
+DWORD APIENTRY RasGetEapUserDataA (HANDLE, LPCSTR, LPCSTR, BYTE*, DWORD*);
+DWORD APIENTRY RasGetEapUserDataW (HANDLE, LPCWSTR, LPCWSTR, BYTE*, DWORD*);
+DWORD APIENTRY RasSetEapUserDataA (HANDLE, LPCSTR, LPCSTR, BYTE*, DWORD);
+DWORD APIENTRY RasSetEapUserDataW (HANDLE, LPCWSTR, LPCWSTR, BYTE*, DWORD);
+DWORD APIENTRY RasGetCustomAuthDataA (LPCSTR,	LPCSTR,	BYTE*,	DWORD*);
+DWORD APIENTRY RasGetCustomAuthDataW (LPCWSTR, LPCWSTR, BYTE*, DWORD*);
+DWORD APIENTRY RasSetCustomAuthDataA (LPCSTR,	LPCSTR,	BYTE*,	DWORD);
+DWORD APIENTRY RasSetCustomAuthDataW (LPCWSTR, LPCWSTR, BYTE*, DWORD);
+DWORD APIENTRY RasGetEapUserIdentityW (LPCWSTR, LPCWSTR, DWORD, HWND, LPRASEAPUSERIDENTITYW*);
+DWORD APIENTRY RasGetEapUserIdentityA (LPCSTR, LPCSTR, DWORD, HWND, LPRASEAPUSERIDENTITYA*);
+VOID APIENTRY RasFreeEapUserIdentityW (LPRASEAPUSERIDENTITYW);
+VOID APIENTRY RasFreeEapUserIdentityA (LPRASEAPUSERIDENTITYA);
+#endif  /* (WINVER >= 0x500) */
+
+
+/* UNICODE defines for functions */
+#ifdef UNICODE
+#define RasDial RasDialW
+#define RasEnumConnections RasEnumConnectionsW
+#define RasEnumEntries RasEnumEntriesW
+#define RasGetConnectStatus RasGetConnectStatusW
+#define RasGetErrorString RasGetErrorStringW
+#define RasHangUp RasHangUpW
+#define RasGetProjectionInfo RasGetProjectionInfoW
+#define RasCreatePhonebookEntry RasCreatePhonebookEntryW
+#define RasEditPhonebookEntry RasEditPhonebookEntryW
+#define RasSetEntryDialParams RasSetEntryDialParamsW
+#define RasGetEntryDialParams RasGetEntryDialParamsW
+#define RasEnumDevices RasEnumDevicesW
+#define RasGetCountryInfo RasGetCountryInfoW
+#define RasGetEntryProperties RasGetEntryPropertiesW
+#define RasSetEntryProperties RasSetEntryPropertiesW
+#define RasRenameEntry RasRenameEntryW
+#define RasDeleteEntry RasDeleteEntryW
+#define RasValidateEntryName RasValidateEntryNameW
+#if (WINVER >= 0x401)
+#define RASADFUNC RASADFUNCW
+#define RasGetSubEntryHandle RasGetSubEntryHandleW
+#define RasConnectionNotification RasConnectionNotificationW
+#define RasGetSubEntryProperties RasGetSubEntryPropertiesW
+#define RasSetSubEntryProperties RasSetSubEntryPropertiesW
+#define RasGetCredentials RasGetCredentialsW
+#define RasSetCredentials RasSetCredentialsW
+#define RasGetAutodialAddress RasGetAutodialAddressW
+#define RasSetAutodialAddress RasSetAutodialAddressW
+#define RasEnumAutodialAddresses RasEnumAutodialAddressesW
+#define RasGetAutodialEnable RasGetAutodialEnableW
+#define RasSetAutodialEnable RasSetAutodialEnableW
+#define RasGetAutodialParam RasGetAutodialParamW
+#define RasSetAutodialParam RasSetAutodialParamW
+#endif /* (WINVER >= 0x401) */
+#if (WINVER >= 0x500)
+#define RasGetEapUserData RasGetEapUserDataW
+#define RasSetEapUserData RasSetEapUserDataW
+#define RasGetCustomAuthData RasGetCustomAuthDataW
+#define RasSetCustomAuthData RasSetCustomAuthDataW
+#define RasGetEapUserIdentity RasGetEapUserIdentityW
+#define RasFreeEapUserIdentity RasFreeEapUserIdentityW
+#endif /* (WINVER >= 0x500) */
+
+#else  /* ! defined UNICODE */
+#define RasDial RasDialA
+#define RasEnumConnections RasEnumConnectionsA
+#define RasEnumEntries RasEnumEntriesA
+#define RasGetConnectStatus RasGetConnectStatusA
+#define RasGetErrorString RasGetErrorStringA
+#define RasHangUp RasHangUpA
+#define RasGetProjectionInfo RasGetProjectionInfoA
+#define RasCreatePhonebookEntry RasCreatePhonebookEntryA
+#define RasEditPhonebookEntry RasEditPhonebookEntryA
+#define RasSetEntryDialParams RasSetEntryDialParamsA
+#define RasGetEntryDialParams RasGetEntryDialParamsA
+#define RasEnumDevices RasEnumDevicesA
+#define RasGetCountryInfo RasGetCountryInfoA
+#define RasGetEntryProperties RasGetEntryPropertiesA
+#define RasSetEntryProperties RasSetEntryPropertiesA
+#define RasRenameEntry RasRenameEntryA
+#define RasDeleteEntry RasDeleteEntryA
+#define RasValidateEntryName RasValidateEntryNameA
+
+#if (WINVER >= 0x401)
+#define RASADFUNC RASADFUNCA
+#define RasGetSubEntryHandle RasGetSubEntryHandleA
+#define RasConnectionNotification RasConnectionNotificationA
+#define RasGetSubEntryProperties RasGetSubEntryPropertiesA
+#define RasSetSubEntryProperties RasSetSubEntryPropertiesA
+#define RasGetCredentials RasGetCredentialsA
+#define RasSetCredentials RasSetCredentialsA
+#define RasGetAutodialAddress RasGetAutodialAddressA
+#define RasSetAutodialAddress RasSetAutodialAddressA
+#define RasEnumAutodialAddressesRasEnumAutodialAddressesA
+#define RasGetAutodialEnable RasGetAutodialEnableA
+#define RasSetAutodialEnable RasSetAutodialEnableA
+#define RasGetAutodialParam RasGetAutodialParamA
+#define RasSetAutodialParam RasSetAutodialParamA
+#endif /*(WINVER >= 0x401)*/
+
+#if (WINVER >= 0x500)
+#define RasGetEapUserData RasGetEapUserDataA
+#define RasSetEapUserData RasSetEapUserDataA
+#define RasGetCustomAuthData RasGetCustomAuthDataA
+#define RasSetCustomAuthData RasSetCustomAuthDataA
+#define RasGetEapUserIdentity RasGetEapUserIdentityA
+#define RasFreeEapUserIdentity RasFreeEapUserIdentityA
+#endif /* (WINVER >= 0x500) */
+#endif /* ! UNICODE */
+
+#ifdef __cplusplus
+}
+#endif
+#include <poppack.h>
+#endif /* _RAS_H */
Index: Daodan/MinGW/include/rasdlg.h
===================================================================
--- Daodan/MinGW/include/rasdlg.h	(revision 1046)
+++ Daodan/MinGW/include/rasdlg.h	(revision 1046)
@@ -0,0 +1,152 @@
+#ifndef _RASDLG_H
+#define _RASDLG_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <ras.h>
+
+#define RASPBDEVENT_AddEntry	1
+#define RASPBDEVENT_EditEntry	2
+#define RASPBDEVENT_RemoveEntry	3
+#define RASPBDEVENT_DialEntry	4
+#define RASPBDEVENT_EditGlobals	5
+#define RASPBDEVENT_NoUser	6
+#define RASPBDEVENT_NoUserEdit	7
+
+#define RASPBDFLAG_PositionDlg	1
+#define RASPBDFLAG_ForceCloseOnDial	2
+#define RASPBDFLAG_NoUser	16
+
+#define RASEDFLAG_PositionDlg	1
+#define RASEDFLAG_NewEntry	2
+#define RASEDFLAG_CloneEntry	4
+
+#define RASDDFLAG_PositionDlg	1
+
+#ifndef RC_INVOKED
+#include <pshpack4.h>
+
+typedef struct tagRASENTRYDLGA
+{
+	DWORD dwSize;
+	HWND  hwndOwner;
+	DWORD dwFlags;
+	LONG  xDlg;
+	LONG  yDlg;
+	CHAR  szEntry[RAS_MaxEntryName + 1];
+	DWORD dwError;
+	ULONG_PTR reserved;
+	ULONG_PTR reserved2;
+} RASENTRYDLGA, *LPRASENTRYDLGA;
+typedef struct tagRASENTRYDLGW
+{
+	DWORD dwSize;
+	HWND  hwndOwner;
+	DWORD dwFlags;
+	LONG  xDlg;
+	LONG  yDlg;
+	WCHAR szEntry[RAS_MaxEntryName + 1];
+	DWORD dwError;
+	ULONG_PTR reserved;
+	ULONG_PTR reserved2;
+} RASENTRYDLGW, *LPRASENTRYDLGW;
+
+typedef struct tagRASDIALDLG
+{
+	DWORD dwSize;
+	HWND  hwndOwner;
+	DWORD dwFlags;
+	LONG  xDlg;
+	LONG  yDlg;
+	DWORD dwSubEntry;
+	DWORD dwError;
+	ULONG_PTR reserved;
+	ULONG_PTR reserved2;
+} RASDIALDLG, *LPRASDIALDLG;
+
+/* Application-defined callback functions */
+typedef VOID (WINAPI* RASPBDLGFUNCW)(DWORD, DWORD, LPWSTR, LPVOID);
+typedef VOID (WINAPI* RASPBDLGFUNCA)(DWORD, DWORD, LPSTR, LPVOID);
+
+typedef struct tagRASPBDLGA
+{
+	DWORD         dwSize;
+	HWND          hwndOwner;
+	DWORD         dwFlags;
+	LONG          xDlg;
+	LONG          yDlg;
+	ULONG_PTR     dwCallbackId;
+	RASPBDLGFUNCA pCallback;
+	DWORD         dwError;
+	ULONG_PTR     reserved;
+	ULONG_PTR     reserved2;
+} RASPBDLGA, *LPRASPBDLGA;
+typedef struct tagRASPBDLGW
+{
+	DWORD         dwSize;
+	HWND          hwndOwner;
+	DWORD         dwFlags;
+	LONG          xDlg;
+	LONG          yDlg;
+	ULONG_PTR     dwCallbackId;
+	RASPBDLGFUNCW pCallback;
+	DWORD         dwError;
+	ULONG_PTR     reserved;
+	ULONG_PTR     reserved2;
+} RASPBDLGW, *LPRASPBDLGW;
+
+typedef struct tagRASNOUSERA
+{
+	DWORD dwSize;
+	DWORD dwFlags;
+	DWORD dwTimeoutMs;
+	CHAR  szUserName[UNLEN + 1];
+	CHAR  szPassword[PWLEN + 1];
+	CHAR  szDomain[DNLEN + 1];
+} RASNOUSERA, *LPRASNOUSERA;
+typedef struct tagRASNOUSERW
+{
+	DWORD dwSize;
+	DWORD dwFlags;
+	DWORD dwTimeoutMs;
+	WCHAR szUserName[UNLEN + 1];
+	WCHAR szPassword[PWLEN + 1];
+	WCHAR szDomain[DNLEN + 1];
+} RASNOUSERW, *LPRASNOUSERW ;
+
+#include <poppack.h>
+
+BOOL APIENTRY RasDialDlgA(LPSTR,LPSTR,LPSTR,LPRASDIALDLG);
+BOOL APIENTRY RasDialDlgW(LPWSTR,LPWSTR,LPWSTR,LPRASDIALDLG);
+BOOL APIENTRY RasEntryDlgA(LPSTR,LPSTR,LPRASENTRYDLGA);
+BOOL APIENTRY RasEntryDlgW(LPWSTR,LPWSTR,LPRASENTRYDLGW);
+BOOL APIENTRY RasPhonebookDlgA(LPSTR,LPSTR,LPRASPBDLGA);
+BOOL APIENTRY RasPhonebookDlgW(LPWSTR,LPWSTR,LPRASPBDLGW);
+
+#ifdef UNICODE
+typedef RASENTRYDLGW	RASENTRYDLG, *LPRASENTRYDLG;
+typedef RASPBDLGW	RASPBDLG, *LPRASPBDLG;
+typedef RASNOUSERW	RASNOUSER, *LPRASNOUSER;
+#define RasDialDlg	RasDialDlgW
+#define RasEntryDlg	RasEntryDlgW
+#define RasPhonebookDlg	RasPhonebookDlgW
+#else
+typedef RASENTRYDLGA	RASENTRYDLG, *LPRASENTRYDLG;
+typedef RASPBDLGA	RASPBDLG, *LPRASPBDLG;
+typedef RASNOUSERA	RASNOUSER, *LPRASNOUSER;
+#define RasDialDlg	RasDialDlgA
+#define RasEntryDlg	RasEntryDlgA
+#define RasPhonebookDlg	RasPhonebookDlgA
+#endif /* UNICODE */
+
+#endif /* RC_INVOKED */
+
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/raserror.h
===================================================================
--- Daodan/MinGW/include/raserror.h	(revision 1046)
+++ Daodan/MinGW/include/raserror.h	(revision 1046)
@@ -0,0 +1,210 @@
+#ifndef _RASERROR_H
+#define _RASERROR_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#define RASBASE 600
+#define SUCCESS 0
+#define PENDING                              (RASBASE+0)
+#define ERROR_INVALID_PORT_HANDLE            (RASBASE+1)
+#define ERROR_PORT_ALREADY_OPEN              (RASBASE+2)
+#define ERROR_BUFFER_TOO_SMALL               (RASBASE+3)
+#define ERROR_WRONG_INFO_SPECIFIED           (RASBASE+4)
+#define ERROR_CANNOT_SET_PORT_INFO           (RASBASE+5)
+#define ERROR_PORT_NOT_CONNECTED             (RASBASE+6)
+#define ERROR_EVENT_INVALID                  (RASBASE+7)
+#define ERROR_DEVICE_DOES_NOT_EXIST          (RASBASE+8)
+#define ERROR_DEVICETYPE_DOES_NOT_EXIST      (RASBASE+9)
+#define ERROR_BUFFER_INVALID                 (RASBASE+10)
+#define ERROR_ROUTE_NOT_AVAILABLE            (RASBASE+11)
+#define ERROR_ROUTE_NOT_ALLOCATED            (RASBASE+12)
+#define ERROR_INVALID_COMPRESSION_SPECIFIED  (RASBASE+13)
+#define ERROR_OUT_OF_BUFFERS                 (RASBASE+14)
+#define ERROR_PORT_NOT_FOUND                 (RASBASE+15)
+#define ERROR_ASYNC_REQUEST_PENDING          (RASBASE+16)
+#define ERROR_ALREADY_DISCONNECTING          (RASBASE+17)
+#define ERROR_PORT_NOT_OPEN                  (RASBASE+18)
+#define ERROR_PORT_DISCONNECTED              (RASBASE+19)
+#define ERROR_NO_ENDPOINTS                   (RASBASE+20)
+#define ERROR_CANNOT_OPEN_PHONEBOOK          (RASBASE+21)
+#define ERROR_CANNOT_LOAD_PHONEBOOK          (RASBASE+22)
+#define ERROR_CANNOT_FIND_PHONEBOOK_ENTRY    (RASBASE+23)
+#define ERROR_CANNOT_WRITE_PHONEBOOK         (RASBASE+24)
+#define ERROR_CORRUPT_PHONEBOOK              (RASBASE+25)
+#define ERROR_CANNOT_LOAD_STRING             (RASBASE+26)
+#define ERROR_KEY_NOT_FOUND                  (RASBASE+27)
+#define ERROR_DISCONNECTION                  (RASBASE+28)
+#define ERROR_REMOTE_DISCONNECTION           (RASBASE+29)
+#define ERROR_HARDWARE_FAILURE               (RASBASE+30)
+#define ERROR_USER_DISCONNECTION             (RASBASE+31)
+#define ERROR_INVALID_SIZE                   (RASBASE+32)
+#define ERROR_PORT_NOT_AVAILABLE             (RASBASE+33)
+#define ERROR_CANNOT_PROJECT_CLIENT          (RASBASE+34)
+#define ERROR_UNKNOWN                        (RASBASE+35)
+#define ERROR_WRONG_DEVICE_ATTACHED          (RASBASE+36)
+#define ERROR_BAD_STRING                     (RASBASE+37)
+#define ERROR_REQUEST_TIMEOUT                (RASBASE+38)
+#define ERROR_CANNOT_GET_LANA                (RASBASE+39)
+#define ERROR_NETBIOS_ERROR                  (RASBASE+40)
+#define ERROR_SERVER_OUT_OF_RESOURCES        (RASBASE+41)
+#define ERROR_NAME_EXISTS_ON_NET             (RASBASE+42)
+#define ERROR_SERVER_GENERAL_NET_FAILURE     (RASBASE+43)
+#define WARNING_MSG_ALIAS_NOT_ADDED          (RASBASE+44)
+#define ERROR_AUTH_INTERNAL                  (RASBASE+45)
+#define ERROR_RESTRICTED_LOGON_HOURS         (RASBASE+46)
+#define ERROR_ACCT_DISABLED                  (RASBASE+47)
+#define ERROR_PASSWD_EXPIRED                 (RASBASE+48)
+#define ERROR_NO_DIALIN_PERMISSION           (RASBASE+49)
+#define ERROR_SERVER_NOT_RESPONDING          (RASBASE+50)
+#define ERROR_FROM_DEVICE                    (RASBASE+51)
+#define ERROR_UNRECOGNIZED_RESPONSE          (RASBASE+52)
+#define ERROR_MACRO_NOT_FOUND                (RASBASE+53)
+#define ERROR_MACRO_NOT_DEFINED              (RASBASE+54)
+#define ERROR_MESSAGE_MACRO_NOT_FOUND        (RASBASE+55)
+#define ERROR_DEFAULTOFF_MACRO_NOT_FOUND     (RASBASE+56)
+#define ERROR_FILE_COULD_NOT_BE_OPENED       (RASBASE+57)
+#define ERROR_DEVICENAME_TOO_LONG            (RASBASE+58)
+#define ERROR_DEVICENAME_NOT_FOUND           (RASBASE+59)
+#define ERROR_NO_RESPONSES                   (RASBASE+60)
+#define ERROR_NO_COMMAND_FOUND               (RASBASE+61)
+#define ERROR_WRONG_KEY_SPECIFIED            (RASBASE+62)
+#define ERROR_UNKNOWN_DEVICE_TYPE            (RASBASE+63)
+#define ERROR_ALLOCATING_MEMORY              (RASBASE+64)
+#define ERROR_PORT_NOT_CONFIGURED            (RASBASE+65)
+#define ERROR_DEVICE_NOT_READY               (RASBASE+66)
+#define ERROR_READING_INI_FILE               (RASBASE+67)
+#define ERROR_NO_CONNECTION                  (RASBASE+68)
+#define ERROR_BAD_USAGE_IN_INI_FILE          (RASBASE+69)
+#define ERROR_READING_SECTIONNAME            (RASBASE+70)
+#define ERROR_READING_DEVICETYPE             (RASBASE+71)
+#define ERROR_READING_DEVICENAME             (RASBASE+72)
+#define ERROR_READING_USAGE                  (RASBASE+73)
+#define ERROR_READING_MAXCONNECTBPS          (RASBASE+74)
+#define ERROR_READING_MAXCARRIERBPS          (RASBASE+75)
+#define ERROR_LINE_BUSY                      (RASBASE+76)
+#define ERROR_VOICE_ANSWER                   (RASBASE+77)
+#define ERROR_NO_ANSWER                      (RASBASE+78)
+#define ERROR_NO_CARRIER                     (RASBASE+79)
+#define ERROR_NO_DIALTONE                    (RASBASE+80)
+#define ERROR_IN_COMMAND                     (RASBASE+81)
+#define ERROR_WRITING_SECTIONNAME            (RASBASE+82)
+#define ERROR_WRITING_DEVICETYPE             (RASBASE+83)
+#define ERROR_WRITING_DEVICENAME             (RASBASE+84)
+#define ERROR_WRITING_MAXCONNECTBPS          (RASBASE+85)
+#define ERROR_WRITING_MAXCARRIERBPS          (RASBASE+86)
+#define ERROR_WRITING_USAGE                  (RASBASE+87)
+#define ERROR_WRITING_DEFAULTOFF             (RASBASE+88)
+#define ERROR_READING_DEFAULTOFF             (RASBASE+89)
+#define ERROR_EMPTY_INI_FILE                 (RASBASE+90)
+#define ERROR_AUTHENTICATION_FAILURE         (RASBASE+91)
+#define ERROR_PORT_OR_DEVICE                 (RASBASE+92)
+#define ERROR_NOT_BINARY_MACRO               (RASBASE+93)
+#define ERROR_DCB_NOT_FOUND                  (RASBASE+94)
+#define ERROR_STATE_MACHINES_NOT_STARTED     (RASBASE+95)
+#define ERROR_STATE_MACHINES_ALREADY_STARTED (RASBASE+96)
+#define ERROR_PARTIAL_RESPONSE_LOOPING       (RASBASE+97)
+#define ERROR_UNKNOWN_RESPONSE_KEY           (RASBASE+98)
+#define ERROR_RECV_BUF_FULL                  (RASBASE+99)
+#define ERROR_CMD_TOO_LONG                   (RASBASE+100)
+#define ERROR_UNSUPPORTED_BPS                (RASBASE+101)
+#define ERROR_UNEXPECTED_RESPONSE            (RASBASE+102)
+#define ERROR_INTERACTIVE_MODE               (RASBASE+103)
+#define ERROR_BAD_CALLBACK_NUMBER            (RASBASE+104)
+#define ERROR_INVALID_AUTH_STATE             (RASBASE+105)
+#define ERROR_WRITING_INITBPS                (RASBASE+106)
+#define ERROR_X25_DIAGNOSTIC                 (RASBASE+107)
+#define ERROR_ACCT_EXPIRED                   (RASBASE+108)
+#define ERROR_CHANGING_PASSWORD              (RASBASE+109)
+#define ERROR_OVERRUN                        (RASBASE+110)
+#define ERROR_RASMAN_CANNOT_INITIALIZE	     (RASBASE+111)
+#define ERROR_BIPLEX_PORT_NOT_AVAILABLE      (RASBASE+112)
+#define ERROR_NO_ACTIVE_ISDN_LINES           (RASBASE+113)
+#define ERROR_NO_ISDN_CHANNELS_AVAILABLE     (RASBASE+114)
+#define ERROR_TOO_MANY_LINE_ERRORS           (RASBASE+115)
+#define ERROR_IP_CONFIGURATION               (RASBASE+116)
+#define ERROR_NO_IP_ADDRESSES                (RASBASE+117)
+#define ERROR_PPP_TIMEOUT                    (RASBASE+118)
+#define ERROR_PPP_REMOTE_TERMINATED          (RASBASE+119)
+#define ERROR_PPP_NO_PROTOCOLS_CONFIGURED    (RASBASE+120)
+#define ERROR_PPP_NO_RESPONSE                (RASBASE+121)
+#define ERROR_PPP_INVALID_PACKET             (RASBASE+122)
+#define ERROR_PHONE_NUMBER_TOO_LONG          (RASBASE+123)
+#define ERROR_IPXCP_NO_DIALOUT_CONFIGURED    (RASBASE+124)
+#define ERROR_IPXCP_NO_DIALIN_CONFIGURED     (RASBASE+125)
+#define ERROR_IPXCP_DIALOUT_ALREADY_ACTIVE   (RASBASE+126)
+#define ERROR_ACCESSING_TCPCFGDLL            (RASBASE+127)
+#define ERROR_NO_IP_RAS_ADAPTER              (RASBASE+128)
+#define ERROR_SLIP_REQUIRES_IP               (RASBASE+129)
+#define ERROR_PROJECTION_NOT_COMPLETE        (RASBASE+130)
+#define ERROR_PROTOCOL_NOT_CONFIGURED        (RASBASE+131)
+#define ERROR_PPP_NOT_CONVERGING             (RASBASE+132)
+#define ERROR_PPP_CP_REJECTED                (RASBASE+133)
+#define ERROR_PPP_LCP_TERMINATED             (RASBASE+134)
+#define ERROR_PPP_REQUIRED_ADDRESS_REJECTED  (RASBASE+135)
+#define ERROR_PPP_NCP_TERMINATED             (RASBASE+136)
+#define ERROR_PPP_LOOPBACK_DETECTED          (RASBASE+137)
+#define ERROR_PPP_NO_ADDRESS_ASSIGNED        (RASBASE+138)
+#define ERROR_CANNOT_USE_LOGON_CREDENTIALS   (RASBASE+139)
+#define ERROR_TAPI_CONFIGURATION             (RASBASE+140)
+#define ERROR_NO_LOCAL_ENCRYPTION            (RASBASE+141)
+#define ERROR_NO_REMOTE_ENCRYPTION           (RASBASE+142)
+#define ERROR_REMOTE_REQUIRES_ENCRYPTION     (RASBASE+143)
+#define ERROR_IPXCP_NET_NUMBER_CONFLICT      (RASBASE+144)
+#define ERROR_INVALID_SMM                    (RASBASE+145)
+#define ERROR_SMM_UNINITIALIZED              (RASBASE+146)
+#define ERROR_NO_MAC_FOR_PORT                (RASBASE+147)
+#define ERROR_SMM_TIMEOUT                    (RASBASE+148)
+#define ERROR_BAD_PHONE_NUMBER               (RASBASE+149)
+#define ERROR_WRONG_MODULE                   (RASBASE+150)
+#define ERROR_INVALID_CALLBACK_NUMBER        (RASBASE+151)
+
+#define ERROR_SCRIPT_SYNTAX                  (RASBASE+152)
+#define ERROR_HANGUP_FAILED                  (RASBASE+153)
+#define ERROR_BUNDLE_NOT_FOUND               (RASBASE+154)
+#define ERROR_CANNOT_DO_CUSTOMDIAL           (RASBASE+155)
+#define ERROR_DIAL_ALREADY_IN_PROGRESS       (RASBASE+156)
+#define ERROR_RASAUTO_CANNOT_INITIALIZE	     (RASBASE+157)
+#define ERROR_CONNECTION_ALREADY_SHARED      (RASBASE+158)
+#define ERROR_SHARING_CHANGE_FAILED          (RASBASE+159)
+#define ERROR_SHARING_ROUTER_INSTALL         (RASBASE+160)
+#define ERROR_SHARE_CONNECTION_FAILED        (RASBASE+161)
+#define ERROR_SHARING_PRIVATE_INSTALL        (RASBASE+162)
+#define ERROR_CANNOT_SHARE_CONNECTION        (RASBASE+163)
+#define ERROR_NO_SMART_CARD_READER           (RASBASE+164)
+#define ERROR_SHARING_ADDRESS_EXISTS         (RASBASE+165)
+#define ERROR_NO_CERTIFICATE                 (RASBASE+166)
+#define ERROR_SHARING_MULTIPLE_ADDRESSES     (RASBASE+167)
+#define ERROR_FAILED_TO_ENCRYPT              (RASBASE+168)
+#define ERROR_BAD_ADDRESS_SPECIFIED          (RASBASE+169)
+#define ERROR_CONNECTION_REJECT              (RASBASE+170)
+#define ERROR_CONGESTION                     (RASBASE+171)
+#define ERROR_INCOMPATIBLE                   (RASBASE+172)
+#define ERROR_NUMBERCHANGED                  (RASBASE+173)
+#define ERROR_TEMPFAILURE                    (RASBASE+174)
+#define ERROR_BLOCKED                        (RASBASE+175)
+#define ERROR_DONOTDISTURB                   (RASBASE+176)
+#define ERROR_OUTOFORDER                     (RASBASE+177)
+#define ERROR_UNABLE_TO_AUTHENTICATE_SERVER  (RASBASE+178)
+#define ERROR_SMART_CARD_REQUIRED            (RASBASE+179)
+#define ERROR_INVALID_FUNCTION_FOR_ENTRY     (RASBASE+180)
+#define ERROR_CERT_FOR_ENCRYPTION_NOT_FOUND  (RASBASE+181)
+#define ERROR_SHARING_RRAS_CONFLICT          (RASBASE+182)
+#define ERROR_SHARING_NO_PRIVATE_LAN         (RASBASE+183)
+#define ERROR_NO_DIFF_USER_AT_LOGON          (RASBASE+184)
+#define ERROR_NO_REG_CERT_AT_LOGON           (RASBASE+185)
+#define ERROR_OAKLEY_NO_CERT                 (RASBASE+186)
+#define ERROR_OAKLEY_AUTH_FAIL               (RASBASE+187)
+#define ERROR_OAKLEY_ATTRIB_FAIL             (RASBASE+188)
+#define ERROR_OAKLEY_GENERAL_PROCESSING      (RASBASE+189)
+#define ERROR_OAKLEY_NO_PEER_CERT            (RASBASE+190)
+#define ERROR_OAKLEY_NO_POLICY               (RASBASE+191)
+#define ERROR_OAKLEY_TIMED_OUT               (RASBASE+192)
+#define ERROR_OAKLEY_ERROR                   (RASBASE+193)
+#define ERROR_UNKNOWN_FRAMED_PROTOCOL        (RASBASE+194)
+#define ERROR_WRONG_TUNNEL_TYPE              (RASBASE+195)
+#define ERROR_UNKNOWN_SERVICE_TYPE           (RASBASE+196)
+#define ERROR_CONNECTING_DEVICE_NOT_FOUND    (RASBASE+197)
+#define ERROR_NO_EAPTLS_CERTIFICATE          (RASBASE+198)
+#define RASBASEEND                           (RASBASE+198)
+#endif /* _RASERROR_H */
Index: Daodan/MinGW/include/rassapi.h
===================================================================
--- Daodan/MinGW/include/rassapi.h	(revision 1046)
+++ Daodan/MinGW/include/rassapi.h	(revision 1046)
@@ -0,0 +1,182 @@
+#ifndef _RASSAPI_H
+#define _RASSAPI_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#ifndef UNLEN
+#include <lmcons.h>
+#endif
+#define RASSAPI_MAX_PHONENUMBER_SIZE    128
+#define RASSAPI_MAX_MEDIA_NAME	        16
+#define RASSAPI_MAX_PORT_NAME	        16
+#define RASSAPI_MAX_DEVICE_NAME         128
+#define RASSAPI_MAX_DEVICETYPE_NAME     16
+#define RASSAPI_MAX_PARAM_KEY_SIZE      32
+#define RASPRIV_NoCallback              0x01
+#define RASPRIV_AdminSetCallback        0x02
+#define RASPRIV_CallerSetCallback       0x04
+#define RASPRIV_DialinPrivilege         0x08
+#define RASPRIV_CallbackType (RASPRIV_AdminSetCallback \
+                             | RASPRIV_CallerSetCallback \
+                             | RASPRIV_NoCallback)
+#define	RAS_MODEM_OPERATIONAL	        1
+#define	RAS_MODEM_NOT_RESPONDING        2
+#define	RAS_MODEM_HARDWARE_FAILURE      3
+#define	RAS_MODEM_INCORRECT_RESPONSE    4
+#define	RAS_MODEM_UNKNOWN		5
+#define	RAS_PORT_NON_OPERATIONAL        1
+#define	RAS_PORT_DISCONNECTED         	2
+#define	RAS_PORT_CALLING_BACK         	3
+#define	RAS_PORT_LISTENING            	4
+#define	RAS_PORT_AUTHENTICATING         5
+#define	RAS_PORT_AUTHENTICATED	        6
+#define	RAS_PORT_INITIALIZING	        7
+#define MEDIA_UNKNOWN                   0
+#define MEDIA_SERIAL                    1
+#define MEDIA_RAS10_SERIAL              2
+#define MEDIA_X25                       3
+#define MEDIA_ISDN                      4
+#define USER_AUTHENTICATED              0x0001
+#define MESSENGER_PRESENT               0x0002
+#define PPP_CLIENT                      0x0004
+#define GATEWAY_ACTIVE                  0x0008
+#define REMOTE_LISTEN                   0x0010
+#define PORT_MULTILINKED                0x0020
+#define RAS_IPADDRESSLEN                15
+#define RAS_IPXADDRESSLEN               22
+#define RAS_ATADDRESSLEN                32
+#define RASDOWNLEVEL                    10
+#define RASADMIN_35                     35
+#define RASADMIN_CURRENT                40
+
+typedef ULONG IPADDR;
+typedef enum _RAS_PARAMS_FORMAT {
+    ParamNumber = 0,
+    ParamString = 1
+} RAS_PARAMS_FORMAT;
+typedef union RAS_PARAMS_VALUE {
+	DWORD	Number;
+	struct	{
+	    DWORD	Length;
+		PCHAR	Data;
+		} String;
+} RAS_PARAMS_VALUE;
+typedef struct RAS_PARAMETERS {
+    CHAR	            P_Key [RASSAPI_MAX_PARAM_KEY_SIZE];
+    RAS_PARAMS_FORMAT	P_Type;
+    BYTE	            P_Attributes;
+    RAS_PARAMS_VALUE	P_Value;
+} RAS_PARAMETERS;
+typedef struct _RAS_USER_0 {
+    BYTE    bfPrivilege;
+    WCHAR   szPhoneNumber[RASSAPI_MAX_PHONENUMBER_SIZE + 1];
+} RAS_USER_0, *PRAS_USER_0;
+typedef struct _RAS_PORT_0 {
+    WCHAR wszPortName[RASSAPI_MAX_PORT_NAME];
+    WCHAR wszDeviceType[RASSAPI_MAX_DEVICETYPE_NAME];
+    WCHAR wszDeviceName[RASSAPI_MAX_DEVICE_NAME];
+    WCHAR wszMediaName[RASSAPI_MAX_MEDIA_NAME];
+    DWORD reserved;
+    DWORD Flags;
+    WCHAR wszUserName[UNLEN + 1];
+    WCHAR wszComputer[NETBIOS_NAME_LEN];
+    DWORD dwStartSessionTime;          /* seconds from 1/1/1970 */
+    WCHAR wszLogonDomain[DNLEN + 1];
+    BOOL fAdvancedServer;
+} RAS_PORT_0, *PRAS_PORT_0;
+typedef struct _RAS_PPP_NBFCP_RESULT {
+    DWORD dwError;
+    DWORD dwNetBiosError;
+    CHAR  szName[ NETBIOS_NAME_LEN + 1 ];
+    WCHAR wszWksta[ NETBIOS_NAME_LEN + 1 ];
+} RAS_PPP_NBFCP_RESULT;
+typedef struct _RAS_PPP_IPCP_RESULT{
+    DWORD dwError;
+    WCHAR wszAddress[ RAS_IPADDRESSLEN + 1 ];
+} RAS_PPP_IPCP_RESULT;
+typedef struct _RAS_PPP_IPXCP_RESULT {
+    DWORD dwError;
+    WCHAR wszAddress[ RAS_IPXADDRESSLEN + 1 ];
+} RAS_PPP_IPXCP_RESULT;
+typedef struct _RAS_PPP_ATCP_RESULT {
+    DWORD dwError;
+    WCHAR wszAddress[ RAS_ATADDRESSLEN + 1 ];
+} RAS_PPP_ATCP_RESULT;
+typedef struct _RAS_PPP_PROJECTION_RESULT {
+    RAS_PPP_NBFCP_RESULT nbf;
+    RAS_PPP_IPCP_RESULT  ip;
+    RAS_PPP_IPXCP_RESULT ipx;
+    RAS_PPP_ATCP_RESULT  at;
+} RAS_PPP_PROJECTION_RESULT;
+typedef struct _RAS_PORT_1{
+    RAS_PORT_0  rasport0;
+    DWORD       LineCondition;
+    DWORD       HardwareCondition;
+    DWORD       LineSpeed;
+    WORD        NumStatistics;
+    WORD        NumMediaParms;
+    DWORD       SizeMediaParms;
+    RAS_PPP_PROJECTION_RESULT  ProjResult;
+} RAS_PORT_1, *PRAS_PORT_1;
+typedef struct _RAS_PORT_STATISTICS {
+    DWORD   dwBytesXmited;
+    DWORD   dwBytesRcved;
+    DWORD   dwFramesXmited;
+    DWORD   dwFramesRcved;
+    DWORD   dwCrcErr;
+    DWORD   dwTimeoutErr;
+    DWORD   dwAlignmentErr;
+    DWORD   dwHardwareOverrunErr;
+    DWORD   dwFramingErr;
+    DWORD   dwBufferOverrunErr;
+    DWORD   dwBytesXmitedUncompressed;
+    DWORD   dwBytesRcvedUncompressed;
+    DWORD   dwBytesXmitedCompressed;
+    DWORD   dwBytesRcvedCompressed;
+    DWORD   dwPortBytesXmited;
+    DWORD   dwPortBytesRcved;
+    DWORD   dwPortFramesXmited;
+    DWORD   dwPortFramesRcved;
+    DWORD   dwPortCrcErr;
+    DWORD   dwPortTimeoutErr;
+    DWORD   dwPortAlignmentErr;
+    DWORD   dwPortHardwareOverrunErr;
+    DWORD   dwPortFramingErr;
+    DWORD   dwPortBufferOverrunErr;
+    DWORD   dwPortBytesXmitedUncompressed;
+    DWORD   dwPortBytesRcvedUncompressed;
+    DWORD   dwPortBytesXmitedCompressed;
+    DWORD   dwPortBytesRcvedCompressed;
+} RAS_PORT_STATISTICS, *PRAS_PORT_STATISTICS;
+typedef struct _RAS_SERVER_0 {
+    WORD TotalPorts;
+    WORD PortsInUse;
+    DWORD RasVersion;
+} RAS_SERVER_0, *PRAS_SERVER_0;
+
+DWORD APIENTRY RasAdminServerGetInfo( const WCHAR*,  PRAS_SERVER_0 );
+DWORD APIENTRY RasAdminGetUserAccountServer( const WCHAR*, const WCHAR*, LPWSTR );
+DWORD APIENTRY RasAdminUserGetInfo( const WCHAR*, const WCHAR*, PRAS_USER_0 );
+DWORD APIENTRY RasAdminUserSetInfo( const WCHAR*, const WCHAR*, const PRAS_USER_0 );
+DWORD APIENTRY RasAdminPortEnum( const WCHAR*, PRAS_PORT_0*, WORD*);
+DWORD APIENTRY RasAdminPortGetInfo( const WCHAR*, const WCHAR*, RAS_PORT_1*, RAS_PORT_STATISTICS*,  RAS_PARAMETERS** );
+DWORD APIENTRY RasAdminPortClearStatistics( const WCHAR*, const WCHAR* );
+DWORD APIENTRY RasAdminPortDisconnect( const WCHAR*, const WCHAR* );
+DWORD APIENTRY RasAdminFreeBuffer(PVOID);
+DWORD APIENTRY RasAdminGetErrorString( UINT,  WCHAR*,  DWORD );
+BOOL APIENTRY RasAdminAcceptNewConnection( RAS_PORT_1*, RAS_PORT_STATISTICS*, RAS_PARAMETERS* );
+VOID APIENTRY RasAdminConnectionHangupNotification ( RAS_PORT_1*, RAS_PORT_STATISTICS*, RAS_PARAMETERS* );
+DWORD APIENTRY RasAdminGetIpAddressForUser ( WCHAR*, WCHAR*, IPADDR*, BOOL*);
+VOID APIENTRY RasAdminReleaseIpAddress ( WCHAR*, WCHAR*,IPADDR*	);
+DWORD APIENTRY RasAdminGetUserParms( WCHAR*, PRAS_USER_0 );
+DWORD APIENTRY RasAdminSetUserParms( WCHAR*, DWORD, PRAS_USER_0 );
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RASSAPI_H */
Index: Daodan/MinGW/include/reason.h
===================================================================
--- Daodan/MinGW/include/reason.h	(revision 1046)
+++ Daodan/MinGW/include/reason.h	(revision 1046)
@@ -0,0 +1,47 @@
+#ifndef _REASON_H
+#define _REASON_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#if (_WIN32_WINNT >= 0x0501)
+#define SHTDN_REASON_MAJOR_APPLICATION 0x00040000
+#define SHTDN_REASON_MAJOR_HARDWARE 0x00010000
+#define SHTDN_REASON_MAJOR_LEGACY_API 0x00070000
+#define SHTDN_REASON_MAJOR_OPERATINGSYSTEM 0x00020000
+#define SHTDN_REASON_MAJOR_OTHER 0x00000000
+#define SHTDN_REASON_MAJOR_POWER 0x00060000
+#define SHTDN_REASON_MAJOR_SOFTWARE 0x00030000
+#define SHTDN_REASON_MAJOR_SYSTEM 0x00050000
+#define SHTDN_REASON_MINOR_BLUESCREEN 0x0000000F
+#define SHTDN_REASON_MINOR_CORDUNPLUGGED 0x0000000b
+#define SHTDN_REASON_MINOR_DISK 0x00000007
+#define SHTDN_REASON_MINOR_ENVIRONMENT 0x0000000c
+#define SHTDN_REASON_MINOR_HARDWARE_DRIVER 0x0000000d
+#define SHTDN_REASON_MINOR_HOTFIX 0x00000011
+#define SHTDN_REASON_MINOR_HOTFIX_UNINSTALL 0x00000017
+#define SHTDN_REASON_MINOR_HUNG 0x00000005
+#define SHTDN_REASON_MINOR_INSTALLATION 0x00000002
+#define SHTDN_REASON_MINOR_MAINTENANCE 0x00000001
+#define SHTDN_REASON_MINOR_MMC 0x00000019
+#define SHTDN_REASON_MINOR_NETWORK_CONNECTIVITY 0x00000014
+#define SHTDN_REASON_MINOR_NETWORKCARD 0x00000009
+#define SHTDN_REASON_MINOR_OTHER 0x00000000
+#define SHTDN_REASON_MINOR_OTHERDRIVER 0x0000000e
+#define SHTDN_REASON_MINOR_POWER_SUPPLY 0x0000000a
+#define SHTDN_REASON_MINOR_PROCESSOR 0x00000008
+#define SHTDN_REASON_MINOR_RECONFIG 0x00000004
+#define SHTDN_REASON_MINOR_SECURITY 0x00000013
+#define SHTDN_REASON_MINOR_SECURITYFIX 0x00000012
+#define SHTDN_REASON_MINOR_SECURITYFIX_UNINSTALL 0x00000018
+#define SHTDN_REASON_MINOR_SERVICEPACK 0x00000010
+#define SHTDN_REASON_MINOR_SERVICEPACK_UNINSTALL 0x00000016
+#define SHTDN_REASON_MINOR_TERMSRV 0x00000020
+#define SHTDN_REASON_MINOR_UNSTABLE 0x00000006
+#define SHTDN_REASON_MINOR_UPGRADE 0x00000003
+#define SHTDN_REASON_MINOR_WMI 0x00000015
+#define SHTDN_REASON_FLAG_USER_DEFINED 0x40000000
+#define SHTDN_REASON_FLAG_PLANNED 0x80000000
+#endif /* (WIN32_WINNT >= 0x0501) */
+
+#endif
Index: Daodan/MinGW/include/regstr.h
===================================================================
--- Daodan/MinGW/include/regstr.h	(revision 1046)
+++ Daodan/MinGW/include/regstr.h	(revision 1046)
@@ -0,0 +1,769 @@
+#ifndef _REGSTR_H
+#define _REGSTR_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define REGSTR_KEY_CLASS TEXT("Class")
+#define REGSTR_KEY_CONFIG TEXT("Config")
+#define REGSTR_KEY_ENUM TEXT("Enum")
+#define REGSTR_KEY_ROOTENUM TEXT("Root")
+#define REGSTR_KEY_BIOSENUM TEXT("BIOS")
+#define REGSTR_KEY_PCMCIAENUM TEXT("PCMCIA")
+#define REGSTR_KEY_PCIENUM TEXT("PCI")
+#define REGSTR_KEY_LOGCONFIG	TEXT("LogConfig")
+#define REGSTR_KEY_SYSTEMBOARD	TEXT("*PNP0C01")
+#define REGSTR_KEY_APM	TEXT("*PNP0C05")
+#define REGSTR_KEY_INIUPDATE	TEXT("IniUpdate")
+#define REG_KEY_INSTDEV TEXT("Installed")
+#define REGSTR_KEY_DOSOPTCDROM	TEXT("CD-ROM")
+#define REGSTR_KEY_DOSOPTMOUSE	TEXT("MOUSE")
+#define REGSTR_DEFAULT_INSTANCE TEXT("0000")
+#define REGSTR_PATH_MOTHERBOARD REGSTR_KEY_SYSTEMBOARD TEXT("\\" REGSTR_DEFAULT_INSTANCE
+#define REGSTR_PATH_SETUP	TEXT("Software\\Microsoft\\Windows\\CurrentVersion")
+#define REGSTR_PATH_PIFCONVERT TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\PIFConvert")
+#define REGSTR_PATH_MSDOSOPTS	TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\MS-DOSOptions")
+#define REGSTR_PATH_MSDOSEMU	TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\MS-DOS Emulation")
+#define REGSTR_PATH_NEWDOSBOX	TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\MS-DOS Emulation\\AppCompat")
+#define REGSTR_PATH_RUNONCE	TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\RunOnce")
+#define REGSTR_PATH_RUN	TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Run")
+#define REGSTR_PATH_RUNSERVICESONCE	TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\RunServicesOnce")
+#define REGSTR_PATH_RUNSERVICES	TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\RunServices")
+#ifndef REGSTR_PATH_EXPLORER /* also in shlobj.h */
+#define REGSTR_PATH_EXPLORER	TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer")
+#endif
+#define REGSTR_PATH_DETECT	TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Detect")
+#define REGSTR_PATH_APPPATHS	TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\App Paths")
+#define REGSTR_PATH_UNINSTALL TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall")
+#define REGSTR_PATH_REALMODENET TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Network\\Real Mode Net")
+#define REGSTR_PATH_NETEQUIV TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Network\\Equivalent")
+#define REGSTR_PATH_CVNETWORK TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Network")
+#define REGSTR_PATH_IDCONFIGDB	TEXT("System\\CurrentControlSet\\Control\\IDConfigDB")
+#define REGSTR_PATH_CLASS	TEXT("System\\CurrentControlSet\\Services\\Class")
+#define REGSTR_PATH_DISPLAYSETTINGS TEXT("Display\\Settings")
+#define REGSTR_PATH_FONTS	TEXT("Display\\Fonts")
+#define REGSTR_PATH_ENUM	TEXT("Enum")
+#define REGSTR_PATH_ROOT	TEXT("Enum\\Root")
+#define REGSTR_PATH_SERVICES	TEXT("System\\CurrentControlSet\\Services")
+#define REGSTR_PATH_VXD TEXT("System\\CurrentControlSet\\Services\\VxD")
+#define REGSTR_PATH_IOS TEXT("System\\CurrentControlSet\\Services\\VxD\\IOS")
+#define REGSTR_PATH_VMM TEXT("System\\CurrentControlSet\\Services\\VxD\\VMM")
+#define REGSTR_PATH_VPOWERD TEXT("System\\CurrentControlSet\\Services\\VxD\\VPOWERD")
+#define REGSTR_PATH_VNETSUP TEXT("System\\CurrentControlSet\\Services\\VxD\\VNETSUP")
+#define REGSTR_PATH_NWREDIR TEXT("System\\CurrentControlSet\\Services\\VxD\\NWREDIR")
+#define REGSTR_PATH_NCPSERVER TEXT("System\\CurrentControlSet\\Services\\NcpServer\\Parameters")
+#define REGSTR_PATH_IOARB	TEXT("System\\CurrentControlSet\\Services\\Arbitrators\\IOArb")
+#define REGSTR_PATH_ADDRARB	TEXT("System\\CurrentControlSet\\Services\\Arbitrators\\AddrArb")
+#define REGSTR_PATH_DMAARB	TEXT("System\\CurrentControlSet\\Services\\Arbitrators\\DMAArb")
+#define REGSTR_PATH_IRQARB	TEXT("System\\CurrentControlSet\\Services\\Arbitrators\\IRQArb")
+#define REGSTR_PATH_CODEPAGE	TEXT("System\\CurrentControlSet\\Control\\Nls\\Codepage")
+#define REGSTR_PATH_FILESYSTEM	TEXT("System\\CurrentControlSet\\Control\\FileSystem")
+#define REGSTR_PATH_FILESYSTEM_NOVOLTRACK	TEXT("System\\CurrentControlSet\\Control\\FileSystem\\NoVolTrack")
+#define REGSTR_PATH_CDFS	TEXT("System\\CurrentControlSet\\Control\\FileSystem\\CDFS")
+#define REGSTR_PATH_WINBOOT	TEXT("System\\CurrentControlSet\\Control\\WinBoot")
+#define REGSTR_PATH_INSTALLEDFILES	TEXT("System\\CurrentControlSet\\Control\\InstalledFiles")
+#define REGSTR_PATH_VMM32FILES	TEXT("System\\CurrentControlSet\\Control\\VMM32Files")
+#define REGSTR_MAX_VALUE_LENGTH 256
+#define REGSTR_VAL_BITSPERPIXEL	TEXT("BitsPerPixel")
+#define REGSTR_VAL_RESOLUTION TEXT("Resolution")
+#define REGSTR_VAL_DPILOGICALX	TEXT("DPILogicalX")
+#define REGSTR_VAL_DPILOGICALY	TEXT("DPILogicalY")
+#define REGSTR_VAL_DPIPHYSICALX	TEXT("DPIPhysicalX")
+#define REGSTR_VAL_DPIPHYSICALY TEXT("DPIPhysicalY")
+#define REGSTR_VAL_REFRESHRATE TEXT("RefreshRate")
+#define REGSTR_VAL_DISPLAYFLAGS TEXT("DisplayFlags")
+#define REGSTR_PATH_CONTROLPANEL TEXT("Control Panel")
+#define REGSTR_PATH_CONTROLSFOLDER TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Controls Folder")
+#define REGSTR_VAL_DOSCP	TEXT("OEMCP")
+#define REGSTR_VAL_WINCP	TEXT("ACP")
+#define REGSTR_PATH_DYNA_ENUM	TEXT("Config Manager\\Enum")
+#define	REGSTR_VAL_HARDWARE_KEY	TEXT("HardWareKey")
+#define	REGSTR_VAL_ALLOCATION	TEXT("Allocation")
+#define	REGSTR_VAL_PROBLEM	TEXT("Problem")
+#define	REGSTR_VAL_STATUS	TEXT("Status")
+#define REGSTR_VAL_DONTUSEMEM	TEXT("DontAllocLastMem")
+#define REGSTR_VAL_SYSTEMROOT TEXT("SystemRoot")
+#define REGSTR_VAL_BOOTCOUNT	TEXT("BootCount")
+#define REGSTR_VAL_REALNETSTART	TEXT("RealNetStart")
+#define	REGSTR_VAL_MEDIA	TEXT("MediaPath")
+#define	REGSTR_VAL_CONFIG	TEXT("ConfigPath")
+#define REGSTR_VAL_DEVICEPATH	TEXT("DevicePath")
+#define REGSTR_VAL_SRCPATH	TEXT("SourcePath")
+#define REGSTR_VAL_OLDWINDIR	TEXT("OldWinDir")
+#define REGSTR_VAL_SETUPFLAGS	TEXT("SetupFlags")
+#define REGSTR_VAL_REGOWNER TEXT("RegisteredOwner")
+#define REGSTR_VAL_REGORGANIZATION TEXT("RegisteredOrganization")
+#define REGSTR_VAL_LICENSINGINFO TEXT("LicensingInfo")
+#define REGSTR_VAL_OLDMSDOSVER TEXT("OldMSDOSVer")
+#define REGSTR_VAL_FIRSTINSTALLDATETIME TEXT("FirstInstallDateTime")
+#define REGSTR_VAL_INSTALLTYPE	TEXT("InstallType")
+#define REGSTR_VAL_WRAPPER	TEXT("Wrapper")
+#define IT_COMPACT 0
+#define IT_TYPICAL 1
+#define IT_PORTABLE 2
+#define IT_CUSTOM 3
+#define REGSTR_KEY_SETUP	TEXT("\\Setup")
+#define REGSTR_VAL_BOOTDIR TEXT("BootDir")
+#define REGSTR_VAL_WINBOOTDIR TEXT("WinbootDir")
+#define REGSTR_VAL_WINDIR	TEXT("WinDir")
+#define REGSTR_VAL_APPINSTPATH	TEXT("AppInstallPath")
+#define REGSTR_PATH_EBD REGSTR_PATH_SETUP REGSTR_KEY_SETUP TEXT("\\EBD")
+#define REGSTR_KEY_EBDFILESLOCAL TEXT("EBDFilesLocale")
+#define REGSTR_KEY_EBDFILESKEYBOARD TEXT("EBDFilesKeyboard")
+#define REGSTR_KEY_EBDAUTOEXECBATLOCAL TEXT("EBDAutoexecBatLocale")
+#define REGSTR_KEY_EBDAUTOEXECBATKEYBOARD TEXT("EBDAutoexecBatKeyboard")
+#define REGSTR_KEY_EBDCONFIGSYSLOCAL TEXT("EBDConfigSysLocale")
+#define REGSTR_KEY_EBDCONFIGSYSKEYBOARD TEXT("EBDConfigSysKeyboard")
+#define REGSTR_VAL_MSDOSMODE TEXT("MSDOSMode")
+#define REGSTR_VAL_MSDOSMODEDISCARD TEXT("Discard")
+#define REGSTR_VAL_DOSOPTGLOBALFLAGS	TEXT("GlobalFlags")
+#define DOSOPTGF_DEFCLEAN 1
+#define REGSTR_VAL_DOSOPTFLAGS	TEXT("Flags")
+#define REGSTR_VAL_OPTORDER	TEXT("Order")
+#define REGSTR_VAL_CONFIGSYS	TEXT("Config.Sys")
+#define REGSTR_VAL_AUTOEXEC	TEXT("Autoexec.Bat")
+#define REGSTR_VAL_STDDOSOPTION TEXT("StdOption")
+#define REGSTR_VAL_DOSOPTTIP	TEXT("TipText")
+#define DOSOPTF_DEFAULT 1
+#define DOSOPTF_SUPPORTED 2
+#define DOSOPTF_ALWAYSUSE 4
+#define DOSOPTF_USESPMODE 8
+#define DOSOPTF_PROVIDESUMB 16
+#define DOSOPTF_NEEDSETUP 32
+#define DOSOPTF_INDOSSTART 64
+#define DOSOPTF_MULTIPLE 128
+#define SUF_FIRSTTIME 1
+#define SUF_EXPRESS 2
+#define SUF_BATCHINF 4
+#define SUF_CLEAN 8
+#define SUF_INSETUP 16
+#define SUF_NETSETUP 32
+#define SUF_NETHDBOOT 64
+#define SUF_NETRPLBOOT 128
+#define SUF_SBSCOPYOK 256
+#define REGSTR_VAL_DOSPAGER	TEXT("DOSPager")
+#define REGSTR_VAL_VXDGROUPS	TEXT("VXDGroups")
+#define REGSTR_VAL_VPOWERDFLAGS TEXT("Flags")
+#define VPDF_DISABLEPWRMGMT 1
+#define VPDF_FORCEAPM10MODE 2
+#define VPDF_SKIPINTELSLCHECK 4
+#define VPDF_DISABLEPWRSTATUSPOLL 8
+#define REGSTR_VAL_WORKGROUP TEXT("Workgroup")
+#define REGSTR_VAL_DIRECTHOST TEXT("DirectHost")
+#define REGSTR_VAL_FILESHARING TEXT("FileSharing")
+#define REGSTR_VAL_PRINTSHARING	TEXT("PrintSharing")
+#define REGSTR_VAL_FIRSTNETDRIVE TEXT("FirstNetworkDrive")
+#define REGSTR_VAL_MAXCONNECTIONS	TEXT("MaxConnections")
+#define REGSTR_VAL_APISUPPORT	TEXT("APISupport")
+#define REGSTR_VAL_MAXRETRY	TEXT("MaxRetry")
+#define REGSTR_VAL_MINRETRY	TEXT("MinRetry")
+#define REGSTR_VAL_SUPPORTLFN	TEXT("SupportLFN")
+#define REGSTR_VAL_SUPPORTBURST	TEXT("SupportBurst")
+#define REGSTR_VAL_SUPPORTTUNNELLING	TEXT("SupportTunnelling")
+#define REGSTR_VAL_FULLTRACE	TEXT("FullTrace")
+#define REGSTR_VAL_READCACHING	TEXT("ReadCaching")
+#define REGSTR_VAL_SHOWDOTS	TEXT("ShowDots")
+#define REGSTR_VAL_GAPTIME	TEXT("GapTime")
+#define REGSTR_VAL_SEARCHMODE	TEXT("SearchMode")
+#define REGSTR_VAL_SHELLVERSION TEXT("ShellVersion")
+#define REGSTR_VAL_MAXLIP TEXT("MaxLIP")
+#define REGSTR_VAL_PRESERVECASE TEXT("PreserveCase")
+#define REGSTR_VAL_OPTIMIZESFN TEXT("OptimizeSFN")
+#define REGSTR_VAL_NCP_BROWSEMASTER TEXT("BrowseMaster")
+#define	REGSTR_VAL_NCP_USEPEERBROWSING	TEXT("Use_PeerBrowsing")
+#define REGSTR_VAL_NCP_USESAP TEXT("Use_Sap")
+#define	REGSTR_VAL_WIN31FILESYSTEM	TEXT("Win31FileSystem")
+#define REGSTR_VAL_PRESERVELONGNAMES	TEXT("PreserveLongNames")
+#define REGSTR_VAL_DRIVEWRITEBEHIND	TEXT("DriveWriteBehind")
+#define REGSTR_VAL_ASYNCFILECOMMIT	TEXT("AsyncFileCommit")
+#define REGSTR_VAL_PATHCACHECOUNT	TEXT("PathCache")
+#define REGSTR_VAL_NAMECACHECOUNT	TEXT("NameCache")
+#define REGSTR_VAL_CONTIGFILEALLOC	TEXT("ContigFileAllocSize")
+#define REGSTR_VAL_VOLIDLETIMEOUT	TEXT("VolumeIdleTimeout")
+#define REGSTR_VAL_BUFFIDLETIMEOUT	TEXT("BufferIdleTimeout")
+#define REGSTR_VAL_BUFFAGETIMEOUT	TEXT("BufferAgeTimeout")
+#define	REGSTR_VAL_NAMENUMERICTAIL TEXT("NameNumericTail")
+#define	REGSTR_VAL_READAHEADTHRESHOLD	TEXT("ReadAheadThreshold")
+#define	REGSTR_VAL_DOUBLEBUFFER TEXT("DoubleBuffer")
+#define	REGSTR_VAL_SOFTCOMPATMODE TEXT("SoftCompatMode")
+#define REGSTR_VAL_DRIVESPINDOWN	TEXT("DriveSpinDown")
+#define	REGSTR_VAL_FORCEPMIO	TEXT("ForcePMIO")
+#define REGSTR_VAL_FORCERMIO	TEXT("ForceRMIO")
+#define REGSTR_VAL_LASTBOOTPMDRVS	TEXT("LastBootPMDrvs")
+#define REGSTR_VAL_VIRTUALHDIRQ	TEXT("VirtualHDIRQ")
+#define REGSTR_VAL_SRVNAMECACHECOUNT	TEXT("ServerNameCacheMax")
+#define REGSTR_VAL_SRVNAMECACHE	TEXT("ServerNameCache")
+#define REGSTR_VAL_SRVNAMECACHENETPROV	TEXT("ServerNameCacheNumNets")
+#define	REGSTR_VAL_AUTOMOUNT	TEXT("AutoMountDrives")
+#define	REGSTR_VAL_COMPRESSIONMETHOD	TEXT("CompressionAlgorithm")
+#define	REGSTR_VAL_COMPRESSIONTHRESHOLD	TEXT("CompressionThreshold")
+#define REGSTR_VAL_CDCACHESIZE	TEXT("CacheSize")
+#define REGSTR_VAL_CDPREFETCH	TEXT("Prefetch")
+#define REGSTR_VAL_CDPREFETCHTAIL TEXT("PrefetchTail")
+#define REGSTR_VAL_CDRAWCACHE	TEXT("RawCache")
+#define REGSTR_VAL_CDEXTERRORS	TEXT("ExtendedErrors")
+#define REGSTR_VAL_CDSVDSENSE	TEXT("SVDSense")
+#define REGSTR_VAL_CDSHOWVERSIONS TEXT("ShowVersions")
+#define REGSTR_VAL_CDCOMPATNAMES TEXT("MSCDEXCompatNames")
+#define REGSTR_VAL_CDNOREADAHEAD TEXT("NoReadAhead")
+#define REGSTR_VAL_SCSI	TEXT("SCSI\\")
+#define REGSTR_VAL_ESDI	TEXT("ESDI\\")
+#define REGSTR_VAL_FLOP TEXT("FLOP\\")
+#define	REGSTR_VAL_DISK	TEXT("GenDisk")
+#define	REGSTR_VAL_CDROM	TEXT("GenCD")
+#define	REGSTR_VAL_TAPE	TEXT("TAPE")
+#define	REGSTR_VAL_SCANNER TEXT("SCANNER")
+#define	REGSTR_VAL_FLOPPY	TEXT("FLOPPY")
+#define	REGSTR_VAL_SCSITID TEXT("SCSITargetID")
+#define	REGSTR_VAL_SCSILUN TEXT("SCSILUN")
+#define	REGSTR_VAL_REVLEVEL TEXT("RevisionLevel")
+#define	REGSTR_VAL_PRODUCTID TEXT("ProductId")
+#define	REGSTR_VAL_PRODUCTTYPE TEXT("ProductType")
+#define	REGSTR_VAL_DEVTYPE TEXT("DeviceType")
+#define	REGSTR_VAL_REMOVABLE TEXT("Removable")
+#define REGSTR_VAL_CURDRVLET TEXT("CurrentDriveLetterAssignment")
+#define	REGSTR_VAL_USRDRVLET TEXT("UserDriveLetterAssignment")
+#define	REGSTR_VAL_SYNCDATAXFER TEXT("SyncDataXfer")
+#define	REGSTR_VAL_AUTOINSNOTE	TEXT("AutoInsertNotification")
+#define	REGSTR_VAL_DISCONNECT TEXT("Disconnect")
+#define	REGSTR_VAL_INT13 TEXT("Int13")
+#define	REGSTR_VAL_PMODE_INT13 TEXT("PModeInt13")
+#define	REGSTR_VAL_USERSETTINGS TEXT("AdapterSettings")
+#define	REGSTR_VAL_NOIDE TEXT("NoIDE")
+#define	REGSTR_VAL_DISKCLASSNAME	TEXT("DiskDrive")
+#define	REGSTR_VAL_CDROMCLASSNAME	TEXT("CDROM")
+#define	REGSTR_VAL_FORCELOAD	TEXT("ForceLoadPD")
+#define	REGSTR_VAL_FORCEFIFO TEXT("ForceFIFO")
+#define	REGSTR_VAL_FORCECL TEXT("ForceChangeLine")
+#define REGSTR_VAL_NOUSECLASS TEXT("NoUseClass")
+#define REGSTR_VAL_NOINSTALLCLASS TEXT("NoInstallClass")
+#define REGSTR_VAL_NODISPLAYCLASS TEXT("NoDisplayClass")
+#define REGSTR_VAL_SILENTINSTALL TEXT("SilentInstall")
+#define REGSTR_KEY_PCMCIA_CLASS TEXT("PCMCIA")
+#define REGSTR_KEY_SCSI_CLASS TEXT("SCSIAdapter")
+#define REGSTR_KEY_PORTS_CLASS TEXT("ports")
+#define REGSTR_KEY_MEDIA_CLASS TEXT("MEDIA")
+#define REGSTR_KEY_DISPLAY_CLASS TEXT("Display")
+#define REGSTR_KEY_KEYBOARD_CLASS TEXT("Keyboard")
+#define REGSTR_KEY_MOUSE_CLASS TEXT("Mouse")
+#define REGSTR_KEY_MONITOR_CLASS TEXT("Monitor")
+#define REGSTR_VAL_PCMCIA_OPT	TEXT("Options")
+#define PCMCIA_OPT_HAVE_SOCKET	1
+#define PCMCIA_OPT_AUTOMEM	4
+#define PCMCIA_OPT_NO_SOUND	8
+#define PCMCIA_OPT_NO_AUDIO	16
+#define PCMCIA_OPT_NO_APMREMOVE 32
+#define REGSTR_VAL_PCMCIA_MEM	TEXT("Memory")
+#define PCMCIA_DEF_MEMBEGIN	0xC0000
+#define PCMCIA_DEF_MEMEND	0xFFFFFF
+#define PCMCIA_DEF_MEMLEN	0x1000
+#define REGSTR_VAL_PCMCIA_ALLOC TEXT("AllocMemWin")
+#define REGSTR_VAL_PCMCIA_ATAD	TEXT("ATADelay")
+#define REGSTR_VAL_PCMCIA_SIZ	TEXT("MinRegionSize")
+#define PCMCIA_DEF_MIN_REGION	0x10000
+#define REGSTR_VAL_P1284MDL TEXT("Model")
+#define REGSTR_VAL_P1284MFG TEXT("Manufacturer")
+#define	REGSTR_VAL_ISAPNP	TEXT("ISAPNP")
+#define	REGSTR_VAL_ISAPNP_RDP_OVERRIDE	TEXT("RDPOverRide")
+#define	REGSTR_VAL_PCI	TEXT("PCI")
+#define	REGSTR_PCI_OPTIONS	TEXT("Options")
+#define	REGSTR_PCI_DUAL_IDE	TEXT("PCIDualIDE")
+#define	PCI_OPTIONS_USE_BIOS	1
+#define	PCI_OPTIONS_USE_IRQ_STEERING	2
+#define	PCI_FLAG_NO_VIDEO_IRQ	1
+#define	PCI_FLAG_PCMCIA_WANT_IRQ	2
+#define	PCI_FLAG_DUAL_IDE	4
+#define	PCI_FLAG_NO_ENUM_AT_ALL	8
+#define	PCI_FLAG_ENUM_NO_RESOURCE	16
+#define	PCI_FLAG_NEED_DWORD_ACCESS	32
+#define	PCI_FLAG_SINGLE_FUNCTION	64
+#define	PCI_FLAG_ALWAYS_ENABLED	128
+#define	PCI_FLAG_IS_IDE	256
+#define	PCI_FLAG_IS_VIDEO	512
+#define	PCI_FLAG_FAIL_START	1024
+#define REGSTR_KEY_CRASHES	TEXT("Crashes")
+#define REGSTR_KEY_DANGERS	TEXT("Dangers")
+#define REGSTR_KEY_DETMODVARS	TEXT("DetModVars")
+#define REGSTR_KEY_NDISINFO	TEXT("NDISInfo")
+#define REGSTR_VAL_PROTINIPATH	TEXT("ProtIniPath")
+#define REGSTR_VAL_RESOURCES	TEXT("Resources")
+#define REGSTR_VAL_CRASHFUNCS	TEXT("CrashFuncs")
+#define REGSTR_VAL_CLASS	TEXT("Class")
+#define REGSTR_VAL_DEVDESC	TEXT("DeviceDesc")
+#define REGSTR_VAL_BOOTCONFIG	TEXT("BootConfig")
+#define REGSTR_VAL_DETFUNC	TEXT("DetFunc")
+#define REGSTR_VAL_DETFLAGS	TEXT("DetFlags")
+#define REGSTR_VAL_COMPATIBLEIDS TEXT("CompatibleIDs")
+#define REGSTR_VAL_DETCONFIG	TEXT("DetConfig")
+#define REGSTR_VAL_VERIFYKEY	TEXT("VerifyKey")
+#define REGSTR_VAL_COMINFO	TEXT("ComInfo")
+#define REGSTR_VAL_INFNAME	TEXT("InfName")
+#define REGSTR_VAL_CARDSPECIFIC	TEXT("CardSpecific")
+#define REGSTR_VAL_NETOSTYPE	TEXT("NetOSType")
+#define REGSTR_DATA_NETOS_NDIS	TEXT("NDIS")
+#define REGSTR_DATA_NETOS_ODI	TEXT("ODI")
+#define REGSTR_DATA_NETOS_IPX	TEXT("IPX")
+#define REGSTR_VAL_MFG TEXT("Mfg")
+#define REGSTR_VAL_SCAN_ONLY_FIRST	TEXT("ScanOnlyFirstDrive")
+#define REGSTR_VAL_SHARE_IRQ	TEXT("ForceIRQSharing")
+#define REGSTR_VAL_NONSTANDARD_ATAPI	TEXT("NonStandardATAPI")
+#define REGSTR_VAL_IDE_FORCE_SERIALIZE	TEXT("ForceSerialization")
+#define	REGSTR_VAL_MAX_HCID_LEN	1024
+#define REGSTR_VAL_HWREV TEXT("HWRevision")
+#define REGSTR_VAL_ENABLEINTS TEXT("EnableInts")
+#define REGDF_NOTDETIO	1
+#define REGDF_NOTDETMEM 2
+#define REGDF_NOTDETIRQ 4
+#define REGDF_NOTDETDMA 8
+#define REGDF_NOTDETALL	(REGDF_NOTDETIO | REGDF_NOTDETMEM | REGDF_NOTDETIRQ | REGDF_NOTDETDMA)
+#define REGDF_NEEDFULLCONFIG	16
+#define REGDF_GENFORCEDCONFIG	32
+#define REGDF_NODETCONFIG	0x8000
+#define REGDF_CONFLICTIO	0x10000
+#define REGDF_CONFLICTMEM	0x20000
+#define REGDF_CONFLICTIRQ	0x40000
+#define REGDF_CONFLICTDMA	0x80000
+#define	REGDF_CONFLICTALL	(REGDF_CONFLICTIO | REGDF_CONFLICTMEM | REGDF_CONFLICTIRQ | REGDF_CONFLICTDMA)
+#define REGDF_MAPIRQ2TO9	0x100000
+#define REGDF_NOTVERIFIED	0x80000000
+#define REGSTR_VAL_APMBIOSVER	TEXT("APMBiosVer")
+#define REGSTR_VAL_APMFLAGS	TEXT("APMFlags")
+#define REGSTR_VAL_SLSUPPORT	TEXT("SLSupport")
+#define REGSTR_VAL_MACHINETYPE	TEXT("MachineType")
+#define REGSTR_VAL_SETUPMACHINETYPE TEXT("SetupMachineType")
+#define REGSTR_MACHTYPE_UNKNOWN TEXT("Unknown")
+#define REGSTR_MACHTYPE_IBMPC	TEXT("IBM PC")
+#define REGSTR_MACHTYPE_IBMPCJR TEXT("IBM PCjr")
+#define REGSTR_MACHTYPE_IBMPCCONV	TEXT("IBM PC Convertible")
+#define REGSTR_MACHTYPE_IBMPCXT TEXT("IBM PC/XT")
+#define REGSTR_MACHTYPE_IBMPCXT_286	TEXT("IBM PC/XT 286")
+#define REGSTR_MACHTYPE_IBMPCAT TEXT("IBM PC/AT")
+#define REGSTR_MACHTYPE_IBMPS2_25	TEXT("IBM PS/2-25")
+#define REGSTR_MACHTYPE_IBMPS2_30_286	TEXT("IBM PS/2-30 286")
+#define REGSTR_MACHTYPE_IBMPS2_30	TEXT("IBM PS/2-30")
+#define REGSTR_MACHTYPE_IBMPS2_50	TEXT("IBM PS/2-50")
+#define REGSTR_MACHTYPE_IBMPS2_50Z	TEXT("IBM PS/2-50Z")
+#define REGSTR_MACHTYPE_IBMPS2_55SX	TEXT("IBM PS/2-55SX")
+#define REGSTR_MACHTYPE_IBMPS2_60	TEXT("IBM PS/2-60")
+#define REGSTR_MACHTYPE_IBMPS2_65SX	TEXT("IBM PS/2-65SX")
+#define REGSTR_MACHTYPE_IBMPS2_70	TEXT("IBM PS/2-70")
+#define REGSTR_MACHTYPE_IBMPS2_P70	TEXT("IBM PS/2-P70")
+#define REGSTR_MACHTYPE_IBMPS2_70_80	TEXT("IBM PS/2-70/80")
+#define REGSTR_MACHTYPE_IBMPS2_80	TEXT("IBM PS/2-80")
+#define REGSTR_MACHTYPE_IBMPS2_90	TEXT("IBM PS/2-90")
+#define REGSTR_MACHTYPE_IBMPS1	TEXT("IBM PS/1")
+#define REGSTR_MACHTYPE_PHOENIX_PCAT	TEXT("Phoenix PC/AT Compatible")
+#define REGSTR_MACHTYPE_HP_VECTRA	TEXT("HP Vectra")
+#define REGSTR_MACHTYPE_ATT_PC	TEXT("AT&T PC")
+#define REGSTR_MACHTYPE_ZENITH_PC	TEXT("Zenith PC")
+#define REGSTR_VAL_APMMENUSUSPEND	TEXT("APMMenuSuspend")
+#define APMMENUSUSPEND_DISABLED 0
+#define APMMENUSUSPEND_ENABLED	1
+#define APMMENUSUSPEND_UNDOCKED 2
+#define APMMENUSUSPEND_NOCHANGE 128
+#define REGSTR_VAL_BUSTYPE TEXT("BusType")
+#define REGSTR_VAL_CPU TEXT("CPU")
+#define REGSTR_VAL_NDP TEXT("NDP")
+#define REGSTR_VAL_PNPBIOSVER TEXT("PnPBIOSVer")
+#define REGSTR_VAL_PNPSTRUCOFFSET TEXT("PnPStrucOffset")
+#define REGSTR_VAL_PCIBIOSVER TEXT("PCIBIOSVer")
+#define REGSTR_VAL_HWMECHANISM TEXT("HWMechanism")
+#define REGSTR_VAL_LASTPCIBUSNUM TEXT("LastPCIBusNum")
+#define REGSTR_VAL_CONVMEM TEXT("ConvMem")
+#define REGSTR_VAL_EXTMEM TEXT("ExtMem")
+#define REGSTR_VAL_COMPUTERNAME TEXT("ComputerName")
+#define REGSTR_VAL_BIOSNAME TEXT("BIOSName")
+#define REGSTR_VAL_BIOSVERSION TEXT("BIOSVersion")
+#define REGSTR_VAL_BIOSDATE TEXT("BIOSDate")
+#define REGSTR_VAL_MODEL TEXT("Model")
+#define REGSTR_VAL_SUBMODEL TEXT("Submodel")
+#define REGSTR_VAL_REVISION TEXT("Revision")
+#define REGSTR_VAL_FIFODEPTH	TEXT("FIFODepth")
+#define REGSTR_VAL_RDINTTHRESHOLD	TEXT("RDIntThreshold")
+#define REGSTR_VAL_WRINTTHRESHOLD	TEXT("WRIntThreshold")
+#define REGSTR_VAL_PRIORITY	TEXT("Priority")
+#define REGSTR_VAL_DRIVER	TEXT("Driver")
+#define REGSTR_VAL_FUNCDESC	TEXT("FunctionDesc")
+#define REGSTR_VAL_FORCEDCONFIG TEXT("ForcedConfig")
+#define REGSTR_VAL_CONFIGFLAGS	TEXT("ConfigFlags")
+#define REGSTR_VAL_CSCONFIGFLAGS TEXT("CSConfigFlags")
+#define CONFIGFLAG_DISABLED	1
+#define CONFIGFLAG_REMOVED	2
+#define CONFIGFLAG_MANUAL_INSTALL 4
+#define CONFIGFLAG_IGNORE_BOOT_LC 8
+#define CONFIGFLAG_NET_BOOT	16
+#define CONFIGFLAG_REINSTALL	32
+#define CONFIGFLAG_FAILEDINSTALL	64
+#define CONFIGFLAG_CANTSTOPACHILD	128
+#define CONFIGFLAG_OKREMOVEROM	256
+#define CONFIGFLAG_NOREMOVEEXIT	512
+#define CSCONFIGFLAG_BITS	7
+#define CSCONFIGFLAG_DISABLED	1
+#define CSCONFIGFLAG_DO_NOT_CREATE	2
+#define CSCONFIGFLAG_DO_NOT_START	4
+#define DMSTATEFLAG_APPLYTOALL 1
+#define	REGSTR_VAL_ROOT_DEVNODE	TEXT("HTREE\\ROOT\\0")
+#define	REGSTR_VAL_RESERVED_DEVNODE	TEXT("HTREE\\RESERVED\\0")
+#define	REGSTR_PATH_READDATAPORT	REGSTR_KEY_ISAENUM TEXT("\\ReadDataPort\\0")
+#define	REGSTR_PATH_MULTI_FUNCTION	TEXT("MF")
+#define	REGSTR_VAL_RESOURCE_MAP	TEXT("ResourceMap")
+#define	REGSTR_PATH_CHILD_PREFIX	TEXT("Child")
+#define	NUM_RESOURCE_MAP	256
+#define	REGSTR_VAL_MF_FLAGS	TEXT("MFFlags")
+#define	MF_FLAGS_EVEN_IF_NO_RESOURCE	1
+#define	MF_FLAGS_NO_CREATE_IF_NO_RESOURCE	2
+#define	MF_FLAGS_FILL_IN_UNKNOWN_RESOURCE	4
+#define	MF_FLAGS_CREATE_BUT_NO_SHOW_DISABLED	8
+#define	EISAFLAG_NO_IO_MERGE	1
+#define	EISAFLAG_SLOT_IO_FIRST	2
+#define	EISA_NO_MAX_FUNCTION	0xFF
+#define	NUM_EISA_RANGES	4
+#define REGSTR_VAL_DRVDESC	TEXT("DriverDesc")
+#define REGSTR_VAL_DEVLOADER	TEXT("DevLoader")
+#define REGSTR_VAL_STATICVXD	TEXT("StaticVxD")
+#define REGSTR_VAL_PROPERTIES	TEXT("Properties")
+#define REGSTR_VAL_MANUFACTURER TEXT("Manufacturer")
+#define REGSTR_VAL_EXISTS	TEXT("Exists")
+#define REGSTR_VAL_CMENUMFLAGS	TEXT("CMEnumFlags")
+#define REGSTR_VAL_CMDRIVFLAGS	TEXT("CMDrivFlags")
+#define	REGSTR_VAL_ENUMERATOR	TEXT("Enumerator")
+#define	REGSTR_VAL_DEVICEDRIVER	TEXT("DeviceDriver")
+#define REGSTR_VAL_PORTNAME	TEXT("PortName")
+#define REGSTR_VAL_INFPATH TEXT("InfPath")
+#define REGSTR_VAL_INFSECTION	TEXT("InfSection")
+#define REGSTR_VAL_POLLING	TEXT("Polling")
+#define REGSTR_VAL_DONTLOADIFCONFLICT TEXT("DontLoadIfConflict")
+#define REGSTR_VAL_PORTSUBCLASS TEXT("PortSubClass")
+#define REGSTR_VAL_NETCLEAN TEXT("NetClean")
+#define REGSTR_VAL_IDE_NO_SERIALIZE TEXT("IDENoSerialize")
+#define REGSTR_VAL_NOCMOSORFDPT TEXT("NoCMOSorFDPT")
+#define REGSTR_VAL_COMVERIFYBASE TEXT("COMVerifyBase")
+#define REGSTR_KEY_OVERRIDE	TEXT("Override")
+#define	REGSTR_VAL_CONFIGMG	TEXT("CONFIGMG")
+#define REGSTR_VAL_SYSDM	TEXT("SysDM")
+#define REGSTR_VAL_SYSDMFUNC	TEXT("SysDMFunc")
+#define	REGSTR_VAL_PRIVATE	TEXT("Private")
+#define	REGSTR_VAL_PRIVATEFUNC	TEXT("PrivateFunc")
+#define	REGSTR_VAL_DETECT	TEXT("Detect")
+#define	REGSTR_VAL_DETECTFUNC	TEXT("DetectFunc")
+#define	REGSTR_VAL_ASKFORCONFIG	TEXT("AskForConfig")
+#define	REGSTR_VAL_ASKFORCONFIGFUNC TEXT("AskForConfigFunc")
+#define	REGSTR_VAL_WAITFORUNDOCK TEXT("WaitForUndock")
+#define	REGSTR_VAL_WAITFORUNDOCKFUNC TEXT("WaitForUndockFunc")
+#define	REGSTR_VAL_REMOVEROMOKAY TEXT("RemoveRomOkay")
+#define	REGSTR_VAL_REMOVEROMOKAYFUNC TEXT("RemoveRomOkayFunc")
+#define REGSTR_VAL_CURCONFIG	TEXT("CurrentConfig")
+#define REGSTR_VAL_FRIENDLYNAME TEXT("FriendlyName")
+#define REGSTR_VAL_CURRENTCONFIG TEXT("CurrentConfig")
+#define REGSTR_VAL_MAP	TEXT("Map")
+#define REGSTR_VAL_ID	TEXT("CurrentID")
+#define REGSTR_VAL_DOCKED	TEXT("CurrentDockedState")
+#define REGSTR_VAL_CHECKSUM	TEXT("CurrentChecksum")
+#define REGSTR_VAL_HWDETECT	TEXT("HardwareDetect")
+#define REGSTR_VAL_INHIBITRESULTS TEXT("InhibitResults")
+#define REGSTR_VAL_PROFILEFLAGS TEXT("ProfileFlags")
+#define REGSTR_KEY_PCMCIA	TEXT("PCMCIA\\")
+#define REGSTR_KEY_PCUNKNOWN	TEXT("UNKNOWN_MANUFACTURER")
+#define REGSTR_VAL_PCSSDRIVER	TEXT("Driver")
+#define REGSTR_KEY_PCMTD	TEXT("MTD-")
+#define REGSTR_VAL_PCMTDRIVER	TEXT("MTD")
+#define REGSTR_VAL_HARDWAREID	TEXT("HardwareID")
+#define REGSTR_VAL_INSTALLER	TEXT("Installer")
+#define REGSTR_VAL_INSICON	TEXT("Icon")
+#define REGSTR_VAL_ENUMPROPPAGES TEXT("EnumPropPages")
+#define REGSTR_VAL_BASICPROPERTIES TEXT("BasicProperties")
+#define REGSTR_VAL_PRIVATEPROBLEM TEXT("PrivateProblem")
+#define REGSTR_KEY_CURRENT	TEXT("Current")
+#define REGSTR_KEY_DEFAULT	TEXT("Default")
+#define REGSTR_KEY_MODES	TEXT("Modes")
+#define REGSTR_VAL_MODE TEXT("Mode")
+#define REGSTR_VAL_BPP	TEXT("BPP")
+#define REGSTR_VAL_HRES TEXT("HRes")
+#define REGSTR_VAL_VRES TEXT("VRes")
+#define REGSTR_VAL_FONTSIZE	TEXT("FontSize")
+#define REGSTR_VAL_DRV	TEXT("drv")
+#define REGSTR_VAL_GRB	TEXT("grb")
+#define REGSTR_VAL_VDD	TEXT("vdd")
+#define REGSTR_VAL_VER	TEXT("Ver")
+#define REGSTR_VAL_MAXRES	TEXT("MaxResolution")
+#define REGSTR_VAL_DPMS TEXT("DPMS")
+#define REGSTR_VAL_RESUMERESET TEXT("ResumeReset")
+#define REGSTR_VAL_DESCRIPTION TEXT("Description")
+#define REGSTR_KEY_SYSTEM	TEXT("System")
+#define REGSTR_KEY_USER TEXT("User")
+#define REGSTR_VAL_DPI	TEXT("dpi")
+#define REGSTR_VAL_PCICOPTIONS	TEXT("PCICOptions")
+#ifndef NEC_98
+#define PCIC_DEFAULT_IRQMASK	0x4EB8
+#else
+#define PCIC_DEFAULT_IRQMASK	0x1468
+#endif
+#define PCIC_DEFAULT_NUMSOCKETS 0
+#define REGSTR_VAL_PCICIRQMAP	TEXT("PCICIRQMap")
+#define REGSTR_PATH_APPEARANCE	TEXT("Control Panel\\Appearance")
+#define REGSTR_PATH_LOOKSCHEMES TEXT("Control Panel\\Appearance\\Schemes")
+#define REGSTR_VAL_CUSTOMCOLORS TEXT("CustomColors")
+#define REGSTR_PATH_SCREENSAVE TEXT("Control Panel\\Desktop")
+#define REGSTR_VALUE_USESCRPASSWORD TEXT("ScreenSaveUsePassword")
+#define REGSTR_VALUE_SCRPASSWORD TEXT("ScreenSave_Data")
+#define REGSTR_VALUE_LOWPOWERTIMEOUT	TEXT("ScreenSaveLowPowerTimeout")
+#define REGSTR_VALUE_POWEROFFTIMEOUT	TEXT("ScreenSavePowerOffTimeout")
+#define REGSTR_VALUE_LOWPOWERACTIVE	TEXT("ScreenSaveLowPowerActive")
+#define REGSTR_VALUE_POWEROFFACTIVE	TEXT("ScreenSavePowerOffActive")
+#define REGSTR_PATH_WINDOWSAPPLETS TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Applets")
+#define REGSTR_PATH_SYSTRAY TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Applets\\SysTray")
+#define REGSTR_VAL_SYSTRAYSVCS TEXT("Services")
+#define REGSTR_VAL_SYSTRAYBATFLAGS TEXT("PowerFlags")
+#define REGSTR_VAL_SYSTRAYPCCARDFLAGS TEXT("PCMCIAFlags")
+#define REGSTR_PATH_NETWORK_USERSETTINGS	TEXT("Network")
+#define REGSTR_KEY_NETWORK_PERSISTENT	TEXT("\\Persistent")
+#define REGSTR_KEY_NETWORK_RECENT	TEXT("\\Recent")
+#define REGSTR_VAL_REMOTE_PATH	TEXT("RemotePath")
+#define REGSTR_VAL_USER_NAME	TEXT("UserName")
+#define REGSTR_VAL_PROVIDER_NAME	TEXT("ProviderName")
+#define REGSTR_VAL_CONNECTION_TYPE	TEXT("ConnectionType")
+#define REGSTR_VAL_UPGRADE	TEXT("Upgrade")
+#define REGSTR_KEY_LOGON TEXT("\\Logon")
+#define REGSTR_VAL_MUSTBEVALIDATED TEXT("MustBeValidated")
+#define REGSTR_VAL_RUNLOGINSCRIPT	TEXT("ProcessLoginScript")
+#define REGSTR_KEY_NETWORKPROVIDER TEXT("\\NetworkProvider")
+#define REGSTR_PATH_NW32NETPROVIDER REGSTR_PATH_SERVICES TEXT("\\NWNP32" REGSTR_KEY_NETWORKPROVIDER
+#define REGSTR_PATH_MS32NETPROVIDER REGSTR_PATH_SERVICES TEXT("\\MSNP32" REGSTR_KEY_NETWORKPROVIDER
+#define REGSTR_VAL_AUTHENT_AGENT TEXT("AuthenticatingAgent")
+#define REGSTR_VAL_PREFREDIR TEXT("PreferredRedir")
+#define REGSTR_VAL_AUTOSTART TEXT("AutoStart")
+#define REGSTR_VAL_AUTOLOGON TEXT("AutoLogon")
+#define REGSTR_VAL_NETCARD TEXT("Netcard")
+#define REGSTR_VAL_TRANSPORT TEXT("Transport")
+#define REGSTR_VAL_DYNAMIC TEXT("Dynamic")
+#define REGSTR_VAL_TRANSITION TEXT("Transition")
+#define REGSTR_VAL_STATICDRIVE TEXT("StaticDrive")
+#define REGSTR_VAL_LOADHI TEXT("LoadHi")
+#define REGSTR_VAL_LOADRMDRIVERS TEXT("LoadRMDrivers")
+#define REGSTR_VAL_SETUPN TEXT("SetupN")
+#define REGSTR_VAL_SETUPNPATH TEXT("SetupNPath")
+#define REGSTR_VAL_WRKGRP_FORCEMAPPING TEXT("WrkgrpForceMapping")
+#define REGSTR_VAL_WRKGRP_REQUIRED TEXT("WrkgrpRequired")
+#define REGSTR_PATH_CURRENT_CONTROL_SET	TEXT("System\\CurrentControlSet\\Control")
+#define REGSTR_VAL_CURRENT_USER	TEXT("Current User")
+#define REGSTR_PATH_PWDPROVIDER	TEXT("System\\CurrentControlSet\\Control\\PwdProvider")
+#define REGSTR_VAL_PWDPROVIDER_PATH TEXT("ProviderPath")
+#define REGSTR_VAL_PWDPROVIDER_DESC TEXT("Description")
+#define REGSTR_VAL_PWDPROVIDER_CHANGEPWD TEXT("ChangePassword")
+#define REGSTR_VAL_PWDPROVIDER_CHANGEPWDHWND TEXT("ChangePasswordHwnd")
+#define REGSTR_VAL_PWDPROVIDER_GETPWDSTATUS TEXT("GetPasswordStatus")
+#define REGSTR_VAL_PWDPROVIDER_ISNP TEXT("NetworkProvider")
+#define REGSTR_VAL_PWDPROVIDER_CHANGEORDER TEXT("ChangeOrder")
+#define REGSTR_PATH_POLICIES	TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Policies")
+#define REGSTR_PATH_UPDATE	TEXT("System\\CurrentControlSet\\Control\\Update")
+#define REGSTR_VALUE_ENABLE	TEXT("Enable")
+#define REGSTR_VALUE_VERBOSE	TEXT("Verbose")
+#define REGSTR_VALUE_NETPATH	TEXT("NetworkPath")
+#define REGSTR_VALUE_DEFAULTLOC	TEXT("UseDefaultNetLocation")
+#define REGSTR_KEY_NETWORK	TEXT("Network")
+#define REGSTR_KEY_SYSTEM	TEXT("System")
+#define REGSTR_KEY_PRINTERS	TEXT("Printers")
+#define REGSTR_KEY_WINOLDAPP	TEXT("WinOldApp")
+#define REGSTR_VAL_NOFILESHARING	TEXT("NoFileSharing")
+#define REGSTR_VAL_NOPRINTSHARING	TEXT("NoPrintSharing")
+#define REGSTR_VAL_NOFILESHARINGCTRL	TEXT("NoFileSharingControl")
+#define REGSTR_VAL_NOPRINTSHARINGCTRL	TEXT("NoPrintSharingControl")
+#define REGSTR_VAL_HIDESHAREPWDS	TEXT("HideSharePwds")
+#define REGSTR_VAL_DISABLEPWDCACHING	TEXT("DisablePwdCaching")
+#define REGSTR_VAL_ALPHANUMPWDS	TEXT("AlphanumPwds")
+#define REGSTR_VAL_NETSETUP_DISABLE	TEXT("NoNetSetup")
+#define REGSTR_VAL_NETSETUP_NOCONFIGPAGE	TEXT("NoNetSetupConfigPage")
+#define REGSTR_VAL_NETSETUP_NOIDPAGE	TEXT("NoNetSetupIDPage")
+#define REGSTR_VAL_NETSETUP_NOSECURITYPAGE	TEXT("NoNetSetupSecurityPage")
+#define REGSTR_VAL_SYSTEMCPL_NOVIRTMEMPAGE TEXT("NoVirtMemPage")
+#define REGSTR_VAL_SYSTEMCPL_NODEVMGRPAGE TEXT("NoDevMgrPage")
+#define REGSTR_VAL_SYSTEMCPL_NOCONFIGPAGE	TEXT("NoConfigPage")
+#define REGSTR_VAL_SYSTEMCPL_NOFILESYSPAGE	TEXT("NoFileSysPage")
+#define REGSTR_VAL_DISPCPL_NODISPCPL	TEXT("NoDispCPL")
+#define REGSTR_VAL_DISPCPL_NOBACKGROUNDPAGE TEXT("NoDispBackgroundPage")
+#define REGSTR_VAL_DISPCPL_NOSCRSAVPAGE TEXT("NoDispScrSavPage")
+#define REGSTR_VAL_DISPCPL_NOAPPEARANCEPAGE TEXT("NoDispAppearancePage")
+#define REGSTR_VAL_DISPCPL_NOSETTINGSPAGE TEXT("NoDispSettingsPage")
+#define REGSTR_VAL_SECCPL_NOSECCPL	TEXT("NoSecCPL")
+#define REGSTR_VAL_SECCPL_NOPWDPAGE	TEXT("NoPwdPage")
+#define REGSTR_VAL_SECCPL_NOADMINPAGE	TEXT("NoAdminPage")
+#define REGSTR_VAL_SECCPL_NOPROFILEPAGE	TEXT("NoProfilePage")
+#define REGSTR_VAL_PRINTERS_HIDETABS	TEXT("NoPrinterTabs")
+#define REGSTR_VAL_PRINTERS_NODELETE	TEXT("NoDeletePrinter")
+#define REGSTR_VAL_PRINTERS_NOADD	TEXT("NoAddPrinter")
+#define REGSTR_VAL_WINOLDAPP_DISABLED	TEXT("Disabled")
+#define REGSTR_VAL_WINOLDAPP_NOREALMODE	TEXT("NoRealMode")
+#define REGSTR_VAL_NOENTIRENETWORK	TEXT("NoEntireNetwork")
+#define REGSTR_VAL_NOWORKGROUPCONTENTS	TEXT("NoWorkgroupContents")
+#define REGSTR_VAL_MINPWDLEN	TEXT("MinPwdLen")
+#define REGSTR_VAL_PWDEXPIRATION	TEXT("PwdExpiration")
+#define REGSTR_VAL_WIN31PROVIDER	TEXT("Win31Provider")
+#define REGSTR_VAL_DISABLEREGTOOLS	TEXT("DisableRegistryTools")
+#define REGSTR_PATH_WINLOGON	TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Winlogon")
+#define REGSTR_VAL_LEGALNOTICECAPTION	TEXT("LegalNoticeCaption")
+#define REGSTR_VAL_LEGALNOTICETEXT	TEXT("LegalNoticeText")
+#define REGSTR_VAL_RESTRICTRUN	TEXT("RestrictRun")
+#define REGSTR_KEY_POL_USERS	TEXT("Users")
+#define REGSTR_KEY_POL_COMPUTERS	TEXT("Computers")
+#define REGSTR_KEY_POL_USERGROUPS	TEXT("UserGroups")
+#define REGSTR_KEY_POL_DEFAULT	TEXT(".default")
+#define REGSTR_KEY_POL_USERGROUPDATA TEXT("GroupData\\UserGroups\\Priority")
+#define REGSTR_PATH_TIMEZONE	TEXT("System\\CurrentControlSet\\Control\\TimeZoneInformation")
+#define REGSTR_VAL_TZBIAS	TEXT("Bias")
+#define REGSTR_VAL_TZDLTBIAS	TEXT("DaylightBias")
+#define REGSTR_VAL_TZSTDBIAS	TEXT("StandardBias")
+#define REGSTR_VAL_TZACTBIAS	TEXT("ActiveTimeBias")
+#define REGSTR_VAL_TZDLTFLAG	TEXT("DaylightFlag")
+#define REGSTR_VAL_TZSTDSTART	TEXT("StandardStart")
+#define REGSTR_VAL_TZDLTSTART	TEXT("DaylightStart")
+#define REGSTR_VAL_TZDLTNAME	TEXT("DaylightName")
+#define REGSTR_VAL_TZSTDNAME	TEXT("StandardName")
+#define REGSTR_VAL_TZNOCHANGESTART TEXT("NoChangeStart")
+#define REGSTR_VAL_TZNOCHANGEEND TEXT("NoChangeEnd")
+#define REGSTR_VAL_TZNOAUTOTIME TEXT("DisableAutoDaylightTimeSet")
+#define REGSTR_PATH_FLOATINGPOINTPROCESSOR TEXT("HARDWARE\\DESCRIPTION\\System\\FloatingPointProcessor")
+#define REGSTR_PATH_FLOATINGPOINTPROCESSOR0 TEXT("HARDWARE\\DESCRIPTION\\System\\FloatingPointProcessor\\0")
+#define REGSTR_PATH_COMPUTRNAME TEXT("System\\CurrentControlSet\\Control\\ComputerName\\ComputerName")
+#define REGSTR_VAL_COMPUTRNAME TEXT("ComputerName")
+#define REGSTR_PATH_SHUTDOWN TEXT("System\\CurrentControlSet\\Control\\Shutdown")
+#define REGSTR_VAL_FORCEREBOOT TEXT("ForceReboot")
+#define REGSTR_VAL_SETUPPROGRAMRAN TEXT("SetupProgramRan")
+#define REGSTR_VAL_DOES_POLLING TEXT("PollingSupportNeeded")
+#define REGSTR_PATH_KNOWNDLLS	TEXT("System\\CurrentControlSet\\Control\\SessionManager\\KnownDLLs")
+#define REGSTR_PATH_KNOWN16DLLS	TEXT("System\\CurrentControlSet\\Control\\SessionManager\\Known16DLLs")
+#define REGSTR_PATH_CHECKVERDLLS TEXT("System\\CurrentControlSet\\Control\\SessionManager\\CheckVerDLLs")
+#define REGSTR_PATH_WARNVERDLLS TEXT("System\\CurrentControlSet\\Control\\SessionManager\\WarnVerDLLs")
+#define REGSTR_PATH_HACKINIFILE TEXT("System\\CurrentControlSet\\Control\\SessionManager\\HackIniFiles")
+#define REGSTR_PATH_CHECKBADAPPS TEXT("System\\CurrentControlSet\\Control\\SessionManager\\CheckBadApps")
+#define REGSTR_PATH_APPPATCH TEXT("System\\CurrentControlSet\\Control\\SessionManager\\AppPatches")
+#define REGSTR_PATH_KNOWNVXDS	TEXT("System\\CurrentControlSet\\Control\\SessionManager\\KnownVxDs")
+#define REGSTR_VAL_UNINSTALLER_DISPLAYNAME TEXT("DisplayName")
+#define REGSTR_VAL_UNINSTALLER_COMMANDLINE TEXT("UninstallString")
+#define REGSTR_PATH_DESKTOP	REGSTR_PATH_SCREENSAVE
+#define REGSTR_PATH_MOUSE	TEXT("Control Panel\\Mouse")
+#define REGSTR_PATH_KEYBOARD TEXT("Control Panel\\Keyboard")
+#define REGSTR_PATH_COLORS	TEXT("Control Panel\\Colors")
+#define REGSTR_PATH_SOUND	TEXT("Control Panel\\Sound")
+#define REGSTR_PATH_METRICS	TEXT("Control Panel\\Desktop\\WindowMetrics")
+#define REGSTR_PATH_ICONS TEXT("Control Panel\\Icons")
+#define REGSTR_PATH_CURSORS TEXT("Control Panel\\Cursors")
+#define REGSTR_PATH_CHECKDISK	TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Applets\\Check Drive")
+#define REGSTR_PATH_CHECKDISKSET TEXT("Settings")
+#define REGSTR_PATH_CHECKDISKUDRVS TEXT("NoUnknownDDErrDrvs")
+#define REGSTR_PATH_FAULT	TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Fault")
+#define REGSTR_VAL_FAULT_LOGFILE	TEXT("LogFile")
+#define	REGSTR_PATH_AEDEBUG	TEXT("Software\\Microsoft\\Windows NT\\CurrentVersion\\AeDebug")
+#define REGSTR_VAL_AEDEBUG_DEBUGGER	TEXT("Debugger")
+#define REGSTR_VAL_AEDEBUG_AUTO	TEXT("Auto")
+#define REGSTR_PATH_GRPCONV	TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\GrpConv")
+#define REGSTR_VAL_REGITEMDELETEMESSAGE TEXT("Removal Message")
+#define REGSTR_PATH_LASTCHECK	TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\LastCheck")
+#define REGSTR_PATH_LASTOPTIMIZE	TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\LastOptimize")
+#define REGSTR_PATH_LASTBACKUP	TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\LastBackup")
+#define REGSTR_PATH_CHKLASTCHECK	TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Applets\\Check Drive\\LastCheck")
+#define REGSTR_PATH_CHKLASTSURFAN	TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Applets\\Check Drive\\LastSurfaceAnalysis")
+#define DTRESULTOK	0
+#define DTRESULTFIX	1
+#define DTRESULTPROB	2
+#define DTRESULTPART	3
+#define REGSTR_KEY_SHARES	TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Network\\LanMan")
+#define REGSTR_VAL_SHARES_FLAGS TEXT("Flags")
+#define REGSTR_VAL_SHARES_TYPE TEXT("Type")
+#define REGSTR_VAL_SHARES_PATH TEXT("Path")
+#define REGSTR_VAL_SHARES_REMARK TEXT("Remark")
+#define REGSTR_VAL_SHARES_RW_PASS TEXT("Parm1")
+#define REGSTR_VAL_SHARES_RO_PASS TEXT("Parm2")
+#define REGSTR_PATH_PRINT TEXT("System\\CurrentControlSet\\Control\\Print")
+#define REGSTR_PATH_PRINTERS TEXT("System\\CurrentControlSet\\Control\\Print\\Printers")
+#define REGSTR_PATH_PROVIDERS TEXT("System\\CurrentControlSet\\Control\\Print\\Providers")
+#define REGSTR_PATH_MONITORS TEXT("System\\CurrentControlSet\\Control\\Print\\Monitors")
+#define REGSTR_PATH_ENVIRONMENTS TEXT("System\\CurrentControlSet\\Control\\Print\\Environments")
+#define REGSTR_VAL_START_ON_BOOT TEXT("StartOnBoot")
+#define REGSTR_VAL_PRINTERS_MASK TEXT("PrintersMask")
+#define REGSTR_VAL_DOS_SPOOL_MASK TEXT("DOSSpoolMask")
+#define REGSTR_KEY_CURRENT_ENV TEXT("\\Windows 4.0")
+#define REGSTR_KEY_DRIVERS TEXT("\\Drivers")
+#define REGSTR_KEY_PRINT_PROC TEXT("\\Print Processors")
+#define REGSTR_PATH_EVENTLABELS TEXT("AppEvents\\EventLabels")
+#define REGSTR_PATH_SCHEMES TEXT("AppEvents\\Schemes")
+#define REGSTR_PATH_APPS REGSTR_PATH_SCHEMES TEXT("\\Apps")
+#define REGSTR_PATH_APPS_DEFAULT REGSTR_PATH_SCHEMES TEXT("\\Apps\\.Default")
+#define REGSTR_PATH_NAMES REGSTR_PATH_SCHEMES TEXT("\\Names")
+#define REGSTR_PATH_MULTIMEDIA REGSTR_PATH_SETUP TEXT("\\Multimedia")
+#define REGSTR_PATH_MULTIMEDIA_AUDIO TEXT("Software\\Microsoft\\Multimedia\\Audio")
+#define REGSTR_PATH_MEDIARESOURCES REGSTR_PATH_CURRENT_CONTROL_SET TEXT("\\MediaResources")
+#define REGSTR_PATH_MEDIAPROPERTIES REGSTR_PATH_CURRENT_CONTROL_SET TEXT("\\MediaProperties")
+#define REGSTR_PATH_PRIVATEPROPERTIES REGSTR_PATH_MEDIAPROPERTIES TEXT("\\PrivateProperties")
+#define REGSTR_PATH_PUBLICPROPERTIES REGSTR_PATH_MEDIAPROPERTIES TEXT("\\PublicProperties")
+#define REGSTR_PATH_JOYOEM REGSTR_PATH_PRIVATEPROPERTIES TEXT("\\Joystick\\OEM")
+#define REGSTR_PATH_JOYCONFIG REGSTR_PATH_MEDIARESOURCES TEXT("\\Joystick")
+#define REGSTR_KEY_JOYCURR TEXT("CurrentJoystickSettings")
+#define REGSTR_KEY_JOYSETTINGS TEXT("JoystickSettings")
+#define REGSTR_VAL_JOYUSERVALUES TEXT("JoystickUserValues")
+#define REGSTR_VAL_JOYCALLOUT	TEXT("JoystickCallout")
+#define REGSTR_VAL_JOYNCONFIG	TEXT("Joystick%dConfiguration")
+#define REGSTR_VAL_JOYNOEMNAME	TEXT("Joystick%dOEMName")
+#define REGSTR_VAL_JOYNOEMCALLOUT TEXT("Joystick%dOEMCallout")
+#define REGSTR_VAL_JOYOEMCALLOUT	TEXT("OEMCallout")
+#define REGSTR_VAL_JOYOEMNAME	TEXT("OEMName")
+#define REGSTR_VAL_JOYOEMDATA	TEXT("OEMData")
+#define REGSTR_VAL_JOYOEMXYLABEL	TEXT("OEMXYLabel")
+#define REGSTR_VAL_JOYOEMZLABEL	TEXT("OEMZLabel")
+#define REGSTR_VAL_JOYOEMRLABEL	TEXT("OEMRLabel")
+#define REGSTR_VAL_JOYOEMPOVLABEL	TEXT("OEMPOVLabel")
+#define REGSTR_VAL_JOYOEMULABEL	TEXT("OEMULabel")
+#define REGSTR_VAL_JOYOEMVLABEL	TEXT("OEMVLabel")
+#define REGSTR_VAL_JOYOEMTESTMOVEDESC	TEXT("OEMTestMoveDesc")
+#define REGSTR_VAL_JOYOEMTESTBUTTONDESC	TEXT("OEMTestButtonDesc")
+#define REGSTR_VAL_JOYOEMTESTMOVECAP	TEXT("OEMTestMoveCap")
+#define REGSTR_VAL_JOYOEMTESTBUTTONCAP	TEXT("OEMTestButtonCap")
+#define REGSTR_VAL_JOYOEMTESTWINCAP	TEXT("OEMTestWinCap")
+#define REGSTR_VAL_JOYOEMCALCAP	TEXT("OEMCalCap")
+#define REGSTR_VAL_JOYOEMCALWINCAP	TEXT("OEMCalWinCap")
+#define REGSTR_VAL_JOYOEMCAL1	TEXT("OEMCal1")
+#define REGSTR_VAL_JOYOEMCAL2	TEXT("OEMCal2")
+#define REGSTR_VAL_JOYOEMCAL3	TEXT("OEMCal3")
+#define REGSTR_VAL_JOYOEMCAL4	TEXT("OEMCal4")
+#define REGSTR_VAL_JOYOEMCAL5	TEXT("OEMCal5")
+#define REGSTR_VAL_JOYOEMCAL6	TEXT("OEMCal6")
+#define REGSTR_VAL_JOYOEMCAL7	TEXT("OEMCal7")
+#define REGSTR_VAL_JOYOEMCAL8	TEXT("OEMCal8")
+#define REGSTR_VAL_JOYOEMCAL9	TEXT("OEMCal9")
+#define REGSTR_VAL_JOYOEMCAL10	TEXT("OEMCal10")
+#define REGSTR_VAL_JOYOEMCAL11	TEXT("OEMCal11")
+#define REGSTR_VAL_JOYOEMCAL12	TEXT("OEMCal12")
+#ifndef NEC_98
+#define REGSTR_KEY_ISAENUM	TEXT("ISAPnP")
+#define REGSTR_KEY_EISAENUM	TEXT("EISA")
+#define	REGSTR_VAL_EISA_RANGES	TEXT("EISARanges")
+#define	REGSTR_VAL_EISA_FUNCTIONS	TEXT("EISAFunctions")
+#define	REGSTR_VAL_EISA_FUNCTIONS_MASK	TEXT("EISAFunctionsMask")
+#define	REGSTR_VAL_EISA_FLAGS	TEXT("EISAFlags")
+#define	REGSTR_VAL_EISA_SIMULATE_INT15	TEXT("EISASimulateInt15")
+#else
+#define REGSTR_KEY_ISAENUM	TEXT("C98PnP")
+#define REGSTR_KEY_EISAENUM	TEXT("NESA")
+#define	REGSTR_VAL_EISA_RANGES	TEXT("NESARanges")
+#define	REGSTR_VAL_EISA_FUNCTIONS	TEXT("NESAFunctions")
+#define	REGSTR_VAL_EISA_FUNCTIONS_MASK	TEXT("NESAFunctionsMask")
+#define	REGSTR_VAL_EISA_FLAGS	TEXT("NESAFlags")
+#define	REGSTR_VAL_EISA_SIMULATE_INT15	TEXT("NESASimulateInt15")
+#endif
+typedef struct _DSKTLSYSTEMTIME {
+	WORD wYear;
+	WORD wMonth;
+	WORD wDayOfWeek;
+	WORD wDay;
+	WORD wHour;
+	WORD wMinute;
+	WORD wSecond;
+	WORD wMilliseconds;
+	WORD wResult;
+} DSKTLSYSTEMTIME,*PDSKTLSYSTEMTIME,*LPDSKTLSYSTEMTIME;
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/richedit.h
===================================================================
--- Daodan/MinGW/include/richedit.h	(revision 1046)
+++ Daodan/MinGW/include/richedit.h	(revision 1046)
@@ -0,0 +1,523 @@
+#ifndef _RICHEDIT_H
+#define _RICHEDIT_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#pragma pack(push,4)
+
+#ifdef UNICODE
+#define RICHEDIT_CLASS L"RichEdit20W"
+#else
+#define RICHEDIT_CLASS "RichEdit20A"
+#endif
+#define RICHEDIT_CLASS10A    "RICHEDIT"
+#define CF_RTF TEXT("Rich Text Format")
+#define CF_RTFNOOBJS TEXT("Rich Text Format Without Objects")
+#define CF_RETEXTOBJ TEXT("RichEdit Text and Objects")
+#define CFM_BOLD	1
+#define CFM_ITALIC	2
+#define CFM_UNDERLINE	4
+#define CFM_STRIKEOUT	8
+#define CFM_PROTECTED	16
+#define CFM_LINK	32
+#define CFM_SIZE	0x80000000
+#define CFM_COLOR	0x40000000
+#define CFM_FACE	0x20000000
+#define CFM_OFFSET	0x10000000
+#define CFM_CHARSET	0x08000000
+#define CFM_SUBSCRIPT	0x00030000
+#define CFM_SUPERSCRIPT	0x00030000
+#define CFM_EFFECTS	(CFM_BOLD | CFM_ITALIC | CFM_UNDERLINE | CFM_COLOR | CFM_STRIKEOUT | CFE_PROTECTED | CFM_LINK)
+#define CFE_BOLD	1
+#define CFE_ITALIC	2
+#define CFE_UNDERLINE	4
+#define CFE_STRIKEOUT	8
+#define CFE_PROTECTED	16
+#define CFE_AUTOCOLOR	0x40000000
+#define CFE_SUBSCRIPT	0x00010000
+#define CFE_SUPERSCRIPT	0x00020000
+#define IMF_FORCENONE	1
+#define IMF_FORCEENABLE	2
+#define IMF_FORCEDISABLE	4
+#define IMF_CLOSESTATUSWINDOW	8
+#define IMF_VERTICAL	32
+#define IMF_FORCEACTIVE	64
+#define IMF_FORCEINACTIVE	128
+#define IMF_FORCEREMEMBER	256
+#define SEL_EMPTY       0
+#define SEL_TEXT        1
+#define SEL_OBJECT      2
+#define SEL_MULTICHAR   4
+#define SEL_MULTIOBJECT 8
+#define MAX_TAB_STOPS 32
+#define PFM_ALIGNMENT 8
+#define PFM_NUMBERING 32
+#define PFM_OFFSET 4
+#define PFM_OFFSETINDENT 0x80000000
+#define PFM_RIGHTINDENT 2
+#define PFM_STARTINDENT 1
+#define PFM_TABSTOPS 16
+#define PFM_BORDER 2048
+#define PFM_LINESPACING 256
+#define PFM_NUMBERINGSTART 32768
+#define PFM_NUMBERINGSTYLE 8192
+#define PFM_NUMBERINGTAB 16384
+#define PFM_SHADING 4096
+#define PFM_SPACEAFTER 128
+#define PFM_SPACEBEFORE 64
+#define PFM_STYLE 1024
+#define PFM_DONOTHYPHEN 4194304
+#define PFM_KEEP 131072
+#define PFM_KEEPNEXT 262144
+#define PFM_NOLINENUMBER 1048576
+#define PFM_NOWIDOWCONTROL 2097152
+#define PFM_PAGEBREAKBEFORE 524288
+#define PFM_RTLPARA 65536
+#define PFM_SIDEBYSIDE 8388608
+#define PFM_TABLE 1073741824
+#define PFN_BULLET 1
+#define PFE_DONOTHYPHEN 64
+#define PFE_KEEP 2
+#define PFE_KEEPNEXT 4
+#define PFE_NOLINENUMBER 16
+#define PFE_NOWIDOWCONTROL 32
+#define PFE_PAGEBREAKBEFORE 8
+#define PFE_RTLPARA 1
+#define PFE_SIDEBYSIDE 128
+#define PFE_TABLE 16384
+#define PFA_LEFT 1
+#define PFA_RIGHT 2
+#define PFA_CENTER 3
+#define PFA_JUSTIFY 4
+#define PFA_FULL_INTERWORD 4
+#define SF_TEXT	1
+#define SF_RTF	2
+#define SF_RTFNOOBJS	3
+#define SF_TEXTIZED	4
+#define SF_UNICODE	16
+#define SF_USECODEPAGE	32
+#define SF_NCRFORNONASCII	64
+#define SF_RTFVAL	0x0700
+#define SFF_PWD	0x0800
+#define SFF_KEEPDOCINFO	0x1000
+#define SFF_PERSISTVIEWSCALE	0x2000
+#define SFF_PLAINRTF	0x4000
+#define SFF_SELECTION	0x8000
+#define WB_CLASSIFY	3
+#define WB_MOVEWORDLEFT	4
+#define WB_MOVEWORDRIGHT	5
+#define WB_LEFTBREAK	6
+#define WB_RIGHTBREAK	7
+#define WB_MOVEWORDPREV	4
+#define WB_MOVEWORDNEXT	5
+#define WB_PREVBREAK	6
+#define WB_NEXTBREAK	7
+#define WBF_WORDWRAP	16
+#define WBF_WORDBREAK	32
+#define WBF_OVERFLOW	64
+#define WBF_LEVEL1	128
+#define WBF_LEVEL2	256
+#define WBF_CUSTOM	512
+#define ES_DISABLENOSCROLL	8192
+#define ES_EX_NOCALLOLEINIT 16777216
+#define ES_NOIME 524288
+#define ES_NOOLEDRAGDROP 8
+#define ES_SAVESEL	32768
+#define ES_SELECTIONBAR 16777216
+#define ES_SELFIME 262144
+#define ES_SUNKEN 16384
+#define ES_VERTICAL 4194304
+#define EM_CANPASTE	(WM_USER+50)
+#define EM_DISPLAYBAND	(WM_USER+51)
+#define EM_EXGETSEL	(WM_USER+52)
+#define EM_EXLIMITTEXT	(WM_USER+53)
+#define EM_EXLINEFROMCHAR	(WM_USER+54)
+#define EM_EXSETSEL	(WM_USER+55)
+#define EM_FINDTEXT	(WM_USER+56)
+#define EM_FORMATRANGE	(WM_USER+57)
+#define EM_GETCHARFORMAT	(WM_USER+58)
+#define EM_GETEVENTMASK	(WM_USER+59)
+#define EM_GETOLEINTERFACE	(WM_USER+60)
+#define EM_GETPARAFORMAT	(WM_USER+61)
+#define EM_GETSELTEXT	(WM_USER+62)
+#define EM_HIDESELECTION	(WM_USER+63)
+#define EM_PASTESPECIAL	(WM_USER+64)
+#define EM_REQUESTRESIZE	(WM_USER+65)
+#define EM_SELECTIONTYPE	(WM_USER+66)
+#define EM_SETBKGNDCOLOR	(WM_USER+67)
+#define EM_SETCHARFORMAT	(WM_USER+68)
+#define EM_SETEVENTMASK	(WM_USER+69)
+#define EM_SETOLECALLBACK	(WM_USER+70)
+#define EM_SETPARAFORMAT	(WM_USER+71)
+#define EM_SETTARGETDEVICE	(WM_USER+72)
+#define EM_STREAMIN	(WM_USER+73)
+#define EM_STREAMOUT	(WM_USER+74)
+#define EM_GETTEXTRANGE	(WM_USER+75)
+#define EM_FINDWORDBREAK	(WM_USER+76)
+#define EM_SETOPTIONS	(WM_USER+77)
+#define EM_GETOPTIONS	(WM_USER+78)
+#define EM_FINDTEXTEX	(WM_USER+79)
+#define EM_GETWORDBREAKPROCEX	(WM_USER+80)
+#define EM_SETWORDBREAKPROCEX	(WM_USER+81)
+/* RichEdit 2.0 messages */
+#define EM_SETUNDOLIMIT	(WM_USER+82)
+#define EM_REDO	(WM_USER+84)
+#define EM_CANREDO	(WM_USER+85)
+#define EM_GETUNDONAME	(WM_USER+86)
+#define EM_GETREDONAME	(WM_USER+87)
+#define EM_STOPGROUPTYPING	(WM_USER+88)
+#define EM_SETTEXTMODE	(WM_USER+89)
+#define EM_GETTEXTMODE	(WM_USER+90)
+#define EM_AUTOURLDETECT	(WM_USER+91)
+#define EM_GETAUTOURLDETECT	(WM_USER + 92)
+#define EM_SETPALETTE	(WM_USER + 93)
+#define EM_GETTEXTEX	(WM_USER+94)
+#define EM_GETTEXTLENGTHEX	(WM_USER+95)
+#define EM_SHOWSCROLLBAR	(WM_USER+96)
+#define EM_SETTEXTEX	(WM_USER + 97)
+#define EM_SETPUNCTUATION	(WM_USER + 100)
+#define EM_GETPUNCTUATION	(WM_USER + 101)
+#define EM_SETWORDWRAPMODE	(WM_USER + 102)
+#define EM_GETWORDWRAPMODE	(WM_USER + 103)
+#define EM_SETIMECOLOR	(WM_USER + 104)
+#define EM_GETIMECOLOR	(WM_USER + 105)
+#define EM_SETIMEOPTIONS	(WM_USER + 106)
+#define EM_GETIMEOPTIONS	(WM_USER + 107)
+#define EM_SETLANGOPTIONS	(WM_USER+120)
+#define EM_GETLANGOPTIONS	(WM_USER+121)
+#define EM_GETIMECOMPMODE	(WM_USER+122)
+#define EM_FINDTEXTW	(WM_USER + 123)
+#define EM_FINDTEXTEXW	(WM_USER + 124)
+#define EM_RECONVERSION	(WM_USER + 125)
+#define EM_SETBIDIOPTIONS	(WM_USER + 200)
+#define EM_GETBIDIOPTIONS	(WM_USER + 201)
+#define EM_SETTYPOGRAPHYOPTIONS	(WM_USER+202)
+#define EM_GETTYPOGRAPHYOPTIONS	(WM_USER+203)
+#define EM_SETEDITSTYLE	(WM_USER + 204)
+#define EM_GETEDITSTYLE	(WM_USER + 205)
+#define EM_GETSCROLLPOS	(WM_USER+221)
+#define EM_SETSCROLLPOS	(WM_USER+222)
+#define EM_SETFONTSIZE	(WM_USER+223)
+#define EM_GETZOOM	(WM_USER+224)
+#define EM_SETZOOM	(WM_USER+225)
+
+#define EN_CORRECTTEXT 1797
+#define EN_DROPFILES 1795
+#define EN_IMECHANGE 1799
+#define EN_LINK 1803
+#define EN_MSGFILTER 1792
+#define EN_OLEOPFAILED 1801
+#define EN_PROTECTED 1796
+#define EN_REQUESTRESIZE 1793
+#define EN_SAVECLIPBOARD 1800
+#define EN_SELCHANGE 1794
+#define EN_STOPNOUNDO 1798
+#define ENM_NONE 0
+#define ENM_CHANGE 1
+#define ENM_CORRECTTEXT 4194304
+#define ENM_DRAGDROPDONE	16
+#define ENM_DROPFILES 1048576
+#define ENM_IMECHANGE 8388608
+#define ENM_KEYEVENTS 65536
+#define ENM_LANGCHANGE 16777216
+#define ENM_LINK 67108864
+#define ENM_MOUSEEVENTS 131072
+#define ENM_OBJECTPOSITIONS 33554432
+#define ENM_PROTECTED 2097152
+#define ENM_REQUESTRESIZE 262144
+#define ENM_SCROLL 4
+#define ENM_SCROLLEVENTS 8
+#define ENM_SELCHANGE 524288
+#define ENM_UPDATE 2
+#define ECO_AUTOWORDSELECTION	1
+#define ECO_AUTOVSCROLL	64
+#define ECO_AUTOHSCROLL	128
+#define ECO_NOHIDESEL	256
+#define ECO_READONLY	2048
+#define ECO_WANTRETURN	4096
+#define ECO_SAVESEL	0x8000
+#define ECO_SELECTIONBAR	0x1000000
+#define ECO_VERTICAL	0x400000
+#define ECOOP_SET	1
+#define ECOOP_OR	2
+#define ECOOP_AND	3
+#define ECOOP_XOR	4
+#define SCF_DEFAULT	0
+#define SCF_SELECTION	1
+#define SCF_WORD	2
+#define SCF_ALL	4
+#define SCF_USEUIRULES	8
+#define TM_PLAINTEXT	1
+#define TM_RICHTEXT	2
+#define TM_SINGLELEVELUNDO	4
+#define TM_MULTILEVELUNDO	8
+#define TM_SINGLECODEPAGE	16
+#define TM_MULTICODEPAGE	32
+#define yHeightCharPtsMost 1638
+#define lDefaultTab 720
+
+typedef struct _charformat {
+	UINT cbSize;
+	DWORD dwMask;
+	DWORD dwEffects;
+	LONG yHeight;
+	LONG yOffset;
+	COLORREF crTextColor;
+	BYTE bCharSet;
+	BYTE bPitchAndFamily;
+	char szFaceName[LF_FACESIZE];
+} CHARFORMATA;
+typedef struct _charformatw {
+	UINT cbSize;
+	DWORD dwMask;
+	DWORD dwEffects;
+	LONG yHeight;
+	LONG yOffset;
+	COLORREF crTextColor;
+	BYTE bCharSet;
+	BYTE bPitchAndFamily;
+	WCHAR szFaceName[LF_FACESIZE];
+} CHARFORMATW;
+typedef struct _charformat2a {
+	UINT cbSize;
+	DWORD dwMask;
+	DWORD dwEffects;
+	LONG yHeight;
+	LONG yOffset;
+	COLORREF crTextColor;
+	BYTE bCharSet;
+	BYTE bPitchAndFamily;
+	char szFaceName[LF_FACESIZE];
+	WORD wWeight;
+	SHORT sSpacing;
+	COLORREF crBackColor;
+	LCID lcid;
+	DWORD dwReserved;
+	SHORT sStyle;
+	WORD wKerning;
+	BYTE bUnderlineType;
+	BYTE bAnimation;
+	BYTE bRevAuthor;
+} CHARFORMAT2A;
+typedef struct _charformat2w {
+	UINT cbSize;
+	DWORD dwMask;
+	DWORD dwEffects;
+	LONG yHeight;
+	LONG yOffset;
+	COLORREF crTextColor;
+	BYTE bCharSet;
+	BYTE bPitchAndFamily;
+	WCHAR szFaceName[LF_FACESIZE];
+	WORD wWeight;
+	SHORT sSpacing;
+	COLORREF crBackColor;
+	LCID lcid;
+	DWORD dwReserved;
+	SHORT sStyle;
+	WORD wKerning;
+	BYTE bUnderlineType;
+	BYTE bAnimation;
+	BYTE bRevAuthor;
+} CHARFORMAT2W;
+typedef struct _charrange {
+	LONG cpMin;
+	LONG cpMax;
+} CHARRANGE;
+typedef struct _compcolor {
+	COLORREF crText;
+	COLORREF crBackground;
+	DWORD dwEffects;
+} COMPCOLOR;
+typedef DWORD(CALLBACK *EDITSTREAMCALLBACK)(DWORD,PBYTE,LONG,LONG*);
+typedef struct _editstream {
+	DWORD dwCookie;
+	DWORD dwError;
+	EDITSTREAMCALLBACK pfnCallback;
+} EDITSTREAM;
+typedef struct _encorrecttext {
+	NMHDR nmhdr;
+	CHARRANGE chrg;
+	WORD seltyp;
+} ENCORRECTTEXT;
+typedef struct _endropfiles {
+	NMHDR nmhdr;
+	HANDLE hDrop;
+	LONG cp;
+	BOOL fProtected;
+} ENDROPFILES;
+typedef struct _enlink {
+	NMHDR nmhdr;
+	UINT msg;
+	WPARAM wParam;
+	LPARAM lParam;
+	CHARRANGE chrg;
+} ENLINK;
+typedef struct {
+	NMHDR nmhdr;
+	LONG iob;
+	LONG lOper;
+	HRESULT hr;
+} ENOLEOPFAILED;
+typedef struct _enprotected {
+	NMHDR nmhdr;
+	UINT msg;
+	WPARAM wParam;
+	LPARAM lParam;
+	CHARRANGE chrg;
+} ENPROTECTED,*LPENPROTECTED;
+typedef struct _ensaveclipboard {
+	NMHDR nmhdr;
+	LONG cObjectCount;
+	LONG cch;
+} ENSAVECLIPBOARD;
+typedef struct _findtextA {
+	CHARRANGE chrg;
+	LPSTR lpstrText;
+} FINDTEXTA;
+typedef struct _findtextW {
+	CHARRANGE chrg;
+	LPWSTR lpstrText;
+} FINDTEXTW;
+typedef struct _findtextexA {
+	CHARRANGE chrg;
+	LPSTR lpstrText;
+	CHARRANGE chrgText;
+} FINDTEXTEXA;
+typedef struct _findtextexW {
+	CHARRANGE chrg;
+	LPWSTR lpstrText;
+	CHARRANGE chrgText;
+} FINDTEXTEXW;
+typedef struct _formatrange {
+	HDC hdc;
+	HDC hdcTarget;
+	RECT rc;
+	RECT rcPage;
+	CHARRANGE chrg;
+} FORMATRANGE;
+typedef struct _msgfilter {
+	NMHDR nmhdr;
+    UINT msg;
+	WPARAM wParam;
+	LPARAM lParam;
+} MSGFILTER;
+typedef struct _paraformat {
+	UINT cbSize;
+	DWORD dwMask;
+	WORD wNumbering;
+	WORD wReserved;
+	LONG dxStartIndent;
+	LONG dxRightIndent;
+	LONG dxOffset;
+	WORD wAlignment;
+	SHORT cTabCount;
+	LONG rgxTabs[MAX_TAB_STOPS];
+} PARAFORMAT;
+typedef struct _paraformat2 {
+	UINT cbSize;
+	DWORD dwMask;
+	WORD wNumbering;
+	WORD wEffects;
+	LONG dxStartIndent;
+	LONG dxRightIndent;
+	LONG dxOffset;
+	WORD wAlignment;
+	SHORT cTabCount;
+	LONG rgxTabs[MAX_TAB_STOPS];
+	LONG dySpaceBefore;
+	LONG dySpaceAfter;
+	LONG dyLineSpacing;
+	SHORT sStype;
+	BYTE bLineSpacingRule;
+	BYTE bOutlineLevel;
+	WORD wShadingWeight;
+	WORD wShadingStyle;
+	WORD wNumberingStart;
+	WORD wNumberingStyle;
+	WORD wNumberingTab;
+	WORD wBorderSpace;
+	WORD wBorderWidth;
+	WORD wBorders;
+} PARAFORMAT2;
+typedef struct _selchange {
+	NMHDR nmhdr;
+	CHARRANGE chrg;
+	WORD seltyp;
+} SELCHANGE;
+typedef struct _textrange {
+	CHARRANGE chrg;
+	LPSTR lpstrText;
+} TEXTRANGEA;
+typedef struct _textrangew {
+	CHARRANGE chrg;
+	LPWSTR lpstrText;
+} TEXTRANGEW;
+typedef struct _reqresize {
+	NMHDR nmhdr;
+	RECT rc;
+} REQRESIZE;
+typedef struct _repastespecial {
+	DWORD dwAspect;
+	DWORD dwParam;
+} REPASTESPECIAL;
+typedef struct _punctuation {
+	UINT iSize;
+	LPSTR szPunctuation;
+} PUNCTUATION;
+typedef struct _gettextex {
+	DWORD cb;
+	DWORD flags;
+	UINT codepage;
+	LPCSTR lpDefaultChar;
+	LPBOOL lpUsedDefChar;
+} GETTEXTEX;
+/* GETTEXTEX flags */
+#define GT_DEFAULT	0
+#define GT_USECRLF	1
+#define GT_SELECTION	2
+typedef struct _settextex {
+	DWORD flags;
+	UINT codepage;
+} SETTEXTEX;
+/* SETTEXTEX flags */
+#define ST_DEFAULT	0
+#define ST_KEEPUNDO	1
+#define ST_SELECTION	2
+typedef LONG (*EDITWORDBREAKPROCEX)(char*,LONG,BYTE,INT);
+/* Defines for EM_SETTYPOGRAPHYOPTIONS */
+#define	TO_ADVANCEDTYPOGRAPHY	1
+#define	TO_SIMPLELINEBREAK	2
+/* Defines for GETTEXTLENGTHEX */
+#define GTL_DEFAULT	0
+#define GTL_USECRLF	1
+#define GTL_PRECISE	2
+#define GTL_CLOSE	4
+#define GTL_NUMCHARS	8
+#define GTL_NUMBYTES	16
+typedef struct _gettextlengthex {
+	DWORD flags;
+	UINT codepage;
+} GETTEXTLENGTHEX;
+#ifdef UNICODE
+typedef CHARFORMATW CHARFORMAT;
+typedef CHARFORMAT2W CHARFORMAT2;
+typedef FINDTEXTW FINDTEXT;
+typedef FINDTEXTEXW FINDTEXTEX;
+typedef TEXTRANGEW TEXTRANGE;
+#else
+typedef CHARFORMATA CHARFORMAT;
+typedef CHARFORMAT2A CHARFORMAT2;
+typedef FINDTEXTA FINDTEXT;
+typedef FINDTEXTEXA FINDTEXTEX;
+typedef TEXTRANGEA TEXTRANGE;
+#endif
+#pragma pack(pop)
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/richole.h
===================================================================
--- Daodan/MinGW/include/richole.h	(revision 1046)
+++ Daodan/MinGW/include/richole.h	(revision 1046)
@@ -0,0 +1,107 @@
+#ifndef _RICHOLE_H
+#define	_RICHOLE_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#pragma pack(push,4)
+#define REO_GETOBJ_NO_INTERFACES	0
+#define REO_GETOBJ_POLEOBJ	1
+#define REO_GETOBJ_PSTG	2
+#define REO_GETOBJ_POLESITE	4
+#define REO_GETOBJ_ALL_INTERFACES	7
+#define REO_CP_SELECTION ((ULONG)-1)
+#define REO_IOB_SELECTION ((ULONG)-1)
+#define REO_IOB_USE_CP ((ULONG)-2)
+#define REO_NULL	0
+#define REO_READWRITEMASK	0x3FL
+#define REO_DONTNEEDPALETTE	32
+#define REO_BLANK	16
+#define REO_DYNAMICSIZE		8
+#define REO_INVERTEDSELECT	4
+#define REO_BELOWBASELINE	2
+#define REO_RESIZABLE	1
+#define REO_LINK	0x80000000
+#define REO_STATIC	0x40000000
+#define REO_SELECTED	0x08000000
+#define REO_OPEN	0x4000000
+#define REO_INPLACEACTIVE	0x2000000
+#define REO_HILITED	0x1000000
+#define REO_LINKAVAILABLE	0x800000
+#define REO_GETMETAFILE	0x400000
+#define RECO_PASTE	0
+#define RECO_DROP	1
+#define RECO_COPY	2
+#define RECO_CUT	3
+#define RECO_DRAG	4
+
+extern const GUID IID_IRichEditOle;
+extern const GUID IID_IRichEditOleCallback;
+#ifndef INITGUID
+typedef struct _reobject {
+	DWORD cbStruct;
+	LONG	cp;
+	CLSID	clsid;
+	LPOLEOBJECT	poleobj;
+	LPSTORAGE	pstg;
+	LPOLECLIENTSITE	polesite;
+	SIZEL	sizel;
+	DWORD	dvaspect;
+	DWORD	dwFlags;
+	DWORD	dwUser;
+} REOBJECT;
+
+#define INTERFACE IRichEditOle
+DECLARE_INTERFACE_(IRichEditOle, IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetClientSite)(THIS_ LPOLECLIENTSITE*) PURE;
+	STDMETHOD_(LONG,GetObjectCount)(THIS) PURE;
+	STDMETHOD_(LONG,GetLinkCount)(THIS) PURE;
+	STDMETHOD(GetObject)(THIS_ LONG, REOBJECT*,DWORD) PURE;
+	STDMETHOD(InsertObject)(THIS_ REOBJECT*) PURE;
+	STDMETHOD(ConvertObject)(THIS_ LONG,REFCLSID,LPCSTR) PURE;
+	STDMETHOD(ActivateAs)(THIS_ REFCLSID,REFCLSID) PURE;
+	STDMETHOD(SetHostNames)(THIS_ LPCSTR,LPCSTR) PURE;
+	STDMETHOD(SetLinkAvailable)(THIS_ LONG,BOOL) PURE;
+	STDMETHOD(SetDvaspect)(THIS_ LONG,DWORD) PURE;
+	STDMETHOD(HandsOffStorage)(THIS_ LONG) PURE;
+	STDMETHOD(SaveCompleted)(THIS_ LONG,LPSTORAGE) PURE;
+	STDMETHOD(InPlaceDeactivate)(THIS) PURE;
+	STDMETHOD(ContextSensitiveHelp)(THIS_ BOOL) PURE;
+	STDMETHOD(GetClipboardData)(THIS_ CHARRANGE*,DWORD,LPDATAOBJECT*) PURE;
+	STDMETHOD(ImportDataObject)(THIS_ LPDATAOBJECT,CLIPFORMAT,HGLOBAL) PURE;
+};
+#undef INTERFACE
+typedef IRichEditOle *LPRICHEDITOLE;
+
+#define INTERFACE IRichEditOleCallback
+DECLARE_INTERFACE_(IRichEditOleCallback, IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetNewStorage)(THIS_ LPSTORAGE*) PURE;
+	STDMETHOD(GetInPlaceContext)(THIS_ LPOLEINPLACEFRAME*,LPOLEINPLACEUIWINDOW*,LPOLEINPLACEFRAMEINFO) PURE;
+	STDMETHOD(ShowContainerUI)(THIS_ BOOL) PURE;
+	STDMETHOD(QueryInsertObject)(THIS_ LPCLSID,LPSTORAGE,LONG) PURE;
+	STDMETHOD(DeleteObject)(THIS_ LPOLEOBJECT) PURE;
+	STDMETHOD(QueryAcceptData) (THIS_ LPDATAOBJECT,CLIPFORMAT*,DWORD,BOOL,HGLOBAL) PURE;
+	STDMETHOD(ContextSensitiveHelp) (THIS_ BOOL) PURE;
+	STDMETHOD(GetClipboardData) (THIS_ CHARRANGE*,DWORD,LPDATAOBJECT*) PURE;
+	STDMETHOD(GetDragDropEffect) (THIS_ BOOL,DWORD,PDWORD) PURE;
+	STDMETHOD(GetContextMenu) (THIS_ WORD,LPOLEOBJECT,CHARRANGE*,HMENU*) PURE;
+};
+#undef INTERFACE
+typedef IRichEditOleCallback FAR * LPRICHEDITOLECALLBACK;
+#endif
+#pragma pack(pop)
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/routprot.h
===================================================================
--- Daodan/MinGW/include/routprot.h	(revision 1046)
+++ Daodan/MinGW/include/routprot.h	(revision 1046)
@@ -0,0 +1,70 @@
+/*
+	routprot.h - Routing and Remote Access Services
+
+	This file is part of a free library for the Win32 API.
+
+	This library is distributed in the hope that it will be useful,
+	but WITHOUT ANY WARRANTY; without even the implied warranty of
+	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+*/
+#ifndef _ROUTPROT_H
+#define _ROUTPROT_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*--- Router Management MIB Reference - Transport and Protocol Constants */
+#define PROTO_IP_OTHER 0x00000001
+#define PROTO_IP_LOCAL 0x00000002
+#define PROTO_IP_NETMGMT 0x00000003
+#define PROTO_IP_ICMP 0x00000004
+#define PROTO_IP_EGP 0x00000005
+#define PROTO_IP_GGP 0x00000006
+#define PROTO_IP_HELLO 0x00000007
+#define PROTO_IP_RIP 0x00000008
+#define PROTO_IP_IS_IS 0x00000009
+#define PROTO_IP_ES_IS 0x0000000A
+#define PROTO_IP_CISCO 0x0000000B
+#define PROTO_IP_BBN 0x0000000C
+#define PROTO_IP_OSPF 0x0000000D
+#define PROTO_IP_BGP 0x0000000E
+#define PROTO_IP_BOOTP 0x0000270F
+#define PROTO_IP_NT_AUTOSTATIC 0x00002712
+#define PROTO_IP_NT_STATIC 0x00002716
+#define PROTO_IP_NT_STATIC_NON_DOD 0x00002717
+#define IPRTRMGR_PID 10000
+#define IPX_PROTOCOL_BASE 0x0001FFFF
+#define IPX_PROTOCOL_RIP 0x00020000
+#define IPX_PROTOCOL_SAP 0x00020001
+#define IPX_PROTOCOL_NLSP 0x00020002
+/*--- Router Management Reference - Router Management Structures */
+#if (_WIN32_WINNT >= 0x0500)
+typedef struct IP_LOCAL_BINDING {
+	DWORD Address;
+	DWORD Mask;
+} IP_LOCAL_BINDING,*PIP_LOCAL_BINDING;
+typedef struct IP_ADAPTER_BINDING_INFO {
+	ULONG AddressCount;
+	DWORD RemoteAddress;
+	ULONG Mtu;
+	ULONGLONG Speed;
+	IP_LOCAL_BINDING Address[];
+} IP_ADAPTER_BINDING_INFO,*PIP_ADAPTER_BINDING_INFO;
+typedef struct IPX_ADAPTER_BINDING_INFO {
+	ULONG AdapterIndex;
+	UCHAR Network[4];
+	UCHAR LocalNode[6];
+	UCHAR RemoteNode[6];
+	ULONG MaxPacketSize;
+	ULONG LinkSpeed;
+} IPX_ADAPTER_BINDING_INFO,*PIPX_ADAPTER_BINDING_INFO;
+#endif /* (_WIN32_WINNT >= 0x0500) */
+
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/rpc.h
===================================================================
--- Daodan/MinGW/include/rpc.h	(revision 1046)
+++ Daodan/MinGW/include/rpc.h	(revision 1046)
@@ -0,0 +1,65 @@
+#ifndef RPC_NO_WINDOWS_H
+#include <windows.h>
+#endif
+
+#ifndef _RPC_H
+#define _RPC_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define __RPC_WIN32__
+#ifndef _WIN95
+#define __RPC_NT__
+#define RPC_UNICODE_SUPPORTED
+#endif
+
+#ifdef _RPCRT4_
+#define RPCRTAPI DECLSPEC_EXPORT
+#else
+#define RPCRTAPI DECLSPEC_IMPORT
+#endif
+
+#ifndef __MIDL_USER_DEFINED
+#define midl_user_allocate MIDL_user_allocate
+#define midl_user_free     MIDL_user_free
+#define __MIDL_USER_DEFINED
+#endif
+#define RPC_UNICODE_SUPPORTED
+#define __RPC_FAR
+#define __RPC_API  __stdcall
+#define __RPC_USER __stdcall
+#define __RPC_STUB __stdcall
+#define RPC_ENTRY  __stdcall
+typedef void *I_RPC_HANDLE;
+typedef long RPC_STATUS;
+
+#include <rpcdce.h>
+#include <rpcnsi.h>
+#include <rpcnterr.h>
+
+#include <winerror.h>
+
+/* SEH is not supported */
+#if 0
+#include <excpt.h>
+#define RpcTryExcept __try {
+#define RpcExcept(x) } __except (x) {
+#define RpcEndExcept }
+#define RpcTryFinally __try {
+#define RpcFinally } __finally {
+#define RpcEndFinally }
+#define RpcExceptionCode() GetExceptionCode()
+#define RpcAbnormalTermination() AbnormalTermination()
+#endif /* 0 */
+
+RPC_STATUS RPC_ENTRY RpcImpersonateClient(RPC_BINDING_HANDLE);
+RPC_STATUS RPC_ENTRY RpcRevertToSelf(void);
+long RPC_ENTRY I_RpcMapWin32Status(RPC_STATUS);
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/rpcdce.h
===================================================================
--- Daodan/MinGW/include/rpcdce.h	(revision 1046)
+++ Daodan/MinGW/include/rpcdce.h	(revision 1046)
@@ -0,0 +1,396 @@
+#ifndef _RPCDCE_H
+#define _RPCDCE_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#include <basetyps.h>
+
+#ifndef _NO_W32_PSEUDO_MODIFIERS
+#define IN
+#define OUT
+#ifndef OPTIONAL
+#define OPTIONAL
+#endif
+#endif
+
+#define uuid_t UUID
+#define rpc_binding_handle_t RPC_BINDING_HANDLE
+#define rpc_binding_vector_t RPC_BINDING_VECTOR
+#define uuid_vector_t UUID_VECTOR
+#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 1
+#define RPC_C_USE_INTRANET_PORT 2
+#define RPC_MGR_EPV void
+#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
+#define RPC_IF_AUTOLISTEN 0x0001
+#define RPC_IF_OLE 2
+#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
+#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 DCE_C_ERROR_STRING_LEN 256
+#define RPC_C_PARM_MAX_PACKET_LENGTH 1
+#define RPC_C_PARM_BUFFER_LENGTH 2
+#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_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 0
+#define RPC_C_QOS_CAPABILITIES_MUTUAL_AUTH 1
+#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_WINNT 10
+#define RPC_C_AUTHN_DEFAULT 0xFFFFFFFF
+#define RPC_C_SECURITY_QOS_VERSION L
+#define SEC_WINNT_AUTH_IDENTITY_ANSI 0x1
+#define SEC_WINNT_AUTH_IDENTITY_UNICODE 0x2
+#define RPC_C_AUTHZ_NONE 0
+#define RPC_C_AUTHZ_NAME 1
+#define RPC_C_AUTHZ_DCE 2
+#define RPC_C_AUTHZ_DEFAULT 0xFFFFFFFF
+
+typedef I_RPC_HANDLE RPC_BINDING_HANDLE;
+typedef RPC_BINDING_HANDLE handle_t;
+typedef struct _RPC_BINDING_VECTOR {
+	unsigned long Count;
+	RPC_BINDING_HANDLE BindingH[1];
+} RPC_BINDING_VECTOR;
+typedef struct _UUID_VECTOR {
+	unsigned long Count;
+	UUID *Uuid[1];
+} UUID_VECTOR;
+typedef void *RPC_IF_HANDLE;
+typedef struct _RPC_IF_ID {
+	UUID Uuid;
+	unsigned short VersMajor;
+	unsigned short VersMinor;
+} RPC_IF_ID;
+typedef struct _RPC_POLICY {
+	unsigned int Length ;
+	unsigned long EndpointFlags ;
+	unsigned long NICFlags ;
+} RPC_POLICY,*PRPC_POLICY ;
+typedef void __RPC_USER RPC_OBJECT_INQ_FN(UUID*,UUID*,RPC_STATUS*);
+typedef RPC_STATUS RPC_IF_CALLBACK_FN(RPC_IF_HANDLE,void*);
+typedef struct {
+	unsigned int Count;
+	unsigned long Stats[1];
+} RPC_STATS_VECTOR;
+typedef struct {
+	unsigned long Count;
+	RPC_IF_ID*IfId[1];
+} RPC_IF_ID_VECTOR;
+typedef void *RPC_AUTH_IDENTITY_HANDLE;
+typedef void *RPC_AUTHZ_HANDLE;
+typedef struct _RPC_SECURITY_QOS {
+	unsigned long Version;
+	unsigned long Capabilities;
+	unsigned long IdentityTracking;
+	unsigned long ImpersonationType;
+} RPC_SECURITY_QOS,*PRPC_SECURITY_QOS;
+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;
+typedef struct {
+	unsigned char *UserName;
+	unsigned char *ComputerName;
+	unsigned short Privilege;
+	unsigned long AuthFlags;
+} RPC_CLIENT_INFORMATION1,* PRPC_CLIENT_INFORMATION1;
+typedef I_RPC_HANDLE *RPC_EP_INQ_HANDLE;
+typedef int(__RPC_API *RPC_MGMT_AUTHORIZATION_FN)(RPC_BINDING_HANDLE,unsigned long,RPC_STATUS*);
+
+#ifdef RPC_UNICODE_SUPPORTED
+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;
+RPC_STATUS RPC_ENTRY RpcBindingFromStringBindingA(unsigned char *,RPC_BINDING_HANDLE *);
+RPC_STATUS RPC_ENTRY RpcBindingFromStringBindingW(unsigned short *,RPC_BINDING_HANDLE *);
+RPC_STATUS RPC_ENTRY RpcBindingToStringBindingA(RPC_BINDING_HANDLE,unsigned char**);
+RPC_STATUS RPC_ENTRY RpcBindingToStringBindingW(RPC_BINDING_HANDLE,unsigned short**);
+RPC_STATUS RPC_ENTRY RpcStringBindingComposeA(unsigned char *,unsigned char *,unsigned char *,unsigned char *,unsigned char *,unsigned char **);
+RPC_STATUS RPC_ENTRY RpcStringBindingComposeW(unsigned short *,unsigned short *,unsigned short *,unsigned short *,unsigned short *,unsigned short **);
+RPC_STATUS RPC_ENTRY RpcStringBindingParseA(unsigned char *,unsigned char **,unsigned char **,unsigned char **,unsigned char **,unsigned char **);
+RPC_STATUS RPC_ENTRY RpcStringBindingParseW(unsigned short *,unsigned short **,unsigned short **,unsigned short **,unsigned short **,unsigned short **);
+RPC_STATUS RPC_ENTRY RpcStringFreeA(unsigned char**);
+RPC_STATUS RPC_ENTRY RpcStringFreeW(unsigned short**);
+RPC_STATUS RPC_ENTRY RpcNetworkIsProtseqValidA(unsigned char*);
+RPC_STATUS RPC_ENTRY RpcNetworkIsProtseqValidW(unsigned short*);
+RPC_STATUS RPC_ENTRY RpcNetworkInqProtseqsA(RPC_PROTSEQ_VECTORA**);
+RPC_STATUS RPC_ENTRY RpcNetworkInqProtseqsW(RPC_PROTSEQ_VECTORW**);
+RPC_STATUS RPC_ENTRY RpcProtseqVectorFreeA(RPC_PROTSEQ_VECTORA**);
+RPC_STATUS RPC_ENTRY RpcProtseqVectorFreeW(RPC_PROTSEQ_VECTORW**);
+RPC_STATUS RPC_ENTRY RpcServerUseProtseqA(unsigned char*,unsigned int,void*);
+RPC_STATUS RPC_ENTRY RpcServerUseProtseqW(unsigned short*,unsigned int,void*);
+RPC_STATUS RPC_ENTRY RpcServerUseProtseqExA(unsigned char*,unsigned int MaxCalls,void*,PRPC_POLICY);
+RPC_STATUS RPC_ENTRY RpcServerUseProtseqExW(unsigned short*,unsigned int,void*,PRPC_POLICY);
+RPC_STATUS RPC_ENTRY RpcServerUseProtseqEpA(unsigned char*,unsigned int,unsigned char*,void*);
+RPC_STATUS RPC_ENTRY RpcServerUseProtseqEpExA(unsigned char*,unsigned int,unsigned char*,void*,PRPC_POLICY);
+RPC_STATUS RPC_ENTRY RpcServerUseProtseqEpW(unsigned short*,unsigned int,unsigned short*,void*);
+RPC_STATUS RPC_ENTRY RpcServerUseProtseqEpExW(unsigned short*,unsigned int,unsigned short*,void*,PRPC_POLICY);
+RPC_STATUS RPC_ENTRY RpcServerUseProtseqIfA(unsigned char*,unsigned int,RPC_IF_HANDLE,void*);
+RPC_STATUS RPC_ENTRY RpcServerUseProtseqIfExA(unsigned char*,unsigned int,RPC_IF_HANDLE,void*,PRPC_POLICY);
+RPC_STATUS RPC_ENTRY RpcServerUseProtseqIfW(unsigned short*,unsigned int,RPC_IF_HANDLE,void*);
+RPC_STATUS RPC_ENTRY RpcServerUseProtseqIfExW(unsigned short*,unsigned int,RPC_IF_HANDLE,void*,PRPC_POLICY);
+RPC_STATUS RPC_ENTRY RpcMgmtInqServerPrincNameA(RPC_BINDING_HANDLE,unsigned long,unsigned char**);
+RPC_STATUS RPC_ENTRY RpcMgmtInqServerPrincNameW(RPC_BINDING_HANDLE,unsigned long,unsigned short**);
+RPC_STATUS RPC_ENTRY RpcServerInqDefaultPrincNameA(unsigned long,unsigned char**);
+RPC_STATUS RPC_ENTRY RpcServerInqDefaultPrincNameW(unsigned long,unsigned short**);
+RPC_STATUS RPC_ENTRY RpcNsBindingInqEntryNameA(RPC_BINDING_HANDLE,unsigned long,unsigned char**);
+RPC_STATUS RPC_ENTRY RpcNsBindingInqEntryNameW(RPC_BINDING_HANDLE,unsigned long,unsigned short**);
+RPC_STATUS RPC_ENTRY RpcBindingInqAuthClientA(RPC_BINDING_HANDLE,RPC_AUTHZ_HANDLE *,unsigned char**,unsigned long*,unsigned long*,unsigned long*);
+RPC_STATUS RPC_ENTRY RpcBindingInqAuthClientW(RPC_BINDING_HANDLE,RPC_AUTHZ_HANDLE *,unsigned short**,unsigned long*,unsigned long*,unsigned long*);
+RPC_STATUS RPC_ENTRY RpcBindingInqAuthInfoA(RPC_BINDING_HANDLE,unsigned char**,unsigned long*,unsigned long*,RPC_AUTH_IDENTITY_HANDLE*,unsigned long*);
+RPC_STATUS RPC_ENTRY RpcBindingInqAuthInfoW(RPC_BINDING_HANDLE,unsigned short**,unsigned long*,unsigned long*,RPC_AUTH_IDENTITY_HANDLE*,unsigned long*);
+RPC_STATUS RPC_ENTRY RpcBindingSetAuthInfoA(RPC_BINDING_HANDLE,unsigned char*,unsigned long,unsigned long,RPC_AUTH_IDENTITY_HANDLE,unsigned long);
+RPC_STATUS RPC_ENTRY RpcBindingSetAuthInfoExA(RPC_BINDING_HANDLE,unsigned char*,unsigned long,unsigned long,RPC_AUTH_IDENTITY_HANDLE,unsigned long,RPC_SECURITY_QOS*);
+RPC_STATUS RPC_ENTRY RpcBindingSetAuthInfoW(RPC_BINDING_HANDLE,unsigned short*,unsigned long,unsigned long,RPC_AUTH_IDENTITY_HANDLE,unsigned long);
+RPC_STATUS RPC_ENTRY RpcBindingSetAuthInfoExW(RPC_BINDING_HANDLE,unsigned short*,unsigned long,unsigned long,RPC_AUTH_IDENTITY_HANDLE,unsigned long,RPC_SECURITY_QOS*);
+RPC_STATUS RPC_ENTRY RpcBindingInqAuthInfoExA(RPC_BINDING_HANDLE,unsigned char**,unsigned long*,unsigned long*,RPC_AUTH_IDENTITY_HANDLE*,unsigned long*,unsigned long,RPC_SECURITY_QOS*);
+RPC_STATUS RPC_ENTRY RpcBindingInqAuthInfoExW(RPC_BINDING_HANDLE,unsigned short ** , unsigned long *, unsigned long *, RPC_AUTH_IDENTITY_HANDLE *, unsigned long *, unsigned long , RPC_SECURITY_QOS *);
+typedef void(__RPC_USER *RPC_AUTH_KEY_RETRIEVAL_FN)(void*,unsigned short*,unsigned long,void**,RPC_STATUS*);
+RPC_STATUS RPC_ENTRY RpcServerRegisterAuthInfoA(unsigned char*,unsigned long,RPC_AUTH_KEY_RETRIEVAL_FN,void*);
+RPC_STATUS RPC_ENTRY RpcServerRegisterAuthInfoW(unsigned short*,unsigned long,RPC_AUTH_KEY_RETRIEVAL_FN,void*);
+RPC_STATUS RPC_ENTRY UuidToStringA(UUID*,unsigned char**);
+RPC_STATUS RPC_ENTRY UuidFromStringA(unsigned char*,UUID*);
+RPC_STATUS RPC_ENTRY UuidToStringW(UUID*,unsigned short**);
+RPC_STATUS RPC_ENTRY UuidFromStringW(unsigned short*,UUID*);
+RPC_STATUS RPC_ENTRY RpcEpRegisterNoReplaceA(RPC_IF_HANDLE,RPC_BINDING_VECTOR*,UUID_VECTOR*,unsigned char*);
+RPC_STATUS RPC_ENTRY RpcEpRegisterNoReplaceW(RPC_IF_HANDLE,RPC_BINDING_VECTOR*, UUID_VECTOR*,unsigned short*);
+RPC_STATUS RPC_ENTRY RpcEpRegisterA(RPC_IF_HANDLE,RPC_BINDING_VECTOR*,UUID_VECTOR*,unsigned char*);
+RPC_STATUS RPC_ENTRY RpcEpRegisterW(RPC_IF_HANDLE,RPC_BINDING_VECTOR*,UUID_VECTOR*,unsigned short*);
+RPC_STATUS RPC_ENTRY DceErrorInqTextA(RPC_STATUS,unsigned char*);
+RPC_STATUS RPC_ENTRY DceErrorInqTextW(RPC_STATUS,unsigned short*);
+RPC_STATUS RPC_ENTRY RpcMgmtEpEltInqNextA(RPC_EP_INQ_HANDLE,RPC_IF_ID*,RPC_BINDING_HANDLE*,UUID*,unsigned char**);
+RPC_STATUS RPC_ENTRY RpcMgmtEpEltInqNextW(RPC_EP_INQ_HANDLE,RPC_IF_ID*,RPC_BINDING_HANDLE*,UUID*,unsigned short**);
+#ifdef UNICODE
+#define RPC_PROTSEQ_VECTOR RPC_PROTSEQ_VECTORW
+#define SEC_WINNT_AUTH_IDENTITY SEC_WINNT_AUTH_IDENTITY_W
+#define PSEC_WINNT_AUTH_IDENTITY PSEC_WINNT_AUTH_IDENTITY_W
+#define _SEC_WINNT_AUTH_IDENTITY _SEC_WINNT_AUTH_IDENTITY_W
+#define RpcMgmtEpEltInqNext RpcMgmtEpEltInqNextW
+#define RpcBindingFromStringBinding RpcBindingFromStringBindingW
+#define RpcBindingToStringBinding RpcBindingToStringBindingW
+#define RpcStringBindingCompose RpcStringBindingComposeW
+#define RpcStringBindingParse RpcStringBindingParseW
+#define RpcStringFree RpcStringFreeW
+#define RpcNetworkIsProtseqValid RpcNetworkIsProtseqValidW
+#define RpcNetworkInqProtseqs RpcNetworkInqProtseqsW
+#define RpcProtseqVectorFree RpcProtseqVectorFreeW
+#define RpcServerUseProtseq RpcServerUseProtseqW
+#define RpcServerUseProtseqEx RpcServerUseProtseqExW
+#define RpcServerUseProtseqEp RpcServerUseProtseqEpW
+#define RpcServerUseProtseqEpEx RpcServerUseProtseqEpExW
+#define RpcServerUseProtseqIf RpcServerUseProtseqIfW
+#define RpcServerUseProtseqIfEx RpcServerUseProtseqIfExW
+#define RpcMgmtInqServerPrincName RpcMgmtInqServerPrincNameW
+#define RpcServerInqDefaultPrincName RpcServerInqDefaultPrincNameW
+#define RpcNsBindingInqEntryName RpcNsBindingInqEntryNameW
+#define RpcBindingInqAuthClient RpcBindingInqAuthClientW
+#define RpcBindingInqAuthInfo RpcBindingInqAuthInfoW
+#define RpcBindingSetAuthInfo RpcBindingSetAuthInfoW
+#define RpcServerRegisterAuthInfo RpcServerRegisterAuthInfoW
+#define RpcBindingInqAuthInfoEx RpcBindingInqAuthInfoExW
+#define RpcBindingSetAuthInfoEx RpcBindingSetAuthInfoExW
+#define UuidFromString UuidFromStringW
+#define UuidToString UuidToStringW
+#define RpcEpRegisterNoReplace RpcEpRegisterNoReplaceW
+#define RpcEpRegister RpcEpRegisterW
+#define DceErrorInqText DceErrorInqTextW
+#else /* UNICODE */
+#define RPC_PROTSEQ_VECTOR RPC_PROTSEQ_VECTORA
+#define SEC_WINNT_AUTH_IDENTITY SEC_WINNT_AUTH_IDENTITY_A
+#define PSEC_WINNT_AUTH_IDENTITY PSEC_WINNT_AUTH_IDENTITY_A
+#define _SEC_WINNT_AUTH_IDENTITY _SEC_WINNT_AUTH_IDENTITY_A
+#define RpcMgmtEpEltInqNext RpcMgmtEpEltInqNextA
+#define RpcBindingFromStringBinding RpcBindingFromStringBindingA
+#define RpcBindingToStringBinding RpcBindingToStringBindingA
+#define RpcStringBindingCompose RpcStringBindingComposeA
+#define RpcStringBindingParse RpcStringBindingParseA
+#define RpcStringFree RpcStringFreeA
+#define RpcNetworkIsProtseqValid RpcNetworkIsProtseqValidA
+#define RpcNetworkInqProtseqs RpcNetworkInqProtseqsA
+#define RpcProtseqVectorFree RpcProtseqVectorFreeA
+#define RpcServerUseProtseq RpcServerUseProtseqA
+#define RpcServerUseProtseqEx RpcServerUseProtseqExA
+#define RpcServerUseProtseqEp RpcServerUseProtseqEpA
+#define RpcServerUseProtseqEpEx RpcServerUseProtseqEpExA
+#define RpcServerUseProtseqIf RpcServerUseProtseqIfA
+#define RpcServerUseProtseqIfEx RpcServerUseProtseqIfExA
+#define RpcMgmtInqServerPrincName RpcMgmtInqServerPrincNameA
+#define RpcServerInqDefaultPrincName RpcServerInqDefaultPrincNameA
+#define RpcNsBindingInqEntryName RpcNsBindingInqEntryNameA
+#define RpcBindingInqAuthClient RpcBindingInqAuthClientA
+#define RpcBindingInqAuthInfo RpcBindingInqAuthInfoA
+#define RpcBindingSetAuthInfo RpcBindingSetAuthInfoA
+#define RpcServerRegisterAuthInfo RpcServerRegisterAuthInfoA
+#define RpcBindingInqAuthInfoEx RpcBindingInqAuthInfoExA
+#define RpcBindingSetAuthInfoEx RpcBindingSetAuthInfoExA
+#define UuidFromString UuidFromStringA
+#define UuidToString UuidToStringA
+#define RpcEpRegisterNoReplace RpcEpRegisterNoReplaceA
+#define RpcEpRegister RpcEpRegisterA
+#define DceErrorInqText DceErrorInqTextA
+#endif /* UNICODE */
+#else /* RPC_UNICODE_SUPPORTED */
+typedef struct _RPC_PROTSEQ_VECTOR {
+	unsigned int Count;
+	unsigned char* Protseq[1];
+} RPC_PROTSEQ_VECTOR;
+RPC_STATUS RPC_ENTRY RpcBindingFromStringBinding(unsigned char *,RPC_BINDING_HANDLE *);
+RPC_STATUS RPC_ENTRY RpcBindingToStringBinding(RPC_BINDING_HANDLE,unsigned char **);
+RPC_STATUS RPC_ENTRY RpcStringBindingCompose(unsigned char *,unsigned char *,unsigned char *,unsigned char *,unsigned char *,unsigned char **);
+RPC_STATUS RPC_ENTRY RpcStringBindingParse(unsigned char *,unsigned char **,unsigned char **,unsigned char **,unsigned char **,unsigned char **);
+RPC_STATUS RPC_ENTRY RpcStringFree(unsigned char**);
+RPC_STATUS RPC_ENTRY RpcNetworkIsProtseqValid(unsigned char*);
+RPC_STATUS RPC_ENTRY RpcNetworkInqProtseqs(RPC_PROTSEQ_VECTOR **);
+RPC_STATUS RPC_ENTRY RpcServerInqBindings(RPC_BINDING_VECTOR **);
+RPC_STATUS RPC_ENTRY RpcServerUseProtseq(unsigned char*,unsigned int,void*);
+RPC_STATUS RPC_ENTRY RpcServerUseProtseqEx(unsigned char*,unsigned int,void*,PRPC_POLICY);
+RPC_STATUS RPC_ENTRY RpcServerUseProtseqEp(unsigned char*,unsigned int,unsigned char*,void*);
+RPC_STATUS RPC_ENTRY RpcServerUseProtseqEpEx(unsigned char*,unsigned int,unsigned char*,void*,PRPC_POLICY);
+RPC_STATUS RPC_ENTRY RpcServerUseProtseqIf(unsigned char*,unsigned int,RPC_IF_HANDLE,void*);
+RPC_STATUS RPC_ENTRY RpcServerUseProtseqIfEx(unsigned char*,unsigned int,RPC_IF_HANDLE,void*,PRPC_POLICY);
+RPC_STATUS RPC_ENTRY RpcMgmtInqServerPrincName(RPC_BINDING_HANDLE,unsigned long,unsigned char**);
+RPC_STATUS RPC_ENTRY RpcServerInqDefaultPrincName(unsigned long,unsigned char**);
+RPC_STATUS RPC_ENTRY RpcNsBindingInqEntryName(RPC_BINDING_HANDLE,unsigned long,unsigned char**);
+RPC_STATUS RPC_ENTRY RpcBindingInqAuthClient(RPC_BINDING_HANDLE,RPC_AUTHZ_HANDLE*,unsigned char**,unsigned long*,unsigned long*,unsigned long*);
+RPC_STATUS RPC_ENTRY RpcBindingInqAuthInfo(RPC_BINDING_HANDLE,unsigned char **,unsigned long *,unsigned long *,RPC_AUTH_IDENTITY_HANDLE *,unsigned long *);
+RPC_STATUS RPC_ENTRY RpcBindingSetAuthInfo(RPC_BINDING_HANDLE,unsigned char *,unsigned long,unsigned long,RPC_AUTH_IDENTITY_HANDLE,unsigned long);
+typedef void(__RPC_USER *RPC_AUTH_KEY_RETRIEVAL_FN)(void*,unsigned char*,unsigned long,void**,RPC_STATUS*);
+RPC_STATUS RPC_ENTRY RpcServerRegisterAuthInfo(unsigned char*,unsigned long,RPC_AUTH_KEY_RETRIEVAL_FN,void*);
+RPC_STATUS RPC_ENTRY UuidToString(UUID*,unsigned char**);
+RPC_STATUS RPC_ENTRY UuidFromString(unsigned char*,UUID*);
+RPC_STATUS RPC_ENTRY RpcEpRegisterNoReplace(RPC_IF_HANDLE,RPC_BINDING_VECTOR*,UUID_VECTOR*,unsigned char*);
+RPC_STATUS RPC_ENTRY RpcEpRegister(RPC_IF_HANDLE,RPC_BINDING_VECTOR*,UUID_VECTOR*,unsigned char*);
+RPC_STATUS RPC_ENTRY DceErrorInqText(RPC_STATUS,unsigned char*);
+RPC_STATUS RPC_ENTRY RpcMgmtEpEltInqNext(RPC_EP_INQ_HANDLE,RPC_IF_ID *,RPC_BINDING_HANDLE *,unsigned char **);
+#endif /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY RpcBindingCopy(RPC_BINDING_HANDLE,RPC_BINDING_HANDLE*);
+RPC_STATUS RPC_ENTRY RpcBindingFree(RPC_BINDING_HANDLE*);
+RPC_STATUS RPC_ENTRY RpcBindingInqObject(RPC_BINDING_HANDLE,UUID *);
+RPC_STATUS RPC_ENTRY RpcBindingReset(RPC_BINDING_HANDLE);
+RPC_STATUS RPC_ENTRY RpcBindingSetObject(RPC_BINDING_HANDLE,UUID *);
+RPC_STATUS RPC_ENTRY RpcMgmtInqDefaultProtectLevel(unsigned long,unsigned long *);
+RPC_STATUS RPC_ENTRY RpcBindingVectorFree(RPC_BINDING_VECTOR **);
+RPC_STATUS RPC_ENTRY RpcIfInqId(RPC_IF_HANDLE,RPC_IF_ID *);
+RPC_STATUS RPC_ENTRY RpcMgmtInqComTimeout(RPC_BINDING_HANDLE,unsigned int*);
+RPC_STATUS RPC_ENTRY RpcMgmtSetComTimeout(RPC_BINDING_HANDLE,unsigned int);
+RPC_STATUS RPC_ENTRY RpcMgmtSetCancelTimeout(long Timeout);
+RPC_STATUS RPC_ENTRY RpcObjectInqType(UUID *,UUID *);
+RPC_STATUS RPC_ENTRY RpcObjectSetInqFn(RPC_OBJECT_INQ_FN *);
+RPC_STATUS RPC_ENTRY RpcObjectSetType(UUID *,UUID *);
+RPC_STATUS RPC_ENTRY RpcProtseqVectorFree(RPC_PROTSEQ_VECTOR **);
+RPC_STATUS RPC_ENTRY RpcServerInqIf(RPC_IF_HANDLE,UUID*,RPC_MGR_EPV**);
+RPC_STATUS RPC_ENTRY RpcServerListen(unsigned int,unsigned int,unsigned int);
+RPC_STATUS RPC_ENTRY RpcServerRegisterIf(RPC_IF_HANDLE,UUID*,RPC_MGR_EPV*);
+RPC_STATUS RPC_ENTRY RpcServerRegisterIfEx(RPC_IF_HANDLE,UUID*,RPC_MGR_EPV*,unsigned int,unsigned int,RPC_IF_CALLBACK_FN*);
+RPC_STATUS RPC_ENTRY RpcServerRegisterIf2(RPC_IF_HANDLE,UUID*,RPC_MGR_EPV*,unsigned int,unsigned int,unsigned int,RPC_IF_CALLBACK_FN*);
+RPC_STATUS RPC_ENTRY RpcServerUnregisterIf(RPC_IF_HANDLE,UUID*,unsigned int);
+RPC_STATUS RPC_ENTRY RpcServerUseAllProtseqs(unsigned int,void*);
+RPC_STATUS RPC_ENTRY RpcServerUseAllProtseqsEx(unsigned int,void*,PRPC_POLICY);
+RPC_STATUS RPC_ENTRY RpcServerUseAllProtseqsIf(unsigned int,RPC_IF_HANDLE,void*);
+RPC_STATUS RPC_ENTRY RpcServerUseAllProtseqsIfEx(unsigned int,RPC_IF_HANDLE,void*,PRPC_POLICY);
+RPC_STATUS RPC_ENTRY RpcMgmtStatsVectorFree(RPC_STATS_VECTOR**);
+RPC_STATUS RPC_ENTRY RpcMgmtInqStats(RPC_BINDING_HANDLE,RPC_STATS_VECTOR**);
+RPC_STATUS RPC_ENTRY RpcMgmtIsServerListening(RPC_BINDING_HANDLE);
+RPC_STATUS RPC_ENTRY RpcMgmtStopServerListening(RPC_BINDING_HANDLE);
+RPC_STATUS RPC_ENTRY RpcMgmtWaitServerListen(void);
+RPC_STATUS RPC_ENTRY RpcMgmtSetServerStackSize(unsigned long);
+void RPC_ENTRY RpcSsDontSerializeContext(void);
+RPC_STATUS RPC_ENTRY RpcMgmtEnableIdleCleanup(void);
+RPC_STATUS RPC_ENTRY RpcMgmtInqIfIds(RPC_BINDING_HANDLE,RPC_IF_ID_VECTOR**);
+RPC_STATUS RPC_ENTRY RpcIfIdVectorFree(RPC_IF_ID_VECTOR**);
+RPC_STATUS RPC_ENTRY RpcEpResolveBinding(RPC_BINDING_HANDLE,RPC_IF_HANDLE);
+RPC_STATUS RPC_ENTRY RpcBindingServerFromClient(RPC_BINDING_HANDLE,RPC_BINDING_HANDLE*);
+DECLSPEC_NORETURN void  RPC_ENTRY RpcRaiseException(RPC_STATUS);
+RPC_STATUS RPC_ENTRY RpcTestCancel(void);
+RPC_STATUS RPC_ENTRY RpcCancelThread(void*);
+RPC_STATUS RPC_ENTRY UuidCreate(UUID*);
+signed int RPC_ENTRY UuidCompare(UUID*,UUID*, RPC_STATUS*);
+RPC_STATUS RPC_ENTRY UuidCreateNil(UUID*);
+int RPC_ENTRY UuidEqual(UUID*,UUID*, RPC_STATUS*);
+unsigned short RPC_ENTRY UuidHash(UUID*,RPC_STATUS*);
+int RPC_ENTRY UuidIsNil(UUID*,RPC_STATUS*);
+RPC_STATUS RPC_ENTRY RpcEpUnregister(RPC_IF_HANDLE,RPC_BINDING_VECTOR*,UUID_VECTOR*);
+RPC_STATUS RPC_ENTRY RpcMgmtEpEltInqBegin(RPC_BINDING_HANDLE,unsigned long,RPC_IF_ID*,unsigned long,UUID*,RPC_EP_INQ_HANDLE*);
+RPC_STATUS RPC_ENTRY RpcMgmtEpEltInqDone(RPC_EP_INQ_HANDLE*);
+RPC_STATUS RPC_ENTRY RpcMgmtEpUnregister(RPC_BINDING_HANDLE,RPC_IF_ID*,RPC_BINDING_HANDLE,UUID*);
+RPC_STATUS RPC_ENTRY RpcMgmtSetAuthorizationFn(RPC_MGMT_AUTHORIZATION_FN);
+RPC_STATUS RPC_ENTRY RpcMgmtInqParameter(unsigned int,unsigned long*);
+RPC_STATUS RPC_ENTRY RpcMgmtSetParameter(unsigned int,unsigned long);
+RPC_STATUS RPC_ENTRY RpcMgmtBindingInqParameter(RPC_BINDING_HANDLE,unsigned int,unsigned long*);
+RPC_STATUS RPC_ENTRY RpcMgmtBindingSetParameter(RPC_BINDING_HANDLE,unsigned int,unsigned long);
+
+#if _WIN32_WINNT >= 0x0500
+RPC_STATUS RPC_ENTRY UuidCreateSequential(UUID*);
+#endif
+
+#include <rpcdcep.h>
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/rpcdce2.h
===================================================================
--- Daodan/MinGW/include/rpcdce2.h	(revision 1046)
+++ Daodan/MinGW/include/rpcdce2.h	(revision 1046)
@@ -0,0 +1,56 @@
+#ifndef _RPCDCE2_H
+#define _RPCDCE2_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#include <rpcdce.h>
+
+#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 DCE_C_ERROR_STRING_LEN 256
+#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
+
+int RPC_ENTRY UuidCompare(UUID*,UUID*,RPC_STATUS*);
+RPC_STATUS RPC_ENTRY UuidCreateNil(UUID*);
+int RPC_ENTRY UuidEqual(UUID*,UUID*,RPC_STATUS*);
+unsigned short RPC_ENTRY UuidHash(UUID*,RPC_STATUS*);
+int RPC_ENTRY UuidIsNil(UUID*,RPC_STATUS*);
+#ifdef RPC_UNICODE_SUPPORTED
+RPC_STATUS RPC_ENTRY DceErrorInqTextA(RPC_STATUS,unsigned char*);
+RPC_STATUS RPC_ENTRY DceErrorInqTextW(RPC_STATUS,unsigned short*);
+RPC_STATUS RPC_ENTRY RpcMgmtEpEltInqNextA(RPC_EP_INQ_HANDLE,RPC_IF_ID*,RPC_BINDING_HANDLE*,UUID*,unsigned char**);
+RPC_STATUS RPC_ENTRY RpcMgmtEpEltInqNextW(RPC_EP_INQ_HANDLE,RPC_IF_ID*,RPC_BINDING_HANDLE*,UUID*,unsigned short**);
+#ifdef UNICODE
+#define RpcMgmtEpEltInqNext RpcMgmtEpEltInqNextW
+#define DceErrorInqText DceErrorInqTextW
+#else
+#define RpcMgmtEpEltInqNext RpcMgmtEpEltInqNextA
+#define DceErrorInqText DceErrorInqTextA
+#endif /* UNICODE */
+#else /* RPC_UNICODE_SUPPORTED */
+RPC_STATUS RPC_ENTRY DceErrorInqText(RPC_STATUS,unsigned char*);
+RPC_STATUS RPC_ENTRY RpcMgmtEpEltInqNext(RPC_EP_INQ_HANDLE,RPC_IF_ID*,RPC_BINDING_HANDLE*,UUID*,unsigned char**);
+#endif
+RPC_STATUS RPC_ENTRY RpcMgmtEpEltInqBegin(RPC_BINDING_HANDLE,unsigned long,RPC_IF_ID*,unsigned long,UUID*,RPC_EP_INQ_HANDLE*);
+RPC_STATUS RPC_ENTRY RpcMgmtEpEltInqDone(RPC_EP_INQ_HANDLE*);
+RPC_STATUS RPC_ENTRY RpcMgmtEpUnregister(RPC_BINDING_HANDLE,RPC_IF_ID*,RPC_BINDING_HANDLE,UUID*);
+RPC_STATUS RPC_ENTRY RpcMgmtSetAuthorizationFn(RPC_MGMT_AUTHORIZATION_FN);
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/rpcdcep.h
===================================================================
--- Daodan/MinGW/include/rpcdcep.h	(revision 1046)
+++ Daodan/MinGW/include/rpcdcep.h	(revision 1046)
@@ -0,0 +1,129 @@
+#ifndef _RPCDCEP_H
+#define _RPCDCEP_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define RPC_NCA_FLAGS_DEFAULT 0
+#define RPC_NCA_FLAGS_IDEMPOTENT 1
+#define RPC_NCA_FLAGS_BROADCAST 2
+#define RPC_NCA_FLAGS_MAYBE 4
+#define RPCFLG_ASYNCHRONOUS 0x40000000
+#define RPCFLG_INPUT_SYNCHRONOUS 0x20000000
+#define RPC_FLAGS_VALID_BIT 0x8000
+#define TRANSPORT_TYPE_CN 1
+#define TRANSPORT_TYPE_DG 2
+#define TRANSPORT_TYPE_LPC 4
+#define TRANSPORT_TYPE_WMSG 8
+
+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 {
+	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 long __stdcall RPC_FORWARD_FUNCTION(GUID*,RPC_VERSION*,GUID*,unsigned char*,void**);
+typedef void(__stdcall *RPC_DISPATCH_FUNCTION) ( PRPC_MESSAGE Message);
+typedef struct {
+	unsigned int DispatchTableCount;
+	RPC_DISPATCH_FUNCTION *DispatchTable;
+	int Reserved;
+} RPC_DISPATCH_TABLE,*PRPC_DISPATCH_TABLE;
+typedef struct _RPC_PROTSEQ_ENDPOINT {
+	unsigned char *RpcProtocolSequence;
+	unsigned char *Endpoint;
+} RPC_PROTSEQ_ENDPOINT,*PRPC_PROTSEQ_ENDPOINT;
+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;
+} 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;
+	unsigned long Reserved;
+	void const *InterpreterInfo;
+} RPC_CLIENT_INTERFACE,*PRPC_CLIENT_INTERFACE;
+typedef void *I_RPC_MUTEX;
+typedef struct _RPC_TRANSFER_SYNTAX {
+	GUID Uuid;
+	unsigned short VersMajor;
+	unsigned short VersMinor;
+} RPC_TRANSFER_SYNTAX;
+typedef RPC_STATUS (*RPC_BLOCKING_FN)(void*,void*,void*);
+
+long __stdcall I_RpcGetBuffer(RPC_MESSAGE*);
+long __stdcall I_RpcSendReceive(RPC_MESSAGE*);
+long __stdcall I_RpcSend(RPC_MESSAGE*);
+long __stdcall I_RpcFreeBuffer(RPC_MESSAGE*);
+void __stdcall I_RpcRequestMutex(I_RPC_MUTEX*);
+void __stdcall I_RpcClearMutex(I_RPC_MUTEX);
+void __stdcall I_RpcDeleteMutex(I_RPC_MUTEX);
+DECLARE_STDCALL_P(void *) I_RpcAllocate(unsigned int);
+void __stdcall I_RpcFree(void*);
+void __stdcall I_RpcPauseExecution(unsigned long);
+typedef void(__stdcall *PRPC_RUNDOWN) (void*);
+long __stdcall I_RpcMonitorAssociation(HANDLE,PRPC_RUNDOWN,void*);
+long __stdcall I_RpcStopMonitorAssociation(HANDLE);
+HANDLE __stdcall I_RpcGetCurrentCallHandle(void);
+long __stdcall I_RpcGetAssociationContext(void**);
+long __stdcall I_RpcSetAssociationContext(void*);
+#ifdef __RPC_NT__
+long __stdcall I_RpcNsBindingSetEntryName(HANDLE,unsigned long,unsigned short*);
+long __stdcall I_RpcBindingInqDynamicEndpoint(HANDLE, unsigned short**);
+#else
+long __stdcall I_RpcNsBindingSetEntryName(HANDLE,unsigned long,unsigned char*);
+long __stdcall I_RpcBindingInqDynamicEndpoint(HANDLE,unsigned char**);
+#endif
+long __stdcall I_RpcBindingInqTransportType(HANDLE,unsigned int*);
+long __stdcall I_RpcIfInqTransferSyntaxes(HANDLE,RPC_TRANSFER_SYNTAX*,unsigned int,unsigned int*);
+long __stdcall I_UuidCreate(GUID*);
+long __stdcall I_RpcBindingCopy(HANDLE,HANDLE*);
+long __stdcall I_RpcBindingIsClientLocal(HANDLE,unsigned int*);
+void __stdcall I_RpcSsDontSerializeContext(void);
+long __stdcall I_RpcServerRegisterForwardFunction(RPC_FORWARD_FUNCTION*);
+long __stdcall I_RpcConnectionInqSockBuffSize(unsigned long*,unsigned long*);
+long __stdcall I_RpcConnectionSetSockBuffSize(unsigned long,unsigned long);
+long __stdcall I_RpcBindingSetAsync(HANDLE,RPC_BLOCKING_FN);
+long __stdcall I_RpcAsyncSendReceive(RPC_MESSAGE*,void*);
+long __stdcall I_RpcGetThreadWindowHandle(void**);
+long __stdcall I_RpcServerThreadPauseListening(void);
+long __stdcall I_RpcServerThreadContinueListening(void);
+long __stdcall I_RpcServerUnregisterEndpointA(unsigned char*,unsigned char*);
+long __stdcall I_RpcServerUnregisterEndpointW(unsigned short*,unsigned short*);
+#ifdef UNICODE
+#define I_RpcServerUnregisterEndpoint I_RpcServerUnregisterEndpointW
+#else
+#define I_RpcServerUnregisterEndpoint I_RpcServerUnregisterEndpointA
+#endif
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/rpcndr.h
===================================================================
--- Daodan/MinGW/include/rpcndr.h	(revision 1046)
+++ Daodan/MinGW/include/rpcndr.h	(revision 1046)
@@ -0,0 +1,518 @@
+#ifndef _RPCNDR_H
+#define _RPCNDR_H
+#define __RPCNDR_H__
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifndef __RPCNDR_H_VERSION__
+#define __RPCNDR_H_VERSION__        ( 450 )
+#endif /* __RPCNDR_H_VERSION__ */
+#include <rpcnsip.h>
+#ifdef __cplusplus
+extern "C" {
+#endif
+#include <objfwd.h>
+#define DECLSPEC_UUID(x)
+#define MIDL_INTERFACE(x) struct
+#define NDR_CHAR_REP_MASK (unsigned long)0xFL
+#define NDR_INT_REP_MASK (unsigned long)0xF0L
+#define NDR_FLOAT_REP_MASK (unsigned long)0xFF00L
+#define NDR_LITTLE_ENDIAN (unsigned long)0x10L
+#define NDR_BIG_ENDIAN (unsigned long)0
+#define NDR_IEEE_FLOAT (unsigned long)0
+#define NDR_VAX_FLOAT (unsigned long)0x100L
+#define NDR_ASCII_CHAR (unsigned long)0
+#define NDR_EBCDIC_CHAR (unsigned long)1
+#define NDR_LOCAL_DATA_REPRESENTATION (unsigned long)0x10L
+#define NDR_LOCAL_ENDIAN NDR_LITTLE_ENDIAN
+#define __RPC_CALLEE __stdcall
+#ifndef __MIDL_USER_DEFINED
+#define midl_user_allocate MIDL_user_allocate
+#define midl_user_free MIDL_user_free
+#define __MIDL_USER_DEFINED
+#endif
+#define RPC_VAR_ENTRY __cdecl
+#ifdef _M_IX86
+#define __MIDL_DECLSPEC_DLLIMPORT __declspec(dllimport)
+#define __MIDL_DECLSPEC_DLLEXPORT __declspec(dllexport)
+#else
+#define __MIDL_DECLSPEC_DLLIMPORT
+#define __MIDL_DECLSPEC_DLLEXPORT
+#endif
+#if defined(_HAVE_INT64) || (defined(_INTEGRAL_MAX_BITS) && _INTEGRAL_MAX_BITS >= 64)
+#define hyper __int64
+#define MIDL_uhyper unsigned __int64
+#else
+#define hyper double
+#define MIDL_uhyper double
+#endif
+#define small char
+typedef unsigned char byte;
+typedef unsigned char boolean;
+#define NDRSContextValue(hContext) (&(hContext)->userContext)
+#define cbNDRContext 20
+#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 long *)&(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 long *)&(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 long *)&(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 _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 )((unsigned long)(p+1) & 0xfffffffe))
+#define _midl_fa4( p ) (p = (RPC_BUFPTR )((unsigned long)(p+3) & 0xfffffffc))
+#define _midl_fa8( p ) (p = (RPC_BUFPTR )((unsigned long)(p+7) & 0xfffffff8))
+#define _midl_addp( p, n ) (p += n)
+#define _midl_marsh_lhs( p, cast ) *(*( cast **)&p)++
+#define _midl_marsh_up( mp, p ) *(*(unsigned long **)&mp)++ = (unsigned long)p
+#define _midl_advmp( mp ) *(*(unsigned long **)&mp)++
+#define _midl_unmarsh_up( p ) (*(*(unsigned long **)&p)++)
+#define NdrMarshConfStringHdr( p, s, l ) (_midl_ma4( p, unsigned long) = s, _midl_ma4( p, unsigned long) = 0, _midl_ma4( p, unsigned long) = l)
+#define NdrUnMarshConfStringHdr(p, s, l) (s=_midl_unma4(p,unsigned long), (_midl_addp(p,4)), (l=_midl_unma4(p,unsigned long)))
+#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)(& (((s *)0)->f))
+#define NdrFieldPad(s,f,p,t) (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)
+#ifdef CONST_VTABLE
+#define CONST_VTBL const
+#else
+#define CONST_VTBL
+#endif
+typedef void *NDR_CCONTEXT;
+typedef struct {
+	void *pad[2];
+	void *userContext;
+} *NDR_SCONTEXT;
+typedef void (__RPC_USER *NDR_RUNDOWN)(void*);
+typedef struct _SCONTEXT_QUEUE {
+	unsigned long NumberOfObjects;
+	NDR_SCONTEXT *ArrayOfObjects;
+} SCONTEXT_QUEUE,*PSCONTEXT_QUEUE;
+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(__RPC_USER *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;
+
+RPC_BINDING_HANDLE RPC_ENTRY NDRCContextBinding(NDR_CCONTEXT);
+void RPC_ENTRY NDRCContextMarshall(NDR_CCONTEXT,void*);
+void RPC_ENTRY NDRCContextUnmarshall(NDR_CCONTEXT*,RPC_BINDING_HANDLE,void*,unsigned long);
+void RPC_ENTRY NDRSContextMarshall(NDR_SCONTEXT,void*,NDR_RUNDOWN);
+NDR_SCONTEXT RPC_ENTRY NDRSContextUnmarshall(void*pBuff,unsigned long);
+void RPC_ENTRY RpcSsDestroyClientContext(void**);
+void RPC_ENTRY NDRcopy(void*,void*,unsigned int);
+unsigned int RPC_ENTRY MIDL_wchar_strlen(wchar_t*);
+void RPC_ENTRY MIDL_wchar_strcpy(void*,wchar_t*);
+void RPC_ENTRY char_from_ndr(PRPC_MESSAGE,unsigned char*);
+void RPC_ENTRY char_array_from_ndr(PRPC_MESSAGE,unsigned long,unsigned long,unsigned char*);
+void RPC_ENTRY short_from_ndr(PRPC_MESSAGE,unsigned short*);
+void RPC_ENTRY short_array_from_ndr(PRPC_MESSAGE,unsigned long,unsigned long,unsigned short*);
+void RPC_ENTRY short_from_ndr_temp(unsigned char**,unsigned short*,unsigned long);
+void RPC_ENTRY long_from_ndr(PRPC_MESSAGE,unsigned long*);
+void RPC_ENTRY long_array_from_ndr(PRPC_MESSAGE,unsigned long,unsigned long,unsigned long*);
+void RPC_ENTRY long_from_ndr_temp(unsigned char**,unsigned long*,unsigned long);
+void RPC_ENTRY enum_from_ndr(PRPC_MESSAGE,unsigned int*);
+void RPC_ENTRY float_from_ndr(PRPC_MESSAGE,void*);
+void RPC_ENTRY float_array_from_ndr(PRPC_MESSAGE,unsigned long,unsigned long,void*);
+void RPC_ENTRY double_from_ndr(PRPC_MESSAGE,void*);
+void RPC_ENTRY double_array_from_ndr(PRPC_MESSAGE,unsigned long,unsigned long,void*);
+void RPC_ENTRY hyper_from_ndr(PRPC_MESSAGE,hyper*);
+void RPC_ENTRY hyper_array_from_ndr(PRPC_MESSAGE,unsigned long,unsigned long,hyper*);
+void RPC_ENTRY hyper_from_ndr_temp(unsigned char**,hyper*,unsigned long);
+void RPC_ENTRY data_from_ndr(PRPC_MESSAGE,void*,char*,unsigned char);
+void RPC_ENTRY data_into_ndr(void*,PRPC_MESSAGE,char*,unsigned char);
+void RPC_ENTRY tree_into_ndr(void*,PRPC_MESSAGE,char*,unsigned char);
+void RPC_ENTRY data_size_ndr(void*,PRPC_MESSAGE,char*,unsigned char);
+void RPC_ENTRY tree_size_ndr(void*,PRPC_MESSAGE,char*,unsigned char);
+void RPC_ENTRY tree_peek_ndr(PRPC_MESSAGE,unsigned char**,char*,unsigned char);
+void *RPC_ENTRY midl_allocate(int);
+
+#pragma pack(push,4)
+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;
+	int IsClient;
+	int ReuseBuffer;
+	unsigned char *AllocAllNodesMemory;
+	unsigned char *AllocAllNodesMemoryEnd;
+	int IgnoreEmbeddedPointers;
+	unsigned char *PointerBufferMark;
+	unsigned char fBufferValid;
+	unsigned char Unused;
+	unsigned long MaxCount;
+	unsigned long Offset;
+	unsigned long ActualCount;
+	void*(__RPC_API *pfnAllocate)(unsigned int);
+	void(__RPC_API *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;
+	int fCheckBounds;
+	int fInDontFree :1;
+	int fDontCallFreeInst :1;
+	int fInOnlyParam :1;
+	int fHasReturn :1;
+	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;
+	unsigned long w2kReserved[5];
+} MIDL_STUB_MESSAGE,*PMIDL_STUB_MESSAGE;
+#pragma pack(pop)
+typedef void*(__RPC_API *GENERIC_BINDING_ROUTINE)(void*);
+typedef void (__RPC_API *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;
+typedef void(__RPC_USER *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 struct _MALLOC_FREE_STRUCT {
+void*(__RPC_USER *pfnAllocate)(unsigned int);
+void(__RPC_USER *pfnFree)(void*);
+} MALLOC_FREE_STRUCT;
+typedef struct _COMM_FAULT_OFFSETS {
+	short CommOffset;
+	short FaultOffset;
+} COMM_FAULT_OFFSETS;
+typedef unsigned long (__RPC_USER *USER_MARSHAL_SIZING_ROUTINE)(unsigned long *,unsigned long,void *);
+typedef unsigned char *(__RPC_USER *USER_MARSHAL_MARSHALLING_ROUTINE)(unsigned long *,unsigned char *,void *);
+typedef unsigned char *(__RPC_USER *USER_MARSHAL_UNMARSHALLING_ROUTINE)(unsigned long *,unsigned char *,void *);
+typedef void (__RPC_USER *USER_MARSHAL_FREEING_ROUTINE)(unsigned long *,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;
+typedef void (__RPC_USER *NDR_NOTIFY_ROUTINE)(void);
+typedef enum _IDL_CS_CONVERT {
+	IDL_CS_NO_CONVERT,
+	IDL_CS_IN_PLACE_CONVERT,
+	IDL_CS_NEW_BUFFER_CONVERT
+} IDL_CS_CONVERT;
+typedef void (__RPC_USER *CS_TYPE_NET_SIZE_ROUTINE)(RPC_BINDING_HANDLE,unsigned long,unsigned long,IDL_CS_CONVERT*,unsigned long*,error_status_t*);
+typedef void (__RPC_USER *CS_TYPE_LOCAL_SIZE_ROUTINE)(RPC_BINDING_HANDLE,unsigned long,unsigned long,IDL_CS_CONVERT*,unsigned long*,error_status_t*);
+typedef void (__RPC_USER *CS_TYPE_TO_NETCS_ROUTINE)(RPC_BINDING_HANDLE,unsigned long,void*,unsigned long,byte*,unsigned long*,error_status_t*);
+typedef void (__RPC_USER *CS_TYPE_FROM_NETCS_ROUTINE)(RPC_BINDING_HANDLE,unsigned long,byte*,unsigned long,unsigned long,void*,unsigned long*,error_status_t*);
+typedef void (__RPC_USER *CS_TAG_GETTING_ROUTINE)(RPC_BINDING_HANDLE,int,unsigned long*,unsigned long*,unsigned long*,error_status_t*);
+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*(__RPC_API *pfnAllocate)(unsigned int);
+	void(__RPC_API *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[1];
+} MIDL_FORMAT_STRING;
+typedef void(__RPC_API *STUB_THUNK)(PMIDL_STUB_MESSAGE);
+typedef long(__RPC_API *SERVER_ROUTINE)(void);
+typedef struct _MIDL_SERVER_INFO_ {
+	PMIDL_STUB_DESC pStubDesc;
+	const SERVER_ROUTINE *DispatchTable;
+	PFORMAT_STRING ProcString;
+	const unsigned short *FmtStringOffset;
+	const STUB_THUNK *ThunkTable;
+} MIDL_SERVER_INFO,*PMIDL_SERVER_INFO;
+typedef struct _MIDL_STUBLESS_PROXY_INFO {
+	PMIDL_STUB_DESC pStubDesc;
+	PFORMAT_STRING ProcFormatString;
+	const unsigned short *FormatStringOffset;
+} MIDL_STUBLESS_PROXY_INFO;
+typedef MIDL_STUBLESS_PROXY_INFO *PMIDL_STUBLESS_PROXY_INFO;
+typedef union _CLIENT_CALL_RETURN {
+	void *Pointer;
+	long 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;
+void RPC_ENTRY NdrSimpleTypeMarshall(PMIDL_STUB_MESSAGE,unsigned char*,unsigned char);
+unsigned char *RPC_ENTRY NdrPointerMarshall(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING pFormat);
+unsigned char *RPC_ENTRY NdrSimpleStructMarshall(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+unsigned char *RPC_ENTRY NdrConformantStructMarshall(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+unsigned char *RPC_ENTRY NdrConformantVaryingStructMarshall(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+unsigned char *RPC_ENTRY NdrHardStructMarshall(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+unsigned char *RPC_ENTRY NdrComplexStructMarshall(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+unsigned char *RPC_ENTRY NdrFixedArrayMarshall(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+unsigned char *RPC_ENTRY NdrConformantArrayMarshall(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+unsigned char *RPC_ENTRY NdrConformantVaryingArrayMarshall(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+unsigned char *RPC_ENTRY NdrVaryingArrayMarshall(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+unsigned char *RPC_ENTRY NdrComplexArrayMarshall(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+unsigned char *RPC_ENTRY NdrNonConformantStringMarshall(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+unsigned char *RPC_ENTRY NdrConformantStringMarshall(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+unsigned char *RPC_ENTRY NdrEncapsulatedUnionMarshall(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+unsigned char *RPC_ENTRY NdrNonEncapsulatedUnionMarshall(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+unsigned char *RPC_ENTRY NdrByteCountPointerMarshall(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+unsigned char *RPC_ENTRY NdrXmitOrRepAsMarshall(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+unsigned char *RPC_ENTRY NdrInterfacePointerMarshall(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+void RPC_ENTRY NdrClientContextMarshall(PMIDL_STUB_MESSAGE,NDR_CCONTEXT,int);
+void RPC_ENTRY NdrServerContextMarshall(PMIDL_STUB_MESSAGE,NDR_SCONTEXT,NDR_RUNDOWN);
+void RPC_ENTRY NdrSimpleTypeUnmarshall(PMIDL_STUB_MESSAGE,unsigned char*,unsigned char);
+unsigned char *RPC_ENTRY NdrPointerUnmarshall(PMIDL_STUB_MESSAGE,unsigned char**,PFORMAT_STRING,unsigned char);
+unsigned char *RPC_ENTRY NdrSimpleStructUnmarshall(PMIDL_STUB_MESSAGE,unsigned char**,PFORMAT_STRING,unsigned char);
+unsigned char *RPC_ENTRY NdrConformantStructUnmarshall(PMIDL_STUB_MESSAGE,unsigned char**,PFORMAT_STRING,unsigned char);
+unsigned char *RPC_ENTRY NdrConformantVaryingStructUnmarshall(PMIDL_STUB_MESSAGE,unsigned char**,PFORMAT_STRING,unsigned char);
+unsigned char *RPC_ENTRY NdrHardStructUnmarshall(PMIDL_STUB_MESSAGE,unsigned char**,PFORMAT_STRING,unsigned char);
+unsigned char *RPC_ENTRY NdrComplexStructUnmarshall(PMIDL_STUB_MESSAGE,unsigned char**,PFORMAT_STRING,unsigned char);
+unsigned char *RPC_ENTRY NdrFixedArrayUnmarshall(PMIDL_STUB_MESSAGE,unsigned char**,PFORMAT_STRING,unsigned char);
+unsigned char *RPC_ENTRY NdrConformantArrayUnmarshall(PMIDL_STUB_MESSAGE,unsigned char**,PFORMAT_STRING,unsigned char);
+unsigned char *RPC_ENTRY NdrConformantVaryingArrayUnmarshall(PMIDL_STUB_MESSAGE,unsigned char**,PFORMAT_STRING,unsigned char);
+unsigned char *RPC_ENTRY NdrVaryingArrayUnmarshall(PMIDL_STUB_MESSAGE,unsigned char**,PFORMAT_STRING,unsigned char);
+unsigned char *RPC_ENTRY NdrComplexArrayUnmarshall(PMIDL_STUB_MESSAGE,unsigned char**,PFORMAT_STRING,unsigned char);
+unsigned char *RPC_ENTRY NdrNonConformantStringUnmarshall(PMIDL_STUB_MESSAGE,unsigned char**,PFORMAT_STRING,unsigned char);
+unsigned char *RPC_ENTRY NdrConformantStringUnmarshall(PMIDL_STUB_MESSAGE,unsigned char**,PFORMAT_STRING,unsigned char);
+unsigned char *RPC_ENTRY NdrEncapsulatedUnionUnmarshall(PMIDL_STUB_MESSAGE,unsigned char**,PFORMAT_STRING,unsigned char);
+unsigned char *RPC_ENTRY NdrNonEncapsulatedUnionUnmarshall(PMIDL_STUB_MESSAGE,unsigned char**,PFORMAT_STRING,unsigned char);
+unsigned char *RPC_ENTRY NdrByteCountPointerUnmarshall(PMIDL_STUB_MESSAGE,unsigned char**,PFORMAT_STRING,unsigned char);
+unsigned char *RPC_ENTRY NdrXmitOrRepAsUnmarshall(PMIDL_STUB_MESSAGE,unsigned char**,PFORMAT_STRING,unsigned char);
+unsigned char *RPC_ENTRY NdrInterfacePointerUnmarshall(PMIDL_STUB_MESSAGE,unsigned char**,PFORMAT_STRING,unsigned char);
+void RPC_ENTRY NdrClientContextUnmarshall(PMIDL_STUB_MESSAGE,NDR_CCONTEXT*,RPC_BINDING_HANDLE);
+NDR_SCONTEXT RPC_ENTRY NdrServerContextUnmarshall(PMIDL_STUB_MESSAGE);
+void RPC_ENTRY NdrPointerBufferSize(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+void RPC_ENTRY NdrSimpleStructBufferSize(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+void RPC_ENTRY NdrConformantStructBufferSize(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+void RPC_ENTRY NdrConformantVaryingStructBufferSize(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+void RPC_ENTRY NdrHardStructBufferSize(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+void RPC_ENTRY NdrComplexStructBufferSize(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+void RPC_ENTRY NdrFixedArrayBufferSize(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+void RPC_ENTRY NdrConformantArrayBufferSize(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+void RPC_ENTRY NdrConformantVaryingArrayBufferSize(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+void RPC_ENTRY NdrVaryingArrayBufferSize(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+void RPC_ENTRY NdrComplexArrayBufferSize(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+void RPC_ENTRY NdrConformantStringBufferSize(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+void RPC_ENTRY NdrNonConformantStringBufferSize(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+void RPC_ENTRY NdrEncapsulatedUnionBufferSize(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+void RPC_ENTRY NdrNonEncapsulatedUnionBufferSize(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+void RPC_ENTRY NdrByteCountPointerBufferSize(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+void RPC_ENTRY NdrXmitOrRepAsBufferSize(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+void RPC_ENTRY NdrInterfacePointerBufferSize(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+void RPC_ENTRY NdrContextHandleSize(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+unsigned long RPC_ENTRY NdrPointerMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING);
+unsigned long RPC_ENTRY NdrSimpleStructMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING);
+unsigned long RPC_ENTRY NdrConformantStructMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING);
+unsigned long RPC_ENTRY NdrConformantVaryingStructMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING);
+unsigned long RPC_ENTRY NdrHardStructMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING);
+unsigned long RPC_ENTRY NdrComplexStructMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING);
+unsigned long RPC_ENTRY NdrFixedArrayMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING);
+unsigned long RPC_ENTRY NdrConformantArrayMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING);
+unsigned long RPC_ENTRY NdrConformantVaryingArrayMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING);
+unsigned long RPC_ENTRY NdrVaryingArrayMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING);
+unsigned long RPC_ENTRY NdrComplexArrayMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING);
+unsigned long RPC_ENTRY NdrConformantStringMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING);
+unsigned long RPC_ENTRY NdrNonConformantStringMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING);
+unsigned long RPC_ENTRY NdrEncapsulatedUnionMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING);
+unsigned long RPC_ENTRY NdrNonEncapsulatedUnionMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING);
+unsigned long RPC_ENTRY NdrXmitOrRepAsMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING);
+unsigned long RPC_ENTRY NdrInterfacePointerMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING);
+void RPC_ENTRY NdrPointerFree(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+void RPC_ENTRY NdrSimpleStructFree(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+void RPC_ENTRY NdrConformantStructFree(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+void RPC_ENTRY NdrConformantVaryingStructFree(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+void RPC_ENTRY NdrHardStructFree(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+void RPC_ENTRY NdrComplexStructFree(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+void RPC_ENTRY NdrFixedArrayFree(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+void RPC_ENTRY NdrConformantArrayFree(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+void RPC_ENTRY NdrConformantVaryingArrayFree(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+void RPC_ENTRY NdrVaryingArrayFree(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+void RPC_ENTRY NdrComplexArrayFree(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+void RPC_ENTRY NdrEncapsulatedUnionFree(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+void RPC_ENTRY NdrNonEncapsulatedUnionFree(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+void RPC_ENTRY NdrByteCountPointerFree(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+void RPC_ENTRY NdrXmitOrRepAsFree(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+void RPC_ENTRY NdrInterfacePointerFree(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+void RPC_ENTRY NdrConvert(PMIDL_STUB_MESSAGE,PFORMAT_STRING);
+void RPC_ENTRY NdrClientInitializeNew(PRPC_MESSAGE,PMIDL_STUB_MESSAGE,PMIDL_STUB_DESC,unsigned int);
+unsigned char *RPC_ENTRY NdrServerInitializeNew(PRPC_MESSAGE,PMIDL_STUB_MESSAGE,PMIDL_STUB_DESC);
+void RPC_ENTRY NdrClientInitialize(PRPC_MESSAGE,PMIDL_STUB_MESSAGE,PMIDL_STUB_DESC,unsigned int);
+unsigned char *RPC_ENTRY NdrServerInitialize(PRPC_MESSAGE,PMIDL_STUB_MESSAGE,PMIDL_STUB_DESC);
+unsigned char *RPC_ENTRY NdrServerInitializeUnmarshall(PMIDL_STUB_MESSAGE,PMIDL_STUB_DESC,PRPC_MESSAGE);
+void RPC_ENTRY NdrServerInitializeMarshall(PRPC_MESSAGE,PMIDL_STUB_MESSAGE);
+unsigned char *RPC_ENTRY NdrGetBuffer(PMIDL_STUB_MESSAGE,unsigned long,RPC_BINDING_HANDLE);
+unsigned char *RPC_ENTRY NdrNsGetBuffer(PMIDL_STUB_MESSAGE,unsigned long,RPC_BINDING_HANDLE);
+unsigned char *RPC_ENTRY NdrSendReceive(PMIDL_STUB_MESSAGE,unsigned char*);
+unsigned char *RPC_ENTRY NdrNsSendReceive(PMIDL_STUB_MESSAGE,unsigned char*,RPC_BINDING_HANDLE*);
+void RPC_ENTRY NdrFreeBuffer(PMIDL_STUB_MESSAGE);
+CLIENT_CALL_RETURN RPC_VAR_ENTRY NdrClientCall(PMIDL_STUB_DESC,PFORMAT_STRING,...);
+CLIENT_CALL_RETURN RPC_VAR_ENTRY NdrClientCall2(PMIDL_STUB_DESC,PFORMAT_STRING,...);
+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;
+long RPC_ENTRY NdrStubCall(struct IRpcStubBuffer*,struct IRpcChannelBuffer*,PRPC_MESSAGE,unsigned long*);
+void RPC_ENTRY NdrServerCall(PRPC_MESSAGE);
+int RPC_ENTRY NdrServerUnmarshall(struct IRpcChannelBuffer*,PRPC_MESSAGE,PMIDL_STUB_MESSAGE,PMIDL_STUB_DESC,PFORMAT_STRING,void*);
+void RPC_ENTRY NdrServerMarshall(struct IRpcStubBuffer*,struct IRpcChannelBuffer*,PMIDL_STUB_MESSAGE,PFORMAT_STRING);
+RPC_STATUS RPC_ENTRY NdrMapCommAndFaultStatus(PMIDL_STUB_MESSAGE,unsigned long*,unsigned long*,RPC_STATUS);
+int RPC_ENTRY NdrSH_UPDecision(PMIDL_STUB_MESSAGE,unsigned char**,RPC_BUFPTR);
+int RPC_ENTRY NdrSH_TLUPDecision(PMIDL_STUB_MESSAGE,unsigned char**);
+int RPC_ENTRY NdrSH_TLUPDecisionBuffer(PMIDL_STUB_MESSAGE,unsigned char**);
+int RPC_ENTRY NdrSH_IfAlloc(PMIDL_STUB_MESSAGE,unsigned char**,unsigned long);
+int RPC_ENTRY NdrSH_IfAllocRef(PMIDL_STUB_MESSAGE,unsigned char**,unsigned long);
+int RPC_ENTRY NdrSH_IfAllocSet(PMIDL_STUB_MESSAGE,unsigned char**,unsigned long);
+RPC_BUFPTR RPC_ENTRY NdrSH_IfCopy(PMIDL_STUB_MESSAGE,unsigned char**,unsigned long);
+RPC_BUFPTR RPC_ENTRY NdrSH_IfAllocCopy(PMIDL_STUB_MESSAGE,unsigned char**,unsigned long);
+unsigned long RPC_ENTRY NdrSH_Copy(unsigned char*,unsigned char*,unsigned long);
+void RPC_ENTRY NdrSH_IfFree(PMIDL_STUB_MESSAGE,unsigned char*);
+RPC_BUFPTR RPC_ENTRY NdrSH_StringMarshall(PMIDL_STUB_MESSAGE,unsigned char*,unsigned long,int);
+RPC_BUFPTR RPC_ENTRY NdrSH_StringUnMarshall(PMIDL_STUB_MESSAGE,unsigned char**,int);
+typedef void *RPC_SS_THREAD_HANDLE;
+typedef void* __RPC_API RPC_CLIENT_ALLOC(unsigned int);
+typedef void __RPC_API RPC_CLIENT_FREE(void*);
+void*RPC_ENTRY RpcSsAllocate(unsigned int);
+void RPC_ENTRY RpcSsDisableAllocate(void);
+void RPC_ENTRY RpcSsEnableAllocate(void);
+void RPC_ENTRY RpcSsFree(void*);
+RPC_SS_THREAD_HANDLE RPC_ENTRY RpcSsGetThreadHandle(void);
+void RPC_ENTRY RpcSsSetClientAllocFree(RPC_CLIENT_ALLOC*,RPC_CLIENT_FREE*);
+void RPC_ENTRY RpcSsSetThreadHandle(RPC_SS_THREAD_HANDLE);
+void RPC_ENTRY RpcSsSwapClientAllocFree(RPC_CLIENT_ALLOC*,RPC_CLIENT_FREE*,RPC_CLIENT_ALLOC**,RPC_CLIENT_FREE**);
+void*RPC_ENTRY RpcSmAllocate(unsigned int,RPC_STATUS*);
+RPC_STATUS RPC_ENTRY RpcSmClientFree(void*);
+RPC_STATUS RPC_ENTRY RpcSmDestroyClientContext(void**);
+RPC_STATUS RPC_ENTRY RpcSmDisableAllocate(void);
+RPC_STATUS RPC_ENTRY RpcSmEnableAllocate(void);
+RPC_STATUS RPC_ENTRY RpcSmFree(void*);
+RPC_SS_THREAD_HANDLE RPC_ENTRY RpcSmGetThreadHandle(RPC_STATUS*);
+RPC_STATUS RPC_ENTRY RpcSmSetClientAllocFree(RPC_CLIENT_ALLOC*,RPC_CLIENT_FREE*);
+RPC_STATUS RPC_ENTRY RpcSmSetThreadHandle(RPC_SS_THREAD_HANDLE);
+RPC_STATUS RPC_ENTRY RpcSmSwapClientAllocFree(RPC_CLIENT_ALLOC*,RPC_CLIENT_FREE*,RPC_CLIENT_ALLOC**,RPC_CLIENT_FREE**);
+void RPC_ENTRY NdrRpcSsEnableAllocate(PMIDL_STUB_MESSAGE);
+void RPC_ENTRY NdrRpcSsDisableAllocate(PMIDL_STUB_MESSAGE);
+void RPC_ENTRY NdrRpcSmSetClientToOsf(PMIDL_STUB_MESSAGE);
+void*RPC_ENTRY NdrRpcSmClientAllocate(unsigned int);
+void RPC_ENTRY NdrRpcSmClientFree(void*);
+void*RPC_ENTRY NdrRpcSsDefaultAllocate(unsigned int);
+void RPC_ENTRY NdrRpcSsDefaultFree(void*);
+PFULL_PTR_XLAT_TABLES RPC_ENTRY NdrFullPointerXlatInit(unsigned long,XLAT_SIDE);
+void RPC_ENTRY NdrFullPointerXlatFree(PFULL_PTR_XLAT_TABLES);
+int RPC_ENTRY NdrFullPointerQueryPointer(PFULL_PTR_XLAT_TABLES,void*,unsigned char,unsigned long*);
+int RPC_ENTRY NdrFullPointerQueryRefId(PFULL_PTR_XLAT_TABLES,unsigned long,unsigned char,void**);
+void RPC_ENTRY NdrFullPointerInsertRefId(PFULL_PTR_XLAT_TABLES,unsigned long,void*);
+int RPC_ENTRY NdrFullPointerFree(PFULL_PTR_XLAT_TABLES,void*);
+void*RPC_ENTRY NdrAllocate(PMIDL_STUB_MESSAGE,unsigned int);
+void RPC_ENTRY NdrClearOutParameters(PMIDL_STUB_MESSAGE,PFORMAT_STRING,void*);
+void*RPC_ENTRY NdrOleAllocate(unsigned int);
+void RPC_ENTRY NdrOleFree(void*);
+unsigned char*RPC_ENTRY NdrUserMarshalMarshall(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+unsigned char*RPC_ENTRY NdrUserMarshalUnmarshall(PMIDL_STUB_MESSAGE,unsigned char**,PFORMAT_STRING,unsigned char);
+void RPC_ENTRY NdrUserMarshalBufferSize(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+unsigned long RPC_ENTRY NdrUserMarshalMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING);
+void RPC_ENTRY NdrUserMarshalFree(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/rpcnsi.h
===================================================================
--- Daodan/MinGW/include/rpcnsi.h	(revision 1046)
+++ Daodan/MinGW/include/rpcnsi.h	(revision 1046)
@@ -0,0 +1,122 @@
+#ifndef _RPCNSI_H
+#define _RPCNSI_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+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_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
+
+RPC_STATUS RPC_ENTRY RpcNsBindingExportA(unsigned long,unsigned char*,RPC_IF_HANDLE,RPC_BINDING_VECTOR*,UUID_VECTOR*);
+RPC_STATUS RPC_ENTRY RpcNsBindingUnexportA(unsigned long,unsigned char*,RPC_IF_HANDLE,UUID_VECTOR*);
+RPC_STATUS RPC_ENTRY RpcNsBindingLookupBeginA(unsigned long,unsigned char*,RPC_IF_HANDLE,UUID*,unsigned long,RPC_NS_HANDLE*);
+RPC_STATUS RPC_ENTRY RpcNsBindingLookupNext(RPC_NS_HANDLE,RPC_BINDING_VECTOR**);
+RPC_STATUS RPC_ENTRY RpcNsBindingLookupDone(RPC_NS_HANDLE*);
+RPC_STATUS RPC_ENTRY RpcNsGroupDeleteA(unsigned long,unsigned char*);
+RPC_STATUS RPC_ENTRY RpcNsGroupMbrAddA(unsigned long,unsigned char*,unsigned long,unsigned char*);
+RPC_STATUS RPC_ENTRY RpcNsGroupMbrRemoveA(unsigned long,unsigned char*,unsigned long,unsigned char*);
+RPC_STATUS RPC_ENTRY RpcNsGroupMbrInqBeginA(unsigned long,unsigned char*,unsigned long,RPC_NS_HANDLE*);
+RPC_STATUS RPC_ENTRY RpcNsGroupMbrInqNextA(RPC_NS_HANDLE,unsigned char**);
+RPC_STATUS RPC_ENTRY RpcNsGroupMbrInqDone(RPC_NS_HANDLE*);
+RPC_STATUS RPC_ENTRY RpcNsProfileDeleteA(unsigned long,unsigned char*);
+RPC_STATUS RPC_ENTRY RpcNsProfileEltAddA(unsigned long,unsigned char*,RPC_IF_ID*,unsigned long,unsigned char*,unsigned long,unsigned char*);
+RPC_STATUS RPC_ENTRY RpcNsProfileEltRemoveA(unsigned long,unsigned char*,RPC_IF_ID*,unsigned long,unsigned char*);
+RPC_STATUS RPC_ENTRY RpcNsProfileEltInqBeginA(unsigned long,unsigned char*,unsigned long,RPC_IF_ID*,unsigned long,unsigned long,unsigned char*,RPC_NS_HANDLE*);
+RPC_STATUS RPC_ENTRY RpcNsProfileEltInqNextA(RPC_NS_HANDLE,RPC_IF_ID*,unsigned char**,unsigned long*,unsigned char**);
+RPC_STATUS RPC_ENTRY RpcNsProfileEltInqDone(RPC_NS_HANDLE*);
+RPC_STATUS RPC_ENTRY RpcNsEntryObjectInqNext(/*IN*/ RPC_NS_HANDLE,/*OUT*/ UUID*);
+RPC_STATUS RPC_ENTRY RpcNsEntryObjectInqDone(/*IN OUT*/ RPC_NS_HANDLE*);
+RPC_STATUS RPC_ENTRY RpcNsEntryExpandNameA(unsigned long,unsigned char*,unsigned char**);
+RPC_STATUS RPC_ENTRY RpcNsMgmtBindingUnexportA(unsigned long,unsigned char*,RPC_IF_ID*,unsigned long,UUID_VECTOR*);
+RPC_STATUS RPC_ENTRY RpcNsMgmtEntryCreateA(unsigned long,unsigned char*);
+RPC_STATUS RPC_ENTRY RpcNsMgmtEntryDeleteA(unsigned long,unsigned char*);
+RPC_STATUS RPC_ENTRY RpcNsMgmtEntryInqIfIdsA(unsigned long,unsigned char*,RPC_IF_ID_VECTOR**);
+RPC_STATUS RPC_ENTRY RpcNsMgmtHandleSetExpAge(RPC_NS_HANDLE,unsigned long);
+RPC_STATUS RPC_ENTRY RpcNsMgmtInqExpAge(unsigned long*);
+RPC_STATUS RPC_ENTRY RpcNsMgmtSetExpAge(unsigned long);
+RPC_STATUS RPC_ENTRY RpcNsBindingImportNext(RPC_NS_HANDLE,RPC_BINDING_HANDLE*);
+RPC_STATUS RPC_ENTRY RpcNsBindingImportDone(RPC_NS_HANDLE*);
+RPC_STATUS RPC_ENTRY RpcNsBindingSelect(RPC_BINDING_VECTOR*,RPC_BINDING_HANDLE*);
+#ifndef UNICODE_ONLY
+RPC_STATUS RPC_ENTRY RpcNsEntryObjectInqBeginA(unsigned long,unsigned char*,RPC_NS_HANDLE*);
+RPC_STATUS RPC_ENTRY RpcNsBindingImportBeginA(unsigned long,unsigned char*,RPC_IF_HANDLE,UUID*,RPC_NS_HANDLE*);
+#endif
+#ifdef RPC_UNICODE_SUPPORTED
+RPC_STATUS RPC_ENTRY RpcNsBindingExportW(unsigned long,unsigned short*,RPC_IF_HANDLE,RPC_BINDING_VECTOR*,UUID_VECTOR*);
+RPC_STATUS RPC_ENTRY RpcNsBindingUnexportW(unsigned long,unsigned short*,RPC_IF_HANDLE,UUID_VECTOR*);
+RPC_STATUS RPC_ENTRY RpcNsBindingLookupBeginW(unsigned long,unsigned short*,RPC_IF_HANDLE,UUID*,unsigned long,RPC_NS_HANDLE*);
+RPC_STATUS RPC_ENTRY RpcNsGroupDeleteW(unsigned long,unsigned short*);
+RPC_STATUS RPC_ENTRY RpcNsGroupMbrAddW(unsigned long,unsigned short*,unsigned long,unsigned short*);
+RPC_STATUS RPC_ENTRY RpcNsGroupMbrRemoveW(unsigned long,unsigned short*,unsigned long,unsigned short*);
+RPC_STATUS RPC_ENTRY RpcNsGroupMbrInqBeginW(unsigned long,unsigned short*,unsigned long,RPC_NS_HANDLE*);
+RPC_STATUS RPC_ENTRY RpcNsGroupMbrInqNextW(RPC_NS_HANDLE,unsigned short**);
+RPC_STATUS RPC_ENTRY RpcNsProfileDeleteW(unsigned long,unsigned short*);
+RPC_STATUS RPC_ENTRY RpcNsProfileEltAddW(unsigned long,unsigned short*, RPC_IF_ID*,unsigned long,unsigned short*,unsigned long,unsigned short*);
+RPC_STATUS RPC_ENTRY RpcNsProfileEltRemoveW(unsigned long,unsigned short*, RPC_IF_ID*,unsigned long,unsigned short*);
+RPC_STATUS RPC_ENTRY RpcNsProfileEltInqBeginW(unsigned long,unsigned short*, unsigned long,RPC_IF_ID*,unsigned long,unsigned long,unsigned short*, RPC_NS_HANDLE*);
+RPC_STATUS RPC_ENTRY RpcNsProfileEltInqNextW(RPC_NS_HANDLE,RPC_IF_ID*, unsigned short**,unsigned long*,unsigned short**);
+RPC_STATUS RPC_ENTRY RpcNsEntryObjectInqBeginW(unsigned long,unsigned short*,RPC_NS_HANDLE*);
+RPC_STATUS RPC_ENTRY RpcNsEntryExpandNameW(unsigned long,unsigned short*,unsigned short**);
+RPC_STATUS RPC_ENTRY RpcNsMgmtBindingUnexportW(unsigned long,unsigned short*,RPC_IF_ID*,unsigned long,UUID_VECTOR*);
+RPC_STATUS RPC_ENTRY RpcNsMgmtEntryCreateW(unsigned long,unsigned short*);
+RPC_STATUS RPC_ENTRY RpcNsMgmtEntryDeleteW(unsigned long,unsigned short*);
+RPC_STATUS RPC_ENTRY RpcNsMgmtEntryInqIfIdsW(unsigned long,unsigned short , RPC_IF_ID_VECTOR**);
+RPC_STATUS RPC_ENTRY RpcNsBindingImportBeginW(unsigned long,unsigned short*,RPC_IF_HANDLE,UUID*,RPC_NS_HANDLE*);
+#endif /* RPC_UNICODE_SUPPORTED */
+#ifdef UNICODE
+#define RpcNsBindingLookupBegin RpcNsBindingLookupBeginW
+#define RpcNsBindingImportBegin RpcNsBindingImportBeginW
+#define RpcNsBindingExport RpcNsBindingExportW
+#define RpcNsBindingUnexport RpcNsBindingUnexportW
+#define RpcNsGroupDelete RpcNsGroupDeleteW
+#define RpcNsGroupMbrAdd RpcNsGroupMbrAddW
+#define RpcNsGroupMbrRemove RpcNsGroupMbrRemoveW
+#define RpcNsGroupMbrInqBegin RpcNsGroupMbrInqBeginW
+#define RpcNsGroupMbrInqNext RpcNsGroupMbrInqNextW
+#define RpcNsEntryExpandName RpcNsEntryExpandNameW
+#define RpcNsEntryObjectInqBegin RpcNsEntryObjectInqBeginW
+#define RpcNsMgmtBindingUnexport RpcNsMgmtBindingUnexportW
+#define RpcNsMgmtEntryCreate RpcNsMgmtEntryCreateW
+#define RpcNsMgmtEntryDelete RpcNsMgmtEntryDeleteW
+#define RpcNsMgmtEntryInqIfIds RpcNsMgmtEntryInqIfIdsW
+#define RpcNsProfileDelete RpcNsProfileDeleteW
+#define RpcNsProfileEltAdd RpcNsProfileEltAddW
+#define RpcNsProfileEltRemove RpcNsProfileEltRemoveW
+#define RpcNsProfileEltInqBegin RpcNsProfileEltInqBeginW
+#define RpcNsProfileEltInqNext RpcNsProfileEltInqNextW
+#else
+#define RpcNsBindingLookupBegin RpcNsBindingLookupBeginA
+#define RpcNsBindingImportBegin RpcNsBindingImportBeginA
+#define RpcNsBindingExport RpcNsBindingExportA
+#define RpcNsBindingUnexport RpcNsBindingUnexportA
+#define RpcNsGroupDelete RpcNsGroupDeleteA
+#define RpcNsGroupMbrAdd RpcNsGroupMbrAddA
+#define RpcNsGroupMbrRemove RpcNsGroupMbrRemoveA
+#define RpcNsGroupMbrInqBegin RpcNsGroupMbrInqBeginA
+#define RpcNsGroupMbrInqNext RpcNsGroupMbrInqNextA
+#define RpcNsEntryExpandName RpcNsEntryExpandNameA
+#define RpcNsEntryObjectInqBegin RpcNsEntryObjectInqBeginA
+#define RpcNsMgmtBindingUnexport RpcNsMgmtBindingUnexportA
+#define RpcNsMgmtEntryCreate RpcNsMgmtEntryCreateA
+#define RpcNsMgmtEntryDelete RpcNsMgmtEntryDeleteA
+#define RpcNsMgmtEntryInqIfIds RpcNsMgmtEntryInqIfIdsA
+#define RpcNsProfileDelete RpcNsProfileDeleteA
+#define RpcNsProfileEltAdd RpcNsProfileEltAddA
+#define RpcNsProfileEltRemove RpcNsProfileEltRemoveA
+#define RpcNsProfileEltInqBegin RpcNsProfileEltInqBeginA
+#define RpcNsProfileEltInqNext RpcNsProfileEltInqNextA
+#endif
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/rpcnsip.h
===================================================================
--- Daodan/MinGW/include/rpcnsip.h	(revision 1046)
+++ Daodan/MinGW/include/rpcnsip.h	(revision 1046)
@@ -0,0 +1,25 @@
+#ifndef _RPCNSIP_H
+#define _RPCNSIP_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+typedef struct {
+	RPC_NS_HANDLE LookupContext;
+	RPC_BINDING_HANDLE ProposedHandle;
+	RPC_BINDING_VECTOR *Bindings;
+} RPC_IMPORT_CONTEXT_P,*PRPC_IMPORT_CONTEXT_P;
+RPC_STATUS RPC_ENTRY I_RpcNsGetBuffer(/*IN*/ PRPC_MESSAGE);
+RPC_STATUS RPC_ENTRY I_RpcNsSendReceive(/*IN*/ PRPC_MESSAGE,/*OUT*/ RPC_BINDING_HANDLE*);
+void RPC_ENTRY I_RpcNsRaiseException(/*IN*/ PRPC_MESSAGE,/*IN*/ RPC_STATUS);
+RPC_STATUS RPC_ENTRY I_RpcReBindBuffer(/*IN*/ PRPC_MESSAGE);
+RPC_STATUS RPC_ENTRY I_NsServerBindSearch(void);
+RPC_STATUS RPC_ENTRY I_NsClientBindSearch(void);
+void RPC_ENTRY I_NsClientBindDone(void);
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/rpcnterr.h
===================================================================
--- Daodan/MinGW/include/rpcnterr.h	(revision 1046)
+++ Daodan/MinGW/include/rpcnterr.h	(revision 1046)
@@ -0,0 +1,23 @@
+#ifndef _RPCNTERR_H
+#define _RPCNTERR_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#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_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_INVALID_PIPE_OPERATION RPC_X_WRONG_PIPE_ORDER
+#endif
Index: Daodan/MinGW/include/rpcproxy.h
===================================================================
--- Daodan/MinGW/include/rpcproxy.h	(revision 1046)
+++ Daodan/MinGW/include/rpcproxy.h	(revision 1046)
@@ -0,0 +1,204 @@
+/*
+    -DREGISTER_PROXY_DLL Generates DllMain, DllRegisterServer, and DllUnregisterServer
+    -DPROXY_CLSID=clsid Specifies a class ID to be used by the proxy DLL.
+    -DPROXY_CLSID_IS={..} Specifies the class ID to be used by the proxy DLL.
+    -DNT35_STRICT No new features
+*/
+#ifndef _RPCPROXY_H
+#define _RPCPROXY_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#if defined  __cplusplus  && !defined CINTERFACE
+#warning "rpcproxy type definitions require CINTERFACE"
+#else
+#ifdef __cplusplus
+extern "C" {
+#endif
+#include <rpc.h>
+#include <rpcndr.h>
+#include <string.h>
+
+#define CStdStubBuffer_METHODS CStdStubBuffer_QueryInterface,CStdStubBuffer_AddRef,\
+CStdStubBuffer_Release,CStdStubBuffer_Connect,CStdStubBuffer_Disconnect,CStdStubBuffer_Invoke,\
+CStdStubBuffer_IsIIDSupported,CStdStubBuffer_CountRefs,CStdStubBuffer_DebugServerQueryInterface,\
+CStdStubBuffer_DebugServerRelease
+#define IID_GENERIC_CHECK_IID(name,pIID,index) memcmp(pIID,name##_ProxyVtblList[index]->header.piid,16)
+#define IID_BS_LOOKUP_SETUP int result, low=-1;
+#define IID_BS_LOOKUP_INITIAL_TEST(name,sz,split) if ((result = name##_CHECK_IID(split))>0) { low=sz-split;} else if (!result) { low = split; goto found_label; }
+#define IID_BS_LOOKUP_NEXT_TEST(name,split) if ((result = name##_CHECK_IID(low+split))>=0) { low=low+split; if (!result) goto found_label; }
+#define IID_BS_LOOKUP_RETURN_RESULT(name,sz,index) low+=1; if ((low>=sz )||(result=name##_CHECK_IID(low))) goto not_found_label; found_label: (index)=low; return 1; not_found_label: return 0;
+#define REGISTER_PROXY_DLL_ROUTINES(pProxyFileList, pClsID) \
+HINSTANCE hProxyDll = 0; \
+BOOL WINAPI DllMain(HINSTANCE hinstDLL,DWORD fdwReason,LPVOID lpvReserved) \
+{ \
+if(fdwReason == DLL_PROCESS_ATTACH) hProxyDll = hinstDLL; \
+return TRUE; \
+} \
+HRESULT STDAPICALLTYPE DllRegisterServer(void) \
+{\
+return NdrDllRegisterProxy(hProxyDll, pProxyFileList, pClsID); \
+}\
+HRESULT STDAPICALLTYPE DllUnregisterServer(void)\
+{\
+return NdrDllUnregisterProxy(hProxyDll, pProxyFileList, pClsID);\
+}
+#ifdef PROXY_CLSID
+#define CLSID_PSFACTORYBUFFER extern CLSID PROXY_CLSID;
+#else
+#ifdef PROXY_CLSID_IS
+#define CLSID_PSFACTORYBUFFER const CLSID CLSID_PSFactoryBuffer = PROXY_CLSID_IS;
+#define PROXY_CLSID CLSID_PSFactoryBuffer
+#else
+#define CLSID_PSFACTORYBUFFER
+#endif
+#endif
+#ifndef PROXY_CLSID
+#define GET_DLL_CLSID (aProxyFileList[0]->pStubVtblList[0] != 0 ? aProxyFileList[0]->pStubVtblList[0]->header.piid : 0)
+#else
+#define GET_DLL_CLSID &PROXY_CLSID
+#endif
+#define EXTERN_PROXY_FILE(name) EXTERN_C const ProxyFileInfo name##_ProxyFileInfo;
+#define PROXYFILE_LIST_START const ProxyFileInfo * aProxyFileList[] = {
+#define REFERENCE_PROXY_FILE(name) & name##_ProxyFileInfo
+#define PROXYFILE_LIST_END 0 };
+#define DLLDATA_GETPROXYDLLINFO(pPFList,pClsid) \
+void RPC_ENTRY GetProxyDllInfo( const ProxyFileInfo*** pInfo, const CLSID ** pId ) \
+{ *pInfo = pPFList; *pId = pClsid; };
+#define DLLGETCLASSOBJECTROUTINE(pPFlist, pClsid,pFactory) HRESULT STDAPICALLTYPE DllGetClassObject(REFCLSID rclsid,REFIID riid,void **ppv) \
+{ return NdrDllGetClassObject(rclsid,riid,ppv,pPFlist,pClsid,pFactory ); }
+#define DLLCANUNLOADNOW(pFactory) HRESULT STDAPICALLTYPE DllCanUnloadNow(void) \
+{ return NdrDllCanUnloadNow( pFactory ); }
+#define DLLDUMMYPURECALL void __cdecl _purecall(void) { }
+#define CSTDSTUBBUFFERRELEASE(pFactory) ULONG STDMETHODCALLTYPE CStdStubBuffer_Release(IRpcStubBuffer *This) \
+{ return NdrCStdStubBuffer_Release(This,(IPSFactoryBuffer *)pFactory); }
+#ifdef PROXY_DELEGATION
+#define CSTDSTUBBUFFER2RELEASE(pFactory) ULONG STDMETHODCALLTYPE CStdStubBuffer2_Release(IRpcStubBuffer *This) \
+{ return NdrCStdStubBuffer2_Release(This,(IPSFactoryBuffer *)pFactory); }
+#else
+#define CSTDSTUBBUFFER2RELEASE(pFactory)
+#endif
+
+#ifdef REGISTER_PROXY_DLL
+#define DLLREGISTRY_ROUTINES(pProxyFileList,pClsID ) REGISTER_PROXY_DLL_ROUTINES(pProxyFileList,pClsID)
+#else
+#define DLLREGISTRY_ROUTINES(pProxyFileList,pClsID)
+#endif
+#define DLLDATA_ROUTINES(pProxyFileList,pClsID) \
+CLSID_PSFACTORYBUFFER \
+CStdPSFactoryBuffer gPFactory = {0,0,0,0}; \
+DLLDATA_GETPROXYDLLINFO(pProxyFileList,pClsID) \
+DLLGETCLASSOBJECTROUTINE(pProxyFileList,pClsID,&gPFactory) \
+DLLCANUNLOADNOW(&gPFactory) \
+CSTDSTUBBUFFERRELEASE(&gPFactory) \
+CSTDSTUBBUFFER2RELEASE(&gPFactory) \
+DLLDUMMYPURECALL \
+DLLREGISTRY_ROUTINES(pProxyFileList, pClsID)
+
+#define DLLDATA_STANDARD_ROUTINES DLLDATA_ROUTINES( (const ProxyFileInfo**) pProxyFileList, &CLSID_PSFactoryBuffer)
+
+struct tagCInterfaceStubVtbl;
+struct tagCInterfaceProxyVtbl;
+typedef struct tagCInterfaceStubVtbl *PCInterfaceStubVtblList;
+typedef struct tagCInterfaceProxyVtbl *PCInterfaceProxyVtblList;
+typedef const char *PCInterfaceName;
+typedef int __stdcall IIDLookupRtn(const IID*,int*);
+typedef IIDLookupRtn *PIIDLookup;
+typedef struct tagProxyFileInfo {
+    const PCInterfaceProxyVtblList *pProxyVtblList;
+    const PCInterfaceStubVtblList *pStubVtblList;
+    const PCInterfaceName * pNamesArray;
+    const IID ** pDelegatedIIDs;
+    const PIIDLookup pIIDLookupRtn;
+    unsigned short TableSize;
+    unsigned short TableVersion;
+    unsigned long Filler1;
+    unsigned long Filler2;
+    unsigned long Filler3;
+    unsigned long Filler4;
+}ProxyFileInfo;
+typedef ProxyFileInfo ExtendedProxyFileInfo;
+
+typedef struct tagCInterfaceProxyHeader {
+#ifdef USE_STUBLESS_PROXY
+    const void *pStublessProxyInfo;
+#endif
+    const IID *piid;
+} CInterfaceProxyHeader;
+typedef struct tagCInterfaceProxyVtbl {
+    CInterfaceProxyHeader header;
+#if defined(__WATCOMC__)
+    void *Vtbl[1];
+#else
+#ifdef __GNUC__
+__extension__
+#endif
+    void *Vtbl[0];
+#endif
+} CInterfaceProxyVtbl;
+typedef void (__RPC_STUB *PRPC_STUB_FUNCTION)(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,DWORD*);
+typedef struct tagCInterfaceStubHeader {
+    const IID *piid;
+    const MIDL_SERVER_INFO *pServerInfo;
+    unsigned long DispatchTableCount;
+    const PRPC_STUB_FUNCTION *pDispatchTable;
+} CInterfaceStubHeader;
+typedef struct tagCInterfaceStubVtbl {
+    CInterfaceStubHeader header;
+    IRpcStubBufferVtbl Vtbl;
+} CInterfaceStubVtbl;
+typedef struct tagCStdStubBuffer {
+    const struct IRpcStubBufferVtbl * lpVtbl;
+    long RefCount;
+    struct IUnknown *pvServerObject;
+    const struct ICallFactoryVtbl * pCallFactoryVtbl;
+    const IID * pAsyncIID;
+    struct IPSFactoryBuffer * pPSFactory;
+    const struct IReleaseMarshalBuffersVtbl * pRMBVtbl;
+} CStdStubBuffer;
+typedef struct tagCStdPSFactoryBuffer {
+    const IPSFactoryBufferVtbl *lpVtbl;
+    long RefCount;
+    const ProxyFileInfo ** pProxyFileList;
+    long Filler1;
+} CStdPSFactoryBuffer;
+void RPC_ENTRY NdrProxyInitialize(void*,PRPC_MESSAGE,PMIDL_STUB_MESSAGE,PMIDL_STUB_DESC,unsigned int);
+void RPC_ENTRY NdrProxyGetBuffer(void*,PMIDL_STUB_MESSAGE);
+void RPC_ENTRY NdrProxySendReceive(void*,MIDL_STUB_MESSAGE*);
+void RPC_ENTRY NdrProxyFreeBuffer(void*,MIDL_STUB_MESSAGE*);
+HRESULT RPC_ENTRY NdrProxyErrorHandler(DWORD);
+void RPC_ENTRY NdrStubInitialize(PRPC_MESSAGE,PMIDL_STUB_MESSAGE,PMIDL_STUB_DESC,IRpcChannelBuffer*);
+void __RPC_STUB NdrStubForwardingFunction(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,DWORD*);
+void RPC_ENTRY NdrStubGetBuffer(IRpcStubBuffer*,IRpcChannelBuffer*,PMIDL_STUB_MESSAGE);
+HRESULT RPC_ENTRY NdrStubErrorHandler(DWORD);
+HRESULT STDMETHODCALLTYPE CStdStubBuffer_QueryInterface(IRpcStubBuffer*,REFIID,void**);
+ULONG STDMETHODCALLTYPE CStdStubBuffer_AddRef(IRpcStubBuffer*);
+ULONG STDMETHODCALLTYPE CStdStubBuffer_Release(IRpcStubBuffer*);
+ULONG STDMETHODCALLTYPE NdrCStdStubBuffer_Release(IRpcStubBuffer*,IPSFactoryBuffer*);
+HRESULT STDMETHODCALLTYPE CStdStubBuffer_Connect(IRpcStubBuffer*,IUnknown*);
+void STDMETHODCALLTYPE CStdStubBuffer_Disconnect(IRpcStubBuffer*);
+HRESULT STDMETHODCALLTYPE CStdStubBuffer_Invoke(IRpcStubBuffer*,RPCOLEMESSAGE*,IRpcChannelBuffer*);
+IRpcStubBuffer* STDMETHODCALLTYPE CStdStubBuffer_IsIIDSupported(IRpcStubBuffer*,REFIID);
+ULONG STDMETHODCALLTYPE CStdStubBuffer_CountRefs(IRpcStubBuffer*);
+HRESULT STDMETHODCALLTYPE CStdStubBuffer_DebugServerQueryInterface(IRpcStubBuffer*,void**);
+void STDMETHODCALLTYPE CStdStubBuffer_DebugServerRelease(IRpcStubBuffer*,void*);
+HRESULT RPC_ENTRY NdrDllGetClassObject(REFCLSID,REFIID,void**,const ProxyFileInfo**,const CLSID*,CStdPSFactoryBuffer*);
+HRESULT RPC_ENTRY NdrDllCanUnloadNow(CStdPSFactoryBuffer*);
+#ifndef NT35_STRICT
+HRESULT RPC_ENTRY NdrDllRegisterProxy(HMODULE,const ProxyFileInfo**,const CLSID*);
+HRESULT RPC_ENTRY NdrDllUnregisterProxy(HMODULE,const ProxyFileInfo**,const CLSID*);
+#define STUB_FORWARDING_FUNCTION NdrStubForwardingFunction
+ULONG STDMETHODCALLTYPE
+CStdStubBuffer2_Release(IRpcStubBuffer*);
+ULONG STDMETHODCALLTYPE
+NdrCStdStubBuffer2_Release(IRpcStubBuffer*,IPSFactoryBuffer*);
+#define CStdStubBuffer_DELEGATING_METHODS 0, 0, CStdStubBuffer2_Release, 0, 0, 0, 0, 0, 0, 0
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif  /* defined  __cplusplus  && !defined CINTERFACE  */
+#endif  /* ndef _RPCPROXY_H  */
+
Index: Daodan/MinGW/include/rtutils.h
===================================================================
--- Daodan/MinGW/include/rtutils.h	(revision 1046)
+++ Daodan/MinGW/include/rtutils.h	(revision 1046)
@@ -0,0 +1,90 @@
+/*
+ * rtutils.h - Routing and Remote Access Services
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain.  You may use,
+ * modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY.  ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED.  This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+#ifndef _RTUTILS_H
+#define _RTUTILS_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*--- Tracing Reference */
+#if (_WIN32_WINNT >= 0x0500)
+DWORD WINAPI TraceDeregisterA(DWORD);
+DWORD WINAPI TraceDeregisterW(DWORD);
+DWORD WINAPI TraceDeregisterExA(DWORD,DWORD);
+DWORD WINAPI TraceDeregisterExW(DWORD,DWORD);
+#define TRACE_NO_SYNCH 0x00000004
+#define TraceDumpA(a,b,c,d,e,f) TraceDumpExA((a),0,(b),(c),(d),(e),(f))
+#define TraceDumpW(a,b,c,d,e,f) TraceDumpExW((a),0,(b),(c),(d),(e),(f))
+DWORD WINAPI TraceDumpExA(DWORD,DWORD,LPBYTE,DWORD,DWORD,BOOL,LPCSTR);
+DWORD WINAPI TraceDumpExW(DWORD,DWORD,LPBYTE,DWORD,DWORD,BOOL,LPCWSTR);
+DWORD WINAPI TracePrintfA(DWORD,LPCSTR,...);
+DWORD WINAPI TracePrintfW(DWORD,LPCWSTR,...);
+DWORD WINAPI TracePrintfExA(DWORD,DWORD,LPCSTR,...);
+DWORD WINAPI TracePrintfExW(DWORD,DWORD,LPCWSTR,...);
+#define TracePutsA(a,b) TracePutsExA((a),0,(b))
+#define TracePutsW(a,b) TracePutsExW((a),0,(b))
+DWORD WINAPI TracePutsExA(DWORD,DWORD,LPCSTR);
+DWORD WINAPI TracePutsExW(DWORD,DWORD,LPCWSTR);
+#define TraceRegisterA(a) TraceRegisterExA((a),0)
+#define TraceRegisterW(a) TraceRegisterExW((a),0)
+DWORD WINAPI TraceRegisterExA(LPCSTR,DWORD);
+DWORD WINAPI TraceRegisterExW(LPCWSTR,DWORD);
+#define TRACE_USE_FILE 0x00000001
+#define TRACE_USE_CONSOLE 0x00000002
+#define INVALID_TRACEID 0xFFFFFFFF
+#define TraceVprintfA(a,b,c) TraceVprintfExA((a),0,(b),(c))
+#define TraceVprintfW(a,b,c) TraceVprintfExW((a),0,(b),(c))
+DWORD WINAPI TraceVprintfExA(DWORD,DWORD,LPCSTR,va_list);
+DWORD WINAPI TraceVprintfExW(DWORD,DWORD,LPCWSTR,va_list);
+#define TRACE_NO_STDINFO 0x00000001
+#define TRACE_USE_MASK 0x00000002
+#define TRACE_USE_MSEC 0x00000004
+#ifdef UNICODE
+#define TraceDeregister TraceDeregisterW
+#define TraceDeregisterEx TraceDeregisterExW
+#define TraceDump TraceDumpW
+#define TraceDumpEx TraceDumpExW
+#define TracePrintf TracePrintfW
+#define TracePrintfEx TracePrintfExW
+#define TracePuts TracePutsW
+#define TracePutsEx TracePutsExW
+#define TraceRegister TraceRegisterW
+#define TraceRegisterEx TraceRegisterExW
+#define TraceVprintf TraceVprintfW
+#define TraceVprintfEx TraceVprintfExW
+#else
+#define TraceDeregister TraceDeregisterA
+#define TraceDeregisterEx TraceDeregisterExA
+#define TraceDump TraceDumpA
+#define TraceDumpEx TraceDumpExA
+#define TracePrintf TracePrintfA
+#define TracePrintfEx TracePrintfExA
+#define TracePuts TracePutsA
+#define TracePutsEx TracePutsExA
+#define TraceRegister TraceRegisterA
+#define TraceRegisterEx TraceRegisterExA
+#define TraceVprintf TraceVprintfA
+#define TraceVprintfEx TraceVprintfExA
+#endif
+#endif /* (_WIN32_WINNT >= 0x0500) */
+
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/schannel.h
===================================================================
--- Daodan/MinGW/include/schannel.h	(revision 1046)
+++ Daodan/MinGW/include/schannel.h	(revision 1046)
@@ -0,0 +1,90 @@
+#ifndef _SCHANNEL_H
+#define _SCHANNEL_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#include <wincrypt.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define SCHANNEL_CRED_VERSION 4
+#define SCHANNEL_SHUTDOWN 1
+/* ? Do these belong here or in wincrypt.h */
+#define AUTHTYPE_CLIENT 1
+#define AUTHTYPE_SERVER 2
+
+#define SP_PROT_TLS1_CLIENT 128
+#define SP_PROT_TLS1_SERVER 64
+#define SP_PROT_SSL3_CLIENT 32
+#define SP_PROT_SSL3_SERVER 16
+#define SP_PROT_SSL2_CLIENT 8
+#define SP_PROT_SSL2_SERVER 4
+#define SP_PROT_PCT1_SERVER 1
+#define SP_PROT_PCT1_CLIENT 2
+
+#define SP_PROT_PCT1 (SP_PROT_PCT1_CLIENT|SP_PROT_PCT1_SERVER)
+#define SP_PROT_TLS1 (SP_PROT_TLS1_CLIENT|SP_PROT_TLS1_SERVER)
+#define SP_PROT_SSL2 (SP_PROT_SSL2_CLIENT|SP_PROT_SSL2_SERVER)
+#define SP_PROT_SSL3 (SP_PROT_SSL3_CLIENT|SP_PROT_SSL3_SERVER)
+
+#define SCH_CRED_NO_SYSTEM_MAPPER 2
+#define SCH_CRED_NO_SERVERNAME_CHECK 4
+#define SCH_CRED_MANUAL_CRED_VALIDATION 8
+#define SCH_CRED_NO_DEFAULT_CREDS 16
+#define SCH_CRED_AUTO_CRED_VALIDATION 32
+#define SCH_CRED_REVOCATION_CHECK_CHAIN 512
+#define SCH_CRED_REVOCATION_CHECK_END_CERT 256
+#define SCH_CRED_REVOCATION_CHECK_CHAIN_EXCLUDE_ROOT 1024
+#define SCH_CRED_IGNORE_NO_REVOCATION_CHECK 2048
+#define SCH_CRED_IGNORE_REVOCATION_OFFLINE 4096
+#define SCH_CRED_USE_DEFAULT_CREDS 64
+
+typedef struct _SCHANNEL_CRED {
+	DWORD dwVersion;
+	DWORD cCreds;
+	PCCERT_CONTEXT* paCred;
+	HCERTSTORE hRootStore;
+	DWORD cMappers;
+	struct _HMAPPER** aphMappers;
+	DWORD cSupportedAlgs;
+	ALG_ID* palgSupportedAlgs;
+	DWORD grbitEnabledProtocols;
+	DWORD dwMinimumCypherStrength;
+	DWORD dwMaximumCypherStrength;
+	DWORD dwSessionLifespan;
+	DWORD dwFlags;
+	DWORD reserved;
+} SCHANNEL_CRED, *PSCHANNEL_CRED;
+typedef struct _SecPkgCred_SupportedAlgs {
+	DWORD cSupportedAlgs;
+	ALG_ID* palgSupportedAlgs;
+} SecPkgCred_SupportedAlgs, *PSecPkgCred_SupportedAlgs;
+typedef struct _SecPkgCred_CypherStrengths {
+	DWORD dwMinimumCypherStrength;
+	DWORD dwMaximumCypherStrength;
+} SecPkgCred_CypherStrengths, *PSecPkgCred_CypherStrengths;
+typedef struct _SecPkgCred_SupportedProtocols {
+	DWORD grbitProtocol;
+} SecPkgCred_SupportedProtocols, *PSecPkgCred_SupportedProtocols;
+typedef struct _SecPkgContext_IssuerListInfoEx {
+	PCERT_NAME_BLOB aIssuers;
+	DWORD cIssuers;
+} SecPkgContext_IssuerListInfoEx, *PSecPkgContext_IssuerListInfoEx;
+typedef struct _SecPkgContext_ConnectionInfo {
+	DWORD dwProtocol;
+	ALG_ID aiCipher;
+	DWORD dwCipherStrength;
+	ALG_ID aiHash;
+	DWORD dwHashStrength;
+	ALG_ID aiExch;
+	DWORD dwExchStrength;
+} SecPkgContext_ConnectionInfo, *PSecPkgContext_ConnectionInfo;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SCHANNEL_H */
Index: Daodan/MinGW/include/sched.h
===================================================================
--- Daodan/MinGW/include/sched.h	(revision 1046)
+++ Daodan/MinGW/include/sched.h	(revision 1046)
@@ -0,0 +1,224 @@
+/*
+ * Module: sched.h
+ *
+ * Purpose:
+ *      Provides an implementation of POSIX realtime extensions
+ *      as defined in
+ *
+ *              POSIX 1003.1b-1993      (POSIX.1b)
+ *
+ * --------------------------------------------------------------------------
+ *
+ *      Pthreads-win32 - POSIX Threads Library for Win32
+ *      Copyright(C) 1998 John E. Bossom
+ *      Copyright(C) 1999,2012 Pthreads-win32 contributors
+ *
+ *      Homepage1: http://sourceware.org/pthreads-win32/
+ *      Homepage2: http://sourceforge.net/projects/pthreads4w/
+ *
+ *      The current list of contributors is contained
+ *      in the file CONTRIBUTORS included with the source
+ *      code distribution. The list can also be seen at the
+ *      following World Wide Web location:
+ *      http://sources.redhat.com/pthreads-win32/contributors.html
+ *
+ *      This library is free software; you can redistribute it and/or
+ *      modify it under the terms of the GNU Lesser General Public
+ *      License as published by the Free Software Foundation; either
+ *      version 2 of the License, or (at your option) any later version.
+ *
+ *      This library is distributed in the hope that it will be useful,
+ *      but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *      Lesser General Public License for more details.
+ *
+ *      You should have received a copy of the GNU Lesser General Public
+ *      License along with this library in the file COPYING.LIB;
+ *      if not, write to the Free Software Foundation, Inc.,
+ *      59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
+ */
+#ifndef _SCHED_H
+#define _SCHED_H
+#define __SCHED_H_SOURCED__
+
+#include <_ptw32.h>
+
+/* We need a typedef for pid_t, (and POSIX requires <sched.h> to
+ * define it, as it is defined in <sys/types.h>, but it does NOT
+ * sanction exposure of everything from <sys/types.h>); there is
+ * no pid_t in Windows anyway, (except that MinGW does define it
+ * in their <sys/types.h>), so just provide a suitable typedef,
+ * but note that we must do so cautiously, to avoid a typedef
+ * conflict if MinGW's <sys/types.h> is also #included:
+ */
+#if !(defined __MINGW32__ && defined __have_typedef_pid_t)
+
+typedef int pid_t;
+
+#if __GNUC__ < 4
+/* GCC v4.0 and later, (as used by MinGW), allows us to repeat a
+ * typedef, provided every duplicate is consistent; only set this
+ * multiple definition guard when we cannot be certain that it is
+ * permissable to repeat typedefs.
+ */
+#define __have_typedef_pid_t  1
+#endif
+#endif
+
+/* POSIX.1-1993 says that <sched.h> WILL expose all of <time.h>
+ */
+#if _POSIX_C_SOURCE >= 200112L
+/* POSIX.1-2001 and later revises this to say only that it MAY do so;
+ * only struct timespec, and associated time_t are actually required,
+ * so prefer to be selective; (MinGW.org's <time.h> offers an option
+ * for selective #inclusion, when __SCHED_H_SOURCED__ is defined):
+ */
+#define __need_struct_timespec
+#define __need_time_t
+#endif
+#include <time.h>
+
+#if defined __MINGW64__ || _MSC_VER >= 1900
+/* These are known to define struct timespec, when <time.h> has been
+ * #included, but may not, (probably don't), follow the convention of
+ * defining __struct_timespec_defined, as adopted by MinGW.org; for
+ * these cases, we unconditionally assume that struct timespec has
+ * been defined, otherwise, if MinGW.org's criterion has not been
+ * satisfied...
+ */
+#elif !(defined __struct_timespec_defined || defined _TIMESPEC_DEFINED)
+struct timespec
+{ /* ...we fall back on this explicit definition.
+   */
+  time_t	tv_sec;
+  int		tv_nsec;
+};
+# define _TIMESPEC_DEFINED
+#endif
+
+/*
+ * Microsoft VC++6.0 lacks these *_PTR types
+ */
+#if defined(_MSC_VER) && _MSC_VER < 1300 && !defined(_PTW32_HAVE_DWORD_PTR)
+typedef unsigned long ULONG_PTR;
+typedef ULONG_PTR DWORD_PTR;
+#endif
+
+/* Thread scheduling policies */
+
+enum
+{ SCHED_OTHER = 0,
+  SCHED_FIFO,
+  SCHED_RR,
+  SCHED_MIN   = SCHED_OTHER,
+  SCHED_MAX   = SCHED_RR
+};
+
+struct sched_param
+{ int  sched_priority;
+};
+
+/* CPU affinity
+ *
+ * cpu_set_t:
+ * Considered opaque but cannot be an opaque pointer due to the need for
+ * compatibility with GNU systems and sched_setaffinity() et.al., which
+ * include the cpusetsize parameter "normally set to sizeof(cpu_set_t)".
+ *
+ * FIXME: These are GNU, and NOT specified by POSIX; they gratuitously
+ * assume that size_t is defined, which is also not required in a POSIX
+ * conforming <sched.h>.  The latter requirement may be satisfied, for
+ * GCC users, by selective inclusion from <stddef.h>, (and by inclusion
+ * of <stdlib.h> for other compilers); also, maybe consider occluding
+ * all of this within a _GNU_SOURCE (or similar) feature test.
+ */
+#ifdef __GNUC__
+# define __need_size_t
+# include <stddef.h>
+#else
+# include <stdlib.h>
+#endif
+#define CPU_SETSIZE (sizeof(size_t)*8)
+#define CPU_COUNT(setptr) (_sched_affinitycpucount(setptr))
+#define CPU_ZERO(setptr) (_sched_affinitycpuzero(setptr))
+#define CPU_SET(cpu, setptr) (_sched_affinitycpuset((cpu),(setptr)))
+#define CPU_CLR(cpu, setptr) (_sched_affinitycpuclr((cpu),(setptr)))
+#define CPU_ISSET(cpu, setptr) (_sched_affinitycpuisset((cpu),(setptr)))
+
+#define CPU_AND(destsetptr, srcset1ptr, srcset2ptr) \
+ (_sched_affinitycpuand((destsetptr),(srcset1ptr),(srcset2ptr)))
+
+#define CPU_OR(destsetptr, srcset1ptr, srcset2ptr) \
+ (_sched_affinitycpuor((destsetptr),(srcset1ptr),(srcset2ptr)))
+
+#define CPU_XOR(destsetptr, srcset1ptr, srcset2ptr) \
+ (_sched_affinitycpuxor((destsetptr),(srcset1ptr),(srcset2ptr)))
+
+#define CPU_EQUAL(set1ptr, set2ptr) \
+ (_sched_affinitycpuequal((set1ptr),(set2ptr)))
+
+typedef union
+{ char     cpuset[CPU_SETSIZE/8];
+  size_t  _align;
+} cpu_set_t;
+
+__PTW32_BEGIN_C_DECLS
+
+__PTW32_DECLSPEC int sched_yield (void);
+__PTW32_DECLSPEC int sched_get_priority_min (int);
+__PTW32_DECLSPEC int sched_get_priority_max (int);
+
+/* FIXME: this declaration of sched_setscheduler() is NOT as prescribed
+ * by POSIX; it lacks const struct sched_param * as third argument.
+ */
+__PTW32_DECLSPEC int sched_setscheduler (pid_t, int);
+
+/* FIXME: In addition to the above five functions, POSIX also requires:
+ *
+ *   int sched_getparam (pid_t, struct sched_param *);
+ *   int sched_setparam (pid_t, const struct sched_param *);
+ *
+ * both of which are conspicuous by their absence here!
+ */
+
+/* Compatibility with Linux - not standard in POSIX
+ * FIXME: consider occluding within a _GNU_SOURCE (or similar) feature test.
+ */
+__PTW32_DECLSPEC int sched_setaffinity (pid_t, size_t, cpu_set_t *);
+__PTW32_DECLSPEC int sched_getaffinity (pid_t, size_t, cpu_set_t *);
+
+/* Support routines and macros for cpu_set_t
+ */
+__PTW32_DECLSPEC int _sched_affinitycpucount (const cpu_set_t *);
+__PTW32_DECLSPEC void _sched_affinitycpuzero (cpu_set_t *);
+__PTW32_DECLSPEC void _sched_affinitycpuset (int, cpu_set_t *);
+__PTW32_DECLSPEC void _sched_affinitycpuclr (int, cpu_set_t *);
+__PTW32_DECLSPEC int _sched_affinitycpuisset (int, const cpu_set_t *);
+__PTW32_DECLSPEC void _sched_affinitycpuand (cpu_set_t *, const cpu_set_t *, const cpu_set_t *);
+__PTW32_DECLSPEC void _sched_affinitycpuor (cpu_set_t *, const cpu_set_t *, const cpu_set_t *);
+__PTW32_DECLSPEC void _sched_affinitycpuxor (cpu_set_t *, const cpu_set_t *, const cpu_set_t *);
+__PTW32_DECLSPEC int _sched_affinitycpuequal (const cpu_set_t *, const cpu_set_t *);
+
+/* Note that this macro returns ENOTSUP rather than ENOSYS, as
+ * might be expected. However, returning ENOSYS should mean that
+ * sched_get_priority_{min,max} are not implemented as well as
+ * sched_rr_get_interval.  This is not the case, since we just
+ * don't support round-robin scheduling. Therefore I have chosen
+ * to return the same value as sched_setscheduler when SCHED_RR
+ * is passed to it.
+ *
+ * FIXME: POSIX requires this to be defined as a function; this
+ * macro implementation is permitted IN ADDITION to the function,
+ * but the macro alone is not POSIX compliant!  Worse still, it
+ * imposes a requirement on the caller, to ensure that both the
+ * declaration of errno, and the definition of ENOTSUP, are in
+ * scope at point of call, (which it may wish to do anyway, but
+ * POSIX imposes no such constraint)!
+ */
+#define sched_rr_get_interval(_pid, _interval) \
+  ( errno = ENOTSUP, (int) -1 )
+
+__PTW32_END_C_DECLS
+
+#undef __SCHED_H_SOURCED__
+#endif	/* !_SCHED_H */
Index: Daodan/MinGW/include/schnlsp.h
===================================================================
--- Daodan/MinGW/include/schnlsp.h	(revision 1046)
+++ Daodan/MinGW/include/schnlsp.h	(revision 1046)
@@ -0,0 +1,14 @@
+#ifndef _SCHNLSP_H
+#define _SCHNLSP_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+
+#define SECPKG_ATTR_SUPPORTED_ALGS 86
+#define SECPKG_ATTR_CIPHER_STRENGTHS 87
+#define SECPKG_ATTR_SUPPORTED_PROTOCOLS 88
+
+#include <schannel.h>
+
+#endif /* _SCHNLSP_H */
Index: Daodan/MinGW/include/scrnsave.h
===================================================================
--- Daodan/MinGW/include/scrnsave.h	(revision 1046)
+++ Daodan/MinGW/include/scrnsave.h	(revision 1046)
@@ -0,0 +1,81 @@
+/*
+  Screen saver library by Anders Norlander <anorland@hem2.passagen.se>
+
+  This library is (hopefully) compatible with Microsoft's
+  screen saver library.
+
+  This is public domain software.
+
+ */
+#ifndef _SCRNSAVE_H
+#define _SCRNSAVE_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* configure dialog identifier */
+#define DLG_SCRNSAVECONFIGURE 2003
+
+#define idsIsPassword		1000
+#define idsIniFile		1001
+#define idsScreenSaver		1002
+#define idsPassword		1003
+#define idsDifferentPW		1004
+#define idsChangePW		1005
+#define idsBadOldPW		1006
+#define idsAppName		1007
+#define idsNoHelpMemory		1008
+#define idsHelpFile		1009
+#define idsDefKeyword		1010
+
+#define IDS_DESCRIPTION 1
+#define ID_APP 100
+
+#define WS_GT (WS_GROUP | WS_TABSTOP)
+#define SCRM_VERIFYPW		WM_APP
+#define MAXFILELEN		13
+#define TITLEBARNAMELEN		40
+#define APPNAMEBUFFERLEN	40
+#define BUFFLEN			255
+
+#ifndef RC_INVOKED
+
+/* functions provided by the aothor of the screen saver */
+BOOL WINAPI ScreenSaverConfigureDialog(HWND,UINT,WPARAM,LPARAM);
+BOOL WINAPI RegisterDialogClasses(HANDLE);
+LONG WINAPI ScreenSaverProc(HWND,UINT,WPARAM,LPARAM);
+
+/* Change name of function if we are using UNICODE */
+#ifdef UNICODE
+#define DefScreenSaverProc DefScreenSaverProcW
+#endif
+
+/* default screen saver proc; call instead of DefWindowProc */
+LONG WINAPI DefScreenSaverProc(HWND,UINT,WPARAM,LPARAM);
+
+/* change password */
+void WINAPI ScreenSaverChangePassword(HWND);
+
+/* globals that may be used by screen saver */
+extern HINSTANCE	hMainInstance;
+extern HWND		hMainWindow;
+extern BOOL		fChildPreview;
+extern TCHAR		szName[];
+extern TCHAR		szAppName[];
+extern TCHAR		szIniFile[];
+extern TCHAR		szScreenSaver[];
+extern TCHAR		szHelpFile[];
+extern TCHAR		szNoHelpMemory[];
+extern UINT		MyHelpMessage;
+
+#endif /* RC_INVOKED */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SCRNSAVE_H */
Index: Daodan/MinGW/include/sddl.h
===================================================================
--- Daodan/MinGW/include/sddl.h	(revision 1046)
+++ Daodan/MinGW/include/sddl.h	(revision 1046)
@@ -0,0 +1,34 @@
+#ifndef _SDDL_H
+#define _SDDL_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#ifndef WINADVAPI
+#define WINADVAPI
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#if (WINVER >= 0x0500)
+WINADVAPI BOOL WINAPI ConvertSidToStringSidA(PSID Sid, LPSTR* StringSid);
+WINADVAPI BOOL WINAPI ConvertSidToStringSidW(PSID Sid, LPWSTR* StringSid);
+WINADVAPI BOOL WINAPI ConvertStringSidToSidA(LPSTR StringSid, PSID *Sid);
+WINADVAPI BOOL WINAPI ConvertStringSidToSidW(LPWSTR StringSid, PSID *Sid);
+#endif
+
+#ifdef UNICODE
+#define ConvertSidToStringSid ConvertSidToStringSidW
+#define ConvertStringSidToSid ConvertStringSidToSidW
+#else
+#define ConvertSidToStringSid ConvertSidToStringSidA
+#define ConvertStringSidToSid ConvertStringSidToSidA
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SDDL_H */
Index: Daodan/MinGW/include/sdkddkver.h
===================================================================
--- Daodan/MinGW/include/sdkddkver.h	(revision 1046)
+++ Daodan/MinGW/include/sdkddkver.h	(revision 1046)
@@ -0,0 +1,292 @@
+/*
+ * sdkddkver.h
+ *
+ * Macros to set up the compilation environment, such that it provides
+ * support for a user specified host OS version, (default Win2K).
+ *
+ * $Id: sdkddkver.h,v f02731a7c98a 2016/06/02 21:15:06 keithmarshall $
+ *
+ * Written by Earnie Boyd  <earnie@users.sourceforge.net>
+ * Copyright (C) 2012, 2013, 2015, MinGW.org Project
+ *
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ *
+ */
+#ifndef _SDKDDKVER_H
+#define _SDKDDKVER_H
+#pragma GCC system_header
+
+/* Define masks for extracting version components from NTDDI_VERSION;
+ * values and names are guessed based on comments in the documentation; see
+ * http://msdn.microsoft.com/en-us/library/windows/desktop/aa383745(v=vs.85).aspx
+ */
+#define OSVERSION_MASK  	0xFFFF0000
+#define SPVERSION_MASK  	0x0000FF00
+#define SUBVERSION_MASK 	0x000000FF
+
+/* Macros to facilitate such extraction; derived from comments on MSDN or
+ * on social.microsoft.com
+ */
+#define OSVER(ver)		((ver) & OSVERSION_MASK)
+#define SPVER(ver)		(((ver) & SPVERSION_MASK) >> 8)
+#define SUBVER(ver)		((ver) & SUBVERSION_MASK)
+#define WINNTVER(ver)		((ver) >> 16)
+
+/* Macros to construct a minimal NTDDI_VERSION from a _WIN32_WINNT value.
+ */
+#define NTDDI_VERSION_FROM_WIN32_WINNT(ver) _NTDDI_VERSION_FROM_WIN32_WINNT(ver)
+#define _NTDDI_VERSION_FROM_WIN32_WINNT(ver) ver##0000
+
+/* Version constants specifying _WIN32_WINNT versions; these are defined at
+ * http://msdn.microsoft.com/en-us/library/windows/desktop/aa383745(v=vs.85).aspx
+ * (values for legacy platforms have been inferred from historical knowledge).
+ */
+#define _WIN32_WINNT_NT4	0x0400		/* Windows NT4 */
+#define _WIN32_WINNT_NT4E	0x0401		/* Windows NT4E */
+#define _WIN32_WINDOWS_95	0x0400		/* Windows 95 */
+#define _WIN32_WINDOWS_98	0x0410		/* Windows 98 */
+#define _WIN32_WINDOWS_ME	0x0490		/* Windows Millenium Edition */
+#define _WIN32_WINNT_WIN2K	0x0500		/* Windows 2000 */
+#define _WIN32_WINNT_WINXP	0x0501		/* Windows XP */
+#define _WIN32_WINNT_WS03	0x0502		/* Windows Server 2003 */
+#define _WIN32_WINNT_WIN6	0x0600		/* Alias for Windows Vista */
+#define _WIN32_WINNT_VISTA	0x0600		/* Windows Vista */
+#define _WIN32_WINNT_WS08	0x0600		/* Windows Server 2008 */
+#define _WIN32_WINNT_LONGHORN	0x0600		/* Alias for Windows Vista */
+#define _WIN32_WINNT_WIN7	0x0601		/* Windows 7 */
+#define _WIN32_WINNT_WIN8	0x0602		/* Windows 8 */
+#define _WIN32_WINNT_WINBLUE	0x0603		/* Windows 8.1 */
+
+/* Version constants specifying Internet Explorer versions; also defined at
+ * http://msdn.microsoft.com/en-us/library/windows/desktop/aa383745(v=vs.85).aspx
+ */
+#define _WIN32_IE_IE50  	0x0500
+#define _WIN32_IE_IE501 	0x0501
+#define _WIN32_IE_IE55  	0x0550
+#define _WIN32_IE_IE56  	0x0560
+#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_IE30  	0x0300
+#define _WIN32_IE_IE301 	0x0301
+#define _WIN32_IE_IE302 	0x0302
+#define _WIN32_IE_IE40  	0x0400
+#define _WIN32_IE_IE401 	0x0401
+
+/* Version constants specifying NTDDI_VERSION; these are also defined at
+ * http://msdn.microsoft.com/en-us/library/windows/desktop/aa383745(v=vs.85).aspx
+ */
+#define __NTDDI_WIN5		0x05000000
+#define __NTDDI_WIN51		0x05010000
+#define __NTDDI_WIN52		0x05020000
+#define __NTDDI_WIN6		0x06000000
+#define __NTDDI_WIN61		0x06010000
+#define __NTDDI_WIN62		0x06020000
+#define __NTDDI_WIN63		0x06030000
+#define __NTDDI_SP0		0x00000000
+#define __NTDDI_SP1		0x00000100
+#define __NTDDI_SP2		0x00000200
+#define __NTDDI_SP3		0x00000300
+#define __NTDDI_SP4		0x00000400
+
+#define NTDDI_WIN2K		__NTDDI_WIN5 + __NTDDI_SP0
+#define NTDDI_WIN2KSP1		__NTDDI_WIN5 + __NTDDI_SP1
+#define NTDDI_WIN2KSP2		__NTDDI_WIN5 + __NTDDI_SP2
+#define NTDDI_WIN2KSP3		__NTDDI_WIN5 + __NTDDI_SP3
+#define NTDDI_WIN2KSP4		__NTDDI_WIN5 + __NTDDI_SP4
+
+#define NTDDI_WINXP		__NTDDI_WIN51 + __NTDDI_SP0
+#define NTDDI_WINXPSP1		__NTDDI_WIN51 + __NTDDI_SP1
+#define NTDDI_WINXPSP2		__NTDDI_WIN51 + __NTDDI_SP2
+#define NTDDI_WINXPSP3		__NTDDI_WIN51 + __NTDDI_SP3
+
+#define NTDDI_WS03		__NTDDI_WIN52 + __NTDDI_SP0
+#define NTDDI_WS03SP1		__NTDDI_WIN52 + __NTDDI_SP1
+#define NTDDI_WS03SP2		__NTDDI_WIN52 + __NTDDI_SP2
+
+#define NTDDI_VISTA		__NTDDI_WIN6 + __NTDDI_SP0
+#define NTDDI_VISTASP1		__NTDDI_WIN6 + __NTDDI_SP1
+#define NTDDI_VISTASP2		__NTDDI_WIN6 + __NTDDI_SP2
+
+#define NTDDI_LONGHORN		NTDDI_VISTA
+
+#define NTDDI_WIN6		NTDDI_VISTA
+#define NTDDI_WIN6SP1		NTDDI_VISTASP1
+#define NTDDI_WIN6SP2		NTDDI_VISTASP2
+
+#define NTDDI_WS08		__NTDDI_WIN6 + __NTDDI_SP1
+
+#define NTDDI_WIN7		__NTDDI_WIN61 + __NTDDI_SP0
+
+#define NTDDI_WIN8		__NTDDI_WIN62 + __NTDDI_SP0
+
+#define NTDDI_WINBLUE		__NTDDI_WIN63 + __NTDDI_SP0
+
+/* Although NTDDI_VERSION is now the preferred designator for the
+ * level of support required from the operating system, legacy code
+ * is likely to have specified WINVER, from which _WIN32_WINNT may
+ * be inferred.
+ */
+#if defined WINVER && ! defined _WIN32_WINNT
+# define _WIN32_WINNT WINVER
+
+/* Additionally, legacy code intended for deployment on the Win9x
+ * series operating systems may have specified _WIN32_WINDOWS, as
+ * an alternative to, or in addition to, _WIN32_WINNT.
+ */
+#elif defined _WIN32_WINDOWS && ! defined _WIN32_WINNT
+# define _WIN32_WINNT _WIN32_WINDOWS
+#endif
+
+/* Stipulate defaults; check consistency of any user specified overrides.
+ */
+#ifdef NTDDI_VERSION
+# ifdef _WIN32_WINNT
+#  if _WIN32_WINNT != WINNTVER(NTDDI_VERSION)
+#   error "_WIN32_WINNT setting conflicts with specified NTDDI_VERSION"
+#  endif
+# else
+#  define _WIN32_WINNT WINNTVER(NTDDI_VERSION)
+#  ifndef WINVER
+#   define WINVER _WIN32_WINNT
+#  endif
+# endif
+#endif
+
+#ifndef _WIN32_WINNT
+# ifdef WINVER
+#  define _WIN32_WINNT WINVER
+# else
+#  ifdef _WARN_DEFAULTS
+#   warning "Assuming default setting of _WIN32_WINNT_WIN2K for _WIN32_WINNT"
+#  endif
+#  define _WIN32_WINNT _WIN32_WINNT_WIN2K
+# endif
+#endif
+
+#ifndef WINVER
+# define WINVER _WIN32_WINNT
+#elif WINVER != _WIN32_WINNT
+ /* TODO(REVIEW): is this appropriate for WINVER consistency checking?
+  */
+# error "_WIN32_WINNT setting conflicts with specified WINVER"
+#endif
+
+#ifndef NTDDI_VERSION
+# ifdef _WARN_DEFAULTS
+#  warning "Assuming default NTDDI_VERSION setting to match _WIN32_WINNT"
+# endif
+# define NTDDI_VERSION NTDDI_VERSION_FROM_WIN32_WINNT(_WIN32_WINNT)
+#endif
+
+/* Map GCC architecture identification macros to their MSVC equivalents.
+ * This mapping was previously specified in <winnt.h>, and duplicated in
+ * <windows.h>; it is now only defined here, because both <windows.h> and
+ * <winnt.h> must include this file anyway, and the potentially error prone
+ * burden of maintaining duplicates is as unnecessary as it is undesirable.
+ */
+#ifndef _M_IX86
+ /* Note that we must process the _M_IX86 equivalent macros in diminishing
+  * order of processor version, since GCC defines __i386__ as identification
+  * for the X86 processor family, in addition to any one of the other three
+  * macros, which may be used to identify a particular processor version.
+  */
+# if defined(__i686__)
+#  define _M_IX86		600
+
+# elif defined(__i586__)
+#  define _M_IX86		500
+
+# elif defined(__i486__)
+#  define _M_IX86		400
+
+# elif defined(__i386__)
+#  define _M_IX86		300
+# endif
+#endif
+
+/* The preceding logic may have established the host type as X86, or it
+ * may have done nothing at all; we must check further.
+ */
+#ifdef _M_IX86
+ /* We've established that we ARE compiling for an X86 host; any MinGW32
+  * compiler SHOULD have set this for us already...
+  */
+# ifndef _X86_
+  /* ...but cross-check it anyway, in case the user may have some unusual
+   * compiler configuration in place.
+   */
+#  define _X86_ 		1
+# endif
+
+# ifndef _M_IX86_FP
+  /* MSVC defines this, to provide additional information about particular
+   * capabilties of the X86 host environment; specifically...
+   */
+#  ifdef __SSE2__
+   /* ...this indicates that the SSE2 instruction set (or better) may be
+    * assumed to be supported...
+    */
+#   define _M_IX86_FP		2
+
+#  elif defined(__SSE__)
+   /* ...whereas, this promises only basic SSE instruction set support...
+    */
+#   define _M_IX86_FP		1
+
+#  else
+   /* ...and this disallows its use, entirely.
+    */
+#   define _M_IX86_FP		0
+#  endif
+# endif
+
+/* When not compiling for an X86 host; check mapping from other possible
+ * GCC architecture identifiers, to their MSVC equivalents.
+ */
+#elif defined(__x86_64__) || defined(__amd64__)
+ /* This represents an Intel X86-64, or (compatible) AMD-64 processor;
+  * MSVC defines...
+  */
+# ifndef _M_X64
+  /* ...this to represent the former, together with...
+   */
+#  define _M_X64		1
+# endif
+# ifndef _M_AMD64
+  /* ...this alias, to represent the latter.
+   */
+#  define _M_AMD64		1
+# endif
+
+#elif defined(__ia64__)
+ /* This represents an Intel Itanium processor, which MSVC designates
+  * by defining this feature test macro.
+  */
+# ifndef _M_IA64
+#  define _M_IA64		1
+# endif
+#endif	/* !_M_IX86 */
+
+#endif /* _SDKDDKVER_H: $RCSfile: sdkddkver.h,v $: end of file */
Index: Daodan/MinGW/include/search.h
===================================================================
--- Daodan/MinGW/include/search.h	(revision 1046)
+++ Daodan/MinGW/include/search.h	(revision 1046)
@@ -0,0 +1,145 @@
+/*
+ * search.h
+ *
+ * Functions for searching and sorting.
+ *
+ * $Id: search.h,v b5eb78a1f3b9 2016/07/03 19:23:28 keithmarshall $
+ *
+ * Written by Danny Smith <dannysmith@users.sourceforge.net>
+ * Copyright (C) 2003, 2004, 2007, 2016, MinGW.org Project.
+ *
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice, this permission notice, and the following
+ * disclaimer shall be included in all copies or substantial portions of
+ * the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OF OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ *
+ */
+#ifndef _SEARCH_H
+#pragma GCC system_header
+#define _SEARCH_H
+
+/* All MinGW headers must include <_mingw.h>
+ */
+#include <_mingw.h>
+
+#ifndef RC_INVOKED
+
+_BEGIN_C_DECLS
+
+/* POSIX specifies that <search.h> must define size_t, as it
+ * is defined in <sys/types.h>; get it from <stddef.h>, just as
+ * <sys/types.h> does.
+ */
+#define __need_size_t
+#include <stddef.h>
+
+/* All search functions require a user-specified comparator
+ * function, to be passed as an argument; this typedef is a
+ * convenient shorthand for its generic prototype.
+ */
+typedef int (*__search_comparator)(const void *, const void *);
+
+/* POSIX specifies that bsearch() and qsort() are to be declared in
+ * <stdlib.h>, and NOT here; they ARE duplicated here, for Microsoft
+ * compatibility only.
+ */
+_CRTIMP __cdecl  void *bsearch
+(const void *, const void *, size_t, size_t, __search_comparator );
+
+_CRTIMP __cdecl  void qsort (void *, size_t, size_t, __search_comparator );
+
+/* This pair of functions are Microsoft specific; see below for their
+ * POSIX counterparts, (corresponding to Microsoft's old names).
+ */
+_CRTIMP __cdecl  void *_lfind
+(const void *, const void *, unsigned int *, unsigned int, __search_comparator );
+
+_CRTIMP __cdecl  void *_lsearch
+(const void *, void *, unsigned int *, unsigned int, __search_comparator );
+
+#ifdef _POSIX_C_SOURCE
+/* Documentation for the following POSIX definitions and prototypes
+ * may be found in the Open Group Base Specifications Issue 7, (which
+ * corresponds to IEEE Std 1003.1, 2008 Edition); see:
+ *
+ * http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/search.h.html
+ */
+typedef
+struct entry
+{ char	*key;
+  void	*data;
+} ENTRY;
+
+typedef
+enum { FIND, ENTER } ACTION;
+
+typedef
+enum { preorder, postorder, endorder, leaf } VISIT;
+
+#ifdef _SEARCH_PRIVATE
+/* For private use within the respective tree function implementations,
+ * we define a structured representation of a tree node.
+ *
+ * FIXME: this really doesn't belong here!  Users should NEVER enable
+ * this feature test; they should not be given this opportunity.
+ */
+typedef
+struct node
+{ const void	*key;
+  struct node 	*llink, *rlink;
+} node_t;
+
+/* Suppress non-null argument annotations, when building the tsearch(),
+ * tfind(), tdelete(), and twalk() implementations, to ensure that GCC
+ * does not optimize away internal argument validation checks.
+ */
+#undef  __MINGW_ATTRIB_NONNULL
+#define __MINGW_ATTRIB_NONNULL(ARG_INDEX)  /* NOTHING */
+
+#endif	/* _SEARCH_PRIVATE */
+
+__cdecl  void *tdelete
+(const void *__restrict__, void **__restrict__, __search_comparator)
+__MINGW_ATTRIB_NONNULL(2) __MINGW_ATTRIB_NONNULL(3);
+
+__cdecl  void *tfind (const void *, void *const *, __search_comparator)
+__MINGW_ATTRIB_NONNULL(2) __MINGW_ATTRIB_NONNULL(3);
+
+__cdecl  void *tsearch (const void *, void **, __search_comparator)
+__MINGW_ATTRIB_NONNULL(2) __MINGW_ATTRIB_NONNULL(3);
+
+__cdecl  void  twalk (const void *, void (*)(const void *, VISIT, int))
+__MINGW_ATTRIB_NONNULL(1) __MINGW_ATTRIB_NONNULL(2);
+
+#endif	/* _POSIX_C_SOURCE */
+
+#if !defined _NO_OLDNAMES || defined _POSIX_C_SOURCE
+/* Declared as deprecated, by Microsoft, but these are the POSIX names
+ * for the functions which Microsoft now call _lfind() and _lsearch().
+ */
+_CRTIMP __cdecl  void *lfind
+(const void *, const void *, unsigned int *, unsigned int, __search_comparator);
+
+_CRTIMP __cdecl  void *lsearch
+(const void *, void *, unsigned int *, unsigned int, __search_comparator);
+#endif
+
+_END_C_DECLS
+
+#endif	/* ! RC_INVOKED */
+#endif	/* !_SEARCH_H: $RCSfile: search.h,v $: end of file */
Index: Daodan/MinGW/include/secext.h
===================================================================
--- Daodan/MinGW/include/secext.h	(revision 1046)
+++ Daodan/MinGW/include/secext.h	(revision 1046)
@@ -0,0 +1,52 @@
+#ifndef _SECEXT_H
+#define _SECEXT_H
+
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef RC_INVOKED
+#if (_WIN32_WINNT >= 0x0500)
+typedef enum
+{
+  NameUnknown = 0,
+  NameFullyQualifiedDN = 1,
+  NameSamCompatible = 2,
+  NameDisplay = 3,
+  NameUniqueId = 6,
+  NameCanonical = 7,
+  NameUserPrincipal = 8,
+  NameCanonicalEx = 9,
+  NameServicePrincipal = 10,
+  NameDnsDomain = 12
+} EXTENDED_NAME_FORMAT, *PEXTENDED_NAME_FORMAT;
+
+BOOLEAN WINAPI GetComputerObjectNameA(EXTENDED_NAME_FORMAT,LPSTR,PULONG);
+BOOLEAN WINAPI GetComputerObjectNameW(EXTENDED_NAME_FORMAT,LPWSTR,PULONG);
+BOOLEAN WINAPI GetUserNameExA(EXTENDED_NAME_FORMAT,LPSTR,PULONG);
+BOOLEAN WINAPI GetUserNameExW(EXTENDED_NAME_FORMAT,LPWSTR,PULONG);
+BOOLEAN WINAPI TranslateNameA(LPCSTR,EXTENDED_NAME_FORMAT,EXTENDED_NAME_FORMAT,LPSTR,PULONG);
+BOOLEAN WINAPI TranslateNameW(LPCWSTR,EXTENDED_NAME_FORMAT,EXTENDED_NAME_FORMAT,LPWSTR,PULONG);
+
+#ifdef UNICODE
+#define GetComputerObjectName GetComputerObjectNameW
+#define GetUserNameEx GetUserNameExW
+#define TranslateName TranslateNameW
+#else
+#define GetComputerObjectName GetComputerObjectNameA
+#define GetUserNameEx GetUserNameExA
+#define TranslateName TranslateNameA
+#endif
+
+#endif /* ! RC_INVOKED */
+#endif /* _WIN32_WINNT >= 0x0500 */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* ! _SECEXT_H */
Index: Daodan/MinGW/include/security.h
===================================================================
--- Daodan/MinGW/include/security.h	(revision 1046)
+++ Daodan/MinGW/include/security.h	(revision 1046)
@@ -0,0 +1,42 @@
+#ifndef _SECURITY_H
+#define _SECURITY_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+
+#define SEC_E_OK 0
+#define SEC_E_CERT_EXPIRED (-2146893016)
+#define SEC_E_INCOMPLETE_MESSAGE (-2146893032)
+#define SEC_E_INSUFFICIENT_MEMORY (-2146893056)
+#define SEC_E_INTERNAL_ERROR (-2146893052)
+#define SEC_E_INVALID_HANDLE (-2146893055)
+#define SEC_E_INVALID_TOKEN (-2146893048)
+#define SEC_E_LOGON_DENIED (-2146893044)
+#define SEC_E_NO_AUTHENTICATING_AUTHORITY (-2146893039)
+#define SEC_E_NO_CREDENTIALS (-2146893042)
+#define SEC_E_TARGET_UNKNOWN (-2146893053)
+#define SEC_E_UNSUPPORTED_FUNCTION (-2146893054)
+#define SEC_E_UNTRUSTED_ROOT (-2146893019)
+#define SEC_E_WRONG_PRINCIPAL (-2146893022)
+#define SEC_E_SECPKG_NOT_FOUND (-2146893051)
+#define SEC_E_QOP_NOT_SUPPORTED (-2146893046)
+#define SEC_E_UNKNOWN_CREDENTIALS (-2146893043)
+#define SEC_E_NOT_OWNER (-2146893050)
+#define SEC_I_RENEGOTIATE 590625
+#define SEC_I_COMPLETE_AND_CONTINUE 590612
+#define SEC_I_COMPLETE_NEEDED 590611
+#define SEC_I_CONTINUE_NEEDED 590610
+#define SEC_I_INCOMPLETE_CREDENTIALS 590624
+
+/* always a char */
+typedef char SEC_CHAR;
+typedef wchar_t SEC_WCHAR;
+typedef long SECURITY_STATUS;
+#define SEC_FAR
+
+#include <sspi.h>
+#include <ntsecpkg.h>
+#include <secext.h>
+
+#endif /* _SECURITY_H */
Index: Daodan/MinGW/include/semaphore.h
===================================================================
--- Daodan/MinGW/include/semaphore.h	(revision 1046)
+++ Daodan/MinGW/include/semaphore.h	(revision 1046)
@@ -0,0 +1,100 @@
+/*
+ * Module: semaphore.h
+ *
+ * Purpose:
+ *	Semaphores aren't actually part of the PThreads standard.
+ *	They are defined by the POSIX Standard:
+ *
+ *		POSIX 1003.1b-1993	(POSIX.1b)
+ *
+ * --------------------------------------------------------------------------
+ *
+ *      Pthreads-win32 - POSIX Threads Library for Win32
+ *      Copyright(C) 1998 John E. Bossom
+ *      Copyright(C) 1999-2012, 2016, Pthreads-win32 contributors
+ *
+ *      Homepage1: http://sourceware.org/pthreads-win32/
+ *      Homepage2: http://sourceforge.net/projects/pthreads4w/
+ *
+ *      The current list of contributors is contained
+ *      in the file CONTRIBUTORS included with the source
+ *      code distribution. The list can also be seen at the
+ *      following World Wide Web location:
+ *      http://sources.redhat.com/pthreads-win32/contributors.html
+ *
+ *      This library is free software; you can redistribute it and/or
+ *      modify it under the terms of the GNU Lesser General Public
+ *      License as published by the Free Software Foundation; either
+ *      version 2 of the License, or (at your option) any later version.
+ *
+ *      This library is distributed in the hope that it will be useful,
+ *      but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *      Lesser General Public License for more details.
+ *
+ *      You should have received a copy of the GNU Lesser General Public
+ *      License along with this library in the file COPYING.LIB;
+ *      if not, write to the Free Software Foundation, Inc.,
+ *      59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
+ */
+#ifndef _SEMAPHORE_H
+#define _SEMAPHORE_H
+
+/* FIXME: POSIX.1 says that _POSIX_SEMAPHORES should be defined
+ * in <unistd.h>, not here; for later POSIX.1 versions, its value
+ * should match the corresponding _POSIX_VERSION number, but in
+ * the case of POSIX.1b-1993, the value is unspecified.
+ *
+ * Notwithstanding the above, since POSIX semaphores, (and indeed
+ * having any <unistd.h> to #include), are not a standard feature
+ * on MS-Windows, it is convenient to retain this definition here;
+ * we may consider adding a hook, to make it selectively available
+ * for inclusion by <unistd.h>, in those cases (e.g. MinGW) where
+ * <unistd.h> is provided.
+ */
+#define _POSIX_SEMAPHORES
+
+/* Internal macros, common to the public interfaces for various
+ * pthreads-win32 components, are defined in <_ptw32.h>; we must
+ * include them here.
+ */
+#include <_ptw32.h>
+
+/* The sem_timedwait() function was added in POSIX.1-2001; it
+ * requires struct timespec to be defined, at least as a partial
+ * (a.k.a. incomplete) data type.  Forward declare it as such.
+ */
+struct timespec;
+
+/* The data type used to represent our semaphore implementation,
+ * as required by POSIX.1; FIXME: consider renaming the underlying
+ * structure tag, to avoid possible pollution of user namespace.
+ */
+typedef struct sem_t_ * sem_t;
+
+/* POSIX.1b (and later) mandates SEM_FAILED as the value to be
+ * returned on failure of sem_open(); (our implementation is a
+ * stub, which will always return this).
+ */
+#define SEM_FAILED  (sem_t *)(-1)
+
+__PTW32_BEGIN_C_DECLS
+
+/* Function prototypes: some are implemented as stubs, which
+ * always fail; (FIXME: identify them).
+ */
+__PTW32_DECLSPEC int sem_init (sem_t * sem, int pshared, unsigned int value);
+__PTW32_DECLSPEC int sem_destroy (sem_t * sem);
+__PTW32_DECLSPEC int sem_trywait (sem_t * sem);
+__PTW32_DECLSPEC int sem_wait (sem_t * sem);
+__PTW32_DECLSPEC int sem_timedwait (sem_t * sem, const struct timespec * abstime);
+__PTW32_DECLSPEC int sem_post (sem_t * sem);
+__PTW32_DECLSPEC int sem_post_multiple (sem_t * sem, int count);
+__PTW32_DECLSPEC sem_t *sem_open (const char *, int, ...);
+__PTW32_DECLSPEC int sem_close (sem_t * sem);
+__PTW32_DECLSPEC int sem_unlink (const char * name);
+__PTW32_DECLSPEC int sem_getvalue (sem_t * sem, int * sval);
+
+__PTW32_END_C_DECLS
+
+#endif	/* !_SEMAPHORE_H */
Index: Daodan/MinGW/include/servprov.h
===================================================================
--- Daodan/MinGW/include/servprov.h	(revision 1046)
+++ Daodan/MinGW/include/servprov.h	(revision 1046)
@@ -0,0 +1,33 @@
+#ifndef _SERVPROV_H
+#define _SERVPROV_H
+#define _OLEIDL_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+EXTERN_C const IID IID_IServiceProvider;
+#define INTERFACE IServiceProvider
+DECLARE_INTERFACE_(IServiceProvider,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(QueryService)(THIS_ REFGUID,REFIID,void**) PURE;
+};
+#undef INTERFACE
+
+#ifdef COBJMACROS
+#define IServiceProvider_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
+#define IServiceProvider_AddRef(T) (T)->lpVtbl->AddRef(T)
+#define IServiceProvider_Release(T) (T)->lpVtbl->Release(T)
+#define IServiceProvider_QueryService(T,a,b,c) (T)->lpVtbl->QueryService(T,a,b,c)
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/setjmp.h
===================================================================
--- Daodan/MinGW/include/setjmp.h	(revision 1046)
+++ Daodan/MinGW/include/setjmp.h	(revision 1046)
@@ -0,0 +1,56 @@
+/*
+ * setjmp.h
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is a part of the mingw-runtime package.
+ * No warranty is given; refer to the file DISCLAIMER within the package.
+ *
+ * Declarations supporting setjmp and longjump, a method for avoiding
+ * the normal function call return sequence. (Bleah!)
+ *
+ */
+
+#ifndef _SETJMP_H_
+#define _SETJMP_H_
+
+/* All the headers include this file. */
+#include <_mingw.h>
+
+#ifndef RC_INVOKED
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * The buffer used by setjmp to store the information used by longjmp
+ * to perform it's evil goto-like work. The size of this buffer was
+ * determined through experimentation; it's contents are a mystery.
+ * NOTE: This was determined on an i386 (actually a Pentium). The
+ *       contents could be different on an Alpha or something else.
+ */
+#define _JBLEN 16
+#define _JBTYPE int
+typedef _JBTYPE jmp_buf[_JBLEN];
+
+/*
+ * The function provided by CRTDLL which appears to do the actual work
+ * of setjmp.
+ */
+_CRTIMP int __cdecl __MINGW_NOTHROW _setjmp (jmp_buf);
+
+#define	setjmp(x)	_setjmp(x)
+
+/*
+ * Return to the last setjmp call and act as if setjmp had returned
+ * nVal (which had better be non-zero!).
+ */
+_CRTIMP void __cdecl __MINGW_NOTHROW longjmp (jmp_buf, int) __MINGW_ATTRIB_NORETURN;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* Not RC_INVOKED */
+
+#endif	/* Not _SETJMP_H_ */
+
Index: Daodan/MinGW/include/setupapi.h
===================================================================
--- Daodan/MinGW/include/setupapi.h	(revision 1046)
+++ Daodan/MinGW/include/setupapi.h	(revision 1046)
@@ -0,0 +1,1590 @@
+#ifndef _SETUPAPI_H
+#define _SETUPAPI_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#include <commctrl.h>
+#include <pshpack1.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define WINSETUPAPI DECLSPEC_IMPORT
+
+#define LINE_LEN	256
+#define MAX_INF_STRING_LENGTH	4096
+#define MAX_TITLE_LEN	60
+#define MAX_INSTRUCTION_LEN	256
+#define MAX_LABEL_LEN	30
+#define MAX_SERVICE_NAME_LEN	256
+#define MAX_SUBTITLE_LEN	256
+#define SP_MAX_MACHINENAME_LENGTH	(MAX_PATH + 3)
+
+#define COPYFLG_WARN_IF_SKIP	0x00000001
+#define COPYFLG_NOSKIP	0x00000002
+#define COPYFLG_NOVERSIONCHECK	0x00000004
+#define COPYFLG_FORCE_FILE_IN_USE	0x00000008
+#define COPYFLG_NO_OVERWRITE	0x00000010
+#define COPYFLG_NO_VERSION_DIALOG	0x00000020
+#define COPYFLG_OVERWRITE_OLDER_ONLY	0x00000040
+#define COPYFLG_REPLACEONLY	0x00000400
+#define COPYFLG_NODECOMP	0x00000800
+#define COPYFLG_REPLACE_BOOT_FILE	0x00001000
+#define COPYFLG_NOPRUNE	0x00002000
+#define DELFLG_IN_USE	0x00000001
+#define DELFLG_IN_USE1	0x00010000
+#define DI_REMOVEDEVICE_GLOBAL	0x00000001
+#define DI_REMOVEDEVICE_CONFIGSPECIFIC	0x00000002
+#define DI_UNREMOVEDEVICE_CONFIGSPECIFIC	0x00000002
+#define DI_SHOWOEM	0x00000001
+#define DI_SHOWCOMPAT	0x00000002
+#define DI_SHOWCLASS	0x00000004
+#define DI_SHOWALL	0x00000007
+#define DI_NOVCP	0x00000008
+#define DI_DIDCOMPAT	0x00000010
+#define DI_DIDCLASS	0x00000020
+#define DI_AUTOASSIGNRES	0x00000040
+#define DI_NEEDRESTART	0x00000080
+#define DI_NEEDREBOOT	0x00000100
+#define DI_NOBROWSE	0x00000200
+#define DI_MULTMFGS	0x00000400
+#define DI_DISABLED	0x00000800
+#define DI_GENERALPAGE_ADDED	0x00001000
+#define DI_RESOURCEPAGE_ADDED	0x00002000
+#define DI_PROPERTIES_CHANGE	0x00004000
+#define DI_INF_IS_SORTED	0x00008000
+#define DI_ENUMSINGLEINF	0x00010000
+#define DI_DONOTCALLCONFIGMG	0x00020000
+#define DI_INSTALLDISABLED	0x00040000
+#define DI_COMPAT_FROM_CLASS	0x00080000
+#define DI_CLASSINSTALLPARAMS	0x00100000
+#define DI_NODI_DEFAULTACTION	0x00200000
+#define DI_QUIETINSTALL	0x00800000
+#define DI_NOFILECOPY	0x01000000
+#define DI_FORCECOPY	0x02000000
+#define DI_DRIVERPAGE_ADDED	0x04000000
+#define DI_USECI_SELECTSTRINGS	0x08000000
+#define DI_OVERRIDE_INFFLAGS	0x10000000
+#define DI_PROPS_NOCHANGEUSAGE	0x20000000
+#define DI_NOSELECTICONS	0x40000000
+#define DI_NOWRITE_IDS	0x80000000
+#define DI_FLAGSEX_USEOLDINFSEARCH	0x00000001
+#define DI_FLAGSEX_AUTOSELECTRANK0	0x00000002
+#define DI_FLAGSEX_CI_FAILED	0x00000004
+#define DI_FLAGSEX_DIDINFOLIST	0x00000010
+#define DI_FLAGSEX_DIDCOMPATINFO	0x00000020
+#define DI_FLAGSEX_FILTERCLASSES	0x00000040
+#define DI_FLAGSEX_SETFAILEDINSTALL	0x00000080
+#define DI_FLAGSEX_DEVICECHANGE	0x00000100
+#define DI_FLAGSEX_ALWAYSWRITEIDS	0x00000200
+#define DI_FLAGSEX_PROPCHANGE_PENDING	0x00000400
+#define DI_FLAGSEX_ALLOWEXCLUDEDDRVS	0x00000800
+#define DI_FLAGSEX_NOUIONQUERYREMOVE	0x00001000
+#define DI_FLAGSEX_USECLASSFORCOMPAT	0x00002000
+#define DI_FLAGSEX_OLDINF_IN_CLASSLIST	0x00004000
+#define DI_FLAGSEX_NO_DRVREG_MODIFY	0x00008000
+#define DI_FLAGSEX_IN_SYSTEM_SETUP	0x00010000
+#define DI_FLAGSEX_INET_DRIVER	0x00020000
+#define DI_FLAGSEX_APPENDDRIVERLIST	0x00040000
+#define DI_FLAGSEX_PREINSTALLBACKUP	0x00080000
+#define DI_FLAGSEX_BACKUPONREPLACE	0x00100000
+#define DI_FLAGSEX_DRIVERLIST_FROM_URL	0x00200000
+#define DI_FLAGSEX_RESERVED1	0x00400000
+#define DI_FLAGSEX_EXCLUDE_OLD_INET_DRIVERS	0x00800000
+#define DI_FLAGSEX_POWERPAGE_ADDED	0x01000000
+#define DIBCI_NOINSTALLCLASS	0x00000001
+#define DIBCI_NODISPLAYCLASS	0x00000002
+#define DICD_GENERATE_ID	0x00000001
+#define DICD_INHERIT_CLASSDRVS	0x00000002
+#define DICS_ENABLE	1
+#define DICS_FLAG_GLOBAL	1
+#define DICS_DISABLE	2
+#define DICS_FLAG_CONFIGSPECIFIC	2
+#define DICS_PROPCHANGE	3
+#define DICS_START	4
+#define DICS_FLAG_CONFIGGENERAL	4
+#define DICS_STOP	5
+#define DIF_SELECTDEVICE	1
+#define DIF_INSTALLDEVICE	2
+#define DIF_ASSIGNRESOURCES	3
+#define DIF_PROPERTIES	4
+#define DIF_REMOVE	5
+#define DIF_FIRSTTIMESETUP	6
+#define DIF_FOUNDDEVICE	7
+#define DIF_SELECTCLASSDRIVERS	8
+#define DIF_VALIDATECLASSDRIVERS	9
+#define DIF_INSTALLCLASSDRIVERS	10
+#define DIF_CALCDISKSPACE	11
+#define DIF_DESTROYPRIVATEDATA	12
+#define DIF_VALIDATEDRIVER	13
+#define DIF_MOVEDEVICE	14
+#define DIF_DETECT	15
+#define DIF_INSTALLWIZARD	16
+#define DIF_DESTROYWIZARDDATA	17
+#define DIF_PROPERTYCHANGE	18
+#define DIF_ENABLECLASS	19
+#define DIF_DETECTVERIFY	20
+#define DIF_INSTALLDEVICEFILES	21
+#define DIF_UNREMOVE	22
+#define DIF_SELECTBESTCOMPATDRV	23
+#define DIF_ALLOW_INSTALL	24
+#define DIF_REGISTERDEVICE	25
+#define DIF_NEWDEVICEWIZARD_PRESELECT	26
+#define DIF_NEWDEVICEWIZARD_SELECT	27
+#define DIF_NEWDEVICEWIZARD_PREANALYZE	28
+#define DIF_NEWDEVICEWIZARD_POSTANALYZE	29
+#define DIF_NEWDEVICEWIZARD_FINISHINSTALL	30
+#define DIF_UNUSED1	31
+#define DIF_INSTALLINTERFACES	32
+#define DIF_DETECTCANCEL	33
+#define DIF_REGISTER_COINSTALLERS	34
+#define DIF_ADDPROPERTYPAGE_ADVANCED	35
+#define DIF_ADDPROPERTYPAGE_BASIC	36
+#define DIF_RESERVED1	37
+#define DIF_TROUBLESHOOTER	38
+#define DIF_POWERMESSAGEWAKE	39
+#define DIGCF_DEFAULT	0x00000001
+#define DIGCDP_FLAG_BASIC	0x00000001
+#define DIGCF_PRESENT	0x00000002
+#define DIGCDP_FLAG_ADVANCED	0x00000002
+#define DIGCF_ALLCLASSES	0x00000004
+#define DIGCF_PROFILE	0x00000008
+#define DIGCF_DEVICEINTERFACE	0x00000010
+#define DIGCF_INTERFACEDEVICE	0x00000010
+#define DIOCR_INSTALLER	0x00000001
+#define DIOCR_INTERFACE	0x00000002
+#define DIODI_NO_ADD	0x00000001
+#define DIOD_INHERIT_CLASSDRVS	0x00000002
+#define DIOD_CANCEL_REMOVE	0x00000004
+#define DIREG_DEV	0x00000001
+#define DIREG_DRV	0x00000002
+#define DIREG_BOTH	0x00000004
+#define DIRID_ABSOLUTE	-1
+#define DIRID_NULL	0
+#define DIRID_SRCPATH	1
+#define DIRID_WINDOWS	10
+#define DIRID_SYSTEM	11
+#define DIRID_DRIVERS	12
+#define DIRID_INF	17
+#define DIRID_HELP	18
+#define DIRID_FONTS	20
+#define DIRID_VIEWERS	21
+#define DIRID_COLOR	23
+#define DIRID_APPS	24
+#define DIRID_SHARED	25
+#define DIRID_BOOT	30
+#define DIRID_SYSTEM16	50
+#define DIRID_SPOOL	51
+#define DIRID_SPOOLDRIVERS	52
+#define DIRID_USERPROFILE	53
+#define DIRID_LOADER	54
+#define DIRID_PRINTPROCESSOR	55
+#define DIRID_COMMON_STARTMENU	16406
+#define DIRID_COMMON_PROGRAMS	16407
+#define DIRID_COMMON_STARTUP	16408
+#define DIRID_COMMON_DESKTOPDIRECTORY	16409
+#define DIRID_COMMON_FAVORITES	16415
+#define DIRID_COMMON_APPDATA	16419
+#define DIRID_PROGRAM_FILES	16422
+#define DIRID_SYSTEM_X86	16425
+#define DIRID_PROGRAM_FILES_X86	16426
+#define DIRID_PROGRAM_FILES_COMMON	16427
+#define DIRID_PROGRAM_FILES_COMMONX86	16428
+#define DIRID_COMMON_TEMPLATES	16429
+#define DIRID_COMMON_DOCUMENTS	16430
+#define DIRID_USER	0x8000
+#define DIRID_ABSOLUTE_16BIT	0xffff
+#define DIRID_IOSUBSYS	DIRID_DRIVERS
+#define DIRID_DEFAULT	DIRID_SYSTEM
+#define DMI_MASK	0x00000001
+#define DMI_BKCOLOR	0x00000002
+#define DMI_USERECT	0x00000004
+#define DNF_DUPDESC	0x00000001
+#define DNF_OLDDRIVER	0x00000002
+#define DNF_EXCLUDEFROMLIST	0x00000004
+#define DNF_NODRIVER	0x00000008
+#define DNF_LEGACYINF	0x00000010
+#define DNF_CLASS_DRIVER	0x00000020
+#define DNF_COMPATIBLE_DRIVER	0x00000040
+#define DNF_INET_DRIVER	0x00000080
+#define DNF_UNUSED1	0x00000100
+#define DNF_INDEXED_DRIVER	0x00000200
+#define DNF_OLD_INET_DRIVER	0x00000400
+#define DNF_BAD_DRIVER	0x00000800
+#define DNF_DUPPROVIDER	0x00001000
+#define DPROMPT_SUCCESS	0
+#define DPROMPT_CANCEL	1
+#define DPROMPT_SKIPFILE	2
+#define DPROMPT_BUFFERTOOSMALL	3
+#define DPROMPT_OUTOFMEMORY	4
+#define DRIVER_HARDWAREID_RANK	0x00000FFF
+#define DYNAWIZ_FLAG_PAGESADDED	0x00000001
+#define DYNAWIZ_FLAG_INSTALLDET_NEXT	0x00000002
+#define DYNAWIZ_FLAG_INSTALLDET_PREV	0x00000004
+#define DYNAWIZ_FLAG_ANALYZE_HANDLECONFLICT	0x00000008
+#define ENABLECLASS_QUERY	0
+#define ENABLECLASS_SUCCESS	1
+#define ENABLECLASS_FAILURE	2
+#define ERROR_EXPECTED_SECTION_NAME	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0)
+#define ERROR_BAD_SECTION_NAME_LINE	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|1)
+#define ERROR_SECTION_NAME_TOO_LONG	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|2)
+#define ERROR_GENERAL_SYNTAX	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|3)
+#define ERROR_WRONG_INF_STYLE	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x100)
+#define ERROR_NOT_INSTALLED	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x1000)
+#define ERROR_SECTION_NOT_FOUND	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x101)
+#define ERROR_LINE_NOT_FOUND	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x102)
+#define ERROR_NO_BACKUP	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x103)
+#define ERROR_NO_ASSOCIATED_CLASS	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x200)
+#define ERROR_CLASS_MISMATCH	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x201)
+#define ERROR_DUPLICATE_FOUND	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x202)
+#define ERROR_NO_DRIVER_SELECTED	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x203)
+#define ERROR_KEY_DOES_NOT_EXIST	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x204)
+#define ERROR_INVALID_DEVINST_NAME	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x205)
+#define ERROR_INVALID_CLASS	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x206)
+#define ERROR_DEVINST_ALREADY_EXISTS	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x207)
+#define ERROR_DEVINFO_NOT_REGISTERED	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x208)
+#define ERROR_INVALID_REG_PROPERTY	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x209)
+#define ERROR_NO_INF	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x20A)
+#define ERROR_NO_SUCH_DEVINST	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x20B)
+#define ERROR_CANT_LOAD_CLASS_ICON	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x20C)
+#define ERROR_INVALID_CLASS_INSTALLER	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x20D)
+#define ERROR_DI_DO_DEFAULT	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x20E)
+#define ERROR_DI_NOFILECOPY	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x20F)
+#define ERROR_INVALID_HWPROFILE	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x210)
+#define ERROR_NO_DEVICE_SELECTED	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x211)
+#define ERROR_DEVINFO_LIST_LOCKED	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x212)
+#define ERROR_DEVINFO_DATA_LOCKED	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x213)
+#define ERROR_DI_BAD_PATH	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x214)
+#define ERROR_NO_CLASSINSTALL_PARAMS	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x215)
+#define ERROR_FILEQUEUE_LOCKED	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x216)
+#define ERROR_BAD_SERVICE_INSTALLSECT	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x217)
+#define ERROR_NO_CLASS_DRIVER_LIST	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x218)
+#define ERROR_NO_ASSOCIATED_SERVICE	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x219)
+#define ERROR_NO_DEFAULT_DEVICE_INTERFACE	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x21A)
+#define ERROR_DEVICE_INTERFACE_ACTIVE	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x21B)
+#define ERROR_DEVICE_INTERFACE_REMOVED	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x21C)
+#define ERROR_BAD_INTERFACE_INSTALLSECT	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x21D)
+#define ERROR_NO_SUCH_INTERFACE_CLASS	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x21E)
+#define ERROR_INVALID_REFERENCE_STRING	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x21F)
+#define ERROR_INVALID_MACHINENAME	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x220)
+#define ERROR_REMOTE_COMM_FAILURE	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x221)
+#define ERROR_MACHINE_UNAVAILABLE	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x222)
+#define ERROR_NO_CONFIGMGR_SERVICES	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x223)
+#define ERROR_INVALID_PROPPAGE_PROVIDER	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x224)
+#define ERROR_NO_SUCH_DEVICE_INTERFACE	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x225)
+#define ERROR_DI_POSTPROCESSING_REQUIRED	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x226)
+#define ERROR_INVALID_COINSTALLER	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x227)
+#define ERROR_NO_COMPAT_DRIVERS	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x228)
+#define ERROR_NO_DEVICE_ICON	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x229)
+#define ERROR_INVALID_INF_LOGCONFIG	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x22A)
+#define ERROR_DI_DONT_INSTALL	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x22B)
+#define ERROR_INVALID_FILTER_DRIVER	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x22C)
+#define ERROR_NON_WINDOWS_NT_DRIVER	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x22D)
+#define ERROR_NON_WINDOWS_DRIVER	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x22E)
+#define ERROR_NO_CATALOG_FOR_OEM_INF	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x22F)
+#define ERROR_DEVINSTALL_QUEUE_NONNATIVE	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x230)
+#define ERROR_NOT_DISABLEABLE	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x231)
+#define ERROR_CANT_REMOVE_DEVINST	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x232)
+#define ERROR_INTERFACE_DEVICE_ACTIVE	ERROR_DEVICE_INTERFACE_ACTIVE
+#define ERROR_INTERFACE_DEVICE_REMOVED	ERROR_DEVICE_INTERFACE_REMOVED
+#define ERROR_NO_DEFAULT_INTERFACE_DEVICE	ERROR_NO_DEFAULT_DEVICE_INTERFACE
+#define ERROR_NO_SUCH_INTERFACE_DEVICE	ERROR_NO_SUCH_DEVICE_INTERFACE
+
+#define FILEOP_COPY	0
+#define FILEOP_ABORT	0
+#define FILE_COMPRESSION_NONE	0
+#define FILEOP_RENAME	1
+#define FILEOP_DOIT	1
+#define FILE_COMPRESSION_WINLZA	1
+#define FILEOP_DELETE	2
+#define FILEOP_SKIP	2
+#define FILE_COMPRESSION_MSZIP	2
+#define FILEOP_BACKUP	3
+#define FILE_COMPRESSION_NTCAB	3
+#define FILEOP_NEWPATH	4
+#define FILEOP_RETRY	FILEOP_DOIT
+#define FLG_ADDREG_TYPE_SZ	0x00000000
+#define FLG_ADDREG_BINVALUETYPE	0x00000001
+#define FLG_ADDREG_NOCLOBBER	0x00000002
+#define FLG_ADDREG_DELVAL	0x00000004
+#define FLG_ADDREG_APPEND	0x00000008
+#define FLG_ADDREG_KEYONLY	0x00000010
+#define FLG_ADDREG_OVERWRITEONLY	0x00000020
+#if (_SETUPAPI_VER >= 0x0501)
+#define FLG_ADDREG_64BITKEY	0x00001000
+#define FLG_ADDREG_KEYONLY_COMMON	0x00002000
+#define FLG_ADDREG_32BITKEY	0x00004000
+#define FLG_ADDREG_DELREG_BIT	0x00008000
+#endif
+#define FLG_ADDREG_TYPE_MULTI_SZ	0x00010000
+#define FLG_ADDREG_TYPE_EXPAND_SZ	0x00020000
+#define FLG_ADDREG_TYPE_BINARY	(0x00000000|FLG_ADDREG_BINVALUETYPE)
+#define FLG_ADDREG_TYPE_DWORD	(0x00010000|FLG_ADDREG_BINVALUETYPE)
+#define FLG_ADDREG_TYPE_NONE	(0x00020000|FLG_ADDREG_BINVALUETYPE)
+#define FLG_ADDREG_TYPE_MASK	(0xFFFF0000|FLG_ADDREG_BINVALUETYPE)
+#define FLG_DELREG_VALUE	0x00000000
+#if (_SETUPAPI_VER >= 0x0501)
+#define FLG_DELREG_TYPE_MASK	FLG_ADDREG_TYPE_MASK
+#define FLG_DELREG_TYPE_SZ	FLG_ADDREG_TYPE_SZ
+#define FLG_DELREG_TYPE_MULTI_SZ	FLG_ADDREG_TYPE_MULTI_SZ
+#define FLG_DELREG_TYPE_EXPAND_SZ	FLG_ADDREG_TYPE_EXPAND_SZ
+#define FLG_DELREG_TYPE_BINARY	FLG_ADDREG_TYPE_BINARY
+#define FLG_DELREG_TYPE_DWORD	FLG_ADDREG_TYPE_DWORD
+#define FLG_DELREG_TYPE_NONE	FLG_ADDREG_TYPE_NONE
+#define FLG_DELREG_64BITKEY	FLG_ADDREG_64BITKEY
+#define FLG_DELREG_KEYONLY_COMMON	FLG_ADDREG_KEYONLY_COMMON
+#define FLG_DELREG_32BITKEY	FLG_ADDREG_32BITKEY
+#define FLG_DELREG_OPERATION_MASK	0x000000FE
+#define FLG_DELREG_MULTI_SZ_DELSTRING	(0x00000002|FLG_DELREG_TYPE_MULTI_SZ|FLG_ADDREG_DELREG_BIT)
+#endif
+#define FLG_BITREG_CLEARBITS	0x00000000
+#define FLG_BITREG_SETBITS	0x00000001
+#define FLG_PROFITEM_CURRENTUSER	0x00000001
+#define FLG_PROFITEM_DELETE	0x00000002
+#define FLG_PROFITEM_GROUP	0x00000004
+#define FLG_PROFITEM_CSIDL	0x00000008
+#define FLG_REGSVR_DLLREGISTER	0x00000001
+#define FLG_REGSVR_DLLINSTALL	0x00000002
+#define MIN_IDD_DYNAWIZ_RESOURCE_ID	10000
+#define MAX_IDD_DYNAWIZ_RESOURCE_ID	11000
+#define IDD_DYNAWIZ_FIRSTPAGE	10000
+#define IDD_DYNAWIZ_SELECT_PREVPAGE	10001
+#define IDD_DYNAWIZ_SELECT_NEXTPAGE	10002
+#define IDD_DYNAWIZ_ANALYZE_PREVPAGE	10003
+#define IDD_DYNAWIZ_ANALYZE_NEXTPAGE	10004
+#define IDD_DYNAWIZ_INSTALLDETECTED_PREVPAGE	10006
+#define IDD_DYNAWIZ_INSTALLDETECTED_NEXTPAGE	10007
+#define IDD_DYNAWIZ_INSTALLDETECTED_NODEVS	10008
+#define IDD_DYNAWIZ_SELECTDEV_PAGE	10009
+#define IDD_DYNAWIZ_ANALYZEDEV_PAGE	10010
+#define IDD_DYNAWIZ_INSTALLDETECTEDDEVS_PAGE	10011
+#define IDD_DYNAWIZ_SELECTCLASS_PAGE	10012
+#define IDF_NOBROWSE	0x00000001
+#define IDF_NOSKIP	0x00000002
+#define IDF_NODETAILS	0x00000004
+#define IDF_NOCOMPRESSED	0x00000008
+#define IDF_CHECKFIRST	0x00000100
+#define IDF_NOBEEP	0x00000200
+#define IDF_NOFOREGROUND	0x00000400
+#define IDF_WARNIFSKIP	0x00000800
+#define IDF_OEMDISK	0x80000000
+#define IDI_RESOURCEFIRST	159
+#define IDI_RESOURCE	159
+#define IDI_RESOURCELAST	161
+#define IDI_RESOURCEOVERLAYFIRST	161
+#define IDI_RESOURCEOVERLAYLAST	161
+#define IDI_CONFLICT	161
+#define IDI_PROBLEM_OVL	500
+#define IDI_DISABLED_OVL	501
+#define IDI_FORCED_OVL	502
+#define IDI_CLASSICON_OVERLAYFIRST	500
+#define IDI_CLASSICON_OVERLAYLAST	502
+#define INF_STYLE_NONE	0x00000000
+#define INF_STYLE_OLDNT	0x00000001
+#define INF_STYLE_WIN4	0x00000002
+#define INF_STYLE_CACHE_ENABLE	0x00000010
+#define INF_STYLE_CACHE_DISABLE	0x00000020
+#define INFINFO_INF_SPEC_IS_HINF	1
+#define INFINFO_INF_NAME_IS_ABSOLUTE	2
+#define INFINFO_DEFAULT_SEARCH	3
+#define INFINFO_REVERSE_DEFAULT_SEARCH	4
+#define INFINFO_INF_PATH_LIST_SEARCH	5
+#define LogSevInformation	0
+#define LogSevWarning	1
+#define LogSevError	2
+#define LogSevFatalError	3
+#define LogSevMaximum	4
+#define LogSeverity	DWORD
+#define MAX_INSTALLWIZARD_DYNAPAGES	20
+#define NDW_INSTALLFLAG_DIDFACTDEFS	0x00000001
+#define NDW_INSTALLFLAG_HARDWAREALLREADYIN	0x00000002
+#define NDW_INSTALLFLAG_NEEDSHUTDOWN	0x00000200
+#define NDW_INSTALLFLAG_EXPRESSINTRO	0x00000400
+#define NDW_INSTALLFLAG_SKIPISDEVINSTALLED	0x00000800
+#define NDW_INSTALLFLAG_NODETECTEDDEVS	0x00001000
+#define NDW_INSTALLFLAG_INSTALLSPECIFIC	0x00002000
+#define NDW_INSTALLFLAG_SKIPCLASSLIST	0x00004000
+#define NDW_INSTALLFLAG_CI_PICKED_OEM	0x00008000
+#define NDW_INSTALLFLAG_PCMCIAMODE	0x00010000
+#define NDW_INSTALLFLAG_PCMCIADEVICE	0x00020000
+#define NDW_INSTALLFLAG_USERCANCEL	0x00040000
+#define NDW_INSTALLFLAG_KNOWNCLASS	0x00080000
+#define NDW_INSTALLFLAG_NEEDRESTART	0x00000080
+#define NDW_INSTALLFLAG_NEEDREBOOT	0x00000100
+#if (_SETUPAPI_VER >= 0x0502)
+#define SCWMI_CLOBBER_SECURITY  0x00000001
+#endif
+#define SETDIRID_NOT_FULL_PATH	0x00000001
+#define SP_COPY_DELETESOURCE	0x0000001
+#define SP_COPY_REPLACEONLY	0x0000002
+#define SP_COPY_NEWER	0x0000004
+#define SP_COPY_NEWER_OR_SAME	0x0000004
+#define SP_COPY_NOOVERWRITE	0x0000008
+#define SP_COPY_NODECOMP	0x0000010
+#define SP_COPY_LANGUAGEAWARE	0x0000020
+#define SP_COPY_SOURCE_ABSOLUTE	0x0000040
+#define SP_COPY_SOURCEPATH_ABSOLUTE	0x0000080
+#define SP_COPY_IN_USE_NEEDS_REBOOT	0x0000100
+#define SP_COPY_FORCE_IN_USE	0x0000200
+#define SP_COPY_NOSKIP	0x0000400
+#define SP_COPY_FORCE_NOOVERWRITE	0x0001000
+#define SP_COPY_FORCE_NEWER	0x0002000
+#define SP_COPY_WARNIFSKIP	0x0004000
+#define SP_COPY_NOBROWSE	0x0008000
+#define SP_COPY_NEWER_ONLY	0x0010000
+#define SP_COPY_SOURCE_SIS_MASTER	0x0020000
+#define SP_COPY_OEMINF_CATALOG_ONLY	0x0040000
+#define SP_COPY_REPLACE_BOOT_FILE	0x0080000
+#define SP_COPY_NOPRUNE	0x0100000
+#define SP_FLAG_CABINETCONTINUATION	0x0000800
+#define SPCRP_SECURITY	23
+#define SPCRP_SECURITY_SDS	24
+#define SPCRP_DEVTYPE	25
+#define SPCRP_EXCLUSIVE	26
+#define SPCRP_CHARACTERISTICS	27
+#define SPCRP_MAXIMUM_PROPERTY	28
+#define SPDIT_NODRIVER	0
+#define SPDIT_CLASSDRIVER	1
+#define SPDIT_COMPATDRIVER	2
+#define SPDRP_DEVICEDESC	0
+#define SPDRP_HARDWAREID	1
+#define SPDRP_COMPATIBLEIDS	2
+#define SPDRP_UNUSED0	3
+#define SPDRP_SERVICE	4
+#define SPDRP_UNUSED1	5
+#define SPDRP_UNUSED2	6
+#define SPDRP_CLASS	7
+#define SPDRP_CLASSGUID	8
+#define SPDRP_DRIVER	9
+#define SPDRP_CONFIGFLAGS	10
+#define SPDRP_MFG	11
+#define SPDRP_FRIENDLYNAME	12
+#define SPDRP_LOCATION_INFORMATION	13
+#define SPDRP_PHYSICAL_DEVICE_OBJECT_NAME	14
+#define SPDRP_CAPABILITIES	15
+#define SPDRP_UI_NUMBER	16
+#define SPDRP_UPPERFILTERS	17
+#define SPDRP_LOWERFILTERS	18
+#define SPDRP_BUSTYPEGUID	19
+#define SPDRP_LEGACYBUSTYPE	20
+#define SPDRP_BUSNUMBER	21
+#define SPDRP_ENUMERATOR_NAME	22
+#define SPDRP_SECURITY	23
+#define SPDRP_SECURITY_SDS	24
+#define SPDRP_DEVTYPE	25
+#define SPDRP_EXCLUSIVE	26
+#define SPDRP_CHARACTERISTICS	27
+#define SPDRP_ADDRESS	28
+#define SPDRP_UI_NUMBER_DESC_FORMAT	30
+#define SPDRP_MAXIMUM_PROPERTY	31
+#define SPDSL_IGNORE_DISK	1
+#define SPDSL_DISALLOW_NEGATIVE_ADJUST	2
+
+#define SPFILENOTIFY_STARTQUEUE	1
+#define SPFILENOTIFY_ENDQUEUE	2
+#define SPFILENOTIFY_STARTSUBQUEUE	3
+#define SPFILENOTIFY_ENDSUBQUEUE	4
+#define SPFILENOTIFY_STARTDELETE	5
+#define SPFILENOTIFY_ENDDELETE	6
+#define SPFILENOTIFY_DELETEERROR	7
+#define SPFILENOTIFY_STARTRENAME	8
+#define SPFILENOTIFY_ENDRENAME	9
+#define SPFILENOTIFY_RENAMEERROR	10
+#define SPFILENOTIFY_STARTCOPY	11
+#define SPFILENOTIFY_ENDCOPY	12
+#define SPFILENOTIFY_COPYERROR	13
+#define SPFILENOTIFY_NEEDMEDIA	14
+#define SPFILENOTIFY_QUEUESCAN	15
+#define SPFILENOTIFY_CABINETINFO	16
+#define SPFILENOTIFY_FILEINCABINET	17
+#define SPFILENOTIFY_NEEDNEWCABINET	18
+#define SPFILENOTIFY_FILEEXTRACTED	19
+#define SPFILENOTIFY_FILEOPDELAYED	20
+#define SPFILENOTIFY_STARTBACKUP	21
+#define SPFILENOTIFY_BACKUPERROR	22
+#define SPFILENOTIFY_ENDBACKUP	23
+#define SPFILENOTIFY_QUEUESCAN_EX	24
+#define SPFILENOTIFY_LANGMISMATCH	0x00010000
+#define SPFILENOTIFY_TARGETEXISTS	0x00020000
+#define SPFILENOTIFY_TARGETNEWER	0x00040000
+#define SPFILELOG_SYSTEMLOG	0x00000001
+#define SPFILELOG_OEMFILE	0x00000001
+#define SPFILELOG_FORCENEW	0x00000002
+#define SPFILELOG_QUERYONLY	0x00000004
+#define SPFILEQ_FILE_IN_USE	0x00000001
+#define SPFILEQ_REBOOT_RECOMMENDED	0x00000002
+#define SPFILEQ_REBOOT_IN_PROGRESS	0x00000004
+#define SPINT_ACTIVE	0x00000001
+#define SPINT_DEFAULT	0x00000002
+#define SPINT_REMOVED	0x00000004
+#define SPID_ACTIVE	0x00000001
+#define SPID_DEFAULT	0x00000002
+#define SPID_REMOVED	0x00000004
+#define SPINST_LOGCONFIG	0x00000001
+#define SPINST_INIFILES	0x00000002
+#define SPINST_REGISTRY	0x00000004
+#define SPINST_INI2REG	0x00000008
+#define SPINST_FILES	0x00000010
+#define SPINST_BITREG	0x00000020
+#define SPINST_REGSVR	0x00000040
+#define SPINST_UNREGSVR	0x00000080
+#define SPINST_PROFILEITEMS	0x00000100
+#if (_SETUPAPI_VER >= 0x0501)
+#define SPINST_COPYINF	0x00000200
+#define SPINST_ALL	0x000003ff
+#else
+#define SPINST_ALL	0x000001ff
+#endif
+#define SPINST_SINGLESECTION	0x00010000
+#define SPINST_LOGCONFIG_IS_FORCED	0x00020000
+#define SPINST_LOGCONFIGS_ARE_OVERRIDES	0x00040000
+#define SPOST_NONE	0
+#define SPOST_PATH	1
+#define SPOST_URL	2
+#define SPOST_MAX	3
+#define SPPSR_SELECT_DEVICE_RESOURCES	1
+#define SPPSR_ENUM_BASIC_DEVICE_PROPERTIES	2
+#define SPPSR_ENUM_ADV_DEVICE_PROPERTIES	3
+#define SPQ_SCAN_FILE_PRESENCE	0x00000001
+#define SPQ_DELAYED_COPY	0x00000001
+#define SPQ_SCAN_FILE_VALIDITY	0x00000002
+#define SPQ_SCAN_USE_CALLBACK	0x00000004
+#define SPQ_SCAN_USE_CALLBACKEX	0x00000008
+#define SPQ_SCAN_INFORM_USER	0x00000010
+#define SPQ_SCAN_PRUNE_COPY_QUEUE	0x00000020
+#define SPRDI_FIND_DUPS	0x00000001
+#define SPSVCINST_TAGTOFRONT	0x00000001
+#define SPSVCINST_ASSOCSERVICE	0x00000002
+#define SPSVCINST_DELETEEVENTLOGENTRY	0x00000004
+#define SPSVCINST_NOCLOBBER_DISPLAYNAME	0x00000008
+#define SPSVCINST_NOCLOBBER_STARTTYPE	0x00000010
+#define SPSVCINST_NOCLOBBER_ERRORCONTROL	0x00000020
+#define SPSVCINST_NOCLOBBER_LOADORDERGROUP	0x00000040
+#define SPSVCINST_NOCLOBBER_DEPENDENCIES	0x00000080
+#define SPSVCINST_NOCLOBBER_DESCRIPTION	0x00000100
+#define SPSVCINST_STOPSERVICE	0x00000200
+#define SPWPT_SELECTDEVICE	0x00000001
+#define SPWP_USE_DEVINFO_DATA	0x00000001
+#define SRCINFO_PATH	1
+#define SRCINFO_TAGFILE	2
+#define SRCINFO_DESCRIPTION	3
+#define SRCINFO_FLAGS	4
+#define SRCLIST_TEMPORARY	0x00000001
+#define SRCLIST_NOBROWSE	0x00000002
+#define SRCLIST_SYSTEM	0x00000010
+#define SRCLIST_USER	0x00000020
+#define SRCLIST_SYSIFADMIN	0x00000040
+#define SRCLIST_SUBDIRS	0x00000100
+#define SRCLIST_APPEND	0x00000200
+#define SRCLIST_NOSTRIPPLATFORM	0x00000400
+
+#ifndef RC_INVOKED
+typedef PVOID HINF;
+typedef PVOID HDSKSPC;
+typedef PVOID HDEVINFO;
+typedef PVOID HSPFILEQ;
+typedef PVOID HSPFILELOG;
+typedef UINT DI_FUNCTION;
+
+typedef enum {
+    SetupFileLogSourceFilename,
+    SetupFileLogChecksum,
+    SetupFileLogDiskTagfile,
+    SetupFileLogDiskDescription,
+    SetupFileLogOtherInfo,
+    SetupFileLogMax
+} SetupFileLogInfo;
+typedef struct _INFCONTEXT {
+    PVOID Inf;
+    PVOID CurrentInf;
+    UINT Section;
+    UINT Line;
+} INFCONTEXT, *PINFCONTEXT;
+typedef struct _SP_INF_INFORMATION {
+    DWORD InfStyle;
+    DWORD InfCount;
+    BYTE VersionData[ANYSIZE_ARRAY];
+} SP_INF_INFORMATION, *PSP_INF_INFORMATION;
+typedef struct _SP_ALTPLATFORM_INFO {
+    DWORD cbSize;
+    DWORD Platform;
+    DWORD MajorVersion;
+    DWORD MinorVersion;
+    WORD  ProcessorArchitecture;
+    WORD  Reserved;
+} SP_ALTPLATFORM_INFO, *PSP_ALTPLATFORM_INFO;
+typedef struct _SP_ORIGINAL_FILE_INFO_A {
+    DWORD  cbSize;
+    CHAR   OriginalInfName[MAX_PATH];
+    CHAR   OriginalCatalogName[MAX_PATH];
+} SP_ORIGINAL_FILE_INFO_A, *PSP_ORIGINAL_FILE_INFO_A;
+typedef struct _SP_ORIGINAL_FILE_INFO_W {
+    DWORD  cbSize;
+    WCHAR  OriginalInfName[MAX_PATH];
+    WCHAR  OriginalCatalogName[MAX_PATH];
+} SP_ORIGINAL_FILE_INFO_W, *PSP_ORIGINAL_FILE_INFO_W;
+typedef struct _FILEPATHS_A {
+    PCSTR  Target;
+    PCSTR  Source;
+    UINT   Win32Error;
+    DWORD  Flags;
+} FILEPATHS_A, *PFILEPATHS_A;
+typedef struct _FILEPATHS_W {
+    PCWSTR Target;
+    PCWSTR Source;
+    UINT   Win32Error;
+    DWORD  Flags;
+} FILEPATHS_W, *PFILEPATHS_W;
+typedef struct _SOURCE_MEDIA_A {
+    PCSTR Reserved;
+    PCSTR Tagfile;
+    PCSTR Description;
+    PCSTR SourcePath;
+    PCSTR SourceFile;
+    DWORD Flags;
+} SOURCE_MEDIA_A, *PSOURCE_MEDIA_A;
+typedef struct _SOURCE_MEDIA_W {
+    PCWSTR Reserved;
+    PCWSTR Tagfile;
+    PCWSTR Description;
+    PCWSTR SourcePath;
+    PCWSTR SourceFile;
+    DWORD  Flags;
+} SOURCE_MEDIA_W, *PSOURCE_MEDIA_W;
+typedef struct _CABINET_INFO_A {
+    PCSTR CabinetPath;
+    PCSTR CabinetFile;
+    PCSTR DiskName;
+    USHORT SetId;
+    USHORT CabinetNumber;
+} CABINET_INFO_A, *PCABINET_INFO_A;
+typedef struct _CABINET_INFO_W {
+    PCWSTR CabinetPath;
+    PCWSTR CabinetFile;
+    PCWSTR DiskName;
+    USHORT SetId;
+    USHORT CabinetNumber;
+} CABINET_INFO_W, *PCABINET_INFO_W;
+typedef struct _FILE_IN_CABINET_INFO_A {
+    PCSTR NameInCabinet;
+    DWORD FileSize;
+    DWORD Win32Error;
+    WORD  DosDate;
+    WORD  DosTime;
+    WORD  DosAttribs;
+    CHAR  FullTargetName[MAX_PATH];
+} FILE_IN_CABINET_INFO_A, *PFILE_IN_CABINET_INFO_A;
+typedef struct _FILE_IN_CABINET_INFO_W {
+    PCWSTR NameInCabinet;
+    DWORD  FileSize;
+    DWORD  Win32Error;
+    WORD   DosDate;
+    WORD   DosTime;
+    WORD   DosAttribs;
+    WCHAR  FullTargetName[MAX_PATH];
+} FILE_IN_CABINET_INFO_W, *PFILE_IN_CABINET_INFO_W;
+typedef struct _SP_FILE_COPY_PARAMS_A {
+    DWORD    cbSize;
+    HSPFILEQ QueueHandle;
+    PCSTR    SourceRootPath;
+    PCSTR    SourcePath;
+    PCSTR    SourceFilename;
+    PCSTR    SourceDescription;
+    PCSTR    SourceTagfile;
+    PCSTR    TargetDirectory;
+    PCSTR    TargetFilename;
+    DWORD    CopyStyle;
+    HINF     LayoutInf;
+    PCSTR    SecurityDescriptor;
+} SP_FILE_COPY_PARAMS_A, *PSP_FILE_COPY_PARAMS_A;
+typedef struct _SP_FILE_COPY_PARAMS_W {
+    DWORD    cbSize;
+    HSPFILEQ QueueHandle;
+    PCWSTR   SourceRootPath;
+    PCWSTR   SourcePath;
+    PCWSTR   SourceFilename;
+    PCWSTR   SourceDescription;
+    PCWSTR   SourceTagfile;
+    PCWSTR   TargetDirectory;
+    PCWSTR   TargetFilename;
+    DWORD    CopyStyle;
+    HINF     LayoutInf;
+    PCWSTR   SecurityDescriptor;
+} SP_FILE_COPY_PARAMS_W, *PSP_FILE_COPY_PARAMS_W;
+typedef struct _SP_DEVINFO_DATA {
+    DWORD cbSize;
+    GUID  ClassGuid;
+    DWORD DevInst;
+    ULONG_PTR Reserved;
+} SP_DEVINFO_DATA, *PSP_DEVINFO_DATA;
+typedef struct _SP_DEVICE_INTERFACE_DATA {
+    DWORD cbSize;
+    GUID  InterfaceClassGuid;
+    DWORD Flags;
+    ULONG_PTR Reserved;
+} SP_DEVICE_INTERFACE_DATA, *PSP_DEVICE_INTERFACE_DATA;
+/* For backward compatibility */
+typedef SP_DEVICE_INTERFACE_DATA  SP_INTERFACE_DEVICE_DATA, *PSP_INTERFACE_DEVICE_DATA;
+
+typedef struct _SP_DEVICE_INTERFACE_DETAIL_DATA_A {
+    DWORD  cbSize;
+    CHAR   DevicePath[ANYSIZE_ARRAY];
+} SP_DEVICE_INTERFACE_DETAIL_DATA_A, *PSP_DEVICE_INTERFACE_DETAIL_DATA_A;
+typedef struct _SP_DEVICE_INTERFACE_DETAIL_DATA_W {
+    DWORD  cbSize;
+    WCHAR  DevicePath[ANYSIZE_ARRAY];
+} SP_DEVICE_INTERFACE_DETAIL_DATA_W, *PSP_DEVICE_INTERFACE_DETAIL_DATA_W;
+/* For backward compatibility */
+typedef SP_DEVICE_INTERFACE_DETAIL_DATA_A SP_INTERFACE_DEVICE_DETAIL_DATA_A,
+    *PSP_INTERFACE_DEVICE_DETAIL_DATA_A;
+typedef SP_DEVICE_INTERFACE_DETAIL_DATA_W SP_INTERFACE_DEVICE_DETAIL_DATA_W,
+    *PSP_INTERFACE_DEVICE_DETAIL_DATA_W;
+
+typedef struct _SP_DEVINFO_LIST_DETAIL_DATA_A {
+    DWORD  cbSize;
+    GUID   ClassGuid;
+    HANDLE RemoteMachineHandle;
+    CHAR   RemoteMachineName[SP_MAX_MACHINENAME_LENGTH];
+} SP_DEVINFO_LIST_DETAIL_DATA_A, *PSP_DEVINFO_LIST_DETAIL_DATA_A;
+typedef struct _SP_DEVINFO_LIST_DETAIL_DATA_W {
+    DWORD  cbSize;
+    GUID   ClassGuid;
+    HANDLE RemoteMachineHandle;
+    WCHAR  RemoteMachineName[SP_MAX_MACHINENAME_LENGTH];
+} SP_DEVINFO_LIST_DETAIL_DATA_W, *PSP_DEVINFO_LIST_DETAIL_DATA_W;
+
+typedef UINT (CALLBACK* PSP_FILE_CALLBACK_A)(PVOID,UINT,UINT_PTR,UINT_PTR);
+typedef UINT (CALLBACK* PSP_FILE_CALLBACK_W)(PVOID,UINT,UINT_PTR,UINT_PTR);
+typedef struct _SP_DEVINSTALL_PARAMS_A {
+    DWORD             cbSize;
+    DWORD             Flags;
+    DWORD             FlagsEx;
+    HWND              hwndParent;
+    PSP_FILE_CALLBACK_A InstallMsgHandler;
+    PVOID             InstallMsgHandlerContext;
+    HSPFILEQ          FileQueue;
+    ULONG_PTR         ClassInstallReserved;
+    DWORD             Reserved;
+    CHAR              DriverPath[MAX_PATH];
+} SP_DEVINSTALL_PARAMS_A, *PSP_DEVINSTALL_PARAMS_A;
+typedef struct _SP_DEVINSTALL_PARAMS_W {
+    DWORD             cbSize;
+    DWORD             Flags;
+    DWORD             FlagsEx;
+    HWND              hwndParent;
+    PSP_FILE_CALLBACK_W InstallMsgHandler;
+    PVOID             InstallMsgHandlerContext;
+    HSPFILEQ          FileQueue;
+    ULONG_PTR         ClassInstallReserved;
+    DWORD             Reserved;
+    WCHAR             DriverPath[MAX_PATH];
+} SP_DEVINSTALL_PARAMS_W, *PSP_DEVINSTALL_PARAMS_W;
+typedef struct _SP_CLASSINSTALL_HEADER {
+    DWORD       cbSize;
+    DI_FUNCTION InstallFunction;
+} SP_CLASSINSTALL_HEADER, *PSP_CLASSINSTALL_HEADER;
+typedef struct _SP_ENABLECLASS_PARAMS {
+    SP_CLASSINSTALL_HEADER ClassInstallHeader;
+    GUID                   ClassGuid;
+    DWORD                  EnableMessage;
+} SP_ENABLECLASS_PARAMS, *PSP_ENABLECLASS_PARAMS;
+typedef struct _SP_MOVEDEV_PARAMS {
+    SP_CLASSINSTALL_HEADER ClassInstallHeader;
+    SP_DEVINFO_DATA        SourceDeviceInfoData;
+} SP_MOVEDEV_PARAMS, *PSP_MOVEDEV_PARAMS;
+typedef struct _SP_PROPCHANGE_PARAMS {
+    SP_CLASSINSTALL_HEADER ClassInstallHeader;
+    DWORD                  StateChange;
+    DWORD                  Scope;
+    DWORD                  HwProfile;
+} SP_PROPCHANGE_PARAMS, *PSP_PROPCHANGE_PARAMS;
+typedef struct _SP_REMOVEDEVICE_PARAMS {
+    SP_CLASSINSTALL_HEADER ClassInstallHeader;
+    DWORD Scope;
+    DWORD HwProfile;
+} SP_REMOVEDEVICE_PARAMS, *PSP_REMOVEDEVICE_PARAMS;
+typedef struct _SP_UNREMOVEDEVICE_PARAMS {
+    SP_CLASSINSTALL_HEADER ClassInstallHeader;
+    DWORD Scope;
+    DWORD HwProfile;
+} SP_UNREMOVEDEVICE_PARAMS, *PSP_UNREMOVEDEVICE_PARAMS;
+typedef struct _SP_SELECTDEVICE_PARAMS_A {
+    SP_CLASSINSTALL_HEADER ClassInstallHeader;
+    CHAR                   Title[MAX_TITLE_LEN];
+    CHAR                   Instructions[MAX_INSTRUCTION_LEN];
+    CHAR                   ListLabel[MAX_LABEL_LEN];
+    CHAR                   SubTitle[MAX_SUBTITLE_LEN];
+    BYTE                   Reserved[2];
+} SP_SELECTDEVICE_PARAMS_A, *PSP_SELECTDEVICE_PARAMS_A;
+typedef struct _SP_SELECTDEVICE_PARAMS_W {
+    SP_CLASSINSTALL_HEADER ClassInstallHeader;
+    WCHAR                  Title[MAX_TITLE_LEN];
+    WCHAR                  Instructions[MAX_INSTRUCTION_LEN];
+    WCHAR                  ListLabel[MAX_LABEL_LEN];
+    WCHAR                  SubTitle[MAX_SUBTITLE_LEN];
+} SP_SELECTDEVICE_PARAMS_W, *PSP_SELECTDEVICE_PARAMS_W;
+
+typedef BOOL (CALLBACK* PDETECT_PROGRESS_NOTIFY)(PVOID,DWORD);
+typedef struct _SP_DETECTDEVICE_PARAMS {
+    SP_CLASSINSTALL_HEADER  ClassInstallHeader;
+    PDETECT_PROGRESS_NOTIFY DetectProgressNotify;
+    PVOID                   ProgressNotifyParam;
+} SP_DETECTDEVICE_PARAMS, *PSP_DETECTDEVICE_PARAMS;
+typedef struct _SP_INSTALLWIZARD_DATA {
+    SP_CLASSINSTALL_HEADER ClassInstallHeader;
+    DWORD                  Flags;
+    HPROPSHEETPAGE         DynamicPages[MAX_INSTALLWIZARD_DYNAPAGES];
+    DWORD                  NumDynamicPages;
+    DWORD                  DynamicPageFlags;
+    DWORD                  PrivateFlags;
+    LPARAM                 PrivateData;
+    HWND                   hwndWizardDlg;
+} SP_INSTALLWIZARD_DATA, *PSP_INSTALLWIZARD_DATA;
+typedef struct _SP_NEWDEVICEWIZARD_DATA {
+    SP_CLASSINSTALL_HEADER ClassInstallHeader;
+    DWORD                  Flags;
+    HPROPSHEETPAGE         DynamicPages[MAX_INSTALLWIZARD_DYNAPAGES];
+    DWORD                  NumDynamicPages;
+    HWND                   hwndWizardDlg;
+} SP_NEWDEVICEWIZARD_DATA, *PSP_NEWDEVICEWIZARD_DATA;
+typedef SP_NEWDEVICEWIZARD_DATA SP_ADDPROPERTYPAGE_DATA,
+    *PSP_ADDPROPERTYPAGE_DATA;
+typedef struct _SP_TROUBLESHOOTER_PARAMS_A {
+    SP_CLASSINSTALL_HEADER ClassInstallHeader;
+    CHAR                   ChmFile[MAX_PATH];
+    CHAR                   HtmlTroubleShooter[MAX_PATH];
+} SP_TROUBLESHOOTER_PARAMS_A, *PSP_TROUBLESHOOTER_PARAMS_A;
+typedef struct _SP_TROUBLESHOOTER_PARAMS_W {
+    SP_CLASSINSTALL_HEADER ClassInstallHeader;
+    WCHAR                  ChmFile[MAX_PATH];
+    WCHAR                  HtmlTroubleShooter[MAX_PATH];
+} SP_TROUBLESHOOTER_PARAMS_W, *PSP_TROUBLESHOOTER_PARAMS_W;
+typedef struct _SP_POWERMESSAGEWAKE_PARAMS_A {
+    SP_CLASSINSTALL_HEADER ClassInstallHeader;
+    CHAR                   PowerMessageWake[LINE_LEN*2];
+} SP_POWERMESSAGEWAKE_PARAMS_A, *PSP_POWERMESSAGEWAKE_PARAMS_A;
+typedef struct _SP_POWERMESSAGEWAKE_PARAMS_W {
+    SP_CLASSINSTALL_HEADER ClassInstallHeader;
+    WCHAR                  PowerMessageWake[LINE_LEN*2];
+} SP_POWERMESSAGEWAKE_PARAMS_W, *PSP_POWERMESSAGEWAKE_PARAMS_W;
+typedef struct _SP_DRVINFO_DATA_V2_A {
+    DWORD     cbSize;
+    DWORD     DriverType;
+    ULONG_PTR Reserved;
+    CHAR      Description[LINE_LEN];
+    CHAR      MfgName[LINE_LEN];
+    CHAR      ProviderName[LINE_LEN];
+    FILETIME  DriverDate;
+    DWORDLONG DriverVersion;
+} SP_DRVINFO_DATA_V2_A, *PSP_DRVINFO_DATA_V2_A;
+typedef struct _SP_DRVINFO_DATA_V2_W {
+    DWORD     cbSize;
+    DWORD     DriverType;
+    ULONG_PTR Reserved;
+    WCHAR     Description[LINE_LEN];
+    WCHAR     MfgName[LINE_LEN];
+    WCHAR     ProviderName[LINE_LEN];
+    FILETIME  DriverDate;
+    DWORDLONG DriverVersion;
+} SP_DRVINFO_DATA_V2_W, *PSP_DRVINFO_DATA_V2_W;
+typedef struct _SP_DRVINFO_DATA_V1_A {
+    DWORD     cbSize;
+    DWORD     DriverType;
+    ULONG_PTR Reserved;
+    CHAR      Description[LINE_LEN];
+    CHAR      MfgName[LINE_LEN];
+    CHAR      ProviderName[LINE_LEN];
+} SP_DRVINFO_DATA_V1_A, *PSP_DRVINFO_DATA_V1_A;
+typedef struct _SP_DRVINFO_DATA_V1_W {
+    DWORD     cbSize;
+    DWORD     DriverType;
+    ULONG_PTR Reserved;
+    WCHAR     Description[LINE_LEN];
+    WCHAR     MfgName[LINE_LEN];
+    WCHAR     ProviderName[LINE_LEN];
+} SP_DRVINFO_DATA_V1_W, *PSP_DRVINFO_DATA_V1_W;
+
+#ifdef UNICODE
+typedef SP_DRVINFO_DATA_V1_W SP_DRVINFO_DATA_V1, *PSP_DRVINFO_DATA_V1;
+typedef SP_DRVINFO_DATA_V2_W SP_DRVINFO_DATA_V2, *PSP_DRVINFO_DATA_V2;
+#else
+typedef SP_DRVINFO_DATA_V1_A SP_DRVINFO_DATA_V1, *PSP_DRVINFO_DATA_V1;
+typedef SP_DRVINFO_DATA_V2_A SP_DRVINFO_DATA_V2, *PSP_DRVINFO_DATA_V2;
+#endif
+
+#if USE_SP_DRVINFO_DATA_V1
+typedef SP_DRVINFO_DATA_V1_A SP_DRVINFO_DATA_A, *PSP_DRVINFO_DATA_A;
+typedef SP_DRVINFO_DATA_V1_W SP_DRVINFO_DATA_W, *PSP_DRVINFO_DATA_W;
+typedef SP_DRVINFO_DATA_V1 SP_DRVINFO_DATA, *PSP_DRVINFO_DATA;
+#else
+typedef SP_DRVINFO_DATA_V2_A SP_DRVINFO_DATA_A, *PSP_DRVINFO_DATA_A;
+typedef SP_DRVINFO_DATA_V2_W SP_DRVINFO_DATA_W, *PSP_DRVINFO_DATA_W;
+typedef SP_DRVINFO_DATA_V2 SP_DRVINFO_DATA, *PSP_DRVINFO_DATA;
+#endif
+
+typedef DWORD (CALLBACK* PSP_DETSIG_CMPPROC)(HDEVINFO,PSP_DEVINFO_DATA,PSP_DEVINFO_DATA,PVOID);
+
+typedef struct _SP_DRVINFO_DETAIL_DATA_A {
+    DWORD    cbSize;
+    FILETIME InfDate;
+    DWORD    CompatIDsOffset;
+    DWORD    CompatIDsLength;
+    ULONG_PTR Reserved;
+    CHAR     SectionName[LINE_LEN];
+    CHAR     InfFileName[MAX_PATH];
+    CHAR     DrvDescription[LINE_LEN];
+    CHAR     HardwareID[ANYSIZE_ARRAY];
+} SP_DRVINFO_DETAIL_DATA_A, *PSP_DRVINFO_DETAIL_DATA_A;
+typedef struct _SP_DRVINFO_DETAIL_DATA_W {
+    DWORD    cbSize;
+    FILETIME InfDate;
+    DWORD    CompatIDsOffset;
+    DWORD    CompatIDsLength;
+    ULONG_PTR Reserved;
+    WCHAR    SectionName[LINE_LEN];
+    WCHAR    InfFileName[MAX_PATH];
+    WCHAR    DrvDescription[LINE_LEN];
+    WCHAR    HardwareID[ANYSIZE_ARRAY];
+} SP_DRVINFO_DETAIL_DATA_W, *PSP_DRVINFO_DETAIL_DATA_W;
+typedef struct _SP_DRVINSTALL_PARAMS {
+    DWORD cbSize;
+    DWORD Rank;
+    DWORD Flags;
+    DWORD_PTR PrivateData;
+    DWORD Reserved;
+} SP_DRVINSTALL_PARAMS, *PSP_DRVINSTALL_PARAMS;
+
+
+typedef struct _COINSTALLER_CONTEXT_DATA {
+    BOOL  PostProcessing;
+    DWORD InstallResult;
+    PVOID PrivateData;
+} COINSTALLER_CONTEXT_DATA, *PCOINSTALLER_CONTEXT_DATA;
+typedef struct _SP_CLASSIMAGELIST_DATA {
+    DWORD      cbSize;
+    HIMAGELIST ImageList;
+    ULONG_PTR  Reserved;
+} SP_CLASSIMAGELIST_DATA, *PSP_CLASSIMAGELIST_DATA;
+typedef struct _SP_PROPSHEETPAGE_REQUEST {
+    DWORD            cbSize;
+    DWORD            PageRequested;
+    HDEVINFO         DeviceInfoSet;
+    PSP_DEVINFO_DATA DeviceInfoData;
+} SP_PROPSHEETPAGE_REQUEST, *PSP_PROPSHEETPAGE_REQUEST;
+typedef struct _SP_BACKUP_QUEUE_PARAMS_A {
+    DWORD    cbSize;
+    CHAR     FullInfPath[MAX_PATH];
+    INT      FilenameOffset;
+} SP_BACKUP_QUEUE_PARAMS_A, *PSP_BACKUP_QUEUE_PARAMS_A;
+typedef struct _SP_BACKUP_QUEUE_PARAMS_W {
+    DWORD    cbSize;
+    WCHAR    FullInfPath[MAX_PATH];
+    INT      FilenameOffset;
+} SP_BACKUP_QUEUE_PARAMS_W, *PSP_BACKUP_QUEUE_PARAMS_W;
+
+
+#ifdef UNICODE
+typedef SP_ORIGINAL_FILE_INFO_W SP_ORIGINAL_FILE_INFO, *PSP_ORIGINAL_FILE_INFO;
+typedef FILEPATHS_W FILEPATHS, *PFILEPATHS;
+typedef SOURCE_MEDIA_W SOURCE_MEDIA, *PSOURCE_MEDIA;
+typedef CABINET_INFO_W CABINET_INFO, *PCABINET_INFO;
+typedef FILE_IN_CABINET_INFO_W FILE_IN_CABINET_INFO, *PFILE_IN_CABINET_INFO;
+typedef SP_FILE_COPY_PARAMS_W SP_FILE_COPY_PARAMS, PSP_FILE_COPY_PARAMS;
+typedef SP_DEVICE_INTERFACE_DETAIL_DATA_W SP_DEVICE_INTERFACE_DETAIL_DATA,
+    *PSP_DEVICE_INTERFACE_DETAIL_DATA;
+typedef SP_INTERFACE_DEVICE_DETAIL_DATA_W SP_INTERFACE_DEVICE_DETAIL_DATA,
+    *PSP_INTERFACE_DEVICE_DETAIL_DATA; /* deprecated */
+typedef SP_DEVINFO_LIST_DETAIL_DATA_W SP_DEVINFO_LIST_DETAIL_DATA,
+    *PSP_DEVINFO_LIST_DETAIL_DATA;
+typedef SP_DEVINSTALL_PARAMS_W SP_DEVINSTALL_PARAMS, *PSP_DEVINSTALL_PARAMS;
+typedef SP_SELECTDEVICE_PARAMS_W SP_SELECTDEVICE_PARAMS, *PSP_SELECTDEVICE_PARAMS;
+typedef SP_TROUBLESHOOTER_PARAMS_W SP_TROUBLESHOOTER_PARAMS,
+    *PSP_TROUBLESHOOTER_PARAMS;
+typedef SP_POWERMESSAGEWAKE_PARAMS_W SP_POWERMESSAGEWAKE_PARAMS,
+    *PSP_POWERMESSAGEWAKE_PARAMS;
+typedef SP_DRVINFO_DETAIL_DATA_W SP_DRVINFO_DETAIL_DATA,
+     *PSP_DRVINFO_DETAIL_DATA;
+typedef SP_BACKUP_QUEUE_PARAMS_W SP_BACKUP_QUEUE_PARAMS,
+    *PSP_BACKUP_QUEUE_PARAMS;
+#else
+typedef SP_ORIGINAL_FILE_INFO_A SP_ORIGINAL_FILE_INFO, *PSP_ORIGINAL_FILE_INFO;
+typedef FILEPATHS_A FILEPATHS, *PFILEPATHS;
+typedef SOURCE_MEDIA_A SOURCE_MEDIA, *PSOURCE_MEDIA;
+typedef CABINET_INFO_A CABINET_INFO, *PCABINET_INFO;
+typedef FILE_IN_CABINET_INFO_A FILE_IN_CABINET_INFO, *PFILE_IN_CABINET_INFO;
+typedef SP_FILE_COPY_PARAMS_A SP_FILE_COPY_PARAMS, *PSP_FILE_COPY_PARAMS;
+typedef SP_DEVICE_INTERFACE_DETAIL_DATA_A SP_DEVICE_INTERFACE_DETAIL_DATA,
+    *PSP_DEVICE_INTERFACE_DETAIL_DATA;
+typedef SP_INTERFACE_DEVICE_DETAIL_DATA_A SP_INTERFACE_DEVICE_DETAIL_DATA,
+    *PSP_INTERFACE_DEVICE_DETAIL_DATA; /* deprecated */
+typedef SP_DEVINFO_LIST_DETAIL_DATA_A SP_DEVINFO_LIST_DETAIL_DATA,
+    *PSP_DEVINFO_LIST_DETAIL_DATA;
+typedef SP_DEVINSTALL_PARAMS_A SP_DEVINSTALL_PARAMS, *PSP_DEVINSTALL_PARAMS;
+typedef SP_SELECTDEVICE_PARAMS_A SP_SELECTDEVICE_PARAMS,
+    *PSP_SELECTDEVICE_PARAMS;
+typedef SP_TROUBLESHOOTER_PARAMS_A SP_TROUBLESHOOTER_PARAMS,
+    *PSP_TROUBLESHOOTER_PARAMS;
+typedef SP_POWERMESSAGEWAKE_PARAMS_A SP_POWERMESSAGEWAKE_PARAMS,
+    *PSP_POWERMESSAGEWAKE_PARAMS;
+typedef SP_DRVINFO_DETAIL_DATA_A SP_DRVINFO_DETAIL_DATA,
+    *PSP_DRVINFO_DETAIL_DATA;
+typedef SP_BACKUP_QUEUE_PARAMS_A SP_BACKUP_QUEUE_PARAMS,
+    *PSP_BACKUP_QUEUE_PARAMS;
+#endif /* UNICODE */
+
+WINSETUPAPI BOOL WINAPI SetupAddInstallSectionToDiskSpaceListA(HDSKSPC,HINF,HINF,PCSTR,PVOID,UINT);
+WINSETUPAPI BOOL WINAPI SetupAddInstallSectionToDiskSpaceListW(HDSKSPC,HINF,HINF,PCWSTR,PVOID,UINT);
+WINSETUPAPI BOOL WINAPI SetupAddSectionToDiskSpaceListA(HDSKSPC,HINF,HINF,PCSTR,UINT,PVOID,UINT);
+WINSETUPAPI BOOL WINAPI SetupAddSectionToDiskSpaceListW(HDSKSPC,HINF,HINF,PCWSTR,UINT,PVOID,UINT);
+WINSETUPAPI BOOL WINAPI SetupAddToDiskSpaceListA(HDSKSPC,PCSTR,LONGLONG,UINT,PVOID,UINT);
+WINSETUPAPI BOOL WINAPI SetupAddToDiskSpaceListW(HDSKSPC,PCWSTR,LONGLONG,UINT,PVOID,UINT);
+WINSETUPAPI BOOL WINAPI SetupAddToSourceListA(DWORD,PCSTR);
+WINSETUPAPI BOOL WINAPI SetupAddToSourceListW(DWORD,PCWSTR);
+WINSETUPAPI BOOL WINAPI SetupAdjustDiskSpaceListA(HDSKSPC,LPCSTR,LONGLONG,PVOID,UINT);
+WINSETUPAPI BOOL WINAPI SetupAdjustDiskSpaceListW(HDSKSPC,LPCWSTR,LONGLONG,PVOID,UINT);
+WINSETUPAPI UINT WINAPI SetupBackupErrorA(HWND,PCSTR,PCSTR,PCSTR,UINT,DWORD);
+WINSETUPAPI UINT WINAPI SetupBackupErrorW(HWND,PCWSTR,PCWSTR,PCWSTR,UINT,DWORD);
+WINSETUPAPI BOOL WINAPI SetupCancelTemporarySourceList(VOID);
+WINSETUPAPI BOOL WINAPI SetupCloseFileQueue(HSPFILEQ);
+WINSETUPAPI VOID WINAPI SetupCloseInfFile(HINF);
+WINSETUPAPI VOID WINAPI SetupCloseLog(VOID);
+WINSETUPAPI BOOL WINAPI SetupCommitFileQueueA(HWND,HSPFILEQ,PSP_FILE_CALLBACK_A,PVOID);
+WINSETUPAPI BOOL WINAPI SetupCommitFileQueueW(HWND,HSPFILEQ,PSP_FILE_CALLBACK_W,PVOID);
+#if (_SETUPAPI_VER >= 0x502)
+WINSETUPAPI BOOL WINAPI SetupConfigureWmiFromInfSectionA(HINF,PCSTR,DWORD);
+WINSETUPAPI BOOL WINAPI SetupConfigureWmiFromInfSectionW(HINF,PCWSTR,DWORD);
+#endif
+WINSETUPAPI UINT WINAPI SetupCopyErrorA(HWND,PCSTR,PCSTR,PCSTR,PCSTR,PCSTR,UINT,DWORD,PSTR,DWORD,PDWORD);
+WINSETUPAPI UINT WINAPI SetupCopyErrorW(HWND,PCWSTR,PCWSTR,PCWSTR,PCWSTR,PCWSTR,UINT,DWORD,PWSTR,DWORD,PDWORD);
+WINSETUPAPI BOOL WINAPI SetupCopyOEMInfA(PCSTR,PCSTR,DWORD,DWORD,PSTR,DWORD,PDWORD,PSTR*);
+WINSETUPAPI BOOL WINAPI SetupCopyOEMInfW(PCWSTR,PCWSTR,DWORD,DWORD,PWSTR,DWORD,PDWORD,PWSTR*);
+WINSETUPAPI HDSKSPC WINAPI SetupCreateDiskSpaceListA(PVOID,DWORD,UINT);
+WINSETUPAPI HDSKSPC WINAPI SetupCreateDiskSpaceListW(PVOID,DWORD,UINT);
+WINSETUPAPI DWORD WINAPI SetupDecompressOrCopyFileA(PCSTR,PCSTR,PUINT);
+WINSETUPAPI DWORD WINAPI SetupDecompressOrCopyFileW(PCWSTR,PCWSTR,PUINT);
+WINSETUPAPI UINT WINAPI SetupDefaultQueueCallbackA(PVOID,UINT,UINT_PTR,UINT_PTR);
+WINSETUPAPI UINT WINAPI SetupDefaultQueueCallbackW(PVOID,UINT,UINT_PTR,UINT_PTR);
+WINSETUPAPI UINT WINAPI SetupDeleteErrorA(HWND,PCSTR,PCSTR,UINT,DWORD);
+WINSETUPAPI UINT WINAPI SetupDeleteErrorW(HWND,PCWSTR,PCWSTR,UINT,DWORD);
+WINSETUPAPI BOOL WINAPI SetupDestroyDiskSpaceList(HDSKSPC);
+WINSETUPAPI BOOL WINAPI SetupDiAskForOEMDisk(HDEVINFO,PSP_DEVINFO_DATA);
+WINSETUPAPI BOOL WINAPI SetupDiBuildClassInfoList(DWORD,LPGUID,DWORD,PDWORD);
+WINSETUPAPI BOOL WINAPI SetupDiBuildClassInfoListExA(DWORD,LPGUID,DWORD,PDWORD,PCSTR,PVOID);
+WINSETUPAPI BOOL WINAPI SetupDiBuildClassInfoListExW(DWORD,LPGUID,DWORD,PDWORD,PCWSTR,PVOID);
+WINSETUPAPI BOOL WINAPI SetupDiBuildDriverInfoList(HDEVINFO,PSP_DEVINFO_DATA,DWORD);
+WINSETUPAPI BOOL WINAPI SetupDiCallClassInstaller(DI_FUNCTION,HDEVINFO,PSP_DEVINFO_DATA);
+WINSETUPAPI BOOL WINAPI SetupDiCancelDriverInfoSearch(HDEVINFO);
+WINSETUPAPI BOOL WINAPI SetupDiChangeState(HDEVINFO,PSP_DEVINFO_DATA);
+WINSETUPAPI BOOL WINAPI SetupDiClassGuidsFromNameA(PCSTR,LPGUID,DWORD,PDWORD);
+WINSETUPAPI BOOL WINAPI SetupDiClassGuidsFromNameW(PCWSTR,LPGUID,DWORD,PDWORD);
+WINSETUPAPI BOOL WINAPI SetupDiClassGuidsFromNameExA(PCSTR,LPGUID,DWORD,PDWORD,PCSTR,PVOID);
+WINSETUPAPI BOOL WINAPI SetupDiClassGuidsFromNameExW(PCWSTR,LPGUID,DWORD,PDWORD,PCWSTR,PVOID);
+WINSETUPAPI BOOL WINAPI SetupDiClassNameFromGuidA(CONST GUID*,PSTR,DWORD,PDWORD);
+WINSETUPAPI BOOL WINAPI SetupDiClassNameFromGuidW(CONST GUID*,PWSTR,DWORD,PDWORD);
+WINSETUPAPI BOOL WINAPI SetupDiClassNameFromGuidExA(CONST GUID*,PSTR,DWORD,PDWORD,PCSTR,PVOID);
+WINSETUPAPI BOOL WINAPI SetupDiClassNameFromGuidExW(CONST GUID*,PWSTR,DWORD,PDWORD,PCWSTR,PVOID);
+WINSETUPAPI BOOL WINAPI SetupDiCreateDeviceInfoA(HDEVINFO,PCSTR,CONST GUID*,PCSTR,HWND,DWORD,PSP_DEVINFO_DATA);
+WINSETUPAPI BOOL WINAPI SetupDiCreateDeviceInfoW(HDEVINFO,PCWSTR,CONST GUID*,PCWSTR,HWND,DWORD,PSP_DEVINFO_DATA);
+WINSETUPAPI HDEVINFO WINAPI SetupDiCreateDeviceInfoList(CONST GUID*,HWND);
+WINSETUPAPI HDEVINFO WINAPI SetupDiCreateDeviceInfoListExA(CONST GUID*,HWND,PCSTR,PVOID);
+WINSETUPAPI HDEVINFO WINAPI SetupDiCreateDeviceInfoListExW(CONST GUID*,HWND,PCWSTR,PVOID);
+WINSETUPAPI BOOL WINAPI SetupDiCreateDeviceInterfaceA(HDEVINFO,PSP_DEVINFO_DATA,CONST GUID*,PCSTR,DWORD,PSP_DEVICE_INTERFACE_DATA);
+WINSETUPAPI BOOL WINAPI SetupDiCreateDeviceInterfaceW(HDEVINFO,PSP_DEVINFO_DATA,CONST GUID*,PCWSTR,DWORD,PSP_DEVICE_INTERFACE_DATA);
+WINSETUPAPI HKEY WINAPI SetupDiCreateDeviceInterfaceRegKeyA(HDEVINFO,PSP_DEVICE_INTERFACE_DATA,DWORD,REGSAM,HINF,PCSTR);
+WINSETUPAPI HKEY WINAPI SetupDiCreateDeviceInterfaceRegKeyW(HDEVINFO,PSP_DEVICE_INTERFACE_DATA,DWORD,REGSAM,HINF,PCWSTR);
+WINSETUPAPI HKEY WINAPI SetupDiCreateDevRegKeyA(HDEVINFO,PSP_DEVINFO_DATA,DWORD,DWORD,DWORD,HINF,PCSTR);
+WINSETUPAPI HKEY WINAPI SetupDiCreateDevRegKeyW(HDEVINFO,PSP_DEVINFO_DATA,DWORD,DWORD,DWORD,HINF,PCWSTR);
+WINSETUPAPI BOOL WINAPI SetupDiDeleteDeviceInfo(HDEVINFO,PSP_DEVINFO_DATA);
+WINSETUPAPI BOOL WINAPI SetupDiDeleteDeviceInterfaceData(HDEVINFO,PSP_DEVICE_INTERFACE_DATA);
+WINSETUPAPI BOOL WINAPI SetupDiDeleteDeviceInterfaceRegKey(HDEVINFO,PSP_DEVICE_INTERFACE_DATA,DWORD);
+WINSETUPAPI BOOL WINAPI SetupDiDeleteDevRegKey(HDEVINFO,PSP_DEVINFO_DATA,DWORD,DWORD,DWORD);
+WINSETUPAPI BOOL WINAPI SetupDiDestroyClassImageList(PSP_CLASSIMAGELIST_DATA);
+WINSETUPAPI BOOL WINAPI SetupDiDestroyDeviceInfoList(HDEVINFO);
+WINSETUPAPI BOOL WINAPI SetupDiDestroyDriverInfoList(HDEVINFO,PSP_DEVINFO_DATA,DWORD);
+WINSETUPAPI INT WINAPI SetupDiDrawMiniIcon(HDC,RECT,INT,DWORD);
+WINSETUPAPI BOOL WINAPI SetupDiEnumDeviceInfo(HDEVINFO,DWORD,PSP_DEVINFO_DATA);
+WINSETUPAPI BOOL WINAPI SetupDiEnumDeviceInterfaces(HDEVINFO,PSP_DEVINFO_DATA,CONST GUID*,DWORD,PSP_DEVICE_INTERFACE_DATA);
+WINSETUPAPI BOOL WINAPI SetupDiEnumDriverInfoA(HDEVINFO,PSP_DEVINFO_DATA,DWORD,DWORD,PSP_DRVINFO_DATA_A);
+WINSETUPAPI BOOL WINAPI SetupDiEnumDriverInfoW(HDEVINFO,PSP_DEVINFO_DATA,DWORD,DWORD,PSP_DRVINFO_DATA_W);
+WINSETUPAPI BOOL WINAPI SetupDiGetActualSectionToInstallA(HINF,PCSTR,PSTR,DWORD,PDWORD,PSTR*);
+WINSETUPAPI BOOL WINAPI SetupDiGetActualSectionToInstallW(HINF,PCWSTR,PWSTR,DWORD,PDWORD,PWSTR*);
+WINSETUPAPI BOOL WINAPI SetupDiGetClassBitmapIndex(CONST GUID*,PINT);
+WINSETUPAPI BOOL WINAPI SetupDiGetClassDescriptionA(CONST GUID*,PSTR,DWORD,PDWORD);
+WINSETUPAPI BOOL WINAPI SetupDiGetClassDescriptionW(CONST GUID*,PWSTR,DWORD,PDWORD);
+WINSETUPAPI BOOL WINAPI SetupDiGetClassDescriptionExA(CONST GUID*,PSTR,DWORD,PDWORD,PCSTR,PVOID);
+WINSETUPAPI BOOL WINAPI SetupDiGetClassDescriptionExW(CONST GUID*,PWSTR,DWORD,PDWORD,PCWSTR,PVOID);
+WINSETUPAPI BOOL WINAPI SetupDiGetClassDevPropertySheetsA(HDEVINFO,PSP_DEVINFO_DATA,LPPROPSHEETHEADERA,DWORD,PDWORD,DWORD);
+WINSETUPAPI BOOL WINAPI SetupDiGetClassDevPropertySheetsW(HDEVINFO,PSP_DEVINFO_DATA,LPPROPSHEETHEADERW,DWORD,PDWORD,DWORD);
+WINSETUPAPI HDEVINFO WINAPI SetupDiGetClassDevsA(CONST GUID*,PCSTR,HWND,DWORD);
+WINSETUPAPI HDEVINFO WINAPI SetupDiGetClassDevsW(CONST GUID*,PCWSTR,HWND,DWORD);
+WINSETUPAPI HDEVINFO WINAPI SetupDiGetClassDevsExA(CONST GUID*,PCSTR,HWND,DWORD,HDEVINFO,PCSTR,PVOID);
+WINSETUPAPI HDEVINFO WINAPI SetupDiGetClassDevsExW(CONST GUID*,PCWSTR,HWND,DWORD,HDEVINFO,PCWSTR,PVOID);
+WINSETUPAPI BOOL WINAPI SetupDiGetClassImageIndex(PSP_CLASSIMAGELIST_DATA,CONST GUID*,PINT);
+WINSETUPAPI BOOL WINAPI SetupDiGetClassImageList(PSP_CLASSIMAGELIST_DATA);
+WINSETUPAPI BOOL WINAPI SetupDiGetClassImageListExA(PSP_CLASSIMAGELIST_DATA,PCSTR,PVOID);
+WINSETUPAPI BOOL WINAPI SetupDiGetClassImageListExW(PSP_CLASSIMAGELIST_DATA,PCWSTR,PVOID);
+WINSETUPAPI BOOL WINAPI SetupDiGetClassInstallParamsA(HDEVINFO,PSP_DEVINFO_DATA,PSP_CLASSINSTALL_HEADER,DWORD,PDWORD);
+WINSETUPAPI BOOL WINAPI SetupDiGetClassInstallParamsW(HDEVINFO,PSP_DEVINFO_DATA,PSP_CLASSINSTALL_HEADER,DWORD,PDWORD);
+WINSETUPAPI BOOL WINAPI SetupDiGetClassRegistryPropertyA(LPGUID,DWORD,PDWORD,PBYTE,DWORD,PDWORD,PCSTR,PVOID);
+WINSETUPAPI BOOL WINAPI SetupDiGetClassRegistryPropertyW(LPGUID,DWORD,PDWORD,PBYTE,DWORD,PDWORD,PCWSTR,PVOID);
+WINSETUPAPI BOOL WINAPI SetupDiGetDeviceInfoListClass(HDEVINFO,LPGUID);
+WINSETUPAPI BOOL WINAPI SetupDiGetDeviceInfoListDetailA(HDEVINFO,PSP_DEVINFO_LIST_DETAIL_DATA_A);
+WINSETUPAPI BOOL WINAPI SetupDiGetDeviceInfoListDetailW(HDEVINFO,PSP_DEVINFO_LIST_DETAIL_DATA_W);
+WINSETUPAPI BOOL WINAPI SetupDiGetDeviceInstallParamsA(HDEVINFO,PSP_DEVINFO_DATA,PSP_DEVINSTALL_PARAMS_A);
+WINSETUPAPI BOOL WINAPI SetupDiGetDeviceInstallParamsW(HDEVINFO,PSP_DEVINFO_DATA,PSP_DEVINSTALL_PARAMS_W);
+WINSETUPAPI BOOL WINAPI SetupDiGetDeviceInstanceIdA(HDEVINFO,PSP_DEVINFO_DATA,PSTR,DWORD,PDWORD);
+WINSETUPAPI BOOL WINAPI SetupDiGetDeviceInstanceIdW(HDEVINFO,PSP_DEVINFO_DATA,PWSTR,DWORD,PDWORD);
+WINSETUPAPI BOOL WINAPI SetupDiGetDeviceInterfaceAlias(HDEVINFO,PSP_DEVICE_INTERFACE_DATA,CONST GUID*,PSP_DEVICE_INTERFACE_DATA);
+WINSETUPAPI BOOL WINAPI SetupDiGetDeviceInterfaceDetailA(HDEVINFO,PSP_DEVICE_INTERFACE_DATA,PSP_DEVICE_INTERFACE_DETAIL_DATA_A,DWORD,PDWORD,PSP_DEVINFO_DATA);
+WINSETUPAPI BOOL WINAPI SetupDiGetDeviceInterfaceDetailW(HDEVINFO,PSP_DEVICE_INTERFACE_DATA,PSP_DEVICE_INTERFACE_DETAIL_DATA_W,DWORD,PDWORD,PSP_DEVINFO_DATA);
+WINSETUPAPI BOOL WINAPI SetupDiGetDeviceRegistryPropertyA(HDEVINFO,PSP_DEVINFO_DATA,DWORD,PDWORD,PBYTE,DWORD,PDWORD);
+WINSETUPAPI BOOL WINAPI SetupDiGetDeviceRegistryPropertyW(HDEVINFO,PSP_DEVINFO_DATA,DWORD,PDWORD,PBYTE,DWORD,PDWORD);
+WINSETUPAPI BOOL WINAPI SetupDiGetDriverInfoDetailA(HDEVINFO,PSP_DEVINFO_DATA,PSP_DRVINFO_DATA_A,PSP_DRVINFO_DETAIL_DATA_A,DWORD,PDWORD);
+WINSETUPAPI BOOL WINAPI SetupDiGetDriverInfoDetailW(HDEVINFO,PSP_DEVINFO_DATA,PSP_DRVINFO_DATA_W,PSP_DRVINFO_DETAIL_DATA_W,DWORD,PDWORD);
+WINSETUPAPI BOOL WINAPI SetupDiGetDriverInstallParamsA(HDEVINFO,PSP_DEVINFO_DATA,PSP_DRVINFO_DATA_A,PSP_DRVINSTALL_PARAMS);
+WINSETUPAPI BOOL WINAPI SetupDiGetDriverInstallParamsW(HDEVINFO,PSP_DEVINFO_DATA,PSP_DRVINFO_DATA_W,PSP_DRVINSTALL_PARAMS);
+WINSETUPAPI BOOL WINAPI SetupDiGetHwProfileFriendlyNameA(DWORD,PSTR,DWORD,PDWORD);
+WINSETUPAPI BOOL WINAPI SetupDiGetHwProfileFriendlyNameExA(DWORD,PSTR,DWORD,PDWORD,PCSTR,PVOID);
+WINSETUPAPI BOOL WINAPI SetupDiGetHwProfileFriendlyNameExW(DWORD,PWSTR,DWORD,PDWORD,PCWSTR,PVOID);
+WINSETUPAPI BOOL WINAPI SetupDiGetHwProfileFriendlyNameW(DWORD,PWSTR,DWORD,PDWORD);
+WINSETUPAPI BOOL WINAPI SetupDiGetHwProfileList(PDWORD,DWORD,PDWORD,PDWORD);
+WINSETUPAPI BOOL WINAPI SetupDiGetHwProfileListExA(PDWORD,DWORD,PDWORD,PDWORD,PCSTR,PVOID);
+WINSETUPAPI BOOL WINAPI SetupDiGetHwProfileListExW(PDWORD,DWORD,PDWORD,PDWORD,PCWSTR,PVOID);
+WINSETUPAPI BOOL WINAPI SetupDiGetINFClassA(PCSTR,LPGUID,PSTR,DWORD,PDWORD);
+WINSETUPAPI BOOL WINAPI SetupDiGetINFClassW(PCWSTR,LPGUID,PWSTR,DWORD,PDWORD);
+WINSETUPAPI BOOL WINAPI SetupDiGetSelectedDevice(HDEVINFO,PSP_DEVINFO_DATA);
+WINSETUPAPI BOOL WINAPI SetupDiGetSelectedDriverA(HDEVINFO,PSP_DEVINFO_DATA,PSP_DRVINFO_DATA_A);
+WINSETUPAPI BOOL WINAPI SetupDiGetSelectedDriverW(HDEVINFO,PSP_DEVINFO_DATA,PSP_DRVINFO_DATA_W);
+WINSETUPAPI HPROPSHEETPAGE WINAPI SetupDiGetWizardPage(HDEVINFO,PSP_DEVINFO_DATA,PSP_INSTALLWIZARD_DATA,DWORD,DWORD);
+WINSETUPAPI BOOL WINAPI SetupDiInstallClassA(HWND,PCSTR,DWORD,HSPFILEQ);
+WINSETUPAPI BOOL WINAPI SetupDiInstallClassW(HWND,PCWSTR,DWORD,HSPFILEQ);
+WINSETUPAPI BOOL WINAPI SetupDiInstallClassExA(HWND,PCSTR,DWORD,HSPFILEQ,CONST GUID*,PVOID,PVOID);
+WINSETUPAPI BOOL WINAPI SetupDiInstallClassExW(HWND,PCWSTR,DWORD,HSPFILEQ,CONST GUID*,PVOID,PVOID);
+WINSETUPAPI BOOL WINAPI SetupDiInstallDevice(HDEVINFO,PSP_DEVINFO_DATA);
+WINSETUPAPI BOOL WINAPI SetupDiInstallDeviceInterfaces(HDEVINFO,PSP_DEVINFO_DATA);
+WINSETUPAPI BOOL WINAPI SetupDiInstallDriverFiles(HDEVINFO,PSP_DEVINFO_DATA);
+WINSETUPAPI BOOL WINAPI SetupDiLoadClassIcon(CONST GUID*,HICON*,PINT);
+WINSETUPAPI BOOL WINAPI SetupDiMoveDuplicateDevice(HDEVINFO,PSP_DEVINFO_DATA);
+WINSETUPAPI HKEY WINAPI SetupDiOpenClassRegKey(CONST GUID*,REGSAM);
+WINSETUPAPI HKEY WINAPI SetupDiOpenClassRegKeyExA(CONST GUID*,REGSAM,DWORD,PCSTR,PVOID);
+WINSETUPAPI HKEY WINAPI SetupDiOpenClassRegKeyExW(CONST GUID*,REGSAM,DWORD,PCWSTR,PVOID);
+WINSETUPAPI BOOL WINAPI SetupDiOpenDeviceInfoA(HDEVINFO,PCSTR,HWND,DWORD,PSP_DEVINFO_DATA);
+WINSETUPAPI BOOL WINAPI SetupDiOpenDeviceInfoW(HDEVINFO,PCWSTR,HWND,DWORD,PSP_DEVINFO_DATA);
+WINSETUPAPI BOOL WINAPI SetupDiOpenDeviceInterfaceA(HDEVINFO,PCSTR,DWORD,PSP_DEVICE_INTERFACE_DATA);
+WINSETUPAPI BOOL WINAPI SetupDiOpenDeviceInterfaceW(HDEVINFO,PCWSTR,DWORD,PSP_DEVICE_INTERFACE_DATA);
+WINSETUPAPI HKEY WINAPI SetupDiOpenDeviceInterfaceRegKey(HDEVINFO,PSP_DEVICE_INTERFACE_DATA,DWORD,REGSAM);
+WINSETUPAPI HKEY WINAPI SetupDiOpenDevRegKey(HDEVINFO,PSP_DEVINFO_DATA,DWORD,DWORD,DWORD,REGSAM);
+WINSETUPAPI BOOL WINAPI SetupDiRegisterCoDeviceInstallers(HDEVINFO,PSP_DEVINFO_DATA);
+WINSETUPAPI BOOL WINAPI SetupDiRegisterDeviceInfo(HDEVINFO,PSP_DEVINFO_DATA,DWORD,PSP_DETSIG_CMPPROC,PVOID,PSP_DEVINFO_DATA);
+WINSETUPAPI BOOL WINAPI SetupDiRemoveDevice(HDEVINFO,PSP_DEVINFO_DATA);
+WINSETUPAPI BOOL WINAPI SetupDiRemoveDeviceInterface(HDEVINFO,PSP_DEVICE_INTERFACE_DATA);
+WINSETUPAPI BOOL WINAPI SetupDiSelectBestCompatDrv(HDEVINFO,PSP_DEVINFO_DATA);
+WINSETUPAPI BOOL WINAPI SetupDiSelectDevice(HDEVINFO,PSP_DEVINFO_DATA);
+WINSETUPAPI BOOL WINAPI SetupDiSelectOEMDrv(HWND,HDEVINFO,PSP_DEVINFO_DATA);
+WINSETUPAPI BOOL WINAPI SetupDiSetClassInstallParamsA(HDEVINFO,PSP_DEVINFO_DATA,PSP_CLASSINSTALL_HEADER,DWORD);
+WINSETUPAPI BOOL WINAPI SetupDiSetClassInstallParamsW(HDEVINFO,PSP_DEVINFO_DATA,PSP_CLASSINSTALL_HEADER,DWORD);
+WINSETUPAPI BOOL WINAPI SetupDiSetClassRegistryPropertyA(LPGUID,DWORD,CONST BYTE*,DWORD,PCSTR,PVOID);
+WINSETUPAPI BOOL WINAPI SetupDiSetClassRegistryPropertyW(LPGUID,DWORD,CONST BYTE*,DWORD,PCWSTR,PVOID);
+WINSETUPAPI BOOL WINAPI SetupDiSetDeviceInstallParamsA(HDEVINFO,PSP_DEVINFO_DATA,PSP_DEVINSTALL_PARAMS_A);
+WINSETUPAPI BOOL WINAPI SetupDiSetDeviceInstallParamsW(HDEVINFO,PSP_DEVINFO_DATA,PSP_DEVINSTALL_PARAMS_W);
+WINSETUPAPI BOOL WINAPI SetupDiSetDeviceRegistryPropertyA(HDEVINFO,PSP_DEVINFO_DATA,DWORD,CONST BYTE*,DWORD);
+WINSETUPAPI BOOL WINAPI SetupDiSetDeviceRegistryPropertyW(HDEVINFO,PSP_DEVINFO_DATA,DWORD,CONST BYTE*,DWORD);
+WINSETUPAPI BOOL WINAPI SetupDiSetDriverInstallParamsA(HDEVINFO,PSP_DEVINFO_DATA,PSP_DRVINFO_DATA_A,PSP_DRVINSTALL_PARAMS);
+WINSETUPAPI BOOL WINAPI SetupDiSetDriverInstallParamsW(HDEVINFO,PSP_DEVINFO_DATA,PSP_DRVINFO_DATA_W,PSP_DRVINSTALL_PARAMS);
+WINSETUPAPI BOOL WINAPI SetupDiSetSelectedDevice(HDEVINFO,PSP_DEVINFO_DATA);
+WINSETUPAPI BOOL WINAPI SetupDiSetSelectedDriverA(HDEVINFO,PSP_DEVINFO_DATA,PSP_DRVINFO_DATA_A);
+WINSETUPAPI BOOL WINAPI SetupDiSetSelectedDriverW(HDEVINFO,PSP_DEVINFO_DATA,PSP_DRVINFO_DATA_W);
+WINSETUPAPI BOOL WINAPI SetupDiUnremoveDevice(HDEVINFO,PSP_DEVINFO_DATA);
+WINSETUPAPI HDSKSPC WINAPI SetupDuplicateDiskSpaceListA(HDSKSPC,PVOID,DWORD,UINT);
+WINSETUPAPI HDSKSPC WINAPI SetupDuplicateDiskSpaceListW(HDSKSPC,PVOID,DWORD,UINT);
+WINSETUPAPI BOOL WINAPI SetupFindFirstLineA(HINF,PCSTR,PCSTR,PINFCONTEXT);
+WINSETUPAPI BOOL WINAPI SetupFindFirstLineW(HINF,PCWSTR,PCWSTR,PINFCONTEXT);
+WINSETUPAPI BOOL WINAPI SetupFindNextLine(PINFCONTEXT,PINFCONTEXT);
+WINSETUPAPI BOOL WINAPI SetupFindNextMatchLineA(PINFCONTEXT,PCSTR,PINFCONTEXT);
+WINSETUPAPI BOOL WINAPI SetupFindNextMatchLineW(PINFCONTEXT,PCWSTR,PINFCONTEXT);
+WINSETUPAPI BOOL WINAPI SetupFreeSourceListA(PCSTR**,UINT);
+WINSETUPAPI BOOL WINAPI SetupFreeSourceListW(PCWSTR**,UINT);
+WINSETUPAPI BOOL WINAPI SetupGetBackupInformationA(HSPFILEQ,PSP_BACKUP_QUEUE_PARAMS_A);
+WINSETUPAPI BOOL WINAPI SetupGetBackupInformationW(HSPFILEQ,PSP_BACKUP_QUEUE_PARAMS_W);
+WINSETUPAPI BOOL WINAPI SetupGetBinaryField(PINFCONTEXT,DWORD,PBYTE,DWORD,LPDWORD);
+WINSETUPAPI DWORD WINAPI SetupGetFieldCount(PINFCONTEXT);
+WINSETUPAPI DWORD WINAPI SetupGetFileCompressionInfoA(PCSTR,PSTR*,PDWORD,PDWORD,PUINT);
+WINSETUPAPI DWORD WINAPI SetupGetFileCompressionInfoW(PCWSTR,PWSTR*,PDWORD,PDWORD,PUINT);
+WINSETUPAPI BOOL WINAPI SetupGetInfFileListA(PCSTR,DWORD,PSTR,DWORD,PDWORD);
+WINSETUPAPI BOOL WINAPI SetupGetInfFileListW(PCWSTR,DWORD,PWSTR,DWORD,PDWORD);
+WINSETUPAPI BOOL WINAPI SetupGetInfInformationA(LPCVOID,DWORD,PSP_INF_INFORMATION,DWORD,PDWORD);
+WINSETUPAPI BOOL WINAPI SetupGetInfInformationW(LPCVOID,DWORD,PSP_INF_INFORMATION,DWORD,PDWORD);
+WINSETUPAPI BOOL WINAPI SetupGetIntField(PINFCONTEXT,DWORD,PINT);
+WINSETUPAPI BOOL WINAPI SetupGetLineByIndexA(HINF,PCSTR,DWORD,PINFCONTEXT);
+WINSETUPAPI BOOL WINAPI SetupGetLineByIndexW(HINF,PCWSTR,DWORD,PINFCONTEXT);
+WINSETUPAPI LONG WINAPI SetupGetLineCountA(HINF,PCSTR);
+WINSETUPAPI LONG WINAPI SetupGetLineCountW(HINF,PCWSTR);
+WINSETUPAPI BOOL WINAPI SetupGetLineTextA(PINFCONTEXT,HINF,PCSTR,PCSTR,PSTR,DWORD,PDWORD);
+WINSETUPAPI BOOL WINAPI SetupGetLineTextW(PINFCONTEXT,HINF,PCWSTR,PCWSTR,PWSTR,DWORD,PDWORD);
+WINSETUPAPI BOOL WINAPI SetupGetMultiSzFieldA(PINFCONTEXT,DWORD,PSTR,DWORD,LPDWORD);
+WINSETUPAPI BOOL WINAPI SetupGetMultiSzFieldW(PINFCONTEXT,DWORD,PWSTR,DWORD,LPDWORD);
+WINSETUPAPI BOOL WINAPI SetupGetSourceFileLocationA(HINF,PINFCONTEXT,PCSTR,PUINT,PSTR,DWORD,PDWORD);
+WINSETUPAPI BOOL WINAPI SetupGetSourceFileLocationW(HINF,PINFCONTEXT,PCWSTR,PUINT,PWSTR,DWORD,PDWORD);
+WINSETUPAPI BOOL WINAPI SetupGetSourceFileSizeA(HINF,PINFCONTEXT,PCSTR,PCSTR,PDWORD,UINT);
+WINSETUPAPI BOOL WINAPI SetupGetSourceFileSizeW(HINF,PINFCONTEXT,PCWSTR,PCWSTR,PDWORD,UINT);
+WINSETUPAPI BOOL WINAPI SetupGetSourceInfoA(HINF,UINT,UINT,PSTR,DWORD,PDWORD);
+WINSETUPAPI BOOL WINAPI SetupGetSourceInfoW(HINF,UINT,UINT,PWSTR,DWORD,PDWORD);
+WINSETUPAPI BOOL WINAPI SetupGetStringFieldA(PINFCONTEXT,DWORD,PSTR,DWORD,PDWORD);
+WINSETUPAPI BOOL WINAPI SetupGetStringFieldW(PINFCONTEXT,DWORD,PWSTR,DWORD,PDWORD);
+WINSETUPAPI BOOL WINAPI SetupGetTargetPathA(HINF,PINFCONTEXT,PCSTR,PSTR,DWORD,PDWORD);
+WINSETUPAPI BOOL WINAPI SetupGetTargetPathW(HINF,PINFCONTEXT,PCWSTR,PWSTR,DWORD,PDWORD);
+WINSETUPAPI PVOID WINAPI SetupInitDefaultQueueCallback(HWND);
+WINSETUPAPI PVOID WINAPI SetupInitDefaultQueueCallbackEx(HWND,HWND,UINT,DWORD,PVOID);
+WINSETUPAPI HSPFILELOG WINAPI SetupInitializeFileLogA(PCSTR,DWORD);
+WINSETUPAPI HSPFILELOG WINAPI SetupInitializeFileLogW(PCWSTR,DWORD);
+WINSETUPAPI BOOL WINAPI SetupInstallFileA(HINF,PINFCONTEXT,PCSTR,PCSTR,PCSTR,DWORD,PSP_FILE_CALLBACK_A,PVOID);
+WINSETUPAPI BOOL WINAPI SetupInstallFileW(HINF,PINFCONTEXT,PCWSTR,PCWSTR,PCWSTR,DWORD,PSP_FILE_CALLBACK_W,PVOID);
+WINSETUPAPI BOOL WINAPI SetupInstallFileExA(HINF,PINFCONTEXT,PCSTR,PCSTR,PCSTR,DWORD,PSP_FILE_CALLBACK_A,PVOID,PBOOL);
+WINSETUPAPI BOOL WINAPI SetupInstallFileExW(HINF,PINFCONTEXT,PCWSTR,PCWSTR,PCWSTR,DWORD,PSP_FILE_CALLBACK_W,PVOID,PBOOL);
+WINSETUPAPI BOOL WINAPI SetupInstallFilesFromInfSectionA(HINF,HINF,HSPFILEQ,PCSTR,PCSTR,UINT);
+WINSETUPAPI BOOL WINAPI SetupInstallFilesFromInfSectionW(HINF,HINF,HSPFILEQ,PCWSTR,PCWSTR,UINT);
+WINSETUPAPI BOOL WINAPI SetupInstallFromInfSectionA(HWND,HINF,PCSTR,UINT,HKEY,PCSTR,UINT,PSP_FILE_CALLBACK_A,PVOID,HDEVINFO,PSP_DEVINFO_DATA);
+WINSETUPAPI BOOL WINAPI SetupInstallFromInfSectionW(HWND,HINF,PCWSTR,UINT,HKEY,PCWSTR,UINT,PSP_FILE_CALLBACK_W,PVOID,HDEVINFO,PSP_DEVINFO_DATA);
+WINSETUPAPI BOOL WINAPI SetupInstallServicesFromInfSectionA(HINF,PCSTR,DWORD);
+WINSETUPAPI BOOL WINAPI SetupInstallServicesFromInfSectionW(HINF,PCWSTR,DWORD);
+WINSETUPAPI BOOL WINAPI SetupInstallServicesFromInfSectionExA(HINF,PCSTR,DWORD,HDEVINFO,PSP_DEVINFO_DATA,PVOID,PVOID);
+WINSETUPAPI BOOL WINAPI SetupInstallServicesFromInfSectionExW(HINF,PCWSTR,DWORD,HDEVINFO,PSP_DEVINFO_DATA,PVOID,PVOID);
+WINSETUPAPI BOOL WINAPI SetupIterateCabinetA(PCSTR,DWORD,PSP_FILE_CALLBACK_A,PVOID);
+WINSETUPAPI BOOL WINAPI SetupIterateCabinetW(PCWSTR,DWORD,PSP_FILE_CALLBACK_W,PVOID);
+WINSETUPAPI BOOL WINAPI SetupLogErrorA(LPCSTR,LogSeverity);
+WINSETUPAPI BOOL WINAPI SetupLogErrorW(LPCWSTR,LogSeverity);
+WINSETUPAPI BOOL WINAPI SetupLogFileA(HSPFILELOG,PCSTR,PCSTR,PCSTR,DWORD,PCSTR,PCSTR,PCSTR,DWORD);
+WINSETUPAPI BOOL WINAPI SetupLogFileW(HSPFILELOG,PCWSTR,PCWSTR,PCWSTR,DWORD,PCWSTR,PCWSTR,PCWSTR,DWORD);
+WINSETUPAPI BOOL WINAPI SetupOpenAppendInfFileA(PCSTR,HINF,PUINT);
+WINSETUPAPI BOOL WINAPI SetupOpenAppendInfFileW(PCWSTR,HINF,PUINT);
+WINSETUPAPI HSPFILEQ WINAPI SetupOpenFileQueue(VOID);
+WINSETUPAPI HINF WINAPI SetupOpenInfFileA(PCSTR,PCSTR,DWORD,PUINT);
+WINSETUPAPI HINF WINAPI SetupOpenInfFileW(PCWSTR,PCWSTR,DWORD,PUINT);
+WINSETUPAPI BOOL WINAPI SetupOpenLog(BOOL);
+WINSETUPAPI HINF WINAPI SetupOpenMasterInf(VOID);
+WINSETUPAPI UINT WINAPI SetupPromptForDiskA(HWND,PCSTR,PCSTR,PCSTR,PCSTR,PCSTR,DWORD,PSTR,DWORD,PDWORD);
+WINSETUPAPI UINT WINAPI SetupPromptForDiskW(HWND,PCWSTR,PCWSTR,PCWSTR,PCWSTR,PCWSTR,DWORD,PWSTR,DWORD,PDWORD);
+WINSETUPAPI INT WINAPI SetupPromptReboot(HSPFILEQ,HWND,BOOL);
+WINSETUPAPI BOOL WINAPI SetupQuerySourceListA(DWORD,PCSTR**,PUINT);
+WINSETUPAPI BOOL WINAPI SetupQuerySourceListW(DWORD,PCWSTR**,PUINT);
+WINSETUPAPI BOOL WINAPI SetupQueryDrivesInDiskSpaceListA(HDSKSPC,PSTR,DWORD,PDWORD);
+WINSETUPAPI BOOL WINAPI SetupQueryDrivesInDiskSpaceListW(HDSKSPC,PWSTR,DWORD,PDWORD);
+WINSETUPAPI BOOL WINAPI SetupQueryFileLogA(HSPFILELOG,PCSTR,PCSTR,SetupFileLogInfo,PSTR,DWORD,PDWORD);
+WINSETUPAPI BOOL WINAPI SetupQueryFileLogW(HSPFILELOG,PCWSTR,PCWSTR,SetupFileLogInfo,PWSTR,DWORD,PDWORD);
+WINSETUPAPI BOOL WINAPI SetupQueryInfFileInformationA(PSP_INF_INFORMATION,UINT,PSTR,DWORD,PDWORD);
+WINSETUPAPI BOOL WINAPI SetupQueryInfFileInformationW(PSP_INF_INFORMATION,UINT,PWSTR,DWORD,PDWORD);
+WINSETUPAPI BOOL WINAPI SetupQueryInfOriginalFileInformationA(PSP_INF_INFORMATION,UINT,PSP_ALTPLATFORM_INFO,PSP_ORIGINAL_FILE_INFO_A);
+WINSETUPAPI BOOL WINAPI SetupQueryInfOriginalFileInformationW(PSP_INF_INFORMATION,UINT,PSP_ALTPLATFORM_INFO,PSP_ORIGINAL_FILE_INFO_W);
+WINSETUPAPI BOOL WINAPI SetupQueryInfVersionInformationA(PSP_INF_INFORMATION,UINT,PSTR,PSTR,DWORD,PDWORD);
+WINSETUPAPI BOOL WINAPI SetupQueryInfVersionInformationW(PSP_INF_INFORMATION,UINT,PCWSTR,PWSTR,DWORD,PDWORD);
+WINSETUPAPI BOOL WINAPI SetupQuerySpaceRequiredOnDriveA(HDSKSPC,PCSTR,LONGLONG*,PVOID,UINT);
+WINSETUPAPI BOOL WINAPI SetupQuerySpaceRequiredOnDriveW(HDSKSPC,PCWSTR,LONGLONG*,PVOID,UINT);
+WINSETUPAPI BOOL WINAPI SetupQueueCopyA(HSPFILEQ,PCSTR,PCSTR,PCSTR,PCSTR,PCSTR,PCSTR,PCSTR,DWORD);
+WINSETUPAPI BOOL WINAPI SetupQueueCopyW(HSPFILEQ,PCWSTR,PCWSTR,PCWSTR,PCWSTR,PCWSTR,PCWSTR,PCWSTR,DWORD);
+WINSETUPAPI BOOL WINAPI SetupQueueCopyIndirectA(PSP_FILE_COPY_PARAMS_A);
+WINSETUPAPI BOOL WINAPI SetupQueueCopyIndirectW(PSP_FILE_COPY_PARAMS_W);
+WINSETUPAPI BOOL WINAPI SetupQueueCopySectionA(HSPFILEQ,PCSTR,HINF,HINF,PCSTR,DWORD);
+WINSETUPAPI BOOL WINAPI SetupQueueCopySectionW(HSPFILEQ,PCWSTR,HINF,HINF,PCWSTR,DWORD);
+WINSETUPAPI BOOL WINAPI SetupQueueDefaultCopyA(HSPFILEQ,HINF,PCSTR,PCSTR,PCSTR,DWORD);
+WINSETUPAPI BOOL WINAPI SetupQueueDefaultCopyW(HSPFILEQ,HINF,PCWSTR,PCWSTR,PCWSTR,DWORD);
+WINSETUPAPI BOOL WINAPI SetupQueueDeleteA(HSPFILEQ,PCSTR,PCSTR);
+WINSETUPAPI BOOL WINAPI SetupQueueDeleteW(HSPFILEQ,PCWSTR,PCWSTR);
+WINSETUPAPI BOOL WINAPI SetupQueueDeleteSectionA(HSPFILEQ,HINF,HINF,PCSTR);
+WINSETUPAPI BOOL WINAPI SetupQueueDeleteSectionW(HSPFILEQ,HINF,HINF,PCWSTR);
+WINSETUPAPI BOOL WINAPI SetupQueueRenameA(HSPFILEQ,PCSTR,PCSTR,PCSTR,PCSTR);
+WINSETUPAPI BOOL WINAPI SetupQueueRenameW(HSPFILEQ,PCWSTR,PCWSTR,PCWSTR,PCWSTR);
+WINSETUPAPI BOOL WINAPI SetupQueueRenameSectionA(HSPFILEQ,HINF,HINF,PCSTR);
+WINSETUPAPI BOOL WINAPI SetupQueueRenameSectionW(HSPFILEQ,HINF,HINF,PCWSTR);
+WINSETUPAPI BOOL WINAPI SetupRemoveFileLogEntryA(HSPFILELOG,PCSTR,PCSTR);
+WINSETUPAPI BOOL WINAPI SetupRemoveFileLogEntryW(HSPFILELOG,PCWSTR,PCWSTR);
+WINSETUPAPI BOOL WINAPI SetupRemoveFromDiskSpaceListA(HDSKSPC,PCSTR,UINT,PVOID,UINT);
+WINSETUPAPI BOOL WINAPI SetupRemoveFromDiskSpaceListW(HDSKSPC,PCWSTR,UINT,PVOID,UINT);
+WINSETUPAPI BOOL WINAPI SetupRemoveFromSourceListA(DWORD,PCSTR);
+WINSETUPAPI BOOL WINAPI SetupRemoveFromSourceListW(DWORD,PCWSTR);
+WINSETUPAPI BOOL WINAPI SetupRemoveInstallSectionFromDiskSpaceListA(HDSKSPC,HINF,HINF,PCSTR,PVOID,UINT);
+WINSETUPAPI BOOL WINAPI SetupRemoveInstallSectionFromDiskSpaceListW(HDSKSPC,HINF,HINF,PCWSTR,PVOID,UINT);
+WINSETUPAPI BOOL WINAPI SetupRemoveSectionFromDiskSpaceListA(HDSKSPC,HINF,HINF,PCSTR,UINT,PVOID,UINT);
+WINSETUPAPI BOOL WINAPI SetupRemoveSectionFromDiskSpaceListW(HDSKSPC,HINF,HINF,PCWSTR,UINT,PVOID,UINT);
+WINSETUPAPI UINT WINAPI SetupRenameErrorA(HWND,PCSTR,PCSTR,PCSTR,UINT,DWORD);
+WINSETUPAPI UINT WINAPI SetupRenameErrorW(HWND,PCWSTR,PCWSTR,PCWSTR,UINT,DWORD);
+WINSETUPAPI BOOL WINAPI SetupScanFileQueueA(HSPFILEQ,DWORD,HWND,PSP_FILE_CALLBACK_A,PVOID,PDWORD);
+WINSETUPAPI BOOL WINAPI SetupScanFileQueueW(HSPFILEQ,DWORD,HWND,PSP_FILE_CALLBACK_W,PVOID,PDWORD);
+WINSETUPAPI BOOL WINAPI SetupSetDirectoryIdA(HINF,DWORD,PCSTR);
+WINSETUPAPI BOOL WINAPI SetupSetDirectoryIdW(HINF,DWORD,PCWSTR);
+WINSETUPAPI BOOL WINAPI SetupSetDirectoryIdExA(HINF,DWORD,PCSTR,DWORD,DWORD,PVOID);
+WINSETUPAPI BOOL WINAPI SetupSetDirectoryIdExW(HINF,DWORD,PCWSTR,DWORD,DWORD,PVOID);
+WINSETUPAPI BOOL WINAPI SetupSetFileQueueAlternatePlatformA(HSPFILEQ,PSP_ALTPLATFORM_INFO,PCSTR);
+WINSETUPAPI BOOL WINAPI SetupSetFileQueueAlternatePlatformW(HSPFILEQ,PSP_ALTPLATFORM_INFO,PCWSTR);
+WINSETUPAPI BOOL WINAPI SetupSetPlatformPathOverrideA(PCSTR);
+WINSETUPAPI BOOL WINAPI SetupSetPlatformPathOverrideW(PCWSTR);
+WINSETUPAPI BOOL WINAPI SetupSetSourceListA(DWORD,PCSTR*,UINT);
+WINSETUPAPI BOOL WINAPI SetupSetSourceListW(DWORD,PCWSTR*,UINT);
+WINSETUPAPI VOID WINAPI SetupTermDefaultQueueCallback(PVOID);
+WINSETUPAPI BOOL WINAPI SetupTerminateFileLog(HSPFILELOG);
+
+/* for backward compatibility */
+#define SetupDiCreateInterfaceDeviceW	SetupDiCreateDeviceInterfaceW
+#define SetupDiCreateInterfaceDeviceRegKeyW	SetupDiCreateDeviceInterfaceRegKeyW
+#define SetupDiOpenInterfaceDeviceW	SetupDiOpenDeviceInterfaceW
+#define SetupDiGetInterfaceDeviceDetailW	SetupDiGetDeviceInterfaceDetailW
+#define SetupDiCreateInterfaceDeviceA	SetupDiCreateDeviceInterfaceA
+#define SetupDiCreateInterfaceDeviceRegKeyA	SetupDiCreateDeviceInterfaceRegKeyA
+#define SetupDiOpenInterfaceDeviceA	SetupDiOpenDeviceInterfaceA
+#define SetupDiGetInterfaceDeviceDetailA	SetupDiGetDeviceInterfaceDetailA
+
+#ifdef UNICODE
+#define PSP_FILE_CALLBACK PSP_FILE_CALLBACK_W
+#define SetupAddInstallSectionToDiskSpaceList	SetupAddInstallSectionToDiskSpaceListW
+#define SetupAddSectionToDiskSpaceList	SetupAddSectionToDiskSpaceListW
+#define SetupAddToDiskSpaceList	SetupAddToDiskSpaceListW
+#define SetupAddToSourceList	SetupAddToSourceListW
+#define SetupAdjustDiskSpaceList	SetupAdjustDiskSpaceListW
+#define SetupBackupError	SetupBackupErrorW
+#define SetupCommitFileQueue	SetupCommitFileQueueW
+#if (_SETUPAPI_VER >= 0x0502)
+#define SetupConfigureWmiFromInfSection SetupConfigureWmiFromInfSectionW
+#endif
+#define SetupCopyError	SetupCopyErrorW
+#define SetupCopyOEMInf	SetupCopyOEMInfW
+#define SetupCreateDiskSpaceList	SetupCreateDiskSpaceListW
+#define SetupDecompressOrCopyFile	SetupDecompressOrCopyFileW
+#define SetupDefaultQueueCallback	SetupDefaultQueueCallbackW
+#define SetupDeleteError	SetupDeleteErrorW
+#define SetupDiBuildClassInfoListEx	SetupDiBuildClassInfoListExW
+#define SetupDiClassGuidsFromNameEx	SetupDiClassGuidsFromNameExW
+#define SetupDiClassGuidsFromName	SetupDiClassGuidsFromNameW
+#define SetupDiClassNameFromGuidEx	SetupDiClassNameFromGuidExW
+#define SetupDiClassNameFromGuid	SetupDiClassNameFromGuidW
+#define SetupDiCreateDeviceInfoListEx	SetupDiCreateDeviceInfoListExW
+#define SetupDiCreateDeviceInfo	SetupDiCreateDeviceInfoW
+#define SetupDiCreateDeviceInterfaceRegKey	SetupDiCreateDeviceInterfaceRegKeyW
+#define SetupDiCreateInterfaceDeviceRegKey	SetupDiCreateDeviceInterfaceRegKeyW
+#define SetupDiCreateDeviceInterface	SetupDiCreateDeviceInterfaceW
+#define SetupDiCreateInterfaceDevice	SetupDiCreateDeviceInterfaceW
+#define SetupDiCreateDevRegKey	SetupDiCreateDevRegKeyW
+#define SetupDiEnumDriverInfo	SetupDiEnumDriverInfoW
+#define SetupDiGetActualSectionToInstall	SetupDiGetActualSectionToInstallW
+#define SetupDiGetClassDescriptionEx	SetupDiGetClassDescriptionExW
+#define SetupDiGetClassDescription	SetupDiGetClassDescriptionW
+#define SetupDiGetClassDevPropertySheets	SetupDiGetClassDevPropertySheetsW
+#define SetupDiGetClassDevsEx	SetupDiGetClassDevsExW
+#define SetupDiGetClassDevs	SetupDiGetClassDevsW
+#define SetupDiGetClassImageListEx	SetupDiGetClassImageListExW
+#define SetupDiGetClassInstallParams	SetupDiGetClassInstallParamsW
+#define SetupDiGetClassRegistryProperty	SetupDiGetClassRegistryPropertyW
+#define SetupDiGetDeviceInfoListDetail	SetupDiGetDeviceInfoListDetailW
+#define SetupDiGetDeviceInstallParams	SetupDiGetDeviceInstallParamsW
+#define SetupDiGetDeviceInstanceId	SetupDiGetDeviceInstanceIdW
+#define SetupDiGetDeviceInterfaceDetail	SetupDiGetDeviceInterfaceDetailW
+#define SetupDiGetInterfaceDeviceDetail	SetupDiGetDeviceInterfaceDetailW
+#define SetupDiGetDeviceRegistryProperty	SetupDiGetDeviceRegistryPropertyW
+#define SetupDiGetDriverInfoDetail	SetupDiGetDriverInfoDetailW
+#define SetupDiGetDriverInstallParams	SetupDiGetDriverInstallParamsW
+#define SetupDiGetHwProfileFriendlyNameEx	SetupDiGetHwProfileFriendlyNameExW
+#define SetupDiGetHwProfileFriendlyName	SetupDiGetHwProfileFriendlyNameW
+#define SetupDiGetHwProfileListEx	SetupDiGetHwProfileListExW
+#define SetupDiGetINFClass	SetupDiGetINFClassW
+#define SetupDiGetSelectedDriver	SetupDiGetSelectedDriverW
+#define SetupDiInstallClassEx	SetupDiInstallClassExW
+#define SetupDiInstallClass	SetupDiInstallClassW
+#define SetupDiOpenClassRegKeyEx	SetupDiOpenClassRegKeyExW
+#define SetupDiOpenDeviceInfo	SetupDiOpenDeviceInfoW
+#define SetupDiOpenDeviceInterface	SetupDiOpenDeviceInterfaceW
+#define SetupDiOpenInterfaceDevice	SetupDiOpenDeviceInterfaceW
+#define SetupDiSetClassInstallParams	SetupDiSetClassInstallParamsW
+#define SetupDiSetClassRegistryProperty	SetupDiSetClassRegistryPropertyW
+#define SetupDiSetDeviceInstallParams	SetupDiSetDeviceInstallParamsW
+#define SetupDiSetDeviceRegistryProperty	SetupDiSetDeviceRegistryPropertyW
+#define SetupDiSetDriverInstallParams	SetupDiSetDriverInstallParamsW
+#define SetupDiSetSelectedDriver	SetupDiSetSelectedDriverW
+#define SetupDuplicateDiskSpaceList	SetupDuplicateDiskSpaceListW
+#define SetupFindFirstLine	SetupFindFirstLineW
+#define SetupFindNextMatchLine	SetupFindNextMatchLineW
+#define SetupFreeSourceList	SetupFreeSourceListW
+#define SetupGetBackupInformation	SetupGetBackupInformationW
+#define SetupGetFileCompressionInfo	SetupGetFileCompressionInfoW
+#define SetupGetInfFileList	SetupGetInfFileListW
+#define SetupGetInfInformation	SetupGetInfInformationW
+#define SetupGetLineByIndex	SetupGetLineByIndexW
+#define SetupGetLineCount	SetupGetLineCountW
+#define SetupGetLineText	SetupGetLineTextW
+#define SetupGetMultiSzField	SetupGetMultiSzFieldW
+#define SetupGetSourceFileLocation	SetupGetSourceFileLocationW
+#define SetupGetSourceFileSize	SetupGetSourceFileSizeW
+#define SetupGetSourceInfo	SetupGetSourceInfoW
+#define SetupGetStringField	SetupGetStringFieldW
+#define SetupGetTargetPath	SetupGetTargetPathW
+#define SetupInitializeFileLog	SetupInitializeFileLogW
+#define SetupInstallFileEx	SetupInstallFileExW
+#define SetupInstallFilesFromInfSection	SetupInstallFilesFromInfSectionW
+#define SetupInstallFile	SetupInstallFileW
+#define SetupInstallFromInfSection	SetupInstallFromInfSectionW
+#define SetupInstallServicesFromInfSectionEx	SetupInstallServicesFromInfSectionExW
+#define SetupInstallServicesFromInfSection	SetupInstallServicesFromInfSectionW
+#define SetupIterateCabinet	SetupIterateCabinetW
+#define SetupLogError	SetupLogErrorW
+#define SetupLogFile	SetupLogFileW
+#define SetupOpenAppendInfFile	SetupOpenAppendInfFileW
+#define SetupOpenInfFile	SetupOpenInfFileW
+#define SetupPromptForDisk	SetupPromptForDiskW
+#define SetupQueryDrivesInDiskSpaceList	SetupQueryDrivesInDiskSpaceListW
+#define SetupQueryFileLog	SetupQueryFileLogW
+#define SetupQueryInfFileInformation	SetupQueryInfFileInformationW
+#define SetupQueryInfOriginalFileInformation	SetupQueryInfOriginalFileInformationW
+#define SetupQueryInfVersionInformation	SetupQueryInfVersionInformationW
+#define SetupQuerySourceList	SetupQuerySourceListW
+#define SetupQuerySpaceRequiredOnDrive	SetupQuerySpaceRequiredOnDriveW
+#define SetupQueueCopyIndirect	SetupQueueCopyIndirectW
+#define SetupQueueCopySection	SetupQueueCopySectionW
+#define SetupQueueCopy	SetupQueueCopyW
+#define SetupQueueDefaultCopy	SetupQueueDefaultCopyW
+#define SetupQueueDeleteSection	SetupQueueDeleteSectionW
+#define SetupQueueDelete	SetupQueueDeleteW
+#define SetupQueueRenameSection	SetupQueueRenameSectionW
+#define SetupQueueRename	SetupQueueRenameW
+#define SetupRemoveFileLogEntry	SetupRemoveFileLogEntryW
+#define SetupRemoveFromDiskSpaceList	SetupRemoveFromDiskSpaceListW
+#define SetupRemoveFromSourceList	SetupRemoveFromSourceListW
+#define SetupRemoveInstallSectionFromDiskSpaceList	SetupRemoveInstallSectionFromDiskSpaceListW
+#define SetupRemoveSectionFromDiskSpaceList	SetupRemoveSectionFromDiskSpaceListW
+#define SetupRenameError	SetupRenameErrorW
+#define SetupScanFileQueue	SetupScanFileQueueW
+#define SetupSetDirectoryIdEx	SetupSetDirectoryIdExW
+#define SetupSetDirectoryId	SetupSetDirectoryIdW
+#define SetupSetFileQueueAlternatePlatform	SetupSetFileQueueAlternatePlatformW
+#define SetupSetPlatformPathOverride	SetupSetPlatformPathOverrideW
+#define SetupSetSourceList	SetupSetSourceListW
+#else
+#define PSP_FILE_CALLBACK PSP_FILE_CALLBACK_A
+#define SetupAddInstallSectionToDiskSpaceList	SetupAddInstallSectionToDiskSpaceListA
+#define SetupAddSectionToDiskSpaceList	SetupAddSectionToDiskSpaceListA
+#define SetupAddToDiskSpaceList	SetupAddToDiskSpaceListA
+#define SetupAddToSourceList	SetupAddToSourceListA
+#define SetupAdjustDiskSpaceList	SetupAdjustDiskSpaceListA
+#define SetupBackupError	SetupBackupErrorA
+#define SetupCommitFileQueue	SetupCommitFileQueueA
+#if (_SETUPAPI_VER >= 0x0502)
+#define SetupConfigureWmiFromInfSection SetupConfigureWmiFromInfSectionW
+#endif
+#define SetupCopyError	SetupCopyErrorA
+#define SetupCopyOEMInf	SetupCopyOEMInfA
+#define SetupCreateDiskSpaceList	SetupCreateDiskSpaceListA
+#define SetupDecompressOrCopyFile	SetupDecompressOrCopyFileA
+#define SetupDefaultQueueCallback	SetupDefaultQueueCallbackA
+#define SetupDeleteError	SetupDeleteErrorA
+#define SetupDiBuildClassInfoListEx	SetupDiBuildClassInfoListExA
+#define SetupDiClassGuidsFromName	SetupDiClassGuidsFromNameA
+#define SetupDiClassGuidsFromNameEx	SetupDiClassGuidsFromNameExA
+#define SetupDiClassNameFromGuid	SetupDiClassNameFromGuidA
+#define SetupDiClassNameFromGuidEx	SetupDiClassNameFromGuidExA
+#define SetupDiCreateDeviceInfo	SetupDiCreateDeviceInfoA
+#define SetupDiCreateDeviceInfoListEx	SetupDiCreateDeviceInfoListExA
+#define SetupDiCreateDeviceInterface	SetupDiCreateDeviceInterfaceA
+#define SetupDiCreateInterfaceDevice	SetupDiCreateDeviceInterfaceA
+#define SetupDiCreateDeviceInterfaceRegKey	SetupDiCreateDeviceInterfaceRegKeyA
+#define SetupDiCreateInterfaceDeviceRegKey	SetupDiCreateDeviceInterfaceRegKeyA
+#define SetupDiCreateDevRegKey	SetupDiCreateDevRegKeyA
+#define SetupDiDeleteInterfaceDeviceData	SetupDiDeleteDeviceInterfaceData
+#define SetupDiEnumDriverInfo	SetupDiEnumDriverInfoA
+#define SetupDiGetActualSectionToInstall	SetupDiGetActualSectionToInstallA
+#define SetupDiGetClassDescription	SetupDiGetClassDescriptionA
+#define SetupDiGetClassDescriptionEx	SetupDiGetClassDescriptionExA
+#define SetupDiGetClassDevPropertySheets	SetupDiGetClassDevPropertySheetsA
+#define SetupDiGetClassDevs	SetupDiGetClassDevsA
+#define SetupDiGetClassDevsEx	SetupDiGetClassDevsExA
+#define SetupDiGetClassImageListEx	SetupDiGetClassImageListExA
+#define SetupDiGetClassInstallParams	SetupDiGetClassInstallParamsA
+#define SetupDiGetClassRegistryProperty	SetupDiGetClassRegistryPropertyA
+#define SetupDiGetDeviceInfoListDetail	SetupDiGetDeviceInfoListDetailA
+#define SetupDiGetDeviceInstallParams	SetupDiGetDeviceInstallParamsA
+#define SetupDiGetDeviceInstanceId	SetupDiGetDeviceInstanceIdA
+#define SetupDiGetDeviceInterfaceDetail	SetupDiGetDeviceInterfaceDetailA
+#define SetupDiGetInterfaceDeviceDetail	SetupDiGetDeviceInterfaceDetailA
+#define SetupDiGetDeviceRegistryProperty	SetupDiGetDeviceRegistryPropertyA
+#define SetupDiGetDriverInfoDetail	SetupDiGetDriverInfoDetailA
+#define SetupDiGetDriverInstallParams	SetupDiGetDriverInstallParamsA
+#define SetupDiGetHwProfileFriendlyName	SetupDiGetHwProfileFriendlyNameA
+#define SetupDiGetHwProfileFriendlyNameEx	SetupDiGetHwProfileFriendlyNameExA
+#define SetupDiGetHwProfileListEx	SetupDiGetHwProfileListExA
+#define SetupDiGetINFClass	SetupDiGetINFClassA
+#define SetupDiGetSelectedDriver	SetupDiGetSelectedDriverA
+#define SetupDiInstallClass	SetupDiInstallClassA
+#define SetupDiInstallClassEx	SetupDiInstallClassExA
+#define SetupDiOpenClassRegKeyEx	SetupDiOpenClassRegKeyExA
+#define SetupDiOpenDeviceInfo	SetupDiOpenDeviceInfoA
+#define SetupDiOpenDeviceInterface	SetupDiOpenDeviceInterfaceA
+#define SetupDiOpenInterfaceDevice	SetupDiOpenDeviceInterfaceA
+#define SetupDiSetClassInstallParams	SetupDiSetClassInstallParamsA
+#define SetupDiSetClassRegistryProperty	SetupDiSetClassRegistryPropertyA
+#define SetupDiSetDeviceInstallParams	SetupDiSetDeviceInstallParamsA
+#define SetupDiSetDeviceRegistryProperty	SetupDiSetDeviceRegistryPropertyA
+#define SetupDiSetDriverInstallParams	SetupDiSetDriverInstallParamsA
+#define SetupDiSetSelectedDriver	SetupDiSetSelectedDriverA
+#define SetupDuplicateDiskSpaceList	SetupDuplicateDiskSpaceListA
+#define SetupFindFirstLine	SetupFindFirstLineA
+#define SetupFindNextMatchLine	SetupFindNextMatchLineA
+#define SetupFreeSourceList	SetupFreeSourceListA
+#define SetupGetBackupInformation	SetupGetBackupInformationA
+#define SetupGetFileCompressionInfo	SetupGetFileCompressionInfoA
+#define SetupGetInfFileList	SetupGetInfFileListA
+#define SetupGetInfInformation	SetupGetInfInformationA
+#define SetupGetLineByIndex	SetupGetLineByIndexA
+#define SetupGetLineCount	SetupGetLineCountA
+#define SetupGetLineText	SetupGetLineTextA
+#define SetupGetMultiSzField	SetupGetMultiSzFieldA
+#define SetupGetSourceFileLocation	SetupGetSourceFileLocationA
+#define SetupGetSourceFileSize	SetupGetSourceFileSizeA
+#define SetupGetSourceInfo	SetupGetSourceInfoA
+#define SetupGetStringField	SetupGetStringFieldA
+#define SetupGetTargetPath	SetupGetTargetPathA
+#define SetupInitializeFileLog	SetupInitializeFileLogA
+#define SetupInstallFile	SetupInstallFileA
+#define SetupInstallFileEx	SetupInstallFileExA
+#define SetupInstallFilesFromInfSection	SetupInstallFilesFromInfSectionA
+#define SetupInstallFromInfSection	SetupInstallFromInfSectionA
+#define SetupInstallServicesFromInfSection	SetupInstallServicesFromInfSectionA
+#define SetupInstallServicesFromInfSectionEx	SetupInstallServicesFromInfSectionExA
+#define SetupIterateCabinet	SetupIterateCabinetA
+#define SetupLogError	SetupLogErrorA
+#define SetupLogFile	SetupLogFileA
+#define SetupOpenAppendInfFile	SetupOpenAppendInfFileA
+#define SetupOpenInfFile	SetupOpenInfFileA
+#define SetupPromptForDisk	SetupPromptForDiskA
+#define SetupQueryDrivesInDiskSpaceList	SetupQueryDrivesInDiskSpaceListA
+#define SetupQueryFileLog	SetupQueryFileLogA
+#define SetupQueryInfFileInformation	SetupQueryInfFileInformationA
+#define SetupQueryInfOriginalFileInformation	SetupQueryInfOriginalFileInformationA
+#define SetupQueryInfVersionInformation	SetupQueryInfVersionInformationA
+#define SetupQuerySourceList	SetupQuerySourceListA
+#define SetupQuerySpaceRequiredOnDrive	SetupQuerySpaceRequiredOnDriveA
+#define SetupQueueCopy	SetupQueueCopyA
+#define SetupQueueCopyIndirect	SetupQueueCopyIndirectA
+#define SetupQueueCopySection	SetupQueueCopySectionA
+#define SetupQueueDefaultCopy	SetupQueueDefaultCopyA
+#define SetupQueueDelete	SetupQueueDeleteA
+#define SetupQueueDeleteSection	SetupQueueDeleteSectionA
+#define SetupQueueRename	SetupQueueRenameA
+#define SetupQueueRenameSection	SetupQueueRenameSectionA
+#define SetupRemoveFileLogEntry	SetupRemoveFileLogEntryA
+#define SetupRemoveFromDiskSpaceList	SetupRemoveFromDiskSpaceListA
+#define SetupRemoveFromSourceList	SetupRemoveFromSourceListA
+#define SetupRemoveInstallSectionFromDiskSpaceList	SetupRemoveInstallSectionFromDiskSpaceListA
+#define SetupRemoveSectionFromDiskSpaceList	SetupRemoveSectionFromDiskSpaceListA
+#define SetupRenameError	SetupRenameErrorA
+#define SetupScanFileQueue	SetupScanFileQueueA
+#define SetupSetDirectoryId	SetupSetDirectoryIdA
+#define SetupSetDirectoryIdEx	SetupSetDirectoryIdExA
+#define SetupSetFileQueueAlternatePlatform	SetupSetFileQueueAlternatePlatformA
+#define SetupSetPlatformPathOverride	SetupSetPlatformPathOverrideA
+#define SetupSetSourceList	SetupSetSourceListA
+#endif	/* UNICODE */
+
+#endif /* RC_INVOKED */
+
+#ifdef __cplusplus
+}
+#endif
+#include <poppack.h>
+#endif
Index: Daodan/MinGW/include/share.h
===================================================================
--- Daodan/MinGW/include/share.h	(revision 1046)
+++ Daodan/MinGW/include/share.h	(revision 1046)
@@ -0,0 +1,33 @@
+/*
+ * share.h
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is a part of the mingw-runtime package.
+ * No warranty is given; refer to the file DISCLAIMER within the package.
+ *
+ * Constants for file sharing functions.
+ *
+ */
+
+#ifndef	_SHARE_H_
+#define	_SHARE_H_
+
+/* All the headers include this file. */
+#include <_mingw.h>
+
+#define _SH_COMPAT	0x00	/* Compatibility */
+#define	_SH_DENYRW	0x10	/* Deny read/write */
+#define	_SH_DENYWR	0x20	/* Deny write */
+#define	_SH_DENYRD	0x30	/* Deny read */
+#define	_SH_DENYNO	0x40	/* Deny nothing */
+
+#ifndef _NO_OLDNAMES
+
+/* Non ANSI names */
+#define SH_DENYRW _SH_DENYRW
+#define SH_DENYWR _SH_DENYWR
+#define SH_DENYRD _SH_DENYRD
+#define SH_DENYNO _SH_DENYNO
+
+#endif	/* Not _NO_OLDNAMES */
+
+#endif	/* Not _SHARE_H_ */
Index: Daodan/MinGW/include/shellapi.h
===================================================================
--- Daodan/MinGW/include/shellapi.h	(revision 1046)
+++ Daodan/MinGW/include/shellapi.h	(revision 1046)
@@ -0,0 +1,376 @@
+#ifndef _SHELLAPI_H
+#define _SHELLAPI_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define WINSHELLAPI DECLSPEC_IMPORT
+#define ABE_LEFT	0
+#define ABE_TOP	1
+#define ABE_RIGHT	2
+#define ABE_BOTTOM	3
+#define ABS_AUTOHIDE	1
+#define ABS_ALWAYSONTOP	2
+#define SEE_MASK_CLASSNAME         0x1
+#define SEE_MASK_CLASSKEY          0x3
+#define SEE_MASK_IDLIST            0x4
+#define SEE_MASK_INVOKEIDLIST      0xc
+#define SEE_MASK_ICON              0x10
+#define SEE_MASK_HOTKEY            0x20
+#define SEE_MASK_NOCLOSEPROCESS    0x40
+#define SEE_MASK_CONNECTNETDRV     0x80
+#define SEE_MASK_FLAG_DDEWAIT      0x100
+#define SEE_MASK_DOENVSUBST        0x200
+#define SEE_MASK_FLAG_NO_UI        0x400
+#define SEE_MASK_NO_CONSOLE        0x8000
+#define SEE_MASK_UNICODE           0x10000
+#define SEE_MASK_ASYNCOK           0x100000
+#define SEE_MASK_HMONITOR          0x200000
+#if (_WIN32_IE >= 0x0600)
+#define SEE_MASK_NOZONECHECKS      0x800000
+#define SEE_MASK_FLAG_LOG_USAGE    0x4000000
+#endif
+#define ABM_NEW	0
+#define ABM_REMOVE	1
+#define ABM_QUERYPOS	2
+#define ABM_SETPOS	3
+#define ABM_GETSTATE	4
+#define ABM_GETTASKBARPOS	5
+#define ABM_ACTIVATE	6
+#define ABM_GETAUTOHIDEBAR	7
+#define ABM_SETAUTOHIDEBAR	8
+#define ABM_WINDOWPOSCHANGED	9
+#define ABN_STATECHANGE		0
+#define ABN_POSCHANGED		1
+#define ABN_FULLSCREENAPP	2
+#define ABN_WINDOWARRANGE	3
+#define NIM_ADD	0
+#define NIM_MODIFY	1
+#define NIM_DELETE	2
+#if (_WIN32_IE >= 0x0500)
+#define NOTIFYICON_VERSION 3
+#if (_WIN32_WINNT >= 0x600)
+#define NOTIFYICON_VERSION_4  4
+#endif
+#define NIM_SETFOCUS	3
+#define NIM_SETVERSION	4
+#define NIN_POPUPOPEN WM_USER+6
+#define NIN_POPUPCLOSE WM_USER+7
+#endif
+#define NIF_MESSAGE	0x00000001
+#define NIF_ICON	0x00000002
+#define NIF_TIP		0x00000004
+#define NIF_STATE	0x00000008
+#if (_WIN32_IE >= 0x0500)
+#define NIF_INFO	0x00000010
+#endif
+#if (_WIN32_IE >= 0x0600)
+#define NIF_GUID	0x00000020
+#endif
+#if (_WIN32_IE >= 0x0500)
+#define NIIF_NONE	0x00000000
+#define NIIF_INFO	0x00000001
+#define NIIF_WARNING	0x00000002
+#define NIIF_ERROR	0x00000003
+#endif
+#if (_WIN32_IE >= 0x0600)
+#define NIIF_ICON_MASK	0x0000000F
+#define NIIF_NOSOUND	0x00000010
+#endif
+#if (_WIN32_IE >= 0x0500)
+#define NIS_HIDDEN	0x00000001
+#define NIS_SHAREDICON	0x00000002
+#endif
+#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 FO_MOVE	1
+#define FO_COPY	2
+#define FO_DELETE	3
+#define FO_RENAME	4
+#define FOF_MULTIDESTFILES	1
+#define FOF_CONFIRMMOUSE	2
+#define FOF_SILENT	4
+#define FOF_RENAMEONCOLLISION	8
+#define FOF_NOCONFIRMATION	16
+#define FOF_WANTMAPPINGHANDLE	32
+#define FOF_ALLOWUNDO	64
+#define FOF_FILESONLY	128
+#define FOF_SIMPLEPROGRESS	256
+#define FOF_NOCONFIRMMKDIR	512
+#define FOF_NOERRORUI	1024
+#define FOF_NOCOPYSECURITYATTRIBS	2048
+#define PO_DELETE 19
+#define PO_RENAME 20
+#define PO_PORTCHANGE 32
+#define PO_REN_PORT 52
+#define SHGFI_ICON	256
+#define SHGFI_DISPLAYNAME	512
+#define SHGFI_TYPENAME	1024
+#define SHGFI_ATTRIBUTES	2048
+#define SHGFI_ICONLOCATION	4096
+#define SHGFI_EXETYPE 8192
+#define SHGFI_SYSICONINDEX 16384
+#define SHGFI_LINKOVERLAY 32768
+#define SHGFI_SELECTED 65536
+#define SHGFI_ATTR_SPECIFIED 131072
+#define SHGFI_LARGEICON	0
+#define SHGFI_SMALLICON	1
+#define SHGFI_OPENICON	2
+#define SHGFI_SHELLICONSIZE	4
+#define SHGFI_PIDL	8
+#define SHGFI_USEFILEATTRIBUTES	16
+#define SHERB_NOCONFIRMATION 1
+#define SHERB_NOPROGRESSUI 2
+#define SHERB_NOSOUND 4
+#ifdef UNICODE
+#define NOTIFYICONDATA_V2_SIZE 936
+#define NOTIFYICONDATA_V1_SIZE 152
+#else
+#define NOTIFYICONDATA_V2_SIZE 488
+#define NOTIFYICONDATA_V1_SIZE 88
+#endif
+
+typedef WORD FILEOP_FLAGS;
+typedef WORD PRINTEROP_FLAGS;
+#include <pshpack2.h>
+typedef struct _AppBarData {
+	DWORD	cbSize;
+	HWND	hWnd;
+	UINT	uCallbackMessage;
+	UINT	uEdge;
+	RECT	rc;
+	LPARAM lParam;
+} APPBARDATA,*PAPPBARDATA;
+DECLARE_HANDLE(HDROP);
+
+typedef struct _NOTIFYICONDATAA {
+  DWORD cbSize;
+  HWND hWnd;
+  UINT uID;
+  UINT uFlags;
+  UINT uCallbackMessage;
+  HICON hIcon;
+#if _WIN32_IE >= 0x0500
+  CHAR szTip[128];
+  DWORD dwState;
+  DWORD dwStateMask;
+  CHAR szInfo[256];
+  _ANONYMOUS_UNION union {
+    UINT uTimeout;
+    UINT uVersion;
+  } DUMMYUNIONNAME;
+  CHAR szInfoTitle[64];
+  DWORD dwInfoFlags;
+#else
+  CHAR szTip[64];
+#endif
+#if _WIN32_IE >= 0x600
+  GUID guidItem;
+#endif
+#if _WIN32_WINNT >= 0x600
+  HICON hBalloonIcon;
+#endif
+} NOTIFYICONDATAA,*PNOTIFYICONDATAA;
+
+typedef struct _NOTIFYICONDATAW {
+  DWORD cbSize;
+  HWND hWnd;
+  UINT uID;
+  UINT uFlags;
+  UINT uCallbackMessage;
+  HICON hIcon;
+#if _WIN32_IE >= 0x0500
+  WCHAR szTip[128];
+  DWORD dwState;
+  DWORD dwStateMask;
+  WCHAR szInfo[256];
+  _ANONYMOUS_UNION union {
+    UINT uTimeout;
+    UINT uVersion;
+  } DUMMYUNIONNAME;
+  WCHAR szInfoTitle[64];
+  DWORD dwInfoFlags;
+#else
+  WCHAR szTip[64];
+#endif
+#if _WIN32_IE >= 0x600
+  GUID guidItem;
+#endif
+#if _WIN32_WINNT >= 0x600
+  HICON hBalloonIcon;
+#endif
+} NOTIFYICONDATAW,*PNOTIFYICONDATAW;
+
+typedef struct _SHELLEXECUTEINFOA {
+	DWORD cbSize;
+	ULONG fMask;
+	HWND hwnd;
+	LPCSTR lpVerb;
+	LPCSTR lpFile;
+	LPCSTR lpParameters;
+	LPCSTR lpDirectory;
+	int nShow;
+	HINSTANCE hInstApp;
+	PVOID lpIDList;
+	LPCSTR lpClass;
+	HKEY hkeyClass;
+	DWORD dwHotKey;
+	HANDLE hIcon;
+	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;
+	PVOID lpIDList;
+	LPCWSTR lpClass;
+	HKEY hkeyClass;
+	DWORD dwHotKey;
+	HANDLE hIcon;
+	HANDLE hProcess;
+} SHELLEXECUTEINFOW,*LPSHELLEXECUTEINFOW;
+typedef struct _SHFILEOPSTRUCTA {
+	HWND hwnd;
+	UINT wFunc;
+	LPCSTR pFrom;
+	LPCSTR pTo;
+	FILEOP_FLAGS fFlags;
+	BOOL fAnyOperationsAborted;
+	PVOID hNameMappings;
+	LPCSTR lpszProgressTitle;
+} SHFILEOPSTRUCTA,*LPSHFILEOPSTRUCTA;
+typedef struct _SHFILEOPSTRUCTW {
+	HWND hwnd;
+	UINT wFunc;
+	LPCWSTR pFrom;
+	LPCWSTR pTo;
+	FILEOP_FLAGS fFlags;
+	BOOL fAnyOperationsAborted;
+	PVOID hNameMappings;
+	LPCWSTR lpszProgressTitle;
+} SHFILEOPSTRUCTW,*LPSHFILEOPSTRUCTW;
+typedef struct _SHFILEINFOA {
+	HICON hIcon;
+	int iIcon;
+	DWORD dwAttributes;
+	CHAR szDisplayName[MAX_PATH];
+	CHAR szTypeName[80];
+} SHFILEINFOA;
+typedef struct _SHFILEINFOW {
+	HICON hIcon;
+	int iIcon;
+	DWORD dwAttributes;
+	WCHAR szDisplayName[MAX_PATH];
+	WCHAR szTypeName[80];
+} SHFILEINFOW;
+typedef struct _SHQUERYRBINFO {
+	DWORD   cbSize;
+	__int64 i64Size;
+	__int64 i64NumItems;
+} SHQUERYRBINFO, *LPSHQUERYRBINFO;
+#include <poppack.h>
+
+LPWSTR * WINAPI CommandLineToArgvW(LPCWSTR,int*);
+void WINAPI DragAcceptFiles(HWND,BOOL);
+void WINAPI DragFinish(HDROP);
+UINT WINAPI DragQueryFileA(HDROP,UINT,LPSTR,UINT);
+UINT WINAPI DragQueryFileW(HDROP,UINT,LPWSTR,UINT);
+BOOL WINAPI DragQueryPoint(HDROP,LPPOINT);
+HICON WINAPI DuplicateIcon(HINSTANCE,HICON);
+HICON WINAPI ExtractAssociatedIconA(HINSTANCE,LPCSTR,PWORD);
+HICON WINAPI ExtractAssociatedIconW(HINSTANCE,LPCWSTR,PWORD);
+HICON WINAPI ExtractIconA(HINSTANCE,LPCSTR,UINT);
+HICON WINAPI ExtractIconW(HINSTANCE,LPCWSTR,UINT);
+UINT WINAPI ExtractIconExA(LPCSTR,int,HICON*,HICON*,UINT);
+UINT WINAPI ExtractIconExW(LPCWSTR,int,HICON*,HICON*,UINT);
+HINSTANCE WINAPI FindExecutableA(LPCSTR,LPCSTR,LPSTR);
+HINSTANCE WINAPI FindExecutableW(LPCWSTR,LPCWSTR,LPWSTR);
+UINT WINAPI SHAppBarMessage(DWORD,PAPPBARDATA);
+BOOL WINAPI Shell_NotifyIconA(DWORD,PNOTIFYICONDATAA);
+BOOL WINAPI Shell_NotifyIconW(DWORD,PNOTIFYICONDATAW);
+int WINAPI ShellAboutA(HWND,LPCSTR,LPCSTR,HICON);
+int WINAPI ShellAboutW(HWND,LPCWSTR,LPCWSTR,HICON);
+HINSTANCE WINAPI ShellExecuteA(HWND,LPCSTR,LPCSTR,LPCSTR,LPCSTR,INT);
+HINSTANCE WINAPI ShellExecuteW(HWND,LPCWSTR,LPCWSTR,LPCWSTR,LPCWSTR,INT);
+BOOL WINAPI ShellExecuteExA(LPSHELLEXECUTEINFOA);
+BOOL WINAPI ShellExecuteExW(LPSHELLEXECUTEINFOW);
+int WINAPI SHFileOperationA(LPSHFILEOPSTRUCTA);
+int WINAPI SHFileOperationW(LPSHFILEOPSTRUCTW);
+void WINAPI SHFreeNameMappings(HANDLE);
+DWORD WINAPI SHGetFileInfoA(LPCSTR,DWORD,SHFILEINFOA*,UINT,UINT);
+DWORD WINAPI SHGetFileInfoW(LPCWSTR,DWORD,SHFILEINFOW*,UINT,UINT);
+HRESULT WINAPI SHQueryRecycleBinA(LPCSTR, LPSHQUERYRBINFO);
+HRESULT WINAPI SHQueryRecycleBinW(LPCWSTR, LPSHQUERYRBINFO);
+HRESULT WINAPI SHEmptyRecycleBinA(HWND,LPCSTR,DWORD);
+HRESULT WINAPI SHEmptyRecycleBinW(HWND,LPCWSTR,DWORD);
+
+#if (_WIN32_WINNT >= 0x600)
+#define SHIL_LARGE 0x0
+#define SHIL_SMALL 0x1
+#define SHIL_EXTRALARGE 0x2
+#define SHIL_SYSSMALL 0x3
+#define SHIL_JUMBO 0x4
+#define SHIL_LAST SHIL_JUMBO
+HRESULT WINAPI SHGetImageList(int,REFIID,void**);
+#endif
+
+#ifdef UNICODE
+typedef NOTIFYICONDATAW NOTIFYICONDATA,*PNOTIFYICONDATA;
+typedef SHELLEXECUTEINFOW SHELLEXECUTEINFO,*LPSHELLEXECUTEINFO;
+typedef SHFILEOPSTRUCTW SHFILEOPSTRUCT,*LPSHFILEOPSTRUCT;
+typedef SHFILEINFOW SHFILEINFO;
+#define DragQueryFile DragQueryFileW
+#define ExtractAssociatedIcon ExtractAssociatedIconW
+#define ExtractIcon ExtractIconW
+#define ExtractIconEx ExtractIconExW
+#define FindExecutable FindExecutableW
+#define Shell_NotifyIcon Shell_NotifyIconW
+#define ShellAbout ShellAboutW
+#define ShellExecute ShellExecuteW
+#define ShellExecuteEx ShellExecuteExW
+#define SHFileOperation SHFileOperationW
+#define SHGetFileInfo SHGetFileInfoW
+#define SHQueryRecycleBin SHQueryRecycleBinW
+#define SHEmptyRecycleBin SHEmptyRecycleBinW
+
+#else
+typedef NOTIFYICONDATAA NOTIFYICONDATA,*PNOTIFYICONDATA;
+typedef SHELLEXECUTEINFOA SHELLEXECUTEINFO,*LPSHELLEXECUTEINFO;
+typedef SHFILEOPSTRUCTA SHFILEOPSTRUCT,*LPSHFILEOPSTRUCT;
+typedef SHFILEINFOA SHFILEINFO;
+#define DragQueryFile DragQueryFileA
+#define ExtractAssociatedIcon ExtractAssociatedIconA
+#define ExtractIcon ExtractIconA
+#define ExtractIconEx ExtractIconExA
+#define FindExecutable FindExecutableA
+#define Shell_NotifyIcon Shell_NotifyIconA
+#define ShellAbout ShellAboutA
+#define ShellExecute ShellExecuteA
+#define ShellExecuteEx ShellExecuteExA
+#define SHFileOperation SHFileOperationA
+#define SHGetFileInfo SHGetFileInfoA
+#define SHQueryRecycleBin SHQueryRecycleBinA
+#define SHEmptyRecycleBin SHEmptyRecycleBinA
+#endif
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/shldisp.h
===================================================================
--- Daodan/MinGW/include/shldisp.h	(revision 1046)
+++ Daodan/MinGW/include/shldisp.h	(revision 1046)
@@ -0,0 +1,74 @@
+#ifndef _SHLDISP_H
+#define _SHLDISP_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef enum tagAUTOCOMPLETEOPTIONS {
+    ACO_NONE = 0x00,
+    ACO_AUTOSUGGEST = 0x01,
+    ACO_AUTOAPPEND = 0x02,
+    ACO_SEARCH = 0x04,
+    ACO_FILTERPREFIXES = 0x08,
+    ACO_USETAB = 0x10,
+    ACO_UPDOWNKEYDROPSLIST = 0x20,
+    ACO_RTLREADING = 0x40,
+#if (_WIN32_WINNT >= 0x0600)
+    ACO_WORD_FILTER = 0x80,
+    ACO_NOPREFIXFILTERING = 0x100
+#endif
+} AUTOCOMPLETEOPTIONS;
+
+#define INTERFACE IAutoComplete
+DECLARE_INTERFACE_(IAutoComplete, IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(Init)(THIS_ HWND,IUnknown*,LPCOLESTR,LPCOLESTR) PURE;
+	STDMETHOD(Enable)(THIS_ BOOL) PURE;
+};
+#undef INTERFACE
+typedef IAutoComplete *LPAUTOCOMPLETE;
+
+#ifdef COBJMACROS
+#define IAutoComplete_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
+#define IAutoComplete_AddRef(T) (T)->lpVtbl->AddRef(T)
+#define IAutoComplete_Release(T) (T)->lpVtbl->Release(T)
+#define IAutoComplete_Init(T,a,b,c,d) (T)->lpVtbl->Init(T,a,b,c,d)
+#define IAutoComplete_Enable(T,a) (T)->lpVtbl->Enable(T,a)
+#endif
+
+#define INTERFACE IAutoComplete2
+DECLARE_INTERFACE_(IAutoComplete2, IAutoComplete)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(Init)(THIS_ HWND,IUnknown*,LPCOLESTR,LPCOLESTR) PURE;
+	STDMETHOD(Enable)(THIS_ BOOL) PURE;
+	STDMETHOD(SetOptions)(THIS_ DWORD) PURE;
+	STDMETHOD(GetOptions)(THIS_ DWORD*) PURE;
+};
+#undef INTERFACE
+typedef IAutoComplete2 *LPAUTOCOMPLETE2;
+
+#ifdef COBJMACROS
+#define IAutoComplete2_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
+#define IAutoComplete2_AddRef(T) (T)->lpVtbl->AddRef(T)
+#define IAutoComplete2_Release(T) (T)->lpVtbl->Release(T)
+#define IAutoComplete2_Init(T,a,b,c,d) (T)->lpVtbl->Init(T,a,b,c,d)
+#define IAutoComplete2_Enable(T,a) (T)->lpVtbl->Enable(T,a)
+#define IAutoComplete2_SetOptions(T,a) (T)->lpVtbl->Enable(T,a)
+#define IAutoComplete2_GetOptions(T,a) (T)->lpVtbl->Enable(T,a)
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SHLDISP_H */
Index: Daodan/MinGW/include/shlguid.h
===================================================================
--- Daodan/MinGW/include/shlguid.h	(revision 1046)
+++ Daodan/MinGW/include/shlguid.h	(revision 1046)
@@ -0,0 +1,105 @@
+#ifndef _SHLGUID_H
+#define _SHLGUID_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define DEFINE_SHLGUID(n,l,w1,w2) DEFINE_GUID(n,l,w1,w2,0xC0,0,0,0,0,0,0,0x46)
+#define SID_SShellBrowser IID_IShellBrowser
+extern const GUID CLSID_ShellDesktop;
+extern const GUID CLSID_ShellLink;
+extern const GUID FMTID_Intshcut;
+extern const GUID FMTID_InternetSite;
+extern const GUID CGID_Explorer;
+extern const GUID CGID_ShellDocView;
+extern const GUID CGID_ShellServiceObject;
+extern const GUID IID_INewShortcutHookA;
+extern const GUID IID_IShellBrowser;
+extern const GUID IID_IShellView;
+extern const GUID IID_IContextMenu;
+extern const GUID IID_IColumnProvider;
+extern const GUID IID_IQueryInfo;
+extern const GUID IID_IShellIcon;
+extern const GUID IID_IShellIconOverlayIdentifier;
+extern const GUID IID_IShellFolder;
+extern const GUID IID_IShellExtInit;
+extern const GUID IID_IShellPropSheetExt;
+extern const GUID IID_IPersistFolder;
+extern const GUID IID_IExtractIconA;
+extern const GUID IID_IShellLinkA;
+extern const GUID IID_IShellCopyHookA;
+extern const GUID IID_IFileViewerA;
+extern const GUID IID_ICommDlgBrowser;
+extern const GUID IID_IEnumIDList;
+extern const GUID IID_IFileViewerSite;
+extern const GUID IID_IContextMenu2;
+extern const GUID IID_IContextMenu3;
+extern const GUID IID_IShellExecuteHookA;
+extern const GUID IID_IPropSheetPage;
+extern const GUID IID_INewShortcutHookW;
+extern const GUID IID_IFileViewerW;
+extern const GUID IID_IShellLinkW;
+extern const GUID IID_IExtractIconW;
+extern const GUID IID_IShellExecuteHookW;
+extern const GUID IID_IShellCopyHookW;
+extern const GUID IID_IShellView2;
+extern const GUID LIBID_SHDocVw;
+extern const GUID IID_IShellExplorer;
+extern const GUID DIID_DShellExplorerEvents;
+extern const GUID CLSID_ShellExplorer;
+extern const GUID IID_ISHItemOC;
+extern const GUID DIID_DSHItemOCEvents;
+extern const GUID CLSID_SHItemOC;
+extern const GUID IID_DHyperLink;
+extern const GUID IID_DIExplorer;
+extern const GUID DIID_DExplorerEvents;
+extern const GUID CLSID_InternetExplorer;
+extern const GUID CLSID_StdHyperLink;
+extern const GUID CLSID_FileTypes;
+extern const GUID CLSID_InternetShortcut;
+extern const GUID IID_IUniformResourceLocator;
+extern const GUID CLSID_DragDropHelper;
+extern const GUID IID_IDropTargetHelper;
+extern const GUID IID_IDragSourceHelper;
+extern const GUID CLSID_AutoComplete;
+extern const GUID IID_IAutoComplete;
+extern const GUID IID_IAutoComplete2;
+extern const GUID CLSID_ACLMulti;
+extern const GUID IID_IObjMgr;
+extern const GUID CLSID_ACListISF;
+extern const GUID IID_IACList;
+#if (_WIN32_IE >= 0x400 || _WIN32_WINNT >= 0x500)
+extern const GUID IID_IPersistFolder2;
+#endif
+#if (_WIN32_WINNT >= 0x500)
+extern const GUID IID_IPersistFolder3;
+extern const GUID IID_IShellFolder2;
+extern const GUID IID_IFileSystemBindData;
+#endif
+#if (_WIN32_WINNT >= 0x501)
+extern const GUID IID_IFolderView;
+#endif
+#ifdef UNICODE
+#define IID_IFileViewer	IID_IFileViewerW
+#define IID_IShellLink	IID_IShellLinkW
+#define IID_IExtractIcon	IID_IExtractIconW
+#define IID_IShellCopyHook	IID_IShellCopyHookW
+#define IID_IShellExecuteHook	IID_IShellExecuteHookW
+#define IID_INewShortcutHook	IID_INewShortcutHookW
+#else
+#define IID_IFileViewer	IID_IFileViewerA
+#define IID_IShellLink	IID_IShellLinkA
+#define IID_IExtractIcon	IID_IExtractIconA
+#define IID_IShellCopyHook	IID_IShellCopyHookA
+#define IID_IShellExecuteHook	IID_IShellExecuteHookA
+#define IID_INewShortcutHook	IID_INewShortcutHookA
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
Index: Daodan/MinGW/include/shlobj.h
===================================================================
--- Daodan/MinGW/include/shlobj.h	(revision 1046)
+++ Daodan/MinGW/include/shlobj.h	(revision 1046)
@@ -0,0 +1,1584 @@
+#ifndef _SHLOBJ_H
+#define _SHLOBJ_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <ole2.h>
+#include <shlguid.h>
+#include <shellapi.h>
+#pragma pack(push,1)
+#include <commctrl.h>
+
+#define BIF_RETURNONLYFSDIRS 1
+#define BIF_DONTGOBELOWDOMAIN 2
+#define BIF_STATUSTEXT 4
+#define BIF_RETURNFSANCESTORS 8
+#define BIF_EDITBOX 16
+#define BIF_VALIDATE 32
+#define BIF_NEWDIALOGSTYLE 64
+#define BIF_BROWSEINCLUDEURLS 128
+#define BIF_USENEWUI ( BIF_EDITBOX | BIF_NEWDIALOGSTYLE )
+#define BIF_BROWSEFORCOMPUTER 0x1000
+#define BIF_BROWSEFORPRINTER 0x2000
+#define BIF_BROWSEINCLUDEFILES 0x4000
+#define BIF_SHAREABLE 0x8000
+#define BFFM_INITIALIZED 1
+#define BFFM_SELCHANGED 2
+#define BFFM_VALIDATEFAILEDA 3
+#define BFFM_VALIDATEFAILEDW 4
+#define BFFM_SETSTATUSTEXTA (WM_USER + 100)
+#define BFFM_SETSTATUSTEXTW (WM_USER + 104)
+#define BFFM_ENABLEOK (WM_USER + 101)
+#define BFFM_SETSELECTIONA (WM_USER + 102)
+#define BFFM_SETSELECTIONW (WM_USER + 103)
+#define BFFM_SETOKTEXT (WM_USER + 105)
+#define BFFM_SETEXPANDED (WM_USER + 106)
+#ifdef UNICODE
+#define BFFM_SETSTATUSTEXT  BFFM_SETSTATUSTEXTW
+#define BFFM_SETSELECTION   BFFM_SETSELECTIONW
+#define BFFM_VALIDATEFAILED BFFM_VALIDATEFAILEDW
+#else
+#define BFFM_SETSTATUSTEXT  BFFM_SETSTATUSTEXTA
+#define BFFM_SETSELECTION   BFFM_SETSELECTIONA
+#define BFFM_VALIDATEFAILED BFFM_VALIDATEFAILEDA
+#endif
+#define DVASPECT_SHORTNAME 2
+typedef enum tagSHARD {
+    SHARD_PIDL = 0x00000001,
+    SHARD_PATHA = 0x00000002,
+    SHARD_PATHW = 0x00000003,
+    SHARD_APPIDINFO = 0x00000004,
+    SHARD_APPIDINFOIDLIST = 0x00000005,
+    SHARD_LINK = 0x00000006,
+    SHARD_APPIDINFOLINK = 0x00000007,
+    SHARD_SHELLITEM = 0x00000008
+} SHARD;
+#ifdef UNICODE
+#define SHARD_PATH SHARD_PATHW
+#else
+#define SHARD_PATH SHARD_PATHA
+#endif
+#define SHCNE_RENAMEITEM	1
+#define SHCNE_CREATE	2
+#define SHCNE_DELETE	4
+#define SHCNE_MKDIR	8
+#define SHCNE_RMDIR	16
+#define SHCNE_MEDIAINSERTED	32
+#define SHCNE_MEDIAREMOVED	64
+#define SHCNE_DRIVEREMOVED	128
+#define SHCNE_DRIVEADD	256
+#define SHCNE_NETSHARE	512
+#define SHCNE_NETUNSHARE	1024
+#define SHCNE_ATTRIBUTES	2048
+#define SHCNE_UPDATEDIR	4096
+#define SHCNE_UPDATEITEM	8192
+#define SHCNE_SERVERDISCONNECT	16384
+#define SHCNE_UPDATEIMAGE	32768
+#define SHCNE_DRIVEADDGUI	65536
+#define SHCNE_RENAMEFOLDER	0x20000
+#define SHCNE_FREESPACE	0x40000
+#define SHCNE_ASSOCCHANGED	0x8000000
+#define SHCNE_DISKEVENTS	0x2381F
+#define SHCNE_GLOBALEVENTS	0xC0581E0
+#define SHCNE_ALLEVENTS	0x7FFFFFFF
+#define SHCNE_INTERRUPT	0x80000000
+#define SHCNF_IDLIST	0
+#define SHCNF_PATHA	1
+#define SHCNF_PRINTERA	2
+#define SHCNF_DWORD	3
+#define SHCNF_PATHW	5
+#define SHCNF_PRINTERW	6
+#define SHCNF_TYPE	0xFF
+#define SHCNF_FLUSH	0x1000
+#define SHCNF_FLUSHNOWAIT	0x2000
+#ifdef UNICODE
+#define SHCNF_PATH      SHCNF_PATHW
+#define SHCNF_PRINTER   SHCNF_PRINTERW
+#else
+#define SHCNF_PATH      SHCNF_PATHA
+#define SHCNF_PRINTER   SHCNF_PRINTERA
+#endif
+#define SFGAO_CANCOPY	DROPEFFECT_COPY
+#define SFGAO_CANMOVE	DROPEFFECT_MOVE
+#define SFGAO_CANLINK	DROPEFFECT_LINK
+#define SFGAO_CANRENAME		0x00000010L
+#define SFGAO_CANDELETE		0x00000020L
+#define SFGAO_HASPROPSHEET	0x00000040L
+#define SFGAO_DROPTARGET	0x00000100L
+#define SFGAO_CAPABILITYMASK	0x00000177L
+#define SFGAO_ISSLOW            0x00004000L
+#define SFGAO_GHOSTED		0x00008000L
+#define SFGAO_LINK		0x00010000L
+#define SFGAO_SHARE		0x00020000L
+#define SFGAO_READONLY		0x00040000L
+#define SFGAO_HIDDEN		0x00080000L
+#define SFGAO_DISPLAYATTRMASK   (SFGAO_ISSLOW \
+				 | SFGAO_GHOSTED \
+				 | SFGAO_LINK \
+				 | SFGAO_SHARE \
+				 | SFGAO_READONLY \
+				 | SFGAO_HIDDEN)
+#define SFGAO_FILESYSANCESTOR	0x10000000L
+#define SFGAO_FOLDER		0x20000000L
+#define SFGAO_FILESYSTEM	0x40000000L
+#define SFGAO_HASSUBFOLDER	0x80000000L
+#define SFGAO_CONTENTSMASK	0x80000000L
+#define SFGAO_VALIDATE		0x01000000L
+#define SFGAO_REMOVABLE		0x02000000L
+#define SFGAO_COMPRESSED	0x04000000L
+#define STRRET_WSTR	0
+#define STRRET_OFFSET	1
+#define STRRET_CSTR	2
+#define SHGDFIL_FINDDATA	1
+#define SHGDFIL_NETRESOURCE	2
+#define SHGDFIL_DESCRIPTIONID	3
+#define SHDID_ROOT_REGITEM	1
+#define SHDID_FS_FILE	2
+#define SHDID_FS_DIRECTORY	3
+#define SHDID_FS_OTHER	4
+#define SHDID_COMPUTER_DRIVE35	5
+#define SHDID_COMPUTER_DRIVE525	6
+#define SHDID_COMPUTER_REMOVABLE	7
+#define SHDID_COMPUTER_FIXED	8
+#define SHDID_COMPUTER_NETDRIVE	9
+#define SHDID_COMPUTER_CDROM	10
+#define SHDID_COMPUTER_RAMDISK	11
+#define SHDID_COMPUTER_OTHER	12
+#define SHDID_NET_DOMAIN	13
+#define SHDID_NET_SERVER	14
+#define SHDID_NET_SHARE	15
+#define SHDID_NET_RESTOFNET	16
+#define SHDID_NET_OTHER	17
+#ifndef REGSTR_PATH_EXPLORER
+#define REGSTR_PATH_EXPLORER	TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer")
+#endif
+#define REGSTR_PATH_SPECIAL_FOLDERS	REGSTR_PATH_EXPLORER TEXT("\\Shell Folders")
+#define CSIDL_DESKTOP	0
+#define CSIDL_INTERNET  1
+#define CSIDL_PROGRAMS	2
+#define CSIDL_CONTROLS	3
+#define CSIDL_PRINTERS	4
+#define CSIDL_PERSONAL	5
+#define CSIDL_FAVORITES	6
+#define CSIDL_STARTUP	7
+#define CSIDL_RECENT	8
+#define CSIDL_SENDTO	9
+#define CSIDL_BITBUCKET	10
+#define CSIDL_STARTMENU	11
+#define CSIDL_MYMUSIC	13
+#define CSIDL_MYVIDEO	14
+#define CSIDL_DESKTOPDIRECTORY	16
+#define CSIDL_DRIVES	17
+#define CSIDL_NETWORK	18
+#define CSIDL_NETHOOD	19
+#define CSIDL_FONTS	20
+#define CSIDL_TEMPLATES	21
+#define CSIDL_COMMON_STARTMENU	22
+#define CSIDL_COMMON_PROGRAMS	23
+#define CSIDL_COMMON_STARTUP	24
+#define CSIDL_COMMON_DESKTOPDIRECTORY	25
+#define CSIDL_APPDATA   26
+#define CSIDL_PRINTHOOD 27
+#define CSIDL_LOCAL_APPDATA 28
+#define CSIDL_ALTSTARTUP    29
+#define CSIDL_COMMON_ALTSTARTUP	30
+#define CSIDL_COMMON_FAVORITES	31
+#define CSIDL_INTERNET_CACHE   32
+#define CSIDL_COOKIES	33
+#define CSIDL_HISTORY	34
+#define CSIDL_COMMON_APPDATA	35
+#define CSIDL_WINDOWS	36
+#define CSIDL_SYSTEM	37
+#define CSIDL_PROGRAM_FILES	38
+#define CSIDL_MYPICTURES	39
+#define CSIDL_PROFILE	40
+#define CSIDL_SYSTEMX86	41
+#define CSIDL_PROGRAM_FILESX86	42
+#define CSIDL_PROGRAM_FILES_COMMON	43
+#define CSIDL_PROGRAM_FILES_COMMONX86	44
+#define CSIDL_COMMON_TEMPLATES	45
+#define CSIDL_COMMON_DOCUMENTS	46
+#define CSIDL_COMMON_ADMINTOOLS	47
+#define CSIDL_ADMINTOOLS	48
+#define CSIDL_CONNECTIONS	49
+#define CSIDL_COMMON_MUSIC	53
+#define CSIDL_COMMON_PICTURES	54
+#define CSIDL_COMMON_VIDEO	55
+#define CSIDL_RESOURCES	56
+#define CSIDL_RESOURCES_LOCALIZED	57
+#define CSIDL_COMMON_OEM_LINKS	58
+#define CSIDL_CDBURN_AREA	59
+#define CSIDL_COMPUTERSNEARME	61
+#define CSIDL_FLAG_DONT_VERIFY	0x4000
+#define CSIDL_FLAG_CREATE	0x8000
+#define CSIDL_FLAG_MASK	0xFF00
+#define CFSTR_SHELLIDLIST	TEXT("Shell IDList Array")
+#define CFSTR_SHELLIDLISTOFFSET	TEXT("Shell Object Offsets")
+#define CFSTR_NETRESOURCES	TEXT("Net Resource")
+#define CFSTR_FILECONTENTS	TEXT("FileContents")
+#define CFSTR_FILENAMEA		TEXT("FileName")
+#define CFSTR_FILENAMEMAPA	TEXT("FileNameMap")
+#define CFSTR_FILEDESCRIPTORA	TEXT("FileGroupDescriptor")
+#define CFSTR_INETURLA		TEXT("UniformResourceLocator")
+#define CFSTR_SHELLURL		CFSTR_INETURLA
+#define CFSTR_FILENAMEW		TEXT("FileNameW")
+#define CFSTR_FILENAMEMAPW	TEXT("FileNameMapW")
+#define CFSTR_FILEDESCRIPTORW	TEXT("FileGroupDescriptorW")
+#define CFSTR_INETURLW		TEXT("UniformResourceLocatorW")
+#ifdef UNICODE
+#define CFSTR_FILENAME		CFSTR_FILENAMEW
+#define CFSTR_FILENAMEMAP	CFSTR_FILENAMEMAPW
+#define CFSTR_FILEDESCRIPTOR	CFSTR_FILEDESCRIPTORW
+#define CFSTR_INETURL		CFSTR_INETURLW
+#else
+#define CFSTR_FILENAME		CFSTR_FILENAMEA
+#define CFSTR_FILENAMEMAP	CFSTR_FILENAMEMAPA
+#define CFSTR_FILEDESCRIPTOR	CFSTR_FILEDESCRIPTORA
+#define CFSTR_INETURL		CFSTR_INETURLA
+#endif
+#define CFSTR_PRINTERGROUP	TEXT("PrinterFriendlyName")
+#define CFSTR_INDRAGLOOP	TEXT("InShellDragLoop")
+#define CFSTR_PASTESUCCEEDED	TEXT("Paste Succeeded")
+#define CFSTR_PERFORMEDDROPEFFECT	TEXT("Performed DropEffect")
+#define CFSTR_PREFERREDDROPEFFECT	TEXT("Preferred DropEffect")
+#define CMF_NORMAL	0
+#define CMF_DEFAULTONLY	1
+#define CMF_VERBSONLY	2
+#define CMF_EXPLORE	4
+#define CMF_NOVERBS	8
+#define CMF_CANRENAME	16
+#define CMF_NODEFAULT	32
+#define CMF_INCLUDESTATIC	64
+#define CMF_RESERVED	0xffff0000
+#define GCS_VERBA        0
+#define GCS_HELPTEXTA    1
+#define GCS_VALIDATEA    2
+#define GCS_VERBW        4
+#define GCS_HELPTEXTW    5
+#define GCS_VALIDATEW    6
+#define GCS_UNICODE      4
+#ifdef UNICODE
+#define GCS_VERB        GCS_VERBW
+#define GCS_HELPTEXT    GCS_HELPTEXTW
+#define GCS_VALIDATE    GCS_VALIDATEW
+#else
+#define GCS_VERB        GCS_VERBA
+#define GCS_HELPTEXT    GCS_HELPTEXTA
+#define GCS_VALIDATE    GCS_VALIDATEA
+#endif
+#define CMDSTR_NEWFOLDERA	"NewFolder"
+#define CMDSTR_VIEWLISTA	"ViewList"
+#define CMDSTR_VIEWDETAILSA	"ViewDetails"
+#define CMDSTR_NEWFOLDERW	L"NewFolder"
+#define CMDSTR_VIEWLISTW	L"ViewList"
+#define CMDSTR_VIEWDETAILSW	L"ViewDetails"
+#ifdef UNICODE
+#define CMDSTR_NEWFOLDER	CMDSTR_NEWFOLDERW
+#define CMDSTR_VIEWLIST		CMDSTR_VIEWLISTW
+#define CMDSTR_VIEWDETAILS	CMDSTR_VIEWDETAILSW
+#else
+#define CMDSTR_NEWFOLDER	CMDSTR_NEWFOLDER
+#define CMDSTR_VIEWLIST		CMDSTR_VIEWLIST
+#define CMDSTR_VIEWDETAILS	CMDSTR_VIEWDETAILS
+#endif
+#define CMIC_MASK_HOTKEY	SEE_MASK_HOTKEY
+#define CMIC_MASK_ICON	SEE_MASK_ICON
+#define CMIC_MASK_FLAG_NO_UI	SEE_MASK_FLAG_NO_UI
+#define CMIC_MASK_MODAL	0x80000000
+#define CMIC_VALID_SEE_FLAGS	SEE_VALID_CMIC_FLAGS
+#define GIL_OPENICON	1
+#define GIL_FORSHELL	2
+#define GIL_SIMULATEDOC	1
+#define GIL_PERINSTANCE	2
+#define GIL_PERCLASS	4
+#define GIL_NOTFILENAME	8
+#define GIL_DONTCACHE	16
+#define FVSIF_RECT	1
+#define FVSIF_PINNED	2
+#define FVSIF_NEWFAILED 0x8000000
+#define FVSIF_NEWFILE	0x80000000
+#define FVSIF_CANVIEWIT 0x40000000
+#define CDBOSC_SETFOCUS	0
+#define CDBOSC_KILLFOCUS	1
+#define CDBOSC_SELCHANGE	2
+#define CDBOSC_RENAME	3
+#define FCIDM_SHVIEWFIRST	0
+#define FCIDM_SHVIEWLAST	0x7fff
+#define FCIDM_BROWSERFIRST	0xa000
+#define FCIDM_BROWSERLAST	0xbf00
+#define FCIDM_GLOBALFIRST	0x8000
+#define FCIDM_GLOBALLAST	0x9fff
+#define FCIDM_MENU_FILE	FCIDM_GLOBALFIRST
+#define FCIDM_MENU_EDIT	(FCIDM_GLOBALFIRST+0x0040)
+#define FCIDM_MENU_VIEW	(FCIDM_GLOBALFIRST+0x0080)
+#define FCIDM_MENU_VIEW_SEP_OPTIONS	(FCIDM_GLOBALFIRST+0x0081)
+#define FCIDM_MENU_TOOLS	(FCIDM_GLOBALFIRST+0x00c0)
+#define FCIDM_MENU_TOOLS_SEP_GOTO	(FCIDM_GLOBALFIRST+0x00c1)
+#define FCIDM_MENU_HELP	(FCIDM_GLOBALFIRST+0x0100)
+#define FCIDM_MENU_FIND	(FCIDM_GLOBALFIRST+0x0140)
+#define FCIDM_MENU_EXPLORE	(FCIDM_GLOBALFIRST+0x0150)
+#define FCIDM_MENU_FAVORITES	(FCIDM_GLOBALFIRST+0x0170)
+#define FCIDM_TOOLBAR	FCIDM_BROWSERFIRST
+#define FCIDM_STATUS	(FCIDM_BROWSERFIRST+1)
+#define SBSP_DEFBROWSER	0
+#define SBSP_SAMEBROWSER	1
+#define SBSP_NEWBROWSER	2
+#define SBSP_DEFMODE	0
+#define SBSP_OPENMODE	16
+#define SBSP_EXPLOREMODE	32
+#define SBSP_ABSOLUTE	0
+#define SBSP_RELATIVE	0x1000
+#define SBSP_PARENT	0x2000
+#define SBSP_INITIATEDBYHLINKFRAME	0x80000000
+#define SBSP_REDIRECT	0x40000000
+#define FCW_STATUS	1
+#define FCW_TOOLBAR	2
+#define FCW_TREE	3
+#define FCT_MERGE	1
+#define FCT_CONFIGABLE	2
+#define FCT_ADDTOEND	4
+#define SVSI_DESELECT	0
+#define SVSI_SELECT	1
+#define SVSI_EDIT	3
+#define SVSI_DESELECTOTHERS	4
+#define SVSI_ENSUREVISIBLE	8
+#define SVSI_FOCUSED	16
+#define SVGIO_BACKGROUND	0
+#define SVGIO_SELECTION	1
+#define SVGIO_ALLVIEW	2
+#define SV2GV_CURRENTVIEW ((UINT)-1)
+#define SV2GV_DEFAULTVIEW ((UINT)-2)
+
+typedef ULONG SFGAOF;
+typedef DWORD SHGDNF;
+
+typedef struct _IDA {
+	UINT cidl;
+	UINT aoffset[1];
+} CIDA,*LPIDA;
+typedef struct _SHITEMID {
+	USHORT	cb;
+	BYTE	abID[1];
+} SHITEMID, * LPSHITEMID;
+typedef const SHITEMID *LPCSHITEMID;
+typedef struct _ITEMIDLIST {
+	SHITEMID mkid;
+} ITEMIDLIST,*LPITEMIDLIST;
+typedef const ITEMIDLIST *LPCITEMIDLIST;
+typedef int (CALLBACK* BFFCALLBACK)(HWND,UINT,LPARAM,LPARAM);
+typedef struct _browseinfoA {
+	HWND	hwndOwner;
+	LPCITEMIDLIST	pidlRoot;
+	LPSTR	pszDisplayName;
+	LPCSTR	lpszTitle;
+	UINT	ulFlags;
+	BFFCALLBACK	lpfn;
+	LPARAM	lParam;
+	int	iImage;
+} BROWSEINFOA,*PBROWSEINFOA,*LPBROWSEINFOA;
+typedef struct _browseinfoW {
+	HWND	hwndOwner;
+	LPCITEMIDLIST	pidlRoot;
+	LPWSTR	pszDisplayName;
+	LPCWSTR	lpszTitle;
+	UINT	ulFlags;
+	BFFCALLBACK	lpfn;
+	LPARAM	lParam;
+	int	iImage;
+} BROWSEINFOW,*PBROWSEINFOW,*LPBROWSEINFOW;
+typedef struct _CMInvokeCommandInfo {
+	DWORD cbSize;
+	DWORD fMask;
+	HWND hwnd;
+	LPCSTR lpVerb;
+	LPCSTR lpParameters;
+	LPCSTR lpDirectory;
+	int nShow;
+	DWORD dwHotKey;
+	HANDLE hIcon;
+} CMINVOKECOMMANDINFO,*LPCMINVOKECOMMANDINFO;
+typedef struct _DROPFILES {
+	DWORD pFiles;
+	POINT pt;
+	BOOL fNC;
+	BOOL fWide;
+} DROPFILES,*LPDROPFILES;
+typedef enum tagSHGDN {
+	SHGDN_NORMAL=0,
+	SHGDN_INFOLDER,
+	SHGDN_FOREDITING=0x1000,
+	SHGDN_INCLUDE_NONFILESYS=0x2000,
+	SHGDN_FORADDRESSBAR=0x4000,
+	SHGDN_FORPARSING=0x8000
+} SHGNO;
+typedef enum tagSHCONTF {
+	SHCONTF_FOLDERS = 32,
+	SHCONTF_NONFOLDERS = 64,
+	SHCONTF_INCLUDEHIDDEN = 128,
+	SHCONTF_INIT_ON_FIRST_NEXT = 256,
+	SHCONTF_NETPRINTERSRCH = 512,
+	SHCONTF_SHAREABLE = 1024,
+	SHCONTF_STORAGE = 2048
+} SHCONTF;
+typedef struct _STRRET {
+	UINT uType;
+	_ANONYMOUS_UNION union {
+		LPWSTR pOleStr;
+		UINT uOffset;
+		char cStr[MAX_PATH];
+	} DUMMYUNIONNAME;
+} STRRET,*LPSTRRET;
+typedef enum {
+	FD_CLSID=1,FD_SIZEPOINT=2,FD_ATTRIBUTES=4,FD_CREATETIME=8,FD_ACCESSTIME=16,
+	FD_WRITESTIME=32,FD_FILESIZE=64,FD_LINKUI=0x8000
+} FD_FLAGS;
+typedef struct _FILEDESCRIPTORA {
+	DWORD dwFlags;
+	CLSID clsid;
+	SIZEL sizel;
+	POINTL pointl;
+	DWORD dwFileAttributes;
+	FILETIME ftCreationTime;
+	FILETIME ftLastAccessTime;
+	FILETIME ftLastWriteTime;
+	DWORD nFileSizeHigh;
+	DWORD nFileSizeLow;
+	CHAR cFileName[MAX_PATH];
+} FILEDESCRIPTORA,*LPFILEDESCRIPTORA;
+typedef struct _FILEDESCRIPTORW {
+	DWORD dwFlags;
+	CLSID clsid;
+	SIZEL sizel;
+	POINTL pointl;
+	DWORD dwFileAttributes;
+	FILETIME ftCreationTime;
+	FILETIME ftLastAccessTime;
+	FILETIME ftLastWriteTime;
+	DWORD nFileSizeHigh;
+	DWORD nFileSizeLow;
+	WCHAR cFileName[MAX_PATH];
+} FILEDESCRIPTORW,*LPFILEDESCRIPTORW;
+typedef struct _FILEGROUPDESCRIPTORA {
+	UINT cItems;
+	FILEDESCRIPTORA fgd[1];
+} FILEGROUPDESCRIPTORA,*LPFILEGROUPDESCRIPTORA;
+typedef struct _FILEGROUPDESCRIPTORW {
+	UINT cItems;
+	FILEDESCRIPTORW fgd[1];
+} FILEGROUPDESCRIPTORW,*LPFILEGROUPDESCRIPTORW;
+typedef enum {
+	SLR_NO_UI=1,
+	SLR_ANY_MATCH=2,
+	SLR_UPDATE=4,
+	SLR_NOUPDATE=8,
+	SLR_NOSEARCH=16,
+	SLR_NOTRACK=32,
+	SLR_NOLINKINFO=64,
+	SLR_INVOKE_MSI=128
+} SLR_FLAGS;
+typedef enum {
+	SLGP_SHORTPATH=1,
+	SLGP_UNCPRIORITY=2,
+	SLGP_RAWPATH=4
+} SLGP_FLAGS;
+typedef PBYTE LPVIEWSETTINGS;
+typedef enum {
+	FWF_AUTOARRANGE=1,FWF_ABBREVIATEDNAMES=2,FWF_SNAPTOGRID=4,FWF_OWNERDATA=8,
+	FWF_BESTFITWINDOW=16,FWF_DESKTOP=32,FWF_SINGLESEL=64,FWF_NOSUBFOLDERS=128,
+	FWF_TRANSPARENT=256,FWF_NOCLIENTEDGE=512,FWF_NOSCROLL=0x400,FWF_ALIGNLEFT=0x800,
+	FWF_SINGLECLICKACTIVATE=0x8000
+} FOLDERFLAGS;
+typedef enum {
+	FVM_ICON=1,
+	FVM_SMALLICON,
+	FVM_LIST,
+	FVM_DETAILS
+} FOLDERVIEWMODE;
+typedef struct {
+	UINT ViewMode;
+	UINT fFlags;
+} FOLDERSETTINGS,*LPFOLDERSETTINGS;
+typedef const FOLDERSETTINGS *LPCFOLDERSETTINGS;
+typedef struct {
+    DWORD cbSize;
+	HWND hwndOwner;
+	int iShow;
+	DWORD dwFlags;
+	RECT rect;
+	LPUNKNOWN punkRel;
+	OLECHAR strNewFile[MAX_PATH];
+} FVSHOWINFO,*LPFVSHOWINFO;
+typedef struct _NRESARRAY {
+	UINT cItems;
+	NETRESOURCE nr[1];
+} NRESARRAY, *LPNRESARRAY;
+enum { SBSC_HIDE,SBSC_SHOW,SBSC_TOGGLE,SBSC_QUERY };
+enum {
+	SBCMDID_ENABLESHOWTREE,SBCMDID_SHOWCONTROL,SBCMDID_CANCELNAVIGATION,
+	SBCMDID_MAYSAVECHANGES,SBCMDID_SETHLINKFRAME,SBCMDID_ENABLESTOP,SBCMDID_OPTIONS
+};
+typedef enum {
+	SVUIA_DEACTIVATE,SVUIA_ACTIVATE_NOFOCUS,SVUIA_ACTIVATE_FOCUS,
+	SVUIA_INPLACEACTIVATE
+} SVUIA_STATUS;
+#if (_WIN32_IE >= 0x0500)
+typedef struct tagEXTRASEARCH
+{
+	GUID guidSearch;
+	WCHAR wszFriendlyName[80];
+	WCHAR wszUrl[2084];
+} EXTRASEARCH, *LPEXTRASEARCH;
+typedef DWORD SHCOLSTATEF;
+typedef struct
+{
+	GUID fmtid;
+	DWORD pid;
+} SHCOLUMNID, *LPSHCOLUMNID;
+typedef const SHCOLUMNID *LPCSHCOLUMNID;
+typedef struct _SHELLDETAILS
+{
+	int fmt;
+	int cxChar;
+	STRRET str;
+} SHELLDETAILS, *LPSHELLDETAILS;
+typedef struct
+{
+	LPITEMIDLIST pidlTargetFolder;
+	WCHAR szTargetParsingName[MAX_PATH];
+	WCHAR szNetworkProvider[MAX_PATH];
+	DWORD dwAttributes;
+	int csidl;
+} PERSIST_FOLDER_TARGET_INFO;
+
+typedef enum {
+	SHGFP_TYPE_CURRENT = 0,
+	SHGFP_TYPE_DEFAULT = 1,
+} SHGFP_TYPE;
+#endif
+
+
+DECLARE_ENUMERATOR_(IEnumIDList,LPITEMIDLIST);
+typedef IEnumIDList *LPENUMIDLIST;
+
+#ifdef COBJMACROS
+#define IEnumIDList_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
+#define IEnumIDList_Release(T) (T)->lpVtbl->AddRef(T)
+#define IEnumIDList_AddRef(T) (T)->lpVtbl->Release(T)
+#define IEnumIDList_Next(T,a,b,c) (T)->lpVtbl->Next(T,a,b,c)
+#define IEnumIDList_Skip(T,a) (T)->lpVtbl->Skip(T,a)
+#define IEnumIDList_Reset(T) (T)->lpVtbl->Reset(T)
+#define IEnumIDList_Clone(T,a) (T)->lpVtbl->Clone(T,a)
+#endif
+
+#define INTERFACE IObjMgr
+DECLARE_INTERFACE_(IObjMgr, IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(Append)(THIS_ IUnknown*) PURE;
+	STDMETHOD(Remove)(THIS_ IUnknown*) PURE;
+};
+#undef INTERFACE
+
+#define INTERFACE IContextMenu
+DECLARE_INTERFACE_(IContextMenu,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(QueryContextMenu)(THIS_ HMENU,UINT,UINT,UINT,UINT) PURE;
+	STDMETHOD(InvokeCommand)(THIS_ LPCMINVOKECOMMANDINFO) PURE;
+	STDMETHOD(GetCommandString)(THIS_ UINT,UINT,PUINT,LPSTR,UINT) PURE;
+};
+#undef INTERFACE
+typedef IContextMenu *LPCONTEXTMENU;
+
+#ifdef COBJMACROS
+#define IContextMenu_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
+#define IContextMenu_AddRef(T) (T)->lpVtbl->AddRef(T)
+#define IContextMenu_Release(T) (T)->lpVtbl->Release(T)
+#define IContextMenu_QueryContextMenu(T,a,b,c,d,e) (T)->lpVtbl->QueryContextMenu(T,a,b,c,d,e)
+#define IContextMenu_InvokeCommand(T,a) (T)->lpVtbl->InvokeCommand(T,a)
+#define IContextMenu_GetCommandString(T,a,b,c,d,e) (T)->lpVtbl->GetCommandString(T,a,b,c,d,e)
+#endif
+
+#define INTERFACE IContextMenu2
+DECLARE_INTERFACE_(IContextMenu2,IContextMenu)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(QueryContextMenu)(THIS_ HMENU,UINT,UINT,UINT,UINT) PURE;
+	STDMETHOD(InvokeCommand)(THIS_ LPCMINVOKECOMMANDINFO) PURE;
+	STDMETHOD(GetCommandString)(THIS_ UINT,UINT,PUINT,LPSTR,UINT) PURE;
+	STDMETHOD(HandleMenuMsg)(THIS_ UINT,WPARAM,LPARAM) PURE;
+};
+#undef INTERFACE
+typedef IContextMenu2 *LPCONTEXTMENU2;
+
+#define INTERFACE IContextMenu3
+DECLARE_INTERFACE_(IContextMenu3,IContextMenu2)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(QueryContextMenu)(THIS_ HMENU,UINT,UINT,UINT,UINT) PURE;
+ STDMETHOD(InvokeCommand)(THIS_ LPCMINVOKECOMMANDINFO) PURE;
+ STDMETHOD(GetCommandString)(THIS_ UINT,UINT,PUINT,LPSTR,UINT) PURE;
+ STDMETHOD(HandleMenuMsg)(THIS_ UINT,WPARAM,LPARAM) PURE;
+ STDMETHOD(HandleMenuMsg2)(THIS_ UINT,WPARAM,LPARAM,LRESULT*) PURE;
+};
+#undef INTERFACE
+typedef IContextMenu3 *LPCONTEXTMENU3;
+
+#if (_WIN32_IE >= 0x0500)
+#pragma pack(push,8)
+typedef struct {
+	ULONG dwFlags;
+	ULONG dwReserved;
+	WCHAR wszFolder[MAX_PATH];
+} SHCOLUMNINIT,*LPSHCOLUMNINIT;
+typedef const SHCOLUMNINIT* LPCSHCOLUMNINIT;
+typedef struct {
+	ULONG dwFlags;
+	DWORD dwFileAttributes;
+	ULONG dwReserved;
+	WCHAR *pwszExt;
+	WCHAR wszFile[MAX_PATH];
+} SHCOLUMNDATA,*LPSHCOLUMNDATA;
+typedef const SHCOLUMNDATA* LPCSHCOLUMNDATA;
+#pragma pack(pop)
+
+#define MAX_COLUMN_NAME_LEN 80
+#define MAX_COLUMN_DESC_LEN 128
+
+#pragma pack(push,1)
+typedef struct {
+	SHCOLUMNID scid;
+	VARTYPE vt;
+	DWORD fmt;
+	UINT cChars;
+	DWORD csFlags;
+	WCHAR wszTitle[MAX_COLUMN_NAME_LEN];
+	WCHAR wszDescription[MAX_COLUMN_DESC_LEN];
+} SHCOLUMNINFO,*LPSHCOLUMNINFO;
+typedef const SHCOLUMNINFO* LPCSHCOLUMNINFO;
+#pragma pack(pop)
+
+typedef enum {
+	SHCOLSTATE_TYPE_STR = 0x00000001,
+	SHCOLSTATE_TYPE_INT = 0x00000002,
+	SHCOLSTATE_TYPE_DATE = 0x00000003,
+	SHCOLSTATE_TYPEMASK = 0x0000000f,
+	SHCOLSTATE_ONBYDEFAULT = 0x00000010,
+	SHCOLSTATE_SLOW = 0x00000020,
+	SHCOLSTATE_EXTENDED = 0x00000040,
+	SHCOLSTATE_SECONDARYUI = 0x00000080,
+	SHCOLSTATE_HIDDEN = 0x00000100,
+	SHCOLSTATE_PREFER_VARCMP = 0x00000200
+} SHCOLSTATE;
+
+#ifdef COBJMACROS
+#define IContextMenu2_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
+#define IContextMenu2_AddRef(T) (T)->lpVtbl->AddRef(T)
+#define IContextMenu2_Release(T) (T)->lpVtbl->Release(T)
+#define IContextMenu2_QueryContextMenu(T,a,b,c,d,e) (T)->lpVtbl->QueryContextMenu(T,a,b,c,d,e)
+#define IContextMenu2_InvokeCommand(T,a) (T)->lpVtbl->InvokeCommand(T,a)
+#define IContextMenu2_GetCommandString(T,a,b,c,d,e) (T)->lpVtbl->GetCommandString(T,a,b,c,d,e)
+#define IContextMenu2_HandleMenuMsg(T,a,b,c) (T)->lpVtbl->HandleMenuMsg(T,a,b,c)
+#endif
+
+#ifdef COBJMACROS
+#define IContextMenu3_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
+#define IContextMenu3_AddRef(T) (T)->lpVtbl->AddRef(T)
+#define IContextMenu3_Release(T) (T)->lpVtbl->Release(T)
+#define IContextMenu3_QueryContextMenu(T,a,b,c,d,e) (T)->lpVtbl->QueryContextMenu(T,a,b,c,d,e)
+#define IContextMenu3_InvokeCommand(T,a) (T)->lpVtbl->InvokeCommand(T,a)
+#define IContextMenu3_GetCommandString(T,a,b,c,d,e) (T)->lpVtbl->GetCommandString(T,a,b,c,d,e)
+#define IContextMenu3_HandleMenuMsg(T,a,b,c) (T)->lpVtbl->HandleMenuMsg(T,a,b,c)
+#define IContextMenu3_HandleMenuMsg2(T,a,b,c,d) (T)->lpVtbl->HandleMenuMsg(T,a,b,c,d)
+#endif
+
+#define INTERFACE IColumnProvider
+DECLARE_INTERFACE_(IColumnProvider,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(Initialize)(THIS_ LPCSHCOLUMNINIT) PURE;
+	STDMETHOD(GetColumnInfo)(THIS_ DWORD,SHCOLUMNINFO*) PURE;
+	STDMETHOD(GetItemData)(THIS_ LPCSHCOLUMNID,LPCSHCOLUMNDATA,VARIANT*) PURE;
+};
+#undef INTERFACE
+#endif  /* _WIN32_IE >= 0x0500 */
+
+#define INTERFACE IQueryInfo
+DECLARE_INTERFACE_(IQueryInfo,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetInfoTip)(THIS_ DWORD,WCHAR**) PURE;
+	STDMETHOD(GetInfoFlags)(THIS_ DWORD*) PURE;
+};
+#undef INTERFACE
+
+#define INTERFACE IShellExtInit
+DECLARE_INTERFACE_(IShellExtInit, IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(Initialize)(THIS_ LPCITEMIDLIST,LPDATAOBJECT,HKEY) PURE;
+};
+#undef INTERFACE
+typedef IShellExtInit *LPSHELLEXTINIT;
+
+#define INTERFACE IShellPropSheetExt
+DECLARE_INTERFACE_(IShellPropSheetExt, IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(AddPages)(THIS_ LPFNADDPROPSHEETPAGE,LPARAM) PURE;
+	STDMETHOD(ReplacePage)(THIS_ UINT,LPFNADDPROPSHEETPAGE,LPARAM) PURE;
+};
+#undef INTERFACE
+typedef IShellPropSheetExt *LPSHELLPROPSHEETEXT;
+
+#define INTERFACE IExtractIconA
+DECLARE_INTERFACE_(IExtractIconA, IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetIconLocation)(THIS_ UINT,LPSTR,UINT,int*,PUINT) PURE;
+	STDMETHOD(Extract)(THIS_ LPCSTR,UINT,HICON*,HICON*,UINT) PURE;
+};
+#undef INTERFACE
+typedef IExtractIconA *LPEXTRACTICONA;
+
+#ifdef COBJMACROS
+#define IExtractIconA_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
+#define IExtractIconA_AddRef(T) (T)->lpVtbl->AddRef(T)
+#define IExtractIconA_Release(T) (T)->lpVtbl->Release(T)
+#define IExtractIconA_GetIconLocation(T,a,b,c,d,e) (T)->lpVtbl->GetIconLocation(T,a,b,c,d,e)
+#define IExtractIconA_Extract(T,a,b,c,d,e) (T)->lpVtbl->Extract(T,a,b,c,d,e)
+#endif
+
+#define INTERFACE IExtractIconW
+DECLARE_INTERFACE_(IExtractIconW, IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetIconLocation)(THIS_ UINT,LPWSTR,UINT,int*,PUINT) PURE;
+	STDMETHOD(Extract)(THIS_ LPCWSTR,UINT,HICON*,HICON*,UINT) PURE;
+};
+#undef INTERFACE
+typedef IExtractIconW *LPEXTRACTICONW;
+
+#ifdef COBJMACROS
+#define IExtractIconW_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
+#define IExtractIconW_AddRef(T) (T)->lpVtbl->AddRef(T)
+#define IExtractIconW_Release(T) (T)->lpVtbl->Release(T)
+#define IExtractIconW_GetIconLocation(T,a,b,c,d,e) (T)->lpVtbl->GetIconLocation(T,a,b,c,d,e)
+#define IExtractIconW_Extract(T,a,b,c,d,e) (T)->lpVtbl->Extract(T,a,b,c,d,e)
+#endif
+
+#ifdef UNICODE
+#define IExtractIcon IExtractIconW
+#define LPEXTRACTICON LPEXTRACTICONW
+#else
+#define IExtractIcon IExtractIconA
+#define LPEXTRACTICON LPEXTRACTICONA
+#endif
+
+#define INTERFACE IShellLinkA
+DECLARE_INTERFACE_(IShellLinkA, IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetPath)(THIS_ LPSTR,int,WIN32_FIND_DATAA*,DWORD) PURE;
+	STDMETHOD(GetIDList)(THIS_ LPITEMIDLIST*) PURE;
+	STDMETHOD(SetIDList)(THIS_ LPCITEMIDLIST) PURE;
+	STDMETHOD(GetDescription)(THIS_ LPSTR,int) PURE;
+	STDMETHOD(SetDescription)(THIS_ LPCSTR) PURE;
+	STDMETHOD(GetWorkingDirectory)(THIS_ LPSTR,int) PURE;
+	STDMETHOD(SetWorkingDirectory)(THIS_ LPCSTR) PURE;
+	STDMETHOD(GetArguments)(THIS_ LPSTR,int) PURE;
+	STDMETHOD(SetArguments)(THIS_ LPCSTR) PURE;
+	STDMETHOD(GetHotkey)(THIS_ PWORD) PURE;
+	STDMETHOD(SetHotkey)(THIS_ WORD) PURE;
+	STDMETHOD(GetShowCmd)(THIS_ int*) PURE;
+	STDMETHOD(SetShowCmd)(THIS_ int) PURE;
+	STDMETHOD(GetIconLocation)(THIS_ LPSTR,int,int*) PURE;
+	STDMETHOD(SetIconLocation)(THIS_ LPCSTR,int) PURE;
+	STDMETHOD(SetRelativePath)(THIS_ LPCSTR ,DWORD) PURE;
+	STDMETHOD(Resolve)(THIS_ HWND,DWORD) PURE;
+	STDMETHOD(SetPath)(THIS_ LPCSTR) PURE;
+};
+#undef INTERFACE
+
+#ifdef COBJMACROS
+#define IShellLinkA_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
+#define IShellLinkA_AddRef(T) (T)->lpVtbl->AddRef(T)
+#define IShellLinkA_Release(T) (T)->lpVtbl->Release(T)
+#define IShellLinkA_GetPath(T,a,b,c,d) (T)->lpVtbl->GetPath(T,a,b,c,d)
+#define IShellLinkA_GetIDList(T,a) (T)->lpVtbl->GetIDList(T,a)
+#define IShellLinkA_SetIDList(T,a) (T)->lpVtbl->SetIDList(T,a)
+#define IShellLinkA_GetDescription(T,a,b) (T)->lpVtbl->GetDescription(T,a,b)
+#define IShellLinkA_SetDescription(T,a) (T)->lpVtbl->SetDescription(T,a)
+#define IShellLinkA_GetWorkingDirectory(T,a,b) (T)->lpVtbl->GetWorkingDirectory(T,a,b)
+#define IShellLinkA_SetWorkingDirectory(T,a) (T)->lpVtbl->SetWorkingDirectory(T,a)
+#define IShellLinkA_GetArguments(T,a,b) (T)->lpVtbl->GetArguments(T,a,b)
+#define IShellLinkA_SetArguments(T,a) (T)->lpVtbl->SetArguments(T,a)
+#define IShellLinkA_GetHotkey(T,a) (T)->lpVtbl->GetHotkey(T,a)
+#define IShellLinkA_SetHotkey(T,a) (T)->lpVtbl->SetHotkey(T,a)
+#define IShellLinkA_GetShowCmd(T,a) (T)->lpVtbl->GetShowCmd(T,a)
+#define IShellLinkA_SetShowCmd(T,a) (T)->lpVtbl->SetShowCmd(T,a)
+#define IShellLinkA_GetIconLocation(T,a,b,c) (T)->lpVtbl->GetIconLocation(T,a,b,c)
+#define IShellLinkA_SetIconLocation(T,a,b) (T)->lpVtbl->SetIconLocation(T,a,b)
+#define IShellLinkA_SetRelativePath(T,a,b) (T)->lpVtbl->SetRelativePath(T,a,b)
+#define IShellLinkA_Resolve(T,a,b) (T)->lpVtbl->Resolve(T,a,b)
+#define IShellLinkA_SetPath(T,a) (T)->lpVtbl->SetPath(T,a)
+#endif
+
+#define INTERFACE IShellLinkW
+DECLARE_INTERFACE_(IShellLinkW, IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetPath)(THIS_ LPWSTR,int,WIN32_FIND_DATAW*,DWORD) PURE;
+	STDMETHOD(GetIDList)(THIS_ LPITEMIDLIST*) PURE;
+	STDMETHOD(SetIDList)(THIS_ LPCITEMIDLIST) PURE;
+	STDMETHOD(GetDescription)(THIS_ LPWSTR,int) PURE;
+	STDMETHOD(SetDescription)(THIS_ LPCWSTR) PURE;
+	STDMETHOD(GetWorkingDirectory)(THIS_ LPWSTR,int) PURE;
+	STDMETHOD(SetWorkingDirectory)(THIS_ LPCWSTR) PURE;
+	STDMETHOD(GetArguments)(THIS_ LPWSTR,int) PURE;
+	STDMETHOD(SetArguments)(THIS_ LPCWSTR) PURE;
+	STDMETHOD(GetHotkey)(THIS_ PWORD) PURE;
+	STDMETHOD(SetHotkey)(THIS_ WORD) PURE;
+	STDMETHOD(GetShowCmd)(THIS_ int*) PURE;
+	STDMETHOD(SetShowCmd)(THIS_ int) PURE;
+	STDMETHOD(GetIconLocation)(THIS_ LPWSTR,int,int*) PURE;
+	STDMETHOD(SetIconLocation)(THIS_ LPCWSTR,int) PURE;
+	STDMETHOD(SetRelativePath)(THIS_ LPCWSTR ,DWORD) PURE;
+	STDMETHOD(Resolve)(THIS_ HWND,DWORD) PURE;
+	STDMETHOD(SetPath)(THIS_ LPCWSTR) PURE;
+};
+#undef INTERFACE
+
+#ifdef COBJMACROS
+#define IShellLinkW_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
+#define IShellLinkW_AddRef(T) (T)->lpVtbl->AddRef(T)
+#define IShellLinkW_Release(T) (T)->lpVtbl->Release(T)
+#define IShellLinkW_GetPath(T,a,b,c,d) (T)->lpVtbl->GetPath(T,a,b,c,d)
+#define IShellLinkW_GetIDList(T,a) (T)->lpVtbl->GetIDList(T,a)
+#define IShellLinkW_SetIDList(T,a) (T)->lpVtbl->SetIDList(T,a)
+#define IShellLinkW_GetDescription(T,a,b) (T)->lpVtbl->GetDescription(T,a,b)
+#define IShellLinkW_SetDescription(T,a) (T)->lpVtbl->SetDescription(T,a)
+#define IShellLinkW_GetWorkingDirectory(T,a,b) (T)->lpVtbl->GetWorkingDirectory(T,a,b)
+#define IShellLinkW_SetWorkingDirectory(T,a) (T)->lpVtbl->SetWorkingDirectory(T,a)
+#define IShellLinkW_GetArguments(T,a,b) (T)->lpVtbl->GetArguments(T,a,b)
+#define IShellLinkW_SetArguments(T,a) (T)->lpVtbl->SetArguments(T,a)
+#define IShellLinkW_GetHotkey(T,a) (T)->lpVtbl->GetHotkey(T,a)
+#define IShellLinkW_SetHotkey(T,a) (T)->lpVtbl->SetHotkey(T,a)
+#define IShellLinkW_GetShowCmd(T,a) (T)->lpVtbl->GetShowCmd(T,a)
+#define IShellLinkW_SetShowCmd(T,a) (T)->lpVtbl->SetShowCmd(T,a)
+#define IShellLinkW_GetIconLocation(T,a,b,c) (T)->lpVtbl->GetIconLocation(T,a,b,c)
+#define IShellLinkW_SetIconLocation(T,a,b) (T)->lpVtbl->SetIconLocation(T,a,b)
+#define IShellLinkW_SetRelativePath(T,a,b) (T)->lpVtbl->SetRelativePath(T,a,b)
+#define IShellLinkW_Resolve(T,a,b) (T)->lpVtbl->Resolve(T,a,b)
+#define IShellLinkW_SetPath(T,a) (T)->lpVtbl->SetPath(T,a)
+#endif
+
+#define INTERFACE IShellFolder
+DECLARE_INTERFACE_(IShellFolder, IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(ParseDisplayName)(THIS_ HWND,LPBC,LPOLESTR,PULONG,LPITEMIDLIST*,PULONG) PURE;
+	STDMETHOD(EnumObjects)(THIS_ HWND,DWORD,LPENUMIDLIST*) PURE;
+	STDMETHOD(BindToObject)(THIS_ LPCITEMIDLIST,LPBC,REFIID,PVOID*) PURE;
+	STDMETHOD(BindToStorage)(THIS_ LPCITEMIDLIST,LPBC,REFIID,PVOID*) PURE;
+	STDMETHOD(CompareIDs)(THIS_ LPARAM,LPCITEMIDLIST,LPCITEMIDLIST) PURE;
+	STDMETHOD(CreateViewObject)(THIS_ HWND,REFIID,PVOID*) PURE;
+	STDMETHOD(GetAttributesOf)(THIS_ UINT,LPCITEMIDLIST*,PULONG) PURE;
+	STDMETHOD(GetUIObjectOf)(THIS_ HWND,UINT,LPCITEMIDLIST*,REFIID,PUINT,PVOID*) PURE;
+	STDMETHOD(GetDisplayNameOf)(THIS_ LPCITEMIDLIST,DWORD,LPSTRRET) PURE;
+	STDMETHOD(SetNameOf)(THIS_ HWND,LPCITEMIDLIST,LPCOLESTR,DWORD,LPITEMIDLIST*) PURE;
+};
+#undef INTERFACE
+typedef IShellFolder *LPSHELLFOLDER;
+
+#ifdef COBJMACROS
+#define IShellFolder_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
+#define IShellFolder_AddRef(T) (T)->lpVtbl->AddRef(T)
+#define IShellFolder_Release(T) (T)->lpVtbl->Release(T)
+#define IShellFolder_ParseDisplayName(T,a,b,c,d,e,f) (T)->lpVtbl->ParseDisplayName(T,a,b,c,d,e,f)
+#define IShellFolder_EnumObjects(T,a,b,c) (T)->lpVtbl->EnumObjects(T,a,b,c)
+#define IShellFolder_BindToObject(T,a,b,c,d) (T)->lpVtbl->BindToObject(T,a,b,c,d)
+#define IShellFolder_BindToStorage(T,a,b,c,d) (T)->lpVtbl->BindToStorage(T,a,b,c,d)
+#define IShellFolder_CompareIDs(T,a,b,c) (T)->lpVtbl->CompareIDs(T,a,b,c)
+#define IShellFolder_CreateViewObject(T,a,b) (T)->lpVtbl->CreateViewObject(T,a,b)
+#define IShellFolder_GetAttributesOf(T,a,b,c) (T)->lpVtbl->GetAttributesOf(T,a,b,c)
+#define IShellFolder_GetUIObjectOf(T,a,b,c,d,e,f) (T)->lpVtbl->GetUIObjectOf(T,a,b,c,d,e,f)
+#define IShellFolder_GetDisplayNameOf(T,a,b,c) (T)->lpVtbl->GetDisplayNameOf(T,a,b,c)
+#define IShellFolder_SetNameOf(T,a,b,c,d,e) (T)->lpVtbl->SetNameOf(T,a,b,c,d,e)
+#endif
+
+#if (_WIN32_IE >= 0x0500)
+
+DECLARE_ENUMERATOR_(IEnumExtraSearch,LPEXTRASEARCH);
+typedef IEnumExtraSearch *LPENUMEXTRASEARCH;
+
+#define INTERFACE IShellFolder2
+DECLARE_INTERFACE_(IShellFolder2, IShellFolder)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(ParseDisplayName)(THIS_ HWND,LPBC,LPOLESTR,PULONG,LPITEMIDLIST*,PULONG) PURE;
+	STDMETHOD(EnumObjects)(THIS_ HWND,DWORD,LPENUMIDLIST*) PURE;
+	STDMETHOD(BindToObject)(THIS_ LPCITEMIDLIST,LPBC,REFIID,PVOID*) PURE;
+	STDMETHOD(BindToStorage)(THIS_ LPCITEMIDLIST,LPBC,REFIID,PVOID*) PURE;
+	STDMETHOD(CompareIDs)(THIS_ LPARAM,LPCITEMIDLIST,LPCITEMIDLIST) PURE;
+	STDMETHOD(CreateViewObject)(THIS_ HWND,REFIID,PVOID*) PURE;
+	STDMETHOD(GetAttributesOf)(THIS_ UINT,LPCITEMIDLIST*,PULONG) PURE;
+	STDMETHOD(GetUIObjectOf)(THIS_ HWND,UINT,LPCITEMIDLIST*,REFIID,PUINT,PVOID*) PURE;
+	STDMETHOD(GetDisplayNameOf)(THIS_ LPCITEMIDLIST,DWORD,LPSTRRET) PURE;
+	STDMETHOD(SetNameOf)(THIS_ HWND,LPCITEMIDLIST,LPCOLESTR,DWORD,LPITEMIDLIST*) PURE;
+	STDMETHOD(GetDefaultSearchGUID)(THIS_ GUID*) PURE;
+	STDMETHOD(EnumSearches)(THIS_ IEnumExtraSearch**) PURE;
+	STDMETHOD(GetDefaultColumn)(THIS_ DWORD,ULONG*,ULONG*) PURE;
+	STDMETHOD(GetDefaultColumnState)(THIS_ UINT,SHCOLSTATEF*) PURE;
+	STDMETHOD(GetDetailsEx)(THIS_ LPCITEMIDLIST,const SHCOLUMNID*,VARIANT*) PURE;
+	STDMETHOD(GetDetailsOf)(THIS_ LPCITEMIDLIST,UINT,SHELLDETAILS*) PURE;
+	STDMETHOD(MapColumnToSCID)(THIS_ UINT,SHCOLUMNID*) PURE;
+};
+#undef INTERFACE
+typedef IShellFolder2 *LPSHELLFOLDER2;
+
+#ifdef COBJMACROS
+#define IShellFolder2_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
+#define IShellFolder2_AddRef(T) (T)->lpVtbl->AddRef(T)
+#define IShellFolder2_Release(T) (T)->lpVtbl->Release(T)
+#define IShellFolder2_ParseDisplayName(T,a,b,c,d,e,f) (T)->lpVtbl->ParseDisplayName(T,a,b,c,d,e,f)
+#define IShellFolder2_EnumObjects(T,a,b,c) (T)->lpVtbl->EnumObjects(T,a,b,c)
+#define IShellFolder2_BindToObject(T,a,b,c,d) (T)->lpVtbl->BindToObject(T,a,b,c,d)
+#define IShellFolder2_BindToStorage(T,a,b,c,d) (T)->lpVtbl->BindToStorage(T,a,b,c,d)
+#define IShellFolder2_CompareIDs(T,a,b,c) (T)->lpVtbl->CompareIDs(T,a,b,c)
+#define IShellFolder2_CreateViewObject(T,a,b) (T)->lpVtbl->CreateViewObject(T,a,b)
+#define IShellFolder2_GetAttributesOf(T,a,b,c) (T)->lpVtbl->GetAttributesOf(T,a,b,c)
+#define IShellFolder2_GetUIObjectOf(T,a,b,c,d,e,f) (T)->lpVtbl->GetUIObjectOf(T,a,b,c,d,e,f)
+#define IShellFolder2_GetDisplayNameOf(T,a,b,c) (T)->lpVtbl->GetDisplayNameOf(T,a,b,c)
+#define IShellFolder2_SetNameOf(T,a,b,c,d,e) (T)->lpVtbl->SetNameOf(T,a,b,c,d,e)
+#define IShellFolder2_GetDefaultSearchGUID(T,a) (T)->lpVtbl->GetDefaultSearchGUID(T,a)
+#define IShellFolder2_EnumSearches(T,a) (T)->lpVtbl->EnumSearches(T,a)
+#define IShellFolder2_GetDefaultColumn(T,a,b,c) (T)->lpVtbl->GetDefaultColumn(T,a,b,c)
+#define IShellFolder2_GetDefaultColumnState(T,a,b) (T)->lpVtbl->GetDefaultColumnState(T,a,b)
+#define IShellFolder2_GetDetailsEx(T,a,b,c) (T)->lpVtbl->GetDetailsEx(T,a,b,c)
+#define IShellFolder2_GetDetailsOf(T,a,b,c) (T)->lpVtbl->GetDetailsOf(T,a,b,c)
+#define IShellFolder2_MapColumnToSCID(T,a,b) (T)->lpVtbl->MapColumnToSCID(T,a,b)
+#endif
+
+#endif /* _WIN32_IE >= 0x0500 */
+#define INTERFACE ICopyHook
+DECLARE_INTERFACE_(ICopyHook, IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD_(UINT,CopyCallback)(THIS_ HWND,UINT,UINT,LPCSTR,DWORD,LPCSTR,DWORD) PURE;
+};
+#undef INTERFACE
+typedef ICopyHook *LPCOPYHOOK;
+
+#define INTERFACE IFileViewerSite
+DECLARE_INTERFACE(IFileViewerSite)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(SetPinnedWindow)(THIS_ HWND) PURE;
+	STDMETHOD(GetPinnedWindow)(THIS_ HWND*) PURE;
+};
+#undef INTERFACE
+typedef IFileViewerSite *LPFILEVIEWERSITE;
+
+#define INTERFACE IFileViewer
+DECLARE_INTERFACE(IFileViewer)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(ShowInitialize)(THIS_ LPFILEVIEWERSITE) PURE;
+	STDMETHOD(Show)(THIS_ LPFVSHOWINFO) PURE;
+	STDMETHOD(PrintTo)(THIS_ LPSTR,BOOL) PURE;
+};
+#undef INTERFACE
+typedef IFileViewer *LPFILEVIEWER;
+
+#define INTERFACE IFileSystemBindData
+DECLARE_INTERFACE_(IFileSystemBindData, IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(SetFindData)(THIS_ const WIN32_FIND_DATAW*) PURE;
+	STDMETHOD(GetFindData)(THIS_ WIN32_FIND_DATAW*) PURE;
+};
+#undef INTERFACE
+
+#define INTERFACE IPersistFolder
+DECLARE_INTERFACE_(IPersistFolder,IPersist)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetClassID)(THIS_ CLSID*) PURE;
+	STDMETHOD(Initialize)(THIS_ LPCITEMIDLIST) PURE;
+};
+#undef INTERFACE
+typedef IPersistFolder *LPPERSISTFOLDER;
+
+#ifdef COBJMACROS
+#define IPersistFolder_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
+#define IPersistFolder_AddRef(T) (T)->lpVtbl->AddRef(T)
+#define IPersistFolder_Release(T) (T)->lpVtbl->Release(T)
+#define IPersistFolder_GetClassID(T,a) (T)->lpVtbl->GetClassID(T,a)
+#define IPersistFolder_Initialize(T,a) (T)->lpVtbl->Initialize(T,a)
+#endif
+
+#if (_WIN32_IE >= 0x0400 || _WIN32_WINNT >= 0x0500)
+
+#define INTERFACE IPersistFolder2
+DECLARE_INTERFACE_(IPersistFolder2,IPersistFolder)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetClassID)(THIS_ CLSID*) PURE;
+	STDMETHOD(Initialize)(THIS_ LPCITEMIDLIST) PURE;
+	STDMETHOD(GetCurFolder)(THIS_ LPITEMIDLIST*) PURE;
+};
+#undef INTERFACE
+typedef IPersistFolder2 *LPPERSISTFOLDER2;
+
+#ifdef COBJMACROS
+#define IPersistFolder2_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
+#define IPersistFolder2_AddRef(T) (T)->lpVtbl->AddRef(T)
+#define IPersistFolder2_Release(T) (T)->lpVtbl->Release(T)
+#define IPersistFolder2_GetClassID(T,a) (T)->lpVtbl->GetClassID(T,a)
+#define IPersistFolder2_Initialize(T,a) (T)->lpVtbl->Initialize(T,a)
+#define IPersistFolder2_GetCurFolder(T,a) (T)->lpVtbl->GetCurFolder(T,a)
+#endif
+
+#endif /* _WIN32_IE >= 0x0400 || _WIN32_WINNT >= 0x0500 */
+
+#if (_WIN32_IE >= 0x0500)
+
+#define INTERFACE IPersistFolder3
+DECLARE_INTERFACE_(IPersistFolder3,IPersistFolder2)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetClassID)(THIS_ CLSID*) PURE;
+	STDMETHOD(Initialize)(THIS_ LPCITEMIDLIST) PURE;
+	STDMETHOD(GetCurFolder)(THIS_ LPITEMIDLIST*) PURE;
+	STDMETHOD(InitializeEx)(THIS_ IBindCtx*,LPCITEMIDLIST,const PERSIST_FOLDER_TARGET_INFO*) PURE;
+	STDMETHOD(GetFolderTargetInfo)(THIS_ PERSIST_FOLDER_TARGET_INFO*) PURE;
+};
+#undef INTERFACE
+typedef IPersistFolder3 *LPPERSISTFOLDER3;
+
+#ifdef COBJMACROS
+#define IPersistFolder3_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
+#define IPersistFolder3_AddRef(T) (T)->lpVtbl->AddRef(T)
+#define IPersistFolder3_Release(T) (T)->lpVtbl->Release(T)
+#define IPersistFolder3_GetClassID(T,a) (T)->lpVtbl->GetClassID(T,a)
+#define IPersistFolder3_Initialize(T,a) (T)->lpVtbl->Initialize(T,a)
+#define IPersistFolder3_GetCurFolder(T,a) (T)->lpVtbl->GetCurFolder(T,a)
+#define IPersistFolder3_InitializeEx(T,a,b,c) (T)->lpVtbl->InitializeEx(T,a,b,c)
+#define IPersistFolder3_GetFolderTargetInfo(T,a) (T)->lpVtbl->GetFolderTargetInfo(T,a)
+#endif
+
+#endif /* _WIN32_IE >= 0x0500 */
+
+typedef _COM_interface IShellBrowser *LPSHELLBROWSER;
+typedef _COM_interface IShellView *LPSHELLVIEW;
+
+#define INTERFACE IShellBrowser
+DECLARE_INTERFACE_(IShellBrowser,IOleWindow)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetWindow)(THIS_ HWND*) PURE;
+	STDMETHOD(ContextSensitiveHelp)(THIS_ BOOL) PURE;
+	STDMETHOD(InsertMenusSB)(THIS_ HMENU,LPOLEMENUGROUPWIDTHS) PURE;
+	STDMETHOD(SetMenuSB)(THIS_ HMENU,HOLEMENU,HWND) PURE;
+	STDMETHOD(RemoveMenusSB)(THIS_ HMENU) PURE;
+	STDMETHOD(SetStatusTextSB)(THIS_ LPCOLESTR) PURE;
+	STDMETHOD(EnableModelessSB)(THIS_ BOOL) PURE;
+	STDMETHOD(TranslateAcceleratorSB) (THIS_ LPMSG,WORD) PURE;
+	STDMETHOD(BrowseObject)(THIS_ LPCITEMIDLIST,UINT) PURE;
+	STDMETHOD(GetViewStateStream)(THIS_ DWORD,LPSTREAM*) PURE;
+	STDMETHOD(GetControlWindow)(THIS_ UINT,HWND*) PURE;
+	STDMETHOD(SendControlMsg)(THIS_ UINT,UINT,WPARAM,LPARAM,LRESULT*) PURE;
+	STDMETHOD(QueryActiveShellView)(THIS_ LPSHELLVIEW*) PURE;
+	STDMETHOD(OnViewWindowActive)(THIS_ LPSHELLVIEW) PURE;
+	STDMETHOD(SetToolbarItems)(THIS_ LPTBBUTTON,UINT,UINT) PURE;
+};
+#undef INTERFACE
+
+#ifdef COBJMACROS
+#define IShellBrowser_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
+#define IShellBrowser_AddRef(T) (T)->lpVtbl->AddRef(T)
+#define IShellBrowser_Release(T) (T)->lpVtbl->Release(T)
+#define IShellBrowser_GetWindow(T,a) (T)->lpVtbl->GetWindow(T,a)
+#define IShellBrowser_ContextSensitiveHelp(T,a) (T)->lpVtbl->ContextSensitiveHelp(T,a)
+#define IShellBrowser_InsertMenusSB(T,a,b) (T)->lpVtbl->InsertMenusSB(T,a,b)
+#define IShellBrowser_SetMenuSB(T,a,b,c) (T)->lpVtbl->SetMenuSB(T,a,b,c)
+#define IShellBrowser_RemoveMenusSB(T,a) (T)->lpVtbl->RemoveMenusSB(T,a)
+#define IShellBrowser_SetStatusTextSB(T,a) (T)->lpVtbl->SetStatusTextSB(T,a)
+#define IShellBrowser_EnableModelessSB(T,a) (T)->lpVtbl->EnableModelessSB(T,a)
+#define IShellBrowser_TranslateAcceleratorSB(T,a,b) (T)->lpVtbl->TranslateAcceleratorSB(T,a,b)
+#define IShellBrowser_BrowseObject(T,a,b) (T)->lpVtbl->BrowseObject(T,a,b)
+#define IShellBrowser_GetViewStateStream(T,a,b) (T)->lpVtbl->GetViewStateStream(T,a,b)
+#define IShellBrowser_GetControlWindow(T,a,b) (T)->lpVtbl->GetControlWindow(T,a,b)
+#define IShellBrowser_SendControlMsg(T,a,b,c,d,e) (T)->lpVtbl->SendControlMsg(T,a,b,c,d,e)
+#define IShellBrowser_QueryActiveShellView(T,a) (T)->lpVtbl->QueryActiveShellView(T,a)
+#define IShellBrowser_OnViewWindowActive(T,a) (T)->lpVtbl->OnViewWindowActive(T,a)
+#define IShellBrowser_SetToolbarItems(T,a,b,c) (T)->lpVtbl->SetToolbarItems(T,a,b,c)
+#endif
+
+#define INTERFACE IShellView
+DECLARE_INTERFACE_(IShellView,IOleWindow)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetWindow)(THIS_ HWND*) PURE;
+	STDMETHOD(ContextSensitiveHelp)(THIS_ BOOL) PURE;
+	STDMETHOD(TranslateAccelerator) (THIS_ LPMSG) PURE;
+#ifdef _FIX_ENABLEMODELESS_CONFLICT
+	STDMETHOD(EnableModelessSV)(THIS_ BOOL) PURE;
+#else
+	STDMETHOD(EnableModeless)(THIS_ BOOL) PURE;
+#endif
+	STDMETHOD(UIActivate)(THIS_ UINT) PURE;
+	STDMETHOD(Refresh) (THIS) PURE;
+	STDMETHOD(CreateViewWindow)(THIS_ IShellView*,LPCFOLDERSETTINGS,LPSHELLBROWSER,RECT*,HWND*) PURE;
+	STDMETHOD(DestroyViewWindow)(THIS) PURE;
+	STDMETHOD(GetCurrentInfo)(THIS_ LPFOLDERSETTINGS) PURE;
+	STDMETHOD(AddPropertySheetPages)(THIS_ DWORD,LPFNADDPROPSHEETPAGE,LPARAM) PURE;
+	STDMETHOD(SaveViewState)(THIS) PURE;
+	STDMETHOD(SelectItem)(THIS_ LPCITEMIDLIST,UINT) PURE;
+	STDMETHOD(GetItemObject)(THIS_ UINT,REFIID,PVOID*) PURE;
+};
+#undef INTERFACE
+
+#ifdef COBJMACROS
+#define IShellView_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
+#define IShellView_AddRef(T) (T)->lpVtbl->AddRef(T)
+#define IShellView_Release(T) (T)->lpVtbl->Release(T)
+#define IShellView_GetWindow(T,a) (T)->lpVtbl->GetWindow(T,a)
+#define IShellView_ContextSensitiveHelp(T,a) (T)->lpVtbl->ContextSensitiveHelp(T,a)
+#define IShellView_TranslateAccelerator(T,a) (T)->lpVtbl->TranslateAccelerator(T,a)
+#ifdef _FIX_ENABLEMODELESS_CONFLICT
+#define IShellView_EnableModeless(T,a) (T)->lpVtbl->EnableModelessSV(T,a)
+#else
+#define IShellView_EnableModeless(T,a) (T)->lpVtbl->EnableModeless(T,a)
+#endif
+#define IShellView_UIActivate(T,a) (T)->lpVtbl->UIActivate(T,a)
+#define IShellView_Refresh(T) (T)->lpVtbl->Refresh(T)
+#define IShellView_CreateViewWindow(T,a,b,c,d,e) (T)->lpVtbl->CreateViewWindow(T,a,b,c,d,e)
+#define IShellView_DestroyViewWindow(T) (T)->lpVtbl->DestroyViewWindow(T)
+#define IShellView_GetCurrentInfo(T,a) (T)->lpVtbl->GetCurrentInfo(T,a)
+#define IShellView_AddPropertySheetPages(T,a,b,c) (T)->lpVtbl->AddPropertySheetPages(T,a,b,c)
+#define IShellView_SaveViewState(T) (T)->lpVtbl->SaveViewState(T)
+#define IShellView_SelectItem(T,a,b) (T)->lpVtbl->SelectItem(T,a,b)
+#define IShellView_GetItemObject(T,a,b,c) (T)->lpVtbl->GetItemObject(T,a,b,c)
+#endif
+
+#define INTERFACE ICommDlgBrowser
+DECLARE_INTERFACE_(ICommDlgBrowser,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(OnDefaultCommand)(THIS_ IShellView*) PURE;
+	STDMETHOD(OnStateChange)(THIS_ IShellView*,ULONG) PURE;
+	STDMETHOD(IncludeObject)(THIS_ IShellView*,LPCITEMIDLIST) PURE;
+};
+#undef INTERFACE
+typedef ICommDlgBrowser *LPCOMMDLGBROWSER;
+
+#ifdef COBJMACROS
+#define ICommDlgBrowser_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
+#define ICommDlgBrowser_AddRef(T) (T)->lpVtbl->AddRef(T)
+#define ICommDlgBrowser_Release(T) (T)->lpVtbl->Release(T)
+#define ICommDlgBrowser_OnDefaultCommand(T,a) (T)->lpVtbl->OnDefaultCommand(T,a)
+#define ICommDlgBrowser_OnStateChange(T,a,b) (T)->lpVtbl->OnStateChange(T,a,b)
+#define ICommDlgBrowser_IncludeObject(T,a,b) (T)->lpVtbl->IncludeObject(T,a,b)
+#endif
+
+typedef GUID SHELLVIEWID;
+typedef struct _SV2CVW2_PARAMS {
+	DWORD cbSize;
+	IShellView *psvPrev;
+	FOLDERSETTINGS const *pfs;
+	IShellBrowser *psbOwner;
+	RECT *prcView;
+	SHELLVIEWID const *pvid;
+	HWND hwndView;
+} SV2CVW2_PARAMS,*LPSV2CVW2_PARAMS;
+#define INTERFACE IShellView2
+DECLARE_INTERFACE_(IShellView2,IShellView)
+{
+
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetWindow)(THIS_ HWND*) PURE;
+	STDMETHOD(ContextSensitiveHelp)(THIS_ BOOL) PURE;
+	STDMETHOD(TranslateAccelerator) (THIS_ LPMSG) PURE;
+#ifdef _FIX_ENABLEMODELESS_CONFLICT
+	STDMETHOD(EnableModelessSV)(THIS_ BOOL) PURE;
+#else
+	STDMETHOD(EnableModeless)(THIS_ BOOL) PURE;
+#endif
+	STDMETHOD(UIActivate)(THIS_ UINT) PURE;
+	STDMETHOD(Refresh) (THIS) PURE;
+	STDMETHOD(CreateViewWindow)(THIS_ IShellView*,LPCFOLDERSETTINGS,LPSHELLBROWSER,RECT*,HWND*) PURE;
+	STDMETHOD(DestroyViewWindow)(THIS) PURE;
+	STDMETHOD(GetCurrentInfo)(THIS_ LPFOLDERSETTINGS) PURE;
+	STDMETHOD(AddPropertySheetPages)(THIS_ DWORD,LPFNADDPROPSHEETPAGE,LPARAM) PURE;
+	STDMETHOD(SaveViewState)(THIS) PURE;
+	STDMETHOD(SelectItem)(THIS_ LPCITEMIDLIST,UINT) PURE;
+	STDMETHOD(GetItemObject)(THIS_ UINT,REFIID,PVOID*) PURE;
+	STDMETHOD(GetView)(THIS_ SHELLVIEWID*,ULONG) PURE;
+	STDMETHOD(CreateViewWindow2)(THIS_ LPSV2CVW2_PARAMS) PURE;
+};
+#undef INTERFACE
+
+#define INTERFACE IShellExecuteHookA
+DECLARE_INTERFACE_(IShellExecuteHookA,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(Execute)(THIS_ LPSHELLEXECUTEINFOA) PURE;
+};
+#undef INTERFACE
+
+#define INTERFACE IShellExecuteHookW
+DECLARE_INTERFACE_(IShellExecuteHookW,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(Execute)(THIS_ LPSHELLEXECUTEINFOW) PURE;
+};
+#undef INTERFACE
+
+#define INTERFACE IShellIcon
+DECLARE_INTERFACE_(IShellIcon,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetIconOf)(THIS_ LPCITEMIDLIST,UINT,PINT) PURE;
+};
+#undef INTERFACE
+typedef IShellIcon *LPSHELLICON;
+
+typedef struct {
+	BOOL fShowAllObjects : 1;
+	BOOL fShowExtensions : 1;
+	BOOL fNoConfirmRecycle : 1;
+	BOOL fShowSysFiles : 1;
+	BOOL fShowCompColor : 1;
+	BOOL fDoubleClickInWebView : 1;
+	BOOL fDesktopHTML : 1;
+	BOOL fWin95Classic : 1;
+	BOOL fDontPrettyPath : 1;
+	BOOL fShowAttribCol : 1;
+	BOOL fMapNetDrvBtn : 1;
+	BOOL fShowInfoTip : 1;
+	BOOL fHideIcons : 1;
+	UINT fRestFlags : 3;
+} SHELLFLAGSTATE, * LPSHELLFLAGSTATE;
+
+#define SSF_SHOWALLOBJECTS 0x1
+#define SSF_SHOWEXTENSIONS 0x2
+#define SSF_SHOWCOMPCOLOR 0x8
+#define SSF_SHOWSYSFILES 0x20
+#define SSF_DOUBLECLICKINWEBVIEW 0x80
+#define SSF_SHOWATTRIBCOL 0x100
+#define SSF_DESKTOPHTML 0x200
+#define SSF_WIN95CLASSIC 0x400
+#define SSF_DONTPRETTYPATH 0x800
+#define SSF_MAPNETDRVBUTTON 0x1000
+#define SSF_SHOWINFOTIP 0x2000
+#define SSF_HIDEICONS 0x4000
+#define SSF_NOCONFIRMRECYCLE 0x8000
+
+#define INTERFACE IShellIconOverlayIdentifier
+DECLARE_INTERFACE_(IShellIconOverlayIdentifier,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(IsMemberOf)(THIS_ LPCWSTR,DWORD) PURE;
+	STDMETHOD(GetOverlayInfo)(THIS_ LPWSTR,int,int*,DWORD*) PURE;
+	STDMETHOD(GetPriority)(THIS_ int*) PURE;
+};
+#undef INTERFACE
+
+#if (_WIN32_WINNT >= 0x0501) /* WXP */
+typedef _COM_interface IFolderView *LPFOLDERVIEW;
+
+#define INTERFACE IFolderView
+DECLARE_INTERFACE_(IFolderView,IUnknown)
+{
+   STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+   STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+   STDMETHOD_(ULONG,Release)(THIS) PURE;
+   STDMETHOD(GetAutoArrange)(THIS) PURE;
+   STDMETHOD(GetCurrentViewMode)(THIS_ UINT) PURE;
+   STDMETHOD(GetDefaultSpacing)(THIS_ POINT*) PURE;
+   STDMETHOD(GetFocusedItem)(THIS_ int*) PURE;
+   STDMETHOD(GetFolder)(THIS_ REFIID,PVOID*) PURE;
+   STDMETHOD(GetItemPosition)(THIS_ LPCITEMIDLIST,POINT*) PURE;
+   STDMETHOD(GetSelectionMarkedItem)(THIS_ int*) PURE;
+   STDMETHOD(GetSpacing)(THIS_ POINT*) PURE;
+   STDMETHOD(Item)(THIS_ int,LPITEMIDLIST*) PURE;
+   STDMETHOD(ItemCount)(THIS_ UINT,int*) PURE;
+   STDMETHOD(Items)(THIS_ UINT,REFIID,PVOID*) PURE;
+   STDMETHOD(SelectAndPositionItems)(THIS_ UINT,LPCITEMIDLIST*,POINT*,DWORD) PURE;
+   STDMETHOD(SelectItem)(THIS_ int,DWORD) PURE;
+   STDMETHOD(SetCurrentViewMode)(THIS_ UINT) PURE;
+};
+#undef INTERFACE
+#endif /* _WIN32_WINNT >= 0x0501 */
+
+#define ISIOI_ICONFILE 0x00000001
+#define ISIOI_ICONINDEX 0x00000002
+
+#if (_WIN32_WINNT >= 0x0500) /* W2K */
+typedef struct {
+	BOOL fShowAllObjects : 1;
+	BOOL fShowExtensions : 1;
+	BOOL fNoConfirmRecycle : 1;
+	BOOL fShowSysFiles : 1;
+	BOOL fShowCompColor : 1;
+	BOOL fDoubleClickInWebView : 1;
+	BOOL fDesktopHTML : 1;
+	BOOL fWin95Classic : 1;
+	BOOL fDontPrettyPath : 1;
+	BOOL fShowAttribCol : 1;
+	BOOL fMapNetDrvBtn : 1;
+	BOOL fShowInfoTip : 1;
+	BOOL fHideIcons : 1;
+	BOOL fWebView : 1;
+	BOOL fFilter : 1;
+	BOOL fShowSuperHidden : 1;
+	BOOL fNoNetCrawling : 1;
+	DWORD dwWin95Unused;
+	UINT uWin95Unused;
+	LONG lParamSort;
+	int iSortDirection;
+	UINT version;
+	UINT uNotUsed;
+	BOOL fSepProcess : 1;
+	BOOL fStartPanelOn : 1;
+	BOOL fShowStartPage : 1;
+	UINT fSpareFlags : 13;
+} SHELLSTATE, *LPSHELLSTATE;
+#endif /* _WIN32_WINNT >= 0x0500 */
+
+#if (_WIN32_IE >= 0x0500)
+#pragma pack(push,8)
+typedef struct
+{
+	SIZE sizeDragImage;
+	POINT ptOffset;
+	HBITMAP hbmpDragImage;
+	COLORREF crColorKey;
+} SHDRAGIMAGE, *LPSHDRAGIMAGE;
+#pragma pack(pop)
+
+#define INTERFACE IDragSourceHelper
+DECLARE_INTERFACE_(IDragSourceHelper, IUnknown)
+{
+	STDMETHOD (QueryInterface)(THIS_ REFIID riid, void **ppv) PURE;
+	STDMETHOD_(ULONG, AddRef) (THIS) PURE;
+	STDMETHOD_(ULONG, Release) (THIS) PURE;
+	STDMETHOD (InitializeFromBitmap)(THIS_ LPSHDRAGIMAGE pshdi, IDataObject* pDataObject) PURE;
+	STDMETHOD (InitializeFromWindow)(THIS_ HWND hwnd, POINT* ppt, IDataObject* pDataObject) PURE;
+};
+#undef INTERFACE
+
+#define INTERFACE IDropTargetHelper
+DECLARE_INTERFACE_(IDropTargetHelper, IUnknown)
+{
+	STDMETHOD (QueryInterface)(THIS_ REFIID riid, void** ppv) PURE;
+	STDMETHOD_(ULONG, AddRef) (THIS) PURE;
+	STDMETHOD_(ULONG, Release) (THIS) PURE;
+	STDMETHOD (DragEnter)(THIS_ HWND hwndTarget, IDataObject* pDataObject, POINT* ppt, DWORD dwEffect) PURE;
+	STDMETHOD (DragLeave)(THIS) PURE;
+	STDMETHOD (DragOver)(THIS_ POINT* ppt, DWORD dwEffect) PURE;
+	STDMETHOD (Drop)(THIS_ IDataObject* pDataObject, POINT* ppt, DWORD dwEffect) PURE;
+	STDMETHOD (Show)(THIS_ BOOL fShow) PURE;
+};
+#undef INTERFACE
+#endif /* _WIN32_IE >= 0x0500 */
+
+#if (_WIN32_WINNT >= 0x0500)
+BOOL WINAPI PathResolve(LPWSTR, LPCWSTR*, UINT);
+#define PRF_VERIFYEXISTS            0x0001
+#define PRF_TRYPROGRAMEXTENSIONS    (0x0002 | PRF_VERIFYEXISTS)
+#define PRF_FIRSTDIRDEF             0x0004
+#define PRF_DONTFINDLNK             0x0008
+#define IDO_SHGIOI_SHARE            0x0FFFFFFF
+#define IDO_SHGIOI_LINK             0x0FFFFFFE
+#define IDO_SHGIOI_SLOWFILE         0x0FFFFFFD
+#define IDO_SHGIOI_DEFAULT          0x0FFFFFFC
+#endif
+
+void WINAPI SHAddToRecentDocs(UINT,PCVOID);
+LPITEMIDLIST WINAPI SHBrowseForFolderA(PBROWSEINFOA);
+LPITEMIDLIST WINAPI SHBrowseForFolderW(PBROWSEINFOW);
+void WINAPI SHChangeNotify(LONG,UINT,PCVOID,PCVOID);
+HRESULT WINAPI SHGetDataFromIDListA(LPSHELLFOLDER,LPCITEMIDLIST,int,PVOID,int);
+HRESULT WINAPI SHGetDataFromIDListW(LPSHELLFOLDER,LPCITEMIDLIST,int,PVOID,int);
+HRESULT WINAPI SHGetDesktopFolder(LPSHELLFOLDER*);
+HRESULT WINAPI SHGetInstanceExplorer(IUnknown **);
+HRESULT WINAPI SHGetMalloc(LPMALLOC*);
+BOOL WINAPI SHGetPathFromIDListA(LPCITEMIDLIST,LPSTR);
+BOOL WINAPI SHGetPathFromIDListW(LPCITEMIDLIST,LPWSTR);
+HRESULT WINAPI SHGetSpecialFolderLocation(HWND,int,LPITEMIDLIST*);
+HRESULT WINAPI SHLoadInProc(REFCLSID);
+#if (_WIN32_IE >= 0x0400)
+BOOL WINAPI SHGetSpecialFolderPathA(HWND,LPSTR,int,BOOL);
+BOOL WINAPI SHGetSpecialFolderPathW(HWND,LPWSTR,int,BOOL);
+#endif
+/* SHGetFolderPath in shfolder.dll on W9x, NT4, also in shell32.dll on W2K */
+HRESULT WINAPI SHGetFolderPathA(HWND,int,HANDLE,DWORD,LPSTR);
+HRESULT WINAPI SHGetFolderPathW(HWND,int,HANDLE,DWORD,LPWSTR);
+#if (_WIN32_WINDOWS >= 0x0490) || (_WIN32_WINNT >= 0x0500) /* ME or W2K */
+HRESULT WINAPI SHGetFolderLocation(HWND,int,HANDLE,DWORD,LPITEMIDLIST*);
+#endif
+#if (_WIN32_WINNT >= 0x0500)
+INT WINAPI SHGetIconOverlayIndexW(LPCWSTR pszIconPath, int iIconIndex);
+INT WINAPI SHGetIconOverlayIndexA(LPCSTR pszIconPath, int iIconIndex);
+INT WINAPI SHCreateDirectoryExA(HWND,LPCSTR,LPSECURITY_ATTRIBUTES);
+INT WINAPI SHCreateDirectoryExW(HWND,LPCWSTR,LPSECURITY_ATTRIBUTES);
+HRESULT WINAPI SHBindToParent(LPCITEMIDLIST,REFIID,VOID**,LPCITEMIDLIST*);
+#endif
+#if (_WIN32_WINNT >= 0x0501) /* XP */
+HRESULT WINAPI SHGetFolderPathAndSubDirA(HWND,int,HANDLE,DWORD,LPCSTR,LPSTR);
+HRESULT WINAPI SHGetFolderPathAndSubDirW(HWND,int,HANDLE,DWORD,LPCWSTR,LPWSTR);
+HRESULT WINAPI SHParseDisplayName(LPCWSTR,IBindCtx*,LPITEMIDLIST,SFGAOF,SFGAOF*);
+#endif
+void WINAPI SHGetSettings(LPSHELLFLAGSTATE,DWORD);
+#if (_WIN32_WINNT >= 0x0500) /* W2K */
+void WINAPI SHGetSetSettings(LPSHELLSTATE,DWORD,BOOL);
+#endif
+
+#if (_WIN32_WINNT >= 0x0500) /* W2K */
+BOOL WINAPI ILIsEqual(LPCITEMIDLIST, LPCITEMIDLIST);
+BOOL WINAPI ILIsParent(LPCITEMIDLIST, LPCITEMIDLIST, BOOL);
+BOOL WINAPI ILRemoveLastID(LPITEMIDLIST);
+HRESULT WINAPI ILLoadFromStream(IStream*, LPITEMIDLIST*);
+HRESULT WINAPI ILSaveToStream(IStream*, LPCITEMIDLIST);
+LPITEMIDLIST WINAPI ILAppendID(LPITEMIDLIST, LPCSHITEMID, BOOL);
+LPITEMIDLIST WINAPI ILClone(LPCITEMIDLIST);
+LPITEMIDLIST WINAPI ILCloneFirst(LPCITEMIDLIST);
+LPITEMIDLIST WINAPI ILCombine(LPCITEMIDLIST, LPCITEMIDLIST);
+LPITEMIDLIST WINAPI ILFindChild(LPCITEMIDLIST, LPCITEMIDLIST);
+LPITEMIDLIST WINAPI ILFindLastID(LPCITEMIDLIST);
+LPITEMIDLIST WINAPI ILGetNext(LPCITEMIDLIST);
+UINT WINAPI ILGetSize(LPCITEMIDLIST);
+void WINAPI ILFree(LPITEMIDLIST);
+
+HRESULT WINAPI SHCoCreateInstance(LPCWSTR,REFCLSID,IUnknown*,REFIID,void**);
+#endif
+
+#ifdef UNICODE
+typedef IShellExecuteHookW IShellExecuteHook;
+typedef IShellLinkW IShellLink;
+typedef BROWSEINFOW BROWSEINFO,*PBROWSEINFO,*LPBROWSEINFO;
+#define SHBrowseForFolder SHBrowseForFolderW
+#define SHGetDataFromIDList SHGetDataFromIDListW
+#define SHGetPathFromIDList SHGetPathFromIDListW
+#if (_WIN32_IE >= 0x0400)
+#define SHGetSpecialFolderPath SHGetSpecialFolderPathW
+#endif
+#define SHGetFolderPath SHGetFolderPathW
+#if (_WIN32_WINNT >= 0x0500)
+#define SHGetIconOverlayIndex SHGetIconOverlayIndexW
+#define SHCreateDirectoryEx SHCreateDirectoryExW
+#endif
+#if (_WIN32_WINNT >= 0x0501)
+#define SHGetFolderPathAndSubDir SHGetFolderPathAndSubDirW
+#endif
+#define FILEDESCRIPTOR FILEDESCRIPTORW
+#define LPFILEDESCRIPTOR LPFILEDESCRIPTORW
+#define FILEGROUPDESCRIPTOR FILEGROUPDESCRIPTORW
+#define LPFILEGROUPDESCRIPTOR LPFILEGROUPDESCRIPTORW
+
+#else
+typedef IShellExecuteHookA IShellExecuteHook;
+typedef IShellLinkA IShellLink;
+typedef BROWSEINFOA BROWSEINFO,*PBROWSEINFO,*LPBROWSEINFO;
+#define SHBrowseForFolder SHBrowseForFolderA
+#define SHGetDataFromIDList SHGetDataFromIDListA
+#define SHGetPathFromIDList SHGetPathFromIDListA
+#if (_WIN32_IE >= 0x0400)
+#define SHGetSpecialFolderPath SHGetSpecialFolderPathA
+#endif
+#define SHGetFolderPath SHGetFolderPathA
+#if (_WIN32_WINNT >= 0x0500)
+#define SHGetIconOverlayIndex SHGetIconOverlayIndexA
+#define SHCreateDirectoryEx SHCreateDirectoryExA
+#endif
+#if (_WIN32_WINNT >= 0x0501)
+#define SHGetFolderPathAndSubDir SHGetFolderPathAndSubDirA
+#endif
+#define FILEDESCRIPTOR FILEDESCRIPTORA
+#define LPFILEDESCRIPTOR LPFILEDESCRIPTORA
+#define FILEGROUPDESCRIPTOR FILEGROUPDESCRIPTORA
+#define LPFILEGROUPDESCRIPTOR LPFILEGROUPDESCRIPTORA
+#endif /* UNICODE */
+
+DWORD WINAPI SHFormatDrive(HWND,UINT,UINT,UINT);
+
+#define SHFMT_ID_DEFAULT 0xFFFF
+#define SHFMT_OPT_FULL 1
+#define SHFMT_OPT_SYSONLY 2
+#define SHFMT_ERROR 0xFFFFFFFF
+#define SHFMT_CANCEL 0xFFFFFFFE
+#define SHFMT_NOFORMAT 0xFFFFFFFD
+
+#pragma pack(pop)
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif /* _SHLOBJ_H */
Index: Daodan/MinGW/include/shlwapi.h
===================================================================
--- Daodan/MinGW/include/shlwapi.h	(revision 1046)
+++ Daodan/MinGW/include/shlwapi.h	(revision 1046)
@@ -0,0 +1,742 @@
+#ifndef _SHLWAPI_H
+#define _SHLWAPI_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef _OBJC_NO_COM
+#include <objbase.h>
+#include <shlobj.h>
+#endif
+
+#ifndef WINSHLWAPI
+#define WINSHLWAPI DECLSPEC_IMPORT
+#endif
+
+#define DLLVER_PLATFORM_WINDOWS	0x00000001
+#define DLLVER_PLATFORM_NT	0x00000002
+
+#define URL_DONT_ESCAPE_EXTRA_INFO 0x02000000
+#define URL_DONT_SIMPLIFY	0x08000000
+#define URL_ESCAPE_PERCENT	0x00001000
+#define URL_ESCAPE_SEGMENT_ONLY	0x00002000
+#define URL_ESCAPE_SPACES_ONLY	0x04000000
+#define URL_ESCAPE_UNSAFE	0x20000000
+#define URL_INTERNAL_PATH	0x00800000
+#define URL_PARTFLAG_KEEPSCHEME	0x00000001
+#define URL_PLUGGABLE_PROTOCOL	0x40000000
+#define URL_UNESCAPE		0x10000000
+#define URL_UNESCAPE_HIGH_ANSI_ONLY 0x00400000
+#define URL_UNESCAPE_INPLACE	0x00100000
+
+#ifndef RC_INVOKED
+#include <pshpack1.h>
+typedef struct _DllVersionInfo
+{
+    DWORD cbSize;
+    DWORD dwMajorVersion;
+    DWORD dwMinorVersion;
+    DWORD dwBuildNumber;
+    DWORD dwPlatformID;
+} DLLVERSIONINFO;
+typedef struct _DLLVERSIONINFO2
+{
+    DLLVERSIONINFO info1;
+    DWORD dwFlags;
+    ULONGLONG ullVersion;
+} DLLVERSIONINFO2;
+#include <poppack.h>
+
+#define MAKEDLLVERULL(major, minor, build, qfe) \
+        (((ULONGLONG)(major) << 48) | \
+         ((ULONGLONG)(minor) << 32) | \
+         ((ULONGLONG)(build) << 16) | \
+         ((ULONGLONG)(  qfe) <<  0))
+
+typedef enum {
+    ASSOCSTR_COMMAND = 1,
+    ASSOCSTR_EXECUTABLE,
+    ASSOCSTR_FRIENDLYDOCNAME,
+    ASSOCSTR_FRIENDLYAPPNAME,
+    ASSOCSTR_NOOPEN,
+    ASSOCSTR_SHELLNEWVALUE,
+    ASSOCSTR_DDECOMMAND,
+    ASSOCSTR_DDEIFEXEC,
+    ASSOCSTR_DDEAPPLICATION,
+    ASSOCSTR_DDETOPIC,
+    ASSOCSTR_INFOTIP
+#if _WIN32_IE >= 0x0600
+    ,
+    ASSOCSTR_QUICKTIP,
+    ASSOCSTR_TILEINFO,
+    ASSOCSTR_CONTENTTYPE,
+    ASSOCSTR_DEFAULTICON,
+    ASSOCSTR_SHELLEXTENSION
+#endif
+} ASSOCSTR;
+typedef enum
+{
+    ASSOCKEY_SHELLEXECCLASS = 1,
+    ASSOCKEY_APP,
+    ASSOCKEY_CLASS,
+    ASSOCKEY_BASECLASS
+} ASSOCKEY;
+typedef enum
+{
+    ASSOCDATA_MSIDESCRIPTOR = 1,
+    ASSOCDATA_NOACTIVATEHANDLER,
+    ASSOCDATA_QUERYCLASSSTORE,
+    ASSOCDATA_HASPERUSERASSOC
+#if _WIN32_IE >= 0x0600
+    ,
+    ASSOCDATA_EDITFLAGS,
+    ASSOCDATA_VALUE
+#endif
+} ASSOCDATA;
+typedef enum {
+    ASSOCF_INIT_NOREMAPCLSID = 0x00000001,
+    ASSOCF_INIT_BYEXENAME = 0x00000002,
+    ASSOCF_OPEN_BYEXENAME = 0x00000002,
+    ASSOCF_INIT_DEFAULTTOSTAR = 0x00000004,
+    ASSOCF_INIT_DEFAULTTOFOLDER = 0x00000008,
+    ASSOCF_NOUSERSETTINGS = 0x00000010,
+    ASSOCF_NOTRUNCATE = 0x00000020,
+    ASSOCF_VERIFY = 0x00000040,
+    ASSOCF_REMAPRUNDLL = 0x00000080,
+    ASSOCF_NOFIXUPS = 0x00000100,
+    ASSOCF_IGNOREBASECLASS = 0x00000200,
+    ASSOCF_INIT_IGNOREUNKNOWN = 0x00000400
+} ASSOCF;
+typedef enum
+{
+    SHREGDEL_DEFAULT = 0x00000000,
+    SHREGDEL_HKCU    = 0x00000001,
+    SHREGDEL_HKLM    = 0x00000010,
+    SHREGDEL_BOTH    = 0x00000011
+} SHREGDEL_FLAGS;
+typedef enum
+{
+    SHREGENUM_DEFAULT = 0x00000000,
+    SHREGENUM_HKCU    = 0x00000001,
+    SHREGENUM_HKLM    = 0x00000010,
+    SHREGENUM_BOTH    = 0x00000011
+} SHREGENUM_FLAGS;
+typedef enum
+{
+    URLIS_URL,
+    URLIS_OPAQUE,
+    URLIS_NOHISTORY,
+    URLIS_FILEURL,
+    URLIS_APPLIABLE,
+    URLIS_DIRECTORY,
+    URLIS_HASQUERY
+} URLIS;
+
+typedef HANDLE HUSKEY, *PHUSKEY;
+
+typedef HRESULT (WINAPI* DLLGETVERSIONPROC)(DLLVERSIONINFO *);
+
+WINSHLWAPI BOOL WINAPI ChrCmpIA(WORD,WORD);
+WINSHLWAPI BOOL WINAPI ChrCmpIW(WCHAR,WCHAR);
+#define IntlStrEqNA(pStr1, pStr2, nChar) IntlStrEqWorkerA(TRUE, pStr1, pStr2, nChar);
+#define IntlStrEqNW(pStr1, pStr2, nChar) IntlStrEqWorkerW(TRUE, pStr1, pStr2, nChar);
+#define IntlStrEqNIA(pStr1, pStr2, nChar) IntlStrEqWorkerA(FALSE, pStr1, pStr2, nChar);
+#define IntlStrEqNIW(pStr1, pStr2, nChar) IntlStrEqWorkerW(FALSE, pStr1, pStr2, nChar);
+WINSHLWAPI BOOL WINAPI IntlStrEqWorkerA(BOOL,LPCSTR,LPCSTR,int);
+WINSHLWAPI BOOL WINAPI IntlStrEqWorkerW(BOOL,LPCWSTR,LPCWSTR,int);
+WINSHLWAPI HRESULT WINAPI SHStrDupA(LPCSTR,LPWSTR*);
+WINSHLWAPI HRESULT WINAPI SHStrDupW(LPCWSTR,LPWSTR*);
+WINSHLWAPI LPSTR WINAPI StrCatA(LPSTR,LPCSTR);
+WINSHLWAPI LPWSTR WINAPI StrCatW(LPWSTR,LPCWSTR);
+WINSHLWAPI LPSTR WINAPI StrCatBuffA(LPSTR,LPCSTR,int);
+WINSHLWAPI LPWSTR WINAPI StrCatBuffW(LPWSTR,LPCWSTR,int);
+WINSHLWAPI DWORD WINAPI StrCatChainW(LPWSTR,DWORD,DWORD,LPCWSTR);
+WINSHLWAPI LPSTR WINAPI StrChrA(LPCSTR,WORD);
+WINSHLWAPI LPWSTR WINAPI StrChrW(LPCWSTR,WCHAR);
+WINSHLWAPI LPSTR WINAPI StrChrIA(LPCSTR,WORD);
+WINSHLWAPI LPWSTR WINAPI StrChrIW(LPCWSTR,WCHAR);
+#define StrCmpIA lstrcmpiA
+#define StrCmpA lstrcmpA
+#define StrCpyA lstrcpyA
+#define StrCpyNA lstrcpynA
+WINSHLWAPI int WINAPI StrCmpIW(LPCWSTR,LPCWSTR);
+WINSHLWAPI int WINAPI StrCmpW(LPCWSTR,LPCWSTR);
+WINSHLWAPI LPWSTR WINAPI StrCpyW(LPWSTR,LPCWSTR);
+WINSHLWAPI LPWSTR WINAPI StrCpyNW(LPWSTR,LPCWSTR,int);
+WINSHLWAPI int WINAPI StrCmpNA(LPCSTR,LPCSTR,int);
+WINSHLWAPI int WINAPI StrCmpNW(LPCWSTR,LPCWSTR,int);
+WINSHLWAPI int WINAPI StrCmpNIA(LPCSTR,LPCSTR,int);
+WINSHLWAPI int WINAPI StrCmpNIW(LPCWSTR,LPCWSTR,int);
+WINSHLWAPI int WINAPI StrCSpnA(LPCSTR,LPCSTR);
+WINSHLWAPI int WINAPI StrCSpnW(LPCWSTR,LPCWSTR);
+WINSHLWAPI int WINAPI StrCSpnIA(LPCSTR,LPCSTR);
+WINSHLWAPI int WINAPI StrCSpnIW(LPCWSTR,LPCWSTR);
+WINSHLWAPI LPSTR WINAPI StrDupA(LPCSTR);
+WINSHLWAPI LPWSTR WINAPI StrDupW(LPCWSTR);
+WINSHLWAPI LPSTR WINAPI StrFormatByteSize64A(LONGLONG,LPSTR,UINT);
+WINSHLWAPI LPSTR WINAPI StrFormatByteSizeA(DWORD,LPSTR,UINT);
+WINSHLWAPI LPWSTR WINAPI StrFormatByteSizeW(LONGLONG,LPWSTR,UINT);
+WINSHLWAPI LPSTR WINAPI StrFormatKBSizeA(LONGLONG,LPSTR,UINT);
+WINSHLWAPI LPWSTR WINAPI StrFormatKBSizeW(LONGLONG,LPWSTR,UINT);
+WINSHLWAPI int WINAPI StrFromTimeIntervalA(LPSTR,UINT,DWORD,int);
+WINSHLWAPI int WINAPI StrFromTimeIntervalW(LPWSTR,UINT,DWORD,int);
+WINSHLWAPI BOOL WINAPI StrIsIntlEqualA(BOOL,LPCSTR,LPCSTR,int);
+WINSHLWAPI BOOL WINAPI StrIsIntlEqualW(BOOL,LPCWSTR,LPCWSTR,int);
+WINSHLWAPI LPSTR WINAPI StrNCatA(LPSTR,LPCSTR,int);
+WINSHLWAPI LPWSTR WINAPI StrNCatW(LPWSTR,LPCWSTR,int);
+WINSHLWAPI LPSTR WINAPI StrPBrkA(LPCSTR,LPCSTR);
+WINSHLWAPI LPWSTR WINAPI StrPBrkW(LPCWSTR,LPCWSTR);
+WINSHLWAPI LPSTR WINAPI StrRChrA(LPCSTR,LPCSTR,WORD);
+WINSHLWAPI LPWSTR WINAPI StrRChrW(LPCWSTR,LPCWSTR,WCHAR);
+WINSHLWAPI LPSTR WINAPI StrRChrIA(LPCSTR,LPCSTR,WORD);
+WINSHLWAPI LPWSTR WINAPI StrRChrIW(LPCWSTR,LPCWSTR,WCHAR);
+#ifndef _OBJC_NO_COM
+WINSHLWAPI HRESULT WINAPI StrRetToBufA(LPSTRRET,LPCITEMIDLIST,LPSTR,UINT);
+WINSHLWAPI HRESULT WINAPI StrRetToBufW(LPSTRRET,LPCITEMIDLIST,LPWSTR,UINT);
+WINSHLWAPI HRESULT WINAPI StrRetToStrA(LPSTRRET,LPCITEMIDLIST,LPSTR*);
+WINSHLWAPI HRESULT WINAPI StrRetToStrW(LPSTRRET,LPCITEMIDLIST,LPWSTR*);
+#endif
+WINSHLWAPI LPSTR WINAPI StrRStrIA(LPCSTR,LPCSTR,LPCSTR);
+WINSHLWAPI LPWSTR WINAPI StrRStrIW(LPCWSTR,LPCWSTR,LPCWSTR);
+WINSHLWAPI int WINAPI StrSpnA(LPCSTR,LPCSTR);
+WINSHLWAPI int WINAPI StrSpnW(LPCWSTR,LPCWSTR);
+WINSHLWAPI LPSTR WINAPI StrStrA(LPCSTR, LPCSTR);
+WINSHLWAPI LPSTR WINAPI StrStrIA(LPCSTR,LPCSTR);
+WINSHLWAPI LPWSTR WINAPI StrStrIW(LPCWSTR,LPCWSTR);
+WINSHLWAPI LPWSTR WINAPI StrStrW(LPCWSTR,LPCWSTR);
+WINSHLWAPI int WINAPI StrToIntA(LPCSTR);
+WINSHLWAPI int WINAPI StrToIntW(LPCWSTR);
+#define STIF_DEFAULT 0x0L
+#define STIF_SUPPORT_HEX 0x1L
+WINSHLWAPI BOOL WINAPI StrToIntExA(LPCSTR,DWORD,int*);
+WINSHLWAPI BOOL WINAPI StrToIntExW(LPCWSTR,DWORD,int*);
+WINSHLWAPI BOOL WINAPI StrTrimA(LPSTR,LPCSTR);
+WINSHLWAPI BOOL WINAPI StrTrimW(LPWSTR,LPCWSTR);
+WINSHLWAPI LPSTR WINAPI PathAddBackslashA(LPSTR);
+WINSHLWAPI LPWSTR WINAPI PathAddBackslashW(LPWSTR);
+WINSHLWAPI BOOL WINAPI PathAddExtensionA(LPSTR,LPCSTR);
+WINSHLWAPI BOOL WINAPI PathAddExtensionW(LPWSTR,LPCWSTR);
+WINSHLWAPI BOOL WINAPI PathAppendA(LPSTR,LPCSTR);
+WINSHLWAPI BOOL WINAPI PathAppendW(LPWSTR,LPCWSTR);
+WINSHLWAPI LPSTR WINAPI PathBuildRootA(LPSTR,int);
+WINSHLWAPI LPWSTR WINAPI PathBuildRootW(LPWSTR,int);
+WINSHLWAPI BOOL WINAPI PathCanonicalizeA(LPSTR,LPCSTR);
+WINSHLWAPI BOOL WINAPI PathCanonicalizeW(LPWSTR,LPCWSTR);
+WINSHLWAPI LPSTR WINAPI PathCombineA(LPSTR,LPCSTR,LPCSTR);
+WINSHLWAPI LPWSTR WINAPI PathCombineW(LPWSTR,LPCWSTR,LPCWSTR);
+WINSHLWAPI int WINAPI PathCommonPrefixA(LPCSTR,LPCSTR,LPSTR);
+WINSHLWAPI int WINAPI PathCommonPrefixW(LPCWSTR,LPCWSTR,LPWSTR);
+WINSHLWAPI BOOL WINAPI PathCompactPathA(HDC,LPSTR,UINT);
+WINSHLWAPI BOOL WINAPI PathCompactPathW(HDC,LPWSTR,UINT);
+WINSHLWAPI BOOL WINAPI PathCompactPathExA(LPSTR,LPCSTR,UINT,DWORD);
+WINSHLWAPI BOOL WINAPI PathCompactPathExW(LPWSTR,LPCWSTR,UINT,DWORD);
+WINSHLWAPI HRESULT WINAPI PathCreateFromUrlA(LPCSTR,LPSTR,LPDWORD,DWORD);
+WINSHLWAPI HRESULT WINAPI PathCreateFromUrlW(LPCWSTR,LPWSTR,LPDWORD,DWORD);
+WINSHLWAPI BOOL WINAPI PathFileExistsA(LPCSTR);
+WINSHLWAPI BOOL WINAPI PathFileExistsW(LPCWSTR);
+WINSHLWAPI LPSTR WINAPI PathFindExtensionA(LPCSTR);
+WINSHLWAPI LPWSTR WINAPI PathFindExtensionW(LPCWSTR);
+WINSHLWAPI LPSTR WINAPI PathFindFileNameA(LPCSTR);
+WINSHLWAPI LPWSTR WINAPI PathFindFileNameW(LPCWSTR);
+WINSHLWAPI LPSTR WINAPI PathFindNextComponentA(LPCSTR);
+WINSHLWAPI LPWSTR WINAPI PathFindNextComponentW(LPCWSTR);
+WINSHLWAPI BOOL WINAPI PathFindOnPathA(LPSTR,LPCSTR*);
+WINSHLWAPI BOOL WINAPI PathFindOnPathW(LPWSTR,LPCWSTR*);
+WINSHLWAPI LPCSTR WINAPI PathFindSuffixArrayA(LPCSTR,LPCSTR*,int);
+WINSHLWAPI LPCWSTR WINAPI PathFindSuffixArrayW(LPCWSTR,LPCWSTR*,int);
+WINSHLWAPI LPSTR WINAPI PathGetArgsA(LPCSTR);
+WINSHLWAPI LPWSTR WINAPI PathGetArgsW(LPCWSTR);
+WINSHLWAPI UINT WINAPI PathGetCharTypeA(UCHAR);
+WINSHLWAPI UINT WINAPI PathGetCharTypeW(WCHAR);
+WINSHLWAPI int WINAPI PathGetDriveNumberA(LPCSTR);
+WINSHLWAPI int WINAPI PathGetDriveNumberW(LPCWSTR);
+WINSHLWAPI BOOL WINAPI PathIsContentTypeA(LPCSTR,LPCSTR);
+WINSHLWAPI BOOL WINAPI PathIsContentTypeW(LPCWSTR,LPCWSTR);
+WINSHLWAPI BOOL WINAPI PathIsDirectoryA(LPCSTR);
+WINSHLWAPI BOOL WINAPI PathIsDirectoryEmptyA(LPCSTR);
+WINSHLWAPI BOOL WINAPI PathIsDirectoryEmptyW(LPCWSTR);
+WINSHLWAPI BOOL WINAPI PathIsDirectoryW(LPCWSTR);
+WINSHLWAPI BOOL WINAPI PathIsFileSpecA(LPCSTR);
+WINSHLWAPI BOOL WINAPI PathIsFileSpecW(LPCWSTR);
+WINSHLWAPI BOOL WINAPI PathIsLFNFileSpecA(LPCSTR);
+WINSHLWAPI BOOL WINAPI PathIsLFNFileSpecW(LPCWSTR);
+WINSHLWAPI BOOL WINAPI PathIsNetworkPathA(LPCSTR);
+WINSHLWAPI BOOL WINAPI PathIsNetworkPathW(LPCWSTR);
+WINSHLWAPI BOOL WINAPI PathIsPrefixA(LPCSTR,LPCSTR);
+WINSHLWAPI BOOL WINAPI PathIsPrefixW(LPCWSTR,LPCWSTR);
+WINSHLWAPI BOOL WINAPI PathIsRelativeA(LPCSTR);
+WINSHLWAPI BOOL WINAPI PathIsRelativeW(LPCWSTR);
+WINSHLWAPI BOOL WINAPI PathIsRootA(LPCSTR);
+WINSHLWAPI BOOL WINAPI PathIsRootW(LPCWSTR);
+WINSHLWAPI BOOL WINAPI PathIsSameRootA(LPCSTR,LPCSTR);
+WINSHLWAPI BOOL WINAPI PathIsSameRootW(LPCWSTR,LPCWSTR);
+WINSHLWAPI BOOL WINAPI PathIsSystemFolderA(LPCSTR,DWORD);
+WINSHLWAPI BOOL WINAPI PathIsSystemFolderW(LPCWSTR,DWORD);
+WINSHLWAPI BOOL WINAPI PathIsUNCA(LPCSTR);
+WINSHLWAPI BOOL WINAPI PathIsUNCServerA(LPCSTR);
+WINSHLWAPI BOOL WINAPI PathIsUNCServerShareA(LPCSTR);
+WINSHLWAPI BOOL WINAPI PathIsUNCServerShareW(LPCWSTR);
+WINSHLWAPI BOOL WINAPI PathIsUNCServerW(LPCWSTR);
+WINSHLWAPI BOOL WINAPI PathIsUNCW(LPCWSTR);
+WINSHLWAPI BOOL WINAPI PathIsURLA(LPCSTR);
+WINSHLWAPI BOOL WINAPI PathIsURLW(LPCWSTR);
+WINSHLWAPI BOOL WINAPI PathMakePrettyA(LPSTR);
+WINSHLWAPI BOOL WINAPI PathMakePrettyW(LPWSTR);
+WINSHLWAPI BOOL WINAPI PathMakeSystemFolderA(LPSTR);
+WINSHLWAPI BOOL WINAPI PathMakeSystemFolderW(LPWSTR);
+WINSHLWAPI BOOL WINAPI PathMatchSpecA(LPCSTR,LPCSTR);
+WINSHLWAPI BOOL WINAPI PathMatchSpecW(LPCWSTR,LPCWSTR);
+WINSHLWAPI int WINAPI PathParseIconLocationA(LPSTR);
+WINSHLWAPI int WINAPI PathParseIconLocationW(LPWSTR);
+WINSHLWAPI void WINAPI PathQuoteSpacesA(LPSTR);
+WINSHLWAPI void WINAPI PathQuoteSpacesW(LPWSTR);
+WINSHLWAPI BOOL WINAPI PathRelativePathToA(LPSTR,LPCSTR,DWORD,LPCSTR,DWORD);
+WINSHLWAPI BOOL WINAPI PathRelativePathToW(LPWSTR,LPCWSTR,DWORD,LPCWSTR,DWORD);
+WINSHLWAPI void WINAPI PathRemoveArgsA(LPSTR);
+WINSHLWAPI void WINAPI PathRemoveArgsW(LPWSTR);
+WINSHLWAPI LPSTR WINAPI PathRemoveBackslashA(LPSTR);
+WINSHLWAPI LPWSTR WINAPI PathRemoveBackslashW(LPWSTR);
+WINSHLWAPI void WINAPI PathRemoveBlanksA(LPSTR);
+WINSHLWAPI void WINAPI PathRemoveBlanksW(LPWSTR);
+WINSHLWAPI void WINAPI PathRemoveExtensionA(LPSTR);
+WINSHLWAPI void WINAPI PathRemoveExtensionW(LPWSTR);
+WINSHLWAPI BOOL WINAPI PathRemoveFileSpecA(LPSTR);
+WINSHLWAPI BOOL WINAPI PathRemoveFileSpecW(LPWSTR);
+WINSHLWAPI BOOL WINAPI PathRenameExtensionA(LPSTR,LPCSTR);
+WINSHLWAPI BOOL WINAPI PathRenameExtensionW(LPWSTR,LPCWSTR);
+WINSHLWAPI BOOL WINAPI PathSearchAndQualifyA(LPCSTR,LPSTR,UINT);
+WINSHLWAPI BOOL WINAPI PathSearchAndQualifyW(LPCWSTR,LPWSTR,UINT);
+WINSHLWAPI void WINAPI PathSetDlgItemPathA(HWND,int,LPCSTR);
+WINSHLWAPI void WINAPI PathSetDlgItemPathW(HWND,int,LPCWSTR);
+WINSHLWAPI LPSTR WINAPI PathSkipRootA(LPCSTR);
+WINSHLWAPI LPWSTR WINAPI PathSkipRootW(LPCWSTR);
+WINSHLWAPI void WINAPI PathStripPathA(LPSTR);
+WINSHLWAPI void WINAPI PathStripPathW(LPWSTR);
+WINSHLWAPI BOOL WINAPI PathStripToRootA(LPSTR);
+WINSHLWAPI BOOL WINAPI PathStripToRootW(LPWSTR);
+WINSHLWAPI void WINAPI PathUndecorateA(LPSTR);
+WINSHLWAPI void WINAPI PathUndecorateW(LPWSTR);
+WINSHLWAPI BOOL WINAPI PathUnExpandEnvStringsA(LPCSTR,LPSTR,UINT);
+WINSHLWAPI BOOL WINAPI PathUnExpandEnvStringsW(LPCWSTR,LPWSTR,UINT);
+WINSHLWAPI BOOL WINAPI PathUnmakeSystemFolderA(LPSTR);
+WINSHLWAPI BOOL WINAPI PathUnmakeSystemFolderW(LPWSTR);
+WINSHLWAPI void WINAPI PathUnquoteSpacesA(LPSTR);
+WINSHLWAPI void WINAPI PathUnquoteSpacesW(LPWSTR);
+WINSHLWAPI HRESULT WINAPI SHAutoComplete(HWND,DWORD);
+#ifndef _OBJC_NO_COM
+WINSHLWAPI HRESULT WINAPI SHCreateStreamOnFileA(LPCSTR,DWORD,struct IStream**);
+WINSHLWAPI HRESULT WINAPI SHCreateStreamOnFileW(LPCWSTR,DWORD,struct IStream**);
+WINSHLWAPI struct IStream* WINAPI SHOpenRegStream2A(HKEY,LPCSTR,LPCSTR,DWORD);
+WINSHLWAPI struct IStream* WINAPI SHOpenRegStream2W(HKEY,LPCWSTR,LPCWSTR,DWORD);
+WINSHLWAPI struct IStream* WINAPI SHOpenRegStreamA(HKEY,LPCSTR,LPCSTR,DWORD);
+WINSHLWAPI struct IStream* WINAPI SHOpenRegStreamW(HKEY,LPCWSTR,LPCWSTR,DWORD);
+#endif
+WINSHLWAPI BOOL WINAPI SHCreateThread(LPTHREAD_START_ROUTINE,void*,DWORD,LPTHREAD_START_ROUTINE);
+WINSHLWAPI DWORD WINAPI SHCopyKeyA(HKEY,LPCSTR,HKEY,DWORD);
+WINSHLWAPI DWORD WINAPI SHCopyKeyW(HKEY,LPCWSTR,HKEY,DWORD);
+WINSHLWAPI DWORD WINAPI SHDeleteEmptyKeyA(HKEY,LPCSTR);
+WINSHLWAPI DWORD WINAPI SHDeleteEmptyKeyW(HKEY,LPCWSTR);
+WINSHLWAPI DWORD WINAPI SHDeleteKeyA(HKEY,LPCSTR);
+WINSHLWAPI DWORD WINAPI SHDeleteKeyW(HKEY,LPCWSTR);
+WINSHLWAPI DWORD WINAPI SHEnumKeyExA(HKEY,DWORD,LPSTR,LPDWORD);
+WINSHLWAPI DWORD WINAPI SHEnumKeyExW(HKEY,DWORD,LPWSTR,LPDWORD);
+WINSHLWAPI DWORD WINAPI SHQueryInfoKeyA(HKEY,LPDWORD,LPDWORD,LPDWORD,LPDWORD);
+WINSHLWAPI DWORD WINAPI SHQueryInfoKeyW(HKEY,LPDWORD,LPDWORD,LPDWORD,LPDWORD);
+WINSHLWAPI DWORD WINAPI SHQueryValueExA(HKEY,LPCSTR,LPDWORD,LPDWORD,LPVOID,LPDWORD);
+WINSHLWAPI DWORD WINAPI SHQueryValueExW(HKEY,LPCWSTR,LPDWORD,LPDWORD,LPVOID,LPDWORD);
+#ifndef _OBJC_NO_COM
+WINSHLWAPI HRESULT WINAPI SHGetThreadRef(IUnknown**);
+WINSHLWAPI HRESULT WINAPI SHSetThreadRef(IUnknown*);
+WINSHLWAPI BOOL WINAPI SHSkipJunction(IBindCtx*,const CLSID*);
+#endif
+WINSHLWAPI DWORD WINAPI SHEnumValueA(HKEY,DWORD,LPSTR,LPDWORD,LPDWORD,LPVOID,LPDWORD);
+WINSHLWAPI DWORD WINAPI SHEnumValueW(HKEY,DWORD,LPWSTR,LPDWORD,LPDWORD,LPVOID,LPDWORD);
+WINSHLWAPI DWORD WINAPI SHGetValueA(HKEY,LPCSTR,LPCSTR,LPDWORD,LPVOID,LPDWORD);
+WINSHLWAPI DWORD WINAPI SHGetValueW(HKEY,LPCWSTR,LPCWSTR,LPDWORD,LPVOID,LPDWORD);
+WINSHLWAPI DWORD WINAPI SHSetValueA(HKEY,LPCSTR,LPCSTR,DWORD,LPCVOID,DWORD);
+WINSHLWAPI DWORD WINAPI SHSetValueW(HKEY,LPCWSTR,LPCWSTR,DWORD,LPCVOID,DWORD);
+WINSHLWAPI DWORD WINAPI SHDeleteValueA(HKEY,LPCSTR,LPCSTR);
+WINSHLWAPI DWORD WINAPI SHDeleteValueW(HKEY,LPCWSTR,LPCWSTR);
+WINSHLWAPI HRESULT WINAPI AssocCreate(CLSID,const IID* const,LPVOID*);
+WINSHLWAPI HRESULT WINAPI AssocQueryKeyA(ASSOCF,ASSOCKEY,LPCSTR,LPCSTR,HKEY*);
+WINSHLWAPI HRESULT WINAPI AssocQueryKeyW(ASSOCF,ASSOCKEY,LPCWSTR,LPCWSTR,HKEY*);
+WINSHLWAPI HRESULT WINAPI AssocQueryStringA(ASSOCF,ASSOCSTR,LPCSTR,LPCSTR,LPSTR,DWORD*);
+WINSHLWAPI HRESULT WINAPI AssocQueryStringByKeyA(ASSOCF,ASSOCSTR,HKEY,LPCSTR,LPSTR,DWORD*);
+WINSHLWAPI HRESULT WINAPI AssocQueryStringByKeyW(ASSOCF,ASSOCSTR,HKEY,LPCWSTR,LPWSTR,DWORD*);
+WINSHLWAPI HRESULT WINAPI AssocQueryStringW(ASSOCF,ASSOCSTR,LPCWSTR,LPCWSTR,LPWSTR,DWORD*);
+
+WINSHLWAPI HRESULT WINAPI UrlApplySchemeA(LPCSTR,LPSTR,LPDWORD,DWORD);
+WINSHLWAPI HRESULT WINAPI UrlApplySchemeW(LPCWSTR,LPWSTR,LPDWORD,DWORD);
+WINSHLWAPI HRESULT WINAPI UrlCanonicalizeA(LPCSTR,LPSTR,LPDWORD,DWORD);
+WINSHLWAPI HRESULT WINAPI UrlCanonicalizeW(LPCWSTR,LPWSTR,LPDWORD,DWORD);
+WINSHLWAPI HRESULT WINAPI UrlCombineA(LPCSTR,LPCSTR,LPSTR,LPDWORD,DWORD);
+WINSHLWAPI HRESULT WINAPI UrlCombineW(LPCWSTR,LPCWSTR,LPWSTR,LPDWORD,DWORD);
+WINSHLWAPI int WINAPI UrlCompareA(LPCSTR,LPCSTR,BOOL);
+WINSHLWAPI int WINAPI UrlCompareW(LPCWSTR,LPCWSTR,BOOL);
+WINSHLWAPI HRESULT WINAPI UrlCreateFromPathA(LPCSTR,LPSTR,LPDWORD,DWORD);
+WINSHLWAPI HRESULT WINAPI UrlCreateFromPathW(LPCWSTR,LPWSTR,LPDWORD,DWORD);
+WINSHLWAPI HRESULT WINAPI UrlEscapeA(LPCSTR,LPSTR,LPDWORD,DWORD);
+WINSHLWAPI HRESULT WINAPI UrlEscapeW(LPCWSTR,LPWSTR,LPDWORD,DWORD);
+WINSHLWAPI LPCSTR WINAPI UrlGetLocationA(LPCSTR);
+WINSHLWAPI LPCWSTR WINAPI UrlGetLocationW(LPCWSTR);
+WINSHLWAPI HRESULT WINAPI UrlGetPartA(LPCSTR,LPSTR,LPDWORD,DWORD,DWORD);
+WINSHLWAPI HRESULT WINAPI UrlGetPartW(LPCWSTR,LPWSTR,LPDWORD,DWORD,DWORD);
+WINSHLWAPI HRESULT WINAPI UrlHashA(LPCSTR,LPBYTE,DWORD);
+WINSHLWAPI HRESULT WINAPI UrlHashW(LPCWSTR,LPBYTE,DWORD);
+WINSHLWAPI BOOL WINAPI UrlIsA(LPCSTR,URLIS);
+WINSHLWAPI BOOL WINAPI UrlIsW(LPCWSTR,URLIS);
+#define UrlIsFileUrlA(pszURL) UrlIsA(pzURL, URLIS_FILEURL)
+#define UrlIsFileUrlW(pszURL) UrlIsW(pszURL, URLIS_FILEURL)
+WINSHLWAPI BOOL WINAPI UrlIsNoHistoryA(LPCSTR);
+WINSHLWAPI BOOL WINAPI UrlIsNoHistoryW(LPCWSTR);
+WINSHLWAPI BOOL WINAPI UrlIsOpaqueA(LPCSTR);
+WINSHLWAPI BOOL WINAPI UrlIsOpaqueW(LPCWSTR);
+WINSHLWAPI HRESULT WINAPI UrlUnescapeA(LPSTR,LPSTR,LPDWORD,DWORD);
+WINSHLWAPI HRESULT WINAPI UrlUnescapeW(LPWSTR,LPWSTR,LPDWORD,DWORD);
+#define UrlUnescapeInPlaceA(pszUrl,dwFlags )\
+	UrlUnescapeA(pszUrl, NULL, NULL, dwFlags | URL_UNESCAPE_INPLACE)
+#define UrlUnescapeInPlaceW(pszUrl,dwFlags )\
+	UrlUnescapeW(pszUrl, NULL, NULL, dwFlags | URL_UNESCAPE_INPLACE)
+WINSHLWAPI DWORD WINAPI SHRegCloseUSKey(HUSKEY);
+WINSHLWAPI LONG WINAPI SHRegCreateUSKeyA(LPCSTR,REGSAM,HUSKEY,PHUSKEY,DWORD);
+WINSHLWAPI LONG WINAPI SHRegCreateUSKeyW(LPCWSTR,REGSAM,HUSKEY,PHUSKEY,DWORD);
+WINSHLWAPI LONG WINAPI SHRegDeleteEmptyUSKeyA(HUSKEY,LPCSTR,SHREGDEL_FLAGS);
+WINSHLWAPI LONG WINAPI SHRegDeleteEmptyUSKeyW(HUSKEY,LPCWSTR,SHREGDEL_FLAGS);
+WINSHLWAPI LONG WINAPI SHRegDeleteUSValueA(HUSKEY,LPCSTR,SHREGDEL_FLAGS);
+WINSHLWAPI LONG WINAPI SHRegDeleteUSValueW(HUSKEY,LPCWSTR,SHREGDEL_FLAGS);
+WINSHLWAPI HKEY WINAPI SHRegDuplicateHKey(HKEY);
+WINSHLWAPI DWORD WINAPI SHRegEnumUSKeyA(HUSKEY,DWORD,LPSTR,LPDWORD,SHREGENUM_FLAGS);
+WINSHLWAPI DWORD WINAPI SHRegEnumUSKeyW(HUSKEY,DWORD,LPWSTR,LPDWORD,SHREGENUM_FLAGS);
+WINSHLWAPI DWORD WINAPI SHRegEnumUSValueA(HUSKEY,DWORD,LPSTR,LPDWORD,LPDWORD,LPVOID,LPDWORD,SHREGENUM_FLAGS);
+WINSHLWAPI DWORD WINAPI SHRegEnumUSValueW(HUSKEY,DWORD,LPWSTR,LPDWORD,LPDWORD,LPVOID,LPDWORD,SHREGENUM_FLAGS);
+WINSHLWAPI BOOL WINAPI SHRegGetBoolUSValueA(LPCSTR,LPCSTR,BOOL,BOOL);
+WINSHLWAPI BOOL WINAPI SHRegGetBoolUSValueW(LPCWSTR,LPCWSTR,BOOL,BOOL);
+WINSHLWAPI DWORD WINAPI SHRegGetPathA(HKEY,LPCSTR,LPCSTR,LPSTR,DWORD);
+WINSHLWAPI DWORD WINAPI SHRegGetPathW(HKEY,LPCWSTR,LPCWSTR,LPWSTR,DWORD);
+WINSHLWAPI LONG WINAPI SHRegGetUSValueA(LPCSTR,LPCSTR,LPDWORD,LPVOID,LPDWORD,BOOL,LPVOID,DWORD);
+WINSHLWAPI LONG WINAPI SHRegGetUSValueW(LPCWSTR,LPCWSTR,LPDWORD,LPVOID,LPDWORD,BOOL,LPVOID,DWORD);
+WINSHLWAPI LONG WINAPI SHRegOpenUSKeyA(LPCSTR,REGSAM,HUSKEY,PHUSKEY,BOOL);
+WINSHLWAPI LONG WINAPI SHRegOpenUSKeyW(LPCWSTR,REGSAM,HUSKEY,PHUSKEY,BOOL);
+WINSHLWAPI DWORD WINAPI SHRegQueryInfoUSKeyA(HUSKEY,LPDWORD,LPDWORD,LPDWORD,LPDWORD,SHREGENUM_FLAGS);
+WINSHLWAPI DWORD WINAPI SHRegQueryInfoUSKeyW(HUSKEY,LPDWORD,LPDWORD,LPDWORD,LPDWORD,SHREGENUM_FLAGS);
+WINSHLWAPI LONG WINAPI SHRegQueryUSValueA(HUSKEY,LPCSTR,LPDWORD,LPVOID,LPDWORD,BOOL,LPVOID,DWORD);
+WINSHLWAPI LONG WINAPI SHRegQueryUSValueW(HUSKEY,LPCWSTR,LPDWORD,LPVOID,LPDWORD,BOOL,LPVOID,DWORD);
+WINSHLWAPI DWORD WINAPI SHRegSetPathA(HKEY,LPCSTR,LPCSTR,LPCSTR,DWORD);
+WINSHLWAPI DWORD WINAPI SHRegSetPathW(HKEY,LPCWSTR,LPCWSTR,LPCWSTR,DWORD);
+WINSHLWAPI LONG WINAPI SHRegSetUSValueA(LPCSTR,LPCSTR,DWORD,LPVOID,DWORD,DWORD);
+WINSHLWAPI LONG WINAPI SHRegSetUSValueW(LPCWSTR,LPCWSTR,DWORD,LPVOID,DWORD,DWORD);
+WINSHLWAPI LONG WINAPI SHRegWriteUSValueA(HUSKEY,LPCSTR,DWORD,LPVOID,DWORD,DWORD);
+WINSHLWAPI LONG WINAPI SHRegWriteUSValueW(HUSKEY,LPCWSTR,DWORD,LPVOID,DWORD,DWORD);
+WINSHLWAPI HRESULT WINAPI HashData(LPBYTE,DWORD,LPBYTE,DWORD);
+WINSHLWAPI HPALETTE WINAPI SHCreateShellPalette(HDC);
+WINSHLWAPI COLORREF WINAPI ColorHLSToRGB(WORD,WORD,WORD);
+WINSHLWAPI COLORREF WINAPI ColorAdjustLuma(COLORREF,int,BOOL);
+WINSHLWAPI void WINAPI ColorRGBToHLS(COLORREF,WORD*,WORD*,WORD*);
+WINSHLWAPI int __cdecl wnsprintfA(LPSTR,int,LPCSTR,...);
+WINSHLWAPI int __cdecl wnsprintfW(LPWSTR,int,LPCWSTR,...);
+WINSHLWAPI int WINAPI wvnsprintfA(LPSTR,int,LPCSTR,va_list);
+WINSHLWAPI int WINAPI wvnsprintfW(LPWSTR,int,LPCWSTR,va_list);
+
+HINSTANCE WINAPI MLLoadLibraryA(LPCSTR,HANDLE,DWORD,LPCSTR,BOOL);
+HINSTANCE WINAPI MLLoadLibraryW(LPCWSTR,HANDLE,DWORD,LPCWSTR,BOOL);
+
+HRESULT WINAPI DllInstall(BOOL,LPCWSTR);
+
+#ifdef UNICODE
+#define ChrCmpI ChrCmpIW
+#define IntlStrEqN IntlStrEqNW
+#define IntlStrEqNI IntlStrEqNIW
+#define IntlStrEqWorker IntlStrEqWorkerW
+#define SHStrDup SHStrDupW
+#define StrCat StrCatW
+#define StrCatBuff StrCatBuffW
+#define StrChr StrChrW
+#define StrChrI StrChrIW
+#define StrCmp StrCmpW
+#define StrCmpI StrCmpIW
+#define StrCmpNI StrCmpNIW
+#define StrCmpN StrCmpNW
+#define StrCpyN StrCpyNW
+#define StrCpy StrCpyW
+#define StrCSpnI StrCSpnIW
+#define StrCSpn StrCSpnW
+#define StrDup StrDupW
+#define StrFormatByteSize StrFormatByteSizeW
+#define StrFormatKBSize StrFormatKBSizeW
+#define StrFromTimeInterval StrFromTimeIntervalW
+#define StrIsIntlEqual StrIsIntlEqualW
+#define StrNCat StrNCatW
+#define StrPBrk StrPBrkW
+#define StrRChr StrRChrW
+#define StrRChrI StrRChrIW
+#ifndef _OBJC_NO_COM
+#define StrRetToBuf StrRetToBufW
+#define StrRetToStr StrRetToStrW
+#endif
+#define StrRStrI StrRStrIW
+#define StrSpn StrSpnW
+#define StrStrI StrStrIW
+#define StrStr StrStrW
+#define StrToInt StrToIntW
+#define StrToIntEx StrToIntExW
+#define StrTrim StrTrimW
+#define PathAddBackslash PathAddBackslashW
+#define PathAddExtension PathAddExtensionW
+#define PathAppend PathAppendW
+#define PathBuildRoot PathBuildRootW
+#define PathCanonicalize PathCanonicalizeW
+#define PathCombine PathCombineW
+#define PathCommonPrefix PathCommonPrefixW
+#define PathCompactPath PathCompactPathW
+#define PathCompactPathEx PathCompactPathExW
+#define PathCreateFromUrl PathCreateFromUrlW
+#define PathFileExists PathFileExistsW
+#define PathFindExtension PathFindExtensionW
+#define PathFindFileName PathFindFileNameW
+#define PathFindNextComponent PathFindNextComponentW
+#define PathFindOnPath PathFindOnPathW
+#define PathFindSuffixArray PathFindSuffixArrayW
+#define PathGetArgs PathGetArgsW
+#define PathGetCharType PathGetCharTypeW
+#define PathGetDriveNumber PathGetDriveNumberW
+#define PathIsContentType PathIsContentTypeW
+#define PathIsDirectoryEmpty PathIsDirectoryEmptyW
+#define PathIsDirectory PathIsDirectoryW
+#define PathIsFileSpec PathIsFileSpecW
+#define PathIsLFNFileSpec PathIsLFNFileSpecW
+#define PathIsNetworkPath PathIsNetworkPathW
+#define PathIsPrefix PathIsPrefixW
+#define PathIsRelative PathIsRelativeW
+#define PathIsRoot PathIsRootW
+#define PathIsSameRoot PathIsSameRootW
+#define PathIsSystemFolder PathIsSystemFolderW
+#define PathIsUNCServerShare PathIsUNCServerShareW
+#define PathIsUNCServer PathIsUNCServerW
+#define PathIsUNC PathIsUNCW
+#define PathIsURL PathIsURLW
+#define PathMakePretty PathMakePrettyW
+#define PathMakeSystemFolder PathMakeSystemFolderW
+#define PathMatchSpec PathMatchSpecW
+#define PathParseIconLocation PathParseIconLocationW
+#define PathQuoteSpaces PathQuoteSpacesW
+#define PathRelativePathTo PathRelativePathToW
+#define PathRemoveArgs PathRemoveArgsW
+#define PathRemoveBackslash PathRemoveBackslashW
+#define PathRemoveBlanks PathRemoveBlanksW
+#define PathRemoveExtension PathRemoveExtensionW
+#define PathRemoveFileSpec PathRemoveFileSpecW
+#define PathRenameExtension PathRenameExtensionW
+#define PathSearchAndQualify PathSearchAndQualifyW
+#define PathSetDlgItemPath PathSetDlgItemPathW
+#define PathSkipRoot PathSkipRootW
+#define PathStripPath PathStripPathW
+#define PathStripToRoot PathStripToRootW
+#define PathUndecorate PathUndecorateW
+#define PathUnExpandEnvStrings PathUnExpandEnvStringsW
+#define PathUnmakeSystemFolder PathUnmakeSystemFolderW
+#define PathUnquoteSpaces PathUnquoteSpacesW
+#ifndef _OBJC_NO_COM
+#define SHCreateStreamOnFile SHCreateStreamOnFileW
+#define SHOpenRegStream SHOpenRegStreamW
+#define SHOpenRegStream2 SHOpenRegStream2W
+#endif
+#define SHCopyKey SHCopyKeyW
+#define SHDeleteEmptyKey SHDeleteEmptyKeyW
+#define SHDeleteKey SHDeleteKeyW
+#define SHEnumKeyEx SHEnumKeyExW
+#define SHQueryInfoKey SHRegQueryInfoKeyW
+#define SHQueryValueEx SHQueryValueExW
+#define SHEnumValue SHEnumValueW
+#define SHGetValue SHGetValueW
+#define SHSetValue SHSetValueW
+#define SHDeleteValue SHDeleteValueW
+#define AssocQueryKey AssocQueryKeyW
+#define AssocQueryStringByKey AssocQueryStringByKeyW
+#define AssocQueryString AssocQueryStringW
+#define UrlApplyScheme UrlApplySchemeW
+#define UrlCanonicalize UrlCanonicalizeW
+#define UrlCombine UrlCombineW
+#define UrlCompare UrlCompareW
+#define UrlCreateFromPath UrlCreateFromPathW
+#define UrlEscape UrlEscapeW
+#define UrlGetLocation UrlGetLocationW
+#define UrlGetPart UrlGetPartW
+#define UrlHash UrlHashW
+#define UrlIs UrlIsW
+#define UrlIsFileUrl UrlIsFileUrlW
+#define UrlIsNoHistory UrlIsNoHistoryW
+#define UrlIsOpaque UrlIsOpaqueW
+#define UrlUnescape UrlUnescapeW
+#define UrlUnescapeInPlace UrlUnescapeInPlaceW
+#define SHRegCreateUSKey SHRegCreateUSKeyW
+#define SHRegDeleteEmptyUSKey SHRegDeleteEmptyUSKeyW
+#define SHRegDeleteUSValue SHRegDeleteUSValueW
+#define SHRegEnumUSKey SHRegEnumUSKeyW
+#define SHRegEnumUSValue SHRegEnumUSValueW
+#define SHRegGetBoolUSValue SHRegGetBoolUSValueW
+#define SHRegGetPath SHRegGetPathW
+#define SHRegGetUSValue SHRegGetUSValueW
+#define SHRegOpenUSKey SHRegOpenUSKeyW
+#define SHRegQueryInfoUSKey SHRegQueryInfoUSKeyW
+#define SHRegQueryUSValue SHRegQueryUSValueW
+#define SHRegSetPath SHRegSetPathW
+#define SHRegSetUSValue SHRegSetUSValueW
+#define SHRegWriteUSValue SHRegWriteUSValueW
+#define wnsprintf wnsprintfW
+#define wvnsprintf wvnsprintfW
+#else /* UNICODE */
+#define ChrCmpI ChrCmpIA
+#define IntlStrEqN IntlStrEqNA
+#define IntlStrEqNI IntlStrEqNIA
+#define IntlStrEqWorker IntlStrEqWorkerA
+#define SHStrDup SHStrDupA
+#define StrCat lstrcatA
+#define StrCatBuff StrCatBuffA
+#define StrChr StrChrA
+#define StrChrI StrChrIA
+#define StrCmp lstrcmpA
+#define StrCmpI lstrcmpiA
+#define StrCmpNI StrCmpNIA
+#define StrCmpN StrCmpNA
+#define StrCpyN lstrcpynA
+#define StrCpy lstrcpyA
+#define StrCSpnI StrCSpnIA
+#define StrCSpn StrCSpnA
+#define StrDup StrDupA
+#define StrFormatByteSize StrFormatByteSizeA
+#define StrFormatKBSize StrFormatKBSizeA
+#define StrFromTimeInterval StrFromTimeIntervalA
+#define StrIsIntlEqual StrIsIntlEqualA
+#define StrNCat StrNCatA
+#define StrPBrk StrPBrkA
+#define StrRChr StrRChrA
+#define StrRChrI StrRChrIA
+#ifndef _OBJC_NO_COM
+#define StrRetToBuf StrRetToBufA
+#define StrRetToStr StrRetToStrA
+#endif
+#define StrRStrI StrRStrIA
+#define StrSpn StrSpnA
+#define StrStrI StrStrIA
+#define StrStr StrStrA
+#define StrToInt StrToIntA
+#define StrToIntEx StrToIntExA
+#define StrTrim StrTrimA
+#define PathAddBackslash PathAddBackslashA
+#define PathAddExtension PathAddExtensionA
+#define PathAppend PathAppendA
+#define PathBuildRoot PathBuildRootA
+#define PathCanonicalize PathCanonicalizeA
+#define PathCombine PathCombineA
+#define PathCommonPrefix PathCommonPrefixA
+#define PathCompactPath PathCompactPathA
+#define PathCompactPathEx PathCompactPathExA
+#define PathCreateFromUrl PathCreateFromUrlA
+#define PathFileExists PathFileExistsA
+#define PathFindExtension PathFindExtensionA
+#define PathFindFileName PathFindFileNameA
+#define PathFindNextComponent PathFindNextComponentA
+#define PathFindOnPath PathFindOnPathA
+#define PathFindSuffixArray PathFindSuffixArrayA
+#define PathGetArgs PathGetArgsA
+#define PathGetCharType PathGetCharTypeA
+#define PathGetDriveNumber PathGetDriveNumberA
+#define PathIsContentType PathIsContentTypeA
+#define PathIsDirectoryEmpty PathIsDirectoryEmptyA
+#define PathIsDirectory PathIsDirectoryA
+#define PathIsFileSpec PathIsFileSpecA
+#define PathIsLFNFileSpec PathIsLFNFileSpecA
+#define PathIsNetworkPath PathIsNetworkPathA
+#define PathIsPrefix PathIsPrefixA
+#define PathIsRelative PathIsRelativeA
+#define PathIsRoot PathIsRootA
+#define PathIsSameRoot PathIsSameRootA
+#define PathIsSystemFolder PathIsSystemFolderA
+#define PathIsUNCServerShare PathIsUNCServerShareA
+#define PathIsUNCServer PathIsUNCServerA
+#define PathIsUNC PathIsUNCA
+#define PathIsURL PathIsURLA
+#define PathMakePretty PathMakePrettyA
+#define PathMakeSystemFolder PathMakeSystemFolderA
+#define PathMatchSpec PathMatchSpecA
+#define PathParseIconLocation PathParseIconLocationA
+#define PathQuoteSpaces PathQuoteSpacesA
+#define PathRelativePathTo PathRelativePathToA
+#define PathRemoveArgs PathRemoveArgsA
+#define PathRemoveBackslash PathRemoveBackslashA
+#define PathRemoveBlanks PathRemoveBlanksA
+#define PathRemoveExtension PathRemoveExtensionA
+#define PathRemoveFileSpec PathRemoveFileSpecA
+#define PathRenameExtension PathRenameExtensionA
+#define PathSearchAndQualify PathSearchAndQualifyA
+#define PathSetDlgItemPath PathSetDlgItemPathA
+#define PathSkipRoot PathSkipRootA
+#define PathStripPath PathStripPathA
+#define PathStripToRoot PathStripToRootA
+#define PathUndecorate PathUndecorateA
+#define PathUnExpandEnvStrings PathUnExpandEnvStringsA
+#define PathUnmakeSystemFolder PathUnmakeSystemFolderA
+#define PathUnquoteSpaces PathUnquoteSpacesA
+#ifndef _OBJC_NO_COM
+#define SHCreateStreamOnFile SHCreateStreamOnFileA
+#define SHOpenRegStream SHOpenRegStreamA
+#define SHOpenRegStream2 SHOpenRegStream2A
+#endif
+#define SHCopyKey SHCopyKeyA
+#define SHDeleteEmptyKey SHDeleteEmptyKeyA
+#define SHDeleteKey SHDeleteKeyA
+#define SHEnumKeyEx SHEnumKeyExA
+#define SHQueryInfoKey SHRegQueryInfoKeyA
+#define SHQueryValueEx SHQueryValueExA
+#define SHEnumValue SHEnumValueA
+#define SHGetValue SHGetValueA
+#define SHSetValue SHSetValueA
+#define SHDeleteValue SHDeleteValueA
+#define AssocQueryKey AssocQueryKeyA
+#define AssocQueryStringByKey AssocQueryStringByKeyA
+#define AssocQueryString AssocQueryStringA
+#define UrlApplyScheme UrlApplySchemeA
+#define UrlCanonicalize UrlCanonicalizeA
+#define UrlCombine UrlCombineA
+#define UrlCompare UrlCompareA
+#define UrlCreateFromPath UrlCreateFromPathA
+#define UrlEscape UrlEscapeA
+#define UrlGetLocation UrlGetLocationA
+#define UrlGetPart UrlGetPartA
+#define UrlHash UrlHashA
+#define UrlIs UrlIsA
+#define UrlIsFileUrl UrlIsFileUrl
+#define UrlIsNoHistory UrlIsNoHistoryA
+#define UrlIsOpaque UrlIsOpaqueA
+#define UrlUnescape UrlUnescapeA
+#define UrlUnescapeInPlace UrlUnescapeInPlaceA
+#define SHRegCreateUSKey SHRegCreateUSKeyA
+#define SHRegDeleteEmptyUSKey SHRegDeleteEmptyUSKeyA
+#define SHRegDeleteUSValue SHRegDeleteUSValueA
+#define SHRegEnumUSKey SHRegEnumUSKeyA
+#define SHRegEnumUSValue SHRegEnumUSValueA
+#define SHRegGetBoolUSValue SHRegGetBoolUSValueA
+#define SHRegGetPath SHRegGetPathA
+#define SHRegGetUSValue SHRegGetUSValueA
+#define SHRegOpenUSKey SHRegOpenUSKeyA
+#define SHRegQueryInfoUSKey SHRegQueryInfoUSKeyA
+#define SHRegQueryUSValue SHRegQueryUSValueA
+#define SHRegSetPath SHRegSetPathA
+#define SHRegSetUSValue SHRegSetUSValueA
+#define SHRegWriteUSValue SHRegWriteUSValueA
+#define wnsprintf wnsprintfA
+#define wvnsprintf wvnsprintfA
+#endif /* UNICODE */
+
+#define StrToLong StrToInt
+
+#endif /* !RC_INVOKED */
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* ! defined _SHLWAPI_H */
Index: Daodan/MinGW/include/shobjidl.h
===================================================================
--- Daodan/MinGW/include/shobjidl.h	(revision 1046)
+++ Daodan/MinGW/include/shobjidl.h	(revision 1046)
@@ -0,0 +1,143 @@
+#ifndef _SHLOBJIDL_H
+#define _SHLOBJIDL_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <ole2.h>
+#include <shlguid.h>
+#include <shellapi.h>
+#pragma pack(push,1)
+#include <commctrl.h>
+
+extern const IID IID_ITaskbarList3;
+extern const GUID CLSID_ITaskbarList;
+
+/* http://msdn.microsoft.com/en-us/library/windows/desktop/dd562322%28v=vs.85%29.aspx */
+typedef enum THUMBBUTTONMASK {
+  THB_BITMAP    = 0x00000001,
+  THB_ICON      = 0x00000002,
+  THB_TOOLTIP   = 0x00000004,
+  THB_FLAGS     = 0x00000008
+} THUMBBUTTONMASK;
+
+/* http://msdn.microsoft.com/en-us/library/windows/desktop/dd562321%28v=vs.85%29.aspx */
+typedef enum THUMBBUTTONFLAGS {
+  THBF_ENABLED          = 0x00000000,
+  THBF_DISABLED         = 0x00000001,
+  THBF_DISMISSONCLICK   = 0x00000002,
+  THBF_NOBACKGROUND     = 0x00000004,
+  THBF_HIDDEN           = 0x00000008,
+  THBF_NONINTERACTIVE   = 0x00000010
+} THUMBBUTTONFLAGS;
+
+/* http://msdn.microsoft.com/en-us/library/windows/desktop/dd391559%28v=vs.85%29.aspx */
+typedef struct THUMBBUTTON {
+  THUMBBUTTONMASK  dwMask;
+  UINT             iId;
+  UINT             iBitmap;
+  HICON            hIcon;
+  WCHAR            szTip[260];
+  THUMBBUTTONFLAGS dwFlags;
+} THUMBBUTTON, *LPTHUMBBUTTON;
+
+/* http://msdn.microsoft.com/en-us/library/windows/desktop/dd391697%28v=vs.85%29.aspx */
+typedef enum TBPFLAG {
+    TBPF_NOPROGRESS    = 0x00000000,
+    TBPF_INDETERMINATE = 0x00000001,
+    TBPF_NORMAL        = 0x00000002,
+    TBPF_ERROR         = 0x00000004,
+    TBPF_PAUSED        = 0x00000008
+} TBPFLAG;
+
+/* http://msdn.microsoft.com/en-us/library/windows/desktop/bb774652%28v=vs.85%29.aspx */
+#define INTERFACE ITaskbarList
+DECLARE_INTERFACE_(ITaskbarList, IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+/* http://msdn.microsoft.com/en-us/library/windows/desktop/bb774650%28v=vs.85%29.aspx */
+	STDMETHOD(HrInit)(THIS) PURE;
+/* http://msdn.microsoft.com/en-us/library/windows/desktop/bb774646%28v=vs.85%29.aspx */
+	STDMETHOD(AddTab)(THIS_ HWND) PURE;
+/* http://msdn.microsoft.com/en-us/library/windows/desktop/bb774648%28v=vs.85%29.aspx */
+	STDMETHOD(DeleteTab)(THIS_ HWND) PURE;
+/* http://msdn.microsoft.com/en-us/library/windows/desktop/bb774644%28v=vs.85%29.aspx */
+	STDMETHOD(ActivateTab)(THIS_ HWND) PURE;
+/* http://msdn.microsoft.com/en-us/library/windows/desktop/bb774655%28v=vs.85%29.aspx */
+	STDMETHOD(SetActiveAlt)(THIS_ HWND) PURE;
+};
+#undef INTERFACE
+typedef ITaskbarList *LPTASKBARLIST;
+
+/* http://msdn.microsoft.com/en-us/library/windows/desktop/bb774638%28v=vs.85%29.aspx */
+#define INTERFACE ITaskbarList2
+DECLARE_INTERFACE_(ITaskbarList2, ITaskbarList)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(HrInit)(THIS) PURE;
+	STDMETHOD(AddTab)(THIS_ HWND) PURE;
+	STDMETHOD(DeleteTab)(THIS_ HWND) PURE;
+	STDMETHOD(ActivateTab)(THIS_ HWND) PURE;
+	STDMETHOD(SetActiveAlt)(THIS_ HWND) PURE;
+/* http://msdn.microsoft.com/en-us/library/windows/desktop/bb774640%28v=vs.85%29.aspx */
+	STDMETHOD(MarkFullscreenWindow)(THIS_ HWND,BOOL) PURE;
+};
+#undef INTERFACE
+typedef ITaskbarList2 *LPTASKBARLIST2;
+
+/* http://msdn.microsoft.com/en-us/library/windows/desktop/dd391692%28v=vs.85%29.aspx */
+#define INTERFACE ITaskbarList3
+DECLARE_INTERFACE_(ITaskbarList3, ITaskbarList2)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(HrInit)(THIS) PURE;
+	STDMETHOD(AddTab)(THIS_ HWND) PURE;
+	STDMETHOD(DeleteTab)(THIS_ HWND) PURE;
+	STDMETHOD(ActivateTab)(THIS_ HWND) PURE;
+	STDMETHOD(SetActiveAlt)(THIS_ HWND) PURE;
+	STDMETHOD(MarkFullscreenWindow)(THIS_ HWND,BOOL) PURE;
+/* http://msdn.microsoft.com/en-us/library/windows/desktop/dd391698%28v=vs.85%29.aspx */
+	STDMETHOD(SetProgressValue)(THIS_ ULONGLONG,ULONGLONG) PURE;
+/* http://msdn.microsoft.com/en-us/library/windows/desktop/dd391697%28v=vs.85%29.aspx */
+	STDMETHOD(SetProgressState)(THIS_ HWND,TBPFLAG) PURE;
+/* http://msdn.microsoft.com/en-us/library/windows/desktop/dd391694%28v=vs.85%29.aspx */
+	STDMETHOD(RegisterTab)(THIS_ HWND,HWND) PURE;
+/* http://msdn.microsoft.com/en-us/library/windows/desktop/dd391706%28v=vs.85%29.aspx */
+	STDMETHOD(UnregisterTab)(THIS_ HWND) PURE;
+/* http://msdn.microsoft.com/en-us/library/windows/desktop/dd391700%28v=vs.85%29.aspx */
+	STDMETHOD(SetTabOrder)(THIS_ HWND,HWND) PURE;
+/* http://msdn.microsoft.com/en-us/library/windows/desktop/dd391699%28v=vs.85%29.aspx */
+	STDMETHOD(SetTabActive)(THIS_ HWND,HWND,DWORD) PURE;
+/* http://msdn.microsoft.com/en-us/library/windows/desktop/dd391703%28v=vs.85%29.aspx */
+	STDMETHOD(ThumbBarAddButtons)(THIS_ HWND,UINT,LPTHUMBBUTTON) PURE;
+/* http://msdn.microsoft.com/en-us/library/windows/desktop/dd391705%28v=vs.85%29.aspx */
+	STDMETHOD(ThumbBarUpdateButtons)(THIS_ HWND,UINT,LPTHUMBBUTTON) PURE;
+/* http://msdn.microsoft.com/en-us/library/windows/desktop/dd391704%28v=vs.85%29.aspx */
+	STDMETHOD(ThumbBarSetImageList)(THIS_ HWND,HIMAGELIST) PURE;
+/* http://msdn.microsoft.com/en-us/library/windows/desktop/dd391696%28v=vs.85%29.aspx */
+	STDMETHOD(SetOverlayIcon)(THIS_ HWND,HICON,LPCWSTR) PURE;
+/* http://msdn.microsoft.com/en-us/library/windows/desktop/dd391702%28v=vs.85%29.aspx */
+	STDMETHOD(SetThumbnailTooltip)(THIS_ HWND,LPCWSTR) PURE;
+/* http://msdn.microsoft.com/en-us/library/windows/desktop/dd391701%28v=vs.85%29.aspx */
+	STDMETHOD(SetThumbnailClip)(THIS_ HWND,RECT*) PURE;
+};
+#undef INTERFACE
+typedef ITaskbarList3 *LPTASKBARLIST3;
+
+#pragma pack(pop)
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif /* _SHLOBJIDL_H */
Index: Daodan/MinGW/include/signal.h
===================================================================
--- Daodan/MinGW/include/signal.h	(revision 1046)
+++ Daodan/MinGW/include/signal.h	(revision 1046)
@@ -0,0 +1,98 @@
+/*
+ * signal.h
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is a part of the mingw-runtime package.
+ * No warranty is given; refer to the file DISCLAIMER within the package.
+ *
+ * A way to set handlers for exceptional conditions (also known as signals).
+ *
+ */
+
+#ifndef	_SIGNAL_H_
+#define	_SIGNAL_H_
+
+/* All the headers include this file. */
+#include <_mingw.h>
+
+/*
+ * The actual signal values. Using other values with signal
+ * produces a SIG_ERR return value.
+ *
+ * NOTE: SIGINT is produced when the user presses Ctrl-C.
+ *       SIGILL has not been tested.
+ *       SIGFPE doesn't seem to work?
+ *       SIGSEGV does not catch writing to a NULL pointer (that shuts down
+ *               your app; can you say "segmentation violation core dump"?).
+ *       SIGTERM comes from what kind of termination request exactly?
+ *       SIGBREAK is indeed produced by pressing Ctrl-Break.
+ *       SIGABRT is produced by calling abort.
+ * TODO: The above results may be related to not installing an appropriate
+ *       structured exception handling frame. Results may be better if I ever
+ *       manage to get the SEH stuff down.
+ */
+#define	SIGINT		2	/* Interactive attention */
+#define	SIGILL		4	/* Illegal instruction */
+#define	SIGFPE		8	/* Floating point error */
+#define	SIGSEGV		11	/* Segmentation violation */
+#define	SIGTERM		15	/* Termination request */
+#define SIGBREAK	21	/* Control-break */
+#define	SIGABRT		22	/* Abnormal termination (abort) */
+
+#define NSIG 23     /* maximum signal number + 1 */
+
+#ifndef	RC_INVOKED
+
+#ifndef _SIG_ATOMIC_T_DEFINED
+typedef int sig_atomic_t;
+#define _SIG_ATOMIC_T_DEFINED
+#endif
+
+/*
+ * The prototypes (below) are the easy part. The hard part is figuring
+ * out what signals are available and what numbers they are assigned
+ * along with appropriate values of SIG_DFL and SIG_IGN.
+ */
+
+/*
+ * A pointer to a signal handler function. A signal handler takes a
+ * single int, which is the signal it handles.
+ */
+typedef	void (*__p_sig_fn_t)(int);
+
+/*
+ * These are special values of signal handler pointers which are
+ * used to send a signal to the default handler (SIG_DFL), ignore
+ * the signal (SIG_IGN), indicate an error return (SIG_ERR),
+ * get an error (SIG_SGE), or acknowledge (SIG_ACK).
+ */
+#define	SIG_DFL	((__p_sig_fn_t) 0)
+#define	SIG_IGN	((__p_sig_fn_t) 1)
+#define	SIG_ERR ((__p_sig_fn_t) -1)
+#define SIG_SGE ((__p_sig_fn_t) 3)
+#define SIG_ACK ((__p_sig_fn_t) 4)
+
+#ifdef	__cplusplus
+extern "C" {
+#endif
+
+/*
+ * Call signal to set the signal handler for signal sig to the
+ * function pointed to by handler. Returns a pointer to the
+ * previous handler, or SIG_ERR if an error occurs. Initially
+ * unhandled signals defined above will return SIG_DFL.
+ */
+_CRTIMP __p_sig_fn_t __cdecl __MINGW_NOTHROW	signal(int, __p_sig_fn_t);
+
+/*
+ * Raise the signal indicated by sig. Returns non-zero on success.
+ */
+_CRTIMP int __cdecl __MINGW_NOTHROW	raise (int);
+
+#ifdef	__cplusplus
+}
+#endif
+
+#endif	/* Not RC_INVOKED */
+
+#endif	/* Not _SIGNAL_H_ */
+
Index: Daodan/MinGW/include/snmp.h
===================================================================
--- Daodan/MinGW/include/snmp.h	(revision 1046)
+++ Daodan/MinGW/include/snmp.h	(revision 1046)
@@ -0,0 +1,259 @@
+/*
+  snmp.h - Header file for the Windows SNMP API
+
+  Written by Filip Navara <xnavara@volny.cz>
+
+  References (2003-08-25):
+    http://msdn.microsoft.com/library/en-us/snmp/snmp/snmp_reference.asp
+
+  This library is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+*/
+
+#ifndef _SNMP_H
+#define _SNMP_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#ifndef _WINDOWS_H
+#include <windows.h>
+#endif
+
+#include <pshpack4.h>
+
+#ifndef WINSNMPAPI
+#define WINSNMPAPI WINAPI
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define DEFAULT_SNMP_PORT_UDP	161
+#define DEFAULT_SNMP_PORT_IPX	36879
+#define DEFAULT_SNMPTRAP_PORT_UDP	162
+#define DEFAULT_SNMPTRAP_PORT_IPX	36880
+#ifndef _SNMP_ASN_DEFINED
+#define _SNMP_ASN_DEFINED
+#define ASN_UNIVERSAL	0x00
+#define ASN_PRIMITIVE	0x00
+#define ASN_CONSTRUCTOR	0x20
+#define ASN_APPLICATION	0x40
+#define ASN_CONTEXT	0x80
+#define ASN_PRIVATE	0xC0
+#define SNMP_PDU_GET	(ASN_CONTEXT | ASN_CONSTRUCTOR | 0)
+#define SNMP_PDU_GETNEXT	(ASN_CONTEXT | ASN_CONSTRUCTOR | 1)
+#define SNMP_PDU_RESPONSE	(ASN_CONTEXT | ASN_CONSTRUCTOR | 2)
+#define SNMP_PDU_SET	(ASN_CONTEXT | ASN_CONSTRUCTOR | 3)
+#define SNMP_PDU_GETBULK	(ASN_CONTEXT | ASN_CONSTRUCTOR | 4)
+#define SNMP_PDU_V1TRAP	(ASN_CONTEXT | ASN_CONSTRUCTOR | 4)
+#define SNMP_PDU_INFORM	(ASN_CONTEXT | ASN_CONSTRUCTOR | 6)
+#define SNMP_PDU_TRAP	(ASN_CONTEXT | ASN_CONSTRUCTOR | 7)
+#define SNMP_PDU_REPORT	(ASN_CONTEXT | ASN_CONSTRUCTOR | 8)
+#endif /* _SNMP_ASN_DEFINED */
+#define ASN_INTEGER	(ASN_UNIVERSAL | ASN_PRIMITIVE | 2)
+#define ASN_BITS	(ASN_UNIVERSAL | ASN_PRIMITIVE | 3)
+#define ASN_OCTETSTRING	(ASN_UNIVERSAL | ASN_PRIMITIVE | 4)
+#define ASN_NULL	(ASN_UNIVERSAL | ASN_PRIMITIVE | 5)
+#define ASN_OBJECTIDENTIFIER	(ASN_UNIVERSAL | ASN_PRIMITIVE | 6)
+#define ASN_INTEGER32	ASN_INTEGER
+#define ASN_SEQUENCE	(ASN_UNIVERSAL | ASN_CONSTRUCTOR | 0x10)
+#define ASN_SEQUENCEOF	ASN_SEQUENCE
+#define ASN_IPADDRESS	(ASN_APPLICATION | ASN_PRIMITIVE | 0x00)
+#define ASN_COUNTER32	(ASN_APPLICATION | ASN_PRIMITIVE | 0x01)
+#define ASN_GAUGE32	(ASN_APPLICATION | ASN_PRIMITIVE | 0x02)
+#define ASN_TIMETICKS	(ASN_APPLICATION | ASN_PRIMITIVE | 0x03)
+#define ASN_OPAQUE	(ASN_APPLICATION | ASN_PRIMITIVE | 0x04)
+#define ASN_COUNTER64	(ASN_APPLICATION | ASN_PRIMITIVE | 0x06)
+#define ASN_UNSIGNED32	(ASN_APPLICATION | ASN_PRIMITIVE | 0x07)
+#define SNMP_EXCEPTION_NOSUCHOBJECT	(ASN_CONTEXT | ASN_PRIMITIVE | 0x00)
+#define SNMP_EXCEPTION_NOSUCHINSTANCE	(ASN_CONTEXT | ASN_PRIMITIVE | 0x01)
+#define SNMP_EXCEPTION_ENDOFMIBVIEW	(ASN_CONTEXT | ASN_PRIMITIVE | 0x02)
+#define SNMP_EXTENSION_GET	SNMP_PDU_GET
+#define SNMP_EXTENSION_GET_NEXT	SNMP_PDU_GETNEXT
+#define SNMP_EXTENSION_GET_BULK	SNMP_PDU_GETBULK
+#define SNMP_EXTENSION_SET_TEST	(ASN_PRIVATE | ASN_CONSTRUCTOR | 0x0)
+#define SNMP_EXTENSION_SET_COMMIT	SNMP_PDU_SET
+#define SNMP_EXTENSION_SET_UNDO	(ASN_PRIVATE | ASN_CONSTRUCTOR | 0x1)
+#define SNMP_EXTENSION_SET_CLEANUP	(ASN_PRIVATE | ASN_CONSTRUCTOR | 0x2)
+#define SNMP_ERRORSTATUS_NOERROR	0
+#define SNMP_ERRORSTATUS_TOOBIG	1
+#define SNMP_ERRORSTATUS_NOSUCHNAME	2
+#define SNMP_ERRORSTATUS_BADVALUE	3
+#define SNMP_ERRORSTATUS_READONLY	4
+#define SNMP_ERRORSTATUS_GENERR	5
+#define SNMP_ERRORSTATUS_NOACCESS	6
+#define SNMP_ERRORSTATUS_WRONGTYPE	7
+#define SNMP_ERRORSTATUS_WRONGLENGTH	8
+#define SNMP_ERRORSTATUS_WRONGENCODING	9
+#define SNMP_ERRORSTATUS_WRONGVALUE	10
+#define SNMP_ERRORSTATUS_NOCREATION	11
+#define SNMP_ERRORSTATUS_INCONSISTENTVALUE	12
+#define SNMP_ERRORSTATUS_RESOURCEUNAVAILABLE	13
+#define SNMP_ERRORSTATUS_COMMITFAILED	14
+#define SNMP_ERRORSTATUS_UNDOFAILED	15
+#define SNMP_ERRORSTATUS_AUTHORIZATIONERROR	16
+#define SNMP_ERRORSTATUS_NOTWRITABLE	17
+#define SNMP_ERRORSTATUS_INCONSISTENTNAME	18
+#define SNMP_GENERICTRAP_COLDSTART	0
+#define SNMP_GENERICTRAP_WARMSTART	1
+#define SNMP_GENERICTRAP_LINKDOWN	2
+#define SNMP_GENERICTRAP_LINKUP	3
+#define SNMP_GENERICTRAP_AUTHFAILURE	4
+#define SNMP_GENERICTRAP_EGPNEIGHLOSS	5
+#define SNMP_GENERICTRAP_ENTERSPECIFIC	6
+#define SNMP_ACCESS_NONE	0
+#define SNMP_ACCESS_NOTIFY	1
+#define SNMP_ACCESS_READ_ONLY	2
+#define SNMP_ACCESS_READ_WRITE	3
+#define SNMP_ACCESS_READ_CREATE	4
+#define SNMPAPI_ERROR	FALSE
+#define SNMPAPI_NOERROR	TRUE
+#define SNMP_LOG_SILENT	0
+#define SNMP_LOG_FATAL	1
+#define SNMP_LOG_ERROR	2
+#define SNMP_LOG_WARNING	3
+#define SNMP_LOG_TRACE	4
+#define SNMP_LOG_VERBOSE	5
+#define SNMP_OUTPUT_TO_CONSOLE	1
+#define SNMP_OUTPUT_TO_LOGFILE	2
+#define SNMP_OUTPUT_TO_EVENTLOG	4
+#define SNMP_OUTPUT_TO_DEBUGGER	8
+#define SNMP_MAX_OID_LEN	128
+#define SNMP_MEM_ALLOC_ERROR	1
+#define SNMP_BERAPI_INVALID_LENGTH	10
+#define SNMP_BERAPI_INVALID_TAG	11
+#define SNMP_BERAPI_OVERFLOW	12
+#define SNMP_BERAPI_SHORT_BUFFER	13
+#define SNMP_BERAPI_INVALID_OBJELEM	14
+#define SNMP_PDUAPI_UNRECOGNIZED_PDU	20
+#define SNMP_PDUAPI_INVALID_ES	21
+#define SNMP_PDUAPI_INVALID_GT	22
+#define SNMP_AUTHAPI_INVALID_VERSION	30
+#define SNMP_AUTHAPI_INVALID_MSG_TYPE	31
+#define SNMP_AUTHAPI_TRIV_AUTH_FAILED	32
+
+#ifndef RC_INVOKED
+
+typedef INT SNMPAPI;
+typedef LONG AsnInteger32;
+typedef ULONG AsnUnsigned32;
+typedef ULARGE_INTEGER AsnCounter64;
+typedef AsnUnsigned32 AsnCounter32;
+typedef AsnUnsigned32 AsnGauge32;
+typedef AsnUnsigned32 AsnTimeticks;
+typedef struct {
+	BYTE *stream;
+	UINT length;
+	BOOL dynamic;
+} AsnOctetString, AsnBits, AsnSequence, AsnImplicitSequence, AsnIPAddress, AsnNetworkAddress, AsnDisplayString, AsnOpaque;
+typedef struct {
+	UINT idLength;
+	UINT *ids;
+} AsnObjectIdentifier, AsnObjectName;
+typedef struct {
+	BYTE asnType;
+	union {
+		AsnInteger32 number;
+		AsnUnsigned32 unsigned32;
+		AsnCounter64 counter64;
+		AsnOctetString string;
+		AsnBits bits;
+		AsnObjectIdentifier object;
+		AsnSequence sequence;
+		AsnIPAddress address;
+		AsnCounter32 counter;
+		AsnGauge32 gauge;
+		AsnTimeticks ticks;
+		AsnOpaque arbitrary;
+	} asnValue;
+} AsnAny, AsnObjectSyntax;
+typedef struct {
+	AsnObjectName name;
+	AsnObjectSyntax value;
+} SnmpVarBind;
+typedef struct {
+	SnmpVarBind *list;
+	UINT len;
+} SnmpVarBindList;
+
+VOID WINSNMPAPI SnmpExtensionClose(void);
+BOOL WINSNMPAPI SnmpExtensionInit(DWORD,HANDLE*,AsnObjectIdentifier*);
+BOOL WINSNMPAPI SnmpExtensionInitEx(AsnObjectIdentifier*);
+BOOL WINSNMPAPI SnmpExtensionMonitor(LPVOID);
+BOOL WINSNMPAPI SnmpExtensionQuery(BYTE,SnmpVarBindList*,AsnInteger32*,AsnInteger32*);
+BOOL WINSNMPAPI SnmpExtensionQueryEx(DWORD,DWORD,SnmpVarBindList*,AsnOctetString*,AsnInteger32*,AsnInteger32*);
+BOOL WINSNMPAPI SnmpExtensionTrap(AsnObjectIdentifier*,AsnInteger32*,AsnInteger32*,AsnTimeticks*,SnmpVarBindList*);
+DWORD WINSNMPAPI SnmpSvcGetUptime(void);
+VOID WINSNMPAPI SnmpSvcSetLogLevel(INT);
+VOID WINSNMPAPI SnmpSvcSetLogType(INT);
+SNMPAPI WINSNMPAPI SnmpUtilAsnAnyCpy(AsnAny*,AsnAny*);
+VOID WINSNMPAPI SnmpUtilAsnAnyFree(AsnAny*);
+VOID WINSNMPAPI SnmpUtilDbgPrint(INT,LPSTR,...);
+LPSTR WINSNMPAPI SnmpUtilIdsToA(UINT*,UINT);
+LPVOID WINSNMPAPI SnmpUtilMemAlloc(UINT);
+VOID WINSNMPAPI SnmpUtilMemFree(LPVOID);
+LPVOID WINSNMPAPI SnmpUtilMemReAlloc(LPVOID,UINT);
+SNMPAPI WINSNMPAPI SnmpUtilOctetsCmp(AsnOctetString*,AsnOctetString*);
+SNMPAPI WINSNMPAPI SnmpUtilOctetsCpy(AsnOctetString*,AsnOctetString*);
+VOID WINSNMPAPI SnmpUtilOctetsFree(AsnOctetString*);
+SNMPAPI WINSNMPAPI SnmpUtilOctetsNCmp(AsnOctetString*,AsnOctetString*,UINT);
+SNMPAPI WINSNMPAPI SnmpUtilOidAppend(AsnObjectIdentifier*,AsnObjectIdentifier*);
+SNMPAPI WINSNMPAPI SnmpUtilOidCmp(AsnObjectIdentifier*,AsnObjectIdentifier*);
+SNMPAPI WINSNMPAPI SnmpUtilOidCpy(AsnObjectIdentifier*,AsnObjectIdentifier*);
+VOID WINSNMPAPI SnmpUtilOidFree(AsnObjectIdentifier*);
+SNMPAPI WINSNMPAPI SnmpUtilOidNCmp(AsnObjectIdentifier*,AsnObjectIdentifier*,UINT);
+LPSTR WINSNMPAPI SnmpUtilOidToA(AsnObjectIdentifier*);
+VOID WINSNMPAPI SnmpUtilPrintAsnAny(AsnAny*);
+VOID WINSNMPAPI SnmpUtilPrintOid(AsnObjectIdentifier*);
+SNMPAPI WINSNMPAPI SnmpUtilVarBindCpy(  SnmpVarBind*,SnmpVarBind*);
+SNMPAPI WINSNMPAPI SnmpUtilVarBindListCpy(SnmpVarBindList*,SnmpVarBindList*);
+VOID WINSNMPAPI SnmpUtilVarBindFree(SnmpVarBind*);
+VOID WINSNMPAPI SnmpUtilVarBindListFree(SnmpVarBindList*);
+
+#ifndef SNMPSTRICT
+#define SNMP_malloc SnmpUtilMemAlloc
+#define SNMP_free SnmpUtilMemFree
+#define SNMP_realloc SnmpUtilMemReAlloc
+#define SNMP_DBG_malloc SnmpUtilMemAlloc
+#define SNMP_DBG_free SnmpUtilMemFree
+#define SNMP_DBG_realloc SnmpUtilMemReAlloc
+#define SNMP_oidappend SnmpUtilOidAppend
+#define SNMP_oidcmp SnmpUtilOidCmp
+#define SNMP_oidcpy SnmpUtilOidCpy
+#define SNMP_oidfree SnmpUtilOidFree
+#define SNMP_oidncmp SnmpUtilOidNCmp
+#define SNMP_printany SnmpUtilPrintAsnAny
+#define SNMP_CopyVarBind SnmpUtilVarBindCpy
+#define SNMP_CopyVarBindList SnmpUtilVarBindListCpy
+#define SNMP_FreeVarBind SnmpUtilVarBindFree
+#define SNMP_FreeVarBindList SnmpUtilVarBindListFree
+#define ASN_RFC1155_IPADDRESS ASN_IPADDRESS
+#define ASN_RFC1155_COUNTER ASN_COUNTER32
+#define ASN_RFC1155_GAUGE ASN_GAUGE32
+#define ASN_RFC1155_TIMETICKS ASN_TIMETICKS
+#define ASN_RFC1155_OPAQUE ASN_OPAQUE
+#define ASN_RFC1213_DISPSTRING ASN_OCTETSTRING
+#define ASN_RFC1157_GETREQUEST SNMP_PDU_GET
+#define ASN_RFC1157_GETNEXTREQUEST SNMP_PDU_GETNEXT
+#define ASN_RFC1157_GETRESPONSE SNMP_PDU_RESPONSE
+#define ASN_RFC1157_SETREQUEST SNMP_PDU_SET
+#define ASN_RFC1157_TRAP SNMP_PDU_V1TRAP
+#define ASN_CONTEXTSPECIFIC ASN_CONTEXT
+#define ASN_PRIMATIVE ASN_PRIMITIVE
+#define RFC1157VarBindList SnmpVarBindList
+#define RFC1157VarBind SnmpVarBind
+#define AsnInteger AsnInteger32
+#define AsnCounter AsnCounter32
+#define AsnGauge AsnGauge32
+#endif /* SNMPSTRICT */
+
+#endif /* RC_INVOKED */
+
+#ifdef __cplusplus
+}
+#endif
+#include <poppack.h>
+#endif
Index: Daodan/MinGW/include/specstrings.h
===================================================================
--- Daodan/MinGW/include/specstrings.h	(revision 1046)
+++ Daodan/MinGW/include/specstrings.h	(revision 1046)
@@ -0,0 +1,130 @@
+#ifndef _SPECSTRINGS_H
+#define _SPECSTRINGS_H
+
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+/* These are built from primitives in Microsoft's Standard Annotation Language.
+   Search for "Header Annotation" on MSDN site for their MS-specific meanings */
+
+/* __in and __out currently conflict with libstdc++, use with caution */
+
+
+#define __bcount(size)
+#define __bcount_opt(size)
+#define __deref_bcount(size)
+#define __deref_bcount_opt(size)
+#define __deref_ecount(size)
+#define __deref_ecount_opt(size)
+#define __deref_in
+#define __deref_in_bcount(size)
+#define __deref_in_bcount_opt(size)
+#define __deref_in_ecount(size)
+#define __deref_in_ecount_opt(size)
+#define __deref_in_opt
+#define __deref_inout
+#define __deref_inout_bcount(size)
+#define __deref_inout_bcount_full(size)
+#define __deref_inout_bcount_full_opt(size)
+#define __deref_inout_bcount_opt(size)
+#define __deref_inout_bcount_part(size,length)
+#define __deref_inout_bcount_part_opt(size,length)
+#define __deref_inout_ecount(size)
+#define __deref_inout_ecount_full(size)
+#define __deref_inout_ecount_full_opt(size)
+#define __deref_inout_ecount_opt(size)
+#define __deref_inout_ecount_part(size,length)
+#define __deref_inout_ecount_part_opt(size,length)
+#define __deref_inout_opt
+#define __deref_opt_bcount(size)
+#define __deref_opt_bcount_opt(size)
+#define __deref_opt_ecount(size)
+#define __deref_opt_ecount_opt(size)
+#define __deref_opt_in
+#define __deref_opt_in_bcount(size)
+#define __deref_opt_in_bcount_opt(size)
+#define __deref_opt_in_ecount(size)
+#define __deref_opt_in_ecount_opt(size)
+#define __deref_opt_in_opt
+#define __deref_opt_inout
+#define __deref_opt_inout_bcount(size)
+#define __deref_opt_inout_bcount_full(size)
+#define __deref_opt_inout_bcount_full_opt(size)
+#define __deref_opt_inout_bcount_opt(size)
+#define __deref_opt_inout_bcount_part(size,length)
+#define __deref_opt_inout_bcount_part_opt(size,length)
+#define __deref_opt_inout_ecount(size)
+#define __deref_opt_inout_ecount_full(size)
+#define __deref_opt_inout_ecount_full_opt(size)
+#define __deref_opt_inout_ecount_opt(size)
+#define __deref_opt_inout_ecount_part(size,length)
+#define __deref_opt_inout_ecount_part_opt(size,length)
+#define __deref_opt_inout_opt
+#define __deref_opt_out
+#define __deref_opt_out_bcount(size)
+#define __deref_opt_out_bcount_full(size)
+#define __deref_opt_out_bcount_full_opt(size)
+#define __deref_opt_out_bcount_opt(size)
+#define __deref_opt_out_bcount_part(size,length)
+#define __deref_opt_out_bcount_part_opt(size,length)
+#define __deref_opt_out_ecount(size)
+#define __deref_opt_out_ecount_full(size)
+#define __deref_opt_out_ecount_full_opt(size)
+#define __deref_opt_out_ecount_opt(size)
+#define __deref_opt_out_ecount_part(size,length)
+#define __deref_opt_out_ecount_part_opt(size,length)
+#define __deref_opt_out_opt
+#define __deref_out
+#define __deref_out_bcount(size)
+#define __deref_out_bcount_full(size)
+#define __deref_out_bcount_full_opt(size)
+#define __deref_out_bcount_opt(size)
+#define __deref_out_bcount_part(size,length)
+#define __deref_out_bcount_part_opt(size,length)
+#define __deref_out_ecount(size)
+#define __deref_out_ecount_full(size)
+#define __deref_out_ecount_full_opt(size)
+#define __deref_out_ecount_opt(size)
+#define __deref_out_ecount_part(size,length)
+#define __deref_out_ecount_part_opt(size,length)
+#define __deref_out_opt
+#define __ecount(size)
+#define __ecount_opt(size)
+#define __in
+#define __in_bcount(size)
+#define __in_bcount_opt(size)
+#define __in_ecount(size)
+#define __in_ecount_opt(size)
+#define __in_opt
+#define __inout
+#define __inout_bcount(size)
+#define __inout_bcount_full(size)
+#define __inout_bcount_full_opt(size)
+#define __inout_bcount_opt(size)
+#define __inout_bcount_part(size,length)
+#define __inout_bcount_part_opt(size,length)
+#define __inout_ecount(size)
+#define __inout_ecount_full(size)
+#define __inout_ecount_full_opt(size)
+#define __inout_ecount_opt(size)
+#define __inout_ecount_part(size,length)
+#define __inout_ecount_part_opt(size,length)
+#define __inout_opt
+#define __out
+#define __out_bcount(size)
+#define __out_bcount_full(size)
+#define __out_bcount_full_opt(size)
+#define __out_bcount_opt(size)
+#define __out_bcount_part(size,length)
+#define __out_bcount_part_opt(size,length)
+#define __out_ecount(size)
+#define __out_ecount_full(size)
+#define __out_ecount_full_opt(size)
+#define __out_ecount_opt(size)
+#define __out_ecount_part(size,length)
+#define __out_ecount_part_opt(size,length)
+#define __out_opt
+
+
+#endif /*_SPECSTRINGS_H */
Index: Daodan/MinGW/include/sql.h
===================================================================
--- Daodan/MinGW/include/sql.h	(revision 1046)
+++ Daodan/MinGW/include/sql.h	(revision 1046)
@@ -0,0 +1,408 @@
+#ifndef _SQL_H
+#define _SQL_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#ifndef ODBCVER
+#define ODBCVER 0x0351
+#endif
+#include <sqltypes.h>
+#define SQL_ACCESSIBLE_PROCEDURES 20
+#define SQL_ACCESSIBLE_TABLES 19
+#define SQL_ALL_TYPES 0
+#define SQL_ALTER_TABLE 86
+#define SQL_API_SQLALLOCCONNECT 1
+#define SQL_API_SQLALLOCENV 2
+#define SQL_API_SQLALLOCSTMT 3
+#define SQL_API_SQLBINDCOL 4
+#define SQL_API_SQLCANCEL 5
+#define SQL_API_SQLCOLUMNS 40
+#define SQL_API_SQLCONNECT 7
+#define SQL_API_SQLDATASOURCES 57
+#define SQL_API_SQLDESCRIBECOL 8
+#define SQL_API_SQLDISCONNECT 9
+#define SQL_API_SQLERROR 10
+#define SQL_API_SQLEXECDIRECT 11
+#define SQL_API_SQLEXECUTE 12
+#define SQL_API_SQLFETCH 13
+#define SQL_API_SQLFREECONNECT 14
+#define SQL_API_SQLFREEENV 15
+#define SQL_API_SQLFREESTMT 16
+#define SQL_API_SQLGETCONNECTOPTION 42
+#define SQL_API_SQLGETCURSORNAME 17
+#define SQL_API_SQLGETDATA 43
+#define SQL_API_SQLGETFUNCTIONS 44
+#define SQL_API_SQLGETINFO 45
+#define SQL_API_SQLGETSTMTOPTION 46
+#define SQL_API_SQLGETTYPEINFO 47
+#define SQL_API_SQLNUMRESULTCOLS 18
+#define SQL_API_SQLPARAMDATA 48
+#define SQL_API_SQLPREPARE 19
+#define SQL_API_SQLPUTDATA 49
+#define SQL_API_SQLROWCOUNT 20
+#define SQL_API_SQLSETCONNECTOPTION 50
+#define SQL_API_SQLSETCURSORNAME 21
+#define SQL_API_SQLSETPARAM 22
+#define SQL_API_SQLSETSTMTOPTION 51
+#define SQL_API_SQLSPECIALCOLUMNS 52
+#define SQL_API_SQLSTATISTICS 53
+#define SQL_API_SQLTABLES 54
+#define SQL_API_SQLTRANSACT 23
+#define SQL_CB_CLOSE 1
+#define SQL_CB_DELETE 0
+#define SQL_CB_PRESERVE 2
+#define SQL_CHAR 1
+#define SQL_CLOSE 0
+#define SQL_COMMIT 0
+#define SQL_CURSOR_COMMIT_BEHAVIOR 23
+#define SQL_DATA_AT_EXEC (-2)
+#define SQL_DATA_SOURCE_NAME 2
+#define SQL_DATA_SOURCE_READ_ONLY 25
+#define SQL_DBMS_NAME 17
+#define SQL_DBMS_VER 18
+#define SQL_DECIMAL 3
+#define SQL_DEFAULT_TXN_ISOLATION 26
+#define SQL_DOUBLE 8
+#define SQL_DROP 1
+#define SQL_ERROR (-1)
+#define SQL_FD_FETCH_ABSOLUTE 16
+#define SQL_FD_FETCH_FIRST 2
+#define SQL_FD_FETCH_LAST 4
+#define SQL_FD_FETCH_NEXT 1
+#define SQL_FD_FETCH_PRIOR 8
+#define SQL_FD_FETCH_RELATIVE 32
+#define SQL_FETCH_ABSOLUTE 5
+#define SQL_FETCH_DIRECTION 8
+#define SQL_FETCH_FIRST 2
+#define SQL_FETCH_LAST 3
+#define SQL_FETCH_NEXT 1
+#define SQL_FETCH_PRIOR 4
+#define SQL_FETCH_RELATIVE 6
+#define SQL_FLOAT 6
+#define SQL_GD_ANY_COLUMN 1
+#define SQL_GD_ANY_ORDER 2
+#define SQL_GETDATA_EXTENSIONS 81
+#define SQL_IC_LOWER 2
+#define SQL_IC_MIXED 4
+#define SQL_IC_SENSITIVE 3
+#define SQL_IC_UPPER 1
+#define SQL_IDENTIFIER_CASE 28
+#define SQL_IDENTIFIER_QUOTE_CHAR 29
+#define SQL_INDEX_ALL 1
+#define SQL_INDEX_CLUSTERED 1
+#define SQL_INDEX_HASHED 2
+#define SQL_INDEX_OTHER 3
+#define SQL_INDEX_UNIQUE 0
+#define SQL_INTEGER 4
+#define SQL_INTEGRITY 73
+#define SQL_INVALID_HANDLE (-2)
+#define SQL_MAX_CATALOG_NAME_LEN 34
+#define SQL_MAX_COLUMN_NAME_LEN 30
+#define SQL_MAX_COLUMNS_IN_GROUP_BY 97
+#define SQL_MAX_COLUMNS_IN_INDEX 98
+#define SQL_MAX_COLUMNS_IN_ORDER_BY 99
+#define SQL_MAX_COLUMNS_IN_SELECT 100
+#define SQL_MAX_COLUMNS_IN_TABLE 101
+#define SQL_MAX_CURSOR_NAME_LEN 31
+#define SQL_MAX_INDEX_SIZE 102
+#define SQL_MAX_MESSAGE_LENGTH 512
+#define SQL_MAX_ROW_SIZE 104
+#define SQL_MAX_SCHEMA_NAME_LEN 32
+#define SQL_MAX_STATEMENT_LEN 105
+#define SQL_MAX_TABLE_NAME_LEN 35
+#define SQL_MAX_TABLES_IN_SELECT 106
+#define SQL_MAX_USER_NAME_LEN 107
+#define SQL_MAXIMUM_CATALOG_NAME_LENGTH SQL_MAX_CATALOG_NAME_LEN
+#define SQL_MAXIMUM_COLUMN_NAME_LENGTH SQL_MAX_COLUMN_NAME_LEN
+#define SQL_MAXIMUM_COLUMNS_IN_GROUP_BY SQL_MAX_COLUMNS_IN_GROUP_BY
+#define SQL_MAXIMUM_COLUMNS_IN_INDEX SQL_MAX_COLUMNS_IN_INDEX
+#define SQL_MAXIMUM_COLUMNS_IN_ORDER_BY SQL_MAX_COLUMNS_IN_ORDER_BY
+#define SQL_MAXIMUM_COLUMNS_IN_SELECT SQL_MAX_COLUMNS_IN_SELECT
+#define SQL_MAXIMUM_CURSOR_NAME_LENGTH SQL_MAX_CURSOR_NAME_LEN
+#define SQL_MAXIMUM_INDEX_SIZE SQL_MAX_INDEX_SIZE
+#define SQL_MAXIMUM_ROW_SIZE SQL_MAX_ROW_SIZE
+#define SQL_MAXIMUM_SCHEMA_NAME_LENGTH SQL_MAX_SCHEMA_NAME_LEN
+#define SQL_MAXIMUM_STATEMENT_LENGTH SQL_MAX_STATEMENT_LEN
+#define SQL_MAXIMUM_TABLES_IN_SELECT SQL_MAX_TABLES_IN_SELECT
+#define SQL_MAXIMUM_USER_NAME_LENGTH SQL_MAX_USER_NAME_LEN
+#define SQL_NC_HIGH 0
+#define SQL_NC_LOW 1
+#define SQL_NEED_DATA 99
+#define SQL_NO_NULLS 0
+#define SQL_NTS (-3)
+#define SQL_NTSL (-3L)
+#define SQL_NULL_COLLATION 85
+#define SQL_NULL_DATA (-1)
+#define SQL_NULL_HDBC 0
+#define SQL_NULL_HENV 0
+#define SQL_NULL_HSTMT 0
+#define SQL_NULLABLE 1
+#define SQL_NULLABLE_UNKNOWN 2
+#define SQL_NUMERIC 2
+#define SQL_ORDER_BY_COLUMNS_IN_SELECT 90
+#define SQL_PC_PSEUDO 2
+#define SQL_PC_UNKNOWN 0
+#define SQL_REAL 7
+#define SQL_RESET_PARAMS 3
+#define SQL_ROLLBACK 1
+#define SQL_SCCO_LOCK 2
+#define SQL_SCCO_OPT_ROWVER 4
+#define SQL_SCCO_OPT_VALUES 8
+#define SQL_SCCO_READ_ONLY 1
+#define SQL_SCOPE_CURROW 0
+#define SQL_SCOPE_SESSION 2
+#define SQL_SCOPE_TRANSACTION 1
+#define SQL_SCROLL_CONCURRENCY 43
+#define SQL_SEARCH_PATTERN_ESCAPE 14
+#define SQL_SERVER_NAME 13
+#define SQL_SMALLINT 5
+#define SQL_SPECIAL_CHARACTERS 94
+#define SQL_STILL_EXECUTING 2
+#define SQL_SUCCEEDED(rc) (((rc)&(~1))==0)
+#define SQL_SUCCESS 0
+#define SQL_SUCCESS_WITH_INFO 1
+#define SQL_TC_ALL 2
+#define SQL_TC_DDL_COMMIT 3
+#define SQL_TC_DDL_IGNORE 4
+#define SQL_TC_DML 1
+#define SQL_TC_NONE 0
+#define SQL_TRANSACTION_CAPABLE SQL_TXN_CAPABLE
+#define SQL_TRANSACTION_ISOLATION_OPTION SQL_TXN_ISOLATION_OPTION
+#define SQL_TRANSACTION_READ_COMMITTED SQL_TXN_READ_COMMITTED
+#define SQL_TRANSACTION_READ_UNCOMMITTED SQL_TXN_READ_UNCOMMITTED
+#define SQL_TRANSACTION_REPEATABLE_READ SQL_TXN_REPEATABLE_READ
+#define SQL_TRANSACTION_SERIALIZABLE SQL_TXN_SERIALIZABLE
+#define SQL_TXN_CAPABLE 46
+#define SQL_TXN_ISOLATION_OPTION 72
+#define SQL_TXN_READ_COMMITTED 2
+#define SQL_TXN_READ_UNCOMMITTED 1
+#define SQL_TXN_REPEATABLE_READ 4
+#define SQL_TXN_SERIALIZABLE 8
+#define SQL_UNBIND 2
+#define SQL_UNKNOWN_TYPE 0
+#define SQL_USER_NAME 47
+#define SQL_VARCHAR 12
+#if (ODBCVER >= 0x0200)
+#define SQL_AT_ADD_COLUMN 1
+#define SQL_AT_DROP_COLUMN 2
+#endif /* ODBCVER >= 0x0200 */
+#if (ODBCVER >= 0x0201)
+#define SQL_OJ_LEFT 1
+#define SQL_OJ_RIGHT 2
+#define SQL_OJ_FULL 4
+#define SQL_OJ_NESTED 8
+#define SQL_OJ_NOT_ORDERED 16
+#define SQL_OJ_INNER 32
+#define SQL_OJ_ALL_COMPARISON_OPS 64
+#endif /* ODBCVER >= 0x0201 */
+#if (ODBCVER >= 0x0300)
+#define SQL_AM_CONNECTION 1
+#define SQL_AM_NONE 0
+#define SQL_AM_STATEMENT 2
+#define SQL_API_SQLALLOCHANDLE 1001
+#define SQL_API_SQLBINDPARAM 1002
+#define SQL_API_SQLCLOSECURSOR 1003
+#define SQL_API_SQLCOLATTRIBUTE 6
+#define SQL_API_SQLCOPYDESC 1004
+#define SQL_API_SQLENDTRAN 1005
+#define SQL_API_SQLFETCHSCROLL 1021
+#define SQL_API_SQLFREEHANDLE 1006
+#define SQL_API_SQLGETCONNECTATTR 1007
+#define SQL_API_SQLGETDESCFIELD 1008
+#define SQL_API_SQLGETDESCREC 1009
+#define SQL_API_SQLGETDIAGFIELD 1010
+#define SQL_API_SQLGETDIAGREC 1011
+#define SQL_API_SQLGETENVATTR 1012
+#define SQL_API_SQLGETSTMTATTR 1014
+#define SQL_API_SQLSETCONNECTATTR 1016
+#define SQL_API_SQLSETDESCFIELD 1017
+#define SQL_API_SQLSETDESCREC 1018
+#define SQL_API_SQLSETENVATTR 1019
+#define SQL_API_SQLSETSTMTATTR 1020
+#define SQL_ARD_TYPE (-99)
+#define SQL_AT_ADD_CONSTRAINT 8
+#define SQL_ATTR_APP_PARAM_DESC 10011
+#define SQL_ATTR_APP_ROW_DESC 10010
+#define SQL_ATTR_AUTO_IPD 10001
+#define SQL_ATTR_CURSOR_SCROLLABLE (-1)
+#define SQL_ATTR_CURSOR_SENSITIVITY (-2)
+#define SQL_ATTR_IMP_PARAM_DESC 10013
+#define SQL_ATTR_IMP_ROW_DESC 10012
+#define SQL_ATTR_METADATA_ID 10014
+#define SQL_ATTR_OUTPUT_NTS 10001
+#define SQL_CATALOG_NAME 10003
+#define SQL_CODE_DATE 1
+#define SQL_CODE_TIME 2
+#define SQL_CODE_TIMESTAMP 3
+#define SQL_COLLATION_SEQ 10004
+#define SQL_CURSOR_SENSITIVITY 10001
+#define SQL_DATE_LEN 10
+#define SQL_DATETIME 9
+#define SQL_DEFAULT 99
+#define SQL_DESC_ALLOC_AUTO 1
+#define SQL_DESC_ALLOC_TYPE 1099
+#define SQL_DESC_ALLOC_USER 2
+#define SQL_DESC_COUNT 1001
+#define SQL_DESC_DATA_PTR 1010
+#define SQL_DESC_DATETIME_INTERVAL_CODE 1007
+#define SQL_DESC_INDICATOR_PTR 1009
+#define SQL_DESC_LENGTH 1003
+#define SQL_DESC_NAME 1011
+#define SQL_DESC_NULLABLE 1008
+#define SQL_DESC_OCTET_LENGTH 1013
+#define SQL_DESC_OCTET_LENGTH_PTR 1004
+#define SQL_DESC_PRECISION 1005
+#define SQL_DESC_SCALE 1006
+#define SQL_DESC_TYPE 1002
+#define SQL_DESC_UNNAMED 1012
+#define SQL_DESCRIBE_PARAMETER 10002
+#define SQL_DIAG_ALTER_DOMAIN 3
+#define SQL_DIAG_ALTER_TABLE 4
+#define SQL_DIAG_CALL 7
+#define SQL_DIAG_CLASS_ORIGIN 8
+#define SQL_DIAG_CONNECTION_NAME 10
+#define SQL_DIAG_CREATE_ASSERTION 6
+#define SQL_DIAG_CREATE_CHARACTER_SET 8
+#define SQL_DIAG_CREATE_COLLATION 10
+#define SQL_DIAG_CREATE_DOMAIN 23
+#define SQL_DIAG_CREATE_INDEX (-1)
+#define SQL_DIAG_CREATE_SCHEMA 64
+#define SQL_DIAG_CREATE_TABLE 77
+#define SQL_DIAG_CREATE_TRANSLATION 79
+#define SQL_DIAG_CREATE_VIEW 84
+#define SQL_DIAG_DELETE_WHERE 19
+#define SQL_DIAG_DROP_ASSERTION 24
+#define SQL_DIAG_DROP_CHARACTER_SET 25
+#define SQL_DIAG_DROP_COLLATION 26
+#define SQL_DIAG_DROP_DOMAIN 27
+#define SQL_DIAG_DROP_INDEX (-2)
+#define SQL_DIAG_DROP_SCHEMA 31
+#define SQL_DIAG_DROP_TABLE 32
+#define SQL_DIAG_DROP_TRANSLATION 33
+#define SQL_DIAG_DROP_VIEW 36
+#define SQL_DIAG_DYNAMIC_DELETE_CURSOR 38
+#define SQL_DIAG_DYNAMIC_FUNCTION 7
+#define SQL_DIAG_DYNAMIC_FUNCTION_CODE 12
+#define SQL_DIAG_DYNAMIC_UPDATE_CURSOR 81
+#define SQL_DIAG_GRANT 48
+#define SQL_DIAG_INSERT 50
+#define SQL_DIAG_MESSAGE_TEXT 6
+#define SQL_DIAG_NATIVE 5
+#define SQL_DIAG_NUMBER 2
+#define SQL_DIAG_RETURNCODE 1
+#define SQL_DIAG_REVOKE 59
+#define SQL_DIAG_ROW_COUNT 3
+#define SQL_DIAG_SELECT_CURSOR 85
+#define SQL_DIAG_SERVER_NAME 11
+#define SQL_DIAG_SQLSTATE 4
+#define SQL_DIAG_SUBCLASS_ORIGIN 9
+#define SQL_DIAG_UNKNOWN_STATEMENT 0
+#define SQL_DIAG_UPDATE_WHERE 82
+#define SQL_FALSE 0
+#define SQL_HANDLE_DBC 2
+#define SQL_HANDLE_DESC 4
+#define SQL_HANDLE_ENV 1
+#define SQL_HANDLE_STMT 3
+#define SQL_INSENSITIVE 1
+#define SQL_MAX_CONCURRENT_ACTIVITIES 1
+#define SQL_MAX_DRIVER_CONNECTIONS 0
+#define SQL_MAX_IDENTIFIER_LEN 10005
+#define SQL_MAXIMUM_CONCURRENT_ACTIVITIES SQL_MAX_CONCURRENT_ACTIVITIES
+#define SQL_MAXIMUM_DRIVER_CONNECTIONS SQL_MAX_DRIVER_CONNECTIONS
+#define SQL_MAXIMUM_IDENTIFIER_LENGTH SQL_MAX_IDENTIFIER_LEN
+#define SQL_NAMED 0
+#define SQL_NO_DATA 100
+#define SQL_NONSCROLLABLE 0
+#define SQL_NULL_HANDLE 0L
+#define SQL_NULL_HDESC 0
+#define SQL_OJ_CAPABILITIES 115
+#define SQL_OUTER_JOIN_CAPABILITIES SQL_OJ_CAPABILITIES
+#define SQL_PC_NON_PSEUDO 1
+#define SQL_PRED_BASIC 2
+#define SQL_PRED_CHAR 1
+#define SQL_PRED_NONE 0
+#define SQL_ROW_IDENTIFIER 1
+#define SQL_SCROLLABLE 1
+#define SQL_SENSITIVE 2
+#define SQL_TIME_LEN 8
+#define SQL_TIMESTAMP_LEN 19
+#define SQL_TRUE 1
+#define SQL_TYPE_DATE 91
+#define SQL_TYPE_TIME 92
+#define SQL_TYPE_TIMESTAMP 93
+#define SQL_UNNAMED 1
+#define SQL_UNSPECIFIED 0
+#define SQL_XOPEN_CLI_YEAR 10000
+#endif /* ODBCVER >= 0x0300 */
+
+#ifndef RC_INVOKED
+SQLRETURN SQL_API SQLAllocConnect(SQLHENV,SQLHDBC*); /* deprecated */
+SQLRETURN SQL_API SQLAllocEnv(SQLHENV*); /* deprecated */
+SQLRETURN SQL_API SQLAllocStmt(SQLHDBC,SQLHSTMT*); /* deprecated */
+SQLRETURN SQL_API SQLBindCol(SQLHSTMT,SQLUSMALLINT,SQLSMALLINT,SQLPOINTER,SQLLEN,SQLLEN*);
+SQLRETURN SQL_API SQLCancel(SQLHSTMT);
+SQLRETURN SQL_API SQLConnect(SQLHDBC,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT);
+SQLRETURN SQL_API SQLDescribeCol(SQLHSTMT,SQLUSMALLINT,SQLCHAR*,SQLSMALLINT,SQLSMALLINT*,SQLSMALLINT*,SQLULEN*,SQLSMALLINT*,SQLSMALLINT*);
+SQLRETURN SQL_API SQLDisconnect(SQLHDBC);
+SQLRETURN SQL_API SQLError(SQLHENV,SQLHDBC,SQLHSTMT,SQLCHAR*,SQLINTEGER*,SQLCHAR*,SQLSMALLINT,SQLSMALLINT*); /* deprecated */
+SQLRETURN SQL_API SQLExecDirect(SQLHSTMT,SQLCHAR*,SQLINTEGER);
+SQLRETURN SQL_API SQLExecute(SQLHSTMT);
+SQLRETURN SQL_API SQLFetch(SQLHSTMT);
+SQLRETURN SQL_API SQLFreeConnect(SQLHDBC); /* deprecated */
+SQLRETURN SQL_API SQLFreeEnv(SQLHENV); /* deprecated */
+SQLRETURN SQL_API SQLFreeStmt(SQLHSTMT,SQLUSMALLINT);
+SQLRETURN SQL_API SQLGetCursorName(SQLHSTMT,SQLCHAR*,SQLSMALLINT,SQLSMALLINT*);
+SQLRETURN SQL_API SQLNumResultCols(SQLHSTMT,SQLSMALLINT*);
+SQLRETURN SQL_API SQLPrepare(SQLHSTMT,SQLCHAR*,SQLINTEGER);
+SQLRETURN SQL_API SQLRowCount(SQLHSTMT,SQLLEN*);
+SQLRETURN SQL_API SQLSetCursorName(SQLHSTMT,SQLCHAR*,SQLSMALLINT);
+SQLRETURN SQL_API SQLTransact(SQLHENV,SQLHDBC,SQLUSMALLINT);
+SQLRETURN SQL_API SQLSetParam(SQLHSTMT,SQLUSMALLINT,SQLSMALLINT,SQLSMALLINT,SQLULEN,SQLSMALLINT,SQLPOINTER,SQLLEN*); /* deprecated */
+SQLRETURN SQL_API SQLColumns(SQLHSTMT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT);
+SQLRETURN SQL_API SQLGetConnectOption(SQLHDBC,SQLUSMALLINT,SQLPOINTER); /* deprecated */
+SQLRETURN SQL_API SQLGetData(SQLHSTMT,SQLUSMALLINT,SQLSMALLINT,SQLPOINTER,SQLLEN,SQLLEN*);
+SQLRETURN SQL_API SQLGetFunctions(SQLHDBC,SQLUSMALLINT,SQLUSMALLINT*);
+SQLRETURN SQL_API SQLGetInfo(SQLHDBC,SQLUSMALLINT,SQLPOINTER,SQLSMALLINT,SQLSMALLINT*);
+SQLRETURN SQL_API SQLGetStmtOption(SQLHSTMT,SQLUSMALLINT,SQLPOINTER); /* deprecated */
+SQLRETURN SQL_API SQLGetTypeInfo(SQLHSTMT,SQLSMALLINT);
+SQLRETURN SQL_API SQLParamData(SQLHSTMT,SQLPOINTER*);
+SQLRETURN SQL_API SQLPutData(SQLHSTMT,SQLPOINTER,SQLLEN);
+SQLRETURN SQL_API SQLSetConnectOption(SQLHDBC,SQLUSMALLINT,SQLULEN); /* deprecated */
+SQLRETURN SQL_API SQLSetStmtOption(SQLHSTMT,SQLUSMALLINT,SQLROWCOUNT); /* deprecated */
+SQLRETURN SQL_API SQLSpecialColumns(SQLHSTMT,SQLUSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLUSMALLINT,SQLUSMALLINT);
+SQLRETURN SQL_API SQLStatistics(SQLHSTMT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLUSMALLINT,SQLUSMALLINT);
+SQLRETURN SQL_API SQLTables(SQLHSTMT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT);
+SQLRETURN SQL_API SQLDataSources(SQLHENV,SQLUSMALLINT,SQLCHAR*,SQLSMALLINT,SQLSMALLINT*,SQLCHAR*,SQLSMALLINT,SQLSMALLINT*);
+#if (ODBCVER >= 0x0300)
+SQLRETURN SQL_API SQLAllocHandle(SQLSMALLINT,SQLHANDLE,SQLHANDLE*);
+SQLRETURN SQL_API SQLBindParam(SQLHSTMT,SQLUSMALLINT,SQLSMALLINT,SQLSMALLINT,SQLULEN,SQLSMALLINT,SQLPOINTER,SQLLEN*);
+SQLRETURN SQL_API SQLCloseCursor(SQLHSTMT);
+SQLRETURN SQL_API SQLColAttribute(SQLHSTMT,SQLUSMALLINT,SQLUSMALLINT,SQLPOINTER,SQLSMALLINT,SQLSMALLINT*,SQLPOINTER);
+SQLRETURN SQL_API SQLCopyDesc(SQLHDESC,SQLHDESC);
+SQLRETURN SQL_API SQLEndTran(SQLSMALLINT,SQLHANDLE,SQLSMALLINT);
+SQLRETURN SQL_API SQLFetchScroll(SQLHSTMT,SQLSMALLINT,SQLROWOFFSET);
+SQLRETURN SQL_API SQLFreeHandle(SQLSMALLINT,SQLHANDLE);
+SQLRETURN SQL_API SQLGetConnectAttr(SQLHDBC,SQLINTEGER,SQLPOINTER,SQLINTEGER,SQLINTEGER*);
+SQLRETURN SQL_API SQLGetDescField(SQLHDESC,SQLSMALLINT,SQLSMALLINT,SQLPOINTER,SQLINTEGER,SQLINTEGER*);
+SQLRETURN SQL_API SQLGetDescRec(SQLHDESC,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLSMALLINT*,
+    SQLSMALLINT*,SQLSMALLINT*,SQLLEN*,SQLSMALLINT*,SQLSMALLINT*,SQLSMALLINT*);
+SQLRETURN SQL_API SQLGetDiagField(SQLSMALLINT,SQLHANDLE,SQLSMALLINT,SQLSMALLINT,SQLPOINTER,SQLSMALLINT,SQLSMALLINT*);
+SQLRETURN SQL_API SQLGetDiagRec(SQLSMALLINT,SQLHANDLE,SQLSMALLINT,SQLCHAR*,SQLINTEGER*,SQLCHAR*,SQLSMALLINT,SQLSMALLINT*);
+SQLRETURN SQL_API SQLGetEnvAttr(SQLHENV,SQLINTEGER,SQLPOINTER,SQLINTEGER,SQLINTEGER*);
+SQLRETURN SQL_API SQLGetStmtAttr(SQLHSTMT,SQLINTEGER,SQLPOINTER,SQLINTEGER,SQLINTEGER*);
+SQLRETURN SQL_API SQLSetConnectAttr(SQLHDBC,SQLINTEGER,SQLPOINTER,SQLINTEGER);
+SQLRETURN SQL_API SQLSetDescField(SQLHDESC,SQLSMALLINT,SQLSMALLINT,SQLPOINTER,SQLINTEGER);
+SQLRETURN SQL_API SQLSetDescRec(SQLHDESC,SQLSMALLINT,SQLSMALLINT,SQLSMALLINT,SQLLEN,SQLSMALLINT,
+    SQLSMALLINT,SQLPOINTER,SQLLEN*,SQLLEN*);
+SQLRETURN SQL_API SQLSetEnvAttr(SQLHENV,SQLINTEGER,SQLPOINTER,SQLINTEGER);
+SQLRETURN SQL_API SQLSetStmtAttr(SQLHSTMT,SQLINTEGER,SQLPOINTER,SQLINTEGER);
+#endif  /* (ODBCVER >= 0x0300) */
+#endif /* ndef RC_INVOKED */
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/sqlext.h
===================================================================
--- Daodan/MinGW/include/sqlext.h	(revision 1046)
+++ Daodan/MinGW/include/sqlext.h	(revision 1046)
@@ -0,0 +1,1218 @@
+#ifndef _SQLEXT_H
+#define _SQLEXT_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#include <sql.h>
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define SQL_SPEC_MAJOR 3
+#define SQL_SPEC_MINOR	51
+#define SQL_SPEC_STRING "03.51"
+#define SQL_ACCESS_MODE 101
+#define SQL_ACTIVE_CONNECTIONS 0
+#define SQL_ACTIVE_STATEMENTS 1
+#define SQL_ADD 4
+#define SQL_ALL_EXCEPT_LIKE 2
+#define SQL_API_ALL_FUNCTIONS 0
+#define SQL_API_LOADBYORDINAL 199
+#define SQL_API_SQLBINDPARAMETER 72
+#define SQL_API_SQLBROWSECONNECT 55
+#define SQL_API_SQLCOLATTRIBUTES 6
+#define SQL_API_SQLCOLUMNPRIVILEGES 56
+#define SQL_API_SQLDESCRIBEPARAM 58
+#define SQL_API_SQLDRIVERCONNECT 41
+#define SQL_API_SQLDRIVERS 71
+#define SQL_API_SQLEXTENDEDFETCH 59
+#define SQL_API_SQLFOREIGNKEYS 60
+#define SQL_API_SQLMORERESULTS 61
+#define SQL_API_SQLNATIVESQL 62
+#define SQL_API_SQLNUMPARAMS 63
+#define SQL_API_SQLPARAMOPTIONS 64
+#define SQL_API_SQLPRIMARYKEYS 65
+#define SQL_API_SQLPROCEDURECOLUMNS 66
+#define SQL_API_SQLPROCEDURES 67
+#define SQL_API_SQLSETPOS 68
+#define SQL_API_SQLSETSCROLLOPTIONS 69
+#define SQL_API_SQLTABLEPRIVILEGES 70
+#define SQL_ASYNC_ENABLE 4
+#define SQL_ASYNC_ENABLE_DEFAULT SQL_ASYNC_ENABLE_OFF
+#define SQL_ASYNC_ENABLE_OFF 0UL
+#define SQL_ASYNC_ENABLE_ON 1UL
+#define SQL_ATTR_CONNECTION_DEAD 1209
+#define SQL_ATTR_READONLY 0
+#define SQL_ATTR_READWRITE_UNKNOWN 2
+#define SQL_ATTR_WRITE 1
+#define SQL_AUTOCOMMIT 102
+#define SQL_AUTOCOMMIT_DEFAULT SQL_AUTOCOMMIT_ON
+#define SQL_AUTOCOMMIT_OFF 0UL
+#define SQL_AUTOCOMMIT_ON 1UL
+#define SQL_BEST_ROWID 1
+#define SQL_BIGINT (-5)
+#define SQL_BINARY (-2)
+#define SQL_BIND_BY_COLUMN 0UL
+#define SQL_BIND_TYPE 5
+#define SQL_BIND_TYPE_DEFAULT SQL_BIND_BY_COLUMN
+#define SQL_BIT (-7)
+#define SQL_BOOKMARK_PERSISTENCE 82
+#define SQL_BP_CLOSE 1
+#define SQL_BP_DELETE 2
+#define SQL_BP_DROP 4
+#define SQL_BP_OTHER_HSTMT 32
+#define SQL_BP_SCROLL 64
+#define SQL_BP_TRANSACTION 8
+#define SQL_BP_UPDATE 16
+#define SQL_C_BINARY SQL_BINARY
+#define SQL_C_BIT SQL_BIT
+#define SQL_C_BOOKMARK SQL_C_ULONG
+#define SQL_C_CHAR SQL_CHAR
+#define SQL_C_DATE SQL_DATE
+#define SQL_C_DEFAULT 99
+#define SQL_C_DOUBLE SQL_DOUBLE
+#define SQL_C_FLOAT SQL_REAL
+#define SQL_C_LONG SQL_INTEGER
+#define SQL_C_SHORT SQL_SMALLINT
+#define SQL_C_SLONG (SQL_C_LONG+SQL_SIGNED_OFFSET)
+#define SQL_C_SSHORT (SQL_C_SHORT+SQL_SIGNED_OFFSET)
+#define SQL_C_STINYINT (SQL_TINYINT+SQL_SIGNED_OFFSET)
+#define SQL_C_TIME SQL_TIME
+#define SQL_C_TIMESTAMP SQL_TIMESTAMP
+#define SQL_C_TINYINT SQL_TINYINT
+#define SQL_C_ULONG (SQL_C_LONG+SQL_UNSIGNED_OFFSET)
+#define SQL_C_USHORT (SQL_C_SHORT+SQL_UNSIGNED_OFFSET)
+#define SQL_C_UTINYINT (SQL_TINYINT+SQL_UNSIGNED_OFFSET)
+#define SQL_CASCADE 0
+#define SQL_CB_NON_NULL 1
+#define SQL_CB_NULL 0
+#define SQL_CC_CLOSE SQL_CB_CLOSE /* deprecated */
+#define SQL_CC_DELETE SQL_CB_DELETE /* deprecated */
+#define SQL_CC_PRESERVE SQL_CB_PRESERVE /* deprecated */
+#define SQL_CD_FALSE 0L
+#define SQL_CD_TRUE 1L
+#define SQL_CN_ANY 2
+#define SQL_CN_DIFFERENT 1
+#define SQL_CN_NONE 0
+#define SQL_COLATT_OPT_MAX SQL_COLUMN_LABEL
+#define SQL_COLATT_OPT_MIN SQL_COLUMN_COUNT
+#define SQL_COLUMN_ALIAS 87
+#define SQL_COLUMN_AUTO_INCREMENT 11
+#define SQL_COLUMN_CASE_SENSITIVE 12
+#define SQL_COLUMN_COUNT 0
+#define SQL_COLUMN_DISPLAY_SIZE 6
+#define SQL_COLUMN_LABEL 18
+#define SQL_COLUMN_LENGTH 3
+#define SQL_COLUMN_MONEY 9
+#define SQL_COLUMN_NAME 1
+#define SQL_COLUMN_NULLABLE 7
+#define SQL_COLUMN_OWNER_NAME 16
+#define SQL_COLUMN_PRECISION 4
+#define SQL_COLUMN_QUALIFIER_NAME 17
+#define SQL_COLUMN_SCALE 5
+#define SQL_COLUMN_SEARCHABLE 13
+#define SQL_COLUMN_TABLE_NAME 15
+#define SQL_COLUMN_TYPE 2
+#define SQL_COLUMN_TYPE_NAME 14
+#define SQL_COLUMN_UNSIGNED 8
+#define SQL_COLUMN_UPDATABLE 10
+#define SQL_CONCAT_NULL_BEHAVIOR 22
+#define SQL_CONCUR_DEFAULT SQL_CONCUR_READ_ONLY
+#define SQL_CONCUR_LOCK 2
+#define SQL_CONCUR_READ_ONLY 1
+#define SQL_CONCUR_ROWVER 3
+#define SQL_CONCUR_TIMESTAMP SQL_CONCUR_ROWVER /* deprecated */
+#define SQL_CONCUR_VALUES 4
+#define SQL_CONCURRENCY 7
+#define SQL_CONVERT_BIGINT 53
+#define SQL_CONVERT_BINARY 54
+#define SQL_CONVERT_BIT 55
+#define SQL_CONVERT_CHAR 56
+#define SQL_CONVERT_DATE 57
+#define SQL_CONVERT_DECIMAL 58
+#define SQL_CONVERT_DOUBLE 59
+#define SQL_CONVERT_FLOAT 60
+#define SQL_CONVERT_FUNCTIONS 48
+#define SQL_CONVERT_INTEGER 61
+#define SQL_CONVERT_LONGVARBINARY 71
+#define SQL_CONVERT_LONGVARCHAR 62
+#define SQL_CONVERT_NUMERIC 63
+#define SQL_CONVERT_REAL 64
+#define SQL_CONVERT_SMALLINT 65
+#define SQL_CONVERT_TIME 66
+#define SQL_CONVERT_TIMESTAMP 67
+#define SQL_CONVERT_TINYINT 68
+#define SQL_CONVERT_VARBINARY 69
+#define SQL_CONVERT_VARCHAR 70
+#define SQL_CORRELATION_NAME 74
+#define SQL_CR_CLOSE SQL_CB_CLOSE /* deprecated */
+#define SQL_CR_DELETE SQL_CB_DELETE /* deprecated */
+#define SQL_CR_PRESERVE SQL_CB_PRESERVE /* deprecated */
+#define SQL_CUR_DEFAULT SQL_CUR_USE_DRIVER
+#define SQL_CUR_USE_DRIVER 2UL
+#define SQL_CUR_USE_IF_NEEDED 0UL
+#define SQL_CUR_USE_ODBC 1UL
+#define SQL_CURRENT_QUALIFIER 109
+#define SQL_CURSOR_DYNAMIC 2UL
+#define SQL_CURSOR_FORWARD_ONLY 0UL
+#define SQL_CURSOR_KEYSET_DRIVEN 1UL
+#define SQL_CURSOR_ROLLBACK_BEHAVIOR 24
+#define SQL_CURSOR_STATIC 3UL
+#define SQL_CURSOR_TYPE 6
+#define SQL_CURSOR_TYPE_DEFAULT SQL_CURSOR_FORWARD_ONLY
+#define SQL_CV_CASCADED 0x00000004L
+#define SQL_CV_CHECK_OPTION 0x00000002L
+#define SQL_CV_CREATE_VIEW 0x00000001L
+#define SQL_CV_LOCAL 0x00000008L
+#define SQL_CVT_BIGINT 0x00004000L
+#define SQL_CVT_BINARY 0x00000400L
+#define SQL_CVT_BIT 0x00001000L
+#define SQL_CVT_CHAR 0x00000001L
+#define SQL_CVT_DATE 0x00008000L
+#define SQL_CVT_DECIMAL 0x00000004L
+#define SQL_CVT_DOUBLE 0x00000080L
+#define SQL_CVT_FLOAT 0x00000020L
+#define SQL_CVT_INTEGER 0x00000008L
+#define SQL_CVT_LONGVARBINARY 0x00040000L
+#define SQL_CVT_LONGVARCHAR 0x00000200L
+#define SQL_CVT_NUMERIC 0x00000002L
+#define SQL_CVT_REAL 0x00000040L
+#define SQL_CVT_SMALLINT 0x00000010L
+#define SQL_CVT_TIME 0x00010000L
+#define SQL_CVT_TIMESTAMP 0x00020000L
+#define SQL_CVT_TINYINT 0x00002000L
+#define SQL_CVT_VARBINARY 0x00000800L
+#define SQL_CVT_VARCHAR 0x00000100L
+#define SQL_DATABASE_NAME 16 /* deprecated */
+#define SQL_DATE 9
+#define SQL_DEFAULT_PARAM (-5)
+#define SQL_DELETE 3
+#define SQL_DRIVER_COMPLETE 1
+#define SQL_DRIVER_COMPLETE_REQUIRED 3
+#define SQL_DRIVER_HDBC 3
+#define SQL_DRIVER_HENV 4
+#define SQL_DRIVER_HLIB 76
+#define SQL_DRIVER_HSTMT 5
+#define SQL_DRIVER_NAME 6
+#define SQL_DRIVER_NOPROMPT 0
+#define SQL_DRIVER_ODBC_VER 77
+#define SQL_DRIVER_PROMPT 2
+#define SQL_DRIVER_VER 7
+#define SQL_DTC_ENLIST_EXPENSIVE 1
+#define SQL_DTC_TRANSITION_COST 1750
+#define SQL_DTC_UNENLIST_EXPENSIVE 2
+#define SQL_ENSURE 1
+#define SQL_ENTIRE_ROWSET 0
+#define SQL_EXPRESSIONS_IN_ORDERBY 27
+#define SQL_FD_FETCH_BOOKMARK 128
+#define SQL_FD_FETCH_PREV SQL_FD_FETCH_PRIOR /* deprecated */
+#define SQL_FD_FETCH_RESUME 64
+#define SQL_FETCH_BOOKMARK 8
+#define SQL_FETCH_PREV SQL_FETCH_PRIOR /* deprecated */
+#define SQL_FETCH_RESUME 7 /* deprecated */
+#define SQL_FILE_CATALOG SQL_FILE_QUALIFIER
+#define SQL_FILE_NOT_SUPPORTED 0x0000
+#define SQL_FILE_QUALIFIER 0x0002
+#define SQL_FILE_TABLE 0x0001
+#define SQL_FILE_USAGE 84
+#define SQL_FN_CVT_CONVERT 0x00000001L
+#define SQL_FN_NUM_ABS 0x00000001L
+#define SQL_FN_NUM_ACOS 0x00000002L
+#define SQL_FN_NUM_ASIN 0x00000004L
+#define SQL_FN_NUM_ATAN 0x00000008L
+#define SQL_FN_NUM_ATAN2 0x00000010L
+#define SQL_FN_NUM_CEILING 0x00000020L
+#define SQL_FN_NUM_COS 0x00000040L
+#define SQL_FN_NUM_COT 0x00000080L
+#define SQL_FN_NUM_DEGREES 0x00040000L
+#define SQL_FN_NUM_EXP 0x00000100L
+#define SQL_FN_NUM_FLOOR 0x00000200L
+#define SQL_FN_NUM_LOG 0x00000400L
+#define SQL_FN_NUM_LOG10 0x00080000L
+#define SQL_FN_NUM_MOD 0x00000800L
+#define SQL_FN_NUM_PI 0x00010000L
+#define SQL_FN_NUM_POWER 0x00100000L
+#define SQL_FN_NUM_RADIANS 0x00200000L
+#define SQL_FN_NUM_RAND 0x00020000L
+#define SQL_FN_NUM_ROUND 0x00400000L
+#define SQL_FN_NUM_SIGN 0x00001000L
+#define SQL_FN_NUM_SIN 0x00002000L
+#define SQL_FN_NUM_SQRT 0x00004000L
+#define SQL_FN_NUM_TAN 0x00008000L
+#define SQL_FN_NUM_TRUNCATE 0x00800000L
+#define SQL_FN_STR_ASCII 0x00002000L
+#define SQL_FN_STR_CHAR 0x00004000L
+#define SQL_FN_STR_CONCAT 0x00000001L
+#define SQL_FN_STR_DIFFERENCE 0x00008000L
+#define SQL_FN_STR_INSERT 0x00000002L
+#define SQL_FN_STR_LCASE 0x00000040L
+#define SQL_FN_STR_LEFT 0x00000004L
+#define SQL_FN_STR_LENGTH 0x00000010L
+#define SQL_FN_STR_LOCATE 0x00000020L
+#define SQL_FN_STR_LOCATE_2 0x00010000L
+#define SQL_FN_STR_LTRIM 0x00000008L
+#define SQL_FN_STR_REPEAT 0x00000080L
+#define SQL_FN_STR_REPLACE 0x00000100L
+#define SQL_FN_STR_RIGHT 0x00000200L
+#define SQL_FN_STR_RTRIM 0x00000400L
+#define SQL_FN_STR_SOUNDEX 0x00020000L
+#define SQL_FN_STR_SPACE 0x00040000L
+#define SQL_FN_STR_SUBSTRING 0x00000800L
+#define SQL_FN_STR_UCASE 0x00001000L
+#define SQL_FN_SYS_DBNAME 0x00000002L
+#define SQL_FN_SYS_IFNULL 0x00000004L
+#define SQL_FN_SYS_USERNAME 0x00000001L
+#define SQL_FN_TD_CURDATE 0x00000002L
+#define SQL_FN_TD_CURTIME 0x00000200L
+#define SQL_FN_TD_DAYNAME 0x00008000L
+#define SQL_FN_TD_DAYOFMONTH 0x00000004L
+#define SQL_FN_TD_DAYOFWEEK 0x00000008L
+#define SQL_FN_TD_DAYOFYEAR 0x00000010L
+#define SQL_FN_TD_HOUR 0x00000400L
+#define SQL_FN_TD_MINUTE 0x00000800L
+#define SQL_FN_TD_MONTH 0x00000020L
+#define SQL_FN_TD_MONTHNAME 0x00010000L
+#define SQL_FN_TD_NOW 0x00000001L
+#define SQL_FN_TD_QUARTER 0x00000040L
+#define SQL_FN_TD_SECOND 0x00001000L
+#define SQL_FN_TD_TIMESTAMPADD 0x00002000L
+#define SQL_FN_TD_TIMESTAMPDIFF 0x00004000L
+#define SQL_FN_TD_WEEK 0x00000080L
+#define SQL_FN_TD_YEAR 0x00000100L
+#define SQL_FN_TSI_DAY 0x00000010L
+#define SQL_FN_TSI_FRAC_SECOND 0x00000001L
+#define SQL_FN_TSI_HOUR 0x00000008L
+#define SQL_FN_TSI_MINUTE 0x00000004L
+#define SQL_FN_TSI_MONTH 0x00000040L
+#define SQL_FN_TSI_QUARTER 0x00000080L
+#define SQL_FN_TSI_SECOND 0x00000002L
+#define SQL_FN_TSI_WEEK 0x00000020L
+#define SQL_FN_TSI_YEAR 0x00000100L
+#define SQL_GB_GROUP_BY_CONTAINS_SELECT 2
+#define SQL_GB_GROUP_BY_EQUALS_SELECT 1
+#define SQL_GB_NO_RELATION 3
+#define SQL_GB_NOT_SUPPORTED 0
+#define SQL_GD_BLOCK 4
+#define SQL_GD_BOUND 8
+#define SQL_GET_BOOKMARK 13
+#define SQL_GROUP_BY 88
+#define SQL_IGNORE (-6)
+#define SQL_INFO_FIRST 0
+#define SQL_KEYSET_SIZE 8
+#define SQL_KEYSET_SIZE_DEFAULT 0UL
+#define SQL_KEYWORDS 89
+#define SQL_LCK_EXCLUSIVE 2
+#define SQL_LCK_NO_CHANGE 1
+#define SQL_LCK_UNLOCK 4
+#define SQL_LEN_BINARY_ATTR(length) (-(length)+SQL_LEN_BINARY_ATTR_OFFSET)
+#define SQL_LEN_BINARY_ATTR_OFFSET (-100)
+#define SQL_LEN_DATA_AT_EXEC(length) (-(length)+SQL_LEN_DATA_AT_EXEC_OFFSET)
+#define SQL_LEN_DATA_AT_EXEC_OFFSET (-100)
+#define SQL_LIKE_ESCAPE_CLAUSE 113
+#define SQL_LIKE_ONLY 1
+#define SQL_LOCK_EXCLUSIVE 1
+#define SQL_LOCK_NO_CHANGE 0
+#define SQL_LOCK_TYPES 78
+#define SQL_LOCK_UNLOCK 2
+#define SQL_LOGIN_TIMEOUT 103
+#define SQL_LOGIN_TIMEOUT_DEFAULT 15UL
+#define SQL_LONGVARBINARY (-4)
+#define SQL_LONGVARCHAR (-1)
+#define SQL_MAX_BINARY_LITERAL_LEN 112
+#define SQL_MAX_CHAR_LITERAL_LEN 108
+#define SQL_MAX_DSN_LENGTH 32
+#define SQL_MAX_LENGTH 3
+#define SQL_MAX_LENGTH_DEFAULT 0UL
+#define SQL_MAX_OPTION_STRING_LENGTH 256
+#define SQL_MAX_OWNER_NAME_LEN 32
+#define SQL_MAX_PROCEDURE_NAME_LEN 33
+#define SQL_MAX_QUALIFIER_NAME_LEN 34
+#define SQL_MAX_ROW_SIZE_INCLUDES_LONG 103
+#define SQL_MAX_ROWS 1
+#define SQL_MAX_ROWS_DEFAULT 0UL
+#define SQL_MODE_DEFAULT SQL_MODE_READ_WRITE
+#define SQL_MODE_READ_ONLY 1UL
+#define SQL_MODE_READ_WRITE 0UL
+#define SQL_MULT_RESULT_SETS 36
+#define SQL_MULTIPLE_ACTIVE_TXN 37
+#define SQL_NC_END 0x0004
+#define SQL_NC_START 0x0002
+#define SQL_NEED_LONG_DATA_LEN 111
+#define SQL_NNC_NON_NULL 0x0001
+#define SQL_NNC_NULL 0x0000
+#define SQL_NO_TOTAL (-4)
+#define SQL_NON_NULLABLE_COLUMNS 75
+#define SQL_NOSCAN 2
+#define SQL_NOSCAN_DEFAULT SQL_NOSCAN_OFF
+#define SQL_NOSCAN_OFF 0UL
+#define SQL_NOSCAN_ON 1UL
+#define SQL_NUMERIC_FUNCTIONS 49
+#define SQL_OAC_LEVEL1 0x0001
+#define SQL_OAC_LEVEL2 0x0002
+#define SQL_OAC_NONE 0x0000
+#define SQL_ODBC_API_CONFORMANCE 9
+#define SQL_ODBC_CURSORS 110
+#define SQL_ODBC_SAG_CLI_CONFORMANCE 12
+#define SQL_ODBC_SQL_CONFORMANCE 15
+#define SQL_ODBC_SQL_OPT_IEF 73
+#define SQL_ODBC_VER 10
+#define SQL_OPT_TRACE 104
+#define SQL_OPT_TRACE_DEFAULT SQL_OPT_TRACE_OFF
+#define SQL_OPT_TRACE_FILE_DEFAULT "\\SQL.LOG"
+#define SQL_OPT_TRACE_OFF 0UL
+#define SQL_OPT_TRACE_ON 1UL
+#define SQL_OPT_TRACEFILE 105
+#define SQL_OSC_CORE 1
+#define SQL_OSC_EXTENDED 2
+#define SQL_OSC_MINIMUM 0
+#define SQL_OSCC_COMPLIANT 1
+#define SQL_OSCC_NOT_COMPLIANT 0
+#define SQL_OU_DML_STATEMENTS 1
+#define SQL_OU_INDEX_DEFINITION 8
+#define SQL_OU_PRIVILEGE_DEFINITION 16
+#define SQL_OU_PROCEDURE_INVOCATION 2
+#define SQL_OU_TABLE_DEFINITION 4
+#define SQL_OUTER_JOINS 38
+#define SQL_OWNER_TERM 39
+#define SQL_OWNER_USAGE 91
+#define SQL_PACKET_SIZE 112
+#define SQL_PARAM_INPUT 1
+#define SQL_PARAM_INPUT_OUTPUT 2
+#define SQL_PARAM_OUTPUT 4
+#define SQL_PARAM_TYPE_DEFAULT SQL_PARAM_INPUT_OUTPUT
+#define SQL_PARAM_TYPE_UNKNOWN 0
+#define SQL_PC_NOT_PSEUDO 1
+#define SQL_POS_ADD 16
+#define SQL_POS_DELETE 8
+#define SQL_POS_OPERATIONS 79
+#define SQL_POS_POSITION 1
+#define SQL_POS_REFRESH 2
+#define SQL_POS_UPDATE 4
+#define SQL_POSITION 0
+#define SQL_POSITIONED_STATEMENTS 80
+#define SQL_PRED_SEARCHABLE SQL_SEARCHABLE
+#define SQL_PROCEDURE_TERM 40
+#define SQL_PROCEDURES 21
+#define SQL_PS_POSITIONED_DELETE 1
+#define SQL_PS_POSITIONED_UPDATE 2
+#define SQL_PS_SELECT_FOR_UPDATE 4
+#define SQL_PT_FUNCTION 2
+#define SQL_PT_PROCEDURE 1
+#define SQL_PT_UNKNOWN 0
+#define SQL_QL_END 0x0002
+#define SQL_QL_START 0x0001
+#define SQL_QU_DML_STATEMENTS 1
+#define SQL_QU_INDEX_DEFINITION 8
+#define SQL_QU_PRIVILEGE_DEFINITION 16
+#define SQL_QU_PROCEDURE_INVOCATION 2
+#define SQL_QU_TABLE_DEFINITION 4
+#define SQL_QUALIFIER_LOCATION 114
+#define SQL_QUALIFIER_NAME_SEPARATOR 41
+#define SQL_QUALIFIER_TERM 42
+#define SQL_QUALIFIER_USAGE 92
+#define SQL_QUERY_TIMEOUT 0
+#define SQL_QUERY_TIMEOUT_DEFAULT 0UL
+#define SQL_QUICK 0
+#define SQL_QUIET_MODE 111
+#define SQL_QUOTED_IDENTIFIER_CASE 93
+#define SQL_RD_DEFAULT SQL_RD_ON
+#define SQL_RD_OFF 0UL
+#define SQL_RD_ON 1UL
+#define SQL_REFRESH 1
+#define SQL_RESTRICT 1
+#define SQL_RESULT_COL 3
+#define SQL_RETRIEVE_DATA 11
+#define SQL_RETURN_VALUE 5
+#define SQL_ROW_ADDED 4
+#define SQL_ROW_DELETED 1
+#define SQL_ROW_ERROR 5
+#define SQL_ROW_NOROW 3
+#define SQL_ROW_NUMBER 14
+#define SQL_ROW_SUCCESS 0
+#define SQL_ROW_UPDATED 2
+#define SQL_ROW_UPDATES 11
+#define SQL_ROWSET_SIZE 9
+#define SQL_ROWSET_SIZE_DEFAULT 1UL
+#define SQL_ROWVER 2
+#define SQL_SC_NON_UNIQUE 0UL
+#define SQL_SC_TRY_UNIQUE 1UL
+#define SQL_SC_UNIQUE 2UL
+#define SQL_SCCO_OPT_TIMESTAMP SQL_SCCO_OPT_ROWVER /* deprecated */
+#define SQL_SCROLL_DYNAMIC (-2L) /* deprecated */
+#define SQL_SCROLL_FORWARD_ONLY 0L /* deprecated */
+#define SQL_SCROLL_KEYSET_DRIVEN (-1L) /* deprecated */
+#define SQL_SCROLL_OPTIONS 44
+#define SQL_SCROLL_STATIC (-3L) /* deprecated */
+#define SQL_SEARCHABLE 3
+#define SQL_SET_NULL 2
+#define SQL_SETPARAM_VALUE_MAX (-1L)
+#define SQL_SETPOS_MAX_LOCK_VALUE SQL_LOCK_UNLOCK
+#define SQL_SETPOS_MAX_OPTION_VALUE SQL_ADD
+#define SQL_SIGNED_OFFSET (-20)
+#define SQL_SIMULATE_CURSOR 10
+#define SQL_SO_DYNAMIC 4
+#define SQL_SO_FORWARD_ONLY 1
+#define SQL_SO_KEYSET_DRIVEN 2
+#define SQL_SO_MIXED 8
+#define SQL_SO_STATIC 16
+#define SQL_SQ_COMPARISON 1
+#define SQL_SQ_CORRELATED_SUBQUERIES 16
+#define SQL_SQ_EXISTS 2
+#define SQL_SQ_IN 4
+#define SQL_SQ_QUANTIFIED 8
+#define SQL_SQLSTATE_SIZE 5
+#define SQL_SS_ADDITIONS 1
+#define SQL_SS_DELETIONS 2
+#define SQL_SS_UPDATES 4
+#define SQL_STATIC_SENSITIVITY 83
+#define SQL_STRING_FUNCTIONS 50
+#define SQL_SUBQUERIES 95
+#define SQL_SYSTEM_FUNCTIONS 51
+#define SQL_TABLE_STAT 0
+#define SQL_TABLE_TERM 45
+#define SQL_TIME 10
+#define SQL_TIMEDATE_ADD_INTERVALS 109
+#define SQL_TIMEDATE_DIFF_INTERVALS 110
+#define SQL_TIMEDATE_FUNCTIONS 52
+#define SQL_TIMESTAMP 11
+#define SQL_TINYINT (-6)
+#define SQL_TRANSLATE_DLL 106
+#define SQL_TRANSLATE_OPTION 107
+#define SQL_TXN_ISOLATION 108
+#define SQL_TXN_VERSIONING 16
+#define SQL_TYPE_NULL 0
+#define SQL_U_UNION 1
+#define SQL_U_UNION_ALL 2
+#define SQL_UB_DEFAULT SQL_UB_OFF
+#define SQL_UB_OFF 0UL
+#define SQL_UB_ON 01UL
+#define SQL_UNION 96
+#define SQL_UNSEARCHABLE 0
+#define SQL_UNSIGNED_OFFSET (-22)
+#define SQL_UPDATE 2
+#define SQL_USE_BOOKMARKS 12
+#define SQL_VARBINARY (-3)
+#define SQL_POSITION_TO(s,r) SQLSetPos(s,r,SQL_POSITION,SQL_LOCK_NO_CHANGE)
+#define SQL_LOCK_RECORD(s,r,l) SQLSetPos(s,r,SQL_POSITION,l)
+#define SQL_REFRESH_RECORD(s,r,l) SQLSetPos(s,r,SQL_REFRESH,l)
+#define SQL_UPDATE_RECORD(s,r) SQLSetPos(s,r,SQL_UPDATE,SQL_LOCK_NO_CHANGE)
+#define SQL_DELETE_RECORD(s,r) SQLSetPos(s,r,SQL_DELETE,SQL_LOCK_NO_CHANGE)
+#define SQL_ADD_RECORD(s,r) SQLSetPos(s,r,SQL_ADD,SQL_LOCK_NO_CHANGE)
+
+#if (ODBCVER < 0x0300)
+#define SQL_CONNECT_OPT_DRVR_START 1000
+#define SQL_CONN_OPT_MAX SQL_PACKET_SIZE
+#define SQL_CONN_OPT_MIN SQL_ACCESS_MODE
+#define SQL_STMT_OPT_MAX SQL_ROW_NUMBER
+#define SQL_STMT_OPT_MIN SQL_QUERY_TIMEOUT
+#define SQL_TYPE_DRIVER_START SQL_INTERVAL_YEAR
+#define SQL_TYPE_DRIVER_END SQL_UNICODE_LONGVARCHAR
+#define SQL_TYPE_MIN SQL_BIT
+#define SQL_TYPE_MAX SQL_VARCHAR
+#endif
+
+#if (ODBCVER < 0x0300)
+#define SQL_NO_DATA_FOUND 100
+#define SQL_INTERVAL_YEAR (-80)
+#define SQL_INTERVAL_MONTH (-81)
+#define SQL_INTERVAL_YEAR_TO_MONTH (-82)
+#define SQL_INTERVAL_DAY (-83)
+#define SQL_INTERVAL_HOUR (-84)
+#define SQL_INTERVAL_MINUTE (-85)
+#define SQL_INTERVAL_SECOND (-86)
+#define SQL_INTERVAL_DAY_TO_HOUR (-87)
+#define SQL_INTERVAL_DAY_TO_MINUTE (-88)
+#define SQL_INTERVAL_DAY_TO_SECOND (-89)
+#define SQL_INTERVAL_HOUR_TO_MINUTE (-90)
+#define SQL_INTERVAL_HOUR_TO_SECOND (-91)
+#define SQL_INTERVAL_MINUTE_TO_SECOND (-92)
+#else
+#define SQL_NO_DATA_FOUND SQL_NO_DATA
+#define SQL_CODE_YEAR 1
+#define SQL_CODE_MONTH 2
+#define SQL_CODE_DAY 3
+#define SQL_CODE_HOUR 4
+#define SQL_CODE_MINUTE 5
+#define SQL_CODE_SECOND 6
+#define SQL_CODE_YEAR_TO_MONTH 7
+#define SQL_CODE_DAY_TO_HOUR 8
+#define SQL_CODE_DAY_TO_MINUTE 9
+#define SQL_CODE_DAY_TO_SECOND 10
+#define SQL_CODE_HOUR_TO_MINUTE 11
+#define SQL_CODE_HOUR_TO_SECOND 12
+#define SQL_CODE_MINUTE_TO_SECOND 13
+#define SQL_INTERVAL_YEAR (100 + SQL_CODE_YEAR)
+#define SQL_INTERVAL_MONTH (100 + SQL_CODE_MONTH)
+#define SQL_INTERVAL_DAY (100 + SQL_CODE_DAY)
+#define SQL_INTERVAL_HOUR (100 + SQL_CODE_HOUR)
+#define SQL_INTERVAL_MINUTE (100 + SQL_CODE_MINUTE)
+#define SQL_INTERVAL_SECOND (100 + SQL_CODE_SECOND)
+#define SQL_INTERVAL_YEAR_TO_MONTH (100 + SQL_CODE_YEAR_TO_MONTH)
+#define SQL_INTERVAL_DAY_TO_HOUR (100 + SQL_CODE_DAY_TO_HOUR)
+#define SQL_INTERVAL_DAY_TO_MINUTE (100 + SQL_CODE_DAY_TO_MINUTE)
+#define SQL_INTERVAL_DAY_TO_SECOND (100 + SQL_CODE_DAY_TO_SECOND)
+#define SQL_INTERVAL_HOUR_TO_MINUTE (100 + SQL_CODE_HOUR_TO_MINUTE)
+#define SQL_INTERVAL_HOUR_TO_SECOND (100 + SQL_CODE_HOUR_TO_SECOND)
+#define SQL_INTERVAL_MINUTE_TO_SECOND (100 + SQL_CODE_MINUTE_TO_SECOND)
+#endif
+
+#if (ODBCVER <= 0x0300)
+#define SQL_UNICODE (-95)
+#define SQL_UNICODE_VARCHAR (-96)
+#define SQL_UNICODE_LONGVARCHAR (-97)
+#define SQL_UNICODE_CHAR SQL_UNICODE
+#else
+#define SQL_UNICODE SQL_WCHAR
+#define SQL_UNICODE_VARCHAR SQL_WVARCHAR
+#define SQL_UNICODE_LONGVARCHAR SQL_WLONGVARCHAR
+#define SQL_UNICODE_CHAR SQL_WCHAR
+#endif
+
+#if (ODBCVER >= 0x0201) && (ODBCVER < 0x0300)
+#define SQL_OJ_CAPABILITIES 65003
+#endif /* ODBCVER < 0x0300 */
+
+#if (ODBCVER >= 0x0250)
+#define SQL_NO_ACTION 3
+#define SQL_SET_DEFAULT 4
+#endif /* ODBCVER >= 0x0250 */
+
+#if (ODBCVER >= 0x0300)
+#define SQL_ACTIVE_ENVIRONMENTS 116
+#define SQL_AD_ADD_CONSTRAINT_DEFERRABLE 0x00000080L
+#define SQL_AD_ADD_CONSTRAINT_INITIALLY_DEFERRED 0x00000020L
+#define SQL_AD_ADD_CONSTRAINT_INITIALLY_IMMEDIATE 0x00000040L
+#define SQL_AD_ADD_CONSTRAINT_NON_DEFERRABLE 0x00000100L
+#define SQL_AD_ADD_DOMAIN_CONSTRAINT 0x00000002L
+#define SQL_AD_ADD_DOMAIN_DEFAULT 0x00000008L
+#define SQL_AD_CONSTRAINT_NAME_DEFINITION 0x00000001L
+#define SQL_AD_DROP_DOMAIN_CONSTRAINT 0x00000004L
+#define SQL_AD_DROP_DOMAIN_DEFAULT 0x00000010L
+#define SQL_AF_ALL 0x00000040L
+#define SQL_AF_AVG 0x00000001L
+#define SQL_AF_COUNT 0x00000002L
+#define SQL_AF_DISTINCT 0x00000020L
+#define SQL_AF_MAX 0x00000004L
+#define SQL_AF_MIN 0x00000008L
+#define SQL_AF_SUM 0x00000010L
+#define SQL_AGGREGATE_FUNCTIONS 169
+#define SQL_ALL_CATALOGS "%"
+#define SQL_ALL_SCHEMAS "%"
+#define SQL_ALL_TABLE_TYPES "%"
+#define SQL_ALTER_DOMAIN 117
+#define SQL_AM_CONNECTION 1
+#define SQL_AM_NONE 0
+#define SQL_AM_STATEMENT 2
+#define SQL_API_ODBC3_ALL_FUNCTIONS 999
+#define SQL_API_ODBC3_ALL_FUNCTIONS_SIZE 250
+#define SQL_API_SQLALLOCHANDLESTD 73
+#define SQL_API_SQLBULKOPERATIONS 24
+#define SQL_ASYNC_MODE 10021
+#define SQL_AT_ADD_COLUMN_COLLATION 0x00000080L
+#define SQL_AT_ADD_COLUMN_DEFAULT 0x00000040L
+#define SQL_AT_ADD_COLUMN_SINGLE 0x00000020L
+#define SQL_AT_ADD_TABLE_CONSTRAINT 0x00001000L
+#define SQL_AT_CONSTRAINT_DEFERRABLE 0x00040000L
+#define SQL_AT_CONSTRAINT_INITIALLY_DEFERRED 0x00010000L
+#define SQL_AT_CONSTRAINT_INITIALLY_IMMEDIATE 0x00020000L
+#define SQL_AT_CONSTRAINT_NAME_DEFINITION 0x00008000L
+#define SQL_AT_CONSTRAINT_NON_DEFERRABLE 0x00080000L
+#define SQL_AT_DROP_COLUMN_CASCADE 0x00000400L
+#define SQL_AT_DROP_COLUMN_DEFAULT 0x00000200L
+#define SQL_AT_DROP_COLUMN_RESTRICT 0x00000800L
+#define SQL_AT_DROP_TABLE_CONSTRAINT_CASCADE 0x00002000L
+#define SQL_AT_DROP_TABLE_CONSTRAINT_RESTRICT 0x00004000L
+#define SQL_AT_SET_COLUMN_DEFAULT 0x00000100L
+#define SQL_ATTR_ACCESS_MODE SQL_ACCESS_MODE
+#define SQL_ATTR_ASYNC_ENABLE 4
+#define SQL_ATTR_AUTOCOMMIT SQL_AUTOCOMMIT
+#define SQL_ATTR_CONCURRENCY SQL_CONCURRENCY
+#define SQL_ATTR_CONNECTION_POOLING 201
+#define SQL_ATTR_CONNECTION_TIMEOUT 113
+#define SQL_ATTR_CP_MATCH 202
+#define SQL_ATTR_CURRENT_CATALOG SQL_CURRENT_QUALIFIER
+#define SQL_ATTR_CURSOR_TYPE SQL_CURSOR_TYPE
+#define SQL_ATTR_DISCONNECT_BEHAVIOR 114
+#define SQL_ATTR_ENABLE_AUTO_IPD 15
+#define SQL_ATTR_ENLIST_IN_DTC 1207
+#define SQL_ATTR_ENLIST_IN_XA 1208
+#define SQL_ATTR_FETCH_BOOKMARK_PTR 16
+#define SQL_ATTR_KEYSET_SIZE SQL_KEYSET_SIZE
+#define SQL_ATTR_LOGIN_TIMEOUT SQL_LOGIN_TIMEOUT
+#define SQL_ATTR_MAX_LENGTH SQL_MAX_LENGTH
+#define SQL_ATTR_MAX_ROWS SQL_MAX_ROWS
+#define SQL_ATTR_NOSCAN SQL_NOSCAN
+#define SQL_ATTR_ODBC_CURSORS SQL_ODBC_CURSORS
+#define SQL_ATTR_ODBC_VERSION 200
+#define SQL_ATTR_PACKET_SIZE SQL_PACKET_SIZE
+#define SQL_ATTR_PARAM_BIND_OFFSET_PTR 17
+#define SQL_ATTR_PARAM_BIND_TYPE 18
+#define SQL_ATTR_PARAM_OPERATION_PTR 19
+#define SQL_ATTR_PARAM_STATUS_PTR 20
+#define SQL_ATTR_PARAMS_PROCESSED_PTR 21
+#define SQL_ATTR_PARAMSET_SIZE 22
+#define SQL_ATTR_QUERY_TIMEOUT SQL_QUERY_TIMEOUT
+#define SQL_ATTR_QUIET_MODE SQL_QUIET_MODE
+#define SQL_ATTR_RETRIEVE_DATA SQL_RETRIEVE_DATA
+#define SQL_ATTR_ROW_ARRAY_SIZE 27
+#define SQL_ATTR_ROW_BIND_OFFSET_PTR 23
+#define SQL_ATTR_ROW_BIND_TYPE SQL_BIND_TYPE
+#define SQL_ATTR_ROW_NUMBER SQL_ROW_NUMBER
+#define SQL_ATTR_ROW_OPERATION_PTR 24
+#define SQL_ATTR_ROW_STATUS_PTR 25
+#define SQL_ATTR_ROWS_FETCHED_PTR 26
+#define SQL_ATTR_SIMULATE_CURSOR SQL_SIMULATE_CURSOR
+#define SQL_ATTR_TRACE SQL_OPT_TRACE
+#define SQL_ATTR_TRACEFILE SQL_OPT_TRACEFILE
+#define SQL_ATTR_TRANSLATE_LIB SQL_TRANSLATE_DLL
+#define SQL_ATTR_TRANSLATE_OPTION SQL_TRANSLATE_OPTION
+#define SQL_ATTR_TXN_ISOLATION SQL_TXN_ISOLATION
+#define SQL_ATTR_USE_BOOKMARKS SQL_USE_BOOKMARKS
+#define SQL_BATCH_ROW_COUNT 120
+#define SQL_BATCH_SUPPORT 121
+#define SQL_BRC_EXPLICIT 0x0000002
+#define SQL_BRC_PROCEDURES 0x0000001
+#define SQL_BRC_ROLLED_UP 0x0000004
+#define SQL_BS_ROW_COUNT_EXPLICIT 0x00000002L
+#define SQL_BS_ROW_COUNT_PROC 0x00000008L
+#define SQL_BS_SELECT_EXPLICIT 0x00000001L
+#define SQL_BS_SELECT_PROC 0x00000004L
+#define SQL_C_INTERVAL_DAY SQL_INTERVAL_DAY
+#define SQL_C_INTERVAL_DAY_TO_HOUR SQL_INTERVAL_DAY_TO_HOUR
+#define SQL_C_INTERVAL_DAY_TO_MINUTE SQL_INTERVAL_DAY_TO_MINUTE
+#define SQL_C_INTERVAL_DAY_TO_SECOND SQL_INTERVAL_DAY_TO_SECOND
+#define SQL_C_INTERVAL_HOUR SQL_INTERVAL_HOUR
+#define SQL_C_INTERVAL_HOUR_TO_MINUTE SQL_INTERVAL_HOUR_TO_MINUTE
+#define SQL_C_INTERVAL_HOUR_TO_SECOND SQL_INTERVAL_HOUR_TO_SECOND
+#define SQL_C_INTERVAL_MINUTE SQL_INTERVAL_MINUTE
+#define SQL_C_INTERVAL_MINUTE_TO_SECOND SQL_INTERVAL_MINUTE_TO_SECOND
+#define SQL_C_INTERVAL_MONTH SQL_INTERVAL_MONTH
+#define SQL_C_INTERVAL_SECOND SQL_INTERVAL_SECOND
+#define SQL_C_INTERVAL_YEAR SQL_INTERVAL_YEAR
+#define SQL_C_INTERVAL_YEAR_TO_MONTH SQL_INTERVAL_YEAR_TO_MONTH
+#define SQL_C_NUMERIC SQL_NUMERIC
+#define SQL_C_SBIGINT (SQL_BIGINT+SQL_SIGNED_OFFSET)
+#define SQL_C_TYPE_DATE SQL_TYPE_DATE
+#define SQL_C_TYPE_TIME SQL_TYPE_TIME
+#define SQL_C_TYPE_TIMESTAMP SQL_TYPE_TIMESTAMP
+#define SQL_C_UBIGINT (SQL_BIGINT+SQL_UNSIGNED_OFFSET)
+#define SQL_C_VARBOOKMARK SQL_C_BINARY
+#define SQL_CA_CONSTRAINT_DEFERRABLE 0x00000040L
+#define SQL_CA_CONSTRAINT_INITIALLY_DEFERRED 0x00000010L
+#define SQL_CA_CONSTRAINT_INITIALLY_IMMEDIATE 0x00000020L
+#define SQL_CA_CONSTRAINT_NON_DEFERRABLE 0x00000080L
+#define SQL_CA_CREATE_ASSERTION 0x00000001L
+#define SQL_CA1_ABSOLUTE 0x00000002L
+#define SQL_CA1_BOOKMARK 0x00000008L
+#define SQL_CA1_BULK_ADD 0x00010000L
+#define SQL_CA1_BULK_DELETE_BY_BOOKMARK 0x00040000L
+#define SQL_CA1_BULK_FETCH_BY_BOOKMARK 0x00080000L
+#define SQL_CA1_BULK_UPDATE_BY_BOOKMARK 0x00020000L
+#define SQL_CA1_LOCK_EXCLUSIVE 0x00000080L
+#define SQL_CA1_LOCK_NO_CHANGE 0x00000040L
+#define SQL_CA1_LOCK_UNLOCK 0x00000100L
+#define SQL_CA1_NEXT 0x00000001L
+#define SQL_CA1_POS_DELETE 0x00000800L
+#define SQL_CA1_POS_POSITION 0x00000200L
+#define SQL_CA1_POS_REFRESH 0x00001000L
+#define SQL_CA1_POS_UPDATE 0x00000400L
+#define SQL_CA1_POSITIONED_DELETE 0x00004000L
+#define SQL_CA1_POSITIONED_UPDATE 0x00002000L
+#define SQL_CA1_RELATIVE 0x00000004L
+#define SQL_CA1_SELECT_FOR_UPDATE 0x00008000L
+#define SQL_CA2_CRC_APPROXIMATE 0x00002000L
+#define SQL_CA2_CRC_EXACT 0x00001000L
+#define SQL_CA2_LOCK_CONCURRENCY 0x00000002L
+#define SQL_CA2_MAX_ROWS_AFFECTS_ALL (SQL_CA2_MAX_ROWS_SELECT | SQL_CA2_MAX_ROWS_INSERT | \
+    SQL_CA2_MAX_ROWS_DELETE | SQL_CA2_MAX_ROWS_UPDATE | SQL_CA2_MAX_ROWS_CATALOG)
+#define SQL_CA2_MAX_ROWS_CATALOG 0x00000800L
+#define SQL_CA2_MAX_ROWS_DELETE 0x00000200L
+#define SQL_CA2_MAX_ROWS_INSERT 0x00000100L
+#define SQL_CA2_MAX_ROWS_SELECT 0x00000080L
+#define SQL_CA2_MAX_ROWS_UPDATE 0x00000400L
+#define SQL_CA2_OPT_ROWVER_CONCURRENCY 0x00000004L
+#define SQL_CA2_OPT_VALUES_CONCURRENCY 0x00000008L
+#define SQL_CA2_READ_ONLY_CONCURRENCY 0x00000001L
+#define SQL_CA2_SENSITIVITY_ADDITIONS 0x00000010L
+#define SQL_CA2_SENSITIVITY_DELETIONS 0x00000020L
+#define SQL_CA2_SENSITIVITY_UPDATES 0x00000040L
+#define SQL_CA2_SIMULATE_NON_UNIQUE 0x00004000L
+#define SQL_CA2_SIMULATE_TRY_UNIQUE 0x00008000L
+#define SQL_CA2_SIMULATE_UNIQUE 0x00010000L
+#define SQL_CATALOG_LOCATION SQL_QUALIFIER_LOCATION
+#define SQL_CATALOG_NAME_SEPARATOR SQL_QUALIFIER_NAME_SEPARATOR
+#define SQL_CATALOG_TERM SQL_QUALIFIER_TERM
+#define SQL_CATALOG_USAGE SQL_QUALIFIER_USAGE
+#define SQL_CCOL_CREATE_COLLATION 0x00000001L
+#define SQL_CCS_COLLATE_CLAUSE 0x00000002L
+#define SQL_CCS_CREATE_CHARACTER_SET 0x00000001L
+#define SQL_CCS_LIMITED_COLLATION 0x00000004L
+#define SQL_CDO_COLLATION 0x00000008L
+#define SQL_CDO_CONSTRAINT 0x00000004L
+#define SQL_CDO_CONSTRAINT_DEFERRABLE 0x00000080L
+#define SQL_CDO_CONSTRAINT_INITIALLY_DEFERRED 0x00000020L
+#define SQL_CDO_CONSTRAINT_INITIALLY_IMMEDIATE 0x00000040L
+#define SQL_CDO_CONSTRAINT_NAME_DEFINITION 0x00000010L
+#define SQL_CDO_CONSTRAINT_NON_DEFERRABLE 0x00000100L
+#define SQL_CDO_CREATE_DOMAIN 0x00000001L
+#define SQL_CDO_DEFAULT 0x00000002L
+#define SQL_CL_END SQL_QL_END
+#define SQL_CL_START SQL_QL_START
+#define SQL_COL_PRED_BASIC SQL_ALL_EXCEPT_LIKE
+#define SQL_COL_PRED_CHAR SQL_LIKE_ONLY
+#define SQL_COLUMN_DRIVER_START 1000
+#define SQL_COLUMN_IGNORE SQL_IGNORE
+#define SQL_COLUMN_NUMBER_UNKNOWN (-2)
+#define SQL_CONVERT_GUID 173
+#define SQL_CONVERT_INTERVAL_DAY_TIME 123
+#define SQL_CONVERT_INTERVAL_YEAR_MONTH 124
+#define SQL_CONVERT_WCHAR 122
+#define SQL_CONVERT_WLONGVARCHAR 125
+#define SQL_CONVERT_WVARCHAR 126
+#define SQL_CP_DEFAULT SQL_CP_OFF
+#define SQL_CP_MATCH_DEFAULT SQL_CP_STRICT_MATCH
+#define SQL_CP_OFF 0UL
+#define SQL_CP_ONE_PER_DRIVER 1UL
+#define SQL_CP_ONE_PER_HENV 2UL
+#define SQL_CP_RELAXED_MATCH 1UL
+#define SQL_CP_STRICT_MATCH 0UL
+#define SQL_CREATE_ASSERTION 127
+#define SQL_CREATE_CHARACTER_SET 128
+#define SQL_CREATE_COLLATION 129
+#define SQL_CREATE_DOMAIN 130
+#define SQL_CREATE_SCHEMA 131
+#define SQL_CREATE_TABLE 132
+#define SQL_CREATE_TRANSLATION 133
+#define SQL_CREATE_VIEW 134
+#define SQL_CS_AUTHORIZATION 0x00000002L
+#define SQL_CS_CREATE_SCHEMA 0x00000001L
+#define SQL_CS_DEFAULT_CHARACTER_SET 0x00000004L
+#define SQL_CT_COLUMN_COLLATION 0x00000800L
+#define SQL_CT_COLUMN_CONSTRAINT 0x00000200L
+#define SQL_CT_COLUMN_DEFAULT 0x00000400L
+#define SQL_CT_COMMIT_DELETE 0x00000004L
+#define SQL_CT_COMMIT_PRESERVE 0x00000002L
+#define SQL_CT_CONSTRAINT_DEFERRABLE 0x00000080L
+#define SQL_CT_CONSTRAINT_INITIALLY_DEFERRED 0x00000020L
+#define SQL_CT_CONSTRAINT_INITIALLY_IMMEDIATE 0x00000040L
+#define SQL_CT_CONSTRAINT_NAME_DEFINITION 0x00002000L
+#define SQL_CT_CONSTRAINT_NON_DEFERRABLE 0x00000100L
+#define SQL_CT_CREATE_TABLE 0x00000001L
+#define SQL_CT_GLOBAL_TEMPORARY 0x00000008L
+#define SQL_CT_LOCAL_TEMPORARY 0x00000010L
+#define SQL_CT_TABLE_CONSTRAINT 0x00001000L
+#define SQL_CTR_CREATE_TRANSLATION 0x00000001L
+#define SQL_CU_DML_STATEMENTS SQL_QU_DML_STATEMENTS
+#define SQL_CU_INDEX_DEFINITION SQL_QU_INDEX_DEFINITION
+#define SQL_CU_PRIVILEGE_DEFINITION SQL_QU_PRIVILEGE_DEFINITION
+#define SQL_CU_PROCEDURE_INVOCATION SQL_QU_PROCEDURE_INVOCATION
+#define SQL_CU_TABLE_DEFINITION SQL_QU_TABLE_DEFINITION
+#define	SQL_CVT_GUID 0x1000000L
+#define SQL_CVT_INTERVAL_DAY_TIME 0x00100000L
+#define SQL_CVT_INTERVAL_YEAR_MONTH 0x00080000L
+#define SQL_CVT_WCHAR 0x00200000L
+#define SQL_CVT_WLONGVARCHAR 0x00400000L
+#define SQL_CVT_WVARCHAR 0x00800000L
+#define SQL_DA_DROP_ASSERTION 0x00000001L
+#define SQL_DATETIME_LITERALS 119
+#define SQL_DB_DEFAULT SQL_DB_RETURN_TO_POOL
+#define SQL_DB_DISCONNECT 1UL
+#define SQL_DB_RETURN_TO_POOL 0UL
+#define SQL_DC_DROP_COLLATION 0x00000001L
+#define SQL_DCS_DROP_CHARACTER_SET 0x00000001L
+#define SQL_DD_CASCADE 0x00000004L
+#define SQL_DD_DROP_DOMAIN 0x00000001L
+#define SQL_DD_RESTRICT 0x00000002L
+#define SQL_DDL_INDEX 170
+#define SQL_DELETE_BY_BOOKMARK 6
+#define SQL_DESC_ARRAY_SIZE 20
+#define SQL_DESC_ARRAY_STATUS_PTR 21
+#define SQL_DESC_AUTO_UNIQUE_VALUE SQL_COLUMN_AUTO_INCREMENT
+#define SQL_DESC_BASE_COLUMN_NAME 22
+#define SQL_DESC_BASE_TABLE_NAME 23
+#define SQL_DESC_BIND_OFFSET_PTR 24
+#define SQL_DESC_BIND_TYPE 25
+#define SQL_DESC_CASE_SENSITIVE SQL_COLUMN_CASE_SENSITIVE
+#define SQL_DESC_CATALOG_NAME SQL_COLUMN_QUALIFIER_NAME
+#define SQL_DESC_CONCISE_TYPE SQL_COLUMN_TYPE
+#define SQL_DESC_DATETIME_INTERVAL_PRECISION 26
+#define SQL_DESC_DISPLAY_SIZE SQL_COLUMN_DISPLAY_SIZE
+#define SQL_DESC_FIXED_PREC_SCALE SQL_COLUMN_MONEY
+#define SQL_DESC_LABEL SQL_COLUMN_LABEL
+#define SQL_DESC_LITERAL_PREFIX 27
+#define SQL_DESC_LITERAL_SUFFIX 28
+#define SQL_DESC_LOCAL_TYPE_NAME 29
+#define SQL_DESC_MAXIMUM_SCALE 30
+#define SQL_DESC_MINIMUM_SCALE 31
+#define SQL_DESC_NUM_PREC_RADIX 32
+#define SQL_DESC_PARAMETER_TYPE 33
+#define SQL_DESC_ROWS_PROCESSED_PTR 34
+#define SQL_DESC_SCHEMA_NAME SQL_COLUMN_OWNER_NAME
+#define SQL_DESC_SEARCHABLE SQL_COLUMN_SEARCHABLE
+#define SQL_DESC_TABLE_NAME SQL_COLUMN_TABLE_NAME
+#define SQL_DESC_TYPE_NAME SQL_COLUMN_TYPE_NAME
+#define SQL_DESC_UNSIGNED SQL_COLUMN_UNSIGNED
+#define SQL_DESC_UPDATABLE SQL_COLUMN_UPDATABLE
+#define SQL_DI_CREATE_INDEX 0x00000001L
+#define SQL_DI_DROP_INDEX 0x00000002L
+#define SQL_DIAG_COLUMN_NUMBER (-1247)
+#define SQL_DIAG_CURSOR_ROW_COUNT (-1249)
+#define SQL_DIAG_ROW_NUMBER (-1248)
+#define SQL_DL_SQL92_DATE 0x00000001L
+#define SQL_DL_SQL92_INTERVAL_DAY 0x00000020L
+#define SQL_DL_SQL92_INTERVAL_DAY_TO_HOUR 0x00000400L
+#define SQL_DL_SQL92_INTERVAL_DAY_TO_MINUTE 0x00000800L
+#define SQL_DL_SQL92_INTERVAL_DAY_TO_SECOND 0x00001000L
+#define SQL_DL_SQL92_INTERVAL_HOUR 0x00000040L
+#define SQL_DL_SQL92_INTERVAL_HOUR_TO_MINUTE 0x00002000L
+#define SQL_DL_SQL92_INTERVAL_HOUR_TO_SECOND 0x00004000L
+#define SQL_DL_SQL92_INTERVAL_MINUTE 0x00000080L
+#define SQL_DL_SQL92_INTERVAL_MINUTE_TO_SECOND 0x00008000L
+#define SQL_DL_SQL92_INTERVAL_MONTH 0x00000010L
+#define SQL_DL_SQL92_INTERVAL_SECOND 0x00000100L
+#define SQL_DL_SQL92_INTERVAL_YEAR 0x00000008L
+#define SQL_DL_SQL92_INTERVAL_YEAR_TO_MONTH 0x00000200L
+#define SQL_DL_SQL92_TIME 0x00000002L
+#define SQL_DL_SQL92_TIMESTAMP 0x00000004L
+#define SQL_DM_VER 171
+#define SQL_DRIVER_HDESC 135
+#define SQL_DROP_ASSERTION 136
+#define SQL_DROP_CHARACTER_SET 137
+#define SQL_DROP_COLLATION 138
+#define SQL_DROP_DOMAIN 139
+#define SQL_DROP_SCHEMA 140
+#define SQL_DROP_TABLE 141
+#define SQL_DROP_TRANSLATION 142
+#define SQL_DROP_VIEW 143
+#define SQL_DS_CASCADE 0x00000004L
+#define SQL_DS_DROP_SCHEMA 0x00000001L
+#define SQL_DS_RESTRICT 0x00000002L
+#define SQL_DT_CASCADE 0x00000004L
+#define SQL_DT_DROP_TABLE 0x00000001L
+#define SQL_DT_RESTRICT 0x00000002L
+#define SQL_DTC_DONE 0L
+#define SQL_DTR_DROP_TRANSLATION 0x00000001L
+#define SQL_DV_CASCADE 0x00000004L
+#define SQL_DV_DROP_VIEW 0x00000001L
+#define SQL_DV_RESTRICT 0x00000002L
+#define SQL_DYNAMIC_CURSOR_ATTRIBUTES1 144
+#define SQL_DYNAMIC_CURSOR_ATTRIBUTES2 145
+#define SQL_EXT_API_LAST SQL_API_SQLBINDPARAMETER
+#define SQL_EXT_API_START 40
+#define SQL_FETCH_BY_BOOKMARK 7
+#define SQL_FETCH_FIRST_SYSTEM 32
+#define SQL_FETCH_FIRST_USER 31
+#define SQL_FN_CVT_CAST 0x00000002L
+#define SQL_FN_STR_BIT_LENGTH 0x00080000L
+#define SQL_FN_STR_CHAR_LENGTH 0x00100000L
+#define SQL_FN_STR_CHARACTER_LENGTH 0x00200000L
+#define SQL_FN_STR_OCTET_LENGTH 0x00400000L
+#define SQL_FN_STR_POSITION 0x00800000L
+#define SQL_FN_TD_CURRENT_DATE 0x00020000L
+#define SQL_FN_TD_CURRENT_TIME 0x00040000L
+#define SQL_FN_TD_CURRENT_TIMESTAMP 0x00080000L
+#define SQL_FN_TD_EXTRACT 0x00100000L
+#define SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES1 146
+#define SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES2 147
+#define SQL_FUNC_EXISTS(exists, api) \
+   ((*(((UWORD*) (exists)) + ((api) >> 4)) & (1 << ((api) & 15)) ) ? \
+   SQL_TRUE : SQL_FALSE )
+#define SQL_GB_COLLATE 0x0004
+#define SQL_HANDLE_SENV 5
+#define SQL_IK_ALL (SQL_IK_ASC | SQL_IK_DESC)
+#define SQL_IK_ASC 1
+#define SQL_IK_DESC 2
+#define SQL_IK_NONE 0
+#define SQL_INDEX_KEYWORDS 148
+#define SQL_INFO_DRIVER_START 1000
+#define SQL_INFO_LAST SQL_QUALIFIER_LOCATION
+#define SQL_INFO_SCHEMA_VIEWS 149
+#define SQL_INITIALLY_DEFERRED 5
+#define SQL_INITIALLY_IMMEDIATE 6
+#define SQL_INSERT_STATEMENT 172
+#define SQL_INTERVAL 10
+#define SQL_IS_INSERT_LITERALS 0x00000001L
+#define SQL_IS_INSERT_SEARCHED 0x00000002L
+#define SQL_IS_INTEGER (-6)
+#define SQL_IS_POINTER (-4)
+#define SQL_IS_SELECT_INTO 0x00000004L
+#define SQL_IS_SMALLINT (-8)
+#define SQL_IS_UINTEGER (-5)
+#define SQL_IS_USMALLINT (-7)
+#define SQL_ISV_ASSERTIONS 0x00000001L
+#define SQL_ISV_CHARACTER_SETS 0x00000002L
+#define SQL_ISV_CHECK_CONSTRAINTS 0x00000004L
+#define SQL_ISV_COLLATIONS 0x00000008L
+#define SQL_ISV_COLUMN_DOMAIN_USAGE 0x00000010L
+#define SQL_ISV_COLUMN_PRIVILEGES 0x00000020L
+#define SQL_ISV_COLUMNS 0x00000040L
+#define SQL_ISV_CONSTRAINT_COLUMN_USAGE 0x00000080L
+#define SQL_ISV_CONSTRAINT_TABLE_USAGE 0x00000100L
+#define SQL_ISV_DOMAIN_CONSTRAINTS 0x00000200L
+#define SQL_ISV_DOMAINS 0x00000400L
+#define SQL_ISV_KEY_COLUMN_USAGE 0x00000800L
+#define SQL_ISV_REFERENTIAL_CONSTRAINTS 0x00001000L
+#define SQL_ISV_SCHEMATA 0x00002000L
+#define SQL_ISV_SQL_LANGUAGES 0x00004000L
+#define SQL_ISV_TABLE_CONSTRAINTS 0x00008000L
+#define SQL_ISV_TABLE_PRIVILEGES 0x00010000L
+#define SQL_ISV_TABLES 0x00020000L
+#define SQL_ISV_TRANSLATIONS 0x00040000L
+#define SQL_ISV_USAGE_PRIVILEGES 0x00080000L
+#define SQL_ISV_VIEW_COLUMN_USAGE 0x00100000L
+#define SQL_ISV_VIEW_TABLE_USAGE 0x00200000L
+#define SQL_ISV_VIEWS 0x00400000L
+#define SQL_KEYSET_CURSOR_ATTRIBUTES1 150
+#define SQL_KEYSET_CURSOR_ATTRIBUTES2 151
+#define SQL_MAX_ASYNC_CONCURRENT_STATEMENTS 10022
+#define SQL_NO_COLUMN_NUMBER (-1)
+#define SQL_NO_ROW_NUMBER (-1)
+#define SQL_NOT_DEFERRABLE 7
+#define SQL_NUM_EXTENSIONS (SQL_EXT_API_LAST-SQL_EXT_API_START+1)
+#define SQL_NUM_FUNCTIONS 23
+#define SQL_ODBC_INTERFACE_CONFORMANCE 152
+#define SQL_OIC_CORE 1UL
+#define SQL_OIC_LEVEL1 2UL
+#define SQL_OIC_LEVEL2 3UL
+#define SQL_OV_ODBC2 2UL
+#define SQL_OV_ODBC3 3UL
+#define SQL_PARAM_ARRAY_ROW_COUNTS 153
+#define SQL_PARAM_ARRAY_SELECTS 154
+#define SQL_PARAM_BIND_BY_COLUMN 0UL
+#define SQL_PARAM_BIND_TYPE_DEFAULT SQL_PARAM_BIND_BY_COLUMN
+#define SQL_PARAM_DIAG_UNAVAILABLE 1
+#define SQL_PARAM_ERROR 5
+#define SQL_PARAM_IGNORE 1
+#define SQL_PARAM_PROCEED 0
+#define SQL_PARAM_SUCCESS 0
+#define SQL_PARAM_SUCCESS_WITH_INFO 6
+#define SQL_PARAM_UNUSED 7
+#define SQL_PARC_BATCH 1
+#define SQL_PARC_NO_BATCH 2
+#define SQL_PAS_BATCH 1
+#define SQL_PAS_NO_BATCH 2
+#define SQL_PAS_NO_SELECT 3
+#define SQL_ROW_IGNORE 1
+#define SQL_ROW_NUMBER_UNKNOWN (-2)
+#define SQL_ROW_PROCEED 0
+#define SQL_ROW_SUCCESS_WITH_INFO 6
+#define SQL_SC_FIPS127_2_TRANSITIONAL 0x00000002L
+#define SQL_SC_SQL92_ENTRY 0x00000001L
+#define SQL_SC_SQL92_FULL 0x00000008L
+#define SQL_SC_SQL92_INTERMEDIATE 0x00000004L
+#define SQL_SCC_ISO92_CLI 0x00000002L
+#define SQL_SCC_XOPEN_CLI_VERSION1 0x00000001L
+#define SQL_SCHEMA_TERM SQL_OWNER_TERM
+#define SQL_SCHEMA_USAGE SQL_OWNER_USAGE
+#define SQL_SDF_CURRENT_DATE 0x00000001L
+#define SQL_SDF_CURRENT_TIME 0x00000002L
+#define SQL_SDF_CURRENT_TIMESTAMP 0x00000004L
+#define SQL_SFKD_CASCADE 0x00000001L
+#define SQL_SFKD_NO_ACTION 0x00000002L
+#define SQL_SFKD_SET_DEFAULT 0x00000004L
+#define SQL_SFKD_SET_NULL 0x00000008L
+#define SQL_SFKU_CASCADE 0x00000001L
+#define SQL_SFKU_NO_ACTION 0x00000002L
+#define SQL_SFKU_SET_DEFAULT 0x00000004L
+#define SQL_SFKU_SET_NULL 0x00000008L
+#define SQL_SG_DELETE_TABLE 0x00000020L
+#define SQL_SG_INSERT_COLUMN 0x00000080L
+#define SQL_SG_INSERT_TABLE 0x00000040L
+#define SQL_SG_REFERENCES_COLUMN 0x00000200L
+#define SQL_SG_REFERENCES_TABLE 0x00000100L
+#define SQL_SG_SELECT_TABLE 0x00000400L
+#define SQL_SG_UPDATE_COLUMN 0x00001000L
+#define SQL_SG_UPDATE_TABLE 0x00000800L
+#define SQL_SG_USAGE_ON_CHARACTER_SET 0x00000002L
+#define SQL_SG_USAGE_ON_COLLATION 0x00000004L
+#define SQL_SG_USAGE_ON_DOMAIN 0x00000001L
+#define SQL_SG_USAGE_ON_TRANSLATION 0x00000008L
+#define SQL_SG_WITH_GRANT_OPTION 0x00000010L
+#define SQL_SNVF_BIT_LENGTH 0x00000001L
+#define SQL_SNVF_CHAR_LENGTH 0x00000002L
+#define SQL_SNVF_CHARACTER_LENGTH 0x00000004L
+#define SQL_SNVF_EXTRACT 0x00000008L
+#define SQL_SNVF_OCTET_LENGTH 0x00000010L
+#define SQL_SNVF_POSITION 0x00000020L
+#define SQL_SP_BETWEEN 0x00000800L
+#define SQL_SP_COMPARISON 0x00001000L
+#define SQL_SP_EXISTS 0x00000001L
+#define SQL_SP_IN 0x00000400L
+#define SQL_SP_ISNOTNULL 0x00000002L
+#define SQL_SP_ISNULL 0x00000004L
+#define SQL_SP_LIKE 0x00000200L
+#define SQL_SP_MATCH_FULL 0x00000008L
+#define SQL_SP_MATCH_PARTIAL 0x00000010L
+#define SQL_SP_MATCH_UNIQUE_FULL 0x00000020L
+#define SQL_SP_MATCH_UNIQUE_PARTIAL 0x00000040L
+#define SQL_SP_OVERLAPS 0x00000080L
+#define SQL_SP_QUANTIFIED_COMPARISON 0x00002000L
+#define SQL_SP_UNIQUE 0x00000100L
+#define SQL_SQL_CONFORMANCE 118
+#define SQL_SQL92_DATETIME_FUNCTIONS 155
+#define SQL_SQL92_FOREIGN_KEY_DELETE_RULE 156
+#define SQL_SQL92_FOREIGN_KEY_UPDATE_RULE 157
+#define SQL_SQL92_GRANT 158
+#define SQL_SQL92_NUMERIC_VALUE_FUNCTIONS 159
+#define SQL_SQL92_PREDICATES 160
+#define SQL_SQL92_RELATIONAL_JOIN_OPERATORS 161
+#define SQL_SQL92_REVOKE 162
+#define SQL_SQL92_ROW_VALUE_CONSTRUCTOR 163
+#define SQL_SQL92_STRING_FUNCTIONS 164
+#define SQL_SQL92_VALUE_EXPRESSIONS 165
+#define SQL_SR_CASCADE 0x00000020L
+#define SQL_SR_DELETE_TABLE 0x00000080L
+#define SQL_SR_GRANT_OPTION_FOR 0x00000010L
+#define SQL_SR_INSERT_COLUMN 0x00000200L
+#define SQL_SR_INSERT_TABLE 0x00000100L
+#define SQL_SR_REFERENCES_COLUMN 0x00000800L
+#define SQL_SR_REFERENCES_TABLE 0x00000400L
+#define SQL_SR_RESTRICT 0x00000040L
+#define SQL_SR_SELECT_TABLE 0x00001000L
+#define SQL_SR_UPDATE_COLUMN 0x00004000L
+#define SQL_SR_UPDATE_TABLE 0x00002000L
+#define SQL_SR_USAGE_ON_CHARACTER_SET 0x00000002L
+#define SQL_SR_USAGE_ON_COLLATION 0x00000004L
+#define SQL_SR_USAGE_ON_DOMAIN 0x00000001L
+#define SQL_SR_USAGE_ON_TRANSLATION 0x00000008L
+#define SQL_SRJO_CORRESPONDING_CLAUSE 0x00000001L
+#define SQL_SRJO_CROSS_JOIN 0x00000002L
+#define SQL_SRJO_EXCEPT_JOIN 0x00000004L
+#define SQL_SRJO_FULL_OUTER_JOIN 0x00000008L
+#define SQL_SRJO_INNER_JOIN 0x00000010L
+#define SQL_SRJO_INTERSECT_JOIN 0x00000020L
+#define SQL_SRJO_LEFT_OUTER_JOIN 0x00000040L
+#define SQL_SRJO_NATURAL_JOIN 0x00000080L
+#define SQL_SRJO_RIGHT_OUTER_JOIN 0x00000100L
+#define SQL_SRJO_UNION_JOIN 0x00000200L
+#define SQL_SRVC_DEFAULT 0x00000004L
+#define SQL_SRVC_NULL 0x00000002L
+#define SQL_SRVC_ROW_SUBQUERY 0x00000008L
+#define SQL_SRVC_VALUE_EXPRESSION 0x00000001L
+#define SQL_SSF_CONVERT 0x00000001L
+#define SQL_SSF_LOWER 0x00000002L
+#define SQL_SSF_SUBSTRING 0x00000008L
+#define SQL_SSF_TRANSLATE 0x00000010L
+#define SQL_SSF_TRIM_BOTH 0x00000020L
+#define SQL_SSF_TRIM_LEADING 0x00000040L
+#define SQL_SSF_TRIM_TRAILING 0x00000080L
+#define SQL_SSF_UPPER 0x00000004L
+#define SQL_STANDARD_CLI_CONFORMANCE 166
+#define SQL_STATIC_CURSOR_ATTRIBUTES1 167
+#define SQL_STATIC_CURSOR_ATTRIBUTES2 168
+#define SQL_SU_DML_STATEMENTS SQL_OU_DML_STATEMENTS
+#define SQL_SU_INDEX_DEFINITION SQL_OU_INDEX_DEFINITION
+#define SQL_SU_PRIVILEGE_DEFINITION SQL_OU_PRIVILEGE_DEFINITION
+#define SQL_SU_PROCEDURE_INVOCATION SQL_OU_PROCEDURE_INVOCATION
+#define SQL_SU_TABLE_DEFINITION SQL_OU_TABLE_DEFINITION
+#define SQL_SVE_CASE 0x00000001L
+#define SQL_SVE_CAST 0x00000002L
+#define SQL_SVE_COALESCE 0x00000004L
+#define SQL_SVE_NULLIF 0x00000008L
+#define SQL_UB_FIXED SQL_UB_ON
+#define SQL_UB_VARIABLE 2UL
+#define SQL_UNION_STATEMENT SQL_UNION
+#define SQL_UPDATE_BY_BOOKMARK 5
+#define SQL_US_UNION SQL_U_UNION
+#define SQL_US_UNION_ALL SQL_U_UNION_ALL
+#endif /* ODBCVER >= 0x300 */
+#if (ODBCVER >= 0x0350)
+#define SQL_DESC_ROWVER 35
+#define SQL_GUID (-11)
+#define SQL_C_GUID SQL_GUID
+#ifdef ODBC_STD
+#define SQLAllocHandle SQLAllocHandleStd
+#define SQLAllocEnv(p) SQLAllocHandleStd(SQL_HANDLE_ENV,SQL_NULL_HANDLE,p)
+#define SQL_YEAR SQL_CODE_YEAR
+#define SQL_MONTH SQL_CODE_MONTH
+#define SQL_DAY SQL_CODE_DAY
+#define SQL_HOUR SQL_CODE_HOUR
+#define SQL_MINUTE SQL_CODE_MINUTE
+#define SQL_SECOND SQL_CODE_SECOND
+#define SQL_YEAR_TO_MONTH SQL_CODE_YEAR_TO_MONTH
+#define SQL_DAY_TO_HOUR SQL_CODE_DAY_TO_HOUR
+#define SQL_DAY_TO_MINUTE SQL_CODE_DAY_TO_MINUTE
+#define SQL_DAY_TO_SECOND SQL_CODE_DAY_TO_SECOND
+#define SQL_HOUR_TO_MINUTE SQL_CODE_HOUR_TO_MINUTE
+#define SQL_HOUR_TO_SECOND SQL_CODE_HOUR_TO_SECOND
+#define SQL_MINUTE_TO_SECOND SQL_CODE_MINUTE_TO_SECOND
+#endif /* ODBC_STD */
+#endif /* ODBCVER >= 0x0350 */
+#if (ODBCVER >= 0x0351)
+#define SQL_ATTR_ANSI_APP 115
+#define SQL_AA_TRUE 1L
+#define SQL_AA_FALSE 0L
+#endif
+
+#define	TRACE_VERSION 1000
+#define TRACE_ON 1
+
+#ifndef RC_INVOKED
+#define SQL_ODBC_KEYWORDS \
+"ABSOLUTE,ACTION,ADA,ADD,ALL,ALLOCATE,ALTER,AND,ANY,ARE,AS,"\
+"ASC,ASSERTION,AT,AUTHORIZATION,AVG,"\
+"BEGIN,BETWEEN,BIT,BIT_LENGTH,BOTH,BY,CASCADE,CASCADED,CASE,CAST,CATALOG,"\
+"CHAR,CHAR_LENGTH,CHARACTER,CHARACTER_LENGTH,CHECK,CLOSE,COALESCE,"\
+"COLLATE,COLLATION,COLUMN,COMMIT,CONNECT,CONNECTION,CONSTRAINT,"\
+"CONSTRAINTS,CONTINUE,CONVERT,CORRESPONDING,COUNT,CREATE,CROSS,CURRENT,"\
+"CURRENT_DATE,CURRENT_TIME,CURRENT_TIMESTAMP,CURRENT_USER,CURSOR,"\
+"DATE,DAY,DEALLOCATE,DEC,DECIMAL,DECLARE,DEFAULT,DEFERRABLE,"\
+"DEFERRED,DELETE,DESC,DESCRIBE,DESCRIPTOR,DIAGNOSTICS,DISCONNECT,"\
+"DISTINCT,DOMAIN,DOUBLE,DROP,"\
+"ELSE,END,END-EXEC,ESCAPE,EXCEPT,EXCEPTION,EXEC,EXECUTE,"\
+"EXISTS,EXTERNAL,EXTRACT,"\
+"FALSE,FETCH,FIRST,FLOAT,FOR,FOREIGN,FORTRAN,FOUND,FROM,FULL,"\
+"GET,GLOBAL,GO,GOTO,GRANT,GROUP,HAVING,HOUR,"\
+"IDENTITY,IMMEDIATE,IN,INCLUDE,INDEX,INDICATOR,INITIALLY,INNER,"\
+"INPUT,INSENSITIVE,INSERT,INT,INTEGER,INTERSECT,INTERVAL,INTO,IS,ISOLATION,"\
+"JOIN,KEY,LANGUAGE,LAST,LEADING,LEFT,LEVEL,LIKE,LOCAL,LOWER,"\
+"MATCH,MAX,MIN,MINUTE,MODULE,MONTH,"\
+"NAMES,NATIONAL,NATURAL,NCHAR,NEXT,NO,NONE,NOT,NULL,NULLIF,NUMERIC,"\
+"OCTET_LENGTH,OF,ON,ONLY,OPEN,OPTION,OR,ORDER,OUTER,OUTPUT,OVERLAPS,"\
+"PAD,PARTIAL,PASCAL,PLI,POSITION,PRECISION,PREPARE,PRESERVE,"\
+"PRIMARY,PRIOR,PRIVILEGES,PROCEDURE,PUBLIC,"\
+"READ,REAL,REFERENCES,RELATIVE,RESTRICT,REVOKE,RIGHT,ROLLBACK,ROWS"\
+"SCHEMA,SCROLL,SECOND,SECTION,SELECT,SESSION,SESSION_USER,SET,SIZE,"\
+"SMALLINT,SOME,SPACE,SQL,SQLCA,SQLCODE,SQLERROR,SQLSTATE,SQLWARNING,"\
+"SUBSTRING,SUM,SYSTEM_USER,"\
+"TABLE,TEMPORARY,THEN,TIME,TIMESTAMP,TIMEZONE_HOUR,TIMEZONE_MINUTE,"\
+"TO,TRAILING,TRANSACTION,TRANSLATE,TRANSLATION,TRIM,TRUE,"\
+"UNION,UNIQUE,UNKNOWN,UPDATE,UPPER,USAGE,USER,USING,"\
+"VALUE,VALUES,VARCHAR,VARYING,VIEW,WHEN,WHENEVER,WHERE,WITH,WORK,WRITE,"\
+"YEAR,ZONE"
+
+SQLRETURN SQL_API SQLDriverConnect(SQLHDBC,SQLHWND,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLSMALLINT*,SQLUSMALLINT);
+SQLRETURN SQL_API SQLBrowseConnect(SQLHDBC,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLSMALLINT*);
+SQLRETURN SQL_API SQLColumnPrivileges(SQLHSTMT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT);
+SQLRETURN SQL_API SQLColAttributes(SQLHSTMT,SQLUSMALLINT, SQLUSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*, SQLLEN*);
+SQLRETURN SQL_API SQLDescribeParam(SQLHSTMT,SQLUSMALLINT,SQLSMALLINT*,SQLULEN*,SQLSMALLINT*,SQLSMALLINT*);
+SQLRETURN SQL_API SQLExtendedFetch(SQLHSTMT,SQLUSMALLINT,SQLINTEGER,SQLUINTEGER*,SQLUSMALLINT*);
+SQLRETURN SQL_API SQLForeignKeys(SQLHSTMT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT);
+SQLRETURN SQL_API SQLMoreResults(SQLHSTMT);
+SQLRETURN SQL_API SQLNativeSql(SQLHDBC,SQLCHAR*,SQLINTEGER,SQLCHAR*,SQLINTEGER,SQLINTEGER*);
+SQLRETURN SQL_API SQLNumParams(SQLHSTMT,SQLSMALLINT*);
+SQLRETURN SQL_API SQLParamOptions(SQLHSTMT,SQLUINTEGER,SQLUINTEGER*);
+SQLRETURN SQL_API SQLPrimaryKeys(SQLHSTMT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT);
+SQLRETURN SQL_API SQLProcedureColumns(SQLHSTMT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT);
+SQLRETURN SQL_API SQLProcedures(SQLHSTMT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT);
+SQLRETURN SQL_API SQLSetPos(SQLHSTMT,SQLUSMALLINT,SQLUSMALLINT,SQLUSMALLINT);
+SQLRETURN SQL_API SQLTablePrivileges(SQLHSTMT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT);
+SQLRETURN SQL_API SQLDrivers(SQLHENV,SQLUSMALLINT,SQLCHAR*,SQLSMALLINT,SQLSMALLINT*,SQLCHAR*,SQLSMALLINT,SQLSMALLINT*);
+SQLRETURN SQL_API SQLBindParameter(SQLHSTMT,SQLUSMALLINT,SQLSMALLINT,SQLSMALLINT,SQLSMALLINT,SQLULEN,SQLSMALLINT,SQLPOINTER,SQLLEN,SQLLEN*);
+SQLRETURN SQL_API SQLSetScrollOptions(SQLHSTMT,SQLUSMALLINT,SQLLEN,SQLUSMALLINT); /* deprecated */
+DWORD SQL_API ODBCGetTryWaitValue(void);
+BOOL SQL_API ODBCSetTryWaitValue(DWORD);
+RETCODE	SQL_API TraceOpenLogFile(LPWSTR,LPWSTR,DWORD);
+RETCODE	SQL_API TraceCloseLogFile(void);
+VOID SQL_API TraceReturn(RETCODE,RETCODE);
+DWORD SQL_API TraceVersion(void);
+#if (ODBCVER >= 0x0300)
+SQLRETURN SQL_API SQLBulkOperations(SQLHSTMT,SQLSMALLINT);
+SQLRETURN SQL_API SQLAllocHandleStd( SQLSMALLINT,SQLHANDLE,SQLHANDLE*);
+#endif
+#endif /* ndef RC_INVOKED */
+#include <sqlucode.h>
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/sqltypes.h
===================================================================
--- Daodan/MinGW/include/sqltypes.h	(revision 1046)
+++ Daodan/MinGW/include/sqltypes.h	(revision 1046)
@@ -0,0 +1,165 @@
+#ifndef _SQLTYPES_H
+#define _SQLTYPES_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define SQL_API __stdcall
+#ifndef RC_INVOKED
+#define __need_wchar_t
+#include <stddef.h>
+typedef signed char SCHAR;
+typedef long SDWORD;
+typedef short SWORD;
+typedef ULONG UDWORD;
+typedef USHORT UWORD;
+typedef signed long SLONG;
+typedef signed short SSHORT;
+typedef double SDOUBLE;
+typedef double LDOUBLE;
+typedef float SFLOAT;
+typedef PVOID PTR;
+typedef PVOID HENV;
+typedef PVOID HDBC;
+typedef PVOID HSTMT;
+typedef short RETCODE;
+typedef UCHAR SQLCHAR;
+typedef SCHAR SQLSCHAR;
+typedef SDWORD SQLINTEGER;
+typedef SWORD SQLSMALLINT;
+#ifndef __WIN64
+typedef UDWORD SQLUINTEGER;
+#endif
+typedef UWORD SQLUSMALLINT;
+typedef PVOID SQLPOINTER;
+#if (ODBCVER >= 0x0300)
+typedef void* SQLHANDLE;
+typedef SQLHANDLE SQLHENV;
+typedef SQLHANDLE SQLHDBC;
+typedef SQLHANDLE SQLHSTMT;
+typedef SQLHANDLE SQLHDESC;
+#else
+typedef void* SQLHENV;
+typedef void* SQLHDBC;
+typedef void* SQLHSTMT;
+#endif
+typedef SQLSMALLINT SQLRETURN;
+typedef HWND SQLHWND;
+typedef ULONG BOOKMARK;
+#ifdef _WIN64
+typedef INT64 SQLLEN;
+typedef INT64 SQLROWOFFSET;
+typedef UINT64 SQLROWCOUNT;
+typedef UINT64 SQLULEN;
+typedef UINT64 SQLTRANSID;
+typedef unsigned long SQLSETPOSIROW;
+#else
+#define SQLLEN SQLINTEGER
+#define SQLROWOFFSET SQLINTEGER
+#define SQLROWCOUNT SQLUINTEGER
+#define SQLULEN SQLUINTEGER
+#define SQLTRANSID DWORD
+#define SQLSETPOSIROW SQLUSMALLINT
+#endif
+typedef wchar_t SQLWCHAR;
+#ifdef UNICODE
+typedef SQLWCHAR        SQLTCHAR;
+#else
+typedef SQLCHAR         SQLTCHAR;
+#endif  /* UNICODE */
+#if (ODBCVER >= 0x0300)
+typedef unsigned char   SQLDATE;
+typedef unsigned char   SQLDECIMAL;
+typedef double          SQLDOUBLE;
+typedef double          SQLFLOAT;
+typedef unsigned char   SQLNUMERIC;
+typedef float           SQLREAL;
+typedef unsigned char   SQLTIME;
+typedef unsigned char   SQLTIMESTAMP;
+typedef unsigned char   SQLVARCHAR;
+#define ODBCINT64	__int64
+typedef __int64 SQLBIGINT;
+typedef unsigned __int64 SQLUBIGINT;
+#endif
+
+typedef struct tagDATE_STRUCT {
+	SQLSMALLINT year;
+	SQLUSMALLINT month;
+	SQLUSMALLINT day;
+} DATE_STRUCT;
+typedef struct tagTIME_STRUCT {
+	SQLUSMALLINT hour;
+	SQLUSMALLINT minute;
+	SQLUSMALLINT second;
+} TIME_STRUCT;
+typedef struct tagTIMESTAMP_STRUCT {
+	SQLSMALLINT year;
+	SQLUSMALLINT month;
+	SQLUSMALLINT day;
+	SQLUSMALLINT hour;
+	SQLUSMALLINT minute;
+	SQLUSMALLINT second;
+	SQLUINTEGER fraction;
+} TIMESTAMP_STRUCT;
+#if (ODBCVER >= 0x0300)
+typedef DATE_STRUCT	SQL_DATE_STRUCT;
+typedef TIME_STRUCT	SQL_TIME_STRUCT;
+typedef TIMESTAMP_STRUCT SQL_TIMESTAMP_STRUCT;
+typedef enum {
+	SQL_IS_YEAR = 1,SQL_IS_MONTH,SQL_IS_DAY,SQL_IS_HOUR,
+	SQL_IS_MINUTE,SQL_IS_SECOND,SQL_IS_YEAR_TO_MONTH,SQL_IS_DAY_TO_HOUR,
+	SQL_IS_DAY_TO_MINUTE,SQL_IS_DAY_TO_SECOND,SQL_IS_HOUR_TO_MINUTE,
+	SQL_IS_HOUR_TO_SECOND,SQL_IS_MINUTE_TO_SECOND
+} SQLINTERVAL;
+typedef struct tagSQL_YEAR_MONTH {
+	SQLUINTEGER year;
+	SQLUINTEGER month;
+} SQL_YEAR_MONTH_STRUCT;
+typedef struct tagSQL_DAY_SECOND {
+	SQLUINTEGER day;
+	SQLUINTEGER	hour;
+	SQLUINTEGER minute;
+	SQLUINTEGER second;
+	SQLUINTEGER fraction;
+} SQL_DAY_SECOND_STRUCT;
+typedef struct tagSQL_INTERVAL_STRUCT {
+	SQLINTERVAL interval_type;
+	SQLSMALLINT interval_sign;
+	union {
+		SQL_YEAR_MONTH_STRUCT year_month;
+		SQL_DAY_SECOND_STRUCT day_second;
+	} intval;
+} SQL_INTERVAL_STRUCT;
+#define SQL_MAX_NUMERIC_LEN 16
+typedef struct tagSQL_NUMERIC_STRUCT {
+	SQLCHAR precision;
+	SQLSCHAR scale;
+	SQLCHAR sign;
+	SQLCHAR val[SQL_MAX_NUMERIC_LEN];
+} SQL_NUMERIC_STRUCT;
+#endif  /* ODBCVER >= 0x0300 */
+#if (ODBCVER >= 0x0350)
+
+#ifdef _GUID_DEFINED
+# warning _GUID_DEFINED is deprecated, use GUID_DEFINED instead
+#endif
+
+#if defined _GUID_DEFINED || defined GUID_DEFINED
+typedef GUID SQLGUID;
+#else
+typedef struct tagSQLGUID{
+    DWORD Data1;
+    WORD Data2;
+    WORD Data3;
+    BYTE Data4[ 8 ];
+} SQLGUID;
+#endif  /* GUID_DEFINED */
+#endif  /* ODBCVER >= 0x0350 */
+#endif     /* RC_INVOKED */
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/sqlucode.h
===================================================================
--- Daodan/MinGW/include/sqlucode.h	(revision 1046)
+++ Daodan/MinGW/include/sqlucode.h	(revision 1046)
@@ -0,0 +1,142 @@
+#ifndef _SQLUCODE_H
+#define _SQLUCODE_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#include <sqlext.h>
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define SQL_WCHAR (-8)
+#define SQL_WVARCHAR (-9)
+#define SQL_WLONGVARCHAR (-10)
+#define SQL_C_WCHAR SQL_WCHAR
+#define SQL_SQLSTATE_SIZEW	10
+#ifdef UNICODE
+#define SQL_C_TCHAR SQL_C_WCHAR
+#else
+#define SQL_C_TCHAR SQL_C_CHAR
+#endif
+#ifndef RC_INVOKED
+SQLRETURN SQL_API SQLBrowseConnectA(SQLHDBC,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLSMALLINT*);
+SQLRETURN SQL_API SQLBrowseConnectW(SQLHDBC,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLSMALLINT*);
+SQLRETURN SQL_API SQLColAttributeA(SQLHSTMT,SQLSMALLINT,SQLSMALLINT,SQLPOINTER,SQLSMALLINT,SQLSMALLINT*,SQLPOINTER);
+SQLRETURN SQL_API SQLColAttributeW(SQLHSTMT,SQLUSMALLINT,SQLUSMALLINT,SQLPOINTER,SQLSMALLINT,SQLSMALLINT*,SQLPOINTER);
+SQLRETURN SQL_API SQLColAttributesA(SQLHSTMT,SQLUSMALLINT,SQLUSMALLINT,SQLPOINTER,SQLSMALLINT,SQLSMALLINT*,SQLLEN*);
+SQLRETURN SQL_API SQLColAttributesW(SQLHSTMT,SQLUSMALLINT,SQLUSMALLINT,SQLPOINTER,SQLSMALLINT,SQLSMALLINT*,SQLLEN*);
+SQLRETURN SQL_API SQLColumnPrivilegesA( SQLHSTMT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT ,SQLCHAR*,SQLSMALLINT );
+SQLRETURN SQL_API SQLColumnPrivilegesW( SQLHSTMT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT );
+SQLRETURN SQL_API SQLColumnsA(SQLHSTMT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT ,SQLCHAR*,SQLSMALLINT );
+SQLRETURN SQL_API SQLColumnsW(SQLHSTMT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT ,SQLWCHAR*,SQLSMALLINT );
+SQLRETURN SQL_API SQLConnectA(SQLHDBC,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT);
+SQLRETURN SQL_API SQLConnectW(SQLHDBC,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT);
+SQLRETURN SQL_API SQLDataSourcesA(SQLHENV,SQLUSMALLINT,SQLCHAR*,SQLSMALLINT,SQLSMALLINT*,SQLCHAR*,SQLSMALLINT,SQLSMALLINT*);
+SQLRETURN SQL_API SQLDataSourcesW(SQLHENV,SQLUSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLSMALLINT*,SQLWCHAR*,SQLSMALLINT,SQLSMALLINT*);
+SQLRETURN SQL_API SQLDescribeColA(SQLHSTMT,SQLUSMALLINT,SQLCHAR*,SQLSMALLINT,SQLSMALLINT*,SQLSMALLINT*,SQLULEN*,SQLSMALLINT*,SQLSMALLINT*);
+SQLRETURN SQL_API SQLDescribeColW(SQLHSTMT,SQLUSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLSMALLINT*,SQLSMALLINT*,SQLULEN*,SQLSMALLINT*,SQLSMALLINT*);
+SQLRETURN SQL_API SQLDriverConnectA(SQLHDBC,SQLHWND,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLSMALLINT*,SQLUSMALLINT);
+SQLRETURN SQL_API SQLDriverConnectW(SQLHDBC,SQLHWND,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLSMALLINT*,SQLUSMALLINT);
+SQLRETURN SQL_API SQLDriversA(SQLHENV,SQLUSMALLINT,SQLCHAR*,SQLSMALLINT,SQLSMALLINT*,SQLCHAR*,SQLSMALLINT,SQLSMALLINT*);
+SQLRETURN SQL_API SQLDriversW(SQLHENV,SQLUSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLSMALLINT*,SQLWCHAR*,SQLSMALLINT,SQLSMALLINT*);
+SQLRETURN SQL_API SQLErrorA(SQLHENV,SQLHDBC,SQLHSTMT,SQLCHAR*,SQLINTEGER*,SQLCHAR*,SQLSMALLINT,SQLSMALLINT*);
+SQLRETURN SQL_API SQLErrorW(SQLHENV,SQLHDBC,SQLHSTMT,SQLWCHAR*,SQLINTEGER*,SQLWCHAR*,SQLSMALLINT,SQLSMALLINT*);
+SQLRETURN SQL_API SQLExecDirectA(SQLHSTMT,SQLCHAR*,SQLINTEGER);
+SQLRETURN SQL_API SQLExecDirectW(SQLHSTMT,SQLWCHAR*,SQLINTEGER);
+SQLRETURN SQL_API SQLForeignKeysA(SQLHSTMT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT);
+SQLRETURN SQL_API SQLForeignKeysW(SQLHSTMT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT);
+SQLRETURN SQL_API SQLGetConnectAttrA(SQLHDBC,SQLINTEGER,SQLPOINTER,SQLINTEGER,SQLINTEGER*);
+SQLRETURN SQL_API SQLGetConnectAttrW(SQLHDBC,SQLINTEGER,SQLPOINTER,SQLINTEGER,SQLINTEGER*);
+SQLRETURN SQL_API SQLGetConnectOptionA(SQLHDBC,SQLUSMALLINT,SQLPOINTER);
+SQLRETURN SQL_API SQLGetConnectOptionW(SQLHDBC,SQLUSMALLINT,SQLPOINTER);
+SQLRETURN SQL_API SQLGetCursorNameA(SQLHSTMT,SQLCHAR*,SQLSMALLINT,SQLSMALLINT*);
+SQLRETURN SQL_API SQLGetCursorNameW(SQLHSTMT,SQLWCHAR*,SQLSMALLINT,SQLSMALLINT*);
+SQLRETURN SQL_API SQLGetInfoA(SQLHDBC,SQLUSMALLINT,SQLPOINTER,SQLSMALLINT,SQLSMALLINT*);
+SQLRETURN SQL_API SQLGetInfoW(SQLHDBC,SQLUSMALLINT,SQLPOINTER,SQLSMALLINT,SQLSMALLINT*);
+SQLRETURN SQL_API SQLGetTypeInfoA(SQLHSTMT,SQLSMALLINT);
+SQLRETURN SQL_API SQLGetTypeInfoW(SQLHSTMT,SQLSMALLINT);
+SQLRETURN SQL_API SQLNativeSqlA(SQLHDBC,SQLCHAR*,SQLINTEGER,SQLCHAR*,SQLINTEGER,SQLINTEGER*);
+SQLRETURN SQL_API SQLNativeSqlW(SQLHDBC,SQLWCHAR*,SQLINTEGER,SQLWCHAR*,SQLINTEGER,SQLINTEGER*);
+SQLRETURN SQL_API SQLPrepareA(SQLHSTMT,SQLCHAR*,SQLINTEGER);
+SQLRETURN SQL_API SQLPrepareW(SQLHSTMT,SQLWCHAR*,SQLINTEGER);
+SQLRETURN SQL_API SQLPrimaryKeysA(SQLHSTMT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT );
+SQLRETURN SQL_API SQLPrimaryKeysW(SQLHSTMT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT);
+SQLRETURN SQL_API SQLProcedureColumnsA(SQLHSTMT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT);
+SQLRETURN SQL_API SQLProcedureColumnsW(SQLHSTMT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT);
+SQLRETURN SQL_API SQLProceduresA(SQLHSTMT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT);
+SQLRETURN SQL_API SQLProceduresW(SQLHSTMT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT);
+SQLRETURN SQL_API SQLSetConnectAttrA(SQLHDBC,SQLINTEGER,SQLPOINTER,SQLINTEGER);
+SQLRETURN SQL_API SQLSetConnectAttrW(SQLHDBC,SQLINTEGER,SQLPOINTER,SQLINTEGER);
+SQLRETURN SQL_API SQLSetConnectOptionA(SQLHDBC,SQLUSMALLINT,SQLULEN);
+SQLRETURN SQL_API SQLSetConnectOptionW(SQLHDBC,SQLUSMALLINT,SQLULEN);
+SQLRETURN SQL_API SQLSetCursorNameA(SQLHSTMT,SQLCHAR*,SQLSMALLINT);
+SQLRETURN SQL_API SQLSetCursorNameW(SQLHSTMT,SQLWCHAR*,SQLSMALLINT);
+SQLRETURN SQL_API SQLSpecialColumnsA(SQLHSTMT,SQLUSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT ,SQLUSMALLINT,SQLUSMALLINT);
+SQLRETURN SQL_API SQLSpecialColumnsW(SQLHSTMT,SQLUSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT ,SQLUSMALLINT,SQLUSMALLINT);
+SQLRETURN SQL_API SQLStatisticsA(SQLHSTMT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT ,SQLUSMALLINT,SQLUSMALLINT);
+SQLRETURN SQL_API SQLStatisticsW(SQLHSTMT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT ,SQLUSMALLINT,SQLUSMALLINT);
+SQLRETURN SQL_API SQLTablePrivilegesA(SQLHSTMT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT);
+SQLRETURN SQL_API SQLTablePrivilegesW(SQLHSTMT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT );
+SQLRETURN SQL_API SQLTablesA(SQLHSTMT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT);
+SQLRETURN SQL_API SQLTablesW(SQLHSTMT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT);
+#if (ODBCVER >= 0x0300)
+SQLRETURN SQL_API SQLGetDescFieldA(SQLHDESC,SQLSMALLINT,SQLSMALLINT,SQLPOINTER,SQLINTEGER,SQLINTEGER*);
+SQLRETURN SQL_API SQLGetDescFieldW(SQLHDESC,SQLSMALLINT,SQLSMALLINT,SQLPOINTER,SQLINTEGER,SQLINTEGER*);
+SQLRETURN SQL_API SQLSetDescFieldA(SQLHDESC,SQLSMALLINT,SQLSMALLINT,SQLPOINTER,SQLINTEGER);
+SQLRETURN SQL_API SQLSetDescFieldW(SQLHDESC,SQLSMALLINT,SQLSMALLINT,SQLPOINTER,SQLINTEGER);
+SQLRETURN SQL_API SQLGetDescRecA(SQLHDESC,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLSMALLINT*,SQLSMALLINT*,SQLSMALLINT*,SQLLEN*,SQLSMALLINT*,SQLSMALLINT*,SQLSMALLINT*);
+SQLRETURN SQL_API SQLGetDescRecW(SQLHDESC,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLSMALLINT*,SQLSMALLINT*,SQLSMALLINT*,SQLLEN*,SQLSMALLINT*,SQLSMALLINT*,SQLSMALLINT*);
+SQLRETURN SQL_API SQLGetDiagFieldA(SQLSMALLINT,SQLHANDLE,SQLSMALLINT,SQLSMALLINT,SQLPOINTER,SQLSMALLINT,SQLSMALLINT*);
+SQLRETURN SQL_API SQLGetDiagFieldW(SQLSMALLINT,SQLHANDLE,SQLSMALLINT,SQLSMALLINT,SQLPOINTER,SQLSMALLINT,SQLSMALLINT*);
+SQLRETURN SQL_API SQLGetDiagRecA(SQLSMALLINT,SQLHANDLE,SQLSMALLINT,SQLCHAR*,SQLINTEGER*,SQLCHAR*,SQLSMALLINT,SQLSMALLINT*);
+SQLRETURN SQL_API SQLGetDiagRecW(SQLSMALLINT,SQLHANDLE,SQLSMALLINT,SQLWCHAR*,SQLINTEGER*,SQLWCHAR*,SQLSMALLINT,SQLSMALLINT*);
+SQLRETURN SQL_API SQLGetStmtAttrA(SQLHSTMT,SQLINTEGER,SQLPOINTER,SQLINTEGER,SQLINTEGER*);
+SQLRETURN SQL_API SQLGetStmtAttrW(SQLHSTMT,SQLINTEGER,SQLPOINTER,SQLINTEGER,SQLINTEGER*);
+SQLRETURN SQL_API SQLSetStmtAttrA(SQLHSTMT,SQLINTEGER,SQLPOINTER,SQLINTEGER);
+SQLRETURN SQL_API SQLSetStmtAttrW(SQLHSTMT,SQLINTEGER,SQLPOINTER,SQLINTEGER);
+#endif /* (ODBCVER >= 0x0300) */
+
+#if defined (UNICODE) && !defined (SQL_NOUNICODEMAP)
+#define SQLBrowseConnect SQLBrowseConnectW
+#define SQLColAttribute SQLColAttributeW
+#define SQLColAttributes SQLColAttributesW
+#define SQLColumnPrivileges SQLColumnPrivilegesW
+#define SQLColumns SQLColumnsW
+#define SQLConnect SQLConnectW
+#define SQLDataSources SQLDataSourcesW
+#define SQLDescribeCol SQLDescribeColW
+#define SQLDriverConnect SQLDriverConnectW
+#define SQLDrivers SQLDriversW
+#define SQLError SQLErrorW
+#define SQLExecDirect SQLExecDirectW
+#define SQLForeignKeys SQLForeignKeysW
+#define SQLGetConnectAttr SQLGetConnectAttrW
+#define SQLGetConnectOption SQLGetConnectOptionW
+#define SQLGetCursorName SQLGetCursorNameW
+#define SQLGetDescField SQLGetDescFieldW
+#define SQLGetDescRec SQLGetDescRecW
+#define SQLGetDiagField SQLGetDiagFieldW
+#define SQLGetDiagRec SQLGetDiagRecW
+#define SQLGetInfo SQLGetInfoW
+#define SQLGetStmtAttr SQLGetStmtAttrW
+#define SQLGetTypeInfo SQLGetTypeInfoW
+#define SQLNativeSql SQLNativeSqlW
+#define SQLPrepare SQLPrepareW
+#define SQLPrimaryKeys SQLPrimaryKeysW
+#define SQLProcedureColumns SQLProcedureColumnsW
+#define SQLProcedures SQLProceduresW
+#define SQLSetConnectAttr SQLSetConnectAttrW
+#define SQLSetConnectOption SQLSetConnectOptionW
+#define SQLSetCursorName SQLSetCursorNameW
+#define SQLSetDescField SQLSetDescFieldW
+#define SQLSetStmtAttr SQLSetStmtAttrW
+#define SQLSpecialColumns SQLSpecialColumnsW
+#define SQLStatistics SQLStatisticsW
+#define SQLTablePrivileges SQLTablePrivilegesW
+#define SQLTables SQLTablesW
+#endif /* UNICODE && ! SQL_NOUNICODEMAP */
+#endif /* RC_INVOKED */
+#ifdef __cplusplus
+}
+#endif  /* __cplusplus*/
+#endif  /* ndef _SQLUCODE_H */
Index: Daodan/MinGW/include/sspi.h
===================================================================
--- Daodan/MinGW/include/sspi.h	(revision 1046)
+++ Daodan/MinGW/include/sspi.h	(revision 1046)
@@ -0,0 +1,348 @@
+#ifndef _SSPI_H
+#define _SSPI_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#include <ntsecapi.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <subauth.h>
+
+#define SECPKG_CRED_INBOUND 1
+#define SECPKG_CRED_OUTBOUND 2
+#define SECPKG_CRED_BOTH (SECPKG_CRED_OUTBOUND|SECPKG_CRED_INBOUND)
+#define SECPKG_CRED_ATTR_NAMES 1
+
+#define SECPKG_FLAG_INTEGRITY 1
+#define SECPKG_FLAG_PRIVACY 2
+#define SECPKG_FLAG_TOKEN_ONLY 4
+#define SECPKG_FLAG_DATAGRAM 8
+#define SECPKG_FLAG_CONNECTION 16
+#define SECPKG_FLAG_MULTI_REQUIRED 32
+#define SECPKG_FLAG_CLIENT_ONLY 64
+#define SECPKG_FLAG_EXTENDED_ERROR 128
+#define SECPKG_FLAG_IMPERSONATION 256
+#define SECPKG_FLAG_ACCEPT_WIN32_NAME 512
+#define SECPKG_FLAG_STREAM 1024
+
+#define SECPKG_ATTR_AUTHORITY 6
+#define SECPKG_ATTR_CONNECTION_INFO 90
+#define SECPKG_ATTR_ISSUER_LIST 80
+#define SECPKG_ATTR_ISSUER_LIST_EX 89
+#define SECPKG_ATTR_KEY_INFO 5
+#define SECPKG_ATTR_LIFESPAN 2
+#define SECPKG_ATTR_LOCAL_CERT_CONTEXT 84
+#define SECPKG_ATTR_LOCAL_CRED 82
+#define SECPKG_ATTR_NAMES 1
+#define SECPKG_ATTR_PROTO_INFO 7
+#define SECPKG_ATTR_REMOTE_CERT_CONTEXT 83
+#define SECPKG_ATTR_REMOTE_CRED 81
+#define SECPKG_ATTR_SIZES 0
+#define SECPKG_ATTR_STREAM_SIZES 4
+
+#define SECBUFFER_EMPTY 0
+#define SECBUFFER_DATA 1
+#define SECBUFFER_TOKEN 2
+#define SECBUFFER_PKG_PARAMS 3
+#define SECBUFFER_MISSING 4
+#define SECBUFFER_EXTRA 5
+#define SECBUFFER_STREAM_TRAILER 6
+#define SECBUFFER_STREAM_HEADER 7
+#define SECBUFFER_PADDING 9
+#define SECBUFFER_STREAM 10
+#define SECBUFFER_READONLY 0x80000000
+#define SECBUFFER_ATTRMASK 0xf0000000
+
+#define UNISP_NAME_A "Microsoft Unified Security Protocol Provider"
+#define UNISP_NAME_W L"Microsoft Unified Security Protocol Provider"
+#define SECBUFFER_VERSION 0
+
+typedef UNICODE_STRING SECURITY_STRING, *PSECURITY_STRING;
+
+typedef struct _SecHandle {
+	ULONG_PTR dwLower;
+	ULONG_PTR dwUpper;
+} SecHandle, *PSecHandle;
+typedef struct _SecBuffer {
+	ULONG cbBuffer;
+	ULONG BufferType;
+	PVOID pvBuffer;
+} SecBuffer, *PSecBuffer;
+typedef SecHandle CredHandle;
+typedef PSecHandle PCredHandle;
+typedef SecHandle CtxtHandle;
+typedef PSecHandle PCtxtHandle;
+typedef struct _SECURITY_INTEGER {
+	unsigned long LowPart;
+	long HighPart;
+} SECURITY_INTEGER;
+typedef SECURITY_INTEGER TimeStamp, *PTimeStamp;
+typedef struct _SecBufferDesc {
+	ULONG ulVersion;
+	ULONG cBuffers;
+	PSecBuffer pBuffers;
+} SecBufferDesc, *PSecBufferDesc;
+typedef struct _SecPkgContext_StreamSizes {
+	ULONG cbHeader;
+	ULONG cbTrailer;
+	ULONG cbMaximumMessage;
+	ULONG cBuffers;
+	ULONG cbBlockSize;
+} SecPkgContext_StreamSizes, *PSecPkgContext_StreamSizes;
+typedef struct _SecPkgContext_Sizes {
+	ULONG cbMaxToken;
+	ULONG cbMaxSignature;
+	ULONG cbBlockSize;
+	ULONG cbSecurityTrailer;
+} SecPkgContext_Sizes, *PSecPkgContext_Sizes;
+typedef struct _SecPkgContext_AuthorityW {
+	SEC_WCHAR* sAuthorityName;
+} SecPkgContext_AuthorityW, *PSecPkgContext_AuthorityW;
+typedef struct _SecPkgContext_AuthorityA {
+	SEC_CHAR* sAuthorityName;
+} SecPkgContext_AuthorityA, *PSecPkgContext_AuthorityA;
+typedef struct _SecPkgContext_KeyInfoW {
+	SEC_WCHAR* sSignatureAlgorithmName;
+	SEC_WCHAR* sEncryptAlgorithmName;
+	ULONG KeySize;
+	ULONG SignatureAlgorithm;
+	ULONG EncryptAlgorithm;
+} SecPkgContext_KeyInfoW, *PSecPkgContext_KeyInfoW;
+typedef struct _SecPkgContext_KeyInfoA {
+	SEC_CHAR* sSignatureAlgorithmName;
+	SEC_CHAR* sEncryptAlgorithmName;
+	ULONG KeySize;
+	ULONG SignatureAlgorithm;
+	ULONG EncryptAlgorithm;
+} SecPkgContext_KeyInfoA, *PSecPkgContext_KeyInfoA;
+typedef struct _SecPkgContext_LifeSpan {
+	TimeStamp tsStart;
+	TimeStamp tsExpiry;
+} SecPkgContext_LifeSpan, *PSecPkgContext_LifeSpan;
+typedef struct _SecPkgContext_NamesW {
+	SEC_WCHAR* sUserName;
+} SecPkgContext_NamesW, *PSecPkgContext_NamesW;
+typedef struct _SecPkgContext_NamesA {
+	SEC_CHAR* sUserName;
+} SecPkgContext_NamesA, *PSecPkgContext_NamesA;
+typedef struct _SecPkgInfoW {
+	ULONG fCapabilities;
+	USHORT wVersion;
+	USHORT wRPCID;
+	ULONG cbMaxToken;
+	SEC_WCHAR* Name;
+	SEC_WCHAR* Comment;
+} SecPkgInfoW, *PSecPkgInfoW;
+typedef struct _SecPkgInfoA {
+	ULONG fCapabilities;
+	USHORT wVersion;
+	USHORT wRPCID;
+	ULONG cbMaxToken;
+	SEC_CHAR* Name;
+	SEC_CHAR* Comment;
+} SecPkgInfoA, *PSecPkgInfoA;
+/* supported only in win2k+, so it should be a PSecPkgInfoW */
+/* PSDK does not say it has ANSI/Unicode versions */
+typedef struct _SecPkgContext_PackageInfo {
+	PSecPkgInfoW PackageInfo;
+} SecPkgContext_PackageInfo, *PSecPkgContext_PackageInfo;
+typedef struct _SecPkgCredentials_NamesW {
+	SEC_WCHAR* sUserName;
+} SecPkgCredentials_NamesW, *PSecPkgCredentials_NamesW;
+typedef struct _SecPkgCredentials_NamesA {
+	SEC_CHAR* sUserName;
+} SecPkgCredentials_NamesA, *PSecPkgCredentials_NamesA;
+
+/* TODO: missing type in SDK */
+typedef void (*SEC_GET_KEY_FN)();
+
+typedef SECURITY_STATUS (WINAPI *ENUMERATE_SECURITY_PACKAGES_FN_W)(PULONG,PSecPkgInfoW*);
+typedef SECURITY_STATUS (WINAPI *ENUMERATE_SECURITY_PACKAGES_FN_A)(PULONG,PSecPkgInfoA*);
+typedef SECURITY_STATUS (WINAPI *QUERY_CREDENTIALS_ATTRIBUTES_FN_W)(PCredHandle,ULONG,PVOID);
+typedef SECURITY_STATUS (WINAPI *QUERY_CREDENTIALS_ATTRIBUTES_FN_A)(PCredHandle,ULONG,PVOID);
+typedef SECURITY_STATUS (WINAPI *ACQUIRE_CREDENTIALS_HANDLE_FN_W)(SEC_WCHAR*,SEC_WCHAR*,ULONG,PLUID,PVOID,SEC_GET_KEY_FN,PVOID,PCredHandle,PTimeStamp);
+typedef SECURITY_STATUS (WINAPI *ACQUIRE_CREDENTIALS_HANDLE_FN_A)(SEC_CHAR*,SEC_CHAR*,ULONG,PLUID,PVOID,SEC_GET_KEY_FN,PVOID,PCredHandle,PTimeStamp);
+typedef SECURITY_STATUS (WINAPI *FREE_CREDENTIALS_HANDLE_FN)(PCredHandle);
+typedef SECURITY_STATUS (WINAPI *INITIALIZE_SECURITY_CONTEXT_FN_W)(PCredHandle,PCtxtHandle,SEC_WCHAR*,ULONG,ULONG,ULONG,PSecBufferDesc,ULONG,PCtxtHandle,PSecBufferDesc,PULONG,PTimeStamp);
+typedef SECURITY_STATUS (WINAPI *INITIALIZE_SECURITY_CONTEXT_FN_A)(PCredHandle,PCtxtHandle,SEC_CHAR*,ULONG,ULONG,ULONG,PSecBufferDesc,ULONG,PCtxtHandle,PSecBufferDesc,PULONG,PTimeStamp);
+typedef SECURITY_STATUS (WINAPI *ACCEPT_SECURITY_CONTEXT_FN)(PCredHandle,PCtxtHandle,PSecBufferDesc,ULONG,ULONG,PCtxtHandle,PSecBufferDesc,PULONG,PTimeStamp);
+typedef SECURITY_STATUS (WINAPI *COMPLETE_AUTH_TOKEN_FN)(PCtxtHandle,PSecBufferDesc);
+typedef SECURITY_STATUS (WINAPI *DELETE_SECURITY_CONTEXT_FN)(PCtxtHandle);
+typedef SECURITY_STATUS (WINAPI *APPLY_CONTROL_TOKEN_FN_W)(PCtxtHandle,PSecBufferDesc);
+typedef SECURITY_STATUS (WINAPI *APPLY_CONTROL_TOKEN_FN_A)(PCtxtHandle,PSecBufferDesc);
+typedef SECURITY_STATUS (WINAPI *QUERY_CONTEXT_ATTRIBUTES_FN_A)(PCtxtHandle,ULONG,PVOID);
+typedef SECURITY_STATUS (WINAPI *QUERY_CONTEXT_ATTRIBUTES_FN_W)(PCtxtHandle,ULONG,PVOID);
+typedef SECURITY_STATUS (WINAPI *IMPERSONATE_SECURITY_CONTEXT_FN)(PCtxtHandle);
+typedef SECURITY_STATUS (WINAPI *REVERT_SECURITY_CONTEXT_FN)(PCtxtHandle);
+typedef SECURITY_STATUS (WINAPI *MAKE_SIGNATURE_FN)(PCtxtHandle,ULONG,PSecBufferDesc,ULONG);
+typedef SECURITY_STATUS (WINAPI *VERIFY_SIGNATURE_FN)(PCtxtHandle,PSecBufferDesc,ULONG,PULONG);
+typedef SECURITY_STATUS (WINAPI *FREE_CONTEXT_BUFFER_FN)(PVOID);
+typedef SECURITY_STATUS (WINAPI *QUERY_SECURITY_PACKAGE_INFO_FN_A)(SEC_CHAR*,PSecPkgInfoA*);
+typedef SECURITY_STATUS (WINAPI *QUERY_SECURITY_CONTEXT_TOKEN_FN)(PCtxtHandle,HANDLE*);
+typedef SECURITY_STATUS (WINAPI *QUERY_SECURITY_PACKAGE_INFO_FN_W)(SEC_WCHAR*,PSecPkgInfoW*);
+typedef SECURITY_STATUS (WINAPI *ENCRYPT_MESSAGE_FN)(PCtxtHandle,ULONG,PSecBufferDesc,ULONG);
+typedef SECURITY_STATUS (WINAPI *DECRYPT_MESSAGE_FN)(PCtxtHandle,PSecBufferDesc,ULONG,PULONG);
+
+/* No, it really is FreeCredentialsHandle, see the thread beginning
+ * http://sourceforge.net/mailarchive/message.php?msg_id=4321080 for a
+ * discovery discussion. */
+typedef struct _SECURITY_FUNCTION_TABLEW {
+	unsigned long dwVersion;
+	ENUMERATE_SECURITY_PACKAGES_FN_W EnumerateSecurityPackagesW;
+	QUERY_CREDENTIALS_ATTRIBUTES_FN_W QueryCredentialsAttributesW;
+	ACQUIRE_CREDENTIALS_HANDLE_FN_W AcquireCredentialsHandleW;
+	FREE_CREDENTIALS_HANDLE_FN FreeCredentialsHandle;
+	void SEC_FAR* Reserved2;
+	INITIALIZE_SECURITY_CONTEXT_FN_W InitializeSecurityContextW;
+	ACCEPT_SECURITY_CONTEXT_FN AcceptSecurityContext;
+	COMPLETE_AUTH_TOKEN_FN CompleteAuthToken;
+	DELETE_SECURITY_CONTEXT_FN DeleteSecurityContext;
+	APPLY_CONTROL_TOKEN_FN_W ApplyControlTokenW;
+	QUERY_CONTEXT_ATTRIBUTES_FN_W QueryContextAttributesW;
+	IMPERSONATE_SECURITY_CONTEXT_FN ImpersonateSecurityContext;
+	REVERT_SECURITY_CONTEXT_FN RevertSecurityContext;
+	MAKE_SIGNATURE_FN MakeSignature;
+	VERIFY_SIGNATURE_FN VerifySignature;
+	FREE_CONTEXT_BUFFER_FN FreeContextBuffer;
+	QUERY_SECURITY_PACKAGE_INFO_FN_W QuerySecurityPackageInfoW;
+	void SEC_FAR* Reserved3;
+	void SEC_FAR* Reserved4;
+        void SEC_FAR* Reserved5;
+        void SEC_FAR* Reserved6;
+        void SEC_FAR* Reserved7;
+        void SEC_FAR* Reserved8;
+        QUERY_SECURITY_CONTEXT_TOKEN_FN QuerySecurityContextToken;
+        ENCRYPT_MESSAGE_FN EncryptMessage;
+        DECRYPT_MESSAGE_FN DecryptMessage;
+} SecurityFunctionTableW, *PSecurityFunctionTableW;
+typedef struct _SECURITY_FUNCTION_TABLEA {
+	unsigned long dwVersion;
+	ENUMERATE_SECURITY_PACKAGES_FN_A EnumerateSecurityPackagesA;
+	QUERY_CREDENTIALS_ATTRIBUTES_FN_A QueryCredentialsAttributesA;
+	ACQUIRE_CREDENTIALS_HANDLE_FN_A AcquireCredentialsHandleA;
+	FREE_CREDENTIALS_HANDLE_FN FreeCredentialsHandle;
+	void SEC_FAR* Reserved2;
+	INITIALIZE_SECURITY_CONTEXT_FN_A InitializeSecurityContextA;
+	ACCEPT_SECURITY_CONTEXT_FN AcceptSecurityContext;
+	COMPLETE_AUTH_TOKEN_FN CompleteAuthToken;
+	DELETE_SECURITY_CONTEXT_FN DeleteSecurityContext;
+	APPLY_CONTROL_TOKEN_FN_A ApplyControlTokenA;
+	QUERY_CONTEXT_ATTRIBUTES_FN_A QueryContextAttributesA;
+	IMPERSONATE_SECURITY_CONTEXT_FN ImpersonateSecurityContext;
+	REVERT_SECURITY_CONTEXT_FN RevertSecurityContext;
+	MAKE_SIGNATURE_FN MakeSignature;
+	VERIFY_SIGNATURE_FN VerifySignature;
+	FREE_CONTEXT_BUFFER_FN FreeContextBuffer;
+	QUERY_SECURITY_PACKAGE_INFO_FN_A QuerySecurityPackageInfoA;
+	void SEC_FAR* Reserved3;
+	void SEC_FAR* Reserved4;
+        void SEC_FAR* Unknown1;
+        void SEC_FAR* Unknown2;
+        void SEC_FAR* Unknown3;
+        void SEC_FAR* Unknown4;
+        void SEC_FAR* Unknown5;
+        ENCRYPT_MESSAGE_FN EncryptMessage;
+        DECRYPT_MESSAGE_FN DecryptMessage;
+} SecurityFunctionTableA, *PSecurityFunctionTableA;
+typedef PSecurityFunctionTableA (WINAPI *INIT_SECURITY_INTERFACE_A)(VOID);
+typedef PSecurityFunctionTableW (WINAPI *INIT_SECURITY_INTERFACE_W)(VOID);
+
+SECURITY_STATUS WINAPI FreeCredentialsHandle(PCredHandle);
+SECURITY_STATUS WINAPI EnumerateSecurityPackagesA(PULONG,PSecPkgInfoA*);
+SECURITY_STATUS WINAPI EnumerateSecurityPackagesW(PULONG,PSecPkgInfoW*);
+SECURITY_STATUS WINAPI AcquireCredentialsHandleA(SEC_CHAR*,SEC_CHAR*,ULONG,PLUID,PVOID,SEC_GET_KEY_FN,PVOID,PCredHandle,PTimeStamp);
+SECURITY_STATUS WINAPI AcquireCredentialsHandleW(SEC_WCHAR*,SEC_WCHAR*,ULONG,PLUID,PVOID,SEC_GET_KEY_FN,PVOID,PCredHandle,PTimeStamp);
+SECURITY_STATUS WINAPI AcceptSecurityContext(PCredHandle,PCtxtHandle,PSecBufferDesc,ULONG,ULONG,PCtxtHandle,PSecBufferDesc,PULONG,PTimeStamp);
+SECURITY_STATUS WINAPI InitializeSecurityContextA(PCredHandle,PCtxtHandle,SEC_CHAR*,ULONG,ULONG,ULONG,PSecBufferDesc,ULONG,PCtxtHandle,PSecBufferDesc,PULONG,PTimeStamp);
+SECURITY_STATUS WINAPI InitializeSecurityContextW(PCredHandle,PCtxtHandle,SEC_WCHAR*,ULONG,ULONG,ULONG,PSecBufferDesc,ULONG,PCtxtHandle,PSecBufferDesc,PULONG,PTimeStamp);
+SECURITY_STATUS WINAPI FreeContextBuffer(PVOID);
+SECURITY_STATUS WINAPI QueryContextAttributesA(PCtxtHandle,ULONG,PVOID);
+SECURITY_STATUS WINAPI QueryContextAttributesW(PCtxtHandle,ULONG,PVOID);
+SECURITY_STATUS WINAPI QueryCredentialsAttributesA(PCredHandle,ULONG,PVOID);
+SECURITY_STATUS WINAPI QueryCredentialsAttributesW(PCredHandle,ULONG,PVOID);
+#if (_WIN32_WINNT >= 0x0500)
+SECURITY_STATUS WINAPI QuerySecurityContextToken(PCtxtHandle,HANDLE*);
+#endif
+SECURITY_STATUS WINAPI DecryptMessage(PCtxtHandle,PSecBufferDesc,ULONG,PULONG);
+SECURITY_STATUS WINAPI EncryptMessage(PCtxtHandle,ULONG,PSecBufferDesc,ULONG);
+SECURITY_STATUS WINAPI DeleteSecurityContext(PCtxtHandle);
+SECURITY_STATUS WINAPI CompleteAuthToken(PCtxtHandle,PSecBufferDesc);
+SECURITY_STATUS WINAPI ApplyControlTokenA(PCtxtHandle,PSecBufferDesc);
+SECURITY_STATUS WINAPI ApplyControlTokenW(PCtxtHandle,PSecBufferDesc);
+SECURITY_STATUS WINAPI ImpersonateSecurityContext(PCtxtHandle);
+SECURITY_STATUS WINAPI RevertSecurityContext(PCtxtHandle);
+SECURITY_STATUS WINAPI MakeSignature(PCtxtHandle,ULONG,PSecBufferDesc,ULONG);
+SECURITY_STATUS WINAPI VerifySignature(PCtxtHandle,PSecBufferDesc,ULONG,PULONG);
+SECURITY_STATUS WINAPI QuerySecurityPackageInfoA(SEC_CHAR*,PSecPkgInfoA*);
+SECURITY_STATUS WINAPI QuerySecurityPackageInfoW(SEC_WCHAR*,PSecPkgInfoW*);
+PSecurityFunctionTableA WINAPI InitSecurityInterfaceA(VOID);
+PSecurityFunctionTableW WINAPI InitSecurityInterfaceW(VOID);
+
+#ifdef UNICODE
+#define UNISP_NAME UNISP_NAME_W
+#define SecPkgInfo SecPkgInfoW
+#define PSecPkgInfo PSecPkgInfoW
+#define SecPkgCredentials_Names SecPkgCredentials_NamesW
+#define PSecPkgCredentials_Names PSecPkgCredentials_NamesW
+#define SecPkgContext_Authority SecPkgContext_AuthorityW
+#define PSecPkgContext_Authority PSecPkgContext_AuthorityW
+#define SecPkgContext_KeyInfo SecPkgContext_KeyInfoW
+#define PSecPkgContext_KeyInfo PSecPkgContext_KeyInfoW
+#define SecPkgContext_Names SecPkgContext_NamesW
+#define PSecPkgContext_Names PSecPkgContext_NamesW
+#define SecurityFunctionTable SecurityFunctionTableW
+#define PSecurityFunctionTable PSecurityFunctionTableW
+#define AcquireCredentialsHandle AcquireCredentialsHandleW
+#define EnumerateSecurityPackages EnumerateSecurityPackagesW
+#define InitializeSecurityContext InitializeSecurityContextW
+#define QueryContextAttributes QueryContextAttributesW
+#define QueryCredentialsAttributes QueryCredentialsAttributesW
+#define QuerySecurityPackageInfo QuerySecurityPackageInfoW
+#define ApplyControlToken ApplyControlTokenW
+#define ENUMERATE_SECURITY_PACKAGES_FN ENUMERATE_SECURITY_PACKAGES_FN_W
+#define QUERY_CREDENTIALS_ATTRIBUTES_FN QUERY_CREDENTIALS_ATTRIBUTES_FN_W
+#define ACQUIRE_CREDENTIALS_HANDLE_FN ACQUIRE_CREDENTIALS_HANDLE_FN_W
+#define INITIALIZE_SECURITY_CONTEXT_FN INITIALIZE_SECURITY_CONTEXT_FN_W
+#define APPLY_CONTROL_TOKEN_FN APPLY_CONTROL_TOKEN_FN_W
+#define QUERY_CONTEXT_ATTRIBUTES_FN QUERY_CONTEXT_ATTRIBUTES_FN_W
+#define QUERY_SECURITY_PACKAGE_INFO_FN QUERY_SECURITY_PACKAGE_INFO_FN_W
+#define INIT_SECURITY_INTERFACE INIT_SECURITY_INTERFACE_W
+#else
+#define UNISP_NAME UNISP_NAME_A
+#define SecPkgInfo SecPkgInfoA
+#define PSecPkgInfo PSecPkgInfoA
+#define SecPkgCredentials_Names SecPkgCredentials_NamesA
+#define PSecPkgCredentials_Names PSecPkgCredentials_NamesA
+#define SecPkgContext_Authority SecPkgContext_AuthorityA
+#define PSecPkgContext_Authority PSecPkgContext_AuthorityA
+#define SecPkgContext_KeyInfo SecPkgContext_KeyInfoA
+#define PSecPkgContext_KeyInfo PSecPkgContext_KeyInfoA
+#define SecPkgContext_Names SecPkgContext_NamesA
+#define PSecPkgContext_Names PSecPkgContext_NamesA
+#define SecurityFunctionTable SecurityFunctionTableA
+#define PSecurityFunctionTable PSecurityFunctionTableA
+#define AcquireCredentialsHandle AcquireCredentialsHandleA
+#define EnumerateSecurityPackages EnumerateSecurityPackagesA
+#define InitializeSecurityContext InitializeSecurityContextA
+#define QueryContextAttributes QueryContextAttributesA
+#define QueryCredentialsAttributes QueryCredentialsAttributesA
+#define QuerySecurityPackageInfo QuerySecurityPackageInfoA
+#define ApplyControlToken ApplyControlTokenA
+#define ENUMERATE_SECURITY_PACKAGES_FN ENUMERATE_SECURITY_PACKAGES_FN_A
+#define QUERY_CREDENTIALS_ATTRIBUTES_FN QUERY_CREDENTIALS_ATTRIBUTES_FN_A
+#define ACQUIRE_CREDENTIALS_HANDLE_FN ACQUIRE_CREDENTIALS_HANDLE_FN_A
+#define INITIALIZE_SECURITY_CONTEXT_FN INITIALIZE_SECURITY_CONTEXT_FN_A
+#define APPLY_CONTROL_TOKEN_FN APPLY_CONTROL_TOKEN_FN_A
+#define QUERY_CONTEXT_ATTRIBUTES_FN QUERY_CONTEXT_ATTRIBUTES_FN_A
+#define QUERY_SECURITY_PACKAGE_INFO_FN QUERY_SECURITY_PACKAGE_INFO_FN_A
+#define INIT_SECURITY_INTERFACE INIT_SECURITY_INTERFACE_A
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/stdint.h
===================================================================
--- Daodan/MinGW/include/stdint.h	(revision 1046)
+++ Daodan/MinGW/include/stdint.h	(revision 1046)
@@ -0,0 +1,263 @@
+/*
+ * stdint.h
+ *
+ * Integer type definitions, as prescribed by ISO-C9x Section 7.18
+ * Based on ISO/IEC SC22/WG14 9899 Committee draft (SC22 N2794)
+ *
+ * $Id: stdint.h,v 0e4f78dbc1ba 2016/06/17 14:16:01 keithmarshall $
+ *
+ * Written by Danny Smith <danny_r_smith_2001@yahoo.co.nz>
+ * Copyright (C) 2000-2002, 2004, 2005, 2007, 2009, 2016, MinGW.org Project.
+ *
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice, this permission notice, and the following
+ * disclaimer shall be included in all copies or substantial portions of
+ * the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OF OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ *
+ */
+#ifndef _STDINT_H
+#pragma GCC system_header
+
+/* To support selective definition of just intptr_t or uintptr_t,
+ * we defer definition of the normal multiple inclusion guard macro,
+ * until we've determined that neither selection is active.
+ */
+#if ! defined __need_intptr_t && ! defined __need_uintptr_t
+#define _STDINT_H
+
+/* All MinGW system headers are expected to include <_mingw.h>;
+ * ensure that we have done so.
+ */
+#include <_mingw.h>
+
+/* We need to duplicate the definitions of wint_t and wchar_t, as
+ * they are defined in <stddef.h>; get them, by selective inclusion
+ * from that header itself.
+ */
+#define __need_wint_t
+#define __need_wchar_t
+#include <stddef.h>
+
+/* 7.18.1.1  Exact-width integer types.
+ */
+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;
+typedef long long		int64_t;
+typedef unsigned long long	uint64_t;
+
+/* 7.18.1.2  Minimum-width integer types.
+ */
+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;
+typedef long long		int_least64_t;
+typedef unsigned long long	uint_least64_t;
+
+/*  7.18.1.3  Fastest minimum-width integer types
+ *  Not actually guaranteed to be fastest for all purposes
+ *  Here we use the exact-width types for 8 and 16-bit ints.
+ */
+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;
+typedef long long		int_fast64_t;
+typedef unsigned long long	uint_fast64_t;
+
+/* We actually DO need both selections, which had to be omitted
+ * to get us into this conditional block; force them!
+ */
+#define __need_intptr_t
+#define __need_uintptr_t
+
+#endif	/* !__need_intptr_t && !__need_uintptr_t */
+
+/* 7.18.1.4  Integer types capable of holding object pointers.
+ */
+#if defined __need_intptr_t && ! defined __intptr_t
+#define __intptr_t __intptr_t
+#ifdef _WIN64
+ typedef __int64 __intptr_t;
+#else
+ typedef int __intptr_t;
+#endif
+typedef __intptr_t intptr_t;
+
+#endif	/* __need_intptr_t */
+#undef __need_intptr_t
+
+#if defined __need_uintptr_t && ! defined __uintptr_t
+#define __uintptr_t __uintptr_t
+#ifdef _WIN64
+ typedef unsigned __int64 __uintptr_t;
+#else
+ typedef unsigned int __uintptr_t;
+#endif
+typedef __uintptr_t uintptr_t;
+
+#endif	/* __need_uintptr_t */
+#undef __need_uintptr_t
+
+#ifdef  _STDINT_H
+/* 7.18.1.5  Greatest-width integer types.
+ */
+typedef long long  intmax_t;
+typedef unsigned long long uintmax_t;
+
+/* 7.18.2  Limits of specified-width integer types.
+ * (always defined in C, but C++ needs __STDC_LIMIT_MACROS)
+ */
+#if ! defined __cplusplus || defined __STDC_LIMIT_MACROS
+
+/* 7.18.2.1  Limits of exact-width integer types.
+ */
+#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		0xffU			/* 255U */
+#define UINT16_MAX		0xffffU			/* 65535U */
+#define UINT32_MAX		0xffffffffUL		/* 4294967295U */
+#define UINT64_MAX		0xffffffffffffffffULL	/* 18446744073709551615ULL */
+
+/* 7.18.2.2  Limits of minimum-width integer types.
+ */
+#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
+
+/* 7.18.2.3  Limits of fastest minimum-width integer types.
+ */
+#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
+
+/* 7.18.2.4  Limits of integer types capable of holding object pointers.
+ */
+#ifdef _WIN64
+# define INTPTR_MIN		INT64_MIN
+# define INTPTR_MAX		INT64_MAX
+# define UINTPTR_MAX		UINT64_MAX
+#else
+# define INTPTR_MIN		INT32_MIN
+# define INTPTR_MAX		INT32_MAX
+# define UINTPTR_MAX		UINT32_MAX
+#endif
+
+/* 7.18.2.5  Limits of greatest-width integer types.
+ */
+#define INTMAX_MIN		INT64_MIN
+#define INTMAX_MAX		INT64_MAX
+#define UINTMAX_MAX		UINT64_MAX
+
+/* 7.18.3  Limits of other integer types.
+ */
+#define PTRDIFF_MIN		INTPTR_MIN
+#define PTRDIFF_MAX		INTPTR_MAX
+
+#define SIG_ATOMIC_MIN		INTPTR_MIN
+#define SIG_ATOMIC_MAX		INTPTR_MAX
+
+#define SIZE_MAX		UINTPTR_MAX
+
+/* The following pair are also defined in <wchar.h>, but leave them
+ * unguarded, so that the compiler may check for consistency.
+ */
+#define WCHAR_MIN		0
+#define WCHAR_MAX		0xffff /* UINT16_MAX */
+
+/* wint_t is unsigned short for compatibility with MS runtime
+ */
+#define WINT_MIN		0
+#define WINT_MAX		0xffff /* UINT16_MAX */
+
+#endif	/* !__cplusplus || __STDC_LIMIT_MACROS */
+
+/* 7.18.4  Macros for integer constants.
+ * (always defined in C, but C++ needs __STDC_CONSTANT_MACROS)
+ */
+#if ! defined __cplusplus || defined __STDC_CONSTANT_MACROS
+
+/* 7.18.4.1  Macros for minimum-width integer constants
+ *
+ * According to Douglas Gwyn <gwyn@arl.mil>:
+ *  "This spec was changed in ISO/IEC 9899:1999 TC1; in ISO/IEC
+ *  9899:1999 as initially published, the expansion was required
+ *  to be an integer constant of precisely matching type, which
+ *  is impossible to accomplish for the shorter types on most
+ *  platforms, because C99 provides no standard way to designate
+ *  an integer constant with width less than that of type int.
+ *  TC1 changed this to require just an integer constant
+ *  EXPRESSION with PROMOTED type".
+ */
+#define INT8_C(val)		val
+#define UINT8_C(val)		val
+#define INT16_C(val)		val
+#define UINT16_C(val)		val
+
+#define INT32_C(val)		val
+#define UINT32_C(val)		val##U
+#define INT64_C(val)		val##LL
+#define UINT64_C(val)		val##ULL
+
+/* 7.18.4.2  Macros for greatest-width integer constants.
+ */
+#define INTMAX_C(val)		INT64_C(val)
+#define UINTMAX_C(val)		UINT64_C(val)
+
+#endif  /* !__cplusplus || __STDC_CONSTANT_MACROS */
+#endif	/* _STDINT_H */
+
+#endif	/* !_STDINT_H: $RCSfile: stdint.h,v $: end of file */
Index: Daodan/MinGW/include/stdio.h
===================================================================
--- Daodan/MinGW/include/stdio.h	(revision 1046)
+++ Daodan/MinGW/include/stdio.h	(revision 1046)
@@ -0,0 +1,978 @@
+/*
+ * stdio.h
+ *
+ * Definitions of types and prototypes of functions for operations on
+ * standard input and standard output streams.
+ *
+ * $Id: stdio.h,v 0e4f78dbc1ba 2016/06/17 14:16:01 keithmarshall $
+ *
+ * Written by Colin Peters <colin@bird.fu.is.saga-u.ac.jp>
+ * Copyright (C) 1997-2005, 2007-2010, 2014-2016, MinGW.org Project.
+ *
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice, this permission notice, and the following
+ * disclaimer shall be included in all copies or substantial portions of
+ * the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OF OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ *
+ * NOTE: The file manipulation functions provided by Microsoft seem to
+ * work with either slash (/) or backslash (\) as the directory separator;
+ * (this is consistent with Microsoft's own documentation, on MSDN).
+ *
+ */
+#ifndef _STDIO_H
+#pragma GCC system_header
+
+/* When including <wchar.h>, some of the definitions and declarations
+ * which are nominally provided in <stdio.h> must be duplicated.  Rather
+ * than require duplicated maintenance effort, we provide for partial
+ * inclusion of <stdio.h> by <wchar.h>; only when not included in
+ * this partial fashion...
+ */
+#ifndef __WCHAR_H_SOURCED__
+ /*
+  * ...which is exclusive to <wchar.h>, do we assert the multiple
+  * inclusion guard for <stdio.h> itself.
+  */
+#define _STDIO_H
+#endif
+
+/* All the headers include this file.
+ */
+#include <_mingw.h>
+
+#ifndef RC_INVOKED
+/* POSIX stipulates that the following set of types, (as identified by
+ * __need_TYPENAME macros), shall be defined consistently with <stddef.h>;
+ * by defining the appropriate __need_TYPENAME macros, we may selectively
+ * obtain the required definitions by inclusion of <stddef.h>, WITHOUT
+ * automatic exposure of any of its additional content.
+ */
+#define __need_NULL
+#define __need_size_t
+#define __need_wchar_t
+#define __need_wint_t
+#include <stddef.h>
+
+#if _POSIX_C_SOURCE >= 200809L
+ /* Similarly, for types defined in <sys/types.h>, (which are explicitly
+  * dependent on the POSIX.1-2008 feature test)...
+  */
+# define __need_off_t
+# define __need_ssize_t
+#endif
+#if !(defined __STRICT_ANSI__ || defined (__NO_MINGW_LFS)) \
+ && defined (__MSVCRT__)
+ /* ...while this is required to support our fseeko64() and ftello64()
+  * implementations, (neither of which is in any way standardized)...
+  */
+# define __need___off64_t
+#endif
+/* It is sufficient to test for just one define from each of the two
+ * preceding groups...
+ */
+#if defined __need_off_t || defined __need___off64_t
+ /* ...to identify a requirement for selective inclusion of one or more
+  * of these type definitions from "sys/types.h"; (note that we use the
+  * #include "..." form here, to ensure that we get the correct header
+  * file, relative to the location of this <stdio.h>).
+  */
+# include "sys/types.h"
+#endif
+
+#ifndef __VALIST
+ /* Also similarly, for the va_list type, defined in "stdarg.h"
+  */
+# if defined __GNUC__ && __GNUC__ >= 3
+#  define __need___va_list
+#  include "stdarg.h"
+#  define __VALIST __builtin_va_list
+# else
+#  define __VALIST char *
+# endif
+#endif
+#endif	/* ! RC_INVOKED */
+
+#ifdef _STDIO_H
+/* Flags for the iobuf structure
+ */
+#define _IOREAD 	1	/* currently reading */
+#define _IOWRT		2	/* currently writing */
+#define _IORW	   0x0080	/* opened as "r+w" */
+
+/* The three standard file pointers provided by the run time library.
+ * NOTE: These will go to the bit-bucket silently in GUI applications!
+ */
+#define STDIN_FILENO	0
+#define STDOUT_FILENO	1
+#define STDERR_FILENO	2
+
+/* Returned by various functions on end of file condition or error.
+ */
+#define EOF	      (-1)
+
+#endif	/* _STDIO_H */
+
+/* The maximum length of a file name.  It may be better to use the Windows'
+ * GetVolumeInformation() function in preference to this constant, but hey,
+ * this works!  Note that <io.h> also defines it, but we don't guard it, so
+ * that the compiler has a chance to catch inconsistencies.
+ *
+ * FIXME: Right now, we define this unconditionally for both full <stdio.h>
+ * inclusion, and for partial inclusion on behalf of <wchar.h>, (which needs
+ * it for some non-ANSI structure declarations).  The conditions under which
+ * <wchar.h> needs this require review, because defining it as a consequence
+ * of including <wchar.h> alone may violate strict ANSI conformity.
+ */
+#define FILENAME_MAX  (260)
+
+#ifdef _STDIO_H
+/* The maximum number of files that may be open at once. I have set this to
+ * a conservative number. The actual value may be higher.
+ */
+#define FOPEN_MAX      (20)
+
+/* After creating this many names, tmpnam and tmpfile return NULL
+ */
+#define TMP_MAX      32767
+
+/* Tmpnam, tmpfile and, sometimes, _tempnam try to create
+ * temp files in the root directory of the current drive
+ * (not in pwd, as suggested by some older MS doc's).
+ * Redefining these macros does not effect the CRT functions.
+ */
+#define _P_tmpdir   "\\"
+#ifndef __STRICT_ANSI__
+#define P_tmpdir _P_tmpdir
+#endif
+#define _wP_tmpdir  L"\\"
+
+/* The maximum size of name (including NUL) that will be put in the user
+ * supplied buffer caName for tmpnam.
+ * Inferred from the size of the static buffer returned by tmpnam
+ * when passed a NULL argument. May actually be smaller.
+ */
+#define L_tmpnam (16)
+
+#define _IOFBF		0x0000	/* full buffered */
+#define _IOLBF		0x0040	/* line buffered */
+#define _IONBF		0x0004	/* not buffered */
+
+#define _IOMYBUF	0x0008	/* stdio malloc()'d buffer */
+#define _IOEOF		0x0010	/* EOF reached on read */
+#define _IOERR		0x0020	/* I/O error from system */
+#define _IOSTRG 	0x0040	/* Strange or no file descriptor */
+#ifdef _POSIX_SOURCE
+# define _IOAPPEND	0x0200
+#endif
+
+/* The buffer size as used by setbuf such that it is equivalent to
+ * (void) setvbuf(fileSetBuffer, caBuffer, _IOFBF, BUFSIZ).
+ */
+#define BUFSIZ		   512
+
+/* Constants for nOrigin indicating the position relative to which fseek
+ * sets the file position.  Defined unconditionally since ISO and POSIX
+ * say they are defined here.
+ */
+#define SEEK_SET	     0
+#define SEEK_CUR	     1
+#define SEEK_END	     2
+
+#endif	/* _STDIO_H */
+
+#ifndef RC_INVOKED
+#if ! (defined _STDIO_H && defined _WCHAR_H)
+/* The structure underlying the FILE type; this should be defined when
+ * including either <stdio.h> or <wchar.h>.  If both header include guards
+ * are now in place, then we must currently be including <stdio.h> in its
+ * own right, having already processed this block during a prior partial
+ * inclusion by <wchar.h>; there is no need to process it a second time.
+ *
+ * Some believe that nobody in their right mind should make use of the
+ * internals of this structure. Provided by Pedro A. Aranda Gutiirrez
+ * <paag@tid.es>.
+ */
+typedef struct _iobuf
+{
+  char	*_ptr;
+  int	 _cnt;
+  char	*_base;
+  int	 _flag;
+  int	 _file;
+  int	 _charbuf;
+  int	 _bufsiz;
+  char	*_tmpfname;
+} FILE;
+
+#endif  /* ! (_STDIO_H && _WCHAR_H) */
+#ifdef _STDIO_H
+/* Content to be exposed only when including <stdio.h> in its own right;
+ * these will not be exposed when __WCHAR_H_SOURCE__ is defined, as will
+ * be the case when <stdio.h> is included indirectly, by <wchar.h>
+ *
+ *
+ * The standard file handles
+ */
+#ifndef __DECLSPEC_SUPPORTED
+
+extern FILE (*_imp___iob)[];	/* A pointer to an array of FILE */
+
+#define _iob (*_imp___iob)	/* An array of FILE */
+
+#else /* __DECLSPEC_SUPPORTED */
+
+__MINGW_IMPORT FILE _iob[];	/* An array of FILE imported from DLL. */
+
+#endif /* __DECLSPEC_SUPPORTED */
+
+#define stdin	(&_iob[STDIN_FILENO])
+#define stdout	(&_iob[STDOUT_FILENO])
+#define stderr	(&_iob[STDERR_FILENO])
+
+/* Need to close the current _STDIO_H specific block here...
+ */
+#endif
+/* ...because, we need this regardless of the inclusion mode...
+ */
+_BEGIN_C_DECLS
+
+#ifdef _STDIO_H
+/* ...then revert to _STDIO_H specific mode, to declare...
+ *
+ *
+ * File Operations
+ */
+_CRTIMP __cdecl __MINGW_NOTHROW  FILE * fopen (const char *, const char *);
+_CRTIMP __cdecl __MINGW_NOTHROW  FILE * freopen (const char *, const char *, FILE *);
+_CRTIMP __cdecl __MINGW_NOTHROW  int    fflush (FILE *);
+_CRTIMP __cdecl __MINGW_NOTHROW  int    fclose (FILE *);
+
+/* Note: Microsoft also declares remove & rename (but not their wide char
+ * variants) in <io.h>; since duplicate prototypes are acceptable, provided
+ * they are consistent, we simply declare them here anyway, while allowing
+ * the compiler to check consistency as appropriate.
+ */
+_CRTIMP __cdecl __MINGW_NOTHROW  int    remove (const char *);
+_CRTIMP __cdecl __MINGW_NOTHROW  int    rename (const char *, const char *);
+_CRTIMP __cdecl __MINGW_NOTHROW  FILE * tmpfile (void);
+_CRTIMP __cdecl __MINGW_NOTHROW  char * tmpnam (char *);
+
+#ifndef __STRICT_ANSI__
+_CRTIMP __cdecl __MINGW_NOTHROW  char *_tempnam (const char *, const char *);
+_CRTIMP __cdecl __MINGW_NOTHROW  int   _rmtmp (void);
+_CRTIMP __cdecl __MINGW_NOTHROW  int   _unlink (const char *);
+
+#if __MSVCRT_VERSION__>=__MSVCR80_DLL
+/* The following pair of non-ANSI functions require a non-free version of
+ * the Microsoft runtime; neither is provided by any MSVCRT.DLL variant.
+ */
+_CRTIMP __cdecl __MINGW_NOTHROW  void  _lock_file(FILE *);
+_CRTIMP __cdecl __MINGW_NOTHROW  void  _unlock_file(FILE *);
+#endif
+
+#ifndef NO_OLDNAMES
+_CRTIMP __cdecl __MINGW_NOTHROW  char * tempnam (const char *, const char *);
+_CRTIMP __cdecl __MINGW_NOTHROW  int    rmtmp (void);
+_CRTIMP __cdecl __MINGW_NOTHROW  int    unlink (const char *);
+#endif
+#endif /* __STRICT_ANSI__ */
+
+_CRTIMP __cdecl __MINGW_NOTHROW  int    setvbuf (FILE *, char *, int, size_t);
+_CRTIMP __cdecl __MINGW_NOTHROW  void   setbuf (FILE *, char *);
+
+/* Formatted Output
+ *
+ * MSVCRT implementations are not ANSI C99 conformant...
+ * we offer these conforming alternatives from libmingwex.a
+ */
+#undef  __mingw_stdio_redirect__
+#define __mingw_stdio_redirect__(F) __cdecl __MINGW_NOTHROW __mingw_##F
+
+extern int __mingw_stdio_redirect__(fprintf)(FILE*, const char*, ...);
+extern int __mingw_stdio_redirect__(printf)(const char*, ...);
+extern int __mingw_stdio_redirect__(sprintf)(char*, const char*, ...);
+extern int __mingw_stdio_redirect__(snprintf)(char*, size_t, const char*, ...);
+extern int __mingw_stdio_redirect__(vfprintf)(FILE*, const char*, __VALIST);
+extern int __mingw_stdio_redirect__(vprintf)(const char*, __VALIST);
+extern int __mingw_stdio_redirect__(vsprintf)(char*, const char*, __VALIST);
+extern int __mingw_stdio_redirect__(vsnprintf)(char*, size_t, const char*, __VALIST);
+
+/* When using these C99 conforming alternatives, we may wish to support
+ * some of Microsoft's quirky formatting options, even when they violate
+ * strict C99 conformance.
+ */
+#define _MSVC_PRINTF_QUIRKS		0x0100U
+#define _QUERY_MSVC_PRINTF_QUIRKS	~0U, 0U
+#define _DISABLE_MSVC_PRINTF_QUIRKS	~_MSVC_PRINTF_QUIRKS, 0U
+#define _ENABLE_MSVC_PRINTF_QUIRKS	~0U, _MSVC_PRINTF_QUIRKS
+
+/* Those quirks which conflict with ANSI C99 specified behaviour are
+ * disabled by default; use the following function, like this:
+ *
+ *   _mingw_output_format_control( _ENABLE_MSVC_PRINTF_QUIRKS );
+ *
+ * to enable them, like this:
+ *
+ *   state = _mingw_output_format_control( _QUERY_MSVC_PRINTF_QUIRKS )
+ *		& _MSVC_PRINTF_QUIRKS;
+ *
+ * to ascertain the currently active enabled state, or like this:
+ *
+ *   _mingw_output_format_control( _DISABLE_MSVC_PRINTF_QUIRKS );
+ *
+ * to disable them again.
+ */
+extern unsigned int _mingw_output_format_control( unsigned int, unsigned int );
+
+#if __USE_MINGW_ANSI_STDIO
+/* User has expressed a preference for C99 conformance...
+ */
+# undef __mingw_stdio_redirect__
+# ifdef __cplusplus
+/* For C++ we use inline implementations, to avoid interference
+ * with namespace qualification, which may result from using #defines.
+ */
+#  define __mingw_stdio_redirect__  inline __cdecl __MINGW_NOTHROW
+
+# elif defined __GNUC__
+/* FIXME: Is there any GCC version prerequisite here?
+ *
+ * We also prefer inline implementations for C, when we can be confident
+ * that the GNU specific __inline__ mechanism is supported.
+ */
+#  define __mingw_stdio_redirect__  static __inline__ __cdecl __MINGW_NOTHROW
+
+# else
+/* Can't use inlines; fall back on module local static stubs.
+ */
+#  define __mingw_stdio_redirect__  static __cdecl __MINGW_NOTHROW
+# endif
+
+__mingw_stdio_redirect__
+int fprintf (FILE *__stream, const char *__format, ...)
+{
+  register 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;
+}
+
+__mingw_stdio_redirect__
+int printf (const char *__format, ...)
+{
+  register int __retval;
+  __builtin_va_list __local_argv; __builtin_va_start( __local_argv, __format );
+  __retval = __mingw_vprintf( __format, __local_argv );
+  __builtin_va_end( __local_argv );
+  return __retval;
+}
+
+__mingw_stdio_redirect__
+int sprintf (char *__stream, const char *__format, ...)
+{
+  register 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;
+}
+
+__mingw_stdio_redirect__
+int vfprintf (FILE *__stream, const char *__format, __VALIST __local_argv)
+{
+  return __mingw_vfprintf( __stream, __format, __local_argv );
+}
+
+__mingw_stdio_redirect__
+int vprintf (const char *__format, __VALIST __local_argv)
+{
+  return __mingw_vprintf( __format, __local_argv );
+}
+
+__mingw_stdio_redirect__
+int vsprintf (char *__stream, const char *__format, __VALIST __local_argv)
+{
+  return __mingw_vsprintf( __stream, __format, __local_argv );
+}
+
+#else
+/* Default configuration: simply direct all calls to MSVCRT...
+ */
+_CRTIMP __cdecl __MINGW_NOTHROW  int fprintf (FILE *, const char *, ...);
+_CRTIMP __cdecl __MINGW_NOTHROW  int printf (const char *, ...);
+_CRTIMP __cdecl __MINGW_NOTHROW  int sprintf (char *, const char *, ...);
+_CRTIMP __cdecl __MINGW_NOTHROW  int vfprintf (FILE *, const char *, __VALIST);
+_CRTIMP __cdecl __MINGW_NOTHROW  int vprintf (const char *, __VALIST);
+_CRTIMP __cdecl __MINGW_NOTHROW  int vsprintf (char *, const char *, __VALIST);
+
+#endif
+/* Regardless of user preference, always offer these alternative
+ * entry points, for direct access to the MSVCRT implementations.
+ */
+#undef  __mingw_stdio_redirect__
+#define __mingw_stdio_redirect__(F) __cdecl __MINGW_NOTHROW __msvcrt_##F
+
+_CRTIMP int __mingw_stdio_redirect__(fprintf)(FILE *, const char *, ...);
+_CRTIMP int __mingw_stdio_redirect__(printf)(const char *, ...);
+_CRTIMP int __mingw_stdio_redirect__(sprintf)(char *, const char *, ...);
+_CRTIMP int __mingw_stdio_redirect__(vfprintf)(FILE *, const char *, __VALIST);
+_CRTIMP int __mingw_stdio_redirect__(vprintf)(const char *, __VALIST);
+_CRTIMP int __mingw_stdio_redirect__(vsprintf)(char *, const char *, __VALIST);
+
+#undef  __mingw_stdio_redirect__
+
+/* The following three ALWAYS refer to the MSVCRT implementations...
+ */
+_CRTIMP __cdecl __MINGW_NOTHROW  int _snprintf (char *, size_t, const char *, ...);
+_CRTIMP __cdecl __MINGW_NOTHROW  int _vsnprintf (char *, size_t, const char *, __VALIST);
+_CRTIMP __cdecl __MINGW_NOTHROW  int _vscprintf (const char *, __VALIST);
+
+#ifdef _ISOC99_SOURCE
+/* Microsoft does not provide implementations for the following,
+ * which are required by C99.  Note in particular that Microsoft's
+ * corresponding implementations of _snprintf() and _vsnprintf() are
+ * NOT compatible with C99, but the following are; if you want the
+ * MSVCRT behaviour, you MUST use the Microsoft "uglified" names.
+ */
+__cdecl __MINGW_NOTHROW  int snprintf (char *, size_t, const char *, ...);
+__cdecl __MINGW_NOTHROW  int vsnprintf (char *, size_t, const char *, __VALIST);
+
+__cdecl __MINGW_NOTHROW  int vscanf (const char * __restrict__, __VALIST);
+
+__cdecl __MINGW_NOTHROW
+int vfscanf (FILE * __restrict__, const char * __restrict__, __VALIST);
+
+__cdecl __MINGW_NOTHROW
+int vsscanf (const char * __restrict__, const char * __restrict__, __VALIST);
+
+#endif  /* _ISOC99_SOURCE */
+#endif	/* <stdio.h> included in its own right */
+
+#if __MSVCRT_VERSION__ >= __MSVCR80_DLL || _WIN32_WINNT >= _WIN32_WINNT_VISTA
+/*
+ * In MSVCR80.DLL, (and its descendants), Microsoft introduced variants
+ * of the printf() functions, with names qualified by an underscore prefix
+ * and "_p" or "_p_l" suffixes; implemented in Microsoft's typically crass,
+ * non-standard, and non-portable fashion, these provide support for access
+ * to printf() arguments in random order, as was standardised by POSIX as a
+ * feature of the optional Extended Systems Interface (XSI) specification,
+ * and is now required for conformity with the POSIX.1-2008 base standard.
+ * Although these additional Microsoft functions were subsequently added
+ * to MSVCRT.DLL, from Windows-Vista onward, and they are prototyped here,
+ * MinGW applications are strenuously encouraged to avoid using them; a
+ * much better alternative is to "#define _XOPEN_SOURCE 700" before any
+ * system header is included, then use POSIX standard printf() functions
+ * instead; this is both portable to many non-Windows platforms, and it
+ * offers better compatibility with earlier Windows versions.
+ */
+#ifndef __have_typedef_locale_t
+/* Note that some of the following require the opaque locale_t data type,
+ * which we may obtain, by selective inclusion, from <locale.h>
+ */
+#define __need_locale_t
+#include <locale.h>
+#endif
+
+#ifdef _STDIO_H
+/* The following are to be declared only when <stdio.h> is explicitly
+ * included; the first six are NOT dependent on locale_t...
+ */
+_CRTIMP __cdecl __MINGW_NOTHROW
+int _printf_p (const char *, ...);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+int _fprintf_p (FILE *, const char *, ...);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+int _sprintf_p (char *, size_t, const char *, ...);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+int _vprintf_p (const char *, __VALIST);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+int _vfprintf_p (FILE *, const char *, __VALIST);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+int _vsprintf_p (char *, size_t, const char *, __VALIST);
+
+/* ...whereas the following six DO depend on locale_t.
+ *
+ * CAVEAT: unless you are linking with non-free MSVCR80.DLL, or one
+ * of its later derivatives, good luck trying to use these; see the
+ * explanation in <locale.t>, as to why you may be unable to create,
+ * or otherwise acquire a reference to, a locale_t object.
+ */
+_CRTIMP __cdecl __MINGW_NOTHROW
+int _printf_p_l (const char *, locale_t, ...);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+int _fprintf_p_l (FILE *, const char *, locale_t, ...);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+int _sprintf_p_l (char *, size_t, const char *, locale_t, ...);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+int _vprintf_p_l (const char *, locale_t, __VALIST);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+int _vfprintf_p_l (FILE *, const char *, locale_t, __VALIST);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+int _vsprintf_p_l (char *, size_t, const char *, locale_t, __VALIST);
+
+#endif	/* <stdio.h> included in its own right */
+#endif	/* MSVCR80.DLL and descendants, or MSVCRT.DLL since Vista */
+
+#if ! (defined _STDIO_H && defined _WCHAR_H)
+#if __MSVCRT_VERSION__ >= __MSVCR80_DLL || _WIN32_WINNT >= _WIN32_WINNT_VISTA
+/*
+ * Wide character variants of the foregoing "positional parameter" printf()
+ * functions; MSDN says that these should be declared when either <stdio.h>, or
+ * <wchar.h> is included, so we make them selectively available to <wchar.h>,
+ * but, just as in the foregoing, we advise against their use.
+ */
+_CRTIMP __cdecl __MINGW_NOTHROW
+int _wprintf_p (const wchar_t *, ...);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+int _fwprintf_p (FILE *, const wchar_t *, ...);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+int _swprintf_p (wchar_t *, size_t, const wchar_t *, ...);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+int _vwprintf_p (const wchar_t *, __VALIST);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+int _vfwprintf_p (FILE *, const wchar_t *, __VALIST);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+int _vswprintf_p (wchar_t *, size_t, const wchar_t *, __VALIST);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+int _wprintf_p_l (const wchar_t *, locale_t, ...);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+int _fwprintf_p_l (FILE *, const wchar_t *, locale_t, ...);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+int _swprintf_p_l (wchar_t *, size_t, const wchar_t *, locale_t, ...);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+int _vwprintf_p_l (const wchar_t *, locale_t, __VALIST);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+int _vfwprintf_p_l (FILE *, const wchar_t *, locale_t, __VALIST);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+int _vswprintf_p_l (wchar_t *, size_t, const wchar_t *, locale_t, __VALIST);
+
+#endif	/* MSVCR80.DLL and descendants, or MSVCRT.DLL since Vista */
+#endif	/* ! (defined _STDIO_H && defined _WCHAR_H) */
+#ifdef _STDIO_H
+/* Once again, back to <stdio.h> specific declarations.
+ *
+ *
+ * Formatted Input
+ */
+_CRTIMP __cdecl __MINGW_NOTHROW  int    fscanf (FILE *, const char *, ...);
+_CRTIMP __cdecl __MINGW_NOTHROW  int    scanf (const char *, ...);
+_CRTIMP __cdecl __MINGW_NOTHROW  int    sscanf (const char *, const char *, ...);
+
+/* Character Input and Output Functions
+ */
+_CRTIMP __cdecl __MINGW_NOTHROW  int    fgetc (FILE *);
+_CRTIMP __cdecl __MINGW_NOTHROW  char * fgets (char *, int, FILE *);
+_CRTIMP __cdecl __MINGW_NOTHROW  int    fputc (int, FILE *);
+_CRTIMP __cdecl __MINGW_NOTHROW  int    fputs (const char *, FILE *);
+_CRTIMP __cdecl __MINGW_NOTHROW  char * gets (char *);
+_CRTIMP __cdecl __MINGW_NOTHROW  int    puts (const char *);
+_CRTIMP __cdecl __MINGW_NOTHROW  int    ungetc (int, FILE *);
+
+/* Traditionally, getc and putc are defined as macros. but the
+ * standard doesn't say that they must be macros.  We use inline
+ * functions here to allow the fast versions to be used in C++
+ * with namespace qualification, eg., ::getc.
+ *
+ * NOTE: _filbuf and _flsbuf  are not thread-safe.
+ */
+_CRTIMP __cdecl __MINGW_NOTHROW  int   _filbuf (FILE *);
+_CRTIMP __cdecl __MINGW_NOTHROW  int   _flsbuf (int, FILE *);
+
+#if !defined _MT
+
+__CRT_INLINE __cdecl __MINGW_NOTHROW  int getc (FILE *);
+__CRT_INLINE __cdecl __MINGW_NOTHROW  int getc (FILE * __F)
+{
+  return (--__F->_cnt >= 0)
+    ?  (int) (unsigned char) *__F->_ptr++
+    : _filbuf (__F);
+}
+
+__CRT_INLINE __cdecl __MINGW_NOTHROW  int putc (int, FILE *);
+__CRT_INLINE __cdecl __MINGW_NOTHROW  int putc (int __c, FILE * __F)
+{
+  return (--__F->_cnt >= 0)
+    ?  (int) (unsigned char) (*__F->_ptr++ = (char)__c)
+    :  _flsbuf (__c, __F);
+}
+
+__CRT_INLINE __cdecl __MINGW_NOTHROW  int getchar (void);
+__CRT_INLINE __cdecl __MINGW_NOTHROW  int getchar (void)
+{
+  return (--stdin->_cnt >= 0)
+    ?  (int) (unsigned char) *stdin->_ptr++
+    : _filbuf (stdin);
+}
+
+__CRT_INLINE __cdecl __MINGW_NOTHROW  int putchar(int);
+__CRT_INLINE __cdecl __MINGW_NOTHROW  int putchar(int __c)
+{
+  return (--stdout->_cnt >= 0)
+    ?  (int) (unsigned char) (*stdout->_ptr++ = (char)__c)
+    :  _flsbuf (__c, stdout);}
+
+#else  /* Use library functions.  */
+
+_CRTIMP __cdecl __MINGW_NOTHROW  int    getc (FILE *);
+_CRTIMP __cdecl __MINGW_NOTHROW  int    putc (int, FILE *);
+_CRTIMP __cdecl __MINGW_NOTHROW  int    getchar (void);
+_CRTIMP __cdecl __MINGW_NOTHROW  int    putchar (int);
+
+#endif
+
+/* Direct Input and Output Functions
+ */
+_CRTIMP __cdecl __MINGW_NOTHROW  size_t fread (void *, size_t, size_t, FILE *);
+_CRTIMP __cdecl __MINGW_NOTHROW  size_t fwrite (const void *, size_t, size_t, FILE *);
+
+/* File Positioning Functions
+ */
+_CRTIMP __cdecl __MINGW_NOTHROW  int    fseek (FILE *, long, int);
+_CRTIMP __cdecl __MINGW_NOTHROW  long   ftell (FILE *);
+_CRTIMP __cdecl __MINGW_NOTHROW  void   rewind (FILE *);
+
+#if _WIN32_WINNT >= _WIN32_WINNT_VISTA || __MSVCRT_VERSION__ >= __MSVCR80_DLL
+ /*
+  * Microsoft introduced a number of variations on fseek() and ftell(),
+  * beginning with MSVCR80.DLL; the bare _fseeki64() and _ftelli64() were
+  * subsequently integrated into MSVCRT.DLL, from Vista onward...
+  */
+_CRTIMP __cdecl __MINGW_NOTHROW  int    _fseeki64 (FILE *, __int64, int);
+_CRTIMP __cdecl __MINGW_NOTHROW __int64 _ftelli64 (FILE *);
+
+#if __MSVCRT_VERSION__ >= __MSVCR80_DLL
+ /*
+  * ...while the "nolock" variants remain exclusive to MSVCR80.DLL, and
+  * its later MSVC specific derivatives.
+  */
+_CRTIMP __cdecl __MINGW_NOTHROW  int    _fseek_nolock (FILE *, long, int);
+_CRTIMP __cdecl __MINGW_NOTHROW  long   _ftell_nolock (FILE *);
+
+_CRTIMP __cdecl __MINGW_NOTHROW  int    _fseeki64_nolock (FILE *, __int64, int);
+_CRTIMP __cdecl __MINGW_NOTHROW __int64 _ftelli64_nolock (FILE *);
+
+#endif  /* MSVCR80.DLL and later derivatives ONLY */
+#endif  /* MSVCR80.DLL and descendants, or MSVCRT.DLL since Vista */
+
+#ifdef __USE_MINGW_FSEEK
+/* Workaround for a limitation on Win9x where a file is not zero padded
+ * on write, following a seek beyond the original end of file; these are
+ * implemented in libmingwex.a
+ */
+__cdecl __MINGW_NOTHROW  int    __mingw_fseek (FILE *, long, int);
+__cdecl __MINGW_NOTHROW  size_t __mingw_fwrite (const void *, size_t, size_t, FILE *);
+
+#define fwrite(buffer, size, count, fp)  __mingw_fwrite(buffer, size, count, fp)
+#define fseek(fp, offset, whence)        __mingw_fseek(fp, offset, whence)
+#endif /* __USE_MINGW_FSEEK */
+
+/* An opaque data type used for storing file positions... The contents of
+ * this type are unknown, but we (the compiler) need to know the size
+ * because the programmer using fgetpos and fsetpos will be setting aside
+ * storage for fpos_t structres. Actually I tested using a byte array and
+ * it is fairly evident that the fpos_t type is a long (in CRTDLL.DLL).
+ * Perhaps an unsigned long? TODO? It's definitely a 64-bit number in
+ * MSVCRT however, and for now `long long' will do.
+ */
+#ifdef __MSVCRT__
+typedef long long  fpos_t;
+#else
+typedef long       fpos_t;
+#endif
+
+_CRTIMP __cdecl __MINGW_NOTHROW  int fgetpos (FILE *, fpos_t *);
+_CRTIMP __cdecl __MINGW_NOTHROW  int fsetpos (FILE *, const fpos_t *);
+
+/* Error Functions
+ */
+_CRTIMP __cdecl __MINGW_NOTHROW  int feof (FILE *);
+_CRTIMP __cdecl __MINGW_NOTHROW  int ferror (FILE *);
+
+#ifdef __cplusplus
+inline __cdecl __MINGW_NOTHROW  int feof (FILE * __F){ return __F->_flag & _IOEOF; }
+inline __cdecl __MINGW_NOTHROW  int ferror (FILE * __F){ return __F->_flag & _IOERR; }
+#else
+#define feof(__F)     ((__F)->_flag & _IOEOF)
+#define ferror(__F)   ((__F)->_flag & _IOERR)
+#endif
+
+_CRTIMP __cdecl __MINGW_NOTHROW  void clearerr (FILE *);
+_CRTIMP __cdecl __MINGW_NOTHROW  void perror (const char *);
+
+
+#ifndef __STRICT_ANSI__
+/*
+ * Pipes
+ */
+_CRTIMP __cdecl __MINGW_NOTHROW  FILE * _popen (const char *, const char *);
+_CRTIMP __cdecl __MINGW_NOTHROW  int    _pclose (FILE *);
+
+#ifndef NO_OLDNAMES
+_CRTIMP __cdecl __MINGW_NOTHROW  FILE *  popen (const char *, const char *);
+_CRTIMP __cdecl __MINGW_NOTHROW  int     pclose (FILE *);
+#endif
+
+/* Other Non ANSI functions
+ */
+_CRTIMP __cdecl __MINGW_NOTHROW  int    _flushall (void);
+_CRTIMP __cdecl __MINGW_NOTHROW  int    _fgetchar (void);
+_CRTIMP __cdecl __MINGW_NOTHROW  int    _fputchar (int);
+_CRTIMP __cdecl __MINGW_NOTHROW  FILE * _fdopen (int, const char *);
+_CRTIMP __cdecl __MINGW_NOTHROW  int    _fileno (FILE *);
+_CRTIMP __cdecl __MINGW_NOTHROW  int    _fcloseall (void);
+_CRTIMP __cdecl __MINGW_NOTHROW  FILE * _fsopen (const char *, const char *, int);
+#ifdef __MSVCRT__
+_CRTIMP __cdecl __MINGW_NOTHROW  int    _getmaxstdio (void);
+_CRTIMP __cdecl __MINGW_NOTHROW  int    _setmaxstdio (int);
+#endif
+
+/* Microsoft introduced a capability in MSVCR80.DLL and later, to
+ * set the minimum number of digits to be displayed in a printf()
+ * floating point exponent; they retro-fitted this in MSVCRT.DLL,
+ * from Windows-Vista onwards, but we provide our own wrappers in
+ * libmingwex.a, which make it possible for us to emulate the API
+ * for any version of MSVCRT.DLL (including WinXP and earlier).
+ */
+#define _TWO_DIGIT_EXPONENT    1
+
+/* While Microsoft define the preceding manifest constant, they
+ * appear to neglect to define its complement, (for restoration
+ * of their default exponent display format); for orthogonality,
+ * we will provide this regardless of Microsoft's negligence.
+ */
+#define _THREE_DIGIT_EXPONENT  0
+
+/* Once again, unspecified by Microsoft, (and mostly redundant),
+ * it is convenient to specify a combining mask for these.
+ */
+#define _EXPONENT_DIGIT_MASK  (_TWO_DIGIT_EXPONENT | _THREE_DIGIT_EXPONENT)
+
+unsigned int __cdecl __mingw_get_output_format (void);
+unsigned int __cdecl __mingw_set_output_format (unsigned int);
+
+/* Also appearing for the first time in MSVCR80.DLL, and then also
+ * retro-fitted to MSVCRT.DLL from Windows-Vista onwards, was this
+ * pair of functions to control availability of "%n" formatting in
+ * the MSVCRT.DLL printf() family of functions, for which we also
+ * provide our own DLL version agnostic wrappers:
+ */
+int __cdecl __mingw_get_printf_count_output (void);
+int __cdecl __mingw_set_printf_count_output (int);
+
+#if __MSVCRT_VERSION__ >= __MSVCR80_DLL
+/* When the user declares that MSVCR80.DLL features are supported,
+ * we simply expose the corresponding APIs...
+ */
+_CRTIMP unsigned int __cdecl __MINGW_NOTHROW _get_output_format (void);
+_CRTIMP unsigned int __cdecl __MINGW_NOTHROW _set_output_format (unsigned int);
+
+_CRTIMP __cdecl __MINGW_NOTHROW  int _get_printf_count_output (void);
+_CRTIMP __cdecl __MINGW_NOTHROW  int _set_printf_count_output (int);
+
+#else
+/* ...otherwise, we emulate the APIs, in a DLL version agnostic
+ * manner, using our own implementation wrappers.
+ */
+__CRT_ALIAS unsigned int __cdecl _get_output_format (void)
+{ return __mingw_get_output_format (); }
+
+__CRT_ALIAS unsigned int __cdecl _set_output_format (unsigned int __style)
+{ return __mingw_set_output_format (__style); }
+
+/* When using our own printf() implementation, "%n" format is ALWAYS
+ * supported, so we make this API a no-op, reporting it to be so; for
+ * the alternative case, when using MSVCRT.DLL's printf(), we delegate
+ * to our wrapper API implementation, which will invoke the API function
+ * calls within the DLL, if they are available, or persistently report
+ * the state of "%n" formatting as DISABLED if they are not.
+ */
+#if __USE_MINGW_ANSI_STDIO
+/* Note that __USE_MINGW_ANSI_STDIO is not guaranteed to resolve to any
+ * symbol which will represent a compilable logic state; map it to this
+ * alternative which will, for the true state...
+ */
+# define __USE_MINGW_PRINTF  1
+#else
+/* ...and for the false.
+ */
+# define __USE_MINGW_PRINTF  0
+#endif
+
+__CRT_ALIAS int __cdecl _get_printf_count_output (void)
+{ return __USE_MINGW_PRINTF ? 1 : __mingw_get_printf_count_output (); }
+
+__CRT_ALIAS int __cdecl _set_printf_count_output (int __mode)
+{ return __USE_MINGW_PRINTF ? 1 : __mingw_set_printf_count_output (__mode); }
+#endif
+
+#ifndef _NO_OLDNAMES
+_CRTIMP __cdecl __MINGW_NOTHROW  int    fgetchar (void);
+_CRTIMP __cdecl __MINGW_NOTHROW  int    fputchar (int);
+_CRTIMP __cdecl __MINGW_NOTHROW  FILE * fdopen (int, const char *);
+_CRTIMP __cdecl __MINGW_NOTHROW  int    fileno (FILE *);
+#endif	/* !_NO_OLDNAMES */
+
+#define _fileno(__F) ((__F)->_file)
+#ifndef _NO_OLDNAMES
+#define fileno(__F) ((__F)->_file)
+#endif
+
+#if defined (__MSVCRT__) && ! defined (__NO_MINGW_LFS)
+__CRT_ALIAS FILE * __cdecl __MINGW_NOTHROW  fopen64 (const char *, const char *);
+__CRT_ALIAS __JMPSTUB__(( FUNCTION = fopen64, REMAPPED = fopen ))
+FILE * __cdecl __MINGW_NOTHROW  fopen64 (const char * filename, const char * mode)
+{ return fopen (filename, mode); }
+
+int __cdecl __MINGW_NOTHROW  fseeko64 (FILE *, __off64_t, int);
+
+#ifdef __USE_MINGW_FSEEK
+int __cdecl __MINGW_NOTHROW __mingw_fseeko64 (FILE *, __off64_t, int);
+#define fseeko64(fp, offset, whence)  __mingw_fseeko64(fp, offset, whence)
+#endif
+
+__CRT_ALIAS __off64_t __cdecl __MINGW_NOTHROW ftello64 (FILE *);
+__CRT_ALIAS __LIBIMPL__(( FUNCTION = ftello64 ))
+__off64_t __cdecl __MINGW_NOTHROW ftello64 (FILE * stream)
+{ fpos_t __pos; return (fgetpos(stream, &__pos)) ? -1LL : (__off64_t)(__pos); }
+
+#endif	/* __MSVCRT__ && !__NO_MINGW_LFS */
+#endif	/* !__STRICT_ANSI__ */
+#endif	/* _STDIO_H */
+
+#if ! (defined _STDIO_H && defined _WCHAR_H)
+/* The following are declared when including either <stdio.h> or <wchar.h>.
+ * If both header include guards are now in place, then we must currently be
+ * including <stdio.h> in its own right, having already processed this block
+ * during prior partial inclusion by <wchar.h>; there is no need to process
+ * it a second time.
+ */
+_CRTIMP __cdecl __MINGW_NOTHROW  int     fwprintf (FILE *, const wchar_t *, ...);
+_CRTIMP __cdecl __MINGW_NOTHROW  int     wprintf (const wchar_t *, ...);
+_CRTIMP __cdecl __MINGW_NOTHROW  int     vfwprintf (FILE *, const wchar_t *, __VALIST);
+_CRTIMP __cdecl __MINGW_NOTHROW  int     vwprintf (const wchar_t *, __VALIST);
+_CRTIMP __cdecl __MINGW_NOTHROW  int    _snwprintf (wchar_t *, size_t, const wchar_t *, ...);
+_CRTIMP __cdecl __MINGW_NOTHROW  int    _vscwprintf (const wchar_t *, __VALIST);
+_CRTIMP __cdecl __MINGW_NOTHROW  int    _vsnwprintf (wchar_t *, size_t, const wchar_t *, __VALIST);
+_CRTIMP __cdecl __MINGW_NOTHROW  int     fwscanf (FILE *, const wchar_t *, ...);
+_CRTIMP __cdecl __MINGW_NOTHROW  int     wscanf (const wchar_t *, ...);
+_CRTIMP __cdecl __MINGW_NOTHROW  int     swscanf (const wchar_t *, const wchar_t *, ...);
+_CRTIMP __cdecl __MINGW_NOTHROW  wint_t  fgetwc (FILE *);
+_CRTIMP __cdecl __MINGW_NOTHROW  wint_t  fputwc (wchar_t, FILE *);
+_CRTIMP __cdecl __MINGW_NOTHROW  wint_t  ungetwc (wchar_t, FILE *);
+
+#ifndef __STRICT_ANSI__
+/* These differ from the ISO C prototypes, which have a maxlen parameter (like snprintf).
+ */
+_CRTIMP __cdecl __MINGW_NOTHROW  int  swprintf (wchar_t *, const wchar_t *, ...);
+_CRTIMP __cdecl __MINGW_NOTHROW  int  vswprintf (wchar_t *, const wchar_t *, __VALIST);
+#endif
+
+#ifdef __MSVCRT__
+_CRTIMP __cdecl __MINGW_NOTHROW  wchar_t * fgetws (wchar_t *, int, FILE *);
+_CRTIMP __cdecl __MINGW_NOTHROW  int       fputws (const wchar_t *, FILE *);
+_CRTIMP __cdecl __MINGW_NOTHROW  wint_t    getwc (FILE *);
+_CRTIMP __cdecl __MINGW_NOTHROW  wint_t    getwchar (void);
+_CRTIMP __cdecl __MINGW_NOTHROW  wint_t    putwc (wint_t, FILE *);
+_CRTIMP __cdecl __MINGW_NOTHROW  wint_t    putwchar (wint_t);
+
+#ifndef __STRICT_ANSI__
+_CRTIMP __cdecl __MINGW_NOTHROW  wchar_t * _getws (wchar_t *);
+_CRTIMP __cdecl __MINGW_NOTHROW  int       _putws (const wchar_t *);
+_CRTIMP __cdecl __MINGW_NOTHROW  FILE    * _wfdopen(int, const wchar_t *);
+_CRTIMP __cdecl __MINGW_NOTHROW  FILE    * _wfopen (const wchar_t *, const wchar_t *);
+_CRTIMP __cdecl __MINGW_NOTHROW  FILE    * _wfreopen (const wchar_t *, const wchar_t *, FILE *);
+_CRTIMP __cdecl __MINGW_NOTHROW  FILE    * _wfsopen (const wchar_t *, const wchar_t *, int);
+_CRTIMP __cdecl __MINGW_NOTHROW  wchar_t * _wtmpnam (wchar_t *);
+_CRTIMP __cdecl __MINGW_NOTHROW  wchar_t * _wtempnam (const wchar_t *, const wchar_t *);
+_CRTIMP __cdecl __MINGW_NOTHROW  int       _wrename (const wchar_t *, const wchar_t *);
+_CRTIMP __cdecl __MINGW_NOTHROW  int       _wremove (const wchar_t *);
+_CRTIMP __cdecl __MINGW_NOTHROW  void      _wperror (const wchar_t *);
+_CRTIMP __cdecl __MINGW_NOTHROW  FILE    * _wpopen (const wchar_t *, const wchar_t *);
+
+#endif  /* !__STRICT_ANSI__ */
+#endif	/* __MSVCRT__ */
+
+#ifdef _ISOC99_SOURCE
+__cdecl __MINGW_NOTHROW  int snwprintf (wchar_t *, size_t, const wchar_t *, ...);
+__cdecl __MINGW_NOTHROW  int vsnwprintf (wchar_t *, size_t, const wchar_t *, __VALIST);
+
+#ifndef __NO_INLINE__
+__CRT_INLINE __cdecl __MINGW_NOTHROW
+__JMPSTUB__(( FUNCTION = vsnwprintf, REMAPPED = _vsnwprintf ))
+int vsnwprintf (wchar_t *__s, size_t __n, const wchar_t *__fmt, __VALIST __arg)
+{ return _vsnwprintf ( __s, __n, __fmt, __arg); }
+#endif
+
+__cdecl __MINGW_NOTHROW  int  vwscanf (const wchar_t *__restrict__, __VALIST);
+__cdecl __MINGW_NOTHROW
+int  vfwscanf (FILE *__restrict__, const wchar_t *__restrict__, __VALIST);
+__cdecl __MINGW_NOTHROW
+int  vswscanf (const wchar_t *__restrict__, const wchar_t * __restrict__, __VALIST);
+
+#endif  /* _ISOC99_SOURCE */
+#endif  /* ! (_STDIO_H && _WCHAR_H) */
+
+#if defined _STDIO_H && ! defined __STRICT_ANSI__
+#if defined __MSVCRT__ && ! defined _NO_OLDNAMES
+_CRTIMP __cdecl __MINGW_NOTHROW  FILE * wpopen (const wchar_t *, const wchar_t *);
+#endif
+
+/* Other non-ANSI wide character functions...
+ */
+_CRTIMP __cdecl __MINGW_NOTHROW  wint_t _fgetwchar (void);
+_CRTIMP __cdecl __MINGW_NOTHROW  wint_t _fputwchar (wint_t);
+_CRTIMP __cdecl __MINGW_NOTHROW  int    _getw (FILE *);
+_CRTIMP __cdecl __MINGW_NOTHROW  int    _putw (int, FILE *);
+
+#ifndef _NO_OLDNAMES
+/* ...and their original names, before Microsoft uglification...
+ */
+_CRTIMP __cdecl __MINGW_NOTHROW  wint_t  fgetwchar (void);
+_CRTIMP __cdecl __MINGW_NOTHROW  wint_t  fputwchar (wint_t);
+_CRTIMP __cdecl __MINGW_NOTHROW  int     getw (FILE *);
+_CRTIMP __cdecl __MINGW_NOTHROW  int     putw (int, FILE *);
+
+#endif  /* !_NO_OLDNAMES */
+#endif  /* !__STRICT_ANSI__ */
+
+_END_C_DECLS
+
+#endif	/* ! RC_INVOKED */
+#endif  /* !_STDIO_H: $RCSfile: stdio.h,v $: end of file */
Index: Daodan/MinGW/include/stdlib.h
===================================================================
--- Daodan/MinGW/include/stdlib.h	(revision 1046)
+++ Daodan/MinGW/include/stdlib.h	(revision 1046)
@@ -0,0 +1,819 @@
+/*
+ * stdlib.h
+ *
+ * ANSI/POSIX + Microsoft compatible standard library function prototypes,
+ * associated macros, and manifest constant definitions.
+ *
+ * $Id: stdlib.h,v 0e4f78dbc1ba 2016/06/17 14:16:01 keithmarshall $
+ *
+ * Written by Colin Peters <colin@bird.fu.is.saga-u.ac.jp>
+ * Copyright (C) 1997-2009, 2011, 2014-2016, MinGW.org Project.
+ *
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice, this permission notice, and the following
+ * disclaimer shall be included in all copies or substantial portions of
+ * the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OF OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ *
+ */
+#ifndef _STDLIB_H
+#pragma GCC system_header
+
+/* Some of the content of this header is made selectively accessible,
+ * when indirectly included via <wchar.h>; only when we have established
+ * that this inclusion is NOT via this selective method...
+ */
+#ifndef __WCHAR_H_SOURCED__
+ /* ...do we define the repeat inclusion guard for <stdlib.h> itself.
+  */
+#define _STDLIB_H
+
+/* All MinGW headers must include <_mingw.h>; if included via <wchar.h>,
+ * we assume that this has been done already, otherwise we must attend to
+ * it for <stdlib.h>.
+ */
+#include <_mingw.h>
+
+#ifndef RC_INVOKED
+#define __need_size_t
+#define __need_wchar_t
+#define __need_NULL
+#include <stddef.h>
+#endif /* RC_INVOKED */
+
+/* RAND_MAX is the maximum value that may be returned by rand.
+ * The minimum is zero.
+ */
+#define RAND_MAX	0x7FFF
+
+/* These values may be used as exit status codes.
+ */
+#define EXIT_SUCCESS	0
+#define EXIT_FAILURE	1
+
+/* Definitions for path name functions.
+ * NOTE: All of these values have simply been chosen to be conservatively
+ * high.  Remember that with long file names we can no longer depend on
+ * extensions being short.
+ */
+#ifndef __STRICT_ANSI__
+
+#ifndef MAX_PATH
+#define MAX_PATH	(260)
+#endif
+
+#define _MAX_PATH	MAX_PATH
+#define _MAX_DRIVE	(3)
+#define _MAX_DIR	256
+#define _MAX_FNAME	256
+#define _MAX_EXT	256
+
+#endif	/* !__STRICT_ANSI__ */
+#endif	/* !__WCHAR_H_SOURCED__ */
+
+#ifndef RC_INVOKED
+
+_BEGIN_C_DECLS
+
+#ifdef _STDLIB_H
+#if ! defined __STRICT_ANSI__
+/* This seems like a convenient place to declare these variables, which
+ * give programs using WinMain (or main for that matter) access to main-ish
+ * argc and argv. environ is a pointer to a table of environment variables.
+ * NOTE: Strings in _argv and environ are ANSI strings.
+ */
+extern int     _argc;
+extern char  **_argv;
+
+#ifdef __MSVCRT__
+/* Imports from the runtime DLL, for the above variables.
+ */
+extern __cdecl __MINGW_NOTHROW  int       *__p___argc(void);
+extern __cdecl __MINGW_NOTHROW  char    ***__p___argv(void);
+extern __cdecl __MINGW_NOTHROW  wchar_t ***__p___wargv(void);
+
+#define __argc (*__p___argc())
+#define __argv (*__p___argv())
+#define __wargv (*__p___wargv())
+
+#else  /* ! __MSVCRT__ */
+
+#ifndef __DECLSPEC_SUPPORTED
+
+extern int    *_imp____argc_dll;
+extern char ***_imp____argv_dll;
+
+#define __argc (*_imp____argc_dll)
+#define __argv (*_imp____argv_dll)
+
+#else  /* __DECLSPEC_SUPPORTED */
+
+__MINGW_IMPORT int    __argc_dll;
+__MINGW_IMPORT char **__argv_dll;
+
+#define __argc __argc_dll
+#define __argv __argv_dll
+
+#endif  /* __DECLSPEC_SUPPORTED */
+
+#endif  /* __MSVCRT__ */
+#endif  /* __STRICT_ANSI__ */
+
+#ifndef MB_CUR_MAX
+/* FIXME: also defined in <ctype.h>; should be factored out.
+ */
+#ifdef __DECLSPEC_SUPPORTED
+# ifdef __MSVCRT__
+#  define MB_CUR_MAX __mb_cur_max
+   __MINGW_IMPORT int __mb_cur_max;
+# else  /* ! __MSVCRT__ */
+#  define MB_CUR_MAX __mb_cur_max_dll
+   __MINGW_IMPORT int __mb_cur_max_dll;
+# endif  /* ! __MSVCRT__ */
+
+#else  /* ! __DECLSPEC_SUPPORTED */
+# ifdef __MSVCRT__
+   extern int* _imp____mb_cur_max;
+#  define MB_CUR_MAX (*_imp____mb_cur_max)
+# else  /* ! __MSVCRT__ */
+   extern int*  _imp____mb_cur_max_dll;
+#  define MB_CUR_MAX (*_imp____mb_cur_max_dll)
+# endif  /* ! __MSVCRT__ */
+#endif  /*  __DECLSPEC_SUPPORTED */
+#endif  /* MB_CUR_MAX */
+
+/* FIXME: Nominally in <errno.h>, Microsoft likes to declare errno
+ * in <stdlib.h> as well; we should factor this out.
+ */
+#ifdef _UWIN
+# undef errno
+  extern int errno;
+#else
+_CRTIMP __cdecl __MINGW_NOTHROW  int *_errno(void);
+# define errno  (*_errno())
+#endif
+_CRTIMP __cdecl __MINGW_NOTHROW  int *__doserrno(void);
+#define _doserrno  (*__doserrno())
+
+#if !defined (__STRICT_ANSI__)
+/* Use environ from the DLL, not as a global.
+ */
+#ifdef __MSVCRT__
+# define _environ  (*__p__environ())
+extern _CRTIMP __cdecl __MINGW_NOTHROW  char ***__p__environ(void);
+# define _wenviron  (*__p__wenviron())
+extern _CRTIMP __cdecl __MINGW_NOTHROW  wchar_t ***__p__wenviron(void);
+
+#else  /* ! __MSVCRT__ */
+# ifndef __DECLSPEC_SUPPORTED
+# define _environ (*_imp___environ_dll)
+extern char ***_imp___environ_dll;
+
+# else  /* __DECLSPEC_SUPPORTED */
+# define _environ  _environ_dll
+__MINGW_IMPORT char ** _environ_dll;
+# endif  /* __DECLSPEC_SUPPORTED */
+#endif  /* ! __MSVCRT__ */
+
+#define environ _environ
+
+#ifdef	__MSVCRT__
+/* One of the MSVCRTxx libraries */
+
+#ifndef __DECLSPEC_SUPPORTED
+# define sys_nerr  (*_imp___sys_nerr)
+extern int *_imp___sys_nerr;
+
+#else /* __DECLSPEC_SUPPORTED */
+__MINGW_IMPORT int _sys_nerr;
+
+# ifndef _UWIN
+# define sys_nerr  _sys_nerr
+# endif  /* _UWIN */
+#endif  /* __DECLSPEC_SUPPORTED */
+
+#else  /* ! __MSVCRT__ */
+/* CRTDLL run time library */
+
+#ifndef __DECLSPEC_SUPPORTED
+  extern int*	_imp___sys_nerr_dll;
+# define sys_nerr	(*_imp___sys_nerr_dll)
+#else  /* __DECLSPEC_SUPPORTED */
+  __MINGW_IMPORT int	_sys_nerr_dll;
+# define sys_nerr	_sys_nerr_dll
+#endif  /* __DECLSPEC_SUPPORTED */
+
+#endif  /* ! __MSVCRT__ */
+
+#ifndef __DECLSPEC_SUPPORTED
+#define sys_errlist  (*_imp___sys_errlist)
+extern char ***_imp__sys_errlist;
+
+#else  /* __DECLSPEC_SUPPORTED */
+__MINGW_IMPORT char *_sys_errlist[];
+
+#ifndef _UWIN
+#define sys_errlist  _sys_errlist
+#endif  /* _UWIN */
+#endif  /* __DECLSPEC_SUPPORTED */
+
+/* OS version and such constants.
+ */
+#ifdef	__MSVCRT__ /* MSVCRT.DLL and MSVCRxx.DLL variants */
+
+extern _CRTIMP __cdecl __MINGW_NOTHROW  unsigned int *__p__osver(void);
+extern _CRTIMP __cdecl __MINGW_NOTHROW  unsigned int *__p__winver(void);
+extern _CRTIMP __cdecl __MINGW_NOTHROW  unsigned int *__p__winmajor(void);
+extern _CRTIMP __cdecl __MINGW_NOTHROW  unsigned int *__p__winminor(void);
+
+#ifndef __DECLSPEC_SUPPORTED
+# define _osver     (*__p__osver())
+# define _winver    (*__p__winver())
+# define _winmajor  (*__p__winmajor())
+# define _winminor  (*__p__winminor())
+
+#else /* __DECLSPEC_SUPPORTED */
+__MINGW_IMPORT  unsigned int _osver;
+__MINGW_IMPORT  unsigned int _winver;
+__MINGW_IMPORT  unsigned int _winmajor;
+__MINGW_IMPORT  unsigned int _winminor;
+#endif  /* __DECLSPEC_SUPPORTED */
+
+#else  /* ! __MSVCRT__; thus CRTDLL */
+#ifndef __DECLSPEC_SUPPORTED
+
+#define _osver	    (*_imp___osver_dll)
+#define _winver    (*_imp___winver_dll)
+#define _winmajor  (*_imp___winmajor_dll)
+#define _winminor  (*_imp___winminor_dll)
+
+extern unsigned int *_imp___osver_dll;
+extern unsigned int *_imp___winver_dll;
+extern unsigned int *_imp___winmajor_dll;
+extern unsigned int *_imp___winminor_dll;
+
+#else  /* __DECLSPEC_SUPPORTED */
+
+#define _osver	    _osver_dll
+#define _winver    _winver_dll
+#define _winmajor  _winmajor_dll
+#define _winminor  _winminor_dll
+
+__MINGW_IMPORT unsigned int _osver_dll;
+__MINGW_IMPORT unsigned int _winver_dll;
+__MINGW_IMPORT unsigned int _winmajor_dll;
+__MINGW_IMPORT unsigned int _winminor_dll;
+
+#endif  /* __DECLSPEC_SUPPORTED */
+#endif  /* CRTDLL */
+
+#if defined  __MSVCRT__
+/* Although _pgmptr is exported as DATA, be safe and use the access
+ * function __p__pgmptr() to get it.
+ */
+#define _pgmptr  (*__p__pgmptr())
+_CRTIMP __cdecl __MINGW_NOTHROW  char **__p__pgmptr(void);
+
+#define _wpgmptr  (*__p__wpgmptr())
+_CRTIMP __cdecl __MINGW_NOTHROW  wchar_t **__p__wpgmptr(void);
+
+#else  /* ! __MSVCRT__; thus CRTDLL */
+
+# ifndef __DECLSPEC_SUPPORTED
+# define _pgmptr  (*_imp___pgmptr_dll)
+extern char **__imp__pgmptr_dll;
+
+# else  /* __DECLSPEC_SUPPORTED */
+
+# define _pgmptr _pgmptr_dll
+__MINGW_IMPORT  char *_pgmptr_dll;
+/* no wide version in CRTDLL */
+
+# endif /* __DECLSPEC_SUPPORTED */
+#endif	/* CRTDLL */
+
+/* This variable determines the default file mode.
+ * TODO: Which flags work?
+ */
+#if !defined (__DECLSPEC_SUPPORTED) || defined (__IN_MINGW_RUNTIME)
+
+#ifdef __MSVCRT__
+#define _fmode  (*_imp___fmode)
+extern int *_imp___fmode;
+#else
+/* CRTDLL */
+#define _fmode  (*_imp___fmode_dll)
+extern int *_imp___fmode_dll;
+#endif
+
+#else  /* __DECLSPEC_SUPPORTED */
+#ifdef __MSVCRT__
+__MINGW_IMPORT  int _fmode;
+
+#else  /* ! __MSVCRT__ */
+#define _fmode	_fmode_dll
+__MINGW_IMPORT  int _fmode_dll;
+
+#endif  /* !__MSVCRT__ */
+#endif  /* __DECLSPEC_SUPPORTED */
+#endif  /* !__STRICT_ANSI__ */
+
+_CRTIMP __cdecl __MINGW_NOTHROW  int atoi (const char *);
+_CRTIMP __cdecl __MINGW_NOTHROW  long atol (const char *);
+
+_CRTIMP __cdecl __MINGW_NOTHROW  double strtod (const char *, char **);
+_CRTIMP __cdecl __MINGW_NOTHROW  double atof (const char *);
+
+#if !defined (__STRICT_ANSI__)
+_CRTIMP __cdecl __MINGW_NOTHROW  double _wtof (const wchar_t *);
+_CRTIMP __cdecl __MINGW_NOTHROW  int _wtoi (const wchar_t *);
+_CRTIMP __cdecl __MINGW_NOTHROW  long _wtol (const wchar_t *);
+#endif
+
+#if __USE_MINGW_ANSI_STDIO
+/* Microsoft's strtod() and atof() implementations, (in MSVCRT.DLL),
+ * mishandle infinities and NaNs; on the basis that this conditional
+ * exposes a more ISO-C conforming printf() I/O family implementaion,
+ * we substitute a similarly more conforming implementation for each
+ * of this pair of (somewhat related) functions.
+ *
+ * Note that we provide neither __JMPSTUB__ nor __LIBIMPL__ external
+ * equivalents for either of these two inline functions, because they
+ * would conflict with the runtime DLL implementations; users needing
+ * an address reference for either must provide an equivalent of the
+ * inline implementation, as non-inlined within their own code.
+ */
+extern __cdecl __MINGW_NOTHROW
+double __strtod (const char *__restrict__, char **__restrict__);
+
+__CRT_ALIAS __cdecl __MINGW_NOTHROW
+double strtod (const char *__restrict__ __nptr, char **__restrict__ __endptr)
+{ return __strtod( __nptr, __endptr ); }
+
+__CRT_ALIAS __cdecl __MINGW_NOTHROW
+double atof (const char *__nptr) { return __strtod( __nptr, NULL ); }
+
+#endif  /* __USE_MINGW_ANSI_STDIO */
+
+#ifdef _ISOC99_SOURCE
+/* Irrespective of requested standards conformity, where MSVCRT.DLL
+ * falls short, ISO-C99 offers this pair of alternative return type
+ * specific variants of strtod(), which MSVCRT.DLL does not, but we
+ * do, in libmingwex.a:
+ */
+__cdecl __MINGW_NOTHROW
+float strtof (const char *__restrict__, char **__restrict__);
+
+__cdecl __MINGW_NOTHROW
+long double strtold (const char *__restrict__, char **__restrict__);
+#endif  /* _ISOC99_SOURCE */
+
+_CRTIMP __cdecl __MINGW_NOTHROW  long strtol (const char *, char **, int);
+_CRTIMP __cdecl __MINGW_NOTHROW  unsigned long strtoul (const char *, char **, int);
+
+#endif	/* _STDLIB_H only */
+#if ! (defined _STDLIB_H && defined _WCHAR_H)
+/* Prototypes which are to be declared both here, in <stdlib.h>,
+ * and also in <wchar.h>; declare them here, such that they may be
+ * selectively included by <wchar.h>.
+ */
+_CRTIMP __cdecl __MINGW_NOTHROW
+long wcstol (const wchar_t *, wchar_t **, int);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+unsigned long wcstoul (const wchar_t *, wchar_t **, int);
+
+_CRTIMP __cdecl __MINGW_NOTHROW  double wcstod (const wchar_t *, wchar_t **);
+
+#ifdef _ISOC99_SOURCE
+/* Variants on wcstod(), specified by ISO-C99; once again, MSVCRT.DLL
+ * doesn't have them, but we offer them in libmingwex.a
+ */
+__cdecl __MINGW_NOTHROW
+float wcstof (const wchar_t *__restrict__, wchar_t **__restrict__);
+
+__cdecl __MINGW_NOTHROW
+long double wcstold (const wchar_t *__restrict__, wchar_t **__restrict__);
+#endif  /* _ISOC99_SOURCE */
+
+#ifdef __MSVCRT__
+#if __MSVCRT_VERSION__ >= __MSVCR70_DLL || _WIN32_WINNT >= _WIN32_WINNT_WINXP
+/* This pair of wide character equivalents for ISO-C99's strtoll() and
+ * strtoull() require either WinXP (or later), or a non-free MSVC runtime
+ * from MSVCR70.DLL onwards...
+ */
+_CRTIMP __cdecl __MINGW_NOTHROW
+__int64 _wcstoi64(const wchar_t *, wchar_t **, int);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+unsigned __int64 _wcstoui64(const wchar_t *, wchar_t **, int);
+
+#endif	/* WinXP || MSVCR70.DLL || later */
+
+#if __MSVCRT_VERSION__ >= __MSVCR80_DLL || _WIN32_WINNT >= _WIN32_WINNT_VISTA
+/* ...while the following pair require Win-Vista (or later), or non-free
+ * MSVCRT runtime from MSVCR80.DLL onwards; they also require...
+ */
+#ifndef __have_typedef_locale_t
+/* ...this opaque data type, which we may obtain by selective inclusion
+ * from <locale.h>.  (Note that this may render them unusable for users of
+ * MSVCRT.DLL; see the explanation in <locale.h>, regarding the difficulty
+ * in creating, or otherwise acquiring a reference to, a _locale_t object,
+ * notwithstanding the availability of the functions in MSVCRT.DLL, from
+ * the release of Win-Vista onwards).
+ */
+#define __need_locale_t
+#include <locale.h>
+#endif	/* !__have_typedef_locale_t */
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+__int64 _wcstoi64_l(const wchar_t *, wchar_t **, int, _locale_t);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+unsigned __int64 _wcstoui64_l(const wchar_t *, wchar_t **, int, _locale_t);
+
+#endif	/* Win-Vista || MSVCR80.DLL || later */
+
+_CRTIMP __cdecl __MINGW_NOTHROW  wchar_t *_wgetenv (const wchar_t *);
+_CRTIMP __cdecl __MINGW_NOTHROW  int _wputenv (const wchar_t *);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+void _wsearchenv (const wchar_t *, const wchar_t *, wchar_t *);
+
+_CRTIMP __cdecl __MINGW_NOTHROW  int _wsystem (const wchar_t *);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+void _wmakepath (wchar_t *, const wchar_t *, const wchar_t *, const wchar_t *,
+    const wchar_t *
+  );
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+void _wsplitpath (const wchar_t *, wchar_t *, wchar_t *, wchar_t *, wchar_t *);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+wchar_t *_wfullpath (wchar_t *, const wchar_t *, size_t);
+
+#endif	/* __MSVCRT__ */
+#endif	/* _STDLIB_H || _WCHAR_H */
+
+#ifdef _STDLIB_H  /* <stdlib.h> only */
+_CRTIMP __cdecl __MINGW_NOTHROW  size_t wcstombs (char *, const wchar_t *, size_t);
+_CRTIMP __cdecl __MINGW_NOTHROW  int wctomb (char *, wchar_t);
+
+_CRTIMP __cdecl __MINGW_NOTHROW  int mblen (const char *, size_t);
+_CRTIMP __cdecl __MINGW_NOTHROW  size_t mbstowcs (wchar_t *, const char *, size_t);
+_CRTIMP __cdecl __MINGW_NOTHROW  int mbtowc (wchar_t *, const char *, size_t);
+
+_CRTIMP __cdecl __MINGW_NOTHROW  int rand (void);
+_CRTIMP __cdecl __MINGW_NOTHROW  void srand (unsigned int);
+
+_CRTIMP __cdecl __MINGW_NOTHROW  void *calloc (size_t, size_t) __MINGW_ATTRIB_MALLOC;
+_CRTIMP __cdecl __MINGW_NOTHROW  void *malloc (size_t) __MINGW_ATTRIB_MALLOC;
+_CRTIMP __cdecl __MINGW_NOTHROW  void *realloc (void *, size_t);
+_CRTIMP __cdecl __MINGW_NOTHROW  void free (void *);
+_CRTIMP __cdecl __MINGW_NOTHROW  void abort (void) __MINGW_ATTRIB_NORETURN;
+_CRTIMP __cdecl __MINGW_NOTHROW  void exit (int) __MINGW_ATTRIB_NORETURN;
+
+/* Note: this is in startup code, not imported directly from the runtime DLL
+ */
+int __cdecl __MINGW_NOTHROW atexit (void (*)(void));
+
+_CRTIMP __cdecl __MINGW_NOTHROW  int system (const char *);
+_CRTIMP __cdecl __MINGW_NOTHROW  char *getenv (const char *);
+
+/* bsearch() and qsort() are declared both here, in <stdlib.h>, and in
+ * non-ANSI header <search.h>; we reproduce these declarations in both,
+ * with no attempt to guard them, so the compiler may verify that they
+ * are consistent, if both headers are included.
+ */
+_CRTIMP __cdecl  void *bsearch
+(const void *, const void *, size_t, size_t, int (*)(const void *, const void *));
+
+_CRTIMP __cdecl  void qsort
+(void *, size_t, size_t, int (*)(const void *, const void *));
+
+_CRTIMP __cdecl __MINGW_NOTHROW  int abs (int) __MINGW_ATTRIB_CONST;
+_CRTIMP __cdecl __MINGW_NOTHROW  long labs (long) __MINGW_ATTRIB_CONST;
+
+/* div_t and ldiv_t are structures used to return the results of div()
+ * and ldiv() functions.
+ *
+ * NOTE: div() and ldiv() appear not to work correctly unless
+ *       -fno-pcc-struct-return is specified. This is included in the
+ *       mingw32 specs file.
+ */
+typedef struct { int quot, rem; } div_t;
+typedef struct { long quot, rem; } ldiv_t;
+
+_CRTIMP __cdecl __MINGW_NOTHROW  div_t div (int, int) __MINGW_ATTRIB_CONST;
+_CRTIMP __cdecl __MINGW_NOTHROW  ldiv_t ldiv (long, long) __MINGW_ATTRIB_CONST;
+
+#if !defined (__STRICT_ANSI__)
+/* NOTE: Officially the three following functions are obsolete. The Win32 API
+ *       functions SetErrorMode, Beep and Sleep are their replacements.
+ */
+_CRTIMP __cdecl __MINGW_NOTHROW  void _beep (unsigned int, unsigned int) __MINGW_ATTRIB_DEPRECATED;
+/* Not to be confused with  _set_error_mode (int).  */
+_CRTIMP __cdecl __MINGW_NOTHROW  void _seterrormode (int) __MINGW_ATTRIB_DEPRECATED;
+_CRTIMP __cdecl __MINGW_NOTHROW  void _sleep (unsigned long) __MINGW_ATTRIB_DEPRECATED;
+
+_CRTIMP __cdecl __MINGW_NOTHROW  void _exit (int) __MINGW_ATTRIB_NORETURN;
+
+/* _onexit is a Microsoft extension. Use atexit for portability. */
+/* Note: This is in startup code, not imported directly from dll */
+typedef  int (* _onexit_t)(void);
+__cdecl __MINGW_NOTHROW  _onexit_t _onexit( _onexit_t );
+
+_CRTIMP __cdecl __MINGW_NOTHROW  int _putenv (const char *);
+_CRTIMP __cdecl __MINGW_NOTHROW
+void _searchenv (const char *, const char *, char *);
+
+_CRTIMP __cdecl __MINGW_NOTHROW  char *_ecvt (double, int, int *, int *);
+_CRTIMP __cdecl __MINGW_NOTHROW  char *_fcvt (double, int, int *, int *);
+_CRTIMP __cdecl __MINGW_NOTHROW  char *_gcvt (double, int, char *);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+void _makepath (char *, const char *, const char *, const char *, const char *);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+void _splitpath (const char *, char *, char *, char *, char *);
+
+_CRTIMP __cdecl __MINGW_NOTHROW  char *_fullpath (char*, const char*, size_t);
+
+_CRTIMP __cdecl __MINGW_NOTHROW  char *_itoa (int, char *, int);
+_CRTIMP __cdecl __MINGW_NOTHROW  char *_ltoa (long, char *, int);
+_CRTIMP __cdecl __MINGW_NOTHROW  char *_ultoa(unsigned long, char *, int);
+_CRTIMP __cdecl __MINGW_NOTHROW  wchar_t *_itow (int, wchar_t *, int);
+_CRTIMP __cdecl __MINGW_NOTHROW  wchar_t *_ltow (long, wchar_t *, int);
+_CRTIMP __cdecl __MINGW_NOTHROW  wchar_t *_ultow (unsigned long, wchar_t *, int);
+
+#ifdef __MSVCRT__
+_CRTIMP __cdecl __MINGW_NOTHROW  __int64 _atoi64 (const char *);
+_CRTIMP __cdecl __MINGW_NOTHROW  char* _i64toa (__int64, char *, int);
+_CRTIMP __cdecl __MINGW_NOTHROW  char* _ui64toa (unsigned __int64, char *, int);
+_CRTIMP __cdecl __MINGW_NOTHROW  __int64 _wtoi64 (const wchar_t *);
+_CRTIMP __cdecl __MINGW_NOTHROW  wchar_t* _i64tow (__int64, wchar_t *, int);
+_CRTIMP __cdecl __MINGW_NOTHROW  wchar_t* _ui64tow (unsigned __int64, wchar_t *, int);
+
+_CRTIMP __cdecl __MINGW_NOTHROW  unsigned int (_rotl)(unsigned int, int) __MINGW_ATTRIB_CONST;
+_CRTIMP __cdecl __MINGW_NOTHROW  unsigned int (_rotr)(unsigned int, int) __MINGW_ATTRIB_CONST;
+_CRTIMP __cdecl __MINGW_NOTHROW  unsigned long (_lrotl)(unsigned long, int) __MINGW_ATTRIB_CONST;
+_CRTIMP __cdecl __MINGW_NOTHROW  unsigned long (_lrotr)(unsigned long, int) __MINGW_ATTRIB_CONST;
+
+_CRTIMP __cdecl __MINGW_NOTHROW  int _set_error_mode (int);
+
+# define _OUT_TO_DEFAULT	0
+# define _OUT_TO_STDERR 	1
+# define _OUT_TO_MSGBOX 	2
+# define _REPORT_ERRMODE	3
+
+# if __MSVCRT_VERSION__ >= __MSVCR80_DLL
+#  ifndef _UINTPTR_T_DEFINED
+#   define _UINTPTR_T_DEFINED
+#   ifdef _WIN64
+      typedef unsigned __int64 uintptr_t;
+#   else
+      typedef unsigned int uintptr_t;
+#   endif
+#  endif
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+unsigned int _set_abort_behavior (unsigned int, unsigned int);
+
+/* These masks work with msvcr80.dll version 8.0.50215.44 (a beta release).
+ */
+#  define _WRITE_ABORT_MSG	1
+#  define _CALL_REPORTFAULT	2
+
+typedef void
+(* _invalid_parameter_handler) (
+    const wchar_t *,
+    const wchar_t *,
+    const wchar_t *,
+    unsigned int,
+    uintptr_t);
+_invalid_parameter_handler _set_invalid_parameter_handler (_invalid_parameter_handler);
+
+# endif /* __MSVCRT_VERSION__ >= __MSVCR80_DLL */
+#endif	/* __MSVCRT__ */
+
+#ifndef _NO_OLDNAMES
+_CRTIMP __cdecl __MINGW_NOTHROW  int putenv (const char*);
+_CRTIMP __cdecl __MINGW_NOTHROW  void searchenv (const char*, const char*, char*);
+
+_CRTIMP __cdecl __MINGW_NOTHROW  char* itoa (int, char*, int);
+_CRTIMP __cdecl __MINGW_NOTHROW  char* ltoa (long, char*, int);
+
+#ifndef _UWIN
+_CRTIMP __cdecl __MINGW_NOTHROW  char* ecvt (double, int, int*, int*);
+_CRTIMP __cdecl __MINGW_NOTHROW  char* fcvt (double, int, int*, int*);
+_CRTIMP __cdecl __MINGW_NOTHROW  char* gcvt (double, int, char*);
+
+#endif	/* ! _UWIN */
+#endif	/* ! _NO_OLDNAMES */
+#endif	/* ! __STRICT_ANSI__ */
+
+#ifdef _ISOC99_SOURCE
+/* Further APIs required to support ISO-C99, but missing from MSVCRT.DLL;
+ * we provide them in libmingwex.a:
+ *
+ * ISO-C99 name for _exit()
+ */
+__cdecl __MINGW_NOTHROW  void _Exit(int) __MINGW_ATTRIB_NORETURN;
+
+#ifndef __NO_INLINE__
+__CRT_INLINE __JMPSTUB__(( FUNCTION = _Exit, REMAPPED = _exit ))
+__cdecl __MINGW_NOTHROW  void _Exit( int __status ){ _exit (__status); }
+#endif
+
+typedef struct { long long quot, rem; } lldiv_t;
+__cdecl __MINGW_NOTHROW  lldiv_t lldiv (long long, long long) __MINGW_ATTRIB_CONST;
+
+__cdecl __MINGW_NOTHROW  long long llabs (long long);
+
+#ifndef __NO_INLINE__
+__CRT_INLINE
+/* No JMPSTUB or LIBIMPL reference here -- we provide a free-standing
+ * implementation, along with imaxabs(), in mingwex/imaxabs.c
+ */
+__cdecl __MINGW_NOTHROW  long long llabs( long long __j )
+{ return __j >= 0 ? __j : -__j; }
+#endif
+
+__cdecl __MINGW_NOTHROW
+long long strtoll (const char *__restrict__, char **__restrict, int);
+
+__cdecl __MINGW_NOTHROW
+unsigned long long strtoull (const char *__restrict__, char **__restrict__, int);
+
+#ifdef __MSVCRT__
+/* MSVCRT.DLL does not provide ISO-C99's atoll() function, but it does
+ * provide an analogue, in _atoi64(); map it accordingly.
+ */
+__cdecl __MINGW_NOTHROW  long long atoll (const char *);
+
+#ifndef __NO_INLINE__
+__CRT_INLINE __JMPSTUB__(( FUNCTION = atoll, REMAPPED = _atoi64 ))
+__cdecl __MINGW_NOTHROW  long long atoll (const char * _c){ return _atoi64 (_c); }
+#endif
+
+#endif  /* __MSVCRT__ */
+#endif  /* _ISOC99_SOURCE */
+
+#if defined __MSVCRT__ && ! defined __STRICT_ANSI__
+#if __MSVCRT_VERSION__ >= __MSVCR70_DLL || _WIN32_WINNT >= _WIN32_WINNT_WINXP
+/* Microsoft specific alternatives to ISO-C99 strtoll() and strtoull(); the
+ * first pair require WinXP (or later) or non-free MSVCR70.DLL onwards...
+ */
+_CRTIMP __cdecl __MINGW_NOTHROW
+__int64 _strtoi64(const char*, char **, int);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+unsigned __int64 _strtoui64(const char*, char **, int);
+
+#endif	/* WinXP || MSVCR70.DLL || later */
+#if __MSVCRT_VERSION__ >= __MSVCR80_DLL || _WIN32_WINNT >= _WIN32_WINNT_VISTA
+/* ...while the following pair require Win-Vista (or later), or non-free
+ * MSVCR80.DLL onwards; (note that, like their wide character counterparts,
+ * they may actually be unusable without MSVCR80.DLL onwards, because of
+ * the difficulty in acquiring a reference to a _locale_t object).
+ */
+_CRTIMP __cdecl __MINGW_NOTHROW
+__int64 _strtoi64_l(const char *, char **, int, _locale_t);
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+unsigned __int64 _strtoui64_l(const char *, char **, int, _locale_t);
+
+#endif	/* Win-Vista || MSVCR80.DLL || later */
+
+/* Type long long analogues for MSVCRT.DLL specific type long functions;
+ * none are actually provided by any version of MSVCRT.DLL, with names as
+ * specified here, but rather as called by the inline functions used to
+ * implement them, (i.e. the REMAPPED name specified in each__JMPSTUB__
+ * function reference respectively).
+ *
+ * FIXME: Not one of these is specified by ISO-C99, nor by POSIX, either;
+ * is there really any justification for us to specify them at all?  For
+ * the time being, declare as deprecated; perhaps remove later?
+ */
+__cdecl __MINGW_NOTHROW __MINGW_ATTRIB_DEPRECATED  long long wtoll (const wchar_t *);
+__cdecl __MINGW_NOTHROW __MINGW_ATTRIB_DEPRECATED  char *lltoa (long long, char *, int);
+__cdecl __MINGW_NOTHROW __MINGW_ATTRIB_DEPRECATED  char *ulltoa (unsigned long long , char *, int);
+__cdecl __MINGW_NOTHROW __MINGW_ATTRIB_DEPRECATED  wchar_t *lltow (long long, wchar_t *, int);
+__cdecl __MINGW_NOTHROW __MINGW_ATTRIB_DEPRECATED  wchar_t *ulltow (unsigned long long, wchar_t *, int);
+
+#ifndef __NO_INLINE__
+/* None of these functions would exist at all, without either these inline
+ * implementations, or their respective __JMPSTUB__ equivalents.
+ */
+__CRT_INLINE __JMPSTUB__(( FUNCTION = lltoa, REMAPPED = _i64toa ))
+__cdecl __MINGW_NOTHROW  char *lltoa (long long __n, char * __c, int __i)
+{ return _i64toa (__n, __c, __i); }
+
+__CRT_INLINE __JMPSTUB__(( FUNCTION = ulltoa, REMAPPED = _ui64toa ))
+__cdecl __MINGW_NOTHROW  char *ulltoa (unsigned long long __n, char * __c, int __i)
+{ return _ui64toa (__n, __c, __i); }
+
+__CRT_INLINE __JMPSTUB__(( FUNCTION = wtoll, REMAPPED = _wtoi64 ))
+__cdecl __MINGW_NOTHROW  long long wtoll (const wchar_t * __w){ return _wtoi64 (__w); }
+
+__CRT_INLINE __JMPSTUB__(( FUNCTION = lltow, REMAPPED = _i64tow ))
+__cdecl __MINGW_NOTHROW  wchar_t *lltow (long long __n, wchar_t * __w, int __i)
+{ return _i64tow (__n, __w, __i); }
+
+__CRT_INLINE __JMPSTUB__(( FUNCTION = ulltow, REMAPPED = _ui64tow ))
+__cdecl __MINGW_NOTHROW  wchar_t *ulltow (unsigned long long __n, wchar_t * __w, int __i)
+{ return _ui64tow (__n, __w, __i); }
+
+#endif  /* ! __NO_INLINE__ */
+#endif  /* __MSVCRT__ && ! __STRICT_ANSI__ */
+
+/* POSIX/BSD extensions in libmingwex.a; these should be exposed only on
+ * the basis of appropriate POSIX or BSD specific feature tests...
+ *
+ * mkstemp(3) function support; added per feature request #2003.
+ * POSIX wants _XOPEN_SOURCE >= 500, (implying _POSIX_C_SOURCE >= 200112L).
+ */
+#if _POSIX_C_SOURCE >= 200112L
+
+__cdecl __MINGW_NOTHROW  int mkstemp (char *);
+__cdecl __MINGW_NOTHROW  int __mingw_mkstemp (int, char *);
+
+/* On POSIX platforms, programmers may adopt an idiom such as:
+ *
+ *   if( mkstemp( template ) >= 0 )
+ *   { unlink( template );
+ *     . . .
+ *   }
+ *
+ * to ensure that a temporary file does NOT persist after it is
+ * closed; MS-Windows does not allow such use of unlink(2), while
+ * the file remains open.  Thus, MS-Windows programmers must take
+ * extra care, to close and unlink temporary files AFTER use, if
+ * similar behaviour is desired.
+ *
+ * To mitigate this MS-Windows limitation, we provide support for
+ * an alternative, MinGW specific idiom:
+ *
+ *   #include <fcntl.h>
+ *
+ *   _MKSTEMP_SETMODE( _O_TEMPORARY );
+ *   if( mkstemp( template ) >= 0 )
+ *   {
+ *     . . .
+ *   }
+ *
+ * to achieve a similar effect to that of the above POSIX idiom; the
+ * following macros are a MinGW specific extension, to facilite such
+ * use of _O_TEMPORARY, (in addition to the POSIX required attributes),
+ * when creating the temporary file.  Note that they require <fcntl.h>,
+ * which <stdlib.h> should NOT automatically include; we leave it to
+ * the user to explicitly include it, if using _MKSTEMP_SETMODE.
+ */
+#define _MKSTEMP_INVOKE       0
+#define _MKSTEMP_DEFAULT     _O_CREAT | _O_EXCL | _O_RDWR
+#define _MKSTEMP_SETMODE(M) __mingw_mkstemp( _MKSTEMP_DEFAULT | (M), NULL )
+
+#ifndef _NO_OLDNAMES
+#define MKSTEMP_SETMODE(M)  __mingw_mkstemp( _MKSTEMP_DEFAULT | (M), NULL )
+#endif
+
+__CRT_ALIAS __LIBIMPL__(( FUNCTION = mkstemp ))
+__cdecl __MINGW_NOTHROW  int mkstemp (char *__filename_template)
+{ return __mingw_mkstemp( _MKSTEMP_INVOKE, __filename_template ); }
+
+#endif	/* _POSIX_C_SOURCE >= 200112L (for mkstemp()) */
+
+/* mkdtemp(3) function support: added as adjunct to feature request #2003.
+ * POSIX wants _XOPEN_SOURCE >= 700, (implying _POSIX_C_SOURCE >= 200809L).
+ */
+#if _POSIX_C_SOURCE >= 200809L
+
+__cdecl __MINGW_NOTHROW  char *mkdtemp (char *);
+__cdecl __MINGW_NOTHROW  char *__mingw_mkdtemp (char *);
+
+__CRT_ALIAS __JMPSTUB__(( FUNCTION = mkdtemp ))
+__cdecl __MINGW_NOTHROW  char *mkdtemp (char *__dirname_template)
+{ return __mingw_mkdtemp( __dirname_template ); }
+
+#endif	/* _POSIX_C_SOURCE >= 200809L (for mkdtemp()) */
+#endif	/* _STDLIB_H */
+
+_END_C_DECLS
+
+#endif	/* ! RC_INVOKED */
+#endif	/* ! _STDLIB_H: $RCSfile: stdlib.h,v $: end of file */
Index: Daodan/MinGW/include/stm.h
===================================================================
--- Daodan/MinGW/include/stm.h	(revision 1046)
+++ Daodan/MinGW/include/stm.h	(revision 1046)
@@ -0,0 +1,25 @@
+#ifndef _STM_H
+#define _STM_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#if (_WIN32_WINNT >= 0x0500)
+typedef struct _IPX_SERVER_ENTRY {
+	USHORT Type;
+	UCHAR Name[48];
+	UCHAR Network[4];
+	UCHAR Node[6];
+	UCHAR Socket[2];
+	USHORT HopCount;
+} IPX_SERVER_ENTRY,*PIPX_SERVER_ENTRY;
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/string.h
===================================================================
--- Daodan/MinGW/include/string.h	(revision 1046)
+++ Daodan/MinGW/include/string.h	(revision 1046)
@@ -0,0 +1,187 @@
+/*
+ * string.h
+ *
+ * ISO-C standard header, with MSVC compatible extensions.
+ *
+ * $Id: string.h,v 7c13c3b4989e 2016/05/12 12:51:37 keithmarshall $
+ *
+ * Written by Colin Peters <colin@bird.fu.is.saga-u.ac.jp>
+ * Copyright (C) 1997-2000, 2002-2004, 2007, 2009, 2015, 2016,
+ *  MinGW.org Project.
+ *
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice, this permission notice, and the following
+ * disclaimer shall be included in all copies or substantial portions of
+ * the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OF OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ *
+ */
+#ifndef _STRING_H
+#pragma GCC system_header
+#define _STRING_H
+
+/* All MinGW system headers must include this...
+ */
+#include <_mingw.h>
+
+#ifndef RC_INVOKED
+/* ISO-C requires this header to expose definitions for NULL and size_t,
+ * retaining compatiblity with their fundamental <stddef.h> definitions.
+ */
+#define __need_NULL
+#define __need_size_t
+#ifndef __STRICT_ANSI__
+ /* MSVC extends this requirement to include a definition of wchar_t,
+  * (which contravenes strict ISO-C standards conformity).
+  */
+# define __need_wchar_t
+#endif
+#include <stddef.h>
+
+_BEGIN_C_DECLS
+
+#define __STRING_H_SOURCED__
+/* Prototypes for the ISO-C Standard library string functions.
+ */
+_CRTIMP __cdecl __MINGW_NOTHROW  void *memchr (const void *, int, size_t) __MINGW_ATTRIB_PURE;
+_CRTIMP __cdecl __MINGW_NOTHROW  int memcmp (const void *, const void *, size_t) __MINGW_ATTRIB_PURE;
+_CRTIMP __cdecl __MINGW_NOTHROW  void *memcpy (void *, const void *, size_t);
+_CRTIMP __cdecl __MINGW_NOTHROW  void *memmove (void *, const void *, size_t);
+_CRTIMP __cdecl __MINGW_NOTHROW  void *memset (void *, int, size_t);
+_CRTIMP __cdecl __MINGW_NOTHROW  char *strcat (char *, const char *);
+_CRTIMP __cdecl __MINGW_NOTHROW  char *strchr (const char *, int) __MINGW_ATTRIB_PURE;
+_CRTIMP __cdecl __MINGW_NOTHROW  int strcmp (const char *, const char *) __MINGW_ATTRIB_PURE;
+_CRTIMP __cdecl __MINGW_NOTHROW  int strcoll (const char *, const char *); /* Compare using locale */
+_CRTIMP __cdecl __MINGW_NOTHROW  char *strcpy (char *, const char *);
+_CRTIMP __cdecl __MINGW_NOTHROW  size_t strcspn (const char *, const char *) __MINGW_ATTRIB_PURE;
+_CRTIMP __cdecl __MINGW_NOTHROW  char *strerror (int); /* NOTE: NOT an old name wrapper. */
+
+_CRTIMP __cdecl __MINGW_NOTHROW  size_t strlen (const char *) __MINGW_ATTRIB_PURE;
+_CRTIMP __cdecl __MINGW_NOTHROW  char *strncat (char *, const char *, size_t);
+_CRTIMP __cdecl __MINGW_NOTHROW  int strncmp (const char *, const char *, size_t) __MINGW_ATTRIB_PURE;
+_CRTIMP __cdecl __MINGW_NOTHROW  char *strncpy (char *, const char *, size_t);
+_CRTIMP __cdecl __MINGW_NOTHROW  char *strpbrk (const char *, const char *) __MINGW_ATTRIB_PURE;
+_CRTIMP __cdecl __MINGW_NOTHROW  char *strrchr (const char *, int) __MINGW_ATTRIB_PURE;
+_CRTIMP __cdecl __MINGW_NOTHROW  size_t strspn (const char *, const char *) __MINGW_ATTRIB_PURE;
+_CRTIMP __cdecl __MINGW_NOTHROW  char *strstr (const char *, const char *) __MINGW_ATTRIB_PURE;
+_CRTIMP __cdecl __MINGW_NOTHROW  char *strtok (char *, const char *);
+_CRTIMP __cdecl __MINGW_NOTHROW  size_t strxfrm (char *, const char *, size_t);
+
+#ifndef __STRICT_ANSI__
+/*
+ * Extra non-ANSI functions provided by the CRTDLL library
+ */
+_CRTIMP __cdecl __MINGW_NOTHROW  char *_strerror (const char *);
+_CRTIMP __cdecl __MINGW_NOTHROW  void *_memccpy (void *, const void *, int, size_t);
+_CRTIMP __cdecl __MINGW_NOTHROW  int _memicmp (const void *, const void *, size_t);
+_CRTIMP __cdecl __MINGW_NOTHROW  char *_strdup (const char *) __MINGW_ATTRIB_MALLOC;
+_CRTIMP __cdecl __MINGW_NOTHROW  int _strcmpi (const char *, const char *);
+_CRTIMP __cdecl __MINGW_NOTHROW  int _stricoll (const char *, const char *);
+_CRTIMP __cdecl __MINGW_NOTHROW  char *_strlwr (char *);
+_CRTIMP __cdecl __MINGW_NOTHROW  char *_strnset (char *, int, size_t);
+_CRTIMP __cdecl __MINGW_NOTHROW  char *_strrev (char *);
+_CRTIMP __cdecl __MINGW_NOTHROW  char *_strset (char *, int);
+_CRTIMP __cdecl __MINGW_NOTHROW  char *_strupr (char *);
+_CRTIMP __cdecl __MINGW_NOTHROW  void _swab (const char *, char *, size_t);
+
+/* MSVC's non-ANSI _stricmp() and _strnicmp() functions must also be
+ * prototyped here, but we need to share them with <strings.h>, where
+ * we declare their POSIX strcasecmp() and strncasecmp() equivalents;
+ * get the requisite prototypes by selective <strings.h> inclusion.
+ */
+#include <strings.h>
+
+# ifdef __MSVCRT__
+ /* These were not present in the CRTDLL prior to the first release of
+  * MSVCRT.DLL, but are available in all versions of that library.
+  */
+_CRTIMP __cdecl __MINGW_NOTHROW  int _strncoll(const char *, const char *, size_t);
+_CRTIMP __cdecl __MINGW_NOTHROW  int _strnicoll(const char *, const char *, size_t);
+# endif
+
+# ifndef _NO_OLDNAMES
+ /* Non-underscore decorated versions of non-ANSI functions. They live in the
+  * OLDNAMES libraries, whence they provide a little extra portability.
+  */
+_CRTIMP __cdecl __MINGW_NOTHROW  void *memccpy (void *, const void *, int, size_t);
+_CRTIMP __cdecl __MINGW_NOTHROW  int memicmp (const void *, const void *, size_t);
+_CRTIMP __cdecl __MINGW_NOTHROW  char *strdup (const char *) __MINGW_ATTRIB_MALLOC;
+_CRTIMP __cdecl __MINGW_NOTHROW  int strcmpi (const char *, const char *);
+_CRTIMP __cdecl __MINGW_NOTHROW  int stricmp (const char *, const char *);
+_CRTIMP __cdecl __MINGW_NOTHROW  int stricoll (const char *, const char *);
+_CRTIMP __cdecl __MINGW_NOTHROW  char *strlwr (char *);
+_CRTIMP __cdecl __MINGW_NOTHROW  int strnicmp (const char *, const char *, size_t);
+_CRTIMP __cdecl __MINGW_NOTHROW  char *strnset (char *, int, size_t);
+_CRTIMP __cdecl __MINGW_NOTHROW  char *strrev (char *);
+_CRTIMP __cdecl __MINGW_NOTHROW  char *strset (char *, int);
+_CRTIMP __cdecl __MINGW_NOTHROW  char *strupr (char *);
+
+#  ifndef _UWIN
+  /* FIXME: Do we really care that UWin doesn't support this?  We are
+   * under no obligation to support UWin.
+   */
+_CRTIMP __cdecl __MINGW_NOTHROW  void swab (const char *, char *, size_t);
+
+#  endif /* ! _UWIN */
+# endif /* ! _NO_OLDNAMES */
+
+/* MSVC also expects <string.h> to declare duplicates of the wchar_t
+ * string functions which are nominally declared in <wchar.h>, (which
+ * is where ISO-C specifies that they should be declared).  For the
+ * convenience of applications which rely on this Microsoft anomaly,
+ * inclusion of <wchar.h>, within the current __STRING_H_SOURCED__
+ * scope, will selectively expose the required function prototypes;
+ * however, strictly ISO-C conforming applications should include
+ * <wchar.h> directly; they should not rely on this MSVC specific
+ * anomalous behaviour.
+ */
+#include <wchar.h>
+
+#endif /* ! __STRICT_ANSI__ */
+
+#if __MSVCRT_VERSION__ >= __MSVCR80_DLL
+/* MSVCR80.DLL adds a (mostly) POSIX.1-2008 conforming strnlen(); (it's
+ * also available in MSVCRT.DLL from _WIN32_WINNT_VISTA onwards, but we
+ * pretend otherwise, since recent GCC will try to use the function when
+ * it can be found in libmsvcrt.a, so breaking it for use on WinXP and
+ * earlier).
+ */
+_CRTIMP __cdecl __MINGW_NOTHROW  char *strnlen (const char *, size_t);
+
+#elif _POSIX_C_SOURCE >= 200809L
+/* Emulation, to support recent POSIX.1; we prefer this for ALL versions
+ * of MSVCRT.DLL, (even those which already provide strnlen()); to avoid
+ * the GCC breakage noted above.  (Note that we implement strnlen() with
+ * the alternative external name, __mingw_strnlen() in libmingwex.a, to
+ * avoid possible link time collision with MSVCR80.DLL's implementation,
+ * then map this to strnlen() via a __CRT_ALIAS, with stubs designated
+ * for linking from within the appropriate oldname libraries.
+ */
+extern size_t __mingw_strnlen (const char *, size_t);
+
+__JMPSTUB__(( LIB=coldname; FUNCTION=strnlen ))
+__CRT_ALIAS size_t strnlen (const char *__text, size_t __maxlen)
+{ return __mingw_strnlen (__text, __maxlen); }
+
+#endif	/* _POSIX_C_SOURCE >= 200809L */
+
+#undef __STRING_H_SOURCED__
+
+_END_C_DECLS
+
+#endif	/* ! RC_INVOKED */
+#endif	/* !_STRING_H: $RCSfile: string.h,v $: end of file */
Index: Daodan/MinGW/include/strings.h
===================================================================
--- Daodan/MinGW/include/strings.h	(revision 1046)
+++ Daodan/MinGW/include/strings.h	(revision 1046)
@@ -0,0 +1,100 @@
+/*
+ * strings.h
+ *
+ * API declarations for POSIX.1-2008 string functions supported by MinGW.
+ *
+ * $Id: strings.h,v 9d7609141132 2016/02/18 21:12:32 keithmarshall $
+ *
+ * Written by Keith Marshall <keithmarshall@users.sourceforge.net>
+ * Copyright (C) 2015, 2016, MinGW.org Project.
+ *
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice, this permission notice, and the following
+ * disclaimer shall be included in all copies or substantial portions of
+ * the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OF OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ *
+ */
+#ifndef _STRINGS_H
+#pragma GCC system_header
+
+/* In addition to the POSIX strcasecmp() and strncasecmp() functions,
+ * this header declares the prototypes for the MSVC specific stricmp()
+ * and strincmp() functions, which MSVC expects to find in <string.h>;
+ * thus, we support selective partial inclusion by <string.h>, to make
+ * this pair of function prototypes available as MSVC expects...
+ */
+#ifndef __STRING_H_SOURCED__
+/* ...and we define the _STRINGS_H guard macro only when NOT included
+ * in this partial fashion.
+ */
+#define _STRINGS_H
+
+/* All MinGW system headers must include <_mingw.h>; if we had been
+ * sourced by <string.h>, we could safely assume that it had already
+ * done this, but since that doesn't apply in this case, we must do
+ * it ourselves.
+ */
+#include <_mingw.h>
+
+#ifndef RC_INVOKED
+/* POSIX.1-2008 requires this header to expose the typedef for size_t; to
+ * ensure consistency, we import this from GCC's own <stddef.h> header.
+ */
+#define __need_size_t
+#include <stddef.h>
+
+_BEGIN_C_DECLS
+
+int __cdecl __MINGW_NOTHROW strcasecmp( const char *, const char * );
+int __cdecl __MINGW_NOTHROW strncasecmp( const char *, const char *, size_t );
+
+#endif	/* ! RC_INVOKED */
+#endif	/* !__STRING_H_SOURCED__ */
+
+#if ! (defined _STRINGS_H && defined __NO_INLINE__)
+/* These are the MSVCRT.DLL equivalents for POSIX.1's strcasecmp() and
+ * strncasecmp() functions, for which we provide in-line implementations
+ * in <strings.h> respectively; MSVC expects to find these prototypes in
+ * <string.h>, but we also need them here, in <strings.h>, to facilitate
+ * the in-line function implementations; we declare them here, and allow
+ * <string.h> to include them selectively.
+ */
+_CRTIMP __cdecl __MINGW_NOTHROW  int _stricmp( const char *, const char * );
+_CRTIMP __cdecl __MINGW_NOTHROW  int _strnicmp( const char *, const char *, size_t );
+#endif	/* !(_STRINGS_H && __NO_INLINE__) */
+
+#if defined _STRINGS_H && ! defined RC_INVOKED
+#ifndef __NO_INLINE__
+/* Provide in-line implementations for strcasecmp(), and strncasecmp(),
+ * effectively aliasing them to the respective MSVCRT.DLL (non-standard)
+ * equivalents, as prototyped above.
+ */
+__CRT_ALIAS __JMPSTUB__(( FUNCTION = strcasecmp, REMAPPED = _stricmp ))
+  int strcasecmp( const char *__s1, const char *__s2 )
+  { return _stricmp( __s1, __s2 ); }
+
+__CRT_ALIAS __JMPSTUB__(( FUNCTION = strncasecmp, REMAPPED = _strnicmp ))
+  int strncasecmp( const char *__s1, const char *__s2, size_t __n )
+  { return _strnicmp( __s1, __s2, __n ); }
+
+#endif	/* !__NO_INLINE__ */
+
+_END_C_DECLS
+
+#endif	/* _STRINGS_H && ! RC_INVOKED */
+#endif	/* !_STRINGS_H: $RCSfile: strings.h,v $: end of file */
Index: Daodan/MinGW/include/strmif.h
===================================================================
--- Daodan/MinGW/include/strmif.h	(revision 1046)
+++ Daodan/MinGW/include/strmif.h	(revision 1046)
@@ -0,0 +1,1159 @@
+#ifndef _STRMIF_H
+#define _STRMIF_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*--- DirectShow Reference - DirectShow Enumerated Types - TVAudioMode Enumeration */
+#define TVAUDIO_MODE_MASK 0x000000FF
+#define TVAUDIO_PRESET_MASK 0x0000FF00
+/*--- DirectShow Reference - DirectShow Data Types */
+typedef LONGLONG REFERENCE_TIME;
+typedef double REFTIME;
+/*--- DirectShow Reference - Constants and GUIDs */
+enum {
+	MERIT_PREFERRED = 0x800000,
+	MERIT_NORMAL = 0x600000,
+	MERIT_UNLIKELY = 0x400000,
+	MERIT_DO_NOT_USE = 0x200000,
+	MERIT_SW_COMPRESSOR = 0x100000,
+	MERIT_HW_COMPRESSOR = 0x100050
+};
+/*--- DirectShow Reference - DirectShow Enumerated Types */
+typedef enum _AM_AUDIO_RENDERER_STAT_PARAM {
+	AM_AUDREND_STAT_PARAM_BREAK_COUNT = 1,
+	AM_AUDREND_STAT_PARAM_SLAVE_MODE,
+	AM_AUDREND_STAT_PARAM_SILENCE_DUR,
+	AM_AUDREND_STAT_PARAM_LAST_BUFFER_DUR,
+	AM_AUDREND_STAT_PARAM_DISCONTINUITIES,
+	AM_AUDREND_STAT_PARAM_SLAVE_RATE,
+	AM_AUDREND_STAT_PARAM_SLAVE_DROPWRITE_DUR,
+	AM_AUDREND_STAT_PARAM_SLAVE_HIGHLOWERROR,
+	AM_AUDREND_STAT_PARAM_SLAVE_LASTHIGHLOWERROR,
+	AM_AUDREND_STAT_PARAM_SLAVE_ACCUMERROR,
+	AM_AUDREND_STAT_PARAM_BUFFERFULLNESS,
+	AM_AUDREND_STAT_PARAM_JITTER
+} AM_AUDIO_RENDERER_STAT_PARAM;
+typedef enum _AM_DVD_GRAPH_FLAGS {
+	AM_DVD_HWDEC_PREFER = 0x01,
+	AM_DVD_HWDEC_ONLY = 0x02,
+	AM_DVD_SWDEC_PREFER = 0x04,
+	AM_DVD_SWDEC_ONLY = 0x08,
+	AM_DVD_NOVPE = 0x100,
+	AM_DVD_VMR9_ONLY = 0x800,
+	AM_DVD_EVR_ONLY = 0x1000
+} AM_DVD_GRAPH_FLAGS;
+typedef enum _AM_DVD_STREAM_FLAGS {
+	AM_DVD_STREAM_VIDEO = 0x01,
+	AM_DVD_STREAM_AUDIO = 0x02,
+	AM_DVD_STREAM_SUBPIC = 0x04
+} AM_DVD_STREAM_FLAGS;
+typedef enum _AM_FILTER_MISC_FLAGS {
+	AM_FILTER_MISC_FLAGS_IS_RENDERER = 0x00000001,
+	AM_FILTER_MISC_FLAGS_IS_SOURCE = 0x00000002
+} AM_FILTER_MISC_FLAGS;
+typedef enum _AM_GRAPH_CONFIG_RECONNECT_FLAGS {
+	AM_GRAPH_CONFIG_RECONNECT_DIRECTCONNECT = 0x00000001,
+	AM_GRAPH_CONFIG_RECONNECT_CACHE_REMOVED_FILTERS = 0x00000002,
+	AM_GRAPH_CONFIG_RECONNECT_USE_ONLY_CACHED_FILTERS = 0x00000004
+} AM_GRAPH_CONFIG_RECONNECT_FLAGS;
+typedef enum _AM_INTF_SEARCH_FLAGS {
+	AM_INTF_SEARCH_INPUT_PIN = 0x00000001,
+	AM_INTF_SEARCH_OUTPUT_PIN = 0x00000002,
+	AM_INTF_SEARCH_FILTER = 0x00000004
+} AM_INTF_SEARCH_FLAGS;
+typedef enum _AM_OVERLAY_NOTIFY_FLAGS {
+	AM_OVERLAY_NOTIFY_VISIBLE_CHANGE = 0x00000001,
+	AM_OVERLAY_NOTIFY_SOURCE_CHANGE = 0x00000002,
+	AM_OVERLAY_NOTIFY_DEST_CHANGE = 0x00000004
+} AM_OVERLAY_NOTIFY_FLAGS;
+typedef enum _AM_PIN_CONNECTION_BLOCK_FLAGS {
+	AM_PIN_FLOW_CONTROL_BLOCK = 0x00000001,
+	AM_PIN_PUSH_THROUGH_DATA = 0x00000002
+} AM_PIN_CONNECTION_BLOCK_FLAGS;
+typedef enum _AM_PUSHSOURCE_FLAGS {
+	AM_PUSHSOURCECAPS_INTERNAL_RM = 0x00000001,
+	AM_PUSHSOURCECAPS_NOT_LIVE = 0x00000002,
+	AM_PUSHSOURCECAPS_PRIVATE_CLOCK = 0x00000004,
+	AM_PUSHSOURCEREQS_USE_STREAM_CLOCK = 0x00010000
+} AM_PUSHSOURCE_FLAGS;
+typedef enum tagAM_SAMPLE_PROPERTY_FLAGS {
+	AM_SAMPLE_SPLICEPOINT = 0x01,
+	AM_SAMPLE_PREROLL = 0x02,
+	AM_SAMPLE_DATADISCONTINUITY = 0x04,
+	AM_SAMPLE_TYPECHANGED = 0x08,
+	AM_SAMPLE_TIMEVALID = 0x10,
+	AM_SAMPLE_TIMEDISCONTINUITY = 0x40,
+	AM_SAMPLE_FLUSH_ON_PAUSE = 0x80,
+	AM_SAMPLE_STOPVALID = 0x100,
+	AM_SAMPLE_ENDOFSTREAM = 0x200,
+	AM_STREAM_MEDIA = 0,
+	AM_STREAM_CONTROL = 1
+} AM_SAMPLE_PROPERTY_FLAGS;
+typedef enum AM_SEEKING_SeekingCapabilities {
+	AM_SEEKING_CanSeekAbsolute = 0x1,
+	AM_SEEKING_CanSeekForwards = 0x2,
+	AM_SEEKING_CanSeekBackwards = 0x4,
+	AM_SEEKING_CanGetCurrentPos = 0x8,
+	AM_SEEKING_CanGetStopPos = 0x10,
+	AM_SEEKING_CanGetDuration = 0x20,
+	AM_SEEKING_CanPlayBackwards = 0x40,
+	AM_SEEKING_CanDoSegments = 0x80,
+	AM_SEEKING_Source = 0x100
+} AM_SEEKING_SEEKING_CAPABILITIES;
+typedef enum {
+	AM_STREAM_INFO_START_DEFINED = 0x00000001,
+	AM_STREAM_INFO_STOP_DEFINED = 0x00000002,
+	AM_STREAM_INFO_DISCARDING = 0x00000004,
+	AM_STREAM_INFO_STOP_SEND_EXTRA = 0x00000010
+} AM_STREAM_INFO_FLAGS;
+enum AMOVERLAYFX {
+	AMOVERFX_NOFX = 0x00000000,
+	AMOVERFX_MIRRORLEFTRIGHT = 0x00000002,
+	AMOVERFX_MIRRORUPDOWN = 0x00000004,
+	AMOVERFX_DEINTERLACE = 0x00000008
+};
+typedef enum _AMRESCTL_RESERVEFLAGS {
+	AMRESCTL_RESERVEFLAGS_RESERVE = 0x00,
+	AMRESCTL_RESERVEFLAGS_UNRESERVE = 0x01
+} AMRESCTL_RESERVEFLAGS;
+typedef enum tagAMTunerModeType {
+	AMTUNER_MODE_DEFAULT = 0x0000,
+	AMTUNER_MODE_TV = 0x0001,
+	AMTUNER_MODE_FM_RADIO = 0x0002,
+	AMTUNER_MODE_AM_RADIO = 0x0004,
+	AMTUNER_MODE_DSS = 0x0008
+} AMTunerModeType;
+typedef enum tagAnalogVideoStandard {
+	AnalogVideo_None = 0x00000000,
+	AnalogVideo_NTSC_M = 0x00000001,
+	AnalogVideo_NTSC_M_J = 0x00000002,
+	AnalogVideo_NTSC_433 = 0x00000004,
+	AnalogVideo_PAL_B = 0x00000010,
+	AnalogVideo_PAL_D = 0x00000020,
+	AnalogVideo_PAL_H = 0x00000080,
+	AnalogVideo_PAL_I = 0x00000100,
+	AnalogVideo_PAL_M = 0x00000200,
+	AnalogVideo_PAL_N = 0x00000400,
+	AnalogVideo_PAL_60 = 0x00000800,
+	AnalogVideo_SECAM_B = 0x00001000,
+	AnalogVideo_SECAM_D = 0x00002000,
+	AnalogVideo_SECAM_G = 0x00004000,
+	AnalogVideo_SECAM_H = 0x00008000,
+	AnalogVideo_SECAM_K = 0x00010000,
+	AnalogVideo_SECAM_K1 = 0x00020000,
+	AnalogVideo_SECAM_L = 0x00040000,
+	AnalogVideo_SECAM_L1 = 0x00080000,
+	AnalogVideo_PAL_N_COMBO = 0x00100000
+} AnalogVideoStandard;
+typedef enum {
+	CameraControl_Flags_Auto = 0x0001,
+	CameraControl_Flags_Manual = 0x0002
+} CameraControlFlags;
+typedef enum {
+	CameraControl_Pan = 1,
+	CameraControl_Tilt,
+	CameraControl_Roll,
+	CameraControl_Zoom,
+	CameraControl_Exposure,
+	CameraControl_Iris,
+	CameraControl_Focus
+} CameraControlProperty;
+typedef enum {
+	CompressionCaps_CanQuality = 0x01,
+	CompressionCaps_CanCrunch = 0x02,
+	CompressionCaps_CanKeyFrame = 0x04,
+	CompressionCaps_CanBFrame = 0x08,
+	CompressionCaps_CanWindow = 0x10
+} CompressionCaps;
+typedef enum {
+	DECIMATION_LEGACY,
+	DECIMATION_USE_DECODER_ONLY,
+	DECIMATION_USE_VIDEOPORT_ONLY,
+	DECIMATION_USE_OVERLAY_ONLY,
+	DECIMATION_DEFAULT
+} DECIMATION_USAGE;
+typedef enum tagDVD_AUDIO_APPMODE {
+	DVD_AudioMode_None = 0,
+	DVD_AudioMode_Karaoke = 1,
+	DVD_AudioMode_Surround = 2,
+	DVD_AudioMode_Other = 3
+} DVD_AUDIO_APPMODE;
+typedef enum tagDVD_AUDIO_FORMAT {
+	DVD_AudioFormat_AC3 = 0,
+	DVD_AudioFormat_MPEG1 = 1,
+	DVD_AudioFormat_MPEG1_DRC = 2,
+	DVD_AudioFormat_MPEG2 = 3,
+	DVD_AudioFormat_MPEG2_DRC = 4,
+	DVD_AudioFormat_LPCM = 5,
+	DVD_AudioFormat_DTS = 6,
+	DVD_AudioFormat_SDDS = 7,
+	DVD_AudioFormat_Other = 8
+} DVD_AUDIO_FORMAT;
+typedef enum tagDVD_AUDIO_LANG_EXT {
+	DVD_AUD_EXT_NotSpecified = 0,
+	DVD_AUD_EXT_Captions = 1,
+	DVD_AUD_EXT_VisuallyImpaired = 2,
+	DVD_AUD_EXT_DirectorComments1 = 3,
+	DVD_AUD_EXT_DirectorComments2 = 4
+} DVD_AUDIO_LANG_EXT;
+typedef enum {
+	DVD_CMD_FLAG_None = 0x00000000,
+	DVD_CMD_FLAG_Flush = 0x00000001,
+	DVD_CMD_FLAG_SendEvents = 0x00000002,
+	DVD_CMD_FLAG_Block = 0x00000004,
+	DVD_CMD_FLAG_StartWhenRendered = 0x00000008,
+	DVD_CMD_FLAG_EndAfterRendered = 0x00000010
+} DVD_CMD_FLAGS;
+typedef enum tagDVD_DISC_SIDE {
+	DVD_SIDE_A,
+	DVD_SIDE_B
+} DVD_DISC_SIDE;
+typedef enum tagDVD_DOMAIN {
+	DVD_DOMAIN_FirstPlay,
+	DVD_DOMAIN_VideoManagerMenu,
+	DVD_DOMAIN_VideoTitleSetMenu,
+	DVD_DOMAIN_Title,
+	DVD_DOMAIN_Stop
+} DVD_DOMAIN;
+typedef enum tagDVD_FRAMERATE {
+	DVD_FPS_25 = 1,
+	DVD_FPS_30NonDrop = 3
+} DVD_FRAMERATE;
+typedef enum tagDVD_KARAOKE_ASSIGNMENT {
+	DVD_Assignment_reserved0 = 0,
+	DVD_Assignment_reserved1 = 1,
+	DVD_Assignment_LR = 2,
+	DVD_Assignment_LRM = 3,
+	DVD_Assignment_LR1 = 4,
+	DVD_Assignment_LRM1 = 5,
+	DVD_Assignment_LR12 = 6,
+	DVD_Assignment_LRM12 = 7
+} DVD_KARAOKE_ASSIGNMENT;
+typedef enum tagDVD_KARAOKE_CONTENTS {
+	DVD_Karaoke_GuideVocal1 = 0x0001,
+	DVD_Karaoke_GuideVocal2 = 0x0002,
+	DVD_Karaoke_GuideMelody1 = 0x0004,
+	DVD_Karaoke_GuideMelody2 = 0x0008,
+	DVD_Karaoke_GuideMelodyA = 0x0010,
+	DVD_Karaoke_GuideMelodyB = 0x0020,
+	DVD_Karaoke_SoundEffectA = 0x0040,
+	DVD_Karaoke_SoundEffectB = 0x0080
+} DVD_KARAOKE_CONTENTS;
+typedef enum tagDVD_KARAOKE_DOWNMIX {
+	DVD_Mix_0to0 = 0x0001,
+	DVD_Mix_1to0 = 0x0002,
+	DVD_Mix_2to0 = 0x0004,
+	DVD_Mix_3to0 = 0x0008,
+	DVD_Mix_4to0 = 0x0010,
+	DVD_Mix_Lto0 = 0x0020,
+	DVD_Mix_Rto0 = 0x0040,
+	DVD_Mix_0to1 = 0x0100,
+	DVD_Mix_1to1 = 0x0200,
+	DVD_Mix_2to1 = 0x0400,
+	DVD_Mix_3to1 = 0x0800,
+	DVD_Mix_4to1 = 0x1000,
+	DVD_Mix_Lto1 = 0x2000,
+	DVD_Mix_Rto1 = 0x4000
+} DVD_KARAOKE_DOWNMIX;
+typedef enum tagDVD_MENU_ID {
+	DVD_MENU_Title = 2,
+	DVD_MENU_Root = 3,
+	DVD_MENU_Subpicture = 4,
+	DVD_MENU_Audio = 5,
+	DVD_MENU_Angle = 6,
+	DVD_MENU_Chapter = 7
+} DVD_MENU_ID;
+typedef enum {
+	DVD_ResetOnStop = 1,
+	DVD_NotifyParentalLevelChange = 2,
+	DVD_HMSF_TimeCodeEvents = 3,
+	DVD_AudioDuringFFwdRew = 4,
+	DVD_EnableNonblockingAPIs = 5,
+	DVD_CacheSizeInMB = 6,
+	DVD_EnablePortableBookmarks = 7
+} DVD_OPTION_FLAG;
+typedef enum tagDVD_PARENTAL_LEVEL {
+	DVD_PARENTAL_LEVEL_8 = 0x8000,
+	DVD_PARENTAL_LEVEL_7 = 0x4000,
+	DVD_PARENTAL_LEVEL_6 = 0x2000,
+	DVD_PARENTAL_LEVEL_5 = 0x1000,
+	DVD_PARENTAL_LEVEL_4 = 0x0800,
+	DVD_PARENTAL_LEVEL_3 = 0x0400,
+	DVD_PARENTAL_LEVEL_2 = 0x0200,
+	DVD_PARENTAL_LEVEL_1 = 0x0100
+} DVD_PARENTAL_LEVEL;
+typedef enum tagDVD_PREFERRED_DISPLAY_MODE {
+	DISPLAY_CONTENT_DEFAULT = 0,
+	DISPLAY_16x9 = 1,
+	DISPLAY_4x3_PANSCAN_PREFERRED = 2,
+	DISPLAY_4x3_LETTERBOX_PREFERRED = 3
+} DVD_PREFERRED_DISPLAY_MODE;
+typedef enum tagDVD_RELATIVE_BUTTON {
+	DVD_Relative_Upper = 1,
+	DVD_Relative_Lower = 2,
+	DVD_Relative_Left = 3,
+	DVD_Relative_Right = 4
+} DVD_RELATIVE_BUTTON;
+typedef enum tagDVD_SUBPICTURE_LANG_EXT {
+	DVD_SP_EXT_NotSpecified = 0,
+	DVD_SP_EXT_Caption_Normal = 1,
+	DVD_SP_EXT_Caption_Big = 2,
+	DVD_SP_EXT_Caption_Children = 3,
+	DVD_SP_EXT_CC_Normal = 5,
+	DVD_SP_EXT_CC_Big = 6,
+	DVD_SP_EXT_CC_Children = 7,
+	DVD_SP_EXT_Forced = 9,
+	DVD_SP_EXT_DirectorComments_Normal = 13,
+	DVD_SP_EXT_DirectorComments_Big = 14,
+	DVD_SP_EXT_DirectorComments_Children = 15
+} DVD_SUBPICTURE_LANG_EXT;
+typedef enum tagDVD_SUBPICTURE_TYPE {
+	DVD_SPType_NotSpecified = 0,
+	DVD_SPType_Language = 1,
+	DVD_SPType_Other = 2
+} DVD_SUBPICTURE_TYPE;
+typedef enum tagDVD_SUBPICTURE_CODING {
+	DVD_SPCoding_RunLength = 0,
+	DVD_SPCoding_Extended = 1,
+	DVD_SPCoding_Other = 2
+} DVD_SUBPICTURE_CODING;
+enum DVD_TextCharSet {
+	DVD_CharSet_Unicode = 0,
+	DVD_CharSet_ISO646 = 1,
+	DVD_CharSet_JIS_Roman_Kanji = 2,
+	DVD_CharSet_ISO8859_1 = 3,
+	DVD_CharSet_ShiftJIS_Kanji_Roman_Katakana = 4
+};
+enum DVD_TextStringType {
+	DVD_Struct_Volume = 0x01,
+	DVD_Struct_Title = 0x02,
+	DVD_Struct_ParentalID = 0x03,
+	DVD_Struct_PartOfTitle = 0x04,
+	DVD_Struct_Cell = 0x05,
+	DVD_Stream_Audio = 0x10,
+	DVD_Stream_Subpicture = 0x11,
+	DVD_Stream_Angle = 0x12,
+	DVD_Channel_Audio = 0x20,
+	DVD_General_Name = 0x30,
+	DVD_General_Comments = 0x31,
+	DVD_Title_Series = 0x38,
+	DVD_Title_Movie = 0x39,
+	DVD_Title_Video = 0x3a,
+	DVD_Title_Album = 0x3b,
+	DVD_Title_Song = 0x3c,
+	DVD_Title_Other = 0x3f,
+	DVD_Title_Sub_Series = 0x40,
+	DVD_Title_Sub_Movie = 0x41,
+	DVD_Title_Sub_Video = 0x42,
+	DVD_Title_Sub_Album = 0x43,
+	DVD_Title_Sub_Song = 0x44,
+	DVD_Title_Sub_Other = 0x47,
+	DVD_Title_Orig_Series = 0x48,
+	DVD_Title_Orig_Movie = 0x49,
+	DVD_Title_Orig_Video = 0x4a,
+	DVD_Title_Orig_Album = 0x4b,
+	DVD_Title_Orig_Song = 0x4c,
+	DVD_Title_Orig_Other = 0x4f,
+	DVD_Other_Scene = 0x50,
+	DVD_Other_Cut = 0x51,
+	DVD_Other_Take = 0x52
+};
+typedef enum tagDVD_TIMECODE_FLAGS {
+	DVD_TC_FLAG_25fps = 0x00000001,
+	DVD_TC_FLAG_30fps = 0x00000002,
+	DVD_TC_FLAG_DropFrame = 0x00000004,
+	DVD_TC_FLAG_Interpolated = 0x00000008
+} DVD_TIMECODE_FLAGS;
+typedef enum tagDVD_TITLE_APPMODE {
+	DVD_AppMode_Not_Specified = 0,
+	DVD_AppMode_Karaoke = 1,
+	DVD_AppMode_Other = 3
+} DVD_TITLE_APPMODE;
+typedef enum tagDVD_VIDEO_COMPRESSION {
+	DVD_VideoCompression_Other = 0,
+	DVD_VideoCompression_MPEG1 = 1,
+	DVD_VideoCompression_MPEG2 = 2
+} DVD_VIDEO_COMPRESSION;
+typedef enum _DVDECODERRESOLUTION {
+	DVDECODERRESOLUTION_720x480 = 1000,
+	DVDECODERRESOLUTION_360x240 = 1001,
+	DVDECODERRESOLUTION_180x120 = 1002,
+	DVDECODERRESOLUTION_88x60 = 1003
+} DVDECODERRESOLUTION;
+typedef enum _DVRESOLUTION {
+	DVRESOLUTION_FULL = 1000,
+	DVRESOLUTION_HALF = 1001,
+	DVRESOLUTION_QUARTER = 1002,
+	DVRESOLUTION_DC = 1003
+} DVRESOLUTION;
+typedef enum _DVENCODERFORMAT {
+	DVENCODERFORMAT_DVSD = 2007,
+	DVENCODERFORMAT_DVHD = 2008,
+	DVENCODERFORMAT_DVSL = 2009
+} DVENCODERFORMAT;
+typedef enum _DVENCODERRESOLUTION {
+	DVENCODERRESOLUTION_720x480 = 2012,
+	DVENCODERRESOLUTION_360x240 = 2013,
+	DVENCODERRESOLUTION_180x120 = 2014,
+	DVENCODERRESOLUTION_88x60 = 2015
+} DVENCODERRESOLUTION;
+typedef enum _DVENCODERVIDEOFORMAT {
+	DVENCODERVIDEOFORMAT_NTSC = 2000,
+	DVENCODERVIDEOFORMAT_PAL = 2001
+} DVENCODERVIDEOFORMAT;
+typedef enum _FilterState {
+	State_Stopped,
+	State_Paused,
+	State_Running
+} FILTER_STATE;
+typedef enum {
+	INTERLEAVE_NONE,
+	INTERLEAVE_CAPTURE,
+	INTERLEAVE_FULL,
+	INTERLEAVE_NONE_BUFFERED
+} InterleavingMode;
+typedef enum {
+	PhysConn_Video_Tuner = 1,
+	PhysConn_Video_Composite,
+	PhysConn_Video_SVideo,
+	PhysConn_Video_RGB,
+	PhysConn_Video_YRYBY,
+	PhysConn_Video_SerialDigital,
+	PhysConn_Video_ParallelDigital,
+	PhysConn_Video_SCSI,
+	PhysConn_Video_AUX,
+	PhysConn_Video_1394,
+	PhysConn_Video_USB,
+	PhysConn_Video_VideoDecoder,
+	PhysConn_Video_VideoEncoder,
+	PhysConn_Video_SCART,
+	PhysConn_Video_Black,
+	PhysConn_Audio_Tuner = 4096,
+	PhysConn_Audio_Line,
+	PhysConn_Audio_Mic,
+	PhysConn_Audio_AESDigital,
+	PhysConn_Audio_SPDIFDigital,
+	PhysConn_Audio_SCSI,
+	PhysConn_Audio_AUX,
+	PhysConn_Audio_1394,
+	PhysConn_Audio_USB,
+	PhysConn_Audio_AudioDecoder
+} PhysicalConnectorType;
+typedef enum _PinDirection {
+	PINDIR_INPUT,
+	PINDIR_OUTPUT
+} PIN_DIRECTION;
+typedef enum {
+	Famine,
+	Flood
+} QualityMessageType;
+enum {
+	REG_PINFLAG_B_ZERO = 0x1,
+	REG_PINFLAG_B_RENDERER = 0x2,
+	REG_PINFLAG_B_MANY = 0x4,
+	REG_PINFLAG_B_OUTPUT = 0x8
+} REG_PINFLAG;
+typedef enum _REM_FILTER_FLAGS {
+	REMFILTERF_LEAVECONNECTED = 0x00000001
+} REM_FILTER_FLAGS;
+typedef enum {
+	TunerInputCable,
+	TunerInputAntenna
+} TunerInputType;
+typedef enum tagTVAudioMode {
+	AMTVAUDIO_MODE_MONO = 0x0001,
+	AMTVAUDIO_MODE_STEREO = 0x0002,
+	AMTVAUDIO_MODE_LANG_A = 0x0010,
+	AMTVAUDIO_MODE_LANG_B = 0x0020,
+	AMTVAUDIO_MODE_LANG_C = 0x0040,
+	AMTVAUDIO_PRESET_STEREO = 0x0200,
+	AMTVAUDIO_PRESET_LANG_A = 0x1000,
+	AMTVAUDIO_PRESET_LANG_B = 0x2000,
+	AMTVAUDIO_PRESET_LANG_C = 0x4000
+} TVAudioMode;
+typedef enum {
+	UOP_FLAG_Play_Title_Or_AtTime = 0x00000001,
+	UOP_FLAG_Play_Chapter = 0x00000002,
+	UOP_FLAG_Play_Title = 0x00000004,
+	UOP_FLAG_Stop = 0x00000008,
+	UOP_FLAG_ReturnFromSubMenu = 0x00000010,
+	UOP_FLAG_Play_Chapter_Or_AtTime = 0x00000020,
+	UOP_FLAG_PlayPrev_Or_Replay_Chapter = 0x00000040,
+	UOP_FLAG_PlayNext_Chapter = 0x00000080,
+	UOP_FLAG_Play_Forwards = 0x00000100,
+	UOP_FLAG_Play_Backwards = 0x00000200,
+	UOP_FLAG_ShowMenu_Title = 0x00000400,
+	UOP_FLAG_ShowMenu_Root = 0x00000800,
+	UOP_FLAG_ShowMenu_SubPic = 0x00001000,
+	UOP_FLAG_ShowMenu_Audio = 0x00002000,
+	UOP_FLAG_ShowMenu_Angle = 0x00004000,
+	UOP_FLAG_ShowMenu_Chapter = 0x00008000,
+	UOP_FLAG_Resume = 0x00010000,
+	UOP_FLAG_Select_Or_Activate_Button = 0x00020000,
+	UOP_FLAG_Still_Off = 0x00040000,
+	UOP_FLAG_Pause_On = 0x00080000,
+	UOP_FLAG_Select_Audio_Stream = 0x00100000,
+	UOP_FLAG_Select_SubPic_Stream = 0x00200000,
+	UOP_FLAG_Select_Angle = 0x00400000,
+	UOP_FLAG_Select_Karaoke_Audio_Presentation_Mode = 0x00800000,
+	UOP_FLAG_Select_Video_Mode_Preference = 0x01000000
+} VALID_UOP_FLAG;
+typedef enum {
+	VfwCaptureDialog_Source = 0x01,
+	VfwCaptureDialog_Format = 0x02,
+	VfwCaptureDialog_Display = 0x04
+} VfwCaptureDialogs;
+typedef enum {
+	VfwCompressDialog_Config = 0x01,
+	VfwCompressDialog_About = 0x02,
+	VfwCompressDialog_QueryConfig = 0x04,
+	VfwCompressDialog_QueryAbout = 0x08
+} VfwCompressDialogs;
+typedef enum tagVideoControlFlags {
+	VideoControlFlag_FlipHorizontal = 0x0001,
+	VideoControlFlag_FlipVertical = 0x0002,
+	VideoControlFlag_ExternalTriggerEnable = 0x0004,
+	VideoControlFlag_Trigger = 0x0008
+} VideoControlFlags;
+typedef enum {
+	ConstantBitRate = 0,
+	VariableBitRateAverage,
+	VariableBitRatePeak
+} VIDEOENCODER_BITRATE_MODE;
+typedef enum tagVideoProcAmpFlags {
+	VideoProcAmp_Flags_Auto = 0x0001,
+	VideoProcAmp_Flags_Manual = 0x0002
+} VideoProcAmpFlags;
+typedef enum tagVideoProcAmpProperty {
+	VideoProcAmp_Brightness,
+	VideoProcAmp_Contrast,
+	VideoProcAmp_Hue,
+	VideoProcAmp_Saturation,
+	VideoProcAmp_Sharpness,
+	VideoProcAmp_Gamma,
+	VideoProcAmp_ColorEnable,
+	VideoProcAmp_WhiteBalance,
+	VideoProcAmp_BacklightCompensation,
+	VideoProcAmp_Gain
+} VideoProcAmpProperty;
+enum VMR_ASPECT_RATIO_MODE {
+	VMR_ARMODE_NONE,
+	VMR_ARMODE_LETTER_BOX
+};
+typedef enum {
+	DeinterlacePref_NextBest = 0x01,
+	DeinterlacePref_BOB = 0x02,
+	DeinterlacePref_Weave = 0x04,
+	DeinterlacePref_Mask = 0x07
+} VMRDeinterlacePrefs;
+typedef enum {
+	DeinterlaceTech_Unknown = 0x0000,
+	DeinterlaceTech_BOBLineReplicate = 0x0001,
+	DeinterlaceTech_BOBVerticalStretch = 0x0002,
+	DeinterlaceTech_MedianFiltering = 0x0004,
+	DeinterlaceTech_EdgeFiltering = 0x0010,
+	DeinterlaceTech_FieldAdaptive = 0x0020,
+	DeinterlaceTech_PixelAdaptive = 0x0040,
+	DeinterlaceTech_MotionVectorSteered = 0x0080
+} VMRDeinterlaceTech;
+typedef enum {
+	MixerPref_NoDecimation = 0x00000001,
+	MixerPref_DecimateOutput = 0x00000002,
+	MixerPref_ARAdjustXorY = 0x00000004,
+	MixerPref_DecimationReserved = 0x00000008,
+	MixerPref_DecimateMask = 0x0000000F,
+	MixerPref_BiLinearFiltering = 0x00000010,
+	MixerPref_PointFiltering = 0x00000020,
+	MixerPref_FilteringMask = 0x000000F0,
+	MixerPref_RenderTargetRGB = 0x00000100,
+	MixerPref_RenderTargetYUV = 0x00001000,
+	MixerPref_RenderTargetYUV420 = 0x00000200,
+	MixerPref_RenderTargetYUV422 = 0x00000400,
+	MixerPref_RenderTargetYUV444 = 0x00000800,
+	MixerPref_RenderTargetReserved = 0x0000E000,
+	MixerPref_RenderTargetMask = 0x0000FF00,
+	MixerPref_DynamicSwitchToBOB = 0x00010000,
+	MixerPref_DynamicDecimateBy2 = 0x00020000,
+	MixerPref_DynamicReserved = 0x000C0000,
+	MixerPref_DynamicMask = 0x000F0000
+} VMRMixerPrefs;
+enum VMRMode {
+	VMRMode_Windowed = 0x00000001,
+	VMRMode_Windowless = 0x00000002,
+	VMRMode_Renderless = 0x00000004,
+	VMRMode_Mask = 0x00000007
+};
+typedef enum {
+	VMRSample_SyncPoint = 0x00000001,
+	VMRSample_Preroll = 0x00000002,
+	VMRSample_Discontinuity = 0x00000004,
+	VMRSample_TimeValid = 0x00000008
+} VMRPresentationFlags;
+typedef enum {
+	RenderPrefs_ForceOffscreen = 0x00000001,
+	RenderPrefs_ForceOverlays = 0x00000002,
+	RenderPrefs_AllowOverlays = 0x00000000,
+	RenderPrefs_AllowOffscreen = 0x00000000,
+	RenderPrefs_DoNotRenderColorKeyAndBorder = 0x00000008,
+	RenderPrefs_RestrictToInitialMonitor = 0x00000010,
+	RenderPrefs_PreferAGPMemWhenMixing = 0x00000020,
+	RenderPrefs_Mask = 0x0000003f
+} VMRRenderPrefs;
+typedef enum {
+	AMAP_PIXELFORMAT_VALID = 0x01,
+	AMAP_3D_TARGET = 0x02,
+	AMAP_ALLOW_SYSMEM = 0x04,
+	AMAP_FORCE_SYSMEM = 0x08,
+	AMAP_DIRECTED_FLIP = 0x10,
+	AMAP_DXVA_TARGET = 0x20
+} VMRSurfaceAllocationFlags;
+/*--- DirectShow Reference - DirectShow Structures */
+typedef struct _AllocatorProperties {
+	long cBuffers;
+	long cbBuffer;
+	long cbAlign;
+	long cbPrefix;
+} ALLOCATOR_PROPERTIES;
+typedef struct {
+	HRESULT hrVPEStatus;
+	BOOL bDvdVolInvalid;
+	BOOL bDvdVolUnknown;
+	BOOL bNoLine21In;
+	BOOL bNoLine21Out;
+	int iNumStreams;
+	int iNumStreamsFailed;
+	DWORD dwFailedStreamsFlag;
+} AM_DVD_RENDERSTATUS;
+typedef struct _AMCOPPCommand {
+	GUID macKDI;
+	GUID guidCommandID;
+	DWORD dwSequence;
+	DWORD cbSizeData;
+	BYTE CommandData[4056];
+} AMCOPPCommand,*LPAMCOPPCommand;
+typedef struct _AMCOPPSignature {
+	BYTE Signature[256];
+} AMCOPPSignature;
+typedef struct _AMCOPPStatusInput {
+	GUID rApp;
+	GUID guidStatusRequestID;
+	DWORD dwSequence;
+	DWORD cbSizeData;
+	BYTE StatusData[4056];
+} AMCOPPStatusInput,*LPAMCOPPStatusInput;
+typedef struct _AMCOPPStatusOutput {
+	GUID macKDI;
+	DWORD cbSizeData;
+	BYTE COPPStatus[4076];
+} AMCOPPStatusOutput,*LPAMCOPPStatusOutput;
+typedef struct _AMMediaType {
+	GUID majortype;
+	GUID subtype;
+	BOOL bFixedSizeSamples;
+	BOOL bTemporalCompression;
+	ULONG lSampleSize;
+	GUID formattype;
+	IUnknown *pUnk;
+	ULONG cbFormat;
+	BYTE *pbFormat;
+} AM_MEDIA_TYPE;
+typedef struct tagAM_SAMPLE2_PROPERTIES {
+	DWORD cbData;
+	DWORD dwTypeSpecificFlags;
+	DWORD dwSampleFlags;
+	LONG lActual;
+	REFERENCE_TIME tStart;
+	REFERENCE_TIME tStop;
+	DWORD dwStreamId;
+	AM_MEDIA_TYPE *pMediaType;
+	BYTE *pbBuffer;
+	LONG cbBuffer;
+} AM_SAMPLE2_PROPERTIES;
+typedef struct {
+	REFERENCE_TIME tStart;
+	REFERENCE_TIME tStop;
+	DWORD dwStartCookie;
+	DWORD dwStopCookie;
+	DWORD dwFlags;
+} AM_STREAM_INFO;
+typedef struct {
+	const CLSID *clsMajorType;
+	const CLSID *clsMinorType;
+} REGPINTYPES;
+typedef REGPINTYPES AMOVIESETUP_MEDIATYPE,*PAMOVIESETUP_MEDIATYPE,*LPAMOVIESETUP_MEDIATYPE;
+typedef struct {
+	LPWSTR strName;
+	BOOL bRendered;
+	BOOL bOutput;
+	BOOL bZero;
+	BOOL bMany;
+	const CLSID *clsConnectsToFilter;
+	const WCHAR *strConnectsToPin;
+	UINT nMediaTypes;
+	const REGPINTYPES *lpMediaType;
+} REGFILTERPINS;
+typedef REGFILTERPINS AMOVIESETUP_PIN,*PAMOVIESETUP_PIN,*LPAMOVIESETUP_PIN;
+typedef struct _AMOVIESETUP_FILTER {
+	const CLSID *clsID;
+	const WCHAR *strName;
+	DWORD dwMerit;
+	UINT nPins;
+	const AMOVIESETUP_PIN *lpPin;
+} AMOVIESETUP_FILTER,*PAMOVIESETUP_FILTER,*LPAMOVIESETUP_FILTER;
+typedef struct _AUDIO_STREAM_CONFIG_CAPS {
+	GUID guid;
+	ULONG MinimumChannels;
+	ULONG MaximumChannels;
+	ULONG ChannelsGranularity;
+	ULONG MinimumBitsPerSample;
+	ULONG MaximumBitsPerSample;
+	ULONG BitsPerSampleGranularity;
+	ULONG MinimumSampleFrequency;
+	ULONG MaximumSampleFrequency;
+	ULONG SampleFrequencyGranularity;
+} AUDIO_STREAM_CONFIG_CAPS;
+struct CodecAPIEventData {
+	GUID guid;
+	DWORD dataLength;
+	DWORD reserved[3];
+};
+typedef struct tagCOLORKEY {
+	DWORD KeyType;
+	DWORD PaletteIndex;
+	COLORREF LowColorValue;
+	COLORREF HighColorValue;
+} COLORKEY;
+#define CK_NOCOLORKEY 0x00000000
+#define CK_INDEX 0x00000001
+#define CK_RGB 0x00000002
+typedef struct {
+	DWORD dw1;
+	DWORD dw2;
+} DDCOLORKEY;
+typedef struct tagDVD_AudioAttributes {
+	DVD_AUDIO_APPMODE AppMode;
+	DVD_AUDIO_FORMAT AudioFormat;
+	LCID Language;
+	DVD_AUDIO_LANG_EXT LanguageExtension;
+	BOOL fHasMultichannelInfo;
+	DWORD dwFrequency;
+	BYTE bQuantization;
+	BYTE bNumberOfChannels;
+	DWORD dwReserved[2];
+} DVD_AudioAttributes;
+typedef struct tagDVD_DECODER_CAPS {
+	DWORD dwSize;
+	DWORD dwAudioCaps;
+	double dFwdMaxRateVideo;
+	double dFwdMaxRateAudio;
+	double dFwdMaxRateSP;
+	double dBwdMaxRateVideo;
+	double dBwdMaxRateAudio;
+	double dBwdMaxRateSP;
+	DWORD dwRes1;
+	DWORD dwRes2;
+	DWORD dwRes3;
+	DWORD dwRes4;
+} DVD_DECODER_CAPS;
+#define DVD_AUDIO_CAPS_AC3 0x00000001
+#define DVD_AUDIO_CAPS_MPEG2 0x00000002
+#define DVD_AUDIO_CAPS_LPCM 0x00000004
+#define DVD_AUDIO_CAPS_DTS 0x00000008
+#define DVD_AUDIO_CAPS_SDDS 0x00000010
+typedef struct tagDVD_HMSF_TIMECODE {
+	BYTE bHours;
+	BYTE bMinutes;
+	BYTE bSeconds;
+	BYTE bFrames;
+} DVD_HMSF_TIMECODE;
+typedef struct tagDVD_KaraokeAttributes {
+	BYTE bVersion;
+	BOOL fMasterOfCeremoniesInGuideVocal1;
+	BOOL fDuet;
+	DVD_KARAOKE_ASSIGNMENT ChannelAssignment;
+	WORD wChannelContents[8];
+} DVD_KaraokeAttributes;
+typedef struct tagDVD_MUA_Coeff {
+	double log2_alpha;
+	double log2_beta;
+} DVD_MUA_Coeff;
+typedef struct tagDVD_MUA_MixingInfo {
+	BOOL fMixTo0;
+	BOOL fMixTo1;
+	BOOL fMix0InPhase;
+	BOOL fMix1InPhase;
+	DWORD dwSpeakerPosition;
+} DVD_MUA_MixingInfo;
+#define KSAUDIO_SPEAKER_LEFT 0x00000001
+#define KSAUDIO_SPEAKER_RIGHT 0x00000002
+#define KSAUDIO_SPEAKER_CENTER 0x00000004
+#define KSAUDIO_SPEAKER_SURROUND_LEFT 0x00000008
+#define KSAUDIO_SPEAKER_SURROUND_RIGHT 0x00000010
+#define KSAUDIO_SPEAKER_SUBWOOFER 0x00000020
+#define KSAUDIO_SPEAKER_LEFT_OF_CENTER 0x00000040
+#define KSAUDIO_SPEAKER_RIGHT_OF_CENTER 0x00000080
+#define KSAUDIO_SPEAKER_SURROUND_MONO 0x00000100
+#define KSAUDIO_SPEAKER_SIDE_LEFT 0x00000200
+#define KSAUDIO_SPEAKER_SIDE_RIGHT 0x00000400
+#define KSAUDIO_SPEAKER_TOP 0x00000800
+typedef struct tagDVD_MultichannelAudioAttributes {
+	DVD_MUA_MixingInfo Info[8];
+	DVD_MUA_Coeff Coeff[8];
+} DVD_MultichannelAudioAttributes;
+typedef struct tagDVD_PLAYBACK_LOCATION {
+	ULONG TitleNum;
+	ULONG ChapterNum;
+	ULONG TimeCode;
+} DVD_PLAYBACK_LOCATION;
+typedef struct tagDVD_PLAYBACK_LOCATION2 {
+	ULONG TitleNum;
+	ULONG ChapterNum;
+	DVD_HMSF_TIMECODE TimeCode;
+	ULONG TimeCodeFlags;
+} DVD_PLAYBACK_LOCATION2;
+typedef struct tagDVD_SubpictureAttributes {
+	DVD_SUBPICTURE_TYPE Type;
+	DVD_SUBPICTURE_CODING CodingMode;
+	LCID Language;
+	DVD_SUBPICTURE_LANG_EXT LanguageExtension;
+} DVD_SubpictureAttributes;
+typedef struct tagDVD_TIMECODE {
+	ULONG Hours1:4;
+	ULONG Hours10:4;
+	ULONG Minutes1:4;
+	ULONG Minutes10:4;
+	ULONG Seconds1:4;
+	ULONG Seconds10:4;
+	ULONG Frames1:4;
+	ULONG Frames10:2;
+	ULONG FrameRateCode:2;
+} DVD_TIMECODE;
+typedef struct tagDVD_VideoAttributes {
+	BOOL fPanscanPermitted;
+	BOOL fLetterboxPermitted;
+	ULONG ulAspectX;
+	ULONG ulAspectY;
+	ULONG ulFrameRate;
+	ULONG ulFrameHeight;
+	DVD_VIDEO_COMPRESSION Compression;
+	BOOL fLine21Field1InGOP;
+	BOOL fLine21Field2InGOP;
+	ULONG ulSourceResolutionX;
+	ULONG ulSourceResolutionY;
+	BOOL fIsSourceLetterboxed;
+	BOOL fIsFilmMode;
+} DVD_VideoAttributes;
+struct tagDVD_MenuAttributes {
+	BOOL fCompatibleRegion[8];
+	DVD_VideoAttributes VideoAttributes;
+	BOOL fAudioPresent;
+	DVD_AudioAttributes AudioAttributes;
+	BOOL fSubpicturePresent;
+	DVD_SubpictureAttributes SubpictureAttributes;
+} DVD_MenuAttributes;
+typedef struct tagDVD_TitleMainAttributes {
+	DVD_TITLE_APPMODE AppMode;
+	DVD_VideoAttributes VideoAttributes;
+	ULONG ulNumberOfAudioStreams;
+	DVD_AudioAttributes AudioAttributes[8];
+	DVD_MultichannelAudioAttributes MultichannelAudioAttributes[8];
+	ULONG ulNumberOfSubpictureStreams;
+	DVD_SubpictureAttributes SubpictureAttributes[32];
+} DVD_TitleAttributes;
+typedef struct tag_DVINFO {
+	DWORD dwDVAAuxSrc;
+	DWORD dwDVAAuxCtl;
+	DWORD dwDVAAuxSrc1;
+	DWORD dwDVAAuxCtl1;
+	DWORD dwDVVAuxSrc;
+	DWORD dwDVVAuxCtl;
+	DWORD dwDVReserved[2];
+} DVINFO,*PDVINFO;
+/***************
+#define MAX_FILTER_NAME 128
+typedef struct _FilterInfo {
+	WCHAR achName[MAX_FILTER_NAME];
+	IFilterGraph *pGraph;
+} FILTER_INFO;
+***************/
+typedef struct _NORMALIZEDRECT {
+	float left;
+	float top;
+	float right;
+	float bottom;
+} NORMALIZEDRECT,*PNORMALIZEDRECT;
+#define MAX_PIN_NAME 128
+typedef struct _PinInfo {
+	IBaseFilter *pFilter;
+	PIN_DIRECTION dir;
+	WCHAR achName[MAX_PIN_NAME];
+} PIN_INFO;
+typedef struct{
+	QualityMessageType Type;
+	long Proportion;
+	REFERENCE_TIME Late;
+	REFERENCE_TIME TimeStamp;
+} Quality;
+typedef struct {
+	CLSID clsMedium;
+	DWORD dw1;
+	DWORD dw2;
+} REGPINMEDIUM;
+typedef struct {
+	DWORD dwFlags;
+	UINT cInstances;
+	UINT nMediaTypes;
+	const REGPINTYPES *lpMediaType;
+	UINT nMediums;
+	const REGPINMEDIUM *lpMedium;
+	const CLSID *clsPinCategory;
+} REGFILTERPINS2;
+typedef struct {
+	DWORD dwVersion;
+	DWORD dwMerit;
+	union {
+		struct {
+			ULONG cPins;
+			const REGFILTERPINS *rgPins;
+		};
+		struct {
+			ULONG cPins2;
+			const REGFILTERPINS2 *rgPins2;
+		};
+	};
+} REGFILTER2;
+typedef struct {
+	ULONG stream_id;
+	DWORD dwMediaSampleContent;
+	ULONG ulSubstreamFilterValue;
+	int iDataOffset;
+} STREAM_ID_MAP;
+#define MPEG2_PROGRAM_STREAM_MAP 0x00000000
+#define MPEG2_PROGRAM_ELEMENTARY_STREAM 0x00000001
+#define MPEG2_PROGRAM_DIRECTORY_PES_PACKET 0x00000002
+#define MPEG2_PROGRAM_PACK_HEADER 0x00000003
+#define MPEG2_PROGRAM_PES_STREAM 0x00000004
+#define MPEG2_PROGRAM_SYSTEM_HEADER 0x00000005
+#define SUBSTREAM_FILTER_VAL_NONE 0x10000000
+typedef struct tagTIMECODE {
+	WORD wFrameRate;
+	WORD wFrameFract;
+	DWORD dwFrames;
+} TIMECODE;
+#define ED_FORMAT_SMPTE_30 0x00001196
+#define ED_FORMAT_SMPTE_30DROP 0x00001197
+#define ED_FORMAT_SMPTE_25 0x00001198
+#define ED_FORMAT_SMPTE_24 0x00001199
+typedef struct tagTIMECODE_SAMPLE {
+	LONGLONG qwTick;
+	TIMECODE timecode;
+	DWORD dwUser;
+	DWORD dwFlags;
+} TIMECODE_SAMPLE;
+/*#define AM_TIMECODE_FLAG_FCM */
+/*#define AM_TIMECODE_FLAG_CF */
+/*#define AM_TIMECODE_FLAG_FIELD */
+/*#define AM_TIMECODE_FLAG_DF */
+/*#define AM_TIMECODE_COLORFRAME */
+/*#define AM_TIMECODE_COLORSEQUENCE */
+/*#define AM_TIMECODE_FILMSEQUENCE_TYPE */
+typedef struct _VIDEO_STREAM_CONFIG_CAPS {
+	GUID guid;
+	ULONG VideoStandard;
+	SIZE InputSize;
+	SIZE MinCroppingSize;
+	SIZE MaxCroppingSize;
+	int CropGranularityX;
+	int CropGranularityY;
+	int CropAlignX;
+	int CropAlignY;
+	SIZE MinOutputSize;
+	SIZE MaxOutputSize;
+	int OutputGranularityX;
+	int OutputGranularityY;
+	int StretchTapsX;
+	int StretchTapsY;
+	int ShrinkTapsX;
+	int ShrinkTapsY;
+	LONGLONG MinFrameInterval;
+	LONGLONG MaxFrameInterval;
+	LONG MinBitsPerSecond;
+	LONG MaxBitsPerSecond;
+} VIDEO_STREAM_CONFIG_CAPS;
+typedef struct tagVMRALLOCATIONINFO {
+	DWORD dwFlags;
+	LPBITMAPINFOHEADER lpHdr;
+	LPDDPIXELFORMAT lpPixFmt;
+	SIZE szAspectRatio;
+	DWORD dwMinBuffers;
+	DWORD dwMaxBuffers;
+	DWORD dwInterlaceFlags;
+	SIZE szNativeSize;
+} VMRALLOCATIONINFO;
+/**********
+typedef struct _VMRALPHABITMAP {
+	DWORD dwFlags;
+	HDC hdc;
+	LPDIRECTDRAWSURFACE7 pDDS;
+	RECT rSrc;
+	NORMALIZEDRECT rDest;
+	FLOAT fAlpha;
+	COLORREF clrSrcKey;
+} VMRALPHABITMAP,*PVMRALPHABITMAP;
+**********/
+#define VMRBITMAP_DISABLE 0x00000001
+#define VMRBITMAP_HDC 0x00000002
+#define VMRBITMAP_ENTIREDDS 0x00000004
+#define VMRBITMAP_SRCCOLORKEY 0x00000008
+#define VMRBITMAP_SRCRECT 0x00000010
+typedef struct _VMRDeinterlaceCaps {
+	DWORD dwSize;
+	DWORD dwNumPreviousOutputFrames;
+	DWORD dwNumForwardRefSamples;
+	DWORD dwNumBackwardRefSamples;
+	VMRDeinterlaceTech DeinterlaceTechnology;
+} VMRDeinterlaceCaps;
+typedef struct _VMRFrequency {
+	DWORD dwNumerator;
+	DWORD dwDenominator;
+} VMRFrequency;
+typedef struct tagVMRGUID {
+	GUID *pGUID;
+	GUID GUID;
+} VMRGUID;
+typedef struct tagVMRMONITORINFO {
+	VMRGUID guid;
+	RECT rcMonitor;
+	HMONITOR hMon;
+	DWORD dwFlags;
+	wchar_t szDevice[32];
+	wchar_t szDescription[256];
+} VMRMONITORINFO;
+/**********
+typedef struct tagVMRPRESENTATIONINFO {
+	DWORD dwFlags;
+	LPDIRECTDRAWSURFACE7 lpSurf;
+	REFERENCE_TIME rtStart;
+	REFERENCE_TIME rtEnd;
+	SIZE szAspectRatio;
+	RECT rcSrc;
+	RECT rcDst;
+	DWORD dwTypeSpecificFlags;
+	DWORD dwInterlaceFlags;
+} VMRPRESENTATIONINFO;
+**********/
+typedef struct _VMRVideoDesc {
+	DWORD dwSize;
+	DWORD dwSampleWidth;
+	DWORD dwSampleHeight;
+	BOOL SingleFieldPerSample;
+	DWORD dwFourCC;
+	VMRFrequency InputSampleFreq;
+	VMRFrequency OutputFrameFreq;
+} VMRVideoDesc;
+/**********
+typedef struct _VMRVIDEOSTREAMINFO {
+	LPDIRECTDRAWSURFACE7 pddsVideoSurface;
+	DWORD dwWidth;
+	DWORD dwHeight;
+	DWORD dwStrmID;
+	FLOAT fAlpha;
+	DDCOLORKEY ddClrKey;
+	NORMALIZEDRECT rNormal;
+} VMRVIDEOSTREAMINFO;
+**********/
+/*--- DirectShow Reference - Interfaces */
+#define INTERFACE IAMAnalogVideoDecoder
+DECLARE_INTERFACE_(IAMAnalogVideoDecoder, IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD_(HRESULT,get_AvailableTVFormats)(THIS_ long*) PURE;
+	STDMETHOD_(HRESULT,get_HorizontalLocked)(THIS_ long*) PURE;
+	STDMETHOD_(HRESULT,get_NumberOfLines)(THIS_ long*) PURE;
+	STDMETHOD_(HRESULT,get_OutputEnable)(THIS_ long*) PURE;
+	STDMETHOD_(HRESULT,get_TVFormat)(THIS_ long*) PURE;
+	STDMETHOD_(HRESULT,get_VCRHorizontalLocking)(THIS_ long*) PURE;
+	STDMETHOD_(HRESULT,put_OutputEnable)(THIS_ long) PURE;
+	STDMETHOD_(HRESULT,put_TVFormat)(THIS_ long) PURE;
+	STDMETHOD_(HRESULT,put_VCRHorizontalLocking)(THIS_ long) PURE;
+};
+#undef INTERFACE
+#define INTERFACE IAMAudioInputMixer
+DECLARE_INTERFACE_(IAMAudioInputMixer, IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD_(HRESULT,get_Bass)(THIS_ double*) PURE;
+	STDMETHOD_(HRESULT,get_BassRange)(THIS_ double*) PURE;
+	STDMETHOD_(HRESULT,get_Enable)(THIS_ BOOL*) PURE;
+	STDMETHOD_(HRESULT,get_Loudness)(THIS_ BOOL*) PURE;
+	STDMETHOD_(HRESULT,get_MixLevel)(THIS_ double*) PURE;
+	STDMETHOD_(HRESULT,get_Mono)(THIS_ BOOL*) PURE;
+	STDMETHOD_(HRESULT,get_Pan)(THIS_ double*) PURE;
+	STDMETHOD_(HRESULT,get_Treble)(THIS_ double*) PURE;
+	STDMETHOD_(HRESULT,get_TrebleRange)(THIS_ double*) PURE;
+	STDMETHOD_(HRESULT,put_Bass)(THIS_ double) PURE;
+	STDMETHOD_(HRESULT,put_Enable)(THIS_ BOOL) PURE;
+	STDMETHOD_(HRESULT,put_Loudness)(THIS_ BOOL) PURE;
+	STDMETHOD_(HRESULT,put_MixLevel)(THIS_ double) PURE;
+	STDMETHOD_(HRESULT,put_Mono)(THIS_ BOOL) PURE;
+	STDMETHOD_(HRESULT,put_Pan)(THIS_ double) PURE;
+	STDMETHOD_(HRESULT,put_Treble)(THIS_ double) PURE;
+};
+#undef INTERFACE
+#define INTERFACE IAMAudioRendererStats
+DECLARE_INTERFACE_(IAMAudioRendererStats, IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD_(HRESULT,GetStatParam)(THIS_ DWORD,DWORD*,DWORD*) PURE;
+};
+#undef INTERFACE
+#define INTERFACE IAMBufferNegotiation
+DECLARE_INTERFACE_(IAMBufferNegotiation, IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD_(HRESULT,GetAllocatorProperties)(THIS_ ALLOCATOR_PROPERTIES*) PURE;
+	STDMETHOD_(HRESULT,SuggestAllocatorProperties)(THIS_ const ALLOCATOR_PROPERTIES*) PURE;
+};
+#undef INTERFACE
+#define INTERFACE IAMCameraControl
+DECLARE_INTERFACE_(IAMCameraControl, IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD_(HRESULT,Get)(THIS_ long,long*,long*) PURE;
+	STDMETHOD_(HRESULT,GetRange)(THIS_ long,long*,long*,long*,long*,long*) PURE;
+	STDMETHOD_(HRESULT,Set)(THIS_ long,long,long) PURE;
+};
+#undef INTERFACE
+
+#define INTERFACE IAMCertifiedOutputProtection
+DECLARE_INTERFACE_(IAMCertifiedOutputProtection, IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD_(HRESULT,KeyExchange)(THIS_ GUID*,BYTE**,DWORD*) PURE;
+	STDMETHOD_(HRESULT,ProtectionCommand)(THIS_ const AMCOPPCommand*) PURE;
+	STDMETHOD_(HRESULT,ProtectionStatus)(THIS_ const AMCOPPStatusInput*,AMCOPPStatusOutput*) PURE;
+	STDMETHOD_(HRESULT,SessionSequenceStart)(THIS_ const AMCOPPSignature*) PURE;
+};
+#undef INTERFACE
+
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/subauth.h
===================================================================
--- Daodan/MinGW/include/subauth.h	(revision 1046)
+++ Daodan/MinGW/include/subauth.h	(revision 1046)
@@ -0,0 +1,209 @@
+#ifndef _SUBAUTH_H
+#define _SUBAUTH_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#ifndef NT_SUCCESS
+#define NT_SUCCESS(x) ((x)>=0)
+#define STATUS_SUCCESS 0
+#endif
+#define CYPHER_BLOCK_LENGTH 8
+#define USER_SESSION_KEY_LENGTH (CYPHER_BLOCK_LENGTH*2)
+#define CLEAR_BLOCK_LENGTH 8
+#define MSV1_0_PASSTHRU 1
+#define MSV1_0_GUEST_LOGON 2
+#define MSV1_0_VALIDATION_LOGOFF_TIME 1
+#define MSV1_0_VALIDATION_KICKOFF_TIME 2
+#define MSV1_0_VALIDATION_LOGON_SERVER 4
+#define MSV1_0_VALIDATION_LOGON_DOMAIN 8
+#define MSV1_0_VALIDATION_SESSION_KEY 16
+#define MSV1_0_VALIDATION_USER_FLAGS 32
+#define MSV1_0_VALIDATION_USER_ID 64
+#define MSV1_0_SUBAUTH_ACCOUNT_DISABLED 1
+#define MSV1_0_SUBAUTH_PASSWORD 2
+#define MSV1_0_SUBAUTH_WORKSTATIONS 4
+#define MSV1_0_SUBAUTH_LOGON_HOURS 8
+#define MSV1_0_SUBAUTH_ACCOUNT_EXPIRY 16
+#define MSV1_0_SUBAUTH_PASSWORD_EXPIRY 32
+#define MSV1_0_SUBAUTH_ACCOUNT_TYPE 64
+#define MSV1_0_SUBAUTH_LOCKOUT 128
+#define NEXT_FREE_ACCOUNT_CONTROL_BIT 131072
+#define SAM_DAYS_PER_WEEK 7
+#define SAM_HOURS_PER_WEEK 168
+#define SAM_MINUTES_PER_WEEK 10080
+#define STATUS_INVALID_INFO_CLASS 0xC0000003L
+#define STATUS_NO_SUCH_USER 0xC0000064L
+#define STATUS_WRONG_PASSWORD 0xC000006AL
+#define STATUS_PASSWORD_RESTRICTION 0xC000006CL
+#define STATUS_LOGON_FAILURE 0xC000006DL
+#define STATUS_ACCOUNT_RESTRICTION 0xC000006EL
+#define STATUS_INVALID_LOGON_HOURS 0xC000006FL
+#define STATUS_INVALID_WORKSTATION 0xC0000070L
+#define STATUS_PASSWORD_EXPIRED 0xC0000071L
+#define STATUS_ACCOUNT_DISABLED 0xC0000072L
+#define STATUS_INSUFFICIENT_RESOURCES 0xC000009AL
+#define STATUS_ACCOUNT_EXPIRED 0xC0000193L
+#define STATUS_PASSWORD_MUST_CHANGE 0xC0000224L
+#define STATUS_ACCOUNT_LOCKED_OUT 0xC0000234L
+#define USER_ACCOUNT_DISABLED 1
+#define USER_HOME_DIRECTORY_REQUIRED 2
+#define USER_PASSWORD_NOT_REQUIRED 4
+#define USER_TEMP_DUPLICATE_ACCOUNT 8
+#define USER_NORMAL_ACCOUNT 16
+#define USER_MNS_LOGON_ACCOUNT 32
+#define USER_INTERDOMAIN_TRUST_ACCOUNT 64
+#define USER_WORKSTATION_TRUST_ACCOUNT 128
+#define USER_SERVER_TRUST_ACCOUNT 256
+#define USER_DONT_EXPIRE_PASSWORD 512
+#define USER_ACCOUNT_AUTO_LOCKED 1024
+#define USER_ENCRYPTED_TEXT_PASSWORD_ALLOWED 2048
+#define USER_SMARTCARD_REQUIRED 4096
+#define USER_TRUSTED_FOR_DELEGATION 8192
+#define USER_NOT_DELEGATED 16384
+#define USER_USE_DES_KEY_ONLY 32768
+#define USER_DONT_REQUIRE_PREAUTH 65536
+#define USER_MACHINE_ACCOUNT_MASK 448
+#define USER_ACCOUNT_TYPE_MASK 472
+#define USER_ALL_PARAMETERS 2097152
+#if !defined(_NTDEF_H) && !defined(_NTSECAPI_H)
+typedef LONG NTSTATUS, *PNTSTATUS;
+typedef struct _UNICODE_STRING {
+  USHORT Length;
+  USHORT MaximumLength;
+  PWSTR Buffer;
+} UNICODE_STRING, *PUNICODE_STRING;
+typedef struct _STRING {
+  USHORT Length;
+  USHORT MaximumLength;
+  PCHAR Buffer;
+} STRING, *PSTRING;
+#endif
+typedef PVOID SAM_HANDLE, *PSAM_HANDLE;
+typedef struct _OLD_LARGE_INTEGER {
+  ULONG LowPart;
+  LONG HighPart;
+} OLD_LARGE_INTEGER, *POLD_LARGE_INTEGER;
+typedef enum _NETLOGON_LOGON_INFO_CLASS {
+  NetlogonInteractiveInformation = 1,NetlogonNetworkInformation,
+  NetlogonServiceInformation,NetlogonGenericInformation,
+  NetlogonInteractiveTransitiveInformation,NetlogonNetworkTransitiveInformation,
+  NetlogonServiceTransitiveInformation
+} NETLOGON_LOGON_INFO_CLASS;
+typedef struct _CYPHER_BLOCK {
+  CHAR data[CYPHER_BLOCK_LENGTH];
+} CYPHER_BLOCK, *PCYPHER_BLOCK;
+typedef struct _CLEAR_BLOCK {
+  CHAR data[CLEAR_BLOCK_LENGTH];
+} CLEAR_BLOCK, *PCLEAR_BLOCK;
+typedef struct _LM_OWF_PASSWORD {
+  CYPHER_BLOCK data[2];
+} LM_OWF_PASSWORD, *PLM_OWF_PASSWORD;
+typedef struct _USER_SESSION_KEY {
+  CYPHER_BLOCK data[2];
+} USER_SESSION_KEY, *PUSER_SESSION_KEY;
+typedef CLEAR_BLOCK LM_CHALLENGE, *PLM_CHALLENGE;
+typedef LM_OWF_PASSWORD NT_OWF_PASSWORD, *PNT_OWF_PASSWORD;
+typedef LM_CHALLENGE NT_CHALLENGE, *PNT_CHALLENGE;
+typedef struct _LOGON_HOURS {
+  USHORT UnitsPerWeek;
+  PUCHAR LogonHours;
+} LOGON_HOURS, *PLOGON_HOURS;
+typedef struct _SR_SECURITY_DESCRIPTOR {
+  ULONG Length;
+  PUCHAR SecurityDescriptor;
+} SR_SECURITY_DESCRIPTOR, *PSR_SECURITY_DESCRIPTOR;
+#pragma pack(push,4)
+typedef struct _USER_ALL_INFORMATION {
+  LARGE_INTEGER LastLogon;
+  LARGE_INTEGER LastLogoff;
+  LARGE_INTEGER PasswordLastSet;
+  LARGE_INTEGER AccountExpires;
+  LARGE_INTEGER PasswordCanChange;
+  LARGE_INTEGER PasswordMustChange;
+  UNICODE_STRING UserName;
+  UNICODE_STRING FullName;
+  UNICODE_STRING HomeDirectory;
+  UNICODE_STRING HomeDirectoryDrive;
+  UNICODE_STRING ScriptPath;
+  UNICODE_STRING ProfilePath;
+  UNICODE_STRING AdminComment;
+  UNICODE_STRING WorkStations;
+  UNICODE_STRING UserComment;
+  UNICODE_STRING Parameters;
+  UNICODE_STRING LmPassword;
+  UNICODE_STRING NtPassword;
+  UNICODE_STRING PrivateData;
+  SR_SECURITY_DESCRIPTOR SecurityDescriptor;
+  ULONG UserId;
+  ULONG PrimaryGroupId;
+  ULONG UserAccountControl;
+  ULONG WhichFields;
+  LOGON_HOURS LogonHours;
+  USHORT BadPasswordCount;
+  USHORT LogonCount;
+  USHORT CountryCode;
+  USHORT CodePage;
+  BOOLEAN LmPasswordPresent;
+  BOOLEAN NtPasswordPresent;
+  BOOLEAN PasswordExpired;
+  BOOLEAN PrivateDataSensitive;
+} USER_ALL_INFORMATION, *PUSER_ALL_INFORMATION;
+#pragma pack(pop)
+typedef struct _MSV1_0_VALIDATION_INFO {
+  LARGE_INTEGER LogoffTime;
+  LARGE_INTEGER KickoffTime;
+  UNICODE_STRING LogonServer;
+  UNICODE_STRING LogonDomainName;
+  USER_SESSION_KEY SessionKey;
+  BOOLEAN Authoritative;
+  ULONG UserFlags;
+  ULONG WhichFields;
+  ULONG UserId;
+} MSV1_0_VALIDATION_INFO, *PMSV1_0_VALIDATION_INFO;
+typedef struct _NETLOGON_LOGON_IDENTITY_INFO {
+  UNICODE_STRING LogonDomainName;
+  ULONG ParameterControl;
+  OLD_LARGE_INTEGER LogonId;
+  UNICODE_STRING UserName;
+  UNICODE_STRING Workstation;
+} NETLOGON_LOGON_IDENTITY_INFO, *PNETLOGON_LOGON_IDENTITY_INFO;
+typedef struct _NETLOGON_INTERACTIVE_INFO {
+  NETLOGON_LOGON_IDENTITY_INFO Identity;
+  LM_OWF_PASSWORD LmOwfPassword;
+  NT_OWF_PASSWORD NtOwfPassword;
+} NETLOGON_INTERACTIVE_INFO, *PNETLOGON_INTERACTIVE_INFO;
+typedef struct _NETLOGON_GENERIC_INFO {
+  NETLOGON_LOGON_IDENTITY_INFO Identity;
+  UNICODE_STRING PackageName;
+  ULONG DataLength;
+  PUCHAR LogonData;
+} NETLOGON_GENERIC_INFO, *PNETLOGON_GENERIC_INFO;
+typedef struct _NETLOGON_NETWORK_INFO {
+  NETLOGON_LOGON_IDENTITY_INFO Identity;
+  LM_CHALLENGE LmChallenge;
+  STRING NtChallengeResponse;
+  STRING LmChallengeResponse;
+} NETLOGON_NETWORK_INFO, *PNETLOGON_NETWORK_INFO;
+typedef struct _NETLOGON_SERVICE_INFO {
+  NETLOGON_LOGON_IDENTITY_INFO Identity;
+  LM_OWF_PASSWORD LmOwfPassword;
+  NT_OWF_PASSWORD NtOwfPassword;
+} NETLOGON_SERVICE_INFO, *PNETLOGON_SERVICE_INFO;
+NTSTATUS NTAPI Msv1_0SubAuthenticationRoutine(NETLOGON_LOGON_INFO_CLASS,PVOID,
+                              ULONG,PUSER_ALL_INFORMATION,PULONG,PULONG,
+                              PBOOLEAN,PLARGE_INTEGER,PLARGE_INTEGER);
+NTSTATUS NTAPI Msv1_0SubAuthenticationFilter(NETLOGON_LOGON_INFO_CLASS,PVOID,
+                              ULONG,PUSER_ALL_INFORMATION,PULONG,PULONG,
+                              PBOOLEAN,PLARGE_INTEGER,PLARGE_INTEGER);
+NTSTATUS NTAPI Msv1_0SubAuthenticationRoutineGeneric(PVOID,ULONG,PULONG,PVOID*);
+NTSTATUS NTAPI Msv1_0SubAuthenticationRoutineEx(NETLOGON_LOGON_INFO_CLASS,PVOID,
+                              ULONG,PUSER_ALL_INFORMATION,SAM_HANDLE,
+                              PMSV1_0_VALIDATION_INFO,PULONG);
+#ifdef __cplusplus
+}
+#endif
+#endif /* _SUBAUTH_H */
Index: Daodan/MinGW/include/svcguid.h
===================================================================
--- Daodan/MinGW/include/svcguid.h	(revision 1046)
+++ Daodan/MinGW/include/svcguid.h	(revision 1046)
@@ -0,0 +1,33 @@
+#ifndef _SVCGUID_H
+#define _SVCGUID_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define SVCID_NETWARE(_SapId) \
+	{ (0x000B << 16) | (_SapId), 0, 0, { 0xC0,0,0,0,0,0,0,0x46 } }
+
+#define SAPID_FROM_SVCID_NETWARE(_g) \
+	((WORD)(_g->Data1 & 0xFFFF))
+
+#define SET_NETWARE_SVCID(_g,_SapId) { \
+	(_g)->Data1 = (0x000B << 16 ) | (_SapId); \
+	(_g)->Data2 = 0; \
+	(_g)->Data3 = 0; \
+	(_g)->Data4[0] = 0xC0; \
+	(_g)->Data4[1] = 0x0; \
+	(_g)->Data4[2] = 0x0; \
+	(_g)->Data4[3] = 0x0; \
+	(_g)->Data4[4] = 0x0; \
+	(_g)->Data4[5] = 0x0; \
+	(_g)->Data4[6] = 0x0; \
+	(_g)->Data4[7] = 0x46; }
+
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/sys/fcntl.h
===================================================================
--- Daodan/MinGW/include/sys/fcntl.h	(revision 1046)
+++ Daodan/MinGW/include/sys/fcntl.h	(revision 1046)
@@ -0,0 +1,7 @@
+/*
+ * This file is part of the Mingw32 package.
+ *
+ * This fcntl.h maps to the root fcntl.h
+ */
+
+#include <fcntl.h>
Index: Daodan/MinGW/include/sys/file.h
===================================================================
--- Daodan/MinGW/include/sys/file.h	(revision 1046)
+++ Daodan/MinGW/include/sys/file.h	(revision 1046)
@@ -0,0 +1,7 @@
+/*
+ * This file is part of the Mingw32 package.
+ *
+ * This file.h maps to the root fcntl.h
+ * TODO?
+ */
+#include <fcntl.h>
Index: Daodan/MinGW/include/sys/locking.h
===================================================================
--- Daodan/MinGW/include/sys/locking.h	(revision 1046)
+++ Daodan/MinGW/include/sys/locking.h	(revision 1046)
@@ -0,0 +1,31 @@
+/*
+ * locking.h
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is a part of the mingw-runtime package.
+ * No warranty is given; refer to the file DISCLAIMER within the package.
+ *
+ * Constants for the mode parameter of the locking function.
+ *
+ */
+
+#ifndef	_LOCKING_H_
+#define	_LOCKING_H_
+
+/* All the headers include this file. */
+#include <_mingw.h>
+
+#define	_LK_UNLCK	0	/* Unlock */
+#define	_LK_LOCK	1	/* Lock */
+#define	_LK_NBLCK	2	/* Non-blocking lock */
+#define	_LK_RLCK	3	/* Lock for read only */
+#define	_LK_NBRLCK	4	/* Non-blocking lock for read only */
+
+#ifndef	NO_OLDNAMES
+#define	LK_UNLCK	_LK_UNLCK
+#define	LK_LOCK		_LK_LOCK
+#define	LK_NBLCK	_LK_NBLCK
+#define	LK_RLCK		_LK_RLCK
+#define	LK_NBRLCK	_LK_NBRLCK
+#endif	/* Not NO_OLDNAMES */
+
+#endif	/* Not _LOCKING_H_ */
Index: Daodan/MinGW/include/sys/param.h
===================================================================
--- Daodan/MinGW/include/sys/param.h	(revision 1046)
+++ Daodan/MinGW/include/sys/param.h	(revision 1046)
@@ -0,0 +1,26 @@
+/*
+ * param.h
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is a part of the mingw-runtime package.
+ * No warranty is given; refer to the file DISCLAIMER within the package.
+ *
+ */
+
+#ifndef _SYS_PARAM_H
+#define _SYS_PARAM_H
+
+#include <sys/types.h>
+#include <limits.h>
+
+/* These are useful for cross-compiling */
+#define BIG_ENDIAN	4321
+#define LITTLE_ENDIAN	1234
+#define BYTE_ORDER	LITTLE_ENDIAN
+
+#ifdef PATH_MAX
+#define MAXPATHLEN PATH_MAX
+#else
+#define MAXPATHLEN 260
+#endif
+
+#endif
Index: Daodan/MinGW/include/sys/stat.h
===================================================================
--- Daodan/MinGW/include/sys/stat.h	(revision 1046)
+++ Daodan/MinGW/include/sys/stat.h	(revision 1046)
@@ -0,0 +1,401 @@
+/*
+ * stat.h
+ *
+ * Symbolic constants for opening and creating files, also stat, fstat and
+ * chmod functions.
+ *
+ * $Id: stat.h,v 4cf5070e9a04 2016/07/14 17:59:07 keithmarshall $
+ *
+ * Written by Colin Peters <colin@bird.fu.is.saga-u.ac.jp>
+ * Copyright (C) 1997-2001, 2003-2005, 2007, 2016, MinGW.org Project.
+ *
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice, this permission notice, and the following
+ * disclaimer shall be included in all copies or substantial portions of
+ * the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OF OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ *
+ */
+#ifndef _SYS_STAT_H
+#pragma GCC system_header
+
+/* To support selective (partial) inclusion by <wchar.h>...
+ */
+#ifndef __WCHAR_H_SOURCED__
+/* ...we defer the definition of the normal multiple inclusion guard macro,
+ * until we know that this is NOT the <wchar.h> selective inclusion case.
+ */
+#define _SYS_STAT_H
+
+/* All MinGW headers are required to include <_mingw.h>; however, Microsoft
+ * also stipulate that USERS MUST include <sys/types.h>, BEFORE they include
+ * <sys/stat.h>.  This is not only appallingly bad software engineering, on
+ * Microsoft's part, but it is a potential obstacle to portability of POSIX
+ * source code; (POSIX requires that <sys/stat.h> should be self-contained,
+ * with no requirement for any specific header inclusion order).  Although
+ * it is more inclusive that POSIX requires, we may mitigate the deficiency
+ * inherent in Microsoft's poor software engineering, by simply including
+ * <sys/types.h> here; in so doing, we may also delegate the inclusion of
+ * <_mingw.h>, and the definition of all data types required herein, to...
+ */
+#include <sys/types.h>
+
+/* Constants for the st_mode member of struct stat, and its Microsoft
+ * specific variants.
+ */
+#define _S_IFIFO 	0x1000	/* FIFO */
+#define _S_IFCHR 	0x2000	/* Character */
+#define _S_IFDIR 	0x4000	/* Directory */
+#define _S_IFREG 	0x8000	/* Regular */
+
+#ifdef _MINGW_S_IFBLK_KLUDGE
+/* For preference, this kludge should NOT be enabled; for rationale,
+ * see: https://sourceforge.net/p/mingw/bugs/1146
+ *
+ * MS-Windows doesn't support testing for block special devices via the
+ * st_mode flags; ideally, client code to be ported to Windows should not
+ * blindly assume that S_IFBLK (or _S_IFBLK) is defined, but should rather
+ * check for it, and compile dependent code conditionally.  Notwithstanding,
+ * this kludge allows the user to force a definition, which we arbitrarily
+ * choose to ensure that S_ISBLK (or _S_ISBLK) always returns FALSE, (i.e.
+ * choose a value such that _S_IFBLK & _S_IFMT can NEVER equal _S_IFBLK).
+ */
+#define _S_IFBLK 	0x3001	/* Block: unsupported on Win32 */
+#endif
+
+#define _S_IFMT  	0xF000	/* File type mask */
+
+#define _S_IEXEC 	0x0040
+#define _S_IWRITE	0x0080
+#define _S_IREAD 	0x0100
+
+#define _S_IRWXU 	(_S_IREAD | _S_IWRITE | _S_IEXEC)
+#define _S_IXUSR 	_S_IEXEC
+#define _S_IWUSR 	_S_IWRITE
+#define _S_IRUSR 	_S_IREAD
+
+#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)
+
+#ifndef _NO_OLDNAMES
+
+#define S_IFIFO 	_S_IFIFO
+#define S_IFCHR 	_S_IFCHR
+#ifdef _S_IFBLK
+#define S_IFBLK 	_S_IFBLK
+#endif
+#define S_IFDIR 	_S_IFDIR
+#define S_IFREG 	_S_IFREG
+#define S_IFMT  	_S_IFMT
+#define S_IEXEC 	_S_IEXEC
+#define S_IWRITE	_S_IWRITE
+#define S_IREAD 	_S_IREAD
+#define S_IRWXU 	_S_IRWXU
+#define S_IXUSR 	_S_IXUSR
+#define S_IWUSR 	_S_IWUSR
+#define S_IRUSR 	_S_IRUSR
+
+#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)
+
+#endif	/* !_NO_OLDNAMES */
+
+#ifndef _S_IFBLK
+/* When the _S_IFBLK kludge is NOT enabled, (as it ideally should not be),
+ * ensure that any attempt to use its dependent macros is denied...
+ */
+# pragma GCC poison _S_ISBLK
+
+# if defined _NO_UNSUPPORTED || defined _NO_OLDNAMES
+  /* ...including that for the standard POSIX macro, when unsupported
+   * features, or Microsoft's old names, are explicitly forbidden...
+   */
+#  pragma GCC poison S_ISBLK
+
+# else /* !(_NO_UNSUPPORTED || _NO_OLDNAMES) */
+  /* ...otherwise assume that the kludge is automatically enabled with
+   * respect to S_ISBLK, (because GCC gratuitously misuses it).
+   */
+#  define S_IFBLK 	0x3001	/* Block: unsupported on Win32 */
+
+# endif /* !(_NO_UNSUPPORTED || _NO_OLDNAMES) */
+#endif	/* !_S_IFBLK */
+#endif	/* !__WCHAR_H_SOURCED__ */
+
+#ifndef RC_INVOKED
+#ifndef __struct_stat_defined
+/* The structure manipulated and returned by stat() and fstat(); note that
+ * expansion of the macro provided below will yield variants of struct stat
+ * to conform with Microsoft's usage, (and POSIX usage up to and including
+ * POSIX.1-2001, but NOT the extended specification of POSIX.1-2008).
+ *
+ * NOTE: If called on a directory the values in the time fields are not only
+ * invalid, they will cause localtime et. al. to return NULL. And calling
+ * asctime with a NULL pointer causes an Invalid Page Fault. So watch it!
+ */
+#define __struct_stat_defined(__st_off_t, __st_time_t)			     \
+{ _dev_t	st_dev; 	/* Equivalent to drive number 0=A 1=B ... */ \
+  _ino_t	st_ino; 	/* Always zero ? */			     \
+  _mode_t	st_mode;	/* See above constants */		     \
+   short 	st_nlink;	/* Number of links. */			     \
+   short 	st_uid; 	/* User: Maybe significant on NT ? */	     \
+   short 	st_gid; 	/* Group: Ditto */			     \
+  _dev_t	st_rdev;	/* Seems useless (not even filled in) */     \
+  __st_off_t	st_size;	/* File size in bytes */		     \
+  __st_time_t	st_atime;	/* Access time (always 00:00 on FAT) */	     \
+  __st_time_t	st_mtime;	/* Modified time */			     \
+  __st_time_t	st_ctime;	/* Creation time */			     \
+}
+
+/* Here, we expand the preceding macro to yield the actual definition
+ * of struct stat, under its current Microsoft "uglified" name...
+ */
+struct _stat __struct_stat_defined( _off_t, time_t );
+
+#ifndef _NO_OLDNAMES
+/* ...while this alternative expansion yields its standard POSIX name,
+ * (and its original Microsoft name); apart from its name, this must be
+ * defined identically to struct _stat above.
+ */
+struct stat __struct_stat_defined( _off_t, time_t );
+#endif	/* !_NO_OLDNAMES */
+
+#if defined __MSVCRT__
+/* This variant of struct stat is required to support the use of the
+ * _stati64() function, which is provided by MSVCRT.DLL, but was not
+ * present in CRTDLL.DLL...
+ */
+struct _stati64 __struct_stat_defined( __off64_t, time_t );
+
+#if __MSVCRT_VERSION__ >= __MSVCR61_DLL || _WIN32_WINNT >= _WIN32_WINNT_WIN2K
+/* ...while this supports the use of the _stat64() function, introduced
+ * by MSVCR61.DLL, and subsequently added to MSVCRT.DLL for releases from
+ * Win2K onwards...
+ */
+struct __stat64 __struct_stat_defined( __off64_t, __time64_t );
+
+#if __MSVCRT_VERSION__ >= __MSVCR80_DLL
+/* ...and these are specific to additional function variants, added to
+ * the non-free MSVCR80.DLL, and its later derivatives, but not present
+ * in MSVCRT.DLL (or CRTDLL.DLL).
+ */
+struct __stat32 __struct_stat_defined( __off32_t, __time32_t );
+struct _stat32i64 __struct_stat_defined( __off64_t, __time32_t );
+struct _stat64i32 __struct_stat_defined( __off32_t, __time64_t );
+
+#endif	/* __MSVCRT_VERSION__ >= __MSVCR80_DLL */
+#endif	/* __MSVCRT_VERSION__ >= __MSVCR61_DLL */
+#endif	/* __MSVCRT__ */
+
+/* From here on, it is sufficient to leave __struct_stat_defined as
+ * a macro which expands to nothing.
+ */
+#undef  __struct_stat_defined
+#define __struct_stat_defined
+
+#endif /* !__struct_stat_defined */
+
+_BEGIN_C_DECLS
+
+#ifdef _SYS_STAT_H
+/* This set of function prototypes are to be declared only when
+ * <sys/stat.h> is included directly.
+ */
+_CRTIMP __cdecl __MINGW_NOTHROW  int _umask (int);
+_CRTIMP __cdecl __MINGW_NOTHROW  int _chmod (const char *, int);
+
+#if __MSVCRT_VERSION__ < __MSVCR80_DLL
+/* This pair of functions are present in all versions of MSVCRT.DLL, but
+ * they are NOT present in MSVCR80.DLL, nor in any of its later non-free
+ * variants, all of which rely on inline aliases (defined below).
+ */
+_CRTIMP __cdecl __MINGW_NOTHROW  int _fstat (int, struct _stat *);
+_CRTIMP __cdecl __MINGW_NOTHROW  int _stat (const char *, struct _stat *);
+#endif	/* __MSVCRT_VERSION__ < __MSVCR80_DLL */
+
+#ifndef	_NO_OLDNAMES
+/* These are the standard POSIX names, (and the original Microsoft names),
+ * for the preceding four functions.
+ */
+_CRTIMP __cdecl __MINGW_NOTHROW  int umask (int);
+_CRTIMP __cdecl __MINGW_NOTHROW  int chmod (const char *, int);
+
+#if __MSVCRT_VERSION__ < __MSVCR80_DLL
+/* Since the underlying functions, with "uglified" names, are not supported
+ * by MSVCR80.DLL and its later derivitaves, there is also nothing to which
+ * to map these originally named alternatives; declare prototypes only when
+ * using DLL versions which can support them, while falling back to the use
+ * of inline replacements (defined below) in the unsupported cases.
+ */
+_CRTIMP __cdecl __MINGW_NOTHROW  int fstat (int, struct stat *);
+_CRTIMP __cdecl __MINGW_NOTHROW  int stat (const char *, struct stat *);
+#endif	/* __MSVCRT_VERSION__ < __MSVCR80_DLL */
+#endif	/* !_NO_OLDNAMES */
+
+#if defined __MSVCRT__
+#if __MSVCRT_VERSION__ < __MSVCR80_DLL
+/* This pair of functions were withdrawn from MSVCR80.DLL, and its later
+ * derivatives, but remain in all versions of MSVCRT.DLL
+ */
+_CRTIMP __cdecl __MINGW_NOTHROW  int _fstati64 (int, struct _stati64 *);
+_CRTIMP __cdecl __MINGW_NOTHROW  int _stati64 (const char *, struct _stati64 *);
+#endif	/* __MSVCRT_VERSION__ < __MSVCR80_DLL */
+
+#if __MSVCRT_VERSION__ >= __MSVCR61_DLL || _WIN32_WINNT >= _WIN32_WINNT_WIN2K
+/* This pair of functions were introduced in MSVCR61.DLL, and were subsequently
+ * added to MSVCRT.DLL from the release accompanying Win2K onwards...
+ */
+_CRTIMP __cdecl __MINGW_NOTHROW  int _fstat64 (int, struct __stat64 *);
+_CRTIMP __cdecl __MINGW_NOTHROW  int _stat64 (const char *, struct __stat64 *);
+
+#if __MSVCRT_VERSION__ >= __MSVCR80_DLL
+/* ...whereas this group were introduced in MSVCR80.DLL, and its later
+ * derivatives, but are not present in MSVCRT.DLL
+ */
+_CRTIMP __cdecl __MINGW_NOTHROW  int _fstat32 (int, struct __stat32 *);
+_CRTIMP __cdecl __MINGW_NOTHROW  int _stat32 (const char *, struct __stat32 *);
+_CRTIMP __cdecl __MINGW_NOTHROW  int _fstat32i64 (int, struct _stat32i64 *);
+_CRTIMP __cdecl __MINGW_NOTHROW  int _fstat64i32 (int, struct _stat64i32 *);
+_CRTIMP __cdecl __MINGW_NOTHROW  int _stat32i64 (const char *, struct _stat32i64 *);
+_CRTIMP __cdecl __MINGW_NOTHROW  int _stat64i32 (const char *, struct _stat64i32 *);
+
+#ifdef _USE_32BIT_TIME_T
+/* We must provide inline replacements for the four MSVCRT.DLL functions
+ * which have been withdrawn from MSVCR80.DLL, and its later derivatives;
+ * this first set of replacements are compatible with their MSVCRT.DLL
+ * equivalents, but require the user to define _USE_32BIT_TIME_T...
+ */
+__CRT_ALIAS __cdecl __MINGW_NOTHROW  int _fstat (int __v1, struct _stat *__v2)
+  { return _fstat32 (__v1, (struct __stat32 *)(__v2)); }
+
+__CRT_ALIAS __cdecl __MINGW_NOTHROW  int _stat (const char *__v1, struct _stat *__v2)
+  { return _stat32  (__v1, (struct __stat32 *)(__v2)); }
+
+__CRT_ALIAS __cdecl __MINGW_NOTHROW  int _fstati64 (int __v1, struct _stati64 *__v2)
+  { return _fstat32i64 (__v1, (struct _stat32i64 *)(__v2)); }
+
+__CRT_ALIAS __cdecl __MINGW_NOTHROW  int _stati64 (const char *__v1, struct _stati64 *__v2)
+  { return _stat32i64  (__v1, (struct _stat32i64 *)(__v2)); }
+
+#else	/* !_USE_32BIT_TIME_T */
+/* ...whereas, the following alternatives emulate the brain-damaged
+ * behaviour of Microsoft's own implementations, which take effect when
+ * the user does not define _USE_32BIT_TIME_T; they break compatibility
+ * with MSVCRT.DLL
+ */
+__CRT_ALIAS __cdecl __MINGW_NOTHROW  int _fstat (int __v1, struct _stat *__v2)
+  { return _fstat64i32 (__v1, (struct _stat64i32 *)(__v2)); }
+
+__CRT_ALIAS __cdecl __MINGW_NOTHROW  int _stat (const char *__v1, struct _stat *__v2)
+  { return _stat64i32  (__v1, (struct _stat64i32 *)(__v2)); }
+
+__CRT_ALIAS __cdecl __MINGW_NOTHROW  int _fstati64 (int __v1, struct _stati64 *__v2)
+  { return _fstat64 (__v1, (struct __stat64 *)(__v2)); }
+
+__CRT_ALIAS __cdecl __MINGW_NOTHROW  int _stati64 (const char *__v1, struct _stati64 *__v2)
+  { return _stat64  (__v1,(struct __stat64*)(__v2)); }
+#endif	/* !_USE_32BIT_TIME_T */
+
+#ifndef _NO_OLDNAMES
+/* Irrespective of the state of _USE_32BIT_TIME_T, we may provide inline
+ * replacements for the stat() and fstat() functions, (which are missing
+ * from MSVCR80.DLL and its later derivatives), simply by aliasing them
+ * to their corresponding replacements with "uglified" names.
+ */
+__CRT_ALIAS __cdecl __MINGW_NOTHROW  int fstat (int __v1, struct _stat *__v2)
+  { return _fstat (__v1, __v2); }
+
+__CRT_ALIAS __cdecl __MINGW_NOTHROW  int stat (const char *__v1, struct _stat *__v2)
+  { return _stat (__v1, __v2); }
+
+#endif	/* !_NO_OLDNAMES */
+#endif	/* __MSVCRT_VERSION__ >= __MSVCR80_DLL */
+#endif	/* __MSVCRT_VERSION__ >= __MSVCR61_DLL */
+#endif	/* __MSVCRT__ */
+#endif	/* _SYS_STAT_H */
+
+#if defined __MSVCRT__ && !(defined _SYS_STAT_H && defined _WCHAR_H)
+/* This final group of function prototypes, specific to MSVCRT.DLL and its
+ * non-free derivatives, are to be declared both when <sys/stat.h> is included
+ * directly, and when it is selectively included by <wchar.h>; however, if both
+ * _SYS_STAT_H and _WCHAR_H are defined, by the time we get to here, then this
+ * must be the direct inclusion case, after having already declared these via
+ * selective inclusion by <wchar.h>, and we should not declare these again;
+ * (in particular, we should not repeat inline function implementations).
+ */
+#if __MSVCRT_VERSION__ < __MSVCR80_DLL
+/* As is the case for their regular counterparts, this pair of functions
+ * remain available in MSVCRT.DLL itself, but they are not exported from its
+ * non-free derivatives from MSVCR80.DLL onwards, whence it is expected that
+ * they will be replaced by inline implementations.
+ */
+_CRTIMP __cdecl __MINGW_NOTHROW  int _wstat(const wchar_t *, struct _stat *);
+_CRTIMP __cdecl __MINGW_NOTHROW  int _wstati64 (const wchar_t *, struct _stati64 *);
+#endif	/* __MSVCRT_VERSION__ < __MSVCR80_DLL */
+
+#if __MSVCRT_VERSION__ >= __MSVCR61_DLL || _WIN32_WINNT >= _WIN32_WINNT_WIN2K
+/* Similarly, this variant was introduced in MSVCR80.DLL, and was subsequently
+ * added to MSVCRT.DLL with the release of Win2K...
+ */
+_CRTIMP __cdecl __MINGW_NOTHROW  int _wstat64 (const wchar_t *, struct __stat64 *);
+
+#if __MSVCRT_VERSION__ >= __MSVCR80_DLL
+/* ...whereas these variants are exclusive to the non-free MSVCR80.DLL, and
+ * its later derivatives; they are not available in MSVCRT.DLL.
+ */
+_CRTIMP __cdecl __MINGW_NOTHROW  int _wstat32 (const wchar_t *, struct __stat32 *);
+_CRTIMP __cdecl __MINGW_NOTHROW  int _wstat32i64 (const wchar_t *, struct _stat32i64 *);
+_CRTIMP __cdecl __MINGW_NOTHROW  int _wstat64i32 (const wchar_t *, struct _stat64i32 *);
+
+#ifdef _USE_32BIT_TIME_T
+/* Once again, we must furnish inline replacements for the functions which
+ * were withdrawn from MSVCR80.DLL and its later derivatives; these are the
+ * implementations which remain compatible with MSVCRT.DLL, but require the
+ * user to define _USE_32BIT_TIME_T...
+ */
+__CRT_ALIAS __cdecl __MINGW_NOTHROW  int _wstat (const wchar_t *__v1, struct _stat *__v2)
+  { return _wstat32 (__v1, (struct __stat32 *)(__v2)); }
+
+__CRT_ALIAS __cdecl __MINGW_NOTHROW  int _wstati64 (const wchar_t *__v1, struct _stati64 *__v2)
+  { return _wstat32i64 (__v1, (struct _stat32i64 *)(__v2)); }
+
+#else	/* !_USE_32BIT_TIME_T */
+/* ...whereas these emulate the brain-damaged Microsoft behaviour, for the
+ * case when the user does not define _USE_32BIT_TIME_T, breaking MSVCRT.DLL
+ * compatibility.
+ */
+__CRT_ALIAS __cdecl __MINGW_NOTHROW  int _wstat (const wchar_t *__v1, struct _stat *__v2)
+  { return _wstat64i32 (__v1, (struct _stat64i32 *)(__v2)); }
+
+__CRT_ALIAS __cdecl __MINGW_NOTHROW  int _wstati64 (const wchar_t *__v1, struct _stati64 *__v2)
+  { return _wstat64 (__v1, (struct __stat64 *)(__v2)); }
+
+#endif	/* !_USE_32BIT_TIME_T */
+#endif	/* __MSVCRT_VERSION__ >= 0x0800 */
+#endif	/* __MSVCRT_VERSION__ >= 0x0601 */
+#endif	/* __MSVCRT__ && !(_SYS_STAT_H && _WCHAR_H) */
+
+_END_C_DECLS
+
+#endif	/* ! RC_INVOKED */
+#endif	/* !_SYS_STAT__H: $RCSfile: stat.h,v $: end of file */
Index: Daodan/MinGW/include/sys/time.h
===================================================================
--- Daodan/MinGW/include/sys/time.h	(revision 1046)
+++ Daodan/MinGW/include/sys/time.h	(revision 1046)
@@ -0,0 +1,47 @@
+#ifndef _SYS_TIME_H_
+#define _SYS_TIME_H_
+#include <time.h>
+
+#ifdef	__cplusplus
+extern "C" {
+#endif
+
+#ifndef _TIMEVAL_DEFINED /* also in winsock[2].h */
+#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 != (uvp)->tv_sec) ? \
+	((tvp)->tv_sec cmp (uvp)->tv_sec) : \
+	((tvp)->tv_usec cmp (uvp)->tv_usec))
+#define timerclear(tvp)	 (tvp)->tv_sec = (tvp)->tv_usec = 0
+#endif /* _TIMEVAL_DEFINED */
+
+/* Provided for compatibility with code that assumes that
+   the presence of gettimeofday function implies a definition
+   of struct timezone. */
+struct timezone
+{
+  int tz_minuteswest; /* of Greenwich */
+  int tz_dsttime;     /* type of dst correction to apply */
+};
+
+/*
+   Implementation as per:
+   The Open Group Base Specifications, Issue 6
+   IEEE Std 1003.1, 2004 Edition
+
+   The timezone pointer arg is ignored.  Errors are ignored.
+*/
+int __cdecl __MINGW_NOTHROW gettimeofday(struct timeval *__restrict__,
+			 void *__restrict__  /*	tzp (unused) */);
+
+#ifdef	__cplusplus
+}
+#endif
+
+
+#endif /* _SYS_TIME_H_ */
Index: Daodan/MinGW/include/sys/timeb.h
===================================================================
--- Daodan/MinGW/include/sys/timeb.h	(revision 1046)
+++ Daodan/MinGW/include/sys/timeb.h	(revision 1046)
@@ -0,0 +1,97 @@
+/*
+ * timeb.h
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is a part of the mingw-runtime package.
+ * No warranty is given; refer to the file DISCLAIMER within the package.
+ *
+ * Support for the UNIX System V ftime system call.
+ *
+ */
+
+#ifndef	_TIMEB_H_
+#define	_TIMEB_H_
+
+/* All the headers include this file. */
+#include <_mingw.h>
+#include <sys/types.h>
+
+#ifndef	RC_INVOKED
+
+/*
+ * TODO: Structure not tested.
+ */
+struct _timeb
+{
+	time_t	time;
+	short	millitm;
+	short	timezone;
+	short	dstflag;
+};
+
+#if __MSVCRT_VERSION__ >= 0x0800
+/*
+ * TODO: Structure not tested.
+ */
+struct __timeb32
+{
+	__time32_t	time;
+	short	millitm;
+	short	timezone;
+	short	dstflag;
+};
+#endif /* __MSVCRT_VERSION__ >= 0x0800 */
+
+#ifndef	_NO_OLDNAMES
+/*
+ * TODO: Structure not tested.
+ */
+struct timeb
+{
+	time_t	time;
+	short	millitm;
+	short	timezone;
+	short	dstflag;
+};
+#endif
+
+#ifdef	__cplusplus
+extern "C" {
+#endif
+
+/* TODO: Not tested. */
+_CRTIMP void __cdecl __MINGW_NOTHROW	_ftime (struct _timeb*);
+
+#ifndef	_NO_OLDNAMES
+/* FIXME for __MSVCRT_VERSION__ >= 0x0800 */
+_CRTIMP void __cdecl __MINGW_NOTHROW	ftime (struct timeb*);
+#endif	/* Not _NO_OLDNAMES */
+
+/* This requires newer versions of msvcrt.dll (6.10 or higher).  */
+#if __MSVCRT_VERSION__ >= 0x0601
+struct __timeb64
+{
+  __time64_t time;
+  short millitm;
+  short timezone;
+  short dstflag;
+};
+
+_CRTIMP void __cdecl __MINGW_NOTHROW	_ftime64 (struct __timeb64*);
+#endif /* __MSVCRT_VERSION__ >= 0x0601 */
+
+#if __MSVCRT_VERSION__ >= 0x0800
+_CRTIMP void __cdecl __MINGW_NOTHROW	_ftime32 (struct __timeb32*);
+#ifndef _USE_32BIT_TIME_T
+_CRTALIAS void __cdecl __MINGW_NOTHROW	_ftime (struct _timeb* _v) { return(_ftime64 ((struct __timeb64*)_v)); }
+#else
+_CRTALIAS void __cdecl __MINGW_NOTHROW	_ftime (struct _timeb* _v) { return(_ftime32 ((struct __timeb32*)_v)); }
+#endif
+#endif /* __MSVCRT_VERSION__ >= 0x0800 */
+
+#ifdef	__cplusplus
+}
+#endif
+
+#endif	/* Not RC_INVOKED */
+
+#endif	/* Not _TIMEB_H_ */
Index: Daodan/MinGW/include/sys/types.h
===================================================================
--- Daodan/MinGW/include/sys/types.h	(revision 1046)
+++ Daodan/MinGW/include/sys/types.h	(revision 1046)
@@ -0,0 +1,222 @@
+/*
+ * sys/types.h
+ *
+ * Definitions of (primarily POSIX) system data types.
+ *
+ * $Id: types.h,v c96797f9657b 2016/04/12 14:36:20 keithmarshall $
+ *
+ * Written by Colin Peters <colin@bird.fu.is.saga-u.ac.jp>
+ * Copyright (C) 1997-1999, 2001, 2003, 2004, 2008, 2011, 2014-2016,
+ *   MinGW.org Project.
+ *
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice, this permission notice, and the following
+ * disclaimer shall be included in all copies or substantial portions of
+ * the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OF OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ *
+ */
+#ifndef _SYS_TYPES_H
+#pragma GCC system_header
+
+/* All the headers include this file.
+ */
+#include <_mingw.h>
+
+/* Duplicates of some type definitions from here are also to be
+ * provided by other system headers; use __need_TYPENAME selector
+ * macros to make them selectively visible...
+ */
+#if ! defined __need_off_t && ! defined __need___off64_t \
+ && ! defined __need_ssize_t && ! defined __need_time_t
+ /*
+  * ...and define the multiple inclusion guard macro for this
+  * header, ONLY IF no such selector macro is defined.
+  */
+#define _SYS_TYPES_H
+#endif
+
+#ifndef RC_INVOKED
+/* First handle those typedefs which POSIX requires us to be able
+ * to expose selectively, via other system headers.
+ */
+#if ! defined __have_typedef_off_t \
+ && ( defined _SYS_TYPES_H || defined __need_off_t )
+ /* We base this on an implementation specific private typedef,
+  * analogous to our __off64_t (defined below)...
+  */
+  typedef __int32  __off32_t;
+
+ /* The POSIX off_t typedef is uglified, by Microsoft, as _off_t;
+  * ensure that we provide support for the Microsoft form...
+  */
+  typedef __off32_t  _off_t;
+
+# if _POSIX_C_SOURCE
+  /* ...but note that this form should ALWAYS be preferred when
+   * compiling POSIX compatible source code.
+   */
+  typedef _off_t  off_t;
+# endif
+# if __GNUC__ < 4
+  /* Some compilers, including GCC prior to v4, may get upset
+   * if we try to specifiy these typedefs more than once.
+   */
+#  define __have_typedef_off_t
+# endif
+#endif
+#undef __need_off_t
+
+#if ! defined __have_typedef___off64_t \
+ && ( defined _SYS_TYPES_H || defined __need___off64_t )
+ /* This is neither an ISO-C standard type, nor even a POSIX
+  * standard type; keep it runtime implementation specific.
+  */
+  typedef __int64  __off64_t;
+
+# ifndef __STRICT_ANSI__
+  /* GCC itself, (specifically libgfortran.a), gratuitously
+   * assumes that non-standard type off64_t is defined; make
+   * it so, pending upstream correction.
+   */
+  typedef __off64_t  off64_t;
+# endif
+
+# if __GNUC__ < 4
+  /* Some compilers, including GCC prior to v4, may get upset
+   * if we try to specifiy these typedefs more than once.
+   */
+#  define __have_typedef___off64_t
+# endif
+#endif
+#undef __need___off64_t
+
+#if ! defined __have_typedef_ssize_t \
+ && ( defined _SYS_TYPES_H || defined __need_ssize_t )
+ /* POSIX ssize_t typedef, uglified by Microsoft as _ssize_t; ensure
+  * that we support the Microsoft form...
+  */
+  typedef int  _ssize_t;
+
+# if _POSIX_C_SOURCE
+  /* ...but note that this form should ALWAYS be preferred when
+   * compiling POSIX compatible source code.
+   */
+  typedef _ssize_t  ssize_t;
+# endif
+# if __GNUC__ < 4
+  /* Some compilers, including GCC prior to v4, may get upset
+   * if we try to specifiy these typedefs more than once.
+   */
+#  define __have_typedef_ssize_t
+# endif
+#endif
+#undef __need_ssize_t
+
+#if ! defined __have_typedef_time_t \
+ && ( defined _SYS_TYPES_H || defined __need_time_t )
+ /* Current versions of MSVC define time_t ambiguously, in terms of
+  * one of the following unambiguous internal types:
+  */
+  typedef __int32 __time32_t;	/* unambiguous 32-bit time_t */
+  typedef __int64 __time64_t;	/* unambiguous 64-bit time_t */
+
+# if __MSVCRT_VERSION__ < __MSVCR80_DLL || defined _USE_32BIT_TIME_T
+  /* From MSVCR80.DLL onwards, Microsoft have royally messed up the
+   * definition of time_t; maintain POSIX consistency, (as MSVCRT.DLL
+   * itself does), unless the user is explicitly using one of these
+   * brain damaged DLL variants, and has not elected to retain the
+   * 32-bit time_t representation.
+   */
+   typedef __time32_t time_t;
+
+# else
+  /* Microsoft's brain damaged default, from MSVCR80.DLL onwards.
+   */
+   typedef __time64_t time_t;
+# endif
+# if __GCC__ < 4
+  /* Assume any compiler which is not GCC-4.x or newer may require
+   * guarding against repeated time_t typedefs.
+   */
+#  define __have_typedef_time_t  1
+# endif
+#endif
+#undef __need_time_t
+
+#ifdef _SYS_TYPES_H
+/* This is normal <sys/types.h> inclusion, i.e. for its own sake.
+ *
+ * A small subset of the required type definitions are actually
+ * furnished by <stddef.h>; get them by selective inclusion...
+ */
+#define __need_size_t
+#define __need_ptrdiff_t
+#define __need_wchar_t
+#include <stddef.h>
+
+/* Today, Microsoft generally prefers to prefix POSIX type names
+ * with an ugly initial underscore; ensure that we provide support
+ * for this ungainly practice.
+ */
+#ifdef __MSVCRT__
+ /* Additionally, note that _dev_t is a special case, requiring
+  * this definition when linking with MSVCRT.DLL...
+  */
+typedef unsigned int	_dev_t;
+
+#else
+ /* ...but this alternative, when linking with CRTDLL.DLL
+  */
+typedef short		_dev_t;
+
+#endif
+ /* ...while the remaining type names have consistent definitions,
+  * regardless of any particular DLL association.
+  */
+typedef short		_ino_t;
+typedef unsigned short	_mode_t;
+typedef int		_pid_t;
+typedef int		_sigset_t;
+
+/* Users who value portability should prefer...
+ */
+#if _POSIX_C_SOURCE || ! defined _NO_OLDNAMES
+ /* ...the standard POSIX type names, (which are consistent with
+  * earlier Microsoft naming practice, and are also historically
+  * exposed by MinGW, except when _NO_OLDNAMES is defined).
+  */
+typedef _dev_t		 dev_t;
+typedef _ino_t		 ino_t;
+typedef _mode_t 	 mode_t;
+typedef _pid_t		 pid_t;
+typedef _sigset_t	 sigset_t;
+#endif
+
+typedef __int64 	 fpos64_t;
+
+#if _POSIX_C_SOURCE
+/* useconds_t is an obsolete POSIX data type; we continue to define
+ * it here, for backward compatibility, but we flag it as deprecated,
+ * due to its obsolete status.
+ */
+typedef unsigned long useconds_t __MINGW_ATTRIB_DEPRECATED;
+#endif
+#endif  /* _SYS_TYPES_H normal inclusion */
+
+#endif	/* ! RC_INVOKED */
+#endif	/* !_SYS_TYPES_H: $RCSfile: types.h,v $: end of file */
Index: Daodan/MinGW/include/sys/unistd.h
===================================================================
--- Daodan/MinGW/include/sys/unistd.h	(revision 1046)
+++ Daodan/MinGW/include/sys/unistd.h	(revision 1046)
@@ -0,0 +1,6 @@
+/*
+ * This file is part of the Mingw32 package.
+ *
+ * unistd.h maps (roughly) to io.h
+ */
+#include <io.h>
Index: Daodan/MinGW/include/sys/utime.h
===================================================================
--- Daodan/MinGW/include/sys/utime.h	(revision 1046)
+++ Daodan/MinGW/include/sys/utime.h	(revision 1046)
@@ -0,0 +1,110 @@
+/*
+ * utime.h
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is a part of the mingw-runtime package.
+ * No warranty is given; refer to the file DISCLAIMER within the package.
+ *
+ * Support for the utime function.
+ *
+ */
+#ifndef	_UTIME_H_
+#define	_UTIME_H_
+
+/* All the headers include this file. */
+#include <_mingw.h>
+
+#define __need_wchar_t
+#define __need_size_t
+#ifndef RC_INVOKED
+#include <stddef.h>
+#endif	/* Not RC_INVOKED */
+#include <sys/types.h>
+
+#ifndef	RC_INVOKED
+
+/*
+ * Structure used by _utime function.
+ */
+struct _utimbuf
+{
+	time_t	actime;		/* Access time */
+	time_t	modtime;	/* Modification time */
+};
+#if __MSVCRT_VERSION__ >= 0x0800
+struct __utimbuf32
+{
+	__time32_t actime;
+	__time32_t modtime;
+};
+#endif /* __MSVCRT_VERSION__ >= 0x0800 */
+
+
+#ifndef	_NO_OLDNAMES
+/* NOTE: Must be the same as _utimbuf above. */
+struct utimbuf
+{
+	time_t	actime;
+	time_t	modtime;
+};
+#endif	/* Not _NO_OLDNAMES */
+
+#ifdef	__cplusplus
+extern "C" {
+#endif
+
+#if __MSVCRT_VERSION__ < 0x0800
+_CRTIMP int __cdecl __MINGW_NOTHROW	_utime (const char*, struct _utimbuf*);
+#endif
+
+#ifndef	_NO_OLDNAMES
+/* FIXME for __MSVCRT_VERSION__ >= 0x0800 */
+_CRTIMP int __cdecl __MINGW_NOTHROW	utime (const char*, struct utimbuf*);
+#endif	/* Not _NO_OLDNAMES */
+
+#if __MSVCRT_VERSION__ < 0x0800
+_CRTIMP int __cdecl __MINGW_NOTHROW	_futime (int, struct _utimbuf*);
+#endif
+
+/* The wide character version, only available for MSVCRT versions of the
+ * C runtime library. */
+#ifdef __MSVCRT__
+#if __MSVCRT_VERSION__ < 0x0800
+_CRTIMP int __cdecl __MINGW_NOTHROW	_wutime (const wchar_t*, struct _utimbuf*);
+#endif
+#endif /* MSVCRT runtime */
+
+/* These require newer versions of msvcrt.dll (6.10 or higher).  */
+#if __MSVCRT_VERSION__ >= 0x0601
+struct __utimbuf64
+{
+	__time64_t actime;
+	__time64_t modtime;
+};
+
+_CRTIMP int __cdecl __MINGW_NOTHROW	_utime64 (const char*, struct __utimbuf64*);
+_CRTIMP int __cdecl __MINGW_NOTHROW	_wutime64 (const wchar_t*, struct __utimbuf64*);
+_CRTIMP int __cdecl __MINGW_NOTHROW	_futime64 (int, struct __utimbuf64*);
+#endif /* __MSVCRT_VERSION__ >= 0x0601 */
+
+#if __MSVCRT_VERSION__ >= 0x0800
+_CRTIMP int __cdecl __MINGW_NOTHROW	_utime32 (const char*, struct __utimbuf32*);
+_CRTIMP int __cdecl __MINGW_NOTHROW	_wutime32 (const wchar_t*, struct __utimbuf32*);
+_CRTIMP int __cdecl __MINGW_NOTHROW	_futime32 (int, struct __utimbuf32*);
+#ifndef _USE_32BIT_TIME_T
+_CRTALIAS int __cdecl __MINGW_NOTHROW	_utime (const char* _v1, struct _utimbuf* _v2)	   { return(_utime64  (_v1,(struct __utimbuf64*)_v2)); }
+_CRTALIAS int __cdecl __MINGW_NOTHROW	_wutime (const wchar_t* _v1, struct _utimbuf* _v2) { return(_wutime64 (_v1,(struct __utimbuf64*)_v2)); }
+_CRTALIAS int __cdecl __MINGW_NOTHROW	_futime (int _v1, struct _utimbuf* _v2)		   { return(_futime64 (_v1,(struct __utimbuf64*)_v2)); }
+#else
+_CRTALIAS int __cdecl __MINGW_NOTHROW	_utime (const char* _v1, struct _utimbuf* _v2)	   { return(_utime32  (_v1,(struct __utimbuf32*)_v2)); }
+_CRTALIAS int __cdecl __MINGW_NOTHROW	_wutime (const wchar_t* _v1, struct _utimbuf* _v2) { return(_wutime32 (_v1,(struct __utimbuf32*)_v2)); }
+_CRTALIAS int __cdecl __MINGW_NOTHROW	_futime (int _v1, struct _utimbuf* _v2)		   { return(_futime32 (_v1,(struct __utimbuf32*)_v2)); }
+#endif
+#endif /* __MSVCRT_VERSION__ >= 0x0800 */
+
+#ifdef	__cplusplus
+}
+#endif
+
+#endif	/* Not RC_INVOKED */
+
+#endif	/* Not _UTIME_H_ */
Index: Daodan/MinGW/include/tchar.h
===================================================================
--- Daodan/MinGW/include/tchar.h	(revision 1046)
+++ Daodan/MinGW/include/tchar.h	(revision 1046)
@@ -0,0 +1,484 @@
+/*
+ * tchar.h
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is a part of the mingw-runtime package.
+ * No warranty is given; refer to the file DISCLAIMER within the package.
+ *
+ * Unicode mapping layer for the standard C library. By including this
+ * file and using the 't' names for string functions
+ * (eg. _tprintf) you can make code which can be easily adapted to both
+ * Unicode and non-unicode environments. In a unicode enabled compile define
+ * _UNICODE before including tchar.h, otherwise the standard non-unicode
+ * library functions will be used.
+ *
+ * Note that you still need to include string.h or stdlib.h etc. to define
+ * the appropriate functions. Also note that there are several defines
+ * included for non-ANSI functions which are commonly available (but using
+ * the convention of prepending an underscore to non-ANSI library function
+ * names).
+ *
+ */
+
+#ifndef	_TCHAR_H_
+#define _TCHAR_H_
+
+/* All the headers include this file. */
+#include <_mingw.h>
+
+/*
+ * NOTE: This tests _UNICODE, which is different from the UNICODE define
+ *       used to differentiate Win32 API calls.
+ */
+#ifdef	_UNICODE
+
+/*
+ * Include <wchar.h> for wchar_t and WEOF if _UNICODE.
+ */
+#include <wchar.h>
+
+/*
+ * Use TCHAR instead of char or wchar_t. It will be appropriately translated
+ * if _UNICODE is correctly defined (or not).
+ */
+#ifndef _TCHAR_DEFINED
+#ifndef RC_INVOKED
+typedef	wchar_t	TCHAR;
+typedef wchar_t _TCHAR;
+#endif	/* Not RC_INVOKED */
+#define _TCHAR_DEFINED
+#endif
+
+/*
+ * Use _TEOF instead of EOF or WEOF. It will be appropriately translated if
+ * _UNICODE is correctly defined (or not).
+ */
+#define _TEOF WEOF
+
+/*
+ * __TEXT is a private macro whose specific use is to force the expansion of a
+ * macro passed as an argument to the macros _T or _TEXT.  DO NOT use this
+ * macro within your programs.  It's name and function could change without
+ * notice.
+ */
+#define	__TEXT(q)	L##q
+
+/*  for porting from other Windows compilers */
+#if 0  /* no  wide startup module */
+#define _tmain      wmain
+#define _tWinMain   wWinMain
+#define _tenviron   _wenviron
+#define __targv     __wargv
+#endif
+
+/*
+ * Unicode functions
+ */
+#define	_tprintf	wprintf
+#define	_ftprintf	fwprintf
+#define	_stprintf	swprintf
+#define	_sntprintf	_snwprintf
+#define	_vtprintf	vwprintf
+#define	_vftprintf	vfwprintf
+#define _vstprintf	vswprintf
+#define	_vsntprintf	_vsnwprintf
+#define	_vsctprintf	_vscwprintf
+#define	_tscanf		wscanf
+#define	_ftscanf	fwscanf
+#define	_stscanf	swscanf
+#define	_fgettc		fgetwc
+#define	_fgettchar	_fgetwchar
+#define	_fgetts		fgetws
+#define	_fputtc		fputwc
+#define	_fputtchar	_fputwchar
+#define	_fputts		fputws
+#define	_gettc		getwc
+#define	_getts		_getws
+#define	_puttc		putwc
+#define _puttchar       putwchar
+#define	_putts		_putws
+#define	_ungettc	ungetwc
+#define	_tcstod		wcstod
+#define	_tcstol		wcstol
+#define _tcstoul	wcstoul
+#define	_itot		_itow
+#define	_ltot		_ltow
+#define	_ultot		_ultow
+#define	_ttoi		_wtoi
+#define	_ttol		_wtol
+#define	_tcscat		wcscat
+#define _tcschr		wcschr
+#define _tcscmp		wcscmp
+#define _tcscpy		wcscpy
+#define _tcscspn	wcscspn
+#define	_tcslen		wcslen
+#define	_tcsncat	wcsncat
+#define	_tcsncmp	wcsncmp
+#define	_tcsncpy	wcsncpy
+#define	_tcspbrk	wcspbrk
+#define	_tcsrchr	wcsrchr
+#define _tcsspn		wcsspn
+#define	_tcsstr		wcsstr
+#define _tcstok		wcstok
+#define	_tcsdup		_wcsdup
+#define	_tcsicmp	_wcsicmp
+#define	_tcsnicmp	_wcsnicmp
+#define	_tcsnset	_wcsnset
+#define	_tcsrev		_wcsrev
+#define _tcsset		_wcsset
+#define	_tcslwr		_wcslwr
+#define	_tcsupr		_wcsupr
+#define	_tcsxfrm	wcsxfrm
+#define	_tcscoll	wcscoll
+#define	_tcsicoll	_wcsicoll
+#define	_istalpha	iswalpha
+#define	_istupper	iswupper
+#define	_istlower	iswlower
+#define	_istdigit	iswdigit
+#define	_istxdigit	iswxdigit
+#define	_istspace	iswspace
+#define	_istpunct	iswpunct
+#define	_istalnum	iswalnum
+#define	_istprint	iswprint
+#define	_istgraph	iswgraph
+#define	_istcntrl	iswcntrl
+#define	_istascii	iswascii
+#define _totupper	towupper
+#define	_totlower	towlower
+#define _tcsftime	wcsftime
+/* Macro functions */
+#define _tcsdec     _wcsdec
+#define _tcsinc     _wcsinc
+#define _tcsnbcnt   _wcsncnt
+#define _tcsnccnt   _wcsncnt
+#define _tcsnextc   _wcsnextc
+#define _tcsninc    _wcsninc
+#define _tcsspnp    _wcsspnp
+#define _wcsdec(_wcs1, _wcs2) ((_wcs1)>=(_wcs2) ? NULL : (_wcs2)-1)
+#define _wcsinc(_wcs)  ((_wcs)+1)
+#define _wcsnextc(_wcs) ((unsigned int) *(_wcs))
+#define _wcsninc(_wcs, _inc) (((_wcs)+(_inc)))
+#define _wcsncnt(_wcs, _cnt) ((wcslen(_wcs)>_cnt) ? _count : wcslen(_wcs))
+#define _wcsspnp(_wcs1, _wcs2) ((*((_wcs1)+wcsspn(_wcs1,_wcs2))) ? ((_wcs1)+wcsspn(_wcs1,_wcs2)) : NULL)
+
+#if 1  /* defined __MSVCRT__ */
+/*
+ *   These wide functions not in crtdll.dll.
+ *   Define macros anyway so that _wfoo rather than _tfoo is undefined
+ */
+#define _ttoi64     _wtoi64
+#define _i64tot     _i64tow
+#define _ui64tot    _ui64tow
+#define	_tasctime	_wasctime
+#define	_tctime		_wctime
+#if __MSVCRT_VERSION__ >= 0x0800
+#define	_tctime32	_wctime32
+#define	_tctime64	_wctime64
+#endif /* __MSVCRT_VERSION__ >= 0x0800 */
+#define	_tstrdate	_wstrdate
+#define	_tstrtime	_wstrtime
+#define	_tutime		_wutime
+#if __MSVCRT_VERSION__ >= 0x0800
+#define	_tutime64	_wutime64
+#define	_tutime32	_wutime32
+#endif /* __MSVCRT_VERSION__ > 0x0800 */
+#define _tcsnccoll  _wcsncoll
+#define _tcsncoll   _wcsncoll
+#define _tcsncicoll _wcsnicoll
+#define _tcsnicoll  _wcsnicoll
+#define _taccess    _waccess
+#define _tchmod     _wchmod
+#define _tcreat     _wcreat
+#define _tfindfirst _wfindfirst
+#define _tfindnext  _wfindnext
+#if __MSVCRT_VERSION__ >= 0x0800
+#define _tfindfirst64 _wfindfirst64
+#define _tfindfirst32 _wfindfirst32
+#define _tfindnext64  _wfindnext64
+#define _tfindnext32  _wfindnext32
+#endif /* __MSVCRT_VERSION__ > 0x0800 */
+#define _tfdopen    _wfdopen
+#define _tfopen     _wfopen
+#define _tfreopen   _wfreopen
+#define _tfsopen    _wfsopen
+#define _tgetenv    _wgetenv
+#define _tputenv    _wputenv
+#define _tsearchenv _wsearchenv
+#define  _tsystem    _wsystem
+#define _tmakepath  _wmakepath
+#define _tsplitpath _wsplitpath
+#define _tfullpath  _wfullpath
+#define _tmktemp    _wmktemp
+#define _topen      _wopen
+#define _tremove    _wremove
+#define _trename    _wrename
+#define _tsopen     _wsopen
+#define _tsetlocale _wsetlocale
+#define _tunlink    _wunlink
+#define _tfinddata_t    _wfinddata_t
+#define _tfindfirsti64  _wfindfirsti64
+#define _tfindnexti64   _wfindnexti64
+#define _tfinddatai64_t _wfinddatai64_t
+#if __MSVCRT_VERSION__ >= 0x0601
+#define _tfinddata64_t    _wfinddata64_t
+#endif
+#if __MSVCRT_VERSION__ >= 0x0800
+#define _tfinddata32_t    _wfinddata32_t
+#define _tfinddata32i64_t _wfinddata32i64_t
+#define _tfinddata64i32_t _wfinddata64i32_t
+#define _tfindfirst32i64  _wfindfirst32i64
+#define _tfindfirst64i32  _wfindfirst64i32
+#define _tfindnext32i64   _wfindnext32i64
+#define _tfindnext64i32   _wfindnext64i32
+#endif /* __MSVCRT_VERSION__ > 0x0800 */
+#define _tchdir		_wchdir
+#define _tgetcwd	_wgetcwd
+#define _tgetdcwd	_wgetdcwd
+#define _tmkdir		_wmkdir
+#define _trmdir		_wrmdir
+#define _tstat		_wstat
+#define _tstati64	_wstati64
+#define _tstat64	_wstat64
+#if __MSVCRT_VERSION__ >= 0x0800
+#define _tstat32	_wstat32
+#define _tstat32i64	_wstat32i64
+#define _tstat64i32	_wstat64i32
+#endif /* __MSVCRT_VERSION__ > 0x0800 */
+#endif  /* __MSVCRT__ */
+
+/* dirent structures and functions */
+#define _tdirent	_wdirent
+#define _TDIR 		_WDIR
+#define _topendir	_wopendir
+#define _tclosedir	_wclosedir
+#define _treaddir	_wreaddir
+#define _trewinddir	_wrewinddir
+#define _ttelldir	_wtelldir
+#define _tseekdir	_wseekdir
+
+#else	/* Not _UNICODE */
+
+/*
+ * TCHAR, the type you should use instead of char.
+ */
+#ifndef _TCHAR_DEFINED
+#ifndef RC_INVOKED
+typedef char	TCHAR;
+typedef char	_TCHAR;
+#endif
+#define _TCHAR_DEFINED
+#endif
+
+/*
+ * _TEOF, the constant you should use instead of EOF.
+ */
+#define _TEOF EOF
+
+/*
+ * __TEXT is a private macro whose specific use is to force the expansion of a
+ * macro passed as an argument to the macros _T or _TEXT.  DO NOT use this
+ * macro within your programs.  It's name and function could change without
+ * notice.
+ */
+#define	__TEXT(q)	q
+
+/*  for porting from other Windows compilers */
+#define _tmain      main
+#define _tWinMain   WinMain
+#define _tenviron  _environ
+#define __targv     __argv
+
+/*
+ * Non-unicode (standard) functions
+ */
+
+#define	_tprintf	printf
+#define _ftprintf	fprintf
+#define	_stprintf	sprintf
+#define	_sntprintf	_snprintf
+#define	_vtprintf	vprintf
+#define	_vftprintf	vfprintf
+#define _vstprintf	vsprintf
+#define	_vsntprintf	_vsnprintf
+#define	_vsctprintf	_vscprintf
+#define	_tscanf		scanf
+#define	_ftscanf	fscanf
+#define	_stscanf	sscanf
+#define	_fgettc		fgetc
+#define	_fgettchar	_fgetchar
+#define	_fgetts		fgets
+#define	_fputtc		fputc
+#define	_fputtchar	_fputchar
+#define	_fputts		fputs
+#define _tfdopen	_fdopen
+#define	_tfopen		fopen
+#define _tfreopen	freopen
+#define	_tfsopen	_fsopen
+#define	_tgetenv	getenv
+#define	_tputenv	_putenv
+#define	_tsearchenv	_searchenv
+#define  _tsystem       system
+#define	_tmakepath	_makepath
+#define	_tsplitpath	_splitpath
+#define	_tfullpath	_fullpath
+#define	_gettc		getc
+#define	_getts		gets
+#define	_puttc		putc
+#define _puttchar       putchar
+#define	_putts		puts
+#define	_ungettc	ungetc
+#define	_tcstod		strtod
+#define	_tcstol		strtol
+#define _tcstoul	strtoul
+#define	_itot		_itoa
+#define	_ltot		_ltoa
+#define	_ultot		_ultoa
+#define	_ttoi		atoi
+#define	_ttol		atol
+#define	_tcscat		strcat
+#define _tcschr		strchr
+#define _tcscmp		strcmp
+#define _tcscpy		strcpy
+#define _tcscspn	strcspn
+#define	_tcslen		strlen
+#define	_tcsncat	strncat
+#define	_tcsncmp	strncmp
+#define	_tcsncpy	strncpy
+#define	_tcspbrk	strpbrk
+#define	_tcsrchr	strrchr
+#define _tcsspn		strspn
+#define	_tcsstr		strstr
+#define _tcstok		strtok
+#define	_tcsdup		_strdup
+#define	_tcsicmp	_stricmp
+#define	_tcsnicmp	_strnicmp
+#define	_tcsnset	_strnset
+#define	_tcsrev		_strrev
+#define _tcsset		_strset
+#define	_tcslwr		_strlwr
+#define	_tcsupr		_strupr
+#define	_tcsxfrm	strxfrm
+#define	_tcscoll	strcoll
+#define	_tcsicoll	_stricoll
+#define	_istalpha	isalpha
+#define	_istupper	isupper
+#define	_istlower	islower
+#define	_istdigit	isdigit
+#define	_istxdigit	isxdigit
+#define	_istspace	isspace
+#define	_istpunct	ispunct
+#define	_istalnum	isalnum
+#define	_istprint	isprint
+#define	_istgraph	isgraph
+#define	_istcntrl	iscntrl
+#define	_istascii	isascii
+#define _totupper	toupper
+#define	_totlower	tolower
+#define	_tasctime	asctime
+#define	_tctime		ctime
+#if __MSVCRT_VERSION__ >= 0x0800
+#define	_tctime32	_ctime32
+#define	_tctime64	_ctime64
+#endif /* __MSVCRT_VERSION__ >= 0x0800 */
+#define	_tstrdate	_strdate
+#define	_tstrtime	_strtime
+#define	_tutime		_utime
+#if __MSVCRT_VERSION__ >= 0x0800
+#define	_tutime64	_utime64
+#define	_tutime32	_utime32
+#endif /* __MSVCRT_VERSION__ > 0x0800 */
+#define _tcsftime	strftime
+/* Macro functions */
+#define _tcsdec     _strdec
+#define _tcsinc     _strinc
+#define _tcsnbcnt   _strncnt
+#define _tcsnccnt   _strncnt
+#define _tcsnextc   _strnextc
+#define _tcsninc    _strninc
+#define _tcsspnp    _strspnp
+#define _strdec(_str1, _str2) ((_str1)>=(_str2) ? NULL : (_str2)-1)
+#define _strinc(_str)  ((_str)+1)
+#define _strnextc(_str) ((unsigned int) *(_str))
+#define _strninc(_str, _inc) (((_str)+(_inc)))
+#define _strncnt(_str, _cnt) ((strlen(_str)>_cnt) ? _count : strlen(_str))
+#define _strspnp(_str1, _str2) ((*((_str1)+strspn(_str1,_str2))) ? ((_str1)+strspn(_str1,_str2)) : NULL)
+
+#define _tchmod     _chmod
+#define _tcreat     _creat
+#define _tfindfirst _findfirst
+#define _tfindnext  _findnext
+#if __MSVCRT_VERSION__ >= 0x0800
+#define _tfindfirst64 _findfirst64
+#define _tfindfirst32 _findfirst32
+#define _tfindnext64  _findnext64
+#define _tfindnext32  _findnext32
+#endif /* __MSVCRT_VERSION__ > 0x0800 */
+#define _tmktemp    _mktemp
+#define _topen      _open
+#define _taccess    _access
+#define _tremove    remove
+#define _trename    rename
+#define _tsopen     _sopen
+#define _tsetlocale setlocale
+#define _tunlink    _unlink
+#define _tfinddata_t    _finddata_t
+#define _tchdir	    _chdir
+#define _tgetcwd    _getcwd
+#define _tgetdcwd   _getdcwd
+#define _tmkdir	    _mkdir
+#define _trmdir	    _rmdir
+#define _tstat      _stat
+
+#if 1  /* defined __MSVCRT__ */
+/* Not in crtdll.dll. Define macros anyway? */
+#define _ttoi64     _atoi64
+#define _i64tot     _i64toa
+#define _ui64tot    _ui64toa
+#define _tcsnccoll  _strncoll
+#define _tcsncoll   _strncoll
+#define _tcsncicoll _strnicoll
+#define _tcsnicoll  _strnicoll
+#define _tfindfirsti64  _findfirsti64
+#define _tfindnexti64   _findnexti64
+#define _tfinddatai64_t _finddatai64_t
+#if __MSVCRT_VERSION__ >= 0x0601
+#define _tfinddata64_t    _finddata64_t
+#endif
+#if __MSVCRT_VERSION__ >= 0x0800
+#define _tfinddata32_t    _finddata32_t
+#define _tfinddata32i64_t _finddata32i64_t
+#define _tfinddata64i32_t _finddata64i32_t
+#define _tfindfirst32i64  _findfirst32i64
+#define _tfindfirst64i32  _findfirst64i32
+#define _tfindnext32i64   _findnext32i64
+#define _tfindnext64i32   _findnext64i32
+#endif /* __MSVCRT_VERSION__ > 0x0800 */
+#define _tstati64   _stati64
+#define _tstat64    _stat64
+#if __MSVCRT_VERSION__ >= 0x0800
+#define _tstat32	_stat32
+#define _tstat32i64	_stat32i64
+#define _tstat64i32	_stat64i32
+#endif /* __MSVCRT_VERSION__ > 0x0800 */
+#endif  /* __MSVCRT__ */
+
+/* dirent structures and functions */
+#define _tdirent	dirent
+#define _TDIR 		DIR
+#define _topendir	opendir
+#define _tclosedir	closedir
+#define _treaddir	readdir
+#define _trewinddir	rewinddir
+#define _ttelldir	telldir
+#define _tseekdir	seekdir
+
+#endif	/* Not _UNICODE */
+
+/*
+ * UNICODE a constant string when _UNICODE is defined else returns the string
+ * unmodified.  Also defined in w32api/winnt.h.
+ */
+#define _TEXT(x)	__TEXT(x)
+#define	_T(x)		__TEXT(x)
+
+#endif	/* Not _TCHAR_H_ */
+
Index: Daodan/MinGW/include/time.h
===================================================================
--- Daodan/MinGW/include/time.h	(revision 1046)
+++ Daodan/MinGW/include/time.h	(revision 1046)
@@ -0,0 +1,497 @@
+/*
+ * time.h
+ *
+ * Type definitions and function declarations relating to date and time.
+ *
+ * $Id: time.h,v c96797f9657b 2016/04/12 14:36:20 keithmarshall $
+ *
+ * Written by Colin Peters <colin@bird.fu.is.saga-u.ac.jp>
+ * Copyright (C) 1997-2007, 2011, 2015, 2016, MinGW.org Project.
+ *
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice, this permission notice, and the following
+ * disclaimer shall be included in all copies or substantial portions of
+ * the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OF OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ *
+ */
+#if ! defined _TIME_H || defined __need_time_t
+#pragma GCC system_header
+
+/* Irrespective of whether this is normal or selective inclusion of
+ * <time.h>, we ALWAYS require the definition for time_t; get it by
+ * selective inclusion from its primary source, in <sys/types.h>;
+ * note that we must ALWAYS delegate this, when __need_time_t is
+ * defined, even when _TIME_H had been defined previously, to ensure
+ * that __need_time_t is properly reset, and thus cannot compromise
+ * a later inclusion of <sys/types.h>
+ */
+#undef __need_time_h
+#define __need_time_t  1
+#include <sys/types.h>
+
+#ifndef _TIME_H
+/* To support selective partial inclusion, we do not immediately define
+ * the normal _TIME_H guard macro; initially, we also clear all of those
+ * declaraction subset selection macros which are applicable herein.
+ */
+#undef __need_struct_timespec
+#undef __need_wchar_decls
+
+#if defined __WCHAR_H_SOURCED__
+/* This is selective inclusion by <wchar.h>; thus, we do not define the
+ * _TIME_H guard macro, and we select only the minimally required subset
+ * of declarations to be exposed from within <time.h>
+ */
+# define __need_wchar_decls  1
+
+/* Both ISO-C and POSIX stipulate that <wchar.h> shall declare "struct tm"
+ * as an incomplete structure, with its complete declaration to be provided
+ * by <time.h>; provide an incomplete forward declaration, to satisfy this
+ * minimal requirement for selective inclusion by <wchar.h>
+ */
+struct tm;
+
+#else
+#define _TIME_H
+/* This is normal inclusion of <time.h>, in its own right.  All our system
+ * headers are required to include <_mingw.h>, but in the case of selective
+ * inclusion, we delegate that responsibility to the including header; when
+ * including <time.h> directly, we must fulfil this requirement now.
+ */
+#include <_mingw.h>
+
+/* Number of clock ticks per second. A clock tick is the unit by which
+ * processor time is measured and is returned by 'clock'.
+ */
+#define CLOCKS_PER_SEC	((clock_t)(1000))
+#define CLK_TCK 	CLOCKS_PER_SEC
+
+#define __need_struct_timespec  1
+#define __need_wchar_decls  1
+#endif
+
+#ifndef RC_INVOKED
+#if defined __need_struct_timespec && ! __struct_timespec_defined
+/* Structure timespec is mandated by POSIX, for specification of
+ * intervals with the greatest precision supported by the OS kernel.
+ * Although this allows for specification to nanosecond precision, do
+ * not be deluded into any false expectation that such short intervals
+ * can be realized on Windows; on Win9x derivatives, the metronome used
+ * by the process scheduler has a period of ~55 milliseconds, while for
+ * WinNT derivatives, the corresponding period is ~15 milliseconds; thus,
+ * the shortest intervals which can be realistically timed will range
+ * from 0..55 milliseconds on Win9x hosts, and from 0..15 ms on WinNT,
+ * with period values normally distributed around means of ~27.5 ms
+ * and ~7.5 ms, for the two system types respectively.
+ */
+struct timespec
+{ /* Period is sum of tv_sec + tv_nsec; while 32-bits is sufficient
+   * to accommodate tv_nsec, we use 64-bit __time64_t for tv_sec, to
+   * ensure that we have a sufficiently large field to accommodate
+   * Microsoft's ambiguous __time32_t vs. __time64_t representation
+   * of time_t; we may resolve this ambiguity locally, by casting a
+   * pointer to a struct timespec to point to an identically sized
+   * struct __mingw32_timespec, which is defined below.
+   */
+  __time64_t	  tv_sec;	/* seconds; accept 32 or 64 bits */
+  __int32  	  tv_nsec;	/* nanoseconds */
+};
+
+# ifdef _MINGW32_SOURCE_EXTENDED
+struct __mingw32_expanded_timespec
+{
+  /* Equivalent of struct timespec, with disambiguation for the
+   * 32-bit vs. 64-bit tv_sec field declaration.  Period is the
+   * sum of tv_sec + tv_nsec; we use explicitly sized types to
+   * avoid 32-bit vs. 64-bit time_t ambiguity...
+   */
+  union
+  { /* ...within this anonymous union, allowing tv_sec to accommodate
+     * seconds expressed in either of Microsoft's (ambiguously sized)
+     * time_t representations.
+     */
+    __time64_t	__tv64_sec;	/* unambiguously 64 bits */
+    __time32_t	__tv32_sec;	/* unambiguously 32 bits */
+    time_t	  tv_sec;	/* ambiguously 32 or 64 bits */
+  };
+  __int32  	  tv_nsec;	/* nanoseconds */
+};
+# endif /* _MINGW32_SOURCE_EXTENDED */
+
+# define __struct_timespec_defined  1
+#endif
+
+#ifdef _TIME_H
+#ifdef _MINGW32_SOURCE_EXTENDED
+
+_BEGIN_C_DECLS
+
+__CRT_ALIAS __LIBIMPL__(( FUNCTION = mingw_timespec ))
+/* This non-ANSI convenience function facilitates access to entities
+ * defined as struct timespec, while exposing the broken down form of
+ * the tv_sec field, as declared within struct __mingw32_timespec.  It
+ * is exposed only when _MINGW32_SOURCE_EXTENDED is defined, which is
+ * normally implicitly the case, except when in __STRICT_ANSI__ mode
+ * unless the user defines it explicitly.
+ */
+struct __mingw32_expanded_timespec *mingw_timespec( struct timespec *__tv )
+{ return (struct __mingw32_expanded_timespec *)(__tv); }
+
+_END_C_DECLS
+
+#endif	/* _MINGW32_SOURCE_EXTENDED */
+
+/* <time.h> is also required to duplicate the following type definitions,
+ * which are nominally defined in <stddef.h>
+ */
+#define __need_NULL
+#define __need_wchar_t
+#define __need_size_t
+#include <stddef.h>
+
+/* A type for measuring processor time in clock ticks; (no need to
+ * guard this, since it isn't defined elsewhere).
+ */
+typedef long clock_t;
+
+struct tm
+{ /* A structure for storing the attributes of a broken-down time; (once
+   * again, it isn't defined elsewhere, so no guard is necessary).  Note
+   * that we are within the scope of <time.h> itself, so we must provide
+   * the complete structure declaration here.
+   */
+  int  tm_sec;  	/* Seconds: 0-60 (to accommodate leap seconds) */
+  int  tm_min;  	/* Minutes: 0-59 */
+  int  tm_hour; 	/* Hours since midnight: 0-23 */
+  int  tm_mday; 	/* Day of the month: 1-31 */
+  int  tm_mon;  	/* Months *since* January: 0-11 */
+  int  tm_year; 	/* Years since 1900 */
+  int  tm_wday; 	/* Days since Sunday (0-6) */
+  int  tm_yday; 	/* Days since Jan. 1: 0-365 */
+  int  tm_isdst;	/* +1=Daylight Savings Time, 0=No DST, -1=unknown */
+};
+
+_BEGIN_C_DECLS
+
+_CRTIMP __cdecl __MINGW_NOTHROW  clock_t  clock (void);
+
+#if __MSVCRT_VERSION__ < __MSVCR80_DLL
+ /* Although specified as ISO-C functions, Microsoft withdrew direct
+  * support for these, with their ISO-C names, from MSVCR80.DLL onwards,
+  * preferring to map them via header file macros, to alternatively named
+  * DLL functions with ambiguous time_t representations; they remain in
+  * MSVCRT.DLL, however, with their original ISO-C names, and time_t
+  * unambiguously represented as a 32-bit data type.
+  */
+_CRTIMP __cdecl __MINGW_NOTHROW  time_t time (time_t *);
+_CRTIMP __cdecl __MINGW_NOTHROW  double difftime (time_t, time_t);
+_CRTIMP __cdecl __MINGW_NOTHROW  time_t mktime (struct tm *);
+#endif
+
+/* These functions write to and return pointers to static buffers that may
+ * be overwritten by other function calls. Yikes!
+ *
+ * NOTE: localtime, and perhaps the others of the four functions grouped
+ * below may return NULL if their argument is not 'acceptable'. Also note
+ * that calling asctime with a NULL pointer will produce an Invalid Page
+ * Fault and crap out your program. Guess how I know. Hint: stat called on
+ * a directory gives 'invalid' times in st_atime etc...
+ */
+_CRTIMP __cdecl __MINGW_NOTHROW  char *asctime (const struct tm *);
+
+#if __MSVCRT_VERSION__ < __MSVCR80_DLL
+ /* Once again, these have been withdrawn from MSVCR80.DLL, (and later),
+  * but remain in MSVCRT.DLL, with unambiguously 32-bit time_t.
+  */
+_CRTIMP __cdecl __MINGW_NOTHROW  char *ctime (const time_t *);
+_CRTIMP __cdecl __MINGW_NOTHROW  struct tm *gmtime (const time_t *);
+_CRTIMP __cdecl __MINGW_NOTHROW  struct tm *localtime (const time_t *);
+#endif
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+size_t strftime (char *, size_t, const char *, const struct tm *);
+
+#ifndef __STRICT_ANSI__
+extern _CRTIMP __cdecl __MINGW_NOTHROW  void _tzset (void);
+
+#ifndef _NO_OLDNAMES
+extern _CRTIMP __cdecl __MINGW_NOTHROW  void tzset (void);
+#endif
+
+_CRTIMP __cdecl __MINGW_NOTHROW  char *_strdate (char *);
+_CRTIMP __cdecl __MINGW_NOTHROW  char *_strtime (char *);
+
+#if __MSVCRT_VERSION__ >= __MSVCR61_DLL || _WIN32_WINNT >= _WIN32_WINNT_WIN2K
+/* These 64-bit time_t variant functions first became available in
+ * MSVCR61.DLL, and its descendants; they were subsequently included
+ * in MSVCRT.DLL, from its Win2K release onwards.
+ */
+_CRTIMP __cdecl __MINGW_NOTHROW  __time64_t _time64( __time64_t *);
+_CRTIMP __cdecl __MINGW_NOTHROW  __time64_t _mktime64 (struct tm *);
+_CRTIMP __cdecl __MINGW_NOTHROW    char *_ctime64 (const __time64_t *);
+_CRTIMP __cdecl __MINGW_NOTHROW    struct tm *_gmtime64 (const __time64_t *);
+_CRTIMP __cdecl __MINGW_NOTHROW    struct tm *_localtime64 (const __time64_t *);
+
+#endif	/* __MSVCR61_DLL, _WIN32_WINNT_WIN2K, and descendants. */
+
+#if __MSVCRT_VERSION__ >= __MSVCR80_DLL || _WIN32_WINNT >= _WIN32_WINNT_VISTA
+ /* The following were introduced in MSVCR80.DLL, and they subsequently
+  * appeared in MSVCRT.DLL, from Windows-Vista onwards.
+  */
+_CRTIMP __cdecl __MINGW_NOTHROW    char *_ctime32 (const __time32_t *);
+_CRTIMP __cdecl __MINGW_NOTHROW    double _difftime32 (__time32_t, __time32_t);
+_CRTIMP __cdecl __MINGW_NOTHROW    double _difftime64 (__time64_t, __time64_t);
+_CRTIMP __cdecl __MINGW_NOTHROW    struct tm *_gmtime32 (const __time32_t *);
+_CRTIMP __cdecl __MINGW_NOTHROW    struct tm *_localtime32 (const __time32_t *);
+_CRTIMP __cdecl __MINGW_NOTHROW  __time32_t _mktime32 (struct tm *);
+_CRTIMP __cdecl __MINGW_NOTHROW  __time32_t _mkgmtime32 (struct tm *);
+_CRTIMP __cdecl __MINGW_NOTHROW  __time64_t _mkgmtime64 (struct tm *);
+_CRTIMP __cdecl __MINGW_NOTHROW  __time32_t _time32 (__time32_t *);
+
+# if __MSVCRT_VERSION__ >= __MSVCR80_DLL && defined _USE_32BIT_TIME_T
+  /* Users of MSVCR80.DLL and later, (but not users of MSVCRT.DLL, even
+   * for _WIN32_WINNT_VISTA and later), must contend with the omission of
+   * the following functions from their DLL of choice, thus requiring these
+   * brain damaged mappings, in terms of an ambiguously defined 'time_t';
+   * thus, when 'time_t' is declared to be equivalent to '__time32_t':
+   */
+__CRT_ALIAS __cdecl __MINGW_NOTHROW  time_t time (time_t *__v)
+ { return _time32 (__v); }
+
+__CRT_ALIAS __cdecl __MINGW_NOTHROW  double difftime (time_t __v1, time_t __v2)
+ { return _difftime32 (__v1, __v2); }
+
+__CRT_ALIAS __cdecl __MINGW_NOTHROW  time_t mktime (struct tm *__v)
+ { return _mktime32 (__v); }
+
+__CRT_ALIAS __cdecl __MINGW_NOTHROW  time_t _mkgmtime (struct tm *__v)
+ { return _mkgmtime32 (__v); }
+
+__CRT_ALIAS __cdecl __MINGW_NOTHROW  char *ctime (const time_t *__v)
+ { return _ctime32 (__v); }
+
+__CRT_ALIAS __cdecl __MINGW_NOTHROW  struct tm *gmtime (const time_t *__v)
+ { return _gmtime32 (__v); }
+
+__CRT_ALIAS __cdecl __MINGW_NOTHROW  struct tm *localtime (const time_t *__v)
+ { return _localtime32 (__v); }
+
+# elif __MSVCRT_VERSION__ >= __MSVCR80_DLL
+  /* Correspondingly, for users of MSVCR80.DLL and later only, when there
+   * is no explicit declaration to direct the specification of 'time_t', and
+   * thus 'time_t' is assumed to be equivalent to '__time64_t':
+   */
+__CRT_ALIAS __cdecl __MINGW_NOTHROW  time_t time (time_t *__v)
+ { return _time64 (__v); }
+
+__CRT_ALIAS __cdecl __MINGW_NOTHROW  double difftime (time_t __v1, time_t __v2)
+ { return _difftime64 (__v1, __v2); }
+
+__CRT_ALIAS __cdecl __MINGW_NOTHROW  time_t mktime (struct tm *__v)
+ { return _mktime64 (__v); }
+
+__CRT_ALIAS __cdecl __MINGW_NOTHROW  time_t _mkgmtime (struct tm *__v)
+ { return _mkgmtime64 (__v); }
+
+__CRT_ALIAS __cdecl __MINGW_NOTHROW  char *ctime (const time_t *__v)
+ { return _ctime64 (__v); }
+
+__CRT_ALIAS __cdecl __MINGW_NOTHROW  struct tm *gmtime (const time_t *__v)
+ { return _gmtime64 (__v); }
+
+__CRT_ALIAS __cdecl __MINGW_NOTHROW  struct tm *localtime (const time_t *__v)
+ { return _localtime64 (__v); }
+
+# endif /* _USE_32BIT_TIME_T brain damage */
+#endif	/* >=__MSVCR80.DLL || >=_WIN32_WINNT_VISTA */
+
+/* _daylight: non zero if daylight savings time is used.
+ * _timezone: difference in seconds between GMT and local time.
+ * _tzname: standard/daylight savings time zone names (an array with two
+ *          elements).
+ */
+#ifdef __MSVCRT__
+/* These are for compatibility with pre-VC 5.0 supplied MSVCRT.DLL
+ */
+extern _CRTIMP __cdecl __MINGW_NOTHROW  int   *__p__daylight (void);
+extern _CRTIMP __cdecl __MINGW_NOTHROW  long  *__p__timezone (void);
+extern _CRTIMP __cdecl __MINGW_NOTHROW  char **__p__tzname (void);
+
+__MINGW_IMPORT int   _daylight;
+__MINGW_IMPORT long  _timezone;
+__MINGW_IMPORT char *_tzname[2];
+
+#else /* !__MSVCRT__ (i.e. using CRTDLL.DLL) */
+#ifndef __DECLSPEC_SUPPORTED
+
+extern int   *_imp___daylight_dll;
+extern long  *_imp___timezone_dll;
+extern char **_imp___tzname;
+
+#define _daylight  (*_imp___daylight_dll)
+#define _timezone  (*_imp___timezone_dll)
+#define _tzname	   (*_imp___tzname)
+
+#else /* __DECLSPEC_SUPPORTED */
+
+__MINGW_IMPORT int   _daylight_dll;
+__MINGW_IMPORT long  _timezone_dll;
+__MINGW_IMPORT char *_tzname[2];
+
+#define _daylight  _daylight_dll
+#define _timezone  _timezone_dll
+
+#endif /* __DECLSPEC_SUPPORTED */
+#endif /* ! __MSVCRT__ */
+#endif /* ! __STRICT_ANSI__ */
+
+#ifndef _NO_OLDNAMES
+#ifdef __MSVCRT__
+
+/* These go in the oldnames import library for MSVCRT.
+ */
+__MINGW_IMPORT int   daylight;
+__MINGW_IMPORT long  timezone;
+__MINGW_IMPORT char *tzname[2];
+
+#else /* ! __MSVCRT__ */
+/* CRTDLL is royally messed up when it comes to these macros.
+ * TODO: import and alias these via oldnames import library instead
+ * of macros.
+ */
+#define daylight  _daylight
+
+/* NOTE: timezone not defined as a macro because it would conflict with
+ * struct timezone in sys/time.h.  Also, tzname used to a be macro, but
+ * now it's in moldname.
+ */
+__MINGW_IMPORT char 	*tzname[2];
+
+#endif	/* ! __MSVCRT__ */
+#endif	/* ! _NO_OLDNAMES */
+
+#if _POSIX_C_SOURCE
+/* The nanosleep() function provides the most general purpose API for
+ * process/thread suspension; it provides for specification of periods
+ * ranging from ~7.5 ms mean, (on WinNT derivatives; ~27.5 ms on Win9x),
+ * extending up to ~136 years, (effectively eternity).
+ */
+__cdecl __MINGW_NOTHROW
+int nanosleep( const struct timespec *, struct timespec * );
+
+#ifndef __NO_INLINE__
+/* We may conveniently provide an in-line implementation here,
+ * in terms of the __mingw_sleep() helper function.
+ */
+__cdecl __MINGW_NOTHROW
+int __mingw_sleep( unsigned long, unsigned long );
+
+__CRT_INLINE __LIBIMPL__(( FUNCTION = nanosleep ))
+int nanosleep( const struct timespec *period, struct timespec *residual )
+{
+  if( residual != (void *)(0) )
+    residual->tv_sec = (__time64_t)(residual->tv_nsec = 0);
+  return __mingw_sleep((unsigned)(period->tv_sec), (period->tv_sec < 0LL)
+    ? (unsigned)(-1) : (unsigned)(period->tv_nsec));
+}
+#endif	/* !__NO_INLINE__ */
+#endif	/* _POSIX_C_SOURCE */
+
+_END_C_DECLS
+
+#endif	/* _TIME_H included in its own right */
+
+#if __need_wchar_decls && ! (defined _TIME_H && defined _WCHAR_H)
+/* Wide character time function prototypes.  These are nominally declared
+ * both here, in <time.h>, and also in <wchar.h>; we declare them here, and
+ * make them available for selective inclusion by <wchar.h>, but such that
+ * the declarations, and in particular any in-line implementation of the
+ * _wctime() function, are visible only on the first time parse, when
+ * one of either _TIME_H, or _WCHAR_H, but not both, is defined.
+ */
+_BEGIN_C_DECLS
+
+#if defined __MSVCRT__ && ! defined __STRICT_ANSI__
+_CRTIMP __cdecl __MINGW_NOTHROW  wchar_t *_wasctime (const struct tm *);
+_CRTIMP __cdecl __MINGW_NOTHROW  wchar_t *_wstrdate (wchar_t *);
+_CRTIMP __cdecl __MINGW_NOTHROW  wchar_t *_wstrtime (wchar_t *);
+
+#if __MSVCRT_VERSION__ >= __MSVCR61_DLL || _WIN32_WINNT >= _WIN32_WINNT_WIN2K
+/* A __time64_t specific variant of _wctime(), identified as _wctime64(),
+ * first appeared in the non-free MSVC specific MSVCR61.DLL, and was added
+ * to the freely available platform MSVCRT.DLL from Win2K onwards...
+ */
+_CRTIMP __cdecl __MINGW_NOTHROW  wchar_t *_wctime64 (const __time64_t *);
+#endif
+#if __MSVCRT_VERSION__ >= __MSVCR80_DLL || _WIN32_WINNT >= _WIN32_WINNT_VISTA
+/* ...whereas its __time32_t specific counterpart, _wctime32(), did not
+ * make an appearance until MSVCR80.DLL, and was not added to MSVCRT.DLL
+ * until the release of Vista.
+ */
+_CRTIMP __cdecl __MINGW_NOTHROW  wchar_t *_wctime32 (const __time32_t *);
+#endif
+#if __MSVCRT_VERSION__ < __MSVCR80_DLL
+/* Present in all versions of MSVCRT.DLL, but withdrawn from non-free
+ * MSVC specific releases from MSVCR80.DLL onwards; in all versions of
+ * MSVCRT.DLL, _wctime() accepts a 32-bit time_t argument pointer.
+ */
+_CRTIMP __cdecl __MINGW_NOTHROW  wchar_t *_wctime (const time_t *);
+
+#else /* __MSVCRT_VERSION__ >= __MSVCR80_DLL */
+/* For users of the non-free MSVC libraries, we must deal with both the
+ * absence of _wctime(), and with Microsoft's attendant _USE_32BIT_TIME_T
+ * brain damage, as we map an inline replacement...
+ */
+__CRT_ALIAS __cdecl __MINGW_NOTHROW  wchar_t *_wctime (const time_t *__v)
+{
+  /* ...in terms of an appropriately selected time_t size specific
+   * alternative function, which should be available...
+   */
+# ifdef _USE_32BIT_TIME_T
+  /* ...i.e. the __time32_t specific _wctime32(), when the user has
+   * enabled this choice; (the only sane choice, if compatibility with
+   * MSVCRT.DLL is desired)...
+   */
+  return _wctime32 (__v);
+
+# else	/* !_USE_32BIT_TIME_T */
+  /* ...or otherwise, the __time64_t specific _wctime64(), (in which
+   * case, compatibility with MSVCRT.DLL must be sacrificed).
+   */
+  return _wctime64 (__v);
+# endif	/* !_USE_32BIT_TIME_T */
+}
+#endif	/* __MSVCRT_VERSION__ >= __MSVCR80_DLL */
+#endif	/* __MSVCRT__ && !__STRICT_ANSI__ */
+
+_CRTIMP __cdecl __MINGW_NOTHROW
+size_t wcsftime (wchar_t *, size_t, const wchar_t *, const struct tm *);
+
+_END_C_DECLS
+
+#endif	/* ! (defined _TIME_H && defined _WCHAR_H) */
+
+/* We're done with all <time.h> specific content selectors; clear them.
+ */
+#undef __need_time_t
+#undef __need_struct_timespec
+#undef __need_wchar_decls
+
+#endif /* ! RC_INVOKED */
+#endif /* !_TIME_H after __need_time_t processing */
+#endif /* !_TIME_H: $RCSfile: time.h,v $: end of file */
Index: Daodan/MinGW/include/tlhelp32.h
===================================================================
--- Daodan/MinGW/include/tlhelp32.h	(revision 1046)
+++ Daodan/MinGW/include/tlhelp32.h	(revision 1046)
@@ -0,0 +1,140 @@
+/*
+	tlhelp32.h - Include file for Tool help functions.
+
+	Written by Mumit Khan <khan@nanotech.wisc.edu>
+
+	This file is part of a free library for the Win32 API.
+
+	This library is distributed in the hope that it will be useful,
+	but WITHOUT ANY WARRANTY; without even the implied warranty of
+	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+*/
+#ifndef _TLHELP32_H
+#define _TLHELP32_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define HF32_DEFAULT	1
+#define HF32_SHARED	2
+#define LF32_FIXED	0x1
+#define LF32_FREE	0x2
+#define LF32_MOVEABLE	0x4
+#define MAX_MODULE_NAME32	255
+#define TH32CS_SNAPHEAPLIST	0x1
+#define TH32CS_SNAPPROCESS	0x2
+#define TH32CS_SNAPTHREAD	0x4
+#define TH32CS_SNAPMODULE	0x8
+#define TH32CS_SNAPALL	(TH32CS_SNAPHEAPLIST|TH32CS_SNAPPROCESS|TH32CS_SNAPTHREAD|TH32CS_SNAPMODULE)
+#define TH32CS_INHERIT	0x80000000
+typedef struct tagHEAPLIST32 {
+	DWORD dwSize;
+	DWORD th32ProcessID;
+	DWORD th32HeapID;
+	DWORD dwFlags;
+} HEAPLIST32,*PHEAPLIST32,*LPHEAPLIST32;
+typedef struct tagHEAPENTRY32 {
+	DWORD dwSize;
+	HANDLE hHandle;
+	DWORD dwAddress;
+	DWORD dwBlockSize;
+	DWORD dwFlags;
+	DWORD dwLockCount;
+	DWORD dwResvd;
+	DWORD th32ProcessID;
+	DWORD th32HeapID;
+} HEAPENTRY32,*PHEAPENTRY32,*LPHEAPENTRY32;
+typedef struct tagPROCESSENTRY32W {
+	DWORD dwSize;
+	DWORD cntUsage;
+	DWORD th32ProcessID;
+	DWORD th32DefaultHeapID;
+	DWORD th32ModuleID;
+	DWORD cntThreads;
+	DWORD th32ParentProcessID;
+	LONG pcPriClassBase;
+	DWORD dwFlags;
+	WCHAR szExeFile[MAX_PATH];
+} PROCESSENTRY32W,*PPROCESSENTRY32W,*LPPROCESSENTRY32W;
+typedef struct tagPROCESSENTRY32 {
+	DWORD dwSize;
+	DWORD cntUsage;
+	DWORD th32ProcessID;
+	DWORD th32DefaultHeapID;
+	DWORD th32ModuleID;
+	DWORD cntThreads;
+	DWORD th32ParentProcessID;
+	LONG pcPriClassBase;
+	DWORD dwFlags;
+	CHAR  szExeFile[MAX_PATH];
+} PROCESSENTRY32,*PPROCESSENTRY32,*LPPROCESSENTRY32;
+typedef struct tagTHREADENTRY32 {
+	DWORD dwSize;
+	DWORD cntUsage;
+	DWORD th32ThreadID;
+	DWORD th32OwnerProcessID;
+	LONG tpBasePri;
+	LONG tpDeltaPri;
+	DWORD dwFlags;
+} THREADENTRY32,*PTHREADENTRY32,*LPTHREADENTRY32;
+typedef struct tagMODULEENTRY32W {
+	DWORD dwSize;
+	DWORD th32ModuleID;
+	DWORD th32ProcessID;
+	DWORD GlblcntUsage;
+	DWORD ProccntUsage;
+	BYTE *modBaseAddr;
+	DWORD modBaseSize;
+	HMODULE hModule;
+	WCHAR szModule[MAX_MODULE_NAME32 + 1];
+	WCHAR szExePath[MAX_PATH];
+} MODULEENTRY32W,*PMODULEENTRY32W,*LPMODULEENTRY32W;
+typedef struct tagMODULEENTRY32 {
+	DWORD dwSize;
+	DWORD th32ModuleID;
+	DWORD th32ProcessID;
+	DWORD GlblcntUsage;
+	DWORD ProccntUsage;
+	BYTE *modBaseAddr;
+	DWORD modBaseSize;
+	HMODULE hModule;
+	char szModule[MAX_MODULE_NAME32 + 1];
+	char szExePath[MAX_PATH];
+} MODULEENTRY32,*PMODULEENTRY32,*LPMODULEENTRY32;
+BOOL WINAPI Heap32First(LPHEAPENTRY32,DWORD,DWORD);
+BOOL WINAPI Heap32ListFirst(HANDLE,LPHEAPLIST32);
+BOOL WINAPI Heap32ListNext(HANDLE,LPHEAPLIST32);
+BOOL WINAPI Heap32Next(LPHEAPENTRY32);
+BOOL WINAPI Module32First(HANDLE,LPMODULEENTRY32);
+BOOL WINAPI Module32FirstW(HANDLE,LPMODULEENTRY32W);
+BOOL WINAPI Module32Next(HANDLE,LPMODULEENTRY32);
+BOOL WINAPI Module32NextW(HANDLE,LPMODULEENTRY32W);
+BOOL WINAPI Process32First(HANDLE,LPPROCESSENTRY32);
+BOOL WINAPI Process32FirstW(HANDLE,LPPROCESSENTRY32W);
+BOOL WINAPI Process32Next(HANDLE,LPPROCESSENTRY32);
+BOOL WINAPI Process32NextW(HANDLE,LPPROCESSENTRY32W);
+BOOL WINAPI Thread32First(HANDLE,LPTHREADENTRY32);
+BOOL WINAPI Thread32Next(HANDLE,LPTHREADENTRY32);
+BOOL WINAPI Toolhelp32ReadProcessMemory(DWORD,LPCVOID,LPVOID,DWORD,LPDWORD);
+HANDLE WINAPI CreateToolhelp32Snapshot(DWORD,DWORD);
+#ifdef UNICODE
+#define LPMODULEENTRY32 LPMODULEENTRY32W
+#define LPPROCESSENTRY32 LPPROCESSENTRY32W
+#define MODULEENTRY32 MODULEENTRY32W
+#define Module32First Module32FirstW
+#define Module32Next Module32NextW
+#define PMODULEENTRY32 PMODULEENTRY32W
+#define PPROCESSENTRY32 PPROCESSENTRY32W
+#define PROCESSENTRY32 PROCESSENTRY32W
+#define Process32First Process32FirstW
+#define Process32Next Process32NextW
+#endif /* UNICODE */
+#ifdef __cplusplus
+}
+#endif
+#endif /* _TLHELP32_H */
+
Index: Daodan/MinGW/include/tmschema.h
===================================================================
--- Daodan/MinGW/include/tmschema.h	(revision 1046)
+++ Daodan/MinGW/include/tmschema.h	(revision 1046)
@@ -0,0 +1,664 @@
+#ifndef _TMSCHEMA_H
+#define _TMSCHEMA_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+/* BUTTON parts */
+enum {
+	BP_PUSHBUTTON = 1,
+	BP_RADIOBUTTON = 2,
+	BP_CHECKBOX = 3,
+	BP_GROUPBOX = 4,
+	BP_USERBUTTON = 5
+};
+enum {
+	CBS_UNCHECKEDNORMAL = 1,
+	CBS_UNCHECKEDHOT = 2,
+	CBS_UNCHECKEDPRESSED = 3,
+	CBS_UNCHECKEDDISABLED = 4,
+	CBS_CHECKEDNORMAL = 5,
+	CBS_CHECKEDHOT = 6,
+	CBS_CHECKEDPRESSED = 7,
+	CBS_CHECKEDDISABLED = 8,
+	CBS_MIXEDNORMAL = 9,
+	CBS_MIXEDHOT = 10,
+	CBS_MIXEDPRESSED = 11,
+	CBS_MIXEDDISABLED = 12
+};
+enum {
+	GBS_NORMAL = 1,
+	GBS_DISABLED = 2
+};
+enum {
+	PBS_NORMAL = 1,
+	PBS_HOT = 2,
+	PBS_PRESSED = 3,
+	PBS_DISABLED = 4,
+	PBS_DEFAULTED = 5
+};
+enum {
+	RBS_UNCHECKEDNORMAL = 1,
+	RBS_UNCHECKEDHOT = 2,
+	RBS_UNCHECKEDPRESSED = 3,
+	RBS_UNCHECKEDDISABLED = 4,
+	RBS_CHECKEDNORMAL = 5,
+	RBS_CHECKEDHOT = 6,
+	RBS_CHECKEDPRESSED = 7,
+	RBS_CHECKEDDISABLED = 8
+};
+/* CLOCK parts */
+enum {
+	CLP_TIME = 1
+};
+enum {
+	CLS_NORMAL = 1
+};
+/* COMBOBOX parts */
+enum {
+	CP_DROPDOWNBUTTON = 1
+};
+enum {
+	CBXS_NORMAL = 1,
+	CBXS_HOT = 2,
+	CBXS_PRESSED = 3,
+	CBXS_DISABLED = 4
+};
+/* EDIT parts */
+enum {
+	EP_EDITTEXT = 1,
+	EP_CARET = 2
+};
+enum {
+	ETS_NORMAL = 1,
+	ETS_HOT = 2,
+	ETS_SELECTED = 3,
+	ETS_DISABLED = 4,
+	ETS_FOCUSED = 5,
+	ETS_READONLY = 6,
+	ETS_ASSIST = 7
+};
+/* EXPLORERBAR parts */
+enum {
+	EBP_HEADERBACKGROUND = 1,
+	EBP_HEADERCLOSE = 2,
+	EBP_HEADERPIN = 3,
+	EBP_IEBARMENU = 4,
+	EBP_NORMALGROUPBACKGROUND = 5,
+	EBP_NORMALGROUPCOLLAPSE = 6,
+	EBP_NORMALGROUPEXPAND = 7,
+	EBP_NORMALGROUPHEAD = 8,
+	EBP_SPECIALGROUPBACKGROUND = 9,
+	EBP_SPECIALGROUPCOLLAPSE = 10,
+	EBP_SPECIALGROUPEXPAND = 11,
+	EBP_SPECIALGROUPHEAD = 12
+};
+enum {
+	EBHC_NORMAL = 1,
+	EBHC_HOT = 2,
+	EBHC_PRESSED = 3
+};
+enum {
+	EBHP_NORMAL = 1,
+	EBHP_HOT = 2,
+	EBHP_PRESSED = 3,
+	EBHP_SELECTEDNORMAL = 4,
+	EBHP_SELECTEDHOT = 5,
+	EBHP_SELECTEDPRESSED = 6
+};
+enum {
+	EBM_NORMAL = 1,
+	EBM_HOT = 2,
+	EBM_PRESSED = 3
+};
+enum {
+	EBNGC_NORMAL = 1,
+	EBNGC_HOT = 2,
+	EBNGC_PRESSED = 3
+};
+enum {
+	EBNGE_NORMAL = 1,
+	EBNGE_HOT = 2,
+	EBNGE_PRESSED = 3
+};
+enum {
+	EBSGC_NORMAL = 1,
+	EBSGC_HOT = 2,
+	EBSGC_PRESSED = 3
+};
+enum {
+	EBSGE_NORMAL = 1,
+	EBSGE_HOT = 2,
+	EBSGE_PRESSED = 3
+};
+/* HEADER parts */
+enum {
+	HP_HEADERITEM = 1,
+	HP_HEADERITEMLEFT = 2,
+	HP_HEADERITEMRIGHT = 3,
+	HP_HEADERSORTARROW = 4
+};
+enum {
+	HIS_NORMAL = 1,
+	HIS_HOT = 2,
+	HIS_PRESSED = 3
+};
+enum {
+	HILS_NORMAL = 1,
+	HILS_HOT = 2,
+	HILS_PRESSED = 3
+};
+enum {
+	HIRS_NORMAL = 1,
+	HIRS_HOT = 2,
+	HIRS_PRESSED = 3
+};
+enum {
+	HSAS_SORTEDUP = 1,
+	HSAS_SORTEDDOWN = 2
+};
+/* LISTVIEW parts */
+enum {
+	LVP_LISTITEM = 1,
+	LVP_LISTGROUP = 2,
+	LVP_LISTDETAIL = 3,
+	LVP_LISTSORTEDDETAIL = 4,
+	LVP_EMPTYTEXT = 5
+};
+enum {
+	LIS_NORMAL = 1,
+	LIS_HOT = 2,
+	LIS_SELECTED = 3,
+	LIS_DISABLED = 4,
+	LIS_SELECTEDNOTFOCUS = 5
+};
+/* MENU parts */
+enum {
+	MP_MENUITEM = 1,
+	MP_MENUDROPDOWN = 2,
+	MP_MENUBARITEM = 3,
+	MP_MENUBARDROPDOWN = 4,
+	MP_CHEVRON = 5,
+	MP_SEPARATOR = 6
+};
+enum {
+	MS_NORMAL = 1,
+	MS_SELECTED = 2,
+	MS_DEMOTED = 3
+};
+/* MENUBAND parts */
+enum {
+	MDP_NEWAPPBUTTON = 1,
+	MDP_SEPERATOR = 2
+};
+enum {
+	MDS_NORMAL = 1,
+	MDS_HOT = 2,
+	MDS_PRESSED = 3,
+	MDS_DISABLED = 4,
+	MDS_CHECKED = 5,
+	MDS_HOTCHECKED = 6
+};
+/* PAGE parts */
+enum {
+	PGRP_UP = 1,
+	PGRP_DOWN = 2,
+	PGRP_UPHORZ = 3,
+	PGRP_DOWNHORZ = 4
+};
+enum {
+	DNS_NORMAL = 1,
+	DNS_HOT = 2,
+	DNS_PRESSED = 3,
+	DNS_DISABLED = 4
+};
+enum {
+	DNHZS_NORMAL = 1,
+	DNHZS_HOT = 2,
+	DNHZS_PRESSED = 3,
+	DNHZS_DISABLED = 4
+};
+enum {
+	UPS_NORMAL = 1,
+	UPS_HOT = 2,
+	UPS_PRESSED = 3,
+	UPS_DISABLED = 4
+};
+enum {
+	UPHZS_NORMAL = 1,
+	UPHZS_HOT = 2,
+	UPHZS_PRESSED = 3,
+	UPHZS_DISABLED = 4
+};
+/* PROGRESS parts */
+enum {
+	PP_BAR = 1,
+	PP_BARVERT = 2,
+	PP_CHUNK = 3,
+	PP_CHUNKVERT = 4
+};
+/* REBAR parts */
+enum {
+	RP_GRIPPER = 1,
+	RP_GRIPPERVERT = 2,
+	RP_BAND = 3,
+	RP_CHEVRON = 4,
+	RP_CHEVRONVERT = 5
+};
+enum {
+	CHEVS_NORMAL = 1,
+	CHEVS_HOT = 2,
+	CHEVS_PRESSED = 3
+};
+/* SCROLLBAR parts */
+enum {
+	SBP_ARROWBTN = 1,
+	SBP_THUMBBTNHORZ = 2,
+	SBP_THUMBBTNVERT = 3,
+	SBP_LOWERTRACKHORZ = 4,
+	SBP_UPPERTRACKHORZ = 5,
+	SBP_LOWERTRACKVERT = 6,
+	SBP_UPPERTRACKVERT = 7,
+	SBP_GRIPPERHORZ = 8,
+	SBP_GRIPPERVERT = 9,
+	SBP_SIZEBOX = 10
+};
+enum {
+	ABS_UPNORMAL = 1,
+	ABS_UPHOT = 2,
+	ABS_UPPRESSED = 3,
+	ABS_UPDISABLED = 4,
+	ABS_DOWNNORMAL = 5,
+	ABS_DOWNHOT = 6,
+	ABS_DOWNPRESSED = 7,
+	ABS_DOWNDISABLED = 8,
+	ABS_LEFTNORMAL = 9,
+	ABS_LEFTHOT = 10,
+	ABS_LEFTPRESSED = 11,
+	ABS_LEFTDISABLED = 12,
+	ABS_RIGHTNORMAL = 13,
+	ABS_RIGHTHOT = 14,
+	ABS_RIGHTPRESSED = 15,
+	ABS_RIGHTDISABLED = 16
+};
+enum {
+	SCRBS_NORMAL = 1,
+	SCRBS_HOT = 2,
+	SCRBS_PRESSED = 3,
+	SCRBS_DISABLED = 4
+};
+enum {
+	SZB_RIGHTALIGN = 1,
+	SZB_LEFTALIGN = 2
+};
+/* SPIN parts */
+enum {
+	SPNP_UP = 1,
+	SPNP_DOWN = 2,
+	SPNP_UPHORZ = 3,
+	SPNP_DOWNHORZ = 4
+};
+/* STARTPANEL parts */
+enum {
+	SPP_USERPANE = 1,
+	SPP_MOREPROGRAMS = 2,
+	SPP_MOREPROGRAMSARROW = 3,
+	SPP_PROGLIST = 4,
+	SPP_PROGLISTSEPARATOR = 5,
+	SPP_PLACESLIST = 6,
+	SPP_PLACESLISTSEPARATOR = 7,
+	SPP_LOGOFF = 8,
+	SPP_LOGOFFBUTTONS = 9,
+	SPP_USERPICTURE = 10,
+	SPP_PREVIEW = 11
+};
+enum {
+	SPLS_NORMAL = 1,
+	SPLS_HOT = 2,
+	SPLS_PRESSED = 3
+};
+enum {
+	SPS_NORMAL = 1,
+	SPS_HOT = 2,
+	SPS_PRESSED = 3
+};
+/* STATUS parts */
+enum {
+	SP_PANE = 1,
+	SP_GRIPPERPANE = 2,
+	SP_GRIPPER = 3
+};
+/* TAB parts */
+enum {
+	TABP_TABITEM = 1,
+	TABP_TABITEMLEFTEDGE = 2,
+	TABP_TABITEMRIGHTEDGE = 3,
+	TABP_TABITEMBOTHEDGE = 4,
+	TABP_TOPTABITEM = 5,
+	TABP_TOPTABITEMLEFTEDGE = 6,
+	TABP_TOPTABITEMRIGHTEDGE = 7,
+	TABP_TOPTABITEMBOTHEDGE = 8,
+	TABP_PANE = 9,
+	TABP_BODY = 10
+};
+enum {
+	TIS_NORMAL = 1,
+	TIS_HOT = 2,
+	TIS_SELECTED = 3,
+	TIS_DISABLED = 4,
+	TIS_FOCUSED = 5
+};
+enum {
+	TIBES_NORMAL = 1,
+	TIBES_HOT = 2,
+	TIBES_SELECTED = 3,
+	TIBES_DISABLED = 4,
+	TIBES_FOCUSED = 5
+};
+enum {
+	TILES_NORMAL = 1,
+	TILES_HOT = 2,
+	TILES_SELECTED = 3,
+	TILES_DISABLED = 4,
+	TILES_FOCUSED = 5
+};
+enum {
+	TIRES_NORMAL = 1,
+	TIRES_HOT = 2,
+	TIRES_SELECTED = 3,
+	TIRES_DISABLED = 4,
+	TIRES_FOCUSED = 5
+};
+enum {
+	TTIS_NORMAL = 1,
+	TTIS_HOT = 2,
+	TTIS_SELECTED = 3,
+	TTIS_DISABLED = 4,
+	TTIS_FOCUSED = 5
+};
+enum {
+	TTIBES_NORMAL = 1,
+	TTIBES_HOT = 2,
+	TTIBES_SELECTED = 3,
+	TTIBES_DISABLED = 4,
+	TTIBES_FOCUSED = 5
+};
+enum {
+	TTILES_NORMAL = 1,
+	TTILES_HOT = 2,
+	TTILES_SELECTED = 3,
+	TTILES_DISABLED = 4,
+	TTILES_FOCUSED = 5
+};
+enum {
+	TTIRES_NORMAL = 1,
+	TTIRES_HOT = 2,
+	TTIRES_SELECTED = 3,
+	TTIRES_DISABLED = 4,
+	TTIRES_FOCUSED = 5
+};
+/* TASKBAND parts */
+enum {
+	TDP_GROUPCOUNT = 1,
+	TDP_FLASHBUTTON = 2,
+	TDP_FLASHBUTTONGROUPMENU = 3
+};
+/* TASKBAR parts */
+enum {
+	TBP_BACKGROUNDBOTTOM = 1,
+	TBP_BACKGROUNDRIGHT = 2,
+	TBP_BACKGROUNDTOP = 3,
+	TBP_BACKGROUNDLEFT = 4,
+	TBP_SIZINGBARBOTTOM = 5,
+	TBP_SIZINGBARRIGHT = 6,
+	TBP_SIZINGBARTOP = 7,
+	TBP_SIZINGBARLEFT = 8
+};
+/* TOOLBAR parts */
+enum {
+	TP_BUTTON = 1,
+	TP_DROPDOWNBUTTON = 2,
+	TP_SPLITBUTTON = 3,
+	TP_SPLITBUTTONDROPDOWN = 4,
+	TP_SEPARATOR = 5,
+	TP_SEPARATORVERT = 6
+};
+enum {
+	TS_NORMAL = 1,
+	TS_HOT = 2,
+	TS_PRESSED = 3,
+	TS_DISABLED = 4,
+	TS_CHECKED = 5,
+	TS_HOTCHECKED = 6
+};
+/* TOOLTIP parts */
+enum {
+	TTP_STANDARD = 1,
+	TTP_STANDARDTITLE = 2,
+	TTP_BALLOON = 3,
+	TTP_BALLOONTITLE = 4,
+	TTP_CLOSE = 5
+};
+enum {
+	TTBS_NORMAL = 1,
+	TTBS_LINK = 2
+};
+enum {
+	TTCS_NORMAL = 1,
+	TTCS_HOT = 2,
+	TTCS_PRESSED = 3
+};
+enum {
+	TTSS_NORMAL = 1,
+	TTSS_LINK = 2
+};
+/* TRACKBAR parts */
+enum {
+	TKP_TRACK = 1,
+	TKP_TRACKVERT = 2,
+	TKP_THUMB = 3,
+	TKP_THUMBBOTTOM = 4,
+	TKP_THUMBTOP = 5,
+	TKP_THUMBVERT = 6,
+	TKP_THUMBLEFT = 7,
+	TKP_THUMBRIGHT = 8,
+	TKP_TICS = 9,
+	TKP_TICSVERT = 10
+};
+enum {
+	TUS_NORMAL = 1,
+	TUS_HOT = 2,
+	TUS_PRESSED = 3,
+	TUS_FOCUSED = 4,
+	TUS_DISABLED = 5
+};
+enum {
+	TUBS_NORMAL = 1,
+	TUBS_HOT = 2,
+	TUBS_PRESSED = 3,
+	TUBS_FOCUSED = 4,
+	TUBS_DISABLED = 5
+};
+enum {
+	TUVLS_NORMAL = 1,
+	TUVLS_HOT = 2,
+	TUVLS_PRESSED = 3,
+	TUVLS_FOCUSED = 4,
+	TUVLS_DISABLED = 5
+};
+enum {
+	TUVRS_NORMAL = 1,
+	TUVRS_HOT = 2,
+	TUVRS_PRESSED = 3,
+	TUVRS_FOCUSED = 4,
+	TUVRS_DISABLED = 5
+};
+enum {
+	TUTS_NORMAL = 1,
+	TUTS_HOT = 2,
+	TUTS_PRESSED = 3,
+	TUTS_FOCUSED = 4,
+	TUTS_DISABLED = 5
+};
+enum {
+	TUVS_NORMAL = 1,
+	TUVS_HOT = 2,
+	TUVS_PRESSED = 3,
+	TUVS_FOCUSED = 4,
+	TUVS_DISABLED = 5
+};
+enum {
+	TSS_NORMAL = 1
+};
+enum {
+	TSVS_NORMAL = 1
+};
+enum {
+	TRS_NORMAL = 1
+};
+enum {
+	TRVS_NORMAL = 1
+};
+/* TRAYNOTIFY parts */
+enum {
+	TNP_BACKGROUND = 1,
+	TNP_ANIMBACKGROUND = 2
+};
+/* TREEVIEW parts */
+enum {
+	TVP_TREEITEM = 1,
+	TVP_GLYPH = 2,
+	TVP_BRANCH = 3
+};
+enum {
+	GLPS_CLOSED = 1,
+	GLPS_OPENED = 2
+};
+enum {
+	TREIS_NORMAL = 1,
+	TREIS_HOT = 2,
+	TREIS_SELECTED = 3,
+	TREIS_DISABLED = 4,
+	TREIS_SELECTEDNOTFOCUS = 5
+};
+/* WINDOW parts */
+enum {
+	WP_CAPTION = 1,
+	WP_SMALLCAPTION = 2,
+	WP_MINCAPTION = 3,
+	WP_SMALLMINCAPTION = 4,
+	WP_MAXCAPTION = 5,
+	WP_SMALLMAXCAPTION = 6,
+	WP_FRAMELEFT = 7,
+	WP_FRAMERIGHT = 8,
+	WP_FRAMEBOTTOM = 9,
+	WP_SMALLFRAMELEFT = 10,
+	WP_SMALLFRAMERIGHT = 11,
+	WP_SMALLFRAMEBOTTOM = 12,
+	WP_SYSBUTTON = 13,
+	WP_MDISYSBUTTON = 14,
+	WP_MINBUTTON = 15,
+	WP_MDIMINBUTTON = 16,
+	WP_MAXBUTTON = 17,
+	WP_CLOSEBUTTON = 18,
+	WP_SMALLCLOSEBUTTON = 19,
+	WP_MDICLOSEBUTTON = 20,
+	WP_RESTOREBUTTON = 21,
+	WP_MDIRESTOREBUTTON = 22,
+	WP_HELPBUTTON = 23,
+	WP_MDIHELPBUTTON = 24,
+	WP_HORZSCROLL = 25,
+	WP_HORZTHUMB = 26,
+	WP_VERTSCROLL = 27,
+	WP_VERTTHUMB = 28,
+	WP_DIALOG = 29,
+	WP_CAPTIONSIZINGTEMPLATE = 30,
+	WP_SMALLCAPTIONSIZINGTEMPLATE = 31,
+	WP_FRAMELEFTSIZINGTEMPLATE = 32,
+	WP_SMALLFRAMELEFTSIZINGTEMPLATE = 33,
+	WP_FRAMERIGHTSIZINGTEMPLATE = 34,
+	WP_SMALLFRAMERIGHTSIZINGTEMPLATE = 35,
+	WP_FRAMEBOTTOMSIZINGTEMPLATE = 36,
+	WP_SMALLFRAMEBOTTOMSIZINGTEMPLATE = 37
+};
+enum {
+	CS_ACTIVE = 1,
+	CS_INACTIVE = 2,
+	CS_DISABLED = 3
+};
+enum {
+	CBS_NORMAL = 1,
+	CBS_HOT = 2,
+	CBS_PUSHED = 3,
+	CBS_DISABLED = 4
+};
+enum {
+	FS_ACTIVE = 1,
+	FS_INACTIVE = 2
+};
+enum {
+	HBS_NORMAL = 1,
+	HBS_HOT = 2,
+	HBS_PUSHED = 3,
+	HBS_DISABLED = 4
+};
+enum {
+	HSS_NORMAL = 1,
+	HSS_HOT = 2,
+	HSS_PUSHED = 3,
+	HSS_DISABLED = 4
+};
+enum {
+	HTS_NORMAL = 1,
+	HTS_HOT = 2,
+	HTS_PUSHED = 3,
+	HTS_DISABLED = 4
+};
+enum {
+	MAXBS_NORMAL = 1,
+	MAXBS_HOT = 2,
+	MAXBS_PUSHED = 3,
+	MAXBS_DISABLED = 4
+};
+enum {
+	MXCS_ACTIVE = 1,
+	MXCS_INACTIVE = 2,
+	MXCS_DISABLED = 3
+};
+enum {
+	MINBS_NORMAL = 1,
+	MINBS_HOT = 2,
+	MINBS_PUSHED = 3,
+	MINBS_DISABLED = 4
+};
+enum {
+	RBS_NORMAL = 1,
+	RBS_HOT = 2,
+	RBS_PUSHED = 3,
+	RBS_DISABLED = 4
+};
+enum {
+	SBS_NORMAL = 1,
+	SBS_HOT = 2,
+	SBS_PUSHED = 3,
+	SBS_DISABLED = 4
+};
+enum {
+	MNCS_ACTIVE = 1,
+	MNCS_INACTIVE = 2,
+	MNCS_DISABLED = 3
+};
+enum {
+	VSS_NORMAL = 1,
+	VSS_HOT = 2,
+	VSS_PUSHED = 3,
+	VSS_DISABLED = 4
+};
+enum {
+	VTS_NORMAL = 1,
+	VTS_HOT = 2,
+	VTS_PUSHED = 3,
+	VTS_DISABLED = 4
+};
+
+#endif
Index: Daodan/MinGW/include/unistd.h
===================================================================
--- Daodan/MinGW/include/unistd.h	(revision 1046)
+++ Daodan/MinGW/include/unistd.h	(revision 1046)
@@ -0,0 +1,137 @@
+/*
+ * unistd.h
+ *
+ * Standard header file declaring MinGW's POSIX compatibility features.
+ *
+ * $Id: unistd.h,v c3ebd36f8211 2016/02/16 16:05:39 keithmarshall $
+ *
+ * Written by Rob Savoye <rob@cygnus.com>
+ * Modified by Earnie Boyd <earnie@users.sourceforge.net>
+ *   Danny Smith <dannysmith@users.sourceforge.net>
+ *   Ramiro Polla <ramiro@lisha.ufsc.br>
+ *   Gregory McGarry  <gregorymcgarry@users.sourceforge.net>
+ *   Keith Marshall  <keithmarshall@users.sourceforge.net>
+ * Copyright (C) 1997, 1999, 2002-2004, 2007-2009, 2014-2016,
+ *   MinGW.org Project.
+ *
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice, this permission notice, and the following
+ * disclaimer shall be included in all copies or substantial portions of
+ * the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OF OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ *
+ */
+#ifndef _UNISTD_H
+#define _UNISTD_H  1
+#pragma GCC system_header
+
+/* All MinGW headers MUST include _mingw.h before anything else,
+ * to ensure proper initialization of feature test macros.
+ */
+#include <_mingw.h>
+
+/* unistd.h maps (roughly) to Microsoft's <io.h>
+ * Other headers included by <unistd.h> may be selectively processed;
+ * __UNISTD_H_SOURCED__ enables such selective processing.
+ */
+#define __UNISTD_H_SOURCED__ 1
+
+#include <io.h>
+#include <process.h>
+#include <getopt.h>
+
+/* These are defined in stdio.h.  POSIX also requires that they
+ * are to be consistently defined here; don't guard against prior
+ * definitions, as this might conceal inconsistencies.
+ */
+#define SEEK_SET   0
+#define SEEK_CUR   1
+#define SEEK_END   2
+
+#if _POSIX_C_SOURCE
+/* POSIX process/thread suspension functions; all are supported by a
+ * common MinGW API in libmingwex.a, providing for suspension periods
+ * ranging from mean values of ~7.5 milliseconds, (see the comments in
+ * <time.h>), extending up to a maximum of ~136 years.
+ *
+ * Note that, whereas POSIX supports early wake-up of any suspended
+ * process/thread, in response to a signal, this implementation makes
+ * no attempt to emulate this signalling behaviour, (since signals are
+ * not well supported by Windows); thus, unless impeded by an invalid
+ * argument, this implementation always returns an indication as if
+ * the sleeping period ran to completion.
+ */
+_BEGIN_C_DECLS
+
+__cdecl __MINGW_NOTHROW
+int __mingw_sleep( unsigned long, unsigned long );
+
+/* The nanosleep() function provides the most general purpose API for
+ * process/thread suspension; it is declared in <time.h>, (where it is
+ * accompanied by an in-line implementation), rather than here, and it
+ * provides for specification of suspension periods in the range from
+ * ~7.5 ms mean, (on WinNT derivatives; ~27.5 ms on Win9x), extending
+ * up to ~136 years, (effectively eternity).
+ *
+ * The usleep() function, and its associated useconds_t type specifier
+ * were made obsolete in POSIX.1-2008; declared here, only for backward
+ * compatibility, its continued use is not recommended.  (It is limited
+ * to specification of suspension periods ranging from ~7.5 ms mean up
+ * to a maximum of 999,999 microseconds only).
+ */
+typedef unsigned long useconds_t __MINGW_ATTRIB_DEPRECATED;
+int __cdecl __MINGW_NOTHROW usleep( useconds_t )__MINGW_ATTRIB_DEPRECATED;
+
+#ifndef __NO_INLINE__
+__CRT_INLINE __LIBIMPL__(( FUNCTION = usleep ))
+int usleep( useconds_t period ){ return __mingw_sleep( 0, 1000 * period ); }
+#endif
+
+/* The sleep() function is, perhaps, the most commonly used of all the
+ * process/thread suspension APIs; it provides support for specification
+ * of suspension periods ranging from 1 second to ~136 years.  (However,
+ * POSIX recommends limiting the maximum period to 65535 seconds, to
+ * maintain portability to platforms with only 16-bit ints).
+ */
+unsigned __cdecl __MINGW_NOTHROW sleep( unsigned );
+
+#ifndef __NO_INLINE__
+__CRT_INLINE __LIBIMPL__(( FUNCTION = sleep ))
+unsigned sleep( unsigned period ){ return __mingw_sleep( period, 0 ); }
+#endif
+
+
+/* POSIX ftruncate() function.
+ *
+ * Microsoft's _chsize() function is incorrectly described, on MSDN,
+ * as a preferred replacement for the POSIX chsize() function.  There
+ * never was any such POSIX function; the actual POSIX equivalent is
+ * the ftruncate() function.
+ */
+int __cdecl ftruncate( int, off_t );
+
+#ifndef __NO_INLINE__
+__CRT_INLINE __JMPSTUB__(( FUNCTION = ftruncate, REMAPPED = _chsize ))
+int ftruncate( int __fd, off_t __length ){ return _chsize( __fd, __length ); }
+#endif
+
+_END_C_DECLS
+
+#endif /* _POSIX_C_SOURCE */
+
+#undef __UNISTD_H_SOURCED__
+#endif /* ! _UNISTD_H: $RCSfile: unistd.h,v $: end of file */
Index: Daodan/MinGW/include/unknwn.h
===================================================================
--- Daodan/MinGW/include/unknwn.h	(revision 1046)
+++ Daodan/MinGW/include/unknwn.h	(revision 1046)
@@ -0,0 +1,76 @@
+#ifndef COM_NO_WINDOWS_H
+#include <windows.h>
+#endif
+
+#ifndef _UNKNWN_H
+#define _UNKNWN_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C"{
+#endif
+#include <objfwd.h>
+#include <wtypes.h>
+
+void * __RPC_USER MIDL_user_allocate(size_t);
+void __RPC_USER MIDL_user_free(void*);
+EXTERN_C const IID IID_IUnknown;
+EXTERN_C const IID IID_IClassFactory;
+#ifndef __IUnknown_INTERFACE_DEFINED__
+#define __IUnknown_INTERFACE_DEFINED__
+#define INTERFACE IUnknown
+DECLARE_INTERFACE(IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+};
+#undef INTERFACE
+typedef IUnknown *LPUNKNOWN;
+#endif
+#ifndef __IClassFactory_INTERFACE_DEFINED__
+#define __IClassFactory_INTERFACE_DEFINED__
+#define INTERFACE IClassFactory
+DECLARE_INTERFACE_(IClassFactory,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(CreateInstance)(THIS_ LPUNKNOWN,REFIID,PVOID*) PURE;
+	STDMETHOD(LockServer)(THIS_ BOOL) PURE;
+};
+#undef INTERFACE
+typedef IClassFactory *LPCLASSFACTORY;
+#endif
+HRESULT STDMETHODCALLTYPE IUnknown_QueryInterface_Proxy(IUnknown*,REFIID,void**);
+void __RPC_STUB IUnknown_QueryInterface_Stub(LPRPCSTUBBUFFER,LPRPCCHANNELBUFFER,PRPC_MESSAGE,PDWORD);
+ULONG STDMETHODCALLTYPE IUnknown_AddRef_Proxy(IUnknown*);
+void __RPC_STUB IUnknown_AddRef_Stub(LPRPCSTUBBUFFER,LPRPCCHANNELBUFFER,PRPC_MESSAGE,PDWORD);
+ULONG STDMETHODCALLTYPE IUnknown_Release_Proxy(IUnknown*);
+void __RPC_STUB IUnknown_Release_Stub(LPRPCSTUBBUFFER,LPRPCCHANNELBUFFER,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IClassFactory_RemoteCreateInstance_Proxy(IClassFactory*,REFIID,IUnknown**);
+void __RPC_STUB IClassFactory_RemoteCreateInstance_Stub(LPRPCSTUBBUFFER,LPRPCCHANNELBUFFER,PRPC_MESSAGE,PDWORD);
+HRESULT __stdcall IClassFactory_RemoteLockServer_Proxy(IClassFactory*,BOOL);
+void __RPC_STUB IClassFactory_RemoteLockServer_Stub(LPRPCSTUBBUFFER,LPRPCCHANNELBUFFER,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IClassFactory_CreateInstance_Proxy(IClassFactory*,IUnknown*,REFIID,void**);
+HRESULT STDMETHODCALLTYPE IClassFactory_CreateInstance_Stub(IClassFactory*,REFIID,IUnknown**);
+HRESULT STDMETHODCALLTYPE IClassFactory_LockServer_Proxy(IClassFactory*,BOOL);
+HRESULT STDMETHODCALLTYPE IClassFactory_LockServer_Stub(IClassFactory*,BOOL);
+
+#if (!defined (__cplusplus) || defined (CINTERFACE)) \
+    && defined (COBJMACROS)
+#define IUnknown_QueryInterface(T,r,O) (T)->lpVtbl->QueryInterface(T,r,O)
+#define IUnknown_AddRef(T) (T)->lpVtbl->AddRef(T)
+#define IUnknown_Release(T) (T)->lpVtbl->Release(T)
+#define IClassFactory_QueryInterface(T,r,O) (T)->lpVtbl->QueryInterface(T,r,O)
+#define IClassFactory_AddRef(T) (T)->lpVtbl->AddRef(T)
+#define IClassFactory_Release(T) (T)->lpVtbl->Release(T)
+#define IClassFactory_CreateInstance(T,p,r,O) (T)->lpVtbl->CreateInstance(T,p,r,O)
+#define IClassFactory_LockServer(T,f) (T)->lpVtbl->LockServer(T,f)
+#endif /* COBJMACROS */
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/userenv.h
===================================================================
--- Daodan/MinGW/include/userenv.h	(revision 1046)
+++ Daodan/MinGW/include/userenv.h	(revision 1046)
@@ -0,0 +1,88 @@
+#ifndef _USERENV_H
+#define _USERENV_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define PI_NOUI 	(1)
+#define PI_APPLYPOLICY	(2)
+#if (_WIN32_WINNT >= 0x0500)
+#define PT_TEMPORARY	(1)
+#define PT_ROAMING	(2)
+#define PT_MANDATORY	(4)
+#endif
+typedef struct _PROFILEINFOA {
+  DWORD dwSize;
+  DWORD dwFlags;
+  LPSTR lpUserName;
+  LPSTR lpProfilePath;
+  LPSTR lpDefaultPath;
+  LPSTR lpServerName;
+  LPSTR lpPolicyPath;
+  HANDLE hProfile;
+} PROFILEINFOA, *LPPROFILEINFOA;
+typedef struct _PROFILEINFOW {
+  DWORD dwSize;
+  DWORD dwFlags;
+  LPWSTR lpUserName;
+  LPWSTR lpProfilePath;
+  LPWSTR lpDefaultPath;
+  LPWSTR lpServerName;
+  LPWSTR lpPolicyPath;
+  HANDLE hProfile;
+} PROFILEINFOW, *LPPROFILEINFOW;
+BOOL WINAPI LoadUserProfileA(HANDLE,LPPROFILEINFOA);
+BOOL WINAPI LoadUserProfileW(HANDLE,LPPROFILEINFOW);
+BOOL WINAPI UnloadUserProfile(HANDLE,HANDLE);
+BOOL WINAPI GetProfilesDirectoryA(LPSTR,LPDWORD);
+BOOL WINAPI GetProfilesDirectoryW(LPWSTR,LPDWORD);
+BOOL WINAPI GetUserProfileDirectoryA(HANDLE,LPSTR,LPDWORD);
+BOOL WINAPI GetUserProfileDirectoryW(HANDLE,LPWSTR,LPDWORD);
+BOOL WINAPI CreateEnvironmentBlock(LPVOID*,HANDLE,BOOL);
+BOOL WINAPI DestroyEnvironmentBlock(LPVOID);
+#if (_WIN32_WINNT >= 0x0500)
+BOOL WINAPI DeleteProfileA(LPCSTR,LPCSTR,LPCSTR);
+BOOL WINAPI DeleteProfileW(LPCWSTR,LPCWSTR,LPCWSTR);
+BOOL WINAPI GetProfileType(DWORD *);
+BOOL WINAPI GetAllUsersProfileDirectoryA(LPSTR,LPDWORD);
+BOOL WINAPI GetAllUsersProfileDirectoryW(LPWSTR,LPDWORD);
+BOOL WINAPI GetDefaultUserProfileDirectoryA(LPSTR,LPDWORD);
+BOOL WINAPI GetDefaultUserProfileDirectoryW(LPWSTR,LPDWORD);
+BOOL WINAPI ExpandEnvironmentStringsForUserA(HANDLE,LPCSTR,LPSTR,DWORD);
+BOOL WINAPI ExpandEnvironmentStringsForUserW(HANDLE,LPCWSTR,LPWSTR,DWORD);
+#endif
+#if (_WIN32_WINNT >= 0x0600)
+HRESULT WINAPI CreateProfile(LPCWSTR,LPCWSTR,LPWSTR,DWORD);
+#endif
+#ifdef UNICODE
+typedef PROFILEINFOW PROFILEINFO;
+typedef LPPROFILEINFOW LPPROFILEINFO;
+#define LoadUserProfile  LoadUserProfileW
+#define GetProfilesDirectory  GetProfilesDirectoryW
+#define GetUserProfileDirectory  GetUserProfileDirectoryW
+#if (_WIN32_WINNT >= 0x0500)
+#define DeleteProfile  DeleteProfileW
+#define GetAllUsersProfileDirectory  GetAllUsersProfileDirectoryW
+#define GetDefaultUserProfileDirectory  GetDefaultUserProfileDirectoryW
+#define ExpandEnvironmentStringsForUser  ExpandEnvironmentStringsForUserW
+#endif
+#else
+typedef PROFILEINFOA PROFILEINFO;
+typedef LPPROFILEINFOA LPPROFILEINFO;
+#define LoadUserProfile  LoadUserProfileA
+#define GetProfilesDirectory  GetProfilesDirectoryA
+#define GetUserProfileDirectory  GetUserProfileDirectoryA
+#if (_WIN32_WINNT >= 0x0500)
+#define DeleteProfile  DeleteProfileA
+#define GetAllUsersProfileDirectory  GetAllUsersProfileDirectoryA
+#define GetDefaultUserProfileDirectory  GetDefaultUserProfileDirectoryA
+#define ExpandEnvironmentStringsForUser  ExpandEnvironmentStringsForUserA
+#endif
+#endif
+#ifdef __cplusplus
+}
+#endif
+#endif /* _USERENV_H */
Index: Daodan/MinGW/include/usp10.h
===================================================================
--- Daodan/MinGW/include/usp10.h	(revision 1046)
+++ Daodan/MinGW/include/usp10.h	(revision 1046)
@@ -0,0 +1,229 @@
+#ifndef _USP10_H
+#define _USP10_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#include <windows.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#pragma pack(push,1)
+
+#define SCRIPT_UNDEFINED 0
+#define USP_E_SCRIPT_NOT_IN_FONT  MAKE_HRESULT(SEVERITY_ERROR,FACILITY_ITF,0x200)
+#define	SGCM_RTL	0x00000001
+#define	SSA_PASSWORD	0x00000001
+#define	SSA_TAB 	0x00000002
+#define	SSA_CLIP	0x00000004
+#define	SSA_FIT 	0x00000008
+#define	SSA_DZWG	0x00000010
+#define	SSA_FALLBACK	0x00000020
+#define	SSA_BREAK	0x00000040
+#define	SSA_GLYPHS      0x00000080
+#define	SSA_RTL         0x00000100
+#define	SSA_GCP 	0x00000200
+#define	SSA_HOTKEY	0x00000400
+#define	SSA_METAFILE	0x00000800
+#define	SSA_LINK	0x00001000
+#define	SSA_HIDEHOTKEY	0x00002000
+#define	SSA_HOTKEYONLY	0x00002400
+#define	SSA_FULLMEASURE	0x04000000
+#define	SSA_LPKANSIFALLBACK 0x08000000
+#define	SSA_PIDX	0x10000000
+#define	SSA_LAYOUTRTL	0x20000000
+#define	SSA_DONTGLYPH	0x40000000
+#define	SSA_NOKASHIDA	0x80000000
+#define SIC_COMPLEX     1
+#define	SIC_ASCIIDIGIT	2
+#define	SIC_NEUTRAL     4
+#define	SCRIPT_DIGITSUBSTITUTE_CONTEXT	0
+#define	SCRIPT_DIGITSUBSTITUTE_NONE	1
+#define	SCRIPT_DIGITSUBSTITUTE_NATIONAL	2
+#define	SCRIPT_DIGITSUBSTITUTE_TRADITIONAL 3
+
+typedef enum tag_SCRIPT_JUSTIFY {
+  SCRIPT_JUSTIFY_NONE = 0,
+  SCRIPT_JUSTIFY_ARABIC_BLANK = 1,
+  SCRIPT_JUSTIFY_CHARACTER = 2,
+  SCRIPT_JUSTIFY_RESERVED1 = 3,
+  SCRIPT_JUSTIFY_BLANK = 4,
+  SCRIPT_JUSTIFY_RESERVED2 = 5,
+  SCRIPT_JUSTIFY_RESERVED3 = 6,
+  SCRIPT_JUSTIFY_ARABIC_NORMAL = 7,
+  SCRIPT_JUSTIFY_ARABIC_KASHIDA = 8,
+  SCRIPT_JUSTIFY_ARABIC_ALEF = 9,
+  SCRIPT_JUSTIFY_ARABIC_HA = 10,
+  SCRIPT_JUSTIFY_ARABIC_RA = 11,
+  SCRIPT_JUSTIFY_ARABIC_BA = 12,
+  SCRIPT_JUSTIFY_ARABIC_BARA = 13,
+  SCRIPT_JUSTIFY_ARABIC_SEEN = 14,
+  SCRIPT_JUSTIFY_ARABIC_SEEN_M = 15
+} SCRIPT_JUSTIFY;
+
+typedef struct tagGOFFSET {
+  LONG  du;
+  LONG  dv;
+} GOFFSET;
+typedef ULONG OPENTYPE_TAG;
+typedef struct opentype_feature_record{
+  OPENTYPE_TAG    tagFeature;
+  LONG            lParameter;
+} OPENTYPE_FEATURE_RECORD;
+typedef struct tag_SCRIPT_STATE {
+  WORD uBidiLevel :5;
+  WORD fOverrideDirection :1;
+  WORD fInhibitSymSwap :1;
+  WORD fCharShape :1;
+  WORD fDigitSubstitute :1;
+  WORD fInhibitLigate :1;
+  WORD fDisplayZWG :1;
+  WORD fArabicNumContext :1;
+  WORD fGcpClusters :1;
+  WORD fReserved :1;
+  WORD fEngineReserved :2;
+} SCRIPT_STATE;
+typedef struct tag_SCRIPT_ANALYSIS {
+  WORD eScript       :10;
+  WORD fRTL          :1;
+  WORD fLayoutRTL    :1;
+  WORD fLinkBefore   :1;
+  WORD fLinkAfter    :1;
+  WORD fLogicalOrder :1;
+  WORD fNoGlyphIndex :1;
+  SCRIPT_STATE s ;
+} SCRIPT_ANALYSIS;
+typedef void *SCRIPT_CACHE;
+typedef struct script_charprop {
+    WORD           fCanGlyphAlone : 1;
+    WORD           reserved       : 15;
+} SCRIPT_CHARPROP;
+typedef struct tag_SCRIPT_CONTROL {
+  DWORD uDefaultLanguage :16;
+  DWORD fContextDigits :1;
+  DWORD fInvertPreBoundDir :1;
+  DWORD fInvertPostBoundDir :1;
+  DWORD fLinkStringBefore :1;
+  DWORD fLinkStringAfter :1;
+  DWORD fNeutralOverride :1;
+  DWORD fNumericOverride :1;
+  DWORD fLegacyBidiClass :1;
+  DWORD fReserved :8;
+} SCRIPT_CONTROL;
+typedef struct tag_SCRIPT_DIGITSUBSTITUTE {
+  DWORD NationalDigitLanguage    : 16;
+  DWORD TraditionalDigitLanguage : 16;
+  DWORD DigitSubstitute          :8;
+  DWORD dwReserved;
+} SCRIPT_DIGITSUBSTITUTE;
+typedef struct {
+  int   cBytes;
+  WORD  wgBlank;
+  WORD  wgDefault;
+  WORD  wgInvalid;
+  WORD  wgKashida;
+  int   iKashidaWidth;
+} SCRIPT_FONTPROPERTIES;
+typedef struct tag_SCRIPT_VISATTR {
+  WORD uJustification :4;
+  WORD fClusterStart :1;
+  WORD fDiacritic :1;
+  WORD fZeroWidth :1;
+  WORD fReserved :1;
+  WORD fShapeReserved :8;
+} SCRIPT_VISATTR;
+typedef struct script_glyphprop {
+    SCRIPT_VISATTR sva;
+    WORD reserved;
+} SCRIPT_GLYPHPROP;
+typedef struct tag_SCRIPT_ITEM {
+  int iCharPos;
+  SCRIPT_ANALYSIS a;
+} SCRIPT_ITEM;
+typedef struct tag_SCRIPT_LOGATTR {
+  BYTE fSoftBreak :1;
+  BYTE fWhiteSpace :1;
+  BYTE fCharStop :1;
+  BYTE fWordStop :1;
+  BYTE fInvalid :1;
+  BYTE fReserved :3;
+} SCRIPT_LOGATTR;
+typedef struct {
+  DWORD   langid              :16;
+  DWORD   fNumeric            :1;
+  DWORD   fComplex            :1;
+  DWORD   fNeedsWordBreaking  :1;
+  DWORD   fNeedsCaretInfo     :1;
+  DWORD   bCharSet            :8;
+  DWORD   fControl            :1;
+  DWORD   fPrivateUseArea     :1;
+  DWORD   fNeedsCharacterJustify :1;
+  DWORD   fInvalidGlyph       :1;
+  DWORD   fInvalidLogAttr     :1;
+  DWORD   fCDM                :1;
+  DWORD   fAmbiguousCharSet   :1;
+  DWORD   fClusterSizeVaries  :1;
+  DWORD   fRejectInvalid      :1;
+} SCRIPT_PROPERTIES;
+typedef void *SCRIPT_STRING_ANALYSIS;
+typedef struct tag_SCRIPT_TABDEF {
+  int cTabStops;
+  int iScale;
+  int *pTabStops;
+  int iTabOrigin;
+} SCRIPT_TABDEF;
+typedef struct textrange_properties{
+    OPENTYPE_FEATURE_RECORD*  potfRecords;
+    int                       cotfRecords;
+} TEXTRANGE_PROPERTIES;
+
+
+HRESULT WINAPI ScriptApplyDigitSubstitution(const SCRIPT_DIGITSUBSTITUTE*,SCRIPT_CONTROL*,SCRIPT_STATE*);
+HRESULT WINAPI ScriptApplyLogicalWidth(const int *,int,int,const WORD *,const SCRIPT_VISATTR *,const int *,const SCRIPT_ANALYSIS *,ABC *,int *);
+HRESULT WINAPI ScriptBreak(const WCHAR *,int,const SCRIPT_ANALYSIS *,SCRIPT_LOGATTR *);
+HRESULT WINAPI ScriptCacheGetHeight(HDC,SCRIPT_CACHE *,long *);
+HRESULT WINAPI ScriptCPtoX(int,BOOL,int,int,const WORD *,const SCRIPT_VISATTR *,const int *,const SCRIPT_ANALYSIS *,int *);
+HRESULT WINAPI ScriptFreeCache(SCRIPT_CACHE *);
+HRESULT WINAPI ScriptGetCMap(HDC,SCRIPT_CACHE *,const WCHAR*,int,DWORD,WORD *);
+HRESULT WINAPI ScriptGetFontAlternateGlyphs(HDC,SCRIPT_CACHE*,SCRIPT_ANALYSIS*,OPENTYPE_TAG,OPENTYPE_TAG,OPENTYPE_TAG,WORD,int,WORD*,int*);
+HRESULT WINAPI ScriptGetFontFeatureTags(HDC,SCRIPT_CACHE*,SCRIPT_ANALYSIS*,OPENTYPE_TAG,OPENTYPE_TAG,int,OPENTYPE_TAG*,int*);
+HRESULT WINAPI ScriptGetFontLanguageTags(HDC,SCRIPT_CACHE*,SCRIPT_ANALYSIS*,OPENTYPE_TAG,int,OPENTYPE_TAG*,int*);
+HRESULT WINAPI ScriptGetFontProperties(HDC,SCRIPT_CACHE *,SCRIPT_FONTPROPERTIES *);
+HRESULT WINAPI ScriptGetFontScriptTags(HDC,SCRIPT_CACHE*,SCRIPT_ANALYSIS*,int,OPENTYPE_TAG*,int*);
+HRESULT WINAPI ScriptGetGlyphABCWidth(HDC,SCRIPT_CACHE *,WORD,ABC *);
+HRESULT WINAPI ScriptGetLogicalWidths(const SCRIPT_ANALYSIS *,int,int,const int *,const WORD *,const SCRIPT_VISATTR *,int *);
+HRESULT WINAPI ScriptGetProperties(const SCRIPT_PROPERTIES ***,int *);
+HRESULT WINAPI ScriptIsComplex(const WCHAR *,int,DWORD);
+HRESULT WINAPI ScriptItemize(const WCHAR *,int,int,const SCRIPT_CONTROL *,const SCRIPT_STATE *,SCRIPT_ITEM *,int *);
+HRESULT WINAPI ScriptItemizeOpenType(const WCHAR*,int,int,const SCRIPT_CONTROL*,const SCRIPT_STATE*,SCRIPT_ITEM*,OPENTYPE_TAG*,int*);
+HRESULT WINAPI ScriptJustify(const SCRIPT_VISATTR *,const int *,int,int,int,int *);
+HRESULT WINAPI ScriptLayout(int,const BYTE *,int *,int *);
+HRESULT WINAPI ScriptPlace(HDC,SCRIPT_CACHE *,const WORD *,int,const SCRIPT_VISATTR *,SCRIPT_ANALYSIS *,int *,GOFFSET *,ABC *);
+HRESULT WINAPI ScriptPlaceOpenType(HDC,SCRIPT_CACHE*,SCRIPT_ANALYSIS*,OPENTYPE_TAG,OPENTYPE_TAG,int*,TEXTRANGE_PROPERTIES**,int,const WCHAR*,const WORD*,const SCRIPT_CHARPROP*,int,const WORD*,const SCRIPT_GLYPHPROP*,int,int*,GOFFSET*,ABC*);
+HRESULT WINAPI ScriptPositionSingleGlyph(HDC,SCRIPT_CACHE*,SCRIPT_ANALYSIS*,OPENTYPE_TAG,OPENTYPE_TAG,OPENTYPE_TAG,LONG,WORD,int,GOFFSET,int*,GOFFSET*);
+HRESULT WINAPI ScriptRecordDigitSubstitution(LCID,SCRIPT_DIGITSUBSTITUTE *);
+HRESULT WINAPI ScriptShape(HDC,SCRIPT_CACHE *,const WCHAR *,int,int,SCRIPT_ANALYSIS *,WORD *,WORD *,SCRIPT_VISATTR *,int *);
+HRESULT WINAPI ScriptShapeOpenType(HDC,SCRIPT_CACHE*,SCRIPT_ANALYSIS*,OPENTYPE_TAG,OPENTYPE_TAG,int*,TEXTRANGE_PROPERTIES**,int,const WCHAR*,int,int,WORD*,SCRIPT_CHARPROP*,WORD*,SCRIPT_GLYPHPROP*,int*);
+HRESULT WINAPI ScriptStringAnalyse(HDC,const void *,int,int,int,DWORD,int,SCRIPT_CONTROL *,SCRIPT_STATE *,const int *,SCRIPT_TABDEF *,const BYTE *,SCRIPT_STRING_ANALYSIS *);
+HRESULT WINAPI ScriptStringCPtoX(SCRIPT_STRING_ANALYSIS,int,BOOL,int *);
+HRESULT WINAPI ScriptStringFree(SCRIPT_STRING_ANALYSIS *);
+HRESULT WINAPI ScriptStringGetLogicalWidths(SCRIPT_STRING_ANALYSIS,int *);
+HRESULT WINAPI ScriptStringGetOrder(SCRIPT_STRING_ANALYSIS,UINT *);
+HRESULT WINAPI ScriptStringOut(SCRIPT_STRING_ANALYSIS,int,int,UINT,const RECT *,int,int,BOOL);
+const int*WINAPI ScriptString_pcOutChars(SCRIPT_STRING_ANALYSIS);
+const SCRIPT_LOGATTR* WINAPI ScriptString_pLogAttr(SCRIPT_STRING_ANALYSIS);
+const SIZE* WINAPI ScriptString_pSize(SCRIPT_STRING_ANALYSIS);
+HRESULT WINAPI ScriptStringValidate(SCRIPT_STRING_ANALYSIS);
+HRESULT WINAPI ScriptStringXtoCP(SCRIPT_STRING_ANALYSIS,int,int *,int *);
+HRESULT WINAPI ScriptSubstituteSingleGlyph(HDC,SCRIPT_CACHE*,SCRIPT_ANALYSIS*,OPENTYPE_TAG,OPENTYPE_TAG,OPENTYPE_TAG,LONG,WORD,WORD*);
+HRESULT WINAPI ScriptTextOut(const HDC,SCRIPT_CACHE *,int,int,UINT,const RECT *,const SCRIPT_ANALYSIS *,const WCHAR *,int,const WORD *,int,const int *,const int *,const GOFFSET *);
+HRESULT WINAPI ScriptXtoCP(int,int,int,const WORD *,const SCRIPT_VISATTR *,const int *,const SCRIPT_ANALYSIS *,int *,int *);
+
+
+#pragma pack(pop)
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* ndef _USP10_H_ */
Index: Daodan/MinGW/include/utime.h
===================================================================
--- Daodan/MinGW/include/utime.h	(revision 1046)
+++ Daodan/MinGW/include/utime.h	(revision 1046)
@@ -0,0 +1,1 @@
+#include <sys/utime.h>
Index: Daodan/MinGW/include/uxtheme.h
===================================================================
--- Daodan/MinGW/include/uxtheme.h	(revision 1046)
+++ Daodan/MinGW/include/uxtheme.h	(revision 1046)
@@ -0,0 +1,273 @@
+#ifndef _UXTHEME_H
+#define _UXTHEME_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#include <commctrl.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#if (_WIN32_WINNT >= 0x0501)
+#define DTBG_CLIPRECT 0x00000001
+#define DTBG_DRAWSOLID 0x00000002
+#define DTBG_OMITBORDER 0x00000004
+#define DTBG_OMITCONTENT 0x00000008
+#define DTBG_COMPUTINGREGION 0x00000010
+#define DTBG_MIRRORDC 0x00000020
+#define DTT_GRAYED 0x00000001
+#define ETDT_DISABLE 0x00000001
+#define ETDT_ENABLE 0x00000002
+#define ETDT_USETABTEXTURE 0x00000004
+#define ETDT_ENABLETAB (ETDT_ENABLE|ETDT_USETABTEXTURE)
+#define STAP_ALLOW_NONCLIENT 0x00000001
+#define STAP_ALLOW_CONTROLS 0x00000002
+#define STAP_ALLOW_WEBCONTENT 0x00000004
+#define HTTB_BACKGROUNDSEG 0x0000
+#define HTTB_FIXEDBORDER 0x0002
+#define HTTB_CAPTION 0x0004
+#define HTTB_RESIZINGBORDER_LEFT 0x0010
+#define HTTB_RESIZINGBORDER_TOP 0x0020
+#define HTTB_RESIZINGBORDER_RIGHT 0x0040
+#define HTTB_RESIZINGBORDER_BOTTOM 0x0080
+#define HTTB_RESIZINGBORDER (HTTB_RESIZINGBORDER_LEFT|HTTB_RESIZINGBORDER_TOP|HTTB_RESIZINGBORDER_RIGHT|HTTB_RESIZINGBORDER_BOTTOM)
+#define HTTB_SIZINGTEMPLATE 0x0100
+#define HTTB_SYSTEMSIZINGMARGINS 0x0200
+#define TMT_DISPLAYNAME 0x0259
+#define TMT_TOOLTIP 0x025A
+#define TMT_COMPANY 0x025B
+#define TMT_AUTHOR 0x025C
+#define TMT_COPYRIGHT 0x025D
+#define TMT_URL 0x025E
+#define TMT_VERSION 0x025F
+#define TMT_DESCRIPTION 0x0260
+#define TMT_CAPTIONFONT 0x0321
+#define TMT_SMALLCAPTIONFONT 0x0322
+#define TMT_MENUFONT 0x0323
+#define TMT_STATUSFONT 0x0324
+#define TMT_MSGBOXFONT 0x0325
+#define TMT_ICONTITLEFONT 0x0326
+#define TMT_FLATMENUS 0x03E9
+#define TMT_MINCOLORDEPTH 0x0515
+#define TMT_CSSNAME 0x0579
+#define TMT_XMLNAME 0x057A
+#define TMT_SCROLLBAR 0x0641
+#define TMT_BACKGROUND 0x0642
+#define TMT_ACTIVECAPTION 0x0643
+#define TMT_INACTIVECAPTION 0x0644
+#define TMT_WINDOW 0x0646
+#define TMT_WINDOWFRAME 0x0647
+#define TMT_MENUTEXT 0x0648
+#define TMT_WINDOWTEXT 0x0649
+#define TMT_CAPTIONTEXT 0x064A
+#define TMT_ACTIVEBORDER 0x064B
+#define TMT_INACTIVEBORDER 0x064C
+#define TMT_APPWORKSPACE 0x064D
+#define TMT_HIGHLIGHT 0x064E
+#define TMT_HIGHLIGHTTEXT 0x064F
+#define TMT_BTNFACE 0x0650
+#define TMT_BTNSHADOW 0x0651
+#define TMT_GRAYTEXT 0x0652
+#define TMT_BTNTEXT 0x0653
+#define TMT_INACTIVECAPTIONTEXT 0x0654
+#define TMT_BTNHIGHLIGHT 0x0655
+#define TMT_DKSHADOW3D 0x0656
+#define TMT_LIGHT3D 0x0657
+#define TMT_INFOTEXT 0x0658
+#define TMT_INFOBK 0x0659
+#define TMT_BUTTONALTERNATEFACE 0x065A
+#define TMT_HOTTRACKING 0x065B
+#define TMT_GRADIENTACTIVECAPTION 0x065C
+#define TMT_GRADIENTINACTIVECAPTION 0x065D
+#define TMT_MENUHILIGHT 0x065E
+#define TMT_MENUBAR 0x065F
+#define TMT_TRANSPARENT 0x0899
+#define TMT_AUTOSIZE 0x089A
+#define TMT_BORDERONLY 0x089B
+#define TMT_COMPOSITED 0x089C
+#define TMT_BGFILL 0x089D
+#define TMT_GLYPHTRANSPARENT 0x089E
+#define TMT_GLYPHONLY 0x089F
+#define TMT_ALWAYSSHOWSIZINGBAR 0x08A0
+#define TMT_MIRRORIMAGE 0x08A1
+#define TMT_UNIFORMSIZING 0x08A2
+#define TMT_INTEGRALSIZING 0x08A3
+#define TMT_SOURCEGROW 0x08A4
+#define TMT_SOURCESHRINK 0x08A5
+#define TMT_IMAGECOUNT 0x0961
+#define TMT_ALPHALEVEL 0x0962
+#define TMT_BORDERSIZE 0x0963
+#define TMT_ROUNDCORNERWIDTH 0x0964
+#define TMT_ROUNDCORNERHEIGHT 0x0965
+#define TMT_GRADIENTRATIO1 0x0966
+#define TMT_GRADIENTRATIO2 0x0967
+#define TMT_GRADIENTRATIO3 0x0968
+#define TMT_GRADIENTRATIO4 0x0969
+#define TMT_GRADIENTRATIO5 0x096A
+#define TMT_PROGRESSCHUNKSIZE 0x096B
+#define TMT_PROGRESSSPACESIZE 0x096C
+#define TMT_SATURATION 0x096D
+#define TMT_TEXTBORDERSIZE 0x096E
+#define TMT_ALPHATHRESHOLD 0x096F
+#define TMT_WIDTH 0x0970
+#define TMT_HEIGHT 0x0971
+#define TMT_GLYPHINDEX 0x0972
+#define TMT_TRUESIZESTRETCHMARK 0x0973
+#define TMT_MINDPI1 0x0974
+#define TMT_MINDPI2 0x0975
+#define TMT_MINDPI3 0x0976
+#define TMT_MINDPI4 0x0977
+#define TMT_MINDPI5 0x0978
+#define TMT_GLYPHFONT 0x0A29
+#define TMT_IMAGEFILE 0x0BB9
+#define TMT_IMAGEFILE1 0x0BBA
+#define TMT_IMAGEFILE2 0x0BBB
+#define TMT_IMAGEFILE3 0x0BBC
+#define TMT_IMAGEFILE4 0x0BBD
+#define TMT_IMAGEFILE5 0x0BBE
+#define TMT_STOCKIMAGEFILE 0x0BBF
+#define TMT_GLYPHIMAGEFILE 0x0BC0
+#define TMT_TEXT 0x0C81
+#define TMT_OFFSET 0x0D49
+#define TMT_TEXTSHADOWOFFSET 0x0D4A
+#define TMT_MINSIZE 0x0D4B
+#define TMT_MINSIZE1 0x0D4C
+#define TMT_MINSIZE2 0x0D4D
+#define TMT_MINSIZE3 0x0D4E
+#define TMT_MINSIZE4 0x0D4F
+#define TMT_MINSIZE5 0x0D50
+#define TMT_NORMALSIZE 0x0D51
+#define TMT_SIZINGMARGINS 0x0E11
+#define TMT_CONTENTMARGINS 0x0E12
+#define TMT_CAPTIONMARGINS 0x0E13
+#define TMT_BORDERCOLOR 0x0ED9
+#define TMT_FILLCOLOR 0x0EDA
+#define TMT_TEXTCOLOR 0x0EDB
+#define TMT_EDGELIGHTCOLOR 0x0EDC
+#define TMT_EDGEHIGHLIGHTCOLOR 0x0EDD
+#define TMT_EDGESHADOWCOLOR 0x0EDE
+#define TMT_EDGEDKSHADOWCOLOR 0x0EDF
+#define TMT_EDGEFILLCOLOR 0x0EE0
+#define TMT_TRANSPARENTCOLOR 0x0EE1
+#define TMT_GRADIENTCOLOR1 0x0EE2
+#define TMT_GRADIENTCOLOR2 0x0EE3
+#define TMT_GRADIENTCOLOR3 0x0EE4
+#define TMT_GRADIENTCOLOR4 0x0EE5
+#define TMT_GRADIENTCOLOR5 0x0EE6
+#define TMT_SHADOWCOLOR 0x0EE7
+#define TMT_GLOWCOLOR 0x0EE8
+#define TMT_TEXTBORDERCOLOR 0x0EE9
+#define TMT_TEXTSHADOWCOLOR 0x0EEA
+#define TMT_GLYPHTEXTCOLOR 0x0EEB
+#define TMT_GLYPHTRANSPARENTCOLOR 0x0EEC
+#define TMT_FILLCOLORHINT 0x0EED
+#define TMT_BORDERCOLORHINT 0x0EEE
+#define TMT_ACCENTCOLORHINT 0x0EEF
+#define TMT_BGTYPE 0x0FA1
+#define TMT_BORDERTYPE 0x0FA2
+#define TMT_FILLTYPE 0x0FA3
+#define TMT_SIZINGTYPE 0x0FA4
+#define TMT_HALIGN 0x0FA5
+#define TMT_CONTENTALIGNMENT 0x0FA6
+#define TMT_VALIGN 0x0FA7
+#define TMT_OFFSETTYPE 0x0FA8
+#define TMT_ICONEFFECT 0x0FA9
+#define TMT_TEXTSHADOWTYPE 0x0FAA
+#define TMT_IMAGELAYOUT 0x0FAB
+#define TMT_GLYPHTYPE 0x0FAC
+#define TMT_IMAGESELECTTYPE 0x0FAD
+#define TMT_GLYPHFONTSIZINGTYPE 0x0FAE
+#define TMT_TRUESIZESCALINGTYPE 0x0FAF
+#define TMT_USERPICTURE 0x1389
+#define TMT_DEFAULTPANESIZE 0x138A
+#define TMT_BLENDCOLOR 0x138B
+#define BT_IMAGEFILE  0x0000
+#define BT_BORDERFILL 0x0001
+#define BT_NONE       0x0002
+
+typedef enum PROPERTYORIGIN {
+	PO_STATE = 0,
+	PO_PART = 1,
+	PO_CLASS = 2,
+	PO_GLOBAL = 3,
+	PO_NOTFOUND = 4
+} PROPERTYORIGIN;
+typedef enum THEMESIZE {
+	TS_MIN,
+	TS_TRUE,
+	TS_DRAW
+} THEME_SIZE;
+typedef struct _DTBGOPTS {
+	DWORD dwSize;
+	DWORD dwFlags;
+	RECT rcClip;
+} DTBGOPTS, *PDTBGOPTS;
+#define MAX_INTLIST_COUNT 10
+typedef struct _INTLIST {
+	int iValueCount;
+	int iValues[MAX_INTLIST_COUNT];
+} INTLIST, *PINTLIST;
+typedef struct _MARGINS {
+	int cxLeftWidth;
+	int cxRightWidth;
+	int cyTopHeight;
+	int cyBottomHeight;
+} MARGINS, *PMARGINS;
+typedef HANDLE HTHEME;
+
+HRESULT WINAPI CloseThemeData(HTHEME);
+HRESULT WINAPI DrawThemeBackground(HTHEME,HDC,int,int,const RECT*,const RECT*);
+HRESULT WINAPI DrawThemeBackgroundEx(HTHEME,HDC,int,int,const RECT*,const DTBGOPTS*);
+HRESULT WINAPI DrawThemeEdge(HTHEME,HDC,int,int,const RECT*,UINT,UINT,RECT*);
+HRESULT WINAPI DrawThemeIcon(HTHEME,HDC,int,int,const RECT*,HIMAGELIST,int);
+HRESULT WINAPI DrawThemeParentBackground(HWND,HDC,RECT*);
+HRESULT WINAPI DrawThemeText(HTHEME,HDC,int,int,LPCWSTR,int,DWORD,DWORD,const RECT*);
+HRESULT WINAPI EnableThemeDialogTexture(HWND,DWORD);
+HRESULT WINAPI EnableTheming(BOOL);
+HRESULT WINAPI GetCurrentThemeName(LPWSTR,int,LPWSTR,int,LPWSTR,int);
+DWORD WINAPI GetThemeAppProperties();
+HRESULT WINAPI GetThemeBackgroundContentRect(HTHEME,HDC,int,int,const RECT*,RECT*);
+HRESULT WINAPI GetThemeBackgroundExtent(HTHEME,HDC,int,int,const RECT*,RECT*);
+HRESULT WINAPI GetThemeBackgroundRegion(HTHEME,HDC,int,int,const RECT*,HRGN*);
+HRESULT WINAPI GetThemeBool(HTHEME,int,int,int,BOOL*);
+HRESULT WINAPI GetThemeColor(HTHEME,int,int,int,COLORREF*);
+HRESULT WINAPI GetThemeDocumentationProperty(LPCWSTR,LPCWSTR,LPWSTR,int);
+HRESULT WINAPI GetThemeEnumValue(HTHEME,int,int,int,int*);
+HRESULT WINAPI GetThemeFilename(HTHEME,int,int,int,LPWSTR,int);
+HRESULT WINAPI GetThemeFont(HTHEME,HDC,int,int,int,LOGFONT*);
+HRESULT WINAPI GetThemeInt(HTHEME,int,int,int,int*);
+HRESULT WINAPI GetThemeIntList(HTHEME,int,int,int,INTLIST*);
+HRESULT WINAPI GetThemeMargins(HTHEME,HDC,int,int,int,RECT*,MARGINS*);
+HRESULT WINAPI GetThemeMetric(HTHEME,HDC,int,int,int,int*);
+HRESULT WINAPI GetThemePartSize(HTHEME,HDC,int,int,RECT*,THEME_SIZE,SIZE*);
+HRESULT WINAPI GetThemePosition(HTHEME,int,int,int,POINT*);
+HRESULT WINAPI GetThemePropertyOrigin(HTHEME,int,int,int,PROPERTYORIGIN*);
+HRESULT WINAPI GetThemeRect(HTHEME,int,int,int,RECT*);
+HRESULT WINAPI GetThemeString(HTHEME,int,int,int,LPWSTR,int);
+BOOL WINAPI GetThemeSysBool(HTHEME,int);
+COLORREF WINAPI GetThemeSysColor(HTHEME,int);
+HBRUSH WINAPI GetThemeSysColorBrush(HTHEME,int);
+HRESULT WINAPI GetThemeSysFont(HTHEME,int,LOGFONT*);
+HRESULT WINAPI GetThemeSysInt(HTHEME,int,int*);
+int WINAPI GetThemeSysSize(HTHEME,int);
+HRESULT WINAPI GetThemeSysString(HTHEME,int,LPWSTR,int);
+HRESULT WINAPI GetThemeTextExtent(HTHEME,HDC,int,int,LPCWSTR,int,DWORD,const RECT*,RECT*);
+HRESULT WINAPI GetThemeTextMetrics(HTHEME,HDC,int,int,TEXTMETRIC*);
+HTHEME WINAPI GetWindowTheme(HWND);
+HRESULT WINAPI HitTestThemeBackground(HTHEME,HDC,int,int,DWORD,const RECT*,HRGN,POINT,WORD*);
+BOOL WINAPI IsAppThemed();
+BOOL WINAPI IsThemeActive();
+BOOL WINAPI IsThemeBackgroundPartiallyTransparent(HTHEME,int,int);
+BOOL WINAPI IsThemeDialogTextureEnabled(HWND);
+BOOL WINAPI IsThemePartDefined(HTHEME,int,int);
+HTHEME WINAPI OpenThemeData(HWND,LPCWSTR);
+void WINAPI SetThemeAppProperties(DWORD);
+HRESULT WINAPI SetWindowTheme(HWND,LPCWSTR,LPCWSTR);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/values.h
===================================================================
--- Daodan/MinGW/include/values.h	(revision 1046)
+++ Daodan/MinGW/include/values.h	(revision 1046)
@@ -0,0 +1,4 @@
+/*
+ * TODO: Nothing here yet. Should provide UNIX compatibility constants
+ * comparible to those in limits.h and float.h.
+ */
Index: Daodan/MinGW/include/vfw.h
===================================================================
--- Daodan/MinGW/include/vfw.h	(revision 1046)
+++ Daodan/MinGW/include/vfw.h	(revision 1046)
@@ -0,0 +1,1370 @@
+#ifndef _VFW_H
+#define _VFW_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#ifndef _WINDOWS_H
+#include <windows.h>
+#endif
+#ifndef _MMSYSTEM_H
+#include <mmsystem.h>
+#endif
+#if !defined  (_OLE2_H) && !defined (_OBJC_NO_COM)
+#include <ole2.h>
+#endif
+
+#define VFWAPI WINAPI
+#define VFWAPIV WINAPIV
+
+#include <pshpack8.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define	ICERR_OK	0
+#define	ICERR_DONTDRAW	1
+#define	ICERR_NEWPALETTE	2
+#define	ICERR_GOTOKEYFRAME	3
+#define	ICERR_STOPDRAWING	4
+#define	ICERR_UNSUPPORTED	-1
+#define	ICERR_BADFORMAT	-2
+#define	ICERR_MEMORY	-3
+#define	ICERR_INTERNAL	-4
+#define	ICERR_BADFLAGS	-5
+#define	ICERR_BADPARAM	-6
+#define	ICERR_BADSIZE	-7
+#define	ICERR_BADHANDLE	-8
+#define	ICERR_CANTUPDATE	-9
+#define	ICERR_ABORT	-10
+#define	ICERR_ERROR	-100
+#define	ICERR_BADBITDEPTH	-200
+#define	ICERR_BADIMAGESIZE	-201
+#define	ICERR_CUSTOM	-400
+#define ICCOMPRESSFRAMES_PADDING	0x01
+#define	ICM_USER	(DRV_USER+0x0000)
+#define	ICM_RESERVED_LOW	(DRV_USER+0x1000)
+#define	ICM_RESERVED_HIGH	(DRV_USER+0x2000)
+#define	ICM_RESERVED	ICM_RESERVED_LOW
+#define	ICM_GETSTATE	(ICM_RESERVED+0)
+#define	ICM_SETSTATE	(ICM_RESERVED+1)
+#define	ICM_GETINFO	(ICM_RESERVED+2)
+#define	ICM_CONFIGURE	(ICM_RESERVED+10)
+#define	ICM_ABOUT	(ICM_RESERVED+11)
+#define	ICM_GETDEFAULTQUALITY	(ICM_RESERVED+30)
+#define	ICM_GETQUALITY	(ICM_RESERVED+31)
+#define	ICM_SETQUALITY	(ICM_RESERVED+32)
+#define	ICM_SET	(ICM_RESERVED+40)
+#define	ICM_GET	(ICM_RESERVED+41)
+#define ICM_FRAMERATE	mmioFOURCC('F','r','m','R')
+#define ICM_KEYFRAMERATE	mmioFOURCC('K','e','y','R')
+#define	ICM_COMPRESS_GET_FORMAT	(ICM_USER+4)
+#define	ICM_COMPRESS_GET_SIZE	(ICM_USER+5)
+#define	ICM_COMPRESS_QUERY	(ICM_USER+6)
+#define	ICM_COMPRESS_BEGIN	(ICM_USER+7)
+#define	ICM_COMPRESS	(ICM_USER+8)
+#define	ICM_COMPRESS_END	(ICM_USER+9)
+#define	ICM_DECOMPRESS_GET_FORMAT	(ICM_USER+10)
+#define	ICM_DECOMPRESS_QUERY	(ICM_USER+11)
+#define	ICM_DECOMPRESS_BEGIN	(ICM_USER+12)
+#define	ICM_DECOMPRESS	(ICM_USER+13)
+#define	ICM_DECOMPRESS_END	(ICM_USER+14)
+#define	ICM_DECOMPRESS_SET_PALETTE	(ICM_USER+29)
+#define	ICM_DECOMPRESS_GET_PALETTE	(ICM_USER+30)
+#define	ICM_DRAW_QUERY	(ICM_USER+31)
+#define	ICM_DRAW_BEGIN	(ICM_USER+15)
+#define	ICM_DRAW_GET_PALETTE	(ICM_USER+16)
+#define	ICM_DRAW_START	(ICM_USER+18)
+#define	ICM_DRAW_STOP	(ICM_USER+19)
+#define	ICM_DRAW_END	(ICM_USER+21)
+#define	ICM_DRAW_GETTIME	(ICM_USER+32)
+#define	ICM_DRAW	(ICM_USER+33)
+#define	ICM_DRAW_WINDOW	(ICM_USER+34)
+#define	ICM_DRAW_SETTIME	(ICM_USER+35)
+#define	ICM_DRAW_REALIZE	(ICM_USER+36)
+#define	ICM_DRAW_FLUSH	(ICM_USER+37)
+#define	ICM_DRAW_RENDERBUFFER	(ICM_USER+38)
+#define	ICM_DRAW_START_PLAY	(ICM_USER+39)
+#define	ICM_DRAW_STOP_PLAY	(ICM_USER+40)
+#define	ICM_DRAW_SUGGESTFORMAT	(ICM_USER+50)
+#define	ICM_DRAW_CHANGEPALETTE	(ICM_USER+51)
+#define	ICM_GETBUFFERSWANTED	(ICM_USER+41)
+#define	ICM_GETDEFAULTKEYFRAMERATE	(ICM_USER+42)
+#define	ICM_DECOMPRESSEX_BEGIN	(ICM_USER+60)
+#define	ICM_DECOMPRESSEX_QUERY	(ICM_USER+61)
+#define	ICM_DECOMPRESSEX	(ICM_USER+62)
+#define	ICM_DECOMPRESSEX_END	(ICM_USER+63)
+#define	ICM_COMPRESS_FRAMES_INFO	(ICM_USER+70)
+#define	ICM_SET_STATUS_PROC	(ICM_USER+72)
+#define ICMF_CONFIGURE_QUERY	0x01
+#define ICCOMPRESS_KEYFRAME	0x01
+#define ICSTATUS_START	0
+#define ICSTATUS_STATUS	1
+#define ICSTATUS_END	2
+#define ICSTATUS_ERROR	3
+#define ICSTATUS_YIELD	4
+#define	ICMODE_COMPRESS	1
+#define	ICMODE_DECOMPRESS	2
+#define	ICMODE_FASTDECOMPRESS	3
+#define	ICMODE_QUERY	4
+#define	ICMODE_FASTCOMPRESS	5
+#define	ICMODE_DRAW	8
+#define ICQUALITY_LOW	0
+#define ICQUALITY_HIGH	10000
+#define ICQUALITY_DEFAULT	-1
+#define	VIDCF_QUALITY	0x01
+#define	VIDCF_CRUNCH	0x02
+#define	VIDCF_TEMPORAL	0x04
+#define	VIDCF_COMPRESSFRAMES	0x08
+#define	VIDCF_DRAW	0x10
+#define	VIDCF_FASTTEMPORALC	0x20
+#define	VIDCF_FASTTEMPORALD	0x80
+#define	VIDCF_QUALITYTIME	0x40
+#define	VIDCF_FASTTEMPORAL	(VIDCF_FASTTEMPORALC|VIDCF_FASTTEMPORALD)
+#define ICMF_ABOUT_QUERY	0x01
+#define ICDECOMPRESS_HURRYUP	0x80000000
+#define ICDECOMPRESS_UPDATE	0x40000000
+#define ICDECOMPRESS_PREROLL	0x20000000
+#define ICDECOMPRESS_NULLFRAME	0x10000000
+#define ICDECOMPRESS_NOTKEYFRAME	0x8000000
+#define ICDRAW_QUERY	0x01L
+#define ICDRAW_FULLSCREEN	0x02L
+#define ICDRAW_HDC	0x04L
+#define ICDRAW_ANIMATE	0x08L
+#define ICDRAW_CONTINUE	0x10L
+#define ICDRAW_MEMORYDC	0x20L
+#define ICDRAW_UPDATING	0x40L
+#define ICDRAW_RENDER	0x80L
+#define ICDRAW_BUFFER	0x100L
+#define ICINSTALL_UNICODE	0x8000
+#define ICINSTALL_FUNCTION	0x01
+#define ICINSTALL_DRIVER	0x02
+#define ICINSTALL_HDRV	0x04
+#define ICINSTALL_DRIVERW	0x8002
+#define ICDRAW_HURRYUP	0x80000000L
+#define ICDRAW_UPDATE	0x40000000L
+#define ICDRAW_PREROLL	0x20000000L
+#define ICDRAW_NULLFRAME	0x10000000L
+#define ICDRAW_NOTKEYFRAME	0x8000000L
+#define ICMF_COMPVARS_VALID	0x01
+#define ICMF_CHOOSE_KEYFRAME	0x01
+#define ICMF_CHOOSE_DATARATE	0x02
+#define ICMF_CHOOSE_PREVIEW	0x04
+#define ICMF_CHOOSE_ALLCOMPRESSORS	0x08
+#define ICTYPE_VIDEO	mmioFOURCC('v','i','d','c')
+#define ICTYPE_AUDIO	mmioFOURCC('a','u','d','c')
+#define formtypeAVI	mmioFOURCC('A','V','I',' ')
+#define listtypeAVIHEADER	mmioFOURCC('h','d','r','l')
+#define ckidAVIMAINHDR	mmioFOURCC('a','v','i','h')
+#define listtypeSTREAMHEADER	mmioFOURCC('s','t','r','l')
+#define ckidSTREAMHEADER	mmioFOURCC('s','t','r','h')
+#define ckidSTREAMFORMAT	mmioFOURCC('s','t','r','f')
+#define ckidSTREAMHANDLERDATA	mmioFOURCC('s','t','r','d')
+#define ckidSTREAMNAME	mmioFOURCC('s','t','r','n')
+#define listtypeAVIMOVIE	mmioFOURCC('m','o','v','i')
+#define listtypeAVIRECORD	mmioFOURCC('r','e','c',' ')
+#define ckidAVINEWINDEX	mmioFOURCC('i', 'd', 'x', '1')
+#define streamtypeANY	0UL
+#define streamtypeVIDEO	mmioFOURCC('v','i','d','s')
+#define streamtypeAUDIO	mmioFOURCC('a','u','d','s')
+#define streamtypeMIDI	mmioFOURCC('m','i','d','s')
+#define streamtypeTEXT	mmioFOURCC('t','x','t','s')
+#define cktypeDIBbits	aviTWOCC('d','b')
+#define cktypeDIBcompressed	aviTWOCC('d','c')
+#define cktypePALchange	aviTWOCC('p','c')
+#define cktypeWAVEbytes	aviTWOCC('w','b')
+#define ckidAVIPADDING	mmioFOURCC('J','U','N','K')
+#define FromHex(n) (((n)>='A')?((n)+10-'A'):((n)-'0'))
+#define StreamFromFOURCC(fcc) ((WORD)((FromHex(LOBYTE(LOWORD(fcc)))<<4)+(FromHex(HIBYTE(LOWORD(fcc))))))
+#define TWOCCFromFOURCC(fcc) HIWORD(fcc)
+#define ToHex(n) ((BYTE)(((n)>9)?((n)-10+'A'):((n)+'0')))
+#define MAKEAVICKID(tcc, stream) MAKELONG((ToHex((stream)&0x0f)<<8)|(ToHex(((stream)&0xf0)>>4)),tcc)
+#define AVIF_HASINDEX	0x10
+#define AVIF_MUSTUSEINDEX	0x20
+#define AVIF_ISINTERLEAVED	0x100
+#define AVIF_TRUSTCKTYPE	0x800
+#define AVIF_WASCAPTUREFILE	0x10000
+#define AVIF_COPYRIGHTED	0x20000
+#define AVI_HEADERSIZE	2048
+#define AVISF_DISABLED	0x01
+#define AVISF_VIDEO_PALCHANGES	0x10000
+#define AVIIF_LIST	0x01
+#define AVIIF_TWOCC	0x02
+#define AVIIF_KEYFRAME	0x10
+#define AVIIF_NOTIME	0x100
+#define AVIIF_COMPUSE	0xfff0000
+#define AVIIF_KEYFRAME	0x10
+#define	AVIGETFRAMEF_BESTDISPLAYFMT	1
+#define AVISTREAMINFO_DISABLED	0x01
+#define AVISTREAMINFO_FORMATCHANGES	0x10000
+#define AVIFILEINFO_HASINDEX	0x10
+#define AVIFILEINFO_MUSTUSEINDEX	0x20
+#define AVIFILEINFO_ISINTERLEAVED	0x100
+#define AVIFILEINFO_TRUSTCKTYPE	0x800
+#define AVIFILEINFO_WASCAPTUREFILE	0x10000
+#define AVIFILEINFO_COPYRIGHTED	0x20000
+#define AVIFILECAPS_CANREAD	0x01
+#define AVIFILECAPS_CANWRITE	0x02
+#define AVIFILECAPS_ALLKEYFRAMES	0x10
+#define AVIFILECAPS_NOCOMPRESSION	0x20
+#define AVICOMPRESSF_INTERLEAVE	0x01
+#define AVICOMPRESSF_DATARATE	0x02
+#define AVICOMPRESSF_KEYFRAMES	0x04
+#define AVICOMPRESSF_VALID	0x08
+#define FIND_DIR	0x0000000fL
+#define FIND_NEXT	0x00000001L
+#define FIND_PREV	0x00000004L
+#define FIND_FROM_START	0x00000008L
+#define FIND_TYPE	0x000000f0L
+#define FIND_KEY	0x00000010L
+#define FIND_ANY	0x00000020L
+#define FIND_FORMAT	0x00000040L
+#define FIND_RET	0x0000f000L
+#define FIND_POS	0x00000000L
+#define FIND_LENGTH	0x00001000L
+#define FIND_OFFSET	0x00002000L
+#define FIND_SIZE	0x00003000L
+#define FIND_INDEX	0x00004000L
+#define AVIERR_OK	0
+#define MAKE_AVIERR(e)	MAKE_SCODE(SEVERITY_ERROR,FACILITY_ITF,0x4000+e)
+#define AVIERR_UNSUPPORTED	MAKE_AVIERR(101)
+#define AVIERR_BADFORMAT	MAKE_AVIERR(102)
+#define AVIERR_MEMORY	MAKE_AVIERR(103)
+#define AVIERR_INTERNAL	MAKE_AVIERR(104)
+#define AVIERR_BADFLAGS	MAKE_AVIERR(105)
+#define AVIERR_BADPARAM	MAKE_AVIERR(106)
+#define AVIERR_BADSIZE	MAKE_AVIERR(107)
+#define AVIERR_BADHANDLE	MAKE_AVIERR(108)
+#define AVIERR_FILEREAD	MAKE_AVIERR(109)
+#define AVIERR_FILEWRITE	MAKE_AVIERR(110)
+#define AVIERR_FILEOPEN	MAKE_AVIERR(111)
+#define AVIERR_COMPRESSOR	MAKE_AVIERR(112)
+#define AVIERR_NOCOMPRESSOR	MAKE_AVIERR(113)
+#define AVIERR_READONLY	MAKE_AVIERR(114)
+#define AVIERR_NODATA	MAKE_AVIERR(115)
+#define AVIERR_BUFFERTOOSMALL	MAKE_AVIERR(116)
+#define AVIERR_CANTCOMPRESS	MAKE_AVIERR(117)
+#define AVIERR_USERABORT	MAKE_AVIERR(198)
+#define AVIERR_ERROR	MAKE_AVIERR(199)
+#define MCIWNDOPENF_NEW	0x0001
+#define MCIWNDF_NOAUTOSIZEWINDOW	0x0001
+#define MCIWNDF_NOPLAYBAR	0x0002
+#define MCIWNDF_NOAUTOSIZEMOVIE	0x0004
+#define MCIWNDF_NOMENU	0x0008
+#define MCIWNDF_SHOWNAME	0x0010
+#define MCIWNDF_SHOWPOS	0x0020
+#define MCIWNDF_SHOWMODE	0x0040
+#define MCIWNDF_SHOWALL	0x0070
+#define MCIWNDF_NOTIFYMODE	0x0100
+#define MCIWNDF_NOTIFYPOS	0x0200
+#define MCIWNDF_NOTIFYSIZE	0x0400
+#define MCIWNDF_NOTIFYERROR	0x1000
+#define MCIWNDF_NOTIFYALL	0x1F00
+#define MCIWNDF_NOTIFYANSI	0x0080
+#define MCIWNDF_NOTIFYMEDIAA	0x0880
+#define MCIWNDF_NOTIFYMEDIAW	0x0800
+#define MCIWNDF_RECORD	0x2000
+#define MCIWNDF_NOERRORDLG	0x4000
+#define MCIWNDF_NOOPEN	0x8000
+#define MCIWNDM_GETDEVICEID	(WM_USER + 100)
+#define MCIWNDM_GETSTART	(WM_USER + 103)
+#define MCIWNDM_GETLENGTH	(WM_USER + 104)
+#define MCIWNDM_GETEND	(WM_USER + 105)
+#define MCIWNDM_EJECT	(WM_USER + 107)
+#define MCIWNDM_SETZOOM	(WM_USER + 108)
+#define MCIWNDM_GETZOOM	(WM_USER + 109)
+#define MCIWNDM_SETVOLUME	(WM_USER + 110)
+#define MCIWNDM_GETVOLUME	(WM_USER + 111)
+#define MCIWNDM_SETSPEED	(WM_USER + 112)
+#define MCIWNDM_GETSPEED	(WM_USER + 113)
+#define MCIWNDM_SETREPEAT	(WM_USER + 114)
+#define MCIWNDM_GETREPEAT	(WM_USER + 115)
+#define MCIWNDM_REALIZE	(WM_USER + 118)
+#define MCIWNDM_VALIDATEMEDIA	(WM_USER + 121)
+#define MCIWNDM_PLAYFROM	(WM_USER + 122)
+#define MCIWNDM_PLAYTO	(WM_USER + 123)
+#define MCIWNDM_GETPALETTE	(WM_USER + 126)
+#define MCIWNDM_SETPALETTE	(WM_USER + 127)
+#define MCIWNDM_SETTIMERS	(WM_USER + 129)
+#define MCIWNDM_SETACTIVETIMER	(WM_USER + 130)
+#define MCIWNDM_SETINACTIVETIMER	(WM_USER + 131)
+#define MCIWNDM_GETACTIVETIMER	(WM_USER + 132)
+#define MCIWNDM_GETINACTIVETIMER	(WM_USER + 133)
+#define MCIWNDM_CHANGESTYLES	(WM_USER + 135)
+#define MCIWNDM_GETSTYLES	(WM_USER + 136)
+#define MCIWNDM_GETALIAS	(WM_USER + 137)
+#define MCIWNDM_PLAYREVERSE	(WM_USER + 139)
+#define MCIWNDM_GET_SOURCE	(WM_USER + 140)
+#define MCIWNDM_PUT_SOURCE	(WM_USER + 141)
+#define MCIWNDM_GET_DEST	(WM_USER + 142)
+#define MCIWNDM_PUT_DEST	(WM_USER + 143)
+#define MCIWNDM_CAN_PLAY	(WM_USER + 144)
+#define MCIWNDM_CAN_WINDOW	(WM_USER + 145)
+#define MCIWNDM_CAN_RECORD	(WM_USER + 146)
+#define MCIWNDM_CAN_SAVE	(WM_USER + 147)
+#define MCIWNDM_CAN_EJECT	(WM_USER + 148)
+#define MCIWNDM_CAN_CONFIG	(WM_USER + 149)
+#define MCIWNDM_PALETTEKICK	(WM_USER + 150)
+#define MCIWNDM_OPENINTERFACE	(WM_USER + 151)
+#define MCIWNDM_SETOWNER	(WM_USER + 152)
+#define MCIWNDM_SENDSTRINGA	(WM_USER + 101)
+#define MCIWNDM_GETPOSITIONA	(WM_USER + 102)
+#define MCIWNDM_GETMODEA	(WM_USER + 106)
+#define MCIWNDM_SETTIMEFORMATA	(WM_USER + 119)
+#define MCIWNDM_GETTIMEFORMATA	(WM_USER + 120)
+#define MCIWNDM_GETFILENAMEA	(WM_USER + 124)
+#define MCIWNDM_GETDEVICEA	(WM_USER + 125)
+#define MCIWNDM_GETERRORA	(WM_USER + 128)
+#define MCIWNDM_NEWA	(WM_USER + 134)
+#define MCIWNDM_RETURNSTRINGA	(WM_USER + 138)
+#define MCIWNDM_OPENA	(WM_USER + 153)
+#define MCIWNDM_SENDSTRINGW	(WM_USER + 201)
+#define MCIWNDM_GETPOSITIONW	(WM_USER + 202)
+#define MCIWNDM_GETMODEW	(WM_USER + 206)
+#define MCIWNDM_SETTIMEFORMATW	(WM_USER + 219)
+#define MCIWNDM_GETTIMEFORMATW	(WM_USER + 220)
+#define MCIWNDM_GETFILENAMEW	(WM_USER + 224)
+#define MCIWNDM_GETDEVICEW	(WM_USER + 225)
+#define MCIWNDM_GETERRORW	(WM_USER + 228)
+#define MCIWNDM_NEWW	(WM_USER + 234)
+#define MCIWNDM_RETURNSTRINGW	(WM_USER + 238)
+#define MCIWNDM_OPENW	(WM_USER + 252)
+#define MCIWNDM_NOTIFYMODE	(WM_USER + 200)
+#define MCIWNDM_NOTIFYPOS	(WM_USER + 201)
+#define MCIWNDM_NOTIFYSIZE	(WM_USER + 202)
+#define MCIWNDM_NOTIFYMEDIA	(WM_USER + 203)
+#define MCIWNDM_NOTIFYERROR	(WM_USER + 205)
+#define MCIWND_START	-1
+#define MCIWND_END	-2
+#define DDF_UPDATE	0x02
+#define DDF_SAME_HDC	0x04
+#define DDF_SAME_DRAW	0x08
+#define DDF_DONTDRAW	0x10
+#define DDF_ANIMATE	0x20
+#define DDF_BUFFER	0x40
+#define DDF_JUSTDRAWIT	0x80
+#define DDF_FULLSCREEN	0x100
+#define DDF_BACKGROUNDPAL	0x200
+#define DDF_NOTKEYFRAME	0x400
+#define DDF_HURRYUP	0x800
+#define DDF_HALFTONE	0x1000
+#define DDF_PREROLL	DDF_DONTDRAW
+#define DDF_SAME_DIB	DDF_SAME_DRAW
+#define DDF_SAME_SIZE	DDF_SAME_DRAW
+#define PD_CAN_DRAW_DIB	0x01
+#define PD_CAN_STRETCHDIB	0x02
+#define PD_STRETCHDIB_1_1_OK	0x04
+#define PD_STRETCHDIB_1_2_OK	0x08
+#define PD_STRETCHDIB_1_N_OK	0x10
+#ifndef mmioFOURCC
+#define mmioFOURCC(c0,c1,c2,c3) ((DWORD)(BYTE)(c0)|((DWORD)(BYTE)(c1)<<8)|((DWORD)(BYTE)(c2)<<16)|((DWORD)(BYTE)(c3)<<24))
+#endif
+#ifndef aviTWOCC
+#define aviTWOCC(ch0,ch1) ((WORD)(BYTE)(ch0)|((WORD)(BYTE)(ch1)<<8))
+#endif
+
+#ifndef RC_INVOKED
+DECLARE_HANDLE(HIC);
+DECLARE_HANDLE(HDRAWDIB);
+typedef WORD TWOCC;
+typedef BOOL (CALLBACK *AVISAVECALLBACK)(INT);
+typedef struct {
+	DWORD dwSize;
+	DWORD fccType;
+	DWORD fccHandler;
+	DWORD dwVersion;
+	DWORD dwFlags;
+	LRESULT dwError;
+	LPVOID pV1Reserved;
+	LPVOID pV2Reserved;
+	DWORD dnDevNode;
+} ICOPEN,*LPICOPEN;
+typedef struct {
+	DWORD dwFlags;
+	LPBITMAPINFOHEADER lpbiOutput;
+	LPVOID lpOutput;
+	LPBITMAPINFOHEADER lpbiInput;
+	LPVOID lpInput;
+	LPDWORD lpckid;
+	LPDWORD lpdwFlags;
+	LONG lFrameNum;
+	DWORD dwFrameSize;
+	DWORD dwQuality;
+	LPBITMAPINFOHEADER lpbiPrev;
+	LPVOID lpPrev;
+} ICCOMPRESS;
+typedef struct {
+	DWORD dwFlags;
+	LPBITMAPINFOHEADER lpbiOutput;
+	LPARAM lOutput;
+	LPBITMAPINFOHEADER lpbiInput;
+	LPARAM lInput;
+	LONG lStartFrame;
+	LONG lFrameCount;
+	LONG lQuality;
+	LONG lDataRate;
+	LONG lKeyRate;
+	DWORD dwRate;
+	DWORD dwScale;
+	DWORD dwOverheadPerFrame;
+	DWORD dwReserved2;
+	LONG (CALLBACK *GetData)(LPARAM,LONG,LPVOID,LONG);
+	LONG (CALLBACK *PutData)(LPARAM,LONG,LPVOID,LONG);
+} ICCOMPRESSFRAMES;
+typedef struct {
+	DWORD dwFlags;
+	LPARAM lParam;
+	LONG (CALLBACK *Status)(LPARAM,UINT,LONG);
+} ICSETSTATUSPROC;
+typedef struct {
+	DWORD dwSize;
+	DWORD fccType;
+	DWORD fccHandler;
+	DWORD dwFlags;
+	DWORD dwVersion;
+	DWORD dwVersionICM;
+	WCHAR szName[16];
+	WCHAR szDescription[128];
+	WCHAR szDriver[128];
+} ICINFO;
+typedef struct {
+	DWORD dwFlags;
+	LPBITMAPINFOHEADER lpbiInput;
+	LPVOID lpInput;
+	LPBITMAPINFOHEADER lpbiOutput;
+	LPVOID lpOutput;
+	DWORD ckid;
+} ICDECOMPRESS;
+typedef struct {
+	DWORD dwFlags;
+	LPBITMAPINFOHEADER lpbiSrc;
+	LPVOID lpSrc;
+	LPBITMAPINFOHEADER lpbiDst;
+	LPVOID lpDst;
+	INT xDst;
+	INT yDst;
+	INT dxDst;
+	INT dyDst;
+	INT xSrc;
+	INT ySrc;
+	INT dxSrc;
+	INT dySrc;
+} ICDECOMPRESSEX;
+typedef struct {
+	DWORD dwFlags;
+	LPBITMAPINFOHEADER lpbiIn;
+	LPBITMAPINFOHEADER lpbiSuggest;
+	INT dxSrc;
+	INT dySrc;
+	INT dxDst;
+	INT dyDst;
+	HIC hicDecompressor;
+} ICDRAWSUGGEST;
+typedef struct {
+	DWORD dwFlags;
+	INT iStart;
+	INT iLen;
+	LPPALETTEENTRY lppe;
+} ICPALETTE;
+typedef struct {
+	DWORD dwFlags;
+	HPALETTE hpal;
+	HWND hwnd;
+	HDC hdc;
+	INT xDst;
+	INT yDst;
+	INT dxDst;
+	INT dyDst;
+	LPBITMAPINFOHEADER lpbi;
+	INT xSrc;
+	INT ySrc;
+	INT dxSrc;
+	INT dySrc;
+	DWORD dwRate;
+	DWORD dwScale;
+} ICDRAWBEGIN;
+typedef struct {
+	DWORD dwFlags;
+	LPVOID lpFormat;
+	LPVOID lpData;
+	DWORD cbData;
+	LONG lTime;
+} ICDRAW;
+typedef struct {
+	LONG cbSize;
+	DWORD dwFlags;
+	HIC hic;
+	DWORD fccType;
+	DWORD fccHandler;
+	LPBITMAPINFO lpbiIn;
+	LPBITMAPINFO lpbiOut;
+	LPVOID lpBitsOut;
+	LPVOID lpBitsPrev;
+	LONG lFrame;
+	LONG lKey;
+	LONG lDataRate;
+	LONG lQ;
+	LONG lKeyCount;
+	LPVOID lpState;
+	LONG cbState;
+} COMPVARS, *PCOMPVARS;
+typedef struct _MainAVIHeader
+{
+	DWORD dwMicroSecPerFrame;
+	DWORD dwMaxBytesPerSec;
+	DWORD dwPaddingGranularity;
+	DWORD dwFlags;
+	DWORD dwTotalFrames;
+	DWORD dwInitialFrames;
+	DWORD dwStreams;
+	DWORD dwSuggestedBufferSize;
+	DWORD dwWidth;
+	DWORD dwHeight;
+	DWORD dwReserved[4];
+} MainAVIHeader;
+typedef struct {
+	FOURCC fccType;
+	FOURCC fccHandler;
+	DWORD dwFlags;
+	WORD wPriority;
+	WORD wLanguage;
+	DWORD dwInitialFrames;
+	DWORD dwScale;
+	DWORD dwRate;
+	DWORD dwStart;
+	DWORD dwLength;
+	DWORD dwSuggestedBufferSize;
+	DWORD dwQuality;
+	DWORD dwSampleSize;
+	RECT rcFrame;
+} AVIStreamHeader;
+typedef struct _AVIINDEXENTRY {
+	DWORD ckid;
+	DWORD dwFlags;
+	DWORD dwChunkOffset;
+	DWORD dwChunkLength;
+} AVIINDEXENTRY;
+typedef struct _AVIPALCHANGE {
+	BYTE bFirstEntry;
+	BYTE bNumEntries;
+	WORD wFlags;
+	PALETTEENTRY peNew[1];
+} AVIPALCHANGE;
+typedef struct _AVISTREAMINFOA {
+	DWORD fccType;
+	DWORD fccHandler;
+	DWORD dwFlags;
+	DWORD dwCaps;
+	WORD wPriority;
+	WORD wLanguage;
+	DWORD dwScale;
+	DWORD dwRate;
+	DWORD dwStart;
+	DWORD dwLength;
+	DWORD dwInitialFrames;
+	DWORD dwSuggestedBufferSize;
+	DWORD dwQuality;
+	DWORD dwSampleSize;
+	RECT rcFrame;
+	DWORD dwEditCount;
+	DWORD dwFormatChangeCount;
+	CHAR szName[64];
+} AVISTREAMINFOA, * LPAVISTREAMINFOA, *PAVISTREAMINFOA;
+typedef struct _AVISTREAMINFOW {
+	DWORD fccType;
+	DWORD fccHandler;
+	DWORD dwFlags;
+	DWORD dwCaps;
+	WORD wPriority;
+	WORD wLanguage;
+	DWORD dwScale;
+	DWORD dwRate;
+	DWORD dwStart;
+	DWORD dwLength;
+	DWORD dwInitialFrames;
+	DWORD dwSuggestedBufferSize;
+	DWORD dwQuality;
+	DWORD dwSampleSize;
+	RECT rcFrame;
+	DWORD dwEditCount;
+	DWORD dwFormatChangeCount;
+	WCHAR szName[64];
+} AVISTREAMINFOW, * LPAVISTREAMINFOW, *PAVISTREAMINFOW;
+typedef struct _AVIFILEINFOW {
+	DWORD dwMaxBytesPerSec;
+	DWORD dwFlags;
+	DWORD dwCaps;
+	DWORD dwStreams;
+	DWORD dwSuggestedBufferSize;
+	DWORD dwWidth;
+	DWORD dwHeight;
+	DWORD dwScale;
+	DWORD dwRate;
+	DWORD dwLength;
+	DWORD dwEditCount;
+	WCHAR szFileType[64];
+} AVIFILEINFOW, *LPAVIFILEINFOW, *PAVIFILEINFOW;
+typedef struct _AVIFILEINFOA {
+	DWORD dwMaxBytesPerSec;
+	DWORD dwFlags;
+	DWORD dwCaps;
+	DWORD dwStreams;
+	DWORD dwSuggestedBufferSize;
+	DWORD dwWidth;
+	DWORD dwHeight;
+	DWORD dwScale;
+	DWORD dwRate;
+	DWORD dwLength;
+	DWORD dwEditCount;
+	CHAR szFileType[64];
+} AVIFILEINFOA, *LPAVIFILEINFOA, *PAVIFILEINFOA;
+typedef struct _AVICOMPRESSOPTIONS {
+	DWORD fccType;
+	DWORD fccHandler;
+	DWORD dwKeyFrameEvery;
+	DWORD dwQuality;
+	DWORD dwBytesPerSecond;
+	DWORD dwFlags;
+	LPVOID lpFormat;
+	DWORD cbFormat;
+	LPVOID lpParms;
+	DWORD cbParms;
+	DWORD dwInterleaveEvery;
+} AVICOMPRESSOPTIONS, *LPAVICOMPRESSOPTIONS,*PAVICOMPRESSOPTIONS;
+typedef struct _CAPDRIVERCAPS {
+	UINT wDeviceIndex;
+	BOOL fHasOverlay;
+	BOOL fHasDlgVideoSource;
+	BOOL fHasDlgVideoFormat;
+	BOOL fHasDlgVideoDisplay;
+	BOOL fCaptureInitialized;
+	BOOL fDriverSuppliesPalettes;
+	HANDLE hVideoIn;
+	HANDLE hVideoOut;
+	HANDLE hVideoExtIn;
+	HANDLE hVideoExtOut;
+} CAPDRIVERCAPS, *LPCAPDRIVERCAPS;
+typedef struct _CAPINFOCHUNK {
+	FOURCC fccInfoID;
+	LPVOID lpData;
+	LONG cbData;
+} CAPINFOCHUNK, *LPCAPINFOCHUNK;
+typedef struct _CAPSTATUS {
+	UINT uiImageWidth;
+	UINT uiImageHeight;
+	BOOL fLiveWindow;
+	BOOL fOverlayWindow;
+	BOOL fScale;
+	POINT ptScroll;
+	BOOL fUsingDefaultPalette;
+	BOOL fAudioHardware;
+	BOOL fCapFileExists;
+	DWORD dwCurrentVideoFrame;
+	DWORD dwCurrentVideoFramesDropped;
+	DWORD dwCurrentWaveSamples;
+	DWORD dwCurrentTimeElapsedMS;
+	HPALETTE hPalCurrent;
+	BOOL fCapturingNow;
+	DWORD dwReturn;
+	UINT wNumVideoAllocated;
+	UINT wNumAudioAllocated;
+} CAPSTATUS, *LPCAPSTATUS;
+typedef struct _CAPTUREPARMS {
+	DWORD dwRequestMicroSecPerFrame;
+	BOOL fMakeUserHitOKToCapture;
+	UINT wPercentDropForError;
+	BOOL fYield;
+	DWORD dwIndexSize;
+	UINT wChunkGranularity;
+	BOOL fUsingDOSMemory;
+	UINT wNumVideoRequested;
+	BOOL fCaptureAudio;
+	UINT wNumAudioRequested;
+	UINT vKeyAbort;
+	BOOL fAbortLeftMouse;
+	BOOL fAbortRightMouse;
+	BOOL fLimitEnabled;
+	UINT wTimeLimit;
+	BOOL fMCIControl;
+	BOOL fStepMCIDevice;
+	DWORD dwMCIStartTime;
+	DWORD dwMCIStopTime;
+	BOOL fStepCaptureAt2x;
+	UINT wStepCaptureAverageFrames;
+	DWORD dwAudioBufferSize;
+	BOOL fDisableWriteCache;
+	UINT AVStreamMaster;
+} CAPTUREPARMS, *LPCAPTUREPARMS;
+
+typedef struct videohdr_tag {
+	LPBYTE lpData;
+	DWORD dwBufferLength;
+	DWORD dwBytesUsed;
+	DWORD dwTimeCaptured;
+	DWORD dwUser;
+	DWORD dwFlags;
+	DWORD_PTR dwReserved[4];
+} VIDEOHDR, *LPVIDEOHDR;
+
+#if !defined (_OBJC_NO_COM)
+#define DEFINE_AVIGUID(name,l,w1,w2) DEFINE_GUID(name,l,w1,w2,0xC0,0,0,0,0,0,0,0x46)
+DEFINE_AVIGUID(IID_IAVIFile,0x00020020,0,0);
+DEFINE_AVIGUID(IID_IAVIStream,0x00020021,0,0);
+DEFINE_AVIGUID(IID_IAVIStreaming,0x00020022,0,0);
+DEFINE_AVIGUID(IID_IGetFrame,0x00020023,0,0);
+DEFINE_AVIGUID(IID_IAVIEditStream,0x00020024,0,0);
+DEFINE_AVIGUID(CLSID_AVIFile,0x00020000,0,0);
+
+#define INTERFACE IAVIStream
+DECLARE_INTERFACE_(IAVIStream, IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(Create)(THIS_ LPARAM,LPARAM) PURE;
+	STDMETHOD(Info)(THIS_ AVISTREAMINFOW*,LONG) PURE;
+	STDMETHOD_(LONG,FindSample)(THIS_ LONG,LONG) PURE;
+	STDMETHOD(ReadFormat)(THIS_ LONG,LPVOID,LONG*) PURE;
+	STDMETHOD(SetFormat)(THIS_ LONG,LPVOID,LONG) PURE;
+	STDMETHOD(Read)(THIS_ LONG,LONG,LPVOID,LONG,LONG*,LONG*) PURE;
+	STDMETHOD(Write)(THIS_ LONG,LONG,LPVOID,LONG,DWORD,LONG*,LONG*) PURE;
+	STDMETHOD(Delete)(THIS_ LONG,LONG) PURE;
+	STDMETHOD(ReadData)(THIS_ DWORD,LPVOID,LONG*) PURE;
+	STDMETHOD(WriteData)(THIS_ DWORD,LPVOID,LONG) PURE;
+	STDMETHOD(SetInfo)(THIS_ AVISTREAMINFOW*,LONG) PURE;
+};
+#undef INTERFACE
+typedef IAVIStream *PAVISTREAM;
+
+#define INTERFACE IAVIStreaming
+DECLARE_INTERFACE_(IAVIStreaming, IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(Begin)(THIS_ LONG,LONG,LONG) PURE;
+	STDMETHOD(End)(THIS) PURE;
+};
+#undef INTERFACE
+typedef IAVIStreaming *PAVISTREAMING;
+
+#define INTERFACE IAVIEditStream
+DECLARE_INTERFACE_(IAVIEditStream, IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(Cut)(THIS_ LONG*,LONG*,PAVISTREAM*) PURE;
+	STDMETHOD(Copy)(THIS_ LONG*,LONG*,PAVISTREAM*) PURE;
+	STDMETHOD(Paste)(THIS_ LONG*,LONG*,PAVISTREAM,LONG,LONG) PURE;
+	STDMETHOD(Clone)(THIS_ PAVISTREAM*) PURE;
+	STDMETHOD(SetInfo)(THIS_ LPAVISTREAMINFOW,LONG) PURE;
+};
+#undef INTERFACE
+typedef IAVIEditStream *PAVIEDITSTREAM;
+
+#define INTERFACE IAVIFile
+DECLARE_INTERFACE_(IAVIFile, IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(Info)(THIS_ AVIFILEINFOW*,LONG) PURE;
+	STDMETHOD(GetStream)(THIS_ PAVISTREAM*,DWORD,LONG) PURE;
+	STDMETHOD(CreateStream)(THIS_ PAVISTREAM*,AVISTREAMINFOW*) PURE;
+	STDMETHOD(WriteData)(THIS_ DWORD,LPVOID,LONG) PURE;
+	STDMETHOD(ReadData)(THIS_ DWORD,LPVOID,LONG*) PURE;
+	STDMETHOD(EndRecord)(THIS) PURE;
+	STDMETHOD(DeleteStream)(THIS_ DWORD,LONG) PURE;
+};
+#undef INTERFACE
+typedef IAVIFile *PAVIFILE;
+
+#define INTERFACE IGetFrame
+DECLARE_INTERFACE_(IGetFrame, IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD_(LPVOID,GetFrame)(THIS_ LONG) PURE;
+	STDMETHOD(Begin)(THIS_ LONG,LONG,LONG) PURE;
+	STDMETHOD(End)(THIS) PURE;
+	STDMETHOD(SetFormat)(THIS_ LPBITMAPINFOHEADER,LPVOID,INT,INT,INT,INT) PURE;
+};
+#undef INTERFACE
+typedef IGetFrame *PGETFRAME;
+#endif /* !defined (_OBJC_NO_COM) */
+
+DWORD VFWAPI VideoForWindowsVersion(VOID);
+LONG VFWAPI InitVFW(VOID);
+LONG VFWAPI TermVFW(VOID);
+DWORD VFWAPIV ICCompress(HIC,DWORD,LPBITMAPINFOHEADER,LPVOID,LPBITMAPINFOHEADER,LPVOID,LPDWORD,LPDWORD,LONG,DWORD,DWORD,LPBITMAPINFOHEADER,LPVOID);
+DWORD VFWAPIV ICDecompress(HIC,DWORD,LPBITMAPINFOHEADER,LPVOID,LPBITMAPINFOHEADER,LPVOID);
+LRESULT	VFWAPI ICSendMessage(HIC,UINT,DWORD,DWORD);
+HANDLE VFWAPI ICImageCompress(HIC,UINT,LPBITMAPINFO,LPVOID,LPBITMAPINFO,LONG,LONG*);
+HANDLE VFWAPI ICImageDecompress(HIC,UINT,LPBITMAPINFO,LPVOID,LPBITMAPINFO);
+BOOL VFWAPI ICInfo(DWORD,DWORD,ICINFO*);
+BOOL VFWAPI ICInstall(DWORD,DWORD,LPARAM,LPSTR,UINT);
+BOOL VFWAPI ICRemove(DWORD,DWORD,UINT);
+LRESULT VFWAPI ICGetInfo(HIC,ICINFO*,DWORD);
+HIC VFWAPI ICOpen(DWORD,DWORD,UINT);
+HIC VFWAPI ICOpenFunction(DWORD,DWORD,UINT,FARPROC);
+LRESULT VFWAPI ICClose(HIC hic);
+HIC VFWAPI ICLocate(DWORD,DWORD,LPBITMAPINFOHEADER,LPBITMAPINFOHEADER,WORD);
+HIC VFWAPI ICGetDisplayFormat(HIC,LPBITMAPINFOHEADER,LPBITMAPINFOHEADER,INT,INT,INT);
+DWORD VFWAPIV ICDrawBegin(HIC,DWORD,HPALETTE,HWND,HDC,INT,INT,INT,INT,LPBITMAPINFOHEADER,INT,INT,INT,INT,DWORD,DWORD);
+DWORD VFWAPIV ICDraw(HIC,DWORD,LPVOID,LPVOID,DWORD,LONG);
+BOOL VFWAPI ICCompressorChoose(HWND,UINT,LPVOID,LPVOID,PCOMPVARS,LPSTR);
+BOOL VFWAPI ICSeqCompressFrameStart(PCOMPVARS,LPBITMAPINFO);
+void VFWAPI ICSeqCompressFrameEnd(PCOMPVARS);
+LPVOID VFWAPI ICSeqCompressFrame(PCOMPVARS,UINT,LPVOID,BOOL*,LONG*);
+void VFWAPI ICCompressorFree(PCOMPVARS);
+#if !defined (_OBJC_NO_COM)
+ULONG WINAPI AVIStreamAddRef(PAVISTREAM);
+ULONG WINAPI AVIStreamRelease(PAVISTREAM);
+HRESULT WINAPI AVIStreamCreate(PAVISTREAM*,LONG,LONG,CLSID*);
+HRESULT WINAPI AVIStreamInfoA(PAVISTREAM,AVISTREAMINFOA*,LONG);
+HRESULT WINAPI AVIStreamInfoW(PAVISTREAM,AVISTREAMINFOW*,LONG);
+HRESULT WINAPI AVIStreamFindSample(PAVISTREAM,LONG,DWORD);
+HRESULT WINAPI AVIStreamReadFormat(PAVISTREAM,LONG,LPVOID,LONG*);
+HRESULT WINAPI AVIStreamSetFormat(PAVISTREAM,LONG,LPVOID,LONG);
+HRESULT WINAPI AVIStreamRead(PAVISTREAM,LONG,LONG,LPVOID,LONG,LONG*,LONG*);
+HRESULT WINAPI AVIStreamWrite(PAVISTREAM,LONG,LONG,LPVOID,LONG,DWORD,LONG*,LONG*);
+HRESULT WINAPI AVIStreamReadData(PAVISTREAM,DWORD,LPVOID,LONG*);
+HRESULT WINAPI AVIStreamWriteData(PAVISTREAM,DWORD,LPVOID,LONG);
+PGETFRAME WINAPI AVIStreamGetFrameOpen(PAVISTREAM,LPBITMAPINFOHEADER);
+LPVOID WINAPI AVIStreamGetFrame(PGETFRAME,LONG);
+HRESULT WINAPI AVIStreamGetFrameClose(PGETFRAME);
+HRESULT WINAPI AVIMakeCompressedStream(PAVISTREAM*,PAVISTREAM,AVICOMPRESSOPTIONS*,CLSID*);
+HRESULT WINAPI AVIMakeFileFromStreams(PAVIFILE*,INT,PAVISTREAM*);
+HRESULT WINAPI AVIStreamOpenFromFileA(PAVISTREAM*,LPCSTR,DWORD,LONG,UINT,CLSID*);
+HRESULT WINAPI AVIStreamOpenFromFileW(PAVISTREAM*,LPCWSTR,DWORD,LONG,UINT,CLSID*);
+HRESULT WINAPI AVIBuildFilterA(LPSTR,LONG,BOOL);
+HRESULT WINAPI AVIBuildFilterW(LPWSTR,LONG,BOOL);
+BOOL WINAPI AVISaveOptions(HWND,UINT,INT,PAVISTREAM*,LPAVICOMPRESSOPTIONS*);
+HRESULT WINAPI AVISaveOptionsFree(INT,LPAVICOMPRESSOPTIONS*);
+HRESULT WINAPI AVISaveVA(LPCSTR,CLSID*,AVISAVECALLBACK,INT,PAVISTREAM*,LPAVICOMPRESSOPTIONS*);
+HRESULT WINAPI AVISaveVW(LPCWSTR,CLSID*,AVISAVECALLBACK,INT,PAVISTREAM*,LPAVICOMPRESSOPTIONS*);
+LONG WINAPI AVIStreamStart(PAVISTREAM);
+LONG WINAPI AVIStreamLength(PAVISTREAM);
+LONG WINAPI AVIStreamSampleToTime(PAVISTREAM,LONG);
+LONG WINAPI AVIStreamTimeToSample(PAVISTREAM,LONG);
+HRESULT WINAPI CreateEditableStream(PAVISTREAM*,PAVISTREAM);
+HRESULT WINAPI EditStreamClone(PAVISTREAM,PAVISTREAM*);
+HRESULT WINAPI EditStreamCopy(PAVISTREAM,LONG*,LONG*,PAVISTREAM*);
+HRESULT WINAPI EditStreamCut(PAVISTREAM,LONG*,LONG*,PAVISTREAM*);
+HRESULT WINAPI EditStreamPaste(PAVISTREAM,LONG*,LONG*,PAVISTREAM,LONG,LONG);
+HRESULT WINAPI EditStreamSetInfoA(PAVISTREAM,LPAVISTREAMINFOA,LONG);
+HRESULT WINAPI EditStreamSetInfoW(PAVISTREAM,LPAVISTREAMINFOW,LONG);
+HRESULT WINAPI EditStreamSetNameA(PAVISTREAM,LPCSTR);
+HRESULT WINAPI EditStreamSetNameW(PAVISTREAM,LPCWSTR);
+HRESULT WINAPI CreateEditableStream(PAVISTREAM*,PAVISTREAM);
+HRESULT WINAPI EditStreamClone(PAVISTREAM,PAVISTREAM*);
+HRESULT WINAPI EditStreamCopy(PAVISTREAM,LONG*,LONG*,PAVISTREAM*);
+HRESULT WINAPI EditStreamCut(PAVISTREAM,LONG*,LONG*,PAVISTREAM*);
+HRESULT WINAPI EditStreamPaste(PAVISTREAM,LONG*,LONG*,PAVISTREAM,LONG,LONG);
+HRESULT WINAPI EditStreamSetInfoA(PAVISTREAM,LPAVISTREAMINFOA,LONG);
+HRESULT WINAPI EditStreamSetInfoW(PAVISTREAM,LPAVISTREAMINFOW,LONG);
+HRESULT WINAPI EditStreamSetNameA(PAVISTREAM,LPCSTR);
+HRESULT WINAPI EditStreamSetNameW(PAVISTREAM,LPCWSTR);
+VOID WINAPI AVIFileInit(void);
+VOID WINAPI AVIFileExit(void);
+HRESULT WINAPI AVIFileOpenA(PAVIFILE*,LPCSTR,UINT,LPCLSID);
+HRESULT WINAPI AVIFileOpenW(PAVIFILE*,LPCWSTR,UINT,LPCLSID);
+ULONG WINAPI AVIFileAddRef(PAVIFILE);
+ULONG WINAPI AVIFileRelease(PAVIFILE);
+HRESULT WINAPI AVIFileInfoA(PAVIFILE,PAVIFILEINFOA,LONG);
+HRESULT WINAPI AVIFileInfoW(PAVIFILE,PAVIFILEINFOW,LONG);
+HRESULT WINAPI AVIFileGetStream(PAVIFILE,PAVISTREAM*,DWORD,LONG);
+HRESULT WINAPI AVIFileCreateStreamA(PAVIFILE,PAVISTREAM*,AVISTREAMINFOA*);
+HRESULT WINAPI AVIFileCreateStreamW(PAVIFILE,PAVISTREAM*,AVISTREAMINFOW*);
+HRESULT WINAPI AVIFileWriteData(PAVIFILE,DWORD,LPVOID,LONG);
+HRESULT WINAPI AVIFileReadData(PAVIFILE,DWORD,LPVOID,LPLONG);
+HRESULT WINAPI AVIFileEndRecord(PAVIFILE);
+HRESULT WINAPI AVIClearClipboard(VOID);
+HRESULT WINAPI AVIGetFromClipboard(PAVIFILE*);
+HRESULT WINAPI AVIPutFileOnClipboard(PAVIFILE);
+#endif /* _OBJC_NO_COM */
+#ifdef OFN_READONLY
+BOOL WINAPI GetOpenFileNamePreviewA(LPOPENFILENAMEA);
+BOOL WINAPI GetOpenFileNamePreviewW(LPOPENFILENAMEW);
+BOOL WINAPI GetSaveFileNamePreviewA(LPOPENFILENAMEA);
+BOOL WINAPI GetSaveFileNamePreviewW(LPOPENFILENAMEW);
+#endif
+HWND VFWAPIV MCIWndCreateA(HWND,HINSTANCE,DWORD,LPCSTR);
+HWND VFWAPIV MCIWndCreateW(HWND,HINSTANCE,DWORD,LPCWSTR);
+HDRAWDIB VFWAPI DrawDibOpen(VOID);
+UINT VFWAPI DrawDibRealize(HDRAWDIB,HDC,BOOL);
+BOOL VFWAPI DrawDibBegin(HDRAWDIB,HDC,INT,INT,LPBITMAPINFOHEADER,INT,INT,UINT);
+BOOL VFWAPI DrawDibDraw(HDRAWDIB,HDC,INT,INT,INT,INT,LPBITMAPINFOHEADER,LPVOID,INT,INT,INT,INT,UINT);
+BOOL VFWAPI DrawDibSetPalette(HDRAWDIB,HPALETTE);
+HPALETTE VFWAPI DrawDibGetPalette(HDRAWDIB);
+BOOL VFWAPI DrawDibChangePalette(HDRAWDIB,int,int,LPPALETTEENTRY);
+LPVOID VFWAPI DrawDibGetBuffer(HDRAWDIB,LPBITMAPINFOHEADER,DWORD,DWORD);
+BOOL VFWAPI DrawDibStart(HDRAWDIB,DWORD);
+BOOL VFWAPI DrawDibStop(HDRAWDIB);
+BOOL VFWAPI DrawDibEnd(HDRAWDIB);
+BOOL VFWAPI DrawDibClose(HDRAWDIB);
+DWORD VFWAPI DrawDibProfileDisplay(LPBITMAPINFOHEADER);
+
+#define ICCompressGetFormat(hic,lpbiInput,lpbiOutput) ICSendMessage(hic,ICM_COMPRESS_GET_FORMAT,(DWORD)(lpbiInput),(DWORD)(lpbiOutput))
+#define ICCompressGetFormatSize(hic,lpbi) ICCompressGetFormat(hic,lpbi,NULL)
+#define ICCompressBegin(hic,lpbiInput,lpbiOutput) ICSendMessage(hic,ICM_COMPRESS_BEGIN,(DWORD)(lpbiInput),(DWORD)(lpbiOutput))
+#define ICCompressGetSize(hic,lpbiInput,lpbiOutput) ICSendMessage(hic,ICM_COMPRESS_GET_SIZE,(DWORD)(lpbiInput),(DWORD)(lpbiOutput))
+#define ICCompressQuery(hic,lpbiInput,lpbiOutput) ICSendMessage(hic,ICM_COMPRESS_QUERY,(DWORD)(lpbiInput),(DWORD)(lpbiOutput))
+#define ICCompressEnd(hic) ICSendMessage(hic,ICM_COMPRESS_END,0,0)
+#define ICQueryAbout(hic) (ICSendMessage(hic,ICM_ABOUT,(DWORD)-1,ICMF_ABOUT_QUERY)==ICERR_OK)
+#define ICAbout(hic,hwnd) ICSendMessage(hic,ICM_ABOUT,(DWORD)(hwnd),0)
+#define ICQueryConfigure(hic) (ICSendMessage(hic,ICM_CONFIGURE,(DWORD)-1,ICMF_CONFIGURE_QUERY)==ICERR_OK)
+#define ICConfigure(hic,hwnd) ICSendMessage(hic,ICM_CONFIGURE,(DWORD)(hwnd),0)
+#define ICDecompressBegin(hic,lpbiInput,lpbiOutput) ICSendMessage(hic,ICM_DECOMPRESS_BEGIN,(DWORD)(lpbiInput),(DWORD)(lpbiOutput))
+#define ICDecompressQuery(hic,lpbiInput,lpbiOutput) ICSendMessage(hic,ICM_DECOMPRESS_QUERY,(DWORD)(lpbiInput),(DWORD)(lpbiOutput))
+#define ICDecompressGetFormat(hic,lpbiInput,lpbiOutput) (LONG)ICSendMessage(hic,ICM_DECOMPRESS_GET_FORMAT,(DWORD)(lpbiInput),(DWORD)(lpbiOutput))
+#define ICDecompressGetFormatSize(hic,lpbi) ICDecompressGetFormat(hic, lpbi, NULL)
+#define ICDecompressGetPalette(hic,lpbiInput,lpbiOutput) ICSendMessage(hic,ICM_DECOMPRESS_GET_PALETTE,(DWORD)(lpbiInput),(DWORD)(lpbiOutput))
+#define ICDecompressSetPalette(hic,lpbiPalette) ICSendMessage(hic,ICM_DECOMPRESS_SET_PALETTE,(DWORD)(lpbiPalette),0)
+#define ICDecompressEnd(hic) ICSendMessage(hic,ICM_DECOMPRESS_END,0,0)
+#define ICDecompressExEnd(hic) ICSendMessage(hic,ICM_DECOMPRESSEX_END,0,0)
+#define ICDecompressOpen(fccType,fccHandler,lpbiIn,lpbiOut) ICLocate(fccType,fccHandler,lpbiIn,lpbiOut,ICMODE_DECOMPRESS)
+#define ICDrawOpen(fccType,fccHandler,lpbiIn) ICLocate(fccType,fccHandler,lpbiIn,NULL,ICMODE_DRAW)
+#define ICGetState(hic,pv,cb) ICSendMessage(hic,ICM_GETSTATE,(DWORD)(pv),(DWORD)(cb))
+#define ICSetState(hic,pv,cb) ICSendMessage(hic,ICM_SETSTATE,(DWORD)(pv),(DWORD)(cb))
+#define ICGetStateSize(hic) ICGetState(hic,NULL,0)
+#define ICDrawWindow(hic,prc) ICSendMessage(hic,ICM_DRAW_WINDOW,(DWORD)(prc),sizeof(RECT))
+#define ICDrawQuery(hic,lpbiInput) ICSendMessage(hic,ICM_DRAW_QUERY,(DWORD)(lpbiInput),0)
+#define ICDrawChangePalette(hic,lpbiInput) ICSendMessage(hic,ICM_DRAW_CHANGEPALETTE,(DWORD)(lpbiInput),0)
+#define ICGetBuffersWanted(hic,lpdwBuffers) ICSendMessage(hic,ICM_GETBUFFERSWANTED,(DWORD)(lpdwBuffers),0)
+#define ICDrawEnd(hic) ICSendMessage(hic,ICM_DRAW_END,0,0)
+#define ICDrawStart(hic) ICSendMessage(hic,ICM_DRAW_START,0,0)
+#define ICDrawStartPlay(hic,lFrom,lTo) ICSendMessage(hic,ICM_DRAW_START_PLAY,(DWORD)(lFrom),(DWORD)(lTo))
+#define ICDrawStop(hic) ICSendMessage(hic,ICM_DRAW_STOP,0,0)
+#define ICDrawStopPlay(hic) ICSendMessage(hic,ICM_DRAW_STOP_PLAY,0,0)
+#define ICDrawGetTime(hic,lplTime) ICSendMessage(hic,ICM_DRAW_GETTIME,(DWORD)(lplTime),0)
+#define ICDrawSetTime(hic,lTime) ICSendMessage(hic,ICM_DRAW_SETTIME,(DWORD)lTime,0)
+#define ICDrawRealize(hic,hdc,fBackground) ICSendMessage(hic,ICM_DRAW_REALIZE,(DWORD)(hdc),(DWORD)(fBackground))
+#define ICDrawFlush(hic) ICSendMessage(hic,ICM_DRAW_FLUSH,0,0)
+#define ICDrawRenderBuffer(hic) ICSendMessage(hic,ICM_DRAW_RENDERBUFFER,0,0)
+#define AVIFileClose(pavi) AVIFileRelease(pavi)
+#define AVIStreamClose(pavi) AVIStreamRelease(pavi);
+#define AVIStreamEnd(pavi) (AVIStreamStart(pavi)+AVIStreamLength(pavi))
+#define AVIStreamEndTime(pavi) AVIStreamSampleToTime(pavi,AVIStreamEnd(pavi))
+#define AVIStreamFormatSize(pavi,lPos,plSize) AVIStreamReadFormat(pavi,lPos,NULL,plSize)
+#define AVIStreamLengthTime(pavi) AVIStreamSampleToTime(pavi,AVIStreamLength(pavi))
+#define AVIStreamSampleSize(pavi,pos,psize) AVIStreamRead(pavi,pos,1,NULL,0,psize,NULL)
+#define AVIStreamSampleToSample(pavi1,pavi2,samp2) AVIStreamTimeToSample(pavi1,AVIStreamSampleToTime(pavi2,samp2))
+#define AVIStreamStartTime(pavi) AVIStreamSampleToTime(pavi,AVIStreamStart(pavi))
+#define AVIStreamNextSample(pavi,pos) AVIStreamFindSample(pavi,pos+1,FIND_NEXT|FIND_ANY)
+#define AVIStreamPrevSample(pavi,pos) AVIStreamFindSample(pavi,pos-1,FIND_PREV|FIND_ANY)
+#define AVIStreamNearestSample(pavi, pos) AVIStreamFindSample(pavi,pos,FIND_PREV|FIND_ANY)
+#define AVStreamNextKeyFrame(pavi,pos) AVIStreamFindSample(pavi,pos+1,FIND_NEXT|FIND_KEY)
+#define AVStreamPrevKeyFrame(pavi,pos) AVIStreamFindSample(pavi,pos-1,FIND_NEXT|FIND_KEY)
+#define AVIStreamNearestKeyFrame(pavi,pos) AVIStreamFindSample(pavi,pos,FIND_PREV|FIND_KEY)
+#define AVIStreamIsKeyFrame(pavi, pos) (AVIStreamNearestKeyFrame(pavi,pos) == pos)
+#ifdef __cplusplus
+#define MCIWndSM ::SendMessage
+#else
+#define MCIWndSM SendMessage
+#endif
+#define MCIWndCanPlay(hWnd) (BOOL)MCIWndSM(hWnd,MCIWNDM_CAN_PLAY,0,0)
+#define MCIWndCanRecord(hWnd) (BOOL)MCIWndSM(hWnd,MCIWNDM_CAN_RECORD,0,0)
+#define MCIWndCanSave(hWnd) (BOOL)MCIWndSM(hWnd,MCIWNDM_CAN_SAVE,0,0)
+#define MCIWndCanWindow(hWnd) (BOOL)MCIWndSM(hWnd,MCIWNDM_CAN_WINDOW,0,0)
+#define MCIWndCanEject(hWnd) (BOOL)MCIWndSM(hWnd,MCIWNDM_CAN_EJECT,0,0)
+#define MCIWndCanConfig(hWnd) (BOOL)MCIWndSM(hWnd,MCIWNDM_CAN_CONFIG,0,0)
+#define MCIWndPaletteKick(hWnd) (BOOL)MCIWndSM(hWnd,MCIWNDM_PALETTEKICK,0,0)
+#define MCIWndSave(hWnd,szFile) (LONG)MCIWndSM(hWnd,MCI_SAVE,0,(LPARAM)(LPVOID)(szFile))
+#define MCIWndSaveDialog(hWnd) MCIWndSave(hWnd,-1)
+#define MCIWndNew(hWnd,lp) (LONG)MCIWndSM(hWnd,MCIWNDM_NEW,0,(LPARAM)(LPVOID)(lp))
+#define MCIWndRecord(hWnd) (LONG)MCIWndSM(hWnd,MCI_RECORD,0,0)
+#define MCIWndOpen(hWnd,sz,f) (LONG)MCIWndSM(hWnd,MCIWNDM_OPEN,(WPARAM)(UINT)(f),(LPARAM)(LPVOID)(sz))
+#define MCIWndOpenDialog(hWnd) MCIWndOpen(hWnd,-1,0)
+#define MCIWndClose(hWnd) (LONG)MCIWndSM(hWnd,MCI_CLOSE,0,0)
+#define MCIWndPlay(hWnd) (LONG)MCIWndSM(hWnd,MCI_PLAY,0,0)
+#define MCIWndStop(hWnd) (LONG)MCIWndSM(hWnd,MCI_STOP,0,0)
+#define MCIWndPause(hWnd) (LONG)MCIWndSM(hWnd,MCI_PAUSE,0,0)
+#define MCIWndResume(hWnd) (LONG)MCIWndSM(hWnd,MCI_RESUME,0,0)
+#define MCIWndSeek(hWnd,lPos) (LONG)MCIWndSM(hWnd,MCI_SEEK,0,(LPARAM)(LONG)(lPos))
+#define MCIWndEject(hWnd) (LONG)MCIWndSM(hWnd,MCIWNDM_EJECT,0,0)
+#define MCIWndHome(hWnd) MCIWndSeek(hWnd,MCIWND_START)
+#define MCIWndEnd(hWnd) MCIWndSeek(hWnd,MCIWND_END)
+#define MCIWndGetSource(hWnd,prc) (LONG)MCIWndSM(hWnd,MCIWNDM_GET_SOURCE,0,(LPARAM)(LPRECT)(prc))
+#define MCIWndPutSource(hWnd,prc) (LONG)MCIWndSM(hWnd,MCIWNDM_PUT_SOURCE,0,(LPARAM)(LPRECT)(prc))
+#define MCIWndGetDest(hWnd,prc) (LONG)MCIWndSM(hWnd,MCIWNDM_GET_DEST,0,(LPARAM)(LPRECT)(prc))
+#define MCIWndPutDest(hWnd,prc) (LONG)MCIWndSM(hWnd,MCIWNDM_PUT_DEST,0,(LPARAM)(LPRECT)(prc))
+#define MCIWndPlayReverse(hWnd) (LONG)MCIWndSM(hWnd,MCIWNDM_PLAYREVERSE,0,0)
+#define MCIWndPlayFrom(hWnd,lPos) (LONG)MCIWndSM(hWnd,MCIWNDM_PLAYFROM,0,(LPARAM)(LONG)(lPos))
+#define MCIWndPlayTo(hWnd,lPos) (LONG)MCIWndSM(hWnd,MCIWNDM_PLAYTO,  0,(LPARAM)(LONG)(lPos))
+#define MCIWndPlayFromTo(hWnd,lStart,lEnd) (MCIWndSeek(hWnd,lStart),MCIWndPlayTo(hWnd,lEnd))
+#define MCIWndGetDeviceID(hWnd) (UINT)MCIWndSM(hWnd,MCIWNDM_GETDEVICEID,0,0)
+#define MCIWndGetAlias(hWnd) (UINT)MCIWndSM(hWnd,MCIWNDM_GETALIAS,0,0)
+#define MCIWndGetMode(hWnd,lp,len) (LONG)MCIWndSM(hWnd,MCIWNDM_GETMODE,(WPARAM)(UINT)(len),(LPARAM)(LPTSTR)(lp))
+#define MCIWndGetPosition(hWnd) (LONG)MCIWndSM(hWnd,MCIWNDM_GETPOSITION,0,0)
+#define MCIWndGetPositionString(hWnd,lp,len) (LONG)MCIWndSM(hWnd,MCIWNDM_GETPOSITION,(WPARAM)(UINT)(len),(LPARAM)(LPTSTR)(lp))
+#define MCIWndGetStart(hWnd) (LONG)MCIWndSM(hWnd,MCIWNDM_GETSTART,0,0)
+#define MCIWndGetLength(hWnd) (LONG)MCIWndSM(hWnd,MCIWNDM_GETLENGTH,0,0)
+#define MCIWndGetEnd(hWnd) (LONG)MCIWndSM(hWnd,MCIWNDM_GETEND,0,0)
+#define MCIWndStep(hWnd,n) (LONG)MCIWndSM(hWnd,MCI_STEP,0,(LPARAM)(long)(n))
+#define MCIWndDestroy(hWnd) (VOID)MCIWndSM(hWnd,WM_CLOSE,0,0)
+#define MCIWndSetZoom(hWnd,iZoom) (VOID)MCIWndSM(hWnd,MCIWNDM_SETZOOM,0,(LPARAM)(UINT)(iZoom))
+#define MCIWndGetZoom(hWnd) (UINT)MCIWndSM(hWnd,MCIWNDM_GETZOOM,0,0)
+#define MCIWndSetVolume(hWnd,iVol) (LONG)MCIWndSM(hWnd,MCIWNDM_SETVOLUME,0,(LPARAM)(UINT)(iVol))
+#define MCIWndGetVolume(hWnd) (LONG)MCIWndSM(hWnd,MCIWNDM_GETVOLUME,0,0)
+#define MCIWndSetSpeed(hWnd,iSpeed) (LONG)MCIWndSM(hWnd,MCIWNDM_SETSPEED,0,(LPARAM)(UINT)(iSpeed))
+#define MCIWndGetSpeed(hWnd) (LONG)MCIWndSM(hWnd,MCIWNDM_GETSPEED,0,0)
+#define MCIWndSetTimeFormat(hWnd,lp) (LONG)MCIWndSM(hWnd,MCIWNDM_SETTIMEFORMAT,0,(LPARAM)(LPTSTR)(lp))
+#define MCIWndGetTimeFormat(hWnd,lp,len) (LONG)MCIWndSM(hWnd,MCIWNDM_GETTIMEFORMAT,(WPARAM)(UINT)(len),(LPARAM)(LPTSTR)(lp))
+#define MCIWndValidateMedia(hWnd) (VOID)MCIWndSM(hWnd,MCIWNDM_VALIDATEMEDIA,0,0)
+#define MCIWndSetRepeat(hWnd,f) (void)MCIWndSM(hWnd,MCIWNDM_SETREPEAT,0,(LPARAM)(BOOL)(f))
+#define MCIWndGetRepeat(hWnd) (BOOL)MCIWndSM(hWnd,MCIWNDM_GETREPEAT,0,0)
+#define MCIWndUseFrames(hWnd) MCIWndSetTimeFormat(hWnd,TEXT("frames"))
+#define MCIWndUseTime(hWnd) MCIWndSetTimeFormat(hWnd,TEXT("ms"))
+#define MCIWndSetActiveTimer(hWnd,active) (VOID)MCIWndSM(hWnd,MCIWNDM_SETACTIVETIMER,(WPARAM)(UINT)(active),0L)
+#define MCIWndSetInactiveTimer(hWnd,inactive) (VOID)MCIWndSM(hWnd,MCIWNDM_SETINACTIVETIMER,(WPARAM)(UINT)(inactive),0L)
+#define MCIWndSetTimers(hWnd,active,inactive) (VOID)MCIWndSM(hWnd,MCIWNDM_SETTIMERS,(WPARAM)(UINT)(active),(LPARAM)(UINT)(inactive))
+#define MCIWndGetActiveTimer(hWnd) (UINT)MCIWndSM(hWnd,MCIWNDM_GETACTIVETIMER,0,0L);
+#define MCIWndGetInactiveTimer(hWnd) (UINT)MCIWndSM(hWnd,MCIWNDM_GETINACTIVETIMER,0,0L);
+#define MCIWndRealize(hWnd,fBkgnd) (LONG)MCIWndSM(hWnd,MCIWNDM_REALIZE,(WPARAM)(BOOL)(fBkgnd),0)
+#define MCIWndSendString(hWnd,sz) (LONG)MCIWndSM(hWnd,MCIWNDM_SENDSTRING,0,(LPARAM)(LPTSTR)(sz))
+#define MCIWndReturnString(hWnd,lp,len) (LONG)MCIWndSM(hWnd,MCIWNDM_RETURNSTRING,(WPARAM)(UINT)(len),(LPARAM)(LPVOID)(lp))
+#define MCIWndGetError(hWnd,lp,len) (LONG)MCIWndSM(hWnd,MCIWNDM_GETERROR,(WPARAM)(UINT)(len),(LPARAM)(LPVOID)(lp))
+#define MCIWndGetPalette(hWnd) (HPALETTE)MCIWndSM(hWnd,MCIWNDM_GETPALETTE,0,0)
+#define MCIWndSetPalette(hWnd,hpal) (LONG)MCIWndSM(hWnd,MCIWNDM_SETPALETTE,(WPARAM)(HPALETTE)(hpal),0)
+#define MCIWndGetFileName(hWnd,lp,len) (LONG)MCIWndSM(hWnd,MCIWNDM_GETFILENAME,(WPARAM)(UINT)(len),(LPARAM)(LPVOID)(lp))
+#define MCIWndGetDevice(hWnd,lp,len) (LONG)MCIWndSM(hWnd,MCIWNDM_GETDEVICE,(WPARAM)(UINT)(len),(LPARAM)(LPVOID)(lp))
+#define MCIWndGetStyles(hWnd) (UINT)MCIWndSM(hWnd,MCIWNDM_GETSTYLES,0,0L)
+#define MCIWndChangeStyles(hWnd,mask,value) (LONG)MCIWndSM(hWnd,MCIWNDM_CHANGESTYLES,(WPARAM)(UINT)(mask),(LPARAM)(LONG)(value))
+#define MCIWndOpenInterface(hWnd,pUnk) (LONG)MCIWndSM(hWnd,MCIWNDM_OPENINTERFACE,0,(LPARAM)(LPUNKNOWN)(pUnk))
+#define MCIWndSetOwner(hWnd,hWndP) (LONG)MCIWndSM(hWnd,MCIWNDM_SETOWNER,(WPARAM)(hWndP),0)
+#define DrawDibUpdate(hdd,hdc,x,y) DrawDibDraw(hdd,hdc,x,y,0,0,NULL,NULL,0,0,0,0,DDF_UPDATE)
+static __inline DWORD
+ICGetDefaultQuality(HIC hic)
+{
+   DWORD dwICValue;
+   ICSendMessage(hic, ICM_GETDEFAULTQUALITY, (DWORD)(LPVOID)&dwICValue, sizeof(DWORD));
+   return dwICValue;
+}
+static __inline DWORD
+ICGetDefaultKeyFrameRate(HIC hic)
+{
+   DWORD dwICValue;
+   ICSendMessage(hic, ICM_GETDEFAULTKEYFRAMERATE, (DWORD)(LPVOID)&dwICValue, sizeof(DWORD));
+   return dwICValue;
+}
+static __inline LRESULT
+ICDrawSuggestFormat(HIC hic,LPBITMAPINFOHEADER lpbiIn,LPBITMAPINFOHEADER lpbiOut,INT dxSrc,INT dySrc,INT dxDst,INT dyDst,HIC hicDecomp)
+{
+	ICDRAWSUGGEST ic;
+	ic.lpbiIn = lpbiIn;
+	ic.lpbiSuggest = lpbiOut;
+	ic.dxSrc = dxSrc;
+	ic.dySrc = dySrc;
+	ic.dxDst = dxDst;
+	ic.dyDst = dyDst;
+	ic.hicDecompressor = hicDecomp;
+	return ICSendMessage(hic,ICM_DRAW_SUGGESTFORMAT,(DWORD)&ic,sizeof(ic));
+}
+static __inline LRESULT
+ICSetStatusProc(HIC hic,DWORD dwFlags,LRESULT lParam,LONG (CALLBACK *fpfnStatus)(LPARAM,UINT,LONG))
+{
+	ICSETSTATUSPROC ic;
+	ic.dwFlags = dwFlags;
+	ic.lParam = lParam;
+	ic.Status = fpfnStatus;
+	return ICSendMessage(hic,ICM_SET_STATUS_PROC,(DWORD)&ic,sizeof(ic));
+}
+static __inline LRESULT
+ICDecompressEx(HIC hic,DWORD dwFlags,LPBITMAPINFOHEADER lpbiSrc,LPVOID lpSrc,INT xSrc,INT ySrc,INT dxSrc,INT dySrc,LPBITMAPINFOHEADER lpbiDst,LPVOID lpDst,INT xDst,INT yDst,INT dxDst,INT dyDst)
+{
+	ICDECOMPRESSEX ic;
+	ic.dwFlags = dwFlags;
+	ic.lpbiSrc = lpbiSrc;
+	ic.lpSrc = lpSrc;
+	ic.xSrc = xSrc;
+	ic.ySrc = ySrc;
+	ic.dxSrc = dxSrc;
+	ic.dySrc = dySrc;
+	ic.lpbiDst = lpbiDst;
+	ic.lpDst = lpDst;
+	ic.xDst = xDst;
+	ic.yDst = yDst;
+	ic.dxDst = dxDst;
+	ic.dyDst = dyDst;
+	return ICSendMessage(hic,ICM_DECOMPRESSEX,(DWORD)&ic,sizeof(ic));
+}
+static __inline LRESULT
+ICDecompressExBegin(HIC hic,DWORD dwFlags,LPBITMAPINFOHEADER lpbiSrc,LPVOID lpSrc,INT xSrc,INT ySrc,INT dxSrc,INT dySrc,LPBITMAPINFOHEADER lpbiDst,LPVOID lpDst,INT xDst,INT yDst,INT dxDst,INT dyDst)
+{
+	ICDECOMPRESSEX ic;
+	ic.dwFlags = dwFlags;
+	ic.lpbiSrc = lpbiSrc;
+	ic.lpSrc = lpSrc;
+	ic.xSrc = xSrc;
+	ic.ySrc = ySrc;
+	ic.dxSrc = dxSrc;
+	ic.dySrc = dySrc;
+	ic.lpbiDst = lpbiDst;
+	ic.lpDst = lpDst;
+	ic.xDst = xDst;
+	ic.yDst = yDst;
+	ic.dxDst = dxDst;
+	ic.dyDst = dyDst;
+	return ICSendMessage(hic,ICM_DECOMPRESSEX_BEGIN,(DWORD)&ic,sizeof(ic));
+}
+static __inline LRESULT
+ICDecompressExQuery(HIC hic,DWORD dwFlags,LPBITMAPINFOHEADER lpbiSrc,LPVOID lpSrc,INT xSrc,INT ySrc,INT dxSrc,INT dySrc,LPBITMAPINFOHEADER lpbiDst,LPVOID lpDst,INT xDst,INT yDst,INT dxDst,INT dyDst)
+{
+	ICDECOMPRESSEX ic;
+	ic.dwFlags = dwFlags;
+	ic.lpbiSrc = lpbiSrc;
+	ic.lpSrc = lpSrc;
+	ic.xSrc = xSrc;
+	ic.ySrc = ySrc;
+	ic.dxSrc = dxSrc;
+	ic.dySrc = dySrc;
+	ic.lpbiDst = lpbiDst;
+	ic.lpDst = lpDst;
+	ic.xDst = xDst;
+	ic.yDst = yDst;
+	ic.dxDst = dxDst;
+	ic.dyDst = dyDst;
+	return ICSendMessage(hic,ICM_DECOMPRESSEX_QUERY,(DWORD)&ic,sizeof(ic));
+}
+
+#define WM_CAP_SET_CALLBACK_ERRORA      (WM_USER + 2)
+#define WM_CAP_SET_CALLBACK_ERRORW      (WM_CAP_SET_CALLBACK_ERRORA + 100)
+#define WM_CAP_SET_CALLBACK_STATUS      (WM_USER + 3)
+#define WM_CAP_SET_CALLBACK_YIELD       (WM_USER + 4)
+#define WM_CAP_SET_CALLBACK_FRAMEA      (WM_USER + 5)
+#define WM_CAP_SET_CALLBACK_FRAMEW      (WM_CAP_SET_CALLBACK_FRAMEA + 100)
+#define WM_CAP_SET_CALLBACK_VIDEOSTREAM (WM_USER + 6)
+#define WM_CAP_SET_CALLBACK_WAVESTREAM  (WM_USER + 7)
+#define WM_CAP_GET_USER_DATA            (WM_USER + 8)
+#define WM_CAP_SET_USER_DATA            (WM_USER + 9)
+#define WM_CAP_DRIVER_CONNECT           (WM_USER + 10)
+#define WM_CAP_DRIVER_DISCONNECT        (WM_USER + 11)
+#define WM_CAP_DRIVER_GET_NAMEA         (WM_USER + 12)
+#define WM_CAP_DRIVER_GET_NAMEW         (WM_CAP_DRIVER_GET_NAMEA + 100)
+#define WM_CAP_DRIVER_GET_VERSIONA      (WM_USER + 13)
+#define WM_CAP_DRIVER_GET_VERSIONW      (WM_CAP_DRIVER_GET_VERSIONA + 100)
+#define WM_CAP_DRIVER_GET_CAPS          (WM_USER + 14)
+#define WM_CAP_FILE_SET_CAPTURE_FILEA   (WM_USER + 20)
+#define WM_CAP_FILE_SET_CAPTURE_FILEW   (WM_CAP_FILE_SET_CAPTURE_FILEA + 100)
+#define WM_CAP_FILE_GET_CAPTURE_FILEA   (WM_USER + 21)
+#define WM_CAP_FILE_GET_CAPTURE_FILEW   (WM_CAP_FILE_GET_CAPTURE_FILEA + 100)
+#define WM_CAP_FILE_ALLOCATE            (WM_USER + 22)
+#define WM_CAP_FILE_SAVEASA             (WM_USER + 23)
+#define WM_CAP_FILE_SAVEASW             (WM_CAP_FILE_SAVEASA + 100)
+#define WM_CAP_FILE_SET_INFOCHUNK       (WM_USER + 24)
+#define WM_CAP_FILE_SAVEDIBA            (WM_USER + 25)
+#define WM_CAP_FILE_SAVEDIBW            (WM_CAP_FILE_SAVEDIBA + 100)
+#define WM_CAP_EDIT_COPY                (WM_USER + 30)
+#define WM_CAP_SET_AUDIOFORMAT          (WM_USER + 35)
+#define WM_CAP_GET_AUDIOFORMAT          (WM_USER + 36)
+#define WM_CAP_DLG_VIDEOFORMAT          (WM_USER + 41)
+#define WM_CAP_DLG_VIDEOSOURCE          (WM_USER + 42)
+#define WM_CAP_DLG_VIDEODISPLAY         (WM_USER + 43)
+#define WM_CAP_GET_VIDEOFORMAT          (WM_USER + 44)
+#define WM_CAP_SET_VIDEOFORMAT          (WM_USER + 45)
+#define WM_CAP_DLG_VIDEOCOMPRESSION     (WM_USER + 46)
+#define WM_CAP_SET_PREVIEW              (WM_USER + 50)
+#define WM_CAP_SET_OVERLAY              (WM_USER + 51)
+#define WM_CAP_SET_PREVIEWRATE          (WM_USER + 52)
+#define WM_CAP_SET_SCALE                (WM_USER + 53)
+#define WM_CAP_GET_STATUS               (WM_USER + 54)
+#define WM_CAP_SET_SCROLL               (WM_USER + 55)
+#define WM_CAP_GRAB_FRAME               (WM_USER + 60)
+#define WM_CAP_GRAB_FRAME_NOSTOP        (WM_USER + 61)
+#define WM_CAP_SEQUENCE                 (WM_USER + 62)
+#define WM_CAP_SEQUENCE_NOFILE          (WM_USER + 63)
+#define WM_CAP_SET_SEQUENCE_SETUP       (WM_USER + 64)
+#define WM_CAP_GET_SEQUENCE_SETUP       (WM_USER + 65)
+#define WM_CAP_SET_MCI_DEVICEA          (WM_USER + 66)
+#define WM_CAP_SET_MCI_DEVICEW          (WM_CAP_SET_MCI_DEVICEA + 100)
+#define WM_CAP_GET_MCI_DEVICEA          (WM_USER + 67)
+#define WM_CAP_GET_MCI_DEVICEW          (WM_CAP_GET_MCI_DEVICEA + 100)
+#define WM_CAP_STOP                     (WM_USER + 68)
+#define WM_CAP_ABORT                    (WM_USER + 69)
+#define WM_CAP_SINGLE_FRAME_OPEN        (WM_USER + 70)
+#define WM_CAP_SINGLE_FRAME_CLOSE       (WM_USER + 71)
+#define WM_CAP_SINGLE_FRAME             (WM_USER + 72)
+#define WM_CAP_PAL_OPENA                (WM_USER + 80)
+#define WM_CAP_PAL_OPENW                (WM_CAP_PAL_OPENA + 100)
+#define WM_CAP_PAL_SAVEA                (WM_USER + 81)
+#define WM_CAP_PAL_SAVEW                (WM_CAP_PAL_SAVEA + 100)
+#define WM_CAP_PAL_PASTE                (WM_USER + 82)
+#define WM_CAP_PAL_AUTOCREATE           (WM_USER + 83)
+#define WM_CAP_PAL_MANUALCREATE         (WM_USER + 84)
+#define WM_CAP_SET_CALLBACK_CAPCONTROL  (WM_USER + 85)
+
+#ifdef UNICODE
+#define WM_CAP_SET_CALLBACK_ERROR       WM_CAP_SET_CALLBACK_ERRORW
+#define WM_CAP_SET_CALLBACK_FRAME       WM_CAP_SET_CALLBACK_FRAMEW
+#define WM_CAP_DRIVER_GET_NAME          WM_CAP_DRIVER_GET_NAMEW
+#define WM_CAP_DRIVER_GET_VERSION       WM_CAP_DRIVER_GET_VERSIONW
+#define WM_CAP_FILE_SET_CAPTURE_FILE    WM_CAP_FILE_SET_CAPTURE_FILEW
+#define WM_CAP_FILE_GET_CAPTURE_FILE    WM_CAP_FILE_GET_CAPTURE_FILEW
+#define WM_CAP_FILE_SAVEAS              WM_CAP_FILE_SAVEASW
+#define WM_CAP_FILE_SAVEDIB             WM_CAP_FILE_SAVEDIBW
+#define WM_CAP_SET_MCI_DEVICE           WM_CAP_SET_MCI_DEVICEW
+#define WM_CAP_GET_MCI_DEVICE           WM_CAP_GET_MCI_DEVICEW
+#define WM_CAP_PAL_OPEN                 WM_CAP_PAL_OPENW
+#define WM_CAP_PAL_SAVE                 WM_CAP_PAL_SAVEW
+#else
+#define WM_CAP_SET_CALLBACK_ERROR       WM_CAP_SET_CALLBACK_ERRORA
+#define WM_CAP_SET_CALLBACK_FRAME       WM_CAP_SET_CALLBACK_FRAMEA
+#define WM_CAP_DRIVER_GET_NAME          WM_CAP_DRIVER_GET_NAMEA
+#define WM_CAP_DRIVER_GET_VERSION       WM_CAP_DRIVER_GET_VERSIONA
+#define WM_CAP_FILE_SET_CAPTURE_FILE    WM_CAP_FILE_SET_CAPTURE_FILEA
+#define WM_CAP_FILE_GET_CAPTURE_FILE    WM_CAP_FILE_GET_CAPTURE_FILEA
+#define WM_CAP_FILE_SAVEAS              WM_CAP_FILE_SAVEASA
+#define WM_CAP_FILE_SAVEDIB             WM_CAP_FILE_SAVEDIBA
+#define WM_CAP_SET_MCI_DEVICE           WM_CAP_SET_MCI_DEVICEA
+#define WM_CAP_GET_MCI_DEVICE           WM_CAP_GET_MCI_DEVICEA
+#define WM_CAP_PAL_OPEN                 WM_CAP_PAL_OPENA
+#define WM_CAP_PAL_SAVE                 WM_CAP_PAL_SAVEA
+#endif
+
+#define __capSendMessage(hwnd,m,w,l) (IsWindow(hwnd)?SendMessage(hwnd,m,w,l):0)
+
+#define capSetCallbackOnError(hwnd,fpProc)          ((BOOL) __capSendMessage(hwnd,WM_CAP_SET_CALLBACK_ERROR,0,(LPARAM)(LPVOID)(fpProc)))
+#define capSetCallbackOnStatus(hwnd,fpProc)         ((BOOL) __capSendMessage(hwnd,WM_CAP_SET_CALLBACK_STATUS,0,(LPARAM)(LPVOID)(fpProc)))
+#define capSetCallbackOnYield(hwnd,fpProc)          ((BOOL) __capSendMessage(hwnd,WM_CAP_SET_CALLBACK_YIELD,0,(LPARAM)(LPVOID)(fpProc)))
+#define capSetCallbackOnFrame(hwnd,fpProc)          ((BOOL) __capSendMessage(hwnd,WM_CAP_SET_CALLBACK_FRAME,0,(LPARAM)(LPVOID)(fpProc)))
+#define capSetCallbackOnVideoStream(hwnd,fpProc)    ((BOOL) __capSendMessage(hwnd,WM_CAP_SET_CALLBACK_VIDEOSTREAM,0,(LPARAM)(LPVOID)(fpProc)))
+#define capSetCallbackOnWaveStream(hwnd,fpProc)     ((BOOL) __capSendMessage(hwnd,WM_CAP_SET_CALLBACK_WAVESTREAM,0,(LPARAM)(LPVOID)(fpProc)))
+#define capGetUserData(hwnd)                        ((LONG) __capSendMessage(hwnd,WM_CAP_GET_USER_DATA,0,0))
+#define capSetUserData(hwnd,lUser)                  ((BOOL) __capSendMessage(hwnd,WM_CAP_SET_USER_DATA,0,(LPARAM)lUser))
+#define capDriverConnect(hwnd,i)                    ((BOOL) __capSendMessage(hwnd,WM_CAP_DRIVER_CONNECT,(WPARAM)(i),0))
+#define capDriverDisconnect(hwnd)                   ((BOOL) __capSendMessage(hwnd,WM_CAP_DRIVER_DISCONNECT,0,0))
+#define capDriverGetName(hwnd,szName,wSize)         ((BOOL) __capSendMessage(hwnd,WM_CAP_DRIVER_GET_NAME,(WPARAM)(wSize),(LPARAM)(LPVOID)(LPTSTR)(szName)))
+#define capDriverGetVersion(hwnd,szVer,wSize)       ((BOOL) __capSendMessage(hwnd,WM_CAP_DRIVER_GET_VERSION,(WPARAM)(wSize),(LPARAM)(LPVOID)(LPTSTR)(szVer)))
+#define capDriverGetCaps(hwnd,psCaps,wSize)         ((BOOL) __capSendMessage(hwnd,WM_CAP_DRIVER_GET_CAPS,(WPARAM)(wSize),(LPARAM)(LPVOID)(LPCAPDRIVERCAPS)(psCaps)))
+#define capFileSetCaptureFile(hwnd,szName)          ((BOOL) __capSendMessage(hwnd,WM_CAP_FILE_SET_CAPTURE_FILE,0,(LPARAM)(LPVOID)(LPTSTR)(szName)))
+#define capFileGetCaptureFile(hwnd,szName,wSize)    ((BOOL) __capSendMessage(hwnd,WM_CAP_FILE_GET_CAPTURE_FILE,(WPARAM)(wSize), (LPARAM)(LPVOID)(LPTSTR)(szName)))
+#define capFileAlloc(hwnd,dwSize)                   ((BOOL) __capSendMessage(hwnd,WM_CAP_FILE_ALLOCATE,0,(LPARAM)(DWORD)(dwSize)))
+#define capFileSaveAs(hwnd,szName)                  ((BOOL) __capSendMessage(hwnd,WM_CAP_FILE_SAVEAS,0,(LPARAM)(LPVOID)(LPTSTR)(szName)))
+#define capFileSetInfoChunk(hwnd,lpInfoChunk)       ((BOOL) __capSendMessage(hwnd,WM_CAP_FILE_SET_INFOCHUNK,0,(LPARAM)(LPCAPINFOCHUNK)(lpInfoChunk)))
+#define capFileSaveDIB(hwnd, szName)                ((BOOL) __capSendMessage(hwnd,WM_CAP_FILE_SAVEDIB,0,(LPARAM)(LPVOID)(LPTSTR)(szName)))
+#define capEditCopy(hwnd)                           ((BOOL) __capSendMessage(hwnd,WM_CAP_EDIT_COPY,0,0))
+#define capSetAudioFormat(hwnd,psAudioFormat,wSize) ((BOOL) __capSendMessage(hwnd,WM_CAP_SET_AUDIOFORMAT,(WPARAM)(wSize),(LPARAM)(LPVOID)(LPWAVEFORMATEX)(psAudioFormat)))
+#define capGetAudioFormat(hwnd,psAudioFormat,wSize) ((DWORD)__capSendMessage(hwnd,WM_CAP_GET_AUDIOFORMAT,(WPARAM)(wSize),(LPARAM)(LPVOID)(LPWAVEFORMATEX)(psAudioFormat)))
+#define capGetAudioFormatSize(hwnd)                 ((DWORD)__capSendMessage(hwnd,WM_CAP_GET_AUDIOFORMAT,0,0))
+#define capDlgVideoFormat(hwnd)                     ((BOOL) __capSendMessage(hwnd,WM_CAP_DLG_VIDEOFORMAT,0,0))
+#define capDlgVideoSource(hwnd)                     ((BOOL) __capSendMessage(hwnd,WM_CAP_DLG_VIDEOSOURCE,0,0))
+#define capDlgVideoDisplay(hwnd)                    ((BOOL) __capSendMessage(hwnd,WM_CAP_DLG_VIDEODISPLAY,0,0))
+#define capGetVideoFormat(hwnd,psVideoFormat,wSize) ((DWORD)__capSendMessage(hwnd,WM_CAP_GET_VIDEOFORMAT,(WPARAM)(wSize),(LPARAM)(LPVOID)(psVideoFormat)))
+#define capGetVideoFormatSize(hwnd)                 ((DWORD)__capSendMessage(hwnd,WM_CAP_GET_VIDEOFORMAT,0,0))
+#define capSetVideoFormat(hwnd,psVideoFormat,wSize) ((BOOL) __capSendMessage(hwnd,WM_CAP_SET_VIDEOFORMAT,(WPARAM)(wSize),(LPARAM)(LPVOID)(psVideoFormat)))
+#define capDlgVideoCompression(hwnd)                ((BOOL) __capSendMessage(hwnd,WM_CAP_DLG_VIDEOCOMPRESSION,0,0))
+#define capPreview(hwnd,f)                          ((BOOL) __capSendMessage(hwnd,WM_CAP_SET_PREVIEW,(WPARAM)(BOOL)(f),0))
+#define capOverlay(hwnd,f)                          ((BOOL) __capSendMessage(hwnd,WM_CAP_SET_OVERLAY,(WPARAM)(BOOL)(f),0))
+#define capPreviewRate(hwnd,wMS)                    ((BOOL) __capSendMessage(hwnd,WM_CAP_SET_PREVIEWRATE,(WPARAM)(wMS),0))
+#define capPreviewScale(hwnd,f)                     ((BOOL) __capSendMessage(hwnd,WM_CAP_SET_SCALE,(WPARAM)(BOOL)f,0))
+#define capGetStatus(hwnd,s,wSize)                  ((BOOL) __capSendMessage(hwnd,WM_CAP_GET_STATUS,(WPARAM)(wSize),(LPARAM)(LPVOID)(LPCAPSTATUS)(s)))
+#define capSetScrollPos(hwnd,lpP)                   ((BOOL) __capSendMessage(hwnd,WM_CAP_SET_SCROLL,0,(LPARAM)(LPPOINT)(lpP)))
+#define capGrabFrame(hwnd)                          ((BOOL) __capSendMessage(hwnd,WM_CAP_GRAB_FRAME,0,0))
+#define capGrabFrameNoStop(hwnd)                    ((BOOL) __capSendMessage(hwnd,WM_CAP_GRAB_FRAME_NOSTOP,0,0))
+#define capCaptureSequence(hwnd)                    ((BOOL) __capSendMessage(hwnd,WM_CAP_SEQUENCE,0,0))
+#define capCaptureSequenceNoFile(hwnd)              ((BOOL) __capSendMessage(hwnd,WM_CAP_SEQUENCE_NOFILE,0,0))
+#define capCaptureSetSetup(hwnd,s,wSize)            ((BOOL) __capSendMessage(hwnd,WM_CAP_SET_SEQUENCE_SETUP,(WPARAM)(wSize),(LPARAM)(LPVOID)(LPCAPTUREPARMS)(s)))
+#define capCaptureGetSetup(hwnd,s,wSize)            ((BOOL) __capSendMessage(hwnd,WM_CAP_GET_SEQUENCE_SETUP,(WPARAM)(wSize),(LPARAM)(LPVOID)(LPCAPTUREPARMS)(s)))
+#define capSetMCIDeviceName(hwnd,szName)            ((BOOL) __capSendMessage(hwnd,WM_CAP_SET_MCI_DEVICE,0,(LPARAM)(LPVOID)(LPTSTR)(szName)))
+#define capGetMCIDeviceName(hwnd,szName,wSize)      ((BOOL) __capSendMessage(hwnd,WM_CAP_GET_MCI_DEVICE,(WPARAM)(wSize),(LPARAM)(LPVOID)(LPTSTR)(szName)))
+#define capCaptureStop(hwnd)                        ((BOOL) __capSendMessage(hwnd,WM_CAP_STOP,0,0))
+#define capCaptureAbort(hwnd)                       ((BOOL) __capSendMessage(hwnd,WM_CAP_ABORT,0,0))
+#define capCaptureSingleFrameOpen(hwnd)             ((BOOL) __capSendMessage(hwnd,WM_CAP_SINGLE_FRAME_OPEN,0,0))
+#define capCaptureSingleFrameClose(hwnd)            ((BOOL) __capSendMessage(hwnd,WM_CAP_SINGLE_FRAME_CLOSE,0,0))
+#define capCaptureSingleFrame(hwnd)                 ((BOOL) __capSendMessage(hwnd,WM_CAP_SINGLE_FRAME,0,0))
+#define capPaletteOpen(hwnd,szName)                 ((BOOL) __capSendMessage(hwnd,WM_CAP_PAL_OPEN,0,(LPARAM)(LPVOID)(LPTSTR)(szName)))
+#define capPaletteSave(hwnd,szName)                 ((BOOL) __capSendMessage(hwnd,WM_CAP_PAL_SAVE,0,(LPARAM)(LPVOID)(LPTSTR)(szName)))
+#define capPalettePaste(hwnd)                       ((BOOL) __capSendMessage(hwnd,WM_CAP_PAL_PASTE,0,0))
+#define capPaletteAuto(hwnd,iFrames,iColors)        ((BOOL) __capSendMessage(hwnd,WM_CAP_PAL_AUTOCREATE,(WPARAM)(iFrames),(LPARAM)(DWORD)(iColors)))
+#define capPaletteManual(hwnd,fGrab,iColors)        ((BOOL) __capSendMessage(hwnd,WM_CAP_PAL_MANUALCREATE,(WPARAM)(fGrab),(LPARAM)(DWORD)(iColors)))
+#define capSetCallbackOnCapControl(hwnd,fpProc)     ((BOOL) __capSendMessage(hwnd,WM_CAP_SET_CALLBACK_CAPCONTROL,0,(LPARAM)(LPVOID)(fpProc)))
+
+/* AVICAP32 exports */
+HWND VFWAPI capCreateCaptureWindowA (LPCSTR,DWORD,int,int,int,int,HWND,int);
+HWND VFWAPI capCreateCaptureWindowW (LPCWSTR,DWORD,int,int,int,int,HWND,int);
+BOOL VFWAPI capGetDriverDescriptionA (UINT,LPSTR,int,LPSTR,int);
+BOOL VFWAPI capGetDriverDescriptionW (UINT,LPWSTR,int,LPWSTR,int);
+
+#ifdef UNICODE
+#define AVISTREAMINFO AVISTREAMINFOW
+#define LPAVISTREAMINFO LPAVISTREAMINFOW
+#define PAVISTREAMINFO PAVISTREAMINFOW
+#define AVIFILEINFO AVIFILEINFOW
+#define PAVIFILEINFO PAVIFILEINFOW
+#define LPAVIFILEINFO LPAVIFILEINFOW
+#define AVIStreamInfo AVIStreamInfoW
+#define AVIStreamOpenFromFile AVIStreamOpenFromFileW
+#define AVIBuildFilter AVIBuildFilterW
+#define AVISaveV AVISaveVW
+#define EditStreamSetInfo EditStreamSetInfoW
+#define EditStreamSetName EditStreamSetNameW
+#define AVIFileOpen AVIFileOpenW
+#define AVIFileInfo AVIFileInfoW
+#define AVIFileCreateStream AVIFileCreateStreamW
+#define GetOpenFileNamePreview GetOpenFileNamePreviewW
+#define GetSaveFileNamePreview GetSaveFileNamePreviewW
+#define MCIWndCreate MCIWndCreateW
+#define MCIWNDF_NOTIFYMEDIA MCIWNDF_NOTIFYMEDIAW
+#define MCIWNDM_SENDSTRING MCIWNDM_SENDSTRINGW
+#define MCIWNDM_GETPOSITION MCIWNDM_GETPOSITIONW
+#define MCIWNDM_GETMODE MCIWNDM_GETMODEW
+#define MCIWNDM_SETTIMEFORMAT MCIWNDM_SETTIMEFORMATW
+#define MCIWNDM_GETTIMEFORMAT MCIWNDM_GETTIMEFORMATW
+#define MCIWNDM_GETFILENAME MCIWNDM_GETFILENAMEW
+#define MCIWNDM_GETDEVICE MCIWNDM_GETDEVICEW
+#define MCIWNDM_GETERROR MCIWNDM_GETERRORW
+#define MCIWNDM_NEW MCIWNDM_NEWW
+#define MCIWNDM_RETURNSTRING MCIWNDM_RETURNSTRINGW
+#define MCIWNDM_OPEN MCIWNDM_OPENW
+
+#define capCreateCaptureWindow  capCreateCaptureWindowW
+#define capGetDriverDescription capGetDriverDescriptionW
+
+#else
+#define AVISTREAMINFO AVISTREAMINFOA
+#define LPAVISTREAMINFO LPAVISTREAMINFOA
+#define PAVISTREAMINFO PAVISTREAMINFOA
+#define AVIFILEINFO AVIFILEINFOA
+#define PAVIFILEINFO PAVIFILEINFOA
+#define LPAVIFILEINFO LPAVIFILEINFOA
+#define AVIStreamInfo AVIStreamInfoA
+#define AVIStreamOpenFromFile AVIStreamOpenFromFileA
+#define AVIBuildFilter AVIBuildFilterA
+#define AVISaveV AVISaveVA
+#define EditStreamSetInfo EditStreamSetInfoA
+#define EditStreamSetName EditStreamSetNameA
+#define AVIFileOpen AVIFileOpenA
+#define AVIFileInfo AVIFileInfoA
+#define AVIFileCreateStream AVIFileCreateStreamA
+#define GetOpenFileNamePreview GetOpenFileNamePreviewA
+#define GetSaveFileNamePreview GetSaveFileNamePreviewA
+#define MCIWndCreate MCIWndCreateA
+#define MCIWNDF_NOTIFYMEDIA MCIWNDF_NOTIFYMEDIAA
+#define MCIWNDM_SENDSTRING MCIWNDM_SENDSTRINGA
+#define MCIWNDM_GETPOSITION MCIWNDM_GETPOSITIONA
+#define MCIWNDM_GETMODE MCIWNDM_GETMODEA
+#define MCIWNDM_SETTIMEFORMAT MCIWNDM_SETTIMEFORMATA
+#define MCIWNDM_GETTIMEFORMAT MCIWNDM_GETTIMEFORMATA
+#define MCIWNDM_GETFILENAME MCIWNDM_GETFILENAMEA
+#define MCIWNDM_GETDEVICE MCIWNDM_GETDEVICEA
+#define MCIWNDM_GETERROR MCIWNDM_GETERRORA
+#define MCIWNDM_NEW MCIWNDM_NEWA
+#define MCIWNDM_RETURNSTRING MCIWNDM_RETURNSTRINGA
+#define MCIWNDM_OPEN MCIWNDM_OPENA
+
+#define capCreateCaptureWindow  capCreateCaptureWindowA
+#define capGetDriverDescription capGetDriverDescriptionA
+
+#endif
+
+#endif /* RC_INVOKED */
+
+#ifdef __cplusplus
+}
+#endif
+#include <poppack.h>
+#endif /* _VFW_H */
Index: Daodan/MinGW/include/vidcap.h
===================================================================
--- Daodan/MinGW/include/vidcap.h	(revision 1046)
+++ Daodan/MinGW/include/vidcap.h	(revision 1046)
@@ -0,0 +1,23 @@
+#ifndef _VIDCAP_H
+#define _VIDCAP_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*--- DirectShow Reference - DirectShow Structures */
+typedef struct {
+	ULONG FromNode;
+	ULONG FromNodePin;
+	ULONG ToNode;
+	ULONG ToNodePin;
+} KSTOPOLOGY_CONNECTION;
+#define KSFILTER_NODE 0xFFFFFFFF
+
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/vmr9.h
===================================================================
--- Daodan/MinGW/include/vmr9.h	(revision 1046)
+++ Daodan/MinGW/include/vmr9.h	(revision 1046)
@@ -0,0 +1,211 @@
+#ifndef _VMR9_H
+#define _VMR9_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*--- DirectShow Reference - DirectShow Enumerated Types */
+typedef enum _VMR9_SampleFormat {
+	VMR9_SampleReserved = 1,
+	VMR9_SampleProgressiveFrame = 2,
+	VMR9_SampleFieldInterleavedEvenFirst = 3,
+	VMR9_SampleFieldInterleavedOddFirst = 4,
+	VMR9_SampleFieldSingleEven = 5,
+	VMR9_SampleFieldSingleOdd = 6
+} VMR9_SampleFormat;
+typedef enum {
+	VMR9AlphaBitmap_Disable = 0x00000001,
+	VMR9AlphaBitmap_hDC = 0x00000002,
+	VMR9AlphaBitmap_EntireDDS = 0x00000004,
+	VMR9AlphaBitmap_SrcColorKey = 0x00000008,
+	VMR9AlphaBitmap_SrcRect = 0x00000010,
+	VMR9AlphaBitmap_FilterMode = 0x00000020
+} VMR9AlphaBitmapFlags;
+typedef enum {
+	VMR9ARMode_None,
+	VMR9ARMode_LetterBox
+} VMR9AspectRatioMode;
+typedef enum {
+	DeinterlacePref9_NextBest = 0x01,
+	DeinterlacePref9_BOB = 0x02,
+	DeinterlacePref9_Weave = 0x04,
+	DeinterlacePref9_Mask = 0x07
+} VMR9DeinterlacePrefs;
+typedef enum {
+	DeinterlaceTech9_Unknown = 0x0000,
+	DeinterlaceTech9_BOBLineReplicate = 0x0001,
+	DeinterlaceTech9_BOBVerticalStretch = 0x0002,
+	DeinterlaceTech9_MedianFiltering = 0x0004,
+	DeinterlaceTech9_EdgeFiltering = 0x0010,
+	DeinterlaceTech9_FieldAdaptive = 0x0020,
+	DeinterlaceTech9_PixelAdaptive = 0x0040,
+	DeinterlaceTech9_MotionVectorSteered = 0x0080
+} VMR9DeinterlaceTech;
+typedef enum {
+	MixerPref9_NoDecimation = 0x00000001,
+	MixerPref9_DecimateOutput = 0x00000002,
+	MixerPref9_ARAdjustXorY = 0x00000004,
+	MixerPref9_NonSquareMixing = 0x00000008,
+	MixerPref9_DecimateMask = 0x0000000F,
+	MixerPref9_BiLinearFiltering = 0x00000010,
+	MixerPref9_PointFiltering = 0x00000020,
+	MixerPref9_AnisotropicFiltering = 0x00000040,
+	MixerPref9_PyramidalQuadFiltering = 0x00000080,
+	MixerPref9_GaussianQuadFiltering = 0x00000100,
+	MixerPref9_FilteringReserved = 0x00000E00,
+	MixerPref9_FilteringMask = 0x00000FF0,
+	MixerPref9_RenderTargetRGB = 0x00001000,
+	MixerPref9_RenderTargetYUV = 0x00002000,
+	MixerPref9_RenderTargetReserved = 0x000FC000,
+	MixerPref9_RenderTargetMask = 0x000FF000
+	MixerPref9_DynamicSwitchToBOB = 0x00100000,
+	MixerPref9_DynamicDecimateBy2 = 0x00200000,
+	MixerPref9_DynamicReserved = 0x00C00000,
+	MixerPref9_DynamicMask = 0x00F00000
+} VMR9MixerPrefs;
+typedef enum VMR9Mode {
+	VMR9Mode_Windowed = 0x00000001,
+	VMR9Mode_Windowless = 0x00000002,
+	VMR9Mode_Renderless = 0x00000004,
+	VMR9Mode_Mask = 0x00000007
+};
+typedef enum {
+	VMR9Sample_SyncPoint = 0x00000001,
+	VMR9Sample_Preroll = 0x00000002,
+	VMR9Sample_Discontinuity = 0x00000004,
+	VMR9Sample_TimeValid = 0x00000008
+} VMR9PresentationFlags;
+typedef enum {
+	ProcAmpControl9_Brightness = 0x00000001,
+	ProcAmpControl9_Contrast = 0x00000002,
+	ProcAmpControl9_Hue = 0x00000004,
+	ProcAmpControl9_Saturation = 0x00000008,
+	ProcAmpControl9_Mask = 0x0000000F
+} VMR9ProcAmpControlFlags;
+typedef enum VMR9RenderPrefs {
+	RenderPrefs9_DoNotRenderBorder = 0x00000001,
+	RenderPrefs9_Mask = 0x00000001
+};
+typedef enum {
+	VMR9AllocFlag_3DRenderTarget = 0x0001,
+	VMR9AllocFlag_DXVATarget = 0x0002,
+	VMR9AllocFlag_TextureSurface = 0x0004,
+	VMR9AllocFlag_OffscreenSurface = 0x0008,
+	VMR9AllocFlag_UsageReserved = 0x00F0,
+	VMR9AllocFlag_UsageMask = 0x00FF
+} VMR9SurfaceAllocationFlags;
+/*--- DirectShow Reference - DirectShow Structures */
+/**********
+typedef struct VMR9AllocationInfo{
+	DWORD dwFlags;
+	DWORD dwWidth;
+	DWORD dwHeight;
+	D3DFORMAT Format;
+	D3DPOOL Pool;
+	DWORD MinBuffers;
+	SIZE szAspectRatio;
+	SIZE szNativeSize;
+};
+**********/
+typedef struct _VMR9DeinterlaceCaps {
+	DWORD dwSize;
+	DWORD dwNumPreviousOutputFrames;
+	DWORD dwNumForwardRefSamples;
+	DWORD dwNumBackwardRefSamples;
+	VMRDeinterlaceTech DeinterlaceTechnology;
+} VMR9DeinterlaceCaps;
+typedef struct _VMR9Frequency {
+	DWORD dwNumerator;
+	DWORD dwDenominator;
+} VMR9Frequency;
+typedef struct {
+	UINT uDevID;
+	RECT rcMonitor;
+	HMONITOR hMon;
+	DWORD dwFlags;
+	wchar_t szDevice[32];
+	wchar_t szDescription[512]
+	LARGE_INTEGER liDriverVersion;
+	DWORD dwVendorId;
+	DWORD dwDeviceId;
+	DWORD dwSubSysId;
+	DWORD dwRevision;
+} VMR9MonitorInfo;
+typedef struct VMR9NormalizedRect{
+	float left;
+	float top;
+	float right;
+	float bottom;
+};
+/**********
+typedef struct {
+	DWORD dwFlags;
+	IDirect3DSurface9 *lpSurf;
+	REFERENCE_TIME rtStart;
+	REFERENCE_TIME rtEnd;
+	SIZE szAspectRatio;
+	RECT rcSrc;
+	RECT rcDst;
+	DWORD dwReserved1;
+	DWORD dwReserved2;
+} VMR9PresentationInfo;
+**********/
+typedef struct _VMR9ProcAmpControl
+{
+	DWORD dwSize;
+	DWORD dwFlags;
+	float Contrast;
+	float Brightness;
+	float Hue;
+	float Saturation;
+} VMR9ProcAmpControl;
+typedef struct _VMR9ProcAmpControlRange
+{
+	DWORD dwSize;
+	VMR9ProcAmpControlFlags dwProperty;
+	float MinValue;
+	float MaxValue;
+	float DefaultValue;
+	float StepSize;
+} VMR9ProcAmpControlRange;
+typedef struct _VMR9VideoDesc {
+	DWORD dwSize;
+	DWORD dwSampleWidth;
+	DWORD dwSampleHeight;
+	VMR9_SampleFormat SampleFormat;
+	DWORD dwFourCC;
+	VMR9Frequency InputSampleFreq;
+	VMR9Frequency OutputFrameFreq;
+} VMR9VideoDesc;
+/**********
+typedef struct VMR9VideoStreamInfo{
+	IDirect3DSurface9 *pddsVideoSurface;
+	DWORD dwWidth;
+	DWORD dwHeight;
+	DWORD dwStrmID;
+	FLOAT fAlpha;
+	VMR9NormalizedRect rNormal;
+	REFERENCE_TIME rtStart;
+	REFERENCE_TIME rtEnd;
+	VMR9_SampleFormat SampleFormat;
+};
+typedef struct VMR9AlphaBitmap{
+	DWORD dwFlags;
+	HDC hdc;
+	IDirect3DSurface9 *pDDS;
+	RECT rSrc;
+	VMR9NormalizedRect rDest;
+	FLOAT fAlpha;
+	COLORREF clrSrcKey;
+	DWORD dwFilterMode;
+};
+**********/
+
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/vptype.h
===================================================================
--- Daodan/MinGW/include/vptype.h	(revision 1046)
+++ Daodan/MinGW/include/vptype.h	(revision 1046)
@@ -0,0 +1,55 @@
+#ifndef _VPTYPE_H
+#define _VPTYPE_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*--- DirectShow Reference - DirectShow Enumerated Types */
+typedef enum _AMVP_MODE {
+	AMVP_MODE_WEAVE,
+	AMVP_MODE_BOBINTERLEAVED,
+	AMVP_MODE_BOBNONINTERLEAVED,
+	AMVP_MODE_SKIPEVEN,
+	AMVP_MODE_SKIPODD
+} AMVP_MODE;
+typedef enum _AMVP_SELECT_FORMAT_BY {
+	AMVP_DO_NOT_CARE,
+	AMVP_BEST_BANDWIDTH,
+	AMVP_INPUT_SAME_AS_OUTPUT
+} AMVP_SELECT_FORMAT_BY;
+/*--- DirectShow Reference - DirectShow Structures */
+typedef struct _AMVPDIMINFO{
+	DWORD dwFieldWidth;
+	DWORD dwFieldHeight;
+	DWORD dwVBIWidth;
+	DWORD dwVBIHeight;
+	RECT rcValidRegion;
+} AMVPDIMINFO,*LPAMVPDIMINFO;
+typedef struct _AMVPDATAINFO{
+	DWORD dwSize;
+	DWORD dwMicrosecondsPerField;
+	AMVPDIMINFO amvpDimInfo;
+	DWORD dwPictAspectRatioX;
+	DWORD dwPictAspectRatioY;
+	BOOL bEnableDoubleClock;
+	BOOL bEnableVACT;
+	BOOL bDataIsInterlaced;
+	LONG lHalfLinesOdd;
+	BOOL bFieldPolarityInverted;
+	DWORD dwNumLinesInVREF;
+	LONG lHalfLinesEven;
+	DWORD dwReserved1;
+} AMVPDATAINFO,*LPAMVPDATAINFO;
+typedef struct _AMVPSIZE{
+	DWORD dwWidth;
+	DWORD dwHeight;
+} AMVPSIZE,*LPAMVPSIZE;
+
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/w32api.h
===================================================================
--- Daodan/MinGW/include/w32api.h	(revision 1046)
+++ Daodan/MinGW/include/w32api.h	(revision 1046)
@@ -0,0 +1,190 @@
+/*
+ * w32api.h
+ *
+ * Package version identification, operating system support level set up,
+ * and "convenience" macros to be shared by all package header files.
+ *
+ * $Id: w32api.h.in,v 7daa0459f602 2016/05/03 17:40:54 keithmarshall $
+ *
+ * Written by Earnie Boyd  <earnie@users.sourceforge.net>
+ * Copyright (C) 2001-2011, 2015, 2016, MinGW.org Project
+ *
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ *
+ */
+#ifndef _W32API_H
+#define _W32API_H
+#pragma GCC system_header
+
+/* Package version identification: formerly specified as a simple
+ * dotted numeric pair representing major.minor, this doesn't adapt
+ * well to the inclusion of the patch-level, since the dotted triplet
+ * representation of major.minor.patch is not a valid representation
+ * of a numeric entity.  Thus, from version 3.18 onwards we adopt a
+ * representation which encodes the version as a long integer value,
+ * expressing:
+ *
+ *   __W32API_VERSION = 1,000,000 * major + 1,000 * minor + patch
+ *
+ * DO NOT EDIT these package version assignments manually; they are
+ * derived from the package version specification within configure.ac,
+ * whence they are propagated automatically, at package build time.
+ */
+#define __W32API_VERSION           3018001L
+#define __W32API_MAJOR_VERSION           3
+#define __W32API_MINOR_VERSION          18
+#define __W32API_PATCHLEVEL              1
+
+/* The underlying operating system platform version, and its
+ * identifying macros for application support, are established by:
+ */
+#include <sdkddkver.h>
+
+/* The following defines are for documentation purposes.  Although not used
+ * within it, they were provided in earlier versions of the Win32 API, as a
+ * convenience for users who wished to symbolically declare a minimum level
+ * of required operating system and Internet Explorer version support, when
+ * assigning WINVER, _WIN32_WINDOWS, _WIN32_WINNT, and _WIN32_IE values.
+ *
+ * Each of the following "old name" macros is now considered deprecated in
+ * favour of manifest "preferred name" macro definitions from <sdkddkver.h>.
+ * Hence, redefine each in terms of the appropriate "preferred name" macro;
+ * new code should avoid the old names, and use the preferred name instead.
+ *
+ *
+ * _WIN32_WINDOWS and/or WINVER may be set to any of the following manifest
+ * values, to specify a minimum Win9x support level requirement:
+ *
+ *      Old Name	Preferred Name
+ *      -------------	------------------
+ */
+#define Windows95	_WIN32_WINDOWS_95
+#define Windows98	_WIN32_WINDOWS_98
+#define WindowsME	_WIN32_WINDOWS_ME
+
+/* _WIN32_WINNT and/or WINVER may be set to any of the following manifest
+ * values, to specify a minimum WinNT support level requirement:
+ *
+ *      Old Name	Preferred Name
+ *      -------------	------------------
+ */
+#define WindowsNT4	_WIN32_WINNT_NT4
+#define Windows2000	_WIN32_WINNT_WIN2K
+#define WindowsXP	_WIN32_WINNT_WINXP
+#define Windows2003	_WIN32_WINNT_WS03
+#define WindowsVista	_WIN32_WINNT_VISTA
+
+/* _WIN32_IE may be set to any of the following manifest values, to
+ * specify a minimum Internet Explorer support level requirement:
+ *
+ *      Old Name	Preferred Name
+ *      -------------	------------------
+ */
+#define IE3		_WIN32_IE_IE30
+#define IE301		_WIN32_IE_IE301
+#define IE302		_WIN32_IE_IE302
+#define IE4		_WIN32_IE_IE40
+#define IE401		_WIN32_IE_IE401
+#define IE5		_WIN32_IE_IE50
+#define IE5a		_WIN32_IE_IE50
+#define IE5b		_WIN32_IE_IE50
+#define IE501		_WIN32_IE_IE501
+#define IE55		_WIN32_IE_IE55
+#define IE56		_WIN32_IE_IE56
+#define IE6		_WIN32_IE_IE60
+#define IE601		_WIN32_IE_IE60SP1
+#define IE602		_WIN32_IE_IE60SP2
+#define IE7		_WIN32_IE_IE70
+
+
+/* Only Microsoft could attempt to justify this insanity: when building
+ * a UTF-16LE application -- apparently their understanding of Unicode is
+ * limited to this -- the C/C++ runtime requires that the user must define
+ * the _UNICODE macro, while to use the Windows API's UTF-16LE capabilities,
+ * it is the UNICODE macro, (without the leading underscore), which must be
+ * defined.  The (bogus) explanation appears to be that it is the C standard
+ * which dictates the requirement for the leading underscore, to avoid any
+ * possible conflict with a user defined symbol; (bogus because the macro
+ * must be user defined anyway -- it is not a private symbol -- and in
+ * any case, the Windows API already reserves the UNICODE symbol as
+ * a user defined macro, with equivalent intent.
+ *
+ * The real explanation, of course, is that this is just another example
+ * of Microsoft irrationality; in any event, there seems to be no sane
+ * scenario in which defining one without the other would be required,
+ * or indeed would not raise potential for internal inconsistency, so we
+ * ensure that either both are, or neither is defined.
+ */
+#if defined UNICODE && ! defined _UNICODE
+# define _UNICODE  UNICODE
+#elif defined _UNICODE && ! defined UNICODE
+# define UNICODE  _UNICODE
+#endif
+/* Related to the UNICODE macro definition, there are many functions in
+ * the Win32 API with a generic name, which is mapped to a variant with
+ * wchar_t UTF-16LE encoding of string arguments, in cases when UNICODE
+ * is defined, as facilitated by the following macro...
+ */
+#ifdef UNICODE
+ /* ...by appending a "W" suffix to the generic function name...
+  */
+# define __AW_SUFFIXED__(__NAME__)  __NAME__##W
+#else
+ /* ...or by appending an "A" suffix, to select an ANSI variant with
+  * char encoding of string arguments, when UNICODE is not defined.
+  */
+# define __AW_SUFFIXED__(__NAME__)  __NAME__##A
+#endif
+/* Further related, the __AW_EXTENDED__ macro reproduces the effect of
+ * __AW_SUFFIXED__, with the addition of a single underscore character
+ * separating the base name from the appropriate suffix.
+ */
+#define __AW_EXTENDED__(__NAME__)  __AW_SUFFIXED__(__NAME__##_)
+
+/* __AW_EXTENDED__ may often be used to map manifest string constants.
+ * The following triplet provide a convenient mechanism to derive the
+ * UNICODE variant of the string from its ANSI definition; (note that
+ * this requires a two stage expansion, to ensure that the "L" prefix
+ * is attached to the expansion of the ANSI string definition, rather
+ * than just to the defining macro name).
+ */
+#define __AW_STRING_A__(__TEXT__)  __TEXT__
+#define __AW__WCHAR_T__(__TEXT__)  __AW_STRING_A__(L##__TEXT__)
+#define __AW_STRING_W__(__TEXT__)  __AW__WCHAR_T__(__TEXT__)
+
+#ifdef __cplusplus
+/* When compiling C++ code, these macros provide a convenient notation
+ * for designating those sections of system header files which declare
+ * prototypes for API functions with "C" binding...
+ */
+# define _EXTERN_C       extern "C"
+# define _BEGIN_C_DECLS  extern "C" {
+# define _END_C_DECLS    }
+
+#else
+/* ...while remaining transparent, when compiling C code.
+ */
+# define _EXTERN_C       extern
+# define _BEGIN_C_DECLS
+# define _END_C_DECLS
+#endif
+
+#endif /* ! _W32API_H: $RCSfile: w32api.h.in,v $: end of file */
Index: Daodan/MinGW/include/wchar.h
===================================================================
--- Daodan/MinGW/include/wchar.h	(revision 1046)
+++ Daodan/MinGW/include/wchar.h	(revision 1046)
@@ -0,0 +1,535 @@
+/*
+ * wchar.h
+ *
+ * Declarations relating to support for wide characters; many are simply
+ * inherited by (sub-optimal) inclusion of other header files.
+ *
+ * $Id: wchar.h,v 0e4f78dbc1ba 2016/06/17 14:16:01 keithmarshall $
+ *
+ * Unattributed original source.
+ * Adapted by Rob Savoye <rob@cygnus.com>
+ * Copyright (C) 1997, 1999-2009, 2011, 2015, 2016, MinGW.org Project.
+ *
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice, this permission notice, and the following
+ * disclaimer shall be included in all copies or substantial portions of
+ * the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OF OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ *
+ */
+#ifndef _WCHAR_H
+#pragma GCC system_header
+
+/* This header declares prototypes for wchar_t string functions, as are
+ * prescribed by ISO-C, but which MSVC also expects, (in contravention of
+ * ISO-C prescriptions), to find in <string.h>.  To accommodate this MSVC
+ * anomaly, we make provision for <string.h> to include a selected subset
+ * of <wchar.h>; thus, we do not immediately define _WCHAR_T...
+ */
+#ifndef __STRING_H_SOURCED__
+/* ...but defer it until we have confirmed that this is NOT inclusion for
+ * only this subset of <wchar.h> declarations.
+ */
+#define _WCHAR_H
+
+/* All MinGW headers are required to include <_mingw.h>; in the case of
+ * selective inclusion by <string.h>, we expect it to have already done
+ * so, but since that doesn't apply here, we must do it ourselves.
+ */
+#include <_mingw.h>
+
+#ifndef __STRICT_ANSI__
+ /* MSDN says that isw* char classifications appear in both <wchar.h>,
+  * and in <wctype.h>.  Although these <wctype.h> classifications are as
+  * prescribed by ISO-C, their exposure in <wchar.h> is not; nonetheless,
+  * we replicate them here, for MSDN conformity.
+  */
+# include <wctype.h>
+
+ /* This is also necessary, to support the non-ANSI wchar.h declarations
+  * which MSDN identifies as being provided here.
+  */
+# include <sys/types.h>
+
+#endif	/* !__STRICT_ANSI__ */
+
+#define WCHAR_MIN	0
+#define WCHAR_MAX	0xffff
+
+#define WEOF		(wchar_t)(0xffff)
+
+#ifndef RC_INVOKED
+#define __WCHAR_H_SOURCED__
+/* ISO-C, POSIX, and Microsoft specify an overlap of content between
+ * <wchar.h> and other system header files; by inclusion of such other
+ * headers within this "__WCHAR_H_SOURCED__" scope, we may selectively
+ * retrieve the overlapping content, without requiring duplication of
+ * that content here; thus, from...
+ */
+#include "stdio.h"
+/* ...we obtain (possibly indirect) definitions and declarations for:
+ *
+ *  macros  NULL, FILENAME_MAX
+ *  types   size_t, wchar_t, wint_t, va_list (a.k.a. __VALIST), FILE
+ *  types   ssize_t, off_t, __off64_t, (conditionally, as needed)
+ *
+ *  int     fwprintf (FILE *, const wchar_t *, ...);
+ *  int     wprintf (const wchar_t *, ...);
+ *  int     vfwprintf (FILE *, const wchar_t *, __VALIST);
+ *  int     vwprintf (const wchar_t *, __VALIST);
+ *  int     snwprintf (wchar_t *, size_t, const wchar_t *, ...);
+ *  int    _snwprintf (wchar_t *, size_t, const wchar_t *, ...);
+ *  int    _vscwprintf (const wchar_t *, __VALIST);
+ *  int    _vsnwprintf (wchar_t *, size_t, const wchar_t *, __VALIST);
+ *  int     vsnwprintf (wchar_t *, size_t, const wchar_t *, __VALIST);
+ *  int     fwscanf (FILE *, const wchar_t *, ...);
+ *  int     wscanf (const wchar_t *, ...);
+ *  int     swscanf (const wchar_t *, const wchar_t *, ...);
+ *  int     vwscanf (const wchar_t *, __VALIST);
+ *  int     vfwscanf (FILE *, const wchar_t *, __VALIST);
+ *  int     vswscanf (const wchar_t *, const wchar_t *, __VALIST);
+ *  wint_t  fgetwc (FILE *);
+ *  wint_t  fputwc (wchar_t, FILE *);
+ *  wint_t  ungetwc (wchar_t, FILE *);
+ *
+ * The following pair of Microsoft functions conflict with their
+ * corresponding ISO-C prototypes; consequently they will not be
+ * declared when "__STRICT_ANSI__" checking is in effect:
+ *
+ *  int  swprintf (wchar_t *, const wchar_t *, ...);
+ *  int  vswprintf (wchar_t *, const wchar_t *, __VALIST);
+ *
+ * The following group of functions is specified by ISO-C, but
+ * their Microsoft implementations are available only if use of
+ * "__MSVCRT__" is specified:
+ *
+ *  wchar_t * fgetws (wchar_t *, int, FILE *);
+ *  int       fputws (const wchar_t *, FILE *);
+ *  wint_t    getwc (FILE *);
+ *  wint_t    getwchar (void);
+ *  wint_t    putwc (wint_t, FILE *);
+ *  wint_t    putwchar (wint_t);
+ *
+ * The following group of functions is also dependent on use of
+ * "__MSVCRT__"; however, these are Microsoft specific, so they
+ * are not declared if "__STRICT_ANSI__" checking is specified:
+ *
+ *  wchar_t * _getws (wchar_t *);
+ *  int       _putws (const wchar_t *);
+ *  FILE    * _wfdopen (int, const wchar_t *);
+ *  FILE    * _wfopen (const wchar_t *, const wchar_t *);
+ *  FILE    * _wfreopen (const wchar_t *, const wchar_t *, FILE *);
+ *  FILE    * _wfsopen (const wchar_t *, const wchar_t *, int);
+ *  wchar_t * _wtmpnam (wchar_t *);
+ *  wchar_t * _wtempnam (const wchar_t *, const wchar_t *);
+ *  int       _wrename (const wchar_t *, const wchar_t *);
+ *  int       _wremove (const wchar_t *);
+ *  void      _wperror (const wchar_t *);
+ *  FILE    * _wpopen (const wchar_t *, const wchar_t *);
+ *
+ *
+ * In similar fashion, from...
+ */
+#include "stdlib.h"
+/* ...we obtain prototypes for universally supported functions:
+ *
+ *  long wcstol (const wchar_t *, wchar_t **, int);
+ *  unsigned long wcstoul (const wchar_t *, wchar_t **, int);
+ *  double wcstod (const wchar_t *, wchar_t **);
+ *
+ * The following are Microsoft specific, and require MSCVRT.DLL,
+ * or any of its non-free derivatives; they are not available to
+ * applications which use CRTDLL.DLL:
+ *
+ *  wchar_t *_wgetenv (const wchar_t *);
+ *  int _wputenv (const wchar_t *);
+ *  void _wsearchenv (const wchar_t *, const wchar_t *, wchar_t *);
+ *  int _wsystem (const wchar_t *);
+ *  void _wmakepath (wchar_t *, const wchar_t *, const wchar_t *,
+ *          const wchar_t *, const wchar_t *
+ *        );
+ *  void _wsplitpath (const wchar_t *, wchar_t *, wchar_t *,
+ *          wchar_t *, wchar_t *
+ *        );
+ *  wchar_t *_wfullpath (wchar_t *, const wchar_t *, size_t);
+ *
+ * ...with this pair requiring either WinXP (or later), or one of
+ * the non-free MSVC runtimes from MSVCR70.DLL onwards:
+ *
+ *  __int64 _wcstoi64 (const wchar_t *, wchar_t **, int);
+ *  unsigned __int64 _wcstoui64 (const wchar_t *, wchar_t **, int);
+ *
+ *  ...and this pair requiring Win-Vista (or later), or a non-free
+ *  MSVC runtime from MSVCR80.DLL onwards:
+ *
+ *  __int64 _wcstoi64_l (const wchar_t *, wchar_t **, int, _locale_t);
+ *  unsigned __int64 _wcstoui64_l (const wchar_t *, wchar_t **,
+ *          int, _locale_t);
+ *        );
+ *
+ * ...while this pair are ISO-C99 standards, which are available
+ * in libmingwex.a, but not in any version of MSVCRT.DLL, (nor in
+ * any of its non-free derivatives prior to MSVCR120.DLL), nor in
+ * CRTDLL.DLL:
+ *
+ *  float wcstof (const wchar_t *restrict, wchar_t **restrict);
+ *  long double wcstold (const wchar_t *restrict, wchar_t **restrict);
+ *
+ *
+ * while from...
+ */
+#include "direct.h"
+/* ...we obtain prototypes for each of the following functions,
+ * (none of which are available when using CRTDLL.DLL):
+ *
+ *  int _wchdir (const wchar_t *);
+ *  wchar_t *_wgetcwd (wchar_t *, int);
+ *  wchar_t *_wgetdcwd (int, wchar_t *, int);
+ *  int _wmkdir (const wchar_t *);
+ *  int _wrmdir (const wchar_t *);
+ *
+ *
+ * From...
+ */
+#include "sys/stat.h"
+/* ...we obtain function prototypes, and all associated data type
+ * definitions for this pair of actual functions, in all versions of
+ * MSVCRT.DLL, and its non-free derivatives preceding MSVCR80.DLL, (or
+ * inline replacement implementations for MSVCR80.DLL and later):
+ *
+ *  int _wstat (const wchar_t *, struct _stat *);
+ *  int _wstati64 (const wchar_t *, struct _stati64 *);
+ *
+ * ...this additional actual function, available in MSVCRT.DLL from
+ * Win2K onwards, or in non-free MSVCR61.DLL and again requiring an
+ * inline replacement from MSVCR80.DLL onwards:
+ *
+ *  int _wstat64 (const wchar_t *, struct __stat64 *);
+ *
+ * ...and these actual functions, which are available only in non-free
+ * MSVCR80.DLL, and its later derivatives:
+ *
+ *  int _wstat32 (const wchar_t *, struct __stat32 *);
+ *  int _wstat32i64 (const wchar_t *, struct _stat32i64 *);
+ *  int _wstat64i32 (const wchar_t *, struct _stat64i32 *);
+ *
+ *
+ * while from...
+ */
+#include "io.h"
+/* ...we obtain function prototypes for each of the following, which
+ * are available in all versions of MSVCRT.DLL, (and all its non-free
+ * derivatives), but are not supported by CRTDLL.DLL:
+ *
+ *  int _waccess (const wchar_t *, int);
+ *  int _wchmod (const wchar_t *, int);
+ *  int _wcreat (const wchar_t *, int);
+ *  int _wopen (const wchar_t *, int, ...);
+ *  int _wsopen (const wchar_t *, int, int, ...);
+ *  int _wunlink (const wchar_t *);
+ *  wchar_t *_wmktemp (wchar_t *);
+ *
+ * ...and also function prototypes and definitions of all associated
+ * data types and manifest constants for the following, each of which
+ * is physically implemented in all versions of MSVCRT.DLL, and in each
+ * of its non-free variants prior to MSVCR80.DLL, or emulated by inline
+ * replacement functions for MSVCR80.DLL and later:
+ *
+ *  intptr_t _wfindfirst (wchar_t *, struct _wfinddata_t *);
+ *  int _wfindnext (intptr_t, struct _wfinddata_t *);
+ *
+ *  intptr_t _wfindfirsti64 (wchar_t *, struct _wfinddatai64_t *);
+ *  int _wfindnexti64 (intptr_t, struct _wfinddatai64_t *);
+ *
+ * ...this additional pair of functions, available in all versions of
+ * MSVCRT.DLL from Win2K, and non-free variants from MSVCR61.DLL:
+ *
+ *  intptr_t _wfindfirst64 (wchar_t *, struct __wfinddata64_t *);
+ *  int _wfindnext64 (intptr_t, struct __wfinddata64_t *);
+ *
+ * ...and these, which are only available in the non-free run-times
+ * from MSVCR80.DLL onwards:
+ *
+ *  intptr_t _wfindfirst32 (wchar_t *, struct __wfinddata32_t *);
+ *  int _wfindnext32 (intptr_t, struct __wfinddata32_t *);
+ *
+ *  intptr_t _wfindfirst32i64 (wchar_t *, struct _wfinddata32i64_t *);
+ *  int _wfindnext32i64 (intptr_t, struct _wfinddata32i64_t *);
+ *
+ *  intptr_t _wfindfirst64i32 (wchar_t *, struct _wfinddata64i32_t *);
+ *  int _wfindnext64i32 (intptr_t, struct _wfinddata64i32_t *);
+ *
+ * Additionally, although Microsoft's <wchar.h> may not declare it,
+ * this is required to complement all variants of the _wfindfirst()
+ * and _wfindnext() API, so we also declare the prototype for:
+ *
+ *  int _findclose (intptr_t);
+ *
+ *
+ * and from...
+ */
+#include "time.h"
+/* ...we obtain an opaque forward declaration of:
+ *
+ *  struct tm
+ *
+ * ...and prototype declarations for the following ISO-C99 function,
+ * (which is always provided):
+ *
+ *  size_t wcsftime (wchar_t *, size_t, const wchar_t *, const struct tm *);
+ *
+ * ...together with the following non-ISO-C functions, (which are
+ * NOT exposed when "__STRICT_ANSI__" checking is enabled):
+ *
+ *  wchar_t *_wctime (const time_t *);
+ *  wchar_t *_wasctime (const struct tm *);
+ *  wchar_t *_wstrdate (wchar_t *);
+ *  wchar_t *_wstrtime (wchar_t *);
+ *
+ * Of the preceding group, we also note that, while it remains in
+ * all versions of MSVCRT.DLL, (using a strictly 32-bit data type
+ * to represent its "time_t" argument), the _wctime() function is
+ * NOT present in MSVCR80.DLL, and later versions of the non-free
+ * MSVC runtime libraries, in which it is replaced by either of:
+ *
+ *  wchar_t *_wctime64 (const __time64_t *);
+ *  wchar_t *_wctime32 (const __time32_t *);
+ *
+ * ...with the actual replacement being chosen at compile time, on
+ * the basis of the user specified "_USE_32BIT_TIME_T" feature test
+ * macro, (a Microsoft specific, brain damaged concept), which maps
+ * _wctime() itself, as an in-line alias for its corresponding
+ * replacement library function.
+ *
+ *
+ * Also, from...
+ */
+#include "locale.h"
+/* ...we obtain the declaration for:
+ *
+ *   wchar_t *_wsetlocale (int, const wchar_t *);
+ *
+ *
+ * and from...
+ */
+#include "process.h"
+/* ...we obtain function prototypes for:
+ *
+ *  intptr_t _wexecl (const wchar_t *, const wchar_t *, ...);
+ *  intptr_t _wexecle (const wchar_t *, const wchar_t *, ...);
+ *  intptr_t _wexeclp (const wchar_t *, const wchar_t *, ...);
+ *  intptr_t _wexeclpe (const wchar_t *, const wchar_t *, ...);
+ *
+ *  intptr_t _wexecv (const wchar_t *, const wchar_t * const *);
+ *  intptr_t _wexecve (
+ *    const wchar_t *, const wchar_t * const *, const wchar_t * const *
+ *   );
+ *  intptr_t _wexecvp (const wchar_t *, const wchar_t * const *);
+ *  intptr_t _wexecvpe (
+ *    const wchar_t *, const wchar_t * const *, const wchar_t * const *
+ *   );
+ *
+ *  intptr_t _wspawnl (int, const wchar_t *, const wchar_t *, ...);
+ *  intptr_t _wspawnle (int, const wchar_t *, const wchar_t *, ...);
+ *  intptr_t _wspawnlp (int, const wchar_t *, const wchar_t *, ...);
+ *  intptr_t _wspawnlpe (int, const wchar_t *, const wchar_t *, ...);
+ *
+ *  intptr_t _wspawnv (int, const wchar_t *, const wchar_t * const *);
+ *  intptr_t _wspawnve (
+ *    int, const wchar_t *, const wchar_t * const *, const wchar_t * const *
+ *   );
+ *  intptr_t _wspawnvp (int, const wchar_t *, const wchar_t * const *);
+ *  intptr_t _wspawnvpe (
+ *    int, const wchar_t *, const wchar_t * const *, const wchar_t * const *
+ *   );
+ *
+ */
+_BEGIN_C_DECLS
+
+/* Wide character string functions must be specified here, as required
+ * by the ISO-C Standard; however, MSVC contravenes this standard by also
+ * requiring them to appear in <string.h>.  We declare them here, where
+ * they rightfully belong, but we also arrange for them to be available
+ * for selective inclusion by <string.h>; to facilitate this, we must
+ * change the declarative condition...
+ */
+#endif	/* ! RC_INVOKED */
+#endif	/* !__STRING_H_SOURCED__ */
+#if ! (defined RC_INVOKED || (defined _WCHAR_H && defined _STRING_H))
+/* ...such that these declarations are exposed when either _WCHAR_H, or
+ * _STRING_H is defined, (but not both, since that would indicate that
+ * these declarations have already been processed).
+ *
+ *
+ * Wide character versions of the ISO-C standard string functions.
+ */
+_CRTIMP __cdecl __MINGW_NOTHROW  wchar_t *wcscat (wchar_t *, const wchar_t *);
+_CRTIMP __cdecl __MINGW_NOTHROW  wchar_t *wcschr (const wchar_t *, wchar_t);
+_CRTIMP __cdecl __MINGW_NOTHROW  int wcscmp (const wchar_t *, const wchar_t *);
+_CRTIMP __cdecl __MINGW_NOTHROW  int wcscoll (const wchar_t *, const wchar_t *);
+_CRTIMP __cdecl __MINGW_NOTHROW  wchar_t *wcscpy (wchar_t *, const wchar_t *);
+_CRTIMP __cdecl __MINGW_NOTHROW  size_t wcscspn (const wchar_t *, const wchar_t *);
+_CRTIMP __cdecl __MINGW_NOTHROW  size_t wcslen (const wchar_t *);
+_CRTIMP __cdecl __MINGW_NOTHROW  wchar_t *wcsncat (wchar_t *, const wchar_t *, size_t);
+_CRTIMP __cdecl __MINGW_NOTHROW  int wcsncmp (const wchar_t *, const wchar_t *, size_t);
+_CRTIMP __cdecl __MINGW_NOTHROW  wchar_t *wcsncpy (wchar_t *, const wchar_t *, size_t);
+_CRTIMP __cdecl __MINGW_NOTHROW  wchar_t *wcspbrk (const wchar_t *, const wchar_t *);
+_CRTIMP __cdecl __MINGW_NOTHROW  wchar_t *wcsrchr (const wchar_t *, wchar_t);
+_CRTIMP __cdecl __MINGW_NOTHROW  size_t wcsspn (const wchar_t *, const wchar_t *);
+_CRTIMP __cdecl __MINGW_NOTHROW  wchar_t *wcsstr (const wchar_t *, const wchar_t *);
+_CRTIMP __cdecl __MINGW_NOTHROW  wchar_t *wcstok (wchar_t *, const wchar_t *);
+_CRTIMP __cdecl __MINGW_NOTHROW  size_t wcsxfrm (wchar_t *, const wchar_t *, size_t);
+
+#ifndef __STRICT_ANSI__
+/* UTF-16LE versions of non-ANSI string functions provided by CRTDLL.DLL
+ */
+_CRTIMP __cdecl __MINGW_NOTHROW  wchar_t *_wcsdup (const wchar_t *);
+_CRTIMP __cdecl __MINGW_NOTHROW  int _wcsicmp (const wchar_t *, const wchar_t *);
+_CRTIMP __cdecl __MINGW_NOTHROW  int _wcsicoll (const wchar_t *, const wchar_t *);
+_CRTIMP __cdecl __MINGW_NOTHROW  wchar_t *_wcslwr (wchar_t*);
+_CRTIMP __cdecl __MINGW_NOTHROW  int _wcsnicmp (const wchar_t *, const wchar_t *, size_t);
+_CRTIMP __cdecl __MINGW_NOTHROW  wchar_t *_wcsnset (wchar_t *, wchar_t, size_t);
+_CRTIMP __cdecl __MINGW_NOTHROW  wchar_t *_wcsrev (wchar_t *);
+_CRTIMP __cdecl __MINGW_NOTHROW  wchar_t *_wcsset (wchar_t *, wchar_t);
+_CRTIMP __cdecl __MINGW_NOTHROW  wchar_t *_wcsupr (wchar_t *);
+
+#ifdef __MSVCRT__
+_CRTIMP __cdecl __MINGW_NOTHROW  int _wcsncoll (const wchar_t *, const wchar_t *, size_t);
+_CRTIMP __cdecl __MINGW_NOTHROW  int _wcsnicoll (const wchar_t *, const wchar_t *, size_t);
+
+/* A wide character counterpart to the strerror() API was introduced in
+ * MSVCR70.DLL, and subsequently back-ported to MSVCRT.DLL in WinXP.
+ */
+#if __MSVCRT_VERSION__ >= __MSVCR70_DLL || NTDDI_VERSION >= NTDDI_WINXP
+ /*
+  * These are are the wide character counterparts to the strerror()
+  * function itself, and the _strerror() function, respectively.
+  */
+_CRTIMP __cdecl __MINGW_NOTHROW  wchar_t *_wcserror (int);
+_CRTIMP __cdecl __MINGW_NOTHROW  wchar_t *__wcserror (const wchar_t *);
+
+#endif	/* MSVCR70.DLL || WinXP */
+#endif	/* __MSVCRT__ */
+
+/* MSVCRT.DLL provides neither _wcscmpi() nor wcscmpi(); the heritage
+ * is uncertain, but for the convenience, (and portability), of legacy
+ * applications which assume wcscmpi() should be available:
+ */
+#define _wcscmpi _wcsicmp
+int __cdecl __MINGW_NOTHROW  wcscmpi (const wchar_t *, const wchar_t *);
+
+#ifndef __NO_INLINE__
+__CRT_ALIAS __JMPSTUB__(( FUNCTION = wcscmpi, REMAPPED = _wcsicmp ))
+  int wcscmpi (const wchar_t *__ws1, const wchar_t *__ws2)
+  { return _wcsicmp (__ws1, __ws2); }
+#endif	/* __NO_INLINE__ */
+
+#ifndef _NO_OLDNAMES
+/* Older CRTDLL.DLL versions may have provided these alternatively named
+ * functions; we continue to support them, via the OLDNAME libraries:
+ */
+_CRTIMP __cdecl __MINGW_NOTHROW  wchar_t *wcsdup (const wchar_t *);
+_CRTIMP __cdecl __MINGW_NOTHROW  int wcsicmp (const wchar_t *, const wchar_t *);
+_CRTIMP __cdecl __MINGW_NOTHROW  int wcsicoll (const wchar_t *, const wchar_t *);
+_CRTIMP __cdecl __MINGW_NOTHROW  wchar_t *wcslwr (wchar_t *);
+_CRTIMP __cdecl __MINGW_NOTHROW  int wcsnicmp (const wchar_t *, const wchar_t *, size_t);
+_CRTIMP __cdecl __MINGW_NOTHROW  wchar_t *wcsnset (wchar_t *, wchar_t, size_t);
+_CRTIMP __cdecl __MINGW_NOTHROW  wchar_t *wcsrev (wchar_t *);
+_CRTIMP __cdecl __MINGW_NOTHROW  wchar_t *wcsset (wchar_t *, wchar_t);
+_CRTIMP __cdecl __MINGW_NOTHROW  wchar_t *wcsupr (wchar_t *);
+
+#endif	/* !_NO_OLDNAMES */
+#endif	/* !__STRICT_ANSI__ */
+
+/* This completes the set of declarations which are to be duplicated by
+ * inclusion of <string.h>; revert the declarative condition, to make it
+ * specific to <wchar.h> alone.
+ */
+#endif	/* !(RC_INVOKED || (_WCHAR_H && _STRING_H)) */
+#if defined _WCHAR_H && ! defined RC_INVOKED
+
+#ifndef __STRICT_ANSI__
+typedef wchar_t  _Wint_t;
+#endif
+
+typedef int mbstate_t;
+
+/* The following multi-byte character conversion functions are
+ * implemented in libmingwex.a, (and maybe also in some non-free
+ * Microsoft libraries, such as MSVCP60.DLL and later).
+ */
+__cdecl __MINGW_NOTHROW  wint_t btowc (int);
+__cdecl __MINGW_NOTHROW  int wctob (wint_t);
+
+__cdecl __MINGW_NOTHROW
+size_t mbrlen (const char *__restrict__, size_t, mbstate_t *__restrict__);
+
+__cdecl __MINGW_NOTHROW  size_t mbrtowc
+(wchar_t *__restrict__, const char *__restrict__, size_t, mbstate_t *__restrict__);
+
+__cdecl __MINGW_NOTHROW  size_t mbsrtowcs
+(wchar_t *__restrict__, const char **__restrict__, size_t, mbstate_t *__restrict__);
+
+__cdecl __MINGW_NOTHROW
+size_t wcrtomb (char * __restrict__, wchar_t, mbstate_t *__restrict__);
+
+__cdecl __MINGW_NOTHROW  size_t wcsrtombs
+(char *__restrict__, const wchar_t **__restrict__, size_t, mbstate_t *__restrict__);
+
+#ifdef _ISOC99_SOURCE
+/* These ISO-C99 functions are implemented in libmingwex.a,
+ * or, in some cases, by inline stubs.
+ */
+__cdecl __MINGW_NOTHROW  int fwide (FILE *, int);
+__cdecl __MINGW_NOTHROW  int mbsinit (const mbstate_t *);
+
+#ifndef __NO_INLINE__
+__CRT_INLINE __cdecl __MINGW_NOTHROW
+int fwide (FILE *__UNUSED_PARAM(stream), int mode)
+  { return mode; } /* Nothing to do  */
+
+__CRT_INLINE __cdecl __MINGW_NOTHROW
+int mbsinit (const mbstate_t *__UNUSED_PARAM(ps))
+  { return 1; }
+#endif
+
+__cdecl __MINGW_NOTHROW  wchar_t *wmemset (wchar_t *, wchar_t, size_t);
+__cdecl __MINGW_NOTHROW  wchar_t *wmemchr (const wchar_t *, wchar_t, size_t);
+
+/* FIXME: what makes this so different from every other function
+ * in this group?  Why is it not qualified with the __cdecl, and
+ * __MINGW_NOTHROW attributes?
+ */
+int wmemcmp (const wchar_t *, const wchar_t *, size_t);
+
+__cdecl __MINGW_NOTHROW
+wchar_t *wmemcpy (wchar_t *__restrict__, const wchar_t *__restrict__, size_t);
+
+__cdecl __MINGW_NOTHROW  wchar_t *wmemmove (wchar_t *, const wchar_t *, size_t);
+
+__cdecl __MINGW_NOTHROW
+long long wcstoll (const wchar_t *__restrict__, wchar_t **__restrict__, int);
+
+__cdecl __MINGW_NOTHROW  unsigned long long wcstoull
+(const wchar_t *__restrict__, wchar_t **__restrict__, int);
+#endif /* _ISOC99_SOURCE */
+
+_END_C_DECLS
+
+#undef __WCHAR_H_SOURCED__
+#endif	/* _WCHAR_H && ! RC_INVOKED */
+#endif	/* !_WCHAR_H: $RCSfile: wchar.h,v $: end of file */
Index: Daodan/MinGW/include/wctype.h
===================================================================
--- Daodan/MinGW/include/wctype.h	(revision 1046)
+++ Daodan/MinGW/include/wctype.h	(revision 1046)
@@ -0,0 +1,210 @@
+/*
+ * wctype.h
+ *
+ * Functions for wide character classification and conversion.
+ *
+ * $Id: wctype.h,v e38eed5e2087 2016/07/09 20:53:41 keithmarshall $
+ *
+ * Written by Mumit Khan <khan@xraylith.wisc.edu>
+ * Copyright (C) 1999-2003, 2005-2007, 2016, MinGW.org Project
+ *
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice, this permission notice, and the following
+ * disclaimer shall be included in all copies or substantial portions of
+ * the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OF OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ *
+ */
+#ifndef _WCTYPE_H
+#pragma GCC system_header
+
+#ifndef __CTYPE_H_SOURCED__
+/* Perversely, (since they provide <wctype.h> themselves), Microsoft
+ * say that most of the definitions and declarations which follow are
+ * provided by <ctype.h>, rather than here; (this conflicts with both
+ * ISO-C and POSIX).  We prefer to provide them here, for ISO-C/POSIX
+ * conformance, while also exposing them for selective inclusion by
+ * <ctype.h>, to maintain Microsoft compatibility.
+ *
+ * We define the <wctype.h> multiple inclusion guard macro only when
+ * <wctype.h> is included directly, NOT when included via <ctype.h>
+ */
+#define _WCTYPE_H
+
+/* All MinGW headers must include <_mingw.h>; when sourced by <ctype.h>,
+ * we may delegate that responsibility to it, but in the case of direct
+ * inclusion, we must address it ourselves.
+ */
+#include <_mingw.h>
+#endif
+
+/* The following flags are used to tell iswctype() and _isctype() what
+ * character classes are to be matched; (note that _BLANK will match for
+ * SP and non-ASCII horizontal space chars -- e.g. for "no-break space",
+ * 0xA0, in CP1250 -- but NOT for HT).
+ *
+ * These are defined such that they will be made visible by inclusion
+ * of either <wctype.h> (this file), or <ctype.h>:
+ */
+#define _ALPHA		0x0103
+#define _LOWER		0x0002
+#define _UPPER		0x0001
+#define _DIGIT		0x0004
+#define _SPACE		0x0008		/* HT  LF  VT  FF  CR  SP */
+#define _PUNCT		0x0010
+#define _CONTROL	0x0020
+#define _BLANK		0x0040
+#define _HEX		0x0080
+
+#ifndef RC_INVOKED
+
+/* ISO-C and POSIX specify that <wctype.h> must define wint_t, wctype_t,
+ * and the WEOF macro, (which also requires wchar_t), as they are defined
+ * in <wchar.h>; since <wchar.h> gets wint_t, (and wchar_t), from <stddef.h>,
+ * we do likewise here.  Furthermore, to maintain Microsoft compatibility,
+ * we must also do this on behalf of <ctype.h>; however...
+ */
+#if !(defined _WCTYPE_H && defined _CTYPE_H)
+/* ...we need not incur the overhead of doing it twice, when both <ctype.h>
+ * and <wctype.h> have been included.
+ */
+#define __need_wint_t
+#define __need_wchar_t
+#include <stddef.h>
+
+typedef wchar_t  wctype_t;
+#define WEOF	(wchar_t)(0xffff)
+
+_BEGIN_C_DECLS
+
+/* Wide character classification functions.  In typically perverse
+ * fashion, and contrary to both ISO-C and POSIX, Microsoft specify
+ * that these should be declared in <ctype.h>; thus, to accommodate
+ * this persersity, we make them visible here, irrespective of any
+ * selective inclusion filter macro.
+ */
+_CRTIMP __cdecl __MINGW_NOTHROW  int iswalnum (wint_t);
+_CRTIMP __cdecl __MINGW_NOTHROW  int iswalpha (wint_t);
+_CRTIMP __cdecl __MINGW_NOTHROW  int iswascii (wint_t);
+_CRTIMP __cdecl __MINGW_NOTHROW  int iswcntrl (wint_t);
+_CRTIMP __cdecl __MINGW_NOTHROW  int iswctype (wint_t, wctype_t);
+_CRTIMP __cdecl __MINGW_NOTHROW  int iswdigit (wint_t);
+_CRTIMP __cdecl __MINGW_NOTHROW  int iswgraph (wint_t);
+_CRTIMP __cdecl __MINGW_NOTHROW  int iswlower (wint_t);
+_CRTIMP __cdecl __MINGW_NOTHROW  int iswprint (wint_t);
+_CRTIMP __cdecl __MINGW_NOTHROW  int iswpunct (wint_t);
+_CRTIMP __cdecl __MINGW_NOTHROW  int iswspace (wint_t);
+_CRTIMP __cdecl __MINGW_NOTHROW  int iswupper (wint_t);
+_CRTIMP __cdecl __MINGW_NOTHROW  int iswxdigit (wint_t);
+
+__MINGW_ATTRIB_DEPRECATED
+/* This function is exported by all versions of MSVCRT.DLL, (up to and
+ * including that in Windows-7), and in all non-free counterparts up to
+ * and including MSVCR120.DLL, but as of MSVC-2013, Microsoft declare
+ * it to be obsolete.  DO NOT USE IT!  Use iswctype() instead.
+ */
+_CRTIMP __cdecl __MINGW_NOTHROW  int is_wctype (wint_t, wctype_t);
+
+#if __STDC_VERSION__>=199901L || !defined __STRICT_ANSI__ || defined __cplusplus
+__cdecl __MINGW_NOTHROW  int iswblank (wint_t);
+#endif
+
+/* Wide character case transliteration functions; the following conform
+ * to the ISO-C and POSIX standard declarations; Microsoft, at one time,
+ * specified both as taking a wchar_t argument, and returning a wchar_t
+ * result, but now take a wint_t argument, and return int.
+ */
+_CRTIMP __cdecl __MINGW_NOTHROW  wint_t towlower (wint_t);
+_CRTIMP __cdecl __MINGW_NOTHROW  wint_t towupper (wint_t);
+
+#if !(defined __NO_INLINE__ || defined __NO_CTYPE_INLINES)
+/* Provide inline alternatives to the DLL-exported isw*() functions.
+ * Note that POSIX stipulates that these alternatives should be macros;
+ * we prefer __CRT_INLINEs, (which GCC effectively treats as macros),
+ * because they do not interfere with C++ namespace qualification.
+ */
+__CRT_INLINE __cdecl __MINGW_NOTHROW  int iswalnum (wint_t wc)
+{ return (iswctype (wc, _ALPHA | _DIGIT)); }
+
+__CRT_INLINE __cdecl __MINGW_NOTHROW  int iswalpha (wint_t wc)
+{ return (iswctype (wc, _ALPHA )); }
+
+__CRT_INLINE __cdecl __MINGW_NOTHROW  int iswascii (wint_t wc)
+{ return ((wc & ~0x7F) == 0); }
+
+__CRT_INLINE __cdecl __MINGW_NOTHROW  int iswcntrl (wint_t wc)
+{ return (iswctype (wc, _CONTROL)); }
+
+__CRT_INLINE __cdecl __MINGW_NOTHROW  int iswdigit (wint_t wc)
+{ return (iswctype (wc, _DIGIT)); }
+
+__CRT_INLINE __cdecl __MINGW_NOTHROW  int iswgraph (wint_t wc)
+{ return (iswctype (wc, _PUNCT | _ALPHA | _DIGIT)); }
+
+__CRT_INLINE __cdecl __MINGW_NOTHROW  int iswlower (wint_t wc)
+{ return (iswctype (wc, _LOWER)); }
+
+__CRT_INLINE __cdecl __MINGW_NOTHROW  int iswprint (wint_t wc)
+{ return (iswctype (wc, _BLANK | _PUNCT | _ALPHA | _DIGIT)); }
+
+__CRT_INLINE __cdecl __MINGW_NOTHROW  int iswpunct (wint_t wc)
+{ return (iswctype (wc, _PUNCT)); }
+
+__CRT_INLINE __cdecl __MINGW_NOTHROW  int iswspace (wint_t wc)
+{ return (iswctype (wc, _SPACE)); }
+
+__CRT_INLINE __cdecl __MINGW_NOTHROW  int iswupper (wint_t wc)
+{ return (iswctype (wc, _UPPER)); }
+
+__CRT_INLINE __cdecl __MINGW_NOTHROW  int iswxdigit (wint_t wc)
+{ return (iswctype (wc, _HEX)); }
+
+#if __STDC_VERSION__>=199901L || !defined __STRICT_ANSI__ || defined __cplusplus
+__CRT_INLINE __cdecl __MINGW_NOTHROW  int iswblank (wint_t wc)
+{ return (iswctype (wc, _BLANK) || wc == L'\t'); }
+#endif
+#endif	/* !__NO_CTYPE_INLINES */
+
+_END_C_DECLS
+
+#endif	/* !(_WCTYPE_H && _CTYPE_H) */
+
+#ifdef _WCTYPE_H
+/* Although Microsoft make most of the content, which ISO-C and POSIX say
+ * should be in <wctype.h>, available through <ctype.h>, the declarations
+ * in this section are exclusive to <wctype.h>
+ */
+typedef wchar_t  wctrans_t;
+
+_BEGIN_C_DECLS
+
+/* These are provided in libmingwex.a.  Note, that they are also exported
+ * by the MS C++ runtime lib (MSVCP60.DLL).  The MSVCP60.DLL implementations
+ * of wctrans and towctrans are not C99 compliant in that wctrans("tolower")
+ * returns 0, while C99 specifies that a non-zero value should be returned
+ * for a valid string descriptor.  If you want the MS behaviour (and you
+ * have MSVCP60.DLL in your path) add -lmsvcp60 to your command line.
+ */
+__cdecl __MINGW_NOTHROW  wint_t towctrans (wint_t, wctrans_t);
+__cdecl __MINGW_NOTHROW  wctrans_t wctrans (const char*);
+__cdecl __MINGW_NOTHROW  wctype_t wctype (const char*);
+
+_END_C_DECLS
+
+#endif	/* _WCTYPE_H */
+#endif	/* ! RC_INVOKED */
+#endif	/* !_WCTYPE_H: $RCSfile: wctype.h,v $: end of file */
Index: Daodan/MinGW/include/winable.h
===================================================================
--- Daodan/MinGW/include/winable.h	(revision 1046)
+++ Daodan/MinGW/include/winable.h	(revision 1046)
@@ -0,0 +1,99 @@
+#ifndef _WINABLE_H
+#define _WINABLE_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#if (_WIN32_WINNT < 0x0403)
+#define INPUT_MOUSE 0x00000000
+#define INPUT_KEYBOARD 0x00000001
+#define INPUT_HARDWARE 0x00000002
+#endif /* (_WIN32_WINNT < 0x04030) */
+#if (WINVER < 0x0500)
+#define CHILDID_SELF 0
+#define OBJID_WINDOW 0x00000000
+#define OBJID_SYSMENU 0xFFFFFFFF
+#define OBJID_TITLEBAR 0xFFFFFFFE
+#define OBJID_MENU 0xFFFFFFFD
+#define OBJID_CLIENT 0xFFFFFFFC
+#define OBJID_VSCROLL 0xFFFFFFFB
+#define OBJID_HSCROLL 0xFFFFFFFA
+#define OBJID_SIZEGRIP 0xFFFFFFF9
+#define OBJID_CARET 0xFFFFFFF8
+#define OBJID_CURSOR 0xFFFFFFF7
+#define OBJID_ALERT 0xFFFFFFF6
+#define OBJID_SOUND 0xFFFFFFF5
+#define GUI_CARETBLINKING 0x00000001
+#define GUI_INMOVESIZE 0x00000002
+#define GUI_INMENUMODE 0x00000004
+#define GUI_SYSTEMMENUMODE 0x00000008
+#define GUI_POPUPMENUMODE 0x00000010
+#define WINEVENT_OUTOFCONTEXT 0x0000
+#define WINEVENT_SKIPOWNTHREAD 0x0001
+#define WINEVENT_SKIPOWNPROCESS 0x0002
+#define WINEVENT_INCONTEXT 0x0004
+#endif /* (WINVER < 0x0500) */
+#if (_WIN32_WINNT < 0x0403)
+typedef struct tagMOUSEINPUT {
+	LONG dx;
+	LONG dy;
+	DWORD mouseData;
+	DWORD dwFlags;
+	DWORD time;
+	ULONG_PTR dwExtraInfo;
+} MOUSEINPUT,*PMOUSEINPUT;
+typedef struct tagKEYBDINPUT {
+	WORD wVk;
+	WORD wScan;
+	DWORD dwFlags;
+	DWORD time;
+	ULONG_PTR dwExtraInfo;
+} KEYBDINPUT,*PKEYBDINPUT;
+typedef struct tagHARDWAREINPUT {
+	DWORD uMsg;
+	WORD wParamL;
+	WORD wParamH;
+} HARDWAREINPUT,*PHARDWAREINPUT;
+typedef struct tagINPUT {
+	DWORD type;
+	_ANONYMOUS_UNION union {
+		MOUSEINPUT mi;
+		KEYBDINPUT ki;
+		HARDWAREINPUT hi;
+	} DUMMYUNIONNAME;
+} INPUT,*PINPUT,*LPINPUT;
+#endif /* (_WIN32_WINNT < 0x0403) */
+#if (WINVER < 0x0500)
+typedef VOID (*WINEVENTPROC)(HWINEVENTHOOK,DWORD,HWND,LONG,LONG,DWORD,DWORD);
+typedef struct tagGUITHREADINFO {
+	DWORD cbSize;
+	DWORD flags;
+	HWND hwndActive;
+	HWND hwndFocus;
+	HWND hwndCapture;
+	HWND hwndMenuOwner;
+	HWND hwndMoveSize;
+	HWND hwndCaret;
+	RECT rcCaret;
+} GUITHREADINFO,*PGUITHREADINFO,*LPGUITHREADINFO;
+#endif /* (WINVER < 0x0500) */
+
+BOOL WINAPI BlockInput(BOOL);
+#if (_WIN32_WINNT < 0x0403)
+UINT WINAPI SendInput(UINT,LPINPUT,int);
+#endif
+#if (WINVER < 0x0500)
+BOOL WINAPI GetGUIThreadInfo(DWORD,LPGUITHREADINFO);
+void WINAPI NotifyWinEvent(DWORD,HWND,LONG,LONG);
+HWINEVENTHOOK WINAPI SetWinEventHook(UINT,UINT,HMODULE,WINEVENTPROC,DWORD,DWORD,UINT);
+BOOL WINAPI UnhookWinEvent(HWINEVENTHOOK);
+#endif /* (WINVER < 0x0500) */
+
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/winbase.h
===================================================================
--- Daodan/MinGW/include/winbase.h	(revision 1046)
+++ Daodan/MinGW/include/winbase.h	(revision 1046)
@@ -0,0 +1,2654 @@
+#ifndef _WINBASE_H
+#define _WINBASE_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#ifdef __GNUC__
+#define __GNUC_EXTENSION __extension__
+#else
+#define __GNUC_EXTENSION
+#endif
+
+#ifndef WINBASEAPI
+#ifdef __W32API_USE_DLLIMPORT__
+#define WINBASEAPI DECLSPEC_IMPORT
+#else
+#define WINBASEAPI
+#endif
+#endif
+
+#ifndef WINADVAPI
+#ifdef __W32API_USE_DLLIMPORT__
+#define WINADVAPI DECLSPEC_IMPORT
+#else
+#define WINADVAPI
+#endif
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define SP_SERIALCOMM 1
+#define PST_UNSPECIFIED	0
+#define PST_RS232	1
+#define PST_PARALLELPORT	2
+#define PST_RS422	3
+#define PST_RS423	4
+#define PST_RS449	5
+#define PST_MODEM	6
+#define PST_FAX	0x21
+#define PST_SCANNER	0x22
+#define PST_NETWORK_BRIDGE	0x100
+#define PST_LAT	0x101
+#define PST_TCPIP_TELNET	0x102
+#define PST_X25	0x103
+#define BAUD_075	1
+#define BAUD_110	2
+#define BAUD_134_5	4
+#define BAUD_150	8
+#define BAUD_300	16
+#define BAUD_600	32
+#define BAUD_1200	64
+#define BAUD_1800	128
+#define BAUD_2400	256
+#define BAUD_4800	512
+#define BAUD_7200	1024
+#define BAUD_9600	2048
+#define BAUD_14400	4096
+#define BAUD_19200	8192
+#define BAUD_38400	16384
+#define BAUD_56K	32768
+#define BAUD_128K	65536
+#define BAUD_115200	131072
+#define BAUD_57600	262144
+#define BAUD_USER	0x10000000
+#define PCF_DTRDSR	1
+#define PCF_RTSCTS	2
+#define PCF_RLSD	4
+#define PCF_PARITY_CHECK	8
+#define PCF_XONXOFF	16
+#define PCF_SETXCHAR	32
+#define PCF_TOTALTIMEOUTS	64
+#define PCF_INTTIMEOUTS	128
+#define PCF_SPECIALCHARS	256
+#define PCF_16BITMODE	512
+#define SP_PARITY	1
+#define SP_BAUD	2
+#define SP_DATABITS	4
+#define SP_STOPBITS	8
+#define SP_HANDSHAKING	16
+#define SP_PARITY_CHECK	32
+#define SP_RLSD	64
+#define DATABITS_5	1
+#define DATABITS_6	2
+#define DATABITS_7	4
+#define DATABITS_8	8
+#define DATABITS_16	16
+#define DATABITS_16X	32
+#define STOPBITS_10	1
+#define STOPBITS_15	2
+#define STOPBITS_20	4
+#define PARITY_NONE	256
+#define PARITY_ODD	512
+#define PARITY_EVEN	1024
+#define PARITY_MARK	2048
+#define PARITY_SPACE	4096
+#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
+#define HFILE_ERROR ((HFILE)-1)
+#define FILE_BEGIN	0
+#define FILE_CURRENT	1
+#define FILE_END	2
+#define INVALID_SET_FILE_POINTER	((DWORD)-1)
+#define OF_READ 0
+#define OF_READWRITE	2
+#define OF_WRITE	1
+#define OF_SHARE_COMPAT	0
+#define OF_SHARE_DENY_NONE	64
+#define OF_SHARE_DENY_READ	48
+#define OF_SHARE_DENY_WRITE	32
+#define OF_SHARE_EXCLUSIVE	16
+#define OF_CANCEL	2048
+#define OF_CREATE	4096
+#define OF_DELETE	512
+#define OF_EXIST	16384
+#define OF_PARSE	256
+#define OF_PROMPT	8192
+#define OF_REOPEN	32768
+#define OF_VERIFY	1024
+#define NMPWAIT_NOWAIT	1
+#define NMPWAIT_WAIT_FOREVER	((DWORD)-1)
+#define NMPWAIT_USE_DEFAULT_WAIT	0
+#define CE_BREAK	16
+#define CE_DNS	2048
+#define CE_FRAME	8
+#define CE_IOE	1024
+#define CE_MODE	32768
+#define CE_OOP	4096
+#define CE_OVERRUN	2
+#define CE_PTO	512
+#define CE_RXOVER	1
+#define CE_RXPARITY	4
+#define CE_TXFULL	256
+#define PROGRESS_CONTINUE	0
+#define PROGRESS_CANCEL	1
+#define PROGRESS_STOP	2
+#define PROGRESS_QUIET	3
+#define CALLBACK_CHUNK_FINISHED	0
+#define CALLBACK_STREAM_SWITCH	1
+#define COPY_FILE_FAIL_IF_EXISTS              0x0001
+#define COPY_FILE_RESTARTABLE                 0x0002
+#define COPY_FILE_OPEN_SOURCE_FOR_WRITE       0x0004
+#if (_WIN32_WINNT > 0x0500)
+#define COPY_FILE_ALLOW_DECRYPTED_DESTINATION 0x0008
+#if (_WIN32_WINNT > 0x0501)
+#define COPY_FILE_COPY_SYMLINK                0x0800
+#define COPY_FILE_NO_BUFFERING                0x1000
+#endif
+#endif
+#define OFS_MAXPATHNAME 128
+#define FILE_MAP_ALL_ACCESS     0xf001f
+#define FILE_MAP_READ   4
+#define FILE_MAP_WRITE  2
+#define FILE_MAP_COPY   1
+#define MUTEX_ALL_ACCESS	0x1f0001
+#define MUTEX_MODIFY_STATE	1
+#define SEMAPHORE_ALL_ACCESS	0x1f0003
+#define SEMAPHORE_MODIFY_STATE	2
+#define EVENT_ALL_ACCESS	0x1f0003
+#define EVENT_MODIFY_STATE	2
+#define PIPE_ACCESS_DUPLEX      3
+#define PIPE_ACCESS_INBOUND     1
+#define PIPE_ACCESS_OUTBOUND    2
+#define PIPE_TYPE_BYTE	0
+#define PIPE_TYPE_MESSAGE	4
+#define PIPE_READMODE_BYTE	0
+#define PIPE_READMODE_MESSAGE	2
+#define PIPE_WAIT	0
+#define PIPE_NOWAIT	1
+#define PIPE_CLIENT_END 0
+#define PIPE_SERVER_END 1
+#define PIPE_UNLIMITED_INSTANCES 255
+#define DEBUG_PROCESS			0x00000001
+#define DEBUG_ONLY_THIS_PROCESS		0x00000002
+#define CREATE_SUSPENDED		0x00000004
+#define DETACHED_PROCESS		0x00000008
+#define CREATE_NEW_CONSOLE		0x00000010
+#define NORMAL_PRIORITY_CLASS		0x00000020
+#define IDLE_PRIORITY_CLASS		0x00000040
+#define HIGH_PRIORITY_CLASS		0x00000080
+#define REALTIME_PRIORITY_CLASS		0x00000100
+#define CREATE_NEW_PROCESS_GROUP	0x00000200
+#define CREATE_UNICODE_ENVIRONMENT	0x00000400
+#define CREATE_SEPARATE_WOW_VDM		0x00000800
+#define CREATE_SHARED_WOW_VDM		0x00001000
+#define CREATE_FORCEDOS			0x00002000
+#define BELOW_NORMAL_PRIORITY_CLASS	0x00004000
+#define ABOVE_NORMAL_PRIORITY_CLASS	0x00008000
+#define STACK_SIZE_PARAM_IS_A_RESERVATION 0x00010000
+#define CREATE_BREAKAWAY_FROM_JOB	0x01000000
+#define CREATE_WITH_USERPROFILE		0x02000000
+#define CREATE_DEFAULT_ERROR_MODE	0x04000000
+#define CREATE_NO_WINDOW		0x08000000
+#define PROFILE_USER			0x10000000
+#define PROFILE_KERNEL			0x20000000
+#define PROFILE_SERVER			0x40000000
+#define CONSOLE_TEXTMODE_BUFFER 1
+#define CREATE_NEW	1
+#define CREATE_ALWAYS	2
+#define OPEN_EXISTING	3
+#define OPEN_ALWAYS	4
+#define TRUNCATE_EXISTING	5
+#define FILE_FLAG_WRITE_THROUGH	0x80000000
+#define FILE_FLAG_OVERLAPPED	1073741824
+#define FILE_FLAG_NO_BUFFERING	536870912
+#define FILE_FLAG_RANDOM_ACCESS	268435456
+#define FILE_FLAG_SEQUENTIAL_SCAN	134217728
+#define FILE_FLAG_DELETE_ON_CLOSE	67108864
+#define FILE_FLAG_BACKUP_SEMANTICS	33554432
+#define FILE_FLAG_POSIX_SEMANTICS	16777216
+#define FILE_FLAG_OPEN_REPARSE_POINT	2097152
+#define FILE_FLAG_OPEN_NO_RECALL	1048576
+#if (_WIN32_WINNT >= 0x0500)
+#define FILE_FLAG_FIRST_PIPE_INSTANCE	524288
+#endif
+#define SYMBOLIC_LINK_FLAG_DIRECTORY	0x1
+#define CLRDTR 6
+#define CLRRTS 4
+#define SETDTR 5
+#define SETRTS 3
+#define SETXOFF 1
+#define SETXON 2
+#define SETBREAK 8
+#define CLRBREAK 9
+#define STILL_ACTIVE 0x103
+#define FIND_FIRST_EX_CASE_SENSITIVE 1
+#define SCS_32BIT_BINARY 0
+#define SCS_64BIT_BINARY 6
+#define SCS_DOS_BINARY 1
+#define SCS_OS216_BINARY 5
+#define SCS_PIF_BINARY 3
+#define SCS_POSIX_BINARY 4
+#define SCS_WOW_BINARY 2
+#define MAX_COMPUTERNAME_LENGTH 15
+#define HW_PROFILE_GUIDLEN	39
+#define MAX_PROFILE_LEN	80
+#define DOCKINFO_UNDOCKED	1
+#define DOCKINFO_DOCKED	2
+#define DOCKINFO_USER_SUPPLIED	4
+#define DOCKINFO_USER_UNDOCKED	(DOCKINFO_USER_SUPPLIED|DOCKINFO_UNDOCKED)
+#define DOCKINFO_USER_DOCKED	(DOCKINFO_USER_SUPPLIED|DOCKINFO_DOCKED)
+#define DRIVE_REMOVABLE 2
+#define DRIVE_FIXED 3
+#define DRIVE_REMOTE 4
+#define DRIVE_CDROM 5
+#define DRIVE_RAMDISK 6
+#define DRIVE_UNKNOWN 0
+#define DRIVE_NO_ROOT_DIR 1
+#define FILE_TYPE_UNKNOWN 0
+#define FILE_TYPE_DISK 1
+#define FILE_TYPE_CHAR 2
+#define FILE_TYPE_PIPE 3
+#define FILE_TYPE_REMOTE 0x8000
+#define FILE_ENCRYPTABLE 0
+#define FILE_IS_ENCRYPTED 1
+#define FILE_READ_ONLY 8
+#define FILE_ROOT_DIR 3
+#define FILE_SYSTEM_ATTR 2
+#define FILE_SYSTEM_DIR 4
+#define FILE_SYSTEM_NOT_SUPPORT 6
+#define FILE_UNKNOWN 5
+#define FILE_USER_DISALLOWED 7
+/* also in ddk/ntapi.h */
+#define HANDLE_FLAG_INHERIT		0x01
+#define HANDLE_FLAG_PROTECT_FROM_CLOSE	0x02
+/* end ntapi.h */
+#define STD_INPUT_HANDLE (DWORD)(0xfffffff6)
+#define STD_OUTPUT_HANDLE (DWORD)(0xfffffff5)
+#define STD_ERROR_HANDLE (DWORD)(0xfffffff4)
+#define INVALID_HANDLE_VALUE (HANDLE)(-1)
+#define GET_TAPE_MEDIA_INFORMATION 0
+#define GET_TAPE_DRIVE_INFORMATION 1
+#define SET_TAPE_MEDIA_INFORMATION 0
+#define SET_TAPE_DRIVE_INFORMATION 1
+#if (_WIN32_WINNT >= 0x0600)
+#define THREAD_MODE_BACKGROUND_BEGIN 0x00010000
+#define THREAD_MODE_BACKGROUND_END 0x00020000
+#endif
+#define THREAD_PRIORITY_ABOVE_NORMAL 1
+#define THREAD_PRIORITY_BELOW_NORMAL (-1)
+#define THREAD_PRIORITY_HIGHEST 2
+#define THREAD_PRIORITY_IDLE (-15)
+#define THREAD_PRIORITY_LOWEST (-2)
+#define THREAD_PRIORITY_NORMAL 0
+#define THREAD_PRIORITY_TIME_CRITICAL 15
+#define THREAD_PRIORITY_ERROR_RETURN 2147483647
+#define TIME_ZONE_ID_UNKNOWN 0
+#define TIME_ZONE_ID_STANDARD 1
+#define TIME_ZONE_ID_DAYLIGHT 2
+#define TIME_ZONE_ID_INVALID 0xFFFFFFFF
+#define FS_CASE_IS_PRESERVED 2
+#define FS_CASE_SENSITIVE 1
+#define FS_UNICODE_STORED_ON_DISK 4
+#define FS_PERSISTENT_ACLS 8
+#define FS_FILE_COMPRESSION 16
+#define FS_VOL_IS_COMPRESSED 32768
+#define GMEM_FIXED 0
+#define GMEM_MOVEABLE 2
+#define GMEM_MODIFY 128
+#define GPTR 64
+#define GHND 66
+#define GMEM_DDESHARE 8192
+#define GMEM_DISCARDABLE 256
+#define GMEM_LOWER 4096
+#define GMEM_NOCOMPACT 16
+#define GMEM_NODISCARD 32
+#define GMEM_NOT_BANKED 4096
+#define GMEM_NOTIFY 16384
+#define GMEM_SHARE 8192
+#define GMEM_ZEROINIT 64
+#define GMEM_DISCARDED 16384
+#define GMEM_INVALID_HANDLE 32768
+#define GMEM_LOCKCOUNT 255
+#define GMEM_VALID_FLAGS 32626
+#define STATUS_WAIT_0 0
+#define STATUS_ABANDONED_WAIT_0 0x80
+#define STATUS_USER_APC 0xC0
+#define STATUS_TIMEOUT 0x102
+#define STATUS_PENDING 0x103
+#define STATUS_SEGMENT_NOTIFICATION 0x40000005
+#define STATUS_GUARD_PAGE_VIOLATION 0x80000001
+#define STATUS_DATATYPE_MISALIGNMENT 0x80000002
+#define STATUS_BREAKPOINT 0x80000003
+#define STATUS_SINGLE_STEP 0x80000004
+#define STATUS_ACCESS_VIOLATION 0xC0000005
+#define STATUS_IN_PAGE_ERROR 0xC0000006
+#define STATUS_INVALID_HANDLE 0xC0000008L
+#define STATUS_NO_MEMORY 0xC0000017
+#define STATUS_ILLEGAL_INSTRUCTION 0xC000001D
+#define STATUS_NONCONTINUABLE_EXCEPTION 0xC0000025
+#define STATUS_INVALID_DISPOSITION 0xC0000026
+#define STATUS_ARRAY_BOUNDS_EXCEEDED 0xC000008C
+#define STATUS_FLOAT_DENORMAL_OPERAND 0xC000008D
+#define STATUS_FLOAT_DIVIDE_BY_ZERO 0xC000008E
+#define STATUS_FLOAT_INEXACT_RESULT 0xC000008F
+#define STATUS_FLOAT_INVALID_OPERATION 0xC0000090
+#define STATUS_FLOAT_OVERFLOW 0xC0000091
+#define STATUS_FLOAT_STACK_CHECK 0xC0000092
+#define STATUS_FLOAT_UNDERFLOW 0xC0000093
+#define STATUS_INTEGER_DIVIDE_BY_ZERO 0xC0000094
+#define STATUS_INTEGER_OVERFLOW 0xC0000095
+#define STATUS_PRIVILEGED_INSTRUCTION 0xC0000096
+#define STATUS_STACK_OVERFLOW 0xC00000FD
+#define STATUS_CONTROL_C_EXIT 0xC000013A
+#define STATUS_DLL_INIT_FAILED 0xC0000142
+#define STATUS_DLL_INIT_FAILED_LOGOFF 0xC000026B
+#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 CONTROL_C_EXIT	STATUS_CONTROL_C_EXIT
+#define PROCESS_HEAP_REGION 1
+#define PROCESS_HEAP_UNCOMMITTED_RANGE 2
+#define PROCESS_HEAP_ENTRY_BUSY 4
+#define PROCESS_HEAP_ENTRY_MOVEABLE 16
+#define PROCESS_HEAP_ENTRY_DDESHARE 32
+#define DONT_RESOLVE_DLL_REFERENCES 1
+#define LOAD_LIBRARY_AS_DATAFILE 2
+#define LOAD_WITH_ALTERED_SEARCH_PATH 8
+#define LMEM_FIXED 0
+#define LMEM_MOVEABLE 2
+#define LMEM_NONZEROLHND 2
+#define LMEM_NONZEROLPTR 0
+#define LMEM_DISCARDABLE 3840
+#define LMEM_NOCOMPACT 16
+#define LMEM_NODISCARD 32
+#define LMEM_ZEROINIT 64
+#define LMEM_DISCARDED 16384
+#define LMEM_MODIFY 128
+#define LMEM_INVALID_HANDLE 32768
+#define LMEM_LOCKCOUNT 255
+#define LPTR 64
+#define LHND 66
+#define NONZEROLHND 2
+#define NONZEROLPTR 0
+#define LOCKFILE_FAIL_IMMEDIATELY 1
+#define LOCKFILE_EXCLUSIVE_LOCK 2
+#define LOGON32_PROVIDER_DEFAULT	0
+#define LOGON32_PROVIDER_WINNT35	1
+#if (_WIN32_WINNT >= 0x0400)
+#define LOGON32_PROVIDER_WINNT40	2
+#endif
+#if (_WIN32_WINNT >= 0x0500)
+#define LOGON32_PROVIDER_WINNT50	3
+#endif
+#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
+#if (_WIN32_WINNT >= 0x0500)
+#define LOGON32_LOGON_NETWORK_CLEARTEXT	8
+#define LOGON32_LOGON_NEW_CREDENTIALS	9
+#endif
+#define MOVEFILE_REPLACE_EXISTING 1
+#define MOVEFILE_COPY_ALLOWED 2
+#define MOVEFILE_DELAY_UNTIL_REBOOT 4
+#define MOVEFILE_WRITE_THROUGH 8
+#define MAXIMUM_WAIT_OBJECTS 64
+#define MAXIMUM_SUSPEND_COUNT 0x7F
+#define WAIT_OBJECT_0 0
+#define WAIT_ABANDONED_0 128
+#ifndef WAIT_TIMEOUT /* also in winerror.h */
+#define WAIT_TIMEOUT 258
+#endif
+#define WAIT_IO_COMPLETION 0xC0
+#define WAIT_ABANDONED 128
+#define WAIT_FAILED ((DWORD)0xFFFFFFFF)
+#define PURGE_TXABORT 1
+#define PURGE_RXABORT 2
+#define PURGE_TXCLEAR 4
+#define PURGE_RXCLEAR 8
+#define EVENTLOG_SUCCESS 0
+#define EVENTLOG_FORWARDS_READ 4
+#define EVENTLOG_BACKWARDS_READ 8
+#define EVENTLOG_SEEK_READ 2
+#define EVENTLOG_SEQUENTIAL_READ 1
+#define EVENTLOG_ERROR_TYPE 1
+#define EVENTLOG_WARNING_TYPE 2
+#define EVENTLOG_INFORMATION_TYPE 4
+#define EVENTLOG_AUDIT_SUCCESS 8
+#define EVENTLOG_AUDIT_FAILURE 16
+#define FORMAT_MESSAGE_ALLOCATE_BUFFER 256
+#define FORMAT_MESSAGE_IGNORE_INSERTS 512
+#define FORMAT_MESSAGE_FROM_STRING 1024
+#define FORMAT_MESSAGE_FROM_HMODULE 2048
+#define FORMAT_MESSAGE_FROM_SYSTEM 4096
+#define FORMAT_MESSAGE_ARGUMENT_ARRAY 8192
+#define FORMAT_MESSAGE_MAX_WIDTH_MASK 255
+#define EV_BREAK 64
+#define EV_CTS 8
+#define EV_DSR 16
+#define EV_ERR 128
+#define EV_EVENT1 2048
+#define EV_EVENT2 4096
+#define EV_PERR 512
+#define EV_RING 256
+#define EV_RLSD 32
+#define EV_RX80FULL 1024
+#define EV_RXCHAR 1
+#define EV_RXFLAG 2
+#define EV_TXEMPTY 4
+/* also in ddk/ntapi.h */
+/* To restore default error mode, call SetErrorMode (0).  */
+#define SEM_FAILCRITICALERRORS		0x0001
+#define SEM_NOGPFAULTERRORBOX		0x0002
+#define SEM_NOALIGNMENTFAULTEXCEPT	0x0004
+#define SEM_NOOPENFILEERRORBOX		0x8000
+/* end ntapi.h */
+#define SLE_ERROR 1
+#define SLE_MINORERROR 2
+#define SLE_WARNING 3
+#define SHUTDOWN_NORETRY 1
+#define EXCEPTION_EXECUTE_HANDLER 1
+#define EXCEPTION_CONTINUE_EXECUTION (-1)
+#define EXCEPTION_CONTINUE_SEARCH 0
+#define MAXINTATOM 0xC000
+#define INVALID_ATOM ((ATOM)0)
+#define IGNORE	0
+#define INFINITE	0xFFFFFFFF
+#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 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 BACKUP_INVALID	0
+#define BACKUP_DATA 1
+#define BACKUP_EA_DATA 2
+#define BACKUP_SECURITY_DATA 3
+#define BACKUP_ALTERNATE_DATA 4
+#define BACKUP_LINK 5
+#define BACKUP_PROPERTY_DATA 6
+#define BACKUP_OBJECT_ID 7
+#define BACKUP_REPARSE_DATA 8
+#define BACKUP_SPARSE_BLOCK 9
+#define STREAM_NORMAL_ATTRIBUTE 0
+#define STREAM_MODIFIED_WHEN_READ 1
+#define STREAM_CONTAINS_SECURITY 2
+#define STREAM_CONTAINS_PROPERTIES 4
+#define STARTF_USESHOWWINDOW 1
+#define STARTF_USESIZE 2
+#define STARTF_USEPOSITION 4
+#define STARTF_USECOUNTCHARS 8
+#define STARTF_USEFILLATTRIBUTE 16
+#define STARTF_RUNFULLSCREEN 32
+#define STARTF_FORCEONFEEDBACK 64
+#define STARTF_FORCEOFFFEEDBACK 128
+#define STARTF_USESTDHANDLES 256
+#define STARTF_USEHOTKEY 512
+#define TC_NORMAL 0
+#define TC_HARDERR 1
+#define TC_GP_TRAP 2
+#define TC_SIGNAL 3
+#define AC_LINE_OFFLINE 0
+#define AC_LINE_ONLINE 1
+#define AC_LINE_BACKUP_POWER 2
+#define AC_LINE_UNKNOWN 255
+#define BATTERY_FLAG_HIGH 1
+#define BATTERY_FLAG_LOW 2
+#define BATTERY_FLAG_CRITICAL 4
+#define BATTERY_FLAG_CHARGING 8
+#define BATTERY_FLAG_NO_BATTERY 128
+#define BATTERY_FLAG_UNKNOWN 255
+#define BATTERY_PERCENTAGE_UNKNOWN 255
+#define BATTERY_LIFE_UNKNOWN 0xFFFFFFFF
+#define DDD_RAW_TARGET_PATH 1
+#define DDD_REMOVE_DEFINITION 2
+#define DDD_EXACT_MATCH_ON_REMOVE 4
+#define HINSTANCE_ERROR 32
+#define MS_CTS_ON 16
+#define MS_DSR_ON 32
+#define MS_RING_ON 64
+#define MS_RLSD_ON 128
+#define DTR_CONTROL_DISABLE 0
+#define DTR_CONTROL_ENABLE 1
+#define DTR_CONTROL_HANDSHAKE 2
+#define RTS_CONTROL_DISABLE 0
+#define RTS_CONTROL_ENABLE 1
+#define RTS_CONTROL_HANDSHAKE 2
+#define RTS_CONTROL_TOGGLE 3
+#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 INVALID_FILE_SIZE 0xFFFFFFFF
+#define TLS_OUT_OF_INDEXES (DWORD)0xFFFFFFFF
+#define GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS 0x00000004
+#define GET_MODULE_HANDLE_EX_FLAG_PIN 0x00000001
+#define GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT 0x00000002
+#if (_WIN32_WINNT >= 0x0501)
+#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_HMODULE_VALID 0x00000080
+#define DEACTIVATE_ACTCTX_FLAG_FORCE_EARLY_DEACTIVATION 0x00000001
+#define FIND_ACTCTX_SECTION_KEY_RETURN_HACTCTX 0x00000001
+#define QUERY_ACTCTX_FLAG_USE_ACTIVE_ACTCTX 0x00000004
+#define QUERY_ACTCTX_FLAG_ACTCTX_IS_HMODULE 0x00000008
+#define QUERY_ACTCTX_FLAG_ACTCTX_IS_ADDRESS 0x00000010
+#endif /* (_WIN32_WINNT >= 0x0501) */
+#if (_WIN32_WINNT >= 0x0500)
+#define REPLACEFILE_WRITE_THROUGH 0x00000001
+#define REPLACEFILE_IGNORE_MERGE_ERRORS 0x00000002
+#endif /* (_WIN32_WINNT >= 0x0500) */
+#define WRITE_WATCH_FLAG_RESET 1
+#if (_WIN32_WINNT >= 0x0601)
+#define PROCESS_DEP_ENABLE 1
+#define PROCESS_DEP_DISABLE_ATL_THUNK_EMULATION 2
+#endif
+#if (_WIN32_WINNT >= 0x0600)
+/* http://msdn.microsoft.com/en-us/library/aa363866%28VS.85%29.aspx */
+#define SYMBOLIC_LINK_FLAG_DIRECTORY 0x1
+/* http://msdn.microsoft.com/en-us/library/aa364962%28VS.85%29.aspx */
+#define FILE_NAME_NORMALIZED 0x0
+#define FILE_NAME_OPENED 0x8
+#define VOLUME_NAME_DOS 0x0
+#define VOLUME_NAME_GUID 0x1
+#define VOLUME_NAME_NONE 0x4
+#define VOLUME_NAME_NT 0x2
+#endif /* (_WIN32_WINNT >= 0x0600) */
+
+#ifndef RC_INVOKED
+typedef struct _FILETIME {
+	DWORD dwLowDateTime;
+	DWORD dwHighDateTime;
+} FILETIME,*PFILETIME,*LPFILETIME;
+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,*LPBY_HANDLE_FILE_INFORMATION;
+#if (_WIN32_WINNT >= 0x0600)
+/* http://msdn.microsoft.com/en-us/library/aa364217%28VS.85%29.aspx */
+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,*LPFILE_BASIC_INFO;
+/* http://msdn.microsoft.com/en-us/library/aa364401%28VS.85%29.aspx */
+typedef struct _FILE_STANDARD_INFO {
+	LARGE_INTEGER	AllocationSize;
+	LARGE_INTEGER	EndOfFile;
+	DWORD	NumberOfLinks;
+	BOOL	DeletePending;
+	BOOL	Directory;
+} FILE_STANDARD_INFO,*PFILE_STANDARD_INFO,*LPFILE_STANDARD_INFO;
+/* http://msdn.microsoft.com/en-us/library/aa364388%28v=VS.85%29.aspx */
+typedef struct _FILE_NAME_INFO {
+	DWORD	FileNameLength;
+	WCHAR	FileName[1];
+} FILE_NAME_INFO,*PFILE_NAME_INFO,*LPFILE_NAME_INFO;
+/* http://msdn.microsoft.com/en-us/library/aa364406%28v=VS.85%29.aspx */
+typedef struct _FILE_STREAM_INFO {
+	DWORD	NextEntryOffset;
+	DWORD	StreamNameLength;
+	LARGE_INTEGER	StreamSize;
+	LARGE_INTEGER	StreamAllocationSize;
+	WCHAR	StreamName[1];
+} FILE_STREAM_INFO,*PFILE_STREAM_INFO,*LPFILE_STREAM_INFO;
+/* http://msdn.microsoft.com/en-us/library/aa364220%28v=VS.85%29.aspx */
+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,*LPFILE_COMPRESSION_INFO;
+/* http://msdn.microsoft.com/en-us/library/aa364216%28v=VS.85%29.aspx */
+typedef struct _FILE_ATTRIBUTE_TAG_INFO {
+	DWORD	FileAttributes;
+	DWORD	ReparseTag;
+} FILE_ATTRIBUTE_TAG_INFO,*PFILE_ATTRIBUTE_TAG_INFO,*LPFILE_ATTRIBUTE_TAG_INFO;
+/* http://msdn.microsoft.com/en-us/library/aa364226%28v=VS.85%29.aspx */
+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,*LPFILE_ID_BOTH_DIR_INFO;
+/* http://msdn.microsoft.com/en-us/library/dd979524%28v=VS.85%29.aspx */
+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,*LPFILE_REMOTE_PROTOCOL_INFO;
+#endif /* (_WIN32_WINNT >= 0x0600) */
+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 _COMM_CONFIG {
+	DWORD dwSize;
+	WORD  wVersion;
+	WORD  wReserved;
+	DCB   dcb;
+	DWORD dwProviderSubType;
+	DWORD dwProviderOffset;
+	DWORD dwProviderSize;
+	WCHAR wcProviderData[1];
+} COMMCONFIG,*LPCOMMCONFIG;
+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;
+typedef struct _COMMTIMEOUTS {
+	DWORD ReadIntervalTimeout;
+	DWORD ReadTotalTimeoutMultiplier;
+	DWORD ReadTotalTimeoutConstant;
+	DWORD WriteTotalTimeoutMultiplier;
+	DWORD WriteTotalTimeoutConstant;
+} COMMTIMEOUTS,*LPCOMMTIMEOUTS;
+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;
+typedef DWORD (WINAPI *LPTHREAD_START_ROUTINE)(LPVOID);
+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 _CREATE_THREAD_DEBUG_INFO {
+	HANDLE hThread;
+	LPVOID lpThreadLocalBase;
+	LPTHREAD_START_ROUTINE lpStartAddress;
+} CREATE_THREAD_DEBUG_INFO,*LPCREATE_THREAD_DEBUG_INFO;
+typedef struct _EXCEPTION_DEBUG_INFO {
+	EXCEPTION_RECORD ExceptionRecord;
+	DWORD dwFirstChance;
+} EXCEPTION_DEBUG_INFO,*LPEXCEPTION_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 struct _OVERLAPPED {
+	ULONG_PTR Internal;
+	ULONG_PTR InternalHigh;
+	__GNUC_EXTENSION union {
+		__GNUC_EXTENSION struct {
+	DWORD Offset;
+	DWORD OffsetHigh;
+	};
+	PVOID Pointer;
+	};
+	HANDLE hEvent;
+} OVERLAPPED,*POVERLAPPED,*LPOVERLAPPED;
+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;
+	PBYTE	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;
+	PBYTE	lpReserved2;
+	HANDLE	hStdInput;
+	HANDLE	hStdOutput;
+	HANDLE	hStdError;
+} STARTUPINFOW,*LPSTARTUPINFOW;
+typedef struct _PROCESS_INFORMATION {
+	HANDLE hProcess;
+	HANDLE hThread;
+	DWORD dwProcessId;
+	DWORD dwThreadId;
+} PROCESS_INFORMATION,*PPROCESS_INFORMATION,*LPPROCESS_INFORMATION;
+typedef struct _CRITICAL_SECTION_DEBUG {
+	WORD Type;
+	WORD CreatorBackTraceIndex;
+	struct _CRITICAL_SECTION *CriticalSection;
+	LIST_ENTRY ProcessLocksList;
+	DWORD EntryCount;
+	DWORD ContentionCount;
+	DWORD Spare [2];
+} CRITICAL_SECTION_DEBUG,*PCRITICAL_SECTION_DEBUG;
+typedef struct _CRITICAL_SECTION {
+	PCRITICAL_SECTION_DEBUG DebugInfo;
+	LONG LockCount;
+	LONG RecursionCount;
+	HANDLE OwningThread;
+	HANDLE LockSemaphore;
+	DWORD SpinCount;
+} CRITICAL_SECTION,*PCRITICAL_SECTION,*LPCRITICAL_SECTION;
+typedef struct _SYSTEMTIME {
+	WORD wYear;
+	WORD wMonth;
+	WORD wDayOfWeek;
+	WORD wDay;
+	WORD wHour;
+	WORD wMinute;
+	WORD wSecond;
+	WORD wMilliseconds;
+} SYSTEMTIME,*LPSYSTEMTIME;
+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;
+typedef struct _WIN32_FIND_DATAA {
+	DWORD dwFileAttributes;
+	FILETIME ftCreationTime;
+	FILETIME ftLastAccessTime;
+	FILETIME ftLastWriteTime;
+	DWORD nFileSizeHigh;
+	DWORD nFileSizeLow;
+#ifdef _WIN32_WCE
+    DWORD dwOID;
+#else
+	DWORD dwReserved0;
+	DWORD dwReserved1;
+#endif
+	CHAR cFileName[MAX_PATH];
+#ifndef _WIN32_WCE
+	CHAR cAlternateFileName[14];
+#endif
+} 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;
+#ifdef _WIN32_WCE
+    DWORD dwOID;
+#else
+	DWORD dwReserved0;
+	DWORD dwReserved1;
+#endif
+	WCHAR cFileName[MAX_PATH];
+#ifndef _WIN32_WCE
+	WCHAR cAlternateFileName[14];
+#endif
+} WIN32_FIND_DATAW,*PWIN32_FIND_DATAW,*LPWIN32_FIND_DATAW;
+typedef struct _WIN32_STREAM_ID {
+	DWORD dwStreamId;
+	DWORD dwStreamAttributes;
+	LARGE_INTEGER Size;
+	DWORD dwStreamNameSize;
+	WCHAR cStreamName[ANYSIZE_ARRAY];
+} WIN32_STREAM_ID, *LPWIN32_STREAM_ID;
+typedef enum _FINDEX_INFO_LEVELS {
+	FindExInfoStandard,
+	FindExInfoMaxInfoLevel
+} FINDEX_INFO_LEVELS;
+typedef enum _FINDEX_SEARCH_OPS {
+	FindExSearchNameMatch,
+	FindExSearchLimitToDirectories,
+	FindExSearchLimitToDevices,
+	FindExSearchMaxSearchOp
+} FINDEX_SEARCH_OPS;
+typedef enum _ACL_INFORMATION_CLASS {
+	AclRevisionInformation=1,
+	AclSizeInformation
+} ACL_INFORMATION_CLASS;
+typedef struct tagHW_PROFILE_INFOA {
+	DWORD dwDockInfo;
+	CHAR szHwProfileGuid[HW_PROFILE_GUIDLEN];
+	CHAR szHwProfileName[MAX_PROFILE_LEN];
+} HW_PROFILE_INFOA,*LPHW_PROFILE_INFOA;
+typedef struct tagHW_PROFILE_INFOW {
+	DWORD dwDockInfo;
+	WCHAR szHwProfileGuid[HW_PROFILE_GUIDLEN];
+	WCHAR szHwProfileName[MAX_PROFILE_LEN];
+} HW_PROFILE_INFOW,*LPHW_PROFILE_INFOW;
+typedef enum _GET_FILEEX_INFO_LEVELS {
+	GetFileExInfoStandard,
+	GetFileExMaxInfoLevel
+} GET_FILEEX_INFO_LEVELS;
+typedef struct _SYSTEM_INFO {
+	_ANONYMOUS_UNION union {
+		DWORD dwOemId;
+		_ANONYMOUS_STRUCT struct {
+			WORD wProcessorArchitecture;
+			WORD wReserved;
+		} DUMMYSTRUCTNAME;
+	} DUMMYUNIONNAME;
+	DWORD dwPageSize;
+	PVOID lpMinimumApplicationAddress;
+	PVOID lpMaximumApplicationAddress;
+	DWORD dwActiveProcessorMask;
+	DWORD dwNumberOfProcessors;
+	DWORD dwProcessorType;
+	DWORD dwAllocationGranularity;
+	WORD wProcessorLevel;
+	WORD wProcessorRevision;
+} SYSTEM_INFO,*LPSYSTEM_INFO;
+typedef struct _SYSTEM_POWER_STATUS {
+	BYTE ACLineStatus;
+	BYTE BatteryFlag;
+	BYTE BatteryLifePercent;
+	BYTE Reserved1;
+	DWORD BatteryLifeTime;
+	DWORD BatteryFullLifeTime;
+} SYSTEM_POWER_STATUS,*LPSYSTEM_POWER_STATUS;
+typedef struct _TIME_ZONE_INFORMATION {
+	LONG Bias;
+	WCHAR StandardName[32];
+	SYSTEMTIME StandardDate;
+	LONG StandardBias;
+	WCHAR DaylightName[32];
+	SYSTEMTIME DaylightDate;
+	LONG DaylightBias;
+} TIME_ZONE_INFORMATION,*LPTIME_ZONE_INFORMATION;
+typedef struct _MEMORYSTATUS {
+	DWORD dwLength;
+	DWORD dwMemoryLoad;
+	DWORD dwTotalPhys;
+	DWORD dwAvailPhys;
+	DWORD dwTotalPageFile;
+	DWORD dwAvailPageFile;
+	DWORD dwTotalVirtual;
+	DWORD dwAvailVirtual;
+} MEMORYSTATUS,*LPMEMORYSTATUS;
+#if (_WIN32_WINNT >= 0x0500)
+typedef struct _MEMORYSTATUSEX {
+	DWORD dwLength;
+	DWORD dwMemoryLoad;
+	DWORDLONG ullTotalPhys;
+	DWORDLONG ullAvailPhys;
+	DWORDLONG ullTotalPageFile;
+	DWORDLONG ullAvailPageFile;
+	DWORDLONG ullTotalVirtual;
+	DWORDLONG ullAvailVirtual;
+	DWORDLONG ullAvailExtendedVirtual;
+} MEMORYSTATUSEX,*LPMEMORYSTATUSEX;
+#endif
+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,*LPLDT_ENTRY;
+typedef struct _PROCESS_HEAP_ENTRY {
+	PVOID lpData;
+	DWORD cbData;
+	BYTE cbOverhead;
+	BYTE iRegionIndex;
+	WORD wFlags;
+	_ANONYMOUS_UNION union {
+		struct {
+			HANDLE hMem;
+			DWORD dwReserved[3];
+		} Block;
+		struct {
+			DWORD dwCommittedSize;
+			DWORD dwUnCommittedSize;
+			LPVOID lpFirstBlock;
+			LPVOID lpLastBlock;
+		} Region;
+	} DUMMYUNIONNAME;
+} PROCESS_HEAP_ENTRY,*LPPROCESS_HEAP_ENTRY;
+typedef struct _OFSTRUCT {
+	BYTE cBytes;
+	BYTE fFixedDisk;
+	WORD nErrCode;
+	WORD Reserved1;
+	WORD Reserved2;
+	CHAR szPathName[OFS_MAXPATHNAME];
+} OFSTRUCT,*LPOFSTRUCT,*POFSTRUCT;
+typedef struct _WIN_CERTIFICATE {
+      DWORD dwLength;
+      WORD wRevision;
+      WORD wCertificateType;
+      BYTE bCertificate[1];
+} WIN_CERTIFICATE, *LPWIN_CERTIFICATE;
+#if (_WIN32_WINNT >= 0x0501)
+typedef struct tagACTCTXA {
+	ULONG cbSize;
+	DWORD dwFlags;
+	LPCSTR lpSource;
+	USHORT wProcessorArchitecture;
+	LANGID wLangId;
+	LPCSTR lpAssemblyDirectory;
+	LPCSTR lpResourceName;
+	LPCSTR lpApplicationName;
+	HMODULE hModule;
+} ACTCTXA,*PACTCTXA;
+typedef const ACTCTXA *PCACTCTXA;
+typedef struct tagACTCTXW {
+	ULONG cbSize;
+	DWORD dwFlags;
+	LPCWSTR lpSource;
+	USHORT wProcessorArchitecture;
+	LANGID wLangId;
+	LPCWSTR lpAssemblyDirectory;
+	LPCWSTR lpResourceName;
+	LPCWSTR lpApplicationName;
+	HMODULE hModule;
+} ACTCTXW,*PACTCTXW;
+typedef const ACTCTXW *PCACTCTXW;
+typedef struct tagACTCTX_SECTION_KEYED_DATA {
+	ULONG cbSize;
+	ULONG ulDataFormatVersion;
+	PVOID lpData;
+	ULONG ulLength;
+	PVOID lpSectionGlobalData;
+	ULONG ulSectionGlobalDataLength;
+	PVOID lpSectionBase;
+	ULONG ulSectionTotalLength;
+	HANDLE hActCtx;
+	HANDLE ulAssemblyRosterIndex;
+} ACTCTX_SECTION_KEYED_DATA,*PACTCTX_SECTION_KEYED_DATA;
+typedef const ACTCTX_SECTION_KEYED_DATA *PCACTCTX_SECTION_KEYED_DATA;
+typedef enum {
+	LowMemoryResourceNotification ,
+	HighMemoryResourceNotification
+} MEMORY_RESOURCE_NOTIFICATION_TYPE;
+#endif
+#if (_WIN32_WINNT >= 0x0500)
+typedef enum _COMPUTER_NAME_FORMAT {
+	ComputerNameNetBIOS,
+	ComputerNameDnsHostname,
+	ComputerNameDnsDomain,
+	ComputerNameDnsFullyQualified,
+	ComputerNamePhysicalNetBIOS,
+	ComputerNamePhysicalDnsHostname,
+	ComputerNamePhysicalDnsDomain,
+	ComputerNamePhysicalDnsFullyQualified,
+	ComputerNameMax
+} COMPUTER_NAME_FORMAT;
+#endif
+#if (_WIN32_WINNT >= 0x0500 || _WIN32_WINDOWS >= 0x0410)
+typedef DWORD EXECUTION_STATE;
+#endif
+#if (_WIN32_WINNT >= 0x0600)
+typedef enum _DEP_SYSTEM_POLICY_TYPE {
+	AlwaysOn,
+	AlwaysOff,
+	OptIn,
+	OptOut
+} DEP_SYSTEM_POLICY_TYPE;
+/* http://msdn.microsoft.com/en-us/library/aa364228%28v=VS.85%29.aspx */
+typedef enum _FILE_INFO_BY_HANDLE_CLASS {
+  FileBasicInfo,
+  FileStandardInfo,
+  FileNameInfo,
+  FileRenameInfo,
+  FileDispositionInfo,
+  FileAllocationInfo,
+  FileEndOfFileInfo,
+  FileStreamInfo,
+  FileCompressionInfo,
+  FileAttributeTagInfo,
+  FileIdBothDirectoryInfo,
+  FileIdBothDirectoryRestartInfo,
+  FileIoPriorityHintInfo,
+  FileRemoteProtocolInfo,
+  MaximumFileInfoByHandlesClass
+} FILE_INFO_BY_HANDLE_CLASS,*PFILE_INFO_BY_HANDLE_CLASS;
+#endif
+
+typedef DWORD(WINAPI *LPPROGRESS_ROUTINE)(LARGE_INTEGER,LARGE_INTEGER,LARGE_INTEGER,LARGE_INTEGER,DWORD,DWORD,HANDLE,HANDLE,LPVOID);
+typedef void(WINAPI *LPFIBER_START_ROUTINE)(PVOID);
+typedef BOOL(CALLBACK *ENUMRESLANGPROCA)(HMODULE,LPCSTR,LPCSTR,WORD,LONG);
+typedef BOOL(CALLBACK *ENUMRESLANGPROCW)(HMODULE,LPCWSTR,LPCWSTR,WORD,LONG);
+#ifdef UNICODE
+#define ENUMRESLANGPROC ENUMRESLANGPROCW
+#else
+#define ENUMRESLANGPROC ENUMRESLANGPROCA
+#endif
+typedef BOOL(CALLBACK *ENUMRESNAMEPROCA)(HMODULE,LPCSTR,LPSTR,LONG);
+typedef BOOL(CALLBACK *ENUMRESNAMEPROCW)(HMODULE,LPCWSTR,LPWSTR,LONG);
+#ifdef UNICODE
+#define ENUMRESNAMEPROC ENUMRESNAMEPROCW
+#else
+#define ENUMRESNAMEPROC ENUMRESNAMEPROCA
+#endif
+typedef BOOL(CALLBACK *ENUMRESTYPEPROCA)(HMODULE,LPSTR,LONG);
+typedef BOOL(CALLBACK *ENUMRESTYPEPROCW)(HMODULE,LPWSTR,LONG);
+#ifdef UNICODE
+#define ENUMRESTYPEPROC ENUMRESTYPEPROCW
+#else
+#define ENUMRESTYPEPROC ENUMRESTYPEPROCA
+#endif
+typedef void(CALLBACK *LPOVERLAPPED_COMPLETION_ROUTINE)(DWORD,DWORD,LPOVERLAPPED);
+typedef LONG(CALLBACK *PTOP_LEVEL_EXCEPTION_FILTER)(LPEXCEPTION_POINTERS);
+typedef PTOP_LEVEL_EXCEPTION_FILTER LPTOP_LEVEL_EXCEPTION_FILTER;
+typedef void(APIENTRY *PAPCFUNC)(ULONG_PTR);
+typedef void(CALLBACK *PTIMERAPCROUTINE)(PVOID,DWORD,DWORD);
+#if (_WIN32_WINNT >= 0x0500)
+typedef void(CALLBACK *WAITORTIMERCALLBACK)(PVOID,BOOLEAN);
+#endif
+#define MAKEINTATOM(i) (LPTSTR)((DWORD)((WORD)(i)))
+/* Functions */
+#ifndef UNDER_CE
+int APIENTRY WinMain(HINSTANCE,HINSTANCE,LPSTR,int);
+#else
+int APIENTRY WinMain(HINSTANCE,HINSTANCE,LPWSTR,int);
+#endif
+int APIENTRY wWinMain(HINSTANCE,HINSTANCE,LPWSTR,int);
+WINBASEAPI long WINAPI _hread(HFILE,LPVOID,long);
+WINBASEAPI long WINAPI _hwrite(HFILE,LPCSTR,long);
+WINBASEAPI HFILE WINAPI _lclose(HFILE);
+WINBASEAPI HFILE WINAPI _lcreat(LPCSTR,int);
+WINBASEAPI LONG WINAPI _llseek(HFILE,LONG,int);
+WINBASEAPI HFILE WINAPI _lopen(LPCSTR,int);
+WINBASEAPI UINT WINAPI _lread(HFILE,LPVOID,UINT);
+WINBASEAPI UINT WINAPI _lwrite(HFILE,LPCSTR,UINT);
+#define AbnormalTermination() FALSE
+WINBASEAPI BOOL WINAPI AccessCheck(PSECURITY_DESCRIPTOR,HANDLE,DWORD,PGENERIC_MAPPING,PPRIVILEGE_SET,PDWORD,PDWORD,PBOOL);
+WINBASEAPI BOOL WINAPI AccessCheckAndAuditAlarmA(LPCSTR,LPVOID,LPSTR,LPSTR,PSECURITY_DESCRIPTOR,DWORD,PGENERIC_MAPPING,BOOL,PDWORD,PBOOL,PBOOL);
+WINBASEAPI BOOL WINAPI AccessCheckAndAuditAlarmW(LPCWSTR,LPVOID,LPWSTR,LPWSTR,PSECURITY_DESCRIPTOR,DWORD,PGENERIC_MAPPING,BOOL,PDWORD,PBOOL,PBOOL);
+#if (_WIN32_WINNT >= 0x0501)
+WINBASEAPI BOOL WINAPI ActivateActCtx(HANDLE,ULONG_PTR*);
+#endif
+WINBASEAPI BOOL WINAPI AddAccessAllowedAce(PACL,DWORD,DWORD,PSID);
+WINBASEAPI BOOL WINAPI AddAccessDeniedAce(PACL,DWORD,DWORD,PSID);
+#if (_WIN32_WINNT >= 0x0500)
+WINBASEAPI BOOL WINAPI AddAccessAllowedAceEx(PACL,DWORD,DWORD,DWORD,PSID);
+WINBASEAPI BOOL WINAPI AddAccessDeniedAceEx(PACL,DWORD,DWORD,DWORD,PSID);
+#endif
+WINBASEAPI BOOL WINAPI AddAce(PACL,DWORD,DWORD,PVOID,DWORD);
+WINBASEAPI ATOM WINAPI AddAtomA(LPCSTR);
+WINBASEAPI ATOM WINAPI AddAtomW(LPCWSTR);
+WINBASEAPI BOOL WINAPI AddAuditAccessAce(PACL,DWORD,DWORD,PSID,BOOL,BOOL);
+#if (_WIN32_WINNT >= 0x0501)
+WINBASEAPI void WINAPI AddRefActCtx(HANDLE);
+#endif
+#if (_WIN32_WINNT >= 0x0500)
+WINBASEAPI PVOID WINAPI AddVectoredExceptionHandler(ULONG,PVECTORED_EXCEPTION_HANDLER);
+#endif
+WINBASEAPI BOOL WINAPI AdjustTokenGroups(HANDLE,BOOL,PTOKEN_GROUPS,DWORD,PTOKEN_GROUPS,PDWORD);
+WINBASEAPI BOOL WINAPI AdjustTokenPrivileges(HANDLE,BOOL,PTOKEN_PRIVILEGES,DWORD,PTOKEN_PRIVILEGES,PDWORD);
+WINBASEAPI BOOL WINAPI AllocateAndInitializeSid(PSID_IDENTIFIER_AUTHORITY,BYTE,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,PSID*);
+WINBASEAPI BOOL WINAPI AllocateLocallyUniqueId(PLUID);
+WINBASEAPI BOOL WINAPI AreAllAccessesGranted(DWORD,DWORD);
+WINBASEAPI BOOL WINAPI AreAnyAccessesGranted(DWORD,DWORD);
+WINBASEAPI BOOL WINAPI AreFileApisANSI(void);
+WINBASEAPI BOOL WINAPI BackupEventLogA(HANDLE,LPCSTR);
+WINBASEAPI BOOL WINAPI BackupEventLogW(HANDLE,LPCWSTR);
+WINBASEAPI BOOL WINAPI BackupRead(HANDLE,LPBYTE,DWORD,LPDWORD,BOOL,BOOL,LPVOID*);
+WINBASEAPI BOOL WINAPI BackupSeek(HANDLE,DWORD,DWORD,LPDWORD,LPDWORD,LPVOID*);
+WINBASEAPI BOOL WINAPI BackupWrite(HANDLE,LPBYTE,DWORD,LPDWORD,BOOL,BOOL,LPVOID*);
+WINBASEAPI BOOL WINAPI Beep(DWORD,DWORD);
+WINBASEAPI HANDLE WINAPI BeginUpdateResourceA(LPCSTR,BOOL);
+WINBASEAPI HANDLE WINAPI BeginUpdateResourceW(LPCWSTR,BOOL);
+WINBASEAPI BOOL WINAPI BuildCommDCBA(LPCSTR,LPDCB);
+WINBASEAPI BOOL WINAPI BuildCommDCBW(LPCWSTR,LPDCB);
+WINBASEAPI BOOL WINAPI BuildCommDCBAndTimeoutsA(LPCSTR,LPDCB,LPCOMMTIMEOUTS);
+WINBASEAPI BOOL WINAPI BuildCommDCBAndTimeoutsW(LPCWSTR,LPDCB,LPCOMMTIMEOUTS);
+WINBASEAPI BOOL WINAPI CallNamedPipeA(LPCSTR,PVOID,DWORD,PVOID,DWORD,PDWORD,DWORD);
+WINBASEAPI BOOL WINAPI CallNamedPipeW(LPCWSTR,PVOID,DWORD,PVOID,DWORD,PDWORD,DWORD);
+WINBASEAPI BOOL WINAPI CancelDeviceWakeupRequest(HANDLE);
+WINBASEAPI BOOL WINAPI CancelIo(HANDLE);
+WINBASEAPI BOOL WINAPI CancelWaitableTimer(HANDLE);
+#if (_WIN32_WINNT >= 0x0500)
+WINBASEAPI BOOL WINAPI ChangeTimerQueueTimer(HANDLE,HANDLE,ULONG,ULONG);
+#endif
+#if (_WIN32_WINNT >= 0x0501)
+WINBASEAPI BOOL WINAPI CheckNameLegalDOS8Dot3A(LPCSTR,LPSTR,DWORD,PBOOL,PBOOL);
+WINBASEAPI BOOL WINAPI CheckNameLegalDOS8Dot3W(LPCWSTR,LPSTR,DWORD,PBOOL,PBOOL);
+WINBASEAPI BOOL WINAPI CheckRemoteDebuggerPresent(HANDLE,PBOOL);
+#endif
+#if (_WIN32_WINNT >= 0x0500)
+WINBASEAPI BOOL WINAPI CheckTokenMembership(HANDLE,PSID,PBOOL);
+#endif
+WINBASEAPI BOOL WINAPI ClearCommBreak(HANDLE);
+WINBASEAPI BOOL WINAPI ClearCommError(HANDLE,PDWORD,LPCOMSTAT);
+WINBASEAPI BOOL WINAPI ClearEventLogA(HANDLE,LPCSTR);
+WINBASEAPI BOOL WINAPI ClearEventLogW(HANDLE,LPCWSTR);
+WINBASEAPI BOOL WINAPI CloseEventLog(HANDLE);
+WINBASEAPI BOOL WINAPI CloseHandle(HANDLE);
+WINBASEAPI BOOL WINAPI CommConfigDialogA(LPCSTR,HWND,LPCOMMCONFIG);
+WINBASEAPI BOOL WINAPI CommConfigDialogW(LPCWSTR,HWND,LPCOMMCONFIG);
+WINBASEAPI LONG WINAPI CompareFileTime(CONST FILETIME*,CONST FILETIME*);
+WINBASEAPI BOOL WINAPI ConnectNamedPipe(HANDLE,LPOVERLAPPED);
+WINBASEAPI BOOL WINAPI ContinueDebugEvent(DWORD,DWORD,DWORD);
+#if (_WIN32_WINNT >= 0x0400)
+WINBASEAPI BOOL WINAPI ConvertFiberToThread(void);
+#endif
+WINBASEAPI PVOID WINAPI ConvertThreadToFiber(PVOID);
+WINBASEAPI BOOL WINAPI CopyFileA(LPCSTR,LPCSTR,BOOL);
+WINBASEAPI BOOL WINAPI CopyFileW(LPCWSTR,LPCWSTR,BOOL);
+WINBASEAPI BOOL WINAPI CopyFileExA(LPCSTR,LPCSTR,LPPROGRESS_ROUTINE,LPVOID,LPBOOL,DWORD);
+WINBASEAPI BOOL WINAPI CopyFileExW(LPCWSTR,LPCWSTR,LPPROGRESS_ROUTINE,LPVOID,LPBOOL,DWORD);
+#define RtlMoveMemory memmove
+#define RtlCopyMemory memcpy
+#define RtlFillMemory(d,l,f) memset((d), (f), (l))
+#define RtlZeroMemory(d,l) RtlFillMemory((d),(l),0)
+#define MoveMemory RtlMoveMemory
+#define CopyMemory RtlCopyMemory
+#define FillMemory RtlFillMemory
+#define ZeroMemory RtlZeroMemory
+WINBASEAPI BOOL WINAPI CopySid(DWORD,PSID,PSID);
+#if (_WIN32_WINNT >= 0x0501)
+WINBASEAPI HANDLE WINAPI CreateActCtxA(PCACTCTXA);
+WINBASEAPI HANDLE WINAPI CreateActCtxW(PCACTCTXW);
+#endif
+WINBASEAPI BOOL WINAPI CreateDirectoryA(LPCSTR,LPSECURITY_ATTRIBUTES);
+WINBASEAPI BOOL WINAPI CreateDirectoryW(LPCWSTR,LPSECURITY_ATTRIBUTES);
+WINBASEAPI BOOL WINAPI CreateDirectoryExA(LPCSTR,LPCSTR,LPSECURITY_ATTRIBUTES);
+WINBASEAPI BOOL WINAPI CreateDirectoryExW(LPCWSTR,LPCWSTR,LPSECURITY_ATTRIBUTES);
+WINBASEAPI HANDLE WINAPI CreateEventA(LPSECURITY_ATTRIBUTES,BOOL,BOOL,LPCSTR);
+WINBASEAPI HANDLE WINAPI CreateEventW(LPSECURITY_ATTRIBUTES,BOOL,BOOL,LPCWSTR);
+WINBASEAPI LPVOID WINAPI CreateFiber(SIZE_T,LPFIBER_START_ROUTINE,LPVOID);
+#if (_WIN32_WINNT >= 0x0400)
+WINBASEAPI LPVOID WINAPI CreateFiberEx(SIZE_T,SIZE_T,DWORD,LPFIBER_START_ROUTINE,LPVOID);
+#endif
+WINBASEAPI HANDLE WINAPI CreateFileA(LPCSTR,DWORD,DWORD,LPSECURITY_ATTRIBUTES,DWORD,DWORD,HANDLE);
+WINBASEAPI HANDLE WINAPI CreateFileW(LPCWSTR,DWORD,DWORD,LPSECURITY_ATTRIBUTES,DWORD,DWORD,HANDLE);
+WINBASEAPI HANDLE WINAPI CreateFileMappingA(HANDLE,LPSECURITY_ATTRIBUTES,DWORD,DWORD,DWORD,LPCSTR);
+WINBASEAPI HANDLE WINAPI CreateFileMappingW(HANDLE,LPSECURITY_ATTRIBUTES,DWORD,DWORD,DWORD,LPCWSTR);
+#if (_WIN32_WINNT >= 0x0500)
+WINBASEAPI BOOL WINAPI CreateHardLinkA(LPCSTR,LPCSTR,LPSECURITY_ATTRIBUTES);
+WINBASEAPI BOOL WINAPI CreateHardLinkW(LPCWSTR,LPCWSTR,LPSECURITY_ATTRIBUTES);
+#endif
+WINBASEAPI HANDLE WINAPI CreateIoCompletionPort(HANDLE,HANDLE,ULONG_PTR,DWORD);
+#if (_WIN32_WINNT >= 0x0500)
+WINBASEAPI HANDLE WINAPI CreateJobObjectA(LPSECURITY_ATTRIBUTES,LPCSTR);
+WINBASEAPI HANDLE WINAPI CreateJobObjectW(LPSECURITY_ATTRIBUTES,LPCWSTR);
+WINBASEAPI BOOL WINAPI TerminateJobObject(HANDLE,UINT);
+WINBASEAPI BOOL WINAPI AssignProcessToJobObject(HANDLE,HANDLE);
+WINBASEAPI BOOL WINAPI SetInformationJobObject(HANDLE, JOBOBJECTINFOCLASS, LPVOID, DWORD);
+WINBASEAPI BOOL WINAPI QueryInformationJobObject(HANDLE, JOBOBJECTINFOCLASS, LPVOID, DWORD, LPDWORD);
+#endif
+WINBASEAPI HANDLE WINAPI CreateMailslotA(LPCSTR,DWORD,DWORD,LPSECURITY_ATTRIBUTES);
+WINBASEAPI HANDLE WINAPI CreateMailslotW(LPCWSTR,DWORD,DWORD,LPSECURITY_ATTRIBUTES);
+#if (_WIN32_WINNT >= 0x0501)
+WINBASEAPI HANDLE WINAPI CreateMemoryResourceNotification(MEMORY_RESOURCE_NOTIFICATION_TYPE);
+#endif
+WINBASEAPI HANDLE WINAPI CreateMutexA(LPSECURITY_ATTRIBUTES,BOOL,LPCSTR);
+WINBASEAPI HANDLE WINAPI CreateMutexW(LPSECURITY_ATTRIBUTES,BOOL,LPCWSTR);
+WINBASEAPI HANDLE WINAPI CreateNamedPipeA(LPCSTR,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,LPSECURITY_ATTRIBUTES);
+WINBASEAPI HANDLE WINAPI CreateNamedPipeW(LPCWSTR,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,LPSECURITY_ATTRIBUTES);
+WINBASEAPI BOOL WINAPI CreatePipe(PHANDLE,PHANDLE,LPSECURITY_ATTRIBUTES,DWORD);
+WINBASEAPI BOOL WINAPI CreatePrivateObjectSecurity(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR*,BOOL,HANDLE,PGENERIC_MAPPING);
+WINBASEAPI BOOL WINAPI CreateProcessA(LPCSTR,LPSTR,LPSECURITY_ATTRIBUTES,LPSECURITY_ATTRIBUTES,BOOL,DWORD,PVOID,LPCSTR,LPSTARTUPINFOA,LPPROCESS_INFORMATION);
+WINBASEAPI BOOL WINAPI CreateProcessW(LPCWSTR,LPWSTR,LPSECURITY_ATTRIBUTES,LPSECURITY_ATTRIBUTES,BOOL,DWORD,PVOID,LPCWSTR,LPSTARTUPINFOW,LPPROCESS_INFORMATION);
+WINBASEAPI BOOL WINAPI CreateProcessAsUserA(HANDLE,LPCSTR,LPSTR,LPSECURITY_ATTRIBUTES,LPSECURITY_ATTRIBUTES,BOOL,DWORD,PVOID,LPCSTR,LPSTARTUPINFOA,LPPROCESS_INFORMATION);
+WINBASEAPI BOOL WINAPI CreateProcessAsUserW(HANDLE,LPCWSTR,LPWSTR,LPSECURITY_ATTRIBUTES,LPSECURITY_ATTRIBUTES,BOOL,DWORD,PVOID,LPCWSTR,LPSTARTUPINFOW,LPPROCESS_INFORMATION);
+#if (_WIN32_WINNT >= 0x0500)
+WINBASEAPI BOOL WINAPI CreateProcessWithLogonW (LPCWSTR,LPCWSTR,LPCWSTR,DWORD,
+						LPCWSTR,LPWSTR,DWORD,LPVOID,
+						LPCWSTR,LPSTARTUPINFOW,
+						LPPROCESS_INFORMATION);
+#define LOGON_WITH_PROFILE 0x00000001
+#define LOGON_NETCREDENTIALS_ONLY 0x00000002
+#endif
+WINBASEAPI HANDLE WINAPI CreateRemoteThread(HANDLE,LPSECURITY_ATTRIBUTES,DWORD,LPTHREAD_START_ROUTINE,LPVOID,DWORD,LPDWORD);
+#if (_WIN32_WINNT >= 0x0500)
+WINBASEAPI BOOL WINAPI CreateRestrictedToken(HANDLE,DWORD,DWORD,PSID_AND_ATTRIBUTES,DWORD,PLUID_AND_ATTRIBUTES,DWORD,PSID_AND_ATTRIBUTES,PHANDLE);
+#define DISABLE_MAX_PRIVILEGE 1
+#define SANDBOX_INERT 2
+#define LUA_TOKEN 4
+#define WRITE_RESTRICTED 8
+#endif
+WINBASEAPI HANDLE WINAPI CreateSemaphoreA(LPSECURITY_ATTRIBUTES,LONG,LONG,LPCSTR);
+WINBASEAPI HANDLE WINAPI CreateSemaphoreW(LPSECURITY_ATTRIBUTES,LONG,LONG,LPCWSTR);
+#if (_WIN32_WINNT >= 0x0600)
+WINBASEAPI BOOL WINAPI CreateSymbolicLinkA(LPCSTR,LPCSTR,DWORD);
+WINBASEAPI BOOL WINAPI CreateSymbolicLinkW(LPCWSTR,LPCWSTR,DWORD);
+#endif
+WINBASEAPI DWORD WINAPI CreateTapePartition(HANDLE,DWORD,DWORD,DWORD);
+#if (_WIN32_WINNT >= 0x0500)
+WINBASEAPI HANDLE WINAPI CreateTimerQueue(void);
+WINBASEAPI BOOL WINAPI CreateTimerQueueTimer(PHANDLE,HANDLE,WAITORTIMERCALLBACK,PVOID,DWORD,DWORD,ULONG);
+#endif
+WINBASEAPI HANDLE WINAPI CreateThread(LPSECURITY_ATTRIBUTES,DWORD,LPTHREAD_START_ROUTINE,PVOID,DWORD,PDWORD);
+WINBASEAPI HANDLE WINAPI CreateWaitableTimerA(LPSECURITY_ATTRIBUTES,BOOL,LPCSTR);
+WINBASEAPI HANDLE WINAPI CreateWaitableTimerW(LPSECURITY_ATTRIBUTES,BOOL,LPCWSTR);
+#if (_WIN32_WINNT >= 0x0501)
+WINBASEAPI BOOL WINAPI DeactivateActCtx(DWORD,ULONG_PTR);
+#endif
+WINBASEAPI BOOL WINAPI DebugActiveProcess(DWORD);
+#if (_WIN32_WINNT >= 0x0501)
+WINBASEAPI BOOL WINAPI DebugActiveProcessStop(DWORD);
+#endif
+WINBASEAPI void WINAPI DebugBreak(void);
+#if (_WIN32_WINNT >= 0x0501)
+WINBASEAPI BOOL WINAPI DebugBreakProcess(HANDLE);
+WINBASEAPI BOOL WINAPI DebugSetProcessKillOnExit(BOOL);
+#endif
+WINBASEAPI BOOL WINAPI DefineDosDeviceA(DWORD,LPCSTR,LPCSTR);
+WINBASEAPI BOOL WINAPI DefineDosDeviceW(DWORD,LPCWSTR,LPCWSTR);
+#define DefineHandleTable(w) ((w),TRUE)
+WINBASEAPI BOOL WINAPI DeleteAce(PACL,DWORD);
+WINBASEAPI ATOM WINAPI DeleteAtom(ATOM);
+WINBASEAPI void WINAPI DeleteCriticalSection(PCRITICAL_SECTION);
+WINBASEAPI void WINAPI DeleteFiber(PVOID);
+WINBASEAPI BOOL WINAPI DeleteFileA(LPCSTR);
+WINBASEAPI BOOL WINAPI DeleteFileW(LPCWSTR);
+#if (_WIN32_WINNT >= 0x0500)
+WINBASEAPI BOOL WINAPI DeleteTimerQueue(HANDLE);
+WINBASEAPI BOOL WINAPI DeleteTimerQueueEx(HANDLE,HANDLE);
+WINBASEAPI BOOL WINAPI DeleteTimerQueueTimer(HANDLE,HANDLE,HANDLE);
+WINBASEAPI BOOL WINAPI DeleteVolumeMountPointA(LPCSTR);
+WINBASEAPI BOOL WINAPI DeleteVolumeMountPointW(LPCWSTR);
+#endif
+WINBASEAPI BOOL WINAPI DeregisterEventSource(HANDLE);
+WINBASEAPI BOOL WINAPI DestroyPrivateObjectSecurity(PSECURITY_DESCRIPTOR*);
+WINBASEAPI BOOL WINAPI DeviceIoControl(HANDLE,DWORD,PVOID,DWORD,PVOID,DWORD,PDWORD,POVERLAPPED);
+WINBASEAPI BOOL WINAPI DisableThreadLibraryCalls(HMODULE);
+#if (_WIN32_WINNT >= 0x0500)
+WINBASEAPI BOOL WINAPI DnsHostnameToComputerNameA(LPCSTR,LPSTR,LPDWORD);
+WINBASEAPI BOOL WINAPI DnsHostnameToComputerNameW(LPCWSTR,LPWSTR,LPDWORD);
+#endif
+WINBASEAPI BOOL WINAPI DisconnectNamedPipe(HANDLE);
+WINBASEAPI BOOL WINAPI DosDateTimeToFileTime(WORD,WORD,LPFILETIME);
+WINBASEAPI BOOL WINAPI DuplicateHandle(HANDLE,HANDLE,HANDLE,PHANDLE,DWORD,BOOL,DWORD);
+WINBASEAPI BOOL WINAPI DuplicateToken(HANDLE,SECURITY_IMPERSONATION_LEVEL,PHANDLE);
+WINBASEAPI BOOL WINAPI DuplicateTokenEx(HANDLE,DWORD,LPSECURITY_ATTRIBUTES,SECURITY_IMPERSONATION_LEVEL,TOKEN_TYPE,PHANDLE);
+WINBASEAPI BOOL WINAPI EncryptFileA(LPCSTR);
+WINBASEAPI BOOL WINAPI EncryptFileW(LPCWSTR);
+WINBASEAPI BOOL WINAPI EndUpdateResourceA(HANDLE,BOOL);
+WINBASEAPI BOOL WINAPI EndUpdateResourceW(HANDLE,BOOL);
+WINBASEAPI void WINAPI EnterCriticalSection(LPCRITICAL_SECTION);
+WINBASEAPI BOOL WINAPI EnumResourceLanguagesA(HMODULE,LPCSTR,LPCSTR,ENUMRESLANGPROCA,LONG_PTR);
+WINBASEAPI BOOL WINAPI EnumResourceLanguagesW(HMODULE,LPCWSTR,LPCWSTR,ENUMRESLANGPROCW,LONG_PTR);
+WINBASEAPI BOOL WINAPI EnumResourceNamesA(HMODULE,LPCSTR,ENUMRESNAMEPROCA,LONG_PTR);
+WINBASEAPI BOOL WINAPI EnumResourceNamesW(HMODULE,LPCWSTR,ENUMRESNAMEPROCW,LONG_PTR);
+WINBASEAPI BOOL WINAPI EnumResourceTypesA(HMODULE,ENUMRESTYPEPROCA,LONG_PTR);
+WINBASEAPI BOOL WINAPI EnumResourceTypesW(HMODULE,ENUMRESTYPEPROCW,LONG_PTR);
+WINBASEAPI BOOL WINAPI EqualPrefixSid(PSID,PSID);
+WINBASEAPI BOOL WINAPI EqualSid(PSID,PSID);
+WINBASEAPI DWORD WINAPI EraseTape(HANDLE,DWORD,BOOL);
+WINBASEAPI BOOL WINAPI EscapeCommFunction(HANDLE,DWORD);
+DECLSPEC_NORETURN WINBASEAPI void WINAPI ExitProcess(UINT);
+DECLSPEC_NORETURN WINBASEAPI void WINAPI ExitThread(DWORD);
+WINBASEAPI DWORD WINAPI ExpandEnvironmentStringsA(LPCSTR,LPSTR,DWORD);
+WINBASEAPI DWORD WINAPI ExpandEnvironmentStringsW(LPCWSTR,LPWSTR,DWORD);
+WINBASEAPI void WINAPI FatalAppExitA(UINT,LPCSTR);
+WINBASEAPI void WINAPI FatalAppExitW(UINT,LPCWSTR);
+WINBASEAPI void WINAPI FatalExit(int);
+WINBASEAPI BOOL WINAPI FileEncryptionStatusA(LPCSTR,LPDWORD);
+WINBASEAPI BOOL WINAPI FileEncryptionStatusW(LPCWSTR,LPDWORD);
+WINBASEAPI BOOL WINAPI FileTimeToDosDateTime(CONST FILETIME *,LPWORD,LPWORD);
+WINBASEAPI BOOL WINAPI FileTimeToLocalFileTime(CONST FILETIME *,LPFILETIME);
+WINBASEAPI BOOL WINAPI FileTimeToSystemTime(CONST FILETIME *,LPSYSTEMTIME);
+#if (_WIN32_WINNT >= 0x0501)
+WINBASEAPI BOOL WINAPI FindActCtxSectionGuid(DWORD,const GUID*,ULONG,const GUID*,PACTCTX_SECTION_KEYED_DATA);
+WINBASEAPI BOOL WINAPI FindActCtxSectionStringA(DWORD,const GUID*,ULONG,LPCSTR,PACTCTX_SECTION_KEYED_DATA);
+WINBASEAPI BOOL WINAPI FindActCtxSectionStringW(DWORD,const GUID*,ULONG,LPCWSTR,PACTCTX_SECTION_KEYED_DATA);
+#endif
+WINBASEAPI ATOM WINAPI FindAtomA(LPCSTR);
+WINBASEAPI ATOM WINAPI FindAtomW(LPCWSTR);
+WINBASEAPI BOOL WINAPI FindClose(HANDLE);
+WINBASEAPI BOOL WINAPI FindCloseChangeNotification(HANDLE);
+WINBASEAPI HANDLE WINAPI FindFirstChangeNotificationA(LPCSTR,BOOL,DWORD);
+WINBASEAPI HANDLE WINAPI FindFirstChangeNotificationW(LPCWSTR,BOOL,DWORD);
+WINBASEAPI HANDLE WINAPI FindFirstFileA(LPCSTR,LPWIN32_FIND_DATAA);
+WINBASEAPI HANDLE WINAPI FindFirstFileW(LPCWSTR,LPWIN32_FIND_DATAW);
+WINBASEAPI HANDLE WINAPI FindFirstFileExA(LPCSTR,FINDEX_INFO_LEVELS,PVOID,FINDEX_SEARCH_OPS,PVOID,DWORD);
+WINBASEAPI HANDLE WINAPI FindFirstFileExW(LPCWSTR,FINDEX_INFO_LEVELS,PVOID,FINDEX_SEARCH_OPS,PVOID,DWORD);
+WINBASEAPI BOOL WINAPI FindFirstFreeAce(PACL,PVOID*);
+#if (_WIN32_WINNT >= 0x0500)
+WINBASEAPI HANDLE WINAPI FindFirstVolumeA(LPCSTR,DWORD);
+WINBASEAPI HANDLE WINAPI FindFirstVolumeW(LPCWSTR,DWORD);
+WINBASEAPI HANDLE WINAPI FindFirstVolumeMountPointA(LPSTR,LPSTR,DWORD);
+WINBASEAPI HANDLE WINAPI FindFirstVolumeMountPointW(LPWSTR,LPWSTR,DWORD);
+#endif
+WINBASEAPI BOOL WINAPI FindNextChangeNotification(HANDLE);
+WINBASEAPI BOOL WINAPI FindNextFileA(HANDLE,LPWIN32_FIND_DATAA);
+WINBASEAPI BOOL WINAPI FindNextFileW(HANDLE,LPWIN32_FIND_DATAW);
+#if (_WIN32_WINNT >= 0x0500)
+WINBASEAPI BOOL WINAPI FindNextVolumeA(HANDLE,LPCSTR,DWORD);
+WINBASEAPI BOOL WINAPI FindNextVolumeW(HANDLE,LPWSTR,DWORD);
+WINBASEAPI BOOL WINAPI FindNextVolumeMountPointA(HANDLE,LPSTR,DWORD);
+WINBASEAPI BOOL WINAPI FindNextVolumeMountPointW(HANDLE,LPWSTR,DWORD);
+WINBASEAPI BOOL WINAPI FindVolumeClose(HANDLE);
+WINBASEAPI BOOL WINAPI FindVolumeMountPointClose(HANDLE);
+#endif
+WINBASEAPI HRSRC WINAPI FindResourceA(HMODULE,LPCSTR,LPCSTR);
+WINBASEAPI HRSRC WINAPI FindResourceW(HINSTANCE,LPCWSTR,LPCWSTR);
+WINBASEAPI HRSRC WINAPI FindResourceExA(HINSTANCE,LPCSTR,LPCSTR,WORD);
+WINBASEAPI HRSRC WINAPI FindResourceExW(HINSTANCE,LPCWSTR,LPCWSTR,WORD);
+#if (_WIN32_WINNT >= 0x0502)
+WINBASEAPI DWORD WINAPI GetFirmwareEnvironmentVariableA(LPCSTR,LPCSTR,PVOID,DWORD);
+WINBASEAPI DWORD WINAPI GetFirmwareEnvironmentVariableW(LPCWSTR,LPCWSTR,PVOID,DWORD);
+#endif
+WINBASEAPI BOOL WINAPI FlushFileBuffers(HANDLE);
+WINBASEAPI BOOL WINAPI FlushInstructionCache(HANDLE,PCVOID,DWORD);
+WINBASEAPI BOOL WINAPI FlushViewOfFile(PCVOID,DWORD);
+WINBASEAPI DWORD WINAPI FormatMessageA(DWORD,PCVOID,DWORD,DWORD,LPSTR,DWORD,va_list*);
+WINBASEAPI DWORD WINAPI FormatMessageW(DWORD,PCVOID,DWORD,DWORD,LPWSTR,DWORD,va_list*);
+WINBASEAPI BOOL WINAPI FreeEnvironmentStringsA(LPSTR);
+WINBASEAPI BOOL WINAPI FreeEnvironmentStringsW(LPWSTR);
+WINBASEAPI BOOL WINAPI FreeLibrary(HMODULE);
+DECLSPEC_NORETURN WINBASEAPI void WINAPI FreeLibraryAndExitThread(HMODULE,DWORD);
+#define FreeModule(m) FreeLibrary(m)
+#define FreeProcInstance(p) (void)(p)
+#ifndef XFree86Server
+WINBASEAPI BOOL WINAPI FreeResource(HGLOBAL);
+#endif /* ndef XFree86Server */
+WINBASEAPI PVOID WINAPI FreeSid(PSID);
+WINBASEAPI BOOL WINAPI GetAce(PACL,DWORD,LPVOID*);
+WINBASEAPI BOOL WINAPI GetAclInformation(PACL,PVOID,DWORD,ACL_INFORMATION_CLASS);
+WINBASEAPI UINT WINAPI GetAtomNameA(ATOM,LPSTR,int);
+WINBASEAPI UINT WINAPI GetAtomNameW(ATOM,LPWSTR,int);
+WINBASEAPI BOOL WINAPI GetBinaryTypeA(LPCSTR,PDWORD);
+WINBASEAPI BOOL WINAPI GetBinaryTypeW(LPCWSTR,PDWORD);
+WINBASEAPI LPSTR WINAPI GetCommandLineA(VOID);
+WINBASEAPI LPWSTR WINAPI GetCommandLineW(VOID);
+WINBASEAPI BOOL WINAPI GetCommConfig(HANDLE,LPCOMMCONFIG,PDWORD);
+WINBASEAPI BOOL WINAPI GetCommMask(HANDLE,PDWORD);
+WINBASEAPI BOOL WINAPI GetCommModemStatus(HANDLE,PDWORD);
+WINBASEAPI BOOL WINAPI GetCommProperties(HANDLE,LPCOMMPROP);
+WINBASEAPI BOOL WINAPI GetCommState(HANDLE,LPDCB);
+WINBASEAPI BOOL WINAPI GetCommTimeouts(HANDLE,LPCOMMTIMEOUTS);
+WINBASEAPI DWORD WINAPI GetCompressedFileSizeA(LPCSTR,PDWORD);
+WINBASEAPI DWORD WINAPI GetCompressedFileSizeW(LPCWSTR,PDWORD);
+WINBASEAPI BOOL WINAPI GetComputerNameA(LPSTR,PDWORD);
+WINBASEAPI BOOL WINAPI GetComputerNameW(LPWSTR,PDWORD);
+#if (_WIN32_WINNT >= 0x0500)
+WINBASEAPI BOOL WINAPI GetComputerNameExA(COMPUTER_NAME_FORMAT,LPSTR,LPDWORD);
+WINBASEAPI BOOL WINAPI GetComputerNameExW(COMPUTER_NAME_FORMAT,LPWSTR,LPDWORD);
+#endif
+#if (_WIN32_WINNT >= 0x0501)
+WINBASEAPI BOOL WINAPI GetCurrentActCtx(HANDLE*);
+#endif
+WINBASEAPI DWORD WINAPI GetCurrentDirectoryA(DWORD,LPSTR);
+WINBASEAPI DWORD WINAPI GetCurrentDirectoryW(DWORD,LPWSTR);
+WINBASEAPI BOOL WINAPI GetCurrentHwProfileA(LPHW_PROFILE_INFOA);
+WINBASEAPI BOOL WINAPI GetCurrentHwProfileW(LPHW_PROFILE_INFOW);
+WINBASEAPI HANDLE WINAPI GetCurrentProcess(void);
+WINBASEAPI DWORD WINAPI GetCurrentProcessId(void);
+WINBASEAPI HANDLE WINAPI GetCurrentThread(void);
+#ifdef _WIN32_WCE
+extern DWORD GetCurrentThreadId(void);
+#else
+WINBASEAPI DWORD WINAPI GetCurrentThreadId(void);
+#endif
+#define GetCurrentTime GetTickCount
+WINBASEAPI BOOL WINAPI GetDefaultCommConfigA(LPCSTR,LPCOMMCONFIG,PDWORD);
+WINBASEAPI BOOL WINAPI GetDefaultCommConfigW(LPCWSTR,LPCOMMCONFIG,PDWORD);
+WINBASEAPI BOOL WINAPI GetDevicePowerState(HANDLE, BOOL*);
+WINBASEAPI BOOL WINAPI GetDiskFreeSpaceA(LPCSTR,PDWORD,PDWORD,PDWORD,PDWORD);
+WINBASEAPI BOOL WINAPI GetDiskFreeSpaceW(LPCWSTR,PDWORD,PDWORD,PDWORD,PDWORD);
+WINBASEAPI BOOL WINAPI GetDiskFreeSpaceExA(LPCSTR,PULARGE_INTEGER,PULARGE_INTEGER,PULARGE_INTEGER);
+WINBASEAPI BOOL WINAPI GetDiskFreeSpaceExW(LPCWSTR,PULARGE_INTEGER,PULARGE_INTEGER,PULARGE_INTEGER);
+#if (_WIN32_WINNT >= 0x0502)
+WINBASEAPI DWORD WINAPI GetDllDirectoryA(DWORD,LPSTR);
+WINBASEAPI DWORD WINAPI GetDllDirectoryW(DWORD,LPWSTR);
+#endif
+WINBASEAPI UINT WINAPI GetDriveTypeA(LPCSTR);
+WINBASEAPI UINT WINAPI GetDriveTypeW(LPCWSTR);
+WINBASEAPI LPCH WINAPI GetEnvironmentStrings(void);
+WINBASEAPI LPCH WINAPI GetEnvironmentStringsA(void);
+WINBASEAPI LPWCH WINAPI GetEnvironmentStringsW(void);
+WINBASEAPI DWORD WINAPI GetEnvironmentVariableA(LPCSTR,LPSTR,DWORD);
+WINBASEAPI DWORD WINAPI GetEnvironmentVariableW(LPCWSTR,LPWSTR,DWORD);
+WINBASEAPI BOOL WINAPI GetExitCodeProcess(HANDLE,PDWORD);
+WINBASEAPI BOOL WINAPI GetExitCodeThread(HANDLE,PDWORD);
+WINBASEAPI DWORD WINAPI GetFileAttributesA(LPCSTR);
+WINBASEAPI DWORD WINAPI GetFileAttributesW(LPCWSTR);
+WINBASEAPI BOOL WINAPI GetFileAttributesExA(LPCSTR,GET_FILEEX_INFO_LEVELS,PVOID);
+WINBASEAPI BOOL WINAPI GetFileAttributesExW(LPCWSTR,GET_FILEEX_INFO_LEVELS,PVOID);
+WINBASEAPI BOOL WINAPI GetFileInformationByHandle(HANDLE,LPBY_HANDLE_FILE_INFORMATION);
+#if (_WIN32_WINNT >= 0x0600)
+/* http://msdn.microsoft.com/en-us/library/aa364953%28VS.85%29.aspx */
+WINBASEAPI BOOL WINAPI GetFileInformationByHandleEx(HANDLE,FILE_INFO_BY_HANDLE_CLASS,LPVOID,DWORD);
+#endif
+WINBASEAPI BOOL WINAPI GetFileSecurityA(LPCSTR,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR,DWORD,PDWORD);
+WINBASEAPI BOOL WINAPI GetFileSecurityW(LPCWSTR,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR,DWORD,PDWORD);
+WINBASEAPI DWORD WINAPI GetFileSize(HANDLE,PDWORD);
+#if (_WIN32_WINNT >= 0x0500)
+WINBASEAPI BOOL WINAPI GetFileSizeEx(HANDLE,PLARGE_INTEGER);
+#endif
+WINBASEAPI BOOL WINAPI GetFileTime(HANDLE,LPFILETIME,LPFILETIME,LPFILETIME);
+WINBASEAPI DWORD WINAPI GetFileType(HANDLE);
+#if (_WIN32_WINNT >= 0x0600)
+/* http://msdn.microsoft.com/en-us/library/aa364962%28VS.85%29.aspx */
+WINBASEAPI DWORD WINAPI GetFinalPathNameByHandleA(HANDLE,LPSTR,DWORD,DWORD);
+WINBASEAPI DWORD WINAPI GetFinalPathNameByHandleW(HANDLE,LPWSTR,DWORD,DWORD);
+#endif
+#define GetFreeSpace(w) (0x100000L)
+WINBASEAPI DWORD WINAPI GetFullPathNameA(LPCSTR,DWORD,LPSTR,LPSTR*);
+WINBASEAPI DWORD WINAPI GetFullPathNameW(LPCWSTR,DWORD,LPWSTR,LPWSTR*);
+WINBASEAPI BOOL WINAPI GetHandleInformation(HANDLE,PDWORD);
+WINBASEAPI BOOL WINAPI GetKernelObjectSecurity(HANDLE,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR,DWORD,PDWORD);
+WINBASEAPI DWORD WINAPI GetLastError(void);
+WINBASEAPI DWORD WINAPI GetLengthSid(PSID);
+WINBASEAPI void WINAPI GetLocalTime(LPSYSTEMTIME);
+WINBASEAPI DWORD WINAPI GetLogicalDrives(void);
+WINBASEAPI DWORD WINAPI GetLogicalDriveStringsA(DWORD,LPSTR);
+WINBASEAPI DWORD WINAPI GetLogicalDriveStringsW(DWORD,LPWSTR);
+#if (_WIN32_WINNT >= 0x0500 || _WIN32_WINDOWS >= 0x0410)
+WINBASEAPI DWORD WINAPI GetLongPathNameA(LPCSTR,LPSTR,DWORD);
+WINBASEAPI DWORD WINAPI GetLongPathNameW(LPCWSTR,LPWSTR,DWORD);
+#endif
+WINBASEAPI BOOL WINAPI GetMailslotInfo(HANDLE,PDWORD,PDWORD,PDWORD,PDWORD);
+WINBASEAPI DWORD WINAPI GetModuleFileNameA(HINSTANCE,LPSTR,DWORD);
+WINBASEAPI DWORD WINAPI GetModuleFileNameW(HINSTANCE,LPWSTR,DWORD);
+WINBASEAPI HMODULE WINAPI GetModuleHandleA(LPCSTR);
+WINBASEAPI HMODULE WINAPI GetModuleHandleW(LPCWSTR);
+#if (_WIN32_WINNT >= 0x0501)
+WINBASEAPI BOOL WINAPI GetModuleHandleExA(DWORD,LPCSTR,HMODULE*);
+WINBASEAPI BOOL WINAPI GetModuleHandleExW(DWORD,LPCWSTR,HMODULE*);
+#endif
+WINBASEAPI BOOL WINAPI GetNamedPipeHandleStateA(HANDLE,PDWORD,PDWORD,PDWORD,PDWORD,LPSTR,DWORD);
+WINBASEAPI BOOL WINAPI GetNamedPipeHandleStateW(HANDLE,PDWORD,PDWORD,PDWORD,PDWORD,LPWSTR,DWORD);
+WINBASEAPI BOOL WINAPI GetNamedPipeInfo(HANDLE,PDWORD,PDWORD,PDWORD,PDWORD);
+#if (_WIN32_WINNT >= 0x0501)
+WINBASEAPI VOID WINAPI GetNativeSystemInfo(LPSYSTEM_INFO);
+#endif
+WINBASEAPI BOOL WINAPI GetNumberOfEventLogRecords(HANDLE,PDWORD);
+WINBASEAPI BOOL WINAPI GetOldestEventLogRecord(HANDLE,PDWORD);
+WINBASEAPI BOOL WINAPI GetOverlappedResult(HANDLE,LPOVERLAPPED,PDWORD,BOOL);
+WINBASEAPI DWORD WINAPI GetPriorityClass(HANDLE);
+WINBASEAPI BOOL WINAPI GetPrivateObjectSecurity(PSECURITY_DESCRIPTOR,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR,DWORD,PDWORD);
+WINBASEAPI UINT WINAPI GetPrivateProfileIntA(LPCSTR,LPCSTR,INT,LPCSTR);
+WINBASEAPI UINT WINAPI GetPrivateProfileIntW(LPCWSTR,LPCWSTR,INT,LPCWSTR);
+WINBASEAPI DWORD WINAPI GetPrivateProfileSectionA(LPCSTR,LPSTR,DWORD,LPCSTR);
+WINBASEAPI DWORD WINAPI GetPrivateProfileSectionW(LPCWSTR,LPWSTR,DWORD,LPCWSTR);
+WINBASEAPI DWORD WINAPI GetPrivateProfileSectionNamesA(LPSTR,DWORD,LPCSTR);
+WINBASEAPI DWORD WINAPI GetPrivateProfileSectionNamesW(LPWSTR,DWORD,LPCWSTR);
+WINBASEAPI DWORD WINAPI GetPrivateProfileStringA(LPCSTR,LPCSTR,LPCSTR,LPSTR,DWORD,LPCSTR);
+WINBASEAPI DWORD WINAPI GetPrivateProfileStringW(LPCWSTR,LPCWSTR,LPCWSTR,LPWSTR,DWORD,LPCWSTR);
+WINBASEAPI BOOL WINAPI GetPrivateProfileStructA(LPCSTR,LPCSTR,LPVOID,UINT,LPCSTR);
+WINBASEAPI BOOL WINAPI GetPrivateProfileStructW(LPCWSTR,LPCWSTR,LPVOID,UINT,LPCWSTR);
+WINBASEAPI FARPROC WINAPI GetProcAddress(HINSTANCE,LPCSTR);
+WINBASEAPI BOOL WINAPI GetProcessAffinityMask(HANDLE,PDWORD,PDWORD);
+#if (_WIN32_WINNT >= 0x0601)
+WINBASEAPI BOOL WINAPI GetProcessDEPPolicy (HANDLE, LPDWORD, PBOOL);
+#endif
+#if (_WIN32_WINNT >= 0x0501)
+WINBASEAPI BOOL WINAPI GetProcessHandleCount(HANDLE,PDWORD);
+#endif
+WINBASEAPI HANDLE WINAPI GetProcessHeap(VOID);
+WINBASEAPI DWORD WINAPI GetProcessHeaps(DWORD,PHANDLE);
+#if (_WIN32_WINNT >= 0x0501)
+WINBASEAPI DWORD WINAPI GetProcessId(HANDLE);
+#endif
+#if (_WIN32_WINNT >= 0x0500)
+WINBASEAPI BOOL WINAPI GetProcessIoCounters(HANDLE,PIO_COUNTERS);
+#endif
+WINBASEAPI BOOL WINAPI GetProcessPriorityBoost(HANDLE,PBOOL);
+WINBASEAPI BOOL WINAPI GetProcessShutdownParameters(PDWORD,PDWORD);
+WINBASEAPI BOOL WINAPI GetProcessTimes(HANDLE,LPFILETIME,LPFILETIME,LPFILETIME,LPFILETIME);
+WINBASEAPI DWORD WINAPI GetProcessVersion(DWORD);
+WINBASEAPI HWINSTA WINAPI GetProcessWindowStation(void);
+WINBASEAPI BOOL WINAPI GetProcessWorkingSetSize(HANDLE,PSIZE_T,PSIZE_T);
+WINBASEAPI UINT WINAPI GetProfileIntA(LPCSTR,LPCSTR,INT);
+WINBASEAPI UINT WINAPI GetProfileIntW(LPCWSTR,LPCWSTR,INT);
+WINBASEAPI DWORD WINAPI GetProfileSectionA(LPCSTR,LPSTR,DWORD);
+WINBASEAPI DWORD WINAPI GetProfileSectionW(LPCWSTR,LPWSTR,DWORD);
+WINBASEAPI DWORD WINAPI GetProfileStringA(LPCSTR,LPCSTR,LPCSTR,LPSTR,DWORD);
+WINBASEAPI DWORD WINAPI GetProfileStringW(LPCWSTR,LPCWSTR,LPCWSTR,LPWSTR,DWORD);
+WINBASEAPI BOOL WINAPI GetQueuedCompletionStatus(HANDLE,PDWORD,PULONG_PTR,LPOVERLAPPED*,DWORD);
+WINBASEAPI BOOL WINAPI GetSecurityDescriptorControl(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR_CONTROL,PDWORD);
+WINBASEAPI BOOL WINAPI GetSecurityDescriptorDacl(PSECURITY_DESCRIPTOR,LPBOOL,PACL*,LPBOOL);
+WINBASEAPI BOOL WINAPI GetSecurityDescriptorGroup(PSECURITY_DESCRIPTOR,PSID*,LPBOOL);
+WINBASEAPI DWORD WINAPI GetSecurityDescriptorLength(PSECURITY_DESCRIPTOR);
+WINBASEAPI BOOL WINAPI GetSecurityDescriptorOwner(PSECURITY_DESCRIPTOR,PSID*,LPBOOL);
+WINBASEAPI BOOL WINAPI GetSecurityDescriptorSacl(PSECURITY_DESCRIPTOR,LPBOOL,PACL*,LPBOOL);
+WINBASEAPI DWORD WINAPI GetShortPathNameA(LPCSTR,LPSTR,DWORD);
+WINBASEAPI DWORD WINAPI GetShortPathNameW(LPCWSTR,LPWSTR,DWORD);
+WINBASEAPI PSID_IDENTIFIER_AUTHORITY WINAPI GetSidIdentifierAuthority(PSID);
+WINBASEAPI DWORD WINAPI GetSidLengthRequired(UCHAR);
+WINBASEAPI PDWORD WINAPI GetSidSubAuthority(PSID,DWORD);
+WINBASEAPI PUCHAR WINAPI GetSidSubAuthorityCount(PSID);
+WINBASEAPI VOID WINAPI GetStartupInfoA(LPSTARTUPINFOA);
+WINBASEAPI VOID WINAPI GetStartupInfoW(LPSTARTUPINFOW);
+WINBASEAPI HANDLE WINAPI GetStdHandle(DWORD);
+#if (_WIN32_WINNT >= 0x0601)
+WINBASEAPI DEP_SYSTEM_POLICY_TYPE WINAPI GetSystemDEPPolicy (void);
+#endif
+WINBASEAPI UINT WINAPI GetSystemDirectoryA(LPSTR,UINT);
+WINBASEAPI UINT WINAPI GetSystemDirectoryW(LPWSTR,UINT);
+WINBASEAPI VOID WINAPI GetSystemInfo(LPSYSTEM_INFO);
+WINBASEAPI BOOL WINAPI GetSystemPowerStatus(LPSYSTEM_POWER_STATUS);
+#if (_WIN32_WINNT >= 0x0501)
+WINBASEAPI BOOL WINAPI GetSystemRegistryQuota(PDWORD,PDWORD);
+#endif
+WINBASEAPI VOID WINAPI GetSystemTime(LPSYSTEMTIME);
+#if (_WIN32_WINNT >= 0x0501)
+WINBASEAPI BOOL WINAPI GetSystemTimes(LPFILETIME,LPFILETIME,LPFILETIME);
+#endif
+WINBASEAPI BOOL WINAPI GetSystemTimeAdjustment(PDWORD,PDWORD,PBOOL);
+WINBASEAPI void WINAPI GetSystemTimeAsFileTime(LPFILETIME);
+#if (_WIN32_WINNT >= 0x0500)
+WINBASEAPI UINT WINAPI GetSystemWindowsDirectoryA(LPSTR,UINT);
+WINBASEAPI UINT WINAPI GetSystemWindowsDirectoryW(LPWSTR,UINT);
+#endif
+#if (_WIN32_WINNT >= 0x0501)
+WINBASEAPI UINT WINAPI GetSystemWow64DirectoryA(LPSTR,UINT);
+WINBASEAPI UINT WINAPI GetSystemWow64DirectoryW(LPWSTR,UINT);
+#endif
+WINBASEAPI DWORD WINAPI GetTapeParameters(HANDLE,DWORD,PDWORD,PVOID);
+WINBASEAPI DWORD WINAPI GetTapePosition(HANDLE,DWORD,PDWORD,PDWORD,PDWORD);
+WINBASEAPI DWORD WINAPI GetTapeStatus(HANDLE);
+WINBASEAPI UINT WINAPI GetTempFileNameA(LPCSTR,LPCSTR,UINT,LPSTR);
+WINBASEAPI UINT WINAPI GetTempFileNameW(LPCWSTR,LPCWSTR,UINT,LPWSTR);
+WINBASEAPI DWORD WINAPI GetTempPathA(DWORD,LPSTR);
+WINBASEAPI DWORD WINAPI GetTempPathW(DWORD,LPWSTR);
+WINBASEAPI BOOL WINAPI GetThreadContext(HANDLE,LPCONTEXT);
+#if (_WIN32_WINNT >= 0x0501)
+WINBASEAPI BOOL WINAPI GetThreadIOPendingFlag(HANDLE,PBOOL);
+#endif
+WINBASEAPI int WINAPI GetThreadPriority(HANDLE);
+WINBASEAPI BOOL WINAPI GetThreadPriorityBoost(HANDLE,PBOOL);
+WINBASEAPI BOOL WINAPI GetThreadSelectorEntry(HANDLE,DWORD,LPLDT_ENTRY);
+WINBASEAPI BOOL WINAPI GetThreadTimes(HANDLE,LPFILETIME,LPFILETIME,LPFILETIME,LPFILETIME);
+WINBASEAPI DWORD WINAPI GetTickCount(VOID);
+WINBASEAPI DWORD WINAPI GetTimeZoneInformation(LPTIME_ZONE_INFORMATION);
+WINBASEAPI BOOL WINAPI GetTokenInformation(HANDLE,TOKEN_INFORMATION_CLASS,PVOID,DWORD,PDWORD);
+WINBASEAPI BOOL WINAPI GetUserNameA (LPSTR,PDWORD);
+WINBASEAPI BOOL WINAPI GetUserNameW(LPWSTR,PDWORD);
+WINBASEAPI DWORD WINAPI GetVersion(void);
+WINBASEAPI BOOL WINAPI GetVersionExA(LPOSVERSIONINFOA);
+WINBASEAPI BOOL WINAPI GetVersionExW(LPOSVERSIONINFOW);
+WINBASEAPI BOOL WINAPI GetVolumeInformationA(LPCSTR,LPSTR,DWORD,PDWORD,PDWORD,PDWORD,LPSTR,DWORD);
+WINBASEAPI BOOL WINAPI GetVolumeInformationW(LPCWSTR,LPWSTR,DWORD,PDWORD,PDWORD,PDWORD,LPWSTR,DWORD);
+#if (_WIN32_WINNT >= 0x0500)
+WINBASEAPI BOOL WINAPI GetVolumeNameForVolumeMountPointA(LPCSTR,LPSTR,DWORD);
+WINBASEAPI BOOL WINAPI GetVolumeNameForVolumeMountPointW(LPCWSTR,LPWSTR,DWORD);
+WINBASEAPI BOOL WINAPI GetVolumePathNameA(LPCSTR,LPSTR,DWORD);
+WINBASEAPI BOOL WINAPI GetVolumePathNameW(LPCWSTR,LPWSTR,DWORD);
+#endif
+#if (_WIN32_WINNT >= 0x0501)
+WINBASEAPI BOOL WINAPI GetVolumePathNamesForVolumeNameA(LPCSTR,LPSTR,DWORD,PDWORD);
+WINBASEAPI BOOL WINAPI GetVolumePathNamesForVolumeNameW(LPCWSTR,LPWSTR,DWORD,PDWORD);
+#endif
+WINBASEAPI UINT WINAPI GetWindowsDirectoryA(LPSTR,UINT);
+WINBASEAPI UINT WINAPI GetWindowsDirectoryW(LPWSTR,UINT);
+WINBASEAPI DWORD WINAPI GetWindowThreadProcessId(HWND,PDWORD);
+WINBASEAPI UINT WINAPI GetWriteWatch(DWORD,PVOID,SIZE_T,PVOID*,PULONG_PTR,PULONG);
+WINBASEAPI ATOM WINAPI GlobalAddAtomA(LPCSTR);
+WINBASEAPI ATOM WINAPI GlobalAddAtomW( LPCWSTR);
+WINBASEAPI HGLOBAL WINAPI GlobalAlloc(UINT,DWORD);
+WINBASEAPI SIZE_T WINAPI GlobalCompact(DWORD); /* Obsolete: Has no effect. */
+WINBASEAPI ATOM WINAPI GlobalDeleteAtom(ATOM);
+#define GlobalDiscard(hMem) GlobalReAlloc((hMem), 0, GMEM_MOVEABLE)
+WINBASEAPI ATOM WINAPI GlobalFindAtomA(LPCSTR);
+WINBASEAPI ATOM WINAPI GlobalFindAtomW(LPCWSTR);
+WINBASEAPI VOID WINAPI GlobalFix(HGLOBAL); /* Obsolete: Has no effect. */
+WINBASEAPI UINT WINAPI GlobalFlags(HGLOBAL); /* Obsolete: Has no effect. */
+WINBASEAPI HGLOBAL WINAPI GlobalFree(HGLOBAL);
+WINBASEAPI UINT WINAPI GlobalGetAtomNameA(ATOM,LPSTR,int);
+WINBASEAPI UINT WINAPI GlobalGetAtomNameW(ATOM,LPWSTR,int);
+WINBASEAPI HGLOBAL WINAPI GlobalHandle(PCVOID);
+WINBASEAPI LPVOID WINAPI GlobalLock(HGLOBAL);
+WINBASEAPI VOID WINAPI GlobalMemoryStatus(LPMEMORYSTATUS);
+#if (_WIN32_WINNT >= 0x0500)
+WINBASEAPI BOOL WINAPI GlobalMemoryStatusEx(LPMEMORYSTATUSEX);
+#endif
+WINBASEAPI HGLOBAL WINAPI GlobalReAlloc(HGLOBAL,DWORD,UINT);
+WINBASEAPI DWORD WINAPI GlobalSize(HGLOBAL);
+WINBASEAPI VOID WINAPI GlobalUnfix(HGLOBAL); /* Obsolete: Has no effect. */
+WINBASEAPI BOOL WINAPI GlobalUnlock(HGLOBAL);
+WINBASEAPI BOOL WINAPI GlobalUnWire(HGLOBAL); /* Obsolete: Has no effect. */
+WINBASEAPI PVOID WINAPI GlobalWire(HGLOBAL); /* Obsolete: Has no effect. */
+#define HasOverlappedIoCompleted(lpOverlapped)  ((lpOverlapped)->Internal != STATUS_PENDING)
+WINBASEAPI PVOID WINAPI HeapAlloc(HANDLE,DWORD,DWORD);
+SIZE_T WINAPI HeapCompact(HANDLE,DWORD);
+WINBASEAPI HANDLE WINAPI HeapCreate(DWORD,DWORD,DWORD);
+WINBASEAPI BOOL WINAPI HeapDestroy(HANDLE);
+WINBASEAPI BOOL WINAPI HeapFree(HANDLE,DWORD,PVOID);
+WINBASEAPI BOOL WINAPI HeapLock(HANDLE);
+#if (_WIN32_WINNT >= 0x0501)
+WINBASEAPI BOOL WINAPI HeapQueryInformation(HANDLE,HEAP_INFORMATION_CLASS,PVOID,SIZE_T,PSIZE_T);
+#endif
+WINBASEAPI PVOID WINAPI HeapReAlloc(HANDLE,DWORD,PVOID,DWORD);
+#if (_WIN32_WINNT >= 0x0501)
+WINBASEAPI BOOL WINAPI HeapSetInformation(HANDLE,HEAP_INFORMATION_CLASS,PVOID,SIZE_T);
+#endif
+WINBASEAPI DWORD WINAPI HeapSize(HANDLE,DWORD,PCVOID);
+WINBASEAPI BOOL WINAPI HeapUnlock(HANDLE);
+WINBASEAPI BOOL WINAPI HeapValidate(HANDLE,DWORD,PCVOID);
+WINBASEAPI BOOL WINAPI HeapWalk(HANDLE,LPPROCESS_HEAP_ENTRY);
+WINBASEAPI BOOL WINAPI ImpersonateLoggedOnUser(HANDLE);
+WINBASEAPI BOOL WINAPI ImpersonateNamedPipeClient(HANDLE);
+WINBASEAPI BOOL WINAPI ImpersonateSelf(SECURITY_IMPERSONATION_LEVEL);
+WINBASEAPI BOOL WINAPI InitAtomTable(DWORD);
+WINBASEAPI BOOL WINAPI InitializeAcl(PACL,DWORD,DWORD);
+WINBASEAPI VOID WINAPI InitializeCriticalSection(LPCRITICAL_SECTION);
+WINBASEAPI BOOL WINAPI InitializeCriticalSectionAndSpinCount(LPCRITICAL_SECTION,DWORD);
+WINBASEAPI DWORD WINAPI SetCriticalSectionSpinCount(LPCRITICAL_SECTION,DWORD);
+WINBASEAPI BOOL WINAPI InitializeSecurityDescriptor(PSECURITY_DESCRIPTOR,DWORD);
+WINBASEAPI BOOL WINAPI InitializeSid (PSID,PSID_IDENTIFIER_AUTHORITY,BYTE);
+
+#if !(__USE_NTOSKRNL__)
+/* CAREFUL: These are exported from ntoskrnl.exe and declared in winddk.h
+   as __fastcall functions, but are  exported from kernel32.dll as __stdcall */
+#if (_WIN32_WINNT >= 0x0501)
+WINBASEAPI VOID WINAPI InitializeSListHead(PSLIST_HEADER);
+#endif
+#ifndef __INTERLOCKED_DECLARED
+#define __INTERLOCKED_DECLARED
+LONG WINAPI InterlockedCompareExchange(LONG volatile *,LONG,LONG);
+/* PVOID WINAPI InterlockedCompareExchangePointer(PVOID*,PVOID,PVOID); */
+#define InterlockedCompareExchangePointer(d,e,c) \
+    (PVOID)InterlockedCompareExchange((LONG volatile *)(d),(LONG)(e),(LONG)(c))
+LONG WINAPI InterlockedDecrement(LONG volatile *);
+LONG WINAPI InterlockedExchange(LONG volatile *,LONG);
+/* PVOID WINAPI InterlockedExchangePointer(PVOID*,PVOID); */
+#define InterlockedExchangePointer(t,v) \
+    (PVOID)InterlockedExchange((LONG volatile *)(t),(LONG)(v))
+LONG WINAPI InterlockedExchangeAdd(LONG volatile *,LONG);
+#if (_WIN32_WINNT >= 0x0501)
+PSLIST_ENTRY WINAPI InterlockedFlushSList(PSLIST_HEADER);
+#endif
+LONG WINAPI InterlockedIncrement(LONG volatile *);
+#if (_WIN32_WINNT >= 0x0501)
+PSLIST_ENTRY WINAPI InterlockedPopEntrySList(PSLIST_HEADER);
+PSLIST_ENTRY WINAPI InterlockedPushEntrySList(PSLIST_HEADER,PSLIST_ENTRY);
+#endif
+#endif /* __INTERLOCKED_DECLARED */
+#endif /*  __USE_NTOSKRNL__ */
+
+WINBASEAPI BOOL WINAPI IsBadCodePtr(FARPROC);
+WINBASEAPI BOOL WINAPI IsBadHugeReadPtr(PCVOID,UINT);
+WINBASEAPI BOOL WINAPI IsBadHugeWritePtr(PVOID,UINT);
+WINBASEAPI BOOL WINAPI IsBadReadPtr(PCVOID,UINT);
+WINBASEAPI BOOL WINAPI IsBadStringPtrA(LPCSTR,UINT);
+WINBASEAPI BOOL WINAPI IsBadStringPtrW(LPCWSTR,UINT);
+WINBASEAPI BOOL WINAPI IsBadWritePtr(PVOID,UINT);
+WINBASEAPI BOOL WINAPI IsDebuggerPresent(void);
+#if (_WIN32_WINNT >= 0x0501)
+WINBASEAPI BOOL IsProcessInJob(HANDLE,HANDLE,PBOOL);
+#endif
+WINBASEAPI BOOL WINAPI IsProcessorFeaturePresent(DWORD);
+WINBASEAPI BOOL WINAPI IsSystemResumeAutomatic(void);
+WINBASEAPI BOOL WINAPI IsTextUnicode(PCVOID,int,LPINT);
+#if (_WIN32_WINNT >= 0x0500)
+WINBASEAPI BOOL WINAPI IsTokenRestricted(HANDLE);
+#endif
+WINBASEAPI BOOL WINAPI IsValidAcl(PACL);
+WINBASEAPI BOOL WINAPI IsValidSecurityDescriptor(PSECURITY_DESCRIPTOR);
+WINBASEAPI BOOL WINAPI IsValidSid(PSID);
+#if (_WIN32_WINNT >= 0x0501)
+WINBASEAPI BOOL WINAPI IsWow64Process(HANDLE,PBOOL);
+#endif
+WINBASEAPI void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION);
+#define LimitEmsPages(n)
+WINBASEAPI HINSTANCE WINAPI LoadLibraryA(LPCSTR);
+WINBASEAPI HINSTANCE WINAPI LoadLibraryExA(LPCSTR,HANDLE,DWORD);
+WINBASEAPI HINSTANCE WINAPI LoadLibraryExW(LPCWSTR,HANDLE,DWORD);
+WINBASEAPI HINSTANCE WINAPI LoadLibraryW(LPCWSTR);
+WINBASEAPI DWORD WINAPI LoadModule(LPCSTR,PVOID);
+WINBASEAPI HGLOBAL WINAPI LoadResource(HINSTANCE,HRSRC);
+WINBASEAPI HLOCAL WINAPI LocalAlloc(UINT,SIZE_T);
+WINBASEAPI SIZE_T WINAPI LocalCompact(UINT); /* Obsolete: Has no effect. */
+WINBASEAPI HLOCAL LocalDiscard(HLOCAL);
+WINBASEAPI BOOL WINAPI LocalFileTimeToFileTime(CONST FILETIME *,LPFILETIME);
+WINBASEAPI UINT WINAPI LocalFlags(HLOCAL); /* Obsolete: Has no effect. */
+WINBASEAPI HLOCAL WINAPI LocalFree(HLOCAL);
+WINBASEAPI HLOCAL WINAPI LocalHandle(LPCVOID);
+WINBASEAPI PVOID WINAPI LocalLock(HLOCAL);
+WINBASEAPI HLOCAL WINAPI LocalReAlloc(HLOCAL,SIZE_T,UINT);
+WINBASEAPI SIZE_T WINAPI LocalShrink(HLOCAL,UINT);  /* Obsolete: Has no effect. */
+WINBASEAPI UINT WINAPI LocalSize(HLOCAL);
+WINBASEAPI BOOL WINAPI LocalUnlock(HLOCAL);
+WINBASEAPI BOOL WINAPI LockFile(HANDLE,DWORD,DWORD,DWORD,DWORD);
+WINBASEAPI BOOL WINAPI LockFileEx(HANDLE,DWORD,DWORD,DWORD,DWORD,LPOVERLAPPED);
+WINBASEAPI PVOID WINAPI LockResource(HGLOBAL);
+#define LockSegment(w) GlobalFix((HANDLE)(w)) /* Obsolete: Has no effect. */
+WINBASEAPI BOOL WINAPI LogonUserA(LPSTR,LPSTR,LPSTR,DWORD,DWORD,PHANDLE);
+WINBASEAPI BOOL WINAPI LogonUserW(LPWSTR,LPWSTR,LPWSTR,DWORD,DWORD,PHANDLE);
+WINBASEAPI BOOL WINAPI LookupAccountNameA(LPCSTR,LPCSTR,PSID,PDWORD,LPSTR,PDWORD,PSID_NAME_USE);
+WINBASEAPI BOOL WINAPI LookupAccountNameW(LPCWSTR,LPCWSTR,PSID,PDWORD,LPWSTR,PDWORD,PSID_NAME_USE);
+WINBASEAPI BOOL WINAPI LookupAccountSidA(LPCSTR,PSID,LPSTR,PDWORD,LPSTR,PDWORD,PSID_NAME_USE);
+WINBASEAPI BOOL WINAPI LookupAccountSidW(LPCWSTR,PSID,LPWSTR,PDWORD,LPWSTR,PDWORD,PSID_NAME_USE);
+WINBASEAPI BOOL WINAPI LookupPrivilegeDisplayNameA(LPCSTR,LPCSTR,LPSTR,PDWORD,PDWORD);
+WINBASEAPI BOOL WINAPI LookupPrivilegeDisplayNameW(LPCWSTR,LPCWSTR,LPWSTR,PDWORD,PDWORD);
+WINBASEAPI BOOL WINAPI LookupPrivilegeNameA(LPCSTR,PLUID,LPSTR,PDWORD);
+WINBASEAPI BOOL WINAPI LookupPrivilegeNameW(LPCWSTR,PLUID,LPWSTR,PDWORD);
+WINBASEAPI BOOL WINAPI LookupPrivilegeValueA(LPCSTR,LPCSTR,PLUID);
+WINBASEAPI BOOL WINAPI LookupPrivilegeValueW(LPCWSTR,LPCWSTR,PLUID);
+WINBASEAPI LPSTR WINAPI lstrcatA(LPSTR,LPCSTR);
+WINBASEAPI LPWSTR WINAPI lstrcatW(LPWSTR,LPCWSTR);
+WINBASEAPI int WINAPI lstrcmpA(LPCSTR,LPCSTR);
+WINBASEAPI int WINAPI lstrcmpiA(LPCSTR,LPCSTR);
+WINBASEAPI int WINAPI lstrcmpiW( LPCWSTR,LPCWSTR);
+WINBASEAPI int WINAPI lstrcmpW(LPCWSTR,LPCWSTR);
+WINBASEAPI LPSTR WINAPI lstrcpyA(LPSTR,LPCSTR);
+WINBASEAPI LPSTR WINAPI lstrcpynA(LPSTR,LPCSTR,int);
+WINBASEAPI LPWSTR WINAPI lstrcpynW(LPWSTR,LPCWSTR,int);
+WINBASEAPI LPWSTR WINAPI lstrcpyW(LPWSTR,LPCWSTR);
+WINBASEAPI int WINAPI lstrlenA(LPCSTR);
+WINBASEAPI int WINAPI lstrlenW(LPCWSTR);
+WINBASEAPI BOOL WINAPI MakeAbsoluteSD(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR,PDWORD,PACL,PDWORD,PACL,PDWORD,PSID,PDWORD,PSID,PDWORD);
+#define MakeProcInstance(p,i) (p)
+WINBASEAPI BOOL WINAPI MakeSelfRelativeSD(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR,PDWORD);
+WINBASEAPI VOID WINAPI MapGenericMask(PDWORD,PGENERIC_MAPPING);
+WINBASEAPI PVOID WINAPI MapViewOfFile(HANDLE,DWORD,DWORD,DWORD,DWORD);
+WINBASEAPI PVOID WINAPI MapViewOfFileEx(HANDLE,DWORD,DWORD,DWORD,DWORD,PVOID);
+WINBASEAPI BOOL WINAPI MoveFileA(LPCSTR,LPCSTR);
+WINBASEAPI BOOL WINAPI MoveFileExA(LPCSTR,LPCSTR,DWORD);
+WINBASEAPI BOOL WINAPI MoveFileExW(LPCWSTR,LPCWSTR,DWORD);
+WINBASEAPI BOOL WINAPI MoveFileW(LPCWSTR,LPCWSTR);
+#if (_WIN32_WINNT >= 0x0500)
+WINBASEAPI BOOL WINAPI MoveFileWithProgressA(LPCSTR,LPCSTR,LPPROGRESS_ROUTINE,LPVOID,DWORD);
+WINBASEAPI BOOL WINAPI MoveFileWithProgressW(LPCWSTR,LPCWSTR,LPPROGRESS_ROUTINE,LPVOID,DWORD);
+#endif
+WINBASEAPI int WINAPI MulDiv(int,int,int);
+WINBASEAPI BOOL WINAPI NotifyChangeEventLog(HANDLE,HANDLE);
+WINBASEAPI BOOL WINAPI ObjectCloseAuditAlarmA(LPCSTR,PVOID,BOOL);
+WINBASEAPI BOOL WINAPI ObjectCloseAuditAlarmW(LPCWSTR,PVOID,BOOL);
+WINBASEAPI BOOL WINAPI ObjectDeleteAuditAlarmA(LPCSTR,PVOID,BOOL);
+WINBASEAPI BOOL WINAPI ObjectDeleteAuditAlarmW(LPCWSTR,PVOID,BOOL);
+WINBASEAPI BOOL WINAPI ObjectOpenAuditAlarmA(LPCSTR,PVOID,LPSTR,LPSTR,PSECURITY_DESCRIPTOR,HANDLE,DWORD,DWORD,PPRIVILEGE_SET,BOOL,BOOL,PBOOL);
+WINBASEAPI BOOL WINAPI ObjectOpenAuditAlarmW(LPCWSTR,PVOID,LPWSTR,LPWSTR,PSECURITY_DESCRIPTOR,HANDLE,DWORD,DWORD,PPRIVILEGE_SET,BOOL,BOOL,PBOOL);
+WINBASEAPI BOOL WINAPI ObjectPrivilegeAuditAlarmA(LPCSTR,PVOID,HANDLE,DWORD,PPRIVILEGE_SET,BOOL);
+WINBASEAPI BOOL WINAPI ObjectPrivilegeAuditAlarmW(LPCWSTR,PVOID,HANDLE,DWORD,PPRIVILEGE_SET,BOOL);
+WINBASEAPI HANDLE WINAPI OpenBackupEventLogA(LPCSTR,LPCSTR);
+WINBASEAPI HANDLE WINAPI OpenBackupEventLogW(LPCWSTR,LPCWSTR);
+WINBASEAPI HANDLE WINAPI OpenEventA(DWORD,BOOL,LPCSTR);
+WINBASEAPI HANDLE WINAPI OpenEventLogA (LPCSTR,LPCSTR);
+WINBASEAPI HANDLE WINAPI OpenEventLogW(LPCWSTR,LPCWSTR);
+WINBASEAPI HANDLE WINAPI OpenEventW(DWORD,BOOL,LPCWSTR);
+WINBASEAPI HFILE WINAPI OpenFile(LPCSTR,LPOFSTRUCT,UINT);
+WINBASEAPI HANDLE WINAPI OpenFileMappingA(DWORD,BOOL,LPCSTR);
+WINBASEAPI HANDLE WINAPI OpenFileMappingW(DWORD,BOOL,LPCWSTR);
+WINBASEAPI HANDLE WINAPI OpenMutexA(DWORD,BOOL,LPCSTR);
+WINBASEAPI HANDLE WINAPI OpenMutexW(DWORD,BOOL,LPCWSTR);
+WINBASEAPI HANDLE WINAPI OpenProcess(DWORD,BOOL,DWORD);
+WINBASEAPI BOOL WINAPI OpenProcessToken(HANDLE,DWORD,PHANDLE);
+WINBASEAPI HANDLE WINAPI OpenSemaphoreA(DWORD,BOOL,LPCSTR);
+WINBASEAPI HANDLE WINAPI OpenSemaphoreW(DWORD,BOOL,LPCWSTR);
+#if (_WIN32_WINNT >= 0x0500) || (_WIN32_WINDOWS >= 0x0490)
+WINBASEAPI HANDLE WINAPI OpenThread(DWORD,BOOL,DWORD);
+#endif
+WINBASEAPI BOOL WINAPI OpenThreadToken(HANDLE,DWORD,BOOL,PHANDLE);
+WINBASEAPI HANDLE WINAPI OpenWaitableTimerA(DWORD,BOOL,LPCSTR);
+WINBASEAPI HANDLE WINAPI OpenWaitableTimerW(DWORD,BOOL,LPCWSTR);
+WINBASEAPI void WINAPI OutputDebugStringA(LPCSTR);
+WINBASEAPI void WINAPI OutputDebugStringW(LPCWSTR);
+WINBASEAPI BOOL WINAPI PeekNamedPipe(HANDLE,PVOID,DWORD,PDWORD,PDWORD,PDWORD);
+WINBASEAPI BOOL WINAPI PostQueuedCompletionStatus(HANDLE,DWORD,ULONG_PTR,LPOVERLAPPED);
+WINBASEAPI DWORD WINAPI PrepareTape(HANDLE,DWORD,BOOL);
+WINBASEAPI BOOL WINAPI PrivilegeCheck (HANDLE,PPRIVILEGE_SET,PBOOL);
+WINBASEAPI BOOL WINAPI PrivilegedServiceAuditAlarmA(LPCSTR,LPCSTR,HANDLE,PPRIVILEGE_SET,BOOL);
+WINBASEAPI BOOL WINAPI PrivilegedServiceAuditAlarmW(LPCWSTR,LPCWSTR,HANDLE,PPRIVILEGE_SET,BOOL);
+#if (_WIN32_WINNT >= 0x0500)
+WINBASEAPI BOOL WINAPI ProcessIdToSessionId(DWORD,DWORD*);
+#endif
+WINBASEAPI BOOL WINAPI PulseEvent(HANDLE);
+WINBASEAPI BOOL WINAPI PurgeComm(HANDLE,DWORD);
+#if (_WIN32_WINNT >= 0x0501)
+WINBASEAPI BOOL WINAPI QueryActCtxW(DWORD,HANDLE,PVOID,ULONG,PVOID,SIZE_T,SIZE_T*);
+#endif
+WINBASEAPI DWORD WINAPI QueryDosDeviceA(LPCSTR,LPSTR,DWORD);
+WINBASEAPI DWORD WINAPI QueryDosDeviceW(LPCWSTR,LPWSTR,DWORD);
+#if (_WIN32_WINNT >= 0x0501)
+WINBASEAPI BOOL WINAPI QueryMemoryResourceNotification(HANDLE,PBOOL);
+#endif
+WINBASEAPI BOOL WINAPI QueryPerformanceCounter(PLARGE_INTEGER);
+WINBASEAPI BOOL WINAPI QueryPerformanceFrequency(PLARGE_INTEGER);
+WINBASEAPI DWORD WINAPI QueueUserAPC(PAPCFUNC,HANDLE,ULONG_PTR);
+#if (_WIN32_WINNT >= 0x0500)
+WINBASEAPI BOOL WINAPI QueueUserWorkItem(LPTHREAD_START_ROUTINE,PVOID,ULONG);
+#endif
+WINBASEAPI void WINAPI RaiseException(DWORD,DWORD,DWORD,const DWORD*);
+WINBASEAPI BOOL WINAPI ReadDirectoryChangesW(HANDLE,PVOID,DWORD,BOOL,DWORD,PDWORD,LPOVERLAPPED,LPOVERLAPPED_COMPLETION_ROUTINE);
+WINBASEAPI BOOL WINAPI ReadEventLogA(HANDLE,DWORD,DWORD,PVOID,DWORD,DWORD *,DWORD *);
+WINBASEAPI BOOL WINAPI ReadEventLogW(HANDLE,DWORD,DWORD,PVOID,DWORD,DWORD *,DWORD *);
+WINBASEAPI BOOL WINAPI ReadFile(HANDLE,PVOID,DWORD,PDWORD,LPOVERLAPPED);
+WINBASEAPI BOOL WINAPI ReadFileEx(HANDLE,PVOID,DWORD,LPOVERLAPPED,LPOVERLAPPED_COMPLETION_ROUTINE);
+WINBASEAPI BOOL WINAPI ReadFileScatter(HANDLE,FILE_SEGMENT_ELEMENT*,DWORD,LPDWORD,LPOVERLAPPED);
+WINBASEAPI BOOL WINAPI ReadProcessMemory(HANDLE,PCVOID,PVOID,DWORD,PDWORD);
+WINBASEAPI HANDLE WINAPI RegisterEventSourceA (LPCSTR,LPCSTR);
+WINBASEAPI HANDLE WINAPI RegisterEventSourceW(LPCWSTR,LPCWSTR);
+#if (_WIN32_WINNT >= 0x0500)
+WINBASEAPI BOOL WINAPI RegisterWaitForSingleObject(PHANDLE,HANDLE,WAITORTIMERCALLBACK,PVOID,ULONG,ULONG);
+WINBASEAPI HANDLE WINAPI RegisterWaitForSingleObjectEx(HANDLE,WAITORTIMERCALLBACK,PVOID,ULONG,ULONG);
+#endif
+#if (_WIN32_WINNT >= 0x0501)
+WINBASEAPI void WINAPI ReleaseActCtx(HANDLE);
+#endif
+WINBASEAPI BOOL WINAPI ReleaseMutex(HANDLE);
+WINBASEAPI BOOL WINAPI ReleaseSemaphore(HANDLE,LONG,LPLONG);
+WINBASEAPI BOOL WINAPI RemoveDirectoryA(LPCSTR);
+WINBASEAPI BOOL WINAPI RemoveDirectoryW(LPCWSTR);
+#if (_WIN32_WINNT >= 0x0500)
+WINBASEAPI ULONG WINAPI RemoveVectoredExceptionHandler(PVOID);
+#endif
+#if (_WIN32_WINNT >= 0x0502)
+WINBASEAPI HANDLE WINAPI ReOpenFile(HANDLE,DWORD,DWORD,DWORD);
+#endif
+#if (_WIN32_WINNT >= 0x0500)
+WINBASEAPI BOOL WINAPI ReplaceFileA(LPCSTR,LPCSTR,LPCSTR,DWORD,LPVOID,LPVOID);
+WINBASEAPI BOOL WINAPI ReplaceFileW(LPCWSTR,LPCWSTR,LPCWSTR,DWORD,LPVOID,LPVOID);
+#endif
+WINBASEAPI BOOL WINAPI ReportEventA(HANDLE,WORD,WORD,DWORD,PSID,WORD,DWORD,LPCSTR*,PVOID);
+WINBASEAPI BOOL WINAPI ReportEventW(HANDLE,WORD,WORD,DWORD,PSID,WORD,DWORD,LPCWSTR*,PVOID);
+#ifdef _WIN32_WCE
+extern BOOL ResetEvent(HANDLE);
+#else
+WINBASEAPI BOOL WINAPI ResetEvent(HANDLE);
+#endif
+WINBASEAPI UINT WINAPI ResetWriteWatch(LPVOID,SIZE_T);
+#if (_WIN32_WINNT >= 0x0510)
+WINBASEAPI VOID WINAPI RestoreLastError(DWORD);
+#endif
+WINBASEAPI DWORD WINAPI ResumeThread(HANDLE);
+WINBASEAPI BOOL WINAPI RevertToSelf(void);
+WINBASEAPI DWORD WINAPI SearchPathA(LPCSTR,LPCSTR,LPCSTR,DWORD,LPSTR,LPSTR*);
+WINBASEAPI DWORD WINAPI SearchPathW(LPCWSTR,LPCWSTR,LPCWSTR,DWORD,LPWSTR,LPWSTR*);
+WINBASEAPI BOOL WINAPI SetAclInformation(PACL,PVOID,DWORD,ACL_INFORMATION_CLASS);
+WINBASEAPI BOOL WINAPI SetCommBreak(HANDLE);
+WINBASEAPI BOOL WINAPI SetCommConfig(HANDLE,LPCOMMCONFIG,DWORD);
+WINBASEAPI BOOL WINAPI SetCommMask(HANDLE,DWORD);
+WINBASEAPI BOOL WINAPI SetCommState(HANDLE,LPDCB);
+WINBASEAPI BOOL WINAPI SetCommTimeouts(HANDLE,LPCOMMTIMEOUTS);
+WINBASEAPI BOOL WINAPI SetComputerNameA(LPCSTR);
+WINBASEAPI BOOL WINAPI SetComputerNameW(LPCWSTR);
+#if (_WIN32_WINNT >= 0x0500)
+WINBASEAPI BOOL WINAPI SetComputerNameExA(COMPUTER_NAME_FORMAT,LPCSTR);
+WINBASEAPI BOOL WINAPI SetComputerNameExW(COMPUTER_NAME_FORMAT,LPCWSTR);
+#endif
+WINBASEAPI BOOL WINAPI SetCurrentDirectoryA(LPCSTR);
+WINBASEAPI BOOL WINAPI SetCurrentDirectoryW(LPCWSTR);
+WINBASEAPI BOOL WINAPI SetDefaultCommConfigA(LPCSTR,LPCOMMCONFIG,DWORD);
+WINBASEAPI BOOL WINAPI SetDefaultCommConfigW(LPCWSTR,LPCOMMCONFIG,DWORD);
+#if (_WIN32_WINNT >= 0x0502)
+WINBASEAPI BOOL WINAPI SetDllDirectoryA(LPCSTR);
+WINBASEAPI BOOL WINAPI SetDllDirectoryW(LPCWSTR);
+#endif
+WINBASEAPI BOOL WINAPI SetEndOfFile(HANDLE);
+WINBASEAPI BOOL WINAPI SetEnvironmentVariableA(LPCSTR,LPCSTR);
+WINBASEAPI BOOL WINAPI SetEnvironmentVariableW(LPCWSTR,LPCWSTR);
+WINBASEAPI UINT WINAPI SetErrorMode(UINT);
+#ifdef _WIN32_WCE
+extern BOOL SetEvent(HANDLE);
+#else
+WINBASEAPI BOOL WINAPI SetEvent(HANDLE);
+#endif
+WINBASEAPI VOID WINAPI SetFileApisToANSI(void);
+WINBASEAPI VOID WINAPI SetFileApisToOEM(void);
+WINBASEAPI BOOL WINAPI SetFileAttributesA(LPCSTR,DWORD);
+WINBASEAPI BOOL WINAPI SetFileAttributesW(LPCWSTR,DWORD);
+WINBASEAPI DWORD WINAPI SetFilePointer(HANDLE,LONG,PLONG,DWORD);
+WINBASEAPI BOOL WINAPI SetFilePointerEx(HANDLE,LARGE_INTEGER,PLARGE_INTEGER,DWORD);
+WINBASEAPI BOOL WINAPI SetFileSecurityA(LPCSTR,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR);
+WINBASEAPI BOOL WINAPI SetFileSecurityW(LPCWSTR,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR);
+#if (_WIN32_WINNT >= 0x0501)
+WINBASEAPI BOOL WINAPI SetFileShortNameA(HANDLE,LPCSTR);
+WINBASEAPI BOOL WINAPI SetFileShortNameW(HANDLE,LPCWSTR);
+#endif
+WINBASEAPI BOOL WINAPI SetFileTime(HANDLE,const FILETIME*,const FILETIME*,const FILETIME*);
+#if (_WIN32_WINNT >= 0x0501)
+WINBASEAPI BOOL WINAPI SetFileValidData(HANDLE,LONGLONG);
+#endif
+#if (_WIN32_WINNT >= 0x0502)
+WINBASEAPI BOOL WINAPI SetFirmwareEnvironmentVariableA(LPCSTR,LPCSTR,PVOID,DWORD);
+WINBASEAPI BOOL WINAPI SetFirmwareEnvironmentVariableW(LPCWSTR,LPCWSTR,PVOID,DWORD);
+#endif
+WINBASEAPI UINT WINAPI SetHandleCount(UINT);
+WINBASEAPI BOOL WINAPI SetHandleInformation(HANDLE,DWORD,DWORD);
+WINBASEAPI BOOL WINAPI SetKernelObjectSecurity(HANDLE,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR);
+WINBASEAPI void WINAPI SetLastError(DWORD);
+WINBASEAPI void WINAPI SetLastErrorEx(DWORD,DWORD);
+WINBASEAPI BOOL WINAPI SetLocalTime(const SYSTEMTIME*);
+WINBASEAPI BOOL WINAPI SetMailslotInfo(HANDLE,DWORD);
+WINBASEAPI BOOL WINAPI SetNamedPipeHandleState(HANDLE,PDWORD,PDWORD,PDWORD);
+WINBASEAPI BOOL WINAPI SetPriorityClass(HANDLE,DWORD);
+WINBASEAPI BOOL WINAPI SetPrivateObjectSecurity(SECURITY_INFORMATION,PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR *,PGENERIC_MAPPING,HANDLE);
+WINBASEAPI BOOL WINAPI SetProcessAffinityMask(HANDLE,DWORD);
+#if (_WIN32_WINNT >= 0x0601)
+WINBASEAPI BOOL WINAPI SetProcessDEPPolicy (DWORD);
+#endif
+WINBASEAPI BOOL WINAPI SetProcessPriorityBoost(HANDLE,BOOL);
+WINBASEAPI BOOL WINAPI SetProcessShutdownParameters(DWORD,DWORD);
+WINBASEAPI BOOL WINAPI SetProcessWorkingSetSize(HANDLE,SIZE_T,SIZE_T);
+WINBASEAPI BOOL WINAPI SetSecurityDescriptorControl(PSECURITY_DESCRIPTOR,SECURITY_DESCRIPTOR_CONTROL,SECURITY_DESCRIPTOR_CONTROL);
+WINBASEAPI BOOL WINAPI SetSecurityDescriptorDacl(PSECURITY_DESCRIPTOR,BOOL,PACL,BOOL);
+WINBASEAPI BOOL WINAPI SetSecurityDescriptorGroup(PSECURITY_DESCRIPTOR,PSID,BOOL);
+WINBASEAPI BOOL WINAPI SetSecurityDescriptorOwner(PSECURITY_DESCRIPTOR,PSID,BOOL);
+WINBASEAPI BOOL WINAPI SetSecurityDescriptorSacl(PSECURITY_DESCRIPTOR,BOOL,PACL,BOOL);
+WINBASEAPI BOOL WINAPI SetStdHandle(DWORD,HANDLE);
+#define SetSwapAreaSize(w) (w)
+WINBASEAPI BOOL WINAPI SetSystemPowerState(BOOL,BOOL);
+WINBASEAPI BOOL WINAPI SetSystemTime(const SYSTEMTIME*);
+WINBASEAPI BOOL WINAPI SetSystemTimeAdjustment(DWORD,BOOL);
+WINBASEAPI DWORD WINAPI SetTapeParameters(HANDLE,DWORD,PVOID);
+WINBASEAPI DWORD WINAPI SetTapePosition(HANDLE,DWORD,DWORD,DWORD,DWORD,BOOL);
+WINBASEAPI DWORD WINAPI SetThreadAffinityMask(HANDLE,DWORD);
+WINBASEAPI BOOL WINAPI SetThreadContext(HANDLE,const CONTEXT*);
+#if (_WIN32_WINNT >= 0x0500 || _WIN32_WINDOWS >= 0x0410)
+WINBASEAPI EXECUTION_STATE WINAPI SetThreadExecutionState(EXECUTION_STATE);
+#endif
+WINBASEAPI DWORD WINAPI SetThreadIdealProcessor(HANDLE,DWORD);
+WINBASEAPI BOOL WINAPI SetThreadPriority(HANDLE,int);
+WINBASEAPI BOOL WINAPI SetThreadPriorityBoost(HANDLE,BOOL);
+WINBASEAPI BOOL WINAPI SetThreadToken (PHANDLE,HANDLE);
+WINBASEAPI BOOL WINAPI SetTimeZoneInformation(const TIME_ZONE_INFORMATION *);
+WINBASEAPI BOOL WINAPI SetTokenInformation(HANDLE,TOKEN_INFORMATION_CLASS,PVOID,DWORD);
+WINBASEAPI LPTOP_LEVEL_EXCEPTION_FILTER WINAPI SetUnhandledExceptionFilter(LPTOP_LEVEL_EXCEPTION_FILTER);
+WINBASEAPI BOOL WINAPI SetupComm(HANDLE,DWORD,DWORD);
+WINBASEAPI BOOL WINAPI SetVolumeLabelA(LPCSTR,LPCSTR);
+WINBASEAPI BOOL WINAPI SetVolumeLabelW(LPCWSTR,LPCWSTR);
+#if (_WIN32_WINNT >= 0x0500)
+WINBASEAPI BOOL WINAPI SetVolumeMountPointA(LPCSTR,LPCSTR);
+WINBASEAPI BOOL WINAPI SetVolumeMountPointW(LPCWSTR,LPCWSTR);
+#endif
+WINBASEAPI BOOL WINAPI SetWaitableTimer(HANDLE,const LARGE_INTEGER*,LONG,PTIMERAPCROUTINE,PVOID,BOOL);
+WINBASEAPI DWORD WINAPI SignalObjectAndWait(HANDLE,HANDLE,DWORD,BOOL);
+WINBASEAPI DWORD WINAPI SizeofResource(HINSTANCE,HRSRC);
+WINBASEAPI void WINAPI Sleep(DWORD);
+WINBASEAPI DWORD WINAPI SleepEx(DWORD,BOOL);
+WINBASEAPI DWORD WINAPI SuspendThread(HANDLE);
+WINBASEAPI void WINAPI SwitchToFiber(PVOID);
+WINBASEAPI BOOL WINAPI SwitchToThread(void);
+WINBASEAPI BOOL WINAPI SystemTimeToFileTime(const SYSTEMTIME*,LPFILETIME);
+#if (_WIN32_WINNT >= 0x501)
+WINBASEAPI BOOL WINAPI TzSpecificLocalTimeToSystemTime(LPTIME_ZONE_INFORMATION,LPSYSTEMTIME,LPSYSTEMTIME);
+#endif
+WINBASEAPI BOOL WINAPI SystemTimeToTzSpecificLocalTime(LPTIME_ZONE_INFORMATION,LPSYSTEMTIME,LPSYSTEMTIME);
+WINBASEAPI BOOL WINAPI TerminateProcess(HANDLE,UINT);
+WINBASEAPI BOOL WINAPI TerminateThread(HANDLE,DWORD);
+WINBASEAPI DWORD WINAPI TlsAlloc(VOID);
+WINBASEAPI BOOL WINAPI TlsFree(DWORD);
+WINBASEAPI PVOID WINAPI TlsGetValue(DWORD);
+WINBASEAPI BOOL WINAPI TlsSetValue(DWORD,PVOID);
+WINBASEAPI BOOL WINAPI TransactNamedPipe(HANDLE,PVOID,DWORD,PVOID,DWORD,PDWORD,LPOVERLAPPED);
+WINBASEAPI BOOL WINAPI TransmitCommChar(HANDLE,char);
+WINBASEAPI BOOL WINAPI TryEnterCriticalSection(LPCRITICAL_SECTION);
+WINBASEAPI LONG WINAPI UnhandledExceptionFilter(LPEXCEPTION_POINTERS);
+WINBASEAPI BOOL WINAPI UnlockFile(HANDLE,DWORD,DWORD,DWORD,DWORD);
+WINBASEAPI BOOL WINAPI UnlockFileEx(HANDLE,DWORD,DWORD,DWORD,LPOVERLAPPED);
+#define UnlockResource(h) (h)
+#define UnlockSegment(w) GlobalUnfix((HANDLE)(w)) /* Obsolete: Has no effect. */
+WINBASEAPI BOOL WINAPI UnmapViewOfFile(LPCVOID);
+#if (_WIN32_WINNT >= 0x0500)
+WINBASEAPI BOOL WINAPI UnregisterWait(HANDLE);
+WINBASEAPI BOOL WINAPI UnregisterWaitEx(HANDLE,HANDLE);
+#endif
+WINBASEAPI BOOL WINAPI UpdateResourceA(HANDLE,LPCSTR,LPCSTR,WORD,PVOID,DWORD);
+WINBASEAPI BOOL WINAPI UpdateResourceW(HANDLE,LPCWSTR,LPCWSTR,WORD,PVOID,DWORD);
+WINBASEAPI BOOL WINAPI VerifyVersionInfoA(LPOSVERSIONINFOEXA,DWORD,DWORDLONG);
+WINBASEAPI BOOL WINAPI VerifyVersionInfoW(LPOSVERSIONINFOEXW,DWORD,DWORDLONG);
+WINBASEAPI PVOID WINAPI VirtualAlloc(PVOID,DWORD,DWORD,DWORD);
+WINBASEAPI PVOID WINAPI VirtualAllocEx(HANDLE,PVOID,DWORD,DWORD,DWORD);
+WINBASEAPI BOOL WINAPI VirtualFree(PVOID,DWORD,DWORD);
+WINBASEAPI BOOL WINAPI VirtualFreeEx(HANDLE,PVOID,DWORD,DWORD);
+WINBASEAPI BOOL WINAPI VirtualLock(PVOID,DWORD);
+WINBASEAPI BOOL WINAPI VirtualProtect(PVOID,DWORD,DWORD,PDWORD);
+WINBASEAPI BOOL WINAPI VirtualProtectEx(HANDLE,PVOID,DWORD,DWORD,PDWORD);
+WINBASEAPI DWORD WINAPI VirtualQuery(LPCVOID,PMEMORY_BASIC_INFORMATION,DWORD);
+WINBASEAPI DWORD WINAPI VirtualQueryEx(HANDLE,LPCVOID,PMEMORY_BASIC_INFORMATION,DWORD);
+WINBASEAPI BOOL WINAPI VirtualUnlock(PVOID,DWORD);
+WINBASEAPI BOOL WINAPI WaitCommEvent(HANDLE,PDWORD,LPOVERLAPPED);
+WINBASEAPI BOOL WINAPI WaitForDebugEvent(LPDEBUG_EVENT,DWORD);
+WINBASEAPI DWORD WINAPI WaitForMultipleObjects(DWORD,const HANDLE*,BOOL,DWORD);
+WINBASEAPI DWORD WINAPI WaitForMultipleObjectsEx(DWORD,const HANDLE*,BOOL,DWORD,BOOL);
+WINBASEAPI DWORD WINAPI WaitForSingleObject(HANDLE,DWORD);
+WINBASEAPI DWORD WINAPI WaitForSingleObjectEx(HANDLE,DWORD,BOOL);
+WINBASEAPI BOOL WINAPI WaitNamedPipeA(LPCSTR,DWORD);
+WINBASEAPI BOOL WINAPI WaitNamedPipeW(LPCWSTR,DWORD);
+WINBASEAPI BOOL WINAPI WinLoadTrustProvider(GUID*);
+WINBASEAPI BOOL WINAPI WriteFile(HANDLE,PCVOID,DWORD,PDWORD,LPOVERLAPPED);
+WINBASEAPI BOOL WINAPI WriteFileEx(HANDLE,PCVOID,DWORD,LPOVERLAPPED,LPOVERLAPPED_COMPLETION_ROUTINE);
+WINBASEAPI BOOL WINAPI WriteFileGather(HANDLE,FILE_SEGMENT_ELEMENT*,DWORD,LPDWORD,LPOVERLAPPED);
+WINBASEAPI BOOL WINAPI WritePrivateProfileSectionA(LPCSTR,LPCSTR,LPCSTR);
+WINBASEAPI BOOL WINAPI WritePrivateProfileSectionW(LPCWSTR,LPCWSTR,LPCWSTR);
+WINBASEAPI BOOL WINAPI WritePrivateProfileStringA(LPCSTR,LPCSTR,LPCSTR,LPCSTR);
+WINBASEAPI BOOL WINAPI WritePrivateProfileStringW(LPCWSTR,LPCWSTR,LPCWSTR,LPCWSTR);
+WINBASEAPI BOOL WINAPI WritePrivateProfileStructA(LPCSTR,LPCSTR,LPVOID,UINT,LPCSTR);
+WINBASEAPI BOOL WINAPI WritePrivateProfileStructW(LPCWSTR,LPCWSTR,LPVOID,UINT,LPCWSTR);
+WINBASEAPI BOOL WINAPI WriteProcessMemory(HANDLE,LPVOID,LPCVOID,SIZE_T,SIZE_T*);
+WINBASEAPI BOOL WINAPI WriteProfileSectionA(LPCSTR,LPCSTR);
+WINBASEAPI BOOL WINAPI WriteProfileSectionW(LPCWSTR,LPCWSTR);
+WINBASEAPI BOOL WINAPI WriteProfileStringA(LPCSTR,LPCSTR,LPCSTR);
+WINBASEAPI BOOL WINAPI WriteProfileStringW(LPCWSTR,LPCWSTR,LPCWSTR);
+WINBASEAPI DWORD WINAPI WriteTapemark(HANDLE,DWORD,DWORD,BOOL);
+#define Yield()
+#if (_WIN32_WINNT >= 0x0501)
+WINBASEAPI BOOL WINAPI ZombifyActCtx(HANDLE);
+#endif
+#if (_WIN32_WINNT >= 0x0500)
+WINBASEAPI BOOL WINAPI AllocateUserPhysicalPages(HANDLE,PULONG_PTR,PULONG_PTR);
+WINBASEAPI BOOL WINAPI FreeUserPhysicalPages(HANDLE,PULONG_PTR,PULONG_PTR);
+WINBASEAPI BOOL WINAPI MapUserPhysicalPages(PVOID,ULONG_PTR,PULONG_PTR);
+WINBASEAPI BOOL WINAPI MapUserPhysicalPagesScatter(PVOID*,ULONG_PTR,PULONG_PTR);
+#endif
+
+#ifdef UNICODE
+typedef STARTUPINFOW STARTUPINFO,*LPSTARTUPINFO;
+typedef WIN32_FIND_DATAW WIN32_FIND_DATA,*PWIN32_FIND_DATA,*LPWIN32_FIND_DATA;
+typedef HW_PROFILE_INFOW HW_PROFILE_INFO,*LPHW_PROFILE_INFO;
+#if (_WIN32_WINNT >= 0x0501)
+typedef ACTCTXW ACTCTX,*PACTCTX;
+typedef PCACTCTXW PCACTCTX;
+#endif
+#define AccessCheckAndAuditAlarm AccessCheckAndAuditAlarmW
+#define AddAtom AddAtomW
+#define BackupEventLog BackupEventLogW
+#define BeginUpdateResource BeginUpdateResourceW
+#define BuildCommDCB BuildCommDCBW
+#define BuildCommDCBAndTimeouts BuildCommDCBAndTimeoutsW
+#define CallNamedPipe CallNamedPipeW
+#if (_WIN32_WINNT >= 0x0501)
+#define CheckNameLegalDOS8Dot3 CheckNameLegalDOS8Dot3W
+#endif
+#define ClearEventLog ClearEventLogW
+#define CommConfigDialog CommConfigDialogW
+#define CopyFile CopyFileW
+#define CopyFileEx CopyFileExW
+#if (_WIN32_WINNT >= 0x0501)
+#define CreateActCtx CreateActCtxW
+#endif
+#define CreateDirectory CreateDirectoryW
+#define CreateDirectoryEx CreateDirectoryExW
+#define CreateEvent CreateEventW
+#define CreateFile CreateFileW
+#define CreateFileMapping CreateFileMappingW
+#if (_WIN32_WINNT >= 0x0500)
+#define CreateHardLink CreateHardLinkW
+#define CreateJobObject CreateJobObjectW
+#endif
+#define CreateMailslot CreateMailslotW
+#define CreateMutex CreateMutexW
+#define CreateNamedPipe CreateNamedPipeW
+#define CreateProcess CreateProcessW
+#define CreateProcessAsUser CreateProcessAsUserW
+#define CreateSemaphore CreateSemaphoreW
+#if (_WIN32_WINNT >= 0x0600)
+#define CreateSymbolicLink CreateSymbolicLinkW
+#endif
+#define CreateWaitableTimer CreateWaitableTimerW
+#define DefineDosDevice DefineDosDeviceW
+#define DeleteFile DeleteFileW
+#if (_WIN32_WINNT >= 0x0500)
+#define DeleteVolumeMountPoint DeleteVolumeMountPointW
+#define DnsHostnameToComputerName DnsHostnameToComputerNameW
+#endif
+#define EncryptFile EncryptFileW
+#define EndUpdateResource EndUpdateResourceW
+#define EnumResourceLanguages EnumResourceLanguagesW
+#define EnumResourceNames EnumResourceNamesW
+#define EnumResourceTypes EnumResourceTypesW
+#define ExpandEnvironmentStrings ExpandEnvironmentStringsW
+#define FatalAppExit FatalAppExitW
+#define FileEncryptionStatus FileEncryptionStatusW
+#if (_WIN32_WINNT >= 0x0501)
+#define FindActCtxSectionString FindActCtxSectionStringW
+#endif
+#define FindAtom FindAtomW
+#define FindFirstChangeNotification FindFirstChangeNotificationW
+#define FindFirstFile FindFirstFileW
+#define FindFirstFileEx FindFirstFileExW
+#if (_WIN32_WINNT >= 0x0500)
+#define FindFirstVolume FindFirstVolumeW
+#define FindFirstVolumeMountPoint FindFirstVolumeMountPointW
+#endif
+#define FindNextFile FindNextFileW
+#if (_WIN32_WINNT >= 0x0500)
+#define FindNextVolume FindNextVolumeW
+#define FindNextVolumeMountPoint  FindNextVolumeMountPointW
+#endif
+#define FindResource FindResourceW
+#define FindResourceEx FindResourceExW
+#define FormatMessage FormatMessageW
+#define FreeEnvironmentStrings FreeEnvironmentStringsW
+#define GetAtomName GetAtomNameW
+#define GetBinaryType GetBinaryTypeW
+#define GetCommandLine GetCommandLineW
+#define GetCompressedFileSize GetCompressedFileSizeW
+#define GetComputerName GetComputerNameW
+#if (_WIN32_WINNT >= 0x0500)
+#define GetComputerNameEx GetComputerNameExW
+#endif
+#define GetCurrentDirectory GetCurrentDirectoryW
+#define GetDefaultCommConfig GetDefaultCommConfigW
+#define GetDiskFreeSpace GetDiskFreeSpaceW
+#define GetDiskFreeSpaceEx GetDiskFreeSpaceExW
+#if (_WIN32_WINNT >= 0x0502)
+#define GetDllDirectory GetDllDirectoryW
+#endif
+#define GetDriveType GetDriveTypeW
+#define GetEnvironmentStrings GetEnvironmentStringsW
+#define GetEnvironmentVariable GetEnvironmentVariableW
+#define GetFileAttributes GetFileAttributesW
+#define GetFileSecurity GetFileSecurityW
+#define GetFileAttributesEx GetFileAttributesExW
+#if (_WIN32_WINNT >= 0x0600)
+#define GetFinalPathNameByHandle GetFinalPathNameByHandleW
+#endif
+#define GetFullPathName GetFullPathNameW
+#define GetLogicalDriveStrings GetLogicalDriveStringsW
+#if (_WIN32_WINNT >= 0x0500 || _WIN32_WINDOWS >= 0x0410)
+#define GetLongPathName GetLongPathNameW
+#endif
+#define GetModuleFileName GetModuleFileNameW
+#define GetModuleHandle GetModuleHandleW
+#if (_WIN32_WINNT >= 0x0501)
+#define GetModuleHandleEx GetModuleHandleExW
+#endif
+#define GetNamedPipeHandleState GetNamedPipeHandleStateW
+#define GetPrivateProfileInt GetPrivateProfileIntW
+#define GetPrivateProfileSection GetPrivateProfileSectionW
+#define GetPrivateProfileSectionNames GetPrivateProfileSectionNamesW
+#define GetPrivateProfileString GetPrivateProfileStringW
+#define GetPrivateProfileStruct GetPrivateProfileStructW
+#define GetProfileInt GetProfileIntW
+#define GetProfileSection GetProfileSectionW
+#define GetProfileString GetProfileStringW
+#define GetShortPathName GetShortPathNameW
+#define GetStartupInfo GetStartupInfoW
+#define GetSystemDirectory GetSystemDirectoryW
+#if (_WIN32_WINNT >= 0x0500)
+#define GetSystemWindowsDirectory GetSystemWindowsDirectoryW
+#endif
+#if (_WIN32_WINNT >= 0x0501)
+#define GetSystemWow64Directory GetSystemWow64DirectoryW
+#endif
+#define GetTempFileName GetTempFileNameW
+#define GetTempPath GetTempPathW
+#define GetUserName GetUserNameW
+#define GetVersionEx GetVersionExW
+#define GetVolumeInformation GetVolumeInformationW
+#define GetVolumeNameForVolumeMountPoint GetVolumeNameForVolumeMountPointW
+#define GetVolumePathName GetVolumePathNameW
+#define GetVolumePathNamesForVolumeName GetVolumePathNamesForVolumeNameW
+#define GetWindowsDirectory GetWindowsDirectoryW
+#define GlobalAddAtom GlobalAddAtomW
+#define GlobalFindAtom GlobalFindAtomW
+#define GlobalGetAtomName GlobalGetAtomNameW
+#define IsBadStringPtr IsBadStringPtrW
+#define LoadLibrary LoadLibraryW
+#define LoadLibraryEx LoadLibraryExW
+#define LogonUser LogonUserW
+#define LookupAccountName LookupAccountNameW
+#define LookupAccountSid LookupAccountSidW
+#define LookupPrivilegeDisplayName LookupPrivilegeDisplayNameW
+#define LookupPrivilegeName LookupPrivilegeNameW
+#define LookupPrivilegeValue LookupPrivilegeValueW
+#define lstrcat lstrcatW
+#define lstrcmp lstrcmpW
+#define lstrcmpi lstrcmpiW
+#define lstrcpy lstrcpyW
+#define lstrcpyn lstrcpynW
+#define lstrlen lstrlenW
+#define MoveFile MoveFileW
+#define MoveFileEx MoveFileExW
+#if (_WIN32_WINNT >= 0x0500)
+#define MoveFileWithProgress MoveFileWithProgressW
+#endif
+#define ObjectCloseAuditAlarm ObjectCloseAuditAlarmW
+#define ObjectDeleteAuditAlarm ObjectDeleteAuditAlarmW
+#define ObjectOpenAuditAlarm ObjectOpenAuditAlarmW
+#define ObjectPrivilegeAuditAlarm ObjectPrivilegeAuditAlarmW
+#define OpenBackupEventLog OpenBackupEventLogW
+#define OpenEvent OpenEventW
+#define OpenEventLog OpenEventLogW
+#define OpenFileMapping OpenFileMappingW
+#define OpenMutex OpenMutexW
+#define OpenSemaphore OpenSemaphoreW
+#define OutputDebugString OutputDebugStringW
+#define PrivilegedServiceAuditAlarm PrivilegedServiceAuditAlarmW
+#define QueryDosDevice QueryDosDeviceW
+#define ReadEventLog ReadEventLogW
+#define RegisterEventSource RegisterEventSourceW
+#define RemoveDirectory RemoveDirectoryW
+#if (_WIN32_WINNT >= 0x0500)
+#define ReplaceFile ReplaceFileW
+#endif
+#define ReportEvent ReportEventW
+#define SearchPath SearchPathW
+#define SetComputerName SetComputerNameW
+#define SetCurrentDirectory SetCurrentDirectoryW
+#define SetDefaultCommConfig SetDefaultCommConfigW
+#if (_WIN32_WINNT >= 0x0502)
+#define SetDllDirectory SetDllDirectoryW
+#endif
+#define SetEnvironmentVariable SetEnvironmentVariableW
+#define SetFileAttributes SetFileAttributesW
+#define SetFileSecurity SetFileSecurityW
+#if (_WIN32_WINNT >= 0x0501)
+#define SetFileShortName SetFileShortNameW
+#endif
+#if (_WIN32_WINNT >= 0x0502)
+#define SetFirmwareEnvironmentVariable SetFirmwareEnvironmentVariableW
+#endif
+#define SetVolumeLabel SetVolumeLabelW
+#define SetVolumeMountPoint SetVolumeMountPointW
+#define UpdateResource UpdateResourceW
+#define VerifyVersionInfo VerifyVersionInfoW
+#define WaitNamedPipe WaitNamedPipeW
+#define WritePrivateProfileSection WritePrivateProfileSectionW
+#define WritePrivateProfileString WritePrivateProfileStringW
+#define WritePrivateProfileStruct WritePrivateProfileStructW
+#define WriteProfileSection WriteProfileSectionW
+#define WriteProfileString WriteProfileStringW
+#else
+typedef STARTUPINFOA STARTUPINFO,*LPSTARTUPINFO;
+typedef WIN32_FIND_DATAA WIN32_FIND_DATA,*PWIN32_FIND_DATA,*LPWIN32_FIND_DATA;
+typedef HW_PROFILE_INFOA HW_PROFILE_INFO,*LPHW_PROFILE_INFO;
+#if (_WIN32_WINNT >= 0x0501)
+typedef ACTCTXA ACTCTX,*PACTCTX;
+typedef PCACTCTXA PCACTCTX;
+#endif
+#define AccessCheckAndAuditAlarm AccessCheckAndAuditAlarmA
+#define AddAtom AddAtomA
+#define BackupEventLog BackupEventLogA
+#define BeginUpdateResource BeginUpdateResourceA
+#define BuildCommDCB BuildCommDCBA
+#define BuildCommDCBAndTimeouts BuildCommDCBAndTimeoutsA
+#define CallNamedPipe CallNamedPipeA
+#if (_WIN32_WINNT >= 0x0501)
+#define CheckNameLegalDOS8Dot3 CheckNameLegalDOS8Dot3A
+#endif
+#define ClearEventLog ClearEventLogA
+#define CommConfigDialog CommConfigDialogA
+#define CopyFile CopyFileA
+#define CopyFileEx CopyFileExA
+#if (_WIN32_WINNT >= 0x0501)
+#define CreateActCtx CreateActCtxA
+#endif
+#define CreateDirectory CreateDirectoryA
+#define CreateDirectoryEx CreateDirectoryExA
+#define CreateEvent CreateEventA
+#define CreateFile CreateFileA
+#define CreateFileMapping CreateFileMappingA
+#if (_WIN32_WINNT >= 0x0500)
+#define CreateHardLink CreateHardLinkA
+#define CreateJobObject CreateJobObjectA
+#endif
+#define CreateMailslot CreateMailslotA
+#define CreateMutex CreateMutexA
+#define CreateNamedPipe CreateNamedPipeA
+#define CreateProcess CreateProcessA
+#define CreateProcessAsUser CreateProcessAsUserA
+#define CreateSemaphore CreateSemaphoreA
+#if (_WIN32_WINNT >= 0x0600)
+#define CreateSymbolicLink CreateSymbolicLinkA
+#endif
+#define CreateWaitableTimer CreateWaitableTimerA
+#define DefineDosDevice DefineDosDeviceA
+#define DeleteFile DeleteFileA
+#if (_WIN32_WINNT >= 0x0500)
+#define DeleteVolumeMountPoint DeleteVolumeMountPointA
+#define DnsHostnameToComputerName DnsHostnameToComputerNameA
+#endif
+#define EncryptFile EncryptFileA
+#define EndUpdateResource EndUpdateResourceA
+#define EnumResourceLanguages EnumResourceLanguagesA
+#define EnumResourceNames EnumResourceNamesA
+#define EnumResourceTypes EnumResourceTypesA
+#define ExpandEnvironmentStrings ExpandEnvironmentStringsA
+#define FatalAppExit FatalAppExitA
+#define FileEncryptionStatus FileEncryptionStatusA
+#if (_WIN32_WINNT >= 0x0501)
+#define FindActCtxSectionString FindActCtxSectionStringA
+#endif
+#define FindAtom FindAtomA
+#define FindFirstChangeNotification FindFirstChangeNotificationA
+#define FindFirstFile FindFirstFileA
+#define FindFirstFileEx FindFirstFileExA
+#if (_WIN32_WINNT >= 0x0500)
+#define FindFirstVolume FindFirstVolumeA
+#define FindFirstVolumeMountPoint FindFirstVolumeMountPointA
+#endif
+#define FindNextFile FindNextFileA
+#if (_WIN32_WINNT >= 0x0500)
+#define FindNextVolume FindNextVolumeA
+#define FindNextVolumeMountPoint FindNextVolumeMountPointA
+#endif
+#define FindResource FindResourceA
+#define FindResourceEx FindResourceExA
+#define FormatMessage FormatMessageA
+#define FreeEnvironmentStrings FreeEnvironmentStringsA
+#define GetAtomName GetAtomNameA
+#define GetBinaryType GetBinaryTypeA
+#define GetCommandLine GetCommandLineA
+#define GetComputerName GetComputerNameA
+#if (_WIN32_WINNT >= 0x0500)
+#define GetComputerNameEx GetComputerNameExA
+#endif
+#define GetCompressedFileSize GetCompressedFileSizeA
+#define GetCurrentDirectory GetCurrentDirectoryA
+#define GetDefaultCommConfig GetDefaultCommConfigA
+#define GetDiskFreeSpace GetDiskFreeSpaceA
+#define GetDiskFreeSpaceEx GetDiskFreeSpaceExA
+#if (_WIN32_WINNT >= 0x0502)
+#define GetDllDirectory GetDllDirectoryA
+#endif
+#define GetDriveType GetDriveTypeA
+#define GetEnvironmentVariable GetEnvironmentVariableA
+#define GetFileAttributes GetFileAttributesA
+#define GetFileSecurity GetFileSecurityA
+#define GetFileAttributesEx GetFileAttributesExA
+#if (_WIN32_WINNT >= 0x0600)
+#define GetFinalPathNameByHandle GetFinalPathNameByHandleA
+#endif
+#define GetFullPathName GetFullPathNameA
+#define GetLogicalDriveStrings GetLogicalDriveStringsA
+#if (_WIN32_WINNT >= 0x0500 || _WIN32_WINDOWS >= 0x0410)
+#define GetLongPathName GetLongPathNameA
+#endif
+#define GetNamedPipeHandleState GetNamedPipeHandleStateA
+#define GetModuleHandle GetModuleHandleA
+#if (_WIN32_WINNT >= 0x0501)
+#define GetModuleHandleEx GetModuleHandleExA
+#endif
+#define GetModuleFileName GetModuleFileNameA
+#define GetPrivateProfileInt GetPrivateProfileIntA
+#define GetPrivateProfileSection GetPrivateProfileSectionA
+#define GetPrivateProfileSectionNames GetPrivateProfileSectionNamesA
+#define GetPrivateProfileString GetPrivateProfileStringA
+#define GetPrivateProfileStruct GetPrivateProfileStructA
+#define GetProfileInt GetProfileIntA
+#define GetProfileSection GetProfileSectionA
+#define GetProfileString GetProfileStringA
+#define GetShortPathName GetShortPathNameA
+#define GetStartupInfo GetStartupInfoA
+#define GetSystemDirectory GetSystemDirectoryA
+#if (_WIN32_WINNT >= 0x0500)
+#define GetSystemWindowsDirectory GetSystemWindowsDirectoryA
+#endif
+#if (_WIN32_WINNT >= 0x0501)
+#define GetSystemWow64Directory GetSystemWow64DirectoryA
+#endif
+#define GetTempFileName GetTempFileNameA
+#define GetTempPath GetTempPathA
+#define GetUserName GetUserNameA
+#define GetVersionEx GetVersionExA
+#define GetVolumeInformation GetVolumeInformationA
+#define GetVolumeNameForVolumeMountPoint GetVolumeNameForVolumeMountPointA
+#define GetVolumePathName GetVolumePathNameA
+#define GetVolumePathNamesForVolumeName GetVolumePathNamesForVolumeNameA
+#define GetWindowsDirectory GetWindowsDirectoryA
+#define GlobalAddAtom GlobalAddAtomA
+#define GlobalFindAtom GlobalFindAtomA
+#define GlobalGetAtomName GlobalGetAtomNameA
+#define IsBadStringPtr IsBadStringPtrA
+#define LoadLibrary LoadLibraryA
+#define LoadLibraryEx LoadLibraryExA
+#define LogonUser LogonUserA
+#define LookupAccountName LookupAccountNameA
+#define LookupAccountSid LookupAccountSidA
+#define LookupPrivilegeDisplayName LookupPrivilegeDisplayNameA
+#define LookupPrivilegeName LookupPrivilegeNameA
+#define LookupPrivilegeValue LookupPrivilegeValueA
+#define lstrcat lstrcatA
+#define lstrcmp lstrcmpA
+#define lstrcmpi lstrcmpiA
+#define lstrcpy lstrcpyA
+#define lstrcpyn lstrcpynA
+#define lstrlen lstrlenA
+#define MoveFile MoveFileA
+#define MoveFileEx MoveFileExA
+#if (_WIN32_WINNT >= 0x0500)
+#define MoveFileWithProgress MoveFileWithProgressA
+#endif
+#define ObjectCloseAuditAlarm ObjectCloseAuditAlarmA
+#define ObjectDeleteAuditAlarm ObjectDeleteAuditAlarmA
+#define ObjectOpenAuditAlarm ObjectOpenAuditAlarmA
+#define ObjectPrivilegeAuditAlarm ObjectPrivilegeAuditAlarmA
+#define OpenBackupEventLog OpenBackupEventLogA
+#define OpenEvent OpenEventA
+#define OpenEventLog OpenEventLogA
+#define OpenFileMapping OpenFileMappingA
+#define OpenMutex OpenMutexA
+#define OpenSemaphore OpenSemaphoreA
+#define OutputDebugString OutputDebugStringA
+#define PrivilegedServiceAuditAlarm PrivilegedServiceAuditAlarmA
+#define QueryDosDevice QueryDosDeviceA
+#define ReadEventLog ReadEventLogA
+#define RegisterEventSource RegisterEventSourceA
+#define RemoveDirectory RemoveDirectoryA
+#if (_WIN32_WINNT >= 0x0500)
+#define ReplaceFile ReplaceFileA
+#endif
+#define ReportEvent ReportEventA
+#define SearchPath SearchPathA
+#define SetComputerName SetComputerNameA
+#define SetCurrentDirectory SetCurrentDirectoryA
+#define SetDefaultCommConfig SetDefaultCommConfigA
+#if (_WIN32_WINNT >= 0x0502)
+#define SetDllDirectory SetDllDirectoryA
+#endif
+#define SetEnvironmentVariable SetEnvironmentVariableA
+#define SetFileAttributes SetFileAttributesA
+#define SetFileSecurity SetFileSecurityA
+#if (_WIN32_WINNT >= 0x0501)
+#define SetFileShortName SetFileShortNameA
+#endif
+#if (_WIN32_WINNT >= 0x0502)
+#define SetFirmwareEnvironmentVariable SetFirmwareEnvironmentVariableA
+#endif
+#define SetVolumeLabel SetVolumeLabelA
+#define SetVolumeMountPoint SetVolumeMountPointA
+#define UpdateResource UpdateResourceA
+#define VerifyVersionInfo VerifyVersionInfoA
+#define WaitNamedPipe WaitNamedPipeA
+#define WritePrivateProfileSection WritePrivateProfileSectionA
+#define WritePrivateProfileString WritePrivateProfileStringA
+#define WritePrivateProfileStruct WritePrivateProfileStructA
+#define WriteProfileSection WriteProfileSectionA
+#define WriteProfileString WriteProfileStringA
+#endif
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* _WINBASE_H */
Index: Daodan/MinGW/include/winber.h
===================================================================
--- Daodan/MinGW/include/winber.h	(revision 1046)
+++ Daodan/MinGW/include/winber.h	(revision 1046)
@@ -0,0 +1,67 @@
+/*
+  winber.h - Header file for the Windows LDAP Basic Encoding Rules API
+
+  Written by Filip Navara <xnavara@volny.cz>
+
+  References:
+    The C LDAP Application Program Interface
+    http://www.watersprings.org/pub/id/draft-ietf-ldapext-ldap-c-api-05.txt
+
+    Lightweight Directory Access Protocol Reference
+    http://msdn.microsoft.com/library/en-us/netdir/ldap/ldap_reference.asp
+
+  This library is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+*/
+
+#ifndef _WINBER_H
+#define _WINBER_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef WINBERAPI
+#define WINBERAPI DECLSPEC_IMPORT
+#endif
+
+typedef struct berelement BerElement;
+typedef ULONG ber_len_t;
+#include <pshpack4.h>
+typedef struct berval {
+	ber_len_t bv_len;
+	char *bv_val;
+} BerValue, LDAP_BERVAL, *PLDAP_BERVAL, BERVAL, *PBERVAL;
+#include <poppack.h>
+
+typedef ULONG ber_tag_t;
+typedef INT ber_int_t;
+typedef UINT ber_uint_t;
+typedef INT ber_slen_t;
+
+#define LBER_ERROR ((ber_tag_t)-1)
+#define LBER_DEFAULT ((ber_tag_t)-1)
+#define LBER_USE_DER 0x01
+
+WINBERAPI BerElement *ber_init(const BerValue*);
+WINBERAPI int ber_printf(BerElement*,const char*,...);
+WINBERAPI int ber_flatten(BerElement*,BerValue**);
+WINBERAPI ber_tag_t ber_scanf(BerElement*,const char*,...);
+WINBERAPI ber_tag_t ber_peek_tag(BerElement*,ber_len_t*);
+WINBERAPI ber_tag_t ber_skip_tag(BerElement*,ber_len_t*);
+WINBERAPI ber_tag_t ber_first_element(BerElement*,ber_len_t*,char**);
+WINBERAPI ber_tag_t ber_next_element(BerElement*,ber_len_t*,char*);
+WINBERAPI void ber_bvfree(BerValue*);
+WINBERAPI void ber_bvecfree(BerValue**);
+WINBERAPI void ber_free(BerElement*,int);
+WINBERAPI BerValue *ber_bvdup(BerValue*);
+WINBERAPI BerElement *ber_alloc_t(int);
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* _WINBER_H */
Index: Daodan/MinGW/include/wincon.h
===================================================================
--- Daodan/MinGW/include/wincon.h	(revision 1046)
+++ Daodan/MinGW/include/wincon.h	(revision 1046)
@@ -0,0 +1,232 @@
+#ifndef _WINCON_H
+#define _WINCON_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define FOREGROUND_BLUE	1
+#define FOREGROUND_GREEN	2
+#define FOREGROUND_RED	4
+#define FOREGROUND_INTENSITY	8
+#define BACKGROUND_BLUE	16
+#define BACKGROUND_GREEN	32
+#define BACKGROUND_RED	64
+#define BACKGROUND_INTENSITY	128
+#if (_WIN32_WINNT >= 0x0501)
+#define CONSOLE_FULLSCREEN_MODE	1
+#define CONSOLE_WINDOWED_MODE	2
+#endif
+#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_LINE_INPUT 2
+#define ENABLE_ECHO_INPUT 4
+#define ENABLE_PROCESSED_INPUT 1
+#define ENABLE_WINDOW_INPUT 8
+#define ENABLE_MOUSE_INPUT 16
+#define ENABLE_INSERT_MODE 32
+#define ENABLE_QUICK_EDIT_MODE 64
+#define ENABLE_EXTENDED_FLAGS  128
+#define ENABLE_AUTO_POSITION   256
+#define ENABLE_PROCESSED_OUTPUT 1
+#define ENABLE_WRAP_AT_EOL_OUTPUT 2
+#define KEY_EVENT 1
+#define MOUSE_EVENT 2
+#define WINDOW_BUFFER_SIZE_EVENT 4
+#define MENU_EVENT 8
+#define FOCUS_EVENT 16
+#define CAPSLOCK_ON 128
+#define ENHANCED_KEY 256
+#define RIGHT_ALT_PRESSED 1
+#define LEFT_ALT_PRESSED 2
+#define RIGHT_CTRL_PRESSED 4
+#define LEFT_CTRL_PRESSED 8
+#define SHIFT_PRESSED 16
+#define NUMLOCK_ON 32
+#define SCROLLLOCK_ON 64
+#define FROM_LEFT_1ST_BUTTON_PRESSED 1
+#define RIGHTMOST_BUTTON_PRESSED 2
+#define FROM_LEFT_2ND_BUTTON_PRESSED 4
+#define FROM_LEFT_3RD_BUTTON_PRESSED 8
+#define FROM_LEFT_4TH_BUTTON_PRESSED 16
+#define MOUSE_MOVED	1
+#define DOUBLE_CLICK	2
+#define MOUSE_WHEELED	4
+
+typedef struct _CHAR_INFO {
+	union {
+		WCHAR UnicodeChar;
+		CHAR AsciiChar;
+	} Char;
+	WORD Attributes;
+} CHAR_INFO, *PCHAR_INFO;
+typedef struct _SMALL_RECT {
+	SHORT Left;
+	SHORT Top;
+	SHORT Right;
+	SHORT Bottom;
+} SMALL_RECT, *PSMALL_RECT;
+typedef struct _CONSOLE_CURSOR_INFO {
+	DWORD	dwSize;
+	BOOL	bVisible;
+} CONSOLE_CURSOR_INFO,*PCONSOLE_CURSOR_INFO;
+typedef struct _COORD {
+	SHORT X;
+	SHORT Y;
+} COORD, *PCOORD;
+typedef struct _CONSOLE_FONT_INFO {
+	DWORD nFont;
+	COORD dwFontSize;
+} CONSOLE_FONT_INFO, *PCONSOLE_FONT_INFO;
+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 BOOL(CALLBACK *PHANDLER_ROUTINE)(DWORD);
+typedef struct _KEY_EVENT_RECORD {
+	BOOL bKeyDown;
+	WORD wRepeatCount;
+	WORD wVirtualKeyCode;
+	WORD wVirtualScanCode;
+	union {
+		WCHAR UnicodeChar;
+		CHAR AsciiChar;
+	} uChar;
+	DWORD dwControlKeyState;
+}
+#ifdef __GNUC__
+/* gcc's alignment is not what win32 expects */
+ __attribute__((packed))
+#endif
+KEY_EVENT_RECORD;
+
+typedef struct _MOUSE_EVENT_RECORD {
+	COORD dwMousePosition;
+	DWORD dwButtonState;
+	DWORD dwControlKeyState;
+	DWORD dwEventFlags;
+} MOUSE_EVENT_RECORD;
+typedef struct _WINDOW_BUFFER_SIZE_RECORD {	COORD dwSize; } WINDOW_BUFFER_SIZE_RECORD;
+typedef struct _MENU_EVENT_RECORD {	UINT dwCommandId; } MENU_EVENT_RECORD,*PMENU_EVENT_RECORD;
+typedef struct _FOCUS_EVENT_RECORD { BOOL bSetFocus; } FOCUS_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;
+
+BOOL WINAPI AllocConsole(void);
+#if (_WIN32_WINNT >= 0x0501)
+#define ATTACH_PARENT_PROCESS	((DWORD)-1)
+BOOL WINAPI AttachConsole(DWORD);
+#endif
+HANDLE WINAPI CreateConsoleScreenBuffer(DWORD,DWORD,CONST SECURITY_ATTRIBUTES*,DWORD,LPVOID);
+BOOL WINAPI FillConsoleOutputAttribute(HANDLE,WORD,DWORD,COORD,PDWORD);
+BOOL WINAPI FillConsoleOutputCharacterA(HANDLE,CHAR,DWORD,COORD,PDWORD);
+BOOL WINAPI FillConsoleOutputCharacterW(HANDLE,WCHAR,DWORD,COORD,PDWORD);
+BOOL WINAPI FlushConsoleInputBuffer(HANDLE);
+BOOL WINAPI FreeConsole(void);
+BOOL WINAPI GenerateConsoleCtrlEvent(DWORD,DWORD);
+UINT WINAPI GetConsoleCP(void);
+BOOL WINAPI GetConsoleCursorInfo(HANDLE,PCONSOLE_CURSOR_INFO);
+BOOL WINAPI GetConsoleMode(HANDLE,PDWORD);
+UINT WINAPI GetConsoleOutputCP(void);
+BOOL WINAPI GetConsoleScreenBufferInfo(HANDLE,PCONSOLE_SCREEN_BUFFER_INFO);
+DWORD WINAPI GetConsoleTitleA(LPSTR,DWORD);
+DWORD WINAPI GetConsoleTitleW(LPWSTR,DWORD);
+#if (_WIN32_WINNT >= 0x0500)
+BOOL WINAPI GetConsoleDisplayMode(LPDWORD);
+HWND WINAPI GetConsoleWindow(void);
+#endif
+#if (_WIN32_WINNT >= 0x0501)
+DWORD WINAPI GetConsoleProcessList(LPDWORD, DWORD);
+#endif
+COORD WINAPI GetLargestConsoleWindowSize(HANDLE);
+BOOL WINAPI GetNumberOfConsoleInputEvents(HANDLE,PDWORD);
+BOOL WINAPI GetNumberOfConsoleMouseButtons(PDWORD);
+BOOL WINAPI PeekConsoleInputA(HANDLE,PINPUT_RECORD,DWORD,PDWORD);
+BOOL WINAPI PeekConsoleInputW(HANDLE,PINPUT_RECORD,DWORD,PDWORD);
+BOOL WINAPI ReadConsoleA(HANDLE,PVOID,DWORD,PDWORD,PVOID);
+BOOL WINAPI ReadConsoleW(HANDLE,PVOID,DWORD,PDWORD,PVOID);
+BOOL WINAPI ReadConsoleInputA(HANDLE,PINPUT_RECORD,DWORD,PDWORD);
+BOOL WINAPI ReadConsoleInputW(HANDLE,PINPUT_RECORD,DWORD,PDWORD);
+BOOL WINAPI ReadConsoleOutputAttribute(HANDLE,LPWORD,DWORD,COORD,LPDWORD);
+BOOL WINAPI ReadConsoleOutputCharacterA(HANDLE,LPSTR,DWORD,COORD,PDWORD);
+BOOL WINAPI ReadConsoleOutputCharacterW(HANDLE,LPWSTR,DWORD,COORD,PDWORD);
+BOOL WINAPI ReadConsoleOutputA(HANDLE,PCHAR_INFO,COORD,COORD,PSMALL_RECT);
+BOOL WINAPI ReadConsoleOutputW(HANDLE,PCHAR_INFO,COORD,COORD,PSMALL_RECT);
+BOOL WINAPI ScrollConsoleScreenBufferA(HANDLE,const SMALL_RECT*,const SMALL_RECT*,COORD,const CHAR_INFO*);
+BOOL WINAPI ScrollConsoleScreenBufferW(HANDLE,const SMALL_RECT*,const SMALL_RECT*,COORD,const CHAR_INFO*);
+BOOL WINAPI SetConsoleActiveScreenBuffer(HANDLE);
+BOOL WINAPI SetConsoleCP(UINT);
+BOOL WINAPI SetConsoleCtrlHandler(PHANDLER_ROUTINE,BOOL);
+BOOL WINAPI SetConsoleCursorInfo(HANDLE,const CONSOLE_CURSOR_INFO*);
+BOOL WINAPI SetConsoleCursorPosition(HANDLE,COORD);
+#if (_WIN32_WINNT >= 0x0501)
+BOOL WINAPI SetConsoleDisplayMode(HANDLE,DWORD,PCOORD);
+#endif
+BOOL WINAPI SetConsoleMode(HANDLE,DWORD);
+BOOL WINAPI SetConsoleOutputCP(UINT);
+BOOL WINAPI SetConsoleScreenBufferSize(HANDLE,COORD);
+BOOL WINAPI SetConsoleTextAttribute(HANDLE,WORD);
+BOOL WINAPI SetConsoleTitleA(LPCSTR);
+BOOL WINAPI SetConsoleTitleW(LPCWSTR);
+BOOL WINAPI SetConsoleWindowInfo(HANDLE,BOOL,const SMALL_RECT*);
+BOOL WINAPI WriteConsoleA(HANDLE,PCVOID,DWORD,PDWORD,PVOID);
+BOOL WINAPI WriteConsoleW(HANDLE,PCVOID,DWORD,PDWORD,PVOID);
+BOOL WINAPI WriteConsoleInputA(HANDLE,const INPUT_RECORD*,DWORD,PDWORD);
+BOOL WINAPI WriteConsoleInputW(HANDLE,const INPUT_RECORD*,DWORD,PDWORD);
+BOOL WINAPI WriteConsoleOutputA(HANDLE,const CHAR_INFO*,COORD,COORD,PSMALL_RECT);
+BOOL WINAPI WriteConsoleOutputW(HANDLE,const CHAR_INFO*,COORD,COORD,PSMALL_RECT);
+BOOL WINAPI WriteConsoleOutputAttribute(HANDLE,const WORD*,DWORD,COORD,PDWORD);
+BOOL WINAPI WriteConsoleOutputCharacterA(HANDLE,LPCSTR,DWORD,COORD,PDWORD);
+BOOL WINAPI WriteConsoleOutputCharacterW(HANDLE,LPCWSTR,DWORD,COORD,PDWORD);
+
+#ifdef UNICODE
+#define FillConsoleOutputCharacter FillConsoleOutputCharacterW
+#define GetConsoleTitle GetConsoleTitleW
+#define PeekConsoleInput PeekConsoleInputW
+#define ReadConsole ReadConsoleW
+#define ReadConsoleInput ReadConsoleInputW
+#define ReadConsoleOutput ReadConsoleOutputW
+#define ReadConsoleOutputCharacter ReadConsoleOutputCharacterW
+#define ScrollConsoleScreenBuffer ScrollConsoleScreenBufferW
+#define SetConsoleTitle SetConsoleTitleW
+#define WriteConsole WriteConsoleW
+#define WriteConsoleInput WriteConsoleInputW
+#define WriteConsoleOutput WriteConsoleOutputW
+#define WriteConsoleOutputCharacter WriteConsoleOutputCharacterW
+#else
+#define FillConsoleOutputCharacter FillConsoleOutputCharacterA
+#define GetConsoleTitle GetConsoleTitleA
+#define PeekConsoleInput PeekConsoleInputA
+#define ReadConsole ReadConsoleA
+#define ReadConsoleInput ReadConsoleInputA
+#define ReadConsoleOutput ReadConsoleOutputA
+#define ReadConsoleOutputCharacter ReadConsoleOutputCharacterA
+#define ScrollConsoleScreenBuffer ScrollConsoleScreenBufferA
+#define SetConsoleTitle SetConsoleTitleA
+#define WriteConsole WriteConsoleA
+#define WriteConsoleInput WriteConsoleInputA
+#define WriteConsoleOutput WriteConsoleOutputA
+#define WriteConsoleOutputCharacter WriteConsoleOutputCharacterA
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/wincrypt.h
===================================================================
--- Daodan/MinGW/include/wincrypt.h	(revision 1046)
+++ Daodan/MinGW/include/wincrypt.h	(revision 1046)
@@ -0,0 +1,1505 @@
+/*
+ * wincrypt.h
+ *
+ * Cryptographic services API manifest constants and function prototypes.
+ *
+ * $Id: wincrypt.h,v 34e5e7606781 2016/05/23 18:31:09 keithmarshall $
+ *
+ * Written by Anders Norlander <anorland@hem2.passagen.se>
+ * Copyright (C) 1998-2000, 2002-2004, 2006-2008, 2010, 2015,
+ *   MinGW.org Project
+ *
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ *
+ */
+#ifndef _WINCRYPT_H
+#define _WINCRYPT_H
+#pragma GCC system_header
+
+#ifndef WINADVAPI
+#define WINADVAPI
+#endif
+
+_BEGIN_C_DECLS
+
+#define MS_DEF_PROV			__AW_EXTENDED__( MS_DEF_PROV )
+#define MS_DEF_PROV_W			__AW_STRING_W__( MS_DEF_PROV_A )
+#define MS_DEF_PROV_A			"Microsoft Base Cryptographic Provider v1.0"
+
+#define MS_ENHANCED_PROV		__AW_EXTENDED__( MS_ENHANCED_PROV )
+#define MS_ENHANCED_PROV_W		__AW_STRING_W__( MS_ENHANCED_PROV_A )
+#define MS_ENHANCED_PROV_A		"Microsoft Enhanced Cryptographic Provider v1.0"
+
+#define MS_STRONG_PROV			__AW_EXTENDED__( MS_STRONG_PROV )
+#define MS_STRONG_PROV_W		__AW_STRING_W__( MS_STRONG_PROV_A )
+#define MS_STRONG_PROV_A		"Microsoft Strong Cryptographic Provider"
+
+#define MS_DEF_RSA_SIG_PROV		__AW_EXTENDED__( MS_DEF_RSA_SIG_PROV )
+#define MS_DEF_RSA_SIG_PROV_W		__AW_STRING_W__( MS_DEF_RSA_SIG_PROV_A )
+#define MS_DEF_RSA_SIG_PROV_A		"Microsoft RSA Signature Cryptographic Provider"
+
+#define MS_DEF_RSA_SCHANNEL_PROV	__AW_EXTENDED__( MS_DEF_RSA_SCHANNEL_PROV )
+#define MS_DEF_RSA_SCHANNEL_PROV_W	__AW_STRING_W__( MS_DEF_RSA_SCHANNEL_PROV_A )
+#define MS_DEF_RSA_SCHANNEL_PROV_A	"Microsoft RSA SChannel Cryptographic Provider"
+
+#define MS_DEF_DSS_PROV 		__AW_EXTENDED__( MS_DEF_DSS_PROV )
+#define MS_DEF_DSS_PROV_W		__AW_STRING_W__( MS_DEF_DSS_PROV_A )
+#define MS_DEF_DSS_PROV_A		"Microsoft Base DSS Cryptographic Provider"
+
+#define MS_DEF_DSS_DH_PROV		__AW_EXTENDED__( MS_DEF_DSS_DH_PROV )
+#define MS_DEF_DSS_DH_PROV_W		__AW_STRING_W__( MS_DEF_DSS_DH_PROV_A )
+#define MS_DEF_DSS_DH_PROV_A		"Microsoft Base DSS and Diffie-Hellman Cryptographic Provider"
+
+#define MS_ENH_DSS_DH_PROV		__AW_EXTENDED__( MS_ENH_DSS_DH_PROV )
+#define MS_ENH_DSS_DH_PROV_W		__AW_STRING_W__( MS_ENH_DSS_DH_PROV_A )
+#define MS_ENH_DSS_DH_PROV_A		"Microsoft Enhanced DSS and Diffie-Hellman Cryptographic Provider"
+
+#define MS_DEF_DH_SCHANNEL_PROV 	__AW_EXTENDED__( MS_DEF_DH_SCHANNEL_PROV )
+#define MS_DEF_DH_SCHANNEL_PROV_W	__AW_STRING_W__( MS_DEF_DH_SCHANNEL_PROV_A )
+#define MS_DEF_DH_SCHANNEL_PROV_A	"Microsoft DH SChannel Cryptographic Provider"
+
+#define MS_SCARD_PROV			__AW_EXTENDED__( MS_SCARD_PROV )
+#define MS_SCARD_PROV_W 		__AW_STRING_W__( MS_SCARD_PROV_A )
+#define MS_SCARD_PROV_A 		"Microsoft Base Smart Card Crypto Provider"
+
+#if _WIN32_WINNT >= _WIN32_WINNT_WINXP
+# define MS_ENH_RSA_AES_PROV		__AW_EXTENDED__( MS_ENH_RSA_AES_PROV )
+# define MS_ENH_RSA_AES_PROV_W	 	__AW_STRING_W__( MS_ENH_RSA_AES_PROV_A )
+
+# if _WIN32_WINNT == _WIN32_WINNT_WINXP
+#  define MS_ENH_RSA_AES_PROV_A 	"Microsoft Enhanced RSA and AES Cryptographic Provider (Prototype)"
+
+#else /* _WIN32_WINNT > _WIN32_WINNT_WINXP */
+#  define MS_ENH_RSA_AES_PROV_A 	"Microsoft Enhanced RSA and AES Cryptographic Provider"
+# endif
+#endif
+
+#define GET_ALG_CLASS(x)		     ((x) & ALG_CLASS_ALL)
+#define GET_ALG_TYPE(x) 		     ((x) & 0x1E00)	/* x & 7680 */
+#define GET_ALG_SID(x)			     ((x) & 0x01FF)	/* x &  511 */
+
+#define ALG_CLASS_ANY					 0
+#define ALG_CLASS_SIGNATURE 			    0x2000 	/*  8192 */
+#define ALG_CLASS_MSG_ENCRYPT			    0x4000 	/* 16384 */
+#define ALG_CLASS_DATA_ENCRYPT			    0x6000 	/* 24576 */
+#define ALG_CLASS_HASH		 		    0x8000 	/* 32768 */
+#define ALG_CLASS_KEY_EXCHANGE			    0xA000 	/* 40960 */
+#define ALG_CLASS_ALL				    0xE000 	/* (0x0007 << 13) */
+
+#define ALG_TYPE_ANY					 0
+#define ALG_TYPE_DSS			   	    0x0200 	/*   512 */
+#define ALG_TYPE_RSA				    0x0400 	/*  1024 */
+#define ALG_TYPE_BLOCK				    0x0600 	/*  1536 */
+#define ALG_TYPE_STREAM 			    0x0800 	/*  2048 */
+#define ALG_TYPE_DH				    0x0A00 	/* (0x0005 << 9) */
+#define ALG_TYPE_SECURECHANNEL			    0x0C00 	/* (6 << 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_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_RC4					 1
+#define ALG_SID_RC2					 2
+
+#define ALG_SID_SEAL					 2
+
+#define ALG_SID_MD2					 1
+#define ALG_SID_MD4					 2
+#define ALG_SID_MD5					 3
+#define ALG_SID_SHA					 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_AES_128 				14
+#define ALG_SID_AES_192 				15
+#define ALG_SID_AES_256 				16
+#define ALG_SID_AES					17
+#define ALG_SID_EXAMPLE 				80
+
+#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				    CALG_SHA
+#define CALG_MAC			(ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_MAC)
+#define CALG_3DES			(ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | 3)
+#define CALG_CYLINK_MEK 		(ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | 12)
+#define CALG_SKIPJACK			(ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | 10)
+#define CALG_KEA_KEYX			(ALG_CLASS_KEY_EXCHANGE | ALG_TYPE_STREAM | ALG_TYPE_DSS | 4)
+#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_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_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_EPHEM			(ALG_CLASS_KEY_EXCHANGE | ALG_TYPE_STREAM | ALG_TYPE_DSS | ALG_SID_DSS_DMS)
+#define CALG_DESX			(ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_DESX)
+#define CALG_TLS1PRF			(ALG_CLASS_DHASH | ALG_TYPE_ANY | ALG_SID_TLS1PRF)
+#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)
+
+/* dwFlags definitions for CryptAcquireContext
+ */
+#define CRYPT_VERIFYCONTEXT			0xF0000000
+#define CRYPT_NEWKEYSET 			0x00000008
+#define CRYPT_DELETEKEYSET			0x00000010	/* 16 */
+#define CRYPT_MACHINE_KEYSET			0x00000020	/* 32 */
+#define CRYPT_SILENT				0x00000040	/* 64 */
+
+#define SIMPLEBLOB					 1
+#define PUBLICKEYBLOB					 6
+#define PRIVATEKEYBLOB					 7
+#define PLAINTEXTKEYBLOB				 8
+#define OPAQUEKEYBLOB					 9
+#define PUBLICKEYBLOBEX 				10
+#define SYMMETRICWRAPKEYBLOB				11
+
+#define AT_KEYEXCHANGE					 1
+#define AT_SIGNATURE					 2
+
+#define CRYPT_USERDATA					 1
+
+#define PKCS5_PADDING					 1
+
+#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_MODE_CBCI 				 6
+#define CRYPT_MODE_CFBP 				 7
+#define CRYPT_MODE_OFBP 				 8
+#define CRYPT_MODE_CBCOFM				 9
+#define CRYPT_MODE_CBCOFMI				10
+
+#define CRYPT_ENCRYPT				    0x0001
+#define CRYPT_DECRYPT				    0x0002
+#define CRYPT_EXPORT				    0x0004
+#define CRYPT_READ				    0x0008
+#define CRYPT_WRITE				    0x0010	/* 16 */
+#define CRYPT_MAC				    0x0020	/* 32 */
+
+#define HP_ALGID					 1
+#define HP_HASHVAL					 2
+#define HP_HASHSIZE					 4
+#define HP_HMAC_INFO					 5
+
+#define CRYPT_FAILED				     FALSE
+#define CRYPT_SUCCEED				      TRUE
+#define RCRYPT_SUCCEEDED(r)		      ((r) == CRYPT_SUCCEED)
+#define RCRYPT_FAILED(r)		      ((r) == 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 CRYPT_FIRST					 1
+#define CRYPT_NEXT					 2
+
+#define CRYPT_IMPL_HARDWARE				 1
+#define CRYPT_IMPL_SOFTWARE				 2
+#define CRYPT_IMPL_MIXED				 3
+#define CRYPT_IMPL_UNKNOWN				 4
+
+#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_MS_MAIL					 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_RSA_AES					24
+
+#define MAXUIDLEN					64
+
+#define CUR_BLOB_VERSION				 2
+
+#define X509_ASN_ENCODING				 1
+#define PKCS_7_ASN_ENCODING			     65536
+
+#define CERT_V1 					 0
+#define CERT_V2 					 1
+#define CERT_V3 					 2
+
+#define CERT_E_CHAINING 		      (-2146762486)
+#define CERT_E_CN_NO_MATCH		      (-2146762481)
+#define CERT_E_EXPIRED			      (-2146762495)
+#define CERT_E_PURPOSE			      (-2146762490)
+#define CERT_E_REVOCATION_FAILURE	      (-2146762482)
+#define CERT_E_REVOKED			      (-2146762484)
+#define CERT_E_ROLE			      (-2146762493)
+#define CERT_E_UNTRUSTEDROOT		      (-2146762487)
+#define CERT_E_UNTRUSTEDTESTROOT	      (-2146762483)
+#define CERT_E_VALIDITYPERIODNESTING	      (-2146762494)
+#define CERT_E_WRONG_USAGE		      (-2146762480)
+#define CERT_E_PATHLENCONST		      (-2146762492)
+#define CERT_E_CRITICAL 		      (-2146762491)
+#define CERT_E_ISSUERCHAINING		      (-2146762489)
+#define CERT_E_MALFORMED		      (-2146762488)
+#define CRYPT_E_REVOCATION_OFFLINE	      (-2146885613)
+#define CRYPT_E_REVOKED 		      (-2146885616)
+#define TRUST_E_BASIC_CONSTRAINTS	      (-2146869223)
+#define TRUST_E_CERT_SIGNATURE		      (-2146869244)
+#define TRUST_E_FAIL			      (-2146762485)
+
+#define CERT_TRUST_NO_ERROR				 0
+#define CERT_TRUST_IS_NOT_TIME_VALID		0x00000001
+#define CERT_TRUST_IS_NOT_TIME_NESTED		0x00000002
+#define CERT_TRUST_IS_REVOKED			0x00000004
+#define CERT_TRUST_IS_NOT_SIGNATURE_VALID	0x00000008
+#define CERT_TRUST_IS_NOT_VALID_FOR_USAGE	0x00000010	/*         16 */
+#define CERT_TRUST_IS_UNTRUSTED_ROOT		0x00000020	/*         32 */
+#define CERT_TRUST_REVOCATION_STATUS_UNKNOWN	0x00000040	/*         64 */
+#define CERT_TRUST_IS_CYCLIC			0x00000080	/*        128 */
+#define CERT_TRUST_IS_PARTIAL_CHAIN		0x00010000	/*      65336 */
+#define CERT_TRUST_CTL_IS_NOT_TIME_VALID	0x00020000	/*     131072 */
+#define CERT_TRUST_CTL_IS_NOT_SIGNATURE_VALID	0x00040000	/*     262144 */
+#define CERT_TRUST_CTL_IS_NOT_VALID_FOR_USAGE	0x00080000	/*     524288 */
+
+#define CERT_TRUST_HAS_EXACT_MATCH_ISSUER	0x00000001
+#define CERT_TRUST_HAS_KEY_MATCH_ISSUER 	0x00000002
+#define CERT_TRUST_HAS_NAME_MATCH_ISSUER	0x00000004
+#define CERT_TRUST_IS_SELF_SIGNED		0x00000008
+#define CERT_TRUST_IS_COMPLEX_CHAIN		0x00010000	/*      65336 */
+
+#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 USAGE_MATCH_TYPE_AND				 0
+#define USAGE_MATCH_TYPE_OR				 1
+
+#define CERT_SIMPLE_NAME_STR				 1
+#define CERT_OID_NAME_STR				 2
+#define CERT_X500_NAME_STR				 3
+
+#define CERT_NAME_STR_DISABLE_IE4_UTF8_FLAG	0x00010000
+#define CERT_NAME_STR_ENABLE_T61_UNICODE_FLAG	0x00020000	/*     131072 */
+#define CERT_NAME_STR_ENABLE_UTF8_UNICODE_FLAG	0x00040000
+#define CERT_NAME_STR_REVERSE_FLAG		0x02000000	/*   33554432 */
+#define CERT_NAME_STR_COMMA_FLAG		0x04000000
+#define CERT_NAME_STR_CRLF_FLAG 		0x08000000	/*  134217728 */
+#define CERT_NAME_STR_NO_QUOTING_FLAG		0x10000000	/*  268435456 */
+#define CERT_NAME_STR_NO_PLUS_FLAG		0x20000000	/*  536870912 */
+#define CERT_NAME_STR_SEMICOLON_FLAG		0x40000000	/* 1073741824 */
+
+#define CERT_FIND_ANY					 0
+#define CERT_FIND_CERT_ID			0x00100000	/*    1048576 */
+#define CERT_FIND_CTL_USAGE			0x000A0000	/*     653360 */
+#define CERT_FIND_ENHKEY_USAGE			0x000A0000	/*     653360 */
+#define CERT_FIND_EXISTING			0x000D0000	/*     851968 */
+#define CERT_FIND_HASH				0x00010000	/*      65336 */
+#define CERT_FIND_ISSUER_ATTR			0x00030004	/*     196612 */
+#define CERT_FIND_ISSUER_NAME			0x00020004	/*     131076 */
+#define CERT_FIND_ISSUER_OF			0x000C0000	/*     786432 */
+#define CERT_FIND_KEY_IDENTIFIER		0x000F0000	/*     983040 */
+#define CERT_FIND_KEY_SPEC			0x00090000	/*     589824 */
+#define CERT_FIND_MD5_HASH			0x00040000	/*     262144 */
+#define CERT_FIND_PROPERTY			0x00050000	/*     327680 */
+#define CERT_FIND_PUBLIC_KEY			0x00060000	/*     393216 */
+#define CERT_FIND_SHA1_HASH			0x00010000	/*      65536 */
+#define CERT_FIND_SIGNATURE_HASH		0x000E0000	/*     917504 */
+#define CERT_FIND_SUBJECT_ATTR			0x00030007	/*     196615 */
+#define CERT_FIND_SUBJECT_CERT			0x000B0000	/*     720896 */
+#define CERT_FIND_SUBJECT_NAME			0x00020007	/*     131079 */
+
+#define CERT_FIND_SUBJECT_STR		   __AW_EXTENDED__( CERT_FIND_SUBJECT_STR )
+#define CERT_FIND_SUBJECT_STR_A 		0x00070007	/*     458759 */
+#define CERT_FIND_SUBJECT_STR_W 		0x00080007	/*     524295 */
+
+#define CERT_FIND_ISSUER_STR		   __AW_EXTENDED__( CERT_FIND_ISSUER_STR )
+#define CERT_FIND_ISSUER_STR_A			0x00070004	/*     458756 */
+#define CERT_FIND_ISSUER_STR_W			0x00080004	/*     524292 */
+
+#define CERT_FIND_OR_ENHKEY_USAGE_FLAG		0x00000010	/*         16 */
+#define CERT_FIND_OPTIONAL_ENHKEY_USAGE_FLAG	0x00000001
+#define CERT_FIND_NO_ENHKEY_USAGE_FLAG		0x00000008
+#define CERT_FIND_VALID_ENHKEY_USAGE_FLAG	0x00000020	/*         32 */
+#define CERT_FIND_EXT_ONLY_ENHKEY_USAGE_FLAG	0x00000002
+
+#define \
+ CERT_CASE_INSENSITIVE_IS_RDN_ATTRS_FLAG 	0x00000002
+#define CERT_UNICODE_IS_RDN_ATTRS_FLAG		0x00000001
+
+#define CERT_CHAIN_FIND_BY_ISSUER		0x00000001
+#define \
+ CERT_CHAIN_FIND_BY_ISSUER_COMPARE_KEY_FLAG	0x00000001
+#define \
+ CERT_CHAIN_FIND_BY_ISSUER_COMPLEX_CHAIN_FLAG	0x00000002
+#define \
+ CERT_CHAIN_FIND_BY_ISSUER_CACHE_ONLY_FLAG	0x00008000	/*      32768 */
+#define \
+ CERT_CHAIN_FIND_BY_ISSUER_CACHE_ONLY_URL_FLAG	0x00000004
+#define \
+ CERT_CHAIN_FIND_BY_ISSUER_LOCAL_MACHINE_FLAG	0x00000008
+#define CERT_CHAIN_FIND_BY_ISSUER_NO_KEY_FLAG	0x00004000	/*      16384 */
+
+#define CERT_STORE_PROV_SYSTEM				10
+#define CERT_SYSTEM_STORE_LOCAL_MACHINE 	0x00020000	/*     131072 */
+
+#define szOID_PKIX_KP_SERVER_AUTH		"4235600"
+#define szOID_SERVER_GATED_CRYPTO		"4235658"
+#define szOID_SGC_NETSCAPE			"2.16.840.1.113730.4.1"
+#define szOID_PKIX_KP_CLIENT_AUTH		"1.3.6.1.5.5.7.3.2"
+
+/* dwFlag definitions for CryptGenKey
+ */
+#define CRYPT_EXPORTABLE			0x00000001
+#define CRYPT_USER_PROTECTED			0x00000002
+#define CRYPT_CREATE_SALT			0x00000004
+#define CRYPT_UPDATE_KEY			0x00000008
+#define CRYPT_NO_SALT				0x00000010
+#define CRYPT_PREGEN				0x00000040
+#define CRYPT_RECIPIENT 			0x00000010
+#define CRYPT_INITIATOR 			0x00000040
+#define CRYPT_ONLINE				0x00000080
+#define CRYPT_SF				0x00000100
+#define CRYPT_CREATE_IV 			0x00000200
+#define CRYPT_KEK				0x00000400
+#define CRYPT_DATA_KEY				0x00000800
+#define CRYPT_VOLATILE				0x00001000
+#define CRYPT_SGCKEY				0x00002000
+#define CRYPT_ARCHIVABLE			0x00004000
+
+#define KP_IV					0x00000001
+#define KP_SALT 				0x00000002
+#define KP_PADDING				0x00000003
+#define KP_MODE 				0x00000004
+#define KP_MODE_BITS				0x00000005
+#define KP_PERMISSIONS				0x00000006
+#define KP_ALGID				0x00000007
+#define KP_BLOCKLEN				0x00000008
+#define KP_KEYLEN				0x00000009
+#define KP_SALT_EX				0x0000000A
+#define KP_P					0x0000000B
+#define KP_G					0x0000000C
+#define KP_Q					0x0000000D
+#define KP_X					0x0000000E
+#define KP_Y					0x0000000F
+#define KP_RA					0x00000010
+#define KP_RB					0x00000011
+#define KP_INFO 				0x00000012
+#define KP_EFFECTIVE_KEYLEN			0x00000013
+#define KP_SCHANNEL_ALG 			0x00000014
+#define KP_PUB_PARAMS				0x00000027
+
+#define CRYPT_FLAG_PCT1 			0x00000001
+#define CRYPT_FLAG_SSL2 			0x00000002
+#define CRYPT_FLAG_SSL3 			0x00000004
+#define CRYPT_FLAG_TLS1 			0x00000008
+#define CRYPT_FLAG_IPSEC			0x00000010
+#define CRYPT_FLAG_SIGNING			0x00000020
+
+#define SCHANNEL_MAC_KEY			0x00000000
+#define SCHANNEL_ENC_KEY			0x00000001
+
+#define INTERNATIONAL_USAGE			0x00000001
+
+#if WINVER >= _WIN32_WINNT_WINXP
+/* These are available only on Windows XP, Windows Server 2003, and later
+ */
+#define CMC_ADD_ATTRIBUTES		       ((LPCSTR)(63))
+#define CMC_ADD_EXTENSIONS		       ((LPCSTR)(62))
+#define X509_CERT_PAIR			       ((LPCSTR)(53))
+#define X509_CERTIFICATE_TEMPLATE	       ((LPCSTR)(64))
+#define X509_CROSS_CERT_DIST_POINTS	       ((LPCSTR)(58))
+#define CMC_DATA			       ((LPCSTR)(59))
+#define X509_NAME_CONSTRAINTS		       ((LPCSTR)(55))
+#define X509_POLICY_CONSTRAINTS 	       ((LPCSTR)(57))
+#define X509_POLICY_MAPPINGS		       ((LPCSTR)(56))
+#define CMC_RESPONSE			       ((LPCSTR)(60))
+#define CMC_STATUS			       ((LPCSTR)(61))
+#endif /* WINVER >= _WIN32_WINNT_WINXP */
+
+#define X509_ALGORITHM_IDENTIFIER	       ((LPCSTR)(74))
+#define X509_ALTERNATE_NAME		       ((LPCSTR)(12))
+
+/* FIXME: need #define X509_ANY_STRING */
+#ifdef MINGW_TENTATIVE_ASSUMPTIONS
+/* https://msdn.microsoft.com/en-us/library/aa378145.aspx suggests
+ * that this may be an alias for...
+ */
+#define X509_ANY_STRING			       X509_NAME_VALUE
+#endif
+
+#define PKCS_ATTRIBUTE			       ((LPCSTR)(22))
+#define X509_AUTHORITY_INFO_ACCESS	       ((LPCSTR)(32))
+#define X509_AUTHORITY_KEY_ID		       ((LPCSTR) (9))
+#define X509_AUTHORITY_KEY_ID2		       ((LPCSTR)(31))
+
+#define szOID_BASIC_CONSTRAINTS 		 "2.5.29.10"
+#define X509_BASIC_CONSTRAINTS		       ((LPCSTR) (13))
+#define X509_BASIC_CONSTRAINTS2 	       ((LPCSTR) (15))
+#define X509_BIOMETRIC_EXT		       ((LPCSTR) (71))
+#define X509_BITS			       ((LPCSTR) (26))
+#define X509_CERT			       ((LPCSTR)  (1))
+#define X509_CERT_CRL_TO_BE_SIGNED	       ((LPCSTR)  (3))
+#define X509_CERT_POLICIES		       ((LPCSTR) (16))
+#define X509_CERT_REQUEST_TO_BE_SIGNED	       ((LPCSTR)  (4))
+#define X509_CERT_TO_BE_SIGNED		       ((LPCSTR)  (2))
+#define X509_CHOICE_OF_TIME		       ((LPCSTR) (30))
+#define PKCS_CONTENT_INFO		       ((LPCSTR) (33))
+#define PKCS_CONTENT_INFO_SEQUENCE_OF_ANY      ((LPCSTR) (23))
+#define X509_CRL_DIST_POINTS		       ((LPCSTR) (35))
+
+/* FIXME: need #define X509_CRL_REASON_CODE */
+#ifdef MINGW_TENTATIVE_ASSUMPTIONS
+/* https://msdn.microsoft.com/en-us/library/aa378145.aspx suggests
+ * that this may be an alias for...
+ */
+#define X509_CRL_REASON_CODE		       X509_ENUMERATED
+#endif
+
+#define RSA_CSP_PUBLICKEYBLOB		       ((LPCSTR) (19))
+#define PKCS_CTL			       ((LPCSTR) (37))
+#define X509_DSS_PARAMETERS		       ((LPCSTR) (39))
+
+/* FIXME: need #define X509_DSS_PUBLICKEY */
+#ifdef MINGW_TENTATIVE_ASSUMPTIONS
+/* https://msdn.microsoft.com/en-us/library/aa378145.aspx suggests
+ * that this may be an alias for...
+ */
+#define X509_DSS_PUBLICKEY		       X509_MULTI_BYTE_UINT
+#endif
+
+#define X509_DSS_SIGNATURE		       ((LPCSTR) (40))
+#define X509_ECC_SIGNATURE		       ((LPCSTR) (47))
+#define X509_ENHANCED_KEY_USAGE 	       ((LPCSTR) (36))
+#define X509_ENUMERATED 		       ((LPCSTR) (29))
+#define X509_EXTENSIONS 		       ((LPCSTR)  (5))
+#define X509_INTEGER			       ((LPCSTR) (27))
+#define X509_ISSUING_DIST_POINT 	       ((LPCSTR) (54))
+#define X509_KEY_ATTRIBUTES		       ((LPCSTR) (10))
+#define X509_KEY_USAGE			       ((LPCSTR) (14))
+#define X509_KEY_USAGE_RESTRICTION	       ((LPCSTR) (11))
+#define X509_KEYGEN_REQUEST_TO_BE_SIGNED       ((LPCSTR) (21))
+#define X509_LOGOTYPE_EXT		       ((LPCSTR) (70))
+#define X509_MULTI_BYTE_INTEGER 	       ((LPCSTR) (28))
+#define X509_MULTI_BYTE_UINT		       ((LPCSTR) (38))
+#define X509_NAME			       ((LPCSTR)  (7))
+#define X509_NAME_VALUE 		       ((LPCSTR)  (6))
+#define X509_OBJECT_IDENTIFIER		       ((LPCSTR) (73))
+#define X509_OCTET_STRING		       ((LPCSTR) (25))
+#define X509_PUBLIC_KEY_INFO		       ((LPCSTR)  (8))
+#define PKCS_RC2_CBC_PARAMETERS 	       ((LPCSTR) (41))
+#define CNG_RSA_PUBLIC_KEY_BLOB 	       ((LPCSTR) (72))
+#define PKCS_RSA_SSA_PSS_PARAMETERS	       ((LPCSTR) (75))
+#define PKCS_RSAES_OAEP_PARAMETERS	       ((LPCSTR) (76))
+#define ECC_CMS_SHARED_INFO		       ((LPCSTR) (77))
+#define X509_SEQUENCE_OF_ANY		       ((LPCSTR) (34))
+#define PKCS7_SIGNER_INFO		       ((LPCSTR)(500))
+#define CMS_SIGNER_INFO 		       ((LPCSTR)(501))
+#define PKCS_SMIME_CAPABILITIES 	       ((LPCSTR) (42))
+#define PKCS_TIME_REQUEST		       ((LPCSTR) (18))
+
+/* FIXME: need #define X509_UNICODE_ANY_STRING */
+#ifdef MINGW_TENTATIVE_ASSUMPTIONS
+/* https://msdn.microsoft.com/en-us/library/aa378145.aspx suggests
+ * that this may be an alias for...
+ */
+#define X509_UNICODE_ANY_STRING 	       X509_UNICODE_NAME_VALUE
+#endif
+
+#define X509_UNICODE_NAME		       ((LPCSTR) (20))
+#define X509_UNICODE_NAME_VALUE 	       ((LPCSTR) (24))
+#define PKCS_UTC_TIME			       ((LPCSTR) (17))
+#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))
+
+enum
+{ CRL_REASON_UNSPECIFIED=0,
+  CRL_REASON_KEY_COMPROMISE=1,
+  CRL_REASON_CA_COMPROMISE=2,
+  CRL_REASON_AFFILIATION_CHANGED=3,
+  CRL_REASON_SUPERSEDED=4,
+  CRL_REASON_CESSATION_OF_OPERATION=5,
+  CRL_REASON_CERTIFICATE_HOLD=6,
+  CRL_REASON_REMOVE_FROM_CRL=7
+};
+
+/* FIXME: need #define CRYPT_DECODE_NOCOPY_FLAG */
+
+#define CRYPT_ENCODE_ALLOC_FLAG 				0x00008000
+#define CRYPT_UNICODE_NAME_ENCODE_DISABLE_CHECK_TYPE_FLAG	0x40000000
+#define CRYPT_UNICODE_NAME_ENCODE_ENABLE_T61_UNICODE_FLAG	0x80000000
+#define CRYPT_UNICODE_NAME_ENCODE_ENABLE_UTF8_UNICODE_FLAG	0x20000000
+#define CRYPT_UNICODE_NAME_ENCODE_FORCE_UTF8_UNICODE_FLAG	0x10000000
+
+/* Object ID codes from https://support.microsoft.com/en-gb/kb/287547
+ * and/or from https://msdn.microsoft.com/en-us/library/aa378145.aspx
+ */
+#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_MD2				"1.2.840.113549.1.1.2"
+#define szOID_RSA_MD4				"1.2.840.113549.1.1.3"
+#define szOID_RSA_MD5				"1.2.840.113549.2.5"
+#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.5"
+#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_SMIMECapabilities		"1.2.840.113549.1.9.15"
+#define szOID_RSA_preferSignedData		"1.2.840.113549.1.9.15.1"
+#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_DATA STRUCTURE			"1.2.840.10040.4.3"
+#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_PKIX_NO_SIGNATURE 		"1.3.6.1.5.5.7.6.2"
+
+#define szOID_COMMON_NAME			"2.5.4.3"
+#define szOID_COUNTRY_NAME			"2.5.4.6"
+#define szOID_DEVICE_SERIAL_NUMBER		"2.5.4.5"
+#define szOID_DOMAIN_COMPONENT			"0.9.2342.19200300.100.1.25"
+#define szOID_GIVEN_NAME			"2.5.4.42"
+#define szOID_INITIALS				"2.5.4.43"
+#define szOID_LOCALITY_NAME			"2.5.4.7"
+#define szOID_ORGANIZATION_NAME 		"2.5.4.10"
+#define szOID_ORGANIZATIONAL_UNIT_NAME		"2.5.4.11"
+#define szOID_STATE_OR_PROVINCE_NAME		"2.5.4.8"
+#define szOID_STREET_ADDRESS			"2.5.4.9"
+#define szOID_SUR_NAME				"2.5.4.4"
+#define szOID_TITLE				"2.5.4.12"
+#define szOID_BASIC_CONSTRAINTS2	 	"2.5.29.19"
+#define szOID_APPLICATION_CERT_POLICIES 	"1.3.6.1.4.1.311.21.10"
+#define szOID_APPLICATION_POLICY_CONSTRAINTS	"1.3.6.1.4.1.311.21.12"
+#define szOID_APPLICATION_POLICY_MAPPINGS	"1.3.6.1.4.1.311.21.11"
+#define szOID_AUTHORITY_INFO_ACCESS		"1.3.6.1.5.5.7.1.1"
+#define szOID_AUTHORITY_KEY_IDENTIFIER		"2.5.29.1"
+#define szOID_AUTHORITY_KEY_IDENTIFIER2 	"2.5.29.35"
+
+#define szOID_BIOMETRIC_EXT			"1.3.6.1.5.5.7.1.2"
+#define szOID_CERT_EXTENSIONS			"1.3.6.1.4.1.311.2.1.14"
+#define szOID_CERT_POLICIES			"2.5.29.32"
+
+#if WINVER >= _WIN32_WINNT_WINXP
+/* These are available only on Windows XP, Windows Server 2003, and later
+ */
+#define szOID_CERTIFICATE_TEMPLATE		"1.3.6.1.4.1.311.21.7"
+#define szOID_CRL_NUMBER			"2.5.29.20"
+#define szOID_CROSS_CERT_DIST_POINTS		"1.3.6.1.4.1.311.10.9.1"
+#define szOID_DELTA_CRL_INDICATOR		"2.5.29.27"
+#define szOID_ENROLLMENT_NAME_VALUE_PAIR	"1.3.6.1.4.1.311.13.2.1"
+#define szOID_FRESHEST_CRL			"2.5.29.46"
+#define szOID_ISSUING_DIST_POINT		"2.5.29.28"
+#define szOID_NAME_CONSTRAINTS			"2.5.29.30"
+#endif /* WINVER >= _WIN32_WINNT_WINXP */
+
+#define szOID_CRL_DIST_POINTS			"2.5.29.31"
+#define szOID_CRL_REASON_CODE			"2.5.29.21"
+#define szOID_CRL_VIRTUAL_BASE			"1.3.6.1.4.1.311.21.3"
+#define szOID_ECC_PUBLIC_KEY			"1.2.840.10045.2.1"
+#define szOID_ECDSA_SPECIFIED			"1.2.840.10045.4.3"
+#define szOID_ENHANCED_KEY_USAGE		"2.5.29.37"
+#define szOID_ISSUER_ALT_NAME			"2.5.29.8"
+#define szOID_ISSUER_ALT_NAME2			"2.5.29.18"
+#define szOID_KEY_ATTRIBUTES			"2.5.29.2"
+#define szOID_KEY_USAGE 			"2.5.29.4"
+#define szOID_KEY_USAGE_RESTRICTION		"2.5.29.4"
+#define szOID_LOGOTYPE_EXT			"1.3.6.1.5.5.7.1.12"
+#define szOID_NEXT_UPDATE_LOCATION		"1.3.6.1.4.1.311.10.2"
+#define szOID_POLICY_CONSTRAINTS		"2.5.29.36"
+#define szOID_POLICY_MAPPINGS			"2.5.29.33"
+#define szOID_RSA_SSA_PSS			"1.2.840.113549.1.1.10"
+#define szOID_RSAES_OAEP			"1.2.840.113549.1.1.7"
+#define szOID_SUBJECT_ALT_NAME			"2.5.29.7"
+#define szOID_SUBJECT_ALT_NAME2 		"2.5.29.17"
+#define szOID_SUBJECT_KEY_IDENTIFIER		"2.5.29.14"
+
+typedef struct _CERT_BASIC_CONSTRAINTS2_INFO
+{ BOOL				 fCA;
+  BOOL				 fPathLenConstraint;
+  DWORD 			 dwPathLenConstraint;
+} CERT_BASIC_CONSTRAINTS2_INFO, *PCERT_BASIC_CONSTRAINTS2_INFO;
+
+typedef VOID (WINAPI *PFN_CRYPT_FREE)( LPVOID );
+typedef LPVOID (WINAPI *PFN_CRYPT_ALLOC)( size_t );
+
+typedef struct _CRYPT_ENCODE_PARA
+{ DWORD 			 cbSize;
+  PFN_CRYPT_ALLOC		 pfnAlloc;
+  PFN_CRYPT_FREE		 pfnFree;
+} CRYPT_ENCODE_PARA, *PCRYPT_ENCODE_PARA;
+
+/* FIXME: definition missing. */
+typedef struct _CRYPT_DECODE_PARA *PCRYPT_DECODE_PARA;
+
+typedef UINT ALG_ID;
+typedef struct _VTableProvStruc
+{ FARPROC			 FuncVerifyImage;
+} VTableProvStruc, *PVTableProvStruc;
+
+typedef ULONG HCRYPTPROV;
+typedef ULONG HCRYPTKEY;
+typedef ULONG HCRYPTHASH;
+typedef PVOID HCERTSTORE;
+typedef PVOID HCRYPTMSG;
+typedef PVOID HCERTCHAINENGINE;
+
+typedef struct _CRYPTOAPI_BLOB
+{ DWORD 			 cbData;
+  BYTE				*pbData;
+};
+typedef struct _CRYPTOAPI_BLOB CRYPT_INTEGER_BLOB, *PCRYPT_INTEGER_BLOB;
+typedef struct _CRYPTOAPI_BLOB CRYPT_UINT_BLOB, *PCRYPT_UINT_BLOB;
+typedef struct _CRYPTOAPI_BLOB CRYPT_OBJID_BLOB, *PCRYPT_OBJID_BLOB;
+typedef struct _CRYPTOAPI_BLOB CERT_NAME_BLOB, *PCERT_NAME_BLOB;
+typedef struct _CRYPTOAPI_BLOB CERT_RDN_VALUE_BLOB, *PCERT_RDN_VALUE_BLOB;
+typedef struct _CRYPTOAPI_BLOB CERT_BLOB, *PCERT_BLOB;
+typedef struct _CRYPTOAPI_BLOB CRL_BLOB, *PCRL_BLOB;
+typedef struct _CRYPTOAPI_BLOB DATA_BLOB, *PDATA_BLOB;
+typedef struct _CRYPTOAPI_BLOB CRYPT_DATA_BLOB, *PCRYPT_DATA_BLOB;
+typedef struct _CRYPTOAPI_BLOB CRYPT_HASH_BLOB, *PCRYPT_HASH_BLOB;
+typedef struct _CRYPTOAPI_BLOB CRYPT_DIGEST_BLOB, *PCRYPT_DIGEST_BLOB;
+typedef struct _CRYPTOAPI_BLOB CRYPT_DER_BLOB, *PCRYPT_DER_BLOB;
+typedef struct _CRYPTOAPI_BLOB CRYPT_ATTR_BLOB, *PCRYPT_ATTR_BLOB;
+
+typedef struct _SSL_EXTRA_CERT_CHAIN_POLICY_PARA
+{ /* not described in SDK; has the same layout as HTTPSPolicyCallbackData
+   */
+  DWORD 			 cbStruct;
+  DWORD 			 dwAuthType;
+  DWORD 			 fdwChecks;
+  LPWSTR			 pwszServerName;
+};
+typedef struct _SSL_EXTRA_CERT_CHAIN_POLICY_PARA SSL_EXTRA_CERT_CHAIN_POLICY_PARA;
+typedef struct _SSL_EXTRA_CERT_CHAIN_POLICY_PARA *PSSL_EXTRA_CERT_CHAIN_POLICY_PARA;
+typedef struct _SSL_EXTRA_CERT_CHAIN_POLICY_PARA HTTPSPolicyCallbackData;
+typedef struct _SSL_EXTRA_CERT_CHAIN_POLICY_PARA *PHTTPSPolicyCallbackData;
+
+/* #if _WIN32_WINNT >= _WIN32_WINNT_WIN2K */
+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;
+/* #endif _WIN32_WINNT >= _WIN32_WINNT_WIN2K */
+
+typedef struct _CRYPT_ALGORITHM_IDENTIFIER
+{ LPSTR 			 pszObjId;
+  CRYPT_OBJID_BLOB 		 Parameters;
+} CRYPT_ALGORITHM_IDENTIFIER, *PCRYPT_ALGORITHM_IDENTIFIER;
+
+typedef struct _CRYPT_BIT_BLOB
+{ DWORD 			 cbData;
+  BYTE				*pbData;
+  DWORD 			 cUnusedBits;
+} CRYPT_BIT_BLOB, *PCRYPT_BIT_BLOB;
+
+typedef struct _CERT_PUBLIC_KEY_INFO
+{ CRYPT_ALGORITHM_IDENTIFIER	 Algorithm;
+  CRYPT_BIT_BLOB		 PublicKey;
+} CERT_PUBLIC_KEY_INFO, *PCERT_PUBLIC_KEY_INFO;
+
+typedef struct _CERT_EXTENSION
+{ LPSTR 			 pszObjId;
+  BOOL				 fCritical;
+  CRYPT_OBJID_BLOB		 Value;
+} CERT_EXTENSION, *PCERT_EXTENSION;
+
+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;
+
+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 _CTL_USAGE
+{ DWORD 			 cUsageIdentifier;
+  LPSTR 			*rgpszUsageIdentifier;
+} CTL_USAGE, *PCTRL_USAGE, CERT_ENHKEY_USAGE, *PCERT_ENHKEY_USAGE;
+
+typedef struct _CERT_USAGE_MATCH
+{ DWORD 			 dwType;
+  CERT_ENHKEY_USAGE		 Usage;
+} CERT_USAGE_MATCH, *PCERT_USAGE_MATCH;
+
+/* #if _WIN32_WINNT >= _WIN32_WINNT_WIN2K */
+typedef struct _CERT_CHAIN_PARA
+{ DWORD 			 cbSize;
+  CERT_USAGE_MATCH		 RequestedUsage;
+
+# if CERT_CHAIN_PARA_HAS_EXTRA_FIELDS
+
+  CERT_USAGE_MATCH		 RequestedIssuancePolicy;
+  DWORD 			 dwUrlRetrievalTimeout;
+  BOOL				 fCheckRevocationFreshnessTime;
+  DWORD 			 dwRevocationFreshnessTime;
+# endif
+
+} CERT_CHAIN_PARA, *PCERT_CHAIN_PARA;
+
+typedef BOOL (WINAPI *PFN_CERT_CHAIN_FIND_BY_ISSUER_CALLBACK)( PCCERT_CONTEXT, void * );
+
+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;
+  DWORD 					*pdwIssuerChainIndex;
+  DWORD 					*pdwIssuerElementIndex;
+} CERT_CHAIN_FIND_BY_ISSUER_PARA, *PCERT_CHAIN_FIND_BY_ISSUER_PARA;
+/* #endif _WIN32_WINNT >= _WIN32_WINNT_WIN2K */
+
+typedef struct _CERT_TRUST_STATUS
+{ DWORD 			 dwErrorStatus;
+  DWORD 			 dwInfoStatus;
+} CERT_TRUST_STATUS, *PCERT_TRUST_STATUS;
+
+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;
+
+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 _CERT_REVOCATION_CRL_INFO
+{ DWORD 			 cbSize;
+  PCCRL_CONTEXT 		 pBaseCRLContext;
+  PCCRL_CONTEXT 		 pDeltaCRLContext;
+  PCRL_ENTRY			 pCrlEntry;
+  BOOL fDeltaCrlEntry;
+} CERT_REVOCATION_CRL_INFO, *PCERT_REVOCATION_CRL_INFO;
+
+typedef struct _CERT_REVOCATION_INFO
+{ DWORD 			 cbSize;
+  DWORD 			 dwRevocationResult;
+  LPCSTR			 pszRevocationOid;
+  LPVOID			 pvOidSpecificInfo;
+  BOOL				 fHasFreshnessTime;
+  DWORD 			 dwFreshnessTime;
+  PCERT_REVOCATION_CRL_INFO	 pCrlInfo;
+} CERT_REVOCATION_INFO, *PCERT_REVOCATION_INFO;
+
+/* #if _WIN32_WINNT >= _WIN32_WINNT_WIN2K */
+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;
+} CERT_CHAIN_ELEMENT, *PCERT_CHAIN_ELEMENT;
+/* #endif _WIN32_WINNT >= _WIN32_WINNT_WIN2K */
+
+typedef struct _CRYPT_ATTRIBUTE
+{ LPSTR 			 pszObjId;
+  DWORD 			 cValue;
+  PCRYPT_ATTR_BLOB		 rgValue;
+} CRYPT_ATTRIBUTE, *PCRYPT_ATTRIBUTE;
+
+typedef struct _CRYPT_ATTRIBUTE_TYPE_VALUE
+{ LPSTR 			 pszObjId;
+  CRYPT_OBJID_BLOB		 rgValue;
+} CRYPT_ATTRIBUTE_TYPE_VALUE, *PCRYPT_ATTRIBUTE_TYPE_VALUE;
+
+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;
+
+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;
+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_SIMPLE_CHAIN
+{ DWORD 			 cbSize;
+  CERT_TRUST_STATUS		 TrustStatus;
+  DWORD 			 cElement;
+  PCERT_CHAIN_ELEMENT		*rgpElement;
+  PCERT_TRUST_LIST_INFO 	 pTrustListInfo;
+  BOOL				 fHasRevocationFreshnessTime;
+  DWORD 			 dwRevocationFreshnessTime;
+} CERT_SIMPLE_CHAIN, *PCERT_SIMPLE_CHAIN;
+
+/* #if _WIN32_WINNT >= _WIN32_WINNT_WIN2K */
+typedef const struct _CERT_CHAIN_CONTEXT* PCCERT_CHAIN_CONTEXT;
+typedef struct _CERT_CHAIN_CONTEXT
+{ DWORD 			 cbSize;
+  CERT_TRUST_STATUS		 TrustStatus;
+  DWORD 			 cChain;
+  PCERT_SIMPLE_CHAIN		*rgpChain;
+  DWORD 			 cLowerQualityChainContext;
+  PCCERT_CHAIN_CONTEXT		*rgpLowerQualityChainContext;
+  BOOL				 fHasRevocationFreshnessTime;
+  DWORD 			 dwRevocationFreshnessTime;
+} CERT_CHAIN_CONTEXT, *PCERT_CHAIN_CONTEXT;
+/* #endif _WIN32_WINNT >= _WIN32_WINNT_WIN2K */
+
+typedef struct _PROV_ENUMALGS
+{ ALG_ID			 aiAlgid;
+  DWORD 			 dwBitLen;
+  DWORD 			 dwNameLen;
+  CHAR				 szName[20];
+} PROV_ENUMALGS;
+
+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 _HMAC_Info
+{ ALG_ID			 HashAlgid;
+  BYTE				*pbInnerString;
+  DWORD 			 cbInnerString;
+  BYTE				*pbOuterString;
+  DWORD 			 cbOuterString;
+} HMAC_INFO, *PHMAC_INFO;
+
+#if WINVER >= _WIN32_WINNT_WINXP
+/* Available only on Windows-XP, Windows Server 2003, and later.
+ */
+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 _CMC_ADD_EXTENSIONS_INFO
+{ DWORD 			 dwCmcDataReference;
+  DWORD 			 cCertReference;
+  DWORD 			*rgdwCertReference;
+  DWORD 			 cExtension;
+  PCERT_EXTENSION		 rgExtension;
+} CMC_ADD_EXTENSIONS_INFO, *PCMC_ADD_EXTENSIONS_INFO;
+
+#endif /* WINVER >= _WIN32_WINNT_WINXP */
+
+#if WINVER >= _WIN32_WINDOWS_98
+#ifdef MINGW_TENTATIVE_ASSUMPTIONS
+/* FIXME: CERT_ALT_NAME_ENTRY needs definitions for PCERT_OTHER_NAME and
+ * (allegedly) CERT_DATA_BLOB (for the the x400Address field, which according to
+ * https://msdn.microsoft.com/en-us/library/windows/desktop/aa377173%28v=vs.85%29.aspx
+ * is NOT a member of this structure; similarly, neither is pEdiPartyName)
+ *
+ * The CERT_OTHER_NAME structure, (to which a PCERT_OTHER_NAME would point), is
+ * not documented on MSDN, (or on any other Microsoft reference site).  There is,
+ * however, a tenuous suggestion within the CERT_ALT_NAME_ENTRY documentation, (at
+ * the aforementioned URL), that it comprises an object identifier (OID), and a
+ * BLOB specifying the name, (closely resembling a CRYPT_ATTRIBUTE_TYPE_VALUE);
+ * that this tenuous resemblance may suffice as an actual representation of a
+ * CERT_OTHER_NAME structure is further hinted at, in the form of a SEE ALSO
+ * reference to CRYPT_ATTRIBUTE_TYPE_VALUE, which appears to have no other
+ * relevance in the CERT_ALT_NAME_ENTRY context; hence, we may infer...
+ */
+typedef struct _CRYPT_ATTRIBUTE_TYPE_VALUE   CERT_OTHER_NAME;
+typedef struct _CRYPT_ATTRIBUTE_TYPE_VALUE  *PCERT_OTHER_NAME;
+
+typedef struct _CERT_ALT_NAME_ENTRY
+{ DWORD 			 dwAltNameChoice;
+  union
+  { PCERT_OTHER_NAME		 pOtherName;
+    LPWSTR			 pwszRfc822Name;
+    LPWSTR			 pwszDNSName;
+    /* CERT_DATA_BLOB		 x400Address;	*/ /* never implemented? */
+    CERT_NAME_BLOB		 DirectoryName;
+    /* LPWSTR			 pEdiPartyName;	*/ /* never implemented? */
+    LPWSTR			 pwszURL;
+    CRYPT_DATA_BLOB		 IPAddress;
+    LPSTR			 pszRegisteredID;
+  };
+} CERT_ALT_NAME_ENTRY, *PCERT_ALT_NAME_ENTRY;
+
+typedef struct _CERT_ALT_NAME_INFO
+/* FIXME: this needs CERT_ALT_NAME_ENTRY above, which lacks prereqs */
+{ DWORD 			 cAltEntry;
+  PCERT_ALT_NAME_ENTRY		 rgAltEntry;
+} CERT_ALT_NAME_INFO, *PCERT_ALT_NAME_INFO;
+
+#endif /* MINGW_TENTATIVE_ASSUMPTIONS */
+
+typedef struct _CERT_NAME_VALUE
+{ DWORD 			 dwValueType;
+  CERT_RDN_VALUE_BLOB		 Value;
+} CERT_NAME_VALUE, *PCERT_NAME_VALUE;
+
+typedef struct _CERT_POLICY_QUALIFIER_INFO
+{ LPSTR 			 pszPolicyQualifierId;
+  CRYPT_OBJID_BLOB		 Qualifier;
+} CERT_POLICY_QUALIFIER_INFO, *PCERT_POLICY_QUALIFIER_INFO;
+
+typedef struct _CERT_POLICY_CONSTRAINTS_INFO
+{ BOOL				 fRequireExplicitPolicy;
+  DWORD 			 dwRequireExplicitPolicySkipCerts;
+  BOOL				 fInhibitPolicyMapping;
+  DWORD 			 dwInhibitPolicyMappingSkipCerts;
+} CERT_POLICY_CONSTRAINTS_INFO, *PCERT_POLICY_CONSTRAINTS_INFO;
+
+#endif /* WINVER >= _WIN32_WINDOWS_98 */
+
+#if WINVER >= _WIN32_WINNT_WINXP
+/* Available only on Windows-XP, Windows Server 2003, and later.
+ */
+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;
+
+#endif /* WINVER >= _WIN32_WINNT_WINXP */
+
+/* Some Crypto Key Provider Information structures.
+ */
+typedef struct _CRYPT_KEY_PROV_PARAM
+{ /* From http://msdn.microsoft.com/en-us/library/aa922935.aspx
+   */
+  DWORD 			 dwParam;
+  BYTE				*pbData;
+  DWORD 			 cbData;
+  DWORD 			 dwFlags;
+} CRYPT_KEY_PROV_PARAM, *PCRYPT_KEY_PROV_PARAM;
+
+typedef struct _CRYPT_KEY_PROV_INFO
+{ /* From http://msdn.microsoft.com/en-us/library/aa381420(VS.85).aspx
+   */
+  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	0x00000001
+#define CERT_SET_KEY_CONTEXT_PROP_ID		0x00000001
+
+#define CRYPT_KEYID_DELETE_FLAG 		0x00000010
+#define CRYPT_KEYID_SET_NEW_FLAG		0x00002000
+
+/* Certificate crl ctl IDs.
+ */
+#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
+
+/* Certificate name type.
+ */
+#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
+
+/* Certificate/CRL, encoded, context or element disposition values.
+ */
+#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 CRYPT_ACQUIRE_CACHE_FLAG		0x00000001
+#define CRYPT_ACQUIRE_USE_PROV_INFO_FLAG	0x00000002
+#define CRYPT_ACQUIRE_COMPARE_KEY_FLAG		0x00000004
+#define CRYPT_ACQUIRE_SILENT_FLAG		0x00000040
+
+#define RSA1024BIT_KEY				0x04000000
+
+/* dwFlags definitions for CryptDeriveKey
+ */
+#define CRYPT_SERVER				0x00000400
+
+#define KEY_LENGTH_MASK 			0xFFFF0000
+
+/* dwFlag definitions for CryptExportKey
+ */
+#define CRYPT_Y_ONLY				0x00000001
+#define CRYPT_SSL2_FALLBACK			0x00000002
+#define CRYPT_DESTROYKEY			0x00000004
+
+/* Used with RSA encryptions/decryptions, CryptExportKey, CryptImportKey,
+ * CryptEncrypt, and CryptDecrypt
+ */
+#define CRYPT_OAEP				0x00000040
+
+#define CRYPT_BLOB_VER3 			0x00000080  /* export version 3 of a blob type */
+#define CRYPT_IPSEC_HMAC_KEY			0x00000100  /* CryptImportKey only */
+
+/* dwFlags definitions for CryptDecrypt; see also CRYPT_OAEP, above.
+ * Note, the following flag is not supported for CryptEncrypt
+ */
+#define CRYPT_DECRYPT_RSA_NO_PADDING_CHECK	0x00000020
+
+/* dwFlags definitions for CryptCreateHash
+ */
+#define CRYPT_SECRETDIGEST			0x00000001
+
+/* dwFlags definitions for CryptHashData
+ */
+#define CRYPT_OWF_REPL_LM_HASH			0x00000001  /* this is only for the OWF replacement CSP */
+
+/* dwFlags definitions for CryptHashSessionKey
+ */
+#define CRYPT_LITTLE_ENDIAN			0x00000001
+
+/* dwFlags definitions for CryptSignHash and CryptVerifySignature
+ */
+#define CRYPT_NOHASHOID 			0x00000001
+#define CRYPT_TYPE2_FORMAT			0x00000002
+#define CRYPT_X931_FORMAT			0x00000004
+
+/* dwFlag definitions for CryptSetProviderEx and CryptGetDefaultProvider
+ */
+#define CRYPT_MACHINE_DEFAULT			0x00000001
+#define CRYPT_USER_DEFAULT			0x00000002
+#define CRYPT_DELETE_DEFAULT			0x00000004
+
+/* algorithm.
+ */
+#define CALG_SSL3_SHAMD5        (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_SSL3SHAMD5)
+
+/* End of crypto key provider information structures.
+ */
+
+BOOL WINAPI CertCloseStore( HCERTSTORE, DWORD );
+BOOL WINAPI CertGetCertificateChain( HCERTCHAINENGINE, PCCERT_CONTEXT, LPFILETIME, HCERTSTORE, PCERT_CHAIN_PARA, DWORD, LPVOID, PCCERT_CHAIN_CONTEXT * );
+BOOL WINAPI CertVerifyCertificateChainPolicy( LPCSTR, PCCERT_CHAIN_CONTEXT, PCERT_CHAIN_POLICY_PARA, PCERT_CHAIN_POLICY_STATUS );
+void WINAPI CertFreeCertificateChain( PCCERT_CHAIN_CONTEXT );
+
+#define CertNameToStr  __AW_SUFFIXED__( CertNameToStr )
+DWORD WINAPI CertNameToStrA( DWORD, PCERT_NAME_BLOB, DWORD, LPSTR, DWORD );
+DWORD WINAPI CertNameToStrW( DWORD, PCERT_NAME_BLOB, DWORD, LPWSTR, DWORD );
+
+#define CertOpenSystemStore  __AW_SUFFIXED__( CertOpenSystemStore )
+HCERTSTORE WINAPI CertOpenSystemStoreA( HCRYPTPROV, LPCSTR );
+HCERTSTORE WINAPI CertOpenSystemStoreW( HCRYPTPROV, LPCWSTR );
+
+HCERTSTORE WINAPI CertOpenStore( LPCSTR, DWORD, HCRYPTPROV, DWORD, const void * );
+PCCERT_CONTEXT WINAPI CertFindCertificateInStore( HCERTSTORE, DWORD, DWORD, DWORD, const void *, PCCERT_CONTEXT );
+BOOL WINAPI CertFreeCertificateContext( PCCERT_CONTEXT );
+PCCERT_CONTEXT WINAPI CertGetIssuerCertificateFromStore( HCERTSTORE, PCCERT_CONTEXT, PCCERT_CONTEXT, DWORD * );
+PCCERT_CHAIN_CONTEXT WINAPI CertFindChainInStore( HCERTSTORE, DWORD, DWORD, DWORD, const void *, PCCERT_CHAIN_CONTEXT );
+
+HCERTSTORE WINAPI CertDuplicateStore( HCERTSTORE );
+PCCERT_CONTEXT WINAPI CertEnumCertificatesInStore( HCERTSTORE, PCCERT_CONTEXT );
+PCCERT_CONTEXT WINAPI CertDuplicateCertificateContext( PCCERT_CONTEXT );
+
+#define CertGetNameString  __AW_SUFFIXED__( CertGetNameString )
+DWORD WINAPI CertGetNameStringA( PCCERT_CONTEXT, DWORD, DWORD, void *, LPSTR, DWORD );
+DWORD WINAPI CertGetNameStringW( PCCERT_CONTEXT, DWORD, DWORD, void *, LPWSTR, DWORD );
+
+BOOL WINAPI PFXIsPFXBlob( CRYPT_DATA_BLOB * );
+PCERT_EXTENSION WINAPI CertFindExtension( LPCSTR, DWORD, CERT_EXTENSION * );
+BOOL WINAPI CryptDecodeObject( DWORD, LPCSTR, const BYTE *, DWORD, DWORD, void *, DWORD * );
+BOOL WINAPI CryptDecodeObjectEx( DWORD, LPCSTR, const BYTE *, DWORD, DWORD, PCRYPT_DECODE_PARA, void *, DWORD * );
+BOOL WINAPI CryptEncodeObject( DWORD, LPCSTR, const void *, BYTE *, DWORD * );
+BOOL WINAPI CryptEncodeObjectEx( DWORD, LPCSTR, const void *, DWORD, PCRYPT_ENCODE_PARA, void *, DWORD * );
+BOOL WINAPI CertAddCertificateContextToStore( HCERTSTORE, PCCERT_CONTEXT, DWORD, PCCERT_CONTEXT * );
+BOOL WINAPI CertCompareCertificate( DWORD, PCERT_INFO, PCERT_INFO );
+BOOL WINAPI PFXVerifyPassword( CRYPT_DATA_BLOB *, LPCWSTR, DWORD );
+HCERTSTORE WINAPI PFXImportCertStore( CRYPT_DATA_BLOB *, LPCWSTR, DWORD );
+BOOL WINAPI CertDeleteCertificateFromStore( PCCERT_CONTEXT );
+
+#define CryptAcquireContext  __AW_SUFFIXED__( CryptAcquireContext )
+WINADVAPI BOOL WINAPI CryptAcquireContextA( HCRYPTPROV *, LPCSTR, LPCSTR, DWORD, DWORD );
+WINADVAPI BOOL WINAPI CryptAcquireContextW( HCRYPTPROV *, LPCWSTR, LPCWSTR, DWORD, DWORD );
+
+WINADVAPI BOOL WINAPI CryptContextAddRef( HCRYPTPROV, DWORD *, DWORD );
+WINADVAPI BOOL WINAPI CryptReleaseContext( HCRYPTPROV, DWORD );
+WINADVAPI BOOL WINAPI CryptGenKey( HCRYPTPROV, ALG_ID, DWORD, HCRYPTKEY * );
+WINADVAPI BOOL WINAPI CryptDeriveKey( HCRYPTPROV, ALG_ID, HCRYPTHASH, DWORD, HCRYPTKEY * );
+WINADVAPI BOOL WINAPI CryptDestroyKey( HCRYPTKEY );
+
+#if WINVER >= _WIN32_WINNT_WIN2K
+WINADVAPI BOOL WINAPI CryptDuplicateHash( HCRYPTHASH, DWORD *, DWORD, HCRYPTHASH * );
+WINADVAPI BOOL WINAPI CryptDuplicateKey( HCRYPTKEY, DWORD *, DWORD, HCRYPTKEY * );
+#endif
+
+WINADVAPI BOOL WINAPI CryptSetKeyParam( HCRYPTKEY, DWORD, PBYTE, DWORD );
+WINADVAPI BOOL WINAPI CryptGetKeyParam( HCRYPTKEY, DWORD, PBYTE, PDWORD, DWORD );
+WINADVAPI BOOL WINAPI CryptSetHashParam( HCRYPTHASH, DWORD, PBYTE, DWORD );
+WINADVAPI BOOL WINAPI CryptGetHashParam( HCRYPTHASH, DWORD, PBYTE, PDWORD, DWORD );
+WINADVAPI BOOL WINAPI CryptSetProvParam( HCRYPTPROV, DWORD, PBYTE, DWORD );
+WINADVAPI BOOL WINAPI CryptGetProvParam( HCRYPTPROV, DWORD, PBYTE, PDWORD, DWORD );
+WINADVAPI BOOL WINAPI CryptGenRandom( HCRYPTPROV, DWORD, PBYTE );
+WINADVAPI BOOL WINAPI CryptGetUserKey( HCRYPTPROV, DWORD, HCRYPTKEY * );
+WINADVAPI BOOL WINAPI CryptExportKey( HCRYPTKEY, HCRYPTKEY, DWORD, DWORD, PBYTE, PDWORD );
+WINADVAPI BOOL WINAPI CryptImportKey( HCRYPTPROV, PBYTE, DWORD, HCRYPTKEY, DWORD, HCRYPTKEY * );
+WINADVAPI BOOL WINAPI CryptEncrypt( HCRYPTKEY, HCRYPTHASH, BOOL, DWORD, PBYTE, PDWORD, DWORD );
+WINADVAPI BOOL WINAPI CryptDecrypt( HCRYPTKEY, HCRYPTHASH, BOOL, DWORD, PBYTE, PDWORD );
+WINADVAPI BOOL WINAPI CryptCreateHash( HCRYPTPROV, ALG_ID, HCRYPTKEY, DWORD, HCRYPTHASH * );
+WINADVAPI BOOL WINAPI CryptHashData( HCRYPTHASH, PBYTE, DWORD, DWORD );
+WINADVAPI BOOL WINAPI CryptHashSessionKey( HCRYPTHASH, HCRYPTKEY, DWORD );
+WINADVAPI BOOL WINAPI CryptGetHashValue( HCRYPTHASH, DWORD, PBYTE, PDWORD );
+WINADVAPI BOOL WINAPI CryptDestroyHash( HCRYPTHASH );
+
+#define CryptSignHash  __AW_SUFFIXED__( CryptSignHash )
+WINADVAPI BOOL WINAPI CryptSignHashA( HCRYPTHASH, DWORD, LPCSTR, DWORD, PBYTE, PDWORD );
+WINADVAPI BOOL WINAPI CryptSignHashW( HCRYPTHASH, DWORD, LPCWSTR, DWORD, PBYTE, PDWORD );
+
+#define CryptVerifySignature  __AW_SUFFIXED__( CryptVerifySignature )
+WINADVAPI BOOL WINAPI CryptVerifySignatureA( HCRYPTHASH, PBYTE, DWORD, HCRYPTKEY, LPCSTR, DWORD );
+WINADVAPI BOOL WINAPI CryptVerifySignatureW( HCRYPTHASH, PBYTE, DWORD, HCRYPTKEY, LPCWSTR, DWORD );
+
+#define CryptSetProvider  __AW_SUFFIXED__( CryptSetProvider )
+WINADVAPI BOOL WINAPI CryptSetProviderA( LPCSTR, DWORD );
+WINADVAPI BOOL WINAPI CryptSetProviderW( LPCWSTR, DWORD );
+
+#define CryptEnumProviders  __AW_SUFFIXED__( CryptEnumProviders )
+WINADVAPI BOOL WINAPI CryptEnumProvidersA( DWORD, DWORD *, DWORD, DWORD *, LPSTR, DWORD * );
+WINADVAPI BOOL WINAPI CryptEnumProvidersW( DWORD, DWORD *, DWORD, DWORD *, LPWSTR, DWORD * );
+
+typedef struct _CRYPTPROTECT_PROMPTSTRUCT
+{ /* From http://msdn2.microsoft.com/en-us/library/Aa380263.aspx:
+   */
+  DWORD cbSize;
+  DWORD dwPromptFlags;
+  HWND hwndApp;
+  LPCWSTR szPrompt;
+} CRYPTPROTECT_PROMPTSTRUCT, *PCRYPTPROTECT_PROMPTSTRUCT;
+
+
+/* From http://msdn2.microsoft.com/en-us/library/aa380261.aspx
+ */
+BOOL WINAPI CryptProtectData( DATA_BLOB *, LPCWSTR, DATA_BLOB *, PVOID, CRYPTPROTECT_PROMPTSTRUCT *, DWORD, DATA_BLOB * );
+
+/* From http://msdn2.microsoft.com/en-us/library/aa380882.aspx
+ */
+BOOL WINAPI CryptUnprotectData( DATA_BLOB *, LPWSTR *, DATA_BLOB *, PVOID, CRYPTPROTECT_PROMPTSTRUCT *, DWORD, DATA_BLOB * );
+
+/* From http://msdn2.microsoft.com/en-us/library/aa302402.aspx:
+ */
+#define CRYPTPROTECT_UI_FORBIDDEN		       0x1
+#define CRYPTPROTECT_LOCAL_MACHINE		       0x4
+
+typedef BOOL (WINAPI *PFN_CRYPT_ENUM_KEYID_PROP)( const CRYPT_HASH_BLOB *, DWORD, void *, void *, DWORD, DWORD, void **, DWORD );
+
+BOOL WINAPI CertGetCertificateContextProperty( PCCERT_CONTEXT, DWORD, void *, DWORD * );
+BOOL WINAPI CryptEnumKeyIdentifierProperties( const CRYPT_HASH_BLOB *, DWORD, DWORD, LPCWSTR, void *, void *, PFN_CRYPT_ENUM_KEYID_PROP );
+BOOL WINAPI CryptAcquireCertificatePrivateKey( PCCERT_CONTEXT, DWORD, void *, HCRYPTPROV *, DWORD *, BOOL * );
+PCCERT_CONTEXT WINAPI CertCreateCertificateContext( DWORD, const BYTE *, DWORD );
+BOOL WINAPI CryptGetKeyIdentifierProperty( const CRYPT_HASH_BLOB *, DWORD, DWORD, LPCWSTR, void *, void *, DWORD * );
+BOOL WINAPI CertSetCertificateContextProperty( PCCERT_CONTEXT, DWORD, DWORD, void * );
+BOOL WINAPI CertCompareCertificateName( DWORD, PCERT_NAME_BLOB, PCERT_NAME_BLOB );
+BOOL WINAPI CryptSetKeyIdentifierProperty( const CRYPT_HASH_BLOB *, DWORD, DWORD, LPCWSTR, void *, void * );
+DWORD WINAPI CertOIDToAlgId( LPCSTR );
+
+#define CryptGetDefaultProvider __AW_SUFFIXED__( CryptGetDefaultProvider )
+BOOL WINAPI CryptGetDefaultProviderA( DWORD, DWORD, DWORD, LPSTR, DWORD );
+BOOL WINAPI CryptGetDefaultProviderW( DWORD, DWORD, DWORD, LPWSTR, DWORD );
+
+_END_C_DECLS
+
+#endif /* ! _WINCRYPT_H: $RCSfile: wincrypt.h,v $: end of file */
Index: Daodan/MinGW/include/windef.h
===================================================================
--- Daodan/MinGW/include/windef.h	(revision 1046)
+++ Daodan/MinGW/include/windef.h	(revision 1046)
@@ -0,0 +1,353 @@
+/*
+ * windef.h
+ *
+ * Common definitions for the Win32 API.
+ *
+ * $Id: windef.h,v 34e5e7606781 2016/05/23 18:31:09 keithmarshall $
+ *
+ * Written by Anders Norlander  <anorland@hem2.passagen.se>
+ * Copyright (C) 1998-2002, 2006-2008, 2010, 2015, MinGW.org Project
+ *
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ *
+ */
+#ifndef _WINDEF_H
+#define _WINDEF_H
+#pragma GCC system_header
+
+/* We used to provide preprocessor code here, to ensure that WINVER
+ * and _WIN32_WINNT are defined; this is now handled by inclusion of
+ * w32api.h, which in turn includes sdkddkver.h, so implementing the
+ * preferred technique of deriving these from a user assigned, (or
+ * default), NTDDI_VERSION setting.
+ */
+#include <w32api.h>
+
+_BEGIN_C_DECLS
+
+#ifndef WIN32
+#define WIN32
+#endif
+#ifndef _WIN32
+#define _WIN32
+#endif
+#define FAR
+#define far
+#define NEAR
+#define near
+#ifndef CONST
+#define CONST const
+#endif
+#undef MAX_PATH
+#define MAX_PATH 260
+
+#ifndef NULL
+#ifdef __cplusplus
+#define NULL 0
+#else
+#define NULL ((void*)0)
+#endif
+#endif
+#ifndef FALSE
+#define FALSE 0
+#endif
+#ifndef TRUE
+#define TRUE 1
+#endif
+
+#ifndef _NO_W32_PSEUDO_MODIFIERS
+/* Pseudo-modifiers support function argument classification:
+ * we don't use these unnecessary defines in the w32api headers,
+ * but define them by default, since that is what people expect;
+ * this is conditional, so that users may avoid the pollution.
+ */
+# define IN
+# define OUT
+# ifndef OPTIONAL
+#  define OPTIONAL
+# endif
+#endif
+
+#ifdef __GNUC__
+#ifndef _fastcall
+#define _fastcall __attribute__((fastcall))
+#endif
+#ifndef __fastcall
+#define __fastcall __attribute__((fastcall))
+#endif
+#ifndef _stdcall
+#define _stdcall __attribute__((stdcall))
+#endif
+#ifndef __stdcall
+#define __stdcall __attribute__((stdcall))
+#endif
+#ifndef _cdecl
+#define _cdecl __attribute__((cdecl))
+#endif
+#ifndef __cdecl
+#define __cdecl __attribute__((cdecl))
+#endif
+#ifndef __declspec
+#define __declspec(e) __attribute__((e))
+#endif
+#ifndef _declspec
+#define _declspec(e) __attribute__((e))
+#endif
+#else
+#define _cdecl
+#define __cdecl
+#endif
+
+#undef pascal
+#undef _pascal
+#undef __pascal
+#define pascal __stdcall
+#define _pascal __stdcall
+#define __pascal __stdcall
+#define PASCAL _pascal
+#define CDECL _cdecl
+#define STDCALL __stdcall
+#define FASTCALL __fastcall
+#define WINAPI __stdcall
+#define WINAPIV __cdecl
+#define APIENTRY __stdcall
+#define CALLBACK __stdcall
+#define APIPRIVATE __stdcall
+
+#define DECLSPEC_IMPORT __declspec(dllimport)
+#define DECLSPEC_EXPORT __declspec(dllexport)
+#ifdef __GNUC__
+#define DECLSPEC_NORETURN __declspec(noreturn)
+#define DECLARE_STDCALL_P( type ) __stdcall type
+#elif defined(__WATCOMC__)
+#define DECLSPEC_NORETURN
+#define DECLARE_STDCALL_P( type ) type __stdcall
+#endif /* __GNUC__/__WATCOMC__ */
+#define MAKEWORD(a,b)	((WORD)(((BYTE)(a))|(((WORD)((BYTE)(b)))<<8)))
+#define MAKELONG(a,b)	((LONG)(((WORD)(a))|(((DWORD)((WORD)(b)))<<16)))
+#define LOWORD(l)	((WORD)((DWORD)(l)))
+#define HIWORD(l)	((WORD)(((DWORD)(l)>>16)&0xFFFF))
+#define LOBYTE(w)	((BYTE)(w))
+#define HIBYTE(w)	((BYTE)(((WORD)(w)>>8)&0xFF))
+
+#ifndef __WATCOMC__
+#ifndef _export
+#define _export
+#endif
+#ifndef __export
+#define __export
+#endif
+#endif
+
+#ifndef NOMINMAX
+#ifndef max
+#define max(a,b) ((a)>(b)?(a):(b))
+#endif
+#ifndef min
+#define min(a,b) ((a)<(b)?(a):(b))
+#endif
+#endif
+
+#define UNREFERENCED_PARAMETER(P) {(P)=(P);}
+#define UNREFERENCED_LOCAL_VARIABLE(L) {(L)=(L);}
+#define DBG_UNREFERENCED_PARAMETER(P)
+#define DBG_UNREFERENCED_LOCAL_VARIABLE(L)
+
+#ifndef NONAMELESSUNION
+#ifdef __GNUC__
+#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95)
+#define _ANONYMOUS_UNION __extension__
+#define _ANONYMOUS_STRUCT __extension__
+#else
+#if defined(__cplusplus)
+#define _ANONYMOUS_UNION __extension__
+#endif /* __cplusplus */
+#endif /* __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95) */
+#elif defined(__WATCOMC__)
+#define _ANONYMOUS_UNION
+#define _ANONYMOUS_STRUCT
+#endif /* __GNUC__/__WATCOMC__ */
+#endif /* NONAMELESSUNION */
+
+#ifndef _ANONYMOUS_UNION
+#define _ANONYMOUS_UNION
+#define _UNION_NAME(x) x
+#define DUMMYUNIONNAME	u
+#define DUMMYUNIONNAME2	u2
+#define DUMMYUNIONNAME3	u3
+#define DUMMYUNIONNAME4	u4
+#define DUMMYUNIONNAME5	u5
+#define DUMMYUNIONNAME6	u6
+#define DUMMYUNIONNAME7	u7
+#define DUMMYUNIONNAME8	u8
+#else
+#define _UNION_NAME(x)
+#define DUMMYUNIONNAME
+#define DUMMYUNIONNAME2
+#define DUMMYUNIONNAME3
+#define DUMMYUNIONNAME4
+#define DUMMYUNIONNAME5
+#define DUMMYUNIONNAME6
+#define DUMMYUNIONNAME7
+#define DUMMYUNIONNAME8
+#endif
+#ifndef _ANONYMOUS_STRUCT
+#define _ANONYMOUS_STRUCT
+#define _STRUCT_NAME(x) x
+#define DUMMYSTRUCTNAME	s
+#define DUMMYSTRUCTNAME2 s2
+#define DUMMYSTRUCTNAME3 s3
+#else
+#define _STRUCT_NAME(x)
+#define DUMMYSTRUCTNAME
+#define DUMMYSTRUCTNAME2
+#define DUMMYSTRUCTNAME3
+#endif
+
+#ifndef NO_STRICT
+#ifndef STRICT
+#define STRICT 1
+#endif
+#endif
+
+#if defined (__GNUC__) && defined (__SEH_NOOP)
+/* FIXME: This will make some code compile. The programs will most
+ * likely crash when an exception is raised, but at least they will
+ * compile.
+ */
+# define __try
+# define __except(x) if (0) /* don't execute handler */
+# define __finally
+
+# define _try __try
+# define _except __except
+# define _finally __finally
+#endif
+
+typedef unsigned long DWORD;
+typedef int WINBOOL,*PWINBOOL,*LPWINBOOL;
+/* FIXME: Is there a good solution to this? */
+#ifndef XFree86Server
+#ifndef __OBJC__
+typedef WINBOOL BOOL;
+#else
+#define BOOL WINBOOL
+#endif
+typedef unsigned char BYTE;
+#endif /* ndef XFree86Server */
+typedef BOOL *PBOOL,*LPBOOL;
+typedef unsigned short WORD;
+typedef float FLOAT;
+typedef FLOAT *PFLOAT;
+typedef BYTE *PBYTE,*LPBYTE;
+typedef int *PINT,*LPINT;
+typedef WORD *PWORD,*LPWORD;
+typedef long *LPLONG;
+typedef DWORD *PDWORD,*LPDWORD;
+typedef CONST void *PCVOID,*LPCVOID;
+typedef int INT;
+typedef unsigned int UINT,*PUINT,*LPUINT;
+
+#include <winnt.h>
+
+typedef UINT_PTR WPARAM;
+typedef LONG_PTR LPARAM;
+typedef LONG_PTR LRESULT;
+#ifndef _HRESULT_DEFINED
+typedef LONG HRESULT;
+#define _HRESULT_DEFINED
+#endif
+#ifndef XFree86Server
+typedef WORD ATOM;
+#endif /* XFree86Server */
+typedef HANDLE HHOOK;
+typedef HANDLE HGLOBAL;
+typedef HANDLE HLOCAL;
+typedef HANDLE GLOBALHANDLE;
+typedef HANDLE LOCALHANDLE;
+typedef void *HGDIOBJ;
+DECLARE_HANDLE(HACCEL);
+DECLARE_HANDLE(HBITMAP);
+DECLARE_HANDLE(HBRUSH);
+DECLARE_HANDLE(HCOLORSPACE);
+DECLARE_HANDLE(HDC);
+DECLARE_HANDLE(HGLRC);
+DECLARE_HANDLE(HDESK);
+DECLARE_HANDLE(HENHMETAFILE);
+DECLARE_HANDLE(HFONT);
+DECLARE_HANDLE(HICON);
+DECLARE_HANDLE(HKEY);
+/* FIXME: How to handle these. SM_CMONITORS etc in winuser.h also. */
+DECLARE_HANDLE(HMONITOR);
+#define HMONITOR_DECLARED 1
+DECLARE_HANDLE(HTERMINAL);
+DECLARE_HANDLE(HWINEVENTHOOK);
+
+typedef HKEY *PHKEY;
+DECLARE_HANDLE(HMENU);
+DECLARE_HANDLE(HMETAFILE);
+DECLARE_HANDLE(HINSTANCE);
+typedef HINSTANCE HMODULE;
+DECLARE_HANDLE(HPALETTE);
+DECLARE_HANDLE(HPEN);
+DECLARE_HANDLE(HRGN);
+DECLARE_HANDLE(HRSRC);
+DECLARE_HANDLE(HSTR);
+DECLARE_HANDLE(HTASK);
+DECLARE_HANDLE(HWND);
+DECLARE_HANDLE(HWINSTA);
+DECLARE_HANDLE(HKL);
+typedef int HFILE;
+typedef HICON HCURSOR;
+typedef DWORD COLORREF;
+typedef int (WINAPI *FARPROC)();
+typedef int (WINAPI *NEARPROC)();
+typedef int (WINAPI *PROC)();
+typedef struct tagRECT {
+	LONG left;
+	LONG top;
+	LONG right;
+	LONG bottom;
+} RECT,*PRECT,*LPRECT;
+typedef const RECT *LPCRECT;
+typedef struct tagRECTL {
+	LONG left;
+	LONG top;
+	LONG right;
+	LONG bottom;
+} RECTL,*PRECTL,*LPRECTL;
+typedef const RECTL *LPCRECTL;
+typedef struct tagPOINT {
+	LONG x;
+	LONG y;
+} POINT,POINTL,*PPOINT,*LPPOINT,*PPOINTL,*LPPOINTL;
+typedef struct tagSIZE {
+	LONG cx;
+	LONG cy;
+} SIZE,SIZEL,*PSIZE,*LPSIZE,*PSIZEL,*LPSIZEL;
+typedef struct tagPOINTS {
+	SHORT x;
+	SHORT y;
+} POINTS,*PPOINTS,*LPPOINTS;
+
+_END_C_DECLS
+
+#endif /* _WINDEF_H: $RCSfile: windef.h,v $: end of file */
Index: Daodan/MinGW/include/windns.h
===================================================================
--- Daodan/MinGW/include/windns.h	(revision 1046)
+++ Daodan/MinGW/include/windns.h	(revision 1046)
@@ -0,0 +1,405 @@
+#ifndef _WINDNS_H
+#define _WINDNS_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define DNS_QUERY_STANDARD 0x0
+#define DNS_QUERY_ACCEPT_TRUNCATED_RESPONSE 0x1
+#define DNS_QUERY_USE_TCP_ONLY 0x2
+#define DNS_QUERY_NO_RECURSION 0x4
+#define DNS_QUERY_BYPASS_CACHE 0x8
+#define DNS_QUERY_NO_WIRE_QUERY	0x10
+#define DNS_QUERY_NO_LOCAL_NAME 0x20
+#define DNS_QUERY_NO_HOSTS_FILE 0x40
+#define DNS_QUERY_NO_NETBT 0x80
+#define DNS_QUERY_TREAT_AS_FQDN 0x1000
+#define DNS_QUERY_WIRE_ONLY 0x100
+#define DNS_QUERY_RETURN_MESSAGE 0x200
+#define DNS_QUERY_DONT_RESET_TTL_VALUES 0x100000
+#define DNS_QUERY_RESERVED 0xff000000
+
+#define DNS_UPDATE_SECURITY_USE_DEFAULT	0x0
+#define DNS_UPDATE_SECURITY_OFF 0x10
+#define DNS_UPDATE_SECURITY_ON 0x20
+#define DNS_UPDATE_SECURITY_ONLY 0x100
+#define DNS_UPDATE_CACHE_SECURITY_CONTEXT 0x200
+#define DNS_UPDATE_TEST_USE_LOCAL_SYS_ACCT 0x400
+#define DNS_UPDATE_FORCE_SECURITY_NEGO 0x800
+#define DNS_UPDATE_RESERVED 0xffff0000
+
+#ifndef RC_INVOKE
+typedef DWORD IP4_ADDRESS;
+typedef DWORD DNS_STATUS;
+enum {
+	DNS_TYPE_A=1,
+	DNS_TYPE_NS,
+	DNS_TYPE_MD,
+	DNS_TYPE_MF,
+	DNS_TYPE_CNAME,
+	DNS_TYPE_SOA,
+	DNS_TYPE_MB,
+	DNS_TYPE_MG,
+	DNS_TYPE_MR,
+	DNS_TYPE_NULL,
+	DNS_TYPE_WKS,
+	DNS_TYPE_PTR,
+	DNS_TYPE_HINFO,
+	DNS_TYPE_MINFO,
+	DNS_TYPE_MX,
+	DNS_TYPE_TEXT,
+	DNS_TYPE_RP,
+	DNS_TYPE_AFSDB,
+	DNS_TYPE_X25,
+	DNS_TYPE_ISDN,
+	DNS_TYPE_RT,
+	DNS_TYPE_NSAP,
+	DNS_TYPE_NSAPPTR,
+	DNS_TYPE_SIG,
+	DNS_TYPE_KEY,
+	DNS_TYPE_PX,
+	DNS_TYPE_GPOS,
+	DNS_TYPE_AAAA,
+	DNS_TYPE_LOC,
+	DNS_TYPE_NXT,
+	DNS_TYPE_EID,
+	DNS_TYPE_NIMLOC,
+	DNS_TYPE_SRV,
+	DNS_TYPE_ATMA,
+	DNS_TYPE_NAPTR,
+	DNS_TYPE_KX,
+	DNS_TYPE_CERT,
+	DNS_TYPE_A6,
+	DNS_TYPE_DNAME,
+	DNS_TYPE_SINK,
+	DNS_TYPE_OPT,
+	DNS_TYPE_UINFO=100,
+	DNS_TYPE_UID,
+	DNS_TYPE_GID,
+	DNS_TYPE_UNSPEC,
+	DNS_TYPE_ADDRS=248,
+	DNS_TYPE_TKEY,
+	DNS_TYPE_TSIG,
+	DNS_TYPE_IXFR,
+	DNS_TYPE_AXFR,
+	DNS_TYPE_MAILB,
+	DNS_TYPE_MAILA,
+	DNS_TYPE_ALL,
+	DNS_TYPE_ANY=DNS_TYPE_ALL
+};
+typedef enum _DNS_CHARSET
+{
+	DnsCharSetUnknown,
+	DnsCharSetUnicode,
+	DnsCharSetUtf8,
+	DnsCharSetAnsi
+} DNS_CHARSET;
+typedef enum
+{
+	DnsConfigPrimaryDomainName_W,
+	DnsConfigPrimaryDomainName_A,
+	DnsConfigPrimaryDomainName_UTF8,
+	DnsConfigAdapterDomainName_W,
+	DnsConfigAdapterDomainName_A,
+	DnsConfigAdapterDomainName_UTF8,
+	DnsConfigDnsServerList,
+	DnsConfigSearchList,
+	DnsConfigAdapterInfo,
+	DnsConfigPrimaryHostNameRegistrationEnabled,
+	DnsConfigAdapterHostNameRegistrationEnabled,
+	DnsConfigAddressRegistrationMaxCount,
+	DnsConfigHostName_W,
+	DnsConfigHostName_A,
+	DnsConfigHostName_UTF8,
+	DnsConfigFullHostName_W,
+	DnsConfigFullHostName_A,
+	DnsConfigFullHostName_UTF8
+} DNS_CONFIG_TYPE;
+typedef enum
+{
+	DnsFreeFlat = 0,
+	DnsFreeRecordList,
+	DnsFreeParsedMessageFields
+} DNS_FREE_TYPE;
+typedef enum _DNS_NAME_FORMAT
+{
+	DnsNameDomain,
+	DnsNameDomainLabel,
+	DnsNameHostnameFull,
+	DnsNameHostnameLabel,
+	DnsNameWildcard,
+	DnsNameSrvRecord
+} DNS_NAME_FORMAT;
+typedef enum
+{
+	DnsSectionQuestion,
+	DnsSectionAnswer,
+	DnsSectionAuthority,
+	DnsSectionAdditional
+} DNS_SECTION;
+typedef struct _IP4_ARRAY {
+	DWORD AddrCount;
+	IP4_ADDRESS AddrArray[1];
+} IP4_ARRAY, *PIP4_ARRAY;
+typedef struct {
+	DWORD IP6Dword[4];
+} IP6_ADDRESS, *PIP6_ADDRESS, DNS_IP6_ADDRESS, *PDNS_IP6_ADDRESS;
+typedef struct _DNS_HEADER {
+	WORD Xid;
+	BYTE RecursionDesired;
+	BYTE Truncation;
+	BYTE Authoritative;
+	BYTE Opcode;
+	BYTE IsResponse;
+	BYTE ResponseCode;
+	BYTE Reserved;
+	BYTE RecursionAvailable;
+	WORD QuestionCount;
+	WORD AnswerCount;
+	WORD NameServerCount;
+	WORD AdditionalCount;
+} DNS_HEADER, *PDNS_HEADER;
+typedef struct _DNS_MESSAGE_BUFFER {
+	DNS_HEADER MessageHead;
+	CHAR MessageBody[1];
+} DNS_MESSAGE_BUFFER, *PDNS_MESSAGE_BUFFER;
+typedef struct _DnsRecordFlags {
+	DWORD Section	:2;
+	DWORD Delete	:1;
+	DWORD CharSet	:2;
+	DWORD Unused	:3;
+	DWORD Reserved	:24;
+} DNS_RECORD_FLAGS;
+#define DNSREC_QUESTION 0
+#define DNSREC_ANSWER 1
+#define DNSREC_AUTHORITY 2
+#define DNSREC_ADDITIONAL 3
+typedef struct {
+	IP4_ADDRESS IpAddress;
+} DNS_A_DATA, *PDNS_A_DATA;
+typedef struct {
+	DNS_IP6_ADDRESS Ip6Address;
+} DNS_AAAA_DATA, *PDNS_AAAA_DATA;
+#define DNS_ATMA_MAX_ADDR_LENGTH 20
+typedef struct {
+	BYTE AddressType;
+	BYTE Address[DNS_ATMA_MAX_ADDR_LENGTH];
+} DNS_ATMA_DATA, *PDNS_ATMA_DATA;
+typedef struct {
+	WORD wFlags;
+	BYTE chProtocol;
+	BYTE chAlgorithm;
+	BYTE Key[1];
+} DNS_KEY_DATA, *PDNS_KEY_DATA;
+typedef struct {
+	WORD wVersion;
+	WORD wSize;
+	WORD wHorPrec;
+	WORD wVerPrec;
+	DWORD dwLatitude;
+	DWORD dwLongitude;
+	DWORD dwAltitude;
+} DNS_LOC_DATA, *PDNS_LOC_DATA;
+typedef struct {
+	LPTSTR pNameMailbox;
+	LPTSTR pNameErrorsMailbox;
+} DNS_MINFO_DATA, *PDNS_MINFO_DATA;
+typedef struct {
+	LPTSTR pNameExchange;
+	WORD wPreference;
+	WORD Pad;
+} DNS_MX_DATA, *PDNS_MX_DATA;
+typedef struct {
+	DWORD dwByteCount;
+	BYTE Data[1];
+} DNS_NULL_DATA, *PDNS_NULL_DATA;
+typedef struct {
+	LPTSTR pNameNext;
+	WORD wNumTypes;
+	WORD wTypes[1];
+} DNS_NXT_DATA, *PDNS_NXT_DATA;
+typedef struct {
+	LPTSTR pNameHost;
+} DNS_PTR_DATA, *PDNS_PTR_DATA;
+typedef struct {
+	LPTSTR pNameSigner;
+	WORD wTypeCovered;
+	BYTE chAlgorithm;
+	BYTE chLabelCount;
+	DWORD dwOriginalTtl;
+	DWORD dwExpiration;
+	DWORD dwTimeSigned;
+	WORD wKeyTag;
+	WORD Pad;
+	BYTE Signature[1];
+} DNS_SIG_DATA, *PDNS_SIG_DATA;
+typedef struct {
+	LPTSTR pNamePrimaryServer;
+	LPTSTR pNameAdministrator;
+	DWORD dwSerialNo;
+	DWORD dwRefresh;
+	DWORD dwRetry;
+	DWORD dwExpire;
+	DWORD dwDefaultTtl;
+} DNS_SOA_DATA, *PDNS_SOA_DATA;
+typedef struct {
+	LPTSTR pNameTarget;
+	WORD wPriority;
+	WORD wWeight;
+	WORD wPort;
+	WORD Pad;
+} DNS_SRV_DATA, *PDNS_SRV_DATA;
+typedef struct {
+	DWORD dwStringCount;
+	LPTSTR pStringArray[1];
+} DNS_TXT_DATA, *PDNS_TXT_DATA;
+typedef struct {
+	LPTSTR pNameAlgorithm;
+	PBYTE pAlgorithmPacket;
+	PBYTE pKey;
+	PBYTE pOtherData;
+	DWORD dwCreateTime;
+	DWORD dwExpireTime;
+	WORD wMode;
+	WORD wError;
+	WORD wKeyLength;
+	WORD wOtherLength;
+	UCHAR cAlgNameLength;
+	BOOL bPacketPointers;
+} DNS_TKEY_DATA, *PDNS_TKEY_DATA;
+typedef struct {
+	LPTSTR pNameAlgorithm;
+	PBYTE pAlgorithmPacket;
+	PBYTE pSignature;
+	PBYTE pOtherData;
+	LONGLONG i64CreateTime;
+	WORD wFudgeTime;
+	WORD wOriginalXid;
+	WORD wError;
+	WORD wSigLength;
+	WORD wOtherLength;
+	UCHAR cAlgNameLength;
+	BOOL bPacketPointers;
+} DNS_TSIG_DATA, *PDNS_TSIG_DATA;
+typedef struct {
+	DWORD dwMappingFlag;
+	DWORD dwLookupTimeout;
+	DWORD dwCacheTimeout;
+	DWORD cWinsServerCount;
+	IP4_ADDRESS WinsServers[1];
+} DNS_WINS_DATA, *PDNS_WINS_DATA;
+typedef struct {
+	DWORD dwMappingFlag;
+	DWORD dwLookupTimeout;
+	DWORD dwCacheTimeout;
+	LPTSTR pNameResultDomain;
+} DNS_WINSR_DATA, *PDNS_WINSR_DATA;
+typedef struct _DNS_WIRE_QUESTION {
+	WORD QuestionType;
+	WORD QuestionClass;
+} DNS_WIRE_QUESTION, *PDNS_WIRE_QUESTION;
+typedef struct _DNS_WIRE_RECORD {
+	WORD RecordType;
+	WORD RecordClass;
+	DWORD TimeToLive;
+	WORD DataLength;
+} DNS_WIRE_RECORD, *PDNS_WIRE_RECORD;
+typedef struct {
+	IP4_ADDRESS IpAddress;
+	UCHAR chProtocol;
+	BYTE BitMask[1];
+} DNS_WKS_DATA, *PDNS_WKS_DATA;
+typedef struct _DnsRecord {
+	struct _DnsRecord* pNext;
+	LPTSTR pName;
+	WORD wType;
+	WORD wDataLength;
+	union {
+		DWORD DW;
+		DNS_RECORD_FLAGS S;
+	} Flags;
+	DWORD dwTtl;
+	DWORD dwReserved;
+	union {
+		DNS_A_DATA A;
+		DNS_SOA_DATA SOA, Soa;
+		DNS_PTR_DATA PTR, Ptr, NS, Ns, CNAME, Cname, MB, Mb,
+			     MD, Md, MF, Mf, MG, Mg, MR, Mr;
+		DNS_MINFO_DATA MINFO, Minfo, RP, Rp;
+		DNS_MX_DATA MX, Mx, AFSDB, Afsdb, RT, Rt;
+		DNS_TXT_DATA HINFO, Hinfo, ISDN, Isdn, TXT, Txt, X25;
+		DNS_NULL_DATA Null;
+		DNS_WKS_DATA WKS, Wks;
+		DNS_AAAA_DATA AAAA;
+		DNS_KEY_DATA KEY, Key;
+		DNS_SIG_DATA SIG, Sig;
+		DNS_ATMA_DATA ATMA, Atma;
+		DNS_NXT_DATA NXT, Nxt;
+		DNS_SRV_DATA SRV, Srv;
+		DNS_TKEY_DATA TKEY, Tkey;
+		DNS_TSIG_DATA TSIG, Tsig;
+		DNS_WINS_DATA WINS, Wins;
+		DNS_WINSR_DATA WINSR, WinsR, NBSTAT, Nbstat;
+	} Data;
+} DNS_RECORD, *PDNS_RECORD;
+typedef struct _DnsRRSet {
+	PDNS_RECORD pFirstRR;
+	PDNS_RECORD pLastRR;
+} DNS_RRSET, *PDNS_RRSET;
+
+DNS_STATUS WINAPI DnsAcquireContextHandle_A(DWORD,PVOID,HANDLE*);
+DNS_STATUS WINAPI DnsAcquireContextHandle_W(DWORD,PVOID,HANDLE*);
+DNS_STATUS WINAPI DnsExtractRecordsFromMessage_W(PDNS_MESSAGE_BUFFER,WORD,PDNS_RECORD*);
+DNS_STATUS WINAPI DnsExtractRecordsFromMessage_UTF8(PDNS_MESSAGE_BUFFER,WORD,PDNS_RECORD*);
+DNS_STATUS WINAPI DnsModifyRecordsInSet_A(PDNS_RECORD,PDNS_RECORD,DWORD,HANDLE,PIP4_ARRAY,PVOID);
+DNS_STATUS WINAPI DnsModifyRecordsInSet_W(PDNS_RECORD,PDNS_RECORD,DWORD,HANDLE,PIP4_ARRAY,PVOID);
+DNS_STATUS WINAPI DnsModifyRecordsInSet_UTF8(PDNS_RECORD,PDNS_RECORD,DWORD,HANDLE,PIP4_ARRAY,PVOID);
+BOOL WINAPI DnsNameCompare_A(LPSTR,LPSTR);
+BOOL WINAPI DnsNameCompare_W(LPWSTR,LPWSTR);
+DNS_STATUS WINAPI DnsQuery_A(PCSTR,WORD,DWORD,PIP4_ARRAY,PDNS_RECORD*,PVOID*);
+DNS_STATUS WINAPI DnsQuery_W(PCWSTR,WORD,DWORD,PIP4_ARRAY,PDNS_RECORD*,PVOID*);
+DNS_STATUS WINAPI DnsQuery_UTF8(PCSTR,WORD,DWORD,PIP4_ARRAY,PDNS_RECORD*,PVOID*);
+DNS_STATUS WINAPI DnsQueryConfig(DNS_CONFIG_TYPE,DWORD,PWSTR,PVOID,PVOID,PDWORD);
+BOOL WINAPI DnsRecordCompare(PDNS_RECORD,PDNS_RECORD);
+PDNS_RECORD WINAPI DnsRecordCopyEx(PDNS_RECORD,DNS_CHARSET,DNS_CHARSET);
+void WINAPI DnsRecordListFree(PDNS_RECORD,DNS_FREE_TYPE);
+BOOL WINAPI DnsRecordSetCompare(PDNS_RECORD,PDNS_RECORD,PDNS_RECORD*,PDNS_RECORD*);
+PDNS_RECORD WINAPI DnsRecordSetCopyEx(PDNS_RECORD,DNS_CHARSET,DNS_CHARSET);
+PDNS_RECORD WINAPI DnsRecordSetDetach(PDNS_RECORD);
+void WINAPI DnsReleaseContextHandle(HANDLE);
+DNS_STATUS WINAPI DnsReplaceRecordSetA(PDNS_RECORD,DWORD,HANDLE,PIP4_ARRAY,PVOID);
+DNS_STATUS WINAPI DnsReplaceRecordSetW(PDNS_RECORD,DWORD,HANDLE,PIP4_ARRAY,PVOID);
+DNS_STATUS WINAPI DnsReplaceRecordSetUTF8(PDNS_RECORD,DWORD,HANDLE,PIP4_ARRAY,PVOID);
+DNS_STATUS WINAPI DnsValidateName_A(LPCSTR,DNS_NAME_FORMAT);
+DNS_STATUS WINAPI DnsValidateName_W(LPCWSTR, DNS_NAME_FORMAT);
+DNS_STATUS WINAPI DnsValidateName_UTF8(LPCSTR,DNS_NAME_FORMAT);
+BOOL WINAPI DnsWriteQuestionToBuffer_W(PDNS_MESSAGE_BUFFER,LPDWORD,LPWSTR,WORD,WORD,BOOL);
+BOOL WINAPI DnsWriteQuestionToBuffer_UTF8(PDNS_MESSAGE_BUFFER,LPDWORD,LPSTR,WORD,WORD,BOOL);
+
+#ifdef UNICODE
+#define DnsAcquireContextHandle DnsAcquireContextHandle_W
+#define DnsModifyRecordsInSet DnsModifyRecordsInSet_W
+#define DnsNameCompare DnsNameCompare_W
+#define DnsQuery DnsQuery_W
+#define DnsReplaceRecordSet DnsReplaceRecordSetW
+#define DnsValidateName DnsValidateName_W
+#else
+#define DnsAcquireContextHandle DnsAcquireContextHandle_A
+#define DnsModifyRecordsInSet DnsModifyRecordsInSet_A
+#define DnsNameCompare DnsNameCompare_A
+#define DnsQuery DnsQuery_A
+#define DnsReplaceRecordSet DnsReplaceRecordSetA
+#define DnsValidateName DnsValidateName_A
+#endif
+
+#endif /* RC_INVOKED */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _WINDNS_H */
Index: Daodan/MinGW/include/windows.h
===================================================================
--- Daodan/MinGW/include/windows.h	(revision 1046)
+++ Daodan/MinGW/include/windows.h	(revision 1046)
@@ -0,0 +1,113 @@
+/*
+ * windows.h
+ *
+ * Include supplementary headers for core Win32 API definitions.
+ *
+ * $Id: windows.h,v f02731a7c98a 2016/06/02 21:15:06 keithmarshall $
+ *
+ * Written by Anders Norlander <anorland@hem2.passagen.se>
+ * Copyright (C) 1998-2003, 2006, 2007, 2016, MinGW.org Project
+ *
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ *
+ */
+#ifndef _WINDOWS_H
+#pragma GCC system_header
+#define _WINDOWS_H
+
+#ifdef RC_INVOKED
+/* winresrc.h includes the necessary headers */
+#include <winresrc.h>
+#else
+
+#include <stdarg.h>
+#include <windef.h>
+#include <wincon.h>
+#include <winbase.h>
+#if !(defined NOGDI || defined  _WINGDI_H)
+#include <wingdi.h>
+#endif
+#include <winuser.h>
+#include <winnls.h>
+#include <winver.h>
+#include <winnetwk.h>
+#include <winreg.h>
+#include <winsvc.h>
+
+#ifndef WIN32_LEAN_AND_MEAN
+#include <cderr.h>
+#include <dde.h>
+#include <ddeml.h>
+#include <dlgs.h>
+#include <imm.h>
+#include <lzexpand.h>
+#include <mmsystem.h>
+#include <nb30.h>
+#include <rpc.h>
+#include <shellapi.h>
+#include <winperf.h>
+#ifndef NOGDI
+#include <commdlg.h>
+#include <winspool.h>
+#endif
+#if defined(Win32_Winsock)
+#warning "The  Win32_Winsock macro name is deprecated.\
+    Please use __USE_W32_SOCKETS instead"
+#ifndef __USE_W32_SOCKETS
+#define __USE_W32_SOCKETS
+#endif
+#endif
+#if defined(__USE_W32_SOCKETS) || !(defined(__CYGWIN__) || defined(__MSYS__) || defined(_UWIN))
+#if (_WIN32_WINNT >= 0x0400)
+#include <winsock2.h>
+/*
+ * MS likes to include mswsock.h here as well,
+ * but that can cause undefined symbols if
+ * winsock2.h is included before windows.h
+ */
+#else
+#include <winsock.h>
+#endif /*  (_WIN32_WINNT >= 0x0400) */
+#endif
+#ifndef NOGDI
+/* In older versions we disallowed COM declarations in __OBJC__
+   because of conflicts with @interface directive.  Define _OBJC_NO_COM
+   to keep this behaviour.  */
+#if !defined (_OBJC_NO_COM)
+#if (__GNUC__ >= 3) || defined (__WATCOMC__)
+#include <ole2.h>
+#endif
+#endif /* _OBJC_NO_COM */
+#endif
+
+#endif /* WIN32_LEAN_AND_MEAN */
+
+#endif /* RC_INVOKED */
+
+#ifdef __OBJC__
+/* FIXME: Not undefining BOOL here causes all BOOLs to be WINBOOL (int),
+   but undefining it causes trouble as well if a file is included after
+   windows.h
+*/
+#undef BOOL
+#endif
+
+#endif	/* _WINDOWS_H: $RCSfile: windows.h,v $: end of file */
Index: Daodan/MinGW/include/windowsx.h
===================================================================
--- Daodan/MinGW/include/windowsx.h	(revision 1046)
+++ Daodan/MinGW/include/windowsx.h	(revision 1046)
@@ -0,0 +1,552 @@
+#ifndef _WINDOWSX_H
+#define _WINDOWSX_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifndef SNDMSG
+#ifdef __cplusplus
+#define SNDMSG ::SendMessage
+#else
+#define SNDMSG SendMessage
+#endif
+#endif /* ifndef SNDMSG */
+
+#define WM_CTLCOLOR 25
+#define Button_Enable(hwndCtl,fEnable) EnableWindow((hwndCtl),(fEnable))
+#define Button_GetCheck(hwndCtl) ((int)(DWORD)SNDMSG((hwndCtl),BM_GETCHECK,0,0))
+#define Button_GetState(hwndCtl) ((int)(DWORD)SNDMSG((hwndCtl),BM_GETSTATE,0,0))
+#define Button_GetText(hwndCtl,lpch,cchMax) GetWindowText((hwndCtl),(lpch),(cchMax))
+#define Button_GetTextLength(hwndCtl) GetWindowTextLength(hwndCtl)
+#define Button_SetCheck(hwndCtl,check) ((void)SNDMSG((hwndCtl),BM_SETCHECK,(WPARAM)(int)(check),0))
+#define Button_SetState(hwndCtl,state) ((UINT)(DWORD)SNDMSG((hwndCtl),BM_SETSTATE,(WPARAM)(int)(state),0))
+#define Button_SetStyle(hwndCtl,style,fRedraw) ((void)SNDMSG((hwndCtl),BM_SETSTYLE,(WPARAM)LOWORD(style),MAKELPARAM(((fRedraw) ? TRUE : FALSE),0)))
+#define Button_SetText(hwndCtl,lpsz) SetWindowText((hwndCtl),(lpsz))
+#define CheckDefDlgRecursion(pfRecursion) if (*(pfRecursion)) {*(pfRecursion) = FALSE; return FALSE; }
+#define ComboBox_AddItemData(hwndCtl,data) ((int)(DWORD)SNDMSG((hwndCtl),CB_ADDSTRING,0,(LPARAM)(data)))
+#define ComboBox_AddString(hwndCtl,lpsz) ((int)(DWORD)SNDMSG((hwndCtl),CB_ADDSTRING,0,(LPARAM)(LPCTSTR)(lpsz)))
+#define ComboBox_DeleteString(hwndCtl,index) ((int)(DWORD)SNDMSG((hwndCtl),CB_DELETESTRING,(WPARAM)(int)(index),0))
+#define ComboBox_Dir(hwndCtl,attrs,lpszFileSpec) ((int)(DWORD)SNDMSG((hwndCtl),CB_DIR,(WPARAM)(UINT)(attrs),(LPARAM)(LPCTSTR)(lpszFileSpec)))
+#define ComboBox_Enable(hwndCtl,fEnable) EnableWindow((hwndCtl),(fEnable))
+#define ComboBox_FindItemData(hwndCtl,indexStart,data) ((int)(DWORD)SNDMSG((hwndCtl),CB_FINDSTRING,(WPARAM)(int)(indexStart),(LPARAM)(data)))
+#define ComboBox_FindString(hwndCtl,indexStart,lpszFind) ((int)(DWORD)SNDMSG((hwndCtl),CB_FINDSTRING,(WPARAM)(int)(indexStart),(LPARAM)(LPCTSTR)(lpszFind)))
+#define ComboBox_FindStringExact(hwndCtl,indexStart,lpszFind) ((int)(DWORD)SNDMSG((hwndCtl),CB_FINDSTRINGEXACT,(WPARAM)(int)(indexStart),(LPARAM)(LPCTSTR)(lpszFind)))
+#define ComboBox_GetCount(hwndCtl) ((int)(DWORD)SNDMSG((hwndCtl),CB_GETCOUNT,0,0))
+#define ComboBox_GetCurSel(hwndCtl) ((int)(DWORD)SNDMSG((hwndCtl),CB_GETCURSEL,0,0))
+#define ComboBox_GetDroppedControlRect(hwndCtl,lprc) ((void)SNDMSG((hwndCtl),CB_GETDROPPEDCONTROLRECT,0,(LPARAM)(RECT*)(lprc)))
+#define ComboBox_GetDroppedState(hwndCtl) ((BOOL)(DWORD)SNDMSG((hwndCtl),CB_GETDROPPEDSTATE,0,0))
+#define ComboBox_GetEditSel(hwndCtl) ((DWORD)SNDMSG((hwndCtl),CB_GETEDITSEL,0,0))
+#define ComboBox_GetExtendedUI(hwndCtl) ((UINT)(DWORD)SNDMSG((hwndCtl),CB_GETEXTENDEDUI,0,0))
+#define ComboBox_GetItemData(hwndCtl,index) ((LRESULT)(DWORD)SNDMSG((hwndCtl),CB_GETITEMDATA,(WPARAM)(int)(index),0))
+#define ComboBox_GetItemHeight(hwndCtl) ((int)(DWORD)SNDMSG((hwndCtl),CB_GETITEMHEIGHT,0,0))
+#define ComboBox_GetLBText(hwndCtl,index,lpszBuffer) ((int)(DWORD)SNDMSG((hwndCtl),CB_GETLBTEXT,(WPARAM)(int)(index),(LPARAM)(LPCTSTR)(lpszBuffer)))
+#define ComboBox_GetLBTextLen(hwndCtl,index) ((int)(DWORD)SNDMSG((hwndCtl),CB_GETLBTEXTLEN,(WPARAM)(int)(index),0))
+#define ComboBox_GetText(hwndCtl,lpch,cchMax) GetWindowText((hwndCtl),(lpch),(cchMax))
+#define ComboBox_GetTextLength(hwndCtl) GetWindowTextLength(hwndCtl)
+#define ComboBox_InsertItemData(hwndCtl,index,data) ((int)(DWORD)SNDMSG((hwndCtl),CB_INSERTSTRING,(WPARAM)(int)(index),(LPARAM)(data)))
+#define ComboBox_InsertString(hwndCtl,index,lpsz) ((int)(DWORD)SNDMSG((hwndCtl),CB_INSERTSTRING,(WPARAM)(int)(index),(LPARAM)(LPCTSTR)(lpsz)))
+#define ComboBox_LimitText(hwndCtl,cchLimit) ((int)(DWORD)SNDMSG((hwndCtl),CB_LIMITTEXT,(WPARAM)(int)(cchLimit),0))
+#define ComboBox_ResetContent(hwndCtl) ((int)(DWORD)SNDMSG((hwndCtl),CB_RESETCONTENT,0,0))
+#define ComboBox_SelectItemData(hwndCtl,indexStart,data) ((int)(DWORD)SNDMSG((hwndCtl),CB_SELECTSTRING,(WPARAM)(int)(indexStart),(LPARAM)(data)))
+#define ComboBox_SelectString(hwndCtl,indexStart,lpszSelect) ((int)(DWORD)SNDMSG((hwndCtl),CB_SELECTSTRING,(WPARAM)(int)(indexStart),(LPARAM)(LPCTSTR)(lpszSelect)))
+#define ComboBox_SetCurSel(hwndCtl,index) ((int)(DWORD)SNDMSG((hwndCtl),CB_SETCURSEL,(WPARAM)(int)(index),0))
+#define ComboBox_SetEditSel(hwndCtl,ichStart,ichEnd) ((int)(DWORD)SNDMSG((hwndCtl),CB_SETEDITSEL,0,MAKELPARAM((ichStart),(ichEnd))))
+#define ComboBox_SetExtendedUI(hwndCtl,flags) ((int)(DWORD)SNDMSG((hwndCtl),CB_SETEXTENDEDUI,(WPARAM)(UINT)(flags),0))
+#define ComboBox_SetItemData(hwndCtl,index,data) ((int)(DWORD)SNDMSG((hwndCtl),CB_SETITEMDATA,(WPARAM)(int)(index),(LPARAM)(data)))
+#define ComboBox_SetItemHeight(hwndCtl,index,cyItem) ((int)(DWORD)SNDMSG((hwndCtl),CB_SETITEMHEIGHT,(WPARAM)(int)(index),(LPARAM)(int)cyItem))
+#define ComboBox_SetText(hwndCtl,lpsz) SetWindowText((hwndCtl),(lpsz))
+#define ComboBox_ShowDropdown(hwndCtl,fShow) ((BOOL)(DWORD)SNDMSG((hwndCtl),CB_SHOWDROPDOWN,(WPARAM)(BOOL)(fShow),0))
+#define CopyRgn(hrgnDst,hrgnSrc) CombineRgn(hrgnDst,hrgnSrc,0,RGN_COPY)
+#define DECLARE_HANDLE32 DECLARE_HANDLE
+#define DefDlgProcEx(hwnd,msg,wParam,lParam,pfRecursion) (*(pfRecursion) = TRUE,DefDlgProc(hwnd,msg,wParam,lParam))
+#define DeleteBitmap(hbm) DeleteObject((HGDIOBJ)(HBITMAP)(hbm))
+#define DeleteBrush(hbr) DeleteObject((HGDIOBJ)(HBRUSH)(hbr))
+#define DeleteFont(hfont) DeleteObject((HGDIOBJ)(HFONT)(hfont))
+#define DeletePalette(hpal) DeleteObject((HGDIOBJ)(HPALETTE)(hpal))
+#define DeletePen(hpen) DeleteObject((HGDIOBJ)(HPEN)(hpen))
+#define DeleteRgn(hrgn) DeleteObject((HGDIOBJ)(HRGN)(hrgn))
+#define Edit_CanUndo(hwndCtl) ((BOOL)(DWORD)SNDMSG((hwndCtl),EM_CANUNDO,0,0))
+#define Edit_EmptyUndoBuffer(hwndCtl) ((void)SNDMSG((hwndCtl),EM_EMPTYUNDOBUFFER,0,0))
+#define Edit_Enable(hwndCtl,fEnable) EnableWindow((hwndCtl),(fEnable))
+#define Edit_FmtLines(hwndCtl,fAddEOL) ((BOOL)(DWORD)SNDMSG((hwndCtl),EM_FMTLINES,(WPARAM)(BOOL)(fAddEOL),0))
+#define Edit_GetFirstVisibleLine(hwndCtl) ((int)(DWORD)SNDMSG((hwndCtl),EM_GETFIRSTVISIBLELINE,0,0))
+#define Edit_GetHandle(hwndCtl) ((HLOCAL)(UINT)(DWORD)SNDMSG((hwndCtl),EM_GETHANDLE,0,0))
+#define Edit_GetLine(hwndCtl,line,lpch,cchMax) ((*((int*)(lpch)) = (cchMax)),((int)(DWORD)SNDMSG((hwndCtl),EM_GETLINE,(WPARAM)(int)(line),(LPARAM)(LPTSTR)(lpch))))
+#define Edit_GetLineCount(hwndCtl) ((int)(DWORD)SNDMSG((hwndCtl),EM_GETLINECOUNT,0,0))
+#define Edit_GetModify(hwndCtl) ((BOOL)(DWORD)SNDMSG((hwndCtl),EM_GETMODIFY,0,0))
+#define Edit_GetPasswordChar(hwndCtl) ((TCHAR)(DWORD)SNDMSG((hwndCtl),EM_GETPASSWORDCHAR,0,0))
+#define Edit_GetRect(hwndCtl,lprc) ((void)SNDMSG((hwndCtl),EM_GETRECT,0,(LPARAM)(RECT*)(lprc)))
+#define Edit_GetSel(hwndCtl) ((DWORD)SNDMSG((hwndCtl),EM_GETSEL,0,0))
+#define Edit_GetText(hwndCtl,lpch,cchMax) GetWindowText((hwndCtl),(lpch),(cchMax))
+#define Edit_GetTextLength(hwndCtl) GetWindowTextLength(hwndCtl)
+#define Edit_GetWordBreakProc(hwndCtl) ((EDITWORDBREAKPROC)SNDMSG((hwndCtl),EM_GETWORDBREAKPROC,0,0))
+#define Edit_LimitText(hwndCtl,cchMax) ((void)SNDMSG((hwndCtl),EM_LIMITTEXT,(WPARAM)(cchMax),0))
+#define Edit_LineFromChar(hwndCtl,ich) ((int)(DWORD)SNDMSG((hwndCtl),EM_LINEFROMCHAR,(WPARAM)(int)(ich),0))
+#define Edit_LineIndex(hwndCtl,line) ((int)(DWORD)SNDMSG((hwndCtl),EM_LINEINDEX,(WPARAM)(int)(line),0))
+#define Edit_LineLength(hwndCtl,line) ((int)(DWORD)SNDMSG((hwndCtl),EM_LINELENGTH,(WPARAM)(int)(line),0))
+#define Edit_ReplaceSel(hwndCtl,lpszReplace) ((void)SNDMSG((hwndCtl),EM_REPLACESEL,0,(LPARAM)(LPCTSTR)(lpszReplace)))
+#define Edit_Scroll(hwndCtl,dv,dh) ((void)SNDMSG((hwndCtl),EM_LINESCROLL,(WPARAM)(dh),(LPARAM)(dv)))
+#define Edit_ScrollCaret(hwndCtl) ((BOOL)(DWORD)SNDMSG((hwndCtl),EM_SCROLLCARET,0,0))
+#define Edit_SetHandle(hwndCtl,h) ((void)SNDMSG((hwndCtl),EM_SETHANDLE,(WPARAM)(UINT)(HLOCAL)(h),0))
+#define Edit_SetModify(hwndCtl,fModified) ((void)SNDMSG((hwndCtl),EM_SETMODIFY,(WPARAM)(UINT)(fModified),0))
+#define Edit_SetPasswordChar(hwndCtl,ch) ((void)SNDMSG((hwndCtl),EM_SETPASSWORDCHAR,(WPARAM)(UINT)(ch),0))
+#define Edit_SetReadOnly(hwndCtl,fReadOnly) ((BOOL)(DWORD)SNDMSG((hwndCtl),EM_SETREADONLY,(WPARAM)(BOOL)(fReadOnly),0))
+#define Edit_SetRect(hwndCtl,lprc) ((void)SNDMSG((hwndCtl),EM_SETRECT,0,(LPARAM)(const RECT*)(lprc)))
+#define Edit_SetRectNoPaint(hwndCtl,lprc) ((void)SNDMSG((hwndCtl),EM_SETRECTNP,0,(LPARAM)(const RECT*)(lprc)))
+#define Edit_SetSel(hwndCtl,ichStart,ichEnd) ((void)SNDMSG((hwndCtl),EM_SETSEL,(ichStart),(ichEnd)))
+#define Edit_SetTabStops(hwndCtl,cTabs,lpTabs) ((void)SNDMSG((hwndCtl),EM_SETTABSTOPS,(WPARAM)(int)(cTabs),(LPARAM)(const int*)(lpTabs)))
+#define Edit_SetText(hwndCtl,lpsz) SetWindowText((hwndCtl),(lpsz))
+#define Edit_SetWordBreakProc(hwndCtl,lpfnWordBreak) ((void)SNDMSG((hwndCtl),EM_SETWORDBREAKPROC,0,(LPARAM)(EDITWORDBREAKPROC)(lpfnWordBreak)))
+#define Edit_Undo(hwndCtl) ((BOOL)(DWORD)SNDMSG((hwndCtl),EM_UNDO,0,0))
+#define FORWARD_WM_ACTIVATE(hwnd,state,hwndActDeact,fMinimized,fn) (void)(fn)((hwnd),WM_ACTIVATE,MAKEWPARAM((state),(fMinimized)),(LPARAM)(HWND)(hwndActDeact))
+#define FORWARD_WM_ACTIVATEAPP(hwnd,fActivate,dwThreadId,fn) (void)(fn)((hwnd),WM_ACTIVATEAPP,(WPARAM)(BOOL)(fActivate),(LPARAM)(dwThreadId))
+#define FORWARD_WM_ASKCBFORMATNAME(hwnd,cchMax,rgchName,fn) (void)(fn)((hwnd),WM_ASKCBFORMATNAME,(WPARAM)(int)(cchMax),(LPARAM)(rgchName))
+#define FORWARD_WM_CANCELMODE(hwnd,fn) (void)(fn)((hwnd),WM_CANCELMODE,0,0)
+#define FORWARD_WM_CHANGECBCHAIN(hwnd,hwndRemove,hwndNext,fn) (void)(fn)((hwnd),WM_CHANGECBCHAIN,(WPARAM)(HWND)(hwndRemove),(LPARAM)(HWND)(hwndNext))
+#define FORWARD_WM_CHAR(hwnd,ch,cRepeat,fn) (void)(fn)((hwnd),WM_CHAR,(WPARAM)(TCHAR)(ch),MAKELPARAM((cRepeat),0))
+#define FORWARD_WM_CHARTOITEM(hwnd,ch,hwndListBox,iCaret,fn) (int)(DWORD)(fn)((hwnd),WM_CHARTOITEM,MAKEWPARAM((UINT)(iCaret),(UINT)(ch)),(LPARAM)(hwndListBox))
+#define FORWARD_WM_CHILDACTIVATE(hwnd,fn) (void)(fn)((hwnd),WM_CHILDACTIVATE,0,0)
+#define FORWARD_WM_CLEAR(hwnd,fn) (void)(fn)((hwnd),WM_CLEAR,0,0)
+#define FORWARD_WM_CLOSE(hwnd,fn) (void)(fn)((hwnd),WM_CLOSE,0,0)
+#define FORWARD_WM_COMMAND(hwnd,id,hwndCtl,codeNotify,fn) (void)(fn)((hwnd),WM_COMMAND,MAKEWPARAM((UINT)(id),(UINT)(codeNotify)),(LPARAM)(HWND)(hwndCtl))
+#define FORWARD_WM_COMMNOTIFY(hwnd,cid,flags,fn) (void)(fn)((hwnd),WM_COMMNOTIFY,(WPARAM)(cid),MAKELPARAM((flags),0))
+#define FORWARD_WM_COMPACTING(hwnd,compactRatio,fn) (void)(fn)((hwnd),WM_COMPACTING,(WPARAM)(UINT)(compactRatio),0)
+#define FORWARD_WM_COMPAREITEM(hwnd,lpCompareItem,fn) (int)(DWORD)(fn)((hwnd),WM_COMPAREITEM,(WPARAM)(((const COMPAREITEMSTRUCT*)(lpCompareItem))->CtlID),(LPARAM)(const COMPAREITEMSTRUCT*)(lpCompareItem))
+#define FORWARD_WM_COPY(hwnd,fn) (void)(fn)((hwnd),WM_COPY,0,0)
+#define FORWARD_WM_CREATE(hwnd,lpCreateStruct,fn) (BOOL)(DWORD)(fn)((hwnd),WM_CREATE,0,(LPARAM)(LPCREATESTRUCT)(lpCreateStruct))
+#define FORWARD_WM_CTLCOLORBTN(hwnd,hdc,hwndChild,fn) (HBRUSH)(UINT)(DWORD)(fn)((hwnd),WM_CTLCOLORBTN,(WPARAM)(HDC)(hdc),(LPARAM)(HWND)(hwndChild))
+#define FORWARD_WM_CTLCOLORDLG(hwnd,hdc,hwndChild,fn) (HBRUSH)(UINT)(DWORD)(fn)((hwnd),WM_CTLCOLORDLG,(WPARAM)(HDC)(hdc),(LPARAM)(HWND)(hwndChild))
+#define FORWARD_WM_CTLCOLOREDIT(hwnd,hdc,hwndChild,fn) (HBRUSH)(UINT)(DWORD)(fn)((hwnd),WM_CTLCOLOREDIT,(WPARAM)(HDC)(hdc),(LPARAM)(HWND)(hwndChild))
+#define FORWARD_WM_CTLCOLORLISTBOX(hwnd,hdc,hwndChild,fn) (HBRUSH)(UINT)(DWORD)(fn)((hwnd),WM_CTLCOLORLISTBOX,(WPARAM)(HDC)(hdc),(LPARAM)(HWND)(hwndChild))
+#define FORWARD_WM_CTLCOLORMSGBOX(hwnd,hdc,hwndChild,fn) (HBRUSH)(UINT)(DWORD)(fn)((hwnd),WM_CTLCOLORMSGBOX,(WPARAM)(HDC)(hdc),(LPARAM)(HWND)(hwndChild))
+#define FORWARD_WM_CTLCOLORSCROLLBAR(hwnd,hdc,hwndChild,fn) (HBRUSH)(UINT)(DWORD)(fn)((hwnd),WM_CTLCOLORSCROLLBAR,(WPARAM)(HDC)(hdc),(LPARAM)(HWND)(hwndChild))
+#define FORWARD_WM_CTLCOLORSTATIC(hwnd,hdc,hwndChild,fn) (HBRUSH)(UINT)(DWORD)(fn)((hwnd),WM_CTLCOLORSTATIC,(WPARAM)(HDC)(hdc),(LPARAM)(HWND)(hwndChild))
+#define FORWARD_WM_CUT(hwnd,fn) (void)(fn)((hwnd),WM_CUT,0,0)
+#define FORWARD_WM_DEADCHAR(hwnd,ch,cRepeat,fn) (void)(fn)((hwnd),WM_DEADCHAR,(WPARAM)(TCHAR)(ch),MAKELPARAM((cRepeat),0))
+#define FORWARD_WM_DELETEITEM(hwnd,lpDeleteItem,fn) (void)(fn)((hwnd),WM_DELETEITEM,(WPARAM)(((const DELETEITEMSTRUCT*)(lpDeleteItem))->CtlID),(LPARAM)(const DELETEITEMSTRUCT*)(lpDeleteItem))
+#define FORWARD_WM_DESTROY(hwnd,fn) (void)(fn)((hwnd),WM_DESTROY,0,0)
+#define FORWARD_WM_DESTROYCLIPBOARD(hwnd,fn) (void)(fn)((hwnd),WM_DESTROYCLIPBOARD,0,0)
+#define FORWARD_WM_DEVMODECHANGE(hwnd,lpszDeviceName,fn) (void)(fn)((hwnd),WM_DEVMODECHANGE,0,(LPARAM)(LPCTSTR)(lpszDeviceName))
+#define FORWARD_WM_DRAWCLIPBOARD(hwnd,fn) (void)(fn)((hwnd),WM_DRAWCLIPBOARD,0,0)
+#define FORWARD_WM_DRAWITEM(hwnd,lpDrawItem,fn) (void)(fn)((hwnd),WM_DRAWITEM,(WPARAM)(((const DRAWITEMSTRUCT*)lpDrawItem)->CtlID),(LPARAM)(const DRAWITEMSTRUCT*)(lpDrawItem))
+#define FORWARD_WM_DROPFILES(hwnd,hdrop,fn) (void)(fn)((hwnd),WM_DROPFILES,(WPARAM)(HDROP)(hdrop),0)
+#define FORWARD_WM_ENABLE(hwnd,fEnable,fn) (void)(fn)((hwnd),WM_ENABLE,(WPARAM)(BOOL)(fEnable),0)
+#define FORWARD_WM_ENDSESSION(hwnd,fEnding,fn) (void)(fn)((hwnd),WM_ENDSESSION,(WPARAM)(BOOL)(fEnding),0)
+#define FORWARD_WM_ENTERIDLE(hwnd,source,hwndSource,fn) (void)(fn)((hwnd),WM_ENTERIDLE,(WPARAM)(UINT)(source),(LPARAM)(HWND)(hwndSource))
+#define FORWARD_WM_ERASEBKGND(hwnd,hdc,fn) (BOOL)(DWORD)(fn)((hwnd),WM_ERASEBKGND,(WPARAM)(HDC)(hdc),0)
+#define FORWARD_WM_FONTCHANGE(hwnd,fn) (void)(fn)((hwnd),WM_FONTCHANGE,0,0)
+#define FORWARD_WM_GETDLGCODE(hwnd,lpmsg,fn) (UINT)(DWORD)(fn)((hwnd),WM_GETDLGCODE,(lpmsg ? lpmsg->wParam : 0),(LPARAM)(LPMSG)(lpmsg))
+#define FORWARD_WM_GETFONT(hwnd,fn) (HFONT)(UINT)(DWORD)(fn)((hwnd),WM_GETFONT,0,0)
+#define FORWARD_WM_GETMINMAXINFO(hwnd,lpMinMaxInfo,fn) (void)(fn)((hwnd),WM_GETMINMAXINFO,0,(LPARAM)(LPMINMAXINFO)(lpMinMaxInfo))
+#define FORWARD_WM_GETTEXT(hwnd,cchTextMax,lpszText,fn) (int)(DWORD)(fn)((hwnd),WM_GETTEXT,(WPARAM)(int)(cchTextMax),(LPARAM)(LPTSTR)(lpszText))
+#define FORWARD_WM_GETTEXTLENGTH(hwnd,fn) (int)(DWORD)(fn)((hwnd),WM_GETTEXTLENGTH,0,0)
+#define FORWARD_WM_HSCROLL(hwnd,hwndCtl,code,pos,fn) (void)(fn)((hwnd),WM_HSCROLL,MAKEWPARAM((UINT)(int)(code),(UINT)(int)(pos)),(LPARAM)(UINT)(hwndCtl))
+#define FORWARD_WM_HSCROLLCLIPBOARD(hwnd,hwndCBViewer,code,pos,fn) (void)(fn)((hwnd),WM_HSCROLLCLIPBOARD,(WPARAM)(HWND)(hwndCBViewer),MAKELPARAM((code),(pos)))
+#define FORWARD_WM_ICONERASEBKGND(hwnd,hdc,fn) (BOOL)(DWORD)(fn)((hwnd),WM_ICONERASEBKGND,(WPARAM)(HDC)(hdc),0)
+#define FORWARD_WM_INITDIALOG(hwnd,hwndFocus,lParam,fn) (BOOL)(DWORD)(fn)((hwnd),WM_INITDIALOG,(WPARAM)(HWND)(hwndFocus),(lParam))
+#define FORWARD_WM_INITMENU(hwnd,hMenu,fn) (void)(fn)((hwnd),WM_INITMENU,(WPARAM)(HMENU)(hMenu),0)
+#define FORWARD_WM_INITMENUPOPUP(hwnd,hMenu,item,fSystemMenu,fn) (void)(fn)((hwnd),WM_INITMENUPOPUP,(WPARAM)(HMENU)(hMenu),MAKELPARAM((item),(fSystemMenu)))
+#define FORWARD_WM_KEYDOWN(hwnd,vk,cRepeat,flags,fn) (void)(fn)((hwnd),WM_KEYDOWN,(WPARAM)(UINT)(vk),MAKELPARAM((cRepeat),(flags)))
+#define FORWARD_WM_KEYUP(hwnd,vk,cRepeat,flags,fn) (void)(fn)((hwnd),WM_KEYUP,(WPARAM)(UINT)(vk),MAKELPARAM((cRepeat),(flags)))
+#define FORWARD_WM_KILLFOCUS(hwnd,hwndNewFocus,fn) (void)(fn)((hwnd),WM_KILLFOCUS,(WPARAM)(HWND)(hwndNewFocus),0)
+#define FORWARD_WM_LBUTTONDOWN(hwnd,fDoubleClick,x,y,keyFlags,fn) (void)(fn)((hwnd),(fDoubleClick) ? WM_LBUTTONDBLCLK : WM_LBUTTONDOWN,(WPARAM)(UINT)(keyFlags),MAKELPARAM((x),(y)))
+#define FORWARD_WM_LBUTTONUP(hwnd,x,y,keyFlags,fn) (void)(fn)((hwnd),WM_LBUTTONUP,(WPARAM)(UINT)(keyFlags),MAKELPARAM((x),(y)))
+#define FORWARD_WM_MBUTTONDOWN(hwnd,fDoubleClick,x,y,keyFlags,fn) (void)(fn)((hwnd),(fDoubleClick) ? WM_MBUTTONDBLCLK : WM_MBUTTONDOWN,(WPARAM)(UINT)(keyFlags),MAKELPARAM((x),(y)))
+#define FORWARD_WM_MBUTTONUP(hwnd,x,y,keyFlags,fn) (void)(fn)((hwnd),WM_MBUTTONUP,(WPARAM)(UINT)(keyFlags),MAKELPARAM((x),(y)))
+#define FORWARD_WM_MDIACTIVATE(hwnd,fActive,hwndActivate,hwndDeactivate,fn) (void)(fn)(hwnd,WM_MDIACTIVATE,(WPARAM)(hwndDeactivate),(LPARAM)(hwndActivate))
+#define FORWARD_WM_MDICASCADE(hwnd,cmd,fn) (BOOL)(DWORD)(fn)((hwnd),WM_MDICASCADE,(WPARAM)(cmd),0)
+#define FORWARD_WM_MDICREATE(hwnd,lpmcs,fn) (HWND)(UINT)(DWORD)(fn)((hwnd),WM_MDICREATE,0,(LPARAM)(LPMDICREATESTRUCT)(lpmcs))
+#define FORWARD_WM_MDIDESTROY(hwnd,hwndDestroy,fn) (void)(fn)((hwnd),WM_MDIDESTROY,(WPARAM)(hwndDestroy),0)
+#define FORWARD_WM_MDIGETACTIVE(hwnd,fn) (HWND)(UINT)(DWORD)(fn)((hwnd),WM_MDIGETACTIVE,0,0)
+#define FORWARD_WM_MDIICONARRANGE(hwnd,fn) (void)(fn)((hwnd),WM_MDIICONARRANGE,0,0)
+#define FORWARD_WM_MDIMAXIMIZE(hwnd,hwndMaximize,fn) (void)(fn)((hwnd),WM_MDIMAXIMIZE,(WPARAM)(hwndMaximize),0)
+#define FORWARD_WM_MDINEXT(hwnd,hwndCur,fPrev,fn) (HWND)(UINT)(DWORD)(fn)((hwnd),WM_MDINEXT,(WPARAM)(hwndCur),(LPARAM)(fPrev))
+#define FORWARD_WM_MDIRESTORE(hwnd,hwndRestore,fn) (void)(fn)((hwnd),WM_MDIRESTORE,(WPARAM)(hwndRestore),0)
+#define FORWARD_WM_MDISETMENU(hwnd,fRefresh,hmenuFrame,hmenuWindow,fn) (HMENU)(UINT)(DWORD)(fn)((hwnd),WM_MDISETMENU,(WPARAM)((fRefresh) ? (hmenuFrame) : 0),(LPARAM)(hmenuWindow))
+#define FORWARD_WM_MDITILE(hwnd,cmd,fn) (BOOL)(DWORD)(fn)((hwnd),WM_MDITILE,(WPARAM)(cmd),0)
+#define FORWARD_WM_MEASUREITEM(hwnd,lpMeasureItem,fn) (void)(fn)((hwnd),WM_MEASUREITEM,(WPARAM)(((MEASUREITEMSTRUCT*)lpMeasureItem)->CtlID),(LPARAM)(MEASUREITEMSTRUCT*)(lpMeasureItem))
+#define FORWARD_WM_MENUCHAR(hwnd,ch,flags,hmenu,fn) (DWORD)(fn)((hwnd),WM_MENUCHAR,MAKEWPARAM(flags,(WORD)(ch)),(LPARAM)(HMENU)(hmenu))
+#define FORWARD_WM_MENUSELECT(hwnd,hmenu,item,hmenuPopup,flags,fn) (void)(fn)((hwnd),WM_MENUSELECT,MAKEWPARAM((item),(flags)),(LPARAM)(HMENU)((hmenu) ? (hmenu) : (hmenuPopup)))
+#define FORWARD_WM_MOUSEACTIVATE(hwnd,hwndTopLevel,codeHitTest,msg,fn) (int)(DWORD)(fn)((hwnd),WM_MOUSEACTIVATE,(WPARAM)(HWND)(hwndTopLevel),MAKELPARAM((codeHitTest),(msg)))
+#define FORWARD_WM_MOUSEMOVE(hwnd,x,y,keyFlags,fn) (void)(fn)((hwnd),WM_MOUSEMOVE,(WPARAM)(UINT)(keyFlags),MAKELPARAM((x),(y)))
+#define FORWARD_WM_MOVE(hwnd,x,y,fn) (void)(fn)((hwnd),WM_MOVE,0,MAKELPARAM((x),(y)))
+#define FORWARD_WM_NCACTIVATE(hwnd,fActive,hwndActDeact,fMinimized,fn) (BOOL)(DWORD)(fn)((hwnd),WM_NCACTIVATE,(WPARAM)(BOOL)(fActive),0)
+#define FORWARD_WM_NCCALCSIZE(hwnd,fCalcValidRects,lpcsp,fn) (UINT)(DWORD)(fn)((hwnd),WM_NCCALCSIZE,0,(LPARAM)(NCCALCSIZE_PARAMS*)(lpcsp))
+#define FORWARD_WM_NCCREATE(hwnd,lpCreateStruct,fn) (BOOL)(DWORD)(fn)((hwnd),WM_NCCREATE,0,(LPARAM)(LPCREATESTRUCT)(lpCreateStruct))
+#define FORWARD_WM_NCDESTROY(hwnd,fn) (void)(fn)((hwnd),WM_NCDESTROY,0,0)
+#define FORWARD_WM_NCHITTEST(hwnd,x,y,fn) (UINT)(DWORD)(fn)((hwnd),WM_NCHITTEST,0,MAKELPARAM((x),(y)))
+#define FORWARD_WM_NCLBUTTONDOWN(hwnd,fDoubleClick,x,y,codeHitTest,fn) (void)(fn)((hwnd),(fDoubleClick) ? WM_NCLBUTTONDBLCLK : WM_NCLBUTTONDOWN,(WPARAM)(UINT)(codeHitTest),MAKELPARAM((x),(y)))
+#define FORWARD_WM_NCLBUTTONUP(hwnd,x,y,codeHitTest,fn) (void)(fn)((hwnd),WM_NCLBUTTONUP,(WPARAM)(UINT)(codeHitTest),MAKELPARAM((x),(y)))
+#define FORWARD_WM_NCMBUTTONDOWN(hwnd,fDoubleClick,x,y,codeHitTest,fn) (void)(fn)((hwnd),(fDoubleClick) ? WM_NCMBUTTONDBLCLK : WM_NCMBUTTONDOWN,(WPARAM)(UINT)(codeHitTest),MAKELPARAM((x),(y)) )
+#define FORWARD_WM_NCMBUTTONUP(hwnd,x,y,codeHitTest,fn) (void)(fn)((hwnd),WM_NCMBUTTONUP,(WPARAM)(UINT)(codeHitTest),MAKELPARAM((x),(y)) )
+#define FORWARD_WM_NCMOUSEMOVE(hwnd,x,y,codeHitTest,fn) (void)(fn)((hwnd),WM_NCMOUSEMOVE,(WPARAM)(UINT)(codeHitTest),MAKELPARAM((x),(y)))
+#define FORWARD_WM_NCPAINT(hwnd,hrgn,fn) (void)(fn)((hwnd),WM_NCPAINT,(WPARAM)(HRGN)(hrgn),0)
+#define FORWARD_WM_NCRBUTTONDOWN(hwnd,fDoubleClick,x,y,codeHitTest,fn) (void)(fn)((hwnd),(fDoubleClick) ? WM_NCRBUTTONDBLCLK : WM_NCRBUTTONDOWN,(WPARAM)(UINT)(codeHitTest),MAKELPARAM((x),(y)) )
+#define FORWARD_WM_NCRBUTTONUP(hwnd,x,y,codeHitTest,fn) (void)(fn)((hwnd),WM_NCRBUTTONUP,(WPARAM)(UINT)(codeHitTest),MAKELPARAM((x),(y)) )
+#define FORWARD_WM_NEXTDLGCTL(hwnd,hwndSetFocus,fNext,fn) (HWND)(UINT)(DWORD)(fn)((hwnd),WM_NEXTDLGCTL,(WPARAM)(HWND)(hwndSetFocus),(LPARAM)(fNext))
+#define FORWARD_WM_PAINT(hwnd,fn) (void)(fn)((hwnd),WM_PAINT,0,0)
+#define FORWARD_WM_PAINTCLIPBOARD(hwnd,hwndCBViewer,lpPaintStruct,fn) (void)(fn)((hwnd),WM_PAINTCLIPBOARD,(WPARAM)(HWND)(hwndCBViewer),(LPARAM)(LPPAINTSTRUCT)(lpPaintStruct))
+#define FORWARD_WM_PALETTECHANGED(hwnd,hwndPaletteChange,fn) (void)(fn)((hwnd),WM_PALETTECHANGED,(WPARAM)(HWND)(hwndPaletteChange),0)
+#define FORWARD_WM_PALETTEISCHANGING(hwnd,hwndPaletteChange,fn) (void)(fn)((hwnd),WM_PALETTEISCHANGING,(WPARAM)(HWND)(hwndPaletteChange),0)
+#define FORWARD_WM_PARENTNOTIFY(hwnd,msg,hwndChild,idChild,fn) (void)(fn)((hwnd),WM_PARENTNOTIFY,MAKEWPARAM(msg,idChild),(LPARAM)(hwndChild))
+#define FORWARD_WM_PASTE(hwnd,fn) (void)(fn)((hwnd),WM_PASTE,0,0)
+#define FORWARD_WM_POWER(hwnd,code,fn) (void)(fn)((hwnd),WM_POWER,(WPARAM)(int)(code),0)
+#define FORWARD_WM_QUERYDRAGICON(hwnd,fn) (HICON)(UINT)(DWORD)(fn)((hwnd),WM_QUERYDRAGICON,0,0)
+#define FORWARD_WM_QUERYENDSESSION(hwnd,fn) (BOOL)(DWORD)(fn)((hwnd),WM_QUERYENDSESSION,0,0)
+#define FORWARD_WM_QUERYNEWPALETTE(hwnd,fn) (BOOL)(DWORD)(fn)((hwnd),WM_QUERYNEWPALETTE,0,0)
+#define FORWARD_WM_QUERYOPEN(hwnd,fn) (BOOL)(DWORD)(fn)((hwnd),WM_QUERYOPEN,0,0)
+#define FORWARD_WM_QUEUESYNC(hwnd,fn) (void)(fn)((hwnd),WM_QUEUESYNC,0,0)
+#define FORWARD_WM_QUIT(hwnd,exitCode,fn) (void)(fn)((hwnd),WM_QUIT,(WPARAM)(exitCode),0)
+#define FORWARD_WM_RBUTTONDOWN(hwnd,fDoubleClick,x,y,keyFlags,fn) (void)(fn)((hwnd),(fDoubleClick) ? WM_RBUTTONDBLCLK : WM_RBUTTONDOWN,(WPARAM)(UINT)(keyFlags),MAKELPARAM((x),(y)))
+#define FORWARD_WM_RBUTTONUP(hwnd,x,y,keyFlags,fn) (void)(fn)((hwnd),WM_RBUTTONUP,(WPARAM)(UINT)(keyFlags),MAKELPARAM((x),(y)))
+#define FORWARD_WM_RENDERALLFORMATS(hwnd,fn) (void)(fn)((hwnd),WM_RENDERALLFORMATS,0,0)
+#define FORWARD_WM_RENDERFORMAT(hwnd,fmt,fn) (HANDLE)(UINT)(DWORD)(fn)((hwnd),WM_RENDERFORMAT,(WPARAM)(UINT)(fmt),0)
+#define FORWARD_WM_SETCURSOR(hwnd,hwndCursor,codeHitTest,msg,fn) (BOOL)(DWORD)(fn)((hwnd),WM_SETCURSOR,(WPARAM)(HWND)(hwndCursor),MAKELPARAM((codeHitTest),(msg)))
+#define FORWARD_WM_SETFOCUS(hwnd,hwndOldFocus,fn) (void)(fn)((hwnd),WM_SETFOCUS,(WPARAM)(HWND)(hwndOldFocus),0)
+#define FORWARD_WM_SETFONT(hwnd,hfont,fRedraw,fn) (void)(fn)((hwnd),WM_SETFONT,(WPARAM)(HFONT)(hfont),(LPARAM)(BOOL)(fRedraw))
+#define FORWARD_WM_SETREDRAW(hwnd,fRedraw,fn) (void)(fn)((hwnd),WM_SETREDRAW,(WPARAM)(BOOL)(fRedraw),0)
+#define FORWARD_WM_SETTEXT(hwnd,lpszText,fn) (void)(fn)((hwnd),WM_SETTEXT,0,(LPARAM)(LPCTSTR)(lpszText))
+#define FORWARD_WM_SHOWWINDOW(hwnd,fShow,status,fn) (void)(fn)((hwnd),WM_SHOWWINDOW,(WPARAM)(BOOL)(fShow),(LPARAM)(UINT)(status))
+#define FORWARD_WM_SIZE(hwnd,state,cx,cy,fn) (void)(fn)((hwnd),WM_SIZE,(WPARAM)(UINT)(state),MAKELPARAM((cx),(cy)))
+#define FORWARD_WM_SIZECLIPBOARD(hwnd,hwndCBViewer,lprc,fn) (void)(fn)((hwnd),WM_SIZECLIPBOARD,(WPARAM)(HWND)(hwndCBViewer),(LPARAM)(LPRECT)(lprc))
+#define FORWARD_WM_SPOOLERSTATUS(hwnd,status,cJobInQueue,fn) (void)(fn)((hwnd),WM_SPOOLERSTATUS,(WPARAM)(status),MAKELPARAM((cJobInQueue),0))
+#define FORWARD_WM_SYSCHAR(hwnd,ch,cRepeat,fn) (void)(fn)((hwnd),WM_SYSCHAR,(WPARAM)(TCHAR)(ch),MAKELPARAM((cRepeat),0))
+#define FORWARD_WM_SYSCOLORCHANGE(hwnd,fn) (void)(fn)((hwnd),WM_SYSCOLORCHANGE,0,0)
+#define FORWARD_WM_SYSCOMMAND(hwnd,cmd,x,y,fn) (void)(fn)((hwnd),WM_SYSCOMMAND,(WPARAM)(UINT)(cmd),MAKELPARAM((x),(y)))
+#define FORWARD_WM_SYSDEADCHAR(hwnd,ch,cRepeat,fn) (void)(fn)((hwnd),WM_SYSDEADCHAR,(WPARAM)(TCHAR)(ch),MAKELPARAM((cRepeat),0))
+#define FORWARD_WM_SYSKEYDOWN(hwnd,vk,cRepeat,flags,fn) (void)(fn)((hwnd),WM_SYSKEYDOWN,(WPARAM)(UINT)(vk),MAKELPARAM((cRepeat),(flags)))
+#define FORWARD_WM_SYSKEYUP(hwnd,vk,cRepeat,flags,fn) (void)(fn)((hwnd),WM_SYSKEYUP,(WPARAM)(UINT)(vk),MAKELPARAM((cRepeat),(flags)))
+#define FORWARD_WM_SYSTEMERROR(hwnd,errCode,fn) 0
+#define FORWARD_WM_TIMECHANGE(hwnd,fn) (void)(fn)((hwnd),WM_TIMECHANGE,0,0)
+#define FORWARD_WM_TIMER(hwnd,id,fn) (void)(fn)((hwnd),WM_TIMER,(WPARAM)(UINT)(id),0)
+#define FORWARD_WM_UNDO(hwnd,fn) (void)(fn)((hwnd),WM_UNDO,0,0)
+#define FORWARD_WM_VKEYTOITEM(hwnd,vk,hwndListBox,iCaret,fn) (int)(DWORD)(fn)((hwnd),WM_VKEYTOITEM,MAKEWPARAM((vk),(iCaret)),(LPARAM)(hwndListBox))
+#define FORWARD_WM_VSCROLL(hwnd,hwndCtl,code,pos,fn) (void)(fn)((hwnd),WM_VSCROLL,MAKEWPARAM((UINT)(int)(code),(UINT)(int)(pos)),(LPARAM)(HWND)(hwndCtl))
+#define FORWARD_WM_VSCROLLCLIPBOARD(hwnd,hwndCBViewer,code,pos,fn) (void)(fn)((hwnd),WM_VSCROLLCLIPBOARD,(WPARAM)(HWND)(hwndCBViewer),MAKELPARAM((code),(pos)))
+#define FORWARD_WM_WINDOWPOSCHANGED(hwnd,lpwpos,fn) (void)(fn)((hwnd),WM_WINDOWPOSCHANGED,0,(LPARAM)(const LPWINDOWPOS)(lpwpos))
+#define FORWARD_WM_WINDOWPOSCHANGING(hwnd,lpwpos,fn) (BOOL)(DWORD)(fn)((hwnd),WM_WINDOWPOSCHANGING,0,(LPARAM)(LPWINDOWPOS)(lpwpos))
+#define FORWARD_WM_WININICHANGE(hwnd,lpszSectionName,fn) (void)(fn)((hwnd),WM_WININICHANGE,0,(LPARAM)(LPCTSTR)(lpszSectionName))
+#define GET_EM_LINESCROLL_MPS(vert,horz) (WPARAM)horz,(LONG)vert
+#define GET_EM_SETSEL_END(wp,lp) (lp)
+#define GET_EM_SETSEL_MPS(iStart,iEnd) (WPARAM)(iStart),(LONG)(iEnd)
+#define GET_EM_SETSEL_START(wp,lp) (INT)(wp)
+#define GET_LPARAM(wp,lp) (lp)
+#define GET_WM_ACTIVATE_FMINIMIZED(wp,lp) (BOOL)HIWORD(wp)
+#define GET_WM_ACTIVATE_HWND(wp,lp) (HWND)(lp)
+#define GET_WM_ACTIVATE_MPS(s,fmin,hwnd) (WPARAM)MAKELONG((s),(fmin)),(LONG)(hwnd)
+#define GET_WM_ACTIVATE_STATE(wp,lp) LOWORD(wp)
+#define GET_WM_CHANGECBCHAIN_HWNDNEXT(wp,lp) (HWND)(lp)
+#define GET_WM_CHARTOITEM_CHAR(wp,lp) (TCHAR)LOWORD(wp)
+#define GET_WM_CHARTOITEM_HWND(wp,lp) (HWND)(lp)
+#define GET_WM_CHARTOITEM_MPS(ch,pos,hwnd) (WPARAM)MAKELONG((pos),(ch)),(LONG)(hwnd)
+#define GET_WM_CHARTOITEM_POS(wp,lp) HIWORD(wp)
+#define GET_WM_COMMAND_CMD(wp,lp) HIWORD(wp)
+#define GET_WM_COMMAND_HWND(wp,lp) (HWND)(lp)
+#define GET_WM_COMMAND_ID(wp,lp) LOWORD(wp)
+#define GET_WM_COMMAND_MPS(id,hwnd,cmd) (WPARAM)MAKELONG(id,cmd),(LONG)(hwnd)
+#define GET_WM_CTLCOLOR_HDC(wp,lp,msg) (HDC)(wp)
+#define GET_WM_CTLCOLOR_HWND(wp,lp,msg) (HWND)(lp)
+#define GET_WM_CTLCOLOR_MPS(hdc,hwnd,type) (WPARAM)(hdc),(LONG)(hwnd)
+#define GET_WM_CTLCOLOR_MSG(type) (WORD)(WM_CTLCOLORMSGBOX+(type))
+#define GET_WM_CTLCOLOR_TYPE(wp,lp,msg) (WORD)(msg - WM_CTLCOLORMSGBOX)
+#define GET_WM_HSCROLL_CODE(wp,lp) LOWORD(wp)
+#define GET_WM_HSCROLL_HWND(wp,lp) (HWND)(lp)
+#define GET_WM_HSCROLL_MPS(code,pos,hwnd) (WPARAM)MAKELONG(code,pos),(LONG)(hwnd)
+#define GET_WM_HSCROLL_POS(wp,lp) HIWORD(wp)
+#define GET_WM_MDIACTIVATE_FACTIVATE(hwnd,wp,lp) (lp == (LONG)hwnd)
+#define GET_WM_MDIACTIVATE_HWNDACTIVATE(wp,lp) (HWND)(lp)
+#define GET_WM_MDIACTIVATE_HWNDDEACT(wp,lp) (HWND)(wp)
+#define GET_WM_MDIACTIVATE_MPS(f,hwndD,hwndA) (WPARAM)(hwndA),0
+#define GET_WM_MDISETMENU_MPS(hmenuF,hmenuW) (WPARAM)hmenuF,(LONG)hmenuW
+#define GET_WM_MENUCHAR_CHAR(wp,lp) (TCHAR)LOWORD(wp)
+#define GET_WM_MENUCHAR_FMENU(wp,lp) (BOOL)HIWORD(wp)
+#define GET_WM_MENUCHAR_HMENU(wp,lp) (HMENU)(lp)
+#define GET_WM_MENUCHAR_MPS(ch,hmenu,f) (WPARAM)MAKELONG(ch,f),(LONG)(hmenu)
+#define GET_WM_MENUSELECT_CMD(wp,lp) LOWORD(wp)
+#define GET_WM_MENUSELECT_FLAGS(wp,lp) (UINT)(int)(short)HIWORD(wp)
+#define GET_WM_MENUSELECT_HMENU(wp,lp) (HMENU)(lp)
+#define GET_WM_MENUSELECT_MPS(cmd,f,hmenu) (WPARAM)MAKELONG(cmd,f),(LONG)(hmenu)
+#define GET_WM_PARENTNOTIFY2_MPS(msg,x,y) (WPARAM)MAKELONG(0,msg),MAKELONG(x,y)
+#define GET_WM_PARENTNOTIFY_HWNDCHILD(wp,lp) (HWND)(lp)
+#define GET_WM_PARENTNOTIFY_ID(wp,lp) HIWORD(wp)
+#define GET_WM_PARENTNOTIFY_MPS(msg,id,hwnd) (WPARAM)MAKELONG(id,msg),(LONG)(hwnd)
+#define GET_WM_PARENTNOTIFY_MSG(wp,lp) LOWORD(wp)
+#define GET_WM_PARENTNOTIFY_X(wp,lp) (int)(short)LOWORD(lp)
+#define GET_WM_PARENTNOTIFY_Y(wp,lp) (int)(short)HIWORD(lp)
+#define GET_WM_VKEYTOITEM_CODE(wp,lp) (int)(short)LOWORD(wp)
+#define GET_WM_VKEYTOITEM_HWND(wp,lp) (HWND)(lp)
+#define GET_WM_VKEYTOITEM_ITEM(wp,lp) HIWORD(wp)
+#define GET_WM_VKEYTOITEM_MPS(code,item,hwnd) (WPARAM)MAKELONG(item,code),(LONG)(hwnd)
+#define GET_WM_VSCROLL_CODE(wp,lp) LOWORD(wp)
+#define GET_WM_VSCROLL_HWND(wp,lp) (HWND)(lp)
+#define GET_WM_VSCROLL_MPS(code,pos,hwnd) (WPARAM)MAKELONG(code,pos),(LONG)(hwnd)
+#define GET_WM_VSCROLL_POS(wp,lp) HIWORD(wp)
+#define GET_WPARAM(wp,lp) (wp)
+#define GET_X_LPARAM(lp) ((int)(short)LOWORD(lp))
+#define GET_Y_LPARAM(lp) ((int)(short)HIWORD(lp))
+#define GetFirstChild(hwnd) GetTopWindow(hwnd)
+#define GetFirstSibling(hwnd) GetWindow(hwnd,GW_HWNDFIRST)
+#define GetInstanceModule(hInstance) (HMODULE)(hInstance)
+#define GetLastSibling(hwnd) GetWindow(hwnd,GW_HWNDLAST)
+#define GetNextSibling(hwnd) GetWindow(hwnd,GW_HWNDNEXT)
+#define GetPrevSibling(hwnd) GetWindow(hwnd,GW_HWNDPREV)
+#define GetStockBrush(i) ((HBRUSH)GetStockObject(i))
+#define GetStockFont(i) ((HFONT)GetStockObject(i))
+#define GetStockPen(i) ((HPEN)GetStockObject(i))
+#define GetWindowExStyle(hwnd) ((DWORD)GetWindowLong(hwnd,GWL_EXSTYLE))
+#define GetWindowFont(hwnd) FORWARD_WM_GETFONT((hwnd),SNDMSG)
+#define GetWindowID(hwnd) GetDlgCtrlID(hwnd)
+#define GetWindowInstance(hwnd) ((HMODULE)GetWindowLong(hwnd,GWL_HINSTANCE))
+#define GetWindowOwner(hwnd) GetWindow(hwnd,GW_OWNER)
+#define GetWindowStyle(hwnd) ((DWORD)GetWindowLong(hwnd,GWL_STYLE))
+#define GlobalAllocPtr(flags,cb) (GlobalLock(GlobalAlloc((flags),(cb))))
+#define GlobalFreePtr(lp) (GlobalUnlockPtr(lp),(BOOL)GlobalFree(GlobalPtrHandle(lp)))
+#define GlobalLockPtr(lp) ((BOOL)GlobalLock(GlobalPtrHandle(lp)))
+#define GlobalPtrHandle(lp) ((HGLOBAL)GlobalHandle(lp))
+#define GlobalReAllocPtr(lp,cbNew,flags) (GlobalUnlockPtr(lp),GlobalLock(GlobalReAlloc(GlobalPtrHandle(lp) ,(cbNew),(flags))))
+#define GlobalUnlockPtr(lp) GlobalUnlock(GlobalPtrHandle(lp))
+#define HANDLE_MSG(hwnd,message,fn) case (message): return HANDLE_##message((hwnd),(wParam),(lParam),(fn))
+#define HANDLE_WM_ACTIVATE(hwnd,wParam,lParam,fn) ((fn)((hwnd),(UINT)LOWORD(wParam),(HWND)(lParam),(BOOL)HIWORD(wParam)),0)
+#define HANDLE_WM_ACTIVATEAPP(hwnd,wParam,lParam,fn) ((fn)((hwnd),(BOOL)(wParam),(DWORD)(lParam)),0)
+#define HANDLE_WM_ASKCBFORMATNAME(hwnd,wParam,lParam,fn) ((fn)((hwnd),(int)(wParam),(LPTSTR)(lParam)),0)
+#define HANDLE_WM_CANCELMODE(hwnd,wParam,lParam,fn) ((fn)(hwnd),0)
+#define HANDLE_WM_CHANGECBCHAIN(hwnd,wParam,lParam,fn) ((fn)((hwnd),(HWND)(wParam),(HWND)(lParam)),0)
+#define HANDLE_WM_CHAR(hwnd,wParam,lParam,fn) ((fn)((hwnd),(TCHAR)(wParam),(int)(short)LOWORD(lParam)),0)
+#define HANDLE_WM_CHARTOITEM(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(int)(fn)((hwnd),(UINT)LOWORD(wParam),(HWND)(lParam),(int)(short)HIWORD(wParam))
+#define HANDLE_WM_CHILDACTIVATE(hwnd,wParam,lParam,fn) ((fn)(hwnd),0)
+#define HANDLE_WM_CLEAR(hwnd,wParam,lParam,fn) ((fn)(hwnd),0)
+#define HANDLE_WM_CLOSE(hwnd,wParam,lParam,fn) ((fn)(hwnd),0)
+#define HANDLE_WM_COMMAND(hwnd,wParam,lParam,fn) ((fn)((hwnd),(int)(LOWORD(wParam)),(HWND)(lParam),(UINT)HIWORD(wParam)),0)
+#define HANDLE_WM_COMMNOTIFY(hwnd,wParam,lParam,fn) ((fn)((hwnd),(int)(wParam),(UINT)LOWORD(lParam)),0)
+#define HANDLE_WM_COMPACTING(hwnd,wParam,lParam,fn) ((fn)((hwnd),(UINT)(wParam)),0)
+#define HANDLE_WM_COMPAREITEM(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(int)(fn)((hwnd),(const COMPAREITEMSTRUCT*)(lParam))
+#define HANDLE_WM_COPY(hwnd,wParam,lParam,fn) ((fn)(hwnd),0)
+#define HANDLE_WM_CREATE(hwnd,wParam,lParam,fn) ((fn)((hwnd),(LPCREATESTRUCT)(lParam)) ? 0 : (LRESULT)-1L)
+#define HANDLE_WM_CTLCOLORBTN(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(UINT)(HBRUSH)(fn)((hwnd),(HDC)(wParam),(HWND)(lParam),CTLCOLOR_BTN)
+#define HANDLE_WM_CTLCOLORDLG(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(UINT)(HBRUSH)(fn)((hwnd),(HDC)(wParam),(HWND)(lParam),CTLCOLOR_DLG)
+#define HANDLE_WM_CTLCOLOREDIT(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(UINT)(HBRUSH)(fn)((hwnd),(HDC)(wParam),(HWND)(lParam),CTLCOLOR_EDIT)
+#define HANDLE_WM_CTLCOLORLISTBOX(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(UINT)(HBRUSH)(fn)((hwnd),(HDC)(wParam),(HWND)(lParam),CTLCOLOR_LISTBOX)
+#define HANDLE_WM_CTLCOLORMSGBOX(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(UINT)(HBRUSH)(fn)((hwnd),(HDC)(wParam),(HWND)(lParam),CTLCOLOR_MSGBOX)
+#define HANDLE_WM_CTLCOLORSCROLLBAR(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(UINT)(HBRUSH)(fn)((hwnd),(HDC)(wParam),(HWND)(lParam),CTLCOLOR_SCROLLBAR)
+#define HANDLE_WM_CTLCOLORSTATIC(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(UINT)(HBRUSH)(fn)((hwnd),(HDC)(wParam),(HWND)(lParam),CTLCOLOR_STATIC)
+#define HANDLE_WM_CUT(hwnd,wParam,lParam,fn) ((fn)(hwnd),0)
+#define HANDLE_WM_DEADCHAR(hwnd,wParam,lParam,fn) ((fn)((hwnd),(TCHAR)(wParam),(int)(short)LOWORD(lParam)),0)
+#define HANDLE_WM_DELETEITEM(hwnd,wParam,lParam,fn) ((fn)((hwnd),(const DELETEITEMSTRUCT*)(lParam)),0)
+#define HANDLE_WM_DESTROY(hwnd,wParam,lParam,fn) ((fn)(hwnd),0)
+#define HANDLE_WM_DESTROYCLIPBOARD(hwnd,wParam,lParam,fn) ((fn)(hwnd),0)
+#define HANDLE_WM_DEVMODECHANGE(hwnd,wParam,lParam,fn) ((fn)((hwnd),(LPCTSTR)(lParam)),0)
+#define HANDLE_WM_DRAWCLIPBOARD(hwnd,wParam,lParam,fn) ((fn)(hwnd),0)
+#define HANDLE_WM_DRAWITEM(hwnd,wParam,lParam,fn) ((fn)((hwnd),(const DRAWITEMSTRUCT*)(lParam)),0)
+#define HANDLE_WM_DROPFILES(hwnd,wParam,lParam,fn) ((fn)((hwnd),(HDROP)(wParam)),0)
+#define HANDLE_WM_ENABLE(hwnd,wParam,lParam,fn) ((fn)((hwnd),(BOOL)(wParam)),0)
+#define HANDLE_WM_ENDSESSION(hwnd,wParam,lParam,fn) ((fn)((hwnd),(BOOL)(wParam)),0)
+#define HANDLE_WM_ENTERIDLE(hwnd,wParam,lParam,fn) ((fn)((hwnd),(UINT)(wParam),(HWND)(lParam)),0)
+#define HANDLE_WM_ERASEBKGND(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(BOOL)(fn)((hwnd),(HDC)(wParam))
+#define HANDLE_WM_FONTCHANGE(hwnd,wParam,lParam,fn) ((fn)(hwnd),0)
+#define HANDLE_WM_GETDLGCODE(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(UINT)(fn)(hwnd,(LPMSG)(lParam))
+#define HANDLE_WM_GETFONT(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(UINT)(HFONT)(fn)(hwnd)
+#define HANDLE_WM_GETMINMAXINFO(hwnd,wParam,lParam,fn) ((fn)((hwnd),(LPMINMAXINFO)(lParam)),0)
+#define HANDLE_WM_GETTEXT(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(int)(fn)((hwnd),(int)(wParam),(LPTSTR)(lParam))
+#define HANDLE_WM_GETTEXTLENGTH(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(int)(fn)(hwnd)
+#define HANDLE_WM_HSCROLL(hwnd,wParam,lParam,fn) ((fn)((hwnd),(HWND)(lParam),(UINT)(LOWORD(wParam)),(int)(short)HIWORD(wParam)),0)
+#define HANDLE_WM_HSCROLLCLIPBOARD(hwnd,wParam,lParam,fn) ((fn)((hwnd),(HWND)(wParam),(UINT)LOWORD(lParam),(int)(short)HIWORD(lParam)),0)
+#define HANDLE_WM_ICONERASEBKGND(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(BOOL)(fn)((hwnd),(HDC)(wParam))
+#define HANDLE_WM_INITDIALOG(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(UINT)(BOOL)(fn)((hwnd),(HWND)(wParam),lParam)
+#define HANDLE_WM_INITMENU(hwnd,wParam,lParam,fn) ((fn)((hwnd),(HMENU)(wParam)),0)
+#define HANDLE_WM_INITMENUPOPUP(hwnd,wParam,lParam,fn) ((fn)((hwnd),(HMENU)(wParam),(UINT)LOWORD(lParam),(BOOL)HIWORD(lParam)),0)
+#define HANDLE_WM_KEYDOWN(hwnd,wParam,lParam,fn) ((fn)((hwnd),(UINT)(wParam),TRUE,(int)(short)LOWORD(lParam),(UINT)HIWORD(lParam)),0)
+#define HANDLE_WM_KEYUP(hwnd,wParam,lParam,fn) ((fn)((hwnd),(UINT)(wParam),FALSE,(int)(short)LOWORD(lParam),(UINT)HIWORD(lParam)),0)
+#define HANDLE_WM_KILLFOCUS(hwnd,wParam,lParam,fn) ((fn)((hwnd),(HWND)(wParam)),0)
+#define HANDLE_WM_LBUTTONDBLCLK(hwnd,wParam,lParam,fn) ((fn)((hwnd),TRUE,(int)(short)LOWORD(lParam),(int)(short)HIWORD(lParam),(UINT)(wParam)),0)
+#define HANDLE_WM_LBUTTONDOWN(hwnd,wParam,lParam,fn) ((fn)((hwnd),FALSE,(int)(short)LOWORD(lParam),(int)(short)HIWORD(lParam),(UINT)(wParam)),0)
+#define HANDLE_WM_LBUTTONUP(hwnd,wParam,lParam,fn) ((fn)((hwnd),(int)(short)LOWORD(lParam),(int)(short)HIWORD(lParam),(UINT)(wParam)),0)
+#define HANDLE_WM_MBUTTONDBLCLK(hwnd,wParam,lParam,fn) ((fn)((hwnd),TRUE,(int)(short)LOWORD(lParam),(int)(short)HIWORD(lParam),(UINT)(wParam)),0)
+#define HANDLE_WM_MBUTTONDOWN(hwnd,wParam,lParam,fn) ((fn)((hwnd),FALSE,(int)(short)LOWORD(lParam),(int)(short)HIWORD(lParam),(UINT)(wParam)),0)
+#define HANDLE_WM_MBUTTONUP(hwnd,wParam,lParam,fn) ((fn)((hwnd),(int)(short)LOWORD(lParam),(int)(short)HIWORD(lParam),(UINT)(wParam)),0)
+#define HANDLE_WM_MDIACTIVATE(hwnd,wParam,lParam,fn) ((fn)((hwnd),(BOOL)(lParam == (LPARAM)hwnd),(HWND)(lParam),(HWND)(wParam)),0)
+#define HANDLE_WM_MDICASCADE(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(fn)((hwnd),(UINT)(wParam))
+#define HANDLE_WM_MDICREATE(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(UINT)(fn)((hwnd),(LPMDICREATESTRUCT)(lParam))
+#define HANDLE_WM_MDIDESTROY(hwnd,wParam,lParam,fn) ((fn)((hwnd),(HWND)(wParam)),0)
+#define HANDLE_WM_MDIGETACTIVE(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(UINT)(fn)(hwnd)
+#define HANDLE_WM_MDIICONARRANGE(hwnd,wParam,lParam,fn) ((fn)(hwnd),0)
+#define HANDLE_WM_MDIMAXIMIZE(hwnd,wParam,lParam,fn) ((fn)((hwnd),(HWND)(wParam)),0)
+#define HANDLE_WM_MDINEXT(hwnd,wParam,lParam,fn) (LRESULT)(HWND)(fn)((hwnd),(HWND)(wParam),(BOOL)lParam)
+#define HANDLE_WM_MDIRESTORE(hwnd,wParam,lParam,fn) ((fn)((hwnd),(HWND)(wParam)),0)
+#define HANDLE_WM_MDISETMENU(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(UINT)(fn)((hwnd),(BOOL)(wParam),(HMENU)(wParam),(HMENU)(lParam))
+#define HANDLE_WM_MDITILE(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(fn)((hwnd),(UINT)(wParam))
+#define HANDLE_WM_MEASUREITEM(hwnd,wParam,lParam,fn) ((fn)((hwnd),(MEASUREITEMSTRUCT*)(lParam)),0)
+#define HANDLE_WM_MENUCHAR(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(fn)((hwnd),(UINT)(LOWORD(wParam)),(UINT)HIWORD(wParam),(HMENU)(lParam))
+#define HANDLE_WM_MENUSELECT(hwnd,wParam,lParam,fn) ((fn)((hwnd),(HMENU)(lParam),(int)(LOWORD(wParam)),(HIWORD(wParam) & MF_POPUP) ? GetSubMenu((HMENU)lParam,LOWORD(wParam)) : 0,(UINT)(((short)HIWORD(wParam) == -1) ? 0xFFFFFFFF : HIWORD(wParam))),0)
+#define HANDLE_WM_MOUSEACTIVATE(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(int)(fn)((hwnd),(HWND)(wParam),(UINT)LOWORD(lParam),(UINT)HIWORD(lParam))
+#define HANDLE_WM_MOUSEMOVE(hwnd,wParam,lParam,fn) ((fn)((hwnd),(int)(short)LOWORD(lParam),(int)(short)HIWORD(lParam),(UINT)(wParam)),0)
+#define HANDLE_WM_MOVE(hwnd,wParam,lParam,fn) ((fn)((hwnd),(int)(short)LOWORD(lParam),(int)(short)HIWORD(lParam)),0)
+#define HANDLE_WM_NCACTIVATE(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(BOOL)(fn)((hwnd),(BOOL)(wParam),0,0)
+#define HANDLE_WM_NCCALCSIZE(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(UINT)(fn)((hwnd),(BOOL)(0),(NCCALCSIZE_PARAMS*)(lParam))
+#define HANDLE_WM_NCCREATE(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(BOOL)(fn)((hwnd),(LPCREATESTRUCT)(lParam))
+#define HANDLE_WM_NCDESTROY(hwnd,wParam,lParam,fn) ((fn)(hwnd),0)
+#define HANDLE_WM_NCHITTEST(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(UINT)(fn)((hwnd),(int)(short)LOWORD(lParam),(int)(short)HIWORD(lParam))
+#define HANDLE_WM_NCLBUTTONDBLCLK(hwnd,wParam,lParam,fn) ((fn)((hwnd),TRUE,(int)(short)LOWORD(lParam),(int)(short)HIWORD(lParam),(UINT)(wParam)),0)
+#define HANDLE_WM_NCLBUTTONDOWN(hwnd,wParam,lParam,fn) ((fn)((hwnd),FALSE,(int)(short)LOWORD(lParam),(int)(short)HIWORD(lParam),(UINT)(wParam)),0)
+#define HANDLE_WM_NCLBUTTONUP(hwnd,wParam,lParam,fn) ((fn)((hwnd),(int)(short)LOWORD(lParam),(int)(short)HIWORD(lParam),(UINT)(wParam)),0)
+#define HANDLE_WM_NCMBUTTONDBLCLK(hwnd,wParam,lParam,fn) ((fn)((hwnd),TRUE,(int)(short)LOWORD(lParam),(int)(short)HIWORD(lParam),(UINT)(wParam)),0)
+#define HANDLE_WM_NCMBUTTONDOWN(hwnd,wParam,lParam,fn) ((fn)((hwnd),FALSE,(int)(short)LOWORD(lParam),(int)(short)HIWORD(lParam),(UINT)(wParam)),0)
+#define HANDLE_WM_NCMBUTTONUP(hwnd,wParam,lParam,fn) ((fn)((hwnd),(int)(short)LOWORD(lParam),(int)(short)HIWORD(lParam),(UINT)(wParam)),0)
+#define HANDLE_WM_NCMOUSEMOVE(hwnd,wParam,lParam,fn) ((fn)((hwnd),(int)(short)LOWORD(lParam),(int)(short)HIWORD(lParam),(UINT)(wParam)),0)
+#define HANDLE_WM_NCPAINT(hwnd,wParam,lParam,fn) ((fn)((hwnd),(HRGN)(wParam)),0)
+#define HANDLE_WM_NCRBUTTONDBLCLK(hwnd,wParam,lParam,fn) ((fn)((hwnd),TRUE,(int)(short)LOWORD(lParam),(int)(short)HIWORD(lParam),(UINT)(wParam)),0)
+#define HANDLE_WM_NCRBUTTONDOWN(hwnd,wParam,lParam,fn) ((fn)((hwnd),FALSE,(int)(short)LOWORD(lParam),(int)(short)HIWORD(lParam),(UINT)(wParam)),0)
+#define HANDLE_WM_NCRBUTTONUP(hwnd,wParam,lParam,fn) ((fn)((hwnd),(int)(short)LOWORD(lParam),(int)(short)HIWORD(lParam),(UINT)(wParam)),0)
+#define HANDLE_WM_NEXTDLGCTL(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(UINT)(HWND)(fn)((hwnd),(HWND)(wParam),(BOOL)(lParam))
+#define HANDLE_WM_PAINT(hwnd,wParam,lParam,fn) ((fn)(hwnd),0)
+#define HANDLE_WM_PAINTCLIPBOARD(hwnd,wParam,lParam,fn) ((fn)((hwnd),(HWND)(wParam),(const LPPAINTSTRUCT)GlobalLock((HGLOBAL)(lParam))),GlobalUnlock((HGLOBAL)(lParam)),0)
+#define HANDLE_WM_PALETTECHANGED(hwnd,wParam,lParam,fn) ((fn)((hwnd),(HWND)(wParam)),0)
+#define HANDLE_WM_PALETTEISCHANGING(hwnd,wParam,lParam,fn) ((fn)((hwnd),(HWND)(wParam)),0)
+#define HANDLE_WM_PARENTNOTIFY(hwnd,wParam,lParam,fn) ((fn)((hwnd),(UINT)LOWORD(wParam),(HWND)(lParam),(UINT)HIWORD(wParam)),0)
+#define HANDLE_WM_PASTE(hwnd,wParam,lParam,fn) ((fn)(hwnd),0)
+#define HANDLE_WM_POWER(hwnd,wParam,lParam,fn) ((fn)((hwnd),(int)(wParam)),0)
+#define HANDLE_WM_QUERYDRAGICON(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(UINT)(fn)(hwnd)
+#define HANDLE_WM_QUERYENDSESSION(hwnd,wParam,lParam,fn) MAKELRESULT((BOOL)(fn)(hwnd),0)
+#define HANDLE_WM_QUERYNEWPALETTE(hwnd,wParam,lParam,fn) MAKELRESULT((BOOL)(fn)(hwnd),0)
+#define HANDLE_WM_QUERYOPEN(hwnd,wParam,lParam,fn) MAKELRESULT((BOOL)(fn)(hwnd),0)
+#define HANDLE_WM_QUEUESYNC(hwnd,wParam,lParam,fn) ((fn)(hwnd),0)
+#define HANDLE_WM_QUIT(hwnd,wParam,lParam,fn) ((fn)((hwnd),(int)(wParam)),0)
+#define HANDLE_WM_RBUTTONDBLCLK(hwnd,wParam,lParam,fn) ((fn)((hwnd),TRUE,(int)(short)LOWORD(lParam),(int)(short)HIWORD(lParam),(UINT)(wParam)),0)
+#define HANDLE_WM_RBUTTONDOWN(hwnd,wParam,lParam,fn) ((fn)((hwnd),FALSE,(int)(short)LOWORD(lParam),(int)(short)HIWORD(lParam),(UINT)(wParam)),0)
+#define HANDLE_WM_RBUTTONUP(hwnd,wParam,lParam,fn) ((fn)((hwnd),(int)(short)LOWORD(lParam),(int)(short)HIWORD(lParam),(UINT)(wParam)),0)
+#define HANDLE_WM_RENDERALLFORMATS(hwnd,wParam,lParam,fn) ((fn)(hwnd),0)
+#define HANDLE_WM_RENDERFORMAT(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(UINT)(HANDLE)(fn)((hwnd),(UINT)(wParam))
+#define HANDLE_WM_SETCURSOR(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(BOOL)(fn)((hwnd),(HWND)(wParam),(UINT)LOWORD(lParam),(UINT)HIWORD(lParam))
+#define HANDLE_WM_SETFOCUS(hwnd,wParam,lParam,fn) ((fn)((hwnd),(HWND)(wParam)),0)
+#define HANDLE_WM_SETFONT(hwnd,wParam,lParam,fn) ((fn)((hwnd),(HFONT)(wParam),(BOOL)(lParam)),0)
+#define HANDLE_WM_SETREDRAW(hwnd,wParam,lParam,fn) ((fn)((hwnd),(BOOL)(wParam)),0)
+#define HANDLE_WM_SETTEXT(hwnd,wParam,lParam,fn) ((fn)((hwnd),(LPCTSTR)(lParam)),0)
+#define HANDLE_WM_SHOWWINDOW(hwnd,wParam,lParam,fn) ((fn)((hwnd),(BOOL)(wParam),(UINT)(lParam)),0)
+#define HANDLE_WM_SIZE(hwnd,wParam,lParam,fn) ((fn)((hwnd),(UINT)(wParam),(int)(short)LOWORD(lParam),(int)(short)HIWORD(lParam)),0)
+#define HANDLE_WM_SIZECLIPBOARD(hwnd,wParam,lParam,fn) ((fn)((hwnd),(HWND)(wParam),(const LPRECT)GlobalLock((HGLOBAL)(lParam))),GlobalUnlock((HGLOBAL)(lParam)),0)
+#define HANDLE_WM_SPOOLERSTATUS(hwnd,wParam,lParam,fn) ((fn)((hwnd),(UINT)(wParam),(int)(short)LOWORD(lParam)),0)
+#define HANDLE_WM_SYSCHAR(hwnd,wParam,lParam,fn) ((fn)((hwnd),(TCHAR)(wParam),(int)(short)LOWORD(lParam)),0)
+#define HANDLE_WM_SYSCOLORCHANGE(hwnd,wParam,lParam,fn) ((fn)(hwnd),0)
+#define HANDLE_WM_SYSCOMMAND(hwnd,wParam,lParam,fn) ((fn)((hwnd),(UINT)(wParam),(int)(short)LOWORD(lParam),(int)(short)HIWORD(lParam)),0)
+#define HANDLE_WM_SYSDEADCHAR(hwnd,wParam,lParam,fn) ((fn)((hwnd),(TCHAR)(wParam),(int)(short)LOWORD(lParam)),0)
+#define HANDLE_WM_SYSKEYDOWN(hwnd,wParam,lParam,fn) ((fn)((hwnd),(UINT)(wParam),TRUE,(int)(short)LOWORD(lParam),(UINT)HIWORD(lParam)),0)
+#define HANDLE_WM_SYSKEYUP(hwnd,wParam,lParam,fn) ((fn)((hwnd),(UINT)(wParam),FALSE,(int)(short)LOWORD(lParam),(UINT)HIWORD(lParam)),0)
+#define HANDLE_WM_SYSTEMERROR(hwnd,wParam,lParam,fn) 0
+#define HANDLE_WM_TIMECHANGE(hwnd,wParam,lParam,fn) ((fn)(hwnd),0)
+#define HANDLE_WM_TIMER(hwnd,wParam,lParam,fn) ((fn)((hwnd),(UINT)(wParam)),0)
+#define HANDLE_WM_UNDO(hwnd,wParam,lParam,fn) ((fn)(hwnd),0)
+#define HANDLE_WM_VKEYTOITEM(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(int)(fn)((hwnd),(UINT)LOWORD(wParam),(HWND)(lParam),(int)(short)HIWORD(wParam))
+#define HANDLE_WM_VSCROLL(hwnd,wParam,lParam,fn) ((fn)((hwnd),(HWND)(lParam),(UINT)(LOWORD(wParam)),(int)(short)HIWORD(wParam)),0)
+#define HANDLE_WM_VSCROLLCLIPBOARD(hwnd,wParam,lParam,fn) ((fn)((hwnd),(HWND)(wParam),(UINT)LOWORD(lParam),(int)(short)HIWORD(lParam)),0)
+#define HANDLE_WM_WINDOWPOSCHANGED(hwnd,wParam,lParam,fn) ((fn)((hwnd),(const LPWINDOWPOS)(lParam)),0)
+#define HANDLE_WM_WINDOWPOSCHANGING(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(BOOL)(fn)((hwnd),(LPWINDOWPOS)(lParam))
+#define HANDLE_WM_WININICHANGE(hwnd,wParam,lParam,fn) ((fn)((hwnd),(LPCTSTR)(lParam)),0)
+#define InsetRect(lprc,dx,dy) InflateRect((lprc),-(dx),-(dy))
+#define IntersectRgn(hrgnResult,hrgnA,hrgnB) CombineRgn(hrgnResult,hrgnA,hrgnB,RGN_AND)
+#define IsLButtonDown() (GetKeyState(VK_LBUTTON) < 0)
+#define IsMButtonDown() (GetKeyState(VK_MBUTTON) < 0)
+#define IsMaximized(hwnd) IsZoomed(hwnd)
+#define IsMinimized(hwnd) IsIconic(hwnd)
+#define IsRButtonDown() (GetKeyState(VK_RBUTTON) < 0)
+#define IsRestored(hwnd) ((GetWindowStyle(hwnd) & (WS_MINIMIZE | WS_MAXIMIZE)) == 0)
+#define ListBox_AddItemData(hwndCtl,data) ((int)(DWORD)SNDMSG((hwndCtl),LB_ADDSTRING,0,(LPARAM)(data)))
+#define ListBox_AddString(hwndCtl,lpsz) ((int)(DWORD)SNDMSG((hwndCtl),LB_ADDSTRING,0,(LPARAM)(LPCTSTR)(lpsz)))
+#define ListBox_DeleteString(hwndCtl,index) ((int)(DWORD)SNDMSG((hwndCtl),LB_DELETESTRING,(WPARAM)(int)(index),0))
+#define ListBox_Dir(hwndCtl,attrs,lpszFileSpec) ((int)(DWORD)SNDMSG((hwndCtl),LB_DIR,(WPARAM)(UINT)(attrs),(LPARAM)(LPCTSTR)(lpszFileSpec)))
+#define ListBox_Enable(hwndCtl,fEnable) EnableWindow((hwndCtl),(fEnable))
+#define ListBox_FindItemData(hwndCtl,indexStart,data) ((int)(DWORD)SNDMSG((hwndCtl),LB_FINDSTRING,(WPARAM)(int)(indexStart),(LPARAM)(data)))
+#define ListBox_FindString(hwndCtl,indexStart,lpszFind) ((int)(DWORD)SNDMSG((hwndCtl),LB_FINDSTRING,(WPARAM)(int)(indexStart),(LPARAM)(LPCTSTR)(lpszFind)))
+#define ListBox_FindStringExact(hwndCtl,indexStart,lpszFind) ((int)(DWORD)SNDMSG((hwndCtl),LB_FINDSTRINGEXACT,(WPARAM)(int)(indexStart),(LPARAM)(LPCTSTR)(lpszFind)))
+#define ListBox_GetCaretIndex(hwndCtl) ((int)(DWORD)SNDMSG((hwndCtl),LB_GETCARETINDEX,0,0))
+#define ListBox_GetCount(hwndCtl) ((int)(DWORD)SNDMSG((hwndCtl),LB_GETCOUNT,0,0))
+#define ListBox_GetCurSel(hwndCtl) ((int)(DWORD)SNDMSG((hwndCtl),LB_GETCURSEL,0,0))
+#define ListBox_GetHorizontalExtent(hwndCtl) ((int)(DWORD)SNDMSG((hwndCtl),LB_GETHORIZONTALEXTENT,0,0))
+#define ListBox_GetItemData(hwndCtl,index) ((LRESULT)(DWORD)SNDMSG((hwndCtl),LB_GETITEMDATA,(WPARAM)(int)(index),0))
+#define ListBox_GetItemHeight(hwndCtl,index) ((int)(DWORD)SNDMSG((hwndCtl),LB_GETITEMHEIGHT,(WPARAM)(int)(index),0))
+#define ListBox_GetItemRect(hwndCtl,index,lprc) ((int)(DWORD)SNDMSG((hwndCtl),LB_GETITEMRECT,(WPARAM)(int)(index),(LPARAM)(RECT*)(lprc)))
+#define ListBox_GetSel(hwndCtl,index) ((int)(DWORD)SNDMSG((hwndCtl),LB_GETSEL,(WPARAM)(int)(index),0))
+#define ListBox_GetSelCount(hwndCtl) ((int)(DWORD)SNDMSG((hwndCtl),LB_GETSELCOUNT,0,0))
+#define ListBox_GetSelItems(hwndCtl,cItems,lpItems) ((int)(DWORD)SNDMSG((hwndCtl),LB_GETSELITEMS,(WPARAM)(int)(cItems),(LPARAM)(int*)(lpItems)))
+#define ListBox_GetText(hwndCtl,index,lpszBuffer) ((int)(DWORD)SNDMSG((hwndCtl),LB_GETTEXT,(WPARAM)(int)(index),(LPARAM)(LPCTSTR)(lpszBuffer)))
+#define ListBox_GetTextLen(hwndCtl,index) ((int)(DWORD)SNDMSG((hwndCtl),LB_GETTEXTLEN,(WPARAM)(int)(index),0))
+#define ListBox_GetTopIndex(hwndCtl) ((int)(DWORD)SNDMSG((hwndCtl),LB_GETTOPINDEX,0,0))
+#define ListBox_InsertItemData(hwndCtl,index,data) ((int)(DWORD)SNDMSG((hwndCtl),LB_INSERTSTRING,(WPARAM)(int)(index),(LPARAM)(data)))
+#define ListBox_InsertString(hwndCtl,index,lpsz) ((int)(DWORD)SNDMSG((hwndCtl),LB_INSERTSTRING,(WPARAM)(int)(index),(LPARAM)(LPCTSTR)(lpsz)))
+#define ListBox_ResetContent(hwndCtl) ((BOOL)(DWORD)SNDMSG((hwndCtl),LB_RESETCONTENT,0,0))
+#define ListBox_SelItemRange(hwndCtl,fSelect,first,last) ((int)(DWORD)SNDMSG((hwndCtl),LB_SELITEMRANGE,(WPARAM)(BOOL)(fSelect),MAKELPARAM((first),(last))))
+#define ListBox_SelectItemData(hwndCtl,indexStart,data) ((int)(DWORD)SNDMSG((hwndCtl),LB_SELECTSTRING,(WPARAM)(int)(indexStart),(LPARAM)(data)))
+#define ListBox_SelectString(hwndCtl,indexStart,lpszFind) ((int)(DWORD)SNDMSG((hwndCtl),LB_SELECTSTRING,(WPARAM)(int)(indexStart),(LPARAM)(LPCTSTR)(lpszFind)))
+#define ListBox_SetCaretIndex(hwndCtl,index) ((int)(DWORD)SNDMSG((hwndCtl),LB_SETCARETINDEX,(WPARAM)(int)(index),0))
+#define ListBox_SetColumnWidth(hwndCtl,cxColumn) ((void)SNDMSG((hwndCtl),LB_SETCOLUMNWIDTH,(WPARAM)(int)(cxColumn),0))
+#define ListBox_SetCurSel(hwndCtl,index) ((int)(DWORD)SNDMSG((hwndCtl),LB_SETCURSEL,(WPARAM)(int)(index),0))
+#define ListBox_SetHorizontalExtent(hwndCtl,cxExtent) ((void)SNDMSG((hwndCtl),LB_SETHORIZONTALEXTENT,(WPARAM)(int)(cxExtent),0))
+#define ListBox_SetItemData(hwndCtl,index,data) ((int)(DWORD)SNDMSG((hwndCtl),LB_SETITEMDATA,(WPARAM)(int)(index),(LPARAM)(data)))
+#define ListBox_SetItemHeight(hwndCtl,index,cy) ((int)(DWORD)SNDMSG((hwndCtl),LB_SETITEMHEIGHT,(WPARAM)(int)(index),MAKELPARAM((cy),0)))
+#define ListBox_SetSel(hwndCtl,fSelect,index) ((int)(DWORD)SNDMSG((hwndCtl),LB_SETSEL,(WPARAM)(BOOL)(fSelect),(LPARAM)(index)))
+#define ListBox_SetTabStops(hwndCtl,cTabs,lpTabs) ((BOOL)(DWORD)SNDMSG((hwndCtl),LB_SETTABSTOPS,(WPARAM)(int)(cTabs),(LPARAM)(int*)(lpTabs)))
+#define ListBox_SetTopIndex(hwndCtl,indexTop) ((int)(DWORD)SNDMSG((hwndCtl),LB_SETTOPINDEX,(WPARAM)(int)(indexTop),0))
+#define MapWindowRect(hwndFrom,hwndTo,lprc) MapWindowPoints((hwndFrom),(hwndTo),(POINT*)(lprc),2)
+#define ScrollBar_Enable(hwndCtl,flags) EnableScrollBar((hwndCtl),SB_CTL,(flags))
+#define ScrollBar_GetPos(hwndCtl) GetScrollPos((hwndCtl),SB_CTL)
+#define ScrollBar_GetRange(hwndCtl,lpposMin,lpposMax) GetScrollRange((hwndCtl),SB_CTL,(lpposMin),(lpposMax))
+#define ScrollBar_SetPos(hwndCtl,pos,fRedraw) SetScrollPos((hwndCtl),SB_CTL,(pos),(fRedraw))
+#define ScrollBar_SetRange(hwndCtl,posMin,posMax,fRedraw) SetScrollRange((hwndCtl),SB_CTL,(posMin),(posMax),(fRedraw))
+#define ScrollBar_Show(hwndCtl,fShow) ShowWindow((hwndCtl),(fShow) ? SW_SHOWNORMAL : SW_HIDE)
+#define SelectBitmap(hdc,hbm) ((HBITMAP)SelectObject((hdc),(HGDIOBJ)(HBITMAP)(hbm)))
+#define SelectBrush(hdc,hbr) ((HBRUSH)SelectObject((hdc),(HGDIOBJ)(HBRUSH)(hbr)))
+#define SelectFont(hdc,hfont) ((HFONT)SelectObject((hdc),(HGDIOBJ)(HFONT)(hfont)))
+#define SelectPen(hdc,hpen) ((HPEN)SelectObject((hdc),(HGDIOBJ)(HPEN)(hpen)))
+#define SetDlgMsgResult(hwnd,msg,result) (( (msg) == WM_CTLCOLORMSGBOX || (msg) == WM_CTLCOLOREDIT || (msg) == WM_CTLCOLORLISTBOX || (msg) == WM_CTLCOLORBTN || (msg) == WM_CTLCOLORDLG || (msg) == WM_CTLCOLORSCROLLBAR || (msg) == WM_CTLCOLORSTATIC || (msg) == WM_COMPAREITEM || (msg) == WM_VKEYTOITEM || (msg) == WM_CHARTOITEM || (msg) == WM_QUERYDRAGICON || (msg) == WM_INITDIALOG ) ? (BOOL)(result) : (SetWindowLong((hwnd),DWL_MSGRESULT,(LPARAM)(LRESULT)(result)),TRUE))
+#define SetWindowFont(hwnd,hfont,fRedraw) FORWARD_WM_SETFONT((hwnd),(hfont),(fRedraw),SNDMSG)
+#define SetWindowRedraw(hwnd,fRedraw) ((void)SNDMSG(hwnd,WM_SETREDRAW,(WPARAM)(BOOL)(fRedraw),0))
+#define Static_Enable(hwndCtl,fEnable) EnableWindow((hwndCtl),(fEnable))
+#define Static_GetIcon(hwndCtl,hIcon) ((HICON)(UINT)(DWORD)SNDMSG((hwndCtl),STM_GETICON,0,0))
+#define Static_GetText(hwndCtl,lpch,cchMax) GetWindowText((hwndCtl),(lpch),(cchMax))
+#define Static_GetTextLength(hwndCtl) GetWindowTextLength(hwndCtl)
+#define Static_SetIcon(hwndCtl,hIcon) ((HICON)(UINT)(DWORD)SNDMSG((hwndCtl),STM_SETICON,(WPARAM)(HICON)(hIcon),0))
+#define Static_SetText(hwndCtl,lpsz) SetWindowText((hwndCtl),(lpsz))
+#define SubclassDialog(hwndDlg,lpfn) ((DLGPROC)SetWindowLong(hwndDlg,DWL_DLGPROC,(LPARAM)(DLGPROC)(lpfn)))
+#define SubclassWindow(hwnd,lpfn) ((WNDPROC)SetWindowLong((hwnd),GWL_WNDPROC,(LPARAM)(WNDPROC)(lpfn)))
+#define SubtractRgn(hrgnResult,hrgnA,hrgnB) CombineRgn(hrgnResult,hrgnA,hrgnB,RGN_DIFF)
+#define UnionRgn(hrgnResult,hrgnA,hrgnB) CombineRgn(hrgnResult,hrgnA,hrgnB,RGN_OR)
+#define XorRgn(hrgnResult,hrgnA,hrgnB) CombineRgn(hrgnResult,hrgnA,hrgnB,RGN_XOR)
+
+/* FAR versions of mem and string functions for porting from old code*/
+#define _ffree      free
+#define _fmalloc    malloc
+#define _frealloc   realloc
+#define _fmsize     _msize
+
+#define _fmemcpy    memcpy
+#define _fmemmove   memmove
+#define _fmemset    memset
+#define _fmemcmp    memcmp
+#define _fmemchr    memchr
+#define _fmemccpy   _memccpy
+#define _fmemicmp   _memicmp
+
+#define _fstrcat    strcat
+#define _fstrchr    strchr
+#define _fstrcmp    strcmp
+#define _fstrcpy    strcpy
+#define _fstrcspn   strcspn
+#define _fstrdup    _strdup
+#define _fstricmp   _stricmp
+#define _fstrlen    strlen
+#define _fstrlwr    _strlwr
+#define _fstrncat   strncat
+#define _fstrncmp   strncmp
+#define _fstrncpy   strncpy
+#define _fstrnicmp  _strnicmp
+#define _fstrnset   _strnset
+#define _fstrpbrk   strpbrk
+#define _fstrrchr   strrchr
+#define _fstrrev    _strrev
+#define _fstrset    _strset
+#define _fstrspn    strspn
+#define _fstrstr    strstr
+#define _fstrtok    strtok
+#define _fstrupr    _strupr
+
+#define hmemcpy MoveMemory
+
+#endif
Index: Daodan/MinGW/include/winerror.h
===================================================================
--- Daodan/MinGW/include/winerror.h	(revision 1046)
+++ Daodan/MinGW/include/winerror.h	(revision 1046)
@@ -0,0 +1,2282 @@
+#ifndef _WINERROR_H
+#define _WINERROR_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#define _HRESULT_TYPEDEF_(_sc) ((HRESULT)_sc)
+
+#define ERROR_SUCCESS 0L
+#define NO_ERROR 0L
+#define ERROR_INVALID_FUNCTION 1L
+#define ERROR_FILE_NOT_FOUND 2L
+#define ERROR_PATH_NOT_FOUND 3L
+#define ERROR_TOO_MANY_OPEN_FILES 4L
+#define ERROR_ACCESS_DENIED 5L
+#define ERROR_INVALID_HANDLE 6L
+#define ERROR_ARENA_TRASHED 7L
+#define ERROR_NOT_ENOUGH_MEMORY 8L
+#define ERROR_INVALID_BLOCK 9L
+#define ERROR_BAD_ENVIRONMENT 10L
+#define ERROR_BAD_FORMAT 11L
+#define ERROR_INVALID_ACCESS 12L
+#define ERROR_INVALID_DATA 13L
+#define ERROR_OUTOFMEMORY 14L
+#define ERROR_INVALID_DRIVE 15L
+#define ERROR_CURRENT_DIRECTORY 16L
+#define ERROR_NOT_SAME_DEVICE 17L
+#define ERROR_NO_MORE_FILES 18L
+#define ERROR_WRITE_PROTECT 19L
+#define ERROR_BAD_UNIT 20L
+#define ERROR_NOT_READY 21L
+#define ERROR_BAD_COMMAND 22L
+#define ERROR_CRC 23L
+#define ERROR_BAD_LENGTH 24L
+#define ERROR_SEEK 25L
+#define ERROR_NOT_DOS_DISK 26L
+#define ERROR_SECTOR_NOT_FOUND 27L
+#define ERROR_OUT_OF_PAPER 28L
+#define ERROR_WRITE_FAULT 29L
+#define ERROR_READ_FAULT 30L
+#define ERROR_GEN_FAILURE 31L
+#define ERROR_SHARING_VIOLATION 32L
+#define ERROR_LOCK_VIOLATION 33L
+#define ERROR_WRONG_DISK 34L
+#define ERROR_SHARING_BUFFER_EXCEEDED 36L
+#define ERROR_HANDLE_EOF 38L
+#define ERROR_HANDLE_DISK_FULL 39L
+#define ERROR_NOT_SUPPORTED 50L
+#define ERROR_REM_NOT_LIST 51L
+#define ERROR_DUP_NAME 52L
+#define ERROR_BAD_NETPATH 53L
+#define ERROR_NETWORK_BUSY 54L
+#define ERROR_DEV_NOT_EXIST 55L
+#define ERROR_TOO_MANY_CMDS 56L
+#define ERROR_ADAP_HDW_ERR 57L
+#define ERROR_BAD_NET_RESP 58L
+#define ERROR_UNEXP_NET_ERR 59L
+#define ERROR_BAD_REM_ADAP 60L
+#define ERROR_PRINTQ_FULL 61L
+#define ERROR_NO_SPOOL_SPACE 62L
+#define ERROR_PRINT_CANCELLED 63L
+#define ERROR_NETNAME_DELETED 64L
+#define ERROR_NETWORK_ACCESS_DENIED 65L
+#define ERROR_BAD_DEV_TYPE 66L
+#define ERROR_BAD_NET_NAME 67L
+#define ERROR_TOO_MANY_NAMES 68L
+#define ERROR_TOO_MANY_SESS 69L
+#define ERROR_SHARING_PAUSED 70L
+#define ERROR_REQ_NOT_ACCEP 71L
+#define ERROR_REDIR_PAUSED 72L
+#define ERROR_FILE_EXISTS 80L
+#define ERROR_CANNOT_MAKE 82L
+#define ERROR_FAIL_I24 83L
+#define ERROR_OUT_OF_STRUCTURES 84L
+#define ERROR_ALREADY_ASSIGNED 85L
+#define ERROR_INVALID_PASSWORD 86L
+#define ERROR_INVALID_PARAMETER 87L
+#define ERROR_NET_WRITE_FAULT 88L
+#define ERROR_NO_PROC_SLOTS 89L
+#define ERROR_TOO_MANY_SEMAPHORES 100L
+#define ERROR_EXCL_SEM_ALREADY_OWNED 101L
+#define ERROR_SEM_IS_SET 102L
+#define ERROR_TOO_MANY_SEM_REQUESTS 103L
+#define ERROR_INVALID_AT_INTERRUPT_TIME 104L
+#define ERROR_SEM_OWNER_DIED 105L
+#define ERROR_SEM_USER_LIMIT 106L
+#define ERROR_DISK_CHANGE 107L
+#define ERROR_DRIVE_LOCKED 108L
+#define ERROR_BROKEN_PIPE 109L
+#define ERROR_OPEN_FAILED 110L
+#define ERROR_BUFFER_OVERFLOW 111L
+#define ERROR_DISK_FULL 112L
+#define ERROR_NO_MORE_SEARCH_HANDLES 113L
+#define ERROR_INVALID_TARGET_HANDLE 114L
+#define ERROR_INVALID_CATEGORY 117L
+#define ERROR_INVALID_VERIFY_SWITCH 118L
+#define ERROR_BAD_DRIVER_LEVEL 119L
+#define ERROR_CALL_NOT_IMPLEMENTED 120L
+#define ERROR_SEM_TIMEOUT 121L
+#define ERROR_INSUFFICIENT_BUFFER 122L
+#define ERROR_INVALID_NAME 123L
+#define ERROR_INVALID_LEVEL 124L
+#define ERROR_NO_VOLUME_LABEL 125L
+#define ERROR_MOD_NOT_FOUND 126L
+#define ERROR_PROC_NOT_FOUND 127L
+#define ERROR_WAIT_NO_CHILDREN 128L
+#define ERROR_CHILD_NOT_COMPLETE 129L
+#define ERROR_DIRECT_ACCESS_HANDLE 130L
+#define ERROR_NEGATIVE_SEEK 131L
+#define ERROR_SEEK_ON_DEVICE 132L
+#define ERROR_IS_JOIN_TARGET 133L
+#define ERROR_IS_JOINED 134L
+#define ERROR_IS_SUBSTED 135L
+#define ERROR_NOT_JOINED 136L
+#define ERROR_NOT_SUBSTED 137L
+#define ERROR_JOIN_TO_JOIN 138L
+#define ERROR_SUBST_TO_SUBST 139L
+#define ERROR_JOIN_TO_SUBST 140L
+#define ERROR_SUBST_TO_JOIN 141L
+#define ERROR_BUSY_DRIVE 142L
+#define ERROR_SAME_DRIVE 143L
+#define ERROR_DIR_NOT_ROOT 144L
+#define ERROR_DIR_NOT_EMPTY 145L
+#define ERROR_IS_SUBST_PATH 146L
+#define ERROR_IS_JOIN_PATH 147L
+#define ERROR_PATH_BUSY 148L
+#define ERROR_IS_SUBST_TARGET 149L
+#define ERROR_SYSTEM_TRACE 150L
+#define ERROR_INVALID_EVENT_COUNT 151L
+#define ERROR_TOO_MANY_MUXWAITERS 152L
+#define ERROR_INVALID_LIST_FORMAT 153L
+#define ERROR_LABEL_TOO_LONG 154L
+#define ERROR_TOO_MANY_TCBS 155L
+#define ERROR_SIGNAL_REFUSED 156L
+#define ERROR_DISCARDED 157L
+#define ERROR_NOT_LOCKED 158L
+#define ERROR_BAD_THREADID_ADDR 159L
+#define ERROR_BAD_ARGUMENTS 160L
+#define ERROR_BAD_PATHNAME 161L
+#define ERROR_SIGNAL_PENDING 162L
+#define ERROR_MAX_THRDS_REACHED 164L
+#define ERROR_LOCK_FAILED 167L
+#define ERROR_BUSY 170L
+#define ERROR_CANCEL_VIOLATION 173L
+#define ERROR_ATOMIC_LOCKS_NOT_SUPPORTED 174L
+#define ERROR_INVALID_SEGMENT_NUMBER 180L
+#define ERROR_INVALID_ORDINAL 182L
+#define ERROR_ALREADY_EXISTS 183L
+#define ERROR_INVALID_FLAG_NUMBER 186L
+#define ERROR_SEM_NOT_FOUND 187L
+#define ERROR_INVALID_STARTING_CODESEG 188L
+#define ERROR_INVALID_STACKSEG 189L
+#define ERROR_INVALID_MODULETYPE 190L
+#define ERROR_INVALID_EXE_SIGNATURE 191L
+#define ERROR_EXE_MARKED_INVALID 192L
+#define ERROR_BAD_EXE_FORMAT 193L
+#define ERROR_ITERATED_DATA_EXCEEDS_64k 194L
+#define ERROR_INVALID_MINALLOCSIZE 195L
+#define ERROR_DYNLINK_FROM_INVALID_RING 196L
+#define ERROR_IOPL_NOT_ENABLED 197L
+#define ERROR_INVALID_SEGDPL 198L
+#define ERROR_AUTODATASEG_EXCEEDS_64k 199L
+#define ERROR_RING2SEG_MUST_BE_MOVABLE 200L
+#define ERROR_RELOC_CHAIN_XEEDS_SEGLIM 201L
+#define ERROR_INFLOOP_IN_RELOC_CHAIN 202L
+#define ERROR_ENVVAR_NOT_FOUND 203L
+#define ERROR_NO_SIGNAL_SENT 205L
+#define ERROR_FILENAME_EXCED_RANGE 206L
+#define ERROR_RING2_STACK_IN_USE 207L
+#define ERROR_META_EXPANSION_TOO_LONG 208L
+#define ERROR_INVALID_SIGNAL_NUMBER 209L
+#define ERROR_THREAD_1_INACTIVE 210L
+#define ERROR_LOCKED 212L
+#define ERROR_TOO_MANY_MODULES 214L
+#define ERROR_NESTING_NOT_ALLOWED 215L
+#define ERROR_EXE_MACHINE_TYPE_MISMATCH 216L
+#define ERROR_EXE_CANNOT_MODIFY_SIGNED_BINARY 217L
+#define ERROR_EXE_CANNOT_MODIFY_STRONG_SIGNED_BINARY 218L
+#define ERROR_BAD_PIPE 230L
+#define ERROR_PIPE_BUSY 231L
+#define ERROR_NO_DATA 232L
+#define ERROR_PIPE_NOT_CONNECTED 233L
+#define ERROR_MORE_DATA 234L
+#define ERROR_VC_DISCONNECTED 240L
+#define ERROR_INVALID_EA_NAME 254L
+#define ERROR_EA_LIST_INCONSISTENT 255L
+#ifndef WAIT_TIMEOUT /* also in winbase.h */
+#define WAIT_TIMEOUT 258L
+#endif
+#define ERROR_NO_MORE_ITEMS 259L
+#define ERROR_CANNOT_COPY 266L
+#define ERROR_DIRECTORY 267L
+#define ERROR_EAS_DIDNT_FIT 275L
+#define ERROR_EA_FILE_CORRUPT 276L
+#define ERROR_EA_TABLE_FULL 277L
+#define ERROR_INVALID_EA_HANDLE 278L
+#define ERROR_EAS_NOT_SUPPORTED 282L
+#define ERROR_NOT_OWNER 288L
+#define ERROR_TOO_MANY_POSTS 298L
+#define ERROR_PARTIAL_COPY 299L
+#define ERROR_OPLOCK_NOT_GRANTED 300L
+#define ERROR_INVALID_OPLOCK_PROTOCOL 301L
+#define ERROR_DISK_TOO_FRAGMENTED 302L
+#define ERROR_DELETE_PENDING 303L
+#define ERROR_MR_MID_NOT_FOUND 317L
+#define ERROR_SCOPE_NOT_FOUND 318L
+#define ERROR_INVALID_ADDRESS 487L
+#define ERROR_ARITHMETIC_OVERFLOW 534L
+#define ERROR_PIPE_CONNECTED 535L
+#define ERROR_PIPE_LISTENING 536L
+#define ERROR_EA_ACCESS_DENIED 994L
+#define ERROR_OPERATION_ABORTED 995L
+#define ERROR_IO_INCOMPLETE 996L
+#define ERROR_IO_PENDING 997L
+#define ERROR_NOACCESS 998L
+#define ERROR_SWAPERROR 999L
+#define ERROR_STACK_OVERFLOW 1001L
+#define ERROR_INVALID_MESSAGE 1002L
+#define ERROR_CAN_NOT_COMPLETE 1003L
+#define ERROR_INVALID_FLAGS 1004L
+#define ERROR_UNRECOGNIZED_VOLUME 1005L
+#define ERROR_FILE_INVALID 1006L
+#define ERROR_FULLSCREEN_MODE 1007L
+#define ERROR_NO_TOKEN 1008L
+#define ERROR_BADDB 1009L
+#define ERROR_BADKEY 1010L
+#define ERROR_CANTOPEN 1011L
+#define ERROR_CANTREAD 1012L
+#define ERROR_CANTWRITE 1013L
+#define ERROR_REGISTRY_RECOVERED 1014L
+#define ERROR_REGISTRY_CORRUPT 1015L
+#define ERROR_REGISTRY_IO_FAILED 1016L
+#define ERROR_NOT_REGISTRY_FILE 1017L
+#define ERROR_KEY_DELETED 1018L
+#define ERROR_NO_LOG_SPACE 1019L
+#define ERROR_KEY_HAS_CHILDREN 1020L
+#define ERROR_CHILD_MUST_BE_VOLATILE 1021L
+#define ERROR_NOTIFY_ENUM_DIR 1022L
+#define ERROR_DEPENDENT_SERVICES_RUNNING 1051L
+#define ERROR_INVALID_SERVICE_CONTROL 1052L
+#define ERROR_SERVICE_REQUEST_TIMEOUT 1053L
+#define ERROR_SERVICE_NO_THREAD 1054L
+#define ERROR_SERVICE_DATABASE_LOCKED 1055L
+#define ERROR_SERVICE_ALREADY_RUNNING 1056L
+#define ERROR_INVALID_SERVICE_ACCOUNT 1057L
+#define ERROR_SERVICE_DISABLED 1058L
+#define ERROR_CIRCULAR_DEPENDENCY 1059L
+#define ERROR_SERVICE_DOES_NOT_EXIST 1060L
+#define ERROR_SERVICE_CANNOT_ACCEPT_CTRL 1061L
+#define ERROR_SERVICE_NOT_ACTIVE 1062L
+#define ERROR_FAILED_SERVICE_CONTROLLER_CONNECT 1063L
+#define ERROR_EXCEPTION_IN_SERVICE 1064L
+#define ERROR_DATABASE_DOES_NOT_EXIST 1065L
+#define ERROR_SERVICE_SPECIFIC_ERROR 1066L
+#define ERROR_PROCESS_ABORTED 1067L
+#define ERROR_SERVICE_DEPENDENCY_FAIL 1068L
+#define ERROR_SERVICE_LOGON_FAILED 1069L
+#define ERROR_SERVICE_START_HANG 1070L
+#define ERROR_INVALID_SERVICE_LOCK 1071L
+#define ERROR_SERVICE_MARKED_FOR_DELETE 1072L
+#define ERROR_SERVICE_EXISTS 1073L
+#define ERROR_ALREADY_RUNNING_LKG 1074L
+#define ERROR_SERVICE_DEPENDENCY_DELETED 1075L
+#define ERROR_BOOT_ALREADY_ACCEPTED 1076L
+#define ERROR_SERVICE_NEVER_STARTED 1077L
+#define ERROR_DUPLICATE_SERVICE_NAME 1078L
+#define ERROR_DIFFERENT_SERVICE_ACCOUNT 1079L
+#define ERROR_CANNOT_DETECT_DRIVER_FAILURE 1080L
+#define ERROR_CANNOT_DETECT_PROCESS_ABORT 1081L
+#define ERROR_NO_RECOVERY_PROGRAM 1082L
+#define ERROR_SERVICE_NOT_IN_EXE 1083L
+#define ERROR_NOT_SAFEBOOT_SERVICE 1084L
+#define ERROR_END_OF_MEDIA 1100L
+#define ERROR_FILEMARK_DETECTED 1101L
+#define ERROR_BEGINNING_OF_MEDIA 1102L
+#define ERROR_SETMARK_DETECTED 1103L
+#define ERROR_NO_DATA_DETECTED 1104L
+#define ERROR_PARTITION_FAILURE 1105L
+#define ERROR_INVALID_BLOCK_LENGTH 1106L
+#define ERROR_DEVICE_NOT_PARTITIONED 1107L
+#define ERROR_UNABLE_TO_LOCK_MEDIA 1108L
+#define ERROR_UNABLE_TO_UNLOAD_MEDIA 1109L
+#define ERROR_MEDIA_CHANGED 1110L
+#define ERROR_BUS_RESET 1111L
+#define ERROR_NO_MEDIA_IN_DRIVE 1112L
+#define ERROR_NO_UNICODE_TRANSLATION 1113L
+#define ERROR_DLL_INIT_FAILED 1114L
+#define ERROR_SHUTDOWN_IN_PROGRESS 1115L
+#define ERROR_NO_SHUTDOWN_IN_PROGRESS 1116L
+#define ERROR_IO_DEVICE 1117L
+#define ERROR_SERIAL_NO_DEVICE 1118L
+#define ERROR_IRQ_BUSY 1119L
+#define ERROR_MORE_WRITES 1120L
+#define ERROR_COUNTER_TIMEOUT 1121L
+#define ERROR_FLOPPY_ID_MARK_NOT_FOUND 1122L
+#define ERROR_FLOPPY_WRONG_CYLINDER 1123L
+#define ERROR_FLOPPY_UNKNOWN_ERROR 1124L
+#define ERROR_FLOPPY_BAD_REGISTERS 1125L
+#define ERROR_DISK_RECALIBRATE_FAILED 1126L
+#define ERROR_DISK_OPERATION_FAILED 1127L
+#define ERROR_DISK_RESET_FAILED 1128L
+#define ERROR_EOM_OVERFLOW 1129L
+#define ERROR_NOT_ENOUGH_SERVER_MEMORY 1130L
+#define ERROR_POSSIBLE_DEADLOCK 1131L
+#define ERROR_MAPPED_ALIGNMENT 1132L
+#define ERROR_SET_POWER_STATE_VETOED 1140L
+#define ERROR_SET_POWER_STATE_FAILED 1141L
+#define ERROR_TOO_MANY_LINKS 1142L
+#define ERROR_OLD_WIN_VERSION 1150L
+#define ERROR_APP_WRONG_OS 1151L
+#define ERROR_SINGLE_INSTANCE_APP 1152L
+#define ERROR_RMODE_APP 1153L
+#define ERROR_INVALID_DLL 1154L
+#define ERROR_NO_ASSOCIATION 1155L
+#define ERROR_DDE_FAIL 1156L
+#define ERROR_DLL_NOT_FOUND 1157L
+#define ERROR_NO_MORE_USER_HANDLES 1158L
+#define ERROR_MESSAGE_SYNC_ONLY 1159L
+#define ERROR_SOURCE_ELEMENT_EMPTY 1160L
+#define ERROR_DESTINATION_ELEMENT_FULL 1161L
+#define ERROR_ILLEGAL_ELEMENT_ADDRESS 1162L
+#define ERROR_MAGAZINE_NOT_PRESENT 1163L
+#define ERROR_DEVICE_REINITIALIZATION_NEEDED 1164L
+#define ERROR_DEVICE_REQUIRES_CLEANING 1165L
+#define ERROR_DEVICE_DOOR_OPEN 1166L
+#define ERROR_DEVICE_NOT_CONNECTED 1167L
+#define ERROR_NOT_FOUND 1168L
+#define ERROR_NO_MATCH 1169L
+#define ERROR_SET_NOT_FOUND 1170L
+#define ERROR_POINT_NOT_FOUND 1171L
+#define ERROR_NO_TRACKING_SERVICE 1172L
+#define ERROR_NO_VOLUME_ID 1173L
+#define ERROR_UNABLE_TO_REMOVE_REPLACED 1175L
+#define ERROR_UNABLE_TO_MOVE_REPLACEMENT 1176L
+#define ERROR_UNABLE_TO_MOVE_REPLACEMENT_2 1177L
+#define ERROR_JOURNAL_DELETE_IN_PROGRESS 1178L
+#define ERROR_JOURNAL_NOT_ACTIVE 1179L
+#define ERROR_POTENTIAL_FILE_FOUND 1180L
+#define ERROR_JOURNAL_ENTRY_DELETED 1181L
+#define ERROR_BAD_DEVICE 1200L
+#define ERROR_CONNECTION_UNAVAIL 1201L
+#define ERROR_DEVICE_ALREADY_REMEMBERED 1202L
+#define ERROR_NO_NET_OR_BAD_PATH 1203L
+#define ERROR_BAD_PROVIDER 1204L
+#define ERROR_CANNOT_OPEN_PROFILE 1205L
+#define ERROR_BAD_PROFILE 1206L
+#define ERROR_NOT_CONTAINER 1207L
+#define ERROR_EXTENDED_ERROR 1208L
+#define ERROR_INVALID_GROUPNAME 1209L
+#define ERROR_INVALID_COMPUTERNAME 1210L
+#define ERROR_INVALID_EVENTNAME 1211L
+#define ERROR_INVALID_DOMAINNAME 1212L
+#define ERROR_INVALID_SERVICENAME 1213L
+#define ERROR_INVALID_NETNAME 1214L
+#define ERROR_INVALID_SHARENAME 1215L
+#define ERROR_INVALID_PASSWORDNAME 1216L
+#define ERROR_INVALID_MESSAGENAME 1217L
+#define ERROR_INVALID_MESSAGEDEST 1218L
+#define ERROR_SESSION_CREDENTIAL_CONFLICT 1219L
+#define ERROR_REMOTE_SESSION_LIMIT_EXCEEDED 1220L
+#define ERROR_DUP_DOMAINNAME 1221L
+#define ERROR_NO_NETWORK 1222L
+#define ERROR_CANCELLED 1223L
+#define ERROR_USER_MAPPED_FILE 1224L
+#define ERROR_CONNECTION_REFUSED 1225L
+#define ERROR_GRACEFUL_DISCONNECT 1226L
+#define ERROR_ADDRESS_ALREADY_ASSOCIATED 1227L
+#define ERROR_ADDRESS_NOT_ASSOCIATED 1228L
+#define ERROR_CONNECTION_INVALID 1229L
+#define ERROR_CONNECTION_ACTIVE 1230L
+#define ERROR_NETWORK_UNREACHABLE 1231L
+#define ERROR_HOST_UNREACHABLE 1232L
+#define ERROR_PROTOCOL_UNREACHABLE 1233L
+#define ERROR_PORT_UNREACHABLE 1234L
+#define ERROR_REQUEST_ABORTED 1235L
+#define ERROR_CONNECTION_ABORTED 1236L
+#define ERROR_RETRY 1237L
+#define ERROR_CONNECTION_COUNT_LIMIT 1238L
+#define ERROR_LOGIN_TIME_RESTRICTION 1239L
+#define ERROR_LOGIN_WKSTA_RESTRICTION 1240L
+#define ERROR_INCORRECT_ADDRESS 1241L
+#define ERROR_ALREADY_REGISTERED 1242L
+#define ERROR_SERVICE_NOT_FOUND 1243L
+#define ERROR_NOT_AUTHENTICATED 1244L
+#define ERROR_NOT_LOGGED_ON 1245L
+#define ERROR_CONTINUE 1246L
+#define ERROR_ALREADY_INITIALIZED 1247L
+#define ERROR_NO_MORE_DEVICES 1248L
+#define ERROR_NO_SUCH_SITE 1249L
+#define ERROR_DOMAIN_CONTROLLER_EXISTS 1250L
+#define ERROR_ONLY_IF_CONNECTED 1251L
+#define ERROR_OVERRIDE_NOCHANGES 1252L
+#define ERROR_BAD_USER_PROFILE 1253L
+#define ERROR_NOT_SUPPORTED_ON_SBS 1254L
+#define ERROR_SERVER_SHUTDOWN_IN_PROGRESS 1255L
+#define ERROR_HOST_DOWN 1256L
+#define ERROR_NON_ACCOUNT_SID 1257L
+#define ERROR_NON_DOMAIN_SID 1258L
+#define ERROR_APPHELP_BLOCK 1259L
+#define ERROR_ACCESS_DISABLED_BY_POLICY 1260L
+#define ERROR_REG_NAT_CONSUMPTION 1261L
+#define ERROR_CSCSHARE_OFFLINE 1262L
+#define ERROR_PKINIT_FAILURE 1263L
+#define ERROR_SMARTCARD_SUBSYSTEM_FAILURE 1264L
+#define ERROR_DOWNGRADE_DETECTED 1265L
+#define SEC_E_SMARTCARD_CERT_REVOKED 1266L
+#define SEC_E_ISSUING_CA_UNTRUSTED 1267L
+#define SEC_E_REVOCATION_OFFLINE_C 1268L
+#define SEC_E_PKINIT_CLIENT_FAILUR 1269L
+#define SEC_E_SMARTCARD_CERT_EXPIRED 1270L
+#define ERROR_MACHINE_LOCKED 1271L
+#define ERROR_CALLBACK_SUPPLIED_INVALID_DATA 1273L
+#define ERROR_SYNC_FOREGROUND_REFRESH_REQUIRED 1274L
+#define ERROR_DRIVER_BLOCKED 1275L
+#define ERROR_INVALID_IMPORT_OF_NON_DLL 1276L
+#define ERROR_ACCESS_DISABLED_WEBBLADE 1277L
+#define ERROR_ACCESS_DISABLED_WEBBLADE_TAMPER 1278L
+#define ERROR_RECOVERY_FAILURE 1279L
+#define ERROR_ALREADY_FIBER 1280L
+#define ERROR_ALREADY_THREAD 1281L
+#define ERROR_STACK_BUFFER_OVERRUN 1282L
+#define ERROR_PARAMETER_QUOTA_EXCEEDED 1283L
+#define ERROR_DEBUGGER_INACTIVE 1284L
+#define ERROR_NOT_ALL_ASSIGNED 1300L
+#define ERROR_SOME_NOT_MAPPED 1301L
+#define ERROR_NO_QUOTAS_FOR_ACCOUNT 1302L
+#define ERROR_LOCAL_USER_SESSION_KEY 1303L
+#define ERROR_NULL_LM_PASSWORD 1304L
+#define ERROR_UNKNOWN_REVISION 1305L
+#define ERROR_REVISION_MISMATCH 1306L
+#define ERROR_INVALID_OWNER 1307L
+#define ERROR_INVALID_PRIMARY_GROUP 1308L
+#define ERROR_NO_IMPERSONATION_TOKEN 1309L
+#define ERROR_CANT_DISABLE_MANDATORY 1310L
+#define ERROR_NO_LOGON_SERVERS 1311L
+#define ERROR_NO_SUCH_LOGON_SESSION 1312L
+#define ERROR_NO_SUCH_PRIVILEGE 1313L
+#define ERROR_PRIVILEGE_NOT_HELD 1314L
+#define ERROR_INVALID_ACCOUNT_NAME 1315L
+#define ERROR_USER_EXISTS 1316L
+#define ERROR_NO_SUCH_USER 1317L
+#define ERROR_GROUP_EXISTS 1318L
+#define ERROR_NO_SUCH_GROUP 1319L
+#define ERROR_MEMBER_IN_GROUP 1320L
+#define ERROR_MEMBER_NOT_IN_GROUP 1321L
+#define ERROR_LAST_ADMIN 1322L
+#define ERROR_WRONG_PASSWORD 1323L
+#define ERROR_ILL_FORMED_PASSWORD 1324L
+#define ERROR_PASSWORD_RESTRICTION 1325L
+#define ERROR_LOGON_FAILURE 1326L
+#define ERROR_ACCOUNT_RESTRICTION 1327L
+#define ERROR_INVALID_LOGON_HOURS 1328L
+#define ERROR_INVALID_WORKSTATION 1329L
+#define ERROR_PASSWORD_EXPIRED 1330L
+#define ERROR_ACCOUNT_DISABLED 1331L
+#define ERROR_NONE_MAPPED 1332L
+#define ERROR_TOO_MANY_LUIDS_REQUESTED 1333L
+#define ERROR_LUIDS_EXHAUSTED 1334L
+#define ERROR_INVALID_SUB_AUTHORITY 1335L
+#define ERROR_INVALID_ACL 1336L
+#define ERROR_INVALID_SID 1337L
+#define ERROR_INVALID_SECURITY_DESCR 1338L
+#define ERROR_BAD_INHERITANCE_ACL 1340L
+#define ERROR_SERVER_DISABLED 1341L
+#define ERROR_SERVER_NOT_DISABLED 1342L
+#define ERROR_INVALID_ID_AUTHORITY 1343L
+#define ERROR_ALLOTTED_SPACE_EXCEEDED 1344L
+#define ERROR_INVALID_GROUP_ATTRIBUTES 1345L
+#define ERROR_BAD_IMPERSONATION_LEVEL 1346L
+#define ERROR_CANT_OPEN_ANONYMOUS 1347L
+#define ERROR_BAD_VALIDATION_CLASS 1348L
+#define ERROR_BAD_TOKEN_TYPE 1349L
+#define ERROR_NO_SECURITY_ON_OBJECT 1350L
+#define ERROR_CANT_ACCESS_DOMAIN_INFO 1351L
+#define ERROR_INVALID_SERVER_STATE 1352L
+#define ERROR_INVALID_DOMAIN_STATE 1353L
+#define ERROR_INVALID_DOMAIN_ROLE 1354L
+#define ERROR_NO_SUCH_DOMAIN 1355L
+#define ERROR_DOMAIN_EXISTS 1356L
+#define ERROR_DOMAIN_LIMIT_EXCEEDED 1357L
+#define ERROR_INTERNAL_DB_CORRUPTION 1358L
+#define ERROR_INTERNAL_ERROR 1359L
+#define ERROR_GENERIC_NOT_MAPPED 1360L
+#define ERROR_BAD_DESCRIPTOR_FORMAT 1361L
+#define ERROR_NOT_LOGON_PROCESS 1362L
+#define ERROR_LOGON_SESSION_EXISTS 1363L
+#define ERROR_NO_SUCH_PACKAGE 1364L
+#define ERROR_BAD_LOGON_SESSION_STATE 1365L
+#define ERROR_LOGON_SESSION_COLLISION 1366L
+#define ERROR_INVALID_LOGON_TYPE 1367L
+#define ERROR_CANNOT_IMPERSONATE 1368L
+#define ERROR_RXACT_INVALID_STATE 1369L
+#define ERROR_RXACT_COMMIT_FAILURE 1370L
+#define ERROR_SPECIAL_ACCOUNT 1371L
+#define ERROR_SPECIAL_GROUP 1372L
+#define ERROR_SPECIAL_USER 1373L
+#define ERROR_MEMBERS_PRIMARY_GROUP 1374L
+#define ERROR_TOKEN_ALREADY_IN_USE 1375L
+#define ERROR_NO_SUCH_ALIAS 1376L
+#define ERROR_MEMBER_NOT_IN_ALIAS 1377L
+#define ERROR_MEMBER_IN_ALIAS 1378L
+#define ERROR_ALIAS_EXISTS 1379L
+#define ERROR_LOGON_NOT_GRANTED 1380L
+#define ERROR_TOO_MANY_SECRETS 1381L
+#define ERROR_SECRET_TOO_LONG 1382L
+#define ERROR_INTERNAL_DB_ERROR 1383L
+#define ERROR_TOO_MANY_CONTEXT_IDS 1384L
+#define ERROR_LOGON_TYPE_NOT_GRANTED 1385L
+#define ERROR_NT_CROSS_ENCRYPTION_REQUIRED 1386L
+#define ERROR_NO_SUCH_MEMBER 1387L
+#define ERROR_INVALID_MEMBER 1388L
+#define ERROR_TOO_MANY_SIDS 1389L
+#define ERROR_LM_CROSS_ENCRYPTION_REQUIRED 1390L
+#define ERROR_NO_INHERITANCE 1391L
+#define ERROR_FILE_CORRUPT 1392L
+#define ERROR_DISK_CORRUPT 1393L
+#define ERROR_NO_USER_SESSION_KEY 1394L
+#define ERROR_LICENSE_QUOTA_EXCEEDED 1395L
+#define ERROR_WRONG_TARGET_NAME 1396L
+#define ERROR_MUTUAL_AUTH_FAILED 1397L
+#define ERROR_TIME_SKEW 1398L
+#define ERROR_CURRENT_DOMAIN_NOT_ALLOWED 1399L
+#define ERROR_INVALID_WINDOW_HANDLE 1400L
+#define ERROR_INVALID_MENU_HANDLE 1401L
+#define ERROR_INVALID_CURSOR_HANDLE 1402L
+#define ERROR_INVALID_ACCEL_HANDLE 1403L
+#define ERROR_INVALID_HOOK_HANDLE 1404L
+#define ERROR_INVALID_DWP_HANDLE 1405L
+#define ERROR_TLW_WITH_WSCHILD 1406L
+#define ERROR_CANNOT_FIND_WND_CLASS 1407L
+#define ERROR_WINDOW_OF_OTHER_THREAD 1408L
+#define ERROR_HOTKEY_ALREADY_REGISTERED 1409L
+#define ERROR_CLASS_ALREADY_EXISTS 1410L
+#define ERROR_CLASS_DOES_NOT_EXIST 1411L
+#define ERROR_CLASS_HAS_WINDOWS 1412L
+#define ERROR_INVALID_INDEX 1413L
+#define ERROR_INVALID_ICON_HANDLE 1414L
+#define ERROR_PRIVATE_DIALOG_INDEX 1415L
+#define ERROR_LISTBOX_ID_NOT_FOUND 1416L
+#define ERROR_NO_WILDCARD_CHARACTERS 1417L
+#define ERROR_CLIPBOARD_NOT_OPEN 1418L
+#define ERROR_HOTKEY_NOT_REGISTERED 1419L
+#define ERROR_WINDOW_NOT_DIALOG 1420L
+#define ERROR_CONTROL_ID_NOT_FOUND 1421L
+#define ERROR_INVALID_COMBOBOX_MESSAGE 1422L
+#define ERROR_WINDOW_NOT_COMBOBOX 1423L
+#define ERROR_INVALID_EDIT_HEIGHT 1424L
+#define ERROR_DC_NOT_FOUND 1425L
+#define ERROR_INVALID_HOOK_FILTER 1426L
+#define ERROR_INVALID_FILTER_PROC 1427L
+#define ERROR_HOOK_NEEDS_HMOD 1428L
+#define ERROR_GLOBAL_ONLY_HOOK 1429L
+#define ERROR_JOURNAL_HOOK_SET 1430L
+#define ERROR_HOOK_NOT_INSTALLED 1431L
+#define ERROR_INVALID_LB_MESSAGE 1432L
+#define ERROR_SETCOUNT_ON_BAD_LB 1433L
+#define ERROR_LB_WITHOUT_TABSTOPS 1434L
+#define ERROR_DESTROY_OBJECT_OF_OTHER_THREAD 1435L
+#define ERROR_CHILD_WINDOW_MENU 1436L
+#define ERROR_NO_SYSTEM_MENU 1437L
+#define ERROR_INVALID_MSGBOX_STYLE 1438L
+#define ERROR_INVALID_SPI_VALUE 1439L
+#define ERROR_SCREEN_ALREADY_LOCKED 1440L
+#define ERROR_HWNDS_HAVE_DIFF_PARENT 1441L
+#define ERROR_NOT_CHILD_WINDOW 1442L
+#define ERROR_INVALID_GW_COMMAND 1443L
+#define ERROR_INVALID_THREAD_ID 1444L
+#define ERROR_NON_MDICHILD_WINDOW 1445L
+#define ERROR_POPUP_ALREADY_ACTIVE 1446L
+#define ERROR_NO_SCROLLBARS 1447L
+#define ERROR_INVALID_SCROLLBAR_RANGE 1448L
+#define ERROR_INVALID_SHOWWIN_COMMAND 1449L
+#define ERROR_NO_SYSTEM_RESOURCES 1450L
+#define ERROR_NONPAGED_SYSTEM_RESOURCES 1451L
+#define ERROR_PAGED_SYSTEM_RESOURCES 1452L
+#define ERROR_WORKING_SET_QUOTA 1453L
+#define ERROR_PAGEFILE_QUOTA 1454L
+#define ERROR_COMMITMENT_LIMIT 1455L
+#define ERROR_MENU_ITEM_NOT_FOUND 1456L
+#define ERROR_INVALID_KEYBOARD_HANDLE 1457L
+#define ERROR_HOOK_TYPE_NOT_ALLOWED 1458L
+#define ERROR_REQUIRES_INTERACTIVE_WINDOWSTATION 1459L
+#define ERROR_TIMEOUT 1460L
+#define ERROR_INVALID_MONITOR_HANDLE 1461L
+#define ERROR_EVENTLOG_FILE_CORRUPT 1500L
+#define ERROR_EVENTLOG_CANT_START 1501L
+#define ERROR_LOG_FILE_FULL 1502L
+#define ERROR_EVENTLOG_FILE_CHANGED 1503L
+#define ERROR_INSTALL_SERVICE_FAILURE 1601L
+#define ERROR_INSTALL_USEREXIT 1602L
+#define ERROR_INSTALL_FAILURE 1603L
+#define ERROR_INSTALL_SUSPEND 1604L
+#define ERROR_UNKNOWN_PRODUCT 1605L
+#define ERROR_UNKNOWN_FEATURE 1606L
+#define ERROR_UNKNOWN_COMPONENT 1607L
+#define ERROR_UNKNOWN_PROPERTY 1608L
+#define ERROR_INVALID_HANDLE_STATE 1609L
+#define ERROR_BAD_CONFIGURATION 1610L
+#define ERROR_INDEX_ABSENT 1611L
+#define ERROR_INSTALL_SOURCE_ABSENT 1612L
+#define ERROR_INSTALL_PACKAGE_VERSION 1613L
+#define ERROR_PRODUCT_UNINSTALLED 1614L
+#define ERROR_BAD_QUERY_SYNTAX 1615L
+#define ERROR_INVALID_FIELD 1616L
+#define ERROR_DEVICE_REMOVED 1617L
+#define ERROR_INSTALL_ALREADY_RUNNING 1618L
+#define ERROR_INSTALL_PACKAGE_OPEN_FAILED 1619L
+#define ERROR_INSTALL_PACKAGE_INVALID 1620L
+#define ERROR_INSTALL_UI_FAILURE 1621L
+#define ERROR_INSTALL_LOG_FAILURE 1622L
+#define ERROR_INSTALL_LANGUAGE_UNSUPPORTED 1623L
+#define ERROR_INSTALL_TRANSFORM_FAILURE 1624L
+#define ERROR_INSTALL_PACKAGE_REJECTED 1625L
+#define ERROR_FUNCTION_NOT_CALLED 1626L
+#define ERROR_FUNCTION_FAILED 1627L
+#define ERROR_INVALID_TABLE 1628L
+#define ERROR_DATATYPE_MISMATCH 1629L
+#define ERROR_UNSUPPORTED_TYPE 1630L
+#define ERROR_CREATE_FAILED 1631L
+#define ERROR_INSTALL_TEMP_UNWRITABLE 1632L
+#define ERROR_INSTALL_PLATFORM_UNSUPPORTED 1633L
+#define ERROR_INSTALL_NOTUSED 1634L
+#define ERROR_PATCH_PACKAGE_OPEN_FAILED 1635L
+#define ERROR_PATCH_PACKAGE_INVALID 1636L
+#define ERROR_PATCH_PACKAGE_UNSUPPORTED 1637L
+#define ERROR_PRODUCT_VERSION 1638L
+#define ERROR_INVALID_COMMAND_LINE 1639L
+#define ERROR_INSTALL_REMOTE_DISALLOWED 1640L
+#define ERROR_SUCCESS_REBOOT_INITIATED 1641L
+#define ERROR_PATCH_TARGET_NOT_FOUND 1642L
+#define ERROR_PATCH_PACKAGE_REJECTED 1643L
+#define ERROR_INSTALL_TRANSFORM_REJECTED 1644L
+#define ERROR_INSTALL_REMOTE_PROHIBITED 1645L
+#define RPC_S_INVALID_STRING_BINDING 1700L
+#define RPC_S_WRONG_KIND_OF_BINDING 1701L
+#define RPC_S_INVALID_BINDING 1702L
+#define RPC_S_PROTSEQ_NOT_SUPPORTED 1703L
+#define RPC_S_INVALID_RPC_PROTSEQ 1704L
+#define RPC_S_INVALID_STRING_UUID 1705L
+#define RPC_S_INVALID_ENDPOINT_FORMAT 1706L
+#define RPC_S_INVALID_NET_ADDR 1707L
+#define RPC_S_NO_ENDPOINT_FOUND 1708L
+#define RPC_S_INVALID_TIMEOUT 1709L
+#define RPC_S_OBJECT_NOT_FOUND 1710L
+#define RPC_S_ALREADY_REGISTERED 1711L
+#define RPC_S_TYPE_ALREADY_REGISTERED 1712L
+#define RPC_S_ALREADY_LISTENING 1713L
+#define RPC_S_NO_PROTSEQS_REGISTERED 1714L
+#define RPC_S_NOT_LISTENING 1715L
+#define RPC_S_UNKNOWN_MGR_TYPE 1716L
+#define RPC_S_UNKNOWN_IF 1717L
+#define RPC_S_NO_BINDINGS 1718L
+#define RPC_S_NO_PROTSEQS 1719L
+#define RPC_S_CANT_CREATE_ENDPOINT 1720L
+#define RPC_S_OUT_OF_RESOURCES 1721L
+#define RPC_S_SERVER_UNAVAILABLE 1722L
+#define RPC_S_SERVER_TOO_BUSY 1723L
+#define RPC_S_INVALID_NETWORK_OPTIONS 1724L
+#define RPC_S_NO_CALL_ACTIVE 1725L
+#define RPC_S_CALL_FAILED 1726L
+#define RPC_S_CALL_FAILED_DNE 1727L
+#define RPC_S_PROTOCOL_ERROR 1728L
+#define RPC_S_UNSUPPORTED_TRANS_SYN 1730L
+#define RPC_S_UNSUPPORTED_TYPE 1732L
+#define RPC_S_INVALID_TAG 1733L
+#define RPC_S_INVALID_BOUND 1734L
+#define RPC_S_NO_ENTRY_NAME 1735L
+#define RPC_S_INVALID_NAME_SYNTAX 1736L
+#define RPC_S_UNSUPPORTED_NAME_SYNTAX 1737L
+#define RPC_S_UUID_NO_ADDRESS 1739L
+#define RPC_S_DUPLICATE_ENDPOINT 1740L
+#define RPC_S_UNKNOWN_AUTHN_TYPE 1741L
+#define RPC_S_MAX_CALLS_TOO_SMALL 1742L
+#define RPC_S_STRING_TOO_LONG 1743L
+#define RPC_S_PROTSEQ_NOT_FOUND 1744L
+#define RPC_S_PROCNUM_OUT_OF_RANGE 1745L
+#define RPC_S_BINDING_HAS_NO_AUTH 1746L
+#define RPC_S_UNKNOWN_AUTHN_SERVICE 1747L
+#define RPC_S_UNKNOWN_AUTHN_LEVEL 1748L
+#define RPC_S_INVALID_AUTH_IDENTITY 1749L
+#define RPC_S_UNKNOWN_AUTHZ_SERVICE 1750L
+#define EPT_S_INVALID_ENTRY 1751L
+#define EPT_S_CANT_PERFORM_OP 1752L
+#define EPT_S_NOT_REGISTERED 1753L
+#define RPC_S_NOTHING_TO_EXPORT 1754L
+#define RPC_S_INCOMPLETE_NAME 1755L
+#define RPC_S_INVALID_VERS_OPTION 1756L
+#define RPC_S_NO_MORE_MEMBERS 1757L
+#define RPC_S_NOT_ALL_OBJS_UNEXPORTED 1758L
+#define RPC_S_INTERFACE_NOT_FOUND 1759L
+#define RPC_S_ENTRY_ALREADY_EXISTS 1760L
+#define RPC_S_ENTRY_NOT_FOUND 1761L
+#define RPC_S_NAME_SERVICE_UNAVAILABLE 1762L
+#define RPC_S_INVALID_NAF_ID 1763L
+#define RPC_S_CANNOT_SUPPORT 1764L
+#define RPC_S_NO_CONTEXT_AVAILABLE 1765L
+#define RPC_S_INTERNAL_ERROR 1766L
+#define RPC_S_ZERO_DIVIDE 1767L
+#define RPC_S_ADDRESS_ERROR 1768L
+#define RPC_S_FP_DIV_ZERO 1769L
+#define RPC_S_FP_UNDERFLOW 1770L
+#define RPC_S_FP_OVERFLOW 1771L
+#define RPC_X_NO_MORE_ENTRIES 1772L
+#define RPC_X_SS_CHAR_TRANS_OPEN_FAIL 1773L
+#define RPC_X_SS_CHAR_TRANS_SHORT_FILE 1774L
+#define RPC_X_SS_IN_NULL_CONTEXT 1775L
+#define RPC_X_SS_CONTEXT_DAMAGED 1777L
+#define RPC_X_SS_HANDLES_MISMATCH 1778L
+#define RPC_X_SS_CANNOT_GET_CALL_HANDLE 1779L
+#define RPC_X_NULL_REF_POINTER 1780L
+#define RPC_X_ENUM_VALUE_OUT_OF_RANGE 1781L
+#define RPC_X_BYTE_COUNT_TOO_SMALL 1782L
+#define RPC_X_BAD_STUB_DATA 1783L
+#define ERROR_INVALID_USER_BUFFER 1784L
+#define ERROR_UNRECOGNIZED_MEDIA 1785L
+#define ERROR_NO_TRUST_LSA_SECRET 1786L
+#define ERROR_NO_TRUST_SAM_ACCOUNT 1787L
+#define ERROR_TRUSTED_DOMAIN_FAILURE 1788L
+#define ERROR_TRUSTED_RELATIONSHIP_FAILURE 1789L
+#define ERROR_TRUST_FAILURE 1790L
+#define RPC_S_CALL_IN_PROGRESS 1791L
+#define ERROR_NETLOGON_NOT_STARTED 1792L
+#define ERROR_ACCOUNT_EXPIRED 1793L
+#define ERROR_REDIRECTOR_HAS_OPEN_HANDLES 1794L
+#define ERROR_PRINTER_DRIVER_ALREADY_INSTALLED 1795L
+#define ERROR_UNKNOWN_PORT 1796L
+#define ERROR_UNKNOWN_PRINTER_DRIVER 1797L
+#define ERROR_UNKNOWN_PRINTPROCESSOR 1798L
+#define ERROR_INVALID_SEPARATOR_FILE 1799L
+#define ERROR_INVALID_PRIORITY 1800L
+#define ERROR_INVALID_PRINTER_NAME 1801L
+#define ERROR_PRINTER_ALREADY_EXISTS 1802L
+#define ERROR_INVALID_PRINTER_COMMAND 1803L
+#define ERROR_INVALID_DATATYPE 1804L
+#define ERROR_INVALID_ENVIRONMENT 1805L
+#define RPC_S_NO_MORE_BINDINGS 1806L
+#define ERROR_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT 1807L
+#define ERROR_NOLOGON_WORKSTATION_TRUST_ACCOUNT 1808L
+#define ERROR_NOLOGON_SERVER_TRUST_ACCOUNT 1809L
+#define ERROR_DOMAIN_TRUST_INCONSISTENT 1810L
+#define ERROR_SERVER_HAS_OPEN_HANDLES 1811L
+#define ERROR_RESOURCE_DATA_NOT_FOUND 1812L
+#define ERROR_RESOURCE_TYPE_NOT_FOUND 1813L
+#define ERROR_RESOURCE_NAME_NOT_FOUND 1814L
+#define ERROR_RESOURCE_LANG_NOT_FOUND 1815L
+#define ERROR_NOT_ENOUGH_QUOTA 1816L
+#define RPC_S_NO_INTERFACES 1817L
+#define RPC_S_CALL_CANCELLED 1818L
+#define RPC_S_BINDING_INCOMPLETE 1819L
+#define RPC_S_COMM_FAILURE 1820L
+#define RPC_S_UNSUPPORTED_AUTHN_LEVEL 1821L
+#define RPC_S_NO_PRINC_NAME 1822L
+#define RPC_S_NOT_RPC_ERROR 1823L
+#define RPC_S_UUID_LOCAL_ONLY 1824L
+#define RPC_S_SEC_PKG_ERROR 1825L
+#define RPC_S_NOT_CANCELLED 1826L
+#define RPC_X_INVALID_ES_ACTION 1827L
+#define RPC_X_WRONG_ES_VERSION 1828L
+#define RPC_X_WRONG_STUB_VERSION 1829L
+#define RPC_X_INVALID_PIPE_OBJECT 1830L
+#define RPC_X_WRONG_PIPE_ORDER 1831L
+#define RPC_X_WRONG_PIPE_VERSION 1832L
+#define RPC_S_GROUP_MEMBER_NOT_FOUND 1898L
+#define EPT_S_CANT_CREATE 1899L
+#define RPC_S_INVALID_OBJECT 1900L
+#define ERROR_INVALID_TIME 1901L
+#define ERROR_INVALID_FORM_NAME 1902L
+#define ERROR_INVALID_FORM_SIZE 1903L
+#define ERROR_ALREADY_WAITING 1904L
+#define ERROR_PRINTER_DELETED 1905L
+#define ERROR_INVALID_PRINTER_STATE 1906L
+#define ERROR_PASSWORD_MUST_CHANGE 1907L
+#define ERROR_DOMAIN_CONTROLLER_NOT_FOUND 1908L
+#define ERROR_ACCOUNT_LOCKED_OUT 1909L
+#define OR_INVALID_OXID 1910L
+#define OR_INVALID_OID 1911L
+#define OR_INVALID_SET 1912L
+#define RPC_S_SEND_INCOMPLETE 1913L
+#define RPC_S_INVALID_ASYNC_HANDLE 1914L
+#define RPC_S_INVALID_ASYNC_CALL 1915L
+#define RPC_X_PIPE_CLOSED 1916L
+#define RPC_X_PIPE_DISCIPLINE_ERROR 1917L
+#define RPC_X_PIPE_EMPTY 1918L
+#define ERROR_NO_SITENAME 1919L
+#define ERROR_CANT_ACCESS_FILE 1920L
+#define ERROR_CANT_RESOLVE_FILENAME 1921L
+#define RPC_S_ENTRY_TYPE_MISMATCH 1922L
+#define RPC_S_NOT_ALL_OBJS_EXPORTED 1923L
+#define RPC_S_INTERFACE_NOT_EXPORTED 1924L
+#define RPC_S_PROFILE_NOT_ADDED 1925L
+#define RPC_S_PRF_ELT_NOT_ADDED 1926L
+#define RPC_S_PRF_ELT_NOT_REMOVED 1927L
+#define RPC_S_GRP_ELT_NOT_ADDED 1928L
+#define RPC_S_GRP_ELT_NOT_REMOVED 1929L
+#define ERROR_KM_DRIVER_BLOCKED 1930L
+#define ERROR_CONTEXT_EXPIRED 1931L
+#define ERROR_PER_USER_TRUST_QUOTA_EXCEEDED 1932L
+#define ERROR_ALL_USER_TRUST_QUOTA_EXCEEDED 1933L
+#define ERROR_USER_DELETE_TRUST_QUOTA_EXCEEDED 1934L
+#define ERROR_INVALID_PIXEL_FORMAT 2000L
+#define ERROR_BAD_DRIVER 2001L
+#define ERROR_INVALID_WINDOW_STYLE 2002L
+#define ERROR_METAFILE_NOT_SUPPORTED 2003L
+#define ERROR_TRANSFORM_NOT_SUPPORTED 2004L
+#define ERROR_CLIPPING_NOT_SUPPORTED 2005L
+#define ERROR_INVALID_CMM 2010L
+#define ERROR_INVALID_PROFILE 2011L
+#define ERROR_TAG_NOT_FOUND 2012L
+#define ERROR_TAG_NOT_PRESENT 2013L
+#define ERROR_DUPLICATE_TAG 2014L
+#define ERROR_PROFILE_NOT_ASSOCIATED_WITH_DEVICE 2015L
+#define ERROR_PROFILE_NOT_FOUND 2016L
+#define ERROR_INVALID_COLORSPACE 2017L
+#define ERROR_ICM_NOT_ENABLED 2018L
+#define ERROR_DELETING_ICM_XFORM 2019L
+#define ERROR_INVALID_TRANSFORM 2020L
+#define ERROR_COLORSPACE_MISMATCH 2021L
+#define ERROR_INVALID_COLORINDEX 2022L
+#define ERROR_CONNECTED_OTHER_PASSWORD 2108L
+#define ERROR_CONNECTED_OTHER_PASSWORD_DEFAULT 2109L
+#define ERROR_BAD_USERNAME 2202L
+#define ERROR_NOT_CONNECTED 2250L
+#define ERROR_OPEN_FILES 2401L
+#define ERROR_ACTIVE_CONNECTIONS 2402L
+#define ERROR_DEVICE_IN_USE 2404L
+#define ERROR_UNKNOWN_PRINT_MONITOR 3000L
+#define ERROR_PRINTER_DRIVER_IN_USE 3001L
+#define ERROR_SPOOL_FILE_NOT_FOUND 3002L
+#define ERROR_SPL_NO_STARTDOC 3003L
+#define ERROR_SPL_NO_ADDJOB 3004L
+#define ERROR_PRINT_PROCESSOR_ALREADY_INSTALLED 3005L
+#define ERROR_PRINT_MONITOR_ALREADY_INSTALLED 3006L
+#define ERROR_INVALID_PRINT_MONITOR 3007L
+#define ERROR_PRINT_MONITOR_IN_USE 3008L
+#define ERROR_PRINTER_HAS_JOBS_QUEUED 3009L
+#define ERROR_SUCCESS_REBOOT_REQUIRED 3010L
+#define ERROR_SUCCESS_RESTART_REQUIRED 3011L
+#define ERROR_PRINTER_NOT_FOUND 3012L
+#define ERROR_PRINTER_DRIVER_WARNED 3013L
+#define ERROR_PRINTER_DRIVER_BLOCKED 3014L
+#define ERROR_WINS_INTERNAL 4000L
+#define ERROR_CAN_NOT_DEL_LOCAL_WINS 4001L
+#define ERROR_STATIC_INIT 4002L
+#define ERROR_INC_BACKUP 4003L
+#define ERROR_FULL_BACKUP 4004L
+#define ERROR_REC_NON_EXISTENT 4005L
+#define ERROR_RPL_NOT_ALLOWED 4006L
+#define ERROR_DHCP_ADDRESS_CONFLICT 4100L
+#define ERROR_WMI_GUID_NOT_FOUND 4200L
+#define ERROR_WMI_INSTANCE_NOT_FOUND 4201L
+#define ERROR_WMI_ITEMID_NOT_FOUND 4202L
+#define ERROR_WMI_TRY_AGAIN 4203L
+#define ERROR_WMI_DP_NOT_FOUND 4204L
+#define ERROR_WMI_UNRESOLVED_INSTANCE_REF 4205L
+#define ERROR_WMI_ALREADY_ENABLED 4206L
+#define ERROR_WMI_GUID_DISCONNECTED 4207L
+#define ERROR_WMI_SERVER_UNAVAILABLE 4208L
+#define ERROR_WMI_DP_FAILED 4209L
+#define ERROR_WMI_INVALID_MOF 4210L
+#define ERROR_WMI_INVALID_REGINFO 4211L
+#define ERROR_WMI_ALREADY_DISABLED 4212L
+#define ERROR_WMI_READ_ONLY 4213L
+#define ERROR_WMI_SET_FAILURE 4214L
+#define ERROR_INVALID_MEDIA 4300L
+#define ERROR_INVALID_LIBRARY 4301L
+#define ERROR_INVALID_MEDIA_POOL 4302L
+#define ERROR_DRIVE_MEDIA_MISMATCH 4303L
+#define ERROR_MEDIA_OFFLINE 4304L
+#define ERROR_LIBRARY_OFFLINE 4305L
+#define ERROR_EMPTY 4306L
+#define ERROR_NOT_EMPTY 4307L
+#define ERROR_MEDIA_UNAVAILABLE 4308L
+#define ERROR_RESOURCE_DISABLED 4309L
+#define ERROR_INVALID_CLEANER 4310L
+#define ERROR_UNABLE_TO_CLEAN 4311L
+#define ERROR_OBJECT_NOT_FOUND 4312L
+#define ERROR_DATABASE_FAILURE 4313L
+#define ERROR_DATABASE_FULL 4314L
+#define ERROR_MEDIA_INCOMPATIBLE 4315L
+#define ERROR_RESOURCE_NOT_PRESENT 4316L
+#define ERROR_INVALID_OPERATION 4317L
+#define ERROR_MEDIA_NOT_AVAILABLE 4318L
+#define ERROR_DEVICE_NOT_AVAILABLE 4319L
+#define ERROR_REQUEST_REFUSED 4320L
+#define ERROR_INVALID_DRIVE_OBJECT 4321L
+#define ERROR_LIBRARY_FULL 4322L
+#define ERROR_MEDIUM_NOT_ACCESSIBLE 4323L
+#define ERROR_UNABLE_TO_LOAD_MEDIUM 4324L
+#define ERROR_UNABLE_TO_INVENTORY_DRIVE 4325L
+#define ERROR_UNABLE_TO_INVENTORY_SLOT 4326L
+#define ERROR_UNABLE_TO_INVENTORY_TRANSPORT 4327L
+#define ERROR_TRANSPORT_FULL 4328L
+#define ERROR_CONTROLLING_IEPORT 4329L
+#define ERROR_UNABLE_TO_EJECT_MOUNTED_MEDIA 4330L
+#define ERROR_CLEANER_SLOT_SET 4331L
+#define ERROR_CLEANER_SLOT_NOT_SET 4332L
+#define ERROR_CLEANER_CARTRIDGE_SPENT 4333L
+#define ERROR_UNEXPECTED_OMID 4334L
+#define ERROR_CANT_DELETE_LAST_ITEM 4335L
+#define ERROR_MESSAGE_EXCEEDS_MAX_SIZE 4336L
+#define ERROR_VOLUME_CONTAINS_SYS_FILES 4337L
+#define ERROR_INDIGENOUS_TYPE 4338L
+#define ERROR_NO_SUPPORTING_DRIVES 4339L
+#define ERROR_CLEANER_CARTRIDGE_INSTALLED 4340L
+#define ERROR_FILE_OFFLINE 4350L
+#define ERROR_REMOTE_STORAGE_NOT_ACTIVE 4351L
+#define ERROR_REMOTE_STORAGE_MEDIA_ERROR 4352L
+#define ERROR_NOT_A_REPARSE_POINT 4390L
+#define ERROR_REPARSE_ATTRIBUTE_CONFLICT 4391L
+#define ERROR_INVALID_REPARSE_DATA 4392L
+#define ERROR_REPARSE_TAG_INVALID 4393L
+#define ERROR_REPARSE_TAG_MISMATCH 4394L
+#define ERROR_VOLUME_NOT_SIS_ENABLED 4500L
+#define ERROR_DEPENDENT_RESOURCE_EXISTS 5001L
+#define ERROR_DEPENDENCY_NOT_FOUND 5002L
+#define ERROR_DEPENDENCY_ALREADY_EXISTS 5003L
+#define ERROR_RESOURCE_NOT_ONLINE 5004L
+#define ERROR_HOST_NODE_NOT_AVAILABLE 5005L
+#define ERROR_RESOURCE_NOT_AVAILABLE 5006L
+#define ERROR_RESOURCE_NOT_FOUND 5007L
+#define ERROR_SHUTDOWN_CLUSTER 5008L
+#define ERROR_CANT_EVICT_ACTIVE_NODE 5009L
+#define ERROR_OBJECT_ALREADY_EXISTS 5010L
+#define ERROR_OBJECT_IN_LIST 5011L
+#define ERROR_GROUP_NOT_AVAILABLE 5012L
+#define ERROR_GROUP_NOT_FOUND 5013L
+#define ERROR_GROUP_NOT_ONLINE 5014L
+#define ERROR_HOST_NODE_NOT_RESOURCE_OWNER 5015L
+#define ERROR_HOST_NODE_NOT_GROUP_OWNER 5016L
+#define ERROR_RESMON_CREATE_FAILED 5017L
+#define ERROR_RESMON_ONLINE_FAILED 5018L
+#define ERROR_RESOURCE_ONLINE 5019L
+#define ERROR_QUORUM_RESOURCE 5020L
+#define ERROR_NOT_QUORUM_CAPABLE 5021L
+#define ERROR_CLUSTER_SHUTTING_DOWN 5022L
+#define ERROR_INVALID_STATE 5023L
+#define ERROR_RESOURCE_PROPERTIES_STORED 5024L
+#define ERROR_NOT_QUORUM_CLASS 5025L
+#define ERROR_CORE_RESOURCE 5026L
+#define ERROR_QUORUM_RESOURCE_ONLINE_FAILED 5027L
+#define ERROR_QUORUMLOG_OPEN_FAILED 5028L
+#define ERROR_CLUSTERLOG_CORRUPT 5029L
+#define ERROR_CLUSTERLOG_RECORD_EXCEEDS_MAXSIZE 5030L
+#define ERROR_CLUSTERLOG_EXCEEDS_MAXSIZE 5031L
+#define ERROR_CLUSTERLOG_CHKPOINT_NOT_FOUND 5032L
+#define ERROR_CLUSTERLOG_NOT_ENOUGH_SPACE 5033L
+#define ERROR_QUORUM_OWNER_ALIVE 5034L
+#define ERROR_NETWORK_NOT_AVAILABLE 5035L
+#define ERROR_NODE_NOT_AVAILABLE 5036L
+#define ERROR_ALL_NODES_NOT_AVAILABLE 5037L
+#define ERROR_RESOURCE_FAILED 5038L
+#define ERROR_CLUSTER_INVALID_NODE 5039L
+#define ERROR_CLUSTER_NODE_EXISTS 5040L
+#define ERROR_CLUSTER_JOIN_IN_PROGRESS 5041L
+#define ERROR_CLUSTER_NODE_NOT_FOUND 5042L
+#define ERROR_CLUSTER_LOCAL_NODE_NOT_FOUND 5043L
+#define ERROR_CLUSTER_NETWORK_EXISTS 5044L
+#define ERROR_CLUSTER_NETWORK_NOT_FOUND 5045L
+#define ERROR_CLUSTER_NETINTERFACE_EXISTS 5046L
+#define ERROR_CLUSTER_NETINTERFACE_NOT_FOUND 5047L
+#define ERROR_CLUSTER_INVALID_REQUEST 5048L
+#define ERROR_CLUSTER_INVALID_NETWORK_PROVIDER 5049L
+#define ERROR_CLUSTER_NODE_DOWN 5050L
+#define ERROR_CLUSTER_NODE_UNREACHABLE 5051L
+#define ERROR_CLUSTER_NODE_NOT_MEMBER 5052L
+#define ERROR_CLUSTER_JOIN_NOT_IN_PROGRESS 5053L
+#define ERROR_CLUSTER_INVALID_NETWORK 5054L
+#define ERROR_CLUSTER_NODE_UP 5056L
+#define ERROR_CLUSTER_IPADDR_IN_USE 5057L
+#define ERROR_CLUSTER_NODE_NOT_PAUSED 5058L
+#define ERROR_CLUSTER_NO_SECURITY_CONTEXT 5059L
+#define ERROR_CLUSTER_NETWORK_NOT_INTERNAL 5060L
+#define ERROR_CLUSTER_NODE_ALREADY_UP 5061L
+#define ERROR_CLUSTER_NODE_ALREADY_DOWN 5062L
+#define ERROR_CLUSTER_NETWORK_ALREADY_ONLINE 5063L
+#define ERROR_CLUSTER_NETWORK_ALREADY_OFFLINE 5064L
+#define ERROR_CLUSTER_NODE_ALREADY_MEMBER 5065L
+#define ERROR_CLUSTER_LAST_INTERNAL_NETWORK 5066L
+#define ERROR_CLUSTER_NETWORK_HAS_DEPENDENTS 5067L
+#define ERROR_INVALID_OPERATION_ON_QUORUM 5068L
+#define ERROR_DEPENDENCY_NOT_ALLOWED 5069L
+#define ERROR_CLUSTER_NODE_PAUSED 5070L
+#define ERROR_NODE_CANT_HOST_RESOURCE 5071L
+#define ERROR_CLUSTER_NODE_NOT_READY 5072L
+#define ERROR_CLUSTER_NODE_SHUTTING_DOWN 5073L
+#define ERROR_CLUSTER_JOIN_ABORTED 5074L
+#define ERROR_CLUSTER_INCOMPATIBLE_VERSIONS 5075L
+#define ERROR_CLUSTER_MAXNUM_OF_RESOURCES_EXCEEDED 5076L
+#define ERROR_CLUSTER_SYSTEM_CONFIG_CHANGED 5077L
+#define ERROR_CLUSTER_RESOURCE_TYPE_NOT_FOUND 5078L
+#define ERROR_CLUSTER_RESTYPE_NOT_SUPPORTED 5079L
+#define ERROR_CLUSTER_RESNAME_NOT_FOUND 5080L
+#define ERROR_CLUSTER_NO_RPC_PACKAGES_REGISTERED 5081L
+#define ERROR_CLUSTER_OWNER_NOT_IN_PREFLIST 5082L
+#define ERROR_CLUSTER_DATABASE_SEQMISMATCH 5083L
+#define ERROR_RESMON_INVALID_STATE 5084L
+#define ERROR_CLUSTER_GUM_NOT_LOCKER 5085L
+#define ERROR_QUORUM_DISK_NOT_FOUND 5086L
+#define ERROR_DATABASE_BACKUP_CORRUPT 5087L
+#define ERROR_CLUSTER_NODE_ALREADY_HAS_DFS_ROOT 5088L
+#define ERROR_RESOURCE_PROPERTY_UNCHANGEABLE 5089L
+#define ERROR_CLUSTER_MEMBERSHIP_INVALID_STATE 5890L
+#define ERROR_CLUSTER_QUORUMLOG_NOT_FOUND 5891L
+#define ERROR_CLUSTER_MEMBERSHIP_HALT 5892L
+#define ERROR_CLUSTER_INSTANCE_ID_MISMATCH 5893L
+#define ERROR_CLUSTER_NETWORK_NOT_FOUND_FOR_IP 5894L
+#define ERROR_CLUSTER_PROPERTY_DATA_TYPE_MISMATCH 5895L
+#define ERROR_CLUSTER_EVICT_WITHOUT_CLEANUP 5896L
+#define ERROR_CLUSTER_PARAMETER_MISMATCH 5897L
+#define ERROR_NODE_CANNOT_BE_CLUSTERED 5898L
+#define ERROR_CLUSTER_WRONG_OS_VERSION 5899L
+#define ERROR_CLUSTER_CANT_CREATE_DUP_CLUSTER_NAME 5900L
+#define ERROR_CLUSCFG_ALREADY_COMMITTED 5901L
+#define ERROR_CLUSCFG_ROLLBACK_FAILED 5902L
+#define ERROR_CLUSCFG_SYSTEM_DISK_DRIVE_LETTER_CONFLICT 5903L
+#define ERROR_CLUSTER_OLD_VERSION 5904L
+#define ERROR_CLUSTER_MISMATCHED_COMPUTER_ACCT_NAME 5905L
+#define ERROR_ENCRYPTION_FAILED 6000L
+#define ERROR_DECRYPTION_FAILED 6001L
+#define ERROR_FILE_ENCRYPTED 6002L
+#define ERROR_NO_RECOVERY_POLICY 6003L
+#define ERROR_NO_EFS 6004L
+#define ERROR_WRONG_EFS 6005L
+#define ERROR_NO_USER_KEYS 6006L
+#define ERROR_FILE_NOT_ENCRYPTED 6007L
+#define ERROR_NOT_EXPORT_FORMAT 6008L
+#define ERROR_FILE_READ_ONLY 6009L
+#define ERROR_DIR_EFS_DISALLOWED 6010L
+#define ERROR_EFS_SERVER_NOT_TRUSTED 6011L
+#define ERROR_BAD_RECOVERY_POLICY 6012L
+#define ERROR_EFS_ALG_BLOB_TOO_BIG 6013L
+#define ERROR_VOLUME_NOT_SUPPORT_EFS 6014L
+#define ERROR_EFS_DISABLED 6015L
+#define ERROR_EFS_VERSION_NOT_SUPPORT 6016L
+#define ERROR_NO_BROWSER_SERVERS_FOUND 6118L
+#define SCHED_E_SERVICE_NOT_LOCALSYSTEM 6200L
+
+#define ERROR_CTX_WINSTATION_NAME_INVALID 7001L
+#define ERROR_CTX_INVALID_PD 7002L
+#define ERROR_CTX_PD_NOT_FOUND 7003L
+#define ERROR_CTX_WD_NOT_FOUND 7004L
+#define ERROR_CTX_CANNOT_MAKE_EVENTLOG_ENTRY 7005L
+#define ERROR_CTX_SERVICE_NAME_COLLISION 7006L
+#define ERROR_CTX_CLOSE_PENDING 7007L
+#define ERROR_CTX_NO_OUTBUF 7008L
+#define ERROR_CTX_MODEM_INF_NOT_FOUND 7009L
+#define ERROR_CTX_INVALID_MODEMNAME 7010L
+#define ERROR_CTX_MODEM_RESPONSE_ERROR 7011L
+#define ERROR_CTX_MODEM_RESPONSE_TIMEOUT 7012L
+#define ERROR_CTX_MODEM_RESPONSE_NO_CARRIER 7013L
+#define ERROR_CTX_MODEM_RESPONSE_NO_DIALTONE 7014L
+#define ERROR_CTX_MODEM_RESPONSE_BUSY 7015L
+#define ERROR_CTX_MODEM_RESPONSE_VOICE 7016L
+#define ERROR_CTX_TD_ERROR 7017L
+#define ERROR_CTX_WINSTATION_NOT_FOUND 7022L
+#define ERROR_CTX_WINSTATION_ALREADY_EXISTS 7023L
+#define ERROR_CTX_WINSTATION_BUSY 7024L
+#define ERROR_CTX_BAD_VIDEO_MODE 7025L
+#define ERROR_CTX_GRAPHICS_INVALID 7035L
+#define ERROR_CTX_LOGON_DISABLED 7037L
+#define ERROR_CTX_NOT_CONSOLE 7038L
+#define ERROR_CTX_CLIENT_QUERY_TIMEOUT 7040L
+#define ERROR_CTX_CONSOLE_DISCONNECT 7041L
+#define ERROR_CTX_CONSOLE_CONNECT 7042L
+#define ERROR_CTX_SHADOW_DENIED 7044L
+#define ERROR_CTX_WINSTATION_ACCESS_DENIED 7045L
+#define ERROR_CTX_INVALID_WD 7049L
+#define ERROR_CTX_SHADOW_INVALID 7050L
+#define ERROR_CTX_SHADOW_DISABLED 7051L
+#define ERROR_CTX_CLIENT_LICENSE_IN_USE 7052L
+#define ERROR_CTX_CLIENT_LICENSE_NOT_SET 7053L
+#define ERROR_CTX_LICENSE_NOT_AVAILABLE 7054L
+#define ERROR_CTX_LICENSE_CLIENT_INVALID 7055L
+#define ERROR_CTX_LICENSE_EXPIRED 7056L
+#define ERROR_CTX_SHADOW_NOT_RUNNING 7057L
+#define ERROR_CTX_SHADOW_ENDED_BY_MODE_CHANGE 7058L
+#define ERROR_ACTIVATION_COUNT_EXCEEDED 7059L
+
+#define FRS_ERR_INVALID_API_SEQUENCE 8001L
+#define FRS_ERR_STARTING_SERVICE 8002L
+#define FRS_ERR_STOPPING_SERVICE 8003L
+#define FRS_ERR_INTERNAL_API 8004L
+#define FRS_ERR_INTERNAL 8005L
+#define FRS_ERR_SERVICE_COMM 8006L
+#define FRS_ERR_INSUFFICIENT_PRIV 8007L
+#define FRS_ERR_AUTHENTICATION 8008L
+#define FRS_ERR_PARENT_INSUFFICIENT_PRIV 8009L
+#define FRS_ERR_PARENT_AUTHENTICATION 8010L
+#define FRS_ERR_CHILD_TO_PARENT_COMM 8011L
+#define FRS_ERR_PARENT_TO_CHILD_COMM 8012L
+#define FRS_ERR_SYSVOL_POPULATE 8013L
+#define FRS_ERR_SYSVOL_POPULATE_TIMEOUT 8014L
+#define FRS_ERR_SYSVOL_IS_BUSY 8015L
+#define FRS_ERR_SYSVOL_DEMOTE 8016L
+#define FRS_ERR_INVALID_SERVICE_PARAMETER 8017L
+#define ERROR_DS_NOT_INSTALLED 8200L
+#define ERROR_DS_MEMBERSHIP_EVALUATED_LOCALLY 8201L
+#define ERROR_DS_NO_ATTRIBUTE_OR_VALUE 8202L
+#define ERROR_DS_INVALID_ATTRIBUTE_SYNTAX 8203L
+#define ERROR_DS_ATTRIBUTE_TYPE_UNDEFINED 8204L
+#define ERROR_DS_ATTRIBUTE_OR_VALUE_EXISTS 8205L
+#define ERROR_DS_BUSY 8206L
+#define ERROR_DS_UNAVAILABLE 8207L
+#define ERROR_DS_NO_RIDS_ALLOCATED 8208L
+#define ERROR_DS_NO_MORE_RIDS 8209L
+#define ERROR_DS_INCORRECT_ROLE_OWNER 8210L
+#define ERROR_DS_RIDMGR_INIT_ERROR 8211L
+#define ERROR_DS_OBJ_CLASS_VIOLATION 8212L
+#define ERROR_DS_CANT_ON_NON_LEAF 8213L
+#define ERROR_DS_CANT_ON_RDN 8214L
+#define ERROR_DS_CANT_MOD_OBJ_CLASS 8215L
+#define ERROR_DS_CROSS_DOM_MOVE_ERROR 8216L
+#define ERROR_DS_GC_NOT_AVAILABLE 8217L
+#define ERROR_SHARED_POLICY 8218L
+#define ERROR_POLICY_OBJECT_NOT_FOUND 8219L
+#define ERROR_POLICY_ONLY_IN_DS 8220L
+#define ERROR_PROMOTION_ACTIVE 8221L
+#define ERROR_NO_PROMOTION_ACTIVE 8222L
+#define ERROR_DS_OPERATIONS_ERROR 8224L
+#define ERROR_DS_PROTOCOL_ERROR 8225L
+#define ERROR_DS_TIMELIMIT_EXCEEDED 8226L
+#define ERROR_DS_SIZELIMIT_EXCEEDED 8227L
+#define ERROR_DS_ADMIN_LIMIT_EXCEEDED 8228L
+#define ERROR_DS_COMPARE_FALSE 8229L
+#define ERROR_DS_COMPARE_TRUE 8230L
+#define ERROR_DS_AUTH_METHOD_NOT_SUPPORTED 8231L
+#define ERROR_DS_STRONG_AUTH_REQUIRED 8232L
+#define ERROR_DS_INAPPROPRIATE_AUTH 8233L
+#define ERROR_DS_AUTH_UNKNOWN 8234L
+#define ERROR_DS_REFERRAL 8235L
+#define ERROR_DS_UNAVAILABLE_CRIT_EXTENSION 8236L
+#define ERROR_DS_CONFIDENTIALITY_REQUIRED 8237L
+#define ERROR_DS_INAPPROPRIATE_MATCHING 8238L
+#define ERROR_DS_CONSTRAINT_VIOLATION 8239L
+#define ERROR_DS_NO_SUCH_OBJECT 8240L
+#define ERROR_DS_ALIAS_PROBLEM 8241L
+#define ERROR_DS_INVALID_DN_SYNTAX 8242L
+#define ERROR_DS_IS_LEAF 8243L
+#define ERROR_DS_ALIAS_DEREF_PROBLEM 8244L
+#define ERROR_DS_UNWILLING_TO_PERFORM 8245L
+#define ERROR_DS_LOOP_DETECT 8246L
+#define ERROR_DS_NAMING_VIOLATION 8247L
+#define ERROR_DS_OBJECT_RESULTS_TOO_LARGE 8248L
+#define ERROR_DS_AFFECTS_MULTIPLE_DSAS 8249L
+#define ERROR_DS_SERVER_DOWN 8250L
+#define ERROR_DS_LOCAL_ERROR 8251L
+#define ERROR_DS_ENCODING_ERROR 8252L
+#define ERROR_DS_DECODING_ERROR 8253L
+#define ERROR_DS_FILTER_UNKNOWN 8254L
+#define ERROR_DS_PARAM_ERROR 8255L
+#define ERROR_DS_NOT_SUPPORTED 8256L
+#define ERROR_DS_NO_RESULTS_RETURNED 8257L
+#define ERROR_DS_CONTROL_NOT_FOUND 8258L
+#define ERROR_DS_CLIENT_LOOP 8259L
+#define ERROR_DS_REFERRAL_LIMIT_EXCEEDED 8260L
+#define ERROR_DS_SORT_CONTROL_MISSING 8261L
+#define ERROR_DS_OFFSET_RANGE_ERROR 8262L
+#define ERROR_DS_ROOT_MUST_BE_NC 8301L
+#define ERROR_DS_ADD_REPLICA_INHIBITED 8302L
+#define ERROR_DS_ATT_NOT_DEF_IN_SCHEMA 8303L
+#define ERROR_DS_MAX_OBJ_SIZE_EXCEEDED 8304L
+#define ERROR_DS_OBJ_STRING_NAME_EXISTS 8305L
+#define ERROR_DS_NO_RDN_DEFINED_IN_SCHEMA 8306L
+#define ERROR_DS_RDN_DOESNT_MATCH_SCHEMA 8307L
+#define ERROR_DS_NO_REQUESTED_ATTS_FOUND 8308L
+#define ERROR_DS_USER_BUFFER_TO_SMALL 8309L
+#define ERROR_DS_ATT_IS_NOT_ON_OBJ 8310L
+#define ERROR_DS_ILLEGAL_MOD_OPERATION 8311L
+#define ERROR_DS_OBJ_TOO_LARGE 8312L
+#define ERROR_DS_BAD_INSTANCE_TYPE 8313L
+#define ERROR_DS_MASTERDSA_REQUIRED 8314L
+#define ERROR_DS_OBJECT_CLASS_REQUIRED 8315L
+#define ERROR_DS_MISSING_REQUIRED_ATT 8316L
+#define ERROR_DS_ATT_NOT_DEF_FOR_CLASS 8317L
+#define ERROR_DS_ATT_ALREADY_EXISTS 8318L
+#define ERROR_DS_CANT_ADD_ATT_VALUES 8320L
+#define ERROR_DS_SINGLE_VALUE_CONSTRAINT 8321L
+#define ERROR_DS_RANGE_CONSTRAINT 8322L
+#define ERROR_DS_ATT_VAL_ALREADY_EXISTS 8323L
+#define ERROR_DS_CANT_REM_MISSING_ATT 8324L
+#define ERROR_DS_CANT_REM_MISSING_ATT_VAL 8325L
+#define ERROR_DS_ROOT_CANT_BE_SUBREF 8326L
+#define ERROR_DS_NO_CHAINING 8327L
+#define ERROR_DS_NO_CHAINED_EVAL 8328L
+#define ERROR_DS_NO_PARENT_OBJECT 8329L
+#define ERROR_DS_PARENT_IS_AN_ALIAS 8330L
+#define ERROR_DS_CANT_MIX_MASTER_AND_REPS 8331L
+#define ERROR_DS_CHILDREN_EXIST 8332L
+#define ERROR_DS_OBJ_NOT_FOUND 8333L
+#define ERROR_DS_ALIASED_OBJ_MISSING 8334L
+#define ERROR_DS_BAD_NAME_SYNTAX 8335L
+#define ERROR_DS_ALIAS_POINTS_TO_ALIAS 8336L
+#define ERROR_DS_CANT_DEREF_ALIAS 8337L
+#define ERROR_DS_OUT_OF_SCOPE 8338L
+#define ERROR_DS_OBJECT_BEING_REMOVED 8339L
+#define ERROR_DS_CANT_DELETE_DSA_OBJ 8340L
+#define ERROR_DS_GENERIC_ERROR 8341L
+#define ERROR_DS_DSA_MUST_BE_INT_MASTER 8342L
+#define ERROR_DS_CLASS_NOT_DSA 8343L
+#define ERROR_DS_INSUFF_ACCESS_RIGHTS 8344L
+#define ERROR_DS_ILLEGAL_SUPERIOR 8345L
+#define ERROR_DS_ATTRIBUTE_OWNED_BY_SAM 8346L
+#define ERROR_DS_NAME_TOO_MANY_PARTS 8347L
+#define ERROR_DS_NAME_TOO_LONG 8348L
+#define ERROR_DS_NAME_VALUE_TOO_LONG 8349L
+#define ERROR_DS_NAME_UNPARSEABLE 8350L
+#define ERROR_DS_NAME_TYPE_UNKNOWN 8351L
+#define ERROR_DS_NOT_AN_OBJECT 8352L
+#define ERROR_DS_SEC_DESC_TOO_SHORT 8353L
+#define ERROR_DS_SEC_DESC_INVALID 8354L
+#define ERROR_DS_NO_DELETED_NAME 8355L
+#define ERROR_DS_SUBREF_MUST_HAVE_PARENT 8356L
+#define ERROR_DS_NCNAME_MUST_BE_NC 8357L
+#define ERROR_DS_CANT_ADD_SYSTEM_ONLY 8358L
+#define ERROR_DS_CLASS_MUST_BE_CONCRETE 8359L
+#define ERROR_DS_INVALID_DMD 8360L
+#define ERROR_DS_OBJ_GUID_EXISTS 8361L
+#define ERROR_DS_NOT_ON_BACKLINK 8362L
+#define ERROR_DS_NO_CROSSREF_FOR_NC 8363L
+#define ERROR_DS_SHUTTING_DOWN 8364L
+#define ERROR_DS_UNKNOWN_OPERATION 8365L
+#define ERROR_DS_INVALID_ROLE_OWNER 8366L
+#define ERROR_DS_COULDNT_CONTACT_FSMO 8367L
+#define ERROR_DS_CROSS_NC_DN_RENAME 8368L
+#define ERROR_DS_CANT_MOD_SYSTEM_ONLY 8369L
+#define ERROR_DS_REPLICATOR_ONLY 8370L
+#define ERROR_DS_OBJ_CLASS_NOT_DEFINED 8371L
+#define ERROR_DS_OBJ_CLASS_NOT_SUBCLASS 8372L
+#define ERROR_DS_NAME_REFERENCE_INVALID 8373L
+#define ERROR_DS_CROSS_REF_EXISTS 8374L
+#define ERROR_DS_CANT_DEL_MASTER_CROSSREF 8375L
+#define ERROR_DS_SUBTREE_NOTIFY_NOT_NC_HEAD 8376L
+#define ERROR_DS_NOTIFY_FILTER_TOO_COMPLEX 8377L
+#define ERROR_DS_DUP_RDN 8378L
+#define ERROR_DS_DUP_OID 8379L
+#define ERROR_DS_DUP_MAPI_ID 8380L
+#define ERROR_DS_DUP_SCHEMA_ID_GUID 8381L
+#define ERROR_DS_DUP_LDAP_DISPLAY_NAME 8382L
+#define ERROR_DS_SEMANTIC_ATT_TEST 8383L
+#define ERROR_DS_SYNTAX_MISMATCH 8384L
+#define ERROR_DS_EXISTS_IN_MUST_HAVE 8385L
+#define ERROR_DS_EXISTS_IN_MAY_HAVE 8386L
+#define ERROR_DS_NONEXISTENT_MAY_HAVE 8387L
+#define ERROR_DS_NONEXISTENT_MUST_HAVE 8388L
+#define ERROR_DS_AUX_CLS_TEST_FAIL 8389L
+#define ERROR_DS_NONEXISTENT_POSS_SUP 8390L
+#define ERROR_DS_SUB_CLS_TEST_FAIL 8391L
+#define ERROR_DS_BAD_RDN_ATT_ID_SYNTAX 8392L
+#define ERROR_DS_EXISTS_IN_AUX_CLS 8393L
+#define ERROR_DS_EXISTS_IN_SUB_CLS 8394L
+#define ERROR_DS_EXISTS_IN_POSS_SUP 8395L
+#define ERROR_DS_RECALCSCHEMA_FAILED 8396L
+#define ERROR_DS_TREE_DELETE_NOT_FINISHED 8397L
+#define ERROR_DS_CANT_DELETE 8398L
+#define ERROR_DS_ATT_SCHEMA_REQ_ID 8399L
+#define ERROR_DS_BAD_ATT_SCHEMA_SYNTAX 8400L
+#define ERROR_DS_CANT_CACHE_ATT 8401L
+#define ERROR_DS_CANT_CACHE_CLASS 8402L
+#define ERROR_DS_CANT_REMOVE_ATT_CACHE 8403L
+#define ERROR_DS_CANT_REMOVE_CLASS_CACHE 8404L
+#define ERROR_DS_CANT_RETRIEVE_DN 8405L
+#define ERROR_DS_MISSING_SUPREF 8406L
+#define ERROR_DS_CANT_RETRIEVE_INSTANCE 8407L
+#define ERROR_DS_CODE_INCONSISTENCY 8408L
+#define ERROR_DS_DATABASE_ERROR 8409L
+#define ERROR_DS_GOVERNSID_MISSING 8410L
+#define ERROR_DS_MISSING_EXPECTED_ATT 8411L
+#define ERROR_DS_NCNAME_MISSING_CR_REF 8412L
+#define ERROR_DS_SECURITY_CHECKING_ERROR 8413L
+#define ERROR_DS_SCHEMA_NOT_LOADED 8414L
+#define ERROR_DS_SCHEMA_ALLOC_FAILED 8415L
+#define ERROR_DS_ATT_SCHEMA_REQ_SYNTAX 8416L
+#define ERROR_DS_GCVERIFY_ERROR 8417L
+#define ERROR_DS_DRA_SCHEMA_MISMATCH 8418L
+#define ERROR_DS_CANT_FIND_DSA_OBJ 8419L
+#define ERROR_DS_CANT_FIND_EXPECTED_NC 8420L
+#define ERROR_DS_CANT_FIND_NC_IN_CACHE 8421L
+#define ERROR_DS_CANT_RETRIEVE_CHILD 8422L
+#define ERROR_DS_SECURITY_ILLEGAL_MODIFY 8423L
+#define ERROR_DS_CANT_REPLACE_HIDDEN_REC 8424L
+#define ERROR_DS_BAD_HIERARCHY_FILE 8425L
+#define ERROR_DS_BUILD_HIERARCHY_TABLE_FAILED 8426L
+#define ERROR_DS_CONFIG_PARAM_MISSING 8427L
+#define ERROR_DS_COUNTING_AB_INDICES_FAILED 8428L
+#define ERROR_DS_HIERARCHY_TABLE_MALLOC_FAILED 8429L
+#define ERROR_DS_INTERNAL_FAILURE 8430L
+#define ERROR_DS_UNKNOWN_ERROR 8431L
+#define ERROR_DS_ROOT_REQUIRES_CLASS_TOP 8432L
+#define ERROR_DS_REFUSING_FSMO_ROLES 8433L
+#define ERROR_DS_MISSING_FSMO_SETTINGS 8434L
+#define ERROR_DS_UNABLE_TO_SURRENDER_ROLES 8435L
+#define ERROR_DS_DRA_GENERIC 8436L
+#define ERROR_DS_DRA_INVALID_PARAMETER 8437L
+#define ERROR_DS_DRA_BUSY 8438L
+#define ERROR_DS_DRA_BAD_DN 8439L
+#define ERROR_DS_DRA_BAD_NC 8440L
+#define ERROR_DS_DRA_DN_EXISTS 8441L
+#define ERROR_DS_DRA_INTERNAL_ERROR 8442L
+#define ERROR_DS_DRA_INCONSISTENT_DIT 8443L
+#define ERROR_DS_DRA_CONNECTION_FAILED 8444L
+#define ERROR_DS_DRA_BAD_INSTANCE_TYPE 8445L
+#define ERROR_DS_DRA_OUT_OF_MEM 8446L
+#define ERROR_DS_DRA_MAIL_PROBLEM 8447L
+#define ERROR_DS_DRA_REF_ALREADY_EXISTS 8448L
+#define ERROR_DS_DRA_REF_NOT_FOUND 8449L
+#define ERROR_DS_DRA_OBJ_IS_REP_SOURCE 8450L
+#define ERROR_DS_DRA_DB_ERROR 8451L
+#define ERROR_DS_DRA_NO_REPLICA 8452L
+#define ERROR_DS_DRA_ACCESS_DENIED 8453L
+#define ERROR_DS_DRA_NOT_SUPPORTED 8454L
+#define ERROR_DS_DRA_RPC_CANCELLED 8455L
+#define ERROR_DS_DRA_SOURCE_DISABLED 8456L
+#define ERROR_DS_DRA_SINK_DISABLED 8457L
+#define ERROR_DS_DRA_NAME_COLLISION 8458L
+#define ERROR_DS_DRA_SOURCE_REINSTALLED 8459L
+#define ERROR_DS_DRA_MISSING_PARENT 8460L
+#define ERROR_DS_DRA_PREEMPTED 8461L
+#define ERROR_DS_DRA_ABANDON_SYNC 8462L
+#define ERROR_DS_DRA_SHUTDOWN 8463L
+#define ERROR_DS_DRA_INCOMPATIBLE_PARTIAL_SET 8464L
+#define ERROR_DS_DRA_SOURCE_IS_PARTIAL_REPLICA 8465L
+#define ERROR_DS_DRA_EXTN_CONNECTION_FAILED 8466L
+#define ERROR_DS_INSTALL_SCHEMA_MISMATCH 8467L
+#define ERROR_DS_DUP_LINK_ID 8468L
+#define ERROR_DS_NAME_ERROR_RESOLVING 8469L
+#define ERROR_DS_NAME_ERROR_NOT_FOUND 8470L
+#define ERROR_DS_NAME_ERROR_NOT_UNIQUE 8471L
+#define ERROR_DS_NAME_ERROR_NO_MAPPING 8472L
+#define ERROR_DS_NAME_ERROR_DOMAIN_ONLY 8473L
+#define ERROR_DS_NAME_ERROR_NO_SYNTACTICAL_MAPPING 8474L
+#define ERROR_DS_CONSTRUCTED_ATT_MOD 8475L
+#define ERROR_DS_WRONG_OM_OBJ_CLASS 8476L
+#define ERROR_DS_DRA_REPL_PENDING 8477L
+#define ERROR_DS_DS_REQUIRED 8478L
+#define ERROR_DS_INVALID_LDAP_DISPLAY_NAME 8479L
+#define ERROR_DS_NON_BASE_SEARCH 8480L
+#define ERROR_DS_CANT_RETRIEVE_ATTS 8481L
+#define ERROR_DS_BACKLINK_WITHOUT_LINK 8482L
+#define ERROR_DS_EPOCH_MISMATCH 8483L
+#define ERROR_DS_SRC_NAME_MISMATCH 8484L
+#define ERROR_DS_SRC_AND_DST_NC_IDENTICAL 8485L
+#define ERROR_DS_DST_NC_MISMATCH 8486L
+#define ERROR_DS_NOT_AUTHORITIVE_FOR_DST_NC 8487L
+#define ERROR_DS_SRC_GUID_MISMATCH 8488L
+#define ERROR_DS_CANT_MOVE_DELETED_OBJECT 8489L
+#define ERROR_DS_PDC_OPERATION_IN_PROGRESS 8490L
+#define ERROR_DS_CROSS_DOMAIN_CLEANUP_REQD 8491L
+#define ERROR_DS_ILLEGAL_XDOM_MOVE_OPERATION 8492L
+#define ERROR_DS_CANT_WITH_ACCT_GROUP_MEMBERSHPS 8493L
+#define ERROR_DS_NC_MUST_HAVE_NC_PARENT 8494L
+#define ERROR_DS_CR_IMPOSSIBLE_TO_VALIDATE 8495L
+#define ERROR_DS_DST_DOMAIN_NOT_NATIVE 8496L
+#define ERROR_DS_MISSING_INFRASTRUCTURE_CONTAINER 8497L
+#define ERROR_DS_CANT_MOVE_ACCOUNT_GROUP 8498L
+#define ERROR_DS_CANT_MOVE_RESOURCE_GROUP 8499L
+#define ERROR_DS_INVALID_SEARCH_FLAG 8500L
+#define ERROR_DS_NO_TREE_DELETE_ABOVE_NC 8501L
+#define ERROR_DS_COULDNT_LOCK_TREE_FOR_DELETE 8502L
+#define ERROR_DS_COULDNT_IDENTIFY_OBJECTS_FOR_TREE_DELETE 8503L
+#define ERROR_DS_SAM_INIT_FAILURE 8504L
+#define ERROR_DS_SENSITIVE_GROUP_VIOLATION 8505L
+#define ERROR_DS_CANT_MOD_PRIMARYGROUPID 8506L
+#define ERROR_DS_ILLEGAL_BASE_SCHEMA_MOD 8507L
+#define ERROR_DS_NONSAFE_SCHEMA_CHANGE 8508L
+#define ERROR_DS_SCHEMA_UPDATE_DISALLOWED 8509L
+#define ERROR_DS_CANT_CREATE_UNDER_SCHEMA 8510L
+#define ERROR_DS_INSTALL_NO_SRC_SCH_VERSION 8511L
+#define ERROR_DS_INSTALL_NO_SCH_VERSION_IN_INIFILE 8512L
+#define ERROR_DS_INVALID_GROUP_TYPE 8513L
+#define ERROR_DS_NO_NEST_GLOBALGROUP_IN_MIXEDDOMAIN 8514L
+#define ERROR_DS_NO_NEST_LOCALGROUP_IN_MIXEDDOMAIN 8515L
+#define ERROR_DS_GLOBAL_CANT_HAVE_LOCAL_MEMBER 8516L
+#define ERROR_DS_GLOBAL_CANT_HAVE_UNIVERSAL_MEMBER 8517L
+#define ERROR_DS_UNIVERSAL_CANT_HAVE_LOCAL_MEMBER 8518L
+#define ERROR_DS_GLOBAL_CANT_HAVE_CROSSDOMAIN_MEMBER 8519L
+#define ERROR_DS_LOCAL_CANT_HAVE_CROSSDOMAIN_LOCAL_MEMBER 8520L
+#define ERROR_DS_HAVE_PRIMARY_MEMBERS 8521L
+#define ERROR_DS_STRING_SD_CONVERSION_FAILED 8522L
+#define ERROR_DS_NAMING_MASTER_GC 8523L
+#define ERROR_DS_DNS_LOOKUP_FAILURE 8524L
+#define ERROR_DS_COULDNT_UPDATE_SPNS 8525L
+#define ERROR_DS_CANT_RETRIEVE_SD 8526L
+#define ERROR_DS_KEY_NOT_UNIQUE 8527L
+#define ERROR_DS_WRONG_LINKED_ATT_SYNTAX 8528L
+#define ERROR_DS_SAM_NEED_BOOTKEY_PASSWORD 8529L
+#define ERROR_DS_SAM_NEED_BOOTKEY_FLOPPY 8530L
+#define ERROR_DS_CANT_START 8531L
+#define ERROR_DS_INIT_FAILURE 8532L
+#define ERROR_DS_NO_PKT_PRIVACY_ON_CONNECTION 8533L
+#define ERROR_DS_SOURCE_DOMAIN_IN_FOREST 8534L
+#define ERROR_DS_DESTINATION_DOMAIN_NOT_IN_FOREST 8535L
+#define ERROR_DS_DESTINATION_AUDITING_NOT_ENABLED 8536L
+#define ERROR_DS_CANT_FIND_DC_FOR_SRC_DOMAIN 8537L
+#define ERROR_DS_SRC_OBJ_NOT_GROUP_OR_USER 8538L
+#define ERROR_DS_SRC_SID_EXISTS_IN_FOREST 8539L
+#define ERROR_DS_SRC_AND_DST_OBJECT_CLASS_MISMATCH 8540L
+#define ERROR_SAM_INIT_FAILURE 8541L
+#define ERROR_DS_DRA_SCHEMA_INFO_SHIP 8542L
+#define ERROR_DS_DRA_SCHEMA_CONFLICT 8543L
+#define ERROR_DS_DRA_EARLIER_SCHEMA_CONFLICT 8544L
+#define ERROR_DS_DRA_OBJ_NC_MISMATCH 8545L
+#define ERROR_DS_NC_STILL_HAS_DSAS 8546L
+#define ERROR_DS_GC_REQUIRED 8547L
+#define ERROR_DS_LOCAL_MEMBER_OF_LOCAL_ONLY 8548L
+#define ERROR_DS_NO_FPO_IN_UNIVERSAL_GROUPS 8549L
+#define ERROR_DS_CANT_ADD_TO_GC 8550L
+#define ERROR_DS_NO_CHECKPOINT_WITH_PDC 8551L
+#define ERROR_DS_SOURCE_AUDITING_NOT_ENABLED 8552L
+#define ERROR_DS_CANT_CREATE_IN_NONDOMAIN_NC 8553L
+#define ERROR_DS_INVALID_NAME_FOR_SPN 8554L
+#define ERROR_DS_FILTER_USES_CONTRUCTED_ATTRS 8555L
+#define ERROR_DS_UNICODEPWD_NOT_IN_QUOTES 8556L
+#define ERROR_DS_MACHINE_ACCOUNT_QUOTA_EXCEEDED 8557L
+#define ERROR_DS_MUST_BE_RUN_ON_DST_DC 8558L
+#define ERROR_DS_SRC_DC_MUST_BE_SP4_OR_GREATER 8559L
+#define ERROR_DS_CANT_TREE_DELETE_CRITICAL_OBJ 8560L
+#define ERROR_DS_INIT_FAILURE_CONSOLE 8561L
+#define ERROR_DS_SAM_INIT_FAILURE_CONSOLE 8562L
+#define ERROR_DS_FOREST_VERSION_TOO_HIGH 8563L
+#define ERROR_DS_DOMAIN_VERSION_TOO_HIGH 8564L
+#define ERROR_DS_FOREST_VERSION_TOO_LOW 8565L
+#define ERROR_DS_DOMAIN_VERSION_TOO_LOW 8566L
+#define ERROR_DS_INCOMPATIBLE_VERSION 8567L
+#define ERROR_DS_LOW_DSA_VERSION 8568L
+#define ERROR_DS_NO_BEHAVIOR_VERSION_IN_MIXEDDOMAIN 8569L
+#define ERROR_DS_NOT_SUPPORTED_SORT_ORDER 8570L
+#define ERROR_DS_NAME_NOT_UNIQUE 8571L
+#define ERROR_DS_MACHINE_ACCOUNT_CREATED_PRENT4 8572L
+#define ERROR_DS_OUT_OF_VERSION_STORE 8573L
+#define ERROR_DS_INCOMPATIBLE_CONTROLS_USED 8574L
+#define ERROR_DS_NO_REF_DOMAIN 8575L
+#define ERROR_DS_RESERVED_LINK_ID 8576L
+#define ERROR_DS_LINK_ID_NOT_AVAILABLE 8577L
+#define ERROR_DS_AG_CANT_HAVE_UNIVERSAL_MEMBER 8578L
+#define ERROR_DS_MODIFYDN_DISALLOWED_BY_INSTANCE_TYPE 8579L
+#define ERROR_DS_NO_OBJECT_MOVE_IN_SCHEMA_NC 8580L
+#define ERROR_DS_MODIFYDN_DISALLOWED_BY_FLAG 8581L
+#define ERROR_DS_MODIFYDN_WRONG_GRANDPARENT 8582L
+#define ERROR_DS_NAME_ERROR_TRUST_REFERRAL 8583L
+#define ERROR_NOT_SUPPORTED_ON_STANDARD_SERVER 8584L
+#define ERROR_DS_CANT_ACCESS_REMOTE_PART_OF_AD 8585L
+#define ERROR_DS_CR_IMPOSSIBLE_TO_VALIDATE_V2 8586L
+#define ERROR_DS_THREAD_LIMIT_EXCEEDED 8587L
+#define ERROR_DS_NOT_CLOSEST 8588L
+#define ERROR_DS_CANT_DERIVE_SPN_WITHOUT_SERVER_REF 8589L
+#define ERROR_DS_SINGLE_USER_MODE_FAILED 8590L
+#define ERROR_DS_NTDSCRIPT_SYNTAX_ERROR 8591L
+#define ERROR_DS_NTDSCRIPT_PROCESS_ERROR 8592L
+#define ERROR_DS_DIFFERENT_REPL_EPOCHS 8593L
+#define ERROR_DS_DRS_EXTENSIONS_CHANGED 8594L
+#define ERROR_DS_REPLICA_SET_CHANGE_NOT_ALLOWED_ON_DISABLED_CR 8595L
+#define ERROR_DS_NO_MSDS_INTID 8596L
+#define ERROR_DS_DUP_MSDS_INTID 8597L
+#define ERROR_DS_EXISTS_IN_RDNATTID 8598L
+#define ERROR_DS_AUTHORIZATION_FAILED 8599L
+#define ERROR_DS_INVALID_SCRIPT 8600L
+#define ERROR_DS_REMOTE_CROSSREF_OP_FAILED 8601L
+#define ERROR_DS_CROSS_REF_BUSY 8602L
+#define ERROR_DS_CANT_DERIVE_SPN_FOR_DELETED_DOMAIN 8603L
+#define ERROR_DS_CANT_DEMOTE_WITH_WRITEABLE_NC 8604L
+#define ERROR_DS_DUPLICATE_ID_FOUND 8605L
+#define ERROR_DS_INSUFFICIENT_ATTR_TO_CREATE_OBJECT 8606L
+#define ERROR_DS_GROUP_CONVERSION_ERROR 8607L
+#define ERROR_DS_CANT_MOVE_APP_BASIC_GROUP 8608L
+#define ERROR_DS_CANT_MOVE_APP_QUERY_GROUP 8609L
+#define ERROR_DS_ROLE_NOT_VERIFIED 8610L
+#define ERROR_DS_WKO_CONTAINER_CANNOT_BE_SPECIAL 8611L
+#define ERROR_DS_DOMAIN_RENAME_IN_PROGRESS 8612L
+#define ERROR_DS_EXISTING_AD_CHILD_NC 8613L
+#define DNS_ERROR_RCODE_FORMAT_ERROR 9001L
+#define DNS_ERROR_RCODE_SERVER_FAILURE 9002L
+#define DNS_ERROR_RCODE_NAME_ERROR 9003L
+#define DNS_ERROR_RCODE_NOT_IMPLEMENTED 9004L
+#define DNS_ERROR_RCODE_REFUSED 9005L
+#define DNS_ERROR_RCODE_YXDOMAIN 9006L
+#define DNS_ERROR_RCODE_YXRRSET 9007L
+#define DNS_ERROR_RCODE_NXRRSET 9008L
+#define DNS_ERROR_RCODE_NOTAUTH 9009L
+#define DNS_ERROR_RCODE_NOTZONE 9010L
+#define DNS_ERROR_RCODE_BADSIG 9016L
+#define DNS_ERROR_RCODE_BADKEY 9017L
+#define DNS_ERROR_RCODE_BADTIME 9018L
+#define DNS_INFO_NO_RECORDS 9501L
+#define DNS_ERROR_BAD_PACKET 9502L
+#define DNS_ERROR_NO_PACKET 9503L
+#define DNS_ERROR_RCODE 9504L
+#define DNS_ERROR_UNSECURE_PACKET 9505L
+#define DNS_ERROR_INVALID_TYPE 9551L
+#define DNS_ERROR_INVALID_IP_ADDRESS 9552L
+#define DNS_ERROR_INVALID_PROPERTY 9553L
+#define DNS_ERROR_TRY_AGAIN_LATER 9554L
+#define DNS_ERROR_NOT_UNIQUE 9555L
+#define DNS_ERROR_NON_RFC_NAME 9556L
+#define DNS_STATUS_FQDN 9557L
+#define DNS_STATUS_DOTTED_NAME 9558L
+#define DNS_STATUS_SINGLE_PART_NAME 9559L
+#define DNS_ERROR_INVALID_NAME_CHAR 9560L
+#define DNS_ERROR_NUMERIC_NAME 9561L
+#define DNS_ERROR_NOT_ALLOWED_ON_ROOT_SERVER 9562L
+#define DNS_ERROR_NOT_ALLOWED_UNDER_DELEGATION 9563L
+#define DNS_ERROR_CANNOT_FIND_ROOT_HINTS 9564L
+#define DNS_ERROR_INCONSISTENT_ROOT_HINTS 9565L
+#define DNS_ERROR_ZONE_DOES_NOT_EXIST 9601L
+#define DNS_ERROR_NO_ZONE_INFO 9602L
+#define DNS_ERROR_INVALID_ZONE_OPERATION 9603L
+#define DNS_ERROR_ZONE_CONFIGURATION_ERROR 9604L
+#define DNS_ERROR_ZONE_HAS_NO_SOA_RECORD 9605L
+#define DNS_ERROR_ZONE_HAS_NO_NS_RECORDS 9606L
+#define DNS_ERROR_ZONE_LOCKED 9607L
+#define DNS_ERROR_ZONE_CREATION_FAILED 9608L
+#define DNS_ERROR_ZONE_ALREADY_EXISTS 9609L
+#define DNS_ERROR_AUTOZONE_ALREADY_EXISTS 9610L
+#define DNS_ERROR_INVALID_ZONE_TYPE 9611L
+#define DNS_ERROR_SECONDARY_REQUIRES_MASTER_IP 9612L
+#define DNS_ERROR_ZONE_NOT_SECONDARY 9613L
+#define DNS_ERROR_NEED_SECONDARY_ADDRESSES 9614L
+#define DNS_ERROR_WINS_INIT_FAILED 9615L
+#define DNS_ERROR_NEED_WINS_SERVERS 9616L
+#define DNS_ERROR_NBSTAT_INIT_FAILED 9617L
+#define DNS_ERROR_SOA_DELETE_INVALID 9618L
+#define DNS_ERROR_FORWARDER_ALREADY_EXISTS 9619L
+#define DNS_ERROR_ZONE_REQUIRES_MASTER_IP 9620L
+#define DNS_ERROR_ZONE_IS_SHUTDOWN 9621L
+#define DNS_ERROR_PRIMARY_REQUIRES_DATAFILE 9651L
+#define DNS_ERROR_INVALID_DATAFILE_NAME 9652L
+#define DNS_ERROR_DATAFILE_OPEN_FAILURE 9653L
+#define DNS_ERROR_FILE_WRITEBACK_FAILED 9654L
+#define DNS_ERROR_DATAFILE_PARSING 9655L
+#define DNS_ERROR_RECORD_DOES_NOT_EXIST 9701L
+#define DNS_ERROR_RECORD_FORMAT 9702L
+#define DNS_ERROR_NODE_CREATION_FAILED 9703L
+#define DNS_ERROR_UNKNOWN_RECORD_TYPE 9704L
+#define DNS_ERROR_RECORD_TIMED_OUT 9705L
+#define DNS_ERROR_NAME_NOT_IN_ZONE 9706L
+#define DNS_ERROR_CNAME_LOOP 9707L
+#define DNS_ERROR_NODE_IS_CNAME 9708L
+#define DNS_ERROR_CNAME_COLLISION 9709L
+#define DNS_ERROR_RECORD_ONLY_AT_ZONE_ROOT 9710L
+#define DNS_ERROR_RECORD_ALREADY_EXISTS 9711L
+#define DNS_ERROR_SECONDARY_DATA 9712L
+#define DNS_ERROR_NO_CREATE_CACHE_DATA 9713L
+#define DNS_ERROR_NAME_DOES_NOT_EXIST 9714L
+#define DNS_WARNING_PTR_CREATE_FAILED 9715L
+#define DNS_WARNING_DOMAIN_UNDELETED 9716L
+#define DNS_ERROR_DS_UNAVAILABLE 9717L
+#define DNS_ERROR_DS_ZONE_ALREADY_EXISTS 9718L
+#define DNS_ERROR_NO_BOOTFILE_IF_DS_ZONE 9719L
+#define DNS_INFO_AXFR_COMPLETE 9751L
+#define DNS_ERROR_AXFR 9752L
+#define DNS_INFO_ADDED_LOCAL_WINS 9753L
+#define DNS_STATUS_CONTINUE_NEEDED 9801L
+#define DNS_ERROR_NO_TCPIP 9851L
+#define DNS_ERROR_NO_DNS_SERVERS 9852L
+#define DNS_ERROR_DP_DOES_NOT_EXIST 9901L
+#define DNS_ERROR_DP_ALREADY_EXISTS 9902L
+#define DNS_ERROR_DP_NOT_ENLISTED 9903L
+#define DNS_ERROR_DP_ALREADY_ENLISTED 9904L
+#define DNS_ERROR_DP_NOT_AVAILABLE 9905L
+
+#ifndef WSABASEERR
+#define WSABASEERR 10000
+#define WSAEINTR 10004L
+#define WSAEBADF 10009L
+#define WSAEACCES 10013L
+#define WSAEFAULT 10014L
+#define WSAEINVAL 10022L
+#define WSAEMFILE 10024L
+#define WSAEWOULDBLOCK 10035L
+#define WSAEINPROGRESS 10036L
+#define WSAEALREADY 10037L
+#define WSAENOTSOCK 10038L
+#define WSAEDESTADDRREQ 10039L
+#define WSAEMSGSIZE 10040L
+#define WSAEPROTOTYPE 10041L
+#define WSAENOPROTOOPT 10042L
+#define WSAEPROTONOSUPPORT 10043L
+#define WSAESOCKTNOSUPPORT 10044L
+#define WSAEOPNOTSUPP 10045L
+#define WSAEPFNOSUPPORT 10046L
+#define WSAEAFNOSUPPORT 10047L
+#define WSAEADDRINUSE 10048L
+#define WSAEADDRNOTAVAIL 10049L
+#define WSAENETDOWN 10050L
+#define WSAENETUNREACH 10051L
+#define WSAENETRESET 10052L
+#define WSAECONNABORTED 10053L
+#define WSAECONNRESET 10054L
+#define WSAENOBUFS 10055L
+#define WSAEISCONN 10056L
+#define WSAENOTCONN 10057L
+#define WSAESHUTDOWN 10058L
+#define WSAETOOMANYREFS 10059L
+#define WSAETIMEDOUT 10060L
+#define WSAECONNREFUSED 10061L
+#define WSAELOOP 10062L
+#define WSAENAMETOOLONG 10063L
+#define WSAEHOSTDOWN 10064L
+#define WSAEHOSTUNREACH 10065L
+#define WSAENOTEMPTY 10066L
+#define WSAEPROCLIM 10067L
+#define WSAEUSERS 10068L
+#define WSAEDQUOT 10069L
+#define WSAESTALE 10070L
+#define WSAEREMOTE 10071L
+#define WSASYSNOTREADY 10091L
+#define WSAVERNOTSUPPORTED 10092L
+#define WSANOTINITIALISED 10093L
+#define WSAEDISCON 10101L
+#define WSAENOMORE 10102L
+#define WSAECANCELLED 10103L
+#define WSAEINVALIDPROCTABLE 10104L
+#define WSAEINVALIDPROVIDER 10105L
+#define WSAEPROVIDERFAILEDINIT 10106L
+#define WSASYSCALLFAILURE 10107L
+#define WSASERVICE_NOT_FOUND 10108L
+#define WSATYPE_NOT_FOUND 10109L
+#define WSA_E_NO_MORE 10110L
+#define WSA_E_CANCELLED 10111L
+#define WSAEREFUSED 10112L
+#define WSAHOST_NOT_FOUND 11001L
+#define WSATRY_AGAIN 11002L
+#define WSANO_RECOVERY 11003L
+#define WSANO_DATA 11004L
+#define WSA_QOS_RECEIVERS 11005L
+#define WSA_QOS_SENDERS 11006L
+#define WSA_QOS_NO_SENDERS 11007L
+#define WSA_QOS_NO_RECEIVERS 11008L
+#define WSA_QOS_REQUEST_CONFIRMED 11009L
+#define WSA_QOS_ADMISSION_FAILURE 11010L
+#define WSA_QOS_POLICY_FAILURE 11011L
+#define WSA_QOS_BAD_STYLE 11012L
+#define WSA_QOS_BAD_OBJECT 11013L
+#define WSA_QOS_TRAFFIC_CTRL_ERROR 11014L
+#define WSA_QOS_GENERIC_ERROR 11015L
+#define WSA_QOS_ESERVICETYPE 11016L
+#define WSA_QOS_EFLOWSPEC 11017L
+#define WSA_QOS_EPROVSPECBUF 11018L
+#define WSA_QOS_EFILTERSTYLE 11019L
+#define WSA_QOS_EFILTERTYPE 11020L
+#define WSA_QOS_EFILTERCOUNT 11021L
+#define WSA_QOS_EOBJLENGTH 11022L
+#define WSA_QOS_EFLOWCOUNT 11023L
+#define WSA_QOS_EUNKOWNPSOBJ 11024L
+#define WSA_QOS_EPOLICYOBJ 11025L
+#define WSA_QOS_EFLOWDESC 11026L
+#define WSA_QOS_EPSFLOWSPEC 11027L
+#define WSA_QOS_EPSFILTERSPEC 11028L
+#define WSA_QOS_ESDMODEOBJ 11029L
+#define WSA_QOS_ESHAPERATEOBJ 11030L
+#define WSA_QOS_RESERVED_PETYPE 11031L
+#endif /* !WSABASEERR */
+
+#define ERROR_IPSEC_QM_POLICY_EXISTS 13000L
+#define ERROR_IPSEC_QM_POLICY_NOT_FOUND 13001L
+#define ERROR_IPSEC_QM_POLICY_IN_USE 13002L
+#define ERROR_IPSEC_MM_POLICY_EXISTS 13003L
+#define ERROR_IPSEC_MM_POLICY_NOT_FOUND 13004L
+#define ERROR_IPSEC_MM_POLICY_IN_USE 13005L
+#define ERROR_IPSEC_MM_FILTER_EXISTS 13006L
+#define ERROR_IPSEC_MM_FILTER_NOT_FOUND 13007L
+#define ERROR_IPSEC_TRANSPORT_FILTER_EXISTS 13008L
+#define ERROR_IPSEC_TRANSPORT_FILTER_NOT_FOUND 13009L
+#define ERROR_IPSEC_MM_AUTH_EXISTS 13010L
+#define ERROR_IPSEC_MM_AUTH_NOT_FOUND 13011L
+#define ERROR_IPSEC_MM_AUTH_IN_USE 13012L
+#define ERROR_IPSEC_DEFAULT_MM_POLICY_NOT_FOUND 13013L
+#define ERROR_IPSEC_DEFAULT_MM_AUTH_NOT_FOUND 13014L
+#define ERROR_IPSEC_DEFAULT_QM_POLICY_NOT_FOUND 13015L
+#define ERROR_IPSEC_TUNNEL_FILTER_EXISTS 13016L
+#define ERROR_IPSEC_TUNNEL_FILTER_NOT_FOUND 13017L
+#define ERROR_IPSEC_MM_FILTER_PENDING_DELETION 13018L
+#define ERROR_IPSEC_TRANSPORT_FILTER_PENDING_DELETION 13019L
+#define ERROR_IPSEC_TUNNEL_FILTER_PENDING_DELETION 13020L
+#define ERROR_IPSEC_MM_POLICY_PENDING_DELETION 13021L
+#define ERROR_IPSEC_MM_AUTH_PENDING_DELETION 13022L
+#define ERROR_IPSEC_QM_POLICY_PENDING_DELETION 13023L
+#define WARNING_IPSEC_MM_POLICY_PRUNED 13024L
+#define WARNING_IPSEC_QM_POLICY_PRUNED 13025L
+#define ERROR_IPSEC_IKE_AUTH_FAIL 13801L
+#define ERROR_IPSEC_IKE_ATTRIB_FAIL 13802L
+#define ERROR_IPSEC_IKE_NEGOTIATION_PENDING 13803L
+#define ERROR_IPSEC_IKE_GENERAL_PROCESSING_ERROR 13804L
+#define ERROR_IPSEC_IKE_TIMED_OUT 13805L
+#define ERROR_IPSEC_IKE_NO_CERT 13806L
+#define ERROR_IPSEC_IKE_SA_DELETED 13807L
+#define ERROR_IPSEC_IKE_SA_REAPED 13808L
+#define ERROR_IPSEC_IKE_MM_ACQUIRE_DROP 13809L
+#define ERROR_IPSEC_IKE_QM_ACQUIRE_DROP 13810L
+#define ERROR_IPSEC_IKE_QUEUE_DROP_MM 13811L
+#define ERROR_IPSEC_IKE_QUEUE_DROP_NO_MM 13812L
+#define ERROR_IPSEC_IKE_DROP_NO_RESPONSE 13813L
+#define ERROR_IPSEC_IKE_MM_DELAY_DROP 13814L
+#define ERROR_IPSEC_IKE_QM_DELAY_DROP 13815L
+#define ERROR_IPSEC_IKE_ERROR 13816L
+#define ERROR_IPSEC_IKE_CRL_FAILED 13817L
+#define ERROR_IPSEC_IKE_INVALID_KEY_USAGE 13818L
+#define ERROR_IPSEC_IKE_INVALID_CERT_TYPE 13819L
+#define ERROR_IPSEC_IKE_NO_PRIVATE_KEY 13820L
+#define ERROR_IPSEC_IKE_DH_FAIL 13822L
+#define ERROR_IPSEC_IKE_INVALID_HEADER 13824L
+#define ERROR_IPSEC_IKE_NO_POLICY 13825L
+#define ERROR_IPSEC_IKE_INVALID_SIGNATURE 13826L
+#define ERROR_IPSEC_IKE_KERBEROS_ERROR 13827L
+#define ERROR_IPSEC_IKE_NO_PUBLIC_KEY 13828L
+#define ERROR_IPSEC_IKE_PROCESS_ERR 13829L
+#define ERROR_IPSEC_IKE_PROCESS_ERR_SA 13830L
+#define ERROR_IPSEC_IKE_PROCESS_ERR_PROP 13831L
+#define ERROR_IPSEC_IKE_PROCESS_ERR_TRANS 13832L
+#define ERROR_IPSEC_IKE_PROCESS_ERR_KE 13833L
+#define ERROR_IPSEC_IKE_PROCESS_ERR_ID 13834L
+#define ERROR_IPSEC_IKE_PROCESS_ERR_CERT 13835L
+#define ERROR_IPSEC_IKE_PROCESS_ERR_CERT_REQ 13836L
+#define ERROR_IPSEC_IKE_PROCESS_ERR_HASH 13837L
+#define ERROR_IPSEC_IKE_PROCESS_ERR_SIG 13838L
+#define ERROR_IPSEC_IKE_PROCESS_ERR_NONCE 13839L
+#define ERROR_IPSEC_IKE_PROCESS_ERR_NOTIFY 13840L
+#define ERROR_IPSEC_IKE_PROCESS_ERR_DELETE 13841L
+#define ERROR_IPSEC_IKE_PROCESS_ERR_VENDOR 13842L
+#define ERROR_IPSEC_IKE_INVALID_PAYLOAD 13843L
+#define ERROR_IPSEC_IKE_LOAD_SOFT_SA 13844L
+#define ERROR_IPSEC_IKE_SOFT_SA_TORN_DOWN 13845L
+#define ERROR_IPSEC_IKE_INVALID_COOKIE 13846L
+#define ERROR_IPSEC_IKE_NO_PEER_CERT 13847L
+#define ERROR_IPSEC_IKE_PEER_CRL_FAILED 13848L
+#define ERROR_IPSEC_IKE_POLICY_CHANGE 13849L
+#define ERROR_IPSEC_IKE_NO_MM_POLICY 13850L
+#define ERROR_IPSEC_IKE_NOTCBPRIV 13851L
+#define ERROR_IPSEC_IKE_SECLOADFAIL 13852L
+#define ERROR_IPSEC_IKE_FAILSSPINIT 13853L
+#define ERROR_IPSEC_IKE_FAILQUERYSSP 13854L
+#define ERROR_IPSEC_IKE_SRVACQFAIL 13855L
+#define ERROR_IPSEC_IKE_SRVQUERYCRED 13856L
+#define ERROR_IPSEC_IKE_GETSPIFAIL 13857L
+#define ERROR_IPSEC_IKE_INVALID_FILTER 13858L
+#define ERROR_IPSEC_IKE_OUT_OF_MEMORY 13859L
+#define ERROR_IPSEC_IKE_ADD_UPDATE_KEY_FAILED 13860L
+#define ERROR_IPSEC_IKE_INVALID_POLICY 13861L
+#define ERROR_IPSEC_IKE_UNKNOWN_DOI 13862L
+#define ERROR_IPSEC_IKE_INVALID_SITUATION 13863L
+#define ERROR_IPSEC_IKE_DH_FAILURE 13864L
+#define ERROR_IPSEC_IKE_INVALID_GROUP 13865L
+#define ERROR_IPSEC_IKE_ENCRYPT 13866L
+#define ERROR_IPSEC_IKE_DECRYPT 13867L
+#define ERROR_IPSEC_IKE_POLICY_MATCH 13868L
+#define ERROR_IPSEC_IKE_UNSUPPORTED_ID 13869L
+#define ERROR_IPSEC_IKE_INVALID_HASH 13870L
+#define ERROR_IPSEC_IKE_INVALID_HASH_ALG 13871L
+#define ERROR_IPSEC_IKE_INVALID_HASH_SIZE 13872L
+#define ERROR_IPSEC_IKE_INVALID_ENCRYPT_ALG 13873L
+#define ERROR_IPSEC_IKE_INVALID_AUTH_ALG 13874L
+#define ERROR_IPSEC_IKE_INVALID_SIG 13875L
+#define ERROR_IPSEC_IKE_LOAD_FAILED 13876L
+#define ERROR_IPSEC_IKE_RPC_DELETE 13877L
+#define ERROR_IPSEC_IKE_BENIGN_REINIT 13878L
+#define ERROR_IPSEC_IKE_INVALID_RESPONDER_LIFETIME_NOTIFY 13879L
+#define ERROR_IPSEC_IKE_INVALID_CERT_KEYLEN 13881L
+#define ERROR_IPSEC_IKE_MM_LIMIT 13882L
+#define ERROR_IPSEC_IKE_NEGOTIATION_DISABLED 13883L
+#define ERROR_IPSEC_IKE_NEG_STATUS_END 13884L
+
+#define ERROR_SXS_SECTION_NOT_FOUND 14000L
+#define ERROR_SXS_CANT_GEN_ACTCTX 14001L
+#define ERROR_SXS_INVALID_ACTCTXDATA_FORMAT 14002L
+#define ERROR_SXS_ASSEMBLY_NOT_FOUND 14003L
+#define ERROR_SXS_MANIFEST_FORMAT_ERROR 14004L
+#define ERROR_SXS_MANIFEST_PARSE_ERROR 14005L
+#define ERROR_SXS_ACTIVATION_CONTEXT_DISABLED 14006L
+#define ERROR_SXS_KEY_NOT_FOUND 14007L
+#define ERROR_SXS_VERSION_CONFLICT 14008L
+#define ERROR_SXS_WRONG_SECTION_TYPE 14009L
+#define ERROR_SXS_THREAD_QUERIES_DISABLED 14010L
+#define ERROR_SXS_PROCESS_DEFAULT_ALREADY_SET 14011L
+#define ERROR_SXS_UNKNOWN_ENCODING_GROUP 14012L
+#define ERROR_SXS_UNKNOWN_ENCODING 14013L
+#define ERROR_SXS_INVALID_XML_NAMESPACE_URI 14014L
+#define ERROR_SXS_ROOT_MANIFEST_DEPENDENCY_NOT_INSTALLED 14015L
+#define ERROR_SXS_LEAF_MANIFEST_DEPENDENCY_NOT_INSTALLED 14016L
+#define ERROR_SXS_INVALID_ASSEMBLY_IDENTITY_ATTRIBUTE 14017L
+#define ERROR_SXS_MANIFEST_MISSING_REQUIRED_DEFAULT_NAMESPACE 14018L
+#define ERROR_SXS_MANIFEST_INVALID_REQUIRED_DEFAULT_NAMESPACE 14019L
+#define ERROR_SXS_PRIVATE_MANIFEST_CROSS_PATH_WITH_REPARSE_POINT 14020L
+#define ERROR_SXS_DUPLICATE_DLL_NAME 14021L
+#define ERROR_SXS_DUPLICATE_WINDOWCLASS_NAME 14022L
+#define ERROR_SXS_DUPLICATE_CLSID 14023L
+#define ERROR_SXS_DUPLICATE_IID 14024L
+#define ERROR_SXS_DUPLICATE_TLBID 14025L
+#define ERROR_SXS_DUPLICATE_PROGID 14026L
+#define ERROR_SXS_DUPLICATE_ASSEMBLY_NAME 14027L
+#define ERROR_SXS_FILE_HASH_MISMATCH 14028L
+#define ERROR_SXS_POLICY_PARSE_ERROR 14029L
+#define ERROR_SXS_XML_E_MISSINGQUOTE 14030L
+#define ERROR_SXS_XML_E_COMMENTSYNTAX 14031L
+#define ERROR_SXS_XML_E_BADSTARTNAMECHAR 14032L
+#define ERROR_SXS_XML_E_BADNAMECHAR 14033L
+#define ERROR_SXS_XML_E_BADCHARINSTRING 14034L
+#define ERROR_SXS_XML_E_XMLDECLSYNTAX 14035L
+#define ERROR_SXS_XML_E_BADCHARDATA 14036L
+#define ERROR_SXS_XML_E_MISSINGWHITESPACE 14037L
+#define ERROR_SXS_XML_E_EXPECTINGTAGEND 14038L
+#define ERROR_SXS_XML_E_MISSINGSEMICOLON 14039L
+#define ERROR_SXS_XML_E_UNBALANCEDPAREN 14040L
+#define ERROR_SXS_XML_E_INTERNALERROR 14041L
+#define ERROR_SXS_XML_E_UNEXPECTED_WHITESPACE 14042L
+#define ERROR_SXS_XML_E_INCOMPLETE_ENCODING 14043L
+#define ERROR_SXS_XML_E_MISSING_PAREN 14044L
+#define ERROR_SXS_XML_E_EXPECTINGCLOSEQUOTE 14045L
+#define ERROR_SXS_XML_E_MULTIPLE_COLONS 14046L
+#define ERROR_SXS_XML_E_INVALID_DECIMAL 14047L
+#define ERROR_SXS_XML_E_INVALID_HEXIDECIMAL 14048L
+#define ERROR_SXS_XML_E_INVALID_UNICODE 14049L
+#define ERROR_SXS_XML_E_WHITESPACEORQUESTIONMARK 14050L
+#define ERROR_SXS_XML_E_UNEXPECTEDENDTAG 14051L
+#define ERROR_SXS_XML_E_UNCLOSEDTAG 14052L
+#define ERROR_SXS_XML_E_DUPLICATEATTRIBUTE 14053L
+#define ERROR_SXS_XML_E_MULTIPLEROOTS 14054L
+#define ERROR_SXS_XML_E_INVALIDATROOTLEVEL 14055L
+#define ERROR_SXS_XML_E_BADXMLDECL 14056L
+#define ERROR_SXS_XML_E_MISSINGROOT 14057L
+#define ERROR_SXS_XML_E_UNEXPECTEDEOF 14058L
+#define ERROR_SXS_XML_E_BADPEREFINSUBSET 14059L
+#define ERROR_SXS_XML_E_UNCLOSEDSTARTTAG 14060L
+#define ERROR_SXS_XML_E_UNCLOSEDENDTAG 14061L
+#define ERROR_SXS_XML_E_UNCLOSEDSTRING 14062L
+#define ERROR_SXS_XML_E_UNCLOSEDCOMMENT 14063L
+#define ERROR_SXS_XML_E_UNCLOSEDDECL 14064L
+#define ERROR_SXS_XML_E_UNCLOSEDCDATA 14065L
+#define ERROR_SXS_XML_E_RESERVEDNAMESPACE 14066L
+#define ERROR_SXS_XML_E_INVALIDENCODING 14067L
+#define ERROR_SXS_XML_E_INVALIDSWITCH 14068L
+#define ERROR_SXS_XML_E_BADXMLCASE 14069L
+#define ERROR_SXS_XML_E_INVALID_STANDALONE 14070L
+#define ERROR_SXS_XML_E_UNEXPECTED_STANDALONE 14071L
+#define ERROR_SXS_XML_E_INVALID_VERSION 14072L
+#define ERROR_SXS_XML_E_MISSINGEQUALS 14073L
+#define ERROR_SXS_PROTECTION_RECOVERY_FAILED 14074L
+#define ERROR_SXS_PROTECTION_PUBLIC_KEY_TOO_SHORT 14075L
+#define ERROR_SXS_PROTECTION_CATALOG_NOT_VALID 14076L
+#define ERROR_SXS_UNTRANSLATABLE_HRESULT 14077L
+#define ERROR_SXS_PROTECTION_CATALOG_FILE_MISSING 14078L
+#define ERROR_SXS_MISSING_ASSEMBLY_IDENTITY_ATTRIBUTE 14079L
+#define ERROR_SXS_INVALID_ASSEMBLY_IDENTITY_ATTRIBUTE_NAME 14080L
+
+//Crypto realted errors
+#define CRYPT_E_NOT_FOUND                _HRESULT_TYPEDEF_(0x80092004L)
+#define CRYPT_E_EXISTS                   _HRESULT_TYPEDEF_(0x80092005L)
+#define CRYPT_E_NO_PROVIDER              _HRESULT_TYPEDEF_(0x80092006L)
+#define CRYPT_E_SELF_SIGNED              _HRESULT_TYPEDEF_(0x80092007L)
+#define CRYPT_E_DELETED_PREV             _HRESULT_TYPEDEF_(0x80092008L)
+#define CRYPT_E_NO_MATCH                 _HRESULT_TYPEDEF_(0x80092009L)
+#define CRYPT_E_UNEXPECTED_MSG_TYPE      _HRESULT_TYPEDEF_(0x8009200AL)
+#define CRYPT_E_NO_KEY_PROPERTY          _HRESULT_TYPEDEF_(0x8009200BL)
+#define CRYPT_E_NO_DECRYPT_CERT          _HRESULT_TYPEDEF_(0x8009200CL)
+#define CRYPT_E_BAD_MSG                  _HRESULT_TYPEDEF_(0x8009200DL)
+#define CRYPT_E_NO_SIGNER                _HRESULT_TYPEDEF_(0x8009200EL)
+#define CRYPT_E_PENDING_CLOSE            _HRESULT_TYPEDEF_(0x8009200FL)
+#define CRYPT_E_NO_REVOCATION_DLL        _HRESULT_TYPEDEF_(0x80092011L)
+#define CRYPT_E_NO_REVOCATION_CHECK      _HRESULT_TYPEDEF_(0x80092012L)
+
+#define SEVERITY_SUCCESS 0
+#define SEVERITY_ERROR 1
+#define FACILITY_WINDOWS 8
+#define FACILITY_STORAGE 3
+#define FACILITY_RPC 1
+#define FACILITY_WIN32 7
+#define FACILITY_CONTROL 10
+#define FACILITY_NULL 0
+#define FACILITY_ITF 4
+#define FACILITY_DISPATCH 2
+#define SUCCEEDED(Status) ((HRESULT)(Status) >= 0)
+#define FAILED(Status) ((HRESULT)(Status)<0)
+#define IS_ERROR(Status) ((unsigned long)(Status) >> 31 == SEVERITY_ERROR)
+#define HRESULT_CODE(r) ((r)&0xFFFF)
+#define SCODE_CODE(c) ((c)&0xFFFF)
+#define HRESULT_FACILITY(r) (((r)>>16)&0x1fff)
+#define SCODE_FACILITY(c) (((c)>>16)&0x1fff)
+#define HRESULT_SEVERITY(r) (((r)>>31)&0x1)
+#define SCODE_SEVERITY(c) (((c)>>31)&0x1)
+#define MAKE_HRESULT(s,f,c) ((HRESULT)(((unsigned long)(s)<<31)|((unsigned long)(f)<<16)|((unsigned long)(c))))
+#define MAKE_SCODE(s,f,c) ((SCODE)(((unsigned long)(s)<<31)|((unsigned long)(f)<<16)|((unsigned long)(c))) )
+#define FACILITY_NT_BIT 0x10000000
+#define HRESULT_FROM_WIN32(x) (x?((HRESULT)(((x)&0x0000FFFF)|(FACILITY_WIN32<<16)|0x80000000)):0)
+#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 NOERROR S_OK
+#define E_UNEXPECTED ((HRESULT)0x8000FFFFL)
+#define E_NOTIMPL ((HRESULT)0x80004001L)
+#define E_OUTOFMEMORY ((HRESULT)0x8007000EL)
+#define E_INVALIDARG ((HRESULT)0x80070057L)
+#define E_NOINTERFACE ((HRESULT)0x80004002L)
+#define E_POINTER ((HRESULT)0x80004003L)
+#define E_HANDLE ((HRESULT)0x80070006L)
+#define E_ABORT ((HRESULT)0x80004004L)
+#define E_FAIL ((HRESULT)0x80004005L)
+#define E_ACCESSDENIED ((HRESULT)0x80070005L)
+#define E_PENDING ((HRESULT)0x8000000AL)
+#define CO_E_INIT_TLS ((HRESULT)0x80004006L)
+#define CO_E_INIT_SHARED_ALLOCATOR ((HRESULT)0x80004007L)
+#define CO_E_INIT_MEMORY_ALLOCATOR ((HRESULT)0x80004008L)
+#define CO_E_INIT_CLASS_CACHE ((HRESULT)0x80004009L)
+#define CO_E_INIT_RPC_CHANNEL ((HRESULT)0x8000400AL)
+#define CO_E_INIT_TLS_SET_CHANNEL_CONTROL ((HRESULT)0x8000400BL)
+#define CO_E_INIT_TLS_CHANNEL_CONTROL ((HRESULT)0x8000400CL)
+#define CO_E_INIT_UNACCEPTED_USER_ALLOCATOR ((HRESULT)0x8000400DL)
+#define CO_E_INIT_SCM_MUTEX_EXISTS ((HRESULT)0x8000400EL)
+#define CO_E_INIT_SCM_FILE_MAPPING_EXISTS ((HRESULT)0x8000400FL)
+#define CO_E_INIT_SCM_MAP_VIEW_OF_FILE ((HRESULT)0x80004010L)
+#define CO_E_INIT_SCM_EXEC_FAILURE ((HRESULT)0x80004011L)
+#define CO_E_INIT_ONLY_SINGLE_THREADED ((HRESULT)0x80004012L)
+#define S_OK ((HRESULT)0x00000000L)
+#define S_FALSE ((HRESULT)0x00000001L)
+#define OLE_E_FIRST ((HRESULT)0x80040000L)
+#define OLE_E_LAST ((HRESULT)0x800400FFL)
+#define OLE_S_FIRST ((HRESULT)0x00040000L)
+#define OLE_S_LAST ((HRESULT)0x000400FFL)
+#define OLE_E_OLEVERB ((HRESULT)0x80040000L)
+#define OLE_E_ADVF ((HRESULT)0x80040001L)
+#define OLE_E_ENUM_NOMORE ((HRESULT)0x80040002L)
+#define OLE_E_ADVISENOTSUPPORTED ((HRESULT)0x80040003L)
+#define OLE_E_NOCONNECTION ((HRESULT)0x80040004L)
+#define OLE_E_NOTRUNNING ((HRESULT)0x80040005L)
+#define OLE_E_NOCACHE ((HRESULT)0x80040006L)
+#define OLE_E_BLANK ((HRESULT)0x80040007L)
+#define OLE_E_CLASSDIFF ((HRESULT)0x80040008L)
+#define OLE_E_CANT_GETMONIKER ((HRESULT)0x80040009L)
+#define OLE_E_CANT_BINDTOSOURCE ((HRESULT)0x8004000AL)
+#define OLE_E_STATIC ((HRESULT)0x8004000BL)
+#define OLE_E_PROMPTSAVECANCELLED ((HRESULT)0x8004000CL)
+#define OLE_E_INVALIDRECT ((HRESULT)0x8004000DL)
+#define OLE_E_WRONGCOMPOBJ ((HRESULT)0x8004000EL)
+#define OLE_E_INVALIDHWND ((HRESULT)0x8004000FL)
+#define OLE_E_NOT_INPLACEACTIVE ((HRESULT)0x80040010L)
+#define OLE_E_CANTCONVERT ((HRESULT)0x80040011L)
+#define OLE_E_NOSTORAGE ((HRESULT)0x80040012L)
+#define DV_E_FORMATETC ((HRESULT)0x80040064L)
+#define DV_E_DVTARGETDEVICE ((HRESULT)0x80040065L)
+#define DV_E_STGMEDIUM ((HRESULT)0x80040066L)
+#define DV_E_STATDATA ((HRESULT)0x80040067L)
+#define DV_E_LINDEX ((HRESULT)0x80040068L)
+#define DV_E_TYMED ((HRESULT)0x80040069L)
+#define DV_E_CLIPFORMAT ((HRESULT)0x8004006AL)
+#define DV_E_DVASPECT ((HRESULT)0x8004006BL)
+#define DV_E_DVTARGETDEVICE_SIZE ((HRESULT)0x8004006CL)
+#define DV_E_NOIVIEWOBJECT ((HRESULT)0x8004006DL)
+#define DRAGDROP_E_FIRST ((HRESULT)0x80040100L)
+#define DRAGDROP_E_LAST ((HRESULT)0x8004010FL)
+#define DRAGDROP_S_FIRST ((HRESULT)0x00040100L)
+#define DRAGDROP_S_LAST ((HRESULT)0x0004010FL)
+#define DRAGDROP_E_NOTREGISTERED ((HRESULT)0x80040100L)
+#define DRAGDROP_E_ALREADYREGISTERED ((HRESULT)0x80040101L)
+#define DRAGDROP_E_INVALIDHWND ((HRESULT)0x80040102L)
+#define CLASSFACTORY_E_FIRST ((HRESULT)0x80040110L)
+#define CLASSFACTORY_E_LAST ((HRESULT)0x8004011FL)
+#define CLASSFACTORY_S_FIRST ((HRESULT)0x00040110L)
+#define CLASSFACTORY_S_LAST ((HRESULT)0x0004011FL)
+#define CLASS_E_NOAGGREGATION ((HRESULT)0x80040110L)
+#define CLASS_E_CLASSNOTAVAILABLE ((HRESULT)0x80040111L)
+#define MARSHAL_E_FIRST ((HRESULT)0x80040120L)
+#define MARSHAL_E_LAST ((HRESULT)0x8004012FL)
+#define MARSHAL_S_FIRST ((HRESULT)0x00040120L)
+#define MARSHAL_S_LAST ((HRESULT)0x0004012FL)
+#define DATA_E_FIRST ((HRESULT)0x80040130L)
+#define DATA_E_LAST ((HRESULT)0x8004013FL)
+#define DATA_S_FIRST ((HRESULT)0x00040130L)
+#define DATA_S_LAST ((HRESULT)0x0004013FL)
+#define VIEW_E_FIRST ((HRESULT)0x80040140L)
+#define VIEW_E_LAST ((HRESULT)0x8004014FL)
+#define VIEW_S_FIRST ((HRESULT)0x00040140L)
+#define VIEW_S_LAST ((HRESULT)0x0004014FL)
+#define VIEW_E_DRAW ((HRESULT)0x80040140L)
+#define REGDB_E_FIRST ((HRESULT)0x80040150L)
+#define REGDB_E_LAST ((HRESULT)0x8004015FL)
+#define REGDB_S_FIRST ((HRESULT)0x00040150L)
+#define REGDB_S_LAST ((HRESULT)0x0004015FL)
+#define REGDB_E_READREGDB ((HRESULT)0x80040150L)
+#define REGDB_E_WRITEREGDB ((HRESULT)0x80040151L)
+#define REGDB_E_KEYMISSING ((HRESULT)0x80040152L)
+#define REGDB_E_INVALIDVALUE ((HRESULT)0x80040153L)
+#define REGDB_E_CLASSNOTREG ((HRESULT)0x80040154L)
+#define REGDB_E_IIDNOTREG ((HRESULT)0x80040155L)
+#define CACHE_E_FIRST ((HRESULT)0x80040170L)
+#define CACHE_E_LAST ((HRESULT)0x8004017FL)
+#define CACHE_S_FIRST ((HRESULT)0x00040170L)
+#define CACHE_S_LAST ((HRESULT)0x0004017FL)
+#define CACHE_E_NOCACHE_UPDATED ((HRESULT)0x80040170L)
+#define OLEOBJ_E_FIRST ((HRESULT)0x80040180L)
+#define OLEOBJ_E_LAST ((HRESULT)0x8004018FL)
+#define OLEOBJ_S_FIRST ((HRESULT)0x00040180L)
+#define OLEOBJ_S_LAST ((HRESULT)0x0004018FL)
+#define OLEOBJ_E_NOVERBS ((HRESULT)0x80040180L)
+#define OLEOBJ_E_INVALIDVERB ((HRESULT)0x80040181L)
+#define CLIENTSITE_E_FIRST ((HRESULT)0x80040190L)
+#define CLIENTSITE_E_LAST ((HRESULT)0x8004019FL)
+#define CLIENTSITE_S_FIRST ((HRESULT)0x00040190L)
+#define CLIENTSITE_S_LAST ((HRESULT)0x0004019FL)
+#define INPLACE_E_NOTUNDOABLE ((HRESULT)0x800401A0L)
+#define INPLACE_E_NOTOOLSPACE ((HRESULT)0x800401A1L)
+#define INPLACE_E_FIRST ((HRESULT)0x800401A0L)
+#define INPLACE_E_LAST ((HRESULT)0x800401AFL)
+#define INPLACE_S_FIRST ((HRESULT)0x000401A0L)
+#define INPLACE_S_LAST ((HRESULT)0x000401AFL)
+#define ENUM_E_FIRST ((HRESULT)0x800401B0L)
+#define ENUM_E_LAST ((HRESULT)0x800401BFL)
+#define ENUM_S_FIRST ((HRESULT)0x000401B0L)
+#define ENUM_S_LAST ((HRESULT)0x000401BFL)
+#define CONVERT10_E_FIRST ((HRESULT)0x800401C0L)
+#define CONVERT10_E_LAST ((HRESULT)0x800401CFL)
+#define CONVERT10_S_FIRST ((HRESULT)0x000401C0L)
+#define CONVERT10_S_LAST ((HRESULT)0x000401CFL)
+#define CONVERT10_E_OLESTREAM_GET ((HRESULT)0x800401C0L)
+#define CONVERT10_E_OLESTREAM_PUT ((HRESULT)0x800401C1L)
+#define CONVERT10_E_OLESTREAM_FMT ((HRESULT)0x800401C2L)
+#define CONVERT10_E_OLESTREAM_BITMAP_TO_DIB ((HRESULT)0x800401C3L)
+#define CONVERT10_E_STG_FMT ((HRESULT)0x800401C4L)
+#define CONVERT10_E_STG_NO_STD_STREAM ((HRESULT)0x800401C5L)
+#define CONVERT10_E_STG_DIB_TO_BITMAP ((HRESULT)0x800401C6L)
+#define CLIPBRD_E_FIRST ((HRESULT)0x800401D0L)
+#define CLIPBRD_E_LAST ((HRESULT)0x800401DFL)
+#define CLIPBRD_S_FIRST ((HRESULT)0x000401D0L)
+#define CLIPBRD_S_LAST ((HRESULT)0x000401DFL)
+#define CLIPBRD_E_CANT_OPEN ((HRESULT)0x800401D0L)
+#define CLIPBRD_E_CANT_EMPTY ((HRESULT)0x800401D1L)
+#define CLIPBRD_E_CANT_SET ((HRESULT)0x800401D2L)
+#define CLIPBRD_E_BAD_DATA ((HRESULT)0x800401D3L)
+#define CLIPBRD_E_CANT_CLOSE ((HRESULT)0x800401D4L)
+#define MK_E_FIRST ((HRESULT)0x800401E0L)
+#define MK_E_LAST ((HRESULT)0x800401EFL)
+#define MK_S_FIRST ((HRESULT)0x000401E0L)
+#define MK_S_LAST ((HRESULT)0x000401EFL)
+#define MK_E_CONNECTMANUALLY ((HRESULT)0x800401E0L)
+#define MK_E_EXCEEDEDDEADLINE ((HRESULT)0x800401E1L)
+#define MK_E_NEEDGENERIC ((HRESULT)0x800401E2L)
+#define MK_E_UNAVAILABLE ((HRESULT)0x800401E3L)
+#define MK_E_SYNTAX ((HRESULT)0x800401E4L)
+#define MK_E_NOOBJECT ((HRESULT)0x800401E5L)
+#define MK_E_INVALIDEXTENSION ((HRESULT)0x800401E6L)
+#define MK_E_INTERMEDIATEINTERFACENOTSUPPORTED ((HRESULT)0x800401E7L)
+#define MK_E_NOTBINDABLE ((HRESULT)0x800401E8L)
+#define MK_E_NOTBOUND ((HRESULT)0x800401E9L)
+#define MK_E_CANTOPENFILE ((HRESULT)0x800401EAL)
+#define MK_E_MUSTBOTHERUSER ((HRESULT)0x800401EBL)
+#define MK_E_NOINVERSE ((HRESULT)0x800401ECL)
+#define MK_E_NOSTORAGE ((HRESULT)0x800401EDL)
+#define MK_E_NOPREFIX ((HRESULT)0x800401EEL)
+#define MK_E_ENUMERATION_FAILED ((HRESULT)0x800401EFL)
+#define CO_E_FIRST ((HRESULT)0x800401F0L)
+#define CO_E_LAST ((HRESULT)0x800401FFL)
+#define CO_S_FIRST ((HRESULT)0x000401F0L)
+#define CO_S_LAST ((HRESULT)0x000401FFL)
+#define CO_E_NOTINITIALIZED ((HRESULT)0x800401F0L)
+#define CO_E_ALREADYINITIALIZED ((HRESULT)0x800401F1L)
+#define CO_E_CANTDETERMINECLASS ((HRESULT)0x800401F2L)
+#define CO_E_CLASSSTRING ((HRESULT)0x800401F3L)
+#define CO_E_IIDSTRING ((HRESULT)0x800401F4L)
+#define CO_E_APPNOTFOUND ((HRESULT)0x800401F5L)
+#define CO_E_APPSINGLEUSE ((HRESULT)0x800401F6L)
+#define CO_E_ERRORINAPP ((HRESULT)0x800401F7L)
+#define CO_E_DLLNOTFOUND ((HRESULT)0x800401F8L)
+#define CO_E_ERRORINDLL ((HRESULT)0x800401F9L)
+#define CO_E_WRONGOSFORAPP ((HRESULT)0x800401FAL)
+#define CO_E_OBJNOTREG ((HRESULT)0x800401FBL)
+#define CO_E_OBJISREG ((HRESULT)0x800401FCL)
+#define CO_E_OBJNOTCONNECTED ((HRESULT)0x800401FDL)
+#define CO_E_APPDIDNTREG ((HRESULT)0x800401FEL)
+#define CO_E_RELEASED ((HRESULT)0x800401FFL)
+#define OLE_S_USEREG ((HRESULT)0x00040000L)
+#define OLE_S_STATIC ((HRESULT)0x00040001L)
+#define OLE_S_MAC_CLIPFORMAT ((HRESULT)0x00040002L)
+#define DRAGDROP_S_DROP ((HRESULT)0x00040100L)
+#define DRAGDROP_S_CANCEL ((HRESULT)0x00040101L)
+#define DRAGDROP_S_USEDEFAULTCURSORS ((HRESULT)0x00040102L)
+#define DATA_S_SAMEFORMATETC ((HRESULT)0x00040130L)
+#define VIEW_S_ALREADY_FROZEN ((HRESULT)0x00040140L)
+#define CACHE_S_FORMATETC_NOTSUPPORTED ((HRESULT)0x00040170L)
+#define CACHE_S_SAMECACHE ((HRESULT)0x00040171L)
+#define CACHE_S_SOMECACHES_NOTUPDATED ((HRESULT)0x00040172L)
+#define OLEOBJ_S_INVALIDVERB ((HRESULT)0x00040180L)
+#define OLEOBJ_S_CANNOT_DOVERB_NOW ((HRESULT)0x00040181L)
+#define OLEOBJ_S_INVALIDHWND ((HRESULT)0x00040182L)
+#define INPLACE_S_TRUNCATED ((HRESULT)0x000401A0L)
+#define CONVERT10_S_NO_PRESENTATION ((HRESULT)0x000401C0L)
+#define MK_S_REDUCED_TO_SELF ((HRESULT)0x000401E2L)
+#define MK_S_ME ((HRESULT)0x000401E4L)
+#define MK_S_HIM ((HRESULT)0x000401E5L)
+#define MK_S_US ((HRESULT)0x000401E6L)
+#define MK_S_MONIKERALREADYREGISTERED ((HRESULT)0x000401E7L)
+#define CO_E_CLASS_CREATE_FAILED ((HRESULT)0x80080001L)
+#define CO_E_SCM_ERROR ((HRESULT)0x80080002L)
+#define CO_E_SCM_RPC_FAILURE ((HRESULT)0x80080003L)
+#define CO_E_BAD_PATH ((HRESULT)0x80080004L)
+#define CO_E_SERVER_EXEC_FAILURE ((HRESULT)0x80080005L)
+#define CO_E_OBJSRV_RPC_FAILURE ((HRESULT)0x80080006L)
+#define MK_E_NO_NORMALIZED ((HRESULT)0x80080007L)
+#define CO_E_SERVER_STOPPING ((HRESULT)0x80080008L)
+#define MEM_E_INVALID_ROOT ((HRESULT)0x80080009L)
+#define MEM_E_INVALID_LINK ((HRESULT)0x80080010L)
+#define MEM_E_INVALID_SIZE ((HRESULT)0x80080011L)
+#define CO_S_NOTALLINTERFACES ((HRESULT)0x00080012L)
+#define CO_S_MACHINENAMENOTFOUND ((HRESULT)0x00080013L)
+#define DISP_E_UNKNOWNINTERFACE ((HRESULT)0x80020001L)
+#define DISP_E_MEMBERNOTFOUND ((HRESULT)0x80020003L)
+#define DISP_E_PARAMNOTFOUND ((HRESULT)0x80020004L)
+#define DISP_E_TYPEMISMATCH ((HRESULT)0x80020005L)
+#define DISP_E_UNKNOWNNAME ((HRESULT)0x80020006L)
+#define DISP_E_NONAMEDARGS ((HRESULT)0x80020007L)
+#define DISP_E_BADVARTYPE ((HRESULT)0x80020008L)
+#define DISP_E_EXCEPTION ((HRESULT)0x80020009L)
+#define DISP_E_OVERFLOW ((HRESULT)0x8002000AL)
+#define DISP_E_BADINDEX ((HRESULT)0x8002000BL)
+#define DISP_E_UNKNOWNLCID ((HRESULT)0x8002000CL)
+#define DISP_E_ARRAYISLOCKED ((HRESULT)0x8002000DL)
+#define DISP_E_BADPARAMCOUNT ((HRESULT)0x8002000EL)
+#define DISP_E_PARAMNOTOPTIONAL ((HRESULT)0x8002000FL)
+#define DISP_E_BADCALLEE ((HRESULT)0x80020010L)
+#define DISP_E_NOTACOLLECTION ((HRESULT)0x80020011L)
+#define DISP_E_DIVBYZERO ((HRESULT)0x80020012L)
+#define TYPE_E_BUFFERTOOSMALL ((HRESULT)0x80028016L)
+#define TYPE_E_INVDATAREAD ((HRESULT)0x80028018L)
+#define TYPE_E_UNSUPFORMAT ((HRESULT)0x80028019L)
+#define TYPE_E_REGISTRYACCESS ((HRESULT)0x8002801CL)
+#define TYPE_E_LIBNOTREGISTERED ((HRESULT)0x8002801DL)
+#define TYPE_E_UNDEFINEDTYPE ((HRESULT)0x80028027L)
+#define TYPE_E_QUALIFIEDNAMEDISALLOWED ((HRESULT)0x80028028L)
+#define TYPE_E_INVALIDSTATE ((HRESULT)0x80028029L)
+#define TYPE_E_WRONGTYPEKIND ((HRESULT)0x8002802AL)
+#define TYPE_E_ELEMENTNOTFOUND ((HRESULT)0x8002802BL)
+#define TYPE_E_AMBIGUOUSNAME ((HRESULT)0x8002802CL)
+#define TYPE_E_NAMECONFLICT ((HRESULT)0x8002802DL)
+#define TYPE_E_UNKNOWNLCID ((HRESULT)0x8002802EL)
+#define TYPE_E_DLLFUNCTIONNOTFOUND ((HRESULT)0x8002802FL)
+#define TYPE_E_BADMODULEKIND ((HRESULT)0x800288BDL)
+#define TYPE_E_SIZETOOBIG ((HRESULT)0x800288C5L)
+#define TYPE_E_DUPLICATEID ((HRESULT)0x800288C6L)
+#define TYPE_E_INVALIDID ((HRESULT)0x800288CFL)
+#define TYPE_E_TYPEMISMATCH ((HRESULT)0x80028CA0L)
+#define TYPE_E_OUTOFBOUNDS ((HRESULT)0x80028CA1L)
+#define TYPE_E_IOERROR ((HRESULT)0x80028CA2L)
+#define TYPE_E_CANTCREATETMPFILE ((HRESULT)0x80028CA3L)
+#define TYPE_E_CANTLOADLIBRARY ((HRESULT)0x80029C4AL)
+#define TYPE_E_INCONSISTENTPROPFUNCS ((HRESULT)0x80029C83L)
+#define TYPE_E_CIRCULARTYPE ((HRESULT)0x80029C84L)
+#define STG_E_INVALIDFUNCTION ((HRESULT)0x80030001L)
+#define STG_E_FILENOTFOUND ((HRESULT)0x80030002L)
+#define STG_E_PATHNOTFOUND ((HRESULT)0x80030003L)
+#define STG_E_TOOMANYOPENFILES ((HRESULT)0x80030004L)
+#define STG_E_ACCESSDENIED ((HRESULT)0x80030005L)
+#define STG_E_INVALIDHANDLE ((HRESULT)0x80030006L)
+#define STG_E_INSUFFICIENTMEMORY ((HRESULT)0x80030008L)
+#define STG_E_INVALIDPOINTER ((HRESULT)0x80030009L)
+#define STG_E_NOMOREFILES ((HRESULT)0x80030012L)
+#define STG_E_DISKISWRITEPROTECTED ((HRESULT)0x80030013L)
+#define STG_E_SEEKERROR ((HRESULT)0x80030019L)
+#define STG_E_WRITEFAULT ((HRESULT)0x8003001DL)
+#define STG_E_READFAULT ((HRESULT)0x8003001EL)
+#define STG_E_SHAREVIOLATION ((HRESULT)0x80030020L)
+#define STG_E_LOCKVIOLATION ((HRESULT)0x80030021L)
+#define STG_E_FILEALREADYEXISTS ((HRESULT)0x80030050L)
+#define STG_E_INVALIDPARAMETER ((HRESULT)0x80030057L)
+#define STG_E_MEDIUMFULL ((HRESULT)0x80030070L)
+#define STG_E_PROPSETMISMATCHED ((HRESULT)0x800300F0L)
+#define STG_E_ABNORMALAPIEXIT ((HRESULT)0x800300FAL)
+#define STG_E_INVALIDHEADER ((HRESULT)0x800300FBL)
+#define STG_E_INVALIDNAME ((HRESULT)0x800300FCL)
+#define STG_E_UNKNOWN ((HRESULT)0x800300FDL)
+#define STG_E_UNIMPLEMENTEDFUNCTION ((HRESULT)0x800300FEL)
+#define STG_E_INVALIDFLAG ((HRESULT)0x800300FFL)
+#define STG_E_INUSE ((HRESULT)0x80030100L)
+#define STG_E_NOTCURRENT ((HRESULT)0x80030101L)
+#define STG_E_REVERTED ((HRESULT)0x80030102L)
+#define STG_E_CANTSAVE ((HRESULT)0x80030103L)
+#define STG_E_OLDFORMAT ((HRESULT)0x80030104L)
+#define STG_E_OLDDLL ((HRESULT)0x80030105L)
+#define STG_E_SHAREREQUIRED ((HRESULT)0x80030106L)
+#define STG_E_NOTFILEBASEDSTORAGE ((HRESULT)0x80030107L)
+#define STG_E_EXTANTMARSHALLINGS ((HRESULT)0x80030108L)
+#define STG_E_DOCFILECORRUPT ((HRESULT)0x80030109L)
+#define STG_E_BADBASEADDRESS ((HRESULT)0x80030110L)
+#define STG_E_DOCFILETOOLARGE ((HRESULT)0x80030111L)
+#define STG_E_NOTSIMPLEFORMAT ((HRESULT)0x80030112L)
+#define STG_E_INCOMPLETE ((HRESULT)0x80030201L)
+#define STG_E_TERMINATED ((HRESULT)0x80030202L)
+#define STG_S_CONVERTED ((HRESULT)0x00030200L)
+#define STG_S_BLOCK ((HRESULT)0x00030201L)
+#define STG_S_RETRYNOW ((HRESULT)0x00030202L)
+#define STG_S_MONITORING ((HRESULT)0x00030203L)
+#define STG_S_MULTIPLEOPENS ((HRESULT)0x00030204L)
+#define STG_S_CONSOLIDATIONFAILED ((HRESULT)0x00030205L)
+#define STG_S_CANNOTCONSOLIDATE ((HRESULT)0x00030206L)
+#define RPC_E_CALL_REJECTED ((HRESULT)0x80010001L)
+#define RPC_E_CALL_CANCELED ((HRESULT)0x80010002L)
+#define RPC_E_CANTPOST_INSENDCALL ((HRESULT)0x80010003L)
+#define RPC_E_CANTCALLOUT_INASYNCCALL ((HRESULT)0x80010004L)
+#define RPC_E_CANTCALLOUT_INEXTERNALCALL ((HRESULT)0x80010005L)
+#define RPC_E_CONNECTION_TERMINATED ((HRESULT)0x80010006L)
+#define RPC_E_SERVER_DIED ((HRESULT)0x80010007L)
+#define RPC_E_CLIENT_DIED ((HRESULT)0x80010008L)
+#define RPC_E_INVALID_DATAPACKET ((HRESULT)0x80010009L)
+#define RPC_E_CANTTRANSMIT_CALL ((HRESULT)0x8001000AL)
+#define RPC_E_CLIENT_CANTMARSHAL_DATA ((HRESULT)0x8001000BL)
+#define RPC_E_CLIENT_CANTUNMARSHAL_DATA ((HRESULT)0x8001000CL)
+#define RPC_E_SERVER_CANTMARSHAL_DATA ((HRESULT)0x8001000DL)
+#define RPC_E_SERVER_CANTUNMARSHAL_DATA ((HRESULT)0x8001000EL)
+#define RPC_E_INVALID_DATA ((HRESULT)0x8001000FL)
+#define RPC_E_INVALID_PARAMETER ((HRESULT)0x80010010L)
+#define RPC_E_CANTCALLOUT_AGAIN ((HRESULT)0x80010011L)
+#define RPC_E_SERVER_DIED_DNE ((HRESULT)0x80010012L)
+#define RPC_E_SYS_CALL_FAILED ((HRESULT)0x80010100L)
+#define RPC_E_OUT_OF_RESOURCES ((HRESULT)0x80010101L)
+#define RPC_E_ATTEMPTED_MULTITHREAD ((HRESULT)0x80010102L)
+#define RPC_E_NOT_REGISTERED ((HRESULT)0x80010103L)
+#define RPC_E_FAULT ((HRESULT)0x80010104L)
+#define RPC_E_SERVERFAULT ((HRESULT)0x80010105L)
+#define RPC_E_CHANGED_MODE ((HRESULT)0x80010106L)
+#define RPC_E_INVALIDMETHOD ((HRESULT)0x80010107L)
+#define RPC_E_DISCONNECTED ((HRESULT)0x80010108L)
+#define RPC_E_RETRY ((HRESULT)0x80010109L)
+#define RPC_E_SERVERCALL_RETRYLATER ((HRESULT)0x8001010AL)
+#define RPC_E_SERVERCALL_REJECTED ((HRESULT)0x8001010BL)
+#define RPC_E_INVALID_CALLDATA ((HRESULT)0x8001010CL)
+#define RPC_E_CANTCALLOUT_ININPUTSYNCCALL ((HRESULT)0x8001010DL)
+#define RPC_E_WRONG_THREAD ((HRESULT)0x8001010EL)
+#define RPC_E_THREAD_NOT_INIT ((HRESULT)0x8001010FL)
+#define RPC_E_VERSION_MISMATCH  ((HRESULT)0x80010110L)
+#define RPC_E_INVALID_HEADER ((HRESULT)0x80010111L)
+#define RPC_E_INVALID_EXTENSION ((HRESULT)0x80010112L)
+#define RPC_E_INVALID_IPID ((HRESULT)0x80010113L)
+#define RPC_E_INVALID_OBJECT ((HRESULT)0x80010114L)
+#define RPC_E_CALL_COMPLETE ((HRESULT)0x80010117L)
+#define RPC_E_UNSECURE_CALL ((HRESULT)0x80010118L)
+#define RPC_E_TOO_LATE ((HRESULT)0x80010119L)
+#define RPC_E_NO_GOOD_SECURITY_PACKAGES ((HRESULT)0x8001011AL)
+#define RPC_E_ACCESS_DENIED ((HRESULT)0x8001011BL)
+#define RPC_E_REMOTE_DISABLED ((HRESULT)0x8001011CL)
+#define RPC_E_INVALID_OBJREF ((HRESULT)0x8001011DL)
+#define RPC_E_NO_CONTEXT ((HRESULT)0x8001011EL)
+#define RPC_E_TIMEOUT ((HRESULT)0x8001011FL)
+#define RPC_E_NO_SYNC ((HRESULT)0x80010120L)
+#define RPC_E_FULLSIC_REQUIRED ((HRESULT)0x80010121L)
+#define RPC_E_INVALID_STD_NAME ((HRESULT)0x80010122L)
+#define RPC_E_UNEXPECTED ((HRESULT)0x8001FFFFL)
+
+#define NTE_BAD_UID ((HRESULT)0x80090001L)
+#define NTE_BAD_HASH ((HRESULT)0x80090002L)
+#define NTE_BAD_KEY ((HRESULT)0x80090003L)
+#define NTE_BAD_LEN ((HRESULT)0x80090004L)
+#define NTE_BAD_DATA ((HRESULT)0x80090005L)
+#define NTE_BAD_SIGNATURE ((HRESULT)0x80090006L)
+#define NTE_BAD_VER ((HRESULT)0x80090007L)
+#define NTE_BAD_ALGID ((HRESULT)0x80090008L)
+#define NTE_BAD_FLAGS ((HRESULT)0x80090009L)
+#define NTE_BAD_TYPE ((HRESULT)0x8009000AL)
+#define NTE_BAD_KEY_STATE ((HRESULT)0x8009000BL)
+#define NTE_BAD_HASH_STATE ((HRESULT)0x8009000CL)
+#define NTE_NO_KEY ((HRESULT)0x8009000DL)
+#define NTE_NO_MEMORY ((HRESULT)0x8009000EL)
+#define NTE_EXISTS ((HRESULT)0x8009000FL)
+#define NTE_PERM ((HRESULT)0x80090010L)
+#define NTE_NOT_FOUND ((HRESULT)0x80090011L)
+#define NTE_DOUBLE_ENCRYPT ((HRESULT)0x80090012L)
+#define NTE_BAD_PROVIDER ((HRESULT)0x80090013L)
+#define NTE_BAD_PROV_TYPE ((HRESULT)0x80090014L)
+#define NTE_BAD_PUBLIC_KEY ((HRESULT)0x80090015L)
+#define NTE_BAD_KEYSET ((HRESULT)0x80090016L)
+#define NTE_PROV_TYPE_NOT_DEF ((HRESULT)0x80090017L)
+#define NTE_PROV_TYPE_ENTRY_BAD ((HRESULT)0x80090018L)
+#define NTE_KEYSET_NOT_DEF ((HRESULT)0x80090019L)
+#define NTE_KEYSET_ENTRY_BAD ((HRESULT)0x8009001AL)
+#define NTE_PROV_TYPE_NO_MATCH ((HRESULT)0x8009001BL)
+#define NTE_SIGNATURE_FILE_BAD ((HRESULT)0x8009001CL)
+#define NTE_PROVIDER_DLL_FAIL ((HRESULT)0x8009001DL)
+#define NTE_PROV_DLL_NOT_FOUND ((HRESULT)0x8009001EL)
+#define NTE_BAD_KEYSET_PARAM ((HRESULT)0x8009001FL)
+#define NTE_FAIL ((HRESULT)0x80090020L)
+#define NTE_SYS_ERR ((HRESULT)0x80090021L)
+#define NTE_SILENT_CONTEXT ((HRESULT)0x80090022L)
+#define NTE_TOKEN_KEYSET_STORAGE_FULL ((HRESULT)0x80090023L)
+#define NTE_TEMPORARY_PROFILE ((HRESULT)0x80090024L)
+#define NTE_FIXEDPARAMETER ((HRESULT)0x80090025L)
+
+#endif
Index: Daodan/MinGW/include/wingdi.h
===================================================================
--- Daodan/MinGW/include/wingdi.h	(revision 1046)
+++ Daodan/MinGW/include/wingdi.h	(revision 1046)
@@ -0,0 +1,3235 @@
+#ifndef _WINGDI_H
+#define _WINGDI_H
+#define _WINGDI_
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef WINGDIAPI
+#ifdef __W32API_USE_DLLIMPORT__
+#define WINGDIAPI DECLSPEC_IMPORT
+#else
+#define WINGDIAPI
+#endif
+#endif
+
+#define BI_RGB 0
+#define BI_RLE8 1
+#define BI_RLE4 2
+#define BI_BITFIELDS 3
+#define BI_JPEG 4
+#define BI_PNG 5
+#define LF_FACESIZE	32
+#define LF_FULLFACESIZE	64
+#define CA_NEGATIVE	1
+#define CA_LOG_FILTER	2
+#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	2500
+#define RGB_GAMMA_MAX	65000
+#define REFERENCE_WHITE_MIN	6000
+#define REFERENCE_WHITE_MAX	10000
+#define REFERENCE_BLACK_MIN	0
+#define REFERENCE_BLACK_MAX	4000
+#define COLOR_ADJ_MIN	(-100)
+#define COLOR_ADJ_MAX	100
+#define CCHDEVICENAME 32
+#define CCHFORMNAME 32
+#define DI_COMPAT	4
+#define DI_DEFAULTSIZE	8
+#define DI_IMAGE	2
+#define DI_MASK	1
+#define DI_NORMAL	3
+#define DI_APPBANDING 1
+#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 ENHMETA_SIGNATURE 1179469088
+#define EPS_SIGNATURE 0x46535045
+#if (_WIN32_WINNT >= 0x0500)
+#define FR_PRIVATE 0x10
+#define FR_NOT_ENUM 0x20
+#endif
+#define META_SETBKCOLOR	0x201
+#define META_SETBKMODE	0x102
+#define META_SETMAPMODE	0x103
+#define META_SETROP2	0x104
+#define META_SETRELABS	0x105
+#define META_SETPOLYFILLMODE	0x106
+#define META_SETSTRETCHBLTMODE	0x107
+#define META_SETTEXTCHAREXTRA	0x108
+#define META_SETTEXTCOLOR	0x209
+#define META_SETTEXTJUSTIFICATION	0x20A
+#define META_SETWINDOWORG	0x20B
+#define META_SETWINDOWEXT	0x20C
+#define META_SETVIEWPORTORG	0x20D
+#define META_SETVIEWPORTEXT	0x20E
+#define META_OFFSETWINDOWORG	0x20F
+#define META_SCALEWINDOWEXT	0x410
+#define META_OFFSETVIEWPORTORG	0x211
+#define META_SCALEVIEWPORTEXT	0x412
+#define META_LINETO	0x213
+#define META_MOVETO	0x214
+#define META_EXCLUDECLIPRECT	0x415
+#define META_INTERSECTCLIPRECT	0x416
+#define META_ARC	0x817
+#define META_ELLIPSE	0x418
+#define META_FLOODFILL	0x419
+#define META_PIE	0x81A
+#define META_RECTANGLE	0x41B
+#define META_ROUNDRECT	0x61C
+#define META_PATBLT	0x61D
+#define META_SAVEDC	0x1E
+#define META_SETPIXEL	0x41F
+#define META_OFFSETCLIPRGN	0x220
+#define META_TEXTOUT	0x521
+#define META_BITBLT	0x922
+#define META_STRETCHBLT	0xB23
+#define META_POLYGON	0x324
+#define META_POLYLINE	0x325
+#define META_ESCAPE	0x626
+#define META_RESTOREDC	0x127
+#define META_FILLREGION	0x228
+#define META_FRAMEREGION	0x429
+#define META_INVERTREGION	0x12A
+#define META_PAINTREGION	0x12B
+#define META_SELECTCLIPREGION	0x12C
+#define META_SELECTOBJECT	0x12D
+#define META_SETTEXTALIGN	0x12E
+#define META_CHORD	0x830
+#define META_SETMAPPERFLAGS	0x231
+#define META_EXTTEXTOUT	0xa32
+#define META_SETDIBTODEV	0xd33
+#define META_SELECTPALETTE	0x234
+#define META_REALIZEPALETTE	0x35
+#define META_ANIMATEPALETTE	0x436
+#define META_SETPALENTRIES	0x37
+#define META_POLYPOLYGON	0x538
+#define META_RESIZEPALETTE	0x139
+#define META_DIBBITBLT	0x940
+#define META_DIBSTRETCHBLT	0xb41
+#define META_DIBCREATEPATTERNBRUSH	0x142
+#define META_STRETCHDIB	0xf43
+#define META_EXTFLOODFILL	0x548
+#define META_DELETEOBJECT	0x1f0
+#define META_CREATEPALETTE	0xf7
+#define META_CREATEPATTERNBRUSH	0x1F9
+#define META_CREATEPENINDIRECT	0x2FA
+#define META_CREATEFONTINDIRECT	0x2FB
+#define META_CREATEBRUSHINDIRECT	0x2FC
+#define META_CREATEREGION	0x6FF
+#define PT_MOVETO	6
+#define PT_LINETO	2
+#define PT_BEZIERTO	4
+#define PT_CLOSEFIGURE 1
+#define ELF_VENDOR_SIZE	4
+#define ELF_VERSION	0
+#define ELF_CULTURE_LATIN	0
+#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	1
+#define PFD_STEREO	2
+#define PFD_DRAW_TO_WINDOW	4
+#define PFD_DRAW_TO_BITMAP	8
+#define PFD_SUPPORT_GDI	16
+#define PFD_SUPPORT_OPENGL	32
+#define PFD_GENERIC_FORMAT	64
+#define PFD_NEED_PALETTE	128
+#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_DEPTH_DONTCARE	0x20000000
+#define PFD_DOUBLEBUFFER_DONTCARE	0x40000000
+#define PFD_STEREO_DONTCARE	0x80000000
+#define SP_ERROR	(-1)
+#define SP_OUTOFDISK	(-4)
+#define SP_OUTOFMEMORY	(-5)
+#define SP_USERABORT	(-3)
+#define SP_APPABORT	(-2)
+#define BLACKNESS	0x00000042
+#define NOTSRCERASE	0x001100A6
+#define NOTSRCCOPY	0x00330008
+#define SRCERASE	0x00440328
+#define DSTINVERT	0x00550009
+#define PATINVERT	0x005A0049
+#define SRCINVERT	0x00660046
+#define SRCAND	0x008800C6
+#define MERGEPAINT	0x00BB0226
+#define MERGECOPY	0x00C000CA
+#define SRCCOPY 0x00CC0020
+#define SRCPAINT	0x00EE0086
+#define PATCOPY	0x00F00021
+#define PATPAINT	0x00FB0A09
+#define WHITENESS	0x00FF0062
+#define CAPTUREBLT	0x40000000
+#define NOMIRRORBITMAP	0x80000000
+#define R2_BLACK	1
+#define R2_COPYPEN	13
+#define R2_MASKNOTPEN	3
+#define R2_MASKPEN	9
+#define R2_MASKPENNOT	5
+#define R2_MERGENOTPEN	12
+#define R2_MERGEPEN	15
+#define R2_MERGEPENNOT	14
+#define R2_NOP	11
+#define R2_NOT	6
+#define R2_NOTCOPYPEN	4
+#define R2_NOTMASKPEN	8
+#define R2_NOTMERGEPEN	2
+#define R2_NOTXORPEN	10
+#define R2_WHITE	16
+#define R2_XORPEN	7
+#define CM_OUT_OF_GAMUT	255
+#define CM_IN_GAMUT	0
+#define RGN_AND 1
+#define RGN_COPY	5
+#define RGN_DIFF	4
+#define RGN_OR	2
+#define RGN_XOR	3
+#define NULLREGION	1
+#define SIMPLEREGION	2
+#define COMPLEXREGION	3
+#define ERROR 0
+#define CBM_INIT	4
+#define DIB_PAL_COLORS	1
+#define DIB_RGB_COLORS	0
+#define FW_DONTCARE	0
+#define FW_THIN	100
+#define FW_EXTRALIGHT	200
+#define FW_ULTRALIGHT	FW_EXTRALIGHT
+#define FW_LIGHT	300
+#define FW_NORMAL	400
+#define FW_REGULAR	400
+#define FW_MEDIUM	500
+#define FW_SEMIBOLD	600
+#define FW_DEMIBOLD	FW_SEMIBOLD
+#define FW_BOLD	700
+#define FW_EXTRABOLD	800
+#define FW_ULTRABOLD	FW_EXTRABOLD
+#define FW_HEAVY	900
+#define FW_BLACK	FW_HEAVY
+#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 GREEK_CHARSET	161
+#define TURKISH_CHARSET	162
+#define HEBREW_CHARSET	177
+#define ARABIC_CHARSET	178
+#define BALTIC_CHARSET	186
+#define RUSSIAN_CHARSET	204
+#define THAI_CHARSET	222
+#define EASTEUROPE_CHARSET	238
+#define OEM_CHARSET	255
+#define JOHAB_CHARSET	130
+#define VIETNAMESE_CHARSET	163
+#define MAC_CHARSET 77
+#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
+/* http://www.pinvoke.net/default.aspx/Structures/LOGFONT.html */
+#define OUT_PS_ONLY_PRECIS      10
+#define CLIP_DEFAULT_PRECIS	0
+#define CLIP_CHARACTER_PRECIS	1
+#define CLIP_STROKE_PRECIS	2
+#define CLIP_MASK	15
+#define CLIP_LH_ANGLES	16
+#define CLIP_TT_ALWAYS	32
+#define CLIP_EMBEDDED	128
+#define DEFAULT_QUALITY	0
+#define DRAFT_QUALITY	1
+#define PROOF_QUALITY	2
+#define NONANTIALIASED_QUALITY 3
+#define ANTIALIASED_QUALITY 4
+#if _WIN32_WINNT >= 0x0500
+#define CLEARTYPE_QUALITY 5
+#endif
+#define DEFAULT_PITCH	0
+#define FIXED_PITCH	1
+#define VARIABLE_PITCH	2
+#define MONO_FONT 8
+#define FF_DECORATIVE	80
+#define FF_DONTCARE	0
+#define FF_MODERN	48
+#define FF_ROMAN	16
+#define FF_SCRIPT	64
+#define FF_SWISS	32
+#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
+#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 FS_LATIN1 1
+#define FS_LATIN2 2
+#define FS_CYRILLIC 4
+#define FS_GREEK 8
+#define FS_TURKISH 16
+#define FS_HEBREW 32
+#define FS_ARABIC 64
+#define FS_BALTIC 128
+#define FS_THAI 0x10000
+#define FS_JISJAPAN 0x20000
+#define FS_CHINESESIMP 0x40000
+#define FS_WANSUNG 0x80000
+#define FS_CHINESETRAD 0x100000
+#define FS_JOHAB 0x200000
+#define FS_SYMBOL 0x80000000
+#define HS_BDIAGONAL	3
+#define HS_CROSS	4
+#define HS_DIAGCROSS	5
+#define HS_FDIAGONAL	2
+#define HS_HORIZONTAL	0
+#define HS_VERTICAL	1
+#define PS_GEOMETRIC	65536
+#define PS_COSMETIC	0
+#define PS_ALTERNATE	8
+#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_USERSTYLE	7
+#define PS_INSIDEFRAME	6
+#define PS_ENDCAP_ROUND	0
+#define PS_ENDCAP_SQUARE	256
+#define PS_ENDCAP_FLAT	512
+#define PS_JOIN_BEVEL	4096
+#define PS_JOIN_MITER	8192
+#define PS_JOIN_ROUND	0
+#define PS_STYLE_MASK	15
+#define PS_ENDCAP_MASK	3840
+#define PS_TYPE_MASK	983040
+#define ALTERNATE	1
+#define WINDING	2
+#define DC_BINNAMES	12
+#define DC_BINS	6
+#define DC_COPIES	18
+#define DC_DRIVER	11
+#define DC_DATATYPE_PRODUCED	21
+#define DC_DUPLEX	7
+#define DC_EMF_COMPLIANT	20
+#define DC_ENUMRESOLUTIONS	13
+#define DC_EXTRA	9
+#define DC_FIELDS	1
+#define DC_FILEDEPENDENCIES	14
+#define DC_MAXEXTENT	5
+#define DC_MINEXTENT	4
+#define DC_ORIENTATION	17
+#define DC_PAPERNAMES	16
+#define DC_PAPERS	2
+#define DC_PAPERSIZE	3
+#define DC_SIZE	8
+#define DC_TRUETYPE	15
+#define DCTT_BITMAP	1
+#define DCTT_DOWNLOAD	2
+#define DCTT_SUBDEV	4
+#define DCTT_DOWNLOAD_OUTLINE 8
+#define DC_VERSION	10
+#define DC_BINADJUST	19
+#define DC_EMF_COMPLIANT	20
+#define DC_DATATYPE_PRODUCED	21
+#define DC_MANUFACTURER	23
+#define DC_MODEL	24
+#if (WINVER >= 0x0500)
+#define DC_PERSONALITY	25
+#define DC_PRINTRATE	26
+#define DC_PRINTRATEUNIT	27
+#define DC_PRINTERMEM	28
+#define DC_MEDIAREADY	29
+#define DC_STAPLE	30
+#define DC_PRINTRATEPPM	31
+#define DC_COLORDEVICE	32
+#define DC_NUP	33
+#endif
+#if (WINVER >= 0x0501)
+#define DC_MEDIATYPENAMES	34
+#define DC_MEDIATYPES	35
+#endif
+#define DCBA_FACEUPNONE	0
+#define DCBA_FACEUPCENTER	1
+#define DCBA_FACEUPLEFT	2
+#define DCBA_FACEUPRIGHT	3
+#define DCBA_FACEDOWNNONE	256
+#define DCBA_FACEDOWNCENTER	257
+#define DCBA_FACEDOWNLEFT	258
+#define DCBA_FACEDOWNRIGHT	259
+#define FLOODFILLBORDER 0
+#define FLOODFILLSURFACE 1
+#define ETO_CLIPPED 0x0004
+#define ETO_GLYPH_INDEX 0x0010
+#define ETO_OPAQUE 0x0002
+#define ETO_NUMERICSLATIN 0x0800
+#define ETO_NUMERICSLOCAL 0x0400
+#define ETO_RTLREADING 0x0080
+#if (_WIN32_WINNT >= 0x0400)
+#define ETO_IGNORELANGUAGE 0x1000
+#endif
+#if (_WIN32_WINNT >= 0x0500)
+#define ETO_PDY 0x2000
+#endif
+#define GDICOMMENT_WINDOWS_METAFILE (-2147483647)
+#define GDICOMMENT_BEGINGROUP 2
+#define GDICOMMENT_ENDGROUP 3
+#define GDICOMMENT_MULTIFORMATS 1073741828
+#define GDICOMMENT_IDENTIFIER 1128875079
+#define AD_COUNTERCLOCKWISE 1
+#define AD_CLOCKWISE 2
+#define RDH_RECTANGLES	1
+#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	128
+#define GCPCLASS_PREBOUNDRTL	64
+#define GCPCLASS_POSTBOUNDLTR	32
+#define GCPCLASS_POSTBOUNDRTL	16
+#define GCPGLYPH_LINKBEFORE	0x8000
+#define GCPGLYPH_LINKAFTER	0x4000
+#define DCB_DISABLE 8
+#define DCB_ENABLE 4
+#define DCB_RESET 1
+#define DCB_SET 3
+#define DCB_ACCUMULATE 2
+#define DCB_DIRTY	2
+#define OBJ_BRUSH 2
+#define OBJ_PEN 1
+#define OBJ_PAL 5
+#define OBJ_FONT 6
+#define OBJ_BITMAP 7
+#define OBJ_EXTPEN 11
+#define OBJ_REGION 8
+#define OBJ_DC 3
+#define OBJ_MEMDC 10
+#define OBJ_METAFILE 9
+#define OBJ_METADC 4
+#define OBJ_ENHMETAFILE 13
+#define OBJ_ENHMETADC 12
+#define DRIVERVERSION 0
+#define TECHNOLOGY 2
+#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 HORZSIZE 4
+#define VERTSIZE 6
+#define HORZRES 8
+#define VERTRES 10
+#define LOGPIXELSX 88
+#define LOGPIXELSY 90
+#define BITSPIXEL 12
+#define PLANES 14
+#define NUMBRUSHES 16
+#define NUMPENS 18
+#define NUMFONTS 22
+#define NUMCOLORS 24
+#define NUMMARKERS 20
+#define ASPECTX 40
+#define ASPECTY 42
+#define ASPECTXY 44
+#define PDEVICESIZE 26
+#define CLIPCAPS 36
+#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 DESKTOPHORZRES 118
+#define DESKTOPVERTRES 117
+#define BLTALIGNMENT 119
+#if(WINVER >= 0x0500)
+#define SHADEBLENDCAPS 120
+#define SB_NONE 0x00
+#define SB_CONST_ALPHA 0x01
+#define SB_PIXEL_ALPHA 0x02
+#define SB_PREMULT_ALPHA 0x04
+#define SB_GRAD_RECT 0x10
+#define SB_GRAD_TRI 0x20
+#define COLORMGMTCAPS 121
+#define CM_NONE 0x00
+#define CM_DEVICE_ICM 0x01
+#define CM_GAMMA_RAMP 0x02
+#define CM_CMYK_COLOR 0x04
+#endif
+#define RASTERCAPS 38
+#define RC_BANDING 2
+#define RC_BITBLT 1
+#define RC_BITMAP64 8
+#define RC_DI_BITMAP 128
+#define RC_DIBTODEV 512
+#define RC_FLOODFILL 4096
+#define RC_GDI20_OUTPUT 16
+#define RC_PALETTE 256
+#define RC_SCALING 4
+#define RC_STRETCHBLT 2048
+#define RC_STRETCHDIB 8192
+#define RC_DEVBITS 0x8000
+#define RC_OP_DX_OUTPUT 0x4000
+#define CURVECAPS 28
+#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 LINECAPS 30
+#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 POLYGONALCAPS 32
+#define RC_BANDING 2
+#define RC_BIGFONT 1024
+#define RC_BITBLT 1
+#define RC_BITMAP64 8
+#define RC_DEVBITS 0x8000
+#define RC_DI_BITMAP 128
+#define RC_GDI20_OUTPUT 16
+#define RC_GDI20_STATE 32
+#define RC_NONE 0
+#define RC_OP_DX_OUTPUT 0x4000
+#define RC_PALETTE 256
+#define RC_SAVEBITMAP 64
+#define RC_SCALING 4
+#define PC_NONE 0
+#define PC_POLYGON 1
+#define PC_POLYPOLYGON 256
+#define PC_PATHS 512
+#define PC_RECTANGLE 2
+#define PC_WINDPOLYGON 4
+#define PC_SCANLINE 8
+#define PC_TRAPEZOID 4
+#define PC_WIDE 16
+#define PC_STYLED 32
+#define PC_WIDESTYLED 64
+#define PC_INTERIORS 128
+#define PC_PATHS 512
+#define TEXTCAPS 34
+#define TC_OP_CHARACTER 1
+#define TC_OP_STROKE 2
+#define TC_CP_STROKE 4
+#define TC_CR_90 8
+#define TC_CR_ANY 16
+#define TC_SF_X_YINDEP 32
+#define TC_SA_DOUBLE 64
+#define TC_SA_INTEGER 128
+#define TC_SA_CONTIN 256
+#define TC_EA_DOUBLE 512
+#define TC_IA_ABLE 1024
+#define TC_UA_ABLE 2048
+#define TC_SO_ABLE 4096
+#define TC_RA_ABLE 8192
+#define TC_VA_ABLE 16384
+#define TC_RESERVED 32768
+#define TC_SCROLLBLT 65536
+#define GCP_DBCS 1
+#define GCP_ERROR 0x8000
+#define GCP_CLASSIN 0x80000
+#define GCP_DIACRITIC 256
+#define GCP_DISPLAYZWG 0x400000
+#define GCP_GLYPHSHAPE 16
+#define GCP_JUSTIFY 0x10000
+#define GCP_JUSTIFYIN 0x200000
+#define GCP_KASHIDA 1024
+#define GCP_LIGATE 32
+#define GCP_MAXEXTENT 0x100000
+#define GCP_NEUTRALOVERRIDE 0x2000000
+#define GCP_NUMERICOVERRIDE 0x1000000
+#define GCP_NUMERICSLATIN 0x4000000
+#define GCP_NUMERICSLOCAL 0x8000000
+#define GCP_REORDER 2
+#define GCP_SYMSWAPOFF 0x800000
+#define GCP_USEKERNING 8
+#define FLI_GLYPHS 0x40000
+#define FLI_MASK 0x103b
+#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 128
+#if (WINVER >= 0x0500)
+#define GGO_UNHINTED 256
+#endif
+#define GM_COMPATIBLE 1
+#define GM_ADVANCED 2
+#define MM_ANISOTROPIC 8
+#define MM_HIENGLISH 5
+#define MM_HIMETRIC 3
+#define MM_ISOTROPIC 7
+#define MM_LOENGLISH 4
+#define MM_LOMETRIC 2
+#define MM_TEXT 1
+#define MM_TWIPS 6
+#define MM_MAX_FIXEDSCALE	MM_TWIPS
+#define ABSOLUTE	1
+#define RELATIVE	2
+#define PC_EXPLICIT 2
+#define PC_NOCOLLAPSE 4
+#define PC_RESERVED 1
+#define CLR_NONE 0xffffffff
+#define CLR_INVALID CLR_NONE
+#define CLR_DEFAULT 0xff000000
+#define PT_MOVETO 6
+#define PT_LINETO 2
+#define PT_BEZIERTO 4
+#define PT_CLOSEFIGURE 1
+#define TT_AVAILABLE 1
+#define TT_ENABLED 2
+#define BLACK_BRUSH 4
+#define DKGRAY_BRUSH 3
+#define GRAY_BRUSH 2
+#define HOLLOW_BRUSH 5
+#define LTGRAY_BRUSH 1
+#define NULL_BRUSH 5
+#define WHITE_BRUSH 0
+#define BLACK_PEN 7
+#define NULL_PEN 8
+#define WHITE_PEN 6
+#define ANSI_FIXED_FONT 11
+#define ANSI_VAR_FONT 12
+#define DEVICE_DEFAULT_FONT 14
+#define DEFAULT_GUI_FONT 17
+#define OEM_FIXED_FONT 10
+#define SYSTEM_FONT 13
+#define SYSTEM_FIXED_FONT 16
+#define DEFAULT_PALETTE 15
+#if (_WIN32_WINNT >= 0x0500)
+#define DC_BRUSH	18
+#define DC_PEN	19
+#endif
+#define SYSPAL_ERROR 0
+#define SYSPAL_STATIC 1
+#define SYSPAL_NOSTATIC 2
+#define SYSPAL_NOSTATIC256 3
+#define TA_BASELINE 24
+#define TA_BOTTOM 8
+#define TA_TOP 0
+#define TA_CENTER 6
+#define TA_LEFT 0
+#define TA_RIGHT 2
+#define TA_RTLREADING 256
+#define TA_NOUPDATECP 0
+#define TA_UPDATECP 1
+#define TA_MASK (TA_BASELINE+TA_CENTER+TA_UPDATECP+TA_RTLREADING)
+#define VTA_BASELINE 24
+#define VTA_CENTER 6
+#define VTA_LEFT TA_BOTTOM
+#define VTA_RIGHT TA_TOP
+#define VTA_BOTTOM TA_RIGHT
+#define VTA_TOP TA_LEFT
+#define MWT_IDENTITY 1
+#define MWT_LEFTMULTIPLY 2
+#define MWT_RIGHTMULTIPLY 3
+#define OPAQUE 2
+#define TRANSPARENT 1
+#define BLACKONWHITE 1
+#define WHITEONBLACK 2
+#define COLORONCOLOR 3
+#define HALFTONE 4
+#define MAXSTRETCHBLTMODE 4
+#define STRETCH_ANDSCANS 1
+#define STRETCH_DELETESCANS 3
+#define STRETCH_HALFTONE 4
+#define STRETCH_ORSCANS 2
+#define TCI_SRCCHARSET 1
+#define TCI_SRCCODEPAGE 2
+#define TCI_SRCFONTSIG 3
+#define ICM_ON 2
+#define ICM_OFF 1
+#define ICM_QUERY 3
+#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 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 QDI_SETDIBITS	1
+#define QDI_GETDIBITS	2
+#define QDI_DIBTOSCREEN	4
+#define QDI_STRETCHDIB	8
+#define SP_NOTREPORTED	0x4000
+#define PR_JOBSTATUS	0
+#define ASPECT_FILTERING	1
+#define BS_SOLID	0
+#define BS_NULL	1
+#define BS_HOLLOW	1
+#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 LCS_CALIBRATED_RGB	0
+#define LCS_DEVICE_RGB	1
+#define LCS_DEVICE_CMYK	2
+#define LCS_GM_BUSINESS	1
+#define LCS_GM_GRAPHICS	2
+#define LCS_GM_IMAGES	4
+#define RASTER_FONTTYPE	1
+#define DEVICE_FONTTYPE	2
+#define TRUETYPE_FONTTYPE	4
+#define DMORIENT_PORTRAIT   1
+#define DMORIENT_LANDSCAPE  2
+#define DMPAPER_FIRST	1
+#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
+#if (WINVER >= 0x0500)
+#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	118
+#else
+#define DMPAPER_LAST	68
+#endif
+#define DMPAPER_USER	256
+#define DMBIN_FIRST	1
+#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	15
+#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 DM_SPECVERSION	800
+#define DM_GRAYSCALE	1
+#define DM_INTERLACED	2
+#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 DM_ORIENTATION 0x00000001
+#define DM_PAPERSIZE 0x00000002
+#define DM_PAPERLENGTH 0x00000004
+#define DM_PAPERWIDTH 0x00000008
+#define DM_SCALE 0x00000010
+#define DM_POSITION 0x00000020
+#define DM_COPIES 0x00000100
+#define DM_DEFAULTSOURCE 0x00000200
+#define DM_PRINTQUALITY 0x00000400
+#define DM_COLOR 0x00000800
+#define DM_DUPLEX 0x00001000
+#define DM_YRESOLUTION 0x00002000
+#define DM_TTOPTION 0x00004000
+#define DM_COLLATE 0x00008000
+#define DM_FORMNAME 0x00010000
+#define DM_LOGPIXELS 0x00020000
+#define DM_BITSPERPEL 0x00040000
+#define DM_PELSWIDTH 0x00080000
+#define DM_PELSHEIGHT 0x00100000
+#define DM_DISPLAYFLAGS 0x00200000
+#define DM_DISPLAYFREQUENCY 0x00400000
+#define DM_ICMMETHOD 0x00800000
+#define DM_ICMINTENT 0x01000000
+#define DM_MEDIATYPE 0x02000000
+#define DM_DITHERTYPE 0x04000000
+#if(WINVER >= 0x0500)
+#define DM_PANNINGWIDTH 0x08000000
+#define DM_PANNINGHEIGHT 0x10000000
+#endif
+#if(WINVER >= 0x0501)
+#define DM_DISPLAYFIXEDOUTPUT 0x20000000
+#define DM_DISPLAYORIENTATION 0x00000080
+#define DMDO_DEFAULT 0x00000000
+#define DMDO_90 0x00000001
+#define DMDO_180 0x00000002
+#define DMDO_270 0x00000003
+#define DMDFO_DEFAULT 0x00000000
+#define DMDFO_STRETCH 0x00000001
+#define DMDFO_CENTER 0x00000002
+#endif
+#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_COLORMETRIC	3
+#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
+#define GDI_ERROR 0xFFFFFFFF
+#define HGDI_ERROR ((HANDLE)GDI_ERROR)
+#define TMPF_FIXED_PITCH 1
+#define TMPF_VECTOR 2
+#define TMPF_TRUETYPE 4
+#define TMPF_DEVICE 8
+#define NTM_ITALIC 1
+#define NTM_BOLD 32
+#define NTM_REGULAR 64
+#define TT_POLYGON_TYPE 24
+#define TT_PRIM_LINE 1
+#define TT_PRIM_QSPLINE 2
+#define TT_PRIM_CSPLINE 3
+#define FONTMAPPER_MAX 10
+#define ENHMETA_STOCK_OBJECT 0x80000000
+#define WGL_FONT_LINES 0
+#define WGL_FONT_POLYGONS 1
+#define LPD_DOUBLEBUFFER 1
+#define LPD_STEREO 2
+#define LPD_SUPPORT_GDI 16
+#define LPD_SUPPORT_OPENGL 32
+#define LPD_SHARE_DEPTH 64
+#define LPD_SHARE_STENCIL 128
+#define LPD_SHARE_ACCUM 256
+#define LPD_SWAP_EXCHANGE 512
+#define LPD_SWAP_COPY 1024
+#define LPD_TRANSPARENT 4096
+#define LPD_TYPE_RGBA 0
+#define LPD_TYPE_COLORINDEX 1
+#define WGL_SWAP_MAIN_PLANE 1
+#define WGL_SWAP_OVERLAY1 2
+#define WGL_SWAP_OVERLAY2 4
+#define WGL_SWAP_OVERLAY3 8
+#define WGL_SWAP_OVERLAY4 16
+#define WGL_SWAP_OVERLAY5 32
+#define WGL_SWAP_OVERLAY6 64
+#define WGL_SWAP_OVERLAY7 128
+#define WGL_SWAP_OVERLAY8 256
+#define WGL_SWAP_OVERLAY9 512
+#define WGL_SWAP_OVERLAY10 1024
+#define WGL_SWAP_OVERLAY11 2048
+#define WGL_SWAP_OVERLAY12 4096
+#define WGL_SWAP_OVERLAY13 8192
+#define WGL_SWAP_OVERLAY14 16384
+#define WGL_SWAP_OVERLAY15 32768
+#define WGL_SWAP_UNDERLAY1 65536
+#define WGL_SWAP_UNDERLAY2 0x20000
+#define WGL_SWAP_UNDERLAY3 0x40000
+#define WGL_SWAP_UNDERLAY4 0x80000
+#define WGL_SWAP_UNDERLAY5 0x100000
+#define WGL_SWAP_UNDERLAY6 0x200000
+#define WGL_SWAP_UNDERLAY7 0x400000
+#define WGL_SWAP_UNDERLAY8 0x800000
+#define WGL_SWAP_UNDERLAY9 0x1000000
+#define WGL_SWAP_UNDERLAY10 0x2000000
+#define WGL_SWAP_UNDERLAY11 0x4000000
+#define WGL_SWAP_UNDERLAY12 0x8000000
+#define WGL_SWAP_UNDERLAY13 0x10000000
+#define WGL_SWAP_UNDERLAY14 0x20000000
+#define WGL_SWAP_UNDERLAY15 0x40000000
+#define AC_SRC_OVER		0x00
+#define AC_SRC_ALPHA		0x01
+#define AC_SRC_NO_PREMULT_ALPHA	0x01
+#define AC_SRC_NO_ALPHA		0x02
+#define AC_DST_NO_PREMULT_ALPHA	0x10
+#define AC_DST_NO_ALPHA		0x20
+#define LAYOUT_RTL 1
+#define LAYOUT_BITMAPORIENTATIONPRESERVED 8
+#if (WINVER >= 0x0400)
+#define CS_ENABLE           0x00000001
+#define CS_DISABLE          0x00000002
+#define CS_DELETE_TRANSFORM 0x00000003
+#endif
+#if (WINVER >= 0x0500)
+#define GRADIENT_FILL_RECT_H 0x00
+#define GRADIENT_FILL_RECT_V 0x01
+#define GRADIENT_FILL_TRIANGLE 0x02
+#define GRADIENT_FILL_OP_FLAG 0xff
+#define COLORMATCHTOTARGET_EMBEDED 0x00000001
+#define CREATECOLORSPACE_EMBEDED   0x00000001
+#define SETICMPROFILE_EMBEDED      0x00000001
+#endif
+
+#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_MODESPRUNED         0x08000000
+
+#if (_WIN32_WINNT >= 0x0500)
+#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
+#endif
+
+#if (_WIN32_WINNT >= 0x0500)
+#define GGI_MARK_NONEXISTING_GLYPHS 1
+#endif
+
+#ifndef RC_INVOKED
+typedef struct _ABC {
+	int abcA;
+	UINT abcB;
+	int abcC;
+} ABC,*LPABC;
+typedef struct _ABCFLOAT {
+	FLOAT abcfA;
+	FLOAT abcfB;
+	FLOAT abcfC;
+} ABCFLOAT,*LPABCFLOAT;
+typedef struct tagBITMAP {
+	LONG	bmType;
+	LONG	bmWidth;
+	LONG	bmHeight;
+	LONG	bmWidthBytes;
+	WORD	bmPlanes;
+	WORD	bmBitsPixel;
+	LPVOID	bmBits;
+} BITMAP,*PBITMAP,*LPBITMAP;
+typedef struct tagBITMAPCOREHEADER {
+	DWORD	bcSize;
+	WORD	bcWidth;
+	WORD	bcHeight;
+	WORD	bcPlanes;
+	WORD	bcBitCount;
+} BITMAPCOREHEADER,*LPBITMAPCOREHEADER,*PBITMAPCOREHEADER;
+#pragma pack(push,1)
+typedef struct tagRGBTRIPLE {
+	BYTE rgbtBlue;
+	BYTE rgbtGreen;
+	BYTE rgbtRed;
+} RGBTRIPLE,*LPRGBTRIPLE;
+#pragma pack(pop)
+#pragma pack(push,2)
+typedef struct tagBITMAPFILEHEADER {
+	WORD	bfType;
+	DWORD	bfSize;
+	WORD	bfReserved1;
+	WORD	bfReserved2;
+	DWORD	bfOffBits;
+} BITMAPFILEHEADER,*LPBITMAPFILEHEADER,*PBITMAPFILEHEADER;
+#pragma pack(pop)
+typedef struct _BITMAPCOREINFO {
+	BITMAPCOREHEADER	bmciHeader;
+	RGBTRIPLE	bmciColors[1];
+} BITMAPCOREINFO,*LPBITMAPCOREINFO,*PBITMAPCOREINFO;
+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 tagRGBQUAD {
+	BYTE	rgbBlue;
+	BYTE	rgbGreen;
+	BYTE	rgbRed;
+	BYTE	rgbReserved;
+} RGBQUAD,*LPRGBQUAD;
+typedef struct tagBITMAPINFO {
+	BITMAPINFOHEADER bmiHeader;
+	RGBQUAD bmiColors[1];
+} BITMAPINFO,*LPBITMAPINFO,*PBITMAPINFO;
+typedef long FXPT16DOT16,*LPFXPT16DOT16;
+typedef long FXPT2DOT30,*LPFXPT2DOT30;
+typedef struct tagCIEXYZ {
+	FXPT2DOT30 ciexyzX;
+	FXPT2DOT30 ciexyzY;
+	FXPT2DOT30 ciexyzZ;
+} CIEXYZ,*LPCIEXYZ;
+typedef struct tagCIEXYZTRIPLE {
+	CIEXYZ ciexyzRed;
+	CIEXYZ ciexyzGreen;
+	CIEXYZ ciexyzBlue;
+} CIEXYZTRIPLE,*LPCIEXYZTRIPLE;
+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;
+typedef struct tagFONTSIGNATURE {
+	DWORD	fsUsb[4];
+	DWORD	fsCsb[2];
+} FONTSIGNATURE,*LPFONTSIGNATURE;
+typedef struct {
+	UINT ciCharset;
+	UINT ciACP;
+	FONTSIGNATURE fs;
+} CHARSETINFO,*LPCHARSETINFO;
+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,*LPCOLORADJUSTMENT;
+typedef struct _devicemodeA {
+  BYTE   dmDeviceName[CCHDEVICENAME];
+  WORD   dmSpecVersion;
+  WORD   dmDriverVersion;
+  WORD   dmSize;
+  WORD   dmDriverExtra;
+  DWORD  dmFields;
+  _ANONYMOUS_UNION union {
+    _ANONYMOUS_STRUCT struct {
+      short dmOrientation;
+      short dmPaperSize;
+      short dmPaperLength;
+      short dmPaperWidth;
+      short dmScale;
+      short dmCopies;
+      short dmDefaultSource;
+      short dmPrintQuality;
+    } DUMMYSTRUCTNAME;
+    _ANONYMOUS_STRUCT struct {
+      POINTL dmPosition;
+      DWORD  dmDisplayOrientation;
+      DWORD  dmDisplayFixedOutput;
+    } DUMMYSTRUCTNAME2;
+  } DUMMYUNIONNAME;
+
+  short  dmColor;
+  short  dmDuplex;
+  short  dmYResolution;
+  short  dmTTOption;
+  short  dmCollate;
+  BYTE   dmFormName[CCHFORMNAME];
+  WORD   dmLogPixels;
+  DWORD  dmBitsPerPel;
+  DWORD  dmPelsWidth;
+  DWORD  dmPelsHeight;
+  _ANONYMOUS_UNION union {
+    DWORD  dmDisplayFlags;
+    DWORD  dmNup;
+  } DUMMYUNIONNAME2;
+  DWORD  dmDisplayFrequency;
+#if(WINVER >= 0x0400)
+  DWORD  dmICMMethod;
+  DWORD  dmICMIntent;
+  DWORD  dmMediaType;
+  DWORD  dmDitherType;
+  DWORD  dmReserved1;
+  DWORD  dmReserved2;
+#if (WINVER >= 0x0500) || (_WIN32_WINNT >= 0x0400)
+  DWORD  dmPanningWidth;
+  DWORD  dmPanningHeight;
+#endif
+#endif /* WINVER >= 0x0400 */
+} DEVMODEA,*LPDEVMODEA,*PDEVMODEA;
+typedef struct _devicemodeW {
+  WCHAR   dmDeviceName[CCHDEVICENAME];
+  WORD   dmSpecVersion;
+  WORD   dmDriverVersion;
+  WORD   dmSize;
+  WORD   dmDriverExtra;
+  DWORD  dmFields;
+  _ANONYMOUS_UNION union {
+    _ANONYMOUS_STRUCT struct {
+      short dmOrientation;
+      short dmPaperSize;
+      short dmPaperLength;
+      short dmPaperWidth;
+      short dmScale;
+      short dmCopies;
+      short dmDefaultSource;
+      short dmPrintQuality;
+    } DUMMYSTRUCTNAME;
+    _ANONYMOUS_STRUCT struct {
+      POINTL dmPosition;
+      DWORD  dmDisplayOrientation;
+      DWORD  dmDisplayFixedOutput;
+    } DUMMYSTRUCTNAME2;
+  } DUMMYUNIONNAME;
+
+  short  dmColor;
+  short  dmDuplex;
+  short  dmYResolution;
+  short  dmTTOption;
+  short  dmCollate;
+  WCHAR  dmFormName[CCHFORMNAME];
+  WORD   dmLogPixels;
+  DWORD  dmBitsPerPel;
+  DWORD  dmPelsWidth;
+  DWORD  dmPelsHeight;
+  _ANONYMOUS_UNION union {
+    DWORD  dmDisplayFlags;
+    DWORD  dmNup;
+  } DUMMYUNIONNAME2;
+  DWORD  dmDisplayFrequency;
+#if(WINVER >= 0x0400)
+  DWORD  dmICMMethod;
+  DWORD  dmICMIntent;
+  DWORD  dmMediaType;
+  DWORD  dmDitherType;
+  DWORD  dmReserved1;
+  DWORD  dmReserved2;
+#if (WINVER >= 0x0500) || (_WIN32_WINNT >= 0x0400)
+  DWORD  dmPanningWidth;
+  DWORD  dmPanningHeight;
+#endif
+#endif /* WINVER >= 0x0400 */
+} DEVMODEW,*LPDEVMODEW,*PDEVMODEW;
+typedef struct tagDIBSECTION {
+	BITMAP dsBm;
+	BITMAPINFOHEADER dsBmih;
+	DWORD dsBitfields[3];
+	HANDLE dshSection;
+	DWORD dsOffset;
+} DIBSECTION;
+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 struct tagEMR {
+	DWORD iType;
+	DWORD nSize;
+} EMR,*PEMR;
+typedef struct tagEMRANGLEARC {
+	EMR emr;
+	POINTL ptlCenter;
+	DWORD nRadius;
+	FLOAT eStartAngle;
+	FLOAT eSweepAngle;
+} EMRANGLEARC,*PEMRANGLEARC;
+typedef struct tagEMRARC {
+	EMR emr;
+	RECTL rclBox;
+	POINTL ptlStart;
+	POINTL ptlEnd;
+} EMRARC,*PEMRARC,EMRARCTO,*PEMRARCTO,EMRCHORD,*PEMRCHORD,EMRPIE,*PEMRPIE;
+typedef struct  _XFORM {
+	FLOAT eM11;
+	FLOAT eM12;
+	FLOAT eM21;
+	FLOAT eM22;
+	FLOAT eDx;
+	FLOAT eDy;
+} XFORM,*PXFORM,*LPXFORM;
+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 offBitsSrc;
+	DWORD cbBitsSrc;
+} EMRBITBLT,*PEMRBITBLT;
+typedef struct tagLOGBRUSH {
+	UINT lbStyle;
+	COLORREF lbColor;
+	LONG lbHatch;
+} LOGBRUSH,*PLOGBRUSH,*LPLOGBRUSH;
+typedef LOGBRUSH PATTERN,*PPATTERN,*LPPATTERN;
+typedef struct tagEMRCREATEBRUSHINDIRECT {
+	EMR emr;
+	DWORD ihBrush;
+	LOGBRUSH lb;
+} EMRCREATEBRUSHINDIRECT,*PEMRCREATEBRUSHINDIRECT;
+typedef LONG LCSCSTYPE;
+typedef LONG LCSGAMUTMATCH;
+typedef struct tagLOGCOLORSPACEA {
+	DWORD lcsSignature;
+	DWORD lcsVersion;
+	DWORD lcsSize;
+	LCSCSTYPE lcsCSType;
+	LCSGAMUTMATCH lcsIntent;
+	CIEXYZTRIPLE lcsEndpoints;
+	DWORD lcsGammaRed;
+	DWORD lcsGammaGreen;
+	DWORD lcsGammaBlue;
+	CHAR lcsFilename[MAX_PATH];
+} 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[MAX_PATH];
+} LOGCOLORSPACEW,*LPLOGCOLORSPACEW;
+typedef struct tagEMRCREATECOLORSPACE {
+	EMR emr;
+	DWORD ihCS;
+	LOGCOLORSPACEW lcs;
+} EMRCREATECOLORSPACE,*PEMRCREATECOLORSPACE;
+typedef struct tagEMRCREATEDIBPATTERNBRUSHPT {
+	EMR emr;
+	DWORD ihBrush;
+	DWORD iUsage;
+	DWORD offBmi;
+	DWORD cbBmi;
+	DWORD offBits;
+	DWORD cbBits;
+} EMRCREATEDIBPATTERNBRUSHPT,*PEMRCREATEDIBPATTERNBRUSHPT;
+typedef struct tagEMRCREATEMONOBRUSH {
+	EMR emr;
+	DWORD ihBrush;
+	DWORD iUsage;
+	DWORD offBmi;
+	DWORD cbBmi;
+	DWORD offBits;
+	DWORD cbBits;
+} EMRCREATEMONOBRUSH,*PEMRCREATEMONOBRUSH;
+typedef struct tagPALETTEENTRY {
+	BYTE peRed;
+	BYTE peGreen;
+	BYTE peBlue;
+	BYTE peFlags;
+} PALETTEENTRY,*LPPALETTEENTRY,*PPALETTEENTRY;
+typedef struct tagLOGPALETTE {
+	WORD palVersion;
+	WORD palNumEntries;
+	PALETTEENTRY palPalEntry[1];
+} LOGPALETTE,*NPLOGPALETTE,*PLOGPALETTE,*LPLOGPALETTE;
+typedef struct tagEMRCREATEPALETTE {
+	EMR emr;
+	DWORD ihPal;
+	LOGPALETTE lgpl;
+} EMRCREATEPALETTE,*PEMRCREATEPALETTE;
+typedef struct tagLOGPEN {
+	UINT lopnStyle;
+	POINT lopnWidth;
+	COLORREF lopnColor;
+} LOGPEN,*PLOGPEN,*LPLOGPEN;
+typedef struct tagEMRCREATEPEN {
+	EMR emr;
+	DWORD ihPen;
+	LOGPEN lopn;
+} EMRCREATEPEN,*PEMRCREATEPEN;
+typedef struct tagEMRELLIPSE {
+	EMR emr;
+	RECTL rclBox;
+} EMRELLIPSE,*PEMRELLIPSE,EMRRECTANGLE,*PEMRRECTANGLE;
+typedef struct tagEMREOF {
+	EMR emr;
+	DWORD nPalEntries;
+	DWORD offPalEntries;
+	DWORD nSizeLast;
+} EMREOF,*PEMREOF;
+typedef struct tagEMREXCLUDECLIPRECT {
+	EMR emr;
+	RECTL rclClip;
+} EMREXCLUDECLIPRECT,*PEMREXCLUDECLIPRECT,EMRINTERSECTCLIPRECT,*PEMRINTERSECTCLIPRECT;
+typedef struct tagPANOSE {
+	BYTE bFamilyType;
+	BYTE bSerifStyle;
+	BYTE bWeight;
+	BYTE bProportion;
+	BYTE bContrast;
+	BYTE bStrokeVariation;
+	BYTE bArmStyle;
+	BYTE bLetterform;
+	BYTE bMidline;
+	BYTE bXHeight;
+} PANOSE;
+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[LF_FACESIZE];
+} LOGFONTA,*PLOGFONTA,*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[LF_FACESIZE];
+} LOGFONTW,*PLOGFONTW,*LPLOGFONTW;
+typedef struct tagEXTLOGFONTA {
+	LOGFONTA	elfLogFont;
+	BYTE	elfFullName[LF_FULLFACESIZE];
+	BYTE	elfStyle[LF_FACESIZE];
+	DWORD	elfVersion;
+	DWORD	elfStyleSize;
+	DWORD	elfMatch;
+	DWORD	elfReserved;
+	BYTE	elfVendorId[ELF_VENDOR_SIZE];
+	DWORD	elfCulture;
+	PANOSE	elfPanose;
+} EXTLOGFONTA,*PEXTLOGFONTA,*LPEXTLOGFONTA;
+typedef struct tagEXTLOGFONTW {
+	LOGFONTW	elfLogFont;
+	WCHAR	elfFullName[LF_FULLFACESIZE];
+	WCHAR	elfStyle[LF_FACESIZE];
+	DWORD	elfVersion;
+	DWORD	elfStyleSize;
+	DWORD	elfMatch;
+	DWORD	elfReserved;
+	BYTE	elfVendorId[ELF_VENDOR_SIZE];
+	DWORD	elfCulture;
+	PANOSE	elfPanose;
+} EXTLOGFONTW,*PEXTLOGFONTW,*LPEXTLOGFONTW;
+typedef struct tagEMREXTCREATEFONTINDIRECTW {
+	EMR emr;
+	DWORD ihFont;
+	EXTLOGFONTW elfw;
+} EMREXTCREATEFONTINDIRECTW,*PEMREXTCREATEFONTINDIRECTW;
+typedef struct tagEXTLOGPEN {
+	UINT elpPenStyle;
+	UINT elpWidth;
+	UINT elpBrushStyle;
+	COLORREF elpColor;
+	LONG elpHatch;
+	DWORD elpNumEntries;
+	DWORD elpStyleEntry[1];
+} EXTLOGPEN,*PEXTLOGPEN,*LPEXTLOGPEN;
+typedef struct tagEMREXTCREATEPEN {
+	EMR emr;
+	DWORD ihPen;
+	DWORD offBmi;
+	DWORD cbBmi;
+	DWORD offBits;
+	DWORD cbBits;
+	EXTLOGPEN elp;
+} EMREXTCREATEPEN,*PEMREXTCREATEPEN;
+typedef struct tagEMREXTFLOODFILL {
+	EMR emr;
+	POINTL ptlStart;
+	COLORREF crColor;
+	DWORD iMode;
+} EMREXTFLOODFILL,*PEMREXTFLOODFILL;
+typedef struct tagEMREXTSELECTCLIPRGN {
+	EMR emr;
+	DWORD cbRgnData;
+	DWORD iMode;
+	BYTE RgnData[1];
+} EMREXTSELECTCLIPRGN,*PEMREXTSELECTCLIPRGN;
+typedef struct tagEMRTEXT {
+	POINTL ptlReference;
+	DWORD nChars;
+	DWORD offString;
+	DWORD fOptions;
+	RECTL rcl;
+	DWORD offDx;
+} EMRTEXT,*PEMRTEXT;
+typedef struct tagEMREXTTEXTOUTA {
+	EMR emr;
+	RECTL rclBounds;
+	DWORD iGraphicsMode;
+	FLOAT exScale;
+	FLOAT eyScale;
+	EMRTEXT emrtext;
+} EMREXTTEXTOUTA,*PEMREXTTEXTOUTA,EMREXTTEXTOUTW,*PEMREXTTEXTOUTW;
+typedef struct tagEMRFILLPATH {
+	EMR emr;
+	RECTL rclBounds;
+} EMRFILLPATH,*PEMRFILLPATH,EMRSTROKEANDFILLPATH,*PEMRSTROKEANDFILLPATH,EMRSTROKEPATH,*PEMRSTROKEPATH;
+typedef struct tagEMRFILLRGN {
+	EMR emr;
+	RECTL rclBounds;
+	DWORD cbRgnData;
+	DWORD ihBrush;
+	BYTE RgnData[1];
+} EMRFILLRGN,*PEMRFILLRGN;
+typedef struct tagEMRFORMAT   {
+	DWORD dSignature;
+	DWORD nVersion;
+	DWORD cbData;
+	DWORD offData;
+} EMRFORMAT;
+typedef struct tagEMRFRAMERGN {
+	EMR emr;
+	RECTL rclBounds;
+	DWORD cbRgnData;
+	DWORD ihBrush;
+	SIZEL szlStroke;
+	BYTE RgnData[1];
+} EMRFRAMERGN,*PEMRFRAMERGN;
+typedef struct tagEMRGDICOMMENT {
+	EMR emr;
+	DWORD cbData;
+	BYTE Data[1];
+} EMRGDICOMMENT,*PEMRGDICOMMENT;
+typedef struct tagEMRINVERTRGN {
+	EMR emr;
+	RECTL rclBounds;
+	DWORD cbRgnData;
+	BYTE RgnData[1];
+} EMRINVERTRGN,*PEMRINVERTRGN,EMRPAINTRGN,*PEMRPAINTRGN;
+typedef struct tagEMRLINETO {
+	EMR emr;
+	POINTL ptl;
+} EMRLINETO,*PEMRLINETO,EMRMOVETOEX,*PEMRMOVETOEX;
+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 tagEMRMODIFYWORLDTRANSFORM {
+	EMR emr;
+	XFORM xform;
+	DWORD iMode;
+} EMRMODIFYWORLDTRANSFORM,*PEMRMODIFYWORLDTRANSFORM;
+typedef struct tagEMROFFSETCLIPRGN {
+	EMR emr;
+	POINTL ptlOffset;
+} EMROFFSETCLIPRGN,*PEMROFFSETCLIPRGN;
+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 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 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;
+	POINTL apts[1];
+} EMRPOLYLINE16,*PEMRPOLYLINE16,EMRPOLYBEZIER16,*PEMRPOLYBEZIER16,EMRPOLYGON16,*PEMRPOLYGON16,EMRPOLYBEZIERTO16,*PEMRPOLYBEZIERTO16,EMRPOLYLINETO16,*PEMRPOLYLINETO16;
+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 tagEMRPOLYTEXTOUTA {
+	EMR emr;
+	RECTL rclBounds;
+	DWORD iGraphicsMode;
+	FLOAT exScale;
+	FLOAT eyScale;
+	LONG cStrings;
+	EMRTEXT aemrtext[1];
+} EMRPOLYTEXTOUTA,*PEMRPOLYTEXTOUTA,EMRPOLYTEXTOUTW,*PEMRPOLYTEXTOUTW;
+typedef struct tagEMRRESIZEPALETTE {
+	EMR emr;
+	DWORD ihPal;
+	DWORD cEntries;
+} EMRRESIZEPALETTE,*PEMRRESIZEPALETTE;
+typedef struct tagEMRRESTOREDC {
+	EMR emr;
+	LONG iRelative;
+} EMRRESTOREDC,*PEMRRESTOREDC;
+typedef struct tagEMRROUNDRECT {
+	EMR emr;
+	RECTL rclBox;
+	SIZEL szlCorner;
+} EMRROUNDRECT,*PEMRROUNDRECT;
+typedef struct tagEMRSCALEVIEWPORTEXTEX {
+	EMR emr;
+	LONG xNum;
+	LONG xDenom;
+	LONG yNum;
+	LONG yDenom;
+} EMRSCALEVIEWPORTEXTEX,*PEMRSCALEVIEWPORTEXTEX,EMRSCALEWINDOWEXTEX,*PEMRSCALEWINDOWEXTEX;
+typedef struct tagEMRSELECTCOLORSPACE {
+	EMR emr;
+	DWORD ihCS;
+} EMRSELECTCOLORSPACE,*PEMRSELECTCOLORSPACE,EMRDELETECOLORSPACE,*PEMRDELETECOLORSPACE;
+typedef struct tagEMRSELECTOBJECT {
+	EMR emr;
+	DWORD ihObject;
+} EMRSELECTOBJECT,*PEMRSELECTOBJECT,EMRDELETEOBJECT,*PEMRDELETEOBJECT;
+typedef struct tagEMRSELECTPALETTE {
+	EMR emr;
+	DWORD ihPal;
+} EMRSELECTPALETTE,*PEMRSELECTPALETTE;
+typedef struct tagEMRSETARCDIRECTION {
+	EMR emr;
+	DWORD iArcDirection;
+} EMRSETARCDIRECTION,*PEMRSETARCDIRECTION;
+typedef struct tagEMRSETTEXTCOLOR {
+	EMR emr;
+	COLORREF crColor;
+} EMRSETBKCOLOR,*PEMRSETBKCOLOR,EMRSETTEXTCOLOR,*PEMRSETTEXTCOLOR;
+typedef struct tagEMRSETCOLORADJUSTMENT {
+	EMR emr;
+	COLORADJUSTMENT ColorAdjustment;
+} EMRSETCOLORADJUSTMENT,*PEMRSETCOLORADJUSTMENT;
+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 tagEMRSETMAPPERFLAGS {
+	EMR emr;
+	DWORD dwFlags;
+} EMRSETMAPPERFLAGS,*PEMRSETMAPPERFLAGS;
+typedef struct tagEMRSETMITERLIMIT {
+	EMR emr;
+	FLOAT eMiterLimit;
+} EMRSETMITERLIMIT,*PEMRSETMITERLIMIT;
+typedef struct tagEMRSETPALETTEENTRIES {
+	EMR emr;
+	DWORD ihPal;
+	DWORD iStart;
+	DWORD cEntries;
+	PALETTEENTRY aPalEntries[1];
+} EMRSETPALETTEENTRIES,*PEMRSETPALETTEENTRIES;
+typedef struct tagEMRSETPIXELV {
+	EMR emr;
+	POINTL ptlPixel;
+	COLORREF crColor;
+} EMRSETPIXELV,*PEMRSETPIXELV;
+typedef struct tagEMRSETVIEWPORTEXTEX {
+	EMR emr;
+	SIZEL szlExtent;
+} EMRSETVIEWPORTEXTEX,*PEMRSETVIEWPORTEXTEX,EMRSETWINDOWEXTEX,*PEMRSETWINDOWEXTEX;
+typedef struct tagEMRSETVIEWPORTORGEX {
+	EMR emr;
+	POINTL ptlOrigin;
+} EMRSETVIEWPORTORGEX,*PEMRSETVIEWPORTORGEX,EMRSETWINDOWORGEX,*PEMRSETWINDOWORGEX,EMRSETBRUSHORGEX,*PEMRSETBRUSHORGEX;
+typedef struct tagEMRSETWORLDTRANSFORM {
+	EMR emr;
+	XFORM xform;
+} EMRSETWORLDTRANSFORM,*PEMRSETWORLDTRANSFORM;
+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 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 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,EMRSETPOLYFILLMODE,*PEMRSETPOLYFILLMODE,EMRSETROP2,*PEMRSETROP2,EMRSETSTRETCHBLTMODE,*PEMRSETSTRETCHBLTMODE,EMRSETTEXTALIGN,*PEMRSETTEXTALIGN,EMRENABLEICM,*PEMRENABLEICM;
+#pragma pack(push,2)
+typedef struct tagMETAHEADER {
+	WORD mtType;
+	WORD mtHeaderSize;
+	WORD mtVersion;
+	DWORD mtSize;
+	WORD mtNoObjects;
+	DWORD mtMaxRecord;
+	WORD mtNoParameters;
+} METAHEADER,*PMETAHEADER,*LPMETAHEADER;
+#pragma pack(pop)
+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;
+#if (WINVER >= 0x0400)
+	DWORD cbPixelFormat;
+	DWORD offPixelFormat;
+	DWORD bOpenGL;
+#endif
+#if (WINVER >= 0x0500)
+	SIZEL szlMicrometers;
+#endif
+} ENHMETAHEADER,*LPENHMETAHEADER;
+typedef struct tagMETARECORD {
+	DWORD rdSize;
+	WORD rdFunction;
+	WORD rdParm[1];
+} METARECORD,*PMETARECORD,*LPMETARECORD;
+typedef struct tagENHMETARECORD {
+	DWORD iType;
+	DWORD nSize;
+	DWORD dParm[1];
+} ENHMETARECORD,*LPENHMETARECORD;
+typedef struct tagHANDLETABLE {
+	HGDIOBJ objectHandle[1];
+} HANDLETABLE,*LPHANDLETABLE;
+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,*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,*LPTEXTMETRICW;
+typedef struct _RGNDATAHEADER {
+	DWORD dwSize;
+	DWORD iType;
+	DWORD nCount;
+	DWORD nRgnSize;
+	RECT rcBound;
+} RGNDATAHEADER;
+typedef struct _RGNDATA {
+	RGNDATAHEADER rdh;
+	char Buffer[1];
+} RGNDATA,*PRGNDATA, *LPRGNDATA;
+/* for GetRandomRgn */
+#define SYSRGN  4
+typedef struct tagGCP_RESULTSA {
+	DWORD lStructSize;
+	LPSTR lpOutString;
+	UINT *lpOrder;
+	INT *lpDx;
+	INT *lpCaretPos;
+	LPSTR lpClass;
+	LPWSTR lpGlyphs;
+	UINT nGlyphs;
+	UINT 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;
+	UINT nMaxFit;
+} GCP_RESULTSW,*LPGCP_RESULTSW;
+typedef struct _GLYPHMETRICS {
+	UINT gmBlackBoxX;
+	UINT gmBlackBoxY;
+	POINT gmptGlyphOrigin;
+	short gmCellIncX;
+	short gmCellIncY;
+} GLYPHMETRICS,*LPGLYPHMETRICS;
+#if (_WIN32_WINNT >= 0x0500)
+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;
+#endif
+typedef struct tagKERNINGPAIR {
+	WORD wFirst;
+	WORD wSecond;
+	int iKernAmount;
+} KERNINGPAIR,*LPKERNINGPAIR;
+typedef struct _FIXED {
+	WORD fract;
+	short value;
+} FIXED;
+typedef struct _MAT2 {
+	FIXED eM11;
+	FIXED eM12;
+	FIXED eM21;
+	FIXED eM22;
+} MAT2,*LPMAT2;
+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,*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,*LPOUTLINETEXTMETRICW;
+typedef struct _RASTERIZER_STATUS {
+	short nSize;
+	short wFlags;
+	short nLanguageID;
+} RASTERIZER_STATUS,*LPRASTERIZER_STATUS;
+typedef struct _POLYTEXTA {
+	int x;
+	int y;
+	UINT n;
+	LPCSTR lpstr;
+	UINT uiFlags;
+	RECT rcl;
+	int *pdx;
+} POLYTEXTA, *PPOLYTEXTA, *LPPOLYTEXTA;
+typedef struct _POLYTEXTW {
+	int x;
+	int y;
+	UINT n;
+	LPCWSTR lpstr;
+	UINT uiFlags;
+	RECT rcl;
+	int *pdx;
+} POLYTEXTW, *PPOLYTEXTW, *LPPOLYTEXTW;
+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;
+typedef struct tagMETAFILEPICT {
+	LONG mm;
+	LONG xExt;
+	LONG yExt;
+	HMETAFILE hMF;
+} METAFILEPICT,*LPMETAFILEPICT;
+typedef struct tagLOCALESIGNATURE {
+	DWORD lsUsb[4];
+	DWORD lsCsbDefault[2];
+	DWORD lsCsbSupported[2];
+} LOCALESIGNATURE,*PLOCALESIGNATURE,*LPLOCALESIGNATURE;
+typedef LONG LCSTYPE;
+#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,*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,*LPNEWTEXTMETRICW;
+#pragma pack(pop)
+typedef struct tagNEWTEXTMETRICEXA {
+	NEWTEXTMETRICA ntmTm;
+	FONTSIGNATURE ntmFontSig;
+} NEWTEXTMETRICEXA;
+typedef struct tagNEWTEXTMETRICEXW {
+	NEWTEXTMETRICW ntmTm;
+	FONTSIGNATURE ntmFontSig;
+} NEWTEXTMETRICEXW;
+typedef struct tagPELARRAY {
+	LONG paXCount;
+	LONG paYCount;
+	LONG paXExt;
+	LONG paYExt;
+	BYTE paRGBs;
+} PELARRAY,*PPELARRAY,*LPPELARRAY;
+typedef struct tagENUMLOGFONTA {
+	LOGFONTA elfLogFont;
+	BYTE elfFullName[LF_FULLFACESIZE];
+	BYTE elfStyle[LF_FACESIZE];
+} ENUMLOGFONTA,*LPENUMLOGFONTA;
+typedef struct tagENUMLOGFONTW {
+	LOGFONTW elfLogFont;
+	WCHAR elfFullName[LF_FULLFACESIZE];
+	WCHAR elfStyle[LF_FACESIZE];
+} ENUMLOGFONTW,*LPENUMLOGFONTW;
+typedef struct tagENUMLOGFONTEXA {
+	LOGFONTA elfLogFont;
+	BYTE elfFullName[LF_FULLFACESIZE];
+	BYTE elfStyle[LF_FACESIZE];
+	BYTE elfScript[LF_FACESIZE];
+} ENUMLOGFONTEXA,*LPENUMLOGFONTEXA;
+typedef struct tagENUMLOGFONTEXW {
+	LOGFONTW elfLogFont;
+	WCHAR elfFullName[LF_FULLFACESIZE];
+	WCHAR elfStyle[LF_FACESIZE];
+	WCHAR elfScript[LF_FACESIZE];
+} ENUMLOGFONTEXW,*LPENUMLOGFONTEXW;
+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;
+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;
+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;
+typedef struct _BLENDFUNCTION {
+    BYTE BlendOp;
+    BYTE BlendFlags;
+    BYTE SourceConstantAlpha;
+    BYTE AlphaFormat;
+} BLENDFUNCTION,*PBLENDFUNCTION,*LPBLENDFUNCTION;
+#define MM_MAX_NUMAXES  16
+typedef struct _DESIGNVECTOR {
+	DWORD dvReserved;
+	DWORD dvNumAxes;
+	LONG dvValues[MM_MAX_NUMAXES];
+} DESIGNVECTOR, *PDESIGNVECTOR, FAR *LPDESIGNVECTOR;
+#if _WIN32_WINNT >= 0x0500
+typedef struct tagENUMLOGFONTEXDVA
+{
+	ENUMLOGFONTEXA elfEnumLogfontEx;
+	DESIGNVECTOR elfDesignVector;
+} ENUMLOGFONTEXDVA, *PENUMLOGFONTEXDVA, *LPENUMLOGFONTEXDVA;
+typedef struct tagENUMLOGFONTEXDVW
+{
+	ENUMLOGFONTEXW elfEnumLogfontEx;
+	DESIGNVECTOR elfDesignVector;
+} ENUMLOGFONTEXDVW, *PENUMLOGFONTEXDVW, *LPENUMLOGFONTEXDVW;
+#endif /* _WIN32_WINNT >= 0x0500 */
+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 _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 BOOL (CALLBACK *ABORTPROC)(HDC,int);
+typedef int (CALLBACK *MFENUMPROC)(HDC,HANDLETABLE*,METARECORD*,int,LPARAM);
+typedef int (CALLBACK *ENHMFENUMPROC)(HDC,HANDLETABLE*,const ENHMETARECORD*,int,LPARAM);
+typedef int (CALLBACK *OLDFONTENUMPROCA)(const LOGFONTA*,const TEXTMETRICA*,DWORD,LPARAM);
+typedef int (CALLBACK *OLDFONTENUMPROCW)(const LOGFONTW*,const TEXTMETRICW*,DWORD,LPARAM);
+typedef OLDFONTENUMPROCA FONTENUMPROCA;
+typedef OLDFONTENUMPROCW FONTENUMPROCW;
+typedef int (CALLBACK *ICMENUMPROCA)(LPSTR,LPARAM);
+typedef int (CALLBACK *ICMENUMPROCW)(LPWSTR,LPARAM);
+typedef void (CALLBACK *GOBJENUMPROC)(LPVOID,LPARAM);
+typedef void (CALLBACK *LINEDDAPROC)(int,int,LPARAM);
+typedef UINT (CALLBACK *LPFNDEVMODE)(HWND,HMODULE,LPDEVMODEA,LPSTR,LPSTR,LPDEVMODEA,LPSTR,UINT);
+typedef DWORD (CALLBACK *LPFNDEVCAPS)(LPSTR,LPSTR,UINT,LPSTR,LPDEVMODEA);
+
+#define MAKEPOINTS(l) (*((POINTS*)&(l)))
+#define MAKEROP4(f,b)	(DWORD)((((b)<<8)&0xFF000000)|(f))
+
+#define GetCValue(cmyk) ((BYTE)(cmyk))
+#define GetMValue(cmyk) ((BYTE)((cmyk)>> 8))
+#define GetYValue(cmyk) ((BYTE)((cmyk)>>16))
+#define GetKValue(cmyk) ((BYTE)((cmyk)>>24))
+#define CMYK(c,m,y,k) ((COLORREF)((BYTE)(k)|((BYTE)(y)<<8)|((BYTE)(m)<<16)|((BYTE)(c)<<24)))
+
+#define GetRValue(c) ((BYTE)(c))
+#define GetGValue(c) ((BYTE)(((WORD)(c))>>8))
+#define GetBValue(c) ((BYTE)((c)>>16))
+#define RGB(r,g,b) ((COLORREF)((BYTE)(r)|((BYTE)(g) << 8)|((BYTE)(b) << 16)))
+
+#define PALETTEINDEX(i)	((0x01000000|(COLORREF)(WORD)(i)))
+#define PALETTERGB(r,g,b)	(0x02000000|RGB(r,g,b))
+
+WINGDIAPI int WINAPI AbortDoc(HDC);
+WINGDIAPI BOOL WINAPI AbortPath(HDC);
+WINGDIAPI int WINAPI AddFontResourceA(LPCSTR);
+WINGDIAPI int WINAPI AddFontResourceW(LPCWSTR);
+#if (_WIN32_WINNT >= 0x0500)
+WINGDIAPI HANDLE WINAPI AddFontMemResourceEx(PVOID,DWORD,PVOID,DWORD *);
+WINGDIAPI int WINAPI AddFontResourceExA(LPCSTR,DWORD,PVOID);
+WINGDIAPI int WINAPI AddFontResourceExW(LPCWSTR,DWORD,PVOID);
+#endif
+WINGDIAPI BOOL WINAPI AngleArc(HDC,int,int,DWORD,FLOAT,FLOAT);
+WINGDIAPI BOOL WINAPI AnimatePalette(HPALETTE,UINT,UINT,const PALETTEENTRY*);
+WINGDIAPI BOOL WINAPI Arc(HDC,int,int,int,int,int,int,int,int);
+WINGDIAPI BOOL WINAPI ArcTo(HDC,int,int,int,int,int,int,int,int);
+WINGDIAPI BOOL WINAPI BeginPath(HDC);
+WINGDIAPI BOOL WINAPI BitBlt(HDC,int,int,int,int,HDC,int,int,DWORD);
+WINGDIAPI BOOL WINAPI CancelDC(HDC);
+WINGDIAPI BOOL WINAPI CheckColorsInGamut(HDC,PVOID,PVOID,DWORD);
+WINGDIAPI BOOL WINAPI Chord(HDC,int,int,int,int,int,int,int,int);
+WINGDIAPI int WINAPI ChoosePixelFormat(HDC,CONST PIXELFORMATDESCRIPTOR*);
+WINGDIAPI HENHMETAFILE WINAPI CloseEnhMetaFile(HDC);
+WINGDIAPI BOOL WINAPI CloseFigure(HDC);
+WINGDIAPI HMETAFILE WINAPI CloseMetaFile(HDC);
+#if (_WIN32_WINDOWS >= 0x0410 || _WIN32_WINNT >= 0x0500)
+WINGDIAPI BOOL WINAPI ColorCorrectPalette(HDC,HPALETTE,DWORD,DWORD);
+WINGDIAPI BOOL WINAPI ColorMatchToTarget(HDC,HDC,DWORD);
+#endif
+WINGDIAPI int WINAPI CombineRgn(HRGN,HRGN,HRGN,int);
+WINGDIAPI BOOL WINAPI CombineTransform(LPXFORM,const XFORM*,const XFORM*);
+WINGDIAPI HENHMETAFILE WINAPI CopyEnhMetaFileA(HENHMETAFILE,LPCSTR);
+WINGDIAPI HENHMETAFILE WINAPI CopyEnhMetaFileW(HENHMETAFILE,LPCWSTR);
+WINGDIAPI HMETAFILE WINAPI CopyMetaFileA(HMETAFILE,LPCSTR);
+WINGDIAPI HMETAFILE WINAPI CopyMetaFileW(HMETAFILE,LPCWSTR);
+WINGDIAPI HBITMAP WINAPI CreateBitmap(int,int,UINT,UINT,PCVOID);
+WINGDIAPI HBITMAP WINAPI CreateBitmapIndirect(const BITMAP*);
+WINGDIAPI HBRUSH WINAPI CreateBrushIndirect(const LOGBRUSH*);
+WINGDIAPI HCOLORSPACE WINAPI CreateColorSpaceA(LPLOGCOLORSPACEA);
+WINGDIAPI HCOLORSPACE WINAPI CreateColorSpaceW(LPLOGCOLORSPACEW);
+WINGDIAPI HBITMAP WINAPI CreateCompatibleBitmap(HDC,int,int);
+WINGDIAPI HDC WINAPI CreateCompatibleDC(HDC);
+WINGDIAPI HDC WINAPI CreateDCA(LPCSTR,LPCSTR,LPCSTR,const DEVMODEA*);
+WINGDIAPI HDC WINAPI CreateDCW(LPCWSTR,LPCWSTR,LPCWSTR,const DEVMODEW*);
+WINGDIAPI HBITMAP WINAPI CreateDIBitmap(HDC,const BITMAPINFOHEADER*,DWORD,PCVOID,const BITMAPINFO*,UINT);
+WINGDIAPI HBRUSH WINAPI CreateDIBPatternBrush(HGLOBAL,UINT);
+WINGDIAPI HBRUSH WINAPI CreateDIBPatternBrushPt(PCVOID,UINT);
+WINGDIAPI HBITMAP WINAPI CreateDIBSection(HDC,const BITMAPINFO*,UINT,void**,HANDLE,DWORD);
+WINGDIAPI HBITMAP WINAPI CreateDiscardableBitmap(HDC,int,int);
+WINGDIAPI HRGN WINAPI CreateEllipticRgn(int,int,int,int);
+WINGDIAPI HRGN WINAPI CreateEllipticRgnIndirect(LPCRECT);
+WINGDIAPI HDC WINAPI CreateEnhMetaFileA(HDC,LPCSTR,LPCRECT,LPCSTR);
+WINGDIAPI HDC WINAPI CreateEnhMetaFileW(HDC,LPCWSTR,LPCRECT,LPCWSTR);
+WINGDIAPI HFONT WINAPI CreateFontA(int,int,int,int,int,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,LPCSTR);
+WINGDIAPI HFONT WINAPI CreateFontW(int,int,int,int,int,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,LPCWSTR);
+WINGDIAPI HFONT WINAPI CreateFontIndirectA(const LOGFONTA*);
+WINGDIAPI HFONT WINAPI CreateFontIndirectW(const LOGFONTW*);
+WINGDIAPI HPALETTE WINAPI CreateHalftonePalette(HDC);
+WINGDIAPI HBRUSH WINAPI CreateHatchBrush(int,COLORREF);
+WINGDIAPI HDC WINAPI CreateICA(LPCSTR,LPCSTR,LPCSTR,const DEVMODEA*);
+WINGDIAPI HDC WINAPI CreateICW(LPCWSTR,LPCWSTR,LPCWSTR,const DEVMODEW*);
+WINGDIAPI HDC WINAPI CreateMetaFileA(LPCSTR);
+WINGDIAPI HDC WINAPI CreateMetaFileW(LPCWSTR);
+WINGDIAPI HPALETTE WINAPI CreatePalette(const LOGPALETTE*);
+WINGDIAPI HBRUSH WINAPI CreatePatternBrush(HBITMAP);
+WINGDIAPI HPEN WINAPI CreatePen(int,int,COLORREF);
+WINGDIAPI HPEN WINAPI CreatePenIndirect(const LOGPEN*);
+WINGDIAPI HRGN WINAPI CreatePolygonRgn(const POINT*,int,int);
+WINGDIAPI HRGN WINAPI CreatePolyPolygonRgn(const POINT*,const INT*,int,int);
+WINGDIAPI HRGN WINAPI CreateRectRgn(int,int,int,int);
+WINGDIAPI HRGN WINAPI CreateRectRgnIndirect(LPCRECT);
+WINGDIAPI HRGN WINAPI CreateRoundRectRgn(int,int,int,int,int,int);
+WINGDIAPI BOOL WINAPI CreateScalableFontResourceA(DWORD,LPCSTR,LPCSTR,LPCSTR);
+WINGDIAPI BOOL WINAPI CreateScalableFontResourceW(DWORD,LPCWSTR,LPCWSTR,LPCWSTR);
+WINGDIAPI HBRUSH WINAPI CreateSolidBrush(COLORREF);
+WINGDIAPI BOOL WINAPI DeleteColorSpace(HCOLORSPACE);
+WINGDIAPI BOOL WINAPI DeleteDC(HDC);
+WINGDIAPI BOOL WINAPI DeleteEnhMetaFile(HENHMETAFILE);
+WINGDIAPI BOOL WINAPI DeleteMetaFile(HMETAFILE);
+WINGDIAPI BOOL WINAPI DeleteObject(HGDIOBJ);
+WINGDIAPI int WINAPI DescribePixelFormat(HDC,int,UINT,LPPIXELFORMATDESCRIPTOR);
+WINGDIAPI DWORD WINAPI DeviceCapabilitiesA(LPCSTR,LPCSTR,WORD,LPSTR,const DEVMODEA*);
+WINGDIAPI DWORD WINAPI DeviceCapabilitiesW(LPCWSTR,LPCWSTR,WORD,LPWSTR,const DEVMODEW*);
+WINGDIAPI BOOL WINAPI DPtoLP(HDC,LPPOINT,int);
+WINGDIAPI int WINAPI DrawEscape(HDC,int,int,LPCSTR);
+WINGDIAPI BOOL WINAPI Ellipse(HDC,int,int,int,int);
+WINGDIAPI int WINAPI EndDoc(HDC);
+WINGDIAPI int WINAPI EndPage(HDC);
+WINGDIAPI BOOL WINAPI EndPath(HDC);
+WINGDIAPI BOOL WINAPI EnumEnhMetaFile(HDC,HENHMETAFILE,ENHMFENUMPROC,PVOID,LPCRECT);
+WINGDIAPI int WINAPI EnumFontFamiliesA(HDC,LPCSTR,FONTENUMPROCA,LPARAM);
+WINGDIAPI int WINAPI EnumFontFamiliesW(HDC,LPCWSTR,FONTENUMPROCW,LPARAM);
+WINGDIAPI int WINAPI EnumFontFamiliesExA(HDC,PLOGFONTA,FONTENUMPROCA,LPARAM,DWORD);
+WINGDIAPI int WINAPI EnumFontFamiliesExW(HDC,PLOGFONTW,FONTENUMPROCW,LPARAM,DWORD);
+WINGDIAPI int WINAPI EnumFontsA(HDC,LPCSTR,FONTENUMPROCA,LPARAM);
+WINGDIAPI int WINAPI EnumFontsW(HDC,LPCWSTR,FONTENUMPROCW,LPARAM);
+WINGDIAPI int WINAPI EnumICMProfilesA(HDC,ICMENUMPROCA,LPARAM);
+WINGDIAPI int WINAPI EnumICMProfilesW(HDC,ICMENUMPROCW,LPARAM);
+WINGDIAPI BOOL WINAPI EnumMetaFile(HDC,HMETAFILE,MFENUMPROC,LPARAM);
+WINGDIAPI int WINAPI EnumObjects(HDC,int,GOBJENUMPROC,LPARAM);
+WINGDIAPI BOOL WINAPI EqualRgn(HRGN,HRGN);
+WINGDIAPI int WINAPI Escape(HDC,int,int,LPCSTR,PVOID);
+WINGDIAPI int WINAPI ExcludeClipRect(HDC,int,int,int,int);
+WINGDIAPI int WINAPI ExcludeUpdateRgn(HDC,HWND);
+WINGDIAPI HPEN WINAPI ExtCreatePen(DWORD,DWORD,const LOGBRUSH*,DWORD,const DWORD*);
+WINGDIAPI HRGN WINAPI ExtCreateRegion(const XFORM*,DWORD,const RGNDATA*);
+WINGDIAPI int WINAPI ExtEscape(HDC,int,int,LPCSTR,int,LPSTR);
+WINGDIAPI BOOL WINAPI ExtFloodFill(HDC,int,int,COLORREF,UINT);
+WINGDIAPI int WINAPI ExtSelectClipRgn(HDC,HRGN,int);
+WINGDIAPI BOOL WINAPI ExtTextOutA(HDC,int,int,UINT,LPCRECT,LPCSTR,UINT,const INT*);
+WINGDIAPI BOOL WINAPI ExtTextOutW(HDC,int,int,UINT,LPCRECT,LPCWSTR,UINT,const INT*);
+WINGDIAPI BOOL WINAPI FillPath(HDC);
+WINGDIAPI int WINAPI FillRect(HDC,LPCRECT,HBRUSH);
+WINGDIAPI int WINAPI FillRgn(HDC,HRGN,HBRUSH);
+WINGDIAPI BOOL WINAPI FixBrushOrgEx(HDC,int,int,LPPOINT);
+WINGDIAPI BOOL WINAPI FlattenPath(HDC);
+WINGDIAPI BOOL WINAPI FloodFill(HDC,int,int,COLORREF);
+WINGDIAPI BOOL WINAPI GdiComment(HDC,UINT,const BYTE*);
+WINGDIAPI BOOL WINAPI GdiFlush(void);
+WINGDIAPI DWORD WINAPI GdiGetBatchLimit(void);
+WINGDIAPI DWORD WINAPI GdiSetBatchLimit(DWORD);
+WINGDIAPI int WINAPI GetArcDirection(HDC);
+WINGDIAPI BOOL WINAPI GetAspectRatioFilterEx(HDC,LPSIZE);
+WINGDIAPI LONG WINAPI GetBitmapBits(HBITMAP,LONG,PVOID);
+WINGDIAPI BOOL WINAPI GetBitmapDimensionEx(HBITMAP,LPSIZE);
+WINGDIAPI COLORREF WINAPI GetBkColor(HDC);
+WINGDIAPI int WINAPI GetBkMode(HDC);
+WINGDIAPI UINT WINAPI GetBoundsRect(HDC,LPRECT,UINT);
+WINGDIAPI BOOL WINAPI GetBrushOrgEx(HDC,LPPOINT);
+WINGDIAPI BOOL WINAPI GetCharABCWidthsA(HDC,UINT,UINT,LPABC);
+WINGDIAPI BOOL WINAPI GetCharABCWidthsW(HDC,UINT,UINT,LPABC);
+WINGDIAPI BOOL WINAPI GetCharABCWidthsFloatA(HDC,UINT,UINT,LPABCFLOAT);
+WINGDIAPI BOOL WINAPI GetCharABCWidthsFloatW(HDC,UINT,UINT,LPABCFLOAT);
+WINGDIAPI DWORD WINAPI GetCharacterPlacementA(HDC,LPCSTR,int,int,LPGCP_RESULTSA,DWORD);
+WINGDIAPI DWORD WINAPI GetCharacterPlacementW(HDC,LPCWSTR,int,int,LPGCP_RESULTSW,DWORD);
+WINGDIAPI BOOL WINAPI GetCharWidth32A(HDC,UINT,UINT,LPINT);
+WINGDIAPI BOOL WINAPI GetCharWidth32W(HDC,UINT,UINT,LPINT);
+WINGDIAPI BOOL WINAPI GetCharWidthA(HDC,UINT,UINT,LPINT);
+WINGDIAPI BOOL WINAPI GetCharWidthW(HDC,UINT,UINT,LPINT);
+WINGDIAPI BOOL WINAPI GetCharWidthFloatA(HDC,UINT,UINT,PFLOAT);
+WINGDIAPI BOOL WINAPI GetCharWidthFloatW(HDC,UINT,UINT,PFLOAT);
+WINGDIAPI int WINAPI GetClipBox(HDC,LPRECT);
+WINGDIAPI int WINAPI GetClipRgn(HDC,HRGN);
+WINGDIAPI BOOL WINAPI GetColorAdjustment(HDC,LPCOLORADJUSTMENT);
+WINGDIAPI HANDLE WINAPI GetColorSpace(HDC);
+WINGDIAPI HGDIOBJ WINAPI GetCurrentObject(HDC,UINT);
+WINGDIAPI BOOL WINAPI GetCurrentPositionEx(HDC,LPPOINT);
+WINGDIAPI HCURSOR WINAPI GetCursor(void);
+#if (WINVER >= 0x0500)
+WINGDIAPI COLORREF WINAPI GetDCBrushColor(HDC);
+WINGDIAPI COLORREF WINAPI GetDCPenColor(HDC);
+#endif
+WINGDIAPI BOOL WINAPI GetDCOrgEx(HDC,LPPOINT);
+WINGDIAPI int WINAPI GetDeviceCaps(HDC,int);
+WINGDIAPI BOOL WINAPI GetDeviceGammaRamp(HDC,PVOID);
+WINGDIAPI UINT WINAPI GetDIBColorTable(HDC,UINT,UINT,RGBQUAD*);
+WINGDIAPI int WINAPI GetDIBits(HDC,HBITMAP,UINT,UINT,PVOID,LPBITMAPINFO,UINT);
+WINGDIAPI HENHMETAFILE WINAPI GetEnhMetaFileA(LPCSTR);
+WINGDIAPI HENHMETAFILE WINAPI GetEnhMetaFileW(LPCWSTR);
+WINGDIAPI UINT WINAPI GetEnhMetaFileBits(HENHMETAFILE,UINT,LPBYTE);
+WINGDIAPI UINT WINAPI GetEnhMetaFileDescriptionA(HENHMETAFILE,UINT,LPSTR);
+WINGDIAPI UINT WINAPI GetEnhMetaFileDescriptionW(HENHMETAFILE,UINT,LPWSTR);
+WINGDIAPI UINT WINAPI GetEnhMetaFileHeader(HENHMETAFILE,UINT,LPENHMETAHEADER);
+WINGDIAPI UINT WINAPI GetEnhMetaFilePaletteEntries(HENHMETAFILE,UINT,LPPALETTEENTRY);
+WINGDIAPI UINT WINAPI GetEnhMetaFilePixelFormat(HENHMETAFILE,DWORD,CONST PIXELFORMATDESCRIPTOR*);
+WINGDIAPI DWORD WINAPI GetFontData(HDC,DWORD,DWORD,PVOID,DWORD);
+WINGDIAPI DWORD WINAPI GetFontLanguageInfo(HDC);
+WINGDIAPI DWORD WINAPI GetGlyphOutlineA(HDC,UINT,UINT,LPGLYPHMETRICS,DWORD,PVOID,const MAT2*);
+WINGDIAPI DWORD WINAPI GetGlyphOutlineW(HDC,UINT,UINT,LPGLYPHMETRICS,DWORD,PVOID,const MAT2*);
+WINGDIAPI int WINAPI GetGraphicsMode(HDC);
+WINGDIAPI BOOL WINAPI GetICMProfileA(HDC,LPDWORD,LPSTR);
+WINGDIAPI BOOL WINAPI GetICMProfileW(HDC,LPDWORD,LPWSTR);
+WINGDIAPI DWORD WINAPI GetKerningPairsA(HDC,DWORD,LPKERNINGPAIR);
+WINGDIAPI DWORD WINAPI GetKerningPairsW(HDC,DWORD,LPKERNINGPAIR);
+WINGDIAPI BOOL WINAPI GetLogColorSpaceA(HCOLORSPACE,LPLOGCOLORSPACEA,DWORD);
+WINGDIAPI BOOL WINAPI GetLogColorSpaceW(HCOLORSPACE,LPLOGCOLORSPACEW,DWORD);
+WINGDIAPI int WINAPI GetMapMode(HDC);
+WINGDIAPI HMETAFILE WINAPI GetMetaFileA(LPCSTR);
+WINGDIAPI HMETAFILE WINAPI GetMetaFileW(LPCWSTR);
+WINGDIAPI UINT WINAPI GetMetaFileBitsEx(HMETAFILE,UINT,PVOID);
+WINGDIAPI int WINAPI GetMetaRgn(HDC,HRGN);
+WINGDIAPI BOOL WINAPI GetMiterLimit(HDC,PFLOAT);
+WINGDIAPI COLORREF WINAPI GetNearestColor(HDC,COLORREF);
+WINGDIAPI UINT WINAPI GetNearestPaletteIndex(HPALETTE,COLORREF);
+WINGDIAPI int WINAPI GetObjectA(HGDIOBJ,int,PVOID);
+WINGDIAPI int WINAPI GetObjectW(HGDIOBJ,int,PVOID);
+WINGDIAPI DWORD WINAPI GetObjectType(HGDIOBJ);
+WINGDIAPI UINT WINAPI GetOutlineTextMetricsA(HDC,UINT,LPOUTLINETEXTMETRICA);
+WINGDIAPI UINT WINAPI GetOutlineTextMetricsW(HDC,UINT,LPOUTLINETEXTMETRICW);
+WINGDIAPI UINT WINAPI GetPaletteEntries(HPALETTE,UINT,UINT,LPPALETTEENTRY);
+WINGDIAPI int WINAPI GetPath(HDC,LPPOINT,PBYTE,int);
+WINGDIAPI COLORREF WINAPI GetPixel(HDC,int,int);
+WINGDIAPI int WINAPI GetPixelFormat(HDC);
+WINGDIAPI int WINAPI GetPolyFillMode(HDC);
+WINGDIAPI BOOL WINAPI GetRasterizerCaps(LPRASTERIZER_STATUS,UINT);
+WINGDIAPI int WINAPI GetRandomRgn (HDC,HRGN,INT);
+WINGDIAPI DWORD WINAPI GetRegionData(HRGN,DWORD,LPRGNDATA);
+WINGDIAPI int WINAPI GetRgnBox(HRGN,LPRECT);
+WINGDIAPI int WINAPI GetROP2(HDC);
+WINGDIAPI HGDIOBJ WINAPI GetStockObject(int);
+WINGDIAPI int WINAPI GetStretchBltMode(HDC);
+WINGDIAPI UINT WINAPI GetSystemPaletteEntries(HDC,UINT,UINT,LPPALETTEENTRY);
+WINGDIAPI UINT WINAPI GetSystemPaletteUse(HDC);
+WINGDIAPI UINT WINAPI GetTextAlign(HDC);
+WINGDIAPI int WINAPI GetTextCharacterExtra(HDC);
+WINGDIAPI int WINAPI GetTextCharset(HDC);
+WINGDIAPI int WINAPI GetTextCharsetInfo(HDC,LPFONTSIGNATURE,DWORD);
+WINGDIAPI COLORREF WINAPI GetTextColor(HDC);
+WINGDIAPI BOOL WINAPI GetTextExtentExPointA(HDC,LPCSTR,int,int,LPINT,LPINT,LPSIZE);
+WINGDIAPI BOOL WINAPI GetTextExtentExPointW( HDC,LPCWSTR,int,int,LPINT,LPINT,LPSIZE );
+WINGDIAPI BOOL WINAPI GetTextExtentPointA(HDC,LPCSTR,int,LPSIZE);
+WINGDIAPI BOOL WINAPI GetTextExtentPointW(HDC,LPCWSTR,int,LPSIZE);
+#if (_WIN32_WINNT >= 0x0500)
+WINGDIAPI BOOL WINAPI GetTextExtentExPointI(HDC, LPWORD, int, int, LPINT, LPINT, LPSIZE);
+#endif
+#ifdef _WIN32_WCE
+extern BOOL GetTextExtentPoint32A(HDC,LPCSTR,int,LPSIZE);
+extern BOOL GetTextExtentPoint32W( HDC,LPCWSTR,int,LPSIZE);
+#else
+WINGDIAPI BOOL WINAPI GetTextExtentPoint32A(HDC,LPCSTR,int,LPSIZE);
+WINGDIAPI BOOL WINAPI GetTextExtentPoint32W( HDC,LPCWSTR,int,LPSIZE);
+#endif
+WINGDIAPI int WINAPI GetTextFaceA(HDC,int,LPSTR);
+WINGDIAPI int WINAPI GetTextFaceW(HDC,int,LPWSTR);
+WINGDIAPI BOOL WINAPI GetTextMetricsA(HDC,LPTEXTMETRICA);
+WINGDIAPI BOOL WINAPI GetTextMetricsW(HDC,LPTEXTMETRICW);
+WINGDIAPI BOOL WINAPI GetViewportExtEx(HDC,LPSIZE);
+WINGDIAPI BOOL WINAPI GetViewportOrgEx(HDC,LPPOINT);
+WINGDIAPI BOOL WINAPI GetWindowExtEx(HDC,LPSIZE);
+WINGDIAPI BOOL WINAPI GetWindowOrgEx(HDC,LPPOINT);
+WINGDIAPI UINT WINAPI GetWinMetaFileBits(HENHMETAFILE,UINT,LPBYTE,INT,HDC);
+WINGDIAPI BOOL WINAPI GetWorldTransform(HDC,LPXFORM);
+WINGDIAPI int WINAPI IntersectClipRect(HDC,int,int,int,int);
+WINGDIAPI BOOL WINAPI InvertRgn(HDC,HRGN);
+WINGDIAPI BOOL WINAPI LineDDA(int,int,int,int,LINEDDAPROC,LPARAM);
+WINGDIAPI BOOL WINAPI LineTo(HDC,int,int);
+WINGDIAPI BOOL WINAPI LPtoDP(HDC,LPPOINT,int);
+WINGDIAPI BOOL WINAPI MaskBlt(HDC,int,int,int,int,HDC,int,int,HBITMAP,int,int,DWORD);
+WINGDIAPI BOOL WINAPI ModifyWorldTransform(HDC,const XFORM*,DWORD);
+WINGDIAPI BOOL WINAPI MoveToEx(HDC,int,int,LPPOINT);
+WINGDIAPI int WINAPI OffsetClipRgn(HDC,int,int);
+WINGDIAPI int WINAPI OffsetRgn(HRGN,int,int);
+WINGDIAPI BOOL WINAPI OffsetViewportOrgEx(HDC,int,int,LPPOINT);
+WINGDIAPI BOOL WINAPI OffsetWindowOrgEx(HDC,int,int,LPPOINT);
+WINGDIAPI BOOL WINAPI PaintRgn(HDC,HRGN);
+WINGDIAPI BOOL WINAPI PatBlt(HDC,int,int,int,int,DWORD);
+WINGDIAPI HRGN WINAPI PathToRegion(HDC);
+WINGDIAPI BOOL WINAPI Pie(HDC,int,int,int,int,int,int,int,int);
+WINGDIAPI BOOL WINAPI PlayEnhMetaFile(HDC,HENHMETAFILE,LPCRECT);
+WINGDIAPI BOOL WINAPI PlayEnhMetaFileRecord(HDC,LPHANDLETABLE,const ENHMETARECORD*,UINT);
+WINGDIAPI BOOL WINAPI PlayMetaFile(HDC,HMETAFILE);
+WINGDIAPI BOOL WINAPI PlayMetaFileRecord(HDC,LPHANDLETABLE,LPMETARECORD,UINT);
+WINGDIAPI BOOL WINAPI PlgBlt(HDC,const POINT*,HDC,int,int,int,int,HBITMAP,int,int);
+WINGDIAPI BOOL WINAPI PolyBezier(HDC,const POINT*,DWORD);
+WINGDIAPI BOOL WINAPI PolyBezierTo(HDC,const POINT*,DWORD);
+WINGDIAPI BOOL WINAPI PolyDraw(HDC,const POINT*,const BYTE*,int);
+WINGDIAPI BOOL WINAPI Polygon(HDC,const POINT*,int);
+WINGDIAPI BOOL WINAPI Polyline(HDC,const POINT*,int);
+WINGDIAPI BOOL WINAPI PolylineTo(HDC,const POINT*,DWORD);
+WINGDIAPI BOOL WINAPI PolyPolygon(HDC,const POINT*,const INT*,int);
+WINGDIAPI BOOL WINAPI PolyPolyline(HDC,const POINT*,const DWORD*,DWORD);
+WINGDIAPI BOOL WINAPI PolyTextOutA(HDC,const POLYTEXTA*,int);
+WINGDIAPI BOOL WINAPI PolyTextOutW(HDC,const POLYTEXTW*,int);
+WINGDIAPI BOOL WINAPI PtInRegion(HRGN,int,int);
+WINGDIAPI BOOL WINAPI PtVisible(HDC,int,int);
+WINGDIAPI UINT WINAPI RealizePalette(HDC);
+WINGDIAPI BOOL WINAPI Rectangle(HDC,int,int,int,int);
+WINGDIAPI BOOL WINAPI RectInRegion(HRGN,LPCRECT);
+WINGDIAPI BOOL WINAPI RectVisible(HDC,LPCRECT);
+WINGDIAPI BOOL WINAPI RemoveFontResourceA(LPCSTR);
+WINGDIAPI BOOL WINAPI RemoveFontResourceW(LPCWSTR);
+#if (_WIN32_WINNT >= 0x0500)
+WINGDIAPI BOOL WINAPI RemoveFontMemResourceEx(HANDLE);
+WINGDIAPI BOOL WINAPI RemoveFontResourceExA(LPCSTR,DWORD,PVOID);
+WINGDIAPI BOOL WINAPI RemoveFontResourceExW(LPCWSTR,DWORD,PVOID);
+#endif
+WINGDIAPI HDC WINAPI ResetDCA(HDC,const DEVMODEA*);
+WINGDIAPI HDC WINAPI ResetDCW(HDC,const DEVMODEW*);
+WINGDIAPI BOOL WINAPI ResizePalette(HPALETTE,UINT);
+WINGDIAPI BOOL WINAPI RestoreDC(HDC,int);
+WINGDIAPI BOOL WINAPI RoundRect(HDC,int,int,int,int,int,int);
+WINGDIAPI int WINAPI SaveDC(HDC);
+WINGDIAPI BOOL WINAPI ScaleViewportExtEx(HDC,int,int,int,int,LPSIZE);
+WINGDIAPI BOOL WINAPI ScaleWindowExtEx(HDC,int,int,int,int,LPSIZE);
+WINGDIAPI BOOL WINAPI SelectClipPath(HDC,int);
+WINGDIAPI int WINAPI SelectClipRgn(HDC,HRGN);
+WINGDIAPI HGDIOBJ WINAPI SelectObject(HDC,HGDIOBJ);
+WINGDIAPI HPALETTE WINAPI SelectPalette(HDC,HPALETTE,BOOL);
+WINGDIAPI int WINAPI SetAbortProc(HDC,ABORTPROC);
+WINGDIAPI int WINAPI SetArcDirection(HDC,int);
+WINGDIAPI LONG WINAPI SetBitmapBits(HBITMAP,DWORD,PCVOID);
+WINGDIAPI BOOL WINAPI SetBitmapDimensionEx(HBITMAP,int,int,LPSIZE);
+WINGDIAPI COLORREF WINAPI SetBkColor(HDC,COLORREF);
+WINGDIAPI int WINAPI SetBkMode(HDC,int);
+WINGDIAPI UINT WINAPI SetBoundsRect(HDC,LPCRECT,UINT);
+WINGDIAPI BOOL WINAPI SetBrushOrgEx(HDC,int,int,LPPOINT);
+WINGDIAPI BOOL WINAPI SetColorAdjustment(HDC,const COLORADJUSTMENT*);
+WINGDIAPI BOOL WINAPI SetColorSpace(HDC,HCOLORSPACE);
+#if (_WIN32_WINNT >= 0x0500)
+WINGDIAPI COLORREF WINAPI SetDCBrushColor(HDC,COLORREF);
+WINGDIAPI COLORREF WINAPI SetDCPenColor(HDC,COLORREF);
+#endif
+WINGDIAPI BOOL WINAPI SetDeviceGammaRamp(HDC,PVOID);
+WINGDIAPI UINT WINAPI SetDIBColorTable(HDC,UINT,UINT,const RGBQUAD*);
+WINGDIAPI int WINAPI SetDIBits(HDC,HBITMAP,UINT,UINT,PCVOID,const BITMAPINFO*,UINT);
+WINGDIAPI int WINAPI SetDIBitsToDevice(HDC,int,int,DWORD,DWORD,int,int,UINT,UINT,PCVOID,const BITMAPINFO*,UINT);
+WINGDIAPI HENHMETAFILE WINAPI SetEnhMetaFileBits(UINT,const BYTE*);
+WINGDIAPI int WINAPI SetGraphicsMode(HDC,int);
+WINGDIAPI int WINAPI SetICMMode(HDC,int);
+WINGDIAPI BOOL WINAPI SetICMProfileA(HDC,LPSTR);
+WINGDIAPI BOOL WINAPI SetICMProfileW(HDC,LPWSTR);
+WINGDIAPI int WINAPI SetMapMode(HDC,int);
+WINGDIAPI DWORD WINAPI SetMapperFlags(HDC,DWORD);
+WINGDIAPI HMETAFILE WINAPI SetMetaFileBitsEx(UINT,const BYTE *);
+WINGDIAPI int WINAPI SetMetaRgn(HDC);
+WINGDIAPI BOOL WINAPI SetMiterLimit(HDC,FLOAT,PFLOAT);
+WINGDIAPI UINT WINAPI SetPaletteEntries(HPALETTE,UINT,UINT,const PALETTEENTRY*);
+WINGDIAPI COLORREF WINAPI SetPixel(HDC,int,int,COLORREF);
+WINGDIAPI BOOL WINAPI SetPixelFormat(HDC,int,const PIXELFORMATDESCRIPTOR*);
+WINGDIAPI BOOL WINAPI SetPixelV(HDC,int,int,COLORREF);
+WINGDIAPI int WINAPI SetPolyFillMode(HDC,int);
+WINGDIAPI BOOL WINAPI SetRectRgn(HRGN,int,int,int,int);
+WINGDIAPI int WINAPI SetROP2(HDC,int);
+WINGDIAPI int WINAPI SetStretchBltMode(HDC,int);
+WINGDIAPI UINT WINAPI SetSystemPaletteUse(HDC,UINT);
+WINGDIAPI UINT WINAPI SetTextAlign(HDC,UINT);
+WINGDIAPI int WINAPI SetTextCharacterExtra(HDC,int);
+WINGDIAPI COLORREF WINAPI SetTextColor(HDC,COLORREF);
+WINGDIAPI BOOL WINAPI SetTextJustification(HDC,int,int);
+WINGDIAPI BOOL WINAPI SetViewportExtEx(HDC,int,int,LPSIZE);
+WINGDIAPI BOOL WINAPI SetViewportOrgEx(HDC,int,int,LPPOINT);
+WINGDIAPI BOOL WINAPI SetWindowExtEx(HDC,int,int,LPSIZE);
+WINGDIAPI BOOL WINAPI SetWindowOrgEx(HDC,int,int,LPPOINT);
+WINGDIAPI HENHMETAFILE WINAPI SetWinMetaFileBits(UINT,const BYTE*,HDC,const METAFILEPICT*);
+WINGDIAPI BOOL WINAPI SetWorldTransform(HDC,const XFORM *);
+WINGDIAPI int WINAPI StartDocA(HDC,const DOCINFOA*);
+WINGDIAPI int WINAPI StartDocW(HDC,const DOCINFOW*);
+WINGDIAPI int WINAPI StartPage(HDC);
+WINGDIAPI BOOL WINAPI StretchBlt(HDC,int,int,int,int,HDC,int,int,int,int,DWORD);
+WINGDIAPI int WINAPI StretchDIBits(HDC,int,int,int,int,int,int,int,int,const VOID *,const BITMAPINFO *,UINT,DWORD);
+WINGDIAPI BOOL WINAPI StrokeAndFillPath(HDC);
+WINGDIAPI BOOL WINAPI StrokePath(HDC);
+WINGDIAPI BOOL WINAPI SwapBuffers(HDC);
+WINGDIAPI BOOL WINAPI TextOutA(HDC,int,int,LPCSTR,int);
+WINGDIAPI BOOL WINAPI TextOutW(HDC,int,int,LPCWSTR,int);
+WINGDIAPI BOOL WINAPI TranslateCharsetInfo(PDWORD,LPCHARSETINFO,DWORD);
+WINGDIAPI BOOL WINAPI UnrealizeObject(HGDIOBJ);
+WINGDIAPI BOOL WINAPI UpdateColors(HDC);
+WINGDIAPI BOOL WINAPI UpdateICMRegKeyA(DWORD,DWORD,LPSTR,UINT);
+WINGDIAPI BOOL WINAPI UpdateICMRegKeyW(DWORD,DWORD,LPWSTR,UINT);
+WINGDIAPI BOOL WINAPI WidenPath(HDC);
+WINGDIAPI BOOL WINAPI wglCopyContext(HGLRC,HGLRC,UINT);
+WINGDIAPI HGLRC WINAPI wglCreateContext(HDC);
+WINGDIAPI HGLRC WINAPI wglCreateLayerContext(HDC,int);
+WINGDIAPI BOOL WINAPI wglDeleteContext(HGLRC);
+WINGDIAPI BOOL WINAPI wglDescribeLayerPlane(HDC,int,int,UINT,LPLAYERPLANEDESCRIPTOR);
+WINGDIAPI HGLRC WINAPI wglGetCurrentContext(void);
+WINGDIAPI HDC WINAPI wglGetCurrentDC(void);
+WINGDIAPI int WINAPI wglGetLayerPaletteEntries(HDC,int,int,int,COLORREF*);
+WINGDIAPI PROC WINAPI wglGetProcAddress(LPCSTR);
+WINGDIAPI BOOL WINAPI wglMakeCurrent(HDC,HGLRC);
+WINGDIAPI BOOL WINAPI wglRealizeLayerPalette(HDC,int,BOOL);
+WINGDIAPI int WINAPI wglSetLayerPaletteEntries(HDC,int,int,int,const COLORREF*);
+WINGDIAPI BOOL WINAPI wglShareLists(HGLRC,HGLRC);
+WINGDIAPI BOOL WINAPI wglSwapLayerBuffers(HDC,UINT);
+WINGDIAPI BOOL WINAPI wglUseFontBitmapsA(HDC,DWORD,DWORD,DWORD);
+WINGDIAPI BOOL WINAPI wglUseFontBitmapsW(HDC,DWORD,DWORD,DWORD);
+WINGDIAPI BOOL WINAPI wglUseFontOutlinesA(HDC,DWORD,DWORD,DWORD,FLOAT,FLOAT,int,LPGLYPHMETRICSFLOAT);
+WINGDIAPI BOOL WINAPI wglUseFontOutlinesW(HDC,DWORD,DWORD,DWORD,FLOAT,FLOAT,int,LPGLYPHMETRICSFLOAT);
+#if (WINVER >= 0x0410)
+WINGDIAPI BOOL WINAPI AlphaBlend(HDC,int,int,int,int,HDC,int,int,int,int,BLENDFUNCTION);
+WINGDIAPI BOOL WINAPI GradientFill(HDC,PTRIVERTEX,ULONG,PVOID,ULONG,ULONG);
+WINGDIAPI BOOL WINAPI TransparentBlt(HDC,int,int,int,int,HDC,int,int,int,int,UINT);
+#endif
+#if (_WIN32_WINNT >= 0x0500)
+WINGDIAPI DWORD WINAPI GetFontUnicodeRanges(HDC,LPGLYPHSET);
+WINGDIAPI DWORD WINAPI GetGlyphIndicesA(HDC,LPCSTR,int,LPWORD,DWORD);
+WINGDIAPI DWORD WINAPI GetGlyphIndicesW(HDC,LPCWSTR,int,LPWORD,DWORD);
+#endif
+#if (WINVER >= 0x0500)
+WINGDIAPI DWORD WINAPI GetLayout(HDC);
+WINGDIAPI DWORD WINAPI SetLayout(HDC, DWORD);
+#endif
+
+#ifdef UNICODE
+typedef WCHAR BCHAR;
+typedef DOCINFOW DOCINFO, *LPDOCINFO;
+typedef LOGFONTW LOGFONT,*PLOGFONT,*LPLOGFONT;
+typedef TEXTMETRICW TEXTMETRIC,*PTEXTMETRIC,*LPTEXTMETRIC;
+#define ICMENUMPROC ICMENUMPROCW
+#define FONTENUMPROC FONTENUMPROCW
+typedef DEVMODEW DEVMODE,*PDEVMODE,*LPDEVMODE;
+#if _WIN32_WINNT >= 0x0500
+typedef ENUMLOGFONTEXDVW ENUMLOGFONTEXDV;
+typedef PENUMLOGFONTEXDVW PENUMLOGFONTEXDV;
+typedef LPENUMLOGFONTEXDVW LPENUMLOGFONTEXDV;
+#endif
+typedef EXTLOGFONTW EXTLOGFONT,*PEXTLOGFONT,*LPEXTLOGFONT;
+typedef GCP_RESULTSW GCP_RESULTS,*LPGCP_RESULTS;
+typedef OUTLINETEXTMETRICW OUTLINETEXTMETRIC,*POUTLINETEXTMETRIC,*LPOUTLINETEXTMETRIC;
+typedef POLYTEXTW POLYTEXT,*PPOLYTEXT,*LPPOLYTEXT;
+typedef LOGCOLORSPACEW LOGCOLORSPACE,*LPLOGCOLORSPACE;
+typedef NEWTEXTMETRICW NEWTEXTMETRIC,*PNEWTEXTMETRIC,*LPNEWTEXTMETRIC;
+typedef NEWTEXTMETRICEXW NEWTEXTMETRICEX;
+typedef ENUMLOGFONTW ENUMLOGFONT,*LPENUMLOGFONT;
+typedef ENUMLOGFONTEXW ENUMLOGFONTEX,*LPENUMLOGFONTEX;
+typedef DISPLAY_DEVICEW DISPLAY_DEVICE, *PDISPLAY_DEVICE, *LPDISPLAY_DEVICE;
+#define AddFontResource AddFontResourceW
+#if (_WIN32_WINNT >= 0x0500)
+#define AddFontResourceEx AddFontResourceExW
+#endif
+#define CopyEnhMetaFile CopyEnhMetaFileW
+#define CopyMetaFile CopyMetaFileW
+#define CreateColorSpace CreateColorSpaceW
+#define CreateDC CreateDCW
+#define CreateEnhMetaFile CreateEnhMetaFileW
+#define CreateFont CreateFontW
+#define CreateFontIndirect CreateFontIndirectW
+#define CreateIC CreateICW
+#define CreateMetaFile CreateMetaFileW
+#define CreateScalableFontResource CreateScalableFontResourceW
+#define DeviceCapabilities DeviceCapabilitiesW
+#define EnumFontFamilies EnumFontFamiliesW
+#define EnumFontFamiliesEx EnumFontFamiliesExW
+#define EnumFonts EnumFontsW
+#define EnumICMProfiles EnumICMProfilesW
+#define ExtTextOut ExtTextOutW
+#define GetCharABCWidthsFloat GetCharABCWidthsFloatW
+#define GetCharABCWidths GetCharABCWidthsW
+#define GetCharacterPlacement GetCharacterPlacementW
+#define GetCharWidth32 GetCharWidth32W
+#define GetCharWidthFloat GetCharWidthFloatW
+#define GetCharWidth GetCharWidthW
+#define GetEnhMetaFile GetEnhMetaFileW
+#define GetEnhMetaFileDescription GetEnhMetaFileDescriptionW
+#define GetGlyphOutline GetGlyphOutlineW
+#define GetICMProfile GetICMProfileW
+#define GetKerningPairs GetKerningPairsW
+#define GetLogColorSpace GetLogColorSpaceW
+#define GetMetaFile GetMetaFileW
+#define GetObject GetObjectW
+#define GetOutlineTextMetrics GetOutlineTextMetricsW
+#define GetTextExtentPoint GetTextExtentPointW
+#define GetTextExtentExPoint GetTextExtentExPointW
+#define GetTextExtentPoint32 GetTextExtentPoint32W
+#define GetTextFace GetTextFaceW
+#define GetTextMetrics GetTextMetricsW
+#define PolyTextOut PolyTextOutW
+#define RemoveFontResource RemoveFontResourceW
+#if (_WIN32_WINNT >= 0x0500)
+#define RemoveFontResourceEx RemoveFontResourceExW
+#endif
+#define ResetDC ResetDCW
+#define SetICMProfile SetICMProfileW
+#define StartDoc StartDocW
+#define TextOut TextOutW
+#define UpdateICMRegKey UpdateICMRegKeyW
+#define wglUseFontBitmaps wglUseFontBitmapsW
+#define wglUseFontOutlines wglUseFontOutlinesW
+#if (_WIN32_WINNT >= 0x0500)
+#define GetGlyphIndices  GetGlyphIndicesW
+#endif
+#else  /* UNICODE */
+typedef BYTE BCHAR;
+typedef DOCINFOA DOCINFO, *LPDOCINFO;
+typedef LOGFONTA LOGFONT,*PLOGFONT,*LPLOGFONT;
+typedef TEXTMETRICA TEXTMETRIC,*PTEXTMETRIC,*LPTEXTMETRIC;
+#define ICMENUMPROC ICMENUMPROCA
+#define FONTENUMPROC FONTENUMPROCA
+typedef DEVMODEA DEVMODE,*PDEVMODE,*LPDEVMODE;
+#if _WIN32_WINNT >= 0x0500
+typedef ENUMLOGFONTEXDVA ENUMLOGFONTEXDV;
+typedef PENUMLOGFONTEXDVA PENUMLOGFONTEXDV;
+typedef LPENUMLOGFONTEXDVA LPENUMLOGFONTEXDV;
+#endif
+typedef EXTLOGFONTA EXTLOGFONT,*PEXTLOGFONT,*LPEXTLOGFONT;
+typedef GCP_RESULTSA GCP_RESULTS,*LPGCP_RESULTS;
+typedef OUTLINETEXTMETRICA OUTLINETEXTMETRIC,*POUTLINETEXTMETRIC,*LPOUTLINETEXTMETRIC;
+typedef POLYTEXTA POLYTEXT,*PPOLYTEXT,*LPPOLYTEXT;
+typedef LOGCOLORSPACEA LOGCOLORSPACE,*LPLOGCOLORSPACE;
+typedef NEWTEXTMETRICA NEWTEXTMETRIC,*PNEWTEXTMETRIC,*LPNEWTEXTMETRIC;
+typedef NEWTEXTMETRICEXA NEWTEXTMETRICEX;
+typedef ENUMLOGFONTA ENUMLOGFONT,*LPENUMLOGFONT;
+typedef ENUMLOGFONTEXA ENUMLOGFONTEX,*LPENUMLOGFONTEX;
+typedef DISPLAY_DEVICEA DISPLAY_DEVICE, *PDISPLAY_DEVICE, *LPDISPLAY_DEVICE;
+#define AddFontResource AddFontResourceA
+#if (_WIN32_WINNT >= 0x0500)
+#define AddFontResourceEx AddFontResourceExA
+#endif
+#define CopyEnhMetaFile CopyEnhMetaFileA
+#define CopyMetaFile CopyMetaFileA
+#define CreateColorSpace CreateColorSpaceA
+#define CreateDC CreateDCA
+#define CreateEnhMetaFile CreateEnhMetaFileA
+#define CreateFont CreateFontA
+#define CreateFontIndirect CreateFontIndirectA
+#define CreateIC CreateICA
+#define CreateMetaFile CreateMetaFileA
+#define CreateScalableFontResource CreateScalableFontResourceA
+#define DeviceCapabilities DeviceCapabilitiesA
+#define EnumFontFamilies EnumFontFamiliesA
+#define EnumFontFamiliesEx EnumFontFamiliesExA
+#define EnumFonts EnumFontsA
+#define EnumICMProfiles EnumICMProfilesA
+#define ExtTextOut ExtTextOutA
+#define GetCharWidthFloat GetCharWidthFloatA
+#define GetCharWidth GetCharWidthA
+#define GetCharacterPlacement GetCharacterPlacementA
+#define GetCharABCWidths GetCharABCWidthsA
+#define GetCharABCWidthsFloat GetCharABCWidthsFloatA
+#define GetCharWidth32 GetCharWidth32A
+#define GetEnhMetaFile GetEnhMetaFileA
+#define GetEnhMetaFileDescription GetEnhMetaFileDescriptionA
+#define GetGlyphOutline GetGlyphOutlineA
+#define GetICMProfile GetICMProfileA
+#define GetKerningPairs GetKerningPairsA
+#define GetLogColorSpace GetLogColorSpaceA
+#define GetMetaFile GetMetaFileA
+#define GetObject GetObjectA
+#define GetOutlineTextMetrics GetOutlineTextMetricsA
+#define GetTextExtentPoint GetTextExtentPointA
+#define GetTextExtentExPoint GetTextExtentExPointA
+#define GetTextExtentPoint32 GetTextExtentPoint32A
+#define GetTextFace GetTextFaceA
+#define GetTextMetrics GetTextMetricsA
+#define PolyTextOut PolyTextOutA
+#define RemoveFontResource RemoveFontResourceA
+#if (_WIN32_WINNT >= 0x0500)
+#define RemoveFontResourceEx RemoveFontResourceExA
+#endif
+#define ResetDC ResetDCA
+#define SetICMProfile SetICMProfileA
+#define StartDoc StartDocA
+#define TextOut TextOutA
+#define UpdateICMRegKey UpdateICMRegKeyA
+#define wglUseFontBitmaps wglUseFontBitmapsA
+#define wglUseFontOutlines wglUseFontOutlinesA
+#if (_WIN32_WINNT >= 0x0500)
+#define GetGlyphIndices  GetGlyphIndicesA
+#endif
+#endif /* UNICODE */
+#endif /* RC_INVOKED */
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/wininet.h
===================================================================
--- Daodan/MinGW/include/wininet.h	(revision 1046)
+++ Daodan/MinGW/include/wininet.h	(revision 1046)
@@ -0,0 +1,992 @@
+#ifndef _WININET_H
+#define _WININET_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#include <windows.h>
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define INTERNET_INVALID_PORT_NUMBER 0
+#define INTERNET_DEFAULT_FTP_PORT 21
+#define INTERNET_DEFAULT_GOPHER_PORT 70
+#define INTERNET_DEFAULT_HTTP_PORT 80
+#define INTERNET_DEFAULT_HTTPS_PORT 443
+#define INTERNET_DEFAULT_SOCKS_PORT 1080
+#define MAX_CACHE_ENTRY_INFO_SIZE 4096
+#define INTERNET_MAX_HOST_NAME_LENGTH 256
+#define INTERNET_MAX_USER_NAME_LENGTH 128
+#define INTERNET_MAX_PASSWORD_LENGTH 128
+#define INTERNET_MAX_PORT_NUMBER_LENGTH 5
+#define INTERNET_MAX_PORT_NUMBER_VALUE 65535
+#define INTERNET_MAX_PATH_LENGTH 2048
+#define INTERNET_MAX_SCHEME_LENGTH 32
+#define INTERNET_MAX_URL_LENGTH (INTERNET_MAX_SCHEME_LENGTH+sizeof("://")+INTERNET_MAX_PATH_LENGTH)
+#define INTERNET_KEEP_ALIVE_UNKNOWN ((DWORD)-1)
+#define INTERNET_KEEP_ALIVE_ENABLED 1
+#define INTERNET_KEEP_ALIVE_DISABLED 0
+#define INTERNET_REQFLAG_FROM_CACHE 1
+#define INTERNET_REQFLAG_ASYNC 2
+#define INTERNET_FLAG_RELOAD 0x80000000
+#define INTERNET_FLAG_RAW_DATA 0x40000000
+#define INTERNET_FLAG_EXISTING_CONNECT 0x20000000
+#define INTERNET_FLAG_ASYNC 0x10000000
+#define INTERNET_FLAG_PASSIVE 0x08000000
+#define INTERNET_FLAG_NO_CACHE_WRITE 0x04000000
+#define INTERNET_FLAG_DONT_CACHE INTERNET_FLAG_NO_CACHE_WRITE
+#define INTERNET_FLAG_MAKE_PERSISTENT 0x02000000
+#define INTERNET_FLAG_OFFLINE 0x1000000
+#define INTERNET_FLAG_SECURE 0x800000
+#define INTERNET_FLAG_KEEP_CONNECTION 0x400000
+#define INTERNET_FLAG_NO_AUTO_REDIRECT 0x200000
+#define INTERNET_FLAG_READ_PREFETCH 0x100000
+#define INTERNET_FLAG_NO_COOKIES 0x80000
+#define INTERNET_FLAG_NO_AUTH 0x40000
+#define INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTP 0x8000
+#define INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTPS 0x4000
+#define INTERNET_FLAG_IGNORE_CERT_DATE_INVALID 0x2000
+#define INTERNET_FLAG_IGNORE_CERT_CN_INVALID 0x1000
+#define INTERNET_FLAG_MUST_CACHE_REQUEST 16
+#define INTERNET_FLAG_RESYNCHRONIZE 0x800
+#define INTERNET_FLAG_HYPERLINK 0x400
+#define INTERNET_FLAG_NO_UI 0x200
+#define INTERNET_FLAG_PRAGMA_NOCACHE 0x100
+#define INTERNET_FLAG_TRANSFER_ASCII FTP_TRANSFER_TYPE_ASCII
+#define INTERNET_FLAG_TRANSFER_BINARY FTP_TRANSFER_TYPE_BINARY
+#define SECURITY_INTERNET_MASK (INTERNET_FLAG_IGNORE_CERT_CN_INVALID|INTERNET_FLAG_IGNORE_CERT_DATE_INVALID|INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTPS|INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTP)
+#define SECURITY_SET_MASK SECURITY_INTERNET_MASK
+#define INTERNET_FLAGS_MASK (INTERNET_FLAG_RELOAD|INTERNET_FLAG_RAW_DATA|INTERNET_FLAG_EXISTING_CONNECT|\
+INTERNET_FLAG_ASYNC|INTERNET_FLAG_PASSIVE|INTERNET_FLAG_NO_CACHE_WRITE|INTERNET_FLAG_MAKE_PERSISTENT|INTERNET_FLAG_OFFLINE|\
+INTERNET_FLAG_SECURE|INTERNET_FLAG_KEEP_CONNECTION|INTERNET_FLAG_NO_AUTO_REDIRECT|INTERNET_FLAG_READ_PREFETCH |\
+INTERNET_FLAG_NO_COOKIES|INTERNET_FLAG_NO_AUTH|SECURITY_INTERNET_MASK|INTERNET_FLAG_TRANSFER_ASCII|INTERNET_FLAG_TRANSFER_BINARY\
+|INTERNET_FLAG_RESYNCHRONIZE|INTERNET_FLAG_MUST_CACHE_REQUEST|INTERNET_FLAG_HYPERLINK|INTERNET_FLAG_NO_UI)
+#define INTERNET_OPTIONS_MASK (~INTERNET_FLAGS_MASK)
+#define INTERNET_NO_CALLBACK 0
+#define INTERNET_RFC1123_FORMAT 0
+#define INTERNET_RFC1123_BUFSIZE 30
+#define ICU_ESCAPE 0x80000000
+#define ICU_USERNAME 0x40000000
+#define ICU_NO_ENCODE 0x20000000
+#define ICU_DECODE 0x10000000
+#define ICU_NO_META 0x08000000
+#define ICU_ENCODE_SPACES_ONLY 0x04000000
+#define ICU_BROWSER_MODE 0x02000000
+#define INTERNET_OPEN_TYPE_PRECONFIG 0
+#define INTERNET_OPEN_TYPE_DIRECT 1
+#define INTERNET_OPEN_TYPE_PROXY 3
+#define PRE_CONFIG_INTERNET_ACCESS INTERNET_OPEN_TYPE_PRECONFIG
+#define LOCAL_INTERNET_ACCESS INTERNET_OPEN_TYPE_DIRECT
+#define GATEWAY_INTERNET_ACCESS 2
+#define CERN_PROXY_INTERNET_ACCESS INTERNET_OPEN_TYPE_PROXY
+#define ISO_GLOBAL 1
+#define ISO_REGISTRY 2
+#define ISO_VALID_FLAGS (ISO_GLOBAL | ISO_REGISTRY)
+#define INTERNET_OPTION_CALLBACK 1
+#define INTERNET_OPTION_CONNECT_TIMEOUT 2
+#define INTERNET_OPTION_CONNECT_RETRIES 3
+#define INTERNET_OPTION_CONNECT_BACKOFF 4
+#define INTERNET_OPTION_SEND_TIMEOUT 5
+#define INTERNET_OPTION_CONTROL_SEND_TIMEOUT INTERNET_OPTION_SEND_TIMEOUT
+#define INTERNET_OPTION_RECEIVE_TIMEOUT 6
+#define INTERNET_OPTION_CONTROL_RECEIVE_TIMEOUT INTERNET_OPTION_RECEIVE_TIMEOUT
+#define INTERNET_OPTION_DATA_SEND_TIMEOUT 7
+#define INTERNET_OPTION_DATA_RECEIVE_TIMEOUT 8
+#define INTERNET_OPTION_HANDLE_TYPE 9
+#define INTERNET_OPTION_CONTEXT_VALUE 10
+#define INTERNET_OPTION_LISTEN_TIMEOUT 11
+#define INTERNET_OPTION_READ_BUFFER_SIZE 12
+#define INTERNET_OPTION_WRITE_BUFFER_SIZE 13
+#define INTERNET_OPTION_ASYNC_ID 15
+#define INTERNET_OPTION_ASYNC_PRIORITY 16
+#define INTERNET_OPTION_PARENT_HANDLE 21
+#define INTERNET_OPTION_KEEP_CONNECTION 22
+#define INTERNET_OPTION_REQUEST_FLAGS 23
+#define INTERNET_OPTION_EXTENDED_ERROR 24
+#define INTERNET_OPTION_OFFLINE_MODE 26
+#define INTERNET_OPTION_CACHE_STREAM_HANDLE 27
+#define INTERNET_OPTION_USERNAME 28
+#define INTERNET_OPTION_PASSWORD 29
+#define INTERNET_OPTION_ASYNC 30
+#define INTERNET_OPTION_SECURITY_FLAGS 31
+#define INTERNET_OPTION_SECURITY_CERTIFICATE_STRUCT 32
+#define INTERNET_OPTION_DATAFILE_NAME 33
+#define INTERNET_OPTION_URL 34
+#define INTERNET_OPTION_SECURITY_CERTIFICATE 35
+#define INTERNET_OPTION_SECURITY_KEY_BITNESS 36
+#define INTERNET_OPTION_REFRESH 37
+#define INTERNET_OPTION_PROXY 38
+#define INTERNET_OPTION_SETTINGS_CHANGED 39
+#define INTERNET_OPTION_VERSION 40
+#define INTERNET_OPTION_USER_AGENT 41
+#define INTERNET_OPTION_END_BROWSER_SESSION 42
+#define INTERNET_OPTION_PROXY_USERNAME 43
+#define INTERNET_OPTION_PROXY_PASSWORD 44
+#define INTERNET_OPTION_CONNECTED_STATE 50
+#define INTERNET_FIRST_OPTION INTERNET_OPTION_CALLBACK
+/* FIXME: missing INTERNET_OPTION_*?   */
+#define INTERNET_LAST_OPTION INTERNET_OPTION_CONNECTED_STATE
+#define INTERNET_PRIORITY_FOREGROUND 1000
+#define INTERNET_HANDLE_TYPE_INTERNET 1
+#define INTERNET_HANDLE_TYPE_CONNECT_FTP 2
+#define INTERNET_HANDLE_TYPE_CONNECT_GOPHER 3
+#define INTERNET_HANDLE_TYPE_CONNECT_HTTP 4
+#define INTERNET_HANDLE_TYPE_FTP_FIND 5
+#define INTERNET_HANDLE_TYPE_FTP_FIND_HTML 6
+#define INTERNET_HANDLE_TYPE_FTP_FILE 7
+#define INTERNET_HANDLE_TYPE_FTP_FILE_HTML 8
+#define INTERNET_HANDLE_TYPE_GOPHER_FIND 9
+#define INTERNET_HANDLE_TYPE_GOPHER_FIND_HTML 10
+#define INTERNET_HANDLE_TYPE_GOPHER_FILE 11
+#define INTERNET_HANDLE_TYPE_GOPHER_FILE_HTML 12
+#define INTERNET_HANDLE_TYPE_HTTP_REQUEST 13
+#define SECURITY_FLAG_SECURE 1
+#define SECURITY_FLAG_SSL 2
+#define SECURITY_FLAG_SSL3 4
+#define SECURITY_FLAG_PCT 8
+#define SECURITY_FLAG_PCT4 16
+#define SECURITY_FLAG_IETFSSL4 0x20
+#define SECURITY_FLAG_IGNORE_REVOCATION 0x00000080
+#define SECURITY_FLAG_IGNORE_UNKNOWN_CA 0x00000100
+#define SECURITY_FLAG_IGNORE_WRONG_USAGE 0x00000200
+#define SECURITY_FLAG_40BIT 0x10000000
+#define SECURITY_FLAG_128BIT 0x20000000
+#define SECURITY_FLAG_56BIT 0x40000000
+#define SECURITY_FLAG_UNKNOWNBIT 0x80000000
+#define SECURITY_FLAG_NORMALBITNESS SECURITY_FLAG_40BIT
+#define SECURITY_FLAG_IGNORE_CERT_CN_INVALID INTERNET_FLAG_IGNORE_CERT_CN_INVALID
+#define SECURITY_FLAG_IGNORE_CERT_DATE_INVALID INTERNET_FLAG_IGNORE_CERT_DATE_INVALID
+#define SECURITY_FLAG_IGNORE_REDIRECT_TO_HTTPS INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTPS
+#define SECURITY_FLAG_IGNORE_REDIRECT_TO_HTTP INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTP
+#define INTERNET_SERVICE_FTP 1
+#define INTERNET_SERVICE_GOPHER 2
+#define INTERNET_SERVICE_HTTP 3
+#define INTERNET_STATUS_RESOLVING_NAME 10
+#define INTERNET_STATUS_NAME_RESOLVED 11
+#define INTERNET_STATUS_CONNECTING_TO_SERVER 20
+#define INTERNET_STATUS_CONNECTED_TO_SERVER 21
+#define INTERNET_STATUS_SENDING_REQUEST 30
+#define INTERNET_STATUS_REQUEST_SENT 31
+#define INTERNET_STATUS_RECEIVING_RESPONSE 40
+#define INTERNET_STATUS_RESPONSE_RECEIVED 41
+#define INTERNET_STATUS_CTL_RESPONSE_RECEIVED 42
+#define INTERNET_STATUS_PREFETCH 43
+#define INTERNET_STATUS_CLOSING_CONNECTION 50
+#define INTERNET_STATUS_CONNECTION_CLOSED 51
+#define INTERNET_STATUS_HANDLE_CREATED 60
+#define INTERNET_STATUS_HANDLE_CLOSING 70
+#define INTERNET_STATUS_REQUEST_COMPLETE 100
+#define INTERNET_STATUS_REDIRECT 110
+#define INTERNET_INVALID_STATUS_CALLBACK ((INTERNET_STATUS_CALLBACK)(-1L))
+#define FTP_TRANSFER_TYPE_UNKNOWN 0
+#define FTP_TRANSFER_TYPE_ASCII 1
+#define FTP_TRANSFER_TYPE_BINARY 2
+#define FTP_TRANSFER_TYPE_MASK (FTP_TRANSFER_TYPE_ASCII | FTP_TRANSFER_TYPE_BINARY)
+#define MAX_GOPHER_DISPLAY_TEXT 128
+#define MAX_GOPHER_SELECTOR_TEXT 256
+#define MAX_GOPHER_HOST_NAME INTERNET_MAX_HOST_NAME_LENGTH
+#define MAX_GOPHER_LOCATOR_LENGTH (1+MAX_GOPHER_DISPLAY_TEXT+1+MAX_GOPHER_SELECTOR_TEXT+1+MAX_GOPHER_HOST_NAME+1+INTERNET_MAX_PORT_NUMBER_LENGTH+1+1+2)
+#define GOPHER_TYPE_TEXT_FILE 1
+#define GOPHER_TYPE_DIRECTORY 2
+#define GOPHER_TYPE_CSO 4
+#define GOPHER_TYPE_ERROR 8
+#define GOPHER_TYPE_MAC_BINHEX 16
+#define GOPHER_TYPE_DOS_ARCHIVE 32
+#define GOPHER_TYPE_UNIX_UUENCODED 64
+#define GOPHER_TYPE_INDEX_SERVER 128
+#define GOPHER_TYPE_TELNET 256
+#define GOPHER_TYPE_BINARY 512
+#define GOPHER_TYPE_REDUNDANT 1024
+#define GOPHER_TYPE_TN3270 0x800
+#define GOPHER_TYPE_GIF 0x1000
+#define GOPHER_TYPE_IMAGE 0x2000
+#define GOPHER_TYPE_BITMAP 0x4000
+#define GOPHER_TYPE_MOVIE 0x8000
+#define GOPHER_TYPE_SOUND 0x10000
+#define GOPHER_TYPE_HTML 0x20000
+#define GOPHER_TYPE_PDF 0x40000
+#define GOPHER_TYPE_CALENDAR 0x80000
+#define GOPHER_TYPE_INLINE 0x100000
+#define GOPHER_TYPE_UNKNOWN 0x20000000
+#define GOPHER_TYPE_ASK 0x40000000
+#define GOPHER_TYPE_GOPHER_PLUS 0x80000000
+#define IS_GOPHER_FILE(t) (BOOL)(((t)&GOPHER_TYPE_FILE_MASK)?TRUE:FALSE)
+#define IS_GOPHER_DIRECTORY(t) (BOOL)(((t)&GOPHER_TYPE_DIRECTORY)?TRUE:FALSE)
+#define IS_GOPHER_PHONE_SERVER(t) (BOOL)(((t)&GOPHER_TYPE_CSO)?TRUE:FALSE)
+#define IS_GOPHER_ERROR(t) (BOOL)(((t)&GOPHER_TYPE_ERROR)?TRUE:FALSE)
+#define IS_GOPHER_INDEX_SERVER(t) (BOOL)(((t)&GOPHER_TYPE_INDEX_SERVER)?TRUE:FALSE)
+#define IS_GOPHER_TELNET_SESSION(t) (BOOL)(((t)&GOPHER_TYPE_TELNET)?TRUE:FALSE)
+#define IS_GOPHER_BACKUP_SERVER(t) (BOOL)(((t)&GOPHER_TYPE_REDUNDANT)?TRUE:FALSE)
+#define IS_GOPHER_TN3270_SESSION(t) (BOOL)(((t)&GOPHER_TYPE_TN3270)?TRUE:FALSE)
+#define IS_GOPHER_ASK(t) (BOOL)(((t)&GOPHER_TYPE_ASK)?TRUE:FALSE)
+#define IS_GOPHER_PLUS(t) (BOOL)(((t)&GOPHER_TYPE_GOPHER_PLUS)?TRUE:FALSE)
+#define IS_GOPHER_TYPE_KNOWN(t) (BOOL)(((t)&GOPHER_TYPE_UNKNOWN)?FALSE:TRUE)
+#define GOPHER_TYPE_FILE_MASK (GOPHER_TYPE_TEXT_FILE|GOPHER_TYPE_MAC_BINHEX|GOPHER_TYPE_DOS_ARCHIVE|\
+GOPHER_TYPE_UNIX_UUENCODED|GOPHER_TYPE_BINARY|GOPHER_TYPE_GIF|GOPHER_TYPE_IMAGE|GOPHER_TYPE_BITMAP\
+|GOPHER_TYPE_MOVIE|GOPHER_TYPE_SOUND|GOPHER_TYPE_HTML|GOPHER_TYPE_PDF|GOPHER_TYPE_CALENDAR|GOPHER_TYPE_INLINE)
+#define MAX_GOPHER_CATEGORY_NAME 128
+#define MAX_GOPHER_ATTRIBUTE_NAME 128
+#define MIN_GOPHER_ATTRIBUTE_LENGTH 256
+#define GOPHER_INFO_CATEGORY TEXT("+INFO")
+#define GOPHER_ADMIN_CATEGORY TEXT("+ADMIN")
+#define GOPHER_VIEWS_CATEGORY TEXT("+VIEWS")
+#define GOPHER_ABSTRACT_CATEGORY TEXT("+ABSTRACT")
+#define GOPHER_VERONICA_CATEGORY TEXT("+VERONICA")
+#define GOPHER_ADMIN_ATTRIBUTE TEXT("Admin")
+#define GOPHER_MOD_DATE_ATTRIBUTE TEXT("Mod-Date")
+#define GOPHER_TTL_ATTRIBUTE TEXT("TTL")
+#define GOPHER_SCORE_ATTRIBUTE TEXT("Score")
+#define GOPHER_RANGE_ATTRIBUTE TEXT("Score-range")
+#define GOPHER_SITE_ATTRIBUTE TEXT("Site")
+#define GOPHER_ORG_ATTRIBUTE TEXT("Org")
+#define GOPHER_LOCATION_ATTRIBUTE TEXT("Loc")
+#define GOPHER_GEOG_ATTRIBUTE TEXT("Geog")
+#define GOPHER_TIMEZONE_ATTRIBUTE TEXT("TZ")
+#define GOPHER_PROVIDER_ATTRIBUTE TEXT("Provider")
+#define GOPHER_VERSION_ATTRIBUTE TEXT("Version")
+#define GOPHER_ABSTRACT_ATTRIBUTE TEXT("Abstract")
+#define GOPHER_VIEW_ATTRIBUTE TEXT("View")
+#define GOPHER_TREEWALK_ATTRIBUTE TEXT("treewalk")
+#define GOPHER_ATTRIBUTE_ID_BASE 0xabcccc00
+#define GOPHER_CATEGORY_ID_ALL (GOPHER_ATTRIBUTE_ID_BASE+1)
+#define GOPHER_CATEGORY_ID_INFO (GOPHER_ATTRIBUTE_ID_BASE+2)
+#define GOPHER_CATEGORY_ID_ADMIN (GOPHER_ATTRIBUTE_ID_BASE+3)
+#define GOPHER_CATEGORY_ID_VIEWS (GOPHER_ATTRIBUTE_ID_BASE+4)
+#define GOPHER_CATEGORY_ID_ABSTRACT (GOPHER_ATTRIBUTE_ID_BASE+5)
+#define GOPHER_CATEGORY_ID_VERONICA (GOPHER_ATTRIBUTE_ID_BASE+6)
+#define GOPHER_CATEGORY_ID_ASK (GOPHER_ATTRIBUTE_ID_BASE+7)
+#define GOPHER_CATEGORY_ID_UNKNOWN (GOPHER_ATTRIBUTE_ID_BASE+8)
+#define GOPHER_ATTRIBUTE_ID_ALL (GOPHER_ATTRIBUTE_ID_BASE+9)
+#define GOPHER_ATTRIBUTE_ID_ADMIN (GOPHER_ATTRIBUTE_ID_BASE+10)
+#define GOPHER_ATTRIBUTE_ID_MOD_DATE (GOPHER_ATTRIBUTE_ID_BASE+11)
+#define GOPHER_ATTRIBUTE_ID_TTL (GOPHER_ATTRIBUTE_ID_BASE+12)
+#define GOPHER_ATTRIBUTE_ID_SCORE (GOPHER_ATTRIBUTE_ID_BASE+13)
+#define GOPHER_ATTRIBUTE_ID_RANGE (GOPHER_ATTRIBUTE_ID_BASE+14)
+#define GOPHER_ATTRIBUTE_ID_SITE (GOPHER_ATTRIBUTE_ID_BASE+15)
+#define GOPHER_ATTRIBUTE_ID_ORG (GOPHER_ATTRIBUTE_ID_BASE+16)
+#define GOPHER_ATTRIBUTE_ID_LOCATION (GOPHER_ATTRIBUTE_ID_BASE+17)
+#define GOPHER_ATTRIBUTE_ID_GEOG (GOPHER_ATTRIBUTE_ID_BASE+18)
+#define GOPHER_ATTRIBUTE_ID_TIMEZONE (GOPHER_ATTRIBUTE_ID_BASE+19)
+#define GOPHER_ATTRIBUTE_ID_PROVIDER (GOPHER_ATTRIBUTE_ID_BASE+20)
+#define GOPHER_ATTRIBUTE_ID_VERSION (GOPHER_ATTRIBUTE_ID_BASE+21)
+#define GOPHER_ATTRIBUTE_ID_ABSTRACT (GOPHER_ATTRIBUTE_ID_BASE+22)
+#define GOPHER_ATTRIBUTE_ID_VIEW (GOPHER_ATTRIBUTE_ID_BASE+23)
+#define GOPHER_ATTRIBUTE_ID_TREEWALK (GOPHER_ATTRIBUTE_ID_BASE+24)
+#define GOPHER_ATTRIBUTE_ID_UNKNOWN (GOPHER_ATTRIBUTE_ID_BASE+25)
+#define HTTP_MAJOR_VERSION 1
+#define HTTP_MINOR_VERSION 0
+#define HTTP_VERSION TEXT("HTTP/1.0")
+#define HTTP_QUERY_MIME_VERSION 0
+#define HTTP_QUERY_CONTENT_TYPE 1
+#define HTTP_QUERY_CONTENT_TRANSFER_ENCODING 2
+#define HTTP_QUERY_CONTENT_ID 3
+#define HTTP_QUERY_CONTENT_DESCRIPTION 4
+#define HTTP_QUERY_CONTENT_LENGTH 5
+#define HTTP_QUERY_CONTENT_LANGUAGE 6
+#define HTTP_QUERY_ALLOW 7
+#define HTTP_QUERY_PUBLIC 8
+#define HTTP_QUERY_DATE 9
+#define HTTP_QUERY_EXPIRES 10
+#define HTTP_QUERY_LAST_MODIFIED 11
+#define HTTP_QUERY_MESSAGE_ID 12
+#define HTTP_QUERY_URI 13
+#define HTTP_QUERY_DERIVED_FROM 14
+#define HTTP_QUERY_COST 15
+#define HTTP_QUERY_LINK 16
+#define HTTP_QUERY_PRAGMA 17
+#define HTTP_QUERY_VERSION 18
+#define HTTP_QUERY_STATUS_CODE 19
+#define HTTP_QUERY_STATUS_TEXT 20
+#define HTTP_QUERY_RAW_HEADERS 21
+#define HTTP_QUERY_RAW_HEADERS_CRLF 22
+#define HTTP_QUERY_CONNECTION 23
+#define HTTP_QUERY_ACCEPT 24
+#define HTTP_QUERY_ACCEPT_CHARSET 25
+#define HTTP_QUERY_ACCEPT_ENCODING 26
+#define HTTP_QUERY_ACCEPT_LANGUAGE 27
+#define HTTP_QUERY_AUTHORIZATION 28
+#define HTTP_QUERY_CONTENT_ENCODING 29
+#define HTTP_QUERY_FORWARDED 30
+#define HTTP_QUERY_FROM 31
+#define HTTP_QUERY_IF_MODIFIED_SINCE 32
+#define HTTP_QUERY_LOCATION 33
+#define HTTP_QUERY_ORIG_URI 34
+#define HTTP_QUERY_REFERER 35
+#define HTTP_QUERY_RETRY_AFTER 36
+#define HTTP_QUERY_SERVER 37
+#define HTTP_QUERY_TITLE 38
+#define HTTP_QUERY_USER_AGENT 39
+#define HTTP_QUERY_WWW_AUTHENTICATE 40
+#define HTTP_QUERY_PROXY_AUTHENTICATE 41
+#define HTTP_QUERY_ACCEPT_RANGES 42
+#define HTTP_QUERY_SET_COOKIE 43
+#define HTTP_QUERY_COOKIE 44
+#define HTTP_QUERY_REQUEST_METHOD 45
+#define HTTP_QUERY_MAX 45
+#define HTTP_QUERY_CUSTOM 65535
+#define HTTP_QUERY_FLAG_REQUEST_HEADERS 0x80000000
+#define HTTP_QUERY_FLAG_SYSTEMTIME 0x40000000
+#define HTTP_QUERY_FLAG_NUMBER 0x20000000
+#define HTTP_QUERY_FLAG_COALESCE 0x10000000
+#define HTTP_QUERY_MODIFIER_FLAGS_MASK (HTTP_QUERY_FLAG_REQUEST_HEADERS|HTTP_QUERY_FLAG_SYSTEMTIME|HTTP_QUERY_FLAG_NUMBER|HTTP_QUERY_FLAG_COALESCE)
+#define HTTP_QUERY_HEADER_MASK (~HTTP_QUERY_MODIFIER_FLAGS_MASK)
+#define HTTP_STATUS_OK 200
+#define HTTP_STATUS_CREATED 201
+#define HTTP_STATUS_ACCEPTED 202
+#define HTTP_STATUS_PARTIAL 203
+#define HTTP_STATUS_NO_CONTENT 204
+#define HTTP_STATUS_AMBIGUOUS 300
+#define HTTP_STATUS_MOVED 301
+#define HTTP_STATUS_REDIRECT 302
+#define HTTP_STATUS_REDIRECT_METHOD 303
+#define HTTP_STATUS_NOT_MODIFIED 304
+#define HTTP_STATUS_BAD_REQUEST 400
+#define HTTP_STATUS_DENIED 401
+#define HTTP_STATUS_PAYMENT_REQ 402
+#define HTTP_STATUS_FORBIDDEN 403
+#define HTTP_STATUS_NOT_FOUND 404
+#define HTTP_STATUS_BAD_METHOD 405
+#define HTTP_STATUS_NONE_ACCEPTABLE 406
+#define HTTP_STATUS_PROXY_AUTH_REQ 407
+#define HTTP_STATUS_REQUEST_TIMEOUT 408
+#define HTTP_STATUS_CONFLICT 409
+#define HTTP_STATUS_GONE 410
+#define HTTP_STATUS_AUTH_REFUSED 411
+#define HTTP_STATUS_SERVER_ERROR 500
+#define HTTP_STATUS_NOT_SUPPORTED 501
+#define HTTP_STATUS_BAD_GATEWAY 502
+#define HTTP_STATUS_SERVICE_UNAVAIL 503
+#define HTTP_STATUS_GATEWAY_TIMEOUT 504
+#define INTERNET_PREFETCH_PROGRESS 0
+#define INTERNET_PREFETCH_COMPLETE 1
+#define INTERNET_PREFETCH_ABORTED 2
+#define FLAGS_ERROR_UI_FILTER_FOR_ERRORS 0x01
+#define FLAGS_ERROR_UI_FLAGS_CHANGE_OPTIONS 0x02
+#define FLAGS_ERROR_UI_FLAGS_GENERATE_DATA 0x04
+#define FLAGS_ERROR_UI_FLAGS_NO_UI 0x08
+#define HTTP_ADDREQ_INDEX_MASK 0x0000FFFF
+#define HTTP_ADDREQ_FLAGS_MASK 0xFFFF0000
+#define HTTP_ADDREQ_FLAG_ADD_IF_NEW 0x10000000
+#define HTTP_ADDREQ_FLAG_ADD 0x20000000
+#define HTTP_ADDREQ_FLAG_COALESCE_WITH_COMMA 0x40000000
+#define HTTP_ADDREQ_FLAG_COALESCE_WITH_SEMICOLON 0x01000000
+#define HTTP_ADDREQ_FLAG_COALESCE HTTP_ADDREQ_FLAG_COALESCE_WITH_COMMA
+#define HTTP_ADDREQ_FLAG_REPLACE 0x80000000
+#define INTERNET_ERROR_BASE 12000
+#define ERROR_INTERNET_OUT_OF_HANDLES (INTERNET_ERROR_BASE+1)
+#define ERROR_INTERNET_TIMEOUT (INTERNET_ERROR_BASE+2)
+#define ERROR_INTERNET_EXTENDED_ERROR (INTERNET_ERROR_BASE+3)
+#define ERROR_INTERNET_INTERNAL_ERROR (INTERNET_ERROR_BASE+4)
+#define ERROR_INTERNET_INVALID_URL (INTERNET_ERROR_BASE+5)
+#define ERROR_INTERNET_UNRECOGNIZED_SCHEME (INTERNET_ERROR_BASE+6)
+#define ERROR_INTERNET_NAME_NOT_RESOLVED (INTERNET_ERROR_BASE+7)
+#define ERROR_INTERNET_PROTOCOL_NOT_FOUND (INTERNET_ERROR_BASE+8)
+#define ERROR_INTERNET_INVALID_OPTION (INTERNET_ERROR_BASE+9)
+#define ERROR_INTERNET_BAD_OPTION_LENGTH (INTERNET_ERROR_BASE+10)
+#define ERROR_INTERNET_OPTION_NOT_SETTABLE (INTERNET_ERROR_BASE+11)
+#define ERROR_INTERNET_SHUTDOWN (INTERNET_ERROR_BASE+12)
+#define ERROR_INTERNET_INCORRECT_USER_NAME (INTERNET_ERROR_BASE+13)
+#define ERROR_INTERNET_INCORRECT_PASSWORD (INTERNET_ERROR_BASE+14)
+#define ERROR_INTERNET_LOGIN_FAILURE (INTERNET_ERROR_BASE+15)
+#define ERROR_INTERNET_INVALID_OPERATION (INTERNET_ERROR_BASE+16)
+#define ERROR_INTERNET_OPERATION_CANCELLED (INTERNET_ERROR_BASE+17)
+#define ERROR_INTERNET_INCORRECT_HANDLE_TYPE (INTERNET_ERROR_BASE+18)
+#define ERROR_INTERNET_INCORRECT_HANDLE_STATE (INTERNET_ERROR_BASE+19)
+#define ERROR_INTERNET_NOT_PROXY_REQUEST (INTERNET_ERROR_BASE+20)
+#define ERROR_INTERNET_REGISTRY_VALUE_NOT_FOUND (INTERNET_ERROR_BASE+21)
+#define ERROR_INTERNET_BAD_REGISTRY_PARAMETER (INTERNET_ERROR_BASE+22)
+#define ERROR_INTERNET_NO_DIRECT_ACCESS (INTERNET_ERROR_BASE+23)
+#define ERROR_INTERNET_NO_CONTEXT (INTERNET_ERROR_BASE+24)
+#define ERROR_INTERNET_NO_CALLBACK (INTERNET_ERROR_BASE+25)
+#define ERROR_INTERNET_REQUEST_PENDING (INTERNET_ERROR_BASE+26)
+#define ERROR_INTERNET_INCORRECT_FORMAT (INTERNET_ERROR_BASE+27)
+#define ERROR_INTERNET_ITEM_NOT_FOUND (INTERNET_ERROR_BASE+28)
+#define ERROR_INTERNET_CANNOT_CONNECT (INTERNET_ERROR_BASE+29)
+#define ERROR_INTERNET_CONNECTION_ABORTED (INTERNET_ERROR_BASE+30)
+#define ERROR_INTERNET_CONNECTION_RESET (INTERNET_ERROR_BASE+31)
+#define ERROR_INTERNET_FORCE_RETRY (INTERNET_ERROR_BASE+32)
+#define ERROR_INTERNET_INVALID_PROXY_REQUEST (INTERNET_ERROR_BASE+33)
+#define ERROR_INTERNET_NEED_UI (INTERNET_ERROR_BASE+34)
+#define ERROR_INTERNET_HANDLE_EXISTS (INTERNET_ERROR_BASE+36)
+#define ERROR_INTERNET_SEC_CERT_DATE_INVALID (INTERNET_ERROR_BASE+37)
+#define ERROR_INTERNET_SEC_CERT_CN_INVALID (INTERNET_ERROR_BASE+38)
+#define ERROR_INTERNET_HTTP_TO_HTTPS_ON_REDIR (INTERNET_ERROR_BASE+39)
+#define ERROR_INTERNET_HTTPS_TO_HTTP_ON_REDIR (INTERNET_ERROR_BASE+40)
+#define ERROR_INTERNET_MIXED_SECURITY (INTERNET_ERROR_BASE+41)
+#define ERROR_INTERNET_CHG_POST_IS_NON_SECURE (INTERNET_ERROR_BASE+42)
+#define ERROR_INTERNET_POST_IS_NON_SECURE (INTERNET_ERROR_BASE+43)
+#define ERROR_INTERNET_CLIENT_AUTH_CERT_NEEDED (INTERNET_ERROR_BASE+44)
+#define ERROR_INTERNET_INVALID_CA (INTERNET_ERROR_BASE+45)
+#define ERROR_INTERNET_CLIENT_AUTH_NOT_SETUP (INTERNET_ERROR_BASE+46)
+#define ERROR_INTERNET_ASYNC_THREAD_FAILED (INTERNET_ERROR_BASE+47)
+#define ERROR_INTERNET_REDIRECT_SCHEME_CHANGE (INTERNET_ERROR_BASE+48)
+#define ERROR_FTP_TRANSFER_IN_PROGRESS (INTERNET_ERROR_BASE+110)
+#define ERROR_FTP_DROPPED (INTERNET_ERROR_BASE+111)
+#define ERROR_GOPHER_PROTOCOL_ERROR (INTERNET_ERROR_BASE+130)
+#define ERROR_GOPHER_NOT_FILE (INTERNET_ERROR_BASE+131)
+#define ERROR_GOPHER_DATA_ERROR (INTERNET_ERROR_BASE+132)
+#define ERROR_GOPHER_END_OF_DATA (INTERNET_ERROR_BASE+133)
+#define ERROR_GOPHER_INVALID_LOCATOR (INTERNET_ERROR_BASE+134)
+#define ERROR_GOPHER_INCORRECT_LOCATOR_TYPE (INTERNET_ERROR_BASE+135)
+#define ERROR_GOPHER_NOT_GOPHER_PLUS (INTERNET_ERROR_BASE+136)
+#define ERROR_GOPHER_ATTRIBUTE_NOT_FOUND (INTERNET_ERROR_BASE+137)
+#define ERROR_GOPHER_UNKNOWN_LOCATOR (INTERNET_ERROR_BASE+138)
+#define ERROR_HTTP_HEADER_NOT_FOUND (INTERNET_ERROR_BASE+150)
+#define ERROR_HTTP_DOWNLEVEL_SERVER (INTERNET_ERROR_BASE+151)
+#define ERROR_HTTP_INVALID_SERVER_RESPONSE (INTERNET_ERROR_BASE+152)
+#define ERROR_HTTP_INVALID_HEADER (INTERNET_ERROR_BASE+153)
+#define ERROR_HTTP_INVALID_QUERY_REQUEST (INTERNET_ERROR_BASE+154)
+#define ERROR_HTTP_HEADER_ALREADY_EXISTS (INTERNET_ERROR_BASE+155)
+#define ERROR_HTTP_REDIRECT_FAILED (INTERNET_ERROR_BASE+156)
+#define ERROR_HTTP_NOT_REDIRECTED (INTERNET_ERROR_BASE+160)
+#define ERROR_INTERNET_SECURITY_CHANNEL_ERROR (INTERNET_ERROR_BASE+157)
+#define ERROR_INTERNET_UNABLE_TO_CACHE_FILE (INTERNET_ERROR_BASE+158)
+#define ERROR_INTERNET_TCPIP_NOT_INSTALLED (INTERNET_ERROR_BASE+159)
+#define INTERNET_ERROR_LAST ERROR_INTERNET_TCPIP_NOT_INSTALLED
+#define URLCACHEAPI DECLSPEC_IMPORT
+#define NORMAL_CACHE_ENTRY 1
+#define STABLE_CACHE_ENTRY 2
+#define STICKY_CACHE_ENTRY 4
+#define SPARSE_CACHE_ENTRY 0x10000
+#define OCX_CACHE_ENTRY 0x20000
+#define COOKIE_CACHE_ENTRY 0x100000
+#define URLHISTORY_CACHE_ENTRY 0x200000
+#define CACHE_ENTRY_ATTRIBUTE_FC 4
+#define CACHE_ENTRY_HITRATE_FC 0x10
+#define CACHE_ENTRY_MODTIME_FC 0x40
+#define CACHE_ENTRY_EXPTIME_FC 0x80
+#define CACHE_ENTRY_ACCTIME_FC 0x100
+#define CACHE_ENTRY_SYNCTIME_FC 0x200
+#define CACHE_ENTRY_HEADERINFO_FC 0x400
+#define IRF_ASYNC WININET_API_FLAG_ASYNC
+#define IRF_SYNC WININET_API_FLAG_SYNC
+#define IRF_USE_CONTEXT WININET_API_FLAG_USE_CONTEXT
+#define IRF_NO_WAIT 8
+#define HSR_ASYNC	WININET_API_FLAG_ASYNC
+#define HSR_SYNC	WININET_API_FLAG_SYNC
+#define HSR_USE_CONTEXT WININET_API_FLAG_USE_CONTEXT
+#define HSR_INITIATE	8
+#define HSR_DOWNLOAD	16
+#define HSR_CHUNKED	32
+#define INTERNET_DIAL_UNATTENDED	0x8000
+#define INTERNET_DIALSTATE_DISCONNECTED	1
+#define INTERENT_GOONLINE_REFRESH	1
+#define INTERENT_GOONLINE_MASK	1
+#define INTERNET_AUTODIAL_FORCE_ONLINE	1
+#define INTERNET_AUTODIAL_FORCE_UNATTENDED	2
+#define INTERNET_AUTODIAL_FAILIFSECURITYCHECK	4
+#define INTERNET_CONNECTION_MODEM	0x01
+#define INTERNET_CONNECTION_LAN		0x02
+#define INTERNET_CONNECTION_PROXY	0x04
+#define INTERNET_CONNECTION_MODEM_BUSY	0x08
+#define INTERNET_RAS_INSTALLED		0x10
+#define INTERNET_CONNECTION_OFFLINE	0x20
+#define INTERNET_CONNECTION_CONFIGURED	0x40
+#define CACHEGROUP_SEARCH_ALL	0
+#define CACHEGROUP_SEARCH_BYURL	1
+#define INTERNET_CACHE_GROUP_ADD	0
+#define INTERNET_CACHE_GROUP_REMOVE	1
+#define WININET_API_FLAG_ASYNC 0x00000001	/* Force asynchronous operations.  */
+#define WININET_API_FLAG_SYNC 0x00000004	/* Force synchronous operations.  */
+#define WININET_API_FLAG_USE_CONTEXT 0x00000008	/* Force the API to use the context value, even if it is set to zero.  */
+
+#define INTERNET_STATE_CONNECTED		0x0001
+#define INTERNET_STATE_DISCONNECTED		0x0002
+#define INTERNET_STATE_DISCONNECTED_BY_USER	0x0010
+#define INTERNET_STATE_IDLE			0x0100
+#define INTERNET_STATE_BUSY			0x0200
+
+#ifndef RC_INVOKED
+typedef PVOID HINTERNET;
+typedef HINTERNET *LPHINTERNET;
+typedef LONGLONG GROUPID;
+typedef WORD INTERNET_PORT,*LPINTERNET_PORT;
+typedef enum {
+	INTERNET_SCHEME_PARTIAL = -2, INTERNET_SCHEME_UNKNOWN = -1,
+	INTERNET_SCHEME_DEFAULT = 0, INTERNET_SCHEME_FTP, INTERNET_SCHEME_GOPHER,
+	INTERNET_SCHEME_HTTP, INTERNET_SCHEME_HTTPS, INTERNET_SCHEME_FILE,
+	INTERNET_SCHEME_NEWS, INTERNET_SCHEME_MAILTO, INTERNET_SCHEME_SOCKS,
+	INTERNET_SCHEME_FIRST = INTERNET_SCHEME_FTP, INTERNET_SCHEME_LAST = INTERNET_SCHEME_SOCKS
+} INTERNET_SCHEME,*LPINTERNET_SCHEME;
+typedef struct { DWORD dwResult; DWORD dwError; } INTERNET_ASYNC_RESULT,*LPINTERNET_ASYNC_RESULT;
+typedef struct { DWORD dwStatus; DWORD dwSize; } INTERNET_PREFETCH_STATUS,*LPINTERNET_PREFETCH_STATUS;
+typedef struct {
+	DWORD dwAccessType;
+	LPCTSTR lpszProxy;
+	LPCTSTR lpszProxyBypass;
+} INTERNET_PROXY_INFO,*LPINTERNET_PROXY_INFO;
+typedef struct {
+	DWORD dwMajorVersion;
+	DWORD dwMinorVersion;
+} INTERNET_VERSION_INFO,*LPINTERNET_VERSION_INFO;
+typedef struct {
+	DWORD dwStructSize;
+	LPSTR lpszScheme;
+	DWORD dwSchemeLength;
+	INTERNET_SCHEME nScheme;
+	LPSTR lpszHostName;
+	DWORD dwHostNameLength;
+	INTERNET_PORT nPort;
+	LPSTR lpszUserName;
+	DWORD dwUserNameLength;
+	LPSTR lpszPassword;
+	DWORD dwPasswordLength;
+	LPSTR lpszUrlPath;
+	DWORD dwUrlPathLength;
+	LPSTR lpszExtraInfo;
+	DWORD dwExtraInfoLength;
+} URL_COMPONENTSA,*LPURL_COMPONENTSA;
+typedef struct {
+	DWORD dwStructSize;
+	LPWSTR lpszScheme;
+	DWORD dwSchemeLength;
+	INTERNET_SCHEME nScheme;
+	LPWSTR lpszHostName;
+	DWORD dwHostNameLength;
+	INTERNET_PORT nPort;
+	LPWSTR lpszUserName;
+	DWORD dwUserNameLength;
+	LPWSTR lpszPassword;
+	DWORD dwPasswordLength;
+	LPWSTR lpszUrlPath;
+	DWORD dwUrlPathLength;
+	LPWSTR lpszExtraInfo;
+	DWORD dwExtraInfoLength;
+} URL_COMPONENTSW,*LPURL_COMPONENTSW;
+typedef struct {
+	FILETIME ftExpiry;
+	FILETIME ftStart;
+	LPTSTR lpszSubjectInfo;
+	LPTSTR lpszIssuerInfo;
+	LPTSTR lpszProtocolName;
+	LPTSTR lpszSignatureAlgName;
+	LPTSTR lpszEncryptionAlgName;
+	DWORD dwKeySize;
+} INTERNET_CERTIFICATE_INFO,*LPINTERNET_CERTIFICATE_INFO;
+typedef VOID (CALLBACK * INTERNET_STATUS_CALLBACK)(HINTERNET,DWORD,DWORD,PVOID,DWORD);
+typedef INTERNET_STATUS_CALLBACK * LPINTERNET_STATUS_CALLBACK;
+typedef struct {
+	CHAR DisplayString[MAX_GOPHER_DISPLAY_TEXT+1];
+	DWORD GopherType;
+	DWORD SizeLow;
+	DWORD SizeHigh;
+	FILETIME LastModificationTime;
+	CHAR Locator[MAX_GOPHER_LOCATOR_LENGTH+1];
+} GOPHER_FIND_DATAA,*LPGOPHER_FIND_DATAA;
+typedef struct {
+	WCHAR DisplayString[MAX_GOPHER_DISPLAY_TEXT+1];
+	DWORD GopherType;
+	DWORD SizeLow;
+	DWORD SizeHigh;
+	FILETIME LastModificationTime;
+	WCHAR Locator[MAX_GOPHER_LOCATOR_LENGTH+1];
+} GOPHER_FIND_DATAW,*LPGOPHER_FIND_DATAW;
+typedef struct {
+	LPCTSTR Comment;
+	LPCTSTR EmailAddress;
+} GOPHER_ADMIN_ATTRIBUTE_TYPE,*LPGOPHER_ADMIN_ATTRIBUTE_TYPE;
+typedef struct {FILETIME DateAndTime;} GOPHER_MOD_DATE_ATTRIBUTE_TYPE,*LPGOPHER_MOD_DATE_ATTRIBUTE_TYPE;
+typedef struct {DWORD Ttl;} GOPHER_TTL_ATTRIBUTE_TYPE,*LPGOPHER_TTL_ATTRIBUTE_TYPE;
+typedef struct {INT Score;} GOPHER_SCORE_ATTRIBUTE_TYPE,*LPGOPHER_SCORE_ATTRIBUTE_TYPE;
+typedef struct {
+	INT LowerBound;
+	INT UpperBound;
+} GOPHER_SCORE_RANGE_ATTRIBUTE_TYPE,*LPGOPHER_SCORE_RANGE_ATTRIBUTE_TYPE;
+typedef struct {LPCTSTR Site;} GOPHER_SITE_ATTRIBUTE_TYPE,*LPGOPHER_SITE_ATTRIBUTE_TYPE;
+typedef struct {LPCTSTR Organization;} GOPHER_ORGANIZATION_ATTRIBUTE_TYPE,*LPGOPHER_ORGANIZATION_ATTRIBUTE_TYPE;
+typedef struct {LPCTSTR Location;} GOPHER_LOCATION_ATTRIBUTE_TYPE,*LPGOPHER_LOCATION_ATTRIBUTE_TYPE;
+typedef struct {
+	INT DegreesNorth;
+	INT MinutesNorth;
+	INT SecondsNorth;
+	INT DegreesEast;
+	INT MinutesEast;
+	INT SecondsEast;
+} GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE,*LPGOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE;
+typedef struct {INT Zone;} GOPHER_TIMEZONE_ATTRIBUTE_TYPE,*LPGOPHER_TIMEZONE_ATTRIBUTE_TYPE;
+typedef struct {LPCTSTR Provider;} GOPHER_PROVIDER_ATTRIBUTE_TYPE,*LPGOPHER_PROVIDER_ATTRIBUTE_TYPE;
+typedef struct {LPCTSTR Version;} GOPHER_VERSION_ATTRIBUTE_TYPE,*LPGOPHER_VERSION_ATTRIBUTE_TYPE;
+typedef struct {
+	LPCTSTR ShortAbstract;
+	LPCTSTR AbstractFile;
+} GOPHER_ABSTRACT_ATTRIBUTE_TYPE,*LPGOPHER_ABSTRACT_ATTRIBUTE_TYPE;
+typedef struct {
+	LPCTSTR ContentType;
+	LPCTSTR Language;
+	DWORD Size;
+} GOPHER_VIEW_ATTRIBUTE_TYPE,*LPGOPHER_VIEW_ATTRIBUTE_TYPE;
+typedef struct {BOOL TreeWalk;} GOPHER_VERONICA_ATTRIBUTE_TYPE,*LPGOPHER_VERONICA_ATTRIBUTE_TYPE;
+typedef struct {
+	LPCTSTR QuestionType;
+	LPCTSTR QuestionText;
+} GOPHER_ASK_ATTRIBUTE_TYPE,*LPGOPHER_ASK_ATTRIBUTE_TYPE;
+typedef struct {LPCTSTR Text;} GOPHER_UNKNOWN_ATTRIBUTE_TYPE,*LPGOPHER_UNKNOWN_ATTRIBUTE_TYPE;
+typedef struct {
+	DWORD CategoryId;
+	DWORD AttributeId;
+	union {
+		GOPHER_ADMIN_ATTRIBUTE_TYPE Admin;
+		GOPHER_MOD_DATE_ATTRIBUTE_TYPE ModDate;
+		GOPHER_TTL_ATTRIBUTE_TYPE Ttl;
+		GOPHER_SCORE_ATTRIBUTE_TYPE Score;
+		GOPHER_SCORE_RANGE_ATTRIBUTE_TYPE ScoreRange;
+		GOPHER_SITE_ATTRIBUTE_TYPE Site;
+		GOPHER_ORGANIZATION_ATTRIBUTE_TYPE Organization;
+		GOPHER_LOCATION_ATTRIBUTE_TYPE Location;
+		GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE GeographicalLocation;
+		GOPHER_TIMEZONE_ATTRIBUTE_TYPE TimeZone;
+		GOPHER_PROVIDER_ATTRIBUTE_TYPE Provider;
+		GOPHER_VERSION_ATTRIBUTE_TYPE Version;
+		GOPHER_ABSTRACT_ATTRIBUTE_TYPE Abstract;
+		GOPHER_VIEW_ATTRIBUTE_TYPE View;
+		GOPHER_VERONICA_ATTRIBUTE_TYPE Veronica;
+		GOPHER_ASK_ATTRIBUTE_TYPE Ask;
+		GOPHER_UNKNOWN_ATTRIBUTE_TYPE Unknown;
+	} AttributeType;
+} GOPHER_ATTRIBUTE_TYPE,*LPGOPHER_ATTRIBUTE_TYPE;
+typedef BOOL(CALLBACK *GOPHER_ATTRIBUTE_ENUMERATOR)(LPGOPHER_ATTRIBUTE_TYPE,DWORD);
+typedef struct _INTERNET_CACHE_ENTRY_INFOA {
+	DWORD dwStructSize;
+	LPSTR lpszSourceUrlName;
+	LPSTR lpszLocalFileName;
+	DWORD CacheEntryType;
+	DWORD dwUseCount;
+	DWORD dwHitRate;
+	DWORD dwSizeLow;
+	DWORD dwSizeHigh;
+	FILETIME LastModifiedTime;
+	FILETIME ExpireTime;
+	FILETIME LastAccessTime;
+	FILETIME LastSyncTime;
+	PBYTE lpHeaderInfo;
+	DWORD dwHeaderInfoSize;
+	LPSTR lpszFileExtension;
+	DWORD dwReserved;
+} INTERNET_CACHE_ENTRY_INFOA,*LPINTERNET_CACHE_ENTRY_INFOA;
+typedef struct _INTERNET_CACHE_ENTRY_INFOW {
+	DWORD dwStructSize;
+	LPWSTR lpszSourceUrlName;
+	LPWSTR lpszLocalFileName;
+	DWORD CacheEntryType;
+	DWORD dwUseCount;
+	DWORD dwHitRate;
+	DWORD dwSizeLow;
+	DWORD dwSizeHigh;
+	FILETIME LastModifiedTime;
+	FILETIME ExpireTime;
+	FILETIME LastAccessTime;
+	FILETIME LastSyncTime;
+	PBYTE lpHeaderInfo;
+	DWORD dwHeaderInfoSize;
+	LPWSTR lpszFileExtension;
+	DWORD dwReserved;
+} INTERNET_CACHE_ENTRY_INFOW,*LPINTERNET_CACHE_ENTRY_INFOW;
+typedef struct _INTERNET_BUFFERSA {
+	DWORD dwStructSize;
+	struct _INTERNET_BUFFERSA *Next;
+	LPCSTR lpcszHeader;
+	DWORD dwHeadersLength;
+	DWORD dwHeadersTotal;
+	LPVOID lpvBuffer;
+	DWORD dwBufferLength;
+	DWORD dwBufferTotal;
+	DWORD dwOffsetLow;
+	DWORD dwOffsetHigh;
+} INTERNET_BUFFERSA,*LPINTERNET_BUFFERSA;
+typedef struct _INTERNET_BUFFERSW {
+	DWORD dwStructSize;
+	struct _INTERNET_BUFFERS *Next;
+	LPCWSTR  lpcszHeader;
+	DWORD dwHeadersLength;
+	DWORD dwHeadersTotal;
+	LPVOID lpvBuffer;
+	DWORD dwBufferLength;
+	DWORD dwBufferTotal;
+	DWORD dwOffsetLow;
+	DWORD dwOffsetHigh;
+} INTERNET_BUFFERSW,*LPINTERNET_BUFFERSW;
+
+#define GROUP_OWNER_STORAGE_SIZE 4
+#define GROUPNAME_MAX_LENGTH 120
+typedef struct _INTERNET_CACHE_GROUP_INFOA {
+	DWORD dwGroupSize;
+	DWORD dwGroupFlags;
+	DWORD dwGroupType;
+	DWORD dwDiskUsage;
+	DWORD dwDiskQuota;
+	DWORD dwOwnerStorage[GROUP_OWNER_STORAGE_SIZE];
+	CHAR  szGroupName[GROUPNAME_MAX_LENGTH];
+} INTERNET_CACHE_GROUP_INFOA, * LPINTERNET_CACHE_GROUP_INFOA;
+typedef struct _INTERNET_CACHE_GROUP_INFOW {
+	DWORD dwGroupSize;
+	DWORD dwGroupFlags;
+	DWORD dwGroupType;
+	DWORD dwDiskUsage;
+	DWORD dwDiskQuota;
+	DWORD dwOwnerStorage[GROUP_OWNER_STORAGE_SIZE];
+	WCHAR szGroupName[GROUPNAME_MAX_LENGTH];
+} INTERNET_CACHE_GROUP_INFOW, * LPINTERNET_CACHE_GROUP_INFOW;
+typedef struct {
+ 	DWORD dwConnectedState;
+	DWORD dwFlags;
+} INTERNET_CONNECTED_INFO, * LPINTERNET_CONNECTED_INFO;
+
+#ifdef UNICODE
+typedef URL_COMPONENTSW URL_COMPONENTS;
+typedef LPURL_COMPONENTSW LPURL_COMPONENTS;
+typedef GOPHER_FIND_DATAW GOPHER_FIND_DATA;
+typedef LPGOPHER_FIND_DATAW LPGOPHER_FIND_DATA;
+typedef INTERNET_CACHE_ENTRY_INFOW INTERNET_CACHE_ENTRY_INFO;
+typedef LPINTERNET_CACHE_ENTRY_INFOW LPINTERNET_CACHE_ENTRY_INFO;
+typedef INTERNET_BUFFERSW INTERNET_BUFFERS,*LPINTERNET_BUFFERS;
+typedef INTERNET_CACHE_GROUP_INFOW INTERNET_CACHE_GROUP_INFO;
+typedef LPINTERNET_CACHE_GROUP_INFOW LPINTERNET_CACHE_GROUP_INFO;
+#else
+typedef URL_COMPONENTSA URL_COMPONENTS;
+typedef LPURL_COMPONENTSA LPURL_COMPONENTS;
+typedef GOPHER_FIND_DATAA GOPHER_FIND_DATA;
+typedef LPGOPHER_FIND_DATAA LPGOPHER_FIND_DATA;
+typedef INTERNET_CACHE_ENTRY_INFOA INTERNET_CACHE_ENTRY_INFO;
+typedef LPINTERNET_CACHE_ENTRY_INFOA LPINTERNET_CACHE_ENTRY_INFO;
+typedef INTERNET_BUFFERSA INTERNET_BUFFERS,*LPINTERNET_BUFFERS;
+typedef INTERNET_CACHE_GROUP_INFOA INTERNET_CACHE_GROUP_INFO;
+typedef LPINTERNET_CACHE_GROUP_INFOA LPINTERNET_CACHE_GROUP_INFO;
+#endif
+BOOL WINAPI InternetTimeFromSystemTime(SYSTEMTIME*,DWORD,LPSTR,DWORD);
+BOOL WINAPI InternetTimeToSystemTime(LPCSTR,SYSTEMTIME*,DWORD);
+BOOL WINAPI InternetDebugGetLocalTime(SYSTEMTIME*,PDWORD);
+BOOL WINAPI InternetCrackUrlA(LPCSTR,DWORD,DWORD,LPURL_COMPONENTSA);
+BOOL WINAPI InternetCrackUrlW(LPCWSTR,DWORD,DWORD,LPURL_COMPONENTSW);
+BOOL WINAPI InternetCreateUrlA(LPURL_COMPONENTSA,DWORD,LPSTR,PDWORD);
+BOOL WINAPI InternetCreateUrlW(LPURL_COMPONENTSW,DWORD,LPWSTR,PDWORD);
+BOOL WINAPI InternetCanonicalizeUrlA(LPCSTR,LPSTR,PDWORD,DWORD);
+BOOL WINAPI InternetCanonicalizeUrlW(LPCWSTR,LPWSTR,PDWORD,DWORD);
+BOOL WINAPI InternetCheckConnectionA(LPCSTR,DWORD,DWORD);
+BOOL WINAPI InternetCheckConnectionW(LPCWSTR,DWORD,DWORD);
+BOOL WINAPI InternetCombineUrlA(LPCSTR,LPCSTR,LPSTR,PDWORD,DWORD);
+BOOL WINAPI InternetCombineUrlW(LPCWSTR,LPCWSTR,LPWSTR,PDWORD,DWORD);
+HINTERNET WINAPI InternetOpenA(LPCSTR,DWORD,LPCSTR,LPCSTR,DWORD);
+HINTERNET WINAPI InternetOpenW(LPCWSTR,DWORD,LPCWSTR,LPCWSTR,DWORD);
+BOOL WINAPI InternetCloseHandle(HINTERNET);
+HINTERNET WINAPI InternetConnectA(HINTERNET,LPCSTR,INTERNET_PORT,LPCSTR,LPCSTR,DWORD,DWORD,DWORD);
+HINTERNET WINAPI InternetConnectW(HINTERNET,LPCWSTR,INTERNET_PORT,LPCWSTR,LPCWSTR,DWORD,DWORD,DWORD);
+HINTERNET WINAPI InternetOpenUrlA(HINTERNET,LPCSTR,LPCSTR,DWORD,DWORD,DWORD);
+HINTERNET WINAPI InternetOpenUrlW(HINTERNET,LPCWSTR,LPCWSTR,DWORD,DWORD,DWORD);
+BOOL WINAPI InternetReadFile(HINTERNET,PVOID,DWORD,PDWORD);
+DWORD WINAPI InternetSetFilePointer( HINTERNET,LONG,PVOID,DWORD,DWORD);
+BOOL WINAPI InternetWriteFile(HINTERNET,LPCVOID,DWORD,PDWORD);
+BOOL WINAPI InternetQueryDataAvailable( HINTERNET,PDWORD,DWORD,DWORD);
+BOOL WINAPI InternetFindNextFileA(HINTERNET,PVOID);
+BOOL WINAPI InternetFindNextFileW(HINTERNET,PVOID);
+BOOL WINAPI InternetQueryOptionA(HINTERNET,DWORD,PVOID,PDWORD);
+BOOL WINAPI InternetQueryOptionW(HINTERNET,DWORD,PVOID,PDWORD);
+BOOL WINAPI InternetSetOptionA(HINTERNET,DWORD,PVOID,DWORD);
+BOOL WINAPI InternetSetOptionW(HINTERNET,DWORD,PVOID,DWORD);
+BOOL WINAPI InternetSetOptionExA(HINTERNET,DWORD,PVOID,DWORD,DWORD);
+BOOL WINAPI InternetSetOptionExW(HINTERNET,DWORD,PVOID,DWORD,DWORD);
+BOOL WINAPI InternetGetLastResponseInfoA(PDWORD,LPSTR,PDWORD);
+BOOL WINAPI InternetGetLastResponseInfoW(PDWORD,LPWSTR,PDWORD);
+INTERNET_STATUS_CALLBACK WINAPI InternetSetStatusCallback(HINTERNET,INTERNET_STATUS_CALLBACK);
+DWORD WINAPI FtpGetFileSize(HINTERNET,LPDWORD);
+HINTERNET WINAPI FtpFindFirstFileA(HINTERNET,LPCSTR,LPWIN32_FIND_DATA,DWORD,DWORD);
+HINTERNET WINAPI FtpFindFirstFileW(HINTERNET,LPCWSTR,LPWIN32_FIND_DATA,DWORD,DWORD);
+BOOL WINAPI FtpGetFileA(HINTERNET,LPCSTR,LPCSTR,BOOL,DWORD,DWORD,DWORD);
+BOOL WINAPI FtpGetFileW( HINTERNET,LPCWSTR,LPCWSTR,BOOL,DWORD,DWORD,DWORD);
+BOOL WINAPI FtpPutFileA(HINTERNET,LPCSTR,LPCSTR,DWORD,DWORD);
+BOOL WINAPI FtpPutFileW(HINTERNET,LPCWSTR,LPCWSTR,DWORD,DWORD);
+BOOL WINAPI FtpDeleteFileA(HINTERNET,LPCSTR);
+BOOL WINAPI FtpDeleteFileW(HINTERNET,LPCWSTR);
+BOOL WINAPI FtpRenameFileA(HINTERNET, LPCSTR,LPCSTR);
+BOOL WINAPI FtpRenameFileW(HINTERNET,LPCWSTR,LPCWSTR);
+HINTERNET WINAPI FtpOpenFileA(HINTERNET,LPCSTR,DWORD,DWORD,DWORD);
+HINTERNET WINAPI FtpOpenFileW(HINTERNET,LPCWSTR,DWORD,DWORD,DWORD);
+BOOL WINAPI FtpCreateDirectoryA(HINTERNET,LPCSTR);
+BOOL WINAPI FtpCreateDirectoryW(HINTERNET,LPCWSTR);
+BOOL WINAPI FtpRemoveDirectoryA(HINTERNET,LPCSTR);
+BOOL WINAPI FtpRemoveDirectoryW(HINTERNET,LPCWSTR);
+BOOL WINAPI FtpSetCurrentDirectoryA(HINTERNET,LPCSTR);
+BOOL WINAPI FtpSetCurrentDirectoryW(HINTERNET,LPCWSTR);
+BOOL WINAPI FtpGetCurrentDirectoryA(HINTERNET,LPSTR,PDWORD);
+BOOL WINAPI FtpGetCurrentDirectoryW(HINTERNET,LPWSTR,PDWORD);
+BOOL WINAPI FtpCommandA(HINTERNET,BOOL,DWORD,LPCSTR,DWORD_PTR,HINTERNET*);
+BOOL WINAPI FtpCommandW(HINTERNET,BOOL,DWORD,LPCWSTR,DWORD_PTR,HINTERNET*);
+BOOL WINAPI GopherCreateLocatorA(LPCSTR,INTERNET_PORT,LPCSTR,LPCSTR,DWORD,LPSTR,PDWORD);
+BOOL WINAPI GopherCreateLocatorW(LPCWSTR,INTERNET_PORT,LPCWSTR,LPCWSTR,DWORD,LPWSTR,PDWORD);
+BOOL WINAPI GopherGetLocatorTypeA(LPCSTR,PDWORD);
+BOOL WINAPI GopherGetLocatorTypeW(LPCWSTR,PDWORD);
+HINTERNET WINAPI GopherFindFirstFileA(HINTERNET,LPCSTR,LPCSTR,LPGOPHER_FIND_DATAA,DWORD,DWORD);
+HINTERNET WINAPI GopherFindFirstFileW(HINTERNET,LPCWSTR,LPCWSTR,LPGOPHER_FIND_DATAW,DWORD,DWORD);
+HINTERNET WINAPI GopherOpenFileA(HINTERNET,LPCSTR,LPCSTR,DWORD,DWORD);
+HINTERNET WINAPI GopherOpenFileW(HINTERNET,LPCWSTR,LPCWSTR,DWORD,DWORD);
+BOOL WINAPI GopherGetAttributeA(HINTERNET,LPCSTR,LPCSTR,LPBYTE,DWORD,PDWORD,GOPHER_ATTRIBUTE_ENUMERATOR,DWORD);
+BOOL WINAPI GopherGetAttributeW(HINTERNET,LPCWSTR,
+LPCWSTR, LPBYTE, DWORD, PDWORD, GOPHER_ATTRIBUTE_ENUMERATOR, DWORD);
+HINTERNET WINAPI HttpOpenRequestA(HINTERNET,LPCSTR,LPCSTR,LPCSTR,LPCSTR,LPCSTR *,DWORD,DWORD);
+HINTERNET WINAPI HttpOpenRequestW(HINTERNET,LPCWSTR,LPCWSTR,LPCWSTR,LPCWSTR,LPCWSTR FAR * lplpszAcceptTypes , DWORD dwFlags, DWORD dwContext);
+BOOL WINAPI HttpAddRequestHeadersA(HINTERNET,LPCSTR,DWORD,DWORD);
+BOOL WINAPI HttpAddRequestHeadersW(HINTERNET,LPCWSTR,DWORD,DWORD);
+BOOL WINAPI HttpSendRequestA(HINTERNET,LPCSTR,DWORD,PVOID,DWORD);
+BOOL WINAPI HttpSendRequestW(HINTERNET,LPCWSTR,DWORD,PVOID,DWORD);
+BOOL WINAPI HttpQueryInfoA(HINTERNET,DWORD,PVOID,PDWORD,PDWORD);
+BOOL WINAPI HttpQueryInfoW(HINTERNET,DWORD,PVOID,PDWORD,PDWORD);
+BOOL WINAPI InternetSetCookieA(LPCSTR,LPCSTR,LPCSTR);
+BOOL WINAPI InternetSetCookieW(LPCSTR,LPCWSTR,LPCWSTR);
+BOOL WINAPI InternetGetCookieA(LPCSTR,LPCSTR,LPSTR,PDWORD);
+BOOL WINAPI InternetGetCookieW(LPCSTR,LPCWSTR,LPWSTR,PDWORD);
+DWORD WINAPI InternetAttemptConnect(DWORD);
+DWORD WINAPI InternetErrorDlg(HWND,HINTERNET,DWORD,DWORD,PVOID *);
+DWORD WINAPI InternetConfirmZoneCrossing(HWND,LPSTR,LPSTR,BOOL);
+BOOL WINAPI CreateUrlCacheEntryA(LPCSTR,DWORD,LPCSTR,LPSTR,DWORD);
+BOOL WINAPI CreateUrlCacheEntryW(LPCSTR,DWORD,LPCSTR,LPWSTR,DWORD);
+BOOL WINAPI CommitUrlCacheEntryA(LPCSTR,LPCSTR,FILETIME,FILETIME,DWORD,LPBYTE,DWORD,LPCSTR,DWORD);
+BOOL WINAPI CommitUrlCacheEntryW(LPCSTR,LPCWSTR,FILETIME,FILETIME,DWORD,LPBYTE,DWORD,LPCWSTR,DWORD);
+BOOL WINAPI RetrieveUrlCacheEntryFileA(LPCSTR,LPINTERNET_CACHE_ENTRY_INFOA,PDWORD,DWORD);
+BOOL WINAPI RetrieveUrlCacheEntryFileW(LPCSTR,LPINTERNET_CACHE_ENTRY_INFOW,PDWORD,DWORD);
+BOOL WINAPI UnlockUrlCacheEntryFile(LPCSTR,DWORD);
+HANDLE WINAPI RetrieveUrlCacheEntryStreamA(LPCSTR,LPINTERNET_CACHE_ENTRY_INFOA,PDWORD,BOOL,DWORD);
+HANDLE WINAPI RetrieveUrlCacheEntryStreamW( LPCSTR,LPINTERNET_CACHE_ENTRY_INFOW,PDWORD,BOOL,DWORD);
+BOOL WINAPI ReadUrlCacheEntryStream(HANDLE,DWORD,PVOID,PDWORD,DWORD);
+BOOL WINAPI UnlockUrlCacheEntryStream( HANDLE,DWORD);
+BOOL WINAPI GetUrlCacheEntryInfoA(LPCSTR,LPINTERNET_CACHE_ENTRY_INFOA,PDWORD);
+BOOL WINAPI GetUrlCacheEntryInfoW(LPCSTR,LPINTERNET_CACHE_ENTRY_INFOW,PDWORD);
+BOOL WINAPI SetUrlCacheEntryInfoA(LPCSTR,LPINTERNET_CACHE_ENTRY_INFOA,DWORD);
+BOOL WINAPI SetUrlCacheEntryInfoW(LPCSTR,LPINTERNET_CACHE_ENTRY_INFOW,DWORD);
+HANDLE WINAPI FindFirstUrlCacheEntryA(LPCSTR,LPINTERNET_CACHE_ENTRY_INFOA,PDWORD);
+HANDLE WINAPI FindFirstUrlCacheEntryW(LPCSTR,LPINTERNET_CACHE_ENTRY_INFOW,PDWORD);
+BOOL WINAPI FindNextUrlCacheEntryA(HANDLE,LPINTERNET_CACHE_ENTRY_INFOA,PDWORD);
+BOOL WINAPI FindNextUrlCacheEntryW(HANDLE,LPINTERNET_CACHE_ENTRY_INFOW,PDWORD);
+BOOL WINAPI FindCloseUrlCache(HANDLE);
+BOOL WINAPI DeleteUrlCacheEntryA(LPCSTR);
+BOOL WINAPI DeleteUrlCacheEntryW(LPCWSTR);
+
+DWORD AuthenticateUser(PVOID*,LPSTR,LPSTR,DWORD,LPSTR,DWORD,LPSTR,LPSTR);
+BOOL WINAPI HttpSendRequestExA(HINTERNET,LPINTERNET_BUFFERSA,LPINTERNET_BUFFERSA,DWORD,DWORD);
+BOOL WINAPI HttpSendRequestExW(HINTERNET,LPINTERNET_BUFFERSW,LPINTERNET_BUFFERSW,DWORD,DWORD);
+BOOL WINAPI HttpEndRequestA(HINTERNET,LPINTERNET_BUFFERSA,DWORD,DWORD);
+BOOL WINAPI HttpEndRequestW(HINTERNET,LPINTERNET_BUFFERSW,DWORD,DWORD);
+DWORD WINAPI InternetDial(HWND,LPTSTR,DWORD,LPDWORD,DWORD);
+DWORD WINAPI InternetHangUp(DWORD,DWORD);
+BOOL WINAPI InternetGoOnline(LPTSTR,HWND,DWORD);
+BOOL WINAPI InternetAutodial(DWORD,DWORD);
+BOOL WINAPI InternetAutodialHangup(DWORD);
+BOOL WINAPI InternetGetConnectedState(LPDWORD,DWORD);
+BOOL WINAPI InternetSetDialState(LPCTSTR,DWORD,DWORD);
+BOOL WINAPI InternetReadFileExA(HINTERNET,LPINTERNET_BUFFERSA,DWORD,DWORD_PTR);
+BOOL WINAPI InternetReadFileExW(HINTERNET,LPINTERNET_BUFFERSW,DWORD,DWORD_PTR);
+GROUPID WINAPI CreateUrlCacheGroup(DWORD,LPVOID);
+BOOL WINAPI DeleteUrlCacheGroup(GROUPID,DWORD,LPVOID);
+HANDLE WINAPI FindFirstUrlCacheGroup(DWORD,DWORD,LPVOID,DWORD,GROUPID*,LPVOID);
+BOOL WINAPI FindNextUrlCacheGroup(HANDLE,GROUPID*,LPVOID);
+BOOL WINAPI GetUrlCacheGroupAttributeA(GROUPID,DWORD,DWORD,LPINTERNET_CACHE_GROUP_INFOA,LPDWORD,LPVOID);
+BOOL WINAPI GetUrlCacheGroupAttributeW(GROUPID,DWORD,DWORD,LPINTERNET_CACHE_GROUP_INFOW,LPDWORD,LPVOID);
+BOOL WINAPI SetUrlCacheGroupAttributeA(GROUPID,DWORD,DWORD,LPINTERNET_CACHE_GROUP_INFOA,LPVOID);
+BOOL WINAPI SetUrlCacheGroupAttributeW(GROUPID,DWORD,DWORD,LPINTERNET_CACHE_GROUP_INFOW,LPVOID);
+
+#ifdef UNICODE
+#define InternetCrackUrl InternetCrackUrlW
+#define InternetCreateUrl InternetCreateUrlW
+#define InternetCanonicalizeUrl InternetCanonicalizeUrlW
+#define InternetCheckConnection InternetCheckConnectionW
+#define InternetCombineUrl InternetCombineUrlW
+#define InternetOpen InternetOpenW
+#define InternetConnect InternetConnectW
+#define InternetOpenUrl InternetOpenUrlW
+#define InternetFindNextFile InternetFindNextFileW
+#define InternetQueryOption InternetQueryOptionW
+#define InternetSetOption InternetSetOptionW
+#define InternetSetOptionEx InternetSetOptionExW
+#define InternetGetLastResponseInfo InternetGetLastResponseInfoW
+#define InternetReadFileEx  InternetReadFileExW
+#define FtpFindFirstFile FtpFindFirstFileW
+#define FtpGetFile FtpGetFileW
+#define FtpPutFile FtpPutFileW
+#define FtpDeleteFile FtpDeleteFileW
+#define FtpRenameFile FtpRenameFileW
+#define FtpOpenFile FtpOpenFileW
+#define FtpCreateDirectory FtpCreateDirectoryW
+#define FtpRemoveDirectory FtpRemoveDirectoryW
+#define FtpSetCurrentDirectory FtpSetCurrentDirectoryW
+#define FtpGetCurrentDirectory FtpGetCurrentDirectoryW
+#define FtpCommand FtpCommandW
+#define GopherGetLocatorType GopherGetLocatorTypeW
+#define GopherCreateLocator GopherCreateLocatorW
+#define GopherFindFirstFile GopherFindFirstFileW
+#define GopherOpenFile GopherOpenFileW
+#define GopherGetAttribute GopherGetAttributeW
+#define HttpSendRequest HttpSendRequestW
+#define HttpOpenRequest HttpOpenRequestW
+#define HttpAddRequestHeaders HttpAddRequestHeadersW
+#define HttpQueryInfo HttpQueryInfoW
+#define InternetSetCookie InternetSetCookieW
+#define InternetGetCookie InternetGetCookieW
+#define CreateUrlCacheEntry CreateUrlCacheEntryW
+#define RetrieveUrlCacheEntryStream RetrieveUrlCacheEntryStreamW
+#define FindNextUrlCacheEntry FindNextUrlCacheEntryW
+#define CommitUrlCacheEntry CommitUrlCacheEntryW
+#define GetUrlCacheEntryInfo GetUrlCacheEntryInfoW
+#define SetUrlCacheEntryInfo SetUrlCacheEntryInfoW
+#define FindFirstUrlCacheEntry FindFirstUrlCacheEntryW
+#define RetrieveUrlCacheEntryFile RetrieveUrlCacheEntryFileW
+#define HttpSendRequestEx	 HttpSendRequestExW
+#define HttpEndRequest		 HttpEndRequestW
+#define GetUrlCacheGroupAttribute  GetUrlCacheGroupAttributeW
+#define SetUrlCacheGroupAttribute  SetUrlCacheGroupAttributeW
+#define DeleteUrlCacheEntry  DeleteUrlCacheEntryW
+
+#else
+#define GopherGetAttribute GopherGetAttributeA
+#define InternetCrackUrl InternetCrackUrlA
+#define InternetCreateUrl InternetCreateUrlA
+#define InternetCanonicalizeUrl InternetCanonicalizeUrlA
+#define InternetCheckConnection InternetCheckConnectionA
+#define InternetCombineUrl InternetCombineUrlA
+#define InternetOpen InternetOpenA
+#define InternetConnect InternetConnectA
+#define InternetOpenUrl InternetOpenUrlA
+#define InternetFindNextFile InternetFindNextFileA
+#define InternetQueryOption InternetQueryOptionA
+#define InternetSetOption InternetSetOptionA
+#define InternetSetOptionEx InternetSetOptionExA
+#define InternetGetLastResponseInfo InternetGetLastResponseInfoA
+#define InternetReadFileEx  InternetReadFileExA
+#define FtpFindFirstFile FtpFindFirstFileA
+#define FtpGetFile FtpGetFileA
+#define FtpPutFile FtpPutFileA
+#define FtpDeleteFile FtpDeleteFileA
+#define FtpRenameFile FtpRenameFileA
+#define FtpOpenFile FtpOpenFileA
+#define FtpCreateDirectory FtpCreateDirectoryA
+#define FtpRemoveDirectory FtpRemoveDirectoryA
+#define FtpSetCurrentDirectory FtpSetCurrentDirectoryA
+#define FtpGetCurrentDirectory FtpGetCurrentDirectoryA
+#define FtpCommand FtpCommandA
+#define GopherGetLocatorType GopherGetLocatorTypeA
+#define GopherCreateLocator GopherCreateLocatorA
+#define GopherFindFirstFile GopherFindFirstFileA
+#define GopherOpenFile GopherOpenFileA
+#define HttpSendRequest HttpSendRequestA
+#define HttpOpenRequest HttpOpenRequestA
+#define HttpAddRequestHeaders HttpAddRequestHeadersA
+#define HttpQueryInfo HttpQueryInfoA
+#define InternetSetCookie InternetSetCookieA
+#define InternetGetCookie InternetGetCookieA
+#define CreateUrlCacheEntry CreateUrlCacheEntryA
+#define RetrieveUrlCacheEntryStream RetrieveUrlCacheEntryStreamA
+#define FindNextUrlCacheEntry FindNextUrlCacheEntryA
+#define CommitUrlCacheEntry CommitUrlCacheEntryA
+#define GetUrlCacheEntryInfo GetUrlCacheEntryInfoA
+#define SetUrlCacheEntryInfo SetUrlCacheEntryInfoA
+#define FindFirstUrlCacheEntry FindFirstUrlCacheEntryA
+#define RetrieveUrlCacheEntryFile RetrieveUrlCacheEntryFileA
+#define HttpSendRequestEx	 HttpSendRequestExA
+#define HttpEndRequest		 HttpEndRequestA
+#define GetUrlCacheGroupAttribute  GetUrlCacheGroupAttributeA
+#define SetUrlCacheGroupAttribute  SetUrlCacheGroupAttributeA
+#define DeleteUrlCacheEntry  DeleteUrlCacheEntryA
+
+#endif /* UNICODE */
+#endif /* RC_INVOKED */
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/winioctl.h
===================================================================
--- Daodan/MinGW/include/winioctl.h	(revision 1046)
+++ Daodan/MinGW/include/winioctl.h	(revision 1046)
@@ -0,0 +1,278 @@
+/*
+ * winioctl.h
+ *
+ * Windows IOCTL subsystem declarations and definitions; includes some
+ * elements in common with the Windows Device Driver Kit.
+ *
+ * $Id: winioctl.h,v ed94503bab84 2016/05/04 19:34:24 keithmarshall $
+ *
+ * Written by Anders Norlander  <anorland@hem2.passagen.se>
+ * Copyright (C) 1999-2005, 2009-2011, 2015, MinGW.org Project.
+ *
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice, this permission notice, and the following
+ * disclaimer shall be included in all copies or substantial portions of
+ * the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OF OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ *
+ */
+#ifndef _WINIOCTL_H
+#define _WINIOCTL_H
+#pragma GCC system_header
+
+#define __WINIOCTL_H_SOURCED__
+
+#ifndef _WINDOWS_H
+/* FIXME: MSDN says that including <windows.h> should suffice to expose
+ * the content of this header, but this implementation does not satisfy
+ * that requirement.  Furthermore, this implementation cannot itself be
+ * included, unless <windows.h>, (or at least the content from those of
+ * its subsidiary headers which define Microsoft's peculiar, obfuscated
+ * data types), has been included first; enforce this requirement.
+ */
+#include <windows.h>
+#endif
+
+/* This file is required to provide a number of definitions which are
+ * duplicated in the Windows DDK headers; retrieve these definitions by
+ * selective inclusion from the appropriate DDK header files...
+ */
+#include <ddk/winddk.h>
+#include <ddk/ntdddisk.h>
+
+_BEGIN_C_DECLS
+
+#define HIST_NO_OF_BUCKETS		24
+#define HISTOGRAM_BUCKET_SIZE		sizeof(HISTOGRAM_BUCKET)
+#define DISK_HISTOGRAM_SIZE		sizeof(DISK_HISTOGRAM)
+
+#define IOCTL_DISK_LOGGING		CTL_CODE(IOCTL_DISK_BASE,10,METHOD_BUFFERED,FILE_ANY_ACCESS)
+#define IOCTL_DISK_HISTOGRAM_STRUCTURE	CTL_CODE(IOCTL_DISK_BASE,12,METHOD_BUFFERED,FILE_ANY_ACCESS)
+#define IOCTL_DISK_HISTOGRAM_DATA	CTL_CODE(IOCTL_DISK_BASE,13,METHOD_BUFFERED,FILE_ANY_ACCESS)
+#define IOCTL_DISK_HISTOGRAM_RESET	CTL_CODE(IOCTL_DISK_BASE,14,METHOD_BUFFERED,FILE_ANY_ACCESS)
+#define IOCTL_DISK_REQUEST_STRUCTURE	CTL_CODE(IOCTL_DISK_BASE,15,METHOD_BUFFERED,FILE_ANY_ACCESS)
+#define IOCTL_DISK_REQUEST_DATA		CTL_CODE(IOCTL_DISK_BASE,16,METHOD_BUFFERED,FILE_ANY_ACCESS)
+#define IOCTL_DISK_UPDATE_PROPERTIES	CTL_CODE(IOCTL_DISK_BASE,0x50,METHOD_BUFFERED,FILE_ANY_ACCESS)
+#define IOCTL_DISK_MEDIA_REMOVAL	CTL_CODE(IOCTL_DISK_BASE,0x201,METHOD_BUFFERED,FILE_READ_ACCESS)
+#define IOCTL_DISK_EJECT_MEDIA		CTL_CODE(IOCTL_DISK_BASE,0x202,METHOD_BUFFERED,FILE_READ_ACCESS)
+#define IOCTL_DISK_LOAD_MEDIA		CTL_CODE(IOCTL_DISK_BASE,0x203,METHOD_BUFFERED,FILE_READ_ACCESS)
+#define IOCTL_DISK_RELEASE		CTL_CODE(IOCTL_DISK_BASE,0x205,METHOD_BUFFERED,FILE_READ_ACCESS)
+#define IOCTL_DISK_REMOVE_DEVICE	CTL_CODE(IOCTL_DISK_BASE,0x207,METHOD_BUFFERED,FILE_READ_ACCESS)
+#define IOCTL_SERIAL_LSRMST_INSERT	CTL_CODE(FILE_DEVICE_SERIAL_PORT,31,METHOD_BUFFERED,FILE_ANY_ACCESS)
+
+/* FIXME: also in ddk/ntddvol.h; should be factored out.
+ */
+#define IOCTL_VOLUME_BASE   ((ULONG)('V'))
+#define IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS CTL_CODE(IOCTL_VOLUME_BASE, 0, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_VOLUME_IS_CLUSTERED	CTL_CODE(IOCTL_VOLUME_BASE, 12, 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_MOUNT_DBLS_VOLUME		CTL_CODE(FILE_DEVICE_FILE_SYSTEM,13,METHOD_BUFFERED,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_READ_COMPRESSION		CTL_CODE(FILE_DEVICE_FILE_SYSTEM,17,METHOD_NEITHER,FILE_READ_DATA)
+#define FSCTL_WRITE_COMPRESSION		CTL_CODE(FILE_DEVICE_FILE_SYSTEM,18,METHOD_NEITHER,FILE_WRITE_DATA)
+#define FSCTL_GET_NTFS_VOLUME_DATA 	CTL_CODE(FILE_DEVICE_FILE_SYSTEM,25,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_ANY_ACCESS)
+#define FSCTL_GET_REPARSE_POINT 	CTL_CODE(FILE_DEVICE_FILE_SYSTEM,42,METHOD_BUFFERED,FILE_ANY_ACCESS)
+#define FSCTL_SET_REPARSE_POINT 	CTL_CODE(FILE_DEVICE_FILE_SYSTEM,41,METHOD_BUFFERED,FILE_ANY_ACCESS)
+#define FSCTL_DELETE_REPARSE_POINT 	CTL_CODE(FILE_DEVICE_FILE_SYSTEM,43,METHOD_BUFFERED,FILE_ANY_ACCESS)
+#define FSCTL_SET_SPARSE		CTL_CODE(FILE_DEVICE_FILE_SYSTEM,49,METHOD_BUFFERED,FILE_SPECIAL_ACCESS)
+#define FSCTL_ALLOW_EXTENDED_DASD_IO 	CTL_CODE(FILE_DEVICE_FILE_SYSTEM,32,METHOD_NEITHER,FILE_ANY_ACCESS)
+
+typedef DWORD DEVICE_TYPE;
+
+enum
+{ SERIAL_LSRMST_ESCAPE		= 0,
+  SERIAL_LSRMST_LSR_DATA	= 1,
+  SERIAL_LSRMST_LSR_NODATA	= 2,
+  SERIAL_LSRMST_MST		= 3
+};
+
+enum
+{ DISK_LOGGING_START		= 0,
+  DISK_LOGGING_STOP		= 1,
+  DISK_LOGGING_DUMP		= 2,
+  DISK_BINNING			= 3
+};
+
+typedef WORD BAD_TRACK_NUMBER, *PBAD_TRACK_NUMBER;
+typedef enum _BIN_TYPES {RequestSize, RequestLocation} BIN_TYPES;
+
+typedef
+struct _BIN_RANGE
+{ LARGE_INTEGER 		StartValue;
+  LARGE_INTEGER 		Length;
+} BIN_RANGE, *PBIN_RANGE;
+
+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;
+
+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;
+
+typedef
+struct DiskQuotaUserInformation
+{ LONGLONG			QuotaUsed;
+  LONGLONG			QuotaThreshold;
+  LONGLONG			QuotaLimit;
+} DISKQUOTA_USER_INFORMATION, *PDISKQUOTA_USER_INFORMATION;
+
+typedef
+struct _HISTOGRAM_BUCKET
+{ DWORD 			Reads;
+  DWORD 			Writes;
+} HISTOGRAM_BUCKET, *PHISTOGRAM_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;
+
+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;
+
+typedef
+struct _DRIVE_LAYOUT_INFORMATION
+{ DWORD 			PartitionCount;
+  DWORD 			Signature;
+  PARTITION_INFORMATION 	PartitionEntry[1];
+} DRIVE_LAYOUT_INFORMATION, *PDRIVE_LAYOUT_INFORMATION;
+
+typedef
+struct _DRIVE_LAYOUT_INFORMATION_EX
+{ DWORD 				PartitionStyle;
+  DWORD 				PartitionCount;
+  _ANONYMOUS_UNION 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 struct
+{ HANDLE FileHandle;
+  LARGE_INTEGER 		StartingVcn;
+  LARGE_INTEGER 		StartingLcn;
+  DWORD 			ClusterCount;
+} MOVE_FILE_DATA, *PMOVE_FILE_DATA;
+
+typedef
+struct _PERF_BIN
+{ DWORD 			NumberOfBins;
+  DWORD 			TypeOfBin;
+  BIN_RANGE			BinsRanges[1];
+} PERF_BIN, *PPERF_BIN;
+
+typedef
+struct _PREVENT_MEDIA_REMOVAL
+{ BOOLEAN			PreventMediaRemoval;
+} PREVENT_MEDIA_REMOVAL, *PPREVENT_MEDIA_REMOVAL;
+
+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 		StartingLcn;
+} STARTING_LCN_INPUT_BUFFER, *PSTARTING_LCN_INPUT_BUFFER;
+
+typedef struct
+{ LARGE_INTEGER 		StartingVcn;
+} STARTING_VCN_INPUT_BUFFER, *PSTARTING_VCN_INPUT_BUFFER;
+
+typedef struct
+{ LARGE_INTEGER 		StartingLcn;
+  LARGE_INTEGER 		BitmapSize;
+  BYTE				Buffer[1];
+} VOLUME_BITMAP_BUFFER, *PVOLUME_BITMAP_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;
+
+_END_C_DECLS
+
+#undef __WINIOCTL_H_SOURCED__
+#endif  /* _WINIOCTL_H: $RCSfile: winioctl.h,v $: end of file */
Index: Daodan/MinGW/include/winldap.h
===================================================================
--- Daodan/MinGW/include/winldap.h	(revision 1046)
+++ Daodan/MinGW/include/winldap.h	(revision 1046)
@@ -0,0 +1,713 @@
+/*
+  winldap.h - Header file for the Windows LDAP API
+
+  Written by Filip Navara <xnavara@volny.cz>
+
+  References:
+    The C LDAP Application Program Interface
+    http://www.watersprings.org/pub/id/draft-ietf-ldapext-ldap-c-api-05.txt
+
+    Lightweight Directory Access Protocol Reference
+    http://msdn.microsoft.com/library/en-us/netdir/ldap/ldap_reference.asp
+
+  This library is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+*/
+
+#ifndef _WINLDAP_H
+#define _WINLDAP_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#ifndef _SCHANNEL_H
+#include <schannel.h>
+#endif
+
+#ifndef _WINBER_H
+#include <winber.h>
+#endif
+
+#ifndef WINLDAPAPI
+#define WINLDAPAPI DECLSPEC_IMPORT
+#endif
+
+#ifndef _WINLDAP_DEPRECATED
+#if (( __GNUC__ == 3 && __GNUC_MINOR__ > 0 ) || __GNUC__ > 3)
+#define _WINLDAP_DEPRECATED __attribute__((__deprecated__))
+#else
+#define _WINLDAP_DEPRECATED
+#endif
+#endif
+
+#include <pshpack4.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define LDAP_VERSION1	1
+#define LDAP_VERSION2	2
+#define LDAP_VERSION3	3
+#define LDAP_VERSION	LDAP_VERSION2
+#define LDAP_API_VERSION	2004
+#define LDAP_VERSION_MIN	LDAP_VERSION2
+#define LDAP_VERSION_MAX	LDAP_VERSION3
+#define LDAP_VENDOR_NAME	"Microsoft Corporation."
+#define LDAP_VENDOR_NAME_W	L"Microsoft Corporation."
+#define LDAP_VENDOR_VERSION	510
+#define LDAP_API_INFO_VERSION	1
+#define LDAP_FEATURE_INFO_VERSION	1
+#define LDAP_SUCCESS	0x00
+#define LDAP_OPERATIONS_ERROR	0x01
+#define LDAP_PROTOCOL_ERROR	0x02
+#define LDAP_TIMELIMIT_EXCEEDED	0x03
+#define LDAP_SIZELIMIT_EXCEEDED	0x04
+#define LDAP_COMPARE_FALSE	0x05
+#define LDAP_COMPARE_TRUE	0x06
+#define LDAP_STRONG_AUTH_NOT_SUPPORTED	0x07
+#define LDAP_STRONG_AUTH_REQUIRED	0x08
+#define LDAP_REFERRAL_V2	0x09
+#define LDAP_REFERRAL	0x0a
+#define LDAP_ADMIN_LIMIT_EXCEEDED	0x0b
+#define LDAP_UNAVAILABLE_CRIT_EXTENSION	0x0c
+#define LDAP_CONFIDENTIALITY_REQUIRED	0x0d
+#define LDAP_SASL_BIND_IN_PROGRESS	0x0e
+#define LDAP_NO_SUCH_ATTRIBUTE	0x10
+#define LDAP_UNDEFINED_TYPE	0x11
+#define LDAP_INAPPROPRIATE_MATCHING	0x12
+#define LDAP_CONSTRAINT_VIOLATION	0x13
+#define LDAP_TYPE_OR_VALUE_EXISTS	0x14
+#define LDAP_INVALID_SYNTAX	0x15
+#define LDAP_NO_SUCH_OBJECT	0x20
+#define LDAP_ALIAS_PROBLEM	0x21
+#define LDAP_INVALID_DN_SYNTAX	0x22
+#define LDAP_IS_LEAF	0x23
+#define LDAP_ALIAS_DEREF_PROBLEM	0x24
+#define LDAP_INAPPROPRIATE_AUTH	0x30
+#define LDAP_INVALID_CREDENTIALS	0x31
+#define LDAP_INSUFFICIENT_ACCESS	0x32
+#define LDAP_BUSY	0x33
+#define LDAP_UNAVAILABLE	0x34
+#define LDAP_UNWILLING_TO_PERFORM	0x35
+#define LDAP_LOOP_DETECT	0x36
+#define LDAP_NAMING_VIOLATION	0x40
+#define LDAP_OBJECT_CLASS_VIOLATION	0x41
+#define LDAP_NOT_ALLOWED_ON_NONLEAF	0x42
+#define LDAP_NOT_ALLOWED_ON_RDN	0x43
+#define LDAP_ALREADY_EXISTS	0x44
+#define LDAP_NO_OBJECT_CLASS_MODS	0x45
+#define LDAP_RESULTS_TOO_LARGE	0x46
+#define LDAP_AFFECTS_MULTIPLE_DSAS	0x47
+#define LDAP_OTHER	0x50
+#define LDAP_SERVER_DOWN	0x51
+#define LDAP_LOCAL_ERROR	0x52
+#define LDAP_ENCODING_ERROR	0x53
+#define LDAP_DECODING_ERROR	0x54
+#define LDAP_TIMEOUT	0x55
+#define LDAP_AUTH_UNKNOWN	0x56
+#define LDAP_FILTER_ERROR	0x57
+#define LDAP_USER_CANCELLED	0x58
+#define LDAP_PARAM_ERROR	0x59
+#define LDAP_NO_MEMORY	0x5a
+#define LDAP_CONNECT_ERROR	0x5b
+#define LDAP_NOT_SUPPORTED	0x5c
+#define LDAP_CONTROL_NOT_FOUND	0x5d
+#define LDAP_NO_RESULTS_RETURNED	0x5e
+#define LDAP_MORE_RESULTS_TO_RETURN	0x5f
+#define LDAP_CLIENT_LOOP	0x60
+#define LDAP_REFERRAL_LIMIT_EXCEEDED	0x61
+#define LDAP_OPT_SUCCESS	LDAP_SUCCESS
+#define LDAP_AUTH_METHOD_NOT_SUPPORTED	LDAP_STRONG_AUTH_NOT_SUPPORTED
+#define LDAP_ATTRIBUTE_OR_VALUE_EXISTS	LDAP_TYPE_OR_VALUE_EXISTS
+#define LDAP_INSUFFICIENT_RIGHTS	LDAP_INSUFFICIENT_ACCESS
+#define LDAP_PARTIAL_RESULTS	LDAP_REFERRAL_V2
+#define LDAP_PORT	389
+#define LDAP_SSL_PORT	636
+#define LDAP_GC_PORT	3268
+#define LDAP_SSL_GC_PORT	3269
+#define LDAP_OPT_ON	((void*)1)
+#define LDAP_OPT_OFF	((void*)0)
+#define LDAP_OPT_API_INFO	0x00
+#define LDAP_OPT_DESC	0x01
+#define LDAP_OPT_DEREF	0x02
+#define LDAP_OPT_SIZELIMIT	0x03
+#define LDAP_OPT_TIMELIMIT	0x04
+#define LDAP_OPT_THREAD_FN_PTRS	0x05
+#define LDAP_OPT_REBIND_FN	0x06
+#define LDAP_OPT_REBIND_ARG	0x07
+#define LDAP_OPT_REFERRALS	0x08
+#define LDAP_OPT_RESTART	0x09
+#define LDAP_OPT_SSL	0x0a
+#define LDAP_OPT_IO_FN_PTRS	0x0b
+#define LDAP_OPT_CACHE_FN_PTRS	0x0d
+#define LDAP_OPT_CACHE_STRATEGY	0x0e
+#define LDAP_OPT_CACHE_ENABLE	0x0f
+#define LDAP_OPT_REFERRAL_HOP_LIMIT	0x10
+#define LDAP_OPT_PROTOCOL_VERSION	0x11
+#define LDAP_OPT_SERVER_CONTROLS	0x12
+#define LDAP_OPT_CLIENT_CONTROLS	0x13
+#define LDAP_OPT_API_FEATURE_INFO	0x15
+#define LDAP_OPT_HOST_NAME	0x30
+#define LDAP_OPT_ERROR_NUMBER	0x31
+#define LDAP_OPT_ERROR_STRING	0x32
+#define LDAP_OPT_SERVER_ERROR	0x33
+#define LDAP_OPT_SERVER_EXT_ERROR	0x34
+#define LDAP_OPT_PING_KEEP_ALIVE	0x36
+#define LDAP_OPT_PING_WAIT_TIME	0x37
+#define LDAP_OPT_PING_LIMIT	0x38
+#define LDAP_OPT_DNSDOMAIN_NAME	0x3b
+#define LDAP_OPT_GETDSNAME_FLAGS	0x3d
+#define LDAP_OPT_HOST_REACHABLE	0x3e
+#define LDAP_OPT_PROMPT_CREDENTIALS	0x3f
+#define LDAP_OPT_TCP_KEEPALIVE	0x40
+#define LDAP_OPT_REFERRAL_CALLBACK	0x70
+#define LDAP_OPT_CLIENT_CERTIFICATE	0x80
+#define LDAP_OPT_SERVER_CERTIFICATE	0x81
+#define LDAP_OPT_AUTO_RECONNECT	0x91
+#define LDAP_OPT_SSPI_FLAGS	0x92
+#define LDAP_OPT_SSL_INFO	0x93
+#define LDAP_OPT_REF_DEREF_CONN_PER_MSG	0x94
+#define LDAP_OPT_SIGN	0x95
+#define LDAP_OPT_ENCRYPT	0x96
+#define LDAP_OPT_SASL_METHOD	0x97
+#define LDAP_OPT_AREC_EXCLUSIVE	0x98
+#define LDAP_OPT_SECURITY_CONTEXT	0x99
+#define LDAP_OPT_ROOTDSE_CACHE	0x9a
+#define LDAP_OPT_VERSION	LDAP_OPT_PROTOCOL_VERSION
+#define LDAP_OPT_TLS	LDAP_OPT_SSL
+#define LDAP_OPT_TLS_INFO	LDAP_OPT_SSL_INFO
+#define LDAP_DEREF_NEVER	0x00
+#define LDAP_DEREF_SEARCHING	0x01
+#define LDAP_DEREF_FINDING	0x02
+#define LDAP_DEREF_ALWAYS	0x03
+#define LDAP_NO_LIMIT	0
+#define LDAP_CONTROL_REFERRALS	"1.2.840.113556.1.4.616"
+#define LDAP_CONTROL_REFERRALS_W	L"1.2.840.113556.1.4.616"
+#define LDAP_CHASE_SUBORDINATE_REFERRALS	0x20U
+#define LDAP_CHASE_EXTERNAL_REFERRALS	0x40U
+#define LDAP_SCOPE_DEFAULT	-1
+#define LDAP_SCOPE_BASE	0x0000
+#define LDAP_SCOPE_ONELEVEL	0x0001
+#define LDAP_SCOPE_SUBTREE	0x0002
+#define LDAP_MOD_ADD	0x00
+#define LDAP_MOD_DELETE	0x01
+#define LDAP_MOD_REPLACE	0x02
+#define LDAP_MOD_BVALUES	0x80
+#define LDAP_RES_BIND	0x61
+#define LDAP_RES_SEARCH_ENTRY	0x64
+#define LDAP_RES_SEARCH_RESULT	0x65
+#define LDAP_RES_MODIFY	0x67
+#define LDAP_RES_ADD	0x69
+#define LDAP_RES_DELETE	0x6b
+#define LDAP_RES_MODRDN	0x6d
+#define LDAP_RES_COMPARE	0x6f
+#define LDAP_RES_SEARCH_REFERENCE	0x73
+#define LDAP_RES_EXTENDED	0x78
+#define LDAP_RES_ANY	(-1L)
+#define LDAP_MSG_ONE	0x00
+#define LDAP_MSG_ALL	0x01
+#define LDAP_MSG_RECEIVED	0x02
+#define LDAP_SERVER_SORT_OID	"1.2.840.113556.1.4.473"
+#define LDAP_SERVER_SORT_OID_W	L"1.2.840.113556.1.4.473"
+#define LDAP_SERVER_RESP_SORT_OID	"1.2.840.113556.1.4.474"
+#define LDAP_SERVER_RESP_SORT_OID_W	L"1.2.840.113556.1.4.474"
+#define LDAP_PAGED_RESULT_OID_STRING	"1.2.840.113556.1.4.319"
+#define LDAP_PAGED_RESULT_OID_STRING_W	L"1.2.840.113556.1.4.319"
+#define LDAP_CONTROL_VLVREQUEST	"2.16.840.1.113730.3.4.9"
+#define LDAP_CONTROL_VLVREQUEST_W	L"2.16.840.1.113730.3.4.9"
+#define LDAP_CONTROL_VLVRESPONSE	"2.16.840.1.113730.3.4.10"
+#define LDAP_CONTROL_VLVRESPONSE_W	L"2.16.840.1.113730.3.4.10"
+#define LDAP_START_TLS_OID	"1.3.6.1.4.1.1466.20037"
+#define LDAP_START_TLS_OID_W	L"1.3.6.1.4.1.1466.20037"
+#define LDAP_TTL_EXTENDED_OP_OID	"1.3.6.1.4.1.1466.101.119.1"
+#define LDAP_TTL_EXTENDED_OP_OID_W	L"1.3.6.1.4.1.1466.101.119.1"
+#define LDAP_AUTH_NONE	0x00U
+#define LDAP_AUTH_SIMPLE	0x80U
+#define LDAP_AUTH_SASL	0x83U
+#define LDAP_AUTH_OTHERKIND	0x86U
+#define LDAP_AUTH_EXTERNAL	(LDAP_AUTH_OTHERKIND | 0x20U)
+#define LDAP_AUTH_SICILY	(LDAP_AUTH_OTHERKIND | 0x200U)
+#define LDAP_AUTH_NEGOTIATE	(LDAP_AUTH_OTHERKIND | 0x400U)
+#define LDAP_AUTH_MSN	(LDAP_AUTH_OTHERKIND | 0x800U)
+#define LDAP_AUTH_NTLM	(LDAP_AUTH_OTHERKIND | 0x1000U)
+#define LDAP_AUTH_DIGEST	(LDAP_AUTH_OTHERKIND | 0x4000U)
+#define LDAP_AUTH_DPA	(LDAP_AUTH_OTHERKIND | 0x2000U)
+#define LDAP_AUTH_SSPI	LDAP_AUTH_NEGOTIATE
+#define LDAP_FILTER_AND	0xa0
+#define LDAP_FILTER_OR	0xa1
+#define LDAP_FILTER_NOT	0xa2
+#define LDAP_FILTER_EQUALITY	0xa3
+#define LDAP_FILTER_SUBSTRINGS	0xa4
+#define LDAP_FILTER_GE	0xa5
+#define LDAP_FILTER_LE	0xa6
+#define LDAP_FILTER_APPROX	0xa8
+#define LDAP_FILTER_EXTENSIBLE	0xa9
+#define LDAP_FILTER_PRESENT	0x87
+#define LDAP_SUBSTRING_INITIAL	0x80
+#define LDAP_SUBSTRING_ANY	0x81
+#define LDAP_SUBSTRING_FINAL	0x82
+
+typedef struct ldap {
+	char Reserved[76];
+	PCHAR ld_host;
+	ULONG ld_version;
+	UCHAR ld_lberoptions;
+	int ld_deref;
+	int ld_timelimit;
+	int ld_sizelimit;
+	int ld_errno;
+	PCHAR ld_matched;
+	PCHAR ld_error;
+} LDAP, *PLDAP;
+typedef struct ldapmsg {
+	ULONG lm_msgid;
+	ULONG lm_msgtype;
+	BerElement *lm_ber;
+	struct ldapmsg *lm_chain;
+	struct ldapmsg *lm_next;
+	ULONG lm_time;
+} LDAPMessage, *PLDAPMessage;
+typedef struct l_timeval {
+	LONG tv_sec;
+	LONG tv_usec;
+} LDAP_TIMEVAL, *PLDAP_TIMEVAL;
+typedef struct ldapapiinfoA {
+	int ldapai_info_version;
+	int ldapai_api_version;
+	int ldapai_protocol_version;
+	char **ldapai_extensions;
+	char *ldapai_vendor_name;
+	int ldapai_vendor_version;
+} LDAPAPIInfoA, *PLDAPAPIInfoA;
+typedef struct ldapapiinfoW {
+	int ldapai_info_version;
+	int ldapai_api_version;
+	int ldapai_protocol_version;
+	PWCHAR *ldapai_extensions;
+	PWCHAR ldapai_vendor_name;
+	int ldapai_vendor_version;
+} LDAPAPIInfoW, *PLDAPAPIInfoW;
+typedef struct ldap_apifeature_infoA {
+	int ldapaif_info_version;
+	char *ldapaif_name;
+	int ldapaif_version;
+} LDAPAPIFeatureInfoA, *PLDAPAPIFeatureInfoA;
+typedef struct ldap_apifeature_infoW {
+	int ldapaif_info_version;
+	PWCHAR ldapaif_name;
+	int ldapaif_version;
+} LDAPAPIFeatureInfoW, *PLDAPAPIFeatureInfoW;
+typedef struct ldapcontrolA {
+	PCHAR ldctl_oid;
+	BerValue ldctl_value;
+	BOOLEAN ldctl_iscritical;
+} LDAPControlA, *PLDAPControlA;
+typedef struct ldapcontrolW {
+	PWCHAR ldctl_oid;
+	BerValue ldctl_value;
+	BOOLEAN ldctl_iscritical;
+} LDAPControlW, *PLDAPControlW;
+typedef union mod_vals_uA {
+	PCHAR *modv_strvals;
+	BerValue **modv_bvals;
+} mod_vals_u_tA;
+typedef union mod_vals_uW {
+	PWCHAR *modv_strvals;
+	BerValue **modv_bvals;
+} mod_vals_u_tW;
+typedef struct ldapmodA {
+	ULONG mod_op;
+	PCHAR mod_type;
+	mod_vals_u_tA mod_vals;
+} LDAPModA, *PLDAPModA;
+typedef struct ldapmodW {
+	ULONG mod_op;
+	PWCHAR mod_type;
+	mod_vals_u_tW mod_vals;
+} LDAPModW, *PLDAPModW;
+
+#define mod_values      mod_vals.modv_strvals
+#define mod_bvalues     mod_vals.modv_bvals
+
+typedef struct ldapsearch LDAPSearch, *PLDAPSearch;
+typedef struct ldapsortkeyA {
+	PCHAR sk_attrtype;
+	PCHAR sk_matchruleoid;
+	BOOLEAN sk_reverseorder;
+} LDAPSortKeyA, *PLDAPSortKeyA;
+typedef struct ldapsortkeyW {
+	PWCHAR sk_attrtype;
+	PWCHAR sk_matchruleoid;
+	BOOLEAN sk_reverseorder;
+} LDAPSortKeyW, *PLDAPSortKeyW;
+typedef ULONG (__cdecl QUERYFORCONNECTION)(PLDAP,PLDAP,PWCHAR,PCHAR,ULONG,PVOID,PVOID,PLDAP*);
+typedef BOOLEAN (__cdecl NOTIFYOFNEWCONNECTION)(PLDAP,PLDAP,PWCHAR,PCHAR,PLDAP,ULONG,PVOID,PVOID,ULONG);
+typedef ULONG (__cdecl DEREFERENCECONNECTION)(PLDAP,PLDAP);
+typedef BOOLEAN (__cdecl QUERYCLIENTCERT)(PLDAP,PSecPkgContext_IssuerListInfoEx,PCCERT_CONTEXT*);
+typedef struct LdapReferralCallback {
+	ULONG SizeOfCallbacks;
+	QUERYFORCONNECTION *QueryForConnection;
+	NOTIFYOFNEWCONNECTION *NotifyRoutine;
+	DEREFERENCECONNECTION *DereferenceRoutine;
+} LDAP_REFERRAL_CALLBACK, *PLDAP_REFERRAL_CALLBACK;
+typedef struct ldapvlvinfo {
+	int ldvlv_version;
+	unsigned long ldvlv_before_count;
+	unsigned long ldvlv_after_count;
+	unsigned long ldvlv_offset;
+	unsigned long ldvlv_count;
+	BerValue *ldvlv_attrvalue;
+	BerValue *ldvlv_context;
+	void *ldvlv_extradata;
+} LDAPVLVInfo;
+
+/*
+ * Under Microsoft WinLDAP the function ldap_error is only stub.
+ * This macro uses LDAP structure to get error string and pass it to the user.
+ */
+#define ldap_perror(handle,message) printf("%s: %s\n", message, handle->ld_error);
+
+WINLDAPAPI PLDAP ldap_initA(PCHAR,ULONG);
+WINLDAPAPI PLDAP ldap_initW(PWCHAR,ULONG);
+WINLDAPAPI PLDAP ldap_openA(const PCHAR,ULONG);
+WINLDAPAPI PLDAP ldap_openW(const PWCHAR,ULONG);
+WINLDAPAPI PLDAP cldap_openA(const PCHAR,ULONG);
+WINLDAPAPI PLDAP cldap_openW(const PWCHAR,ULONG);
+WINLDAPAPI ULONG ldap_connect(LDAP*,struct l_timeval*);
+WINLDAPAPI PLDAP ldap_sslinitA(PCHAR,ULONG,int);
+WINLDAPAPI PLDAP ldap_sslinitW(PWCHAR,ULONG,int);
+WINLDAPAPI ULONG ldap_start_tls_sA(LDAP*,PLDAPControlA*,PLDAPControlA*);
+WINLDAPAPI ULONG ldap_start_tls_sW(LDAP*,PLDAPControlW*,PLDAPControlW*);
+WINLDAPAPI BOOLEAN ldap_stop_tls_s(LDAP*);
+WINLDAPAPI ULONG ldap_get_optionA(LDAP*,int,void*);
+WINLDAPAPI ULONG ldap_get_optionW(LDAP*,int,void*);
+WINLDAPAPI ULONG ldap_set_optionA(LDAP*,int,const void*);
+WINLDAPAPI ULONG ldap_set_optionW(LDAP*,int,const void*);
+WINLDAPAPI ULONG ldap_control_freeA(LDAPControlA*);
+WINLDAPAPI ULONG ldap_control_freeW(LDAPControlW*);
+WINLDAPAPI ULONG ldap_controls_freeA(LDAPControlA**);
+WINLDAPAPI ULONG ldap_controls_freeW(LDAPControlW**);
+WINLDAPAPI ULONG ldap_free_controlsA(LDAPControlA**);
+WINLDAPAPI ULONG ldap_free_controlsW(LDAPControlW**);
+WINLDAPAPI ULONG ldap_sasl_bindA(LDAP*,const PCHAR, const PCHAR,const BERVAL*,PLDAPControlA*,PLDAPControlA*,int*);
+WINLDAPAPI ULONG ldap_sasl_bindW(LDAP*,const PWCHAR, const PWCHAR,const BERVAL*,PLDAPControlW*,PLDAPControlW*,int*);
+WINLDAPAPI ULONG ldap_sasl_bind_sA(LDAP*,const PCHAR,const PCHAR,const BERVAL*,PLDAPControlA*,PLDAPControlA*,PBERVAL*);
+WINLDAPAPI ULONG ldap_sasl_bind_sW(LDAP*,const PWCHAR,const PWCHAR,const BERVAL*,PLDAPControlW*,PLDAPControlW*,PBERVAL*);
+WINLDAPAPI ULONG ldap_simple_bindA(LDAP*,const PCHAR,const PCHAR);
+WINLDAPAPI ULONG ldap_simple_bindW(LDAP*,const PWCHAR,const PWCHAR);
+WINLDAPAPI ULONG ldap_simple_bind_sA(LDAP*,const PCHAR,const PCHAR);
+WINLDAPAPI ULONG ldap_simple_bind_sW(LDAP*,const PWCHAR,const PWCHAR);
+WINLDAPAPI ULONG ldap_bindA(LDAP*,const PCHAR,const PCHAR,ULONG) _WINLDAP_DEPRECATED;
+WINLDAPAPI ULONG ldap_bindW(LDAP*,const PWCHAR,const PWCHAR,ULONG) _WINLDAP_DEPRECATED;
+WINLDAPAPI ULONG ldap_bind_sA(LDAP*,const PCHAR,const PCHAR,ULONG) _WINLDAP_DEPRECATED;
+WINLDAPAPI ULONG ldap_bind_sW(LDAP*,const PWCHAR,const PWCHAR,ULONG) _WINLDAP_DEPRECATED;
+WINLDAPAPI ULONG ldap_unbind(LDAP*);
+WINLDAPAPI ULONG ldap_unbind_s(LDAP*);
+WINLDAPAPI ULONG ldap_search_extA(LDAP*,const PCHAR,ULONG,const PCHAR,PCHAR[],ULONG,PLDAPControlW*,PLDAPControlW*,ULONG,ULONG,ULONG*);
+WINLDAPAPI ULONG ldap_search_extW(LDAP*,const PWCHAR,ULONG,const PWCHAR,PWCHAR[],ULONG,PLDAPControlW*,PLDAPControlW*,ULONG,ULONG,ULONG*);
+WINLDAPAPI ULONG ldap_search_ext_sA(LDAP*,const PCHAR,ULONG,const PCHAR,PCHAR[],ULONG,PLDAPControlA*,PLDAPControlA*,struct l_timeval*,ULONG,LDAPMessage**);
+WINLDAPAPI ULONG ldap_search_ext_sW(LDAP*,const PWCHAR,ULONG,const PWCHAR,PWCHAR[],ULONG,PLDAPControlW*,PLDAPControlW*,struct l_timeval*,ULONG,LDAPMessage**);
+WINLDAPAPI ULONG ldap_searchA(LDAP*,const PCHAR,ULONG,const PCHAR,PCHAR[],ULONG);
+WINLDAPAPI ULONG ldap_searchW(LDAP*,const PWCHAR,ULONG,const PWCHAR,PWCHAR[],ULONG);
+WINLDAPAPI ULONG ldap_search_sA(LDAP*,const PCHAR,ULONG,const PCHAR,PCHAR[],ULONG,LDAPMessage**);
+WINLDAPAPI ULONG ldap_search_sW(LDAP*,const PWCHAR,ULONG,const PWCHAR,PWCHAR[],ULONG,LDAPMessage**);
+WINLDAPAPI ULONG ldap_search_stA(LDAP*,const PCHAR,ULONG,const PCHAR,PCHAR[],ULONG,struct l_timeval*,LDAPMessage**);
+WINLDAPAPI ULONG ldap_search_stW(LDAP*,const PWCHAR,ULONG,const PWCHAR,PWCHAR[],ULONG,struct l_timeval*,LDAPMessage**);
+WINLDAPAPI ULONG ldap_compare_extA(LDAP*,const PCHAR,const PCHAR,PCHAR,struct berval*,PLDAPControlA*,PLDAPControlA*,ULONG*);
+WINLDAPAPI ULONG ldap_compare_extW(LDAP*,const PWCHAR,const PWCHAR,PWCHAR,struct berval*,PLDAPControlW*,PLDAPControlW*,ULONG*);
+WINLDAPAPI ULONG ldap_compare_ext_sA(LDAP*,const PCHAR,const PCHAR,const PCHAR,struct berval*,PLDAPControlA*,PLDAPControlA*);
+WINLDAPAPI ULONG ldap_compare_ext_sW(LDAP*,const PWCHAR,const PWCHAR,const PWCHAR,struct berval*,PLDAPControlW*,PLDAPControlW*);
+WINLDAPAPI ULONG ldap_compareA(LDAP*,const PCHAR,const PCHAR,PCHAR);
+WINLDAPAPI ULONG ldap_compareW(LDAP*,const PWCHAR,const PWCHAR,PWCHAR);
+WINLDAPAPI ULONG ldap_compare_sA(LDAP*,const PCHAR,const PCHAR,PCHAR);
+WINLDAPAPI ULONG ldap_compare_sW(LDAP*,const PWCHAR,const PWCHAR,PWCHAR);
+WINLDAPAPI ULONG ldap_modify_extA(LDAP*,const PCHAR,LDAPModA*[],PLDAPControlA*,PLDAPControlA*,ULONG*);
+WINLDAPAPI ULONG ldap_modify_extW(LDAP*,const PWCHAR,LDAPModW*[],PLDAPControlW*,PLDAPControlW*,ULONG*);
+WINLDAPAPI ULONG ldap_modify_ext_sA(LDAP*,const PCHAR,LDAPModA*[],PLDAPControlA*,PLDAPControlA*);
+WINLDAPAPI ULONG ldap_modify_ext_sW(LDAP*,const PWCHAR,LDAPModW*[],PLDAPControlW*,PLDAPControlW*);
+WINLDAPAPI ULONG ldap_modifyA(LDAP*,const PCHAR,LDAPModA*[]);
+WINLDAPAPI ULONG ldap_modifyW(LDAP*,const PWCHAR,LDAPModW*[]);
+WINLDAPAPI ULONG ldap_modify_sA(LDAP*,const PCHAR,LDAPModA*[]);
+WINLDAPAPI ULONG ldap_modify_sW(LDAP*,const PWCHAR,LDAPModW*[]);
+WINLDAPAPI ULONG ldap_rename_extA(LDAP*,const PCHAR,const PCHAR,const PCHAR,INT,PLDAPControlA*,PLDAPControlA*,ULONG*);
+WINLDAPAPI ULONG ldap_rename_extW(LDAP*,const PWCHAR,const PWCHAR,const PWCHAR,INT,PLDAPControlW*,PLDAPControlW*,ULONG*);
+WINLDAPAPI ULONG ldap_rename_ext_sA(LDAP*,const PCHAR,const PCHAR,const PCHAR,INT,PLDAPControlA*,PLDAPControlA*);
+WINLDAPAPI ULONG ldap_rename_ext_sW(LDAP*,const PWCHAR,const PWCHAR,const PWCHAR,INT,PLDAPControlW*,PLDAPControlW*);
+WINLDAPAPI ULONG ldap_modrdnA(LDAP*,PCHAR,PCHAR) _WINLDAP_DEPRECATED;
+WINLDAPAPI ULONG ldap_modrdnW(LDAP*,PWCHAR,PWCHAR) _WINLDAP_DEPRECATED;
+WINLDAPAPI ULONG ldap_modrdn_sA(LDAP*,PCHAR,PCHAR) _WINLDAP_DEPRECATED;
+WINLDAPAPI ULONG ldap_modrdn_sW(LDAP*,PWCHAR,PWCHAR) _WINLDAP_DEPRECATED;
+WINLDAPAPI ULONG ldap_modrdn2A(LDAP*,PCHAR,PCHAR,INT) _WINLDAP_DEPRECATED;
+WINLDAPAPI ULONG ldap_modrdn2W(LDAP*,PWCHAR,PWCHAR,INT) _WINLDAP_DEPRECATED;
+WINLDAPAPI ULONG ldap_modrdn2_sA(LDAP*,PCHAR,PCHAR,INT) _WINLDAP_DEPRECATED;
+WINLDAPAPI ULONG ldap_modrdn2_sW(LDAP*,PWCHAR,PWCHAR,INT) _WINLDAP_DEPRECATED;
+WINLDAPAPI ULONG ldap_add_extA(LDAP*,const PCHAR,LDAPModA*[],PLDAPControlA*,PLDAPControlA*,ULONG*);
+WINLDAPAPI ULONG ldap_add_extW(LDAP*,const PWCHAR,LDAPModW*[],PLDAPControlW*,PLDAPControlW*,ULONG*);
+WINLDAPAPI ULONG ldap_add_ext_sA(LDAP*,const PCHAR,LDAPModA*[],PLDAPControlA*,PLDAPControlA*);
+WINLDAPAPI ULONG ldap_add_ext_sW(LDAP*,const PWCHAR,LDAPModW*[],PLDAPControlW*,PLDAPControlW*);
+WINLDAPAPI ULONG ldap_addA(LDAP*,const PCHAR,LDAPModA*[]);
+WINLDAPAPI ULONG ldap_addW(LDAP*,const PWCHAR,LDAPModW*[]);
+WINLDAPAPI ULONG ldap_add_sA(LDAP*,const PCHAR,LDAPModA*[]);
+WINLDAPAPI ULONG ldap_add_sW(LDAP*,const PWCHAR,LDAPModW*[]);
+WINLDAPAPI ULONG ldap_delete_extA(LDAP*,const PCHAR,PLDAPControlA*,PLDAPControlA*,ULONG*);
+WINLDAPAPI ULONG ldap_delete_extW(LDAP*,const PWCHAR,PLDAPControlW*,PLDAPControlW*,ULONG*);
+WINLDAPAPI ULONG ldap_delete_ext_sA(LDAP*,const PCHAR,PLDAPControlA*,PLDAPControlA*);
+WINLDAPAPI ULONG ldap_delete_ext_sW(LDAP*,const PWCHAR,PLDAPControlW*,PLDAPControlW*);
+WINLDAPAPI ULONG ldap_deleteA(LDAP*,const PCHAR);
+WINLDAPAPI ULONG ldap_deleteW(LDAP*,const PWCHAR);
+WINLDAPAPI ULONG ldap_delete_sA(LDAP*,const PCHAR);
+WINLDAPAPI ULONG ldap_delete_sW(LDAP*,const PWCHAR);
+WINLDAPAPI ULONG ldap_extended_operationA(LDAP*,const PCHAR,const struct berval*,PLDAPControlA*,PLDAPControlA*,ULONG*);
+WINLDAPAPI ULONG ldap_extended_operationW(LDAP*,const PWCHAR,const struct berval*,PLDAPControlW*,PLDAPControlW*,ULONG*);
+WINLDAPAPI ULONG ldap_extended_operation_sA(LDAP*,const PCHAR,const struct berval*,PLDAPControlA*,PLDAPControlA*,PCHAR*,struct berval**);
+WINLDAPAPI ULONG ldap_extended_operation_sW(LDAP*,const PWCHAR,const struct berval*,PLDAPControlW*,PLDAPControlW*,PWCHAR*,struct berval**);
+WINLDAPAPI ULONG ldap_close_extended_op(LDAP*,ULONG);
+WINLDAPAPI ULONG ldap_abandon(LDAP*,ULONG);
+WINLDAPAPI ULONG ldap_result(LDAP*,ULONG,ULONG,struct l_timeval*,LDAPMessage**);
+WINLDAPAPI ULONG ldap_msgfree(LDAPMessage*);
+WINLDAPAPI ULONG ldap_parse_resultA(LDAP*,LDAPMessage*,ULONG*,PCHAR*,PCHAR*,PCHAR**,PLDAPControlA**,BOOLEAN);
+WINLDAPAPI ULONG ldap_parse_resultW(LDAP*,LDAPMessage*,ULONG*,PWCHAR*,PWCHAR*,PWCHAR**,PLDAPControlW**,BOOLEAN);
+WINLDAPAPI ULONG ldap_parse_extended_resultA(LDAP,LDAPMessage*,PCHAR*,struct berval**,BOOLEAN);
+WINLDAPAPI ULONG ldap_parse_extended_resultW(LDAP,LDAPMessage*,PWCHAR*,struct berval**,BOOLEAN);
+WINLDAPAPI PCHAR ldap_err2stringA(ULONG);
+WINLDAPAPI PWCHAR ldap_err2stringW(ULONG);
+WINLDAPAPI ULONG LdapGetLastError(void);
+WINLDAPAPI ULONG LdapMapErrorToWin32(ULONG);
+WINLDAPAPI ULONG ldap_result2error(LDAP*,LDAPMessage*,ULONG);
+WINLDAPAPI PLDAPMessage ldap_first_entry(LDAP*,LDAPMessage*);
+WINLDAPAPI PLDAPMessage ldap_next_entry(LDAP*,LDAPMessage*);
+WINLDAPAPI PLDAPMessage ldap_first_reference(LDAP*,LDAPMessage*);
+WINLDAPAPI PLDAPMessage ldap_next_reference(LDAP*,LDAPMessage*);
+WINLDAPAPI ULONG ldap_count_entries(LDAP*,LDAPMessage*);
+WINLDAPAPI ULONG ldap_count_references(LDAP*,LDAPMessage*);
+WINLDAPAPI PCHAR ldap_first_attributeA(LDAP*,LDAPMessage*,BerElement**);
+WINLDAPAPI PWCHAR ldap_first_attributeW(LDAP*,LDAPMessage*,BerElement**);
+WINLDAPAPI PCHAR ldap_next_attributeA(LDAP*,LDAPMessage*,BerElement*);
+WINLDAPAPI PWCHAR ldap_next_attributeW(LDAP*,LDAPMessage*,BerElement*);
+WINLDAPAPI VOID ldap_memfreeA(PCHAR);
+WINLDAPAPI VOID ldap_memfreeW(PWCHAR);
+WINLDAPAPI PCHAR* ldap_get_valuesA(LDAP*,LDAPMessage*,const PCHAR);
+WINLDAPAPI PWCHAR* ldap_get_valuesW(LDAP*,LDAPMessage*,const PWCHAR);
+WINLDAPAPI BerValue** ldap_get_values_lenA(LDAP*,LDAPMessage*,const PCHAR);
+WINLDAPAPI BerValue** ldap_get_values_lenW(LDAP*,LDAPMessage*,const PWCHAR);
+WINLDAPAPI ULONG ldap_count_valuesA(PCHAR*);
+WINLDAPAPI ULONG ldap_count_valuesW(PWCHAR*);
+WINLDAPAPI ULONG ldap_count_values_len(struct berval**);
+WINLDAPAPI ULONG ldap_value_freeA(PCHAR*);
+WINLDAPAPI ULONG ldap_value_freeW(PWCHAR*);
+WINLDAPAPI ULONG ldap_value_free_len(struct berval**);
+WINLDAPAPI PCHAR ldap_get_dnA(LDAP*,LDAPMessage*);
+WINLDAPAPI PWCHAR ldap_get_dnW(LDAP*,LDAPMessage*);
+WINLDAPAPI PCHAR ldap_explode_dnA(PCHAR,ULONG);
+WINLDAPAPI PWCHAR ldap_explode_dnW(PWCHAR,ULONG);
+WINLDAPAPI PCHAR ldap_dn2ufnA(PCHAR);
+WINLDAPAPI PWCHAR ldap_dn2ufnW(PWCHAR);
+WINLDAPAPI ULONG ldap_ufn2dnA(const PCHAR,PCHAR*);
+WINLDAPAPI ULONG ldap_ufn2dnW(const PWCHAR,PWCHAR*);
+WINLDAPAPI ULONG ldap_parse_referenceA(LDAP*,LDAPMessage*,PCHAR**);
+WINLDAPAPI ULONG ldap_parse_referenceW(LDAP*,LDAPMessage*,PWCHAR**);
+WINLDAPAPI ULONG ldap_check_filterA(LDAP*,PCHAR);
+WINLDAPAPI ULONG ldap_check_filterW(LDAP*,PWCHAR);
+WINLDAPAPI ULONG ldap_create_page_controlA(PLDAP,ULONG,struct berval*,UCHAR,PLDAPControlA*);
+WINLDAPAPI ULONG ldap_create_page_controlW(PLDAP,ULONG,struct berval*,UCHAR,PLDAPControlW*);
+WINLDAPAPI ULONG ldap_create_sort_controlA(PLDAP,PLDAPSortKeyA*,UCHAR,PLDAPControlA*);
+WINLDAPAPI ULONG ldap_create_sort_controlW(PLDAP,PLDAPSortKeyW*,UCHAR,PLDAPControlW*);
+WINLDAPAPI INT ldap_create_vlv_controlA(LDAP*,LDAPVLVInfo*,UCHAR,LDAPControlA**);
+WINLDAPAPI INT ldap_create_vlv_controlW(LDAP*,LDAPVLVInfo*,UCHAR,LDAPControlW**);
+WINLDAPAPI ULONG ldap_encode_sort_controlA(PLDAP,PLDAPSortKeyA*,PLDAPControlA,BOOLEAN);
+WINLDAPAPI ULONG ldap_encode_sort_controlW(PLDAP,PLDAPSortKeyW*,PLDAPControlW,BOOLEAN);
+WINLDAPAPI ULONG ldap_escape_filter_elementA(PCHAR,ULONG,PCHAR,ULONG);
+WINLDAPAPI ULONG ldap_escape_filter_elementW(PWCHAR,ULONG,PWCHAR,ULONG);
+WINLDAPAPI ULONG ldap_get_next_page(PLDAP,PLDAPSearch,ULONG,ULONG*);
+WINLDAPAPI ULONG ldap_get_next_page_s(PLDAP,PLDAPSearch,struct l_timeval*,ULONG,ULONG*,LDAPMessage**);
+WINLDAPAPI ULONG ldap_get_paged_count(PLDAP,PLDAPSearch,ULONG*,PLDAPMessage);
+WINLDAPAPI ULONG ldap_parse_page_controlA(PLDAP,PLDAPControlA*,ULONG*,struct berval**);
+WINLDAPAPI ULONG ldap_parse_page_controlW(PLDAP,PLDAPControlW*,ULONG*,struct berval**);
+WINLDAPAPI ULONG ldap_parse_sort_controlA(PLDAP,PLDAPControlA*,ULONG*,PCHAR*);
+WINLDAPAPI ULONG ldap_parse_sort_controlW(PLDAP,PLDAPControlW*,ULONG*,PWCHAR*);
+WINLDAPAPI INT ldap_parse_vlv_controlA(LDAP*,LDAPControlA**,unsigned long*,unsigned long*,struct berval**,int*);
+WINLDAPAPI INT ldap_parse_vlv_controlW(LDAP*,LDAPControlW**,unsigned long*,unsigned long*,struct berval**,int*);
+WINLDAPAPI PLDAPSearch ldap_search_init_pageA(PLDAP,const PCHAR,ULONG,const PCHAR,PCHAR[],ULONG,PLDAPControlA*,PLDAPControlA*,ULONG,ULONG,PLDAPSortKeyA*);
+WINLDAPAPI PLDAPSearch ldap_search_init_pageW(PLDAP,const PWCHAR,ULONG,const PWCHAR,PWCHAR[],ULONG,PLDAPControlW*,PLDAPControlW*,ULONG,ULONG,PLDAPSortKeyW*);
+WINLDAPAPI ULONG ldap_search_abandon_page(PLDAP,PLDAPSearch);
+WINLDAPAPI LDAP ldap_conn_from_msg(LDAP*,LDAPMessage*);
+WINLDAPAPI INT LdapUnicodeToUTF8(LPCWSTR,int,LPSTR,int);
+WINLDAPAPI INT LdapUTF8ToUnicode(LPCSTR,int,LPWSTR,int);
+
+#ifdef UNICODE
+#define LDAPControl LDAPControlW
+#define PLDAPControl PLDAPControlW
+#define LDAPMod LDAPModW
+#define PLDAPMod LDAPModW
+#define LDAPSortKey LDAPSortKeyW
+#define PLDAPSortKey PLDAPSortKeyW
+#define LDAPAPIInfo LDAPAPIInfoW
+#define PLDAPAPIInfo PLDAPAPIInfoW
+#define LDAPAPIFeatureInfo LDAPAPIFeatureInfoW
+#define PLDAPAPIFeatureInfo PLDAPAPIFeatureInfoW
+#define cldap_open cldap_openW
+#define ldap_open ldap_openW
+#define ldap_bind ldap_bindW
+#define ldap_bind_s ldap_bind_sW
+#define ldap_simple_bind ldap_simple_bindW
+#define ldap_simple_bind_s ldap_simple_bind_sW
+#define ldap_sasl_bind ldap_sasl_bindW
+#define ldap_sasl_bind_s ldap_sasl_bind_sW
+#define ldap_init ldap_initW
+#define ldap_sslinit ldap_sslinitW
+#define ldap_get_option ldap_get_optionW
+#define ldap_set_option ldap_set_optionW
+#define ldap_start_tls_s ldap_start_tls_sW
+#define ldap_add ldap_addW
+#define ldap_add_ext ldap_add_extW
+#define ldap_add_s ldap_add_sW
+#define ldap_add_ext_s ldap_add_ext_sW
+#define ldap_compare ldap_compareW
+#define ldap_compare_ext ldap_compare_extW
+#define ldap_compare_s ldap_compare_sW
+#define ldap_compare_ext_s ldap_compare_ext_sW
+#define ldap_delete ldap_deleteW
+#define ldap_delete_ext ldap_delete_extW
+#define ldap_delete_s ldap_delete_sW
+#define ldap_delete_ext_s ldap_delete_ext_sW
+#define ldap_extended_operation_s ldap_extended_operation_sW
+#define ldap_extended_operation ldap_extended_operationW
+#define ldap_modify ldap_modifyW
+#define ldap_modify_ext ldap_modify_extW
+#define ldap_modify_s ldap_modify_sW
+#define ldap_modify_ext_s ldap_modify_ext_sW
+#define ldap_check_filter ldap_check_filterW
+#define ldap_count_values ldap_count_valuesW
+#define ldap_create_page_control ldap_create_page_controlW
+#define ldap_create_sort_control ldap_create_sort_controlW
+#define ldap_create_vlv_control ldap_create_vlv_controlW
+#define ldap_encode_sort_control ldap_encode_sort_controlW
+#define ldap_escape_filter_element ldap_escape_filter_elementW
+#define ldap_first_attribute ldap_first_attributeW
+#define ldap_next_attribute ldap_next_attributeW
+#define ldap_get_values ldap_get_valuesW
+#define ldap_get_values_len ldap_get_values_lenW
+#define ldap_parse_extended_result ldap_parse_extended_resultW
+#define ldap_parse_page_control ldap_parse_page_controlW
+#define ldap_parse_reference ldap_parse_referenceW
+#define ldap_parse_result ldap_parse_resultW
+#define ldap_parse_sort_control ldap_parse_sort_controlW
+#define ldap_parse_vlv_control ldap_parse_vlv_controlW
+#define ldap_search ldap_searchW
+#define ldap_search_s ldap_search_sW
+#define ldap_search_st ldap_search_stW
+#define ldap_search_ext ldap_search_extW
+#define ldap_search_ext_s ldap_search_ext_sW
+#define ldap_search_init_page ldap_search_init_pageW
+#define ldap_err2string ldap_err2stringW
+#define ldap_control_free ldap_control_freeW
+#define ldap_controls_free ldap_controls_freeW
+#define ldap_free_controls ldap_free_controlsW
+#define ldap_memfree ldap_memfreeW
+#define ldap_value_free ldap_value_freeW
+#define ldap_dn2ufn ldap_dn2ufnW
+#define ldap_ufn2dn ldap_ufn2dnW
+#define ldap_explode_dn ldap_explode_dnW
+#define ldap_get_dn ldap_get_dnW
+#define ldap_modrdn ldap_modrdnW
+#define ldap_modrdn_s ldap_modrdn_sW
+#define ldap_modrdn2 ldap_modrdn2W
+#define ldap_modrdn2_s ldap_modrdn2_sW
+#define ldap_rename ldap_rename_extW
+#define ldap_rename_s ldap_rename_ext_sW
+#define ldap_rename_ext ldap_rename_extW
+#define ldap_rename_ext_s ldap_rename_ext_sW
+#else
+#define LDAPControl LDAPControlA
+#define PLDAPControl PLDAPControlA
+#define LDAPMod LDAPModA
+#define PLDAPMod LDAPModA
+#define LDAPSortKey LDAPSortKeyA
+#define PLDAPSortKey PLDAPSortKeyA
+#define LDAPAPIInfo LDAPAPIInfoA
+#define PLDAPAPIInfo PLDAPAPIInfoA
+#define LDAPAPIFeatureInfo LDAPAPIFeatureInfoA
+#define PLDAPAPIFeatureInfo PLDAPAPIFeatureInfoA
+#define cldap_open cldap_openA
+#define ldap_open ldap_openA
+#define ldap_bind ldap_bindA
+#define ldap_bind_s ldap_bind_sA
+#define ldap_simple_bind ldap_simple_bindA
+#define ldap_simple_bind_s ldap_simple_bind_sA
+#define ldap_sasl_bind ldap_sasl_bindA
+#define ldap_sasl_bind_s ldap_sasl_bind_sA
+#define ldap_init ldap_initA
+#define ldap_sslinit ldap_sslinitA
+#define ldap_get_option ldap_get_optionA
+#define ldap_set_option ldap_set_optionA
+#define ldap_start_tls_s ldap_start_tls_sA
+#define ldap_add ldap_addA
+#define ldap_add_ext ldap_add_extA
+#define ldap_add_s ldap_add_sA
+#define ldap_add_ext_s ldap_add_ext_sA
+#define ldap_compare ldap_compareA
+#define ldap_compare_ext ldap_compare_extA
+#define ldap_compare_s ldap_compare_sA
+#define ldap_compare_ext_s ldap_compare_ext_sA
+#define ldap_delete ldap_deleteA
+#define ldap_delete_ext ldap_delete_extA
+#define ldap_delete_s ldap_delete_sA
+#define ldap_delete_ext_s ldap_delete_ext_sA
+#define ldap_extended_operation_s ldap_extended_operation_sA
+#define ldap_extended_operation ldap_extended_operationA
+#define ldap_modify ldap_modifyA
+#define ldap_modify_ext ldap_modify_extA
+#define ldap_modify_s ldap_modify_sA
+#define ldap_modify_ext_s ldap_modify_ext_sA
+#define ldap_check_filter ldap_check_filterA
+#define ldap_count_values ldap_count_valuesA
+#define ldap_create_page_control ldap_create_page_controlA
+#define ldap_create_sort_control ldap_create_sort_controlA
+#define ldap_create_vlv_control ldap_create_vlv_controlA
+#define ldap_encode_sort_control ldap_encode_sort_controlA
+#define ldap_escape_filter_element ldap_escape_filter_elementA
+#define ldap_first_attribute ldap_first_attributeA
+#define ldap_next_attribute ldap_next_attributeA
+#define ldap_get_values ldap_get_valuesA
+#define ldap_get_values_len ldap_get_values_lenA
+#define ldap_parse_extended_result ldap_parse_extended_resultA
+#define ldap_parse_page_control ldap_parse_page_controlA
+#define ldap_parse_reference ldap_parse_referenceA
+#define ldap_parse_result ldap_parse_resultA
+#define ldap_parse_sort_control ldap_parse_sort_controlA
+#define ldap_parse_vlv_control ldap_parse_vlv_controlA
+#define ldap_search ldap_searchA
+#define ldap_search_s ldap_search_sA
+#define ldap_search_st ldap_search_stA
+#define ldap_search_ext ldap_search_extA
+#define ldap_search_ext_s ldap_search_ext_sA
+#define ldap_search_init_page ldap_search_init_pageA
+#define ldap_err2string ldap_err2stringA
+#define ldap_control_free ldap_control_freeA
+#define ldap_controls_free ldap_controls_freeA
+#define ldap_free_controls ldap_free_controlsA
+#define ldap_memfree ldap_memfreeA
+#define ldap_value_free ldap_value_freeA
+#define ldap_dn2ufn ldap_dn2ufnA
+#define ldap_ufn2dn ldap_ufn2dnA
+#define ldap_explode_dn ldap_explode_dnA
+#define ldap_get_dn ldap_get_dnA
+#define ldap_modrdn ldap_modrdnA
+#define ldap_modrdn_s ldap_modrdn_sA
+#define ldap_modrdn2 ldap_modrdn2A
+#define ldap_modrdn2_s ldap_modrdn2_sA
+#define ldap_rename ldap_rename_extA
+#define ldap_rename_s ldap_rename_ext_sA
+#define ldap_rename_ext ldap_rename_extA
+#define ldap_rename_ext_s ldap_rename_ext_sA
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#include <poppack.h>
+
+#endif /* _WINLDAP_H */
Index: Daodan/MinGW/include/winnetwk.h
===================================================================
--- Daodan/MinGW/include/winnetwk.h	(revision 1046)
+++ Daodan/MinGW/include/winnetwk.h	(revision 1046)
@@ -0,0 +1,350 @@
+#ifndef _WINNETWK_H
+#define _WINNETWK_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define WNNC_NET_MSNET      0x00010000
+#define WNNC_NET_LANMAN     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_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_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_CRED_MANAGER   0xFFFF0000
+
+#define RESOURCE_CONNECTED 1
+#define RESOURCE_GLOBALNET 2
+#define RESOURCE_REMEMBERED 3
+#define RESOURCE_RECENT 4
+#define RESOURCE_CONTEXT 5
+#define RESOURCETYPE_ANY 0
+#define RESOURCETYPE_DISK 1
+#define RESOURCETYPE_PRINT 2
+#define RESOURCETYPE_RESERVED 8
+#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 0
+#define RESOURCEDISPLAYTYPE_DOMAIN 1
+#define RESOURCEDISPLAYTYPE_SERVER 2
+#define RESOURCEDISPLAYTYPE_SHARE 3
+#define RESOURCEDISPLAYTYPE_FILE 4
+#define RESOURCEDISPLAYTYPE_GROUP 5
+#define RESOURCEDISPLAYTYPE_NETWORK 6
+#define RESOURCEDISPLAYTYPE_ROOT 7
+#define RESOURCEDISPLAYTYPE_SHAREADMIN 8
+#define RESOURCEDISPLAYTYPE_DIRECTORY 9
+#define RESOURCEDISPLAYTYPE_TREE 10
+#define NETPROPERTY_PERSISTENT 1
+#define CONNECT_UPDATE_PROFILE 1
+#define CONNECT_UPDATE_RECENT 2
+#define CONNECT_TEMPORARY 4
+#define CONNECT_INTERACTIVE 8
+#define CONNECT_PROMPT 16
+#define CONNECT_NEED_DRIVE 32
+#define CONNECT_REFCOUNT 64
+#define CONNECT_REDIRECT 128
+#define CONNECT_LOCALDRIVE 256
+#define CONNECT_CURRENT_MEDIA 512
+#define CONNDLG_RO_PATH 1
+#define CONNDLG_CONN_POINT 2
+#define CONNDLG_USE_MRU 4
+#define CONNDLG_HIDE_BOX 8
+#define CONNDLG_PERSIST 16
+#define CONNDLG_NOT_PERSIST 32
+#define DISC_UPDATE_PROFILE 1
+#define DISC_NO_FORCE 64
+#define WNFMT_MULTILINE 1
+#define WNFMT_ABBREVIATED 2
+#define WNFMT_INENUM 16
+#define WNFMT_CONNECTION 32
+#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_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
+#define UNIVERSAL_NAME_INFO_LEVEL 1
+#define REMOTE_NAME_INFO_LEVEL 2
+#define NETINFO_DLL16 1
+#define NETINFO_DISKRED 4
+#define NETINFO_PRINTERRED 8
+#define RP_LOGON 1
+#define RP_INIFILE 2
+#define PP_DISPLAYERRORS 1
+#define WNCON_FORNETCARD 1
+#define WNCON_NOTROUTED 2
+#define WNCON_SLOWLINK 4
+#define WNCON_DYNAMIC 8
+
+#ifndef RC_INVOKED
+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 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 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 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 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 struct _NETINFOSTRUCT{
+	DWORD cbStructure;
+	DWORD dwProviderVersion;
+	DWORD dwStatus;
+	DWORD dwCharacteristics;
+	DWORD dwHandle;
+	WORD wNetType;
+	DWORD dwPrinters;
+	DWORD dwDrives;
+} NETINFOSTRUCT,*LPNETINFOSTRUCT;
+typedef UINT(PASCAL *PFNGETPROFILEPATHA)(LPCSTR,LPSTR,UINT);
+typedef UINT(PASCAL *PFNGETPROFILEPATHW)(LPCWSTR,LPWSTR,UINT);
+typedef UINT(PASCAL *PFNRECONCILEPROFILEA)(LPCSTR,LPCSTR,DWORD);
+typedef UINT(PASCAL *PFNRECONCILEPROFILEW)(LPCWSTR,LPCWSTR,DWORD);
+typedef BOOL(PASCAL *PFNPROCESSPOLICIESA)(HWND,LPCSTR,LPCSTR,LPCSTR,DWORD);
+typedef BOOL(PASCAL *PFNPROCESSPOLICIESW)(HWND,LPCWSTR,LPCWSTR,LPCWSTR,DWORD);
+typedef struct _NETCONNECTINFOSTRUCT{
+	DWORD cbStructure;
+	DWORD dwFlags;
+	DWORD dwSpeed;
+	DWORD dwDelay;
+	DWORD dwOptDataSize;
+} NETCONNECTINFOSTRUCT,*LPNETCONNECTINFOSTRUCT;
+
+DWORD APIENTRY WNetAddConnectionA(LPCSTR,LPCSTR,LPCSTR);
+DWORD APIENTRY WNetAddConnectionW(LPCWSTR,LPCWSTR,LPCWSTR);
+DWORD APIENTRY WNetAddConnection2A(LPNETRESOURCEA,LPCSTR,LPCSTR,DWORD);
+DWORD APIENTRY WNetAddConnection2W(LPNETRESOURCEW,LPCWSTR,LPCWSTR,DWORD);
+DWORD APIENTRY WNetAddConnection3A(HWND,LPNETRESOURCEA,LPCSTR,LPCSTR,DWORD);
+DWORD APIENTRY WNetAddConnection3W(HWND,LPNETRESOURCEW,LPCWSTR,LPCWSTR,DWORD);
+DWORD APIENTRY WNetCancelConnectionA(LPCSTR,BOOL);
+DWORD APIENTRY WNetCancelConnectionW(LPCWSTR,BOOL);
+DWORD APIENTRY WNetCancelConnection2A(LPCSTR,DWORD,BOOL);
+DWORD APIENTRY WNetCancelConnection2W(LPCWSTR,DWORD,BOOL);
+DWORD APIENTRY WNetGetConnectionA(LPCSTR,LPSTR,PDWORD);
+DWORD APIENTRY WNetGetConnectionW(LPCWSTR,LPWSTR,PDWORD);
+DWORD APIENTRY WNetUseConnectionA(HWND,LPNETRESOURCEA,LPCSTR,LPCSTR,DWORD,LPSTR,PDWORD,PDWORD);
+DWORD APIENTRY WNetUseConnectionW(HWND,LPNETRESOURCEW,LPCWSTR,LPCWSTR,DWORD,LPWSTR,PDWORD,PDWORD);
+DWORD APIENTRY WNetSetConnectionA(LPCSTR,DWORD,PVOID);
+DWORD APIENTRY WNetSetConnectionW(LPCWSTR,DWORD,PVOID);
+DWORD APIENTRY WNetConnectionDialog(HWND,DWORD);
+DWORD APIENTRY WNetDisconnectDialog(HWND,DWORD);
+DWORD APIENTRY WNetConnectionDialog1A(LPCONNECTDLGSTRUCTA);
+DWORD APIENTRY WNetConnectionDialog1W(LPCONNECTDLGSTRUCTW);
+DWORD APIENTRY WNetDisconnectDialog1A(LPDISCDLGSTRUCTA);
+DWORD APIENTRY WNetDisconnectDialog1W(LPDISCDLGSTRUCTW);
+DWORD APIENTRY WNetOpenEnumA(DWORD,DWORD,DWORD,LPNETRESOURCEA,LPHANDLE);
+DWORD APIENTRY WNetOpenEnumW(DWORD,DWORD,DWORD,LPNETRESOURCEW,LPHANDLE);
+DWORD APIENTRY WNetEnumResourceA(HANDLE,PDWORD,PVOID,PDWORD);
+DWORD APIENTRY WNetEnumResourceW(HANDLE,PDWORD,PVOID,PDWORD);
+DWORD APIENTRY WNetCloseEnum(HANDLE);
+DWORD APIENTRY WNetGetUniversalNameA(LPCSTR,DWORD,PVOID,PDWORD);
+DWORD APIENTRY WNetGetUniversalNameW(LPCWSTR,DWORD,PVOID,PDWORD);
+DWORD APIENTRY WNetGetUserA(LPCSTR,LPSTR,PDWORD);
+DWORD APIENTRY WNetGetUserW(LPCWSTR,LPWSTR,PDWORD);
+DWORD APIENTRY WNetGetProviderNameA(DWORD,LPSTR,PDWORD);
+DWORD APIENTRY WNetGetProviderNameW(DWORD,LPWSTR,PDWORD);
+DWORD APIENTRY WNetGetNetworkInformationA(LPCSTR,LPNETINFOSTRUCT);
+DWORD APIENTRY WNetGetNetworkInformationW(LPCWSTR,LPNETINFOSTRUCT);
+DWORD APIENTRY WNetGetResourceInformationA(LPNETRESOURCEA,LPVOID,LPDWORD,LPSTR*);
+DWORD APIENTRY WNetGetResourceInformationW(LPNETRESOURCEW,LPVOID,LPDWORD,LPWSTR*);
+DWORD APIENTRY WNetGetResourceParentA(LPNETRESOURCEA,LPVOID,LPDWORD);
+DWORD APIENTRY WNetGetResourceParentW(LPNETRESOURCEW,LPVOID,LPDWORD);
+DWORD APIENTRY WNetGetLastErrorA(PDWORD,LPSTR,DWORD,LPSTR,DWORD);
+DWORD APIENTRY WNetGetLastErrorW(PDWORD,LPWSTR,DWORD,LPWSTR,DWORD);
+DWORD APIENTRY MultinetGetConnectionPerformanceA(LPNETRESOURCEA,LPNETCONNECTINFOSTRUCT);
+DWORD APIENTRY MultinetGetConnectionPerformanceW(LPNETRESOURCEW,LPNETCONNECTINFOSTRUCT);
+#ifdef UNICODE
+#define PFNPROCESSPOLICIES PFNPROCESSPOLICIESW
+#define PFNRECONCILEPROFILE PFNRECONCILEPROFILEW
+#define PFNGETPROFILEPATH PFNGETPROFILEPATHW
+typedef NETRESOURCEW NETRESOURCE,*LPNETRESOURCE;
+typedef CONNECTDLGSTRUCTW CONNECTDLGSTRUCT,*LPCONNECTDLGSTRUCT;
+typedef DISCDLGSTRUCTW DISCDLGSTRUCT,*LPDISCDLGSTRUCT;
+typedef REMOTE_NAME_INFOW REMOTE_NAME_INFO,*LPREMOTE_NAME_INFO;
+typedef UNIVERSAL_NAME_INFOW UNIVERSAL_NAME_INFO,*LPUNIVERSAL_NAME_INFO;
+#define WNetEnumResource WNetEnumResourceW
+#define WNetOpenEnum WNetOpenEnumW
+#define WNetGetResourceInformation WNetGetResourceInformationW
+#define WNetGetResourceParent WNetGetResourceParentW
+#define WNetGetUniversalName WNetGetUniversalNameW
+#define WNetSetConnection WNetSetConnectionW
+#define WNetUseConnection WNetUseConnectionW
+#define WNetGetConnection WNetGetConnectionW
+#define WNetCancelConnection2 WNetCancelConnection2W
+#define WNetCancelConnection WNetCancelConnectionW
+#define WNetAddConnection3 WNetAddConnection3W
+#define WNetAddConnection2 WNetAddConnection2W
+#define WNetAddConnection WNetAddConnectionW
+#define WNetConnectionDialog1 WNetConnectionDialog1W
+#define WNetDisconnectDialog1 WNetDisconnectDialog1W
+#define WNetGetNetworkInformation WNetGetNetworkInformationW
+#define WNetGetProviderName WNetGetProviderNameW
+#define WNetGetUser WNetGetUserW
+#define MultinetGetConnectionPerformance MultinetGetConnectionPerformanceW
+#define WNetGetLastError WNetGetLastErrorW
+#else
+#define PFNGETPROFILEPATH PFNGETPROFILEPATHA
+#define PFNRECONCILEPROFILE PFNRECONCILEPROFILEA
+#define PFNPROCESSPOLICIES PFNPROCESSPOLICIESA
+typedef NETRESOURCEA NETRESOURCE,*LPNETRESOURCE;
+typedef CONNECTDLGSTRUCTA CONNECTDLGSTRUCT,*LPCONNECTDLGSTRUCT;
+typedef DISCDLGSTRUCTA DISCDLGSTRUCT,*LPDISCDLGSTRUCT;
+typedef UNIVERSAL_NAME_INFOA UNIVERSAL_NAME_INFO,*LPUNIVERSAL_NAME_INFO;
+typedef REMOTE_NAME_INFOA REMOTE_NAME_INFO,*LPREMOTE_NAME_INFO;
+#define WNetOpenEnum WNetOpenEnumA
+#define WNetEnumResource WNetEnumResourceA
+#define WNetGetResourceInformation WNetGetResourceInformationA
+#define WNetGetResourceParent WNetGetResourceParentA
+#define WNetGetUniversalName WNetGetUniversalNameA
+#define WNetConnectionDialog1 WNetConnectionDialog1A
+#define WNetDisconnectDialog1 WNetDisconnectDialog1A
+#define WNetAddConnection2 WNetAddConnection2A
+#define WNetAddConnection3 WNetAddConnection3A
+#define WNetCancelConnection WNetCancelConnectionA
+#define WNetCancelConnection2 WNetCancelConnection2A
+#define WNetGetConnection WNetGetConnectionA
+#define WNetUseConnection WNetUseConnectionA
+#define WNetSetConnection WNetSetConnectionA
+#define WNetAddConnection WNetAddConnectionA
+#define WNetGetUser WNetGetUserA
+#define WNetGetProviderName WNetGetProviderNameA
+#define WNetGetNetworkInformation WNetGetNetworkInformationA
+#define WNetGetLastError WNetGetLastErrorA
+#define MultinetGetConnectionPerformance MultinetGetConnectionPerformanceA
+#endif
+#endif
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/winnls.h
===================================================================
--- Daodan/MinGW/include/winnls.h	(revision 1046)
+++ Daodan/MinGW/include/winnls.h	(revision 1046)
@@ -0,0 +1,737 @@
+#ifndef _WINNLS_H
+#define _WINNLS_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#ifndef WINBASEAPI
+#ifdef __W32API_USE_DLLIMPORT__
+#define WINBASEAPI DECLSPEC_IMPORT
+#else
+#define WINBASEAPI
+#endif
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define MAX_LEADBYTES 	12
+#define MAX_DEFAULTCHAR	2
+#define LOCALE_NOUSEROVERRIDE	0x80000000
+#define LOCALE_USE_CP_ACP	0x40000000
+#if (WINVER >= 0x0400)
+#define LOCALE_RETURN_NUMBER	0x20000000
+#endif
+#define LOCALE_ILANGUAGE	1
+#define LOCALE_SLANGUAGE	2
+#define LOCALE_SENGLANGUAGE	0x1001
+#define LOCALE_SABBREVLANGNAME	3
+#define LOCALE_SNATIVELANGNAME	4
+#define LOCALE_ICOUNTRY	5
+#define LOCALE_SCOUNTRY	6
+#define LOCALE_SENGCOUNTRY	0x1002
+#define LOCALE_SABBREVCTRYNAME	7
+#define LOCALE_SNATIVECTRYNAME	8
+#define LOCALE_IDEFAULTLANGUAGE	9
+#define LOCALE_IDEFAULTCOUNTRY	10
+#define LOCALE_IDEFAULTCODEPAGE	11
+#define LOCALE_IDEFAULTANSICODEPAGE 0x1004
+#define LOCALE_SLIST	12
+#define LOCALE_IMEASURE	13
+#define LOCALE_SDECIMAL	14
+#define LOCALE_STHOUSAND	15
+#define LOCALE_SGROUPING	16
+#define LOCALE_IDIGITS	17
+#define LOCALE_ILZERO	18
+#define LOCALE_INEGNUMBER	0x1010
+#define LOCALE_SNATIVEDIGITS	19
+#define LOCALE_SCURRENCY	20
+#define LOCALE_SINTLSYMBOL	21
+#define LOCALE_SMONDECIMALSEP	22
+#define LOCALE_SMONTHOUSANDSEP	23
+#define LOCALE_SMONGROUPING	24
+#define LOCALE_ICURRDIGITS	25
+#define LOCALE_IINTLCURRDIGITS	26
+#define LOCALE_ICURRENCY	27
+#define LOCALE_INEGCURR	28
+#define LOCALE_SDATE	29
+#define LOCALE_STIME	30
+#define LOCALE_SSHORTDATE	31
+#define LOCALE_SLONGDATE	32
+#define LOCALE_STIMEFORMAT	0x1003
+#define LOCALE_IDATE	33
+#define LOCALE_ILDATE	34
+#define LOCALE_ITIME	35
+#define LOCALE_ITIMEMARKPOSN	0x1005
+#define LOCALE_ICENTURY	36
+#define LOCALE_ITLZERO	37
+#define LOCALE_IDAYLZERO	38
+#define LOCALE_IMONLZERO	39
+#define LOCALE_S1159	40
+#define LOCALE_S2359	41
+#define LOCALE_ICALENDARTYPE	0x1009
+#define LOCALE_IOPTIONALCALENDAR	0x100B
+#define LOCALE_IFIRSTDAYOFWEEK	0x100C
+#define LOCALE_IFIRSTWEEKOFYEAR	0x100D
+#define LOCALE_SDAYNAME1	42
+#define LOCALE_SDAYNAME2	43
+#define LOCALE_SDAYNAME3	44
+#define LOCALE_SDAYNAME4	45
+#define LOCALE_SDAYNAME5	46
+#define LOCALE_SDAYNAME6	47
+#define LOCALE_SDAYNAME7	48
+#define LOCALE_SABBREVDAYNAME1	49
+#define LOCALE_SABBREVDAYNAME2	50
+#define LOCALE_SABBREVDAYNAME3	51
+#define LOCALE_SABBREVDAYNAME4	52
+#define LOCALE_SABBREVDAYNAME5	53
+#define LOCALE_SABBREVDAYNAME6	54
+#define LOCALE_SABBREVDAYNAME7	55
+#define LOCALE_SMONTHNAME1	56
+#define LOCALE_SMONTHNAME2	57
+#define LOCALE_SMONTHNAME3	58
+#define LOCALE_SMONTHNAME4	59
+#define LOCALE_SMONTHNAME5	60
+#define LOCALE_SMONTHNAME6	61
+#define LOCALE_SMONTHNAME7	62
+#define LOCALE_SMONTHNAME8	63
+#define LOCALE_SMONTHNAME9	64
+#define LOCALE_SMONTHNAME10	65
+#define LOCALE_SMONTHNAME11	66
+#define LOCALE_SMONTHNAME12	67
+#define LOCALE_SMONTHNAME13	0x100E
+#define LOCALE_SABBREVMONTHNAME1	68
+#define LOCALE_SABBREVMONTHNAME2	69
+#define LOCALE_SABBREVMONTHNAME3	70
+#define LOCALE_SABBREVMONTHNAME4	71
+#define LOCALE_SABBREVMONTHNAME5	72
+#define LOCALE_SABBREVMONTHNAME6	73
+#define LOCALE_SABBREVMONTHNAME7	74
+#define LOCALE_SABBREVMONTHNAME8	75
+#define LOCALE_SABBREVMONTHNAME9	76
+#define LOCALE_SABBREVMONTHNAME10	77
+#define LOCALE_SABBREVMONTHNAME11	78
+#define LOCALE_SABBREVMONTHNAME12	79
+#define LOCALE_SABBREVMONTHNAME13	0x100F
+#define LOCALE_SPOSITIVESIGN	80
+#define LOCALE_SNEGATIVESIGN	81
+#define LOCALE_IPOSSIGNPOSN	82
+#define LOCALE_INEGSIGNPOSN	83
+#define LOCALE_IPOSSYMPRECEDES	84
+#define LOCALE_IPOSSEPBYSPACE	85
+#define LOCALE_INEGSYMPRECEDES	86
+#define LOCALE_INEGSEPBYSPACE	87
+#define LOCALE_FONTSIGNATURE	88
+#define LOCALE_SISO639LANGNAME 89
+#define LOCALE_SISO3166CTRYNAME 90
+#define LOCALE_SYSTEM_DEFAULT	0x800
+#define LOCALE_USER_DEFAULT	0x400
+#define NORM_IGNORECASE	1
+#define NORM_IGNOREKANATYPE	65536
+#define NORM_IGNORENONSPACE	2
+#define NORM_IGNORESYMBOLS	4
+#define NORM_IGNOREWIDTH	131072
+#define SORT_STRINGSORT	4096
+#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 ENUM_ALL_CALENDARS (-1)
+#define DATE_SHORTDATE 1
+#define DATE_LONGDATE 2
+#define DATE_USE_ALT_CALENDAR 4
+#define CP_INSTALLED 1
+#define CP_SUPPORTED 2
+#define LCID_INSTALLED 1
+#define LCID_SUPPORTED 2
+#define LCID_ALTERNATE_SORTS 4
+#define MAP_FOLDCZONE 16
+#define MAP_FOLDDIGITS 128
+#define MAP_PRECOMPOSED 32
+#define MAP_COMPOSITE 64
+#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 CT_CTYPE1 1
+#define CT_CTYPE2 2
+#define CT_CTYPE3 4
+#define C1_UPPER 1
+#define C1_LOWER 2
+#define C1_DIGIT 4
+#define C1_SPACE 8
+#define C1_PUNCT 16
+#define C1_CNTRL 32
+#define C1_BLANK 64
+#define C1_XDIGIT 128
+#define C1_ALPHA 256
+#define C2_LEFTTORIGHT 1
+#define C2_RIGHTTOLEFT 2
+#define C2_EUROPENUMBER 3
+#define C2_EUROPESEPARATOR 4
+#define C2_EUROPETERMINATOR 5
+#define C2_ARABICNUMBER 6
+#define C2_COMMONSEPARATOR 7
+#define C2_BLOCKSEPARATOR 8
+#define C2_SEGMENTSEPARATOR 9
+#define C2_WHITESPACE 10
+#define C2_OTHERNEUTRAL 11
+#define C2_NOTAPPLICABLE 0
+#define C3_NONSPACING 1
+#define C3_DIACRITIC 2
+#define C3_VOWELMARK 4
+#define C3_SYMBOL 8
+#define C3_KATAKANA 16
+#define C3_HIRAGANA 32
+#define C3_HALFWIDTH 64
+#define C3_FULLWIDTH 128
+#define C3_IDEOGRAPH 256
+#define C3_KASHIDA 512
+#define C3_LEXICAL 1024
+#define C3_ALPHA 32768
+#define C3_NOTAPPLICABLE 0
+#define TIME_NOMINUTESORSECONDS 1
+#define TIME_NOSECONDS 2
+#define TIME_NOTIMEMARKER 4
+#define TIME_FORCE24HOURFORMAT 8
+#define MB_PRECOMPOSED 1
+#define MB_COMPOSITE 2
+#define MB_ERR_INVALID_CHARS 8
+#define MB_USEGLYPHCHARS 4
+#define WC_COMPOSITECHECK 512
+#define WC_DISCARDNS 16
+#define WC_SEPCHARS 32
+#define WC_DEFAULTCHAR 64
+#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 CAL_ICALINTVALUE 1
+#define CAL_SCALNAME 2
+#define CAL_IYEAROFFSETRANGE 3
+#define CAL_SERASTRING 4
+#define CAL_SSHORTDATE 5
+#define CAL_SLONGDATE 6
+#define CAL_SDAYNAME1 7
+#define CAL_SDAYNAME2 8
+#define CAL_SDAYNAME3 9
+#define CAL_SDAYNAME4 10
+#define CAL_SDAYNAME5 11
+#define CAL_SDAYNAME6 12
+#define CAL_SDAYNAME7 13
+#define CAL_SABBREVDAYNAME1 14
+#define CAL_SABBREVDAYNAME2 15
+#define CAL_SABBREVDAYNAME3 16
+#define CAL_SABBREVDAYNAME4 17
+#define CAL_SABBREVDAYNAME5 18
+#define CAL_SABBREVDAYNAME6 19
+#define CAL_SABBREVDAYNAME7 20
+#define CAL_SMONTHNAME1 21
+#define CAL_SMONTHNAME2 22
+#define CAL_SMONTHNAME3 23
+#define CAL_SMONTHNAME4 24
+#define CAL_SMONTHNAME5 25
+#define CAL_SMONTHNAME6 26
+#define CAL_SMONTHNAME7 27
+#define CAL_SMONTHNAME8 28
+#define CAL_SMONTHNAME9 29
+#define CAL_SMONTHNAME10 30
+#define CAL_SMONTHNAME11 31
+#define CAL_SMONTHNAME12 32
+#define CAL_SMONTHNAME13 33
+#define CAL_SABBREVMONTHNAME1 34
+#define CAL_SABBREVMONTHNAME2 35
+#define CAL_SABBREVMONTHNAME3 36
+#define CAL_SABBREVMONTHNAME4 37
+#define CAL_SABBREVMONTHNAME5 38
+#define CAL_SABBREVMONTHNAME6 39
+#define CAL_SABBREVMONTHNAME7 40
+#define CAL_SABBREVMONTHNAME8 41
+#define CAL_SABBREVMONTHNAME9 42
+#define CAL_SABBREVMONTHNAME10 43
+#define CAL_SABBREVMONTHNAME11 44
+#define CAL_SABBREVMONTHNAME12 45
+#define CAL_SABBREVMONTHNAME13 46
+#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 CSTR_LESS_THAN 1
+#define CSTR_EQUAL 2
+#define CSTR_GREATER_THAN 3
+#define LGRPID_INSTALLED 1
+#define LGRPID_SUPPORTED 2
+#define LGRPID_WESTERN_EUROPE 1
+#define LGRPID_CENTRAL_EUROPE 2
+#define LGRPID_BALTIC 3
+#define LGRPID_GREEK 4
+#define LGRPID_CYRILLIC 5
+#define LGRPID_TURKISH 6
+#define LGRPID_JAPANESE 7
+#define LGRPID_KOREAN 8
+#define LGRPID_TRADITIONAL_CHINESE 9
+#define LGRPID_SIMPLIFIED_CHINESE 10
+#define LGRPID_THAI 11
+#define LGRPID_HEBREW 12
+#define LGRPID_ARABIC 13
+#define LGRPID_VIETNAMESE 14
+#define LGRPID_INDIC 15
+#define LGRPID_GEORGIAN 16
+#define LGRPID_ARMENIAN 17
+#define IS_HIGH_SURROGATE(c) (((c) & 0xFC00) == 0xD800)
+#define IS_LOW_SURROGATE(c) (((c) & 0xFC00) == 0xDC00)
+#define IS_SURROGATE_PAIR(hc,lc) (IS_HIGH_SURROGATE(hc) && IS_LOW_SURROGATE(lc))
+#if (WINVER >= 0x0410)
+#define CAL_SYEARMONTH 47
+#define CAL_ITWODIGITYEARMAX 48
+#define CAL_NOUSEROVERRIDE LOCALE_NOUSEROVERRIDE
+#define CAL_RETURN_NUMBER LOCALE_RETURN_NUMBER
+#define CAL_USE_CP_ACP LOCALE_USE_CP_ACP
+#define LOCALE_SYEARMONTH 0x1006
+#define LOCALE_SENGCURRNAME 0x1007
+#define LOCALE_SNATIVECURRNAME 0x1008
+#define LOCALE_SSORTNAME 0x1013
+#endif /* (WINVER >= 0x0410) */
+#if (WINVER >= 0x0500)
+#define LOCALE_IDEFAULTEBCDICCODEPAGE 0x1012
+#define LOCALE_IDIGITSUBSTITUTION 0x1014
+#define LOCALE_IPAPERSIZE 0x100A
+#define DATE_YEARMONTH 8
+#define DATE_LTRREADING 16
+#define DATE_RTLREADING 32
+#define MAP_EXPAND_LIGATURES   0x2000
+#define WC_NO_BEST_FIT_CHARS 1024
+#endif /* (WINVER >= 0x0500) */
+#if (WINVER >= 0x0600)
+/*#define CAL_SSHORTESTDAYNAME1 */
+/*#define CAL_SSHORTESTDAYNAME2 */
+/*#define CAL_SSHORTESTDAYNAME3 */
+/*#define CAL_SSHORTESTDAYNAME4 */
+/*#define CAL_SSHORTESTDAYNAME5 */
+/*#define CAL_SSHORTESTDAYNAME6 */
+/*#define CAL_SSHORTESTDAYNAME7 */
+#define CAL_UMALQURA 23
+/*#define LOCALE_SDURATION */
+/*#define LOCALE_SIETFLANGUAGE */
+/*#define LOCALE_SISO3166CTRYNAME2 */
+/*#define LOCALE_SISO639LANGNAME2 */
+/*#define LOCALE_SKEYBOARDSTOINSTALL */
+/*#define LOCALE_SNAME */
+/*#define LOCALE_SNAN */
+/*#define LOCALE_SNEGINFINITY */
+/*#define LOCALE_SPOSINFINITY */
+/*#define LOCALE_SSCRIPTS */
+#endif /* (WINVER >= 0x0600) */
+#ifndef  _BASETSD_H
+typedef long LONG_PTR;
+#endif
+
+#ifndef RC_INVOKED
+typedef DWORD LCTYPE;
+typedef DWORD CALTYPE;
+typedef DWORD CALID;
+typedef DWORD LGRPID;
+typedef DWORD GEOID;
+typedef DWORD GEOTYPE;
+typedef DWORD GEOCLASS;
+typedef BOOL (CALLBACK *CALINFO_ENUMPROCA)(LPSTR);
+typedef BOOL (CALLBACK *CALINFO_ENUMPROCW)(LPWSTR);
+typedef BOOL (CALLBACK *CALINFO_ENUMPROCEXA)(LPSTR, CALID);
+typedef BOOL (CALLBACK *CALINFO_ENUMPROCEXW)(LPWSTR, CALID);
+typedef BOOL (CALLBACK *LANGUAGEGROUP_ENUMPROCA)(LGRPID, LPSTR, LPSTR, DWORD, LONG_PTR);
+typedef BOOL (CALLBACK *LANGUAGEGROUP_ENUMPROCW)(LGRPID, LPWSTR, LPWSTR, DWORD, LONG_PTR);
+typedef BOOL (CALLBACK *LANGGROUPLOCALE_ENUMPROCA)(LGRPID, LCID, LPSTR, LONG_PTR);
+typedef BOOL (CALLBACK *LANGGROUPLOCALE_ENUMPROCW)(LGRPID, LCID, LPWSTR, LONG_PTR);
+typedef BOOL (CALLBACK *UILANGUAGE_ENUMPROCW)(LPWSTR, LONG_PTR);
+typedef BOOL (CALLBACK *UILANGUAGE_ENUMPROCA)(LPSTR, LONG_PTR);
+typedef BOOL (CALLBACK *LOCALE_ENUMPROCA)(LPSTR);
+typedef BOOL (CALLBACK *LOCALE_ENUMPROCW)(LPWSTR);
+typedef BOOL (CALLBACK *CODEPAGE_ENUMPROCA)(LPSTR);
+typedef BOOL (CALLBACK *CODEPAGE_ENUMPROCW)(LPWSTR);
+typedef BOOL (CALLBACK *DATEFMT_ENUMPROCA)(LPSTR);
+typedef BOOL (CALLBACK *DATEFMT_ENUMPROCW)(LPWSTR);
+typedef BOOL (CALLBACK *DATEFMT_ENUMPROCEXA)(LPSTR, CALID);
+typedef BOOL (CALLBACK *DATEFMT_ENUMPROCEXW)(LPWSTR, CALID);
+typedef BOOL (CALLBACK *TIMEFMT_ENUMPROCA)(LPSTR);
+typedef BOOL (CALLBACK *TIMEFMT_ENUMPROCW)(LPWSTR);
+typedef BOOL (CALLBACK *GEO_ENUMPROC)(GEOID);
+
+enum NLS_FUNCTION {
+	COMPARE_STRING = 0x0001
+};
+typedef enum NLS_FUNCTION NLS_FUNCTION;
+enum SYSGEOCLASS {
+	GEOCLASS_NATION = 16,
+	GEOCLASS_REGION = 14
+};
+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 = 0x000a
+};
+
+typedef struct _cpinfo {
+	UINT MaxCharSize;
+	BYTE DefaultChar[MAX_DEFAULTCHAR];
+	BYTE LeadByte[MAX_LEADBYTES];
+} CPINFO,*LPCPINFO;
+typedef struct _cpinfoexA {
+	UINT MaxCharSize;
+	BYTE DefaultChar[MAX_DEFAULTCHAR];
+	BYTE LeadByte[MAX_LEADBYTES];
+	WCHAR UnicodeDefaultChar;
+	UINT CodePage;
+	CHAR CodePageName[MAX_PATH];
+} CPINFOEXA,*LPCPINFOEXA;
+typedef struct _cpinfoexW {
+	UINT MaxCharSize;
+	BYTE DefaultChar[MAX_DEFAULTCHAR];
+	BYTE LeadByte[MAX_LEADBYTES];
+	WCHAR UnicodeDefaultChar;
+	UINT CodePage;
+	WCHAR CodePageName[MAX_PATH];
+} CPINFOEXW,*LPCPINFOEXW;
+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 struct nlsversioninfo {
+	DWORD dwNLSVersionInfoSize;
+	DWORD dwNLSVersion;
+	DWORD dwDefinedVersion;
+} NLSVERSIONINFO,*LPNLSVERSIONINFO;
+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;
+
+WINBASEAPI int WINAPI CompareStringA(LCID,DWORD,LPCSTR,int,LPCSTR,int);
+WINBASEAPI int WINAPI CompareStringW(LCID,DWORD,LPCWSTR,int,LPCWSTR,int);
+WINBASEAPI LCID WINAPI ConvertDefaultLocale(LCID);
+WINBASEAPI BOOL WINAPI EnumCalendarInfoA(CALINFO_ENUMPROCA,LCID,CALID,CALTYPE);
+WINBASEAPI BOOL WINAPI EnumCalendarInfoW(CALINFO_ENUMPROCW,LCID,CALID,CALTYPE);
+WINBASEAPI BOOL WINAPI EnumDateFormatsA(DATEFMT_ENUMPROCA,LCID,DWORD);
+WINBASEAPI BOOL WINAPI EnumDateFormatsW(DATEFMT_ENUMPROCW,LCID,DWORD);
+WINBASEAPI BOOL WINAPI EnumSystemCodePagesA(CODEPAGE_ENUMPROCA,DWORD);
+WINBASEAPI BOOL WINAPI EnumSystemCodePagesW(CODEPAGE_ENUMPROCW,DWORD);
+WINBASEAPI BOOL WINAPI EnumSystemGeoID(GEOCLASS,GEOID,GEO_ENUMPROC);
+WINBASEAPI BOOL WINAPI EnumSystemLocalesA(LOCALE_ENUMPROCA,DWORD);
+WINBASEAPI BOOL WINAPI EnumSystemLocalesW(LOCALE_ENUMPROCW,DWORD);
+WINBASEAPI BOOL WINAPI EnumTimeFormatsA(TIMEFMT_ENUMPROCA,LCID,DWORD);
+WINBASEAPI BOOL WINAPI EnumTimeFormatsW(TIMEFMT_ENUMPROCW,LCID,DWORD);
+WINBASEAPI int WINAPI FoldStringA(DWORD,LPCSTR,int,LPSTR,int);
+WINBASEAPI int WINAPI FoldStringW(DWORD,LPCWSTR,int,LPWSTR,int);
+WINBASEAPI UINT WINAPI GetACP(void);
+WINBASEAPI int WINAPI GetCalendarInfoA(LCID,CALID,CALTYPE,LPSTR,int,LPDWORD);
+WINBASEAPI int WINAPI GetCalendarInfoW(LCID,CALID,CALTYPE,LPWSTR,int,LPDWORD);
+WINBASEAPI BOOL WINAPI GetCPInfo(UINT,LPCPINFO);
+WINBASEAPI BOOL WINAPI GetCPInfoExA(UINT,DWORD,LPCPINFOEXA);
+WINBASEAPI BOOL WINAPI GetCPInfoExW(UINT,DWORD,LPCPINFOEXW);
+WINBASEAPI int WINAPI GetCurrencyFormatA(LCID,DWORD,LPCSTR,const CURRENCYFMTA*,LPSTR,int);
+WINBASEAPI int WINAPI GetCurrencyFormatW(LCID,DWORD,LPCWSTR,const CURRENCYFMTW*,LPWSTR,int);
+WINBASEAPI int WINAPI GetDateFormatA(LCID,DWORD,const SYSTEMTIME*,LPCSTR,LPSTR,int);
+WINBASEAPI int WINAPI GetDateFormatW(LCID,DWORD,const SYSTEMTIME*,LPCWSTR,LPWSTR,int);
+WINBASEAPI int WINAPI GetGeoInfoA(GEOID,GEOTYPE,LPSTR,int,LANGID);
+WINBASEAPI int WINAPI GetGeoInfoW(GEOID,GEOTYPE,LPWSTR,int,LANGID);
+WINBASEAPI int WINAPI GetLocaleInfoA(LCID,LCTYPE,LPSTR,int);
+WINBASEAPI int WINAPI GetLocaleInfoW(LCID,LCTYPE,LPWSTR,int);
+WINBASEAPI BOOL WINAPI GetNLSVersion(NLS_FUNCTION,LCID,LPNLSVERSIONINFO);
+WINBASEAPI int WINAPI GetNumberFormatA(LCID,DWORD,LPCSTR,const NUMBERFMTA*,LPSTR,int);
+WINBASEAPI int WINAPI GetNumberFormatW(LCID,DWORD,LPCWSTR,const NUMBERFMTW*,LPWSTR,int);
+WINBASEAPI UINT WINAPI GetOEMCP(void);
+WINBASEAPI BOOL WINAPI GetStringTypeA(LCID,DWORD,LPCSTR,int,LPWORD);
+WINBASEAPI BOOL WINAPI GetStringTypeW(DWORD,LPCWSTR,int,LPWORD);
+WINBASEAPI BOOL WINAPI GetStringTypeExA(LCID,DWORD,LPCSTR,int,LPWORD);
+WINBASEAPI BOOL WINAPI GetStringTypeExW(LCID,DWORD,LPCWSTR,int,LPWORD);
+WINBASEAPI LANGID WINAPI GetSystemDefaultLangID(void);
+WINBASEAPI LCID WINAPI GetSystemDefaultLCID(void);
+WINBASEAPI LCID WINAPI GetThreadLocale(void);
+WINBASEAPI int WINAPI GetTimeFormatA(LCID,DWORD,const SYSTEMTIME*,LPCSTR,LPSTR,int);
+WINBASEAPI int WINAPI GetTimeFormatW(LCID,DWORD,const SYSTEMTIME*,LPCWSTR,LPWSTR,int);
+WINBASEAPI LANGID WINAPI GetUserDefaultLangID(void);
+WINBASEAPI LCID WINAPI GetUserDefaultLCID(void);
+WINBASEAPI GEOID WINAPI GetUserGeoID(GEOCLASS);
+WINBASEAPI BOOL WINAPI IsDBCSLeadByte(BYTE);
+WINBASEAPI BOOL WINAPI IsDBCSLeadByteEx(UINT,BYTE);
+WINBASEAPI BOOL WINAPI IsNLSDefinedString(NLS_FUNCTION,DWORD,LPNLSVERSIONINFO,LPCWSTR,int);
+WINBASEAPI BOOL WINAPI IsValidCodePage(UINT);
+WINBASEAPI BOOL WINAPI IsValidLocale(LCID,DWORD);
+WINBASEAPI int WINAPI LCMapStringA(LCID,DWORD,LPCSTR,int,LPSTR,int);
+WINBASEAPI int WINAPI LCMapStringW(LCID,DWORD,LPCWSTR,int,LPWSTR,int);
+WINBASEAPI int WINAPI MultiByteToWideChar(UINT,DWORD,LPCSTR,int,LPWSTR,int);
+WINBASEAPI int WINAPI SetCalendarInfoA(LCID,CALID,CALTYPE,LPCSTR);
+WINBASEAPI int WINAPI SetCalendarInfoW(LCID,CALID,CALTYPE,LPCWSTR);
+WINBASEAPI BOOL WINAPI SetLocaleInfoA(LCID,LCTYPE,LPCSTR);
+WINBASEAPI BOOL WINAPI SetLocaleInfoW(LCID,LCTYPE,LPCWSTR);
+WINBASEAPI BOOL WINAPI SetThreadLocale(LCID);
+WINBASEAPI BOOL WINAPI SetUserGeoID(GEOID);
+WINBASEAPI int WINAPI WideCharToMultiByte(UINT,DWORD,LPCWSTR,int,LPSTR,int,LPCSTR,LPBOOL);
+#if (WINVER >= 0x0500)
+WINBASEAPI BOOL WINAPI EnumCalendarInfoExA(CALINFO_ENUMPROCEXA,LCID,CALID,CALTYPE);
+WINBASEAPI BOOL WINAPI EnumCalendarInfoExW(CALINFO_ENUMPROCEXW,LCID,CALID,CALTYPE);
+WINBASEAPI BOOL WINAPI EnumDateFormatsExA(DATEFMT_ENUMPROCEXA,LCID,DWORD);
+WINBASEAPI BOOL WINAPI EnumDateFormatsExW(DATEFMT_ENUMPROCEXW,LCID,DWORD);
+WINBASEAPI BOOL WINAPI EnumSystemLanguageGroupsA(LANGUAGEGROUP_ENUMPROCA,DWORD,LONG_PTR);
+WINBASEAPI BOOL WINAPI EnumSystemLanguageGroupsW(LANGUAGEGROUP_ENUMPROCW,DWORD,LONG_PTR);
+WINBASEAPI BOOL WINAPI EnumLanguageGroupLocalesA(LANGGROUPLOCALE_ENUMPROCA,LGRPID,DWORD,LONG_PTR);
+WINBASEAPI BOOL WINAPI EnumLanguageGroupLocalesW(LANGGROUPLOCALE_ENUMPROCW,LGRPID,DWORD,LONG_PTR);
+WINBASEAPI BOOL WINAPI EnumUILanguagesA(UILANGUAGE_ENUMPROCA,DWORD,LONG_PTR);
+WINBASEAPI BOOL WINAPI EnumUILanguagesW(UILANGUAGE_ENUMPROCW,DWORD,LONG_PTR);
+WINBASEAPI LANGID WINAPI GetSystemDefaultUILanguage(void);
+WINBASEAPI LANGID WINAPI GetUserDefaultUILanguage(void);
+WINBASEAPI BOOL WINAPI IsValidLanguageGroup(LGRPID,DWORD);
+#endif /* (WINVER >= 0x0500) */
+
+#ifdef UNICODE
+#define CALINFO_ENUMPROC CALINFO_ENUMPROCW
+#define CALINFO_ENUMPROCEX CALINFO_ENUMPROCEXW
+#define LOCALE_ENUMPROC LOCALE_ENUMPROCW
+#define CODEPAGE_ENUMPROC CODEPAGE_ENUMPROCW
+#define DATEFMT_ENUMPROC DATEFMT_ENUMPROCW
+#define DATEFMT_ENUMPROCEX DATEFMT_ENUMPROCEXW
+#define TIMEFMT_ENUMPROC TIMEFMT_ENUMPROCW
+#define LANGUAGEGROUP_ENUMPROC LANGUAGEGROUP_ENUMPROCW
+#define LANGGROUPLOCALE_ENUMPROC LANGGROUPLOCALE_ENUMPROCW
+#define UILANGUAGE_ENUMPROC UILANGUAGE_ENUMPROCW
+typedef CPINFOEXW CPINFOEX;
+typedef LPCPINFOEXW LPCPINFOEX;
+typedef CURRENCYFMTW CURRENCYFMT;
+typedef LPCURRENCYFMTW LPCURRENCYFMT;
+typedef NUMBERFMTW NUMBERFMT;
+typedef LPNUMBERFMTW LPNUMBERFMT;
+#define CompareString CompareStringW
+#define EnumCalendarInfo EnumCalendarInfoW
+#define EnumSystemCodePages EnumSystemCodePagesW
+#define EnumSystemLocales EnumSystemLocalesW
+#define EnumTimeFormats EnumTimeFormatsW
+#define FoldString FoldStringW
+#define GetCalendarInfo GetCalendarInfoW
+#define GetCPInfoEx GetCPInfoExW
+#define GetCurrencyFormat GetCurrencyFormatW
+#define GetDateFormat GetDateFormatW
+#define GetGeoInfo GetGeoInfoW
+#define GetLocaleInfo GetLocaleInfoW
+#define GetNumberFormat GetNumberFormatW
+#define GetStringTypeEx GetStringTypeExW
+#define GetTimeFormat GetTimeFormatW
+#define LCMapString LCMapStringW
+#define SetCalendarInfo  SetCalendarInfoW
+#define SetLocaleInfo SetLocaleInfoW
+#if (WINVER >= 0x0500)
+#define EnumCalendarInfoEx EnumCalendarInfoExW
+#define EnumDateFormatsEx EnumDateFormatsExW
+#define EnumSystemLanguageGroups EnumSystemLanguageGroupsW
+#define EnumLanguageGroupLocales EnumLanguageGroupLocalesW
+#define EnumUILanguages EnumUILanguagesW
+#endif /* (WINVER >= 0x0500) */
+#else
+#define CALINFO_ENUMPROC CALINFO_ENUMPROCA
+#define CALINFO_ENUMPROCEX CALINFO_ENUMPROCEXA
+#define LOCALE_ENUMPROC LOCALE_ENUMPROCA
+#define CODEPAGE_ENUMPROC CODEPAGE_ENUMPROCA
+#define DATEFMT_ENUMPROC DATEFMT_ENUMPROCA
+#define DATEFMT_ENUMPROCEX DATEFMT_ENUMPROCEXA
+#define TIMEFMT_ENUMPROC TIMEFMT_ENUMPROCA
+#define LANGUAGEGROUP_ENUMPROC LANGUAGEGROUP_ENUMPROCA
+#define LANGGROUPLOCALE_ENUMPROC LANGGROUPLOCALE_ENUMPROCA
+#define UILANGUAGE_ENUMPROC UILANGUAGE_ENUMPROCA
+typedef CPINFOEXA CPINFOEX;
+typedef LPCPINFOEXA LPCPINFOEX;
+typedef CURRENCYFMTA CURRENCYFMT;
+typedef LPCURRENCYFMTA LPCURRENCYFMT;
+typedef NUMBERFMTA NUMBERFMT;
+typedef LPNUMBERFMTA LPNUMBERFMT;
+#define CompareString CompareStringA
+#define EnumCalendarInfo EnumCalendarInfoA
+#define EnumSystemCodePages EnumSystemCodePagesA
+#define EnumSystemLocales EnumSystemLocalesA
+#define EnumTimeFormats EnumTimeFormatsA
+#define FoldString FoldStringA
+#define GetCalendarInfo GetCalendarInfoA
+#define GetCPInfoEx GetCPInfoExA
+#define GetCurrencyFormat GetCurrencyFormatA
+#define GetDateFormat GetDateFormatA
+#define GetGeoInfo GetGeoInfoA
+#define GetLocaleInfo GetLocaleInfoA
+#define GetNumberFormat GetNumberFormatA
+#define GetStringTypeEx GetStringTypeExA
+#define GetTimeFormat GetTimeFormatA
+#define LCMapString LCMapStringA
+#define SetCalendarInfo SetCalendarInfoA
+#define SetLocaleInfo SetLocaleInfoA
+#if (WINVER >= 0x0500)
+#define EnumCalendarInfoEx EnumCalendarInfoExA
+#define EnumDateFormatsEx EnumDateFormatsExA
+#define EnumSystemLanguageGroups EnumSystemLanguageGroupsA
+#define EnumLanguageGroupLocales EnumLanguageGroupLocalesA
+#define EnumUILanguages EnumUILanguagesA
+#endif /* (WINVER >= 0x0500) */
+#endif /* UNICODE */
+#endif /* RC_INVOKED */
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/winnt.h
===================================================================
--- Daodan/MinGW/include/winnt.h	(revision 1046)
+++ Daodan/MinGW/include/winnt.h	(revision 1046)
@@ -0,0 +1,4324 @@
+/*
+ * winnt.h
+ *
+ * Win32-API macros and definitions originating from the WinNT product line.
+ *
+ * $Id: winnt.h,v 9bdd9bcd51f9 2016/06/04 13:44:52 keithmarshall $
+ *
+ * Written by Anders Norlander <anorland@hem2.passagen.se>
+ * Copyright (C) 1998-2011, 2016, MinGW.org Project
+ *
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ *
+ */
+#ifndef _WINNT_H
+#pragma GCC system_header
+#define _WINNT_H
+
+#include <winerror.h>
+
+#ifndef RC_INVOKED
+#include <string.h>
+
+_BEGIN_C_DECLS
+
+/* FIXME: add more architectures. Is there a way to specify this in GCC? */
+#ifdef _X86_
+#define UNALIGNED
+#else
+#define UNALIGNED
+#endif
+
+#ifndef DECLSPEC_ALIGN
+#ifdef __GNUC__
+#define DECLSPEC_ALIGN(x)   __attribute__((__aligned__(x)))
+#else
+#define DECLSPEC_ALIGN(x)
+#endif
+#endif
+
+#ifndef DECLSPEC_SELECTANY
+#if (__GNUC__ >= 4)
+#define DECLSPEC_SELECTANY  __attribute__((__selectany__))
+#else
+#define DECLSPEC_SELECTANY
+#endif
+#endif
+
+#ifndef FORCEINLINE
+#if (__GNUC__ >= 3)
+#define FORCEINLINE	    __inline__ __attribute__((__always_inline__))
+#else
+#define FORCEINLINE	    __inline__
+#endif
+#endif
+
+#ifndef C_ASSERT
+#define C_ASSERT(expr)  typedef char __C_ASSERT__[(expr)?1:-1]
+#endif
+
+#ifndef VOID
+#define VOID		void
+#endif
+typedef char		CHAR;
+typedef short		SHORT;
+typedef long		LONG;
+typedef char		CCHAR,  *PCCHAR;
+typedef unsigned char   UCHAR,  *PUCHAR;
+typedef unsigned short	USHORT, *PUSHORT;
+typedef unsigned long	ULONG,  *PULONG;
+typedef char		*PSZ;
+
+typedef void		*PVOID, *LPVOID;
+
+/* FIXME for __WIN64 */
+#ifndef __ptr64
+#define __ptr64
+#endif
+typedef void		*__ptr64 PVOID64;
+
+#ifndef _WCHAR_T_DEFINED
+#define _WCHAR_T_DEFINED
+#ifndef _WCHAR_T_
+#define _WCHAR_T_
+#undef __need_wchar_t
+#ifndef __cplusplus
+typedef unsigned short wchar_t;
+#endif
+#endif
+#endif
+
+typedef wchar_t WCHAR;
+typedef WCHAR *PWCHAR, *LPWCH, *PWCH, *NWPSTR, *LPWSTR, *PWSTR;
+typedef CONST WCHAR *LPCWCH, *PCWCH, *LPCWSTR, *PCWSTR;
+typedef CHAR *PCHAR, *LPCH, *PCH, *NPSTR, *LPSTR, *PSTR;
+typedef CONST CHAR *LPCCH, *PCSTR, *LPCSTR;
+#ifndef _TCHAR_DEFINED
+#define _TCHAR_DEFINED
+#ifdef UNICODE
+/*
+ * NOTE: This tests UNICODE, which is different from the _UNICODE define
+ *       used to differentiate standard C runtime calls.
+ */
+typedef WCHAR TCHAR;
+typedef WCHAR _TCHAR;
+#else
+typedef CHAR TCHAR;
+typedef CHAR _TCHAR;
+#endif
+#endif
+typedef TCHAR TBYTE, *PTCH, *PTBYTE;
+typedef TCHAR *LPTCH, *PTSTR, *LPTSTR, *LP, *PTCHAR;
+typedef const TCHAR *LPCTSTR;
+#ifdef UNICODE
+/*
+ * __TEXT is a private macro whose specific use is to force the expansion of a
+ * macro passed as an argument to the macro TEXT.  DO NOT use this
+ * macro within your programs.  It's name and function could change without
+ * notice.
+ */
+#define __TEXT(q) L##q
+#else
+#define __TEXT(q) q
+#endif
+/*
+ * UNICODE a constant string when UNICODE is defined, else returns the string
+ * unmodified.
+ * The corresponding macros  _TEXT() and _T() for mapping _UNICODE strings
+ * passed to C runtime functions are defined in mingw/tchar.h
+ */
+#define TEXT(q) 	 __TEXT(q)
+typedef SHORT *PSHORT;
+typedef LONG *PLONG;
+#ifdef STRICT
+typedef void *HANDLE;
+#define DECLARE_HANDLE(n)  typedef struct n##__{int i;}*n
+#else
+typedef PVOID HANDLE;
+#define DECLARE_HANDLE(n)  typedef HANDLE n
+#endif
+typedef HANDLE *PHANDLE, *LPHANDLE;
+typedef DWORD LCID;
+typedef PDWORD PLCID;
+typedef WORD LANGID;
+#ifdef __GNUC__
+#define _HAVE_INT64
+#define _INTEGRAL_MAX_BITS  64
+#undef __int64
+#define __int64 long long
+#elif defined(__WATCOMC__) && (defined(_INTEGRAL_MAX_BITS) && _INTEGRAL_MAX_BITS >= 64)
+#define _HAVE_INT64
+#endif /* __GNUC__/__WATCOMC */
+#if defined(_HAVE_INT64) || (defined(_INTEGRAL_MAX_BITS) && _INTEGRAL_MAX_BITS >= 64)
+typedef __int64 LONGLONG;
+typedef unsigned __int64 DWORDLONG;
+#else
+typedef double LONGLONG, DWORDLONG;
+#endif
+typedef LONGLONG *PLONGLONG;
+typedef DWORDLONG *PDWORDLONG;
+typedef DWORDLONG ULONGLONG, *PULONGLONG;
+typedef LONGLONG USN;
+#ifdef _HAVE_INT64
+#define Int32x32To64(a,b)		((LONGLONG)(a)*(LONGLONG)(b))
+#define UInt32x32To64(a,b)		((DWORDLONG)(a)*(DWORDLONG)(b))
+#define Int64ShllMod32(a,b)		((DWORDLONG)(a)<<(b))
+#define Int64ShraMod32(a,b)		((LONGLONG)(a)>>(b))
+#define Int64ShrlMod32(a,b)		((DWORDLONG)(a)>>(b))
+#endif
+#define ANSI_NULL				   '\0'
+#define UNICODE_NULL				  L'\0'
+typedef BYTE BOOLEAN, *PBOOLEAN;
+
+_END_C_DECLS
+
+#endif	/* ! RC_INVOKED */
+
+typedef BYTE FCHAR;
+typedef WORD FSHORT;
+typedef DWORD FLONG;
+
+#define NTAPI  __stdcall
+#include <basetsd.h>
+#define ACE_OBJECT_TYPE_PRESENT 		0x00000001
+#define ACE_INHERITED_OBJECT_TYPE_PRESENT	0x00000002
+#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
+/* also in ddk/ntifs.h */
+#define COMPRESSION_FORMAT_NONE 		   (0x0000)
+#define COMPRESSION_FORMAT_DEFAULT		   (0x0001)
+#define COMPRESSION_FORMAT_LZNT1		   (0x0002)
+#define COMPRESSION_ENGINE_STANDARD		   (0x0000)
+#define COMPRESSION_ENGINE_MAXIMUM		   (0x0100)
+#define COMPRESSION_ENGINE_HIBER		   (0x0200)
+#define ACCESS_ALLOWED_ACE_TYPE 		      (0x0)
+#define ACCESS_DENIED_ACE_TYPE			      (0x1)
+#define SYSTEM_AUDIT_ACE_TYPE			      (0x2)
+#define SYSTEM_ALARM_ACE_TYPE			      (0x3)
+/*end ntifs.h */
+#define ANYSIZE_ARRAY					 1
+#define OBJECT_INHERIT_ACE				 1
+#define CONTAINER_INHERIT_ACE				 2
+#define NO_PROPAGATE_INHERIT_ACE			 4
+#define INHERIT_ONLY_ACE				 8
+#define INHERITED_ACE					16
+
+#define VALID_INHERIT_FLAGS  \
+    OBJECT_INHERIT_ACE | CONTAINER_INHERIT_ACE | NO_PROPAGATE_INHERIT_ACE | \
+    INHERIT_ONLY_ACE   | INHERITED_ACE
+
+#define SUCCESSFUL_ACCESS_ACE_FLAG			64
+#define FAILED_ACCESS_ACE_FLAG			       128
+#define DELETE					0x00010000L
+#define READ_CONTROL				   0x20000L
+#define WRITE_DAC				   0x40000L
+#define WRITE_OWNER				   0x80000L
+#define SYNCHRONIZE				  0x100000L
+#define STANDARD_RIGHTS_REQUIRED		   0xF0000
+#define STANDARD_RIGHTS_READ			   0x20000
+#define STANDARD_RIGHTS_WRITE			   0x20000
+#define STANDARD_RIGHTS_EXECUTE 		   0x20000
+#define STANDARD_RIGHTS_ALL			  0x1F0000
+#define SPECIFIC_RIGHTS_ALL			    0xFFFF
+#define ACCESS_SYSTEM_SECURITY			 0x1000000
+
+#define MAXIMUM_ALLOWED 			 0x2000000
+#define GENERIC_READ				0x80000000
+#define GENERIC_WRITE				0x40000000
+#define GENERIC_EXECUTE 			0x20000000
+#define GENERIC_ALL				0x10000000
+
+#define INVALID_FILE_ATTRIBUTES 		((DWORD)-1)
+
+/* Also in ddk/winddk.h */
+#define FILE_LIST_DIRECTORY			0x00000001
+#define FILE_READ_DATA				0x00000001
+#define FILE_ADD_FILE				0x00000002
+#define FILE_WRITE_DATA 			0x00000002
+#define FILE_ADD_SUBDIRECTORY			0x00000004
+#define FILE_APPEND_DATA			0x00000004
+#define FILE_CREATE_PIPE_INSTANCE		0x00000004
+#define FILE_READ_EA				0x00000008
+#define FILE_READ_PROPERTIES			0x00000008
+#define FILE_WRITE_EA				0x00000010
+#define FILE_WRITE_PROPERTIES			0x00000010
+#define FILE_EXECUTE				0x00000020
+#define FILE_TRAVERSE				0x00000020
+#define FILE_DELETE_CHILD			0x00000040
+#define FILE_READ_ATTRIBUTES			0x00000080
+#define FILE_WRITE_ATTRIBUTES			0x00000100
+
+#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_ATTRIBUTE_VALID_FLAGS		0x00017fb7
+#define FILE_ATTRIBUTE_VALID_SET_FLAGS		0x000031a7
+
+#define FILE_COPY_STRUCTURED_STORAGE		0x00000041
+#define FILE_STRUCTURED_STORAGE 		0x00000441
+
+#define FILE_VALID_OPTION_FLAGS 		0x00ffffff
+#define FILE_VALID_PIPE_OPTION_FLAGS		0x00000032
+#define FILE_VALID_MAILSLOT_OPTION_FLAGS	0x00000032
+#define FILE_VALID_SET_FLAGS			0x00000036
+
+#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_FOR_RECOVERY			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_ALL_ACCESS     ( STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x1FF )
+
+#define FILE_GENERIC_EXECUTE	\
+  ( STANDARD_RIGHTS_EXECUTE | FILE_READ_ATTRIBUTES | FILE_EXECUTE | SYNCHRONIZE \
+  )
+#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	   \
+  )
+/* end winddk.h */
+/* also in ddk/ntifs.h */
+#define FILE_NOTIFY_CHANGE_FILE_NAME		0x00000001
+#define FILE_NOTIFY_CHANGE_DIR_NAME		0x00000002
+#define FILE_NOTIFY_CHANGE_NAME 		0x00000003
+#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_EA			0x00000080
+#define FILE_NOTIFY_CHANGE_SECURITY		0x00000100
+#define FILE_NOTIFY_CHANGE_STREAM_NAME		0x00000200
+#define FILE_NOTIFY_CHANGE_STREAM_SIZE		0x00000400
+#define FILE_NOTIFY_CHANGE_STREAM_WRITE 	0x00000800
+#define FILE_NOTIFY_VALID_MASK			0x00000fff
+
+#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 FS_LFN_APIS				0x00004000
+#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
+/* Note: These flags only have a meaning starting with Windows 7/2008 R2.
+   Their absence on older OSes does NOT mean that a filesystem is missing
+   that property. */
+#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 IO_COMPLETION_QUERY_STATE		    0x0001
+#define IO_COMPLETION_MODIFY_STATE		    0x0002
+#define IO_COMPLETION_ALL_ACCESS	(STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3)
+/* end ntifs.h */
+
+/* also in ddk/winddk.h */
+#define DUPLICATE_CLOSE_SOURCE			0x00000001
+#define DUPLICATE_SAME_ACCESS			0x00000002
+#define DUPLICATE_SAME_ATTRIBUTES		0x00000004
+/* end winddk.k */
+
+#define MAILSLOT_NO_MESSAGE			((DWORD)-1)
+#define MAILSLOT_WAIT_FOREVER			((DWORD)-1)
+#define PROCESS_TERMINATE				 1
+#define PROCESS_CREATE_THREAD				 2
+#define PROCESS_SET_SESSIONID				 4
+#define PROCESS_VM_OPERATION				 8
+#define PROCESS_VM_READ 				16
+#define PROCESS_VM_WRITE				32
+#define PROCESS_DUP_HANDLE				64
+#define PROCESS_CREATE_PROCESS			       128
+#define PROCESS_SET_QUOTA			       256
+#define PROCESS_SUSPEND_RESUME			    0x0800
+#define PROCESS_SET_INFORMATION 		       512
+#define PROCESS_QUERY_INFORMATION		      1024
+#define PROCESS_QUERY_LIMITED_INFORMATION	    0x1000
+
+#define PROCESS_ALL_ACCESS		(STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0xFFF)
+#define THREAD_TERMINATE				 1
+#define THREAD_SUSPEND_RESUME				 2
+#define THREAD_GET_CONTEXT				 8
+#define THREAD_SET_CONTEXT				16
+#define THREAD_SET_INFORMATION				32
+#define THREAD_QUERY_INFORMATION			64
+#define THREAD_SET_THREAD_TOKEN 		       128
+#define THREAD_IMPERSONATE			       256
+#define THREAD_DIRECT_IMPERSONATION		     0x200
+#define THREAD_ALL_ACCESS		(STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3FF)
+#define THREAD_BASE_PRIORITY_LOWRT			15
+#define THREAD_BASE_PRIORITY_MAX			 2
+#define THREAD_BASE_PRIORITY_MIN		       (-2)
+#define THREAD_BASE_PRIORITY_IDLE		      (-15)
+#define EXCEPTION_NONCONTINUABLE			 1
+#define EXCEPTION_MAXIMUM_PARAMETERS			15
+#define MUTANT_QUERY_STATE			    0x0001
+#define MUTANT_ALL_ACCESS		(STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|MUTANT_QUERY_STATE)
+#define TIMER_QUERY_STATE			    0x0001
+#define TIMER_MODIFY_STATE			    0x0002
+#define TIMER_ALL_ACCESS		(STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|TIMER_QUERY_STATE|TIMER_MODIFY_STATE)
+/*
+ * To prevent gcc compiler warnings, bracket these defines when initialising
+ * a  SID_IDENTIFIER_AUTHORITY, eg.
+ * SID_IDENTIFIER_AUTHORITY aNullSidAuthority = {SECURITY_NULL_SID_AUTHORITY};
+ */
+#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_NT_AUTHORITY			{0,0,0,0,0,5}
+#define SECURITY_MANDATORY_LABEL_AUTHORITY	{0,0,0,0,0,16}
+#define SECURITY_NULL_RID				 0
+#define SECURITY_WORLD_RID			(0x00000000L)
+#define SECURITY_LOCAL_RID				 0
+#define SECURITY_CREATOR_OWNER_RID			 0
+#define SECURITY_CREATOR_GROUP_RID			 1
+#define SECURITY_DIALUP_RID				 1
+#define SECURITY_NETWORK_RID				 2
+#define SECURITY_BATCH_RID				 3
+#define SECURITY_INTERACTIVE_RID			 4
+#define SECURITY_LOGON_IDS_RID				 5
+#define SECURITY_SERVICE_RID				 6
+#define SECURITY_LOCAL_SYSTEM_RID			18
+#define SECURITY_BUILTIN_DOMAIN_RID			32
+#define SECURITY_PRINCIPAL_SELF_RID			10
+#define SECURITY_CREATOR_OWNER_SERVER_RID	       0x2
+#define SECURITY_CREATOR_GROUP_SERVER_RID	       0x3
+#define SECURITY_LOGON_IDS_RID_COUNT		       0x3
+#define SECURITY_ANONYMOUS_LOGON_RID		       0x7
+#define SECURITY_PROXY_RID			       0x8
+#define SECURITY_ENTERPRISE_CONTROLLERS_RID	       0x9
+#define SECURITY_SERVER_LOGON_RID		SECURITY_ENTERPRISE_CONTROLLERS_RID
+#define SECURITY_AUTHENTICATED_USER_RID 	       0xB
+#define SECURITY_RESTRICTED_CODE_RID		       0xC
+#define SECURITY_NT_NON_UNIQUE_RID		      0x15
+#define SID_REVISION					 1
+#if (_WIN32_WINNT >= 0x0600)
+#define SID_HASH_SIZE					32
+#endif
+#define DOMAIN_USER_RID_ADMIN			     0x1F4L
+#define DOMAIN_USER_RID_GUEST			     0x1F5L
+#define DOMAIN_GROUP_RID_ADMINS 		     0x200L
+#define DOMAIN_GROUP_RID_USERS			     0x201L
+#define DOMAIN_ALIAS_RID_ADMINS 		     0x220L
+#define DOMAIN_ALIAS_RID_USERS			     0x221L
+#define DOMAIN_ALIAS_RID_GUESTS 		     0x222L
+#define DOMAIN_ALIAS_RID_POWER_USERS		     0x223L
+#define DOMAIN_ALIAS_RID_ACCOUNT_OPS		     0x224L
+#define DOMAIN_ALIAS_RID_SYSTEM_OPS		     0x225L
+#define DOMAIN_ALIAS_RID_PRINT_OPS		     0x226L
+#define DOMAIN_ALIAS_RID_BACKUP_OPS		     0x227L
+#define DOMAIN_ALIAS_RID_REPLICATOR		     0x228L
+#define DOMAIN_ALIAS_RID_REMOTE_DESKTOP_USERS	     0x22BL
+#define SECURITY_MANDATORY_UNTRUSTED_RID		 0
+#define SECURITY_MANDATORY_LOW_RID		    0x1000
+#define SECURITY_MANDATORY_MEDIUM_RID		    0x2000
+#define SECURITY_MANDATORY_HIGH_RID		    0x3000
+#define SECURITY_MANDATORY_SYSTEM_RID		    0x4000
+#define SECURITY_MANDATORY_PROTECTED_PROCESS_RID    0x5000
+
+#define SECURITY_MANDATORY_MAXIMUM_USER_RID	SECURITY_MANDATORY_SYSTEM_RID
+#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_CREATE_GLOBAL_NAME			TEXT("SeCreateGlobalPrivilege")
+#define SE_UNDOCK_NAME				TEXT("SeUndockPrivilege")
+#define SE_MANAGE_VOLUME_NAME			TEXT("SeManageVolumePrivilege")
+#define SE_IMPERSONATE_NAME			TEXT("SeImpersonatePrivilege")
+#define SE_ENABLE_DELEGATION_NAME		TEXT("SeEnableDelegationPrivilege")
+#define SE_SYNC_AGENT_NAME			TEXT("SeSyncAgentPrivilege")
+#define SE_TRUSTED_CREDMAN_ACCESS_NAME		TEXT("SeTrustedCredManAccessPrivilege")
+#define SE_RELABEL_NAME 			TEXT("SeRelabelPrivilege")
+#define SE_INCREASE_WORKING_SET_NAME		TEXT("SeIncreaseWorkingSetPrivilege")
+#define SE_TIME_ZONE_NAME			TEXT("SeTimeZonePrivilege")
+#define SE_CREATE_SYMBOLIC_LINK_NAME		TEXT("SeCreateSymbolicLinkPrivilege")
+#define SE_GROUP_MANDATORY				 1
+#define SE_GROUP_ENABLED_BY_DEFAULT			 2
+#define SE_GROUP_ENABLED				 4
+#define SE_GROUP_OWNER					 8
+#define SE_GROUP_USE_FOR_DENY_ONLY			16
+#define SE_GROUP_INTEGRITY				32
+#define SE_GROUP_INTEGRITY_ENABLED			64
+#define SE_GROUP_LOGON_ID			3221225472U
+#define SE_GROUP_RESOURCE			 536870912
+#define LANG_NEUTRAL				      0x00
+#define LANG_ARABIC				      0x01
+#define LANG_BULGARIAN				      0x02
+#define LANG_CATALAN				      0x03
+#define LANG_CHINESE				      0x04
+#define LANG_CZECH				      0x05
+#define LANG_DANISH				      0x06
+#define LANG_GERMAN				      0x07
+#define LANG_GREEK				      0x08
+#define LANG_ENGLISH				      0x09
+#define LANG_SPANISH				      0x0a
+#define LANG_FINNISH				      0x0b
+#define LANG_FRENCH				      0x0c
+#define LANG_HEBREW				      0x0d
+#define LANG_HUNGARIAN				      0x0e
+#define LANG_ICELANDIC				      0x0f
+#define LANG_ITALIAN				      0x10
+#define LANG_JAPANESE				      0x11
+#define LANG_KOREAN				      0x12
+#define LANG_DUTCH				      0x13
+#define LANG_NORWEGIAN				      0x14
+#define LANG_POLISH				      0x15
+#define LANG_PORTUGUESE 			      0x16
+#define LANG_ROMANIAN				      0x18
+#define LANG_RUSSIAN				      0x19
+#define LANG_CROATIAN				      0x1a
+#define LANG_SERBIAN				      0x1a
+#define LANG_SERBIAN_NEUTRAL			    0x7c1a
+#define LANG_BOSNIAN				      0x1a
+#define LANG_BOSNIAN_NEUTRAL			    0x781a
+#define LANG_SLOVAK				      0x1b
+#define LANG_ALBANIAN				      0x1c
+#define LANG_SWEDISH				      0x1d
+#define LANG_THAI				      0x1e
+#define LANG_TURKISH				      0x1f
+#define LANG_URDU				      0x20
+#define LANG_INDONESIAN 			      0x21
+#define LANG_UKRAINIAN				      0x22
+#define LANG_BELARUSIAN 			      0x23
+#define LANG_SLOVENIAN				      0x24
+#define LANG_ESTONIAN				      0x25
+#define LANG_LATVIAN				      0x26
+#define LANG_LITHUANIAN 			      0x27
+#define LANG_PERSIAN				      0x29
+#define LANG_FARSI				  LANG_PERSIAN
+#define LANG_VIETNAMESE 			      0x2a
+#define LANG_ARMENIAN				      0x2b
+#define LANG_AZERI				      0x2c
+#define LANG_BASQUE				      0x2d
+#define LANG_LOWER_SORBIAN			      0x2e
+#define LANG_UPPER_SORBIAN			      0x2e
+#define LANG_MACEDONIAN 			      0x2f
+#define LANG_TSWANA				      0x32
+#define LANG_XHOSA				      0x34
+#define LANG_ZULU				      0x35
+#define LANG_AFRIKAANS				      0x36
+#define LANG_GEORGIAN				      0x37
+#define LANG_FAEROESE				      0x38
+#define LANG_HINDI				      0x39
+#define LANG_MALTESE				      0x3a
+#define LANG_SAMI				      0x3b
+#define LANG_IRISH				      0x3c
+#define LANG_MALAY				      0x3e
+#define LANG_KAZAK				      0x3f
+#define LANG_KYRGYZ				      0x40
+#define LANG_SWAHILI				      0x41
+#define LANG_UZBEK				      0x43
+#define LANG_TATAR				      0x44
+#define LANG_BENGALI				      0x45
+#define LANG_PUNJABI				      0x46
+#define LANG_GUJARATI				      0x47
+#define LANG_ORIYA				      0x48
+#define LANG_TAMIL				      0x49
+#define LANG_TELUGU				      0x4a
+#define LANG_KANNADA				      0x4b
+#define LANG_MALAYALAM				      0x4c
+#define LANG_ASSAMESE				      0x4d
+#define LANG_MARATHI				      0x4e
+#define LANG_SANSKRIT				      0x4f
+#define LANG_MONGOLIAN				      0x50
+#define LANG_TIBETAN				      0x51
+#define LANG_WELSH				      0x52
+#define LANG_KHMER				      0x53
+#define LANG_LAO				      0x54
+#define LANG_GALICIAN				      0x56
+#define LANG_KONKANI				      0x57
+#define LANG_MANIPURI				      0x58
+#define LANG_SINDHI				      0x59
+#define LANG_SYRIAC				      0x5a
+#define LANG_SINHALESE				      0x5b
+#define LANG_INUKTITUT				      0x5d
+#define LANG_AMHARIC				      0x5e
+#define LANG_TAMAZIGHT				      0x5f
+#define LANG_KASHMIRI				      0x60
+#define LANG_NEPALI				      0x61
+#define LANG_FRISIAN				      0x62
+#define LANG_PASHTO				      0x63
+#define LANG_FILIPINO				      0x64
+#define LANG_DIVEHI				      0x65
+#define LANG_HAUSA				      0x68
+#define LANG_YORUBA				      0x6a
+#define LANG_QUECHUA				      0x6b
+#define LANG_SOTHO				      0x6c
+#define LANG_BASHKIR				      0x6d
+#define LANG_LUXEMBOURGISH			      0x6e
+#define LANG_GREENLANDIC			      0x6f
+#define LANG_IGBO				      0x70
+#define LANG_TIGRIGNA				      0x73
+#define LANG_YI 				      0x78
+#define LANG_MAPUDUNGUN 			      0x7a
+#define LANG_MOHAWK				      0x7c
+#define LANG_BRETON				      0x7e
+#define LANG_INVARIANT				      0x7f
+#define LANG_UIGHUR				      0x80
+#define LANG_MAORI				      0x81
+#define LANG_OCCITAN				      0x82
+#define LANG_CORSICAN				      0x83
+#define LANG_ALSATIAN				      0x84
+#define LANG_YAKUT				      0x85
+#define LANG_KICHE				      0x86
+#define LANG_KINYARWANDA			      0x87
+#define LANG_WOLOF				      0x88
+#define LANG_DARI				      0x8c
+#define LANG_MALAGASY				      0x8d
+#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_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_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_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
+#if (WINVER >= 0x0600)
+#define SUBLANG_ENGLISH_IRELAND 		      0x06
+#endif
+#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_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 /* SUBLANG_HAUSA_NIGERIA_LATIN is what MS defines */
+#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_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 /* SUBLANG_LAO_LAO is what MS defines */
+#define SUBLANG_LATVIAN_LATVIA			      0x01
+#if (WINVER >= 0x0600)
+#define SUBLANG_LITHUANIAN_LITHUANIA		      0x01
+#endif
+#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
+#if (WINVER >= 0x0600)
+#define SUBLANG_PORTUGUESE_PORTUGAL		      0x02
+#endif
+#define SUBLANG_PORTUGUESE			      0x02
+#define SUBLANG_PUNJABI_INDIA			      0x01
+/* ??? #define SUBLANG_PUNJABI_PAKISTAN		      0x01 ??? */
+#define SUBLANG_QUECHUA_BOLIVIA 		      0x01
+#define SUBLANG_QUECHUA_ECUADOR 		      0x02
+#define SUBLANG_QUECHUA_PERU			      0x03
+#define SUBLANG_ROMANIAN_ROMANIA		      0x01
+/* ??? #define SUBLANG_ROMANIAN_MOLDOVA		      0x01 ??? */
+#define SUBLANG_ROMANSH_SWITZERLAND		      0x01
+#define SUBLANG_RUSSIAN_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_SERBIAN_LATIN			      0x02
+#define SUBLANG_SERBIAN_CYRILLIC		      0x03
+#define SUBLANG_SERBIAN_BOSNIA_HERZEGOVINA_LATIN      0x06
+#define SUBLANG_SERBIAN_BOSNIA_HERZEGOVINA_CYRILLIC   0x07
+#define SUBLANG_SINDHI_AFGHANISTAN		      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
+#if (WINVER >= 0x0600)
+#define SUBLANG_SWEDISH_SWEDEN			      0x01
+#endif
+#define SUBLANG_SWEDISH 			      0x01
+#define SUBLANG_SWEDISH_FINLAND 		      0x02
+#define SUBLANG_SYRIAC				      0x01
+#define SUBLANG_SYRIAC_SYRIA			SUBLANG_SYRIAC /* SUBLANG_SYRIAC_SYRIA is what MSDN mentions */
+#define SUBLANG_TAJIK_TAJIKISTAN		      0x01
+#define SUBLANG_TAMAZIGHT_ALGERIA_LATIN 	      0x02
+#define SUBLANG_TAMIL_INDIA			      0x01
+#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_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_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 NLS_VALID_LOCALE_MASK			   1048575
+#define SORT_DEFAULT					 0
+#define SORT_JAPANESE_XJIS				 0
+#define SORT_JAPANESE_UNICODE				 1
+#define SORT_CHINESE_BIG5				 0
+#define SORT_CHINESE_PRCP				 0
+#define SORT_CHINESE_UNICODE				 1
+#define SORT_CHINESE_PRC				 2
+#define SORT_CHINESE_BOPOMOFO				 3
+#define SORT_KOREAN_KSC 				 0
+#define SORT_KOREAN_UNICODE				 1
+#define SORT_GERMAN_PHONE_BOOK				 1
+#define SORT_HUNGARIAN_DEFAULT				 0
+#define SORT_HUNGARIAN_TECHNICAL			 1
+#define SORT_GEORGIAN_TRADITIONAL			 0
+#define SORT_GEORGIAN_MODERN				 1
+#define MAKELANGID(p,s) 		((((WORD)(s))<<10)|(WORD)(p))
+#define MAKELCID(l,s)			((DWORD)((((DWORD)((WORD)(s)))<<16)|((DWORD)((WORD)(l)))))
+#define PRIMARYLANGID(l)		((WORD)(l)&0x3ff)
+#define SORTIDFROMLCID(l)		((WORD)((((DWORD)(l))&NLS_VALID_LOCALE_MASK)>>16))
+#define SORTVERSIONFROMLCID(l)		((WORD)((((DWORD)(l))>>20)&0xf))
+#define SUBLANGID(l)			((WORD)(l)>>10)
+#define LANGIDFROMLCID(l)		((WORD)(l))
+#define LANG_SYSTEM_DEFAULT		MAKELANGID(LANG_NEUTRAL,SUBLANG_SYS_DEFAULT)
+#define LANG_USER_DEFAULT		MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT)
+#define LOCALE_NEUTRAL			MAKELCID(MAKELANGID(LANG_NEUTRAL,SUBLANG_NEUTRAL),SORT_DEFAULT)
+#define ACL_REVISION					 2
+#define ACL_REVISION_DS 				 4
+#define ACL_REVISION1					 1
+#define ACL_REVISION2					 2
+#define ACL_REVISION3					 3
+#define ACL_REVISION4					 4
+#define MIN_ACL_REVISION				 2
+#define MAX_ACL_REVISION				 4
+#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 PROCESSOR_INTEL_386			       386
+#define PROCESSOR_INTEL_486			       486
+#define PROCESSOR_INTEL_PENTIUM 		       586
+#define PROCESSOR_MIPS_R4000			      4000
+#define PROCESSOR_ALPHA_21064			     21064
+#define PROCESSOR_INTEL_IA64			      2200
+#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_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
+/* also in ddk/ntifs.h */
+#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 FILE_ACTION_ADDED_STREAM		0x00000006
+#define FILE_ACTION_REMOVED_STREAM		0x00000007
+#define FILE_ACTION_MODIFIED_STREAM		0x00000008
+#define FILE_ACTION_REMOVED_BY_DELETE		0x00000009
+#define FILE_ACTION_ID_NOT_TUNNELLED		0x0000000A
+#define FILE_ACTION_TUNNELLED_ID_COLLISION	0x0000000B
+/* end ntifs.h */
+#define HEAP_NO_SERIALIZE				 1
+#define HEAP_GROWABLE					 2
+#define HEAP_GENERATE_EXCEPTIONS			 4
+#define HEAP_ZERO_MEMORY				 8
+#define HEAP_REALLOC_IN_PLACE_ONLY			16
+#define HEAP_TAIL_CHECKING_ENABLED			32
+#define HEAP_FREE_CHECKING_ENABLED			64
+#define HEAP_DISABLE_COALESCE_ON_FREE		       128
+#define HEAP_CREATE_ALIGN_16			    0x0000
+#define HEAP_CREATE_ENABLE_TRACING		   0x20000
+#define HEAP_MAXIMUM_TAG			     0xFFF
+#define HEAP_PSEUDO_TAG_FLAG			    0x8000
+#define HEAP_TAG_SHIFT					16
+#define HEAP_MAKE_TAG_FLAGS(b,o)	     ((DWORD)((b)+(o)<<16))
+#define KEY_QUERY_VALUE 				 1
+#define KEY_SET_VALUE					 2
+#define KEY_CREATE_SUB_KEY				 4
+#define KEY_ENUMERATE_SUB_KEYS				 8
+#define KEY_NOTIFY					16
+#define KEY_CREATE_LINK 				32
+#define KEY_WRITE				   0x20006
+#define KEY_EXECUTE				   0x20019
+#define KEY_READ				   0x20019
+#if (_WIN32_WINNT >= 0x0502)
+#define KEY_WOW64_64KEY 			    0x0100
+#define KEY_WOW64_32KEY 			    0x0200
+#endif
+#define KEY_ALL_ACCESS				   0xf003f
+#define REG_WHOLE_HIVE_VOLATILE 			 1
+#define REG_REFRESH_HIVE				 2
+#define REG_NO_LAZY_FLUSH				 4
+#define REG_OPTION_RESERVED				 0
+#define REG_OPTION_NON_VOLATILE 			 0
+#define REG_OPTION_VOLATILE				 1
+#define REG_OPTION_CREATE_LINK				 2
+#define REG_OPTION_BACKUP_RESTORE			 4
+#define REG_OPTION_OPEN_LINK				 8
+#define REG_LEGAL_OPTION				15
+#define OWNER_SECURITY_INFORMATION		0x00000001
+#define GROUP_SECURITY_INFORMATION		0x00000002
+#define DACL_SECURITY_INFORMATION		0x00000004
+#define SACL_SECURITY_INFORMATION		0x00000008
+#define LABEL_SECURITY_INFORMATION		0x00000010
+#define UNPROTECTED_SACL_SECURITY_INFORMATION	0x10000000
+#define UNPROTECTED_DACL_SECURITY_INFORMATION	0x20000000
+#define PROTECTED_SACL_SECURITY_INFORMATION	0x40000000
+#define PROTECTED_DACL_SECURITY_INFORMATION	0x80000000
+#define MAXIMUM_PROCESSORS				32
+#define PAGE_NOACCESS				    0x0001
+#define PAGE_READONLY				    0x0002
+#define PAGE_READWRITE				    0x0004
+#define PAGE_WRITECOPY				    0x0008
+#define PAGE_EXECUTE				    0x0010
+#define PAGE_EXECUTE_READ			    0x0020
+#define PAGE_EXECUTE_READWRITE			    0x0040
+#define PAGE_EXECUTE_WRITECOPY			    0x0080
+#define PAGE_GUARD				    0x0100
+#define PAGE_NOCACHE				    0x0200
+#define PAGE_WRITECOMBINE			    0x0400
+#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 /* 98/Me */
+#define MEM_PHYSICAL				  0x400000
+#define MEM_4MB_PAGES				0x80000000
+/* also in ddk/ntifs.h */
+#define MEM_IMAGE				SEC_IMAGE
+#define SEC_BASED				0x00200000
+#define SEC_NO_CHANGE				0x00400000
+#define SEC_FILE				0x00800000
+#define SEC_IMAGE				0x01000000
+#define SEC_VLM 				0x02000000
+#define SEC_RESERVE				0x04000000
+#define SEC_COMMIT				0x08000000
+#define SEC_NOCACHE				0x10000000
+/* end ntifs.h */
+#define SECTION_EXTEND_SIZE				16
+#define SECTION_MAP_READ				 4
+#define SECTION_MAP_WRITE				 2
+#define SECTION_QUERY					 1
+#define SECTION_MAP_EXECUTE				 8
+#define SECTION_ALL_ACCESS			   0xf001f
+#define MESSAGE_RESOURCE_UNICODE			 1
+#define RTL_CRITSECT_TYPE				 0
+#define RTL_RESOURCE_TYPE				 1
+/* Also in winddk.h */
+#define FIELD_OFFSET(t,f)		((LONG)&(((t*)0)->f))
+#ifndef CONTAINING_RECORD
+#define CONTAINING_RECORD(address, type, field) \
+  ((type*)((PCHAR)(address) - (PCHAR)(&((type *)0)->field)))
+#endif
+/* end winddk.h */
+#define IMAGE_SIZEOF_FILE_HEADER			20
+#define IMAGE_FILE_RELOCS_STRIPPED			 1
+#define IMAGE_FILE_EXECUTABLE_IMAGE			 2
+#define IMAGE_FILE_LINE_NUMS_STRIPPED			 4
+#define IMAGE_FILE_LOCAL_SYMS_STRIPPED			 8
+#define IMAGE_FILE_AGGRESIVE_WS_TRIM			16
+#define IMAGE_FILE_LARGE_ADDRESS_AWARE			32
+#define IMAGE_FILE_BYTES_REVERSED_LO		       128
+#define IMAGE_FILE_32BIT_MACHINE		       256
+#define IMAGE_FILE_DEBUG_STRIPPED		       512
+#define IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP	      1024
+#define IMAGE_FILE_NET_RUN_FROM_SWAP		      2048
+#define IMAGE_FILE_SYSTEM			      4096
+#define IMAGE_FILE_DLL				      8192
+#define IMAGE_FILE_UP_SYSTEM_ONLY		     16384
+#define IMAGE_FILE_BYTES_REVERSED_HI		     32768
+
+#define IMAGE_FILE_MACHINE_UNKNOWN		    0x0000
+#define IMAGE_FILE_MACHINE_AM33 		    0x01d3 /* Matsushita AM33 */
+#define IMAGE_FILE_MACHINE_AMD64		    0x8664 /* x64 */
+#define IMAGE_FILE_MACHINE_ARM			    0x01c0 /* ARM little endian */
+#define IMAGE_FILE_MACHINE_EBC			    0x0ebc /* EFI byte code */
+#define IMAGE_FILE_MACHINE_I386 		    0x014c /* Intel 386 or later processors and compatible processors */
+#define IMAGE_FILE_MACHINE_IA64 		    0x0200 /* Intel Itanium processor family */
+#define IMAGE_FILE_MACHINE_M32R 		    0x9041 /* Mitsubishi M32R little endian */
+#define IMAGE_FILE_MACHINE_MIPS16		    0x0266 /* MIPS16 */
+#define IMAGE_FILE_MACHINE_MIPSFPU		    0x0366 /* MIPS with FPU */
+#define IMAGE_FILE_MACHINE_MIPSFPU16		    0x0466 /* MIPS16 with FPU */
+#define IMAGE_FILE_MACHINE_POWERPC		    0x01f0 /* Power PC little endian */
+#define IMAGE_FILE_MACHINE_POWERPCFP		    0x01f1 /* Power PC with floating point support */
+#define IMAGE_FILE_MACHINE_R4000		    0x0166 /* MIPS little endian */
+#define IMAGE_FILE_MACHINE_SH3			    0x01a2 /* Hitachi SH3 */
+#define IMAGE_FILE_MACHINE_SH3DSP		    0x01a3 /* Hitachi SH3 DSP */
+#define IMAGE_FILE_MACHINE_SH4			    0x01a6 /* Hitachi SH4 */
+#define IMAGE_FILE_MACHINE_SH5			    0x01a8 /* Hitachi SH5 */
+#define IMAGE_FILE_MACHINE_THUMB		    0x01c2 /* Thumb */
+#define IMAGE_FILE_MACHINE_WCEMIPSV2		    0x0169 /* MIPS little-endian WCE v2 */
+
+#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
+#define IMAGE_NT_OPTIONAL_HDR32_MAGIC		     0x10b
+#define IMAGE_NT_OPTIONAL_HDR64_MAGIC		     0x20b
+#ifdef _WIN64
+#define IMAGE_NT_OPTIONAL_HDR_MAGIC	IMAGE_NT_OPTIONAL_HDR64_MAGIC
+#else
+#define IMAGE_NT_OPTIONAL_HDR_MAGIC	IMAGE_NT_OPTIONAL_HDR32_MAGIC
+#endif
+#define IMAGE_ROM_OPTIONAL_HDR_MAGIC		     0x107
+#define IMAGE_SEPARATE_DEBUG_SIGNATURE		    0x4944
+#define IMAGE_NUMBEROF_DIRECTORY_ENTRIES		16
+#define IMAGE_SIZEOF_ROM_OPTIONAL_HEADER		56
+#define IMAGE_SIZEOF_STD_OPTIONAL_HEADER		28
+#define IMAGE_SIZEOF_NT_OPTIONAL_HEADER 	       224
+#define IMAGE_SIZEOF_SHORT_NAME 			 8
+#define IMAGE_SIZEOF_SECTION_HEADER			40
+#define IMAGE_SIZEOF_SYMBOL				18
+#define IMAGE_SIZEOF_AUX_SYMBOL 			18
+#define IMAGE_SIZEOF_RELOCATION 			10
+#define IMAGE_SIZEOF_BASE_RELOCATION			 8
+#define IMAGE_SIZEOF_LINENUMBER 			 6
+#define IMAGE_SIZEOF_ARCHIVE_MEMBER_HDR 		60
+#define SIZEOF_RFPO_DATA				16
+
+#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  /* Not in PECOFF v8 spec */
+#define IMAGE_SUBSYSTEM_POSIX_CUI			 7
+#define IMAGE_SUBSYSTEM_NATIVE_WINDOWS			 8  /* Not in PECOFF v8 spec */
+#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_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_WDM_DRIVER		0x2000
+#define IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE	0x8000
+
+/* Keep broken definitions for backward compatibility. */
+#define IMAGE_DLL_CHARACTERISTICS_DYNAMIC_BASE		IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE
+#define IMAGE_DLL_CHARACTERISTICS_FORCE_INTEGRITY	IMAGE_DLLCHARACTERISTICS_FORCE_INTEGRITY
+#define IMAGE_DLL_CHARACTERISTICS_NX_COMPAT		IMAGE_DLLCHARACTERISTICS_NX_COMPAT
+
+#define IMAGE_FIRST_SECTION(h)				((PIMAGE_SECTION_HEADER) ((DWORD)h+FIELD_OFFSET(IMAGE_NT_HEADERS,OptionalHeader)+((PIMAGE_NT_HEADERS)(h))->FileHeader.SizeOfOptionalHeader))
+#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_COPYRIGHT 		 7
+#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
+#define IMAGE_SCN_TYPE_REG				 0
+#define IMAGE_SCN_TYPE_DSECT				 1
+#define IMAGE_SCN_TYPE_NOLOAD				 2
+#define IMAGE_SCN_TYPE_GROUP				 4
+#define IMAGE_SCN_TYPE_NO_PAD				 8
+#define IMAGE_SCN_TYPE_COPY				16
+#define IMAGE_SCN_CNT_CODE				32
+#define IMAGE_SCN_CNT_INITIALIZED_DATA			64
+#define IMAGE_SCN_CNT_UNINITIALIZED_DATA	       128
+#define IMAGE_SCN_LNK_OTHER			       256
+#define IMAGE_SCN_LNK_INFO			       512
+#define IMAGE_SCN_TYPE_OVER			      1024
+#define IMAGE_SCN_LNK_REMOVE			      2048
+#define IMAGE_SCN_LNK_COMDAT			      4096
+#define IMAGE_SCN_GPREL 			    0x8000 /*  Valid only for IA64 */
+#define IMAGE_SCN_MEM_FARDATA			    0x8000 /* Not in PECOFF v8 spec */
+#define IMAGE_SCN_MEM_PURGEABLE 		   0x20000
+#define IMAGE_SCN_MEM_16BIT			   0x20000
+#define IMAGE_SCN_MEM_LOCKED			   0x40000
+#define IMAGE_SCN_MEM_PRELOAD			   0x80000
+#define IMAGE_SCN_ALIGN_1BYTES			  0x100000
+#define IMAGE_SCN_ALIGN_2BYTES			  0x200000
+#define IMAGE_SCN_ALIGN_4BYTES			  0x300000
+#define IMAGE_SCN_ALIGN_8BYTES			  0x400000
+#define IMAGE_SCN_ALIGN_16BYTES 		  0x500000
+#define IMAGE_SCN_ALIGN_32BYTES 		  0x600000
+#define IMAGE_SCN_ALIGN_64BYTES 		  0x700000
+#define IMAGE_SCN_ALIGN_128BYTES		  0x800000
+#define IMAGE_SCN_ALIGN_256BYTES		  0x900000
+#define IMAGE_SCN_ALIGN_512BYTES		  0xa00000
+#define IMAGE_SCN_ALIGN_1024BYTES		  0xb00000
+#define IMAGE_SCN_ALIGN_2048BYTES		  0xc00000
+#define IMAGE_SCN_ALIGN_4096BYTES		  0xd00000
+#define IMAGE_SCN_ALIGN_8192BYTES		  0xe00000
+#define IMAGE_SCN_LNK_NRELOC_OVFL		 0x1000000
+#define IMAGE_SCN_MEM_DISCARDABLE		 0x2000000
+#define IMAGE_SCN_MEM_NOT_CACHED		 0x4000000
+#define IMAGE_SCN_MEM_NOT_PAGED 		 0x8000000
+#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_SYM_UNDEFINED				 0
+#define IMAGE_SYM_ABSOLUTE			       (-1)
+#define IMAGE_SYM_DEBUG 			       (-2)
+#define IMAGE_SYM_TYPE_NULL				 0
+#define IMAGE_SYM_TYPE_VOID				 1
+#define IMAGE_SYM_TYPE_CHAR				 2
+#define IMAGE_SYM_TYPE_SHORT				 3
+#define IMAGE_SYM_TYPE_INT				 4
+#define IMAGE_SYM_TYPE_LONG				 5
+#define IMAGE_SYM_TYPE_FLOAT				 6
+#define IMAGE_SYM_TYPE_DOUBLE				 7
+#define IMAGE_SYM_TYPE_STRUCT				 8
+#define IMAGE_SYM_TYPE_UNION				 9
+#define IMAGE_SYM_TYPE_ENUM				10
+#define IMAGE_SYM_TYPE_MOE				11
+#define IMAGE_SYM_TYPE_BYTE				12
+#define IMAGE_SYM_TYPE_WORD				13
+#define IMAGE_SYM_TYPE_UINT				14
+#define IMAGE_SYM_TYPE_DWORD				15
+#define IMAGE_SYM_TYPE_PCODE			     32768
+#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 	       (-1)
+#define IMAGE_SYM_CLASS_NULL				 0
+#define IMAGE_SYM_CLASS_AUTOMATIC			 1
+#define IMAGE_SYM_CLASS_EXTERNAL			 2
+#define IMAGE_SYM_CLASS_STATIC				 3
+#define IMAGE_SYM_CLASS_REGISTER			 4
+#define IMAGE_SYM_CLASS_EXTERNAL_DEF			 5
+#define IMAGE_SYM_CLASS_LABEL				 6
+#define IMAGE_SYM_CLASS_UNDEFINED_LABEL 		 7
+#define IMAGE_SYM_CLASS_MEMBER_OF_STRUCT		 8
+#define IMAGE_SYM_CLASS_ARGUMENT			 9
+#define IMAGE_SYM_CLASS_STRUCT_TAG			10
+#define IMAGE_SYM_CLASS_MEMBER_OF_UNION 		11
+#define IMAGE_SYM_CLASS_UNION_TAG			12
+#define IMAGE_SYM_CLASS_TYPE_DEFINITION 		13
+#define IMAGE_SYM_CLASS_UNDEFINED_STATIC		14
+#define IMAGE_SYM_CLASS_ENUM_TAG			15
+#define IMAGE_SYM_CLASS_MEMBER_OF_ENUM			16
+#define IMAGE_SYM_CLASS_REGISTER_PARAM			17
+#define IMAGE_SYM_CLASS_BIT_FIELD			18
+#define IMAGE_SYM_CLASS_FAR_EXTERNAL			68 /* Not in PECOFF v8 spec */
+#define IMAGE_SYM_CLASS_BLOCK			       100
+#define IMAGE_SYM_CLASS_FUNCTION		       101
+#define IMAGE_SYM_CLASS_END_OF_STRUCT		       102
+#define IMAGE_SYM_CLASS_FILE			       103
+#define IMAGE_SYM_CLASS_SECTION 		       104
+#define IMAGE_SYM_CLASS_WEAK_EXTERNAL		       105
+#define IMAGE_SYM_CLASS_CLR_TOKEN		       107
+
+#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 /* Not in PECOFF v8 spec */
+
+#define IMAGE_WEAK_EXTERN_SEARCH_NOLIBRARY		 1
+#define IMAGE_WEAK_EXTERN_SEARCH_LIBRARY		 2
+#define IMAGE_WEAK_EXTERN_SEARCH_ALIAS			 3
+
+#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_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_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_SHM_NOMODE			    0x8000
+
+#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_SECREL			    0x000D
+#define IMAGE_REL_M32R_TOKEN			    0x000E
+
+#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_JMPADDR16		    0x0010
+#define IMAGE_REL_MIPS_REFWORDNB		    0x0022
+#define IMAGE_REL_MIPS_PAIR			    0x0025
+
+#define IMAGE_REL_ALPHA_ABSOLUTE			 0
+#define IMAGE_REL_ALPHA_REFLONG 			 1
+#define IMAGE_REL_ALPHA_REFQUAD 			 2
+#define IMAGE_REL_ALPHA_GPREL32 			 3
+#define IMAGE_REL_ALPHA_LITERAL 			 4
+#define IMAGE_REL_ALPHA_LITUSE				 5
+#define IMAGE_REL_ALPHA_GPDISP				 6
+#define IMAGE_REL_ALPHA_BRADDR				 7
+#define IMAGE_REL_ALPHA_HINT				 8
+#define IMAGE_REL_ALPHA_INLINE_REFLONG			 9
+#define IMAGE_REL_ALPHA_REFHI				10
+#define IMAGE_REL_ALPHA_REFLO				11
+#define IMAGE_REL_ALPHA_PAIR				12
+#define IMAGE_REL_ALPHA_MATCH				13
+#define IMAGE_REL_ALPHA_SECTION 			14
+#define IMAGE_REL_ALPHA_SECREL				15
+#define IMAGE_REL_ALPHA_REFLONGNB			16
+#define IMAGE_REL_ALPHA_SECRELLO			17
+#define IMAGE_REL_ALPHA_SECRELHI			18
+#define IMAGE_REL_PPC_ABSOLUTE				 0
+#define IMAGE_REL_PPC_ADDR64				 1
+#define IMAGE_REL_PPC_ADDR32				 2
+#define IMAGE_REL_PPC_ADDR24				 3
+#define IMAGE_REL_PPC_ADDR16				 4
+#define IMAGE_REL_PPC_ADDR14				 5
+#define IMAGE_REL_PPC_REL24				 6
+#define IMAGE_REL_PPC_REL14				 7
+#define IMAGE_REL_PPC_TOCREL16				 8
+#define IMAGE_REL_PPC_TOCREL14				 9
+#define IMAGE_REL_PPC_ADDR32NB				10
+#define IMAGE_REL_PPC_SECREL				11
+#define IMAGE_REL_PPC_SECTION				12
+#define IMAGE_REL_PPC_IFGLUE				13
+#define IMAGE_REL_PPC_IMGLUE				14
+#define IMAGE_REL_PPC_SECREL16				15
+#define IMAGE_REL_PPC_REFHI				16
+#define IMAGE_REL_PPC_REFLO				17
+#define IMAGE_REL_PPC_PAIR				18
+#define IMAGE_REL_PPC_TYPEMASK			       255
+#define IMAGE_REL_PPC_NEG			       256
+#define IMAGE_REL_PPC_BRTAKEN			       512
+#define IMAGE_REL_PPC_BRNTAKEN			      1024
+#define IMAGE_REL_PPC_TOCDEFN			      2048
+#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_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		"//              "
+#define IMAGE_ORDINAL_FLAG32			0x80000000
+#define IMAGE_SNAP_BY_ORDINAL32(o)		((o&IMAGE_ORDINAL_FLAG32)!=0)
+#define IMAGE_ORDINAL32(o)			(o&0xffff)
+#define IMAGE_ORDINAL_FLAG64			0x8000000000000000ULL
+#define IMAGE_SNAP_BY_ORDINAL64(o)		((o&IMAGE_ORDINAL_FLAG64)!=0)
+#define IMAGE_ORDINAL64(o)			(o&0xffff)
+#ifdef _WIN64
+#define IMAGE_ORDINAL_FLAG			IMAGE_ORDINAL_FLAG64
+#define IMAGE_SNAP_BY_ORDINAL(o)		IMAGE_SNAP_BY_ORDINAL64(o)
+#define IMAGE_ORDINAL(o)			IMAGE_ORDINAL64(o)
+#else
+#define IMAGE_ORDINAL_FLAG			IMAGE_ORDINAL_FLAG32
+#define IMAGE_SNAP_BY_ORDINAL(o)		IMAGE_SNAP_BY_ORDINAL32(o)
+#define IMAGE_ORDINAL(o)			IMAGE_ORDINAL32(o)
+#endif
+#define IMAGE_RESOURCE_NAME_IS_STRING		0x80000000
+#define IMAGE_RESOURCE_DATA_IS_DIRECTORY	0x80000000
+#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 FRAME_FPO					 0
+#define FRAME_TRAP					 1
+#define FRAME_TSS					 2
+#define FRAME_NONFPO					 3
+#define IMAGE_DEBUG_MISC_EXENAME			 1
+#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 IS_TEXT_UNICODE_ASCII16 			 1
+#define IS_TEXT_UNICODE_REVERSE_ASCII16 		16
+#define IS_TEXT_UNICODE_STATISTICS			 2
+#define IS_TEXT_UNICODE_REVERSE_STATISTICS		32
+#define IS_TEXT_UNICODE_CONTROLS			 4
+#define IS_TEXT_UNICODE_REVERSE_CONTROLS		64
+#define IS_TEXT_UNICODE_SIGNATURE			 8
+#define IS_TEXT_UNICODE_REVERSE_SIGNATURE	       128
+#define IS_TEXT_UNICODE_ILLEGAL_CHARS		       256
+#define IS_TEXT_UNICODE_ODD_LENGTH		       512
+#define IS_TEXT_UNICODE_NULL_BYTES		      4096
+#define IS_TEXT_UNICODE_UNICODE_MASK			15
+#define IS_TEXT_UNICODE_REVERSE_MASK		       240
+#define IS_TEXT_UNICODE_NOT_UNICODE_MASK	      3840
+#define IS_TEXT_UNICODE_NOT_ASCII_MASK		     61440
+#define SERVICE_KERNEL_DRIVER				 1
+#define SERVICE_FILE_SYSTEM_DRIVER			 2
+#define SERVICE_ADAPTER 				 4
+#define SERVICE_RECOGNIZER_DRIVER			 8
+#define SERVICE_DRIVER  (SERVICE_KERNEL_DRIVER|SERVICE_FILE_SYSTEM_DRIVER|SERVICE_RECOGNIZER_DRIVER)
+#define SERVICE_WIN32_OWN_PROCESS			16
+#define SERVICE_WIN32_SHARE_PROCESS			32
+#define SERVICE_WIN32  (SERVICE_WIN32_OWN_PROCESS|SERVICE_WIN32_SHARE_PROCESS)
+#define SERVICE_INTERACTIVE_PROCESS		       256
+#define SERVICE_TYPE_ALL  (SERVICE_WIN32|SERVICE_ADAPTER|SERVICE_DRIVER|SERVICE_INTERACTIVE_PROCESS)
+#define SERVICE_BOOT_START				 0
+#define SERVICE_SYSTEM_START				 1
+#define SERVICE_AUTO_START				 2
+#define SERVICE_DEMAND_START				 3
+#define SERVICE_DISABLED				 4
+#define SERVICE_ERROR_IGNORE				 0
+#define SERVICE_ERROR_NORMAL				 1
+#define SERVICE_ERROR_SEVERE				 2
+#define SERVICE_ERROR_CRITICAL				 3
+#define SE_OWNER_DEFAULTED				 1
+#define SE_GROUP_DEFAULTED				 2
+#define SE_DACL_PRESENT 				 4
+#define SE_DACL_DEFAULTED				 8
+#define SE_SACL_PRESENT 				16
+#define SE_SACL_DEFAULTED				32
+#define SE_DACL_AUTO_INHERIT_REQ		       256
+#define SE_SACL_AUTO_INHERIT_REQ		       512
+#define SE_DACL_AUTO_INHERITED			      1024
+#define SE_SACL_AUTO_INHERITED			      2048
+#define SE_DACL_PROTECTED			      4096
+#define SE_SACL_PROTECTED			      8192
+#define SE_SELF_RELATIVE			    0x8000
+#define SECURITY_DESCRIPTOR_MIN_LENGTH			20
+#define SECURITY_DESCRIPTOR_REVISION			 1
+#define SECURITY_DESCRIPTOR_REVISION1			 1
+#define SE_PRIVILEGE_ENABLED_BY_DEFAULT 		 1
+#define SE_PRIVILEGE_ENABLED				 2
+#define SE_PRIVILEGE_USED_FOR_ACCESS		0x80000000
+#define PRIVILEGE_SET_ALL_NECESSARY			 1
+#define SECURITY_MAX_IMPERSONATION_LEVEL	SecurityDelegation
+#define DEFAULT_IMPERSONATION_LEVEL		SecurityImpersonation
+#define SECURITY_DYNAMIC_TRACKING		      TRUE
+#define SECURITY_STATIC_TRACKING		     FALSE
+/* also in ddk/ntifs.h */
+#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_ALL_ACCESS     \
+  ( 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_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 )
+
+#define TOKEN_SOURCE_LENGTH				 8
+#if (_WIN32_WINNT >= 0x0600)
+#define TOKEN_MANDATORY_POLICY_OFF			 0
+#define TOKEN_MANDATORY_POLICY_NO_WRITE_UP		 1
+#define TOKEN_MANDATORY_POLICY_NEW_PROCESS_MIN		 2
+#define TOKEN_MANDATORY_POLICY_VALID_MASK		 3
+#endif
+/* end ddk/ntifs.h */
+#define DLL_PROCESS_DETACH				 0
+#define DLL_PROCESS_ATTACH				 1
+#define DLL_THREAD_ATTACH				 2
+#define DLL_THREAD_DETACH				 3
+#define DBG_CONTINUE				   0x10002
+#define DBG_TERMINATE_THREAD			0x40010003
+#define DBG_TERMINATE_PROCESS			0x40010004
+#define DBG_CONTROL_C				0x40010005
+#define DBG_CONTROL_BREAK			0x40010008
+#define DBG_EXCEPTION_NOT_HANDLED		0x80010001
+#define TAPE_ABSOLUTE_POSITION				 0
+#define TAPE_LOGICAL_POSITION				 1
+#define TAPE_PSEUDO_LOGICAL_POSITION			 2
+#define TAPE_REWIND					 0
+#define TAPE_ABSOLUTE_BLOCK				 1
+#define TAPE_LOGICAL_BLOCK				 2
+#define TAPE_PSEUDO_LOGICAL_BLOCK			 3
+#define TAPE_SPACE_END_OF_DATA				 4
+#define TAPE_SPACE_RELATIVE_BLOCKS			 5
+#define TAPE_SPACE_FILEMARKS				 6
+#define TAPE_SPACE_SEQUENTIAL_FMKS			 7
+#define TAPE_SPACE_SETMARKS				 8
+#define TAPE_SPACE_SEQUENTIAL_SMKS			 9
+#define TAPE_DRIVE_FIXED				 1
+#define TAPE_DRIVE_SELECT				 2
+#define TAPE_DRIVE_INITIATOR				 4
+#define TAPE_DRIVE_ERASE_SHORT				16
+#define TAPE_DRIVE_ERASE_LONG				32
+#define TAPE_DRIVE_ERASE_BOP_ONLY			64
+#define TAPE_DRIVE_ERASE_IMMEDIATE		       128
+#define TAPE_DRIVE_TAPE_CAPACITY		       256
+#define TAPE_DRIVE_TAPE_REMAINING		       512
+#define TAPE_DRIVE_FIXED_BLOCK			      1024
+#define TAPE_DRIVE_VARIABLE_BLOCK		      2048
+#define TAPE_DRIVE_WRITE_PROTECT		      4096
+#define TAPE_DRIVE_EOT_WZ_SIZE			      8192
+#define TAPE_DRIVE_ECC				   0x10000
+#define TAPE_DRIVE_COMPRESSION			   0x20000
+#define TAPE_DRIVE_PADDING			   0x40000
+#define TAPE_DRIVE_REPORT_SMKS			   0x80000
+#define TAPE_DRIVE_GET_ABSOLUTE_BLK		  0x100000
+#define TAPE_DRIVE_GET_LOGICAL_BLK		  0x200000
+#define TAPE_DRIVE_SET_EOT_WZ_SIZE		  0x400000
+#define TAPE_DRIVE_EJECT_MEDIA			 0x1000000
+#define TAPE_DRIVE_CLEAN_REQUESTS		 0x2000000
+#define TAPE_DRIVE_SET_CMP_BOP_ONLY		 0x4000000
+#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
+#define TAPE_FIXED_PARTITIONS				 0
+#define TAPE_INITIATOR_PARTITIONS			 2
+#define TAPE_SELECT_PARTITIONS				 1
+#define TAPE_FILEMARKS					 1
+#define TAPE_LONG_FILEMARKS				 3
+#define TAPE_SETMARKS					 0
+#define TAPE_SHORT_FILEMARKS				 2
+#define TAPE_ERASE_LONG 				 1
+#define TAPE_ERASE_SHORT				 0
+#define TAPE_LOAD					 0
+#define TAPE_UNLOAD					 1
+#define TAPE_TENSION					 2
+#define TAPE_LOCK					 3
+#define TAPE_UNLOCK					 4
+#define TAPE_FORMAT					 5
+#if (_WIN32_WINNT >= 0x0500)
+#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_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
+#endif
+#define VER_PLATFORM_WIN32s				 0
+#define VER_PLATFORM_WIN32_WINDOWS			 1
+#define VER_PLATFORM_WIN32_NT				 2
+#define VER_NT_WORKSTATION				 1
+#define VER_NT_DOMAIN_CONTROLLER			 2
+#define VER_NT_SERVER					 3
+#define VER_SUITE_SMALLBUSINESS 			 1
+#define VER_SUITE_ENTERPRISE				 2
+#define VER_SUITE_BACKOFFICE				 4
+#define VER_SUITE_TERMINAL				16
+#define VER_SUITE_SMALLBUSINESS_RESTRICTED		32
+#define VER_SUITE_EMBEDDEDNT				64
+#define VER_SUITE_DATACENTER			       128
+#define VER_SUITE_SINGLEUSERTS			       256
+#define VER_SUITE_PERSONAL			       512
+#define VER_SUITE_BLADE 			      1024
+#define VER_SUITE_STORAGE_SERVER		      8192
+#define VER_SUITE_COMPUTE_SERVER		     16384
+#define WT_EXECUTEDEFAULT			0x00000000
+#define WT_EXECUTEINIOTHREAD			0x00000001
+#define WT_EXECUTEINWAITTHREAD			0x00000004
+#define WT_EXECUTEONLYONCE			0x00000008
+#define WT_EXECUTELONGFUNCTION			0x00000010
+#define WT_EXECUTEINTIMERTHREAD 		0x00000020
+#define WT_EXECUTEINPERSISTENTTHREAD		0x00000080
+#define WT_TRANSFER_IMPERSONATION		0x00000100
+#if (_WIN32_WINNT >= 0x0501)
+#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_CLR_SURROGATES		 9
+#endif /* (_WIN32_WINNT >= 0x0501) */
+
+#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))
+
+#define TLS_MINIMUM_AVAILABLE				64
+#define REPARSE_DATA_BUFFER_HEADER_SIZE  FIELD_OFFSET(REPARSE_DATA_BUFFER, GenericReparseBuffer)
+#define REPARSE_GUID_DATA_BUFFER_HEADER_SIZE  FIELD_OFFSET(REPARSE_GUID_DATA_BUFFER, GenericReparseBuffer)
+#define MAXIMUM_REPARSE_DATA_BUFFER_SIZE	     16384
+#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(x)	   ((x)&0x80000000)
+#define IsReparseTagHighLatency(x)	   ((x)&0x40000000)
+#define IsReparseTagNameSurrogate(x)	   ((x)&0x20000000)
+#define IO_REPARSE_TAG_VALID_VALUES		0xE000FFFF
+#define IsReparseTagValid(x)  (!((x)&~IO_REPARSE_TAG_VALID_VALUES)&&((x)>IO_REPARSE_TAG_RESERVED_RANGE))
+#define IO_REPARSE_TAG_SYMBOLIC_LINK  IO_REPARSE_TAG_RESERVED_ZERO
+#define IO_REPARSE_TAG_MOUNT_POINT		0xA0000003
+#define IO_REPARSE_TAG_SYMLINK			0xA000000C
+
+#define WT_SET_MAX_THREADPOOL_THREADS(Flags,Limit)  ((Flags)|=(Limit)<<16)
+#ifndef RC_INVOKED
+
+_BEGIN_C_DECLS
+
+typedef DWORD ACCESS_MASK, *PACCESS_MASK;
+
+#ifdef _GUID_DEFINED
+# warning _GUID_DEFINED is deprecated, use GUID_DEFINED instead
+#endif
+
+#if ! (defined _GUID_DEFINED || defined GUID_DEFINED) /* also defined in basetyps.h */
+#define GUID_DEFINED
+typedef struct _GUID
+{ unsigned long 	Data1;
+  unsigned short	Data2;
+  unsigned short	Data3;
+  unsigned char 	Data4[8];
+} GUID, *REFGUID, *LPGUID;
+#define SYSTEM_LUID			      { 0x3e7, 0x0 }
+#endif /* GUID_DEFINED */
+
+typedef struct _GENERIC_MAPPING
+{ ACCESS_MASK		GenericRead;
+  ACCESS_MASK		GenericWrite;
+  ACCESS_MASK		GenericExecute;
+  ACCESS_MASK		GenericAll;
+} GENERIC_MAPPING, *PGENERIC_MAPPING;
+
+typedef struct _ACE_HEADER
+{ BYTE			AceType;
+  BYTE			AceFlags;
+  WORD			AceSize;
+} ACE_HEADER, *PACE_HEADER;
+
+typedef struct _ACCESS_ALLOWED_ACE
+{ ACE_HEADER		Header;
+  ACCESS_MASK		Mask;
+  DWORD 		SidStart;
+} ACCESS_ALLOWED_ACE, *PACCESS_ALLOWED_ACE;
+
+typedef struct _ACCESS_DENIED_ACE
+{ ACE_HEADER		Header;
+  ACCESS_MASK		Mask;
+  DWORD 		SidStart;
+} 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, *PSYSTEM_ALARM_ACE;
+
+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 _ACL
+{ BYTE			AclRevision;
+  BYTE			Sbz1;
+  WORD			AclSize;
+  WORD			AceCount;
+  WORD			Sbz2;
+} ACL, *PACL;
+
+typedef struct _ACL_REVISION_INFORMATION
+{ DWORD 		AclRevision;
+} ACL_REVISION_INFORMATION;
+
+typedef struct _ACL_SIZE_INFORMATION
+{ DWORD 		AceCount;
+  DWORD 		AclBytesInUse;
+  DWORD 		AclBytesFree;
+} ACL_SIZE_INFORMATION;
+
+/* FIXME: add more machines */
+#ifdef _X86_
+#define SIZE_OF_80387_REGISTERS 			80
+#define CONTEXT_i386				   0x10000
+#define CONTEXT_i486				   0x10000
+#define CONTEXT_CONTROL 		  (CONTEXT_i386|0x00000001L)
+#define CONTEXT_INTEGER 		  (CONTEXT_i386|0x00000002L)
+#define CONTEXT_SEGMENTS		  (CONTEXT_i386|0x00000004L)
+#define CONTEXT_FLOATING_POINT		  (CONTEXT_i386|0x00000008L)
+#define CONTEXT_DEBUG_REGISTERS 	  (CONTEXT_i386|0x00000010L)
+#define CONTEXT_EXTENDED_REGISTERS	  (CONTEXT_i386|0x00000020L)
+
+#define CONTEXT_FULL		(CONTEXT_CONTROL|CONTEXT_INTEGER|CONTEXT_SEGMENTS)
+
+#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 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[MAXIMUM_SUPPORTED_EXTENSION];
+} CONTEXT;
+
+#elif defined(_M_PPC)
+#define CONTEXT_CONTROL 				 1L
+#define CONTEXT_FLOATING_POINT				 2L
+#define CONTEXT_INTEGER 				 4L
+#define CONTEXT_DEBUG_REGISTERS 			 8L
+#define CONTEXT_FULL		(CONTEXT_CONTROL|CONTEXT_FLOATING_POINT|CONTEXT_INTEGER)
+
+typedef struct
+{ double		Fpr0;
+  double		Fpr1;
+  double		Fpr2;
+  double		Fpr3;
+  double		Fpr4;
+  double		Fpr5;
+  double		Fpr6;
+  double		Fpr7;
+  double		Fpr8;
+  double		Fpr9;
+  double		Fpr10;
+  double		Fpr11;
+  double		Fpr12;
+  double		Fpr13;
+  double		Fpr14;
+  double		Fpr15;
+  double		Fpr16;
+  double		Fpr17;
+  double		Fpr18;
+  double		Fpr19;
+  double		Fpr20;
+  double		Fpr21;
+  double		Fpr22;
+  double		Fpr23;
+  double		Fpr24;
+  double		Fpr25;
+  double		Fpr26;
+  double		Fpr27;
+  double		Fpr28;
+  double		Fpr29;
+  double		Fpr30;
+  double		Fpr31;
+  double		Fpscr;
+  DWORD 		Gpr0;
+  DWORD 		Gpr1;
+  DWORD 		Gpr2;
+  DWORD 		Gpr3;
+  DWORD 		Gpr4;
+  DWORD 		Gpr5;
+  DWORD 		Gpr6;
+  DWORD 		Gpr7;
+  DWORD 		Gpr8;
+  DWORD 		Gpr9;
+  DWORD 		Gpr10;
+  DWORD 		Gpr11;
+  DWORD 		Gpr12;
+  DWORD 		Gpr13;
+  DWORD 		Gpr14;
+  DWORD 		Gpr15;
+  DWORD 		Gpr16;
+  DWORD 		Gpr17;
+  DWORD 		Gpr18;
+  DWORD 		Gpr19;
+  DWORD 		Gpr20;
+  DWORD 		Gpr21;
+  DWORD 		Gpr22;
+  DWORD 		Gpr23;
+  DWORD 		Gpr24;
+  DWORD 		Gpr25;
+  DWORD 		Gpr26;
+  DWORD 		Gpr27;
+  DWORD 		Gpr28;
+  DWORD 		Gpr29;
+  DWORD 		Gpr30;
+  DWORD 		Gpr31;
+  DWORD 		Cr;
+  DWORD 		Xer;
+  DWORD 		Msr;
+  DWORD 		Iar;
+  DWORD 		Lr;
+  DWORD 		Ctr;
+  DWORD 		ContextFlags;
+  DWORD 		Fill[3];
+  DWORD 		Dr0;
+  DWORD 		Dr1;
+  DWORD 		Dr2;
+  DWORD 		Dr3;
+  DWORD 		Dr4;
+  DWORD 		Dr5;
+  DWORD 		Dr6;
+  DWORD 		Dr7;
+} CONTEXT;
+
+#elif defined(_M_ALPHA)
+#define CONTEXT_ALPHA				   0x20000
+#define CONTEXT_CONTROL 		      (CONTEXT_ALPHA|1L)
+#define CONTEXT_FLOATING_POINT		      (CONTEXT_ALPHA|2L)
+#define CONTEXT_INTEGER 		      (CONTEXT_ALPHA|4L)
+#define CONTEXT_FULL		(CONTEXT_CONTROL|CONTEXT_FLOATING_POINT|CONTEXT_INTEGER)
+
+typedef struct _CONTEXT
+{ ULONGLONG		FltF0;
+  ULONGLONG		FltF1;
+  ULONGLONG		FltF2;
+  ULONGLONG		FltF3;
+  ULONGLONG		FltF4;
+  ULONGLONG		FltF5;
+  ULONGLONG		FltF6;
+  ULONGLONG		FltF7;
+  ULONGLONG		FltF8;
+  ULONGLONG		FltF9;
+  ULONGLONG		FltF10;
+  ULONGLONG		FltF11;
+  ULONGLONG		FltF12;
+  ULONGLONG		FltF13;
+  ULONGLONG		FltF14;
+  ULONGLONG		FltF15;
+  ULONGLONG		FltF16;
+  ULONGLONG		FltF17;
+  ULONGLONG		FltF18;
+  ULONGLONG		FltF19;
+  ULONGLONG		FltF20;
+  ULONGLONG		FltF21;
+  ULONGLONG		FltF22;
+  ULONGLONG		FltF23;
+  ULONGLONG		FltF24;
+  ULONGLONG		FltF25;
+  ULONGLONG		FltF26;
+  ULONGLONG		FltF27;
+  ULONGLONG		FltF28;
+  ULONGLONG		FltF29;
+  ULONGLONG		FltF30;
+  ULONGLONG		FltF31;
+  ULONGLONG		IntV0;
+  ULONGLONG		IntT0;
+  ULONGLONG		IntT1;
+  ULONGLONG		IntT2;
+  ULONGLONG		IntT3;
+  ULONGLONG		IntT4;
+  ULONGLONG		IntT5;
+  ULONGLONG		IntT6;
+  ULONGLONG		IntT7;
+  ULONGLONG		IntS0;
+  ULONGLONG		IntS1;
+  ULONGLONG		IntS2;
+  ULONGLONG		IntS3;
+  ULONGLONG		IntS4;
+  ULONGLONG		IntS5;
+  ULONGLONG		IntFp;
+  ULONGLONG		IntA0;
+  ULONGLONG		IntA1;
+  ULONGLONG		IntA2;
+  ULONGLONG		IntA3;
+  ULONGLONG		IntA4;
+  ULONGLONG		IntA5;
+  ULONGLONG		IntT8;
+  ULONGLONG		IntT9;
+  ULONGLONG		IntT10;
+  ULONGLONG		IntT11;
+  ULONGLONG		IntRa;
+  ULONGLONG		IntT12;
+  ULONGLONG		IntAt;
+  ULONGLONG		IntGp;
+  ULONGLONG		IntSp;
+  ULONGLONG		IntZero;
+  ULONGLONG		Fpcr;
+  ULONGLONG		SoftFpcr;
+  ULONGLONG		Fir;
+  DWORD 		Psr;
+  DWORD 		ContextFlags;
+  DWORD 		Fill[4];
+} CONTEXT;
+
+#elif defined(SHx)
+/* These are the debug or break registers on the SH3 */
+typedef struct _DEBUG_REGISTERS
+{ ULONG 		BarA;
+  UCHAR 		BasrA;
+  UCHAR 		BamrA;
+  USHORT		BbrA;
+  ULONG 		BarB;
+  UCHAR 		BasrB;
+  UCHAR 		BamrB;
+  USHORT		BbrB;
+  ULONG 		BdrB;
+  ULONG 		BdmrB;
+  USHORT		Brcr;
+  USHORT		Align;
+} DEBUG_REGISTERS, *PDEBUG_REGISTERS;
+
+/* The following flags control the contents of the CONTEXT structure. */
+
+#define CONTEXT_SH3				0x00000040
+#define CONTEXT_SH4				0x000000c0	/* CONTEXT_SH3 | 0x80 - must contain the SH3 bits */
+
+#ifdef SH3
+#define CONTEXT_CONTROL 		(CONTEXT_SH3 | 0x00000001L)
+#define CONTEXT_INTEGER 		(CONTEXT_SH3 | 0x00000002L)
+#define CONTEXT_DEBUG_REGISTERS 	(CONTEXT_SH3 | 0x00000008L)
+#define CONTEXT_FULL			(CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_DEBUG_REGISTERS)
+#else	/* SH4 */
+#define CONTEXT_CONTROL 		(CONTEXT_SH4 | 0x00000001L)
+#define CONTEXT_INTEGER 		(CONTEXT_SH4 | 0x00000002L)
+#define CONTEXT_DEBUG_REGISTERS 	(CONTEXT_SH4 | 0x00000008L)
+#define CONTEXT_FLOATING_POINT		(CONTEXT_SH4 | 0x00000004L)
+#define CONTEXT_FULL			(CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_DEBUG_REGISTERS | CONTEXT_FLOATING_POINT)
+#endif
+
+/* Context Frame
+ * -------------
+ *
+ * This frame is used to store a limited processor context into the
+ * thread structure for CPUs which have no floating point support.
+ */
+typedef struct _CONTEXT
+{ /* The flags values within this structure control the contents
+   * of a CONTEXT record.
+   *
+   * If the context record is used as an input parameter, then
+   * for each portion of the context record controlled by a flag
+   * whose value is set, it is assumed that that portion of the
+   * context record contains valid context. If the context record
+   * is being used to modify a thread's context, then only that
+   * portion of the threads context will be modified.
+   *
+   * If the context record is used as an IN OUT parameter to
+   * capture the context of a thread, then only those portions
+   * of the thread's context corresponding to set flags will be
+   * returned.
+   *
+   * The context record is never used as an OUT only parameter.
+   */
+  ULONG 		ContextFlags;
+  /*
+   * This section is specified/returned if the ContextFlags word
+   * contains the flag CONTEXT_INTEGER.
+   *
+   * N.B. The registers RA and R15 are defined in this section,
+   * but are considered part of the control context rather than
+   * part of the integer context.
+   */
+  ULONG 		PR;
+  ULONG 		MACH;
+  ULONG 		MACL;
+  ULONG 		GBR;
+  ULONG 		R0;
+  ULONG 		R1;
+  ULONG 		R2;
+  ULONG 		R3;
+  ULONG 		R4;
+  ULONG 		R5;
+  ULONG 		R6;
+  ULONG 		R7;
+  ULONG 		R8;
+  ULONG 		R9;
+  ULONG 		R10;
+  ULONG 		R11;
+  ULONG 		R12;
+  ULONG 		R13;
+  ULONG 		R14;
+  ULONG 		R15;
+  /*
+   * This section is specified/returned if the ContextFlags
+   * word contains the flag CONTEXT_CONTROL.
+   *
+   * N.B. The registers r15 and ra are defined in the integer
+   * section, but are considered part of the control context
+   * rather than part of the integer context.
+   */
+  ULONG 		Fir;
+  ULONG 		Psr;
+#if !defined(SH3e) && !defined(SH4)
+  ULONG 		OldStuff[2];
+  DEBUG_REGISTERS	DebugRegisters;
+#else
+  ULONG 		Fpscr;
+  ULONG 		Fpul;
+  ULONG 		FRegs[16];
+#if defined(SH4)
+  ULONG 		xFRegs[16];
+#endif
+#endif
+} CONTEXT;
+
+#elif defined(_M_MRX000)	/* MIPS */
+
+/* The following flags control the contents of the CONTEXT structure.
+ */
+#define CONTEXT_R4000				0x00010000    /* r4000 context */
+
+#define CONTEXT_CONTROL 		(CONTEXT_R4000 | 0x00000001L)
+#define CONTEXT_FLOATING_POINT		(CONTEXT_R4000 | 0x00000002L)
+#define CONTEXT_INTEGER 		(CONTEXT_R4000 | 0x00000004L)
+
+#define CONTEXT_FULL		(CONTEXT_CONTROL | CONTEXT_FLOATING_POINT | CONTEXT_INTEGER)
+
+/* Context Frame
+ * -------------
+ *
+ * N.B. This frame must be exactly a multiple of 16 bytes in
+ * length; it has a several purposes:--
+ *
+ *   1) it is used as an argument to NtContinue;
+ *   2) it is used to constuct a call frame for APC delivery;
+ *   3) it is used to construct a call frame for exception
+ *      dispatching in user mode;
+ *   4) it is used in user level thread creation routines.
+ *
+ * The layout of the record conforms to a standard call frame.
+ */
+typedef struct _CONTEXT
+{ /* This section is always present and is used as an argument
+   * build area.
+   */
+  DWORD 		Argument[4];
+  /*
+   * This section is specified/returned if the ContextFlags word
+   * contains the flag CONTEXT_FLOATING_POINT.
+   */
+  DWORD 		FltF0;
+  DWORD 		FltF1;
+  DWORD 		FltF2;
+  DWORD 		FltF3;
+  DWORD 		FltF4;
+  DWORD 		FltF5;
+  DWORD 		FltF6;
+  DWORD 		FltF7;
+  DWORD 		FltF8;
+  DWORD 		FltF9;
+  DWORD 		FltF10;
+  DWORD 		FltF11;
+  DWORD 		FltF12;
+  DWORD 		FltF13;
+  DWORD 		FltF14;
+  DWORD 		FltF15;
+  DWORD 		FltF16;
+  DWORD 		FltF17;
+  DWORD 		FltF18;
+  DWORD 		FltF19;
+  DWORD 		FltF20;
+  DWORD 		FltF21;
+  DWORD 		FltF22;
+  DWORD 		FltF23;
+  DWORD 		FltF24;
+  DWORD 		FltF25;
+  DWORD 		FltF26;
+  DWORD 		FltF27;
+  DWORD 		FltF28;
+  DWORD 		FltF29;
+  DWORD 		FltF30;
+  DWORD 		FltF31;
+  /*
+   * This section is specified/returned if the ContextFlags word
+   * contains the flag CONTEXT_INTEGER.
+   *
+   * N.B. The registers gp, sp, and ra are defined in this section,
+   * but are considered part of the control context rather than part
+   * of the integer context.
+   *
+   * N.B. Register zero is not stored in the frame.
+   */
+  DWORD 		IntZero;
+  DWORD 		IntAt;
+  DWORD 		IntV0;
+  DWORD 		IntV1;
+  DWORD 		IntA0;
+  DWORD 		IntA1;
+  DWORD 		IntA2;
+  DWORD 		IntA3;
+  DWORD 		IntT0;
+  DWORD 		IntT1;
+  DWORD 		IntT2;
+  DWORD 		IntT3;
+  DWORD 		IntT4;
+  DWORD 		IntT5;
+  DWORD 		IntT6;
+  DWORD 		IntT7;
+  DWORD 		IntS0;
+  DWORD 		IntS1;
+  DWORD 		IntS2;
+  DWORD 		IntS3;
+  DWORD 		IntS4;
+  DWORD 		IntS5;
+  DWORD 		IntS6;
+  DWORD 		IntS7;
+  DWORD 		IntT8;
+  DWORD 		IntT9;
+  DWORD 		IntK0;
+  DWORD 		IntK1;
+  DWORD 		IntGp;
+  DWORD 		IntSp;
+  DWORD 		IntS8;
+  DWORD 		IntRa;
+  DWORD 		IntLo;
+  DWORD 		IntHi;
+  /*
+   * This section is specified/returned if the ContextFlags word
+   * contains the flag CONTEXT_FLOATING_POINT.
+   */
+  DWORD 		Fsr;
+  /*
+   * This section is specified/returned if the ContextFlags word
+   * contains the flag CONTEXT_CONTROL.
+   *
+   * N.B. The registers gp, sp, and ra are defined in the integer
+   * section, but are considered part of the control context rather
+   * than part of the integer context.
+   */
+  DWORD 		Fir;
+  DWORD 		Psr;
+  /*
+   * The bits within the following flag control the contents of
+   * a CONTEXT record.  If the context record is used as an input
+   * parameter, then for each portion of the context record which is
+   * controlled by a flag bit whose value is set, it is assumed that
+   * the associated portion of the context record specifies valid
+   * context.  If the context record is being used to modify a
+   * thread's context, then only that portion of the thread's
+   * context will be modified.
+   *
+   * If the context record is used as an IN OUT parameter, to
+   * capture the context of a thread, then only those portions of
+   * the thread's context corresponding to flag bits which have
+   * been set will be returned.
+   *
+   * The context record is never used as an OUT only parameter.
+   */
+  DWORD 		ContextFlags;
+  DWORD 		Fill[2];
+} CONTEXT;
+
+#elif defined(_M_ARM)
+/* The following flags control the contents of the CONTEXT structure.
+ */
+#define CONTEXT_ARM				0x0000040
+#define CONTEXT_CONTROL 		(CONTEXT_ARM | 0x00000001L)
+#define CONTEXT_INTEGER 		(CONTEXT_ARM | 0x00000002L)
+
+#define CONTEXT_FULL		    (CONTEXT_CONTROL | CONTEXT_INTEGER)
+
+typedef struct _CONTEXT
+{ /* The bit values within this flag control the contents of
+   * a CONTEXT record.
+   *
+   * If the context record is used as an input parameter, then
+   * for each portion of the context record controlled by a bit
+   * flag which is set, it is assumed that the associated portion
+   * of the context record contains valid context.  If the context
+   * record is being used to modify a thread's context, then only
+   * that portion of the thread's context will be modified.
+   *
+   * If the context record is used as an IN OUT parameter to,
+   * capture the context of a thread, then only those portions
+   * of the thread's context corresponding to flag bits which
+   * have been set will be returned.
+   *
+   * The context record is never used as an OUT only parameter.
+   */
+  ULONG 		ContextFlags;
+  /*
+   * This section is specified/returned if the ContextFlags word
+   * contains the flag CONTEXT_INTEGER.
+   */
+  ULONG 		R0;
+  ULONG 		R1;
+  ULONG 		R2;
+  ULONG 		R3;
+  ULONG 		R4;
+  ULONG 		R5;
+  ULONG 		R6;
+  ULONG 		R7;
+  ULONG 		R8;
+  ULONG 		R9;
+  ULONG 		R10;
+  ULONG 		R11;
+  ULONG 		R12;
+  ULONG 		Sp;
+  ULONG 		Lr;
+  ULONG 		Pc;
+  ULONG 		Psr;
+} CONTEXT;
+
+#else
+#error "undefined processor type"
+#endif
+typedef CONTEXT *PCONTEXT, *LPCONTEXT;
+
+typedef struct _EXCEPTION_RECORD
+{ DWORD 			ExceptionCode;
+  DWORD 			ExceptionFlags;
+  struct _EXCEPTION_RECORD     *ExceptionRecord;
+  PVOID 			ExceptionAddress;
+  DWORD 			NumberParameters;
+  DWORD 			ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS];
+} EXCEPTION_RECORD, *PEXCEPTION_RECORD, *LPEXCEPTION_RECORD;
+
+typedef struct _EXCEPTION_POINTERS
+{ PEXCEPTION_RECORD		ExceptionRecord;
+  PCONTEXT			ContextRecord;
+} EXCEPTION_POINTERS, *PEXCEPTION_POINTERS, *LPEXCEPTION_POINTERS;
+
+typedef union _LARGE_INTEGER
+{ struct
+  { DWORD			  LowPart;
+    LONG			  HighPart;
+  }				u;
+#if ! defined(NONAMELESSUNION) || defined(__cplusplus)
+  _ANONYMOUS_STRUCT struct
+  { DWORD			LowPart;
+    LONG			HighPart;
+  };
+#endif /* NONAMELESSUNION */
+  LONGLONG			QuadPart;
+} LARGE_INTEGER, *PLARGE_INTEGER;
+
+typedef union _ULARGE_INTEGER
+{ struct
+  { DWORD			  LowPart;
+    DWORD			  HighPart;
+  }				u;
+#if ! defined(NONAMELESSUNION) || defined(__cplusplus)
+  _ANONYMOUS_STRUCT struct
+  { DWORD			LowPart;
+    DWORD			HighPart;
+  };
+#endif /* NONAMELESSUNION */
+  ULONGLONG			QuadPart;
+} ULARGE_INTEGER, *PULARGE_INTEGER;
+
+typedef struct _LUID
+{ DWORD 		LowPart;
+  LONG			HighPart;
+} LUID, *PLUID;
+#pragma pack(push,4)
+
+typedef struct _LUID_AND_ATTRIBUTES
+{ LUID			Luid;
+  DWORD 		Attributes;
+} LUID_AND_ATTRIBUTES, *PLUID_AND_ATTRIBUTES;
+#pragma pack(pop)
+typedef LUID_AND_ATTRIBUTES LUID_AND_ATTRIBUTES_ARRAY[ANYSIZE_ARRAY];
+typedef LUID_AND_ATTRIBUTES_ARRAY *PLUID_AND_ATTRIBUTES_ARRAY;
+
+typedef struct _PRIVILEGE_SET
+{ DWORD 		PrivilegeCount;
+  DWORD 		Control;
+  LUID_AND_ATTRIBUTES	Privilege[ANYSIZE_ARRAY];
+} PRIVILEGE_SET, *PPRIVILEGE_SET;
+
+typedef struct _SECURITY_ATTRIBUTES
+{ DWORD 		nLength;
+  LPVOID		lpSecurityDescriptor;
+  BOOL			bInheritHandle;
+} SECURITY_ATTRIBUTES, *PSECURITY_ATTRIBUTES, *LPSECURITY_ATTRIBUTES;
+
+typedef enum _SECURITY_IMPERSONATION_LEVEL
+{ SecurityAnonymous,
+  SecurityIdentification,
+  SecurityImpersonation,
+  SecurityDelegation
+} SECURITY_IMPERSONATION_LEVEL, *PSECURITY_IMPERSONATION_LEVEL;
+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 PVOID PACCESS_TOKEN;
+
+typedef struct _SE_IMPERSONATION_STATE
+{ PACCESS_TOKEN 		Token;
+  BOOLEAN			CopyOnOpen;
+  BOOLEAN			EffectiveOnly;
+  SECURITY_IMPERSONATION_LEVEL	Level;
+} SE_IMPERSONATION_STATE, *PSE_IMPERSONATION_STATE;
+
+typedef struct _SID_IDENTIFIER_AUTHORITY
+{ BYTE				Value[6];
+} SID_IDENTIFIER_AUTHORITY, *PSID_IDENTIFIER_AUTHORITY, *LPSID_IDENTIFIER_AUTHORITY;
+typedef PVOID PSID;
+
+typedef struct _SID
+{ BYTE				Revision;
+  BYTE				SubAuthorityCount;
+  SID_IDENTIFIER_AUTHORITY	IdentifierAuthority;
+  DWORD 			SubAuthority[ANYSIZE_ARRAY];
+} SID, *PISID;
+
+typedef struct _SID_AND_ATTRIBUTES
+{ PSID			Sid;
+  DWORD 		Attributes;
+} SID_AND_ATTRIBUTES, *PSID_AND_ATTRIBUTES;
+typedef SID_AND_ATTRIBUTES SID_AND_ATTRIBUTES_ARRAY[ANYSIZE_ARRAY];
+typedef SID_AND_ATTRIBUTES_ARRAY *PSID_AND_ATTRIBUTES_ARRAY;
+
+#if (_WIN32_WINNT >= 0x0600)
+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[SID_HASH_SIZE];
+} SID_AND_ATTRIBUTES_HASH, *PSID_AND_ATTRIBUTES_HASH;
+#endif
+
+typedef struct _TOKEN_SOURCE
+{ CHAR			SourceName[TOKEN_SOURCE_LENGTH];
+  LUID			SourceIdentifier;
+} TOKEN_SOURCE, *PTOKEN_SOURCE;
+
+typedef struct _TOKEN_CONTROL
+{ LUID			TokenId;
+  LUID			AuthenticationId;
+  LUID			ModifiedId;
+  TOKEN_SOURCE		TokenSource;
+} TOKEN_CONTROL, *PTOKEN_CONTROL;
+
+typedef struct _TOKEN_DEFAULT_DACL
+{ PACL			DefaultDacl;
+} TOKEN_DEFAULT_DACL, *PTOKEN_DEFAULT_DACL;
+
+typedef struct _TOKEN_GROUPS
+{ DWORD 		GroupCount;
+  SID_AND_ATTRIBUTES	Groups[ANYSIZE_ARRAY];
+} TOKEN_GROUPS, *PTOKEN_GROUPS, *LPTOKEN_GROUPS;
+
+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_PRIVILEGES
+{ DWORD 		PrivilegeCount;
+  LUID_AND_ATTRIBUTES	Privileges[ANYSIZE_ARRAY];
+} TOKEN_PRIVILEGES, *PTOKEN_PRIVILEGES, *LPTOKEN_PRIVILEGES;
+
+typedef enum tagTOKEN_TYPE
+{ TokenPrimary		=	1,
+  TokenImpersonation
+} TOKEN_TYPE, *PTOKEN_TYPE;
+
+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_USER
+{ SID_AND_ATTRIBUTES		User;
+} TOKEN_USER, *PTOKEN_USER;
+#if (_WIN32_WINNT >= 0x0600)
+
+typedef struct _TOKEN_LINKED_TOKEN
+{ HANDLE			LinkedToken;
+} TOKEN_LINKED_TOKEN, *PTOKEN_LINKED_TOKEN;
+
+typedef struct _TOKEN_MANDATORY_LABEL
+{ SID_AND_ATTRIBUTES		Label;
+} TOKEN_MANDATORY_LABEL, *PTOKEN_MANDATORY_LABEL;
+
+typedef struct _TOKEN_MANDATORY_POLICY
+{ DWORD 			Policy;
+} TOKEN_MANDATORY_POLICY, *PTOKEN_MANDATORY_POLICY;
+
+typedef struct _TOKEN_ELEVATION
+{ DWORD 			TokenIsElevated;
+} TOKEN_ELEVATION, *PTOKEN_ELEVATION;
+
+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;
+} TOKEN_ACCESS_INFORMATION, *PTOKEN_ACCESS_INFORMATION;
+#endif
+typedef DWORD SECURITY_INFORMATION, *PSECURITY_INFORMATION;
+typedef WORD SECURITY_DESCRIPTOR_CONTROL, *PSECURITY_DESCRIPTOR_CONTROL;
+
+typedef struct _SECURITY_DESCRIPTOR
+{ BYTE				Revision;
+  BYTE				Sbz1;
+  SECURITY_DESCRIPTOR_CONTROL	Control;
+  PSID				Owner;
+  PSID				Group;
+  PACL				Sacl;
+  PACL				Dacl;
+} SECURITY_DESCRIPTOR, *PSECURITY_DESCRIPTOR, *PISECURITY_DESCRIPTOR;
+
+typedef enum _TOKEN_INFORMATION_CLASS
+{ TokenUser		=	1,
+  TokenGroups,
+  TokenPrivileges,
+  TokenOwner,
+  TokenPrimaryGroup,
+  TokenDefaultDacl,
+  TokenSource,
+  TokenType,
+  TokenImpersonationLevel,
+  TokenStatistics,
+  TokenRestrictedSids,
+  TokenSessionId,
+  TokenGroupsAndPrivileges,
+  TokenSessionReference,
+  TokenSandBoxInert,
+  TokenAuditPolicy,
+  TokenOrigin,
+#if (_WIN32_WINNT >= 0x0600)
+  TokenElevationType,
+  TokenLinkedToken,
+  TokenElevation,
+  TokenHasRestrictions,
+  TokenAccessInformation,
+  TokenVirtualizationAllowed,
+  TokenVirtualizationEnabled,
+  TokenIntegrityLevel,
+  TokenUIAccess,
+  TokenMandatoryPolicy,
+  TokenLogonSid,
+#endif
+  MaxTokenInfoClass
+} TOKEN_INFORMATION_CLASS;
+
+typedef enum _SID_NAME_USE
+{ SidTypeUser		=	1,
+  SidTypeGroup,
+  SidTypeDomain,
+  SidTypeAlias,
+  SidTypeWellKnownGroup,
+  SidTypeDeletedAccount,
+  SidTypeInvalid,
+  SidTypeUnknown,
+  SidTypeComputer
+} SID_NAME_USE, *PSID_NAME_USE;
+
+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;
+
+typedef struct _IO_COUNTERS
+{ ULONGLONG		ReadOperationCount;
+  ULONGLONG		WriteOperationCount;
+  ULONGLONG		OtherOperationCount;
+  ULONGLONG		ReadTransferCount;
+  ULONGLONG		WriteTransferCount;
+  ULONGLONG		OtherTransferCount;
+} IO_COUNTERS, *PIO_COUNTERS;
+
+typedef struct _FILE_NOTIFY_INFORMATION
+{ DWORD 		NextEntryOffset;
+  DWORD 		Action;
+  DWORD 		FileNameLength;
+  WCHAR 		FileName[1];
+} FILE_NOTIFY_INFORMATION, *PFILE_NOTIFY_INFORMATION;
+
+typedef struct _TAPE_ERASE
+{ DWORD 		Type;
+  BOOLEAN		Immediate;
+} TAPE_ERASE, *PTAPE_ERASE;
+
+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_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_GET_POSITION
+{ ULONG 		Type;
+  ULONG 		Partition;
+  ULONG 		OffsetLow;
+  ULONG 		OffsetHigh;
+} TAPE_GET_POSITION, *PTAPE_GET_POSITION;
+
+typedef struct _TAPE_PREPARE
+{ DWORD 		Operation;
+  BOOLEAN		Immediate;
+} TAPE_PREPARE, *PTAPE_PREPARE;
+
+typedef struct _TAPE_SET_DRIVE_PARAMETERS
+{ BOOLEAN		ECC;
+  BOOLEAN		Compression;
+  BOOLEAN		DataPadding;
+  BOOLEAN		ReportSetmarks;
+  ULONG 		EOTWarningZoneSize;
+} TAPE_SET_DRIVE_PARAMETERS, *PTAPE_SET_DRIVE_PARAMETERS;
+
+typedef struct _TAPE_SET_MEDIA_PARAMETERS
+{ ULONG 		BlockSize;
+} TAPE_SET_MEDIA_PARAMETERS, *PTAPE_SET_MEDIA_PARAMETERS;
+
+typedef struct _TAPE_SET_POSITION
+{ DWORD 		Method;
+  DWORD 		Partition;
+  LARGE_INTEGER 	Offset;
+  BOOLEAN		Immediate;
+} TAPE_SET_POSITION, *PTAPE_SET_POSITION;
+
+typedef struct _TAPE_WRITE_MARKS
+{ DWORD 		Type;
+  DWORD 		Count;
+  BOOLEAN		Immediate;
+} TAPE_WRITE_MARKS, *PTAPE_WRITE_MARKS;
+
+typedef struct _TAPE_CREATE_PARTITION
+{ DWORD 		Method;
+  DWORD 		Count;
+  DWORD 		Size;
+} TAPE_CREATE_PARTITION, *PTAPE_CREATE_PARTITION;
+
+typedef struct _MEMORY_BASIC_INFORMATION
+{ PVOID 		BaseAddress;
+  PVOID 		AllocationBase;
+  DWORD 		AllocationProtect;
+  DWORD 		RegionSize;
+  DWORD 		State;
+  DWORD 		Protect;
+  DWORD 		Type;
+} MEMORY_BASIC_INFORMATION, *PMEMORY_BASIC_INFORMATION;
+
+typedef struct _MESSAGE_RESOURCE_ENTRY
+{ WORD			Length;
+  WORD			Flags;
+  BYTE			Text[1];
+} MESSAGE_RESOURCE_ENTRY, *PMESSAGE_RESOURCE_ENTRY;
+
+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 _LIST_ENTRY
+{ struct _LIST_ENTRY		*Flink;
+  struct _LIST_ENTRY		*Blink;
+} LIST_ENTRY, *PLIST_ENTRY;
+
+typedef struct _SINGLE_LIST_ENTRY
+{ struct _SINGLE_LIST_ENTRY	*Next;
+} SINGLE_LIST_ENTRY, *PSINGLE_LIST_ENTRY;
+
+#ifndef _SLIST_HEADER_
+#define _SLIST_HEADER_
+#define SLIST_ENTRY		SINGLE_LIST_ENTRY
+#define _SLIST_ENTRY	       _SINGLE_LIST_ENTRY
+#define PSLIST_ENTRY		PSINGLE_LIST_ENTRY
+
+typedef union _SLIST_HEADER
+{ ULONGLONG			Alignment;
+  _ANONYMOUS_STRUCT struct
+  { SLIST_ENTRY 		  Next;
+    WORD			  Depth;
+    WORD			  Sequence;
+  }				DUMMYSTRUCTNAME;
+} SLIST_HEADER, *PSLIST_HEADER;
+#endif /* !_SLIST_HEADER_ */
+
+typedef struct _RTL_CRITICAL_SECTION_DEBUG
+{ WORD				Type;
+  WORD				CreatorBackTraceIndex;
+  struct _RTL_CRITICAL_SECTION *CriticalSection;
+  LIST_ENTRY			ProcessLocksList;
+  DWORD 			EntryCount;
+  DWORD 			ContentionCount;
+  DWORD 			Spare[2];
+} RTL_CRITICAL_SECTION_DEBUG, *PRTL_CRITICAL_SECTION_DEBUG;
+
+typedef struct _RTL_CRITICAL_SECTION
+{ PRTL_CRITICAL_SECTION_DEBUG	DebugInfo;
+  LONG				LockCount;
+  LONG				RecursionCount;
+  HANDLE			OwningThread;
+  HANDLE			LockSemaphore;
+  DWORD 			Reserved;
+} RTL_CRITICAL_SECTION, *PRTL_CRITICAL_SECTION;
+
+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;
+
+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;
+
+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;
+
+#pragma pack(push,2)
+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)
+
+#pragma pack(push,4)
+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;
+
+typedef struct _IMAGE_DATA_DIRECTORY
+{ DWORD 		VirtualAddress;
+  DWORD 		Size;
+} IMAGE_DATA_DIRECTORY, *PIMAGE_DATA_DIRECTORY;
+
+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[IMAGE_NUMBEROF_DIRECTORY_ENTRIES];
+} IMAGE_OPTIONAL_HEADER32, *PIMAGE_OPTIONAL_HEADER32;
+
+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[IMAGE_NUMBEROF_DIRECTORY_ENTRIES];
+} IMAGE_OPTIONAL_HEADER64, *PIMAGE_OPTIONAL_HEADER64;
+#ifdef _WIN64
+typedef IMAGE_OPTIONAL_HEADER64		IMAGE_OPTIONAL_HEADER;
+typedef PIMAGE_OPTIONAL_HEADER64	PIMAGE_OPTIONAL_HEADER;
+#else
+typedef IMAGE_OPTIONAL_HEADER32		IMAGE_OPTIONAL_HEADER;
+typedef PIMAGE_OPTIONAL_HEADER32	PIMAGE_OPTIONAL_HEADER;
+#endif
+
+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;
+#pragma pack(pop)
+
+#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;
+#pragma pack(pop)
+
+#pragma pack(push,4)
+typedef struct _IMAGE_NT_HEADERS
+{ DWORD 			Signature;
+  IMAGE_FILE_HEADER		FileHeader;
+  IMAGE_OPTIONAL_HEADER32	OptionalHeader;
+} IMAGE_NT_HEADERS32, *PIMAGE_NT_HEADERS32;
+
+typedef struct _IMAGE_NT_HEADERS64
+{ DWORD 			Signature;
+  IMAGE_FILE_HEADER		FileHeader;
+  IMAGE_OPTIONAL_HEADER64	OptionalHeader;
+} IMAGE_NT_HEADERS64, *PIMAGE_NT_HEADERS64;
+#ifdef _WIN64
+typedef IMAGE_NT_HEADERS64	IMAGE_NT_HEADERS;
+typedef PIMAGE_NT_HEADERS64	PIMAGE_NT_HEADERS;
+#else
+typedef IMAGE_NT_HEADERS32	IMAGE_NT_HEADERS;
+typedef PIMAGE_NT_HEADERS32	PIMAGE_NT_HEADERS;
+#endif
+
+typedef struct _IMAGE_ROM_HEADERS
+{ IMAGE_FILE_HEADER		FileHeader;
+  IMAGE_ROM_OPTIONAL_HEADER	OptionalHeader;
+} IMAGE_ROM_HEADERS, *PIMAGE_ROM_HEADERS;
+
+typedef struct _IMAGE_SECTION_HEADER
+{ BYTE		Name[IMAGE_SIZEOF_SHORT_NAME];
+  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;
+#pragma pack(pop)
+
+#pragma pack(push,2)
+typedef struct _IMAGE_SYMBOL
+{ union
+  { BYTE	  ShortName[8];
+    struct
+    { DWORD	    Short;
+      DWORD	    Long;
+    }		  Name;
+    PBYTE	  LongName[2];
+  }		N;
+  DWORD 			Value;
+  SHORT 	SectionNumber;
+  WORD		Type;
+  BYTE		StorageClass;
+  BYTE		NumberOfAuxSymbols;
+} IMAGE_SYMBOL, *PIMAGE_SYMBOL;
+
+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[IMAGE_SIZEOF_SYMBOL];
+  }		File;
+  struct
+  { DWORD	  Length;
+    WORD	  NumberOfRelocations;
+    WORD	  NumberOfLinenumbers;
+    DWORD	  CheckSum;
+    SHORT	  Number;
+    BYTE	  Selection;
+  }		Section;
+} IMAGE_AUX_SYMBOL, *PIMAGE_AUX_SYMBOL;
+
+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;
+
+typedef struct _IMAGE_RELOCATION
+{ _ANONYMOUS_UNION union
+  { DWORD		  VirtualAddress;
+    DWORD		  RelocCount;
+  }			DUMMYUNIONNAME;
+  DWORD 		SymbolTableIndex;
+  WORD			Type;
+} IMAGE_RELOCATION, *PIMAGE_RELOCATION;
+#pragma pack(pop)
+
+#pragma pack(push,4)
+typedef struct _IMAGE_BASE_RELOCATION
+{ DWORD 	VirtualAddress;
+  DWORD 	SizeOfBlock;
+} IMAGE_BASE_RELOCATION, *PIMAGE_BASE_RELOCATION;
+#pragma pack(pop)
+
+#pragma pack(push,2)
+typedef struct _IMAGE_LINENUMBER
+{ union
+  { DWORD	  SymbolTableIndex;
+    DWORD	  VirtualAddress;
+  }		Type;
+  WORD		Linenumber;
+} IMAGE_LINENUMBER, *PIMAGE_LINENUMBER;
+#pragma pack(pop)
+
+#pragma pack(push,4)
+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;
+
+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;
+  BYTE		Name[1];
+} IMAGE_IMPORT_BY_NAME, *PIMAGE_IMPORT_BY_NAME;
+
+typedef struct _IMAGE_THUNK_DATA32
+{ union
+  { DWORD	  ForwarderString;
+    DWORD	  Function;
+    DWORD	  Ordinal;
+    DWORD	  AddressOfData;
+  }		u1;
+} IMAGE_THUNK_DATA32, *PIMAGE_THUNK_DATA32;
+
+typedef struct _IMAGE_THUNK_DATA64
+{ union
+  { ULONGLONG	  ForwarderString;
+    ULONGLONG	  Function;
+    ULONGLONG	  Ordinal;
+    ULONGLONG	  AddressOfData;
+  }		u1;
+} IMAGE_THUNK_DATA64, *PIMAGE_THUNK_DATA64;
+#ifdef __WIN64
+typedef IMAGE_THUNK_DATA64	IMAGE_THUNK_DATA;
+typedef PIMAGE_THUNK_DATA64	PIMAGE_THUNK_DATA;
+#else
+typedef IMAGE_THUNK_DATA32	IMAGE_THUNK_DATA;
+typedef PIMAGE_THUNK_DATA32	PIMAGE_THUNK_DATA;
+#endif
+
+typedef struct _IMAGE_IMPORT_DESCRIPTOR
+{ _ANONYMOUS_UNION union
+  { DWORD		  Characteristics;
+    DWORD		  OriginalFirstThunk;
+  }			DUMMYUNIONNAME;
+  DWORD 		TimeDateStamp;
+  DWORD 		ForwarderChain;
+  DWORD 		Name;
+  DWORD 		FirstThunk;
+} 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 void(NTAPI *PIMAGE_TLS_CALLBACK)(PVOID,DWORD,PVOID);
+
+typedef struct _IMAGE_TLS_DIRECTORY32
+{ DWORD 	StartAddressOfRawData;
+  DWORD 	EndAddressOfRawData;
+  DWORD 	AddressOfIndex;
+  DWORD 	AddressOfCallBacks;
+  DWORD 	SizeOfZeroFill;
+  DWORD 	Characteristics;
+} IMAGE_TLS_DIRECTORY32, *PIMAGE_TLS_DIRECTORY32;
+
+typedef struct _IMAGE_TLS_DIRECTORY64
+{ ULONGLONG	StartAddressOfRawData;
+  ULONGLONG	EndAddressOfRawData;
+  ULONGLONG	AddressOfIndex;
+  ULONGLONG	AddressOfCallBacks;
+  DWORD 	SizeOfZeroFill;
+  DWORD 	Characteristics;
+} IMAGE_TLS_DIRECTORY64, *PIMAGE_TLS_DIRECTORY64;
+#ifdef __WIN64
+typedef IMAGE_TLS_DIRECTORY64	IMAGE_TLS_DIRECTORY;
+typedef PIMAGE_TLS_DIRECTORY64	PIMAGE_TLS_DIRECTORY;
+#else
+typedef IMAGE_TLS_DIRECTORY32	IMAGE_TLS_DIRECTORY;
+typedef PIMAGE_TLS_DIRECTORY32	PIMAGE_TLS_DIRECTORY;
+#endif
+
+typedef struct _IMAGE_RESOURCE_DIRECTORY
+{ DWORD 	Characteristics;
+  DWORD 	TimeDateStamp;
+  WORD		MajorVersion;
+  WORD		MinorVersion;
+  WORD		NumberOfNamedEntries;
+  WORD		NumberOfIdEntries;
+} IMAGE_RESOURCE_DIRECTORY, *PIMAGE_RESOURCE_DIRECTORY;
+
+_ANONYMOUS_STRUCT typedef struct _IMAGE_RESOURCE_DIRECTORY_ENTRY
+{ _ANONYMOUS_UNION union
+  { _ANONYMOUS_STRUCT struct
+    { DWORD			    NameOffset	  : 31;
+      DWORD			    NameIsString  :  1;
+    }				  DUMMYSTRUCTNAME;
+    DWORD			  Name;
+    WORD			  Id;
+  }				DUMMYUNIONNAME;
+  _ANONYMOUS_UNION union
+  { DWORD			  OffsetToData;
+    _ANONYMOUS_STRUCT struct
+    { DWORD			    OffsetToDirectory:31;
+      DWORD			    DataIsDirectory:1;
+    }				  DUMMYSTRUCTNAME2;
+  }				DUMMYUNIONNAME2;
+} 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 _IMAGE_LOAD_CONFIG_DIRECTORY
+{ DWORD 	Characteristics;
+  DWORD 	TimeDateStamp;
+  WORD		MajorVersion;
+  WORD		MinorVersion;
+  DWORD 	GlobalFlagsClear;
+  DWORD 	GlobalFlagsSet;
+  DWORD 	CriticalSectionDefaultTimeout;
+  DWORD 	DeCommitFreeBlockThreshold;
+  DWORD 	DeCommitTotalFreeThreshold;
+  PVOID 	LockPrefixTable;
+  DWORD 	MaximumAllocationSize;
+  DWORD 	VirtualMemoryThreshold;
+  DWORD 	ProcessHeapFlags;
+  DWORD 	Reserved[4];
+} IMAGE_LOAD_CONFIG_DIRECTORY, *PIMAGE_LOAD_CONFIG_DIRECTORY;
+
+typedef struct
+{ DWORD 	Characteristics;
+  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		CSDFlags;
+  WORD		Reserved1;
+  ULONGLONG	EditList;
+  DWORD 	Reserved[2];
+} IMAGE_LOAD_CONFIG_DIRECTORY64, *PIMAGE_LOAD_CONFIG_DIRECTORY64;
+
+typedef struct _IMAGE_RUNTIME_FUNCTION_ENTRY
+{ DWORD 	BeginAddress;
+  DWORD 	EndAddress;
+  PVOID 	ExceptionHandler;
+  PVOID 	HandlerData;
+  DWORD 	PrologEndAddress;
+} IMAGE_RUNTIME_FUNCTION_ENTRY, *PIMAGE_RUNTIME_FUNCTION_ENTRY;
+
+typedef struct _IMAGE_CE_RUNTIME_FUNCTION_ENTRY
+{ unsigned int	FuncStart:32;
+  unsigned int	PrologLen:8;
+  unsigned int	FuncLen:22;
+  unsigned int	ThirtyTwoBit:1;
+  unsigned int	ExceptionFlag:1;
+} IMAGE_CE_RUNTIME_FUNCTION_ENTRY, *PIMAGE_CE_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;
+
+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;
+
+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;
+  _ANONYMOUS_UNION union
+  { ULONGLONG		  EndOfPrologue;
+    ULONGLONG		  UnwindInfoAddress;
+  }			DUMMYUNIONNAME;
+} 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;
+#pragma pack(pop)
+
+typedef enum _CM_SERVICE_NODE_TYPE
+{ DriverType			=	SERVICE_KERNEL_DRIVER,
+  FileSystemType		=	SERVICE_FILE_SYSTEM_DRIVER,
+  Win32ServiceOwnProcess	=	SERVICE_WIN32_OWN_PROCESS,
+  Win32ServiceShareProcess	=	SERVICE_WIN32_SHARE_PROCESS,
+  AdapterType			=	SERVICE_ADAPTER,
+  RecognizerType		=	SERVICE_RECOGNIZER_DRIVER
+} SERVICE_NODE_TYPE;
+
+typedef enum _CM_SERVICE_LOAD_TYPE
+{ BootLoad			=	SERVICE_BOOT_START,
+  SystemLoad			=	SERVICE_SYSTEM_START,
+  AutoLoad			=	SERVICE_AUTO_START,
+  DemandLoad			=	SERVICE_DEMAND_START,
+  DisableLoad			=	SERVICE_DISABLED
+} SERVICE_LOAD_TYPE;
+
+typedef enum _CM_ERROR_CONTROL_TYPE
+{ IgnoreError			=	SERVICE_ERROR_IGNORE,
+  NormalError			=	SERVICE_ERROR_NORMAL,
+  SevereError			=	SERVICE_ERROR_SEVERE,
+  CriticalError			=	SERVICE_ERROR_CRITICAL
+} SERVICE_ERROR_TYPE;
+
+typedef struct _NT_TIB
+{ struct _EXCEPTION_REGISTRATION_RECORD *ExceptionList;
+  PVOID 				 StackBase;
+  PVOID 				 StackLimit;
+  PVOID 				 SubSystemTib;
+  _ANONYMOUS_UNION union
+  { PVOID		  		   FiberData;
+    DWORD		  		   Version;
+  }					 DUMMYUNIONNAME;
+  PVOID 				 ArbitraryUserPointer;
+  struct _NT_TIB			*Self;
+} NT_TIB, *PNT_TIB;
+
+typedef struct _REPARSE_DATA_BUFFER
+{ DWORD 			ReparseTag;
+  WORD				ReparseDataLength;
+  WORD				Reserved;
+  _ANONYMOUS_UNION union
+  { struct
+    { WORD			    SubstituteNameOffset;
+      WORD			    SubstituteNameLength;
+      WORD			    PrintNameOffset;
+      WORD			    PrintNameLength;
+      ULONG			    Flags;
+      WCHAR			    PathBuffer[1];
+    }				  SymbolicLinkReparseBuffer;
+    struct
+    { WORD			    SubstituteNameOffset;
+      WORD			    SubstituteNameLength;
+      WORD			    PrintNameOffset;
+      WORD			    PrintNameLength;
+      WCHAR			    PathBuffer[1];
+    }				  MountPointReparseBuffer;
+    struct
+    { BYTE			    DataBuffer[1];
+    }				  GenericReparseBuffer;
+  }				DUMMYUNIONNAME;
+} REPARSE_DATA_BUFFER, *PREPARSE_DATA_BUFFER;
+
+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;
+
+typedef struct _REPARSE_POINT_INFORMATION
+{ WORD		ReparseDataLength;
+  WORD		UnparsedNameLength;
+} REPARSE_POINT_INFORMATION, *PREPARSE_POINT_INFORMATION;
+
+
+typedef union _FILE_SEGMENT_ELEMENT
+{ PVOID64	Buffer;
+  ULONGLONG	Alignment;
+} FILE_SEGMENT_ELEMENT, *PFILE_SEGMENT_ELEMENT;
+
+/* JOBOBJECT_BASIC_LIMIT_INFORMATION.LimitFlags constants */
+#define JOB_OBJECT_LIMIT_WORKINGSET			0x0001
+#define JOB_OBJECT_LIMIT_PROCESS_TIME			0x0002
+#define JOB_OBJECT_LIMIT_JOB_TIME			0x0004
+#define JOB_OBJECT_LIMIT_ACTIVE_PROCESS 		0x0008
+#define JOB_OBJECT_LIMIT_AFFINITY			0x0010
+#define JOB_OBJECT_LIMIT_PRIORITY_CLASS 		0x0020
+#define JOB_OBJECT_LIMIT_PRESERVE_JOB_TIME		0x0040
+#define JOB_OBJECT_LIMIT_SCHEDULING_CLASS		0x0080
+#define JOB_OBJECT_LIMIT_PROCESS_MEMORY 		0x0100
+#define JOB_OBJECT_LIMIT_JOB_MEMORY			0x0200
+#define JOB_OBJECT_LIMIT_DIE_ON_UNHANDLED_EXCEPTION	0x0400
+#define JOB_OBJECT_LIMIT_BREAKAWAY_OK			0x0800
+#define JOB_OBJECT_LIMIT_SILENT_BREAKAWAY_OK		0x1000
+
+/* Wrong definitions, but keep for backward compatibility. */
+#define JOB_OBJECT_BREAKAWAY_OK 	JOB_OBJECT_LIMIT_BREAKAWAY_OK
+#define JOB_OBJECT_SILENT_BREAKAWAY	JOB_OBJECT_LIMIT_SILENT_BREAKAWAY_OK
+
+/* JOBOBJECT_BASIC_UI_RESTRICTIONS.UIRestrictionsClass constants */
+#define JOB_OBJECT_UILIMIT_HANDLES			0x0001
+#define JOB_OBJECT_UILIMIT_READCLIPBOARD		0x0002
+#define JOB_OBJECT_UILIMIT_WRITECLIPBOARD		0x0004
+#define JOB_OBJECT_UILIMIT_SYSTEMPARAMETERS		0x0008
+#define JOB_OBJECT_UILIMIT_DISPLAYSETTINGS		0x0010
+#define JOB_OBJECT_UILIMIT_GLOBALATOMS			0x0020
+#define JOB_OBJECT_UILIMIT_DESKTOP			0x0040
+#define JOB_OBJECT_UILIMIT_EXITWINDOWS			0x0080
+
+/* JOBOBJECT_SECURITY_LIMIT_INFORMATION.SecurityLimitFlags constants */
+#define JOB_OBJECT_SECURITY_NO_ADMIN			0x0001
+#define JOB_OBJECT_SECURITY_RESTRICTED_TOKEN		0x0002
+#define JOB_OBJECT_SECURITY_ONLY_TOKEN			0x0004
+#define JOB_OBJECT_SECURITY_FILTER_TOKENS		0x0008
+
+/* JOBOBJECT_END_OF_JOB_TIME_INFORMATION.EndOfJobTimeAction constants */
+#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
+
+
+typedef enum _JOBOBJECTINFOCLASS
+{ JobObjectBasicAccountingInformation		=	 1,
+  JobObjectBasicLimitInformation,
+  JobObjectBasicProcessIdList,
+  JobObjectBasicUIRestrictions,
+  JobObjectSecurityLimitInformation,
+  JobObjectEndOfJobTimeInformation,
+  JobObjectAssociateCompletionPortInformation,
+  JobObjectBasicAndIoAccountingInformation,
+  JobObjectExtendedLimitInformation,
+  JobObjectJobSetInformation,
+  MaxJobObjectInfoClass
+} JOBOBJECTINFOCLASS;
+
+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_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_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_JOBSET_INFORMATION
+{ DWORD 		MemberLevel;
+} JOBOBJECT_JOBSET_INFORMATION, *PJOBOBJECT_JOBSET_INFORMATION;
+
+/* Fixme: Making these defines conditional on WINVER will break ddk includes */
+#if 1 /* (WINVER >= 0x0500) */
+#include <pshpack4.h>
+
+#define ES_SYSTEM_REQUIRED			0x00000001
+#define ES_DISPLAY_REQUIRED			0x00000002
+#define ES_USER_PRESENT 			0x00000004
+#define ES_CONTINUOUS				0x80000000
+
+
+typedef enum _LATENCY_TIME
+{ LT_DONT_CARE,
+  LT_LOWEST_LATENCY
+} LATENCY_TIME, *PLATENCY_TIME;
+
+
+typedef enum _SYSTEM_POWER_STATE
+{ PowerSystemUnspecified,
+  PowerSystemWorking,
+  PowerSystemSleeping1,
+  PowerSystemSleeping2,
+  PowerSystemSleeping3,
+  PowerSystemHibernate,
+  PowerSystemShutdown,
+  PowerSystemMaximum
+} SYSTEM_POWER_STATE, *PSYSTEM_POWER_STATE;
+#define POWER_SYSTEM_MAXIMUM  PowerSystemMaximum
+
+typedef enum
+{ PowerActionNone,
+  PowerActionReserved,
+  PowerActionSleep,
+  PowerActionHibernate,
+  PowerActionShutdown,
+  PowerActionShutdownReset,
+  PowerActionShutdownOff,
+  PowerActionWarmEject
+} POWER_ACTION, *PPOWER_ACTION;
+
+#if (_WIN32_WINNT >= 0x0600)
+
+typedef enum
+{ PoAc			=	0,
+  PoDc			=	1,
+  PoHot 		=	2,
+  PoConditionMaximum	=	3
+} SYSTEM_POWER_CONDITION, *PSYSTEM_POWER_CONDITION;
+#endif
+
+
+typedef enum _DEVICE_POWER_STATE
+{ PowerDeviceUnspecified,
+  PowerDeviceD0,
+  PowerDeviceD1,
+  PowerDeviceD2,
+  PowerDeviceD3,
+  PowerDeviceMaximum
+} DEVICE_POWER_STATE, *PDEVICE_POWER_STATE;
+
+
+typedef struct
+{ DWORD 		Granularity;
+  DWORD 		Capacity;
+} BATTERY_REPORTING_SCALE, *PBATTERY_REPORTING_SCALE;
+
+
+typedef struct _POWER_ACTION_POLICY
+{ POWER_ACTION		Action;
+  ULONG 		Flags;
+  ULONG 		EventCode;
+} POWER_ACTION_POLICY, *PPOWER_ACTION_POLICY;
+
+/* POWER_ACTION_POLICY.Flags constants */
+#define POWER_ACTION_QUERY_ALLOWED		0x00000001
+#define POWER_ACTION_UI_ALLOWED 		0x00000002
+#define POWER_ACTION_OVERRIDE_APPS		0x00000004
+#define POWER_ACTION_LIGHTEST_FIRST		0x10000000
+#define POWER_ACTION_LOCK_CONSOLE		0x20000000
+#define POWER_ACTION_DISABLE_WAKES		0x40000000
+#define POWER_ACTION_CRITICAL			0x80000000
+
+/* POWER_ACTION_POLICY.EventCode constants */
+#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_FORCE_TRIGGER_RESET		0x80000000
+
+#define DISCHARGE_POLICY_CRITICAL			 0
+#define DISCHARGE_POLICY_LOW				 1
+#define NUM_DISCHARGE_POLICIES				 4
+
+#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 _SYSTEM_POWER_LEVEL
+{ BOOLEAN		Enable;
+  UCHAR 		Spare[3];
+  ULONG 		BatteryLevel;
+  POWER_ACTION_POLICY	PowerPolicy;
+  SYSTEM_POWER_STATE	MinSystemState;
+} SYSTEM_POWER_LEVEL, *PSYSTEM_POWER_LEVEL;
+
+typedef struct _SYSTEM_POWER_POLICY
+{ ULONG 		Revision;
+  POWER_ACTION_POLICY	PowerButton;
+  POWER_ACTION_POLICY	SleepButton;
+  POWER_ACTION_POLICY	LidClose;
+  SYSTEM_POWER_STATE	LidOpenWake;
+  ULONG 		Reserved;
+  POWER_ACTION_POLICY	Idle;
+  ULONG 		IdleTimeout;
+  UCHAR 		IdleSensitivity;
+  UCHAR 		DynamicThrottle;
+  UCHAR 		Spare2[2];
+  SYSTEM_POWER_STATE	MinSleep;
+  SYSTEM_POWER_STATE	MaxSleep;
+  SYSTEM_POWER_STATE	ReducedLatencySleep;
+  ULONG 		WinLogonFlags;
+  ULONG 		Spare3;
+  ULONG 		DozeS4Timeout;
+  ULONG 		BroadcastCapacityResolution;
+  SYSTEM_POWER_LEVEL	DischargePolicy[NUM_DISCHARGE_POLICIES];
+  ULONG 		VideoTimeout;
+  BOOLEAN		VideoDimDisplay;
+  ULONG 		VideoReserved[3];
+  ULONG 		SpindownTimeout;
+  BOOLEAN		OptimizeForPower;
+  UCHAR 		FanThrottleTolerance;
+  UCHAR 		ForcedThrottle;
+  UCHAR 		MinThrottle;
+  POWER_ACTION_POLICY	OverThrottled;
+} SYSTEM_POWER_POLICY, *PSYSTEM_POWER_POLICY;
+
+
+typedef struct _SYSTEM_POWER_CAPABILITIES
+{ 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;
+  UCHAR 			ProcessorMinThrottle;
+  UCHAR 			ProcessorMaxThrottle;
+  BOOLEAN			FastSystemS4;
+  UCHAR 			spare2[3];
+  BOOLEAN			DiskSpinDown;
+  UCHAR 			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 _SYSTEM_BATTERY_STATE
+{ BOOLEAN			AcOnLine;
+  BOOLEAN			BatteryPresent;
+  BOOLEAN			Charging;
+  BOOLEAN			Discharging;
+  BOOLEAN			Spare1[4];
+  ULONG 			MaxCapacity;
+  ULONG 			RemainingCapacity;
+  ULONG 			Rate;
+  ULONG 			EstimatedTime;
+  ULONG 			DefaultAlert1;
+  ULONG 			DefaultAlert2;
+} SYSTEM_BATTERY_STATE, *PSYSTEM_BATTERY_STATE;
+
+
+typedef enum _POWER_INFORMATION_LEVEL
+{ SystemPowerPolicyAc,
+  SystemPowerPolicyDc,
+  VerifySystemPolicyAc,
+  VerifySystemPolicyDc,
+  SystemPowerCapabilities,
+  SystemBatteryState,
+  SystemPowerStateHandler,
+  ProcessorStateHandler,
+  SystemPowerPolicyCurrent,
+  AdministratorPowerPolicy,
+  SystemReserveHiberFile,
+  ProcessorInformation,
+  SystemPowerInformation,
+  ProcessorStateHandler2,
+  LastWakeTime,
+  LastSleepTime,
+  SystemExecutionState,
+  SystemPowerStateNotifyHandler,
+  ProcessorPowerPolicyAc,
+  ProcessorPowerPolicyDc,
+  VerifyProcessorPowerPolicyAc,
+  VerifyProcessorPowerPolicyDc,
+  ProcessorPowerPolicyCurrent
+} POWER_INFORMATION_LEVEL;
+
+#if (_WIN32_WINNT >= 0x0500)
+typedef LONG (WINAPI *PVECTORED_EXCEPTION_HANDLER)(PEXCEPTION_POINTERS);
+#endif
+#if 1 /* (WIN32_WINNT >= 0x0500) */
+
+typedef struct _SYSTEM_POWER_INFORMATION
+{ ULONG 	MaxIdlenessAllowed;
+  ULONG 	Idleness;
+  ULONG 	TimeRemaining;
+  UCHAR 	CoolingMode;
+} SYSTEM_POWER_INFORMATION, *PSYSTEM_POWER_INFORMATION;
+#endif
+
+#if (_WIN32_WINNT >= 0x0501)
+
+typedef enum _HEAP_INFORMATION_CLASS
+{ HeapCompatibilityInformation
+} HEAP_INFORMATION_CLASS;
+
+typedef enum _ACTIVATION_CONTEXT_INFO_CLASS
+{ ActivationContextBasicInformation	=	1,
+  ActivationContextDetailedInformation,
+  AssemblyDetailedInformationInActivationContext,
+  FileInformationInAssemblyOfAssemblyInActivationContext
+} ACTIVATION_CONTEXT_INFO_CLASS;
+
+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;
+} ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION, *PACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION;
+typedef const ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION *PCACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION;
+
+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 ACTIVATION_CONTEXT_DETAILED_INFORMATION *PCACTIVATION_CONTEXT_DETAILED_INFORMATION;
+
+typedef struct _ACTIVATION_CONTEXT_QUERY_INDEX
+{ ULONG 		ulAssemblyIndex;
+  ULONG 		ulFileIndexInAssembly;
+} ACTIVATION_CONTEXT_QUERY_INDEX, *PACTIVATION_CONTEXT_QUERY_INDEX;
+typedef const ACTIVATION_CONTEXT_QUERY_INDEX *PCACTIVATION_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 const ASSEMBLY_FILE_DETAILED_INFORMATION *PCASSEMBLY_FILE_DETAILED_INFORMATION;
+#endif /* (WIN32_WINNT >= 0x0501) */
+
+typedef struct _PROCESSOR_POWER_POLICY_INFO
+{ ULONG 		TimeCheck;
+  ULONG 		DemoteLimit;
+  ULONG 		PromoteLimit;
+  UCHAR 		DemotePercent;
+  UCHAR 		PromotePercent;
+  UCHAR 		Spare[2];
+  ULONG 		AllowDemotion : 1;
+  ULONG 		AllowPromotion : 1;
+  ULONG 		Reserved : 30;
+} PROCESSOR_POWER_POLICY_INFO, *PPROCESSOR_POWER_POLICY_INFO;
+
+typedef struct _PROCESSOR_POWER_POLICY
+{ ULONG 			Revision;
+  UCHAR 			DynamicThrottle;
+  UCHAR 			Spare[3];
+  ULONG 			Reserved;
+  ULONG 			PolicyCount;
+  PROCESSOR_POWER_POLICY_INFO	Policy[3];
+} PROCESSOR_POWER_POLICY, *PPROCESSOR_POWER_POLICY;
+
+typedef struct _ADMINISTRATOR_POWER_POLICY
+{ SYSTEM_POWER_STATE	MinSleep;
+  SYSTEM_POWER_STATE	MaxSleep;
+  ULONG 		MinVideoTimeout;
+  ULONG 		MaxVideoTimeout;
+  ULONG 		MinSpindownTimeout;
+  ULONG 		MaxSpindownTimeout;
+} ADMINISTRATOR_POWER_POLICY, *PADMINISTRATOR_POWER_POLICY;
+#include <poppack.h>
+#endif /* WINVER >= 0x0500 */
+
+#if (_WIN32_WINNT >= 0x0500)
+typedef VOID (NTAPI *WAITORTIMERCALLBACKFUNC)(PVOID,BOOLEAN);
+#endif
+
+#ifdef UNICODE
+typedef OSVERSIONINFOW OSVERSIONINFO, *POSVERSIONINFO, *LPOSVERSIONINFO;
+typedef OSVERSIONINFOEXW OSVERSIONINFOEX, *POSVERSIONINFOEX, *LPOSVERSIONINFOEX;
+#else
+typedef OSVERSIONINFOA OSVERSIONINFO, *POSVERSIONINFO, *LPOSVERSIONINFO;
+typedef OSVERSIONINFOEXA OSVERSIONINFOEX, *POSVERSIONINFOEX, *LPOSVERSIONINFOEX;
+#endif
+
+#if (_WIN32_WINNT >= 0x0500)
+ULONGLONG WINAPI VerSetConditionMask(ULONGLONG,DWORD,BYTE);
+#define VER_SET_CONDITION(ConditionMask, TypeBitMask, ComparisonType)  \
+	((ConditionMask) = VerSetConditionMask((ConditionMask), \
+	(TypeBitMask), (ComparisonType)))
+#endif
+
+#if defined(__GNUC__)
+#if defined(_M_IX86) || defined(_M_X64) || defined(_M_IA64)
+/* On regular _WIN32 and _WIN64 hardware platforms, provide inline
+ * assembler pseudo-intrinsics to access the thread information block,
+ * and the fiber data referenced therein.
+ */
+#ifndef _WIN64  /* Not 64-bit, so assume 32-bit */
+/* On 32-bit Windows, TIB data is located via the FS segment, with
+ * offsets computed in terms of the size of 4-byte pointers; thus the
+ * offset of FiberData, preceded by four pointer fields, is 0x10, and
+ * Self, preceded by six pointers, is at offset 0x18...
+ */
+#define __tib_fiber_data__   "fs:0x10"
+#define __tib_self_refptr__  "fs:0x18"
+
+#else
+/* ...whereas, on 64-bit, the pointer size is doubled to eight bytes,
+ * so the offsets double to 0x20 for FiberData, and 0x30 for Self,
+ * respectively.
+ */
+#define __tib_fiber_data__   "gs:0x20"
+#define __tib_self_refptr__  "gs:0x30"
+#endif
+
+#if (__GNUC__ >= 3)
+/* From GCC-3.x onwards, the user may specify -masm=intel, and so
+ * generate assembly language intermediate output in Intel/Microsoft
+ * syntax; we must specify dual mode inline assembly code to support
+ * this, (in addition to the default AT&T syntax).
+ */
+static __inline__ PVOID GetCurrentFiber (void)
+{
+  void *ret;
+  __asm__ __volatile__ (
+      "mov{%z0}\t{%%"__tib_fiber_data__", %0|%0, "__tib_fiber_data__"}"
+      : "=a" (ret) /* resultant pointer will be returned in eax/rax */
+    );
+  return ret;
+}
+
+static __inline__ PVOID GetFiberData (void)
+{
+  void *ret;
+  __asm__ __volatile__ (
+      "mov{%z0}\t{%%"__tib_fiber_data__", %0|%0, "__tib_fiber_data__"}\n\t"
+      "mov{%z0}\t{(%0), %0|%0, [%0]}"
+      : "=r" (ret) /* likely eax/rax, but must support indexing */
+    );
+  return ret;
+}
+
+static __inline__ struct _TEB *NtCurrentTeb (void)
+{
+  struct _TEB *ret;
+  __asm__ __volatile__ (
+      "mov{%z0}\t{%%"__tib_self_refptr__", %0|%0, "__tib_self_refptr__"}"
+      : "=a" (ret) /* resultant pointer will be returned in eax/rax */
+      : /* no inputs */
+    );
+  return ret;
+}
+#else /* __GNUC__ < 3 */
+/* Older versions of GCC, predating GCC-3.x, did not support -masm=intel;
+ * specify inline assembly code in AT&T syntax only.
+ */
+static __inline__ PVOID GetCurrentFiber (void)
+{
+  void *ret;
+  __asm__ __volatile__ (
+      "mov%z0\t%%"__tib_fiber_data__", %0"
+      : "=a" (ret) /* resultant pointer will be returned in eax/rax */
+    );
+  return ret;
+}
+
+static __inline__ PVOID GetFiberData (void)
+{
+  void *ret;
+  __asm__ __volatile__ (
+      "mov%z0\t%%"__tib_fiber_data__", %0\n\t"
+      "mov%z0\t(%0), %0"
+      : "=r" (ret) /* likely eax/rax, but must support indexing */
+    );
+  return ret;
+}
+
+static __inline__ struct _TEB *NtCurrentTeb (void)
+{
+  struct _TEB *ret;
+  __asm__ __volatile__ (
+      "mov%z0\t%%"__tib_self_refptr__", %0"
+      : "=a" (ret) /* resultant pointer will be returned in eax/rax */
+      : /* no inputs */
+    );
+  return ret;
+}
+#endif	/* __GNUC__ < 3 */
+#endif	/* _M_IX86 || _M_X64 || _M_IA64 */
+#else	/* !__GNUC__ */
+/* The (unidentified) compiler is not GCC.
+ * FIXME: If it isn't GCC, what is it?  Given that what follows is
+ * inline assembly code, it surely can't be generically suitable for
+ * use with any non-GCC compiler?  Google suggests that this syntax
+ * may be applicable for WATCOM compilers.  More to the point: given
+ * that our mission is to deliver GCC for Windows, why is this here
+ * at all?  Do we REALLY want to carry this maintenance burden?
+ */
+#if defined(_M_IX86)
+PVOID GetCurrentFiber (void);
+#pragma aux GetCurrentFiber = \
+  "mov	eax, dword ptr fs:0x10" \
+  value [eax] \
+  modify [eax];
+
+PVOID GetFiberData (void);
+#pragma aux GetFiberData = \
+  "mov	eax, dword ptr fs:0x10" \
+  "mov	eax, [eax]" \
+  value [eax] \
+  modify [eax];
+
+struct _TEB *NtCurrentTeb (void);
+#pragma aux NtCurrentTeb = \
+  "mov	eax, dword ptr fs:0x18" \
+  value [eax] \
+  modify [eax];
+
+#endif	/* _M_IX86 */
+#endif	/* !__GNUC__ */
+
+/* MemoryBarrier() Implementation
+ * ------------------------------
+ * https://msdn.microsoft.com/en-us/library/windows/desktop/ms684208%28v=vs.85%29.aspx
+ *
+ * MSDN says that this requires one of Vista, or Windows Server-2003,
+ * or later; I don't see why that should be, since neither Microsoft's
+ * implementation, nor the following, actually exhibits any dependency
+ * on any OS feature specific to these, or later versions.
+ *
+ * For this MinGW.org MemoryBarrier() implementation, we aim to rely,
+ * to the maximum practicable extent, on the intrinsic implementations
+ * provided by the GCC compiler itself; thus, for those recent versions
+ * of GCC, (those which implement the sequentially consistent model for
+ * atomic memory access)...
+ */
+#if defined(__ATOMIC_SEQ_CST)
+ /* ...we implement barriers using the __atomic_thread_fence() intrinsic
+  * function, in sequentially consistent mode.
+  */
+# define __mingw_fence_type__	__ATOMIC_SEQ_CST
+# define __mingw_thread_fence	__atomic_thread_fence
+
+ /* For earlier compiler versions, which lack __atomic_thread_fence(),
+  * we fall back on legacy mechanisms; thus, from GCC-4.4 onward...
+  */
+#elif ((__GNUC__ << 8) + __GNUC_MINOR__) >= 0x404
+ /* ...we fall back to the __sync_synchronize() intrinsic function; (this
+  * was first mentioned in the documentation for GCC-4.1, but comments in
+  * the GCC source code suggest that it did not achieve a robust state of
+  * implementation, until GCC-4.4).
+  */
+# define __mingw_thread_fence	__sync_synchronize
+# define __mingw_fence_type__
+
+#else
+ /* Finally, when there is no viable intrinsic implementation, we fall
+  * back on inline assembly code.  This is CPU architecture dependent:
+  * we choose the instructions, for each architecture, as best we can
+  * to match the code emitted by __atomic_thread_fence(), in versions
+  * of GCC which support it; thus...
+  */
+# define __mingw_thread_fence	__asm__ __volatile__
+# define __mingw_fence_type__	__mingw_fence_insn__:::"memory"
+
+# if defined(_M_X64) || defined(_M_AMD64) || (_M_IX86_FP >= 2)
+  /* ...for X86-64, AMD-64, and 32-bit X86 processors with support for
+   * SSE2 instructions, we may issue an "mfence" instruction directly...
+   */
+#  define __mingw_fence_insn__	"mfence"
+
+# elif defined(_M_IA64)
+  /* ...while for IA-64 (Itanium), the equivalent is "mf"...
+   */
+#  define __mingw_fence_insn__	"mf"
+
+# elif defined(_M_IX86)
+  /* ...and, for 32-bit X86 processors without support for the SSE2
+   * instruction set, (nominally, our default supported architecture),
+   * we perform a bus-locked memory fetch and store, (OR with zero).
+   */
+#  define __mingw_fence_insn__	"lock or{l}\t{$0, (%%esp)|DWORD PTR [esp], 0}"
+
+  /* FIXME: To support other CPU architectures, any appropriate fall
+   * back instructions must be identified here, (with an appropriate
+   * "#elif defined(_M_ARCH)" clause for each)...
+   */
+# else
+  /* ...and, as a last resort, we arrange to inject NOTHING into the
+   * code stream; (notwthstanding, this may still suffice as a light
+   * weight barrier, insofar as it should prevent reordering of code,
+   * which might otherwise result from compiler optimizations, about
+   * the barrier placement point).
+   */
+#  define __mingw_fence_insn__	""
+# endif
+#endif
+
+/* Finally, the preceding implementation choices are encapsulated
+ * into the actual MemoryBarrier() implementation; this is provided
+ * in the form of a function, with static scope, and defined such
+ * that it must always be expanded in-line...
+ */
+static FORCEINLINE void MemoryBarrier (void)
+{ __mingw_thread_fence(__mingw_fence_type__); }
+
+/* ...before purging the implementation choice macros, (which are
+ * no longer needed), from the pre-processor namespace.
+ */
+#undef __mingw_fence_type__
+#undef __mingw_thread_fence
+#undef __mingw_fence_insn__
+
+_END_C_DECLS
+
+#endif	/* ! RC_INVOKED */
+#endif	/* !_WINNT_H: $RCSfile: winnt.h,v $: end of file */
Index: Daodan/MinGW/include/winperf.h
===================================================================
--- Daodan/MinGW/include/winperf.h	(revision 1046)
+++ Daodan/MinGW/include/winperf.h	(revision 1046)
@@ -0,0 +1,139 @@
+#ifndef _WINPERF_H
+#define _WINPERF_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define PERF_DATA_VERSION 1
+#define PERF_DATA_REVISION 1
+#define PERF_NO_INSTANCES -1
+#define PERF_SIZE_DWORD 0
+#define PERF_SIZE_LARGE 256
+#define PERF_SIZE_ZERO 512
+#define PERF_SIZE_VARIABLE_LEN 768
+#define PERF_TYPE_NUMBER 0
+#define PERF_TYPE_COUNTER 1024
+#define PERF_TYPE_TEXT 2048
+#define PERF_TYPE_ZERO 0xC00
+#define PERF_NUMBER_HEX 0
+#define PERF_NUMBER_DECIMAL 0x10000
+#define PERF_NUMBER_DEC_1000 0x20000
+#define PERF_COUNTER_VALUE 0
+#define PERF_COUNTER_RATE 0x10000
+#define PERF_COUNTER_FRACTION 0x20000
+#define PERF_COUNTER_BASE 0x30000
+#define PERF_COUNTER_ELAPSED 0x40000
+#define PERF_COUNTER_QUEUELEN 0x50000
+#define PERF_COUNTER_HISTOGRAM 0x60000
+#define PERF_TEXT_UNICODE 0
+#define PERF_TEXT_ASCII 0x10000
+#define PERF_TIMER_TICK 0
+#define PERF_TIMER_100NS 0x100000
+#define PERF_OBJECT_TIMER 0x200000
+#define PERF_DELTA_COUNTER 0x400000
+#define PERF_DELTA_BASE 0x800000
+#define PERF_INVERSE_COUNTER 0x1000000
+#define PERF_MULTI_COUNTER 0x2000000
+#define PERF_DISPLAY_NO_SUFFIX 0
+#define PERF_DISPLAY_PER_SEC 0x10000000
+#define PERF_DISPLAY_PERCENT 0x20000000
+#define PERF_DISPLAY_SECONDS 0x30000000
+#define PERF_DISPLAY_NOSHOW 0x40000000
+#define PERF_COUNTER_HISTOGRAM_TYPE 0x80000000
+#define PERF_NO_UNIQUE_ID (-1)
+#define PERF_DETAIL_NOVICE 100
+#define PERF_DETAIL_ADVANCED 200
+#define PERF_DETAIL_EXPERT 300
+#define PERF_DETAIL_WIZARD 400
+#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_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|1)
+#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|2)
+#define PERF_AVERAGE_BULK (PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_COUNTER_FRACTION|PERF_DISPLAY_NOSHOW)
+#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_RAW_BASE (PERF_SIZE_DWORD|PERF_TYPE_COUNTER|PERF_COUNTER_BASE|PERF_DISPLAY_NOSHOW|3)
+#define PERF_ELAPSED_TIME (PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_COUNTER_ELAPSED|PERF_OBJECT_TIMER|PERF_DISPLAY_SECONDS)
+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;
+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;
+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;
+typedef DWORD(CALLBACK PM_OPEN_PROC)(LPWSTR);
+typedef DWORD(CALLBACK PM_COLLECT_PROC)(LPWSTR,PVOID*,PDWORD,PDWORD);
+typedef DWORD(CALLBACK PM_CLOSE_PROC)(void);
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/winreg.h
===================================================================
--- Daodan/MinGW/include/winreg.h	(revision 1046)
+++ Daodan/MinGW/include/winreg.h	(revision 1046)
@@ -0,0 +1,175 @@
+#ifndef _WINREG_H
+#define _WINREG_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#ifndef WINADVAPI
+#define WINADVAPI
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define HKEY_CLASSES_ROOT	((HKEY)0x80000000)
+#define HKEY_CURRENT_USER	((HKEY)0x80000001)
+#define HKEY_LOCAL_MACHINE	((HKEY)0x80000002)
+#define HKEY_USERS	((HKEY)0x80000003)
+#define HKEY_PERFORMANCE_DATA	((HKEY)0x80000004)
+#define HKEY_CURRENT_CONFIG	((HKEY)0x80000005)
+#define HKEY_DYN_DATA	((HKEY)0x80000006)
+#define REG_OPTION_VOLATILE 1
+#define REG_OPTION_NON_VOLATILE 0
+#define REG_CREATED_NEW_KEY 1
+#define REG_OPENED_EXISTING_KEY 2
+#define REG_NONE 0
+#define REG_SZ 1
+#define REG_EXPAND_SZ 2
+#define REG_BINARY 3
+#define REG_DWORD_LITTLE_ENDIAN 4
+#define REG_DWORD 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_LITTLE_ENDIAN 11
+#define REG_QWORD 11
+#define REG_NOTIFY_CHANGE_NAME 1
+#define REG_NOTIFY_CHANGE_ATTRIBUTES 2
+#define REG_NOTIFY_CHANGE_LAST_SET 4
+#define REG_NOTIFY_CHANGE_SECURITY 8
+
+#ifndef RC_INVOKED
+typedef ACCESS_MASK REGSAM;
+typedef struct value_entA {
+	LPSTR ve_valuename;
+	DWORD ve_valuelen;
+	DWORD ve_valueptr;
+	DWORD ve_type;
+} VALENTA,*PVALENTA;
+typedef struct value_entW {
+	LPWSTR ve_valuename;
+	DWORD ve_valuelen;
+	DWORD ve_valueptr;
+	DWORD ve_type;
+} VALENTW,*PVALENTW;
+WINADVAPI BOOL WINAPI AbortSystemShutdownA(LPCSTR);
+WINADVAPI BOOL WINAPI AbortSystemShutdownW(LPCWSTR);
+WINADVAPI BOOL WINAPI InitiateSystemShutdownA(LPSTR,LPSTR,DWORD,BOOL,BOOL);
+WINADVAPI BOOL WINAPI InitiateSystemShutdownW(LPWSTR,LPWSTR,DWORD,BOOL,BOOL);
+WINADVAPI LONG WINAPI RegCloseKey(HKEY);
+WINADVAPI LONG WINAPI RegConnectRegistryA(LPCSTR,HKEY,PHKEY);
+WINADVAPI LONG WINAPI RegConnectRegistryW(LPCWSTR,HKEY,PHKEY);
+WINADVAPI LONG WINAPI RegCreateKeyA(HKEY,LPCSTR,PHKEY);
+WINADVAPI LONG WINAPI RegCreateKeyExA(HKEY,LPCSTR,DWORD,LPSTR,DWORD,REGSAM,LPSECURITY_ATTRIBUTES,PHKEY,PDWORD);
+WINADVAPI LONG WINAPI RegCreateKeyExW(HKEY,LPCWSTR,DWORD,LPWSTR,DWORD,REGSAM,LPSECURITY_ATTRIBUTES,PHKEY,PDWORD);
+WINADVAPI LONG WINAPI RegCreateKeyW(HKEY,LPCWSTR,PHKEY);
+WINADVAPI LONG WINAPI RegDeleteKeyA(HKEY,LPCSTR);
+WINADVAPI LONG WINAPI RegDeleteKeyW(HKEY,LPCWSTR);
+#if (WINVER >= 0x0502)
+WINADVAPI LONG WINAPI RegDeleteKeyExA(HKEY,LPCSTR,REGSAM,DWORD);
+WINADVAPI LONG WINAPI RegDeleteKeyExW(HKEY,LPCWSTR,REGSAM,DWORD);
+#endif
+WINADVAPI LONG WINAPI RegDeleteValueA(HKEY,LPCSTR);
+WINADVAPI LONG WINAPI RegDeleteValueW(HKEY,LPCWSTR);
+WINADVAPI LONG WINAPI RegEnumKeyA(HKEY,DWORD,LPSTR,DWORD);
+WINADVAPI LONG WINAPI RegEnumKeyW(HKEY,DWORD,LPWSTR,DWORD);
+WINADVAPI LONG WINAPI RegEnumKeyExA(HKEY,DWORD,LPSTR,PDWORD,PDWORD,LPSTR,PDWORD,PFILETIME);
+WINADVAPI LONG WINAPI RegEnumKeyExW(HKEY,DWORD,LPWSTR,PDWORD,PDWORD,LPWSTR,PDWORD,PFILETIME);
+WINADVAPI LONG WINAPI RegEnumValueA(HKEY,DWORD,LPSTR,PDWORD,PDWORD,PDWORD,LPBYTE,PDWORD);
+WINADVAPI LONG WINAPI RegEnumValueW(HKEY,DWORD,LPWSTR,PDWORD,PDWORD,PDWORD,LPBYTE,PDWORD);
+WINADVAPI LONG WINAPI RegFlushKey(HKEY);
+WINADVAPI LONG WINAPI RegGetKeySecurity(HKEY,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR,PDWORD);
+WINADVAPI LONG WINAPI RegLoadKeyA(HKEY,LPCSTR,LPCSTR);
+WINADVAPI LONG WINAPI RegLoadKeyW(HKEY,LPCWSTR,LPCWSTR);
+WINADVAPI LONG WINAPI RegNotifyChangeKeyValue(HKEY,BOOL,DWORD,HANDLE,BOOL);
+WINADVAPI LONG WINAPI RegOpenKeyA(HKEY,LPCSTR,PHKEY);
+WINADVAPI LONG WINAPI RegOpenKeyExA(HKEY,LPCSTR,DWORD,REGSAM,PHKEY);
+WINADVAPI LONG WINAPI RegOpenKeyExW(HKEY,LPCWSTR,DWORD,REGSAM,PHKEY);
+WINADVAPI LONG WINAPI RegOpenKeyW(HKEY,LPCWSTR,PHKEY);
+WINADVAPI LONG WINAPI RegQueryInfoKeyA(HKEY,LPSTR,PDWORD,PDWORD,PDWORD,PDWORD,PDWORD,PDWORD,PDWORD,PDWORD,PDWORD,PFILETIME);
+WINADVAPI LONG WINAPI RegQueryInfoKeyW(HKEY,LPWSTR,PDWORD,PDWORD,PDWORD,PDWORD,PDWORD,PDWORD,PDWORD,PDWORD,PDWORD,PFILETIME);
+WINADVAPI LONG WINAPI RegQueryMultipleValuesA(HKEY,PVALENTA,DWORD,LPSTR,LPDWORD);
+WINADVAPI LONG WINAPI RegQueryMultipleValuesW(HKEY,PVALENTW,DWORD,LPWSTR,LPDWORD);
+WINADVAPI LONG WINAPI RegQueryValueA(HKEY,LPCSTR,LPSTR,PLONG);
+WINADVAPI LONG WINAPI RegQueryValueExA(HKEY,LPCSTR,LPDWORD,LPDWORD,LPBYTE,LPDWORD);
+WINADVAPI LONG WINAPI RegQueryValueExW(HKEY,LPCWSTR,LPDWORD,LPDWORD,LPBYTE,LPDWORD);
+WINADVAPI LONG WINAPI RegQueryValueW(HKEY,LPCWSTR,LPWSTR,PLONG);
+WINADVAPI LONG WINAPI RegReplaceKeyA(HKEY,LPCSTR,LPCSTR,LPCSTR);
+WINADVAPI LONG WINAPI RegReplaceKeyW(HKEY,LPCWSTR,LPCWSTR,LPCWSTR);
+WINADVAPI LONG WINAPI RegRestoreKeyA(HKEY,LPCSTR,DWORD);
+WINADVAPI LONG WINAPI RegRestoreKeyW(HKEY,LPCWSTR,DWORD);
+WINADVAPI LONG WINAPI RegSaveKeyA(HKEY,LPCSTR,LPSECURITY_ATTRIBUTES);
+WINADVAPI LONG WINAPI RegSaveKeyW(HKEY,LPCWSTR,LPSECURITY_ATTRIBUTES);
+WINADVAPI LONG WINAPI RegSetKeySecurity(HKEY,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR);
+WINADVAPI LONG WINAPI RegSetValueA(HKEY,LPCSTR,DWORD,LPCSTR,DWORD);
+WINADVAPI LONG WINAPI RegSetValueExA(HKEY,LPCSTR,DWORD,DWORD,const BYTE*,DWORD);
+WINADVAPI LONG WINAPI RegSetValueExW(HKEY,LPCWSTR,DWORD,DWORD,const BYTE*,DWORD);
+WINADVAPI LONG WINAPI RegSetValueW(HKEY,LPCWSTR,DWORD,LPCWSTR,DWORD);
+WINADVAPI LONG WINAPI RegUnLoadKeyA(HKEY,LPCSTR);
+WINADVAPI LONG WINAPI RegUnLoadKeyW(HKEY,LPCWSTR);
+
+#ifdef UNICODE
+typedef VALENTW VALENT,*PVALENT;
+#define AbortSystemShutdown AbortSystemShutdownW
+#define InitiateSystemShutdown InitiateSystemShutdownW
+#define RegConnectRegistry RegConnectRegistryW
+#define RegCreateKey RegCreateKeyW
+#define RegCreateKeyEx RegCreateKeyExW
+#define RegDeleteKey RegDeleteKeyW
+#if (WINVER >= 0x0502)
+#define RegDeleteKeyEx RegDeleteKeyExW
+#endif
+#define RegDeleteValue RegDeleteValueW
+#define RegEnumKey RegEnumKeyW
+#define RegEnumKeyEx RegEnumKeyExW
+#define RegEnumValue RegEnumValueW
+#define RegLoadKey RegLoadKeyW
+#define RegOpenKey RegOpenKeyW
+#define RegOpenKeyEx RegOpenKeyExW
+#define RegQueryInfoKey RegQueryInfoKeyW
+#define RegQueryMultipleValues RegQueryMultipleValuesW
+#define RegQueryValue RegQueryValueW
+#define RegQueryValueEx RegQueryValueExW
+#define RegReplaceKey RegReplaceKeyW
+#define RegRestoreKey RegRestoreKeyW
+#define RegSaveKey RegSaveKeyW
+#define RegSetValue RegSetValueW
+#define RegSetValueEx RegSetValueExW
+#define RegUnLoadKey RegUnLoadKeyW
+#else
+typedef VALENTA VALENT,*PVALENT;
+#define AbortSystemShutdown AbortSystemShutdownA
+#define InitiateSystemShutdown InitiateSystemShutdownA
+#define RegConnectRegistry RegConnectRegistryA
+#define RegCreateKey RegCreateKeyA
+#define RegCreateKeyEx RegCreateKeyExA
+#define RegDeleteKey RegDeleteKeyA
+#if (WINVER >= 0x0502)
+#define RegDeleteKeyEx RegDeleteKeyExA
+#endif
+#define RegDeleteValue RegDeleteValueA
+#define RegEnumKey RegEnumKeyA
+#define RegEnumKeyEx RegEnumKeyExA
+#define RegEnumValue RegEnumValueA
+#define RegLoadKey RegLoadKeyA
+#define RegOpenKey RegOpenKeyA
+#define RegOpenKeyEx RegOpenKeyExA
+#define RegQueryInfoKey RegQueryInfoKeyA
+#define RegQueryMultipleValues RegQueryMultipleValuesA
+#define RegQueryValue RegQueryValueA
+#define RegQueryValueEx RegQueryValueExA
+#define RegReplaceKey RegReplaceKeyA
+#define RegRestoreKey RegRestoreKeyA
+#define RegSaveKey RegSaveKeyA
+#define RegSetValue RegSetValueA
+#define RegSetValueEx RegSetValueExA
+#define RegUnLoadKey RegUnLoadKeyA
+#endif
+#endif
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/winresrc.h
===================================================================
--- Daodan/MinGW/include/winresrc.h	(revision 1046)
+++ Daodan/MinGW/include/winresrc.h	(revision 1046)
@@ -0,0 +1,14 @@
+#ifndef _WINRESRC_H
+#define _WINRESRC_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#define WIN32_LEAN_AND_MEAN
+#include <winuser.h>
+#include <winnt.h>
+#include <winver.h>
+#include <dde.h>
+#include <dlgs.h>
+#include <commctrl.h>
+#endif
Index: Daodan/MinGW/include/winsnmp.h
===================================================================
--- Daodan/MinGW/include/winsnmp.h	(revision 1046)
+++ Daodan/MinGW/include/winsnmp.h	(revision 1046)
@@ -0,0 +1,329 @@
+/*
+  winsnmp.h - Header file for the Windows SNMP API
+
+  Written by Filip Navara <xnavara@volny.cz>
+
+  References (2003-08-25):
+    Windows SNMP
+    http://www.winsnmp.com/docs/winsnmp.doc
+
+    WinSNMP v2.0 Addendum
+    http://www.winsnmp.com/docs/winsnmp2.txt
+
+    WinSNMP v3.0 API Addendum
+    http://www.winsnmp.com/docs/winsnmp3.htm
+
+    WinSNMP Reference
+    http://msdn.microsoft.com/library/en-us/snmp/snmp/winsnmp_api_reference.asp
+
+  This library is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+*/
+
+#ifndef _WINSNMP_H
+#define _WINSNMP_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#ifndef _WINDOWS_H
+#include <windows.h>
+#endif
+
+#include <pshpack4.h>
+
+#ifndef WINSNMPAPI
+#define WINSNMPAPI WINAPI
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define MAXOBJIDSIZE	128
+#define MAXOBJIDSTRSIZE	1408
+#define MAXVENDORINFO	32
+#ifndef _SNMP_ASN_DEFINED
+#define _SNMP_ASN_DEFINED
+#define ASN_UNIVERSAL	0x00
+#define ASN_PRIMITIVE	0x00
+#define ASN_CONSTRUCTOR	0x20
+#define ASN_APPLICATION	0x40
+#define ASN_CONTEXT	0x80
+#define ASN_PRIVATE	0xC0
+#define SNMP_PDU_GET	(ASN_CONTEXT | ASN_CONSTRUCTOR | 0)
+#define SNMP_PDU_GETNEXT	(ASN_CONTEXT | ASN_CONSTRUCTOR | 1)
+#define SNMP_PDU_RESPONSE	(ASN_CONTEXT | ASN_CONSTRUCTOR | 2)
+#define SNMP_PDU_SET	(ASN_CONTEXT | ASN_CONSTRUCTOR | 3)
+#define SNMP_PDU_GETBULK	(ASN_CONTEXT | ASN_CONSTRUCTOR | 4)
+#define SNMP_PDU_V1TRAP	(ASN_CONTEXT | ASN_CONSTRUCTOR | 4)
+#define SNMP_PDU_INFORM	(ASN_CONTEXT | ASN_CONSTRUCTOR | 6)
+#define SNMP_PDU_TRAP	(ASN_CONTEXT | ASN_CONSTRUCTOR | 7)
+#define SNMP_PDU_REPORT	(ASN_CONTEXT | ASN_CONSTRUCTOR | 8)
+#endif /* _SNMP_ASN_DEFINED */
+#define SNMP_SYNTAX_SEQUENCE	(ASN_UNIVERSAL | ASN_CONSTRUCTOR | 0x10)
+#define SNMP_SYNTAX_INT	(ASN_UNIVERSAL | ASN_PRIMITIVE | 0x02)
+#define SNMP_SYNTAX_BITS	(ASN_UNIVERSAL | ASN_PRIMITIVE | 0x03)
+#define SNMP_SYNTAX_OCTETS	(ASN_UNIVERSAL | ASN_PRIMITIVE | 0x04)
+#define SNMP_SYNTAX_NULL	(ASN_UNIVERSAL | ASN_PRIMITIVE | 0x05)
+#define SNMP_SYNTAX_OID	(ASN_UNIVERSAL | ASN_PRIMITIVE | 0x06)
+#define SNMP_SYNTAX_IPADDR	(ASN_APPLICATION | ASN_PRIMITIVE | 0x00)
+#define SNMP_SYNTAX_CNTR32	(ASN_APPLICATION | ASN_PRIMITIVE | 0x01)
+#define SNMP_SYNTAX_GAUGE32	(ASN_APPLICATION | ASN_PRIMITIVE | 0x02)
+#define SNMP_SYNTAX_TIMETICKS	(ASN_APPLICATION | ASN_PRIMITIVE | 0x03)
+#define SNMP_SYNTAX_OPAQUE	(ASN_APPLICATION | ASN_PRIMITIVE | 0x04)
+#define SNMP_SYNTAX_NSAPADDR	(ASN_APPLICATION | ASN_PRIMITIVE | 0x05)
+#define SNMP_SYNTAX_CNTR64	(ASN_APPLICATION | ASN_PRIMITIVE | 0x06)
+#define SNMP_SYNTAX_UINT32	(ASN_APPLICATION | ASN_PRIMITIVE | 0x07)
+#define SNMP_SYNTAX_NOSUCHOBJECT	(ASN_CONTEXT | ASN_PRIMITIVE | 0x00)
+#define SNMP_SYNTAX_NOSUCHINSTANCE	(ASN_CONTEXT | ASN_PRIMITIVE | 0x01)
+#define SNMP_SYNTAX_ENDOFMIBVIEW	(ASN_CONTEXT | ASN_PRIMITIVE | 0x02)
+#define SNMP_SYNTAX_INT32	SNMP_SYNTAX_INT
+#define SNMP_TRAP_COLDSTART	0
+#define SNMP_TRAP_WARMSTART	1
+#define SNMP_TRAP_LINKDOWN	2
+#define SNMP_TRAP_LINKUP	3
+#define SNMP_TRAP_AUTHFAIL	4
+#define SNMP_TRAP_EGPNEIGHBORLOSS	5
+#define SNMP_TRAP_ENTERPRISESPECIFIC	6
+#define SNMP_ERROR_NOERROR	0
+#define SNMP_ERROR_TOOBIG	1
+#define SNMP_ERROR_NOSUCHNAME	2
+#define SNMP_ERROR_BADVALUE	3
+#define SNMP_ERROR_READONLY	4
+#define SNMP_ERROR_GENERR	5
+#define SNMP_ERROR_NOACCESS	6
+#define SNMP_ERROR_WRONGTYPE	7
+#define SNMP_ERROR_WRONGLENGTH	8
+#define SNMP_ERROR_WRONGENCODING	9
+#define SNMP_ERROR_WRONGVALUE	10
+#define SNMP_ERROR_NOCREATION	11
+#define SNMP_ERROR_INCONSISTENTVALUE	12
+#define SNMP_ERROR_RESOURCEUNAVAILABLE	13
+#define SNMP_ERROR_COMMITFAILED	14
+#define SNMP_ERROR_UNDOFAILED	15
+#define SNMP_ERROR_AUTHORIZATIONERROR	16
+#define SNMP_ERROR_NOTWRITABLE	17
+#define SNMP_ERROR_INCONSISTENTNAME	18
+#define SNMP_SEC_MODEL_V1	1
+#define SNMP_SEC_MODEL_V2	2
+#define SNMP_SEC_MODEL_USM	3
+#define SNMP_NOAUTH_NOPRIV	0
+#define SNMP_AUTH_NOPRIV	1
+#define SNMP_AUTH_PRIV	3
+#define SNMP_USM_NO_AUTH_PROTOCOL	1
+#define SNMP_USM_HMACMD5_AUTH_PROTOCOL	2
+#define SNMP_USM_HMACSHA_AUTH_PROTOCOL	3
+#define SNMP_USM_NO_PRIV_PROTOCOL	1
+#define SNMP_USM_DES_PRIV_PROTOCOL	2
+#define SNMPAPI_TRANSLATED	0
+#define SNMPAPI_UNTRANSLATED_V1	1
+#define SNMPAPI_UNTRANSLATED_V2	2
+#define SNMPAPI_UNTRANSLATED_V3	3
+#define SNMPAPI_OFF 0
+#define SNMPAPI_ON 1
+#define SNMPAPI_FAILURE 0
+#define SNMPAPI_SUCCESS 1
+#define SNMPAPI_NO_SUPPORT	0
+#define SNMPAPI_V1_SUPPORT	1
+#define SNMPAPI_V2_SUPPORT	2
+#define SNMPAPI_M2M_SUPPORT	3
+#define SNMPAPI_V3_SUPPORT	3
+#define SNMPAPI_ALLOC_ERROR	2
+#define SNMPAPI_CONTEXT_INVALID	3
+#define SNMPAPI_CONTEXT_UNKNOWN	4
+#define SNMPAPI_ENTITY_INVALID	5
+#define SNMPAPI_ENTITY_UNKNOWN	6
+#define SNMPAPI_INDEX_INVALID	7
+#define SNMPAPI_NOOP	8
+#define SNMPAPI_OID_INVALID	9
+#define SNMPAPI_OPERATION_INVALID	10
+#define SNMPAPI_OUTPUT_TRUNCATED	11
+#define SNMPAPI_PDU_INVALID	12
+#define SNMPAPI_SESSION_INVALID	13
+#define SNMPAPI_SYNTAX_INVALID	14
+#define SNMPAPI_VBL_INVALID	15
+#define SNMPAPI_MODE_INVALID	16
+#define SNMPAPI_SIZE_INVALID	17
+#define SNMPAPI_NOT_INITIALIZED	18
+#define SNMPAPI_MESSAGE_INVALID	19
+#define SNMPAPI_HWND_INVALID	20
+#define SNMPAPI_ENGINE_INVALID	30
+#define SNMPAPI_ENGINE_DISCOVERY_FAILED	31
+#define SNMPAPI_OTHER_ERROR	99
+#define SNMPAPI_TL_NOT_INITIALIZED	100
+#define SNMPAPI_TL_NOT_SUPPORTED	101
+#define SNMPAPI_TL_NOT_AVAILABLE	102
+#define SNMPAPI_TL_RESOURCE_ERROR	103
+#define SNMPAPI_TL_UNDELIVERABLE	104
+#define SNMPAPI_TL_SRC_INVALID	105
+#define SNMPAPI_TL_INVALID_PARAM	106
+#define SNMPAPI_TL_IN_USE	107
+#define SNMPAPI_TL_TIMEOUT	108
+#define SNMPAPI_TL_PDU_TOO_BIG	109
+#define SNMPAPI_TL_OTHER	199
+#define SNMPAPI_RPT_INVALIDMSG	200
+#define SNMPAPI_RPT_INASNPARSEERR	201
+#define SNMPAPI_RPT_UNKNOWNSECMODEL	202
+#define SNMPAPI_RPT_UNKNOWNENGINEID	203
+#define SNMPAPI_RPT_UNSUPPSECLEVEL	204
+#define SNMPAPI_RPT_UNKNOWNUSERNAME	205
+#define SNMPAPI_RPT_WRONGDIGEST	206
+#define SNMPAPI_RPT_NOTINTIMEWINDOW	207
+#define SNMPAPI_RPT_DECRYPTIONERROR	208
+#define SNMPAPI_RPT_OTHER	299
+
+#ifndef RC_INVOKED
+
+typedef HANDLE HSNMP_SESSION, *LPHSNMP_SESSION;
+typedef HANDLE HSNMP_CONTEXT, *LPHSNMP_CONTEXT;
+typedef HANDLE HSNMP_VBL, *LPHSNMP_VBL;
+typedef HANDLE HSNMP_PDU, *LPHSNMP_PDU;
+typedef HANDLE HSNMP_ENTITY, *LPHSNMP_ENTITY;
+typedef unsigned char smiBYTE, *smiLPBYTE;
+typedef signed int smiINT, *smiLPINT;
+typedef signed int smiINT32, *smiLPINT32;
+typedef unsigned int smiUINT32, *smiLPUINT32;
+typedef smiUINT32 smiCNTR32, *smiLPCNTR32;
+typedef smiUINT32 smiGAUGE32, *smiLPGAUGE32;
+typedef smiUINT32 smiTIMETICKS, *smiLPTIMETICKS;
+typedef smiUINT32 SNMPAPI_STATUS;
+typedef struct {
+	smiUINT32 len;
+	smiLPBYTE ptr;
+} smiOCTETS, *smiLPOCTETS, smiOPAQUE, *smiLPOPAQUE, smiBITS, *smiLPBITS, smiIPADDR, *smiLPIPADDR, smiNSAPADDR, *smiLPNSAPADDR;
+typedef const smiLPOCTETS smiLPCOCTETS;
+typedef struct {
+	smiUINT32 len;
+	smiLPUINT32 ptr;
+} smiOID, *smiLPOID;
+typedef const smiLPOID smiLPCOID;
+typedef struct {
+	smiUINT32 hipart;
+	smiUINT32 lopart;
+} smiCNTR64, *smiLPCNTR64;
+typedef struct {
+	smiUINT32 syntax;
+	union {
+		smiINT sNumber;
+		smiUINT32 uNumber;
+		smiCNTR64 hNumber;
+		smiOCTETS string;
+		smiOID oid;
+		smiBYTE empty;
+	} value;
+} smiVALUE, *smiLPVALUE;
+typedef const smiLPVALUE smiLPCVALUE;
+typedef struct {
+	CHAR vendorName[MAXVENDORINFO*2];
+	CHAR vendorContact[MAXVENDORINFO*2];
+	CHAR vendorVersionId[MAXVENDORINFO];
+	CHAR vendorVersionDate[MAXVENDORINFO];
+	smiUINT32 vendorEnterprise;
+} smiVENDORINFO, FAR *smiLPVENDORINFO;
+typedef SNMPAPI_STATUS (CALLBACK *SNMPAPI_CALLBACK)(HSNMP_SESSION,HWND,UINT,WPARAM,LPARAM,LPVOID);
+typedef struct
+{
+	HSNMP_ENTITY hEntity;
+	HSNMP_SESSION hSession;
+	smiUINT32 nTranslateMode;
+	smiUINT32 nSnmpVersion;
+	smiOCTETS dFriendlyName;
+	smiUINT32 nAddressFamily;
+	smiOCTETS dAddressString;
+	smiUINT32 nRequestPort;
+	smiUINT32 nNotificationPort;
+	smiUINT32 nMaxMsgSize;
+	smiOCTETS dEngineID;
+	smiUINT32 nEngineBoots;
+	smiUINT32 nEngineTime;
+	smiUINT32 nEngineSeconds;
+	smiUINT32 nRetransmitMode;
+	smiTIMETICKS nPolicyTimeout;
+	smiUINT32 nPolicyRetry;
+	smiTIMETICKS nActualTimeout;
+	smiUINT32 nActualRetry;
+} smiENTITYINFO, *smiLPENTITYINFO;
+typedef struct
+{
+	HSNMP_CONTEXT hContext;
+	HSNMP_SESSION hSession;
+	smiUINT32 nTranslateMode;
+	smiUINT32 nSnmpVersion;
+	smiOCTETS dFriendlyName;
+	smiOCTETS dContextEngineID;
+	smiOCTETS dContextName;
+	smiOCTETS dSecurityName;
+	smiUINT32 nSecurityModel;
+	smiUINT32 nSecurityLevel;
+	smiUINT32 nSecurityAuthProtocol;
+	smiOCTETS dSecurityAuthKey;
+	smiUINT32 nSecurityPrivProtocol;
+	smiOCTETS dSecurityPrivKey;
+} smiCONTEXTINFO, *smiLPCONTEXTINFO;
+
+SNMPAPI_STATUS WINSNMPAPI SnmpCancelMsg(HSNMP_SESSION,smiINT32);
+SNMPAPI_STATUS WINSNMPAPI SnmpCleanup(VOID);
+SNMPAPI_STATUS WINSNMPAPI SnmpClose(HSNMP_SESSION);
+SNMPAPI_STATUS WINSNMPAPI SnmpContextToStr(HSNMP_CONTEXT,smiLPOCTETS);
+SNMPAPI_STATUS WINSNMPAPI SnmpCountVbl(HSNMP_VBL);
+HSNMP_PDU WINSNMPAPI SnmpCreatePdu(HSNMP_SESSION,smiINT,smiINT32,smiINT,smiINT,HSNMP_VBL);
+HSNMP_SESSION WINSNMPAPI SnmpCreateSession(HWND,UINT,SNMPAPI_CALLBACK,LPVOID);
+HSNMP_VBL WINSNMPAPI SnmpCreateVbl(HSNMP_SESSION,smiLPCOID,smiLPCVALUE);
+SNMPAPI_STATUS WINSNMPAPI SnmpDecodeMsg(HSNMP_SESSION,LPHSNMP_ENTITY,LPHSNMP_ENTITY,LPHSNMP_CONTEXT,LPHSNMP_PDU,smiLPCOCTETS);
+SNMPAPI_STATUS WINSNMPAPI SnmpDeleteVb(HSNMP_VBL,smiUINT32);
+HSNMP_PDU WINSNMPAPI SnmpDuplicatePdu(HSNMP_SESSION,HSNMP_PDU);
+HSNMP_VBL WINSNMPAPI SnmpDuplicateVbl(HSNMP_SESSION,HSNMP_VBL);
+SNMPAPI_STATUS WINSNMPAPI SnmpEncodeMsg(HSNMP_SESSION,HSNMP_ENTITY,HSNMP_ENTITY,HSNMP_CONTEXT,HSNMP_PDU,smiLPOCTETS);
+SNMPAPI_STATUS WINSNMPAPI SnmpEntityToStr(HSNMP_ENTITY,smiUINT32,LPSTR);
+SNMPAPI_STATUS WINSNMPAPI SnmpFreeContext(HSNMP_CONTEXT);
+SNMPAPI_STATUS WINSNMPAPI SnmpFreeDescriptor(smiUINT32,smiLPOPAQUE);
+SNMPAPI_STATUS WINSNMPAPI SnmpFreeEntity(HSNMP_ENTITY);
+SNMPAPI_STATUS WINSNMPAPI SnmpFreePdu(HSNMP_PDU);
+SNMPAPI_STATUS WINSNMPAPI SnmpFreeVbl(HSNMP_VBL);
+SNMPAPI_STATUS WINSNMPAPI SnmpGetLastError(HSNMP_SESSION);
+SNMPAPI_STATUS WINSNMPAPI SnmpGetPduData(HSNMP_PDU,smiLPINT,smiLPINT32,smiLPINT,smiLPINT,LPHSNMP_VBL);
+SNMPAPI_STATUS WINSNMPAPI SnmpGetRetransmitMode(smiLPUINT32);
+SNMPAPI_STATUS WINSNMPAPI SnmpGetRetry(HSNMP_ENTITY,smiLPUINT32,smiLPUINT32);
+SNMPAPI_STATUS WINSNMPAPI SnmpGetTimeout(HSNMP_ENTITY,smiLPTIMETICKS,smiLPTIMETICKS);
+SNMPAPI_STATUS WINSNMPAPI SnmpGetTranslateMode(smiLPUINT32);
+SNMPAPI_STATUS WINSNMPAPI SnmpGetVb(HSNMP_VBL,smiUINT32,smiLPOID,smiLPVALUE);
+SNMPAPI_STATUS WINSNMPAPI SnmpGetVendorInfo(smiLPVENDORINFO);
+SNMPAPI_STATUS WINSNMPAPI SnmpListen(HSNMP_ENTITY,SNMPAPI_STATUS);
+SNMPAPI_STATUS WINSNMPAPI SnmpOidCompare(smiLPCOID,smiLPCOID,smiUINT32,smiLPINT);
+SNMPAPI_STATUS WINSNMPAPI SnmpOidCopy(smiLPCOID,smiLPOID);
+SNMPAPI_STATUS WINSNMPAPI SnmpOidToStr(smiLPCOID,smiUINT32,LPSTR);
+HSNMP_SESSION WINSNMPAPI SnmpOpen(HWND,UINT);
+SNMPAPI_STATUS WINSNMPAPI SnmpRecvMsg(HSNMP_SESSION,LPHSNMP_ENTITY,LPHSNMP_ENTITY,LPHSNMP_CONTEXT,LPHSNMP_PDU);
+SNMPAPI_STATUS WINSNMPAPI SnmpRegister(HSNMP_SESSION,HSNMP_ENTITY,HSNMP_ENTITY,HSNMP_CONTEXT,smiLPCOID,smiUINT32);
+SNMPAPI_STATUS WINSNMPAPI SnmpSendMsg(HSNMP_SESSION,HSNMP_ENTITY,HSNMP_ENTITY,HSNMP_CONTEXT,HSNMP_PDU);
+SNMPAPI_STATUS WINSNMPAPI SnmpSetPduData(HSNMP_PDU,const smiINT *,const smiINT32 *,const smiINT *,const smiINT *,const HSNMP_VBL *);
+SNMPAPI_STATUS WINSNMPAPI SnmpSetPort(HSNMP_ENTITY,UINT);
+SNMPAPI_STATUS WINSNMPAPI SnmpSetRetransmitMode(smiUINT32);
+SNMPAPI_STATUS WINSNMPAPI SnmpSetRetry(HSNMP_ENTITY,smiUINT32);
+SNMPAPI_STATUS WINSNMPAPI SnmpSetTimeout(HSNMP_ENTITY,smiTIMETICKS);
+SNMPAPI_STATUS WINSNMPAPI SnmpSetTranslateMode(smiUINT32);
+SNMPAPI_STATUS WINSNMPAPI SnmpSetVb(HSNMP_VBL,smiUINT32,smiLPCOID,smiLPCVALUE);
+SNMPAPI_STATUS WINSNMPAPI SnmpStartup(smiLPUINT32,smiLPUINT32,smiLPUINT32,smiLPUINT32,smiLPUINT32);
+HSNMP_CONTEXT WINSNMPAPI SnmpStrToContext(HSNMP_SESSION,smiLPCOCTETS);
+HSNMP_ENTITY WINSNMPAPI SnmpStrToEntity(HSNMP_SESSION,LPCSTR);
+SNMPAPI_STATUS WINSNMPAPI SnmpStrToOid(LPCSTR,smiLPOID);
+/* Added in WinSNMP v3.0, not present in some (all?) versions of MS wsnmp32.dll */
+HSNMP_ENTITY WINSNMPAPI SnmpCreateEntity(HSNMP_SESSION,smiLPENTITYINFO);
+SNMPAPI_STATUS WINSNMPAPI SnmpGetEntityInfo(HSNMP_ENTITY,smiLPENTITYINFO);
+SNMPAPI_STATUS WINSNMPAPI SnmpSetEntityInfo(HSNMP_ENTITY,smiLPENTITYINFO);
+SNMPAPI_STATUS WINSNMPAPI SnmpFreeEntityInfo(smiLPENTITYINFO);
+HSNMP_CONTEXT WINSNMPAPI SnmpCreateContext(HSNMP_SESSION,smiLPCONTEXTINFO);
+SNMPAPI_STATUS WINSNMPAPI SnmpGetContextInfo(HSNMP_CONTEXT,smiLPCONTEXTINFO);
+SNMPAPI_STATUS WINSNMPAPI SnmpSetContextInfo(HSNMP_CONTEXT,smiLPCONTEXTINFO);
+SNMPAPI_STATUS WINSNMPAPI SnmpFreeContextInfo(smiLPCONTEXTINFO);
+SNMPAPI_STATUS WINSNMPAPI SnmpPasswordToKey(smiLPOCTETS,smiINT32,smiLPOCTETS);
+
+#endif /* RC_INVOKED */
+
+#ifdef __cplusplus
+}
+#endif
+#include <poppack.h>
+#endif
Index: Daodan/MinGW/include/winsock.h
===================================================================
--- Daodan/MinGW/include/winsock.h	(revision 1046)
+++ Daodan/MinGW/include/winsock.h	(revision 1046)
@@ -0,0 +1,536 @@
+/*
+
+  Definitions for winsock 1.1
+
+  Portions Copyright (c) 1980, 1983, 1988, 1993
+  The Regents of the University of California.  All rights reserved.
+
+  Portions Copyright (c) 1993 by Digital Equipment Corporation.
+ */
+
+#ifndef _WINSOCK_H
+#define _WINSOCK_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#define _GNU_H_WINDOWS32_SOCKETS
+
+#include <windows.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#if !defined ( _BSDTYPES_DEFINED )
+/* also defined in gmon.h and in cygwin's sys/types */
+typedef unsigned char	u_char;
+typedef unsigned short	u_short;
+typedef unsigned int	u_int;
+typedef unsigned long	u_long;
+#define _BSDTYPES_DEFINED
+#endif /* !defined  _BSDTYPES_DEFINED */
+typedef u_int	SOCKET;
+#ifndef FD_SETSIZE
+#define FD_SETSIZE	64
+#endif
+
+/* shutdown() how types */
+#define SD_RECEIVE      0x00
+#define SD_SEND         0x01
+#define SD_BOTH         0x02
+
+#ifndef _SYS_TYPES_FD_SET
+/* fd_set may have be defined by the newlib <sys/types.h>
+ * if  __USE_W32_SOCKETS not defined.
+ */
+#ifdef fd_set
+#undef fd_set
+#endif
+typedef struct fd_set {
+	u_int   fd_count;
+	SOCKET  fd_array[FD_SETSIZE];
+} fd_set;
+int PASCAL __WSAFDIsSet(SOCKET,fd_set*);
+#ifndef FD_CLR
+#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)
+#endif
+#ifndef FD_SET
+#define FD_SET(fd, set) do { \
+    if (((fd_set *)(set))->fd_count < FD_SETSIZE) \
+	((fd_set *)(set))->fd_array[((fd_set *)(set))->fd_count++]=(fd);\
+}while (0)
+#endif
+#ifndef FD_ZERO
+#define FD_ZERO(set) (((fd_set *)(set))->fd_count=0)
+#endif
+#ifndef FD_ISSET
+#define FD_ISSET(fd, set) __WSAFDIsSet((SOCKET)(fd), (fd_set *)(set))
+#endif
+#elif !defined(USE_SYS_TYPES_FD_SET)
+#warning "fd_set and associated macros have been defined in sys/types.  \
+    This can cause runtime problems with W32 sockets"
+#endif /* ndef _SYS_TYPES_FD_SET */
+
+#if !(defined (__INSIDE_CYGWIN__) || defined (__INSIDE_MSYS__))
+#ifndef _TIMEVAL_DEFINED /* also in sys/time.h */
+#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 != (uvp)->tv_sec) ? \
+	((tvp)->tv_sec cmp (uvp)->tv_sec) : \
+	((tvp)->tv_usec cmp (uvp)->tv_usec))
+#define timerclear(tvp)	 (tvp)->tv_sec = (tvp)->tv_usec = 0
+#endif /* _TIMEVAL_DEFINED */
+struct  hostent {
+	char	*h_name;
+	char	**h_aliases;
+	short	h_addrtype;
+	short	h_length;
+	char	**h_addr_list;
+#define h_addr h_addr_list[0]
+};
+struct linger {
+	u_short l_onoff;
+	u_short l_linger;
+};
+#endif /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */
+#define IOCPARM_MASK	0x7f
+#define IOC_VOID	0x20000000
+#define IOC_OUT	0x40000000
+#define IOC_IN	0x80000000
+#define IOC_INOUT	(IOC_IN|IOC_OUT)
+
+#if !(defined (__INSIDE_CYGWIN__) || defined (__INSIDE_MSYS__))
+#define _IO(x,y)	(IOC_VOID|((x)<<8)|(y))
+#define _IOR(x,y,t)	(IOC_OUT|(((long)sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|(y))
+#define _IOW(x,y,t)	(IOC_IN|(((long)sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|(y))
+#define FIONBIO	_IOW('f', 126, u_long)
+#endif /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */
+
+#define FIONREAD	_IOR('f', 127, 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)
+
+#if !(defined (__INSIDE_CYGWIN__) || defined (__INSIDE_MSYS__))
+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;
+};
+#endif /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */
+
+#define IPPROTO_IP	0
+#define IPPROTO_ICMP	1
+#define IPPROTO_IGMP 2
+#define IPPROTO_GGP 3
+#define IPPROTO_TCP	6
+#define IPPROTO_PUP	12
+#define IPPROTO_UDP	17
+#define IPPROTO_IDP	22
+#define IPPROTO_ND	77
+#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
+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;
+#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 IN_CLASSA(i)	(((long)(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)	(((long)(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)	(((long)(i)&0xe0000000)==0xc0000000)
+#define IN_CLASSC_NET	   0xffffff00
+#define IN_CLASSC_NSHIFT	8
+#define IN_CLASSC_HOST	  0xff
+#define INADDR_ANY	      (u_long)0
+#define INADDR_LOOPBACK	 0x7f000001
+#define INADDR_BROADCAST	(u_long)0xffffffff
+#define INADDR_NONE	0xffffffff
+struct sockaddr_in {
+	short	sin_family;
+	u_short	sin_port;
+	struct	in_addr sin_addr;
+	char	sin_zero[8];
+};
+#define WSADESCRIPTION_LEN	256
+#define WSASYS_STATUS_LEN	128
+typedef struct WSAData {
+	WORD	wVersion;
+	WORD	wHighVersion;
+	char	szDescription[WSADESCRIPTION_LEN+1];
+	char	szSystemStatus[WSASYS_STATUS_LEN+1];
+	unsigned short	iMaxSockets;
+	unsigned short	iMaxUdpDg;
+	char * 	lpVendorInfo;
+} WSADATA;
+typedef WSADATA *LPWSADATA;
+
+#ifndef __INSIDE_MSYS__
+#define IP_OPTIONS	1
+#define SO_DEBUG	1
+#define SO_ACCEPTCONN	2
+#define SO_REUSEADDR	4
+#define SO_KEEPALIVE	8
+#define SO_DONTROUTE	16
+#define SO_BROADCAST	32
+#define SO_USELOOPBACK	64
+#define SO_LINGER	128
+#define SO_OOBINLINE	256
+#define SO_DONTLINGER	(u_int)(~SO_LINGER)
+#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
+#endif /* !__INSIDE_MSYS__ */
+/*
+ * Note that the next 5 IP defines are specific to WinSock 1.1 (wsock32.dll).
+ * They will cause errors or unexpected results if used with the
+ * (gs)etsockopts exported from the WinSock 2 lib, ws2_32.dll. Refer ws2tcpip.h.
+ */
+#define IP_MULTICAST_IF	2
+#define IP_MULTICAST_TTL	3
+#define IP_MULTICAST_LOOP	4
+#define IP_ADD_MEMBERSHIP	5
+#define IP_DROP_MEMBERSHIP  6
+
+#define IP_DEFAULT_MULTICAST_TTL   1
+#define IP_DEFAULT_MULTICAST_LOOP  1
+#define IP_MAX_MEMBERSHIPS	 20
+struct ip_mreq {
+	struct in_addr imr_multiaddr;
+	struct in_addr imr_interface;
+};
+#define INVALID_SOCKET (SOCKET)(~0)
+#define SOCKET_ERROR	(-1)
+#define SOCK_STREAM	1
+#define SOCK_DGRAM	2
+#define SOCK_RAW	3
+#define SOCK_RDM	4
+#define SOCK_SEQPACKET	5
+#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_IPX	6
+#define AF_NS	6
+#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
+#if !(defined (__INSIDE_CYGWIN__) || defined (__INSIDE_MSYS__))
+#define AF_MAX	24
+struct sockaddr {
+	u_short sa_family;
+	char	sa_data[14];
+};
+#endif /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */
+
+struct sockproto {
+	u_short sp_family;
+	u_short sp_protocol;
+};
+#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_MAX	AF_MAX
+#define SOL_SOCKET	0xffff
+#define SOMAXCONN	5
+#if !(defined (__INSIDE_CYGWIN__) || defined (__INSIDE_MSYS__))
+#define MSG_OOB	1
+#define MSG_PEEK	2
+#define MSG_DONTROUTE	4
+#endif  /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */
+#define MSG_MAXIOVLEN	16
+#define MSG_PARTIAL	0x8000
+#define MAXGETHOSTSTRUCT	1024
+#define FD_READ	1
+#define FD_WRITE	2
+#define FD_OOB	4
+#define FD_ACCEPT	8
+#define FD_CONNECT	16
+#define FD_CLOSE	32
+#ifndef WSABASEERR
+#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 WSAEDISCON	(WSABASEERR+101)
+#define WSASYSNOTREADY	(WSABASEERR+91)
+#define WSAVERNOTSUPPORTED	(WSABASEERR+92)
+#define WSANOTINITIALISED	(WSABASEERR+93)
+#define WSAHOST_NOT_FOUND	(WSABASEERR+1001)
+#define WSATRY_AGAIN	(WSABASEERR+1002)
+#define WSANO_RECOVERY	(WSABASEERR+1003)
+#define WSANO_DATA	(WSABASEERR+1004)
+#endif /* !WSABASEERR */
+
+#define WSANO_ADDRESS	WSANO_DATA
+#if !(defined (__INSIDE_CYGWIN__) || defined (__INSIDE_MSYS__))
+#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 NO_ADDRESS	WSANO_ADDRESS
+#endif /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */
+SOCKET PASCAL accept(SOCKET,struct sockaddr*,int*);
+int PASCAL bind(SOCKET,const struct sockaddr*,int);
+int PASCAL closesocket(SOCKET);
+int PASCAL connect(SOCKET,const struct sockaddr*,int);
+int PASCAL ioctlsocket(SOCKET,long,u_long *);
+int PASCAL getpeername(SOCKET,struct sockaddr*,int*);
+int PASCAL getsockname(SOCKET,struct sockaddr*,int*);
+int PASCAL getsockopt(SOCKET,int,int,char*,int*);
+unsigned long PASCAL inet_addr(const char*);
+DECLARE_STDCALL_P(char *) inet_ntoa(struct in_addr);
+int PASCAL listen(SOCKET,int);
+int PASCAL recv(SOCKET,char*,int,int);
+int PASCAL recvfrom(SOCKET,char*,int,int,struct sockaddr*,int*);
+int PASCAL send(SOCKET,const char*,int,int);
+int PASCAL sendto(SOCKET,const char*,int,int,const struct sockaddr*,int);
+int PASCAL setsockopt(SOCKET,int,int,const char*,int);
+int PASCAL shutdown(SOCKET,int);
+SOCKET PASCAL socket(int,int,int);
+DECLARE_STDCALL_P(struct hostent *) gethostbyaddr(const char*,int,int);
+DECLARE_STDCALL_P(struct hostent *) gethostbyname(const char*);
+DECLARE_STDCALL_P(struct servent *) getservbyport(int,const char*);
+DECLARE_STDCALL_P(struct servent *) getservbyname(const char*,const char*);
+DECLARE_STDCALL_P(struct protoent *) getprotobynumber(int);
+DECLARE_STDCALL_P(struct protoent *) getprotobyname(const char*);
+int PASCAL WSAStartup(WORD,LPWSADATA);
+int PASCAL WSACleanup(void);
+void PASCAL WSASetLastError(int);
+int PASCAL WSAGetLastError(void);
+BOOL PASCAL WSAIsBlocking(void);
+int PASCAL WSAUnhookBlockingHook(void);
+FARPROC PASCAL WSASetBlockingHook(FARPROC);
+int PASCAL WSACancelBlockingCall(void);
+HANDLE PASCAL WSAAsyncGetServByName(HWND,u_int,const char*,const char*,char*,int);
+HANDLE PASCAL WSAAsyncGetServByPort(HWND,u_int,int,const char*,char*,int);
+HANDLE PASCAL WSAAsyncGetProtoByName(HWND,u_int,const char*,char*,int);
+HANDLE PASCAL WSAAsyncGetProtoByNumber(HWND,u_int,int,char*,int);
+HANDLE PASCAL WSAAsyncGetHostByName(HWND,u_int,const char*,char*,int);
+HANDLE PASCAL WSAAsyncGetHostByAddr(HWND,u_int,const char*,int,int,char*,int);
+int PASCAL WSACancelAsyncRequest(HANDLE);
+int PASCAL WSAAsyncSelect(SOCKET,HWND,u_int,long);
+#if !(defined (__INSIDE_CYGWIN__) || defined (__INSIDE_MSYS__))
+u_long PASCAL htonl(u_long);
+u_long PASCAL ntohl(u_long);
+u_short PASCAL htons(u_short);
+u_short PASCAL ntohs(u_short);
+int PASCAL select(int nfds,fd_set*,fd_set*,fd_set*,const struct timeval*);
+int PASCAL gethostname(char*,int);
+#endif /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */
+
+#define WSAMAKEASYNCREPLY(b,e)	MAKELONG(b,e)
+#define WSAMAKESELECTREPLY(e,error)	MAKELONG(e,error)
+#define WSAGETASYNCBUFLEN(l)	LOWORD(l)
+#define WSAGETASYNCERROR(l)	HIWORD(l)
+#define WSAGETSELECTEVENT(l)	LOWORD(l)
+#define WSAGETSELECTERROR(l)	HIWORD(l)
+
+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 in_addr IN_ADDR;
+typedef struct in_addr *PIN_ADDR;
+typedef struct in_addr *LPIN_ADDR;
+typedef struct fd_set FD_SET;
+typedef struct fd_set *PFD_SET;
+typedef struct fd_set *LPFD_SET;
+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 timeval TIMEVAL;
+typedef struct timeval *PTIMEVAL;
+typedef struct timeval *LPTIMEVAL;
+
+#ifdef __cplusplus
+}
+#endif
+/*
+ * Recent MSDN docs indicate that the MS-specific extensions exported from
+ * mswsock.dll (AcceptEx, TransmitFile. WSARecEx and GetAcceptExSockaddrs) are
+ * declared in mswsock.h. These extensions are not supported on W9x or WinCE.
+ * However, code using WinSock 1.1 API may expect the declarations and
+ * associated defines to be in this header. Thus we include mswsock.h here.
+ *
+ * When linking against the WinSock 1.1 lib, wsock32.dll, the mswsock functions
+ * are automatically routed to mswsock.dll (on platforms with support).
+ * The WinSock 2 lib, ws2_32.dll, does not contain any references to
+ * the mswsock extensions.
+ */
+
+#include <mswsock.h>
+
+#endif
Index: Daodan/MinGW/include/winsock2.h
===================================================================
--- Daodan/MinGW/include/winsock2.h	(revision 1046)
+++ Daodan/MinGW/include/winsock2.h	(revision 1046)
@@ -0,0 +1,1304 @@
+/*
+
+  Definitions for winsock 2
+
+  Contributed by the WINE project.
+
+  Portions Copyright (c) 1980, 1983, 1988, 1993
+  The Regents of the University of California.  All rights reserved.
+
+  Portions Copyright (c) 1993 by Digital Equipment Corporation.
+ */
+
+#if !(defined _WINSOCK2_H || defined _WINSOCK_H)
+#define _WINSOCK2_H
+#define _WINSOCK_H /* to prevent later inclusion of winsock.h */
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#define _GNU_H_WINDOWS32_SOCKETS
+
+#include <windows.h>
+
+#ifndef WINSOCK_API_LINKAGE
+#ifdef __W32API_USE_DLLIMPORT__
+#define WINSOCK_API_LINKAGE DECLSPEC_IMPORT
+#else
+#define WINSOCK_API_LINKAGE
+#endif
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+/*   Names common to Winsock1.1 and Winsock2  */
+#if !defined ( _BSDTYPES_DEFINED )
+/* also defined in gmon.h and in cygwin's sys/types */
+typedef unsigned char	u_char;
+typedef unsigned short	u_short;
+typedef unsigned int	u_int;
+typedef unsigned long	u_long;
+#define _BSDTYPES_DEFINED
+#endif /* ! def _BSDTYPES_DEFINED  */
+typedef u_int	SOCKET;
+#ifndef FD_SETSIZE
+#define FD_SETSIZE	64
+#endif
+
+/* shutdown() how types */
+#define SD_RECEIVE      0x00
+#define SD_SEND         0x01
+#define SD_BOTH         0x02
+
+#ifndef _SYS_TYPES_FD_SET
+/* fd_set may be defined by the newlib <sys/types.h>
+ * if __USE_W32_SOCKETS not defined.
+ */
+#ifdef fd_set
+#undef fd_set
+#endif
+typedef struct fd_set {
+	u_int   fd_count;
+	SOCKET  fd_array[FD_SETSIZE];
+} fd_set;
+int PASCAL __WSAFDIsSet(SOCKET,fd_set*);
+#ifndef FD_CLR
+#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)
+#endif
+#ifndef FD_SET
+/* this differs from the define in winsock.h and in cygwin sys/types.h */
+#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)
+#endif
+#ifndef FD_ZERO
+#define FD_ZERO(set) (((fd_set *)(set))->fd_count=0)
+#endif
+#ifndef FD_ISSET
+#define FD_ISSET(fd, set) __WSAFDIsSet((SOCKET)(fd), (fd_set *)(set))
+#endif
+#elif !defined (USE_SYS_TYPES_FD_SET)
+#warning "fd_set and associated macros have been defined in sys/types.  \
+    This may cause runtime problems with W32 sockets"
+#endif /* ndef _SYS_TYPES_FD_SET */
+#if !(defined (__INSIDE_CYGWIN__) || (__INSIDE_MSYS__))
+#ifndef _TIMEVAL_DEFINED /* also in sys/time.h */
+#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 != (uvp)->tv_sec) ? \
+	((tvp)->tv_sec cmp (uvp)->tv_sec) : \
+	((tvp)->tv_usec cmp (uvp)->tv_usec))
+#define timerclear(tvp)	 (tvp)->tv_sec = (tvp)->tv_usec = 0
+#endif /* _TIMEVAL_DEFINED */
+struct  hostent {
+	char	*h_name;
+	char	**h_aliases;
+	short	h_addrtype;
+	short	h_length;
+	char	**h_addr_list;
+#define h_addr h_addr_list[0]
+};
+struct linger {
+	u_short l_onoff;
+	u_short l_linger;
+};
+#endif /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */
+#define IOCPARM_MASK	0x7f
+#define IOC_VOID	0x20000000
+#define IOC_OUT	0x40000000
+#define IOC_IN	0x80000000
+#define IOC_INOUT	(IOC_IN|IOC_OUT)
+
+#if ! (defined (__INSIDE_CYGWIN__) || defined (__INSIDE_MSYS__))
+#define _IO(x,y)	(IOC_VOID|((x)<<8)|(y))
+#define _IOR(x,y,t)	(IOC_OUT|(((long)sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|(y))
+#define _IOW(x,y,t)	(IOC_IN|(((long)sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|(y))
+#define FIONBIO	_IOW('f', 126, u_long)
+#endif /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */
+
+#define FIONREAD	_IOR('f', 127, 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)
+
+#if ! (defined (__INSIDE_CYGWIN__) || defined (__INSIDE_MSYS__))
+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;
+};
+#endif /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */
+
+#define IPPROTO_IP	0
+#define IPPROTO_ICMP 1
+#define IPPROTO_IGMP 2
+#define IPPROTO_GGP 3
+#define IPPROTO_TCP	6
+#define IPPROTO_PUP	12
+#define IPPROTO_UDP	17
+#define IPPROTO_IDP	22
+#define IPPROTO_ND	77
+#define IPPROTO_RAW	255
+#define IPPROTO_MAX	256
+/* IPv6 options */
+#define IPPROTO_HOPOPTS		0  /* IPv6 Hop-by-Hop options */
+#define IPPROTO_IPV6		41 /* IPv6 header */
+#define IPPROTO_ROUTING		43 /* IPv6 Routing header */
+#define IPPROTO_FRAGMENT	44 /* IPv6 fragmentation header */
+#define IPPROTO_ESP		50 /* encapsulating security payload */
+#define IPPROTO_AH		51 /* authentication header */
+#define IPPROTO_ICMPV6		58 /* ICMPv6 */
+#define IPPROTO_NONE		59 /* IPv6 no next header */
+#define IPPROTO_DSTOPTS		60 /* IPv6 Destination options */
+#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
+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;
+#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 IN_CLASSA(i)	(((long)(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)	(((long)(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)	(((long)(i)&0xe0000000)==0xc0000000)
+#define IN_CLASSC_NET	   0xffffff00
+#define IN_CLASSC_NSHIFT	8
+#define IN_CLASSC_HOST	  0xff
+#define INADDR_ANY	      (u_long)0
+#define INADDR_LOOPBACK	 0x7f000001
+#define INADDR_BROADCAST	(u_long)0xffffffff
+#define INADDR_NONE	0xffffffff
+struct sockaddr_in {
+	short	sin_family;
+	u_short	sin_port;
+	struct	in_addr sin_addr;
+	char	sin_zero[8];
+};
+#define WSADESCRIPTION_LEN	256
+#define WSASYS_STATUS_LEN	128
+typedef struct WSAData {
+	WORD	wVersion;
+	WORD	wHighVersion;
+	char	szDescription[WSADESCRIPTION_LEN+1];
+	char	szSystemStatus[WSASYS_STATUS_LEN+1];
+	unsigned short	iMaxSockets;
+	unsigned short	iMaxUdpDg;
+	char * 	lpVendorInfo;
+} WSADATA;
+typedef WSADATA *LPWSADATA;
+
+#if ! (defined (__INSIDE_CYGWIN__) || defined (__INSIDE_MSYS__))
+#define IP_OPTIONS	1
+#define SO_DEBUG	1
+#define SO_ACCEPTCONN	2
+#define SO_REUSEADDR	4
+#define SO_KEEPALIVE	8
+#define SO_DONTROUTE	16
+#define SO_BROADCAST	32
+#define SO_USELOOPBACK	64
+#define SO_LINGER	128
+#define SO_OOBINLINE	256
+#define SO_DONTLINGER	(u_int)(~SO_LINGER)
+#define SO_EXCLUSIVEADDRUSE ((u_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
+#endif /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */
+
+#define INVALID_SOCKET (SOCKET)(~0)
+#define SOCKET_ERROR	(-1)
+#define SOCK_STREAM	1
+#define SOCK_DGRAM	2
+#define SOCK_RAW	3
+#define SOCK_RDM	4
+#define SOCK_SEQPACKET	5
+#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_IPX	6
+#define AF_NS	6
+#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
+#ifndef __INSIDE_MSYS__
+#define AF_MAX	29
+struct sockaddr {
+	u_short sa_family;
+	char	sa_data[14];
+};
+
+/* Portable IPv6/IPv4 version of sockaddr.  Based on RFC 2553.
+   Pad to force 8 byte alignment and maximum size of 128 bytes. */
+
+/*
+ * Desired design of maximum size and alignment
+ */
+#define _SS_MAXSIZE    128
+#define _SS_ALIGNSIZE  (sizeof (__int64))
+/*
+ * Definitions used for sockaddr_storage structure paddings design.
+ */
+#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[_SS_PAD1SIZE];  /* pad to 8 */
+    __int64 __ss_align;  	   /* force alignment */
+    char __ss_pad2[_SS_PAD2SIZE];  /*  pad to 128 */
+};
+#endif /* !__INSIDE_MSYS__ */
+
+struct sockproto {
+	u_short sp_family;
+	u_short sp_protocol;
+};
+#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_MAX	AF_MAX
+#define SOL_SOCKET	0xffff
+#if ! (defined (__INSIDE_CYGWIN__) || defined (__INSIDE_MSYS__))
+#define SOMAXCONN	0x7fffffff /* (5) in WinSock1.1 */
+#define MSG_OOB	1
+#define MSG_PEEK	2
+#define MSG_DONTROUTE	4
+#endif  /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */
+#define MSG_MAXIOVLEN	16
+#define MSG_PARTIAL	0x8000
+#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)
+/* winsock1.1 defines stop at FD_CLOSE (32) */
+#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)
+
+#ifndef WSABASEERR
+#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) /* deprecated on WinSock2 */
+#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 WSAEDISCON	(WSABASEERR+101)
+#define WSASYSNOTREADY	(WSABASEERR+91)
+#define WSAVERNOTSUPPORTED	(WSABASEERR+92)
+#define WSANOTINITIALISED	(WSABASEERR+93)
+#define WSAHOST_NOT_FOUND	(WSABASEERR+1001)
+#define WSATRY_AGAIN	(WSABASEERR+1002)
+#define WSANO_RECOVERY	(WSABASEERR+1003)
+#define WSANO_DATA	(WSABASEERR+1004)
+
+/* WinSock2 specific error codes */
+#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)
+
+/* WS QualityofService errors */
+#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_EUNKOWNPSOBJ	(WSABASEERR + 1024)
+#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)
+
+#endif /* !WSABASEERR */
+
+#define WSANO_ADDRESS	WSANO_DATA
+#if !(defined (__INSIDE_CYGWIN__) || defined (__INSIDE_MSYS__))
+#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 NO_ADDRESS	WSANO_ADDRESS
+#endif /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */
+WINSOCK_API_LINKAGE SOCKET PASCAL accept(SOCKET,struct sockaddr*,int*);
+WINSOCK_API_LINKAGE int PASCAL bind(SOCKET,const struct sockaddr*,int);
+WINSOCK_API_LINKAGE int PASCAL closesocket(SOCKET);
+WINSOCK_API_LINKAGE int PASCAL connect(SOCKET,const struct sockaddr*,int);
+WINSOCK_API_LINKAGE int PASCAL ioctlsocket(SOCKET,long,u_long *);
+WINSOCK_API_LINKAGE int PASCAL getpeername(SOCKET,struct sockaddr*,int*);
+WINSOCK_API_LINKAGE int PASCAL getsockname(SOCKET,struct sockaddr*,int*);
+WINSOCK_API_LINKAGE int PASCAL getsockopt(SOCKET,int,int,char*,int*);
+WINSOCK_API_LINKAGE unsigned long PASCAL inet_addr(const char*);
+WINSOCK_API_LINKAGE DECLARE_STDCALL_P(char *) inet_ntoa(struct in_addr);
+WINSOCK_API_LINKAGE int PASCAL listen(SOCKET,int);
+WINSOCK_API_LINKAGE int PASCAL recv(SOCKET,char*,int,int);
+WINSOCK_API_LINKAGE int PASCAL recvfrom(SOCKET,char*,int,int,struct sockaddr*,int*);
+WINSOCK_API_LINKAGE int PASCAL send(SOCKET,const char*,int,int);
+WINSOCK_API_LINKAGE int PASCAL sendto(SOCKET,const char*,int,int,const struct sockaddr*,int);
+WINSOCK_API_LINKAGE int PASCAL setsockopt(SOCKET,int,int,const char*,int);
+WINSOCK_API_LINKAGE int PASCAL shutdown(SOCKET,int);
+WINSOCK_API_LINKAGE SOCKET PASCAL socket(int,int,int);
+WINSOCK_API_LINKAGE DECLARE_STDCALL_P(struct hostent *) gethostbyaddr(const char*,int,int);
+WINSOCK_API_LINKAGE DECLARE_STDCALL_P(struct hostent *) gethostbyname(const char*);
+WINSOCK_API_LINKAGE DECLARE_STDCALL_P(struct servent *) getservbyport(int,const char*);
+WINSOCK_API_LINKAGE DECLARE_STDCALL_P(struct servent *) getservbyname(const char*,const char*);
+WINSOCK_API_LINKAGE DECLARE_STDCALL_P(struct protoent *) getprotobynumber(int);
+WINSOCK_API_LINKAGE DECLARE_STDCALL_P(struct protoent *) getprotobyname(const char*);
+typedef SOCKET (PASCAL * LPFN_ACCEPT)(SOCKET, struct sockaddr*,int *);
+typedef int (PASCAL * LPFN_BIND)(SOCKET, const struct sockaddr*,int);
+typedef int (PASCAL * LPFN_CLOSESOCKET)(SOCKET);
+typedef int (PASCAL * LPFN_CONNECT)(SOCKET, const struct sockaddr*,int);
+typedef int (PASCAL * LPFN_IOCTLSOCKET)(SOCKET, long, u_long*);
+typedef int	(PASCAL * LPFN_GETPEERNAME)(SOCKET, struct sockaddr*, int*);
+typedef int(PASCAL * LPFN_GETSOCKNAME)(SOCKET, struct sockaddr*, int*);
+typedef int(PASCAL * LPFN_GETSOCKOPT)(SOCKET, int, int, char*, int*);
+typedef u_long(PASCAL * LPFN_HTONL)(u_long);
+typedef u_short(PASCAL * LPFN_HTONS)(u_short);
+typedef unsigned long(PASCAL * LPFN_INET_ADDR)(const char*);
+typedef char*(PASCAL * LPFN_INET_NTOA)(struct in_addr);
+typedef int(PASCAL * LPFN_LISTEN)(SOCKET, int);
+typedef u_long(PASCAL * LPFN_NTOHL)(u_long);
+typedef u_short(PASCAL * LPFN_NTOHS)(u_short);
+typedef int(PASCAL * LPFN_RECV)(SOCKET, char*, int, int);
+typedef int(PASCAL * LPFN_RECVFROM)(SOCKET, char*, int, int, struct sockaddr*,  int*);
+typedef int(PASCAL * LPFN_SELECT)(int, fd_set*, fd_set*, fd_set*, const struct timeval*);
+typedef int(PASCAL * LPFN_SEND)(SOCKET, const char*, int, int);
+typedef int(PASCAL * LPFN_SENDTO)(SOCKET, const char*, int, int, const struct sockaddr*, int);
+typedef int(PASCAL * LPFN_SETSOCKOPT)(SOCKET, int, int, const char*, int);
+typedef int(PASCAL * LPFN_SHUTDOWN)(SOCKET, int);
+typedef SOCKET(PASCAL * LPFN_SOCKET)(int, int, int);
+typedef struct hostent*(PASCAL * LPFN_GETHOSTBYADDR)( const char*, int, int);
+typedef struct hostent*(PASCAL * LPFN_GETHOSTBYNAME)( const char*);
+typedef int(PASCAL * LPFN_GETHOSTNAME)(char*, int);
+typedef struct servent*(PASCAL * LPFN_GETSERVBYPORT)(int, const char*);
+typedef struct servent*(PASCAL * LPFN_GETSERVBYNAME)(const char*, const char*);
+typedef struct protoent*(PASCAL * LPFN_GETPROTOBYNUMBER)(int);
+typedef struct protoent*(PASCAL * LPFN_GETPROTOBYNAME)(const char*);
+
+WINSOCK_API_LINKAGE int PASCAL WSAStartup(WORD,LPWSADATA);
+WINSOCK_API_LINKAGE int PASCAL WSACleanup(void);
+WINSOCK_API_LINKAGE void PASCAL WSASetLastError(int);
+WINSOCK_API_LINKAGE int PASCAL WSAGetLastError(void);
+WINSOCK_API_LINKAGE typedef int(PASCAL * LPFN_WSASTARTUP)(WORD, LPWSADATA);
+typedef int(PASCAL * LPFN_WSACLEANUP)(void);
+typedef void(PASCAL * LPFN_WSASETLASTERROR)(int);
+typedef int(PASCAL * LPFN_WSAGETLASTERROR)(void);
+/*
+ * Pseudo-blocking functions are deprecated in WinSock2
+ * spec. Use threads instead.
+ */
+WINSOCK_API_LINKAGE BOOL PASCAL WSAIsBlocking(void);
+WINSOCK_API_LINKAGE int PASCAL WSAUnhookBlockingHook(void);
+WINSOCK_API_LINKAGE FARPROC PASCAL WSASetBlockingHook(FARPROC);
+WINSOCK_API_LINKAGE int PASCAL WSACancelBlockingCall(void);
+typedef BOOL(PASCAL * LPFN_WSAISBLOCKING)(void);
+typedef int(PASCAL * LPFN_WSAUNHOOKBLOCKINGHOOK)(void);
+typedef FARPROC (PASCAL * LPFN_WSASETBLOCKINGHOOK)(FARPROC);
+typedef int(PASCAL * LPFN_WSACANCELBLOCKINGCALL)(void);
+
+WINSOCK_API_LINKAGE HANDLE PASCAL WSAAsyncGetServByName(HWND,u_int,const char*,const char*,char*,int);
+WINSOCK_API_LINKAGE HANDLE PASCAL WSAAsyncGetServByPort(HWND,u_int,int,const char*,char*,int);
+WINSOCK_API_LINKAGE HANDLE PASCAL WSAAsyncGetProtoByName(HWND,u_int,const char*,char*,int);
+WINSOCK_API_LINKAGE HANDLE PASCAL WSAAsyncGetProtoByNumber(HWND,u_int,int,char*,int);
+WINSOCK_API_LINKAGE HANDLE PASCAL WSAAsyncGetHostByName(HWND,u_int,const char*,char*,int);
+WINSOCK_API_LINKAGE HANDLE PASCAL WSAAsyncGetHostByAddr(HWND,u_int,const char*,int,int,char*,int);
+WINSOCK_API_LINKAGE int PASCAL WSACancelAsyncRequest(HANDLE);
+WINSOCK_API_LINKAGE int PASCAL WSAAsyncSelect(SOCKET,HWND,u_int,long);
+typedef HANDLE(PASCAL * LPFN_WSAASYNCGETSERVBYNAME)(HWND, u_int, const char *, const char *, char *, int);
+typedef HANDLE(PASCAL * LPFN_WSAASYNCGETSERVBYPORT)(HWND, u_int, int, const char *, char *, int);
+typedef HANDLE(PASCAL * LPFN_WSAASYNCGETPROTOBYNAME)(HWND, u_int, const char*, char*, int);
+typedef HANDLE(PASCAL * LPFN_WSAASYNCGETPROTOBYNUMBER)(HWND, u_int, int, char*, int);
+typedef HANDLE(PASCAL * LPFN_WSAASYNCGETHOSTBYADDR)(HWND, u_int, const char*, int, int, char*, int);
+typedef int(PASCAL * LPFN_WSACANCELASYNCREQUEST)(HANDLE);
+typedef int(PASCAL * LPFN_WSAASYNCSELECT)(SOCKET, HWND, u_int, long);
+#if ! (defined (__INSIDE_CYGWIN__) || defined (__INSIDE_MSYS__))
+WINSOCK_API_LINKAGE u_long PASCAL htonl(u_long);
+WINSOCK_API_LINKAGE u_long PASCAL ntohl(u_long);
+WINSOCK_API_LINKAGE u_short PASCAL htons(u_short);
+WINSOCK_API_LINKAGE u_short PASCAL ntohs(u_short);
+WINSOCK_API_LINKAGE int PASCAL select(int nfds,fd_set*,fd_set*,fd_set*,const struct timeval*);
+#endif /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */
+
+int PASCAL gethostname(char*,int);
+
+#define WSAMAKEASYNCREPLY(b,e)	MAKELONG(b,e)
+#define WSAMAKESELECTREPLY(e,error)	MAKELONG(e,error)
+#define WSAGETASYNCBUFLEN(l)	LOWORD(l)
+#define WSAGETASYNCERROR(l)	HIWORD(l)
+#define WSAGETSELECTEVENT(l)	LOWORD(l)
+#define WSAGETSELECTERROR(l)	HIWORD(l)
+
+typedef struct sockaddr SOCKADDR;
+typedef struct sockaddr *PSOCKADDR;
+typedef struct sockaddr *LPSOCKADDR;
+typedef struct sockaddr_storage SOCKADDR_STORAGE, *PSOCKADDR_STORAGE;
+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 in_addr IN_ADDR;
+typedef struct in_addr *PIN_ADDR;
+typedef struct in_addr *LPIN_ADDR;
+typedef struct fd_set FD_SET;
+typedef struct fd_set *PFD_SET;
+typedef struct fd_set *LPFD_SET;
+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 timeval TIMEVAL;
+typedef struct timeval *PTIMEVAL;
+typedef struct timeval *LPTIMEVAL;
+
+/* winsock2 additions */
+#define ADDR_ANY	INADDR_ANY
+
+#define	IN_CLASSD(i)	(((long)(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	FROM_PROTOCOL_INFO	(-1)
+
+#define SO_DONTLINGER	(u_int)(~SO_LINGER)
+#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
+#ifdef UNICODE
+#define SO_PROTOCOL_INFO	SO_PROTOCOL_INFOW
+#else
+#define SO_PROTOCOL_INFO	SO_PROTOCOL_INFOA
+#endif
+#define PVD_CONFIG        0x3001
+
+#define	MSG_INTERRUPT	0x10
+#define	MSG_MAXIOVLEN	16
+
+#define	WSAAPI	WINAPI
+#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	((DWORD)-1L)
+#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 {
+	unsigned long len;
+	char *buf;
+} WSABUF, *LPWSABUF;
+
+typedef enum
+{
+	BestEffortService,
+	ControlledLoadService,
+	PredictiveService,
+	GuaranteedDelayService,
+	GuaranteedService
+} GUARANTEE;
+
+/* TODO: FLOWSPEC and related definitions belong in qos.h */
+
+/*
+   Windows Sockets 2 Application Programming Interface,
+   revision 2.2.2 (1997) uses the type uint32 for SERVICETYPE
+   and the elements of _flowspec, but the type uint32 is not defined
+   or used anywhere else in the w32api. For now, just use
+   unsigned int, which is 32 bits on _WIN32 and _WIN64.
+*/
+
+typedef unsigned int	SERVICETYPE;
+typedef struct _flowspec
+{
+	unsigned int	TokenRate;
+	unsigned int	TokenBucketSize;
+	unsigned int	PeakBandwidth;
+	unsigned int	Latency;
+	unsigned int	DelayVariation;
+	SERVICETYPE	ServiceType;
+	unsigned int	MaxSduSize;
+	unsigned int	MinimumPolicedSize;
+   } FLOWSPEC, *PFLOWSPEC, *LPFLOWSPEC;
+
+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[FD_MAX_EVENTS];
+} WSANETWORKEVENTS, *LPWSANETWORKEVENTS;
+
+#define	MAX_PROTOCOL_CHAIN 7
+
+#define	BASE_PROTOCOL      1
+#define	LAYERED_PROTOCOL   0
+
+typedef enum _WSAESETSERVICEOP
+{
+	RNRSERVICE_REGISTER=0,
+	RNRSERVICE_DEREGISTER,
+	RNRSERVICE_DELETE
+} WSAESETSERVICEOP, *PWSAESETSERVICEOP, *LPWSAESETSERVICEOP;
+
+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;
+
+#ifndef __CSADDR_T_DEFINED /* also in nspapi.h */
+#define __CSADDR_T_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;
+#endif
+
+typedef struct _SOCKET_ADDRESS_LIST {
+    INT             iAddressCount;
+    SOCKET_ADDRESS  Address[1];
+} SOCKET_ADDRESS_LIST, * LPSOCKET_ADDRESS_LIST;
+
+#ifndef __BLOB_T_DEFINED /* also in wtypes.h and nspapi.h */
+#define __BLOB_T_DEFINED
+typedef struct _BLOB {
+	ULONG	cbSize;
+	BYTE	*pBlobData;
+} BLOB,*PBLOB,*LPBLOB;
+#endif
+
+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;
+
+#ifdef UNICODE
+typedef WSAQUERYSETW WSAQUERYSET;
+typedef PWSAQUERYSETW PWSAQUERYSET;
+typedef LPWSAQUERYSETW LPWSAQUERYSET;
+#else
+typedef WSAQUERYSETA WSAQUERYSET;
+typedef PWSAQUERYSETA PWSAQUERYSET;
+typedef LPWSAQUERYSETA LPWSAQUERYSET;
+#endif
+
+#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
+
+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;
+
+#ifdef UNICODE
+typedef WSANSCLASSINFOW WSANSCLASSINFO;
+typedef PWSANSCLASSINFOW PWSANSCLASSINFO;
+typedef LPWSANSCLASSINFOW LPWSANSCLASSINFO;
+#else
+typedef WSANSCLASSINFOA WSANSCLASSINFO;
+typedef PWSANSCLASSINFOA PWSANSCLASSINFO;
+typedef LPWSANSCLASSINFOA LPWSANSCLASSINFO;
+#endif
+
+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;
+
+#ifdef UNICODE
+typedef WSASERVICECLASSINFOW WSASERVICECLASSINFO;
+typedef PWSASERVICECLASSINFOW PWSASERVICECLASSINFO;
+typedef LPWSASERVICECLASSINFOW LPWSASERVICECLASSINFO;
+#else
+typedef WSASERVICECLASSINFOA WSASERVICECLASSINFO;
+typedef PWSASERVICECLASSINFOA PWSASERVICECLASSINFO;
+typedef LPWSASERVICECLASSINFOA LPWSASERVICECLASSINFO;
+#endif
+
+typedef struct _WSANAMESPACE_INFOA {
+	GUID	NSProviderId;
+	DWORD	dwNameSpace;
+	BOOL	fActive;
+	DWORD	dwVersion;
+	LPSTR	lpszIdentifier;
+} WSANAMESPACE_INFOA, *PWSANAMESPACE_INFOA, *LPWSANAMESPACE_INFOA;
+
+typedef struct _WSANAMESPACE_INFOW {
+	GUID	NSProviderId;
+	DWORD	dwNameSpace;
+	BOOL	fActive;
+	DWORD	dwVersion;
+	LPWSTR	lpszIdentifier;
+} WSANAMESPACE_INFOW, *PWSANAMESPACE_INFOW, *LPWSANAMESPACE_INFOW;
+
+#ifdef UNICODE
+typedef WSANAMESPACE_INFOW WSANAMESPACE_INFO;
+typedef PWSANAMESPACE_INFOW PWSANAMESPACE_INFO;
+typedef LPWSANAMESPACE_INFOW LPWSANAMESPACE_INFO;
+#else
+typedef WSANAMESPACE_INFOA WSANAMESPACE_INFO;
+typedef PWSANAMESPACE_INFOA PWSANAMESPACE_INFO;
+typedef LPWSANAMESPACE_INFOA LPWSANAMESPACE_INFO;
+#endif
+
+typedef struct _WSAPROTOCOLCHAIN {
+	int ChainLen;
+	DWORD ChainEntries[MAX_PROTOCOL_CHAIN];
+} 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[WSAPROTOCOL_LEN+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[WSAPROTOCOL_LEN+1];
+} WSAPROTOCOL_INFOW, * LPWSAPROTOCOL_INFOW;
+
+typedef int (CALLBACK *LPCONDITIONPROC)(LPWSABUF, LPWSABUF, LPQOS, LPQOS, LPWSABUF, LPWSABUF, GROUP *, DWORD);
+typedef void (WINAPI *LPWSAOVERLAPPED_COMPLETION_ROUTINE)(DWORD, DWORD, LPWSAOVERLAPPED, DWORD);
+
+
+#ifdef UNICODE
+typedef WSAPROTOCOL_INFOW WSAPROTOCOL_INFO;
+typedef LPWSAPROTOCOL_INFOW LPWSAPROTOCOL_INFO;
+#else
+typedef WSAPROTOCOL_INFOA WSAPROTOCOL_INFO;
+typedef LPWSAPROTOCOL_INFOA LPWSAPROTOCOL_INFO;
+#endif
+
+/* Needed for XP & .NET Server function WSANSPIoctl.  */
+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 PFL_MULTIPLE_PROTO_ENTRIES          0x00000001
+#define PFL_RECOMMENDED_PROTO_ENTRY         0x00000002
+#define PFL_HIDDEN                          0x00000004
+#define PFL_MATCHES_PROTOCOL_ZERO           0x00000008
+#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 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 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_NSP_NOTIFY_CHANGE         _WSAIOW(IOC_WS2,25)
+#define SIO_UDP_CONNRESET             _WSAIOW(IOC_VENDOR,12)
+
+#define TH_NETDEV	0x00000001
+#define TH_TAPI	0x00000002
+
+WINSOCK_API_LINKAGE SOCKET WINAPI WSAAccept(SOCKET, struct sockaddr *, LPINT, LPCONDITIONPROC, DWORD);
+WINSOCK_API_LINKAGE INT WINAPI WSAAddressToStringA(LPSOCKADDR, DWORD, LPWSAPROTOCOL_INFOA, LPSTR, LPDWORD);
+WINSOCK_API_LINKAGE INT WINAPI WSAAddressToStringW(LPSOCKADDR, DWORD, LPWSAPROTOCOL_INFOW, LPWSTR, LPDWORD);
+WINSOCK_API_LINKAGE BOOL WINAPI WSACloseEvent(WSAEVENT);
+WINSOCK_API_LINKAGE int WINAPI WSAConnect(SOCKET, const struct sockaddr *, int, LPWSABUF, LPWSABUF, LPQOS, LPQOS);
+WINSOCK_API_LINKAGE WSAEVENT WINAPI WSACreateEvent(void);
+WINSOCK_API_LINKAGE int WINAPI WSADuplicateSocketA(SOCKET, DWORD, LPWSAPROTOCOL_INFOA);
+WINSOCK_API_LINKAGE int WINAPI WSADuplicateSocketW(SOCKET, DWORD, LPWSAPROTOCOL_INFOW);
+WINSOCK_API_LINKAGE INT WINAPI WSAEnumNameSpaceProvidersA(LPDWORD, LPWSANAMESPACE_INFOA);
+WINSOCK_API_LINKAGE INT WINAPI WSAEnumNameSpaceProvidersW(LPDWORD, LPWSANAMESPACE_INFOW);
+WINSOCK_API_LINKAGE int WINAPI WSAEnumNetworkEvents(SOCKET, WSAEVENT, LPWSANETWORKEVENTS);
+WINSOCK_API_LINKAGE int WINAPI WSAEnumProtocolsA(LPINT, LPWSAPROTOCOL_INFOA, LPDWORD);
+WINSOCK_API_LINKAGE int WINAPI WSAEnumProtocolsW(LPINT, LPWSAPROTOCOL_INFOW, LPDWORD);
+WINSOCK_API_LINKAGE int WINAPI WSAEventSelect(SOCKET, WSAEVENT, long);
+WINSOCK_API_LINKAGE BOOL WINAPI WSAGetOverlappedResult(SOCKET, LPWSAOVERLAPPED, LPDWORD, BOOL, LPDWORD);
+WINSOCK_API_LINKAGE BOOL WINAPI WSAGetQOSByName(SOCKET, LPWSABUF, LPQOS);
+WINSOCK_API_LINKAGE INT WINAPI WSAGetServiceClassInfoA(LPGUID, LPGUID, LPDWORD, LPWSASERVICECLASSINFOA);
+WINSOCK_API_LINKAGE INT WINAPI WSAGetServiceClassInfoW(LPGUID, LPGUID, LPDWORD, LPWSASERVICECLASSINFOW);
+WINSOCK_API_LINKAGE INT WINAPI WSAGetServiceClassNameByClassIdA(LPGUID, LPSTR, LPDWORD);
+WINSOCK_API_LINKAGE INT WINAPI WSAGetServiceClassNameByClassIdW(LPGUID, LPWSTR, LPDWORD);
+WINSOCK_API_LINKAGE int WINAPI WSAHtonl(SOCKET, unsigned long, unsigned long *);
+WINSOCK_API_LINKAGE int WINAPI WSAHtons(SOCKET, unsigned short, unsigned short *);
+WINSOCK_API_LINKAGE INT WINAPI WSAInstallServiceClassA(LPWSASERVICECLASSINFOA);
+WINSOCK_API_LINKAGE INT WINAPI WSAInstallServiceClassW(LPWSASERVICECLASSINFOW);
+WINSOCK_API_LINKAGE int WINAPI WSAIoctl(SOCKET, DWORD, LPVOID, DWORD, LPVOID, DWORD, LPDWORD, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE);
+WINSOCK_API_LINKAGE SOCKET WINAPI WSAJoinLeaf(SOCKET, const struct sockaddr *, int, LPWSABUF, LPWSABUF, LPQOS, LPQOS, DWORD);
+WINSOCK_API_LINKAGE INT WINAPI WSALookupServiceBeginA(LPWSAQUERYSETA, DWORD, LPHANDLE);
+WINSOCK_API_LINKAGE INT WINAPI WSALookupServiceBeginW(LPWSAQUERYSETW lpqsRestrictions, DWORD, LPHANDLE);
+WINSOCK_API_LINKAGE INT WINAPI WSALookupServiceNextA(HANDLE, DWORD, LPDWORD, LPWSAQUERYSETA);
+WINSOCK_API_LINKAGE INT WINAPI WSALookupServiceNextW(HANDLE, DWORD, LPDWORD, LPWSAQUERYSETW);
+WINSOCK_API_LINKAGE INT WINAPI WSALookupServiceEnd(HANDLE);
+WINSOCK_API_LINKAGE int WINAPI WSANSPIoctl(HANDLE,DWORD,LPVOID,DWORD,LPVOID,DWORD,LPDWORD,LPWSACOMPLETION); /* XP or .NET Server */
+WINSOCK_API_LINKAGE int WINAPI WSANtohl(SOCKET, unsigned long, unsigned long *);
+WINSOCK_API_LINKAGE int WINAPI WSANtohs(SOCKET, unsigned short, unsigned short *);
+WINSOCK_API_LINKAGE int WINAPI WSARecv(SOCKET, LPWSABUF, DWORD, LPDWORD, LPDWORD, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE);
+WINSOCK_API_LINKAGE int WINAPI WSARecvDisconnect(SOCKET, LPWSABUF);
+WINSOCK_API_LINKAGE int WINAPI WSARecvFrom(SOCKET, LPWSABUF, DWORD, LPDWORD, LPDWORD, struct sockaddr *, LPINT, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE);
+WINSOCK_API_LINKAGE INT WINAPI WSARemoveServiceClass(LPGUID);
+WINSOCK_API_LINKAGE BOOL WINAPI WSAResetEvent(WSAEVENT);
+WINSOCK_API_LINKAGE int WINAPI WSASend(SOCKET, LPWSABUF, DWORD, LPDWORD, DWORD, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE);
+WINSOCK_API_LINKAGE int WINAPI WSASendDisconnect(SOCKET, LPWSABUF);
+WINSOCK_API_LINKAGE int WINAPI WSASendTo(SOCKET, LPWSABUF, DWORD, LPDWORD, DWORD, const struct sockaddr *, int, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE);
+WINSOCK_API_LINKAGE BOOL WINAPI WSASetEvent(WSAEVENT);
+WINSOCK_API_LINKAGE INT WSAAPI WSASetServiceA(LPWSAQUERYSETA, WSAESETSERVICEOP, DWORD);
+WINSOCK_API_LINKAGE INT WINAPI WSASetServiceW(LPWSAQUERYSETW, WSAESETSERVICEOP, DWORD);
+WINSOCK_API_LINKAGE SOCKET WINAPI WSASocketA(int, int, int, LPWSAPROTOCOL_INFOA, GROUP, DWORD);
+WINSOCK_API_LINKAGE SOCKET WINAPI WSASocketW(int, int, int, LPWSAPROTOCOL_INFOW, GROUP, DWORD);
+WINSOCK_API_LINKAGE INT WINAPI WSAStringToAddressA(LPSTR, INT, LPWSAPROTOCOL_INFOA, LPSOCKADDR, LPINT);
+WINSOCK_API_LINKAGE INT WINAPI WSAStringToAddressW(LPWSTR, INT, LPWSAPROTOCOL_INFOW, LPSOCKADDR, LPINT);
+WINSOCK_API_LINKAGE DWORD WINAPI WSAWaitForMultipleEvents(DWORD, const WSAEVENT *, BOOL, DWORD, BOOL);
+
+typedef SOCKET (WINAPI *LPFN_WSAACCEPT)(SOCKET, struct sockaddr *, LPINT, LPCONDITIONPROC, DWORD);
+typedef INT (WINAPI *LPFN_WSAADDRESSTOSTRINGA)(LPSOCKADDR, DWORD, LPWSAPROTOCOL_INFOA, LPSTR, LPDWORD);
+typedef INT (WINAPI *LPFN_WSAADDRESSTOSTRINGW)(LPSOCKADDR, DWORD, LPWSAPROTOCOL_INFOW, LPWSTR, LPDWORD);
+typedef BOOL (WINAPI *LPFN_WSACLOSEEVENT)(WSAEVENT);
+typedef int (WINAPI *LPFN_WSACONNECT)(SOCKET, const struct sockaddr *, int, LPWSABUF, LPWSABUF, LPQOS, LPQOS);
+typedef WSAEVENT (WINAPI *LPFN_WSACREATEEVENT)(void);
+typedef int (WINAPI *LPFN_WSADUPLICATESOCKETA)(SOCKET, DWORD, LPWSAPROTOCOL_INFOA);
+typedef int (WINAPI *LPFN_WSADUPLICATESOCKETW)(SOCKET, DWORD, LPWSAPROTOCOL_INFOW);
+typedef INT (WINAPI *LPFN_WSAENUMNAMESPACEPROVIDERSA)(LPDWORD, LPWSANAMESPACE_INFOA);
+typedef INT (WINAPI *LPFN_WSAENUMNAMESPACEPROVIDERSW)(LPDWORD, LPWSANAMESPACE_INFOW);
+typedef int (WINAPI *LPFN_WSAENUMNETWORKEVENTS)(SOCKET, WSAEVENT, LPWSANETWORKEVENTS);
+typedef int (WINAPI *LPFN_WSAENUMPROTOCOLSA)(LPINT, LPWSAPROTOCOL_INFOA, LPDWORD);
+typedef int (WINAPI *LPFN_WSAENUMPROTOCOLSW)(LPINT, LPWSAPROTOCOL_INFOW, LPDWORD);
+typedef int (WINAPI *LPFN_WSAEVENTSELECT)(SOCKET, WSAEVENT, long);
+typedef BOOL (WINAPI *LPFN_WSAGETOVERLAPPEDRESULT)(SOCKET, LPWSAOVERLAPPED, LPDWORD, BOOL, LPDWORD);
+typedef BOOL (WINAPI *LPFN_WSAGETQOSBYNAME)(SOCKET, LPWSABUF, LPQOS);
+typedef INT (WINAPI *LPFN_WSAGETSERVICECLASSINFOA)(LPGUID, LPGUID, LPDWORD, LPWSASERVICECLASSINFOA);
+typedef INT (WINAPI *LPFN_WSAGETSERVICECLASSINFOW)(LPGUID, LPGUID, LPDWORD, LPWSASERVICECLASSINFOW);
+typedef INT (WINAPI *LPFN_WSAGETSERVICECLASSNAMEBYCLASSIDA)(LPGUID, LPSTR, LPDWORD);
+typedef INT (WINAPI *LPFN_WSAGETSERVICECLASSNAMEBYCLASSIDW)(LPGUID, LPWSTR, LPDWORD);
+typedef int (WINAPI *LPFN_WSAHTONL)(SOCKET, unsigned long, unsigned long *);
+typedef int (WINAPI *LPFN_WSAHTONS)(SOCKET, unsigned short, unsigned short *);
+typedef INT (WINAPI *LPFN_WSAINSTALLSERVICECLASSA)(LPWSASERVICECLASSINFOA);
+typedef INT (WINAPI *LPFN_WSAINSTALLSERVICECLASSW)(LPWSASERVICECLASSINFOW);
+typedef int (WINAPI *LPFN_WSAIOCTL)(SOCKET, DWORD, LPVOID, DWORD, LPVOID, DWORD, LPDWORD, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE);
+typedef SOCKET (WINAPI *LPFN_WSAJOINLEAF)(SOCKET, const struct sockaddr *, int, LPWSABUF, LPWSABUF, LPQOS, LPQOS, DWORD);
+typedef INT (WINAPI *LPFN_WSALOOKUPSERVICEBEGINA)(LPWSAQUERYSETA, DWORD, LPHANDLE);
+typedef INT (WINAPI *LPFN_WSALOOKUPSERVICEBEGINW)(LPWSAQUERYSETW, DWORD, LPHANDLE);
+typedef INT (WINAPI *LPFN_WSALOOKUPSERVICENEXTA)(HANDLE, DWORD, LPDWORD, LPWSAQUERYSETA);
+typedef INT (WINAPI *LPFN_WSALOOKUPSERVICENEXTW)(HANDLE, DWORD, LPDWORD, LPWSAQUERYSETW);
+typedef INT (WINAPI *LPFN_WSALOOKUPSERVICEEND)(HANDLE);
+typedef int (WINAPI *LPFN_WSANSPIoctl)(HANDLE, DWORD,LPVOID,DWORD,LPVOID,DWORD,LPDWORD,LPWSACOMPLETION);
+typedef int (WINAPI *LPFN_WSANTOHL)(SOCKET, unsigned long, unsigned long *);
+typedef int (WINAPI *LPFN_WSANTOHS)(SOCKET, unsigned short, unsigned short *);
+typedef int (WINAPI *LPFN_WSARECV)(SOCKET, LPWSABUF, DWORD, LPDWORD, LPDWORD, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE);
+typedef int (WINAPI *LPFN_WSARECVDISCONNECT)(SOCKET, LPWSABUF);
+typedef int (WINAPI *LPFN_WSARECVFROM)(SOCKET, LPWSABUF, DWORD, LPDWORD, LPDWORD, struct sockaddr *, LPINT, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE);
+typedef INT (WINAPI *LPFN_WSAREMOVESERVICECLASS)(LPGUID);
+typedef BOOL (WINAPI *LPFN_WSARESETEVENT)(WSAEVENT);
+typedef int (WINAPI *LPFN_WSASEND)(SOCKET, LPWSABUF, DWORD, LPDWORD, DWORD, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE);
+typedef int (WINAPI *LPFN_WSASENDDISCONNECT)(SOCKET, LPWSABUF);
+typedef int (WINAPI *LPFN_WSASENDTO)(SOCKET, LPWSABUF, DWORD, LPDWORD, DWORD, const struct sockaddr *, int, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE);
+typedef BOOL (WINAPI *LPFN_WSASETEVENT)(WSAEVENT);
+typedef INT (WINAPI *LPFN_WSASETSERVICEA)(LPWSAQUERYSETA, WSAESETSERVICEOP, DWORD);
+typedef INT (WINAPI *LPFN_WSASETSERVICEW)(LPWSAQUERYSETW, WSAESETSERVICEOP, DWORD);
+typedef SOCKET (WINAPI *LPFN_WSASOCKETA)(int, int, int, LPWSAPROTOCOL_INFOA, GROUP, DWORD);
+typedef SOCKET (WINAPI *LPFN_WSASOCKETW)(int, int, int, LPWSAPROTOCOL_INFOW, GROUP, DWORD);
+typedef INT (WINAPI *LPFN_WSASTRINGTOADDRESSA)(LPSTR, INT, LPWSAPROTOCOL_INFOA, LPSOCKADDR, LPINT);
+typedef INT (WINAPI *LPFN_WSASTRINGTOADDRESSW)(LPWSTR, INT, LPWSAPROTOCOL_INFOW, LPSOCKADDR, LPINT);
+typedef DWORD (WINAPI *LPFN_WSAWAITFORMULTIPLEEVENTS)(DWORD, const WSAEVENT *, BOOL, DWORD, BOOL);
+
+#ifdef UNICODE
+#define LPFN_WSAADDRESSTOSTRING LPFN_WSAADDRESSTOSTRINGW
+#define LPFN_WSADUPLICATESOCKET LPFN_WSADUPLICATESOCKETW
+#define LPFN_WSAENUMNAMESPACEPROVIDERS LPFN_WSAENUMNAMESPACEPROVIDERSW
+#define LPFN_WSAENUMPROTOCOLS LPFN_WSAENUMPROTOCOLSW
+#define LPFN_WSAGETSERVICECLASSINFO LPFN_WSAGETSERVICECLASSINFOW
+#define LPFN_WSAGETSERVICECLASSNAMEBYCLASSID LPFN_WSAGETSERVICECLASSNAMEBYCLASSIDW
+#define LPFN_WSAINSTALLSERVICECLASS LPFN_WSAINSTALLSERVICECLASSW
+#define LPFN_WSALOOKUPSERVICEBEGIN LPFN_WSALOOKUPSERVICEBEGINW
+#define LPFN_WSALOOKUPSERVICENEXT LPFN_WSALOOKUPSERVICENEXTW
+#define LPFN_WSASETSERVICE  LPFN_WSASETSERVICEW
+#define LPFN_WSASOCKET LPFN_WSASOCKETW
+#define LPFN_WSASTRINGTOADDRESS LPFN_WSASTRINGTOADDRESSW
+#define WSAAddressToString WSAAddressToStringW
+#define WSADuplicateSocket WSADuplicateSocketW
+#define WSAEnumNameSpaceProviders WSAEnumNameSpaceProvidersW
+#define WSAEnumProtocols WSAEnumProtocolsW
+#define WSAGetServiceClassInfo WSAGetServiceClassInfoW
+#define WSAGetServiceClassNameByClassId WSAGetServiceClassNameByClassIdW
+#define WSASetService WSASetServiceW
+#define WSASocket WSASocketW
+#define WSAStringToAddress WSAStringToAddressW
+#define WSALookupServiceBegin WSALookupServiceBeginW
+#define WSALookupServiceNext WSALookupServiceNextW
+#define WSAInstallServiceClass WSAInstallServiceClassW
+#else
+#define LPFN_WSAADDRESSTOSTRING LPFN_WSAADDRESSTOSTRINGA
+#define LPFN_WSADUPLICATESOCKET LPFN_WSADUPLICATESOCKETW
+#define LPFN_WSAENUMNAMESPACEPROVIDERS LPFN_WSAENUMNAMESPACEPROVIDERSA
+#define LPFN_WSAENUMPROTOCOLS LPFN_WSAENUMPROTOCOLSA
+#define LPFN_WSAGETSERVICECLASSINFO LPFN_WSAGETSERVICECLASSINFOA
+#define LPFN_WSAGETSERVICECLASSNAMEBYCLASSID LPFN_WSAGETSERVICECLASSNAMEBYCLASSIDA
+#define LPFN_WSAINSTALLSERVICECLASS LPFN_WSAINSTALLSERVICECLASSA
+#define LPFN_WSALOOKUPSERVICEBEGIN LPFN_WSALOOKUPSERVICEBEGINA
+#define LPFN_WSALOOKUPSERVICENEXT LPFN_WSALOOKUPSERVICENEXTA
+#define LPFN_WSASETSERVICE  LPFN_WSASETSERVICEA
+#define LPFN_WSASOCKET LPFN_WSASOCKETA
+#define LPFN_WSASTRINGTOADDRESS LPFN_WSASTRINGTOADDRESSA
+#define WSAAddressToString WSAAddressToStringA
+#define WSADuplicateSocket WSADuplicateSocketA
+#define WSAEnumNameSpaceProviders WSAEnumNameSpaceProvidersA
+#define WSAEnumProtocols WSAEnumProtocolsA
+#define WSAGetServiceClassInfo WSAGetServiceClassInfoA
+#define WSAGetServiceClassNameByClassId WSAGetServiceClassNameByClassIdA
+#define WSAInstallServiceClass WSAInstallServiceClassA
+#define WSALookupServiceBegin WSALookupServiceBeginA
+#define WSALookupServiceNext WSALookupServiceNextA
+#define WSASocket WSASocketA
+#define WSAStringToAddress WSAStringToAddressA
+#define WSASetService WSASetServiceA
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/winspool.h
===================================================================
--- Daodan/MinGW/include/winspool.h	(revision 1046)
+++ Daodan/MinGW/include/winspool.h	(revision 1046)
@@ -0,0 +1,982 @@
+#ifndef _WINSPOOL_H
+#define _WINSPOOL_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define DI_CHANNEL 1
+#define DI_CHANNEL_WRITE 2
+#define DI_READ_SPOOL_JOB 3
+#define	DI_MEMORYMAP_WRITE	0x1
+#define	FORM_USER	0x0
+#define	FORM_BUILTIN	0x1
+#define	FORM_PRINTER	0x2
+#if (_WIN32_WINNT >= 0x0500)
+#define DRIVER_KERNELMODE	0x00000001
+#define DRIVER_USERMODE		0x00000002
+#define	DSPRINT_PUBLISH		0x00000001
+#define	DSPRINT_UPDATE		0x00000002
+#define	DSPRINT_UNPUBLISH	0x00000004
+#define	DSPRINT_REPUBLISH	0x00000008
+#define	DSPRINT_PENDING		0x80000000
+#endif
+#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		0x1
+#define	JOB_STATUS_ERROR		0x2
+#define	JOB_STATUS_DELETING		0x4
+#define	JOB_STATUS_SPOOLING		0x8
+#define	JOB_STATUS_PRINTING		0x10
+#define	JOB_STATUS_OFFLINE		0x20
+#define	JOB_STATUS_PAPEROUT		0x40
+#define	JOB_STATUS_PRINTED		0x80
+#define	JOB_STATUS_DELETED		0x100
+#define	JOB_STATUS_BLOCKED_DEVQ		0x200
+#define	JOB_STATUS_USER_INTERVENTION	0x400
+#define	JOB_STATUS_RESTART		0x800
+#define	JOB_STATUS_COMPLETE		0x1000
+#define	JOB_POSITION_UNSPECIFIED	0
+#define	JOB_NOTIFY_TYPE	1
+#define	JOB_NOTIFY_FIELD_PRINTER_NAME	0
+#define	JOB_NOTIFY_FIELD_MACHINE_NAME	1
+#define	JOB_NOTIFY_FIELD_PORT_NAME	2
+#define	JOB_NOTIFY_FIELD_USER_NAME	3
+#define	JOB_NOTIFY_FIELD_NOTIFY_NAME	4
+#define	JOB_NOTIFY_FIELD_DATATYPE	5
+#define	JOB_NOTIFY_FIELD_PRINT_PROCESSOR	6
+#define	JOB_NOTIFY_FIELD_PARAMETERS	7
+#define	JOB_NOTIFY_FIELD_DRIVER_NAME	8
+#define	JOB_NOTIFY_FIELD_DEVMODE	9
+#define	JOB_NOTIFY_FIELD_STATUS	10
+#define	JOB_NOTIFY_FIELD_STATUS_STRING	11
+#define	JOB_NOTIFY_FIELD_SECURITY_DESCRIPTOR	12
+#define	JOB_NOTIFY_FIELD_DOCUMENT	13
+#define	JOB_NOTIFY_FIELD_PRIORITY	14
+#define	JOB_NOTIFY_FIELD_POSITION	15
+#define	JOB_NOTIFY_FIELD_SUBMITTED	16
+#define	JOB_NOTIFY_FIELD_START_TIME	17
+#define	JOB_NOTIFY_FIELD_UNTIL_TIME	18
+#define	JOB_NOTIFY_FIELD_TIME	19
+#define	JOB_NOTIFY_FIELD_TOTAL_PAGES	20
+#define	JOB_NOTIFY_FIELD_PAGES_PRINTED	21
+#define	JOB_NOTIFY_FIELD_TOTAL_BYTES	22
+#define	JOB_NOTIFY_FIELD_BYTES_PRINTED	23
+#define	JOB_ACCESS_ADMINISTER	16
+#define	JOB_ALL_ACCESS	(STANDARD_RIGHTS_REQUIRED|JOB_ACCESS_ADMINISTER)
+#define	JOB_READ	(STANDARD_RIGHTS_READ|	JOB_ACCESS_ADMINISTER)
+#define	JOB_WRITE	(STANDARD_RIGHTS_WRITE|JOB_ACCESS_ADMINISTER)
+#define	JOB_EXECUTE	(STANDARD_RIGHTS_EXECUTE|JOB_ACCESS_ADMINISTER)
+#define	PRINTER_NOTIFY_OPTIONS_REFRESH	1
+#define	PRINTER_ACCESS_ADMINISTER	4
+#define	PRINTER_ACCESS_USE	8
+#define	PRINTER_ERROR_INFORMATION	0x80000000
+#define	PRINTER_ERROR_WARNING	0x40000000
+#define	PRINTER_ERROR_SEVERE	0x20000000
+#define	PRINTER_ERROR_OUTOFPAPER	1
+#define	PRINTER_ERROR_JAM	2
+#define	PRINTER_ERROR_OUTOFTONER	4
+#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	1
+#define	PRINTER_STATUS_ERROR	2
+#define	PRINTER_STATUS_PENDING_DELETION	4
+#define	PRINTER_STATUS_PAPER_JAM	8
+#define	PRINTER_STATUS_PAPER_OUT	0x10
+#define	PRINTER_STATUS_MANUAL_FEED	0x20
+#define	PRINTER_STATUS_PAPER_PROBLEM	0x40
+#define	PRINTER_STATUS_OFFLINE	0x80
+#define	PRINTER_STATUS_IO_ACTIVE	0x100
+#define	PRINTER_STATUS_BUSY	0x200
+#define	PRINTER_STATUS_PRINTING	0x400
+#define	PRINTER_STATUS_OUTPUT_BIN_FULL	0x800
+#define	PRINTER_STATUS_NOT_AVAILABLE	0x1000
+#define	PRINTER_STATUS_WAITING	0x2000
+#define	PRINTER_STATUS_PROCESSING	0x4000
+#define	PRINTER_STATUS_INITIALIZING	0x8000
+#define	PRINTER_STATUS_WARMING_UP	0x10000
+#define	PRINTER_STATUS_TONER_LOW	0x20000
+#define	PRINTER_STATUS_NO_TONER	0x40000
+#define	PRINTER_STATUS_PAGE_PUNT	0x80000
+#define	PRINTER_STATUS_USER_INTERVENTION	0x100000
+#define	PRINTER_STATUS_OUT_OF_MEMORY	0x200000
+#define	PRINTER_STATUS_DOOR_OPEN	0x400000
+#define	PRINTER_STATUS_SERVER_UNKNOWN	0x800000
+#define	PRINTER_STATUS_POWER_SAVE	0x1000000
+#define	PRINTER_ATTRIBUTE_QUEUED	1
+#define	PRINTER_ATTRIBUTE_DIRECT	2
+#define	PRINTER_ATTRIBUTE_DEFAULT	4
+#define	PRINTER_ATTRIBUTE_SHARED	8
+#define	PRINTER_ATTRIBUTE_NETWORK	0x10
+#define	PRINTER_ATTRIBUTE_HIDDEN	0x20
+#define	PRINTER_ATTRIBUTE_LOCAL	0x40
+#define	PRINTER_ATTRIBUTE_ENABLE_DEVQ	0x80
+#define	PRINTER_ATTRIBUTE_KEEPPRINTEDJOBS	0x100
+#define	PRINTER_ATTRIBUTE_DO_COMPLETE_FIRST	0x200
+#define	PRINTER_ATTRIBUTE_WORK_OFFLINE	0x400
+#define	PRINTER_ATTRIBUTE_ENABLE_BIDI	0x800
+#define	PRINTER_ATTRIBUTE_RAW_ONLY	0x1000
+#define	PRINTER_ATTRIBUTE_PUBLISHED	0x2000
+#define	PRINTER_ENUM_DEFAULT	1
+#define	PRINTER_ENUM_LOCAL	2
+#define	PRINTER_ENUM_CONNECTIONS	4
+#define	PRINTER_ENUM_FAVORITE	4
+#define	PRINTER_ENUM_NAME	8
+#define	PRINTER_ENUM_REMOTE	16
+#define	PRINTER_ENUM_SHARED	32
+#define	PRINTER_ENUM_NETWORK	0x40
+#define	PRINTER_ENUM_EXPAND	0x4000
+#define	PRINTER_ENUM_CONTAINER	0x8000
+#define	PRINTER_ENUM_ICONMASK	0xff0000
+#define	PRINTER_ENUM_ICON1	0x10000
+#define	PRINTER_ENUM_ICON2	0x20000
+#define	PRINTER_ENUM_ICON3	0x40000
+#define	PRINTER_ENUM_ICON4	0x80000
+#define	PRINTER_ENUM_ICON5	0x100000
+#define	PRINTER_ENUM_ICON6	0x200000
+#define	PRINTER_ENUM_ICON7	0x400000
+#define	PRINTER_ENUM_ICON8	0x800000
+#define PRINTER_NOTIFY_TYPE	0
+#define PRINTER_NOTIFY_FIELD_SERVER_NAME	0
+#define PRINTER_NOTIFY_FIELD_PRINTER_NAME	1
+#define PRINTER_NOTIFY_FIELD_SHARE_NAME	2
+#define PRINTER_NOTIFY_FIELD_PORT_NAME	3
+#define PRINTER_NOTIFY_FIELD_DRIVER_NAME	4
+#define PRINTER_NOTIFY_FIELD_COMMENT	5
+#define PRINTER_NOTIFY_FIELD_LOCATION	6
+#define PRINTER_NOTIFY_FIELD_DEVMODE	7
+#define PRINTER_NOTIFY_FIELD_SEPFILE	8
+#define PRINTER_NOTIFY_FIELD_PRINT_PROCESSOR	9
+#define PRINTER_NOTIFY_FIELD_PARAMETERS	10
+#define PRINTER_NOTIFY_FIELD_DATATYPE	11
+#define PRINTER_NOTIFY_FIELD_SECURITY_DESCRIPTOR	12
+#define PRINTER_NOTIFY_FIELD_ATTRIBUTES	13
+#define PRINTER_NOTIFY_FIELD_PRIORITY	14
+#define PRINTER_NOTIFY_FIELD_DEFAULT_PRIORITY	15
+#define PRINTER_NOTIFY_FIELD_START_TIME	16
+#define PRINTER_NOTIFY_FIELD_UNTIL_TIME	17
+#define PRINTER_NOTIFY_FIELD_STATUS	18
+#define PRINTER_NOTIFY_FIELD_STATUS_STRING	19
+#define PRINTER_NOTIFY_FIELD_CJOBS	20
+#define PRINTER_NOTIFY_FIELD_AVERAGE_PPM	21
+#define PRINTER_NOTIFY_FIELD_TOTAL_PAGES	22
+#define PRINTER_NOTIFY_FIELD_PAGES_PRINTED	23
+#define PRINTER_NOTIFY_FIELD_TOTAL_BYTES	24
+#define PRINTER_NOTIFY_FIELD_BYTES_PRINTED	25
+#define PRINTER_CHANGE_ADD_PRINTER	1
+#define PRINTER_CHANGE_SET_PRINTER	2
+#define PRINTER_CHANGE_DELETE_PRINTER	4
+#define PRINTER_CHANGE_FAILED_CONNECTION_PRINTER	8
+#define PRINTER_CHANGE_PRINTER	0xFF
+#define PRINTER_CHANGE_ADD_JOB	0x100
+#define PRINTER_CHANGE_SET_JOB	0x200
+#define PRINTER_CHANGE_DELETE_JOB	0x400
+#define PRINTER_CHANGE_WRITE_JOB	0x800
+#define PRINTER_CHANGE_JOB	0xFF00
+#define PRINTER_CHANGE_ADD_FORM	0x10000
+#define PRINTER_CHANGE_SET_FORM	0x20000
+#define PRINTER_CHANGE_DELETE_FORM	0x40000
+#define PRINTER_CHANGE_FORM	0x70000
+#define PRINTER_CHANGE_ADD_PORT	0x100000
+#define PRINTER_CHANGE_CONFIGURE_PORT	0x200000
+#define PRINTER_CHANGE_DELETE_PORT	0x400000
+#define PRINTER_CHANGE_PORT	0x700000
+#define PRINTER_CHANGE_ADD_PRINT_PROCESSOR	0x1000000
+#define PRINTER_CHANGE_DELETE_PRINT_PROCESSOR	0x4000000
+#define PRINTER_CHANGE_PRINT_PROCESSOR	0x7000000
+#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 PRINTER_NOTIFY_INFO_DISCARDED	1
+#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 NO_PRIORITY	0
+#define MAX_PRIORITY	99
+#define MIN_PRIORITY	1
+#define DEF_PRIORITY	1
+#define PORT_TYPE_WRITE	1
+#define PORT_TYPE_READ	2
+#define PORT_TYPE_REDIRECTED	4
+#define PORT_TYPE_NET_ATTACHED	8
+#define SERVER_ACCESS_ADMINISTER	1
+#define SERVER_ACCESS_ENUMERATE	2
+#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 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
+#ifndef RC_INVOKED
+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 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 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 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 struct _JOB_INFO_3 {
+	DWORD JobId;
+	DWORD NextJobId;
+	DWORD Reserved;
+} JOB_INFO_3,*PJOB_INFO_3,*LPJOB_INFO_3;
+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 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	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	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	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;
+#if (_WIN32_WINNT >= 0x0500)
+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	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	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;
+#endif
+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 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 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 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 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;
+#if (_WIN32_WINNT >= 0x0500)
+typedef struct _PRINTER_ENUM_VALUESA {
+	LPSTR pValueName;
+	DWORD cbValueName;
+	DWORD dwType;
+	LPBYTE pData;
+	DWORD cbData;
+} PRINTER_ENUM_VALUESA,*PPRINTER_ENUM_VALUESA,*LPRINTER_ENUM_VALUESA;
+typedef struct _PRINTER_ENUM_VALUESW {
+	LPWSTR pValueName;
+	DWORD cbValueName;
+	DWORD dwType;
+	LPBYTE pData;
+	DWORD cbData;
+} PRINTER_ENUM_VALUESW,*PPRINTER_ENUM_VALUESW,*LPRINTER_ENUM_VALUESW;
+#endif
+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	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	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	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 struct _PRINTER_INFO_6 {
+	DWORD	dwStatus;
+} PRINTER_INFO_6,*PPRINTER_INFO_6,*LPPRINTER_INFO_6;
+#if (_WIN32_WINNT >= 0x0500)
+typedef struct _PRINTER_INFO_7A {
+	LPWSTR 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 struct _PRINTER_INFO_8 {
+	LPDEVMODE pDevMode;
+} PRINTER_INFO_8,*PPRINTER_INFO_8,*LPPRINTER_INFO_8;
+typedef struct _PRINTER_INFO_9 {
+	LPDEVMODE pDevMode;
+} PRINTER_INFO_9,*PPRINTER_INFO_9,*LPPRINTER_INFO_9;
+#endif
+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	struct	_PRINTER_NOTIFY_INFO_DATA {
+	WORD Type;
+	WORD Field;
+	DWORD Reserved;
+	DWORD Id;
+	union {
+		DWORD adwData[2];
+		struct {
+			DWORD cbBuf;
+			PVOID 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 _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	struct _PRINTER_DEFAULTSA {
+	LPSTR pDatatype;
+	LPDEVMODE pDevMode;
+	ACCESS_MASK	DesiredAccess;
+} PRINTER_DEFAULTSA,*PPRINTER_DEFAULTSA,*LPPRINTER_DEFAULTSA;
+typedef	struct _PRINTER_DEFAULTSW {
+	LPWSTR pDatatype;
+	LPDEVMODE pDevMode;
+	ACCESS_MASK DesiredAccess;
+} PRINTER_DEFAULTSW,*PPRINTER_DEFAULTSW,*LPPRINTER_DEFAULTSW;
+#if (_WIN32_WINNT >= 0x0500)
+typedef	struct _PRINTPROCESSOR_CAPS_1 {
+	DWORD dwLevel;
+	DWORD dwNupOptions;
+	DWORD dwPageOrderFlags;
+	DWORD dwNumberOfCopies;
+} PRINTPROCESSOR_CAPS_1,*PPRINTPROCESSOR_CAPS_1,*LPPRINTPROCESSOR_CAPS_1;
+#endif
+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	struct _PROVIDOR_INFO_2A {
+	LPSTR pOrder;
+} PROVIDOR_INFO_2A,*PPROVIDOR_INFO_2A,*LPROVIDOR_INFO_2A;
+typedef	struct _PROVIDOR_INFO_2W {
+	LPWSTR pOrder;
+} PROVIDOR_INFO_2W,*PPROVIDOR_INFO_2W,*LPROVIDOR_INFO_2W;
+
+BOOL WINAPI AbortPrinter(HANDLE);
+BOOL WINAPI AddFormA(HANDLE,DWORD,PBYTE);
+BOOL WINAPI AddFormW(HANDLE,DWORD,PBYTE);
+BOOL WINAPI AddJobA(HANDLE,DWORD,PBYTE,DWORD,PDWORD);
+BOOL WINAPI AddJobW(HANDLE,DWORD,PBYTE,DWORD,PDWORD);
+BOOL WINAPI AddMonitorA(LPSTR,DWORD,PBYTE);
+BOOL WINAPI AddMonitorW(LPWSTR,DWORD,PBYTE);
+BOOL WINAPI AddPortA(LPSTR,HWND,LPSTR);
+BOOL WINAPI AddPortW(LPWSTR,HWND,LPWSTR);
+HANDLE WINAPI AddPrinterA(LPSTR,DWORD,PBYTE);
+HANDLE WINAPI AddPrinterW(LPWSTR,DWORD,PBYTE);
+BOOL WINAPI AddPrinterConnectionA(LPSTR);
+BOOL WINAPI AddPrinterConnectionW(LPWSTR);
+BOOL WINAPI AddPrinterDriverA(LPSTR,DWORD,PBYTE);
+BOOL WINAPI AddPrinterDriverW(LPWSTR,DWORD,PBYTE);
+BOOL WINAPI AddPrintProcessorA(LPSTR,LPSTR,LPSTR,LPSTR);
+BOOL WINAPI AddPrintProcessorW(LPWSTR,LPWSTR,LPWSTR,LPWSTR);
+BOOL WINAPI AddPrintProvidorA(LPSTR,DWORD,PBYTE);
+BOOL WINAPI AddPrintProvidorW(LPWSTR,DWORD,PBYTE);
+LONG WINAPI AdvancedDocumentPropertiesA(HWND,HANDLE,LPSTR,PDEVMODE,PDEVMODEA);
+LONG WINAPI AdvancedDocumentPropertiesW(HWND,HANDLE,LPWSTR,PDEVMODE,PDEVMODEW);
+BOOL WINAPI ClosePrinter(HANDLE);
+BOOL WINAPI ConfigurePortA(LPSTR,HWND,LPSTR);
+BOOL WINAPI ConfigurePortW(LPWSTR,HWND,LPWSTR);
+HANDLE WINAPI ConnectToPrinterDlg(HWND,DWORD);
+BOOL WINAPI DeleteFormA(HANDLE,LPSTR);
+BOOL WINAPI DeleteFormW(HANDLE,LPWSTR);
+BOOL WINAPI DeleteMonitorA(LPSTR,LPSTR,LPSTR);
+BOOL WINAPI DeleteMonitorW(LPWSTR,LPWSTR,LPWSTR);
+BOOL WINAPI DeletePortA(LPSTR,HWND,LPSTR);
+BOOL WINAPI DeletePortW(LPWSTR,HWND,LPWSTR);
+BOOL WINAPI DeletePrinter(HANDLE);
+BOOL WINAPI DeletePrinterConnectionA(LPSTR);
+BOOL WINAPI DeletePrinterConnectionW(LPWSTR);
+DWORD WINAPI DeletePrinterDataA(HANDLE,LPSTR);
+DWORD WINAPI DeletePrinterDataW(HANDLE,LPWSTR);
+BOOL WINAPI DeletePrinterDriverA(LPSTR,LPSTR,LPSTR);
+BOOL WINAPI DeletePrinterDriverW(LPWSTR,LPWSTR,LPWSTR);
+BOOL WINAPI DeletePrintProcessorA(LPSTR,LPSTR,LPSTR);
+BOOL WINAPI DeletePrintProcessorW(LPWSTR,LPWSTR,LPWSTR);
+BOOL WINAPI DeletePrintProvidorA(LPSTR,LPSTR,LPSTR);
+BOOL WINAPI DeletePrintProvidorW(LPWSTR,LPWSTR,LPWSTR);
+LONG WINAPI DocumentPropertiesA(HWND,HANDLE,LPSTR,PDEVMODEA,PDEVMODEA,DWORD);
+LONG WINAPI DocumentPropertiesW(HWND,HANDLE,LPWSTR,PDEVMODEW,PDEVMODEW,DWORD);
+BOOL WINAPI EndDocPrinter(HANDLE);
+BOOL WINAPI EndPagePrinter(HANDLE);
+BOOL WINAPI EnumFormsA(HANDLE,DWORD,PBYTE,DWORD,PDWORD,PDWORD);
+BOOL WINAPI EnumFormsW(HANDLE,DWORD,PBYTE,DWORD,PDWORD,PDWORD);
+BOOL WINAPI EnumJobsA(HANDLE,DWORD,DWORD,DWORD,PBYTE,DWORD,PDWORD,PDWORD);
+BOOL WINAPI EnumJobsW(HANDLE,DWORD,DWORD,DWORD,PBYTE,DWORD,PDWORD,PDWORD);
+BOOL WINAPI EnumMonitorsA(LPSTR,DWORD,PBYTE,DWORD,PDWORD,PDWORD);
+BOOL WINAPI EnumMonitorsW(LPWSTR,DWORD,PBYTE,DWORD,PDWORD,PDWORD);
+BOOL WINAPI EnumPortsA(LPSTR,DWORD,PBYTE,DWORD,PDWORD,PDWORD);
+BOOL WINAPI EnumPortsW(LPWSTR,DWORD,PBYTE,DWORD,PDWORD,PDWORD);
+DWORD WINAPI EnumPrinterDataA(HANDLE,DWORD,LPSTR,DWORD,PDWORD,PDWORD,PBYTE,DWORD,PDWORD);
+DWORD WINAPI EnumPrinterDataW(HANDLE,DWORD,LPWSTR,DWORD,PDWORD,PDWORD,PBYTE,DWORD,PDWORD);
+BOOL WINAPI EnumPrinterDriversA(LPSTR,LPSTR,DWORD,PBYTE,DWORD,PDWORD,PDWORD);
+BOOL WINAPI EnumPrinterDriversW(LPWSTR,LPWSTR,DWORD,PBYTE,DWORD,PDWORD,PDWORD);
+BOOL WINAPI EnumPrintersA(DWORD,LPSTR,DWORD,PBYTE,DWORD,PDWORD,PDWORD);
+BOOL WINAPI EnumPrintersW(DWORD,LPWSTR,DWORD,PBYTE,DWORD,PDWORD,PDWORD);
+BOOL WINAPI EnumPrintProcessorDatatypesA(LPSTR,LPSTR,DWORD,PBYTE,DWORD,PDWORD,PDWORD);
+BOOL WINAPI EnumPrintProcessorDatatypesW(LPWSTR,LPWSTR,DWORD,PBYTE,DWORD,PDWORD,PDWORD);
+BOOL WINAPI EnumPrintProcessorsA(LPSTR,LPSTR,DWORD,PBYTE,DWORD,PDWORD,PDWORD);
+BOOL WINAPI EnumPrintProcessorsW(LPWSTR,LPWSTR,DWORD,PBYTE,DWORD,PDWORD,PDWORD);
+BOOL WINAPI FindClosePrinterChangeNotification(HANDLE);
+HANDLE WINAPI FindFirstPrinterChangeNotification(HANDLE,DWORD,DWORD,PVOID);
+HANDLE WINAPI FindNextPrinterChangeNotification(HANDLE,PDWORD,PVOID,PVOID*);
+BOOL WINAPI FreePrinterNotifyInfo(PPRINTER_NOTIFY_INFO);
+#if _WIN32_WINNT >= 0x0500
+BOOL WINAPI GetDefaultPrinterA(LPSTR,LPDWORD);
+BOOL WINAPI GetDefaultPrinterW(LPWSTR,LPDWORD);
+#endif
+BOOL WINAPI GetFormA(HANDLE,LPSTR,DWORD,PBYTE,DWORD,PDWORD);
+BOOL WINAPI GetFormW(HANDLE,LPWSTR,DWORD,PBYTE,DWORD,PDWORD);
+BOOL WINAPI GetJobA(HANDLE,DWORD,DWORD,PBYTE,DWORD,PDWORD);
+BOOL WINAPI GetJobW(HANDLE,DWORD,DWORD,PBYTE,DWORD,PDWORD);
+BOOL WINAPI GetPrinterA(HANDLE,DWORD,PBYTE,DWORD,PDWORD);
+BOOL WINAPI GetPrinterW(HANDLE,DWORD,PBYTE,DWORD,PDWORD);
+DWORD WINAPI GetPrinterDataA(HANDLE,LPSTR,PDWORD,PBYTE,DWORD,PDWORD);
+DWORD WINAPI GetPrinterDataW(HANDLE,LPWSTR,PDWORD,PBYTE,DWORD,PDWORD);
+DWORD WINAPI GetPrinterDriverA(HANDLE,LPSTR,DWORD,PBYTE,DWORD,PDWORD);
+DWORD WINAPI GetPrinterDriverW(HANDLE,LPWSTR,DWORD,PBYTE,DWORD,PDWORD);
+DWORD WINAPI GetPrinterDriverDirectoryA(LPSTR,LPSTR,DWORD,PBYTE,DWORD,PDWORD);
+DWORD WINAPI GetPrinterDriverDirectoryW(LPWSTR,LPWSTR,DWORD,PBYTE,DWORD,PDWORD);
+DWORD WINAPI GetPrintProcessorDirectoryA(LPSTR,LPSTR,DWORD,PBYTE,DWORD,PDWORD);
+DWORD WINAPI GetPrintProcessorDirectoryW(LPWSTR,LPWSTR,DWORD,PBYTE,DWORD,PDWORD);
+BOOL WINAPI OpenPrinterA(LPSTR,PHANDLE,LPPRINTER_DEFAULTSA);
+BOOL WINAPI OpenPrinterW(LPWSTR,PHANDLE,LPPRINTER_DEFAULTSW);
+DWORD WINAPI PrinterMessageBoxA(HANDLE,DWORD,HWND,LPSTR,LPSTR,DWORD);
+DWORD WINAPI PrinterMessageBoxW(HANDLE,DWORD,HWND,LPWSTR,LPWSTR,DWORD);
+BOOL WINAPI PrinterProperties(HWND,HANDLE);
+BOOL WINAPI ReadPrinter(HANDLE,PVOID,DWORD,PDWORD);
+BOOL WINAPI ResetPrinterA(HANDLE,LPPRINTER_DEFAULTSA);
+BOOL WINAPI ResetPrinterW(HANDLE,LPPRINTER_DEFAULTSW);
+BOOL WINAPI ScheduleJob(HANDLE,DWORD);
+BOOL WINAPI SetFormA(HANDLE,LPSTR,DWORD,PBYTE);
+BOOL WINAPI SetFormW(HANDLE,LPWSTR,DWORD,PBYTE);
+BOOL WINAPI SetJobA(HANDLE,DWORD,DWORD,PBYTE,DWORD);
+BOOL WINAPI SetJobW(HANDLE,DWORD,DWORD,PBYTE,DWORD);
+BOOL WINAPI SetPrinterA(HANDLE,DWORD,PBYTE,DWORD);
+BOOL WINAPI SetPrinterW(HANDLE,DWORD,PBYTE,DWORD);
+BOOL WINAPI SetPrinterDataA(HANDLE,LPSTR,DWORD,PBYTE,DWORD);
+BOOL WINAPI SetPrinterDataW(HANDLE,LPWSTR,DWORD,PBYTE,DWORD);
+DWORD WINAPI StartDocPrinterA(HANDLE,DWORD,PBYTE);
+DWORD WINAPI StartDocPrinterW(HANDLE,DWORD,PBYTE);
+BOOL WINAPI StartPagePrinter(HANDLE);
+DWORD WINAPI WaitForPrinterChange(HANDLE,DWORD);
+BOOL WINAPI WritePrinter(HANDLE,PVOID,DWORD,PDWORD);
+
+#ifdef UNICODE
+typedef JOB_INFO_1W JOB_INFO_1,*PJOB_INFO_1,*LPJOB_INFO_1;
+typedef JOB_INFO_2W JOB_INFO_2,*PJOB_INFO_2,*LPJOB_INFO_2;
+typedef ADDJOB_INFO_1W ADDJOB_INFO_1,*PADDJOB_INFO_1,*LPADDJOB_INFO_1;
+typedef DATATYPES_INFO_1W DATATYPES_INFO_1,*PDATATYPES_INFO_1,*LPDATATYPES_INFO_1;
+typedef MONITOR_INFO_1W MONITOR_INFO_1,*PMONITOR_INFO_1,*LPMONITOR_INFO_1;
+typedef MONITOR_INFO_2W MONITOR_INFO_2,*PMONITOR_INFO_2,*LPMONITOR_INFO_2;
+typedef DOC_INFO_1W DOC_INFO_1,*PDOC_INFO_1,*LPDOC_INFO_1;
+typedef DOC_INFO_2W DOC_INFO_2,*PDOC_INFO_2,*LPDOC_INFO_2;
+typedef PORT_INFO_1W PORT_INFO_1,*PPORT_INFO_1,*LPPORT_INFO_1;
+typedef PORT_INFO_2W PORT_INFO_2,*PPORT_INFO_2,*LPPORT_INFO_2;
+typedef PORT_INFO_3W PORT_INFO_3,*PPORT_INFO_3,*LPPORT_INFO_3;
+typedef DRIVER_INFO_1W DRIVER_INFO_1,*PDRIVER_INFO_1,*LPDRIVER_INFO_1;
+typedef DRIVER_INFO_2W DRIVER_INFO_2,*PDRIVER_INFO_2,*LPDRIVER_INFO_2;
+typedef DRIVER_INFO_3W DRIVER_INFO_3,*PDRIVER_INFO_3,*LPDRIVER_INFO_3;
+#if (_WIN32_WINNT >= 0x0500)
+typedef DRIVER_INFO_4W DRIVER_INFO_4,*PDRIVER_INFO_4,*LPDRIVER_INFO_4;
+typedef DRIVER_INFO_5W DRIVER_INFO_5,*PDRIVER_INFO_5,*LPDRIVER_INFO_5;
+typedef DRIVER_INFO_6W DRIVER_INFO_6,*PDRIVER_INFO_6,*LPDRIVER_INFO_6;
+typedef PRINTER_ENUM_VALUESW PRINTER_ENUM_VALUES,*PPRINTER_ENUM_VALUES,*LPRINTER_ENUM_VALUES;
+#endif
+typedef PRINTER_INFO_1W PRINTER_INFO_1,*PPRINTER_INFO_1,*LPPRINTER_INFO_1;
+typedef PRINTER_INFO_2W PRINTER_INFO_2,*PPRINTER_INFO_2,*LPPRINTER_INFO_2;
+typedef PRINTER_INFO_4W PRINTER_INFO_4,*PPRINTER_INFO_4,*LPPRINTER_INFO_4;
+typedef PRINTER_INFO_5W PRINTER_INFO_5,*PPRINTER_INFO_5,*LPPRINTER_INFO_5;
+#if (_WIN32_WINNT >= 0x0500)
+typedef PRINTER_INFO_7W PRINTER_INFO_7,*PPRINTER_INFO_7,*LPPRINTER_INFO_7;
+#endif
+typedef PRINTPROCESSOR_INFO_1W PRINTPROCESSOR_INFO_1,*PPRINTPROCESSOR_INFO_1,*LPPRINTPROCESSOR_INFO_1;
+typedef FORM_INFO_1W FORM_INFO_1,*PFORM_INFO_1,*LPFORM_INFO_1;
+typedef PRINTER_DEFAULTSW PRINTER_DEFAULTS,*PPRINTER_DEFAULTS,*LPPRINTER_DEFAULTS;
+typedef PROVIDOR_INFO_1W PROVIDOR_INFO_1,*PPROVIDOR_INFO_1,*LPROVIDOR_INFO_1;
+typedef PROVIDOR_INFO_2W PROVIDOR_INFO_2,*PPROVIDOR_INFO_2,*LPROVIDOR_INFO_2;
+#define AddForm AddFormW
+#define AddJob AddJobW
+#define AddMonitor AddMonitorW
+#define AddPort AddPortW
+#define AddPrinter AddPrinterW
+#define AddPrinterConnection AddPrinterConnectionW
+#define AddPrinterDriver AddPrinterDriverW
+#define AddPrintProcessor AddPrintProcessorW
+#define AddPrintProvidor AddPrintProvidorW
+#define AdvancedDocumentProperties AdvancedDocumentPropertiesW
+#define ConfigurePort ConfigurePortW
+#define DeleteForm DeleteFormW
+#define DeleteMonitor DeleteMonitorW
+#define DeletePort DeletePortW
+#define DeletePrinterConnection DeletePrinterConnectionW
+#define DeletePrinterData DeletePrinterDataW
+#define DeletePrinterDriver DeletePrinterDriverW
+#define DeletePrintProcessor DeletePrinterProcessorW
+#define DeletePrintProvidor DeletePrinterProvidorW
+#define DocumentProperties DocumentPropertiesW
+#define EnumForms EnumFormsW
+#define EnumJobs EnumJobsW
+#define EnumMonitors EnumMonitorsW
+#define EnumPorts EnumPortsW
+#define EnumPrinterData EnumPrinterDataW
+#define EnumPrinterDrivers EnumPrinterDriversW
+#define EnumPrinters EnumPrintersW
+#define EnumPrintProcessorDatatypes EnumPrintProcessorDatatypesW
+#define EnumPrintProcessors EnumPrintProcessorsW
+#define GetDefaultPrinter GetDefaultPrinterW
+#define	GetForm	GetFormW
+#define GetJob GetJobW
+#define GetPrinter GetPrinterW
+#define GetPrinterData GetPrinterDataW
+#define GetPrinterDriver GetPrinterDriverW
+#define GetPrinterDriverDirectory GetPrinterDriverDirectoryW
+#define GetPrintProcessorDirectory GetPrintProcessorDirectoryW
+#define OpenPrinter OpenPrinterW
+#define PrinterMessageBox PrinterMessageBoxW
+#define ResetPrinter ResetPrinterW
+#define SetForm SetFormW
+#define SetJob SetJobW
+#define SetPrinter SetPrinterW
+#define SetPrinterData SetPrinterDataW
+#define StartDocPrinter StartDocPrinterW
+#else
+typedef JOB_INFO_1A JOB_INFO_1,*PJOB_INFO_1,*LPJOB_INFO_1;
+typedef JOB_INFO_2A JOB_INFO_2,*PJOB_INFO_2,*LPJOB_INFO_2;
+typedef ADDJOB_INFO_1A ADDJOB_INFO_1,*PADDJOB_INFO_1,*LPADDJOB_INFO_1;
+typedef DATATYPES_INFO_1A DATATYPES_INFO_1,*PDATATYPES_INFO_1,*LPDATATYPES_INFO_1;
+typedef MONITOR_INFO_1A MONITOR_INFO_1,*PMONITOR_INFO_1,*LPMONITOR_INFO_1;
+typedef MONITOR_INFO_2A MONITOR_INFO_2,*PMONITOR_INFO_2,*LPMONITOR_INFO_2;
+typedef DOC_INFO_1A DOC_INFO_1,*PDOC_INFO_1,*LPDOC_INFO_1;
+typedef DOC_INFO_2A DOC_INFO_2,*PDOC_INFO_2,*LPDOC_INFO_2;
+typedef PORT_INFO_1A PORT_INFO_1,*PPORT_INFO_1,*LPPORT_INFO_1;
+typedef PORT_INFO_2A PORT_INFO_2,*PPORT_INFO_2,*LPPORT_INFO_2;
+typedef PORT_INFO_3A PORT_INFO_3,*PPORT_INFO_3,*LPPORT_INFO_3;
+typedef DRIVER_INFO_1A DRIVER_INFO_1,*PDRIVER_INFO_1,*LPDRIVER_INFO_1;
+typedef DRIVER_INFO_2A DRIVER_INFO_2,*PDRIVER_INFO_2,*LPDRIVER_INFO_2;
+typedef DRIVER_INFO_3A DRIVER_INFO_3,*PDRIVER_INFO_3,*LPDRIVER_INFO_3;
+#if (_WIN32_WINNT >= 0x0500)
+typedef DRIVER_INFO_4A DRIVER_INFO_4,*PDRIVER_INFO_4,*LPDRIVER_INFO_4;
+typedef DRIVER_INFO_5A DRIVER_INFO_5,*PDRIVER_INFO_5,*LPDRIVER_INFO_5;
+typedef DRIVER_INFO_6A DRIVER_INFO_6,*PDRIVER_INFO_6,*LPDRIVER_INFO_6;
+typedef PRINTER_ENUM_VALUESA PRINTER_ENUM_VALUES,*PPRINTER_ENUM_VALUES,*LPRINTER_ENUM_VALUES;
+#endif
+typedef PRINTER_INFO_1A PRINTER_INFO_1,*PPRINTER_INFO_1,*LPPRINTER_INFO_1;
+typedef PRINTER_INFO_2A PRINTER_INFO_2,*PPRINTER_INFO_2,*LPPRINTER_INFO_2;
+typedef PRINTER_INFO_4A PRINTER_INFO_4,*PPRINTER_INFO_4,*LPPRINTER_INFO_4;
+typedef PRINTER_INFO_5A PRINTER_INFO_5,*PPRINTER_INFO_5,*LPPRINTER_INFO_5;
+#if (_WIN32_WINNT >= 0x0500)
+typedef PRINTER_INFO_7A PRINTER_INFO_7,*PPRINTER_INFO_7,*LPPRINTER_INFO_7;
+#endif
+typedef PRINTPROCESSOR_INFO_1A PRINTPROCESSOR_INFO_1,*PPRINTPROCESSOR_INFO_1,*LPPRINTPROCESSOR_INFO_1;
+typedef FORM_INFO_1A FORM_INFO_1,*PFORM_INFO_1,*LPFORM_INFO_1;
+typedef PRINTER_DEFAULTSA PRINTER_DEFAULTS,*PPRINTER_DEFAULTS,*LPPRINTER_DEFAULTS;
+typedef PROVIDOR_INFO_1A PROVIDOR_INFO_1,*PPROVIDOR_INFO_1,*LPROVIDOR_INFO_1;
+typedef PROVIDOR_INFO_2A PROVIDOR_INFO_2,*PPROVIDOR_INFO_2,*LPROVIDOR_INFO_2;
+#define AddForm AddFormA
+#define AddJob AddJobA
+#define AddMonitor AddMonitorA
+#define AddPort AddPortA
+#define AddPrinter AddPrinterA
+#define AddPrinterConnection AddPrinterConnectionA
+#define AddPrinterDriver AddPrinterDriverA
+#define AddPrintProcessor AddPrintProcessorA
+#define AddPrintProvidor AddPrintProvidorA
+#define AdvancedDocumentProperties AdvancedDocumentPropertiesA
+#define ConfigurePort ConfigurePortA
+#define DeleteForm DeleteFormA
+#define DeleteMonitor DeleteMonitorA
+#define DeletePort DeletePortA
+#define DeletePrinterConnection DeletePrinterConnectionA
+#define DeletePrinterData DeletePrinterDataA
+#define DeletePrinterDriver DeletePrinterDriverA
+#define DeletePrintProcessor DeletePrinterProcessorA
+#define DeletePrintProvidor DeletePrinterProvidorA
+#define DocumentProperties DocumentPropertiesA
+#define EnumForms EnumFormsA
+#define EnumJobs EnumJobsA
+#define EnumMonitors EnumMonitorsA
+#define EnumPorts EnumPortsA
+#define EnumPrinterData EnumPrinterDataA
+#define EnumPrinterDrivers EnumPrinterDriversA
+#define EnumPrinters EnumPrintersA
+#define EnumPrintProcessorDatatypes EnumPrintProcessorDatatypesA
+#define EnumPrintProcessors EnumPrintProcessorsA
+#define GetDefaultPrinter GetDefaultPrinterA
+#define	GetForm	GetFormA
+#define GetJob GetJobA
+#define GetPrinter GetPrinterA
+#define GetPrinterData GetPrinterDataA
+#define GetPrinterDriver GetPrinterDriverA
+#define GetPrinterDriverDirectory GetPrinterDriverDirectoryA
+#define GetPrintProcessorDirectory GetPrintProcessorDirectoryA
+#define OpenPrinter OpenPrinterA
+#define PrinterMessageBox PrinterMessageBoxA
+#define ResetPrinter ResetPrinterA
+#define SetForm SetFormA
+#define SetJob SetJobA
+#define SetPrinter SetPrinterA
+#define SetPrinterData SetPrinterDataA
+#define StartDocPrinter StartDocPrinterA
+#endif
+#endif /* RC_INVOKED */
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/winsvc.h
===================================================================
--- Daodan/MinGW/include/winsvc.h	(revision 1046)
+++ Daodan/MinGW/include/winsvc.h	(revision 1046)
@@ -0,0 +1,313 @@
+#ifndef _WINSVC_H
+#define _WINSVC_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#ifndef WINADVAPI
+#define WINADVAPI
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define SERVICES_ACTIVE_DATABASEA "ServicesActive"
+#define SERVICES_ACTIVE_DATABASEW L"ServicesActive"
+#define SERVICES_FAILED_DATABASEA "ServicesFailed"
+#define SERVICES_FAILED_DATABASEW L"ServicesFailed"
+#define SC_GROUP_IDENTIFIERA '+'
+#define SC_GROUP_IDENTIFIERW L'+'
+#define SC_MANAGER_ALL_ACCESS	0xf003f
+#define SC_MANAGER_CONNECT	1
+#define SC_MANAGER_CREATE_SERVICE	2
+#define SC_MANAGER_ENUMERATE_SERVICE	4
+#define SC_MANAGER_LOCK	8
+#define SC_MANAGER_QUERY_LOCK_STATUS	16
+#define SC_MANAGER_MODIFY_BOOT_CONFIG	32
+#define SERVICE_NO_CHANGE 0xffffffff
+#define SERVICE_STOPPED	1
+#define SERVICE_START_PENDING	2
+#define SERVICE_STOP_PENDING	3
+#define SERVICE_RUNNING	4
+#define SERVICE_CONTINUE_PENDING	5
+#define SERVICE_PAUSE_PENDING	6
+#define SERVICE_PAUSED	7
+#define SERVICE_ACCEPT_STOP	1
+#define SERVICE_ACCEPT_PAUSE_CONTINUE	2
+#define SERVICE_ACCEPT_SHUTDOWN 4
+#define SERVICE_ACCEPT_PARAMCHANGE    8
+#define SERVICE_ACCEPT_NETBINDCHANGE  16
+#define SERVICE_ACCEPT_HARDWAREPROFILECHANGE   32
+#define SERVICE_ACCEPT_POWEREVENT              64
+#define SERVICE_ACCEPT_SESSIONCHANGE           128
+#define SERVICE_CONTROL_STOP	1
+#define SERVICE_CONTROL_PAUSE	2
+#define SERVICE_CONTROL_CONTINUE	3
+#define SERVICE_CONTROL_INTERROGATE	4
+#define SERVICE_CONTROL_SHUTDOWN	5
+#define SERVICE_CONTROL_PARAMCHANGE     6
+#define SERVICE_CONTROL_NETBINDADD      7
+#define SERVICE_CONTROL_NETBINDREMOVE   8
+#define SERVICE_CONTROL_NETBINDENABLE   9
+#define SERVICE_CONTROL_NETBINDDISABLE  10
+#define SERVICE_CONTROL_DEVICEEVENT     11
+#define SERVICE_CONTROL_HARDWAREPROFILECHANGE 12
+#define SERVICE_CONTROL_POWEREVENT            13
+#define SERVICE_CONTROL_SESSIONCHANGE         14
+#define SERVICE_ACTIVE 1
+#define SERVICE_INACTIVE 2
+#define SERVICE_STATE_ALL 3
+#define SERVICE_QUERY_CONFIG 1
+#define SERVICE_CHANGE_CONFIG 2
+#define SERVICE_QUERY_STATUS 4
+#define SERVICE_ENUMERATE_DEPENDENTS 8
+#define SERVICE_START 16
+#define SERVICE_STOP 32
+#define SERVICE_PAUSE_CONTINUE 64
+#define SERVICE_INTERROGATE 128
+#define SERVICE_USER_DEFINED_CONTROL 256
+#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 1
+#define SERVICE_CONFIG_DESCRIPTION     1
+#define SERVICE_CONFIG_FAILURE_ACTIONS 2
+
+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 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 _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 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 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 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 void (WINAPI *LPSERVICE_MAIN_FUNCTIONA)(DWORD,LPSTR*);
+typedef void (WINAPI *LPSERVICE_MAIN_FUNCTIONW)(DWORD,LPWSTR*);
+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;
+DECLARE_HANDLE(SC_HANDLE);
+typedef SC_HANDLE *LPSC_HANDLE;
+typedef PVOID SC_LOCK;
+typedef DWORD SERVICE_STATUS_HANDLE;
+typedef VOID(WINAPI *LPHANDLER_FUNCTION)(DWORD);
+typedef DWORD (WINAPI *LPHANDLER_FUNCTION_EX)(DWORD,DWORD,LPVOID,LPVOID);
+typedef struct _SERVICE_DESCRIPTIONA {
+	LPSTR lpDescription;
+} SERVICE_DESCRIPTIONA,*LPSERVICE_DESCRIPTIONA;
+typedef struct _SERVICE_DESCRIPTIONW {
+	LPWSTR lpDescription;
+} SERVICE_DESCRIPTIONW,*LPSERVICE_DESCRIPTIONW;
+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;
+
+WINADVAPI BOOL WINAPI ChangeServiceConfigA(SC_HANDLE,DWORD,DWORD,DWORD,LPCSTR,LPCSTR,LPDWORD,LPCSTR,LPCSTR,LPCSTR,LPCSTR);
+WINADVAPI BOOL WINAPI ChangeServiceConfigW(SC_HANDLE,DWORD,DWORD,DWORD,LPCWSTR,LPCWSTR,LPDWORD,LPCWSTR,LPCWSTR,LPCWSTR,LPCWSTR);
+WINADVAPI BOOL WINAPI ChangeServiceConfig2A(SC_HANDLE,DWORD,LPVOID);
+WINADVAPI BOOL WINAPI ChangeServiceConfig2W(SC_HANDLE,DWORD,LPVOID);
+WINADVAPI BOOL WINAPI CloseServiceHandle(SC_HANDLE);
+WINADVAPI BOOL WINAPI ControlService(SC_HANDLE,DWORD,LPSERVICE_STATUS);
+WINADVAPI SC_HANDLE WINAPI CreateServiceA(SC_HANDLE,LPCSTR,LPCSTR,DWORD,DWORD,DWORD,DWORD,LPCSTR,LPCSTR,PDWORD,LPCSTR,LPCSTR,LPCSTR);
+WINADVAPI SC_HANDLE WINAPI CreateServiceW(SC_HANDLE,LPCWSTR,LPCWSTR,DWORD,DWORD,DWORD,DWORD,LPCWSTR,LPCWSTR,PDWORD,LPCWSTR,LPCWSTR,LPCWSTR);
+WINADVAPI BOOL WINAPI DeleteService(SC_HANDLE);
+WINADVAPI BOOL WINAPI EnumDependentServicesA(SC_HANDLE,DWORD,LPENUM_SERVICE_STATUSA,DWORD,PDWORD,PDWORD);
+WINADVAPI BOOL WINAPI EnumDependentServicesW(SC_HANDLE,DWORD,LPENUM_SERVICE_STATUSW,DWORD,PDWORD,PDWORD);
+WINADVAPI BOOL WINAPI EnumServicesStatusA(SC_HANDLE,DWORD,DWORD,LPENUM_SERVICE_STATUSA,DWORD,PDWORD,PDWORD,PDWORD);
+WINADVAPI BOOL WINAPI EnumServicesStatusW(SC_HANDLE,DWORD,DWORD,LPENUM_SERVICE_STATUSW,DWORD,PDWORD,PDWORD,PDWORD);
+WINADVAPI BOOL WINAPI EnumServicesStatusExA(SC_HANDLE,SC_ENUM_TYPE,DWORD,DWORD,LPBYTE,DWORD,LPDWORD,LPDWORD,LPDWORD,LPCSTR);
+WINADVAPI BOOL WINAPI EnumServicesStatusExW(SC_HANDLE,SC_ENUM_TYPE,DWORD,DWORD,LPBYTE,DWORD,LPDWORD,LPDWORD,LPDWORD,LPCWSTR);
+WINADVAPI BOOL WINAPI GetServiceDisplayNameA(SC_HANDLE,LPCSTR,LPSTR,PDWORD);
+WINADVAPI BOOL WINAPI GetServiceDisplayNameW(SC_HANDLE,LPCWSTR,LPWSTR,PDWORD);
+WINADVAPI BOOL WINAPI GetServiceKeyNameA(SC_HANDLE,LPCSTR,LPSTR,PDWORD);
+WINADVAPI BOOL WINAPI GetServiceKeyNameW(SC_HANDLE,LPCWSTR,LPWSTR,PDWORD);
+WINADVAPI SC_LOCK WINAPI LockServiceDatabase(SC_HANDLE);
+WINADVAPI BOOL WINAPI NotifyBootConfigStatus(BOOL);
+WINADVAPI SC_HANDLE WINAPI OpenSCManagerA(LPCSTR,LPCSTR,DWORD);
+WINADVAPI SC_HANDLE WINAPI OpenSCManagerW(LPCWSTR,LPCWSTR,DWORD);
+WINADVAPI SC_HANDLE WINAPI OpenServiceA(SC_HANDLE,LPCSTR,DWORD);
+WINADVAPI SC_HANDLE WINAPI OpenServiceW(SC_HANDLE,LPCWSTR,DWORD);
+WINADVAPI BOOL WINAPI QueryServiceConfigA(SC_HANDLE,LPQUERY_SERVICE_CONFIGA,DWORD,PDWORD);
+WINADVAPI BOOL WINAPI QueryServiceConfigW(SC_HANDLE,LPQUERY_SERVICE_CONFIGW,DWORD,PDWORD);
+WINADVAPI BOOL WINAPI QueryServiceConfig2A(SC_HANDLE,DWORD,LPBYTE,DWORD,LPDWORD);
+WINADVAPI BOOL WINAPI QueryServiceConfig2W(SC_HANDLE,DWORD,LPBYTE,DWORD,LPDWORD);
+WINADVAPI BOOL WINAPI QueryServiceLockStatusA(SC_HANDLE,LPQUERY_SERVICE_LOCK_STATUSA,DWORD,PDWORD);
+WINADVAPI BOOL WINAPI QueryServiceLockStatusW(SC_HANDLE,LPQUERY_SERVICE_LOCK_STATUSW,DWORD,PDWORD);
+WINADVAPI BOOL WINAPI QueryServiceObjectSecurity(SC_HANDLE,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR,DWORD,LPDWORD);
+WINADVAPI BOOL WINAPI QueryServiceStatus(SC_HANDLE,LPSERVICE_STATUS);
+WINADVAPI BOOL WINAPI QueryServiceStatusEx(SC_HANDLE,SC_STATUS_TYPE,LPBYTE,DWORD,LPDWORD);
+WINADVAPI SERVICE_STATUS_HANDLE WINAPI RegisterServiceCtrlHandlerA(LPCSTR,LPHANDLER_FUNCTION);
+WINADVAPI SERVICE_STATUS_HANDLE WINAPI RegisterServiceCtrlHandlerW(LPCWSTR,LPHANDLER_FUNCTION);
+WINADVAPI SERVICE_STATUS_HANDLE WINAPI RegisterServiceCtrlHandlerExA(LPCSTR,LPHANDLER_FUNCTION_EX,LPVOID);
+WINADVAPI SERVICE_STATUS_HANDLE WINAPI RegisterServiceCtrlHandlerExW(LPCWSTR,LPHANDLER_FUNCTION_EX,LPVOID);
+WINADVAPI BOOL WINAPI SetServiceObjectSecurity(SC_HANDLE,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR);
+WINADVAPI BOOL WINAPI SetServiceStatus(SERVICE_STATUS_HANDLE,LPSERVICE_STATUS);
+WINADVAPI BOOL WINAPI StartServiceA(SC_HANDLE,DWORD,LPCSTR*);
+WINADVAPI BOOL WINAPI StartServiceCtrlDispatcherA(LPSERVICE_TABLE_ENTRYA);
+WINADVAPI BOOL WINAPI StartServiceCtrlDispatcherW(LPSERVICE_TABLE_ENTRYW);
+WINADVAPI BOOL WINAPI StartServiceW(SC_HANDLE,DWORD,LPCWSTR*);
+WINADVAPI BOOL WINAPI UnlockServiceDatabase(SC_LOCK);
+
+#ifdef UNICODE
+typedef ENUM_SERVICE_STATUSW ENUM_SERVICE_STATUS,*LPENUM_SERVICE_STATUS;
+typedef ENUM_SERVICE_STATUS_PROCESSW ENUM_SERVICE_STATUS_PROCESS;
+typedef LPENUM_SERVICE_STATUS_PROCESSW LPENUM_SERVICE_STATUS_PROCESS;
+typedef QUERY_SERVICE_CONFIGW QUERY_SERVICE_CONFIG,*LPQUERY_SERVICE_CONFIG;
+typedef QUERY_SERVICE_LOCK_STATUSW QUERY_SERVICE_LOCK_STATUS,*LPQUERY_SERVICE_LOCK_STATUS;
+typedef SERVICE_TABLE_ENTRYW SERVICE_TABLE_ENTRY,*LPSERVICE_TABLE_ENTRY;
+typedef LPSERVICE_MAIN_FUNCTIONW LPSERVICE_MAIN_FUNCTION;
+typedef SERVICE_DESCRIPTIONW SERVICE_DESCRIPTION;
+typedef LPSERVICE_DESCRIPTIONW LPSERVICE_DESCRIPTION;
+typedef SERVICE_FAILURE_ACTIONSW SERVICE_FAILURE_ACTIONS;
+typedef LPSERVICE_FAILURE_ACTIONSW LPSERVICE_FAILURE_ACTIONS;
+#define SERVICES_ACTIVE_DATABASE SERVICES_ACTIVE_DATABASEW
+#define SERVICES_FAILED_DATABASE SERVICES_FAILED_DATABASEW
+#define SC_GROUP_IDENTIFIER SC_GROUP_IDENTIFIERW
+#define ChangeServiceConfig ChangeServiceConfigW
+#define ChangeServiceConfig2 ChangeServiceConfig2W
+#define CreateService CreateServiceW
+#define EnumDependentServices EnumDependentServicesW
+#define EnumServicesStatus EnumServicesStatusW
+#define EnumServicesStatusEx  EnumServicesStatusExW
+#define GetServiceDisplayName GetServiceDisplayNameW
+#define GetServiceKeyName GetServiceKeyNameW
+#define OpenSCManager OpenSCManagerW
+#define OpenService OpenServiceW
+#define QueryServiceConfig QueryServiceConfigW
+#define QueryServiceConfig2 QueryServiceConfig2W
+#define QueryServiceLockStatus QueryServiceLockStatusW
+#define RegisterServiceCtrlHandler RegisterServiceCtrlHandlerW
+#define RegisterServiceCtrlHandlerEx RegisterServiceCtrlHandlerExW
+#define StartService StartServiceW
+#define StartServiceCtrlDispatcher StartServiceCtrlDispatcherW
+#else
+typedef ENUM_SERVICE_STATUSA ENUM_SERVICE_STATUS,*LPENUM_SERVICE_STATUS;
+typedef ENUM_SERVICE_STATUS_PROCESSA ENUM_SERVICE_STATUS_PROCESS;
+typedef LPENUM_SERVICE_STATUS_PROCESSA LPENUM_SERVICE_STATUS_PROCESS;
+typedef QUERY_SERVICE_CONFIGA QUERY_SERVICE_CONFIG,*LPQUERY_SERVICE_CONFIG;
+typedef QUERY_SERVICE_LOCK_STATUSA QUERY_SERVICE_LOCK_STATUS,*LPQUERY_SERVICE_LOCK_STATUS;
+typedef SERVICE_TABLE_ENTRYA SERVICE_TABLE_ENTRY,*LPSERVICE_TABLE_ENTRY;
+typedef LPSERVICE_MAIN_FUNCTIONA LPSERVICE_MAIN_FUNCTION;
+typedef SERVICE_DESCRIPTIONA SERVICE_DESCRIPTION;
+typedef LPSERVICE_DESCRIPTIONA LPSERVICE_DESCRIPTION;
+typedef SERVICE_FAILURE_ACTIONSA SERVICE_FAILURE_ACTIONS;
+typedef LPSERVICE_FAILURE_ACTIONSA LPSERVICE_FAILURE_ACTIONS;
+#define SERVICES_ACTIVE_DATABASE SERVICES_ACTIVE_DATABASEA
+#define SERVICES_FAILED_DATABASE SERVICES_FAILED_DATABASEA
+#define SC_GROUP_IDENTIFIER SC_GROUP_IDENTIFIERA
+#define ChangeServiceConfig ChangeServiceConfigA
+#define ChangeServiceConfig2 ChangeServiceConfig2A
+#define CreateService CreateServiceA
+#define EnumDependentServices EnumDependentServicesA
+#define EnumServicesStatus EnumServicesStatusA
+#define EnumServicesStatusEx  EnumServicesStatusExA
+#define GetServiceDisplayName GetServiceDisplayNameA
+#define GetServiceKeyName GetServiceKeyNameA
+#define OpenSCManager OpenSCManagerA
+#define OpenService OpenServiceA
+#define QueryServiceConfig QueryServiceConfigA
+#define QueryServiceConfig2 QueryServiceConfig2A
+#define QueryServiceLockStatus QueryServiceLockStatusA
+#define RegisterServiceCtrlHandler RegisterServiceCtrlHandlerA
+#define RegisterServiceCtrlHandlerEx RegisterServiceCtrlHandlerExA
+#define StartService StartServiceA
+#define StartServiceCtrlDispatcher StartServiceCtrlDispatcherA
+#endif
+#ifdef __cplusplus
+}
+#endif
+#endif /* _WINSVC_H */
Index: Daodan/MinGW/include/winuser.h
===================================================================
--- Daodan/MinGW/include/winuser.h	(revision 1046)
+++ Daodan/MinGW/include/winuser.h	(revision 1046)
@@ -0,0 +1,4516 @@
+#ifndef _WINUSER_H
+#define _WINUSER_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef WINUSERAPI
+#ifdef __W32API_USE_DLLIMPORT__
+#define WINUSERAPI DECLSPEC_IMPORT
+#else
+#define WINUSERAPI
+#endif
+#endif
+
+#define MNGO_NOINTERFACE  0x00
+#define MNGO_NOERROR      0x01
+#define MNGOF_TOPGAP      0x01
+#define MNGOF_BOTTOMGAP   0x02
+
+#define WC_DIALOG MAKEINTATOM(0x8002)
+#define FALT	16
+#define FCONTROL	8
+#define FNOINVERT	2
+#define FSHIFT	4
+#define FVIRTKEY	1
+#define ATF_TIMEOUTON	1
+#define ATF_ONOFFFEEDBACK	2
+#define ATF_AVAILABLE	4 /* May be obsolete. Not in recent MS docs. */
+#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	3
+#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
+#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
+#if (_WIN32_WINNT >= 0x0500)
+#define CF_DIBV5 17
+#define CF_MAX	18
+#else
+#define CF_MAX	17
+#endif
+#define CF_OWNERDISPLAY	128
+#define CF_DSPTEXT	129
+#define CF_DSPBITMAP	130
+#define CF_DSPMETAFILEPICT	131
+#define CF_DSPENHMETAFILE	142
+#define CF_PRIVATEFIRST	512
+#define CF_PRIVATELAST	767
+#define CF_GDIOBJFIRST	768
+#define CF_GDIOBJLAST	1023
+#define HKL_NEXT	1
+#define HKL_PREV	0
+#define KLF_ACTIVATE	1
+#define KLF_SUBSTITUTE_OK	2
+#define KLF_UNLOADPREVIOUS	4
+#define KLF_REORDER	8
+#define KLF_REPLACELANG	16
+#define KLF_NOTELLSHELL	128
+#define KLF_SETFORPROCESS	256
+#define KL_NAMELENGTH 9
+#define MF_ENABLED	0
+#define MF_GRAYED	1
+#define MF_DISABLED	2
+#define MF_BITMAP	4
+#define MF_CHECKED	8
+#define MF_MENUBARBREAK 32
+#define MF_MENUBREAK	64
+#define MF_OWNERDRAW	256
+#define MF_POPUP	16
+#define MF_SEPARATOR	0x800
+#define MF_STRING	0
+#define MF_UNCHECKED	0
+#define MF_DEFAULT	4096
+#define MF_SYSMENU	0x2000
+#define MF_HELP	0x4000
+#define MF_END	128
+#define MF_RIGHTJUSTIFY	0x4000
+#define MF_MOUSESELECT	0x8000
+#define MF_INSERT 0
+#define MF_CHANGE 128
+#define MF_APPEND 256
+#define MF_DELETE 512
+#define MF_REMOVE 4096
+#define MF_USECHECKBITMAPS 512
+#define MF_UNHILITE 0
+#define MF_HILITE 128
+
+/* Also defined in dbt.h */
+#define BSM_ALLCOMPONENTS	0
+#define BSM_APPLICATIONS	8
+#define BSM_ALLDESKTOPS		16
+#define BSM_INSTALLABLEDRIVERS	4
+#define BSM_NETDRIVER	2
+#define BSM_VXDS	1
+#define BSF_FLUSHDISK 0x00000004
+#define BSF_FORCEIFHUNG 0x00000020
+#define BSF_IGNORECURRENTTASK 0x00000002
+#define BSF_NOHANG 0x00000008
+#define BSF_NOTIMEOUTIFNOTHUNG 0x00000040
+#define BSF_POSTMESSAGE 0x00000010
+#define BSF_QUERY 0x00000001
+#if (_WIN32_WINNT >= 0x0500)
+#define BSF_ALLOWSFW 0x00000080
+#define BSF_SENDNOTIFYMESSAGE 0x00000100
+#endif /* (_WIN32_WINNT >= 0x0500) */
+#if (_WIN32_WINNT >= 0x0501)
+#define BSF_LUID 0x00000400
+#define BSF_RETURNHDESK 0x00000200
+#endif /* (_WIN32_WINNT >= 0x0501) */
+
+#define BROADCAST_QUERY_DENY	1112363332
+#define ENUM_CURRENT_SETTINGS	((DWORD)-1)
+#define ENUM_REGISTRY_SETTINGS	((DWORD)-2)
+#define CDS_UPDATEREGISTRY	1
+#define CDS_TEST	2
+#define CDS_FULLSCREEN	4
+#define CDS_GLOBAL	8
+#define CDS_SET_PRIMARY	16
+#define CDS_RESET	0x40000000
+#define CDS_SETRECT	0x20000000
+#define CDS_NORESET	0x10000000
+#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 BST_CHECKED	1
+#define BST_INDETERMINATE	2
+#define BST_UNCHECKED	0
+#define BST_FOCUS	8
+#define BST_PUSHED	4
+#define MF_BYCOMMAND	0
+#define MF_BYPOSITION	1024
+#define MF_UNCHECKED	0
+#define MF_HILITE	128
+#define MF_UNHILITE	0
+#define CWP_ALL 0
+#define CWP_SKIPINVISIBLE	1
+#define CWP_SKIPDISABLED	2
+#define CWP_SKIPTRANSPARENT	4
+#define IMAGE_BITMAP	0
+#define IMAGE_ICON	1
+#define IMAGE_CURSOR	2
+#define IMAGE_ENHMETAFILE	3
+#define DF_ALLOWOTHERACCOUNTHOOK	1
+#define DESKTOP_CREATEMENU	4
+#define DESKTOP_CREATEWINDOW	2
+#define DESKTOP_ENUMERATE	64
+#define DESKTOP_HOOKCONTROL	8
+#define DESKTOP_JOURNALPLAYBACK	32
+#define DESKTOP_JOURNALRECORD	16
+#define DESKTOP_READOBJECTS	1
+#define DESKTOP_SWITCHDESKTOP	256
+#define DESKTOP_WRITEOBJECTS	128
+#define CW_USEDEFAULT	0x80000000
+#define WS_BORDER	0x800000
+#define WS_CAPTION	0xc00000
+#define WS_CHILD	0x40000000
+#define WS_CHILDWINDOW	0x40000000
+#define WS_CLIPCHILDREN 0x2000000
+#define WS_CLIPSIBLINGS 0x4000000
+#define WS_DISABLED	0x8000000
+#define WS_DLGFRAME	0x400000
+#define WS_GROUP	0x20000
+#define WS_HSCROLL	0x100000
+#define WS_ICONIC	0x20000000
+#define WS_MAXIMIZE	0x1000000
+#define WS_MAXIMIZEBOX	0x10000
+#define WS_MINIMIZE	0x20000000
+#define WS_MINIMIZEBOX	0x20000
+#define WS_OVERLAPPED	0
+#define WS_OVERLAPPEDWINDOW	0xcf0000
+#define WS_POPUP	0x80000000
+#define WS_POPUPWINDOW	0x80880000
+#define WS_SIZEBOX	0x40000
+#define WS_SYSMENU	0x80000
+#define WS_TABSTOP	0x10000
+#define WS_THICKFRAME	0x40000
+#define WS_TILED	0
+#define WS_TILEDWINDOW	0xcf0000
+#define WS_VISIBLE	0x10000000
+#define WS_VSCROLL	0x200000
+#define MDIS_ALLCHILDSTYLES	1
+#define BS_3STATE	5
+#define BS_AUTO3STATE	6
+#define BS_AUTOCHECKBOX	3
+#define BS_AUTORADIOBUTTON	9
+#define BS_BITMAP	128
+#define BS_BOTTOM	0x800
+#define BS_CENTER	0x300
+#define BS_CHECKBOX	2
+#define BS_DEFPUSHBUTTON	1
+#define BS_GROUPBOX	7
+#define BS_ICON	64
+#define BS_LEFT	256
+#define BS_LEFTTEXT	32
+#define BS_MULTILINE	0x2000
+#define BS_NOTIFY	0x4000
+#define BS_OWNERDRAW	0xb
+#define BS_PUSHBUTTON	0
+#define BS_PUSHLIKE	4096
+#define BS_RADIOBUTTON 4
+#define BS_RIGHT	512
+#define BS_RIGHTBUTTON	32
+#define BS_TEXT	0
+#define BS_TOP	0x400
+#define BS_USERBUTTON	8
+#define BS_VCENTER	0xc00
+#define BS_FLAT	0x8000
+#define CBS_AUTOHSCROLL	64
+#define CBS_DISABLENOSCROLL	0x800
+#define CBS_DROPDOWN	2
+#define CBS_DROPDOWNLIST	3
+#define CBS_HASSTRINGS	512
+#define CBS_LOWERCASE	0x4000
+#define CBS_NOINTEGRALHEIGHT	0x400
+#define CBS_OEMCONVERT	128
+#define CBS_OWNERDRAWFIXED	16
+#define CBS_OWNERDRAWVARIABLE	32
+#define CBS_SIMPLE	1
+#define CBS_SORT	256
+#define CBS_UPPERCASE	0x2000
+#define ES_AUTOHSCROLL	128
+#define ES_AUTOVSCROLL	64
+#define ES_CENTER	1
+#define ES_LEFT	0
+#define ES_LOWERCASE 16
+#define ES_MULTILINE 4
+#define ES_NOHIDESEL 256
+#define ES_NUMBER 0x2000
+#define ES_OEMCONVERT 0x400
+#define ES_PASSWORD 32
+#define ES_READONLY 0x800
+#define ES_RIGHT 2
+#define ES_UPPERCASE 8
+#define ES_WANTRETURN 4096
+#define LBS_DISABLENOSCROLL 4096
+#define LBS_EXTENDEDSEL 0x800
+#define LBS_HASSTRINGS 64
+#define LBS_MULTICOLUMN 512
+#define LBS_MULTIPLESEL 8
+#define LBS_NODATA	0x2000
+#define LBS_NOINTEGRALHEIGHT 256
+#define LBS_NOREDRAW 4
+#define LBS_NOSEL 0x4000
+#define LBS_NOTIFY 1
+#define LBS_OWNERDRAWFIXED 16
+#define LBS_OWNERDRAWVARIABLE 32
+#define LBS_SORT 2
+#define LBS_STANDARD 0xa00003
+#define LBS_USETABSTOPS 128
+#define LBS_WANTKEYBOARDINPUT 0x400
+#define SBS_BOTTOMALIGN 4
+#define SBS_HORZ 0
+#define SBS_LEFTALIGN 2
+#define SBS_RIGHTALIGN 4
+#define SBS_SIZEBOX 8
+#define SBS_SIZEBOXBOTTOMRIGHTALIGN 4
+#define SBS_SIZEBOXTOPLEFTALIGN 2
+#define SBS_SIZEGRIP 16
+#define SBS_TOPALIGN 2
+#define SBS_VERT 1
+#define SS_BITMAP 14
+#define SS_BLACKFRAME 7
+#define SS_BLACKRECT 4
+#define SS_CENTER 1
+#define SS_CENTERIMAGE 512
+#define SS_ENHMETAFILE 15
+#define SS_ETCHEDFRAME 18
+#define SS_ETCHEDHORZ 16
+#define SS_ETCHEDVERT 17
+#define SS_GRAYFRAME 8
+#define SS_GRAYRECT 5
+#define SS_ICON 3
+#define SS_LEFT 0
+#define SS_LEFTNOWORDWRAP 0xc
+#define SS_NOPREFIX 128
+#define SS_NOTIFY 256
+#define SS_OWNERDRAW 0xd
+#define SS_REALSIZEIMAGE 0x800
+#define SS_RIGHT 2
+#define SS_RIGHTJUST 0x400
+#define SS_SIMPLE 11
+#define SS_SUNKEN 4096
+#define SS_WHITEFRAME 9
+#define SS_WHITERECT	6
+#define SS_USERITEM	10
+#define SS_TYPEMASK	0x0000001FL
+#define SS_ENDELLIPSIS	0x00004000L
+#define SS_PATHELLIPSIS	0x00008000L
+#define SS_WORDELLIPSIS	0x0000C000L
+#define SS_ELLIPSISMASK 0x0000C000L
+#define DS_3DLOOK 4
+#define DS_ABSALIGN 1
+#define DS_CENTER 0x800
+#define DS_CENTERMOUSE 4096
+#define DS_CONTEXTHELP 0x2000
+#define DS_CONTROL 0x400
+#define DS_FIXEDSYS 8
+#define DS_LOCALEDIT 32
+#define DS_MODALFRAME 128
+#define DS_NOFAILCREATE 16
+#define DS_NOIDLEMSG	256
+#define DS_SETFONT 64
+#define DS_SETFOREGROUND 512
+#define DS_SYSMODAL 2
+#define DS_SHELLFONT (DS_SETFONT | DS_FIXEDSYS)
+#define WS_EX_ACCEPTFILES 16
+#define WS_EX_APPWINDOW	0x40000
+#define WS_EX_CLIENTEDGE 512
+#define WS_EX_COMPOSITED 0x2000000 /* XP */
+#define WS_EX_CONTEXTHELP 0x400
+#define WS_EX_CONTROLPARENT 0x10000
+#define WS_EX_DLGMODALFRAME 1
+#define WS_EX_LAYERED 0x80000   /* w2k */
+#define WS_EX_LAYOUTRTL 0x400000 /* w98, w2k */
+#define WS_EX_LEFT	0
+#define WS_EX_LEFTSCROLLBAR	0x4000
+#define WS_EX_LTRREADING	0
+#define WS_EX_MDICHILD	64
+#define WS_EX_NOACTIVATE 0x8000000 /* w2k */
+#define WS_EX_NOINHERITLAYOUT 0x100000 /* w2k */
+#define WS_EX_NOPARENTNOTIFY	4
+#define WS_EX_OVERLAPPEDWINDOW	0x300
+#define WS_EX_PALETTEWINDOW	0x188
+#define WS_EX_RIGHT	0x1000
+#define WS_EX_RIGHTSCROLLBAR	0
+#define WS_EX_RTLREADING	0x2000
+#define WS_EX_STATICEDGE	0x20000
+#define WS_EX_TOOLWINDOW	128
+#define WS_EX_TOPMOST	8
+#define WS_EX_TRANSPARENT	32
+#define WS_EX_WINDOWEDGE	256
+#define WINSTA_ALL_ACCESS	895
+#define WINSTA_ACCESSCLIPBOARD	4
+#define WINSTA_ACCESSGLOBALATOMS	32
+#define WINSTA_CREATEDESKTOP	8
+#define WINSTA_ENUMDESKTOPS	1
+#define WINSTA_ENUMERATE	256
+#define WINSTA_EXITWINDOWS	64
+#define WINSTA_READATTRIBUTES	2
+#define WINSTA_READSCREEN	512
+#define WINSTA_WRITEATTRIBUTES	16
+#define DDL_READWRITE	0
+#define DDL_READONLY	1
+#define DDL_HIDDEN	2
+#define DDL_SYSTEM	4
+#define DDL_DIRECTORY	16
+#define DDL_ARCHIVE	32
+#define DDL_POSTMSGS	8192
+#define DDL_DRIVES	16384
+#define DDL_EXCLUSIVE	32768
+#define DC_ACTIVE	0x00000001
+#define DC_SMALLCAP	0x00000002
+#define DC_ICON	0x00000004
+#define DC_TEXT	0x00000008
+#define DC_INBUTTON	0x00000010
+#if (_WIN32_WINDOWS >= 0x0410 || _WIN32_WINNT >= 0x0500)
+#define DC_GRADIENT	0x00000020
+#endif
+#if (_WIN32_WINNT >= 0x0501)
+#define DC_BUTTONS	0x00001000
+#endif
+/* Where are these documented? */
+#define DC_CAPTION	(DC_ICON|DC_TEXT|DC_BUTTONS)
+#define DC_NC	(DC_CAPTION|DC_FRAME)
+
+#define BDR_RAISEDOUTER	1
+#define BDR_SUNKENOUTER	2
+#define BDR_RAISEDINNER	4
+#define BDR_SUNKENINNER	8
+#define BDR_OUTER	3
+#define BDR_INNER	0xc
+#define BDR_RAISED	5
+#define BDR_SUNKEN	10
+#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	1
+#define BF_TOP	2
+#define BF_RIGHT	4
+#define BF_BOTTOM	8
+#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	16
+#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	0x800
+#define BF_SOFT	0x1000
+#define BF_ADJUST	0x2000
+#define BF_FLAT	0x4000
+#define BF_MONO	0x8000
+#define DFC_CAPTION	1
+#define DFC_MENU	2
+#define DFC_SCROLL	3
+#define DFC_BUTTON	4
+#if (WINVER >= 0x0500)
+#define DFC_POPUPMENU 5
+#endif /* WINVER >= 0x0500 */
+#define DFCS_CAPTIONCLOSE	0
+#define DFCS_CAPTIONMIN	1
+#define DFCS_CAPTIONMAX	2
+#define DFCS_CAPTIONRESTORE	3
+#define DFCS_CAPTIONHELP	4
+#define DFCS_MENUARROW	0
+#define DFCS_MENUCHECK	1
+#define DFCS_MENUBULLET	2
+#define DFCS_MENUARROWRIGHT	4
+#define DFCS_SCROLLUP	0
+#define DFCS_SCROLLDOWN	1
+#define DFCS_SCROLLLEFT	2
+#define DFCS_SCROLLRIGHT	3
+#define DFCS_SCROLLCOMBOBOX	5
+#define DFCS_SCROLLSIZEGRIP	8
+#define DFCS_SCROLLSIZEGRIPRIGHT	16
+#define DFCS_BUTTONCHECK	0
+#define DFCS_BUTTONRADIOIMAGE	1
+#define DFCS_BUTTONRADIOMASK	2
+#define DFCS_BUTTONRADIO	4
+#define DFCS_BUTTON3STATE	8
+#define DFCS_BUTTONPUSH	16
+#define DFCS_INACTIVE	256
+#define DFCS_PUSHED	512
+#define DFCS_CHECKED	1024
+#if (WINVER >= 0x0500)
+#define DFCS_TRANSPARENT	0x800
+#define DFCS_HOT	0x1000
+#endif
+#define DFCS_ADJUSTRECT	0x2000
+#define DFCS_FLAT	0x4000
+#define DFCS_MONO	0x8000
+#define DST_COMPLEX	0
+#define DST_TEXT	1
+#define DST_PREFIXTEXT	2
+#define DST_ICON	3
+#define DST_BITMAP	4
+#define DSS_NORMAL	0
+#define DSS_UNION	16
+#define DSS_DISABLED	32
+#define DSS_MONO	128
+#define DSS_RIGHT	0x8000
+#define DT_BOTTOM	8
+#define DT_CALCRECT	1024
+#define DT_CENTER	1
+#define DT_EDITCONTROL	8192
+#define DT_END_ELLIPSIS	32768
+#define DT_PATH_ELLIPSIS	16384
+#define DT_WORD_ELLIPSIS 0x40000
+#define DT_EXPANDTABS	64
+#define DT_EXTERNALLEADING	512
+#define DT_LEFT	0
+#define DT_MODIFYSTRING	65536
+#define DT_NOCLIP	256
+#define DT_NOPREFIX	2048
+#define DT_RIGHT	2
+#define DT_RTLREADING	131072
+#define DT_SINGLELINE	32
+#define DT_TABSTOP	128
+#define DT_TOP	0
+#define DT_VCENTER	4
+#define DT_WORDBREAK	16
+#define DT_INTERNAL	4096
+#define WB_ISDELIMITER	2
+#define WB_LEFT	0
+#define WB_RIGHT	1
+#define SB_HORZ	0
+#define SB_VERT	1
+#define SB_CTL	2
+#define SB_BOTH	3
+#define ESB_DISABLE_BOTH	3
+#define ESB_DISABLE_DOWN	2
+#define ESB_DISABLE_LEFT	1
+#define ESB_DISABLE_LTUP	1
+#define ESB_DISABLE_RIGHT	2
+#define ESB_DISABLE_RTDN	2
+#define ESB_DISABLE_UP	1
+#define ESB_ENABLE_BOTH	0
+#define SB_LINEUP	0
+#define SB_LINEDOWN	1
+#define SB_LINELEFT	0
+#define SB_LINERIGHT	1
+#define SB_PAGEUP	2
+#define SB_PAGEDOWN	3
+#define SB_PAGELEFT	2
+#define SB_PAGERIGHT	3
+#define SB_THUMBPOSITION	4
+#define SB_THUMBTRACK	5
+#define SB_ENDSCROLL	8
+#define SB_LEFT	6
+#define SB_RIGHT	7
+#define SB_BOTTOM	7
+#define SB_TOP	6
+#define IS_INTRESOURCE(i) (((ULONG_PTR)(i) >> 16) == 0)
+#define MAKEINTRESOURCEA(i) (LPSTR)((DWORD)((WORD)(i)))
+#define MAKEINTRESOURCEW(i) (LPWSTR)((DWORD)((WORD)(i)))
+#ifndef XFree86Server
+# define RT_CURSOR MAKEINTRESOURCE(1)
+# define RT_FONT MAKEINTRESOURCE(8)
+#endif /* ndef XFree86Server */
+#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_ACCELERATOR MAKEINTRESOURCE(9)
+#define RT_RCDATA MAKEINTRESOURCE(10)
+#define RT_MESSAGETABLE MAKEINTRESOURCE(11)
+#define DIFFERENCE 11
+#define RT_GROUP_CURSOR MAKEINTRESOURCE((DWORD)RT_CURSOR+DIFFERENCE)
+#define RT_GROUP_ICON MAKEINTRESOURCE((DWORD)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)
+#ifndef RC_INVOKED
+#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)
+#else
+#define RT_MANIFEST 24
+#define CREATEPROCESS_MANIFEST_RESOURCE_ID  1
+#define ISOLATIONAWARE_MANIFEST_RESOURCE_ID 2
+#define ISOLATIONAWARE_NOSTATICIMPORT_MANIFEST_RESOURCE_ID 3
+#endif
+#define EWX_FORCE 4
+#define EWX_LOGOFF 0
+#define EWX_POWEROFF 8
+#define EWX_REBOOT 2
+#define EWX_SHUTDOWN 1
+#if (_WIN32_WINNT >= 0x0500)
+#define EWX_FORCEIFHUNG 16
+#endif
+#define CS_BYTEALIGNCLIENT 4096
+#define CS_BYTEALIGNWINDOW 8192
+#define CS_KEYCVTWINDOW 4
+#define CS_NOKEYCVT 256
+#define CS_CLASSDC 64
+#define CS_DBLCLKS 8
+#define CS_GLOBALCLASS 16384
+#define CS_HREDRAW 2
+#define CS_NOCLOSE 512
+#define CS_OWNDC 32
+#define CS_PARENTDC 128
+#define CS_SAVEBITS 2048
+#define CS_VREDRAW 1
+#define CS_IME 0x10000
+#if (_WIN32_WINNT >= 0x0501)
+#define CS_DROPSHADOW 0x20000
+#endif
+#define GCW_ATOM (-32)
+#define GCL_CBCLSEXTRA (-20)
+#define GCL_CBWNDEXTRA (-18)
+#define GCL_HBRBACKGROUND (-10)
+#define GCL_HCURSOR (-12)
+#define GCL_HICON (-14)
+#define GCL_HICONSM (-34)
+#define GCL_HMODULE (-16)
+#define GCL_MENUNAME (-8)
+#define GCL_STYLE (-26)
+#define GCL_WNDPROC (-24)
+#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)
+#if 0
+    /* This is supposed to be defined by the program using it not defined
+       in the w32api headers.  I've left it here for documentation purposes.
+    */
+#ifndef IDC_STATIC  /* May be predefined by resource compiler. */
+#define IDC_STATIC (-1)
+#endif
+#endif
+#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_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)
+#define IDC_ICON MAKEINTRESOURCE(32641)
+#define IDC_SIZE MAKEINTRESOURCE(32640)
+#ifndef RC_INVOKED
+#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)
+#else
+#define IDI_APPLICATION 32512
+#define IDI_HAND 32513
+#define IDI_QUESTION 32514
+#define IDI_EXCLAMATION 32515
+#define IDI_ASTERISK 32516
+#define IDI_WINLOGO 32517
+#endif
+#define IDI_WARNING IDI_EXCLAMATION
+#define IDI_ERROR IDI_HAND
+#define IDI_INFORMATION IDI_ASTERISK
+#define MIIM_STATE 1
+#define MIIM_ID 2
+#define MIIM_SUBMENU 4
+#define MIIM_CHECKMARKS 8
+#define MIIM_TYPE 16
+#define MIIM_DATA 32
+#define MIIM_STRING 64
+#define MIIM_BITMAP 128
+#define MIIM_FTYPE 256
+#if (WINVER >= 0x0500)
+#define MIM_MAXHEIGHT 1
+#define MIM_BACKGROUND 2
+#define MIM_HELPID 4
+#define MIM_MENUDATA 8
+#define MIM_STYLE 16
+#define MIM_APPLYTOSUBMENUS 0x80000000L
+#define MNS_NOCHECK 0x80000000
+#define MNS_MODELESS 0x40000000
+#define MNS_DRAGDROP 0x20000000
+#define MNS_AUTODISMISS 0x10000000
+#define MNS_NOTIFYBYPOS 0x08000000
+#define MNS_CHECKORBMP 0x04000000
+#endif
+#define MFT_BITMAP 4
+#define MFT_MENUBARBREAK 32
+#define MFT_MENUBREAK 64
+#define MFT_OWNERDRAW 256
+#define MFT_RADIOCHECK 512
+#define MFT_RIGHTJUSTIFY 0x4000
+#define MFT_SEPARATOR 0x800
+#define MFT_RIGHTORDER 0x2000L
+#define MFT_STRING 0
+#define MFS_CHECKED 8
+#define MFS_DEFAULT 4096
+#define MFS_DISABLED 3
+#define MFS_ENABLED 0
+#define MFS_GRAYED 3
+#define MFS_HILITE 128
+#define MFS_UNCHECKED 0
+#define MFS_UNHILITE 0
+#define GW_HWNDNEXT 2
+#define GW_HWNDPREV 3
+#define GW_CHILD 5
+#define GW_HWNDFIRST 0
+#define GW_HWNDLAST 1
+#define GW_OWNER 4
+#define SW_HIDE 0
+#define SW_NORMAL 1
+#define SW_SHOWNORMAL 1
+#define SW_SHOWMINIMIZED 2
+#define SW_MAXIMIZE 3
+#define SW_SHOWMAXIMIZED 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 MB_USERICON 128
+#define MB_ICONASTERISK 64
+#define MB_ICONEXCLAMATION 0x30
+#define MB_ICONWARNING 0x30
+#define MB_ICONERROR 16
+#define MB_ICONHAND 16
+#define MB_ICONQUESTION 32
+#define MB_OK 0
+#define MB_ABORTRETRYIGNORE 2
+#define MB_APPLMODAL 0
+#define MB_DEFAULT_DESKTOP_ONLY 0x20000
+#define MB_HELP 0x4000
+#define MB_RIGHT 0x80000
+#define MB_RTLREADING 0x100000
+#define MB_TOPMOST 0x40000
+#define MB_DEFBUTTON1 0
+#define MB_DEFBUTTON2 256
+#define MB_DEFBUTTON3 512
+#define MB_DEFBUTTON4 0x300
+#define MB_ICONINFORMATION 64
+#define MB_ICONSTOP 16
+#define MB_OKCANCEL 1
+#define MB_RETRYCANCEL 5
+#ifdef _WIN32_WINNT
+#if (_WIN32_WINNT >= 0x0400)
+#define MB_SERVICE_NOTIFICATION 0x00200000
+#else
+#define MB_SERVICE_NOTIFICATION 0x00040000
+#endif
+#define MB_SERVICE_NOTIFICATION_NT3X 0x00040000
+#endif
+#define MB_SETFOREGROUND 0x10000
+#define MB_SYSTEMMODAL 4096
+#define MB_TASKMODAL 0x2000
+#define MB_YESNO 4
+#define MB_YESNOCANCEL 3
+#define MB_ICONMASK 240
+#define MB_DEFMASK 3840
+#define MB_MODEMASK 0x00003000
+#define MB_MISCMASK 0x0000C000
+#define MB_NOFOCUS 0x00008000
+#define MB_TYPEMASK 15
+#define MB_TOPMOST 0x40000
+#if (WINVER >= 0x0500)
+#define MB_CANCELTRYCONTINUE 6
+#endif
+
+#define IDOK 1
+#define IDCANCEL 2
+#define IDABORT 3
+#define IDRETRY 4
+#define IDIGNORE 5
+#define IDYES 6
+#define IDNO 7
+#if (WINVER >= 0x0400)
+#define IDCLOSE 8
+#define IDHELP 9
+#endif
+#if (WINVER >= 0x0500)
+#define IDTRYAGAIN 10
+#define IDCONTINUE 11
+#endif
+
+#define GWL_EXSTYLE (-20)
+#define GWL_STYLE (-16)
+#define GWL_WNDPROC (-4)
+#define GWLP_WNDPROC (-4)
+#define GWL_HINSTANCE (-6)
+#define GWLP_HINSTANCE (-6)
+#define GWL_HWNDPARENT (-8)
+#define GWLP_HWNDPARENT (-8)
+#define GWL_ID (-12)
+#define GWLP_ID (-12)
+#define GWL_USERDATA (-21)
+#define GWLP_USERDATA (-21)
+#define DWL_DLGPROC 4
+#define DWLP_DLGPROC 4
+#define DWL_MSGRESULT 0
+#define DWLP_MSGRESULT 0
+#define DWL_USER 8
+#define DWLP_USER 8
+#if (_WIN32_WINNT >= 0x0501)
+#define QS_ALLEVENTS 1215
+#define QS_ALLINPUT 1279
+#else
+#define QS_ALLEVENTS 191
+#define QS_ALLINPUT 255
+#endif
+#define QS_ALLPOSTMESSAGE 256
+#define QS_HOTKEY 128
+#if (_WIN32_WINNT >= 0x0501)
+#define QS_INPUT 1031
+#else
+#define QS_INPUT 7
+#endif
+#define QS_KEY 1
+#define QS_MOUSE 6
+#define QS_MOUSEBUTTON 4
+#define QS_MOUSEMOVE 2
+#define QS_PAINT 32
+#define QS_POSTMESSAGE 8
+#if (_WIN32_WINNT >= 0x0501)
+#define QS_RAWINPUT 1024
+#endif
+#define QS_SENDMESSAGE 64
+#define QS_TIMER 16
+#define MWMO_WAITALL 1
+#define MWMO_ALERTABLE 2
+#define MWMO_INPUTAVAILABLE 4
+#define COLOR_3DDKSHADOW 21
+#define COLOR_3DFACE 15
+#define COLOR_3DHILIGHT 20
+#define COLOR_3DHIGHLIGHT 20
+#define COLOR_3DLIGHT 22
+#define COLOR_BTNHILIGHT 20
+#define COLOR_3DSHADOW 16
+#define COLOR_ACTIVEBORDER 10
+#define COLOR_ACTIVECAPTION 2
+#define COLOR_APPWORKSPACE 12
+#define COLOR_BACKGROUND 1
+#define COLOR_DESKTOP 1
+#define COLOR_BTNFACE 15
+#define COLOR_BTNHIGHLIGHT 20
+#define COLOR_BTNSHADOW 16
+#define COLOR_BTNTEXT 18
+#define COLOR_CAPTIONTEXT 9
+#define COLOR_GRAYTEXT 17
+#define COLOR_HIGHLIGHT 13
+#define COLOR_HIGHLIGHTTEXT 14
+#define COLOR_INACTIVEBORDER 11
+#define COLOR_INACTIVECAPTION 3
+#define COLOR_INACTIVECAPTIONTEXT 19
+#define COLOR_INFOBK 24
+#define COLOR_INFOTEXT 23
+#define COLOR_MENU 4
+#define COLOR_MENUTEXT 7
+#define COLOR_SCROLLBAR 0
+#define COLOR_WINDOW 5
+#define COLOR_WINDOWFRAME 6
+#define COLOR_WINDOWTEXT 8
+#define COLOR_HOTLIGHT 26
+#define COLOR_GRADIENTACTIVECAPTION 27
+#define COLOR_GRADIENTINACTIVECAPTION 28
+#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 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_CXFIXEDFRAME 7
+#define SM_CYDLGFRAME 8
+#define SM_CYFIXEDFRAME 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_CXSIZEFRAME 32
+#define SM_CXFRAME 32
+#define SM_CYSIZEFRAME 33
+#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_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
+#if (_WIN32_WINNT < 0x0400)
+#define SM_CMETRICS 76
+#else
+#define SM_CMETRICS 88
+#endif
+#define SM_REMOTESESSION 0X1000
+#define ARW_BOTTOMLEFT 0
+#define ARW_BOTTOMRIGHT 1
+#define ARW_HIDE 8
+#define ARW_TOPLEFT 2
+#define ARW_TOPRIGHT 3
+#define ARW_DOWN 4
+#define ARW_LEFT 0
+#define ARW_RIGHT 0
+#define ARW_UP 4
+#define UOI_FLAGS 1
+#define UOI_NAME 2
+#define UOI_TYPE 3
+#define UOI_USER_SID 4
+#define LR_DEFAULTCOLOR 0
+#define LR_MONOCHROME 1
+#define LR_COLOR 2
+#define LR_COPYRETURNORG 4
+#define LR_COPYDELETEORG 8
+#define LR_LOADFROMFILE 16
+#define LR_LOADTRANSPARENT 32
+#define LR_LOADREALSIZE 128
+#define LR_DEFAULTSIZE 0x0040
+#define LR_VGACOLOR 0x0080
+#define LR_LOADMAP3DCOLORS 4096
+#define LR_CREATEDIBSECTION 8192
+#define LR_COPYFROMRESOURCE 0x4000
+#define LR_SHARED 32768
+#define KEYEVENTF_EXTENDEDKEY 0x00000001
+#define KEYEVENTF_KEYUP 00000002
+#if (_WIN32_WINNT >= 0x0500)
+#define KEYEVENTF_UNICODE 0x00000004
+#define KEYEVENTF_SCANCODE 0x00000008
+#endif
+#define OBM_BTNCORNERS 32758
+#define OBM_BTSIZE 32761
+#define OBM_CHECK 32760
+#define OBM_CHECKBOXES 32759
+#define OBM_CLOSE 32754
+#define OBM_COMBO 32738
+#define OBM_DNARROW 32752
+#define OBM_DNARROWD 32742
+#define OBM_DNARROWI 32736
+#define OBM_LFARROW 32750
+#define OBM_LFARROWI 32734
+#define OBM_LFARROWD 32740
+#define OBM_MNARROW 32739
+#define OBM_OLD_CLOSE 32767
+#define OBM_OLD_DNARROW 32764
+#define OBM_OLD_LFARROW 32762
+#define OBM_OLD_REDUCE 32757
+#define OBM_OLD_RESTORE 32755
+#define OBM_OLD_RGARROW 32763
+#define OBM_OLD_UPARROW 32765
+#define OBM_OLD_ZOOM 32756
+#define OBM_REDUCE 32749
+#define OBM_REDUCED 32746
+#define OBM_RESTORE 32747
+#define OBM_RESTORED 32744
+#define OBM_RGARROW 32751
+#define OBM_RGARROWD 32741
+#define OBM_RGARROWI 32735
+#define OBM_SIZE 32766
+#define OBM_UPARROW 32753
+#define OBM_UPARROWD 32743
+#define OBM_UPARROWI 32737
+#define OBM_ZOOM 32748
+#define OBM_ZOOMD 32745
+#define OCR_NORMAL 32512
+#define OCR_IBEAM 32513
+#define OCR_WAIT 32514
+#define OCR_CROSS 32515
+#define OCR_UP 32516
+#define OCR_SIZE 32640
+#define OCR_ICON 32641
+#define OCR_SIZENWSE 32642
+#define OCR_SIZENESW 32643
+#define OCR_SIZEWE 32644
+#define OCR_SIZENS 32645
+#define OCR_SIZEALL 32646
+#define OCR_NO 32648
+#define OCR_APPSTARTING 32650
+#define OIC_SAMPLE 32512
+#define OIC_HAND 32513
+#define OIC_QUES 32514
+#define OIC_BANG 32515
+#define OIC_NOTE 32516
+#define OIC_WINLOGO 32517
+#define OIC_WARNING OIC_BANG
+#define OIC_ERROR OIC_HAND
+#define OIC_INFORMATION OIC_NOTE
+#define HELPINFO_MENUITEM 2
+#define HELPINFO_WINDOW 1
+#define MSGF_DIALOGBOX 0
+#define MSGF_MESSAGEBOX 1
+#define MSGF_MENU 2
+#define MSGF_MOVE 3
+#define MSGF_SIZE 4
+#define MSGF_SCROLLBAR 5
+#define MSGF_NEXTWINDOW 6
+#define MSGF_MAINLOOP 8
+#define MSGF_USER 4096
+#define MOUSEEVENTF_MOVE 0x00000001
+#define MOUSEEVENTF_LEFTDOWN 0x00000002
+#define MOUSEEVENTF_LEFTUP 0x00000004
+#define MOUSEEVENTF_RIGHTDOWN 0x00000008
+#define MOUSEEVENTF_RIGHTUP 0x00000010
+#define MOUSEEVENTF_MIDDLEDOWN 0x00000020
+#define MOUSEEVENTF_MIDDLEUP 0x00000040
+#define MOUSEEVENTF_ABSOLUTE 0x00008000
+#if (_WIN32_WINNT >= 0x0400)
+#define MOUSEEVENTF_WHEEL 0x00000800
+#endif
+#if (_WIN32_WINNT >= 0x0500)
+#define MOUSEEVENTF_XDOWN 0x00000080
+#define MOUSEEVENTF_XUP 0x00000100
+#endif
+/* Also in pbt.h */
+#if (_WIN32_WINNT >= 0x0400)
+#define PBT_APMQUERYSUSPEND 0
+#define PBT_APMQUERYSTANDBY 1
+#define PBT_APMQUERYSUSPENDFAILED 2
+#define PBT_APMQUERYSTANDBYFAILED 3
+#define PBT_APMSUSPEND 4
+#define PBT_APMSTANDBY 5
+#define PBT_APMRESUMECRITICAL 6
+#define PBT_APMRESUMESUSPEND 7
+#define PBT_APMRESUMESTANDBY 8
+#define PBT_APMBATTERYLOW 9
+#define PBT_APMPOWERSTATUSCHANGE 10
+#define PBT_APMOEMEVENT 11
+#define PBT_APMRESUMEAUTOMATIC 18
+#define PBTF_APMRESUMEFROMFAILURE 1
+#endif
+#if (_WIN32_WINNT >= 0x0600)
+#define PBT_POWERSETTINGCHANGE	32787
+#endif
+/* end pbt.h */
+
+#define PM_NOREMOVE 0
+#define PM_REMOVE 1
+#define PM_NOYIELD 2
+#if (_WIN32_WINNT >= 0x0500)
+# 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)
+#endif
+#define HWND_BROADCAST ((HWND)0xFFFF)
+#define HWND_BOTTOM ((HWND)1)
+#define HWND_NOTOPMOST ((HWND)(-2))
+#define HWND_TOP ((HWND)0)
+#define HWND_TOPMOST ((HWND)(-1))
+#define HWND_DESKTOP (HWND)0
+#if (_WIN32_WINNT >= 0x0500)
+#define HWND_MESSAGE ((HWND)(-3))
+#endif
+#define RDW_ERASE 4
+#define RDW_FRAME 1024
+#define RDW_INTERNALPAINT 2
+#define RDW_INVALIDATE 1
+#define RDW_NOERASE 32
+#define RDW_NOFRAME 2048
+#define RDW_NOINTERNALPAINT 16
+#define RDW_VALIDATE 8
+#define RDW_ERASENOW 512
+#define RDW_UPDATENOW 256
+#define RDW_ALLCHILDREN 128
+#define RDW_NOCHILDREN 64
+#define SMTO_ABORTIFHUNG 0x0002
+#define SMTO_BLOCK 0x0001
+#define SMTO_NORMAL 0x0000
+#if (_WIN32_WINNT >= 0x0500)
+#define SMTO_NOTIMEOUTIFNOTHUNG 0x0008
+#endif
+#define SIF_DISABLENOSCROLL 0x0008
+#define SIF_PAGE 0x0002
+#define SIF_POS 0x0004
+#define SIF_RANGE 0x0001
+#define SIF_TRACKPOS 0x0010
+#define SIF_ALL (SIF_PAGE|SIF_POS|SIF_RANGE|SIF_TRACKPOS)
+#define SWP_DRAWFRAME 0x0020
+#define SWP_FRAMECHANGED 0x0020
+#define SWP_HIDEWINDOW 0x0080
+#define SWP_NOACTIVATE 0x0010
+#define SWP_NOCOPYBITS 0x0100
+#define SWP_NOMOVE 0x0002
+#define SWP_NOSIZE 0x0001
+#define SWP_NOREDRAW 0x0008
+#define SWP_NOZORDER 0x0004
+#define SWP_SHOWWINDOW 0x0040
+#define SWP_NOOWNERZORDER 0x0200
+#define SWP_NOREPOSITION SWP_NOOWNERZORDER
+#define SWP_NOSENDCHANGING 0x0400
+#define SWP_DEFERERASE 0x2000
+#define SWP_ASYNCWINDOWPOS 0x4000
+#define HSHELL_ACTIVATESHELLWINDOW 3
+#define HSHELL_ENDTASK 10
+#define HSHELL_GETMINRECT 5
+#define HSHELL_LANGUAGE 8
+#define HSHELL_REDRAW 6
+#define HSHELL_TASKMAN 7
+#define HSHELL_WINDOWACTIVATED 4
+#define HSHELL_WINDOWCREATED 1
+#define HSHELL_WINDOWDESTROYED 2
+#if (_WIN32_WINNT >= 0x0500)
+#define HSHELL_ACCESSIBILITYSTATE 11
+#define HSHELL_APPCOMMAND 12
+#define HSHELL_RUDEAPPACTIVATED 32772
+#define HSHELL_FLASH 32774
+#endif
+#if (_WIN32_WINNT >= 0x0501)
+#define HSHELL_WINDOWREPLACED 13
+#define HSHELL_WINDOWREPLACING 14
+#endif
+#define SPI_GETACCESSTIMEOUT 0x003C
+#define SPI_GETACTIVEWINDOWTRACKING 0x1000
+#define SPI_GETACTIVEWNDTRKTIMEOUT 8194
+#define SPI_GETACTIVEWNDTRKZORDER 0x100C
+#define SPI_GETANIMATION 0x0048
+#define SPI_GETBEEP 0x0001
+#define SPI_GETBLOCKSENDINPUTRESETS 0x1026
+#define SPI_GETBORDER 0x0005
+#define SPI_GETCARETWIDTH 0x2006
+#define SPI_GETCOMBOBOXANIMATION 0x1004
+#define SPI_GETCURSORSHADOW 0x101A
+#define SPI_GETDEFAULTINPUTLANG 0x0059
+#define SPI_GETDESKWALLPAPER 0x0073
+#define SPI_GETDRAGFULLWINDOWS 0x0026
+#define SPI_GETFASTTASKSWITCH 0x0023
+#define SPI_GETFILTERKEYS 0x0032
+#define SPI_GETFONTSMOOTHING 0x004A
+#define SPI_GETFOREGROUNDFLASHCOUNT 0x2004
+#define SPI_GETFOREGROUNDLOCKTIMEOUT 0x2000
+#define SPI_GETGRADIENTCAPTIONS 0x1008
+#define SPI_GETGRIDGRANULARITY 0x0012
+#define SPI_GETHIGHCONTRAST 0x0042
+#define SPI_GETHOTTRACKING 0x100E
+#define SPI_GETICONMETRICS 0x002D
+#define SPI_GETICONTITLELOGFONT 0x001F
+#define SPI_GETICONTITLEWRAP 0x0019
+#define SPI_GETKEYBOARDCUES 0x100A
+#define SPI_GETKEYBOARDDELAY 0x0016
+#define SPI_GETKEYBOARDPREF 0x0044
+#define SPI_GETKEYBOARDSPEED 0x000A
+#define SPI_GETLISTBOXSMOOTHSCROLLING 0x1006
+#define SPI_GETLOWPOWERACTIVE 0x0053
+#define SPI_GETLOWPOWERTIMEOUT 0x004F
+#define SPI_GETMENUANIMATION 0x1002
+#define SPI_GETMENUDROPALIGNMENT 0x001B
+#define SPI_GETMENUFADE 0x1012
+#define SPI_GETMENUSHOWDELAY 0x006A
+#define SPI_GETMENUUNDERLINES SPI_GETKEYBOARDCUES
+#define SPI_GETMINIMIZEDMETRICS 0x002B
+#define SPI_GETMOUSE 0x0003
+#define SPI_GETMOUSEHOVERHEIGHT 0x0064
+#define SPI_GETMOUSEHOVERTIME 0x0066
+#define SPI_GETMOUSEHOVERWIDTH 0x0062
+#define SPI_GETMOUSEKEYS 0x0036
+#define SPI_GETMOUSESPEED 0x0070
+#define SPI_GETMOUSETRAILS 0x005E
+#define SPI_GETNONCLIENTMETRICS 0x0029
+#define SPI_GETPOWEROFFACTIVE 0x0054
+#define SPI_GETPOWEROFFTIMEOUT 0x0050
+#define SPI_GETSCREENREADER 0x0046
+#define SPI_GETSCREENSAVEACTIVE 0x0010
+#define SPI_GETSCREENSAVERRUNNING 0x0072
+#define SPI_GETSCREENSAVETIMEOUT 0x000E
+#define SPI_GETSELECTIONFADE 0x1014
+#define SPI_GETSERIALKEYS 0x003E
+#define SPI_GETSHOWIMEUI 0x006E
+#define SPI_GETSHOWSOUNDS 0x0038
+#define SPI_GETSNAPTODEFBUTTON 0x005F
+#define SPI_GETSOUNDSENTRY 0x0040
+#define SPI_GETSTICKYKEYS 0x003A
+#define SPI_GETTOGGLEKEYS 0x0034
+#define SPI_GETTOOLTIPANIMATION 0x1016
+#define SPI_GETTOOLTIPFADE 0x1018
+#define SPI_GETUIEFFECTS 0x103E
+#define SPI_GETWHEELSCROLLLINES 0x0068
+#define SPI_GETWINDOWSEXTENSION 0x005C
+#define SPI_GETWORKAREA 0x0030
+#define SPI_ICONHORIZONTALSPACING 0x000D
+#define SPI_ICONVERTICALSPACING 0x0018
+#define SPI_LANGDRIVER 0x000C
+#define SPI_SETACCESSTIMEOUT 0x003D
+#define SPI_SETACTIVEWINDOWTRACKING 0x1001
+#define SPI_SETACTIVEWNDTRKTIMEOUT 8195
+#define SPI_SETACTIVEWNDTRKZORDER 0x100D
+#define SPI_SETANIMATION 0x0049
+#define SPI_SETBEEP 0x0002
+#define SPI_SETBLOCKSENDINPUTRESETS 0x1027
+#define SPI_SETBORDER 0x0006
+#define SPI_SETCARETWIDTH 0x2007
+#define SPI_SETCOMBOBOXANIMATION 0x1005
+#define SPI_SETCURSORS 0x0057
+#define SPI_SETCURSORSHADOW 0x101B
+#define SPI_SETDEFAULTINPUTLANG 0x005A
+#define SPI_SETDESKPATTERN 0x0015
+#define SPI_SETDESKWALLPAPER 0x0014
+#define SPI_SETDOUBLECLICKTIME 0x0020
+#define SPI_SETDOUBLECLKHEIGHT 0x001E
+#define SPI_SETDOUBLECLKWIDTH 0x001D
+#define SPI_SETDRAGFULLWINDOWS 0x0025
+#define SPI_SETDRAGHEIGHT 0x004D
+#define SPI_SETDRAGWIDTH 0x004C
+#define SPI_SETFASTTASKSWITCH 0x0024
+#define SPI_SETFILTERKEYS 0x0033
+#define SPI_SETFONTSMOOTHING 0x004B
+#define SPI_SETFOREGROUNDFLASHCOUNT 0x2005
+#define SPI_SETFOREGROUNDLOCKTIMEOUT 0x2001
+#define SPI_SETGRADIENTCAPTIONS 0x1009
+#define SPI_SETGRIDGRANULARITY 0x0013
+#define SPI_SETHANDHELD 0x004E
+#define SPI_SETHIGHCONTRAST 0x0043
+#define SPI_SETHOTTRACKING 0x100F
+#define SPI_SETICONMETRICS 0x002E
+#define SPI_SETICONS 0x0058
+#define SPI_SETICONTITLELOGFONT 0x0022
+#define SPI_SETICONTITLEWRAP 0x001A
+#define SPI_SETKEYBOARDCUES 0x100B
+#define SPI_SETKEYBOARDDELAY 0x0017
+#define SPI_SETKEYBOARDPREF 0x0045
+#define SPI_SETKEYBOARDSPEED 0x000B
+#define SPI_SETLANGTOGGLE 0x005B
+#define SPI_SETLISTBOXSMOOTHSCROLLING 0x1007
+#define SPI_SETLOWPOWERACTIVE 0x0055
+#define SPI_SETLOWPOWERTIMEOUT 0x0051
+#define SPI_SETMENUANIMATION 0x1003
+#define SPI_SETMENUDROPALIGNMENT 0x001C
+#define SPI_SETMENUFADE 0x1013
+#define SPI_SETMENUSHOWDELAY 0x006B
+#define SPI_SETMENUUNDERLINES SPI_SETKEYBOARDCUES
+#define SPI_SETMINIMIZEDMETRICS 0x002C
+#define SPI_SETMOUSE 0x0004
+#define SPI_SETMOUSEBUTTONSWAP 0x0021
+#define SPI_SETMOUSEHOVERHEIGHT 0x0065
+#define SPI_SETMOUSEHOVERTIME 0x0067
+#define SPI_SETMOUSEHOVERWIDTH 0x0063
+#define SPI_SETMOUSEKEYS 0x0037
+#define SPI_SETMOUSESPEED 0x0071
+#define SPI_SETMOUSETRAILS 0x005D
+#define SPI_SETNONCLIENTMETRICS 0x002A
+#define SPI_SETPENWINDOWS 0x0031
+#define SPI_SETPOWEROFFACTIVE 0x0056
+#define SPI_SETPOWEROFFTIMEOUT 0x0052
+#define SPI_SETSCREENREADER 0x0047
+#define SPI_SETSCREENSAVEACTIVE 0x0011
+#define SPI_SETSCREENSAVERRUNNING 0x0061
+#define SPI_SETSCREENSAVETIMEOUT 0x000F
+#define SPI_SETSELECTIONFADE 0x1015
+#define SPI_SETSERIALKEYS 0x003F
+#define SPI_SETSHOWIMEUI 0x006F
+#define SPI_SETSHOWSOUNDS 0x0039
+#define SPI_SETSNAPTODEFBUTTON 0x0060
+#define SPI_SETSOUNDSENTRY 0x0041
+#define SPI_SETSTICKYKEYS 0x003B
+#define SPI_SETTOGGLEKEYS 0x0035
+#define SPI_SETTOOLTIPANIMATION 0x1017
+#define SPI_SETTOOLTIPFADE 0x1019
+#define SPI_SETUIEFFECTS 0x103F
+#define SPI_SETWHEELSCROLLLINES 0x0069
+#define SPI_SETWORKAREA 0x002F
+#if (_WIN32_WINNT >= 0x0501)
+#define SPI_GETDROPSHADOW 0x1024
+#define SPI_GETFLATMENU 0x1022
+#define SPI_GETFOCUSBORDERHEIGHT 0x2010
+#define SPI_GETFOCUSBORDERWIDTH 0x200E
+#define SPI_GETFONTSMOOTHINGCONTRAST 0x200C
+#define SPI_GETFONTSMOOTHINGTYPE 0x200A
+#define SPI_GETMOUSECLICKLOCK 0x101E
+#define SPI_GETMOUSECLICKLOCKTIME 0x2008
+#define SPI_GETMOUSESONAR 0x101C
+#define SPI_GETMOUSEVANISH 0x1020
+#define SPI_SETDROPSHADOW 0x1025
+#define SPI_SETFLATMENU 0x1023
+#define SPI_SETFOCUSBORDERHEIGHT 0x2011
+#define SPI_SETFOCUSBORDERWIDTH 0x200F
+#define SPI_SETFONTSMOOTHINGCONTRAST 0x200D
+#define SPI_SETFONTSMOOTHINGTYPE 0x200B
+#define SPI_SETMOUSECLICKLOCK 0x101F
+#define SPI_SETMOUSECLICKLOCKTIME 0x2009
+#define SPI_SETMOUSESONAR 0x101D
+#define SPI_SETMOUSEVANISH 0x1021
+#endif
+#define SPIF_UPDATEINIFILE 0x0001
+#define SPIF_SENDCHANGE 0x0002
+#define SPIF_SENDWININICHANGE SPIF_SENDCHANGE
+#define ATF_ONOFFFEEDBACK 2
+#define ATF_TIMEOUTON 1
+#define WM_APP 32768
+#define WM_ACTIVATE 6
+#define WM_ACTIVATEAPP 28
+/* FIXME/CHECK: Are WM_AFX{FIRST,LAST} valid for WINVER < 0x400? */
+#define WM_AFXFIRST 864
+#define WM_AFXLAST 895
+#define WM_ASKCBFORMATNAME 780
+#define WM_CANCELJOURNAL 75
+#define WM_CANCELMODE 31
+#define WM_CAPTURECHANGED 533
+#define WM_CHANGECBCHAIN 781
+#define WM_CHAR 258
+#define WM_CHARTOITEM 47
+#define WM_CHILDACTIVATE 34
+#define WM_CLEAR 771
+#define WM_CLOSE 16
+#define WM_COMMAND 273
+#define WM_COMMNOTIFY 68		/* obsolete */
+#define WM_COMPACTING 65
+#define WM_COMPAREITEM 57
+#define WM_CONTEXTMENU 123
+#define WM_COPY 769
+#define WM_COPYDATA 74
+#define WM_CREATE 1
+#define WM_CTLCOLORBTN 309
+#define WM_CTLCOLORDLG 310
+#define WM_CTLCOLOREDIT 307
+#define WM_CTLCOLORLISTBOX 308
+#define WM_CTLCOLORMSGBOX 306
+#define WM_CTLCOLORSCROLLBAR 311
+#define WM_CTLCOLORSTATIC 312
+#define WM_CUT 768
+#define WM_DEADCHAR 259
+#define WM_DELETEITEM 45
+#define WM_DESTROY 2
+#define WM_DESTROYCLIPBOARD 775
+#define WM_DEVICECHANGE 537
+#define WM_DEVMODECHANGE 27
+#define WM_DISPLAYCHANGE 126
+#define WM_DRAWCLIPBOARD 776
+#define WM_DRAWITEM 43
+#define WM_DROPFILES 563
+#define WM_ENABLE 10
+#define WM_ENDSESSION 22
+#define WM_ENTERIDLE 289
+#define WM_ENTERMENULOOP 529
+#define WM_ENTERSIZEMOVE 561
+#define WM_ERASEBKGND 20
+#define WM_EXITMENULOOP 530
+#define WM_EXITSIZEMOVE 562
+#define WM_FONTCHANGE 29
+#define WM_GETDLGCODE 135
+#define WM_GETFONT 49
+#define WM_GETHOTKEY 51
+#define WM_GETICON 127
+#define WM_GETMINMAXINFO 36
+#define WM_GETTEXT 13
+#define WM_GETTEXTLENGTH 14
+/* FIXME/CHECK: Are WM_HANDHEL{FIRST,LAST} valid for WINVER < 0x400? */
+#define WM_HANDHELDFIRST 856
+#define WM_HANDHELDLAST 863
+#define WM_HELP 83
+#define WM_HOTKEY 786
+#define WM_HSCROLL 276
+#define WM_HSCROLLCLIPBOARD 782
+#define WM_ICONERASEBKGND 39
+#define WM_INITDIALOG 272
+#define WM_INITMENU 278
+#define WM_INITMENUPOPUP 279
+#if (_WIN32_WINNT >= 0x0501)
+#define WM_INPUT 0x00FF
+#endif
+#define WM_INPUTLANGCHANGE 81
+#define WM_INPUTLANGCHANGEREQUEST 80
+#define WM_KEYDOWN 256
+#define WM_KEYUP 257
+#define WM_KILLFOCUS 8
+#define WM_MDIACTIVATE 546
+#define WM_MDICASCADE 551
+#define WM_MDICREATE 544
+#define WM_MDIDESTROY 545
+#define WM_MDIGETACTIVE 553
+#define WM_MDIICONARRANGE 552
+#define WM_MDIMAXIMIZE 549
+#define WM_MDINEXT 548
+#define WM_MDIREFRESHMENU 564
+#define WM_MDIRESTORE 547
+#define WM_MDISETMENU 560
+#define WM_MDITILE 550
+#define WM_MEASUREITEM 44
+#if (WINVER >= 0x0500)
+#define WM_GETOBJECT 0x003D
+#define WM_CHANGEUISTATE 0x0127
+#define WM_UPDATEUISTATE 0x0128
+#define WM_QUERYUISTATE 0x0129
+#define WM_UNINITMENUPOPUP 0x0125
+#define WM_MENURBUTTONUP 290
+#define WM_MENUCOMMAND 0x0126
+#define WM_MENUGETOBJECT 0x0124
+#define WM_MENUDRAG 0x0123
+#define WM_APPCOMMAND 0x0319
+#endif
+#define WM_MENUCHAR 288
+#define WM_MENUSELECT 287
+#define WM_NEXTMENU 531
+#define WM_MOVE 3
+#define WM_MOVING 534
+#define WM_NCACTIVATE 134
+#define WM_NCCALCSIZE 131
+#define WM_NCCREATE 129
+#define WM_NCDESTROY 130
+#define WM_NCHITTEST 132
+#define WM_NCLBUTTONDBLCLK 163
+#define WM_NCLBUTTONDOWN 161
+#define WM_NCLBUTTONUP 162
+#define WM_NCMBUTTONDBLCLK 169
+#define WM_NCMBUTTONDOWN 167
+#define WM_NCMBUTTONUP 168
+#if (_WIN32_WINNT >= 0x0500)
+#define WM_NCXBUTTONDOWN 171
+#define WM_NCXBUTTONUP 172
+#define WM_NCXBUTTONDBLCLK 173
+#define WM_NCMOUSEHOVER 0x02A0
+#define WM_NCMOUSELEAVE 0x02A2
+#endif
+#define WM_NCMOUSEMOVE 160
+#define WM_NCPAINT 133
+#define WM_NCRBUTTONDBLCLK 166
+#define WM_NCRBUTTONDOWN 164
+#define WM_NCRBUTTONUP 165
+#define WM_NEXTDLGCTL 40
+#define WM_NEXTMENU 531
+#define WM_NOTIFY 78
+#define WM_NOTIFYFORMAT 85
+#define WM_NULL 0
+#define WM_PAINT 15
+#define WM_PAINTCLIPBOARD 777
+#define WM_PAINTICON 38
+#define WM_PALETTECHANGED 785
+#define WM_PALETTEISCHANGING 784
+#define WM_PARENTNOTIFY 528
+#define WM_PASTE 770
+#define WM_PENWINFIRST 896
+#define WM_PENWINLAST 911
+#define WM_POWER 72
+#define WM_POWERBROADCAST 536
+#define WM_PRINT 791
+#define WM_PRINTCLIENT 792
+#define WM_QUERYDRAGICON 55
+#define WM_QUERYENDSESSION 17
+#define WM_QUERYNEWPALETTE 783
+#define WM_QUERYOPEN 19
+#define WM_QUEUESYNC 35
+#define WM_QUIT 18
+#define WM_RENDERALLFORMATS 774
+#define WM_RENDERFORMAT 773
+#define WM_SETCURSOR 32
+#define WM_SETFOCUS 7
+#define WM_SETFONT 48
+#define WM_SETHOTKEY 50
+#define WM_SETICON 128
+#define WM_SETREDRAW 11
+#define WM_SETTEXT 12
+#define WM_SETTINGCHANGE 26
+#define WM_SHOWWINDOW 24
+#define WM_SIZE 5
+#define WM_SIZECLIPBOARD 779
+#define WM_SIZING 532
+#define WM_SPOOLERSTATUS 42
+#define WM_STYLECHANGED 125
+#define WM_STYLECHANGING 124
+#define WM_SYSCHAR 262
+#define WM_SYSCOLORCHANGE 21
+#define WM_SYSCOMMAND 274
+#define WM_SYSDEADCHAR 263
+#define WM_SYSKEYDOWN 260
+#define WM_SYSKEYUP 261
+#define WM_TCARD 82
+#define WM_THEMECHANGED 794
+#define WM_TIMECHANGE 30
+#define WM_TIMER 275
+#define WM_UNDO 772
+#define WM_USER 1024
+#define WM_USERCHANGED 84
+#define WM_VKEYTOITEM 46
+#define WM_VSCROLL 277
+#define WM_VSCROLLCLIPBOARD 778
+#define WM_WINDOWPOSCHANGED 71
+#define WM_WINDOWPOSCHANGING 70
+#define WM_WININICHANGE 26
+#define WM_KEYFIRST 256
+#if _WIN32_WINNT >= 0x0501
+#define WM_KEYLAST 265
+#define WM_UNICHAR 265
+#define UNICODE_NOCHAR 0xffff
+#else
+#define WM_KEYLAST 264
+#endif
+#define WM_SYNCPAINT  136
+#define WM_MOUSEACTIVATE 33
+#define WM_MOUSEMOVE 512
+#define WM_LBUTTONDOWN 513
+#define WM_LBUTTONUP 514
+#define WM_LBUTTONDBLCLK 515
+#define WM_RBUTTONDOWN 516
+#define WM_RBUTTONUP 517
+#define WM_RBUTTONDBLCLK 518
+#define WM_MBUTTONDOWN 519
+#define WM_MBUTTONUP 520
+#define WM_MBUTTONDBLCLK 521
+#define WM_MOUSEWHEEL 522
+#define WM_MOUSEFIRST 512
+#if (_WIN32_WINNT >= 0x0500)
+#define WM_XBUTTONDOWN 523
+#define WM_XBUTTONUP 524
+#define WM_XBUTTONDBLCLK 525
+#define WM_MOUSELAST 525
+#else
+#define WM_MOUSELAST 522
+#endif
+#define WM_MOUSEHOVER	0x2A1
+#define WM_MOUSELEAVE	0x2A3
+#if (_WIN32_WINNT >= 0x0400)
+#define WHEEL_DELTA 120
+#define GET_WHEEL_DELTA_WPARAM(wparam) ((short)HIWORD (wparam))
+#define WHEEL_PAGESCROLL UINT_MAX
+#endif
+#if (_WIN32_WINNT >= 0x0601)
+#define WM_TOUCHMOVE 576
+#define WM_TOUCHDOWN 577
+#define WM_TOUCHUP 578
+#endif
+#define BM_CLICK 245
+#define BM_GETCHECK 240
+#define BM_GETIMAGE 246
+#define BM_GETSTATE 242
+#define BM_SETCHECK 241
+#define BM_SETIMAGE 247
+#define BM_SETSTATE 243
+#define BM_SETSTYLE 244
+#define BN_CLICKED 0
+#define BN_DBLCLK 5
+#define BN_DISABLE 4
+#define BN_DOUBLECLICKED 5
+#define BN_HILITE 2
+#define BN_KILLFOCUS 7
+#define BN_PAINT 1
+#define BN_PUSHED 2
+#define BN_SETFOCUS 6
+#define BN_UNHILITE 3
+#define BN_UNPUSHED 3
+#define CB_ADDSTRING 323
+#define CB_DELETESTRING 324
+#define CB_DIR 325
+#define CB_FINDSTRING 332
+#define CB_FINDSTRINGEXACT 344
+#define CB_GETCOUNT 326
+#define CB_GETCURSEL 327
+#define CB_GETDROPPEDCONTROLRECT 338
+#define CB_GETDROPPEDSTATE 343
+#define CB_GETDROPPEDWIDTH 351
+#define CB_GETEDITSEL 320
+#define CB_GETEXTENDEDUI 342
+#define CB_GETHORIZONTALEXTENT 349
+#define CB_GETITEMDATA 336
+#define CB_GETITEMHEIGHT 340
+#define CB_GETLBTEXT 328
+#define CB_GETLBTEXTLEN 329
+#define CB_GETLOCALE 346
+#define CB_GETTOPINDEX 347
+#define CB_INITSTORAGE 353
+#define CB_INSERTSTRING 330
+#define CB_LIMITTEXT 321
+#define CB_RESETCONTENT 331
+#define CB_SELECTSTRING 333
+#define CB_SETCURSEL 334
+#define CB_SETDROPPEDWIDTH 352
+#define CB_SETEDITSEL 322
+#define CB_SETEXTENDEDUI 341
+#define CB_SETHORIZONTALEXTENT 350
+#define CB_SETITEMDATA 337
+#define CB_SETITEMHEIGHT 339
+#define CB_SETLOCALE 345
+#define CB_SETTOPINDEX 348
+#define CB_SHOWDROPDOWN 335
+#if (_WIN32_WINNT >= 0x0501)
+#define CB_SETMINVISIBLE 0x1701
+#define CB_GETMINVISIBLE 0x1702
+#endif
+#define CBN_CLOSEUP 8
+#define CBN_DBLCLK 2
+#define CBN_DROPDOWN 7
+#define CBN_EDITCHANGE 5
+#define CBN_EDITUPDATE 6
+#define CBN_ERRSPACE (-1)
+#define CBN_KILLFOCUS 4
+#define CBN_SELCHANGE 1
+#define CBN_SELENDCANCEL 10
+#define CBN_SELENDOK 9
+#define CBN_SETFOCUS 3
+#define EM_CANUNDO 198
+#define EM_CHARFROMPOS 215
+#define EM_EMPTYUNDOBUFFER 205
+#define EM_FMTLINES 200
+#define EM_GETFIRSTVISIBLELINE 206
+#define EM_GETHANDLE 189
+#define EM_GETLIMITTEXT 213
+#define EM_GETLINE 196
+#define EM_GETLINECOUNT 186
+#define EM_GETMARGINS 212
+#define EM_GETMODIFY 184
+#define EM_GETPASSWORDCHAR 210
+#define EM_GETRECT 178
+#define EM_GETSEL 176
+#define EM_GETTHUMB 190
+#define EM_GETWORDBREAKPROC 209
+#define EM_LIMITTEXT 197
+#define EM_LINEFROMCHAR 201
+#define EM_LINEINDEX 187
+#define EM_LINELENGTH 193
+#define EM_LINESCROLL 182
+#define EM_POSFROMCHAR 214
+#define EM_REPLACESEL 194
+#define EM_SCROLL 181
+#define EM_SCROLLCARET 183
+#define EM_SETHANDLE 188
+#define EM_SETLIMITTEXT 197
+#define EM_SETMARGINS 211
+#define EM_SETMODIFY 185
+#define EM_SETPASSWORDCHAR 204
+#define EM_SETREADONLY 207
+#define EM_SETRECT 179
+#define EM_SETRECTNP 180
+#define EM_SETSEL 177
+#define EM_SETTABSTOPS 203
+#define EM_SETWORDBREAKPROC 208
+#define EM_UNDO 199
+#if (WINVER >= 0x0500)
+#define EM_GETIMESTATUS 217
+#define EM_SETIMESTATUS 216
+#endif
+#define EN_CHANGE 768
+#define EN_ERRSPACE 1280
+#define EN_HSCROLL 1537
+#define EN_KILLFOCUS 512
+#define EN_MAXTEXT 1281
+#define EN_SETFOCUS 256
+#define EN_UPDATE 1024
+#define EN_VSCROLL 1538
+#define LB_ADDFILE 406
+#define LB_ADDSTRING 384
+#define LB_DELETESTRING 386
+#define LB_DIR 397
+#define LB_FINDSTRING 399
+#define LB_FINDSTRINGEXACT 418
+#define LB_GETANCHORINDEX 413
+#define LB_GETCARETINDEX 415
+#define LB_GETCOUNT 395
+#define LB_GETCURSEL 392
+#define LB_GETHORIZONTALEXTENT 403
+#define LB_GETITEMDATA 409
+#define LB_GETITEMHEIGHT 417
+#define LB_GETITEMRECT 408
+#define LB_GETLOCALE 422
+#define LB_GETSEL 391
+#define LB_GETSELCOUNT 400
+#define LB_GETSELITEMS 401
+#define LB_GETTEXT 393
+#define LB_GETTEXTLEN 394
+#define LB_GETTOPINDEX 398
+#define LB_INITSTORAGE 424
+#define LB_INSERTSTRING 385
+#define LB_ITEMFROMPOINT 425
+#define LB_RESETCONTENT 388
+#define LB_SELECTSTRING 396
+#define LB_SELITEMRANGE 411
+#define LB_SELITEMRANGEEX 387
+#define LB_SETANCHORINDEX 412
+#define LB_SETCARETINDEX 414
+#define LB_SETCOLUMNWIDTH 405
+#define LB_SETCOUNT 423
+#define LB_SETCURSEL 390
+#define LB_SETHORIZONTALEXTENT 404
+#define LB_SETITEMDATA 410
+#define LB_SETITEMHEIGHT 416
+#define LB_SETLOCALE 421
+#define LB_SETSEL 389
+#define LB_SETTABSTOPS 402
+#define LB_SETTOPINDEX 407
+#define LBN_DBLCLK 2
+#define LBN_ERRSPACE (-2)
+#define LBN_KILLFOCUS 5
+#define LBN_SELCANCEL 3
+#define LBN_SELCHANGE 1
+#define LBN_SETFOCUS 4
+#define SBM_ENABLE_ARROWS 228
+#define SBM_GETPOS 225
+#define SBM_GETRANGE 227
+#define SBM_GETSCROLLINFO 234
+#define SBM_SETPOS 224
+#define SBM_SETRANGE 226
+#define SBM_SETRANGEREDRAW 230
+#define SBM_SETSCROLLINFO 233
+#define STM_GETICON 369
+#define STM_GETIMAGE 371
+#define STM_SETICON 368
+#define STM_SETIMAGE 370
+#define STN_CLICKED 0
+#define STN_DBLCLK 1
+#define STN_DISABLE 3
+#define STN_ENABLE 2
+#define DM_GETDEFID WM_USER
+#define DM_SETDEFID (WM_USER+1)
+#define DM_REPOSITION (WM_USER+2)
+#define PSM_PAGEINFO (WM_USER+100)
+#define PSM_SHEETINFO (WM_USER+101)
+#define PSI_SETACTIVE 1
+#define PSI_KILLACTIVE 2
+#define PSI_APPLY 3
+#define PSI_RESET 4
+#define PSI_HASHELP 5
+#define PSI_HELP 6
+#define PSI_CHANGED 1
+#define PSI_GUISTART 2
+#define PSI_REBOOT 3
+#define PSI_GETSIBLINGS 4
+#define DCX_WINDOW 1
+#define DCX_CACHE 2
+#define DCX_PARENTCLIP 32
+#define DCX_CLIPSIBLINGS 16
+#define DCX_CLIPCHILDREN 8
+#define DCX_NORESETATTRS 4
+#define DCX_INTERSECTUPDATE 0x200
+#define DCX_LOCKWINDOWUPDATE 0x400
+#define DCX_EXCLUDERGN 64
+#define DCX_INTERSECTRGN 128
+#define DCX_VALIDATE 0x200000
+#define GMDI_GOINTOPOPUPS 2
+#define GMDI_USEDISABLED 1
+#define FKF_AVAILABLE 2
+#define FKF_CLICKON 64
+#define FKF_FILTERKEYSON 1
+#define FKF_HOTKEYACTIVE 4
+#define FKF_HOTKEYSOUND 16
+#define FKF_CONFIRMHOTKEY 8
+#define FKF_INDICATOR 32
+#define HCF_HIGHCONTRASTON 1
+#define HCF_AVAILABLE 2
+#define HCF_HOTKEYACTIVE 4
+#define HCF_CONFIRMHOTKEY 8
+#define HCF_HOTKEYSOUND 16
+#define HCF_INDICATOR 32
+#define HCF_HOTKEYAVAILABLE 64
+#define MKF_AVAILABLE 2
+#define MKF_CONFIRMHOTKEY 8
+#define MKF_HOTKEYACTIVE 4
+#define MKF_HOTKEYSOUND 16
+#define MKF_INDICATOR 32
+#define MKF_MOUSEKEYSON 1
+#define MKF_MODIFIERS 64
+#define MKF_REPLACENUMBERS 128
+#define SERKF_ACTIVE 8 /* May be obsolete. Not in recent MS docs. */
+#define SERKF_AVAILABLE 2
+#define SERKF_INDICATOR 4
+#define SERKF_SERIALKEYSON 1
+#define SSF_AVAILABLE 2
+#define SSF_SOUNDSENTRYON 1
+#define SSTF_BORDER 2
+#define SSTF_CHARS 1
+#define SSTF_DISPLAY 3
+#define SSTF_NONE 0
+#define SSGF_DISPLAY 3
+#define SSGF_NONE 0
+#define SSWF_CUSTOM 4
+#define SSWF_DISPLAY 3
+#define SSWF_NONE 0
+#define SSWF_TITLE 1
+#define SSWF_WINDOW 2
+#define SKF_AUDIBLEFEEDBACK 64
+#define SKF_AVAILABLE 2
+#define SKF_CONFIRMHOTKEY 8
+#define SKF_HOTKEYACTIVE 4
+#define SKF_HOTKEYSOUND 16
+#define SKF_INDICATOR 32
+#define SKF_STICKYKEYSON 1
+#define SKF_TRISTATE 128
+#define SKF_TWOKEYSOFF 256
+#define TKF_AVAILABLE 2
+#define TKF_CONFIRMHOTKEY 8
+#define TKF_HOTKEYACTIVE 4
+#define TKF_HOTKEYSOUND 16
+#define TKF_TOGGLEKEYSON 1
+#define MDITILE_SKIPDISABLED 2
+#define MDITILE_HORIZONTAL 1
+#define MDITILE_VERTICAL 0
+#define VK_LBUTTON	1
+#define VK_RBUTTON	2
+#define VK_CANCEL	3
+#define VK_MBUTTON	4
+#if (_WIN32_WINNT >= 0x0500)
+#define VK_XBUTTON1	5
+#define VK_XBUTTON2	6
+#endif
+#define VK_BACK	8
+#define VK_TAB	9
+#define VK_CLEAR	12
+#define VK_RETURN	13
+#define VK_SHIFT	16
+#define VK_CONTROL	17
+#define VK_MENU	18
+#define VK_PAUSE	19
+#define VK_CAPITAL	20
+#define VK_KANA	0x15
+#define VK_HANGEUL	0x15
+#define VK_HANGUL	0x15
+#define VK_JUNJA	0x17
+#define VK_FINAL	0x18
+#define VK_HANJA	0x19
+#define VK_KANJI	0x19
+#define VK_ESCAPE	0x1B
+#define VK_CONVERT	0x1C
+#define VK_NONCONVERT	0x1D
+#define VK_ACCEPT	0x1E
+#define VK_MODECHANGE	0x1F
+#define VK_SPACE	32
+#define VK_PRIOR	33
+#define VK_NEXT	34
+#define VK_END	35
+#define VK_HOME	36
+#define VK_LEFT	37
+#define VK_UP	38
+#define VK_RIGHT	39
+#define VK_DOWN	40
+#define VK_SELECT	41
+#define VK_PRINT	42
+#define VK_EXECUTE	43
+#define VK_SNAPSHOT	44
+#define VK_INSERT	45
+#define VK_DELETE	46
+#define VK_HELP	47
+#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_LSHIFT	0xA0
+#define VK_RSHIFT	0xA1
+#define VK_LCONTROL	0xA2
+#define VK_RCONTROL	0xA3
+#define VK_LMENU	0xA4
+#define VK_RMENU	0xA5
+#if (_WIN32_WINNT >= 0x0500)
+#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
+#endif
+#define VK_OEM_1	0xBA
+#if (_WIN32_WINNT >= 0x0500)
+#define VK_OEM_PLUS	0xBB
+#define VK_OEM_COMMA	0xBC
+#define VK_OEM_MINUS	0xBD
+#define VK_OEM_PERIOD	0xBE
+#endif
+#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
+#if (_WIN32_WINNT >= 0x0500)
+#define VK_OEM_102	0xE2
+#endif
+#define VK_PROCESSKEY	0xE5
+#if (_WIN32_WINNT >= 0x0500)
+#define VK_PACKET	0xE7
+#endif
+#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 TME_HOVER	1
+#define TME_LEAVE	2
+#define TME_QUERY	0x40000000
+#define TME_CANCEL	0x80000000
+#define HOVER_DEFAULT	0xFFFFFFFF
+#define MK_LBUTTON	1
+#define MK_RBUTTON	2
+#define MK_SHIFT	4
+#define MK_CONTROL	8
+#define MK_MBUTTON	16
+#if(_WIN32_WINNT >= 0x0500)
+#define MK_XBUTTON1	32
+#define MK_XBUTTON2	64
+#endif
+#define TPM_CENTERALIGN 4
+#define TPM_LEFTALIGN 0
+#define TPM_RIGHTALIGN 8
+#define TPM_LEFTBUTTON 0
+#define TPM_RIGHTBUTTON 2
+#define TPM_HORIZONTAL 0
+#define TPM_VERTICAL 64
+#define TPM_TOPALIGN 0
+#define TPM_VCENTERALIGN 16
+#define TPM_BOTTOMALIGN 32
+#define TPM_NONOTIFY 128
+#define TPM_RETURNCMD 256
+#if (_WIN32_WINNT >= 0x0500 || _WIN32_WINDOWS >= 0x0410)
+#define TPM_RECURSE 1
+#endif
+#define HELP_COMMAND 0x102
+#define HELP_CONTENTS 3
+#define HELP_CONTEXT 1
+#define HELP_CONTEXTPOPUP 8
+#define HELP_FORCEFILE 9
+#define HELP_HELPONHELP 4
+#define HELP_INDEX 3
+#define HELP_KEY 0x101
+#define HELP_MULTIKEY 0x201
+#define HELP_PARTIALKEY 0x105
+#define HELP_QUIT 2
+#define HELP_SETCONTENTS 5
+#define HELP_SETINDEX 5
+#define HELP_SETWINPOS 0x203
+#define HELP_CONTEXTMENU 0xa
+#define HELP_FINDER 0xb
+#define HELP_WM_HELP 0xc
+#define HELP_TCARD 0x8000
+#define HELP_TCARD_DATA 16
+#define HELP_TCARD_OTHER_CALLER 0x11
+#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 LB_CTLCODE 0
+#define LB_OKAY 0
+#define LB_ERR (-1)
+#define LB_ERRSPACE (-2)
+#define CB_OKAY 0
+#define CB_ERR (-1)
+#define CB_ERRSPACE (-2)
+#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 KF_EXTENDED 256
+#define KF_DLGMODE 2048
+#define KF_MENUMODE 4096
+#define KF_ALTDOWN 8192
+#define KF_REPEAT 16384
+#define KF_UP 32768
+#define WSF_VISIBLE 1
+#define PWR_OK 1
+#define PWR_FAIL (-1)
+#define PWR_SUSPENDREQUEST 1
+#define PWR_SUSPENDRESUME 2
+#define PWR_CRITICALRESUME 3
+#define NFR_ANSI 1
+#define NFR_UNICODE 2
+#define NF_QUERY 3
+#define NF_REQUERY 4
+#define MENULOOP_WINDOW 0
+#define MENULOOP_POPUP 1
+#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 4
+#define HTMENU 5
+#define HTHSCROLL 6
+#define HTVSCROLL 7
+#define HTMINBUTTON 8
+#define HTMAXBUTTON 9
+#define HTREDUCE 8
+#define HTZOOM 9
+#define HTLEFT 10
+#define HTSIZEFIRST 10
+#define HTRIGHT 11
+#define HTTOP 12
+#define HTTOPLEFT 13
+#define HTTOPRIGHT 14
+#define HTBOTTOM 15
+#define HTBOTTOMLEFT 16
+#define HTBOTTOMRIGHT 17
+#define HTSIZELAST 17
+#define HTBORDER 18
+#define HTOBJECT 19
+#define HTCLOSE 20
+#define HTHELP 21
+#define MA_ACTIVATE 1
+#define MA_ACTIVATEANDEAT 2
+#define MA_NOACTIVATE 3
+#define MA_NOACTIVATEANDEAT 4
+#define SIZE_RESTORED 0
+#define SIZE_MINIMIZED 1
+#define SIZE_MAXIMIZED 2
+#define SIZE_MAXSHOW 3
+#define SIZE_MAXHIDE 4
+#define SIZENORMAL 0
+#define SIZEICONIC 1
+#define SIZEFULLSCREEN 2
+#define SIZEZOOMSHOW 3
+#define SIZEZOOMHIDE 4
+#define WVR_ALIGNTOP 16
+#define WVR_ALIGNLEFT 32
+#define WVR_ALIGNBOTTOM 64
+#define WVR_ALIGNRIGHT 128
+#define WVR_HREDRAW 256
+#define WVR_VREDRAW 512
+#define WVR_REDRAW (WVR_HREDRAW|WVR_VREDRAW)
+#define WVR_VALIDRECTS 1024
+#define PRF_CHECKVISIBLE 1
+#define PRF_NONCLIENT 2
+#define PRF_CLIENT 4
+#define PRF_ERASEBKGND 8
+#define PRF_CHILDREN 16
+#define PRF_OWNED 32
+#define IDANI_OPEN 1
+#define IDANI_CLOSE 2
+#define IDANI_CAPTION 3
+#define WPF_RESTORETOMAXIMIZED 2
+#define WPF_SETMINPOSITION 1
+#define ODT_MENU 1
+#define ODT_LISTBOX 2
+#define ODT_COMBOBOX 3
+#define ODT_BUTTON 4
+#define ODT_STATIC 5
+#define ODA_DRAWENTIRE 1
+#define ODA_SELECT 2
+#define ODA_FOCUS 4
+#define ODS_SELECTED 1
+#define ODS_GRAYED 2
+#define ODS_DISABLED 4
+#define ODS_CHECKED 8
+#define ODS_FOCUS 16
+#define ODS_DEFAULT 32
+#define ODS_COMBOBOXEDIT 4096
+#define IDHOT_SNAPWINDOW (-1)
+#define IDHOT_SNAPDESKTOP (-2)
+#define DBWF_LPARAMPOINTER 0x8000
+#define DLGWINDOWEXTRA 30
+#define MNC_IGNORE 0
+#define MNC_CLOSE 1
+#define MNC_EXECUTE 2
+#define MNC_SELECT 3
+#define DOF_EXECUTABLE 0x8001
+#define DOF_DOCUMENT 0x8002
+#define DOF_DIRECTORY 0x8003
+#define DOF_MULTIPLE 0x8004
+#define DOF_PROGMAN 1
+#define DOF_SHELLDATA 2
+#define DO_DROPFILE 0x454C4946
+#define DO_PRINTFILE 0x544E5250
+#define SW_SCROLLCHILDREN 1
+#define SW_INVALIDATE 2
+#define SW_ERASE 4
+#if (_WIN32_WINDOWS >= 0x0410 || _WIN32_WINNT >= 0x0500)
+#define SW_SMOOTHSCROLL	0x0010
+#endif /* (_WIN32_WINDOWS >= 0x0410 || _WIN32_WINNT >= 0x0500) */
+#define SC_SIZE 0xF000
+#define SC_MOVE 0xF010
+#define SC_MINIMIZE 0xF020
+#define SC_ICON 0xf020
+#define SC_MAXIMIZE 0xF030
+#define SC_ZOOM 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 EC_LEFTMARGIN 1
+#define EC_RIGHTMARGIN 2
+#define EC_USEFONTINFO 0xffff
+#define DC_HASDEFID 0x534B
+#define DLGC_WANTARROWS 1
+#define DLGC_WANTTAB 2
+#define DLGC_WANTALLKEYS 4
+#define DLGC_WANTMESSAGE 4
+#define DLGC_HASSETSEL 8
+#define DLGC_DEFPUSHBUTTON 16
+#define DLGC_UNDEFPUSHBUTTON 32
+#define DLGC_RADIOBUTTON 64
+#define DLGC_WANTCHARS 128
+#define DLGC_STATIC 256
+#define DLGC_BUTTON 0x2000
+#define LB_CTLCODE 0
+#define WA_INACTIVE 0
+#define WA_ACTIVE 1
+#define WA_CLICKACTIVE 2
+#define ICON_SMALL 0
+#define ICON_BIG 1
+#if (_WIN32_WINNT >= 0x0501)
+#define ICON_SMALL2 2
+#endif
+#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 MOD_ALT 1
+#define MOD_CONTROL 2
+#define MOD_SHIFT 4
+#define MOD_WIN 8
+#define MOD_IGNORE_ALL_MODIFIER 1024
+#define MOD_ON_KEYUP  2048
+#define MOD_RIGHT 16384
+#define MOD_LEFT 32768
+#define LLKHF_EXTENDED	(KF_EXTENDED >> 8)
+#define LLKHF_INJECTED	0x00000010
+#define LLKHF_ALTDOWN	(KF_ALTDOWN >> 8)
+#define LLKHF_UP	(KF_UP >> 8)
+#if (WINVER >= 0x0500)
+#define FLASHW_STOP 0
+#define FLASHW_CAPTION 1
+#define FLASHW_TRAY 2
+#define FLASHW_ALL (FLASHW_CAPTION|FLASHW_TRAY)
+#define FLASHW_TIMER 4
+#define FLASHW_TIMERNOFG 12
+#endif /* (WINVER >= 0x0500) */
+#define CURSOR_SHOWING 0x00000001
+#define WS_ACTIVECAPTION 0x00000001
+#if (_WIN32_WINNT >= 0x0403)
+#define INPUT_MOUSE 0x00000000
+#define INPUT_KEYBOARD 0x00000001
+#define INPUT_HARDWARE 0x00000002
+#endif /* (_WIN32_WINNT >= 0x0403) */
+#if (WINVER >= 0x0400)
+#define ENDSESSION_LOGOFF 0x80000000
+#endif
+#if (WINVER >= 0x0500)
+#define CHILDID_SELF 0
+#define OBJID_WINDOW 0x00000000
+#define OBJID_SYSMENU 0xFFFFFFFF
+#define OBJID_TITLEBAR 0xFFFFFFFE
+#define OBJID_MENU 0xFFFFFFFD
+#define OBJID_CLIENT 0xFFFFFFFC
+#define OBJID_VSCROLL 0xFFFFFFFB
+#define OBJID_HSCROLL 0xFFFFFFFA
+#define OBJID_SIZEGRIP 0xFFFFFFF9
+#define OBJID_CARET 0xFFFFFFF8
+#define OBJID_CURSOR 0xFFFFFFF7
+#define OBJID_ALERT 0xFFFFFFF6
+#define OBJID_SOUND 0xFFFFFFF5
+#define GUI_CARETBLINKING 0x00000001
+#define GUI_INMOVESIZE 0x00000002
+#define GUI_INMENUMODE 0x00000004
+#define GUI_SYSTEMMENUMODE 0x00000008
+#define GUI_POPUPMENUMODE 0x00000010
+#if (_WIN32_WINNT >= 0x0501)
+#define GUI_16BITTASK 0x00000020
+#endif
+#define WINEVENT_OUTOFCONTEXT   0x0000
+#define WINEVENT_SKIPOWNTHREAD  0x0001
+#define WINEVENT_SKIPOWNPROCESS 0x0002
+#define WINEVENT_INCONTEXT      0x0004
+#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 DEVICE_NOTIFY_WINDOW_HANDLE 0x00000000
+#define DEVICE_NOTIFY_SERVICE_HANDLE 0x00000001
+#if (_WIN32_WINNT >= 0x0501)
+#define DEVICE_NOTIFY_ALL_INTERFACE_CLASSES 0x00000004
+#endif
+#define EVENT_MIN                       0x00000001
+#define EVENT_SYSTEM_SOUND              0x00000001
+#define EVENT_SYSTEM_ALERT              0x00000002
+#define EVENT_SYSTEM_FOREGROUND         0x00000003
+#define EVENT_SYSTEM_MENUSTART          0x00000004
+#define EVENT_SYSTEM_MENUEND            0x00000005
+#define EVENT_SYSTEM_MENUPOPUPSTART     0x00000006
+#define EVENT_SYSTEM_MENUPOPUPEND       0x00000007
+#define EVENT_SYSTEM_CAPTURESTART       0x00000008
+#define EVENT_SYSTEM_CAPTUREEND         0x00000009
+#define EVENT_SYSTEM_MOVESIZESTART      0x0000000a
+#define EVENT_SYSTEM_MOVESIZEEND        0x0000000b
+#define EVENT_SYSTEM_CONTEXTHELPSTART   0x0000000c
+#define EVENT_SYSTEM_CONTEXTHELPEND     0x0000000d
+#define EVENT_SYSTEM_DRAGDROPSTART      0x0000000e
+#define EVENT_SYSTEM_DRAGDROPEND        0x0000000f
+#define EVENT_SYSTEM_DIALOGSTART        0x00000010
+#define EVENT_SYSTEM_DIALOGEND          0x00000011
+#define EVENT_SYSTEM_SCROLLINGSTART     0x00000012
+#define EVENT_SYSTEM_SCROLLINGEND       0x00000013
+#define EVENT_SYSTEM_SWITCHSTART        0x00000014
+#define EVENT_SYSTEM_SWITCHEND          0x00000015
+#define EVENT_SYSTEM_MINIMIZESTART      0x00000016
+#define EVENT_SYSTEM_MINIMIZEEND        0x00000017
+#define EVENT_OBJECT_CREATE             0x00008000
+#define EVENT_OBJECT_DESTROY            0x00008001
+#define EVENT_OBJECT_SHOW               0x00008002
+#define EVENT_OBJECT_HIDE               0x00008003
+#define EVENT_OBJECT_REORDER            0x00008004
+#define EVENT_OBJECT_FOCUS              0x00008005
+#define EVENT_OBJECT_SELECTION          0x00008006
+#define EVENT_OBJECT_SELECTIONADD       0x00008007
+#define EVENT_OBJECT_SELECTIONREMOVE    0x00008008
+#define EVENT_OBJECT_SELECTIONWITHIN    0x00008009
+#define EVENT_OBJECT_STATECHANGE        0x0000800a
+#define EVENT_OBJECT_LOCATIONCHANGE     0x0000800b
+#define EVENT_OBJECT_NAMECHANGE         0x0000800c
+#define EVENT_OBJECT_DESCRIPTIONCHANGE  0x0000800d
+#define EVENT_OBJECT_VALUECHANGE        0x0000800e
+#define EVENT_OBJECT_PARENTCHANGE       0x0000800f
+#define EVENT_OBJECT_HELPCHANGE         0x00008010
+#define EVENT_OBJECT_DEFACTIONCHANGE    0x00008011
+#define EVENT_OBJECT_ACCELERATORCHANGE  0x00008012
+#if (_WIN32_WINNT >= 0x0501)
+#define EVENT_CONSOLE_CARET             0x00004001
+#define CONSOLE_CARET_SELECTION         0x00000001
+#define CONSOLE_CARET_VISIBLE           0x00000002
+#define EVENT_CONSOLE_UPDATE_REGION     0x00004002
+#define EVENT_CONSOLE_UPDATE_SIMPLE     0x00004003
+#define EVENT_CONSOLE_UPDATE_SCROLL     0x00004004
+#define EVENT_CONSOLE_LAYOUT            0x00004005
+#define EVENT_CONSOLE_START_APPLICATION 0x00004006
+#define CONSOLE_APPLICATION_16BIT       0x00000001
+#define EVENT_CONSOLE_END_APPLICATION   0x00004007
+#endif /* (_WIN32_WINNT >= 0x0501) */
+#define EVENT_MAX                       0x7fffffff
+#endif /* (WINVER >= 0x0500) */
+#if (_WIN32_WINNT >= 0x0500 || _WIN32_WINDOWS >= 0x0490)
+#define ASFW_ANY ((DWORD)-1)
+#define LSFW_LOCK 1
+#define LSFW_UNLOCK 2
+#endif
+#if (_WIN32_WINNT >= 0x0500)
+#define LWA_COLORKEY	0x01
+#define LWA_ALPHA	0x02
+#define ULW_COLORKEY	0x01
+#define ULW_ALPHA	0x02
+#define ULW_OPAQUE	0x04
+#endif
+#define GA_PARENT 1
+#define GA_ROOT 2
+#define GA_ROOTOWNER 3
+#if (_WIN32_WINNT >= 0x0500 || _WIN32_WINDOWS >= 0x0410)
+#define MONITOR_DEFAULTTONULL 0
+#define MONITOR_DEFAULTTOPRIMARY 1
+#define MONITOR_DEFAULTTONEAREST 2
+#define MONITORINFOF_PRIMARY 1
+#define EDS_RAWMODE 0x00000002
+#define ISMEX_NOSEND 0x00000000
+#define ISMEX_CALLBACK 0x00000004
+#define ISMEX_NOTIFY 0x00000002
+#define ISMEX_REPLIED 0x00000008
+#define ISMEX_SEND 0x00000001
+#endif
+#if (_WIN32_WINNT >= 0x0500)
+#define GR_GDIOBJECTS 0
+#define GR_USEROBJECTS 1
+#endif
+#if (_WIN32_WINNT >= 0x0500 || _WIN32_WINDOWS >= 0x0490)
+#define GMMP_USE_DISPLAY_POINTS 1
+#define GMMP_USE_HIGH_RESOLUTION_POINTS 2
+#endif
+#if (_WIN32_WINNT >= 0x0500)
+#define XBUTTON1 0x0001
+#define XBUTTON2 0x0002
+#endif
+#if (_WIN32_WINNT >= 0x0501)
+#define FE_FONTSMOOTHINGSTANDARD  0x0001
+#define FE_FONTSMOOTHINGCLEARTYPE 0x0002
+#define PW_CLIENTONLY 0x00000001
+#define RIM_INPUT     0x00000000
+#define RIM_INPUTSINK 0x00000001
+#define RIM_TYPEMOUSE    0x00000000
+#define RIM_TYPEKEYBOARD 0x00000001
+#define RIM_TYPEHID      0x00000002
+#define MOUSE_MOVE_RELATIVE      0x00000000
+#define MOUSE_MOVE_ABSOLUTE      0x00000001
+#define MOUSE_VIRTUAL_DESKTOP    0x00000002
+#define MOUSE_ATTRIBUTES_CHANGED 0x00000004
+#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_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 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 KEYBOARD_OVERRUN_MAKE_CODE 0x00ff
+#define RI_KEY_MAKE            0x0000
+#define RI_KEY_BREAK           0x0001
+#define RI_KEY_E0              0x0002
+#define RI_KEY_E1              0x0004
+#define RI_KEY_TERMSRV_SET_LED 0x0008
+#define RI_KEY_TERMSRV_SHADOW  0x0010
+#define RID_INPUT  0x10000003
+#define RID_HEADER 0x10000005
+#define RIDI_PREPARSEDDATA 0x20000005
+#define RIDI_DEVICENAME    0x20000007
+#define RIDI_DEVICEINFO    0x2000000b
+#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
+#endif
+
+#if (_WIN32_WINNT >= 0x0601)
+#define TOUCHEVENTF_DOWN	    0x0001
+#define TOUCHEVENTF_INRANGE	    0x0008
+#define TOUCHEVENTF_MOVE	    0x0002
+#define TOUCHEVENTF_NOCOALESCE	0x0020
+#define TOUCHEVENTF_PALM	    0x0080
+#define TOUCHEVENTF_PEN	        0x0040
+#define TOUCHEVENTF_PRIMARY	    0x0010
+#define TOUCHEVENTF_UP	        0x0004
+
+#define TOUCHEVENTMASKF_CONTACTAREA	0x0004
+#define TOUCHEVENTMASKF_EXTRAINFO	0x0002
+#define TOUCHEVENTMASKF_TIMEFROMSYSTEM	0x0001
+#endif
+
+#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
+
+#ifndef RC_INVOKED
+typedef BOOL(CALLBACK *DLGPROC)(HWND,UINT,WPARAM,LPARAM);
+typedef VOID(CALLBACK *TIMERPROC)(HWND,UINT,UINT,DWORD);
+typedef BOOL(CALLBACK *GRAYSTRINGPROC)(HDC,LPARAM,int);
+typedef LRESULT(CALLBACK *HOOKPROC)(int,WPARAM,LPARAM);
+typedef BOOL(CALLBACK *PROPENUMPROCA)(HWND,LPCSTR,HANDLE);
+typedef BOOL(CALLBACK *PROPENUMPROCW)(HWND,LPCWSTR,HANDLE);
+typedef BOOL(CALLBACK *PROPENUMPROCEXA)(HWND,LPSTR,HANDLE,DWORD);
+typedef BOOL(CALLBACK *PROPENUMPROCEXW)(HWND,LPWSTR,HANDLE,DWORD);
+typedef int(CALLBACK *EDITWORDBREAKPROCA)(LPSTR,int,int,int);
+typedef int(CALLBACK *EDITWORDBREAKPROCW)(LPWSTR,int,int,int);
+typedef LRESULT(CALLBACK *WNDPROC)(HWND,UINT,WPARAM,LPARAM);
+typedef BOOL(CALLBACK *DRAWSTATEPROC)(HDC,LPARAM,WPARAM,int,int);
+typedef BOOL(CALLBACK *WNDENUMPROC)(HWND,LPARAM);
+typedef BOOL(CALLBACK *ENUMWINDOWSPROC)(HWND,LPARAM);
+typedef BOOL(CALLBACK* MONITORENUMPROC)(HMONITOR,HDC,LPRECT,LPARAM);
+typedef BOOL(CALLBACK *NAMEENUMPROCA)(LPSTR,LPARAM);
+typedef BOOL(CALLBACK *NAMEENUMPROCW)(LPWSTR,LPARAM);
+typedef NAMEENUMPROCA DESKTOPENUMPROCA;
+typedef NAMEENUMPROCW DESKTOPENUMPROCW;
+typedef NAMEENUMPROCA WINSTAENUMPROCA;
+typedef NAMEENUMPROCW WINSTAENUMPROCW;
+typedef void(CALLBACK *SENDASYNCPROC)(HWND,UINT,DWORD,LRESULT);
+DECLARE_HANDLE(HDWP);
+DECLARE_HANDLE(HDEVNOTIFY);
+typedef struct tagMENUGETOBJECTINFO {
+  DWORD  dwFlags;
+  UINT  uPos;
+  HMENU  hmenu;
+  PVOID  riid;
+  PVOID  pvObj;
+} MENUGETOBJECTINFO, *PMENUGETOBJECTINFO;
+typedef struct tagACCEL {
+	BYTE fVirt;
+	WORD key;
+	WORD cmd;
+} ACCEL,*LPACCEL;
+typedef struct tagACCESSTIMEOUT {
+	UINT cbSize;
+	DWORD dwFlags;
+	DWORD iTimeOutMSec;
+} ACCESSTIMEOUT, *LPACCESSTIMEOUT;
+typedef struct tagANIMATIONINFO {
+	UINT cbSize;
+	int iMinAnimate;
+} ANIMATIONINFO,*LPANIMATIONINFO;
+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 struct tagCBT_CREATEWNDA {
+	LPCREATESTRUCTA lpcs;
+	HWND	hwndInsertAfter;
+} CBT_CREATEWNDA, *LPCBT_CREATEWNDA;
+typedef struct tagCBT_CREATEWNDW {
+	LPCREATESTRUCTW lpcs;
+	HWND	hwndInsertAfter;
+} CBT_CREATEWNDW, *LPCBT_CREATEWNDW;
+typedef struct tagCBTACTIVATESTRUCT {
+	BOOL fMouse;
+	HWND hWndActive;
+} CBTACTIVATESTRUCT,*LPCBTACTIVATESTRUCT;
+typedef struct tagCLIENTCREATESTRUCT {
+	HANDLE	hWindowMenu;
+	UINT	idFirstChild;
+} CLIENTCREATESTRUCT,*LPCLIENTCREATESTRUCT;
+typedef struct tagCOMPAREITEMSTRUCT {
+	UINT	CtlType;
+	UINT	CtlID;
+	HWND	hwndItem;
+	UINT	itemID1;
+	DWORD	itemData1;
+	UINT	itemID2;
+	DWORD	itemData2;
+	DWORD	dwLocaleId;
+} COMPAREITEMSTRUCT,*LPCOMPAREITEMSTRUCT;
+typedef struct tagCOPYDATASTRUCT {
+	DWORD dwData;
+	DWORD cbData;
+	PVOID lpData;
+} COPYDATASTRUCT,*PCOPYDATASTRUCT;
+typedef struct tagCURSORSHAPE {
+	int xHotSpot;
+	int yHotSpot;
+	int cx;
+	int cy;
+	int cbWidth;
+    BYTE Planes;
+    BYTE BitsPixel;
+} CURSORSHAPE,*LPCURSORSHAPE;
+typedef struct tagCWPRETSTRUCT {
+	LRESULT lResult;
+	LPARAM lParam;
+	WPARAM wParam;
+	DWORD message;
+	HWND hwnd;
+} CWPRETSTRUCT;
+typedef struct tagCWPSTRUCT {
+	LPARAM lParam;
+	WPARAM wParam;
+	UINT message;
+	HWND hwnd;
+} CWPSTRUCT,*PCWPSTRUCT;
+typedef struct tagDEBUGHOOKINFO {
+	DWORD idThread;
+	DWORD idThreadInstaller;
+	LPARAM lParam;
+	WPARAM wParam;
+	int code;
+} DEBUGHOOKINFO,*PDEBUGHOOKINFO,*LPDEBUGHOOKINFO;
+typedef struct tagDELETEITEMSTRUCT {
+	UINT CtlType;
+	UINT CtlID;
+	UINT itemID;
+	HWND hwndItem;
+	UINT itemData;
+} DELETEITEMSTRUCT,*PDELETEITEMSTRUCT,*LPDELETEITEMSTRUCT;
+#pragma pack(push,2)
+typedef struct {
+	DWORD style;
+	DWORD dwExtendedStyle;
+	short x;
+	short y;
+	short cx;
+	short cy;
+	WORD id;
+} DLGITEMTEMPLATE,*LPDLGITEMTEMPLATE;
+typedef struct {
+	DWORD style;
+	DWORD dwExtendedStyle;
+	WORD cdit;
+	short x;
+	short y;
+	short cx;
+	short cy;
+} DLGTEMPLATE,*LPDLGTEMPLATE,*LPDLGTEMPLATEA,*LPDLGTEMPLATEW;
+typedef const DLGTEMPLATE *LPCDLGTEMPLATE;
+#pragma pack(pop)
+typedef struct tagDRAWITEMSTRUCT {
+	UINT CtlType;
+	UINT CtlID;
+	UINT itemID;
+	UINT itemAction;
+	UINT itemState;
+	HWND hwndItem;
+	HDC	hDC;
+	RECT rcItem;
+	DWORD itemData;
+} DRAWITEMSTRUCT,*LPDRAWITEMSTRUCT,*PDRAWITEMSTRUCT;
+typedef struct {
+	UINT cbSize;
+	int iTabLength;
+	int iLeftMargin;
+	int iRightMargin;
+	UINT uiLengthDrawn;
+} DRAWTEXTPARAMS,*LPDRAWTEXTPARAMS;
+typedef struct tagPAINTSTRUCT {
+	HDC	hdc;
+	BOOL fErase;
+	RECT rcPaint;
+	BOOL fRestore;
+	BOOL fIncUpdate;
+	BYTE rgbReserved[32];
+} PAINTSTRUCT,*LPPAINTSTRUCT;
+typedef struct tagMSG {
+	HWND hwnd;
+	UINT message;
+	WPARAM wParam;
+	LPARAM lParam;
+	DWORD time;
+	POINT pt;
+} MSG,*LPMSG,*PMSG;
+typedef struct _ICONINFO {
+	BOOL fIcon;
+	DWORD xHotspot;
+	DWORD yHotspot;
+	HBITMAP hbmMask;
+	HBITMAP hbmColor;
+} ICONINFO,*PICONINFO;
+typedef struct tagNMHDR {
+	HWND hwndFrom;
+	UINT idFrom;
+	UINT code;
+} NMHDR,*LPNMHDR;
+typedef struct _WNDCLASSA {
+	UINT style;
+	WNDPROC lpfnWndProc;
+	int cbClsExtra;
+	int cbWndExtra;
+	HINSTANCE hInstance;
+	HICON hIcon;
+	HCURSOR hCursor;
+	HBRUSH hbrBackground;
+	LPCSTR lpszMenuName;
+	LPCSTR lpszClassName;
+} WNDCLASSA,*LPWNDCLASSA,*PWNDCLASSA;
+typedef struct _WNDCLASSW {
+	UINT style;
+	WNDPROC lpfnWndProc;
+	int cbClsExtra;
+	int cbWndExtra;
+	HINSTANCE hInstance;
+	HICON hIcon;
+	HCURSOR hCursor;
+	HBRUSH hbrBackground;
+	LPCWSTR lpszMenuName;
+	LPCWSTR lpszClassName;
+} WNDCLASSW,*LPWNDCLASSW,*PWNDCLASSW;
+typedef struct _WNDCLASSEXA {
+	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,*LPWNDCLASSEXA,*PWNDCLASSEXA;
+typedef struct _WNDCLASSEXW {
+	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,*LPWNDCLASSEXW,*PWNDCLASSEXW;
+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;
+#if (_WIN32_WINNT >= 0x0500)
+	HBITMAP hbmpItem;
+#endif
+} MENUITEMINFOA,*LPMENUITEMINFOA;
+typedef const MENUITEMINFOA *LPCMENUITEMINFOA;
+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;
+#if (_WIN32_WINNT >= 0x0500)
+	HBITMAP hbmpItem;
+#endif
+} MENUITEMINFOW,*LPMENUITEMINFOW;
+typedef const MENUITEMINFOW *LPCMENUITEMINFOW;
+typedef struct tagSCROLLINFO {
+	UINT cbSize;
+	UINT fMask;
+	int nMin;
+	int nMax;
+	UINT nPage;
+	int nPos;
+	int nTrackPos;
+} SCROLLINFO,*LPSCROLLINFO;
+typedef const SCROLLINFO *LPCSCROLLINFO;
+typedef struct _WINDOWPLACEMENT {
+	UINT length;
+	UINT flags;
+	UINT showCmd;
+	POINT ptMinPosition;
+	POINT ptMaxPosition;
+	RECT rcNormalPosition;
+} WINDOWPLACEMENT,*LPWINDOWPLACEMENT,*PWINDOWPLACEMENT;
+typedef struct {
+	WORD versionNumber;
+	WORD offset;
+} MENUITEMTEMPLATEHEADER;
+typedef struct {
+	WORD mtOption;
+	WORD mtID;
+	WCHAR mtString[1];
+} MENUITEMTEMPLATE;
+typedef void MENUTEMPLATE,MENUTEMPLATEA,MENUTEMPLATEW,*LPMENUTEMPLATEA,*LPMENUTEMPLATEW,*LPMENUTEMPLATE;
+typedef struct tagHELPINFO {
+	UINT cbSize;
+	int iContextType;
+	int iCtrlId;
+	HANDLE hItemHandle;
+	DWORD dwContextId;
+	POINT MousePos;
+} HELPINFO,*LPHELPINFO;
+typedef void(CALLBACK *MSGBOXCALLBACK)(LPHELPINFO);
+typedef struct {
+	UINT cbSize;
+	HWND hwndOwner;
+	HINSTANCE hInstance;
+	LPCSTR lpszText;
+	LPCSTR lpszCaption;
+	DWORD dwStyle;
+	LPCSTR lpszIcon;
+	DWORD dwContextHelpId;
+	MSGBOXCALLBACK lpfnMsgBoxCallback;
+	DWORD dwLanguageId;
+} MSGBOXPARAMSA,*PMSGBOXPARAMSA,*LPMSGBOXPARAMSA;
+typedef struct {
+	UINT cbSize;
+	HWND hwndOwner;
+	HINSTANCE hInstance;
+	LPCWSTR lpszText;
+	LPCWSTR lpszCaption;
+	DWORD dwStyle;
+	LPCWSTR lpszIcon;
+	DWORD dwContextHelpId;
+	MSGBOXCALLBACK lpfnMsgBoxCallback;
+	DWORD dwLanguageId;
+} MSGBOXPARAMSW,*PMSGBOXPARAMSW,*LPMSGBOXPARAMSW;
+typedef struct tagUSEROBJECTFLAGS {
+	BOOL fInherit;
+	BOOL fReserved;
+	DWORD dwFlags;
+} USEROBJECTFLAGS;
+typedef struct tagFILTERKEYS {
+	UINT cbSize;
+	DWORD dwFlags;
+	DWORD iWaitMSec;
+	DWORD iDelayMSec;
+	DWORD iRepeatMSec;
+	DWORD iBounceMSec;
+} FILTERKEYS;
+typedef struct tagHIGHCONTRASTA {
+	UINT cbSize;
+	DWORD dwFlags;
+	LPSTR lpszDefaultScheme;
+} HIGHCONTRASTA,*LPHIGHCONTRASTA;
+typedef struct tagHIGHCONTRASTW {
+	UINT cbSize;
+	DWORD dwFlags;
+	LPWSTR lpszDefaultScheme;
+} HIGHCONTRASTW,*LPHIGHCONTRASTW;
+#ifndef NOGDI
+typedef struct tagICONMETRICSA {
+	UINT cbSize;
+	int iHorzSpacing;
+	int iVertSpacing;
+	int iTitleWrap;
+	LOGFONTA lfFont;
+} ICONMETRICSA,*LPICONMETRICSA;
+typedef struct tagICONMETRICSW {
+	UINT cbSize;
+	int iHorzSpacing;
+	int iVertSpacing;
+	int iTitleWrap;
+	LOGFONTW lfFont;
+} ICONMETRICSW,*LPICONMETRICSW;
+#endif /*  NOGDI */
+typedef struct tagMINIMIZEDMETRICS {
+	UINT cbSize;
+	int iWidth;
+	int iHorzGap;
+	int iVertGap;
+	int iArrange;
+} MINIMIZEDMETRICS,*LPMINIMIZEDMETRICS;
+typedef struct tagMOUSEKEYS{
+	UINT cbSize;
+	DWORD dwFlags;
+	DWORD iMaxSpeed;
+	DWORD iTimeToMaxSpeed;
+	DWORD iCtrlSpeed;
+	DWORD dwReserved1;
+	DWORD dwReserved2;
+} MOUSEKEYS,*LPMOUSEKEYS;
+#ifndef NOGDI
+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;
+} NONCLIENTMETRICSA,*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;
+} NONCLIENTMETRICSW,*LPNONCLIENTMETRICSW;
+#endif
+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 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 struct tagSTICKYKEYS {
+	DWORD cbSize;
+	DWORD dwFlags;
+} STICKYKEYS,*LPSTICKYKEYS;
+typedef struct tagTOGGLEKEYS {
+	DWORD cbSize;
+	DWORD dwFlags;
+} TOGGLEKEYS;
+typedef struct tagMOUSEHOOKSTRUCT {
+	POINT pt;
+	HWND hwnd;
+	UINT wHitTestCode;
+	DWORD dwExtraInfo;
+} MOUSEHOOKSTRUCT,*LPMOUSEHOOKSTRUCT,*PMOUSEHOOKSTRUCT;
+typedef struct tagTRACKMOUSEEVENT {
+	DWORD cbSize;
+	DWORD dwFlags;
+	HWND  hwndTrack;
+	DWORD dwHoverTime;
+} TRACKMOUSEEVENT,*LPTRACKMOUSEEVENT;
+typedef struct tagTPMPARAMS {
+	UINT cbSize;
+	RECT rcExclude;
+} TPMPARAMS,*LPTPMPARAMS;
+typedef struct tagEVENTMSG {
+	UINT message;
+	UINT paramL;
+	UINT paramH;
+	DWORD time;
+	HWND hwnd;
+} EVENTMSG,*PEVENTMSGMSG,*LPEVENTMSGMSG,*PEVENTMSG,*LPEVENTMSG;
+typedef struct _WINDOWPOS {
+	HWND hwnd;
+	HWND hwndInsertAfter;
+	int x;
+	int y;
+	int cx;
+	int cy;
+	UINT flags;
+} WINDOWPOS,*PWINDOWPOS,*LPWINDOWPOS;
+typedef struct tagNCCALCSIZE_PARAMS {
+	RECT rgrc[3];
+	PWINDOWPOS lppos;
+} NCCALCSIZE_PARAMS, *LPNCCALCSIZE_PARAMS;
+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 struct tagMINMAXINFO {
+	POINT ptReserved;
+	POINT ptMaxSize;
+	POINT ptMaxPosition;
+	POINT ptMinTrackSize;
+	POINT ptMaxTrackSize;
+} MINMAXINFO,*PMINMAXINFO,*LPMINMAXINFO;
+typedef struct tagMDINEXTMENU {
+	HMENU hmenuIn;
+	HMENU hmenuNext;
+	HWND hwndNext;
+} MDINEXTMENU,*PMDINEXTMENU,*LPMDINEXTMENU;
+typedef struct tagMEASUREITEMSTRUCT {
+	UINT CtlType;
+	UINT CtlID;
+	UINT itemID;
+	UINT itemWidth;
+	UINT itemHeight;
+	DWORD itemData;
+} MEASUREITEMSTRUCT,*PMEASUREITEMSTRUCT,*LPMEASUREITEMSTRUCT;
+typedef struct tagDROPSTRUCT {
+	HWND hwndSource;
+	HWND hwndSink;
+	DWORD wFmt;
+	DWORD dwData;
+	POINT ptDrop;
+	DWORD dwControlData;
+} DROPSTRUCT,*PDROPSTRUCT,*LPDROPSTRUCT;
+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 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 struct tagSTYLESTRUCT {
+	DWORD styleOld;
+	DWORD styleNew;
+} STYLESTRUCT,*LPSTYLESTRUCT;
+typedef struct tagALTTABINFO {
+	DWORD cbSize;
+	int   cItems;
+	int   cColumns;
+	int   cRows;
+	int   iColFocus;
+	int   iRowFocus;
+	int   cxItem;
+	int   cyItem;
+	POINT ptStart;
+} ALTTABINFO,*PALTTABINFO,*LPALTTABINFO;
+typedef struct tagCOMBOBOXINFO {
+	DWORD cbSize;
+	RECT rcItem;
+	RECT rcButton;
+	DWORD stateButton;
+	HWND hwndCombo;
+	HWND hwndItem;
+	HWND hwndList;
+} COMBOBOXINFO,*PCOMBOBOXINFO,*LPCOMBOBOXINFO;
+typedef struct tagCURSORINFO {
+	DWORD cbSize;
+	DWORD flags;
+	HCURSOR hCursor;
+	POINT ptScreenPos;
+} CURSORINFO,*PCURSORINFO,*LPCURSORINFO;
+typedef struct tagMENUBARINFO {
+	DWORD cbSize;
+	RECT  rcBar;
+	HMENU hMenu;
+	HWND  hwndMenu;
+	BOOL  fBarFocused:1;
+	BOOL  fFocused:1;
+} MENUBARINFO,*PMENUBARINFO;
+typedef struct tagMENUINFO {
+	DWORD cbSize;
+	DWORD fMask;
+	DWORD dwStyle;
+	UINT cyMax;
+	HBRUSH  hbrBack;
+	DWORD   dwContextHelpID;
+	ULONG_PTR dwMenuData;
+} MENUINFO,*LPMENUINFO;
+typedef MENUINFO CONST *LPCMENUINFO;
+#define CCHILDREN_SCROLLBAR 5
+typedef struct tagSCROLLBARINFO {
+	DWORD cbSize;
+	RECT  rcScrollBar;
+	int   dxyLineButton;
+	int   xyThumbTop;
+	int   xyThumbBottom;
+	int   reserved;
+	DWORD rgstate[CCHILDREN_SCROLLBAR+1];
+} SCROLLBARINFO,*PSCROLLBARINFO,*LPSCROLLBARINFO;
+#if (_WIN32_WINDOWS >= 0x0410)
+#define CCHILDREN_TITLEBAR 5
+typedef struct tagTITLEBARINFO {
+	DWORD cbSize;
+	RECT  rcTitleBar;
+	DWORD rgstate[CCHILDREN_TITLEBAR+1];
+} TITLEBARINFO,*PTITLEBARINFO,*LPTITLEBARINFO;
+#endif
+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;
+typedef struct tagLASTINPUTINFO {
+	UINT cbSize;
+	DWORD dwTime;
+} LASTINPUTINFO,*PLASTINPUTINFO;
+typedef struct tagMONITORINFO {
+	DWORD cbSize;
+	RECT rcMonitor;
+	RECT rcWork;
+	DWORD dwFlags;
+} MONITORINFO,*LPMONITORINFO;
+#define CCHDEVICENAME 32
+#ifdef __cplusplus
+typedef struct tagMONITORINFOEXA : public tagMONITORINFO
+{
+    CHAR    szDevice[CCHDEVICENAME];
+} MONITORINFOEXA, *LPMONITORINFOEXA;
+typedef struct tagMONITORINFOEXW : public tagMONITORINFO
+{
+    WCHAR   szDevice[CCHDEVICENAME];
+} MONITORINFOEXW, *LPMONITORINFOEXW;
+#else
+typedef struct tagMONITORINFOEXA {
+	DWORD	cbSize;
+	RECT	rcMonitor;
+	RECT	rcWork;
+	DWORD	dwFlags;
+	CHAR	szDevice[CCHDEVICENAME];
+} MONITORINFOEXA,*LPMONITORINFOEXA;
+typedef struct tagMONITORINFOEXW {
+	DWORD	cbSize;
+	RECT	rcMonitor;
+	RECT	rcWork;
+	DWORD	dwFlags;
+	WCHAR	szDevice[CCHDEVICENAME];
+} MONITORINFOEXW,*LPMONITORINFOEXW;
+#endif /* __cplusplus */
+typedef struct tagKBDLLHOOKSTRUCT {
+	DWORD vkCode;
+	DWORD scanCode;
+	DWORD flags;
+	DWORD time;
+	DWORD dwExtraInfo;
+} KBDLLHOOKSTRUCT,*LPKBDLLHOOKSTRUCT,*PKBDLLHOOKSTRUCT;
+#if (_WIN32_WINNT >= 0x0500 || _WIN32_WINDOWS >= 0x0410)
+typedef struct {
+  UINT  cbSize;
+  HWND  hwnd;
+  DWORD dwFlags;
+  UINT  uCount;
+  DWORD dwTimeout;
+} FLASHWINFO,*PFLASHWINFO;
+#endif /* (WINVER >= 0x0500 || _WIN32_WINDOWS >= 0x0410) */
+#if (_WIN32_WINNT >= 0x0500 || _WIN32_WINDOWS >= 0x0490)
+typedef struct tagMOUSEMOVEPOINT {
+  int x;
+  int y;
+  DWORD time;
+  ULONG_PTR dwExtraInfo;
+} MOUSEMOVEPOINT,*PMOUSEMOVEPOINT,*LPMOUSEMOVEPOINT;
+#endif
+#if (_WIN32_WINNT >= 0x0403)
+typedef struct tagMOUSEINPUT {
+  LONG dx;
+  LONG dy;
+  DWORD mouseData;
+  DWORD dwFlags;
+  DWORD time;
+  ULONG_PTR dwExtraInfo;
+} MOUSEINPUT,*PMOUSEINPUT;
+typedef struct tagKEYBDINPUT {
+  WORD wVk;
+  WORD wScan;
+  DWORD dwFlags;
+  DWORD time;
+  ULONG_PTR dwExtraInfo;
+} KEYBDINPUT,*PKEYBDINPUT;
+typedef struct tagHARDWAREINPUT {
+  DWORD uMsg;
+  WORD wParamL;
+  WORD wParamH;
+} HARDWAREINPUT,*PHARDWAREINPUT;
+typedef struct tagINPUT {
+  DWORD type;
+  _ANONYMOUS_UNION union {
+		MOUSEINPUT mi;
+		KEYBDINPUT ki;
+		HARDWAREINPUT hi;
+  } DUMMYUNIONNAME;
+} INPUT,*PINPUT,*LPINPUT;
+#endif /* (_WIN32_WINNT >= 0x0403) */
+#if (_WIN32_WINNT >= 0x0601)
+typedef struct _TOUCHINPUT {
+  LONG x;
+  LONG y;
+  HANDLE hSource;
+  DWORD dwID;
+  DWORD dwFlags;
+  DWORD dwMask;
+  DWORD dwTime;
+  ULONG_PTR dwExtraInfo;
+  DWORD cxContact;
+  DWORD cyContact;
+} TOUCHINPUT,
+ *PTOUCHINPUT;
+#endif /* (_WIN32_WINNT >= 0x0601) */
+#if (WINVER >= 0x0500)
+typedef struct tagGUITHREADINFO {
+	DWORD cbSize;
+	DWORD flags;
+	HWND hwndActive;
+	HWND hwndFocus;
+	HWND hwndCapture;
+	HWND hwndMenuOwner;
+	HWND hwndMoveSize;
+	HWND hwndCaret;
+	RECT rcCaret;
+} GUITHREADINFO,*PGUITHREADINFO,*LPGUITHREADINFO;
+typedef VOID (*WINEVENTPROC)(HWINEVENTHOOK,DWORD,HWND,LONG,LONG,DWORD,DWORD);
+#endif /* (WINVER >= 0x0500) */
+#if (_WIN32_WINNT >= 0x0501)
+typedef struct {
+	UINT  cbSize;
+	HDESK hdesk;
+	HWND  hwnd;
+	LUID  luid;
+} BSMINFO,*PBSMINFO;
+DECLARE_HANDLE(HRAWINPUT);
+typedef struct tagRAWINPUTHEADER {
+	DWORD dwType;
+	DWORD dwSize;
+	HANDLE hDevice;
+	WPARAM wParam;
+} RAWINPUTHEADER,*PRAWINPUTHEADER;
+typedef struct tagRAWMOUSE {
+	USHORT usFlags;
+	_ANONYMOUS_UNION union {
+		ULONG ulButtons;
+		_ANONYMOUS_STRUCT struct {
+			USHORT usButtonFlags;
+			USHORT usButtonData;
+		};
+	};
+	ULONG ulRawButtons;
+	LONG lLastX;
+	LONG lLastY;
+	ULONG ulExtraInformation;
+} RAWMOUSE,*PRAWMOUSE,*LPRAWMOUSE;
+typedef struct tagRAWKEYBOARD {
+	USHORT MakeCode;
+	USHORT Flags;
+	USHORT Reserved;
+	USHORT VKey;
+	UINT Message;
+	ULONG ExtraInformation;
+} RAWKEYBOARD,*PRAWKEYBOARD,*LPRAWKEYBOARD;
+typedef struct tagRAWHID {
+	DWORD dwSizeHid;
+	DWORD dwCount;
+	BYTE bRawData;
+} RAWHID,*PRAWHID,*LPRAWHID;
+typedef struct tagRAWINPUT {
+	RAWINPUTHEADER header;
+	union {
+		RAWMOUSE    mouse;
+		RAWKEYBOARD keyboard;
+		RAWHID      hid;
+	} data;
+} RAWINPUT,*PRAWINPUT,*LPRAWINPUT;
+typedef struct tagRAWINPUTDEVICE {
+	USHORT usUsagePage;
+	USHORT usUsage;
+	DWORD dwFlags;
+	HWND hwndTarget;
+} RAWINPUTDEVICE,*PRAWINPUTDEVICE,*LPRAWINPUTDEVICE;
+typedef const RAWINPUTDEVICE *PCRAWINPUTDEVICE;
+typedef struct tagRAWINPUTDEVICELIST {
+	HANDLE hDevice;
+	DWORD dwType;
+} RAWINPUTDEVICELIST,*PRAWINPUTDEVICELIST;
+typedef struct tagRID_DEVICE_INFO_MOUSE {
+	DWORD dwId;
+	DWORD dwNumberOfButtons;
+	DWORD dwSampleRate;
+	BOOL 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;
+	_ANONYMOUS_UNION union {
+		RID_DEVICE_INFO_MOUSE     mouse;
+		RID_DEVICE_INFO_KEYBOARD  keyboard;
+		RID_DEVICE_INFO_HID       hid;
+	} DUMMYUNIONNAME;
+} RID_DEVICE_INFO, *PRID_DEVICE_INFO, *LPRID_DEVICE_INFO;
+#endif /* (_WIN32_WINNT >= 0x0501) */
+
+typedef struct {
+	POINT pt;
+	DWORD mouseData;
+	DWORD flags;
+	DWORD time;
+	ULONG_PTR dwExtraInfo;
+} MSLLHOOKSTRUCT, *PMSLLHOOKSTRUCT;
+
+#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 MAKELPARAM(l,h) ((LPARAM)MAKELONG(l,h))
+#define MAKEWPARAM(l,h) ((WPARAM)MAKELONG(l,h))
+#define MAKELRESULT(l,h) ((LRESULT)MAKELONG(l,h))
+#define POINTSTOPOINT(p,ps) { \
+  (p).x=LOWORD(*(DWORD *)&ps); \
+  (p).y=HIWORD(*(DWORD *)&ps); \
+}
+#define POINTTOPOINTS(p) ((POINTS)MAKELONG((p).x,(p).y))
+
+#ifndef _LPCGUID_DEFINED
+#define _LPCGUID_DEFINED
+typedef const GUID *LPCGUID;
+#endif
+
+#if (_WIN32_WINNT >= 0x0600)
+typedef HANDLE HPOWERNOTIFY;
+
+typedef struct {
+	GUID PowerSetting;
+	DWORD DataLength;
+	UCHAR Data[1];
+} POWERBROADCAST_SETTING, *PPOWERBROADCAST_SETTING;
+
+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;
+#endif
+
+WINUSERAPI HKL WINAPI ActivateKeyboardLayout(HKL,UINT);
+WINUSERAPI BOOL WINAPI AdjustWindowRect(LPRECT,DWORD,BOOL);
+WINUSERAPI BOOL WINAPI AdjustWindowRectEx(LPRECT,DWORD,BOOL,DWORD);
+#if (_WIN32_WINNT >= 0x0500)
+WINUSERAPI BOOL WINAPI AnimateWindow(HWND,DWORD,DWORD);
+#endif /* (_WIN32_WINNT >= 0x0500) */
+WINUSERAPI BOOL WINAPI AnyPopup(void);
+WINUSERAPI BOOL WINAPI AppendMenuA(HMENU,UINT,UINT_PTR,LPCSTR);
+WINUSERAPI BOOL WINAPI AppendMenuW(HMENU,UINT,UINT_PTR,LPCWSTR);
+WINUSERAPI UINT WINAPI ArrangeIconicWindows(HWND);
+WINUSERAPI BOOL WINAPI AttachThreadInput(DWORD,DWORD,BOOL);
+WINUSERAPI HDWP WINAPI BeginDeferWindowPos(int);
+WINUSERAPI HDC WINAPI BeginPaint(HWND,LPPAINTSTRUCT);
+WINUSERAPI BOOL WINAPI BringWindowToTop(HWND);
+WINUSERAPI long WINAPI BroadcastSystemMessage(DWORD,LPDWORD,UINT,WPARAM,LPARAM);
+#if (_WIN32_WINNT >= 0x0400)
+WINUSERAPI long WINAPI BroadcastSystemMessageA(DWORD,LPDWORD,UINT,WPARAM,LPARAM);
+WINUSERAPI long WINAPI BroadcastSystemMessageW(DWORD,LPDWORD,UINT,WPARAM,LPARAM);
+#endif /* (_WIN32_WINNT >= 0x0400) */
+#if (_WIN32_WINNT >= 0x0501)
+WINUSERAPI long WINAPI BroadcastSystemMessageExA(DWORD,LPDWORD,UINT,WPARAM,LPARAM,PBSMINFO);
+WINUSERAPI long WINAPI BroadcastSystemMessageExW(DWORD,LPDWORD,UINT,WPARAM,LPARAM,PBSMINFO);
+#endif /* (_WIN32_WINNT >= 0x0501) */
+WINUSERAPI BOOL WINAPI CallMsgFilterA(LPMSG,INT);
+WINUSERAPI BOOL WINAPI CallMsgFilterW(LPMSG,INT);
+WINUSERAPI LRESULT WINAPI CallNextHookEx(HHOOK,int,WPARAM,LPARAM);
+WINUSERAPI LRESULT WINAPI CallWindowProcA(WNDPROC,HWND,UINT,WPARAM,LPARAM);
+WINUSERAPI LRESULT WINAPI CallWindowProcW(WNDPROC,HWND,UINT,WPARAM,LPARAM);
+WINUSERAPI WORD WINAPI CascadeWindows(HWND,UINT,LPCRECT,UINT,const HWND*);
+WINUSERAPI BOOL WINAPI ChangeClipboardChain(HWND,HWND);
+#ifndef NOGDI
+WINUSERAPI LONG WINAPI ChangeDisplaySettingsA(PDEVMODEA,DWORD);
+WINUSERAPI LONG WINAPI ChangeDisplaySettingsW(PDEVMODEW,DWORD);
+WINUSERAPI LONG WINAPI ChangeDisplaySettingsExA(LPCSTR,LPDEVMODEA,HWND,DWORD,LPVOID);
+WINUSERAPI LONG WINAPI ChangeDisplaySettingsExW(LPCWSTR,LPDEVMODEW,HWND,DWORD,LPVOID);
+#endif
+WINUSERAPI BOOL WINAPI ChangeMenuA(HMENU,UINT,LPCSTR,UINT,UINT);
+WINUSERAPI BOOL WINAPI ChangeMenuW(HMENU,UINT,LPCWSTR,UINT,UINT);
+WINUSERAPI LPSTR WINAPI CharLowerA(LPSTR);
+WINUSERAPI LPWSTR WINAPI CharLowerW(LPWSTR);
+WINUSERAPI DWORD WINAPI CharLowerBuffA(LPSTR,DWORD);
+WINUSERAPI DWORD WINAPI CharLowerBuffW(LPWSTR,DWORD);
+WINUSERAPI LPSTR WINAPI CharNextA(LPCSTR);
+WINUSERAPI LPWSTR WINAPI CharNextW(LPCWSTR);
+WINUSERAPI LPSTR WINAPI CharNextExA(WORD,LPCSTR,DWORD);
+WINUSERAPI LPSTR WINAPI CharPrevA(LPCSTR,LPCSTR);
+WINUSERAPI LPWSTR WINAPI CharPrevW(LPCWSTR,LPCWSTR);
+WINUSERAPI LPSTR WINAPI CharPrevExA(WORD,LPCSTR,LPCSTR,DWORD);
+WINUSERAPI BOOL WINAPI CharToOemA(LPCSTR,LPSTR);
+WINUSERAPI BOOL WINAPI CharToOemW(LPCWSTR,LPSTR);
+WINUSERAPI BOOL WINAPI CharToOemBuffA(LPCSTR,LPSTR,DWORD);
+WINUSERAPI BOOL WINAPI CharToOemBuffW(LPCWSTR,LPSTR,DWORD);
+WINUSERAPI LPSTR WINAPI CharUpperA(LPSTR);
+WINUSERAPI LPWSTR WINAPI CharUpperW(LPWSTR);
+WINUSERAPI DWORD WINAPI CharUpperBuffA(LPSTR,DWORD);
+WINUSERAPI DWORD WINAPI CharUpperBuffW(LPWSTR,DWORD);
+WINUSERAPI BOOL WINAPI CheckDlgButton(HWND,int,UINT);
+WINUSERAPI DWORD WINAPI CheckMenuItem(HMENU,UINT,UINT);
+WINUSERAPI BOOL WINAPI CheckMenuRadioItem(HMENU,UINT,UINT,UINT,UINT);
+WINUSERAPI BOOL WINAPI CheckRadioButton(HWND,int,int,int);
+WINUSERAPI HWND WINAPI ChildWindowFromPoint(HWND,POINT);
+WINUSERAPI HWND WINAPI ChildWindowFromPointEx(HWND,POINT,UINT);
+WINUSERAPI BOOL WINAPI ClientToScreen(HWND,LPPOINT);
+WINUSERAPI BOOL WINAPI ClipCursor(LPCRECT);
+WINUSERAPI BOOL WINAPI CloseClipboard(void);
+WINUSERAPI BOOL WINAPI CloseDesktop(HDESK);
+WINUSERAPI BOOL WINAPI CloseWindow(HWND);
+WINUSERAPI BOOL WINAPI CloseWindowStation(HWINSTA);
+WINUSERAPI int WINAPI CopyAcceleratorTableA(HACCEL,LPACCEL,int);
+WINUSERAPI int WINAPI CopyAcceleratorTableW(HACCEL,LPACCEL,int);
+#define CopyCursor(c) ((HCURSOR)CopyIcon((HICON)(c)))
+WINUSERAPI HICON WINAPI CopyIcon(HICON);
+WINUSERAPI HANDLE WINAPI CopyImage(HANDLE,UINT,int,int,UINT);
+WINUSERAPI BOOL WINAPI CopyRect(LPRECT,LPCRECT);
+WINUSERAPI int WINAPI CountClipboardFormats(void);
+WINUSERAPI HACCEL WINAPI CreateAcceleratorTableA(LPACCEL,int);
+WINUSERAPI HACCEL WINAPI CreateAcceleratorTableW(LPACCEL,int);
+WINUSERAPI BOOL WINAPI CreateCaret(HWND,HBITMAP,int,int);
+WINUSERAPI HCURSOR WINAPI CreateCursor(HINSTANCE,int,int,int,int,PCVOID,PCVOID);
+#ifndef NOGDI
+WINUSERAPI HDESK WINAPI CreateDesktopA(LPCSTR,LPCSTR,LPDEVMODEA,DWORD,ACCESS_MASK,LPSECURITY_ATTRIBUTES);
+WINUSERAPI HDESK WINAPI CreateDesktopW(LPCWSTR,LPCWSTR,LPDEVMODEW,DWORD,ACCESS_MASK,LPSECURITY_ATTRIBUTES);
+#endif
+#define CreateDialogA(h,n,w,f) CreateDialogParamA(h,n,w,f,0)
+#define CreateDialogW(h,n,w,f) CreateDialogParamW(h,n,w,f,0)
+#define CreateDialogIndirectA(h,t,w,f) CreateDialogIndirectParamA(h,t,w,f,0)
+#define CreateDialogIndirectW(h,t,w,f) CreateDialogIndirectParamW(h,t,w,f,0)
+WINUSERAPI HWND WINAPI CreateDialogIndirectParamA(HINSTANCE,LPCDLGTEMPLATE,HWND,DLGPROC,LPARAM);
+WINUSERAPI HWND WINAPI CreateDialogIndirectParamW(HINSTANCE,LPCDLGTEMPLATE,HWND,DLGPROC,LPARAM);
+WINUSERAPI HWND WINAPI CreateDialogParamA(HINSTANCE,LPCSTR,HWND,DLGPROC,LPARAM);
+WINUSERAPI HWND WINAPI CreateDialogParamW(HINSTANCE,LPCWSTR,HWND,DLGPROC,LPARAM);
+WINUSERAPI HICON WINAPI CreateIcon(HINSTANCE,int,int,BYTE,BYTE,const BYTE*,const BYTE*);
+WINUSERAPI HICON WINAPI CreateIconFromResource(PBYTE,DWORD,BOOL,DWORD);
+WINUSERAPI HICON WINAPI CreateIconFromResourceEx(PBYTE,DWORD,BOOL,DWORD,int,int,UINT);
+WINUSERAPI HICON WINAPI CreateIconIndirect(PICONINFO);
+WINUSERAPI HWND WINAPI CreateMDIWindowA(LPCSTR,LPCSTR,DWORD,int,int,int,int,HWND,HINSTANCE,LPARAM);
+WINUSERAPI HWND WINAPI CreateMDIWindowW(LPCWSTR,LPCWSTR,DWORD,int,int,int,int,HWND,HINSTANCE,LPARAM);
+WINUSERAPI HMENU WINAPI CreateMenu(void);
+WINUSERAPI HMENU WINAPI CreatePopupMenu(void);
+#define CreateWindowA(a,b,c,d,e,f,g,h,i,j,k) CreateWindowExA(0,a,b,c,d,e,f,g,h,i,j,k)
+#define CreateWindowW(a,b,c,d,e,f,g,h,i,j,k) CreateWindowExW(0,a,b,c,d,e,f,g,h,i,j,k)
+WINUSERAPI HWND WINAPI CreateWindowExA(DWORD,LPCSTR,LPCSTR,DWORD,int,int,int,int,HWND,HMENU,HINSTANCE,LPVOID);
+WINUSERAPI HWND WINAPI CreateWindowExW(DWORD,LPCWSTR,LPCWSTR,DWORD,int,int,int,int,HWND,HMENU,HINSTANCE,LPVOID);
+WINUSERAPI HWINSTA WINAPI CreateWindowStationA(LPCSTR,DWORD,DWORD,LPSECURITY_ATTRIBUTES);
+WINUSERAPI HWINSTA WINAPI CreateWindowStationW(LPCWSTR,DWORD,DWORD,LPSECURITY_ATTRIBUTES);
+WINUSERAPI LRESULT WINAPI DefDlgProcA(HWND,UINT,WPARAM,LPARAM);
+WINUSERAPI LRESULT WINAPI DefDlgProcW(HWND,UINT,WPARAM,LPARAM);
+WINUSERAPI HDWP WINAPI DeferWindowPos(HDWP,HWND,HWND,int,int,int,int,UINT);
+WINUSERAPI LRESULT WINAPI DefFrameProcA(HWND,HWND,UINT,WPARAM,LPARAM);
+WINUSERAPI LRESULT WINAPI DefFrameProcW(HWND,HWND,UINT,WPARAM,LPARAM);
+#define DefHookProc(c,p,lp,h) CallNextHookEx((HHOOK)*h,c,p,lp)
+WINUSERAPI LRESULT WINAPI DefMDIChildProcA(HWND,UINT,WPARAM,LPARAM);
+WINUSERAPI LRESULT WINAPI DefMDIChildProcW(HWND,UINT,WPARAM,LPARAM);
+#if (_WIN32_WINNT >= 0x0501)
+WINUSERAPI LRESULT WINAPI DefRawInputProc(PRAWINPUT*,INT,UINT);
+#endif
+WINUSERAPI LRESULT WINAPI DefWindowProcA(HWND,UINT,WPARAM,LPARAM);
+WINUSERAPI LRESULT WINAPI DefWindowProcW(HWND,UINT,WPARAM,LPARAM);
+WINUSERAPI BOOL WINAPI DeleteMenu(HMENU,UINT,UINT);
+WINUSERAPI BOOL WINAPI DeregisterShellHookWindow(HWND);
+WINUSERAPI BOOL WINAPI DestroyAcceleratorTable(HACCEL);
+WINUSERAPI BOOL WINAPI DestroyCaret(void);
+WINUSERAPI BOOL WINAPI DestroyCursor(HCURSOR);
+WINUSERAPI BOOL WINAPI DestroyIcon(HICON);
+WINUSERAPI BOOL WINAPI DestroyMenu(HMENU);
+WINUSERAPI BOOL WINAPI DestroyWindow(HWND);
+#define DialogBoxA(i,t,p,f) DialogBoxParamA(i,t,p,f,0)
+#define DialogBoxW(i,t,p,f) DialogBoxParamW(i,t,p,f,0)
+#define DialogBoxIndirectA(i,t,p,f) DialogBoxIndirectParamA(i,t,p,f,0)
+#define DialogBoxIndirectW(i,t,p,f) DialogBoxIndirectParamW(i,t,p,f,0)
+WINUSERAPI int WINAPI DialogBoxIndirectParamA(HINSTANCE,LPCDLGTEMPLATE,HWND,DLGPROC,LPARAM);
+WINUSERAPI int WINAPI DialogBoxIndirectParamW(HINSTANCE,LPCDLGTEMPLATE,HWND,DLGPROC,LPARAM);
+#ifdef _WIN32_WCE
+extern int DialogBoxParamA(HINSTANCE,LPCSTR,HWND,DLGPROC,LPARAM);
+extern int DialogBoxParamW(HINSTANCE,LPCWSTR,HWND,DLGPROC,LPARAM);
+#else
+WINUSERAPI int WINAPI DialogBoxParamA(HINSTANCE,LPCSTR,HWND,DLGPROC,LPARAM);
+WINUSERAPI int WINAPI DialogBoxParamW(HINSTANCE,LPCWSTR,HWND,DLGPROC,LPARAM);
+#endif
+WINUSERAPI LONG WINAPI DispatchMessageA(const MSG*);
+WINUSERAPI LONG WINAPI DispatchMessageW(const MSG*);
+WINUSERAPI int WINAPI DlgDirListA(HWND,LPSTR,int,int,UINT);
+WINUSERAPI int WINAPI DlgDirListW(HWND,LPWSTR,int,int,UINT);
+WINUSERAPI int WINAPI DlgDirListComboBoxA(HWND,LPSTR,int,int,UINT);
+WINUSERAPI int WINAPI DlgDirListComboBoxW(HWND,LPWSTR,int,int,UINT);
+WINUSERAPI BOOL WINAPI DlgDirSelectComboBoxExA(HWND,LPSTR,int,int);
+WINUSERAPI BOOL WINAPI DlgDirSelectComboBoxExW(HWND,LPWSTR,int,int);
+WINUSERAPI BOOL WINAPI DlgDirSelectExA(HWND,LPSTR,int,int);
+WINUSERAPI BOOL WINAPI DlgDirSelectExW(HWND,LPWSTR,int,int);
+WINUSERAPI BOOL WINAPI DragDetect(HWND,POINT);
+WINUSERAPI DWORD WINAPI DragObject(HWND,HWND,UINT,DWORD,HCURSOR);
+WINUSERAPI BOOL WINAPI DrawAnimatedRects(HWND,int,LPCRECT,LPCRECT);
+WINUSERAPI BOOL WINAPI DrawCaption(HWND,HDC,LPCRECT,UINT);
+WINUSERAPI BOOL WINAPI DrawEdge(HDC,LPRECT,UINT,UINT);
+WINUSERAPI BOOL WINAPI DrawFocusRect(HDC,LPCRECT);
+WINUSERAPI BOOL WINAPI DrawFrameControl(HDC,LPRECT,UINT,UINT);
+WINUSERAPI BOOL WINAPI DrawIcon(HDC,int,int,HICON);
+WINUSERAPI BOOL WINAPI DrawIconEx(HDC,int,int,HICON,int,int,UINT,HBRUSH,UINT);
+WINUSERAPI BOOL WINAPI DrawMenuBar(HWND);
+WINUSERAPI BOOL WINAPI DrawStateA(HDC,HBRUSH,DRAWSTATEPROC,LPARAM,WPARAM,int,int,int,int,UINT);
+WINUSERAPI BOOL WINAPI DrawStateW(HDC,HBRUSH,DRAWSTATEPROC,LPARAM,WPARAM,int,int,int,int,UINT);
+WINUSERAPI int WINAPI DrawTextA(HDC,LPCSTR,int,LPRECT,UINT);
+WINUSERAPI int WINAPI DrawTextW(HDC,LPCWSTR,int,LPRECT,UINT);
+WINUSERAPI int WINAPI DrawTextExA(HDC,LPSTR,int,LPRECT,UINT,LPDRAWTEXTPARAMS);
+WINUSERAPI int WINAPI DrawTextExW(HDC,LPWSTR,int,LPRECT,UINT,LPDRAWTEXTPARAMS);
+WINUSERAPI BOOL WINAPI EmptyClipboard(void);
+WINUSERAPI BOOL WINAPI EnableMenuItem(HMENU,UINT,UINT);
+WINUSERAPI BOOL WINAPI EnableScrollBar(HWND,UINT,UINT);
+WINUSERAPI BOOL WINAPI EnableWindow(HWND,BOOL);
+WINUSERAPI BOOL WINAPI EndDeferWindowPos(HDWP);
+WINUSERAPI BOOL WINAPI EndDialog(HWND,int);
+WINUSERAPI BOOL WINAPI EndMenu(void);
+WINUSERAPI BOOL WINAPI EndPaint(HWND,const PAINTSTRUCT*);
+#if (_WIN32_WINNT >= 0x0500)
+WINUSERAPI BOOL WINAPI EndTask(HWND,BOOL,BOOL);
+#endif
+WINUSERAPI BOOL WINAPI EnumChildWindows(HWND,ENUMWINDOWSPROC,LPARAM);
+WINUSERAPI UINT WINAPI EnumClipboardFormats(UINT);
+WINUSERAPI BOOL WINAPI EnumDesktopsA(HWINSTA,DESKTOPENUMPROCA,LPARAM);
+WINUSERAPI BOOL WINAPI EnumDesktopsW(HWINSTA,DESKTOPENUMPROCW,LPARAM);
+WINUSERAPI BOOL WINAPI EnumDesktopWindows(HDESK,ENUMWINDOWSPROC,LPARAM);
+WINUSERAPI BOOL WINAPI EnumDisplayMonitors(HDC,LPCRECT,MONITORENUMPROC,LPARAM);
+#ifndef NOGDI
+WINUSERAPI BOOL WINAPI EnumDisplaySettingsA(LPCSTR,DWORD,PDEVMODEA);
+WINUSERAPI BOOL WINAPI EnumDisplaySettingsW(LPCWSTR,DWORD,PDEVMODEW);
+#if (_WIN32_WINNT >= 0x0500 || _WIN32_WINDOWS >= 0x0410)
+WINUSERAPI BOOL WINAPI EnumDisplaySettingsExA(LPCSTR,DWORD,LPDEVMODEA,DWORD);
+WINUSERAPI BOOL WINAPI EnumDisplaySettingsExW(LPCWSTR,DWORD,LPDEVMODEW,DWORD);
+#endif
+WINUSERAPI BOOL WINAPI EnumDisplayDevicesA(LPCSTR,DWORD,PDISPLAY_DEVICEA,DWORD);
+WINUSERAPI BOOL WINAPI EnumDisplayDevicesW(LPCWSTR,DWORD,PDISPLAY_DEVICEW,DWORD);
+#endif
+WINUSERAPI int WINAPI EnumPropsA(HWND,PROPENUMPROCA);
+WINUSERAPI int WINAPI EnumPropsW(HWND,PROPENUMPROCW);
+WINUSERAPI int WINAPI EnumPropsExA(HWND,PROPENUMPROCEXA,LPARAM);
+WINUSERAPI int WINAPI EnumPropsExW(HWND,PROPENUMPROCEXW,LPARAM);
+#define EnumTaskWindows(h,f,p) EnumThreadWindows((DWORD)h,f,p)
+WINUSERAPI BOOL WINAPI EnumThreadWindows(DWORD,WNDENUMPROC,LPARAM);
+WINUSERAPI BOOL WINAPI EnumWindows(WNDENUMPROC,LPARAM);
+WINUSERAPI BOOL WINAPI EnumWindowStationsA(WINSTAENUMPROCA,LPARAM);
+WINUSERAPI BOOL WINAPI EnumWindowStationsW(WINSTAENUMPROCW,LPARAM);
+WINUSERAPI BOOL WINAPI EqualRect(LPCRECT,LPCRECT);
+#define ExitWindows(r,c) ExitWindowsEx(EWX_LOGOFF,0)
+WINUSERAPI BOOL WINAPI ExitWindowsEx(UINT,DWORD);
+WINUSERAPI HWND WINAPI FindWindowA(LPCSTR,LPCSTR);
+WINUSERAPI HWND WINAPI FindWindowExA(HWND,HWND,LPCSTR,LPCSTR);
+WINUSERAPI HWND WINAPI FindWindowExW(HWND,HWND,LPCWSTR,LPCWSTR);
+WINUSERAPI HWND WINAPI FindWindowW(LPCWSTR,LPCWSTR);
+WINUSERAPI BOOL WINAPI FlashWindow(HWND,BOOL);
+#if (_WIN32_WINNT >= 0x0500 || _WIN32_WINDOWS >= 0x0410)
+WINUSERAPI BOOL WINAPI FlashWindowEx(PFLASHWINFO);
+#endif
+int WINAPI FrameRect(HDC,LPCRECT,HBRUSH);
+WINUSERAPI BOOL WINAPI FrameRgn(HDC,HRGN,HBRUSH,int,int);
+WINUSERAPI HWND WINAPI GetActiveWindow(void);
+WINUSERAPI HWND WINAPI GetAncestor(HWND,UINT);
+WINUSERAPI SHORT WINAPI GetAsyncKeyState(int);
+WINUSERAPI HWND WINAPI GetCapture(void);
+WINUSERAPI UINT WINAPI GetCaretBlinkTime(void);
+WINUSERAPI BOOL WINAPI GetCaretPos(LPPOINT);
+WINUSERAPI BOOL WINAPI GetClassInfoA(HINSTANCE,LPCSTR,LPWNDCLASSA);
+WINUSERAPI BOOL WINAPI GetClassInfoExA(HINSTANCE,LPCSTR,LPWNDCLASSEXA);
+WINUSERAPI BOOL WINAPI GetClassInfoW(HINSTANCE,LPCWSTR,LPWNDCLASSW);
+WINUSERAPI BOOL WINAPI GetClassInfoExW(HINSTANCE,LPCWSTR,LPWNDCLASSEXW);
+WINUSERAPI DWORD WINAPI GetClassLongA(HWND,int);
+WINUSERAPI DWORD WINAPI GetClassLongW(HWND,int);
+#ifdef _WIN64
+WINUSERAPI ULONG_PTR WINAPI GetClassLongPtrA(HWND,int);
+WINUSERAPI ULONG_PTR WINAPI GetClassLongPtrW(HWND,int);
+#else
+#define GetClassLongPtrA GetClassLongA
+#define GetClassLongPtrW GetClassLongW
+#endif
+WINUSERAPI int WINAPI GetClassNameA(HWND,LPSTR,int);
+WINUSERAPI int WINAPI GetClassNameW(HWND,LPWSTR,int);
+WINUSERAPI WORD WINAPI GetClassWord(HWND,int);
+WINUSERAPI BOOL WINAPI GetClientRect(HWND,LPRECT);
+WINUSERAPI HANDLE WINAPI GetClipboardData(UINT);
+WINUSERAPI int WINAPI GetClipboardFormatNameA(UINT,LPSTR,int);
+WINUSERAPI int WINAPI GetClipboardFormatNameW(UINT,LPWSTR,int);
+WINUSERAPI HWND WINAPI GetClipboardOwner(void);
+#if (_WIN32_WINNT >= 0x0500 || _WIN32_WINDOWS >= 0x0410)
+WINUSERAPI DWORD WINAPI GetClipboardSequenceNumber(void);
+#endif
+HWND WINAPI GetClipboardViewer(void);
+WINUSERAPI BOOL WINAPI GetClipCursor(LPRECT);
+WINUSERAPI BOOL WINAPI GetCursorPos(LPPOINT);
+WINUSERAPI HDC WINAPI GetDC(HWND);
+WINUSERAPI HDC WINAPI GetDCEx(HWND,HRGN,DWORD);
+WINUSERAPI HWND WINAPI GetDesktopWindow(void);
+WINUSERAPI long WINAPI GetDialogBaseUnits(void);
+WINUSERAPI int WINAPI GetDlgCtrlID(HWND);
+WINUSERAPI HWND WINAPI GetDlgItem(HWND,int);
+WINUSERAPI UINT WINAPI GetDlgItemInt(HWND,int,PBOOL,BOOL);
+WINUSERAPI UINT WINAPI GetDlgItemTextA(HWND,int,LPSTR,int);
+WINUSERAPI UINT WINAPI GetDlgItemTextW(HWND,int,LPWSTR,int);
+WINUSERAPI UINT WINAPI GetDoubleClickTime(void);
+WINUSERAPI HWND WINAPI GetFocus(void);
+WINUSERAPI HWND WINAPI GetForegroundWindow(void);
+#if (_WIN32_WINNT >= 0x0500)
+WINUSERAPI DWORD WINAPI GetGuiResources(HANDLE,DWORD);
+#endif
+WINUSERAPI BOOL WINAPI GetIconInfo(HICON,PICONINFO);
+WINUSERAPI BOOL WINAPI GetInputState(void);
+WINUSERAPI UINT WINAPI GetKBCodePage(void);
+WINUSERAPI HKL WINAPI GetKeyboardLayout(DWORD);
+WINUSERAPI UINT WINAPI GetKeyboardLayoutList(int,HKL*);
+WINUSERAPI BOOL WINAPI GetKeyboardLayoutNameA(LPSTR);
+WINUSERAPI BOOL WINAPI GetKeyboardLayoutNameW(LPWSTR);
+WINUSERAPI BOOL WINAPI GetKeyboardState(PBYTE);
+WINUSERAPI int WINAPI GetKeyboardType(int);
+WINUSERAPI int WINAPI GetKeyNameTextA(LONG,LPSTR,int);
+WINUSERAPI int WINAPI GetKeyNameTextW(LONG,LPWSTR,int);
+WINUSERAPI SHORT WINAPI GetKeyState(int);
+WINUSERAPI HWND WINAPI GetLastActivePopup(HWND);
+WINUSERAPI HMENU WINAPI GetMenu(HWND);
+WINUSERAPI LONG WINAPI GetMenuCheckMarkDimensions(void);
+WINUSERAPI DWORD WINAPI GetMenuContextHelpId(HMENU);
+WINUSERAPI UINT WINAPI GetMenuDefaultItem(HMENU,UINT,UINT);
+WINUSERAPI int WINAPI GetMenuItemCount(HMENU);
+WINUSERAPI UINT WINAPI GetMenuItemID(HMENU,int);
+WINUSERAPI BOOL WINAPI GetMenuItemInfoA(HMENU,UINT,BOOL,LPMENUITEMINFOA);
+WINUSERAPI BOOL WINAPI GetMenuItemInfoW(HMENU,UINT,BOOL,LPMENUITEMINFOW);
+WINUSERAPI BOOL WINAPI GetMenuItemRect(HWND,HMENU,UINT,LPRECT);
+WINUSERAPI UINT WINAPI GetMenuState(HMENU,UINT,UINT);
+WINUSERAPI int WINAPI GetMenuStringA(HMENU,UINT,LPSTR,int,UINT);
+WINUSERAPI int WINAPI GetMenuStringW(HMENU,UINT,LPWSTR,int,UINT);
+WINUSERAPI BOOL WINAPI GetMessageA(LPMSG,HWND,UINT,UINT);
+WINUSERAPI BOOL WINAPI GetMessageW(LPMSG,HWND,UINT,UINT);
+WINUSERAPI LONG WINAPI GetMessageExtraInfo(void);
+WINUSERAPI DWORD WINAPI GetMessagePos(void);
+WINUSERAPI LONG WINAPI GetMessageTime(void);
+#if (_WIN32_WINNT >= 0x0500 || _WIN32_WINDOWS >= 0x0490)
+WINUSERAPI int WINAPI GetMouseMovePointsEx(UINT,LPMOUSEMOVEPOINT,LPMOUSEMOVEPOINT,int,DWORD);
+#endif
+WINUSERAPI HWND WINAPI GetNextDlgGroupItem(HWND,HWND,BOOL);
+WINUSERAPI HWND WINAPI GetNextDlgTabItem(HWND,HWND,BOOL);
+#define GetNextWindow(h,c) GetWindow(h,c)
+WINUSERAPI HWND WINAPI GetOpenClipboardWindow(void);
+WINUSERAPI HWND WINAPI GetParent(HWND);
+WINUSERAPI int WINAPI GetPriorityClipboardFormat(UINT*,int);
+WINUSERAPI HANDLE WINAPI GetPropA(HWND,LPCSTR);
+WINUSERAPI HANDLE WINAPI GetPropW(HWND,LPCWSTR);
+#if (_WIN32_WINNT >= 0x0501)
+WINUSERAPI UINT WINAPI GetRawInputBuffer(PRAWINPUT,PUINT,UINT);
+WINUSERAPI UINT WINAPI GetRawInputData(HRAWINPUT,UINT,LPVOID,PUINT,UINT);
+WINUSERAPI UINT WINAPI GetRawInputDeviceInfoA(HANDLE,UINT,LPVOID,PUINT);
+WINUSERAPI UINT WINAPI GetRawInputDeviceInfoW(HANDLE,UINT,LPVOID,PUINT);
+WINUSERAPI UINT WINAPI GetRawInputDeviceList(PRAWINPUTDEVICELIST,PUINT,UINT);
+WINUSERAPI UINT WINAPI GetRegisteredRawInputDevices(PRAWINPUTDEVICE,PUINT,UINT);
+#endif
+WINUSERAPI DWORD WINAPI GetQueueStatus(UINT);
+WINUSERAPI BOOL WINAPI GetScrollInfo(HWND,int,LPSCROLLINFO);
+WINUSERAPI int WINAPI GetScrollPos(HWND,int);
+WINUSERAPI BOOL WINAPI GetScrollRange(HWND,int,LPINT,LPINT);
+#if (_WIN32_WINNT >= 0x0500)
+WINUSERAPI HWND WINAPI GetShellWindow(void);
+#endif
+WINUSERAPI HMENU WINAPI GetSubMenu(HMENU,int);
+WINUSERAPI DWORD WINAPI GetSysColor(int);
+WINUSERAPI HBRUSH WINAPI GetSysColorBrush(int);
+#define GetSysModalWindow() (NULL)
+WINUSERAPI HMENU WINAPI GetSystemMenu(HWND,BOOL);
+WINUSERAPI int WINAPI GetSystemMetrics(int);
+WINUSERAPI DWORD WINAPI GetTabbedTextExtentA(HDC,LPCSTR,int,int,LPINT);
+WINUSERAPI DWORD WINAPI GetTabbedTextExtentW(HDC,LPCWSTR,int,int,LPINT);
+WINUSERAPI LONG WINAPI GetWindowLongA(HWND,int);
+WINUSERAPI LONG WINAPI GetWindowLongW(HWND,int);
+#ifdef _WIN64
+WINUSERAPI LONG_PTR WINAPI GetWindowLongPtrA(HWND,int);
+WINUSERAPI LONG_PTR WINAPI GetWindowLongPtrW(HWND,int);
+#else
+#define GetWindowLongPtrA GetWindowLongA
+#define GetWindowLongPtrW GetWindowLongW
+#endif
+WINUSERAPI HDESK WINAPI GetThreadDesktop(DWORD);
+WINUSERAPI HWND WINAPI GetTopWindow(HWND);
+WINUSERAPI BOOL WINAPI GetUpdateRect(HWND,LPRECT,BOOL);
+WINUSERAPI int WINAPI GetUpdateRgn(HWND,HRGN,BOOL);
+WINUSERAPI BOOL WINAPI GetUserObjectInformationA(HANDLE,int,PVOID,DWORD,PDWORD);
+WINUSERAPI BOOL WINAPI GetUserObjectInformationW(HANDLE,int,PVOID,DWORD,PDWORD);
+WINUSERAPI BOOL WINAPI GetUserObjectSecurity(HANDLE,PSECURITY_INFORMATION,PSECURITY_DESCRIPTOR,DWORD,PDWORD);
+WINUSERAPI HWND WINAPI GetWindow(HWND,UINT);
+WINUSERAPI DWORD WINAPI GetWindowContextHelpId(HWND);
+WINUSERAPI HDC WINAPI GetWindowDC(HWND);
+WINUSERAPI BOOL WINAPI GetWindowPlacement(HWND,WINDOWPLACEMENT*);
+WINUSERAPI BOOL WINAPI GetWindowRect(HWND,LPRECT);
+WINUSERAPI int WINAPI GetWindowRgn(HWND,HRGN);
+#define GetWindowTask(hWnd) ((HANDLE)GetWindowThreadProcessId(hWnd, NULL))
+WINUSERAPI int WINAPI GetWindowTextA(HWND,LPSTR,int);
+WINUSERAPI int WINAPI GetWindowTextLengthA(HWND);
+WINUSERAPI int WINAPI GetWindowTextLengthW(HWND);
+WINUSERAPI int WINAPI GetWindowTextW(HWND,LPWSTR,int);
+WINUSERAPI WORD WINAPI GetWindowWord(HWND,int);
+WINUSERAPI BOOL WINAPI GetAltTabInfoA(HWND,int,PALTTABINFO,LPSTR,UINT);
+WINUSERAPI BOOL WINAPI GetAltTabInfoW(HWND,int,PALTTABINFO,LPWSTR,UINT);
+WINUSERAPI BOOL WINAPI GetComboBoxInfo(HWND,PCOMBOBOXINFO);
+WINUSERAPI BOOL WINAPI GetCursorInfo(PCURSORINFO);
+#if (WINVER >= 0x0500)
+WINUSERAPI BOOL WINAPI GetGUIThreadInfo(DWORD,LPGUITHREADINFO);
+#endif
+WINUSERAPI BOOL WINAPI GetLastInputInfo(PLASTINPUTINFO);
+WINUSERAPI DWORD WINAPI GetListBoxInfo(HWND);
+WINUSERAPI BOOL WINAPI GetMenuBarInfo(HWND,LONG,LONG,PMENUBARINFO);
+WINUSERAPI BOOL WINAPI GetMenuInfo(HMENU,LPMENUINFO);
+#if (_WIN32_WINNT >= 0x0500)
+WINUSERAPI BOOL WINAPI GetProcessDefaultLayout(DWORD*);
+#endif
+WINUSERAPI BOOL WINAPI GetScrollBarInfo(HWND,LONG,PSCROLLBARINFO);
+#if (_WIN32_WINDOWS >= 0x0410)
+WINUSERAPI BOOL WINAPI GetTitleBarInfo(HWND,PTITLEBARINFO);
+#endif
+WINUSERAPI BOOL WINAPI GetWindowInfo(HWND,PWINDOWINFO);
+WINUSERAPI BOOL WINAPI GetMonitorInfoA(HMONITOR,LPMONITORINFO);
+WINUSERAPI BOOL WINAPI GetMonitorInfoW(HMONITOR,LPMONITORINFO);
+WINUSERAPI UINT WINAPI GetWindowModuleFileNameA(HWND,LPSTR,UINT);
+WINUSERAPI UINT WINAPI GetWindowModuleFileNameW(HWND,LPWSTR,UINT);
+WINUSERAPI BOOL WINAPI GrayStringA(HDC,HBRUSH,GRAYSTRINGPROC,LPARAM,int,int,int,int,int);
+WINUSERAPI BOOL WINAPI GrayStringW(HDC,HBRUSH,GRAYSTRINGPROC,LPARAM,int,int,int,int,int);
+WINUSERAPI BOOL WINAPI HideCaret(HWND);
+WINUSERAPI BOOL WINAPI HiliteMenuItem(HWND,HMENU,UINT,UINT);
+WINUSERAPI BOOL WINAPI InflateRect(LPRECT,int,int);
+WINUSERAPI BOOL WINAPI InSendMessage(void);
+#if (_WIN32_WINNT >= 0x0500 || _WIN32_WINDOWS >= 0x0410)
+WINUSERAPI DWORD WINAPI InSendMessageEx(LPVOID);
+#endif
+WINUSERAPI BOOL WINAPI InsertMenuA(HMENU,UINT,UINT,UINT,LPCSTR);
+WINUSERAPI BOOL WINAPI InsertMenuW(HMENU,UINT,UINT,UINT,LPCWSTR);
+WINUSERAPI BOOL WINAPI InsertMenuItemA(HMENU,UINT,BOOL,LPCMENUITEMINFOA);
+WINUSERAPI BOOL WINAPI InsertMenuItemW(HMENU,UINT,BOOL,LPCMENUITEMINFOW);
+WINUSERAPI INT WINAPI InternalGetWindowText(HWND,LPWSTR,INT);
+WINUSERAPI BOOL WINAPI IntersectRect(LPRECT,LPCRECT,LPCRECT);
+WINUSERAPI BOOL WINAPI InvalidateRect(HWND,LPCRECT,BOOL);
+WINUSERAPI BOOL WINAPI InvalidateRgn(HWND,HRGN,BOOL);
+WINUSERAPI BOOL WINAPI InvertRect(HDC,LPCRECT);
+WINUSERAPI BOOL WINAPI IsCharAlphaA(CHAR ch);
+WINUSERAPI BOOL WINAPI IsCharAlphaNumericA(CHAR);
+WINUSERAPI BOOL WINAPI IsCharAlphaNumericW(WCHAR);
+WINUSERAPI BOOL WINAPI IsCharAlphaW(WCHAR);
+WINUSERAPI BOOL WINAPI IsCharLowerA(CHAR);
+WINUSERAPI BOOL WINAPI IsCharLowerW(WCHAR);
+WINUSERAPI BOOL WINAPI IsCharUpperA(CHAR);
+WINUSERAPI BOOL WINAPI IsCharUpperW(WCHAR);
+WINUSERAPI BOOL WINAPI IsChild(HWND,HWND);
+WINUSERAPI BOOL WINAPI IsClipboardFormatAvailable(UINT);
+WINUSERAPI BOOL WINAPI IsDialogMessageA(HWND,LPMSG);
+WINUSERAPI BOOL WINAPI IsDialogMessageW(HWND,LPMSG);
+WINUSERAPI UINT WINAPI IsDlgButtonChecked(HWND,int);
+#if(_WIN32_WINNT >= 0x0501)
+WINUSERAPI BOOL WINAPI IsGUIThread(BOOL);
+#endif
+#if(_WIN32_WINNT >= 0x0500)
+WINUSERAPI BOOL WINAPI IsHungAppWindow(HWND);
+#endif
+WINUSERAPI BOOL WINAPI IsIconic(HWND);
+WINUSERAPI BOOL WINAPI IsMenu(HMENU);
+WINUSERAPI BOOL WINAPI IsRectEmpty(LPCRECT);
+WINUSERAPI BOOL WINAPI IsWindow(HWND);
+WINUSERAPI BOOL WINAPI IsWindowEnabled(HWND);
+WINUSERAPI BOOL WINAPI IsWindowUnicode(HWND);
+WINUSERAPI BOOL WINAPI IsWindowVisible(HWND);
+#if (_WIN32_WINNT >= 0x0501)
+WINUSERAPI BOOL WINAPI IsWinEventHookInstalled(DWORD);
+#endif
+WINUSERAPI BOOL WINAPI IsZoomed(HWND);
+WINUSERAPI VOID WINAPI keybd_event(BYTE,BYTE,DWORD,DWORD);
+WINUSERAPI BOOL WINAPI KillTimer(HWND,UINT);
+WINUSERAPI HACCEL WINAPI LoadAcceleratorsA(HINSTANCE,LPCSTR);
+WINUSERAPI HACCEL WINAPI LoadAcceleratorsW(HINSTANCE,LPCWSTR);
+WINUSERAPI HBITMAP WINAPI LoadBitmapA(HINSTANCE,LPCSTR);
+WINUSERAPI HBITMAP WINAPI LoadBitmapW(HINSTANCE,LPCWSTR);
+WINUSERAPI HCURSOR WINAPI LoadCursorA(HINSTANCE,LPCSTR);
+WINUSERAPI HCURSOR WINAPI LoadCursorFromFileA(LPCSTR);
+WINUSERAPI HCURSOR WINAPI LoadCursorFromFileW(LPCWSTR);
+WINUSERAPI HCURSOR WINAPI LoadCursorW(HINSTANCE,LPCWSTR);
+WINUSERAPI HICON WINAPI LoadIconA(HINSTANCE,LPCSTR);
+WINUSERAPI HICON WINAPI LoadIconW(HINSTANCE,LPCWSTR);
+WINUSERAPI HANDLE WINAPI LoadImageA(HINSTANCE,LPCSTR,UINT,int,int,UINT);
+WINUSERAPI HANDLE WINAPI LoadImageW(HINSTANCE,LPCWSTR,UINT,int,int,UINT);
+WINUSERAPI HKL WINAPI LoadKeyboardLayoutA(LPCSTR,UINT);
+WINUSERAPI HKL WINAPI LoadKeyboardLayoutW(LPCWSTR,UINT);
+WINUSERAPI HMENU WINAPI LoadMenuA(HINSTANCE,LPCSTR);
+WINUSERAPI HMENU WINAPI LoadMenuIndirectA(const MENUTEMPLATE*);
+WINUSERAPI HMENU WINAPI LoadMenuIndirectW(const MENUTEMPLATE*);
+WINUSERAPI HMENU WINAPI LoadMenuW(HINSTANCE,LPCWSTR);
+WINUSERAPI int WINAPI LoadStringA(HINSTANCE,UINT,LPSTR,int);
+WINUSERAPI int WINAPI LoadStringW(HINSTANCE,UINT,LPWSTR,int);
+WINUSERAPI BOOL WINAPI LockWindowUpdate(HWND);
+#if (_WIN32_WINNT >= 0x0500)
+WINUSERAPI BOOL WINAPI LockWorkStation(void);
+#endif
+WINUSERAPI int WINAPI LookupIconIdFromDirectory(PBYTE,BOOL);
+WINUSERAPI int WINAPI LookupIconIdFromDirectoryEx(PBYTE,BOOL,int,int,UINT);
+WINUSERAPI BOOL WINAPI MapDialogRect(HWND,LPRECT);
+WINUSERAPI UINT WINAPI MapVirtualKeyA(UINT,UINT);
+WINUSERAPI UINT WINAPI MapVirtualKeyExA(UINT,UINT,HKL);
+WINUSERAPI UINT WINAPI MapVirtualKeyExW(UINT,UINT,HKL);
+WINUSERAPI UINT WINAPI MapVirtualKeyW(UINT,UINT);
+WINUSERAPI int WINAPI MapWindowPoints(HWND,HWND,LPPOINT,UINT);
+WINUSERAPI int WINAPI MenuItemFromPoint(HWND,HMENU,POINT);
+WINUSERAPI BOOL WINAPI MessageBeep(UINT);
+WINUSERAPI int WINAPI MessageBoxA(HWND,LPCSTR,LPCSTR,UINT);
+WINUSERAPI int WINAPI MessageBoxW(HWND,LPCWSTR,LPCWSTR,UINT);
+WINUSERAPI int WINAPI MessageBoxExA(HWND,LPCSTR,LPCSTR,UINT,WORD);
+WINUSERAPI int WINAPI MessageBoxExW(HWND,LPCWSTR,LPCWSTR,UINT,WORD);
+WINUSERAPI int WINAPI MessageBoxIndirectA(CONST MSGBOXPARAMSA*);
+WINUSERAPI int WINAPI MessageBoxIndirectW(CONST MSGBOXPARAMSW*);
+WINUSERAPI BOOL WINAPI ModifyMenuA(HMENU,UINT,UINT,UINT,LPCSTR);
+WINUSERAPI BOOL WINAPI ModifyMenuW(HMENU,UINT,UINT,UINT,LPCWSTR);
+#if (_WIN32_WINNT >= 0x0500 || _WIN32_WINDOWS >= 0x0410)
+WINUSERAPI HMONITOR WINAPI MonitorFromPoint(POINT,DWORD);
+WINUSERAPI HMONITOR WINAPI MonitorFromRect(LPCRECT,DWORD);
+WINUSERAPI HMONITOR WINAPI MonitorFromWindow(HWND,DWORD);
+#endif
+WINUSERAPI void WINAPI mouse_event(DWORD,DWORD,DWORD,DWORD,ULONG_PTR);
+WINUSERAPI BOOL WINAPI MoveWindow(HWND,int,int,int,int,BOOL);
+WINUSERAPI DWORD WINAPI MsgWaitForMultipleObjects(DWORD,CONST HANDLE*,BOOL,DWORD,DWORD);
+WINUSERAPI DWORD WINAPI MsgWaitForMultipleObjectsEx(DWORD,CONST HANDLE*,DWORD,DWORD,DWORD);
+#if (WINVER >= 0x0500)
+WINUSERAPI void WINAPI NotifyWinEvent(DWORD,HWND,LONG,LONG);
+#endif
+WINUSERAPI DWORD WINAPI OemKeyScan(WORD);
+WINUSERAPI BOOL WINAPI OemToCharA(LPCSTR,LPSTR);
+WINUSERAPI BOOL WINAPI OemToCharBuffA(LPCSTR,LPSTR,DWORD);
+WINUSERAPI BOOL WINAPI OemToCharBuffW(LPCSTR,LPWSTR,DWORD);
+WINUSERAPI BOOL WINAPI OemToCharW(LPCSTR,LPWSTR);
+WINUSERAPI BOOL WINAPI OffsetRect(LPRECT,int,int);
+WINUSERAPI BOOL WINAPI OpenClipboard(HWND);
+WINUSERAPI HDESK WINAPI OpenDesktopA(LPSTR,DWORD,BOOL,DWORD);
+WINUSERAPI HDESK WINAPI OpenDesktopW(LPWSTR,DWORD,BOOL,DWORD);
+WINUSERAPI BOOL WINAPI OpenIcon(HWND);
+WINUSERAPI HDESK WINAPI OpenInputDesktop(DWORD,BOOL,DWORD);
+WINUSERAPI HWINSTA WINAPI OpenWindowStationA(LPSTR,BOOL,DWORD);
+WINUSERAPI HWINSTA WINAPI OpenWindowStationW(LPWSTR,BOOL,DWORD);
+WINUSERAPI BOOL WINAPI PaintDesktop(HDC);
+WINUSERAPI BOOL WINAPI PeekMessageA(LPMSG,HWND,UINT,UINT,UINT);
+WINUSERAPI BOOL WINAPI PeekMessageW(LPMSG,HWND,UINT,UINT,UINT);
+#define PostAppMessageA(t,m,w,l) PostThreadMessageA((DWORD)t,m,w,l)
+#define PostAppMessageW(t,m,w,l) PostThreadMessageW((DWORD)t,m,w,l)
+WINUSERAPI BOOL WINAPI PostMessageA(HWND,UINT,WPARAM,LPARAM);
+WINUSERAPI BOOL WINAPI PostMessageW(HWND,UINT,WPARAM,LPARAM);
+WINUSERAPI void WINAPI PostQuitMessage(int);
+WINUSERAPI BOOL WINAPI PostThreadMessageA(DWORD,UINT,WPARAM,LPARAM);
+WINUSERAPI BOOL WINAPI PostThreadMessageW(DWORD,UINT,WPARAM,LPARAM);
+#if (_WIN32_WINNT >= 0x0501)
+WINUSERAPI BOOL WINAPI PrintWindow(HWND,HDC,UINT);
+#endif
+WINUSERAPI BOOL WINAPI PtInRect(LPCRECT,POINT);
+WINUSERAPI HWND WINAPI RealChildWindowFromPoint(HWND,POINT);
+WINUSERAPI UINT WINAPI RealGetWindowClassA(HWND,LPSTR,UINT);
+WINUSERAPI UINT WINAPI RealGetWindowClassW(HWND,LPWSTR,UINT);
+WINUSERAPI BOOL WINAPI RedrawWindow(HWND,LPCRECT,HRGN,UINT);
+WINUSERAPI ATOM WINAPI RegisterClassA(CONST WNDCLASSA*);
+WINUSERAPI ATOM WINAPI RegisterClassW(CONST WNDCLASSW*);
+WINUSERAPI ATOM WINAPI RegisterClassExA(CONST WNDCLASSEXA*);
+WINUSERAPI ATOM WINAPI RegisterClassExW(CONST WNDCLASSEXW*);
+WINUSERAPI UINT WINAPI RegisterClipboardFormatA(LPCSTR);
+WINUSERAPI UINT WINAPI RegisterClipboardFormatW(LPCWSTR);
+#if (WINVER >= 0x0500)
+WINUSERAPI HDEVNOTIFY WINAPI RegisterDeviceNotificationA(HANDLE,LPVOID,DWORD);
+WINUSERAPI HDEVNOTIFY WINAPI RegisterDeviceNotificationW(HANDLE,LPVOID,DWORD);
+#endif
+#if (_WIN32_WINNT >= 0x0600)
+WINUSERAPI HPOWERNOTIFY WINAPI RegisterPowerSettingNotification(HANDLE,LPCGUID,DWORD);
+#endif
+WINUSERAPI BOOL WINAPI RegisterHotKey(HWND,int,UINT,UINT);
+#if (_WIN32_WINNT >= 0x0501)
+WINUSERAPI BOOL WINAPI RegisterRawInputDevices(PCRAWINPUTDEVICE,UINT,UINT);
+#endif
+WINUSERAPI UINT WINAPI RegisterWindowMessageA(LPCSTR);
+WINUSERAPI UINT WINAPI RegisterWindowMessageW(LPCWSTR);
+WINUSERAPI BOOL WINAPI ReleaseCapture(void);
+WINUSERAPI int WINAPI ReleaseDC(HWND,HDC);
+WINUSERAPI BOOL WINAPI RemoveMenu(HMENU,UINT,UINT);
+WINUSERAPI HANDLE WINAPI RemovePropA(HWND,LPCSTR);
+WINUSERAPI HANDLE WINAPI RemovePropW(HWND,LPCWSTR);
+WINUSERAPI BOOL WINAPI ReplyMessage(LRESULT);
+WINUSERAPI BOOL WINAPI ScreenToClient(HWND,LPPOINT);
+WINUSERAPI BOOL WINAPI ScrollDC(HDC,int,int,LPCRECT,LPCRECT,HRGN,LPRECT);
+WINUSERAPI BOOL WINAPI ScrollWindow(HWND,int,int,LPCRECT,LPCRECT);
+WINUSERAPI int WINAPI ScrollWindowEx(HWND,int,int,LPCRECT,LPCRECT,HRGN,LPRECT,UINT);
+WINUSERAPI LONG WINAPI SendDlgItemMessageA(HWND,int,UINT,WPARAM,LPARAM);
+WINUSERAPI LONG WINAPI SendDlgItemMessageW(HWND,int,UINT,WPARAM,LPARAM);
+#if (_WIN32_WINNT >= 0x0403)
+WINUSERAPI UINT WINAPI SendInput(UINT,LPINPUT,int);
+#endif
+WINUSERAPI LRESULT WINAPI SendMessageA(HWND,UINT,WPARAM,LPARAM);
+WINUSERAPI BOOL WINAPI SendMessageCallbackA(HWND,UINT,WPARAM,LPARAM,SENDASYNCPROC,DWORD);
+WINUSERAPI BOOL WINAPI SendMessageCallbackW(HWND,UINT,WPARAM,LPARAM,SENDASYNCPROC,DWORD);
+WINUSERAPI LRESULT WINAPI SendMessageTimeoutA(HWND,UINT,WPARAM,LPARAM,UINT,UINT,PDWORD_PTR);
+WINUSERAPI LRESULT WINAPI SendMessageTimeoutW(HWND,UINT,WPARAM,LPARAM,UINT,UINT,PDWORD_PTR);
+WINUSERAPI LRESULT WINAPI SendMessageW(HWND,UINT,WPARAM,LPARAM);
+WINUSERAPI BOOL WINAPI SendNotifyMessageA(HWND,UINT,WPARAM,LPARAM);
+WINUSERAPI BOOL WINAPI SendNotifyMessageW(HWND,UINT,WPARAM,LPARAM);
+WINUSERAPI HWND WINAPI SetActiveWindow(HWND);
+WINUSERAPI HWND WINAPI SetCapture(HWND hWnd);
+WINUSERAPI BOOL WINAPI SetCaretBlinkTime(UINT);
+WINUSERAPI BOOL WINAPI SetCaretPos(int,int);
+WINUSERAPI DWORD WINAPI SetClassLongA(HWND,int,LONG);
+WINUSERAPI DWORD WINAPI SetClassLongW(HWND,int,LONG);
+#ifdef _WIN64
+WINUSERAPI ULONG_PTR WINAPI SetClassLongPtrA(HWND,int,LONG_PTR);
+WINUSERAPI ULONG_PTR WINAPI SetClassLongPtrW(HWND,int,LONG_PTR);
+#else
+#define SetClassLongPtrA SetClassLongA
+#define SetClassLongPtrW SetClassLongW
+#endif
+WINUSERAPI WORD WINAPI SetClassWord(HWND,int,WORD);
+WINUSERAPI HANDLE WINAPI SetClipboardData(UINT,HANDLE);
+WINUSERAPI HWND WINAPI SetClipboardViewer(HWND);
+WINUSERAPI HCURSOR WINAPI SetCursor(HCURSOR);
+WINUSERAPI BOOL WINAPI SetCursorPos(int,int);
+WINUSERAPI VOID WINAPI SetDebugErrorLevel(DWORD);
+WINUSERAPI BOOL WINAPI SetDlgItemInt(HWND,int,UINT,BOOL);
+WINUSERAPI BOOL WINAPI SetDlgItemTextA(HWND,int,LPCSTR);
+WINUSERAPI BOOL WINAPI SetDlgItemTextW(HWND,int,LPCWSTR);
+WINUSERAPI BOOL WINAPI SetDoubleClickTime(UINT);
+WINUSERAPI HWND WINAPI SetFocus(HWND);
+WINUSERAPI BOOL WINAPI SetForegroundWindow(HWND);
+WINUSERAPI BOOL WINAPI SetKeyboardState(PBYTE);
+WINUSERAPI BOOL WINAPI SetMenu(HWND,HMENU);
+WINUSERAPI BOOL WINAPI SetMenuContextHelpId(HMENU,DWORD);
+WINUSERAPI BOOL WINAPI SetMenuDefaultItem(HMENU,UINT,UINT);
+WINUSERAPI BOOL WINAPI SetMenuInfo(HMENU,LPCMENUINFO);
+WINUSERAPI BOOL WINAPI SetMenuItemBitmaps(HMENU,UINT,UINT,HBITMAP,HBITMAP);
+WINUSERAPI BOOL WINAPI SetMenuItemInfoA(HMENU,UINT,BOOL,LPCMENUITEMINFOA);
+WINUSERAPI BOOL WINAPI SetMenuItemInfoW( HMENU,UINT,BOOL,LPCMENUITEMINFOW);
+WINUSERAPI LPARAM WINAPI SetMessageExtraInfo(LPARAM);
+WINUSERAPI BOOL WINAPI SetMessageQueue(int);
+WINUSERAPI HWND WINAPI SetParent(HWND,HWND);
+#if (_WIN32_WINNT >= 0x0500)
+WINUSERAPI BOOL WINAPI SetProcessDefaultLayout(DWORD);
+#endif /* (_WIN32_WINNT >= 0x0500) */
+WINUSERAPI BOOL WINAPI SetProcessWindowStation(HWINSTA);
+WINUSERAPI BOOL WINAPI SetPropA(HWND,LPCSTR,HANDLE);
+WINUSERAPI BOOL WINAPI SetPropW(HWND,LPCWSTR,HANDLE);
+WINUSERAPI BOOL WINAPI SetRect(LPRECT,int,int,int,int);
+WINUSERAPI BOOL WINAPI SetRectEmpty(LPRECT);
+WINUSERAPI int WINAPI SetScrollInfo(HWND,int,LPCSCROLLINFO,BOOL);
+WINUSERAPI int WINAPI SetScrollPos(HWND,int,int,BOOL);
+WINUSERAPI BOOL WINAPI SetScrollRange(HWND,int,int,int,BOOL);
+WINUSERAPI BOOL WINAPI SetSysColors(int,const INT *,const COLORREF *);
+#define SetSysModalWindow(h) (NULL)
+WINUSERAPI BOOL WINAPI SetSystemCursor(HCURSOR,DWORD);
+WINUSERAPI BOOL WINAPI SetThreadDesktop(HDESK);
+WINUSERAPI UINT WINAPI SetTimer(HWND,UINT,UINT,TIMERPROC);
+WINUSERAPI BOOL WINAPI SetUserObjectInformationA(HANDLE,int,PVOID,DWORD);
+WINUSERAPI BOOL WINAPI SetUserObjectInformationW(HANDLE,int,PVOID,DWORD);
+WINUSERAPI BOOL WINAPI SetUserObjectSecurity(HANDLE,PSECURITY_INFORMATION,PSECURITY_DESCRIPTOR);
+#if (WINVER >= 0x0500)
+WINUSERAPI HWINEVENTHOOK WINAPI SetWinEventHook(UINT,UINT,HMODULE,WINEVENTPROC,DWORD,DWORD,UINT);
+#endif
+WINUSERAPI BOOL WINAPI SetWindowContextHelpId(HWND,DWORD);
+WINUSERAPI LONG WINAPI SetWindowLongA(HWND,int,LONG);
+WINUSERAPI LONG WINAPI SetWindowLongW(HWND,int,LONG);
+#ifdef _WIN64
+WINUSERAPI LONG_PTR WINAPI SetWindowLongPtrA(HWND,int,LONG_PTR);
+WINUSERAPI LONG_PTR WINAPI SetWindowLongPtrW(HWND,int,LONG_PTR);
+#else
+#define SetWindowLongPtrA SetWindowLongA
+#define SetWindowLongPtrW SetWindowLongW
+#endif
+WINUSERAPI BOOL WINAPI SetWindowPlacement(HWND hWnd,const WINDOWPLACEMENT*);
+WINUSERAPI BOOL WINAPI SetWindowPos(HWND,HWND,int,int,int,int,UINT);
+WINUSERAPI int WINAPI SetWindowRgn(HWND,HRGN,BOOL);
+WINUSERAPI HHOOK WINAPI SetWindowsHookA(int,HOOKPROC);
+WINUSERAPI HHOOK WINAPI SetWindowsHookW(int,HOOKPROC);
+WINUSERAPI HHOOK WINAPI SetWindowsHookExA(int,HOOKPROC,HINSTANCE,DWORD);
+WINUSERAPI HHOOK WINAPI SetWindowsHookExW(int,HOOKPROC,HINSTANCE,DWORD);
+WINUSERAPI BOOL WINAPI SetWindowTextA(HWND,LPCSTR);
+WINUSERAPI BOOL WINAPI SetWindowTextW(HWND,LPCWSTR);
+WINUSERAPI WORD WINAPI SetWindowWord(HWND,int,WORD);
+WINUSERAPI BOOL WINAPI ShowCaret(HWND);
+WINUSERAPI int WINAPI ShowCursor(BOOL);
+WINUSERAPI BOOL WINAPI ShowOwnedPopups(HWND,BOOL);
+WINUSERAPI BOOL WINAPI ShowScrollBar(HWND,int,BOOL);
+WINUSERAPI BOOL WINAPI ShowWindow(HWND,int);
+WINUSERAPI BOOL WINAPI ShowWindowAsync(HWND,int);
+WINUSERAPI BOOL WINAPI SubtractRect(LPRECT,LPCRECT,LPCRECT);
+WINUSERAPI BOOL WINAPI SwapMouseButton(BOOL);
+WINUSERAPI BOOL WINAPI SwitchDesktop(HDESK);
+#if(_WIN32_WINNT >= 0x0500)
+WINUSERAPI VOID WINAPI SwitchToThisWindow(HWND,BOOL);
+#endif /* (_WIN32_WINNT >= 0x0500) */
+WINUSERAPI BOOL WINAPI SystemParametersInfoA(UINT,UINT,PVOID,UINT);
+WINUSERAPI BOOL WINAPI SystemParametersInfoW(UINT,UINT,PVOID,UINT);
+WINUSERAPI LONG WINAPI TabbedTextOutA(HDC,int,int,LPCSTR,int,int,LPINT,int);
+WINUSERAPI LONG WINAPI TabbedTextOutW(HDC,int,int,LPCWSTR,int,int,LPINT,int);
+WINUSERAPI WORD WINAPI TileWindows(HWND,UINT,LPCRECT,UINT,const HWND *);
+WINUSERAPI int WINAPI ToAscii(UINT,UINT,PBYTE,LPWORD,UINT);
+WINUSERAPI int WINAPI ToAsciiEx(UINT,UINT,PBYTE,LPWORD,UINT,HKL);
+WINUSERAPI int WINAPI ToUnicode(UINT,UINT,PBYTE,LPWSTR,int,UINT);
+WINUSERAPI int WINAPI ToUnicodeEx(UINT,UINT,PBYTE,LPWSTR,int,UINT,HKL);
+WINUSERAPI BOOL WINAPI TrackMouseEvent(LPTRACKMOUSEEVENT);
+WINUSERAPI BOOL WINAPI TrackPopupMenu(HMENU,UINT,int,int,int,HWND,LPCRECT);
+WINUSERAPI BOOL WINAPI TrackPopupMenuEx(HMENU,UINT,int,int,HWND,LPTPMPARAMS);
+WINUSERAPI int WINAPI TranslateAcceleratorA(HWND,HACCEL,LPMSG);
+WINUSERAPI int WINAPI TranslateAcceleratorW(HWND,HACCEL,LPMSG);
+WINUSERAPI BOOL WINAPI TranslateMDISysAccel(HWND,LPMSG);
+WINUSERAPI BOOL WINAPI TranslateMessage(const MSG*);
+WINUSERAPI BOOL WINAPI UnhookWindowsHook(int,HOOKPROC);
+WINUSERAPI BOOL WINAPI UnhookWindowsHookEx(HHOOK);
+#if (WINVER >= 0x0500)
+WINUSERAPI BOOL WINAPI UnhookWinEvent(HWINEVENTHOOK);
+#endif
+WINUSERAPI BOOL WINAPI UnionRect(LPRECT,LPCRECT,LPCRECT);
+WINUSERAPI BOOL WINAPI UnloadKeyboardLayout(HKL);
+WINUSERAPI BOOL WINAPI UnregisterClassA(LPCSTR,HINSTANCE);
+WINUSERAPI BOOL WINAPI UnregisterClassW(LPCWSTR,HINSTANCE);
+#if (_WIN32_WINDOWS >= 0x0410 || _WIN32_WINNT >= 0x0500)
+WINUSERAPI BOOL WINAPI UnregisterDeviceNotification(HANDLE);
+#endif
+#if (_WIN32_WINNT >= 0x0600)
+WINUSERAPI BOOL WINAPI UnregisterPowerSettingNotification(HPOWERNOTIFY);
+#endif
+WINUSERAPI BOOL WINAPI UnregisterHotKey(HWND,int);
+WINUSERAPI BOOL WINAPI UpdateWindow(HWND);
+#if (_WIN32_WINNT >= 0x0500)
+WINUSERAPI BOOL WINAPI UserHandleGrantAccess(HANDLE,HANDLE,BOOL);
+#endif
+WINUSERAPI BOOL WINAPI ValidateRect(HWND,LPCRECT);
+WINUSERAPI BOOL WINAPI ValidateRgn(HWND,HRGN);
+WINUSERAPI SHORT WINAPI VkKeyScanA(CHAR);
+WINUSERAPI SHORT WINAPI VkKeyScanExA(CHAR,HKL);
+WINUSERAPI SHORT WINAPI VkKeyScanExW(WCHAR,HKL);
+WINUSERAPI SHORT WINAPI VkKeyScanW(WCHAR);
+WINUSERAPI DWORD WINAPI WaitForInputIdle(HANDLE,DWORD);
+WINUSERAPI BOOL WINAPI WaitMessage(void);
+WINUSERAPI HWND WINAPI WindowFromDC(HDC hDC);
+WINUSERAPI HWND WINAPI WindowFromPoint(POINT);
+WINUSERAPI UINT WINAPI WinExec(LPCSTR,UINT);
+WINUSERAPI BOOL WINAPI WinHelpA(HWND,LPCSTR,UINT,DWORD);
+WINUSERAPI BOOL WINAPI WinHelpW(HWND,LPCWSTR,UINT,DWORD);
+WINUSERAPI int WINAPIV wsprintfA(LPSTR,LPCSTR,...);
+WINUSERAPI int WINAPIV wsprintfW(LPWSTR,LPCWSTR,...);
+WINUSERAPI int WINAPI wvsprintfA(LPSTR,LPCSTR,va_list arglist);
+WINUSERAPI int WINAPI wvsprintfW(LPWSTR,LPCWSTR,va_list arglist);
+#if (_WIN32_WINNT >= 0x0500 || _WIN32_WINDOWS >= 0x0490)
+WINUSERAPI BOOL WINAPI AllowSetForegroundWindow(DWORD);
+WINUSERAPI BOOL WINAPI LockSetForegroundWindow(UINT);
+#endif
+#if (_WIN32_WINNT >= 0x0500)
+WINUSERAPI BOOL WINAPI SetLayeredWindowAttributes(HWND,COLORREF,BYTE,DWORD);
+#ifndef NOGDI
+WINUSERAPI BOOL WINAPI UpdateLayeredWindow(HWND,HDC,POINT*,SIZE*,HDC,POINT*,COLORREF,BLENDFUNCTION*,DWORD);
+#endif
+#endif
+#if (_WIN32_WINNT >= 0x0501)
+WINUSERAPI BOOL WINAPI GetLayeredWindowAttributes(HWND,COLORREF*,BYTE*,DWORD*);
+#endif
+
+#if (_WIN32_WINNT >= 0x0601)
+BOOL WINAPI CloseTouchInputHandle(HANDLE hTouchInput);
+BOOL WINAPI GetTouchInputInfo(HANDLE hTouchInput, UINT cInputs, PTOUCHINPUT pInputs, int cbSize);
+BOOL WINAPI IsTouchWindow(HWND hWnd, PULONG pulFlags);
+BOOL WINAPI RegisterTouchWindow(HWND hWnd, ULONG ulFlags);
+BOOL WINAPI UnregisterTouchWindow(HWND hWnd);
+#endif
+
+#ifdef UNICODE
+#define EDITWORDBREAKPROC EDITWORDBREAKPROCW
+#define PROPENUMPROC PROPENUMPROCW
+#define PROPENUMPROCEX PROPENUMPROCEXW
+#define DEKSTOPENUMPROC DEKSTOPENUMPROCW
+#define WINSTAENUMPROC WINSTAENUMPROCW
+#define PROPENUMPROC PROPENUMPROCW
+#define PROPENUMPROCEX PROPENUMPROCEXW
+#define MAKEINTRESOURCE MAKEINTRESOURCEW
+typedef WNDCLASSW WNDCLASS,*LPWNDCLASS,*PWNDCLASS;
+typedef WNDCLASSEXW WNDCLASSEX,*LPWNDCLASSEX,*PWNDCLASSEX;
+typedef MENUITEMINFOW MENUITEMINFO,*LPMENUITEMINFO;
+typedef LPCMENUITEMINFOW LPCMENUITEMINFO;
+typedef MSGBOXPARAMSW MSGBOXPARAMS,*PMSGBOXPARAMS,*LPMSGBOXPARAMS;
+typedef HIGHCONTRASTW HIGHCONTRAST,*LPHIGHCONTRAST;
+typedef SERIALKEYSW SERIALKEYS,*LPSERIALKEYS;
+typedef SOUNDSENTRYW SOUNDSENTRY,*LPSOUNDSENTRY;
+typedef CREATESTRUCTW CREATESTRUCT, *LPCREATESTRUCT;
+typedef CBT_CREATEWNDW CBT_CREATEWND, *LPCBT_CREATEWND;
+typedef MDICREATESTRUCTW MDICREATESTRUCT,*LPMDICREATESTRUCT;
+typedef MULTIKEYHELPW MULTIKEYHELP,*PMULTIKEYHELP,*LPMULTIKEYHELP;
+typedef MONITORINFOEXW MONITORINFOEX, *LPMONITORINFOEX;
+#define AppendMenu AppendMenuW
+#define BroadcastSystemMessage BroadcastSystemMessageW
+#define BroadcastSystemMessageEx BroadcastSystemMessageExW
+#define CallMsgFilter CallMsgFilterW
+#define CallWindowProc CallWindowProcW
+#define ChangeMenu ChangeMenuW
+#define CharLower CharLowerW
+#define CharLowerBuff CharLowerBuffW
+#define CharNext CharNextW
+#define CharPrev CharPrevW
+#define CharToOem CharToOemW
+#define CharToOemBuff CharToOemBuffW
+#define CharUpper CharUpperW
+#define CharUpperBuff CharUpperBuffW
+#define CopyAcceleratorTable CopyAcceleratorTableW
+#define CreateAcceleratorTable CreateAcceleratorTableW
+#define CreateDialog CreateDialogW
+#define CreateDialogIndirect CreateDialogIndirectW
+#define CreateDialogIndirectParam CreateDialogIndirectParamW
+#define CreateDialogParam CreateDialogParamW
+#define CreateMDIWindow CreateMDIWindowW
+#define CreateWindow CreateWindowW
+#define CreateWindowEx CreateWindowExW
+#define CreateWindowStation CreateWindowStationW
+#define DefDlgProc DefDlgProcW
+#define DefFrameProc DefFrameProcW
+#define DefMDIChildProc DefMDIChildProcW
+#define DefWindowProc DefWindowProcW
+#define DialogBox DialogBoxW
+#define DialogBoxIndirect DialogBoxIndirectW
+#define DialogBoxIndirectParam DialogBoxIndirectParamW
+#define DialogBoxParam DialogBoxParamW
+#define DispatchMessage DispatchMessageW
+#define DlgDirList DlgDirListW
+#define DlgDirListComboBox DlgDirListComboBoxW
+#define DlgDirSelectComboBoxEx DlgDirSelectComboBoxExW
+#define DlgDirSelectEx DlgDirSelectExW
+#define DrawState DrawStateW
+#define DrawText DrawTextW
+#define DrawTextEx DrawTextExW
+#define EnumDesktops EnumDesktopsW
+#define EnumProps EnumPropsW
+#define EnumPropsEx EnumPropsExW
+#define EnumWindowStations EnumWindowStationsW
+#define FindWindow FindWindowW
+#define FindWindowEx FindWindowExW
+#define GetClassInfo GetClassInfoW
+#define GetClassInfoEx GetClassInfoExW
+#define GetClassLong GetClassLongW
+#define GetClassLongPtr GetClassLongPtrW
+#define GetClassName GetClassNameW
+#define GetClipboardFormatName GetClipboardFormatNameW
+#define GetDlgItemText GetDlgItemTextW
+#define GetKeyboardLayoutName GetKeyboardLayoutNameW
+#define GetKeyNameText GetKeyNameTextW
+#define GetMenuItemInfo GetMenuItemInfoW
+#define GetMenuString GetMenuStringW
+#define GetMessage GetMessageW
+#define GetMonitorInfo GetMonitorInfoW
+#define GetProp GetPropW
+#define GetRawInputDeviceInfo GetRawInputDeviceInfoW
+#define GetTabbedTextExtent GetTabbedTextExtentW
+#define GetUserObjectInformation GetUserObjectInformationW
+#define GetWindowLong GetWindowLongW
+#define GetWindowLongPtr GetWindowLongPtrW
+#define GetWindowText GetWindowTextW
+#define GetWindowTextLength GetWindowTextLengthW
+#define GetAltTabInfo GetAltTabInfoW
+#define GetWindowModuleFileName GetWindowModuleFileNameW
+#define GrayString GrayStringW
+#define InsertMenu InsertMenuW
+#define InsertMenuItem InsertMenuItemW
+#define IsCharAlpha IsCharAlphaW
+#define IsCharAlphaNumeric IsCharAlphaNumericW
+#define IsCharLower IsCharLowerW
+#define IsCharUpper IsCharUpperW
+#define IsDialogMessage IsDialogMessageW
+#define LoadAccelerators LoadAcceleratorsW
+#define LoadBitmap LoadBitmapW
+#define LoadCursor LoadCursorW
+#define LoadCursorFromFile LoadCursorFromFileW
+#define LoadIcon LoadIconW
+#define LoadImage LoadImageW
+#define LoadKeyboardLayout LoadKeyboardLayoutW
+#define LoadMenu LoadMenuW
+#define LoadMenuIndirect LoadMenuIndirectW
+#define LoadString LoadStringW
+#define MapVirtualKey MapVirtualKeyW
+#define MapVirtualKeyEx MapVirtualKeyExW
+#define MessageBox MessageBoxW
+#define MessageBoxEx MessageBoxExW
+#define MessageBoxIndirect MessageBoxIndirectW
+#define ModifyMenu ModifyMenuW
+#define OemToChar OemToCharW
+#define OemToCharBuff OemToCharBuffW
+#define OpenDesktop OpenDesktopW
+#define OpenWindowStation OpenWindowStationW
+#define PeekMessage PeekMessageW
+#define PostAppMessage PostAppMessageW
+#define PostMessage PostMessageW
+#define PostThreadMessage PostThreadMessageW
+#define RealGetWindowClass RealGetWindowClassW
+#define RegisterClass RegisterClassW
+#define RegisterClassEx RegisterClassExW
+#define RegisterClipboardFormat RegisterClipboardFormatW
+#define RegisterDeviceNotification RegisterDeviceNotificationW
+#define RegisterWindowMessage RegisterWindowMessageW
+#define RemoveProp RemovePropW
+#define SendDlgItemMessage SendDlgItemMessageW
+#define SendMessage SendMessageW
+#define SendMessageCallback SendMessageCallbackW
+#define SendMessageTimeout SendMessageTimeoutW
+#define SendNotifyMessage SendNotifyMessageW
+#define SetClassLong SetClassLongW
+#define SetClassLongPtr SetClassLongPtrW
+#define SetDlgItemText SetDlgItemTextW
+#define SetMenuItemInfo SetMenuItemInfoW
+#define SetProp SetPropW
+#define SetUserObjectInformation SetUserObjectInformationW
+#define SetWindowLong SetWindowLongW
+#define SetWindowLongPtr SetWindowLongPtrW
+#define SetWindowsHook SetWindowsHookW
+#define SetWindowsHookEx SetWindowsHookExW
+#define SetWindowText SetWindowTextW
+#define SystemParametersInfo SystemParametersInfoW
+#define TabbedTextOut TabbedTextOutW
+#define TranslateAccelerator TranslateAcceleratorW
+#define UnregisterClass UnregisterClassW
+#define VkKeyScan VkKeyScanW
+#define VkKeyScanEx VkKeyScanExW
+#define WinHelp WinHelpW
+#define wsprintf wsprintfW
+#define wvsprintf wvsprintfW
+#ifndef NOGDI
+typedef ICONMETRICSW ICONMETRICS,*LPICONMETRICS;
+typedef NONCLIENTMETRICSW NONCLIENTMETRICS,*LPNONCLIENTMETRICS;
+#define ChangeDisplaySettings ChangeDisplaySettingsW
+#define ChangeDisplaySettingsEx ChangeDisplaySettingsExW
+#define CreateDesktop CreateDesktopW
+#define EnumDisplaySettings EnumDisplaySettingsW
+#define EnumDisplaySettingsEx EnumDisplaySettingsExW
+#define EnumDisplayDevices EnumDisplayDevicesW
+#endif /* NOGDI */
+#else /* UNICODE */
+#define EDITWORDBREAKPROC EDITWORDBREAKPROCA
+#define PROPENUMPROC PROPENUMPROCA
+#define PROPENUMPROCEX PROPENUMPROCEXA
+#define DEKSTOPENUMPROC DEKSTOPENUMPROCA
+#define WINSTAENUMPROC WINSTAENUMPROCA
+#define PROPENUMPROC PROPENUMPROCA
+#define PROPENUMPROCEX PROPENUMPROCEXA
+#define MAKEINTRESOURCE MAKEINTRESOURCEA
+typedef WNDCLASSA WNDCLASS,*LPWNDCLASS,*PWNDCLASS;
+typedef WNDCLASSEXA WNDCLASSEX,*LPWNDCLASSEX,*PWNDCLASSEX;
+typedef MENUITEMINFOA MENUITEMINFO,*LPMENUITEMINFO;
+typedef LPCMENUITEMINFOA LPCMENUITEMINFO;
+typedef MSGBOXPARAMSA MSGBOXPARAMS,*PMSGBOXPARAMS,*LPMSGBOXPARAMS;
+typedef HIGHCONTRASTA HIGHCONTRAST,*LPHIGHCONTRAST;
+typedef SERIALKEYSA SERIALKEYS,*LPSERIALKEYS;
+typedef SOUNDSENTRYA SOUNDSENTRY,*LPSOUNDSENTRY;
+typedef CREATESTRUCTA CREATESTRUCT, *LPCREATESTRUCT;
+typedef CBT_CREATEWNDA CBT_CREATEWND, *LPCBT_CREATEWND;
+typedef MDICREATESTRUCTA MDICREATESTRUCT,*LPMDICREATESTRUCT;
+typedef MULTIKEYHELPA MULTIKEYHELP,*PMULTIKEYHELP,*LPMULTIKEYHELP;
+typedef MONITORINFOEXA MONITORINFOEX, *LPMONITORINFOEX;
+#define AppendMenu AppendMenuA
+#define BroadcastSystemMessage BroadcastSystemMessageA
+#define BroadcastSystemMessageEx BroadcastSystemMessageExA
+#define CallMsgFilter CallMsgFilterA
+#define CallWindowProc CallWindowProcA
+#define ChangeMenu ChangeMenuA
+#define CharLower CharLowerA
+#define CharLowerBuff CharLowerBuffA
+#define CharNext CharNextA
+#define CharPrev CharPrevA
+#define CharToOem CharToOemA
+#define CharToOemBuff CharToOemBuffA
+#define CharUpper CharUpperA
+#define CharUpperBuff CharUpperBuffA
+#define CopyAcceleratorTable CopyAcceleratorTableA
+#define CreateAcceleratorTable CreateAcceleratorTableA
+#define CreateDialog CreateDialogA
+#define CreateDialogIndirect CreateDialogIndirectA
+#define CreateDialogIndirectParam CreateDialogIndirectParamA
+#define CreateDialogParam CreateDialogParamA
+#define CreateMDIWindow CreateMDIWindowA
+#define CreateWindow CreateWindowA
+#define CreateWindowEx CreateWindowExA
+#define CreateWindowStation CreateWindowStationA
+#define DefDlgProc DefDlgProcA
+#define DefFrameProc DefFrameProcA
+#define DefMDIChildProc DefMDIChildProcA
+#define DefWindowProc DefWindowProcA
+#define DialogBox DialogBoxA
+#define DialogBoxIndirect DialogBoxIndirectA
+#define DialogBoxIndirectParam DialogBoxIndirectParamA
+#define DialogBoxParam DialogBoxParamA
+#define DispatchMessage DispatchMessageA
+#define DlgDirList DlgDirListA
+#define DlgDirListComboBox DlgDirListComboBoxA
+#define DlgDirSelectComboBoxEx DlgDirSelectComboBoxExA
+#define DlgDirSelectEx DlgDirSelectExA
+#define DrawState DrawStateA
+#define DrawText DrawTextA
+#define DrawTextEx DrawTextExA
+#define EnumDesktops EnumDesktopsA
+#define EnumProps EnumPropsA
+#define EnumPropsEx EnumPropsExA
+#define EnumWindowStations EnumWindowStationsA
+#define FindWindow FindWindowA
+#define FindWindowEx FindWindowExA
+#define GetClassInfo GetClassInfoA
+#define GetClassInfoEx GetClassInfoExA
+#define GetClassLong GetClassLongA
+#define GetClassLongPtr GetClassLongPtrA
+#define GetClassName GetClassNameA
+#define GetClipboardFormatName GetClipboardFormatNameA
+#define GetDlgItemText GetDlgItemTextA
+#define GetKeyboardLayoutName GetKeyboardLayoutNameA
+#define GetKeyNameText GetKeyNameTextA
+#define GetMenuItemInfo GetMenuItemInfoA
+#define GetMenuString GetMenuStringA
+#define GetMessage GetMessageA
+#define GetMonitorInfo GetMonitorInfoA
+#define GetProp GetPropA
+#define GetRawInputDeviceInfo GetRawInputDeviceInfoA
+#define GetTabbedTextExtent GetTabbedTextExtentA
+#define GetUserObjectInformation GetUserObjectInformationA
+#define GetWindowLong GetWindowLongA
+#define GetWindowLongPtr GetWindowLongPtrA
+#define GetWindowText GetWindowTextA
+#define GetWindowTextLength GetWindowTextLengthA
+#define GetAltTabInfo GetAltTabInfoA
+#define GetWindowModuleFileName GetWindowModuleFileNameA
+#define GrayString GrayStringA
+#define InsertMenu InsertMenuA
+#define InsertMenuItem InsertMenuItemA
+#define IsCharAlpha IsCharAlphaA
+#define IsCharAlphaNumeric IsCharAlphaNumericA
+#define IsCharLower IsCharLowerA
+#define IsCharUpper IsCharUpperA
+#define IsDialogMessage IsDialogMessageA
+#define LoadAccelerators LoadAcceleratorsA
+#define LoadBitmap LoadBitmapA
+#define LoadCursor LoadCursorA
+#define LoadIcon LoadIconA
+#define LoadCursorFromFile LoadCursorFromFileA
+#define LoadImage LoadImageA
+#define LoadKeyboardLayout LoadKeyboardLayoutA
+#define LoadMenu LoadMenuA
+#define LoadMenuIndirect LoadMenuIndirectA
+#define LoadString LoadStringA
+#define MapVirtualKey MapVirtualKeyA
+#define MapVirtualKeyEx MapVirtualKeyExA
+#define MessageBox MessageBoxA
+#define MessageBoxEx MessageBoxExA
+#define MessageBoxIndirect MessageBoxIndirectA
+#define ModifyMenu ModifyMenuA
+#define OemToChar OemToCharA
+#define OemToCharBuff OemToCharBuffA
+#define OpenDesktop OpenDesktopA
+#define OpenWindowStation OpenWindowStationA
+#define PeekMessage PeekMessageA
+#define PostAppMessage PostAppMessageA
+#define PostMessage PostMessageA
+#define PostThreadMessage PostThreadMessageA
+#define RealGetWindowClass RealGetWindowClassA
+#define RegisterClass RegisterClassA
+#define RegisterClassEx RegisterClassExA
+#define RegisterClipboardFormat RegisterClipboardFormatA
+#define RegisterDeviceNotification RegisterDeviceNotificationA
+#define RegisterWindowMessage RegisterWindowMessageA
+#define RemoveProp RemovePropA
+#define SendDlgItemMessage SendDlgItemMessageA
+#define SendMessage SendMessageA
+#define SendMessageCallback SendMessageCallbackA
+#define SendMessageTimeout SendMessageTimeoutA
+#define SendNotifyMessage SendNotifyMessageA
+#define SetClassLong SetClassLongA
+#define SetClassLongPtr SetClassLongPtrA
+#define SetDlgItemText SetDlgItemTextA
+#define SetMenuItemInfo SetMenuItemInfoA
+#define SetProp SetPropA
+#define SetUserObjectInformation SetUserObjectInformationA
+#define SetWindowLong SetWindowLongA
+#define SetWindowLongPtr SetWindowLongPtrA
+#define SetWindowsHook SetWindowsHookA
+#define SetWindowsHookEx SetWindowsHookExA
+#define SetWindowText SetWindowTextA
+#define SystemParametersInfo SystemParametersInfoA
+#define TabbedTextOut TabbedTextOutA
+#define TranslateAccelerator TranslateAcceleratorA
+#define UnregisterClass UnregisterClassA
+#define VkKeyScan VkKeyScanA
+#define VkKeyScanEx VkKeyScanExA
+#define WinHelp WinHelpA
+#define wsprintf wsprintfA
+#define wvsprintf wvsprintfA
+#ifndef NOGDI
+typedef ICONMETRICSA ICONMETRICS,*LPICONMETRICS;
+typedef NONCLIENTMETRICSA NONCLIENTMETRICS,*LPNONCLIENTMETRICS;
+#define ChangeDisplaySettings ChangeDisplaySettingsA
+#define ChangeDisplaySettingsEx ChangeDisplaySettingsExA
+#define CreateDesktop CreateDesktopA
+#define EnumDisplaySettings EnumDisplaySettingsA
+#define EnumDisplaySettingsEx EnumDisplaySettingsExA
+#define EnumDisplayDevices EnumDisplayDevicesA
+#endif /* NOGDI */
+#endif /* UNICODE */
+#endif /* RC_INVOKED */
+
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/winver.h
===================================================================
--- Daodan/MinGW/include/winver.h	(revision 1046)
+++ Daodan/MinGW/include/winver.h	(revision 1046)
@@ -0,0 +1,202 @@
+/*
+ * winver.h
+ *
+ * Declarations supporting the API for retrieval of version informatation
+ * from a PE-COFF file's associated version resources.
+ *
+ * $Id: winver.h,v 9f500a353390 2016/06/03 22:05:03 keithmarshall $
+ *
+ * Written by Anders Norlander <anorland@hem2.passagen.se>
+ * Copyright (C) 1998, 1999, 2002, 2006, 2009, 2015, MinGW.org Project
+ *
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ *
+ */
+#ifndef _WINVER_H
+#define _WINVER_H
+#pragma GCC system_header
+
+#define VS_FILE_INFO		RT_VERSION
+#define VS_VERSION_INFO 		 1
+#define VS_USER_DEFINED 	       100
+#define VS_FFI_SIGNATURE	0xFEEF04BD
+#define VS_FFI_STRUCVERSION	   0x10000
+#define VS_FFI_FILEFLAGSMASK	      0x3F
+#define VS_FF_DEBUG			 1
+#define VS_FF_PRERELEASE		 2
+#define VS_FF_PATCHED			 4
+#define VS_FF_PRIVATEBUILD		 8
+#define VS_FF_INFOINFERRED		16
+#define VS_FF_SPECIALBUILD		32
+#define VOS_UNKNOWN			 0
+#define VOS_DOS 		   0x10000
+#define VOS_OS216		   0x20000
+#define VOS_OS232		   0x30000
+#define VOS_NT			   0x40000
+#define VOS__BASE			 0
+#define VOS__WINDOWS16			 1
+#define VOS__PM16			 2
+#define VOS__PM32			 3
+#define VOS__WINDOWS32			 4
+#define VOS_DOS_WINDOWS16	   0x10001
+#define VOS_DOS_WINDOWS32	   0x10004
+#define VOS_OS216_PM16		   0x20002
+#define VOS_OS232_PM32		   0x30003
+#define VOS_NT_WINDOWS32	   0x40004
+#define VFT_UNKNOWN			 0
+#define VFT_APP 			 1
+#define VFT_DLL 			 2
+#define VFT_DRV 			 3
+#define VFT_FONT			 4
+#define VFT_VXD 			 5
+#define VFT_STATIC_LIB			 7
+#define VFT2_UNKNOWN			 0
+#define VFT2_DRV_PRINTER		 1
+#define VFT2_DRV_KEYBOARD		 2
+#define VFT2_DRV_LANGUAGE		 3
+#define VFT2_DRV_DISPLAY		 4
+#define VFT2_DRV_MOUSE			 5
+#define VFT2_DRV_NETWORK		 6
+#define VFT2_DRV_SYSTEM 		 7
+#define VFT2_DRV_INSTALLABLE		 8
+#define VFT2_DRV_SOUND			 9
+#define VFT2_DRV_COMM			10
+#define VFT2_DRV_INPUTMETHOD		11
+#define VFT2_FONT_RASTER		 1
+#define VFT2_FONT_VECTOR		 2
+#define VFT2_FONT_TRUETYPE		 3
+#define VFFF_ISSHAREDFILE		 1
+#define VFF_CURNEDEST			 1
+#define VFF_FILEINUSE			 2
+#define VFF_BUFFTOOSMALL		 4
+#define VIFF_FORCEINSTALL		 1
+#define VIFF_DONTDELETEOLD		 2
+#define VIF_TEMPFILE			 1
+#define VIF_MISMATCH			 2
+#define VIF_SRCOLD			 4
+#define VIF_DIFFLANG			 8
+#define VIF_DIFFCODEPG			16
+#define VIF_DIFFTYPE			32
+#define VIF_WRITEPROT			64
+#define VIF_FILEINUSE		       128
+#define VIF_OUTOFSPACE		       256
+#define VIF_ACCESSVIOLATION	       512
+#define VIF_SHARINGVIOLATION	      1024
+#define VIF_CANNOTCREATE	      2048
+#define VIF_CANNOTDELETE	      4096
+#define VIF_CANNOTRENAME	      8192
+#define VIF_CANNOTDELETECUR	     16384
+#define VIF_OUTOFMEMORY 	     32768
+#define VIF_CANNOTREADSRC	     65536
+#define VIF_CANNOTREADDST	   0x20000
+#define VIF_BUFFTOOSMALL	   0x40000
+
+#ifndef RC_INVOKED
+
+_BEGIN_C_DECLS
+
+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;
+
+/* The following functions are each provided with prototype variants
+ * supporting strings in ANSI or UTF-16LE encodings, distinguised by
+ * the "A" suffix in the ANSI case, or the "W" suffix for UTF-16LE.
+ * Each pair is associated with a single generic function name, which
+ * is mapped to the appropriate prototype by the __AW_SUFFIXED__ macro,
+ * according to the defined state of the UNICODE macro; representation
+ * of the generic name becomes the ANSI prototype when UNICODE is NOT
+ * defined, or the UTF-16LE prototype when UNICODE is defined.
+ */
+#define VerFindFile __AW_SUFFIXED__( VerFindFile )
+DWORD WINAPI VerFindFileA( DWORD, LPSTR, LPSTR, LPSTR, LPSTR, PUINT, LPSTR, PUINT );
+DWORD WINAPI VerFindFileW( DWORD, LPWSTR, LPWSTR, LPWSTR, LPWSTR, PUINT, LPWSTR, PUINT );
+
+#define VerInstallFile __AW_SUFFIXED__( VerInstallFile )
+DWORD WINAPI VerInstallFileA( DWORD, LPSTR, LPSTR, LPSTR, LPSTR, LPSTR, LPSTR, PUINT );
+DWORD WINAPI VerInstallFileW( DWORD, LPWSTR, LPWSTR, LPWSTR, LPWSTR, LPWSTR, LPWSTR, PUINT );
+
+#define GetFileVersionInfoSize __AW_SUFFIXED__( GetFileVersionInfoSize )
+DWORD WINAPI GetFileVersionInfoSizeA( LPCSTR, PDWORD );
+DWORD WINAPI GetFileVersionInfoSizeW( LPCWSTR, PDWORD );
+
+#define GetFileVersionInfo __AW_SUFFIXED__( GetFileVersionInfo )
+BOOL WINAPI GetFileVersionInfoA( LPCSTR, DWORD, DWORD, PVOID );
+BOOL WINAPI GetFileVersionInfoW( LPCWSTR, DWORD, DWORD, PVOID );
+
+#if NTDDI_VERSION >= NTDDI_VISTA
+/* Windows-Vista added extended variants of the preceding two functions,
+ * each taking one additional DWORD flags argument, (in first position).
+ *
+ * WARNING: Although documented as supported by Windows-Vista and later,
+ * the ANSI variants of these two functions appear to be unsupported in
+ * VERSION.DLL, prior to Windows-8.  If using these functions, you are
+ * advised to use a LoadLibrary/GetProcAddress (or dlopen/dlsym) probe,
+ * to confirm availability of the API entry points within VERSION.DLL
+ * on the run-time host.
+ */
+#define GetFileVersionInfoEx __AW_SUFFIXED__( GetFileVersionInfoEx )
+#define GetFileVersionInfoSizeEx __AW_SUFFIXED__( GetFileVersionInfoSizeEx )
+#if NTDDI_VERSION >= NTDDI_WIN8
+DWORD WINAPI GetFileVersionInfoSizeExA( DWORD, LPCSTR, PDWORD );
+BOOL WINAPI GetFileVersionInfoExA( DWORD, LPCSTR, DWORD, DWORD, PVOID );
+#endif
+DWORD WINAPI GetFileVersionInfoSizeExW( DWORD, LPCWSTR, PDWORD );
+BOOL WINAPI GetFileVersionInfoExW( DWORD, LPCWSTR, DWORD, DWORD, PVOID );
+
+/* Values permitted for the flags in each of these functions; these may be
+ * combined by logically adding them together (using the OR operator).
+ */
+#define FILE_VER_GET_LOCALISED	      0x01
+#define FILE_VER_GET_NEUTRAL	      0x02
+/*
+ * ...and an additional one, for the GetFileVersionInfoEx() function
+ * only; (must be combined with the value derived from the preceding
+ * pair, as used in a prior call to GetFileVersionInfoSizeEx()).
+ */
+#define FILE_VER_GET_PREFETCHED       0x04
+#endif
+
+#define VerLanguageName __AW_SUFFIXED__( VerLanguageName )
+DWORD WINAPI VerLanguageNameA( DWORD, LPSTR, DWORD );
+DWORD WINAPI VerLanguageNameW( DWORD, LPWSTR, DWORD );
+
+#define VerQueryValue __AW_SUFFIXED__( VerQueryValue )
+BOOL WINAPI VerQueryValueA( LPCVOID, LPCSTR, LPVOID *, PUINT );
+BOOL WINAPI VerQueryValueW( LPCVOID, LPCWSTR, LPVOID *, PUINT );
+
+_END_C_DECLS
+
+#endif /* ! defined RC_INVOKED */
+#endif /* ! defined _WINVER_H: $RCSfile: winver.h,v $: end of file */
Index: Daodan/MinGW/include/ws2spi.h
===================================================================
--- Daodan/MinGW/include/ws2spi.h	(revision 1046)
+++ Daodan/MinGW/include/ws2spi.h	(revision 1046)
@@ -0,0 +1,202 @@
+/*
+ * ws2spi.h
+ *
+ * Winsock 2 Service Provider Interface.
+ *
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+#ifndef _WS2SPI_H
+#define _WS2SPI_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#include <winsock2.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+#define WSPAPI WSAAPI
+#define WSPDESCRIPTION_LEN 255
+
+#ifndef RC_INVOKED
+
+typedef struct WSPData {
+	WORD wVersion;
+	WORD wHighVersion;
+	WCHAR szDescription[WSPDESCRIPTION_LEN+1];
+} WSPDATA, FAR *LPWSPDATA;
+typedef struct _WSATHREADID {
+	HANDLE ThreadHandle;
+	DWORD Reserved;
+} WSATHREADID, FAR *LPWSATHREADID;
+
+typedef BOOL (CALLBACK FAR *LPBLOCKINGCALLBACK)(DWORD);
+typedef VOID (CALLBACK FAR *LPWSAUSERAPC)(DWORD);
+
+/* Prototypes for service provider procedure table */
+typedef SOCKET (WSPAPI *LPWSPACCEPT)(SOCKET,LPSOCKADDR,LPINT,LPCONDITIONPROC,DWORD,LPINT);
+typedef INT (WSPAPI *LPWSPADDRESSTOSTRING)(LPSOCKADDR,DWORD,LPWSAPROTOCOL_INFOW,LPWSTR,LPDWORD,LPINT);
+typedef INT (WSPAPI *LPWSPASYNCSELECT)(SOCKET,HWND,UINT,LONG,LPINT);
+typedef INT (WSPAPI *LPWSPBIND)(SOCKET,const struct sockaddr*,INT,LPINT);
+typedef INT (WSPAPI *LPWSPCANCELBLOCKINGCALL)(LPINT);
+typedef INT (WSPAPI *LPWSPCLEANUP)(LPINT);
+typedef INT (WSPAPI *LPWSPCLOSESOCKET)(SOCKET,LPINT);
+typedef INT (WSPAPI *LPWSPCONNECT)(SOCKET,const struct sockaddr*,INT,LPWSABUF,LPWSABUF,LPQOS,LPQOS,LPINT);
+typedef INT (WSPAPI *LPWSPDUPLICATESOCKET)(SOCKET,DWORD,LPWSAPROTOCOL_INFOW,LPINT);
+typedef INT (WSPAPI *LPWSPENUMNETWORKEVENTS)(SOCKET,WSAEVENT,LPWSANETWORKEVENTS,LPINT);
+typedef INT (WSPAPI *LPWSPEVENTSELECT)(SOCKET,WSAEVENT,LONG,LPINT);
+typedef BOOL (WSPAPI *LPWSPGETOVERLAPPEDRESULT)(SOCKET,LPWSAOVERLAPPED,LPDWORD,BOOL,LPDWORD,LPINT);
+typedef INT (WSPAPI *LPWSPGETPEERNAME)(SOCKET,LPSOCKADDR,LPINT,LPINT);
+typedef BOOL (WSPAPI *LPWSPGETQOSBYNAME)(SOCKET,LPWSABUF,LPQOS,LPINT);
+typedef INT (WSPAPI *LPWSPGETSOCKNAME)(SOCKET,LPSOCKADDR,LPINT,LPINT);
+typedef INT (WSPAPI *LPWSPGETSOCKOPT)(SOCKET,INT,INT,CHAR FAR*,LPINT,LPINT);
+typedef INT (WSPAPI *LPWSPIOCTL)(SOCKET,DWORD,LPVOID,DWORD,LPVOID,DWORD,LPDWORD,
+	     LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE,LPWSATHREADID,LPINT);
+typedef SOCKET (WSPAPI *LPWSPJOINLEAF)(SOCKET,const struct sockaddr*,INT,LPWSABUF,LPWSABUF,LPQOS,LPQOS,DWORD,LPINT);
+typedef INT (WSPAPI *LPWSPLISTEN)(SOCKET,INT,LPINT);
+typedef INT (WSPAPI *LPWSPRECV)(SOCKET,LPWSABUF,DWORD,LPDWORD,LPDWORD,
+LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE,LPWSATHREADID,LPINT);
+typedef INT (WSPAPI *LPWSPRECVDISCONNECT)(SOCKET,LPWSABUF,LPINT);
+typedef INT (WSPAPI *LPWSPRECVFROM)(SOCKET,LPWSABUF,DWORD,LPDWORD,LPDWORD,LPSOCKADDR,
+LPINT,LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE,LPWSATHREADID,LPINT);
+typedef INT (WSPAPI *LPWSPSELECT)(INT,LPFD_SET,LPFD_SET,LPFD_SET,CONST TIMEVAL*,LPINT);
+typedef INT (WSPAPI *LPWSPSEND)(SOCKET,LPWSABUF,DWORD,LPDWORD,DWORD,
+LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE,LPWSATHREADID,LPINT);
+typedef INT (WSPAPI *LPWSPSENDDISCONNECT)(SOCKET,LPWSABUF,LPINT);
+typedef INT (WSPAPI *LPWSPSENDTO)(SOCKET,LPWSABUF,DWORD,LPDWORD,DWORD,const struct sockaddr*,
+	     INT,LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE,LPWSATHREADID,LPINT);
+typedef INT (WSPAPI *LPWSPSETSOCKOPT)(SOCKET,INT,INT,CONST CHAR FAR*,INT,LPINT);
+typedef INT (WSPAPI *LPWSPSHUTDOWN)(SOCKET,INT,LPINT);
+typedef SOCKET (WSPAPI *LPWSPSOCKET)(INT,INT,INT,LPWSAPROTOCOL_INFOW,GROUP,DWORD,LPINT);
+typedef INT (WSPAPI *LPWSPSTRINGTOADDRESS)(LPWSTR,INT,LPWSAPROTOCOL_INFOW,LPSOCKADDR,LPINT,LPINT);
+
+/* Service provider procedure table */
+typedef struct _WSPPROC_TABLE {
+  LPWSPACCEPT lpWSPAccept;
+  LPWSPADDRESSTOSTRING lpWSPAddressToString;
+  LPWSPASYNCSELECT lpWSPAsyncSelect;
+  LPWSPBIND lpWSPBind;
+  LPWSPCANCELBLOCKINGCALL lpWSPCancelBlockingCall;
+  LPWSPCLEANUP lpWSPCleanup;
+  LPWSPCLOSESOCKET lpWSPCloseSocket;
+  LPWSPCONNECT lpWSPConnect;
+  LPWSPDUPLICATESOCKET lpWSPDuplicateSocket;
+  LPWSPENUMNETWORKEVENTS lpWSPEnumNetworkEvents;
+  LPWSPEVENTSELECT lpWSPEventSelect;
+  LPWSPGETOVERLAPPEDRESULT lpWSPGetOverlappedResult;
+  LPWSPGETPEERNAME lpWSPGetPeerName;
+  LPWSPGETSOCKNAME lpWSPGetSockName;
+  LPWSPGETSOCKOPT lpWSPGetSockOpt;
+  LPWSPGETQOSBYNAME lpWSPGetQOSByName;
+  LPWSPIOCTL lpWSPIoctl;
+  LPWSPJOINLEAF lpWSPJoinLeaf;
+  LPWSPLISTEN lpWSPListen;
+  LPWSPRECV lpWSPRecv;
+  LPWSPRECVDISCONNECT lpWSPRecvDisconnect;
+  LPWSPRECVFROM lpWSPRecvFrom;
+  LPWSPSELECT lpWSPSelect;
+  LPWSPSEND lpWSPSend;
+  LPWSPSENDDISCONNECT lpWSPSendDisconnect;
+  LPWSPSENDTO lpWSPSendTo;
+  LPWSPSETSOCKOPT lpWSPSetSockOpt;
+  LPWSPSHUTDOWN lpWSPShutdown;
+  LPWSPSOCKET lpWSPSocket;
+  LPWSPSTRINGTOADDRESS lpWSPStringToAddress;
+} WSPPROC_TABLE, FAR* LPWSPPROC_TABLE;
+
+/* Prototypes for service provider upcall procedure table */
+typedef BOOL (WSPAPI *LPWPUCLOSEEVENT)(WSAEVENT,LPINT);
+typedef INT (WSPAPI *LPWPUCLOSESOCKETHANDLE)(SOCKET,LPINT);
+typedef INT (WSPAPI *LPWPUCLOSETHREAD)(LPWSATHREADID,LPINT);
+typedef WSAEVENT (WSPAPI *LPWPUCREATEEVENT)(LPINT);
+typedef SOCKET (WSPAPI *LPWPUCREATESOCKETHANDLE)(DWORD,DWORD,LPINT);
+typedef SOCKET (WSPAPI *LPWPUFDISSET)(SOCKET,LPFD_SET);
+typedef INT (WSPAPI *LPWPUGETPROVIDERPATH)(LPGUID,LPWSTR,LPINT,LPINT);
+typedef SOCKET (WSPAPI *LPWPUMODIFYIFSHANDLE)(DWORD,SOCKET,LPINT);
+typedef INT (WSPAPI *LPWPUOPENCURRENTTHREAD)(LPWSATHREADID,LPINT);
+typedef BOOL (WSPAPI *LPWPUPOSTMESSAGE)(HWND,UINT,WPARAM,LPARAM);
+typedef INT (WSPAPI *LPWPUQUERYBLOCKINGCALLBACK)(DWORD,LPBLOCKINGCALLBACK FAR*,LPDWORD,LPINT);
+typedef INT (WSPAPI *LPWPUQUERYSOCKETHANDLECONTEXT)(SOCKET,LPDWORD,LPINT);
+typedef INT (WSPAPI *LPWPUQUEUEAPC)(LPWSATHREADID,LPWSAUSERAPC,DWORD,LPINT);
+typedef BOOL (WSPAPI *LPWPURESETEVENT)(WSAEVENT,LPINT);
+typedef BOOL (WSPAPI *LPWPUSETEVENT)(WSAEVENT,LPINT);
+/* Available only directly from the DLL */
+typedef INT (WSPAPI *LPWPUCOMPLETEOVERLAPPEDREQUEST)(SOCKET,LPWSAOVERLAPPED,DWORD,DWORD,LPINT);
+
+/* Service Provider upcall table */
+typedef struct _WSPUPCALLTABLE {
+	LPWPUCLOSEEVENT lpWPUCloseEvent;
+	LPWPUCLOSESOCKETHANDLE lpWPUCloseSocketHandle;
+	LPWPUCREATEEVENT lpWPUCreateEvent;
+	LPWPUCREATESOCKETHANDLE lpWPUCreateSocketHandle;
+	LPWPUFDISSET lpWPUFDIsSet;
+	LPWPUGETPROVIDERPATH lpWPUGetProviderPath;
+	LPWPUMODIFYIFSHANDLE lpWPUModifyIFSHandle;
+	LPWPUPOSTMESSAGE lpWPUPostMessage;
+	LPWPUQUERYBLOCKINGCALLBACK lpWPUQueryBlockingCallback;
+	LPWPUQUERYSOCKETHANDLECONTEXT lpWPUQuerySocketHandleContext;
+	LPWPUQUEUEAPC lpWPUQueueApc;
+	LPWPURESETEVENT lpWPUResetEvent;
+	LPWPUSETEVENT lpWPUSetEvent;
+	LPWPUOPENCURRENTTHREAD lpWPUOpenCurrentThread;
+	LPWPUCLOSETHREAD lpWPUCloseThread;
+} WSPUPCALLTABLE, FAR* LPWSPUPCALLTABLE;
+
+typedef INT (WSPAPI *LPWSPSTARTUP)(WORD,LPWSPDATA,LPWSAPROTOCOL_INFOW,WSPUPCALLTABLE,LPWSPPROC_TABLE);
+
+/* Prototypes for service provider namespace procedure table */
+typedef INT (WSPAPI *LPNSPCLEANUP)(LPGUID);
+typedef INT (WSPAPI *LPNSPGETSERVICECLASSINFO)(LPGUID,LPDWORD,LPWSASERVICECLASSINFOW);
+typedef INT (WSPAPI *LPNSPINSTALLSERVICECLASS)(LPGUID,LPWSASERVICECLASSINFOW);
+typedef INT (WSPAPI *LPNSPLOOKUPSERVICEBEGIN)(LPGUID,LPWSAQUERYSETW,LPWSASERVICECLASSINFOW,DWORD,LPHANDLE);
+typedef INT (WSPAPI *LPNSPLOOKUPSERVICEEND)(HANDLE);
+typedef INT (WSPAPI *LPNSPLOOKUPSERVICENEXT)(HANDLE,DWORD,LPDWORD,LPWSAQUERYSET);
+typedef INT (WSPAPI *LPNSPREMOVESERVICECLASS)(LPGUID,LPGUID);
+typedef INT (WSPAPI *LPNSPSETSERVICE)(LPGUID,LPWSASERVICECLASSINFOW,LPWSAQUERYSETW,WSAESETSERVICEOP,DWORD);
+
+typedef struct _NSP_ROUTINE {
+  DWORD cbSize;
+  DWORD dwMajorVersion;
+  DWORD dwMinorVersion;
+  LPNSPCLEANUP NSPCleanup;
+  LPNSPLOOKUPSERVICEBEGIN NSPLookupServiceBegin;
+  LPNSPLOOKUPSERVICENEXT NSPLookupServiceNext;
+  LPNSPLOOKUPSERVICEEND NSPLookupServiceEnd;
+  LPNSPSETSERVICE NSPSetService;
+  LPNSPINSTALLSERVICECLASS NSPInstallServiceClass;
+  LPNSPREMOVESERVICECLASS NSPRemoveServiceClass;
+  LPNSPGETSERVICECLASSINFO NSPGetServiceClassInfo;
+} NSP_ROUTINE, *PNSP_ROUTINE, *LPNSP_ROUTINE;
+
+INT WSPAPI NSPStartup(LPGUID,LPNSP_ROUTINE);
+
+/* WinSock 2 DLL function prototypes */
+INT WSPAPI WPUCompleteOverlappedRequest(SOCKET,LPWSAOVERLAPPED,DWORD,DWORD,LPINT);
+INT WSPAPI WSPStartup(WORD,LPWSPDATA,LPWSAPROTOCOL_INFOW,WSPUPCALLTABLE,LPWSPPROC_TABLE);
+INT WSPAPI WSCDeinstallProvider(LPGUID,LPINT);
+INT WSPAPI WSCEnumProtocols(LPINT,LPWSAPROTOCOL_INFOW,LPDWORD,LPINT);
+INT WSPAPI WSCGetProviderPath(LPGUID,LPWSTR,LPINT,LPINT);
+INT WSPAPI WSCInstallProvider(CONST LPGUID,CONST LPWSTR,CONST LPWSAPROTOCOL_INFOW,DWORD,LPINT);
+INT WSPAPI WSCEnableNSProvider(LPGUID,BOOL);
+INT WSPAPI WSCInstallNameSpace(LPWSTR,LPWSTR,DWORD,DWORD,LPGUID);
+INT WSPAPI WSCUnInstallNameSpace(LPGUID);
+INT WSPAPI WSCWriteProviderOrder(LPDWORD,DWORD);
+
+#endif /* RC_INVOKED */
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+#endif
Index: Daodan/MinGW/include/ws2tcpip.h
===================================================================
--- Daodan/MinGW/include/ws2tcpip.h	(revision 1046)
+++ Daodan/MinGW/include/ws2tcpip.h	(revision 1046)
@@ -0,0 +1,379 @@
+/*
+ *  ws2tcpip.h : TCP/IP specific extensions in Windows Sockets 2
+ *
+ * Portions Copyright (c) 1980, 1983, 1988, 1993
+ * The Regents of the University of California.  All rights reserved.
+ *
+ */
+
+#ifndef _WS2TCPIP_H
+#define _WS2TCPIP_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#if (defined _WINSOCK_H && !defined _WINSOCK2_H)
+#error "ws2tcpip.h is not compatible with winsock.h. Include winsock2.h instead."
+#endif
+
+#include <winsock2.h>
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
+/*
+ * The IP_* macros are also defined in winsock.h, but some values are different there.
+ * The values defined in winsock.h for 1.1 and used in wsock32.dll are consistent
+ * with the original values Steve Deering defined in his document "IP Multicast Extensions
+ * for 4.3BSD UNIX related systems (MULTICAST 1.2 Release)." However, these conflicted with
+ * the definitions for some IPPROTO_IP level socket options already assigned by BSD,
+ * so Berkeley changed all the values by adding 7.  WinSock2 (ws2_32.dll)  uses
+ * the BSD 4.4 compatible values defined here.
+ *
+ * See also: msdn kb article Q257460
+ * http://support.microsoft.com/support/kb/articles/Q257/4/60.asp
+ */
+
+/* This is also defined in winsock.h; value hasn't changed */
+#define	IP_OPTIONS  1
+
+#define	IP_HDRINCL  2
+/*
+ * These are also be defined in winsock.h,
+ * but values have changed for WinSock2 interface
+ */
+#define IP_TOS			3   /* old (winsock 1.1) value 8 */
+#define IP_TTL			4   /* old value 7 */
+#define IP_MULTICAST_IF		9   /* old value 2 */
+#define IP_MULTICAST_TTL	10  /* old value 3 */
+#define IP_MULTICAST_LOOP	11  /* old value 4 */
+#define IP_ADD_MEMBERSHIP	12  /* old value 5 */
+#define IP_DROP_MEMBERSHIP	13  /* old value 6 */
+#define IP_DONTFRAGMENT		14  /* old value 9 */
+#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
+
+/*
+ * As with BSD implementation, IPPROTO_IPV6 level socket options have
+ * same values as IPv4 counterparts.
+ */
+#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_DROP_MEMBERSHIP	13
+#define IPV6_JOIN_GROUP		IPV6_ADD_MEMBERSHIP
+#define IPV6_LEAVE_GROUP	IPV6_DROP_MEMBERSHIP
+#define IPV6_PKTINFO		19
+
+#define IP_DEFAULT_MULTICAST_TTL 1
+#define IP_DEFAULT_MULTICAST_LOOP 1
+#define IP_MAX_MEMBERSHIPS 20
+
+#define TCP_EXPEDITED_1122  2
+
+#define UDP_NOCHECKSUM 1
+
+/* INTERFACE_INFO iiFlags */
+#define IFF_UP  1
+#define IFF_BROADCAST   2
+#define IFF_LOOPBACK    4
+#define IFF_POINTTOPOINT    8
+#define IFF_MULTICAST   16
+
+#define SIO_GET_INTERFACE_LIST  _IOR('t', 127, u_long)
+
+#define INET_ADDRSTRLEN  16
+#define INET6_ADDRSTRLEN 46
+
+/* getnameinfo constants */
+#define NI_MAXHOST	1025
+#define NI_MAXSERV	32
+
+#define NI_NOFQDN 	0x01
+#define NI_NUMERICHOST	0x02
+#define NI_NAMEREQD	0x04
+#define NI_NUMERICSERV	0x08
+#define NI_DGRAM	0x10
+
+/* getaddrinfo constants */
+#define AI_PASSIVE	1
+#define AI_CANONNAME	2
+#define AI_NUMERICHOST	4
+
+/* getaddrinfo error codes */
+#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_NODATA	WSANO_DATA
+#define EAI_NONAME	WSAHOST_NOT_FOUND
+#define EAI_SERVICE	WSATYPE_NOT_FOUND
+#define EAI_SOCKTYPE	WSAESOCKTNOSUPPORT
+
+/*
+ *   ip_mreq also in winsock.h for WinSock1.1,
+ *   but online msdn docs say it is defined here for WinSock2.
+ */
+
+struct ip_mreq {
+	struct in_addr	imr_multiaddr;
+	struct in_addr	imr_interface;
+};
+
+struct ip_mreq_source {
+	struct in_addr	imr_multiaddr;
+	struct in_addr	imr_sourceaddr;
+	struct in_addr	imr_interface;
+};
+
+struct ip_msfilter {
+	struct in_addr	imsf_multiaddr;
+	struct in_addr	imsf_interface;
+	u_long		imsf_fmode;
+	u_long		imsf_numsrc;
+	struct in_addr	imsf_slist[1];
+};
+
+#define IP_MSFILTER_SIZE(numsrc) \
+   (sizeof(struct ip_msfilter) - sizeof(struct in_addr) \
+   + (numsrc) * sizeof(struct in_addr))
+
+struct in_pktinfo {
+	IN_ADDR ipi_addr;
+	UINT    ipi_ifindex;
+};
+typedef struct in_pktinfo IN_PKTINFO;
+
+
+/* ipv6 */
+/* These require XP or .NET Server or use of add-on IPv6 stacks on NT 4
+  or higher */
+
+/* This is based on the example given in RFC 2553 with stdint types
+   changed to BSD types.  For now, use these  field names until there
+   is some consistency in MS docs. In this file, we only use the
+   in6_addr structure start address, with casts to get the right offsets
+   when testing addresses */
+
+struct in6_addr {
+    union {
+        u_char	_S6_u8[16];
+        u_short	_S6_u16[8];
+        u_long	_S6_u32[4];
+        } _S6_un;
+};
+/* s6_addr is the standard name */
+#define s6_addr		_S6_un._S6_u8
+
+/* These are GLIBC names */
+#define s6_addr16	_S6_un._S6_u16
+#define s6_addr32	_S6_un._S6_u32
+
+/* These are used in some MS code */
+#define in_addr6	in6_addr
+#define _s6_bytes	_S6_un._S6_u8
+#define _s6_words	_S6_un._S6_u16
+
+typedef struct in6_addr IN6_ADDR,  *PIN6_ADDR, *LPIN6_ADDR;
+
+struct sockaddr_in6 {
+	short sin6_family;	/* AF_INET6 */
+	u_short sin6_port; 	/* transport layer port # */
+	u_long sin6_flowinfo;	/* IPv6 traffic class & flow info */
+	struct in6_addr sin6_addr;  /* IPv6 address */
+	u_long sin6_scope_id;	/* set of interfaces for a scope */
+};
+typedef struct sockaddr_in6 SOCKADDR_IN6, *PSOCKADDR_IN6, *LPSOCKADDR_IN6;
+
+extern const struct in6_addr in6addr_any;
+extern const struct in6_addr in6addr_loopback;
+/* the above can get initialised using: */
+#define IN6ADDR_ANY_INIT        { 0 }
+#define IN6ADDR_LOOPBACK_INIT   { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 }
+
+/* Described in RFC 2292, but not in 2553 */
+/* int IN6_ARE_ADDR_EQUAL(const struct in6_addr * a, const struct in6_addr * b) */
+#define IN6_ARE_ADDR_EQUAL(a, b)	\
+    (memcmp ((void*)(a), (void*)(b), sizeof (struct in6_addr)) == 0)
+
+
+/* Address Testing Macros
+
+ These macro functions all take const struct in6_addr* as arg.
+ Static inlines would allow type checking, but RFC 2553 says they
+ macros.
+ NB: These are written specifically for little endian host */
+
+#define IN6_IS_ADDR_UNSPECIFIED(_addr) \
+	(   (((const u_long *)(_addr))[0] == 0)	\
+	 && (((const u_long *)(_addr))[1] == 0)	\
+	 && (((const u_long *)(_addr))[2] == 0)	\
+	 && (((const u_long *)(_addr))[3] == 0))
+
+#define IN6_IS_ADDR_LOOPBACK(_addr) \
+	(   (((const u_long *)(_addr))[0] == 0)	\
+	 && (((const u_long *)(_addr))[1] == 0)	\
+	 && (((const u_long *)(_addr))[2] == 0)	\
+	 && (((const u_long *)(_addr))[3] == 0x01000000)) /* Note byte order reversed */
+/*	    (((const u_long *)(_addr))[3] == ntohl(1))  */
+
+#define IN6_IS_ADDR_MULTICAST(_addr) (((const u_char *) (_addr))[0] == 0xff)
+
+#define IN6_IS_ADDR_LINKLOCAL(_addr) \
+	(   (((const u_char *)(_addr))[0] == 0xfe)	\
+	 && ((((const u_char *)(_addr))[1] & 0xc0) == 0x80))
+
+#define IN6_IS_ADDR_SITELOCAL(_addr) \
+	(   (((const u_char *)(_addr))[0] == 0xfe)	\
+	 && ((((const u_char *)(_addr))[1] & 0xc0) == 0xc0))
+
+#define IN6_IS_ADDR_V4MAPPED(_addr) \
+	(   (((const u_long *)(_addr))[0] == 0)		\
+	 && (((const u_long *)(_addr))[1] == 0)		\
+	 && (((const u_long *)(_addr))[2] == 0xffff0000)) /* Note byte order reversed */
+/* 	    (((const u_long *)(_addr))[2] == ntohl(0x0000ffff))) */
+
+#define IN6_IS_ADDR_V4COMPAT(_addr) \
+	(   (((const u_long *)(_addr))[0] == 0)		\
+	 && (((const u_long *)(_addr))[1] == 0)		\
+	 && (((const u_long *)(_addr))[2] == 0)		\
+	 && (((const u_long *)(_addr))[3] != 0)		\
+	 && (((const u_long *)(_addr))[3] != 0x01000000)) /* Note byte order reversed */
+/*           (ntohl (((const u_long *)(_addr))[3]) > 1 ) */
+
+
+#define IN6_IS_ADDR_MC_NODELOCAL(_addr)	\
+	(   IN6_IS_ADDR_MULTICAST(_addr)		\
+	 && ((((const u_char *)(_addr))[1] & 0xf) == 0x1))
+
+#define IN6_IS_ADDR_MC_LINKLOCAL(_addr)	\
+	(   IN6_IS_ADDR_MULTICAST (_addr)		\
+	 && ((((const u_char *)(_addr))[1] & 0xf) == 0x2))
+
+#define IN6_IS_ADDR_MC_SITELOCAL(_addr)	\
+	(   IN6_IS_ADDR_MULTICAST(_addr)		\
+	 && ((((const u_char *)(_addr))[1] & 0xf) == 0x5))
+
+#define IN6_IS_ADDR_MC_ORGLOCAL(_addr)	\
+	(   IN6_IS_ADDR_MULTICAST(_addr)		\
+	 && ((((const u_char *)(_addr))[1] & 0xf) == 0x8))
+
+#define IN6_IS_ADDR_MC_GLOBAL(_addr)	\
+	(   IN6_IS_ADDR_MULTICAST(_addr)	\
+	 && ((((const u_char *)(_addr))[1] & 0xf) == 0xe))
+
+
+typedef int socklen_t;
+
+struct ipv6_mreq {
+	struct in6_addr ipv6mr_multiaddr;
+	unsigned int    ipv6mr_interface;
+};
+typedef struct ipv6_mreq IPV6_MREQ;
+
+struct in6_pktinfo {
+	IN6_ADDR ipi6_addr;
+	UINT     ipi6_ifindex;
+};
+typedef struct  in6_pktinfo IN6_PKTINFO;
+
+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;
+};
+
+#if (_WIN32_WINNT >= 0x0501)
+void WSAAPI freeaddrinfo (struct addrinfo*);
+int WSAAPI getaddrinfo (const char*,const char*,const struct addrinfo*,
+		        struct addrinfo**);
+int WSAAPI getnameinfo(const struct sockaddr*,socklen_t,char*,DWORD,
+		       char*,DWORD,int);
+#else
+/* FIXME: Need WS protocol-independent API helpers.  */
+#endif
+
+static __inline char*
+gai_strerrorA(int ecode)
+{
+	static char message[1024+1];
+	DWORD dwFlags = FORMAT_MESSAGE_FROM_SYSTEM
+	              | FORMAT_MESSAGE_IGNORE_INSERTS
+		      | FORMAT_MESSAGE_MAX_WIDTH_MASK;
+	DWORD dwLanguageId = MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT);
+  	FormatMessageA(dwFlags, NULL, ecode, dwLanguageId, (LPSTR)message, 1024, NULL);
+	return message;
+}
+static __inline WCHAR*
+gai_strerrorW(int ecode)
+{
+	static WCHAR message[1024+1];
+	DWORD dwFlags = FORMAT_MESSAGE_FROM_SYSTEM
+	              | FORMAT_MESSAGE_IGNORE_INSERTS
+		      | FORMAT_MESSAGE_MAX_WIDTH_MASK;
+	DWORD dwLanguageId = MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT);
+  	FormatMessageW(dwFlags, NULL, ecode, dwLanguageId, (LPWSTR)message, 1024, NULL);
+	return message;
+}
+#ifdef UNICODE
+#define gai_strerror gai_strerrorW
+#else
+#define gai_strerror gai_strerrorA
+#endif
+
+/* Some older IPv4/IPv6 compatibility stuff */
+
+/* This struct lacks sin6_scope_id; retained for use in sockaddr_gen */
+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;
+
+
+typedef struct _INTERFACE_INFO {
+	u_long		iiFlags;
+	sockaddr_gen	iiAddress;
+	sockaddr_gen	iiBroadcastAddress;
+	sockaddr_gen	iiNetmask;
+} INTERFACE_INFO, *LPINTERFACE_INFO;
+
+/*
+   The definition above can cause problems on NT4,prior to sp4.
+   To workaround, include the following struct and typedef and
+   #define INTERFACE_INFO OLD_INTERFACE_INFO
+   See: FIX: WSAIoctl SIO_GET_INTERFACE_LIST Option Problem
+   (Q181520) in MSDN KB.
+
+   The old definition causes problems on newer NT and on XP.
+
+typedef struct _OLD_INTERFACE_INFO {
+	u_long		iiFlags;
+	struct sockaddr	iiAddress;
+ 	struct sockaddr	iiBroadcastAddress;
+ 	struct sockaddr	iiNetmask;
+} OLD_INTERFACE_INFO;
+*/
+
+#ifdef  __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/wsahelp.h
===================================================================
--- Daodan/MinGW/include/wsahelp.h	(revision 1046)
+++ Daodan/MinGW/include/wsahelp.h	(revision 1046)
@@ -0,0 +1,98 @@
+#ifndef _WSAHELP_H
+#define _WSAHELP_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#include <winsock2.h>
+#include <ntsecapi.h>
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+#define WSH_NOTIFY_BIND 0x00000001
+#define WSH_NOTIFY_LISTEN 0x00000002
+#define WSH_NOTIFY_CONNECT 0x00000004
+#define WSH_NOTIFY_ACCEPT 0x00000008
+#define WSH_NOTIFY_SHUTDOWN_RECEIVE 0x00000010
+#define WSH_NOTIFY_SHUTDOWN_SEND 0x00000020
+#define WSH_NOTIFY_SHUTDOWN_ALL 0x00000040
+#define WSH_NOTIFY_CLOSE 0x00000080
+#define WSH_NOTIFY_CONNECT_ERROR 0x00000100
+#define SOL_INTERNAL 0xFFFE
+#define SO_CONTEXT 1
+
+#ifndef RC_INVOKED
+typedef enum _SOCKADDR_ADDRESS_INFO {
+  SockaddrAddressInfoNormal,
+  SockaddrAddressInfoWildcard,
+  SockaddrAddressInfoBroadcast,
+  SockaddrAddressInfoLoopback
+} SOCKADDR_ADDRESS_INFO, *PSOCKADDR_ADDRESS_INFO;
+typedef enum _SOCKADDR_ENDPOINT_INFO {
+  SockaddrEndpointInfoNormal,
+  SockaddrEndpointInfoWildcard,
+  SockaddrEndpointInfoReserved
+} SOCKADDR_ENDPOINT_INFO, *PSOCKADDR_ENDPOINT_INFO;
+typedef struct _SOCKADDR_INFO {
+  SOCKADDR_ADDRESS_INFO AddressInfo;
+  SOCKADDR_ENDPOINT_INFO EndpointInfo;
+} SOCKADDR_INFO, *PSOCKADDR_INFO;
+
+INT WINAPI WSHAddressToString(LPSOCKADDR,INT,LPWSAPROTOCOL_INFOW,LPWSTR,LPDWORD);
+INT WINAPI WSHEnumProtocols(LPINT,LPWSTR,LPVOID,LPDWORD);
+INT WINAPI WSHGetBroadcastSockaddr(PVOID,PSOCKADDR,PINT);
+INT WINAPI WSHGetProviderGuid(LPWSTR,LPGUID);
+INT WINAPI WSHGetSockaddrType(PSOCKADDR,DWORD,PSOCKADDR_INFO);
+INT WINAPI WSHGetSocketInformation(PVOID,SOCKET,HANDLE,HANDLE,INT,INT,PCHAR,INT);
+INT WINAPI WSHGetWildcardSockaddr(PVOID,PSOCKADDR,PINT);
+INT WINAPI WSHGetWSAProtocolInfo(LPWSTR,LPWSAPROTOCOL_INFOW*,LPDWORD);
+INT WINAPI WSHIoctl(PVOID,SOCKET,HANDLE,HANDLE,DWORD,LPVOID,DWORD,LPVOID,DWORD,
+LPDWORD,LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE,LPBOOL);
+INT WINAPI WSHJoinLeaf(PVOID,SOCKET,HANDLE,HANDLE,PVOID,SOCKET,PSOCKADDR,
+DWORD,LPWSABUF,LPWSABUF,LPQOS,LPQOS,DWORD);
+INT WINAPI WSHNotify(PVOID,SOCKET,HANDLE,HANDLE,DWORD);
+INT WINAPI WSHOpenSocket(PINT,PINT,PINT,PUNICODE_STRING,PVOID,PDWORD);
+INT WINAPI WSHOpenSocket2(PINT,PINT,PINT,GROUP,DWORD,PUNICODE_STRING,PVOID*,PDWORD);
+INT WINAPI WSHSetSocketInformation(PVOID,SOCKET,HANDLE,HANDLE,INT,INT,PCHAR,INT);
+INT WINAPI WSHStringToAddress(LPWSTR,DWORD,LPWSAPROTOCOL_INFOW,LPSOCKADDR,LPDWORD);
+
+typedef INT (WINAPI *PWSH_ADDRESS_TO_STRING)(LPSOCKADDR,INT,LPWSAPROTOCOL_INFOW,LPWSTR,LPDWORD);
+typedef INT (WINAPI *PWSH_ENUM_PROTOCOLS)(LPINT,LPWSTR,LPVOID,LPDWORD);
+typedef INT (WINAPI *PWSH_GET_BROADCAST_SOCKADDR)(PVOID,PSOCKADDR,PINT);
+typedef INT (WINAPI *PWSH_GET_PROVIDER_GUID)(LPWSTR,LPGUID);
+typedef INT (WINAPI *PWSH_GET_SOCKADDR_TYPE)(PSOCKADDR,DWORD,PSOCKADDR_INFO);
+typedef INT (WINAPI *PWSH_GET_SOCKET_INFORMATION)(PVOID,SOCKET,HANDLE,HANDLE,INT,INT,PCHAR,INT);
+typedef INT (WINAPI *PWSH_GET_WILDCARD_SOCKEADDR)(PVOID,PSOCKADDR,PINT);
+typedef INT (WINAPI *PWSH_GET_WSAPROTOCOL_INFO)(LPWSTR,LPWSAPROTOCOL_INFOW*,LPDWORD);
+typedef INT (WINAPI *PWSH_IOCTL)(PVOID,SOCKET,HANDLE,HANDLE,DWORD,LPVOID,DWORD,
+	     LPVOID,DWORD,LPDWORD,LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE,LPBOOL);
+typedef INT (WINAPI *PWSH_JOIN_LEAF)(PVOID,SOCKET,HANDLE,HANDLE,PVOID,SOCKET,
+	     PSOCKADDR,DWORD,LPWSABUF,LPWSABUF,LPQOS,LPQOS,DWORD);
+typedef INT (WINAPI *PWSH_NOTIFY)(PVOID,SOCKET,HANDLE,HANDLE,DWORD);
+typedef INT (WINAPI *PWSH_OPEN_SOCKET)(PINT,PINT,PINT,PUNICODE_STRING,PVOID,PDWORD);
+typedef INT (WINAPI *PWSH_OPEN_SOCKET2)(PINT,PINT,PINT,GROUP,DWORD,PUNICODE_STRING,PVOID*,PDWORD);
+typedef INT (WINAPI *PWSH_SET_SOCKET_INFORMATION)(PVOID,SOCKET,HANDLE,HANDLE,INT,INT,PCHAR,INT);
+typedef INT (WINAPI *PWSH_STRING_TO_ADDRESS)(LPWSTR,DWORD,LPWSAPROTOCOL_INFOW,LPSOCKADDR,LPDWORD);
+
+#ifndef __OBJC__
+/* "Protocol" is a builtin class name in ObjC.  */
+typedef struct _WINSOCK_MAPPING {
+	DWORD Rows;
+	DWORD Columns;
+	struct {
+		DWORD AddressFamily;
+		DWORD SocketType;
+		DWORD Protocol;
+	} Mapping[1];
+} WINSOCK_MAPPING, *PWINSOCK_MAPPING;
+DWORD WINAPI WSHGetWinsockMapping(PWINSOCK_MAPPING,DWORD);
+typedef DWORD (WINAPI *PWSH_GET_WINSOCK_MAPPING)(PWINSOCK_MAPPING,DWORD);
+#endif
+
+#endif /* RC_INVOKED */
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+#endif
Index: Daodan/MinGW/include/wsipx.h
===================================================================
--- Daodan/MinGW/include/wsipx.h	(revision 1046)
+++ Daodan/MinGW/include/wsipx.h	(revision 1046)
@@ -0,0 +1,28 @@
+/* WSIPX.H - contributed by the WINE project
+ */
+
+#ifndef _WSIPX_H
+#define _WSIPX_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define NSPROTO_IPX	1000
+#define NSPROTO_SPX	1256
+#define NSPROTO_SPXII	1257
+
+typedef struct sockaddr_ipx {
+	short sa_family;
+	char sa_netnum[4];
+	char sa_nodenum[6];
+	unsigned short sa_socket;
+} SOCKADDR_IPX, *PSOCKADDR_IPX, *LPSOCKADDR_IPX;
+
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/wsnetbs.h
===================================================================
--- Daodan/MinGW/include/wsnetbs.h	(revision 1046)
+++ Daodan/MinGW/include/wsnetbs.h	(revision 1046)
@@ -0,0 +1,35 @@
+#ifndef _WSNETBS_H
+#define _WSNETBS_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#define NETBIOS_NAME_LENGTH	16
+#define NETBIOS_UNIQUE_NAME	0
+#define NETBIOS_GROUP_NAME	1
+#define NETBIOS_TYPE_QUICK_UNIQUE	2
+#define NETBIOS_TYPE_QUICK_GROUP	3
+
+#ifndef RC_INVOKED
+typedef struct sockaddr_nb {
+	short	snb_family;
+	u_short	snb_type;
+	char	snb_name[NETBIOS_NAME_LENGTH];
+} SOCKADDR_NB, *PSOCKADDR_NB, *LPSOCKADDR_NB;
+#define SET_NETBIOS_SOCKADDR(_snb,_type,_name,_port) \
+{ \
+	register int _i; \
+	register char *_n = (_name); \
+	register PSOCKADDR_NB _s = (_snb); \
+	_s->snb_family = AF_NETBIOS; \
+	_s->snb_type = (_type); \
+	for (_i=0; _n[_i] != '\0' && _i<NETBIOS_NAME_LENGTH-1; _i++) { \
+		_s->snb_name[_i] = _n[_i]; \
+	} \
+	for (; _i<NETBIOS_NAME_LENGTH-1; _i++) { \
+		_s->snb_name[_i] = ' '; \
+	} \
+	_s->snb_name[NETBIOS_NAME_LENGTH-1] = (_port); \
+}
+#endif   /* RC_INVOKED */
+#endif
Index: Daodan/MinGW/include/wtsapi32.h
===================================================================
--- Daodan/MinGW/include/wtsapi32.h	(revision 1046)
+++ Daodan/MinGW/include/wtsapi32.h	(revision 1046)
@@ -0,0 +1,227 @@
+#ifndef _WTSAPI32_H
+#define _WTSAPI32_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#if (_WIN32_WINNT >= 0x0501)
+  // session notification message
+#define WM_WTSSESSION_CHANGE		0x02B1
+
+typedef enum _WTS_INFO_CLASS {
+  WTSInitialProgram       = 0,
+  WTSApplicationName      = 1,
+  WTSWorkingDirectory     = 2,
+  WTSOEMId                = 3,
+  WTSSessionId            = 4,
+  WTSUserName             = 5,
+  WTSWinStationName       = 6,
+  WTSDomainName           = 7,
+  WTSConnectState         = 8,
+  WTSClientBuildNumber    = 9,
+  WTSClientName           = 10,
+  WTSClientDirectory      = 11,
+  WTSClientProductId      = 12,
+  WTSClientHardwareId     = 13,
+  WTSClientAddress        = 14,
+  WTSClientDisplay        = 15,
+  WTSClientProtocolType   = 16,
+  WTSIdleTime             = 17,
+  WTSLogonTime            = 18,
+  WTSIncomingBytes        = 19,
+  WTSOutgoingBytes        = 20,
+  WTSIncomingFrames       = 21,
+  WTSOutgoingFrames       = 22,
+  WTSClientInfo           = 23,
+  WTSSessionInfo          = 24
+} WTS_INFO_CLASS;
+
+typedef enum _WTS_CONNECTSTATE_CLASS {
+  WTSActive,
+  WTSConnected,
+  WTSConnectQuery,
+  WTSShadow,
+  WTSDisconnected,
+  WTSIdle,
+  WTSListen,
+  WTSReset,
+  WTSDown,
+  WTSInit
+} WTS_CONNECTSTATE_CLASS;
+
+  // session notification message flags
+#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
+
+  // WTSRegisterSessionNotifiction flags
+#define NOTIFY_FOR_THIS_SESSION		0
+#define NOTIFY_FOR_ALL_SESSIONS		1
+
+BOOL WINAPI WTSRegisterSessionNotification(HWND hWnd, DWORD dwFlags);
+BOOL WINAPI WTSUnRegisterSessionNotification(HWND hWnd);
+BOOL WINAPI WTSQueryUserToken(ULONG SessionId, PHANDLE pToken);
+
+#endif /* _WIN32_WINNT >= 0x0501 */
+
+#if (_WIN32_WINNT >= 0x0500)
+
+typedef struct _WTS_SESSION_INFOW {
+  DWORD SessionId;
+  LPWSTR pWinStationName;
+  WTS_CONNECTSTATE_CLASS State;
+} WTS_SESSION_INFOW, *PWTS_SESSION_INFOW;
+
+typedef struct _WTS_SESSION_INFOA {
+  DWORD SessionId;
+  LPSTR pWinStationName;
+  WTS_CONNECTSTATE_CLASS State;
+} WTS_SESSION_INFOA, *PWTS_SESSION_INFOA;
+
+#ifdef UNICODE
+#define WTS_SESSION_INFO	WTS_SESSION_INFOW
+#define PWTS_SESSION_INFO	PWTS_SESSION_INFOW
+#else
+#define WTS_SESSION_INFO	WTS_SESSION_INFOA
+#define PWTS_SESSION_INFO	PWTS_SESSION_INFOA
+#endif
+
+  // WTSWaitSystemEvent local server handle
+#define WTS_CURRENT_SERVER_HANDLE 0
+#define WTS_CURRENT_SESSION       ((DWORD)-1)
+
+  // WTSWaitSystemEvent flags
+#define WTS_EVENT_NONE				0x00000000
+#define WTS_EVENT_CREATE			0x00000001
+#define WTS_EVENT_DELETE			0x00000002
+#define WTS_EVENT_RENAME			0x00000004
+#define WTS_EVENT_CONNECT			0x00000008
+#define WTS_EVENT_DISCONNECT		0x00000010
+#define WTS_EVENT_LOGON				0x00000020
+#define WTS_EVENT_LOGOFF			0x00000040
+#define WTS_EVENT_STATECHANGE		0x00000080
+#define WTS_EVENT_LICENSE			0x00000100
+#define WTS_EVENT_ALL				0x7FFFFFFF
+#define WTS_EVENT_FLUSH				0x80000000
+
+BOOL WINAPI WTSQuerySessionInformationA(HANDLE hServer, DWORD SessionId, WTS_INFO_CLASS WTSInfoClass,
+                                LPSTR *ppBuffer, DWORD *pBytesReturned);
+BOOL WINAPI WTSQuerySessionInformationW(HANDLE hServer, DWORD SessionId, WTS_INFO_CLASS WTSInfoClass,
+                                LPTSTR *ppBuffer, DWORD *pBytesReturned);
+BOOL WINAPI WTSWaitSystemEvent(HANDLE hServer, DWORD EventMask, DWORD* pEventFlags);
+BOOL WINAPI WTSDisconnectSession(HANDLE hServer, DWORD SessionId, BOOL bWait);
+BOOL WINAPI WTSEnumerateSessionsW(HANDLE hServer, DWORD Reserved, DWORD Version,
+				  PWTS_SESSION_INFOW *ppSessionInfo,
+				  PDWORD pCount);
+BOOL WINAPI WTSEnumerateSessionsA(HANDLE hServer, DWORD Reserved, DWORD Version,
+				  PWTS_SESSION_INFOA *ppSessionInfo,
+				  PDWORD pCount);
+void WINAPI WTSFreeMemory(PVOID pMemory);
+
+#ifdef UNICODE
+#define WTSEnumerateSessions WTSEnumerateSessionsW
+#define WTSQuerySessionInformation WTSQuerySessionInformationW
+#else
+#define WTSEnumerateSessions WTSEnumerateSessionsA
+#define WTSQuerySessionInformation WTSQuerySessionInformationA
+#endif
+
+BOOL WTSSendMessageA(
+  HANDLE hServer,
+  DWORD SessionId,
+  LPSTR pTitle,
+  DWORD TitleLength,
+  LPSTR pMessage,
+  DWORD MessageLength,
+  DWORD Style,
+  DWORD Timeout,
+  DWORD *pResponse,
+  BOOL bWait
+);
+
+BOOL WTSSendMessageW(
+  HANDLE hServer,
+  DWORD SessionId,
+  LPWSTR pTitle,
+  DWORD TitleLength,
+  LPWSTR pMessage,
+  DWORD MessageLength,
+  DWORD Style,
+  DWORD Timeout,
+  DWORD *pResponse,
+  BOOL bWait
+);
+
+#ifdef UNICODE
+#define WTSSendMessage WTSSendMessageW
+#else
+#define WTSSendMessage WTSSendMessageA
+#endif
+
+BOOL WTSVirtualChannelClose(
+  HANDLE hChannelHandle
+);
+
+HANDLE WTSVirtualChannelOpen(
+  HANDLE hServer,
+  DWORD SessionId,
+  LPSTR pVirtualName
+);
+
+#if (_WIN32_WINNT >= 0x600)
+HANDLE WTSVirtualChannelOpenEx(
+  DWORD SessionId,
+  LPSTR pVirtualName,
+  DWORD flags
+);
+#endif
+
+BOOL WTSVirtualChannelPurgeInput(
+  HANDLE hChannelHandle
+);
+
+BOOL WTSVirtualChannelPurgeOutput(
+  HANDLE hChannelHandle
+);
+
+#if (_WIN32_WINNT >= 0x501)
+BOOL WTSVirtualChannelQuery(
+  HANDLE hChannelHandle,
+  WTS_VIRTUAL_CLASS WtsVirtualClass,
+  PVOID *ppBuffer,
+  DWORD *pBytesReturned
+);
+#endif
+
+BOOL WTSVirtualChannelRead(
+  HANDLE hChannelHandle,
+  ULONG TimeOut,
+  PCHAR Buffer,
+  ULONG BufferSize,
+  PULONG pBytesRead
+);
+
+BOOL WTSVirtualChannelWrite(
+  HANDLE hChannelHandle,
+  PCHAR Buffer,
+  ULONG Length,
+  PULONG pBytesWritten
+);
+
+#endif /* _WIN32_WINNT >= 0x0500 */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _WTSAPI32_H */
Index: Daodan/MinGW/include/wtypes.h
===================================================================
--- Daodan/MinGW/include/wtypes.h	(revision 1046)
+++ Daodan/MinGW/include/wtypes.h	(revision 1046)
@@ -0,0 +1,171 @@
+#include <rpc.h>
+#include <rpcndr.h>
+
+#ifndef _WTYPES_H
+#define _WTYPES_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define IID_NULL GUID_NULL
+#define CLSID_NULL GUID_NULL
+#define CBPCLIPDATA(d) ((d).cbSize-sizeof((d).ulClipFmt))
+#define ROTFLAGS_REGISTRATIONKEEPSALIVE	0x01
+#define ROTFLAGS_ALLOWANYCLIENT		0x02
+
+#ifndef __BLOB_T_DEFINED /* also in winsock2.h */
+#define __BLOB_T_DEFINED
+typedef struct _BLOB {
+	ULONG	cbSize;
+	BYTE	*pBlobData;
+} BLOB,*PBLOB,*LPBLOB;
+#endif
+typedef enum tagDVASPECT {
+	DVASPECT_CONTENT=1,
+	DVASPECT_THUMBNAIL=2,
+	DVASPECT_ICON=4,
+	DVASPECT_DOCPRINT=8
+} DVASPECT;
+typedef enum tagDVASPECT2 {
+	DVASPECT_OPAQUE=16,
+	DVASPECT_TRANSPARENT=32
+} DVASPECT2;
+typedef enum tagSTATFLAG {
+	STATFLAG_DEFAULT=0,
+	STATFLAG_NONAME=1
+} STATFLAG;
+typedef enum tagMEMCTX {
+	MEMCTX_LOCAL=0,
+	MEMCTX_TASK,
+	MEMCTX_SHARED,
+	MEMCTX_MACSYSTEM,
+	MEMCTX_UNKNOWN=-1,
+	MEMCTX_SAME=-2
+} MEMCTX;
+typedef enum tagMSHCTX {
+	MSHCTX_LOCAL=0,
+	MSHCTX_NOSHAREDMEM,
+	MSHCTX_DIFFERENTMACHINE,
+	MSHCTX_INPROC,
+	MSHCTX_CROSSCTX
+} MSHCTX;
+typedef enum tagCLSCTX {
+	CLSCTX_INPROC_SERVER=1,CLSCTX_INPROC_HANDLER=2,CLSCTX_LOCAL_SERVER=4,
+	CLSCTX_INPROC_SERVER16=8,CLSCTX_REMOTE_SERVER=16
+} CLSCTX;
+typedef enum tagMSHLFLAGS {
+	MSHLFLAGS_NORMAL,MSHLFLAGS_TABLESTRONG,MSHLFLAGS_TABLEWEAK
+} MSHLFLAGS;
+typedef struct _FLAGGED_WORD_BLOB {
+	unsigned long fFlags;
+	unsigned long clSize;
+	unsigned short asData[1];
+}FLAGGED_WORD_BLOB;
+
+#ifndef OLE2ANSI
+typedef WCHAR OLECHAR;
+typedef LPWSTR LPOLESTR;
+typedef LPCWSTR LPCOLESTR;
+#define OLESTR(s) L##s
+#else
+typedef char OLECHAR;
+typedef LPSTR LPOLESTR;
+typedef LPCSTR LPCOLESTR;
+#define OLESTR(s) s
+#endif
+typedef unsigned short VARTYPE;
+typedef short VARIANT_BOOL;
+typedef VARIANT_BOOL _VARIANT_BOOL;
+#define VARIANT_TRUE ((VARIANT_BOOL)0xffff)
+#define VARIANT_FALSE ((VARIANT_BOOL)0)
+typedef OLECHAR *BSTR;
+typedef FLAGGED_WORD_BLOB *wireBSTR;
+typedef BSTR *LPBSTR;
+typedef LONG SCODE;
+typedef void *HCONTEXT;
+typedef union tagCY {
+	_ANONYMOUS_STRUCT struct {
+		unsigned long Lo;
+		long Hi;
+	}_STRUCT_NAME(s);
+	LONGLONG int64;
+} CY;
+typedef double DATE;
+typedef struct  tagBSTRBLOB {
+	ULONG cbSize;
+	PBYTE pData;
+}BSTRBLOB;
+typedef struct tagBSTRBLOB *LPBSTRBLOB;
+typedef struct tagCLIPDATA {
+	ULONG cbSize;
+	long ulClipFmt;
+	PBYTE pClipData;
+}CLIPDATA;
+typedef enum tagSTGC {
+	STGC_DEFAULT,STGC_OVERWRITE,STGC_ONLYIFCURRENT,
+	STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE
+}STGC;
+typedef enum tagSTGMOVE {
+	STGMOVE_MOVE,STGMOVE_COPY,STGMOVE_SHALLOWCOPY
+}STGMOVE;
+enum VARENUM {
+	VT_EMPTY,VT_NULL,VT_I2,VT_I4,VT_R4,VT_R8,VT_CY,VT_DATE,VT_BSTR,VT_DISPATCH,
+	VT_ERROR,VT_BOOL,VT_VARIANT,VT_UNKNOWN,VT_DECIMAL,VT_I1=16,VT_UI1,VT_UI2,VT_UI4,VT_I8,
+	VT_UI8,VT_INT,VT_UINT,VT_VOID,VT_HRESULT,VT_PTR,VT_SAFEARRAY,VT_CARRAY,VT_USERDEFINED,
+	VT_LPSTR,VT_LPWSTR,VT_RECORD=36,VT_INT_PTR=37,VT_UINT_PTR=38,VT_FILETIME=64,VT_BLOB,VT_STREAM,VT_STORAGE,VT_STREAMED_OBJECT,
+	VT_STORED_OBJECT,VT_BLOB_OBJECT,VT_CF,VT_CLSID,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 struct _BYTE_SIZEDARR {
+	unsigned long clSize;
+	byte *pData;
+}BYTE_SIZEDARR;
+typedef struct _SHORT_SIZEDARR {
+	unsigned long clSize;
+	unsigned short *pData;
+}WORD_SIZEDARR;
+typedef struct _LONG_SIZEDARR {
+	unsigned long clSize;
+	unsigned long *pData;
+}DWORD_SIZEDARR;
+typedef struct _HYPER_SIZEDARR {
+	unsigned long clSize;
+	hyper *pData;
+}HYPER_SIZEDARR;
+typedef double DOUBLE;
+typedef struct tagDEC {
+	USHORT wReserved;
+	_ANONYMOUS_UNION union {
+		_ANONYMOUS_STRUCT struct {
+			BYTE scale;
+			BYTE sign;
+		}_STRUCT_NAME(s);
+		USHORT signscale;
+	} DUMMYUNIONNAME;
+	ULONG Hi32;
+	_ANONYMOUS_UNION union {
+		_ANONYMOUS_STRUCT struct {
+			ULONG Lo32;
+			ULONG Mid32;
+		}_STRUCT_NAME(s2);
+		ULONGLONG Lo64;
+	} DUMMYUNIONNAME2;
+} DECIMAL;
+typedef DECIMAL *LPDECIMAL;
+#define DECIMAL_NEG ((BYTE)0x80)
+#ifdef NONAMELESSUNION
+#define DECIMAL_SETZERO(d) {(d).DUMMYUNIONNAME2.Lo64=(d).Hi32=(d).DUMMYUNIONNAME.signscale=0;}
+#else
+#define DECIMAL_SETZERO(d) {(d).Lo64=(d).Hi32=(d).signscale=0;}
+#endif
+typedef void *HMETAFILEPICT;
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: Daodan/MinGW/include/xprtdefs.h
===================================================================
--- Daodan/MinGW/include/xprtdefs.h	(revision 1046)
+++ Daodan/MinGW/include/xprtdefs.h	(revision 1046)
@@ -0,0 +1,11 @@
+#ifndef _XPTRDEFS_H
+#define _XPTRDEFS_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+/*--- DirectShow Reference - DirectShow Structures - TIMECODE_SAMPLE Structure */
+#define ED_DEVCAP_ATN_READ 0x13B7
+#define ED_DEVCAP_RTC_READ 0x13BA
+
+#endif
Index: Daodan/MinGW/include/zmouse.h
===================================================================
--- Daodan/MinGW/include/zmouse.h	(revision 1046)
+++ Daodan/MinGW/include/zmouse.h	(revision 1046)
@@ -0,0 +1,36 @@
+/*
+       zmouse.h - Header for IntelliMouse.
+
+       This file is part of a free library for the Win32 API.
+
+       This library is distributed in the hope that it will be useful,
+       but WITHOUT ANY WARRANTY; without even the implied warranty of
+       MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+       FIXME: This file is obviously horribly incomplete!
+
+*/
+
+#ifndef _ZMOUSE_H
+#define _ZMOUSE_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifndef WM_MOUSEWHEEL
+# define WM_MOUSEWHEEL (WM_MOUSELAST + 1)
+#endif
+
+#ifndef WHEEL_DELTA
+# define WHEEL_DELTA 120
+#endif
+
+#ifndef WHEEL_PAGESCROLL
+# define WHEEL_PAGESCROLL UINT_MAX
+#endif
+
+#ifndef SPI_SETWHEELSCROLLLINES
+# define SPI_SETWHEELSCROLLLINES 105
+#endif
+
+#endif /* _ZMOUSE_H */
Index: Daodan/MinGW/lib/gcc/mingw32/5.3.0/include-fixed/README
===================================================================
--- Daodan/MinGW/lib/gcc/mingw32/5.3.0/include-fixed/README	(revision 1046)
+++ Daodan/MinGW/lib/gcc/mingw32/5.3.0/include-fixed/README	(revision 1046)
@@ -0,0 +1,14 @@
+This README file is copied into the directory for GCC-only header files
+when fixincludes is run by the makefile for GCC.
+
+Many of the files in this directory were automatically edited from the
+standard system header files by the fixincludes process.  They are
+system-specific, and will not work on any other kind of system.  They
+are also not part of GCC.  The reason we have to do this is because
+GCC requires ANSI C headers and many vendors supply ANSI-incompatible
+headers.
+
+Because this is an automated process, sometimes headers get "fixed"
+that do not, strictly speaking, need a fix.  As long as nothing is broken
+by the process, it is just an unfortunate collateral inconvenience.
+We would like to rectify it, if it is not "too inconvenient".
Index: Daodan/MinGW/lib/gcc/mingw32/5.3.0/include-fixed/limits.h
===================================================================
--- Daodan/MinGW/lib/gcc/mingw32/5.3.0/include-fixed/limits.h	(revision 1046)
+++ Daodan/MinGW/lib/gcc/mingw32/5.3.0/include-fixed/limits.h	(revision 1046)
@@ -0,0 +1,171 @@
+/* Copyright (C) 1992-2015 Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 3, or (at your option) any later
+version.
+
+GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+Under Section 7 of GPL version 3, you are granted additional
+permissions described in the GCC Runtime Library Exception, version
+3.1, as published by the Free Software Foundation.
+
+You should have received a copy of the GNU General Public License and
+a copy of the GCC Runtime Library Exception along with this program;
+see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+<http://www.gnu.org/licenses/>.  */
+
+/* This administrivia gets added to the beginning of limits.h
+   if the system has its own version of limits.h.  */
+
+/* We use _GCC_LIMITS_H_ because we want this not to match
+   any macros that the system's limits.h uses for its own purposes.  */
+#ifndef _GCC_LIMITS_H_  /* Terminated in limity.h.  */
+#define _GCC_LIMITS_H_
+
+#ifndef _LIBC_LIMITS_H_
+/* Use "..." so that we find syslimits.h only in this same directory.  */
+#include "syslimits.h"
+#endif
+/* Copyright (C) 1991-2015 Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 3, or (at your option) any later
+version.
+
+GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+Under Section 7 of GPL version 3, you are granted additional
+permissions described in the GCC Runtime Library Exception, version
+3.1, as published by the Free Software Foundation.
+
+You should have received a copy of the GNU General Public License and
+a copy of the GCC Runtime Library Exception along with this program;
+see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+<http://www.gnu.org/licenses/>.  */
+
+#ifndef _LIMITS_H___
+#define _LIMITS_H___
+
+/* Number of bits in a `char'.  */
+#undef CHAR_BIT
+#define CHAR_BIT __CHAR_BIT__
+
+/* Maximum length of a multibyte character.  */
+#ifndef MB_LEN_MAX
+#define MB_LEN_MAX 1
+#endif
+
+/* Minimum and maximum values a `signed char' can hold.  */
+#undef SCHAR_MIN
+#define SCHAR_MIN (-SCHAR_MAX - 1)
+#undef SCHAR_MAX
+#define SCHAR_MAX __SCHAR_MAX__
+
+/* Maximum value an `unsigned char' can hold.  (Minimum is 0).  */
+#undef UCHAR_MAX
+#if __SCHAR_MAX__ == __INT_MAX__
+# define UCHAR_MAX (SCHAR_MAX * 2U + 1U)
+#else
+# define UCHAR_MAX (SCHAR_MAX * 2 + 1)
+#endif
+
+/* Minimum and maximum values a `char' can hold.  */
+#ifdef __CHAR_UNSIGNED__
+# undef CHAR_MIN
+# if __SCHAR_MAX__ == __INT_MAX__
+#  define CHAR_MIN 0U
+# else
+#  define CHAR_MIN 0
+# endif
+# undef CHAR_MAX
+# define CHAR_MAX UCHAR_MAX
+#else
+# undef CHAR_MIN
+# define CHAR_MIN SCHAR_MIN
+# undef CHAR_MAX
+# define CHAR_MAX SCHAR_MAX
+#endif
+
+/* Minimum and maximum values a `signed short int' can hold.  */
+#undef SHRT_MIN
+#define SHRT_MIN (-SHRT_MAX - 1)
+#undef SHRT_MAX
+#define SHRT_MAX __SHRT_MAX__
+
+/* Maximum value an `unsigned short int' can hold.  (Minimum is 0).  */
+#undef USHRT_MAX
+#if __SHRT_MAX__ == __INT_MAX__
+# define USHRT_MAX (SHRT_MAX * 2U + 1U)
+#else
+# define USHRT_MAX (SHRT_MAX * 2 + 1)
+#endif
+
+/* Minimum and maximum values a `signed int' can hold.  */
+#undef INT_MIN
+#define INT_MIN (-INT_MAX - 1)
+#undef INT_MAX
+#define INT_MAX __INT_MAX__
+
+/* Maximum value an `unsigned int' can hold.  (Minimum is 0).  */
+#undef UINT_MAX
+#define UINT_MAX (INT_MAX * 2U + 1U)
+
+/* Minimum and maximum values a `signed long int' can hold.
+   (Same as `int').  */
+#undef LONG_MIN
+#define LONG_MIN (-LONG_MAX - 1L)
+#undef LONG_MAX
+#define LONG_MAX __LONG_MAX__
+
+/* Maximum value an `unsigned long int' can hold.  (Minimum is 0).  */
+#undef ULONG_MAX
+#define ULONG_MAX (LONG_MAX * 2UL + 1UL)
+
+#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+/* Minimum and maximum values a `signed long long int' can hold.  */
+# undef LLONG_MIN
+# define LLONG_MIN (-LLONG_MAX - 1LL)
+# undef LLONG_MAX
+# define LLONG_MAX __LONG_LONG_MAX__
+
+/* Maximum value an `unsigned long long int' can hold.  (Minimum is 0).  */
+# undef ULLONG_MAX
+# define ULLONG_MAX (LLONG_MAX * 2ULL + 1ULL)
+#endif
+
+#if defined (__GNU_LIBRARY__) ? defined (__USE_GNU) : !defined (__STRICT_ANSI__)
+/* Minimum and maximum values a `signed long long int' can hold.  */
+# undef LONG_LONG_MIN
+# define LONG_LONG_MIN (-LONG_LONG_MAX - 1LL)
+# undef LONG_LONG_MAX
+# define LONG_LONG_MAX __LONG_LONG_MAX__
+
+/* Maximum value an `unsigned long long int' can hold.  (Minimum is 0).  */
+# undef ULONG_LONG_MAX
+# define ULONG_LONG_MAX (LONG_LONG_MAX * 2ULL + 1ULL)
+#endif
+
+#endif /* _LIMITS_H___ */
+/* This administrivia gets added to the end of limits.h
+   if the system has its own version of limits.h.  */
+
+#else /* not _GCC_LIMITS_H_ */
+
+#ifdef _GCC_NEXT_LIMITS_H
+#include_next <limits.h>		/* recurse down to the real one */
+#endif
+
+#endif /* not _GCC_LIMITS_H_ */
Index: Daodan/MinGW/lib/gcc/mingw32/5.3.0/include-fixed/syslimits.h
===================================================================
--- Daodan/MinGW/lib/gcc/mingw32/5.3.0/include-fixed/syslimits.h	(revision 1046)
+++ Daodan/MinGW/lib/gcc/mingw32/5.3.0/include-fixed/syslimits.h	(revision 1046)
@@ -0,0 +1,8 @@
+/* syslimits.h stands for the system's own limits.h file.
+   If we can use it ok unmodified, then we install this text.
+   If fixincludes fixes it, then the fixed version is installed
+   instead of this text.  */
+
+#define _GCC_NEXT_LIMITS_H		/* tell gcc's limits.h to recurse */
+#include_next <limits.h>
+#undef _GCC_NEXT_LIMITS_H
Index: Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/adxintrin.h
===================================================================
--- Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/adxintrin.h	(revision 1046)
+++ Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/adxintrin.h	(revision 1046)
@@ -0,0 +1,81 @@
+/* Copyright (C) 2012-2015 Free Software Foundation, Inc.
+
+   This file is part of GCC.
+
+   GCC is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
+
+   GCC is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   Under Section 7 of GPL version 3, you are granted additional
+   permissions described in the GCC Runtime Library Exception, version
+   3.1, as published by the Free Software Foundation.
+
+   You should have received a copy of the GNU General Public License and
+   a copy of the GCC Runtime Library Exception along with this program;
+   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#if !defined _X86INTRIN_H_INCLUDED && !defined _IMMINTRIN_H_INCLUDED
+# error "Never use <adxintrin.h> directly; include <x86intrin.h> instead."
+#endif
+
+#ifndef _ADXINTRIN_H_INCLUDED
+#define _ADXINTRIN_H_INCLUDED
+
+extern __inline unsigned char
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_subborrow_u32 (unsigned char __CF, unsigned int __X,
+	        unsigned int __Y, unsigned int *__P)
+{
+    return __builtin_ia32_sbb_u32 (__CF, __Y, __X, __P);
+}
+
+extern __inline unsigned char
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_addcarry_u32 (unsigned char __CF, unsigned int __X,
+	       unsigned int __Y, unsigned int *__P)
+{
+    return __builtin_ia32_addcarryx_u32 (__CF, __X, __Y, __P);
+}
+
+extern __inline unsigned char
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_addcarryx_u32 (unsigned char __CF, unsigned int __X,
+		unsigned int __Y, unsigned int *__P)
+{
+    return __builtin_ia32_addcarryx_u32 (__CF, __X, __Y, __P);
+}
+
+#ifdef __x86_64__
+extern __inline unsigned char
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_subborrow_u64 (unsigned char __CF, unsigned long long __X,
+	        unsigned long long __Y, unsigned long long *__P)
+{
+    return __builtin_ia32_sbb_u64 (__CF, __Y, __X, __P);
+}
+
+extern __inline unsigned char
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_addcarry_u64 (unsigned char __CF, unsigned long long __X,
+	       unsigned long long __Y, unsigned long long *__P)
+{
+    return __builtin_ia32_addcarryx_u64 (__CF, __X, __Y, __P);
+}
+
+extern __inline unsigned char
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_addcarryx_u64 (unsigned char __CF, unsigned long long __X,
+		unsigned long long __Y, unsigned long long *__P)
+{
+    return __builtin_ia32_addcarryx_u64 (__CF, __X, __Y, __P);
+}
+#endif
+
+#endif /* _ADXINTRIN_H_INCLUDED */
Index: Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/ammintrin.h
===================================================================
--- Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/ammintrin.h	(revision 1046)
+++ Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/ammintrin.h	(revision 1046)
@@ -0,0 +1,93 @@
+/* Copyright (C) 2007-2015 Free Software Foundation, Inc.
+
+   This file is part of GCC.
+
+   GCC is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
+
+   GCC is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   Under Section 7 of GPL version 3, you are granted additional
+   permissions described in the GCC Runtime Library Exception, version
+   3.1, as published by the Free Software Foundation.
+
+   You should have received a copy of the GNU General Public License and
+   a copy of the GCC Runtime Library Exception along with this program;
+   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+/* Implemented from the specification included in the AMD Programmers
+   Manual Update, version 2.x */
+
+#ifndef _AMMINTRIN_H_INCLUDED
+#define _AMMINTRIN_H_INCLUDED
+
+/* We need definitions from the SSE3, SSE2 and SSE header files*/
+#include <pmmintrin.h>
+
+#ifndef __SSE4A__
+#pragma GCC push_options
+#pragma GCC target("sse4a")
+#define __DISABLE_SSE4A__
+#endif /* __SSE4A__ */
+
+extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_stream_sd (double * __P, __m128d __Y)
+{
+  __builtin_ia32_movntsd (__P, (__v2df) __Y);
+}
+
+extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_stream_ss (float * __P, __m128 __Y)
+{
+  __builtin_ia32_movntss (__P, (__v4sf) __Y);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_extract_si64 (__m128i __X, __m128i __Y)
+{
+  return (__m128i) __builtin_ia32_extrq ((__v2di) __X, (__v16qi) __Y);
+}
+
+#ifdef __OPTIMIZE__
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_extracti_si64 (__m128i __X, unsigned const int __I, unsigned const int __L)
+{
+  return (__m128i) __builtin_ia32_extrqi ((__v2di) __X, __I, __L);
+}
+#else
+#define _mm_extracti_si64(X, I, L)					\
+  ((__m128i) __builtin_ia32_extrqi ((__v2di)(__m128i)(X),		\
+				    (unsigned int)(I), (unsigned int)(L)))
+#endif
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_insert_si64 (__m128i __X,__m128i __Y)
+{
+  return (__m128i) __builtin_ia32_insertq ((__v2di)__X, (__v2di)__Y);
+}
+
+#ifdef __OPTIMIZE__
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_inserti_si64(__m128i __X, __m128i __Y, unsigned const int __I, unsigned const int __L)
+{
+  return (__m128i) __builtin_ia32_insertqi ((__v2di)__X, (__v2di)__Y, __I, __L);
+}
+#else
+#define _mm_inserti_si64(X, Y, I, L)					\
+  ((__m128i) __builtin_ia32_insertqi ((__v2di)(__m128i)(X),		\
+				      (__v2di)(__m128i)(Y),		\
+				      (unsigned int)(I), (unsigned int)(L)))
+#endif
+
+#ifdef __DISABLE_SSE4A__
+#undef __DISABLE_SSE4A__
+#pragma GCC pop_options
+#endif /* __DISABLE_SSE4A__ */
+
+#endif /* _AMMINTRIN_H_INCLUDED */
Index: Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/avx2intrin.h
===================================================================
--- Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/avx2intrin.h	(revision 1046)
+++ Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/avx2intrin.h	(revision 1046)
@@ -0,0 +1,1904 @@
+/* Copyright (C) 2011-2015 Free Software Foundation, Inc.
+
+   This file is part of GCC.
+
+   GCC is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
+
+   GCC is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   Under Section 7 of GPL version 3, you are granted additional
+   permissions described in the GCC Runtime Library Exception, version
+   3.1, as published by the Free Software Foundation.
+
+   You should have received a copy of the GNU General Public License and
+   a copy of the GCC Runtime Library Exception along with this program;
+   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _IMMINTRIN_H_INCLUDED
+# error "Never use <avx2intrin.h> directly; include <immintrin.h> instead."
+#endif
+
+#ifndef _AVX2INTRIN_H_INCLUDED
+#define _AVX2INTRIN_H_INCLUDED
+
+#ifndef __AVX2__
+#pragma GCC push_options
+#pragma GCC target("avx2")
+#define __DISABLE_AVX2__
+#endif /* __AVX2__ */
+
+/* Sum absolute 8-bit integer difference of adjacent groups of 4
+   byte integers in the first 2 operands.  Starting offsets within
+   operands are determined by the 3rd mask operand.  */
+#ifdef __OPTIMIZE__
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mpsadbw_epu8 (__m256i __X, __m256i __Y, const int __M)
+{
+  return (__m256i) __builtin_ia32_mpsadbw256 ((__v32qi)__X,
+					      (__v32qi)__Y, __M);
+}
+#else
+#define _mm256_mpsadbw_epu8(X, Y, M)					\
+  ((__m256i) __builtin_ia32_mpsadbw256 ((__v32qi)(__m256i)(X),		\
+					(__v32qi)(__m256i)(Y), (int)(M)))
+#endif
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_abs_epi8 (__m256i __A)
+{
+  return (__m256i)__builtin_ia32_pabsb256 ((__v32qi)__A);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_abs_epi16 (__m256i __A)
+{
+  return (__m256i)__builtin_ia32_pabsw256 ((__v16hi)__A);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_abs_epi32 (__m256i __A)
+{
+  return (__m256i)__builtin_ia32_pabsd256 ((__v8si)__A);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_packs_epi32 (__m256i __A, __m256i __B)
+{
+  return (__m256i)__builtin_ia32_packssdw256 ((__v8si)__A, (__v8si)__B);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_packs_epi16 (__m256i __A, __m256i __B)
+{
+  return (__m256i)__builtin_ia32_packsswb256 ((__v16hi)__A, (__v16hi)__B);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_packus_epi32 (__m256i __A, __m256i __B)
+{
+  return (__m256i)__builtin_ia32_packusdw256 ((__v8si)__A, (__v8si)__B);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_packus_epi16 (__m256i __A, __m256i __B)
+{
+  return (__m256i)__builtin_ia32_packuswb256 ((__v16hi)__A, (__v16hi)__B);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_add_epi8 (__m256i __A, __m256i __B)
+{
+  return (__m256i) ((__v32qu)__A + (__v32qu)__B);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_add_epi16 (__m256i __A, __m256i __B)
+{
+  return (__m256i) ((__v16hu)__A + (__v16hu)__B);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_add_epi32 (__m256i __A, __m256i __B)
+{
+  return (__m256i) ((__v8su)__A + (__v8su)__B);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_add_epi64 (__m256i __A, __m256i __B)
+{
+  return (__m256i) ((__v4du)__A + (__v4du)__B);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_adds_epi8 (__m256i __A, __m256i __B)
+{
+  return (__m256i)__builtin_ia32_paddsb256 ((__v32qi)__A, (__v32qi)__B);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_adds_epi16 (__m256i __A, __m256i __B)
+{
+  return (__m256i)__builtin_ia32_paddsw256 ((__v16hi)__A, (__v16hi)__B);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_adds_epu8 (__m256i __A, __m256i __B)
+{
+  return (__m256i)__builtin_ia32_paddusb256 ((__v32qi)__A, (__v32qi)__B);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_adds_epu16 (__m256i __A, __m256i __B)
+{
+  return (__m256i)__builtin_ia32_paddusw256 ((__v16hi)__A, (__v16hi)__B);
+}
+
+#ifdef __OPTIMIZE__
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_alignr_epi8 (__m256i __A, __m256i __B, const int __N)
+{
+  return (__m256i) __builtin_ia32_palignr256 ((__v4di)__A,
+					      (__v4di)__B,
+					      __N * 8);
+}
+#else
+/* In that case (__N*8) will be in vreg, and insn will not be matched. */
+/* Use define instead */
+#define _mm256_alignr_epi8(A, B, N)				   \
+  ((__m256i) __builtin_ia32_palignr256 ((__v4di)(__m256i)(A),	   \
+					(__v4di)(__m256i)(B),	   \
+					(int)(N) * 8))
+#endif
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_and_si256 (__m256i __A, __m256i __B)
+{
+  return (__m256i) ((__v4du)__A & (__v4du)__B);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_andnot_si256 (__m256i __A, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_andnotsi256 ((__v4di)__A, (__v4di)__B);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_avg_epu8 (__m256i __A, __m256i __B)
+{
+  return (__m256i)__builtin_ia32_pavgb256 ((__v32qi)__A, (__v32qi)__B);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_avg_epu16 (__m256i __A, __m256i __B)
+{
+  return (__m256i)__builtin_ia32_pavgw256 ((__v16hi)__A, (__v16hi)__B);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_blendv_epi8 (__m256i __X, __m256i __Y, __m256i __M)
+{
+  return (__m256i) __builtin_ia32_pblendvb256 ((__v32qi)__X,
+					       (__v32qi)__Y,
+					       (__v32qi)__M);
+}
+
+#ifdef __OPTIMIZE__
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_blend_epi16 (__m256i __X, __m256i __Y, const int __M)
+{
+  return (__m256i) __builtin_ia32_pblendw256 ((__v16hi)__X,
+					      (__v16hi)__Y,
+					       __M);
+}
+#else
+#define _mm256_blend_epi16(X, Y, M)					\
+  ((__m256i) __builtin_ia32_pblendw256 ((__v16hi)(__m256i)(X),		\
+					(__v16hi)(__m256i)(Y), (int)(M)))
+#endif
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cmpeq_epi8 (__m256i __A, __m256i __B)
+{
+  return (__m256i) ((__v32qi)__A == (__v32qi)__B);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cmpeq_epi16 (__m256i __A, __m256i __B)
+{
+  return (__m256i) ((__v16hi)__A == (__v16hi)__B);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cmpeq_epi32 (__m256i __A, __m256i __B)
+{
+  return (__m256i) ((__v8si)__A == (__v8si)__B);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cmpeq_epi64 (__m256i __A, __m256i __B)
+{
+  return (__m256i) ((__v4di)__A == (__v4di)__B);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cmpgt_epi8 (__m256i __A, __m256i __B)
+{
+  return (__m256i) ((__v32qi)__A > (__v32qi)__B);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cmpgt_epi16 (__m256i __A, __m256i __B)
+{
+  return (__m256i) ((__v16hi)__A > (__v16hi)__B);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cmpgt_epi32 (__m256i __A, __m256i __B)
+{
+  return (__m256i) ((__v8si)__A > (__v8si)__B);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cmpgt_epi64 (__m256i __A, __m256i __B)
+{
+  return (__m256i) ((__v4di)__A > (__v4di)__B);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_hadd_epi16 (__m256i __X, __m256i __Y)
+{
+  return (__m256i) __builtin_ia32_phaddw256 ((__v16hi)__X,
+					     (__v16hi)__Y);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_hadd_epi32 (__m256i __X, __m256i __Y)
+{
+  return (__m256i) __builtin_ia32_phaddd256 ((__v8si)__X, (__v8si)__Y);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_hadds_epi16 (__m256i __X, __m256i __Y)
+{
+  return (__m256i) __builtin_ia32_phaddsw256 ((__v16hi)__X,
+					      (__v16hi)__Y);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_hsub_epi16 (__m256i __X, __m256i __Y)
+{
+  return (__m256i) __builtin_ia32_phsubw256 ((__v16hi)__X,
+					     (__v16hi)__Y);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_hsub_epi32 (__m256i __X, __m256i __Y)
+{
+  return (__m256i) __builtin_ia32_phsubd256 ((__v8si)__X, (__v8si)__Y);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_hsubs_epi16 (__m256i __X, __m256i __Y)
+{
+  return (__m256i) __builtin_ia32_phsubsw256 ((__v16hi)__X,
+					      (__v16hi)__Y);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maddubs_epi16 (__m256i __X, __m256i __Y)
+{
+  return (__m256i) __builtin_ia32_pmaddubsw256 ((__v32qi)__X,
+						(__v32qi)__Y);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_madd_epi16 (__m256i __A, __m256i __B)
+{
+  return (__m256i)__builtin_ia32_pmaddwd256 ((__v16hi)__A,
+					     (__v16hi)__B);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_max_epi8 (__m256i __A, __m256i __B)
+{
+  return (__m256i)__builtin_ia32_pmaxsb256 ((__v32qi)__A, (__v32qi)__B);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_max_epi16 (__m256i __A, __m256i __B)
+{
+  return (__m256i)__builtin_ia32_pmaxsw256 ((__v16hi)__A, (__v16hi)__B);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_max_epi32 (__m256i __A, __m256i __B)
+{
+  return (__m256i)__builtin_ia32_pmaxsd256 ((__v8si)__A, (__v8si)__B);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_max_epu8 (__m256i __A, __m256i __B)
+{
+  return (__m256i)__builtin_ia32_pmaxub256 ((__v32qi)__A, (__v32qi)__B);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_max_epu16 (__m256i __A, __m256i __B)
+{
+  return (__m256i)__builtin_ia32_pmaxuw256 ((__v16hi)__A, (__v16hi)__B);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_max_epu32 (__m256i __A, __m256i __B)
+{
+  return (__m256i)__builtin_ia32_pmaxud256 ((__v8si)__A, (__v8si)__B);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_min_epi8 (__m256i __A, __m256i __B)
+{
+  return (__m256i)__builtin_ia32_pminsb256 ((__v32qi)__A, (__v32qi)__B);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_min_epi16 (__m256i __A, __m256i __B)
+{
+  return (__m256i)__builtin_ia32_pminsw256 ((__v16hi)__A, (__v16hi)__B);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_min_epi32 (__m256i __A, __m256i __B)
+{
+  return (__m256i)__builtin_ia32_pminsd256 ((__v8si)__A, (__v8si)__B);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_min_epu8 (__m256i __A, __m256i __B)
+{
+  return (__m256i)__builtin_ia32_pminub256 ((__v32qi)__A, (__v32qi)__B);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_min_epu16 (__m256i __A, __m256i __B)
+{
+  return (__m256i)__builtin_ia32_pminuw256 ((__v16hi)__A, (__v16hi)__B);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_min_epu32 (__m256i __A, __m256i __B)
+{
+  return (__m256i)__builtin_ia32_pminud256 ((__v8si)__A, (__v8si)__B);
+}
+
+extern __inline int
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_movemask_epi8 (__m256i __A)
+{
+  return __builtin_ia32_pmovmskb256 ((__v32qi)__A);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cvtepi8_epi16 (__m128i __X)
+{
+  return (__m256i) __builtin_ia32_pmovsxbw256 ((__v16qi)__X);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cvtepi8_epi32 (__m128i __X)
+{
+  return (__m256i) __builtin_ia32_pmovsxbd256 ((__v16qi)__X);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cvtepi8_epi64 (__m128i __X)
+{
+  return (__m256i) __builtin_ia32_pmovsxbq256 ((__v16qi)__X);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cvtepi16_epi32 (__m128i __X)
+{
+  return (__m256i) __builtin_ia32_pmovsxwd256 ((__v8hi)__X);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cvtepi16_epi64 (__m128i __X)
+{
+  return (__m256i) __builtin_ia32_pmovsxwq256 ((__v8hi)__X);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cvtepi32_epi64 (__m128i __X)
+{
+  return (__m256i) __builtin_ia32_pmovsxdq256 ((__v4si)__X);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cvtepu8_epi16 (__m128i __X)
+{
+  return (__m256i) __builtin_ia32_pmovzxbw256 ((__v16qi)__X);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cvtepu8_epi32 (__m128i __X)
+{
+  return (__m256i) __builtin_ia32_pmovzxbd256 ((__v16qi)__X);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cvtepu8_epi64 (__m128i __X)
+{
+  return (__m256i) __builtin_ia32_pmovzxbq256 ((__v16qi)__X);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cvtepu16_epi32 (__m128i __X)
+{
+  return (__m256i) __builtin_ia32_pmovzxwd256 ((__v8hi)__X);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cvtepu16_epi64 (__m128i __X)
+{
+  return (__m256i) __builtin_ia32_pmovzxwq256 ((__v8hi)__X);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cvtepu32_epi64 (__m128i __X)
+{
+  return (__m256i) __builtin_ia32_pmovzxdq256 ((__v4si)__X);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mul_epi32 (__m256i __X, __m256i __Y)
+{
+  return (__m256i) __builtin_ia32_pmuldq256 ((__v8si)__X, (__v8si)__Y);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mulhrs_epi16 (__m256i __X, __m256i __Y)
+{
+  return (__m256i) __builtin_ia32_pmulhrsw256 ((__v16hi)__X,
+					       (__v16hi)__Y);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mulhi_epu16 (__m256i __A, __m256i __B)
+{
+  return (__m256i)__builtin_ia32_pmulhuw256 ((__v16hi)__A, (__v16hi)__B);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mulhi_epi16 (__m256i __A, __m256i __B)
+{
+  return (__m256i)__builtin_ia32_pmulhw256 ((__v16hi)__A, (__v16hi)__B);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mullo_epi16 (__m256i __A, __m256i __B)
+{
+  return (__m256i) ((__v16hu)__A * (__v16hu)__B);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mullo_epi32 (__m256i __A, __m256i __B)
+{
+  return (__m256i) ((__v8su)__A * (__v8su)__B);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mul_epu32 (__m256i __A, __m256i __B)
+{
+  return (__m256i)__builtin_ia32_pmuludq256 ((__v8si)__A, (__v8si)__B);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_or_si256 (__m256i __A, __m256i __B)
+{
+  return (__m256i) ((__v4du)__A | (__v4du)__B);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_sad_epu8 (__m256i __A, __m256i __B)
+{
+  return (__m256i)__builtin_ia32_psadbw256 ((__v32qi)__A, (__v32qi)__B);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_shuffle_epi8 (__m256i __X, __m256i __Y)
+{
+  return (__m256i) __builtin_ia32_pshufb256 ((__v32qi)__X,
+					     (__v32qi)__Y);
+}
+
+#ifdef __OPTIMIZE__
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_shuffle_epi32 (__m256i __A, const int __mask)
+{
+  return (__m256i)__builtin_ia32_pshufd256 ((__v8si)__A, __mask);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_shufflehi_epi16 (__m256i __A, const int __mask)
+{
+  return (__m256i)__builtin_ia32_pshufhw256 ((__v16hi)__A, __mask);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_shufflelo_epi16 (__m256i __A, const int __mask)
+{
+  return (__m256i)__builtin_ia32_pshuflw256 ((__v16hi)__A, __mask);
+}
+#else
+#define _mm256_shuffle_epi32(A, N) \
+  ((__m256i)__builtin_ia32_pshufd256 ((__v8si)(__m256i)(A), (int)(N)))
+#define _mm256_shufflehi_epi16(A, N) \
+  ((__m256i)__builtin_ia32_pshufhw256 ((__v16hi)(__m256i)(A), (int)(N)))
+#define _mm256_shufflelo_epi16(A, N) \
+  ((__m256i)__builtin_ia32_pshuflw256 ((__v16hi)(__m256i)(A), (int)(N)))
+#endif
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_sign_epi8 (__m256i __X, __m256i __Y)
+{
+  return (__m256i) __builtin_ia32_psignb256 ((__v32qi)__X, (__v32qi)__Y);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_sign_epi16 (__m256i __X, __m256i __Y)
+{
+  return (__m256i) __builtin_ia32_psignw256 ((__v16hi)__X, (__v16hi)__Y);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_sign_epi32 (__m256i __X, __m256i __Y)
+{
+  return (__m256i) __builtin_ia32_psignd256 ((__v8si)__X, (__v8si)__Y);
+}
+
+#ifdef __OPTIMIZE__
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_bslli_epi128 (__m256i __A, const int __N)
+{
+  return (__m256i)__builtin_ia32_pslldqi256 (__A, __N * 8);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_slli_si256 (__m256i __A, const int __N)
+{
+  return (__m256i)__builtin_ia32_pslldqi256 (__A, __N * 8);
+}
+#else
+#define _mm256_bslli_epi128(A, N) \
+  ((__m256i)__builtin_ia32_pslldqi256 ((__m256i)(A), (int)(N) * 8))
+#define _mm256_slli_si256(A, N) \
+  ((__m256i)__builtin_ia32_pslldqi256 ((__m256i)(A), (int)(N) * 8))
+#endif
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_slli_epi16 (__m256i __A, int __B)
+{
+  return (__m256i)__builtin_ia32_psllwi256 ((__v16hi)__A, __B);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_sll_epi16 (__m256i __A, __m128i __B)
+{
+  return (__m256i)__builtin_ia32_psllw256((__v16hi)__A, (__v8hi)__B);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_slli_epi32 (__m256i __A, int __B)
+{
+  return (__m256i)__builtin_ia32_pslldi256 ((__v8si)__A, __B);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_sll_epi32 (__m256i __A, __m128i __B)
+{
+  return (__m256i)__builtin_ia32_pslld256((__v8si)__A, (__v4si)__B);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_slli_epi64 (__m256i __A, int __B)
+{
+  return (__m256i)__builtin_ia32_psllqi256 ((__v4di)__A, __B);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_sll_epi64 (__m256i __A, __m128i __B)
+{
+  return (__m256i)__builtin_ia32_psllq256((__v4di)__A, (__v2di)__B);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_srai_epi16 (__m256i __A, int __B)
+{
+  return (__m256i)__builtin_ia32_psrawi256 ((__v16hi)__A, __B);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_sra_epi16 (__m256i __A, __m128i __B)
+{
+  return (__m256i)__builtin_ia32_psraw256 ((__v16hi)__A, (__v8hi)__B);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_srai_epi32 (__m256i __A, int __B)
+{
+  return (__m256i)__builtin_ia32_psradi256 ((__v8si)__A, __B);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_sra_epi32 (__m256i __A, __m128i __B)
+{
+  return (__m256i)__builtin_ia32_psrad256 ((__v8si)__A, (__v4si)__B);
+}
+
+#ifdef __OPTIMIZE__
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_bsrli_epi128 (__m256i __A, const int __N)
+{
+  return (__m256i)__builtin_ia32_psrldqi256 (__A, __N * 8);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_srli_si256 (__m256i __A, const int __N)
+{
+  return (__m256i)__builtin_ia32_psrldqi256 (__A, __N * 8);
+}
+#else
+#define _mm256_bsrli_epi128(A, N) \
+  ((__m256i)__builtin_ia32_psrldqi256 ((__m256i)(A), (int)(N) * 8))
+#define _mm256_srli_si256(A, N) \
+  ((__m256i)__builtin_ia32_psrldqi256 ((__m256i)(A), (int)(N) * 8))
+#endif
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_srli_epi16 (__m256i __A, int __B)
+{
+  return (__m256i)__builtin_ia32_psrlwi256 ((__v16hi)__A, __B);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_srl_epi16 (__m256i __A, __m128i __B)
+{
+  return (__m256i)__builtin_ia32_psrlw256((__v16hi)__A, (__v8hi)__B);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_srli_epi32 (__m256i __A, int __B)
+{
+  return (__m256i)__builtin_ia32_psrldi256 ((__v8si)__A, __B);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_srl_epi32 (__m256i __A, __m128i __B)
+{
+  return (__m256i)__builtin_ia32_psrld256((__v8si)__A, (__v4si)__B);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_srli_epi64 (__m256i __A, int __B)
+{
+  return (__m256i)__builtin_ia32_psrlqi256 ((__v4di)__A, __B);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_srl_epi64 (__m256i __A, __m128i __B)
+{
+  return (__m256i)__builtin_ia32_psrlq256((__v4di)__A, (__v2di)__B);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_sub_epi8 (__m256i __A, __m256i __B)
+{
+  return (__m256i) ((__v32qu)__A - (__v32qu)__B);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_sub_epi16 (__m256i __A, __m256i __B)
+{
+  return (__m256i) ((__v16hu)__A - (__v16hu)__B);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_sub_epi32 (__m256i __A, __m256i __B)
+{
+  return (__m256i) ((__v8su)__A - (__v8su)__B);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_sub_epi64 (__m256i __A, __m256i __B)
+{
+  return (__m256i) ((__v4du)__A - (__v4du)__B);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_subs_epi8 (__m256i __A, __m256i __B)
+{
+  return (__m256i)__builtin_ia32_psubsb256 ((__v32qi)__A, (__v32qi)__B);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_subs_epi16 (__m256i __A, __m256i __B)
+{
+  return (__m256i)__builtin_ia32_psubsw256 ((__v16hi)__A, (__v16hi)__B);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_subs_epu8 (__m256i __A, __m256i __B)
+{
+  return (__m256i)__builtin_ia32_psubusb256 ((__v32qi)__A, (__v32qi)__B);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_subs_epu16 (__m256i __A, __m256i __B)
+{
+  return (__m256i)__builtin_ia32_psubusw256 ((__v16hi)__A, (__v16hi)__B);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_unpackhi_epi8 (__m256i __A, __m256i __B)
+{
+  return (__m256i)__builtin_ia32_punpckhbw256 ((__v32qi)__A, (__v32qi)__B);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_unpackhi_epi16 (__m256i __A, __m256i __B)
+{
+  return (__m256i)__builtin_ia32_punpckhwd256 ((__v16hi)__A, (__v16hi)__B);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_unpackhi_epi32 (__m256i __A, __m256i __B)
+{
+  return (__m256i)__builtin_ia32_punpckhdq256 ((__v8si)__A, (__v8si)__B);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_unpackhi_epi64 (__m256i __A, __m256i __B)
+{
+  return (__m256i)__builtin_ia32_punpckhqdq256 ((__v4di)__A, (__v4di)__B);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_unpacklo_epi8 (__m256i __A, __m256i __B)
+{
+  return (__m256i)__builtin_ia32_punpcklbw256 ((__v32qi)__A, (__v32qi)__B);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_unpacklo_epi16 (__m256i __A, __m256i __B)
+{
+  return (__m256i)__builtin_ia32_punpcklwd256 ((__v16hi)__A, (__v16hi)__B);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_unpacklo_epi32 (__m256i __A, __m256i __B)
+{
+  return (__m256i)__builtin_ia32_punpckldq256 ((__v8si)__A, (__v8si)__B);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_unpacklo_epi64 (__m256i __A, __m256i __B)
+{
+  return (__m256i)__builtin_ia32_punpcklqdq256 ((__v4di)__A, (__v4di)__B);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_xor_si256 (__m256i __A, __m256i __B)
+{
+  return (__m256i) ((__v4du)__A ^ (__v4du)__B);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_stream_load_si256 (__m256i const *__X)
+{
+  return (__m256i) __builtin_ia32_movntdqa256 ((__v4di *) __X);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_broadcastss_ps (__m128 __X)
+{
+  return (__m128) __builtin_ia32_vbroadcastss_ps ((__v4sf)__X);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_broadcastss_ps (__m128 __X)
+{
+  return (__m256) __builtin_ia32_vbroadcastss_ps256 ((__v4sf)__X);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_broadcastsd_pd (__m128d __X)
+{
+  return (__m256d) __builtin_ia32_vbroadcastsd_pd256 ((__v2df)__X);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_broadcastsi128_si256 (__m128i __X)
+{
+  return (__m256i) __builtin_ia32_vbroadcastsi256 ((__v2di)__X);
+}
+
+#ifdef __OPTIMIZE__
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_blend_epi32 (__m128i __X, __m128i __Y, const int __M)
+{
+  return (__m128i) __builtin_ia32_pblendd128 ((__v4si)__X,
+					      (__v4si)__Y,
+					      __M);
+}
+#else
+#define _mm_blend_epi32(X, Y, M)					\
+  ((__m128i) __builtin_ia32_pblendd128 ((__v4si)(__m128i)(X),		\
+					(__v4si)(__m128i)(Y), (int)(M)))
+#endif
+
+#ifdef __OPTIMIZE__
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_blend_epi32 (__m256i __X, __m256i __Y, const int __M)
+{
+  return (__m256i) __builtin_ia32_pblendd256 ((__v8si)__X,
+					      (__v8si)__Y,
+					      __M);
+}
+#else
+#define _mm256_blend_epi32(X, Y, M)					\
+  ((__m256i) __builtin_ia32_pblendd256 ((__v8si)(__m256i)(X),		\
+					(__v8si)(__m256i)(Y), (int)(M)))
+#endif
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_broadcastb_epi8 (__m128i __X)
+{
+  return (__m256i) __builtin_ia32_pbroadcastb256 ((__v16qi)__X);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_broadcastw_epi16 (__m128i __X)
+{
+  return (__m256i) __builtin_ia32_pbroadcastw256 ((__v8hi)__X);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_broadcastd_epi32 (__m128i __X)
+{
+  return (__m256i) __builtin_ia32_pbroadcastd256 ((__v4si)__X);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_broadcastq_epi64 (__m128i __X)
+{
+  return (__m256i) __builtin_ia32_pbroadcastq256 ((__v2di)__X);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_broadcastb_epi8 (__m128i __X)
+{
+  return (__m128i) __builtin_ia32_pbroadcastb128 ((__v16qi)__X);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_broadcastw_epi16 (__m128i __X)
+{
+  return (__m128i) __builtin_ia32_pbroadcastw128 ((__v8hi)__X);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_broadcastd_epi32 (__m128i __X)
+{
+  return (__m128i) __builtin_ia32_pbroadcastd128 ((__v4si)__X);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_broadcastq_epi64 (__m128i __X)
+{
+  return (__m128i) __builtin_ia32_pbroadcastq128 ((__v2di)__X);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_permutevar8x32_epi32 (__m256i __X, __m256i __Y)
+{
+  return (__m256i) __builtin_ia32_permvarsi256 ((__v8si)__X, (__v8si)__Y);
+}
+
+#ifdef __OPTIMIZE__
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_permute4x64_pd (__m256d __X, const int __M)
+{
+  return (__m256d) __builtin_ia32_permdf256 ((__v4df)__X, __M);
+}
+#else
+#define _mm256_permute4x64_pd(X, M)			       \
+  ((__m256d) __builtin_ia32_permdf256 ((__v4df)(__m256d)(X), (int)(M)))
+#endif
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_permutevar8x32_ps (__m256 __X, __m256i __Y)
+{
+  return (__m256) __builtin_ia32_permvarsf256 ((__v8sf)__X, (__v8si)__Y);
+}
+
+#ifdef __OPTIMIZE__
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_permute4x64_epi64 (__m256i __X, const int __M)
+{
+  return (__m256i) __builtin_ia32_permdi256 ((__v4di)__X, __M);
+}
+#else
+#define _mm256_permute4x64_epi64(X, M)			       \
+  ((__m256i) __builtin_ia32_permdi256 ((__v4di)(__m256i)(X), (int)(M)))
+#endif
+
+
+#ifdef __OPTIMIZE__
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_permute2x128_si256 (__m256i __X, __m256i __Y, const int __M)
+{
+  return (__m256i) __builtin_ia32_permti256 ((__v4di)__X, (__v4di)__Y, __M);
+}
+#else
+#define _mm256_permute2x128_si256(X, Y, M)				\
+  ((__m256i) __builtin_ia32_permti256 ((__v4di)(__m256i)(X), (__v4di)(__m256i)(Y), (int)(M)))
+#endif
+
+#ifdef __OPTIMIZE__
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_extracti128_si256 (__m256i __X, const int __M)
+{
+  return (__m128i) __builtin_ia32_extract128i256 ((__v4di)__X, __M);
+}
+#else
+#define _mm256_extracti128_si256(X, M)				\
+  ((__m128i) __builtin_ia32_extract128i256 ((__v4di)(__m256i)(X), (int)(M)))
+#endif
+
+#ifdef __OPTIMIZE__
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_inserti128_si256 (__m256i __X, __m128i __Y, const int __M)
+{
+  return (__m256i) __builtin_ia32_insert128i256 ((__v4di)__X, (__v2di)__Y, __M);
+}
+#else
+#define _mm256_inserti128_si256(X, Y, M)			 \
+  ((__m256i) __builtin_ia32_insert128i256 ((__v4di)(__m256i)(X), \
+					   (__v2di)(__m128i)(Y), \
+					   (int)(M)))
+#endif
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskload_epi32 (int const *__X, __m256i __M )
+{
+  return (__m256i) __builtin_ia32_maskloadd256 ((const __v8si *)__X,
+						(__v8si)__M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskload_epi64 (long long const *__X, __m256i __M )
+{
+  return (__m256i) __builtin_ia32_maskloadq256 ((const __v4di *)__X,
+						(__v4di)__M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskload_epi32 (int const *__X, __m128i __M )
+{
+  return (__m128i) __builtin_ia32_maskloadd ((const __v4si *)__X,
+					     (__v4si)__M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskload_epi64 (long long const *__X, __m128i __M )
+{
+  return (__m128i) __builtin_ia32_maskloadq ((const __v2di *)__X,
+					     (__v2di)__M);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskstore_epi32 (int *__X, __m256i __M, __m256i __Y )
+{
+  __builtin_ia32_maskstored256 ((__v8si *)__X, (__v8si)__M, (__v8si)__Y);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskstore_epi64 (long long *__X, __m256i __M, __m256i __Y )
+{
+  __builtin_ia32_maskstoreq256 ((__v4di *)__X, (__v4di)__M, (__v4di)__Y);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskstore_epi32 (int *__X, __m128i __M, __m128i __Y )
+{
+  __builtin_ia32_maskstored ((__v4si *)__X, (__v4si)__M, (__v4si)__Y);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskstore_epi64 (long long *__X, __m128i __M, __m128i __Y )
+{
+  __builtin_ia32_maskstoreq (( __v2di *)__X, (__v2di)__M, (__v2di)__Y);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_sllv_epi32 (__m256i __X, __m256i __Y)
+{
+  return (__m256i) __builtin_ia32_psllv8si ((__v8si)__X, (__v8si)__Y);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_sllv_epi32 (__m128i __X, __m128i __Y)
+{
+  return (__m128i) __builtin_ia32_psllv4si ((__v4si)__X, (__v4si)__Y);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_sllv_epi64 (__m256i __X, __m256i __Y)
+{
+  return (__m256i) __builtin_ia32_psllv4di ((__v4di)__X, (__v4di)__Y);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_sllv_epi64 (__m128i __X, __m128i __Y)
+{
+  return (__m128i) __builtin_ia32_psllv2di ((__v2di)__X, (__v2di)__Y);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_srav_epi32 (__m256i __X, __m256i __Y)
+{
+  return (__m256i) __builtin_ia32_psrav8si ((__v8si)__X, (__v8si)__Y);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_srav_epi32 (__m128i __X, __m128i __Y)
+{
+  return (__m128i) __builtin_ia32_psrav4si ((__v4si)__X, (__v4si)__Y);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_srlv_epi32 (__m256i __X, __m256i __Y)
+{
+  return (__m256i) __builtin_ia32_psrlv8si ((__v8si)__X, (__v8si)__Y);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_srlv_epi32 (__m128i __X, __m128i __Y)
+{
+  return (__m128i) __builtin_ia32_psrlv4si ((__v4si)__X, (__v4si)__Y);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_srlv_epi64 (__m256i __X, __m256i __Y)
+{
+  return (__m256i) __builtin_ia32_psrlv4di ((__v4di)__X, (__v4di)__Y);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_srlv_epi64 (__m128i __X, __m128i __Y)
+{
+  return (__m128i) __builtin_ia32_psrlv2di ((__v2di)__X, (__v2di)__Y);
+}
+
+#ifdef __OPTIMIZE__
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_i32gather_pd (double const *base, __m128i index, const int scale)
+{
+  __v2df zero = _mm_setzero_pd ();
+  __v2df mask = _mm_cmpeq_pd (zero, zero);
+
+  return (__m128d) __builtin_ia32_gathersiv2df (_mm_undefined_pd (),
+						base,
+						(__v4si)index,
+						mask,
+						scale);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_i32gather_pd (__m128d src, double const *base, __m128i index,
+		       __m128d mask, const int scale)
+{
+  return (__m128d) __builtin_ia32_gathersiv2df ((__v2df)src,
+						base,
+						(__v4si)index,
+						(__v2df)mask,
+						scale);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_i32gather_pd (double const *base, __m128i index, const int scale)
+{
+  __v4df zero = _mm256_setzero_pd ();
+  __v4df mask = _mm256_cmp_pd (zero, zero, _CMP_EQ_OQ);
+
+  return (__m256d) __builtin_ia32_gathersiv4df (_mm256_undefined_pd (),
+						base,
+						(__v4si)index,
+						mask,
+						scale);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_i32gather_pd (__m256d src, double const *base,
+			  __m128i index, __m256d mask, const int scale)
+{
+  return (__m256d) __builtin_ia32_gathersiv4df ((__v4df)src,
+						base,
+						(__v4si)index,
+						(__v4df)mask,
+						scale);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_i64gather_pd (double const *base, __m128i index, const int scale)
+{
+  __v2df src = _mm_setzero_pd ();
+  __v2df mask = _mm_cmpeq_pd (src, src);
+
+  return (__m128d) __builtin_ia32_gatherdiv2df (src,
+						base,
+						(__v2di)index,
+						mask,
+						scale);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_i64gather_pd (__m128d src, double const *base, __m128i index,
+		       __m128d mask, const int scale)
+{
+  return (__m128d) __builtin_ia32_gatherdiv2df ((__v2df)src,
+						base,
+						(__v2di)index,
+						(__v2df)mask,
+						scale);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_i64gather_pd (double const *base, __m256i index, const int scale)
+{
+  __v4df src = _mm256_setzero_pd ();
+  __v4df mask = _mm256_cmp_pd (src, src, _CMP_EQ_OQ);
+
+  return (__m256d) __builtin_ia32_gatherdiv4df (src,
+						base,
+						(__v4di)index,
+						mask,
+						scale);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_i64gather_pd (__m256d src, double const *base,
+			  __m256i index, __m256d mask, const int scale)
+{
+  return (__m256d) __builtin_ia32_gatherdiv4df ((__v4df)src,
+						base,
+						(__v4di)index,
+						(__v4df)mask,
+						scale);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_i32gather_ps (float const *base, __m128i index, const int scale)
+{
+  __v4sf src = _mm_setzero_ps ();
+  __v4sf mask = _mm_cmpeq_ps (src, src);
+
+  return (__m128) __builtin_ia32_gathersiv4sf (src,
+					       base,
+					       (__v4si)index,
+					       mask,
+					       scale);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_i32gather_ps (__m128 src, float const *base, __m128i index,
+		       __m128 mask, const int scale)
+{
+  return (__m128) __builtin_ia32_gathersiv4sf ((__v4sf)src,
+					       base,
+					       (__v4si)index,
+					       (__v4sf)mask,
+					       scale);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_i32gather_ps (float const *base, __m256i index, const int scale)
+{
+  __v8sf src = _mm256_setzero_ps ();
+  __v8sf mask = _mm256_cmp_ps (src, src, _CMP_EQ_OQ);
+
+  return (__m256) __builtin_ia32_gathersiv8sf (src,
+					       base,
+					       (__v8si)index,
+					       mask,
+					       scale);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_i32gather_ps (__m256 src, float const *base,
+			  __m256i index, __m256 mask, const int scale)
+{
+  return (__m256) __builtin_ia32_gathersiv8sf ((__v8sf)src,
+					       base,
+					       (__v8si)index,
+					       (__v8sf)mask,
+					       scale);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_i64gather_ps (float const *base, __m128i index, const int scale)
+{
+  __v4sf src = _mm_setzero_ps ();
+  __v4sf mask = _mm_cmpeq_ps (src, src);
+
+  return (__m128) __builtin_ia32_gatherdiv4sf (src,
+					       base,
+					       (__v2di)index,
+					       mask,
+					       scale);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_i64gather_ps (__m128 src, float const *base, __m128i index,
+		       __m128 mask, const int scale)
+{
+  return (__m128) __builtin_ia32_gatherdiv4sf ((__v4sf)src,
+						base,
+						(__v2di)index,
+						(__v4sf)mask,
+						scale);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_i64gather_ps (float const *base, __m256i index, const int scale)
+{
+  __v4sf src = _mm_setzero_ps ();
+  __v4sf mask = _mm_cmpeq_ps (src, src);
+
+  return (__m128) __builtin_ia32_gatherdiv4sf256 (src,
+						  base,
+						  (__v4di)index,
+						  mask,
+						  scale);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_i64gather_ps (__m128 src, float const *base,
+			  __m256i index, __m128 mask, const int scale)
+{
+  return (__m128) __builtin_ia32_gatherdiv4sf256 ((__v4sf)src,
+						  base,
+						  (__v4di)index,
+						  (__v4sf)mask,
+						  scale);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_i32gather_epi64 (long long int const *base,
+		     __m128i index, const int scale)
+{
+  __v2di src = __extension__ (__v2di){ 0, 0 };
+  __v2di mask = __extension__ (__v2di){ ~0, ~0 };
+
+  return (__m128i) __builtin_ia32_gathersiv2di (src,
+						base,
+						(__v4si)index,
+						mask,
+						scale);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_i32gather_epi64 (__m128i src, long long int const *base,
+			  __m128i index, __m128i mask, const int scale)
+{
+  return (__m128i) __builtin_ia32_gathersiv2di ((__v2di)src,
+						base,
+						(__v4si)index,
+						(__v2di)mask,
+						scale);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_i32gather_epi64 (long long int const *base,
+			__m128i index, const int scale)
+{
+  __v4di src = __extension__ (__v4di){ 0, 0, 0, 0 };
+  __v4di mask = __extension__ (__v4di){ ~0, ~0, ~0, ~0 };
+
+  return (__m256i) __builtin_ia32_gathersiv4di (src,
+						base,
+						(__v4si)index,
+						mask,
+						scale);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_i32gather_epi64 (__m256i src, long long int const *base,
+			     __m128i index, __m256i mask, const int scale)
+{
+  return (__m256i) __builtin_ia32_gathersiv4di ((__v4di)src,
+						base,
+						(__v4si)index,
+						(__v4di)mask,
+						scale);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_i64gather_epi64 (long long int const *base,
+		     __m128i index, const int scale)
+{
+  __v2di src = __extension__ (__v2di){ 0, 0 };
+  __v2di mask = __extension__ (__v2di){ ~0, ~0 };
+
+  return (__m128i) __builtin_ia32_gatherdiv2di (src,
+						base,
+						(__v2di)index,
+						mask,
+						scale);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_i64gather_epi64 (__m128i src, long long int const *base, __m128i index,
+			  __m128i mask, const int scale)
+{
+  return (__m128i) __builtin_ia32_gatherdiv2di ((__v2di)src,
+						base,
+						(__v2di)index,
+						(__v2di)mask,
+						scale);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_i64gather_epi64 (long long int const *base,
+			__m256i index, const int scale)
+{
+  __v4di src = __extension__ (__v4di){ 0, 0, 0, 0 };
+  __v4di mask = __extension__ (__v4di){ ~0, ~0, ~0, ~0 };
+
+  return (__m256i) __builtin_ia32_gatherdiv4di (src,
+						base,
+						(__v4di)index,
+						mask,
+						scale);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_i64gather_epi64 (__m256i src, long long int const *base,
+			     __m256i index, __m256i mask, const int scale)
+{
+  return (__m256i) __builtin_ia32_gatherdiv4di ((__v4di)src,
+						base,
+						(__v4di)index,
+						(__v4di)mask,
+						scale);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_i32gather_epi32 (int const *base, __m128i index, const int scale)
+{
+  __v4si src = __extension__ (__v4si){ 0, 0, 0, 0 };
+  __v4si mask = __extension__ (__v4si){ ~0, ~0, ~0, ~0 };
+
+  return (__m128i) __builtin_ia32_gathersiv4si (src,
+					       base,
+					       (__v4si)index,
+					       mask,
+					       scale);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_i32gather_epi32 (__m128i src, int const *base, __m128i index,
+			  __m128i mask, const int scale)
+{
+  return (__m128i) __builtin_ia32_gathersiv4si ((__v4si)src,
+						base,
+						(__v4si)index,
+						(__v4si)mask,
+						scale);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_i32gather_epi32 (int const *base, __m256i index, const int scale)
+{
+  __v8si src = __extension__ (__v8si){ 0, 0, 0, 0, 0, 0, 0, 0 };
+  __v8si mask = __extension__ (__v8si){ ~0, ~0, ~0, ~0, ~0, ~0, ~0, ~0 };
+
+  return (__m256i) __builtin_ia32_gathersiv8si (src,
+						base,
+						(__v8si)index,
+						mask,
+						scale);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_i32gather_epi32 (__m256i src, int const *base,
+			     __m256i index, __m256i mask, const int scale)
+{
+  return (__m256i) __builtin_ia32_gathersiv8si ((__v8si)src,
+						base,
+						(__v8si)index,
+						(__v8si)mask,
+						scale);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_i64gather_epi32 (int const *base, __m128i index, const int scale)
+{
+  __v4si src = __extension__ (__v4si){ 0, 0, 0, 0 };
+  __v4si mask = __extension__ (__v4si){ ~0, ~0, ~0, ~0 };
+
+  return (__m128i) __builtin_ia32_gatherdiv4si (src,
+						base,
+						(__v2di)index,
+						mask,
+						scale);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_i64gather_epi32 (__m128i src, int const *base, __m128i index,
+			  __m128i mask, const int scale)
+{
+  return (__m128i) __builtin_ia32_gatherdiv4si ((__v4si)src,
+						base,
+						(__v2di)index,
+						(__v4si)mask,
+						scale);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_i64gather_epi32 (int const *base, __m256i index, const int scale)
+{
+  __v4si src = __extension__ (__v4si){ 0, 0, 0, 0 };
+  __v4si mask = __extension__ (__v4si){ ~0, ~0, ~0, ~0 };
+
+  return (__m128i) __builtin_ia32_gatherdiv4si256 (src,
+						  base,
+						  (__v4di)index,
+						  mask,
+						  scale);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_i64gather_epi32 (__m128i src, int const *base,
+			     __m256i index, __m128i mask, const int scale)
+{
+  return (__m128i) __builtin_ia32_gatherdiv4si256 ((__v4si)src,
+						   base,
+						   (__v4di)index,
+						   (__v4si)mask,
+						   scale);
+}
+#else /* __OPTIMIZE__ */
+#define _mm_i32gather_pd(BASE, INDEX, SCALE)				\
+  (__m128d) __builtin_ia32_gathersiv2df ((__v2df) _mm_setzero_pd (),	\
+					 (double const *)BASE,		\
+					 (__v4si)(__m128i)INDEX,	\
+					 (__v2df)_mm_set1_pd(		\
+					   (double)(long long int) -1), \
+					 (int)SCALE)
+
+#define _mm_mask_i32gather_pd(SRC, BASE, INDEX, MASK, SCALE)	 \
+  (__m128d) __builtin_ia32_gathersiv2df ((__v2df)(__m128d)SRC,	 \
+					 (double const *)BASE,	 \
+					 (__v4si)(__m128i)INDEX, \
+					 (__v2df)(__m128d)MASK,	 \
+					 (int)SCALE)
+
+#define _mm256_i32gather_pd(BASE, INDEX, SCALE)				\
+  (__m256d) __builtin_ia32_gathersiv4df ((__v4df) _mm256_setzero_pd (),	\
+					 (double const *)BASE,		\
+					 (__v4si)(__m128i)INDEX,	\
+					 (__v4df)_mm256_set1_pd(	\
+					   (double)(long long int) -1), \
+					 (int)SCALE)
+
+#define _mm256_mask_i32gather_pd(SRC, BASE, INDEX, MASK, SCALE)	 \
+  (__m256d) __builtin_ia32_gathersiv4df ((__v4df)(__m256d)SRC,	 \
+					 (double const *)BASE,	 \
+					 (__v4si)(__m128i)INDEX, \
+					 (__v4df)(__m256d)MASK,	 \
+					 (int)SCALE)
+
+#define _mm_i64gather_pd(BASE, INDEX, SCALE)				\
+  (__m128d) __builtin_ia32_gatherdiv2df ((__v2df) _mm_setzero_pd (),	\
+					 (double const *)BASE,		\
+					 (__v2di)(__m128i)INDEX,	\
+					 (__v2df)_mm_set1_pd(		\
+					   (double)(long long int) -1), \
+					 (int)SCALE)
+
+#define _mm_mask_i64gather_pd(SRC, BASE, INDEX, MASK, SCALE)	 \
+  (__m128d) __builtin_ia32_gatherdiv2df ((__v2df)(__m128d)SRC,	 \
+					 (double const *)BASE,	 \
+					 (__v2di)(__m128i)INDEX, \
+					 (__v2df)(__m128d)MASK,	 \
+					 (int)SCALE)
+
+#define _mm256_i64gather_pd(BASE, INDEX, SCALE)				\
+  (__m256d) __builtin_ia32_gatherdiv4df ((__v4df) _mm256_setzero_pd (),	\
+					 (double const *)BASE,		\
+					 (__v4di)(__m256i)INDEX,	\
+					 (__v4df)_mm256_set1_pd(	\
+					   (double)(long long int) -1), \
+					 (int)SCALE)
+
+#define _mm256_mask_i64gather_pd(SRC, BASE, INDEX, MASK, SCALE)	 \
+  (__m256d) __builtin_ia32_gatherdiv4df ((__v4df)(__m256d)SRC,	 \
+					 (double const *)BASE,	 \
+					 (__v4di)(__m256i)INDEX, \
+					 (__v4df)(__m256d)MASK,	 \
+					 (int)SCALE)
+
+#define _mm_i32gather_ps(BASE, INDEX, SCALE)				\
+  (__m128) __builtin_ia32_gathersiv4sf ((__v4sf) _mm_setzero_ps (),	\
+					(float const *)BASE,		\
+					(__v4si)(__m128i)INDEX,		\
+					_mm_set1_ps ((float)(int) -1),	\
+					(int)SCALE)
+
+#define _mm_mask_i32gather_ps(SRC, BASE, INDEX, MASK, SCALE)	 \
+  (__m128) __builtin_ia32_gathersiv4sf ((__v4sf)(__m128d)SRC,	 \
+					(float const *)BASE,	 \
+					(__v4si)(__m128i)INDEX,	 \
+					(__v4sf)(__m128d)MASK,	 \
+					(int)SCALE)
+
+#define _mm256_i32gather_ps(BASE, INDEX, SCALE)			       \
+  (__m256) __builtin_ia32_gathersiv8sf ((__v8sf) _mm256_setzero_ps (), \
+					(float const *)BASE,	       \
+					(__v8si)(__m256i)INDEX,	       \
+					(__v8sf)_mm256_set1_ps (       \
+					  (float)(int) -1),	       \
+					(int)SCALE)
+
+#define _mm256_mask_i32gather_ps(SRC, BASE, INDEX, MASK, SCALE) \
+  (__m256) __builtin_ia32_gathersiv8sf ((__v8sf)(__m256)SRC,	\
+					(float const *)BASE,	\
+					(__v8si)(__m256i)INDEX, \
+					(__v8sf)(__m256d)MASK,	\
+					(int)SCALE)
+
+#define _mm_i64gather_ps(BASE, INDEX, SCALE)				\
+  (__m128) __builtin_ia32_gatherdiv4sf ((__v4sf) _mm_setzero_pd (),	\
+					(float const *)BASE,		\
+					(__v2di)(__m128i)INDEX,		\
+					(__v4sf)_mm_set1_ps (		\
+					  (float)(int) -1),		\
+					(int)SCALE)
+
+#define _mm_mask_i64gather_ps(SRC, BASE, INDEX, MASK, SCALE)	 \
+  (__m128) __builtin_ia32_gatherdiv4sf ((__v4sf)(__m128)SRC,	 \
+					(float const *)BASE,	 \
+					(__v2di)(__m128i)INDEX,	 \
+					(__v4sf)(__m128d)MASK,	 \
+					(int)SCALE)
+
+#define _mm256_i64gather_ps(BASE, INDEX, SCALE)				\
+  (__m128) __builtin_ia32_gatherdiv4sf256 ((__v4sf) _mm_setzero_ps (),	\
+					   (float const *)BASE,		\
+					   (__v4di)(__m256i)INDEX,	\
+					   (__v4sf)_mm_set1_ps(		\
+					     (float)(int) -1),		\
+					   (int)SCALE)
+
+#define _mm256_mask_i64gather_ps(SRC, BASE, INDEX, MASK, SCALE)	   \
+  (__m128) __builtin_ia32_gatherdiv4sf256 ((__v4sf)(__m128)SRC,	   \
+					   (float const *)BASE,	   \
+					   (__v4di)(__m256i)INDEX, \
+					   (__v4sf)(__m128)MASK,   \
+					   (int)SCALE)
+
+#define _mm_i32gather_epi64(BASE, INDEX, SCALE)				\
+  (__m128i) __builtin_ia32_gathersiv2di ((__v2di) _mm_setzero_si128 (), \
+					 (long long const *)BASE,	\
+					 (__v4si)(__m128i)INDEX,	\
+					 (__v2di)_mm_set1_epi64x (-1),	\
+					 (int)SCALE)
+
+#define _mm_mask_i32gather_epi64(SRC, BASE, INDEX, MASK, SCALE)	  \
+  (__m128i) __builtin_ia32_gathersiv2di ((__v2di)(__m128i)SRC,	  \
+					 (long long const *)BASE, \
+					 (__v4si)(__m128i)INDEX,  \
+					 (__v2di)(__m128i)MASK,	  \
+					 (int)SCALE)
+
+#define _mm256_i32gather_epi64(BASE, INDEX, SCALE)			   \
+  (__m256i) __builtin_ia32_gathersiv4di ((__v4di) _mm256_setzero_si256 (), \
+					 (long long const *)BASE,	   \
+					 (__v4si)(__m128i)INDEX,	   \
+					 (__v4di)_mm256_set1_epi64x (-1),  \
+					 (int)SCALE)
+
+#define _mm256_mask_i32gather_epi64(SRC, BASE, INDEX, MASK, SCALE) \
+  (__m256i) __builtin_ia32_gathersiv4di ((__v4di)(__m256i)SRC,	   \
+					 (long long const *)BASE,  \
+					 (__v4si)(__m128i)INDEX,   \
+					 (__v4di)(__m256i)MASK,	   \
+					 (int)SCALE)
+
+#define _mm_i64gather_epi64(BASE, INDEX, SCALE)				\
+  (__m128i) __builtin_ia32_gatherdiv2di ((__v2di) _mm_setzero_si128 (), \
+					 (long long const *)BASE,	\
+					 (__v2di)(__m128i)INDEX,	\
+					 (__v2di)_mm_set1_epi64x (-1),	\
+					 (int)SCALE)
+
+#define _mm_mask_i64gather_epi64(SRC, BASE, INDEX, MASK, SCALE)	  \
+  (__m128i) __builtin_ia32_gatherdiv2di ((__v2di)(__m128i)SRC,	  \
+					 (long long const *)BASE, \
+					 (__v2di)(__m128i)INDEX,  \
+					 (__v2di)(__m128i)MASK,	  \
+					 (int)SCALE)
+
+#define _mm256_i64gather_epi64(BASE, INDEX, SCALE)			   \
+  (__m256i) __builtin_ia32_gatherdiv4di ((__v4di) _mm256_setzero_si256 (), \
+					 (long long const *)BASE,	   \
+					 (__v4di)(__m256i)INDEX,	   \
+					 (__v4di)_mm256_set1_epi64x (-1),  \
+					 (int)SCALE)
+
+#define _mm256_mask_i64gather_epi64(SRC, BASE, INDEX, MASK, SCALE) \
+  (__m256i) __builtin_ia32_gatherdiv4di ((__v4di)(__m256i)SRC,	   \
+					 (long long const *)BASE,  \
+					 (__v4di)(__m256i)INDEX,   \
+					 (__v4di)(__m256i)MASK,	   \
+					 (int)SCALE)
+
+#define _mm_i32gather_epi32(BASE, INDEX, SCALE)				\
+  (__m128i) __builtin_ia32_gathersiv4si ((__v4si) _mm_setzero_si128 (),	\
+					 (int const *)BASE,		\
+					 (__v4si)(__m128i)INDEX,	\
+					 (__v4si)_mm_set1_epi32 (-1),	\
+					 (int)SCALE)
+
+#define _mm_mask_i32gather_epi32(SRC, BASE, INDEX, MASK, SCALE) \
+  (__m128i) __builtin_ia32_gathersiv4si ((__v4si)(__m128i)SRC,	\
+					(int const *)BASE,	\
+					(__v4si)(__m128i)INDEX, \
+					(__v4si)(__m128i)MASK,	\
+					(int)SCALE)
+
+#define _mm256_i32gather_epi32(BASE, INDEX, SCALE)			   \
+  (__m256i) __builtin_ia32_gathersiv8si ((__v8si) _mm256_setzero_si256 (), \
+					 (int const *)BASE,		   \
+					 (__v8si)(__m256i)INDEX,	   \
+					 (__v8si)_mm256_set1_epi32 (-1),   \
+					 (int)SCALE)
+
+#define _mm256_mask_i32gather_epi32(SRC, BASE, INDEX, MASK, SCALE) \
+  (__m256i) __builtin_ia32_gathersiv8si ((__v8si)(__m256i)SRC,	   \
+					(int const *)BASE,	   \
+					(__v8si)(__m256i)INDEX,	   \
+					(__v8si)(__m256i)MASK,	   \
+					(int)SCALE)
+
+#define _mm_i64gather_epi32(BASE, INDEX, SCALE)				\
+  (__m128i) __builtin_ia32_gatherdiv4si ((__v4si) _mm_setzero_si128 (),	\
+					 (int const *)BASE,		\
+					 (__v2di)(__m128i)INDEX,	\
+					 (__v4si)_mm_set1_epi32 (-1),	\
+					 (int)SCALE)
+
+#define _mm_mask_i64gather_epi32(SRC, BASE, INDEX, MASK, SCALE) \
+  (__m128i) __builtin_ia32_gatherdiv4si ((__v4si)(__m128i)SRC,	\
+					(int const *)BASE,	\
+					(__v2di)(__m128i)INDEX, \
+					(__v4si)(__m128i)MASK,	\
+					(int)SCALE)
+
+#define _mm256_i64gather_epi32(BASE, INDEX, SCALE)			   \
+  (__m128i) __builtin_ia32_gatherdiv4si256 ((__v4si) _mm_setzero_si128 (), \
+					    (int const *)BASE,		   \
+					    (__v4di)(__m256i)INDEX,	   \
+					    (__v4si)_mm_set1_epi32(-1),	   \
+					    (int)SCALE)
+
+#define _mm256_mask_i64gather_epi32(SRC, BASE, INDEX, MASK, SCALE) \
+  (__m128i) __builtin_ia32_gatherdiv4si256 ((__v4si)(__m128i)SRC,  \
+					   (int const *)BASE,	   \
+					   (__v4di)(__m256i)INDEX, \
+					   (__v4si)(__m128i)MASK,  \
+					   (int)SCALE)
+#endif  /* __OPTIMIZE__ */
+
+#ifdef __DISABLE_AVX2__
+#undef __DISABLE_AVX2__
+#pragma GCC pop_options
+#endif /* __DISABLE_AVX2__ */
+
+#endif /* _AVX2INTRIN_H_INCLUDED */
Index: Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/avx512bwintrin.h
===================================================================
--- Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/avx512bwintrin.h	(revision 1046)
+++ Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/avx512bwintrin.h	(revision 1046)
@@ -0,0 +1,2995 @@
+/* Copyright (C) 2014-2015 Free Software Foundation, Inc.
+
+   This file is part of GCC.
+
+   GCC is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
+
+   GCC is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   Under Section 7 of GPL version 3, you are granted additional
+   permissions described in the GCC Runtime Library Exception, version
+   3.1, as published by the Free Software Foundation.
+
+   You should have received a copy of the GNU General Public License and
+   a copy of the GCC Runtime Library Exception along with this program;
+   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _IMMINTRIN_H_INCLUDED
+#error "Never use <avx512bwintrin.h> directly; include <immintrin.h> instead."
+#endif
+
+#ifndef _AVX512BWINTRIN_H_INCLUDED
+#define _AVX512BWINTRIN_H_INCLUDED
+
+#ifndef __AVX512BW__
+#pragma GCC push_options
+#pragma GCC target("avx512bw")
+#define __DISABLE_AVX512BW__
+#endif /* __AVX512BW__ */
+
+/* Internal data types for implementing the intrinsics.  */
+typedef short __v32hi __attribute__ ((__vector_size__ (64)));
+typedef char __v64qi __attribute__ ((__vector_size__ (64)));
+
+typedef unsigned long long __mmask64;
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_setzero_qi (void)
+{
+  return __extension__ (__m512i)(__v64qi){ 0, 0, 0, 0, 0, 0, 0, 0,
+					   0, 0, 0, 0, 0, 0, 0, 0,
+					   0, 0, 0, 0, 0, 0, 0, 0,
+					   0, 0, 0, 0, 0, 0, 0, 0,
+					   0, 0, 0, 0, 0, 0, 0, 0,
+					   0, 0, 0, 0, 0, 0, 0, 0,
+					   0, 0, 0, 0, 0, 0, 0, 0,
+					   0, 0, 0, 0, 0, 0, 0, 0 };
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_setzero_hi (void)
+{
+  return __extension__ (__m512i)(__v32hi){ 0, 0, 0, 0, 0, 0, 0, 0,
+					   0, 0, 0, 0, 0, 0, 0, 0,
+					   0, 0, 0, 0, 0, 0, 0, 0,
+					   0, 0, 0, 0, 0, 0, 0, 0 };
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_mov_epi16 (__m512i __W, __mmask32 __U, __m512i __A)
+{
+  return (__m512i) __builtin_ia32_movdquhi512_mask ((__v32hi) __A,
+						    (__v32hi) __W,
+						    (__mmask32) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_mov_epi16 (__mmask32 __U, __m512i __A)
+{
+  return (__m512i) __builtin_ia32_movdquhi512_mask ((__v32hi) __A,
+						    (__v32hi)
+						    _mm512_setzero_hi (),
+						    (__mmask32) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_loadu_epi16 (__m512i __W, __mmask32 __U, void const *__P)
+{
+  return (__m512i) __builtin_ia32_loaddquhi512_mask ((__v32hi *) __P,
+						     (__v32hi) __W,
+						     (__mmask32) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_loadu_epi16 (__mmask32 __U, void const *__P)
+{
+  return (__m512i) __builtin_ia32_loaddquhi512_mask ((__v32hi *) __P,
+						     (__v32hi)
+						     _mm512_setzero_hi (),
+						     (__mmask32) __U);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_storeu_epi16 (void *__P, __mmask32 __U, __m512i __A)
+{
+  __builtin_ia32_storedquhi512_mask ((__v32hi *) __P,
+				     (__v32hi) __A,
+				     (__mmask32) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_mov_epi8 (__m512i __W, __mmask64 __U, __m512i __A)
+{
+  return (__m512i) __builtin_ia32_movdquqi512_mask ((__v64qi) __A,
+						    (__v64qi) __W,
+						    (__mmask64) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_mov_epi8 (__mmask64 __U, __m512i __A)
+{
+  return (__m512i) __builtin_ia32_movdquqi512_mask ((__v64qi) __A,
+						    (__v64qi)
+						    _mm512_setzero_hi (),
+						    (__mmask64) __U);
+}
+
+extern __inline __mmask32
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_kunpackw (__mmask32 __A, __mmask32 __B)
+{
+  return (__mmask32) __builtin_ia32_kunpcksi ((__mmask32) __A,
+					      (__mmask32) __B);
+}
+
+extern __inline __mmask64
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_kunpackd (__mmask64 __A, __mmask64 __B)
+{
+  return (__mmask64) __builtin_ia32_kunpckdi ((__mmask64) __A,
+					      (__mmask64) __B);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_loadu_epi8 (__m512i __W, __mmask64 __U, void const *__P)
+{
+  return (__m512i) __builtin_ia32_loaddquqi512_mask ((__v64qi *) __P,
+						     (__v64qi) __W,
+						     (__mmask64) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_loadu_epi8 (__mmask64 __U, void const *__P)
+{
+  return (__m512i) __builtin_ia32_loaddquqi512_mask ((__v64qi *) __P,
+						     (__v64qi)
+						     _mm512_setzero_hi (),
+						     (__mmask64) __U);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_storeu_epi8 (void *__P, __mmask64 __U, __m512i __A)
+{
+  __builtin_ia32_storedquqi512_mask ((__v64qi *) __P,
+				     (__v64qi) __A,
+				     (__mmask64) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_sad_epu8 (__m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_psadbw512 ((__v64qi) __A,
+					     (__v64qi) __B);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cvtepi16_epi8 (__m512i __A)
+{
+  return (__m256i) __builtin_ia32_pmovwb512_mask ((__v32hi) __A,
+						  (__v32qi) _mm256_undefined_si256(),
+						  (__mmask32) -1);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvtepi16_epi8 (__m256i __O, __mmask32 __M, __m512i __A)
+{
+  return (__m256i) __builtin_ia32_pmovwb512_mask ((__v32hi) __A,
+						  (__v32qi) __O, __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_cvtepi16_epi8 (__mmask32 __M, __m512i __A)
+{
+  return (__m256i) __builtin_ia32_pmovwb512_mask ((__v32hi) __A,
+						  (__v32qi)
+						  _mm256_setzero_si256 (),
+						  __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cvtsepi16_epi8 (__m512i __A)
+{
+  return (__m256i) __builtin_ia32_pmovswb512_mask ((__v32hi) __A,
+						   (__v32qi)_mm256_undefined_si256(),
+						   (__mmask32) -1);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvtsepi16_epi8 (__m256i __O, __mmask32 __M, __m512i __A)
+{
+  return (__m256i) __builtin_ia32_pmovswb512_mask ((__v32hi) __A,
+						   (__v32qi)__O,
+						   __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_cvtsepi16_epi8 (__mmask32 __M, __m512i __A)
+{
+  return (__m256i) __builtin_ia32_pmovswb512_mask ((__v32hi) __A,
+						   (__v32qi)
+						   _mm256_setzero_si256 (),
+						   __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cvtusepi16_epi8 (__m512i __A)
+{
+  return (__m256i) __builtin_ia32_pmovuswb512_mask ((__v32hi) __A,
+						    (__v32qi)_mm256_undefined_si256(),
+						    (__mmask32) -1);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvtusepi16_epi8 (__m256i __O, __mmask32 __M, __m512i __A)
+{
+  return (__m256i) __builtin_ia32_pmovuswb512_mask ((__v32hi) __A,
+						    (__v32qi) __O,
+						    __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_cvtusepi16_epi8 (__mmask32 __M, __m512i __A)
+{
+  return (__m256i) __builtin_ia32_pmovuswb512_mask ((__v32hi) __A,
+						    (__v32qi)
+						    _mm256_setzero_si256 (),
+						    __M);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_broadcastb_epi8 (__m128i __A)
+{
+  return (__m512i) __builtin_ia32_pbroadcastb512_mask ((__v16qi) __A,
+						       (__v64qi)_mm512_undefined_si512(),
+						       (__mmask64) -
+						       1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_broadcastb_epi8 (__m512i __O, __mmask64 __M, __m128i __A)
+{
+  return (__m512i) __builtin_ia32_pbroadcastb512_mask ((__v16qi) __A,
+						       (__v64qi) __O,
+						       __M);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_broadcastb_epi8 (__mmask64 __M, __m128i __A)
+{
+  return (__m512i) __builtin_ia32_pbroadcastb512_mask ((__v16qi) __A,
+						       (__v64qi)
+						       _mm512_setzero_qi(),
+						       __M);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_set1_epi8 (__m512i __O, __mmask64 __M, char __A)
+{
+  return (__m512i) __builtin_ia32_pbroadcastb512_gpr_mask (__A,
+							   (__v64qi) __O,
+							   __M);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_set1_epi8 (__mmask64 __M, char __A)
+{
+  return (__m512i) __builtin_ia32_pbroadcastb512_gpr_mask (__A,
+							   (__v64qi)
+							   _mm512_setzero_qi(),
+							   __M);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_broadcastw_epi16 (__m128i __A)
+{
+  return (__m512i) __builtin_ia32_pbroadcastw512_mask ((__v8hi) __A,
+						       (__v32hi)_mm512_undefined_si512(),
+						       (__mmask32)-1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_broadcastw_epi16 (__m512i __O, __mmask32 __M, __m128i __A)
+{
+  return (__m512i) __builtin_ia32_pbroadcastw512_mask ((__v8hi) __A,
+						       (__v32hi) __O,
+						       __M);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_broadcastw_epi16 (__mmask32 __M, __m128i __A)
+{
+  return (__m512i) __builtin_ia32_pbroadcastw512_mask ((__v8hi) __A,
+						       (__v32hi)
+						       _mm512_setzero_hi(),
+						       __M);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_set1_epi16 (__m512i __O, __mmask32 __M, short __A)
+{
+  return (__m512i) __builtin_ia32_pbroadcastw512_gpr_mask (__A,
+							   (__v32hi) __O,
+							   __M);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_set1_epi16 (__mmask32 __M, short __A)
+{
+  return (__m512i) __builtin_ia32_pbroadcastw512_gpr_mask (__A,
+							   (__v32hi)
+							   _mm512_setzero_hi(),
+							   __M);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mulhrs_epi16 (__m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pmulhrsw512_mask ((__v32hi) __A,
+						    (__v32hi) __B,
+						    (__v32hi)
+						    _mm512_setzero_hi (),
+						    (__mmask32) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_mulhrs_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
+			  __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pmulhrsw512_mask ((__v32hi) __A,
+						    (__v32hi) __B,
+						    (__v32hi) __W,
+						    (__mmask32) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_mulhrs_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pmulhrsw512_mask ((__v32hi) __A,
+						    (__v32hi) __B,
+						    (__v32hi)
+						    _mm512_setzero_hi (),
+						    (__mmask32) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mulhi_epi16 (__m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pmulhw512_mask ((__v32hi) __A,
+						  (__v32hi) __B,
+						  (__v32hi)
+						  _mm512_setzero_hi (),
+						  (__mmask32) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_mulhi_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
+			 __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pmulhw512_mask ((__v32hi) __A,
+						  (__v32hi) __B,
+						  (__v32hi) __W,
+						  (__mmask32) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_mulhi_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pmulhw512_mask ((__v32hi) __A,
+						  (__v32hi) __B,
+						  (__v32hi)
+						  _mm512_setzero_hi (),
+						  (__mmask32) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mulhi_epu16 (__m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pmulhuw512_mask ((__v32hi) __A,
+						   (__v32hi) __B,
+						   (__v32hi)
+						   _mm512_setzero_hi (),
+						   (__mmask32) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_mulhi_epu16 (__m512i __W, __mmask32 __U, __m512i __A,
+			 __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pmulhuw512_mask ((__v32hi) __A,
+						   (__v32hi) __B,
+						   (__v32hi) __W,
+						   (__mmask32) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_mulhi_epu16 (__mmask32 __U, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pmulhuw512_mask ((__v32hi) __A,
+						   (__v32hi) __B,
+						   (__v32hi)
+						   _mm512_setzero_hi (),
+						   (__mmask32) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mullo_epi16 (__m512i __A, __m512i __B)
+{
+  return (__m512i) ((__v32hu) __A * (__v32hu) __B);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_mullo_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
+			 __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pmullw512_mask ((__v32hi) __A,
+						  (__v32hi) __B,
+						  (__v32hi) __W,
+						  (__mmask32) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_mullo_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pmullw512_mask ((__v32hi) __A,
+						  (__v32hi) __B,
+						  (__v32hi)
+						  _mm512_setzero_hi (),
+						  (__mmask32) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cvtepi8_epi16 (__m256i __A)
+{
+  return (__m512i) __builtin_ia32_pmovsxbw512_mask ((__v32qi) __A,
+						    (__v32hi)
+						    _mm512_setzero_hi (),
+						    (__mmask32) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvtepi8_epi16 (__m512i __W, __mmask32 __U, __m256i __A)
+{
+  return (__m512i) __builtin_ia32_pmovsxbw512_mask ((__v32qi) __A,
+						    (__v32hi) __W,
+						    (__mmask32) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_cvtepi8_epi16 (__mmask32 __U, __m256i __A)
+{
+  return (__m512i) __builtin_ia32_pmovsxbw512_mask ((__v32qi) __A,
+						    (__v32hi)
+						    _mm512_setzero_hi(),
+						    (__mmask32) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cvtepu8_epi16 (__m256i __A)
+{
+  return (__m512i) __builtin_ia32_pmovzxbw512_mask ((__v32qi) __A,
+						    (__v32hi)
+						    _mm512_setzero_hi (),
+						    (__mmask32) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvtepu8_epi16 (__m512i __W, __mmask32 __U, __m256i __A)
+{
+  return (__m512i) __builtin_ia32_pmovzxbw512_mask ((__v32qi) __A,
+						    (__v32hi) __W,
+						    (__mmask32) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_cvtepu8_epi16 (__mmask32 __U, __m256i __A)
+{
+  return (__m512i) __builtin_ia32_pmovzxbw512_mask ((__v32qi) __A,
+						    (__v32hi)
+						    _mm512_setzero_hi(),
+						    (__mmask32) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_permutexvar_epi16 (__m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_permvarhi512_mask ((__v32hi) __B,
+						     (__v32hi) __A,
+						     (__v32hi)
+						     _mm512_setzero_hi (),
+						     (__mmask32) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_permutexvar_epi16 (__mmask32 __M, __m512i __A,
+				__m512i __B)
+{
+  return (__m512i) __builtin_ia32_permvarhi512_mask ((__v32hi) __B,
+						     (__v32hi) __A,
+						     (__v32hi)
+						     _mm512_setzero_hi(),
+						     (__mmask32) __M);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_permutexvar_epi16 (__m512i __W, __mmask32 __M, __m512i __A,
+			       __m512i __B)
+{
+  return (__m512i) __builtin_ia32_permvarhi512_mask ((__v32hi) __B,
+						     (__v32hi) __A,
+						     (__v32hi) __W,
+						     (__mmask32) __M);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_permutex2var_epi16 (__m512i __A, __m512i __I, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_vpermt2varhi512_mask ((__v32hi) __I
+							/* idx */ ,
+							(__v32hi) __A,
+							(__v32hi) __B,
+							(__mmask32) -
+							1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_permutex2var_epi16 (__m512i __A, __mmask32 __U,
+				__m512i __I, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_vpermt2varhi512_mask ((__v32hi) __I
+							/* idx */ ,
+							(__v32hi) __A,
+							(__v32hi) __B,
+							(__mmask32)
+							__U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask2_permutex2var_epi16 (__m512i __A, __m512i __I,
+				 __mmask32 __U, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_vpermi2varhi512_mask ((__v32hi) __A,
+							(__v32hi) __I
+							/* idx */ ,
+							(__v32hi) __B,
+							(__mmask32)
+							__U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_permutex2var_epi16 (__mmask32 __U, __m512i __A,
+				 __m512i __I, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_vpermt2varhi512_maskz ((__v32hi) __I
+							 /* idx */ ,
+							 (__v32hi) __A,
+							 (__v32hi) __B,
+							 (__mmask32)
+							 __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_avg_epu8 (__m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pavgb512_mask ((__v64qi) __A,
+						 (__v64qi) __B,
+						 (__v64qi)
+						 _mm512_setzero_qi (),
+						 (__mmask64) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_avg_epu8 (__m512i __W, __mmask64 __U, __m512i __A,
+		      __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pavgb512_mask ((__v64qi) __A,
+						 (__v64qi) __B,
+						 (__v64qi) __W,
+						 (__mmask64) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_avg_epu8 (__mmask64 __U, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pavgb512_mask ((__v64qi) __A,
+						 (__v64qi) __B,
+						 (__v64qi)
+						 _mm512_setzero_qi(),
+						 (__mmask64) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_add_epi8 (__m512i __A, __m512i __B)
+{
+  return (__m512i) ((__v64qu) __A + (__v64qu) __B);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_add_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
+		      __m512i __B)
+{
+  return (__m512i) __builtin_ia32_paddb512_mask ((__v64qi) __A,
+						 (__v64qi) __B,
+						 (__v64qi) __W,
+						 (__mmask64) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_add_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_paddb512_mask ((__v64qi) __A,
+						 (__v64qi) __B,
+						 (__v64qi)
+						 _mm512_setzero_qi (),
+						 (__mmask64) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_sub_epi8 (__m512i __A, __m512i __B)
+{
+  return (__m512i) ((__v64qu) __A - (__v64qu) __B);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_sub_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
+		      __m512i __B)
+{
+  return (__m512i) __builtin_ia32_psubb512_mask ((__v64qi) __A,
+						 (__v64qi) __B,
+						 (__v64qi) __W,
+						 (__mmask64) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_sub_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_psubb512_mask ((__v64qi) __A,
+						 (__v64qi) __B,
+						 (__v64qi)
+						 _mm512_setzero_qi (),
+						 (__mmask64) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_avg_epu16 (__m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pavgw512_mask ((__v32hi) __A,
+						 (__v32hi) __B,
+						 (__v32hi)
+						 _mm512_setzero_hi (),
+						 (__mmask32) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_avg_epu16 (__m512i __W, __mmask32 __U, __m512i __A,
+		       __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pavgw512_mask ((__v32hi) __A,
+						 (__v32hi) __B,
+						 (__v32hi) __W,
+						 (__mmask32) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_avg_epu16 (__mmask32 __U, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pavgw512_mask ((__v32hi) __A,
+						 (__v32hi) __B,
+						 (__v32hi)
+						 _mm512_setzero_hi(),
+						 (__mmask32) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_subs_epi8 (__m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_psubsb512_mask ((__v64qi) __A,
+						  (__v64qi) __B,
+						  (__v64qi)
+						  _mm512_setzero_qi (),
+						  (__mmask64) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_subs_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
+		       __m512i __B)
+{
+  return (__m512i) __builtin_ia32_psubsb512_mask ((__v64qi) __A,
+						  (__v64qi) __B,
+						  (__v64qi) __W,
+						  (__mmask64) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_subs_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_psubsb512_mask ((__v64qi) __A,
+						  (__v64qi) __B,
+						  (__v64qi)
+						  _mm512_setzero_qi (),
+						  (__mmask64) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_subs_epu8 (__m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_psubusb512_mask ((__v64qi) __A,
+						   (__v64qi) __B,
+						   (__v64qi)
+						   _mm512_setzero_qi (),
+						   (__mmask64) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_subs_epu8 (__m512i __W, __mmask64 __U, __m512i __A,
+		       __m512i __B)
+{
+  return (__m512i) __builtin_ia32_psubusb512_mask ((__v64qi) __A,
+						   (__v64qi) __B,
+						   (__v64qi) __W,
+						   (__mmask64) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_subs_epu8 (__mmask64 __U, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_psubusb512_mask ((__v64qi) __A,
+						   (__v64qi) __B,
+						   (__v64qi)
+						   _mm512_setzero_qi (),
+						   (__mmask64) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_adds_epi8 (__m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_paddsb512_mask ((__v64qi) __A,
+						  (__v64qi) __B,
+						  (__v64qi)
+						  _mm512_setzero_qi (),
+						  (__mmask64) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_adds_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
+		       __m512i __B)
+{
+  return (__m512i) __builtin_ia32_paddsb512_mask ((__v64qi) __A,
+						  (__v64qi) __B,
+						  (__v64qi) __W,
+						  (__mmask64) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_adds_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_paddsb512_mask ((__v64qi) __A,
+						  (__v64qi) __B,
+						  (__v64qi)
+						  _mm512_setzero_qi (),
+						  (__mmask64) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_adds_epu8 (__m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_paddusb512_mask ((__v64qi) __A,
+						   (__v64qi) __B,
+						   (__v64qi)
+						   _mm512_setzero_qi (),
+						   (__mmask64) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_adds_epu8 (__m512i __W, __mmask64 __U, __m512i __A,
+		       __m512i __B)
+{
+  return (__m512i) __builtin_ia32_paddusb512_mask ((__v64qi) __A,
+						   (__v64qi) __B,
+						   (__v64qi) __W,
+						   (__mmask64) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_adds_epu8 (__mmask64 __U, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_paddusb512_mask ((__v64qi) __A,
+						   (__v64qi) __B,
+						   (__v64qi)
+						   _mm512_setzero_qi (),
+						   (__mmask64) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_sub_epi16 (__m512i __A, __m512i __B)
+{
+  return (__m512i) ((__v32hu) __A - (__v32hu) __B);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_sub_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
+		       __m512i __B)
+{
+  return (__m512i) __builtin_ia32_psubw512_mask ((__v32hi) __A,
+						 (__v32hi) __B,
+						 (__v32hi) __W,
+						 (__mmask32) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_sub_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_psubw512_mask ((__v32hi) __A,
+						 (__v32hi) __B,
+						 (__v32hi)
+						 _mm512_setzero_hi (),
+						 (__mmask32) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_subs_epi16 (__m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_psubsw512_mask ((__v32hi) __A,
+						  (__v32hi) __B,
+						  (__v32hi)
+						  _mm512_setzero_hi (),
+						  (__mmask32) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_subs_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
+			__m512i __B)
+{
+  return (__m512i) __builtin_ia32_psubsw512_mask ((__v32hi) __A,
+						  (__v32hi) __B,
+						  (__v32hi) __W,
+						  (__mmask32) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_subs_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_psubsw512_mask ((__v32hi) __A,
+						  (__v32hi) __B,
+						  (__v32hi)
+						  _mm512_setzero_hi (),
+						  (__mmask32) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_subs_epu16 (__m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_psubusw512_mask ((__v32hi) __A,
+						   (__v32hi) __B,
+						   (__v32hi)
+						   _mm512_setzero_hi (),
+						   (__mmask32) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_subs_epu16 (__m512i __W, __mmask32 __U, __m512i __A,
+			__m512i __B)
+{
+  return (__m512i) __builtin_ia32_psubusw512_mask ((__v32hi) __A,
+						   (__v32hi) __B,
+						   (__v32hi) __W,
+						   (__mmask32) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_subs_epu16 (__mmask32 __U, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_psubusw512_mask ((__v32hi) __A,
+						   (__v32hi) __B,
+						   (__v32hi)
+						   _mm512_setzero_hi (),
+						   (__mmask32) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_add_epi16 (__m512i __A, __m512i __B)
+{
+  return (__m512i) ((__v32hu) __A + (__v32hu) __B);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_add_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
+		       __m512i __B)
+{
+  return (__m512i) __builtin_ia32_paddw512_mask ((__v32hi) __A,
+						 (__v32hi) __B,
+						 (__v32hi) __W,
+						 (__mmask32) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_add_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_paddw512_mask ((__v32hi) __A,
+						 (__v32hi) __B,
+						 (__v32hi)
+						 _mm512_setzero_hi (),
+						 (__mmask32) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_adds_epi16 (__m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_paddsw512_mask ((__v32hi) __A,
+						  (__v32hi) __B,
+						  (__v32hi)
+						  _mm512_setzero_hi (),
+						  (__mmask32) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_adds_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
+			__m512i __B)
+{
+  return (__m512i) __builtin_ia32_paddsw512_mask ((__v32hi) __A,
+						  (__v32hi) __B,
+						  (__v32hi) __W,
+						  (__mmask32) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_adds_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_paddsw512_mask ((__v32hi) __A,
+						  (__v32hi) __B,
+						  (__v32hi)
+						  _mm512_setzero_hi (),
+						  (__mmask32) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_adds_epu16 (__m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_paddusw512_mask ((__v32hi) __A,
+						   (__v32hi) __B,
+						   (__v32hi)
+						   _mm512_setzero_hi (),
+						   (__mmask32) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_adds_epu16 (__m512i __W, __mmask32 __U, __m512i __A,
+			__m512i __B)
+{
+  return (__m512i) __builtin_ia32_paddusw512_mask ((__v32hi) __A,
+						   (__v32hi) __B,
+						   (__v32hi) __W,
+						   (__mmask32) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_adds_epu16 (__mmask32 __U, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_paddusw512_mask ((__v32hi) __A,
+						   (__v32hi) __B,
+						   (__v32hi)
+						   _mm512_setzero_hi (),
+						   (__mmask32) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_srl_epi16 (__m512i __A, __m128i __B)
+{
+  return (__m512i) __builtin_ia32_psrlw512_mask ((__v32hi) __A,
+						 (__v8hi) __B,
+						 (__v32hi)
+						 _mm512_setzero_hi (),
+						 (__mmask32) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_srl_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
+		       __m128i __B)
+{
+  return (__m512i) __builtin_ia32_psrlw512_mask ((__v32hi) __A,
+						 (__v8hi) __B,
+						 (__v32hi) __W,
+						 (__mmask32) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_srl_epi16 (__mmask32 __U, __m512i __A, __m128i __B)
+{
+  return (__m512i) __builtin_ia32_psrlw512_mask ((__v32hi) __A,
+						 (__v8hi) __B,
+						 (__v32hi)
+						 _mm512_setzero_hi (),
+						 (__mmask32) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_packs_epi16 (__m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_packsswb512_mask ((__v32hi) __A,
+						    (__v32hi) __B,
+						    (__v64qi)
+						    _mm512_setzero_qi (),
+						    (__mmask64) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_sll_epi16 (__m512i __A, __m128i __B)
+{
+  return (__m512i) __builtin_ia32_psllw512_mask ((__v32hi) __A,
+						 (__v8hi) __B,
+						 (__v32hi)
+						 _mm512_setzero_hi (),
+						 (__mmask32) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_sll_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
+		       __m128i __B)
+{
+  return (__m512i) __builtin_ia32_psllw512_mask ((__v32hi) __A,
+						 (__v8hi) __B,
+						 (__v32hi) __W,
+						 (__mmask32) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_sll_epi16 (__mmask32 __U, __m512i __A, __m128i __B)
+{
+  return (__m512i) __builtin_ia32_psllw512_mask ((__v32hi) __A,
+						 (__v8hi) __B,
+						 (__v32hi)
+						 _mm512_setzero_hi (),
+						 (__mmask32) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maddubs_epi16 (__m512i __X, __m512i __Y)
+{
+  return (__m512i) __builtin_ia32_pmaddubsw512_mask ((__v64qi) __X,
+						     (__v64qi) __Y,
+						     (__v32hi)
+						     _mm512_setzero_hi (),
+						     (__mmask32) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_maddubs_epi16 (__m512i __W, __mmask32 __U, __m512i __X,
+			   __m512i __Y)
+{
+  return (__m512i) __builtin_ia32_pmaddubsw512_mask ((__v64qi) __X,
+						     (__v64qi) __Y,
+						     (__v32hi) __W,
+						     (__mmask32) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_maddubs_epi16 (__mmask32 __U, __m512i __X, __m512i __Y)
+{
+  return (__m512i) __builtin_ia32_pmaddubsw512_mask ((__v64qi) __X,
+						     (__v64qi) __Y,
+						     (__v32hi)
+						     _mm512_setzero_hi (),
+						     (__mmask32) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_madd_epi16 (__m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pmaddwd512_mask ((__v32hi) __A,
+						   (__v32hi) __B,
+						   (__v16si)
+						   _mm512_setzero_si512 (),
+						   (__mmask16) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_madd_epi16 (__m512i __W, __mmask16 __U, __m512i __A,
+			__m512i __B)
+{
+  return (__m512i) __builtin_ia32_pmaddwd512_mask ((__v32hi) __A,
+						   (__v32hi) __B,
+						   (__v16si) __W,
+						   (__mmask16) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_madd_epi16 (__mmask16 __U, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pmaddwd512_mask ((__v32hi) __A,
+						   (__v32hi) __B,
+						   (__v16si)
+						   _mm512_setzero_si512 (),
+						   (__mmask16) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_unpackhi_epi8 (__m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_punpckhbw512_mask ((__v64qi) __A,
+						     (__v64qi) __B,
+						     (__v64qi)
+						     _mm512_setzero_qi (),
+						     (__mmask64) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_unpackhi_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
+			   __m512i __B)
+{
+  return (__m512i) __builtin_ia32_punpckhbw512_mask ((__v64qi) __A,
+						     (__v64qi) __B,
+						     (__v64qi) __W,
+						     (__mmask64) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_unpackhi_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_punpckhbw512_mask ((__v64qi) __A,
+						     (__v64qi) __B,
+						     (__v64qi)
+						     _mm512_setzero_qi(),
+						     (__mmask64) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_unpackhi_epi16 (__m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_punpckhwd512_mask ((__v32hi) __A,
+						     (__v32hi) __B,
+						     (__v32hi)
+						     _mm512_setzero_hi (),
+						     (__mmask32) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_unpackhi_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
+			    __m512i __B)
+{
+  return (__m512i) __builtin_ia32_punpckhwd512_mask ((__v32hi) __A,
+						     (__v32hi) __B,
+						     (__v32hi) __W,
+						     (__mmask32) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_unpackhi_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_punpckhwd512_mask ((__v32hi) __A,
+						     (__v32hi) __B,
+						     (__v32hi)
+						     _mm512_setzero_hi(),
+						     (__mmask32) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_unpacklo_epi8 (__m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_punpcklbw512_mask ((__v64qi) __A,
+						     (__v64qi) __B,
+						     (__v64qi)
+						     _mm512_setzero_qi (),
+						     (__mmask64) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_unpacklo_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
+			   __m512i __B)
+{
+  return (__m512i) __builtin_ia32_punpcklbw512_mask ((__v64qi) __A,
+						     (__v64qi) __B,
+						     (__v64qi) __W,
+						     (__mmask64) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_unpacklo_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_punpcklbw512_mask ((__v64qi) __A,
+						     (__v64qi) __B,
+						     (__v64qi)
+						     _mm512_setzero_qi(),
+						     (__mmask64) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_unpacklo_epi16 (__m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_punpcklwd512_mask ((__v32hi) __A,
+						     (__v32hi) __B,
+						     (__v32hi)
+						     _mm512_setzero_hi (),
+						     (__mmask32) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_unpacklo_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
+			    __m512i __B)
+{
+  return (__m512i) __builtin_ia32_punpcklwd512_mask ((__v32hi) __A,
+						     (__v32hi) __B,
+						     (__v32hi) __W,
+						     (__mmask32) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_unpacklo_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_punpcklwd512_mask ((__v32hi) __A,
+						     (__v32hi) __B,
+						     (__v32hi)
+						     _mm512_setzero_hi(),
+						     (__mmask32) __U);
+}
+
+extern __inline __mmask64
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cmpeq_epu8_mask (__m512i __A, __m512i __B)
+{
+  return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __A,
+						    (__v64qi) __B, 0,
+						    (__mmask64) -1);
+}
+
+extern __inline __mmask64
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cmpeq_epi8_mask (__m512i __A, __m512i __B)
+{
+  return (__mmask64) __builtin_ia32_pcmpeqb512_mask ((__v64qi) __A,
+						     (__v64qi) __B,
+						     (__mmask64) -1);
+}
+
+extern __inline __mmask64
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cmpeq_epu8_mask (__mmask64 __U, __m512i __A, __m512i __B)
+{
+  return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __A,
+						    (__v64qi) __B, 0,
+						    __U);
+}
+
+extern __inline __mmask64
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cmpeq_epi8_mask (__mmask64 __U, __m512i __A, __m512i __B)
+{
+  return (__mmask64) __builtin_ia32_pcmpeqb512_mask ((__v64qi) __A,
+						     (__v64qi) __B,
+						     __U);
+}
+
+extern __inline __mmask32
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cmpeq_epu16_mask (__m512i __A, __m512i __B)
+{
+  return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __A,
+						    (__v32hi) __B, 0,
+						    (__mmask32) -1);
+}
+
+extern __inline __mmask32
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cmpeq_epi16_mask (__m512i __A, __m512i __B)
+{
+  return (__mmask32) __builtin_ia32_pcmpeqw512_mask ((__v32hi) __A,
+						     (__v32hi) __B,
+						     (__mmask32) -1);
+}
+
+extern __inline __mmask32
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cmpeq_epu16_mask (__mmask32 __U, __m512i __A, __m512i __B)
+{
+  return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __A,
+						    (__v32hi) __B, 0,
+						    __U);
+}
+
+extern __inline __mmask32
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cmpeq_epi16_mask (__mmask32 __U, __m512i __A, __m512i __B)
+{
+  return (__mmask32) __builtin_ia32_pcmpeqw512_mask ((__v32hi) __A,
+						     (__v32hi) __B,
+						     __U);
+}
+
+extern __inline __mmask64
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cmpgt_epu8_mask (__m512i __A, __m512i __B)
+{
+  return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __A,
+						    (__v64qi) __B, 6,
+						    (__mmask64) -1);
+}
+
+extern __inline __mmask64
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cmpgt_epi8_mask (__m512i __A, __m512i __B)
+{
+  return (__mmask64) __builtin_ia32_pcmpgtb512_mask ((__v64qi) __A,
+						     (__v64qi) __B,
+						     (__mmask64) -1);
+}
+
+extern __inline __mmask64
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cmpgt_epu8_mask (__mmask64 __U, __m512i __A, __m512i __B)
+{
+  return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __A,
+						    (__v64qi) __B, 6,
+						    __U);
+}
+
+extern __inline __mmask64
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cmpgt_epi8_mask (__mmask64 __U, __m512i __A, __m512i __B)
+{
+  return (__mmask64) __builtin_ia32_pcmpgtb512_mask ((__v64qi) __A,
+						     (__v64qi) __B,
+						     __U);
+}
+
+extern __inline __mmask32
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cmpgt_epu16_mask (__m512i __A, __m512i __B)
+{
+  return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __A,
+						    (__v32hi) __B, 6,
+						    (__mmask32) -1);
+}
+
+extern __inline __mmask32
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cmpgt_epi16_mask (__m512i __A, __m512i __B)
+{
+  return (__mmask32) __builtin_ia32_pcmpgtw512_mask ((__v32hi) __A,
+						     (__v32hi) __B,
+						     (__mmask32) -1);
+}
+
+extern __inline __mmask32
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cmpgt_epu16_mask (__mmask32 __U, __m512i __A, __m512i __B)
+{
+  return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __A,
+						    (__v32hi) __B, 6,
+						    __U);
+}
+
+extern __inline __mmask32
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cmpgt_epi16_mask (__mmask32 __U, __m512i __A, __m512i __B)
+{
+  return (__mmask32) __builtin_ia32_pcmpgtw512_mask ((__v32hi) __A,
+						     (__v32hi) __B,
+						     __U);
+}
+
+extern __inline __mmask64
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_movepi8_mask (__m512i __A)
+{
+  return (__mmask64) __builtin_ia32_cvtb2mask512 ((__v64qi) __A);
+}
+
+extern __inline __mmask32
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_movepi16_mask (__m512i __A)
+{
+  return (__mmask32) __builtin_ia32_cvtw2mask512 ((__v32hi) __A);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_movm_epi8 (__mmask64 __A)
+{
+  return (__m512i) __builtin_ia32_cvtmask2b512 (__A);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_movm_epi16 (__mmask32 __A)
+{
+  return (__m512i) __builtin_ia32_cvtmask2w512 (__A);
+}
+
+extern __inline __mmask64
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_test_epi8_mask (__m512i __A, __m512i __B)
+{
+  return (__mmask64) __builtin_ia32_ptestmb512 ((__v64qi) __A,
+						(__v64qi) __B,
+						(__mmask64) -1);
+}
+
+extern __inline __mmask64
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_test_epi8_mask (__mmask64 __U, __m512i __A, __m512i __B)
+{
+  return (__mmask64) __builtin_ia32_ptestmb512 ((__v64qi) __A,
+						(__v64qi) __B, __U);
+}
+
+extern __inline __mmask32
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_test_epi16_mask (__m512i __A, __m512i __B)
+{
+  return (__mmask32) __builtin_ia32_ptestmw512 ((__v32hi) __A,
+						(__v32hi) __B,
+						(__mmask32) -1);
+}
+
+extern __inline __mmask32
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_test_epi16_mask (__mmask32 __U, __m512i __A, __m512i __B)
+{
+  return (__mmask32) __builtin_ia32_ptestmw512 ((__v32hi) __A,
+						(__v32hi) __B, __U);
+}
+
+extern __inline __mmask64
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_testn_epi8_mask (__m512i __A, __m512i __B)
+{
+  return (__mmask64) __builtin_ia32_ptestnmb512 ((__v64qi) __A,
+						 (__v64qi) __B,
+						 (__mmask64) -1);
+}
+
+extern __inline __mmask64
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_testn_epi8_mask (__mmask64 __U, __m512i __A, __m512i __B)
+{
+  return (__mmask64) __builtin_ia32_ptestnmb512 ((__v64qi) __A,
+						 (__v64qi) __B, __U);
+}
+
+extern __inline __mmask32
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_testn_epi16_mask (__m512i __A, __m512i __B)
+{
+  return (__mmask32) __builtin_ia32_ptestnmw512 ((__v32hi) __A,
+						 (__v32hi) __B,
+						 (__mmask32) -1);
+}
+
+extern __inline __mmask32
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_testn_epi16_mask (__mmask32 __U, __m512i __A, __m512i __B)
+{
+  return (__mmask32) __builtin_ia32_ptestnmw512 ((__v32hi) __A,
+						 (__v32hi) __B, __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_shuffle_epi8 (__m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pshufb512_mask ((__v64qi) __A,
+						  (__v64qi) __B,
+						  (__v64qi)
+						  _mm512_setzero_qi (),
+						  (__mmask64) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_shuffle_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
+			  __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pshufb512_mask ((__v64qi) __A,
+						  (__v64qi) __B,
+						  (__v64qi) __W,
+						  (__mmask64) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_shuffle_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pshufb512_mask ((__v64qi) __A,
+						  (__v64qi) __B,
+						  (__v64qi)
+						  _mm512_setzero_qi (),
+						  (__mmask64) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_min_epu16 (__m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pminuw512_mask ((__v32hi) __A,
+						  (__v32hi) __B,
+						  (__v32hi)
+						  _mm512_setzero_hi (),
+						  (__mmask32) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_min_epu16 (__mmask32 __M, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pminuw512_mask ((__v32hi) __A,
+						  (__v32hi) __B,
+						  (__v32hi)
+						  _mm512_setzero_hi(),
+						  (__mmask32) __M);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_min_epu16 (__m512i __W, __mmask32 __M, __m512i __A,
+		       __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pminuw512_mask ((__v32hi) __A,
+						  (__v32hi) __B,
+						  (__v32hi) __W,
+						  (__mmask32) __M);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_min_epi16 (__m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pminsw512_mask ((__v32hi) __A,
+						  (__v32hi) __B,
+						  (__v32hi)
+						  _mm512_setzero_hi (),
+						  (__mmask32) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_min_epi16 (__mmask32 __M, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pminsw512_mask ((__v32hi) __A,
+						  (__v32hi) __B,
+						  (__v32hi)
+						  _mm512_setzero_hi(),
+						  (__mmask32) __M);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_min_epi16 (__m512i __W, __mmask32 __M, __m512i __A,
+		       __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pminsw512_mask ((__v32hi) __A,
+						  (__v32hi) __B,
+						  (__v32hi) __W,
+						  (__mmask32) __M);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_max_epu8 (__m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pmaxub512_mask ((__v64qi) __A,
+						  (__v64qi) __B,
+						  (__v64qi)
+						  _mm512_setzero_qi (),
+						  (__mmask64) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_max_epu8 (__mmask64 __M, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pmaxub512_mask ((__v64qi) __A,
+						  (__v64qi) __B,
+						  (__v64qi)
+						  _mm512_setzero_qi(),
+						  (__mmask64) __M);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_max_epu8 (__m512i __W, __mmask64 __M, __m512i __A,
+		      __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pmaxub512_mask ((__v64qi) __A,
+						  (__v64qi) __B,
+						  (__v64qi) __W,
+						  (__mmask64) __M);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_max_epi8 (__m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pmaxsb512_mask ((__v64qi) __A,
+						  (__v64qi) __B,
+						  (__v64qi)
+						  _mm512_setzero_qi (),
+						  (__mmask64) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_max_epi8 (__mmask64 __M, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pmaxsb512_mask ((__v64qi) __A,
+						  (__v64qi) __B,
+						  (__v64qi)
+						  _mm512_setzero_qi(),
+						  (__mmask64) __M);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_max_epi8 (__m512i __W, __mmask64 __M, __m512i __A,
+		      __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pmaxsb512_mask ((__v64qi) __A,
+						  (__v64qi) __B,
+						  (__v64qi) __W,
+						  (__mmask64) __M);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_min_epu8 (__m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pminub512_mask ((__v64qi) __A,
+						  (__v64qi) __B,
+						  (__v64qi)
+						  _mm512_setzero_qi (),
+						  (__mmask64) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_min_epu8 (__mmask64 __M, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pminub512_mask ((__v64qi) __A,
+						  (__v64qi) __B,
+						  (__v64qi)
+						  _mm512_setzero_qi(),
+						  (__mmask64) __M);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_min_epu8 (__m512i __W, __mmask64 __M, __m512i __A,
+		      __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pminub512_mask ((__v64qi) __A,
+						  (__v64qi) __B,
+						  (__v64qi) __W,
+						  (__mmask64) __M);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_min_epi8 (__m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pminsb512_mask ((__v64qi) __A,
+						  (__v64qi) __B,
+						  (__v64qi)
+						  _mm512_setzero_qi (),
+						  (__mmask64) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_min_epi8 (__mmask64 __M, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pminsb512_mask ((__v64qi) __A,
+						  (__v64qi) __B,
+						  (__v64qi)
+						  _mm512_setzero_qi(),
+						  (__mmask64) __M);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_min_epi8 (__m512i __W, __mmask64 __M, __m512i __A,
+		      __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pminsb512_mask ((__v64qi) __A,
+						  (__v64qi) __B,
+						  (__v64qi) __W,
+						  (__mmask64) __M);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_max_epi16 (__m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pmaxsw512_mask ((__v32hi) __A,
+						  (__v32hi) __B,
+						  (__v32hi)
+						  _mm512_setzero_hi (),
+						  (__mmask32) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_max_epi16 (__mmask32 __M, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pmaxsw512_mask ((__v32hi) __A,
+						  (__v32hi) __B,
+						  (__v32hi)
+						  _mm512_setzero_hi(),
+						  (__mmask32) __M);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_max_epi16 (__m512i __W, __mmask32 __M, __m512i __A,
+		       __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pmaxsw512_mask ((__v32hi) __A,
+						  (__v32hi) __B,
+						  (__v32hi) __W,
+						  (__mmask32) __M);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_max_epu16 (__m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pmaxuw512_mask ((__v32hi) __A,
+						  (__v32hi) __B,
+						  (__v32hi)
+						  _mm512_setzero_hi (),
+						  (__mmask32) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_max_epu16 (__mmask32 __M, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pmaxuw512_mask ((__v32hi) __A,
+						  (__v32hi) __B,
+						  (__v32hi)
+						  _mm512_setzero_hi(),
+						  (__mmask32) __M);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_max_epu16 (__m512i __W, __mmask32 __M, __m512i __A,
+		       __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pmaxuw512_mask ((__v32hi) __A,
+						  (__v32hi) __B,
+						  (__v32hi) __W,
+						  (__mmask32) __M);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_sra_epi16 (__m512i __A, __m128i __B)
+{
+  return (__m512i) __builtin_ia32_psraw512_mask ((__v32hi) __A,
+						 (__v8hi) __B,
+						 (__v32hi)
+						 _mm512_setzero_hi (),
+						 (__mmask32) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_sra_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
+		       __m128i __B)
+{
+  return (__m512i) __builtin_ia32_psraw512_mask ((__v32hi) __A,
+						 (__v8hi) __B,
+						 (__v32hi) __W,
+						 (__mmask32) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_sra_epi16 (__mmask32 __U, __m512i __A, __m128i __B)
+{
+  return (__m512i) __builtin_ia32_psraw512_mask ((__v32hi) __A,
+						 (__v8hi) __B,
+						 (__v32hi)
+						 _mm512_setzero_hi (),
+						 (__mmask32) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_srav_epi16 (__m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_psrav32hi_mask ((__v32hi) __A,
+						  (__v32hi) __B,
+						  (__v32hi)
+						  _mm512_setzero_hi (),
+						  (__mmask32) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_srav_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
+			__m512i __B)
+{
+  return (__m512i) __builtin_ia32_psrav32hi_mask ((__v32hi) __A,
+						  (__v32hi) __B,
+						  (__v32hi) __W,
+						  (__mmask32) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_srav_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_psrav32hi_mask ((__v32hi) __A,
+						  (__v32hi) __B,
+						  (__v32hi)
+						  _mm512_setzero_hi (),
+						  (__mmask32) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_srlv_epi16 (__m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_psrlv32hi_mask ((__v32hi) __A,
+						  (__v32hi) __B,
+						  (__v32hi)
+						  _mm512_setzero_hi (),
+						  (__mmask32) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_srlv_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
+			__m512i __B)
+{
+  return (__m512i) __builtin_ia32_psrlv32hi_mask ((__v32hi) __A,
+						  (__v32hi) __B,
+						  (__v32hi) __W,
+						  (__mmask32) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_srlv_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_psrlv32hi_mask ((__v32hi) __A,
+						  (__v32hi) __B,
+						  (__v32hi)
+						  _mm512_setzero_hi (),
+						  (__mmask32) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_sllv_epi16 (__m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_psllv32hi_mask ((__v32hi) __A,
+						  (__v32hi) __B,
+						  (__v32hi)
+						  _mm512_setzero_hi (),
+						  (__mmask32) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_sllv_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
+			__m512i __B)
+{
+  return (__m512i) __builtin_ia32_psllv32hi_mask ((__v32hi) __A,
+						  (__v32hi) __B,
+						  (__v32hi) __W,
+						  (__mmask32) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_sllv_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_psllv32hi_mask ((__v32hi) __A,
+						  (__v32hi) __B,
+						  (__v32hi)
+						  _mm512_setzero_hi (),
+						  (__mmask32) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_packs_epi16 (__m512i __W, __mmask64 __M, __m512i __A,
+			 __m512i __B)
+{
+  return (__m512i) __builtin_ia32_packsswb512_mask ((__v32hi) __A,
+						    (__v32hi) __B,
+						    (__v64qi) __W,
+						    (__mmask64) __M);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_packs_epi16 (__mmask64 __M, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_packsswb512_mask ((__v32hi) __A,
+						    (__v32hi) __B,
+						    (__v64qi)
+						    _mm512_setzero_qi(),
+						    __M);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_packus_epi16 (__m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_packuswb512_mask ((__v32hi) __A,
+						    (__v32hi) __B,
+						    (__v64qi)
+						    _mm512_setzero_qi (),
+						    (__mmask64) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_packus_epi16 (__m512i __W, __mmask64 __M, __m512i __A,
+			  __m512i __B)
+{
+  return (__m512i) __builtin_ia32_packuswb512_mask ((__v32hi) __A,
+						    (__v32hi) __B,
+						    (__v64qi) __W,
+						    (__mmask64) __M);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_packus_epi16 (__mmask64 __M, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_packuswb512_mask ((__v32hi) __A,
+						    (__v32hi) __B,
+						    (__v64qi)
+						    _mm512_setzero_qi(),
+						    (__mmask64) __M);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_abs_epi8 (__m512i __A)
+{
+  return (__m512i) __builtin_ia32_pabsb512_mask ((__v64qi) __A,
+						 (__v64qi)
+						 _mm512_setzero_qi (),
+						 (__mmask64) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_abs_epi8 (__m512i __W, __mmask64 __U, __m512i __A)
+{
+  return (__m512i) __builtin_ia32_pabsb512_mask ((__v64qi) __A,
+						 (__v64qi) __W,
+						 (__mmask64) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_abs_epi8 (__mmask64 __U, __m512i __A)
+{
+  return (__m512i) __builtin_ia32_pabsb512_mask ((__v64qi) __A,
+						 (__v64qi)
+						 _mm512_setzero_qi (),
+						 (__mmask64) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_abs_epi16 (__m512i __A)
+{
+  return (__m512i) __builtin_ia32_pabsw512_mask ((__v32hi) __A,
+						 (__v32hi)
+						 _mm512_setzero_hi (),
+						 (__mmask32) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_abs_epi16 (__m512i __W, __mmask32 __U, __m512i __A)
+{
+  return (__m512i) __builtin_ia32_pabsw512_mask ((__v32hi) __A,
+						 (__v32hi) __W,
+						 (__mmask32) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_abs_epi16 (__mmask32 __U, __m512i __A)
+{
+  return (__m512i) __builtin_ia32_pabsw512_mask ((__v32hi) __A,
+						 (__v32hi)
+						 _mm512_setzero_hi (),
+						 (__mmask32) __U);
+}
+
+extern __inline __mmask64
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cmpneq_epu8_mask (__mmask64 __M, __m512i __X, __m512i __Y)
+{
+  return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X,
+						   (__v64qi) __Y, 4,
+						   (__mmask64) __M);
+}
+
+extern __inline __mmask64
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cmplt_epu8_mask (__mmask64 __M, __m512i __X, __m512i __Y)
+{
+  return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X,
+						   (__v64qi) __Y, 1,
+						   (__mmask64) __M);
+}
+
+extern __inline __mmask64
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cmpge_epu8_mask (__mmask64 __M, __m512i __X, __m512i __Y)
+{
+  return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X,
+						   (__v64qi) __Y, 5,
+						   (__mmask64) __M);
+}
+
+extern __inline __mmask64
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cmple_epu8_mask (__mmask64 __M, __m512i __X, __m512i __Y)
+{
+  return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X,
+						   (__v64qi) __Y, 2,
+						   (__mmask64) __M);
+}
+
+extern __inline __mmask32
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cmpneq_epu16_mask (__mmask32 __M, __m512i __X, __m512i __Y)
+{
+  return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X,
+						   (__v32hi) __Y, 4,
+						   (__mmask32) __M);
+}
+
+extern __inline __mmask32
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cmplt_epu16_mask (__mmask32 __M, __m512i __X, __m512i __Y)
+{
+  return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X,
+						   (__v32hi) __Y, 1,
+						   (__mmask32) __M);
+}
+
+extern __inline __mmask32
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cmpge_epu16_mask (__mmask32 __M, __m512i __X, __m512i __Y)
+{
+  return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X,
+						   (__v32hi) __Y, 5,
+						   (__mmask32) __M);
+}
+
+extern __inline __mmask32
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cmple_epu16_mask (__mmask32 __M, __m512i __X, __m512i __Y)
+{
+  return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X,
+						   (__v32hi) __Y, 2,
+						   (__mmask32) __M);
+}
+
+extern __inline __mmask64
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cmpneq_epi8_mask (__mmask64 __M, __m512i __X, __m512i __Y)
+{
+  return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X,
+						  (__v64qi) __Y, 4,
+						  (__mmask64) __M);
+}
+
+extern __inline __mmask64
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cmplt_epi8_mask (__mmask64 __M, __m512i __X, __m512i __Y)
+{
+  return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X,
+						  (__v64qi) __Y, 1,
+						  (__mmask64) __M);
+}
+
+extern __inline __mmask64
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cmpge_epi8_mask (__mmask64 __M, __m512i __X, __m512i __Y)
+{
+  return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X,
+						  (__v64qi) __Y, 5,
+						  (__mmask64) __M);
+}
+
+extern __inline __mmask64
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cmple_epi8_mask (__mmask64 __M, __m512i __X, __m512i __Y)
+{
+  return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X,
+						  (__v64qi) __Y, 2,
+						  (__mmask64) __M);
+}
+
+extern __inline __mmask32
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cmpneq_epi16_mask (__mmask32 __M, __m512i __X, __m512i __Y)
+{
+  return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X,
+						  (__v32hi) __Y, 4,
+						  (__mmask32) __M);
+}
+
+extern __inline __mmask32
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cmplt_epi16_mask (__mmask32 __M, __m512i __X, __m512i __Y)
+{
+  return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X,
+						  (__v32hi) __Y, 1,
+						  (__mmask32) __M);
+}
+
+extern __inline __mmask32
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cmpge_epi16_mask (__mmask32 __M, __m512i __X, __m512i __Y)
+{
+  return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X,
+						  (__v32hi) __Y, 5,
+						  (__mmask32) __M);
+}
+
+extern __inline __mmask32
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cmple_epi16_mask (__mmask32 __M, __m512i __X, __m512i __Y)
+{
+  return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X,
+						  (__v32hi) __Y, 2,
+						  (__mmask32) __M);
+}
+
+extern __inline __mmask64
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cmpneq_epu8_mask (__m512i __X, __m512i __Y)
+{
+  return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X,
+						   (__v64qi) __Y, 4,
+						   (__mmask64) - 1);
+}
+
+extern __inline __mmask64
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cmplt_epu8_mask (__m512i __X, __m512i __Y)
+{
+  return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X,
+						   (__v64qi) __Y, 1,
+						   (__mmask64) - 1);
+}
+
+extern __inline __mmask64
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cmpge_epu8_mask (__m512i __X, __m512i __Y)
+{
+  return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X,
+						   (__v64qi) __Y, 5,
+						   (__mmask64) - 1);
+}
+
+extern __inline __mmask64
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cmple_epu8_mask (__m512i __X, __m512i __Y)
+{
+  return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X,
+						   (__v64qi) __Y, 2,
+						   (__mmask64) - 1);
+}
+
+extern __inline __mmask32
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cmpneq_epu16_mask (__m512i __X, __m512i __Y)
+{
+  return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X,
+						   (__v32hi) __Y, 4,
+						   (__mmask32) - 1);
+}
+
+extern __inline __mmask32
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cmplt_epu16_mask (__m512i __X, __m512i __Y)
+{
+  return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X,
+						   (__v32hi) __Y, 1,
+						   (__mmask32) - 1);
+}
+
+extern __inline __mmask32
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cmpge_epu16_mask (__m512i __X, __m512i __Y)
+{
+  return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X,
+						   (__v32hi) __Y, 5,
+						   (__mmask32) - 1);
+}
+
+extern __inline __mmask32
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cmple_epu16_mask (__m512i __X, __m512i __Y)
+{
+  return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X,
+						   (__v32hi) __Y, 2,
+						   (__mmask32) - 1);
+}
+
+extern __inline __mmask64
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cmpneq_epi8_mask (__m512i __X, __m512i __Y)
+{
+  return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X,
+						  (__v64qi) __Y, 4,
+						  (__mmask64) - 1);
+}
+
+extern __inline __mmask64
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cmplt_epi8_mask (__m512i __X, __m512i __Y)
+{
+  return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X,
+						  (__v64qi) __Y, 1,
+						  (__mmask64) - 1);
+}
+
+extern __inline __mmask64
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cmpge_epi8_mask (__m512i __X, __m512i __Y)
+{
+  return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X,
+						  (__v64qi) __Y, 5,
+						  (__mmask64) - 1);
+}
+
+extern __inline __mmask64
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cmple_epi8_mask (__m512i __X, __m512i __Y)
+{
+  return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X,
+						  (__v64qi) __Y, 2,
+						  (__mmask64) - 1);
+}
+
+extern __inline __mmask32
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cmpneq_epi16_mask (__m512i __X, __m512i __Y)
+{
+  return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X,
+						  (__v32hi) __Y, 4,
+						  (__mmask32) - 1);
+}
+
+extern __inline __mmask32
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cmplt_epi16_mask (__m512i __X, __m512i __Y)
+{
+  return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X,
+						  (__v32hi) __Y, 1,
+						  (__mmask32) - 1);
+}
+
+extern __inline __mmask32
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cmpge_epi16_mask (__m512i __X, __m512i __Y)
+{
+  return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X,
+						  (__v32hi) __Y, 5,
+						  (__mmask32) - 1);
+}
+
+extern __inline __mmask32
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cmple_epi16_mask (__m512i __X, __m512i __Y)
+{
+  return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X,
+						  (__v32hi) __Y, 2,
+						  (__mmask32) - 1);
+}
+
+#ifdef __OPTIMIZE__
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_alignr_epi8 (__m512i __A, __m512i __B, const int __N)
+{
+  return (__m512i) __builtin_ia32_palignr512 ((__v8di) __A,
+					      (__v8di) __B, __N * 8);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_alignr_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
+			 __m512i __B, const int __N)
+{
+  return (__m512i) __builtin_ia32_palignr512_mask ((__v8di) __A,
+						   (__v8di) __B,
+						   __N * 8,
+						   (__v8di) __W,
+						   (__mmask64) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_alignr_epi8 (__mmask64 __U, __m512i __A, __m512i __B,
+			  const int __N)
+{
+  return (__m512i) __builtin_ia32_palignr512_mask ((__v8di) __A,
+						   (__v8di) __B,
+						   __N * 8,
+						   (__v8di)
+						   _mm512_setzero_si512 (),
+						   (__mmask64) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_dbsad_epu8 (__m512i __A, __m512i __B, const int __imm)
+{
+  return (__m512i) __builtin_ia32_dbpsadbw512_mask ((__v64qi) __A,
+						    (__v64qi) __B,
+						    __imm,
+						    (__v32hi)
+						    _mm512_setzero_hi (),
+						    (__mmask32) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_dbsad_epu8 (__m512i __W, __mmask32 __U, __m512i __A,
+			__m512i __B, const int __imm)
+{
+  return (__m512i) __builtin_ia32_dbpsadbw512_mask ((__v64qi) __A,
+						    (__v64qi) __B,
+						    __imm,
+						    (__v32hi) __W,
+						    (__mmask32) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_dbsad_epu8 (__mmask32 __U, __m512i __A, __m512i __B,
+			 const int __imm)
+{
+  return (__m512i) __builtin_ia32_dbpsadbw512_mask ((__v64qi) __A,
+						    (__v64qi) __B,
+						    __imm,
+						    (__v32hi)
+						    _mm512_setzero_hi(),
+						    (__mmask32) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_srli_epi16 (__m512i __A, const int __imm)
+{
+  return (__m512i) __builtin_ia32_psrlwi512_mask ((__v32hi) __A, __imm,
+						  (__v32hi)
+						  _mm512_setzero_hi (),
+						  (__mmask32) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_srli_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
+			const int __imm)
+{
+  return (__m512i) __builtin_ia32_psrlwi512_mask ((__v32hi) __A, __imm,
+						  (__v32hi) __W,
+						  (__mmask32) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_srli_epi16 (__mmask32 __U, __m512i __A, const int __imm)
+{
+  return (__m512i) __builtin_ia32_psrlwi512_mask ((__v32hi) __A, __imm,
+						  (__v32hi)
+						  _mm512_setzero_hi (),
+						  (__mmask32) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_slli_epi16 (__m512i __A, const int __B)
+{
+  return (__m512i) __builtin_ia32_psllwi512_mask ((__v32hi) __A, __B,
+						  (__v32hi)
+						  _mm512_setzero_hi (),
+						  (__mmask32) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_slli_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
+			const int __B)
+{
+  return (__m512i) __builtin_ia32_psllwi512_mask ((__v32hi) __A, __B,
+						  (__v32hi) __W,
+						  (__mmask32) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_slli_epi16 (__mmask32 __U, __m512i __A, const int __B)
+{
+  return (__m512i) __builtin_ia32_psllwi512_mask ((__v32hi) __A, __B,
+						  (__v32hi)
+						  _mm512_setzero_hi (),
+						  (__mmask32) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_shufflehi_epi16 (__m512i __A, const int __imm)
+{
+  return (__m512i) __builtin_ia32_pshufhw512_mask ((__v32hi) __A,
+						   __imm,
+						   (__v32hi)
+						   _mm512_setzero_hi (),
+						   (__mmask32) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_shufflehi_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
+			     const int __imm)
+{
+  return (__m512i) __builtin_ia32_pshufhw512_mask ((__v32hi) __A,
+						   __imm,
+						   (__v32hi) __W,
+						   (__mmask32) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_shufflehi_epi16 (__mmask32 __U, __m512i __A,
+			      const int __imm)
+{
+  return (__m512i) __builtin_ia32_pshufhw512_mask ((__v32hi) __A,
+						   __imm,
+						   (__v32hi)
+						   _mm512_setzero_hi (),
+						   (__mmask32) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_shufflelo_epi16 (__m512i __A, const int __imm)
+{
+  return (__m512i) __builtin_ia32_pshuflw512_mask ((__v32hi) __A,
+						   __imm,
+						   (__v32hi)
+						   _mm512_setzero_hi (),
+						   (__mmask32) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_shufflelo_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
+			     const int __imm)
+{
+  return (__m512i) __builtin_ia32_pshuflw512_mask ((__v32hi) __A,
+						   __imm,
+						   (__v32hi) __W,
+						   (__mmask32) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_shufflelo_epi16 (__mmask32 __U, __m512i __A,
+			      const int __imm)
+{
+  return (__m512i) __builtin_ia32_pshuflw512_mask ((__v32hi) __A,
+						   __imm,
+						   (__v32hi)
+						   _mm512_setzero_hi (),
+						   (__mmask32) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_srai_epi16 (__m512i __A, const int __imm)
+{
+  return (__m512i) __builtin_ia32_psrawi512_mask ((__v32hi) __A, __imm,
+						  (__v32hi)
+						  _mm512_setzero_hi (),
+						  (__mmask32) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_srai_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
+			const int __imm)
+{
+  return (__m512i) __builtin_ia32_psrawi512_mask ((__v32hi) __A, __imm,
+						  (__v32hi) __W,
+						  (__mmask32) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_srai_epi16 (__mmask32 __U, __m512i __A, const int __imm)
+{
+  return (__m512i) __builtin_ia32_psrawi512_mask ((__v32hi) __A, __imm,
+						  (__v32hi)
+						  _mm512_setzero_hi (),
+						  (__mmask32) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_blend_epi16 (__mmask32 __U, __m512i __A, __m512i __W)
+{
+  return (__m512i) __builtin_ia32_blendmw_512_mask ((__v32hi) __A,
+						    (__v32hi) __W,
+						    (__mmask32) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_blend_epi8 (__mmask64 __U, __m512i __A, __m512i __W)
+{
+  return (__m512i) __builtin_ia32_blendmb_512_mask ((__v64qi) __A,
+						    (__v64qi) __W,
+						    (__mmask64) __U);
+}
+
+extern __inline __mmask32
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cmp_epi16_mask (__mmask32 __U, __m512i __X, __m512i __Y,
+			    const int __P)
+{
+  return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X,
+						  (__v32hi) __Y, __P,
+						  (__mmask32) __U);
+}
+
+extern __inline __mmask32
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cmp_epi16_mask (__m512i __X, __m512i __Y, const int __P)
+{
+  return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X,
+						  (__v32hi) __Y, __P,
+						  (__mmask32) -1);
+}
+
+extern __inline __mmask64
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cmp_epi8_mask (__mmask32 __U, __m512i __X, __m512i __Y,
+			   const int __P)
+{
+  return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X,
+						  (__v64qi) __Y, __P,
+						  (__mmask64) __U);
+}
+
+extern __inline __mmask64
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cmp_epi8_mask (__m512i __X, __m512i __Y, const int __P)
+{
+  return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X,
+						  (__v64qi) __Y, __P,
+						  (__mmask64) -1);
+}
+
+extern __inline __mmask32
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cmp_epu16_mask (__mmask32 __U, __m512i __X, __m512i __Y,
+			    const int __P)
+{
+  return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X,
+						   (__v32hi) __Y, __P,
+						   (__mmask32) __U);
+}
+
+extern __inline __mmask32
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cmp_epu16_mask (__m512i __X, __m512i __Y, const int __P)
+{
+  return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X,
+						   (__v32hi) __Y, __P,
+						   (__mmask32) -1);
+}
+
+extern __inline __mmask64
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cmp_epu8_mask (__mmask32 __U, __m512i __X, __m512i __Y,
+			   const int __P)
+{
+  return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X,
+						   (__v64qi) __Y, __P,
+						   (__mmask64) __U);
+}
+
+extern __inline __mmask64
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cmp_epu8_mask (__m512i __X, __m512i __Y, const int __P)
+{
+  return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X,
+						   (__v64qi) __Y, __P,
+						   (__mmask64) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_packs_epi32 (__m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_packssdw512_mask ((__v16si) __A,
+						    (__v16si) __B,
+						    (__v32hi)
+						    _mm512_setzero_hi (),
+						    (__mmask32) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_packs_epi32 (__mmask32 __M, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_packssdw512_mask ((__v16si) __A,
+						    (__v16si) __B,
+						    (__v32hi)
+						    _mm512_setzero_hi(),
+						    __M);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_packs_epi32 (__m512i __W, __mmask32 __M, __m512i __A,
+			 __m512i __B)
+{
+  return (__m512i) __builtin_ia32_packssdw512_mask ((__v16si) __A,
+						    (__v16si) __B,
+						    (__v32hi) __W,
+						    __M);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_packus_epi32 (__m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_packusdw512_mask ((__v16si) __A,
+						    (__v16si) __B,
+						    (__v32hi)
+						    _mm512_setzero_hi (),
+						    (__mmask32) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_packus_epi32 (__mmask32 __M, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_packusdw512_mask ((__v16si) __A,
+						    (__v16si) __B,
+						    (__v32hi)
+						    _mm512_setzero_hi(),
+						    __M);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_packus_epi32 (__m512i __W, __mmask32 __M, __m512i __A,
+			  __m512i __B)
+{
+  return (__m512i) __builtin_ia32_packusdw512_mask ((__v16si) __A,
+						    (__v16si) __B,
+						    (__v32hi) __W,
+						    __M);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_bslli_epi128 (__m512i __A, const int __N)
+{
+  return (__m512i) __builtin_ia32_pslldq512 (__A, __N * 8);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_bsrli_epi128 (__m512i __A, const int __N)
+{
+  return (__m512i) __builtin_ia32_psrldq512 (__A, __N * 8);
+}
+
+#else
+#define _mm512_alignr_epi8(X, Y, N)						    \
+  ((__m512i) __builtin_ia32_palignr512 ((__v8di)(__m512i)(X),			    \
+					(__v8di)(__m512i)(Y),			    \
+					(int)(N * 8)))
+
+#define _mm512_mask_alignr_epi8(W, U, X, Y, N)					    \
+  ((__m512i) __builtin_ia32_palignr512_mask ((__v8di)(__m512i)(X),		    \
+					    (__v8di)(__m512i)(Y), (int)(N * 8),	    \
+					    (__v8di)(__m512i)(W), (__mmask64)(U)))
+
+#define _mm512_maskz_alignr_epi8(U, X, Y, N)					    \
+  ((__m512i) __builtin_ia32_palignr512_mask ((__v8di)(__m512i)(X),		    \
+					    (__v8di)(__m512i)(Y), (int)(N * 8),	    \
+					    (__v8di)(__m512i)_mm512_setzero_si512 (),   \
+					    (__mmask64)(U)))
+
+#define _mm512_dbsad_epu8(X, Y, C)                                                  \
+  ((__m512i) __builtin_ia32_dbpsadbw512_mask ((__v64qi)(__m512i) (X),               \
+                                              (__v64qi)(__m512i) (Y), (int) (C),    \
+                                              (__v32hi)(__m512i)_mm512_setzero_si512 (),\
+                                              (__mmask32)-1))
+
+#define _mm512_mask_dbsad_epu8(W, U, X, Y, C)                                       \
+  ((__m512i) __builtin_ia32_dbpsadbw512_mask ((__v64qi)(__m512i) (X),               \
+                                              (__v64qi)(__m512i) (Y), (int) (C),    \
+                                              (__v32hi)(__m512i)(W),                \
+                                              (__mmask32)(U)))
+
+#define _mm512_maskz_dbsad_epu8(U, X, Y, C)                                         \
+  ((__m512i) __builtin_ia32_dbpsadbw512_mask ((__v64qi)(__m512i) (X),               \
+                                              (__v64qi)(__m512i) (Y), (int) (C),    \
+                                              (__v32hi)(__m512i)_mm512_setzero_si512 (),\
+                                              (__mmask32)(U)))
+
+#define _mm512_srli_epi16(A, B)                                         \
+  ((__m512i) __builtin_ia32_psrlwi512_mask ((__v32hi)(__m512i)(A),      \
+    (int)(B), (__v32hi)_mm512_setzero_hi(), (__mmask32)-1))
+
+#define _mm512_mask_srli_epi16(W, U, A, B)                              \
+  ((__m512i) __builtin_ia32_psrlwi512_mask ((__v32hi)(__m512i)(A),      \
+    (int)(B), (__v32hi)(__m512i)(W), (__mmask32)(U)))
+
+#define _mm512_maskz_srli_epi16(U, A, B)                                \
+  ((__m512i) __builtin_ia32_psrlwi512_mask ((__v32hi)(__m512i)(A),      \
+    (int)(B), (__v32hi)_mm512_setzero_hi(), (__mmask32)(U)))
+
+#define _mm512_slli_epi16(X, C)						   \
+  ((__m512i)__builtin_ia32_psllwi512_mask ((__v32hi)(__m512i)(X), (int)(C),\
+    (__v32hi)(__m512i)_mm512_setzero_hi(),\
+    (__mmask32)-1))
+
+#define _mm512_mask_slli_epi16(W, U, X, C)                                 \
+  ((__m512i)__builtin_ia32_psllwi512_mask ((__v32hi)(__m512i)(X), (int)(C),\
+    (__v32hi)(__m512i)(W),\
+    (__mmask32)(U)))
+
+#define _mm512_maskz_slli_epi16(U, X, C)                                   \
+  ((__m512i)__builtin_ia32_psllwi512_mask ((__v32hi)(__m512i)(X), (int)(C),\
+    (__v32hi)(__m512i)_mm512_setzero_hi(),\
+    (__mmask32)(U)))
+
+#define _mm512_shufflehi_epi16(A, B)                                                \
+  ((__m512i) __builtin_ia32_pshufhw512_mask ((__v32hi)(__m512i)(A), (int)(B),       \
+                                             (__v32hi)(__m512i)_mm512_setzero_hi(), \
+                                             (__mmask32)-1))
+
+#define _mm512_mask_shufflehi_epi16(W, U, A, B)                                     \
+  ((__m512i) __builtin_ia32_pshufhw512_mask ((__v32hi)(__m512i)(A), (int)(B),       \
+                                             (__v32hi)(__m512i)(W),                 \
+                                             (__mmask32)(U)))
+
+#define _mm512_maskz_shufflehi_epi16(U, A, B)                                       \
+  ((__m512i) __builtin_ia32_pshufhw512_mask ((__v32hi)(__m512i)(A), (int)(B),       \
+                                             (__v32hi)(__m512i)_mm512_setzero_hi(), \
+                                             (__mmask32)(U)))
+
+#define _mm512_shufflelo_epi16(A, B)                                                \
+  ((__m512i) __builtin_ia32_pshuflw512_mask ((__v32hi)(__m512i)(A), (int)(B),       \
+                                             (__v32hi)(__m512i)_mm512_setzero_hi(), \
+                                             (__mmask32)-1))
+
+#define _mm512_mask_shufflelo_epi16(W, U, A, B)                                     \
+  ((__m512i) __builtin_ia32_pshuflw512_mask ((__v32hi)(__m512i)(A), (int)(B),       \
+                                             (__v32hi)(__m512i)(W),                 \
+                                             (__mmask32)(U)))
+
+#define _mm512_maskz_shufflelo_epi16(U, A, B)                                       \
+  ((__m512i) __builtin_ia32_pshuflw512_mask ((__v32hi)(__m512i)(A), (int)(B),       \
+                                             (__v32hi)(__m512i)_mm512_setzero_hi(), \
+                                             (__mmask32)(U)))
+
+#define _mm512_srai_epi16(A, B)                                         \
+  ((__m512i) __builtin_ia32_psrawi512_mask ((__v32hi)(__m512i)(A),      \
+    (int)(B), (__v32hi)_mm512_setzero_hi(), (__mmask32)-1))
+
+#define _mm512_mask_srai_epi16(W, U, A, B)                              \
+  ((__m512i) __builtin_ia32_psrawi512_mask ((__v32hi)(__m512i)(A),      \
+    (int)(B), (__v32hi)(__m512i)(W), (__mmask32)(U)))
+
+#define _mm512_maskz_srai_epi16(U, A, B)                                \
+  ((__m512i) __builtin_ia32_psrawi512_mask ((__v32hi)(__m512i)(A),      \
+    (int)(B), (__v32hi)_mm512_setzero_hi(), (__mmask32)(U)))
+
+#define _mm512_mask_blend_epi16(__U, __A, __W)			      \
+  ((__m512i) __builtin_ia32_blendmw_512_mask ((__v32hi) (__A),	      \
+						    (__v32hi) (__W),  \
+						    (__mmask32) (__U)))
+
+#define _mm512_mask_blend_epi8(__U, __A, __W)			      \
+  ((__m512i) __builtin_ia32_blendmb_512_mask ((__v64qi) (__A),	      \
+						    (__v64qi) (__W),  \
+						    (__mmask64) (__U)))
+
+#define _mm512_cmp_epi16_mask(X, Y, P)				\
+  ((__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi)(__m512i)(X),	\
+					    (__v32hi)(__m512i)(Y), (int)(P),\
+					    (__mmask32)(-1)))
+
+#define _mm512_cmp_epi8_mask(X, Y, P)				\
+  ((__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi)(__m512i)(X),	\
+					    (__v64qi)(__m512i)(Y), (int)(P),\
+					    (__mmask64)(-1)))
+
+#define _mm512_cmp_epu16_mask(X, Y, P)				\
+  ((__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi)(__m512i)(X),	\
+					    (__v32hi)(__m512i)(Y), (int)(P),\
+					    (__mmask32)(-1)))
+
+#define _mm512_cmp_epu8_mask(X, Y, P)				\
+  ((__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi)(__m512i)(X),	\
+					    (__v64qi)(__m512i)(Y), (int)(P),\
+					    (__mmask64)(-1)))
+
+#define _mm512_mask_cmp_epi16_mask(M, X, Y, P)				\
+  ((__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi)(__m512i)(X),	\
+					    (__v32hi)(__m512i)(Y), (int)(P),\
+					    (__mmask32)(M)))
+
+#define _mm512_mask_cmp_epi8_mask(M, X, Y, P)				\
+  ((__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi)(__m512i)(X),	\
+					    (__v64qi)(__m512i)(Y), (int)(P),\
+					    (__mmask64)(M)))
+
+#define _mm512_mask_cmp_epu16_mask(M, X, Y, P)				\
+  ((__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi)(__m512i)(X),	\
+					    (__v32hi)(__m512i)(Y), (int)(P),\
+					    (__mmask32)(M)))
+
+#define _mm512_mask_cmp_epu8_mask(M, X, Y, P)				\
+  ((__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi)(__m512i)(X),	\
+					    (__v64qi)(__m512i)(Y), (int)(P),\
+					    (__mmask64)(M)))
+
+#define _mm512_bslli_epi128(A, N)                                         \
+  ((__m512i)__builtin_ia32_pslldq512 ((__m512i)(A), (int)(N) * 8))
+
+#define _mm512_bsrli_epi128(A, N)                                         \
+  ((__m512i)__builtin_ia32_psrldq512 ((__m512i)(A), (int)(N) * 8))
+
+#endif
+
+#ifdef __DISABLE_AVX512BW__
+#undef __DISABLE_AVX512BW__
+#pragma GCC pop_options
+#endif /* __DISABLE_AVX512BW__ */
+
+#endif /* _AVX512BWINTRIN_H_INCLUDED */
Index: Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/avx512cdintrin.h
===================================================================
--- Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/avx512cdintrin.h	(revision 1046)
+++ Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/avx512cdintrin.h	(revision 1046)
@@ -0,0 +1,184 @@
+/* Copyright (C) 2013-2015 Free Software Foundation, Inc.
+
+   This file is part of GCC.
+
+   GCC is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
+
+   GCC is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   Under Section 7 of GPL version 3, you are granted additional
+   permissions described in the GCC Runtime Library Exception, version
+   3.1, as published by the Free Software Foundation.
+
+   You should have received a copy of the GNU General Public License and
+   a copy of the GCC Runtime Library Exception along with this program;
+   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _IMMINTRIN_H_INCLUDED
+#error "Never use <avx512cdintrin.h> directly; include <immintrin.h> instead."
+#endif
+
+#ifndef _AVX512CDINTRIN_H_INCLUDED
+#define _AVX512CDINTRIN_H_INCLUDED
+
+#ifndef __AVX512CD__
+#pragma GCC push_options
+#pragma GCC target("avx512cd")
+#define __DISABLE_AVX512CD__
+#endif /* __AVX512CD__ */
+
+/* Internal data types for implementing the intrinsics.  */
+typedef long long __v8di __attribute__ ((__vector_size__ (64)));
+typedef int __v16si __attribute__ ((__vector_size__ (64)));
+
+/* The Intel API is flexible enough that we must allow aliasing with other
+   vector types, and their scalar components.  */
+typedef long long __m512i __attribute__ ((__vector_size__ (64), __may_alias__));
+typedef double __m512d __attribute__ ((__vector_size__ (64), __may_alias__));
+
+typedef unsigned char  __mmask8;
+typedef unsigned short __mmask16;
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_conflict_epi32 (__m512i __A)
+{
+  return (__m512i)
+	 __builtin_ia32_vpconflictsi_512_mask ((__v16si) __A,
+					       (__v16si) _mm512_setzero_si512 (),
+					       (__mmask16) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_conflict_epi32 (__m512i __W, __mmask16 __U, __m512i __A)
+{
+  return (__m512i) __builtin_ia32_vpconflictsi_512_mask ((__v16si) __A,
+							 (__v16si) __W,
+							 (__mmask16) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_conflict_epi32 (__mmask16 __U, __m512i __A)
+{
+  return (__m512i)
+	 __builtin_ia32_vpconflictsi_512_mask ((__v16si) __A,
+					       (__v16si) _mm512_setzero_si512 (),
+					       (__mmask16) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_conflict_epi64 (__m512i __A)
+{
+  return (__m512i)
+	 __builtin_ia32_vpconflictdi_512_mask ((__v8di) __A,
+					       (__v8di) _mm512_setzero_si512 (),
+					       (__mmask8) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_conflict_epi64 (__m512i __W, __mmask8 __U, __m512i __A)
+{
+  return (__m512i) __builtin_ia32_vpconflictdi_512_mask ((__v8di) __A,
+							 (__v8di) __W,
+							 (__mmask8) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_conflict_epi64 (__mmask8 __U, __m512i __A)
+{
+  return (__m512i)
+	 __builtin_ia32_vpconflictdi_512_mask ((__v8di) __A,
+					       (__v8di) _mm512_setzero_si512 (),
+					       (__mmask8) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_lzcnt_epi64 (__m512i __A)
+{
+  return (__m512i)
+	 __builtin_ia32_vplzcntq_512_mask ((__v8di) __A,
+					   (__v8di) _mm512_setzero_si512 (),
+					   (__mmask8) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_lzcnt_epi64 (__m512i __W, __mmask8 __U, __m512i __A)
+{
+  return (__m512i) __builtin_ia32_vplzcntq_512_mask ((__v8di) __A,
+						     (__v8di) __W,
+						     (__mmask8) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_lzcnt_epi64 (__mmask8 __U, __m512i __A)
+{
+  return (__m512i)
+	 __builtin_ia32_vplzcntq_512_mask ((__v8di) __A,
+					   (__v8di) _mm512_setzero_si512 (),
+					   (__mmask8) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_lzcnt_epi32 (__m512i __A)
+{
+  return (__m512i)
+	 __builtin_ia32_vplzcntd_512_mask ((__v16si) __A,
+					   (__v16si) _mm512_setzero_si512 (),
+					   (__mmask16) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_lzcnt_epi32 (__m512i __W, __mmask16 __U, __m512i __A)
+{
+  return (__m512i) __builtin_ia32_vplzcntd_512_mask ((__v16si) __A,
+						     (__v16si) __W,
+						     (__mmask16) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_lzcnt_epi32 (__mmask16 __U, __m512i __A)
+{
+  return (__m512i)
+	 __builtin_ia32_vplzcntd_512_mask ((__v16si) __A,
+					   (__v16si) _mm512_setzero_si512 (),
+					   (__mmask16) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_broadcastmb_epi64 (__mmask8 __A)
+{
+  return (__m512i) __builtin_ia32_broadcastmb512 (__A);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_broadcastmw_epi32 (__mmask16 __A)
+{
+  return (__m512i) __builtin_ia32_broadcastmw512 (__A);
+}
+
+#ifdef __DISABLE_AVX512CD__
+#undef __DISABLE_AVX512CD__
+#pragma GCC pop_options
+#endif /* __DISABLE_AVX512CD__ */
+
+#endif /* _AVX512CDINTRIN_H_INCLUDED */
Index: Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/avx512dqintrin.h
===================================================================
--- Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/avx512dqintrin.h	(revision 1046)
+++ Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/avx512dqintrin.h	(revision 1046)
@@ -0,0 +1,2301 @@
+/* Copyright (C) 2014-2015 Free Software Foundation, Inc.
+
+   This file is part of GCC.
+
+   GCC is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
+
+   GCC is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   Under Section 7 of GPL version 3, you are granted additional
+   permissions described in the GCC Runtime Library Exception, version
+   3.1, as published by the Free Software Foundation.
+
+   You should have received a copy of the GNU General Public License and
+   a copy of the GCC Runtime Library Exception along with this program;
+   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _IMMINTRIN_H_INCLUDED
+#error "Never use <avx512dqintrin.h> directly; include <immintrin.h> instead."
+#endif
+
+#ifndef _AVX512DQINTRIN_H_INCLUDED
+#define _AVX512DQINTRIN_H_INCLUDED
+
+#ifndef __AVX512DQ__
+#pragma GCC push_options
+#pragma GCC target("avx512dq")
+#define __DISABLE_AVX512DQ__
+#endif /* __AVX512DQ__ */
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_broadcast_f64x2 (__m128d __A)
+{
+  return (__m512d) __builtin_ia32_broadcastf64x2_512_mask ((__v2df)
+							   __A,
+							   _mm512_undefined_pd(),
+							   (__mmask8) -
+							   1);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_broadcast_f64x2 (__m512d __O, __mmask8 __M, __m128d __A)
+{
+  return (__m512d) __builtin_ia32_broadcastf64x2_512_mask ((__v2df)
+							   __A,
+							   (__v8df)
+							   __O, __M);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_broadcast_f64x2 (__mmask8 __M, __m128d __A)
+{
+  return (__m512d) __builtin_ia32_broadcastf64x2_512_mask ((__v2df)
+							   __A,
+							   (__v8df)
+							   _mm512_setzero_ps (),
+							   __M);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_broadcast_i64x2 (__m128i __A)
+{
+  return (__m512i) __builtin_ia32_broadcasti64x2_512_mask ((__v2di)
+							   __A,
+							   _mm512_undefined_si512(),
+							   (__mmask8) -
+							   1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_broadcast_i64x2 (__m512i __O, __mmask8 __M, __m128i __A)
+{
+  return (__m512i) __builtin_ia32_broadcasti64x2_512_mask ((__v2di)
+							   __A,
+							   (__v8di)
+							   __O, __M);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_broadcast_i64x2 (__mmask8 __M, __m128i __A)
+{
+  return (__m512i) __builtin_ia32_broadcasti64x2_512_mask ((__v2di)
+							   __A,
+							   (__v8di)
+							   _mm512_setzero_si512 (),
+							   __M);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_broadcast_f32x2 (__m128 __A)
+{
+  return (__m512) __builtin_ia32_broadcastf32x2_512_mask ((__v4sf) __A,
+							  (__v16sf)_mm512_undefined_ps(),
+							  (__mmask16) -
+							  1);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_broadcast_f32x2 (__m512 __O, __mmask16 __M, __m128 __A)
+{
+  return (__m512) __builtin_ia32_broadcastf32x2_512_mask ((__v4sf) __A,
+							  (__v16sf)
+							  __O, __M);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_broadcast_f32x2 (__mmask16 __M, __m128 __A)
+{
+  return (__m512) __builtin_ia32_broadcastf32x2_512_mask ((__v4sf) __A,
+							  (__v16sf)
+							  _mm512_setzero_ps (),
+							  __M);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_broadcast_i32x2 (__m128i __A)
+{
+  return (__m512i) __builtin_ia32_broadcasti32x2_512_mask ((__v4si)
+							   __A,
+							   (__v16si)_mm512_undefined_si512(),
+							   (__mmask16)
+							   -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_broadcast_i32x2 (__m512i __O, __mmask16 __M, __m128i __A)
+{
+  return (__m512i) __builtin_ia32_broadcasti32x2_512_mask ((__v4si)
+							   __A,
+							   (__v16si)
+							   __O, __M);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_broadcast_i32x2 (__mmask16 __M, __m128i __A)
+{
+  return (__m512i) __builtin_ia32_broadcasti32x2_512_mask ((__v4si)
+							   __A,
+							   (__v16si)
+							   _mm512_setzero_si512 (),
+							   __M);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_broadcast_f32x8 (__m256 __A)
+{
+  return (__m512) __builtin_ia32_broadcastf32x8_512_mask ((__v8sf) __A,
+							  _mm512_undefined_ps(),
+							  (__mmask16) -
+							  1);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_broadcast_f32x8 (__m512 __O, __mmask16 __M, __m256 __A)
+{
+  return (__m512) __builtin_ia32_broadcastf32x8_512_mask ((__v8sf) __A,
+							  (__v16sf)__O,
+							  __M);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_broadcast_f32x8 (__mmask16 __M, __m256 __A)
+{
+  return (__m512) __builtin_ia32_broadcastf32x8_512_mask ((__v8sf) __A,
+							  (__v16sf)
+							  _mm512_setzero_ps (),
+							  __M);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_broadcast_i32x8 (__m256i __A)
+{
+  return (__m512i) __builtin_ia32_broadcasti32x8_512_mask ((__v8si)
+							   __A,
+							   (__v16si)_mm512_undefined_si512(),
+							   (__mmask16)
+							   -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_broadcast_i32x8 (__m512i __O, __mmask16 __M, __m256i __A)
+{
+  return (__m512i) __builtin_ia32_broadcasti32x8_512_mask ((__v8si)
+							   __A,
+							   (__v16si)__O,
+							   __M);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_broadcast_i32x8 (__mmask16 __M, __m256i __A)
+{
+  return (__m512i) __builtin_ia32_broadcasti32x8_512_mask ((__v8si)
+							   __A,
+							   (__v16si)
+							   _mm512_setzero_si512 (),
+							   __M);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mullo_epi64 (__m512i __A, __m512i __B)
+{
+  return (__m512i) ((__v8du) __A * (__v8du) __B);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_mullo_epi64 (__m512i __W, __mmask8 __U, __m512i __A,
+			 __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pmullq512_mask ((__v8di) __A,
+						  (__v8di) __B,
+						  (__v8di) __W,
+						  (__mmask8) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_mullo_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pmullq512_mask ((__v8di) __A,
+						  (__v8di) __B,
+						  (__v8di)
+						  _mm512_setzero_si512 (),
+						  (__mmask8) __U);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_xor_pd (__m512d __A, __m512d __B)
+{
+  return (__m512d) __builtin_ia32_xorpd512_mask ((__v8df) __A,
+						 (__v8df) __B,
+						 (__v8df)
+						 _mm512_setzero_pd (),
+						 (__mmask8) -1);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_xor_pd (__m512d __W, __mmask8 __U, __m512d __A,
+		    __m512d __B)
+{
+  return (__m512d) __builtin_ia32_xorpd512_mask ((__v8df) __A,
+						 (__v8df) __B,
+						 (__v8df) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_xor_pd (__mmask8 __U, __m512d __A, __m512d __B)
+{
+  return (__m512d) __builtin_ia32_xorpd512_mask ((__v8df) __A,
+						 (__v8df) __B,
+						 (__v8df)
+						 _mm512_setzero_pd (),
+						 (__mmask8) __U);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_xor_ps (__m512 __A, __m512 __B)
+{
+  return (__m512) __builtin_ia32_xorps512_mask ((__v16sf) __A,
+						(__v16sf) __B,
+						(__v16sf)
+						_mm512_setzero_ps (),
+						(__mmask16) -1);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_xor_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
+{
+  return (__m512) __builtin_ia32_xorps512_mask ((__v16sf) __A,
+						(__v16sf) __B,
+						(__v16sf) __W,
+						(__mmask16) __U);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_xor_ps (__mmask16 __U, __m512 __A, __m512 __B)
+{
+  return (__m512) __builtin_ia32_xorps512_mask ((__v16sf) __A,
+						(__v16sf) __B,
+						(__v16sf)
+						_mm512_setzero_ps (),
+						(__mmask16) __U);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_or_pd (__m512d __A, __m512d __B)
+{
+  return (__m512d) __builtin_ia32_orpd512_mask ((__v8df) __A,
+						(__v8df) __B,
+						(__v8df)
+						_mm512_setzero_pd (),
+						(__mmask8) -1);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_or_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
+{
+  return (__m512d) __builtin_ia32_orpd512_mask ((__v8df) __A,
+						(__v8df) __B,
+						(__v8df) __W,
+						(__mmask8) __U);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_or_pd (__mmask8 __U, __m512d __A, __m512d __B)
+{
+  return (__m512d) __builtin_ia32_orpd512_mask ((__v8df) __A,
+						(__v8df) __B,
+						(__v8df)
+						_mm512_setzero_pd (),
+						(__mmask8) __U);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_or_ps (__m512 __A, __m512 __B)
+{
+  return (__m512) __builtin_ia32_orps512_mask ((__v16sf) __A,
+					       (__v16sf) __B,
+					       (__v16sf)
+					       _mm512_setzero_ps (),
+					       (__mmask16) -1);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_or_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
+{
+  return (__m512) __builtin_ia32_orps512_mask ((__v16sf) __A,
+					       (__v16sf) __B,
+					       (__v16sf) __W,
+					       (__mmask16) __U);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_or_ps (__mmask16 __U, __m512 __A, __m512 __B)
+{
+  return (__m512) __builtin_ia32_orps512_mask ((__v16sf) __A,
+					       (__v16sf) __B,
+					       (__v16sf)
+					       _mm512_setzero_ps (),
+					       (__mmask16) __U);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_and_pd (__m512d __A, __m512d __B)
+{
+  return (__m512d) __builtin_ia32_andpd512_mask ((__v8df) __A,
+						 (__v8df) __B,
+						 (__v8df)
+						 _mm512_setzero_pd (),
+						 (__mmask8) -1);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_and_pd (__m512d __W, __mmask8 __U, __m512d __A,
+		    __m512d __B)
+{
+  return (__m512d) __builtin_ia32_andpd512_mask ((__v8df) __A,
+						 (__v8df) __B,
+						 (__v8df) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_and_pd (__mmask8 __U, __m512d __A, __m512d __B)
+{
+  return (__m512d) __builtin_ia32_andpd512_mask ((__v8df) __A,
+						 (__v8df) __B,
+						 (__v8df)
+						 _mm512_setzero_pd (),
+						 (__mmask8) __U);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_and_ps (__m512 __A, __m512 __B)
+{
+  return (__m512) __builtin_ia32_andps512_mask ((__v16sf) __A,
+						(__v16sf) __B,
+						(__v16sf)
+						_mm512_setzero_ps (),
+						(__mmask16) -1);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_and_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
+{
+  return (__m512) __builtin_ia32_andps512_mask ((__v16sf) __A,
+						(__v16sf) __B,
+						(__v16sf) __W,
+						(__mmask16) __U);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_and_ps (__mmask16 __U, __m512 __A, __m512 __B)
+{
+  return (__m512) __builtin_ia32_andps512_mask ((__v16sf) __A,
+						(__v16sf) __B,
+						(__v16sf)
+						_mm512_setzero_ps (),
+						(__mmask16) __U);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_andnot_pd (__m512d __A, __m512d __B)
+{
+  return (__m512d) __builtin_ia32_andnpd512_mask ((__v8df) __A,
+						  (__v8df) __B,
+						  (__v8df)
+						  _mm512_setzero_pd (),
+						  (__mmask8) -1);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_andnot_pd (__m512d __W, __mmask8 __U, __m512d __A,
+		       __m512d __B)
+{
+  return (__m512d) __builtin_ia32_andnpd512_mask ((__v8df) __A,
+						  (__v8df) __B,
+						  (__v8df) __W,
+						  (__mmask8) __U);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_andnot_pd (__mmask8 __U, __m512d __A, __m512d __B)
+{
+  return (__m512d) __builtin_ia32_andnpd512_mask ((__v8df) __A,
+						  (__v8df) __B,
+						  (__v8df)
+						  _mm512_setzero_pd (),
+						  (__mmask8) __U);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_andnot_ps (__m512 __A, __m512 __B)
+{
+  return (__m512) __builtin_ia32_andnps512_mask ((__v16sf) __A,
+						 (__v16sf) __B,
+						 (__v16sf)
+						 _mm512_setzero_ps (),
+						 (__mmask16) -1);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_andnot_ps (__m512 __W, __mmask16 __U, __m512 __A,
+		       __m512 __B)
+{
+  return (__m512) __builtin_ia32_andnps512_mask ((__v16sf) __A,
+						 (__v16sf) __B,
+						 (__v16sf) __W,
+						 (__mmask16) __U);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_andnot_ps (__mmask16 __U, __m512 __A, __m512 __B)
+{
+  return (__m512) __builtin_ia32_andnps512_mask ((__v16sf) __A,
+						 (__v16sf) __B,
+						 (__v16sf)
+						 _mm512_setzero_ps (),
+						 (__mmask16) __U);
+}
+
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_movepi32_mask (__m512i __A)
+{
+  return (__mmask16) __builtin_ia32_cvtd2mask512 ((__v16si) __A);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_movepi64_mask (__m512i __A)
+{
+  return (__mmask8) __builtin_ia32_cvtq2mask512 ((__v8di) __A);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_movm_epi32 (__mmask16 __A)
+{
+  return (__m512i) __builtin_ia32_cvtmask2d512 (__A);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_movm_epi64 (__mmask8 __A)
+{
+  return (__m512i) __builtin_ia32_cvtmask2q512 (__A);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cvttpd_epi64 (__m512d __A)
+{
+  return (__m512i) __builtin_ia32_cvttpd2qq512_mask ((__v8df) __A,
+						     (__v8di)
+						     _mm512_setzero_si512 (),
+						     (__mmask8) -1,
+						     _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvttpd_epi64 (__m512i __W, __mmask8 __U, __m512d __A)
+{
+  return (__m512i) __builtin_ia32_cvttpd2qq512_mask ((__v8df) __A,
+						     (__v8di) __W,
+						     (__mmask8) __U,
+						     _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_cvttpd_epi64 (__mmask8 __U, __m512d __A)
+{
+  return (__m512i) __builtin_ia32_cvttpd2qq512_mask ((__v8df) __A,
+						     (__v8di)
+						     _mm512_setzero_si512 (),
+						     (__mmask8) __U,
+						     _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cvttpd_epu64 (__m512d __A)
+{
+  return (__m512i) __builtin_ia32_cvttpd2uqq512_mask ((__v8df) __A,
+						      (__v8di)
+						      _mm512_setzero_si512 (),
+						      (__mmask8) -1,
+						      _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvttpd_epu64 (__m512i __W, __mmask8 __U, __m512d __A)
+{
+  return (__m512i) __builtin_ia32_cvttpd2uqq512_mask ((__v8df) __A,
+						      (__v8di) __W,
+						      (__mmask8) __U,
+						      _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_cvttpd_epu64 (__mmask8 __U, __m512d __A)
+{
+  return (__m512i) __builtin_ia32_cvttpd2uqq512_mask ((__v8df) __A,
+						      (__v8di)
+						      _mm512_setzero_si512 (),
+						      (__mmask8) __U,
+						      _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cvttps_epi64 (__m256 __A)
+{
+  return (__m512i) __builtin_ia32_cvttps2qq512_mask ((__v8sf) __A,
+						     (__v8di)
+						     _mm512_setzero_si512 (),
+						     (__mmask8) -1,
+						     _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvttps_epi64 (__m512i __W, __mmask8 __U, __m256 __A)
+{
+  return (__m512i) __builtin_ia32_cvttps2qq512_mask ((__v8sf) __A,
+						     (__v8di) __W,
+						     (__mmask8) __U,
+						     _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_cvttps_epi64 (__mmask8 __U, __m256 __A)
+{
+  return (__m512i) __builtin_ia32_cvttps2qq512_mask ((__v8sf) __A,
+						     (__v8di)
+						     _mm512_setzero_si512 (),
+						     (__mmask8) __U,
+						     _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cvttps_epu64 (__m256 __A)
+{
+  return (__m512i) __builtin_ia32_cvttps2uqq512_mask ((__v8sf) __A,
+						      (__v8di)
+						      _mm512_setzero_si512 (),
+						      (__mmask8) -1,
+						      _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvttps_epu64 (__m512i __W, __mmask8 __U, __m256 __A)
+{
+  return (__m512i) __builtin_ia32_cvttps2uqq512_mask ((__v8sf) __A,
+						      (__v8di) __W,
+						      (__mmask8) __U,
+						      _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_cvttps_epu64 (__mmask8 __U, __m256 __A)
+{
+  return (__m512i) __builtin_ia32_cvttps2uqq512_mask ((__v8sf) __A,
+						      (__v8di)
+						      _mm512_setzero_si512 (),
+						      (__mmask8) __U,
+						      _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cvtpd_epi64 (__m512d __A)
+{
+  return (__m512i) __builtin_ia32_cvtpd2qq512_mask ((__v8df) __A,
+						    (__v8di)
+						    _mm512_setzero_si512 (),
+						    (__mmask8) -1,
+						    _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvtpd_epi64 (__m512i __W, __mmask8 __U, __m512d __A)
+{
+  return (__m512i) __builtin_ia32_cvtpd2qq512_mask ((__v8df) __A,
+						    (__v8di) __W,
+						    (__mmask8) __U,
+						    _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_cvtpd_epi64 (__mmask8 __U, __m512d __A)
+{
+  return (__m512i) __builtin_ia32_cvtpd2qq512_mask ((__v8df) __A,
+						    (__v8di)
+						    _mm512_setzero_si512 (),
+						    (__mmask8) __U,
+						    _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cvtpd_epu64 (__m512d __A)
+{
+  return (__m512i) __builtin_ia32_cvtpd2uqq512_mask ((__v8df) __A,
+						     (__v8di)
+						     _mm512_setzero_si512 (),
+						     (__mmask8) -1,
+						     _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvtpd_epu64 (__m512i __W, __mmask8 __U, __m512d __A)
+{
+  return (__m512i) __builtin_ia32_cvtpd2uqq512_mask ((__v8df) __A,
+						     (__v8di) __W,
+						     (__mmask8) __U,
+						     _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_cvtpd_epu64 (__mmask8 __U, __m512d __A)
+{
+  return (__m512i) __builtin_ia32_cvtpd2uqq512_mask ((__v8df) __A,
+						     (__v8di)
+						     _mm512_setzero_si512 (),
+						     (__mmask8) __U,
+						     _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cvtps_epi64 (__m256 __A)
+{
+  return (__m512i) __builtin_ia32_cvtps2qq512_mask ((__v8sf) __A,
+						    (__v8di)
+						    _mm512_setzero_si512 (),
+						    (__mmask8) -1,
+						    _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvtps_epi64 (__m512i __W, __mmask8 __U, __m256 __A)
+{
+  return (__m512i) __builtin_ia32_cvtps2qq512_mask ((__v8sf) __A,
+						    (__v8di) __W,
+						    (__mmask8) __U,
+						    _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_cvtps_epi64 (__mmask8 __U, __m256 __A)
+{
+  return (__m512i) __builtin_ia32_cvtps2qq512_mask ((__v8sf) __A,
+						    (__v8di)
+						    _mm512_setzero_si512 (),
+						    (__mmask8) __U,
+						    _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cvtps_epu64 (__m256 __A)
+{
+  return (__m512i) __builtin_ia32_cvtps2uqq512_mask ((__v8sf) __A,
+						     (__v8di)
+						     _mm512_setzero_si512 (),
+						     (__mmask8) -1,
+						     _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvtps_epu64 (__m512i __W, __mmask8 __U, __m256 __A)
+{
+  return (__m512i) __builtin_ia32_cvtps2uqq512_mask ((__v8sf) __A,
+						     (__v8di) __W,
+						     (__mmask8) __U,
+						     _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_cvtps_epu64 (__mmask8 __U, __m256 __A)
+{
+  return (__m512i) __builtin_ia32_cvtps2uqq512_mask ((__v8sf) __A,
+						     (__v8di)
+						     _mm512_setzero_si512 (),
+						     (__mmask8) __U,
+						     _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cvtepi64_ps (__m512i __A)
+{
+  return (__m256) __builtin_ia32_cvtqq2ps512_mask ((__v8di) __A,
+						   (__v8sf)
+						   _mm256_setzero_ps (),
+						   (__mmask8) -1,
+						   _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvtepi64_ps (__m256 __W, __mmask8 __U, __m512i __A)
+{
+  return (__m256) __builtin_ia32_cvtqq2ps512_mask ((__v8di) __A,
+						   (__v8sf) __W,
+						   (__mmask8) __U,
+						   _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_cvtepi64_ps (__mmask8 __U, __m512i __A)
+{
+  return (__m256) __builtin_ia32_cvtqq2ps512_mask ((__v8di) __A,
+						   (__v8sf)
+						   _mm256_setzero_ps (),
+						   (__mmask8) __U,
+						   _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cvtepu64_ps (__m512i __A)
+{
+  return (__m256) __builtin_ia32_cvtuqq2ps512_mask ((__v8di) __A,
+						    (__v8sf)
+						    _mm256_setzero_ps (),
+						    (__mmask8) -1,
+						    _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvtepu64_ps (__m256 __W, __mmask8 __U, __m512i __A)
+{
+  return (__m256) __builtin_ia32_cvtuqq2ps512_mask ((__v8di) __A,
+						    (__v8sf) __W,
+						    (__mmask8) __U,
+						    _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_cvtepu64_ps (__mmask8 __U, __m512i __A)
+{
+  return (__m256) __builtin_ia32_cvtuqq2ps512_mask ((__v8di) __A,
+						    (__v8sf)
+						    _mm256_setzero_ps (),
+						    (__mmask8) __U,
+						    _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cvtepi64_pd (__m512i __A)
+{
+  return (__m512d) __builtin_ia32_cvtqq2pd512_mask ((__v8di) __A,
+						    (__v8df)
+						    _mm512_setzero_pd (),
+						    (__mmask8) -1,
+						    _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvtepi64_pd (__m512d __W, __mmask8 __U, __m512i __A)
+{
+  return (__m512d) __builtin_ia32_cvtqq2pd512_mask ((__v8di) __A,
+						    (__v8df) __W,
+						    (__mmask8) __U,
+						    _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_cvtepi64_pd (__mmask8 __U, __m512i __A)
+{
+  return (__m512d) __builtin_ia32_cvtqq2pd512_mask ((__v8di) __A,
+						    (__v8df)
+						    _mm512_setzero_pd (),
+						    (__mmask8) __U,
+						    _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cvtepu64_pd (__m512i __A)
+{
+  return (__m512d) __builtin_ia32_cvtuqq2pd512_mask ((__v8di) __A,
+						     (__v8df)
+						     _mm512_setzero_pd (),
+						     (__mmask8) -1,
+						     _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvtepu64_pd (__m512d __W, __mmask8 __U, __m512i __A)
+{
+  return (__m512d) __builtin_ia32_cvtuqq2pd512_mask ((__v8di) __A,
+						     (__v8df) __W,
+						     (__mmask8) __U,
+						     _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_cvtepu64_pd (__mmask8 __U, __m512i __A)
+{
+  return (__m512d) __builtin_ia32_cvtuqq2pd512_mask ((__v8di) __A,
+						     (__v8df)
+						     _mm512_setzero_pd (),
+						     (__mmask8) __U,
+						     _MM_FROUND_CUR_DIRECTION);
+}
+
+#ifdef __OPTIMIZE__
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_range_pd (__m512d __A, __m512d __B, int __C)
+{
+  return (__m512d) __builtin_ia32_rangepd512_mask ((__v8df) __A,
+						   (__v8df) __B, __C,
+						   (__v8df)
+						   _mm512_setzero_pd (),
+						   (__mmask8) -1,
+						   _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_range_pd (__m512d __W, __mmask8 __U,
+		      __m512d __A, __m512d __B, int __C)
+{
+  return (__m512d) __builtin_ia32_rangepd512_mask ((__v8df) __A,
+						   (__v8df) __B, __C,
+						   (__v8df) __W,
+						   (__mmask8) __U,
+						   _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_range_pd (__mmask8 __U, __m512d __A, __m512d __B, int __C)
+{
+  return (__m512d) __builtin_ia32_rangepd512_mask ((__v8df) __A,
+						   (__v8df) __B, __C,
+						   (__v8df)
+						   _mm512_setzero_pd (),
+						   (__mmask8) __U,
+						   _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_range_ps (__m512 __A, __m512 __B, int __C)
+{
+  return (__m512) __builtin_ia32_rangeps512_mask ((__v16sf) __A,
+						  (__v16sf) __B, __C,
+						  (__v16sf)
+						  _mm512_setzero_ps (),
+						  (__mmask16) -1,
+						  _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_range_ps (__m512 __W, __mmask16 __U,
+		      __m512 __A, __m512 __B, int __C)
+{
+  return (__m512) __builtin_ia32_rangeps512_mask ((__v16sf) __A,
+						  (__v16sf) __B, __C,
+						  (__v16sf) __W,
+						  (__mmask16) __U,
+						  _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_range_ps (__mmask16 __U, __m512 __A, __m512 __B, int __C)
+{
+  return (__m512) __builtin_ia32_rangeps512_mask ((__v16sf) __A,
+						  (__v16sf) __B, __C,
+						  (__v16sf)
+						  _mm512_setzero_ps (),
+						  (__mmask16) __U,
+						  _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_reduce_sd (__m128d __A, __m128d __B, int __C)
+{
+  return (__m128d) __builtin_ia32_reducesd ((__v2df) __A,
+						 (__v2df) __B, __C);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_reduce_ss (__m128 __A, __m128 __B, int __C)
+{
+  return (__m128) __builtin_ia32_reducess ((__v4sf) __A,
+						(__v4sf) __B, __C);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_range_sd (__m128d __A, __m128d __B, int __C)
+{
+  return (__m128d) __builtin_ia32_rangesd128_round ((__v2df) __A,
+						   (__v2df) __B, __C,
+						   _MM_FROUND_CUR_DIRECTION);
+}
+
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_range_ss (__m128 __A, __m128 __B, int __C)
+{
+  return (__m128) __builtin_ia32_rangess128_round ((__v4sf) __A,
+						  (__v4sf) __B, __C,
+						  _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_range_round_sd (__m128d __A, __m128d __B, int __C, const int __R)
+{
+  return (__m128d) __builtin_ia32_rangesd128_round ((__v2df) __A,
+						   (__v2df) __B, __C,
+						   __R);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_range_round_ss (__m128 __A, __m128 __B, int __C, const int __R)
+{
+  return (__m128) __builtin_ia32_rangess128_round ((__v4sf) __A,
+						  (__v4sf) __B, __C,
+						  __R);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_fpclass_ss_mask (__m128 __A, const int __imm)
+{
+  return (__mmask8) __builtin_ia32_fpclassss ((__v4sf) __A, __imm);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_fpclass_sd_mask (__m128d __A, const int __imm)
+{
+  return (__mmask8) __builtin_ia32_fpclasssd ((__v2df) __A, __imm);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cvtt_roundpd_epi64 (__m512d __A, const int __R)
+{
+  return (__m512i) __builtin_ia32_cvttpd2qq512_mask ((__v8df) __A,
+						     (__v8di)
+						     _mm512_setzero_si512 (),
+						     (__mmask8) -1,
+						     __R);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvtt_roundpd_epi64 (__m512i __W, __mmask8 __U, __m512d __A,
+				const int __R)
+{
+  return (__m512i) __builtin_ia32_cvttpd2qq512_mask ((__v8df) __A,
+						     (__v8di) __W,
+						     (__mmask8) __U,
+						     __R);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_cvtt_roundpd_epi64 (__mmask8 __U, __m512d __A,
+				 const int __R)
+{
+  return (__m512i) __builtin_ia32_cvttpd2qq512_mask ((__v8df) __A,
+						     (__v8di)
+						     _mm512_setzero_si512 (),
+						     (__mmask8) __U,
+						     __R);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cvtt_roundpd_epu64 (__m512d __A, const int __R)
+{
+  return (__m512i) __builtin_ia32_cvttpd2uqq512_mask ((__v8df) __A,
+						      (__v8di)
+						      _mm512_setzero_si512 (),
+						      (__mmask8) -1,
+						      __R);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvtt_roundpd_epu64 (__m512i __W, __mmask8 __U, __m512d __A,
+				const int __R)
+{
+  return (__m512i) __builtin_ia32_cvttpd2uqq512_mask ((__v8df) __A,
+						      (__v8di) __W,
+						      (__mmask8) __U,
+						      __R);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_cvtt_roundpd_epu64 (__mmask8 __U, __m512d __A,
+				 const int __R)
+{
+  return (__m512i) __builtin_ia32_cvttpd2uqq512_mask ((__v8df) __A,
+						      (__v8di)
+						      _mm512_setzero_si512 (),
+						      (__mmask8) __U,
+						      __R);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cvtt_roundps_epi64 (__m256 __A, const int __R)
+{
+  return (__m512i) __builtin_ia32_cvttps2qq512_mask ((__v8sf) __A,
+						     (__v8di)
+						     _mm512_setzero_si512 (),
+						     (__mmask8) -1,
+						     __R);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvtt_roundps_epi64 (__m512i __W, __mmask8 __U, __m256 __A,
+				const int __R)
+{
+  return (__m512i) __builtin_ia32_cvttps2qq512_mask ((__v8sf) __A,
+						     (__v8di) __W,
+						     (__mmask8) __U,
+						     __R);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_cvtt_roundps_epi64 (__mmask8 __U, __m256 __A,
+				 const int __R)
+{
+  return (__m512i) __builtin_ia32_cvttps2qq512_mask ((__v8sf) __A,
+						     (__v8di)
+						     _mm512_setzero_si512 (),
+						     (__mmask8) __U,
+						     __R);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cvtt_roundps_epu64 (__m256 __A, const int __R)
+{
+  return (__m512i) __builtin_ia32_cvttps2uqq512_mask ((__v8sf) __A,
+						      (__v8di)
+						      _mm512_setzero_si512 (),
+						      (__mmask8) -1,
+						      __R);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvtt_roundps_epu64 (__m512i __W, __mmask8 __U, __m256 __A,
+				const int __R)
+{
+  return (__m512i) __builtin_ia32_cvttps2uqq512_mask ((__v8sf) __A,
+						      (__v8di) __W,
+						      (__mmask8) __U,
+						      __R);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_cvtt_roundps_epu64 (__mmask8 __U, __m256 __A,
+				 const int __R)
+{
+  return (__m512i) __builtin_ia32_cvttps2uqq512_mask ((__v8sf) __A,
+						      (__v8di)
+						      _mm512_setzero_si512 (),
+						      (__mmask8) __U,
+						      __R);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cvt_roundpd_epi64 (__m512d __A, const int __R)
+{
+  return (__m512i) __builtin_ia32_cvtpd2qq512_mask ((__v8df) __A,
+						    (__v8di)
+						    _mm512_setzero_si512 (),
+						    (__mmask8) -1,
+						    __R);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvt_roundpd_epi64 (__m512i __W, __mmask8 __U, __m512d __A,
+			       const int __R)
+{
+  return (__m512i) __builtin_ia32_cvtpd2qq512_mask ((__v8df) __A,
+						    (__v8di) __W,
+						    (__mmask8) __U,
+						    __R);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_cvt_roundpd_epi64 (__mmask8 __U, __m512d __A,
+				const int __R)
+{
+  return (__m512i) __builtin_ia32_cvtpd2qq512_mask ((__v8df) __A,
+						    (__v8di)
+						    _mm512_setzero_si512 (),
+						    (__mmask8) __U,
+						    __R);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cvt_roundpd_epu64 (__m512d __A, const int __R)
+{
+  return (__m512i) __builtin_ia32_cvtpd2uqq512_mask ((__v8df) __A,
+						     (__v8di)
+						     _mm512_setzero_si512 (),
+						     (__mmask8) -1,
+						     __R);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvt_roundpd_epu64 (__m512i __W, __mmask8 __U, __m512d __A,
+			       const int __R)
+{
+  return (__m512i) __builtin_ia32_cvtpd2uqq512_mask ((__v8df) __A,
+						     (__v8di) __W,
+						     (__mmask8) __U,
+						     __R);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_cvt_roundpd_epu64 (__mmask8 __U, __m512d __A,
+				const int __R)
+{
+  return (__m512i) __builtin_ia32_cvtpd2uqq512_mask ((__v8df) __A,
+						     (__v8di)
+						     _mm512_setzero_si512 (),
+						     (__mmask8) __U,
+						     __R);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cvt_roundps_epi64 (__m256 __A, const int __R)
+{
+  return (__m512i) __builtin_ia32_cvtps2qq512_mask ((__v8sf) __A,
+						    (__v8di)
+						    _mm512_setzero_si512 (),
+						    (__mmask8) -1,
+						    __R);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvt_roundps_epi64 (__m512i __W, __mmask8 __U, __m256 __A,
+			       const int __R)
+{
+  return (__m512i) __builtin_ia32_cvtps2qq512_mask ((__v8sf) __A,
+						    (__v8di) __W,
+						    (__mmask8) __U,
+						    __R);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_cvt_roundps_epi64 (__mmask8 __U, __m256 __A,
+				const int __R)
+{
+  return (__m512i) __builtin_ia32_cvtps2qq512_mask ((__v8sf) __A,
+						    (__v8di)
+						    _mm512_setzero_si512 (),
+						    (__mmask8) __U,
+						    __R);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cvt_roundps_epu64 (__m256 __A, const int __R)
+{
+  return (__m512i) __builtin_ia32_cvtps2uqq512_mask ((__v8sf) __A,
+						     (__v8di)
+						     _mm512_setzero_si512 (),
+						     (__mmask8) -1,
+						     __R);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvt_roundps_epu64 (__m512i __W, __mmask8 __U, __m256 __A,
+			       const int __R)
+{
+  return (__m512i) __builtin_ia32_cvtps2uqq512_mask ((__v8sf) __A,
+						     (__v8di) __W,
+						     (__mmask8) __U,
+						     __R);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_cvt_roundps_epu64 (__mmask8 __U, __m256 __A,
+				const int __R)
+{
+  return (__m512i) __builtin_ia32_cvtps2uqq512_mask ((__v8sf) __A,
+						     (__v8di)
+						     _mm512_setzero_si512 (),
+						     (__mmask8) __U,
+						     __R);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cvt_roundepi64_ps (__m512i __A, const int __R)
+{
+  return (__m256) __builtin_ia32_cvtqq2ps512_mask ((__v8di) __A,
+						   (__v8sf)
+						   _mm256_setzero_ps (),
+						   (__mmask8) -1,
+						   __R);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvt_roundepi64_ps (__m256 __W, __mmask8 __U, __m512i __A,
+			       const int __R)
+{
+  return (__m256) __builtin_ia32_cvtqq2ps512_mask ((__v8di) __A,
+						   (__v8sf) __W,
+						   (__mmask8) __U,
+						   __R);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_cvt_roundepi64_ps (__mmask8 __U, __m512i __A,
+				const int __R)
+{
+  return (__m256) __builtin_ia32_cvtqq2ps512_mask ((__v8di) __A,
+						   (__v8sf)
+						   _mm256_setzero_ps (),
+						   (__mmask8) __U,
+						   __R);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cvt_roundepu64_ps (__m512i __A, const int __R)
+{
+  return (__m256) __builtin_ia32_cvtuqq2ps512_mask ((__v8di) __A,
+						    (__v8sf)
+						    _mm256_setzero_ps (),
+						    (__mmask8) -1,
+						    __R);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvt_roundepu64_ps (__m256 __W, __mmask8 __U, __m512i __A,
+			       const int __R)
+{
+  return (__m256) __builtin_ia32_cvtuqq2ps512_mask ((__v8di) __A,
+						    (__v8sf) __W,
+						    (__mmask8) __U,
+						    __R);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_cvt_roundepu64_ps (__mmask8 __U, __m512i __A,
+				const int __R)
+{
+  return (__m256) __builtin_ia32_cvtuqq2ps512_mask ((__v8di) __A,
+						    (__v8sf)
+						    _mm256_setzero_ps (),
+						    (__mmask8) __U,
+						    __R);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cvt_roundepi64_pd (__m512i __A, const int __R)
+{
+  return (__m512d) __builtin_ia32_cvtqq2pd512_mask ((__v8di) __A,
+						    (__v8df)
+						    _mm512_setzero_pd (),
+						    (__mmask8) -1,
+						    __R);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvt_roundepi64_pd (__m512d __W, __mmask8 __U, __m512i __A,
+			       const int __R)
+{
+  return (__m512d) __builtin_ia32_cvtqq2pd512_mask ((__v8di) __A,
+						    (__v8df) __W,
+						    (__mmask8) __U,
+						    __R);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_cvt_roundepi64_pd (__mmask8 __U, __m512i __A,
+				const int __R)
+{
+  return (__m512d) __builtin_ia32_cvtqq2pd512_mask ((__v8di) __A,
+						    (__v8df)
+						    _mm512_setzero_pd (),
+						    (__mmask8) __U,
+						    __R);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cvt_roundepu64_pd (__m512i __A, const int __R)
+{
+  return (__m512d) __builtin_ia32_cvtuqq2pd512_mask ((__v8di) __A,
+						     (__v8df)
+						     _mm512_setzero_pd (),
+						     (__mmask8) -1,
+						     __R);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvt_roundepu64_pd (__m512d __W, __mmask8 __U, __m512i __A,
+			       const int __R)
+{
+  return (__m512d) __builtin_ia32_cvtuqq2pd512_mask ((__v8di) __A,
+						     (__v8df) __W,
+						     (__mmask8) __U,
+						     __R);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_cvt_roundepu64_pd (__mmask8 __U, __m512i __A,
+				const int __R)
+{
+  return (__m512d) __builtin_ia32_cvtuqq2pd512_mask ((__v8di) __A,
+						     (__v8df)
+						     _mm512_setzero_pd (),
+						     (__mmask8) __U,
+						     __R);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_reduce_pd (__m512d __A, int __B)
+{
+  return (__m512d) __builtin_ia32_reducepd512_mask ((__v8df) __A, __B,
+						    (__v8df)
+						    _mm512_setzero_pd (),
+						    (__mmask8) -1);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_reduce_pd (__m512d __W, __mmask8 __U, __m512d __A, int __B)
+{
+  return (__m512d) __builtin_ia32_reducepd512_mask ((__v8df) __A, __B,
+						    (__v8df) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_reduce_pd (__mmask8 __U, __m512d __A, int __B)
+{
+  return (__m512d) __builtin_ia32_reducepd512_mask ((__v8df) __A, __B,
+						    (__v8df)
+						    _mm512_setzero_pd (),
+						    (__mmask8) __U);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_reduce_ps (__m512 __A, int __B)
+{
+  return (__m512) __builtin_ia32_reduceps512_mask ((__v16sf) __A, __B,
+						   (__v16sf)
+						   _mm512_setzero_ps (),
+						   (__mmask16) -1);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_reduce_ps (__m512 __W, __mmask16 __U, __m512 __A, int __B)
+{
+  return (__m512) __builtin_ia32_reduceps512_mask ((__v16sf) __A, __B,
+						   (__v16sf) __W,
+						   (__mmask16) __U);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_reduce_ps (__mmask16 __U, __m512 __A, int __B)
+{
+  return (__m512) __builtin_ia32_reduceps512_mask ((__v16sf) __A, __B,
+						   (__v16sf)
+						   _mm512_setzero_ps (),
+						   (__mmask16) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_extractf32x8_ps (__m512 __A, const int __imm)
+{
+  return (__m256) __builtin_ia32_extractf32x8_mask ((__v16sf) __A,
+						    __imm,
+						    (__v8sf)
+						    _mm256_setzero_ps (),
+						    (__mmask8) -1);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_extractf32x8_ps (__m256 __W, __mmask8 __U, __m512 __A,
+			     const int __imm)
+{
+  return (__m256) __builtin_ia32_extractf32x8_mask ((__v16sf) __A,
+						    __imm,
+						    (__v8sf) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_extractf32x8_ps (__mmask8 __U, __m512 __A,
+			      const int __imm)
+{
+  return (__m256) __builtin_ia32_extractf32x8_mask ((__v16sf) __A,
+						    __imm,
+						    (__v8sf)
+						    _mm256_setzero_ps (),
+						    (__mmask8) __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_extractf64x2_pd (__m512d __A, const int __imm)
+{
+  return (__m128d) __builtin_ia32_extractf64x2_512_mask ((__v8df) __A,
+							 __imm,
+							 (__v2df)
+							 _mm_setzero_pd (),
+							 (__mmask8) -
+							 1);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_extractf64x2_pd (__m128d __W, __mmask8 __U, __m512d __A,
+			     const int __imm)
+{
+  return (__m128d) __builtin_ia32_extractf64x2_512_mask ((__v8df) __A,
+							 __imm,
+							 (__v2df) __W,
+							 (__mmask8)
+							 __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_extractf64x2_pd (__mmask8 __U, __m512d __A,
+			      const int __imm)
+{
+  return (__m128d) __builtin_ia32_extractf64x2_512_mask ((__v8df) __A,
+							 __imm,
+							 (__v2df)
+							 _mm_setzero_pd (),
+							 (__mmask8)
+							 __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_extracti32x8_epi32 (__m512i __A, const int __imm)
+{
+  return (__m256i) __builtin_ia32_extracti32x8_mask ((__v16si) __A,
+						     __imm,
+						     (__v8si)
+						     _mm256_setzero_si256 (),
+						     (__mmask8) -1);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_extracti32x8_epi32 (__m256i __W, __mmask8 __U, __m512i __A,
+				const int __imm)
+{
+  return (__m256i) __builtin_ia32_extracti32x8_mask ((__v16si) __A,
+						     __imm,
+						     (__v8si) __W,
+						     (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_extracti32x8_epi32 (__mmask8 __U, __m512i __A,
+				 const int __imm)
+{
+  return (__m256i) __builtin_ia32_extracti32x8_mask ((__v16si) __A,
+						     __imm,
+						     (__v8si)
+						     _mm256_setzero_si256 (),
+						     (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_extracti64x2_epi64 (__m512i __A, const int __imm)
+{
+  return (__m128i) __builtin_ia32_extracti64x2_512_mask ((__v8di) __A,
+							 __imm,
+							 (__v2di)
+							 _mm_setzero_di (),
+							 (__mmask8) -
+							 1);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_extracti64x2_epi64 (__m128i __W, __mmask8 __U, __m512i __A,
+				const int __imm)
+{
+  return (__m128i) __builtin_ia32_extracti64x2_512_mask ((__v8di) __A,
+							 __imm,
+							 (__v2di) __W,
+							 (__mmask8)
+							 __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_extracti64x2_epi64 (__mmask8 __U, __m512i __A,
+				 const int __imm)
+{
+  return (__m128i) __builtin_ia32_extracti64x2_512_mask ((__v8di) __A,
+							 __imm,
+							 (__v2di)
+							 _mm_setzero_di (),
+							 (__mmask8)
+							 __U);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_range_round_pd (__m512d __A, __m512d __B, int __C,
+		       const int __R)
+{
+  return (__m512d) __builtin_ia32_rangepd512_mask ((__v8df) __A,
+						   (__v8df) __B, __C,
+						   (__v8df)
+						   _mm512_setzero_pd (),
+						   (__mmask8) -1,
+						   __R);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_range_round_pd (__m512d __W, __mmask8 __U,
+			    __m512d __A, __m512d __B, int __C,
+			    const int __R)
+{
+  return (__m512d) __builtin_ia32_rangepd512_mask ((__v8df) __A,
+						   (__v8df) __B, __C,
+						   (__v8df) __W,
+						   (__mmask8) __U,
+						   __R);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_range_round_pd (__mmask8 __U, __m512d __A, __m512d __B,
+			     int __C, const int __R)
+{
+  return (__m512d) __builtin_ia32_rangepd512_mask ((__v8df) __A,
+						   (__v8df) __B, __C,
+						   (__v8df)
+						   _mm512_setzero_pd (),
+						   (__mmask8) __U,
+						   __R);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_range_round_ps (__m512 __A, __m512 __B, int __C, const int __R)
+{
+  return (__m512) __builtin_ia32_rangeps512_mask ((__v16sf) __A,
+						  (__v16sf) __B, __C,
+						  (__v16sf)
+						  _mm512_setzero_ps (),
+						  (__mmask16) -1,
+						  __R);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_range_round_ps (__m512 __W, __mmask16 __U,
+			    __m512 __A, __m512 __B, int __C,
+			    const int __R)
+{
+  return (__m512) __builtin_ia32_rangeps512_mask ((__v16sf) __A,
+						  (__v16sf) __B, __C,
+						  (__v16sf) __W,
+						  (__mmask16) __U,
+						  __R);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_range_round_ps (__mmask16 __U, __m512 __A, __m512 __B,
+			     int __C, const int __R)
+{
+  return (__m512) __builtin_ia32_rangeps512_mask ((__v16sf) __A,
+						  (__v16sf) __B, __C,
+						  (__v16sf)
+						  _mm512_setzero_ps (),
+						  (__mmask16) __U,
+						  __R);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_inserti32x8 (__m512i __A, __m256i __B, const int __imm)
+{
+  return (__m512i) __builtin_ia32_inserti32x8_mask ((__v16si) __A,
+						    (__v8si) __B,
+						    __imm,
+						    (__v16si)
+						    _mm512_setzero_si512 (),
+						    (__mmask16) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_inserti32x8 (__m512i __W, __mmask16 __U, __m512i __A,
+			 __m256i __B, const int __imm)
+{
+  return (__m512i) __builtin_ia32_inserti32x8_mask ((__v16si) __A,
+						    (__v8si) __B,
+						    __imm,
+						    (__v16si) __W,
+						    (__mmask16) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_inserti32x8 (__mmask16 __U, __m512i __A, __m256i __B,
+			  const int __imm)
+{
+  return (__m512i) __builtin_ia32_inserti32x8_mask ((__v16si) __A,
+						    (__v8si) __B,
+						    __imm,
+						    (__v16si)
+						    _mm512_setzero_si512 (),
+						    (__mmask16) __U);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_insertf32x8 (__m512 __A, __m256 __B, const int __imm)
+{
+  return (__m512) __builtin_ia32_insertf32x8_mask ((__v16sf) __A,
+						   (__v8sf) __B,
+						   __imm,
+						   (__v16sf)
+						   _mm512_setzero_ps (),
+						   (__mmask16) -1);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_insertf32x8 (__m512 __W, __mmask16 __U, __m512 __A,
+			 __m256 __B, const int __imm)
+{
+  return (__m512) __builtin_ia32_insertf32x8_mask ((__v16sf) __A,
+						   (__v8sf) __B,
+						   __imm,
+						   (__v16sf) __W,
+						   (__mmask16) __U);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_insertf32x8 (__mmask16 __U, __m512 __A, __m256 __B,
+			  const int __imm)
+{
+  return (__m512) __builtin_ia32_insertf32x8_mask ((__v16sf) __A,
+						   (__v8sf) __B,
+						   __imm,
+						   (__v16sf)
+						   _mm512_setzero_ps (),
+						   (__mmask16) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_inserti64x2 (__m512i __A, __m128i __B, const int __imm)
+{
+  return (__m512i) __builtin_ia32_inserti64x2_512_mask ((__v8di) __A,
+							(__v2di) __B,
+							__imm,
+							(__v8di)
+							_mm512_setzero_si512 (),
+							(__mmask8) -
+							1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_inserti64x2 (__m512i __W, __mmask8 __U, __m512i __A,
+			 __m128i __B, const int __imm)
+{
+  return (__m512i) __builtin_ia32_inserti64x2_512_mask ((__v8di) __A,
+							(__v2di) __B,
+							__imm,
+							(__v8di) __W,
+							(__mmask8)
+							__U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_inserti64x2 (__mmask8 __U, __m512i __A, __m128i __B,
+			  const int __imm)
+{
+  return (__m512i) __builtin_ia32_inserti64x2_512_mask ((__v8di) __A,
+							(__v2di) __B,
+							__imm,
+							(__v8di)
+							_mm512_setzero_si512 (),
+							(__mmask8)
+							__U);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_insertf64x2 (__m512d __A, __m128d __B, const int __imm)
+{
+  return (__m512d) __builtin_ia32_insertf64x2_512_mask ((__v8df) __A,
+							(__v2df) __B,
+							__imm,
+							(__v8df)
+							_mm512_setzero_pd (),
+							(__mmask8) -
+							1);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_insertf64x2 (__m512d __W, __mmask8 __U, __m512d __A,
+			 __m128d __B, const int __imm)
+{
+  return (__m512d) __builtin_ia32_insertf64x2_512_mask ((__v8df) __A,
+							(__v2df) __B,
+							__imm,
+							(__v8df) __W,
+							(__mmask8)
+							__U);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_insertf64x2 (__mmask8 __U, __m512d __A, __m128d __B,
+			  const int __imm)
+{
+  return (__m512d) __builtin_ia32_insertf64x2_512_mask ((__v8df) __A,
+							(__v2df) __B,
+							__imm,
+							(__v8df)
+							_mm512_setzero_pd (),
+							(__mmask8)
+							__U);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_fpclass_pd_mask (__mmask8 __U, __m512d __A,
+			     const int __imm)
+{
+  return (__mmask8) __builtin_ia32_fpclasspd512_mask ((__v8df) __A,
+						      __imm, __U);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_fpclass_pd_mask (__m512d __A, const int __imm)
+{
+  return (__mmask8) __builtin_ia32_fpclasspd512_mask ((__v8df) __A,
+						      __imm,
+						      (__mmask8) -1);
+}
+
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_fpclass_ps_mask (__mmask16 __U, __m512 __A,
+			     const int __imm)
+{
+  return (__mmask16) __builtin_ia32_fpclassps512_mask ((__v16sf) __A,
+						       __imm, __U);
+}
+
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_fpclass_ps_mask (__m512 __A, const int __imm)
+{
+  return (__mmask16) __builtin_ia32_fpclassps512_mask ((__v16sf) __A,
+						       __imm,
+						       (__mmask16) -
+						       1);
+}
+
+#else
+#define _mm_range_sd(A, B, C)						\
+  ((__m128d) __builtin_ia32_rangesd128_round ((__v2df)(__m128d)(A),	\
+    (__v2df)(__m128d)(B), (int)(C),					\
+    _MM_FROUND_CUR_DIRECTION))
+
+#define _mm_range_ss(A, B, C)						\
+  ((__m128) __builtin_ia32_rangess128_round ((__v4sf)(__m128)(A),	\
+    (__v4sf)(__m128)(B), (int)(C),					\
+    _MM_FROUND_CUR_DIRECTION))
+
+#define _mm_range_round_sd(A, B, C, R)					\
+  ((__m128d) __builtin_ia32_rangesd128_round ((__v2df)(__m128d)(A),	\
+    (__v2df)(__m128d)(B), (int)(C), (R)))
+
+#define _mm_range_round_ss(A, B, C, R)					\
+  ((__m128) __builtin_ia32_rangess128_round ((__v4sf)(__m128)(A),	\
+    (__v4sf)(__m128)(B), (int)(C), (R)))
+
+#define _mm512_cvtt_roundpd_epi64(A, B)		    \
+    ((__m512i)__builtin_ia32_cvttpd2qq512_mask((A), (__v8di)_mm512_setzero_si512 (), -1, (B)))
+
+#define _mm512_mask_cvtt_roundpd_epi64(W, U, A, B)  \
+    ((__m512i)__builtin_ia32_cvttpd2qq512_mask((A), (__v8di)(W), (U), (B)))
+
+#define _mm512_maskz_cvtt_roundpd_epi64(U, A, B)    \
+    ((__m512i)__builtin_ia32_cvttpd2qq512_mask((A), (__v8di)_mm512_setzero_si512 (), (U), (B)))
+
+#define _mm512_cvtt_roundpd_epu64(A, B)		    \
+    ((__m512i)__builtin_ia32_cvttpd2uqq512_mask((A), (__v8di)_mm512_setzero_si512 (), -1, (B)))
+
+#define _mm512_mask_cvtt_roundpd_epu64(W, U, A, B)  \
+    ((__m512i)__builtin_ia32_cvttpd2uqq512_mask((A), (__v8di)(W), (U), (B)))
+
+#define _mm512_maskz_cvtt_roundpd_epu64(U, A, B)    \
+    ((__m512i)__builtin_ia32_cvttpd2uqq512_mask((A), (__v8di)_mm512_setzero_si512 (), (U), (B)))
+
+#define _mm512_cvtt_roundps_epi64(A, B)		    \
+    ((__m512i)__builtin_ia32_cvttps2qq512_mask((A), (__v8di)_mm512_setzero_si512 (), -1, (B)))
+
+#define _mm512_mask_cvtt_roundps_epi64(W, U, A, B)  \
+    ((__m512i)__builtin_ia32_cvttps2qq512_mask((A), (__v8di)(W), (U), (B)))
+
+#define _mm512_maskz_cvtt_roundps_epi64(U, A, B)    \
+    ((__m512i)__builtin_ia32_cvttps2qq512_mask((A), (__v8di)_mm512_setzero_si512 (), (U), (B)))
+
+#define _mm512_cvtt_roundps_epu64(A, B)		    \
+    ((__m512i)__builtin_ia32_cvttps2uqq512_mask((A), (__v8di)_mm512_setzero_si512 (), -1, (B)))
+
+#define _mm512_mask_cvtt_roundps_epu64(W, U, A, B)  \
+    ((__m512i)__builtin_ia32_cvttps2uqq512_mask((A), (__v8di)(W), (U), (B)))
+
+#define _mm512_maskz_cvtt_roundps_epu64(U, A, B)    \
+    ((__m512i)__builtin_ia32_cvttps2uqq512_mask((A), (__v8di)_mm512_setzero_si512 (), (U), (B)))
+
+#define _mm512_cvt_roundpd_epi64(A, B)		    \
+    ((__m512i)__builtin_ia32_cvtpd2qq512_mask((A), (__v8di)_mm512_setzero_si512 (), -1, (B)))
+
+#define _mm512_mask_cvt_roundpd_epi64(W, U, A, B)   \
+    ((__m512i)__builtin_ia32_cvtpd2qq512_mask((A), (__v8di)(W), (U), (B)))
+
+#define _mm512_maskz_cvt_roundpd_epi64(U, A, B)     \
+    ((__m512i)__builtin_ia32_cvtpd2qq512_mask((A), (__v8di)_mm512_setzero_si512 (), (U), (B)))
+
+#define _mm512_cvt_roundpd_epu64(A, B)		    \
+    ((__m512i)__builtin_ia32_cvtpd2uqq512_mask((A), (__v8di)_mm512_setzero_si512 (), -1, (B)))
+
+#define _mm512_mask_cvt_roundpd_epu64(W, U, A, B)   \
+    ((__m512i)__builtin_ia32_cvtpd2uqq512_mask((A), (__v8di)(W), (U), (B)))
+
+#define _mm512_maskz_cvt_roundpd_epu64(U, A, B)     \
+    ((__m512i)__builtin_ia32_cvtpd2uqq512_mask((A), (__v8di)_mm512_setzero_si512 (), (U), (B)))
+
+#define _mm512_cvt_roundps_epi64(A, B)		    \
+    ((__m512i)__builtin_ia32_cvtps2qq512_mask((A), (__v8di)_mm512_setzero_si512 (), -1, (B)))
+
+#define _mm512_mask_cvt_roundps_epi64(W, U, A, B)   \
+    ((__m512i)__builtin_ia32_cvtps2qq512_mask((A), (__v8di)(W), (U), (B)))
+
+#define _mm512_maskz_cvt_roundps_epi64(U, A, B)     \
+    ((__m512i)__builtin_ia32_cvtps2qq512_mask((A), (__v8di)_mm512_setzero_si512 (), (U), (B)))
+
+#define _mm512_cvt_roundps_epu64(A, B)		    \
+    ((__m512i)__builtin_ia32_cvtps2uqq512_mask((A), (__v8di)_mm512_setzero_si512 (), -1, (B)))
+
+#define _mm512_mask_cvt_roundps_epu64(W, U, A, B)   \
+    ((__m512i)__builtin_ia32_cvtps2uqq512_mask((A), (__v8di)(W), (U), (B)))
+
+#define _mm512_maskz_cvt_roundps_epu64(U, A, B)     \
+    ((__m512i)__builtin_ia32_cvtps2uqq512_mask((A), (__v8di)_mm512_setzero_si512 (), (U), (B)))
+
+#define _mm512_cvt_roundepi64_ps(A, B)		    \
+    ((__m256)__builtin_ia32_cvtqq2ps512_mask((__v8di)(A), (__v8sf)_mm256_setzero_ps(), -1, (B)))
+
+#define _mm512_mask_cvt_roundepi64_ps(W, U, A, B)   \
+    ((__m256)__builtin_ia32_cvtqq2ps512_mask((__v8di)(A), (W), (U), (B)))
+
+#define _mm512_maskz_cvt_roundepi64_ps(U, A, B)     \
+    ((__m256)__builtin_ia32_cvtqq2ps512_mask((__v8di)(A), (__v8sf)_mm256_setzero_ps(), (U), (B)))
+
+#define _mm512_cvt_roundepu64_ps(A, B)		    \
+    ((__m256)__builtin_ia32_cvtuqq2ps512_mask((__v8di)(A), (__v8sf)_mm256_setzero_ps(), -1, (B)))
+
+#define _mm512_mask_cvt_roundepu64_ps(W, U, A, B)   \
+    ((__m256)__builtin_ia32_cvtuqq2ps512_mask((__v8di)(A), (W), (U), (B)))
+
+#define _mm512_maskz_cvt_roundepu64_ps(U, A, B)     \
+    ((__m256)__builtin_ia32_cvtuqq2ps512_mask((__v8di)(A), (__v8sf)_mm256_setzero_ps(), (U), (B)))
+
+#define _mm512_cvt_roundepi64_pd(A, B)		    \
+    ((__m512d)__builtin_ia32_cvtqq2pd512_mask((__v8di)(A), (__v8df)_mm512_setzero_pd(), -1, (B)))
+
+#define _mm512_mask_cvt_roundepi64_pd(W, U, A, B)   \
+    ((__m512d)__builtin_ia32_cvtqq2pd512_mask((__v8di)(A), (W), (U), (B)))
+
+#define _mm512_maskz_cvt_roundepi64_pd(U, A, B)     \
+    ((__m512d)__builtin_ia32_cvtqq2pd512_mask((__v8di)(A), (__v8df)_mm512_setzero_pd(), (U), (B)))
+
+#define _mm512_cvt_roundepu64_pd(A, B)		    \
+    ((__m512d)__builtin_ia32_cvtuqq2pd512_mask((__v8di)(A), (__v8df)_mm512_setzero_pd(), -1, (B)))
+
+#define _mm512_mask_cvt_roundepu64_pd(W, U, A, B)   \
+    ((__m512d)__builtin_ia32_cvtuqq2pd512_mask((__v8di)(A), (W), (U), (B)))
+
+#define _mm512_maskz_cvt_roundepu64_pd(U, A, B)     \
+    ((__m512d)__builtin_ia32_cvtuqq2pd512_mask((__v8di)(A), (__v8df)_mm512_setzero_pd(), (U), (B)))
+
+#define _mm512_reduce_pd(A, B)						\
+  ((__m512d) __builtin_ia32_reducepd512_mask ((__v8df)(__m512d)(A),	\
+    (int)(B), (__v8df)_mm512_setzero_pd(), (__mmask8)-1))
+
+#define _mm512_mask_reduce_pd(W, U, A, B)				\
+  ((__m512d) __builtin_ia32_reducepd512_mask ((__v8df)(__m512d)(A),	\
+    (int)(B), (__v8df)(__m512d)(W), (__mmask8)(U)))
+
+#define _mm512_maskz_reduce_pd(U, A, B)					\
+  ((__m512d) __builtin_ia32_reducepd512_mask ((__v8df)(__m512d)(A),	\
+    (int)(B), (__v8df)_mm512_setzero_pd(), (__mmask8)(U)))
+
+#define _mm512_reduce_ps(A, B)						\
+  ((__m512) __builtin_ia32_reduceps512_mask ((__v16sf)(__m512)(A),	\
+    (int)(B), (__v16sf)_mm512_setzero_ps(), (__mmask16)-1))
+
+#define _mm512_mask_reduce_ps(W, U, A, B)				\
+  ((__m512) __builtin_ia32_reduceps512_mask ((__v16sf)(__m512)(A),	\
+    (int)(B), (__v16sf)(__m512)(W), (__mmask16)(U)))
+
+#define _mm512_maskz_reduce_ps(U, A, B)					\
+  ((__m512) __builtin_ia32_reduceps512_mask ((__v16sf)(__m512)(A),	\
+    (int)(B), (__v16sf)_mm512_setzero_ps(), (__mmask16)(U)))
+
+#define _mm512_extractf32x8_ps(X, C)                                    \
+  ((__m256) __builtin_ia32_extractf32x8_mask ((__v16sf)(__m512) (X),    \
+    (int) (C), (__v8sf)(__m256) _mm256_setzero_ps(), (__mmask8)-1))
+
+#define _mm512_mask_extractf32x8_ps(W, U, X, C)                         \
+  ((__m256) __builtin_ia32_extractf32x8_mask ((__v16sf)(__m512) (X),    \
+    (int) (C), (__v8sf)(__m256) (W), (__mmask8) (U)))
+
+#define _mm512_maskz_extractf32x8_ps(U, X, C)                           \
+  ((__m256) __builtin_ia32_extractf32x8_mask ((__v16sf)(__m512) (X),    \
+    (int) (C), (__v8sf)(__m256) _mm256_setzero_ps(), (__mmask8) (U)))
+
+#define _mm512_extractf64x2_pd(X, C)                                    \
+  ((__m128d) __builtin_ia32_extractf64x2_512_mask ((__v8df)(__m512d) (X),\
+    (int) (C), (__v2df)(__m128d) _mm_setzero_pd(), (__mmask8)-1))
+
+#define _mm512_mask_extractf64x2_pd(W, U, X, C)                         \
+  ((__m128d) __builtin_ia32_extractf64x2_512_mask ((__v8df)(__m512d) (X),\
+    (int) (C), (__v2df)(__m128d) (W), (__mmask8) (U)))
+
+#define _mm512_maskz_extractf64x2_pd(U, X, C)                           \
+  ((__m128d) __builtin_ia32_extractf64x2_512_mask ((__v8df)(__m512d) (X),\
+    (int) (C), (__v2df)(__m128d) _mm_setzero_pd(), (__mmask8) (U)))
+
+#define _mm512_extracti32x8_epi32(X, C)                                 \
+  ((__m256i) __builtin_ia32_extracti32x8_mask ((__v16si)(__m512i) (X),  \
+    (int) (C), (__v8si)(__m256i) _mm256_setzero_si256(), (__mmask8)-1))
+
+#define _mm512_mask_extracti32x8_epi32(W, U, X, C)                      \
+  ((__m256i) __builtin_ia32_extracti32x8_mask ((__v16si)(__m512i) (X),  \
+    (int) (C), (__v8si)(__m256i) (W), (__mmask8) (U)))
+
+#define _mm512_maskz_extracti32x8_epi32(U, X, C)                        \
+  ((__m256i) __builtin_ia32_extracti32x8_mask ((__v16si)(__m512i) (X),  \
+    (int) (C), (__v8si)(__m256i) _mm256_setzero_si256(), (__mmask8) (U)))
+
+#define _mm512_extracti64x2_epi64(X, C)                                 \
+  ((__m128i) __builtin_ia32_extracti64x2_512_mask ((__v8di)(__m512i) (X),\
+    (int) (C), (__v2di)(__m128i) _mm_setzero_di(), (__mmask8)-1))
+
+#define _mm512_mask_extracti64x2_epi64(W, U, X, C)                      \
+  ((__m128i) __builtin_ia32_extracti64x2_512_mask ((__v8di)(__m512i) (X),\
+    (int) (C), (__v2di)(__m128i) (W), (__mmask8) (U)))
+
+#define _mm512_maskz_extracti64x2_epi64(U, X, C)                        \
+  ((__m128i) __builtin_ia32_extracti64x2_512_mask ((__v8di)(__m512i) (X),\
+    (int) (C), (__v2di)(__m128i) _mm_setzero_di(), (__mmask8) (U)))
+
+#define _mm512_range_pd(A, B, C)					\
+  ((__m512d) __builtin_ia32_rangepd512_mask ((__v8df)(__m512d)(A),	\
+    (__v8df)(__m512d)(B), (int)(C),					\
+    (__v8df)_mm512_setzero_pd(), (__mmask8)-1, _MM_FROUND_CUR_DIRECTION))
+
+#define _mm512_mask_range_pd(W, U, A, B, C)				\
+  ((__m512d) __builtin_ia32_rangepd512_mask ((__v8df)(__m512d)(A),	\
+    (__v8df)(__m512d)(B), (int)(C),					\
+    (__v8df)(__m512d)(W), (__mmask8)(U), _MM_FROUND_CUR_DIRECTION))
+
+#define _mm512_maskz_range_pd(U, A, B, C)				\
+  ((__m512d) __builtin_ia32_rangepd512_mask ((__v8df)(__m512d)(A),	\
+    (__v8df)(__m512d)(B), (int)(C),					\
+    (__v8df)_mm512_setzero_pd(), (__mmask8)(U), _MM_FROUND_CUR_DIRECTION))
+
+#define _mm512_range_ps(A, B, C)					\
+  ((__m512) __builtin_ia32_rangeps512_mask ((__v16sf)(__m512)(A),	\
+    (__v16sf)(__m512)(B), (int)(C),					\
+    (__v16sf)_mm512_setzero_ps(), (__mmask16)-1, _MM_FROUND_CUR_DIRECTION))
+
+#define _mm512_mask_range_ps(W, U, A, B, C)				\
+  ((__m512) __builtin_ia32_rangeps512_mask ((__v16sf)(__m512)(A),	\
+    (__v16sf)(__m512)(B), (int)(C),					\
+    (__v16sf)(__m512)(W), (__mmask16)(U), _MM_FROUND_CUR_DIRECTION))
+
+#define _mm512_maskz_range_ps(U, A, B, C)				\
+  ((__m512) __builtin_ia32_rangeps512_mask ((__v16sf)(__m512)(A),	\
+    (__v16sf)(__m512)(B), (int)(C),					\
+    (__v16sf)_mm512_setzero_ps(), (__mmask16)(U), _MM_FROUND_CUR_DIRECTION))
+
+#define _mm512_range_round_pd(A, B, C, R)					\
+  ((__m512d) __builtin_ia32_rangepd512_mask ((__v8df)(__m512d)(A),	\
+    (__v8df)(__m512d)(B), (int)(C),					\
+    (__v8df)_mm512_setzero_pd(), (__mmask8)-1, (R)))
+
+#define _mm512_mask_range_round_pd(W, U, A, B, C, R)				\
+  ((__m512d) __builtin_ia32_rangepd512_mask ((__v8df)(__m512d)(A),	\
+    (__v8df)(__m512d)(B), (int)(C),					\
+    (__v8df)(__m512d)(W), (__mmask8)(U), (R)))
+
+#define _mm512_maskz_range_round_pd(U, A, B, C, R)				\
+  ((__m512d) __builtin_ia32_rangepd512_mask ((__v8df)(__m512d)(A),	\
+    (__v8df)(__m512d)(B), (int)(C),					\
+    (__v8df)_mm512_setzero_pd(), (__mmask8)(U), (R)))
+
+#define _mm512_range_round_ps(A, B, C, R)					\
+  ((__m512) __builtin_ia32_rangeps512_mask ((__v16sf)(__m512)(A),	\
+    (__v16sf)(__m512)(B), (int)(C),					\
+    (__v16sf)_mm512_setzero_ps(), (__mmask16)-1, (R)))
+
+#define _mm512_mask_range_round_ps(W, U, A, B, C, R)				\
+  ((__m512) __builtin_ia32_rangeps512_mask ((__v16sf)(__m512)(A),	\
+    (__v16sf)(__m512)(B), (int)(C),					\
+    (__v16sf)(__m512)(W), (__mmask16)(U), (R)))
+
+#define _mm512_maskz_range_round_ps(U, A, B, C, R)				\
+  ((__m512) __builtin_ia32_rangeps512_mask ((__v16sf)(__m512)(A),	\
+    (__v16sf)(__m512)(B), (int)(C),					\
+    (__v16sf)_mm512_setzero_ps(), (__mmask16)(U), (R)))
+
+#define _mm512_insertf64x2(X, Y, C)                                     \
+  ((__m512d) __builtin_ia32_insertf64x2_512_mask ((__v8df)(__m512d) (X),\
+    (__v2df)(__m128d) (Y), (int) (C), (__v8df)(__m512d) (X),            \
+    (__mmask8)-1))
+
+#define _mm512_mask_insertf64x2(W, U, X, Y, C)                          \
+  ((__m512d) __builtin_ia32_insertf64x2_512_mask ((__v8df)(__m512d) (X),\
+    (__v2df)(__m128d) (Y), (int) (C), (__v8df)(__m512d) (W),            \
+    (__mmask8) (U)))
+
+#define _mm512_maskz_insertf64x2(U, X, Y, C)                            \
+  ((__m512d) __builtin_ia32_insertf64x2_512_mask ((__v8df)(__m512d) (X),\
+    (__v2df)(__m128d) (Y), (int) (C),                                   \
+    (__v8df)(__m512d) _mm512_setzero_pd(), (__mmask8) (U)))
+
+#define _mm512_inserti64x2(X, Y, C)                                     \
+  ((__m512i) __builtin_ia32_inserti64x2_512_mask ((__v8di)(__m512i) (X),\
+    (__v2di)(__m128i) (Y), (int) (C), (__v8di)(__m512i) (X), (__mmask8)-1))
+
+#define _mm512_mask_inserti64x2(W, U, X, Y, C)                          \
+  ((__m512i) __builtin_ia32_inserti64x2_512_mask ((__v8di)(__m512i) (X),\
+    (__v2di)(__m128i) (Y), (int) (C), (__v8di)(__m512i) (W),            \
+    (__mmask8) (U)))
+
+#define _mm512_maskz_inserti64x2(U, X, Y, C)                            \
+  ((__m512i) __builtin_ia32_inserti64x2_512_mask ((__v8di)(__m512i) (X),\
+    (__v2di)(__m128i) (Y), (int) (C),                                   \
+    (__v8di)(__m512i) _mm512_setzero_si512 (), (__mmask8) (U)))
+
+#define _mm512_insertf32x8(X, Y, C)                                     \
+  ((__m512) __builtin_ia32_insertf32x8_mask ((__v16sf)(__m512) (X),     \
+    (__v8sf)(__m256) (Y), (int) (C),\
+    (__v16sf)(__m512)_mm512_setzero_ps(),\
+    (__mmask16)-1))
+
+#define _mm512_mask_insertf32x8(W, U, X, Y, C)                          \
+  ((__m512) __builtin_ia32_insertf32x8_mask ((__v16sf)(__m512) (X),     \
+    (__v8sf)(__m256) (Y), (int) (C),\
+    (__v16sf)(__m512)(W),\
+    (__mmask16)(U)))
+
+#define _mm512_maskz_insertf32x8(U, X, Y, C)                            \
+  ((__m512) __builtin_ia32_insertf32x8_mask ((__v16sf)(__m512) (X),     \
+    (__v8sf)(__m256) (Y), (int) (C),\
+    (__v16sf)(__m512)_mm512_setzero_ps(),\
+    (__mmask16)(U)))
+
+#define _mm512_inserti32x8(X, Y, C)                                     \
+  ((__m512i) __builtin_ia32_inserti32x8_mask ((__v16si)(__m512i) (X),   \
+    (__v8si)(__m256i) (Y), (int) (C),\
+    (__v16si)(__m512i)_mm512_setzero_si512 (),\
+    (__mmask16)-1))
+
+#define _mm512_mask_inserti32x8(W, U, X, Y, C)                          \
+  ((__m512i) __builtin_ia32_inserti32x8_mask ((__v16si)(__m512i) (X),   \
+    (__v8si)(__m256i) (Y), (int) (C),\
+    (__v16si)(__m512i)(W),\
+    (__mmask16)(U)))
+
+#define _mm512_maskz_inserti32x8(U, X, Y, C)                            \
+  ((__m512i) __builtin_ia32_inserti32x8_mask ((__v16si)(__m512i) (X),   \
+    (__v8si)(__m256i) (Y), (int) (C),\
+    (__v16si)(__m512i)_mm512_setzero_si512 (),\
+    (__mmask16)(U)))
+
+#define _mm_fpclass_ss_mask(X, C)						\
+  ((__mmask8) __builtin_ia32_fpclassss ((__v4sf) (__m128) (X), (int) (C)))  \
+
+#define _mm_fpclass_sd_mask(X, C)						\
+  ((__mmask8) __builtin_ia32_fpclasssd ((__v2df) (__m128d) (X), (int) (C))) \
+
+#define _mm512_mask_fpclass_pd_mask(u, X, C)                            \
+  ((__mmask8) __builtin_ia32_fpclasspd512_mask ((__v8df) (__m512d) (X), \
+						(int) (C), (__mmask8)(u)))
+
+#define _mm512_mask_fpclass_ps_mask(u, x, c)				\
+  ((__mmask16) __builtin_ia32_fpclassps512_mask ((__v16sf) (__m512) (x),\
+						 (int) (c),(__mmask8)(u)))
+
+#define _mm512_fpclass_pd_mask(X, C)                                    \
+  ((__mmask8) __builtin_ia32_fpclasspd512_mask ((__v8df) (__m512d) (X), \
+						(int) (C), (__mmask8)-1))
+
+#define _mm512_fpclass_ps_mask(x, c)                                    \
+  ((__mmask16) __builtin_ia32_fpclassps512_mask ((__v16sf) (__m512) (x),\
+						 (int) (c),(__mmask8)-1))
+
+#define _mm_reduce_sd(A, B, C)						\
+  ((__m128d) __builtin_ia32_reducesd ((__v2df)(__m128d)(A),	\
+    (__v2df)(__m128d)(B), (int)(C)))					\
+
+#define _mm_reduce_ss(A, B, C)						\
+  ((__m128) __builtin_ia32_reducess ((__v4sf)(__m128)(A),		\
+    (__v4sf)(__m128)(A), (int)(C)))					\
+
+#endif
+
+#ifdef __DISABLE_AVX512DQ__
+#undef __DISABLE_AVX512DQ__
+#pragma GCC pop_options
+#endif /* __DISABLE_AVX512DQ__ */
+
+#endif /* _AVX512DQINTRIN_H_INCLUDED */
Index: Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/avx512erintrin.h
===================================================================
--- Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/avx512erintrin.h	(revision 1046)
+++ Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/avx512erintrin.h	(revision 1046)
@@ -0,0 +1,394 @@
+/* Copyright (C) 2013-2015 Free Software Foundation, Inc.
+
+   This file is part of GCC.
+
+   GCC is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
+
+   GCC is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   Under Section 7 of GPL version 3, you are granted additional
+   permissions described in the GCC Runtime Library Exception, version
+   3.1, as published by the Free Software Foundation.
+
+   You should have received a copy of the GNU General Public License and
+   a copy of the GCC Runtime Library Exception along with this program;
+   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _IMMINTRIN_H_INCLUDED
+#error "Never use <avx512erintrin.h> directly; include <immintrin.h> instead."
+#endif
+
+#ifndef _AVX512ERINTRIN_H_INCLUDED
+#define _AVX512ERINTRIN_H_INCLUDED
+
+#ifndef __AVX512ER__
+#pragma GCC push_options
+#pragma GCC target("avx512er")
+#define __DISABLE_AVX512ER__
+#endif /* __AVX512ER__ */
+
+/* Internal data types for implementing the intrinsics.  */
+typedef double __v8df __attribute__ ((__vector_size__ (64)));
+typedef float __v16sf __attribute__ ((__vector_size__ (64)));
+
+/* The Intel API is flexible enough that we must allow aliasing with other
+   vector types, and their scalar components.  */
+typedef float __m512 __attribute__ ((__vector_size__ (64), __may_alias__));
+typedef double __m512d __attribute__ ((__vector_size__ (64), __may_alias__));
+
+typedef unsigned char  __mmask8;
+typedef unsigned short __mmask16;
+
+#ifdef __OPTIMIZE__
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_exp2a23_round_pd (__m512d __A, int __R)
+{
+  __m512d __W;
+  return (__m512d) __builtin_ia32_exp2pd_mask ((__v8df) __A,
+					       (__v8df) __W,
+					       (__mmask8) -1, __R);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_exp2a23_round_pd (__m512d __W, __mmask8 __U, __m512d __A, int __R)
+{
+  return (__m512d) __builtin_ia32_exp2pd_mask ((__v8df) __A,
+					       (__v8df) __W,
+					       (__mmask8) __U, __R);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_exp2a23_round_pd (__mmask8 __U, __m512d __A, int __R)
+{
+  return (__m512d) __builtin_ia32_exp2pd_mask ((__v8df) __A,
+					       (__v8df) _mm512_setzero_pd (),
+					       (__mmask8) __U, __R);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_exp2a23_round_ps (__m512 __A, int __R)
+{
+  __m512 __W;
+  return (__m512) __builtin_ia32_exp2ps_mask ((__v16sf) __A,
+					      (__v16sf) __W,
+					      (__mmask16) -1, __R);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_exp2a23_round_ps (__m512 __W, __mmask16 __U, __m512 __A, int __R)
+{
+  return (__m512) __builtin_ia32_exp2ps_mask ((__v16sf) __A,
+					      (__v16sf) __W,
+					      (__mmask16) __U, __R);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_exp2a23_round_ps (__mmask16 __U, __m512 __A, int __R)
+{
+  return (__m512) __builtin_ia32_exp2ps_mask ((__v16sf) __A,
+					      (__v16sf) _mm512_setzero_ps (),
+					      (__mmask16) __U, __R);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_rcp28_round_pd (__m512d __A, int __R)
+{
+  __m512d __W;
+  return (__m512d) __builtin_ia32_rcp28pd_mask ((__v8df) __A,
+						(__v8df) __W,
+						(__mmask8) -1, __R);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_rcp28_round_pd (__m512d __W, __mmask8 __U, __m512d __A, int __R)
+{
+  return (__m512d) __builtin_ia32_rcp28pd_mask ((__v8df) __A,
+						(__v8df) __W,
+						(__mmask8) __U, __R);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_rcp28_round_pd (__mmask8 __U, __m512d __A, int __R)
+{
+  return (__m512d) __builtin_ia32_rcp28pd_mask ((__v8df) __A,
+						(__v8df) _mm512_setzero_pd (),
+						(__mmask8) __U, __R);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_rcp28_round_ps (__m512 __A, int __R)
+{
+  __m512 __W;
+  return (__m512) __builtin_ia32_rcp28ps_mask ((__v16sf) __A,
+					       (__v16sf) __W,
+					       (__mmask16) -1, __R);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_rcp28_round_ps (__m512 __W, __mmask16 __U, __m512 __A, int __R)
+{
+  return (__m512) __builtin_ia32_rcp28ps_mask ((__v16sf) __A,
+					       (__v16sf) __W,
+					       (__mmask16) __U, __R);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_rcp28_round_ps (__mmask16 __U, __m512 __A, int __R)
+{
+  return (__m512) __builtin_ia32_rcp28ps_mask ((__v16sf) __A,
+					       (__v16sf) _mm512_setzero_ps (),
+					       (__mmask16) __U, __R);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_rcp28_round_sd (__m128d __A, __m128d __B, int __R)
+{
+  return (__m128d) __builtin_ia32_rcp28sd_round ((__v2df) __B,
+						 (__v2df) __A,
+						 __R);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_rcp28_round_ss (__m128 __A, __m128 __B, int __R)
+{
+  return (__m128) __builtin_ia32_rcp28ss_round ((__v4sf) __B,
+						(__v4sf) __A,
+						__R);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_rsqrt28_round_pd (__m512d __A, int __R)
+{
+  __m512d __W;
+  return (__m512d) __builtin_ia32_rsqrt28pd_mask ((__v8df) __A,
+						  (__v8df) __W,
+						  (__mmask8) -1, __R);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_rsqrt28_round_pd (__m512d __W, __mmask8 __U, __m512d __A, int __R)
+{
+  return (__m512d) __builtin_ia32_rsqrt28pd_mask ((__v8df) __A,
+						  (__v8df) __W,
+						  (__mmask8) __U, __R);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_rsqrt28_round_pd (__mmask8 __U, __m512d __A, int __R)
+{
+  return (__m512d) __builtin_ia32_rsqrt28pd_mask ((__v8df) __A,
+						  (__v8df) _mm512_setzero_pd (),
+						  (__mmask8) __U, __R);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_rsqrt28_round_ps (__m512 __A, int __R)
+{
+  __m512 __W;
+  return (__m512) __builtin_ia32_rsqrt28ps_mask ((__v16sf) __A,
+						 (__v16sf) __W,
+						 (__mmask16) -1, __R);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_rsqrt28_round_ps (__m512 __W, __mmask16 __U, __m512 __A, int __R)
+{
+  return (__m512) __builtin_ia32_rsqrt28ps_mask ((__v16sf) __A,
+						 (__v16sf) __W,
+						 (__mmask16) __U, __R);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_rsqrt28_round_ps (__mmask16 __U, __m512 __A, int __R)
+{
+  return (__m512) __builtin_ia32_rsqrt28ps_mask ((__v16sf) __A,
+						 (__v16sf) _mm512_setzero_ps (),
+						 (__mmask16) __U, __R);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_rsqrt28_round_sd (__m128d __A, __m128d __B, int __R)
+{
+  return (__m128d) __builtin_ia32_rsqrt28sd_round ((__v2df) __B,
+						   (__v2df) __A,
+						   __R);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_rsqrt28_round_ss (__m128 __A, __m128 __B, int __R)
+{
+  return (__m128) __builtin_ia32_rsqrt28ss_round ((__v4sf) __B,
+						  (__v4sf) __A,
+						  __R);
+}
+
+#else
+#define _mm512_exp2a23_round_pd(A, C)            \
+    __builtin_ia32_exp2pd_mask(A, (__v8df)_mm512_setzero_pd(), -1, C)
+
+#define _mm512_mask_exp2a23_round_pd(W, U, A, C) \
+    __builtin_ia32_exp2pd_mask(A, W, U, C)
+
+#define _mm512_maskz_exp2a23_round_pd(U, A, C)   \
+    __builtin_ia32_exp2pd_mask(A, (__v8df)_mm512_setzero_pd(), U, C)
+
+#define _mm512_exp2a23_round_ps(A, C)            \
+    __builtin_ia32_exp2ps_mask(A, (__v16sf)_mm512_setzero_ps(), -1, C)
+
+#define _mm512_mask_exp2a23_round_ps(W, U, A, C) \
+    __builtin_ia32_exp2ps_mask(A, W, U, C)
+
+#define _mm512_maskz_exp2a23_round_ps(U, A, C)   \
+    __builtin_ia32_exp2ps_mask(A, (__v16sf)_mm512_setzero_ps(), U, C)
+
+#define _mm512_rcp28_round_pd(A, C)            \
+    __builtin_ia32_rcp28pd_mask(A, (__v8df)_mm512_setzero_pd(), -1, C)
+
+#define _mm512_mask_rcp28_round_pd(W, U, A, C) \
+    __builtin_ia32_rcp28pd_mask(A, W, U, C)
+
+#define _mm512_maskz_rcp28_round_pd(U, A, C)   \
+    __builtin_ia32_rcp28pd_mask(A, (__v8df)_mm512_setzero_pd(), U, C)
+
+#define _mm512_rcp28_round_ps(A, C)            \
+    __builtin_ia32_rcp28ps_mask(A, (__v16sf)_mm512_setzero_ps(), -1, C)
+
+#define _mm512_mask_rcp28_round_ps(W, U, A, C) \
+    __builtin_ia32_rcp28ps_mask(A, W, U, C)
+
+#define _mm512_maskz_rcp28_round_ps(U, A, C)   \
+    __builtin_ia32_rcp28ps_mask(A, (__v16sf)_mm512_setzero_ps(), U, C)
+
+#define _mm512_rsqrt28_round_pd(A, C)            \
+    __builtin_ia32_rsqrt28pd_mask(A, (__v8df)_mm512_setzero_pd(), -1, C)
+
+#define _mm512_mask_rsqrt28_round_pd(W, U, A, C) \
+    __builtin_ia32_rsqrt28pd_mask(A, W, U, C)
+
+#define _mm512_maskz_rsqrt28_round_pd(U, A, C)   \
+    __builtin_ia32_rsqrt28pd_mask(A, (__v8df)_mm512_setzero_pd(), U, C)
+
+#define _mm512_rsqrt28_round_ps(A, C)            \
+    __builtin_ia32_rsqrt28ps_mask(A, (__v16sf)_mm512_setzero_ps(), -1, C)
+
+#define _mm512_mask_rsqrt28_round_ps(W, U, A, C) \
+    __builtin_ia32_rsqrt28ps_mask(A, W, U, C)
+
+#define _mm512_maskz_rsqrt28_round_ps(U, A, C)   \
+    __builtin_ia32_rsqrt28ps_mask(A, (__v16sf)_mm512_setzero_ps(), U, C)
+
+#define _mm_rcp28_round_sd(A, B, R)	\
+    __builtin_ia32_rcp28sd_round(A, B, R)
+
+#define _mm_rcp28_round_ss(A, B, R)	\
+    __builtin_ia32_rcp28ss_round(A, B, R)
+
+#define _mm_rsqrt28_round_sd(A, B, R)	\
+    __builtin_ia32_rsqrt28sd_round(A, B, R)
+
+#define _mm_rsqrt28_round_ss(A, B, R)	\
+    __builtin_ia32_rsqrt28ss_round(A, B, R)
+
+#endif
+
+#define _mm512_exp2a23_pd(A)                    \
+    _mm512_exp2a23_round_pd(A, _MM_FROUND_CUR_DIRECTION)
+
+#define _mm512_mask_exp2a23_pd(W, U, A)   \
+    _mm512_mask_exp2a23_round_pd(W, U, A, _MM_FROUND_CUR_DIRECTION)
+
+#define _mm512_maskz_exp2a23_pd(U, A)     \
+    _mm512_maskz_exp2a23_round_pd(U, A, _MM_FROUND_CUR_DIRECTION)
+
+#define _mm512_exp2a23_ps(A)                    \
+    _mm512_exp2a23_round_ps(A, _MM_FROUND_CUR_DIRECTION)
+
+#define _mm512_mask_exp2a23_ps(W, U, A)   \
+    _mm512_mask_exp2a23_round_ps(W, U, A, _MM_FROUND_CUR_DIRECTION)
+
+#define _mm512_maskz_exp2a23_ps(U, A)     \
+    _mm512_maskz_exp2a23_round_ps(U, A, _MM_FROUND_CUR_DIRECTION)
+
+#define _mm512_rcp28_pd(A)                    \
+    _mm512_rcp28_round_pd(A, _MM_FROUND_CUR_DIRECTION)
+
+#define _mm512_mask_rcp28_pd(W, U, A)   \
+    _mm512_mask_rcp28_round_pd(W, U, A, _MM_FROUND_CUR_DIRECTION)
+
+#define _mm512_maskz_rcp28_pd(U, A)     \
+    _mm512_maskz_rcp28_round_pd(U, A, _MM_FROUND_CUR_DIRECTION)
+
+#define _mm512_rcp28_ps(A)                    \
+    _mm512_rcp28_round_ps(A, _MM_FROUND_CUR_DIRECTION)
+
+#define _mm512_mask_rcp28_ps(W, U, A)   \
+    _mm512_mask_rcp28_round_ps(W, U, A, _MM_FROUND_CUR_DIRECTION)
+
+#define _mm512_maskz_rcp28_ps(U, A)     \
+    _mm512_maskz_rcp28_round_ps(U, A, _MM_FROUND_CUR_DIRECTION)
+
+#define _mm512_rsqrt28_pd(A)                    \
+    _mm512_rsqrt28_round_pd(A, _MM_FROUND_CUR_DIRECTION)
+
+#define _mm512_mask_rsqrt28_pd(W, U, A)   \
+    _mm512_mask_rsqrt28_round_pd(W, U, A, _MM_FROUND_CUR_DIRECTION)
+
+#define _mm512_maskz_rsqrt28_pd(U, A)     \
+    _mm512_maskz_rsqrt28_round_pd(U, A, _MM_FROUND_CUR_DIRECTION)
+
+#define _mm512_rsqrt28_ps(A)                    \
+    _mm512_rsqrt28_round_ps(A, _MM_FROUND_CUR_DIRECTION)
+
+#define _mm512_mask_rsqrt28_ps(W, U, A)   \
+    _mm512_mask_rsqrt28_round_ps(W, U, A, _MM_FROUND_CUR_DIRECTION)
+
+#define _mm512_maskz_rsqrt28_ps(U, A)     \
+    _mm512_maskz_rsqrt28_round_ps(U, A, _MM_FROUND_CUR_DIRECTION)
+
+#define _mm_rcp28_sd(A, B)	\
+    __builtin_ia32_rcp28sd_round(B, A, _MM_FROUND_CUR_DIRECTION)
+
+#define _mm_rcp28_ss(A, B)	\
+    __builtin_ia32_rcp28ss_round(B, A, _MM_FROUND_CUR_DIRECTION)
+
+#define _mm_rsqrt28_sd(A, B)	\
+    __builtin_ia32_rsqrt28sd_round(B, A, _MM_FROUND_CUR_DIRECTION)
+
+#define _mm_rsqrt28_ss(A, B)	\
+    __builtin_ia32_rsqrt28ss_round(B, A, _MM_FROUND_CUR_DIRECTION)
+
+#ifdef __DISABLE_AVX512ER__
+#undef __DISABLE_AVX512ER__
+#pragma GCC pop_options
+#endif /* __DISABLE_AVX512ER__ */
+
+#endif /* _AVX512ERINTRIN_H_INCLUDED */
Index: Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/avx512fintrin.h
===================================================================
--- Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/avx512fintrin.h	(revision 1046)
+++ Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/avx512fintrin.h	(revision 1046)
@@ -0,0 +1,13142 @@
+/* Copyright (C) 2013-2015 Free Software Foundation, Inc.
+
+   This file is part of GCC.
+
+   GCC is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
+
+   GCC is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   Under Section 7 of GPL version 3, you are granted additional
+   permissions described in the GCC Runtime Library Exception, version
+   3.1, as published by the Free Software Foundation.
+
+   You should have received a copy of the GNU General Public License and
+   a copy of the GCC Runtime Library Exception along with this program;
+   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _IMMINTRIN_H_INCLUDED
+#error "Never use <avx512fintrin.h> directly; include <immintrin.h> instead."
+#endif
+
+#ifndef _AVX512FINTRIN_H_INCLUDED
+#define _AVX512FINTRIN_H_INCLUDED
+
+#ifndef __AVX512F__
+#pragma GCC push_options
+#pragma GCC target("avx512f")
+#define __DISABLE_AVX512F__
+#endif /* __AVX512F__ */
+
+/* Internal data types for implementing the intrinsics.  */
+typedef double __v8df __attribute__ ((__vector_size__ (64)));
+typedef float __v16sf __attribute__ ((__vector_size__ (64)));
+typedef long long __v8di __attribute__ ((__vector_size__ (64)));
+typedef unsigned long long __v8du __attribute__ ((__vector_size__ (64)));
+typedef int __v16si __attribute__ ((__vector_size__ (64)));
+typedef unsigned int __v16su __attribute__ ((__vector_size__ (64)));
+typedef short __v32hi __attribute__ ((__vector_size__ (64)));
+typedef unsigned short __v32hu __attribute__ ((__vector_size__ (64)));
+typedef char __v64qi __attribute__ ((__vector_size__ (64)));
+typedef unsigned char __v64qu __attribute__ ((__vector_size__ (64)));
+
+/* The Intel API is flexible enough that we must allow aliasing with other
+   vector types, and their scalar components.  */
+typedef float __m512 __attribute__ ((__vector_size__ (64), __may_alias__));
+typedef long long __m512i __attribute__ ((__vector_size__ (64), __may_alias__));
+typedef double __m512d __attribute__ ((__vector_size__ (64), __may_alias__));
+
+typedef unsigned char  __mmask8;
+typedef unsigned short __mmask16;
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_set_epi64 (long long __A, long long __B, long long __C,
+		  long long __D, long long __E, long long __F,
+		  long long __G, long long __H)
+{
+  return __extension__ (__m512i) (__v8di)
+	 { __H, __G, __F, __E, __D, __C, __B, __A };
+}
+
+/* Create the vector [A B C D E F G H I J K L M N O P].  */
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_set_epi32 (int __A, int __B, int __C, int __D,
+		  int __E, int __F, int __G, int __H,
+		  int __I, int __J, int __K, int __L,
+		  int __M, int __N, int __O, int __P)
+{
+  return __extension__ (__m512i)(__v16si)
+	 { __P, __O, __N, __M, __L, __K, __J, __I,
+	   __H, __G, __F, __E, __D, __C, __B, __A };
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_set_pd (double __A, double __B, double __C, double __D,
+	       double __E, double __F, double __G, double __H)
+{
+  return __extension__ (__m512d)
+	 { __H, __G, __F, __E, __D, __C, __B, __A };
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_set_ps (float __A, float __B, float __C, float __D,
+	       float __E, float __F, float __G, float __H,
+	       float __I, float __J, float __K, float __L,
+	       float __M, float __N, float __O, float __P)
+{
+  return __extension__ (__m512)
+	 { __P, __O, __N, __M, __L, __K, __J, __I,
+	   __H, __G, __F, __E, __D, __C, __B, __A };
+}
+
+#define _mm512_setr_epi64(e0,e1,e2,e3,e4,e5,e6,e7)			      \
+  _mm512_set_epi64(e7,e6,e5,e4,e3,e2,e1,e0)
+
+#define _mm512_setr_epi32(e0,e1,e2,e3,e4,e5,e6,e7,			      \
+			  e8,e9,e10,e11,e12,e13,e14,e15)		      \
+  _mm512_set_epi32(e15,e14,e13,e12,e11,e10,e9,e8,e7,e6,e5,e4,e3,e2,e1,e0)
+
+#define _mm512_setr_pd(e0,e1,e2,e3,e4,e5,e6,e7)				      \
+  _mm512_set_pd(e7,e6,e5,e4,e3,e2,e1,e0)
+
+#define _mm512_setr_ps(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10,e11,e12,e13,e14,e15) \
+  _mm512_set_ps(e15,e14,e13,e12,e11,e10,e9,e8,e7,e6,e5,e4,e3,e2,e1,e0)
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_undefined_ps (void)
+{
+  __m512 __Y = __Y;
+  return __Y;
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_undefined_pd (void)
+{
+  __m512d __Y = __Y;
+  return __Y;
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_undefined_si512 (void)
+{
+  __m512i __Y = __Y;
+  return __Y;
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_set1_epi8 (char __A)
+{
+  return __extension__ (__m512i)(__v64qi)
+	 { __A, __A, __A, __A, __A, __A, __A, __A,
+	   __A, __A, __A, __A, __A, __A, __A, __A,
+	   __A, __A, __A, __A, __A, __A, __A, __A,
+	   __A, __A, __A, __A, __A, __A, __A, __A,
+	   __A, __A, __A, __A, __A, __A, __A, __A,
+	   __A, __A, __A, __A, __A, __A, __A, __A,
+	   __A, __A, __A, __A, __A, __A, __A, __A,
+	   __A, __A, __A, __A, __A, __A, __A, __A };
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_set1_epi16 (short __A)
+{
+  return __extension__ (__m512i)(__v32hi)
+	 { __A, __A, __A, __A, __A, __A, __A, __A,
+	   __A, __A, __A, __A, __A, __A, __A, __A,
+	   __A, __A, __A, __A, __A, __A, __A, __A,
+	   __A, __A, __A, __A, __A, __A, __A, __A };
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_set1_pd (double __A)
+{
+  return (__m512d) __builtin_ia32_broadcastsd512 (__extension__
+						  (__v2df) { __A, },
+						  (__v8df)
+						  _mm512_undefined_pd (),
+						  (__mmask8) -1);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_set1_ps (float __A)
+{
+  return (__m512) __builtin_ia32_broadcastss512 (__extension__
+						 (__v4sf) { __A, },
+						 (__v16sf)
+						 _mm512_undefined_ps (),
+						 (__mmask16) -1);
+}
+
+/* Create the vector [A B C D A B C D A B C D A B C D].  */
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_set4_epi32 (int __A, int __B, int __C, int __D)
+{
+  return __extension__ (__m512i)(__v16si)
+	 { __D, __C, __B, __A, __D, __C, __B, __A,
+	   __D, __C, __B, __A, __D, __C, __B, __A };
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_set4_epi64 (long long __A, long long __B, long long __C,
+		   long long __D)
+{
+  return __extension__ (__m512i) (__v8di)
+	 { __D, __C, __B, __A, __D, __C, __B, __A };
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_set4_pd (double __A, double __B, double __C, double __D)
+{
+  return __extension__ (__m512d)
+	 { __D, __C, __B, __A, __D, __C, __B, __A };
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_set4_ps (float __A, float __B, float __C, float __D)
+{
+  return __extension__ (__m512)
+	 { __D, __C, __B, __A, __D, __C, __B, __A,
+	   __D, __C, __B, __A, __D, __C, __B, __A };
+}
+
+#define _mm512_setr4_epi64(e0,e1,e2,e3)					      \
+  _mm512_set4_epi64(e3,e2,e1,e0)
+
+#define _mm512_setr4_epi32(e0,e1,e2,e3)					      \
+  _mm512_set4_epi32(e3,e2,e1,e0)
+
+#define _mm512_setr4_pd(e0,e1,e2,e3)					      \
+  _mm512_set4_pd(e3,e2,e1,e0)
+
+#define _mm512_setr4_ps(e0,e1,e2,e3)					      \
+  _mm512_set4_ps(e3,e2,e1,e0)
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_setzero_ps (void)
+{
+  return __extension__ (__m512){ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
+				 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_setzero_pd (void)
+{
+  return __extension__ (__m512d) { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_setzero_epi32 (void)
+{
+  return __extension__ (__m512i)(__v8di){ 0, 0, 0, 0, 0, 0, 0, 0 };
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_setzero_si512 (void)
+{
+  return __extension__ (__m512i)(__v8di){ 0, 0, 0, 0, 0, 0, 0, 0 };
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_mov_pd (__m512d __W, __mmask8 __U, __m512d __A)
+{
+  return (__m512d) __builtin_ia32_movapd512_mask ((__v8df) __A,
+						  (__v8df) __W,
+						  (__mmask8) __U);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_mov_pd (__mmask8 __U, __m512d __A)
+{
+  return (__m512d) __builtin_ia32_movapd512_mask ((__v8df) __A,
+						  (__v8df)
+						  _mm512_setzero_pd (),
+						  (__mmask8) __U);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_mov_ps (__m512 __W, __mmask16 __U, __m512 __A)
+{
+  return (__m512) __builtin_ia32_movaps512_mask ((__v16sf) __A,
+						 (__v16sf) __W,
+						 (__mmask16) __U);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_mov_ps (__mmask16 __U, __m512 __A)
+{
+  return (__m512) __builtin_ia32_movaps512_mask ((__v16sf) __A,
+						 (__v16sf)
+						 _mm512_setzero_ps (),
+						 (__mmask16) __U);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_load_pd (void const *__P)
+{
+  return *(__m512d *) __P;
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_load_pd (__m512d __W, __mmask8 __U, void const *__P)
+{
+  return (__m512d) __builtin_ia32_loadapd512_mask ((const __v8df *) __P,
+						   (__v8df) __W,
+						   (__mmask8) __U);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_load_pd (__mmask8 __U, void const *__P)
+{
+  return (__m512d) __builtin_ia32_loadapd512_mask ((const __v8df *) __P,
+						   (__v8df)
+						   _mm512_setzero_pd (),
+						   (__mmask8) __U);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_store_pd (void *__P, __m512d __A)
+{
+  *(__m512d *) __P = __A;
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_store_pd (void *__P, __mmask8 __U, __m512d __A)
+{
+  __builtin_ia32_storeapd512_mask ((__v8df *) __P, (__v8df) __A,
+				   (__mmask8) __U);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_load_ps (void const *__P)
+{
+  return *(__m512 *) __P;
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_load_ps (__m512 __W, __mmask16 __U, void const *__P)
+{
+  return (__m512) __builtin_ia32_loadaps512_mask ((const __v16sf *) __P,
+						  (__v16sf) __W,
+						  (__mmask16) __U);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_load_ps (__mmask16 __U, void const *__P)
+{
+  return (__m512) __builtin_ia32_loadaps512_mask ((const __v16sf *) __P,
+						  (__v16sf)
+						  _mm512_setzero_ps (),
+						  (__mmask16) __U);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_store_ps (void *__P, __m512 __A)
+{
+  *(__m512 *) __P = __A;
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_store_ps (void *__P, __mmask16 __U, __m512 __A)
+{
+  __builtin_ia32_storeaps512_mask ((__v16sf *) __P, (__v16sf) __A,
+				   (__mmask16) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_mov_epi64 (__m512i __W, __mmask8 __U, __m512i __A)
+{
+  return (__m512i) __builtin_ia32_movdqa64_512_mask ((__v8di) __A,
+						     (__v8di) __W,
+						     (__mmask8) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_mov_epi64 (__mmask8 __U, __m512i __A)
+{
+  return (__m512i) __builtin_ia32_movdqa64_512_mask ((__v8di) __A,
+						     (__v8di)
+						     _mm512_setzero_si512 (),
+						     (__mmask8) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_load_epi64 (void const *__P)
+{
+  return *(__m512i *) __P;
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_load_epi64 (__m512i __W, __mmask8 __U, void const *__P)
+{
+  return (__m512i) __builtin_ia32_movdqa64load512_mask ((const __v8di *) __P,
+							(__v8di) __W,
+							(__mmask8) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_load_epi64 (__mmask8 __U, void const *__P)
+{
+  return (__m512i) __builtin_ia32_movdqa64load512_mask ((const __v8di *) __P,
+							(__v8di)
+							_mm512_setzero_si512 (),
+							(__mmask8) __U);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_store_epi64 (void *__P, __m512i __A)
+{
+  *(__m512i *) __P = __A;
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_store_epi64 (void *__P, __mmask8 __U, __m512i __A)
+{
+  __builtin_ia32_movdqa64store512_mask ((__v8di *) __P, (__v8di) __A,
+					(__mmask8) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_mov_epi32 (__m512i __W, __mmask16 __U, __m512i __A)
+{
+  return (__m512i) __builtin_ia32_movdqa32_512_mask ((__v16si) __A,
+						     (__v16si) __W,
+						     (__mmask16) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_mov_epi32 (__mmask16 __U, __m512i __A)
+{
+  return (__m512i) __builtin_ia32_movdqa32_512_mask ((__v16si) __A,
+						     (__v16si)
+						     _mm512_setzero_si512 (),
+						     (__mmask16) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_load_si512 (void const *__P)
+{
+  return *(__m512i *) __P;
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_load_epi32 (void const *__P)
+{
+  return *(__m512i *) __P;
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_load_epi32 (__m512i __W, __mmask16 __U, void const *__P)
+{
+  return (__m512i) __builtin_ia32_movdqa32load512_mask ((const __v16si *) __P,
+							(__v16si) __W,
+							(__mmask16) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_load_epi32 (__mmask16 __U, void const *__P)
+{
+  return (__m512i) __builtin_ia32_movdqa32load512_mask ((const __v16si *) __P,
+							(__v16si)
+							_mm512_setzero_si512 (),
+							(__mmask16) __U);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_store_si512 (void *__P, __m512i __A)
+{
+  *(__m512i *) __P = __A;
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_store_epi32 (void *__P, __m512i __A)
+{
+  *(__m512i *) __P = __A;
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_store_epi32 (void *__P, __mmask16 __U, __m512i __A)
+{
+  __builtin_ia32_movdqa32store512_mask ((__v16si *) __P, (__v16si) __A,
+					(__mmask16) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mullo_epi32 (__m512i __A, __m512i __B)
+{
+  return (__m512i) ((__v16su) __A * (__v16su) __B);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_mullo_epi32 (__mmask16 __M, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pmulld512_mask ((__v16si) __A,
+						  (__v16si) __B,
+						  (__v16si)
+						  _mm512_setzero_si512 (),
+						  __M);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_mullo_epi32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pmulld512_mask ((__v16si) __A,
+						  (__v16si) __B,
+						  (__v16si) __W, __M);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_sllv_epi32 (__m512i __X, __m512i __Y)
+{
+  return (__m512i) __builtin_ia32_psllv16si_mask ((__v16si) __X,
+						  (__v16si) __Y,
+						  (__v16si)
+						  _mm512_undefined_si512 (),
+						  (__mmask16) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_sllv_epi32 (__m512i __W, __mmask16 __U, __m512i __X, __m512i __Y)
+{
+  return (__m512i) __builtin_ia32_psllv16si_mask ((__v16si) __X,
+						  (__v16si) __Y,
+						  (__v16si) __W,
+						  (__mmask16) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_sllv_epi32 (__mmask16 __U, __m512i __X, __m512i __Y)
+{
+  return (__m512i) __builtin_ia32_psllv16si_mask ((__v16si) __X,
+						  (__v16si) __Y,
+						  (__v16si)
+						  _mm512_setzero_si512 (),
+						  (__mmask16) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_srav_epi32 (__m512i __X, __m512i __Y)
+{
+  return (__m512i) __builtin_ia32_psrav16si_mask ((__v16si) __X,
+						  (__v16si) __Y,
+						  (__v16si)
+						  _mm512_undefined_si512 (),
+						  (__mmask16) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_srav_epi32 (__m512i __W, __mmask16 __U, __m512i __X, __m512i __Y)
+{
+  return (__m512i) __builtin_ia32_psrav16si_mask ((__v16si) __X,
+						  (__v16si) __Y,
+						  (__v16si) __W,
+						  (__mmask16) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_srav_epi32 (__mmask16 __U, __m512i __X, __m512i __Y)
+{
+  return (__m512i) __builtin_ia32_psrav16si_mask ((__v16si) __X,
+						  (__v16si) __Y,
+						  (__v16si)
+						  _mm512_setzero_si512 (),
+						  (__mmask16) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_srlv_epi32 (__m512i __X, __m512i __Y)
+{
+  return (__m512i) __builtin_ia32_psrlv16si_mask ((__v16si) __X,
+						  (__v16si) __Y,
+						  (__v16si)
+						  _mm512_undefined_si512 (),
+						  (__mmask16) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_srlv_epi32 (__m512i __W, __mmask16 __U, __m512i __X, __m512i __Y)
+{
+  return (__m512i) __builtin_ia32_psrlv16si_mask ((__v16si) __X,
+						  (__v16si) __Y,
+						  (__v16si) __W,
+						  (__mmask16) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_srlv_epi32 (__mmask16 __U, __m512i __X, __m512i __Y)
+{
+  return (__m512i) __builtin_ia32_psrlv16si_mask ((__v16si) __X,
+						  (__v16si) __Y,
+						  (__v16si)
+						  _mm512_setzero_si512 (),
+						  (__mmask16) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_add_epi64 (__m512i __A, __m512i __B)
+{
+  return (__m512i) ((__v8du) __A + (__v8du) __B);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_add_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_paddq512_mask ((__v8di) __A,
+						 (__v8di) __B,
+						 (__v8di) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_add_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_paddq512_mask ((__v8di) __A,
+						 (__v8di) __B,
+						 (__v8di)
+						 _mm512_setzero_si512 (),
+						 (__mmask8) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_sub_epi64 (__m512i __A, __m512i __B)
+{
+  return (__m512i) ((__v8du) __A - (__v8du) __B);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_sub_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_psubq512_mask ((__v8di) __A,
+						 (__v8di) __B,
+						 (__v8di) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_sub_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_psubq512_mask ((__v8di) __A,
+						 (__v8di) __B,
+						 (__v8di)
+						 _mm512_setzero_si512 (),
+						 (__mmask8) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_sllv_epi64 (__m512i __X, __m512i __Y)
+{
+  return (__m512i) __builtin_ia32_psllv8di_mask ((__v8di) __X,
+						 (__v8di) __Y,
+						 (__v8di)
+						 _mm512_undefined_pd (),
+						 (__mmask8) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_sllv_epi64 (__m512i __W, __mmask8 __U, __m512i __X, __m512i __Y)
+{
+  return (__m512i) __builtin_ia32_psllv8di_mask ((__v8di) __X,
+						 (__v8di) __Y,
+						 (__v8di) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_sllv_epi64 (__mmask8 __U, __m512i __X, __m512i __Y)
+{
+  return (__m512i) __builtin_ia32_psllv8di_mask ((__v8di) __X,
+						 (__v8di) __Y,
+						 (__v8di)
+						 _mm512_setzero_si512 (),
+						 (__mmask8) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_srav_epi64 (__m512i __X, __m512i __Y)
+{
+  return (__m512i) __builtin_ia32_psrav8di_mask ((__v8di) __X,
+						 (__v8di) __Y,
+						 (__v8di)
+						 _mm512_undefined_si512 (),
+						 (__mmask8) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_srav_epi64 (__m512i __W, __mmask8 __U, __m512i __X, __m512i __Y)
+{
+  return (__m512i) __builtin_ia32_psrav8di_mask ((__v8di) __X,
+						 (__v8di) __Y,
+						 (__v8di) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_srav_epi64 (__mmask8 __U, __m512i __X, __m512i __Y)
+{
+  return (__m512i) __builtin_ia32_psrav8di_mask ((__v8di) __X,
+						 (__v8di) __Y,
+						 (__v8di)
+						 _mm512_setzero_si512 (),
+						 (__mmask8) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_srlv_epi64 (__m512i __X, __m512i __Y)
+{
+  return (__m512i) __builtin_ia32_psrlv8di_mask ((__v8di) __X,
+						 (__v8di) __Y,
+						 (__v8di)
+						 _mm512_undefined_si512 (),
+						 (__mmask8) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_srlv_epi64 (__m512i __W, __mmask8 __U, __m512i __X, __m512i __Y)
+{
+  return (__m512i) __builtin_ia32_psrlv8di_mask ((__v8di) __X,
+						 (__v8di) __Y,
+						 (__v8di) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_srlv_epi64 (__mmask8 __U, __m512i __X, __m512i __Y)
+{
+  return (__m512i) __builtin_ia32_psrlv8di_mask ((__v8di) __X,
+						 (__v8di) __Y,
+						 (__v8di)
+						 _mm512_setzero_si512 (),
+						 (__mmask8) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_add_epi32 (__m512i __A, __m512i __B)
+{
+  return (__m512i) ((__v16su) __A + (__v16su) __B);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_add_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_paddd512_mask ((__v16si) __A,
+						 (__v16si) __B,
+						 (__v16si) __W,
+						 (__mmask16) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_add_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_paddd512_mask ((__v16si) __A,
+						 (__v16si) __B,
+						 (__v16si)
+						 _mm512_setzero_si512 (),
+						 (__mmask16) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mul_epi32 (__m512i __X, __m512i __Y)
+{
+  return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X,
+						  (__v16si) __Y,
+						  (__v8di)
+						  _mm512_undefined_si512 (),
+						  (__mmask8) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_mul_epi32 (__m512i __W, __mmask8 __M, __m512i __X, __m512i __Y)
+{
+  return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X,
+						  (__v16si) __Y,
+						  (__v8di) __W, __M);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_mul_epi32 (__mmask8 __M, __m512i __X, __m512i __Y)
+{
+  return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X,
+						  (__v16si) __Y,
+						  (__v8di)
+						  _mm512_setzero_si512 (),
+						  __M);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_sub_epi32 (__m512i __A, __m512i __B)
+{
+  return (__m512i) ((__v16su) __A - (__v16su) __B);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_sub_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_psubd512_mask ((__v16si) __A,
+						 (__v16si) __B,
+						 (__v16si) __W,
+						 (__mmask16) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_sub_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_psubd512_mask ((__v16si) __A,
+						 (__v16si) __B,
+						 (__v16si)
+						 _mm512_setzero_si512 (),
+						 (__mmask16) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mul_epu32 (__m512i __X, __m512i __Y)
+{
+  return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X,
+						   (__v16si) __Y,
+						   (__v8di)
+						   _mm512_undefined_si512 (),
+						   (__mmask8) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_mul_epu32 (__m512i __W, __mmask8 __M, __m512i __X, __m512i __Y)
+{
+  return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X,
+						   (__v16si) __Y,
+						   (__v8di) __W, __M);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_mul_epu32 (__mmask8 __M, __m512i __X, __m512i __Y)
+{
+  return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X,
+						   (__v16si) __Y,
+						   (__v8di)
+						   _mm512_setzero_si512 (),
+						   __M);
+}
+
+#ifdef __OPTIMIZE__
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_slli_epi64 (__m512i __A, unsigned int __B)
+{
+  return (__m512i) __builtin_ia32_psllqi512_mask ((__v8di) __A, __B,
+						  (__v8di)
+						  _mm512_undefined_si512 (),
+						  (__mmask8) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_slli_epi64 (__m512i __W, __mmask8 __U, __m512i __A,
+			unsigned int __B)
+{
+  return (__m512i) __builtin_ia32_psllqi512_mask ((__v8di) __A, __B,
+						  (__v8di) __W,
+						  (__mmask8) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_slli_epi64 (__mmask8 __U, __m512i __A, unsigned int __B)
+{
+  return (__m512i) __builtin_ia32_psllqi512_mask ((__v8di) __A, __B,
+						  (__v8di)
+						  _mm512_setzero_si512 (),
+						  (__mmask8) __U);
+}
+#else
+#define _mm512_slli_epi64(X, C)						   \
+  ((__m512i) __builtin_ia32_psllqi512_mask ((__v8di)(__m512i)(X), (int)(C),\
+    (__v8di)(__m512i)_mm512_undefined_si512 (),\
+    (__mmask8)-1))
+
+#define _mm512_mask_slli_epi64(W, U, X, C)				   \
+  ((__m512i) __builtin_ia32_psllqi512_mask ((__v8di)(__m512i)(X), (int)(C),\
+    (__v8di)(__m512i)(W),\
+    (__mmask8)(U)))
+
+#define _mm512_maskz_slli_epi64(U, X, C)                                   \
+  ((__m512i) __builtin_ia32_psllqi512_mask ((__v8di)(__m512i)(X), (int)(C),\
+    (__v8di)(__m512i)_mm512_setzero_si512 (),\
+    (__mmask8)(U)))
+#endif
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_sll_epi64 (__m512i __A, __m128i __B)
+{
+  return (__m512i) __builtin_ia32_psllq512_mask ((__v8di) __A,
+						 (__v2di) __B,
+						 (__v8di)
+						 _mm512_undefined_si512 (),
+						 (__mmask8) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_sll_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m128i __B)
+{
+  return (__m512i) __builtin_ia32_psllq512_mask ((__v8di) __A,
+						 (__v2di) __B,
+						 (__v8di) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_sll_epi64 (__mmask8 __U, __m512i __A, __m128i __B)
+{
+  return (__m512i) __builtin_ia32_psllq512_mask ((__v8di) __A,
+						 (__v2di) __B,
+						 (__v8di)
+						 _mm512_setzero_si512 (),
+						 (__mmask8) __U);
+}
+
+#ifdef __OPTIMIZE__
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_srli_epi64 (__m512i __A, unsigned int __B)
+{
+  return (__m512i) __builtin_ia32_psrlqi512_mask ((__v8di) __A, __B,
+						  (__v8di)
+						  _mm512_undefined_si512 (),
+						  (__mmask8) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_srli_epi64 (__m512i __W, __mmask8 __U,
+			__m512i __A, unsigned int __B)
+{
+  return (__m512i) __builtin_ia32_psrlqi512_mask ((__v8di) __A, __B,
+						  (__v8di) __W,
+						  (__mmask8) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_srli_epi64 (__mmask8 __U, __m512i __A, unsigned int __B)
+{
+  return (__m512i) __builtin_ia32_psrlqi512_mask ((__v8di) __A, __B,
+						  (__v8di)
+						  _mm512_setzero_si512 (),
+						  (__mmask8) __U);
+}
+#else
+#define _mm512_srli_epi64(X, C)						   \
+  ((__m512i) __builtin_ia32_psrlqi512_mask ((__v8di)(__m512i)(X), (int)(C),\
+    (__v8di)(__m512i)_mm512_undefined_si512 (),\
+    (__mmask8)-1))
+
+#define _mm512_mask_srli_epi64(W, U, X, C)				   \
+  ((__m512i) __builtin_ia32_psrlqi512_mask ((__v8di)(__m512i)(X), (int)(C),\
+    (__v8di)(__m512i)(W),\
+    (__mmask8)(U)))
+
+#define _mm512_maskz_srli_epi64(U, X, C)                                   \
+  ((__m512i) __builtin_ia32_psrlqi512_mask ((__v8di)(__m512i)(X), (int)(C),\
+    (__v8di)(__m512i)_mm512_setzero_si512 (),\
+    (__mmask8)(U)))
+#endif
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_srl_epi64 (__m512i __A, __m128i __B)
+{
+  return (__m512i) __builtin_ia32_psrlq512_mask ((__v8di) __A,
+						 (__v2di) __B,
+						 (__v8di)
+						 _mm512_undefined_si512 (),
+						 (__mmask8) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_srl_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m128i __B)
+{
+  return (__m512i) __builtin_ia32_psrlq512_mask ((__v8di) __A,
+						 (__v2di) __B,
+						 (__v8di) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_srl_epi64 (__mmask8 __U, __m512i __A, __m128i __B)
+{
+  return (__m512i) __builtin_ia32_psrlq512_mask ((__v8di) __A,
+						 (__v2di) __B,
+						 (__v8di)
+						 _mm512_setzero_si512 (),
+						 (__mmask8) __U);
+}
+
+#ifdef __OPTIMIZE__
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_srai_epi64 (__m512i __A, unsigned int __B)
+{
+  return (__m512i) __builtin_ia32_psraqi512_mask ((__v8di) __A, __B,
+						  (__v8di)
+						  _mm512_undefined_si512 (),
+						  (__mmask8) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_srai_epi64 (__m512i __W, __mmask8 __U, __m512i __A,
+			unsigned int __B)
+{
+  return (__m512i) __builtin_ia32_psraqi512_mask ((__v8di) __A, __B,
+						  (__v8di) __W,
+						  (__mmask8) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_srai_epi64 (__mmask8 __U, __m512i __A, unsigned int __B)
+{
+  return (__m512i) __builtin_ia32_psraqi512_mask ((__v8di) __A, __B,
+						  (__v8di)
+						  _mm512_setzero_si512 (),
+						  (__mmask8) __U);
+}
+#else
+#define _mm512_srai_epi64(X, C)						   \
+  ((__m512i) __builtin_ia32_psraqi512_mask ((__v8di)(__m512i)(X), (int)(C),\
+    (__v8di)(__m512i)_mm512_undefined_si512 (),\
+    (__mmask8)-1))
+
+#define _mm512_mask_srai_epi64(W, U, X, C)				   \
+  ((__m512i) __builtin_ia32_psraqi512_mask ((__v8di)(__m512i)(X), (int)(C),\
+    (__v8di)(__m512i)(W),\
+    (__mmask8)(U)))
+
+#define _mm512_maskz_srai_epi64(U, X, C)				   \
+  ((__m512i) __builtin_ia32_psraqi512_mask ((__v8di)(__m512i)(X), (int)(C),\
+    (__v8di)(__m512i)_mm512_setzero_si512 (),\
+    (__mmask8)(U)))
+#endif
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_sra_epi64 (__m512i __A, __m128i __B)
+{
+  return (__m512i) __builtin_ia32_psraq512_mask ((__v8di) __A,
+						 (__v2di) __B,
+						 (__v8di)
+						 _mm512_undefined_si512 (),
+						 (__mmask8) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_sra_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m128i __B)
+{
+  return (__m512i) __builtin_ia32_psraq512_mask ((__v8di) __A,
+						 (__v2di) __B,
+						 (__v8di) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_sra_epi64 (__mmask8 __U, __m512i __A, __m128i __B)
+{
+  return (__m512i) __builtin_ia32_psraq512_mask ((__v8di) __A,
+						 (__v2di) __B,
+						 (__v8di)
+						 _mm512_setzero_si512 (),
+						 (__mmask8) __U);
+}
+
+#ifdef __OPTIMIZE__
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_slli_epi32 (__m512i __A, unsigned int __B)
+{
+  return (__m512i) __builtin_ia32_pslldi512_mask ((__v16si) __A, __B,
+						  (__v16si)
+						  _mm512_undefined_si512 (),
+						  (__mmask16) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_slli_epi32 (__m512i __W, __mmask16 __U, __m512i __A,
+			unsigned int __B)
+{
+  return (__m512i) __builtin_ia32_pslldi512_mask ((__v16si) __A, __B,
+						  (__v16si) __W,
+						  (__mmask16) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_slli_epi32 (__mmask16 __U, __m512i __A, unsigned int __B)
+{
+  return (__m512i) __builtin_ia32_pslldi512_mask ((__v16si) __A, __B,
+						  (__v16si)
+						  _mm512_setzero_si512 (),
+						  (__mmask16) __U);
+}
+#else
+#define _mm512_slli_epi32(X, C)						    \
+  ((__m512i) __builtin_ia32_pslldi512_mask ((__v16si)(__m512i)(X), (int)(C),\
+    (__v16si)(__m512i)_mm512_undefined_si512 (),\
+    (__mmask16)-1))
+
+#define _mm512_mask_slli_epi32(W, U, X, C)                                  \
+  ((__m512i) __builtin_ia32_pslldi512_mask ((__v16si)(__m512i)(X), (int)(C),\
+    (__v16si)(__m512i)(W),\
+    (__mmask16)(U)))
+
+#define _mm512_maskz_slli_epi32(U, X, C)                                    \
+  ((__m512i) __builtin_ia32_pslldi512_mask ((__v16si)(__m512i)(X), (int)(C),\
+    (__v16si)(__m512i)_mm512_setzero_si512 (),\
+    (__mmask16)(U)))
+#endif
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_sll_epi32 (__m512i __A, __m128i __B)
+{
+  return (__m512i) __builtin_ia32_pslld512_mask ((__v16si) __A,
+						 (__v4si) __B,
+						 (__v16si)
+						 _mm512_undefined_si512 (),
+						 (__mmask16) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_sll_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m128i __B)
+{
+  return (__m512i) __builtin_ia32_pslld512_mask ((__v16si) __A,
+						 (__v4si) __B,
+						 (__v16si) __W,
+						 (__mmask16) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_sll_epi32 (__mmask16 __U, __m512i __A, __m128i __B)
+{
+  return (__m512i) __builtin_ia32_pslld512_mask ((__v16si) __A,
+						 (__v4si) __B,
+						 (__v16si)
+						 _mm512_setzero_si512 (),
+						 (__mmask16) __U);
+}
+
+#ifdef __OPTIMIZE__
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_srli_epi32 (__m512i __A, unsigned int __B)
+{
+  return (__m512i) __builtin_ia32_psrldi512_mask ((__v16si) __A, __B,
+						  (__v16si)
+						  _mm512_undefined_si512 (),
+						  (__mmask16) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_srli_epi32 (__m512i __W, __mmask16 __U,
+			__m512i __A, unsigned int __B)
+{
+  return (__m512i) __builtin_ia32_psrldi512_mask ((__v16si) __A, __B,
+						  (__v16si) __W,
+						  (__mmask16) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_srli_epi32 (__mmask16 __U, __m512i __A, unsigned int __B)
+{
+  return (__m512i) __builtin_ia32_psrldi512_mask ((__v16si) __A, __B,
+						  (__v16si)
+						  _mm512_setzero_si512 (),
+						  (__mmask16) __U);
+}
+#else
+#define _mm512_srli_epi32(X, C)						    \
+  ((__m512i) __builtin_ia32_psrldi512_mask ((__v16si)(__m512i)(X), (int)(C),\
+    (__v16si)(__m512i)_mm512_undefined_si512 (),\
+    (__mmask16)-1))
+
+#define _mm512_mask_srli_epi32(W, U, X, C)                                  \
+  ((__m512i) __builtin_ia32_psrldi512_mask ((__v16si)(__m512i)(X), (int)(C),\
+    (__v16si)(__m512i)(W),\
+    (__mmask16)(U)))
+
+#define _mm512_maskz_srli_epi32(U, X, C)				    \
+  ((__m512i) __builtin_ia32_psrldi512_mask ((__v16si)(__m512i)(X), (int)(C),\
+    (__v16si)(__m512i)_mm512_setzero_si512 (),\
+    (__mmask16)(U)))
+#endif
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_srl_epi32 (__m512i __A, __m128i __B)
+{
+  return (__m512i) __builtin_ia32_psrld512_mask ((__v16si) __A,
+						 (__v4si) __B,
+						 (__v16si)
+						 _mm512_undefined_si512 (),
+						 (__mmask16) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_srl_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m128i __B)
+{
+  return (__m512i) __builtin_ia32_psrld512_mask ((__v16si) __A,
+						 (__v4si) __B,
+						 (__v16si) __W,
+						 (__mmask16) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_srl_epi32 (__mmask16 __U, __m512i __A, __m128i __B)
+{
+  return (__m512i) __builtin_ia32_psrld512_mask ((__v16si) __A,
+						 (__v4si) __B,
+						 (__v16si)
+						 _mm512_setzero_si512 (),
+						 (__mmask16) __U);
+}
+
+#ifdef __OPTIMIZE__
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_srai_epi32 (__m512i __A, unsigned int __B)
+{
+  return (__m512i) __builtin_ia32_psradi512_mask ((__v16si) __A, __B,
+						  (__v16si)
+						  _mm512_undefined_si512 (),
+						  (__mmask16) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_srai_epi32 (__m512i __W, __mmask16 __U, __m512i __A,
+			unsigned int __B)
+{
+  return (__m512i) __builtin_ia32_psradi512_mask ((__v16si) __A, __B,
+						  (__v16si) __W,
+						  (__mmask16) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_srai_epi32 (__mmask16 __U, __m512i __A, unsigned int __B)
+{
+  return (__m512i) __builtin_ia32_psradi512_mask ((__v16si) __A, __B,
+						  (__v16si)
+						  _mm512_setzero_si512 (),
+						  (__mmask16) __U);
+}
+#else
+#define _mm512_srai_epi32(X, C)						    \
+  ((__m512i) __builtin_ia32_psradi512_mask ((__v16si)(__m512i)(X), (int)(C),\
+    (__v16si)(__m512i)_mm512_undefined_si512 (),\
+    (__mmask16)-1))
+
+#define _mm512_mask_srai_epi32(W, U, X, C)				    \
+  ((__m512i) __builtin_ia32_psradi512_mask ((__v16si)(__m512i)(X), (int)(C),\
+    (__v16si)(__m512i)(W),\
+    (__mmask16)(U)))
+
+#define _mm512_maskz_srai_epi32(U, X, C)				    \
+  ((__m512i) __builtin_ia32_psradi512_mask ((__v16si)(__m512i)(X), (int)(C),\
+    (__v16si)(__m512i)_mm512_setzero_si512 (),\
+    (__mmask16)(U)))
+#endif
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_sra_epi32 (__m512i __A, __m128i __B)
+{
+  return (__m512i) __builtin_ia32_psrad512_mask ((__v16si) __A,
+						 (__v4si) __B,
+						 (__v16si)
+						 _mm512_undefined_si512 (),
+						 (__mmask16) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_sra_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m128i __B)
+{
+  return (__m512i) __builtin_ia32_psrad512_mask ((__v16si) __A,
+						 (__v4si) __B,
+						 (__v16si) __W,
+						 (__mmask16) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_sra_epi32 (__mmask16 __U, __m512i __A, __m128i __B)
+{
+  return (__m512i) __builtin_ia32_psrad512_mask ((__v16si) __A,
+						 (__v4si) __B,
+						 (__v16si)
+						 _mm512_setzero_si512 (),
+						 (__mmask16) __U);
+}
+
+#ifdef __OPTIMIZE__
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_add_round_sd (__m128d __A, __m128d __B, const int __R)
+{
+  return (__m128d) __builtin_ia32_addsd_round ((__v2df) __A,
+					       (__v2df) __B,
+					       __R);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_add_round_ss (__m128 __A, __m128 __B, const int __R)
+{
+  return (__m128) __builtin_ia32_addss_round ((__v4sf) __A,
+					      (__v4sf) __B,
+					      __R);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_sub_round_sd (__m128d __A, __m128d __B, const int __R)
+{
+  return (__m128d) __builtin_ia32_subsd_round ((__v2df) __A,
+					       (__v2df) __B,
+					       __R);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_sub_round_ss (__m128 __A, __m128 __B, const int __R)
+{
+  return (__m128) __builtin_ia32_subss_round ((__v4sf) __A,
+					      (__v4sf) __B,
+					      __R);
+}
+
+#else
+#define _mm_add_round_sd(A, B, C)            \
+    (__m128d)__builtin_ia32_addsd_round(A, B, C)
+
+#define _mm_add_round_ss(A, B, C)            \
+    (__m128)__builtin_ia32_addss_round(A, B, C)
+
+#define _mm_sub_round_sd(A, B, C)            \
+    (__m128d)__builtin_ia32_subsd_round(A, B, C)
+
+#define _mm_sub_round_ss(A, B, C)            \
+    (__m128)__builtin_ia32_subss_round(A, B, C)
+#endif
+
+#ifdef __OPTIMIZE__
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_ternarylogic_epi64 (__m512i __A, __m512i __B, __m512i __C, const int imm)
+{
+  return (__m512i) __builtin_ia32_pternlogq512_mask ((__v8di) __A,
+						     (__v8di) __B,
+						     (__v8di) __C, imm,
+						     (__mmask8) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_ternarylogic_epi64 (__m512i __A, __mmask8 __U, __m512i __B,
+				__m512i __C, const int imm)
+{
+  return (__m512i) __builtin_ia32_pternlogq512_mask ((__v8di) __A,
+						     (__v8di) __B,
+						     (__v8di) __C, imm,
+						     (__mmask8) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_ternarylogic_epi64 (__mmask8 __U, __m512i __A, __m512i __B,
+				 __m512i __C, const int imm)
+{
+  return (__m512i) __builtin_ia32_pternlogq512_maskz ((__v8di) __A,
+						      (__v8di) __B,
+						      (__v8di) __C,
+						      imm, (__mmask8) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_ternarylogic_epi32 (__m512i __A, __m512i __B, __m512i __C, const int imm)
+{
+  return (__m512i) __builtin_ia32_pternlogd512_mask ((__v16si) __A,
+						     (__v16si) __B,
+						     (__v16si) __C,
+						     imm, (__mmask16) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_ternarylogic_epi32 (__m512i __A, __mmask16 __U, __m512i __B,
+				__m512i __C, const int imm)
+{
+  return (__m512i) __builtin_ia32_pternlogd512_mask ((__v16si) __A,
+						     (__v16si) __B,
+						     (__v16si) __C,
+						     imm, (__mmask16) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_ternarylogic_epi32 (__mmask16 __U, __m512i __A, __m512i __B,
+				 __m512i __C, const int imm)
+{
+  return (__m512i) __builtin_ia32_pternlogd512_maskz ((__v16si) __A,
+						      (__v16si) __B,
+						      (__v16si) __C,
+						      imm, (__mmask16) __U);
+}
+#else
+#define _mm512_ternarylogic_epi64(A, B, C, I)				\
+  ((__m512i) __builtin_ia32_pternlogq512_mask ((__v8di)(__m512i)(A),	\
+    (__v8di)(__m512i)(B), (__v8di)(__m512i)(C), (int)(I), (__mmask8)-1))
+#define _mm512_mask_ternarylogic_epi64(A, U, B, C, I)			\
+  ((__m512i) __builtin_ia32_pternlogq512_mask ((__v8di)(__m512i)(A),	\
+    (__v8di)(__m512i)(B), (__v8di)(__m512i)(C), (int)(I), (__mmask8)(U)))
+#define _mm512_maskz_ternarylogic_epi64(U, A, B, C, I)			\
+  ((__m512i) __builtin_ia32_pternlogq512_maskz ((__v8di)(__m512i)(A),	\
+    (__v8di)(__m512i)(B), (__v8di)(__m512i)(C), (int)(I), (__mmask8)(U)))
+#define _mm512_ternarylogic_epi32(A, B, C, I)				\
+  ((__m512i) __builtin_ia32_pternlogd512_mask ((__v16si)(__m512i)(A),	\
+    (__v16si)(__m512i)(B), (__v16si)(__m512i)(C), (int)(I),		\
+    (__mmask16)-1))
+#define _mm512_mask_ternarylogic_epi32(A, U, B, C, I)			\
+  ((__m512i) __builtin_ia32_pternlogd512_mask ((__v16si)(__m512i)(A),	\
+    (__v16si)(__m512i)(B), (__v16si)(__m512i)(C), (int)(I),		\
+    (__mmask16)(U)))
+#define _mm512_maskz_ternarylogic_epi32(U, A, B, C, I)			\
+  ((__m512i) __builtin_ia32_pternlogd512_maskz ((__v16si)(__m512i)(A),	\
+    (__v16si)(__m512i)(B), (__v16si)(__m512i)(C), (int)(I),		\
+    (__mmask16)(U)))
+#endif
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_rcp14_pd (__m512d __A)
+{
+  return (__m512d) __builtin_ia32_rcp14pd512_mask ((__v8df) __A,
+						   (__v8df)
+						   _mm512_undefined_pd (),
+						   (__mmask8) -1);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_rcp14_pd (__m512d __W, __mmask8 __U, __m512d __A)
+{
+  return (__m512d) __builtin_ia32_rcp14pd512_mask ((__v8df) __A,
+						   (__v8df) __W,
+						   (__mmask8) __U);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_rcp14_pd (__mmask8 __U, __m512d __A)
+{
+  return (__m512d) __builtin_ia32_rcp14pd512_mask ((__v8df) __A,
+						   (__v8df)
+						   _mm512_setzero_pd (),
+						   (__mmask8) __U);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_rcp14_ps (__m512 __A)
+{
+  return (__m512) __builtin_ia32_rcp14ps512_mask ((__v16sf) __A,
+						  (__v16sf)
+						  _mm512_undefined_ps (),
+						  (__mmask16) -1);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_rcp14_ps (__m512 __W, __mmask16 __U, __m512 __A)
+{
+  return (__m512) __builtin_ia32_rcp14ps512_mask ((__v16sf) __A,
+						  (__v16sf) __W,
+						  (__mmask16) __U);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_rcp14_ps (__mmask16 __U, __m512 __A)
+{
+  return (__m512) __builtin_ia32_rcp14ps512_mask ((__v16sf) __A,
+						  (__v16sf)
+						  _mm512_setzero_ps (),
+						  (__mmask16) __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_rcp14_sd (__m128d __A, __m128d __B)
+{
+  return (__m128d) __builtin_ia32_rcp14sd ((__v2df) __B,
+					   (__v2df) __A);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_rcp14_ss (__m128 __A, __m128 __B)
+{
+  return (__m128) __builtin_ia32_rcp14ss ((__v4sf) __B,
+					  (__v4sf) __A);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_rsqrt14_pd (__m512d __A)
+{
+  return (__m512d) __builtin_ia32_rsqrt14pd512_mask ((__v8df) __A,
+						     (__v8df)
+						     _mm512_undefined_pd (),
+						     (__mmask8) -1);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_rsqrt14_pd (__m512d __W, __mmask8 __U, __m512d __A)
+{
+  return (__m512d) __builtin_ia32_rsqrt14pd512_mask ((__v8df) __A,
+						     (__v8df) __W,
+						     (__mmask8) __U);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_rsqrt14_pd (__mmask8 __U, __m512d __A)
+{
+  return (__m512d) __builtin_ia32_rsqrt14pd512_mask ((__v8df) __A,
+						     (__v8df)
+						     _mm512_setzero_pd (),
+						     (__mmask8) __U);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_rsqrt14_ps (__m512 __A)
+{
+  return (__m512) __builtin_ia32_rsqrt14ps512_mask ((__v16sf) __A,
+						    (__v16sf)
+						    _mm512_undefined_ps (),
+						    (__mmask16) -1);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_rsqrt14_ps (__m512 __W, __mmask16 __U, __m512 __A)
+{
+  return (__m512) __builtin_ia32_rsqrt14ps512_mask ((__v16sf) __A,
+						    (__v16sf) __W,
+						    (__mmask16) __U);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_rsqrt14_ps (__mmask16 __U, __m512 __A)
+{
+  return (__m512) __builtin_ia32_rsqrt14ps512_mask ((__v16sf) __A,
+						    (__v16sf)
+						    _mm512_setzero_ps (),
+						    (__mmask16) __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_rsqrt14_sd (__m128d __A, __m128d __B)
+{
+  return (__m128d) __builtin_ia32_rsqrt14sd ((__v2df) __B,
+					     (__v2df) __A);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_rsqrt14_ss (__m128 __A, __m128 __B)
+{
+  return (__m128) __builtin_ia32_rsqrt14ss ((__v4sf) __B,
+					    (__v4sf) __A);
+}
+
+#ifdef __OPTIMIZE__
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_sqrt_round_pd (__m512d __A, const int __R)
+{
+  return (__m512d) __builtin_ia32_sqrtpd512_mask ((__v8df) __A,
+						  (__v8df)
+						  _mm512_undefined_pd (),
+						  (__mmask8) -1, __R);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_sqrt_round_pd (__m512d __W, __mmask8 __U, __m512d __A,
+			   const int __R)
+{
+  return (__m512d) __builtin_ia32_sqrtpd512_mask ((__v8df) __A,
+						  (__v8df) __W,
+						  (__mmask8) __U, __R);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_sqrt_round_pd (__mmask8 __U, __m512d __A, const int __R)
+{
+  return (__m512d) __builtin_ia32_sqrtpd512_mask ((__v8df) __A,
+						  (__v8df)
+						  _mm512_setzero_pd (),
+						  (__mmask8) __U, __R);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_sqrt_round_ps (__m512 __A, const int __R)
+{
+  return (__m512) __builtin_ia32_sqrtps512_mask ((__v16sf) __A,
+						 (__v16sf)
+						 _mm512_undefined_ps (),
+						 (__mmask16) -1, __R);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_sqrt_round_ps (__m512 __W, __mmask16 __U, __m512 __A, const int __R)
+{
+  return (__m512) __builtin_ia32_sqrtps512_mask ((__v16sf) __A,
+						 (__v16sf) __W,
+						 (__mmask16) __U, __R);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_sqrt_round_ps (__mmask16 __U, __m512 __A, const int __R)
+{
+  return (__m512) __builtin_ia32_sqrtps512_mask ((__v16sf) __A,
+						 (__v16sf)
+						 _mm512_setzero_ps (),
+						 (__mmask16) __U, __R);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_sqrt_round_sd (__m128d __A, __m128d __B, const int __R)
+{
+  return (__m128d) __builtin_ia32_sqrtsd_round ((__v2df) __B,
+						(__v2df) __A,
+						__R);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_sqrt_round_ss (__m128 __A, __m128 __B, const int __R)
+{
+  return (__m128) __builtin_ia32_sqrtss_round ((__v4sf) __B,
+					       (__v4sf) __A,
+					       __R);
+}
+#else
+#define _mm512_sqrt_round_pd(A, C)            \
+    (__m512d)__builtin_ia32_sqrtpd512_mask(A, (__v8df)_mm512_undefined_pd(), -1, C)
+
+#define _mm512_mask_sqrt_round_pd(W, U, A, C) \
+    (__m512d)__builtin_ia32_sqrtpd512_mask(A, W, U, C)
+
+#define _mm512_maskz_sqrt_round_pd(U, A, C)   \
+    (__m512d)__builtin_ia32_sqrtpd512_mask(A, (__v8df)_mm512_setzero_pd(), U, C)
+
+#define _mm512_sqrt_round_ps(A, C)            \
+    (__m512)__builtin_ia32_sqrtps512_mask(A, (__v16sf)_mm512_undefined_ps(), -1, C)
+
+#define _mm512_mask_sqrt_round_ps(W, U, A, C) \
+    (__m512)__builtin_ia32_sqrtps512_mask(A, W, U, C)
+
+#define _mm512_maskz_sqrt_round_ps(U, A, C)   \
+    (__m512)__builtin_ia32_sqrtps512_mask(A, (__v16sf)_mm512_setzero_ps(), U, C)
+
+#define _mm_sqrt_round_sd(A, B, C)            \
+    (__m128d)__builtin_ia32_sqrtsd_round(A, B, C)
+
+#define _mm_sqrt_round_ss(A, B, C)            \
+    (__m128)__builtin_ia32_sqrtss_round(A, B, C)
+#endif
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cvtepi8_epi32 (__m128i __A)
+{
+  return (__m512i) __builtin_ia32_pmovsxbd512_mask ((__v16qi) __A,
+						    (__v16si)
+						    _mm512_undefined_si512 (),
+						    (__mmask16) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvtepi8_epi32 (__m512i __W, __mmask16 __U, __m128i __A)
+{
+  return (__m512i) __builtin_ia32_pmovsxbd512_mask ((__v16qi) __A,
+						    (__v16si) __W,
+						    (__mmask16) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_cvtepi8_epi32 (__mmask16 __U, __m128i __A)
+{
+  return (__m512i) __builtin_ia32_pmovsxbd512_mask ((__v16qi) __A,
+						    (__v16si)
+						    _mm512_setzero_si512 (),
+						    (__mmask16) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cvtepi8_epi64 (__m128i __A)
+{
+  return (__m512i) __builtin_ia32_pmovsxbq512_mask ((__v16qi) __A,
+						    (__v8di)
+						    _mm512_undefined_si512 (),
+						    (__mmask8) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvtepi8_epi64 (__m512i __W, __mmask8 __U, __m128i __A)
+{
+  return (__m512i) __builtin_ia32_pmovsxbq512_mask ((__v16qi) __A,
+						    (__v8di) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_cvtepi8_epi64 (__mmask8 __U, __m128i __A)
+{
+  return (__m512i) __builtin_ia32_pmovsxbq512_mask ((__v16qi) __A,
+						    (__v8di)
+						    _mm512_setzero_si512 (),
+						    (__mmask8) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cvtepi16_epi32 (__m256i __A)
+{
+  return (__m512i) __builtin_ia32_pmovsxwd512_mask ((__v16hi) __A,
+						    (__v16si)
+						    _mm512_undefined_si512 (),
+						    (__mmask16) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvtepi16_epi32 (__m512i __W, __mmask16 __U, __m256i __A)
+{
+  return (__m512i) __builtin_ia32_pmovsxwd512_mask ((__v16hi) __A,
+						    (__v16si) __W,
+						    (__mmask16) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_cvtepi16_epi32 (__mmask16 __U, __m256i __A)
+{
+  return (__m512i) __builtin_ia32_pmovsxwd512_mask ((__v16hi) __A,
+						    (__v16si)
+						    _mm512_setzero_si512 (),
+						    (__mmask16) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cvtepi16_epi64 (__m128i __A)
+{
+  return (__m512i) __builtin_ia32_pmovsxwq512_mask ((__v8hi) __A,
+						    (__v8di)
+						    _mm512_undefined_si512 (),
+						    (__mmask8) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvtepi16_epi64 (__m512i __W, __mmask8 __U, __m128i __A)
+{
+  return (__m512i) __builtin_ia32_pmovsxwq512_mask ((__v8hi) __A,
+						    (__v8di) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_cvtepi16_epi64 (__mmask8 __U, __m128i __A)
+{
+  return (__m512i) __builtin_ia32_pmovsxwq512_mask ((__v8hi) __A,
+						    (__v8di)
+						    _mm512_setzero_si512 (),
+						    (__mmask8) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cvtepi32_epi64 (__m256i __X)
+{
+  return (__m512i) __builtin_ia32_pmovsxdq512_mask ((__v8si) __X,
+						    (__v8di)
+						    _mm512_undefined_si512 (),
+						    (__mmask8) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvtepi32_epi64 (__m512i __W, __mmask8 __U, __m256i __X)
+{
+  return (__m512i) __builtin_ia32_pmovsxdq512_mask ((__v8si) __X,
+						    (__v8di) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_cvtepi32_epi64 (__mmask8 __U, __m256i __X)
+{
+  return (__m512i) __builtin_ia32_pmovsxdq512_mask ((__v8si) __X,
+						    (__v8di)
+						    _mm512_setzero_si512 (),
+						    (__mmask8) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cvtepu8_epi32 (__m128i __A)
+{
+  return (__m512i) __builtin_ia32_pmovzxbd512_mask ((__v16qi) __A,
+						    (__v16si)
+						    _mm512_undefined_si512 (),
+						    (__mmask16) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvtepu8_epi32 (__m512i __W, __mmask16 __U, __m128i __A)
+{
+  return (__m512i) __builtin_ia32_pmovzxbd512_mask ((__v16qi) __A,
+						    (__v16si) __W,
+						    (__mmask16) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_cvtepu8_epi32 (__mmask16 __U, __m128i __A)
+{
+  return (__m512i) __builtin_ia32_pmovzxbd512_mask ((__v16qi) __A,
+						    (__v16si)
+						    _mm512_setzero_si512 (),
+						    (__mmask16) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cvtepu8_epi64 (__m128i __A)
+{
+  return (__m512i) __builtin_ia32_pmovzxbq512_mask ((__v16qi) __A,
+						    (__v8di)
+						    _mm512_undefined_si512 (),
+						    (__mmask8) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvtepu8_epi64 (__m512i __W, __mmask8 __U, __m128i __A)
+{
+  return (__m512i) __builtin_ia32_pmovzxbq512_mask ((__v16qi) __A,
+						    (__v8di) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_cvtepu8_epi64 (__mmask8 __U, __m128i __A)
+{
+  return (__m512i) __builtin_ia32_pmovzxbq512_mask ((__v16qi) __A,
+						    (__v8di)
+						    _mm512_setzero_si512 (),
+						    (__mmask8) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cvtepu16_epi32 (__m256i __A)
+{
+  return (__m512i) __builtin_ia32_pmovzxwd512_mask ((__v16hi) __A,
+						    (__v16si)
+						    _mm512_undefined_si512 (),
+						    (__mmask16) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvtepu16_epi32 (__m512i __W, __mmask16 __U, __m256i __A)
+{
+  return (__m512i) __builtin_ia32_pmovzxwd512_mask ((__v16hi) __A,
+						    (__v16si) __W,
+						    (__mmask16) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_cvtepu16_epi32 (__mmask16 __U, __m256i __A)
+{
+  return (__m512i) __builtin_ia32_pmovzxwd512_mask ((__v16hi) __A,
+						    (__v16si)
+						    _mm512_setzero_si512 (),
+						    (__mmask16) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cvtepu16_epi64 (__m128i __A)
+{
+  return (__m512i) __builtin_ia32_pmovzxwq512_mask ((__v8hi) __A,
+						    (__v8di)
+						    _mm512_undefined_si512 (),
+						    (__mmask8) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvtepu16_epi64 (__m512i __W, __mmask8 __U, __m128i __A)
+{
+  return (__m512i) __builtin_ia32_pmovzxwq512_mask ((__v8hi) __A,
+						    (__v8di) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_cvtepu16_epi64 (__mmask8 __U, __m128i __A)
+{
+  return (__m512i) __builtin_ia32_pmovzxwq512_mask ((__v8hi) __A,
+						    (__v8di)
+						    _mm512_setzero_si512 (),
+						    (__mmask8) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cvtepu32_epi64 (__m256i __X)
+{
+  return (__m512i) __builtin_ia32_pmovzxdq512_mask ((__v8si) __X,
+						    (__v8di)
+						    _mm512_undefined_si512 (),
+						    (__mmask8) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvtepu32_epi64 (__m512i __W, __mmask8 __U, __m256i __X)
+{
+  return (__m512i) __builtin_ia32_pmovzxdq512_mask ((__v8si) __X,
+						    (__v8di) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_cvtepu32_epi64 (__mmask8 __U, __m256i __X)
+{
+  return (__m512i) __builtin_ia32_pmovzxdq512_mask ((__v8si) __X,
+						    (__v8di)
+						    _mm512_setzero_si512 (),
+						    (__mmask8) __U);
+}
+
+#ifdef __OPTIMIZE__
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_add_round_pd (__m512d __A, __m512d __B, const int __R)
+{
+  return (__m512d) __builtin_ia32_addpd512_mask ((__v8df) __A,
+						 (__v8df) __B,
+						 (__v8df)
+						 _mm512_undefined_pd (),
+						 (__mmask8) -1, __R);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_add_round_pd (__m512d __W, __mmask8 __U, __m512d __A,
+			  __m512d __B, const int __R)
+{
+  return (__m512d) __builtin_ia32_addpd512_mask ((__v8df) __A,
+						 (__v8df) __B,
+						 (__v8df) __W,
+						 (__mmask8) __U, __R);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_add_round_pd (__mmask8 __U, __m512d __A, __m512d __B,
+			   const int __R)
+{
+  return (__m512d) __builtin_ia32_addpd512_mask ((__v8df) __A,
+						 (__v8df) __B,
+						 (__v8df)
+						 _mm512_setzero_pd (),
+						 (__mmask8) __U, __R);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_add_round_ps (__m512 __A, __m512 __B, const int __R)
+{
+  return (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A,
+						(__v16sf) __B,
+						(__v16sf)
+						_mm512_undefined_ps (),
+						(__mmask16) -1, __R);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_add_round_ps (__m512 __W, __mmask16 __U, __m512 __A,
+			  __m512 __B, const int __R)
+{
+  return (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A,
+						(__v16sf) __B,
+						(__v16sf) __W,
+						(__mmask16) __U, __R);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_add_round_ps (__mmask16 __U, __m512 __A, __m512 __B, const int __R)
+{
+  return (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A,
+						(__v16sf) __B,
+						(__v16sf)
+						_mm512_setzero_ps (),
+						(__mmask16) __U, __R);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_sub_round_pd (__m512d __A, __m512d __B, const int __R)
+{
+  return (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A,
+						 (__v8df) __B,
+						 (__v8df)
+						 _mm512_undefined_pd (),
+						 (__mmask8) -1, __R);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_sub_round_pd (__m512d __W, __mmask8 __U, __m512d __A,
+			  __m512d __B, const int __R)
+{
+  return (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A,
+						 (__v8df) __B,
+						 (__v8df) __W,
+						 (__mmask8) __U, __R);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_sub_round_pd (__mmask8 __U, __m512d __A, __m512d __B,
+			   const int __R)
+{
+  return (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A,
+						 (__v8df) __B,
+						 (__v8df)
+						 _mm512_setzero_pd (),
+						 (__mmask8) __U, __R);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_sub_round_ps (__m512 __A, __m512 __B, const int __R)
+{
+  return (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A,
+						(__v16sf) __B,
+						(__v16sf)
+						_mm512_undefined_ps (),
+						(__mmask16) -1, __R);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_sub_round_ps (__m512 __W, __mmask16 __U, __m512 __A,
+			  __m512 __B, const int __R)
+{
+  return (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A,
+						(__v16sf) __B,
+						(__v16sf) __W,
+						(__mmask16) __U, __R);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_sub_round_ps (__mmask16 __U, __m512 __A, __m512 __B, const int __R)
+{
+  return (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A,
+						(__v16sf) __B,
+						(__v16sf)
+						_mm512_setzero_ps (),
+						(__mmask16) __U, __R);
+}
+#else
+#define _mm512_add_round_pd(A, B, C)            \
+    (__m512d)__builtin_ia32_addpd512_mask(A, B, (__v8df)_mm512_undefined_pd(), -1, C)
+
+#define _mm512_mask_add_round_pd(W, U, A, B, C) \
+    (__m512d)__builtin_ia32_addpd512_mask(A, B, W, U, C)
+
+#define _mm512_maskz_add_round_pd(U, A, B, C)   \
+    (__m512d)__builtin_ia32_addpd512_mask(A, B, (__v8df)_mm512_setzero_pd(), U, C)
+
+#define _mm512_add_round_ps(A, B, C)            \
+    (__m512)__builtin_ia32_addps512_mask(A, B, (__v16sf)_mm512_undefined_ps(), -1, C)
+
+#define _mm512_mask_add_round_ps(W, U, A, B, C) \
+    (__m512)__builtin_ia32_addps512_mask(A, B, W, U, C)
+
+#define _mm512_maskz_add_round_ps(U, A, B, C)   \
+    (__m512)__builtin_ia32_addps512_mask(A, B, (__v16sf)_mm512_setzero_ps(), U, C)
+
+#define _mm512_sub_round_pd(A, B, C)            \
+    (__m512d)__builtin_ia32_subpd512_mask(A, B, (__v8df)_mm512_undefined_pd(), -1, C)
+
+#define _mm512_mask_sub_round_pd(W, U, A, B, C) \
+    (__m512d)__builtin_ia32_subpd512_mask(A, B, W, U, C)
+
+#define _mm512_maskz_sub_round_pd(U, A, B, C)   \
+    (__m512d)__builtin_ia32_subpd512_mask(A, B, (__v8df)_mm512_setzero_pd(), U, C)
+
+#define _mm512_sub_round_ps(A, B, C)            \
+    (__m512)__builtin_ia32_subps512_mask(A, B, (__v16sf)_mm512_undefined_ps(), -1, C)
+
+#define _mm512_mask_sub_round_ps(W, U, A, B, C) \
+    (__m512)__builtin_ia32_subps512_mask(A, B, W, U, C)
+
+#define _mm512_maskz_sub_round_ps(U, A, B, C)   \
+    (__m512)__builtin_ia32_subps512_mask(A, B, (__v16sf)_mm512_setzero_ps(), U, C)
+#endif
+
+#ifdef __OPTIMIZE__
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mul_round_pd (__m512d __A, __m512d __B, const int __R)
+{
+  return (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A,
+						 (__v8df) __B,
+						 (__v8df)
+						 _mm512_undefined_pd (),
+						 (__mmask8) -1, __R);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_mul_round_pd (__m512d __W, __mmask8 __U, __m512d __A,
+			  __m512d __B, const int __R)
+{
+  return (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A,
+						 (__v8df) __B,
+						 (__v8df) __W,
+						 (__mmask8) __U, __R);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_mul_round_pd (__mmask8 __U, __m512d __A, __m512d __B,
+			   const int __R)
+{
+  return (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A,
+						 (__v8df) __B,
+						 (__v8df)
+						 _mm512_setzero_pd (),
+						 (__mmask8) __U, __R);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mul_round_ps (__m512 __A, __m512 __B, const int __R)
+{
+  return (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A,
+						(__v16sf) __B,
+						(__v16sf)
+						_mm512_undefined_ps (),
+						(__mmask16) -1, __R);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_mul_round_ps (__m512 __W, __mmask16 __U, __m512 __A,
+			  __m512 __B, const int __R)
+{
+  return (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A,
+						(__v16sf) __B,
+						(__v16sf) __W,
+						(__mmask16) __U, __R);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_mul_round_ps (__mmask16 __U, __m512 __A, __m512 __B, const int __R)
+{
+  return (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A,
+						(__v16sf) __B,
+						(__v16sf)
+						_mm512_setzero_ps (),
+						(__mmask16) __U, __R);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_div_round_pd (__m512d __M, __m512d __V, const int __R)
+{
+  return (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __M,
+						 (__v8df) __V,
+						 (__v8df)
+						 _mm512_undefined_pd (),
+						 (__mmask8) -1, __R);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_div_round_pd (__m512d __W, __mmask8 __U, __m512d __M,
+			  __m512d __V, const int __R)
+{
+  return (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __M,
+						 (__v8df) __V,
+						 (__v8df) __W,
+						 (__mmask8) __U, __R);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_div_round_pd (__mmask8 __U, __m512d __M, __m512d __V,
+			   const int __R)
+{
+  return (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __M,
+						 (__v8df) __V,
+						 (__v8df)
+						 _mm512_setzero_pd (),
+						 (__mmask8) __U, __R);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_div_round_ps (__m512 __A, __m512 __B, const int __R)
+{
+  return (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A,
+						(__v16sf) __B,
+						(__v16sf)
+						_mm512_undefined_ps (),
+						(__mmask16) -1, __R);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_div_round_ps (__m512 __W, __mmask16 __U, __m512 __A,
+			  __m512 __B, const int __R)
+{
+  return (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A,
+						(__v16sf) __B,
+						(__v16sf) __W,
+						(__mmask16) __U, __R);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_div_round_ps (__mmask16 __U, __m512 __A, __m512 __B, const int __R)
+{
+  return (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A,
+						(__v16sf) __B,
+						(__v16sf)
+						_mm512_setzero_ps (),
+						(__mmask16) __U, __R);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mul_round_sd (__m128d __A, __m128d __B, const int __R)
+{
+  return (__m128d) __builtin_ia32_mulsd_round ((__v2df) __A,
+					       (__v2df) __B,
+					       __R);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mul_round_ss (__m128 __A, __m128 __B, const int __R)
+{
+  return (__m128) __builtin_ia32_mulss_round ((__v4sf) __A,
+					      (__v4sf) __B,
+					      __R);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_div_round_sd (__m128d __A, __m128d __B, const int __R)
+{
+  return (__m128d) __builtin_ia32_divsd_round ((__v2df) __A,
+					       (__v2df) __B,
+					       __R);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_div_round_ss (__m128 __A, __m128 __B, const int __R)
+{
+  return (__m128) __builtin_ia32_divss_round ((__v4sf) __A,
+					      (__v4sf) __B,
+					      __R);
+}
+
+#else
+#define _mm512_mul_round_pd(A, B, C)            \
+    (__m512d)__builtin_ia32_mulpd512_mask(A, B, (__v8df)_mm512_undefined_pd(), -1, C)
+
+#define _mm512_mask_mul_round_pd(W, U, A, B, C) \
+    (__m512d)__builtin_ia32_mulpd512_mask(A, B, W, U, C)
+
+#define _mm512_maskz_mul_round_pd(U, A, B, C)   \
+    (__m512d)__builtin_ia32_mulpd512_mask(A, B, (__v8df)_mm512_setzero_pd(), U, C)
+
+#define _mm512_mul_round_ps(A, B, C)            \
+    (__m512)__builtin_ia32_mulps512_mask(A, B, (__v16sf)_mm512_undefined_ps(), -1, C)
+
+#define _mm512_mask_mul_round_ps(W, U, A, B, C) \
+    (__m512)__builtin_ia32_mulps512_mask(A, B, W, U, C)
+
+#define _mm512_maskz_mul_round_ps(U, A, B, C)   \
+    (__m512)__builtin_ia32_mulps512_mask(A, B, (__v16sf)_mm512_setzero_ps(), U, C)
+
+#define _mm512_div_round_pd(A, B, C)            \
+    (__m512d)__builtin_ia32_divpd512_mask(A, B, (__v8df)_mm512_undefined_pd(), -1, C)
+
+#define _mm512_mask_div_round_pd(W, U, A, B, C) \
+    (__m512d)__builtin_ia32_divpd512_mask(A, B, W, U, C)
+
+#define _mm512_maskz_div_round_pd(U, A, B, C)   \
+    (__m512d)__builtin_ia32_divpd512_mask(A, B, (__v8df)_mm512_setzero_pd(), U, C)
+
+#define _mm512_div_round_ps(A, B, C)            \
+    (__m512)__builtin_ia32_divps512_mask(A, B, (__v16sf)_mm512_undefined_ps(), -1, C)
+
+#define _mm512_mask_div_round_ps(W, U, A, B, C) \
+    (__m512)__builtin_ia32_divps512_mask(A, B, W, U, C)
+
+#define _mm512_maskz_div_round_ps(U, A, B, C)   \
+    (__m512)__builtin_ia32_divps512_mask(A, B, (__v16sf)_mm512_setzero_ps(), U, C)
+
+#define _mm_mul_round_sd(A, B, C)            \
+    (__m128d)__builtin_ia32_mulsd_round(A, B, C)
+
+#define _mm_mul_round_ss(A, B, C)            \
+    (__m128)__builtin_ia32_mulss_round(A, B, C)
+
+#define _mm_div_round_sd(A, B, C)            \
+    (__m128d)__builtin_ia32_divsd_round(A, B, C)
+
+#define _mm_div_round_ss(A, B, C)            \
+    (__m128)__builtin_ia32_divss_round(A, B, C)
+#endif
+
+#ifdef __OPTIMIZE__
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_max_round_pd (__m512d __A, __m512d __B, const int __R)
+{
+  return (__m512d) __builtin_ia32_maxpd512_mask ((__v8df) __A,
+						 (__v8df) __B,
+						 (__v8df)
+						 _mm512_undefined_pd (),
+						 (__mmask8) -1, __R);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_max_round_pd (__m512d __W, __mmask8 __U, __m512d __A,
+			  __m512d __B, const int __R)
+{
+  return (__m512d) __builtin_ia32_maxpd512_mask ((__v8df) __A,
+						 (__v8df) __B,
+						 (__v8df) __W,
+						 (__mmask8) __U, __R);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_max_round_pd (__mmask8 __U, __m512d __A, __m512d __B,
+			   const int __R)
+{
+  return (__m512d) __builtin_ia32_maxpd512_mask ((__v8df) __A,
+						 (__v8df) __B,
+						 (__v8df)
+						 _mm512_setzero_pd (),
+						 (__mmask8) __U, __R);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_max_round_ps (__m512 __A, __m512 __B, const int __R)
+{
+  return (__m512) __builtin_ia32_maxps512_mask ((__v16sf) __A,
+						(__v16sf) __B,
+						(__v16sf)
+						_mm512_undefined_ps (),
+						(__mmask16) -1, __R);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_max_round_ps (__m512 __W, __mmask16 __U, __m512 __A,
+			  __m512 __B, const int __R)
+{
+  return (__m512) __builtin_ia32_maxps512_mask ((__v16sf) __A,
+						(__v16sf) __B,
+						(__v16sf) __W,
+						(__mmask16) __U, __R);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_max_round_ps (__mmask16 __U, __m512 __A, __m512 __B, const int __R)
+{
+  return (__m512) __builtin_ia32_maxps512_mask ((__v16sf) __A,
+						(__v16sf) __B,
+						(__v16sf)
+						_mm512_setzero_ps (),
+						(__mmask16) __U, __R);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_min_round_pd (__m512d __A, __m512d __B, const int __R)
+{
+  return (__m512d) __builtin_ia32_minpd512_mask ((__v8df) __A,
+						 (__v8df) __B,
+						 (__v8df)
+						 _mm512_undefined_pd (),
+						 (__mmask8) -1, __R);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_min_round_pd (__m512d __W, __mmask8 __U, __m512d __A,
+			  __m512d __B, const int __R)
+{
+  return (__m512d) __builtin_ia32_minpd512_mask ((__v8df) __A,
+						 (__v8df) __B,
+						 (__v8df) __W,
+						 (__mmask8) __U, __R);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_min_round_pd (__mmask8 __U, __m512d __A, __m512d __B,
+			   const int __R)
+{
+  return (__m512d) __builtin_ia32_minpd512_mask ((__v8df) __A,
+						 (__v8df) __B,
+						 (__v8df)
+						 _mm512_setzero_pd (),
+						 (__mmask8) __U, __R);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_min_round_ps (__m512 __A, __m512 __B, const int __R)
+{
+  return (__m512) __builtin_ia32_minps512_mask ((__v16sf) __A,
+						(__v16sf) __B,
+						(__v16sf)
+						_mm512_undefined_ps (),
+						(__mmask16) -1, __R);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_min_round_ps (__m512 __W, __mmask16 __U, __m512 __A,
+			  __m512 __B, const int __R)
+{
+  return (__m512) __builtin_ia32_minps512_mask ((__v16sf) __A,
+						(__v16sf) __B,
+						(__v16sf) __W,
+						(__mmask16) __U, __R);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_min_round_ps (__mmask16 __U, __m512 __A, __m512 __B, const int __R)
+{
+  return (__m512) __builtin_ia32_minps512_mask ((__v16sf) __A,
+						(__v16sf) __B,
+						(__v16sf)
+						_mm512_setzero_ps (),
+						(__mmask16) __U, __R);
+}
+#else
+#define _mm512_max_round_pd(A, B,  R) \
+    (__m512d)__builtin_ia32_maxpd512_mask(A, B, (__v8df)_mm512_undefined_pd(), -1, R)
+
+#define _mm512_mask_max_round_pd(W, U,  A, B, R) \
+    (__m512d)__builtin_ia32_maxpd512_mask(A, B, W, U, R)
+
+#define _mm512_maskz_max_round_pd(U, A,  B, R) \
+    (__m512d)__builtin_ia32_maxpd512_mask(A, B, (__v8df)_mm512_setzero_pd(), U, R)
+
+#define _mm512_max_round_ps(A, B,  R) \
+    (__m512)__builtin_ia32_maxps512_mask(A, B, (__v16sf)_mm512_undefined_pd(), -1, R)
+
+#define _mm512_mask_max_round_ps(W, U,  A, B, R) \
+    (__m512)__builtin_ia32_maxps512_mask(A, B, W, U, R)
+
+#define _mm512_maskz_max_round_ps(U, A,  B, R) \
+    (__m512)__builtin_ia32_maxps512_mask(A, B, (__v16sf)_mm512_setzero_ps(), U, R)
+
+#define _mm512_min_round_pd(A, B,  R) \
+    (__m512d)__builtin_ia32_minpd512_mask(A, B, (__v8df)_mm512_undefined_pd(), -1, R)
+
+#define _mm512_mask_min_round_pd(W, U,  A, B, R) \
+    (__m512d)__builtin_ia32_minpd512_mask(A, B, W, U, R)
+
+#define _mm512_maskz_min_round_pd(U, A,  B, R) \
+    (__m512d)__builtin_ia32_minpd512_mask(A, B, (__v8df)_mm512_setzero_pd(), U, R)
+
+#define _mm512_min_round_ps(A, B, R) \
+    (__m512)__builtin_ia32_minps512_mask(A, B, (__v16sf)_mm512_undefined_ps(), -1, R)
+
+#define _mm512_mask_min_round_ps(W, U,  A, B, R) \
+    (__m512)__builtin_ia32_minps512_mask(A, B, W, U, R)
+
+#define _mm512_maskz_min_round_ps(U, A,  B, R) \
+    (__m512)__builtin_ia32_minps512_mask(A, B, (__v16sf)_mm512_setzero_ps(), U, R)
+#endif
+
+#ifdef __OPTIMIZE__
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_scalef_round_pd (__m512d __A, __m512d __B, const int __R)
+{
+  return (__m512d) __builtin_ia32_scalefpd512_mask ((__v8df) __A,
+						    (__v8df) __B,
+						    (__v8df)
+						    _mm512_undefined_pd (),
+						    (__mmask8) -1, __R);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_scalef_round_pd (__m512d __W, __mmask8 __U, __m512d __A,
+			     __m512d __B, const int __R)
+{
+  return (__m512d) __builtin_ia32_scalefpd512_mask ((__v8df) __A,
+						    (__v8df) __B,
+						    (__v8df) __W,
+						    (__mmask8) __U, __R);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_scalef_round_pd (__mmask8 __U, __m512d __A, __m512d __B,
+			      const int __R)
+{
+  return (__m512d) __builtin_ia32_scalefpd512_mask ((__v8df) __A,
+						    (__v8df) __B,
+						    (__v8df)
+						    _mm512_setzero_pd (),
+						    (__mmask8) __U, __R);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_scalef_round_ps (__m512 __A, __m512 __B, const int __R)
+{
+  return (__m512) __builtin_ia32_scalefps512_mask ((__v16sf) __A,
+						   (__v16sf) __B,
+						   (__v16sf)
+						   _mm512_undefined_ps (),
+						   (__mmask16) -1, __R);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_scalef_round_ps (__m512 __W, __mmask16 __U, __m512 __A,
+			     __m512 __B, const int __R)
+{
+  return (__m512) __builtin_ia32_scalefps512_mask ((__v16sf) __A,
+						   (__v16sf) __B,
+						   (__v16sf) __W,
+						   (__mmask16) __U, __R);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_scalef_round_ps (__mmask16 __U, __m512 __A, __m512 __B,
+			      const int __R)
+{
+  return (__m512) __builtin_ia32_scalefps512_mask ((__v16sf) __A,
+						   (__v16sf) __B,
+						   (__v16sf)
+						   _mm512_setzero_ps (),
+						   (__mmask16) __U, __R);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_scalef_round_sd (__m128d __A, __m128d __B, const int __R)
+{
+  return (__m128d) __builtin_ia32_scalefsd_round ((__v2df) __A,
+						  (__v2df) __B,
+						  __R);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_scalef_round_ss (__m128 __A, __m128 __B, const int __R)
+{
+  return (__m128) __builtin_ia32_scalefss_round ((__v4sf) __A,
+						 (__v4sf) __B,
+						 __R);
+}
+#else
+#define _mm512_scalef_round_pd(A, B, C)            \
+    (__m512d)__builtin_ia32_scalefpd512_mask(A, B, (__v8df)_mm512_undefined_pd(), -1, C)
+
+#define _mm512_mask_scalef_round_pd(W, U, A, B, C) \
+    (__m512d)__builtin_ia32_scalefpd512_mask(A, B, W, U, C)
+
+#define _mm512_maskz_scalef_round_pd(U, A, B, C)   \
+    (__m512d)__builtin_ia32_scalefpd512_mask(A, B, (__v8df)_mm512_setzero_pd(), U, C)
+
+#define _mm512_scalef_round_ps(A, B, C)            \
+    (__m512)__builtin_ia32_scalefps512_mask(A, B, (__v16sf)_mm512_undefined_ps(), -1, C)
+
+#define _mm512_mask_scalef_round_ps(W, U, A, B, C) \
+    (__m512)__builtin_ia32_scalefps512_mask(A, B, W, U, C)
+
+#define _mm512_maskz_scalef_round_ps(U, A, B, C)   \
+    (__m512)__builtin_ia32_scalefps512_mask(A, B, (__v16sf)_mm512_setzero_ps(), U, C)
+
+#define _mm_scalef_round_sd(A, B, C)            \
+    (__m128d)__builtin_ia32_scalefsd_round(A, B, C)
+
+#define _mm_scalef_round_ss(A, B, C)            \
+    (__m128)__builtin_ia32_scalefss_round(A, B, C)
+#endif
+
+#ifdef __OPTIMIZE__
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_fmadd_round_pd (__m512d __A, __m512d __B, __m512d __C, const int __R)
+{
+  return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
+						    (__v8df) __B,
+						    (__v8df) __C,
+						    (__mmask8) -1, __R);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_fmadd_round_pd (__m512d __A, __mmask8 __U, __m512d __B,
+			    __m512d __C, const int __R)
+{
+  return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
+						    (__v8df) __B,
+						    (__v8df) __C,
+						    (__mmask8) __U, __R);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask3_fmadd_round_pd (__m512d __A, __m512d __B, __m512d __C,
+			     __mmask8 __U, const int __R)
+{
+  return (__m512d) __builtin_ia32_vfmaddpd512_mask3 ((__v8df) __A,
+						     (__v8df) __B,
+						     (__v8df) __C,
+						     (__mmask8) __U, __R);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_fmadd_round_pd (__mmask8 __U, __m512d __A, __m512d __B,
+			     __m512d __C, const int __R)
+{
+  return (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) __A,
+						     (__v8df) __B,
+						     (__v8df) __C,
+						     (__mmask8) __U, __R);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_fmadd_round_ps (__m512 __A, __m512 __B, __m512 __C, const int __R)
+{
+  return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
+						   (__v16sf) __B,
+						   (__v16sf) __C,
+						   (__mmask16) -1, __R);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_fmadd_round_ps (__m512 __A, __mmask16 __U, __m512 __B,
+			    __m512 __C, const int __R)
+{
+  return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
+						   (__v16sf) __B,
+						   (__v16sf) __C,
+						   (__mmask16) __U, __R);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask3_fmadd_round_ps (__m512 __A, __m512 __B, __m512 __C,
+			     __mmask16 __U, const int __R)
+{
+  return (__m512) __builtin_ia32_vfmaddps512_mask3 ((__v16sf) __A,
+						    (__v16sf) __B,
+						    (__v16sf) __C,
+						    (__mmask16) __U, __R);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_fmadd_round_ps (__mmask16 __U, __m512 __A, __m512 __B,
+			     __m512 __C, const int __R)
+{
+  return (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) __A,
+						    (__v16sf) __B,
+						    (__v16sf) __C,
+						    (__mmask16) __U, __R);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_fmsub_round_pd (__m512d __A, __m512d __B, __m512d __C, const int __R)
+{
+  return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
+						    (__v8df) __B,
+						    -(__v8df) __C,
+						    (__mmask8) -1, __R);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_fmsub_round_pd (__m512d __A, __mmask8 __U, __m512d __B,
+			    __m512d __C, const int __R)
+{
+  return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
+						    (__v8df) __B,
+						    -(__v8df) __C,
+						    (__mmask8) __U, __R);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask3_fmsub_round_pd (__m512d __A, __m512d __B, __m512d __C,
+			     __mmask8 __U, const int __R)
+{
+  return (__m512d) __builtin_ia32_vfmsubpd512_mask3 ((__v8df) __A,
+						     (__v8df) __B,
+						     (__v8df) __C,
+						     (__mmask8) __U, __R);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_fmsub_round_pd (__mmask8 __U, __m512d __A, __m512d __B,
+			     __m512d __C, const int __R)
+{
+  return (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) __A,
+						     (__v8df) __B,
+						     -(__v8df) __C,
+						     (__mmask8) __U, __R);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_fmsub_round_ps (__m512 __A, __m512 __B, __m512 __C, const int __R)
+{
+  return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
+						   (__v16sf) __B,
+						   -(__v16sf) __C,
+						   (__mmask16) -1, __R);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_fmsub_round_ps (__m512 __A, __mmask16 __U, __m512 __B,
+			    __m512 __C, const int __R)
+{
+  return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
+						   (__v16sf) __B,
+						   -(__v16sf) __C,
+						   (__mmask16) __U, __R);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask3_fmsub_round_ps (__m512 __A, __m512 __B, __m512 __C,
+			     __mmask16 __U, const int __R)
+{
+  return (__m512) __builtin_ia32_vfmsubps512_mask3 ((__v16sf) __A,
+						    (__v16sf) __B,
+						    (__v16sf) __C,
+						    (__mmask16) __U, __R);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_fmsub_round_ps (__mmask16 __U, __m512 __A, __m512 __B,
+			     __m512 __C, const int __R)
+{
+  return (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) __A,
+						    (__v16sf) __B,
+						    -(__v16sf) __C,
+						    (__mmask16) __U, __R);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_fmaddsub_round_pd (__m512d __A, __m512d __B, __m512d __C, const int __R)
+{
+  return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
+						       (__v8df) __B,
+						       (__v8df) __C,
+						       (__mmask8) -1, __R);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_fmaddsub_round_pd (__m512d __A, __mmask8 __U, __m512d __B,
+			       __m512d __C, const int __R)
+{
+  return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
+						       (__v8df) __B,
+						       (__v8df) __C,
+						       (__mmask8) __U, __R);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask3_fmaddsub_round_pd (__m512d __A, __m512d __B, __m512d __C,
+				__mmask8 __U, const int __R)
+{
+  return (__m512d) __builtin_ia32_vfmaddsubpd512_mask3 ((__v8df) __A,
+							(__v8df) __B,
+							(__v8df) __C,
+							(__mmask8) __U, __R);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_fmaddsub_round_pd (__mmask8 __U, __m512d __A, __m512d __B,
+				__m512d __C, const int __R)
+{
+  return (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) __A,
+							(__v8df) __B,
+							(__v8df) __C,
+							(__mmask8) __U, __R);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_fmaddsub_round_ps (__m512 __A, __m512 __B, __m512 __C, const int __R)
+{
+  return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
+						      (__v16sf) __B,
+						      (__v16sf) __C,
+						      (__mmask16) -1, __R);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_fmaddsub_round_ps (__m512 __A, __mmask16 __U, __m512 __B,
+			       __m512 __C, const int __R)
+{
+  return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
+						      (__v16sf) __B,
+						      (__v16sf) __C,
+						      (__mmask16) __U, __R);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask3_fmaddsub_round_ps (__m512 __A, __m512 __B, __m512 __C,
+				__mmask16 __U, const int __R)
+{
+  return (__m512) __builtin_ia32_vfmaddsubps512_mask3 ((__v16sf) __A,
+						       (__v16sf) __B,
+						       (__v16sf) __C,
+						       (__mmask16) __U, __R);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_fmaddsub_round_ps (__mmask16 __U, __m512 __A, __m512 __B,
+				__m512 __C, const int __R)
+{
+  return (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) __A,
+						       (__v16sf) __B,
+						       (__v16sf) __C,
+						       (__mmask16) __U, __R);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_fmsubadd_round_pd (__m512d __A, __m512d __B, __m512d __C, const int __R)
+{
+  return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
+						       (__v8df) __B,
+						       -(__v8df) __C,
+						       (__mmask8) -1, __R);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_fmsubadd_round_pd (__m512d __A, __mmask8 __U, __m512d __B,
+			       __m512d __C, const int __R)
+{
+  return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
+						       (__v8df) __B,
+						       -(__v8df) __C,
+						       (__mmask8) __U, __R);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask3_fmsubadd_round_pd (__m512d __A, __m512d __B, __m512d __C,
+				__mmask8 __U, const int __R)
+{
+  return (__m512d) __builtin_ia32_vfmsubaddpd512_mask3 ((__v8df) __A,
+							(__v8df) __B,
+							(__v8df) __C,
+							(__mmask8) __U, __R);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_fmsubadd_round_pd (__mmask8 __U, __m512d __A, __m512d __B,
+				__m512d __C, const int __R)
+{
+  return (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) __A,
+							(__v8df) __B,
+							-(__v8df) __C,
+							(__mmask8) __U, __R);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_fmsubadd_round_ps (__m512 __A, __m512 __B, __m512 __C, const int __R)
+{
+  return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
+						      (__v16sf) __B,
+						      -(__v16sf) __C,
+						      (__mmask16) -1, __R);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_fmsubadd_round_ps (__m512 __A, __mmask16 __U, __m512 __B,
+			       __m512 __C, const int __R)
+{
+  return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
+						      (__v16sf) __B,
+						      -(__v16sf) __C,
+						      (__mmask16) __U, __R);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask3_fmsubadd_round_ps (__m512 __A, __m512 __B, __m512 __C,
+				__mmask16 __U, const int __R)
+{
+  return (__m512) __builtin_ia32_vfmsubaddps512_mask3 ((__v16sf) __A,
+						       (__v16sf) __B,
+						       (__v16sf) __C,
+						       (__mmask16) __U, __R);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_fmsubadd_round_ps (__mmask16 __U, __m512 __A, __m512 __B,
+				__m512 __C, const int __R)
+{
+  return (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) __A,
+						       (__v16sf) __B,
+						       -(__v16sf) __C,
+						       (__mmask16) __U, __R);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_fnmadd_round_pd (__m512d __A, __m512d __B, __m512d __C, const int __R)
+{
+  return (__m512d) __builtin_ia32_vfmaddpd512_mask (-(__v8df) __A,
+						    (__v8df) __B,
+						    (__v8df) __C,
+						    (__mmask8) -1, __R);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_fnmadd_round_pd (__m512d __A, __mmask8 __U, __m512d __B,
+			     __m512d __C, const int __R)
+{
+  return (__m512d) __builtin_ia32_vfnmaddpd512_mask ((__v8df) __A,
+						     (__v8df) __B,
+						     (__v8df) __C,
+						     (__mmask8) __U, __R);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask3_fnmadd_round_pd (__m512d __A, __m512d __B, __m512d __C,
+			      __mmask8 __U, const int __R)
+{
+  return (__m512d) __builtin_ia32_vfmaddpd512_mask3 (-(__v8df) __A,
+						     (__v8df) __B,
+						     (__v8df) __C,
+						     (__mmask8) __U, __R);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_fnmadd_round_pd (__mmask8 __U, __m512d __A, __m512d __B,
+			      __m512d __C, const int __R)
+{
+  return (__m512d) __builtin_ia32_vfmaddpd512_maskz (-(__v8df) __A,
+						     (__v8df) __B,
+						     (__v8df) __C,
+						     (__mmask8) __U, __R);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_fnmadd_round_ps (__m512 __A, __m512 __B, __m512 __C, const int __R)
+{
+  return (__m512) __builtin_ia32_vfmaddps512_mask (-(__v16sf) __A,
+						   (__v16sf) __B,
+						   (__v16sf) __C,
+						   (__mmask16) -1, __R);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_fnmadd_round_ps (__m512 __A, __mmask16 __U, __m512 __B,
+			     __m512 __C, const int __R)
+{
+  return (__m512) __builtin_ia32_vfnmaddps512_mask ((__v16sf) __A,
+						    (__v16sf) __B,
+						    (__v16sf) __C,
+						    (__mmask16) __U, __R);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask3_fnmadd_round_ps (__m512 __A, __m512 __B, __m512 __C,
+			      __mmask16 __U, const int __R)
+{
+  return (__m512) __builtin_ia32_vfmaddps512_mask3 (-(__v16sf) __A,
+						    (__v16sf) __B,
+						    (__v16sf) __C,
+						    (__mmask16) __U, __R);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_fnmadd_round_ps (__mmask16 __U, __m512 __A, __m512 __B,
+			      __m512 __C, const int __R)
+{
+  return (__m512) __builtin_ia32_vfmaddps512_maskz (-(__v16sf) __A,
+						    (__v16sf) __B,
+						    (__v16sf) __C,
+						    (__mmask16) __U, __R);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_fnmsub_round_pd (__m512d __A, __m512d __B, __m512d __C, const int __R)
+{
+  return (__m512d) __builtin_ia32_vfmaddpd512_mask (-(__v8df) __A,
+						    (__v8df) __B,
+						    -(__v8df) __C,
+						    (__mmask8) -1, __R);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_fnmsub_round_pd (__m512d __A, __mmask8 __U, __m512d __B,
+			     __m512d __C, const int __R)
+{
+  return (__m512d) __builtin_ia32_vfnmsubpd512_mask ((__v8df) __A,
+						     (__v8df) __B,
+						     (__v8df) __C,
+						     (__mmask8) __U, __R);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask3_fnmsub_round_pd (__m512d __A, __m512d __B, __m512d __C,
+			      __mmask8 __U, const int __R)
+{
+  return (__m512d) __builtin_ia32_vfnmsubpd512_mask3 ((__v8df) __A,
+						      (__v8df) __B,
+						      (__v8df) __C,
+						      (__mmask8) __U, __R);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_fnmsub_round_pd (__mmask8 __U, __m512d __A, __m512d __B,
+			      __m512d __C, const int __R)
+{
+  return (__m512d) __builtin_ia32_vfmaddpd512_maskz (-(__v8df) __A,
+						     (__v8df) __B,
+						     -(__v8df) __C,
+						     (__mmask8) __U, __R);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_fnmsub_round_ps (__m512 __A, __m512 __B, __m512 __C, const int __R)
+{
+  return (__m512) __builtin_ia32_vfmaddps512_mask (-(__v16sf) __A,
+						   (__v16sf) __B,
+						   -(__v16sf) __C,
+						   (__mmask16) -1, __R);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_fnmsub_round_ps (__m512 __A, __mmask16 __U, __m512 __B,
+			     __m512 __C, const int __R)
+{
+  return (__m512) __builtin_ia32_vfnmsubps512_mask ((__v16sf) __A,
+						    (__v16sf) __B,
+						    (__v16sf) __C,
+						    (__mmask16) __U, __R);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask3_fnmsub_round_ps (__m512 __A, __m512 __B, __m512 __C,
+			      __mmask16 __U, const int __R)
+{
+  return (__m512) __builtin_ia32_vfnmsubps512_mask3 ((__v16sf) __A,
+						     (__v16sf) __B,
+						     (__v16sf) __C,
+						     (__mmask16) __U, __R);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_fnmsub_round_ps (__mmask16 __U, __m512 __A, __m512 __B,
+			      __m512 __C, const int __R)
+{
+  return (__m512) __builtin_ia32_vfmaddps512_maskz (-(__v16sf) __A,
+						    (__v16sf) __B,
+						    -(__v16sf) __C,
+						    (__mmask16) __U, __R);
+}
+#else
+#define _mm512_fmadd_round_pd(A, B, C, R)            \
+    (__m512d)__builtin_ia32_vfmaddpd512_mask(A, B, C, -1, R)
+
+#define _mm512_mask_fmadd_round_pd(A, U, B, C, R)    \
+    (__m512d)__builtin_ia32_vfmaddpd512_mask(A, B, C, U, R)
+
+#define _mm512_mask3_fmadd_round_pd(A, B, C, U, R)   \
+    (__m512d)__builtin_ia32_vfmaddpd512_mask3(A, B, C, U, R)
+
+#define _mm512_maskz_fmadd_round_pd(U, A, B, C, R)   \
+    (__m512d)__builtin_ia32_vfmaddpd512_maskz(A, B, C, U, R)
+
+#define _mm512_fmadd_round_ps(A, B, C, R)            \
+    (__m512)__builtin_ia32_vfmaddps512_mask(A, B, C, -1, R)
+
+#define _mm512_mask_fmadd_round_ps(A, U, B, C, R)    \
+    (__m512)__builtin_ia32_vfmaddps512_mask(A, B, C, U, R)
+
+#define _mm512_mask3_fmadd_round_ps(A, B, C, U, R)   \
+    (__m512)__builtin_ia32_vfmaddps512_mask3(A, B, C, U, R)
+
+#define _mm512_maskz_fmadd_round_ps(U, A, B, C, R)   \
+    (__m512)__builtin_ia32_vfmaddps512_maskz(A, B, C, U, R)
+
+#define _mm512_fmsub_round_pd(A, B, C, R)            \
+    (__m512d)__builtin_ia32_vfmaddpd512_mask(A, B, -(C), -1, R)
+
+#define _mm512_mask_fmsub_round_pd(A, U, B, C, R)    \
+    (__m512d)__builtin_ia32_vfmaddpd512_mask(A, B, -(C), U, R)
+
+#define _mm512_mask3_fmsub_round_pd(A, B, C, U, R)   \
+    (__m512d)__builtin_ia32_vfmsubpd512_mask3(A, B, C, U, R)
+
+#define _mm512_maskz_fmsub_round_pd(U, A, B, C, R)   \
+    (__m512d)__builtin_ia32_vfmaddpd512_maskz(A, B, -(C), U, R)
+
+#define _mm512_fmsub_round_ps(A, B, C, R)            \
+    (__m512)__builtin_ia32_vfmaddps512_mask(A, B, -(C), -1, R)
+
+#define _mm512_mask_fmsub_round_ps(A, U, B, C, R)    \
+    (__m512)__builtin_ia32_vfmaddps512_mask(A, B, -(C), U, R)
+
+#define _mm512_mask3_fmsub_round_ps(A, B, C, U, R)   \
+    (__m512)__builtin_ia32_vfmsubps512_mask3(A, B, C, U, R)
+
+#define _mm512_maskz_fmsub_round_ps(U, A, B, C, R)   \
+    (__m512)__builtin_ia32_vfmaddps512_maskz(A, B, -(C), U, R)
+
+#define _mm512_fmaddsub_round_pd(A, B, C, R)            \
+    (__m512d)__builtin_ia32_vfmaddsubpd512_mask(A, B, C, -1, R)
+
+#define _mm512_mask_fmaddsub_round_pd(A, U, B, C, R)    \
+    (__m512d)__builtin_ia32_vfmaddpd512_mask(A, B, C, U, R)
+
+#define _mm512_mask3_fmaddsub_round_pd(A, B, C, U, R)   \
+    (__m512d)__builtin_ia32_vfmaddsubpd512_mask3(A, B, C, U, R)
+
+#define _mm512_maskz_fmaddsub_round_pd(U, A, B, C, R)   \
+    (__m512d)__builtin_ia32_vfmaddsubpd512_maskz(A, B, C, U, R)
+
+#define _mm512_fmaddsub_round_ps(A, B, C, R)            \
+    (__m512)__builtin_ia32_vfmaddsubps512_mask(A, B, C, -1, R)
+
+#define _mm512_mask_fmaddsub_round_ps(A, U, B, C, R)    \
+    (__m512)__builtin_ia32_vfmaddsubps512_mask(A, B, C, U, R)
+
+#define _mm512_mask3_fmaddsub_round_ps(A, B, C, U, R)   \
+    (__m512)__builtin_ia32_vfmaddsubps512_mask3(A, B, C, U, R)
+
+#define _mm512_maskz_fmaddsub_round_ps(U, A, B, C, R)   \
+    (__m512)__builtin_ia32_vfmaddsubps512_maskz(A, B, C, U, R)
+
+#define _mm512_fmsubadd_round_pd(A, B, C, R)            \
+    (__m512d)__builtin_ia32_vfmaddsubpd512_mask(A, B, -(C), -1, R)
+
+#define _mm512_mask_fmsubadd_round_pd(A, U, B, C, R)    \
+    (__m512d)__builtin_ia32_vfmaddsubpd512_mask(A, B, -(C), U, R)
+
+#define _mm512_mask3_fmsubadd_round_pd(A, B, C, U, R)   \
+    (__m512d)__builtin_ia32_vfmsubaddpd512_mask3(A, B, C, U, R)
+
+#define _mm512_maskz_fmsubadd_round_pd(U, A, B, C, R)   \
+    (__m512d)__builtin_ia32_vfmaddsubpd512_maskz(A, B, -(C), U, R)
+
+#define _mm512_fmsubadd_round_ps(A, B, C, R)            \
+    (__m512)__builtin_ia32_vfmaddsubps512_mask(A, B, -(C), -1, R)
+
+#define _mm512_mask_fmsubadd_round_ps(A, U, B, C, R)    \
+    (__m512)__builtin_ia32_vfmaddsubps512_mask(A, B, -(C), U, R)
+
+#define _mm512_mask3_fmsubadd_round_ps(A, B, C, U, R)   \
+    (__m512)__builtin_ia32_vfmsubaddps512_mask3(A, B, C, U, R)
+
+#define _mm512_maskz_fmsubadd_round_ps(U, A, B, C, R)   \
+    (__m512)__builtin_ia32_vfmaddsubps512_maskz(A, B, -(C), U, R)
+
+#define _mm512_fnmadd_round_pd(A, B, C, R)            \
+    (__m512d)__builtin_ia32_vfmaddpd512_mask(-(A), B, C, -1, R)
+
+#define _mm512_mask_fnmadd_round_pd(A, U, B, C, R)    \
+    (__m512d)__builtin_ia32_vfnmaddpd512_mask(-(A), B, C, U, R)
+
+#define _mm512_mask3_fnmadd_round_pd(A, B, C, U, R)   \
+    (__m512d)__builtin_ia32_vfmaddpd512_mask3(-(A), B, C, U, R)
+
+#define _mm512_maskz_fnmadd_round_pd(U, A, B, C, R)   \
+    (__m512d)__builtin_ia32_vfmaddpd512_maskz(-(A), B, C, U, R)
+
+#define _mm512_fnmadd_round_ps(A, B, C, R)            \
+    (__m512)__builtin_ia32_vfmaddps512_mask(-(A), B, C, -1, R)
+
+#define _mm512_mask_fnmadd_round_ps(A, U, B, C, R)    \
+    (__m512)__builtin_ia32_vfnmaddps512_mask(-(A), B, C, U, R)
+
+#define _mm512_mask3_fnmadd_round_ps(A, B, C, U, R)   \
+    (__m512)__builtin_ia32_vfmaddps512_mask3(-(A), B, C, U, R)
+
+#define _mm512_maskz_fnmadd_round_ps(U, A, B, C, R)   \
+    (__m512)__builtin_ia32_vfmaddps512_maskz(-(A), B, C, U, R)
+
+#define _mm512_fnmsub_round_pd(A, B, C, R)            \
+    (__m512d)__builtin_ia32_vfmaddpd512_mask(-(A), B, -(C), -1, R)
+
+#define _mm512_mask_fnmsub_round_pd(A, U, B, C, R)    \
+    (__m512d)__builtin_ia32_vfnmsubpd512_mask(A, B, C, U, R)
+
+#define _mm512_mask3_fnmsub_round_pd(A, B, C, U, R)   \
+    (__m512d)__builtin_ia32_vfnmsubpd512_mask3(A, B, C, U, R)
+
+#define _mm512_maskz_fnmsub_round_pd(U, A, B, C, R)   \
+    (__m512d)__builtin_ia32_vfmaddpd512_maskz(-(A), B, -(C), U, R)
+
+#define _mm512_fnmsub_round_ps(A, B, C, R)            \
+    (__m512)__builtin_ia32_vfmaddps512_mask(-(A), B, -(C), -1, R)
+
+#define _mm512_mask_fnmsub_round_ps(A, U, B, C, R)    \
+    (__m512)__builtin_ia32_vfnmsubps512_mask(A, B, C, U, R)
+
+#define _mm512_mask3_fnmsub_round_ps(A, B, C, U, R)   \
+    (__m512)__builtin_ia32_vfnmsubps512_mask3(A, B, C, U, R)
+
+#define _mm512_maskz_fnmsub_round_ps(U, A, B, C, R)   \
+    (__m512)__builtin_ia32_vfmaddps512_maskz(-(A), B, -(C), U, R)
+#endif
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_abs_epi64 (__m512i __A)
+{
+  return (__m512i) __builtin_ia32_pabsq512_mask ((__v8di) __A,
+						 (__v8di)
+						 _mm512_undefined_si512 (),
+						 (__mmask8) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_abs_epi64 (__m512i __W, __mmask8 __U, __m512i __A)
+{
+  return (__m512i) __builtin_ia32_pabsq512_mask ((__v8di) __A,
+						 (__v8di) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_abs_epi64 (__mmask8 __U, __m512i __A)
+{
+  return (__m512i) __builtin_ia32_pabsq512_mask ((__v8di) __A,
+						 (__v8di)
+						 _mm512_setzero_si512 (),
+						 (__mmask8) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_abs_epi32 (__m512i __A)
+{
+  return (__m512i) __builtin_ia32_pabsd512_mask ((__v16si) __A,
+						 (__v16si)
+						 _mm512_undefined_si512 (),
+						 (__mmask16) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_abs_epi32 (__m512i __W, __mmask16 __U, __m512i __A)
+{
+  return (__m512i) __builtin_ia32_pabsd512_mask ((__v16si) __A,
+						 (__v16si) __W,
+						 (__mmask16) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_abs_epi32 (__mmask16 __U, __m512i __A)
+{
+  return (__m512i) __builtin_ia32_pabsd512_mask ((__v16si) __A,
+						 (__v16si)
+						 _mm512_setzero_si512 (),
+						 (__mmask16) __U);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_broadcastss_ps (__m128 __A)
+{
+  return (__m512) __builtin_ia32_broadcastss512 ((__v4sf) __A,
+						 (__v16sf)
+						 _mm512_undefined_ps (),
+						 (__mmask16) -1);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_broadcastss_ps (__m512 __O, __mmask16 __M, __m128 __A)
+{
+  return (__m512) __builtin_ia32_broadcastss512 ((__v4sf) __A,
+						 (__v16sf) __O, __M);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_broadcastss_ps (__mmask16 __M, __m128 __A)
+{
+  return (__m512) __builtin_ia32_broadcastss512 ((__v4sf) __A,
+						 (__v16sf)
+						 _mm512_setzero_ps (),
+						 __M);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_broadcastsd_pd (__m128d __A)
+{
+  return (__m512d) __builtin_ia32_broadcastsd512 ((__v2df) __A,
+						  (__v8df)
+						  _mm512_undefined_pd (),
+						  (__mmask8) -1);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_broadcastsd_pd (__m512d __O, __mmask8 __M, __m128d __A)
+{
+  return (__m512d) __builtin_ia32_broadcastsd512 ((__v2df) __A,
+						  (__v8df) __O, __M);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_broadcastsd_pd (__mmask8 __M, __m128d __A)
+{
+  return (__m512d) __builtin_ia32_broadcastsd512 ((__v2df) __A,
+						  (__v8df)
+						  _mm512_setzero_pd (),
+						  __M);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_broadcastd_epi32 (__m128i __A)
+{
+  return (__m512i) __builtin_ia32_pbroadcastd512 ((__v4si) __A,
+						  (__v16si)
+						  _mm512_undefined_si512 (),
+						  (__mmask16) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_broadcastd_epi32 (__m512i __O, __mmask16 __M, __m128i __A)
+{
+  return (__m512i) __builtin_ia32_pbroadcastd512 ((__v4si) __A,
+						  (__v16si) __O, __M);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_broadcastd_epi32 (__mmask16 __M, __m128i __A)
+{
+  return (__m512i) __builtin_ia32_pbroadcastd512 ((__v4si) __A,
+						  (__v16si)
+						  _mm512_setzero_si512 (),
+						  __M);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_set1_epi32 (int __A)
+{
+  return (__m512i) __builtin_ia32_pbroadcastd512_gpr_mask (__A,
+							   (__v16si)
+							   _mm512_undefined_si512 (),
+							   (__mmask16)(-1));
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_set1_epi32 (__m512i __O, __mmask16 __M, int __A)
+{
+  return (__m512i) __builtin_ia32_pbroadcastd512_gpr_mask (__A, (__v16si) __O,
+							   __M);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_set1_epi32 (__mmask16 __M, int __A)
+{
+  return (__m512i)
+	 __builtin_ia32_pbroadcastd512_gpr_mask (__A,
+						 (__v16si) _mm512_setzero_si512 (),
+						 __M);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_broadcastq_epi64 (__m128i __A)
+{
+  return (__m512i) __builtin_ia32_pbroadcastq512 ((__v2di) __A,
+						  (__v8di)
+						  _mm512_undefined_si512 (),
+						  (__mmask8) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_broadcastq_epi64 (__m512i __O, __mmask8 __M, __m128i __A)
+{
+  return (__m512i) __builtin_ia32_pbroadcastq512 ((__v2di) __A,
+						  (__v8di) __O, __M);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_broadcastq_epi64 (__mmask8 __M, __m128i __A)
+{
+  return (__m512i) __builtin_ia32_pbroadcastq512 ((__v2di) __A,
+						  (__v8di)
+						  _mm512_setzero_si512 (),
+						  __M);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_set1_epi64 (long long __A)
+{
+  return (__m512i) __builtin_ia32_pbroadcastq512_gpr_mask (__A,
+							   (__v8di)
+							   _mm512_undefined_si512 (),
+							   (__mmask8)(-1));
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_set1_epi64 (__m512i __O, __mmask8 __M, long long __A)
+{
+  return (__m512i) __builtin_ia32_pbroadcastq512_gpr_mask (__A, (__v8di) __O,
+							   __M);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_set1_epi64 (__mmask8 __M, long long __A)
+{
+  return (__m512i)
+	 __builtin_ia32_pbroadcastq512_gpr_mask (__A,
+						 (__v8di) _mm512_setzero_si512 (),
+						 __M);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_broadcast_f32x4 (__m128 __A)
+{
+  return (__m512) __builtin_ia32_broadcastf32x4_512 ((__v4sf) __A,
+						     (__v16sf)
+						     _mm512_undefined_ps (),
+						     (__mmask16) -1);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_broadcast_f32x4 (__m512 __O, __mmask16 __M, __m128 __A)
+{
+  return (__m512) __builtin_ia32_broadcastf32x4_512 ((__v4sf) __A,
+						     (__v16sf) __O,
+						     __M);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_broadcast_f32x4 (__mmask16 __M, __m128 __A)
+{
+  return (__m512) __builtin_ia32_broadcastf32x4_512 ((__v4sf) __A,
+						     (__v16sf)
+						     _mm512_setzero_ps (),
+						     __M);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_broadcast_i32x4 (__m128i __A)
+{
+  return (__m512i) __builtin_ia32_broadcasti32x4_512 ((__v4si) __A,
+						      (__v16si)
+						      _mm512_undefined_si512 (),
+						      (__mmask16) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_broadcast_i32x4 (__m512i __O, __mmask16 __M, __m128i __A)
+{
+  return (__m512i) __builtin_ia32_broadcasti32x4_512 ((__v4si) __A,
+						      (__v16si) __O,
+						      __M);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_broadcast_i32x4 (__mmask16 __M, __m128i __A)
+{
+  return (__m512i) __builtin_ia32_broadcasti32x4_512 ((__v4si) __A,
+						      (__v16si)
+						      _mm512_setzero_si512 (),
+						      __M);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_broadcast_f64x4 (__m256d __A)
+{
+  return (__m512d) __builtin_ia32_broadcastf64x4_512 ((__v4df) __A,
+						      (__v8df)
+						      _mm512_undefined_pd (),
+						      (__mmask8) -1);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_broadcast_f64x4 (__m512d __O, __mmask8 __M, __m256d __A)
+{
+  return (__m512d) __builtin_ia32_broadcastf64x4_512 ((__v4df) __A,
+						      (__v8df) __O,
+						      __M);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_broadcast_f64x4 (__mmask8 __M, __m256d __A)
+{
+  return (__m512d) __builtin_ia32_broadcastf64x4_512 ((__v4df) __A,
+						      (__v8df)
+						      _mm512_setzero_pd (),
+						      __M);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_broadcast_i64x4 (__m256i __A)
+{
+  return (__m512i) __builtin_ia32_broadcasti64x4_512 ((__v4di) __A,
+						      (__v8di)
+						      _mm512_undefined_si512 (),
+						      (__mmask8) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_broadcast_i64x4 (__m512i __O, __mmask8 __M, __m256i __A)
+{
+  return (__m512i) __builtin_ia32_broadcasti64x4_512 ((__v4di) __A,
+						      (__v8di) __O,
+						      __M);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_broadcast_i64x4 (__mmask8 __M, __m256i __A)
+{
+  return (__m512i) __builtin_ia32_broadcasti64x4_512 ((__v4di) __A,
+						      (__v8di)
+						      _mm512_setzero_si512 (),
+						      __M);
+}
+
+typedef enum
+{
+  _MM_PERM_AAAA = 0x00, _MM_PERM_AAAB = 0x01, _MM_PERM_AAAC = 0x02,
+  _MM_PERM_AAAD = 0x03, _MM_PERM_AABA = 0x04, _MM_PERM_AABB = 0x05,
+  _MM_PERM_AABC = 0x06, _MM_PERM_AABD = 0x07, _MM_PERM_AACA = 0x08,
+  _MM_PERM_AACB = 0x09, _MM_PERM_AACC = 0x0A, _MM_PERM_AACD = 0x0B,
+  _MM_PERM_AADA = 0x0C, _MM_PERM_AADB = 0x0D, _MM_PERM_AADC = 0x0E,
+  _MM_PERM_AADD = 0x0F, _MM_PERM_ABAA = 0x10, _MM_PERM_ABAB = 0x11,
+  _MM_PERM_ABAC = 0x12, _MM_PERM_ABAD = 0x13, _MM_PERM_ABBA = 0x14,
+  _MM_PERM_ABBB = 0x15, _MM_PERM_ABBC = 0x16, _MM_PERM_ABBD = 0x17,
+  _MM_PERM_ABCA = 0x18, _MM_PERM_ABCB = 0x19, _MM_PERM_ABCC = 0x1A,
+  _MM_PERM_ABCD = 0x1B, _MM_PERM_ABDA = 0x1C, _MM_PERM_ABDB = 0x1D,
+  _MM_PERM_ABDC = 0x1E, _MM_PERM_ABDD = 0x1F, _MM_PERM_ACAA = 0x20,
+  _MM_PERM_ACAB = 0x21, _MM_PERM_ACAC = 0x22, _MM_PERM_ACAD = 0x23,
+  _MM_PERM_ACBA = 0x24, _MM_PERM_ACBB = 0x25, _MM_PERM_ACBC = 0x26,
+  _MM_PERM_ACBD = 0x27, _MM_PERM_ACCA = 0x28, _MM_PERM_ACCB = 0x29,
+  _MM_PERM_ACCC = 0x2A, _MM_PERM_ACCD = 0x2B, _MM_PERM_ACDA = 0x2C,
+  _MM_PERM_ACDB = 0x2D, _MM_PERM_ACDC = 0x2E, _MM_PERM_ACDD = 0x2F,
+  _MM_PERM_ADAA = 0x30, _MM_PERM_ADAB = 0x31, _MM_PERM_ADAC = 0x32,
+  _MM_PERM_ADAD = 0x33, _MM_PERM_ADBA = 0x34, _MM_PERM_ADBB = 0x35,
+  _MM_PERM_ADBC = 0x36, _MM_PERM_ADBD = 0x37, _MM_PERM_ADCA = 0x38,
+  _MM_PERM_ADCB = 0x39, _MM_PERM_ADCC = 0x3A, _MM_PERM_ADCD = 0x3B,
+  _MM_PERM_ADDA = 0x3C, _MM_PERM_ADDB = 0x3D, _MM_PERM_ADDC = 0x3E,
+  _MM_PERM_ADDD = 0x3F, _MM_PERM_BAAA = 0x40, _MM_PERM_BAAB = 0x41,
+  _MM_PERM_BAAC = 0x42, _MM_PERM_BAAD = 0x43, _MM_PERM_BABA = 0x44,
+  _MM_PERM_BABB = 0x45, _MM_PERM_BABC = 0x46, _MM_PERM_BABD = 0x47,
+  _MM_PERM_BACA = 0x48, _MM_PERM_BACB = 0x49, _MM_PERM_BACC = 0x4A,
+  _MM_PERM_BACD = 0x4B, _MM_PERM_BADA = 0x4C, _MM_PERM_BADB = 0x4D,
+  _MM_PERM_BADC = 0x4E, _MM_PERM_BADD = 0x4F, _MM_PERM_BBAA = 0x50,
+  _MM_PERM_BBAB = 0x51, _MM_PERM_BBAC = 0x52, _MM_PERM_BBAD = 0x53,
+  _MM_PERM_BBBA = 0x54, _MM_PERM_BBBB = 0x55, _MM_PERM_BBBC = 0x56,
+  _MM_PERM_BBBD = 0x57, _MM_PERM_BBCA = 0x58, _MM_PERM_BBCB = 0x59,
+  _MM_PERM_BBCC = 0x5A, _MM_PERM_BBCD = 0x5B, _MM_PERM_BBDA = 0x5C,
+  _MM_PERM_BBDB = 0x5D, _MM_PERM_BBDC = 0x5E, _MM_PERM_BBDD = 0x5F,
+  _MM_PERM_BCAA = 0x60, _MM_PERM_BCAB = 0x61, _MM_PERM_BCAC = 0x62,
+  _MM_PERM_BCAD = 0x63, _MM_PERM_BCBA = 0x64, _MM_PERM_BCBB = 0x65,
+  _MM_PERM_BCBC = 0x66, _MM_PERM_BCBD = 0x67, _MM_PERM_BCCA = 0x68,
+  _MM_PERM_BCCB = 0x69, _MM_PERM_BCCC = 0x6A, _MM_PERM_BCCD = 0x6B,
+  _MM_PERM_BCDA = 0x6C, _MM_PERM_BCDB = 0x6D, _MM_PERM_BCDC = 0x6E,
+  _MM_PERM_BCDD = 0x6F, _MM_PERM_BDAA = 0x70, _MM_PERM_BDAB = 0x71,
+  _MM_PERM_BDAC = 0x72, _MM_PERM_BDAD = 0x73, _MM_PERM_BDBA = 0x74,
+  _MM_PERM_BDBB = 0x75, _MM_PERM_BDBC = 0x76, _MM_PERM_BDBD = 0x77,
+  _MM_PERM_BDCA = 0x78, _MM_PERM_BDCB = 0x79, _MM_PERM_BDCC = 0x7A,
+  _MM_PERM_BDCD = 0x7B, _MM_PERM_BDDA = 0x7C, _MM_PERM_BDDB = 0x7D,
+  _MM_PERM_BDDC = 0x7E, _MM_PERM_BDDD = 0x7F, _MM_PERM_CAAA = 0x80,
+  _MM_PERM_CAAB = 0x81, _MM_PERM_CAAC = 0x82, _MM_PERM_CAAD = 0x83,
+  _MM_PERM_CABA = 0x84, _MM_PERM_CABB = 0x85, _MM_PERM_CABC = 0x86,
+  _MM_PERM_CABD = 0x87, _MM_PERM_CACA = 0x88, _MM_PERM_CACB = 0x89,
+  _MM_PERM_CACC = 0x8A, _MM_PERM_CACD = 0x8B, _MM_PERM_CADA = 0x8C,
+  _MM_PERM_CADB = 0x8D, _MM_PERM_CADC = 0x8E, _MM_PERM_CADD = 0x8F,
+  _MM_PERM_CBAA = 0x90, _MM_PERM_CBAB = 0x91, _MM_PERM_CBAC = 0x92,
+  _MM_PERM_CBAD = 0x93, _MM_PERM_CBBA = 0x94, _MM_PERM_CBBB = 0x95,
+  _MM_PERM_CBBC = 0x96, _MM_PERM_CBBD = 0x97, _MM_PERM_CBCA = 0x98,
+  _MM_PERM_CBCB = 0x99, _MM_PERM_CBCC = 0x9A, _MM_PERM_CBCD = 0x9B,
+  _MM_PERM_CBDA = 0x9C, _MM_PERM_CBDB = 0x9D, _MM_PERM_CBDC = 0x9E,
+  _MM_PERM_CBDD = 0x9F, _MM_PERM_CCAA = 0xA0, _MM_PERM_CCAB = 0xA1,
+  _MM_PERM_CCAC = 0xA2, _MM_PERM_CCAD = 0xA3, _MM_PERM_CCBA = 0xA4,
+  _MM_PERM_CCBB = 0xA5, _MM_PERM_CCBC = 0xA6, _MM_PERM_CCBD = 0xA7,
+  _MM_PERM_CCCA = 0xA8, _MM_PERM_CCCB = 0xA9, _MM_PERM_CCCC = 0xAA,
+  _MM_PERM_CCCD = 0xAB, _MM_PERM_CCDA = 0xAC, _MM_PERM_CCDB = 0xAD,
+  _MM_PERM_CCDC = 0xAE, _MM_PERM_CCDD = 0xAF, _MM_PERM_CDAA = 0xB0,
+  _MM_PERM_CDAB = 0xB1, _MM_PERM_CDAC = 0xB2, _MM_PERM_CDAD = 0xB3,
+  _MM_PERM_CDBA = 0xB4, _MM_PERM_CDBB = 0xB5, _MM_PERM_CDBC = 0xB6,
+  _MM_PERM_CDBD = 0xB7, _MM_PERM_CDCA = 0xB8, _MM_PERM_CDCB = 0xB9,
+  _MM_PERM_CDCC = 0xBA, _MM_PERM_CDCD = 0xBB, _MM_PERM_CDDA = 0xBC,
+  _MM_PERM_CDDB = 0xBD, _MM_PERM_CDDC = 0xBE, _MM_PERM_CDDD = 0xBF,
+  _MM_PERM_DAAA = 0xC0, _MM_PERM_DAAB = 0xC1, _MM_PERM_DAAC = 0xC2,
+  _MM_PERM_DAAD = 0xC3, _MM_PERM_DABA = 0xC4, _MM_PERM_DABB = 0xC5,
+  _MM_PERM_DABC = 0xC6, _MM_PERM_DABD = 0xC7, _MM_PERM_DACA = 0xC8,
+  _MM_PERM_DACB = 0xC9, _MM_PERM_DACC = 0xCA, _MM_PERM_DACD = 0xCB,
+  _MM_PERM_DADA = 0xCC, _MM_PERM_DADB = 0xCD, _MM_PERM_DADC = 0xCE,
+  _MM_PERM_DADD = 0xCF, _MM_PERM_DBAA = 0xD0, _MM_PERM_DBAB = 0xD1,
+  _MM_PERM_DBAC = 0xD2, _MM_PERM_DBAD = 0xD3, _MM_PERM_DBBA = 0xD4,
+  _MM_PERM_DBBB = 0xD5, _MM_PERM_DBBC = 0xD6, _MM_PERM_DBBD = 0xD7,
+  _MM_PERM_DBCA = 0xD8, _MM_PERM_DBCB = 0xD9, _MM_PERM_DBCC = 0xDA,
+  _MM_PERM_DBCD = 0xDB, _MM_PERM_DBDA = 0xDC, _MM_PERM_DBDB = 0xDD,
+  _MM_PERM_DBDC = 0xDE, _MM_PERM_DBDD = 0xDF, _MM_PERM_DCAA = 0xE0,
+  _MM_PERM_DCAB = 0xE1, _MM_PERM_DCAC = 0xE2, _MM_PERM_DCAD = 0xE3,
+  _MM_PERM_DCBA = 0xE4, _MM_PERM_DCBB = 0xE5, _MM_PERM_DCBC = 0xE6,
+  _MM_PERM_DCBD = 0xE7, _MM_PERM_DCCA = 0xE8, _MM_PERM_DCCB = 0xE9,
+  _MM_PERM_DCCC = 0xEA, _MM_PERM_DCCD = 0xEB, _MM_PERM_DCDA = 0xEC,
+  _MM_PERM_DCDB = 0xED, _MM_PERM_DCDC = 0xEE, _MM_PERM_DCDD = 0xEF,
+  _MM_PERM_DDAA = 0xF0, _MM_PERM_DDAB = 0xF1, _MM_PERM_DDAC = 0xF2,
+  _MM_PERM_DDAD = 0xF3, _MM_PERM_DDBA = 0xF4, _MM_PERM_DDBB = 0xF5,
+  _MM_PERM_DDBC = 0xF6, _MM_PERM_DDBD = 0xF7, _MM_PERM_DDCA = 0xF8,
+  _MM_PERM_DDCB = 0xF9, _MM_PERM_DDCC = 0xFA, _MM_PERM_DDCD = 0xFB,
+  _MM_PERM_DDDA = 0xFC, _MM_PERM_DDDB = 0xFD, _MM_PERM_DDDC = 0xFE,
+  _MM_PERM_DDDD = 0xFF
+} _MM_PERM_ENUM;
+
+#ifdef __OPTIMIZE__
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_shuffle_epi32 (__m512i __A, _MM_PERM_ENUM __mask)
+{
+  return (__m512i) __builtin_ia32_pshufd512_mask ((__v16si) __A,
+						  __mask,
+						  (__v16si)
+						  _mm512_undefined_si512 (),
+						  (__mmask16) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_shuffle_epi32 (__m512i __W, __mmask16 __U, __m512i __A,
+			   _MM_PERM_ENUM __mask)
+{
+  return (__m512i) __builtin_ia32_pshufd512_mask ((__v16si) __A,
+						  __mask,
+						  (__v16si) __W,
+						  (__mmask16) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_shuffle_epi32 (__mmask16 __U, __m512i __A, _MM_PERM_ENUM __mask)
+{
+  return (__m512i) __builtin_ia32_pshufd512_mask ((__v16si) __A,
+						  __mask,
+						  (__v16si)
+						  _mm512_setzero_si512 (),
+						  (__mmask16) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_shuffle_i64x2 (__m512i __A, __m512i __B, const int __imm)
+{
+  return (__m512i) __builtin_ia32_shuf_i64x2_mask ((__v8di) __A,
+						   (__v8di) __B, __imm,
+						   (__v8di)
+						   _mm512_undefined_si512 (),
+						   (__mmask8) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_shuffle_i64x2 (__m512i __W, __mmask8 __U, __m512i __A,
+			   __m512i __B, const int __imm)
+{
+  return (__m512i) __builtin_ia32_shuf_i64x2_mask ((__v8di) __A,
+						   (__v8di) __B, __imm,
+						   (__v8di) __W,
+						   (__mmask8) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_shuffle_i64x2 (__mmask8 __U, __m512i __A, __m512i __B,
+			    const int __imm)
+{
+  return (__m512i) __builtin_ia32_shuf_i64x2_mask ((__v8di) __A,
+						   (__v8di) __B, __imm,
+						   (__v8di)
+						   _mm512_setzero_si512 (),
+						   (__mmask8) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_shuffle_i32x4 (__m512i __A, __m512i __B, const int __imm)
+{
+  return (__m512i) __builtin_ia32_shuf_i32x4_mask ((__v16si) __A,
+						   (__v16si) __B,
+						   __imm,
+						   (__v16si)
+						   _mm512_undefined_si512 (),
+						   (__mmask16) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_shuffle_i32x4 (__m512i __W, __mmask16 __U, __m512i __A,
+			   __m512i __B, const int __imm)
+{
+  return (__m512i) __builtin_ia32_shuf_i32x4_mask ((__v16si) __A,
+						   (__v16si) __B,
+						   __imm,
+						   (__v16si) __W,
+						   (__mmask16) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_shuffle_i32x4 (__mmask16 __U, __m512i __A, __m512i __B,
+			    const int __imm)
+{
+  return (__m512i) __builtin_ia32_shuf_i32x4_mask ((__v16si) __A,
+						   (__v16si) __B,
+						   __imm,
+						   (__v16si)
+						   _mm512_setzero_si512 (),
+						   (__mmask16) __U);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_shuffle_f64x2 (__m512d __A, __m512d __B, const int __imm)
+{
+  return (__m512d) __builtin_ia32_shuf_f64x2_mask ((__v8df) __A,
+						   (__v8df) __B, __imm,
+						   (__v8df)
+						   _mm512_undefined_pd (),
+						   (__mmask8) -1);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_shuffle_f64x2 (__m512d __W, __mmask8 __U, __m512d __A,
+			   __m512d __B, const int __imm)
+{
+  return (__m512d) __builtin_ia32_shuf_f64x2_mask ((__v8df) __A,
+						   (__v8df) __B, __imm,
+						   (__v8df) __W,
+						   (__mmask8) __U);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_shuffle_f64x2 (__mmask8 __U, __m512d __A, __m512d __B,
+			    const int __imm)
+{
+  return (__m512d) __builtin_ia32_shuf_f64x2_mask ((__v8df) __A,
+						   (__v8df) __B, __imm,
+						   (__v8df)
+						   _mm512_setzero_pd (),
+						   (__mmask8) __U);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_shuffle_f32x4 (__m512 __A, __m512 __B, const int __imm)
+{
+  return (__m512) __builtin_ia32_shuf_f32x4_mask ((__v16sf) __A,
+						  (__v16sf) __B, __imm,
+						  (__v16sf)
+						  _mm512_undefined_ps (),
+						  (__mmask16) -1);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_shuffle_f32x4 (__m512 __W, __mmask16 __U, __m512 __A,
+			   __m512 __B, const int __imm)
+{
+  return (__m512) __builtin_ia32_shuf_f32x4_mask ((__v16sf) __A,
+						  (__v16sf) __B, __imm,
+						  (__v16sf) __W,
+						  (__mmask16) __U);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_shuffle_f32x4 (__mmask16 __U, __m512 __A, __m512 __B,
+			    const int __imm)
+{
+  return (__m512) __builtin_ia32_shuf_f32x4_mask ((__v16sf) __A,
+						  (__v16sf) __B, __imm,
+						  (__v16sf)
+						  _mm512_setzero_ps (),
+						  (__mmask16) __U);
+}
+
+#else
+#define _mm512_shuffle_epi32(X, C)                                      \
+  ((__m512i)  __builtin_ia32_pshufd512_mask ((__v16si)(__m512i)(X), (int)(C),\
+    (__v16si)(__m512i)_mm512_undefined_si512 (),\
+    (__mmask16)-1))
+
+#define _mm512_mask_shuffle_epi32(W, U, X, C)                           \
+  ((__m512i)  __builtin_ia32_pshufd512_mask ((__v16si)(__m512i)(X), (int)(C),\
+    (__v16si)(__m512i)(W),\
+    (__mmask16)(U)))
+
+#define _mm512_maskz_shuffle_epi32(U, X, C)                             \
+  ((__m512i)  __builtin_ia32_pshufd512_mask ((__v16si)(__m512i)(X), (int)(C),\
+    (__v16si)(__m512i)_mm512_setzero_si512 (),\
+    (__mmask16)(U)))
+
+#define _mm512_shuffle_i64x2(X, Y, C)                                   \
+  ((__m512i)  __builtin_ia32_shuf_i64x2_mask ((__v8di)(__m512i)(X),     \
+      (__v8di)(__m512i)(Y), (int)(C),\
+    (__v8di)(__m512i)_mm512_undefined_si512 (),\
+    (__mmask8)-1))
+
+#define _mm512_mask_shuffle_i64x2(W, U, X, Y, C)                        \
+  ((__m512i)  __builtin_ia32_shuf_i64x2_mask ((__v8di)(__m512i)(X),     \
+      (__v8di)(__m512i)(Y), (int)(C),\
+    (__v8di)(__m512i)(W),\
+    (__mmask8)(U)))
+
+#define _mm512_maskz_shuffle_i64x2(U, X, Y, C)                          \
+  ((__m512i)  __builtin_ia32_shuf_i64x2_mask ((__v8di)(__m512i)(X),     \
+      (__v8di)(__m512i)(Y), (int)(C),\
+    (__v8di)(__m512i)_mm512_setzero_si512 (),\
+    (__mmask8)(U)))
+
+#define _mm512_shuffle_i32x4(X, Y, C)                                   \
+  ((__m512i)  __builtin_ia32_shuf_i32x4_mask ((__v16si)(__m512i)(X),    \
+      (__v16si)(__m512i)(Y), (int)(C),\
+    (__v16si)(__m512i)_mm512_undefined_si512 (),\
+    (__mmask16)-1))
+
+#define _mm512_mask_shuffle_i32x4(W, U, X, Y, C)                        \
+  ((__m512i)  __builtin_ia32_shuf_i32x4_mask ((__v16si)(__m512i)(X),    \
+      (__v16si)(__m512i)(Y), (int)(C),\
+    (__v16si)(__m512i)(W),\
+    (__mmask16)(U)))
+
+#define _mm512_maskz_shuffle_i32x4(U, X, Y, C)                          \
+  ((__m512i)  __builtin_ia32_shuf_i32x4_mask ((__v16si)(__m512i)(X),    \
+      (__v16si)(__m512i)(Y), (int)(C),\
+    (__v16si)(__m512i)_mm512_setzero_si512 (),\
+    (__mmask16)(U)))
+
+#define _mm512_shuffle_f64x2(X, Y, C)                                   \
+  ((__m512d)  __builtin_ia32_shuf_f64x2_mask ((__v8df)(__m512d)(X),     \
+      (__v8df)(__m512d)(Y), (int)(C),\
+    (__v8df)(__m512d)_mm512_undefined_pd(),\
+    (__mmask8)-1))
+
+#define _mm512_mask_shuffle_f64x2(W, U, X, Y, C)                        \
+  ((__m512d)  __builtin_ia32_shuf_f64x2_mask ((__v8df)(__m512d)(X),     \
+      (__v8df)(__m512d)(Y), (int)(C),\
+    (__v8df)(__m512d)(W),\
+    (__mmask8)(U)))
+
+#define _mm512_maskz_shuffle_f64x2(U, X, Y, C)                         \
+  ((__m512d)  __builtin_ia32_shuf_f64x2_mask ((__v8df)(__m512d)(X),    \
+      (__v8df)(__m512d)(Y), (int)(C),\
+    (__v8df)(__m512d)_mm512_setzero_pd(),\
+    (__mmask8)(U)))
+
+#define _mm512_shuffle_f32x4(X, Y, C)                                  \
+  ((__m512)  __builtin_ia32_shuf_f32x4_mask ((__v16sf)(__m512)(X),     \
+      (__v16sf)(__m512)(Y), (int)(C),\
+    (__v16sf)(__m512)_mm512_undefined_ps(),\
+    (__mmask16)-1))
+
+#define _mm512_mask_shuffle_f32x4(W, U, X, Y, C)                       \
+  ((__m512)  __builtin_ia32_shuf_f32x4_mask ((__v16sf)(__m512)(X),     \
+      (__v16sf)(__m512)(Y), (int)(C),\
+    (__v16sf)(__m512)(W),\
+    (__mmask16)(U)))
+
+#define _mm512_maskz_shuffle_f32x4(U, X, Y, C)                         \
+  ((__m512)  __builtin_ia32_shuf_f32x4_mask ((__v16sf)(__m512)(X),     \
+      (__v16sf)(__m512)(Y), (int)(C),\
+    (__v16sf)(__m512)_mm512_setzero_ps(),\
+    (__mmask16)(U)))
+#endif
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_rolv_epi32 (__m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_prolvd512_mask ((__v16si) __A,
+						  (__v16si) __B,
+						  (__v16si)
+						  _mm512_undefined_si512 (),
+						  (__mmask16) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_rolv_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_prolvd512_mask ((__v16si) __A,
+						  (__v16si) __B,
+						  (__v16si) __W,
+						  (__mmask16) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_rolv_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_prolvd512_mask ((__v16si) __A,
+						  (__v16si) __B,
+						  (__v16si)
+						  _mm512_setzero_si512 (),
+						  (__mmask16) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_rorv_epi32 (__m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_prorvd512_mask ((__v16si) __A,
+						  (__v16si) __B,
+						  (__v16si)
+						  _mm512_undefined_si512 (),
+						  (__mmask16) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_rorv_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_prorvd512_mask ((__v16si) __A,
+						  (__v16si) __B,
+						  (__v16si) __W,
+						  (__mmask16) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_rorv_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_prorvd512_mask ((__v16si) __A,
+						  (__v16si) __B,
+						  (__v16si)
+						  _mm512_setzero_si512 (),
+						  (__mmask16) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_rolv_epi64 (__m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_prolvq512_mask ((__v8di) __A,
+						  (__v8di) __B,
+						  (__v8di)
+						  _mm512_undefined_si512 (),
+						  (__mmask8) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_rolv_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_prolvq512_mask ((__v8di) __A,
+						  (__v8di) __B,
+						  (__v8di) __W,
+						  (__mmask8) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_rolv_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_prolvq512_mask ((__v8di) __A,
+						  (__v8di) __B,
+						  (__v8di)
+						  _mm512_setzero_si512 (),
+						  (__mmask8) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_rorv_epi64 (__m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_prorvq512_mask ((__v8di) __A,
+						  (__v8di) __B,
+						  (__v8di)
+						  _mm512_undefined_si512 (),
+						  (__mmask8) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_rorv_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_prorvq512_mask ((__v8di) __A,
+						  (__v8di) __B,
+						  (__v8di) __W,
+						  (__mmask8) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_rorv_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_prorvq512_mask ((__v8di) __A,
+						  (__v8di) __B,
+						  (__v8di)
+						  _mm512_setzero_si512 (),
+						  (__mmask8) __U);
+}
+
+#ifdef __OPTIMIZE__
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cvtt_roundpd_epi32 (__m512d __A, const int __R)
+{
+  return (__m256i) __builtin_ia32_cvttpd2dq512_mask ((__v8df) __A,
+						     (__v8si)
+						     _mm256_undefined_si256 (),
+						     (__mmask8) -1, __R);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvtt_roundpd_epi32 (__m256i __W, __mmask8 __U, __m512d __A,
+				const int __R)
+{
+  return (__m256i) __builtin_ia32_cvttpd2dq512_mask ((__v8df) __A,
+						     (__v8si) __W,
+						     (__mmask8) __U, __R);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_cvtt_roundpd_epi32 (__mmask8 __U, __m512d __A, const int __R)
+{
+  return (__m256i) __builtin_ia32_cvttpd2dq512_mask ((__v8df) __A,
+						     (__v8si)
+						     _mm256_setzero_si256 (),
+						     (__mmask8) __U, __R);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cvtt_roundpd_epu32 (__m512d __A, const int __R)
+{
+  return (__m256i) __builtin_ia32_cvttpd2udq512_mask ((__v8df) __A,
+						      (__v8si)
+						      _mm256_undefined_si256 (),
+						      (__mmask8) -1, __R);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvtt_roundpd_epu32 (__m256i __W, __mmask8 __U, __m512d __A,
+				const int __R)
+{
+  return (__m256i) __builtin_ia32_cvttpd2udq512_mask ((__v8df) __A,
+						      (__v8si) __W,
+						      (__mmask8) __U, __R);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_cvtt_roundpd_epu32 (__mmask8 __U, __m512d __A, const int __R)
+{
+  return (__m256i) __builtin_ia32_cvttpd2udq512_mask ((__v8df) __A,
+						      (__v8si)
+						      _mm256_setzero_si256 (),
+						      (__mmask8) __U, __R);
+}
+#else
+#define _mm512_cvtt_roundpd_epi32(A, B)		     \
+    ((__m256i)__builtin_ia32_cvttpd2dq512_mask(A, (__v8si)_mm256_undefined_si256(), -1, B))
+
+#define _mm512_mask_cvtt_roundpd_epi32(W, U, A, B)   \
+    ((__m256i)__builtin_ia32_cvttpd2dq512_mask(A, (__v8si)(W), U, B))
+
+#define _mm512_maskz_cvtt_roundpd_epi32(U, A, B)     \
+    ((__m256i)__builtin_ia32_cvttpd2dq512_mask(A, (__v8si)_mm256_setzero_si256(), U, B))
+
+#define _mm512_cvtt_roundpd_epu32(A, B)		     \
+    ((__m256i)__builtin_ia32_cvttpd2udq512_mask(A, (__v8si)_mm256_undefined_si256(), -1, B))
+
+#define _mm512_mask_cvtt_roundpd_epu32(W, U, A, B)   \
+    ((__m256i)__builtin_ia32_cvttpd2udq512_mask(A, (__v8si)(W), U, B))
+
+#define _mm512_maskz_cvtt_roundpd_epu32(U, A, B)     \
+    ((__m256i)__builtin_ia32_cvttpd2udq512_mask(A, (__v8si)_mm256_setzero_si256(), U, B))
+#endif
+
+#ifdef __OPTIMIZE__
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cvt_roundpd_epi32 (__m512d __A, const int __R)
+{
+  return (__m256i) __builtin_ia32_cvtpd2dq512_mask ((__v8df) __A,
+						    (__v8si)
+						    _mm256_undefined_si256 (),
+						    (__mmask8) -1, __R);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvt_roundpd_epi32 (__m256i __W, __mmask8 __U, __m512d __A,
+			       const int __R)
+{
+  return (__m256i) __builtin_ia32_cvtpd2dq512_mask ((__v8df) __A,
+						    (__v8si) __W,
+						    (__mmask8) __U, __R);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_cvt_roundpd_epi32 (__mmask8 __U, __m512d __A, const int __R)
+{
+  return (__m256i) __builtin_ia32_cvtpd2dq512_mask ((__v8df) __A,
+						    (__v8si)
+						    _mm256_setzero_si256 (),
+						    (__mmask8) __U, __R);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cvt_roundpd_epu32 (__m512d __A, const int __R)
+{
+  return (__m256i) __builtin_ia32_cvtpd2udq512_mask ((__v8df) __A,
+						     (__v8si)
+						     _mm256_undefined_si256 (),
+						     (__mmask8) -1, __R);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvt_roundpd_epu32 (__m256i __W, __mmask8 __U, __m512d __A,
+			       const int __R)
+{
+  return (__m256i) __builtin_ia32_cvtpd2udq512_mask ((__v8df) __A,
+						     (__v8si) __W,
+						     (__mmask8) __U, __R);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_cvt_roundpd_epu32 (__mmask8 __U, __m512d __A, const int __R)
+{
+  return (__m256i) __builtin_ia32_cvtpd2udq512_mask ((__v8df) __A,
+						     (__v8si)
+						     _mm256_setzero_si256 (),
+						     (__mmask8) __U, __R);
+}
+#else
+#define _mm512_cvt_roundpd_epi32(A, B)		    \
+    ((__m256i)__builtin_ia32_cvtpd2dq512_mask(A, (__v8si)_mm256_undefined_si256(), -1, B))
+
+#define _mm512_mask_cvt_roundpd_epi32(W, U, A, B)   \
+    ((__m256i)__builtin_ia32_cvtpd2dq512_mask(A, (__v8si)(W), U, B))
+
+#define _mm512_maskz_cvt_roundpd_epi32(U, A, B)     \
+    ((__m256i)__builtin_ia32_cvtpd2dq512_mask(A, (__v8si)_mm256_setzero_si256(), U, B))
+
+#define _mm512_cvt_roundpd_epu32(A, B)		    \
+    ((__m256i)__builtin_ia32_cvtpd2udq512_mask(A, (__v8si)_mm256_undefined_si256(), -1, B))
+
+#define _mm512_mask_cvt_roundpd_epu32(W, U, A, B)   \
+    ((__m256i)__builtin_ia32_cvtpd2udq512_mask(A, (__v8si)(W), U, B))
+
+#define _mm512_maskz_cvt_roundpd_epu32(U, A, B)     \
+    ((__m256i)__builtin_ia32_cvtpd2udq512_mask(A, (__v8si)_mm256_setzero_si256(), U, B))
+#endif
+
+#ifdef __OPTIMIZE__
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cvtt_roundps_epi32 (__m512 __A, const int __R)
+{
+  return (__m512i) __builtin_ia32_cvttps2dq512_mask ((__v16sf) __A,
+						     (__v16si)
+						     _mm512_undefined_si512 (),
+						     (__mmask16) -1, __R);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvtt_roundps_epi32 (__m512i __W, __mmask16 __U, __m512 __A,
+				const int __R)
+{
+  return (__m512i) __builtin_ia32_cvttps2dq512_mask ((__v16sf) __A,
+						     (__v16si) __W,
+						     (__mmask16) __U, __R);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_cvtt_roundps_epi32 (__mmask16 __U, __m512 __A, const int __R)
+{
+  return (__m512i) __builtin_ia32_cvttps2dq512_mask ((__v16sf) __A,
+						     (__v16si)
+						     _mm512_setzero_si512 (),
+						     (__mmask16) __U, __R);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cvtt_roundps_epu32 (__m512 __A, const int __R)
+{
+  return (__m512i) __builtin_ia32_cvttps2udq512_mask ((__v16sf) __A,
+						      (__v16si)
+						      _mm512_undefined_si512 (),
+						      (__mmask16) -1, __R);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvtt_roundps_epu32 (__m512i __W, __mmask16 __U, __m512 __A,
+				const int __R)
+{
+  return (__m512i) __builtin_ia32_cvttps2udq512_mask ((__v16sf) __A,
+						      (__v16si) __W,
+						      (__mmask16) __U, __R);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_cvtt_roundps_epu32 (__mmask16 __U, __m512 __A, const int __R)
+{
+  return (__m512i) __builtin_ia32_cvttps2udq512_mask ((__v16sf) __A,
+						      (__v16si)
+						      _mm512_setzero_si512 (),
+						      (__mmask16) __U, __R);
+}
+#else
+#define _mm512_cvtt_roundps_epi32(A, B)		     \
+    ((__m512i)__builtin_ia32_cvttps2dq512_mask(A, (__v16si)_mm512_undefined_si512 (), -1, B))
+
+#define _mm512_mask_cvtt_roundps_epi32(W, U, A, B)   \
+    ((__m512i)__builtin_ia32_cvttps2dq512_mask(A, (__v16si)(W), U, B))
+
+#define _mm512_maskz_cvtt_roundps_epi32(U, A, B)     \
+    ((__m512i)__builtin_ia32_cvttps2dq512_mask(A, (__v16si)_mm512_setzero_si512 (), U, B))
+
+#define _mm512_cvtt_roundps_epu32(A, B)		     \
+    ((__m512i)__builtin_ia32_cvttps2udq512_mask(A, (__v16si)_mm512_undefined_si512 (), -1, B))
+
+#define _mm512_mask_cvtt_roundps_epu32(W, U, A, B)   \
+    ((__m512i)__builtin_ia32_cvttps2udq512_mask(A, (__v16si)(W), U, B))
+
+#define _mm512_maskz_cvtt_roundps_epu32(U, A, B)     \
+    ((__m512i)__builtin_ia32_cvttps2udq512_mask(A, (__v16si)_mm512_setzero_si512 (), U, B))
+#endif
+
+#ifdef __OPTIMIZE__
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cvt_roundps_epi32 (__m512 __A, const int __R)
+{
+  return (__m512i) __builtin_ia32_cvtps2dq512_mask ((__v16sf) __A,
+						    (__v16si)
+						    _mm512_undefined_si512 (),
+						    (__mmask16) -1, __R);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvt_roundps_epi32 (__m512i __W, __mmask16 __U, __m512 __A,
+			       const int __R)
+{
+  return (__m512i) __builtin_ia32_cvtps2dq512_mask ((__v16sf) __A,
+						    (__v16si) __W,
+						    (__mmask16) __U, __R);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_cvt_roundps_epi32 (__mmask16 __U, __m512 __A, const int __R)
+{
+  return (__m512i) __builtin_ia32_cvtps2dq512_mask ((__v16sf) __A,
+						    (__v16si)
+						    _mm512_setzero_si512 (),
+						    (__mmask16) __U, __R);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cvt_roundps_epu32 (__m512 __A, const int __R)
+{
+  return (__m512i) __builtin_ia32_cvtps2udq512_mask ((__v16sf) __A,
+						     (__v16si)
+						     _mm512_undefined_si512 (),
+						     (__mmask16) -1, __R);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvt_roundps_epu32 (__m512i __W, __mmask16 __U, __m512 __A,
+			       const int __R)
+{
+  return (__m512i) __builtin_ia32_cvtps2udq512_mask ((__v16sf) __A,
+						     (__v16si) __W,
+						     (__mmask16) __U, __R);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_cvt_roundps_epu32 (__mmask16 __U, __m512 __A, const int __R)
+{
+  return (__m512i) __builtin_ia32_cvtps2udq512_mask ((__v16sf) __A,
+						     (__v16si)
+						     _mm512_setzero_si512 (),
+						     (__mmask16) __U, __R);
+}
+#else
+#define _mm512_cvt_roundps_epi32(A, B)		    \
+    ((__m512i)__builtin_ia32_cvtps2dq512_mask(A, (__v16si)_mm512_undefined_si512 (), -1, B))
+
+#define _mm512_mask_cvt_roundps_epi32(W, U, A, B)   \
+    ((__m512i)__builtin_ia32_cvtps2dq512_mask(A, (__v16si)(W), U, B))
+
+#define _mm512_maskz_cvt_roundps_epi32(U, A, B)     \
+    ((__m512i)__builtin_ia32_cvtps2dq512_mask(A, (__v16si)_mm512_setzero_si512 (), U, B))
+
+#define _mm512_cvt_roundps_epu32(A, B)		    \
+    ((__m512i)__builtin_ia32_cvtps2udq512_mask(A, (__v16si)_mm512_undefined_si512 (), -1, B))
+
+#define _mm512_mask_cvt_roundps_epu32(W, U, A, B)   \
+    ((__m512i)__builtin_ia32_cvtps2udq512_mask(A, (__v16si)(W), U, B))
+
+#define _mm512_maskz_cvt_roundps_epu32(U, A, B)     \
+    ((__m512i)__builtin_ia32_cvtps2udq512_mask(A, (__v16si)_mm512_setzero_si512 (), U, B))
+#endif
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtu32_sd (__m128d __A, unsigned __B)
+{
+  return (__m128d) __builtin_ia32_cvtusi2sd32 ((__v2df) __A, __B);
+}
+
+#ifdef __x86_64__
+#ifdef __OPTIMIZE__
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvt_roundu64_sd (__m128d __A, unsigned long long __B, const int __R)
+{
+  return (__m128d) __builtin_ia32_cvtusi2sd64 ((__v2df) __A, __B, __R);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvt_roundi64_sd (__m128d __A, long long __B, const int __R)
+{
+  return (__m128d) __builtin_ia32_cvtsi2sd64 ((__v2df) __A, __B, __R);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvt_roundsi64_sd (__m128d __A, long long __B, const int __R)
+{
+  return (__m128d) __builtin_ia32_cvtsi2sd64 ((__v2df) __A, __B, __R);
+}
+#else
+#define _mm_cvt_roundu64_sd(A, B, C)   \
+    (__m128d)__builtin_ia32_cvtusi2sd64(A, B, C)
+
+#define _mm_cvt_roundi64_sd(A, B, C)   \
+    (__m128d)__builtin_ia32_cvtsi2sd64(A, B, C)
+
+#define _mm_cvt_roundsi64_sd(A, B, C)   \
+    (__m128d)__builtin_ia32_cvtsi2sd64(A, B, C)
+#endif
+
+#endif
+
+#ifdef __OPTIMIZE__
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvt_roundu32_ss (__m128 __A, unsigned __B, const int __R)
+{
+  return (__m128) __builtin_ia32_cvtusi2ss32 ((__v4sf) __A, __B, __R);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvt_roundsi32_ss (__m128 __A, int __B, const int __R)
+{
+  return (__m128) __builtin_ia32_cvtsi2ss32 ((__v4sf) __A, __B, __R);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvt_roundi32_ss (__m128 __A, int __B, const int __R)
+{
+  return (__m128) __builtin_ia32_cvtsi2ss32 ((__v4sf) __A, __B, __R);
+}
+#else
+#define _mm_cvt_roundu32_ss(A, B, C)   \
+    (__m128)__builtin_ia32_cvtusi2ss32(A, B, C)
+
+#define _mm_cvt_roundi32_ss(A, B, C)   \
+    (__m128)__builtin_ia32_cvtsi2ss32(A, B, C)
+
+#define _mm_cvt_roundsi32_ss(A, B, C)   \
+    (__m128)__builtin_ia32_cvtsi2ss32(A, B, C)
+#endif
+
+#ifdef __x86_64__
+#ifdef __OPTIMIZE__
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvt_roundu64_ss (__m128 __A, unsigned long long __B, const int __R)
+{
+  return (__m128) __builtin_ia32_cvtusi2ss64 ((__v4sf) __A, __B, __R);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvt_roundsi64_ss (__m128 __A, long long __B, const int __R)
+{
+  return (__m128) __builtin_ia32_cvtsi2ss64 ((__v4sf) __A, __B, __R);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvt_roundi64_ss (__m128 __A, long long __B, const int __R)
+{
+  return (__m128) __builtin_ia32_cvtsi2ss64 ((__v4sf) __A, __B, __R);
+}
+#else
+#define _mm_cvt_roundu64_ss(A, B, C)   \
+    (__m128)__builtin_ia32_cvtusi2ss64(A, B, C)
+
+#define _mm_cvt_roundi64_ss(A, B, C)   \
+    (__m128)__builtin_ia32_cvtsi2ss64(A, B, C)
+
+#define _mm_cvt_roundsi64_ss(A, B, C)   \
+    (__m128)__builtin_ia32_cvtsi2ss64(A, B, C)
+#endif
+
+#endif
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cvtepi32_epi8 (__m512i __A)
+{
+  return (__m128i) __builtin_ia32_pmovdb512_mask ((__v16si) __A,
+						  (__v16qi)
+						  _mm_undefined_si128 (),
+						  (__mmask16) -1);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvtepi32_storeu_epi8 (void * __P, __mmask16 __M, __m512i __A)
+{
+  __builtin_ia32_pmovdb512mem_mask ((__v16qi *) __P, (__v16si) __A, __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvtepi32_epi8 (__m128i __O, __mmask16 __M, __m512i __A)
+{
+  return (__m128i) __builtin_ia32_pmovdb512_mask ((__v16si) __A,
+						  (__v16qi) __O, __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_cvtepi32_epi8 (__mmask16 __M, __m512i __A)
+{
+  return (__m128i) __builtin_ia32_pmovdb512_mask ((__v16si) __A,
+						  (__v16qi)
+						  _mm_setzero_si128 (),
+						  __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cvtsepi32_epi8 (__m512i __A)
+{
+  return (__m128i) __builtin_ia32_pmovsdb512_mask ((__v16si) __A,
+						   (__v16qi)
+						   _mm_undefined_si128 (),
+						   (__mmask16) -1);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvtsepi32_storeu_epi8 (void * __P, __mmask16 __M, __m512i __A)
+{
+  __builtin_ia32_pmovsdb512mem_mask ((__v16qi *) __P, (__v16si) __A, __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvtsepi32_epi8 (__m128i __O, __mmask16 __M, __m512i __A)
+{
+  return (__m128i) __builtin_ia32_pmovsdb512_mask ((__v16si) __A,
+						   (__v16qi) __O, __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_cvtsepi32_epi8 (__mmask16 __M, __m512i __A)
+{
+  return (__m128i) __builtin_ia32_pmovsdb512_mask ((__v16si) __A,
+						   (__v16qi)
+						   _mm_setzero_si128 (),
+						   __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cvtusepi32_epi8 (__m512i __A)
+{
+  return (__m128i) __builtin_ia32_pmovusdb512_mask ((__v16si) __A,
+						    (__v16qi)
+						    _mm_undefined_si128 (),
+						    (__mmask16) -1);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvtusepi32_storeu_epi8 (void * __P, __mmask16 __M, __m512i __A)
+{
+  __builtin_ia32_pmovusdb512mem_mask ((__v16qi *) __P, (__v16si) __A, __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvtusepi32_epi8 (__m128i __O, __mmask16 __M, __m512i __A)
+{
+  return (__m128i) __builtin_ia32_pmovusdb512_mask ((__v16si) __A,
+						    (__v16qi) __O,
+						    __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_cvtusepi32_epi8 (__mmask16 __M, __m512i __A)
+{
+  return (__m128i) __builtin_ia32_pmovusdb512_mask ((__v16si) __A,
+						    (__v16qi)
+						    _mm_setzero_si128 (),
+						    __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cvtepi32_epi16 (__m512i __A)
+{
+  return (__m256i) __builtin_ia32_pmovdw512_mask ((__v16si) __A,
+						  (__v16hi)
+						  _mm256_undefined_si256 (),
+						  (__mmask16) -1);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvtepi32_storeu_epi16 (void * __P, __mmask16 __M, __m512i __A)
+{
+  __builtin_ia32_pmovdw512mem_mask ((__v16hi *) __P, (__v16si) __A, __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvtepi32_epi16 (__m256i __O, __mmask16 __M, __m512i __A)
+{
+  return (__m256i) __builtin_ia32_pmovdw512_mask ((__v16si) __A,
+						  (__v16hi) __O, __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_cvtepi32_epi16 (__mmask16 __M, __m512i __A)
+{
+  return (__m256i) __builtin_ia32_pmovdw512_mask ((__v16si) __A,
+						  (__v16hi)
+						  _mm256_setzero_si256 (),
+						  __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cvtsepi32_epi16 (__m512i __A)
+{
+  return (__m256i) __builtin_ia32_pmovsdw512_mask ((__v16si) __A,
+						   (__v16hi)
+						   _mm256_undefined_si256 (),
+						   (__mmask16) -1);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvtsepi32_storeu_epi16 (void *__P, __mmask16 __M, __m512i __A)
+{
+  __builtin_ia32_pmovsdw512mem_mask ((__v16hi*) __P, (__v16si) __A, __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvtsepi32_epi16 (__m256i __O, __mmask16 __M, __m512i __A)
+{
+  return (__m256i) __builtin_ia32_pmovsdw512_mask ((__v16si) __A,
+						   (__v16hi) __O, __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_cvtsepi32_epi16 (__mmask16 __M, __m512i __A)
+{
+  return (__m256i) __builtin_ia32_pmovsdw512_mask ((__v16si) __A,
+						   (__v16hi)
+						   _mm256_setzero_si256 (),
+						   __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cvtusepi32_epi16 (__m512i __A)
+{
+  return (__m256i) __builtin_ia32_pmovusdw512_mask ((__v16si) __A,
+						    (__v16hi)
+						    _mm256_undefined_si256 (),
+						    (__mmask16) -1);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvtusepi32_storeu_epi16 (void *__P, __mmask16 __M, __m512i __A)
+{
+  __builtin_ia32_pmovusdw512mem_mask ((__v16hi*) __P, (__v16si) __A, __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvtusepi32_epi16 (__m256i __O, __mmask16 __M, __m512i __A)
+{
+  return (__m256i) __builtin_ia32_pmovusdw512_mask ((__v16si) __A,
+						    (__v16hi) __O,
+						    __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_cvtusepi32_epi16 (__mmask16 __M, __m512i __A)
+{
+  return (__m256i) __builtin_ia32_pmovusdw512_mask ((__v16si) __A,
+						    (__v16hi)
+						    _mm256_setzero_si256 (),
+						    __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cvtepi64_epi32 (__m512i __A)
+{
+  return (__m256i) __builtin_ia32_pmovqd512_mask ((__v8di) __A,
+						  (__v8si)
+						  _mm256_undefined_si256 (),
+						  (__mmask8) -1);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvtepi64_storeu_epi32 (void* __P, __mmask8 __M, __m512i __A)
+{
+  __builtin_ia32_pmovqd512mem_mask ((__v8si *) __P, (__v8di) __A, __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvtepi64_epi32 (__m256i __O, __mmask8 __M, __m512i __A)
+{
+  return (__m256i) __builtin_ia32_pmovqd512_mask ((__v8di) __A,
+						  (__v8si) __O, __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_cvtepi64_epi32 (__mmask8 __M, __m512i __A)
+{
+  return (__m256i) __builtin_ia32_pmovqd512_mask ((__v8di) __A,
+						  (__v8si)
+						  _mm256_setzero_si256 (),
+						  __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cvtsepi64_epi32 (__m512i __A)
+{
+  __v8si __O;
+  return (__m256i) __builtin_ia32_pmovsqd512_mask ((__v8di) __A,
+						   (__v8si)
+						   _mm256_undefined_si256 (),
+						   (__mmask8) -1);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvtsepi64_storeu_epi32 (void *__P, __mmask8 __M, __m512i __A)
+{
+  __builtin_ia32_pmovsqd512mem_mask ((__v8si *) __P, (__v8di) __A, __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvtsepi64_epi32 (__m256i __O, __mmask8 __M, __m512i __A)
+{
+  return (__m256i) __builtin_ia32_pmovsqd512_mask ((__v8di) __A,
+						   (__v8si) __O, __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_cvtsepi64_epi32 (__mmask8 __M, __m512i __A)
+{
+  return (__m256i) __builtin_ia32_pmovsqd512_mask ((__v8di) __A,
+						   (__v8si)
+						   _mm256_setzero_si256 (),
+						   __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cvtusepi64_epi32 (__m512i __A)
+{
+  return (__m256i) __builtin_ia32_pmovusqd512_mask ((__v8di) __A,
+						    (__v8si)
+						    _mm256_undefined_si256 (),
+						    (__mmask8) -1);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvtusepi64_storeu_epi32 (void* __P, __mmask8 __M, __m512i __A)
+{
+  __builtin_ia32_pmovusqd512mem_mask ((__v8si*) __P, (__v8di) __A, __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvtusepi64_epi32 (__m256i __O, __mmask8 __M, __m512i __A)
+{
+  return (__m256i) __builtin_ia32_pmovusqd512_mask ((__v8di) __A,
+						    (__v8si) __O, __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_cvtusepi64_epi32 (__mmask8 __M, __m512i __A)
+{
+  return (__m256i) __builtin_ia32_pmovusqd512_mask ((__v8di) __A,
+						    (__v8si)
+						    _mm256_setzero_si256 (),
+						    __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cvtepi64_epi16 (__m512i __A)
+{
+  return (__m128i) __builtin_ia32_pmovqw512_mask ((__v8di) __A,
+						  (__v8hi)
+						  _mm_undefined_si128 (),
+						  (__mmask8) -1);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvtepi64_storeu_epi16 (void *__P, __mmask8 __M, __m512i __A)
+{
+  __builtin_ia32_pmovqw512mem_mask ((__v8hi *) __P, (__v8di) __A, __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvtepi64_epi16 (__m128i __O, __mmask8 __M, __m512i __A)
+{
+  return (__m128i) __builtin_ia32_pmovqw512_mask ((__v8di) __A,
+						  (__v8hi) __O, __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_cvtepi64_epi16 (__mmask8 __M, __m512i __A)
+{
+  return (__m128i) __builtin_ia32_pmovqw512_mask ((__v8di) __A,
+						  (__v8hi)
+						  _mm_setzero_si128 (),
+						  __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cvtsepi64_epi16 (__m512i __A)
+{
+  return (__m128i) __builtin_ia32_pmovsqw512_mask ((__v8di) __A,
+						   (__v8hi)
+						   _mm_undefined_si128 (),
+						   (__mmask8) -1);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvtsepi64_storeu_epi16 (void * __P, __mmask8 __M, __m512i __A)
+{
+  __builtin_ia32_pmovsqw512mem_mask ((__v8hi *) __P, (__v8di) __A, __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvtsepi64_epi16 (__m128i __O, __mmask8 __M, __m512i __A)
+{
+  return (__m128i) __builtin_ia32_pmovsqw512_mask ((__v8di) __A,
+						   (__v8hi) __O, __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_cvtsepi64_epi16 (__mmask8 __M, __m512i __A)
+{
+  return (__m128i) __builtin_ia32_pmovsqw512_mask ((__v8di) __A,
+						   (__v8hi)
+						   _mm_setzero_si128 (),
+						   __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cvtusepi64_epi16 (__m512i __A)
+{
+  return (__m128i) __builtin_ia32_pmovusqw512_mask ((__v8di) __A,
+						    (__v8hi)
+						    _mm_undefined_si128 (),
+						    (__mmask8) -1);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvtusepi64_storeu_epi16 (void *__P, __mmask8 __M, __m512i __A)
+{
+  __builtin_ia32_pmovusqw512mem_mask ((__v8hi*) __P, (__v8di) __A, __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvtusepi64_epi16 (__m128i __O, __mmask8 __M, __m512i __A)
+{
+  return (__m128i) __builtin_ia32_pmovusqw512_mask ((__v8di) __A,
+						    (__v8hi) __O, __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_cvtusepi64_epi16 (__mmask8 __M, __m512i __A)
+{
+  return (__m128i) __builtin_ia32_pmovusqw512_mask ((__v8di) __A,
+						    (__v8hi)
+						    _mm_setzero_si128 (),
+						    __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cvtepi64_epi8 (__m512i __A)
+{
+  return (__m128i) __builtin_ia32_pmovqb512_mask ((__v8di) __A,
+						  (__v16qi)
+						  _mm_undefined_si128 (),
+						  (__mmask8) -1);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvtepi64_storeu_epi8 (void * __P, __mmask8 __M, __m512i __A)
+{
+  __builtin_ia32_pmovqb512mem_mask ((__v16qi *) __P, (__v8di) __A, __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvtepi64_epi8 (__m128i __O, __mmask8 __M, __m512i __A)
+{
+  return (__m128i) __builtin_ia32_pmovqb512_mask ((__v8di) __A,
+						  (__v16qi) __O, __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_cvtepi64_epi8 (__mmask8 __M, __m512i __A)
+{
+  return (__m128i) __builtin_ia32_pmovqb512_mask ((__v8di) __A,
+						  (__v16qi)
+						  _mm_setzero_si128 (),
+						  __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cvtsepi64_epi8 (__m512i __A)
+{
+  return (__m128i) __builtin_ia32_pmovsqb512_mask ((__v8di) __A,
+						   (__v16qi)
+						   _mm_undefined_si128 (),
+						   (__mmask8) -1);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvtsepi64_storeu_epi8 (void * __P, __mmask8 __M, __m512i __A)
+{
+  __builtin_ia32_pmovsqb512mem_mask ((__v16qi *) __P, (__v8di) __A, __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvtsepi64_epi8 (__m128i __O, __mmask8 __M, __m512i __A)
+{
+  return (__m128i) __builtin_ia32_pmovsqb512_mask ((__v8di) __A,
+						   (__v16qi) __O, __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_cvtsepi64_epi8 (__mmask8 __M, __m512i __A)
+{
+  return (__m128i) __builtin_ia32_pmovsqb512_mask ((__v8di) __A,
+						   (__v16qi)
+						   _mm_setzero_si128 (),
+						   __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cvtusepi64_epi8 (__m512i __A)
+{
+  return (__m128i) __builtin_ia32_pmovusqb512_mask ((__v8di) __A,
+						    (__v16qi)
+						    _mm_undefined_si128 (),
+						    (__mmask8) -1);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvtusepi64_storeu_epi8 (void * __P, __mmask8 __M, __m512i __A)
+{
+  __builtin_ia32_pmovusqb512mem_mask ((__v16qi *) __P, (__v8di) __A, __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvtusepi64_epi8 (__m128i __O, __mmask8 __M, __m512i __A)
+{
+  return (__m128i) __builtin_ia32_pmovusqb512_mask ((__v8di) __A,
+						    (__v16qi) __O,
+						    __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_cvtusepi64_epi8 (__mmask8 __M, __m512i __A)
+{
+  return (__m128i) __builtin_ia32_pmovusqb512_mask ((__v8di) __A,
+						    (__v16qi)
+						    _mm_setzero_si128 (),
+						    __M);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cvtepi32_pd (__m256i __A)
+{
+  return (__m512d) __builtin_ia32_cvtdq2pd512_mask ((__v8si) __A,
+						    (__v8df)
+						    _mm512_undefined_pd (),
+						    (__mmask8) -1);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvtepi32_pd (__m512d __W, __mmask8 __U, __m256i __A)
+{
+  return (__m512d) __builtin_ia32_cvtdq2pd512_mask ((__v8si) __A,
+						    (__v8df) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_cvtepi32_pd (__mmask8 __U, __m256i __A)
+{
+  return (__m512d) __builtin_ia32_cvtdq2pd512_mask ((__v8si) __A,
+						    (__v8df)
+						    _mm512_setzero_pd (),
+						    (__mmask8) __U);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cvtepu32_pd (__m256i __A)
+{
+  return (__m512d) __builtin_ia32_cvtudq2pd512_mask ((__v8si) __A,
+						     (__v8df)
+						     _mm512_undefined_pd (),
+						     (__mmask8) -1);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvtepu32_pd (__m512d __W, __mmask8 __U, __m256i __A)
+{
+  return (__m512d) __builtin_ia32_cvtudq2pd512_mask ((__v8si) __A,
+						     (__v8df) __W,
+						     (__mmask8) __U);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_cvtepu32_pd (__mmask8 __U, __m256i __A)
+{
+  return (__m512d) __builtin_ia32_cvtudq2pd512_mask ((__v8si) __A,
+						     (__v8df)
+						     _mm512_setzero_pd (),
+						     (__mmask8) __U);
+}
+
+#ifdef __OPTIMIZE__
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cvt_roundepi32_ps (__m512i __A, const int __R)
+{
+  return (__m512) __builtin_ia32_cvtdq2ps512_mask ((__v16si) __A,
+						   (__v16sf)
+						   _mm512_undefined_ps (),
+						   (__mmask16) -1, __R);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvt_roundepi32_ps (__m512 __W, __mmask16 __U, __m512i __A,
+			       const int __R)
+{
+  return (__m512) __builtin_ia32_cvtdq2ps512_mask ((__v16si) __A,
+						   (__v16sf) __W,
+						   (__mmask16) __U, __R);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_cvt_roundepi32_ps (__mmask16 __U, __m512i __A, const int __R)
+{
+  return (__m512) __builtin_ia32_cvtdq2ps512_mask ((__v16si) __A,
+						   (__v16sf)
+						   _mm512_setzero_ps (),
+						   (__mmask16) __U, __R);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cvt_roundepu32_ps (__m512i __A, const int __R)
+{
+  return (__m512) __builtin_ia32_cvtudq2ps512_mask ((__v16si) __A,
+						    (__v16sf)
+						    _mm512_undefined_ps (),
+						    (__mmask16) -1, __R);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvt_roundepu32_ps (__m512 __W, __mmask16 __U, __m512i __A,
+			       const int __R)
+{
+  return (__m512) __builtin_ia32_cvtudq2ps512_mask ((__v16si) __A,
+						    (__v16sf) __W,
+						    (__mmask16) __U, __R);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_cvt_roundepu32_ps (__mmask16 __U, __m512i __A, const int __R)
+{
+  return (__m512) __builtin_ia32_cvtudq2ps512_mask ((__v16si) __A,
+						    (__v16sf)
+						    _mm512_setzero_ps (),
+						    (__mmask16) __U, __R);
+}
+
+#else
+#define _mm512_cvt_roundepi32_ps(A, B)        \
+    (__m512)__builtin_ia32_cvtdq2ps512_mask((__v16si)(A), (__v16sf)_mm512_undefined_ps(), -1, B)
+
+#define _mm512_mask_cvt_roundepi32_ps(W, U, A, B)   \
+    (__m512)__builtin_ia32_cvtdq2ps512_mask((__v16si)(A), W, U, B)
+
+#define _mm512_maskz_cvt_roundepi32_ps(U, A, B)      \
+    (__m512)__builtin_ia32_cvtdq2ps512_mask((__v16si)(A), (__v16sf)_mm512_setzero_ps(), U, B)
+
+#define _mm512_cvt_roundepu32_ps(A, B)        \
+    (__m512)__builtin_ia32_cvtudq2ps512_mask((__v16si)(A), (__v16sf)_mm512_undefined_ps(), -1, B)
+
+#define _mm512_mask_cvt_roundepu32_ps(W, U, A, B)   \
+    (__m512)__builtin_ia32_cvtudq2ps512_mask((__v16si)(A), W, U, B)
+
+#define _mm512_maskz_cvt_roundepu32_ps(U, A, B)      \
+    (__m512)__builtin_ia32_cvtudq2ps512_mask((__v16si)(A), (__v16sf)_mm512_setzero_ps(), U, B)
+#endif
+
+#ifdef __OPTIMIZE__
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_extractf64x4_pd (__m512d __A, const int __imm)
+{
+  return (__m256d) __builtin_ia32_extractf64x4_mask ((__v8df) __A,
+						     __imm,
+						     (__v4df)
+						     _mm256_undefined_pd (),
+						     (__mmask8) -1);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_extractf64x4_pd (__m256d __W, __mmask8 __U, __m512d __A,
+			     const int __imm)
+{
+  return (__m256d) __builtin_ia32_extractf64x4_mask ((__v8df) __A,
+						     __imm,
+						     (__v4df) __W,
+						     (__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_extractf64x4_pd (__mmask8 __U, __m512d __A, const int __imm)
+{
+  return (__m256d) __builtin_ia32_extractf64x4_mask ((__v8df) __A,
+						     __imm,
+						     (__v4df)
+						     _mm256_setzero_pd (),
+						     (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_extractf32x4_ps (__m512 __A, const int __imm)
+{
+  return (__m128) __builtin_ia32_extractf32x4_mask ((__v16sf) __A,
+						    __imm,
+						    (__v4sf)
+						    _mm_undefined_ps (),
+						    (__mmask8) -1);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_extractf32x4_ps (__m128 __W, __mmask8 __U, __m512 __A,
+			     const int __imm)
+{
+  return (__m128) __builtin_ia32_extractf32x4_mask ((__v16sf) __A,
+						    __imm,
+						    (__v4sf) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_extractf32x4_ps (__mmask8 __U, __m512 __A, const int __imm)
+{
+  return (__m128) __builtin_ia32_extractf32x4_mask ((__v16sf) __A,
+						    __imm,
+						    (__v4sf)
+						    _mm_setzero_ps (),
+						    (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_extracti64x4_epi64 (__m512i __A, const int __imm)
+{
+  return (__m256i) __builtin_ia32_extracti64x4_mask ((__v8di) __A,
+						     __imm,
+						     (__v4di)
+						     _mm256_undefined_si256 (),
+						     (__mmask8) -1);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_extracti64x4_epi64 (__m256i __W, __mmask8 __U, __m512i __A,
+				const int __imm)
+{
+  return (__m256i) __builtin_ia32_extracti64x4_mask ((__v8di) __A,
+						     __imm,
+						     (__v4di) __W,
+						     (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_extracti64x4_epi64 (__mmask8 __U, __m512i __A, const int __imm)
+{
+  return (__m256i) __builtin_ia32_extracti64x4_mask ((__v8di) __A,
+						     __imm,
+						     (__v4di)
+						     _mm256_setzero_si256 (),
+						     (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_extracti32x4_epi32 (__m512i __A, const int __imm)
+{
+  return (__m128i) __builtin_ia32_extracti32x4_mask ((__v16si) __A,
+						     __imm,
+						     (__v4si)
+						     _mm_undefined_si128 (),
+						     (__mmask8) -1);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_extracti32x4_epi32 (__m128i __W, __mmask8 __U, __m512i __A,
+				const int __imm)
+{
+  return (__m128i) __builtin_ia32_extracti32x4_mask ((__v16si) __A,
+						     __imm,
+						     (__v4si) __W,
+						     (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_extracti32x4_epi32 (__mmask8 __U, __m512i __A, const int __imm)
+{
+  return (__m128i) __builtin_ia32_extracti32x4_mask ((__v16si) __A,
+						     __imm,
+						     (__v4si)
+						     _mm_setzero_si128 (),
+						     (__mmask8) __U);
+}
+#else
+
+#define _mm512_extractf64x4_pd(X, C)                                    \
+  ((__m256d) __builtin_ia32_extractf64x4_mask ((__v8df)(__m512d) (X),   \
+    (int) (C),\
+    (__v4df)(__m256d)_mm256_undefined_pd(),\
+    (__mmask8)-1))
+
+#define _mm512_mask_extractf64x4_pd(W, U, X, C)                         \
+  ((__m256d) __builtin_ia32_extractf64x4_mask ((__v8df)(__m512d) (X),   \
+    (int) (C),\
+    (__v4df)(__m256d)(W),\
+    (__mmask8)(U)))
+
+#define _mm512_maskz_extractf64x4_pd(U, X, C)                           \
+  ((__m256d) __builtin_ia32_extractf64x4_mask ((__v8df)(__m512d) (X),   \
+    (int) (C),\
+    (__v4df)(__m256d)_mm256_setzero_pd(),\
+    (__mmask8)(U)))
+
+#define _mm512_extractf32x4_ps(X, C)                                    \
+  ((__m128) __builtin_ia32_extractf32x4_mask ((__v16sf)(__m512) (X),    \
+    (int) (C),\
+    (__v4sf)(__m128)_mm_undefined_ps(),\
+    (__mmask8)-1))
+
+#define _mm512_mask_extractf32x4_ps(W, U, X, C)                         \
+  ((__m128) __builtin_ia32_extractf32x4_mask ((__v16sf)(__m512) (X),    \
+    (int) (C),\
+    (__v4sf)(__m128)(W),\
+    (__mmask8)(U)))
+
+#define _mm512_maskz_extractf32x4_ps(U, X, C)                           \
+  ((__m128) __builtin_ia32_extractf32x4_mask ((__v16sf)(__m512) (X),    \
+    (int) (C),\
+    (__v4sf)(__m128)_mm_setzero_ps(),\
+    (__mmask8)(U)))
+
+#define _mm512_extracti64x4_epi64(X, C)                                 \
+  ((__m256i) __builtin_ia32_extracti64x4_mask ((__v8di)(__m512i) (X),   \
+    (int) (C),\
+    (__v4di)(__m256i)_mm256_undefined_si256 (),\
+    (__mmask8)-1))
+
+#define _mm512_mask_extracti64x4_epi64(W, U, X, C)                      \
+  ((__m256i) __builtin_ia32_extracti64x4_mask ((__v8di)(__m512i) (X),   \
+    (int) (C),\
+    (__v4di)(__m256i)(W),\
+    (__mmask8)(U)))
+
+#define _mm512_maskz_extracti64x4_epi64(U, X, C)                        \
+  ((__m256i) __builtin_ia32_extracti64x4_mask ((__v8di)(__m512i) (X),   \
+    (int) (C),\
+    (__v4di)(__m256i)_mm256_setzero_si256 (),\
+    (__mmask8)(U)))
+
+#define _mm512_extracti32x4_epi32(X, C)                                 \
+  ((__m128i) __builtin_ia32_extracti32x4_mask ((__v16si)(__m512i) (X),  \
+    (int) (C),\
+    (__v4si)(__m128i)_mm_undefined_si128 (),\
+    (__mmask8)-1))
+
+#define _mm512_mask_extracti32x4_epi32(W, U, X, C)                      \
+  ((__m128i) __builtin_ia32_extracti32x4_mask ((__v16si)(__m512i) (X),  \
+    (int) (C),\
+    (__v4si)(__m128i)(W),\
+    (__mmask8)(U)))
+
+#define _mm512_maskz_extracti32x4_epi32(U, X, C)                        \
+  ((__m128i) __builtin_ia32_extracti32x4_mask ((__v16si)(__m512i) (X),  \
+    (int) (C),\
+    (__v4si)(__m128i)_mm_setzero_si128 (),\
+    (__mmask8)(U)))
+#endif
+
+#ifdef __OPTIMIZE__
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_inserti32x4 (__m512i __A, __m128i __B, const int __imm)
+{
+  return (__m512i) __builtin_ia32_inserti32x4_mask ((__v16si) __A,
+						    (__v4si) __B,
+						    __imm,
+						    (__v16si) __A, -1);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_insertf32x4 (__m512 __A, __m128 __B, const int __imm)
+{
+  return (__m512) __builtin_ia32_insertf32x4_mask ((__v16sf) __A,
+						   (__v4sf) __B,
+						   __imm,
+						   (__v16sf) __A, -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_inserti64x4 (__m512i __A, __m256i __B, const int __imm)
+{
+  return (__m512i) __builtin_ia32_inserti64x4_mask ((__v8di) __A,
+						    (__v4di) __B,
+						    __imm,
+						    (__v8di)
+						    _mm512_undefined_si512 (),
+						    (__mmask8) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_inserti64x4 (__m512i __W, __mmask8 __U, __m512i __A,
+			 __m256i __B, const int __imm)
+{
+  return (__m512i) __builtin_ia32_inserti64x4_mask ((__v8di) __A,
+						    (__v4di) __B,
+						    __imm,
+						    (__v8di) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_inserti64x4 (__mmask8 __U, __m512i __A, __m256i __B,
+			  const int __imm)
+{
+  return (__m512i) __builtin_ia32_inserti64x4_mask ((__v8di) __A,
+						    (__v4di) __B,
+						    __imm,
+						    (__v8di)
+						    _mm512_setzero_si512 (),
+						    (__mmask8) __U);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_insertf64x4 (__m512d __A, __m256d __B, const int __imm)
+{
+  return (__m512d) __builtin_ia32_insertf64x4_mask ((__v8df) __A,
+						    (__v4df) __B,
+						    __imm,
+						    (__v8df)
+						    _mm512_undefined_pd (),
+						    (__mmask8) -1);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_insertf64x4 (__m512d __W, __mmask8 __U, __m512d __A,
+			 __m256d __B, const int __imm)
+{
+  return (__m512d) __builtin_ia32_insertf64x4_mask ((__v8df) __A,
+						    (__v4df) __B,
+						    __imm,
+						    (__v8df) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_insertf64x4 (__mmask8 __U, __m512d __A, __m256d __B,
+			  const int __imm)
+{
+  return (__m512d) __builtin_ia32_insertf64x4_mask ((__v8df) __A,
+						    (__v4df) __B,
+						    __imm,
+						    (__v8df)
+						    _mm512_setzero_pd (),
+						    (__mmask8) __U);
+}
+#else
+#define _mm512_insertf32x4(X, Y, C)                                     \
+  ((__m512) __builtin_ia32_insertf32x4_mask ((__v16sf)(__m512) (X),     \
+    (__v4sf)(__m128) (Y), (int) (C), (__v16sf)(__m512) (X), (__mmask16)(-1)))
+
+#define _mm512_inserti32x4(X, Y, C)                                     \
+  ((__m512i) __builtin_ia32_inserti32x4_mask ((__v16si)(__m512i) (X),   \
+    (__v4si)(__m128i) (Y), (int) (C), (__v16si)(__m512i) (X), (__mmask16)(-1)))
+
+#define _mm512_insertf64x4(X, Y, C)                                     \
+  ((__m512d) __builtin_ia32_insertf64x4_mask ((__v8df)(__m512d) (X),    \
+    (__v4df)(__m256d) (Y), (int) (C),					\
+    (__v8df)(__m512d)_mm512_undefined_pd(),				\
+    (__mmask8)-1))
+
+#define _mm512_mask_insertf64x4(W, U, X, Y, C)                          \
+  ((__m512d) __builtin_ia32_insertf64x4_mask ((__v8df)(__m512d) (X),    \
+    (__v4df)(__m256d) (Y), (int) (C),					\
+    (__v8df)(__m512d)(W),						\
+    (__mmask8)(U)))
+
+#define _mm512_maskz_insertf64x4(U, X, Y, C)                            \
+  ((__m512d) __builtin_ia32_insertf64x4_mask ((__v8df)(__m512d) (X),    \
+    (__v4df)(__m256d) (Y), (int) (C),					\
+    (__v8df)(__m512d)_mm512_setzero_pd(),				\
+    (__mmask8)(U)))
+
+#define _mm512_inserti64x4(X, Y, C)                                     \
+  ((__m512i) __builtin_ia32_inserti64x4_mask ((__v8di)(__m512i) (X),    \
+    (__v4di)(__m256i) (Y), (int) (C),					\
+    (__v8di)(__m512i)_mm512_undefined_si512 (),				\
+    (__mmask8)-1))
+
+#define _mm512_mask_inserti64x4(W, U, X, Y, C)                          \
+  ((__m512i) __builtin_ia32_inserti64x4_mask ((__v8di)(__m512i) (X),    \
+    (__v4di)(__m256i) (Y), (int) (C),\
+    (__v8di)(__m512i)(W),\
+    (__mmask8)(U)))
+
+#define _mm512_maskz_inserti64x4(U, X, Y, C)                            \
+  ((__m512i) __builtin_ia32_inserti64x4_mask ((__v8di)(__m512i) (X),    \
+    (__v4di)(__m256i) (Y), (int) (C),					\
+    (__v8di)(__m512i)_mm512_setzero_si512 (),				\
+    (__mmask8)(U)))
+#endif
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_loadu_pd (void const *__P)
+{
+  return (__m512d) __builtin_ia32_loadupd512_mask ((const __v8df *) __P,
+						   (__v8df)
+						   _mm512_undefined_pd (),
+						   (__mmask8) -1);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_loadu_pd (__m512d __W, __mmask8 __U, void const *__P)
+{
+  return (__m512d) __builtin_ia32_loadupd512_mask ((const __v8df *) __P,
+						   (__v8df) __W,
+						   (__mmask8) __U);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_loadu_pd (__mmask8 __U, void const *__P)
+{
+  return (__m512d) __builtin_ia32_loadupd512_mask ((const __v8df *) __P,
+						   (__v8df)
+						   _mm512_setzero_pd (),
+						   (__mmask8) __U);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_storeu_pd (void *__P, __m512d __A)
+{
+  __builtin_ia32_storeupd512_mask ((__v8df *) __P, (__v8df) __A,
+				   (__mmask8) -1);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_storeu_pd (void *__P, __mmask8 __U, __m512d __A)
+{
+  __builtin_ia32_storeupd512_mask ((__v8df *) __P, (__v8df) __A,
+				   (__mmask8) __U);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_loadu_ps (void const *__P)
+{
+  return (__m512) __builtin_ia32_loadups512_mask ((const __v16sf *) __P,
+						  (__v16sf)
+						  _mm512_undefined_ps (),
+						  (__mmask16) -1);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_loadu_ps (__m512 __W, __mmask16 __U, void const *__P)
+{
+  return (__m512) __builtin_ia32_loadups512_mask ((const __v16sf *) __P,
+						  (__v16sf) __W,
+						  (__mmask16) __U);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_loadu_ps (__mmask16 __U, void const *__P)
+{
+  return (__m512) __builtin_ia32_loadups512_mask ((const __v16sf *) __P,
+						  (__v16sf)
+						  _mm512_setzero_ps (),
+						  (__mmask16) __U);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_storeu_ps (void *__P, __m512 __A)
+{
+  __builtin_ia32_storeups512_mask ((__v16sf *) __P, (__v16sf) __A,
+				   (__mmask16) -1);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_storeu_ps (void *__P, __mmask16 __U, __m512 __A)
+{
+  __builtin_ia32_storeups512_mask ((__v16sf *) __P, (__v16sf) __A,
+				   (__mmask16) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_loadu_epi64 (__m512i __W, __mmask8 __U, void const *__P)
+{
+  return (__m512i) __builtin_ia32_loaddqudi512_mask ((const __v8di *) __P,
+						     (__v8di) __W,
+						     (__mmask8) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_loadu_epi64 (__mmask8 __U, void const *__P)
+{
+  return (__m512i) __builtin_ia32_loaddqudi512_mask ((const __v8di *) __P,
+						     (__v8di)
+						     _mm512_setzero_si512 (),
+						     (__mmask8) __U);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_storeu_epi64 (void *__P, __mmask8 __U, __m512i __A)
+{
+  __builtin_ia32_storedqudi512_mask ((__v8di *) __P, (__v8di) __A,
+				     (__mmask8) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_loadu_si512 (void const *__P)
+{
+  return (__m512i) __builtin_ia32_loaddqusi512_mask ((const __v16si *) __P,
+						     (__v16si)
+						     _mm512_setzero_si512 (),
+						     (__mmask16) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_loadu_epi32 (__m512i __W, __mmask16 __U, void const *__P)
+{
+  return (__m512i) __builtin_ia32_loaddqusi512_mask ((const __v16si *) __P,
+						     (__v16si) __W,
+						     (__mmask16) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_loadu_epi32 (__mmask16 __U, void const *__P)
+{
+  return (__m512i) __builtin_ia32_loaddqusi512_mask ((const __v16si *) __P,
+						     (__v16si)
+						     _mm512_setzero_si512 (),
+						     (__mmask16) __U);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_storeu_si512 (void *__P, __m512i __A)
+{
+  __builtin_ia32_storedqusi512_mask ((__v16si *) __P, (__v16si) __A,
+				     (__mmask16) -1);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_storeu_epi32 (void *__P, __mmask16 __U, __m512i __A)
+{
+  __builtin_ia32_storedqusi512_mask ((__v16si *) __P, (__v16si) __A,
+				     (__mmask16) __U);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_permutevar_pd (__m512d __A, __m512i __C)
+{
+  return (__m512d) __builtin_ia32_vpermilvarpd512_mask ((__v8df) __A,
+							(__v8di) __C,
+							(__v8df)
+							_mm512_undefined_pd (),
+							(__mmask8) -1);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_permutevar_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512i __C)
+{
+  return (__m512d) __builtin_ia32_vpermilvarpd512_mask ((__v8df) __A,
+							(__v8di) __C,
+							(__v8df) __W,
+							(__mmask8) __U);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_permutevar_pd (__mmask8 __U, __m512d __A, __m512i __C)
+{
+  return (__m512d) __builtin_ia32_vpermilvarpd512_mask ((__v8df) __A,
+							(__v8di) __C,
+							(__v8df)
+							_mm512_setzero_pd (),
+							(__mmask8) __U);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_permutevar_ps (__m512 __A, __m512i __C)
+{
+  return (__m512) __builtin_ia32_vpermilvarps512_mask ((__v16sf) __A,
+						       (__v16si) __C,
+						       (__v16sf)
+						       _mm512_undefined_ps (),
+						       (__mmask16) -1);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_permutevar_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512i __C)
+{
+  return (__m512) __builtin_ia32_vpermilvarps512_mask ((__v16sf) __A,
+						       (__v16si) __C,
+						       (__v16sf) __W,
+						       (__mmask16) __U);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_permutevar_ps (__mmask16 __U, __m512 __A, __m512i __C)
+{
+  return (__m512) __builtin_ia32_vpermilvarps512_mask ((__v16sf) __A,
+						       (__v16si) __C,
+						       (__v16sf)
+						       _mm512_setzero_ps (),
+						       (__mmask16) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_permutex2var_epi64 (__m512i __A, __m512i __I, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_vpermt2varq512_mask ((__v8di) __I
+						       /* idx */ ,
+						       (__v8di) __A,
+						       (__v8di) __B,
+						       (__mmask8) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_permutex2var_epi64 (__m512i __A, __mmask8 __U, __m512i __I,
+				__m512i __B)
+{
+  return (__m512i) __builtin_ia32_vpermt2varq512_mask ((__v8di) __I
+						       /* idx */ ,
+						       (__v8di) __A,
+						       (__v8di) __B,
+						       (__mmask8) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask2_permutex2var_epi64 (__m512i __A, __m512i __I,
+				 __mmask8 __U, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_vpermi2varq512_mask ((__v8di) __A,
+						       (__v8di) __I
+						       /* idx */ ,
+						       (__v8di) __B,
+						       (__mmask8) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_permutex2var_epi64 (__mmask8 __U, __m512i __A,
+				 __m512i __I, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_vpermt2varq512_maskz ((__v8di) __I
+							/* idx */ ,
+							(__v8di) __A,
+							(__v8di) __B,
+							(__mmask8) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_permutex2var_epi32 (__m512i __A, __m512i __I, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_vpermt2vard512_mask ((__v16si) __I
+						       /* idx */ ,
+						       (__v16si) __A,
+						       (__v16si) __B,
+						       (__mmask16) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_permutex2var_epi32 (__m512i __A, __mmask16 __U,
+				__m512i __I, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_vpermt2vard512_mask ((__v16si) __I
+						       /* idx */ ,
+						       (__v16si) __A,
+						       (__v16si) __B,
+						       (__mmask16) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask2_permutex2var_epi32 (__m512i __A, __m512i __I,
+				 __mmask16 __U, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_vpermi2vard512_mask ((__v16si) __A,
+						       (__v16si) __I
+						       /* idx */ ,
+						       (__v16si) __B,
+						       (__mmask16) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_permutex2var_epi32 (__mmask16 __U, __m512i __A,
+				 __m512i __I, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_vpermt2vard512_maskz ((__v16si) __I
+							/* idx */ ,
+							(__v16si) __A,
+							(__v16si) __B,
+							(__mmask16) __U);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_permutex2var_pd (__m512d __A, __m512i __I, __m512d __B)
+{
+  return (__m512d) __builtin_ia32_vpermt2varpd512_mask ((__v8di) __I
+							/* idx */ ,
+							(__v8df) __A,
+							(__v8df) __B,
+							(__mmask8) -1);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_permutex2var_pd (__m512d __A, __mmask8 __U, __m512i __I,
+			     __m512d __B)
+{
+  return (__m512d) __builtin_ia32_vpermt2varpd512_mask ((__v8di) __I
+							/* idx */ ,
+							(__v8df) __A,
+							(__v8df) __B,
+							(__mmask8) __U);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask2_permutex2var_pd (__m512d __A, __m512i __I, __mmask8 __U,
+			      __m512d __B)
+{
+  return (__m512d) __builtin_ia32_vpermi2varpd512_mask ((__v8df) __A,
+							(__v8di) __I
+							/* idx */ ,
+							(__v8df) __B,
+							(__mmask8) __U);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_permutex2var_pd (__mmask8 __U, __m512d __A, __m512i __I,
+			      __m512d __B)
+{
+  return (__m512d) __builtin_ia32_vpermt2varpd512_maskz ((__v8di) __I
+							 /* idx */ ,
+							 (__v8df) __A,
+							 (__v8df) __B,
+							 (__mmask8) __U);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_permutex2var_ps (__m512 __A, __m512i __I, __m512 __B)
+{
+  return (__m512) __builtin_ia32_vpermt2varps512_mask ((__v16si) __I
+						       /* idx */ ,
+						       (__v16sf) __A,
+						       (__v16sf) __B,
+						       (__mmask16) -1);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_permutex2var_ps (__m512 __A, __mmask16 __U, __m512i __I, __m512 __B)
+{
+  return (__m512) __builtin_ia32_vpermt2varps512_mask ((__v16si) __I
+						       /* idx */ ,
+						       (__v16sf) __A,
+						       (__v16sf) __B,
+						       (__mmask16) __U);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask2_permutex2var_ps (__m512 __A, __m512i __I, __mmask16 __U,
+			      __m512 __B)
+{
+  return (__m512) __builtin_ia32_vpermi2varps512_mask ((__v16sf) __A,
+						       (__v16si) __I
+						       /* idx */ ,
+						       (__v16sf) __B,
+						       (__mmask16) __U);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_permutex2var_ps (__mmask16 __U, __m512 __A, __m512i __I,
+			      __m512 __B)
+{
+  return (__m512) __builtin_ia32_vpermt2varps512_maskz ((__v16si) __I
+							/* idx */ ,
+							(__v16sf) __A,
+							(__v16sf) __B,
+							(__mmask16) __U);
+}
+
+#ifdef __OPTIMIZE__
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_permute_pd (__m512d __X, const int __C)
+{
+  return (__m512d) __builtin_ia32_vpermilpd512_mask ((__v8df) __X, __C,
+						     (__v8df)
+						     _mm512_undefined_pd (),
+						     (__mmask8) -1);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_permute_pd (__m512d __W, __mmask8 __U, __m512d __X, const int __C)
+{
+  return (__m512d) __builtin_ia32_vpermilpd512_mask ((__v8df) __X, __C,
+						     (__v8df) __W,
+						     (__mmask8) __U);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_permute_pd (__mmask8 __U, __m512d __X, const int __C)
+{
+  return (__m512d) __builtin_ia32_vpermilpd512_mask ((__v8df) __X, __C,
+						     (__v8df)
+						     _mm512_setzero_pd (),
+						     (__mmask8) __U);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_permute_ps (__m512 __X, const int __C)
+{
+  return (__m512) __builtin_ia32_vpermilps512_mask ((__v16sf) __X, __C,
+						    (__v16sf)
+						    _mm512_undefined_ps (),
+						    (__mmask16) -1);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_permute_ps (__m512 __W, __mmask16 __U, __m512 __X, const int __C)
+{
+  return (__m512) __builtin_ia32_vpermilps512_mask ((__v16sf) __X, __C,
+						    (__v16sf) __W,
+						    (__mmask16) __U);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_permute_ps (__mmask16 __U, __m512 __X, const int __C)
+{
+  return (__m512) __builtin_ia32_vpermilps512_mask ((__v16sf) __X, __C,
+						    (__v16sf)
+						    _mm512_setzero_ps (),
+						    (__mmask16) __U);
+}
+#else
+#define _mm512_permute_pd(X, C)							    \
+  ((__m512d) __builtin_ia32_vpermilpd512_mask ((__v8df)(__m512d)(X), (int)(C),	    \
+					      (__v8df)(__m512d)_mm512_undefined_pd(),\
+					      (__mmask8)(-1)))
+
+#define _mm512_mask_permute_pd(W, U, X, C)					    \
+  ((__m512d) __builtin_ia32_vpermilpd512_mask ((__v8df)(__m512d)(X), (int)(C),	    \
+					      (__v8df)(__m512d)(W),		    \
+					      (__mmask8)(U)))
+
+#define _mm512_maskz_permute_pd(U, X, C)					    \
+  ((__m512d) __builtin_ia32_vpermilpd512_mask ((__v8df)(__m512d)(X), (int)(C),	    \
+					      (__v8df)(__m512d)_mm512_setzero_pd(), \
+					      (__mmask8)(U)))
+
+#define _mm512_permute_ps(X, C)							    \
+  ((__m512) __builtin_ia32_vpermilps512_mask ((__v16sf)(__m512)(X), (int)(C),	    \
+					      (__v16sf)(__m512)_mm512_undefined_ps(),\
+					      (__mmask16)(-1)))
+
+#define _mm512_mask_permute_ps(W, U, X, C)					    \
+  ((__m512) __builtin_ia32_vpermilps512_mask ((__v16sf)(__m512)(X), (int)(C),	    \
+					      (__v16sf)(__m512)(W),		    \
+					      (__mmask16)(U)))
+
+#define _mm512_maskz_permute_ps(U, X, C)					    \
+  ((__m512) __builtin_ia32_vpermilps512_mask ((__v16sf)(__m512)(X), (int)(C),	    \
+					      (__v16sf)(__m512)_mm512_setzero_ps(), \
+					      (__mmask16)(U)))
+#endif
+
+#ifdef __OPTIMIZE__
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_permutex_epi64 (__m512i __X, const int __I)
+{
+  return (__m512i) __builtin_ia32_permdi512_mask ((__v8di) __X, __I,
+						  (__v8di)
+						  _mm512_undefined_si512 (),
+						  (__mmask8) (-1));
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_permutex_epi64 (__m512i __W, __mmask8 __M,
+			    __m512i __X, const int __I)
+{
+  return (__m512i) __builtin_ia32_permdi512_mask ((__v8di) __X, __I,
+						  (__v8di) __W,
+						  (__mmask8) __M);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_permutex_epi64 (__mmask8 __M, __m512i __X, const int __I)
+{
+  return (__m512i) __builtin_ia32_permdi512_mask ((__v8di) __X, __I,
+						  (__v8di)
+						  _mm512_setzero_si512 (),
+						  (__mmask8) __M);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_permutex_pd (__m512d __X, const int __M)
+{
+  return (__m512d) __builtin_ia32_permdf512_mask ((__v8df) __X, __M,
+						  (__v8df)
+						  _mm512_undefined_pd (),
+						  (__mmask8) -1);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_permutex_pd (__m512d __W, __mmask8 __U, __m512d __X, const int __M)
+{
+  return (__m512d) __builtin_ia32_permdf512_mask ((__v8df) __X, __M,
+						  (__v8df) __W,
+						  (__mmask8) __U);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_permutex_pd (__mmask8 __U, __m512d __X, const int __M)
+{
+  return (__m512d) __builtin_ia32_permdf512_mask ((__v8df) __X, __M,
+						  (__v8df)
+						  _mm512_setzero_pd (),
+						  (__mmask8) __U);
+}
+#else
+#define _mm512_permutex_pd(X, M)						\
+  ((__m512d) __builtin_ia32_permdf512_mask ((__v8df)(__m512d)(X), (int)(M),	\
+					    (__v8df)(__m512d)_mm512_undefined_pd(),\
+					    (__mmask8)-1))
+
+#define _mm512_mask_permutex_pd(W, U, X, M)					\
+  ((__m512d) __builtin_ia32_permdf512_mask ((__v8df)(__m512d)(X), (int)(M),	\
+					    (__v8df)(__m512d)(W), (__mmask8)(U)))
+
+#define _mm512_maskz_permutex_pd(U, X, M)					\
+  ((__m512d) __builtin_ia32_permdf512_mask ((__v8df)(__m512d)(X), (int)(M),	\
+					    (__v8df)(__m512d)_mm512_setzero_pd(),\
+					    (__mmask8)(U)))
+
+#define _mm512_permutex_epi64(X, I)			          \
+  ((__m512i) __builtin_ia32_permdi512_mask ((__v8di)(__m512i)(X), \
+					    (int)(I),             \
+					    (__v8di)(__m512i)	  \
+					    (_mm512_undefined_si512 ()),\
+					    (__mmask8)(-1)))
+
+#define _mm512_maskz_permutex_epi64(M, X, I)                 \
+  ((__m512i) __builtin_ia32_permdi512_mask ((__v8di)(__m512i)(X), \
+					    (int)(I),             \
+					    (__v8di)(__m512i)     \
+					    (_mm512_setzero_si512 ()),\
+					    (__mmask8)(M)))
+
+#define _mm512_mask_permutex_epi64(W, M, X, I)               \
+  ((__m512i) __builtin_ia32_permdi512_mask ((__v8di)(__m512i)(X), \
+					    (int)(I),             \
+					    (__v8di)(__m512i)(W), \
+					    (__mmask8)(M)))
+#endif
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_permutexvar_epi64 (__mmask8 __M, __m512i __X, __m512i __Y)
+{
+  return (__m512i) __builtin_ia32_permvardi512_mask ((__v8di) __Y,
+						     (__v8di) __X,
+						     (__v8di)
+						     _mm512_setzero_si512 (),
+						     __M);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_permutexvar_epi64 (__m512i __X, __m512i __Y)
+{
+  return (__m512i) __builtin_ia32_permvardi512_mask ((__v8di) __Y,
+						     (__v8di) __X,
+						     (__v8di)
+						     _mm512_undefined_si512 (),
+						     (__mmask8) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_permutexvar_epi64 (__m512i __W, __mmask8 __M, __m512i __X,
+			       __m512i __Y)
+{
+  return (__m512i) __builtin_ia32_permvardi512_mask ((__v8di) __Y,
+						     (__v8di) __X,
+						     (__v8di) __W,
+						     __M);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_permutexvar_epi32 (__mmask16 __M, __m512i __X, __m512i __Y)
+{
+  return (__m512i) __builtin_ia32_permvarsi512_mask ((__v16si) __Y,
+						     (__v16si) __X,
+						     (__v16si)
+						     _mm512_setzero_si512 (),
+						     __M);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_permutexvar_epi32 (__m512i __X, __m512i __Y)
+{
+  return (__m512i) __builtin_ia32_permvarsi512_mask ((__v16si) __Y,
+						     (__v16si) __X,
+						     (__v16si)
+						     _mm512_undefined_si512 (),
+						     (__mmask16) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_permutexvar_epi32 (__m512i __W, __mmask16 __M, __m512i __X,
+			       __m512i __Y)
+{
+  return (__m512i) __builtin_ia32_permvarsi512_mask ((__v16si) __Y,
+						     (__v16si) __X,
+						     (__v16si) __W,
+						     __M);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_permutexvar_pd (__m512i __X, __m512d __Y)
+{
+  return (__m512d) __builtin_ia32_permvardf512_mask ((__v8df) __Y,
+						     (__v8di) __X,
+						     (__v8df)
+						     _mm512_undefined_pd (),
+						     (__mmask8) -1);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_permutexvar_pd (__m512d __W, __mmask8 __U, __m512i __X, __m512d __Y)
+{
+  return (__m512d) __builtin_ia32_permvardf512_mask ((__v8df) __Y,
+						     (__v8di) __X,
+						     (__v8df) __W,
+						     (__mmask8) __U);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_permutexvar_pd (__mmask8 __U, __m512i __X, __m512d __Y)
+{
+  return (__m512d) __builtin_ia32_permvardf512_mask ((__v8df) __Y,
+						     (__v8di) __X,
+						     (__v8df)
+						     _mm512_setzero_pd (),
+						     (__mmask8) __U);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_permutexvar_ps (__m512i __X, __m512 __Y)
+{
+  return (__m512) __builtin_ia32_permvarsf512_mask ((__v16sf) __Y,
+						    (__v16si) __X,
+						    (__v16sf)
+						    _mm512_undefined_ps (),
+						    (__mmask16) -1);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_permutexvar_ps (__m512 __W, __mmask16 __U, __m512i __X, __m512 __Y)
+{
+  return (__m512) __builtin_ia32_permvarsf512_mask ((__v16sf) __Y,
+						    (__v16si) __X,
+						    (__v16sf) __W,
+						    (__mmask16) __U);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_permutexvar_ps (__mmask16 __U, __m512i __X, __m512 __Y)
+{
+  return (__m512) __builtin_ia32_permvarsf512_mask ((__v16sf) __Y,
+						    (__v16si) __X,
+						    (__v16sf)
+						    _mm512_setzero_ps (),
+						    (__mmask16) __U);
+}
+
+#ifdef __OPTIMIZE__
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_shuffle_ps (__m512 __M, __m512 __V, const int __imm)
+{
+  return (__m512) __builtin_ia32_shufps512_mask ((__v16sf) __M,
+						 (__v16sf) __V, __imm,
+						 (__v16sf)
+						 _mm512_undefined_ps (),
+						 (__mmask16) -1);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_shuffle_ps (__m512 __W, __mmask16 __U, __m512 __M,
+			__m512 __V, const int __imm)
+{
+  return (__m512) __builtin_ia32_shufps512_mask ((__v16sf) __M,
+						 (__v16sf) __V, __imm,
+						 (__v16sf) __W,
+						 (__mmask16) __U);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_shuffle_ps (__mmask16 __U, __m512 __M, __m512 __V, const int __imm)
+{
+  return (__m512) __builtin_ia32_shufps512_mask ((__v16sf) __M,
+						 (__v16sf) __V, __imm,
+						 (__v16sf)
+						 _mm512_setzero_ps (),
+						 (__mmask16) __U);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_shuffle_pd (__m512d __M, __m512d __V, const int __imm)
+{
+  return (__m512d) __builtin_ia32_shufpd512_mask ((__v8df) __M,
+						  (__v8df) __V, __imm,
+						  (__v8df)
+						  _mm512_undefined_pd (),
+						  (__mmask8) -1);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_shuffle_pd (__m512d __W, __mmask8 __U, __m512d __M,
+			__m512d __V, const int __imm)
+{
+  return (__m512d) __builtin_ia32_shufpd512_mask ((__v8df) __M,
+						  (__v8df) __V, __imm,
+						  (__v8df) __W,
+						  (__mmask8) __U);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_shuffle_pd (__mmask8 __U, __m512d __M, __m512d __V,
+			 const int __imm)
+{
+  return (__m512d) __builtin_ia32_shufpd512_mask ((__v8df) __M,
+						  (__v8df) __V, __imm,
+						  (__v8df)
+						  _mm512_setzero_pd (),
+						  (__mmask8) __U);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_fixupimm_round_pd (__m512d __A, __m512d __B, __m512i __C,
+			  const int __imm, const int __R)
+{
+  return (__m512d) __builtin_ia32_fixupimmpd512_mask ((__v8df) __A,
+						      (__v8df) __B,
+						      (__v8di) __C,
+						      __imm,
+						      (__mmask8) -1, __R);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_fixupimm_round_pd (__m512d __A, __mmask8 __U, __m512d __B,
+			       __m512i __C, const int __imm, const int __R)
+{
+  return (__m512d) __builtin_ia32_fixupimmpd512_mask ((__v8df) __A,
+						      (__v8df) __B,
+						      (__v8di) __C,
+						      __imm,
+						      (__mmask8) __U, __R);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_fixupimm_round_pd (__mmask8 __U, __m512d __A, __m512d __B,
+				__m512i __C, const int __imm, const int __R)
+{
+  return (__m512d) __builtin_ia32_fixupimmpd512_maskz ((__v8df) __A,
+						       (__v8df) __B,
+						       (__v8di) __C,
+						       __imm,
+						       (__mmask8) __U, __R);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_fixupimm_round_ps (__m512 __A, __m512 __B, __m512i __C,
+			  const int __imm, const int __R)
+{
+  return (__m512) __builtin_ia32_fixupimmps512_mask ((__v16sf) __A,
+						     (__v16sf) __B,
+						     (__v16si) __C,
+						     __imm,
+						     (__mmask16) -1, __R);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_fixupimm_round_ps (__m512 __A, __mmask16 __U, __m512 __B,
+			       __m512i __C, const int __imm, const int __R)
+{
+  return (__m512) __builtin_ia32_fixupimmps512_mask ((__v16sf) __A,
+						     (__v16sf) __B,
+						     (__v16si) __C,
+						     __imm,
+						     (__mmask16) __U, __R);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_fixupimm_round_ps (__mmask16 __U, __m512 __A, __m512 __B,
+				__m512i __C, const int __imm, const int __R)
+{
+  return (__m512) __builtin_ia32_fixupimmps512_maskz ((__v16sf) __A,
+						      (__v16sf) __B,
+						      (__v16si) __C,
+						      __imm,
+						      (__mmask16) __U, __R);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_fixupimm_round_sd (__m128d __A, __m128d __B, __m128i __C,
+		       const int __imm, const int __R)
+{
+  return (__m128d) __builtin_ia32_fixupimmsd_mask ((__v2df) __A,
+						   (__v2df) __B,
+						   (__v2di) __C, __imm,
+						   (__mmask8) -1, __R);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_fixupimm_round_sd (__m128d __A, __mmask8 __U, __m128d __B,
+			    __m128i __C, const int __imm, const int __R)
+{
+  return (__m128d) __builtin_ia32_fixupimmsd_mask ((__v2df) __A,
+						   (__v2df) __B,
+						   (__v2di) __C, __imm,
+						   (__mmask8) __U, __R);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_fixupimm_round_sd (__mmask8 __U, __m128d __A, __m128d __B,
+			     __m128i __C, const int __imm, const int __R)
+{
+  return (__m128d) __builtin_ia32_fixupimmsd_maskz ((__v2df) __A,
+						    (__v2df) __B,
+						    (__v2di) __C,
+						    __imm,
+						    (__mmask8) __U, __R);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_fixupimm_round_ss (__m128 __A, __m128 __B, __m128i __C,
+		       const int __imm, const int __R)
+{
+  return (__m128) __builtin_ia32_fixupimmss_mask ((__v4sf) __A,
+						  (__v4sf) __B,
+						  (__v4si) __C, __imm,
+						  (__mmask8) -1, __R);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_fixupimm_round_ss (__m128 __A, __mmask8 __U, __m128 __B,
+			    __m128i __C, const int __imm, const int __R)
+{
+  return (__m128) __builtin_ia32_fixupimmss_mask ((__v4sf) __A,
+						  (__v4sf) __B,
+						  (__v4si) __C, __imm,
+						  (__mmask8) __U, __R);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_fixupimm_round_ss (__mmask8 __U, __m128 __A, __m128 __B,
+			     __m128i __C, const int __imm, const int __R)
+{
+  return (__m128) __builtin_ia32_fixupimmss_maskz ((__v4sf) __A,
+						   (__v4sf) __B,
+						   (__v4si) __C, __imm,
+						   (__mmask8) __U, __R);
+}
+
+#else
+#define _mm512_shuffle_pd(X, Y, C)                                      \
+    ((__m512d)__builtin_ia32_shufpd512_mask ((__v8df)(__m512d)(X),           \
+        (__v8df)(__m512d)(Y), (int)(C),\
+    (__v8df)(__m512d)_mm512_undefined_pd(),\
+    (__mmask8)-1))
+
+#define _mm512_mask_shuffle_pd(W, U, X, Y, C)                           \
+    ((__m512d)__builtin_ia32_shufpd512_mask ((__v8df)(__m512d)(X),           \
+        (__v8df)(__m512d)(Y), (int)(C),\
+    (__v8df)(__m512d)(W),\
+    (__mmask8)(U)))
+
+#define _mm512_maskz_shuffle_pd(U, X, Y, C)                             \
+    ((__m512d)__builtin_ia32_shufpd512_mask ((__v8df)(__m512d)(X),           \
+        (__v8df)(__m512d)(Y), (int)(C),\
+    (__v8df)(__m512d)_mm512_setzero_pd(),\
+    (__mmask8)(U)))
+
+#define _mm512_shuffle_ps(X, Y, C)                                      \
+    ((__m512)__builtin_ia32_shufps512_mask ((__v16sf)(__m512)(X),            \
+        (__v16sf)(__m512)(Y), (int)(C),\
+    (__v16sf)(__m512)_mm512_undefined_ps(),\
+    (__mmask16)-1))
+
+#define _mm512_mask_shuffle_ps(W, U, X, Y, C)                           \
+    ((__m512)__builtin_ia32_shufps512_mask ((__v16sf)(__m512)(X),            \
+        (__v16sf)(__m512)(Y), (int)(C),\
+    (__v16sf)(__m512)(W),\
+    (__mmask16)(U)))
+
+#define _mm512_maskz_shuffle_ps(U, X, Y, C)                             \
+    ((__m512)__builtin_ia32_shufps512_mask ((__v16sf)(__m512)(X),            \
+        (__v16sf)(__m512)(Y), (int)(C),\
+    (__v16sf)(__m512)_mm512_setzero_ps(),\
+    (__mmask16)(U)))
+
+#define _mm512_fixupimm_round_pd(X, Y, Z, C, R)					\
+  ((__m512d)__builtin_ia32_fixupimmpd512_mask ((__v8df)(__m512d)(X),	\
+      (__v8df)(__m512d)(Y), (__v8di)(__m512i)(Z), (int)(C),		\
+      (__mmask8)(-1), (R)))
+
+#define _mm512_mask_fixupimm_round_pd(X, U, Y, Z, C, R)                          \
+  ((__m512d)__builtin_ia32_fixupimmpd512_mask ((__v8df)(__m512d)(X),    \
+      (__v8df)(__m512d)(Y), (__v8di)(__m512i)(Z), (int)(C),             \
+      (__mmask8)(U), (R)))
+
+#define _mm512_maskz_fixupimm_round_pd(U, X, Y, Z, C, R)                         \
+  ((__m512d)__builtin_ia32_fixupimmpd512_maskz ((__v8df)(__m512d)(X),   \
+      (__v8df)(__m512d)(Y), (__v8di)(__m512i)(Z), (int)(C),             \
+      (__mmask8)(U), (R)))
+
+#define _mm512_fixupimm_round_ps(X, Y, Z, C, R)					\
+  ((__m512)__builtin_ia32_fixupimmps512_mask ((__v16sf)(__m512)(X),	\
+    (__v16sf)(__m512)(Y), (__v16si)(__m512i)(Z), (int)(C),		\
+    (__mmask16)(-1), (R)))
+
+#define _mm512_mask_fixupimm_round_ps(X, U, Y, Z, C, R)                          \
+  ((__m512)__builtin_ia32_fixupimmps512_mask ((__v16sf)(__m512)(X),     \
+    (__v16sf)(__m512)(Y), (__v16si)(__m512i)(Z), (int)(C),              \
+    (__mmask16)(U), (R)))
+
+#define _mm512_maskz_fixupimm_round_ps(U, X, Y, Z, C, R)                         \
+  ((__m512)__builtin_ia32_fixupimmps512_maskz ((__v16sf)(__m512)(X),    \
+    (__v16sf)(__m512)(Y), (__v16si)(__m512i)(Z), (int)(C),              \
+    (__mmask16)(U), (R)))
+
+#define _mm_fixupimm_round_sd(X, Y, Z, C, R)					\
+    ((__m128d)__builtin_ia32_fixupimmsd_mask ((__v2df)(__m128d)(X),	\
+      (__v2df)(__m128d)(Y), (__v2di)(__m128i)(Z), (int)(C),		\
+      (__mmask8)(-1), (R)))
+
+#define _mm_mask_fixupimm_round_sd(X, U, Y, Z, C, R)				\
+    ((__m128d)__builtin_ia32_fixupimmsd_mask ((__v2df)(__m128d)(X),	\
+      (__v2df)(__m128d)(Y), (__v2di)(__m128i)(Z), (int)(C),		\
+      (__mmask8)(U), (R)))
+
+#define _mm_maskz_fixupimm_round_sd(U, X, Y, Z, C, R)				\
+    ((__m128d)__builtin_ia32_fixupimmsd_maskz ((__v2df)(__m128d)(X),	\
+      (__v2df)(__m128d)(Y), (__v2di)(__m128i)(Z), (int)(C),		\
+      (__mmask8)(U), (R)))
+
+#define _mm_fixupimm_round_ss(X, Y, Z, C, R)					\
+    ((__m128)__builtin_ia32_fixupimmss_mask ((__v4sf)(__m128)(X),	\
+      (__v4sf)(__m128)(Y), (__v4si)(__m128i)(Z), (int)(C),		\
+      (__mmask8)(-1), (R)))
+
+#define _mm_mask_fixupimm_round_ss(X, U, Y, Z, C, R)				\
+    ((__m128)__builtin_ia32_fixupimmss_mask ((__v4sf)(__m128)(X),	\
+      (__v4sf)(__m128)(Y), (__v4si)(__m128i)(Z), (int)(C),		\
+      (__mmask8)(U), (R)))
+
+#define _mm_maskz_fixupimm_round_ss(U, X, Y, Z, C, R)				\
+    ((__m128)__builtin_ia32_fixupimmss_maskz ((__v4sf)(__m128)(X),	\
+      (__v4sf)(__m128)(Y), (__v4si)(__m128i)(Z), (int)(C),		\
+      (__mmask8)(U), (R)))
+#endif
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_movehdup_ps (__m512 __A)
+{
+  return (__m512) __builtin_ia32_movshdup512_mask ((__v16sf) __A,
+						   (__v16sf)
+						   _mm512_undefined_ps (),
+						   (__mmask16) -1);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_movehdup_ps (__m512 __W, __mmask16 __U, __m512 __A)
+{
+  return (__m512) __builtin_ia32_movshdup512_mask ((__v16sf) __A,
+						   (__v16sf) __W,
+						   (__mmask16) __U);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_movehdup_ps (__mmask16 __U, __m512 __A)
+{
+  return (__m512) __builtin_ia32_movshdup512_mask ((__v16sf) __A,
+						   (__v16sf)
+						   _mm512_setzero_ps (),
+						   (__mmask16) __U);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_moveldup_ps (__m512 __A)
+{
+  return (__m512) __builtin_ia32_movsldup512_mask ((__v16sf) __A,
+						   (__v16sf)
+						   _mm512_undefined_ps (),
+						   (__mmask16) -1);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_moveldup_ps (__m512 __W, __mmask16 __U, __m512 __A)
+{
+  return (__m512) __builtin_ia32_movsldup512_mask ((__v16sf) __A,
+						   (__v16sf) __W,
+						   (__mmask16) __U);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_moveldup_ps (__mmask16 __U, __m512 __A)
+{
+  return (__m512) __builtin_ia32_movsldup512_mask ((__v16sf) __A,
+						   (__v16sf)
+						   _mm512_setzero_ps (),
+						   (__mmask16) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_or_si512 (__m512i __A, __m512i __B)
+{
+  return (__m512i) ((__v16su) __A | (__v16su) __B);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_or_epi32 (__m512i __A, __m512i __B)
+{
+  return (__m512i) ((__v16su) __A | (__v16su) __B);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_or_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pord512_mask ((__v16si) __A,
+						(__v16si) __B,
+						(__v16si) __W,
+						(__mmask16) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_or_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pord512_mask ((__v16si) __A,
+						(__v16si) __B,
+						(__v16si)
+						_mm512_setzero_si512 (),
+						(__mmask16) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_or_epi64 (__m512i __A, __m512i __B)
+{
+  return (__m512i) ((__v8du) __A | (__v8du) __B);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_or_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_porq512_mask ((__v8di) __A,
+						(__v8di) __B,
+						(__v8di) __W,
+						(__mmask8) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_or_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_porq512_mask ((__v8di) __A,
+						(__v8di) __B,
+						(__v8di)
+						_mm512_setzero_si512 (),
+						(__mmask8) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_xor_si512 (__m512i __A, __m512i __B)
+{
+  return (__m512i) ((__v16su) __A ^ (__v16su) __B);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_xor_epi32 (__m512i __A, __m512i __B)
+{
+  return (__m512i) ((__v16su) __A ^ (__v16su) __B);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_xor_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pxord512_mask ((__v16si) __A,
+						 (__v16si) __B,
+						 (__v16si) __W,
+						 (__mmask16) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_xor_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pxord512_mask ((__v16si) __A,
+						 (__v16si) __B,
+						 (__v16si)
+						 _mm512_setzero_si512 (),
+						 (__mmask16) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_xor_epi64 (__m512i __A, __m512i __B)
+{
+  return (__m512i) ((__v8du) __A ^ (__v8du) __B);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_xor_epi64 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pxorq512_mask ((__v8di) __A,
+						 (__v8di) __B,
+						 (__v8di) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_xor_epi64 (__mmask16 __U, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pxorq512_mask ((__v8di) __A,
+						 (__v8di) __B,
+						 (__v8di)
+						 _mm512_setzero_si512 (),
+						 (__mmask8) __U);
+}
+
+#ifdef __OPTIMIZE__
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_rol_epi32 (__m512i __A, const int __B)
+{
+  return (__m512i) __builtin_ia32_prold512_mask ((__v16si) __A, __B,
+						 (__v16si)
+						 _mm512_undefined_si512 (),
+						 (__mmask16) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_rol_epi32 (__m512i __W, __mmask16 __U, __m512i __A, const int __B)
+{
+  return (__m512i) __builtin_ia32_prold512_mask ((__v16si) __A, __B,
+						 (__v16si) __W,
+						 (__mmask16) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_rol_epi32 (__mmask16 __U, __m512i __A, const int __B)
+{
+  return (__m512i) __builtin_ia32_prold512_mask ((__v16si) __A, __B,
+						 (__v16si)
+						 _mm512_setzero_si512 (),
+						 (__mmask16) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_ror_epi32 (__m512i __A, int __B)
+{
+  return (__m512i) __builtin_ia32_prord512_mask ((__v16si) __A, __B,
+						 (__v16si)
+						 _mm512_undefined_si512 (),
+						 (__mmask16) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_ror_epi32 (__m512i __W, __mmask16 __U, __m512i __A, int __B)
+{
+  return (__m512i) __builtin_ia32_prord512_mask ((__v16si) __A, __B,
+						 (__v16si) __W,
+						 (__mmask16) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_ror_epi32 (__mmask16 __U, __m512i __A, int __B)
+{
+  return (__m512i) __builtin_ia32_prord512_mask ((__v16si) __A, __B,
+						 (__v16si)
+						 _mm512_setzero_si512 (),
+						 (__mmask16) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_rol_epi64 (__m512i __A, const int __B)
+{
+  return (__m512i) __builtin_ia32_prolq512_mask ((__v8di) __A, __B,
+						 (__v8di)
+						 _mm512_undefined_si512 (),
+						 (__mmask8) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_rol_epi64 (__m512i __W, __mmask8 __U, __m512i __A, const int __B)
+{
+  return (__m512i) __builtin_ia32_prolq512_mask ((__v8di) __A, __B,
+						 (__v8di) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_rol_epi64 (__mmask8 __U, __m512i __A, const int __B)
+{
+  return (__m512i) __builtin_ia32_prolq512_mask ((__v8di) __A, __B,
+						 (__v8di)
+						 _mm512_setzero_si512 (),
+						 (__mmask8) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_ror_epi64 (__m512i __A, int __B)
+{
+  return (__m512i) __builtin_ia32_prorq512_mask ((__v8di) __A, __B,
+						 (__v8di)
+						 _mm512_undefined_si512 (),
+						 (__mmask8) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_ror_epi64 (__m512i __W, __mmask8 __U, __m512i __A, int __B)
+{
+  return (__m512i) __builtin_ia32_prorq512_mask ((__v8di) __A, __B,
+						 (__v8di) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_ror_epi64 (__mmask8 __U, __m512i __A, int __B)
+{
+  return (__m512i) __builtin_ia32_prorq512_mask ((__v8di) __A, __B,
+						 (__v8di)
+						 _mm512_setzero_si512 (),
+						 (__mmask8) __U);
+}
+
+#else
+#define _mm512_rol_epi32(A, B)						  \
+    ((__m512i)__builtin_ia32_prold512_mask ((__v16si)(__m512i)(A),	  \
+					    (int)(B),			  \
+					    (__v16si)_mm512_undefined_si512 (), \
+					    (__mmask16)(-1)))
+#define _mm512_mask_rol_epi32(W, U, A, B)				  \
+    ((__m512i)__builtin_ia32_prold512_mask ((__v16si)(__m512i)(A),	  \
+					    (int)(B),			  \
+					    (__v16si)(__m512i)(W),	  \
+					    (__mmask16)(U)))
+#define _mm512_maskz_rol_epi32(U, A, B)					  \
+    ((__m512i)__builtin_ia32_prold512_mask ((__v16si)(__m512i)(A),	  \
+					    (int)(B),			  \
+					    (__v16si)_mm512_setzero_si512 (), \
+					    (__mmask16)(U)))
+#define _mm512_ror_epi32(A, B)						  \
+    ((__m512i)__builtin_ia32_prord512_mask ((__v16si)(__m512i)(A),	  \
+					    (int)(B),			  \
+					    (__v16si)_mm512_undefined_si512 (), \
+					    (__mmask16)(-1)))
+#define _mm512_mask_ror_epi32(W, U, A, B)				  \
+    ((__m512i)__builtin_ia32_prord512_mask ((__v16si)(__m512i)(A),	  \
+					    (int)(B),			  \
+					    (__v16si)(__m512i)(W),	  \
+					    (__mmask16)(U)))
+#define _mm512_maskz_ror_epi32(U, A, B)					  \
+    ((__m512i)__builtin_ia32_prord512_mask ((__v16si)(__m512i)(A),	  \
+					    (int)(B),			  \
+					    (__v16si)_mm512_setzero_si512 (), \
+					    (__mmask16)(U)))
+#define _mm512_rol_epi64(A, B)						  \
+    ((__m512i)__builtin_ia32_prolq512_mask ((__v8di)(__m512i)(A),	  \
+					    (int)(B),			  \
+					    (__v8di)_mm512_undefined_si512 (),  \
+					    (__mmask8)(-1)))
+#define _mm512_mask_rol_epi64(W, U, A, B)				  \
+    ((__m512i)__builtin_ia32_prolq512_mask ((__v8di)(__m512i)(A),	  \
+					    (int)(B),			  \
+					    (__v8di)(__m512i)(W),	  \
+					    (__mmask8)(U)))
+#define _mm512_maskz_rol_epi64(U, A, B)					  \
+    ((__m512i)__builtin_ia32_prolq512_mask ((__v8di)(__m512i)(A),	  \
+					    (int)(B),			  \
+					    (__v8di)_mm512_setzero_si512 (),  \
+					    (__mmask8)(U)))
+
+#define _mm512_ror_epi64(A, B)						  \
+    ((__m512i)__builtin_ia32_prorq512_mask ((__v8di)(__m512i)(A),	  \
+					    (int)(B),			  \
+					    (__v8di)_mm512_undefined_si512 (),  \
+					    (__mmask8)(-1)))
+#define _mm512_mask_ror_epi64(W, U, A, B)				  \
+    ((__m512i)__builtin_ia32_prorq512_mask ((__v8di)(__m512i)(A),	  \
+					    (int)(B),			  \
+					    (__v8di)(__m512i)(W),	  \
+					    (__mmask8)(U)))
+#define _mm512_maskz_ror_epi64(U, A, B)					  \
+    ((__m512i)__builtin_ia32_prorq512_mask ((__v8di)(__m512i)(A),	  \
+					    (int)(B),			  \
+					    (__v8di)_mm512_setzero_si512 (),  \
+					    (__mmask8)(U)))
+#endif
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_and_si512 (__m512i __A, __m512i __B)
+{
+  return (__m512i) ((__v16su) __A & (__v16su) __B);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_and_epi32 (__m512i __A, __m512i __B)
+{
+  return (__m512i) ((__v16su) __A & (__v16su) __B);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_and_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pandd512_mask ((__v16si) __A,
+						 (__v16si) __B,
+						 (__v16si) __W,
+						 (__mmask16) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_and_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pandd512_mask ((__v16si) __A,
+						 (__v16si) __B,
+						 (__v16si)
+						 _mm512_setzero_si512 (),
+						 (__mmask16) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_and_epi64 (__m512i __A, __m512i __B)
+{
+  return (__m512i) ((__v8du) __A & (__v8du) __B);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_and_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pandq512_mask ((__v8di) __A,
+						 (__v8di) __B,
+						 (__v8di) __W, __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_and_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pandq512_mask ((__v8di) __A,
+						 (__v8di) __B,
+						 (__v8di)
+						 _mm512_setzero_pd (),
+						 __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_andnot_si512 (__m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pandnd512_mask ((__v16si) __A,
+						  (__v16si) __B,
+						  (__v16si)
+						  _mm512_undefined_si512 (),
+						  (__mmask16) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_andnot_epi32 (__m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pandnd512_mask ((__v16si) __A,
+						  (__v16si) __B,
+						  (__v16si)
+						  _mm512_undefined_si512 (),
+						  (__mmask16) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_andnot_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pandnd512_mask ((__v16si) __A,
+						  (__v16si) __B,
+						  (__v16si) __W,
+						  (__mmask16) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_andnot_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pandnd512_mask ((__v16si) __A,
+						  (__v16si) __B,
+						  (__v16si)
+						  _mm512_setzero_si512 (),
+						  (__mmask16) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_andnot_epi64 (__m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pandnq512_mask ((__v8di) __A,
+						  (__v8di) __B,
+						  (__v8di)
+						  _mm512_undefined_si512 (),
+						  (__mmask8) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_andnot_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pandnq512_mask ((__v8di) __A,
+						  (__v8di) __B,
+						  (__v8di) __W, __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_andnot_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pandnq512_mask ((__v8di) __A,
+						  (__v8di) __B,
+						  (__v8di)
+						  _mm512_setzero_pd (),
+						  __U);
+}
+
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_test_epi32_mask (__m512i __A, __m512i __B)
+{
+  return (__mmask16) __builtin_ia32_ptestmd512 ((__v16si) __A,
+						(__v16si) __B,
+						(__mmask16) -1);
+}
+
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_test_epi32_mask (__mmask16 __U, __m512i __A, __m512i __B)
+{
+  return (__mmask16) __builtin_ia32_ptestmd512 ((__v16si) __A,
+						(__v16si) __B, __U);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_test_epi64_mask (__m512i __A, __m512i __B)
+{
+  return (__mmask8) __builtin_ia32_ptestmq512 ((__v8di) __A,
+					       (__v8di) __B,
+					       (__mmask8) -1);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_test_epi64_mask (__mmask8 __U, __m512i __A, __m512i __B)
+{
+  return (__mmask8) __builtin_ia32_ptestmq512 ((__v8di) __A, (__v8di) __B, __U);
+}
+
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_testn_epi32_mask (__m512i __A, __m512i __B)
+{
+  return (__mmask16) __builtin_ia32_ptestnmd512 ((__v16si) __A,
+						 (__v16si) __B,
+						 (__mmask16) -1);
+}
+
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_testn_epi32_mask (__mmask16 __U, __m512i __A, __m512i __B)
+{
+  return (__mmask16) __builtin_ia32_ptestnmd512 ((__v16si) __A,
+						 (__v16si) __B, __U);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_testn_epi64_mask (__m512i __A, __m512i __B)
+{
+  return (__mmask8) __builtin_ia32_ptestnmq512 ((__v8di) __A,
+						(__v8di) __B,
+						(__mmask8) -1);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_testn_epi64_mask (__mmask8 __U, __m512i __A, __m512i __B)
+{
+  return (__mmask8) __builtin_ia32_ptestnmq512 ((__v8di) __A,
+						(__v8di) __B, __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_unpackhi_epi32 (__m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_punpckhdq512_mask ((__v16si) __A,
+						     (__v16si) __B,
+						     (__v16si)
+						     _mm512_undefined_si512 (),
+						     (__mmask16) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_unpackhi_epi32 (__m512i __W, __mmask16 __U, __m512i __A,
+			    __m512i __B)
+{
+  return (__m512i) __builtin_ia32_punpckhdq512_mask ((__v16si) __A,
+						     (__v16si) __B,
+						     (__v16si) __W,
+						     (__mmask16) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_unpackhi_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_punpckhdq512_mask ((__v16si) __A,
+						     (__v16si) __B,
+						     (__v16si)
+						     _mm512_setzero_si512 (),
+						     (__mmask16) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_unpackhi_epi64 (__m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_punpckhqdq512_mask ((__v8di) __A,
+						      (__v8di) __B,
+						      (__v8di)
+						      _mm512_undefined_si512 (),
+						      (__mmask8) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_unpackhi_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_punpckhqdq512_mask ((__v8di) __A,
+						      (__v8di) __B,
+						      (__v8di) __W,
+						      (__mmask8) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_unpackhi_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_punpckhqdq512_mask ((__v8di) __A,
+						      (__v8di) __B,
+						      (__v8di)
+						      _mm512_setzero_si512 (),
+						      (__mmask8) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_unpacklo_epi32 (__m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_punpckldq512_mask ((__v16si) __A,
+						     (__v16si) __B,
+						     (__v16si)
+						     _mm512_undefined_si512 (),
+						     (__mmask16) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_unpacklo_epi32 (__m512i __W, __mmask16 __U, __m512i __A,
+			    __m512i __B)
+{
+  return (__m512i) __builtin_ia32_punpckldq512_mask ((__v16si) __A,
+						     (__v16si) __B,
+						     (__v16si) __W,
+						     (__mmask16) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_unpacklo_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_punpckldq512_mask ((__v16si) __A,
+						     (__v16si) __B,
+						     (__v16si)
+						     _mm512_setzero_si512 (),
+						     (__mmask16) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_unpacklo_epi64 (__m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_punpcklqdq512_mask ((__v8di) __A,
+						      (__v8di) __B,
+						      (__v8di)
+						      _mm512_undefined_si512 (),
+						      (__mmask8) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_unpacklo_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_punpcklqdq512_mask ((__v8di) __A,
+						      (__v8di) __B,
+						      (__v8di) __W,
+						      (__mmask8) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_unpacklo_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_punpcklqdq512_mask ((__v8di) __A,
+						      (__v8di) __B,
+						      (__v8di)
+						      _mm512_setzero_si512 (),
+						      (__mmask8) __U);
+}
+
+#ifdef __x86_64__
+#ifdef __OPTIMIZE__
+extern __inline unsigned long long
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvt_roundss_u64 (__m128 __A, const int __R)
+{
+  return (unsigned long long) __builtin_ia32_vcvtss2usi64 ((__v4sf) __A, __R);
+}
+
+extern __inline long long
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvt_roundss_si64 (__m128 __A, const int __R)
+{
+  return (long long) __builtin_ia32_vcvtss2si64 ((__v4sf) __A, __R);
+}
+
+extern __inline long long
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvt_roundss_i64 (__m128 __A, const int __R)
+{
+  return (long long) __builtin_ia32_vcvtss2si64 ((__v4sf) __A, __R);
+}
+
+extern __inline unsigned long long
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtt_roundss_u64 (__m128 __A, const int __R)
+{
+  return (unsigned long long) __builtin_ia32_vcvttss2usi64 ((__v4sf) __A, __R);
+}
+
+extern __inline long long
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtt_roundss_i64 (__m128 __A, const int __R)
+{
+  return (long long) __builtin_ia32_vcvttss2si64 ((__v4sf) __A, __R);
+}
+
+extern __inline long long
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtt_roundss_si64 (__m128 __A, const int __R)
+{
+  return (long long) __builtin_ia32_vcvttss2si64 ((__v4sf) __A, __R);
+}
+#else
+#define _mm_cvt_roundss_u64(A, B)   \
+    ((unsigned long long)__builtin_ia32_vcvtss2usi64(A, B))
+
+#define _mm_cvt_roundss_si64(A, B)   \
+    ((long long)__builtin_ia32_vcvtss2si64(A, B))
+
+#define _mm_cvt_roundss_i64(A, B)   \
+    ((long long)__builtin_ia32_vcvtss2si64(A, B))
+
+#define _mm_cvtt_roundss_u64(A, B)  \
+    ((unsigned long long)__builtin_ia32_vcvttss2usi64(A, B))
+
+#define _mm_cvtt_roundss_i64(A, B)  \
+    ((long long)__builtin_ia32_vcvttss2si64(A, B))
+
+#define _mm_cvtt_roundss_si64(A, B)  \
+    ((long long)__builtin_ia32_vcvttss2si64(A, B))
+#endif
+#endif
+
+#ifdef __OPTIMIZE__
+extern __inline unsigned
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvt_roundss_u32 (__m128 __A, const int __R)
+{
+  return (unsigned) __builtin_ia32_vcvtss2usi32 ((__v4sf) __A, __R);
+}
+
+extern __inline int
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvt_roundss_si32 (__m128 __A, const int __R)
+{
+  return (int) __builtin_ia32_vcvtss2si32 ((__v4sf) __A, __R);
+}
+
+extern __inline int
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvt_roundss_i32 (__m128 __A, const int __R)
+{
+  return (int) __builtin_ia32_vcvtss2si32 ((__v4sf) __A, __R);
+}
+
+extern __inline unsigned
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtt_roundss_u32 (__m128 __A, const int __R)
+{
+  return (unsigned) __builtin_ia32_vcvttss2usi32 ((__v4sf) __A, __R);
+}
+
+extern __inline int
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtt_roundss_i32 (__m128 __A, const int __R)
+{
+  return (int) __builtin_ia32_vcvttss2si32 ((__v4sf) __A, __R);
+}
+
+extern __inline int
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtt_roundss_si32 (__m128 __A, const int __R)
+{
+  return (int) __builtin_ia32_vcvttss2si32 ((__v4sf) __A, __R);
+}
+#else
+#define _mm_cvt_roundss_u32(A, B)   \
+    ((unsigned)__builtin_ia32_vcvtss2usi32(A, B))
+
+#define _mm_cvt_roundss_si32(A, B)   \
+    ((int)__builtin_ia32_vcvtss2si32(A, B))
+
+#define _mm_cvt_roundss_i32(A, B)   \
+    ((int)__builtin_ia32_vcvtss2si32(A, B))
+
+#define _mm_cvtt_roundss_u32(A, B)  \
+    ((unsigned)__builtin_ia32_vcvttss2usi32(A, B))
+
+#define _mm_cvtt_roundss_si32(A, B)  \
+    ((int)__builtin_ia32_vcvttss2si32(A, B))
+
+#define _mm_cvtt_roundss_i32(A, B)  \
+    ((int)__builtin_ia32_vcvttss2si32(A, B))
+#endif
+
+#ifdef __x86_64__
+#ifdef __OPTIMIZE__
+extern __inline unsigned long long
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvt_roundsd_u64 (__m128d __A, const int __R)
+{
+  return (unsigned long long) __builtin_ia32_vcvtsd2usi64 ((__v2df) __A, __R);
+}
+
+extern __inline long long
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvt_roundsd_si64 (__m128d __A, const int __R)
+{
+  return (long long) __builtin_ia32_vcvtsd2si64 ((__v2df) __A, __R);
+}
+
+extern __inline long long
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvt_roundsd_i64 (__m128d __A, const int __R)
+{
+  return (long long) __builtin_ia32_vcvtsd2si64 ((__v2df) __A, __R);
+}
+
+extern __inline unsigned long long
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtt_roundsd_u64 (__m128d __A, const int __R)
+{
+  return (unsigned long long) __builtin_ia32_vcvttsd2usi64 ((__v2df) __A, __R);
+}
+
+extern __inline long long
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtt_roundsd_si64 (__m128d __A, const int __R)
+{
+  return (long long) __builtin_ia32_vcvttsd2si64 ((__v2df) __A, __R);
+}
+
+extern __inline long long
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtt_roundsd_i64 (__m128d __A, const int __R)
+{
+  return (long long) __builtin_ia32_vcvttsd2si64 ((__v2df) __A, __R);
+}
+#else
+#define _mm_cvt_roundsd_u64(A, B)   \
+    ((unsigned long long)__builtin_ia32_vcvtsd2usi64(A, B))
+
+#define _mm_cvt_roundsd_si64(A, B)   \
+    ((long long)__builtin_ia32_vcvtsd2si64(A, B))
+
+#define _mm_cvt_roundsd_i64(A, B)   \
+    ((long long)__builtin_ia32_vcvtsd2si64(A, B))
+
+#define _mm_cvtt_roundsd_u64(A, B)   \
+    ((unsigned long long)__builtin_ia32_vcvttsd2usi64(A, B))
+
+#define _mm_cvtt_roundsd_si64(A, B)   \
+    ((long long)__builtin_ia32_vcvttsd2si64(A, B))
+
+#define _mm_cvtt_roundsd_i64(A, B)   \
+    ((long long)__builtin_ia32_vcvttsd2si64(A, B))
+#endif
+#endif
+
+#ifdef __OPTIMIZE__
+extern __inline unsigned
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvt_roundsd_u32 (__m128d __A, const int __R)
+{
+  return (unsigned) __builtin_ia32_vcvtsd2usi32 ((__v2df) __A, __R);
+}
+
+extern __inline int
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvt_roundsd_si32 (__m128d __A, const int __R)
+{
+  return (int) __builtin_ia32_vcvtsd2si32 ((__v2df) __A, __R);
+}
+
+extern __inline int
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvt_roundsd_i32 (__m128d __A, const int __R)
+{
+  return (int) __builtin_ia32_vcvtsd2si32 ((__v2df) __A, __R);
+}
+
+extern __inline unsigned
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtt_roundsd_u32 (__m128d __A, const int __R)
+{
+  return (unsigned) __builtin_ia32_vcvttsd2usi32 ((__v2df) __A, __R);
+}
+
+extern __inline int
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtt_roundsd_i32 (__m128d __A, const int __R)
+{
+  return (int) __builtin_ia32_vcvttsd2si32 ((__v2df) __A, __R);
+}
+
+extern __inline int
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtt_roundsd_si32 (__m128d __A, const int __R)
+{
+  return (int) __builtin_ia32_vcvttsd2si32 ((__v2df) __A, __R);
+}
+#else
+#define _mm_cvt_roundsd_u32(A, B)   \
+    ((unsigned)__builtin_ia32_vcvtsd2usi32(A, B))
+
+#define _mm_cvt_roundsd_si32(A, B)   \
+    ((int)__builtin_ia32_vcvtsd2si32(A, B))
+
+#define _mm_cvt_roundsd_i32(A, B)   \
+    ((int)__builtin_ia32_vcvtsd2si32(A, B))
+
+#define _mm_cvtt_roundsd_u32(A, B)   \
+    ((unsigned)__builtin_ia32_vcvttsd2usi32(A, B))
+
+#define _mm_cvtt_roundsd_si32(A, B)   \
+    ((int)__builtin_ia32_vcvttsd2si32(A, B))
+
+#define _mm_cvtt_roundsd_i32(A, B)   \
+    ((int)__builtin_ia32_vcvttsd2si32(A, B))
+#endif
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_movedup_pd (__m512d __A)
+{
+  return (__m512d) __builtin_ia32_movddup512_mask ((__v8df) __A,
+						   (__v8df)
+						   _mm512_undefined_pd (),
+						   (__mmask8) -1);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_movedup_pd (__m512d __W, __mmask8 __U, __m512d __A)
+{
+  return (__m512d) __builtin_ia32_movddup512_mask ((__v8df) __A,
+						   (__v8df) __W,
+						   (__mmask8) __U);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_movedup_pd (__mmask8 __U, __m512d __A)
+{
+  return (__m512d) __builtin_ia32_movddup512_mask ((__v8df) __A,
+						   (__v8df)
+						   _mm512_setzero_pd (),
+						   (__mmask8) __U);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_unpacklo_pd (__m512d __A, __m512d __B)
+{
+  return (__m512d) __builtin_ia32_unpcklpd512_mask ((__v8df) __A,
+						    (__v8df) __B,
+						    (__v8df)
+						    _mm512_undefined_pd (),
+						    (__mmask8) -1);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_unpacklo_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
+{
+  return (__m512d) __builtin_ia32_unpcklpd512_mask ((__v8df) __A,
+						    (__v8df) __B,
+						    (__v8df) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_unpacklo_pd (__mmask8 __U, __m512d __A, __m512d __B)
+{
+  return (__m512d) __builtin_ia32_unpcklpd512_mask ((__v8df) __A,
+						    (__v8df) __B,
+						    (__v8df)
+						    _mm512_setzero_pd (),
+						    (__mmask8) __U);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_unpackhi_pd (__m512d __A, __m512d __B)
+{
+  return (__m512d) __builtin_ia32_unpckhpd512_mask ((__v8df) __A,
+						    (__v8df) __B,
+						    (__v8df)
+						    _mm512_undefined_pd (),
+						    (__mmask8) -1);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_unpackhi_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
+{
+  return (__m512d) __builtin_ia32_unpckhpd512_mask ((__v8df) __A,
+						    (__v8df) __B,
+						    (__v8df) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_unpackhi_pd (__mmask8 __U, __m512d __A, __m512d __B)
+{
+  return (__m512d) __builtin_ia32_unpckhpd512_mask ((__v8df) __A,
+						    (__v8df) __B,
+						    (__v8df)
+						    _mm512_setzero_pd (),
+						    (__mmask8) __U);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_unpackhi_ps (__m512 __A, __m512 __B)
+{
+  return (__m512) __builtin_ia32_unpckhps512_mask ((__v16sf) __A,
+						   (__v16sf) __B,
+						   (__v16sf)
+						   _mm512_undefined_ps (),
+						   (__mmask16) -1);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_unpackhi_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
+{
+  return (__m512) __builtin_ia32_unpckhps512_mask ((__v16sf) __A,
+						   (__v16sf) __B,
+						   (__v16sf) __W,
+						   (__mmask16) __U);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_unpackhi_ps (__mmask16 __U, __m512 __A, __m512 __B)
+{
+  return (__m512) __builtin_ia32_unpckhps512_mask ((__v16sf) __A,
+						   (__v16sf) __B,
+						   (__v16sf)
+						   _mm512_setzero_ps (),
+						   (__mmask16) __U);
+}
+
+#ifdef __OPTIMIZE__
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cvt_roundps_pd (__m256 __A, const int __R)
+{
+  return (__m512d) __builtin_ia32_cvtps2pd512_mask ((__v8sf) __A,
+						    (__v8df)
+						    _mm512_undefined_pd (),
+						    (__mmask8) -1, __R);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvt_roundps_pd (__m512d __W, __mmask8 __U, __m256 __A,
+			    const int __R)
+{
+  return (__m512d) __builtin_ia32_cvtps2pd512_mask ((__v8sf) __A,
+						    (__v8df) __W,
+						    (__mmask8) __U, __R);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_cvt_roundps_pd (__mmask8 __U, __m256 __A, const int __R)
+{
+  return (__m512d) __builtin_ia32_cvtps2pd512_mask ((__v8sf) __A,
+						    (__v8df)
+						    _mm512_setzero_pd (),
+						    (__mmask8) __U, __R);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cvt_roundph_ps (__m256i __A, const int __R)
+{
+  return (__m512) __builtin_ia32_vcvtph2ps512_mask ((__v16hi) __A,
+						    (__v16sf)
+						    _mm512_undefined_ps (),
+						    (__mmask16) -1, __R);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvt_roundph_ps (__m512 __W, __mmask16 __U, __m256i __A,
+			    const int __R)
+{
+  return (__m512) __builtin_ia32_vcvtph2ps512_mask ((__v16hi) __A,
+						    (__v16sf) __W,
+						    (__mmask16) __U, __R);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_cvt_roundph_ps (__mmask16 __U, __m256i __A, const int __R)
+{
+  return (__m512) __builtin_ia32_vcvtph2ps512_mask ((__v16hi) __A,
+						    (__v16sf)
+						    _mm512_setzero_ps (),
+						    (__mmask16) __U, __R);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cvt_roundps_ph (__m512 __A, const int __I)
+{
+  return (__m256i) __builtin_ia32_vcvtps2ph512_mask ((__v16sf) __A,
+						     __I,
+						     (__v16hi)
+						     _mm256_undefined_si256 (),
+						     -1);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cvtps_ph (__m512 __A, const int __I)
+{
+  return (__m256i) __builtin_ia32_vcvtps2ph512_mask ((__v16sf) __A,
+						     __I,
+						     (__v16hi)
+						     _mm256_undefined_si256 (),
+						     -1);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvt_roundps_ph (__m256i __U, __mmask16 __W, __m512 __A,
+			    const int __I)
+{
+  return (__m256i) __builtin_ia32_vcvtps2ph512_mask ((__v16sf) __A,
+						     __I,
+						     (__v16hi) __U,
+						     (__mmask16) __W);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvtps_ph (__m256i __U, __mmask16 __W, __m512 __A, const int __I)
+{
+  return (__m256i) __builtin_ia32_vcvtps2ph512_mask ((__v16sf) __A,
+						     __I,
+						     (__v16hi) __U,
+						     (__mmask16) __W);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_cvt_roundps_ph (__mmask16 __W, __m512 __A, const int __I)
+{
+  return (__m256i) __builtin_ia32_vcvtps2ph512_mask ((__v16sf) __A,
+						     __I,
+						     (__v16hi)
+						     _mm256_setzero_si256 (),
+						     (__mmask16) __W);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_cvtps_ph (__mmask16 __W, __m512 __A, const int __I)
+{
+  return (__m256i) __builtin_ia32_vcvtps2ph512_mask ((__v16sf) __A,
+						     __I,
+						     (__v16hi)
+						     _mm256_setzero_si256 (),
+						     (__mmask16) __W);
+}
+#else
+#define _mm512_cvt_roundps_pd(A, B)		 \
+    (__m512d)__builtin_ia32_cvtps2pd512_mask(A, (__v8df)_mm512_undefined_pd(), -1, B)
+
+#define _mm512_mask_cvt_roundps_pd(W, U, A, B)   \
+    (__m512d)__builtin_ia32_cvtps2pd512_mask(A, (__v8df)(W), U, B)
+
+#define _mm512_maskz_cvt_roundps_pd(U, A, B)     \
+    (__m512d)__builtin_ia32_cvtps2pd512_mask(A, (__v8df)_mm512_setzero_pd(), U, B)
+
+#define _mm512_cvt_roundph_ps(A, B)		 \
+    (__m512)__builtin_ia32_vcvtph2ps512_mask((__v16hi)(A), (__v16sf)_mm512_undefined_ps(), -1, B)
+
+#define _mm512_mask_cvt_roundph_ps(W, U, A, B)   \
+    (__m512)__builtin_ia32_vcvtph2ps512_mask((__v16hi)(A), (__v16sf)(W), U, B)
+
+#define _mm512_maskz_cvt_roundph_ps(U, A, B)     \
+    (__m512)__builtin_ia32_vcvtph2ps512_mask((__v16hi)(A), (__v16sf)_mm512_setzero_ps(), U, B)
+
+#define _mm512_cvt_roundps_ph(A, I)						 \
+  ((__m256i) __builtin_ia32_vcvtps2ph512_mask ((__v16sf)(__m512) A, (int) (I),\
+    (__v16hi)_mm256_undefined_si256 (), -1))
+#define _mm512_cvtps_ph(A, I)						 \
+  ((__m256i) __builtin_ia32_vcvtps2ph512_mask ((__v16sf)(__m512) A, (int) (I),\
+    (__v16hi)_mm256_undefined_si256 (), -1))
+#define _mm512_mask_cvt_roundps_ph(U, W, A, I)				 \
+  ((__m256i) __builtin_ia32_vcvtps2ph512_mask ((__v16sf)(__m512) A, (int) (I),\
+    (__v16hi)(__m256i)(U), (__mmask16) (W)))
+#define _mm512_mask_cvtps_ph(U, W, A, I)				 \
+  ((__m256i) __builtin_ia32_vcvtps2ph512_mask ((__v16sf)(__m512) A, (int) (I),\
+    (__v16hi)(__m256i)(U), (__mmask16) (W)))
+#define _mm512_maskz_cvt_roundps_ph(W, A, I)					 \
+  ((__m256i) __builtin_ia32_vcvtps2ph512_mask ((__v16sf)(__m512) A, (int) (I),\
+    (__v16hi)_mm256_setzero_si256 (), (__mmask16) (W)))
+#define _mm512_maskz_cvtps_ph(W, A, I)					 \
+  ((__m256i) __builtin_ia32_vcvtps2ph512_mask ((__v16sf)(__m512) A, (int) (I),\
+    (__v16hi)_mm256_setzero_si256 (), (__mmask16) (W)))
+#endif
+
+#ifdef __OPTIMIZE__
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cvt_roundpd_ps (__m512d __A, const int __R)
+{
+  return (__m256) __builtin_ia32_cvtpd2ps512_mask ((__v8df) __A,
+						   (__v8sf)
+						   _mm256_undefined_ps (),
+						   (__mmask8) -1, __R);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvt_roundpd_ps (__m256 __W, __mmask8 __U, __m512d __A,
+			    const int __R)
+{
+  return (__m256) __builtin_ia32_cvtpd2ps512_mask ((__v8df) __A,
+						   (__v8sf) __W,
+						   (__mmask8) __U, __R);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_cvt_roundpd_ps (__mmask8 __U, __m512d __A, const int __R)
+{
+  return (__m256) __builtin_ia32_cvtpd2ps512_mask ((__v8df) __A,
+						   (__v8sf)
+						   _mm256_setzero_ps (),
+						   (__mmask8) __U, __R);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvt_roundsd_ss (__m128 __A, __m128d __B, const int __R)
+{
+  return (__m128) __builtin_ia32_cvtsd2ss_round ((__v4sf) __A,
+						 (__v2df) __B,
+						 __R);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvt_roundss_sd (__m128d __A, __m128 __B, const int __R)
+{
+  return (__m128d) __builtin_ia32_cvtss2sd_round ((__v2df) __A,
+						  (__v4sf) __B,
+						  __R);
+}
+#else
+#define _mm512_cvt_roundpd_ps(A, B)		 \
+    (__m256)__builtin_ia32_cvtpd2ps512_mask(A, (__v8sf)_mm256_undefined_ps(), -1, B)
+
+#define _mm512_mask_cvt_roundpd_ps(W, U, A, B)   \
+    (__m256)__builtin_ia32_cvtpd2ps512_mask(A, (__v8sf)(W), U, B)
+
+#define _mm512_maskz_cvt_roundpd_ps(U, A, B)     \
+    (__m256)__builtin_ia32_cvtpd2ps512_mask(A, (__v8sf)_mm256_setzero_ps(), U, B)
+
+#define _mm_cvt_roundsd_ss(A, B, C)		 \
+    (__m128)__builtin_ia32_cvtsd2ss_round(A, B, C)
+
+#define _mm_cvt_roundss_sd(A, B, C)		 \
+    (__m128d)__builtin_ia32_cvtss2sd_round(A, B, C)
+#endif
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_stream_si512 (__m512i * __P, __m512i __A)
+{
+  __builtin_ia32_movntdq512 ((__v8di *) __P, (__v8di) __A);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_stream_ps (float *__P, __m512 __A)
+{
+  __builtin_ia32_movntps512 (__P, (__v16sf) __A);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_stream_pd (double *__P, __m512d __A)
+{
+  __builtin_ia32_movntpd512 (__P, (__v8df) __A);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_stream_load_si512 (void *__P)
+{
+  return __builtin_ia32_movntdqa512 ((__v8di *)__P);
+}
+
+/* Constants for mantissa extraction */
+typedef enum
+{
+  _MM_MANT_NORM_1_2,		/* interval [1, 2)      */
+  _MM_MANT_NORM_p5_2,		/* interval [0.5, 2)    */
+  _MM_MANT_NORM_p5_1,		/* interval [0.5, 1)    */
+  _MM_MANT_NORM_p75_1p5		/* interval [0.75, 1.5) */
+} _MM_MANTISSA_NORM_ENUM;
+
+typedef enum
+{
+  _MM_MANT_SIGN_src,		/* sign = sign(SRC)     */
+  _MM_MANT_SIGN_zero,		/* sign = 0             */
+  _MM_MANT_SIGN_nan		/* DEST = NaN if sign(SRC) = 1 */
+} _MM_MANTISSA_SIGN_ENUM;
+
+#ifdef __OPTIMIZE__
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_getexp_round_ss (__m128 __A, __m128 __B, const int __R)
+{
+  return (__m128) __builtin_ia32_getexpss128_round ((__v4sf) __A,
+						    (__v4sf) __B,
+						    __R);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_getexp_round_sd (__m128d __A, __m128d __B, const int __R)
+{
+  return (__m128d) __builtin_ia32_getexpsd128_round ((__v2df) __A,
+						     (__v2df) __B,
+						     __R);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_getexp_round_ps (__m512 __A, const int __R)
+{
+  return (__m512) __builtin_ia32_getexpps512_mask ((__v16sf) __A,
+						   (__v16sf)
+						   _mm512_undefined_ps (),
+						   (__mmask16) -1, __R);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_getexp_round_ps (__m512 __W, __mmask16 __U, __m512 __A,
+			     const int __R)
+{
+  return (__m512) __builtin_ia32_getexpps512_mask ((__v16sf) __A,
+						   (__v16sf) __W,
+						   (__mmask16) __U, __R);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_getexp_round_ps (__mmask16 __U, __m512 __A, const int __R)
+{
+  return (__m512) __builtin_ia32_getexpps512_mask ((__v16sf) __A,
+						   (__v16sf)
+						   _mm512_setzero_ps (),
+						   (__mmask16) __U, __R);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_getexp_round_pd (__m512d __A, const int __R)
+{
+  return (__m512d) __builtin_ia32_getexppd512_mask ((__v8df) __A,
+						    (__v8df)
+						    _mm512_undefined_pd (),
+						    (__mmask8) -1, __R);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_getexp_round_pd (__m512d __W, __mmask8 __U, __m512d __A,
+			     const int __R)
+{
+  return (__m512d) __builtin_ia32_getexppd512_mask ((__v8df) __A,
+						    (__v8df) __W,
+						    (__mmask8) __U, __R);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_getexp_round_pd (__mmask8 __U, __m512d __A, const int __R)
+{
+  return (__m512d) __builtin_ia32_getexppd512_mask ((__v8df) __A,
+						    (__v8df)
+						    _mm512_setzero_pd (),
+						    (__mmask8) __U, __R);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_getmant_round_pd (__m512d __A, _MM_MANTISSA_NORM_ENUM __B,
+			 _MM_MANTISSA_SIGN_ENUM __C, const int __R)
+{
+  return (__m512d) __builtin_ia32_getmantpd512_mask ((__v8df) __A,
+						     (__C << 2) | __B,
+						     _mm512_undefined_pd (),
+						     (__mmask8) -1, __R);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_getmant_round_pd (__m512d __W, __mmask8 __U, __m512d __A,
+			      _MM_MANTISSA_NORM_ENUM __B,
+			      _MM_MANTISSA_SIGN_ENUM __C, const int __R)
+{
+  return (__m512d) __builtin_ia32_getmantpd512_mask ((__v8df) __A,
+						     (__C << 2) | __B,
+						     (__v8df) __W, __U,
+						     __R);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_getmant_round_pd (__mmask8 __U, __m512d __A,
+			       _MM_MANTISSA_NORM_ENUM __B,
+			       _MM_MANTISSA_SIGN_ENUM __C, const int __R)
+{
+  return (__m512d) __builtin_ia32_getmantpd512_mask ((__v8df) __A,
+						     (__C << 2) | __B,
+						     (__v8df)
+						     _mm512_setzero_pd (),
+						     __U, __R);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_getmant_round_ps (__m512 __A, _MM_MANTISSA_NORM_ENUM __B,
+			 _MM_MANTISSA_SIGN_ENUM __C, const int __R)
+{
+  return (__m512) __builtin_ia32_getmantps512_mask ((__v16sf) __A,
+						    (__C << 2) | __B,
+						    _mm512_undefined_ps (),
+						    (__mmask16) -1, __R);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_getmant_round_ps (__m512 __W, __mmask16 __U, __m512 __A,
+			      _MM_MANTISSA_NORM_ENUM __B,
+			      _MM_MANTISSA_SIGN_ENUM __C, const int __R)
+{
+  return (__m512) __builtin_ia32_getmantps512_mask ((__v16sf) __A,
+						    (__C << 2) | __B,
+						    (__v16sf) __W, __U,
+						    __R);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_getmant_round_ps (__mmask16 __U, __m512 __A,
+			       _MM_MANTISSA_NORM_ENUM __B,
+			       _MM_MANTISSA_SIGN_ENUM __C, const int __R)
+{
+  return (__m512) __builtin_ia32_getmantps512_mask ((__v16sf) __A,
+						    (__C << 2) | __B,
+						    (__v16sf)
+						    _mm512_setzero_ps (),
+						    __U, __R);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_getmant_round_sd (__m128d __A, __m128d __B,
+		      _MM_MANTISSA_NORM_ENUM __C,
+		      _MM_MANTISSA_SIGN_ENUM __D, const int __R)
+{
+  return (__m128d) __builtin_ia32_getmantsd_round ((__v2df) __A,
+						  (__v2df) __B,
+						  (__D << 2) | __C,
+						   __R);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_getmant_round_ss (__m128 __A, __m128 __B,
+		      _MM_MANTISSA_NORM_ENUM __C,
+		      _MM_MANTISSA_SIGN_ENUM __D, const int __R)
+{
+  return (__m128) __builtin_ia32_getmantss_round ((__v4sf) __A,
+						  (__v4sf) __B,
+						  (__D << 2) | __C,
+						  __R);
+}
+
+#else
+#define _mm512_getmant_round_pd(X, B, C, R)                                                  \
+  ((__m512d)__builtin_ia32_getmantpd512_mask ((__v8df)(__m512d)(X),                 \
+                                              (int)(((C)<<2) | (B)),                \
+                                              (__v8df)(__m512d)_mm512_undefined_pd(), \
+                                              (__mmask8)-1,\
+					      (R)))
+
+#define _mm512_mask_getmant_round_pd(W, U, X, B, C, R)                                       \
+  ((__m512d)__builtin_ia32_getmantpd512_mask ((__v8df)(__m512d)(X),                 \
+                                              (int)(((C)<<2) | (B)),                \
+                                              (__v8df)(__m512d)(W),                 \
+                                              (__mmask8)(U),\
+					      (R)))
+
+#define _mm512_maskz_getmant_round_pd(U, X, B, C, R)                                         \
+  ((__m512d)__builtin_ia32_getmantpd512_mask ((__v8df)(__m512d)(X),                 \
+                                              (int)(((C)<<2) | (B)),                \
+                                              (__v8df)(__m512d)_mm512_setzero_pd(), \
+                                              (__mmask8)(U),\
+					      (R)))
+#define _mm512_getmant_round_ps(X, B, C, R)                                                  \
+  ((__m512)__builtin_ia32_getmantps512_mask ((__v16sf)(__m512)(X),                  \
+                                             (int)(((C)<<2) | (B)),                 \
+                                             (__v16sf)(__m512)_mm512_undefined_ps(), \
+                                             (__mmask16)-1,\
+					     (R)))
+
+#define _mm512_mask_getmant_round_ps(W, U, X, B, C, R)                                       \
+  ((__m512)__builtin_ia32_getmantps512_mask ((__v16sf)(__m512)(X),                  \
+                                             (int)(((C)<<2) | (B)),                 \
+                                             (__v16sf)(__m512)(W),                  \
+                                             (__mmask16)(U),\
+					     (R)))
+
+#define _mm512_maskz_getmant_round_ps(U, X, B, C, R)                                         \
+  ((__m512)__builtin_ia32_getmantps512_mask ((__v16sf)(__m512)(X),                  \
+                                             (int)(((C)<<2) | (B)),                 \
+                                             (__v16sf)(__m512)_mm512_setzero_ps(),  \
+                                             (__mmask16)(U),\
+					     (R)))
+#define _mm_getmant_round_sd(X, Y, C, D, R)                                                  \
+  ((__m128d)__builtin_ia32_getmantsd_round ((__v2df)(__m128d)(X),                    \
+					    (__v2df)(__m128d)(Y),	\
+					    (int)(((D)<<2) | (C)),	\
+					    (R)))
+
+#define _mm_getmant_round_ss(X, Y, C, D, R)                                                  \
+  ((__m128)__builtin_ia32_getmantss_round ((__v4sf)(__m128)(X),                      \
+					   (__v4sf)(__m128)(Y),		\
+					   (int)(((D)<<2) | (C)),	\
+					   (R)))
+
+#define _mm_getexp_round_ss(A, B, R)						      \
+  ((__m128)__builtin_ia32_getexpss128_round((__v4sf)(__m128)(A), (__v4sf)(__m128)(B), R))
+
+#define _mm_getexp_round_sd(A, B, R)						       \
+  ((__m128d)__builtin_ia32_getexpsd128_round((__v2df)(__m128d)(A), (__v2df)(__m128d)(B), R))
+
+#define _mm512_getexp_round_ps(A, R)						\
+  ((__m512)__builtin_ia32_getexpps512_mask((__v16sf)(__m512)(A),		\
+  (__v16sf)_mm512_undefined_ps(), (__mmask16)-1, R))
+
+#define _mm512_mask_getexp_round_ps(W, U, A, R)					\
+  ((__m512)__builtin_ia32_getexpps512_mask((__v16sf)(__m512)(A),		\
+  (__v16sf)(__m512)(W), (__mmask16)(U), R))
+
+#define _mm512_maskz_getexp_round_ps(U, A, R)					\
+  ((__m512)__builtin_ia32_getexpps512_mask((__v16sf)(__m512)(A),		\
+  (__v16sf)_mm512_setzero_ps(), (__mmask16)(U), R))
+
+#define _mm512_getexp_round_pd(A, R)						\
+  ((__m512d)__builtin_ia32_getexppd512_mask((__v8df)(__m512d)(A),		\
+  (__v8df)_mm512_undefined_pd(), (__mmask8)-1, R))
+
+#define _mm512_mask_getexp_round_pd(W, U, A, R)					\
+  ((__m512d)__builtin_ia32_getexppd512_mask((__v8df)(__m512d)(A),		\
+  (__v8df)(__m512d)(W), (__mmask8)(U), R))
+
+#define _mm512_maskz_getexp_round_pd(U, A, R)					\
+  ((__m512d)__builtin_ia32_getexppd512_mask((__v8df)(__m512d)(A),		\
+  (__v8df)_mm512_setzero_pd(), (__mmask8)(U), R))
+#endif
+
+#ifdef __OPTIMIZE__
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_roundscale_round_ps (__m512 __A, const int __imm, const int __R)
+{
+  return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A, __imm,
+						  (__v16sf)
+						  _mm512_undefined_ps (),
+						  -1, __R);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_roundscale_round_ps (__m512 __A, __mmask16 __B, __m512 __C,
+				 const int __imm, const int __R)
+{
+  return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __C, __imm,
+						  (__v16sf) __A,
+						  (__mmask16) __B, __R);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_roundscale_round_ps (__mmask16 __A, __m512 __B,
+				  const int __imm, const int __R)
+{
+  return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __B,
+						  __imm,
+						  (__v16sf)
+						  _mm512_setzero_ps (),
+						  (__mmask16) __A, __R);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_roundscale_round_pd (__m512d __A, const int __imm, const int __R)
+{
+  return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A, __imm,
+						   (__v8df)
+						   _mm512_undefined_pd (),
+						   -1, __R);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_roundscale_round_pd (__m512d __A, __mmask8 __B,
+				 __m512d __C, const int __imm, const int __R)
+{
+  return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __C, __imm,
+						   (__v8df) __A,
+						   (__mmask8) __B, __R);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_roundscale_round_pd (__mmask8 __A, __m512d __B,
+				  const int __imm, const int __R)
+{
+  return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __B,
+						   __imm,
+						   (__v8df)
+						   _mm512_setzero_pd (),
+						   (__mmask8) __A, __R);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_roundscale_round_ss (__m128 __A, __m128 __B, const int __imm, const int __R)
+{
+  return (__m128) __builtin_ia32_rndscaless_round ((__v4sf) __A,
+						   (__v4sf) __B, __imm, __R);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_roundscale_round_sd (__m128d __A, __m128d __B, const int __imm,
+			 const int __R)
+{
+  return (__m128d) __builtin_ia32_rndscalesd_round ((__v2df) __A,
+						    (__v2df) __B, __imm, __R);
+}
+
+#else
+#define _mm512_roundscale_round_ps(A, B, R) \
+  ((__m512) __builtin_ia32_rndscaleps_mask ((__v16sf)(__m512)(A), (int)(B),\
+    (__v16sf)_mm512_undefined_ps(), (__mmask16)(-1), R))
+#define _mm512_mask_roundscale_round_ps(A, B, C, D, R)				\
+  ((__m512) __builtin_ia32_rndscaleps_mask ((__v16sf)(__m512)(C),	\
+					    (int)(D),			\
+					    (__v16sf)(__m512)(A),	\
+					    (__mmask16)(B), R))
+#define _mm512_maskz_roundscale_round_ps(A, B, C, R)				\
+  ((__m512) __builtin_ia32_rndscaleps_mask ((__v16sf)(__m512)(B),	\
+					    (int)(C),			\
+					    (__v16sf)_mm512_setzero_ps(),\
+					    (__mmask16)(A), R))
+#define _mm512_roundscale_round_pd(A, B, R) \
+  ((__m512d) __builtin_ia32_rndscalepd_mask ((__v8df)(__m512d)(A), (int)(B),\
+    (__v8df)_mm512_undefined_pd(), (__mmask8)(-1), R))
+#define _mm512_mask_roundscale_round_pd(A, B, C, D, R)				\
+  ((__m512d) __builtin_ia32_rndscalepd_mask ((__v8df)(__m512d)(C),	\
+					     (int)(D),			\
+					     (__v8df)(__m512d)(A),	\
+					     (__mmask8)(B), R))
+#define _mm512_maskz_roundscale_round_pd(A, B, C, R)				\
+  ((__m512d) __builtin_ia32_rndscalepd_mask ((__v8df)(__m512d)(B),	\
+					     (int)(C),			\
+					     (__v8df)_mm512_setzero_pd(),\
+					     (__mmask8)(A), R))
+#define _mm_roundscale_round_ss(A, B, C, R)					\
+  ((__m128) __builtin_ia32_rndscaless_round ((__v4sf)(__m128)(A),	\
+    (__v4sf)(__m128)(B), (int)(C), R))
+#define _mm_roundscale_round_sd(A, B, C, R)					\
+  ((__m128d) __builtin_ia32_rndscalesd_round ((__v2df)(__m128d)(A),	\
+    (__v2df)(__m128d)(B), (int)(C), R))
+#endif
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_floor_ps (__m512 __A)
+{
+  return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A,
+						  _MM_FROUND_FLOOR,
+						  (__v16sf) __A, -1,
+						  _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_floor_pd (__m512d __A)
+{
+  return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A,
+						   _MM_FROUND_FLOOR,
+						   (__v8df) __A, -1,
+						   _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_ceil_ps (__m512 __A)
+{
+  return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A,
+						  _MM_FROUND_CEIL,
+						  (__v16sf) __A, -1,
+						  _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_ceil_pd (__m512d __A)
+{
+  return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A,
+						   _MM_FROUND_CEIL,
+						   (__v8df) __A, -1,
+						   _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_floor_ps (__m512 __W, __mmask16 __U, __m512 __A)
+{
+  return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A,
+						  _MM_FROUND_FLOOR,
+						  (__v16sf) __W, __U,
+						  _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_floor_pd (__m512d __W, __mmask8 __U, __m512d __A)
+{
+  return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A,
+						   _MM_FROUND_FLOOR,
+						   (__v8df) __W, __U,
+						   _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_ceil_ps (__m512 __W, __mmask16 __U, __m512 __A)
+{
+  return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A,
+						  _MM_FROUND_CEIL,
+						  (__v16sf) __W, __U,
+						  _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_ceil_pd (__m512d __W, __mmask8 __U, __m512d __A)
+{
+  return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A,
+						   _MM_FROUND_CEIL,
+						   (__v8df) __W, __U,
+						   _MM_FROUND_CUR_DIRECTION);
+}
+
+#ifdef __OPTIMIZE__
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_alignr_epi32 (__m512i __A, __m512i __B, const int __imm)
+{
+  return (__m512i) __builtin_ia32_alignd512_mask ((__v16si) __A,
+						  (__v16si) __B, __imm,
+						  (__v16si)
+						  _mm512_undefined_si512 (),
+						  (__mmask16) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_alignr_epi32 (__m512i __W, __mmask16 __U, __m512i __A,
+			  __m512i __B, const int __imm)
+{
+  return (__m512i) __builtin_ia32_alignd512_mask ((__v16si) __A,
+						  (__v16si) __B, __imm,
+						  (__v16si) __W,
+						  (__mmask16) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_alignr_epi32 (__mmask16 __U, __m512i __A, __m512i __B,
+			   const int __imm)
+{
+  return (__m512i) __builtin_ia32_alignd512_mask ((__v16si) __A,
+						  (__v16si) __B, __imm,
+						  (__v16si)
+						  _mm512_setzero_si512 (),
+						  (__mmask16) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_alignr_epi64 (__m512i __A, __m512i __B, const int __imm)
+{
+  return (__m512i) __builtin_ia32_alignq512_mask ((__v8di) __A,
+						  (__v8di) __B, __imm,
+						  (__v8di)
+						  _mm512_undefined_si512 (),
+						  (__mmask8) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_alignr_epi64 (__m512i __W, __mmask8 __U, __m512i __A,
+			  __m512i __B, const int __imm)
+{
+  return (__m512i) __builtin_ia32_alignq512_mask ((__v8di) __A,
+						  (__v8di) __B, __imm,
+						  (__v8di) __W,
+						  (__mmask8) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_alignr_epi64 (__mmask8 __U, __m512i __A, __m512i __B,
+			   const int __imm)
+{
+  return (__m512i) __builtin_ia32_alignq512_mask ((__v8di) __A,
+						  (__v8di) __B, __imm,
+						  (__v8di)
+						  _mm512_setzero_si512 (),
+						  (__mmask8) __U);
+}
+#else
+#define _mm512_alignr_epi32(X, Y, C)                                        \
+    ((__m512i)__builtin_ia32_alignd512_mask ((__v16si)(__m512i)(X),         \
+        (__v16si)(__m512i)(Y), (int)(C), (__v16si)_mm512_undefined_si512 (),\
+        (__mmask16)-1))
+
+#define _mm512_mask_alignr_epi32(W, U, X, Y, C)                             \
+    ((__m512i)__builtin_ia32_alignd512_mask ((__v16si)(__m512i)(X),         \
+        (__v16si)(__m512i)(Y), (int)(C), (__v16si)(__m512i)(W),             \
+        (__mmask16)(U)))
+
+#define _mm512_maskz_alignr_epi32(U, X, Y, C)                               \
+    ((__m512i)__builtin_ia32_alignd512_mask ((__v16si)(__m512i)(X),         \
+        (__v16si)(__m512i)(Y), (int)(C), (__v16si)_mm512_setzero_si512 (),\
+        (__mmask16)(U)))
+
+#define _mm512_alignr_epi64(X, Y, C)                                        \
+    ((__m512i)__builtin_ia32_alignq512_mask ((__v8di)(__m512i)(X),          \
+        (__v8di)(__m512i)(Y), (int)(C), (__v8di)_mm512_undefined_si512 (),  \
+	(__mmask8)-1))
+
+#define _mm512_mask_alignr_epi64(W, U, X, Y, C)                             \
+    ((__m512i)__builtin_ia32_alignq512_mask ((__v8di)(__m512i)(X),          \
+        (__v8di)(__m512i)(Y), (int)(C), (__v8di)(__m512i)(W), (__mmask8)(U)))
+
+#define _mm512_maskz_alignr_epi64(U, X, Y, C)                               \
+    ((__m512i)__builtin_ia32_alignq512_mask ((__v8di)(__m512i)(X),          \
+        (__v8di)(__m512i)(Y), (int)(C), (__v8di)_mm512_setzero_si512 (),\
+        (__mmask8)(U)))
+#endif
+
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cmpeq_epi32_mask (__m512i __A, __m512i __B)
+{
+  return (__mmask16) __builtin_ia32_pcmpeqd512_mask ((__v16si) __A,
+						     (__v16si) __B,
+						     (__mmask16) -1);
+}
+
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cmpeq_epi32_mask (__mmask16 __U, __m512i __A, __m512i __B)
+{
+  return (__mmask16) __builtin_ia32_pcmpeqd512_mask ((__v16si) __A,
+						     (__v16si) __B, __U);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cmpeq_epi64_mask (__mmask8 __U, __m512i __A, __m512i __B)
+{
+  return (__mmask8) __builtin_ia32_pcmpeqq512_mask ((__v8di) __A,
+						    (__v8di) __B, __U);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cmpeq_epi64_mask (__m512i __A, __m512i __B)
+{
+  return (__mmask8) __builtin_ia32_pcmpeqq512_mask ((__v8di) __A,
+						    (__v8di) __B,
+						    (__mmask8) -1);
+}
+
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cmpgt_epi32_mask (__m512i __A, __m512i __B)
+{
+  return (__mmask16) __builtin_ia32_pcmpgtd512_mask ((__v16si) __A,
+						     (__v16si) __B,
+						     (__mmask16) -1);
+}
+
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cmpgt_epi32_mask (__mmask16 __U, __m512i __A, __m512i __B)
+{
+  return (__mmask16) __builtin_ia32_pcmpgtd512_mask ((__v16si) __A,
+						     (__v16si) __B, __U);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cmpgt_epi64_mask (__mmask8 __U, __m512i __A, __m512i __B)
+{
+  return (__mmask8) __builtin_ia32_pcmpgtq512_mask ((__v8di) __A,
+						    (__v8di) __B, __U);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cmpgt_epi64_mask (__m512i __A, __m512i __B)
+{
+  return (__mmask8) __builtin_ia32_pcmpgtq512_mask ((__v8di) __A,
+						    (__v8di) __B,
+						    (__mmask8) -1);
+}
+
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cmpge_epi32_mask (__m512i __X, __m512i __Y)
+{
+  return (__mmask16) __builtin_ia32_cmpd512_mask ((__v16si) __X,
+						    (__v16si) __Y, 5,
+						    (__mmask16) -1);
+}
+
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cmpge_epi32_mask (__mmask16 __M, __m512i __X, __m512i __Y)
+{
+  return (__mmask16) __builtin_ia32_cmpd512_mask ((__v16si) __X,
+						    (__v16si) __Y, 5,
+						    (__mmask16) __M);
+}
+
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cmpge_epu32_mask (__mmask16 __M, __m512i __X, __m512i __Y)
+{
+  return (__mmask16) __builtin_ia32_ucmpd512_mask ((__v16si) __X,
+						    (__v16si) __Y, 5,
+						    (__mmask16) __M);
+}
+
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cmpge_epu32_mask (__m512i __X, __m512i __Y)
+{
+  return (__mmask16) __builtin_ia32_ucmpd512_mask ((__v16si) __X,
+						    (__v16si) __Y, 5,
+						    (__mmask16) -1);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cmpge_epi64_mask (__mmask8 __M, __m512i __X, __m512i __Y)
+{
+  return (__mmask8) __builtin_ia32_cmpq512_mask ((__v8di) __X,
+						    (__v8di) __Y, 5,
+						    (__mmask8) __M);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cmpge_epi64_mask (__m512i __X, __m512i __Y)
+{
+  return (__mmask8) __builtin_ia32_cmpq512_mask ((__v8di) __X,
+						    (__v8di) __Y, 5,
+						    (__mmask8) -1);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cmpge_epu64_mask (__mmask8 __M, __m512i __X, __m512i __Y)
+{
+  return (__mmask8) __builtin_ia32_ucmpq512_mask ((__v8di) __X,
+						    (__v8di) __Y, 5,
+						    (__mmask8) __M);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cmpge_epu64_mask (__m512i __X, __m512i __Y)
+{
+  return (__mmask8) __builtin_ia32_ucmpq512_mask ((__v8di) __X,
+						    (__v8di) __Y, 5,
+						    (__mmask8) -1);
+}
+
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cmple_epi32_mask (__mmask16 __M, __m512i __X, __m512i __Y)
+{
+  return (__mmask16) __builtin_ia32_cmpd512_mask ((__v16si) __X,
+						    (__v16si) __Y, 2,
+						    (__mmask16) __M);
+}
+
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cmple_epi32_mask (__m512i __X, __m512i __Y)
+{
+  return (__mmask16) __builtin_ia32_cmpd512_mask ((__v16si) __X,
+						    (__v16si) __Y, 2,
+						    (__mmask16) -1);
+}
+
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cmple_epu32_mask (__mmask16 __M, __m512i __X, __m512i __Y)
+{
+  return (__mmask16) __builtin_ia32_ucmpd512_mask ((__v16si) __X,
+						    (__v16si) __Y, 2,
+						    (__mmask16) __M);
+}
+
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cmple_epu32_mask (__m512i __X, __m512i __Y)
+{
+  return (__mmask16) __builtin_ia32_ucmpd512_mask ((__v16si) __X,
+						    (__v16si) __Y, 2,
+						    (__mmask16) -1);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cmple_epi64_mask (__mmask8 __M, __m512i __X, __m512i __Y)
+{
+  return (__mmask8) __builtin_ia32_cmpq512_mask ((__v8di) __X,
+						    (__v8di) __Y, 2,
+						    (__mmask8) __M);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cmple_epi64_mask (__m512i __X, __m512i __Y)
+{
+  return (__mmask8) __builtin_ia32_cmpq512_mask ((__v8di) __X,
+						    (__v8di) __Y, 2,
+						    (__mmask8) -1);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cmple_epu64_mask (__mmask8 __M, __m512i __X, __m512i __Y)
+{
+  return (__mmask8) __builtin_ia32_ucmpq512_mask ((__v8di) __X,
+						    (__v8di) __Y, 2,
+						    (__mmask8) __M);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cmple_epu64_mask (__m512i __X, __m512i __Y)
+{
+  return (__mmask8) __builtin_ia32_ucmpq512_mask ((__v8di) __X,
+						    (__v8di) __Y, 2,
+						    (__mmask8) -1);
+}
+
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cmplt_epi32_mask (__mmask16 __M, __m512i __X, __m512i __Y)
+{
+  return (__mmask16) __builtin_ia32_cmpd512_mask ((__v16si) __X,
+						    (__v16si) __Y, 1,
+						    (__mmask16) __M);
+}
+
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cmplt_epi32_mask (__m512i __X, __m512i __Y)
+{
+  return (__mmask16) __builtin_ia32_cmpd512_mask ((__v16si) __X,
+						    (__v16si) __Y, 1,
+						    (__mmask16) -1);
+}
+
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cmplt_epu32_mask (__mmask16 __M, __m512i __X, __m512i __Y)
+{
+  return (__mmask16) __builtin_ia32_ucmpd512_mask ((__v16si) __X,
+						    (__v16si) __Y, 1,
+						    (__mmask16) __M);
+}
+
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cmplt_epu32_mask (__m512i __X, __m512i __Y)
+{
+  return (__mmask16) __builtin_ia32_ucmpd512_mask ((__v16si) __X,
+						    (__v16si) __Y, 1,
+						    (__mmask16) -1);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cmplt_epi64_mask (__mmask8 __M, __m512i __X, __m512i __Y)
+{
+  return (__mmask8) __builtin_ia32_cmpq512_mask ((__v8di) __X,
+						    (__v8di) __Y, 1,
+						    (__mmask8) __M);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cmplt_epi64_mask (__m512i __X, __m512i __Y)
+{
+  return (__mmask8) __builtin_ia32_cmpq512_mask ((__v8di) __X,
+						    (__v8di) __Y, 1,
+						    (__mmask8) -1);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cmplt_epu64_mask (__mmask8 __M, __m512i __X, __m512i __Y)
+{
+  return (__mmask8) __builtin_ia32_ucmpq512_mask ((__v8di) __X,
+						    (__v8di) __Y, 1,
+						    (__mmask8) __M);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cmplt_epu64_mask (__m512i __X, __m512i __Y)
+{
+  return (__mmask8) __builtin_ia32_ucmpq512_mask ((__v8di) __X,
+						    (__v8di) __Y, 1,
+						    (__mmask8) -1);
+}
+
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cmpneq_epi32_mask (__m512i __X, __m512i __Y)
+{
+  return (__mmask16) __builtin_ia32_cmpd512_mask ((__v16si) __X,
+						    (__v16si) __Y, 4,
+						    (__mmask16) -1);
+}
+
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cmpneq_epi32_mask (__mmask16 __M, __m512i __X, __m512i __Y)
+{
+  return (__mmask16) __builtin_ia32_cmpd512_mask ((__v16si) __X,
+						    (__v16si) __Y, 4,
+						    (__mmask16) __M);
+}
+
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cmpneq_epu32_mask (__mmask16 __M, __m512i __X, __m512i __Y)
+{
+  return (__mmask16) __builtin_ia32_ucmpd512_mask ((__v16si) __X,
+						    (__v16si) __Y, 4,
+						    (__mmask16) __M);
+}
+
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cmpneq_epu32_mask (__m512i __X, __m512i __Y)
+{
+  return (__mmask16) __builtin_ia32_ucmpd512_mask ((__v16si) __X,
+						    (__v16si) __Y, 4,
+						    (__mmask16) -1);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cmpneq_epi64_mask (__mmask16 __M, __m512i __X, __m512i __Y)
+{
+  return (__mmask8) __builtin_ia32_cmpq512_mask ((__v8di) __X,
+						    (__v8di) __Y, 4,
+						    (__mmask8) __M);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cmpneq_epi64_mask (__m512i __X, __m512i __Y)
+{
+  return (__mmask8) __builtin_ia32_cmpq512_mask ((__v8di) __X,
+						    (__v8di) __Y, 4,
+						    (__mmask8) -1);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cmpneq_epu64_mask (__mmask8 __M, __m512i __X, __m512i __Y)
+{
+  return (__mmask8) __builtin_ia32_ucmpq512_mask ((__v8di) __X,
+						    (__v8di) __Y, 4,
+						    (__mmask8) __M);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cmpneq_epu64_mask (__m512i __X, __m512i __Y)
+{
+  return (__mmask8) __builtin_ia32_ucmpq512_mask ((__v8di) __X,
+						    (__v8di) __Y, 4,
+						    (__mmask8) -1);
+}
+
+#define _MM_CMPINT_EQ	    0x0
+#define _MM_CMPINT_LT	    0x1
+#define _MM_CMPINT_LE	    0x2
+#define _MM_CMPINT_UNUSED   0x3
+#define _MM_CMPINT_NE	    0x4
+#define _MM_CMPINT_NLT	    0x5
+#define _MM_CMPINT_GE	    0x5
+#define _MM_CMPINT_NLE	    0x6
+#define _MM_CMPINT_GT	    0x6
+
+#ifdef __OPTIMIZE__
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cmp_epi64_mask (__m512i __X, __m512i __Y, const int __P)
+{
+  return (__mmask8) __builtin_ia32_cmpq512_mask ((__v8di) __X,
+						 (__v8di) __Y, __P,
+						 (__mmask8) -1);
+}
+
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cmp_epi32_mask (__m512i __X, __m512i __Y, const int __P)
+{
+  return (__mmask16) __builtin_ia32_cmpd512_mask ((__v16si) __X,
+						  (__v16si) __Y, __P,
+						  (__mmask16) -1);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cmp_epu64_mask (__m512i __X, __m512i __Y, const int __P)
+{
+  return (__mmask8) __builtin_ia32_ucmpq512_mask ((__v8di) __X,
+						  (__v8di) __Y, __P,
+						  (__mmask8) -1);
+}
+
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cmp_epu32_mask (__m512i __X, __m512i __Y, const int __P)
+{
+  return (__mmask16) __builtin_ia32_ucmpd512_mask ((__v16si) __X,
+						   (__v16si) __Y, __P,
+						   (__mmask16) -1);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cmp_round_pd_mask (__m512d __X, __m512d __Y, const int __P,
+			  const int __R)
+{
+  return (__mmask8) __builtin_ia32_cmppd512_mask ((__v8df) __X,
+						  (__v8df) __Y, __P,
+						  (__mmask8) -1, __R);
+}
+
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cmp_round_ps_mask (__m512 __X, __m512 __Y, const int __P, const int __R)
+{
+  return (__mmask16) __builtin_ia32_cmpps512_mask ((__v16sf) __X,
+						   (__v16sf) __Y, __P,
+						   (__mmask16) -1, __R);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cmp_epi64_mask (__mmask8 __U, __m512i __X, __m512i __Y,
+			    const int __P)
+{
+  return (__mmask8) __builtin_ia32_cmpq512_mask ((__v8di) __X,
+						 (__v8di) __Y, __P,
+						 (__mmask8) __U);
+}
+
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cmp_epi32_mask (__mmask16 __U, __m512i __X, __m512i __Y,
+			    const int __P)
+{
+  return (__mmask16) __builtin_ia32_cmpd512_mask ((__v16si) __X,
+						  (__v16si) __Y, __P,
+						  (__mmask16) __U);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cmp_epu64_mask (__mmask8 __U, __m512i __X, __m512i __Y,
+			    const int __P)
+{
+  return (__mmask8) __builtin_ia32_ucmpq512_mask ((__v8di) __X,
+						  (__v8di) __Y, __P,
+						  (__mmask8) __U);
+}
+
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cmp_epu32_mask (__mmask16 __U, __m512i __X, __m512i __Y,
+			    const int __P)
+{
+  return (__mmask16) __builtin_ia32_ucmpd512_mask ((__v16si) __X,
+						   (__v16si) __Y, __P,
+						   (__mmask16) __U);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cmp_round_pd_mask (__mmask8 __U, __m512d __X, __m512d __Y,
+			       const int __P, const int __R)
+{
+  return (__mmask8) __builtin_ia32_cmppd512_mask ((__v8df) __X,
+						  (__v8df) __Y, __P,
+						  (__mmask8) __U, __R);
+}
+
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cmp_round_ps_mask (__mmask16 __U, __m512 __X, __m512 __Y,
+			       const int __P, const int __R)
+{
+  return (__mmask16) __builtin_ia32_cmpps512_mask ((__v16sf) __X,
+						   (__v16sf) __Y, __P,
+						   (__mmask16) __U, __R);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmp_round_sd_mask (__m128d __X, __m128d __Y, const int __P, const int __R)
+{
+  return (__mmask8) __builtin_ia32_cmpsd_mask ((__v2df) __X,
+					       (__v2df) __Y, __P,
+					       (__mmask8) -1, __R);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cmp_round_sd_mask (__mmask8 __M, __m128d __X, __m128d __Y,
+			    const int __P, const int __R)
+{
+  return (__mmask8) __builtin_ia32_cmpsd_mask ((__v2df) __X,
+					       (__v2df) __Y, __P,
+					       (__mmask8) __M, __R);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmp_round_ss_mask (__m128 __X, __m128 __Y, const int __P, const int __R)
+{
+  return (__mmask8) __builtin_ia32_cmpss_mask ((__v4sf) __X,
+					       (__v4sf) __Y, __P,
+					       (__mmask8) -1, __R);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cmp_round_ss_mask (__mmask8 __M, __m128 __X, __m128 __Y,
+			    const int __P, const int __R)
+{
+  return (__mmask8) __builtin_ia32_cmpss_mask ((__v4sf) __X,
+					       (__v4sf) __Y, __P,
+					       (__mmask8) __M, __R);
+}
+
+#else
+#define _mm512_cmp_epi64_mask(X, Y, P)					\
+  ((__mmask8) __builtin_ia32_cmpq512_mask ((__v8di)(__m512i)(X),	\
+					   (__v8di)(__m512i)(Y), (int)(P),\
+					   (__mmask8)-1))
+
+#define _mm512_cmp_epi32_mask(X, Y, P)					\
+  ((__mmask8) __builtin_ia32_cmpd512_mask ((__v16si)(__m512i)(X),	\
+					   (__v16si)(__m512i)(Y), (int)(P),\
+					   (__mmask16)-1))
+
+#define _mm512_cmp_epu64_mask(X, Y, P)					\
+  ((__mmask8) __builtin_ia32_ucmpq512_mask ((__v8di)(__m512i)(X),	\
+					    (__v8di)(__m512i)(Y), (int)(P),\
+					    (__mmask8)-1))
+
+#define _mm512_cmp_epu32_mask(X, Y, P)					\
+  ((__mmask8) __builtin_ia32_ucmpd512_mask ((__v16si)(__m512i)(X),	\
+					    (__v16si)(__m512i)(Y), (int)(P),\
+					    (__mmask16)-1))
+
+#define _mm512_cmp_round_pd_mask(X, Y, P, R)					\
+  ((__mmask8) __builtin_ia32_cmppd512_mask ((__v8df)(__m512d)(X),	\
+					    (__v8df)(__m512d)(Y), (int)(P),\
+					    (__mmask8)-1, R))
+
+#define _mm512_cmp_round_ps_mask(X, Y, P, R)					\
+  ((__mmask16) __builtin_ia32_cmpps512_mask ((__v16sf)(__m512)(X),	\
+					     (__v16sf)(__m512)(Y), (int)(P),\
+					     (__mmask16)-1, R))
+
+#define _mm512_mask_cmp_epi64_mask(M, X, Y, P)					\
+  ((__mmask8) __builtin_ia32_cmpq512_mask ((__v8di)(__m512i)(X),	\
+					   (__v8di)(__m512i)(Y), (int)(P),\
+					   (__mmask8)M))
+
+#define _mm512_mask_cmp_epi32_mask(M, X, Y, P)					\
+  ((__mmask8) __builtin_ia32_cmpd512_mask ((__v16si)(__m512i)(X),	\
+					   (__v16si)(__m512i)(Y), (int)(P),\
+					   (__mmask16)M))
+
+#define _mm512_mask_cmp_epu64_mask(M, X, Y, P)					\
+  ((__mmask8) __builtin_ia32_ucmpq512_mask ((__v8di)(__m512i)(X),	\
+					    (__v8di)(__m512i)(Y), (int)(P),\
+					    (__mmask8)M))
+
+#define _mm512_mask_cmp_epu32_mask(M, X, Y, P)					\
+  ((__mmask8) __builtin_ia32_ucmpd512_mask ((__v16si)(__m512i)(X),	\
+					    (__v16si)(__m512i)(Y), (int)(P),\
+					    (__mmask16)M))
+
+#define _mm512_mask_cmp_round_pd_mask(M, X, Y, P, R)					\
+  ((__mmask8) __builtin_ia32_cmppd512_mask ((__v8df)(__m512d)(X),	\
+					    (__v8df)(__m512d)(Y), (int)(P),\
+					    (__mmask8)M, R))
+
+#define _mm512_mask_cmp_round_ps_mask(M, X, Y, P, R)					\
+  ((__mmask16) __builtin_ia32_cmpps512_mask ((__v16sf)(__m512)(X),	\
+					     (__v16sf)(__m512)(Y), (int)(P),\
+					     (__mmask16)M, R))
+
+#define _mm_cmp_round_sd_mask(X, Y, P, R)					\
+  ((__mmask8) __builtin_ia32_cmpsd_mask ((__v2df)(__m128d)(X),		\
+					 (__v2df)(__m128d)(Y), (int)(P),\
+					 (__mmask8)-1, R))
+
+#define _mm_mask_cmp_round_sd_mask(M, X, Y, P, R)					\
+  ((__mmask8) __builtin_ia32_cmpsd_mask ((__v2df)(__m128d)(X),		\
+					 (__v2df)(__m128d)(Y), (int)(P),\
+					 (M), R))
+
+#define _mm_cmp_round_ss_mask(X, Y, P, R)					\
+  ((__mmask8) __builtin_ia32_cmpss_mask ((__v4sf)(__m128)(X),		\
+					 (__v4sf)(__m128)(Y), (int)(P), \
+					 (__mmask8)-1, R))
+
+#define _mm_mask_cmp_round_ss_mask(M, X, Y, P, R)					\
+  ((__mmask8) __builtin_ia32_cmpss_mask ((__v4sf)(__m128)(X),		\
+					 (__v4sf)(__m128)(Y), (int)(P), \
+					 (M), R))
+#endif
+
+#ifdef __OPTIMIZE__
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_i32gather_ps (__m512i __index, float const *__addr, int __scale)
+{
+  __m512 v1_old = _mm512_undefined_ps ();
+  __mmask16 mask = 0xFFFF;
+
+  return (__m512) __builtin_ia32_gathersiv16sf ((__v16sf) v1_old,
+						__addr,
+						(__v16si) __index,
+						mask, __scale);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_i32gather_ps (__m512 v1_old, __mmask16 __mask,
+			  __m512i __index, float const *__addr, int __scale)
+{
+  return (__m512) __builtin_ia32_gathersiv16sf ((__v16sf) v1_old,
+						__addr,
+						(__v16si) __index,
+						__mask, __scale);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_i32gather_pd (__m256i __index, double const *__addr, int __scale)
+{
+  __m512d v1_old = _mm512_undefined_pd ();
+  __mmask8 mask = 0xFF;
+
+  return (__m512d) __builtin_ia32_gathersiv8df ((__v8df) v1_old,
+						__addr,
+						(__v8si) __index, mask,
+						__scale);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_i32gather_pd (__m512d __v1_old, __mmask8 __mask,
+			  __m256i __index, double const *__addr, int __scale)
+{
+  return (__m512d) __builtin_ia32_gathersiv8df ((__v8df) __v1_old,
+						__addr,
+						(__v8si) __index,
+						__mask, __scale);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_i64gather_ps (__m512i __index, float const *__addr, int __scale)
+{
+  __m256 v1_old = _mm256_undefined_ps ();
+  __mmask8 mask = 0xFF;
+
+  return (__m256) __builtin_ia32_gatherdiv16sf ((__v8sf) v1_old,
+						__addr,
+						(__v8di) __index, mask,
+						__scale);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_i64gather_ps (__m256 __v1_old, __mmask8 __mask,
+			  __m512i __index, float const *__addr, int __scale)
+{
+  return (__m256) __builtin_ia32_gatherdiv16sf ((__v8sf) __v1_old,
+						__addr,
+						(__v8di) __index,
+						__mask, __scale);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_i64gather_pd (__m512i __index, double const *__addr, int __scale)
+{
+  __m512d v1_old = _mm512_undefined_pd ();
+  __mmask8 mask = 0xFF;
+
+  return (__m512d) __builtin_ia32_gatherdiv8df ((__v8df) v1_old,
+						__addr,
+						(__v8di) __index, mask,
+						__scale);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_i64gather_pd (__m512d __v1_old, __mmask8 __mask,
+			  __m512i __index, double const *__addr, int __scale)
+{
+  return (__m512d) __builtin_ia32_gatherdiv8df ((__v8df) __v1_old,
+						__addr,
+						(__v8di) __index,
+						__mask, __scale);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_i32gather_epi32 (__m512i __index, int const *__addr, int __scale)
+{
+  __m512i v1_old = _mm512_undefined_si512 ();
+  __mmask16 mask = 0xFFFF;
+
+  return (__m512i) __builtin_ia32_gathersiv16si ((__v16si) v1_old,
+						 __addr,
+						 (__v16si) __index,
+						 mask, __scale);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_i32gather_epi32 (__m512i __v1_old, __mmask16 __mask,
+			     __m512i __index, int const *__addr, int __scale)
+{
+  return (__m512i) __builtin_ia32_gathersiv16si ((__v16si) __v1_old,
+						 __addr,
+						 (__v16si) __index,
+						 __mask, __scale);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_i32gather_epi64 (__m256i __index, long long const *__addr, int __scale)
+{
+  __m512i v1_old = _mm512_undefined_si512 ();
+  __mmask8 mask = 0xFF;
+
+  return (__m512i) __builtin_ia32_gathersiv8di ((__v8di) v1_old,
+						__addr,
+						(__v8si) __index, mask,
+						__scale);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_i32gather_epi64 (__m512i __v1_old, __mmask8 __mask,
+			     __m256i __index, long long const *__addr,
+			     int __scale)
+{
+  return (__m512i) __builtin_ia32_gathersiv8di ((__v8di) __v1_old,
+						__addr,
+						(__v8si) __index,
+						__mask, __scale);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_i64gather_epi32 (__m512i __index, int const *__addr, int __scale)
+{
+  __m256i v1_old = _mm256_undefined_si256 ();
+  __mmask8 mask = 0xFF;
+
+  return (__m256i) __builtin_ia32_gatherdiv16si ((__v8si) v1_old,
+						 __addr,
+						 (__v8di) __index,
+						 mask, __scale);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_i64gather_epi32 (__m256i __v1_old, __mmask8 __mask,
+			     __m512i __index, int const *__addr, int __scale)
+{
+  return (__m256i) __builtin_ia32_gatherdiv16si ((__v8si) __v1_old,
+						 __addr,
+						 (__v8di) __index,
+						 __mask, __scale);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_i64gather_epi64 (__m512i __index, long long const *__addr, int __scale)
+{
+  __m512i v1_old = _mm512_undefined_si512 ();
+  __mmask8 mask = 0xFF;
+
+  return (__m512i) __builtin_ia32_gatherdiv8di ((__v8di) v1_old,
+						__addr,
+						(__v8di) __index, mask,
+						__scale);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_i64gather_epi64 (__m512i __v1_old, __mmask8 __mask,
+			     __m512i __index, long long const *__addr,
+			     int __scale)
+{
+  return (__m512i) __builtin_ia32_gatherdiv8di ((__v8di) __v1_old,
+						__addr,
+						(__v8di) __index,
+						__mask, __scale);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_i32scatter_ps (float *__addr, __m512i __index, __m512 __v1, int __scale)
+{
+  __builtin_ia32_scattersiv16sf (__addr, (__mmask16) 0xFFFF,
+				 (__v16si) __index, (__v16sf) __v1, __scale);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_i32scatter_ps (float *__addr, __mmask16 __mask,
+			   __m512i __index, __m512 __v1, int __scale)
+{
+  __builtin_ia32_scattersiv16sf (__addr, __mask, (__v16si) __index,
+				 (__v16sf) __v1, __scale);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_i32scatter_pd (double *__addr, __m256i __index, __m512d __v1,
+		      int __scale)
+{
+  __builtin_ia32_scattersiv8df (__addr, (__mmask8) 0xFF,
+				(__v8si) __index, (__v8df) __v1, __scale);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_i32scatter_pd (double *__addr, __mmask8 __mask,
+			   __m256i __index, __m512d __v1, int __scale)
+{
+  __builtin_ia32_scattersiv8df (__addr, __mask, (__v8si) __index,
+				(__v8df) __v1, __scale);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_i64scatter_ps (float *__addr, __m512i __index, __m256 __v1, int __scale)
+{
+  __builtin_ia32_scatterdiv16sf (__addr, (__mmask8) 0xFF,
+				 (__v8di) __index, (__v8sf) __v1, __scale);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_i64scatter_ps (float *__addr, __mmask8 __mask,
+			   __m512i __index, __m256 __v1, int __scale)
+{
+  __builtin_ia32_scatterdiv16sf (__addr, __mask, (__v8di) __index,
+				 (__v8sf) __v1, __scale);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_i64scatter_pd (double *__addr, __m512i __index, __m512d __v1,
+		      int __scale)
+{
+  __builtin_ia32_scatterdiv8df (__addr, (__mmask8) 0xFF,
+				(__v8di) __index, (__v8df) __v1, __scale);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_i64scatter_pd (double *__addr, __mmask8 __mask,
+			   __m512i __index, __m512d __v1, int __scale)
+{
+  __builtin_ia32_scatterdiv8df (__addr, __mask, (__v8di) __index,
+				(__v8df) __v1, __scale);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_i32scatter_epi32 (int *__addr, __m512i __index,
+			 __m512i __v1, int __scale)
+{
+  __builtin_ia32_scattersiv16si (__addr, (__mmask16) 0xFFFF,
+				 (__v16si) __index, (__v16si) __v1, __scale);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_i32scatter_epi32 (int *__addr, __mmask16 __mask,
+			      __m512i __index, __m512i __v1, int __scale)
+{
+  __builtin_ia32_scattersiv16si (__addr, __mask, (__v16si) __index,
+				 (__v16si) __v1, __scale);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_i32scatter_epi64 (long long *__addr, __m256i __index,
+			 __m512i __v1, int __scale)
+{
+  __builtin_ia32_scattersiv8di (__addr, (__mmask8) 0xFF,
+				(__v8si) __index, (__v8di) __v1, __scale);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_i32scatter_epi64 (long long *__addr, __mmask8 __mask,
+			      __m256i __index, __m512i __v1, int __scale)
+{
+  __builtin_ia32_scattersiv8di (__addr, __mask, (__v8si) __index,
+				(__v8di) __v1, __scale);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_i64scatter_epi32 (int *__addr, __m512i __index,
+			 __m256i __v1, int __scale)
+{
+  __builtin_ia32_scatterdiv16si (__addr, (__mmask8) 0xFF,
+				 (__v8di) __index, (__v8si) __v1, __scale);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_i64scatter_epi32 (int *__addr, __mmask8 __mask,
+			      __m512i __index, __m256i __v1, int __scale)
+{
+  __builtin_ia32_scatterdiv16si (__addr, __mask, (__v8di) __index,
+				 (__v8si) __v1, __scale);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_i64scatter_epi64 (long long *__addr, __m512i __index,
+			 __m512i __v1, int __scale)
+{
+  __builtin_ia32_scatterdiv8di (__addr, (__mmask8) 0xFF,
+				(__v8di) __index, (__v8di) __v1, __scale);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_i64scatter_epi64 (long long *__addr, __mmask8 __mask,
+			      __m512i __index, __m512i __v1, int __scale)
+{
+  __builtin_ia32_scatterdiv8di (__addr, __mask, (__v8di) __index,
+				(__v8di) __v1, __scale);
+}
+#else
+#define _mm512_i32gather_ps(INDEX, ADDR, SCALE)				\
+  (__m512) __builtin_ia32_gathersiv16sf ((__v16sf)_mm512_undefined_ps(),\
+					 (float const *)ADDR,		\
+					 (__v16si)(__m512i)INDEX,	\
+					 (__mmask16)0xFFFF, (int)SCALE)
+
+#define _mm512_mask_i32gather_ps(V1OLD, MASK, INDEX, ADDR, SCALE)	\
+  (__m512) __builtin_ia32_gathersiv16sf ((__v16sf)(__m512)V1OLD,	\
+					 (float const *)ADDR,		\
+					 (__v16si)(__m512i)INDEX,	\
+					 (__mmask16)MASK, (int)SCALE)
+
+#define _mm512_i32gather_pd(INDEX, ADDR, SCALE)				\
+  (__m512d) __builtin_ia32_gathersiv8df ((__v8df)_mm512_undefined_pd(),	\
+					 (double const *)ADDR,		\
+					 (__v8si)(__m256i)INDEX,	\
+					 (__mmask8)0xFF, (int)SCALE)
+
+#define _mm512_mask_i32gather_pd(V1OLD, MASK, INDEX, ADDR, SCALE)	\
+  (__m512d) __builtin_ia32_gathersiv8df ((__v8df)(__m512d)V1OLD,	\
+					 (double const *)ADDR,		\
+					 (__v8si)(__m256i)INDEX,	\
+					 (__mmask8)MASK, (int)SCALE)
+
+#define _mm512_i64gather_ps(INDEX, ADDR, SCALE)				\
+  (__m256) __builtin_ia32_gatherdiv16sf ((__v8sf)_mm256_undefined_ps(),	\
+					 (float const *)ADDR,		\
+					 (__v8di)(__m512i)INDEX,	\
+					 (__mmask8)0xFF, (int)SCALE)
+
+#define _mm512_mask_i64gather_ps(V1OLD, MASK, INDEX, ADDR, SCALE)	\
+  (__m256) __builtin_ia32_gatherdiv16sf ((__v8sf)(__m256)V1OLD,		\
+					 (float const *)ADDR,		\
+					 (__v8di)(__m512i)INDEX,	\
+					 (__mmask8)MASK, (int)SCALE)
+
+#define _mm512_i64gather_pd(INDEX, ADDR, SCALE)				\
+  (__m512d) __builtin_ia32_gatherdiv8df ((__v8df)_mm512_undefined_pd(),	\
+					 (double const *)ADDR,		\
+					 (__v8di)(__m512i)INDEX,	\
+					 (__mmask8)0xFF, (int)SCALE)
+
+#define _mm512_mask_i64gather_pd(V1OLD, MASK, INDEX, ADDR, SCALE)	\
+  (__m512d) __builtin_ia32_gatherdiv8df ((__v8df)(__m512d)V1OLD,	\
+					 (double const *)ADDR,		\
+					 (__v8di)(__m512i)INDEX,	\
+					 (__mmask8)MASK, (int)SCALE)
+
+#define _mm512_i32gather_epi32(INDEX, ADDR, SCALE)			\
+  (__m512i) __builtin_ia32_gathersiv16si ((__v16si)_mm512_undefined_si512 (),	\
+					  (int const *)ADDR,		\
+					  (__v16si)(__m512i)INDEX,	\
+					  (__mmask16)0xFFFF, (int)SCALE)
+
+#define _mm512_mask_i32gather_epi32(V1OLD, MASK, INDEX, ADDR, SCALE)	\
+  (__m512i) __builtin_ia32_gathersiv16si ((__v16si)(__m512i)V1OLD,	\
+					  (int const *)ADDR,		\
+					  (__v16si)(__m512i)INDEX,	\
+					  (__mmask16)MASK, (int)SCALE)
+
+#define _mm512_i32gather_epi64(INDEX, ADDR, SCALE)			\
+  (__m512i) __builtin_ia32_gathersiv8di ((__v8di)_mm512_undefined_si512 (),	\
+					 (long long const *)ADDR,	\
+					 (__v8si)(__m256i)INDEX,	\
+					 (__mmask8)0xFF, (int)SCALE)
+
+#define _mm512_mask_i32gather_epi64(V1OLD, MASK, INDEX, ADDR, SCALE)	\
+  (__m512i) __builtin_ia32_gathersiv8di ((__v8di)(__m512i)V1OLD,	\
+					 (long long const *)ADDR,	\
+					 (__v8si)(__m256i)INDEX,	\
+					 (__mmask8)MASK, (int)SCALE)
+
+#define _mm512_i64gather_epi32(INDEX, ADDR, SCALE)			  \
+  (__m256i) __builtin_ia32_gatherdiv16si ((__v8si)_mm256_undefined_si256(), \
+					  (int const *)ADDR,		  \
+					  (__v8di)(__m512i)INDEX,	  \
+					  (__mmask8)0xFF, (int)SCALE)
+
+#define _mm512_mask_i64gather_epi32(V1OLD, MASK, INDEX, ADDR, SCALE)	\
+  (__m256i) __builtin_ia32_gatherdiv16si ((__v8si)(__m256i)V1OLD,	\
+					  (int const *)ADDR,		\
+					  (__v8di)(__m512i)INDEX,	\
+					  (__mmask8)MASK, (int)SCALE)
+
+#define _mm512_i64gather_epi64(INDEX, ADDR, SCALE)			\
+  (__m512i) __builtin_ia32_gatherdiv8di ((__v8di)_mm512_undefined_si512 (),	\
+					 (long long const *)ADDR,	\
+					 (__v8di)(__m512i)INDEX,	\
+					 (__mmask8)0xFF, (int)SCALE)
+
+#define _mm512_mask_i64gather_epi64(V1OLD, MASK, INDEX, ADDR, SCALE)	\
+  (__m512i) __builtin_ia32_gatherdiv8di ((__v8di)(__m512i)V1OLD,	\
+					 (long long const *)ADDR,	\
+					 (__v8di)(__m512i)INDEX,	\
+					 (__mmask8)MASK, (int)SCALE)
+
+#define _mm512_i32scatter_ps(ADDR, INDEX, V1, SCALE)			\
+  __builtin_ia32_scattersiv16sf ((float *)ADDR, (__mmask16)0xFFFF,	\
+				 (__v16si)(__m512i)INDEX,		\
+				 (__v16sf)(__m512)V1, (int)SCALE)
+
+#define _mm512_mask_i32scatter_ps(ADDR, MASK, INDEX, V1, SCALE)		\
+  __builtin_ia32_scattersiv16sf ((float *)ADDR, (__mmask16)MASK,		\
+				 (__v16si)(__m512i)INDEX,		\
+				 (__v16sf)(__m512)V1, (int)SCALE)
+
+#define _mm512_i32scatter_pd(ADDR, INDEX, V1, SCALE)			\
+  __builtin_ia32_scattersiv8df ((double *)ADDR, (__mmask8)0xFF,		\
+				(__v8si)(__m256i)INDEX,			\
+				(__v8df)(__m512d)V1, (int)SCALE)
+
+#define _mm512_mask_i32scatter_pd(ADDR, MASK, INDEX, V1, SCALE)		\
+  __builtin_ia32_scattersiv8df ((double *)ADDR, (__mmask8)MASK,		\
+				(__v8si)(__m256i)INDEX,			\
+				(__v8df)(__m512d)V1, (int)SCALE)
+
+#define _mm512_i64scatter_ps(ADDR, INDEX, V1, SCALE)			\
+  __builtin_ia32_scatterdiv16sf ((float *)ADDR, (__mmask8)0xFF,		\
+				 (__v8di)(__m512i)INDEX,		\
+				 (__v8sf)(__m256)V1, (int)SCALE)
+
+#define _mm512_mask_i64scatter_ps(ADDR, MASK, INDEX, V1, SCALE)		\
+  __builtin_ia32_scatterdiv16sf ((float *)ADDR, (__mmask16)MASK,		\
+				 (__v8di)(__m512i)INDEX,		\
+				 (__v8sf)(__m256)V1, (int)SCALE)
+
+#define _mm512_i64scatter_pd(ADDR, INDEX, V1, SCALE)			\
+  __builtin_ia32_scatterdiv8df ((double *)ADDR, (__mmask8)0xFF,		\
+				(__v8di)(__m512i)INDEX,			\
+				(__v8df)(__m512d)V1, (int)SCALE)
+
+#define _mm512_mask_i64scatter_pd(ADDR, MASK, INDEX, V1, SCALE)		\
+  __builtin_ia32_scatterdiv8df ((double *)ADDR, (__mmask8)MASK,		\
+				(__v8di)(__m512i)INDEX,			\
+				(__v8df)(__m512d)V1, (int)SCALE)
+
+#define _mm512_i32scatter_epi32(ADDR, INDEX, V1, SCALE)			\
+  __builtin_ia32_scattersiv16si ((int *)ADDR, (__mmask16)0xFFFF,	\
+				 (__v16si)(__m512i)INDEX,		\
+				 (__v16si)(__m512i)V1, (int)SCALE)
+
+#define _mm512_mask_i32scatter_epi32(ADDR, MASK, INDEX, V1, SCALE)	\
+  __builtin_ia32_scattersiv16si ((int *)ADDR, (__mmask16)MASK,		\
+				 (__v16si)(__m512i)INDEX,		\
+				 (__v16si)(__m512i)V1, (int)SCALE)
+
+#define _mm512_i32scatter_epi64(ADDR, INDEX, V1, SCALE)			\
+  __builtin_ia32_scattersiv8di ((long long *)ADDR, (__mmask8)0xFF,	\
+				(__v8si)(__m256i)INDEX,			\
+				(__v8di)(__m512i)V1, (int)SCALE)
+
+#define _mm512_mask_i32scatter_epi64(ADDR, MASK, INDEX, V1, SCALE)	\
+  __builtin_ia32_scattersiv8di ((long long *)ADDR, (__mmask8)MASK,	\
+				(__v8si)(__m256i)INDEX,			\
+				(__v8di)(__m512i)V1, (int)SCALE)
+
+#define _mm512_i64scatter_epi32(ADDR, INDEX, V1, SCALE)			\
+  __builtin_ia32_scatterdiv16si ((int *)ADDR, (__mmask8)0xFF,		\
+				 (__v8di)(__m512i)INDEX,		\
+				 (__v8si)(__m256i)V1, (int)SCALE)
+
+#define _mm512_mask_i64scatter_epi32(ADDR, MASK, INDEX, V1, SCALE)	\
+  __builtin_ia32_scatterdiv16si ((int *)ADDR, (__mmask8)MASK,		\
+				 (__v8di)(__m512i)INDEX,		\
+				 (__v8si)(__m256i)V1, (int)SCALE)
+
+#define _mm512_i64scatter_epi64(ADDR, INDEX, V1, SCALE)			\
+  __builtin_ia32_scatterdiv8di ((long long *)ADDR, (__mmask8)0xFF,	\
+				(__v8di)(__m512i)INDEX,			\
+				(__v8di)(__m512i)V1, (int)SCALE)
+
+#define _mm512_mask_i64scatter_epi64(ADDR, MASK, INDEX, V1, SCALE)	\
+  __builtin_ia32_scatterdiv8di ((long long *)ADDR, (__mmask8)MASK,	\
+				(__v8di)(__m512i)INDEX,			\
+				(__v8di)(__m512i)V1, (int)SCALE)
+#endif
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_compress_pd (__m512d __W, __mmask8 __U, __m512d __A)
+{
+  return (__m512d) __builtin_ia32_compressdf512_mask ((__v8df) __A,
+						      (__v8df) __W,
+						      (__mmask8) __U);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_compress_pd (__mmask8 __U, __m512d __A)
+{
+  return (__m512d) __builtin_ia32_compressdf512_mask ((__v8df) __A,
+						      (__v8df)
+						      _mm512_setzero_pd (),
+						      (__mmask8) __U);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_compressstoreu_pd (void *__P, __mmask8 __U, __m512d __A)
+{
+  __builtin_ia32_compressstoredf512_mask ((__v8df *) __P, (__v8df) __A,
+					  (__mmask8) __U);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_compress_ps (__m512 __W, __mmask16 __U, __m512 __A)
+{
+  return (__m512) __builtin_ia32_compresssf512_mask ((__v16sf) __A,
+						     (__v16sf) __W,
+						     (__mmask16) __U);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_compress_ps (__mmask16 __U, __m512 __A)
+{
+  return (__m512) __builtin_ia32_compresssf512_mask ((__v16sf) __A,
+						     (__v16sf)
+						     _mm512_setzero_ps (),
+						     (__mmask16) __U);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_compressstoreu_ps (void *__P, __mmask16 __U, __m512 __A)
+{
+  __builtin_ia32_compressstoresf512_mask ((__v16sf *) __P, (__v16sf) __A,
+					  (__mmask16) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_compress_epi64 (__m512i __W, __mmask8 __U, __m512i __A)
+{
+  return (__m512i) __builtin_ia32_compressdi512_mask ((__v8di) __A,
+						      (__v8di) __W,
+						      (__mmask8) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_compress_epi64 (__mmask8 __U, __m512i __A)
+{
+  return (__m512i) __builtin_ia32_compressdi512_mask ((__v8di) __A,
+						      (__v8di)
+						      _mm512_setzero_si512 (),
+						      (__mmask8) __U);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_compressstoreu_epi64 (void *__P, __mmask8 __U, __m512i __A)
+{
+  __builtin_ia32_compressstoredi512_mask ((__v8di *) __P, (__v8di) __A,
+					  (__mmask8) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_compress_epi32 (__m512i __W, __mmask16 __U, __m512i __A)
+{
+  return (__m512i) __builtin_ia32_compresssi512_mask ((__v16si) __A,
+						      (__v16si) __W,
+						      (__mmask16) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_compress_epi32 (__mmask16 __U, __m512i __A)
+{
+  return (__m512i) __builtin_ia32_compresssi512_mask ((__v16si) __A,
+						      (__v16si)
+						      _mm512_setzero_si512 (),
+						      (__mmask16) __U);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_compressstoreu_epi32 (void *__P, __mmask16 __U, __m512i __A)
+{
+  __builtin_ia32_compressstoresi512_mask ((__v16si *) __P, (__v16si) __A,
+					  (__mmask16) __U);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_expand_pd (__m512d __W, __mmask8 __U, __m512d __A)
+{
+  return (__m512d) __builtin_ia32_expanddf512_mask ((__v8df) __A,
+						    (__v8df) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_expand_pd (__mmask8 __U, __m512d __A)
+{
+  return (__m512d) __builtin_ia32_expanddf512_maskz ((__v8df) __A,
+						     (__v8df)
+						     _mm512_setzero_pd (),
+						     (__mmask8) __U);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_expandloadu_pd (__m512d __W, __mmask8 __U, void const *__P)
+{
+  return (__m512d) __builtin_ia32_expandloaddf512_mask ((const __v8df *) __P,
+							(__v8df) __W,
+							(__mmask8) __U);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_expandloadu_pd (__mmask8 __U, void const *__P)
+{
+  return (__m512d) __builtin_ia32_expandloaddf512_maskz ((const __v8df *) __P,
+							 (__v8df)
+							 _mm512_setzero_pd (),
+							 (__mmask8) __U);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_expand_ps (__m512 __W, __mmask16 __U, __m512 __A)
+{
+  return (__m512) __builtin_ia32_expandsf512_mask ((__v16sf) __A,
+						   (__v16sf) __W,
+						   (__mmask16) __U);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_expand_ps (__mmask16 __U, __m512 __A)
+{
+  return (__m512) __builtin_ia32_expandsf512_maskz ((__v16sf) __A,
+						    (__v16sf)
+						    _mm512_setzero_ps (),
+						    (__mmask16) __U);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_expandloadu_ps (__m512 __W, __mmask16 __U, void const *__P)
+{
+  return (__m512) __builtin_ia32_expandloadsf512_mask ((const __v16sf *) __P,
+						       (__v16sf) __W,
+						       (__mmask16) __U);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_expandloadu_ps (__mmask16 __U, void const *__P)
+{
+  return (__m512) __builtin_ia32_expandloadsf512_maskz ((const __v16sf *) __P,
+							(__v16sf)
+							_mm512_setzero_ps (),
+							(__mmask16) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_expand_epi64 (__m512i __W, __mmask8 __U, __m512i __A)
+{
+  return (__m512i) __builtin_ia32_expanddi512_mask ((__v8di) __A,
+						    (__v8di) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_expand_epi64 (__mmask8 __U, __m512i __A)
+{
+  return (__m512i) __builtin_ia32_expanddi512_maskz ((__v8di) __A,
+						     (__v8di)
+						     _mm512_setzero_si512 (),
+						     (__mmask8) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_expandloadu_epi64 (__m512i __W, __mmask8 __U, void const *__P)
+{
+  return (__m512i) __builtin_ia32_expandloaddi512_mask ((const __v8di *) __P,
+							(__v8di) __W,
+							(__mmask8) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_expandloadu_epi64 (__mmask8 __U, void const *__P)
+{
+  return (__m512i)
+	 __builtin_ia32_expandloaddi512_maskz ((const __v8di *) __P,
+					       (__v8di)
+					       _mm512_setzero_si512 (),
+					       (__mmask8) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_expand_epi32 (__m512i __W, __mmask16 __U, __m512i __A)
+{
+  return (__m512i) __builtin_ia32_expandsi512_mask ((__v16si) __A,
+						    (__v16si) __W,
+						    (__mmask16) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_expand_epi32 (__mmask16 __U, __m512i __A)
+{
+  return (__m512i) __builtin_ia32_expandsi512_maskz ((__v16si) __A,
+						     (__v16si)
+						     _mm512_setzero_si512 (),
+						     (__mmask16) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_expandloadu_epi32 (__m512i __W, __mmask16 __U, void const *__P)
+{
+  return (__m512i) __builtin_ia32_expandloadsi512_mask ((const __v16si *) __P,
+							(__v16si) __W,
+							(__mmask16) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_expandloadu_epi32 (__mmask16 __U, void const *__P)
+{
+  return (__m512i) __builtin_ia32_expandloadsi512_maskz ((const __v16si *) __P,
+							 (__v16si)
+							 _mm512_setzero_si512
+							 (), (__mmask16) __U);
+}
+
+/* Mask arithmetic operations */
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_kand (__mmask16 __A, __mmask16 __B)
+{
+  return (__mmask16) __builtin_ia32_kandhi ((__mmask16) __A, (__mmask16) __B);
+}
+
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_kandn (__mmask16 __A, __mmask16 __B)
+{
+  return (__mmask16) __builtin_ia32_kandnhi ((__mmask16) __A, (__mmask16) __B);
+}
+
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_kor (__mmask16 __A, __mmask16 __B)
+{
+  return (__mmask16) __builtin_ia32_korhi ((__mmask16) __A, (__mmask16) __B);
+}
+
+extern __inline int
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_kortestz (__mmask16 __A, __mmask16 __B)
+{
+  return (__mmask16) __builtin_ia32_kortestzhi ((__mmask16) __A,
+						(__mmask16) __B);
+}
+
+extern __inline int
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_kortestc (__mmask16 __A, __mmask16 __B)
+{
+  return (__mmask16) __builtin_ia32_kortestchi ((__mmask16) __A,
+						(__mmask16) __B);
+}
+
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_kxnor (__mmask16 __A, __mmask16 __B)
+{
+  return (__mmask16) __builtin_ia32_kxnorhi ((__mmask16) __A, (__mmask16) __B);
+}
+
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_kxor (__mmask16 __A, __mmask16 __B)
+{
+  return (__mmask16) __builtin_ia32_kxorhi ((__mmask16) __A, (__mmask16) __B);
+}
+
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_knot (__mmask16 __A)
+{
+  return (__mmask16) __builtin_ia32_knothi ((__mmask16) __A);
+}
+
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_kunpackb (__mmask16 __A, __mmask16 __B)
+{
+  return (__mmask16) __builtin_ia32_kunpckhi ((__mmask16) __A, (__mmask16) __B);
+}
+
+#ifdef __OPTIMIZE__
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_inserti32x4 (__mmask16 __B, __m512i __C, __m128i __D,
+			  const int __imm)
+{
+  return (__m512i) __builtin_ia32_inserti32x4_mask ((__v16si) __C,
+						    (__v4si) __D,
+						    __imm,
+						    (__v16si)
+						    _mm512_setzero_si512 (),
+						    __B);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_insertf32x4 (__mmask16 __B, __m512 __C, __m128 __D,
+			  const int __imm)
+{
+  return (__m512) __builtin_ia32_insertf32x4_mask ((__v16sf) __C,
+						   (__v4sf) __D,
+						   __imm,
+						   (__v16sf)
+						   _mm512_setzero_ps (), __B);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_inserti32x4 (__m512i __A, __mmask16 __B, __m512i __C,
+			 __m128i __D, const int __imm)
+{
+  return (__m512i) __builtin_ia32_inserti32x4_mask ((__v16si) __C,
+						    (__v4si) __D,
+						    __imm,
+						    (__v16si) __A,
+						    __B);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_insertf32x4 (__m512 __A, __mmask16 __B, __m512 __C,
+			 __m128 __D, const int __imm)
+{
+  return (__m512) __builtin_ia32_insertf32x4_mask ((__v16sf) __C,
+						   (__v4sf) __D,
+						   __imm,
+						   (__v16sf) __A, __B);
+}
+#else
+#define _mm512_maskz_insertf32x4(A, X, Y, C)                            \
+  ((__m512) __builtin_ia32_insertf32x4_mask ((__v16sf)(__m512) (X),     \
+    (__v4sf)(__m128) (Y), (int) (C), (__v16sf)_mm512_setzero_ps(),      \
+    (__mmask8)(A)))
+
+#define _mm512_maskz_inserti32x4(A, X, Y, C)                            \
+  ((__m512i) __builtin_ia32_inserti32x4_mask ((__v16si)(__m512i) (X),   \
+    (__v4si)(__m128i) (Y), (int) (C), (__v16si)_mm512_setzero_si512 (),     \
+    (__mmask8)(A)))
+
+#define _mm512_mask_insertf32x4(A, B, X, Y, C)                          \
+  ((__m512) __builtin_ia32_insertf32x4_mask ((__v16sf)(__m512) (X),     \
+    (__v4sf)(__m128) (Y), (int) (C), (__v16sf)(__m512) (A),             \
+					     (__mmask8)(B)))
+
+#define _mm512_mask_inserti32x4(A, B, X, Y, C)                          \
+  ((__m512i) __builtin_ia32_inserti32x4_mask ((__v16si)(__m512i) (X),   \
+    (__v4si)(__m128i) (Y), (int) (C), (__v16si)(__m512i) (A),           \
+					      (__mmask8)(B)))
+#endif
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_max_epi64 (__m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pmaxsq512_mask ((__v8di) __A,
+						  (__v8di) __B,
+						  (__v8di)
+						  _mm512_undefined_si512 (),
+						  (__mmask8) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_max_epi64 (__mmask8 __M, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pmaxsq512_mask ((__v8di) __A,
+						  (__v8di) __B,
+						  (__v8di)
+						  _mm512_setzero_si512 (),
+						  __M);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_max_epi64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pmaxsq512_mask ((__v8di) __A,
+						  (__v8di) __B,
+						  (__v8di) __W, __M);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_min_epi64 (__m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pminsq512_mask ((__v8di) __A,
+						  (__v8di) __B,
+						  (__v8di)
+						  _mm512_undefined_si512 (),
+						  (__mmask8) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_min_epi64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pminsq512_mask ((__v8di) __A,
+						  (__v8di) __B,
+						  (__v8di) __W, __M);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_min_epi64 (__mmask8 __M, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pminsq512_mask ((__v8di) __A,
+						  (__v8di) __B,
+						  (__v8di)
+						  _mm512_setzero_si512 (),
+						  __M);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_max_epu64 (__m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pmaxuq512_mask ((__v8di) __A,
+						  (__v8di) __B,
+						  (__v8di)
+						  _mm512_undefined_si512 (),
+						  (__mmask8) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_max_epu64 (__mmask8 __M, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pmaxuq512_mask ((__v8di) __A,
+						  (__v8di) __B,
+						  (__v8di)
+						  _mm512_setzero_si512 (),
+						  __M);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_max_epu64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pmaxuq512_mask ((__v8di) __A,
+						  (__v8di) __B,
+						  (__v8di) __W, __M);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_min_epu64 (__m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pminuq512_mask ((__v8di) __A,
+						  (__v8di) __B,
+						  (__v8di)
+						  _mm512_undefined_si512 (),
+						  (__mmask8) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_min_epu64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pminuq512_mask ((__v8di) __A,
+						  (__v8di) __B,
+						  (__v8di) __W, __M);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_min_epu64 (__mmask8 __M, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pminuq512_mask ((__v8di) __A,
+						  (__v8di) __B,
+						  (__v8di)
+						  _mm512_setzero_si512 (),
+						  __M);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_max_epi32 (__m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pmaxsd512_mask ((__v16si) __A,
+						  (__v16si) __B,
+						  (__v16si)
+						  _mm512_undefined_si512 (),
+						  (__mmask16) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_max_epi32 (__mmask16 __M, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pmaxsd512_mask ((__v16si) __A,
+						  (__v16si) __B,
+						  (__v16si)
+						  _mm512_setzero_si512 (),
+						  __M);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_max_epi32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pmaxsd512_mask ((__v16si) __A,
+						  (__v16si) __B,
+						  (__v16si) __W, __M);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_min_epi32 (__m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pminsd512_mask ((__v16si) __A,
+						  (__v16si) __B,
+						  (__v16si)
+						  _mm512_undefined_si512 (),
+						  (__mmask16) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_min_epi32 (__mmask16 __M, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pminsd512_mask ((__v16si) __A,
+						  (__v16si) __B,
+						  (__v16si)
+						  _mm512_setzero_si512 (),
+						  __M);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_min_epi32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pminsd512_mask ((__v16si) __A,
+						  (__v16si) __B,
+						  (__v16si) __W, __M);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_max_epu32 (__m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pmaxud512_mask ((__v16si) __A,
+						  (__v16si) __B,
+						  (__v16si)
+						  _mm512_undefined_si512 (),
+						  (__mmask16) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_max_epu32 (__mmask16 __M, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pmaxud512_mask ((__v16si) __A,
+						  (__v16si) __B,
+						  (__v16si)
+						  _mm512_setzero_si512 (),
+						  __M);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_max_epu32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pmaxud512_mask ((__v16si) __A,
+						  (__v16si) __B,
+						  (__v16si) __W, __M);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_min_epu32 (__m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pminud512_mask ((__v16si) __A,
+						  (__v16si) __B,
+						  (__v16si)
+						  _mm512_undefined_si512 (),
+						  (__mmask16) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_min_epu32 (__mmask16 __M, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pminud512_mask ((__v16si) __A,
+						  (__v16si) __B,
+						  (__v16si)
+						  _mm512_setzero_si512 (),
+						  __M);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_min_epu32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_pminud512_mask ((__v16si) __A,
+						  (__v16si) __B,
+						  (__v16si) __W, __M);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_unpacklo_ps (__m512 __A, __m512 __B)
+{
+  return (__m512) __builtin_ia32_unpcklps512_mask ((__v16sf) __A,
+						   (__v16sf) __B,
+						   (__v16sf)
+						   _mm512_undefined_ps (),
+						   (__mmask16) -1);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_unpacklo_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
+{
+  return (__m512) __builtin_ia32_unpcklps512_mask ((__v16sf) __A,
+						   (__v16sf) __B,
+						   (__v16sf) __W,
+						   (__mmask16) __U);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_unpacklo_ps (__mmask16 __U, __m512 __A, __m512 __B)
+{
+  return (__m512) __builtin_ia32_unpcklps512_mask ((__v16sf) __A,
+						   (__v16sf) __B,
+						   (__v16sf)
+						   _mm512_setzero_ps (),
+						   (__mmask16) __U);
+}
+
+#ifdef __OPTIMIZE__
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_max_round_sd (__m128d __A, __m128d __B, const int __R)
+{
+  return (__m128d) __builtin_ia32_maxsd_round ((__v2df) __A,
+					       (__v2df) __B,
+					       __R);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_max_round_ss (__m128 __A, __m128 __B, const int __R)
+{
+  return (__m128) __builtin_ia32_maxss_round ((__v4sf) __A,
+					      (__v4sf) __B,
+					      __R);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_min_round_sd (__m128d __A, __m128d __B, const int __R)
+{
+  return (__m128d) __builtin_ia32_minsd_round ((__v2df) __A,
+					       (__v2df) __B,
+					       __R);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_min_round_ss (__m128 __A, __m128 __B, const int __R)
+{
+  return (__m128) __builtin_ia32_minss_round ((__v4sf) __A,
+					      (__v4sf) __B,
+					      __R);
+}
+
+#else
+#define _mm_max_round_sd(A, B, C)            \
+    (__m128d)__builtin_ia32_addsd_round(A, B, C)
+
+#define _mm_max_round_ss(A, B, C)            \
+    (__m128)__builtin_ia32_addss_round(A, B, C)
+
+#define _mm_min_round_sd(A, B, C)            \
+    (__m128d)__builtin_ia32_subsd_round(A, B, C)
+
+#define _mm_min_round_ss(A, B, C)            \
+    (__m128)__builtin_ia32_subss_round(A, B, C)
+#endif
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_blend_pd (__mmask8 __U, __m512d __A, __m512d __W)
+{
+  return (__m512d) __builtin_ia32_blendmpd_512_mask ((__v8df) __A,
+						     (__v8df) __W,
+						     (__mmask8) __U);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_blend_ps (__mmask16 __U, __m512 __A, __m512 __W)
+{
+  return (__m512) __builtin_ia32_blendmps_512_mask ((__v16sf) __A,
+						    (__v16sf) __W,
+						    (__mmask16) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_blend_epi64 (__mmask8 __U, __m512i __A, __m512i __W)
+{
+  return (__m512i) __builtin_ia32_blendmq_512_mask ((__v8di) __A,
+						    (__v8di) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_blend_epi32 (__mmask16 __U, __m512i __A, __m512i __W)
+{
+  return (__m512i) __builtin_ia32_blendmd_512_mask ((__v16si) __A,
+						    (__v16si) __W,
+						    (__mmask16) __U);
+}
+
+#ifdef __OPTIMIZE__
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_fmadd_round_sd (__m128d __W, __m128d __A, __m128d __B, const int __R)
+{
+  return (__m128d) __builtin_ia32_vfmaddsd3_round ((__v2df) __W,
+						   (__v2df) __A,
+						   (__v2df) __B,
+						   __R);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_fmadd_round_ss (__m128 __W, __m128 __A, __m128 __B, const int __R)
+{
+  return (__m128) __builtin_ia32_vfmaddss3_round ((__v4sf) __W,
+						  (__v4sf) __A,
+						  (__v4sf) __B,
+						  __R);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_fmsub_round_sd (__m128d __W, __m128d __A, __m128d __B, const int __R)
+{
+  return (__m128d) __builtin_ia32_vfmaddsd3_round ((__v2df) __W,
+						   (__v2df) __A,
+						   -(__v2df) __B,
+						   __R);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_fmsub_round_ss (__m128 __W, __m128 __A, __m128 __B, const int __R)
+{
+  return (__m128) __builtin_ia32_vfmaddss3_round ((__v4sf) __W,
+						  (__v4sf) __A,
+						  -(__v4sf) __B,
+						  __R);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_fnmadd_round_sd (__m128d __W, __m128d __A, __m128d __B, const int __R)
+{
+  return (__m128d) __builtin_ia32_vfmaddsd3_round ((__v2df) __W,
+						   -(__v2df) __A,
+						   (__v2df) __B,
+						   __R);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_fnmadd_round_ss (__m128 __W, __m128 __A, __m128 __B, const int __R)
+{
+  return (__m128) __builtin_ia32_vfmaddss3_round ((__v4sf) __W,
+						  -(__v4sf) __A,
+						  (__v4sf) __B,
+						  __R);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_fnmsub_round_sd (__m128d __W, __m128d __A, __m128d __B, const int __R)
+{
+  return (__m128d) __builtin_ia32_vfmaddsd3_round ((__v2df) __W,
+						   -(__v2df) __A,
+						   -(__v2df) __B,
+						   __R);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_fnmsub_round_ss (__m128 __W, __m128 __A, __m128 __B, const int __R)
+{
+  return (__m128) __builtin_ia32_vfmaddss3_round ((__v4sf) __W,
+						  -(__v4sf) __A,
+						  -(__v4sf) __B,
+						  __R);
+}
+#else
+#define _mm_fmadd_round_sd(A, B, C, R)            \
+    (__m128d)__builtin_ia32_vfmaddsd3_round(A, B, C, R)
+
+#define _mm_fmadd_round_ss(A, B, C, R)            \
+    (__m128)__builtin_ia32_vfmaddss3_round(A, B, C, R)
+
+#define _mm_fmsub_round_sd(A, B, C, R)            \
+    (__m128d)__builtin_ia32_vfmaddsd3_round(A, B, -(C), R)
+
+#define _mm_fmsub_round_ss(A, B, C, R)            \
+    (__m128)__builtin_ia32_vfmaddss3_round(A, B, -(C), R)
+
+#define _mm_fnmadd_round_sd(A, B, C, R)            \
+    (__m128d)__builtin_ia32_vfmaddsd3_round(A, -(B), C, R)
+
+#define _mm_fnmadd_round_ss(A, B, C, R)            \
+   (__m128)__builtin_ia32_vfmaddss3_round(A, -(B), C, R)
+
+#define _mm_fnmsub_round_sd(A, B, C, R)            \
+    (__m128d)__builtin_ia32_vfmaddsd3_round(A, -(B), -(C), R)
+
+#define _mm_fnmsub_round_ss(A, B, C, R)            \
+    (__m128)__builtin_ia32_vfmaddss3_round(A, -(B), -(C), R)
+#endif
+
+#ifdef __OPTIMIZE__
+extern __inline int
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_comi_round_ss (__m128 __A, __m128 __B, const int __P, const int __R)
+{
+  return __builtin_ia32_vcomiss ((__v4sf) __A, (__v4sf) __B, __P, __R);
+}
+
+extern __inline int
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_comi_round_sd (__m128d __A, __m128d __B, const int __P, const int __R)
+{
+  return __builtin_ia32_vcomisd ((__v2df) __A, (__v2df) __B, __P, __R);
+}
+#else
+#define _mm_comi_round_ss(A, B, C, D)\
+__builtin_ia32_vcomiss(A, B, C, D)
+#define _mm_comi_round_sd(A, B, C, D)\
+__builtin_ia32_vcomisd(A, B, C, D)
+#endif
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_sqrt_pd (__m512d __A)
+{
+  return (__m512d) __builtin_ia32_sqrtpd512_mask ((__v8df) __A,
+						  (__v8df)
+						  _mm512_undefined_pd (),
+						  (__mmask8) -1,
+						  _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_sqrt_pd (__m512d __W, __mmask8 __U, __m512d __A)
+{
+  return (__m512d) __builtin_ia32_sqrtpd512_mask ((__v8df) __A,
+						  (__v8df) __W,
+						  (__mmask8) __U,
+						  _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_sqrt_pd (__mmask8 __U, __m512d __A)
+{
+  return (__m512d) __builtin_ia32_sqrtpd512_mask ((__v8df) __A,
+						  (__v8df)
+						  _mm512_setzero_pd (),
+						  (__mmask8) __U,
+						  _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_sqrt_ps (__m512 __A)
+{
+  return (__m512) __builtin_ia32_sqrtps512_mask ((__v16sf) __A,
+						 (__v16sf)
+						 _mm512_undefined_ps (),
+						 (__mmask16) -1,
+						 _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_sqrt_ps (__m512 __W, __mmask16 __U, __m512 __A)
+{
+  return (__m512) __builtin_ia32_sqrtps512_mask ((__v16sf) __A,
+						 (__v16sf) __W,
+						 (__mmask16) __U,
+						 _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_sqrt_ps (__mmask16 __U, __m512 __A)
+{
+  return (__m512) __builtin_ia32_sqrtps512_mask ((__v16sf) __A,
+						 (__v16sf)
+						 _mm512_setzero_ps (),
+						 (__mmask16) __U,
+						 _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_add_pd (__m512d __A, __m512d __B)
+{
+  return (__m512d) ((__v8df)__A + (__v8df)__B);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_add_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
+{
+  return (__m512d) __builtin_ia32_addpd512_mask ((__v8df) __A,
+						 (__v8df) __B,
+						 (__v8df) __W,
+						 (__mmask8) __U,
+						 _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_add_pd (__mmask8 __U, __m512d __A, __m512d __B)
+{
+  return (__m512d) __builtin_ia32_addpd512_mask ((__v8df) __A,
+						 (__v8df) __B,
+						 (__v8df)
+						 _mm512_setzero_pd (),
+						 (__mmask8) __U,
+						 _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_add_ps (__m512 __A, __m512 __B)
+{
+  return (__m512) ((__v16sf)__A + (__v16sf)__B);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_add_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
+{
+  return (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A,
+						(__v16sf) __B,
+						(__v16sf) __W,
+						(__mmask16) __U,
+						_MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_add_ps (__mmask16 __U, __m512 __A, __m512 __B)
+{
+  return (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A,
+						(__v16sf) __B,
+						(__v16sf)
+						_mm512_setzero_ps (),
+						(__mmask16) __U,
+						_MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_sub_pd (__m512d __A, __m512d __B)
+{
+  return (__m512d) ((__v8df)__A - (__v8df)__B);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_sub_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
+{
+  return (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A,
+						 (__v8df) __B,
+						 (__v8df) __W,
+						 (__mmask8) __U,
+						 _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_sub_pd (__mmask8 __U, __m512d __A, __m512d __B)
+{
+  return (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A,
+						 (__v8df) __B,
+						 (__v8df)
+						 _mm512_setzero_pd (),
+						 (__mmask8) __U,
+						 _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_sub_ps (__m512 __A, __m512 __B)
+{
+  return (__m512) ((__v16sf)__A - (__v16sf)__B);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_sub_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
+{
+  return (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A,
+						(__v16sf) __B,
+						(__v16sf) __W,
+						(__mmask16) __U,
+						_MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_sub_ps (__mmask16 __U, __m512 __A, __m512 __B)
+{
+  return (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A,
+						(__v16sf) __B,
+						(__v16sf)
+						_mm512_setzero_ps (),
+						(__mmask16) __U,
+						_MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mul_pd (__m512d __A, __m512d __B)
+{
+  return (__m512d) ((__v8df)__A * (__v8df)__B);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_mul_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
+{
+  return (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A,
+						 (__v8df) __B,
+						 (__v8df) __W,
+						 (__mmask8) __U,
+						 _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_mul_pd (__mmask8 __U, __m512d __A, __m512d __B)
+{
+  return (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A,
+						 (__v8df) __B,
+						 (__v8df)
+						 _mm512_setzero_pd (),
+						 (__mmask8) __U,
+						 _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mul_ps (__m512 __A, __m512 __B)
+{
+  return (__m512) ((__v16sf)__A * (__v16sf)__B);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_mul_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
+{
+  return (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A,
+						(__v16sf) __B,
+						(__v16sf) __W,
+						(__mmask16) __U,
+						_MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_mul_ps (__mmask16 __U, __m512 __A, __m512 __B)
+{
+  return (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A,
+						(__v16sf) __B,
+						(__v16sf)
+						_mm512_setzero_ps (),
+						(__mmask16) __U,
+						_MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_div_pd (__m512d __M, __m512d __V)
+{
+  return (__m512d) ((__v8df)__M / (__v8df)__V);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_div_pd (__m512d __W, __mmask8 __U, __m512d __M, __m512d __V)
+{
+  return (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __M,
+						 (__v8df) __V,
+						 (__v8df) __W,
+						 (__mmask8) __U,
+						 _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_div_pd (__mmask8 __U, __m512d __M, __m512d __V)
+{
+  return (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __M,
+						 (__v8df) __V,
+						 (__v8df)
+						 _mm512_setzero_pd (),
+						 (__mmask8) __U,
+						 _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_div_ps (__m512 __A, __m512 __B)
+{
+  return (__m512) ((__v16sf)__A / (__v16sf)__B);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_div_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
+{
+  return (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A,
+						(__v16sf) __B,
+						(__v16sf) __W,
+						(__mmask16) __U,
+						_MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_div_ps (__mmask16 __U, __m512 __A, __m512 __B)
+{
+  return (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A,
+						(__v16sf) __B,
+						(__v16sf)
+						_mm512_setzero_ps (),
+						(__mmask16) __U,
+						_MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_max_pd (__m512d __A, __m512d __B)
+{
+  return (__m512d) __builtin_ia32_maxpd512_mask ((__v8df) __A,
+						 (__v8df) __B,
+						 (__v8df)
+						 _mm512_undefined_pd (),
+						 (__mmask8) -1,
+						 _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_max_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
+{
+  return (__m512d) __builtin_ia32_maxpd512_mask ((__v8df) __A,
+						 (__v8df) __B,
+						 (__v8df) __W,
+						 (__mmask8) __U,
+						 _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_max_pd (__mmask8 __U, __m512d __A, __m512d __B)
+{
+  return (__m512d) __builtin_ia32_maxpd512_mask ((__v8df) __A,
+						 (__v8df) __B,
+						 (__v8df)
+						 _mm512_setzero_pd (),
+						 (__mmask8) __U,
+						 _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_max_ps (__m512 __A, __m512 __B)
+{
+  return (__m512) __builtin_ia32_maxps512_mask ((__v16sf) __A,
+						(__v16sf) __B,
+						(__v16sf)
+						_mm512_undefined_ps (),
+						(__mmask16) -1,
+						_MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_max_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
+{
+  return (__m512) __builtin_ia32_maxps512_mask ((__v16sf) __A,
+						(__v16sf) __B,
+						(__v16sf) __W,
+						(__mmask16) __U,
+						_MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_max_ps (__mmask16 __U, __m512 __A, __m512 __B)
+{
+  return (__m512) __builtin_ia32_maxps512_mask ((__v16sf) __A,
+						(__v16sf) __B,
+						(__v16sf)
+						_mm512_setzero_ps (),
+						(__mmask16) __U,
+						_MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_min_pd (__m512d __A, __m512d __B)
+{
+  return (__m512d) __builtin_ia32_minpd512_mask ((__v8df) __A,
+						 (__v8df) __B,
+						 (__v8df)
+						 _mm512_undefined_pd (),
+						 (__mmask8) -1,
+						 _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_min_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
+{
+  return (__m512d) __builtin_ia32_minpd512_mask ((__v8df) __A,
+						 (__v8df) __B,
+						 (__v8df) __W,
+						 (__mmask8) __U,
+						 _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_min_pd (__mmask8 __U, __m512d __A, __m512d __B)
+{
+  return (__m512d) __builtin_ia32_minpd512_mask ((__v8df) __A,
+						 (__v8df) __B,
+						 (__v8df)
+						 _mm512_setzero_pd (),
+						 (__mmask8) __U,
+						 _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_min_ps (__m512 __A, __m512 __B)
+{
+  return (__m512) __builtin_ia32_minps512_mask ((__v16sf) __A,
+						(__v16sf) __B,
+						(__v16sf)
+						_mm512_undefined_ps (),
+						(__mmask16) -1,
+						_MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_min_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
+{
+  return (__m512) __builtin_ia32_minps512_mask ((__v16sf) __A,
+						(__v16sf) __B,
+						(__v16sf) __W,
+						(__mmask16) __U,
+						_MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_min_ps (__mmask16 __U, __m512 __A, __m512 __B)
+{
+  return (__m512) __builtin_ia32_minps512_mask ((__v16sf) __A,
+						(__v16sf) __B,
+						(__v16sf)
+						_mm512_setzero_ps (),
+						(__mmask16) __U,
+						_MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_scalef_pd (__m512d __A, __m512d __B)
+{
+  return (__m512d) __builtin_ia32_scalefpd512_mask ((__v8df) __A,
+						    (__v8df) __B,
+						    (__v8df)
+						    _mm512_undefined_pd (),
+						    (__mmask8) -1,
+						    _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_scalef_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
+{
+  return (__m512d) __builtin_ia32_scalefpd512_mask ((__v8df) __A,
+						    (__v8df) __B,
+						    (__v8df) __W,
+						    (__mmask8) __U,
+						    _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_scalef_pd (__mmask8 __U, __m512d __A, __m512d __B)
+{
+  return (__m512d) __builtin_ia32_scalefpd512_mask ((__v8df) __A,
+						    (__v8df) __B,
+						    (__v8df)
+						    _mm512_setzero_pd (),
+						    (__mmask8) __U,
+						    _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_scalef_ps (__m512 __A, __m512 __B)
+{
+  return (__m512) __builtin_ia32_scalefps512_mask ((__v16sf) __A,
+						   (__v16sf) __B,
+						   (__v16sf)
+						   _mm512_undefined_ps (),
+						   (__mmask16) -1,
+						   _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_scalef_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
+{
+  return (__m512) __builtin_ia32_scalefps512_mask ((__v16sf) __A,
+						   (__v16sf) __B,
+						   (__v16sf) __W,
+						   (__mmask16) __U,
+						   _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_scalef_ps (__mmask16 __U, __m512 __A, __m512 __B)
+{
+  return (__m512) __builtin_ia32_scalefps512_mask ((__v16sf) __A,
+						   (__v16sf) __B,
+						   (__v16sf)
+						   _mm512_setzero_ps (),
+						   (__mmask16) __U,
+						   _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_scalef_sd (__m128d __A, __m128d __B)
+{
+  return (__m128d) __builtin_ia32_scalefsd_round ((__v2df) __A,
+						  (__v2df) __B,
+						  _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_scalef_ss (__m128 __A, __m128 __B)
+{
+  return (__m128) __builtin_ia32_scalefss_round ((__v4sf) __A,
+						 (__v4sf) __B,
+						 _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_fmadd_pd (__m512d __A, __m512d __B, __m512d __C)
+{
+  return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
+						    (__v8df) __B,
+						    (__v8df) __C,
+						    (__mmask8) -1,
+						    _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_fmadd_pd (__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
+{
+  return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
+						    (__v8df) __B,
+						    (__v8df) __C,
+						    (__mmask8) __U,
+						    _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask3_fmadd_pd (__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
+{
+  return (__m512d) __builtin_ia32_vfmaddpd512_mask3 ((__v8df) __A,
+						     (__v8df) __B,
+						     (__v8df) __C,
+						     (__mmask8) __U,
+						     _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_fmadd_pd (__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
+{
+  return (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) __A,
+						     (__v8df) __B,
+						     (__v8df) __C,
+						     (__mmask8) __U,
+						     _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_fmadd_ps (__m512 __A, __m512 __B, __m512 __C)
+{
+  return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
+						   (__v16sf) __B,
+						   (__v16sf) __C,
+						   (__mmask16) -1,
+						   _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_fmadd_ps (__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
+{
+  return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
+						   (__v16sf) __B,
+						   (__v16sf) __C,
+						   (__mmask16) __U,
+						   _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask3_fmadd_ps (__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
+{
+  return (__m512) __builtin_ia32_vfmaddps512_mask3 ((__v16sf) __A,
+						    (__v16sf) __B,
+						    (__v16sf) __C,
+						    (__mmask16) __U,
+						    _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_fmadd_ps (__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
+{
+  return (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) __A,
+						    (__v16sf) __B,
+						    (__v16sf) __C,
+						    (__mmask16) __U,
+						    _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_fmsub_pd (__m512d __A, __m512d __B, __m512d __C)
+{
+  return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
+						    (__v8df) __B,
+						    -(__v8df) __C,
+						    (__mmask8) -1,
+						    _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_fmsub_pd (__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
+{
+  return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
+						    (__v8df) __B,
+						    -(__v8df) __C,
+						    (__mmask8) __U,
+						    _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask3_fmsub_pd (__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
+{
+  return (__m512d) __builtin_ia32_vfmsubpd512_mask3 ((__v8df) __A,
+						     (__v8df) __B,
+						     (__v8df) __C,
+						     (__mmask8) __U,
+						     _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_fmsub_pd (__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
+{
+  return (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) __A,
+						     (__v8df) __B,
+						     -(__v8df) __C,
+						     (__mmask8) __U,
+						     _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_fmsub_ps (__m512 __A, __m512 __B, __m512 __C)
+{
+  return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
+						   (__v16sf) __B,
+						   -(__v16sf) __C,
+						   (__mmask16) -1,
+						   _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_fmsub_ps (__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
+{
+  return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
+						   (__v16sf) __B,
+						   -(__v16sf) __C,
+						   (__mmask16) __U,
+						   _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask3_fmsub_ps (__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
+{
+  return (__m512) __builtin_ia32_vfmsubps512_mask3 ((__v16sf) __A,
+						    (__v16sf) __B,
+						    (__v16sf) __C,
+						    (__mmask16) __U,
+						    _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_fmsub_ps (__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
+{
+  return (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) __A,
+						    (__v16sf) __B,
+						    -(__v16sf) __C,
+						    (__mmask16) __U,
+						    _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_fmaddsub_pd (__m512d __A, __m512d __B, __m512d __C)
+{
+  return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
+						       (__v8df) __B,
+						       (__v8df) __C,
+						       (__mmask8) -1,
+						       _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_fmaddsub_pd (__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
+{
+  return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
+						       (__v8df) __B,
+						       (__v8df) __C,
+						       (__mmask8) __U,
+						       _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask3_fmaddsub_pd (__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
+{
+  return (__m512d) __builtin_ia32_vfmaddsubpd512_mask3 ((__v8df) __A,
+							(__v8df) __B,
+							(__v8df) __C,
+							(__mmask8) __U,
+							_MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_fmaddsub_pd (__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
+{
+  return (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) __A,
+							(__v8df) __B,
+							(__v8df) __C,
+							(__mmask8) __U,
+							_MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_fmaddsub_ps (__m512 __A, __m512 __B, __m512 __C)
+{
+  return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
+						      (__v16sf) __B,
+						      (__v16sf) __C,
+						      (__mmask16) -1,
+						      _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_fmaddsub_ps (__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
+{
+  return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
+						      (__v16sf) __B,
+						      (__v16sf) __C,
+						      (__mmask16) __U,
+						      _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask3_fmaddsub_ps (__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
+{
+  return (__m512) __builtin_ia32_vfmaddsubps512_mask3 ((__v16sf) __A,
+						       (__v16sf) __B,
+						       (__v16sf) __C,
+						       (__mmask16) __U,
+						       _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_fmaddsub_ps (__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
+{
+  return (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) __A,
+						       (__v16sf) __B,
+						       (__v16sf) __C,
+						       (__mmask16) __U,
+						       _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_fmsubadd_pd (__m512d __A, __m512d __B, __m512d __C)
+{
+  return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
+						       (__v8df) __B,
+						       -(__v8df) __C,
+						       (__mmask8) -1,
+						       _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_fmsubadd_pd (__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
+{
+  return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
+						       (__v8df) __B,
+						       -(__v8df) __C,
+						       (__mmask8) __U,
+						       _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask3_fmsubadd_pd (__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
+{
+  return (__m512d) __builtin_ia32_vfmsubaddpd512_mask3 ((__v8df) __A,
+							(__v8df) __B,
+							(__v8df) __C,
+							(__mmask8) __U,
+							_MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_fmsubadd_pd (__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
+{
+  return (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) __A,
+							(__v8df) __B,
+							-(__v8df) __C,
+							(__mmask8) __U,
+							_MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_fmsubadd_ps (__m512 __A, __m512 __B, __m512 __C)
+{
+  return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
+						      (__v16sf) __B,
+						      -(__v16sf) __C,
+						      (__mmask16) -1,
+						      _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_fmsubadd_ps (__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
+{
+  return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
+						      (__v16sf) __B,
+						      -(__v16sf) __C,
+						      (__mmask16) __U,
+						      _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask3_fmsubadd_ps (__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
+{
+  return (__m512) __builtin_ia32_vfmsubaddps512_mask3 ((__v16sf) __A,
+						       (__v16sf) __B,
+						       (__v16sf) __C,
+						       (__mmask16) __U,
+						       _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_fmsubadd_ps (__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
+{
+  return (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) __A,
+						       (__v16sf) __B,
+						       -(__v16sf) __C,
+						       (__mmask16) __U,
+						       _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_fnmadd_pd (__m512d __A, __m512d __B, __m512d __C)
+{
+  return (__m512d) __builtin_ia32_vfmaddpd512_mask (-(__v8df) __A,
+						    (__v8df) __B,
+						    (__v8df) __C,
+						    (__mmask8) -1,
+						    _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_fnmadd_pd (__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
+{
+  return (__m512d) __builtin_ia32_vfnmaddpd512_mask ((__v8df) __A,
+						     (__v8df) __B,
+						     (__v8df) __C,
+						     (__mmask8) __U,
+						     _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask3_fnmadd_pd (__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
+{
+  return (__m512d) __builtin_ia32_vfmaddpd512_mask3 (-(__v8df) __A,
+						     (__v8df) __B,
+						     (__v8df) __C,
+						     (__mmask8) __U,
+						     _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_fnmadd_pd (__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
+{
+  return (__m512d) __builtin_ia32_vfmaddpd512_maskz (-(__v8df) __A,
+						     (__v8df) __B,
+						     (__v8df) __C,
+						     (__mmask8) __U,
+						     _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_fnmadd_ps (__m512 __A, __m512 __B, __m512 __C)
+{
+  return (__m512) __builtin_ia32_vfmaddps512_mask (-(__v16sf) __A,
+						   (__v16sf) __B,
+						   (__v16sf) __C,
+						   (__mmask16) -1,
+						   _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_fnmadd_ps (__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
+{
+  return (__m512) __builtin_ia32_vfnmaddps512_mask ((__v16sf) __A,
+						    (__v16sf) __B,
+						    (__v16sf) __C,
+						    (__mmask16) __U,
+						    _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask3_fnmadd_ps (__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
+{
+  return (__m512) __builtin_ia32_vfmaddps512_mask3 (-(__v16sf) __A,
+						    (__v16sf) __B,
+						    (__v16sf) __C,
+						    (__mmask16) __U,
+						    _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_fnmadd_ps (__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
+{
+  return (__m512) __builtin_ia32_vfmaddps512_maskz (-(__v16sf) __A,
+						    (__v16sf) __B,
+						    (__v16sf) __C,
+						    (__mmask16) __U,
+						    _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_fnmsub_pd (__m512d __A, __m512d __B, __m512d __C)
+{
+  return (__m512d) __builtin_ia32_vfmaddpd512_mask (-(__v8df) __A,
+						    (__v8df) __B,
+						    -(__v8df) __C,
+						    (__mmask8) -1,
+						    _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_fnmsub_pd (__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
+{
+  return (__m512d) __builtin_ia32_vfnmsubpd512_mask ((__v8df) __A,
+						     (__v8df) __B,
+						     (__v8df) __C,
+						     (__mmask8) __U,
+						     _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask3_fnmsub_pd (__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
+{
+  return (__m512d) __builtin_ia32_vfnmsubpd512_mask3 ((__v8df) __A,
+						      (__v8df) __B,
+						      (__v8df) __C,
+						      (__mmask8) __U,
+						      _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_fnmsub_pd (__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
+{
+  return (__m512d) __builtin_ia32_vfmaddpd512_maskz (-(__v8df) __A,
+						     (__v8df) __B,
+						     -(__v8df) __C,
+						     (__mmask8) __U,
+						     _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_fnmsub_ps (__m512 __A, __m512 __B, __m512 __C)
+{
+  return (__m512) __builtin_ia32_vfmaddps512_mask (-(__v16sf) __A,
+						   (__v16sf) __B,
+						   -(__v16sf) __C,
+						   (__mmask16) -1,
+						   _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_fnmsub_ps (__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
+{
+  return (__m512) __builtin_ia32_vfnmsubps512_mask ((__v16sf) __A,
+						    (__v16sf) __B,
+						    (__v16sf) __C,
+						    (__mmask16) __U,
+						    _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask3_fnmsub_ps (__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
+{
+  return (__m512) __builtin_ia32_vfnmsubps512_mask3 ((__v16sf) __A,
+						     (__v16sf) __B,
+						     (__v16sf) __C,
+						     (__mmask16) __U,
+						     _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_fnmsub_ps (__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
+{
+  return (__m512) __builtin_ia32_vfmaddps512_maskz (-(__v16sf) __A,
+						    (__v16sf) __B,
+						    -(__v16sf) __C,
+						    (__mmask16) __U,
+						    _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cvttpd_epi32 (__m512d __A)
+{
+  return (__m256i) __builtin_ia32_cvttpd2dq512_mask ((__v8df) __A,
+						     (__v8si)
+						     _mm256_undefined_si256 (),
+						     (__mmask8) -1,
+						     _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvttpd_epi32 (__m256i __W, __mmask8 __U, __m512d __A)
+{
+  return (__m256i) __builtin_ia32_cvttpd2dq512_mask ((__v8df) __A,
+						     (__v8si) __W,
+						     (__mmask8) __U,
+						     _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_cvttpd_epi32 (__mmask8 __U, __m512d __A)
+{
+  return (__m256i) __builtin_ia32_cvttpd2dq512_mask ((__v8df) __A,
+						     (__v8si)
+						     _mm256_setzero_si256 (),
+						     (__mmask8) __U,
+						     _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cvttpd_epu32 (__m512d __A)
+{
+  return (__m256i) __builtin_ia32_cvttpd2udq512_mask ((__v8df) __A,
+						      (__v8si)
+						      _mm256_undefined_si256 (),
+						      (__mmask8) -1,
+						      _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvttpd_epu32 (__m256i __W, __mmask8 __U, __m512d __A)
+{
+  return (__m256i) __builtin_ia32_cvttpd2udq512_mask ((__v8df) __A,
+						      (__v8si) __W,
+						      (__mmask8) __U,
+						      _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_cvttpd_epu32 (__mmask8 __U, __m512d __A)
+{
+  return (__m256i) __builtin_ia32_cvttpd2udq512_mask ((__v8df) __A,
+						      (__v8si)
+						      _mm256_setzero_si256 (),
+						      (__mmask8) __U,
+						      _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cvtpd_epi32 (__m512d __A)
+{
+  return (__m256i) __builtin_ia32_cvtpd2dq512_mask ((__v8df) __A,
+						    (__v8si)
+						    _mm256_undefined_si256 (),
+						    (__mmask8) -1,
+						    _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvtpd_epi32 (__m256i __W, __mmask8 __U, __m512d __A)
+{
+  return (__m256i) __builtin_ia32_cvtpd2dq512_mask ((__v8df) __A,
+						    (__v8si) __W,
+						    (__mmask8) __U,
+						    _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_cvtpd_epi32 (__mmask8 __U, __m512d __A)
+{
+  return (__m256i) __builtin_ia32_cvtpd2dq512_mask ((__v8df) __A,
+						    (__v8si)
+						    _mm256_setzero_si256 (),
+						    (__mmask8) __U,
+						    _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cvtpd_epu32 (__m512d __A)
+{
+  return (__m256i) __builtin_ia32_cvtpd2udq512_mask ((__v8df) __A,
+						     (__v8si)
+						     _mm256_undefined_si256 (),
+						     (__mmask8) -1,
+						     _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvtpd_epu32 (__m256i __W, __mmask8 __U, __m512d __A)
+{
+  return (__m256i) __builtin_ia32_cvtpd2udq512_mask ((__v8df) __A,
+						     (__v8si) __W,
+						     (__mmask8) __U,
+						     _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_cvtpd_epu32 (__mmask8 __U, __m512d __A)
+{
+  return (__m256i) __builtin_ia32_cvtpd2udq512_mask ((__v8df) __A,
+						     (__v8si)
+						     _mm256_setzero_si256 (),
+						     (__mmask8) __U,
+						     _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cvttps_epi32 (__m512 __A)
+{
+  return (__m512i) __builtin_ia32_cvttps2dq512_mask ((__v16sf) __A,
+						     (__v16si)
+						     _mm512_undefined_si512 (),
+						     (__mmask16) -1,
+						     _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvttps_epi32 (__m512i __W, __mmask16 __U, __m512 __A)
+{
+  return (__m512i) __builtin_ia32_cvttps2dq512_mask ((__v16sf) __A,
+						     (__v16si) __W,
+						     (__mmask16) __U,
+						     _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_cvttps_epi32 (__mmask16 __U, __m512 __A)
+{
+  return (__m512i) __builtin_ia32_cvttps2dq512_mask ((__v16sf) __A,
+						     (__v16si)
+						     _mm512_setzero_si512 (),
+						     (__mmask16) __U,
+						     _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cvttps_epu32 (__m512 __A)
+{
+  return (__m512i) __builtin_ia32_cvttps2udq512_mask ((__v16sf) __A,
+						      (__v16si)
+						      _mm512_undefined_si512 (),
+						      (__mmask16) -1,
+						      _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvttps_epu32 (__m512i __W, __mmask16 __U, __m512 __A)
+{
+  return (__m512i) __builtin_ia32_cvttps2udq512_mask ((__v16sf) __A,
+						      (__v16si) __W,
+						      (__mmask16) __U,
+						      _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_cvttps_epu32 (__mmask16 __U, __m512 __A)
+{
+  return (__m512i) __builtin_ia32_cvttps2udq512_mask ((__v16sf) __A,
+						      (__v16si)
+						      _mm512_setzero_si512 (),
+						      (__mmask16) __U,
+						      _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cvtps_epi32 (__m512 __A)
+{
+  return (__m512i) __builtin_ia32_cvtps2dq512_mask ((__v16sf) __A,
+						    (__v16si)
+						    _mm512_undefined_si512 (),
+						    (__mmask16) -1,
+						    _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvtps_epi32 (__m512i __W, __mmask16 __U, __m512 __A)
+{
+  return (__m512i) __builtin_ia32_cvtps2dq512_mask ((__v16sf) __A,
+						    (__v16si) __W,
+						    (__mmask16) __U,
+						    _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_cvtps_epi32 (__mmask16 __U, __m512 __A)
+{
+  return (__m512i) __builtin_ia32_cvtps2dq512_mask ((__v16sf) __A,
+						    (__v16si)
+						    _mm512_setzero_si512 (),
+						    (__mmask16) __U,
+						    _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cvtps_epu32 (__m512 __A)
+{
+  return (__m512i) __builtin_ia32_cvtps2udq512_mask ((__v16sf) __A,
+						     (__v16si)
+						     _mm512_undefined_si512 (),
+						     (__mmask16) -1,
+						     _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvtps_epu32 (__m512i __W, __mmask16 __U, __m512 __A)
+{
+  return (__m512i) __builtin_ia32_cvtps2udq512_mask ((__v16sf) __A,
+						     (__v16si) __W,
+						     (__mmask16) __U,
+						     _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_cvtps_epu32 (__mmask16 __U, __m512 __A)
+{
+  return (__m512i) __builtin_ia32_cvtps2udq512_mask ((__v16sf) __A,
+						     (__v16si)
+						     _mm512_setzero_si512 (),
+						     (__mmask16) __U,
+						     _MM_FROUND_CUR_DIRECTION);
+}
+
+#ifdef __x86_64__
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtu64_ss (__m128 __A, unsigned long long __B)
+{
+  return (__m128) __builtin_ia32_cvtusi2ss64 ((__v4sf) __A, __B,
+					      _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtu64_sd (__m128d __A, unsigned long long __B)
+{
+  return (__m128d) __builtin_ia32_cvtusi2sd64 ((__v2df) __A, __B,
+					       _MM_FROUND_CUR_DIRECTION);
+}
+#endif
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtu32_ss (__m128 __A, unsigned __B)
+{
+  return (__m128) __builtin_ia32_cvtusi2ss32 ((__v4sf) __A, __B,
+					      _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cvtepi32_ps (__m512i __A)
+{
+  return (__m512) __builtin_ia32_cvtdq2ps512_mask ((__v16si) __A,
+						   (__v16sf)
+						   _mm512_undefined_ps (),
+						   (__mmask16) -1,
+						   _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvtepi32_ps (__m512 __W, __mmask16 __U, __m512i __A)
+{
+  return (__m512) __builtin_ia32_cvtdq2ps512_mask ((__v16si) __A,
+						   (__v16sf) __W,
+						   (__mmask16) __U,
+						   _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_cvtepi32_ps (__mmask16 __U, __m512i __A)
+{
+  return (__m512) __builtin_ia32_cvtdq2ps512_mask ((__v16si) __A,
+						   (__v16sf)
+						   _mm512_setzero_ps (),
+						   (__mmask16) __U,
+						   _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cvtepu32_ps (__m512i __A)
+{
+  return (__m512) __builtin_ia32_cvtudq2ps512_mask ((__v16si) __A,
+						    (__v16sf)
+						    _mm512_undefined_ps (),
+						    (__mmask16) -1,
+						    _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvtepu32_ps (__m512 __W, __mmask16 __U, __m512i __A)
+{
+  return (__m512) __builtin_ia32_cvtudq2ps512_mask ((__v16si) __A,
+						    (__v16sf) __W,
+						    (__mmask16) __U,
+						    _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_cvtepu32_ps (__mmask16 __U, __m512i __A)
+{
+  return (__m512) __builtin_ia32_cvtudq2ps512_mask ((__v16si) __A,
+						    (__v16sf)
+						    _mm512_setzero_ps (),
+						    (__mmask16) __U,
+						    _MM_FROUND_CUR_DIRECTION);
+}
+
+#ifdef __OPTIMIZE__
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_fixupimm_pd (__m512d __A, __m512d __B, __m512i __C, const int __imm)
+{
+  return (__m512d) __builtin_ia32_fixupimmpd512_mask ((__v8df) __A,
+						      (__v8df) __B,
+						      (__v8di) __C,
+						      __imm,
+						      (__mmask8) -1,
+						      _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_fixupimm_pd (__m512d __A, __mmask8 __U, __m512d __B,
+			 __m512i __C, const int __imm)
+{
+  return (__m512d) __builtin_ia32_fixupimmpd512_mask ((__v8df) __A,
+						      (__v8df) __B,
+						      (__v8di) __C,
+						      __imm,
+						      (__mmask8) __U,
+						      _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_fixupimm_pd (__mmask8 __U, __m512d __A, __m512d __B,
+			  __m512i __C, const int __imm)
+{
+  return (__m512d) __builtin_ia32_fixupimmpd512_maskz ((__v8df) __A,
+						       (__v8df) __B,
+						       (__v8di) __C,
+						       __imm,
+						       (__mmask8) __U,
+						       _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_fixupimm_ps (__m512 __A, __m512 __B, __m512i __C, const int __imm)
+{
+  return (__m512) __builtin_ia32_fixupimmps512_mask ((__v16sf) __A,
+						     (__v16sf) __B,
+						     (__v16si) __C,
+						     __imm,
+						     (__mmask16) -1,
+						     _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_fixupimm_ps (__m512 __A, __mmask16 __U, __m512 __B,
+			 __m512i __C, const int __imm)
+{
+  return (__m512) __builtin_ia32_fixupimmps512_mask ((__v16sf) __A,
+						     (__v16sf) __B,
+						     (__v16si) __C,
+						     __imm,
+						     (__mmask16) __U,
+						     _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_fixupimm_ps (__mmask16 __U, __m512 __A, __m512 __B,
+			  __m512i __C, const int __imm)
+{
+  return (__m512) __builtin_ia32_fixupimmps512_maskz ((__v16sf) __A,
+						      (__v16sf) __B,
+						      (__v16si) __C,
+						      __imm,
+						      (__mmask16) __U,
+						      _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_fixupimm_sd (__m128d __A, __m128d __B, __m128i __C, const int __imm)
+{
+  return (__m128d) __builtin_ia32_fixupimmsd_mask ((__v2df) __A,
+						   (__v2df) __B,
+						   (__v2di) __C, __imm,
+						   (__mmask8) -1,
+						   _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_fixupimm_sd (__m128d __A, __mmask8 __U, __m128d __B,
+		      __m128i __C, const int __imm)
+{
+  return (__m128d) __builtin_ia32_fixupimmsd_mask ((__v2df) __A,
+						   (__v2df) __B,
+						   (__v2di) __C, __imm,
+						   (__mmask8) __U,
+						   _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_fixupimm_sd (__mmask8 __U, __m128d __A, __m128d __B,
+		       __m128i __C, const int __imm)
+{
+  return (__m128d) __builtin_ia32_fixupimmsd_maskz ((__v2df) __A,
+						    (__v2df) __B,
+						    (__v2di) __C,
+						    __imm,
+						    (__mmask8) __U,
+						    _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_fixupimm_ss (__m128 __A, __m128 __B, __m128i __C, const int __imm)
+{
+  return (__m128) __builtin_ia32_fixupimmss_mask ((__v4sf) __A,
+						  (__v4sf) __B,
+						  (__v4si) __C, __imm,
+						  (__mmask8) -1,
+						  _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_fixupimm_ss (__m128 __A, __mmask8 __U, __m128 __B,
+		      __m128i __C, const int __imm)
+{
+  return (__m128) __builtin_ia32_fixupimmss_mask ((__v4sf) __A,
+						  (__v4sf) __B,
+						  (__v4si) __C, __imm,
+						  (__mmask8) __U,
+						  _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_fixupimm_ss (__mmask8 __U, __m128 __A, __m128 __B,
+		       __m128i __C, const int __imm)
+{
+  return (__m128) __builtin_ia32_fixupimmss_maskz ((__v4sf) __A,
+						   (__v4sf) __B,
+						   (__v4si) __C, __imm,
+						   (__mmask8) __U,
+						   _MM_FROUND_CUR_DIRECTION);
+}
+#else
+#define _mm512_fixupimm_pd(X, Y, Z, C)					\
+  ((__m512d)__builtin_ia32_fixupimmpd512_mask ((__v8df)(__m512d)(X),	\
+      (__v8df)(__m512d)(Y), (__v8di)(__m512i)(Z), (int)(C),		\
+      (__mmask8)(-1), _MM_FROUND_CUR_DIRECTION))
+
+#define _mm512_mask_fixupimm_pd(X, U, Y, Z, C)                          \
+  ((__m512d)__builtin_ia32_fixupimmpd512_mask ((__v8df)(__m512d)(X),    \
+      (__v8df)(__m512d)(Y), (__v8di)(__m512i)(Z), (int)(C),             \
+      (__mmask8)(U), _MM_FROUND_CUR_DIRECTION))
+
+#define _mm512_maskz_fixupimm_pd(U, X, Y, Z, C)                         \
+  ((__m512d)__builtin_ia32_fixupimmpd512_maskz ((__v8df)(__m512d)(X),   \
+      (__v8df)(__m512d)(Y), (__v8di)(__m512i)(Z), (int)(C),             \
+      (__mmask8)(U), _MM_FROUND_CUR_DIRECTION))
+
+#define _mm512_fixupimm_ps(X, Y, Z, C)					\
+  ((__m512)__builtin_ia32_fixupimmps512_mask ((__v16sf)(__m512)(X),	\
+    (__v16sf)(__m512)(Y), (__v16si)(__m512i)(Z), (int)(C),		\
+    (__mmask16)(-1), _MM_FROUND_CUR_DIRECTION))
+
+#define _mm512_mask_fixupimm_ps(X, U, Y, Z, C)                          \
+  ((__m512)__builtin_ia32_fixupimmps512_mask ((__v16sf)(__m512)(X),     \
+    (__v16sf)(__m512)(Y), (__v16si)(__m512i)(Z), (int)(C),              \
+    (__mmask16)(U), _MM_FROUND_CUR_DIRECTION))
+
+#define _mm512_maskz_fixupimm_ps(U, X, Y, Z, C)                         \
+  ((__m512)__builtin_ia32_fixupimmps512_maskz ((__v16sf)(__m512)(X),    \
+    (__v16sf)(__m512)(Y), (__v16si)(__m512i)(Z), (int)(C),              \
+    (__mmask16)(U), _MM_FROUND_CUR_DIRECTION))
+
+#define _mm_fixupimm_sd(X, Y, Z, C)					\
+    ((__m128d)__builtin_ia32_fixupimmsd_mask ((__v2df)(__m128d)(X),	\
+      (__v2df)(__m128d)(Y), (__v2di)(__m128i)(Z), (int)(C),		\
+      (__mmask8)(-1), _MM_FROUND_CUR_DIRECTION))
+
+#define _mm_mask_fixupimm_sd(X, U, Y, Z, C)				\
+    ((__m128d)__builtin_ia32_fixupimmsd_mask ((__v2df)(__m128d)(X),	\
+      (__v2df)(__m128d)(Y), (__v2di)(__m128i)(Z), (int)(C),		\
+      (__mmask8)(U), _MM_FROUND_CUR_DIRECTION))
+
+#define _mm_maskz_fixupimm_sd(U, X, Y, Z, C)				\
+    ((__m128d)__builtin_ia32_fixupimmsd_maskz ((__v2df)(__m128d)(X),	\
+      (__v2df)(__m128d)(Y), (__v2di)(__m128i)(Z), (int)(C),		\
+      (__mmask8)(U), _MM_FROUND_CUR_DIRECTION))
+
+#define _mm_fixupimm_ss(X, Y, Z, C)					\
+    ((__m128)__builtin_ia32_fixupimmss_mask ((__v4sf)(__m128)(X),	\
+      (__v4sf)(__m128)(Y), (__v4si)(__m128i)(Z), (int)(C),		\
+      (__mmask8)(-1), _MM_FROUND_CUR_DIRECTION))
+
+#define _mm_mask_fixupimm_ss(X, U, Y, Z, C)				\
+    ((__m128)__builtin_ia32_fixupimmss_mask ((__v4sf)(__m128)(X),	\
+      (__v4sf)(__m128)(Y), (__v4si)(__m128i)(Z), (int)(C),		\
+      (__mmask8)(U), _MM_FROUND_CUR_DIRECTION))
+
+#define _mm_maskz_fixupimm_ss(U, X, Y, Z, C)				\
+    ((__m128)__builtin_ia32_fixupimmss_maskz ((__v4sf)(__m128)(X),	\
+      (__v4sf)(__m128)(Y), (__v4si)(__m128i)(Z), (int)(C),		\
+      (__mmask8)(U), _MM_FROUND_CUR_DIRECTION))
+#endif
+
+#ifdef __x86_64__
+extern __inline unsigned long long
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtss_u64 (__m128 __A)
+{
+  return (unsigned long long) __builtin_ia32_vcvtss2usi64 ((__v4sf)
+							   __A,
+							   _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline unsigned long long
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvttss_u64 (__m128 __A)
+{
+  return (unsigned long long) __builtin_ia32_vcvttss2usi64 ((__v4sf)
+							    __A,
+							    _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline long long
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvttss_i64 (__m128 __A)
+{
+  return (long long) __builtin_ia32_vcvttss2si64 ((__v4sf) __A,
+						  _MM_FROUND_CUR_DIRECTION);
+}
+#endif /* __x86_64__ */
+
+extern __inline unsigned
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtss_u32 (__m128 __A)
+{
+  return (unsigned) __builtin_ia32_vcvtss2usi32 ((__v4sf) __A,
+						 _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline unsigned
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvttss_u32 (__m128 __A)
+{
+  return (unsigned) __builtin_ia32_vcvttss2usi32 ((__v4sf) __A,
+						  _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline int
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvttss_i32 (__m128 __A)
+{
+  return (int) __builtin_ia32_vcvttss2si32 ((__v4sf) __A,
+					    _MM_FROUND_CUR_DIRECTION);
+}
+
+#ifdef __x86_64__
+extern __inline unsigned long long
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtsd_u64 (__m128d __A)
+{
+  return (unsigned long long) __builtin_ia32_vcvtsd2usi64 ((__v2df)
+							   __A,
+							   _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline unsigned long long
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvttsd_u64 (__m128d __A)
+{
+  return (unsigned long long) __builtin_ia32_vcvttsd2usi64 ((__v2df)
+							    __A,
+							    _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline long long
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvttsd_i64 (__m128d __A)
+{
+  return (long long) __builtin_ia32_vcvttsd2si64 ((__v2df) __A,
+						  _MM_FROUND_CUR_DIRECTION);
+}
+#endif /* __x86_64__ */
+
+extern __inline unsigned
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtsd_u32 (__m128d __A)
+{
+  return (unsigned) __builtin_ia32_vcvtsd2usi32 ((__v2df) __A,
+						 _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline unsigned
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvttsd_u32 (__m128d __A)
+{
+  return (unsigned) __builtin_ia32_vcvttsd2usi32 ((__v2df) __A,
+						  _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline int
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvttsd_i32 (__m128d __A)
+{
+  return (int) __builtin_ia32_vcvttsd2si32 ((__v2df) __A,
+					    _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cvtps_pd (__m256 __A)
+{
+  return (__m512d) __builtin_ia32_cvtps2pd512_mask ((__v8sf) __A,
+						    (__v8df)
+						    _mm512_undefined_pd (),
+						    (__mmask8) -1,
+						    _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvtps_pd (__m512d __W, __mmask8 __U, __m256 __A)
+{
+  return (__m512d) __builtin_ia32_cvtps2pd512_mask ((__v8sf) __A,
+						    (__v8df) __W,
+						    (__mmask8) __U,
+						    _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_cvtps_pd (__mmask8 __U, __m256 __A)
+{
+  return (__m512d) __builtin_ia32_cvtps2pd512_mask ((__v8sf) __A,
+						    (__v8df)
+						    _mm512_setzero_pd (),
+						    (__mmask8) __U,
+						    _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cvtph_ps (__m256i __A)
+{
+  return (__m512) __builtin_ia32_vcvtph2ps512_mask ((__v16hi) __A,
+						    (__v16sf)
+						    _mm512_undefined_ps (),
+						    (__mmask16) -1,
+						    _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvtph_ps (__m512 __W, __mmask16 __U, __m256i __A)
+{
+  return (__m512) __builtin_ia32_vcvtph2ps512_mask ((__v16hi) __A,
+						    (__v16sf) __W,
+						    (__mmask16) __U,
+						    _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_cvtph_ps (__mmask16 __U, __m256i __A)
+{
+  return (__m512) __builtin_ia32_vcvtph2ps512_mask ((__v16hi) __A,
+						    (__v16sf)
+						    _mm512_setzero_ps (),
+						    (__mmask16) __U,
+						    _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cvtpd_ps (__m512d __A)
+{
+  return (__m256) __builtin_ia32_cvtpd2ps512_mask ((__v8df) __A,
+						   (__v8sf)
+						   _mm256_undefined_ps (),
+						   (__mmask8) -1,
+						   _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cvtpd_ps (__m256 __W, __mmask8 __U, __m512d __A)
+{
+  return (__m256) __builtin_ia32_cvtpd2ps512_mask ((__v8df) __A,
+						   (__v8sf) __W,
+						   (__mmask8) __U,
+						   _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_cvtpd_ps (__mmask8 __U, __m512d __A)
+{
+  return (__m256) __builtin_ia32_cvtpd2ps512_mask ((__v8df) __A,
+						   (__v8sf)
+						   _mm256_setzero_ps (),
+						   (__mmask8) __U,
+						   _MM_FROUND_CUR_DIRECTION);
+}
+
+#ifdef __OPTIMIZE__
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_getexp_ps (__m512 __A)
+{
+  return (__m512) __builtin_ia32_getexpps512_mask ((__v16sf) __A,
+						   (__v16sf)
+						   _mm512_undefined_ps (),
+						   (__mmask16) -1,
+						   _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_getexp_ps (__m512 __W, __mmask16 __U, __m512 __A)
+{
+  return (__m512) __builtin_ia32_getexpps512_mask ((__v16sf) __A,
+						   (__v16sf) __W,
+						   (__mmask16) __U,
+						   _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_getexp_ps (__mmask16 __U, __m512 __A)
+{
+  return (__m512) __builtin_ia32_getexpps512_mask ((__v16sf) __A,
+						   (__v16sf)
+						   _mm512_setzero_ps (),
+						   (__mmask16) __U,
+						   _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_getexp_pd (__m512d __A)
+{
+  return (__m512d) __builtin_ia32_getexppd512_mask ((__v8df) __A,
+						    (__v8df)
+						    _mm512_undefined_pd (),
+						    (__mmask8) -1,
+						    _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_getexp_pd (__m512d __W, __mmask8 __U, __m512d __A)
+{
+  return (__m512d) __builtin_ia32_getexppd512_mask ((__v8df) __A,
+						    (__v8df) __W,
+						    (__mmask8) __U,
+						    _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_getexp_pd (__mmask8 __U, __m512d __A)
+{
+  return (__m512d) __builtin_ia32_getexppd512_mask ((__v8df) __A,
+						    (__v8df)
+						    _mm512_setzero_pd (),
+						    (__mmask8) __U,
+						    _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_getexp_ss (__m128 __A, __m128 __B)
+{
+  return (__m128) __builtin_ia32_getexpss128_round ((__v4sf) __A,
+						    (__v4sf) __B,
+						    _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_getexp_sd (__m128d __A, __m128d __B)
+{
+  return (__m128d) __builtin_ia32_getexpsd128_round ((__v2df) __A,
+						     (__v2df) __B,
+						     _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_getmant_pd (__m512d __A, _MM_MANTISSA_NORM_ENUM __B,
+		   _MM_MANTISSA_SIGN_ENUM __C)
+{
+  return (__m512d) __builtin_ia32_getmantpd512_mask ((__v8df) __A,
+						     (__C << 2) | __B,
+						     _mm512_undefined_pd (),
+						     (__mmask8) -1,
+						     _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_getmant_pd (__m512d __W, __mmask8 __U, __m512d __A,
+			_MM_MANTISSA_NORM_ENUM __B, _MM_MANTISSA_SIGN_ENUM __C)
+{
+  return (__m512d) __builtin_ia32_getmantpd512_mask ((__v8df) __A,
+						     (__C << 2) | __B,
+						     (__v8df) __W, __U,
+						     _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_getmant_pd (__mmask8 __U, __m512d __A,
+			 _MM_MANTISSA_NORM_ENUM __B, _MM_MANTISSA_SIGN_ENUM __C)
+{
+  return (__m512d) __builtin_ia32_getmantpd512_mask ((__v8df) __A,
+						     (__C << 2) | __B,
+						     (__v8df)
+						     _mm512_setzero_pd (),
+						     __U,
+						     _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_getmant_ps (__m512 __A, _MM_MANTISSA_NORM_ENUM __B,
+		   _MM_MANTISSA_SIGN_ENUM __C)
+{
+  return (__m512) __builtin_ia32_getmantps512_mask ((__v16sf) __A,
+						    (__C << 2) | __B,
+						    _mm512_undefined_ps (),
+						    (__mmask16) -1,
+						    _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_getmant_ps (__m512 __W, __mmask16 __U, __m512 __A,
+			_MM_MANTISSA_NORM_ENUM __B, _MM_MANTISSA_SIGN_ENUM __C)
+{
+  return (__m512) __builtin_ia32_getmantps512_mask ((__v16sf) __A,
+						    (__C << 2) | __B,
+						    (__v16sf) __W, __U,
+						    _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_getmant_ps (__mmask16 __U, __m512 __A,
+			 _MM_MANTISSA_NORM_ENUM __B, _MM_MANTISSA_SIGN_ENUM __C)
+{
+  return (__m512) __builtin_ia32_getmantps512_mask ((__v16sf) __A,
+						    (__C << 2) | __B,
+						    (__v16sf)
+						    _mm512_setzero_ps (),
+						    __U,
+						    _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_getmant_sd (__m128d __A, __m128d __B, _MM_MANTISSA_NORM_ENUM __C,
+		_MM_MANTISSA_SIGN_ENUM __D)
+{
+  return (__m128d) __builtin_ia32_getmantsd_round ((__v2df) __A,
+						   (__v2df) __B,
+						   (__D << 2) | __C,
+						   _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_getmant_ss (__m128 __A, __m128 __B, _MM_MANTISSA_NORM_ENUM __C,
+		_MM_MANTISSA_SIGN_ENUM __D)
+{
+  return (__m128) __builtin_ia32_getmantss_round ((__v4sf) __A,
+						  (__v4sf) __B,
+						  (__D << 2) | __C,
+						  _MM_FROUND_CUR_DIRECTION);
+}
+
+#else
+#define _mm512_getmant_pd(X, B, C)                                                  \
+  ((__m512d)__builtin_ia32_getmantpd512_mask ((__v8df)(__m512d)(X),                 \
+                                              (int)(((C)<<2) | (B)),                \
+                                              (__v8df)_mm512_undefined_pd(),        \
+                                              (__mmask8)-1,\
+					      _MM_FROUND_CUR_DIRECTION))
+
+#define _mm512_mask_getmant_pd(W, U, X, B, C)                                       \
+  ((__m512d)__builtin_ia32_getmantpd512_mask ((__v8df)(__m512d)(X),                 \
+                                              (int)(((C)<<2) | (B)),                \
+                                              (__v8df)(__m512d)(W),                 \
+                                              (__mmask8)(U),\
+					      _MM_FROUND_CUR_DIRECTION))
+
+#define _mm512_maskz_getmant_pd(U, X, B, C)                                         \
+  ((__m512d)__builtin_ia32_getmantpd512_mask ((__v8df)(__m512d)(X),                 \
+                                              (int)(((C)<<2) | (B)),                \
+                                              (__v8df)_mm512_setzero_pd(),          \
+                                              (__mmask8)(U),\
+					      _MM_FROUND_CUR_DIRECTION))
+#define _mm512_getmant_ps(X, B, C)                                                  \
+  ((__m512)__builtin_ia32_getmantps512_mask ((__v16sf)(__m512)(X),                  \
+                                             (int)(((C)<<2) | (B)),                 \
+                                             (__v16sf)_mm512_undefined_ps(),        \
+                                             (__mmask16)-1,\
+					     _MM_FROUND_CUR_DIRECTION))
+
+#define _mm512_mask_getmant_ps(W, U, X, B, C)                                       \
+  ((__m512)__builtin_ia32_getmantps512_mask ((__v16sf)(__m512)(X),                  \
+                                             (int)(((C)<<2) | (B)),                 \
+                                             (__v16sf)(__m512)(W),                  \
+                                             (__mmask16)(U),\
+					     _MM_FROUND_CUR_DIRECTION))
+
+#define _mm512_maskz_getmant_ps(U, X, B, C)                                         \
+  ((__m512)__builtin_ia32_getmantps512_mask ((__v16sf)(__m512)(X),                  \
+                                             (int)(((C)<<2) | (B)),                 \
+                                             (__v16sf)_mm512_setzero_ps(),          \
+                                             (__mmask16)(U),\
+					     _MM_FROUND_CUR_DIRECTION))
+#define _mm_getmant_sd(X, Y, C, D)                                                  \
+  ((__m128d)__builtin_ia32_getmantsd_round ((__v2df)(__m128d)(X),                    \
+                                           (__v2df)(__m128d)(Y),                    \
+                                           (int)(((D)<<2) | (C)),                   \
+					   _MM_FROUND_CUR_DIRECTION))
+
+#define _mm_getmant_ss(X, Y, C, D)                                                  \
+  ((__m128)__builtin_ia32_getmantss_round ((__v4sf)(__m128)(X),                      \
+                                          (__v4sf)(__m128)(Y),                      \
+                                          (int)(((D)<<2) | (C)),                    \
+					  _MM_FROUND_CUR_DIRECTION))
+
+#define _mm_getexp_ss(A, B)						      \
+  ((__m128)__builtin_ia32_getexpss128_mask((__v4sf)(__m128)(A), (__v4sf)(__m128)(B),  \
+					   _MM_FROUND_CUR_DIRECTION))
+
+#define _mm_getexp_sd(A, B)						       \
+  ((__m128d)__builtin_ia32_getexpsd128_mask((__v2df)(__m128d)(A), (__v2df)(__m128d)(B),\
+					    _MM_FROUND_CUR_DIRECTION))
+
+#define _mm512_getexp_ps(A)						\
+  ((__m512)__builtin_ia32_getexpps512_mask((__v16sf)(__m512)(A),		\
+  (__v16sf)_mm512_undefined_ps(), (__mmask16)-1, _MM_FROUND_CUR_DIRECTION))
+
+#define _mm512_mask_getexp_ps(W, U, A)					\
+  ((__m512)__builtin_ia32_getexpps512_mask((__v16sf)(__m512)(A),		\
+  (__v16sf)(__m512)(W), (__mmask16)(U), _MM_FROUND_CUR_DIRECTION))
+
+#define _mm512_maskz_getexp_ps(U, A)					\
+  ((__m512)__builtin_ia32_getexpps512_mask((__v16sf)(__m512)(A),		\
+  (__v16sf)_mm512_setzero_ps(), (__mmask16)(U), _MM_FROUND_CUR_DIRECTION))
+
+#define _mm512_getexp_pd(A)						\
+  ((__m512d)__builtin_ia32_getexppd512_mask((__v8df)(__m512d)(A),		\
+  (__v8df)_mm512_undefined_pd(), (__mmask8)-1, _MM_FROUND_CUR_DIRECTION))
+
+#define _mm512_mask_getexp_pd(W, U, A)					\
+  ((__m512d)__builtin_ia32_getexppd512_mask((__v8df)(__m512d)(A),		\
+  (__v8df)(__m512d)(W), (__mmask8)(U), _MM_FROUND_CUR_DIRECTION))
+
+#define _mm512_maskz_getexp_pd(U, A)					\
+  ((__m512d)__builtin_ia32_getexppd512_mask((__v8df)(__m512d)(A),		\
+  (__v8df)_mm512_setzero_pd(), (__mmask8)(U), _MM_FROUND_CUR_DIRECTION))
+#endif
+
+#ifdef __OPTIMIZE__
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_roundscale_ps (__m512 __A, const int __imm)
+{
+  return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A, __imm,
+						  (__v16sf)
+						  _mm512_undefined_ps (),
+						  -1,
+						  _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_roundscale_ps (__m512 __A, __mmask16 __B, __m512 __C,
+			   const int __imm)
+{
+  return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __C, __imm,
+						  (__v16sf) __A,
+						  (__mmask16) __B,
+						  _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_roundscale_ps (__mmask16 __A, __m512 __B, const int __imm)
+{
+  return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __B,
+						  __imm,
+						  (__v16sf)
+						  _mm512_setzero_ps (),
+						  (__mmask16) __A,
+						  _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_roundscale_pd (__m512d __A, const int __imm)
+{
+  return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A, __imm,
+						   (__v8df)
+						   _mm512_undefined_pd (),
+						   -1,
+						   _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_roundscale_pd (__m512d __A, __mmask8 __B, __m512d __C,
+			   const int __imm)
+{
+  return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __C, __imm,
+						   (__v8df) __A,
+						   (__mmask8) __B,
+						   _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_roundscale_pd (__mmask8 __A, __m512d __B, const int __imm)
+{
+  return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __B,
+						   __imm,
+						   (__v8df)
+						   _mm512_setzero_pd (),
+						   (__mmask8) __A,
+						   _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_roundscale_ss (__m128 __A, __m128 __B, const int __imm)
+{
+  return (__m128) __builtin_ia32_rndscaless_round ((__v4sf) __A,
+						   (__v4sf) __B, __imm,
+						   _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_roundscale_sd (__m128d __A, __m128d __B, const int __imm)
+{
+  return (__m128d) __builtin_ia32_rndscalesd_round ((__v2df) __A,
+						    (__v2df) __B, __imm,
+						   _MM_FROUND_CUR_DIRECTION);
+}
+
+#else
+#define _mm512_roundscale_ps(A, B) \
+  ((__m512) __builtin_ia32_rndscaleps_mask ((__v16sf)(__m512)(A), (int)(B),\
+    (__v16sf)_mm512_undefined_ps(), (__mmask16)(-1), _MM_FROUND_CUR_DIRECTION))
+#define _mm512_mask_roundscale_ps(A, B, C, D)				\
+  ((__m512) __builtin_ia32_rndscaleps_mask ((__v16sf)(__m512)(C),	\
+					    (int)(D),			\
+					    (__v16sf)(__m512)(A),	\
+					    (__mmask16)(B), _MM_FROUND_CUR_DIRECTION))
+#define _mm512_maskz_roundscale_ps(A, B, C)				\
+  ((__m512) __builtin_ia32_rndscaleps_mask ((__v16sf)(__m512)(B),	\
+					    (int)(C),			\
+					    (__v16sf)_mm512_setzero_ps(),\
+					    (__mmask16)(A), _MM_FROUND_CUR_DIRECTION))
+#define _mm512_roundscale_pd(A, B) \
+  ((__m512d) __builtin_ia32_rndscalepd_mask ((__v8df)(__m512d)(A), (int)(B),\
+    (__v8df)_mm512_undefined_pd(), (__mmask8)(-1), _MM_FROUND_CUR_DIRECTION))
+#define _mm512_mask_roundscale_pd(A, B, C, D)				\
+  ((__m512d) __builtin_ia32_rndscalepd_mask ((__v8df)(__m512d)(C),	\
+					     (int)(D),			\
+					     (__v8df)(__m512d)(A),	\
+					     (__mmask8)(B), _MM_FROUND_CUR_DIRECTION))
+#define _mm512_maskz_roundscale_pd(A, B, C)				\
+  ((__m512d) __builtin_ia32_rndscalepd_mask ((__v8df)(__m512d)(B),	\
+					     (int)(C),			\
+					     (__v8df)_mm512_setzero_pd(),\
+					     (__mmask8)(A), _MM_FROUND_CUR_DIRECTION))
+#define _mm_roundscale_ss(A, B, C)					\
+  ((__m128) __builtin_ia32_rndscaless_round ((__v4sf)(__m128)(A),	\
+  (__v4sf)(__m128)(B), (int)(C), _MM_FROUND_CUR_DIRECTION))
+#define _mm_roundscale_sd(A, B, C)					\
+  ((__m128d) __builtin_ia32_rndscalesd_round ((__v2df)(__m128d)(A),	\
+    (__v2df)(__m128d)(B), (int)(C), _MM_FROUND_CUR_DIRECTION))
+#endif
+
+#ifdef __OPTIMIZE__
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cmp_pd_mask (__m512d __X, __m512d __Y, const int __P)
+{
+  return (__mmask8) __builtin_ia32_cmppd512_mask ((__v8df) __X,
+						  (__v8df) __Y, __P,
+						  (__mmask8) -1,
+						  _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cmp_ps_mask (__m512 __X, __m512 __Y, const int __P)
+{
+  return (__mmask16) __builtin_ia32_cmpps512_mask ((__v16sf) __X,
+						   (__v16sf) __Y, __P,
+						   (__mmask16) -1,
+						   _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cmp_ps_mask (__mmask16 __U, __m512 __X, __m512 __Y, const int __P)
+{
+  return (__mmask16) __builtin_ia32_cmpps512_mask ((__v16sf) __X,
+						   (__v16sf) __Y, __P,
+						   (__mmask16) __U,
+						   _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cmp_pd_mask (__mmask8 __U, __m512d __X, __m512d __Y, const int __P)
+{
+  return (__mmask8) __builtin_ia32_cmppd512_mask ((__v8df) __X,
+						  (__v8df) __Y, __P,
+						  (__mmask8) __U,
+						  _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmp_sd_mask (__m128d __X, __m128d __Y, const int __P)
+{
+  return (__mmask8) __builtin_ia32_cmpsd_mask ((__v2df) __X,
+					       (__v2df) __Y, __P,
+					       (__mmask8) -1,
+					       _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cmp_sd_mask (__mmask8 __M, __m128d __X, __m128d __Y, const int __P)
+{
+  return (__mmask8) __builtin_ia32_cmpsd_mask ((__v2df) __X,
+					       (__v2df) __Y, __P,
+					       (__mmask8) __M,
+					       _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmp_ss_mask (__m128 __X, __m128 __Y, const int __P)
+{
+  return (__mmask8) __builtin_ia32_cmpss_mask ((__v4sf) __X,
+					       (__v4sf) __Y, __P,
+					       (__mmask8) -1,
+					       _MM_FROUND_CUR_DIRECTION);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cmp_ss_mask (__mmask8 __M, __m128 __X, __m128 __Y, const int __P)
+{
+  return (__mmask8) __builtin_ia32_cmpss_mask ((__v4sf) __X,
+					       (__v4sf) __Y, __P,
+					       (__mmask8) __M,
+					       _MM_FROUND_CUR_DIRECTION);
+}
+
+#else
+#define _mm512_cmp_pd_mask(X, Y, P)					\
+  ((__mmask8) __builtin_ia32_cmppd512_mask ((__v8df)(__m512d)(X),	\
+					    (__v8df)(__m512d)(Y), (int)(P),\
+					    (__mmask8)-1,_MM_FROUND_CUR_DIRECTION))
+
+#define _mm512_cmp_ps_mask(X, Y, P)					\
+  ((__mmask16) __builtin_ia32_cmpps512_mask ((__v16sf)(__m512)(X),	\
+					     (__v16sf)(__m512)(Y), (int)(P),\
+					     (__mmask16)-1,_MM_FROUND_CUR_DIRECTION))
+
+#define _mm512_mask_cmp_pd_mask(M, X, Y, P)					\
+  ((__mmask8) __builtin_ia32_cmppd512_mask ((__v8df)(__m512d)(X),	\
+					    (__v8df)(__m512d)(Y), (int)(P),\
+					    (__mmask8)M, _MM_FROUND_CUR_DIRECTION))
+
+#define _mm512_mask_cmp_ps_mask(M, X, Y, P)					\
+  ((__mmask16) __builtin_ia32_cmpps512_mask ((__v16sf)(__m512)(X),	\
+					     (__v16sf)(__m512)(Y), (int)(P),\
+					     (__mmask16)M,_MM_FROUND_CUR_DIRECTION))
+
+#define _mm_cmp_sd_mask(X, Y, P)					\
+  ((__mmask8) __builtin_ia32_cmpsd_mask ((__v2df)(__m128d)(X),		\
+					 (__v2df)(__m128d)(Y), (int)(P),\
+					 (__mmask8)-1,_MM_FROUND_CUR_DIRECTION))
+
+#define _mm_mask_cmp_sd_mask(M, X, Y, P)					\
+  ((__mmask8) __builtin_ia32_cmpsd_mask ((__v2df)(__m128d)(X),		\
+					 (__v2df)(__m128d)(Y), (int)(P),\
+					 M,_MM_FROUND_CUR_DIRECTION))
+
+#define _mm_cmp_ss_mask(X, Y, P)					\
+  ((__mmask8) __builtin_ia32_cmpss_mask ((__v4sf)(__m128)(X),		\
+					 (__v4sf)(__m128)(Y), (int)(P), \
+					 (__mmask8)-1,_MM_FROUND_CUR_DIRECTION))
+
+#define _mm_mask_cmp_ss_mask(M, X, Y, P)					\
+  ((__mmask8) __builtin_ia32_cmpss_mask ((__v4sf)(__m128)(X),		\
+					 (__v4sf)(__m128)(Y), (int)(P), \
+					 M,_MM_FROUND_CUR_DIRECTION))
+#endif
+
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_kmov (__mmask16 __A)
+{
+  return __builtin_ia32_kmov16 (__A);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_castpd_ps (__m512d __A)
+{
+  return (__m512) (__A);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_castpd_si512 (__m512d __A)
+{
+  return (__m512i) (__A);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_castps_pd (__m512 __A)
+{
+  return (__m512d) (__A);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_castps_si512 (__m512 __A)
+{
+  return (__m512i) (__A);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_castsi512_ps (__m512i __A)
+{
+  return (__m512) (__A);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_castsi512_pd (__m512i __A)
+{
+  return (__m512d) (__A);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_castpd512_pd128 (__m512d __A)
+{
+  return (__m128d)_mm512_extractf32x4_ps((__m512)__A, 0);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_castps512_ps128 (__m512 __A)
+{
+  return _mm512_extractf32x4_ps(__A, 0);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_castsi512_si128 (__m512i __A)
+{
+  return (__m128i)_mm512_extracti32x4_epi32((__m512i)__A, 0);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_castpd512_pd256 (__m512d __A)
+{
+  return _mm512_extractf64x4_pd(__A, 0);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_castps512_ps256 (__m512 __A)
+{
+  return (__m256)_mm512_extractf64x4_pd((__m512d)__A, 0);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_castsi512_si256 (__m512i __A)
+{
+  return (__m256i)_mm512_extractf64x4_pd((__m512d)__A, 0);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_castpd128_pd512 (__m128d __A)
+{
+  return (__m512d) __builtin_ia32_pd512_pd((__m128d)__A);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_castps128_ps512 (__m128 __A)
+{
+  return (__m512) __builtin_ia32_ps512_ps((__m128)__A);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_castsi128_si512 (__m128i __A)
+{
+  return (__m512i) __builtin_ia32_si512_si((__v4si)__A);
+}
+
+extern __inline __m512d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_castpd256_pd512 (__m256d __A)
+{
+  return __builtin_ia32_pd512_256pd (__A);
+}
+
+extern __inline __m512
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_castps256_ps512 (__m256 __A)
+{
+  return __builtin_ia32_ps512_256ps (__A);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_castsi256_si512 (__m256i __A)
+{
+  return (__m512i)__builtin_ia32_si512_256si ((__v8si)__A);
+}
+
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cmpeq_epu32_mask (__m512i __A, __m512i __B)
+{
+  return (__mmask16) __builtin_ia32_ucmpd512_mask ((__v16si) __A,
+						     (__v16si) __B, 0,
+						     (__mmask16) -1);
+}
+
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cmpeq_epu32_mask (__mmask16 __U, __m512i __A, __m512i __B)
+{
+  return (__mmask16) __builtin_ia32_ucmpd512_mask ((__v16si) __A,
+						     (__v16si) __B, 0, __U);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cmpeq_epu64_mask (__mmask8 __U, __m512i __A, __m512i __B)
+{
+  return (__mmask8) __builtin_ia32_ucmpq512_mask ((__v8di) __A,
+						    (__v8di) __B, 0, __U);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cmpeq_epu64_mask (__m512i __A, __m512i __B)
+{
+  return (__mmask8) __builtin_ia32_ucmpq512_mask ((__v8di) __A,
+						    (__v8di) __B, 0,
+						    (__mmask8) -1);
+}
+
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cmpgt_epu32_mask (__m512i __A, __m512i __B)
+{
+  return (__mmask16) __builtin_ia32_ucmpd512_mask ((__v16si) __A,
+						     (__v16si) __B, 6,
+						     (__mmask16) -1);
+}
+
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cmpgt_epu32_mask (__mmask16 __U, __m512i __A, __m512i __B)
+{
+  return (__mmask16) __builtin_ia32_ucmpd512_mask ((__v16si) __A,
+						     (__v16si) __B, 6,  __U);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_cmpgt_epu64_mask (__mmask8 __U, __m512i __A, __m512i __B)
+{
+  return (__mmask8) __builtin_ia32_ucmpq512_mask ((__v8di) __A,
+						    (__v8di) __B, 6, __U);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_cmpgt_epu64_mask (__m512i __A, __m512i __B)
+{
+  return (__mmask8) __builtin_ia32_ucmpq512_mask ((__v8di) __A,
+						    (__v8di) __B, 6,
+						    (__mmask8) -1);
+}
+
+#ifdef __DISABLE_AVX512F__
+#undef __DISABLE_AVX512F__
+#pragma GCC pop_options
+#endif /* __DISABLE_AVX512F__ */
+
+#endif /* _AVX512FINTRIN_H_INCLUDED */
Index: Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/avx512ifmaintrin.h
===================================================================
--- Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/avx512ifmaintrin.h	(revision 1046)
+++ Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/avx512ifmaintrin.h	(revision 1046)
@@ -0,0 +1,104 @@
+/* Copyright (C) 2013-2015 Free Software Foundation, Inc.
+
+   This file is part of GCC.
+
+   GCC is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
+
+   GCC is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   Under Section 7 of GPL version 3, you are granted additional
+   permissions described in the GCC Runtime Library Exception, version
+   3.1, as published by the Free Software Foundation.
+
+   You should have received a copy of the GNU General Public License and
+   a copy of the GCC Runtime Library Exception along with this program;
+   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _IMMINTRIN_H_INCLUDED
+#error "Never use <avx512ifmaintrin.h> directly; include <immintrin.h> instead."
+#endif
+
+#ifndef _AVX512IFMAINTRIN_H_INCLUDED
+#define _AVX512IFMAINTRIN_H_INCLUDED
+
+#ifndef __AVX512IFMA__
+#pragma GCC push_options
+#pragma GCC target("avx512ifma")
+#define __DISABLE_AVX512IFMA__
+#endif /* __AVX512IFMA__ */
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_madd52lo_epu64 (__m512i __X, __m512i __Y, __m512i __Z)
+{
+  return (__m512i) __builtin_ia32_vpmadd52luq512_mask ((__v8di) __X,
+						       (__v8di) __Y,
+						       (__v8di) __Z,
+						       (__mmask8) - 1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_madd52hi_epu64 (__m512i __X, __m512i __Y, __m512i __Z)
+{
+  return (__m512i) __builtin_ia32_vpmadd52huq512_mask ((__v8di) __X,
+						       (__v8di) __Y,
+						       (__v8di) __Z,
+						       (__mmask8) - 1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_madd52lo_epu64 (__m512i __W, __mmask8 __M, __m512i __X,
+			    __m512i __Y)
+{
+  return (__m512i) __builtin_ia32_vpmadd52luq512_mask ((__v8di) __W,
+						       (__v8di) __X,
+						       (__v8di) __Y,
+						       (__mmask8) __M);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_madd52hi_epu64 (__m512i __W, __mmask8 __M, __m512i __X,
+			    __m512i __Y)
+{
+  return (__m512i) __builtin_ia32_vpmadd52huq512_mask ((__v8di) __W,
+						       (__v8di) __X,
+						       (__v8di) __Y,
+						       (__mmask8) __M);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_madd52lo_epu64 (__mmask8 __M, __m512i __X, __m512i __Y, __m512i __Z)
+{
+  return (__m512i) __builtin_ia32_vpmadd52luq512_maskz ((__v8di) __X,
+							(__v8di) __Y,
+							(__v8di) __Z,
+							(__mmask8) __M);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_madd52hi_epu64 (__mmask8 __M, __m512i __X, __m512i __Y, __m512i __Z)
+{
+  return (__m512i) __builtin_ia32_vpmadd52huq512_maskz ((__v8di) __X,
+							(__v8di) __Y,
+							(__v8di) __Z,
+							(__mmask8) __M);
+}
+
+#ifdef __DISABLE_AVX512IFMA__
+#undef __DISABLE_AVX512IFMA__
+#pragma GCC pop_options
+#endif /* __DISABLE_AVX512IFMA__ */
+
+#endif /* _AVX512IFMAINTRIN_H_INCLUDED */
Index: Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/avx512ifmavlintrin.h
===================================================================
--- Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/avx512ifmavlintrin.h	(revision 1046)
+++ Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/avx512ifmavlintrin.h	(revision 1046)
@@ -0,0 +1,164 @@
+/* Copyright (C) 2013-2015 Free Software Foundation, Inc.
+
+   This file is part of GCC.
+
+   GCC is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
+
+   GCC is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   Under Section 7 of GPL version 3, you are granted additional
+   permissions described in the GCC Runtime Library Exception, version
+   3.1, as published by the Free Software Foundation.
+
+   You should have received a copy of the GNU General Public License and
+   a copy of the GCC Runtime Library Exception along with this program;
+   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _IMMINTRIN_H_INCLUDED
+#error "Never use <avx512ifmavlintrin.h> directly; include <immintrin.h> instead."
+#endif
+
+#ifndef _AVX512IFMAVLINTRIN_H_INCLUDED
+#define _AVX512IFMAVLINTRIN_H_INCLUDED
+
+#if !defined(__AVX512VL__) || !defined(__AVX512IFMA__)
+#pragma GCC push_options
+#pragma GCC target("avx512ifma,avx512vl")
+#define __DISABLE_AVX512IFMAVL__
+#endif /* __AVX512IFMAVL__ */
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_madd52lo_epu64 (__m128i __X, __m128i __Y, __m128i __Z)
+{
+  return (__m128i) __builtin_ia32_vpmadd52luq128_mask ((__v2di) __X,
+						       (__v2di) __Y,
+						       (__v2di) __Z,
+						       (__mmask8) - 1);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_madd52hi_epu64 (__m128i __X, __m128i __Y, __m128i __Z)
+{
+  return (__m128i) __builtin_ia32_vpmadd52huq128_mask ((__v2di) __X,
+						       (__v2di) __Y,
+						       (__v2di) __Z,
+						       (__mmask8) - 1);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_madd52lo_epu64 (__m256i __X, __m256i __Y, __m256i __Z)
+{
+  return (__m256i) __builtin_ia32_vpmadd52luq256_mask ((__v4di) __X,
+						       (__v4di) __Y,
+						       (__v4di) __Z,
+						       (__mmask8) - 1);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_madd52hi_epu64 (__m256i __X, __m256i __Y, __m256i __Z)
+{
+  return (__m256i) __builtin_ia32_vpmadd52huq256_mask ((__v4di) __X,
+						       (__v4di) __Y,
+						       (__v4di) __Z,
+						       (__mmask8) - 1);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_madd52lo_epu64 (__m128i __W, __mmask8 __M, __m128i __X, __m128i __Y)
+{
+  return (__m128i) __builtin_ia32_vpmadd52luq128_mask ((__v2di) __W,
+						       (__v2di) __X,
+						       (__v2di) __Y,
+						       (__mmask8) __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_madd52hi_epu64 (__m128i __W, __mmask8 __M, __m128i __X, __m128i __Y)
+{
+  return (__m128i) __builtin_ia32_vpmadd52huq128_mask ((__v2di) __W,
+						       (__v2di) __X,
+						       (__v2di) __Y,
+						       (__mmask8) __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_madd52lo_epu64 (__m256i __W, __mmask8 __M, __m256i __X,
+			    __m256i __Y)
+{
+  return (__m256i) __builtin_ia32_vpmadd52luq256_mask ((__v4di) __W,
+						       (__v4di) __X,
+						       (__v4di) __Y,
+						       (__mmask8) __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_madd52hi_epu64 (__m256i __W, __mmask8 __M, __m256i __X,
+			    __m256i __Y)
+{
+  return (__m256i) __builtin_ia32_vpmadd52huq256_mask ((__v4di) __W,
+						       (__v4di) __X,
+						       (__v4di) __Y,
+						       (__mmask8) __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_madd52lo_epu64 (__mmask8 __M, __m128i __X, __m128i __Y, __m128i __Z)
+{
+  return (__m128i) __builtin_ia32_vpmadd52luq128_maskz ((__v2di) __X,
+							(__v2di) __Y,
+							(__v2di) __Z,
+							(__mmask8) __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_madd52hi_epu64 (__mmask8 __M, __m128i __X, __m128i __Y, __m128i __Z)
+{
+  return (__m128i) __builtin_ia32_vpmadd52huq128_maskz ((__v2di) __X,
+							(__v2di) __Y,
+							(__v2di) __Z,
+							(__mmask8) __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_madd52lo_epu64 (__mmask8 __M, __m256i __X, __m256i __Y, __m256i __Z)
+{
+  return (__m256i) __builtin_ia32_vpmadd52luq256_maskz ((__v4di) __X,
+							(__v4di) __Y,
+							(__v4di) __Z,
+							(__mmask8) __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_madd52hi_epu64 (__mmask8 __M, __m256i __X, __m256i __Y, __m256i __Z)
+{
+  return (__m256i) __builtin_ia32_vpmadd52huq256_maskz ((__v4di) __X,
+							(__v4di) __Y,
+							(__v4di) __Z,
+							(__mmask8) __M);
+}
+
+#ifdef __DISABLE_AVX512IFMAVL__
+#undef __DISABLE_AVX512IFMAVL__
+#pragma GCC pop_options
+#endif /* __DISABLE_AVX512IFMAVL__ */
+
+#endif /* _AVX512IFMAVLINTRIN_H_INCLUDED */
Index: Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/avx512pfintrin.h
===================================================================
--- Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/avx512pfintrin.h	(revision 1046)
+++ Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/avx512pfintrin.h	(revision 1046)
@@ -0,0 +1,212 @@
+/* Copyright (C) 2013-2015 Free Software Foundation, Inc.
+
+   This file is part of GCC.
+
+   GCC is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
+
+   GCC is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   Under Section 7 of GPL version 3, you are granted additional
+   permissions described in the GCC Runtime Library Exception, version
+   3.1, as published by the Free Software Foundation.
+
+   You should have received a copy of the GNU General Public License and
+   a copy of the GCC Runtime Library Exception along with this program;
+   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _IMMINTRIN_H_INCLUDED
+#error "Never use <avx512pfintrin.h> directly; include <immintrin.h> instead."
+#endif
+
+#ifndef _AVX512PFINTRIN_H_INCLUDED
+#define _AVX512PFINTRIN_H_INCLUDED
+
+#ifndef __AVX512PF__
+#pragma GCC push_options
+#pragma GCC target("avx512pf")
+#define __DISABLE_AVX512PF__
+#endif /* __AVX512PF__ */
+
+/* Internal data types for implementing the intrinsics.  */
+typedef long long __v8di __attribute__ ((__vector_size__ (64)));
+typedef int __v16si __attribute__ ((__vector_size__ (64)));
+
+/* The Intel API is flexible enough that we must allow aliasing with other
+   vector types, and their scalar components.  */
+typedef long long __m512i __attribute__ ((__vector_size__ (64), __may_alias__));
+
+typedef unsigned char  __mmask8;
+typedef unsigned short __mmask16;
+
+#ifdef __OPTIMIZE__
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_prefetch_i32gather_pd (__m256i index, __mmask8 mask,
+				   void *addr, int scale, int hint)
+{
+  __builtin_ia32_gatherpfdpd (mask, (__v8si) index, (long long const *) addr,
+			      scale, hint);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_prefetch_i32gather_ps (__m512i index, __mmask16 mask,
+				   void *addr, int scale, int hint)
+{
+  __builtin_ia32_gatherpfdps (mask, (__v16si) index, (int const *) addr,
+			      scale, hint);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_prefetch_i64gather_pd (__m512i index, __mmask8 mask,
+				   void *addr, int scale, int hint)
+{
+  __builtin_ia32_gatherpfqpd (mask, (__v8di) index, (long long const *) addr,
+			      scale, hint);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_prefetch_i64gather_ps (__m512i index, __mmask8 mask,
+				   void *addr, int scale, int hint)
+{
+  __builtin_ia32_gatherpfqps (mask, (__v8di) index, (int const *) addr,
+			      scale, hint);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_prefetch_i32scatter_pd (void *addr, __m256i index, int scale,
+			       int hint)
+{
+  __builtin_ia32_scatterpfdpd ((__mmask8) 0xFF, (__v8si) index, 
+			       (long long const *)addr, scale, hint);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_prefetch_i32scatter_ps (void *addr, __m512i index, int scale,
+			       int hint)
+{
+  __builtin_ia32_scatterpfdps ((__mmask16) 0xFFFF, (__v16si) index, (int const *) addr,
+			       scale, hint);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_prefetch_i32scatter_pd (void *addr, __mmask8 mask,
+				    __m256i index, int scale, int hint)
+{
+  __builtin_ia32_scatterpfdpd (mask, (__v8si) index, (long long const *) addr,
+			       scale, hint);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_prefetch_i32scatter_ps (void *addr, __mmask16 mask,
+				    __m512i index, int scale, int hint)
+{
+  __builtin_ia32_scatterpfdps (mask, (__v16si) index, (int const *) addr,
+			       scale, hint);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_prefetch_i64scatter_pd (void *addr, __m512i index, int scale,
+			       int hint)
+{
+  __builtin_ia32_scatterpfqpd ((__mmask8) 0xFF, (__v8di) index, (long long const *) addr,
+			       scale, hint);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_prefetch_i64scatter_ps (void *addr, __m512i index, int scale,
+			       int hint)
+{
+  __builtin_ia32_scatterpfqps ((__mmask8) 0xFF, (__v8di) index, (int const *) addr,
+			       scale, hint);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_prefetch_i64scatter_pd (void *addr, __mmask16 mask,
+				    __m512i index, int scale, int hint)
+{
+  __builtin_ia32_scatterpfqpd (mask, (__v8di) index, (long long const *) addr,
+			       scale, hint);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_prefetch_i64scatter_ps (void *addr, __mmask16 mask,
+				    __m512i index, int scale, int hint)
+{
+  __builtin_ia32_scatterpfqps (mask, (__v8di) index, (int const *) addr,
+			       scale, hint);
+}
+
+#else
+#define _mm512_mask_prefetch_i32gather_pd(INDEX, MASK, ADDR, SCALE, HINT)    \
+  __builtin_ia32_gatherpfdpd ((__mmask8)MASK, (__v8si)(__m256i)INDEX,	     \
+			      (long long const *)ADDR, (int)SCALE, (int)HINT)
+
+#define _mm512_mask_prefetch_i32gather_ps(INDEX, MASK, ADDR, SCALE, HINT)    \
+  __builtin_ia32_gatherpfdps ((__mmask16)MASK, (__v16si)(__m512i)INDEX,      \
+			      (int const *)ADDR, (int)SCALE, (int)HINT)
+
+#define _mm512_mask_prefetch_i64gather_pd(INDEX, MASK, ADDR, SCALE, HINT)    \
+  __builtin_ia32_gatherpfqpd ((__mmask8)MASK, (__v8di)(__m512i)INDEX,	     \
+			      (long long const *)ADDR, (int)SCALE, (int)HINT)
+
+#define _mm512_mask_prefetch_i64gather_ps(INDEX, MASK, ADDR, SCALE, HINT)    \
+  __builtin_ia32_gatherpfqps ((__mmask8)MASK, (__v8di)(__m512i)INDEX,	     \
+			      (int const *)ADDR, (int)SCALE, (int)HINT)
+
+#define _mm512_prefetch_i32scatter_pd(ADDR, INDEX, SCALE, HINT)              \
+  __builtin_ia32_scatterpfdpd ((__mmask8)0xFF, (__v8si)(__m256i)INDEX,       \
+			       (long long const *)ADDR, (int)SCALE, (int)HINT)
+
+#define _mm512_prefetch_i32scatter_ps(ADDR, INDEX, SCALE, HINT)              \
+  __builtin_ia32_scatterpfdps ((__mmask16)0xFFFF, (__v16si)(__m512i)INDEX,   \
+			       (int const *)ADDR, (int)SCALE, (int)HINT)
+
+#define _mm512_mask_prefetch_i32scatter_pd(ADDR, MASK, INDEX, SCALE, HINT)   \
+  __builtin_ia32_scatterpfdpd ((__mmask8)MASK, (__v8si)(__m256i)INDEX,       \
+			       (long long const *)ADDR, (int)SCALE, (int)HINT)
+
+#define _mm512_mask_prefetch_i32scatter_ps(ADDR, MASK, INDEX, SCALE, HINT)   \
+  __builtin_ia32_scatterpfdps ((__mmask16)MASK, (__v16si)(__m512i)INDEX,     \
+			       (int const *)ADDR, (int)SCALE, (int)HINT)
+
+#define _mm512_prefetch_i64scatter_pd(ADDR, INDEX, SCALE, HINT)              \
+  __builtin_ia32_scatterpfqpd ((__mmask8)0xFF, (__v8di)(__m512i)INDEX,	     \
+			       (long long const *)ADDR, (int)SCALE, (int)HINT)
+
+#define _mm512_prefetch_i64scatter_ps(ADDR, INDEX, SCALE, HINT)              \
+  __builtin_ia32_scatterpfqps ((__mmask8)0xFF, (__v8di)(__m512i)INDEX,	     \
+			       (int const *)ADDR, (int)SCALE, (int)HINT)
+
+#define _mm512_mask_prefetch_i64scatter_pd(ADDR, MASK, INDEX, SCALE, HINT)   \
+  __builtin_ia32_scatterpfqpd ((__mmask8)MASK, (__v8di)(__m512i)INDEX,	     \
+			       (long long const *)ADDR, (int)SCALE, (int)HINT)
+
+#define _mm512_mask_prefetch_i64scatter_ps(ADDR, MASK, INDEX, SCALE, HINT)   \
+  __builtin_ia32_scatterpfqps ((__mmask8)MASK, (__v8di)(__m512i)INDEX,	     \
+			       (int const *)ADDR, (int)SCALE, (int)HINT)
+#endif
+
+#ifdef __DISABLE_AVX512PF__
+#undef __DISABLE_AVX512PF__
+#pragma GCC pop_options
+#endif /* __DISABLE_AVX512PF__ */
+
+#endif /* _AVX512PFINTRIN_H_INCLUDED */
Index: Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/avx512vbmiintrin.h
===================================================================
--- Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/avx512vbmiintrin.h	(revision 1046)
+++ Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/avx512vbmiintrin.h	(revision 1046)
@@ -0,0 +1,159 @@
+/* Copyright (C) 2013-2015 Free Software Foundation, Inc.
+
+   This file is part of GCC.
+
+   GCC is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
+
+   GCC is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   Under Section 7 of GPL version 3, you are granted additional
+   permissions described in the GCC Runtime Library Exception, version
+   3.1, as published by the Free Software Foundation.
+
+   You should have received a copy of the GNU General Public License and
+   a copy of the GCC Runtime Library Exception along with this program;
+   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _IMMINTRIN_H_INCLUDED
+#error "Never use <avx512vbmiintrin.h> directly; include <immintrin.h> instead."
+#endif
+
+#ifndef _AVX512VBMIINTRIN_H_INCLUDED
+#define _AVX512VBMIINTRIN_H_INCLUDED
+
+#ifndef __AVX512VBMI__
+#pragma GCC push_options
+#pragma GCC target("avx512vbmi")
+#define __DISABLE_AVX512VBMI__
+#endif /* __AVX512VBMI__ */
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_multishift_epi64_epi8 (__m512i __W, __mmask64 __M, __m512i __X, __m512i __Y)
+{
+  return (__m512i) __builtin_ia32_vpmultishiftqb512_mask ((__v64qi) __X,
+							  (__v64qi) __Y,
+							  (__v64qi) __W,
+							  (__mmask64) __M);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_multishift_epi64_epi8 (__mmask64 __M, __m512i __X, __m512i __Y)
+{
+  return (__m512i) __builtin_ia32_vpmultishiftqb512_mask ((__v64qi) __X,
+							  (__v64qi) __Y,
+							  (__v64qi)
+							  _mm512_setzero_si512 (),
+							  (__mmask64) __M);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_multishift_epi64_epi8 (__m512i __X, __m512i __Y)
+{
+  return (__m512i) __builtin_ia32_vpmultishiftqb512_mask ((__v64qi) __X,
+							  (__v64qi) __Y,
+							  (__v64qi)
+							  _mm512_undefined_si512 (),
+							  (__mmask64) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_permutexvar_epi8 (__m512i __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_permvarqi512_mask ((__v64qi) __B,
+						     (__v64qi) __A,
+						     (__v64qi)
+						     _mm512_undefined_si512 (),
+						     (__mmask64) -1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_permutexvar_epi8 (__mmask64 __M, __m512i __A,
+				__m512i __B)
+{
+  return (__m512i) __builtin_ia32_permvarqi512_mask ((__v64qi) __B,
+						     (__v64qi) __A,
+						     (__v64qi)
+						     _mm512_setzero_si512(),
+						     (__mmask64) __M);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_permutexvar_epi8 (__m512i __W, __mmask64 __M, __m512i __A,
+			       __m512i __B)
+{
+  return (__m512i) __builtin_ia32_permvarqi512_mask ((__v64qi) __B,
+						     (__v64qi) __A,
+						     (__v64qi) __W,
+						     (__mmask64) __M);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_permutex2var_epi8 (__m512i __A, __m512i __I, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_vpermt2varqi512_mask ((__v64qi) __I
+							/* idx */ ,
+							(__v64qi) __A,
+							(__v64qi) __B,
+							(__mmask64) -
+							1);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_permutex2var_epi8 (__m512i __A, __mmask64 __U,
+				__m512i __I, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_vpermt2varqi512_mask ((__v64qi) __I
+							/* idx */ ,
+							(__v64qi) __A,
+							(__v64qi) __B,
+							(__mmask64)
+							__U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask2_permutex2var_epi8 (__m512i __A, __m512i __I,
+				 __mmask64 __U, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_vpermi2varqi512_mask ((__v64qi) __A,
+							(__v64qi) __I
+							/* idx */ ,
+							(__v64qi) __B,
+							(__mmask64)
+							__U);
+}
+
+extern __inline __m512i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_permutex2var_epi8 (__mmask64 __U, __m512i __A,
+				 __m512i __I, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_vpermt2varqi512_maskz ((__v64qi) __I
+							 /* idx */ ,
+							 (__v64qi) __A,
+							 (__v64qi) __B,
+							 (__mmask64)
+							 __U);
+}
+
+#ifdef __DISABLE_AVX512VBMI__
+#undef __DISABLE_AVX512VBMI__
+#pragma GCC pop_options
+#endif /* __DISABLE_AVX512VBMI__ */
+
+#endif /* _AVX512VBMIINTRIN_H_INCLUDED */
Index: Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/avx512vbmivlintrin.h
===================================================================
--- Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/avx512vbmivlintrin.h	(revision 1046)
+++ Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/avx512vbmivlintrin.h	(revision 1046)
@@ -0,0 +1,275 @@
+/* Copyright (C) 2013-2015 Free Software Foundation, Inc.
+
+   This file is part of GCC.
+
+   GCC is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
+
+   GCC is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   Under Section 7 of GPL version 3, you are granted additional
+   permissions described in the GCC Runtime Library Exception, version
+   3.1, as published by the Free Software Foundation.
+
+   You should have received a copy of the GNU General Public License and
+   a copy of the GCC Runtime Library Exception along with this program;
+   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _IMMINTRIN_H_INCLUDED
+#error "Never use <avx512vbmivlintrin.h> directly; include <immintrin.h> instead."
+#endif
+
+#ifndef _AVX512VBMIVLINTRIN_H_INCLUDED
+#define _AVX512VBMIVLINTRIN_H_INCLUDED
+
+#if !defined(__AVX512VL__) || !defined(__AVX512VBMI__)
+#pragma GCC push_options
+#pragma GCC target("avx512vbmi,avx512vl")
+#define __DISABLE_AVX512VBMIVL__
+#endif /* __AVX512VBMIVL__ */
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_multishift_epi64_epi8 (__m256i __W, __mmask32 __M, __m256i __X, __m256i __Y)
+{
+  return (__m256i) __builtin_ia32_vpmultishiftqb256_mask ((__v32qi) __X,
+							  (__v32qi) __Y,
+							  (__v32qi) __W,
+							  (__mmask32) __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_multishift_epi64_epi8 (__mmask32 __M, __m256i __X, __m256i __Y)
+{
+  return (__m256i) __builtin_ia32_vpmultishiftqb256_mask ((__v32qi) __X,
+							  (__v32qi) __Y,
+							  (__v32qi)
+							  _mm256_setzero_si256 (),
+							  (__mmask32) __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_multishift_epi64_epi8 (__m256i __X, __m256i __Y)
+{
+  return (__m256i) __builtin_ia32_vpmultishiftqb256_mask ((__v32qi) __X,
+							  (__v32qi) __Y,
+							  (__v32qi)
+							  _mm256_undefined_si256 (),
+							  (__mmask32) -1);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_multishift_epi64_epi8 (__m128i __W, __mmask16 __M, __m128i __X, __m128i __Y)
+{
+  return (__m128i) __builtin_ia32_vpmultishiftqb128_mask ((__v16qi) __X,
+							  (__v16qi) __Y,
+							  (__v16qi) __W,
+							  (__mmask16) __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_multishift_epi64_epi8 (__mmask16 __M, __m128i __X, __m128i __Y)
+{
+  return (__m128i) __builtin_ia32_vpmultishiftqb128_mask ((__v16qi) __X,
+							  (__v16qi) __Y,
+							  (__v16qi)
+							  _mm_setzero_si128 (),
+							  (__mmask16) __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_multishift_epi64_epi8 (__m128i __X, __m128i __Y)
+{
+  return (__m128i) __builtin_ia32_vpmultishiftqb128_mask ((__v16qi) __X,
+							  (__v16qi) __Y,
+							  (__v16qi)
+							  _mm_undefined_si128 (),
+							  (__mmask16) -1);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_permutexvar_epi8 (__m256i __A, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_permvarqi256_mask ((__v32qi) __B,
+						     (__v32qi) __A,
+						     (__v32qi)
+						     _mm256_undefined_si256 (),
+						     (__mmask32) -1);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_permutexvar_epi8 (__mmask32 __M, __m256i __A,
+				__m256i __B)
+{
+  return (__m256i) __builtin_ia32_permvarqi256_mask ((__v32qi) __B,
+						     (__v32qi) __A,
+						     (__v32qi)
+						     _mm256_setzero_si256 (),
+						     (__mmask32) __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_permutexvar_epi8 (__m256i __W, __mmask32 __M, __m256i __A,
+			       __m256i __B)
+{
+  return (__m256i) __builtin_ia32_permvarqi256_mask ((__v32qi) __B,
+						     (__v32qi) __A,
+						     (__v32qi) __W,
+						     (__mmask32) __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_permutexvar_epi8 (__m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_permvarqi128_mask ((__v16qi) __B,
+						     (__v16qi) __A,
+						     (__v16qi)
+						     _mm_undefined_si128 (),
+						     (__mmask16) -1);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_permutexvar_epi8 (__mmask16 __M, __m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_permvarqi128_mask ((__v16qi) __B,
+						     (__v16qi) __A,
+						     (__v16qi)
+						     _mm_setzero_si128 (),
+						     (__mmask16) __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_permutexvar_epi8 (__m128i __W, __mmask16 __M, __m128i __A,
+			    __m128i __B)
+{
+  return (__m128i) __builtin_ia32_permvarqi128_mask ((__v16qi) __B,
+						     (__v16qi) __A,
+						     (__v16qi) __W,
+						     (__mmask16) __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_permutex2var_epi8 (__m256i __A, __m256i __I, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_vpermt2varqi256_mask ((__v32qi) __I
+							/* idx */ ,
+							(__v32qi) __A,
+							(__v32qi) __B,
+							(__mmask32) -
+							1);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_permutex2var_epi8 (__m256i __A, __mmask32 __U,
+				__m256i __I, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_vpermt2varqi256_mask ((__v32qi) __I
+							/* idx */ ,
+							(__v32qi) __A,
+							(__v32qi) __B,
+							(__mmask32)
+							__U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask2_permutex2var_epi8 (__m256i __A, __m256i __I,
+				 __mmask32 __U, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_vpermi2varqi256_mask ((__v32qi) __A,
+							(__v32qi) __I
+							/* idx */ ,
+							(__v32qi) __B,
+							(__mmask32)
+							__U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_permutex2var_epi8 (__mmask32 __U, __m256i __A,
+				 __m256i __I, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_vpermt2varqi256_maskz ((__v32qi) __I
+							 /* idx */ ,
+							 (__v32qi) __A,
+							 (__v32qi) __B,
+							 (__mmask32)
+							 __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_permutex2var_epi8 (__m128i __A, __m128i __I, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_vpermt2varqi128_mask ((__v16qi) __I
+							/* idx */ ,
+							(__v16qi) __A,
+							(__v16qi) __B,
+							(__mmask16) -
+							1);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_permutex2var_epi8 (__m128i __A, __mmask16 __U, __m128i __I,
+			     __m128i __B)
+{
+  return (__m128i) __builtin_ia32_vpermt2varqi128_mask ((__v16qi) __I
+							/* idx */ ,
+							(__v16qi) __A,
+							(__v16qi) __B,
+							(__mmask16)
+							__U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask2_permutex2var_epi8 (__m128i __A, __m128i __I, __mmask16 __U,
+			      __m128i __B)
+{
+  return (__m128i) __builtin_ia32_vpermi2varqi128_mask ((__v16qi) __A,
+							(__v16qi) __I
+							/* idx */ ,
+							(__v16qi) __B,
+							(__mmask16)
+							__U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_permutex2var_epi8 (__mmask16 __U, __m128i __A, __m128i __I,
+			      __m128i __B)
+{
+  return (__m128i) __builtin_ia32_vpermt2varqi128_maskz ((__v16qi) __I
+							 /* idx */ ,
+							 (__v16qi) __A,
+							 (__v16qi) __B,
+							 (__mmask16)
+							 __U);
+}
+
+#ifdef __DISABLE_AVX512VBMIVL__
+#undef __DISABLE_AVX512VBMIVL__
+#pragma GCC pop_options
+#endif /* __DISABLE_AVX512VBMIVL__ */
+
+#endif /* _AVX512VBMIVLINTRIN_H_INCLUDED */
Index: Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/avx512vlbwintrin.h
===================================================================
--- Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/avx512vlbwintrin.h	(revision 1046)
+++ Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/avx512vlbwintrin.h	(revision 1046)
@@ -0,0 +1,4653 @@
+/* Copyright (C) 2014-2015 Free Software Foundation, Inc.
+
+   This file is part of GCC.
+
+   GCC is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
+
+   GCC is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   Under Section 7 of GPL version 3, you are granted additional
+   permissions described in the GCC Runtime Library Exception, version
+   3.1, as published by the Free Software Foundation.
+
+   You should have received a copy of the GNU General Public License and
+   a copy of the GCC Runtime Library Exception along with this program;
+   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _IMMINTRIN_H_INCLUDED
+#error "Never use <avx512vlbwintrin.h> directly; include <immintrin.h> instead."
+#endif
+
+#ifndef _AVX512VLBWINTRIN_H_INCLUDED
+#define _AVX512VLBWINTRIN_H_INCLUDED
+
+#if !defined(__AVX512VL__) || !defined(__AVX512BW__)
+#pragma GCC push_options
+#pragma GCC target("avx512vl,avx512bw")
+#define __DISABLE_AVX512VLBW__
+#endif /* __AVX512VLBW__ */
+
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_mov_epi8 (__m256i __W, __mmask32 __U, __m256i __A)
+{
+  return (__m256i) __builtin_ia32_movdquqi256_mask ((__v32qi) __A,
+						    (__v32qi) __W,
+						    (__mmask32) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_mov_epi8 (__mmask32 __U, __m256i __A)
+{
+  return (__m256i) __builtin_ia32_movdquqi256_mask ((__v32qi) __A,
+						    (__v32qi)
+						    _mm256_setzero_si256 (),
+						    (__mmask32) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_mov_epi8 (__m128i __W, __mmask16 __U, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_movdquqi128_mask ((__v16qi) __A,
+						    (__v16qi) __W,
+						    (__mmask16) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_mov_epi8 (__mmask16 __U, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_movdquqi128_mask ((__v16qi) __A,
+						    (__v16qi)
+						    _mm_setzero_hi (),
+						    (__mmask16) __U);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_storeu_epi8 (void *__P, __mmask32 __U, __m256i __A)
+{
+  __builtin_ia32_storedquqi256_mask ((__v32qi *) __P,
+				     (__v32qi) __A,
+				     (__mmask32) __U);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_storeu_epi8 (void *__P, __mmask16 __U, __m128i __A)
+{
+  __builtin_ia32_storedquqi128_mask ((__v16qi *) __P,
+				     (__v16qi) __A,
+				     (__mmask16) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_loadu_epi16 (__m256i __W, __mmask16 __U, void const *__P)
+{
+  return (__m256i) __builtin_ia32_loaddquhi256_mask ((__v16hi *) __P,
+						     (__v16hi) __W,
+						     (__mmask16) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_loadu_epi16 (__mmask16 __U, void const *__P)
+{
+  return (__m256i) __builtin_ia32_loaddquhi256_mask ((__v16hi *) __P,
+						     (__v16hi)
+						     _mm256_setzero_si256 (),
+						     (__mmask16) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_loadu_epi16 (__m128i __W, __mmask8 __U, void const *__P)
+{
+  return (__m128i) __builtin_ia32_loaddquhi128_mask ((__v8hi *) __P,
+						     (__v8hi) __W,
+						     (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_loadu_epi16 (__mmask8 __U, void const *__P)
+{
+  return (__m128i) __builtin_ia32_loaddquhi128_mask ((__v8hi *) __P,
+						     (__v8hi)
+						     _mm_setzero_hi (),
+						     (__mmask8) __U);
+}
+
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_mov_epi16 (__m256i __W, __mmask16 __U, __m256i __A)
+{
+  return (__m256i) __builtin_ia32_movdquhi256_mask ((__v16hi) __A,
+						    (__v16hi) __W,
+						    (__mmask16) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_mov_epi16 (__mmask16 __U, __m256i __A)
+{
+  return (__m256i) __builtin_ia32_movdquhi256_mask ((__v16hi) __A,
+						    (__v16hi)
+						    _mm256_setzero_si256 (),
+						    (__mmask16) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_mov_epi16 (__m128i __W, __mmask8 __U, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_movdquhi128_mask ((__v8hi) __A,
+						    (__v8hi) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_mov_epi16 (__mmask8 __U, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_movdquhi128_mask ((__v8hi) __A,
+						    (__v8hi)
+						    _mm_setzero_hi (),
+						    (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_loadu_epi8 (__m256i __W, __mmask32 __U, void const *__P)
+{
+  return (__m256i) __builtin_ia32_loaddquqi256_mask ((__v32qi *) __P,
+						     (__v32qi) __W,
+						     (__mmask32) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_loadu_epi8 (__mmask32 __U, void const *__P)
+{
+  return (__m256i) __builtin_ia32_loaddquqi256_mask ((__v32qi *) __P,
+						     (__v32qi)
+						     _mm256_setzero_si256 (),
+						     (__mmask32) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_loadu_epi8 (__m128i __W, __mmask16 __U, void const *__P)
+{
+  return (__m128i) __builtin_ia32_loaddquqi128_mask ((__v16qi *) __P,
+						     (__v16qi) __W,
+						     (__mmask16) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_loadu_epi8 (__mmask16 __U, void const *__P)
+{
+  return (__m128i) __builtin_ia32_loaddquqi128_mask ((__v16qi *) __P,
+						     (__v16qi)
+						     _mm_setzero_hi (),
+						     (__mmask16) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cvtepi16_epi8 (__m256i __A)
+{
+
+  return (__m128i) __builtin_ia32_pmovwb256_mask ((__v16hi) __A,
+						  (__v16qi)_mm_undefined_si128(),
+						  (__mmask16) -1);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cvtepi16_epi8 (__m128i __O, __mmask16 __M, __m256i __A)
+{
+  return (__m128i) __builtin_ia32_pmovwb256_mask ((__v16hi) __A,
+						  (__v16qi) __O, __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_cvtepi16_epi8 (__mmask16 __M, __m256i __A)
+{
+  return (__m128i) __builtin_ia32_pmovwb256_mask ((__v16hi) __A,
+						  (__v16qi)
+						  _mm_setzero_si128 (),
+						  __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtsepi16_epi8 (__m128i __A)
+{
+
+  return (__m128i) __builtin_ia32_pmovswb128_mask ((__v8hi) __A,
+						   (__v16qi)_mm_undefined_si128(),
+						   (__mmask8) -1);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cvtsepi16_epi8 (__m128i __O, __mmask8 __M, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_pmovswb128_mask ((__v8hi) __A,
+						   (__v16qi) __O, __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_cvtsepi16_epi8 (__mmask8 __M, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_pmovswb128_mask ((__v8hi) __A,
+						   (__v16qi)
+						   _mm_setzero_si128 (),
+						   __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cvtsepi16_epi8 (__m256i __A)
+{
+
+  return (__m128i) __builtin_ia32_pmovswb256_mask ((__v16hi) __A,
+						   (__v16qi)_mm_undefined_si128(),
+						   (__mmask16) -1);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cvtsepi16_epi8 (__m128i __O, __mmask16 __M, __m256i __A)
+{
+  return (__m128i) __builtin_ia32_pmovswb256_mask ((__v16hi) __A,
+						   (__v16qi) __O, __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_cvtsepi16_epi8 (__mmask16 __M, __m256i __A)
+{
+  return (__m128i) __builtin_ia32_pmovswb256_mask ((__v16hi) __A,
+						   (__v16qi)
+						   _mm_setzero_si128 (),
+						   __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtusepi16_epi8 (__m128i __A)
+{
+
+  return (__m128i) __builtin_ia32_pmovuswb128_mask ((__v8hi) __A,
+						    (__v16qi)_mm_undefined_si128(),
+						    (__mmask8) -1);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cvtusepi16_epi8 (__m128i __O, __mmask8 __M, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_pmovuswb128_mask ((__v8hi) __A,
+						    (__v16qi) __O,
+						    __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_cvtusepi16_epi8 (__mmask8 __M, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_pmovuswb128_mask ((__v8hi) __A,
+						    (__v16qi)
+						    _mm_setzero_si128 (),
+						    __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cvtusepi16_epi8 (__m256i __A)
+{
+
+  return (__m128i) __builtin_ia32_pmovuswb256_mask ((__v16hi) __A,
+						    (__v16qi)_mm_undefined_si128(),
+						    (__mmask16) -1);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cvtusepi16_epi8 (__m128i __O, __mmask16 __M, __m256i __A)
+{
+  return (__m128i) __builtin_ia32_pmovuswb256_mask ((__v16hi) __A,
+						    (__v16qi) __O,
+						    __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_cvtusepi16_epi8 (__mmask16 __M, __m256i __A)
+{
+  return (__m128i) __builtin_ia32_pmovuswb256_mask ((__v16hi) __A,
+						    (__v16qi)
+						    _mm_setzero_si128 (),
+						    __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_broadcastb_epi8 (__m256i __O, __mmask32 __M, __m128i __A)
+{
+  return (__m256i) __builtin_ia32_pbroadcastb256_mask ((__v16qi) __A,
+						       (__v32qi) __O,
+						       __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_broadcastb_epi8 (__mmask32 __M, __m128i __A)
+{
+  return (__m256i) __builtin_ia32_pbroadcastb256_mask ((__v16qi) __A,
+						       (__v32qi)
+						       _mm256_setzero_si256 (),
+						       __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_set1_epi8 (__m256i __O, __mmask32 __M, char __A)
+{
+  return (__m256i) __builtin_ia32_pbroadcastb256_gpr_mask (__A,
+							   (__v32qi) __O,
+							   __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_set1_epi8 (__mmask32 __M, char __A)
+{
+  return (__m256i) __builtin_ia32_pbroadcastb256_gpr_mask (__A,
+							   (__v32qi)
+							   _mm256_setzero_si256 (),
+							   __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_broadcastb_epi8 (__m128i __O, __mmask16 __M, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_pbroadcastb128_mask ((__v16qi) __A,
+						       (__v16qi) __O,
+						       __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_broadcastb_epi8 (__mmask16 __M, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_pbroadcastb128_mask ((__v16qi) __A,
+						       (__v16qi)
+						       _mm_setzero_si128 (),
+						       __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_set1_epi8 (__m128i __O, __mmask16 __M, char __A)
+{
+  return (__m128i) __builtin_ia32_pbroadcastb128_gpr_mask (__A,
+							   (__v16qi) __O,
+							   __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_set1_epi8 (__mmask16 __M, char __A)
+{
+  return (__m128i) __builtin_ia32_pbroadcastb128_gpr_mask (__A,
+							   (__v16qi)
+							   _mm_setzero_si128 (),
+							   __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_broadcastw_epi16 (__m256i __O, __mmask16 __M, __m128i __A)
+{
+  return (__m256i) __builtin_ia32_pbroadcastw256_mask ((__v8hi) __A,
+						       (__v16hi) __O,
+						       __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_broadcastw_epi16 (__mmask16 __M, __m128i __A)
+{
+  return (__m256i) __builtin_ia32_pbroadcastw256_mask ((__v8hi) __A,
+						       (__v16hi)
+						       _mm256_setzero_si256 (),
+						       __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_set1_epi16 (__m256i __O, __mmask16 __M, short __A)
+{
+  return (__m256i) __builtin_ia32_pbroadcastw256_gpr_mask (__A,
+							   (__v16hi) __O,
+							   __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_set1_epi16 (__mmask16 __M, short __A)
+{
+  return (__m256i) __builtin_ia32_pbroadcastw256_gpr_mask (__A,
+							   (__v16hi)
+							   _mm256_setzero_si256 (),
+							   __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_broadcastw_epi16 (__m128i __O, __mmask8 __M, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_pbroadcastw128_mask ((__v8hi) __A,
+						       (__v8hi) __O,
+						       __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_broadcastw_epi16 (__mmask8 __M, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_pbroadcastw128_mask ((__v8hi) __A,
+						       (__v8hi)
+						       _mm_setzero_si128 (),
+						       __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_set1_epi16 (__m128i __O, __mmask8 __M, short __A)
+{
+  return (__m128i) __builtin_ia32_pbroadcastw128_gpr_mask (__A,
+							   (__v8hi) __O,
+							   __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_set1_epi16 (__mmask8 __M, short __A)
+{
+  return (__m128i) __builtin_ia32_pbroadcastw128_gpr_mask (__A,
+							   (__v8hi)
+							   _mm_setzero_si128 (),
+							   __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_permutexvar_epi16 (__m256i __A, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_permvarhi256_mask ((__v16hi) __B,
+						     (__v16hi) __A,
+						     (__v16hi)
+						     _mm256_setzero_si256 (),
+						     (__mmask16) -1);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_permutexvar_epi16 (__mmask16 __M, __m256i __A,
+				__m256i __B)
+{
+  return (__m256i) __builtin_ia32_permvarhi256_mask ((__v16hi) __B,
+						     (__v16hi) __A,
+						     (__v16hi)
+						     _mm256_setzero_si256 (),
+						     (__mmask16) __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_permutexvar_epi16 (__m256i __W, __mmask16 __M, __m256i __A,
+			       __m256i __B)
+{
+  return (__m256i) __builtin_ia32_permvarhi256_mask ((__v16hi) __B,
+						     (__v16hi) __A,
+						     (__v16hi) __W,
+						     (__mmask16) __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_permutexvar_epi16 (__m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_permvarhi128_mask ((__v8hi) __B,
+						     (__v8hi) __A,
+						     (__v8hi)
+						     _mm_setzero_hi (),
+						     (__mmask8) -1);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_permutexvar_epi16 (__mmask8 __M, __m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_permvarhi128_mask ((__v8hi) __B,
+						     (__v8hi) __A,
+						     (__v8hi)
+						     _mm_setzero_si128 (),
+						     (__mmask8) __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_permutexvar_epi16 (__m128i __W, __mmask8 __M, __m128i __A,
+			    __m128i __B)
+{
+  return (__m128i) __builtin_ia32_permvarhi128_mask ((__v8hi) __B,
+						     (__v8hi) __A,
+						     (__v8hi) __W,
+						     (__mmask8) __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_permutex2var_epi16 (__m256i __A, __m256i __I, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_vpermt2varhi256_mask ((__v16hi) __I
+							/* idx */ ,
+							(__v16hi) __A,
+							(__v16hi) __B,
+							(__mmask16) -
+							1);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_permutex2var_epi16 (__m256i __A, __mmask16 __U,
+				__m256i __I, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_vpermt2varhi256_mask ((__v16hi) __I
+							/* idx */ ,
+							(__v16hi) __A,
+							(__v16hi) __B,
+							(__mmask16)
+							__U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask2_permutex2var_epi16 (__m256i __A, __m256i __I,
+				 __mmask16 __U, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_vpermi2varhi256_mask ((__v16hi) __A,
+							(__v16hi) __I
+							/* idx */ ,
+							(__v16hi) __B,
+							(__mmask16)
+							__U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_permutex2var_epi16 (__mmask16 __U, __m256i __A,
+				 __m256i __I, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_vpermt2varhi256_maskz ((__v16hi) __I
+							 /* idx */ ,
+							 (__v16hi) __A,
+							 (__v16hi) __B,
+							 (__mmask16)
+							 __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_permutex2var_epi16 (__m128i __A, __m128i __I, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_vpermt2varhi128_mask ((__v8hi) __I
+							/* idx */ ,
+							(__v8hi) __A,
+							(__v8hi) __B,
+							(__mmask8) -
+							1);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_permutex2var_epi16 (__m128i __A, __mmask8 __U, __m128i __I,
+			     __m128i __B)
+{
+  return (__m128i) __builtin_ia32_vpermt2varhi128_mask ((__v8hi) __I
+							/* idx */ ,
+							(__v8hi) __A,
+							(__v8hi) __B,
+							(__mmask8)
+							__U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask2_permutex2var_epi16 (__m128i __A, __m128i __I, __mmask8 __U,
+			      __m128i __B)
+{
+  return (__m128i) __builtin_ia32_vpermi2varhi128_mask ((__v8hi) __A,
+							(__v8hi) __I
+							/* idx */ ,
+							(__v8hi) __B,
+							(__mmask8)
+							__U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_permutex2var_epi16 (__mmask8 __U, __m128i __A, __m128i __I,
+			      __m128i __B)
+{
+  return (__m128i) __builtin_ia32_vpermt2varhi128_maskz ((__v8hi) __I
+							 /* idx */ ,
+							 (__v8hi) __A,
+							 (__v8hi) __B,
+							 (__mmask8)
+							 __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_maddubs_epi16 (__m256i __W, __mmask16 __U, __m256i __X,
+			   __m256i __Y)
+{
+  return (__m256i) __builtin_ia32_pmaddubsw256_mask ((__v32qi) __X,
+						     (__v32qi) __Y,
+						     (__v16hi) __W,
+						     (__mmask16) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_maddubs_epi16 (__mmask16 __U, __m256i __X, __m256i __Y)
+{
+  return (__m256i) __builtin_ia32_pmaddubsw256_mask ((__v32qi) __X,
+						     (__v32qi) __Y,
+						     (__v16hi)
+						     _mm256_setzero_si256 (),
+						     (__mmask16) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_maddubs_epi16 (__m128i __W, __mmask8 __U, __m128i __X,
+			__m128i __Y)
+{
+  return (__m128i) __builtin_ia32_pmaddubsw128_mask ((__v16qi) __X,
+						     (__v16qi) __Y,
+						     (__v8hi) __W,
+						     (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_maddubs_epi16 (__mmask8 __U, __m128i __X, __m128i __Y)
+{
+  return (__m128i) __builtin_ia32_pmaddubsw128_mask ((__v16qi) __X,
+						     (__v16qi) __Y,
+						     (__v8hi)
+						     _mm_setzero_hi (),
+						     (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_madd_epi16 (__m256i __W, __mmask8 __U, __m256i __A,
+			__m256i __B)
+{
+  return (__m256i) __builtin_ia32_pmaddwd256_mask ((__v16hi) __A,
+						   (__v16hi) __B,
+						   (__v8si) __W,
+						   (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_madd_epi16 (__mmask8 __U, __m256i __A, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_pmaddwd256_mask ((__v16hi) __A,
+						   (__v16hi) __B,
+						   (__v8si)
+						   _mm256_setzero_si256 (),
+						   (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_madd_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
+		     __m128i __B)
+{
+  return (__m128i) __builtin_ia32_pmaddwd128_mask ((__v8hi) __A,
+						   (__v8hi) __B,
+						   (__v4si) __W,
+						   (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_madd_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_pmaddwd128_mask ((__v8hi) __A,
+						   (__v8hi) __B,
+						   (__v4si)
+						   _mm_setzero_si128 (),
+						   (__mmask8) __U);
+}
+
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_movepi8_mask (__m128i __A)
+{
+  return (__mmask16) __builtin_ia32_cvtb2mask128 ((__v16qi) __A);
+}
+
+extern __inline __mmask32
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_movepi8_mask (__m256i __A)
+{
+  return (__mmask32) __builtin_ia32_cvtb2mask256 ((__v32qi) __A);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_movepi16_mask (__m128i __A)
+{
+  return (__mmask8) __builtin_ia32_cvtw2mask128 ((__v8hi) __A);
+}
+
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_movepi16_mask (__m256i __A)
+{
+  return (__mmask16) __builtin_ia32_cvtw2mask256 ((__v16hi) __A);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_movm_epi8 (__mmask16 __A)
+{
+  return (__m128i) __builtin_ia32_cvtmask2b128 (__A);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_movm_epi8 (__mmask32 __A)
+{
+  return (__m256i) __builtin_ia32_cvtmask2b256 (__A);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_movm_epi16 (__mmask8 __A)
+{
+  return (__m128i) __builtin_ia32_cvtmask2w128 (__A);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_movm_epi16 (__mmask16 __A)
+{
+  return (__m256i) __builtin_ia32_cvtmask2w256 (__A);
+}
+
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_test_epi8_mask (__m128i __A, __m128i __B)
+{
+  return (__mmask16) __builtin_ia32_ptestmb128 ((__v16qi) __A,
+						(__v16qi) __B,
+						(__mmask16) -1);
+}
+
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_test_epi8_mask (__mmask16 __U, __m128i __A, __m128i __B)
+{
+  return (__mmask16) __builtin_ia32_ptestmb128 ((__v16qi) __A,
+						(__v16qi) __B, __U);
+}
+
+extern __inline __mmask32
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_test_epi8_mask (__m256i __A, __m256i __B)
+{
+  return (__mmask32) __builtin_ia32_ptestmb256 ((__v32qi) __A,
+						(__v32qi) __B,
+						(__mmask32) -1);
+}
+
+extern __inline __mmask32
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_test_epi8_mask (__mmask32 __U, __m256i __A, __m256i __B)
+{
+  return (__mmask32) __builtin_ia32_ptestmb256 ((__v32qi) __A,
+						(__v32qi) __B, __U);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_test_epi16_mask (__m128i __A, __m128i __B)
+{
+  return (__mmask8) __builtin_ia32_ptestmw128 ((__v8hi) __A,
+					       (__v8hi) __B,
+					       (__mmask8) -1);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_test_epi16_mask (__mmask8 __U, __m128i __A, __m128i __B)
+{
+  return (__mmask8) __builtin_ia32_ptestmw128 ((__v8hi) __A,
+					       (__v8hi) __B, __U);
+}
+
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_test_epi16_mask (__m256i __A, __m256i __B)
+{
+  return (__mmask16) __builtin_ia32_ptestmw256 ((__v16hi) __A,
+						(__v16hi) __B,
+						(__mmask16) -1);
+}
+
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_test_epi16_mask (__mmask16 __U, __m256i __A, __m256i __B)
+{
+  return (__mmask16) __builtin_ia32_ptestmw256 ((__v16hi) __A,
+						(__v16hi) __B, __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_min_epu16 (__mmask16 __M, __m256i __A, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_pminuw256_mask ((__v16hi) __A,
+						  (__v16hi) __B,
+						  (__v16hi)
+						  _mm256_setzero_si256 (),
+						  (__mmask16) __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_min_epu16 (__m256i __W, __mmask16 __M, __m256i __A,
+		       __m256i __B)
+{
+  return (__m256i) __builtin_ia32_pminuw256_mask ((__v16hi) __A,
+						  (__v16hi) __B,
+						  (__v16hi) __W,
+						  (__mmask16) __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_min_epu16 (__mmask8 __M, __m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_pminuw128_mask ((__v8hi) __A,
+						  (__v8hi) __B,
+						  (__v8hi)
+						  _mm_setzero_di (),
+						  (__mmask8) __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_min_epu16 (__m128i __W, __mmask8 __M, __m128i __A,
+		    __m128i __B)
+{
+  return (__m128i) __builtin_ia32_pminuw128_mask ((__v8hi) __A,
+						  (__v8hi) __B,
+						  (__v8hi) __W,
+						  (__mmask8) __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_min_epi16 (__mmask16 __M, __m256i __A, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_pminsw256_mask ((__v16hi) __A,
+						  (__v16hi) __B,
+						  (__v16hi)
+						  _mm256_setzero_si256 (),
+						  (__mmask16) __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_min_epi16 (__m256i __W, __mmask16 __M, __m256i __A,
+		       __m256i __B)
+{
+  return (__m256i) __builtin_ia32_pminsw256_mask ((__v16hi) __A,
+						  (__v16hi) __B,
+						  (__v16hi) __W,
+						  (__mmask16) __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_max_epu8 (__mmask32 __M, __m256i __A, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_pmaxub256_mask ((__v32qi) __A,
+						  (__v32qi) __B,
+						  (__v32qi)
+						  _mm256_setzero_si256 (),
+						  (__mmask32) __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_max_epu8 (__m256i __W, __mmask32 __M, __m256i __A,
+		      __m256i __B)
+{
+  return (__m256i) __builtin_ia32_pmaxub256_mask ((__v32qi) __A,
+						  (__v32qi) __B,
+						  (__v32qi) __W,
+						  (__mmask32) __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_max_epu8 (__mmask16 __M, __m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_pmaxub128_mask ((__v16qi) __A,
+						  (__v16qi) __B,
+						  (__v16qi)
+						  _mm_setzero_di (),
+						  (__mmask16) __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_max_epu8 (__m128i __W, __mmask16 __M, __m128i __A,
+		   __m128i __B)
+{
+  return (__m128i) __builtin_ia32_pmaxub128_mask ((__v16qi) __A,
+						  (__v16qi) __B,
+						  (__v16qi) __W,
+						  (__mmask16) __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_max_epi8 (__mmask32 __M, __m256i __A, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_pmaxsb256_mask ((__v32qi) __A,
+						  (__v32qi) __B,
+						  (__v32qi)
+						  _mm256_setzero_si256 (),
+						  (__mmask32) __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_max_epi8 (__m256i __W, __mmask32 __M, __m256i __A,
+		      __m256i __B)
+{
+  return (__m256i) __builtin_ia32_pmaxsb256_mask ((__v32qi) __A,
+						  (__v32qi) __B,
+						  (__v32qi) __W,
+						  (__mmask32) __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_max_epi8 (__mmask16 __M, __m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_pmaxsb128_mask ((__v16qi) __A,
+						  (__v16qi) __B,
+						  (__v16qi)
+						  _mm_setzero_di (),
+						  (__mmask16) __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_max_epi8 (__m128i __W, __mmask16 __M, __m128i __A,
+		   __m128i __B)
+{
+  return (__m128i) __builtin_ia32_pmaxsb128_mask ((__v16qi) __A,
+						  (__v16qi) __B,
+						  (__v16qi) __W,
+						  (__mmask16) __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_min_epu8 (__mmask32 __M, __m256i __A, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_pminub256_mask ((__v32qi) __A,
+						  (__v32qi) __B,
+						  (__v32qi)
+						  _mm256_setzero_si256 (),
+						  (__mmask32) __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_min_epu8 (__m256i __W, __mmask32 __M, __m256i __A,
+		      __m256i __B)
+{
+  return (__m256i) __builtin_ia32_pminub256_mask ((__v32qi) __A,
+						  (__v32qi) __B,
+						  (__v32qi) __W,
+						  (__mmask32) __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_min_epu8 (__mmask16 __M, __m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_pminub128_mask ((__v16qi) __A,
+						  (__v16qi) __B,
+						  (__v16qi)
+						  _mm_setzero_di (),
+						  (__mmask16) __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_min_epu8 (__m128i __W, __mmask16 __M, __m128i __A,
+		   __m128i __B)
+{
+  return (__m128i) __builtin_ia32_pminub128_mask ((__v16qi) __A,
+						  (__v16qi) __B,
+						  (__v16qi) __W,
+						  (__mmask16) __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_min_epi8 (__mmask32 __M, __m256i __A, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_pminsb256_mask ((__v32qi) __A,
+						  (__v32qi) __B,
+						  (__v32qi)
+						  _mm256_setzero_si256 (),
+						  (__mmask32) __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_min_epi8 (__m256i __W, __mmask32 __M, __m256i __A,
+		      __m256i __B)
+{
+  return (__m256i) __builtin_ia32_pminsb256_mask ((__v32qi) __A,
+						  (__v32qi) __B,
+						  (__v32qi) __W,
+						  (__mmask32) __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_min_epi8 (__mmask16 __M, __m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_pminsb128_mask ((__v16qi) __A,
+						  (__v16qi) __B,
+						  (__v16qi)
+						  _mm_setzero_di (),
+						  (__mmask16) __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_min_epi8 (__m128i __W, __mmask16 __M, __m128i __A,
+		   __m128i __B)
+{
+  return (__m128i) __builtin_ia32_pminsb128_mask ((__v16qi) __A,
+						  (__v16qi) __B,
+						  (__v16qi) __W,
+						  (__mmask16) __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_max_epi16 (__mmask16 __M, __m256i __A, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_pmaxsw256_mask ((__v16hi) __A,
+						  (__v16hi) __B,
+						  (__v16hi)
+						  _mm256_setzero_si256 (),
+						  (__mmask16) __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_max_epi16 (__m256i __W, __mmask16 __M, __m256i __A,
+		       __m256i __B)
+{
+  return (__m256i) __builtin_ia32_pmaxsw256_mask ((__v16hi) __A,
+						  (__v16hi) __B,
+						  (__v16hi) __W,
+						  (__mmask16) __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_max_epi16 (__mmask8 __M, __m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_pmaxsw128_mask ((__v8hi) __A,
+						  (__v8hi) __B,
+						  (__v8hi)
+						  _mm_setzero_di (),
+						  (__mmask8) __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_max_epi16 (__m128i __W, __mmask8 __M, __m128i __A,
+		    __m128i __B)
+{
+  return (__m128i) __builtin_ia32_pmaxsw128_mask ((__v8hi) __A,
+						  (__v8hi) __B,
+						  (__v8hi) __W,
+						  (__mmask8) __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_max_epu16 (__mmask16 __M, __m256i __A, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_pmaxuw256_mask ((__v16hi) __A,
+						  (__v16hi) __B,
+						  (__v16hi)
+						  _mm256_setzero_si256 (),
+						  (__mmask16) __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_max_epu16 (__m256i __W, __mmask16 __M, __m256i __A,
+		       __m256i __B)
+{
+  return (__m256i) __builtin_ia32_pmaxuw256_mask ((__v16hi) __A,
+						  (__v16hi) __B,
+						  (__v16hi) __W,
+						  (__mmask16) __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_max_epu16 (__mmask8 __M, __m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_pmaxuw128_mask ((__v8hi) __A,
+						  (__v8hi) __B,
+						  (__v8hi)
+						  _mm_setzero_di (),
+						  (__mmask8) __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_max_epu16 (__m128i __W, __mmask8 __M, __m128i __A,
+		    __m128i __B)
+{
+  return (__m128i) __builtin_ia32_pmaxuw128_mask ((__v8hi) __A,
+						  (__v8hi) __B,
+						  (__v8hi) __W,
+						  (__mmask8) __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_min_epi16 (__mmask8 __M, __m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_pminsw128_mask ((__v8hi) __A,
+						  (__v8hi) __B,
+						  (__v8hi)
+						  _mm_setzero_di (),
+						  (__mmask8) __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_min_epi16 (__m128i __W, __mmask8 __M, __m128i __A,
+		    __m128i __B)
+{
+  return (__m128i) __builtin_ia32_pminsw128_mask ((__v8hi) __A,
+						  (__v8hi) __B,
+						  (__v8hi) __W,
+						  (__mmask8) __M);
+}
+
+#ifdef __OPTIMIZE__
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_alignr_epi8 (__m256i __W, __mmask32 __U, __m256i __A,
+			 __m256i __B, const int __N)
+{
+  return (__m256i) __builtin_ia32_palignr256_mask ((__v4di) __A,
+						   (__v4di) __B,
+						   __N * 8,
+						   (__v4di) __W,
+						   (__mmask32) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_alignr_epi8 (__mmask32 __U, __m256i __A, __m256i __B,
+			  const int __N)
+{
+  return (__m256i) __builtin_ia32_palignr256_mask ((__v4di) __A,
+						   (__v4di) __B,
+						   __N * 8,
+						   (__v4di)
+						   _mm256_setzero_si256 (),
+						   (__mmask32) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_alignr_epi8 (__m128i __W, __mmask16 __U, __m128i __A,
+		      __m128i __B, const int __N)
+{
+  return (__m128i) __builtin_ia32_palignr128_mask ((__v2di) __A,
+						   (__v2di) __B,
+						   __N * 8,
+						   (__v2di) __W,
+						   (__mmask16) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_alignr_epi8 (__mmask16 __U, __m128i __A, __m128i __B,
+		       const int __N)
+{
+  return (__m128i) __builtin_ia32_palignr128_mask ((__v2di) __A,
+						   (__v2di) __B,
+						   __N * 8,
+						   (__v2di)
+						   _mm_setzero_si128 (),
+						   (__mmask16) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_dbsad_epu8 (__m256i __A, __m256i __B, const int __imm)
+{
+  return (__m256i) __builtin_ia32_dbpsadbw256_mask ((__v32qi) __A,
+						    (__v32qi) __B,
+						    __imm,
+						    (__v16hi)
+						    _mm256_setzero_si256 (),
+						    (__mmask16) -1);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_dbsad_epu8 (__m256i __W, __mmask16 __U, __m256i __A,
+			__m256i __B, const int __imm)
+{
+  return (__m256i) __builtin_ia32_dbpsadbw256_mask ((__v32qi) __A,
+						    (__v32qi) __B,
+						    __imm,
+						    (__v16hi) __W,
+						    (__mmask16) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_dbsad_epu8 (__mmask16 __U, __m256i __A, __m256i __B,
+			 const int __imm)
+{
+  return (__m256i) __builtin_ia32_dbpsadbw256_mask ((__v32qi) __A,
+						    (__v32qi) __B,
+						    __imm,
+						    (__v16hi)
+						    _mm256_setzero_si256 (),
+						    (__mmask16) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_dbsad_epu8 (__m128i __A, __m128i __B, const int __imm)
+{
+  return (__m128i) __builtin_ia32_dbpsadbw128_mask ((__v16qi) __A,
+						    (__v16qi) __B,
+						    __imm,
+						    (__v8hi)
+						    _mm_setzero_hi (),
+						    (__mmask8) -1);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_dbsad_epu8 (__m128i __W, __mmask8 __U, __m128i __A,
+		     __m128i __B, const int __imm)
+{
+  return (__m128i) __builtin_ia32_dbpsadbw128_mask ((__v16qi) __A,
+						    (__v16qi) __B,
+						    __imm,
+						    (__v8hi) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_dbsad_epu8 (__mmask8 __U, __m128i __A, __m128i __B,
+		      const int __imm)
+{
+  return (__m128i) __builtin_ia32_dbpsadbw128_mask ((__v16qi) __A,
+						    (__v16qi) __B,
+						    __imm,
+						    (__v8hi)
+						    _mm_setzero_si128 (),
+						    (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_blend_epi16 (__mmask8 __U, __m128i __A, __m128i __W)
+{
+  return (__m128i) __builtin_ia32_blendmw_128_mask ((__v8hi) __A,
+						    (__v8hi) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_blend_epi8 (__mmask16 __U, __m128i __A, __m128i __W)
+{
+  return (__m128i) __builtin_ia32_blendmb_128_mask ((__v16qi) __A,
+						    (__v16qi) __W,
+						    (__mmask16) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_blend_epi16 (__mmask16 __U, __m256i __A, __m256i __W)
+{
+  return (__m256i) __builtin_ia32_blendmw_256_mask ((__v16hi) __A,
+						    (__v16hi) __W,
+						    (__mmask16) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_blend_epi8 (__mmask32 __U, __m256i __A, __m256i __W)
+{
+  return (__m256i) __builtin_ia32_blendmb_256_mask ((__v32qi) __A,
+						    (__v32qi) __W,
+						    (__mmask32) __U);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cmp_epi16_mask (__mmask8 __U, __m128i __X, __m128i __Y,
+			 const int __P)
+{
+  return (__mmask8) __builtin_ia32_cmpw128_mask ((__v8hi) __X,
+						 (__v8hi) __Y, __P,
+						 (__mmask8) __U);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmp_epi16_mask (__m128i __X, __m128i __Y, const int __P)
+{
+  return (__mmask8) __builtin_ia32_cmpw128_mask ((__v8hi) __X,
+						 (__v8hi) __Y, __P,
+						 (__mmask8) -1);
+}
+
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cmp_epi16_mask (__mmask16 __U, __m256i __X, __m256i __Y,
+			    const int __P)
+{
+  return (__mmask16) __builtin_ia32_cmpw256_mask ((__v16hi) __X,
+						  (__v16hi) __Y, __P,
+						  (__mmask16) __U);
+}
+
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cmp_epi16_mask (__m256i __X, __m256i __Y, const int __P)
+{
+  return (__mmask16) __builtin_ia32_cmpw256_mask ((__v16hi) __X,
+						  (__v16hi) __Y, __P,
+						  (__mmask16) -1);
+}
+
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cmp_epi8_mask (__mmask8 __U, __m128i __X, __m128i __Y,
+			const int __P)
+{
+  return (__mmask16) __builtin_ia32_cmpb128_mask ((__v16qi) __X,
+						  (__v16qi) __Y, __P,
+						  (__mmask16) __U);
+}
+
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmp_epi8_mask (__m128i __X, __m128i __Y, const int __P)
+{
+  return (__mmask16) __builtin_ia32_cmpb128_mask ((__v16qi) __X,
+						  (__v16qi) __Y, __P,
+						  (__mmask16) -1);
+}
+
+extern __inline __mmask32
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cmp_epi8_mask (__mmask16 __U, __m256i __X, __m256i __Y,
+			   const int __P)
+{
+  return (__mmask32) __builtin_ia32_cmpb256_mask ((__v32qi) __X,
+						  (__v32qi) __Y, __P,
+						  (__mmask32) __U);
+}
+
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cmp_epi8_mask (__m256i __X, __m256i __Y, const int __P)
+{
+  return (__mmask32) __builtin_ia32_cmpb256_mask ((__v32qi) __X,
+						  (__v32qi) __Y, __P,
+						  (__mmask32) -1);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cmp_epu16_mask (__mmask8 __U, __m128i __X, __m128i __Y,
+			 const int __P)
+{
+  return (__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi) __X,
+						  (__v8hi) __Y, __P,
+						  (__mmask8) __U);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmp_epu16_mask (__m128i __X, __m128i __Y, const int __P)
+{
+  return (__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi) __X,
+						  (__v8hi) __Y, __P,
+						  (__mmask8) -1);
+}
+
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cmp_epu16_mask (__mmask16 __U, __m256i __X, __m256i __Y,
+			    const int __P)
+{
+  return (__mmask16) __builtin_ia32_ucmpw256_mask ((__v16hi) __X,
+						   (__v16hi) __Y, __P,
+						   (__mmask16) __U);
+}
+
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cmp_epu16_mask (__m256i __X, __m256i __Y, const int __P)
+{
+  return (__mmask16) __builtin_ia32_ucmpw256_mask ((__v16hi) __X,
+						   (__v16hi) __Y, __P,
+						   (__mmask16) -1);
+}
+
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cmp_epu8_mask (__mmask8 __U, __m128i __X, __m128i __Y,
+			const int __P)
+{
+  return (__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi) __X,
+						   (__v16qi) __Y, __P,
+						   (__mmask16) __U);
+}
+
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmp_epu8_mask (__m128i __X, __m128i __Y, const int __P)
+{
+  return (__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi) __X,
+						   (__v16qi) __Y, __P,
+						   (__mmask16) -1);
+}
+
+extern __inline __mmask32
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cmp_epu8_mask (__mmask16 __U, __m256i __X, __m256i __Y,
+			   const int __P)
+{
+  return (__mmask32) __builtin_ia32_ucmpb256_mask ((__v32qi) __X,
+						   (__v32qi) __Y, __P,
+						   (__mmask32) __U);
+}
+
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cmp_epu8_mask (__m256i __X, __m256i __Y, const int __P)
+{
+  return (__mmask32) __builtin_ia32_ucmpb256_mask ((__v32qi) __X,
+						   (__v32qi) __Y, __P,
+						   (__mmask32) -1);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_srli_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
+			const int __imm)
+{
+  return (__m256i) __builtin_ia32_psrlwi256_mask ((__v16hi) __A, __imm,
+						  (__v16hi) __W,
+						  (__mmask16) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_srli_epi16 (__mmask16 __U, __m256i __A, const int __imm)
+{
+  return (__m256i) __builtin_ia32_psrlwi256_mask ((__v16hi) __A, __imm,
+						  (__v16hi)
+						  _mm256_setzero_si256 (),
+						  (__mmask16) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_srli_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
+		     const int __imm)
+{
+  return (__m128i) __builtin_ia32_psrlwi128_mask ((__v8hi) __A, __imm,
+						  (__v8hi) __W,
+						  (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_srli_epi16 (__mmask8 __U, __m128i __A, const int __imm)
+{
+  return (__m128i) __builtin_ia32_psrlwi128_mask ((__v8hi) __A, __imm,
+						  (__v8hi)
+						  _mm_setzero_si128 (),
+						  (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_shufflehi_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
+			     const int __imm)
+{
+  return (__m256i) __builtin_ia32_pshufhw256_mask ((__v16hi) __A,
+						   __imm,
+						   (__v16hi) __W,
+						   (__mmask16) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_shufflehi_epi16 (__mmask16 __U, __m256i __A,
+			      const int __imm)
+{
+  return (__m256i) __builtin_ia32_pshufhw256_mask ((__v16hi) __A,
+						   __imm,
+						   (__v16hi)
+						   _mm256_setzero_si256 (),
+						   (__mmask16) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_shufflehi_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
+			  const int __imm)
+{
+  return (__m128i) __builtin_ia32_pshufhw128_mask ((__v8hi) __A, __imm,
+						   (__v8hi) __W,
+						   (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_shufflehi_epi16 (__mmask8 __U, __m128i __A, const int __imm)
+{
+  return (__m128i) __builtin_ia32_pshufhw128_mask ((__v8hi) __A, __imm,
+						   (__v8hi)
+						   _mm_setzero_hi (),
+						   (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_shufflelo_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
+			     const int __imm)
+{
+  return (__m256i) __builtin_ia32_pshuflw256_mask ((__v16hi) __A,
+						   __imm,
+						   (__v16hi) __W,
+						   (__mmask16) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_shufflelo_epi16 (__mmask16 __U, __m256i __A,
+			      const int __imm)
+{
+  return (__m256i) __builtin_ia32_pshuflw256_mask ((__v16hi) __A,
+						   __imm,
+						   (__v16hi)
+						   _mm256_setzero_si256 (),
+						   (__mmask16) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_shufflelo_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
+			  const int __imm)
+{
+  return (__m128i) __builtin_ia32_pshuflw128_mask ((__v8hi) __A, __imm,
+						   (__v8hi) __W,
+						   (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_shufflelo_epi16 (__mmask8 __U, __m128i __A, const int __imm)
+{
+  return (__m128i) __builtin_ia32_pshuflw128_mask ((__v8hi) __A, __imm,
+						   (__v8hi)
+						   _mm_setzero_hi (),
+						   (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_srai_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
+			const int __imm)
+{
+  return (__m256i) __builtin_ia32_psrawi256_mask ((__v16hi) __A, __imm,
+						  (__v16hi) __W,
+						  (__mmask16) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_srai_epi16 (__mmask16 __U, __m256i __A, const int __imm)
+{
+  return (__m256i) __builtin_ia32_psrawi256_mask ((__v16hi) __A, __imm,
+						  (__v16hi)
+						  _mm256_setzero_si256 (),
+						  (__mmask16) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_srai_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
+		     const int __imm)
+{
+  return (__m128i) __builtin_ia32_psrawi128_mask ((__v8hi) __A, __imm,
+						  (__v8hi) __W,
+						  (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_srai_epi16 (__mmask8 __U, __m128i __A, const int __imm)
+{
+  return (__m128i) __builtin_ia32_psrawi128_mask ((__v8hi) __A, __imm,
+						  (__v8hi)
+						  _mm_setzero_si128 (),
+						  (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_slli_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
+			int __B)
+{
+  return (__m256i) __builtin_ia32_psllwi256_mask ((__v16hi) __A, __B,
+						  (__v16hi) __W,
+						  (__mmask16) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_slli_epi16 (__mmask16 __U, __m256i __A, int __B)
+{
+  return (__m256i) __builtin_ia32_psllwi256_mask ((__v16hi) __A, __B,
+						  (__v16hi)
+						  _mm256_setzero_si256 (),
+						  (__mmask16) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_slli_epi16 (__m128i __W, __mmask8 __U, __m128i __A, int __B)
+{
+  return (__m128i) __builtin_ia32_psllwi128_mask ((__v8hi) __A, __B,
+						  (__v8hi) __W,
+						  (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_slli_epi16 (__mmask8 __U, __m128i __A, int __B)
+{
+  return (__m128i) __builtin_ia32_psllwi128_mask ((__v8hi) __A, __B,
+						  (__v8hi)
+						  _mm_setzero_si128 (),
+						  (__mmask8) __U);
+}
+
+#else
+#define _mm256_mask_alignr_epi8(W, U, X, Y, N)					    \
+  ((__m256i) __builtin_ia32_palignr256_mask ((__v4di)(__m256i)(X),		    \
+					    (__v4di)(__m256i)(Y), (int)(N * 8),	    \
+					    (__v4di)(__m256i)(X), (__mmask32)(U)))
+
+#define _mm256_mask_srli_epi16(W, U, A, B)                              \
+  ((__m256i) __builtin_ia32_psrlwi256_mask ((__v16hi)(__m256i)(A),      \
+    (int)(B), (__v16hi)(__m256i)(W), (__mmask16)(U)))
+
+#define _mm256_maskz_srli_epi16(U, A, B)                                \
+  ((__m256i) __builtin_ia32_psrlwi256_mask ((__v16hi)(__m256i)(A),      \
+    (int)(B), (__v16hi)_mm256_setzero_si256 (), (__mmask16)(U)))
+
+#define _mm_mask_srli_epi16(W, U, A, B)                                 \
+  ((__m128i) __builtin_ia32_psrlwi128_mask ((__v8hi)(__m128i)(A),       \
+    (int)(B), (__v8hi)(__m128i)(W), (__mmask8)(U)))
+
+#define _mm_maskz_srli_epi16(U, A, B)                                   \
+  ((__m128i) __builtin_ia32_psrlwi128_mask ((__v8hi)(__m128i)(A),       \
+    (int)(B), (__v8hi)_mm_setzero_si128(), (__mmask8)(U)))
+
+#define _mm256_mask_srai_epi16(W, U, A, B)                              \
+  ((__m256i) __builtin_ia32_psrawi256_mask ((__v16hi)(__m256i)(A),      \
+    (int)(B), (__v16hi)(__m256i)(W), (__mmask16)(U)))
+
+#define _mm256_maskz_srai_epi16(U, A, B)                                \
+  ((__m256i) __builtin_ia32_psrawi256_mask ((__v16hi)(__m256i)(A),      \
+    (int)(B), (__v16hi)_mm256_setzero_si256 (), (__mmask16)(U)))
+
+#define _mm_mask_srai_epi16(W, U, A, B)                                 \
+  ((__m128i) __builtin_ia32_psrawi128_mask ((__v8hi)(__m128i)(A),       \
+    (int)(B), (__v8hi)(__m128i)(W), (__mmask8)(U)))
+
+#define _mm_maskz_srai_epi16(U, A, B)                                   \
+  ((__m128i) __builtin_ia32_psrawi128_mask ((__v8hi)(__m128i)(A),       \
+    (int)(B), (__v8hi)_mm_setzero_si128(), (__mmask8)(U)))
+
+#define _mm256_mask_shufflehi_epi16(W, U, A, B)                                     \
+  ((__m256i) __builtin_ia32_pshufhw256_mask ((__v16hi)(__m256i)(A), (int)(B),       \
+                                             (__v16hi)(__m256i)(W),                 \
+                                             (__mmask16)(U)))
+
+#define _mm256_maskz_shufflehi_epi16(U, A, B)                                       \
+  ((__m256i) __builtin_ia32_pshufhw256_mask ((__v16hi)(__m256i)(A), (int)(B),       \
+                                             (__v16hi)(__m256i)_mm256_setzero_si256 (), \
+                                             (__mmask16)(U)))
+
+#define _mm_mask_shufflehi_epi16(W, U, A, B)                                        \
+  ((__m128i) __builtin_ia32_pshufhw128_mask ((__v8hi)(__m128i)(A), (int)(B),        \
+                                             (__v8hi)(__m128i)(W),                  \
+                                             (__mmask8)(U)))
+
+#define _mm_maskz_shufflehi_epi16(U, A, B)                                          \
+  ((__m128i) __builtin_ia32_pshufhw128_mask ((__v8hi)(__m128i)(A), (int)(B),        \
+                                             (__v8hi)(__m128i)_mm_setzero_hi(),     \
+                                             (__mmask8)(U)))
+
+#define _mm256_mask_shufflelo_epi16(W, U, A, B)                                     \
+  ((__m256i) __builtin_ia32_pshuflw256_mask ((__v16hi)(__m256i)(A), (int)(B),       \
+                                             (__v16hi)(__m256i)(W),                 \
+                                             (__mmask16)(U)))
+
+#define _mm256_maskz_shufflelo_epi16(U, A, B)                                       \
+  ((__m256i) __builtin_ia32_pshuflw256_mask ((__v16hi)(__m256i)(A), (int)(B),       \
+                                             (__v16hi)(__m256i)_mm256_setzero_si256 (), \
+                                             (__mmask16)(U)))
+
+#define _mm_mask_shufflelo_epi16(W, U, A, B)                                        \
+  ((__m128i) __builtin_ia32_pshuflw128_mask ((__v8hi)(__m128i)(A), (int)(B),        \
+                                             (__v8hi)(__m128i)(W),                  \
+                                             (__mmask8)(U)))
+
+#define _mm_maskz_shufflelo_epi16(U, A, B)                                          \
+  ((__m128i) __builtin_ia32_pshuflw128_mask ((__v8hi)(__m128i)(A), (int)(B),        \
+                                             (__v8hi)(__m128i)_mm_setzero_hi(),     \
+                                             (__mmask8)(U)))
+
+#define _mm256_maskz_alignr_epi8(U, X, Y, N)					    \
+  ((__m256i) __builtin_ia32_palignr256_mask ((__v4di)(__m256i)(X),		    \
+					    (__v4di)(__m256i)(Y), (int)(N * 8),	    \
+					    (__v4di)(__m256i)_mm256_setzero_si256 (),   \
+					    (__mmask32)(U)))
+
+#define _mm_mask_alignr_epi8(W, U, X, Y, N)					    \
+  ((__m128i) __builtin_ia32_palignr128_mask ((__v2di)(__m128i)(X),		    \
+					    (__v2di)(__m128i)(Y), (int)(N * 8),	    \
+					    (__v2di)(__m128i)(X), (__mmask16)(U)))
+
+#define _mm_maskz_alignr_epi8(U, X, Y, N)					    \
+  ((__m128i) __builtin_ia32_palignr128_mask ((__v2di)(__m128i)(X),		    \
+					    (__v2di)(__m128i)(Y), (int)(N * 8),	    \
+					    (__v2di)(__m128i)_mm_setzero_di(),	    \
+					    (__mmask16)(U)))
+
+#define _mm_mask_slli_epi16(W, U, X, C)					  \
+  ((__m128i)__builtin_ia32_psllwi128_mask ((__v8hi)(__m128i)(X), (int)(C),\
+    (__v8hi)(__m128i)(W),\
+    (__mmask8)(U)))
+
+#define _mm_maskz_slli_epi16(U, X, C)					  \
+  ((__m128i)__builtin_ia32_psllwi128_mask ((__v8hi)(__m128i)(X), (int)(C),\
+    (__v8hi)(__m128i)_mm_setzero_hi(),\
+    (__mmask8)(U)))
+
+#define _mm256_dbsad_epu8(X, Y, C)                                                  \
+  ((__m256i) __builtin_ia32_dbpsadbw256_mask ((__v32qi)(__m256i) (X),               \
+                                              (__v32qi)(__m256i) (Y), (int) (C),    \
+                                              (__v16hi)(__m256i)_mm256_setzero_si256(),\
+                                              (__mmask16)-1))
+
+#define _mm256_mask_slli_epi16(W, U, X, C)                                 \
+  ((__m256i)__builtin_ia32_psllwi256_mask ((__v16hi)(__m256i)(X), (int)(C),\
+    (__v16hi)(__m256i)(W),\
+    (__mmask16)(U)))
+
+#define _mm256_maskz_slli_epi16(U, X, C)                                   \
+  ((__m256i)__builtin_ia32_psllwi256_mask ((__v16hi)(__m256i)(X), (int)(C),\
+    (__v16hi)(__m256i)_mm256_setzero_si256 (),\
+    (__mmask16)(U)))
+
+#define _mm256_mask_dbsad_epu8(W, U, X, Y, C)                                       \
+  ((__m256i) __builtin_ia32_dbpsadbw256_mask ((__v32qi)(__m256i) (X),               \
+                                              (__v32qi)(__m256i) (Y), (int) (C),    \
+                                              (__v16hi)(__m256i)(W),                \
+                                              (__mmask16)(U)))
+
+#define _mm256_maskz_dbsad_epu8(U, X, Y, C)                                         \
+  ((__m256i) __builtin_ia32_dbpsadbw256_mask ((__v32qi)(__m256i) (X),               \
+                                              (__v32qi)(__m256i) (Y), (int) (C),    \
+                                              (__v16hi)(__m256i)_mm256_setzero_si256(),\
+                                              (__mmask16)(U)))
+
+#define _mm_dbsad_epu8(X, Y, C)                                                     \
+  ((__m128i) __builtin_ia32_dbpsadbw128_mask ((__v16qi)(__m128i) (X),               \
+                                              (__v16qi)(__m128i) (Y), (int) (C),    \
+                                              (__v8hi)(__m128i)_mm_setzero_si128(), \
+                                              (__mmask8)-1))
+
+#define _mm_mask_dbsad_epu8(W, U, X, Y, C)                                          \
+  ((__m128i) __builtin_ia32_dbpsadbw128_mask ((__v16qi)(__m128i) (X),               \
+                                              (__v16qi)(__m128i) (Y), (int) (C),    \
+                                              (__v8hi)(__m128i)(W),                 \
+                                              (__mmask8)(U)))
+
+#define _mm_maskz_dbsad_epu8(U, X, Y, C)                                            \
+  ((__m128i) __builtin_ia32_dbpsadbw128_mask ((__v16qi)(__m128i) (X),               \
+                                              (__v16qi)(__m128i) (Y), (int) (C),    \
+                                              (__v8hi)(__m128i)_mm_setzero_si128(), \
+                                              (__mmask8)(U)))
+
+#define _mm_mask_blend_epi16(__U, __A, __W)			      \
+  ((__m128i) __builtin_ia32_blendmw_128_mask ((__v8hi) (__A),	      \
+						    (__v8hi) (__W),   \
+						    (__mmask8) (__U)))
+
+#define _mm_mask_blend_epi8(__U, __A, __W)			      \
+  ((__m128i) __builtin_ia32_blendmb_128_mask ((__v16qi) (__A),	      \
+						    (__v16qi) (__W),  \
+						    (__mmask16) (__U)))
+
+#define _mm256_mask_blend_epi16(__U, __A, __W)			      \
+  ((__m256i) __builtin_ia32_blendmw_256_mask ((__v16hi) (__A),	      \
+						    (__v16hi) (__W),  \
+						    (__mmask16) (__U)))
+
+#define _mm256_mask_blend_epi8(__U, __A, __W)			      \
+  ((__m256i) __builtin_ia32_blendmb_256_mask ((__v32qi) (__A),	      \
+						    (__v32qi) (__W),  \
+						    (__mmask32) (__U)))
+
+#define _mm_cmp_epi16_mask(X, Y, P)				\
+  ((__mmask8) __builtin_ia32_cmpw128_mask ((__v8hi)(__m128i)(X),	\
+					    (__v8hi)(__m128i)(Y), (int)(P),\
+					    (__mmask8)(-1)))
+
+#define _mm_cmp_epi8_mask(X, Y, P)				\
+  ((__mmask16) __builtin_ia32_cmpb128_mask ((__v16qi)(__m128i)(X),	\
+					    (__v16qi)(__m128i)(Y), (int)(P),\
+					    (__mmask16)(-1)))
+
+#define _mm256_cmp_epi16_mask(X, Y, P)				\
+  ((__mmask16) __builtin_ia32_cmpw256_mask ((__v16hi)(__m256i)(X),	\
+					    (__v16hi)(__m256i)(Y), (int)(P),\
+					    (__mmask16)(-1)))
+
+#define _mm256_cmp_epi8_mask(X, Y, P)				\
+  ((__mmask32) __builtin_ia32_cmpb256_mask ((__v32qi)(__m256i)(X),	\
+					    (__v32qi)(__m256i)(Y), (int)(P),\
+					    (__mmask32)(-1)))
+
+#define _mm_cmp_epu16_mask(X, Y, P)				\
+  ((__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi)(__m128i)(X),	\
+					    (__v8hi)(__m128i)(Y), (int)(P),\
+					    (__mmask8)(-1)))
+
+#define _mm_cmp_epu8_mask(X, Y, P)				\
+  ((__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi)(__m128i)(X),	\
+					    (__v16qi)(__m128i)(Y), (int)(P),\
+					    (__mmask16)(-1)))
+
+#define _mm256_cmp_epu16_mask(X, Y, P)				\
+  ((__mmask16) __builtin_ia32_ucmpw256_mask ((__v16hi)(__m256i)(X),	\
+					    (__v16hi)(__m256i)(Y), (int)(P),\
+					    (__mmask16)(-1)))
+
+#define _mm256_cmp_epu8_mask(X, Y, P)				\
+  ((__mmask32) __builtin_ia32_ucmpb256_mask ((__v32qi)(__m256i)(X),	\
+					    (__v32qi)(__m256i)(Y), (int)(P),\
+					    (__mmask32)-1))
+
+#define _mm_mask_cmp_epi16_mask(M, X, Y, P)				\
+  ((__mmask8) __builtin_ia32_cmpw128_mask ((__v8hi)(__m128i)(X),	\
+					    (__v8hi)(__m128i)(Y), (int)(P),\
+					    (__mmask16)(M)))
+
+#define _mm_mask_cmp_epi8_mask(M, X, Y, P)				\
+  ((__mmask16) __builtin_ia32_cmpb128_mask ((__v16qi)(__m128i)(X),	\
+					    (__v16qi)(__m128i)(Y), (int)(P),\
+					    (__mmask16)(M)))
+
+#define _mm256_mask_cmp_epi16_mask(M, X, Y, P)				\
+  ((__mmask16) __builtin_ia32_cmpw256_mask ((__v16hi)(__m256i)(X),	\
+					    (__v16hi)(__m256i)(Y), (int)(P),\
+					    (__mmask16)(M)))
+
+#define _mm256_mask_cmp_epi8_mask(M, X, Y, P)				\
+  ((__mmask32) __builtin_ia32_cmpb256_mask ((__v32qi)(__m256i)(X),	\
+					    (__v32qi)(__m256i)(Y), (int)(P),\
+					    (__mmask32)(M)))
+
+#define _mm_mask_cmp_epu16_mask(M, X, Y, P)				\
+  ((__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi)(__m128i)(X),	\
+					    (__v8hi)(__m128i)(Y), (int)(P),\
+					    (__mmask8)(M)))
+
+#define _mm_mask_cmp_epu8_mask(M, X, Y, P)				\
+  ((__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi)(__m128i)(X),	\
+					    (__v16qi)(__m128i)(Y), (int)(P),\
+					    (__mmask16)(M)))
+
+#define _mm256_mask_cmp_epu16_mask(M, X, Y, P)				\
+  ((__mmask16) __builtin_ia32_ucmpw256_mask ((__v16hi)(__m256i)(X),	\
+					    (__v16hi)(__m256i)(Y), (int)(P),\
+					    (__mmask16)(M)))
+
+#define _mm256_mask_cmp_epu8_mask(M, X, Y, P)				\
+  ((__mmask32) __builtin_ia32_ucmpb256_mask ((__v32qi)(__m256i)(X),	\
+					    (__v32qi)(__m256i)(Y), (int)(P),\
+					    (__mmask32)M))
+#endif
+
+extern __inline __mmask32
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cmpneq_epi8_mask (__m256i __X, __m256i __Y)
+{
+  return (__mmask32) __builtin_ia32_cmpb256_mask ((__v32qi) __X,
+						  (__v32qi) __Y, 4,
+						  (__mmask32) - 1);
+}
+
+extern __inline __mmask32
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cmplt_epi8_mask (__m256i __X, __m256i __Y)
+{
+  return (__mmask32) __builtin_ia32_cmpb256_mask ((__v32qi) __X,
+						  (__v32qi) __Y, 1,
+						  (__mmask32) - 1);
+}
+
+extern __inline __mmask32
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cmpge_epi8_mask (__m256i __X, __m256i __Y)
+{
+  return (__mmask32) __builtin_ia32_cmpb256_mask ((__v32qi) __X,
+						  (__v32qi) __Y, 5,
+						  (__mmask32) - 1);
+}
+
+extern __inline __mmask32
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cmple_epi8_mask (__m256i __X, __m256i __Y)
+{
+  return (__mmask32) __builtin_ia32_cmpb256_mask ((__v32qi) __X,
+						  (__v32qi) __Y, 2,
+						  (__mmask32) - 1);
+}
+
+extern __inline __mmask16
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cmpneq_epi16_mask (__m256i __X, __m256i __Y)
+{
+  return (__mmask16) __builtin_ia32_cmpw256_mask ((__v16hi) __X,
+						  (__v16hi) __Y, 4,
+						  (__mmask16) - 1);
+}
+
+extern __inline __mmask16
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cmplt_epi16_mask (__m256i __X, __m256i __Y)
+{
+  return (__mmask16) __builtin_ia32_cmpw256_mask ((__v16hi) __X,
+						  (__v16hi) __Y, 1,
+						  (__mmask16) - 1);
+}
+
+extern __inline __mmask16
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cmpge_epi16_mask (__m256i __X, __m256i __Y)
+{
+  return (__mmask16) __builtin_ia32_cmpw256_mask ((__v16hi) __X,
+						  (__v16hi) __Y, 5,
+						  (__mmask16) - 1);
+}
+
+extern __inline __mmask16
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cmple_epi16_mask (__m256i __X, __m256i __Y)
+{
+  return (__mmask16) __builtin_ia32_cmpw256_mask ((__v16hi) __X,
+						  (__v16hi) __Y, 2,
+						  (__mmask16) - 1);
+}
+
+extern __inline __mmask16
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpneq_epu8_mask (__m128i __X, __m128i __Y)
+{
+  return (__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi) __X,
+						   (__v16qi) __Y, 4,
+						   (__mmask16) - 1);
+}
+
+extern __inline __mmask16
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmplt_epu8_mask (__m128i __X, __m128i __Y)
+{
+  return (__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi) __X,
+						   (__v16qi) __Y, 1,
+						   (__mmask16) - 1);
+}
+
+extern __inline __mmask16
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpge_epu8_mask (__m128i __X, __m128i __Y)
+{
+  return (__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi) __X,
+						   (__v16qi) __Y, 5,
+						   (__mmask16) - 1);
+}
+
+extern __inline __mmask16
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmple_epu8_mask (__m128i __X, __m128i __Y)
+{
+  return (__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi) __X,
+						   (__v16qi) __Y, 2,
+						   (__mmask16) - 1);
+}
+
+extern __inline __mmask8
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpneq_epu16_mask (__m128i __X, __m128i __Y)
+{
+  return (__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi) __X,
+						  (__v8hi) __Y, 4,
+						  (__mmask8) - 1);
+}
+
+extern __inline __mmask8
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmplt_epu16_mask (__m128i __X, __m128i __Y)
+{
+  return (__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi) __X,
+						  (__v8hi) __Y, 1,
+						  (__mmask8) - 1);
+}
+
+extern __inline __mmask8
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpge_epu16_mask (__m128i __X, __m128i __Y)
+{
+  return (__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi) __X,
+						  (__v8hi) __Y, 5,
+						  (__mmask8) - 1);
+}
+
+extern __inline __mmask8
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmple_epu16_mask (__m128i __X, __m128i __Y)
+{
+  return (__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi) __X,
+						  (__v8hi) __Y, 2,
+						  (__mmask8) - 1);
+}
+
+extern __inline __mmask16
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpneq_epi8_mask (__m128i __X, __m128i __Y)
+{
+  return (__mmask16) __builtin_ia32_cmpb128_mask ((__v16qi) __X,
+						  (__v16qi) __Y, 4,
+						  (__mmask16) - 1);
+}
+
+extern __inline __mmask16
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmplt_epi8_mask (__m128i __X, __m128i __Y)
+{
+  return (__mmask16) __builtin_ia32_cmpb128_mask ((__v16qi) __X,
+						  (__v16qi) __Y, 1,
+						  (__mmask16) - 1);
+}
+
+extern __inline __mmask16
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpge_epi8_mask (__m128i __X, __m128i __Y)
+{
+  return (__mmask16) __builtin_ia32_cmpb128_mask ((__v16qi) __X,
+						  (__v16qi) __Y, 5,
+						  (__mmask16) - 1);
+}
+
+extern __inline __mmask16
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmple_epi8_mask (__m128i __X, __m128i __Y)
+{
+  return (__mmask16) __builtin_ia32_cmpb128_mask ((__v16qi) __X,
+						  (__v16qi) __Y, 2,
+						  (__mmask16) - 1);
+}
+
+extern __inline __mmask8
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpneq_epi16_mask (__m128i __X, __m128i __Y)
+{
+  return (__mmask8) __builtin_ia32_cmpw128_mask ((__v8hi) __X,
+						 (__v8hi) __Y, 4,
+						 (__mmask8) - 1);
+}
+
+extern __inline __mmask8
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmplt_epi16_mask (__m128i __X, __m128i __Y)
+{
+  return (__mmask8) __builtin_ia32_cmpw128_mask ((__v8hi) __X,
+						 (__v8hi) __Y, 1,
+						 (__mmask8) - 1);
+}
+
+extern __inline __mmask8
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpge_epi16_mask (__m128i __X, __m128i __Y)
+{
+  return (__mmask8) __builtin_ia32_cmpw128_mask ((__v8hi) __X,
+						 (__v8hi) __Y, 5,
+						 (__mmask8) - 1);
+}
+
+extern __inline __mmask8
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmple_epi16_mask (__m128i __X, __m128i __Y)
+{
+  return (__mmask8) __builtin_ia32_cmpw128_mask ((__v8hi) __X,
+						 (__v8hi) __Y, 2,
+						 (__mmask8) - 1);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_mulhrs_epi16 (__m256i __W, __mmask16 __U, __m256i __X,
+			  __m256i __Y)
+{
+  return (__m256i) __builtin_ia32_pmulhrsw256_mask ((__v16hi) __X,
+						    (__v16hi) __Y,
+						    (__v16hi) __W,
+						    (__mmask16) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_mulhrs_epi16 (__mmask16 __U, __m256i __X, __m256i __Y)
+{
+  return (__m256i) __builtin_ia32_pmulhrsw256_mask ((__v16hi) __X,
+						    (__v16hi) __Y,
+						    (__v16hi)
+						    _mm256_setzero_si256 (),
+						    (__mmask16) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_mulhi_epu16 (__m256i __W, __mmask16 __U, __m256i __A,
+			 __m256i __B)
+{
+  return (__m256i) __builtin_ia32_pmulhuw256_mask ((__v16hi) __A,
+						   (__v16hi) __B,
+						   (__v16hi) __W,
+						   (__mmask16) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_mulhi_epu16 (__mmask16 __U, __m256i __A, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_pmulhuw256_mask ((__v16hi) __A,
+						   (__v16hi) __B,
+						   (__v16hi)
+						   _mm256_setzero_si256 (),
+						   (__mmask16) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_mulhi_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
+			 __m256i __B)
+{
+  return (__m256i) __builtin_ia32_pmulhw256_mask ((__v16hi) __A,
+						  (__v16hi) __B,
+						  (__v16hi) __W,
+						  (__mmask16) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_mulhi_epi16 (__mmask16 __U, __m256i __A, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_pmulhw256_mask ((__v16hi) __A,
+						  (__v16hi) __B,
+						  (__v16hi)
+						  _mm256_setzero_si256 (),
+						  (__mmask16) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_mulhi_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
+		      __m128i __B)
+{
+  return (__m128i) __builtin_ia32_pmulhw128_mask ((__v8hi) __A,
+						  (__v8hi) __B,
+						  (__v8hi) __W,
+						  (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_mulhi_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_pmulhw128_mask ((__v8hi) __A,
+						  (__v8hi) __B,
+						  (__v8hi)
+						  _mm_setzero_hi (),
+						  (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_mulhi_epu16 (__m128i __W, __mmask8 __U, __m128i __A,
+		      __m128i __B)
+{
+  return (__m128i) __builtin_ia32_pmulhuw128_mask ((__v8hi) __A,
+						   (__v8hi) __B,
+						   (__v8hi) __W,
+						   (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_mulhi_epu16 (__mmask8 __U, __m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_pmulhuw128_mask ((__v8hi) __A,
+						   (__v8hi) __B,
+						   (__v8hi)
+						   _mm_setzero_hi (),
+						   (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_mulhrs_epi16 (__m128i __W, __mmask8 __U, __m128i __X,
+		       __m128i __Y)
+{
+  return (__m128i) __builtin_ia32_pmulhrsw128_mask ((__v8hi) __X,
+						    (__v8hi) __Y,
+						    (__v8hi) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_mulhrs_epi16 (__mmask8 __U, __m128i __X, __m128i __Y)
+{
+  return (__m128i) __builtin_ia32_pmulhrsw128_mask ((__v8hi) __X,
+						    (__v8hi) __Y,
+						    (__v8hi)
+						    _mm_setzero_hi (),
+						    (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_mullo_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
+			 __m256i __B)
+{
+  return (__m256i) __builtin_ia32_pmullw256_mask ((__v16hi) __A,
+						  (__v16hi) __B,
+						  (__v16hi) __W,
+						  (__mmask16) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_mullo_epi16 (__mmask16 __U, __m256i __A, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_pmullw256_mask ((__v16hi) __A,
+						  (__v16hi) __B,
+						  (__v16hi)
+						  _mm256_setzero_si256 (),
+						  (__mmask16) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_mullo_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
+		      __m128i __B)
+{
+  return (__m128i) __builtin_ia32_pmullw128_mask ((__v8hi) __A,
+						  (__v8hi) __B,
+						  (__v8hi) __W,
+						  (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_mullo_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_pmullw128_mask ((__v8hi) __A,
+						  (__v8hi) __B,
+						  (__v8hi)
+						  _mm_setzero_hi (),
+						  (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cvtepi8_epi16 (__m256i __W, __mmask32 __U, __m128i __A)
+{
+  return (__m256i) __builtin_ia32_pmovsxbw256_mask ((__v16qi) __A,
+						    (__v16hi) __W,
+						    (__mmask16) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_cvtepi8_epi16 (__mmask16 __U, __m128i __A)
+{
+  return (__m256i) __builtin_ia32_pmovsxbw256_mask ((__v16qi) __A,
+						    (__v16hi)
+						    _mm256_setzero_si256 (),
+						    (__mmask16) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cvtepi8_epi16 (__m128i __W, __mmask32 __U, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_pmovsxbw128_mask ((__v16qi) __A,
+						    (__v8hi) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_cvtepi8_epi16 (__mmask8 __U, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_pmovsxbw128_mask ((__v16qi) __A,
+						    (__v8hi)
+						    _mm_setzero_si128 (),
+						    (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cvtepu8_epi16 (__m256i __W, __mmask32 __U, __m128i __A)
+{
+  return (__m256i) __builtin_ia32_pmovzxbw256_mask ((__v16qi) __A,
+						    (__v16hi) __W,
+						    (__mmask16) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_cvtepu8_epi16 (__mmask16 __U, __m128i __A)
+{
+  return (__m256i) __builtin_ia32_pmovzxbw256_mask ((__v16qi) __A,
+						    (__v16hi)
+						    _mm256_setzero_si256 (),
+						    (__mmask16) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cvtepu8_epi16 (__m128i __W, __mmask32 __U, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_pmovzxbw128_mask ((__v16qi) __A,
+						    (__v8hi) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_cvtepu8_epi16 (__mmask8 __U, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_pmovzxbw128_mask ((__v16qi) __A,
+						    (__v8hi)
+						    _mm_setzero_si128 (),
+						    (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_avg_epu8 (__m256i __W, __mmask32 __U, __m256i __A,
+		      __m256i __B)
+{
+  return (__m256i) __builtin_ia32_pavgb256_mask ((__v32qi) __A,
+						 (__v32qi) __B,
+						 (__v32qi) __W,
+						 (__mmask32) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_avg_epu8 (__mmask32 __U, __m256i __A, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_pavgb256_mask ((__v32qi) __A,
+						 (__v32qi) __B,
+						 (__v32qi)
+						 _mm256_setzero_si256 (),
+						 (__mmask32) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_avg_epu8 (__m128i __W, __mmask16 __U, __m128i __A,
+		   __m128i __B)
+{
+  return (__m128i) __builtin_ia32_pavgb128_mask ((__v16qi) __A,
+						 (__v16qi) __B,
+						 (__v16qi) __W,
+						 (__mmask16) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_avg_epu8 (__mmask16 __U, __m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_pavgb128_mask ((__v16qi) __A,
+						 (__v16qi) __B,
+						 (__v16qi)
+						 _mm_setzero_si128 (),
+						 (__mmask16) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_avg_epu16 (__m256i __W, __mmask16 __U, __m256i __A,
+		       __m256i __B)
+{
+  return (__m256i) __builtin_ia32_pavgw256_mask ((__v16hi) __A,
+						 (__v16hi) __B,
+						 (__v16hi) __W,
+						 (__mmask16) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_avg_epu16 (__mmask16 __U, __m256i __A, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_pavgw256_mask ((__v16hi) __A,
+						 (__v16hi) __B,
+						 (__v16hi)
+						 _mm256_setzero_si256 (),
+						 (__mmask16) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_avg_epu16 (__m128i __W, __mmask8 __U, __m128i __A,
+		    __m128i __B)
+{
+  return (__m128i) __builtin_ia32_pavgw128_mask ((__v8hi) __A,
+						 (__v8hi) __B,
+						 (__v8hi) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_avg_epu16 (__mmask8 __U, __m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_pavgw128_mask ((__v8hi) __A,
+						 (__v8hi) __B,
+						 (__v8hi)
+						 _mm_setzero_si128 (),
+						 (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_add_epi8 (__m256i __W, __mmask32 __U, __m256i __A,
+		      __m256i __B)
+{
+  return (__m256i) __builtin_ia32_paddb256_mask ((__v32qi) __A,
+						 (__v32qi) __B,
+						 (__v32qi) __W,
+						 (__mmask32) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_add_epi8 (__mmask32 __U, __m256i __A, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_paddb256_mask ((__v32qi) __A,
+						 (__v32qi) __B,
+						 (__v32qi)
+						 _mm256_setzero_si256 (),
+						 (__mmask32) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_add_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
+		       __m256i __B)
+{
+  return (__m256i) __builtin_ia32_paddw256_mask ((__v16hi) __A,
+						 (__v16hi) __B,
+						 (__v16hi) __W,
+						 (__mmask16) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_add_epi16 (__mmask16 __U, __m256i __A, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_paddw256_mask ((__v16hi) __A,
+						 (__v16hi) __B,
+						 (__v16hi)
+						 _mm256_setzero_si256 (),
+						 (__mmask16) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_adds_epi8 (__m256i __W, __mmask32 __U, __m256i __A,
+		       __m256i __B)
+{
+  return (__m256i) __builtin_ia32_paddsb256_mask ((__v32qi) __A,
+						  (__v32qi) __B,
+						  (__v32qi) __W,
+						  (__mmask32) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_adds_epi8 (__mmask32 __U, __m256i __A, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_paddsb256_mask ((__v32qi) __A,
+						  (__v32qi) __B,
+						  (__v32qi)
+						  _mm256_setzero_si256 (),
+						  (__mmask32) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_adds_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
+			__m256i __B)
+{
+  return (__m256i) __builtin_ia32_paddsw256_mask ((__v16hi) __A,
+						  (__v16hi) __B,
+						  (__v16hi) __W,
+						  (__mmask16) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_adds_epi16 (__mmask16 __U, __m256i __A, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_paddsw256_mask ((__v16hi) __A,
+						  (__v16hi) __B,
+						  (__v16hi)
+						  _mm256_setzero_si256 (),
+						  (__mmask16) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_adds_epu8 (__m256i __W, __mmask32 __U, __m256i __A,
+		       __m256i __B)
+{
+  return (__m256i) __builtin_ia32_paddusb256_mask ((__v32qi) __A,
+						   (__v32qi) __B,
+						   (__v32qi) __W,
+						   (__mmask32) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_adds_epu8 (__mmask32 __U, __m256i __A, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_paddusb256_mask ((__v32qi) __A,
+						   (__v32qi) __B,
+						   (__v32qi)
+						   _mm256_setzero_si256 (),
+						   (__mmask32) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_adds_epu16 (__m256i __W, __mmask16 __U, __m256i __A,
+			__m256i __B)
+{
+  return (__m256i) __builtin_ia32_paddusw256_mask ((__v16hi) __A,
+						   (__v16hi) __B,
+						   (__v16hi) __W,
+						   (__mmask16) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_adds_epu16 (__mmask16 __U, __m256i __A, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_paddusw256_mask ((__v16hi) __A,
+						   (__v16hi) __B,
+						   (__v16hi)
+						   _mm256_setzero_si256 (),
+						   (__mmask16) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_sub_epi8 (__m256i __W, __mmask32 __U, __m256i __A,
+		      __m256i __B)
+{
+  return (__m256i) __builtin_ia32_psubb256_mask ((__v32qi) __A,
+						 (__v32qi) __B,
+						 (__v32qi) __W,
+						 (__mmask32) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_sub_epi8 (__mmask32 __U, __m256i __A, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_psubb256_mask ((__v32qi) __A,
+						 (__v32qi) __B,
+						 (__v32qi)
+						 _mm256_setzero_si256 (),
+						 (__mmask32) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_sub_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
+		       __m256i __B)
+{
+  return (__m256i) __builtin_ia32_psubw256_mask ((__v16hi) __A,
+						 (__v16hi) __B,
+						 (__v16hi) __W,
+						 (__mmask16) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_sub_epi16 (__mmask16 __U, __m256i __A, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_psubw256_mask ((__v16hi) __A,
+						 (__v16hi) __B,
+						 (__v16hi)
+						 _mm256_setzero_si256 (),
+						 (__mmask16) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_subs_epi8 (__m256i __W, __mmask32 __U, __m256i __A,
+		       __m256i __B)
+{
+  return (__m256i) __builtin_ia32_psubsb256_mask ((__v32qi) __A,
+						  (__v32qi) __B,
+						  (__v32qi) __W,
+						  (__mmask32) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_subs_epi8 (__mmask32 __U, __m256i __A, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_psubsb256_mask ((__v32qi) __A,
+						  (__v32qi) __B,
+						  (__v32qi)
+						  _mm256_setzero_si256 (),
+						  (__mmask32) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_subs_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
+			__m256i __B)
+{
+  return (__m256i) __builtin_ia32_psubsw256_mask ((__v16hi) __A,
+						  (__v16hi) __B,
+						  (__v16hi) __W,
+						  (__mmask16) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_subs_epi16 (__mmask16 __U, __m256i __A, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_psubsw256_mask ((__v16hi) __A,
+						  (__v16hi) __B,
+						  (__v16hi)
+						  _mm256_setzero_si256 (),
+						  (__mmask16) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_subs_epu8 (__m256i __W, __mmask32 __U, __m256i __A,
+		       __m256i __B)
+{
+  return (__m256i) __builtin_ia32_psubusb256_mask ((__v32qi) __A,
+						   (__v32qi) __B,
+						   (__v32qi) __W,
+						   (__mmask32) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_subs_epu8 (__mmask32 __U, __m256i __A, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_psubusb256_mask ((__v32qi) __A,
+						   (__v32qi) __B,
+						   (__v32qi)
+						   _mm256_setzero_si256 (),
+						   (__mmask32) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_subs_epu16 (__m256i __W, __mmask16 __U, __m256i __A,
+			__m256i __B)
+{
+  return (__m256i) __builtin_ia32_psubusw256_mask ((__v16hi) __A,
+						   (__v16hi) __B,
+						   (__v16hi) __W,
+						   (__mmask16) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_subs_epu16 (__mmask16 __U, __m256i __A, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_psubusw256_mask ((__v16hi) __A,
+						   (__v16hi) __B,
+						   (__v16hi)
+						   _mm256_setzero_si256 (),
+						   (__mmask16) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_add_epi8 (__m128i __W, __mmask16 __U, __m128i __A,
+		   __m128i __B)
+{
+  return (__m128i) __builtin_ia32_paddb128_mask ((__v16qi) __A,
+						 (__v16qi) __B,
+						 (__v16qi) __W,
+						 (__mmask16) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_add_epi8 (__mmask16 __U, __m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_paddb128_mask ((__v16qi) __A,
+						 (__v16qi) __B,
+						 (__v16qi)
+						 _mm_setzero_si128 (),
+						 (__mmask16) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_add_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
+		    __m128i __B)
+{
+  return (__m128i) __builtin_ia32_paddw128_mask ((__v8hi) __A,
+						 (__v8hi) __B,
+						 (__v8hi) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_add_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_paddw128_mask ((__v8hi) __A,
+						 (__v8hi) __B,
+						 (__v8hi)
+						 _mm_setzero_si128 (),
+						 (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_unpackhi_epi8 (__m256i __W, __mmask32 __U, __m256i __A,
+			   __m256i __B)
+{
+  return (__m256i) __builtin_ia32_punpckhbw256_mask ((__v32qi) __A,
+						     (__v32qi) __B,
+						     (__v32qi) __W,
+						     (__mmask32) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_unpackhi_epi8 (__mmask32 __U, __m256i __A, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_punpckhbw256_mask ((__v32qi) __A,
+						     (__v32qi) __B,
+						     (__v32qi)
+						     _mm256_setzero_si256 (),
+						     (__mmask32) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_unpackhi_epi8 (__m128i __W, __mmask16 __U, __m128i __A,
+			__m128i __B)
+{
+  return (__m128i) __builtin_ia32_punpckhbw128_mask ((__v16qi) __A,
+						     (__v16qi) __B,
+						     (__v16qi) __W,
+						     (__mmask16) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_unpackhi_epi8 (__mmask16 __U, __m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_punpckhbw128_mask ((__v16qi) __A,
+						     (__v16qi) __B,
+						     (__v16qi)
+						     _mm_setzero_si128 (),
+						     (__mmask16) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_unpackhi_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
+			    __m256i __B)
+{
+  return (__m256i) __builtin_ia32_punpckhwd256_mask ((__v16hi) __A,
+						     (__v16hi) __B,
+						     (__v16hi) __W,
+						     (__mmask16) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_unpackhi_epi16 (__mmask16 __U, __m256i __A, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_punpckhwd256_mask ((__v16hi) __A,
+						     (__v16hi) __B,
+						     (__v16hi)
+						     _mm256_setzero_si256 (),
+						     (__mmask16) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_unpackhi_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
+			 __m128i __B)
+{
+  return (__m128i) __builtin_ia32_punpckhwd128_mask ((__v8hi) __A,
+						     (__v8hi) __B,
+						     (__v8hi) __W,
+						     (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_unpackhi_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_punpckhwd128_mask ((__v8hi) __A,
+						     (__v8hi) __B,
+						     (__v8hi)
+						     _mm_setzero_si128 (),
+						     (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_unpacklo_epi8 (__m256i __W, __mmask32 __U, __m256i __A,
+			   __m256i __B)
+{
+  return (__m256i) __builtin_ia32_punpcklbw256_mask ((__v32qi) __A,
+						     (__v32qi) __B,
+						     (__v32qi) __W,
+						     (__mmask32) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_unpacklo_epi8 (__mmask32 __U, __m256i __A, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_punpcklbw256_mask ((__v32qi) __A,
+						     (__v32qi) __B,
+						     (__v32qi)
+						     _mm256_setzero_si256 (),
+						     (__mmask32) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_unpacklo_epi8 (__m128i __W, __mmask16 __U, __m128i __A,
+			__m128i __B)
+{
+  return (__m128i) __builtin_ia32_punpcklbw128_mask ((__v16qi) __A,
+						     (__v16qi) __B,
+						     (__v16qi) __W,
+						     (__mmask16) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_unpacklo_epi8 (__mmask16 __U, __m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_punpcklbw128_mask ((__v16qi) __A,
+						     (__v16qi) __B,
+						     (__v16qi)
+						     _mm_setzero_si128 (),
+						     (__mmask16) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_unpacklo_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
+			    __m256i __B)
+{
+  return (__m256i) __builtin_ia32_punpcklwd256_mask ((__v16hi) __A,
+						     (__v16hi) __B,
+						     (__v16hi) __W,
+						     (__mmask16) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_unpacklo_epi16 (__mmask16 __U, __m256i __A, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_punpcklwd256_mask ((__v16hi) __A,
+						     (__v16hi) __B,
+						     (__v16hi)
+						     _mm256_setzero_si256 (),
+						     (__mmask16) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_unpacklo_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
+			 __m128i __B)
+{
+  return (__m128i) __builtin_ia32_punpcklwd128_mask ((__v8hi) __A,
+						     (__v8hi) __B,
+						     (__v8hi) __W,
+						     (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_unpacklo_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_punpcklwd128_mask ((__v8hi) __A,
+						     (__v8hi) __B,
+						     (__v8hi)
+						     _mm_setzero_si128 (),
+						     (__mmask8) __U);
+}
+
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpeq_epi8_mask (__m128i __A, __m128i __B)
+{
+  return (__mmask16) __builtin_ia32_pcmpeqb128_mask ((__v16qi) __A,
+						     (__v16qi) __B,
+						     (__mmask16) -1);
+}
+
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpeq_epu8_mask (__m128i __A, __m128i __B)
+{
+  return (__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi) __A,
+						    (__v16qi) __B, 0,
+						    (__mmask16) -1);
+}
+
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cmpeq_epu8_mask (__mmask16 __U, __m128i __A, __m128i __B)
+{
+  return (__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi) __A,
+						    (__v16qi) __B, 0,
+						    __U);
+}
+
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cmpeq_epi8_mask (__mmask16 __U, __m128i __A, __m128i __B)
+{
+  return (__mmask16) __builtin_ia32_pcmpeqb128_mask ((__v16qi) __A,
+						     (__v16qi) __B,
+						     __U);
+}
+
+extern __inline __mmask32
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cmpeq_epu8_mask (__m256i __A, __m256i __B)
+{
+  return (__mmask32) __builtin_ia32_ucmpb256_mask ((__v32qi) __A,
+						    (__v32qi) __B, 0,
+						    (__mmask32) -1);
+}
+
+extern __inline __mmask32
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cmpeq_epi8_mask (__m256i __A, __m256i __B)
+{
+  return (__mmask32) __builtin_ia32_pcmpeqb256_mask ((__v32qi) __A,
+						     (__v32qi) __B,
+						     (__mmask32) -1);
+}
+
+extern __inline __mmask32
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cmpeq_epu8_mask (__mmask32 __U, __m256i __A, __m256i __B)
+{
+  return (__mmask32) __builtin_ia32_ucmpb256_mask ((__v32qi) __A,
+						    (__v32qi) __B, 0,
+						    __U);
+}
+
+extern __inline __mmask32
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cmpeq_epi8_mask (__mmask32 __U, __m256i __A, __m256i __B)
+{
+  return (__mmask32) __builtin_ia32_pcmpeqb256_mask ((__v32qi) __A,
+						     (__v32qi) __B,
+						     __U);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpeq_epu16_mask (__m128i __A, __m128i __B)
+{
+  return (__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi) __A,
+						   (__v8hi) __B, 0,
+						   (__mmask8) -1);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpeq_epi16_mask (__m128i __A, __m128i __B)
+{
+  return (__mmask8) __builtin_ia32_pcmpeqw128_mask ((__v8hi) __A,
+						    (__v8hi) __B,
+						    (__mmask8) -1);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cmpeq_epu16_mask (__mmask8 __U, __m128i __A, __m128i __B)
+{
+  return (__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi) __A,
+						   (__v8hi) __B, 0, __U);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cmpeq_epi16_mask (__mmask8 __U, __m128i __A, __m128i __B)
+{
+  return (__mmask8) __builtin_ia32_pcmpeqw128_mask ((__v8hi) __A,
+						    (__v8hi) __B, __U);
+}
+
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cmpeq_epu16_mask (__m256i __A, __m256i __B)
+{
+  return (__mmask16) __builtin_ia32_ucmpw256_mask ((__v16hi) __A,
+						    (__v16hi) __B, 0,
+						    (__mmask16) -1);
+}
+
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cmpeq_epi16_mask (__m256i __A, __m256i __B)
+{
+  return (__mmask16) __builtin_ia32_pcmpeqw256_mask ((__v16hi) __A,
+						     (__v16hi) __B,
+						     (__mmask16) -1);
+}
+
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cmpeq_epu16_mask (__mmask16 __U, __m256i __A, __m256i __B)
+{
+  return (__mmask16) __builtin_ia32_ucmpw256_mask ((__v16hi) __A,
+						    (__v16hi) __B, 0,
+						    __U);
+}
+
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cmpeq_epi16_mask (__mmask16 __U, __m256i __A, __m256i __B)
+{
+  return (__mmask16) __builtin_ia32_pcmpeqw256_mask ((__v16hi) __A,
+						     (__v16hi) __B,
+						     __U);
+}
+
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpgt_epu8_mask (__m128i __A, __m128i __B)
+{
+  return (__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi) __A,
+						    (__v16qi) __B, 6,
+						    (__mmask16) -1);
+}
+
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpgt_epi8_mask (__m128i __A, __m128i __B)
+{
+  return (__mmask16) __builtin_ia32_pcmpgtb128_mask ((__v16qi) __A,
+						     (__v16qi) __B,
+						     (__mmask16) -1);
+}
+
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cmpgt_epu8_mask (__mmask16 __U, __m128i __A, __m128i __B)
+{
+  return (__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi) __A,
+						    (__v16qi) __B, 6,
+						    __U);
+}
+
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cmpgt_epi8_mask (__mmask16 __U, __m128i __A, __m128i __B)
+{
+  return (__mmask16) __builtin_ia32_pcmpgtb128_mask ((__v16qi) __A,
+						     (__v16qi) __B,
+						     __U);
+}
+
+extern __inline __mmask32
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cmpgt_epu8_mask (__m256i __A, __m256i __B)
+{
+  return (__mmask32) __builtin_ia32_ucmpb256_mask ((__v32qi) __A,
+						    (__v32qi) __B, 6,
+						    (__mmask32) -1);
+}
+
+extern __inline __mmask32
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cmpgt_epi8_mask (__m256i __A, __m256i __B)
+{
+  return (__mmask32) __builtin_ia32_pcmpgtb256_mask ((__v32qi) __A,
+						     (__v32qi) __B,
+						     (__mmask32) -1);
+}
+
+extern __inline __mmask32
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cmpgt_epu8_mask (__mmask32 __U, __m256i __A, __m256i __B)
+{
+  return (__mmask32) __builtin_ia32_ucmpb256_mask ((__v32qi) __A,
+						    (__v32qi) __B, 6,
+						    __U);
+}
+
+extern __inline __mmask32
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cmpgt_epi8_mask (__mmask32 __U, __m256i __A, __m256i __B)
+{
+  return (__mmask32) __builtin_ia32_pcmpgtb256_mask ((__v32qi) __A,
+						     (__v32qi) __B,
+						     __U);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpgt_epu16_mask (__m128i __A, __m128i __B)
+{
+  return (__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi) __A,
+						   (__v8hi) __B, 6,
+						   (__mmask8) -1);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpgt_epi16_mask (__m128i __A, __m128i __B)
+{
+  return (__mmask8) __builtin_ia32_pcmpgtw128_mask ((__v8hi) __A,
+						    (__v8hi) __B,
+						    (__mmask8) -1);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cmpgt_epu16_mask (__mmask8 __U, __m128i __A, __m128i __B)
+{
+  return (__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi) __A,
+						   (__v8hi) __B, 6, __U);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cmpgt_epi16_mask (__mmask8 __U, __m128i __A, __m128i __B)
+{
+  return (__mmask8) __builtin_ia32_pcmpgtw128_mask ((__v8hi) __A,
+						    (__v8hi) __B, __U);
+}
+
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cmpgt_epu16_mask (__m256i __A, __m256i __B)
+{
+  return (__mmask16) __builtin_ia32_ucmpw256_mask ((__v16hi) __A,
+						    (__v16hi) __B, 6,
+						    (__mmask16) -1);
+}
+
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cmpgt_epi16_mask (__m256i __A, __m256i __B)
+{
+  return (__mmask16) __builtin_ia32_pcmpgtw256_mask ((__v16hi) __A,
+						     (__v16hi) __B,
+						     (__mmask16) -1);
+}
+
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cmpgt_epu16_mask (__mmask16 __U, __m256i __A, __m256i __B)
+{
+  return (__mmask16) __builtin_ia32_ucmpw256_mask ((__v16hi) __A,
+						    (__v16hi) __B, 6,
+						    __U);
+}
+
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cmpgt_epi16_mask (__mmask16 __U, __m256i __A, __m256i __B)
+{
+  return (__mmask16) __builtin_ia32_pcmpgtw256_mask ((__v16hi) __A,
+						     (__v16hi) __B,
+						     __U);
+}
+
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_testn_epi8_mask (__m128i __A, __m128i __B)
+{
+  return (__mmask16) __builtin_ia32_ptestnmb128 ((__v16qi) __A,
+						 (__v16qi) __B,
+						 (__mmask16) -1);
+}
+
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_testn_epi8_mask (__mmask16 __U, __m128i __A, __m128i __B)
+{
+  return (__mmask16) __builtin_ia32_ptestnmb128 ((__v16qi) __A,
+						 (__v16qi) __B, __U);
+}
+
+extern __inline __mmask32
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_testn_epi8_mask (__m256i __A, __m256i __B)
+{
+  return (__mmask32) __builtin_ia32_ptestnmb256 ((__v32qi) __A,
+						 (__v32qi) __B,
+						 (__mmask32) -1);
+}
+
+extern __inline __mmask32
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_testn_epi8_mask (__mmask32 __U, __m256i __A, __m256i __B)
+{
+  return (__mmask32) __builtin_ia32_ptestnmb256 ((__v32qi) __A,
+						 (__v32qi) __B, __U);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_testn_epi16_mask (__m128i __A, __m128i __B)
+{
+  return (__mmask8) __builtin_ia32_ptestnmw128 ((__v8hi) __A,
+						(__v8hi) __B,
+						(__mmask8) -1);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_testn_epi16_mask (__mmask8 __U, __m128i __A, __m128i __B)
+{
+  return (__mmask8) __builtin_ia32_ptestnmw128 ((__v8hi) __A,
+						(__v8hi) __B, __U);
+}
+
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_testn_epi16_mask (__m256i __A, __m256i __B)
+{
+  return (__mmask16) __builtin_ia32_ptestnmw256 ((__v16hi) __A,
+						 (__v16hi) __B,
+						 (__mmask16) -1);
+}
+
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_testn_epi16_mask (__mmask16 __U, __m256i __A, __m256i __B)
+{
+  return (__mmask16) __builtin_ia32_ptestnmw256 ((__v16hi) __A,
+						 (__v16hi) __B, __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_shuffle_epi8 (__m256i __W, __mmask32 __U, __m256i __A,
+			  __m256i __B)
+{
+  return (__m256i) __builtin_ia32_pshufb256_mask ((__v32qi) __A,
+						  (__v32qi) __B,
+						  (__v32qi) __W,
+						  (__mmask32) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_shuffle_epi8 (__mmask32 __U, __m256i __A, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_pshufb256_mask ((__v32qi) __A,
+						  (__v32qi) __B,
+						  (__v32qi)
+						  _mm256_setzero_si256 (),
+						  (__mmask32) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_shuffle_epi8 (__m128i __W, __mmask16 __U, __m128i __A,
+		       __m128i __B)
+{
+  return (__m128i) __builtin_ia32_pshufb128_mask ((__v16qi) __A,
+						  (__v16qi) __B,
+						  (__v16qi) __W,
+						  (__mmask16) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_shuffle_epi8 (__mmask16 __U, __m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_pshufb128_mask ((__v16qi) __A,
+						  (__v16qi) __B,
+						  (__v16qi)
+						  _mm_setzero_si128 (),
+						  (__mmask16) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_packs_epi16 (__mmask32 __M, __m256i __A, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_packsswb256_mask ((__v16hi) __A,
+						    (__v16hi) __B,
+						    (__v32qi)
+						    _mm256_setzero_si256 (),
+						    __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_packs_epi16 (__m256i __W, __mmask32 __M, __m256i __A,
+			 __m256i __B)
+{
+  return (__m256i) __builtin_ia32_packsswb256_mask ((__v16hi) __A,
+						    (__v16hi) __B,
+						    (__v32qi) __W,
+						    __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_packs_epi16 (__mmask16 __M, __m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_packsswb128_mask ((__v8hi) __A,
+						    (__v8hi) __B,
+						    (__v16qi)
+						    _mm_setzero_si128 (),
+						    __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_packs_epi16 (__m128i __W, __mmask16 __M, __m128i __A,
+		      __m128i __B)
+{
+  return (__m128i) __builtin_ia32_packsswb128_mask ((__v8hi) __A,
+						    (__v8hi) __B,
+						    (__v16qi) __W,
+						    __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_packus_epi16 (__mmask32 __M, __m256i __A, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_packuswb256_mask ((__v16hi) __A,
+						    (__v16hi) __B,
+						    (__v32qi)
+						    _mm256_setzero_si256 (),
+						    __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_packus_epi16 (__m256i __W, __mmask32 __M, __m256i __A,
+			  __m256i __B)
+{
+  return (__m256i) __builtin_ia32_packuswb256_mask ((__v16hi) __A,
+						    (__v16hi) __B,
+						    (__v32qi) __W,
+						    __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_packus_epi16 (__mmask16 __M, __m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_packuswb128_mask ((__v8hi) __A,
+						    (__v8hi) __B,
+						    (__v16qi)
+						    _mm_setzero_si128 (),
+						    __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_packus_epi16 (__m128i __W, __mmask16 __M, __m128i __A,
+		       __m128i __B)
+{
+  return (__m128i) __builtin_ia32_packuswb128_mask ((__v8hi) __A,
+						    (__v8hi) __B,
+						    (__v16qi) __W,
+						    __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_abs_epi8 (__m256i __W, __mmask32 __U, __m256i __A)
+{
+  return (__m256i) __builtin_ia32_pabsb256_mask ((__v32qi) __A,
+						 (__v32qi) __W,
+						 (__mmask32) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_abs_epi8 (__mmask32 __U, __m256i __A)
+{
+  return (__m256i) __builtin_ia32_pabsb256_mask ((__v32qi) __A,
+						 (__v32qi)
+						 _mm256_setzero_si256 (),
+						 (__mmask32) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_abs_epi8 (__m128i __W, __mmask16 __U, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_pabsb128_mask ((__v16qi) __A,
+						 (__v16qi) __W,
+						 (__mmask16) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_abs_epi8 (__mmask16 __U, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_pabsb128_mask ((__v16qi) __A,
+						 (__v16qi)
+						 _mm_setzero_si128 (),
+						 (__mmask16) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_abs_epi16 (__m256i __W, __mmask16 __U, __m256i __A)
+{
+  return (__m256i) __builtin_ia32_pabsw256_mask ((__v16hi) __A,
+						 (__v16hi) __W,
+						 (__mmask16) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_abs_epi16 (__mmask16 __U, __m256i __A)
+{
+  return (__m256i) __builtin_ia32_pabsw256_mask ((__v16hi) __A,
+						 (__v16hi)
+						 _mm256_setzero_si256 (),
+						 (__mmask16) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_abs_epi16 (__m128i __W, __mmask8 __U, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_pabsw128_mask ((__v8hi) __A,
+						 (__v8hi) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_abs_epi16 (__mmask8 __U, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_pabsw128_mask ((__v8hi) __A,
+						 (__v8hi)
+						 _mm_setzero_si128 (),
+						 (__mmask8) __U);
+}
+
+extern __inline __mmask32
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cmpneq_epu8_mask (__m256i __X, __m256i __Y)
+{
+  return (__mmask32) __builtin_ia32_ucmpb256_mask ((__v32qi) __X,
+						   (__v32qi) __Y, 4,
+						   (__mmask32) - 1);
+}
+
+extern __inline __mmask32
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cmplt_epu8_mask (__m256i __X, __m256i __Y)
+{
+  return (__mmask32) __builtin_ia32_ucmpb256_mask ((__v32qi) __X,
+						   (__v32qi) __Y, 1,
+						   (__mmask32) - 1);
+}
+
+extern __inline __mmask32
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cmpge_epu8_mask (__m256i __X, __m256i __Y)
+{
+  return (__mmask32) __builtin_ia32_ucmpb256_mask ((__v32qi) __X,
+						   (__v32qi) __Y, 5,
+						   (__mmask32) - 1);
+}
+
+extern __inline __mmask32
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cmple_epu8_mask (__m256i __X, __m256i __Y)
+{
+  return (__mmask32) __builtin_ia32_ucmpb256_mask ((__v32qi) __X,
+						   (__v32qi) __Y, 2,
+						   (__mmask32) - 1);
+}
+
+extern __inline __mmask16
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cmpneq_epu16_mask (__m256i __X, __m256i __Y)
+{
+  return (__mmask16) __builtin_ia32_ucmpw256_mask ((__v16hi) __X,
+						   (__v16hi) __Y, 4,
+						   (__mmask16) - 1);
+}
+
+extern __inline __mmask16
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cmplt_epu16_mask (__m256i __X, __m256i __Y)
+{
+  return (__mmask16) __builtin_ia32_ucmpw256_mask ((__v16hi) __X,
+						   (__v16hi) __Y, 1,
+						   (__mmask16) - 1);
+}
+
+extern __inline __mmask16
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cmpge_epu16_mask (__m256i __X, __m256i __Y)
+{
+  return (__mmask16) __builtin_ia32_ucmpw256_mask ((__v16hi) __X,
+						   (__v16hi) __Y, 5,
+						   (__mmask16) - 1);
+}
+
+extern __inline __mmask16
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cmple_epu16_mask (__m256i __X, __m256i __Y)
+{
+  return (__mmask16) __builtin_ia32_ucmpw256_mask ((__v16hi) __X,
+						   (__v16hi) __Y, 2,
+						   (__mmask16) - 1);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_storeu_epi16 (void *__P, __mmask16 __U, __m256i __A)
+{
+  __builtin_ia32_storedquhi256_mask ((__v16hi *) __P,
+				     (__v16hi) __A,
+				     (__mmask16) __U);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_storeu_epi16 (void *__P, __mmask8 __U, __m128i __A)
+{
+  __builtin_ia32_storedquhi128_mask ((__v8hi *) __P,
+				     (__v8hi) __A,
+				     (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_adds_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
+		     __m128i __B)
+{
+  return (__m128i) __builtin_ia32_paddsw128_mask ((__v8hi) __A,
+						  (__v8hi) __B,
+						  (__v8hi) __W,
+						  (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_subs_epi8 (__m128i __W, __mmask16 __U, __m128i __A,
+		    __m128i __B)
+{
+  return (__m128i) __builtin_ia32_psubsb128_mask ((__v16qi) __A,
+						  (__v16qi) __B,
+						  (__v16qi) __W,
+						  (__mmask16) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_subs_epi8 (__mmask16 __U, __m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_psubsb128_mask ((__v16qi) __A,
+						  (__v16qi) __B,
+						  (__v16qi)
+						  _mm_setzero_si128 (),
+						  (__mmask16) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_subs_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
+		     __m128i __B)
+{
+  return (__m128i) __builtin_ia32_psubsw128_mask ((__v8hi) __A,
+						  (__v8hi) __B,
+						  (__v8hi) __W,
+						  (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_subs_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_psubsw128_mask ((__v8hi) __A,
+						  (__v8hi) __B,
+						  (__v8hi)
+						  _mm_setzero_si128 (),
+						  (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_subs_epu8 (__m128i __W, __mmask16 __U, __m128i __A,
+		    __m128i __B)
+{
+  return (__m128i) __builtin_ia32_psubusb128_mask ((__v16qi) __A,
+						   (__v16qi) __B,
+						   (__v16qi) __W,
+						   (__mmask16) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_subs_epu8 (__mmask16 __U, __m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_psubusb128_mask ((__v16qi) __A,
+						   (__v16qi) __B,
+						   (__v16qi)
+						   _mm_setzero_si128 (),
+						   (__mmask16) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_subs_epu16 (__m128i __W, __mmask8 __U, __m128i __A,
+		     __m128i __B)
+{
+  return (__m128i) __builtin_ia32_psubusw128_mask ((__v8hi) __A,
+						   (__v8hi) __B,
+						   (__v8hi) __W,
+						   (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_subs_epu16 (__mmask8 __U, __m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_psubusw128_mask ((__v8hi) __A,
+						   (__v8hi) __B,
+						   (__v8hi)
+						   _mm_setzero_si128 (),
+						   (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_srl_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
+		       __m128i __B)
+{
+  return (__m256i) __builtin_ia32_psrlw256_mask ((__v16hi) __A,
+						 (__v8hi) __B,
+						 (__v16hi) __W,
+						 (__mmask16) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_srl_epi16 (__mmask16 __U, __m256i __A, __m128i __B)
+{
+  return (__m256i) __builtin_ia32_psrlw256_mask ((__v16hi) __A,
+						 (__v8hi) __B,
+						 (__v16hi)
+						 _mm256_setzero_si256 (),
+						 (__mmask16) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_srl_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
+		    __m128i __B)
+{
+  return (__m128i) __builtin_ia32_psrlw128_mask ((__v8hi) __A,
+						 (__v8hi) __B,
+						 (__v8hi) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_srl_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_psrlw128_mask ((__v8hi) __A,
+						 (__v8hi) __B,
+						 (__v8hi)
+						 _mm_setzero_si128 (),
+						 (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_sra_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
+		       __m128i __B)
+{
+  return (__m256i) __builtin_ia32_psraw256_mask ((__v16hi) __A,
+						 (__v8hi) __B,
+						 (__v16hi) __W,
+						 (__mmask16) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_sra_epi16 (__mmask16 __U, __m256i __A, __m128i __B)
+{
+  return (__m256i) __builtin_ia32_psraw256_mask ((__v16hi) __A,
+						 (__v8hi) __B,
+						 (__v16hi)
+						 _mm256_setzero_si256 (),
+						 (__mmask16) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_sra_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
+		    __m128i __B)
+{
+  return (__m128i) __builtin_ia32_psraw128_mask ((__v8hi) __A,
+						 (__v8hi) __B,
+						 (__v8hi) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_sra_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_psraw128_mask ((__v8hi) __A,
+						 (__v8hi) __B,
+						 (__v8hi)
+						 _mm_setzero_si128 (),
+						 (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_adds_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_paddsw128_mask ((__v8hi) __A,
+						  (__v8hi) __B,
+						  (__v8hi)
+						  _mm_setzero_si128 (),
+						  (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_adds_epu8 (__m128i __W, __mmask16 __U, __m128i __A,
+		    __m128i __B)
+{
+  return (__m128i) __builtin_ia32_paddusb128_mask ((__v16qi) __A,
+						   (__v16qi) __B,
+						   (__v16qi) __W,
+						   (__mmask16) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_adds_epu8 (__mmask16 __U, __m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_paddusb128_mask ((__v16qi) __A,
+						   (__v16qi) __B,
+						   (__v16qi)
+						   _mm_setzero_si128 (),
+						   (__mmask16) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_adds_epu16 (__m128i __W, __mmask8 __U, __m128i __A,
+		     __m128i __B)
+{
+  return (__m128i) __builtin_ia32_paddusw128_mask ((__v8hi) __A,
+						   (__v8hi) __B,
+						   (__v8hi) __W,
+						   (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_adds_epu16 (__mmask8 __U, __m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_paddusw128_mask ((__v8hi) __A,
+						   (__v8hi) __B,
+						   (__v8hi)
+						   _mm_setzero_si128 (),
+						   (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_sub_epi8 (__m128i __W, __mmask16 __U, __m128i __A,
+		   __m128i __B)
+{
+  return (__m128i) __builtin_ia32_psubb128_mask ((__v16qi) __A,
+						 (__v16qi) __B,
+						 (__v16qi) __W,
+						 (__mmask16) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_sub_epi8 (__mmask16 __U, __m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_psubb128_mask ((__v16qi) __A,
+						 (__v16qi) __B,
+						 (__v16qi)
+						 _mm_setzero_si128 (),
+						 (__mmask16) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_sub_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
+		    __m128i __B)
+{
+  return (__m128i) __builtin_ia32_psubw128_mask ((__v8hi) __A,
+						 (__v8hi) __B,
+						 (__v8hi) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_sub_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_psubw128_mask ((__v8hi) __A,
+						 (__v8hi) __B,
+						 (__v8hi)
+						 _mm_setzero_si128 (),
+						 (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_adds_epi8 (__m128i __W, __mmask16 __U, __m128i __A,
+		    __m128i __B)
+{
+  return (__m128i) __builtin_ia32_paddsb128_mask ((__v16qi) __A,
+						  (__v16qi) __B,
+						  (__v16qi) __W,
+						  (__mmask16) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_adds_epi8 (__mmask16 __U, __m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_paddsb128_mask ((__v16qi) __A,
+						  (__v16qi) __B,
+						  (__v16qi)
+						  _mm_setzero_si128 (),
+						  (__mmask16) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtepi16_epi8 (__m128i __A)
+{
+
+  return (__m128i) __builtin_ia32_pmovwb128_mask ((__v8hi) __A,
+						  (__v16qi)_mm_undefined_si128(),
+						  (__mmask8) -1);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cvtepi16_epi8 (__m128i __O, __mmask8 __M, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_pmovwb128_mask ((__v8hi) __A,
+						  (__v16qi) __O, __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_cvtepi16_epi8 (__mmask8 __M, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_pmovwb128_mask ((__v8hi) __A,
+						  (__v16qi)
+						  _mm_setzero_si128 (),
+						  __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_srav_epi16 (__m256i __A, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_psrav16hi_mask ((__v16hi) __A,
+						  (__v16hi) __B,
+						  (__v16hi)
+						  _mm256_setzero_si256 (),
+						  (__mmask16) -1);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_srav_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
+			__m256i __B)
+{
+  return (__m256i) __builtin_ia32_psrav16hi_mask ((__v16hi) __A,
+						  (__v16hi) __B,
+						  (__v16hi) __W,
+						  (__mmask16) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_srav_epi16 (__mmask16 __U, __m256i __A, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_psrav16hi_mask ((__v16hi) __A,
+						  (__v16hi) __B,
+						  (__v16hi)
+						  _mm256_setzero_si256 (),
+						  (__mmask16) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_srav_epi16 (__m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_psrav8hi_mask ((__v8hi) __A,
+						 (__v8hi) __B,
+						 (__v8hi)
+						 _mm_setzero_hi (),
+						 (__mmask8) -1);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_srav_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
+		     __m128i __B)
+{
+  return (__m128i) __builtin_ia32_psrav8hi_mask ((__v8hi) __A,
+						 (__v8hi) __B,
+						 (__v8hi) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_srav_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_psrav8hi_mask ((__v8hi) __A,
+						 (__v8hi) __B,
+						 (__v8hi)
+						 _mm_setzero_si128 (),
+						 (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_srlv_epi16 (__m256i __A, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_psrlv16hi_mask ((__v16hi) __A,
+						  (__v16hi) __B,
+						  (__v16hi)
+						  _mm256_setzero_si256 (),
+						  (__mmask16) -1);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_srlv_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
+			__m256i __B)
+{
+  return (__m256i) __builtin_ia32_psrlv16hi_mask ((__v16hi) __A,
+						  (__v16hi) __B,
+						  (__v16hi) __W,
+						  (__mmask16) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_srlv_epi16 (__mmask16 __U, __m256i __A, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_psrlv16hi_mask ((__v16hi) __A,
+						  (__v16hi) __B,
+						  (__v16hi)
+						  _mm256_setzero_si256 (),
+						  (__mmask16) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_srlv_epi16 (__m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_psrlv8hi_mask ((__v8hi) __A,
+						 (__v8hi) __B,
+						 (__v8hi)
+						 _mm_setzero_hi (),
+						 (__mmask8) -1);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_srlv_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
+		     __m128i __B)
+{
+  return (__m128i) __builtin_ia32_psrlv8hi_mask ((__v8hi) __A,
+						 (__v8hi) __B,
+						 (__v8hi) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_srlv_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_psrlv8hi_mask ((__v8hi) __A,
+						 (__v8hi) __B,
+						 (__v8hi)
+						 _mm_setzero_si128 (),
+						 (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_sllv_epi16 (__m256i __A, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_psllv16hi_mask ((__v16hi) __A,
+						  (__v16hi) __B,
+						  (__v16hi)
+						  _mm256_setzero_si256 (),
+						  (__mmask16) -1);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_sllv_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
+			__m256i __B)
+{
+  return (__m256i) __builtin_ia32_psllv16hi_mask ((__v16hi) __A,
+						  (__v16hi) __B,
+						  (__v16hi) __W,
+						  (__mmask16) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_sllv_epi16 (__mmask16 __U, __m256i __A, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_psllv16hi_mask ((__v16hi) __A,
+						  (__v16hi) __B,
+						  (__v16hi)
+						  _mm256_setzero_si256 (),
+						  (__mmask16) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_sllv_epi16 (__m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_psllv8hi_mask ((__v8hi) __A,
+						 (__v8hi) __B,
+						 (__v8hi)
+						 _mm_setzero_hi (),
+						 (__mmask8) -1);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_sllv_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
+		     __m128i __B)
+{
+  return (__m128i) __builtin_ia32_psllv8hi_mask ((__v8hi) __A,
+						 (__v8hi) __B,
+						 (__v8hi) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_sllv_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_psllv8hi_mask ((__v8hi) __A,
+						 (__v8hi) __B,
+						 (__v8hi)
+						 _mm_setzero_si128 (),
+						 (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_sll_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
+		    __m128i __B)
+{
+  return (__m128i) __builtin_ia32_psllw128_mask ((__v8hi) __A,
+						 (__v8hi) __B,
+						 (__v8hi) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_sll_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_psllw128_mask ((__v8hi) __A,
+						 (__v8hi) __B,
+						 (__v8hi)
+						 _mm_setzero_si128 (),
+						 (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_sll_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
+		       __m128i __B)
+{
+  return (__m256i) __builtin_ia32_psllw256_mask ((__v16hi) __A,
+						 (__v8hi) __B,
+						 (__v16hi) __W,
+						 (__mmask16) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_sll_epi16 (__mmask16 __U, __m256i __A, __m128i __B)
+{
+  return (__m256i) __builtin_ia32_psllw256_mask ((__v16hi) __A,
+						 (__v8hi) __B,
+						 (__v16hi)
+						 _mm256_setzero_si256 (),
+						 (__mmask16) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_packus_epi32 (__mmask16 __M, __m256i __A, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_packusdw256_mask ((__v8si) __A,
+						    (__v8si) __B,
+						    (__v16hi)
+						    _mm256_setzero_si256 (),
+						    __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_packus_epi32 (__m256i __W, __mmask16 __M, __m256i __A,
+			  __m256i __B)
+{
+  return (__m256i) __builtin_ia32_packusdw256_mask ((__v8si) __A,
+						    (__v8si) __B,
+						    (__v16hi) __W,
+						    __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_packus_epi32 (__mmask8 __M, __m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_packusdw128_mask ((__v4si) __A,
+						    (__v4si) __B,
+						    (__v8hi)
+						    _mm_setzero_si128 (),
+						    __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_packus_epi32 (__m128i __W, __mmask16 __M, __m128i __A,
+		       __m128i __B)
+{
+  return (__m128i) __builtin_ia32_packusdw128_mask ((__v4si) __A,
+						    (__v4si) __B,
+						    (__v8hi) __W, __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_packs_epi32 (__mmask16 __M, __m256i __A, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_packssdw256_mask ((__v8si) __A,
+						    (__v8si) __B,
+						    (__v16hi)
+						    _mm256_setzero_si256 (),
+						    __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_packs_epi32 (__m256i __W, __mmask16 __M, __m256i __A,
+			 __m256i __B)
+{
+  return (__m256i) __builtin_ia32_packssdw256_mask ((__v8si) __A,
+						    (__v8si) __B,
+						    (__v16hi) __W,
+						    __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_packs_epi32 (__mmask8 __M, __m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_packssdw128_mask ((__v4si) __A,
+						    (__v4si) __B,
+						    (__v8hi)
+						    _mm_setzero_si128 (),
+						    __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_packs_epi32 (__m128i __W, __mmask16 __M, __m128i __A,
+		      __m128i __B)
+{
+  return (__m128i) __builtin_ia32_packssdw128_mask ((__v4si) __A,
+						    (__v4si) __B,
+						    (__v8hi) __W, __M);
+}
+
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cmpneq_epu8_mask (__mmask16 __M, __m128i __X, __m128i __Y)
+{
+  return (__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi) __X,
+						   (__v16qi) __Y, 4,
+						   (__mmask16) __M);
+}
+
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cmplt_epu8_mask (__mmask16 __M, __m128i __X, __m128i __Y)
+{
+  return (__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi) __X,
+						   (__v16qi) __Y, 1,
+						   (__mmask16) __M);
+}
+
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cmpge_epu8_mask (__mmask16 __M, __m128i __X, __m128i __Y)
+{
+  return (__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi) __X,
+						   (__v16qi) __Y, 5,
+						   (__mmask16) __M);
+}
+
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cmple_epu8_mask (__mmask16 __M, __m128i __X, __m128i __Y)
+{
+  return (__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi) __X,
+						   (__v16qi) __Y, 2,
+						   (__mmask16) __M);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cmpneq_epu16_mask (__mmask8 __M, __m128i __X, __m128i __Y)
+{
+  return (__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi) __X,
+						  (__v8hi) __Y, 4,
+						  (__mmask8) __M);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cmplt_epu16_mask (__mmask8 __M, __m128i __X, __m128i __Y)
+{
+  return (__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi) __X,
+						  (__v8hi) __Y, 1,
+						  (__mmask8) __M);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cmpge_epu16_mask (__mmask8 __M, __m128i __X, __m128i __Y)
+{
+  return (__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi) __X,
+						  (__v8hi) __Y, 5,
+						  (__mmask8) __M);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cmple_epu16_mask (__mmask8 __M, __m128i __X, __m128i __Y)
+{
+  return (__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi) __X,
+						  (__v8hi) __Y, 2,
+						  (__mmask8) __M);
+}
+
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cmpneq_epi8_mask (__mmask16 __M, __m128i __X, __m128i __Y)
+{
+  return (__mmask16) __builtin_ia32_cmpb128_mask ((__v16qi) __X,
+						  (__v16qi) __Y, 4,
+						  (__mmask16) __M);
+}
+
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cmplt_epi8_mask (__mmask16 __M, __m128i __X, __m128i __Y)
+{
+  return (__mmask16) __builtin_ia32_cmpb128_mask ((__v16qi) __X,
+						  (__v16qi) __Y, 1,
+						  (__mmask16) __M);
+}
+
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cmpge_epi8_mask (__mmask16 __M, __m128i __X, __m128i __Y)
+{
+  return (__mmask16) __builtin_ia32_cmpb128_mask ((__v16qi) __X,
+						  (__v16qi) __Y, 5,
+						  (__mmask16) __M);
+}
+
+extern __inline __mmask16
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cmple_epi8_mask (__mmask16 __M, __m128i __X, __m128i __Y)
+{
+  return (__mmask16) __builtin_ia32_cmpb128_mask ((__v16qi) __X,
+						  (__v16qi) __Y, 2,
+						  (__mmask16) __M);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cmpneq_epi16_mask (__mmask8 __M, __m128i __X, __m128i __Y)
+{
+  return (__mmask8) __builtin_ia32_cmpw128_mask ((__v8hi) __X,
+						 (__v8hi) __Y, 4,
+						 (__mmask8) __M);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cmplt_epi16_mask (__mmask8 __M, __m128i __X, __m128i __Y)
+{
+  return (__mmask8) __builtin_ia32_cmpw128_mask ((__v8hi) __X,
+						 (__v8hi) __Y, 1,
+						 (__mmask8) __M);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cmpge_epi16_mask (__mmask8 __M, __m128i __X, __m128i __Y)
+{
+  return (__mmask8) __builtin_ia32_cmpw128_mask ((__v8hi) __X,
+						 (__v8hi) __Y, 5,
+						 (__mmask8) __M);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cmple_epi16_mask (__mmask8 __M, __m128i __X, __m128i __Y)
+{
+  return (__mmask8) __builtin_ia32_cmpw128_mask ((__v8hi) __X,
+						 (__v8hi) __Y, 2,
+						 (__mmask8) __M);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cmpneq_epu8_mask (__mmask8 __M, __m256i __X, __m256i __Y)
+{
+  return (__mmask8) __builtin_ia32_ucmpb256_mask ((__v32qi) __X,
+						  (__v32qi) __Y, 4,
+						  (__mmask8) __M);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cmplt_epu8_mask (__mmask8 __M, __m256i __X, __m256i __Y)
+{
+  return (__mmask8) __builtin_ia32_ucmpb256_mask ((__v32qi) __X,
+						  (__v32qi) __Y, 1,
+						  (__mmask8) __M);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cmpge_epu8_mask (__mmask8 __M, __m256i __X, __m256i __Y)
+{
+  return (__mmask8) __builtin_ia32_ucmpb256_mask ((__v32qi) __X,
+						  (__v32qi) __Y, 5,
+						  (__mmask8) __M);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cmple_epu8_mask (__mmask8 __M, __m256i __X, __m256i __Y)
+{
+  return (__mmask8) __builtin_ia32_ucmpb256_mask ((__v32qi) __X,
+						  (__v32qi) __Y, 2,
+						  (__mmask8) __M);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cmpneq_epu16_mask (__mmask8 __M, __m256i __X, __m256i __Y)
+{
+  return (__mmask8) __builtin_ia32_ucmpw256_mask ((__v16hi) __X,
+						  (__v16hi) __Y, 4,
+						  (__mmask8) __M);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cmplt_epu16_mask (__mmask8 __M, __m256i __X, __m256i __Y)
+{
+  return (__mmask8) __builtin_ia32_ucmpw256_mask ((__v16hi) __X,
+						  (__v16hi) __Y, 1,
+						  (__mmask8) __M);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cmpge_epu16_mask (__mmask8 __M, __m256i __X, __m256i __Y)
+{
+  return (__mmask8) __builtin_ia32_ucmpw256_mask ((__v16hi) __X,
+						  (__v16hi) __Y, 5,
+						  (__mmask8) __M);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cmple_epu16_mask (__mmask8 __M, __m256i __X, __m256i __Y)
+{
+  return (__mmask8) __builtin_ia32_ucmpw256_mask ((__v16hi) __X,
+						  (__v16hi) __Y, 2,
+						  (__mmask8) __M);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cmpneq_epi8_mask (__mmask8 __M, __m256i __X, __m256i __Y)
+{
+  return (__mmask8) __builtin_ia32_cmpb256_mask ((__v32qi) __X,
+						 (__v32qi) __Y, 4,
+						 (__mmask8) __M);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cmplt_epi8_mask (__mmask8 __M, __m256i __X, __m256i __Y)
+{
+  return (__mmask8) __builtin_ia32_cmpb256_mask ((__v32qi) __X,
+						 (__v32qi) __Y, 1,
+						 (__mmask8) __M);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cmpge_epi8_mask (__mmask8 __M, __m256i __X, __m256i __Y)
+{
+  return (__mmask8) __builtin_ia32_cmpb256_mask ((__v32qi) __X,
+						 (__v32qi) __Y, 5,
+						 (__mmask8) __M);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cmple_epi8_mask (__mmask8 __M, __m256i __X, __m256i __Y)
+{
+  return (__mmask8) __builtin_ia32_cmpb256_mask ((__v32qi) __X,
+						 (__v32qi) __Y, 2,
+						 (__mmask8) __M);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cmpneq_epi16_mask (__mmask8 __M, __m256i __X, __m256i __Y)
+{
+  return (__mmask8) __builtin_ia32_cmpw256_mask ((__v16hi) __X,
+						 (__v16hi) __Y, 4,
+						 (__mmask8) __M);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cmplt_epi16_mask (__mmask8 __M, __m256i __X, __m256i __Y)
+{
+  return (__mmask8) __builtin_ia32_cmpw256_mask ((__v16hi) __X,
+						 (__v16hi) __Y, 1,
+						 (__mmask8) __M);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cmpge_epi16_mask (__mmask8 __M, __m256i __X, __m256i __Y)
+{
+  return (__mmask8) __builtin_ia32_cmpw256_mask ((__v16hi) __X,
+						 (__v16hi) __Y, 5,
+						 (__mmask8) __M);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cmple_epi16_mask (__mmask8 __M, __m256i __X, __m256i __Y)
+{
+  return (__mmask8) __builtin_ia32_cmpw256_mask ((__v16hi) __X,
+						 (__v16hi) __Y, 2,
+						 (__mmask8) __M);
+}
+
+#ifdef __DISABLE_AVX512VLBW__
+#undef __DISABLE_AVX512VLBW__
+#pragma GCC pop_options
+#endif /* __DISABLE_AVX512VLBW__ */
+
+#endif /* _AVX512VLBWINTRIN_H_INCLUDED */
Index: Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/avx512vldqintrin.h
===================================================================
--- Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/avx512vldqintrin.h	(revision 1046)
+++ Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/avx512vldqintrin.h	(revision 1046)
@@ -0,0 +1,2025 @@
+/* Copyright (C) 2014-2015 Free Software Foundation, Inc.
+
+   This file is part of GCC.
+
+   GCC is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
+
+   GCC is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   Under Section 7 of GPL version 3, you are granted additional
+   permissions described in the GCC Runtime Library Exception, version
+   3.1, as published by the Free Software Foundation.
+
+   You should have received a copy of the GNU General Public License and
+   a copy of the GCC Runtime Library Exception along with this program;
+   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _IMMINTRIN_H_INCLUDED
+#error "Never use <avx512vldqintrin.h> directly; include <immintrin.h> instead."
+#endif
+
+#ifndef _AVX512VLDQINTRIN_H_INCLUDED
+#define _AVX512VLDQINTRIN_H_INCLUDED
+
+#if !defined(__AVX512VL__) || !defined(__AVX512DQ__)
+#pragma GCC push_options
+#pragma GCC target("avx512vl,avx512dq")
+#define __DISABLE_AVX512VLDQ__
+#endif /* __AVX512VLDQ__ */
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cvttpd_epi64 (__m256d __A)
+{
+  return (__m256i) __builtin_ia32_cvttpd2qq256_mask ((__v4df) __A,
+						     (__v4di)
+						     _mm256_setzero_si256 (),
+						     (__mmask8) -1);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cvttpd_epi64 (__m256i __W, __mmask8 __U, __m256d __A)
+{
+  return (__m256i) __builtin_ia32_cvttpd2qq256_mask ((__v4df) __A,
+						     (__v4di) __W,
+						     (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_cvttpd_epi64 (__mmask8 __U, __m256d __A)
+{
+  return (__m256i) __builtin_ia32_cvttpd2qq256_mask ((__v4df) __A,
+						     (__v4di)
+						     _mm256_setzero_si256 (),
+						     (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvttpd_epi64 (__m128d __A)
+{
+  return (__m128i) __builtin_ia32_cvttpd2qq128_mask ((__v2df) __A,
+						     (__v2di)
+						     _mm_setzero_di (),
+						     (__mmask8) -1);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cvttpd_epi64 (__m128i __W, __mmask8 __U, __m128d __A)
+{
+  return (__m128i) __builtin_ia32_cvttpd2qq128_mask ((__v2df) __A,
+						     (__v2di) __W,
+						     (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_cvttpd_epi64 (__mmask8 __U, __m128d __A)
+{
+  return (__m128i) __builtin_ia32_cvttpd2qq128_mask ((__v2df) __A,
+						     (__v2di)
+						     _mm_setzero_si128 (),
+						     (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cvttpd_epu64 (__m256d __A)
+{
+  return (__m256i) __builtin_ia32_cvttpd2uqq256_mask ((__v4df) __A,
+						      (__v4di)
+						      _mm256_setzero_si256 (),
+						      (__mmask8) -1);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cvttpd_epu64 (__m256i __W, __mmask8 __U, __m256d __A)
+{
+  return (__m256i) __builtin_ia32_cvttpd2uqq256_mask ((__v4df) __A,
+						      (__v4di) __W,
+						      (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_cvttpd_epu64 (__mmask8 __U, __m256d __A)
+{
+  return (__m256i) __builtin_ia32_cvttpd2uqq256_mask ((__v4df) __A,
+						      (__v4di)
+						      _mm256_setzero_si256 (),
+						      (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvttpd_epu64 (__m128d __A)
+{
+  return (__m128i) __builtin_ia32_cvttpd2uqq128_mask ((__v2df) __A,
+						      (__v2di)
+						      _mm_setzero_di (),
+						      (__mmask8) -1);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cvttpd_epu64 (__m128i __W, __mmask8 __U, __m128d __A)
+{
+  return (__m128i) __builtin_ia32_cvttpd2uqq128_mask ((__v2df) __A,
+						      (__v2di) __W,
+						      (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_cvttpd_epu64 (__mmask8 __U, __m128d __A)
+{
+  return (__m128i) __builtin_ia32_cvttpd2uqq128_mask ((__v2df) __A,
+						      (__v2di)
+						      _mm_setzero_si128 (),
+						      (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cvtpd_epi64 (__m256d __A)
+{
+  return (__m256i) __builtin_ia32_cvtpd2qq256_mask ((__v4df) __A,
+						    (__v4di)
+						    _mm256_setzero_si256 (),
+						    (__mmask8) -1);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cvtpd_epi64 (__m256i __W, __mmask8 __U, __m256d __A)
+{
+  return (__m256i) __builtin_ia32_cvtpd2qq256_mask ((__v4df) __A,
+						    (__v4di) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_cvtpd_epi64 (__mmask8 __U, __m256d __A)
+{
+  return (__m256i) __builtin_ia32_cvtpd2qq256_mask ((__v4df) __A,
+						    (__v4di)
+						    _mm256_setzero_si256 (),
+						    (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtpd_epi64 (__m128d __A)
+{
+  return (__m128i) __builtin_ia32_cvtpd2qq128_mask ((__v2df) __A,
+						    (__v2di)
+						    _mm_setzero_di (),
+						    (__mmask8) -1);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cvtpd_epi64 (__m128i __W, __mmask8 __U, __m128d __A)
+{
+  return (__m128i) __builtin_ia32_cvtpd2qq128_mask ((__v2df) __A,
+						    (__v2di) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_cvtpd_epi64 (__mmask8 __U, __m128d __A)
+{
+  return (__m128i) __builtin_ia32_cvtpd2qq128_mask ((__v2df) __A,
+						    (__v2di)
+						    _mm_setzero_si128 (),
+						    (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cvtpd_epu64 (__m256d __A)
+{
+  return (__m256i) __builtin_ia32_cvtpd2uqq256_mask ((__v4df) __A,
+						     (__v4di)
+						     _mm256_setzero_si256 (),
+						     (__mmask8) -1);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cvtpd_epu64 (__m256i __W, __mmask8 __U, __m256d __A)
+{
+  return (__m256i) __builtin_ia32_cvtpd2uqq256_mask ((__v4df) __A,
+						     (__v4di) __W,
+						     (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_cvtpd_epu64 (__mmask8 __U, __m256d __A)
+{
+  return (__m256i) __builtin_ia32_cvtpd2uqq256_mask ((__v4df) __A,
+						     (__v4di)
+						     _mm256_setzero_si256 (),
+						     (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtpd_epu64 (__m128d __A)
+{
+  return (__m128i) __builtin_ia32_cvtpd2uqq128_mask ((__v2df) __A,
+						     (__v2di)
+						     _mm_setzero_di (),
+						     (__mmask8) -1);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cvtpd_epu64 (__m128i __W, __mmask8 __U, __m128d __A)
+{
+  return (__m128i) __builtin_ia32_cvtpd2uqq128_mask ((__v2df) __A,
+						     (__v2di) __W,
+						     (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_cvtpd_epu64 (__mmask8 __U, __m128d __A)
+{
+  return (__m128i) __builtin_ia32_cvtpd2uqq128_mask ((__v2df) __A,
+						     (__v2di)
+						     _mm_setzero_si128 (),
+						     (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cvttps_epi64 (__m128 __A)
+{
+  return (__m256i) __builtin_ia32_cvttps2qq256_mask ((__v4sf) __A,
+						     (__v4di)
+						     _mm256_setzero_si256 (),
+						     (__mmask8) -1);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cvttps_epi64 (__m256i __W, __mmask8 __U, __m128 __A)
+{
+  return (__m256i) __builtin_ia32_cvttps2qq256_mask ((__v4sf) __A,
+						     (__v4di) __W,
+						     (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_cvttps_epi64 (__mmask8 __U, __m128 __A)
+{
+  return (__m256i) __builtin_ia32_cvttps2qq256_mask ((__v4sf) __A,
+						     (__v4di)
+						     _mm256_setzero_si256 (),
+						     (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvttps_epi64 (__m128 __A)
+{
+  return (__m128i) __builtin_ia32_cvttps2qq128_mask ((__v4sf) __A,
+						     (__v2di)
+						     _mm_setzero_di (),
+						     (__mmask8) -1);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cvttps_epi64 (__m128i __W, __mmask8 __U, __m128 __A)
+{
+  return (__m128i) __builtin_ia32_cvttps2qq128_mask ((__v4sf) __A,
+						     (__v2di) __W,
+						     (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_cvttps_epi64 (__mmask8 __U, __m128 __A)
+{
+  return (__m128i) __builtin_ia32_cvttps2qq128_mask ((__v4sf) __A,
+						     (__v2di)
+						     _mm_setzero_di (),
+						     (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cvttps_epu64 (__m128 __A)
+{
+  return (__m256i) __builtin_ia32_cvttps2uqq256_mask ((__v4sf) __A,
+						      (__v4di)
+						      _mm256_setzero_si256 (),
+						      (__mmask8) -1);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cvttps_epu64 (__m256i __W, __mmask8 __U, __m128 __A)
+{
+  return (__m256i) __builtin_ia32_cvttps2uqq256_mask ((__v4sf) __A,
+						      (__v4di) __W,
+						      (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_cvttps_epu64 (__mmask8 __U, __m128 __A)
+{
+  return (__m256i) __builtin_ia32_cvttps2uqq256_mask ((__v4sf) __A,
+						      (__v4di)
+						      _mm256_setzero_si256 (),
+						      (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvttps_epu64 (__m128 __A)
+{
+  return (__m128i) __builtin_ia32_cvttps2uqq128_mask ((__v4sf) __A,
+						      (__v2di)
+						      _mm_setzero_di (),
+						      (__mmask8) -1);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cvttps_epu64 (__m128i __W, __mmask8 __U, __m128 __A)
+{
+  return (__m128i) __builtin_ia32_cvttps2uqq128_mask ((__v4sf) __A,
+						      (__v2di) __W,
+						      (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_cvttps_epu64 (__mmask8 __U, __m128 __A)
+{
+  return (__m128i) __builtin_ia32_cvttps2uqq128_mask ((__v4sf) __A,
+						      (__v2di)
+						      _mm_setzero_di (),
+						      (__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_broadcast_f64x2 (__m128d __A)
+{
+  return (__m256d) __builtin_ia32_broadcastf64x2_256_mask ((__v2df)
+							   __A,
+						           (__v4df)_mm256_undefined_pd(),
+							   (__mmask8) -
+							   1);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_broadcast_f64x2 (__m256d __O, __mmask8 __M, __m128d __A)
+{
+  return (__m256d) __builtin_ia32_broadcastf64x2_256_mask ((__v2df)
+							   __A,
+							   (__v4df)
+							   __O, __M);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_broadcast_f64x2 (__mmask8 __M, __m128d __A)
+{
+  return (__m256d) __builtin_ia32_broadcastf64x2_256_mask ((__v2df)
+							   __A,
+							   (__v4df)
+							   _mm256_setzero_ps (),
+							   __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_broadcast_i64x2 (__m128i __A)
+{
+  return (__m256i) __builtin_ia32_broadcasti64x2_256_mask ((__v2di)
+							   __A,
+						           (__v4di)_mm256_undefined_si256(),
+							   (__mmask8) -
+							   1);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_broadcast_i64x2 (__m256i __O, __mmask8 __M, __m128i __A)
+{
+  return (__m256i) __builtin_ia32_broadcasti64x2_256_mask ((__v2di)
+							   __A,
+							   (__v4di)
+							   __O, __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_broadcast_i64x2 (__mmask8 __M, __m128i __A)
+{
+  return (__m256i) __builtin_ia32_broadcasti64x2_256_mask ((__v2di)
+							   __A,
+							   (__v4di)
+							   _mm256_setzero_si256 (),
+							   __M);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_broadcast_f32x2 (__m128 __A)
+{
+  return (__m256) __builtin_ia32_broadcastf32x2_256_mask ((__v4sf) __A,
+						          (__v8sf)_mm256_undefined_ps(),
+							  (__mmask8) -
+							  1);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_broadcast_f32x2 (__m256 __O, __mmask8 __M, __m128 __A)
+{
+  return (__m256) __builtin_ia32_broadcastf32x2_256_mask ((__v4sf) __A,
+							  (__v8sf) __O,
+							  __M);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_broadcast_f32x2 (__mmask8 __M, __m128 __A)
+{
+  return (__m256) __builtin_ia32_broadcastf32x2_256_mask ((__v4sf) __A,
+							  (__v8sf)
+							  _mm256_setzero_ps (),
+							  __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_broadcast_i32x2 (__m128i __A)
+{
+  return (__m256i) __builtin_ia32_broadcasti32x2_256_mask ((__v4si)
+							   __A,
+						          (__v8si)_mm256_undefined_si256(),
+							   (__mmask8) -
+							   1);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_broadcast_i32x2 (__m256i __O, __mmask8 __M, __m128i __A)
+{
+  return (__m256i) __builtin_ia32_broadcasti32x2_256_mask ((__v4si)
+							   __A,
+							   (__v8si)
+							   __O, __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_broadcast_i32x2 (__mmask8 __M, __m128i __A)
+{
+  return (__m256i) __builtin_ia32_broadcasti32x2_256_mask ((__v4si)
+							   __A,
+							   (__v8si)
+							   _mm256_setzero_si256 (),
+							   __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_broadcast_i32x2 (__m128i __A)
+{
+  return (__m128i) __builtin_ia32_broadcasti32x2_128_mask ((__v4si)
+							   __A,
+						          (__v4si)_mm_undefined_si128(),
+							   (__mmask8) -
+							   1);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_broadcast_i32x2 (__m128i __O, __mmask8 __M, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_broadcasti32x2_128_mask ((__v4si)
+							   __A,
+							   (__v4si)
+							   __O, __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_broadcast_i32x2 (__mmask8 __M, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_broadcasti32x2_128_mask ((__v4si)
+							   __A,
+							   (__v4si)
+							   _mm_setzero_si128 (),
+							   __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mullo_epi64 (__m256i __A, __m256i __B)
+{
+  return (__m256i) ((__v4du) __A * (__v4du) __B);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_mullo_epi64 (__m256i __W, __mmask8 __U, __m256i __A,
+			 __m256i __B)
+{
+  return (__m256i) __builtin_ia32_pmullq256_mask ((__v4di) __A,
+						  (__v4di) __B,
+						  (__v4di) __W,
+						  (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_mullo_epi64 (__mmask8 __U, __m256i __A, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_pmullq256_mask ((__v4di) __A,
+						  (__v4di) __B,
+						  (__v4di)
+						  _mm256_setzero_si256 (),
+						  (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mullo_epi64 (__m128i __A, __m128i __B)
+{
+  return (__m128i) ((__v2du) __A * (__v2du) __B);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_mullo_epi64 (__m128i __W, __mmask8 __U, __m128i __A,
+		      __m128i __B)
+{
+  return (__m128i) __builtin_ia32_pmullq128_mask ((__v2di) __A,
+						  (__v2di) __B,
+						  (__v2di) __W,
+						  (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_mullo_epi64 (__mmask8 __U, __m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_pmullq128_mask ((__v2di) __A,
+						  (__v2di) __B,
+						  (__v2di)
+						  _mm_setzero_di (),
+						  (__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_andnot_pd (__m256d __W, __mmask8 __U, __m256d __A,
+		       __m256d __B)
+{
+  return (__m256d) __builtin_ia32_andnpd256_mask ((__v4df) __A,
+						  (__v4df) __B,
+						  (__v4df) __W,
+						  (__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_andnot_pd (__mmask8 __U, __m256d __A, __m256d __B)
+{
+  return (__m256d) __builtin_ia32_andnpd256_mask ((__v4df) __A,
+						  (__v4df) __B,
+						  (__v4df)
+						  _mm256_setzero_pd (),
+						  (__mmask8) __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_andnot_pd (__m128d __W, __mmask8 __U, __m128d __A,
+		    __m128d __B)
+{
+  return (__m128d) __builtin_ia32_andnpd128_mask ((__v2df) __A,
+						  (__v2df) __B,
+						  (__v2df) __W,
+						  (__mmask8) __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_andnot_pd (__mmask8 __U, __m128d __A, __m128d __B)
+{
+  return (__m128d) __builtin_ia32_andnpd128_mask ((__v2df) __A,
+						  (__v2df) __B,
+						  (__v2df)
+						  _mm_setzero_pd (),
+						  (__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_andnot_ps (__m256 __W, __mmask8 __U, __m256 __A,
+		       __m256 __B)
+{
+  return (__m256) __builtin_ia32_andnps256_mask ((__v8sf) __A,
+						 (__v8sf) __B,
+						 (__v8sf) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_andnot_ps (__mmask8 __U, __m256 __A, __m256 __B)
+{
+  return (__m256) __builtin_ia32_andnps256_mask ((__v8sf) __A,
+						 (__v8sf) __B,
+						 (__v8sf)
+						 _mm256_setzero_ps (),
+						 (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_andnot_ps (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
+{
+  return (__m128) __builtin_ia32_andnps128_mask ((__v4sf) __A,
+						 (__v4sf) __B,
+						 (__v4sf) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_andnot_ps (__mmask8 __U, __m128 __A, __m128 __B)
+{
+  return (__m128) __builtin_ia32_andnps128_mask ((__v4sf) __A,
+						 (__v4sf) __B,
+						 (__v4sf)
+						 _mm_setzero_ps (),
+						 (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cvtps_epi64 (__m128 __A)
+{
+  return (__m256i) __builtin_ia32_cvtps2qq256_mask ((__v4sf) __A,
+						    (__v4di)
+						    _mm256_setzero_si256 (),
+						    (__mmask8) -1);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cvtps_epi64 (__m256i __W, __mmask8 __U, __m128 __A)
+{
+  return (__m256i) __builtin_ia32_cvtps2qq256_mask ((__v4sf) __A,
+						    (__v4di) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_cvtps_epi64 (__mmask8 __U, __m128 __A)
+{
+  return (__m256i) __builtin_ia32_cvtps2qq256_mask ((__v4sf) __A,
+						    (__v4di)
+						    _mm256_setzero_si256 (),
+						    (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtps_epi64 (__m128 __A)
+{
+  return (__m128i) __builtin_ia32_cvtps2qq128_mask ((__v4sf) __A,
+						    (__v2di)
+						    _mm_setzero_di (),
+						    (__mmask8) -1);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cvtps_epi64 (__m128i __W, __mmask8 __U, __m128 __A)
+{
+  return (__m128i) __builtin_ia32_cvtps2qq128_mask ((__v4sf) __A,
+						    (__v2di) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_cvtps_epi64 (__mmask8 __U, __m128 __A)
+{
+  return (__m128i) __builtin_ia32_cvtps2qq128_mask ((__v4sf) __A,
+						    (__v2di)
+						    _mm_setzero_di (),
+						    (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cvtps_epu64 (__m128 __A)
+{
+  return (__m256i) __builtin_ia32_cvtps2uqq256_mask ((__v4sf) __A,
+						     (__v4di)
+						     _mm256_setzero_si256 (),
+						     (__mmask8) -1);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cvtps_epu64 (__m256i __W, __mmask8 __U, __m128 __A)
+{
+  return (__m256i) __builtin_ia32_cvtps2uqq256_mask ((__v4sf) __A,
+						     (__v4di) __W,
+						     (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_cvtps_epu64 (__mmask8 __U, __m128 __A)
+{
+  return (__m256i) __builtin_ia32_cvtps2uqq256_mask ((__v4sf) __A,
+						     (__v4di)
+						     _mm256_setzero_si256 (),
+						     (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtps_epu64 (__m128 __A)
+{
+  return (__m128i) __builtin_ia32_cvtps2uqq128_mask ((__v4sf) __A,
+						     (__v2di)
+						     _mm_setzero_di (),
+						     (__mmask8) -1);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cvtps_epu64 (__m128i __W, __mmask8 __U, __m128 __A)
+{
+  return (__m128i) __builtin_ia32_cvtps2uqq128_mask ((__v4sf) __A,
+						     (__v2di) __W,
+						     (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_cvtps_epu64 (__mmask8 __U, __m128 __A)
+{
+  return (__m128i) __builtin_ia32_cvtps2uqq128_mask ((__v4sf) __A,
+						     (__v2di)
+						     _mm_setzero_di (),
+						     (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cvtepi64_ps (__m256i __A)
+{
+  return (__m128) __builtin_ia32_cvtqq2ps256_mask ((__v4di) __A,
+						   (__v4sf)
+						   _mm_setzero_ps (),
+						   (__mmask8) -1);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cvtepi64_ps (__m128 __W, __mmask8 __U, __m256i __A)
+{
+  return (__m128) __builtin_ia32_cvtqq2ps256_mask ((__v4di) __A,
+						   (__v4sf) __W,
+						   (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_cvtepi64_ps (__mmask8 __U, __m256i __A)
+{
+  return (__m128) __builtin_ia32_cvtqq2ps256_mask ((__v4di) __A,
+						   (__v4sf)
+						   _mm_setzero_ps (),
+						   (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtepi64_ps (__m128i __A)
+{
+  return (__m128) __builtin_ia32_cvtqq2ps128_mask ((__v2di) __A,
+						   (__v4sf)
+						   _mm_setzero_ps (),
+						   (__mmask8) -1);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cvtepi64_ps (__m128 __W, __mmask8 __U, __m128i __A)
+{
+  return (__m128) __builtin_ia32_cvtqq2ps128_mask ((__v2di) __A,
+						   (__v4sf) __W,
+						   (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_cvtepi64_ps (__mmask8 __U, __m128i __A)
+{
+  return (__m128) __builtin_ia32_cvtqq2ps128_mask ((__v2di) __A,
+						   (__v4sf)
+						   _mm_setzero_ps (),
+						   (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cvtepu64_ps (__m256i __A)
+{
+  return (__m128) __builtin_ia32_cvtuqq2ps256_mask ((__v4di) __A,
+						    (__v4sf)
+						    _mm_setzero_ps (),
+						    (__mmask8) -1);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cvtepu64_ps (__m128 __W, __mmask8 __U, __m256i __A)
+{
+  return (__m128) __builtin_ia32_cvtuqq2ps256_mask ((__v4di) __A,
+						    (__v4sf) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_cvtepu64_ps (__mmask8 __U, __m256i __A)
+{
+  return (__m128) __builtin_ia32_cvtuqq2ps256_mask ((__v4di) __A,
+						    (__v4sf)
+						    _mm_setzero_ps (),
+						    (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtepu64_ps (__m128i __A)
+{
+  return (__m128) __builtin_ia32_cvtuqq2ps128_mask ((__v2di) __A,
+						    (__v4sf)
+						    _mm_setzero_ps (),
+						    (__mmask8) -1);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cvtepu64_ps (__m128 __W, __mmask8 __U, __m128i __A)
+{
+  return (__m128) __builtin_ia32_cvtuqq2ps128_mask ((__v2di) __A,
+						    (__v4sf) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_cvtepu64_ps (__mmask8 __U, __m128i __A)
+{
+  return (__m128) __builtin_ia32_cvtuqq2ps128_mask ((__v2di) __A,
+						    (__v4sf)
+						    _mm_setzero_ps (),
+						    (__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cvtepi64_pd (__m256i __A)
+{
+  return (__m256d) __builtin_ia32_cvtqq2pd256_mask ((__v4di) __A,
+						    (__v4df)
+						    _mm256_setzero_pd (),
+						    (__mmask8) -1);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cvtepi64_pd (__m256d __W, __mmask8 __U, __m256i __A)
+{
+  return (__m256d) __builtin_ia32_cvtqq2pd256_mask ((__v4di) __A,
+						    (__v4df) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_cvtepi64_pd (__mmask8 __U, __m256i __A)
+{
+  return (__m256d) __builtin_ia32_cvtqq2pd256_mask ((__v4di) __A,
+						    (__v4df)
+						    _mm256_setzero_pd (),
+						    (__mmask8) __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtepi64_pd (__m128i __A)
+{
+  return (__m128d) __builtin_ia32_cvtqq2pd128_mask ((__v2di) __A,
+						    (__v2df)
+						    _mm_setzero_pd (),
+						    (__mmask8) -1);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cvtepi64_pd (__m128d __W, __mmask8 __U, __m128i __A)
+{
+  return (__m128d) __builtin_ia32_cvtqq2pd128_mask ((__v2di) __A,
+						    (__v2df) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_cvtepi64_pd (__mmask8 __U, __m128i __A)
+{
+  return (__m128d) __builtin_ia32_cvtqq2pd128_mask ((__v2di) __A,
+						    (__v2df)
+						    _mm_setzero_pd (),
+						    (__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cvtepu64_pd (__m256i __A)
+{
+  return (__m256d) __builtin_ia32_cvtuqq2pd256_mask ((__v4di) __A,
+						     (__v4df)
+						     _mm256_setzero_pd (),
+						     (__mmask8) -1);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cvtepu64_pd (__m256d __W, __mmask8 __U, __m256i __A)
+{
+  return (__m256d) __builtin_ia32_cvtuqq2pd256_mask ((__v4di) __A,
+						     (__v4df) __W,
+						     (__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_cvtepu64_pd (__mmask8 __U, __m256i __A)
+{
+  return (__m256d) __builtin_ia32_cvtuqq2pd256_mask ((__v4di) __A,
+						     (__v4df)
+						     _mm256_setzero_pd (),
+						     (__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_and_pd (__m256d __W, __mmask8 __U, __m256d __A,
+		    __m256d __B)
+{
+  return (__m256d) __builtin_ia32_andpd256_mask ((__v4df) __A,
+						 (__v4df) __B,
+						 (__v4df) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_and_pd (__mmask8 __U, __m256d __A, __m256d __B)
+{
+  return (__m256d) __builtin_ia32_andpd256_mask ((__v4df) __A,
+						 (__v4df) __B,
+						 (__v4df)
+						 _mm256_setzero_pd (),
+						 (__mmask8) __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_and_pd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
+{
+  return (__m128d) __builtin_ia32_andpd128_mask ((__v2df) __A,
+						 (__v2df) __B,
+						 (__v2df) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_and_pd (__mmask8 __U, __m128d __A, __m128d __B)
+{
+  return (__m128d) __builtin_ia32_andpd128_mask ((__v2df) __A,
+						 (__v2df) __B,
+						 (__v2df)
+						 _mm_setzero_pd (),
+						 (__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_and_ps (__m256 __W, __mmask8 __U, __m256 __A, __m256 __B)
+{
+  return (__m256) __builtin_ia32_andps256_mask ((__v8sf) __A,
+						(__v8sf) __B,
+						(__v8sf) __W,
+						(__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_and_ps (__mmask8 __U, __m256 __A, __m256 __B)
+{
+  return (__m256) __builtin_ia32_andps256_mask ((__v8sf) __A,
+						(__v8sf) __B,
+						(__v8sf)
+						_mm256_setzero_ps (),
+						(__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_and_ps (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
+{
+  return (__m128) __builtin_ia32_andps128_mask ((__v4sf) __A,
+						(__v4sf) __B,
+						(__v4sf) __W,
+						(__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_and_ps (__mmask8 __U, __m128 __A, __m128 __B)
+{
+  return (__m128) __builtin_ia32_andps128_mask ((__v4sf) __A,
+						(__v4sf) __B,
+						(__v4sf)
+						_mm_setzero_ps (),
+						(__mmask8) __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtepu64_pd (__m128i __A)
+{
+  return (__m128d) __builtin_ia32_cvtuqq2pd128_mask ((__v2di) __A,
+						     (__v2df)
+						     _mm_setzero_pd (),
+						     (__mmask8) -1);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cvtepu64_pd (__m128d __W, __mmask8 __U, __m128i __A)
+{
+  return (__m128d) __builtin_ia32_cvtuqq2pd128_mask ((__v2di) __A,
+						     (__v2df) __W,
+						     (__mmask8) __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_cvtepu64_pd (__mmask8 __U, __m128i __A)
+{
+  return (__m128d) __builtin_ia32_cvtuqq2pd128_mask ((__v2di) __A,
+						     (__v2df)
+						     _mm_setzero_pd (),
+						     (__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_xor_pd (__m256d __W, __mmask8 __U, __m256d __A,
+		    __m256d __B)
+{
+  return (__m256d) __builtin_ia32_xorpd256_mask ((__v4df) __A,
+						 (__v4df) __B,
+						 (__v4df) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_xor_pd (__mmask8 __U, __m256d __A, __m256d __B)
+{
+  return (__m256d) __builtin_ia32_xorpd256_mask ((__v4df) __A,
+						 (__v4df) __B,
+						 (__v4df)
+						 _mm256_setzero_pd (),
+						 (__mmask8) __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_xor_pd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
+{
+  return (__m128d) __builtin_ia32_xorpd128_mask ((__v2df) __A,
+						 (__v2df) __B,
+						 (__v2df) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_xor_pd (__mmask8 __U, __m128d __A, __m128d __B)
+{
+  return (__m128d) __builtin_ia32_xorpd128_mask ((__v2df) __A,
+						 (__v2df) __B,
+						 (__v2df)
+						 _mm_setzero_pd (),
+						 (__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_xor_ps (__m256 __W, __mmask8 __U, __m256 __A, __m256 __B)
+{
+  return (__m256) __builtin_ia32_xorps256_mask ((__v8sf) __A,
+						(__v8sf) __B,
+						(__v8sf) __W,
+						(__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_xor_ps (__mmask8 __U, __m256 __A, __m256 __B)
+{
+  return (__m256) __builtin_ia32_xorps256_mask ((__v8sf) __A,
+						(__v8sf) __B,
+						(__v8sf)
+						_mm256_setzero_ps (),
+						(__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_xor_ps (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
+{
+  return (__m128) __builtin_ia32_xorps128_mask ((__v4sf) __A,
+						(__v4sf) __B,
+						(__v4sf) __W,
+						(__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_xor_ps (__mmask8 __U, __m128 __A, __m128 __B)
+{
+  return (__m128) __builtin_ia32_xorps128_mask ((__v4sf) __A,
+						(__v4sf) __B,
+						(__v4sf)
+						_mm_setzero_ps (),
+						(__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_or_pd (__m256d __W, __mmask8 __U, __m256d __A, __m256d __B)
+{
+  return (__m256d) __builtin_ia32_orpd256_mask ((__v4df) __A,
+						(__v4df) __B,
+						(__v4df) __W,
+						(__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_or_pd (__mmask8 __U, __m256d __A, __m256d __B)
+{
+  return (__m256d) __builtin_ia32_orpd256_mask ((__v4df) __A,
+						(__v4df) __B,
+						(__v4df)
+						_mm256_setzero_pd (),
+						(__mmask8) __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_or_pd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
+{
+  return (__m128d) __builtin_ia32_orpd128_mask ((__v2df) __A,
+						(__v2df) __B,
+						(__v2df) __W,
+						(__mmask8) __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_or_pd (__mmask8 __U, __m128d __A, __m128d __B)
+{
+  return (__m128d) __builtin_ia32_orpd128_mask ((__v2df) __A,
+						(__v2df) __B,
+						(__v2df)
+						_mm_setzero_pd (),
+						(__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_or_ps (__m256 __W, __mmask8 __U, __m256 __A, __m256 __B)
+{
+  return (__m256) __builtin_ia32_orps256_mask ((__v8sf) __A,
+					       (__v8sf) __B,
+					       (__v8sf) __W,
+					       (__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_or_ps (__mmask8 __U, __m256 __A, __m256 __B)
+{
+  return (__m256) __builtin_ia32_orps256_mask ((__v8sf) __A,
+					       (__v8sf) __B,
+					       (__v8sf)
+					       _mm256_setzero_ps (),
+					       (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_or_ps (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
+{
+  return (__m128) __builtin_ia32_orps128_mask ((__v4sf) __A,
+					       (__v4sf) __B,
+					       (__v4sf) __W,
+					       (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_or_ps (__mmask8 __U, __m128 __A, __m128 __B)
+{
+  return (__m128) __builtin_ia32_orps128_mask ((__v4sf) __A,
+					       (__v4sf) __B,
+					       (__v4sf)
+					       _mm_setzero_ps (),
+					       (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_movm_epi32 (__mmask8 __A)
+{
+  return (__m128i) __builtin_ia32_cvtmask2d128 (__A);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_movm_epi32 (__mmask8 __A)
+{
+  return (__m256i) __builtin_ia32_cvtmask2d256 (__A);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_movm_epi64 (__mmask8 __A)
+{
+  return (__m128i) __builtin_ia32_cvtmask2q128 (__A);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_movm_epi64 (__mmask8 __A)
+{
+  return (__m256i) __builtin_ia32_cvtmask2q256 (__A);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_movepi32_mask (__m128i __A)
+{
+  return (__mmask8) __builtin_ia32_cvtd2mask128 ((__v4si) __A);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_movepi32_mask (__m256i __A)
+{
+  return (__mmask8) __builtin_ia32_cvtd2mask256 ((__v8si) __A);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_movepi64_mask (__m128i __A)
+{
+  return (__mmask8) __builtin_ia32_cvtq2mask128 ((__v2di) __A);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_movepi64_mask (__m256i __A)
+{
+  return (__mmask8) __builtin_ia32_cvtq2mask256 ((__v4di) __A);
+}
+
+#ifdef __OPTIMIZE__
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_extractf64x2_pd (__m256d __A, const int __imm)
+{
+  return (__m128d) __builtin_ia32_extractf64x2_256_mask ((__v4df) __A,
+							 __imm,
+							 (__v2df)
+							 _mm_setzero_pd (),
+							 (__mmask8) -
+							 1);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_extractf64x2_pd (__m128d __W, __mmask8 __U, __m256d __A,
+			     const int __imm)
+{
+  return (__m128d) __builtin_ia32_extractf64x2_256_mask ((__v4df) __A,
+							 __imm,
+							 (__v2df) __W,
+							 (__mmask8)
+							 __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_extractf64x2_pd (__mmask8 __U, __m256d __A,
+			      const int __imm)
+{
+  return (__m128d) __builtin_ia32_extractf64x2_256_mask ((__v4df) __A,
+							 __imm,
+							 (__v2df)
+							 _mm_setzero_pd (),
+							 (__mmask8)
+							 __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_extracti64x2_epi64 (__m256i __A, const int __imm)
+{
+  return (__m128i) __builtin_ia32_extracti64x2_256_mask ((__v4di) __A,
+							 __imm,
+							 (__v2di)
+							 _mm_setzero_di (),
+							 (__mmask8) -
+							 1);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_extracti64x2_epi64 (__m128i __W, __mmask8 __U, __m256i __A,
+				const int __imm)
+{
+  return (__m128i) __builtin_ia32_extracti64x2_256_mask ((__v4di) __A,
+							 __imm,
+							 (__v2di) __W,
+							 (__mmask8)
+							 __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_extracti64x2_epi64 (__mmask8 __U, __m256i __A,
+				 const int __imm)
+{
+  return (__m128i) __builtin_ia32_extracti64x2_256_mask ((__v4di) __A,
+							 __imm,
+							 (__v2di)
+							 _mm_setzero_di (),
+							 (__mmask8)
+							 __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_reduce_pd (__m256d __A, int __B)
+{
+  return (__m256d) __builtin_ia32_reducepd256_mask ((__v4df) __A, __B,
+						    (__v4df)
+						    _mm256_setzero_pd (),
+						    (__mmask8) -1);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_reduce_pd (__m256d __W, __mmask8 __U, __m256d __A, int __B)
+{
+  return (__m256d) __builtin_ia32_reducepd256_mask ((__v4df) __A, __B,
+						    (__v4df) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_reduce_pd (__mmask8 __U, __m256d __A, int __B)
+{
+  return (__m256d) __builtin_ia32_reducepd256_mask ((__v4df) __A, __B,
+						    (__v4df)
+						    _mm256_setzero_pd (),
+						    (__mmask8) __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_reduce_pd (__m128d __A, int __B)
+{
+  return (__m128d) __builtin_ia32_reducepd128_mask ((__v2df) __A, __B,
+						    (__v2df)
+						    _mm_setzero_pd (),
+						    (__mmask8) -1);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_reduce_pd (__m128d __W, __mmask8 __U, __m128d __A, int __B)
+{
+  return (__m128d) __builtin_ia32_reducepd128_mask ((__v2df) __A, __B,
+						    (__v2df) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_reduce_pd (__mmask8 __U, __m128d __A, int __B)
+{
+  return (__m128d) __builtin_ia32_reducepd128_mask ((__v2df) __A, __B,
+						    (__v2df)
+						    _mm_setzero_pd (),
+						    (__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_reduce_ps (__m256 __A, int __B)
+{
+  return (__m256) __builtin_ia32_reduceps256_mask ((__v8sf) __A, __B,
+						   (__v8sf)
+						   _mm256_setzero_ps (),
+						   (__mmask8) -1);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_reduce_ps (__m256 __W, __mmask8 __U, __m256 __A, int __B)
+{
+  return (__m256) __builtin_ia32_reduceps256_mask ((__v8sf) __A, __B,
+						   (__v8sf) __W,
+						   (__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_reduce_ps (__mmask8 __U, __m256 __A, int __B)
+{
+  return (__m256) __builtin_ia32_reduceps256_mask ((__v8sf) __A, __B,
+						   (__v8sf)
+						   _mm256_setzero_ps (),
+						   (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_reduce_ps (__m128 __A, int __B)
+{
+  return (__m128) __builtin_ia32_reduceps128_mask ((__v4sf) __A, __B,
+						   (__v4sf)
+						   _mm_setzero_ps (),
+						   (__mmask8) -1);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_reduce_ps (__m128 __W, __mmask8 __U, __m128 __A, int __B)
+{
+  return (__m128) __builtin_ia32_reduceps128_mask ((__v4sf) __A, __B,
+						   (__v4sf) __W,
+						   (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_reduce_ps (__mmask8 __U, __m128 __A, int __B)
+{
+  return (__m128) __builtin_ia32_reduceps128_mask ((__v4sf) __A, __B,
+						   (__v4sf)
+						   _mm_setzero_ps (),
+						   (__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_range_pd (__m256d __A, __m256d __B, int __C)
+{
+  return (__m256d) __builtin_ia32_rangepd256_mask ((__v4df) __A,
+						   (__v4df) __B, __C,
+						   (__v4df)
+						   _mm256_setzero_pd (),
+						   (__mmask8) -1);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_range_pd (__m256d __W, __mmask8 __U,
+		      __m256d __A, __m256d __B, int __C)
+{
+  return (__m256d) __builtin_ia32_rangepd256_mask ((__v4df) __A,
+						   (__v4df) __B, __C,
+						   (__v4df) __W,
+						   (__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_range_pd (__mmask8 __U, __m256d __A, __m256d __B, int __C)
+{
+  return (__m256d) __builtin_ia32_rangepd256_mask ((__v4df) __A,
+						   (__v4df) __B, __C,
+						   (__v4df)
+						   _mm256_setzero_pd (),
+						   (__mmask8) __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_range_pd (__m128d __A, __m128d __B, int __C)
+{
+  return (__m128d) __builtin_ia32_rangepd128_mask ((__v2df) __A,
+						   (__v2df) __B, __C,
+						   (__v2df)
+						   _mm_setzero_pd (),
+						   (__mmask8) -1);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_range_pd (__m128d __W, __mmask8 __U,
+		   __m128d __A, __m128d __B, int __C)
+{
+  return (__m128d) __builtin_ia32_rangepd128_mask ((__v2df) __A,
+						   (__v2df) __B, __C,
+						   (__v2df) __W,
+						   (__mmask8) __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_range_pd (__mmask8 __U, __m128d __A, __m128d __B, int __C)
+{
+  return (__m128d) __builtin_ia32_rangepd128_mask ((__v2df) __A,
+						   (__v2df) __B, __C,
+						   (__v2df)
+						   _mm_setzero_pd (),
+						   (__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_range_ps (__m256 __A, __m256 __B, int __C)
+{
+  return (__m256) __builtin_ia32_rangeps256_mask ((__v8sf) __A,
+						  (__v8sf) __B, __C,
+						  (__v8sf)
+						  _mm256_setzero_ps (),
+						  (__mmask8) -1);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_range_ps (__m256 __W, __mmask8 __U, __m256 __A, __m256 __B,
+		      int __C)
+{
+  return (__m256) __builtin_ia32_rangeps256_mask ((__v8sf) __A,
+						  (__v8sf) __B, __C,
+						  (__v8sf) __W,
+						  (__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_range_ps (__mmask8 __U, __m256 __A, __m256 __B, int __C)
+{
+  return (__m256) __builtin_ia32_rangeps256_mask ((__v8sf) __A,
+						  (__v8sf) __B, __C,
+						  (__v8sf)
+						  _mm256_setzero_ps (),
+						  (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_range_ps (__m128 __A, __m128 __B, int __C)
+{
+  return (__m128) __builtin_ia32_rangeps128_mask ((__v4sf) __A,
+						  (__v4sf) __B, __C,
+						  (__v4sf)
+						  _mm_setzero_ps (),
+						  (__mmask8) -1);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_range_ps (__m128 __W, __mmask8 __U,
+		   __m128 __A, __m128 __B, int __C)
+{
+  return (__m128) __builtin_ia32_rangeps128_mask ((__v4sf) __A,
+						  (__v4sf) __B, __C,
+						  (__v4sf) __W,
+						  (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_range_ps (__mmask8 __U, __m128 __A, __m128 __B, int __C)
+{
+  return (__m128) __builtin_ia32_rangeps128_mask ((__v4sf) __A,
+						  (__v4sf) __B, __C,
+						  (__v4sf)
+						  _mm_setzero_ps (),
+						  (__mmask8) __U);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_fpclass_pd_mask (__mmask8 __U, __m256d __A,
+			     const int __imm)
+{
+  return (__mmask8) __builtin_ia32_fpclasspd256_mask ((__v4df) __A,
+						      __imm, __U);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_fpclass_pd_mask (__m256d __A, const int __imm)
+{
+  return (__mmask8) __builtin_ia32_fpclasspd256_mask ((__v4df) __A,
+						      __imm,
+						      (__mmask8) -1);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_fpclass_ps_mask (__mmask8 __U, __m256 __A, const int __imm)
+{
+  return (__mmask8) __builtin_ia32_fpclassps256_mask ((__v8sf) __A,
+						      __imm, __U);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_fpclass_ps_mask (__m256 __A, const int __imm)
+{
+  return (__mmask8) __builtin_ia32_fpclassps256_mask ((__v8sf) __A,
+						      __imm,
+						      (__mmask8) -1);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_fpclass_pd_mask (__mmask8 __U, __m128d __A, const int __imm)
+{
+  return (__mmask8) __builtin_ia32_fpclasspd128_mask ((__v2df) __A,
+						      __imm, __U);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_fpclass_pd_mask (__m128d __A, const int __imm)
+{
+  return (__mmask8) __builtin_ia32_fpclasspd128_mask ((__v2df) __A,
+						      __imm,
+						      (__mmask8) -1);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_fpclass_ps_mask (__mmask8 __U, __m128 __A, const int __imm)
+{
+  return (__mmask8) __builtin_ia32_fpclassps128_mask ((__v4sf) __A,
+						      __imm, __U);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_fpclass_ps_mask (__m128 __A, const int __imm)
+{
+  return (__mmask8) __builtin_ia32_fpclassps128_mask ((__v4sf) __A,
+						      __imm,
+						      (__mmask8) -1);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_inserti64x2 (__m256i __A, __m128i __B, const int __imm)
+{
+  return (__m256i) __builtin_ia32_inserti64x2_256_mask ((__v4di) __A,
+							(__v2di) __B,
+							__imm,
+							(__v4di)
+							_mm256_setzero_si256 (),
+							(__mmask8) -
+							1);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_inserti64x2 (__m256i __W, __mmask8 __U, __m256i __A,
+			 __m128i __B, const int __imm)
+{
+  return (__m256i) __builtin_ia32_inserti64x2_256_mask ((__v4di) __A,
+							(__v2di) __B,
+							__imm,
+							(__v4di) __W,
+							(__mmask8)
+							__U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_inserti64x2 (__mmask8 __U, __m256i __A, __m128i __B,
+			  const int __imm)
+{
+  return (__m256i) __builtin_ia32_inserti64x2_256_mask ((__v4di) __A,
+							(__v2di) __B,
+							__imm,
+							(__v4di)
+							_mm256_setzero_si256 (),
+							(__mmask8)
+							__U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_insertf64x2 (__m256d __A, __m128d __B, const int __imm)
+{
+  return (__m256d) __builtin_ia32_insertf64x2_256_mask ((__v4df) __A,
+							(__v2df) __B,
+							__imm,
+							(__v4df)
+							_mm256_setzero_pd (),
+							(__mmask8) -
+							1);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_insertf64x2 (__m256d __W, __mmask8 __U, __m256d __A,
+			 __m128d __B, const int __imm)
+{
+  return (__m256d) __builtin_ia32_insertf64x2_256_mask ((__v4df) __A,
+							(__v2df) __B,
+							__imm,
+							(__v4df) __W,
+							(__mmask8)
+							__U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_insertf64x2 (__mmask8 __U, __m256d __A, __m128d __B,
+			  const int __imm)
+{
+  return (__m256d) __builtin_ia32_insertf64x2_256_mask ((__v4df) __A,
+							(__v2df) __B,
+							__imm,
+							(__v4df)
+							_mm256_setzero_pd (),
+							(__mmask8)
+							__U);
+}
+
+#else
+#define _mm256_insertf64x2(X, Y, C)                                     \
+  ((__m256d) __builtin_ia32_insertf64x2_256_mask ((__v4df)(__m256d) (X),\
+    (__v2df)(__m128d) (Y), (int) (C),					\
+    (__v4df)(__m256d)_mm256_setzero_pd(),				\
+    (__mmask8)-1))
+
+#define _mm256_mask_insertf64x2(W, U, X, Y, C)                          \
+  ((__m256d) __builtin_ia32_insertf64x2_256_mask ((__v4df)(__m256d) (X),\
+    (__v2df)(__m128d) (Y), (int) (C),					\
+    (__v4df)(__m256d)(W),						\
+    (__mmask8)(U)))
+
+#define _mm256_maskz_insertf64x2(U, X, Y, C)				\
+  ((__m256d) __builtin_ia32_insertf64x2_256_mask ((__v4df)(__m256d) (X),\
+    (__v2df)(__m128d) (Y), (int) (C),					\
+    (__v4df)(__m256d)_mm256_setzero_pd(),				\
+    (__mmask8)(U)))
+
+#define _mm256_inserti64x2(X, Y, C)                                     \
+  ((__m256i) __builtin_ia32_inserti64x2_256_mask ((__v4di)(__m256i) (X),\
+    (__v2di)(__m128i) (Y), (int) (C),					\
+    (__v4di)(__m256i)_mm256_setzero_si256 (),				\
+    (__mmask8)-1))
+
+#define _mm256_mask_inserti64x2(W, U, X, Y, C)                          \
+  ((__m256i) __builtin_ia32_inserti64x2_256_mask ((__v4di)(__m256i) (X),\
+    (__v2di)(__m128i) (Y), (int) (C),					\
+    (__v4di)(__m256i)(W),						\
+    (__mmask8)(U)))
+
+#define _mm256_maskz_inserti64x2(U, X, Y, C)                            \
+  ((__m256i) __builtin_ia32_inserti64x2_256_mask ((__v4di)(__m256i) (X),\
+    (__v2di)(__m128i) (Y), (int) (C),					\
+    (__v4di)(__m256i)_mm256_setzero_si256 (),				\
+    (__mmask8)(U)))
+
+#define _mm256_extractf64x2_pd(X, C)                                    \
+  ((__m128d) __builtin_ia32_extractf64x2_256_mask ((__v4df)(__m256d) (X),\
+    (int) (C), (__v2df)(__m128d) _mm_setzero_pd(), (__mmask8)-1))
+
+#define _mm256_mask_extractf64x2_pd(W, U, X, C)                         \
+  ((__m128d) __builtin_ia32_extractf64x2_256_mask ((__v4df)(__m256d) (X),\
+    (int) (C), (__v2df)(__m128d) (W), (__mmask8) (U)))
+
+#define _mm256_maskz_extractf64x2_pd(U, X, C)                           \
+  ((__m128d) __builtin_ia32_extractf64x2_256_mask ((__v4df)(__m256d) (X),\
+    (int) (C), (__v2df)(__m128d) _mm_setzero_pd(), (__mmask8) (U)))
+
+#define _mm256_extracti64x2_epi64(X, C)                                 \
+  ((__m128i) __builtin_ia32_extracti64x2_256_mask ((__v4di)(__m256i) (X),\
+    (int) (C), (__v2di)(__m128i) _mm_setzero_di(), (__mmask8)-1))
+
+#define _mm256_mask_extracti64x2_epi64(W, U, X, C)                     \
+  ((__m128i) __builtin_ia32_extracti64x2_256_mask ((__v4di)(__m256i) (X),\
+    (int) (C), (__v2di)(__m128i) (W), (__mmask8) (U)))
+
+#define _mm256_maskz_extracti64x2_epi64(U, X, C)                        \
+  ((__m128i) __builtin_ia32_extracti64x2_256_mask ((__v4di)(__m256i) (X),\
+    (int) (C), (__v2di)(__m128i) _mm_setzero_di(), (__mmask8) (U)))
+
+#define _mm256_reduce_pd(A, B)						\
+  ((__m256d) __builtin_ia32_reducepd256_mask ((__v4df)(__m256d)(A),	\
+    (int)(B), (__v4df)_mm256_setzero_pd(), (__mmask8)-1))
+
+#define _mm256_mask_reduce_pd(W, U, A, B)				\
+  ((__m256d) __builtin_ia32_reducepd256_mask ((__v4df)(__m256d)(A),	\
+    (int)(B), (__v4df)(__m256d)(W), (__mmask8)(U)))
+
+#define _mm256_maskz_reduce_pd(U, A, B)					\
+  ((__m256d) __builtin_ia32_reducepd256_mask ((__v4df)(__m256d)(A),	\
+    (int)(B), (__v4df)_mm256_setzero_pd(), (__mmask8)(U)))
+
+#define _mm_reduce_pd(A, B)						\
+  ((__m128d) __builtin_ia32_reducepd128_mask ((__v2df)(__m128d)(A),	\
+    (int)(B), (__v2df)_mm_setzero_pd(), (__mmask8)-1))
+
+#define _mm_mask_reduce_pd(W, U, A, B)					\
+  ((__m128d) __builtin_ia32_reducepd128_mask ((__v2df)(__m128d)(A),	\
+    (int)(B), (__v2df)(__m128d)(W), (__mmask8)(U)))
+
+#define _mm_maskz_reduce_pd(U, A, B)					\
+  ((__m128d) __builtin_ia32_reducepd128_mask ((__v2df)(__m128d)(A),	\
+    (int)(B), (__v2df)_mm_setzero_pd(), (__mmask8)(U)))
+
+#define _mm256_reduce_ps(A, B)						\
+  ((__m256) __builtin_ia32_reduceps256_mask ((__v8sf)(__m256)(A),	\
+    (int)(B), (__v8sf)_mm256_setzero_ps(), (__mmask8)-1))
+
+#define _mm256_mask_reduce_ps(W, U, A, B)				\
+  ((__m256) __builtin_ia32_reduceps256_mask ((__v8sf)(__m256)(A),	\
+    (int)(B), (__v8sf)(__m256)(W), (__mmask8)(U)))
+
+#define _mm256_maskz_reduce_ps(U, A, B)					\
+  ((__m256) __builtin_ia32_reduceps256_mask ((__v8sf)(__m256)(A),	\
+    (int)(B), (__v8sf)_mm256_setzero_ps(), (__mmask8)(U)))
+
+#define _mm_reduce_ps(A, B)						\
+  ((__m128) __builtin_ia32_reduceps128_mask ((__v4sf)(__m128)(A),	\
+    (int)(B), (__v4sf)_mm_setzero_ps(), (__mmask8)-1))
+
+#define _mm_mask_reduce_ps(W, U, A, B)					\
+  ((__m128) __builtin_ia32_reduceps128_mask ((__v4sf)(__m128)(A),	\
+    (int)(B), (__v4sf)(__m128)(W), (__mmask8)(U)))
+
+#define _mm_maskz_reduce_ps(U, A, B)					\
+  ((__m128) __builtin_ia32_reduceps128_mask ((__v4sf)(__m128)(A),	\
+    (int)(B), (__v4sf)_mm_setzero_ps(), (__mmask8)(U)))
+
+#define _mm256_range_pd(A, B, C)					\
+  ((__m256d) __builtin_ia32_rangepd256_mask ((__v4df)(__m256d)(A),	\
+    (__v4df)(__m256d)(B), (int)(C),					\
+    (__v4df)_mm256_setzero_pd(), (__mmask8)-1))
+
+#define _mm256_maskz_range_pd(U, A, B, C)				\
+  ((__m256d) __builtin_ia32_rangepd256_mask ((__v4df)(__m256d)(A),	\
+    (__v4df)(__m256d)(B), (int)(C),					\
+    (__v4df)_mm256_setzero_pd(), (__mmask8)(U)))
+
+#define _mm_range_pd(A, B, C)						\
+  ((__m128d) __builtin_ia32_rangepd128_mask ((__v2df)(__m128d)(A),	\
+    (__v2df)(__m128d)(B), (int)(C),					\
+    (__v2df)_mm_setzero_pd(), (__mmask8)-1))
+
+#define _mm256_range_ps(A, B, C)					\
+  ((__m256) __builtin_ia32_rangeps256_mask ((__v8sf)(__m256)(A),	\
+    (__v8sf)(__m256)(B), (int)(C),					\
+    (__v8sf)_mm256_setzero_ps(), (__mmask8)-1))
+
+#define _mm256_mask_range_ps(W, U, A, B, C)				\
+  ((__m256) __builtin_ia32_rangeps256_mask ((__v8sf)(__m256)(A),	\
+    (__v8sf)(__m256)(B), (int)(C),					\
+    (__v8sf)(__m256)(W), (__mmask8)(U)))
+
+#define _mm256_maskz_range_ps(U, A, B, C)				\
+  ((__m256) __builtin_ia32_rangeps256_mask ((__v8sf)(__m256)(A),	\
+    (__v8sf)(__m256)(B), (int)(C),					\
+    (__v8sf)_mm256_setzero_ps(), (__mmask8)(U)))
+
+#define _mm_range_ps(A, B, C)						\
+  ((__m128) __builtin_ia32_rangeps128_mask ((__v4sf)(__m128)(A),	\
+    (__v4sf)(__m128)(B), (int)(C),					\
+    (__v4sf)_mm_setzero_ps(), (__mmask8)-1))
+
+#define _mm_mask_range_ps(W, U, A, B, C)				\
+  ((__m128) __builtin_ia32_rangeps128_mask ((__v4sf)(__m128)(A),	\
+    (__v4sf)(__m128)(B), (int)(C),					\
+    (__v4sf)(__m128)(W), (__mmask8)(U)))
+
+#define _mm_maskz_range_ps(U, A, B, C)					\
+  ((__m128) __builtin_ia32_rangeps128_mask ((__v4sf)(__m128)(A),	\
+    (__v4sf)(__m128)(B), (int)(C),					\
+    (__v4sf)_mm_setzero_ps(), (__mmask8)(U)))
+
+#define _mm256_mask_range_pd(W, U, A, B, C)				\
+  ((__m256d) __builtin_ia32_rangepd256_mask ((__v4df)(__m256d)(A),	\
+    (__v4df)(__m256d)(B), (int)(C),					\
+    (__v4df)(__m256d)(W), (__mmask8)(U)))
+
+#define _mm_mask_range_pd(W, U, A, B, C)				\
+  ((__m128d) __builtin_ia32_rangepd128_mask ((__v2df)(__m128d)(A),	\
+    (__v2df)(__m128d)(B), (int)(C),					\
+    (__v2df)(__m128d)(W), (__mmask8)(U)))
+
+#define _mm_maskz_range_pd(U, A, B, C)					\
+  ((__m128d) __builtin_ia32_rangepd128_mask ((__v2df)(__m128d)(A),	\
+    (__v2df)(__m128d)(B), (int)(C),					\
+    (__v2df)_mm_setzero_pd(), (__mmask8)(U)))
+
+#define _mm256_mask_fpclass_pd_mask(u, X, C)                            \
+  ((__mmask8) __builtin_ia32_fpclasspd256_mask ((__v4df) (__m256d) (X), \
+						(int) (C),(__mmask8)(u)))
+
+#define _mm256_mask_fpclass_ps_mask(u, X, C)				\
+  ((__mmask8) __builtin_ia32_fpclassps256_mask ((__v8sf) (__m256) (X),  \
+						(int) (C),(__mmask8)(u)))
+
+#define _mm_mask_fpclass_pd_mask(u, X, C)                               \
+  ((__mmask8) __builtin_ia32_fpclasspd128_mask ((__v2df) (__m128d) (X), \
+						(int) (C),(__mmask8)(u)))
+
+#define _mm_mask_fpclass_ps_mask(u, X, C)                               \
+  ((__mmask8) __builtin_ia32_fpclassps128_mask ((__v4sf) (__m128) (X),  \
+						(int) (C),(__mmask8)(u)))
+
+#define _mm256_fpclass_pd_mask(X, C)                                    \
+  ((__mmask8) __builtin_ia32_fpclasspd256_mask ((__v4df) (__m256d) (X), \
+						(int) (C),(__mmask8)-1))
+
+#define _mm256_fpclass_ps_mask(X, C)                                    \
+  ((__mmask8) __builtin_ia32_fpclassps256_mask ((__v8sf) (__m256) (X),  \
+						(int) (C),(__mmask8)-1))
+
+#define _mm_fpclass_pd_mask(X, C)                                       \
+  ((__mmask8) __builtin_ia32_fpclasspd128_mask ((__v2df) (__m128d) (X), \
+						(int) (C),(__mmask8)-1))
+
+#define _mm_fpclass_ps_mask(X, C)                                       \
+  ((__mmask8) __builtin_ia32_fpclassps128_mask ((__v4sf) (__m128) (X),  \
+						(int) (C),(__mmask8)-1))
+
+#endif
+
+#ifdef __DISABLE_AVX512VLDQ__
+#undef __DISABLE_AVX512VLDQ__
+#pragma GCC pop_options
+#endif /* __DISABLE_AVX512VLDQ__ */
+
+#endif /* _AVX512VLDQINTRIN_H_INCLUDED */
Index: Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/avx512vlintrin.h
===================================================================
--- Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/avx512vlintrin.h	(revision 1046)
+++ Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/avx512vlintrin.h	(revision 1046)
@@ -0,0 +1,13598 @@
+/* Copyright (C) 2014-2015 Free Software Foundation, Inc.
+
+   This file is part of GCC.
+
+   GCC is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
+
+   GCC is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   Under Section 7 of GPL version 3, you are granted additional
+   permissions described in the GCC Runtime Library Exception, version
+   3.1, as published by the Free Software Foundation.
+
+   You should have received a copy of the GNU General Public License and
+   a copy of the GCC Runtime Library Exception along with this program;
+   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _IMMINTRIN_H_INCLUDED
+#error "Never use <avx512vlintrin.h> directly; include <immintrin.h> instead."
+#endif
+
+#ifndef _AVX512VLINTRIN_H_INCLUDED
+#define _AVX512VLINTRIN_H_INCLUDED
+
+/* Doesn't require avx512vl target and is used in avx512dqintrin.h.  */
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_setzero_di (void)
+{
+  return __extension__ (__m128i)(__v2di){ 0LL, 0LL};
+}
+
+#ifndef __AVX512VL__
+#pragma GCC push_options
+#pragma GCC target("avx512vl")
+#define __DISABLE_AVX512VL__
+#endif /* __AVX512VL__ */
+
+/* Internal data types for implementing the intrinsics.  */
+typedef unsigned int __mmask32;
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_mov_pd (__m256d __W, __mmask8 __U, __m256d __A)
+{
+  return (__m256d) __builtin_ia32_movapd256_mask ((__v4df) __A,
+						  (__v4df) __W,
+						  (__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_mov_pd (__mmask8 __U, __m256d __A)
+{
+  return (__m256d) __builtin_ia32_movapd256_mask ((__v4df) __A,
+						  (__v4df)
+						  _mm256_setzero_pd (),
+						  (__mmask8) __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_mov_pd (__m128d __W, __mmask8 __U, __m128d __A)
+{
+  return (__m128d) __builtin_ia32_movapd128_mask ((__v2df) __A,
+						  (__v2df) __W,
+						  (__mmask8) __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_mov_pd (__mmask8 __U, __m128d __A)
+{
+  return (__m128d) __builtin_ia32_movapd128_mask ((__v2df) __A,
+						  (__v2df)
+						  _mm_setzero_pd (),
+						  (__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_load_pd (__m256d __W, __mmask8 __U, void const *__P)
+{
+  return (__m256d) __builtin_ia32_loadapd256_mask ((__v4df *) __P,
+						   (__v4df) __W,
+						   (__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_load_pd (__mmask8 __U, void const *__P)
+{
+  return (__m256d) __builtin_ia32_loadapd256_mask ((__v4df *) __P,
+						   (__v4df)
+						   _mm256_setzero_pd (),
+						   (__mmask8) __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_load_pd (__m128d __W, __mmask8 __U, void const *__P)
+{
+  return (__m128d) __builtin_ia32_loadapd128_mask ((__v2df *) __P,
+						   (__v2df) __W,
+						   (__mmask8) __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_load_pd (__mmask8 __U, void const *__P)
+{
+  return (__m128d) __builtin_ia32_loadapd128_mask ((__v2df *) __P,
+						   (__v2df)
+						   _mm_setzero_pd (),
+						   (__mmask8) __U);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_store_pd (void *__P, __mmask8 __U, __m256d __A)
+{
+  __builtin_ia32_storeapd256_mask ((__v4df *) __P,
+				   (__v4df) __A,
+				   (__mmask8) __U);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_store_pd (void *__P, __mmask8 __U, __m128d __A)
+{
+  __builtin_ia32_storeapd128_mask ((__v2df *) __P,
+				   (__v2df) __A,
+				   (__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_mov_ps (__m256 __W, __mmask8 __U, __m256 __A)
+{
+  return (__m256) __builtin_ia32_movaps256_mask ((__v8sf) __A,
+						 (__v8sf) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_mov_ps (__mmask8 __U, __m256 __A)
+{
+  return (__m256) __builtin_ia32_movaps256_mask ((__v8sf) __A,
+						 (__v8sf)
+						 _mm256_setzero_ps (),
+						 (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_mov_ps (__m128 __W, __mmask8 __U, __m128 __A)
+{
+  return (__m128) __builtin_ia32_movaps128_mask ((__v4sf) __A,
+						 (__v4sf) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_mov_ps (__mmask8 __U, __m128 __A)
+{
+  return (__m128) __builtin_ia32_movaps128_mask ((__v4sf) __A,
+						 (__v4sf)
+						 _mm_setzero_ps (),
+						 (__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_load_ps (__m256 __W, __mmask8 __U, void const *__P)
+{
+  return (__m256) __builtin_ia32_loadaps256_mask ((__v8sf *) __P,
+						  (__v8sf) __W,
+						  (__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_load_ps (__mmask8 __U, void const *__P)
+{
+  return (__m256) __builtin_ia32_loadaps256_mask ((__v8sf *) __P,
+						  (__v8sf)
+						  _mm256_setzero_ps (),
+						  (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_load_ps (__m128 __W, __mmask8 __U, void const *__P)
+{
+  return (__m128) __builtin_ia32_loadaps128_mask ((__v4sf *) __P,
+						  (__v4sf) __W,
+						  (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_load_ps (__mmask8 __U, void const *__P)
+{
+  return (__m128) __builtin_ia32_loadaps128_mask ((__v4sf *) __P,
+						  (__v4sf)
+						  _mm_setzero_ps (),
+						  (__mmask8) __U);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_store_ps (void *__P, __mmask8 __U, __m256 __A)
+{
+  __builtin_ia32_storeaps256_mask ((__v8sf *) __P,
+				   (__v8sf) __A,
+				   (__mmask8) __U);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_store_ps (void *__P, __mmask8 __U, __m128 __A)
+{
+  __builtin_ia32_storeaps128_mask ((__v4sf *) __P,
+				   (__v4sf) __A,
+				   (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_mov_epi64 (__m256i __W, __mmask8 __U, __m256i __A)
+{
+  return (__m256i) __builtin_ia32_movdqa64_256_mask ((__v4di) __A,
+						     (__v4di) __W,
+						     (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_mov_epi64 (__mmask8 __U, __m256i __A)
+{
+  return (__m256i) __builtin_ia32_movdqa64_256_mask ((__v4di) __A,
+						     (__v4di)
+						     _mm256_setzero_si256 (),
+						     (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_mov_epi64 (__m128i __W, __mmask8 __U, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_movdqa64_128_mask ((__v2di) __A,
+						     (__v2di) __W,
+						     (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_mov_epi64 (__mmask8 __U, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_movdqa64_128_mask ((__v2di) __A,
+						     (__v2di)
+						     _mm_setzero_di (),
+						     (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_load_epi64 (__m256i __W, __mmask8 __U, void const *__P)
+{
+  return (__m256i) __builtin_ia32_movdqa64load256_mask ((__v4di *) __P,
+							(__v4di) __W,
+							(__mmask8)
+							__U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_load_epi64 (__mmask8 __U, void const *__P)
+{
+  return (__m256i) __builtin_ia32_movdqa64load256_mask ((__v4di *) __P,
+							(__v4di)
+							_mm256_setzero_si256 (),
+							(__mmask8)
+							__U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_load_epi64 (__m128i __W, __mmask8 __U, void const *__P)
+{
+  return (__m128i) __builtin_ia32_movdqa64load128_mask ((__v2di *) __P,
+							(__v2di) __W,
+							(__mmask8)
+							__U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_load_epi64 (__mmask8 __U, void const *__P)
+{
+  return (__m128i) __builtin_ia32_movdqa64load128_mask ((__v2di *) __P,
+							(__v2di)
+							_mm_setzero_di (),
+							(__mmask8)
+							__U);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_store_epi64 (void *__P, __mmask8 __U, __m256i __A)
+{
+  __builtin_ia32_movdqa64store256_mask ((__v4di *) __P,
+					(__v4di) __A,
+					(__mmask8) __U);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_store_epi64 (void *__P, __mmask8 __U, __m128i __A)
+{
+  __builtin_ia32_movdqa64store128_mask ((__v2di *) __P,
+					(__v2di) __A,
+					(__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_mov_epi32 (__m256i __W, __mmask8 __U, __m256i __A)
+{
+  return (__m256i) __builtin_ia32_movdqa32_256_mask ((__v8si) __A,
+						     (__v8si) __W,
+						     (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_mov_epi32 (__mmask8 __U, __m256i __A)
+{
+  return (__m256i) __builtin_ia32_movdqa32_256_mask ((__v8si) __A,
+						     (__v8si)
+						     _mm256_setzero_si256 (),
+						     (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_mov_epi32 (__m128i __W, __mmask8 __U, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_movdqa32_128_mask ((__v4si) __A,
+						     (__v4si) __W,
+						     (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_mov_epi32 (__mmask8 __U, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_movdqa32_128_mask ((__v4si) __A,
+						     (__v4si)
+						     _mm_setzero_si128 (),
+						     (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_load_epi32 (__m256i __W, __mmask8 __U, void const *__P)
+{
+  return (__m256i) __builtin_ia32_movdqa32load256_mask ((__v8si *) __P,
+							(__v8si) __W,
+							(__mmask8)
+							__U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_load_epi32 (__mmask8 __U, void const *__P)
+{
+  return (__m256i) __builtin_ia32_movdqa32load256_mask ((__v8si *) __P,
+							(__v8si)
+							_mm256_setzero_si256 (),
+							(__mmask8)
+							__U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_load_epi32 (__m128i __W, __mmask8 __U, void const *__P)
+{
+  return (__m128i) __builtin_ia32_movdqa32load128_mask ((__v4si *) __P,
+							(__v4si) __W,
+							(__mmask8)
+							__U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_load_epi32 (__mmask8 __U, void const *__P)
+{
+  return (__m128i) __builtin_ia32_movdqa32load128_mask ((__v4si *) __P,
+							(__v4si)
+							_mm_setzero_si128 (),
+							(__mmask8)
+							__U);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_store_epi32 (void *__P, __mmask8 __U, __m256i __A)
+{
+  __builtin_ia32_movdqa32store256_mask ((__v8si *) __P,
+					(__v8si) __A,
+					(__mmask8) __U);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_store_epi32 (void *__P, __mmask8 __U, __m128i __A)
+{
+  __builtin_ia32_movdqa32store128_mask ((__v4si *) __P,
+					(__v4si) __A,
+					(__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_setzero_hi (void)
+{
+  return __extension__ (__m128i) (__v8hi)
+  {
+  0, 0, 0, 0, 0, 0, 0, 0};
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_add_pd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
+{
+  return (__m128d) __builtin_ia32_addpd128_mask ((__v2df) __A,
+						 (__v2df) __B,
+						 (__v2df) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_add_pd (__mmask8 __U, __m128d __A, __m128d __B)
+{
+  return (__m128d) __builtin_ia32_addpd128_mask ((__v2df) __A,
+						 (__v2df) __B,
+						 (__v2df)
+						 _mm_setzero_pd (),
+						 (__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_add_pd (__m256d __W, __mmask8 __U, __m256d __A,
+		    __m256d __B)
+{
+  return (__m256d) __builtin_ia32_addpd256_mask ((__v4df) __A,
+						 (__v4df) __B,
+						 (__v4df) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_add_pd (__mmask8 __U, __m256d __A, __m256d __B)
+{
+  return (__m256d) __builtin_ia32_addpd256_mask ((__v4df) __A,
+						 (__v4df) __B,
+						 (__v4df)
+						 _mm256_setzero_pd (),
+						 (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_add_ps (__m128 __W, __mmask16 __U, __m128 __A, __m128 __B)
+{
+  return (__m128) __builtin_ia32_addps128_mask ((__v4sf) __A,
+						(__v4sf) __B,
+						(__v4sf) __W,
+						(__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_add_ps (__mmask16 __U, __m128 __A, __m128 __B)
+{
+  return (__m128) __builtin_ia32_addps128_mask ((__v4sf) __A,
+						(__v4sf) __B,
+						(__v4sf)
+						_mm_setzero_ps (),
+						(__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_add_ps (__m256 __W, __mmask16 __U, __m256 __A, __m256 __B)
+{
+  return (__m256) __builtin_ia32_addps256_mask ((__v8sf) __A,
+						(__v8sf) __B,
+						(__v8sf) __W,
+						(__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_add_ps (__mmask16 __U, __m256 __A, __m256 __B)
+{
+  return (__m256) __builtin_ia32_addps256_mask ((__v8sf) __A,
+						(__v8sf) __B,
+						(__v8sf)
+						_mm256_setzero_ps (),
+						(__mmask8) __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_sub_pd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
+{
+  return (__m128d) __builtin_ia32_subpd128_mask ((__v2df) __A,
+						 (__v2df) __B,
+						 (__v2df) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_sub_pd (__mmask8 __U, __m128d __A, __m128d __B)
+{
+  return (__m128d) __builtin_ia32_subpd128_mask ((__v2df) __A,
+						 (__v2df) __B,
+						 (__v2df)
+						 _mm_setzero_pd (),
+						 (__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_sub_pd (__m256d __W, __mmask8 __U, __m256d __A,
+		    __m256d __B)
+{
+  return (__m256d) __builtin_ia32_subpd256_mask ((__v4df) __A,
+						 (__v4df) __B,
+						 (__v4df) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_sub_pd (__mmask8 __U, __m256d __A, __m256d __B)
+{
+  return (__m256d) __builtin_ia32_subpd256_mask ((__v4df) __A,
+						 (__v4df) __B,
+						 (__v4df)
+						 _mm256_setzero_pd (),
+						 (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_sub_ps (__m128 __W, __mmask16 __U, __m128 __A, __m128 __B)
+{
+  return (__m128) __builtin_ia32_subps128_mask ((__v4sf) __A,
+						(__v4sf) __B,
+						(__v4sf) __W,
+						(__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_sub_ps (__mmask16 __U, __m128 __A, __m128 __B)
+{
+  return (__m128) __builtin_ia32_subps128_mask ((__v4sf) __A,
+						(__v4sf) __B,
+						(__v4sf)
+						_mm_setzero_ps (),
+						(__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_sub_ps (__m256 __W, __mmask16 __U, __m256 __A, __m256 __B)
+{
+  return (__m256) __builtin_ia32_subps256_mask ((__v8sf) __A,
+						(__v8sf) __B,
+						(__v8sf) __W,
+						(__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_sub_ps (__mmask16 __U, __m256 __A, __m256 __B)
+{
+  return (__m256) __builtin_ia32_subps256_mask ((__v8sf) __A,
+						(__v8sf) __B,
+						(__v8sf)
+						_mm256_setzero_ps (),
+						(__mmask8) __U);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_store_epi64 (void *__P, __m256i __A)
+{
+  *(__m256i *) __P = __A;
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_store_epi64 (void *__P, __m128i __A)
+{
+  *(__m128i *) __P = __A;
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_loadu_pd (__m256d __W, __mmask8 __U, void const *__P)
+{
+  return (__m256d) __builtin_ia32_loadupd256_mask ((__v4df *) __P,
+						   (__v4df) __W,
+						   (__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_loadu_pd (__mmask8 __U, void const *__P)
+{
+  return (__m256d) __builtin_ia32_loadupd256_mask ((__v4df *) __P,
+						   (__v4df)
+						   _mm256_setzero_pd (),
+						   (__mmask8) __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_loadu_pd (__m128d __W, __mmask8 __U, void const *__P)
+{
+  return (__m128d) __builtin_ia32_loadupd128_mask ((__v2df *) __P,
+						   (__v2df) __W,
+						   (__mmask8) __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_loadu_pd (__mmask8 __U, void const *__P)
+{
+  return (__m128d) __builtin_ia32_loadupd128_mask ((__v2df *) __P,
+						   (__v2df)
+						   _mm_setzero_pd (),
+						   (__mmask8) __U);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_storeu_pd (void *__P, __mmask8 __U, __m256d __A)
+{
+  __builtin_ia32_storeupd256_mask ((__v4df *) __P,
+				   (__v4df) __A,
+				   (__mmask8) __U);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_storeu_pd (void *__P, __mmask8 __U, __m128d __A)
+{
+  __builtin_ia32_storeupd128_mask ((__v2df *) __P,
+				   (__v2df) __A,
+				   (__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_loadu_ps (__m256 __W, __mmask8 __U, void const *__P)
+{
+  return (__m256) __builtin_ia32_loadups256_mask ((__v8sf *) __P,
+						  (__v8sf) __W,
+						  (__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_loadu_ps (__mmask8 __U, void const *__P)
+{
+  return (__m256) __builtin_ia32_loadups256_mask ((__v8sf *) __P,
+						  (__v8sf)
+						  _mm256_setzero_ps (),
+						  (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_loadu_ps (__m128 __W, __mmask8 __U, void const *__P)
+{
+  return (__m128) __builtin_ia32_loadups128_mask ((__v4sf *) __P,
+						  (__v4sf) __W,
+						  (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_loadu_ps (__mmask8 __U, void const *__P)
+{
+  return (__m128) __builtin_ia32_loadups128_mask ((__v4sf *) __P,
+						  (__v4sf)
+						  _mm_setzero_ps (),
+						  (__mmask8) __U);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_storeu_ps (void *__P, __mmask8 __U, __m256 __A)
+{
+  __builtin_ia32_storeups256_mask ((__v8sf *) __P,
+				   (__v8sf) __A,
+				   (__mmask8) __U);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_storeu_ps (void *__P, __mmask8 __U, __m128 __A)
+{
+  __builtin_ia32_storeups128_mask ((__v4sf *) __P,
+				   (__v4sf) __A,
+				   (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_loadu_epi64 (__m256i __W, __mmask8 __U, void const *__P)
+{
+  return (__m256i) __builtin_ia32_loaddqudi256_mask ((__v4di *) __P,
+						     (__v4di) __W,
+						     (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_loadu_epi64 (__mmask8 __U, void const *__P)
+{
+  return (__m256i) __builtin_ia32_loaddqudi256_mask ((__v4di *) __P,
+						     (__v4di)
+						     _mm256_setzero_si256 (),
+						     (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_loadu_epi64 (__m128i __W, __mmask8 __U, void const *__P)
+{
+  return (__m128i) __builtin_ia32_loaddqudi128_mask ((__v2di *) __P,
+						     (__v2di) __W,
+						     (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_loadu_epi64 (__mmask8 __U, void const *__P)
+{
+  return (__m128i) __builtin_ia32_loaddqudi128_mask ((__v2di *) __P,
+						     (__v2di)
+						     _mm_setzero_di (),
+						     (__mmask8) __U);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_storeu_epi64 (void *__P, __mmask8 __U, __m256i __A)
+{
+  __builtin_ia32_storedqudi256_mask ((__v4di *) __P,
+				     (__v4di) __A,
+				     (__mmask8) __U);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_storeu_epi64 (void *__P, __mmask8 __U, __m128i __A)
+{
+  __builtin_ia32_storedqudi128_mask ((__v2di *) __P,
+				     (__v2di) __A,
+				     (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_loadu_epi32 (__m256i __W, __mmask8 __U, void const *__P)
+{
+  return (__m256i) __builtin_ia32_loaddqusi256_mask ((__v8si *) __P,
+						     (__v8si) __W,
+						     (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_loadu_epi32 (__mmask8 __U, void const *__P)
+{
+  return (__m256i) __builtin_ia32_loaddqusi256_mask ((__v8si *) __P,
+						     (__v8si)
+						     _mm256_setzero_si256 (),
+						     (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_loadu_epi32 (__m128i __W, __mmask8 __U, void const *__P)
+{
+  return (__m128i) __builtin_ia32_loaddqusi128_mask ((__v4si *) __P,
+						     (__v4si) __W,
+						     (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_loadu_epi32 (__mmask8 __U, void const *__P)
+{
+  return (__m128i) __builtin_ia32_loaddqusi128_mask ((__v4si *) __P,
+						     (__v4si)
+						     _mm_setzero_si128 (),
+						     (__mmask8) __U);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_storeu_epi32 (void *__P, __mmask8 __U, __m256i __A)
+{
+  __builtin_ia32_storedqusi256_mask ((__v8si *) __P,
+				     (__v8si) __A,
+				     (__mmask8) __U);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_storeu_epi32 (void *__P, __mmask8 __U, __m128i __A)
+{
+  __builtin_ia32_storedqusi128_mask ((__v4si *) __P,
+				     (__v4si) __A,
+				     (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_abs_epi32 (__m256i __W, __mmask8 __U, __m256i __A)
+{
+  return (__m256i) __builtin_ia32_pabsd256_mask ((__v8si) __A,
+						 (__v8si) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_abs_epi32 (__mmask8 __U, __m256i __A)
+{
+  return (__m256i) __builtin_ia32_pabsd256_mask ((__v8si) __A,
+						 (__v8si)
+						 _mm256_setzero_si256 (),
+						 (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_abs_epi32 (__m128i __W, __mmask8 __U, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_pabsd128_mask ((__v4si) __A,
+						 (__v4si) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_abs_epi32 (__mmask8 __U, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_pabsd128_mask ((__v4si) __A,
+						 (__v4si)
+						 _mm_setzero_si128 (),
+						 (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_abs_epi64 (__m256i __A)
+{
+  return (__m256i) __builtin_ia32_pabsq256_mask ((__v4di) __A,
+						 (__v4di)
+						 _mm256_setzero_si256 (),
+						 (__mmask8) -1);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_abs_epi64 (__m256i __W, __mmask8 __U, __m256i __A)
+{
+  return (__m256i) __builtin_ia32_pabsq256_mask ((__v4di) __A,
+						 (__v4di) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_abs_epi64 (__mmask8 __U, __m256i __A)
+{
+  return (__m256i) __builtin_ia32_pabsq256_mask ((__v4di) __A,
+						 (__v4di)
+						 _mm256_setzero_si256 (),
+						 (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_abs_epi64 (__m128i __A)
+{
+  return (__m128i) __builtin_ia32_pabsq128_mask ((__v2di) __A,
+						 (__v2di)
+						 _mm_setzero_di (),
+						 (__mmask8) -1);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_abs_epi64 (__m128i __W, __mmask8 __U, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_pabsq128_mask ((__v2di) __A,
+						 (__v2di) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_abs_epi64 (__mmask8 __U, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_pabsq128_mask ((__v2di) __A,
+						 (__v2di)
+						 _mm_setzero_di (),
+						 (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cvtpd_epu32 (__m256d __A)
+{
+  return (__m128i) __builtin_ia32_cvtpd2udq256_mask ((__v4df) __A,
+						     (__v4si)
+						     _mm_setzero_si128 (),
+						     (__mmask8) -1);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cvtpd_epu32 (__m128i __W, __mmask8 __U, __m256d __A)
+{
+  return (__m128i) __builtin_ia32_cvtpd2udq256_mask ((__v4df) __A,
+						     (__v4si) __W,
+						     (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_cvtpd_epu32 (__mmask8 __U, __m256d __A)
+{
+  return (__m128i) __builtin_ia32_cvtpd2udq256_mask ((__v4df) __A,
+						     (__v4si)
+						     _mm_setzero_si128 (),
+						     (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtpd_epu32 (__m128d __A)
+{
+  return (__m128i) __builtin_ia32_cvtpd2udq128_mask ((__v2df) __A,
+						     (__v4si)
+						     _mm_setzero_si128 (),
+						     (__mmask8) -1);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cvtpd_epu32 (__m128i __W, __mmask8 __U, __m128d __A)
+{
+  return (__m128i) __builtin_ia32_cvtpd2udq128_mask ((__v2df) __A,
+						     (__v4si) __W,
+						     (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_cvtpd_epu32 (__mmask8 __U, __m128d __A)
+{
+  return (__m128i) __builtin_ia32_cvtpd2udq128_mask ((__v2df) __A,
+						     (__v4si)
+						     _mm_setzero_si128 (),
+						     (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cvttps_epi32 (__m256i __W, __mmask8 __U, __m256 __A)
+{
+  return (__m256i) __builtin_ia32_cvttps2dq256_mask ((__v8sf) __A,
+						     (__v8si) __W,
+						     (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_cvttps_epi32 (__mmask8 __U, __m256 __A)
+{
+  return (__m256i) __builtin_ia32_cvttps2dq256_mask ((__v8sf) __A,
+						     (__v8si)
+						     _mm256_setzero_si256 (),
+						     (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cvttps_epi32 (__m128i __W, __mmask8 __U, __m128 __A)
+{
+  return (__m128i) __builtin_ia32_cvttps2dq128_mask ((__v4sf) __A,
+						     (__v4si) __W,
+						     (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_cvttps_epi32 (__mmask8 __U, __m128 __A)
+{
+  return (__m128i) __builtin_ia32_cvttps2dq128_mask ((__v4sf) __A,
+						     (__v4si)
+						     _mm_setzero_si128 (),
+						     (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cvttps_epu32 (__m256 __A)
+{
+  return (__m256i) __builtin_ia32_cvttps2udq256_mask ((__v8sf) __A,
+						      (__v8si)
+						      _mm256_setzero_si256 (),
+						      (__mmask8) -1);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cvttps_epu32 (__m256i __W, __mmask8 __U, __m256 __A)
+{
+  return (__m256i) __builtin_ia32_cvttps2udq256_mask ((__v8sf) __A,
+						      (__v8si) __W,
+						      (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_cvttps_epu32 (__mmask8 __U, __m256 __A)
+{
+  return (__m256i) __builtin_ia32_cvttps2udq256_mask ((__v8sf) __A,
+						      (__v8si)
+						      _mm256_setzero_si256 (),
+						      (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvttps_epu32 (__m128 __A)
+{
+  return (__m128i) __builtin_ia32_cvttps2udq128_mask ((__v4sf) __A,
+						      (__v4si)
+						      _mm_setzero_si128 (),
+						      (__mmask8) -1);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cvttps_epu32 (__m128i __W, __mmask8 __U, __m128 __A)
+{
+  return (__m128i) __builtin_ia32_cvttps2udq128_mask ((__v4sf) __A,
+						      (__v4si) __W,
+						      (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_cvttps_epu32 (__mmask8 __U, __m128 __A)
+{
+  return (__m128i) __builtin_ia32_cvttps2udq128_mask ((__v4sf) __A,
+						      (__v4si)
+						      _mm_setzero_si128 (),
+						      (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cvttpd_epi32 (__m128i __W, __mmask8 __U, __m256d __A)
+{
+  return (__m128i) __builtin_ia32_cvttpd2dq256_mask ((__v4df) __A,
+						     (__v4si) __W,
+						     (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_cvttpd_epi32 (__mmask8 __U, __m256d __A)
+{
+  return (__m128i) __builtin_ia32_cvttpd2dq256_mask ((__v4df) __A,
+						     (__v4si)
+						     _mm_setzero_si128 (),
+						     (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cvttpd_epi32 (__m128i __W, __mmask8 __U, __m128d __A)
+{
+  return (__m128i) __builtin_ia32_cvttpd2dq128_mask ((__v2df) __A,
+						     (__v4si) __W,
+						     (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_cvttpd_epi32 (__mmask8 __U, __m128d __A)
+{
+  return (__m128i) __builtin_ia32_cvttpd2dq128_mask ((__v2df) __A,
+						     (__v4si)
+						     _mm_setzero_si128 (),
+						     (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cvttpd_epu32 (__m256d __A)
+{
+  return (__m128i) __builtin_ia32_cvttpd2udq256_mask ((__v4df) __A,
+						      (__v4si)
+						      _mm_setzero_si128 (),
+						      (__mmask8) -1);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cvttpd_epu32 (__m128i __W, __mmask8 __U, __m256d __A)
+{
+  return (__m128i) __builtin_ia32_cvttpd2udq256_mask ((__v4df) __A,
+						      (__v4si) __W,
+						      (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_cvttpd_epu32 (__mmask8 __U, __m256d __A)
+{
+  return (__m128i) __builtin_ia32_cvttpd2udq256_mask ((__v4df) __A,
+						      (__v4si)
+						      _mm_setzero_si128 (),
+						      (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvttpd_epu32 (__m128d __A)
+{
+  return (__m128i) __builtin_ia32_cvttpd2udq128_mask ((__v2df) __A,
+						      (__v4si)
+						      _mm_setzero_si128 (),
+						      (__mmask8) -1);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cvttpd_epu32 (__m128i __W, __mmask8 __U, __m128d __A)
+{
+  return (__m128i) __builtin_ia32_cvttpd2udq128_mask ((__v2df) __A,
+						      (__v4si) __W,
+						      (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_cvttpd_epu32 (__mmask8 __U, __m128d __A)
+{
+  return (__m128i) __builtin_ia32_cvttpd2udq128_mask ((__v2df) __A,
+						      (__v4si)
+						      _mm_setzero_si128 (),
+						      (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cvtpd_epi32 (__m128i __W, __mmask8 __U, __m256d __A)
+{
+  return (__m128i) __builtin_ia32_cvtpd2dq256_mask ((__v4df) __A,
+						    (__v4si) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_cvtpd_epi32 (__mmask8 __U, __m256d __A)
+{
+  return (__m128i) __builtin_ia32_cvtpd2dq256_mask ((__v4df) __A,
+						    (__v4si)
+						    _mm_setzero_si128 (),
+						    (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cvtpd_epi32 (__m128i __W, __mmask8 __U, __m128d __A)
+{
+  return (__m128i) __builtin_ia32_cvtpd2dq128_mask ((__v2df) __A,
+						    (__v4si) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_cvtpd_epi32 (__mmask8 __U, __m128d __A)
+{
+  return (__m128i) __builtin_ia32_cvtpd2dq128_mask ((__v2df) __A,
+						    (__v4si)
+						    _mm_setzero_si128 (),
+						    (__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cvtepi32_pd (__m256d __W, __mmask8 __U, __m128i __A)
+{
+  return (__m256d) __builtin_ia32_cvtdq2pd256_mask ((__v4si) __A,
+						    (__v4df) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_cvtepi32_pd (__mmask8 __U, __m128i __A)
+{
+  return (__m256d) __builtin_ia32_cvtdq2pd256_mask ((__v4si) __A,
+						    (__v4df)
+						    _mm256_setzero_pd (),
+						    (__mmask8) __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cvtepi32_pd (__m128d __W, __mmask8 __U, __m128i __A)
+{
+  return (__m128d) __builtin_ia32_cvtdq2pd128_mask ((__v4si) __A,
+						    (__v2df) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_cvtepi32_pd (__mmask8 __U, __m128i __A)
+{
+  return (__m128d) __builtin_ia32_cvtdq2pd128_mask ((__v4si) __A,
+						    (__v2df)
+						    _mm_setzero_pd (),
+						    (__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cvtepu32_pd (__m128i __A)
+{
+  return (__m256d) __builtin_ia32_cvtudq2pd256_mask ((__v4si) __A,
+						     (__v4df)
+						     _mm256_setzero_pd (),
+						     (__mmask8) -1);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cvtepu32_pd (__m256d __W, __mmask8 __U, __m128i __A)
+{
+  return (__m256d) __builtin_ia32_cvtudq2pd256_mask ((__v4si) __A,
+						     (__v4df) __W,
+						     (__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_cvtepu32_pd (__mmask8 __U, __m128i __A)
+{
+  return (__m256d) __builtin_ia32_cvtudq2pd256_mask ((__v4si) __A,
+						     (__v4df)
+						     _mm256_setzero_pd (),
+						     (__mmask8) __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtepu32_pd (__m128i __A)
+{
+  return (__m128d) __builtin_ia32_cvtudq2pd128_mask ((__v4si) __A,
+						     (__v2df)
+						     _mm_setzero_pd (),
+						     (__mmask8) -1);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cvtepu32_pd (__m128d __W, __mmask8 __U, __m128i __A)
+{
+  return (__m128d) __builtin_ia32_cvtudq2pd128_mask ((__v4si) __A,
+						     (__v2df) __W,
+						     (__mmask8) __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_cvtepu32_pd (__mmask8 __U, __m128i __A)
+{
+  return (__m128d) __builtin_ia32_cvtudq2pd128_mask ((__v4si) __A,
+						     (__v2df)
+						     _mm_setzero_pd (),
+						     (__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cvtepi32_ps (__m256 __W, __mmask8 __U, __m256i __A)
+{
+  return (__m256) __builtin_ia32_cvtdq2ps256_mask ((__v8si) __A,
+						   (__v8sf) __W,
+						   (__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_cvtepi32_ps (__mmask16 __U, __m256i __A)
+{
+  return (__m256) __builtin_ia32_cvtdq2ps256_mask ((__v8si) __A,
+						   (__v8sf)
+						   _mm256_setzero_ps (),
+						   (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cvtepi32_ps (__m128 __W, __mmask8 __U, __m128i __A)
+{
+  return (__m128) __builtin_ia32_cvtdq2ps128_mask ((__v4si) __A,
+						   (__v4sf) __W,
+						   (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_cvtepi32_ps (__mmask16 __U, __m128i __A)
+{
+  return (__m128) __builtin_ia32_cvtdq2ps128_mask ((__v4si) __A,
+						   (__v4sf)
+						   _mm_setzero_ps (),
+						   (__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cvtepu32_ps (__m256i __A)
+{
+  return (__m256) __builtin_ia32_cvtudq2ps256_mask ((__v8si) __A,
+						    (__v8sf)
+						    _mm256_setzero_ps (),
+						    (__mmask8) -1);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cvtepu32_ps (__m256 __W, __mmask8 __U, __m256i __A)
+{
+  return (__m256) __builtin_ia32_cvtudq2ps256_mask ((__v8si) __A,
+						    (__v8sf) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_cvtepu32_ps (__mmask8 __U, __m256i __A)
+{
+  return (__m256) __builtin_ia32_cvtudq2ps256_mask ((__v8si) __A,
+						    (__v8sf)
+						    _mm256_setzero_ps (),
+						    (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtepu32_ps (__m128i __A)
+{
+  return (__m128) __builtin_ia32_cvtudq2ps128_mask ((__v4si) __A,
+						    (__v4sf)
+						    _mm_setzero_ps (),
+						    (__mmask8) -1);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cvtepu32_ps (__m128 __W, __mmask8 __U, __m128i __A)
+{
+  return (__m128) __builtin_ia32_cvtudq2ps128_mask ((__v4si) __A,
+						    (__v4sf) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_cvtepu32_ps (__mmask8 __U, __m128i __A)
+{
+  return (__m128) __builtin_ia32_cvtudq2ps128_mask ((__v4si) __A,
+						    (__v4sf)
+						    _mm_setzero_ps (),
+						    (__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cvtps_pd (__m256d __W, __mmask8 __U, __m128 __A)
+{
+  return (__m256d) __builtin_ia32_cvtps2pd256_mask ((__v4sf) __A,
+						    (__v4df) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_cvtps_pd (__mmask8 __U, __m128 __A)
+{
+  return (__m256d) __builtin_ia32_cvtps2pd256_mask ((__v4sf) __A,
+						    (__v4df)
+						    _mm256_setzero_pd (),
+						    (__mmask8) __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cvtps_pd (__m128d __W, __mmask8 __U, __m128 __A)
+{
+  return (__m128d) __builtin_ia32_cvtps2pd128_mask ((__v4sf) __A,
+						    (__v2df) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_cvtps_pd (__mmask8 __U, __m128 __A)
+{
+  return (__m128d) __builtin_ia32_cvtps2pd128_mask ((__v4sf) __A,
+						    (__v2df)
+						    _mm_setzero_pd (),
+						    (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtepi32_epi8 (__m128i __A)
+{
+  return (__m128i) __builtin_ia32_pmovdb128_mask ((__v4si) __A,
+						  (__v16qi)_mm_undefined_si128(),
+						  (__mmask8) -1);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cvtepi32_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
+{
+  __builtin_ia32_pmovdb128mem_mask ((__v16qi *) __P, (__v4si) __A, __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cvtepi32_epi8 (__m128i __O, __mmask8 __M, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_pmovdb128_mask ((__v4si) __A,
+						  (__v16qi) __O, __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_cvtepi32_epi8 (__mmask8 __M, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_pmovdb128_mask ((__v4si) __A,
+						  (__v16qi)
+						  _mm_setzero_si128 (),
+						  __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cvtepi32_epi8 (__m256i __A)
+{
+  return (__m128i) __builtin_ia32_pmovdb256_mask ((__v8si) __A,
+						  (__v16qi)_mm_undefined_si128(),
+						  (__mmask8) -1);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cvtepi32_epi8 (__m128i __O, __mmask8 __M, __m256i __A)
+{
+  return (__m128i) __builtin_ia32_pmovdb256_mask ((__v8si) __A,
+						  (__v16qi) __O, __M);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cvtepi32_storeu_epi8 (void * __P, __mmask8 __M, __m256i __A)
+{
+  __builtin_ia32_pmovdb256mem_mask ((__v16qi *) __P, (__v8si) __A, __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_cvtepi32_epi8 (__mmask8 __M, __m256i __A)
+{
+  return (__m128i) __builtin_ia32_pmovdb256_mask ((__v8si) __A,
+						  (__v16qi)
+						  _mm_setzero_si128 (),
+						  __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtsepi32_epi8 (__m128i __A)
+{
+  return (__m128i) __builtin_ia32_pmovsdb128_mask ((__v4si) __A,
+						   (__v16qi)_mm_undefined_si128(),
+						   (__mmask8) -1);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cvtsepi32_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
+{
+  __builtin_ia32_pmovsdb128mem_mask ((__v16qi *) __P, (__v4si) __A, __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cvtsepi32_epi8 (__m128i __O, __mmask8 __M, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_pmovsdb128_mask ((__v4si) __A,
+						   (__v16qi) __O, __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_cvtsepi32_epi8 (__mmask8 __M, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_pmovsdb128_mask ((__v4si) __A,
+						   (__v16qi)
+						   _mm_setzero_si128 (),
+						   __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cvtsepi32_epi8 (__m256i __A)
+{
+  return (__m128i) __builtin_ia32_pmovsdb256_mask ((__v8si) __A,
+						   (__v16qi)_mm_undefined_si128(),
+						   (__mmask8) -1);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cvtsepi32_storeu_epi8 (void * __P, __mmask8 __M, __m256i __A)
+{
+  __builtin_ia32_pmovsdb256mem_mask ((__v16qi *) __P, (__v8si) __A, __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cvtsepi32_epi8 (__m128i __O, __mmask8 __M, __m256i __A)
+{
+  return (__m128i) __builtin_ia32_pmovsdb256_mask ((__v8si) __A,
+						   (__v16qi) __O, __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_cvtsepi32_epi8 (__mmask8 __M, __m256i __A)
+{
+  return (__m128i) __builtin_ia32_pmovsdb256_mask ((__v8si) __A,
+						   (__v16qi)
+						   _mm_setzero_si128 (),
+						   __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtusepi32_epi8 (__m128i __A)
+{
+  return (__m128i) __builtin_ia32_pmovusdb128_mask ((__v4si) __A,
+						    (__v16qi)_mm_undefined_si128(),
+						    (__mmask8) -1);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cvtusepi32_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
+{
+  __builtin_ia32_pmovusdb128mem_mask ((__v16qi *) __P, (__v4si) __A, __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cvtusepi32_epi8 (__m128i __O, __mmask8 __M, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_pmovusdb128_mask ((__v4si) __A,
+						    (__v16qi) __O,
+						    __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_cvtusepi32_epi8 (__mmask8 __M, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_pmovusdb128_mask ((__v4si) __A,
+						    (__v16qi)
+						    _mm_setzero_si128 (),
+						    __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cvtusepi32_epi8 (__m256i __A)
+{
+  return (__m128i) __builtin_ia32_pmovusdb256_mask ((__v8si) __A,
+						    (__v16qi)_mm_undefined_si128(),
+						    (__mmask8) -1);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cvtusepi32_storeu_epi8 (void * __P, __mmask8 __M, __m256i __A)
+{
+  __builtin_ia32_pmovusdb256mem_mask ((__v16qi*) __P, (__v8si) __A, __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cvtusepi32_epi8 (__m128i __O, __mmask8 __M, __m256i __A)
+{
+  return (__m128i) __builtin_ia32_pmovusdb256_mask ((__v8si) __A,
+						    (__v16qi) __O,
+						    __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_cvtusepi32_epi8 (__mmask8 __M, __m256i __A)
+{
+  return (__m128i) __builtin_ia32_pmovusdb256_mask ((__v8si) __A,
+						    (__v16qi)
+						    _mm_setzero_si128 (),
+						    __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtepi32_epi16 (__m128i __A)
+{
+  return (__m128i) __builtin_ia32_pmovdw128_mask ((__v4si) __A,
+						  (__v8hi) _mm_setzero_si128 (),
+						  (__mmask8) -1);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cvtepi32_storeu_epi16 (void * __P, __mmask8 __M, __m128i __A)
+{
+  __builtin_ia32_pmovdw128mem_mask ((__v8hi *) __P, (__v4si) __A, __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cvtepi32_epi16 (__m128i __O, __mmask8 __M, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_pmovdw128_mask ((__v4si) __A,
+						  (__v8hi) __O, __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_cvtepi32_epi16 (__mmask8 __M, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_pmovdw128_mask ((__v4si) __A,
+						  (__v8hi)
+						  _mm_setzero_si128 (),
+						  __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cvtepi32_epi16 (__m256i __A)
+{
+  return (__m128i) __builtin_ia32_pmovdw256_mask ((__v8si) __A,
+						  (__v8hi)_mm_setzero_si128 (),
+						  (__mmask8) -1);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cvtepi32_storeu_epi16 (void *  __P, __mmask8 __M, __m256i __A)
+{
+  __builtin_ia32_pmovdw256mem_mask ((__v8hi *) __P, (__v8si) __A, __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cvtepi32_epi16 (__m128i __O, __mmask8 __M, __m256i __A)
+{
+  return (__m128i) __builtin_ia32_pmovdw256_mask ((__v8si) __A,
+						  (__v8hi) __O, __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_cvtepi32_epi16 (__mmask8 __M, __m256i __A)
+{
+  return (__m128i) __builtin_ia32_pmovdw256_mask ((__v8si) __A,
+						  (__v8hi)
+						  _mm_setzero_si128 (),
+						  __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtsepi32_epi16 (__m128i __A)
+{
+  return (__m128i) __builtin_ia32_pmovsdw128_mask ((__v4si) __A,
+						   (__v8hi)_mm_setzero_si128 (),
+						   (__mmask8) -1);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cvtsepi32_storeu_epi16 (void * __P, __mmask8 __M, __m128i __A)
+{
+  __builtin_ia32_pmovsdw128mem_mask ((__v8hi *) __P, (__v4si) __A, __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cvtsepi32_epi16 (__m128i __O, __mmask8 __M, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_pmovsdw128_mask ((__v4si) __A,
+						   (__v8hi)__O,
+						   __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_cvtsepi32_epi16 (__mmask8 __M, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_pmovsdw128_mask ((__v4si) __A,
+						   (__v8hi)
+						   _mm_setzero_si128 (),
+						   __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cvtsepi32_epi16 (__m256i __A)
+{
+  return (__m128i) __builtin_ia32_pmovsdw256_mask ((__v8si) __A,
+						   (__v8hi)_mm_undefined_si128(),
+						   (__mmask8) -1);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cvtsepi32_storeu_epi16 (void * __P, __mmask8 __M, __m256i __A)
+{
+  __builtin_ia32_pmovsdw256mem_mask ((__v8hi *) __P, (__v8si) __A, __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cvtsepi32_epi16 (__m128i __O, __mmask8 __M, __m256i __A)
+{
+  return (__m128i) __builtin_ia32_pmovsdw256_mask ((__v8si) __A,
+						   (__v8hi) __O, __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_cvtsepi32_epi16 (__mmask8 __M, __m256i __A)
+{
+  return (__m128i) __builtin_ia32_pmovsdw256_mask ((__v8si) __A,
+						   (__v8hi)
+						   _mm_setzero_si128 (),
+						   __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtusepi32_epi16 (__m128i __A)
+{
+  return (__m128i) __builtin_ia32_pmovusdw128_mask ((__v4si) __A,
+						    (__v8hi)_mm_undefined_si128(),
+						    (__mmask8) -1);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cvtusepi32_storeu_epi16 (void * __P, __mmask8 __M, __m128i __A)
+{
+  __builtin_ia32_pmovusdw128mem_mask ((__v8hi *) __P, (__v4si) __A, __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cvtusepi32_epi16 (__m128i __O, __mmask8 __M, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_pmovusdw128_mask ((__v4si) __A,
+						    (__v8hi) __O, __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_cvtusepi32_epi16 (__mmask8 __M, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_pmovusdw128_mask ((__v4si) __A,
+						    (__v8hi)
+						    _mm_setzero_si128 (),
+						    __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cvtusepi32_epi16 (__m256i __A)
+{
+  return (__m128i) __builtin_ia32_pmovusdw256_mask ((__v8si) __A,
+						    (__v8hi)_mm_undefined_si128(),
+						    (__mmask8) -1);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cvtusepi32_storeu_epi16 (void * __P, __mmask8 __M, __m256i __A)
+{
+  __builtin_ia32_pmovusdw256mem_mask ((__v8hi *) __P, (__v8si) __A, __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cvtusepi32_epi16 (__m128i __O, __mmask8 __M, __m256i __A)
+{
+  return (__m128i) __builtin_ia32_pmovusdw256_mask ((__v8si) __A,
+						    (__v8hi) __O, __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_cvtusepi32_epi16 (__mmask8 __M, __m256i __A)
+{
+  return (__m128i) __builtin_ia32_pmovusdw256_mask ((__v8si) __A,
+						    (__v8hi)
+						    _mm_setzero_si128 (),
+						    __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtepi64_epi8 (__m128i __A)
+{
+  return (__m128i) __builtin_ia32_pmovqb128_mask ((__v2di) __A,
+						  (__v16qi)_mm_undefined_si128(),
+						  (__mmask8) -1);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cvtepi64_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
+{
+  __builtin_ia32_pmovqb128mem_mask ((__v16qi *) __P, (__v2di) __A, __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cvtepi64_epi8 (__m128i __O, __mmask8 __M, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_pmovqb128_mask ((__v2di) __A,
+						  (__v16qi) __O, __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_cvtepi64_epi8 (__mmask8 __M, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_pmovqb128_mask ((__v2di) __A,
+						  (__v16qi)
+						  _mm_setzero_si128 (),
+						  __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cvtepi64_epi8 (__m256i __A)
+{
+  return (__m128i) __builtin_ia32_pmovqb256_mask ((__v4di) __A,
+						  (__v16qi)_mm_undefined_si128(),
+						  (__mmask8) -1);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cvtepi64_storeu_epi8 (void * __P, __mmask8 __M, __m256i __A)
+{
+  __builtin_ia32_pmovqb256mem_mask ((__v16qi *) __P, (__v4di) __A, __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cvtepi64_epi8 (__m128i __O, __mmask8 __M, __m256i __A)
+{
+  return (__m128i) __builtin_ia32_pmovqb256_mask ((__v4di) __A,
+						  (__v16qi) __O, __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_cvtepi64_epi8 (__mmask8 __M, __m256i __A)
+{
+  return (__m128i) __builtin_ia32_pmovqb256_mask ((__v4di) __A,
+						  (__v16qi)
+						  _mm_setzero_si128 (),
+						  __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtsepi64_epi8 (__m128i __A)
+{
+  return (__m128i) __builtin_ia32_pmovsqb128_mask ((__v2di) __A,
+						   (__v16qi)_mm_undefined_si128(),
+						   (__mmask8) -1);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cvtsepi64_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
+{
+  __builtin_ia32_pmovsqb128mem_mask ((__v16qi *) __P, (__v2di) __A, __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cvtsepi64_epi8 (__m128i __O, __mmask8 __M, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_pmovsqb128_mask ((__v2di) __A,
+						   (__v16qi) __O, __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_cvtsepi64_epi8 (__mmask8 __M, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_pmovsqb128_mask ((__v2di) __A,
+						   (__v16qi)
+						   _mm_setzero_si128 (),
+						   __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cvtsepi64_epi8 (__m256i __A)
+{
+  return (__m128i) __builtin_ia32_pmovsqb256_mask ((__v4di) __A,
+						   (__v16qi)_mm_undefined_si128(),
+						   (__mmask8) -1);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cvtsepi64_storeu_epi8 (void * __P, __mmask8 __M, __m256i __A)
+{
+  __builtin_ia32_pmovsqb256mem_mask ((__v16qi *) __P, (__v4di) __A, __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cvtsepi64_epi8 (__m128i __O, __mmask8 __M, __m256i __A)
+{
+  return (__m128i) __builtin_ia32_pmovsqb256_mask ((__v4di) __A,
+						   (__v16qi) __O, __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_cvtsepi64_epi8 (__mmask8 __M, __m256i __A)
+{
+  return (__m128i) __builtin_ia32_pmovsqb256_mask ((__v4di) __A,
+						   (__v16qi)
+						   _mm_setzero_si128 (),
+						   __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtusepi64_epi8 (__m128i __A)
+{
+  return (__m128i) __builtin_ia32_pmovusqb128_mask ((__v2di) __A,
+						    (__v16qi)_mm_undefined_si128(),
+						    (__mmask8) -1);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cvtusepi64_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
+{
+  __builtin_ia32_pmovusqb128mem_mask ((__v16qi *) __P, (__v2di) __A, __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cvtusepi64_epi8 (__m128i __O, __mmask8 __M, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_pmovusqb128_mask ((__v2di) __A,
+						    (__v16qi) __O,
+						    __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_cvtusepi64_epi8 (__mmask8 __M, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_pmovusqb128_mask ((__v2di) __A,
+						    (__v16qi)
+						    _mm_setzero_si128 (),
+						    __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cvtusepi64_epi8 (__m256i __A)
+{
+  return (__m128i) __builtin_ia32_pmovusqb256_mask ((__v4di) __A,
+						    (__v16qi)_mm_undefined_si128(),
+						    (__mmask8) -1);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cvtusepi64_storeu_epi8 (void * __P, __mmask8 __M, __m256i __A)
+{
+  __builtin_ia32_pmovusqb256mem_mask ((__v16qi *) __P, (__v4di) __A, __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cvtusepi64_epi8 (__m128i __O, __mmask8 __M, __m256i __A)
+{
+  return (__m128i) __builtin_ia32_pmovusqb256_mask ((__v4di) __A,
+						    (__v16qi) __O,
+						    __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_cvtusepi64_epi8 (__mmask8 __M, __m256i __A)
+{
+  return (__m128i) __builtin_ia32_pmovusqb256_mask ((__v4di) __A,
+						    (__v16qi)
+						    _mm_setzero_si128 (),
+						    __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtepi64_epi16 (__m128i __A)
+{
+  return (__m128i) __builtin_ia32_pmovqw128_mask ((__v2di) __A,
+						  (__v8hi)_mm_undefined_si128(),
+						  (__mmask8) -1);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cvtepi64_storeu_epi16 (void * __P, __mmask8 __M, __m128i __A)
+{
+  __builtin_ia32_pmovqw128mem_mask ((__v8hi *) __P, (__v2di) __A, __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cvtepi64_epi16 (__m128i __O, __mmask8 __M, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_pmovqw128_mask ((__v2di) __A,
+						  (__v8hi)__O,
+						  __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_cvtepi64_epi16 (__mmask8 __M, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_pmovqw128_mask ((__v2di) __A,
+						  (__v8hi)
+						  _mm_setzero_si128 (),
+						  __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cvtepi64_epi16 (__m256i __A)
+{
+  return (__m128i) __builtin_ia32_pmovqw256_mask ((__v4di) __A,
+						  (__v8hi)_mm_undefined_si128(),
+						  (__mmask8) -1);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cvtepi64_storeu_epi16 (void * __P, __mmask8 __M, __m256i __A)
+{
+  __builtin_ia32_pmovqw256mem_mask ((__v8hi *) __P, (__v4di) __A, __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cvtepi64_epi16 (__m128i __O, __mmask8 __M, __m256i __A)
+{
+  return (__m128i) __builtin_ia32_pmovqw256_mask ((__v4di) __A,
+						  (__v8hi) __O, __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_cvtepi64_epi16 (__mmask8 __M, __m256i __A)
+{
+  return (__m128i) __builtin_ia32_pmovqw256_mask ((__v4di) __A,
+						  (__v8hi)
+						  _mm_setzero_si128 (),
+						  __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtsepi64_epi16 (__m128i __A)
+{
+  return (__m128i) __builtin_ia32_pmovsqw128_mask ((__v2di) __A,
+						   (__v8hi)_mm_undefined_si128(),
+						   (__mmask8) -1);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cvtsepi64_storeu_epi16 (void * __P, __mmask8 __M, __m128i __A)
+{
+  __builtin_ia32_pmovsqw128mem_mask ((__v8hi *) __P, (__v2di) __A, __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cvtsepi64_epi16 (__m128i __O, __mmask8 __M, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_pmovsqw128_mask ((__v2di) __A,
+						   (__v8hi) __O, __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_cvtsepi64_epi16 (__mmask8 __M, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_pmovsqw128_mask ((__v2di) __A,
+						   (__v8hi)
+						   _mm_setzero_si128 (),
+						   __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cvtsepi64_epi16 (__m256i __A)
+{
+  return (__m128i) __builtin_ia32_pmovsqw256_mask ((__v4di) __A,
+						   (__v8hi)_mm_undefined_si128(),
+						   (__mmask8) -1);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cvtsepi64_storeu_epi16 (void * __P, __mmask8 __M, __m256i __A)
+{
+  __builtin_ia32_pmovsqw256mem_mask ((__v8hi *) __P, (__v4di) __A, __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cvtsepi64_epi16 (__m128i __O, __mmask8 __M, __m256i __A)
+{
+  return (__m128i) __builtin_ia32_pmovsqw256_mask ((__v4di) __A,
+						   (__v8hi) __O, __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_cvtsepi64_epi16 (__mmask8 __M, __m256i __A)
+{
+  return (__m128i) __builtin_ia32_pmovsqw256_mask ((__v4di) __A,
+						   (__v8hi)
+						   _mm_setzero_si128 (),
+						   __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtusepi64_epi16 (__m128i __A)
+{
+  return (__m128i) __builtin_ia32_pmovusqw128_mask ((__v2di) __A,
+						    (__v8hi)_mm_undefined_si128(),
+						    (__mmask8) -1);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cvtusepi64_storeu_epi16 (void * __P, __mmask8 __M, __m128i __A)
+{
+  __builtin_ia32_pmovusqw128mem_mask ((__v8hi *) __P, (__v2di) __A, __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cvtusepi64_epi16 (__m128i __O, __mmask8 __M, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_pmovusqw128_mask ((__v2di) __A,
+						    (__v8hi) __O, __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_cvtusepi64_epi16 (__mmask8 __M, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_pmovusqw128_mask ((__v2di) __A,
+						    (__v8hi)
+						    _mm_setzero_si128 (),
+						    __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cvtusepi64_epi16 (__m256i __A)
+{
+  return (__m128i) __builtin_ia32_pmovusqw256_mask ((__v4di) __A,
+						    (__v8hi)_mm_undefined_si128(),
+						    (__mmask8) -1);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cvtusepi64_storeu_epi16 (void * __P, __mmask8 __M, __m256i __A)
+{
+  __builtin_ia32_pmovusqw256mem_mask ((__v8hi *) __P, (__v4di) __A, __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cvtusepi64_epi16 (__m128i __O, __mmask8 __M, __m256i __A)
+{
+  return (__m128i) __builtin_ia32_pmovusqw256_mask ((__v4di) __A,
+						    (__v8hi) __O, __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_cvtusepi64_epi16 (__mmask8 __M, __m256i __A)
+{
+  return (__m128i) __builtin_ia32_pmovusqw256_mask ((__v4di) __A,
+						    (__v8hi)
+						    _mm_setzero_si128 (),
+						    __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtepi64_epi32 (__m128i __A)
+{
+  return (__m128i) __builtin_ia32_pmovqd128_mask ((__v2di) __A,
+						  (__v4si)_mm_undefined_si128(),
+						  (__mmask8) -1);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cvtepi64_storeu_epi32 (void * __P, __mmask8 __M, __m128i __A)
+{
+  __builtin_ia32_pmovqd128mem_mask ((__v4si *) __P, (__v2di) __A, __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cvtepi64_epi32 (__m128i __O, __mmask8 __M, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_pmovqd128_mask ((__v2di) __A,
+						  (__v4si) __O, __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_cvtepi64_epi32 (__mmask8 __M, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_pmovqd128_mask ((__v2di) __A,
+						  (__v4si)
+						  _mm_setzero_si128 (),
+						  __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cvtepi64_epi32 (__m256i __A)
+{
+  return (__m128i) __builtin_ia32_pmovqd256_mask ((__v4di) __A,
+						  (__v4si)_mm_undefined_si128(),
+						  (__mmask8) -1);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cvtepi64_storeu_epi32 (void * __P, __mmask8 __M, __m256i __A)
+{
+  __builtin_ia32_pmovqd256mem_mask ((__v4si *) __P, (__v4di) __A, __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cvtepi64_epi32 (__m128i __O, __mmask8 __M, __m256i __A)
+{
+  return (__m128i) __builtin_ia32_pmovqd256_mask ((__v4di) __A,
+						  (__v4si) __O, __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_cvtepi64_epi32 (__mmask8 __M, __m256i __A)
+{
+  return (__m128i) __builtin_ia32_pmovqd256_mask ((__v4di) __A,
+						  (__v4si)
+						  _mm_setzero_si128 (),
+						  __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtsepi64_epi32 (__m128i __A)
+{
+  return (__m128i) __builtin_ia32_pmovsqd128_mask ((__v2di) __A,
+						   (__v4si)_mm_undefined_si128(),
+						   (__mmask8) -1);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cvtsepi64_storeu_epi32 (void * __P, __mmask8 __M, __m128i __A)
+{
+  __builtin_ia32_pmovsqd128mem_mask ((__v4si *) __P, (__v2di) __A, __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cvtsepi64_epi32 (__m128i __O, __mmask8 __M, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_pmovsqd128_mask ((__v2di) __A,
+						   (__v4si) __O, __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_cvtsepi64_epi32 (__mmask8 __M, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_pmovsqd128_mask ((__v2di) __A,
+						   (__v4si)
+						   _mm_setzero_si128 (),
+						   __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cvtsepi64_epi32 (__m256i __A)
+{
+  return (__m128i) __builtin_ia32_pmovsqd256_mask ((__v4di) __A,
+						   (__v4si)_mm_undefined_si128(),
+						   (__mmask8) -1);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cvtsepi64_storeu_epi32 (void * __P, __mmask8 __M, __m256i __A)
+{
+  __builtin_ia32_pmovsqd256mem_mask ((__v4si *) __P, (__v4di) __A, __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cvtsepi64_epi32 (__m128i __O, __mmask8 __M, __m256i __A)
+{
+  return (__m128i) __builtin_ia32_pmovsqd256_mask ((__v4di) __A,
+						   (__v4si)__O,
+						   __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_cvtsepi64_epi32 (__mmask8 __M, __m256i __A)
+{
+  return (__m128i) __builtin_ia32_pmovsqd256_mask ((__v4di) __A,
+						   (__v4si)
+						   _mm_setzero_si128 (),
+						   __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtusepi64_epi32 (__m128i __A)
+{
+  return (__m128i) __builtin_ia32_pmovusqd128_mask ((__v2di) __A,
+						    (__v4si)_mm_undefined_si128(),
+						    (__mmask8) -1);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cvtusepi64_storeu_epi32 (void * __P, __mmask8 __M, __m128i __A)
+{
+  __builtin_ia32_pmovusqd128mem_mask ((__v4si *) __P, (__v2di) __A, __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cvtusepi64_epi32 (__m128i __O, __mmask8 __M, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_pmovusqd128_mask ((__v2di) __A,
+						    (__v4si) __O, __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_cvtusepi64_epi32 (__mmask8 __M, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_pmovusqd128_mask ((__v2di) __A,
+						    (__v4si)
+						    _mm_setzero_si128 (),
+						    __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cvtusepi64_epi32 (__m256i __A)
+{
+  return (__m128i) __builtin_ia32_pmovusqd256_mask ((__v4di) __A,
+						    (__v4si)_mm_undefined_si128(),
+						    (__mmask8) -1);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cvtusepi64_storeu_epi32 (void * __P, __mmask8 __M, __m256i __A)
+{
+  __builtin_ia32_pmovusqd256mem_mask ((__v4si *) __P, (__v4di) __A, __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cvtusepi64_epi32 (__m128i __O, __mmask8 __M, __m256i __A)
+{
+  return (__m128i) __builtin_ia32_pmovusqd256_mask ((__v4di) __A,
+						    (__v4si) __O, __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_cvtusepi64_epi32 (__mmask8 __M, __m256i __A)
+{
+  return (__m128i) __builtin_ia32_pmovusqd256_mask ((__v4di) __A,
+						    (__v4si)
+						    _mm_setzero_si128 (),
+						    __M);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_broadcastss_ps (__m256 __O, __mmask8 __M, __m128 __A)
+{
+  return (__m256) __builtin_ia32_broadcastss256_mask ((__v4sf) __A,
+						      (__v8sf) __O,
+						      __M);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_broadcastss_ps (__mmask8 __M, __m128 __A)
+{
+  return (__m256) __builtin_ia32_broadcastss256_mask ((__v4sf) __A,
+						      (__v8sf)
+						      _mm256_setzero_ps (),
+						      __M);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_broadcastss_ps (__m128 __O, __mmask8 __M, __m128 __A)
+{
+  return (__m128) __builtin_ia32_broadcastss128_mask ((__v4sf) __A,
+						      (__v4sf) __O,
+						      __M);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_broadcastss_ps (__mmask8 __M, __m128 __A)
+{
+  return (__m128) __builtin_ia32_broadcastss128_mask ((__v4sf) __A,
+						      (__v4sf)
+						      _mm_setzero_ps (),
+						      __M);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_broadcastsd_pd (__m256d __O, __mmask8 __M, __m128d __A)
+{
+  return (__m256d) __builtin_ia32_broadcastsd256_mask ((__v2df) __A,
+						       (__v4df) __O,
+						       __M);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_broadcastsd_pd (__mmask8 __M, __m128d __A)
+{
+  return (__m256d) __builtin_ia32_broadcastsd256_mask ((__v2df) __A,
+						       (__v4df)
+						       _mm256_setzero_pd (),
+						       __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_broadcastd_epi32 (__m256i __O, __mmask8 __M, __m128i __A)
+{
+  return (__m256i) __builtin_ia32_pbroadcastd256_mask ((__v4si) __A,
+						       (__v8si) __O,
+						       __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_broadcastd_epi32 (__mmask8 __M, __m128i __A)
+{
+  return (__m256i) __builtin_ia32_pbroadcastd256_mask ((__v4si) __A,
+						       (__v8si)
+						       _mm256_setzero_si256 (),
+						       __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_set1_epi32 (__m256i __O, __mmask8 __M, int __A)
+{
+  return (__m256i) __builtin_ia32_pbroadcastd256_gpr_mask (__A, (__v8si) __O,
+							   __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_set1_epi32 (__mmask8 __M, int __A)
+{
+  return (__m256i) __builtin_ia32_pbroadcastd256_gpr_mask (__A,
+							   (__v8si)
+							   _mm256_setzero_si256 (),
+							   __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_broadcastd_epi32 (__m128i __O, __mmask8 __M, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_pbroadcastd128_mask ((__v4si) __A,
+						       (__v4si) __O,
+						       __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_broadcastd_epi32 (__mmask8 __M, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_pbroadcastd128_mask ((__v4si) __A,
+						       (__v4si)
+						       _mm_setzero_si128 (),
+						       __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_set1_epi32 (__m128i __O, __mmask8 __M, int __A)
+{
+  return (__m128i) __builtin_ia32_pbroadcastd128_gpr_mask (__A, (__v4si) __O,
+							   __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_set1_epi32 (__mmask8 __M, int __A)
+{
+  return (__m128i) __builtin_ia32_pbroadcastd128_gpr_mask (__A,
+							   (__v4si)
+							   _mm_setzero_si128 (),
+							   __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_broadcastq_epi64 (__m256i __O, __mmask8 __M, __m128i __A)
+{
+  return (__m256i) __builtin_ia32_pbroadcastq256_mask ((__v2di) __A,
+						       (__v4di) __O,
+						       __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_broadcastq_epi64 (__mmask8 __M, __m128i __A)
+{
+  return (__m256i) __builtin_ia32_pbroadcastq256_mask ((__v2di) __A,
+						       (__v4di)
+						       _mm256_setzero_si256 (),
+						       __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_set1_epi64 (__m256i __O, __mmask8 __M, long long __A)
+{
+  return (__m256i) __builtin_ia32_pbroadcastq256_gpr_mask (__A, (__v4di) __O,
+							   __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_set1_epi64 (__mmask8 __M, long long __A)
+{
+  return (__m256i) __builtin_ia32_pbroadcastq256_gpr_mask (__A,
+							   (__v4di)
+							   _mm256_setzero_si256 (),
+							   __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_broadcastq_epi64 (__m128i __O, __mmask8 __M, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_pbroadcastq128_mask ((__v2di) __A,
+						       (__v2di) __O,
+						       __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_broadcastq_epi64 (__mmask8 __M, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_pbroadcastq128_mask ((__v2di) __A,
+						       (__v2di)
+						       _mm_setzero_si128 (),
+						       __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_set1_epi64 (__m128i __O, __mmask8 __M, long long __A)
+{
+  return (__m128i) __builtin_ia32_pbroadcastq128_gpr_mask (__A, (__v2di) __O,
+							   __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_set1_epi64 (__mmask8 __M, long long __A)
+{
+  return (__m128i) __builtin_ia32_pbroadcastq128_gpr_mask (__A,
+							   (__v2di)
+							   _mm_setzero_si128 (),
+							   __M);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_broadcast_f32x4 (__m128 __A)
+{
+  return (__m256) __builtin_ia32_broadcastf32x4_256_mask ((__v4sf) __A,
+						          (__v8sf)_mm256_undefined_pd (),
+							  (__mmask8) -
+							  1);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_broadcast_f32x4 (__m256 __O, __mmask8 __M, __m128 __A)
+{
+  return (__m256) __builtin_ia32_broadcastf32x4_256_mask ((__v4sf) __A,
+							  (__v8sf) __O,
+							  __M);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_broadcast_f32x4 (__mmask8 __M, __m128 __A)
+{
+  return (__m256) __builtin_ia32_broadcastf32x4_256_mask ((__v4sf) __A,
+							  (__v8sf)
+							  _mm256_setzero_ps (),
+							  __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_broadcast_i32x4 (__m128i __A)
+{
+  return (__m256i) __builtin_ia32_broadcasti32x4_256_mask ((__v4si)
+							   __A,
+						           (__v8si)_mm256_undefined_si256 (),
+							   (__mmask8) -
+							   1);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_broadcast_i32x4 (__m256i __O, __mmask8 __M, __m128i __A)
+{
+  return (__m256i) __builtin_ia32_broadcasti32x4_256_mask ((__v4si)
+							   __A,
+							   (__v8si)
+							   __O, __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_broadcast_i32x4 (__mmask8 __M, __m128i __A)
+{
+  return (__m256i) __builtin_ia32_broadcasti32x4_256_mask ((__v4si)
+							   __A,
+							   (__v8si)
+							   _mm256_setzero_si256 (),
+							   __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cvtepi8_epi32 (__m256i __W, __mmask8 __U, __m128i __A)
+{
+  return (__m256i) __builtin_ia32_pmovsxbd256_mask ((__v16qi) __A,
+						    (__v8si) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_cvtepi8_epi32 (__mmask8 __U, __m128i __A)
+{
+  return (__m256i) __builtin_ia32_pmovsxbd256_mask ((__v16qi) __A,
+						    (__v8si)
+						    _mm256_setzero_si256 (),
+						    (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cvtepi8_epi32 (__m128i __W, __mmask8 __U, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_pmovsxbd128_mask ((__v16qi) __A,
+						    (__v4si) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_cvtepi8_epi32 (__mmask8 __U, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_pmovsxbd128_mask ((__v16qi) __A,
+						    (__v4si)
+						    _mm_setzero_si128 (),
+						    (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cvtepi8_epi64 (__m256i __W, __mmask8 __U, __m128i __A)
+{
+  return (__m256i) __builtin_ia32_pmovsxbq256_mask ((__v16qi) __A,
+						    (__v4di) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_cvtepi8_epi64 (__mmask8 __U, __m128i __A)
+{
+  return (__m256i) __builtin_ia32_pmovsxbq256_mask ((__v16qi) __A,
+						    (__v4di)
+						    _mm256_setzero_si256 (),
+						    (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cvtepi8_epi64 (__m128i __W, __mmask8 __U, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_pmovsxbq128_mask ((__v16qi) __A,
+						    (__v2di) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_cvtepi8_epi64 (__mmask8 __U, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_pmovsxbq128_mask ((__v16qi) __A,
+						    (__v2di)
+						    _mm_setzero_si128 (),
+						    (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cvtepi16_epi32 (__m256i __W, __mmask8 __U, __m128i __A)
+{
+  return (__m256i) __builtin_ia32_pmovsxwd256_mask ((__v8hi) __A,
+						    (__v8si) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_cvtepi16_epi32 (__mmask8 __U, __m128i __A)
+{
+  return (__m256i) __builtin_ia32_pmovsxwd256_mask ((__v8hi) __A,
+						    (__v8si)
+						    _mm256_setzero_si256 (),
+						    (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cvtepi16_epi32 (__m128i __W, __mmask8 __U, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_pmovsxwd128_mask ((__v8hi) __A,
+						    (__v4si) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_cvtepi16_epi32 (__mmask8 __U, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_pmovsxwd128_mask ((__v8hi) __A,
+						    (__v4si)
+						    _mm_setzero_si128 (),
+						    (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cvtepi16_epi64 (__m256i __W, __mmask8 __U, __m128i __A)
+{
+  return (__m256i) __builtin_ia32_pmovsxwq256_mask ((__v8hi) __A,
+						    (__v4di) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_cvtepi16_epi64 (__mmask8 __U, __m128i __A)
+{
+  return (__m256i) __builtin_ia32_pmovsxwq256_mask ((__v8hi) __A,
+						    (__v4di)
+						    _mm256_setzero_si256 (),
+						    (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cvtepi16_epi64 (__m128i __W, __mmask8 __U, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_pmovsxwq128_mask ((__v8hi) __A,
+						    (__v2di) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_cvtepi16_epi64 (__mmask8 __U, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_pmovsxwq128_mask ((__v8hi) __A,
+						    (__v2di)
+						    _mm_setzero_si128 (),
+						    (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cvtepi32_epi64 (__m256i __W, __mmask8 __U, __m128i __X)
+{
+  return (__m256i) __builtin_ia32_pmovsxdq256_mask ((__v4si) __X,
+						    (__v4di) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_cvtepi32_epi64 (__mmask8 __U, __m128i __X)
+{
+  return (__m256i) __builtin_ia32_pmovsxdq256_mask ((__v4si) __X,
+						    (__v4di)
+						    _mm256_setzero_si256 (),
+						    (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cvtepi32_epi64 (__m128i __W, __mmask8 __U, __m128i __X)
+{
+  return (__m128i) __builtin_ia32_pmovsxdq128_mask ((__v4si) __X,
+						    (__v2di) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_cvtepi32_epi64 (__mmask8 __U, __m128i __X)
+{
+  return (__m128i) __builtin_ia32_pmovsxdq128_mask ((__v4si) __X,
+						    (__v2di)
+						    _mm_setzero_si128 (),
+						    (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cvtepu8_epi32 (__m256i __W, __mmask8 __U, __m128i __A)
+{
+  return (__m256i) __builtin_ia32_pmovzxbd256_mask ((__v16qi) __A,
+						    (__v8si) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_cvtepu8_epi32 (__mmask8 __U, __m128i __A)
+{
+  return (__m256i) __builtin_ia32_pmovzxbd256_mask ((__v16qi) __A,
+						    (__v8si)
+						    _mm256_setzero_si256 (),
+						    (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cvtepu8_epi32 (__m128i __W, __mmask8 __U, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_pmovzxbd128_mask ((__v16qi) __A,
+						    (__v4si) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_cvtepu8_epi32 (__mmask8 __U, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_pmovzxbd128_mask ((__v16qi) __A,
+						    (__v4si)
+						    _mm_setzero_si128 (),
+						    (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cvtepu8_epi64 (__m256i __W, __mmask8 __U, __m128i __A)
+{
+  return (__m256i) __builtin_ia32_pmovzxbq256_mask ((__v16qi) __A,
+						    (__v4di) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_cvtepu8_epi64 (__mmask8 __U, __m128i __A)
+{
+  return (__m256i) __builtin_ia32_pmovzxbq256_mask ((__v16qi) __A,
+						    (__v4di)
+						    _mm256_setzero_si256 (),
+						    (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cvtepu8_epi64 (__m128i __W, __mmask8 __U, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_pmovzxbq128_mask ((__v16qi) __A,
+						    (__v2di) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_cvtepu8_epi64 (__mmask8 __U, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_pmovzxbq128_mask ((__v16qi) __A,
+						    (__v2di)
+						    _mm_setzero_si128 (),
+						    (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cvtepu16_epi32 (__m256i __W, __mmask8 __U, __m128i __A)
+{
+  return (__m256i) __builtin_ia32_pmovzxwd256_mask ((__v8hi) __A,
+						    (__v8si) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_cvtepu16_epi32 (__mmask8 __U, __m128i __A)
+{
+  return (__m256i) __builtin_ia32_pmovzxwd256_mask ((__v8hi) __A,
+						    (__v8si)
+						    _mm256_setzero_si256 (),
+						    (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cvtepu16_epi32 (__m128i __W, __mmask8 __U, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_pmovzxwd128_mask ((__v8hi) __A,
+						    (__v4si) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_cvtepu16_epi32 (__mmask8 __U, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_pmovzxwd128_mask ((__v8hi) __A,
+						    (__v4si)
+						    _mm_setzero_si128 (),
+						    (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cvtepu16_epi64 (__m256i __W, __mmask8 __U, __m128i __A)
+{
+  return (__m256i) __builtin_ia32_pmovzxwq256_mask ((__v8hi) __A,
+						    (__v4di) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_cvtepu16_epi64 (__mmask8 __U, __m128i __A)
+{
+  return (__m256i) __builtin_ia32_pmovzxwq256_mask ((__v8hi) __A,
+						    (__v4di)
+						    _mm256_setzero_si256 (),
+						    (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cvtepu16_epi64 (__m128i __W, __mmask8 __U, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_pmovzxwq128_mask ((__v8hi) __A,
+						    (__v2di) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_cvtepu16_epi64 (__mmask8 __U, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_pmovzxwq128_mask ((__v8hi) __A,
+						    (__v2di)
+						    _mm_setzero_si128 (),
+						    (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cvtepu32_epi64 (__m256i __W, __mmask8 __U, __m128i __X)
+{
+  return (__m256i) __builtin_ia32_pmovzxdq256_mask ((__v4si) __X,
+						    (__v4di) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_cvtepu32_epi64 (__mmask8 __U, __m128i __X)
+{
+  return (__m256i) __builtin_ia32_pmovzxdq256_mask ((__v4si) __X,
+						    (__v4di)
+						    _mm256_setzero_si256 (),
+						    (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cvtepu32_epi64 (__m128i __W, __mmask8 __U, __m128i __X)
+{
+  return (__m128i) __builtin_ia32_pmovzxdq128_mask ((__v4si) __X,
+						    (__v2di) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_cvtepu32_epi64 (__mmask8 __U, __m128i __X)
+{
+  return (__m128i) __builtin_ia32_pmovzxdq128_mask ((__v4si) __X,
+						    (__v2di)
+						    _mm_setzero_si128 (),
+						    (__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_rcp14_pd (__m256d __A)
+{
+  return (__m256d) __builtin_ia32_rcp14pd256_mask ((__v4df) __A,
+					      (__v4df)
+					      _mm256_setzero_pd (),
+					      (__mmask8) -1);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_rcp14_pd (__m256d __W, __mmask8 __U, __m256d __A)
+{
+  return (__m256d) __builtin_ia32_rcp14pd256_mask ((__v4df) __A,
+					      (__v4df) __W,
+					      (__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_rcp14_pd (__mmask8 __U, __m256d __A)
+{
+  return (__m256d) __builtin_ia32_rcp14pd256_mask ((__v4df) __A,
+					      (__v4df)
+					      _mm256_setzero_pd (),
+					      (__mmask8) __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_rcp14_pd (__m128d __A)
+{
+  return (__m128d) __builtin_ia32_rcp14pd128_mask ((__v2df) __A,
+					      (__v2df)
+					      _mm_setzero_pd (),
+					      (__mmask8) -1);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_rcp14_pd (__m128d __W, __mmask8 __U, __m128d __A)
+{
+  return (__m128d) __builtin_ia32_rcp14pd128_mask ((__v2df) __A,
+					      (__v2df) __W,
+					      (__mmask8) __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_rcp14_pd (__mmask8 __U, __m128d __A)
+{
+  return (__m128d) __builtin_ia32_rcp14pd128_mask ((__v2df) __A,
+					      (__v2df)
+					      _mm_setzero_pd (),
+					      (__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_rcp14_ps (__m256 __A)
+{
+  return (__m256) __builtin_ia32_rcp14ps256_mask ((__v8sf) __A,
+					     (__v8sf)
+					     _mm256_setzero_ps (),
+					     (__mmask8) -1);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_rcp14_ps (__m256 __W, __mmask8 __U, __m256 __A)
+{
+  return (__m256) __builtin_ia32_rcp14ps256_mask ((__v8sf) __A,
+					     (__v8sf) __W,
+					     (__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_rcp14_ps (__mmask8 __U, __m256 __A)
+{
+  return (__m256) __builtin_ia32_rcp14ps256_mask ((__v8sf) __A,
+					     (__v8sf)
+					     _mm256_setzero_ps (),
+					     (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_rcp14_ps (__m128 __A)
+{
+  return (__m128) __builtin_ia32_rcp14ps128_mask ((__v4sf) __A,
+					     (__v4sf)
+					     _mm_setzero_ps (),
+					     (__mmask8) -1);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_rcp14_ps (__m128 __W, __mmask8 __U, __m128 __A)
+{
+  return (__m128) __builtin_ia32_rcp14ps128_mask ((__v4sf) __A,
+					     (__v4sf) __W,
+					     (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_rcp14_ps (__mmask8 __U, __m128 __A)
+{
+  return (__m128) __builtin_ia32_rcp14ps128_mask ((__v4sf) __A,
+					     (__v4sf)
+					     _mm_setzero_ps (),
+					     (__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_rsqrt14_pd (__m256d __A)
+{
+  return (__m256d) __builtin_ia32_rsqrt14pd256_mask ((__v4df) __A,
+						     (__v4df)
+						     _mm256_setzero_pd (),
+						     (__mmask8) -1);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_rsqrt14_pd (__m256d __W, __mmask8 __U, __m256d __A)
+{
+  return (__m256d) __builtin_ia32_rsqrt14pd256_mask ((__v4df) __A,
+						     (__v4df) __W,
+						     (__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_rsqrt14_pd (__mmask8 __U, __m256d __A)
+{
+  return (__m256d) __builtin_ia32_rsqrt14pd256_mask ((__v4df) __A,
+						     (__v4df)
+						     _mm256_setzero_pd (),
+						     (__mmask8) __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_rsqrt14_pd (__m128d __A)
+{
+  return (__m128d) __builtin_ia32_rsqrt14pd128_mask ((__v2df) __A,
+						     (__v2df)
+						     _mm_setzero_pd (),
+						     (__mmask8) -1);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_rsqrt14_pd (__m128d __W, __mmask8 __U, __m128d __A)
+{
+  return (__m128d) __builtin_ia32_rsqrt14pd128_mask ((__v2df) __A,
+						     (__v2df) __W,
+						     (__mmask8) __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_rsqrt14_pd (__mmask8 __U, __m128d __A)
+{
+  return (__m128d) __builtin_ia32_rsqrt14pd128_mask ((__v2df) __A,
+						     (__v2df)
+						     _mm_setzero_pd (),
+						     (__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_rsqrt14_ps (__m256 __A)
+{
+  return (__m256) __builtin_ia32_rsqrt14ps256_mask ((__v8sf) __A,
+						    (__v8sf)
+						    _mm256_setzero_ps (),
+						    (__mmask8) -1);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_rsqrt14_ps (__m256 __W, __mmask8 __U, __m256 __A)
+{
+  return (__m256) __builtin_ia32_rsqrt14ps256_mask ((__v8sf) __A,
+						    (__v8sf) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_rsqrt14_ps (__mmask8 __U, __m256 __A)
+{
+  return (__m256) __builtin_ia32_rsqrt14ps256_mask ((__v8sf) __A,
+						    (__v8sf)
+						    _mm256_setzero_ps (),
+						    (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_rsqrt14_ps (__m128 __A)
+{
+  return (__m128) __builtin_ia32_rsqrt14ps128_mask ((__v4sf) __A,
+						    (__v4sf)
+						    _mm_setzero_ps (),
+						    (__mmask8) -1);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_rsqrt14_ps (__m128 __W, __mmask8 __U, __m128 __A)
+{
+  return (__m128) __builtin_ia32_rsqrt14ps128_mask ((__v4sf) __A,
+						    (__v4sf) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_rsqrt14_ps (__mmask8 __U, __m128 __A)
+{
+  return (__m128) __builtin_ia32_rsqrt14ps128_mask ((__v4sf) __A,
+						    (__v4sf)
+						    _mm_setzero_ps (),
+						    (__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_sqrt_pd (__m256d __W, __mmask8 __U, __m256d __A)
+{
+  return (__m256d) __builtin_ia32_sqrtpd256_mask ((__v4df) __A,
+						  (__v4df) __W,
+						  (__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_sqrt_pd (__mmask8 __U, __m256d __A)
+{
+  return (__m256d) __builtin_ia32_sqrtpd256_mask ((__v4df) __A,
+						  (__v4df)
+						  _mm256_setzero_pd (),
+						  (__mmask8) __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_sqrt_pd (__m128d __W, __mmask8 __U, __m128d __A)
+{
+  return (__m128d) __builtin_ia32_sqrtpd128_mask ((__v2df) __A,
+						  (__v2df) __W,
+						  (__mmask8) __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_sqrt_pd (__mmask8 __U, __m128d __A)
+{
+  return (__m128d) __builtin_ia32_sqrtpd128_mask ((__v2df) __A,
+						  (__v2df)
+						  _mm_setzero_pd (),
+						  (__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_sqrt_ps (__m256 __W, __mmask8 __U, __m256 __A)
+{
+  return (__m256) __builtin_ia32_sqrtps256_mask ((__v8sf) __A,
+						 (__v8sf) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_sqrt_ps (__mmask8 __U, __m256 __A)
+{
+  return (__m256) __builtin_ia32_sqrtps256_mask ((__v8sf) __A,
+						 (__v8sf)
+						 _mm256_setzero_ps (),
+						 (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_sqrt_ps (__m128 __W, __mmask8 __U, __m128 __A)
+{
+  return (__m128) __builtin_ia32_sqrtps128_mask ((__v4sf) __A,
+						 (__v4sf) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_sqrt_ps (__mmask8 __U, __m128 __A)
+{
+  return (__m128) __builtin_ia32_sqrtps128_mask ((__v4sf) __A,
+						 (__v4sf)
+						 _mm_setzero_ps (),
+						 (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_add_epi32 (__m256i __W, __mmask8 __U, __m256i __A,
+		       __m256i __B)
+{
+  return (__m256i) __builtin_ia32_paddd256_mask ((__v8si) __A,
+						 (__v8si) __B,
+						 (__v8si) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_add_epi32 (__mmask8 __U, __m256i __A, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_paddd256_mask ((__v8si) __A,
+						 (__v8si) __B,
+						 (__v8si)
+						 _mm256_setzero_si256 (),
+						 (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_add_epi64 (__m256i __W, __mmask8 __U, __m256i __A,
+		       __m256i __B)
+{
+  return (__m256i) __builtin_ia32_paddq256_mask ((__v4di) __A,
+						 (__v4di) __B,
+						 (__v4di) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_add_epi64 (__mmask8 __U, __m256i __A, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_paddq256_mask ((__v4di) __A,
+						 (__v4di) __B,
+						 (__v4di)
+						 _mm256_setzero_si256 (),
+						 (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_sub_epi32 (__m256i __W, __mmask8 __U, __m256i __A,
+		       __m256i __B)
+{
+  return (__m256i) __builtin_ia32_psubd256_mask ((__v8si) __A,
+						 (__v8si) __B,
+						 (__v8si) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_sub_epi32 (__mmask8 __U, __m256i __A, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_psubd256_mask ((__v8si) __A,
+						 (__v8si) __B,
+						 (__v8si)
+						 _mm256_setzero_si256 (),
+						 (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_sub_epi64 (__m256i __W, __mmask8 __U, __m256i __A,
+		       __m256i __B)
+{
+  return (__m256i) __builtin_ia32_psubq256_mask ((__v4di) __A,
+						 (__v4di) __B,
+						 (__v4di) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_sub_epi64 (__mmask8 __U, __m256i __A, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_psubq256_mask ((__v4di) __A,
+						 (__v4di) __B,
+						 (__v4di)
+						 _mm256_setzero_si256 (),
+						 (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_add_epi32 (__m128i __W, __mmask8 __U, __m128i __A,
+		    __m128i __B)
+{
+  return (__m128i) __builtin_ia32_paddd128_mask ((__v4si) __A,
+						 (__v4si) __B,
+						 (__v4si) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_add_epi32 (__mmask8 __U, __m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_paddd128_mask ((__v4si) __A,
+						 (__v4si) __B,
+						 (__v4si)
+						 _mm_setzero_si128 (),
+						 (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_add_epi64 (__m128i __W, __mmask8 __U, __m128i __A,
+		    __m128i __B)
+{
+  return (__m128i) __builtin_ia32_paddq128_mask ((__v2di) __A,
+						 (__v2di) __B,
+						 (__v2di) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_add_epi64 (__mmask8 __U, __m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_paddq128_mask ((__v2di) __A,
+						 (__v2di) __B,
+						 (__v2di)
+						 _mm_setzero_si128 (),
+						 (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_sub_epi32 (__m128i __W, __mmask8 __U, __m128i __A,
+		    __m128i __B)
+{
+  return (__m128i) __builtin_ia32_psubd128_mask ((__v4si) __A,
+						 (__v4si) __B,
+						 (__v4si) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_sub_epi32 (__mmask8 __U, __m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_psubd128_mask ((__v4si) __A,
+						 (__v4si) __B,
+						 (__v4si)
+						 _mm_setzero_si128 (),
+						 (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_sub_epi64 (__m128i __W, __mmask8 __U, __m128i __A,
+		    __m128i __B)
+{
+  return (__m128i) __builtin_ia32_psubq128_mask ((__v2di) __A,
+						 (__v2di) __B,
+						 (__v2di) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_sub_epi64 (__mmask8 __U, __m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_psubq128_mask ((__v2di) __A,
+						 (__v2di) __B,
+						 (__v2di)
+						 _mm_setzero_si128 (),
+						 (__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_getexp_ps (__m256 __A)
+{
+  return (__m256) __builtin_ia32_getexpps256_mask ((__v8sf) __A,
+						   (__v8sf)
+						   _mm256_setzero_ps (),
+						   (__mmask8) -1);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_getexp_ps (__m256 __W, __mmask8 __U, __m256 __A)
+{
+  return (__m256) __builtin_ia32_getexpps256_mask ((__v8sf) __A,
+						   (__v8sf) __W,
+						   (__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_getexp_ps (__mmask8 __U, __m256 __A)
+{
+  return (__m256) __builtin_ia32_getexpps256_mask ((__v8sf) __A,
+						   (__v8sf)
+						   _mm256_setzero_ps (),
+						   (__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_getexp_pd (__m256d __A)
+{
+  return (__m256d) __builtin_ia32_getexppd256_mask ((__v4df) __A,
+						    (__v4df)
+						    _mm256_setzero_pd (),
+						    (__mmask8) -1);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_getexp_pd (__m256d __W, __mmask8 __U, __m256d __A)
+{
+  return (__m256d) __builtin_ia32_getexppd256_mask ((__v4df) __A,
+						    (__v4df) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_getexp_pd (__mmask8 __U, __m256d __A)
+{
+  return (__m256d) __builtin_ia32_getexppd256_mask ((__v4df) __A,
+						    (__v4df)
+						    _mm256_setzero_pd (),
+						    (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_getexp_ps (__m128 __A)
+{
+  return (__m128) __builtin_ia32_getexpps128_mask ((__v4sf) __A,
+						   (__v4sf)
+						   _mm_setzero_ps (),
+						   (__mmask8) -1);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_getexp_ps (__m128 __W, __mmask8 __U, __m128 __A)
+{
+  return (__m128) __builtin_ia32_getexpps128_mask ((__v4sf) __A,
+						   (__v4sf) __W,
+						   (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_getexp_ps (__mmask8 __U, __m128 __A)
+{
+  return (__m128) __builtin_ia32_getexpps128_mask ((__v4sf) __A,
+						   (__v4sf)
+						   _mm_setzero_ps (),
+						   (__mmask8) __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_getexp_pd (__m128d __A)
+{
+  return (__m128d) __builtin_ia32_getexppd128_mask ((__v2df) __A,
+						    (__v2df)
+						    _mm_setzero_pd (),
+						    (__mmask8) -1);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_getexp_pd (__m128d __W, __mmask8 __U, __m128d __A)
+{
+  return (__m128d) __builtin_ia32_getexppd128_mask ((__v2df) __A,
+						    (__v2df) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_getexp_pd (__mmask8 __U, __m128d __A)
+{
+  return (__m128d) __builtin_ia32_getexppd128_mask ((__v2df) __A,
+						    (__v2df)
+						    _mm_setzero_pd (),
+						    (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_srl_epi32 (__m256i __W, __mmask8 __U, __m256i __A,
+		       __m128i __B)
+{
+  return (__m256i) __builtin_ia32_psrld256_mask ((__v8si) __A,
+						 (__v4si) __B,
+						 (__v8si) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_srl_epi32 (__mmask8 __U, __m256i __A, __m128i __B)
+{
+  return (__m256i) __builtin_ia32_psrld256_mask ((__v8si) __A,
+						 (__v4si) __B,
+						 (__v8si)
+						 _mm256_setzero_si256 (),
+						 (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_srl_epi32 (__m128i __W, __mmask8 __U, __m128i __A,
+		    __m128i __B)
+{
+  return (__m128i) __builtin_ia32_psrld128_mask ((__v4si) __A,
+						 (__v4si) __B,
+						 (__v4si) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_srl_epi32 (__mmask8 __U, __m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_psrld128_mask ((__v4si) __A,
+						 (__v4si) __B,
+						 (__v4si)
+						 _mm_setzero_si128 (),
+						 (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_srl_epi64 (__m256i __W, __mmask8 __U, __m256i __A,
+		       __m128i __B)
+{
+  return (__m256i) __builtin_ia32_psrlq256_mask ((__v4di) __A,
+						 (__v2di) __B,
+						 (__v4di) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_srl_epi64 (__mmask8 __U, __m256i __A, __m128i __B)
+{
+  return (__m256i) __builtin_ia32_psrlq256_mask ((__v4di) __A,
+						 (__v2di) __B,
+						 (__v4di)
+						 _mm256_setzero_si256 (),
+						 (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_srl_epi64 (__m128i __W, __mmask8 __U, __m128i __A,
+		    __m128i __B)
+{
+  return (__m128i) __builtin_ia32_psrlq128_mask ((__v2di) __A,
+						 (__v2di) __B,
+						 (__v2di) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_srl_epi64 (__mmask8 __U, __m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_psrlq128_mask ((__v2di) __A,
+						 (__v2di) __B,
+						 (__v2di)
+						 _mm_setzero_di (),
+						 (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_and_epi32 (__m256i __W, __mmask8 __U, __m256i __A,
+		       __m256i __B)
+{
+  return (__m256i) __builtin_ia32_pandd256_mask ((__v8si) __A,
+						 (__v8si) __B,
+						 (__v8si) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_and_epi32 (__mmask8 __U, __m256i __A, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_pandd256_mask ((__v8si) __A,
+						 (__v8si) __B,
+						 (__v8si)
+						 _mm256_setzero_si256 (),
+						 (__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_scalef_pd (__m256d __A, __m256d __B)
+{
+  return (__m256d) __builtin_ia32_scalefpd256_mask ((__v4df) __A,
+						    (__v4df) __B,
+						    (__v4df)
+						    _mm256_setzero_pd (),
+						    (__mmask8) -1);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_scalef_pd (__m256d __W, __mmask8 __U, __m256d __A,
+		       __m256d __B)
+{
+  return (__m256d) __builtin_ia32_scalefpd256_mask ((__v4df) __A,
+						    (__v4df) __B,
+						    (__v4df) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_scalef_pd (__mmask8 __U, __m256d __A, __m256d __B)
+{
+  return (__m256d) __builtin_ia32_scalefpd256_mask ((__v4df) __A,
+						    (__v4df) __B,
+						    (__v4df)
+						    _mm256_setzero_pd (),
+						    (__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_scalef_ps (__m256 __A, __m256 __B)
+{
+  return (__m256) __builtin_ia32_scalefps256_mask ((__v8sf) __A,
+						   (__v8sf) __B,
+						   (__v8sf)
+						   _mm256_setzero_ps (),
+						   (__mmask8) -1);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_scalef_ps (__m256 __W, __mmask8 __U, __m256 __A,
+		       __m256 __B)
+{
+  return (__m256) __builtin_ia32_scalefps256_mask ((__v8sf) __A,
+						   (__v8sf) __B,
+						   (__v8sf) __W,
+						   (__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_scalef_ps (__mmask8 __U, __m256 __A, __m256 __B)
+{
+  return (__m256) __builtin_ia32_scalefps256_mask ((__v8sf) __A,
+						   (__v8sf) __B,
+						   (__v8sf)
+						   _mm256_setzero_ps (),
+						   (__mmask8) __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_scalef_pd (__m128d __A, __m128d __B)
+{
+  return (__m128d) __builtin_ia32_scalefpd128_mask ((__v2df) __A,
+						    (__v2df) __B,
+						    (__v2df)
+						    _mm_setzero_pd (),
+						    (__mmask8) -1);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_scalef_pd (__m128d __W, __mmask8 __U, __m128d __A,
+		    __m128d __B)
+{
+  return (__m128d) __builtin_ia32_scalefpd128_mask ((__v2df) __A,
+						    (__v2df) __B,
+						    (__v2df) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_scalef_pd (__mmask8 __U, __m128d __A, __m128d __B)
+{
+  return (__m128d) __builtin_ia32_scalefpd128_mask ((__v2df) __A,
+						    (__v2df) __B,
+						    (__v2df)
+						    _mm_setzero_pd (),
+						    (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_scalef_ps (__m128 __A, __m128 __B)
+{
+  return (__m128) __builtin_ia32_scalefps128_mask ((__v4sf) __A,
+						   (__v4sf) __B,
+						   (__v4sf)
+						   _mm_setzero_ps (),
+						   (__mmask8) -1);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_scalef_ps (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
+{
+  return (__m128) __builtin_ia32_scalefps128_mask ((__v4sf) __A,
+						   (__v4sf) __B,
+						   (__v4sf) __W,
+						   (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_scalef_ps (__mmask8 __U, __m128 __A, __m128 __B)
+{
+  return (__m128) __builtin_ia32_scalefps128_mask ((__v4sf) __A,
+						   (__v4sf) __B,
+						   (__v4sf)
+						   _mm_setzero_ps (),
+						   (__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_fmadd_pd (__m256d __A, __mmask8 __U, __m256d __B,
+		      __m256d __C)
+{
+  return (__m256d) __builtin_ia32_vfmaddpd256_mask ((__v4df) __A,
+						    (__v4df) __B,
+						    (__v4df) __C,
+						    (__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask3_fmadd_pd (__m256d __A, __m256d __B, __m256d __C,
+		       __mmask8 __U)
+{
+  return (__m256d) __builtin_ia32_vfmaddpd256_mask3 ((__v4df) __A,
+						     (__v4df) __B,
+						     (__v4df) __C,
+						     (__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_fmadd_pd (__mmask8 __U, __m256d __A, __m256d __B,
+		       __m256d __C)
+{
+  return (__m256d) __builtin_ia32_vfmaddpd256_maskz ((__v4df) __A,
+						     (__v4df) __B,
+						     (__v4df) __C,
+						     (__mmask8) __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_fmadd_pd (__m128d __A, __mmask8 __U, __m128d __B, __m128d __C)
+{
+  return (__m128d) __builtin_ia32_vfmaddpd128_mask ((__v2df) __A,
+						    (__v2df) __B,
+						    (__v2df) __C,
+						    (__mmask8) __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask3_fmadd_pd (__m128d __A, __m128d __B, __m128d __C,
+		    __mmask8 __U)
+{
+  return (__m128d) __builtin_ia32_vfmaddpd128_mask3 ((__v2df) __A,
+						     (__v2df) __B,
+						     (__v2df) __C,
+						     (__mmask8) __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_fmadd_pd (__mmask8 __U, __m128d __A, __m128d __B,
+		    __m128d __C)
+{
+  return (__m128d) __builtin_ia32_vfmaddpd128_maskz ((__v2df) __A,
+						     (__v2df) __B,
+						     (__v2df) __C,
+						     (__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_fmadd_ps (__m256 __A, __mmask8 __U, __m256 __B, __m256 __C)
+{
+  return (__m256) __builtin_ia32_vfmaddps256_mask ((__v8sf) __A,
+						   (__v8sf) __B,
+						   (__v8sf) __C,
+						   (__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask3_fmadd_ps (__m256 __A, __m256 __B, __m256 __C,
+		       __mmask8 __U)
+{
+  return (__m256) __builtin_ia32_vfmaddps256_mask3 ((__v8sf) __A,
+						    (__v8sf) __B,
+						    (__v8sf) __C,
+						    (__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_fmadd_ps (__mmask8 __U, __m256 __A, __m256 __B,
+		       __m256 __C)
+{
+  return (__m256) __builtin_ia32_vfmaddps256_maskz ((__v8sf) __A,
+						    (__v8sf) __B,
+						    (__v8sf) __C,
+						    (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_fmadd_ps (__m128 __A, __mmask8 __U, __m128 __B, __m128 __C)
+{
+  return (__m128) __builtin_ia32_vfmaddps128_mask ((__v4sf) __A,
+						   (__v4sf) __B,
+						   (__v4sf) __C,
+						   (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask3_fmadd_ps (__m128 __A, __m128 __B, __m128 __C, __mmask8 __U)
+{
+  return (__m128) __builtin_ia32_vfmaddps128_mask3 ((__v4sf) __A,
+						    (__v4sf) __B,
+						    (__v4sf) __C,
+						    (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_fmadd_ps (__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
+{
+  return (__m128) __builtin_ia32_vfmaddps128_maskz ((__v4sf) __A,
+						    (__v4sf) __B,
+						    (__v4sf) __C,
+						    (__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_fmsub_pd (__m256d __A, __mmask8 __U, __m256d __B,
+		      __m256d __C)
+{
+  return (__m256d) __builtin_ia32_vfmaddpd256_mask ((__v4df) __A,
+						    (__v4df) __B,
+						    -(__v4df) __C,
+						    (__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask3_fmsub_pd (__m256d __A, __m256d __B, __m256d __C,
+		       __mmask8 __U)
+{
+  return (__m256d) __builtin_ia32_vfmsubpd256_mask3 ((__v4df) __A,
+						     (__v4df) __B,
+						     (__v4df) __C,
+						     (__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_fmsub_pd (__mmask8 __U, __m256d __A, __m256d __B,
+		       __m256d __C)
+{
+  return (__m256d) __builtin_ia32_vfmaddpd256_maskz ((__v4df) __A,
+						     (__v4df) __B,
+						     -(__v4df) __C,
+						     (__mmask8) __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_fmsub_pd (__m128d __A, __mmask8 __U, __m128d __B, __m128d __C)
+{
+  return (__m128d) __builtin_ia32_vfmaddpd128_mask ((__v2df) __A,
+						    (__v2df) __B,
+						    -(__v2df) __C,
+						    (__mmask8) __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask3_fmsub_pd (__m128d __A, __m128d __B, __m128d __C,
+		    __mmask8 __U)
+{
+  return (__m128d) __builtin_ia32_vfmsubpd128_mask3 ((__v2df) __A,
+						     (__v2df) __B,
+						     (__v2df) __C,
+						     (__mmask8) __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_fmsub_pd (__mmask8 __U, __m128d __A, __m128d __B,
+		    __m128d __C)
+{
+  return (__m128d) __builtin_ia32_vfmaddpd128_maskz ((__v2df) __A,
+						     (__v2df) __B,
+						     -(__v2df) __C,
+						     (__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_fmsub_ps (__m256 __A, __mmask8 __U, __m256 __B, __m256 __C)
+{
+  return (__m256) __builtin_ia32_vfmaddps256_mask ((__v8sf) __A,
+						   (__v8sf) __B,
+						   -(__v8sf) __C,
+						   (__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask3_fmsub_ps (__m256 __A, __m256 __B, __m256 __C,
+		       __mmask8 __U)
+{
+  return (__m256) __builtin_ia32_vfmsubps256_mask3 ((__v8sf) __A,
+						    (__v8sf) __B,
+						    (__v8sf) __C,
+						    (__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_fmsub_ps (__mmask8 __U, __m256 __A, __m256 __B,
+		       __m256 __C)
+{
+  return (__m256) __builtin_ia32_vfmaddps256_maskz ((__v8sf) __A,
+						    (__v8sf) __B,
+						    -(__v8sf) __C,
+						    (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_fmsub_ps (__m128 __A, __mmask8 __U, __m128 __B, __m128 __C)
+{
+  return (__m128) __builtin_ia32_vfmaddps128_mask ((__v4sf) __A,
+						   (__v4sf) __B,
+						   -(__v4sf) __C,
+						   (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask3_fmsub_ps (__m128 __A, __m128 __B, __m128 __C, __mmask8 __U)
+{
+  return (__m128) __builtin_ia32_vfmsubps128_mask3 ((__v4sf) __A,
+						    (__v4sf) __B,
+						    (__v4sf) __C,
+						    (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_fmsub_ps (__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
+{
+  return (__m128) __builtin_ia32_vfmaddps128_maskz ((__v4sf) __A,
+						    (__v4sf) __B,
+						    -(__v4sf) __C,
+						    (__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_fmaddsub_pd (__m256d __A, __mmask8 __U, __m256d __B,
+			 __m256d __C)
+{
+  return (__m256d) __builtin_ia32_vfmaddsubpd256_mask ((__v4df) __A,
+						       (__v4df) __B,
+						       (__v4df) __C,
+						       (__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask3_fmaddsub_pd (__m256d __A, __m256d __B, __m256d __C,
+			  __mmask8 __U)
+{
+  return (__m256d) __builtin_ia32_vfmaddsubpd256_mask3 ((__v4df) __A,
+							(__v4df) __B,
+							(__v4df) __C,
+							(__mmask8)
+							__U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_fmaddsub_pd (__mmask8 __U, __m256d __A, __m256d __B,
+			  __m256d __C)
+{
+  return (__m256d) __builtin_ia32_vfmaddsubpd256_maskz ((__v4df) __A,
+							(__v4df) __B,
+							(__v4df) __C,
+							(__mmask8)
+							__U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_fmaddsub_pd (__m128d __A, __mmask8 __U, __m128d __B,
+		      __m128d __C)
+{
+  return (__m128d) __builtin_ia32_vfmaddsubpd128_mask ((__v2df) __A,
+						       (__v2df) __B,
+						       (__v2df) __C,
+						       (__mmask8) __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask3_fmaddsub_pd (__m128d __A, __m128d __B, __m128d __C,
+		       __mmask8 __U)
+{
+  return (__m128d) __builtin_ia32_vfmaddsubpd128_mask3 ((__v2df) __A,
+							(__v2df) __B,
+							(__v2df) __C,
+							(__mmask8)
+							__U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_fmaddsub_pd (__mmask8 __U, __m128d __A, __m128d __B,
+		       __m128d __C)
+{
+  return (__m128d) __builtin_ia32_vfmaddsubpd128_maskz ((__v2df) __A,
+							(__v2df) __B,
+							(__v2df) __C,
+							(__mmask8)
+							__U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_fmaddsub_ps (__m256 __A, __mmask8 __U, __m256 __B,
+			 __m256 __C)
+{
+  return (__m256) __builtin_ia32_vfmaddsubps256_mask ((__v8sf) __A,
+						      (__v8sf) __B,
+						      (__v8sf) __C,
+						      (__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask3_fmaddsub_ps (__m256 __A, __m256 __B, __m256 __C,
+			  __mmask8 __U)
+{
+  return (__m256) __builtin_ia32_vfmaddsubps256_mask3 ((__v8sf) __A,
+						       (__v8sf) __B,
+						       (__v8sf) __C,
+						       (__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_fmaddsub_ps (__mmask8 __U, __m256 __A, __m256 __B,
+			  __m256 __C)
+{
+  return (__m256) __builtin_ia32_vfmaddsubps256_maskz ((__v8sf) __A,
+						       (__v8sf) __B,
+						       (__v8sf) __C,
+						       (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_fmaddsub_ps (__m128 __A, __mmask8 __U, __m128 __B, __m128 __C)
+{
+  return (__m128) __builtin_ia32_vfmaddsubps128_mask ((__v4sf) __A,
+						      (__v4sf) __B,
+						      (__v4sf) __C,
+						      (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask3_fmaddsub_ps (__m128 __A, __m128 __B, __m128 __C,
+		       __mmask8 __U)
+{
+  return (__m128) __builtin_ia32_vfmaddsubps128_mask3 ((__v4sf) __A,
+						       (__v4sf) __B,
+						       (__v4sf) __C,
+						       (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_fmaddsub_ps (__mmask8 __U, __m128 __A, __m128 __B,
+		       __m128 __C)
+{
+  return (__m128) __builtin_ia32_vfmaddsubps128_maskz ((__v4sf) __A,
+						       (__v4sf) __B,
+						       (__v4sf) __C,
+						       (__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_fmsubadd_pd (__m256d __A, __mmask8 __U, __m256d __B,
+			 __m256d __C)
+{
+  return (__m256d) __builtin_ia32_vfmaddsubpd256_mask ((__v4df) __A,
+						       (__v4df) __B,
+						       -(__v4df) __C,
+						       (__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask3_fmsubadd_pd (__m256d __A, __m256d __B, __m256d __C,
+			  __mmask8 __U)
+{
+  return (__m256d) __builtin_ia32_vfmsubaddpd256_mask3 ((__v4df) __A,
+							(__v4df) __B,
+							(__v4df) __C,
+							(__mmask8)
+							__U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_fmsubadd_pd (__mmask8 __U, __m256d __A, __m256d __B,
+			  __m256d __C)
+{
+  return (__m256d) __builtin_ia32_vfmaddsubpd256_maskz ((__v4df) __A,
+							(__v4df) __B,
+							-(__v4df) __C,
+							(__mmask8)
+							__U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_fmsubadd_pd (__m128d __A, __mmask8 __U, __m128d __B,
+		      __m128d __C)
+{
+  return (__m128d) __builtin_ia32_vfmaddsubpd128_mask ((__v2df) __A,
+						       (__v2df) __B,
+						       -(__v2df) __C,
+						       (__mmask8) __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask3_fmsubadd_pd (__m128d __A, __m128d __B, __m128d __C,
+		       __mmask8 __U)
+{
+  return (__m128d) __builtin_ia32_vfmsubaddpd128_mask3 ((__v2df) __A,
+							(__v2df) __B,
+							(__v2df) __C,
+							(__mmask8)
+							__U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_fmsubadd_pd (__mmask8 __U, __m128d __A, __m128d __B,
+		       __m128d __C)
+{
+  return (__m128d) __builtin_ia32_vfmaddsubpd128_maskz ((__v2df) __A,
+							(__v2df) __B,
+							-(__v2df) __C,
+							(__mmask8)
+							__U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_fmsubadd_ps (__m256 __A, __mmask8 __U, __m256 __B,
+			 __m256 __C)
+{
+  return (__m256) __builtin_ia32_vfmaddsubps256_mask ((__v8sf) __A,
+						      (__v8sf) __B,
+						      -(__v8sf) __C,
+						      (__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask3_fmsubadd_ps (__m256 __A, __m256 __B, __m256 __C,
+			  __mmask8 __U)
+{
+  return (__m256) __builtin_ia32_vfmsubaddps256_mask3 ((__v8sf) __A,
+						       (__v8sf) __B,
+						       (__v8sf) __C,
+						       (__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_fmsubadd_ps (__mmask8 __U, __m256 __A, __m256 __B,
+			  __m256 __C)
+{
+  return (__m256) __builtin_ia32_vfmaddsubps256_maskz ((__v8sf) __A,
+						       (__v8sf) __B,
+						       -(__v8sf) __C,
+						       (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_fmsubadd_ps (__m128 __A, __mmask8 __U, __m128 __B, __m128 __C)
+{
+  return (__m128) __builtin_ia32_vfmaddsubps128_mask ((__v4sf) __A,
+						      (__v4sf) __B,
+						      -(__v4sf) __C,
+						      (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask3_fmsubadd_ps (__m128 __A, __m128 __B, __m128 __C,
+		       __mmask8 __U)
+{
+  return (__m128) __builtin_ia32_vfmsubaddps128_mask3 ((__v4sf) __A,
+						       (__v4sf) __B,
+						       (__v4sf) __C,
+						       (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_fmsubadd_ps (__mmask8 __U, __m128 __A, __m128 __B,
+		       __m128 __C)
+{
+  return (__m128) __builtin_ia32_vfmaddsubps128_maskz ((__v4sf) __A,
+						       (__v4sf) __B,
+						       -(__v4sf) __C,
+						       (__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_fnmadd_pd (__m256d __A, __mmask8 __U, __m256d __B,
+		       __m256d __C)
+{
+  return (__m256d) __builtin_ia32_vfnmaddpd256_mask ((__v4df) __A,
+						     (__v4df) __B,
+						     (__v4df) __C,
+						     (__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask3_fnmadd_pd (__m256d __A, __m256d __B, __m256d __C,
+			__mmask8 __U)
+{
+  return (__m256d) __builtin_ia32_vfmaddpd256_mask3 (-(__v4df) __A,
+						     (__v4df) __B,
+						     (__v4df) __C,
+						     (__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_fnmadd_pd (__mmask8 __U, __m256d __A, __m256d __B,
+			__m256d __C)
+{
+  return (__m256d) __builtin_ia32_vfmaddpd256_maskz (-(__v4df) __A,
+						     (__v4df) __B,
+						     (__v4df) __C,
+						     (__mmask8) __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_fnmadd_pd (__m128d __A, __mmask8 __U, __m128d __B,
+		    __m128d __C)
+{
+  return (__m128d) __builtin_ia32_vfnmaddpd128_mask ((__v2df) __A,
+						     (__v2df) __B,
+						     (__v2df) __C,
+						     (__mmask8) __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask3_fnmadd_pd (__m128d __A, __m128d __B, __m128d __C,
+		     __mmask8 __U)
+{
+  return (__m128d) __builtin_ia32_vfmaddpd128_mask3 (-(__v2df) __A,
+						     (__v2df) __B,
+						     (__v2df) __C,
+						     (__mmask8) __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_fnmadd_pd (__mmask8 __U, __m128d __A, __m128d __B,
+		     __m128d __C)
+{
+  return (__m128d) __builtin_ia32_vfmaddpd128_maskz (-(__v2df) __A,
+						     (__v2df) __B,
+						     (__v2df) __C,
+						     (__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_fnmadd_ps (__m256 __A, __mmask8 __U, __m256 __B,
+		       __m256 __C)
+{
+  return (__m256) __builtin_ia32_vfnmaddps256_mask ((__v8sf) __A,
+						    (__v8sf) __B,
+						    (__v8sf) __C,
+						    (__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask3_fnmadd_ps (__m256 __A, __m256 __B, __m256 __C,
+			__mmask8 __U)
+{
+  return (__m256) __builtin_ia32_vfmaddps256_mask3 (-(__v8sf) __A,
+						    (__v8sf) __B,
+						    (__v8sf) __C,
+						    (__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_fnmadd_ps (__mmask8 __U, __m256 __A, __m256 __B,
+			__m256 __C)
+{
+  return (__m256) __builtin_ia32_vfmaddps256_maskz (-(__v8sf) __A,
+						    (__v8sf) __B,
+						    (__v8sf) __C,
+						    (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_fnmadd_ps (__m128 __A, __mmask8 __U, __m128 __B, __m128 __C)
+{
+  return (__m128) __builtin_ia32_vfnmaddps128_mask ((__v4sf) __A,
+						    (__v4sf) __B,
+						    (__v4sf) __C,
+						    (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask3_fnmadd_ps (__m128 __A, __m128 __B, __m128 __C, __mmask8 __U)
+{
+  return (__m128) __builtin_ia32_vfmaddps128_mask3 (-(__v4sf) __A,
+						    (__v4sf) __B,
+						    (__v4sf) __C,
+						    (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_fnmadd_ps (__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
+{
+  return (__m128) __builtin_ia32_vfmaddps128_maskz (-(__v4sf) __A,
+						    (__v4sf) __B,
+						    (__v4sf) __C,
+						    (__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_fnmsub_pd (__m256d __A, __mmask8 __U, __m256d __B,
+		       __m256d __C)
+{
+  return (__m256d) __builtin_ia32_vfnmsubpd256_mask ((__v4df) __A,
+						     (__v4df) __B,
+						     (__v4df) __C,
+						     (__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask3_fnmsub_pd (__m256d __A, __m256d __B, __m256d __C,
+			__mmask8 __U)
+{
+  return (__m256d) __builtin_ia32_vfnmsubpd256_mask3 ((__v4df) __A,
+						      (__v4df) __B,
+						      (__v4df) __C,
+						      (__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_fnmsub_pd (__mmask8 __U, __m256d __A, __m256d __B,
+			__m256d __C)
+{
+  return (__m256d) __builtin_ia32_vfmaddpd256_maskz (-(__v4df) __A,
+						     (__v4df) __B,
+						     -(__v4df) __C,
+						     (__mmask8) __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_fnmsub_pd (__m128d __A, __mmask8 __U, __m128d __B,
+		    __m128d __C)
+{
+  return (__m128d) __builtin_ia32_vfnmsubpd128_mask ((__v2df) __A,
+						     (__v2df) __B,
+						     (__v2df) __C,
+						     (__mmask8) __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask3_fnmsub_pd (__m128d __A, __m128d __B, __m128d __C,
+		     __mmask8 __U)
+{
+  return (__m128d) __builtin_ia32_vfnmsubpd128_mask3 ((__v2df) __A,
+						      (__v2df) __B,
+						      (__v2df) __C,
+						      (__mmask8) __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_fnmsub_pd (__mmask8 __U, __m128d __A, __m128d __B,
+		     __m128d __C)
+{
+  return (__m128d) __builtin_ia32_vfmaddpd128_maskz (-(__v2df) __A,
+						     (__v2df) __B,
+						     -(__v2df) __C,
+						     (__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_fnmsub_ps (__m256 __A, __mmask8 __U, __m256 __B,
+		       __m256 __C)
+{
+  return (__m256) __builtin_ia32_vfnmsubps256_mask ((__v8sf) __A,
+						    (__v8sf) __B,
+						    (__v8sf) __C,
+						    (__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask3_fnmsub_ps (__m256 __A, __m256 __B, __m256 __C,
+			__mmask8 __U)
+{
+  return (__m256) __builtin_ia32_vfnmsubps256_mask3 ((__v8sf) __A,
+						     (__v8sf) __B,
+						     (__v8sf) __C,
+						     (__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_fnmsub_ps (__mmask8 __U, __m256 __A, __m256 __B,
+			__m256 __C)
+{
+  return (__m256) __builtin_ia32_vfmaddps256_maskz (-(__v8sf) __A,
+						    (__v8sf) __B,
+						    -(__v8sf) __C,
+						    (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_fnmsub_ps (__m128 __A, __mmask8 __U, __m128 __B, __m128 __C)
+{
+  return (__m128) __builtin_ia32_vfnmsubps128_mask ((__v4sf) __A,
+						    (__v4sf) __B,
+						    (__v4sf) __C,
+						    (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask3_fnmsub_ps (__m128 __A, __m128 __B, __m128 __C, __mmask8 __U)
+{
+  return (__m128) __builtin_ia32_vfnmsubps128_mask3 ((__v4sf) __A,
+						     (__v4sf) __B,
+						     (__v4sf) __C,
+						     (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_fnmsub_ps (__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
+{
+  return (__m128) __builtin_ia32_vfmaddps128_maskz (-(__v4sf) __A,
+						    (__v4sf) __B,
+						    -(__v4sf) __C,
+						    (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_and_epi32 (__m128i __W, __mmask8 __U, __m128i __A,
+		    __m128i __B)
+{
+  return (__m128i) __builtin_ia32_pandd128_mask ((__v4si) __A,
+						 (__v4si) __B,
+						 (__v4si) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_and_epi32 (__mmask8 __U, __m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_pandd128_mask ((__v4si) __A,
+						 (__v4si) __B,
+						 (__v4si)
+						 _mm_setzero_si128 (),
+						 (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_andnot_epi32 (__m256i __W, __mmask8 __U, __m256i __A,
+			  __m256i __B)
+{
+  return (__m256i) __builtin_ia32_pandnd256_mask ((__v8si) __A,
+						  (__v8si) __B,
+						  (__v8si) __W,
+						  (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_andnot_epi32 (__mmask8 __U, __m256i __A, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_pandnd256_mask ((__v8si) __A,
+						  (__v8si) __B,
+						  (__v8si)
+						  _mm256_setzero_si256 (),
+						  (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_andnot_epi32 (__m128i __W, __mmask8 __U, __m128i __A,
+		       __m128i __B)
+{
+  return (__m128i) __builtin_ia32_pandnd128_mask ((__v4si) __A,
+						  (__v4si) __B,
+						  (__v4si) __W,
+						  (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_andnot_epi32 (__mmask8 __U, __m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_pandnd128_mask ((__v4si) __A,
+						  (__v4si) __B,
+						  (__v4si)
+						  _mm_setzero_si128 (),
+						  (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_or_epi32 (__m256i __W, __mmask8 __U, __m256i __A,
+		      __m256i __B)
+{
+  return (__m256i) __builtin_ia32_pord256_mask ((__v8si) __A,
+						(__v8si) __B,
+						(__v8si) __W,
+						(__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_or_epi32 (__mmask8 __U, __m256i __A, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_pord256_mask ((__v8si) __A,
+						(__v8si) __B,
+						(__v8si)
+						_mm256_setzero_si256 (),
+						(__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_or_epi32 (__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_pord128_mask ((__v4si) __A,
+						(__v4si) __B,
+						(__v4si) __W,
+						(__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_or_epi32 (__mmask8 __U, __m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_pord128_mask ((__v4si) __A,
+						(__v4si) __B,
+						(__v4si)
+						_mm_setzero_si128 (),
+						(__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_xor_epi32 (__m256i __W, __mmask8 __U, __m256i __A,
+		       __m256i __B)
+{
+  return (__m256i) __builtin_ia32_pxord256_mask ((__v8si) __A,
+						 (__v8si) __B,
+						 (__v8si) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_xor_epi32 (__mmask8 __U, __m256i __A, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_pxord256_mask ((__v8si) __A,
+						 (__v8si) __B,
+						 (__v8si)
+						 _mm256_setzero_si256 (),
+						 (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_xor_epi32 (__m128i __W, __mmask8 __U, __m128i __A,
+		    __m128i __B)
+{
+  return (__m128i) __builtin_ia32_pxord128_mask ((__v4si) __A,
+						 (__v4si) __B,
+						 (__v4si) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_xor_epi32 (__mmask8 __U, __m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_pxord128_mask ((__v4si) __A,
+						 (__v4si) __B,
+						 (__v4si)
+						 _mm_setzero_si128 (),
+						 (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cvtpd_ps (__m128 __W, __mmask8 __U, __m128d __A)
+{
+  return (__m128) __builtin_ia32_cvtpd2ps_mask ((__v2df) __A,
+						(__v4sf) __W,
+						(__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_cvtpd_ps (__mmask8 __U, __m128d __A)
+{
+  return (__m128) __builtin_ia32_cvtpd2ps_mask ((__v2df) __A,
+						(__v4sf)
+						_mm_setzero_ps (),
+						(__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cvtpd_ps (__m128 __W, __mmask8 __U, __m256d __A)
+{
+  return (__m128) __builtin_ia32_cvtpd2ps256_mask ((__v4df) __A,
+						   (__v4sf) __W,
+						   (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_cvtpd_ps (__mmask8 __U, __m256d __A)
+{
+  return (__m128) __builtin_ia32_cvtpd2ps256_mask ((__v4df) __A,
+						   (__v4sf)
+						   _mm_setzero_ps (),
+						   (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cvtps_epi32 (__m256i __W, __mmask8 __U, __m256 __A)
+{
+  return (__m256i) __builtin_ia32_cvtps2dq256_mask ((__v8sf) __A,
+						    (__v8si) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_cvtps_epi32 (__mmask8 __U, __m256 __A)
+{
+  return (__m256i) __builtin_ia32_cvtps2dq256_mask ((__v8sf) __A,
+						    (__v8si)
+						    _mm256_setzero_si256 (),
+						    (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cvtps_epi32 (__m128i __W, __mmask8 __U, __m128 __A)
+{
+  return (__m128i) __builtin_ia32_cvtps2dq128_mask ((__v4sf) __A,
+						    (__v4si) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_cvtps_epi32 (__mmask8 __U, __m128 __A)
+{
+  return (__m128i) __builtin_ia32_cvtps2dq128_mask ((__v4sf) __A,
+						    (__v4si)
+						    _mm_setzero_si128 (),
+						    (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cvtps_epu32 (__m256 __A)
+{
+  return (__m256i) __builtin_ia32_cvtps2udq256_mask ((__v8sf) __A,
+						     (__v8si)
+						     _mm256_setzero_si256 (),
+						     (__mmask8) -1);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cvtps_epu32 (__m256i __W, __mmask8 __U, __m256 __A)
+{
+  return (__m256i) __builtin_ia32_cvtps2udq256_mask ((__v8sf) __A,
+						     (__v8si) __W,
+						     (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_cvtps_epu32 (__mmask8 __U, __m256 __A)
+{
+  return (__m256i) __builtin_ia32_cvtps2udq256_mask ((__v8sf) __A,
+						     (__v8si)
+						     _mm256_setzero_si256 (),
+						     (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtps_epu32 (__m128 __A)
+{
+  return (__m128i) __builtin_ia32_cvtps2udq128_mask ((__v4sf) __A,
+						     (__v4si)
+						     _mm_setzero_si128 (),
+						     (__mmask8) -1);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cvtps_epu32 (__m128i __W, __mmask8 __U, __m128 __A)
+{
+  return (__m128i) __builtin_ia32_cvtps2udq128_mask ((__v4sf) __A,
+						     (__v4si) __W,
+						     (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_cvtps_epu32 (__mmask8 __U, __m128 __A)
+{
+  return (__m128i) __builtin_ia32_cvtps2udq128_mask ((__v4sf) __A,
+						     (__v4si)
+						     _mm_setzero_si128 (),
+						     (__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_movedup_pd (__m256d __W, __mmask8 __U, __m256d __A)
+{
+  return (__m256d) __builtin_ia32_movddup256_mask ((__v4df) __A,
+						   (__v4df) __W,
+						   (__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_movedup_pd (__mmask8 __U, __m256d __A)
+{
+  return (__m256d) __builtin_ia32_movddup256_mask ((__v4df) __A,
+						   (__v4df)
+						   _mm256_setzero_pd (),
+						   (__mmask8) __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_movedup_pd (__m128d __W, __mmask8 __U, __m128d __A)
+{
+  return (__m128d) __builtin_ia32_movddup128_mask ((__v2df) __A,
+						   (__v2df) __W,
+						   (__mmask8) __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_movedup_pd (__mmask8 __U, __m128d __A)
+{
+  return (__m128d) __builtin_ia32_movddup128_mask ((__v2df) __A,
+						   (__v2df)
+						   _mm_setzero_pd (),
+						   (__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_movehdup_ps (__m256 __W, __mmask8 __U, __m256 __A)
+{
+  return (__m256) __builtin_ia32_movshdup256_mask ((__v8sf) __A,
+						   (__v8sf) __W,
+						   (__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_movehdup_ps (__mmask8 __U, __m256 __A)
+{
+  return (__m256) __builtin_ia32_movshdup256_mask ((__v8sf) __A,
+						   (__v8sf)
+						   _mm256_setzero_ps (),
+						   (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_movehdup_ps (__m128 __W, __mmask8 __U, __m128 __A)
+{
+  return (__m128) __builtin_ia32_movshdup128_mask ((__v4sf) __A,
+						   (__v4sf) __W,
+						   (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_movehdup_ps (__mmask8 __U, __m128 __A)
+{
+  return (__m128) __builtin_ia32_movshdup128_mask ((__v4sf) __A,
+						   (__v4sf)
+						   _mm_setzero_ps (),
+						   (__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_moveldup_ps (__m256 __W, __mmask8 __U, __m256 __A)
+{
+  return (__m256) __builtin_ia32_movsldup256_mask ((__v8sf) __A,
+						   (__v8sf) __W,
+						   (__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_moveldup_ps (__mmask8 __U, __m256 __A)
+{
+  return (__m256) __builtin_ia32_movsldup256_mask ((__v8sf) __A,
+						   (__v8sf)
+						   _mm256_setzero_ps (),
+						   (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_moveldup_ps (__m128 __W, __mmask8 __U, __m128 __A)
+{
+  return (__m128) __builtin_ia32_movsldup128_mask ((__v4sf) __A,
+						   (__v4sf) __W,
+						   (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_moveldup_ps (__mmask8 __U, __m128 __A)
+{
+  return (__m128) __builtin_ia32_movsldup128_mask ((__v4sf) __A,
+						   (__v4sf)
+						   _mm_setzero_ps (),
+						   (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_unpackhi_epi32 (__m128i __W, __mmask8 __U, __m128i __A,
+			 __m128i __B)
+{
+  return (__m128i) __builtin_ia32_punpckhdq128_mask ((__v4si) __A,
+						     (__v4si) __B,
+						     (__v4si) __W,
+						     (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_unpackhi_epi32 (__mmask8 __U, __m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_punpckhdq128_mask ((__v4si) __A,
+						     (__v4si) __B,
+						     (__v4si)
+						     _mm_setzero_si128 (),
+						     (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_unpackhi_epi32 (__m256i __W, __mmask8 __U, __m256i __A,
+			    __m256i __B)
+{
+  return (__m256i) __builtin_ia32_punpckhdq256_mask ((__v8si) __A,
+						     (__v8si) __B,
+						     (__v8si) __W,
+						     (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_unpackhi_epi32 (__mmask8 __U, __m256i __A, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_punpckhdq256_mask ((__v8si) __A,
+						     (__v8si) __B,
+						     (__v8si)
+						     _mm256_setzero_si256 (),
+						     (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_unpackhi_epi64 (__m128i __W, __mmask8 __U, __m128i __A,
+			 __m128i __B)
+{
+  return (__m128i) __builtin_ia32_punpckhqdq128_mask ((__v2di) __A,
+						      (__v2di) __B,
+						      (__v2di) __W,
+						      (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_unpackhi_epi64 (__mmask8 __U, __m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_punpckhqdq128_mask ((__v2di) __A,
+						      (__v2di) __B,
+						      (__v2di)
+						      _mm_setzero_di (),
+						      (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_unpackhi_epi64 (__m256i __W, __mmask8 __U, __m256i __A,
+			    __m256i __B)
+{
+  return (__m256i) __builtin_ia32_punpckhqdq256_mask ((__v4di) __A,
+						      (__v4di) __B,
+						      (__v4di) __W,
+						      (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_unpackhi_epi64 (__mmask8 __U, __m256i __A, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_punpckhqdq256_mask ((__v4di) __A,
+						      (__v4di) __B,
+						      (__v4di)
+						      _mm256_setzero_si256 (),
+						      (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_unpacklo_epi32 (__m128i __W, __mmask8 __U, __m128i __A,
+			 __m128i __B)
+{
+  return (__m128i) __builtin_ia32_punpckldq128_mask ((__v4si) __A,
+						     (__v4si) __B,
+						     (__v4si) __W,
+						     (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_unpacklo_epi32 (__mmask8 __U, __m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_punpckldq128_mask ((__v4si) __A,
+						     (__v4si) __B,
+						     (__v4si)
+						     _mm_setzero_si128 (),
+						     (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_unpacklo_epi32 (__m256i __W, __mmask8 __U, __m256i __A,
+			    __m256i __B)
+{
+  return (__m256i) __builtin_ia32_punpckldq256_mask ((__v8si) __A,
+						     (__v8si) __B,
+						     (__v8si) __W,
+						     (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_unpacklo_epi32 (__mmask8 __U, __m256i __A, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_punpckldq256_mask ((__v8si) __A,
+						     (__v8si) __B,
+						     (__v8si)
+						     _mm256_setzero_si256 (),
+						     (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_unpacklo_epi64 (__m128i __W, __mmask8 __U, __m128i __A,
+			 __m128i __B)
+{
+  return (__m128i) __builtin_ia32_punpcklqdq128_mask ((__v2di) __A,
+						      (__v2di) __B,
+						      (__v2di) __W,
+						      (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_unpacklo_epi64 (__mmask8 __U, __m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_punpcklqdq128_mask ((__v2di) __A,
+						      (__v2di) __B,
+						      (__v2di)
+						      _mm_setzero_di (),
+						      (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_unpacklo_epi64 (__m256i __W, __mmask8 __U, __m256i __A,
+			    __m256i __B)
+{
+  return (__m256i) __builtin_ia32_punpcklqdq256_mask ((__v4di) __A,
+						      (__v4di) __B,
+						      (__v4di) __W,
+						      (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_unpacklo_epi64 (__mmask8 __U, __m256i __A, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_punpcklqdq256_mask ((__v4di) __A,
+						      (__v4di) __B,
+						      (__v4di)
+						      _mm256_setzero_si256 (),
+						      (__mmask8) __U);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpeq_epu32_mask (__m128i __A, __m128i __B)
+{
+  return (__mmask8) __builtin_ia32_ucmpd128_mask ((__v4si) __A,
+						   (__v4si) __B, 0,
+						   (__mmask8) -1);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpeq_epi32_mask (__m128i __A, __m128i __B)
+{
+  return (__mmask8) __builtin_ia32_pcmpeqd128_mask ((__v4si) __A,
+						    (__v4si) __B,
+						    (__mmask8) -1);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cmpeq_epu32_mask (__mmask8 __U, __m128i __A, __m128i __B)
+{
+  return (__mmask8) __builtin_ia32_ucmpd128_mask ((__v4si) __A,
+						   (__v4si) __B, 0, __U);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cmpeq_epi32_mask (__mmask8 __U, __m128i __A, __m128i __B)
+{
+  return (__mmask8) __builtin_ia32_pcmpeqd128_mask ((__v4si) __A,
+						    (__v4si) __B, __U);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cmpeq_epu32_mask (__m256i __A, __m256i __B)
+{
+  return (__mmask8) __builtin_ia32_ucmpd256_mask ((__v8si) __A,
+						   (__v8si) __B, 0,
+						   (__mmask8) -1);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cmpeq_epi32_mask (__m256i __A, __m256i __B)
+{
+  return (__mmask8) __builtin_ia32_pcmpeqd256_mask ((__v8si) __A,
+						    (__v8si) __B,
+						    (__mmask8) -1);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cmpeq_epu32_mask (__mmask8 __U, __m256i __A, __m256i __B)
+{
+  return (__mmask8) __builtin_ia32_ucmpd256_mask ((__v8si) __A,
+						   (__v8si) __B, 0, __U);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cmpeq_epi32_mask (__mmask8 __U, __m256i __A, __m256i __B)
+{
+  return (__mmask8) __builtin_ia32_pcmpeqd256_mask ((__v8si) __A,
+						    (__v8si) __B, __U);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpeq_epu64_mask (__m128i __A, __m128i __B)
+{
+  return (__mmask8) __builtin_ia32_ucmpq128_mask ((__v2di) __A,
+						   (__v2di) __B, 0,
+						   (__mmask8) -1);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpeq_epi64_mask (__m128i __A, __m128i __B)
+{
+  return (__mmask8) __builtin_ia32_pcmpeqq128_mask ((__v2di) __A,
+						    (__v2di) __B,
+						    (__mmask8) -1);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cmpeq_epu64_mask (__mmask8 __U, __m128i __A, __m128i __B)
+{
+  return (__mmask8) __builtin_ia32_ucmpq128_mask ((__v2di) __A,
+						   (__v2di) __B, 0, __U);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cmpeq_epi64_mask (__mmask8 __U, __m128i __A, __m128i __B)
+{
+  return (__mmask8) __builtin_ia32_pcmpeqq128_mask ((__v2di) __A,
+						    (__v2di) __B, __U);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cmpeq_epu64_mask (__m256i __A, __m256i __B)
+{
+  return (__mmask8) __builtin_ia32_ucmpq256_mask ((__v4di) __A,
+						   (__v4di) __B, 0,
+						   (__mmask8) -1);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cmpeq_epi64_mask (__m256i __A, __m256i __B)
+{
+  return (__mmask8) __builtin_ia32_pcmpeqq256_mask ((__v4di) __A,
+						    (__v4di) __B,
+						    (__mmask8) -1);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cmpeq_epu64_mask (__mmask8 __U, __m256i __A, __m256i __B)
+{
+  return (__mmask8) __builtin_ia32_ucmpq256_mask ((__v4di) __A,
+						   (__v4di) __B, 0, __U);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cmpeq_epi64_mask (__mmask8 __U, __m256i __A, __m256i __B)
+{
+  return (__mmask8) __builtin_ia32_pcmpeqq256_mask ((__v4di) __A,
+						    (__v4di) __B, __U);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpgt_epu32_mask (__m128i __A, __m128i __B)
+{
+  return (__mmask8) __builtin_ia32_ucmpd128_mask ((__v4si) __A,
+						   (__v4si) __B, 6,
+						   (__mmask8) -1);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpgt_epi32_mask (__m128i __A, __m128i __B)
+{
+  return (__mmask8) __builtin_ia32_pcmpgtd128_mask ((__v4si) __A,
+						    (__v4si) __B,
+						    (__mmask8) -1);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cmpgt_epu32_mask (__mmask8 __U, __m128i __A, __m128i __B)
+{
+  return (__mmask8) __builtin_ia32_ucmpd128_mask ((__v4si) __A,
+						   (__v4si) __B, 6, __U);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cmpgt_epi32_mask (__mmask8 __U, __m128i __A, __m128i __B)
+{
+  return (__mmask8) __builtin_ia32_pcmpgtd128_mask ((__v4si) __A,
+						    (__v4si) __B, __U);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cmpgt_epu32_mask (__m256i __A, __m256i __B)
+{
+  return (__mmask8) __builtin_ia32_ucmpd256_mask ((__v8si) __A,
+						   (__v8si) __B, 6,
+						   (__mmask8) -1);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cmpgt_epi32_mask (__m256i __A, __m256i __B)
+{
+  return (__mmask8) __builtin_ia32_pcmpgtd256_mask ((__v8si) __A,
+						    (__v8si) __B,
+						    (__mmask8) -1);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cmpgt_epu32_mask (__mmask8 __U, __m256i __A, __m256i __B)
+{
+  return (__mmask8) __builtin_ia32_ucmpd256_mask ((__v8si) __A,
+						   (__v8si) __B, 6, __U);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cmpgt_epi32_mask (__mmask8 __U, __m256i __A, __m256i __B)
+{
+  return (__mmask8) __builtin_ia32_pcmpgtd256_mask ((__v8si) __A,
+						    (__v8si) __B, __U);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpgt_epu64_mask (__m128i __A, __m128i __B)
+{
+  return (__mmask8) __builtin_ia32_ucmpq128_mask ((__v2di) __A,
+						   (__v2di) __B, 6,
+						   (__mmask8) -1);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpgt_epi64_mask (__m128i __A, __m128i __B)
+{
+  return (__mmask8) __builtin_ia32_pcmpgtq128_mask ((__v2di) __A,
+						    (__v2di) __B,
+						    (__mmask8) -1);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cmpgt_epu64_mask (__mmask8 __U, __m128i __A, __m128i __B)
+{
+  return (__mmask8) __builtin_ia32_ucmpq128_mask ((__v2di) __A,
+						   (__v2di) __B, 6, __U);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cmpgt_epi64_mask (__mmask8 __U, __m128i __A, __m128i __B)
+{
+  return (__mmask8) __builtin_ia32_pcmpgtq128_mask ((__v2di) __A,
+						    (__v2di) __B, __U);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cmpgt_epu64_mask (__m256i __A, __m256i __B)
+{
+  return (__mmask8) __builtin_ia32_ucmpq256_mask ((__v4di) __A,
+						   (__v4di) __B, 6,
+						   (__mmask8) -1);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cmpgt_epi64_mask (__m256i __A, __m256i __B)
+{
+  return (__mmask8) __builtin_ia32_pcmpgtq256_mask ((__v4di) __A,
+						    (__v4di) __B,
+						    (__mmask8) -1);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cmpgt_epu64_mask (__mmask8 __U, __m256i __A, __m256i __B)
+{
+  return (__mmask8) __builtin_ia32_ucmpq256_mask ((__v4di) __A,
+						   (__v4di) __B, 6, __U);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cmpgt_epi64_mask (__mmask8 __U, __m256i __A, __m256i __B)
+{
+  return (__mmask8) __builtin_ia32_pcmpgtq256_mask ((__v4di) __A,
+						    (__v4di) __B, __U);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_test_epi32_mask (__m128i __A, __m128i __B)
+{
+  return (__mmask8) __builtin_ia32_ptestmd128 ((__v4si) __A,
+					       (__v4si) __B,
+					       (__mmask8) -1);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_test_epi32_mask (__mmask8 __U, __m128i __A, __m128i __B)
+{
+  return (__mmask8) __builtin_ia32_ptestmd128 ((__v4si) __A,
+					       (__v4si) __B, __U);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_test_epi32_mask (__m256i __A, __m256i __B)
+{
+  return (__mmask8) __builtin_ia32_ptestmd256 ((__v8si) __A,
+					       (__v8si) __B,
+					       (__mmask8) -1);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_test_epi32_mask (__mmask8 __U, __m256i __A, __m256i __B)
+{
+  return (__mmask8) __builtin_ia32_ptestmd256 ((__v8si) __A,
+					       (__v8si) __B, __U);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_test_epi64_mask (__m128i __A, __m128i __B)
+{
+  return (__mmask8) __builtin_ia32_ptestmq128 ((__v2di) __A,
+					       (__v2di) __B,
+					       (__mmask8) -1);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_test_epi64_mask (__mmask8 __U, __m128i __A, __m128i __B)
+{
+  return (__mmask8) __builtin_ia32_ptestmq128 ((__v2di) __A,
+					       (__v2di) __B, __U);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_test_epi64_mask (__m256i __A, __m256i __B)
+{
+  return (__mmask8) __builtin_ia32_ptestmq256 ((__v4di) __A,
+					       (__v4di) __B,
+					       (__mmask8) -1);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_test_epi64_mask (__mmask8 __U, __m256i __A, __m256i __B)
+{
+  return (__mmask8) __builtin_ia32_ptestmq256 ((__v4di) __A,
+					       (__v4di) __B, __U);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_testn_epi32_mask (__m128i __A, __m128i __B)
+{
+  return (__mmask8) __builtin_ia32_ptestnmd128 ((__v4si) __A,
+						(__v4si) __B,
+						(__mmask8) -1);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_testn_epi32_mask (__mmask8 __U, __m128i __A, __m128i __B)
+{
+  return (__mmask8) __builtin_ia32_ptestnmd128 ((__v4si) __A,
+						(__v4si) __B, __U);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_testn_epi32_mask (__m256i __A, __m256i __B)
+{
+  return (__mmask8) __builtin_ia32_ptestnmd256 ((__v8si) __A,
+						(__v8si) __B,
+						(__mmask8) -1);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_testn_epi32_mask (__mmask8 __U, __m256i __A, __m256i __B)
+{
+  return (__mmask8) __builtin_ia32_ptestnmd256 ((__v8si) __A,
+						(__v8si) __B, __U);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_testn_epi64_mask (__m128i __A, __m128i __B)
+{
+  return (__mmask8) __builtin_ia32_ptestnmq128 ((__v2di) __A,
+						(__v2di) __B,
+						(__mmask8) -1);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_testn_epi64_mask (__mmask8 __U, __m128i __A, __m128i __B)
+{
+  return (__mmask8) __builtin_ia32_ptestnmq128 ((__v2di) __A,
+						(__v2di) __B, __U);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_testn_epi64_mask (__m256i __A, __m256i __B)
+{
+  return (__mmask8) __builtin_ia32_ptestnmq256 ((__v4di) __A,
+						(__v4di) __B,
+						(__mmask8) -1);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_testn_epi64_mask (__mmask8 __U, __m256i __A, __m256i __B)
+{
+  return (__mmask8) __builtin_ia32_ptestnmq256 ((__v4di) __A,
+						(__v4di) __B, __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_compress_pd (__m256d __W, __mmask8 __U, __m256d __A)
+{
+  return (__m256d) __builtin_ia32_compressdf256_mask ((__v4df) __A,
+						      (__v4df) __W,
+						      (__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_compress_pd (__mmask8 __U, __m256d __A)
+{
+  return (__m256d) __builtin_ia32_compressdf256_mask ((__v4df) __A,
+						      (__v4df)
+						      _mm256_setzero_pd (),
+						      (__mmask8) __U);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_compressstoreu_pd (void *__P, __mmask8 __U, __m256d __A)
+{
+  __builtin_ia32_compressstoredf256_mask ((__v4df *) __P,
+					  (__v4df) __A,
+					  (__mmask8) __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_compress_pd (__m128d __W, __mmask8 __U, __m128d __A)
+{
+  return (__m128d) __builtin_ia32_compressdf128_mask ((__v2df) __A,
+						      (__v2df) __W,
+						      (__mmask8) __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_compress_pd (__mmask8 __U, __m128d __A)
+{
+  return (__m128d) __builtin_ia32_compressdf128_mask ((__v2df) __A,
+						      (__v2df)
+						      _mm_setzero_pd (),
+						      (__mmask8) __U);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_compressstoreu_pd (void *__P, __mmask8 __U, __m128d __A)
+{
+  __builtin_ia32_compressstoredf128_mask ((__v2df *) __P,
+					  (__v2df) __A,
+					  (__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_compress_ps (__m256 __W, __mmask8 __U, __m256 __A)
+{
+  return (__m256) __builtin_ia32_compresssf256_mask ((__v8sf) __A,
+						     (__v8sf) __W,
+						     (__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_compress_ps (__mmask8 __U, __m256 __A)
+{
+  return (__m256) __builtin_ia32_compresssf256_mask ((__v8sf) __A,
+						     (__v8sf)
+						     _mm256_setzero_ps (),
+						     (__mmask8) __U);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_compressstoreu_ps (void *__P, __mmask8 __U, __m256 __A)
+{
+  __builtin_ia32_compressstoresf256_mask ((__v8sf *) __P,
+					  (__v8sf) __A,
+					  (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_compress_ps (__m128 __W, __mmask8 __U, __m128 __A)
+{
+  return (__m128) __builtin_ia32_compresssf128_mask ((__v4sf) __A,
+						     (__v4sf) __W,
+						     (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_compress_ps (__mmask8 __U, __m128 __A)
+{
+  return (__m128) __builtin_ia32_compresssf128_mask ((__v4sf) __A,
+						     (__v4sf)
+						     _mm_setzero_ps (),
+						     (__mmask8) __U);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_compressstoreu_ps (void *__P, __mmask8 __U, __m128 __A)
+{
+  __builtin_ia32_compressstoresf128_mask ((__v4sf *) __P,
+					  (__v4sf) __A,
+					  (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_compress_epi64 (__m256i __W, __mmask8 __U, __m256i __A)
+{
+  return (__m256i) __builtin_ia32_compressdi256_mask ((__v4di) __A,
+						      (__v4di) __W,
+						      (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_compress_epi64 (__mmask8 __U, __m256i __A)
+{
+  return (__m256i) __builtin_ia32_compressdi256_mask ((__v4di) __A,
+						      (__v4di)
+						      _mm256_setzero_si256 (),
+						      (__mmask8) __U);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_compressstoreu_epi64 (void *__P, __mmask8 __U, __m256i __A)
+{
+  __builtin_ia32_compressstoredi256_mask ((__v4di *) __P,
+					  (__v4di) __A,
+					  (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_compress_epi64 (__m128i __W, __mmask8 __U, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_compressdi128_mask ((__v2di) __A,
+						      (__v2di) __W,
+						      (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_compress_epi64 (__mmask8 __U, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_compressdi128_mask ((__v2di) __A,
+						      (__v2di)
+						      _mm_setzero_di (),
+						      (__mmask8) __U);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_compressstoreu_epi64 (void *__P, __mmask8 __U, __m128i __A)
+{
+  __builtin_ia32_compressstoredi128_mask ((__v2di *) __P,
+					  (__v2di) __A,
+					  (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_compress_epi32 (__m256i __W, __mmask8 __U, __m256i __A)
+{
+  return (__m256i) __builtin_ia32_compresssi256_mask ((__v8si) __A,
+						      (__v8si) __W,
+						      (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_compress_epi32 (__mmask8 __U, __m256i __A)
+{
+  return (__m256i) __builtin_ia32_compresssi256_mask ((__v8si) __A,
+						      (__v8si)
+						      _mm256_setzero_si256 (),
+						      (__mmask8) __U);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_compressstoreu_epi32 (void *__P, __mmask8 __U, __m256i __A)
+{
+  __builtin_ia32_compressstoresi256_mask ((__v8si *) __P,
+					  (__v8si) __A,
+					  (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_compress_epi32 (__m128i __W, __mmask8 __U, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_compresssi128_mask ((__v4si) __A,
+						      (__v4si) __W,
+						      (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_compress_epi32 (__mmask8 __U, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_compresssi128_mask ((__v4si) __A,
+						      (__v4si)
+						      _mm_setzero_si128 (),
+						      (__mmask8) __U);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_compressstoreu_epi32 (void *__P, __mmask8 __U, __m128i __A)
+{
+  __builtin_ia32_compressstoresi128_mask ((__v4si *) __P,
+					  (__v4si) __A,
+					  (__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_expand_pd (__m256d __W, __mmask8 __U, __m256d __A)
+{
+  return (__m256d) __builtin_ia32_expanddf256_mask ((__v4df) __A,
+						    (__v4df) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_expand_pd (__mmask8 __U, __m256d __A)
+{
+  return (__m256d) __builtin_ia32_expanddf256_maskz ((__v4df) __A,
+						     (__v4df)
+						     _mm256_setzero_pd (),
+						     (__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_expandloadu_pd (__m256d __W, __mmask8 __U, void const *__P)
+{
+  return (__m256d) __builtin_ia32_expandloaddf256_mask ((__v4df *) __P,
+							(__v4df) __W,
+							(__mmask8)
+							__U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_expandloadu_pd (__mmask8 __U, void const *__P)
+{
+  return (__m256d) __builtin_ia32_expandloaddf256_maskz ((__v4df *) __P,
+							 (__v4df)
+							 _mm256_setzero_pd (),
+							 (__mmask8)
+							 __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_expand_pd (__m128d __W, __mmask8 __U, __m128d __A)
+{
+  return (__m128d) __builtin_ia32_expanddf128_mask ((__v2df) __A,
+						    (__v2df) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_expand_pd (__mmask8 __U, __m128d __A)
+{
+  return (__m128d) __builtin_ia32_expanddf128_maskz ((__v2df) __A,
+						     (__v2df)
+						     _mm_setzero_pd (),
+						     (__mmask8) __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_expandloadu_pd (__m128d __W, __mmask8 __U, void const *__P)
+{
+  return (__m128d) __builtin_ia32_expandloaddf128_mask ((__v2df *) __P,
+							(__v2df) __W,
+							(__mmask8)
+							__U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_expandloadu_pd (__mmask8 __U, void const *__P)
+{
+  return (__m128d) __builtin_ia32_expandloaddf128_maskz ((__v2df *) __P,
+							 (__v2df)
+							 _mm_setzero_pd (),
+							 (__mmask8)
+							 __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_expand_ps (__m256 __W, __mmask8 __U, __m256 __A)
+{
+  return (__m256) __builtin_ia32_expandsf256_mask ((__v8sf) __A,
+						   (__v8sf) __W,
+						   (__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_expand_ps (__mmask8 __U, __m256 __A)
+{
+  return (__m256) __builtin_ia32_expandsf256_maskz ((__v8sf) __A,
+						    (__v8sf)
+						    _mm256_setzero_ps (),
+						    (__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_expandloadu_ps (__m256 __W, __mmask8 __U, void const *__P)
+{
+  return (__m256) __builtin_ia32_expandloadsf256_mask ((__v8sf *) __P,
+						       (__v8sf) __W,
+						       (__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_expandloadu_ps (__mmask8 __U, void const *__P)
+{
+  return (__m256) __builtin_ia32_expandloadsf256_maskz ((__v8sf *) __P,
+							(__v8sf)
+							_mm256_setzero_ps (),
+							(__mmask8)
+							__U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_expand_ps (__m128 __W, __mmask8 __U, __m128 __A)
+{
+  return (__m128) __builtin_ia32_expandsf128_mask ((__v4sf) __A,
+						   (__v4sf) __W,
+						   (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_expand_ps (__mmask8 __U, __m128 __A)
+{
+  return (__m128) __builtin_ia32_expandsf128_maskz ((__v4sf) __A,
+						    (__v4sf)
+						    _mm_setzero_ps (),
+						    (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_expandloadu_ps (__m128 __W, __mmask8 __U, void const *__P)
+{
+  return (__m128) __builtin_ia32_expandloadsf128_mask ((__v4sf *) __P,
+						       (__v4sf) __W,
+						       (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_expandloadu_ps (__mmask8 __U, void const *__P)
+{
+  return (__m128) __builtin_ia32_expandloadsf128_maskz ((__v4sf *) __P,
+							(__v4sf)
+							_mm_setzero_ps (),
+							(__mmask8)
+							__U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_expand_epi64 (__m256i __W, __mmask8 __U, __m256i __A)
+{
+  return (__m256i) __builtin_ia32_expanddi256_mask ((__v4di) __A,
+						    (__v4di) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_expand_epi64 (__mmask8 __U, __m256i __A)
+{
+  return (__m256i) __builtin_ia32_expanddi256_maskz ((__v4di) __A,
+						     (__v4di)
+						     _mm256_setzero_si256 (),
+						     (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_expandloadu_epi64 (__m256i __W, __mmask8 __U,
+			       void const *__P)
+{
+  return (__m256i) __builtin_ia32_expandloaddi256_mask ((__v4di *) __P,
+							(__v4di) __W,
+							(__mmask8)
+							__U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_expandloadu_epi64 (__mmask8 __U, void const *__P)
+{
+  return (__m256i) __builtin_ia32_expandloaddi256_maskz ((__v4di *) __P,
+							 (__v4di)
+							 _mm256_setzero_si256 (),
+							 (__mmask8)
+							 __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_expand_epi64 (__m128i __W, __mmask8 __U, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_expanddi128_mask ((__v2di) __A,
+						    (__v2di) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_expand_epi64 (__mmask8 __U, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_expanddi128_maskz ((__v2di) __A,
+						     (__v2di)
+						     _mm_setzero_si128 (),
+						     (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_expandloadu_epi64 (__m128i __W, __mmask8 __U, void const *__P)
+{
+  return (__m128i) __builtin_ia32_expandloaddi128_mask ((__v2di *) __P,
+							(__v2di) __W,
+							(__mmask8)
+							__U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_expandloadu_epi64 (__mmask8 __U, void const *__P)
+{
+  return (__m128i) __builtin_ia32_expandloaddi128_maskz ((__v2di *) __P,
+							 (__v2di)
+							 _mm_setzero_si128 (),
+							 (__mmask8)
+							 __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_expand_epi32 (__m256i __W, __mmask8 __U, __m256i __A)
+{
+  return (__m256i) __builtin_ia32_expandsi256_mask ((__v8si) __A,
+						    (__v8si) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_expand_epi32 (__mmask8 __U, __m256i __A)
+{
+  return (__m256i) __builtin_ia32_expandsi256_maskz ((__v8si) __A,
+						     (__v8si)
+						     _mm256_setzero_si256 (),
+						     (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_expandloadu_epi32 (__m256i __W, __mmask8 __U,
+			       void const *__P)
+{
+  return (__m256i) __builtin_ia32_expandloadsi256_mask ((__v8si *) __P,
+							(__v8si) __W,
+							(__mmask8)
+							__U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_expandloadu_epi32 (__mmask8 __U, void const *__P)
+{
+  return (__m256i) __builtin_ia32_expandloadsi256_maskz ((__v8si *) __P,
+							 (__v8si)
+							 _mm256_setzero_si256 (),
+							 (__mmask8)
+							 __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_expand_epi32 (__m128i __W, __mmask8 __U, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_expandsi128_mask ((__v4si) __A,
+						    (__v4si) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_expand_epi32 (__mmask8 __U, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_expandsi128_maskz ((__v4si) __A,
+						     (__v4si)
+						     _mm_setzero_si128 (),
+						     (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_expandloadu_epi32 (__m128i __W, __mmask8 __U, void const *__P)
+{
+  return (__m128i) __builtin_ia32_expandloadsi128_mask ((__v4si *) __P,
+							(__v4si) __W,
+							(__mmask8)
+							__U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_expandloadu_epi32 (__mmask8 __U, void const *__P)
+{
+  return (__m128i) __builtin_ia32_expandloadsi128_maskz ((__v4si *) __P,
+							 (__v4si)
+							 _mm_setzero_si128 (),
+							 (__mmask8)
+							 __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_permutex2var_pd (__m256d __A, __m256i __I, __m256d __B)
+{
+  return (__m256d) __builtin_ia32_vpermt2varpd256_mask ((__v4di) __I
+							/* idx */ ,
+							(__v4df) __A,
+							(__v4df) __B,
+							(__mmask8) -
+							1);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_permutex2var_pd (__m256d __A, __mmask8 __U, __m256i __I,
+			     __m256d __B)
+{
+  return (__m256d) __builtin_ia32_vpermt2varpd256_mask ((__v4di) __I
+							/* idx */ ,
+							(__v4df) __A,
+							(__v4df) __B,
+							(__mmask8)
+							__U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask2_permutex2var_pd (__m256d __A, __m256i __I, __mmask8 __U,
+			      __m256d __B)
+{
+  return (__m256d) __builtin_ia32_vpermi2varpd256_mask ((__v4df) __A,
+							(__v4di) __I
+							/* idx */ ,
+							(__v4df) __B,
+							(__mmask8)
+							__U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_permutex2var_pd (__mmask8 __U, __m256d __A, __m256i __I,
+			      __m256d __B)
+{
+  return (__m256d) __builtin_ia32_vpermt2varpd256_maskz ((__v4di) __I
+							 /* idx */ ,
+							 (__v4df) __A,
+							 (__v4df) __B,
+							 (__mmask8)
+							 __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_permutex2var_ps (__m256 __A, __m256i __I, __m256 __B)
+{
+  return (__m256) __builtin_ia32_vpermt2varps256_mask ((__v8si) __I
+						       /* idx */ ,
+						       (__v8sf) __A,
+						       (__v8sf) __B,
+						       (__mmask8) -1);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_permutex2var_ps (__m256 __A, __mmask8 __U, __m256i __I,
+			     __m256 __B)
+{
+  return (__m256) __builtin_ia32_vpermt2varps256_mask ((__v8si) __I
+						       /* idx */ ,
+						       (__v8sf) __A,
+						       (__v8sf) __B,
+						       (__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask2_permutex2var_ps (__m256 __A, __m256i __I, __mmask8 __U,
+			      __m256 __B)
+{
+  return (__m256) __builtin_ia32_vpermi2varps256_mask ((__v8sf) __A,
+						       (__v8si) __I
+						       /* idx */ ,
+						       (__v8sf) __B,
+						       (__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_permutex2var_ps (__mmask8 __U, __m256 __A, __m256i __I,
+			      __m256 __B)
+{
+  return (__m256) __builtin_ia32_vpermt2varps256_maskz ((__v8si) __I
+							/* idx */ ,
+							(__v8sf) __A,
+							(__v8sf) __B,
+							(__mmask8)
+							__U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_permutex2var_epi64 (__m128i __A, __m128i __I, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_vpermt2varq128_mask ((__v2di) __I
+						       /* idx */ ,
+						       (__v2di) __A,
+						       (__v2di) __B,
+						       (__mmask8) -1);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_permutex2var_epi64 (__m128i __A, __mmask8 __U, __m128i __I,
+			     __m128i __B)
+{
+  return (__m128i) __builtin_ia32_vpermt2varq128_mask ((__v2di) __I
+						       /* idx */ ,
+						       (__v2di) __A,
+						       (__v2di) __B,
+						       (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask2_permutex2var_epi64 (__m128i __A, __m128i __I, __mmask8 __U,
+			      __m128i __B)
+{
+  return (__m128i) __builtin_ia32_vpermi2varq128_mask ((__v2di) __A,
+						       (__v2di) __I
+						       /* idx */ ,
+						       (__v2di) __B,
+						       (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_permutex2var_epi64 (__mmask8 __U, __m128i __A, __m128i __I,
+			      __m128i __B)
+{
+  return (__m128i) __builtin_ia32_vpermt2varq128_maskz ((__v2di) __I
+							/* idx */ ,
+							(__v2di) __A,
+							(__v2di) __B,
+							(__mmask8)
+							__U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_permutex2var_epi32 (__m128i __A, __m128i __I, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_vpermt2vard128_mask ((__v4si) __I
+						       /* idx */ ,
+						       (__v4si) __A,
+						       (__v4si) __B,
+						       (__mmask8) -1);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_permutex2var_epi32 (__m128i __A, __mmask8 __U, __m128i __I,
+			     __m128i __B)
+{
+  return (__m128i) __builtin_ia32_vpermt2vard128_mask ((__v4si) __I
+						       /* idx */ ,
+						       (__v4si) __A,
+						       (__v4si) __B,
+						       (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask2_permutex2var_epi32 (__m128i __A, __m128i __I, __mmask8 __U,
+			      __m128i __B)
+{
+  return (__m128i) __builtin_ia32_vpermi2vard128_mask ((__v4si) __A,
+						       (__v4si) __I
+						       /* idx */ ,
+						       (__v4si) __B,
+						       (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_permutex2var_epi32 (__mmask8 __U, __m128i __A, __m128i __I,
+			      __m128i __B)
+{
+  return (__m128i) __builtin_ia32_vpermt2vard128_maskz ((__v4si) __I
+							/* idx */ ,
+							(__v4si) __A,
+							(__v4si) __B,
+							(__mmask8)
+							__U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_permutex2var_epi64 (__m256i __A, __m256i __I, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_vpermt2varq256_mask ((__v4di) __I
+						       /* idx */ ,
+						       (__v4di) __A,
+						       (__v4di) __B,
+						       (__mmask8) -1);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_permutex2var_epi64 (__m256i __A, __mmask8 __U, __m256i __I,
+				__m256i __B)
+{
+  return (__m256i) __builtin_ia32_vpermt2varq256_mask ((__v4di) __I
+						       /* idx */ ,
+						       (__v4di) __A,
+						       (__v4di) __B,
+						       (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask2_permutex2var_epi64 (__m256i __A, __m256i __I,
+				 __mmask8 __U, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_vpermi2varq256_mask ((__v4di) __A,
+						       (__v4di) __I
+						       /* idx */ ,
+						       (__v4di) __B,
+						       (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_permutex2var_epi64 (__mmask8 __U, __m256i __A,
+				 __m256i __I, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_vpermt2varq256_maskz ((__v4di) __I
+							/* idx */ ,
+							(__v4di) __A,
+							(__v4di) __B,
+							(__mmask8)
+							__U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_permutex2var_epi32 (__m256i __A, __m256i __I, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_vpermt2vard256_mask ((__v8si) __I
+						       /* idx */ ,
+						       (__v8si) __A,
+						       (__v8si) __B,
+						       (__mmask8) -1);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_permutex2var_epi32 (__m256i __A, __mmask8 __U, __m256i __I,
+				__m256i __B)
+{
+  return (__m256i) __builtin_ia32_vpermt2vard256_mask ((__v8si) __I
+						       /* idx */ ,
+						       (__v8si) __A,
+						       (__v8si) __B,
+						       (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask2_permutex2var_epi32 (__m256i __A, __m256i __I,
+				 __mmask8 __U, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_vpermi2vard256_mask ((__v8si) __A,
+						       (__v8si) __I
+						       /* idx */ ,
+						       (__v8si) __B,
+						       (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_permutex2var_epi32 (__mmask8 __U, __m256i __A,
+				 __m256i __I, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_vpermt2vard256_maskz ((__v8si) __I
+							/* idx */ ,
+							(__v8si) __A,
+							(__v8si) __B,
+							(__mmask8)
+							__U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_permutex2var_pd (__m128d __A, __m128i __I, __m128d __B)
+{
+  return (__m128d) __builtin_ia32_vpermt2varpd128_mask ((__v2di) __I
+							/* idx */ ,
+							(__v2df) __A,
+							(__v2df) __B,
+							(__mmask8) -
+							1);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_permutex2var_pd (__m128d __A, __mmask8 __U, __m128i __I,
+			  __m128d __B)
+{
+  return (__m128d) __builtin_ia32_vpermt2varpd128_mask ((__v2di) __I
+							/* idx */ ,
+							(__v2df) __A,
+							(__v2df) __B,
+							(__mmask8)
+							__U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask2_permutex2var_pd (__m128d __A, __m128i __I, __mmask8 __U,
+			   __m128d __B)
+{
+  return (__m128d) __builtin_ia32_vpermi2varpd128_mask ((__v2df) __A,
+							(__v2di) __I
+							/* idx */ ,
+							(__v2df) __B,
+							(__mmask8)
+							__U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_permutex2var_pd (__mmask8 __U, __m128d __A, __m128i __I,
+			   __m128d __B)
+{
+  return (__m128d) __builtin_ia32_vpermt2varpd128_maskz ((__v2di) __I
+							 /* idx */ ,
+							 (__v2df) __A,
+							 (__v2df) __B,
+							 (__mmask8)
+							 __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_permutex2var_ps (__m128 __A, __m128i __I, __m128 __B)
+{
+  return (__m128) __builtin_ia32_vpermt2varps128_mask ((__v4si) __I
+						       /* idx */ ,
+						       (__v4sf) __A,
+						       (__v4sf) __B,
+						       (__mmask8) -1);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_permutex2var_ps (__m128 __A, __mmask8 __U, __m128i __I,
+			  __m128 __B)
+{
+  return (__m128) __builtin_ia32_vpermt2varps128_mask ((__v4si) __I
+						       /* idx */ ,
+						       (__v4sf) __A,
+						       (__v4sf) __B,
+						       (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask2_permutex2var_ps (__m128 __A, __m128i __I, __mmask8 __U,
+			   __m128 __B)
+{
+  return (__m128) __builtin_ia32_vpermi2varps128_mask ((__v4sf) __A,
+						       (__v4si) __I
+						       /* idx */ ,
+						       (__v4sf) __B,
+						       (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_permutex2var_ps (__mmask8 __U, __m128 __A, __m128i __I,
+			   __m128 __B)
+{
+  return (__m128) __builtin_ia32_vpermt2varps128_maskz ((__v4si) __I
+							/* idx */ ,
+							(__v4sf) __A,
+							(__v4sf) __B,
+							(__mmask8)
+							__U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_srav_epi64 (__m128i __X, __m128i __Y)
+{
+  return (__m128i) __builtin_ia32_psravq128_mask ((__v2di) __X,
+						  (__v2di) __Y,
+						  (__v2di)
+						  _mm_setzero_di (),
+						  (__mmask8) -1);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_srav_epi64 (__m128i __W, __mmask8 __U, __m128i __X,
+		     __m128i __Y)
+{
+  return (__m128i) __builtin_ia32_psravq128_mask ((__v2di) __X,
+						  (__v2di) __Y,
+						  (__v2di) __W,
+						  (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_srav_epi64 (__mmask8 __U, __m128i __X, __m128i __Y)
+{
+  return (__m128i) __builtin_ia32_psravq128_mask ((__v2di) __X,
+						  (__v2di) __Y,
+						  (__v2di)
+						  _mm_setzero_di (),
+						  (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_sllv_epi32 (__m256i __W, __mmask8 __U, __m256i __X,
+			__m256i __Y)
+{
+  return (__m256i) __builtin_ia32_psllv8si_mask ((__v8si) __X,
+						 (__v8si) __Y,
+						 (__v8si) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_sllv_epi32 (__mmask8 __U, __m256i __X, __m256i __Y)
+{
+  return (__m256i) __builtin_ia32_psllv8si_mask ((__v8si) __X,
+						 (__v8si) __Y,
+						 (__v8si)
+						 _mm256_setzero_si256 (),
+						 (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_sllv_epi32 (__m128i __W, __mmask8 __U, __m128i __X,
+		     __m128i __Y)
+{
+  return (__m128i) __builtin_ia32_psllv4si_mask ((__v4si) __X,
+						 (__v4si) __Y,
+						 (__v4si) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_sllv_epi32 (__mmask8 __U, __m128i __X, __m128i __Y)
+{
+  return (__m128i) __builtin_ia32_psllv4si_mask ((__v4si) __X,
+						 (__v4si) __Y,
+						 (__v4si)
+						 _mm_setzero_si128 (),
+						 (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_sllv_epi64 (__m256i __W, __mmask8 __U, __m256i __X,
+			__m256i __Y)
+{
+  return (__m256i) __builtin_ia32_psllv4di_mask ((__v4di) __X,
+						 (__v4di) __Y,
+						 (__v4di) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_sllv_epi64 (__mmask8 __U, __m256i __X, __m256i __Y)
+{
+  return (__m256i) __builtin_ia32_psllv4di_mask ((__v4di) __X,
+						 (__v4di) __Y,
+						 (__v4di)
+						 _mm256_setzero_si256 (),
+						 (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_sllv_epi64 (__m128i __W, __mmask8 __U, __m128i __X,
+		     __m128i __Y)
+{
+  return (__m128i) __builtin_ia32_psllv2di_mask ((__v2di) __X,
+						 (__v2di) __Y,
+						 (__v2di) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_sllv_epi64 (__mmask8 __U, __m128i __X, __m128i __Y)
+{
+  return (__m128i) __builtin_ia32_psllv2di_mask ((__v2di) __X,
+						 (__v2di) __Y,
+						 (__v2di)
+						 _mm_setzero_di (),
+						 (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_srav_epi32 (__m256i __W, __mmask8 __U, __m256i __X,
+			__m256i __Y)
+{
+  return (__m256i) __builtin_ia32_psrav8si_mask ((__v8si) __X,
+						 (__v8si) __Y,
+						 (__v8si) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_srav_epi32 (__mmask8 __U, __m256i __X, __m256i __Y)
+{
+  return (__m256i) __builtin_ia32_psrav8si_mask ((__v8si) __X,
+						 (__v8si) __Y,
+						 (__v8si)
+						 _mm256_setzero_si256 (),
+						 (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_srav_epi32 (__m128i __W, __mmask8 __U, __m128i __X,
+		     __m128i __Y)
+{
+  return (__m128i) __builtin_ia32_psrav4si_mask ((__v4si) __X,
+						 (__v4si) __Y,
+						 (__v4si) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_srav_epi32 (__mmask8 __U, __m128i __X, __m128i __Y)
+{
+  return (__m128i) __builtin_ia32_psrav4si_mask ((__v4si) __X,
+						 (__v4si) __Y,
+						 (__v4si)
+						 _mm_setzero_si128 (),
+						 (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_srlv_epi32 (__m256i __W, __mmask8 __U, __m256i __X,
+			__m256i __Y)
+{
+  return (__m256i) __builtin_ia32_psrlv8si_mask ((__v8si) __X,
+						 (__v8si) __Y,
+						 (__v8si) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_srlv_epi32 (__mmask8 __U, __m256i __X, __m256i __Y)
+{
+  return (__m256i) __builtin_ia32_psrlv8si_mask ((__v8si) __X,
+						 (__v8si) __Y,
+						 (__v8si)
+						 _mm256_setzero_si256 (),
+						 (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_srlv_epi32 (__m128i __W, __mmask8 __U, __m128i __X,
+		     __m128i __Y)
+{
+  return (__m128i) __builtin_ia32_psrlv4si_mask ((__v4si) __X,
+						 (__v4si) __Y,
+						 (__v4si) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_srlv_epi32 (__mmask8 __U, __m128i __X, __m128i __Y)
+{
+  return (__m128i) __builtin_ia32_psrlv4si_mask ((__v4si) __X,
+						 (__v4si) __Y,
+						 (__v4si)
+						 _mm_setzero_si128 (),
+						 (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_srlv_epi64 (__m256i __W, __mmask8 __U, __m256i __X,
+			__m256i __Y)
+{
+  return (__m256i) __builtin_ia32_psrlv4di_mask ((__v4di) __X,
+						 (__v4di) __Y,
+						 (__v4di) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_srlv_epi64 (__mmask8 __U, __m256i __X, __m256i __Y)
+{
+  return (__m256i) __builtin_ia32_psrlv4di_mask ((__v4di) __X,
+						 (__v4di) __Y,
+						 (__v4di)
+						 _mm256_setzero_si256 (),
+						 (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_srlv_epi64 (__m128i __W, __mmask8 __U, __m128i __X,
+		     __m128i __Y)
+{
+  return (__m128i) __builtin_ia32_psrlv2di_mask ((__v2di) __X,
+						 (__v2di) __Y,
+						 (__v2di) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_srlv_epi64 (__mmask8 __U, __m128i __X, __m128i __Y)
+{
+  return (__m128i) __builtin_ia32_psrlv2di_mask ((__v2di) __X,
+						 (__v2di) __Y,
+						 (__v2di)
+						 _mm_setzero_di (),
+						 (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_rolv_epi32 (__m256i __A, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_prolvd256_mask ((__v8si) __A,
+						  (__v8si) __B,
+						  (__v8si)
+						  _mm256_setzero_si256 (),
+						  (__mmask8) -1);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_rolv_epi32 (__m256i __W, __mmask8 __U, __m256i __A,
+			__m256i __B)
+{
+  return (__m256i) __builtin_ia32_prolvd256_mask ((__v8si) __A,
+						  (__v8si) __B,
+						  (__v8si) __W,
+						  (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_rolv_epi32 (__mmask8 __U, __m256i __A, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_prolvd256_mask ((__v8si) __A,
+						  (__v8si) __B,
+						  (__v8si)
+						  _mm256_setzero_si256 (),
+						  (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_rolv_epi32 (__m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_prolvd128_mask ((__v4si) __A,
+						  (__v4si) __B,
+						  (__v4si)
+						  _mm_setzero_si128 (),
+						  (__mmask8) -1);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_rolv_epi32 (__m128i __W, __mmask8 __U, __m128i __A,
+		     __m128i __B)
+{
+  return (__m128i) __builtin_ia32_prolvd128_mask ((__v4si) __A,
+						  (__v4si) __B,
+						  (__v4si) __W,
+						  (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_rolv_epi32 (__mmask8 __U, __m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_prolvd128_mask ((__v4si) __A,
+						  (__v4si) __B,
+						  (__v4si)
+						  _mm_setzero_si128 (),
+						  (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_rorv_epi32 (__m256i __A, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_prorvd256_mask ((__v8si) __A,
+						  (__v8si) __B,
+						  (__v8si)
+						  _mm256_setzero_si256 (),
+						  (__mmask8) -1);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_rorv_epi32 (__m256i __W, __mmask8 __U, __m256i __A,
+			__m256i __B)
+{
+  return (__m256i) __builtin_ia32_prorvd256_mask ((__v8si) __A,
+						  (__v8si) __B,
+						  (__v8si) __W,
+						  (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_rorv_epi32 (__mmask8 __U, __m256i __A, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_prorvd256_mask ((__v8si) __A,
+						  (__v8si) __B,
+						  (__v8si)
+						  _mm256_setzero_si256 (),
+						  (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_rorv_epi32 (__m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_prorvd128_mask ((__v4si) __A,
+						  (__v4si) __B,
+						  (__v4si)
+						  _mm_setzero_si128 (),
+						  (__mmask8) -1);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_rorv_epi32 (__m128i __W, __mmask8 __U, __m128i __A,
+		     __m128i __B)
+{
+  return (__m128i) __builtin_ia32_prorvd128_mask ((__v4si) __A,
+						  (__v4si) __B,
+						  (__v4si) __W,
+						  (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_rorv_epi32 (__mmask8 __U, __m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_prorvd128_mask ((__v4si) __A,
+						  (__v4si) __B,
+						  (__v4si)
+						  _mm_setzero_si128 (),
+						  (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_rolv_epi64 (__m256i __A, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_prolvq256_mask ((__v4di) __A,
+						  (__v4di) __B,
+						  (__v4di)
+						  _mm256_setzero_si256 (),
+						  (__mmask8) -1);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_rolv_epi64 (__m256i __W, __mmask8 __U, __m256i __A,
+			__m256i __B)
+{
+  return (__m256i) __builtin_ia32_prolvq256_mask ((__v4di) __A,
+						  (__v4di) __B,
+						  (__v4di) __W,
+						  (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_rolv_epi64 (__mmask8 __U, __m256i __A, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_prolvq256_mask ((__v4di) __A,
+						  (__v4di) __B,
+						  (__v4di)
+						  _mm256_setzero_si256 (),
+						  (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_rolv_epi64 (__m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_prolvq128_mask ((__v2di) __A,
+						  (__v2di) __B,
+						  (__v2di)
+						  _mm_setzero_di (),
+						  (__mmask8) -1);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_rolv_epi64 (__m128i __W, __mmask8 __U, __m128i __A,
+		     __m128i __B)
+{
+  return (__m128i) __builtin_ia32_prolvq128_mask ((__v2di) __A,
+						  (__v2di) __B,
+						  (__v2di) __W,
+						  (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_rolv_epi64 (__mmask8 __U, __m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_prolvq128_mask ((__v2di) __A,
+						  (__v2di) __B,
+						  (__v2di)
+						  _mm_setzero_di (),
+						  (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_rorv_epi64 (__m256i __A, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_prorvq256_mask ((__v4di) __A,
+						  (__v4di) __B,
+						  (__v4di)
+						  _mm256_setzero_si256 (),
+						  (__mmask8) -1);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_rorv_epi64 (__m256i __W, __mmask8 __U, __m256i __A,
+			__m256i __B)
+{
+  return (__m256i) __builtin_ia32_prorvq256_mask ((__v4di) __A,
+						  (__v4di) __B,
+						  (__v4di) __W,
+						  (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_rorv_epi64 (__mmask8 __U, __m256i __A, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_prorvq256_mask ((__v4di) __A,
+						  (__v4di) __B,
+						  (__v4di)
+						  _mm256_setzero_si256 (),
+						  (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_rorv_epi64 (__m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_prorvq128_mask ((__v2di) __A,
+						  (__v2di) __B,
+						  (__v2di)
+						  _mm_setzero_di (),
+						  (__mmask8) -1);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_rorv_epi64 (__m128i __W, __mmask8 __U, __m128i __A,
+		     __m128i __B)
+{
+  return (__m128i) __builtin_ia32_prorvq128_mask ((__v2di) __A,
+						  (__v2di) __B,
+						  (__v2di) __W,
+						  (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_rorv_epi64 (__mmask8 __U, __m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_prorvq128_mask ((__v2di) __A,
+						  (__v2di) __B,
+						  (__v2di)
+						  _mm_setzero_di (),
+						  (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_srav_epi64 (__m256i __X, __m256i __Y)
+{
+  return (__m256i) __builtin_ia32_psravq256_mask ((__v4di) __X,
+						  (__v4di) __Y,
+						  (__v4di)
+						  _mm256_setzero_si256 (),
+						  (__mmask8) -1);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_srav_epi64 (__m256i __W, __mmask8 __U, __m256i __X,
+			__m256i __Y)
+{
+  return (__m256i) __builtin_ia32_psravq256_mask ((__v4di) __X,
+						  (__v4di) __Y,
+						  (__v4di) __W,
+						  (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_srav_epi64 (__mmask8 __U, __m256i __X, __m256i __Y)
+{
+  return (__m256i) __builtin_ia32_psravq256_mask ((__v4di) __X,
+						  (__v4di) __Y,
+						  (__v4di)
+						  _mm256_setzero_si256 (),
+						  (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_and_epi64 (__m256i __W, __mmask8 __U, __m256i __A,
+		       __m256i __B)
+{
+  return (__m256i) __builtin_ia32_pandq256_mask ((__v4di) __A,
+						 (__v4di) __B,
+						 (__v4di) __W, __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_and_epi64 (__mmask8 __U, __m256i __A, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_pandq256_mask ((__v4di) __A,
+						 (__v4di) __B,
+						 (__v4di)
+						 _mm256_setzero_pd (),
+						 __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_and_epi64 (__m128i __W, __mmask8 __U, __m128i __A,
+		    __m128i __B)
+{
+  return (__m128i) __builtin_ia32_pandq128_mask ((__v2di) __A,
+						 (__v2di) __B,
+						 (__v2di) __W, __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_and_epi64 (__mmask8 __U, __m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_pandq128_mask ((__v2di) __A,
+						 (__v2di) __B,
+						 (__v2di)
+						 _mm_setzero_pd (),
+						 __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_andnot_epi64 (__m256i __W, __mmask8 __U, __m256i __A,
+			  __m256i __B)
+{
+  return (__m256i) __builtin_ia32_pandnq256_mask ((__v4di) __A,
+						  (__v4di) __B,
+						  (__v4di) __W, __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_andnot_epi64 (__mmask8 __U, __m256i __A, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_pandnq256_mask ((__v4di) __A,
+						  (__v4di) __B,
+						  (__v4di)
+						  _mm256_setzero_pd (),
+						  __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_andnot_epi64 (__m128i __W, __mmask8 __U, __m128i __A,
+		       __m128i __B)
+{
+  return (__m128i) __builtin_ia32_pandnq128_mask ((__v2di) __A,
+						  (__v2di) __B,
+						  (__v2di) __W, __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_andnot_epi64 (__mmask8 __U, __m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_pandnq128_mask ((__v2di) __A,
+						  (__v2di) __B,
+						  (__v2di)
+						  _mm_setzero_pd (),
+						  __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_or_epi64 (__m256i __W, __mmask8 __U, __m256i __A,
+		      __m256i __B)
+{
+  return (__m256i) __builtin_ia32_porq256_mask ((__v4di) __A,
+						(__v4di) __B,
+						(__v4di) __W,
+						(__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_or_epi64 (__mmask8 __U, __m256i __A, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_porq256_mask ((__v4di) __A,
+						(__v4di) __B,
+						(__v4di)
+						_mm256_setzero_si256 (),
+						(__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_or_epi64 (__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_porq128_mask ((__v2di) __A,
+						(__v2di) __B,
+						(__v2di) __W,
+						(__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_or_epi64 (__mmask8 __U, __m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_porq128_mask ((__v2di) __A,
+						(__v2di) __B,
+						(__v2di)
+						_mm_setzero_si128 (),
+						(__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_xor_epi64 (__m256i __W, __mmask8 __U, __m256i __A,
+		       __m256i __B)
+{
+  return (__m256i) __builtin_ia32_pxorq256_mask ((__v4di) __A,
+						 (__v4di) __B,
+						 (__v4di) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_xor_epi64 (__mmask8 __U, __m256i __A, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_pxorq256_mask ((__v4di) __A,
+						 (__v4di) __B,
+						 (__v4di)
+						 _mm256_setzero_si256 (),
+						 (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_xor_epi64 (__m128i __W, __mmask8 __U, __m128i __A,
+		    __m128i __B)
+{
+  return (__m128i) __builtin_ia32_pxorq128_mask ((__v2di) __A,
+						 (__v2di) __B,
+						 (__v2di) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_xor_epi64 (__mmask8 __U, __m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_pxorq128_mask ((__v2di) __A,
+						 (__v2di) __B,
+						 (__v2di)
+						 _mm_setzero_si128 (),
+						 (__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_max_pd (__m256d __W, __mmask8 __U, __m256d __A,
+		    __m256d __B)
+{
+  return (__m256d) __builtin_ia32_maxpd256_mask ((__v4df) __A,
+						 (__v4df) __B,
+						 (__v4df) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_max_pd (__mmask8 __U, __m256d __A, __m256d __B)
+{
+  return (__m256d) __builtin_ia32_maxpd256_mask ((__v4df) __A,
+						 (__v4df) __B,
+						 (__v4df)
+						 _mm256_setzero_pd (),
+						 (__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_max_ps (__m256 __W, __mmask8 __U, __m256 __A, __m256 __B)
+{
+  return (__m256) __builtin_ia32_maxps256_mask ((__v8sf) __A,
+						(__v8sf) __B,
+						(__v8sf) __W,
+						(__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_max_ps (__mmask8 __U, __m256 __A, __m256 __B)
+{
+  return (__m256) __builtin_ia32_maxps256_mask ((__v8sf) __A,
+						(__v8sf) __B,
+						(__v8sf)
+						_mm256_setzero_ps (),
+						(__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_div_ps (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
+{
+  return (__m128) __builtin_ia32_divps_mask ((__v4sf) __A,
+					     (__v4sf) __B,
+					     (__v4sf) __W,
+					     (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_div_ps (__mmask8 __U, __m128 __A, __m128 __B)
+{
+  return (__m128) __builtin_ia32_divps_mask ((__v4sf) __A,
+					     (__v4sf) __B,
+					     (__v4sf)
+					     _mm_setzero_ps (),
+					     (__mmask8) __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_div_pd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
+{
+  return (__m128d) __builtin_ia32_divpd_mask ((__v2df) __A,
+					      (__v2df) __B,
+					      (__v2df) __W,
+					      (__mmask8) __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_div_pd (__mmask8 __U, __m128d __A, __m128d __B)
+{
+  return (__m128d) __builtin_ia32_divpd_mask ((__v2df) __A,
+					      (__v2df) __B,
+					      (__v2df)
+					      _mm_setzero_pd (),
+					      (__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_min_pd (__m256d __W, __mmask8 __U, __m256d __A,
+		    __m256d __B)
+{
+  return (__m256d) __builtin_ia32_minpd256_mask ((__v4df) __A,
+						 (__v4df) __B,
+						 (__v4df) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_div_pd (__m256d __W, __mmask8 __U, __m256d __A,
+		    __m256d __B)
+{
+  return (__m256d) __builtin_ia32_divpd256_mask ((__v4df) __A,
+						 (__v4df) __B,
+						 (__v4df) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_min_pd (__mmask8 __U, __m256d __A, __m256d __B)
+{
+  return (__m256d) __builtin_ia32_minpd256_mask ((__v4df) __A,
+						 (__v4df) __B,
+						 (__v4df)
+						 _mm256_setzero_pd (),
+						 (__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_min_ps (__m256 __W, __mmask8 __U, __m256 __A, __m256 __B)
+{
+  return (__m256) __builtin_ia32_minps256_mask ((__v8sf) __A,
+						(__v8sf) __B,
+						(__v8sf) __W,
+						(__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_div_pd (__mmask8 __U, __m256d __A, __m256d __B)
+{
+  return (__m256d) __builtin_ia32_divpd256_mask ((__v4df) __A,
+						 (__v4df) __B,
+						 (__v4df)
+						 _mm256_setzero_pd (),
+						 (__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_div_ps (__m256 __W, __mmask8 __U, __m256 __A, __m256 __B)
+{
+  return (__m256) __builtin_ia32_divps256_mask ((__v8sf) __A,
+						(__v8sf) __B,
+						(__v8sf) __W,
+						(__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_min_ps (__mmask8 __U, __m256 __A, __m256 __B)
+{
+  return (__m256) __builtin_ia32_minps256_mask ((__v8sf) __A,
+						(__v8sf) __B,
+						(__v8sf)
+						_mm256_setzero_ps (),
+						(__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_div_ps (__mmask8 __U, __m256 __A, __m256 __B)
+{
+  return (__m256) __builtin_ia32_divps256_mask ((__v8sf) __A,
+						(__v8sf) __B,
+						(__v8sf)
+						_mm256_setzero_ps (),
+						(__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_min_ps (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
+{
+  return (__m128) __builtin_ia32_minps_mask ((__v4sf) __A,
+					     (__v4sf) __B,
+					     (__v4sf) __W,
+					     (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_mul_ps (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
+{
+  return (__m128) __builtin_ia32_mulps_mask ((__v4sf) __A,
+					     (__v4sf) __B,
+					     (__v4sf) __W,
+					     (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_min_ps (__mmask8 __U, __m128 __A, __m128 __B)
+{
+  return (__m128) __builtin_ia32_minps_mask ((__v4sf) __A,
+					     (__v4sf) __B,
+					     (__v4sf)
+					     _mm_setzero_ps (),
+					     (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_mul_ps (__mmask8 __U, __m128 __A, __m128 __B)
+{
+  return (__m128) __builtin_ia32_mulps_mask ((__v4sf) __A,
+					     (__v4sf) __B,
+					     (__v4sf)
+					     _mm_setzero_ps (),
+					     (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_max_ps (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
+{
+  return (__m128) __builtin_ia32_maxps_mask ((__v4sf) __A,
+					     (__v4sf) __B,
+					     (__v4sf) __W,
+					     (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_max_ps (__mmask8 __U, __m128 __A, __m128 __B)
+{
+  return (__m128) __builtin_ia32_maxps_mask ((__v4sf) __A,
+					     (__v4sf) __B,
+					     (__v4sf)
+					     _mm_setzero_ps (),
+					     (__mmask8) __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_min_pd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
+{
+  return (__m128d) __builtin_ia32_minpd_mask ((__v2df) __A,
+					      (__v2df) __B,
+					      (__v2df) __W,
+					      (__mmask8) __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_min_pd (__mmask8 __U, __m128d __A, __m128d __B)
+{
+  return (__m128d) __builtin_ia32_minpd_mask ((__v2df) __A,
+					      (__v2df) __B,
+					      (__v2df)
+					      _mm_setzero_pd (),
+					      (__mmask8) __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_max_pd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
+{
+  return (__m128d) __builtin_ia32_maxpd_mask ((__v2df) __A,
+					      (__v2df) __B,
+					      (__v2df) __W,
+					      (__mmask8) __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_max_pd (__mmask8 __U, __m128d __A, __m128d __B)
+{
+  return (__m128d) __builtin_ia32_maxpd_mask ((__v2df) __A,
+					      (__v2df) __B,
+					      (__v2df)
+					      _mm_setzero_pd (),
+					      (__mmask8) __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_mul_pd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
+{
+  return (__m128d) __builtin_ia32_mulpd_mask ((__v2df) __A,
+					      (__v2df) __B,
+					      (__v2df) __W,
+					      (__mmask8) __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_mul_pd (__mmask8 __U, __m128d __A, __m128d __B)
+{
+  return (__m128d) __builtin_ia32_mulpd_mask ((__v2df) __A,
+					      (__v2df) __B,
+					      (__v2df)
+					      _mm_setzero_pd (),
+					      (__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_mul_ps (__m256 __W, __mmask8 __U, __m256 __A, __m256 __B)
+{
+  return (__m256) __builtin_ia32_mulps256_mask ((__v8sf) __A,
+						(__v8sf) __B,
+						(__v8sf) __W,
+						(__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_mul_ps (__mmask8 __U, __m256 __A, __m256 __B)
+{
+  return (__m256) __builtin_ia32_mulps256_mask ((__v8sf) __A,
+						(__v8sf) __B,
+						(__v8sf)
+						_mm256_setzero_ps (),
+						(__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_mul_pd (__m256d __W, __mmask8 __U, __m256d __A,
+		    __m256d __B)
+{
+  return (__m256d) __builtin_ia32_mulpd256_mask ((__v4df) __A,
+						 (__v4df) __B,
+						 (__v4df) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_mul_pd (__mmask8 __U, __m256d __A, __m256d __B)
+{
+  return (__m256d) __builtin_ia32_mulpd256_mask ((__v4df) __A,
+						 (__v4df) __B,
+						 (__v4df)
+						 _mm256_setzero_pd (),
+						 (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_max_epi64 (__mmask8 __M, __m256i __A, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_pmaxsq256_mask ((__v4di) __A,
+						  (__v4di) __B,
+						  (__v4di)
+						  _mm256_setzero_si256 (),
+						  __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_max_epi64 (__m256i __W, __mmask8 __M, __m256i __A,
+		       __m256i __B)
+{
+  return (__m256i) __builtin_ia32_pmaxsq256_mask ((__v4di) __A,
+						  (__v4di) __B,
+						  (__v4di) __W, __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_min_epi64 (__m256i __A, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_pminsq256_mask ((__v4di) __A,
+						  (__v4di) __B,
+						  (__v4di)
+						  _mm256_setzero_si256 (),
+						  (__mmask8) -1);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_min_epi64 (__m256i __W, __mmask8 __M, __m256i __A,
+		       __m256i __B)
+{
+  return (__m256i) __builtin_ia32_pminsq256_mask ((__v4di) __A,
+						  (__v4di) __B,
+						  (__v4di) __W, __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_min_epi64 (__mmask8 __M, __m256i __A, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_pminsq256_mask ((__v4di) __A,
+						  (__v4di) __B,
+						  (__v4di)
+						  _mm256_setzero_si256 (),
+						  __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_max_epu64 (__mmask8 __M, __m256i __A, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_pmaxuq256_mask ((__v4di) __A,
+						  (__v4di) __B,
+						  (__v4di)
+						  _mm256_setzero_si256 (),
+						  __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_max_epi64 (__m256i __A, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_pmaxsq256_mask ((__v4di) __A,
+						  (__v4di) __B,
+						  (__v4di)
+						  _mm256_setzero_si256 (),
+						  (__mmask8) -1);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_max_epu64 (__m256i __A, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_pmaxuq256_mask ((__v4di) __A,
+						  (__v4di) __B,
+						  (__v4di)
+						  _mm256_setzero_si256 (),
+						  (__mmask8) -1);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_max_epu64 (__m256i __W, __mmask8 __M, __m256i __A,
+		       __m256i __B)
+{
+  return (__m256i) __builtin_ia32_pmaxuq256_mask ((__v4di) __A,
+						  (__v4di) __B,
+						  (__v4di) __W, __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_min_epu64 (__m256i __A, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_pminuq256_mask ((__v4di) __A,
+						  (__v4di) __B,
+						  (__v4di)
+						  _mm256_setzero_si256 (),
+						  (__mmask8) -1);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_min_epu64 (__m256i __W, __mmask8 __M, __m256i __A,
+		       __m256i __B)
+{
+  return (__m256i) __builtin_ia32_pminuq256_mask ((__v4di) __A,
+						  (__v4di) __B,
+						  (__v4di) __W, __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_min_epu64 (__mmask8 __M, __m256i __A, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_pminuq256_mask ((__v4di) __A,
+						  (__v4di) __B,
+						  (__v4di)
+						  _mm256_setzero_si256 (),
+						  __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_max_epi32 (__mmask8 __M, __m256i __A, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_pmaxsd256_mask ((__v8si) __A,
+						  (__v8si) __B,
+						  (__v8si)
+						  _mm256_setzero_si256 (),
+						  __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_max_epi32 (__m256i __W, __mmask8 __M, __m256i __A,
+		       __m256i __B)
+{
+  return (__m256i) __builtin_ia32_pmaxsd256_mask ((__v8si) __A,
+						  (__v8si) __B,
+						  (__v8si) __W, __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_min_epi32 (__mmask8 __M, __m256i __A, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_pminsd256_mask ((__v8si) __A,
+						  (__v8si) __B,
+						  (__v8si)
+						  _mm256_setzero_si256 (),
+						  __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_min_epi32 (__m256i __W, __mmask8 __M, __m256i __A,
+		       __m256i __B)
+{
+  return (__m256i) __builtin_ia32_pminsd256_mask ((__v8si) __A,
+						  (__v8si) __B,
+						  (__v8si) __W, __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_max_epu32 (__mmask8 __M, __m256i __A, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_pmaxud256_mask ((__v8si) __A,
+						  (__v8si) __B,
+						  (__v8si)
+						  _mm256_setzero_si256 (),
+						  __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_max_epu32 (__m256i __W, __mmask8 __M, __m256i __A,
+		       __m256i __B)
+{
+  return (__m256i) __builtin_ia32_pmaxud256_mask ((__v8si) __A,
+						  (__v8si) __B,
+						  (__v8si) __W, __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_min_epu32 (__mmask8 __M, __m256i __A, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_pminud256_mask ((__v8si) __A,
+						  (__v8si) __B,
+						  (__v8si)
+						  _mm256_setzero_si256 (),
+						  __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_min_epu32 (__m256i __W, __mmask8 __M, __m256i __A,
+		       __m256i __B)
+{
+  return (__m256i) __builtin_ia32_pminud256_mask ((__v8si) __A,
+						  (__v8si) __B,
+						  (__v8si) __W, __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_max_epi64 (__mmask8 __M, __m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_pmaxsq128_mask ((__v2di) __A,
+						  (__v2di) __B,
+						  (__v2di)
+						  _mm_setzero_si128 (),
+						  __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_max_epi64 (__m128i __W, __mmask8 __M, __m128i __A,
+		    __m128i __B)
+{
+  return (__m128i) __builtin_ia32_pmaxsq128_mask ((__v2di) __A,
+						  (__v2di) __B,
+						  (__v2di) __W, __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_min_epi64 (__m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_pminsq128_mask ((__v2di) __A,
+						  (__v2di) __B,
+						  (__v2di)
+						  _mm_setzero_di (),
+						  (__mmask8) -1);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_min_epi64 (__m128i __W, __mmask8 __M, __m128i __A,
+		    __m128i __B)
+{
+  return (__m128i) __builtin_ia32_pminsq128_mask ((__v2di) __A,
+						  (__v2di) __B,
+						  (__v2di) __W, __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_min_epi64 (__mmask8 __M, __m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_pminsq128_mask ((__v2di) __A,
+						  (__v2di) __B,
+						  (__v2di)
+						  _mm_setzero_si128 (),
+						  __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_max_epu64 (__mmask8 __M, __m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_pmaxuq128_mask ((__v2di) __A,
+						  (__v2di) __B,
+						  (__v2di)
+						  _mm_setzero_si128 (),
+						  __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_max_epi64 (__m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_pmaxsq128_mask ((__v2di) __A,
+						  (__v2di) __B,
+						  (__v2di)
+						  _mm_setzero_di (),
+						  (__mmask8) -1);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_max_epu64 (__m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_pmaxuq128_mask ((__v2di) __A,
+						  (__v2di) __B,
+						  (__v2di)
+						  _mm_setzero_di (),
+						  (__mmask8) -1);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_max_epu64 (__m128i __W, __mmask8 __M, __m128i __A,
+		    __m128i __B)
+{
+  return (__m128i) __builtin_ia32_pmaxuq128_mask ((__v2di) __A,
+						  (__v2di) __B,
+						  (__v2di) __W, __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_min_epu64 (__m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_pminuq128_mask ((__v2di) __A,
+						  (__v2di) __B,
+						  (__v2di)
+						  _mm_setzero_di (),
+						  (__mmask8) -1);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_min_epu64 (__m128i __W, __mmask8 __M, __m128i __A,
+		    __m128i __B)
+{
+  return (__m128i) __builtin_ia32_pminuq128_mask ((__v2di) __A,
+						  (__v2di) __B,
+						  (__v2di) __W, __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_min_epu64 (__mmask8 __M, __m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_pminuq128_mask ((__v2di) __A,
+						  (__v2di) __B,
+						  (__v2di)
+						  _mm_setzero_si128 (),
+						  __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_max_epi32 (__mmask8 __M, __m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_pmaxsd128_mask ((__v4si) __A,
+						  (__v4si) __B,
+						  (__v4si)
+						  _mm_setzero_si128 (),
+						  __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_max_epi32 (__m128i __W, __mmask8 __M, __m128i __A,
+		    __m128i __B)
+{
+  return (__m128i) __builtin_ia32_pmaxsd128_mask ((__v4si) __A,
+						  (__v4si) __B,
+						  (__v4si) __W, __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_min_epi32 (__mmask8 __M, __m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_pminsd128_mask ((__v4si) __A,
+						  (__v4si) __B,
+						  (__v4si)
+						  _mm_setzero_si128 (),
+						  __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_min_epi32 (__m128i __W, __mmask8 __M, __m128i __A,
+		    __m128i __B)
+{
+  return (__m128i) __builtin_ia32_pminsd128_mask ((__v4si) __A,
+						  (__v4si) __B,
+						  (__v4si) __W, __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_max_epu32 (__mmask8 __M, __m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_pmaxud128_mask ((__v4si) __A,
+						  (__v4si) __B,
+						  (__v4si)
+						  _mm_setzero_si128 (),
+						  __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_max_epu32 (__m128i __W, __mmask8 __M, __m128i __A,
+		    __m128i __B)
+{
+  return (__m128i) __builtin_ia32_pmaxud128_mask ((__v4si) __A,
+						  (__v4si) __B,
+						  (__v4si) __W, __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_min_epu32 (__mmask8 __M, __m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_pminud128_mask ((__v4si) __A,
+						  (__v4si) __B,
+						  (__v4si)
+						  _mm_setzero_si128 (),
+						  __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_min_epu32 (__m128i __W, __mmask8 __M, __m128i __A,
+		    __m128i __B)
+{
+  return (__m128i) __builtin_ia32_pminud128_mask ((__v4si) __A,
+						  (__v4si) __B,
+						  (__v4si) __W, __M);
+}
+
+#ifndef __AVX512CD__
+#pragma GCC push_options
+#pragma GCC target("avx512vl,avx512cd")
+#define __DISABLE_AVX512VLCD__
+#endif
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_broadcastmb_epi64 (__mmask8 __A)
+{
+  return (__m128i) __builtin_ia32_broadcastmb128 (__A);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_broadcastmb_epi64 (__mmask8 __A)
+{
+  return (__m256i) __builtin_ia32_broadcastmb256 (__A);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_broadcastmw_epi32 (__mmask16 __A)
+{
+  return (__m128i) __builtin_ia32_broadcastmw128 (__A);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_broadcastmw_epi32 (__mmask16 __A)
+{
+  return (__m256i) __builtin_ia32_broadcastmw256 (__A);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_lzcnt_epi32 (__m256i __A)
+{
+  return (__m256i) __builtin_ia32_vplzcntd_256_mask ((__v8si) __A,
+						     (__v8si)
+						     _mm256_setzero_si256 (),
+						     (__mmask8) -1);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_lzcnt_epi32 (__m256i __W, __mmask8 __U, __m256i __A)
+{
+  return (__m256i) __builtin_ia32_vplzcntd_256_mask ((__v8si) __A,
+						     (__v8si) __W,
+						     (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_lzcnt_epi32 (__mmask8 __U, __m256i __A)
+{
+  return (__m256i) __builtin_ia32_vplzcntd_256_mask ((__v8si) __A,
+						     (__v8si)
+						     _mm256_setzero_si256 (),
+						     (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_lzcnt_epi64 (__m256i __A)
+{
+  return (__m256i) __builtin_ia32_vplzcntq_256_mask ((__v4di) __A,
+						     (__v4di)
+						     _mm256_setzero_si256 (),
+						     (__mmask8) -1);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_lzcnt_epi64 (__m256i __W, __mmask8 __U, __m256i __A)
+{
+  return (__m256i) __builtin_ia32_vplzcntq_256_mask ((__v4di) __A,
+						     (__v4di) __W,
+						     (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_lzcnt_epi64 (__mmask8 __U, __m256i __A)
+{
+  return (__m256i) __builtin_ia32_vplzcntq_256_mask ((__v4di) __A,
+						     (__v4di)
+						     _mm256_setzero_si256 (),
+						     (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_conflict_epi64 (__m256i __A)
+{
+  return (__m256i) __builtin_ia32_vpconflictdi_256_mask ((__v4di) __A,
+							 (__v4di)
+							 _mm256_setzero_si256 (),
+							 (__mmask8) -
+							 1);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_conflict_epi64 (__m256i __W, __mmask8 __U, __m256i __A)
+{
+  return (__m256i) __builtin_ia32_vpconflictdi_256_mask ((__v4di) __A,
+							 (__v4di) __W,
+							 (__mmask8)
+							 __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_conflict_epi64 (__mmask8 __U, __m256i __A)
+{
+  return (__m256i) __builtin_ia32_vpconflictdi_256_mask ((__v4di) __A,
+							 (__v4di)
+							 _mm256_setzero_si256 (),
+							 (__mmask8)
+							 __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_conflict_epi32 (__m256i __A)
+{
+  return (__m256i) __builtin_ia32_vpconflictsi_256_mask ((__v8si) __A,
+							 (__v8si)
+							 _mm256_setzero_si256 (),
+							 (__mmask8) -
+							 1);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_conflict_epi32 (__m256i __W, __mmask8 __U, __m256i __A)
+{
+  return (__m256i) __builtin_ia32_vpconflictsi_256_mask ((__v8si) __A,
+							 (__v8si) __W,
+							 (__mmask8)
+							 __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_conflict_epi32 (__mmask8 __U, __m256i __A)
+{
+  return (__m256i) __builtin_ia32_vpconflictsi_256_mask ((__v8si) __A,
+							 (__v8si)
+							 _mm256_setzero_si256 (),
+							 (__mmask8)
+							 __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_lzcnt_epi32 (__m128i __A)
+{
+  return (__m128i) __builtin_ia32_vplzcntd_128_mask ((__v4si) __A,
+						     (__v4si)
+						     _mm_setzero_si128 (),
+						     (__mmask8) -1);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_lzcnt_epi32 (__m128i __W, __mmask8 __U, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_vplzcntd_128_mask ((__v4si) __A,
+						     (__v4si) __W,
+						     (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_lzcnt_epi32 (__mmask8 __U, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_vplzcntd_128_mask ((__v4si) __A,
+						     (__v4si)
+						     _mm_setzero_si128 (),
+						     (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_lzcnt_epi64 (__m128i __A)
+{
+  return (__m128i) __builtin_ia32_vplzcntq_128_mask ((__v2di) __A,
+						     (__v2di)
+						     _mm_setzero_di (),
+						     (__mmask8) -1);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_lzcnt_epi64 (__m128i __W, __mmask8 __U, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_vplzcntq_128_mask ((__v2di) __A,
+						     (__v2di) __W,
+						     (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_lzcnt_epi64 (__mmask8 __U, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_vplzcntq_128_mask ((__v2di) __A,
+						     (__v2di)
+						     _mm_setzero_di (),
+						     (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_conflict_epi64 (__m128i __A)
+{
+  return (__m128i) __builtin_ia32_vpconflictdi_128_mask ((__v2di) __A,
+							 (__v2di)
+							 _mm_setzero_di (),
+							 (__mmask8) -
+							 1);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_conflict_epi64 (__m128i __W, __mmask8 __U, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_vpconflictdi_128_mask ((__v2di) __A,
+							 (__v2di) __W,
+							 (__mmask8)
+							 __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_conflict_epi64 (__mmask8 __U, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_vpconflictdi_128_mask ((__v2di) __A,
+							 (__v2di)
+							 _mm_setzero_di (),
+							 (__mmask8)
+							 __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_conflict_epi32 (__m128i __A)
+{
+  return (__m128i) __builtin_ia32_vpconflictsi_128_mask ((__v4si) __A,
+							 (__v4si)
+							 _mm_setzero_si128 (),
+							 (__mmask8) -
+							 1);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_conflict_epi32 (__m128i __W, __mmask8 __U, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_vpconflictsi_128_mask ((__v4si) __A,
+							 (__v4si) __W,
+							 (__mmask8)
+							 __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_conflict_epi32 (__mmask8 __U, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_vpconflictsi_128_mask ((__v4si) __A,
+							 (__v4si)
+							 _mm_setzero_si128 (),
+							 (__mmask8)
+							 __U);
+}
+
+#ifdef __DISABLE_AVX512VLCD__
+#pragma GCC pop_options
+#endif
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_unpacklo_pd (__m256d __W, __mmask8 __U, __m256d __A,
+			 __m256d __B)
+{
+  return (__m256d) __builtin_ia32_unpcklpd256_mask ((__v4df) __A,
+						    (__v4df) __B,
+						    (__v4df) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_unpacklo_pd (__mmask8 __U, __m256d __A, __m256d __B)
+{
+  return (__m256d) __builtin_ia32_unpcklpd256_mask ((__v4df) __A,
+						    (__v4df) __B,
+						    (__v4df)
+						    _mm256_setzero_pd (),
+						    (__mmask8) __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_unpacklo_pd (__m128d __W, __mmask8 __U, __m128d __A,
+		      __m128d __B)
+{
+  return (__m128d) __builtin_ia32_unpcklpd128_mask ((__v2df) __A,
+						    (__v2df) __B,
+						    (__v2df) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_unpacklo_pd (__mmask8 __U, __m128d __A, __m128d __B)
+{
+  return (__m128d) __builtin_ia32_unpcklpd128_mask ((__v2df) __A,
+						    (__v2df) __B,
+						    (__v2df)
+						    _mm_setzero_pd (),
+						    (__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_unpacklo_ps (__m256 __W, __mmask8 __U, __m256 __A,
+			 __m256 __B)
+{
+  return (__m256) __builtin_ia32_unpcklps256_mask ((__v8sf) __A,
+						   (__v8sf) __B,
+						   (__v8sf) __W,
+						   (__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_unpackhi_pd (__m256d __W, __mmask8 __U, __m256d __A,
+			 __m256d __B)
+{
+  return (__m256d) __builtin_ia32_unpckhpd256_mask ((__v4df) __A,
+						    (__v4df) __B,
+						    (__v4df) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_unpackhi_pd (__mmask8 __U, __m256d __A, __m256d __B)
+{
+  return (__m256d) __builtin_ia32_unpckhpd256_mask ((__v4df) __A,
+						    (__v4df) __B,
+						    (__v4df)
+						    _mm256_setzero_pd (),
+						    (__mmask8) __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_unpackhi_pd (__m128d __W, __mmask8 __U, __m128d __A,
+		      __m128d __B)
+{
+  return (__m128d) __builtin_ia32_unpckhpd128_mask ((__v2df) __A,
+						    (__v2df) __B,
+						    (__v2df) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_unpackhi_pd (__mmask8 __U, __m128d __A, __m128d __B)
+{
+  return (__m128d) __builtin_ia32_unpckhpd128_mask ((__v2df) __A,
+						    (__v2df) __B,
+						    (__v2df)
+						    _mm_setzero_pd (),
+						    (__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_unpackhi_ps (__m256 __W, __mmask8 __U, __m256 __A,
+			 __m256 __B)
+{
+  return (__m256) __builtin_ia32_unpckhps256_mask ((__v8sf) __A,
+						   (__v8sf) __B,
+						   (__v8sf) __W,
+						   (__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_unpackhi_ps (__mmask8 __U, __m256 __A, __m256 __B)
+{
+  return (__m256) __builtin_ia32_unpckhps256_mask ((__v8sf) __A,
+						   (__v8sf) __B,
+						   (__v8sf)
+						   _mm256_setzero_ps (),
+						   (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_unpackhi_ps (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
+{
+  return (__m128) __builtin_ia32_unpckhps128_mask ((__v4sf) __A,
+						   (__v4sf) __B,
+						   (__v4sf) __W,
+						   (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_unpackhi_ps (__mmask8 __U, __m128 __A, __m128 __B)
+{
+  return (__m128) __builtin_ia32_unpckhps128_mask ((__v4sf) __A,
+						   (__v4sf) __B,
+						   (__v4sf)
+						   _mm_setzero_ps (),
+						   (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cvtph_ps (__m128 __W, __mmask8 __U, __m128i __A)
+{
+  return (__m128) __builtin_ia32_vcvtph2ps_mask ((__v8hi) __A,
+						 (__v4sf) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_cvtph_ps (__mmask8 __U, __m128i __A)
+{
+  return (__m128) __builtin_ia32_vcvtph2ps_mask ((__v8hi) __A,
+						 (__v4sf)
+						 _mm_setzero_ps (),
+						 (__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_unpacklo_ps (__mmask8 __U, __m256 __A, __m256 __B)
+{
+  return (__m256) __builtin_ia32_unpcklps256_mask ((__v8sf) __A,
+						   (__v8sf) __B,
+						   (__v8sf)
+						   _mm256_setzero_ps (),
+						   (__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cvtph_ps (__m256 __W, __mmask8 __U, __m128i __A)
+{
+  return (__m256) __builtin_ia32_vcvtph2ps256_mask ((__v8hi) __A,
+						    (__v8sf) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_cvtph_ps (__mmask8 __U, __m128i __A)
+{
+  return (__m256) __builtin_ia32_vcvtph2ps256_mask ((__v8hi) __A,
+						    (__v8sf)
+						    _mm256_setzero_ps (),
+						    (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_unpacklo_ps (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
+{
+  return (__m128) __builtin_ia32_unpcklps128_mask ((__v4sf) __A,
+						   (__v4sf) __B,
+						   (__v4sf) __W,
+						   (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_unpacklo_ps (__mmask8 __U, __m128 __A, __m128 __B)
+{
+  return (__m128) __builtin_ia32_unpcklps128_mask ((__v4sf) __A,
+						   (__v4sf) __B,
+						   (__v4sf)
+						   _mm_setzero_ps (),
+						   (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_sra_epi32 (__m256i __W, __mmask8 __U, __m256i __A,
+		       __m128i __B)
+{
+  return (__m256i) __builtin_ia32_psrad256_mask ((__v8si) __A,
+						 (__v4si) __B,
+						 (__v8si) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_sra_epi32 (__mmask8 __U, __m256i __A, __m128i __B)
+{
+  return (__m256i) __builtin_ia32_psrad256_mask ((__v8si) __A,
+						 (__v4si) __B,
+						 (__v8si)
+						 _mm256_setzero_si256 (),
+						 (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_sra_epi32 (__m128i __W, __mmask8 __U, __m128i __A,
+		    __m128i __B)
+{
+  return (__m128i) __builtin_ia32_psrad128_mask ((__v4si) __A,
+						 (__v4si) __B,
+						 (__v4si) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_sra_epi32 (__mmask8 __U, __m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_psrad128_mask ((__v4si) __A,
+						 (__v4si) __B,
+						 (__v4si)
+						 _mm_setzero_si128 (),
+						 (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_sra_epi64 (__m256i __A, __m128i __B)
+{
+  return (__m256i) __builtin_ia32_psraq256_mask ((__v4di) __A,
+						 (__v2di) __B,
+						 (__v4di)
+						 _mm256_setzero_si256 (),
+						 (__mmask8) -1);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_sra_epi64 (__m256i __W, __mmask8 __U, __m256i __A,
+		       __m128i __B)
+{
+  return (__m256i) __builtin_ia32_psraq256_mask ((__v4di) __A,
+						 (__v2di) __B,
+						 (__v4di) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_sra_epi64 (__mmask8 __U, __m256i __A, __m128i __B)
+{
+  return (__m256i) __builtin_ia32_psraq256_mask ((__v4di) __A,
+						 (__v2di) __B,
+						 (__v4di)
+						 _mm256_setzero_si256 (),
+						 (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_sra_epi64 (__m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_psraq128_mask ((__v2di) __A,
+						 (__v2di) __B,
+						 (__v2di)
+						 _mm_setzero_di (),
+						 (__mmask8) -1);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_sra_epi64 (__m128i __W, __mmask8 __U, __m128i __A,
+		    __m128i __B)
+{
+  return (__m128i) __builtin_ia32_psraq128_mask ((__v2di) __A,
+						 (__v2di) __B,
+						 (__v2di) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_sra_epi64 (__mmask8 __U, __m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_psraq128_mask ((__v2di) __A,
+						 (__v2di) __B,
+						 (__v2di)
+						 _mm_setzero_di (),
+						 (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_sll_epi32 (__m128i __W, __mmask8 __U, __m128i __A,
+		    __m128i __B)
+{
+  return (__m128i) __builtin_ia32_pslld128_mask ((__v4si) __A,
+						 (__v4si) __B,
+						 (__v4si) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_sll_epi32 (__mmask8 __U, __m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_pslld128_mask ((__v4si) __A,
+						 (__v4si) __B,
+						 (__v4si)
+						 _mm_setzero_si128 (),
+						 (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_sll_epi64 (__m128i __W, __mmask8 __U, __m128i __A,
+		    __m128i __B)
+{
+  return (__m128i) __builtin_ia32_psllq128_mask ((__v2di) __A,
+						 (__v2di) __B,
+						 (__v2di) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_sll_epi64 (__mmask8 __U, __m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_psllq128_mask ((__v2di) __A,
+						 (__v2di) __B,
+						 (__v2di)
+						 _mm_setzero_di (),
+						 (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_sll_epi32 (__m256i __W, __mmask8 __U, __m256i __A,
+		       __m128i __B)
+{
+  return (__m256i) __builtin_ia32_pslld256_mask ((__v8si) __A,
+						 (__v4si) __B,
+						 (__v8si) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_sll_epi32 (__mmask8 __U, __m256i __A, __m128i __B)
+{
+  return (__m256i) __builtin_ia32_pslld256_mask ((__v8si) __A,
+						 (__v4si) __B,
+						 (__v8si)
+						 _mm256_setzero_si256 (),
+						 (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_sll_epi64 (__m256i __W, __mmask8 __U, __m256i __A,
+		       __m128i __B)
+{
+  return (__m256i) __builtin_ia32_psllq256_mask ((__v4di) __A,
+						 (__v2di) __B,
+						 (__v4di) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_sll_epi64 (__mmask8 __U, __m256i __A, __m128i __B)
+{
+  return (__m256i) __builtin_ia32_psllq256_mask ((__v4di) __A,
+						 (__v2di) __B,
+						 (__v4di)
+						 _mm256_setzero_si256 (),
+						 (__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_permutexvar_ps (__m256 __W, __mmask8 __U, __m256i __X,
+			    __m256 __Y)
+{
+  return (__m256) __builtin_ia32_permvarsf256_mask ((__v8sf) __Y,
+						    (__v8si) __X,
+						    (__v8sf) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_permutexvar_ps (__mmask8 __U, __m256i __X, __m256 __Y)
+{
+  return (__m256) __builtin_ia32_permvarsf256_mask ((__v8sf) __Y,
+						    (__v8si) __X,
+						    (__v8sf)
+						    _mm256_setzero_ps (),
+						    (__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_permutexvar_pd (__m256i __X, __m256d __Y)
+{
+  return (__m256d) __builtin_ia32_permvardf256_mask ((__v4df) __Y,
+						     (__v4di) __X,
+						     (__v4df)
+						     _mm256_setzero_pd (),
+						     (__mmask8) -1);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_permutexvar_pd (__m256d __W, __mmask8 __U, __m256i __X,
+			    __m256d __Y)
+{
+  return (__m256d) __builtin_ia32_permvardf256_mask ((__v4df) __Y,
+						     (__v4di) __X,
+						     (__v4df) __W,
+						     (__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_permutexvar_pd (__mmask8 __U, __m256i __X, __m256d __Y)
+{
+  return (__m256d) __builtin_ia32_permvardf256_mask ((__v4df) __Y,
+						     (__v4di) __X,
+						     (__v4df)
+						     _mm256_setzero_pd (),
+						     (__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_permutevar_pd (__m256d __W, __mmask8 __U, __m256d __A,
+			   __m256i __C)
+{
+  return (__m256d) __builtin_ia32_vpermilvarpd256_mask ((__v4df) __A,
+							(__v4di) __C,
+							(__v4df) __W,
+							(__mmask8)
+							__U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_permutevar_pd (__mmask8 __U, __m256d __A, __m256i __C)
+{
+  return (__m256d) __builtin_ia32_vpermilvarpd256_mask ((__v4df) __A,
+							(__v4di) __C,
+							(__v4df)
+							_mm256_setzero_pd (),
+							(__mmask8)
+							__U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_permutevar_ps (__m256 __W, __mmask8 __U, __m256 __A,
+			   __m256i __C)
+{
+  return (__m256) __builtin_ia32_vpermilvarps256_mask ((__v8sf) __A,
+						       (__v8si) __C,
+						       (__v8sf) __W,
+						       (__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_permutevar_ps (__mmask8 __U, __m256 __A, __m256i __C)
+{
+  return (__m256) __builtin_ia32_vpermilvarps256_mask ((__v8sf) __A,
+						       (__v8si) __C,
+						       (__v8sf)
+						       _mm256_setzero_ps (),
+						       (__mmask8) __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_permutevar_pd (__m128d __W, __mmask8 __U, __m128d __A,
+			__m128i __C)
+{
+  return (__m128d) __builtin_ia32_vpermilvarpd_mask ((__v2df) __A,
+						     (__v2di) __C,
+						     (__v2df) __W,
+						     (__mmask8) __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_permutevar_pd (__mmask8 __U, __m128d __A, __m128i __C)
+{
+  return (__m128d) __builtin_ia32_vpermilvarpd_mask ((__v2df) __A,
+						     (__v2di) __C,
+						     (__v2df)
+						     _mm_setzero_pd (),
+						     (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_permutevar_ps (__m128 __W, __mmask8 __U, __m128 __A,
+			__m128i __C)
+{
+  return (__m128) __builtin_ia32_vpermilvarps_mask ((__v4sf) __A,
+						    (__v4si) __C,
+						    (__v4sf) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_permutevar_ps (__mmask8 __U, __m128 __A, __m128i __C)
+{
+  return (__m128) __builtin_ia32_vpermilvarps_mask ((__v4sf) __A,
+						    (__v4si) __C,
+						    (__v4sf)
+						    _mm_setzero_ps (),
+						    (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_mullo_epi32 (__mmask8 __M, __m256i __A, __m256i __B)
+{
+  return (__m256i) __builtin_ia32_pmulld256_mask ((__v8si) __A,
+						  (__v8si) __B,
+						  (__v8si)
+						  _mm256_setzero_si256 (),
+						  __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_permutexvar_epi64 (__mmask8 __M, __m256i __X, __m256i __Y)
+{
+  return (__m256i) __builtin_ia32_permvardi256_mask ((__v4di) __Y,
+						     (__v4di) __X,
+						     (__v4di)
+						     _mm256_setzero_si256 (),
+						     __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_mullo_epi32 (__m256i __W, __mmask8 __M, __m256i __A,
+			 __m256i __B)
+{
+  return (__m256i) __builtin_ia32_pmulld256_mask ((__v8si) __A,
+						  (__v8si) __B,
+						  (__v8si) __W, __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_mullo_epi32 (__mmask8 __M, __m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_pmulld128_mask ((__v4si) __A,
+						  (__v4si) __B,
+						  (__v4si)
+						  _mm_setzero_si128 (),
+						  __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_mullo_epi32 (__m128i __W, __mmask16 __M, __m128i __A,
+		      __m128i __B)
+{
+  return (__m128i) __builtin_ia32_pmulld128_mask ((__v4si) __A,
+						  (__v4si) __B,
+						  (__v4si) __W, __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_mul_epi32 (__m256i __W, __mmask8 __M, __m256i __X,
+		       __m256i __Y)
+{
+  return (__m256i) __builtin_ia32_pmuldq256_mask ((__v8si) __X,
+						  (__v8si) __Y,
+						  (__v4di) __W, __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_mul_epi32 (__mmask8 __M, __m256i __X, __m256i __Y)
+{
+  return (__m256i) __builtin_ia32_pmuldq256_mask ((__v8si) __X,
+						  (__v8si) __Y,
+						  (__v4di)
+						  _mm256_setzero_si256 (),
+						  __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_mul_epi32 (__m128i __W, __mmask8 __M, __m128i __X,
+		    __m128i __Y)
+{
+  return (__m128i) __builtin_ia32_pmuldq128_mask ((__v4si) __X,
+						  (__v4si) __Y,
+						  (__v2di) __W, __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_mul_epi32 (__mmask8 __M, __m128i __X, __m128i __Y)
+{
+  return (__m128i) __builtin_ia32_pmuldq128_mask ((__v4si) __X,
+						  (__v4si) __Y,
+						  (__v2di)
+						  _mm_setzero_si128 (),
+						  __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_permutexvar_epi64 (__m256i __W, __mmask8 __M, __m256i __X,
+			       __m256i __Y)
+{
+  return (__m256i) __builtin_ia32_permvardi256_mask ((__v4di) __Y,
+						     (__v4di) __X,
+						     (__v4di) __W,
+						     __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_mul_epu32 (__m256i __W, __mmask8 __M, __m256i __X,
+		       __m256i __Y)
+{
+  return (__m256i) __builtin_ia32_pmuludq256_mask ((__v8si) __X,
+						   (__v8si) __Y,
+						   (__v4di) __W, __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_permutexvar_epi32 (__mmask8 __M, __m256i __X, __m256i __Y)
+{
+  return (__m256i) __builtin_ia32_permvarsi256_mask ((__v8si) __Y,
+						     (__v8si) __X,
+						     (__v8si)
+						     _mm256_setzero_si256 (),
+						     __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_mul_epu32 (__mmask8 __M, __m256i __X, __m256i __Y)
+{
+  return (__m256i) __builtin_ia32_pmuludq256_mask ((__v8si) __X,
+						   (__v8si) __Y,
+						   (__v4di)
+						   _mm256_setzero_si256 (),
+						   __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_mul_epu32 (__m128i __W, __mmask8 __M, __m128i __X,
+		    __m128i __Y)
+{
+  return (__m128i) __builtin_ia32_pmuludq128_mask ((__v4si) __X,
+						   (__v4si) __Y,
+						   (__v2di) __W, __M);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_mul_epu32 (__mmask8 __M, __m128i __X, __m128i __Y)
+{
+  return (__m128i) __builtin_ia32_pmuludq128_mask ((__v4si) __X,
+						   (__v4si) __Y,
+						   (__v2di)
+						   _mm_setzero_si128 (),
+						   __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_permutexvar_epi32 (__m256i __W, __mmask8 __M, __m256i __X,
+			       __m256i __Y)
+{
+  return (__m256i) __builtin_ia32_permvarsi256_mask ((__v8si) __Y,
+						     (__v8si) __X,
+						     (__v8si) __W,
+						     __M);
+}
+
+#ifdef __OPTIMIZE__
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_permutex_epi64 (__m256i __W, __mmask8 __M,
+			    __m256i __X, const int __I)
+{
+  return (__m256i) __builtin_ia32_permdi256_mask ((__v4di) __X,
+						  __I,
+						  (__v4di) __W,
+						  (__mmask8) __M);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_permutex_epi64 (__mmask8 __M, __m256i __X, const int __I)
+{
+  return (__m256i) __builtin_ia32_permdi256_mask ((__v4di) __X,
+						  __I,
+						  (__v4di)
+						  _mm256_setzero_si256 (),
+						  (__mmask8) __M);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_shuffle_pd (__m256d __W, __mmask8 __U, __m256d __A,
+			__m256d __B, const int __imm)
+{
+  return (__m256d) __builtin_ia32_shufpd256_mask ((__v4df) __A,
+						  (__v4df) __B, __imm,
+						  (__v4df) __W,
+						  (__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_shuffle_pd (__mmask8 __U, __m256d __A, __m256d __B,
+			 const int __imm)
+{
+  return (__m256d) __builtin_ia32_shufpd256_mask ((__v4df) __A,
+						  (__v4df) __B, __imm,
+						  (__v4df)
+						  _mm256_setzero_pd (),
+						  (__mmask8) __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_shuffle_pd (__m128d __W, __mmask8 __U, __m128d __A,
+		     __m128d __B, const int __imm)
+{
+  return (__m128d) __builtin_ia32_shufpd128_mask ((__v2df) __A,
+						  (__v2df) __B, __imm,
+						  (__v2df) __W,
+						  (__mmask8) __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_shuffle_pd (__mmask8 __U, __m128d __A, __m128d __B,
+		      const int __imm)
+{
+  return (__m128d) __builtin_ia32_shufpd128_mask ((__v2df) __A,
+						  (__v2df) __B, __imm,
+						  (__v2df)
+						  _mm_setzero_pd (),
+						  (__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_shuffle_ps (__m256 __W, __mmask8 __U, __m256 __A,
+			__m256 __B, const int __imm)
+{
+  return (__m256) __builtin_ia32_shufps256_mask ((__v8sf) __A,
+						 (__v8sf) __B, __imm,
+						 (__v8sf) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_shuffle_ps (__mmask8 __U, __m256 __A, __m256 __B,
+			 const int __imm)
+{
+  return (__m256) __builtin_ia32_shufps256_mask ((__v8sf) __A,
+						 (__v8sf) __B, __imm,
+						 (__v8sf)
+						 _mm256_setzero_ps (),
+						 (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_shuffle_ps (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B,
+		     const int __imm)
+{
+  return (__m128) __builtin_ia32_shufps128_mask ((__v4sf) __A,
+						 (__v4sf) __B, __imm,
+						 (__v4sf) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_shuffle_ps (__mmask8 __U, __m128 __A, __m128 __B,
+		      const int __imm)
+{
+  return (__m128) __builtin_ia32_shufps128_mask ((__v4sf) __A,
+						 (__v4sf) __B, __imm,
+						 (__v4sf)
+						 _mm_setzero_ps (),
+						 (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_inserti32x4 (__m256i __A, __m128i __B, const int __imm)
+{
+  return (__m256i) __builtin_ia32_inserti32x4_256_mask ((__v8si) __A,
+							(__v4si) __B,
+							__imm,
+							(__v8si)
+							_mm256_setzero_si256 (),
+							(__mmask8) -
+							1);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_inserti32x4 (__m256i __W, __mmask8 __U, __m256i __A,
+			 __m128i __B, const int __imm)
+{
+  return (__m256i) __builtin_ia32_inserti32x4_256_mask ((__v8si) __A,
+							(__v4si) __B,
+							__imm,
+							(__v8si) __W,
+							(__mmask8)
+							__U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_inserti32x4 (__mmask8 __U, __m256i __A, __m128i __B,
+			  const int __imm)
+{
+  return (__m256i) __builtin_ia32_inserti32x4_256_mask ((__v8si) __A,
+							(__v4si) __B,
+							__imm,
+							(__v8si)
+							_mm256_setzero_si256 (),
+							(__mmask8)
+							__U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_insertf32x4 (__m256 __A, __m128 __B, const int __imm)
+{
+  return (__m256) __builtin_ia32_insertf32x4_256_mask ((__v8sf) __A,
+						       (__v4sf) __B,
+						       __imm,
+						       (__v8sf)
+						       _mm256_setzero_ps (),
+						       (__mmask8) -1);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_insertf32x4 (__m256 __W, __mmask8 __U, __m256 __A,
+			 __m128 __B, const int __imm)
+{
+  return (__m256) __builtin_ia32_insertf32x4_256_mask ((__v8sf) __A,
+						       (__v4sf) __B,
+						       __imm,
+						       (__v8sf) __W,
+						       (__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_insertf32x4 (__mmask8 __U, __m256 __A, __m128 __B,
+			  const int __imm)
+{
+  return (__m256) __builtin_ia32_insertf32x4_256_mask ((__v8sf) __A,
+						       (__v4sf) __B,
+						       __imm,
+						       (__v8sf)
+						       _mm256_setzero_ps (),
+						       (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_extracti32x4_epi32 (__m256i __A, const int __imm)
+{
+  return (__m128i) __builtin_ia32_extracti32x4_256_mask ((__v8si) __A,
+							 __imm,
+							 (__v4si)
+							 _mm_setzero_si128 (),
+							 (__mmask8) -
+							 1);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_extracti32x4_epi32 (__m128i __W, __mmask8 __U, __m256i __A,
+				const int __imm)
+{
+  return (__m128i) __builtin_ia32_extracti32x4_256_mask ((__v8si) __A,
+							 __imm,
+							 (__v4si) __W,
+							 (__mmask8)
+							 __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_extracti32x4_epi32 (__mmask8 __U, __m256i __A,
+				 const int __imm)
+{
+  return (__m128i) __builtin_ia32_extracti32x4_256_mask ((__v8si) __A,
+							 __imm,
+							 (__v4si)
+							 _mm_setzero_si128 (),
+							 (__mmask8)
+							 __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_extractf32x4_ps (__m256 __A, const int __imm)
+{
+  return (__m128) __builtin_ia32_extractf32x4_256_mask ((__v8sf) __A,
+							__imm,
+							(__v4sf)
+							_mm_setzero_ps (),
+							(__mmask8) -
+							1);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_extractf32x4_ps (__m128 __W, __mmask8 __U, __m256 __A,
+			     const int __imm)
+{
+  return (__m128) __builtin_ia32_extractf32x4_256_mask ((__v8sf) __A,
+							__imm,
+							(__v4sf) __W,
+							(__mmask8)
+							__U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_extractf32x4_ps (__mmask8 __U, __m256 __A,
+			      const int __imm)
+{
+  return (__m128) __builtin_ia32_extractf32x4_256_mask ((__v8sf) __A,
+							__imm,
+							(__v4sf)
+							_mm_setzero_ps (),
+							(__mmask8)
+							__U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_shuffle_i64x2 (__m256i __A, __m256i __B, const int __imm)
+{
+  return (__m256i) __builtin_ia32_shuf_i64x2_256_mask ((__v4di) __A,
+						       (__v4di) __B,
+						       __imm,
+						       (__v4di)
+						       _mm256_setzero_si256 (),
+						       (__mmask8) -1);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_shuffle_i64x2 (__m256i __W, __mmask8 __U, __m256i __A,
+			   __m256i __B, const int __imm)
+{
+  return (__m256i) __builtin_ia32_shuf_i64x2_256_mask ((__v4di) __A,
+						       (__v4di) __B,
+						       __imm,
+						       (__v4di) __W,
+						       (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_shuffle_i64x2 (__mmask8 __U, __m256i __A, __m256i __B,
+			    const int __imm)
+{
+  return (__m256i) __builtin_ia32_shuf_i64x2_256_mask ((__v4di) __A,
+						       (__v4di) __B,
+						       __imm,
+						       (__v4di)
+						       _mm256_setzero_si256 (),
+						       (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_shuffle_i32x4 (__m256i __A, __m256i __B, const int __imm)
+{
+  return (__m256i) __builtin_ia32_shuf_i32x4_256_mask ((__v8si) __A,
+						       (__v8si) __B,
+						       __imm,
+						       (__v8si)
+						       _mm256_setzero_si256 (),
+						       (__mmask8) -1);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_shuffle_i32x4 (__m256i __W, __mmask8 __U, __m256i __A,
+			   __m256i __B, const int __imm)
+{
+  return (__m256i) __builtin_ia32_shuf_i32x4_256_mask ((__v8si) __A,
+						       (__v8si) __B,
+						       __imm,
+						       (__v8si) __W,
+						       (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_shuffle_i32x4 (__mmask8 __U, __m256i __A, __m256i __B,
+			    const int __imm)
+{
+  return (__m256i) __builtin_ia32_shuf_i32x4_256_mask ((__v8si) __A,
+						       (__v8si) __B,
+						       __imm,
+						       (__v8si)
+						       _mm256_setzero_si256 (),
+						       (__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_shuffle_f64x2 (__m256d __A, __m256d __B, const int __imm)
+{
+  return (__m256d) __builtin_ia32_shuf_f64x2_256_mask ((__v4df) __A,
+						       (__v4df) __B,
+						       __imm,
+						       (__v4df)
+						       _mm256_setzero_pd (),
+						       (__mmask8) -1);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_shuffle_f64x2 (__m256d __W, __mmask8 __U, __m256d __A,
+			   __m256d __B, const int __imm)
+{
+  return (__m256d) __builtin_ia32_shuf_f64x2_256_mask ((__v4df) __A,
+						       (__v4df) __B,
+						       __imm,
+						       (__v4df) __W,
+						       (__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_shuffle_f64x2 (__mmask8 __U, __m256d __A, __m256d __B,
+			    const int __imm)
+{
+  return (__m256d) __builtin_ia32_shuf_f64x2_256_mask ((__v4df) __A,
+						       (__v4df) __B,
+						       __imm,
+						       (__v4df)
+						       _mm256_setzero_pd (),
+						       (__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_shuffle_f32x4 (__m256 __A, __m256 __B, const int __imm)
+{
+  return (__m256) __builtin_ia32_shuf_f32x4_256_mask ((__v8sf) __A,
+						      (__v8sf) __B,
+						      __imm,
+						      (__v8sf)
+						      _mm256_setzero_ps (),
+						      (__mmask8) -1);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_shuffle_f32x4 (__m256 __W, __mmask8 __U, __m256 __A,
+			   __m256 __B, const int __imm)
+{
+  return (__m256) __builtin_ia32_shuf_f32x4_256_mask ((__v8sf) __A,
+						      (__v8sf) __B,
+						      __imm,
+						      (__v8sf) __W,
+						      (__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_shuffle_f32x4 (__mmask8 __U, __m256 __A, __m256 __B,
+			    const int __imm)
+{
+  return (__m256) __builtin_ia32_shuf_f32x4_256_mask ((__v8sf) __A,
+						      (__v8sf) __B,
+						      __imm,
+						      (__v8sf)
+						      _mm256_setzero_ps (),
+						      (__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_fixupimm_pd (__m256d __A, __m256d __B, __m256i __C,
+		    const int __imm)
+{
+  return (__m256d) __builtin_ia32_fixupimmpd256_mask ((__v4df) __A,
+						      (__v4df) __B,
+						      (__v4di) __C,
+						      __imm,
+						      (__mmask8) -1);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_fixupimm_pd (__m256d __A, __mmask8 __U, __m256d __B,
+			 __m256i __C, const int __imm)
+{
+  return (__m256d) __builtin_ia32_fixupimmpd256_mask ((__v4df) __A,
+						      (__v4df) __B,
+						      (__v4di) __C,
+						      __imm,
+						      (__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_fixupimm_pd (__mmask8 __U, __m256d __A, __m256d __B,
+			  __m256i __C, const int __imm)
+{
+  return (__m256d) __builtin_ia32_fixupimmpd256_maskz ((__v4df) __A,
+						       (__v4df) __B,
+						       (__v4di) __C,
+						       __imm,
+						       (__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_fixupimm_ps (__m256 __A, __m256 __B, __m256i __C,
+		    const int __imm)
+{
+  return (__m256) __builtin_ia32_fixupimmps256_mask ((__v8sf) __A,
+						     (__v8sf) __B,
+						     (__v8si) __C,
+						     __imm,
+						     (__mmask8) -1);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_fixupimm_ps (__m256 __A, __mmask8 __U, __m256 __B,
+			 __m256i __C, const int __imm)
+{
+  return (__m256) __builtin_ia32_fixupimmps256_mask ((__v8sf) __A,
+						     (__v8sf) __B,
+						     (__v8si) __C,
+						     __imm,
+						     (__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_fixupimm_ps (__mmask8 __U, __m256 __A, __m256 __B,
+			  __m256i __C, const int __imm)
+{
+  return (__m256) __builtin_ia32_fixupimmps256_maskz ((__v8sf) __A,
+						      (__v8sf) __B,
+						      (__v8si) __C,
+						      __imm,
+						      (__mmask8) __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_fixupimm_pd (__m128d __A, __m128d __B, __m128i __C,
+		 const int __imm)
+{
+  return (__m128d) __builtin_ia32_fixupimmpd128_mask ((__v2df) __A,
+						      (__v2df) __B,
+						      (__v2di) __C,
+						      __imm,
+						      (__mmask8) -1);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_fixupimm_pd (__m128d __A, __mmask8 __U, __m128d __B,
+		      __m128i __C, const int __imm)
+{
+  return (__m128d) __builtin_ia32_fixupimmpd128_mask ((__v2df) __A,
+						      (__v2df) __B,
+						      (__v2di) __C,
+						      __imm,
+						      (__mmask8) __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_fixupimm_pd (__mmask8 __U, __m128d __A, __m128d __B,
+		       __m128i __C, const int __imm)
+{
+  return (__m128d) __builtin_ia32_fixupimmpd128_maskz ((__v2df) __A,
+						       (__v2df) __B,
+						       (__v2di) __C,
+						       __imm,
+						       (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_fixupimm_ps (__m128 __A, __m128 __B, __m128i __C, const int __imm)
+{
+  return (__m128) __builtin_ia32_fixupimmps128_mask ((__v4sf) __A,
+						     (__v4sf) __B,
+						     (__v4si) __C,
+						     __imm,
+						     (__mmask8) -1);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_fixupimm_ps (__m128 __A, __mmask8 __U, __m128 __B,
+		      __m128i __C, const int __imm)
+{
+  return (__m128) __builtin_ia32_fixupimmps128_mask ((__v4sf) __A,
+						     (__v4sf) __B,
+						     (__v4si) __C,
+						     __imm,
+						     (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_fixupimm_ps (__mmask8 __U, __m128 __A, __m128 __B,
+		       __m128i __C, const int __imm)
+{
+  return (__m128) __builtin_ia32_fixupimmps128_maskz ((__v4sf) __A,
+						      (__v4sf) __B,
+						      (__v4si) __C,
+						      __imm,
+						      (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_srli_epi32 (__m256i __W, __mmask8 __U, __m256i __A,
+			const int __imm)
+{
+  return (__m256i) __builtin_ia32_psrldi256_mask ((__v8si) __A, __imm,
+						  (__v8si) __W,
+						  (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_srli_epi32 (__mmask8 __U, __m256i __A, const int __imm)
+{
+  return (__m256i) __builtin_ia32_psrldi256_mask ((__v8si) __A, __imm,
+						  (__v8si)
+						  _mm256_setzero_si256 (),
+						  (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_srli_epi32 (__m128i __W, __mmask8 __U, __m128i __A,
+		     const int __imm)
+{
+  return (__m128i) __builtin_ia32_psrldi128_mask ((__v4si) __A, __imm,
+						  (__v4si) __W,
+						  (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_srli_epi32 (__mmask8 __U, __m128i __A, const int __imm)
+{
+  return (__m128i) __builtin_ia32_psrldi128_mask ((__v4si) __A, __imm,
+						  (__v4si)
+						  _mm_setzero_si128 (),
+						  (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_srli_epi64 (__m256i __W, __mmask8 __U, __m256i __A,
+			const int __imm)
+{
+  return (__m256i) __builtin_ia32_psrlqi256_mask ((__v4di) __A, __imm,
+						  (__v4di) __W,
+						  (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_srli_epi64 (__mmask8 __U, __m256i __A, const int __imm)
+{
+  return (__m256i) __builtin_ia32_psrlqi256_mask ((__v4di) __A, __imm,
+						  (__v4di)
+						  _mm256_setzero_si256 (),
+						  (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_srli_epi64 (__m128i __W, __mmask8 __U, __m128i __A,
+		     const int __imm)
+{
+  return (__m128i) __builtin_ia32_psrlqi128_mask ((__v2di) __A, __imm,
+						  (__v2di) __W,
+						  (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_srli_epi64 (__mmask8 __U, __m128i __A, const int __imm)
+{
+  return (__m128i) __builtin_ia32_psrlqi128_mask ((__v2di) __A, __imm,
+						  (__v2di)
+						  _mm_setzero_si128 (),
+						  (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_ternarylogic_epi64 (__m256i __A, __m256i __B, __m256i __C,
+			   const int imm)
+{
+  return (__m256i) __builtin_ia32_pternlogq256_mask ((__v4di) __A,
+						     (__v4di) __B,
+						     (__v4di) __C, imm,
+						     (__mmask8) -1);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_ternarylogic_epi64 (__m256i __A, __mmask8 __U,
+				__m256i __B, __m256i __C,
+				const int imm)
+{
+  return (__m256i) __builtin_ia32_pternlogq256_mask ((__v4di) __A,
+						     (__v4di) __B,
+						     (__v4di) __C, imm,
+						     (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_ternarylogic_epi64 (__mmask8 __U, __m256i __A,
+				 __m256i __B, __m256i __C,
+				 const int imm)
+{
+  return (__m256i) __builtin_ia32_pternlogq256_maskz ((__v4di) __A,
+						      (__v4di) __B,
+						      (__v4di) __C,
+						      imm,
+						      (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_ternarylogic_epi32 (__m256i __A, __m256i __B, __m256i __C,
+			   const int imm)
+{
+  return (__m256i) __builtin_ia32_pternlogd256_mask ((__v8si) __A,
+						     (__v8si) __B,
+						     (__v8si) __C, imm,
+						     (__mmask8) -1);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_ternarylogic_epi32 (__m256i __A, __mmask8 __U,
+				__m256i __B, __m256i __C,
+				const int imm)
+{
+  return (__m256i) __builtin_ia32_pternlogd256_mask ((__v8si) __A,
+						     (__v8si) __B,
+						     (__v8si) __C, imm,
+						     (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_ternarylogic_epi32 (__mmask8 __U, __m256i __A,
+				 __m256i __B, __m256i __C,
+				 const int imm)
+{
+  return (__m256i) __builtin_ia32_pternlogd256_maskz ((__v8si) __A,
+						      (__v8si) __B,
+						      (__v8si) __C,
+						      imm,
+						      (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_ternarylogic_epi64 (__m128i __A, __m128i __B, __m128i __C,
+			const int imm)
+{
+  return (__m128i) __builtin_ia32_pternlogq128_mask ((__v2di) __A,
+						     (__v2di) __B,
+						     (__v2di) __C, imm,
+						     (__mmask8) -1);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_ternarylogic_epi64 (__m128i __A, __mmask8 __U,
+			     __m128i __B, __m128i __C, const int imm)
+{
+  return (__m128i) __builtin_ia32_pternlogq128_mask ((__v2di) __A,
+						     (__v2di) __B,
+						     (__v2di) __C, imm,
+						     (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_ternarylogic_epi64 (__mmask8 __U, __m128i __A,
+			      __m128i __B, __m128i __C, const int imm)
+{
+  return (__m128i) __builtin_ia32_pternlogq128_maskz ((__v2di) __A,
+						      (__v2di) __B,
+						      (__v2di) __C,
+						      imm,
+						      (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_ternarylogic_epi32 (__m128i __A, __m128i __B, __m128i __C,
+			const int imm)
+{
+  return (__m128i) __builtin_ia32_pternlogd128_mask ((__v4si) __A,
+						     (__v4si) __B,
+						     (__v4si) __C, imm,
+						     (__mmask8) -1);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_ternarylogic_epi32 (__m128i __A, __mmask8 __U,
+			     __m128i __B, __m128i __C, const int imm)
+{
+  return (__m128i) __builtin_ia32_pternlogd128_mask ((__v4si) __A,
+						     (__v4si) __B,
+						     (__v4si) __C, imm,
+						     (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_ternarylogic_epi32 (__mmask8 __U, __m128i __A,
+			      __m128i __B, __m128i __C, const int imm)
+{
+  return (__m128i) __builtin_ia32_pternlogd128_maskz ((__v4si) __A,
+						      (__v4si) __B,
+						      (__v4si) __C,
+						      imm,
+						      (__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_roundscale_ps (__m256 __A, const int __imm)
+{
+  return (__m256) __builtin_ia32_rndscaleps_256_mask ((__v8sf) __A,
+						      __imm,
+						      (__v8sf)
+						      _mm256_setzero_ps (),
+						      (__mmask8) -1);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_roundscale_ps (__m256 __W, __mmask8 __U, __m256 __A,
+			   const int __imm)
+{
+  return (__m256) __builtin_ia32_rndscaleps_256_mask ((__v8sf) __A,
+						      __imm,
+						      (__v8sf) __W,
+						      (__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_roundscale_ps (__mmask8 __U, __m256 __A, const int __imm)
+{
+  return (__m256) __builtin_ia32_rndscaleps_256_mask ((__v8sf) __A,
+						      __imm,
+						      (__v8sf)
+						      _mm256_setzero_ps (),
+						      (__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_roundscale_pd (__m256d __A, const int __imm)
+{
+  return (__m256d) __builtin_ia32_rndscalepd_256_mask ((__v4df) __A,
+						       __imm,
+						       (__v4df)
+						       _mm256_setzero_pd (),
+						       (__mmask8) -1);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_roundscale_pd (__m256d __W, __mmask8 __U, __m256d __A,
+			   const int __imm)
+{
+  return (__m256d) __builtin_ia32_rndscalepd_256_mask ((__v4df) __A,
+						       __imm,
+						       (__v4df) __W,
+						       (__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_roundscale_pd (__mmask8 __U, __m256d __A, const int __imm)
+{
+  return (__m256d) __builtin_ia32_rndscalepd_256_mask ((__v4df) __A,
+						       __imm,
+						       (__v4df)
+						       _mm256_setzero_pd (),
+						       (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_roundscale_ps (__m128 __A, const int __imm)
+{
+  return (__m128) __builtin_ia32_rndscaleps_128_mask ((__v4sf) __A,
+						      __imm,
+						      (__v4sf)
+						      _mm_setzero_ps (),
+						      (__mmask8) -1);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_roundscale_ps (__m128 __W, __mmask8 __U, __m128 __A,
+			const int __imm)
+{
+  return (__m128) __builtin_ia32_rndscaleps_128_mask ((__v4sf) __A,
+						      __imm,
+						      (__v4sf) __W,
+						      (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_roundscale_ps (__mmask8 __U, __m128 __A, const int __imm)
+{
+  return (__m128) __builtin_ia32_rndscaleps_128_mask ((__v4sf) __A,
+						      __imm,
+						      (__v4sf)
+						      _mm_setzero_ps (),
+						      (__mmask8) __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_roundscale_pd (__m128d __A, const int __imm)
+{
+  return (__m128d) __builtin_ia32_rndscalepd_128_mask ((__v2df) __A,
+						       __imm,
+						       (__v2df)
+						       _mm_setzero_pd (),
+						       (__mmask8) -1);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_roundscale_pd (__m128d __W, __mmask8 __U, __m128d __A,
+			const int __imm)
+{
+  return (__m128d) __builtin_ia32_rndscalepd_128_mask ((__v2df) __A,
+						       __imm,
+						       (__v2df) __W,
+						       (__mmask8) __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_roundscale_pd (__mmask8 __U, __m128d __A, const int __imm)
+{
+  return (__m128d) __builtin_ia32_rndscalepd_128_mask ((__v2df) __A,
+						       __imm,
+						       (__v2df)
+						       _mm_setzero_pd (),
+						       (__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_getmant_ps (__m256 __A, _MM_MANTISSA_NORM_ENUM __B,
+		   _MM_MANTISSA_SIGN_ENUM __C)
+{
+  return (__m256) __builtin_ia32_getmantps256_mask ((__v8sf) __A,
+						    (__C << 2) | __B,
+						    (__v8sf)
+						    _mm256_setzero_ps (),
+						    (__mmask8) -1);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_getmant_ps (__m256 __W, __mmask8 __U, __m256 __A,
+			_MM_MANTISSA_NORM_ENUM __B,
+			_MM_MANTISSA_SIGN_ENUM __C)
+{
+  return (__m256) __builtin_ia32_getmantps256_mask ((__v8sf) __A,
+						    (__C << 2) | __B,
+						    (__v8sf) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_getmant_ps (__mmask8 __U, __m256 __A,
+			 _MM_MANTISSA_NORM_ENUM __B,
+			 _MM_MANTISSA_SIGN_ENUM __C)
+{
+  return (__m256) __builtin_ia32_getmantps256_mask ((__v8sf) __A,
+						    (__C << 2) | __B,
+						    (__v8sf)
+						    _mm256_setzero_ps (),
+						    (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_getmant_ps (__m128 __A, _MM_MANTISSA_NORM_ENUM __B,
+		_MM_MANTISSA_SIGN_ENUM __C)
+{
+  return (__m128) __builtin_ia32_getmantps128_mask ((__v4sf) __A,
+						    (__C << 2) | __B,
+						    (__v4sf)
+						    _mm_setzero_ps (),
+						    (__mmask8) -1);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_getmant_ps (__m128 __W, __mmask8 __U, __m128 __A,
+		     _MM_MANTISSA_NORM_ENUM __B,
+		     _MM_MANTISSA_SIGN_ENUM __C)
+{
+  return (__m128) __builtin_ia32_getmantps128_mask ((__v4sf) __A,
+						    (__C << 2) | __B,
+						    (__v4sf) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_getmant_ps (__mmask8 __U, __m128 __A,
+		      _MM_MANTISSA_NORM_ENUM __B,
+		      _MM_MANTISSA_SIGN_ENUM __C)
+{
+  return (__m128) __builtin_ia32_getmantps128_mask ((__v4sf) __A,
+						    (__C << 2) | __B,
+						    (__v4sf)
+						    _mm_setzero_ps (),
+						    (__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_getmant_pd (__m256d __A, _MM_MANTISSA_NORM_ENUM __B,
+		   _MM_MANTISSA_SIGN_ENUM __C)
+{
+  return (__m256d) __builtin_ia32_getmantpd256_mask ((__v4df) __A,
+						     (__C << 2) | __B,
+						     (__v4df)
+						     _mm256_setzero_pd (),
+						     (__mmask8) -1);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_getmant_pd (__m256d __W, __mmask8 __U, __m256d __A,
+			_MM_MANTISSA_NORM_ENUM __B,
+			_MM_MANTISSA_SIGN_ENUM __C)
+{
+  return (__m256d) __builtin_ia32_getmantpd256_mask ((__v4df) __A,
+						     (__C << 2) | __B,
+						     (__v4df) __W,
+						     (__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_getmant_pd (__mmask8 __U, __m256d __A,
+			 _MM_MANTISSA_NORM_ENUM __B,
+			 _MM_MANTISSA_SIGN_ENUM __C)
+{
+  return (__m256d) __builtin_ia32_getmantpd256_mask ((__v4df) __A,
+						     (__C << 2) | __B,
+						     (__v4df)
+						     _mm256_setzero_pd (),
+						     (__mmask8) __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_getmant_pd (__m128d __A, _MM_MANTISSA_NORM_ENUM __B,
+		_MM_MANTISSA_SIGN_ENUM __C)
+{
+  return (__m128d) __builtin_ia32_getmantpd128_mask ((__v2df) __A,
+						     (__C << 2) | __B,
+						     (__v2df)
+						     _mm_setzero_pd (),
+						     (__mmask8) -1);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_getmant_pd (__m128d __W, __mmask8 __U, __m128d __A,
+		     _MM_MANTISSA_NORM_ENUM __B,
+		     _MM_MANTISSA_SIGN_ENUM __C)
+{
+  return (__m128d) __builtin_ia32_getmantpd128_mask ((__v2df) __A,
+						     (__C << 2) | __B,
+						     (__v2df) __W,
+						     (__mmask8) __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_getmant_pd (__mmask8 __U, __m128d __A,
+		      _MM_MANTISSA_NORM_ENUM __B,
+		      _MM_MANTISSA_SIGN_ENUM __C)
+{
+  return (__m128d) __builtin_ia32_getmantpd128_mask ((__v2df) __A,
+						     (__C << 2) | __B,
+						     (__v2df)
+						     _mm_setzero_pd (),
+						     (__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mmask_i32gather_ps (__m256 __v1_old, __mmask8 __mask,
+			   __m256i __index, float const *__addr,
+			   int __scale)
+{
+  return (__m256) __builtin_ia32_gather3siv8sf ((__v8sf) __v1_old,
+						__addr,
+						(__v8si) __index,
+						__mask, __scale);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mmask_i32gather_ps (__m128 __v1_old, __mmask8 __mask,
+			__m128i __index, float const *__addr,
+			int __scale)
+{
+  return (__m128) __builtin_ia32_gather3siv4sf ((__v4sf) __v1_old,
+						__addr,
+						(__v4si) __index,
+						__mask, __scale);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mmask_i32gather_pd (__m256d __v1_old, __mmask8 __mask,
+			   __m128i __index, double const *__addr,
+			   int __scale)
+{
+  return (__m256d) __builtin_ia32_gather3siv4df ((__v4df) __v1_old,
+						 __addr,
+						 (__v4si) __index,
+						 __mask, __scale);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mmask_i32gather_pd (__m128d __v1_old, __mmask8 __mask,
+			__m128i __index, double const *__addr,
+			int __scale)
+{
+  return (__m128d) __builtin_ia32_gather3siv2df ((__v2df) __v1_old,
+						 __addr,
+						 (__v4si) __index,
+						 __mask, __scale);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mmask_i64gather_ps (__m128 __v1_old, __mmask8 __mask,
+			   __m256i __index, float const *__addr,
+			   int __scale)
+{
+  return (__m128) __builtin_ia32_gather3div8sf ((__v4sf) __v1_old,
+						__addr,
+						(__v4di) __index,
+						__mask, __scale);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mmask_i64gather_ps (__m128 __v1_old, __mmask8 __mask,
+			__m128i __index, float const *__addr,
+			int __scale)
+{
+  return (__m128) __builtin_ia32_gather3div4sf ((__v4sf) __v1_old,
+						__addr,
+						(__v2di) __index,
+						__mask, __scale);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mmask_i64gather_pd (__m256d __v1_old, __mmask8 __mask,
+			   __m256i __index, double const *__addr,
+			   int __scale)
+{
+  return (__m256d) __builtin_ia32_gather3div4df ((__v4df) __v1_old,
+						 __addr,
+						 (__v4di) __index,
+						 __mask, __scale);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mmask_i64gather_pd (__m128d __v1_old, __mmask8 __mask,
+			__m128i __index, double const *__addr,
+			int __scale)
+{
+  return (__m128d) __builtin_ia32_gather3div2df ((__v2df) __v1_old,
+						 __addr,
+						 (__v2di) __index,
+						 __mask, __scale);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mmask_i32gather_epi32 (__m256i __v1_old, __mmask8 __mask,
+			      __m256i __index, int const *__addr,
+			      int __scale)
+{
+  return (__m256i) __builtin_ia32_gather3siv8si ((__v8si) __v1_old,
+						 __addr,
+						 (__v8si) __index,
+						 __mask, __scale);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mmask_i32gather_epi32 (__m128i __v1_old, __mmask8 __mask,
+			   __m128i __index, int const *__addr,
+			   int __scale)
+{
+  return (__m128i) __builtin_ia32_gather3siv4si ((__v4si) __v1_old,
+						 __addr,
+						 (__v4si) __index,
+						 __mask, __scale);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mmask_i32gather_epi64 (__m256i __v1_old, __mmask8 __mask,
+			      __m128i __index, long long const *__addr,
+			      int __scale)
+{
+  return (__m256i) __builtin_ia32_gather3siv4di ((__v4di) __v1_old,
+						 __addr,
+						 (__v4si) __index,
+						 __mask, __scale);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mmask_i32gather_epi64 (__m128i __v1_old, __mmask8 __mask,
+			   __m128i __index, long long const *__addr,
+			   int __scale)
+{
+  return (__m128i) __builtin_ia32_gather3siv2di ((__v2di) __v1_old,
+						 __addr,
+						 (__v4si) __index,
+						 __mask, __scale);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mmask_i64gather_epi32 (__m128i __v1_old, __mmask8 __mask,
+			      __m256i __index, int const *__addr,
+			      int __scale)
+{
+  return (__m128i) __builtin_ia32_gather3div8si ((__v4si) __v1_old,
+						 __addr,
+						 (__v4di) __index,
+						 __mask, __scale);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mmask_i64gather_epi32 (__m128i __v1_old, __mmask8 __mask,
+			   __m128i __index, int const *__addr,
+			   int __scale)
+{
+  return (__m128i) __builtin_ia32_gather3div4si ((__v4si) __v1_old,
+						 __addr,
+						 (__v2di) __index,
+						 __mask, __scale);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mmask_i64gather_epi64 (__m256i __v1_old, __mmask8 __mask,
+			      __m256i __index, long long const *__addr,
+			      int __scale)
+{
+  return (__m256i) __builtin_ia32_gather3div4di ((__v4di) __v1_old,
+						 __addr,
+						 (__v4di) __index,
+						 __mask, __scale);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mmask_i64gather_epi64 (__m128i __v1_old, __mmask8 __mask,
+			   __m128i __index, long long const *__addr,
+			   int __scale)
+{
+  return (__m128i) __builtin_ia32_gather3div2di ((__v2di) __v1_old,
+						 __addr,
+						 (__v2di) __index,
+						 __mask, __scale);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_i32scatter_ps (float *__addr, __m256i __index,
+		      __m256 __v1, const int __scale)
+{
+  __builtin_ia32_scattersiv8sf (__addr, (__mmask8) 0xFF,
+				(__v8si) __index, (__v8sf) __v1,
+				__scale);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_i32scatter_ps (float *__addr, __mmask8 __mask,
+			   __m256i __index, __m256 __v1,
+			   const int __scale)
+{
+  __builtin_ia32_scattersiv8sf (__addr, __mask, (__v8si) __index,
+				(__v8sf) __v1, __scale);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_i32scatter_ps (float *__addr, __m128i __index, __m128 __v1,
+		   const int __scale)
+{
+  __builtin_ia32_scattersiv4sf (__addr, (__mmask8) 0xFF,
+				(__v4si) __index, (__v4sf) __v1,
+				__scale);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_i32scatter_ps (float *__addr, __mmask8 __mask,
+			__m128i __index, __m128 __v1,
+			const int __scale)
+{
+  __builtin_ia32_scattersiv4sf (__addr, __mask, (__v4si) __index,
+				(__v4sf) __v1, __scale);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_i32scatter_pd (double *__addr, __m128i __index,
+		      __m256d __v1, const int __scale)
+{
+  __builtin_ia32_scattersiv4df (__addr, (__mmask8) 0xFF,
+				(__v4si) __index, (__v4df) __v1,
+				__scale);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_i32scatter_pd (double *__addr, __mmask8 __mask,
+			   __m128i __index, __m256d __v1,
+			   const int __scale)
+{
+  __builtin_ia32_scattersiv4df (__addr, __mask, (__v4si) __index,
+				(__v4df) __v1, __scale);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_i32scatter_pd (double *__addr, __m128i __index,
+		   __m128d __v1, const int __scale)
+{
+  __builtin_ia32_scattersiv2df (__addr, (__mmask8) 0xFF,
+				(__v4si) __index, (__v2df) __v1,
+				__scale);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_i32scatter_pd (double *__addr, __mmask8 __mask,
+			__m128i __index, __m128d __v1,
+			const int __scale)
+{
+  __builtin_ia32_scattersiv2df (__addr, __mask, (__v4si) __index,
+				(__v2df) __v1, __scale);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_i64scatter_ps (float *__addr, __m256i __index,
+		      __m128 __v1, const int __scale)
+{
+  __builtin_ia32_scatterdiv8sf (__addr, (__mmask8) 0xFF,
+				(__v4di) __index, (__v4sf) __v1,
+				__scale);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_i64scatter_ps (float *__addr, __mmask8 __mask,
+			   __m256i __index, __m128 __v1,
+			   const int __scale)
+{
+  __builtin_ia32_scatterdiv8sf (__addr, __mask, (__v4di) __index,
+				(__v4sf) __v1, __scale);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_i64scatter_ps (float *__addr, __m128i __index, __m128 __v1,
+		   const int __scale)
+{
+  __builtin_ia32_scatterdiv4sf (__addr, (__mmask8) 0xFF,
+				(__v2di) __index, (__v4sf) __v1,
+				__scale);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_i64scatter_ps (float *__addr, __mmask8 __mask,
+			__m128i __index, __m128 __v1,
+			const int __scale)
+{
+  __builtin_ia32_scatterdiv4sf (__addr, __mask, (__v2di) __index,
+				(__v4sf) __v1, __scale);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_i64scatter_pd (double *__addr, __m256i __index,
+		      __m256d __v1, const int __scale)
+{
+  __builtin_ia32_scatterdiv4df (__addr, (__mmask8) 0xFF,
+				(__v4di) __index, (__v4df) __v1,
+				__scale);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_i64scatter_pd (double *__addr, __mmask8 __mask,
+			   __m256i __index, __m256d __v1,
+			   const int __scale)
+{
+  __builtin_ia32_scatterdiv4df (__addr, __mask, (__v4di) __index,
+				(__v4df) __v1, __scale);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_i64scatter_pd (double *__addr, __m128i __index,
+		   __m128d __v1, const int __scale)
+{
+  __builtin_ia32_scatterdiv2df (__addr, (__mmask8) 0xFF,
+				(__v2di) __index, (__v2df) __v1,
+				__scale);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_i64scatter_pd (double *__addr, __mmask8 __mask,
+			__m128i __index, __m128d __v1,
+			const int __scale)
+{
+  __builtin_ia32_scatterdiv2df (__addr, __mask, (__v2di) __index,
+				(__v2df) __v1, __scale);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_i32scatter_epi32 (int *__addr, __m256i __index,
+			 __m256i __v1, const int __scale)
+{
+  __builtin_ia32_scattersiv8si (__addr, (__mmask8) 0xFF,
+				(__v8si) __index, (__v8si) __v1,
+				__scale);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_i32scatter_epi32 (int *__addr, __mmask8 __mask,
+			      __m256i __index, __m256i __v1,
+			      const int __scale)
+{
+  __builtin_ia32_scattersiv8si (__addr, __mask, (__v8si) __index,
+				(__v8si) __v1, __scale);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_i32scatter_epi32 (int *__addr, __m128i __index,
+		      __m128i __v1, const int __scale)
+{
+  __builtin_ia32_scattersiv4si (__addr, (__mmask8) 0xFF,
+				(__v4si) __index, (__v4si) __v1,
+				__scale);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_i32scatter_epi32 (int *__addr, __mmask8 __mask,
+			   __m128i __index, __m128i __v1,
+			   const int __scale)
+{
+  __builtin_ia32_scattersiv4si (__addr, __mask, (__v4si) __index,
+				(__v4si) __v1, __scale);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_i32scatter_epi64 (long long *__addr, __m128i __index,
+			 __m256i __v1, const int __scale)
+{
+  __builtin_ia32_scattersiv4di (__addr, (__mmask8) 0xFF,
+				(__v4si) __index, (__v4di) __v1,
+				__scale);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_i32scatter_epi64 (long long *__addr, __mmask8 __mask,
+			      __m128i __index, __m256i __v1,
+			      const int __scale)
+{
+  __builtin_ia32_scattersiv4di (__addr, __mask, (__v4si) __index,
+				(__v4di) __v1, __scale);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_i32scatter_epi64 (long long *__addr, __m128i __index,
+		      __m128i __v1, const int __scale)
+{
+  __builtin_ia32_scattersiv2di (__addr, (__mmask8) 0xFF,
+				(__v4si) __index, (__v2di) __v1,
+				__scale);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_i32scatter_epi64 (long long *__addr, __mmask8 __mask,
+			   __m128i __index, __m128i __v1,
+			   const int __scale)
+{
+  __builtin_ia32_scattersiv2di (__addr, __mask, (__v4si) __index,
+				(__v2di) __v1, __scale);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_i64scatter_epi32 (int *__addr, __m256i __index,
+			 __m128i __v1, const int __scale)
+{
+  __builtin_ia32_scatterdiv8si (__addr, (__mmask8) 0xFF,
+				(__v4di) __index, (__v4si) __v1,
+				__scale);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_i64scatter_epi32 (int *__addr, __mmask8 __mask,
+			      __m256i __index, __m128i __v1,
+			      const int __scale)
+{
+  __builtin_ia32_scatterdiv8si (__addr, __mask, (__v4di) __index,
+				(__v4si) __v1, __scale);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_i64scatter_epi32 (int *__addr, __m128i __index,
+		      __m128i __v1, const int __scale)
+{
+  __builtin_ia32_scatterdiv4si (__addr, (__mmask8) 0xFF,
+				(__v2di) __index, (__v4si) __v1,
+				__scale);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_i64scatter_epi32 (int *__addr, __mmask8 __mask,
+			   __m128i __index, __m128i __v1,
+			   const int __scale)
+{
+  __builtin_ia32_scatterdiv4si (__addr, __mask, (__v2di) __index,
+				(__v4si) __v1, __scale);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_i64scatter_epi64 (long long *__addr, __m256i __index,
+			 __m256i __v1, const int __scale)
+{
+  __builtin_ia32_scatterdiv4di (__addr, (__mmask8) 0xFF,
+				(__v4di) __index, (__v4di) __v1,
+				__scale);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_i64scatter_epi64 (long long *__addr, __mmask8 __mask,
+			      __m256i __index, __m256i __v1,
+			      const int __scale)
+{
+  __builtin_ia32_scatterdiv4di (__addr, __mask, (__v4di) __index,
+				(__v4di) __v1, __scale);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_i64scatter_epi64 (long long *__addr, __m128i __index,
+		      __m128i __v1, const int __scale)
+{
+  __builtin_ia32_scatterdiv2di (__addr, (__mmask8) 0xFF,
+				(__v2di) __index, (__v2di) __v1,
+				__scale);
+}
+
+extern __inline void
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_i64scatter_epi64 (long long *__addr, __mmask8 __mask,
+			   __m128i __index, __m128i __v1,
+			   const int __scale)
+{
+  __builtin_ia32_scatterdiv2di (__addr, __mask, (__v2di) __index,
+				(__v2di) __v1, __scale);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_shuffle_epi32 (__m256i __W, __mmask8 __U, __m256i __A,
+			   _MM_PERM_ENUM __mask)
+{
+  return (__m256i) __builtin_ia32_pshufd256_mask ((__v8si) __A, __mask,
+						  (__v8si) __W,
+						  (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_shuffle_epi32 (__mmask8 __U, __m256i __A,
+			    _MM_PERM_ENUM __mask)
+{
+  return (__m256i) __builtin_ia32_pshufd256_mask ((__v8si) __A, __mask,
+						  (__v8si)
+						  _mm256_setzero_si256 (),
+						  (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_shuffle_epi32 (__m128i __W, __mmask8 __U, __m128i __A,
+			_MM_PERM_ENUM __mask)
+{
+  return (__m128i) __builtin_ia32_pshufd128_mask ((__v4si) __A, __mask,
+						  (__v4si) __W,
+						  (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_shuffle_epi32 (__mmask8 __U, __m128i __A,
+			 _MM_PERM_ENUM __mask)
+{
+  return (__m128i) __builtin_ia32_pshufd128_mask ((__v4si) __A, __mask,
+						  (__v4si)
+						  _mm_setzero_si128 (),
+						  (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_rol_epi32 (__m256i __A, const int __B)
+{
+  return (__m256i) __builtin_ia32_prold256_mask ((__v8si) __A, __B,
+						 (__v8si)
+						 _mm256_setzero_si256 (),
+						 (__mmask8) -1);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_rol_epi32 (__m256i __W, __mmask8 __U, __m256i __A,
+		       const int __B)
+{
+  return (__m256i) __builtin_ia32_prold256_mask ((__v8si) __A, __B,
+						 (__v8si) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_rol_epi32 (__mmask8 __U, __m256i __A, const int __B)
+{
+  return (__m256i) __builtin_ia32_prold256_mask ((__v8si) __A, __B,
+						 (__v8si)
+						 _mm256_setzero_si256 (),
+						 (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_rol_epi32 (__m128i __A, const int __B)
+{
+  return (__m128i) __builtin_ia32_prold128_mask ((__v4si) __A, __B,
+						 (__v4si)
+						 _mm_setzero_si128 (),
+						 (__mmask8) -1);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_rol_epi32 (__m128i __W, __mmask8 __U, __m128i __A,
+		    const int __B)
+{
+  return (__m128i) __builtin_ia32_prold128_mask ((__v4si) __A, __B,
+						 (__v4si) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_rol_epi32 (__mmask8 __U, __m128i __A, const int __B)
+{
+  return (__m128i) __builtin_ia32_prold128_mask ((__v4si) __A, __B,
+						 (__v4si)
+						 _mm_setzero_si128 (),
+						 (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_ror_epi32 (__m256i __A, const int __B)
+{
+  return (__m256i) __builtin_ia32_prord256_mask ((__v8si) __A, __B,
+						 (__v8si)
+						 _mm256_setzero_si256 (),
+						 (__mmask8) -1);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_ror_epi32 (__m256i __W, __mmask8 __U, __m256i __A,
+		       const int __B)
+{
+  return (__m256i) __builtin_ia32_prord256_mask ((__v8si) __A, __B,
+						 (__v8si) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_ror_epi32 (__mmask8 __U, __m256i __A, const int __B)
+{
+  return (__m256i) __builtin_ia32_prord256_mask ((__v8si) __A, __B,
+						 (__v8si)
+						 _mm256_setzero_si256 (),
+						 (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_ror_epi32 (__m128i __A, const int __B)
+{
+  return (__m128i) __builtin_ia32_prord128_mask ((__v4si) __A, __B,
+						 (__v4si)
+						 _mm_setzero_si128 (),
+						 (__mmask8) -1);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_ror_epi32 (__m128i __W, __mmask8 __U, __m128i __A,
+		    const int __B)
+{
+  return (__m128i) __builtin_ia32_prord128_mask ((__v4si) __A, __B,
+						 (__v4si) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_ror_epi32 (__mmask8 __U, __m128i __A, const int __B)
+{
+  return (__m128i) __builtin_ia32_prord128_mask ((__v4si) __A, __B,
+						 (__v4si)
+						 _mm_setzero_si128 (),
+						 (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_rol_epi64 (__m256i __A, const int __B)
+{
+  return (__m256i) __builtin_ia32_prolq256_mask ((__v4di) __A, __B,
+						 (__v4di)
+						 _mm256_setzero_si256 (),
+						 (__mmask8) -1);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_rol_epi64 (__m256i __W, __mmask8 __U, __m256i __A,
+		       const int __B)
+{
+  return (__m256i) __builtin_ia32_prolq256_mask ((__v4di) __A, __B,
+						 (__v4di) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_rol_epi64 (__mmask8 __U, __m256i __A, const int __B)
+{
+  return (__m256i) __builtin_ia32_prolq256_mask ((__v4di) __A, __B,
+						 (__v4di)
+						 _mm256_setzero_si256 (),
+						 (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_rol_epi64 (__m128i __A, const int __B)
+{
+  return (__m128i) __builtin_ia32_prolq128_mask ((__v2di) __A, __B,
+						 (__v2di)
+						 _mm_setzero_di (),
+						 (__mmask8) -1);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_rol_epi64 (__m128i __W, __mmask8 __U, __m128i __A,
+		    const int __B)
+{
+  return (__m128i) __builtin_ia32_prolq128_mask ((__v2di) __A, __B,
+						 (__v2di) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_rol_epi64 (__mmask8 __U, __m128i __A, const int __B)
+{
+  return (__m128i) __builtin_ia32_prolq128_mask ((__v2di) __A, __B,
+						 (__v2di)
+						 _mm_setzero_di (),
+						 (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_ror_epi64 (__m256i __A, const int __B)
+{
+  return (__m256i) __builtin_ia32_prorq256_mask ((__v4di) __A, __B,
+						 (__v4di)
+						 _mm256_setzero_si256 (),
+						 (__mmask8) -1);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_ror_epi64 (__m256i __W, __mmask8 __U, __m256i __A,
+		       const int __B)
+{
+  return (__m256i) __builtin_ia32_prorq256_mask ((__v4di) __A, __B,
+						 (__v4di) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_ror_epi64 (__mmask8 __U, __m256i __A, const int __B)
+{
+  return (__m256i) __builtin_ia32_prorq256_mask ((__v4di) __A, __B,
+						 (__v4di)
+						 _mm256_setzero_si256 (),
+						 (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_ror_epi64 (__m128i __A, const int __B)
+{
+  return (__m128i) __builtin_ia32_prorq128_mask ((__v2di) __A, __B,
+						 (__v2di)
+						 _mm_setzero_di (),
+						 (__mmask8) -1);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_ror_epi64 (__m128i __W, __mmask8 __U, __m128i __A,
+		    const int __B)
+{
+  return (__m128i) __builtin_ia32_prorq128_mask ((__v2di) __A, __B,
+						 (__v2di) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_ror_epi64 (__mmask8 __U, __m128i __A, const int __B)
+{
+  return (__m128i) __builtin_ia32_prorq128_mask ((__v2di) __A, __B,
+						 (__v2di)
+						 _mm_setzero_di (),
+						 (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_alignr_epi32 (__m128i __A, __m128i __B, const int __imm)
+{
+  return (__m128i) __builtin_ia32_alignd128_mask ((__v4si) __A,
+						  (__v4si) __B, __imm,
+						  (__v4si)
+						  _mm_setzero_si128 (),
+						  (__mmask8) -1);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_alignr_epi32 (__m128i __W, __mmask8 __U, __m128i __A,
+		       __m128i __B, const int __imm)
+{
+  return (__m128i) __builtin_ia32_alignd128_mask ((__v4si) __A,
+						  (__v4si) __B, __imm,
+						  (__v4si) __W,
+						  (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_alignr_epi32 (__mmask8 __U, __m128i __A, __m128i __B,
+			const int __imm)
+{
+  return (__m128i) __builtin_ia32_alignd128_mask ((__v4si) __A,
+						  (__v4si) __B, __imm,
+						  (__v4si)
+						  _mm_setzero_si128 (),
+						  (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_alignr_epi64 (__m128i __A, __m128i __B, const int __imm)
+{
+  return (__m128i) __builtin_ia32_alignq128_mask ((__v2di) __A,
+						  (__v2di) __B, __imm,
+						  (__v2di)
+						  _mm_setzero_di (),
+						  (__mmask8) -1);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_alignr_epi64 (__m128i __W, __mmask8 __U, __m128i __A,
+		       __m128i __B, const int __imm)
+{
+  return (__m128i) __builtin_ia32_alignq128_mask ((__v2di) __A,
+						  (__v2di) __B, __imm,
+						  (__v2di) __W,
+						  (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_alignr_epi64 (__mmask8 __U, __m128i __A, __m128i __B,
+			const int __imm)
+{
+  return (__m128i) __builtin_ia32_alignq128_mask ((__v2di) __A,
+						  (__v2di) __B, __imm,
+						  (__v2di)
+						  _mm_setzero_di (),
+						  (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_alignr_epi32 (__m256i __A, __m256i __B, const int __imm)
+{
+  return (__m256i) __builtin_ia32_alignd256_mask ((__v8si) __A,
+						  (__v8si) __B, __imm,
+						  (__v8si)
+						  _mm256_setzero_si256 (),
+						  (__mmask8) -1);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_alignr_epi32 (__m256i __W, __mmask8 __U, __m256i __A,
+			  __m256i __B, const int __imm)
+{
+  return (__m256i) __builtin_ia32_alignd256_mask ((__v8si) __A,
+						  (__v8si) __B, __imm,
+						  (__v8si) __W,
+						  (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_alignr_epi32 (__mmask8 __U, __m256i __A, __m256i __B,
+			   const int __imm)
+{
+  return (__m256i) __builtin_ia32_alignd256_mask ((__v8si) __A,
+						  (__v8si) __B, __imm,
+						  (__v8si)
+						  _mm256_setzero_si256 (),
+						  (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_alignr_epi64 (__m256i __A, __m256i __B, const int __imm)
+{
+  return (__m256i) __builtin_ia32_alignq256_mask ((__v4di) __A,
+						  (__v4di) __B, __imm,
+						  (__v4di)
+						  _mm256_setzero_si256 (),
+						  (__mmask8) -1);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_alignr_epi64 (__m256i __W, __mmask8 __U, __m256i __A,
+			  __m256i __B, const int __imm)
+{
+  return (__m256i) __builtin_ia32_alignq256_mask ((__v4di) __A,
+						  (__v4di) __B, __imm,
+						  (__v4di) __W,
+						  (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_alignr_epi64 (__mmask8 __U, __m256i __A, __m256i __B,
+			   const int __imm)
+{
+  return (__m256i) __builtin_ia32_alignq256_mask ((__v4di) __A,
+						  (__v4di) __B, __imm,
+						  (__v4di)
+						  _mm256_setzero_si256 (),
+						  (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cvtps_ph (__m128i __W, __mmask8 __U, __m128 __A,
+		   const int __I)
+{
+  return (__m128i) __builtin_ia32_vcvtps2ph_mask ((__v4sf) __A, __I,
+						  (__v8hi) __W,
+						  (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_cvtps_ph (__mmask8 __U, __m128 __A, const int __I)
+{
+  return (__m128i) __builtin_ia32_vcvtps2ph_mask ((__v4sf) __A, __I,
+						  (__v8hi)
+						  _mm_setzero_hi (),
+						  (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cvtps_ph (__m128i __W, __mmask8 __U, __m256 __A,
+		      const int __I)
+{
+  return (__m128i) __builtin_ia32_vcvtps2ph256_mask ((__v8sf) __A, __I,
+						     (__v8hi) __W,
+						     (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_cvtps_ph (__mmask8 __U, __m256 __A, const int __I)
+{
+  return (__m128i) __builtin_ia32_vcvtps2ph256_mask ((__v8sf) __A, __I,
+						     (__v8hi)
+						     _mm_setzero_hi (),
+						     (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_srai_epi32 (__m256i __W, __mmask8 __U, __m256i __A,
+			const int __imm)
+{
+  return (__m256i) __builtin_ia32_psradi256_mask ((__v8si) __A, __imm,
+						  (__v8si) __W,
+						  (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_srai_epi32 (__mmask8 __U, __m256i __A, const int __imm)
+{
+  return (__m256i) __builtin_ia32_psradi256_mask ((__v8si) __A, __imm,
+						  (__v8si)
+						  _mm256_setzero_si256 (),
+						  (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_srai_epi32 (__m128i __W, __mmask8 __U, __m128i __A,
+		     const int __imm)
+{
+  return (__m128i) __builtin_ia32_psradi128_mask ((__v4si) __A, __imm,
+						  (__v4si) __W,
+						  (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_srai_epi32 (__mmask8 __U, __m128i __A, const int __imm)
+{
+  return (__m128i) __builtin_ia32_psradi128_mask ((__v4si) __A, __imm,
+						  (__v4si)
+						  _mm_setzero_si128 (),
+						  (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_srai_epi64 (__m256i __A, const int __imm)
+{
+  return (__m256i) __builtin_ia32_psraqi256_mask ((__v4di) __A, __imm,
+						  (__v4di)
+						  _mm256_setzero_si256 (),
+						  (__mmask8) -1);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_srai_epi64 (__m256i __W, __mmask8 __U, __m256i __A,
+			const int __imm)
+{
+  return (__m256i) __builtin_ia32_psraqi256_mask ((__v4di) __A, __imm,
+						  (__v4di) __W,
+						  (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_srai_epi64 (__mmask8 __U, __m256i __A, const int __imm)
+{
+  return (__m256i) __builtin_ia32_psraqi256_mask ((__v4di) __A, __imm,
+						  (__v4di)
+						  _mm256_setzero_si256 (),
+						  (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_srai_epi64 (__m128i __A, const int __imm)
+{
+  return (__m128i) __builtin_ia32_psraqi128_mask ((__v2di) __A, __imm,
+						  (__v2di)
+						  _mm_setzero_di (),
+						  (__mmask8) -1);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_srai_epi64 (__m128i __W, __mmask8 __U, __m128i __A,
+		     const int __imm)
+{
+  return (__m128i) __builtin_ia32_psraqi128_mask ((__v2di) __A, __imm,
+						  (__v2di) __W,
+						  (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_srai_epi64 (__mmask8 __U, __m128i __A, const int __imm)
+{
+  return (__m128i) __builtin_ia32_psraqi128_mask ((__v2di) __A, __imm,
+						  (__v2di)
+						  _mm_setzero_si128 (),
+						  (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_slli_epi32 (__m128i __W, __mmask8 __U, __m128i __A, int __B)
+{
+  return (__m128i) __builtin_ia32_pslldi128_mask ((__v4si) __A, __B,
+						  (__v4si) __W,
+						  (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_slli_epi32 (__mmask8 __U, __m128i __A, int __B)
+{
+  return (__m128i) __builtin_ia32_pslldi128_mask ((__v4si) __A, __B,
+						  (__v4si)
+						  _mm_setzero_si128 (),
+						  (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_slli_epi64 (__m128i __W, __mmask8 __U, __m128i __A, int __B)
+{
+  return (__m128i) __builtin_ia32_psllqi128_mask ((__v2di) __A, __B,
+						  (__v2di) __W,
+						  (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_slli_epi64 (__mmask8 __U, __m128i __A, int __B)
+{
+  return (__m128i) __builtin_ia32_psllqi128_mask ((__v2di) __A, __B,
+						  (__v2di)
+						  _mm_setzero_di (),
+						  (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_slli_epi32 (__m256i __W, __mmask8 __U, __m256i __A,
+			int __B)
+{
+  return (__m256i) __builtin_ia32_pslldi256_mask ((__v8si) __A, __B,
+						  (__v8si) __W,
+						  (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_slli_epi32 (__mmask8 __U, __m256i __A, int __B)
+{
+  return (__m256i) __builtin_ia32_pslldi256_mask ((__v8si) __A, __B,
+						  (__v8si)
+						  _mm256_setzero_si256 (),
+						  (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_slli_epi64 (__m256i __W, __mmask8 __U, __m256i __A,
+			int __B)
+{
+  return (__m256i) __builtin_ia32_psllqi256_mask ((__v4di) __A, __B,
+						  (__v4di) __W,
+						  (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_slli_epi64 (__mmask8 __U, __m256i __A, int __B)
+{
+  return (__m256i) __builtin_ia32_psllqi256_mask ((__v4di) __A, __B,
+						  (__v4di)
+						  _mm256_setzero_si256 (),
+						  (__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_permutex_pd (__m256d __W, __mmask8 __U, __m256d __X,
+			 const int __imm)
+{
+  return (__m256d) __builtin_ia32_permdf256_mask ((__v4df) __X, __imm,
+						  (__v4df) __W,
+						  (__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_permutex_pd (__mmask8 __U, __m256d __X, const int __imm)
+{
+  return (__m256d) __builtin_ia32_permdf256_mask ((__v4df) __X, __imm,
+						  (__v4df)
+						  _mm256_setzero_pd (),
+						  (__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_permute_pd (__m256d __W, __mmask8 __U, __m256d __X,
+			const int __C)
+{
+  return (__m256d) __builtin_ia32_vpermilpd256_mask ((__v4df) __X, __C,
+						     (__v4df) __W,
+						     (__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_permute_pd (__mmask8 __U, __m256d __X, const int __C)
+{
+  return (__m256d) __builtin_ia32_vpermilpd256_mask ((__v4df) __X, __C,
+						     (__v4df)
+						     _mm256_setzero_pd (),
+						     (__mmask8) __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_permute_pd (__m128d __W, __mmask8 __U, __m128d __X,
+		     const int __C)
+{
+  return (__m128d) __builtin_ia32_vpermilpd_mask ((__v2df) __X, __C,
+						  (__v2df) __W,
+						  (__mmask8) __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_permute_pd (__mmask8 __U, __m128d __X, const int __C)
+{
+  return (__m128d) __builtin_ia32_vpermilpd_mask ((__v2df) __X, __C,
+						  (__v2df)
+						  _mm_setzero_pd (),
+						  (__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_permute_ps (__m256 __W, __mmask8 __U, __m256 __X,
+			const int __C)
+{
+  return (__m256) __builtin_ia32_vpermilps256_mask ((__v8sf) __X, __C,
+						    (__v8sf) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskz_permute_ps (__mmask8 __U, __m256 __X, const int __C)
+{
+  return (__m256) __builtin_ia32_vpermilps256_mask ((__v8sf) __X, __C,
+						    (__v8sf)
+						    _mm256_setzero_ps (),
+						    (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_permute_ps (__m128 __W, __mmask8 __U, __m128 __X,
+		     const int __C)
+{
+  return (__m128) __builtin_ia32_vpermilps_mask ((__v4sf) __X, __C,
+						 (__v4sf) __W,
+						 (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskz_permute_ps (__mmask8 __U, __m128 __X, const int __C)
+{
+  return (__m128) __builtin_ia32_vpermilps_mask ((__v4sf) __X, __C,
+						 (__v4sf)
+						 _mm_setzero_ps (),
+						 (__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_blend_pd (__mmask8 __U, __m256d __A, __m256d __W)
+{
+  return (__m256d) __builtin_ia32_blendmpd_256_mask ((__v4df) __A,
+						     (__v4df) __W,
+						     (__mmask8) __U);
+}
+
+extern __inline __m256
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_blend_ps (__mmask8 __U, __m256 __A, __m256 __W)
+{
+  return (__m256) __builtin_ia32_blendmps_256_mask ((__v8sf) __A,
+						    (__v8sf) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_blend_epi64 (__mmask8 __U, __m256i __A, __m256i __W)
+{
+  return (__m256i) __builtin_ia32_blendmq_256_mask ((__v4di) __A,
+						    (__v4di) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __m256i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_blend_epi32 (__mmask8 __U, __m256i __A, __m256i __W)
+{
+  return (__m256i) __builtin_ia32_blendmd_256_mask ((__v8si) __A,
+						    (__v8si) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __m128d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_blend_pd (__mmask8 __U, __m128d __A, __m128d __W)
+{
+  return (__m128d) __builtin_ia32_blendmpd_128_mask ((__v2df) __A,
+						     (__v2df) __W,
+						     (__mmask8) __U);
+}
+
+extern __inline __m128
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_blend_ps (__mmask8 __U, __m128 __A, __m128 __W)
+{
+  return (__m128) __builtin_ia32_blendmps_128_mask ((__v4sf) __A,
+						    (__v4sf) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_blend_epi64 (__mmask8 __U, __m128i __A, __m128i __W)
+{
+  return (__m128i) __builtin_ia32_blendmq_128_mask ((__v2di) __A,
+						    (__v2di) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_blend_epi32 (__mmask8 __U, __m128i __A, __m128i __W)
+{
+  return (__m128i) __builtin_ia32_blendmd_128_mask ((__v4si) __A,
+						    (__v4si) __W,
+						    (__mmask8) __U);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cmp_epi64_mask (__m256i __X, __m256i __Y, const int __P)
+{
+  return (__mmask8) __builtin_ia32_cmpq256_mask ((__v4di) __X,
+						 (__v4di) __Y, __P,
+						 (__mmask8) -1);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cmp_epi32_mask (__m256i __X, __m256i __Y, const int __P)
+{
+  return (__mmask8) __builtin_ia32_cmpd256_mask ((__v8si) __X,
+						 (__v8si) __Y, __P,
+						 (__mmask8) -1);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cmp_epu64_mask (__m256i __X, __m256i __Y, const int __P)
+{
+  return (__mmask8) __builtin_ia32_ucmpq256_mask ((__v4di) __X,
+						  (__v4di) __Y, __P,
+						  (__mmask8) -1);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cmp_epu32_mask (__m256i __X, __m256i __Y, const int __P)
+{
+  return (__mmask8) __builtin_ia32_ucmpd256_mask ((__v8si) __X,
+						  (__v8si) __Y, __P,
+						  (__mmask8) -1);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cmp_pd_mask (__m256d __X, __m256d __Y, const int __P)
+{
+  return (__mmask8) __builtin_ia32_cmppd256_mask ((__v4df) __X,
+						  (__v4df) __Y, __P,
+						  (__mmask8) -1);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cmp_ps_mask (__m256 __X, __m256 __Y, const int __P)
+{
+  return (__mmask8) __builtin_ia32_cmpps256_mask ((__v8sf) __X,
+						  (__v8sf) __Y, __P,
+						  (__mmask8) -1);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cmp_epi64_mask (__mmask8 __U, __m256i __X, __m256i __Y,
+			    const int __P)
+{
+  return (__mmask8) __builtin_ia32_cmpq256_mask ((__v4di) __X,
+						 (__v4di) __Y, __P,
+						 (__mmask8) __U);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cmp_epi32_mask (__mmask8 __U, __m256i __X, __m256i __Y,
+			    const int __P)
+{
+  return (__mmask8) __builtin_ia32_cmpd256_mask ((__v8si) __X,
+						 (__v8si) __Y, __P,
+						 (__mmask8) __U);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cmp_epu64_mask (__mmask8 __U, __m256i __X, __m256i __Y,
+			    const int __P)
+{
+  return (__mmask8) __builtin_ia32_ucmpq256_mask ((__v4di) __X,
+						  (__v4di) __Y, __P,
+						  (__mmask8) __U);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cmp_epu32_mask (__mmask8 __U, __m256i __X, __m256i __Y,
+			    const int __P)
+{
+  return (__mmask8) __builtin_ia32_ucmpd256_mask ((__v8si) __X,
+						  (__v8si) __Y, __P,
+						  (__mmask8) __U);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cmp_pd_mask (__mmask8 __U, __m256d __X, __m256d __Y,
+			 const int __P)
+{
+  return (__mmask8) __builtin_ia32_cmppd256_mask ((__v4df) __X,
+						  (__v4df) __Y, __P,
+						  (__mmask8) __U);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cmp_ps_mask (__mmask8 __U, __m256 __X, __m256 __Y,
+			 const int __P)
+{
+  return (__mmask8) __builtin_ia32_cmpps256_mask ((__v8sf) __X,
+						  (__v8sf) __Y, __P,
+						  (__mmask8) __U);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmp_epi64_mask (__m128i __X, __m128i __Y, const int __P)
+{
+  return (__mmask8) __builtin_ia32_cmpq128_mask ((__v2di) __X,
+						 (__v2di) __Y, __P,
+						 (__mmask8) -1);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmp_epi32_mask (__m128i __X, __m128i __Y, const int __P)
+{
+  return (__mmask8) __builtin_ia32_cmpd128_mask ((__v4si) __X,
+						 (__v4si) __Y, __P,
+						 (__mmask8) -1);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmp_epu64_mask (__m128i __X, __m128i __Y, const int __P)
+{
+  return (__mmask8) __builtin_ia32_ucmpq128_mask ((__v2di) __X,
+						  (__v2di) __Y, __P,
+						  (__mmask8) -1);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmp_epu32_mask (__m128i __X, __m128i __Y, const int __P)
+{
+  return (__mmask8) __builtin_ia32_ucmpd128_mask ((__v4si) __X,
+						  (__v4si) __Y, __P,
+						  (__mmask8) -1);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmp_pd_mask (__m128d __X, __m128d __Y, const int __P)
+{
+  return (__mmask8) __builtin_ia32_cmppd128_mask ((__v2df) __X,
+						  (__v2df) __Y, __P,
+						  (__mmask8) -1);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmp_ps_mask (__m128 __X, __m128 __Y, const int __P)
+{
+  return (__mmask8) __builtin_ia32_cmpps128_mask ((__v4sf) __X,
+						  (__v4sf) __Y, __P,
+						  (__mmask8) -1);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cmp_epi64_mask (__mmask8 __U, __m128i __X, __m128i __Y,
+			 const int __P)
+{
+  return (__mmask8) __builtin_ia32_cmpq128_mask ((__v2di) __X,
+						 (__v2di) __Y, __P,
+						 (__mmask8) __U);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cmp_epi32_mask (__mmask8 __U, __m128i __X, __m128i __Y,
+			 const int __P)
+{
+  return (__mmask8) __builtin_ia32_cmpd128_mask ((__v4si) __X,
+						 (__v4si) __Y, __P,
+						 (__mmask8) __U);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cmp_epu64_mask (__mmask8 __U, __m128i __X, __m128i __Y,
+			 const int __P)
+{
+  return (__mmask8) __builtin_ia32_ucmpq128_mask ((__v2di) __X,
+						  (__v2di) __Y, __P,
+						  (__mmask8) __U);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cmp_epu32_mask (__mmask8 __U, __m128i __X, __m128i __Y,
+			 const int __P)
+{
+  return (__mmask8) __builtin_ia32_ucmpd128_mask ((__v4si) __X,
+						  (__v4si) __Y, __P,
+						  (__mmask8) __U);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cmp_pd_mask (__mmask8 __U, __m128d __X, __m128d __Y,
+		      const int __P)
+{
+  return (__mmask8) __builtin_ia32_cmppd128_mask ((__v2df) __X,
+						  (__v2df) __Y, __P,
+						  (__mmask8) __U);
+}
+
+extern __inline __mmask8
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cmp_ps_mask (__mmask8 __U, __m128 __X, __m128 __Y,
+		      const int __P)
+{
+  return (__mmask8) __builtin_ia32_cmpps128_mask ((__v4sf) __X,
+						  (__v4sf) __Y, __P,
+						  (__mmask8) __U);
+}
+
+extern __inline __m256d
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_permutex_pd (__m256d __X, const int __M)
+{
+  return (__m256d) __builtin_ia32_permdf256_mask ((__v4df) __X, __M,
+						  (__v4df)
+						  _mm256_undefined_pd (),
+						  (__mmask8) -1);
+}
+
+extern __inline __mmask8
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cmpneq_epu32_mask (__mmask8 __M, __m256i __X, __m256i __Y)
+{
+  return (__mmask8) __builtin_ia32_ucmpd256_mask ((__v8si) __X,
+						  (__v8si) __Y, 4,
+						  (__mmask8) __M);
+}
+
+extern __inline __mmask8
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cmpneq_epu32_mask (__m256i __X, __m256i __Y)
+{
+  return (__mmask8) __builtin_ia32_ucmpd256_mask ((__v8si) __X,
+						  (__v8si) __Y, 4,
+						  (__mmask8) - 1);
+}
+
+extern __inline __mmask8
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cmplt_epu32_mask (__mmask8 __M, __m256i __X, __m256i __Y)
+{
+  return (__mmask8) __builtin_ia32_ucmpd256_mask ((__v8si) __X,
+						  (__v8si) __Y, 1,
+						  (__mmask8) __M);
+}
+
+extern __inline __mmask8
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cmplt_epu32_mask (__m256i __X, __m256i __Y)
+{
+  return (__mmask8) __builtin_ia32_ucmpd256_mask ((__v8si) __X,
+						  (__v8si) __Y, 1,
+						  (__mmask8) - 1);
+}
+
+extern __inline __mmask8
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cmpge_epu32_mask (__mmask8 __M, __m256i __X, __m256i __Y)
+{
+  return (__mmask8) __builtin_ia32_ucmpd256_mask ((__v8si) __X,
+						  (__v8si) __Y, 5,
+						  (__mmask8) __M);
+}
+
+extern __inline __mmask8
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cmpge_epu32_mask (__m256i __X, __m256i __Y)
+{
+  return (__mmask8) __builtin_ia32_ucmpd256_mask ((__v8si) __X,
+						  (__v8si) __Y, 5,
+						  (__mmask8) - 1);
+}
+
+extern __inline __mmask8
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cmple_epu32_mask (__mmask8 __M, __m256i __X, __m256i __Y)
+{
+  return (__mmask8) __builtin_ia32_ucmpd256_mask ((__v8si) __X,
+						  (__v8si) __Y, 2,
+						  (__mmask8) __M);
+}
+
+extern __inline __mmask8
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cmple_epu32_mask (__m256i __X, __m256i __Y)
+{
+  return (__mmask8) __builtin_ia32_ucmpd256_mask ((__v8si) __X,
+						  (__v8si) __Y, 2,
+						  (__mmask8) - 1);
+}
+
+extern __inline __mmask8
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cmpneq_epu64_mask (__mmask8 __M, __m256i __X, __m256i __Y)
+{
+  return (__mmask8) __builtin_ia32_ucmpq256_mask ((__v4di) __X,
+						  (__v4di) __Y, 4,
+						  (__mmask8) __M);
+}
+
+extern __inline __mmask8
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cmpneq_epu64_mask (__m256i __X, __m256i __Y)
+{
+  return (__mmask8) __builtin_ia32_ucmpq256_mask ((__v4di) __X,
+						  (__v4di) __Y, 4,
+						  (__mmask8) - 1);
+}
+
+extern __inline __mmask8
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cmplt_epu64_mask (__mmask8 __M, __m256i __X, __m256i __Y)
+{
+  return (__mmask8) __builtin_ia32_ucmpq256_mask ((__v4di) __X,
+						  (__v4di) __Y, 1,
+						  (__mmask8) __M);
+}
+
+extern __inline __mmask8
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cmplt_epu64_mask (__m256i __X, __m256i __Y)
+{
+  return (__mmask8) __builtin_ia32_ucmpq256_mask ((__v4di) __X,
+						  (__v4di) __Y, 1,
+						  (__mmask8) - 1);
+}
+
+extern __inline __mmask8
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cmpge_epu64_mask (__mmask8 __M, __m256i __X, __m256i __Y)
+{
+  return (__mmask8) __builtin_ia32_ucmpq256_mask ((__v4di) __X,
+						  (__v4di) __Y, 5,
+						  (__mmask8) __M);
+}
+
+extern __inline __mmask8
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cmpge_epu64_mask (__m256i __X, __m256i __Y)
+{
+  return (__mmask8) __builtin_ia32_ucmpq256_mask ((__v4di) __X,
+						  (__v4di) __Y, 5,
+						  (__mmask8) - 1);
+}
+
+extern __inline __mmask8
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cmple_epu64_mask (__mmask8 __M, __m256i __X, __m256i __Y)
+{
+  return (__mmask8) __builtin_ia32_ucmpq256_mask ((__v4di) __X,
+						  (__v4di) __Y, 2,
+						  (__mmask8) __M);
+}
+
+extern __inline __mmask8
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cmple_epu64_mask (__m256i __X, __m256i __Y)
+{
+  return (__mmask8) __builtin_ia32_ucmpq256_mask ((__v4di) __X,
+						  (__v4di) __Y, 2,
+						  (__mmask8) - 1);
+}
+
+extern __inline __mmask8
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cmpneq_epi32_mask (__mmask8 __M, __m256i __X, __m256i __Y)
+{
+  return (__mmask8) __builtin_ia32_cmpd256_mask ((__v8si) __X,
+						 (__v8si) __Y, 4,
+						 (__mmask8) __M);
+}
+
+extern __inline __mmask8
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cmpneq_epi32_mask (__m256i __X, __m256i __Y)
+{
+  return (__mmask8) __builtin_ia32_cmpd256_mask ((__v8si) __X,
+						 (__v8si) __Y, 4,
+						 (__mmask8) - 1);
+}
+
+extern __inline __mmask8
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cmplt_epi32_mask (__mmask8 __M, __m256i __X, __m256i __Y)
+{
+  return (__mmask8) __builtin_ia32_cmpd256_mask ((__v8si) __X,
+						 (__v8si) __Y, 1,
+						 (__mmask8) __M);
+}
+
+extern __inline __mmask8
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cmplt_epi32_mask (__m256i __X, __m256i __Y)
+{
+  return (__mmask8) __builtin_ia32_cmpd256_mask ((__v8si) __X,
+						 (__v8si) __Y, 1,
+						 (__mmask8) - 1);
+}
+
+extern __inline __mmask8
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cmpge_epi32_mask (__mmask8 __M, __m256i __X, __m256i __Y)
+{
+  return (__mmask8) __builtin_ia32_cmpd256_mask ((__v8si) __X,
+						 (__v8si) __Y, 5,
+						 (__mmask8) __M);
+}
+
+extern __inline __mmask8
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cmpge_epi32_mask (__m256i __X, __m256i __Y)
+{
+  return (__mmask8) __builtin_ia32_cmpd256_mask ((__v8si) __X,
+						 (__v8si) __Y, 5,
+						 (__mmask8) - 1);
+}
+
+extern __inline __mmask8
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cmple_epi32_mask (__mmask8 __M, __m256i __X, __m256i __Y)
+{
+  return (__mmask8) __builtin_ia32_cmpd256_mask ((__v8si) __X,
+						 (__v8si) __Y, 2,
+						 (__mmask8) __M);
+}
+
+extern __inline __mmask8
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cmple_epi32_mask (__m256i __X, __m256i __Y)
+{
+  return (__mmask8) __builtin_ia32_cmpd256_mask ((__v8si) __X,
+						 (__v8si) __Y, 2,
+						 (__mmask8) - 1);
+}
+
+extern __inline __mmask8
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cmpneq_epi64_mask (__mmask8 __M, __m256i __X, __m256i __Y)
+{
+  return (__mmask8) __builtin_ia32_cmpq256_mask ((__v4di) __X,
+						 (__v4di) __Y, 4,
+						 (__mmask8) __M);
+}
+
+extern __inline __mmask8
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cmpneq_epi64_mask (__m256i __X, __m256i __Y)
+{
+  return (__mmask8) __builtin_ia32_cmpq256_mask ((__v4di) __X,
+						 (__v4di) __Y, 4,
+						 (__mmask8) - 1);
+}
+
+extern __inline __mmask8
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cmplt_epi64_mask (__mmask8 __M, __m256i __X, __m256i __Y)
+{
+  return (__mmask8) __builtin_ia32_cmpq256_mask ((__v4di) __X,
+						 (__v4di) __Y, 1,
+						 (__mmask8) __M);
+}
+
+extern __inline __mmask8
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cmplt_epi64_mask (__m256i __X, __m256i __Y)
+{
+  return (__mmask8) __builtin_ia32_cmpq256_mask ((__v4di) __X,
+						 (__v4di) __Y, 1,
+						 (__mmask8) - 1);
+}
+
+extern __inline __mmask8
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cmpge_epi64_mask (__mmask8 __M, __m256i __X, __m256i __Y)
+{
+  return (__mmask8) __builtin_ia32_cmpq256_mask ((__v4di) __X,
+						 (__v4di) __Y, 5,
+						 (__mmask8) __M);
+}
+
+extern __inline __mmask8
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cmpge_epi64_mask (__m256i __X, __m256i __Y)
+{
+  return (__mmask8) __builtin_ia32_cmpq256_mask ((__v4di) __X,
+						 (__v4di) __Y, 5,
+						 (__mmask8) - 1);
+}
+
+extern __inline __mmask8
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mask_cmple_epi64_mask (__mmask8 __M, __m256i __X, __m256i __Y)
+{
+  return (__mmask8) __builtin_ia32_cmpq256_mask ((__v4di) __X,
+						 (__v4di) __Y, 2,
+						 (__mmask8) __M);
+}
+
+extern __inline __mmask8
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cmple_epi64_mask (__m256i __X, __m256i __Y)
+{
+  return (__mmask8) __builtin_ia32_cmpq256_mask ((__v4di) __X,
+						 (__v4di) __Y, 2,
+						 (__mmask8) - 1);
+}
+
+extern __inline __mmask8
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cmpneq_epu32_mask (__mmask8 __M, __m128i __X, __m128i __Y)
+{
+  return (__mmask8) __builtin_ia32_ucmpd128_mask ((__v4si) __X,
+						  (__v4si) __Y, 4,
+						  (__mmask8) __M);
+}
+
+extern __inline __mmask8
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpneq_epu32_mask (__m128i __X, __m128i __Y)
+{
+  return (__mmask8) __builtin_ia32_ucmpd128_mask ((__v4si) __X,
+						  (__v4si) __Y, 4,
+						  (__mmask8) - 1);
+}
+
+extern __inline __mmask8
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cmplt_epu32_mask (__mmask8 __M, __m128i __X, __m128i __Y)
+{
+  return (__mmask8) __builtin_ia32_ucmpd128_mask ((__v4si) __X,
+						  (__v4si) __Y, 1,
+						  (__mmask8) __M);
+}
+
+extern __inline __mmask8
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmplt_epu32_mask (__m128i __X, __m128i __Y)
+{
+  return (__mmask8) __builtin_ia32_ucmpd128_mask ((__v4si) __X,
+						  (__v4si) __Y, 1,
+						  (__mmask8) - 1);
+}
+
+extern __inline __mmask8
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cmpge_epu32_mask (__mmask8 __M, __m128i __X, __m128i __Y)
+{
+  return (__mmask8) __builtin_ia32_ucmpd128_mask ((__v4si) __X,
+						  (__v4si) __Y, 5,
+						  (__mmask8) __M);
+}
+
+extern __inline __mmask8
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpge_epu32_mask (__m128i __X, __m128i __Y)
+{
+  return (__mmask8) __builtin_ia32_ucmpd128_mask ((__v4si) __X,
+						  (__v4si) __Y, 5,
+						  (__mmask8) - 1);
+}
+
+extern __inline __mmask8
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cmple_epu32_mask (__mmask8 __M, __m128i __X, __m128i __Y)
+{
+  return (__mmask8) __builtin_ia32_ucmpd128_mask ((__v4si) __X,
+						  (__v4si) __Y, 2,
+						  (__mmask8) __M);
+}
+
+extern __inline __mmask8
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmple_epu32_mask (__m128i __X, __m128i __Y)
+{
+  return (__mmask8) __builtin_ia32_ucmpd128_mask ((__v4si) __X,
+						  (__v4si) __Y, 2,
+						  (__mmask8) - 1);
+}
+
+extern __inline __mmask8
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cmpneq_epu64_mask (__mmask8 __M, __m128i __X, __m128i __Y)
+{
+  return (__mmask8) __builtin_ia32_ucmpq128_mask ((__v2di) __X,
+						  (__v2di) __Y, 4,
+						  (__mmask8) __M);
+}
+
+extern __inline __mmask8
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpneq_epu64_mask (__m128i __X, __m128i __Y)
+{
+  return (__mmask8) __builtin_ia32_ucmpq128_mask ((__v2di) __X,
+						  (__v2di) __Y, 4,
+						  (__mmask8) - 1);
+}
+
+extern __inline __mmask8
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cmplt_epu64_mask (__mmask8 __M, __m128i __X, __m128i __Y)
+{
+  return (__mmask8) __builtin_ia32_ucmpq128_mask ((__v2di) __X,
+						  (__v2di) __Y, 1,
+						  (__mmask8) __M);
+}
+
+extern __inline __mmask8
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmplt_epu64_mask (__m128i __X, __m128i __Y)
+{
+  return (__mmask8) __builtin_ia32_ucmpq128_mask ((__v2di) __X,
+						  (__v2di) __Y, 1,
+						  (__mmask8) - 1);
+}
+
+extern __inline __mmask8
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cmpge_epu64_mask (__mmask8 __M, __m128i __X, __m128i __Y)
+{
+  return (__mmask8) __builtin_ia32_ucmpq128_mask ((__v2di) __X,
+						  (__v2di) __Y, 5,
+						  (__mmask8) __M);
+}
+
+extern __inline __mmask8
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpge_epu64_mask (__m128i __X, __m128i __Y)
+{
+  return (__mmask8) __builtin_ia32_ucmpq128_mask ((__v2di) __X,
+						  (__v2di) __Y, 5,
+						  (__mmask8) - 1);
+}
+
+extern __inline __mmask8
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cmple_epu64_mask (__mmask8 __M, __m128i __X, __m128i __Y)
+{
+  return (__mmask8) __builtin_ia32_ucmpq128_mask ((__v2di) __X,
+						  (__v2di) __Y, 2,
+						  (__mmask8) __M);
+}
+
+extern __inline __mmask8
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmple_epu64_mask (__m128i __X, __m128i __Y)
+{
+  return (__mmask8) __builtin_ia32_ucmpq128_mask ((__v2di) __X,
+						  (__v2di) __Y, 2,
+						  (__mmask8) - 1);
+}
+
+extern __inline __mmask8
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cmpneq_epi32_mask (__mmask8 __M, __m128i __X, __m128i __Y)
+{
+  return (__mmask8) __builtin_ia32_cmpd128_mask ((__v4si) __X,
+						 (__v4si) __Y, 4,
+						 (__mmask8) __M);
+}
+
+extern __inline __mmask8
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpneq_epi32_mask (__m128i __X, __m128i __Y)
+{
+  return (__mmask8) __builtin_ia32_cmpd128_mask ((__v4si) __X,
+						 (__v4si) __Y, 4,
+						 (__mmask8) - 1);
+}
+
+extern __inline __mmask8
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cmplt_epi32_mask (__mmask8 __M, __m128i __X, __m128i __Y)
+{
+  return (__mmask8) __builtin_ia32_cmpd128_mask ((__v4si) __X,
+						 (__v4si) __Y, 1,
+						 (__mmask8) __M);
+}
+
+extern __inline __mmask8
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmplt_epi32_mask (__m128i __X, __m128i __Y)
+{
+  return (__mmask8) __builtin_ia32_cmpd128_mask ((__v4si) __X,
+						 (__v4si) __Y, 1,
+						 (__mmask8) - 1);
+}
+
+extern __inline __mmask8
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cmpge_epi32_mask (__mmask8 __M, __m128i __X, __m128i __Y)
+{
+  return (__mmask8) __builtin_ia32_cmpd128_mask ((__v4si) __X,
+						 (__v4si) __Y, 5,
+						 (__mmask8) __M);
+}
+
+extern __inline __mmask8
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpge_epi32_mask (__m128i __X, __m128i __Y)
+{
+  return (__mmask8) __builtin_ia32_cmpd128_mask ((__v4si) __X,
+						 (__v4si) __Y, 5,
+						 (__mmask8) - 1);
+}
+
+extern __inline __mmask8
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cmple_epi32_mask (__mmask8 __M, __m128i __X, __m128i __Y)
+{
+  return (__mmask8) __builtin_ia32_cmpd128_mask ((__v4si) __X,
+						 (__v4si) __Y, 2,
+						 (__mmask8) __M);
+}
+
+extern __inline __mmask8
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmple_epi32_mask (__m128i __X, __m128i __Y)
+{
+  return (__mmask8) __builtin_ia32_cmpd128_mask ((__v4si) __X,
+						 (__v4si) __Y, 2,
+						 (__mmask8) - 1);
+}
+
+extern __inline __mmask8
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cmpneq_epi64_mask (__mmask8 __M, __m128i __X, __m128i __Y)
+{
+  return (__mmask8) __builtin_ia32_cmpq128_mask ((__v2di) __X,
+						 (__v2di) __Y, 4,
+						 (__mmask8) __M);
+}
+
+extern __inline __mmask8
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpneq_epi64_mask (__m128i __X, __m128i __Y)
+{
+  return (__mmask8) __builtin_ia32_cmpq128_mask ((__v2di) __X,
+						 (__v2di) __Y, 4,
+						 (__mmask8) - 1);
+}
+
+extern __inline __mmask8
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cmplt_epi64_mask (__mmask8 __M, __m128i __X, __m128i __Y)
+{
+  return (__mmask8) __builtin_ia32_cmpq128_mask ((__v2di) __X,
+						 (__v2di) __Y, 1,
+						 (__mmask8) __M);
+}
+
+extern __inline __mmask8
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmplt_epi64_mask (__m128i __X, __m128i __Y)
+{
+  return (__mmask8) __builtin_ia32_cmpq128_mask ((__v2di) __X,
+						 (__v2di) __Y, 1,
+						 (__mmask8) - 1);
+}
+
+extern __inline __mmask8
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cmpge_epi64_mask (__mmask8 __M, __m128i __X, __m128i __Y)
+{
+  return (__mmask8) __builtin_ia32_cmpq128_mask ((__v2di) __X,
+						 (__v2di) __Y, 5,
+						 (__mmask8) __M);
+}
+
+extern __inline __mmask8
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpge_epi64_mask (__m128i __X, __m128i __Y)
+{
+  return (__mmask8) __builtin_ia32_cmpq128_mask ((__v2di) __X,
+						 (__v2di) __Y, 5,
+						 (__mmask8) - 1);
+}
+
+extern __inline __mmask8
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_cmple_epi64_mask (__mmask8 __M, __m128i __X, __m128i __Y)
+{
+  return (__mmask8) __builtin_ia32_cmpq128_mask ((__v2di) __X,
+						 (__v2di) __Y, 2,
+						 (__mmask8) __M);
+}
+
+extern __inline __mmask8
+  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmple_epi64_mask (__m128i __X, __m128i __Y)
+{
+  return (__mmask8) __builtin_ia32_cmpq128_mask ((__v2di) __X,
+						 (__v2di) __Y, 2,
+						 (__mmask8) - 1);
+}
+
+#else
+#define _mm256_permutex_pd(X, M)						\
+  ((__m256d) __builtin_ia32_permdf256_mask ((__v4df)(__m256d)(X), (int)(M),	\
+					    (__v4df)(__m256d)_mm256_undefined_pd(),\
+					    (__mmask8)-1))
+
+#define _mm256_maskz_permutex_epi64(M, X, I)                    \
+  ((__m256i) __builtin_ia32_permdi256_mask ((__v4di)(__m256i)(X),    \
+					    (int)(I),                \
+					    (__v4di)(__m256i)        \
+					    (_mm256_setzero_si256()),\
+					    (__mmask8)(M)))
+
+#define _mm256_mask_permutex_epi64(W, M, X, I)               \
+  ((__m256i) __builtin_ia32_permdi256_mask ((__v4di)(__m256i)(X), \
+					    (int)(I),             \
+					    (__v4di)(__m256i)(W), \
+					    (__mmask8)(M)))
+
+#define _mm256_insertf32x4(X, Y, C)                                     \
+  ((__m256) __builtin_ia32_insertf32x4_256_mask ((__v8sf)(__m256) (X),  \
+    (__v4sf)(__m128) (Y), (int) (C),					\
+    (__v8sf)(__m256)_mm256_setzero_ps(),				\
+    (__mmask8)-1))
+
+#define _mm256_mask_insertf32x4(W, U, X, Y, C)                          \
+  ((__m256) __builtin_ia32_insertf32x4_256_mask ((__v8sf)(__m256) (X),  \
+    (__v4sf)(__m128) (Y), (int) (C),					\
+    (__v8sf)(__m256)(W),						\
+    (__mmask8)(U)))
+
+#define _mm256_maskz_insertf32x4(U, X, Y, C)                            \
+  ((__m256) __builtin_ia32_insertf32x4_256_mask ((__v8sf)(__m256) (X),	\
+    (__v4sf)(__m128) (Y), (int) (C),					\
+    (__v8sf)(__m256)_mm256_setzero_ps(),				\
+    (__mmask8)(U)))
+
+#define _mm256_inserti32x4(X, Y, C)                                     \
+  ((__m256i) __builtin_ia32_inserti32x4_256_mask ((__v8si)(__m256i) (X),\
+    (__v4si)(__m128i) (Y), (int) (C),					\
+    (__v8si)(__m256i)_mm256_setzero_si256(),				\
+    (__mmask8)-1))
+
+#define _mm256_mask_inserti32x4(W, U, X, Y, C)                          \
+  ((__m256i) __builtin_ia32_inserti32x4_256_mask ((__v8si)(__m256i) (X),\
+    (__v4si)(__m128i) (Y), (int) (C),					\
+    (__v8si)(__m256i)(W),						\
+    (__mmask8)(U)))
+
+#define _mm256_maskz_inserti32x4(U, X, Y, C)                            \
+  ((__m256i) __builtin_ia32_inserti32x4_256_mask ((__v8si)(__m256i) (X),\
+    (__v4si)(__m128i) (Y), (int) (C),					\
+    (__v8si)(__m256i)_mm256_setzero_si256(),				\
+    (__mmask8)(U)))
+
+#define _mm256_extractf32x4_ps(X, C)                                    \
+  ((__m128) __builtin_ia32_extractf32x4_256_mask ((__v8sf)(__m256) (X), \
+    (int) (C),								\
+    (__v4sf)(__m128)_mm_setzero_ps(),					\
+    (__mmask8)-1))
+
+#define _mm256_mask_extractf32x4_ps(W, U, X, C)                         \
+  ((__m128) __builtin_ia32_extractf32x4_256_mask ((__v8sf)(__m256) (X), \
+    (int) (C),								\
+    (__v4sf)(__m128)(W),						\
+    (__mmask8)(U)))
+
+#define _mm256_maskz_extractf32x4_ps(U, X, C)                           \
+  ((__m128) __builtin_ia32_extractf32x4_256_mask ((__v8sf)(__m256) (X), \
+    (int) (C),								\
+    (__v4sf)(__m128)_mm_setzero_ps(),					\
+    (__mmask8)(U)))
+
+#define _mm256_extracti32x4_epi32(X, C)                                 \
+  ((__m128i) __builtin_ia32_extracti32x4_256_mask ((__v8si)(__m256i) (X),\
+    (int) (C), (__v4si)(__m128i)_mm_setzero_si128 (), (__mmask8)-1))
+
+#define _mm256_mask_extracti32x4_epi32(W, U, X, C)                      \
+  ((__m128i) __builtin_ia32_extracti32x4_256_mask ((__v8si)(__m256i) (X),\
+    (int) (C), (__v4si)(__m128i)(W), (__mmask8)(U)))
+
+#define _mm256_maskz_extracti32x4_epi32(U, X, C)                        \
+  ((__m128i) __builtin_ia32_extracti32x4_256_mask ((__v8si)(__m256i) (X),\
+    (int) (C), (__v4si)(__m128i)_mm_setzero_si128 (), (__mmask8)(U)))
+
+#define _mm256_shuffle_i64x2(X, Y, C)                                                   \
+  ((__m256i)  __builtin_ia32_shuf_i64x2_256_mask ((__v4di)(__m256i)(X),                 \
+                                                  (__v4di)(__m256i)(Y), (int)(C),       \
+                                                  (__v4di)(__m256i)_mm256_setzero_si256 (), \
+                                                  (__mmask8)-1))
+
+#define _mm256_mask_shuffle_i64x2(W, U, X, Y, C)                                        \
+  ((__m256i)  __builtin_ia32_shuf_i64x2_256_mask ((__v4di)(__m256i)(X),                 \
+                                                  (__v4di)(__m256i)(Y), (int)(C),       \
+                                                  (__v4di)(__m256i)(W),\
+                                                  (__mmask8)(U)))
+
+#define _mm256_maskz_shuffle_i64x2(U, X, Y, C)                                          \
+  ((__m256i)  __builtin_ia32_shuf_i64x2_256_mask ((__v4di)(__m256i)(X),                 \
+                                                  (__v4di)(__m256i)(Y), (int)(C),       \
+                                                  (__v4di)(__m256i)_mm256_setzero_si256 (), \
+                                                  (__mmask8)(U)))
+
+#define _mm256_shuffle_i32x4(X, Y, C)                                                   \
+  ((__m256i)  __builtin_ia32_shuf_i32x4_256_mask ((__v8si)(__m256i)(X),                 \
+                                                  (__v8si)(__m256i)(Y), (int)(C),       \
+                                                  (__v8si)(__m256i)_mm256_setzero_si256(), \
+                                                  (__mmask8)-1))
+
+#define _mm256_mask_shuffle_i32x4(W, U, X, Y, C)                                        \
+  ((__m256i)  __builtin_ia32_shuf_i32x4_256_mask ((__v8si)(__m256i)(X),                 \
+                                                  (__v8si)(__m256i)(Y), (int)(C),       \
+                                                  (__v8si)(__m256i)(W),                 \
+                                                  (__mmask8)(U)))
+
+#define _mm256_maskz_shuffle_i32x4(U, X, Y, C)                                          \
+  ((__m256i)  __builtin_ia32_shuf_i32x4_256_mask ((__v8si)(__m256i)(X),                 \
+                                                  (__v8si)(__m256i)(Y), (int)(C),       \
+                                                  (__v8si)(__m256i)_mm256_setzero_si256(), \
+                                                  (__mmask8)(U)))
+
+#define _mm256_shuffle_f64x2(X, Y, C)                                                   \
+  ((__m256d)  __builtin_ia32_shuf_f64x2_256_mask ((__v4df)(__m256d)(X),                 \
+                                                  (__v4df)(__m256d)(Y), (int)(C),       \
+                                                  (__v4df)(__m256d)_mm256_setzero_pd(), \
+                                                  (__mmask8)-1))
+
+#define _mm256_mask_shuffle_f64x2(W, U, X, Y, C)                                        \
+  ((__m256d)  __builtin_ia32_shuf_f64x2_256_mask ((__v4df)(__m256d)(X),                 \
+                                                  (__v4df)(__m256d)(Y), (int)(C),       \
+                                                  (__v4df)(__m256d)(W),                 \
+                                                  (__mmask8)(U)))
+
+#define _mm256_maskz_shuffle_f64x2(U, X, Y, C)                                          \
+  ((__m256d)  __builtin_ia32_shuf_f64x2_256_mask ((__v4df)(__m256d)(X),                 \
+                                                  (__v4df)(__m256d)(Y), (int)(C),       \
+                                                  (__v4df)(__m256d)_mm256_setzero_pd(), \
+                                                  (__mmask8)(U)))
+
+#define _mm256_shuffle_f32x4(X, Y, C)                                                   \
+  ((__m256)  __builtin_ia32_shuf_f32x4_256_mask ((__v8sf)(__m256)(X),                   \
+                                                 (__v8sf)(__m256)(Y), (int)(C),         \
+                                                 (__v8sf)(__m256)_mm256_setzero_ps(),   \
+                                                 (__mmask8)-1))
+
+#define _mm256_mask_shuffle_f32x4(W, U, X, Y, C)                                        \
+  ((__m256)  __builtin_ia32_shuf_f32x4_256_mask ((__v8sf)(__m256)(X),                   \
+                                                 (__v8sf)(__m256)(Y), (int)(C),         \
+                                                 (__v8sf)(__m256)(W),                   \
+                                                 (__mmask8)(U)))
+
+#define _mm256_maskz_shuffle_f32x4(U, X, Y, C)                                          \
+  ((__m256)  __builtin_ia32_shuf_f32x4_256_mask ((__v8sf)(__m256)(X),                   \
+                                                 (__v8sf)(__m256)(Y), (int)(C),         \
+                                                 (__v8sf)(__m256)_mm256_setzero_ps(),   \
+                                                 (__mmask8)(U)))
+
+#define _mm256_mask_shuffle_pd(W, U, A, B, C)                                   \
+  ((__m256d)__builtin_ia32_shufpd256_mask ((__v4df)(__m256d)(A),                \
+                                           (__v4df)(__m256d)(B), (int)(C),      \
+                                           (__v4df)(__m256d)(W),                \
+                                           (__mmask8)(U)))
+
+#define _mm256_maskz_shuffle_pd(U, A, B, C)                                     \
+  ((__m256d)__builtin_ia32_shufpd256_mask ((__v4df)(__m256d)(A),                \
+                                           (__v4df)(__m256d)(B), (int)(C),      \
+                                           (__v4df)(__m256d)_mm256_setzero_pd(),\
+                                           (__mmask8)(U)))
+
+#define _mm_mask_shuffle_pd(W, U, A, B, C)                                      \
+  ((__m128d)__builtin_ia32_shufpd128_mask ((__v2df)(__m128d)(A),                \
+                                           (__v2df)(__m128d)(B), (int)(C),      \
+                                           (__v2df)(__m128d)(W),                \
+                                           (__mmask8)(U)))
+
+#define _mm_maskz_shuffle_pd(U, A, B, C)                                        \
+  ((__m128d)__builtin_ia32_shufpd128_mask ((__v2df)(__m128d)(A),                \
+                                           (__v2df)(__m128d)(B), (int)(C),      \
+                                           (__v2df)(__m128d)_mm_setzero_pd(),   \
+                                           (__mmask8)(U)))
+
+#define _mm256_mask_shuffle_ps(W, U, A, B, C)                                   \
+  ((__m256) __builtin_ia32_shufps256_mask ((__v8sf)(__m256)(A),                 \
+                                           (__v8sf)(__m256)(B), (int)(C),       \
+                                           (__v8sf)(__m256)(W),                 \
+                                           (__mmask8)(U)))
+
+#define _mm256_maskz_shuffle_ps(U, A, B, C)                                     \
+  ((__m256) __builtin_ia32_shufps256_mask ((__v8sf)(__m256)(A),                 \
+                                           (__v8sf)(__m256)(B), (int)(C),       \
+                                           (__v8sf)(__m256)_mm256_setzero_ps(), \
+                                           (__mmask8)(U)))
+
+#define _mm_mask_shuffle_ps(W, U, A, B, C)                                      \
+  ((__m128) __builtin_ia32_shufps128_mask ((__v4sf)(__m128)(A),                 \
+                                           (__v4sf)(__m128)(B), (int)(C),       \
+                                           (__v4sf)(__m128)(W),                 \
+                                           (__mmask8)(U)))
+
+#define _mm_maskz_shuffle_ps(U, A, B, C)                                        \
+  ((__m128) __builtin_ia32_shufps128_mask ((__v4sf)(__m128)(A),                 \
+                                           (__v4sf)(__m128)(B), (int)(C),       \
+                                           (__v4sf)(__m128)_mm_setzero_ps(),    \
+                                           (__mmask8)(U)))
+
+#define _mm256_fixupimm_pd(X, Y, Z, C)                                          \
+  ((__m256d)__builtin_ia32_fixupimmpd256_mask ((__v4df)(__m256d)(X),		\
+					       (__v4df)(__m256d)(Y),		\
+					       (__v4di)(__m256i)(Z), (int)(C),	\
+					       (__mmask8)(-1)))
+
+#define _mm256_mask_fixupimm_pd(X, U, Y, Z, C)                                  \
+   ((__m256d)__builtin_ia32_fixupimmpd256_mask ((__v4df)(__m256d)(X),           \
+						(__v4df)(__m256d)(Y),           \
+						(__v4di)(__m256i)(Z), (int)(C), \
+						(__mmask8)(U)))
+
+#define _mm256_maskz_fixupimm_pd(U, X, Y, Z, C)                                 \
+   ((__m256d)__builtin_ia32_fixupimmpd256_maskz ((__v4df)(__m256d)(X),          \
+						 (__v4df)(__m256d)(Y),          \
+						 (__v4di)(__m256i)(Z), (int)(C),\
+						 (__mmask8)(U)))
+
+#define _mm256_fixupimm_ps(X, Y, Z, C)						\
+  ((__m256)__builtin_ia32_fixupimmps256_mask ((__v8sf)(__m256)(X),		\
+					      (__v8sf)(__m256)(Y),		\
+					      (__v8si)(__m256i)(Z), (int)(C),	\
+					      (__mmask8)(-1)))
+
+
+#define _mm256_mask_fixupimm_ps(X, U, Y, Z, C)                                  \
+    ((__m256)__builtin_ia32_fixupimmps256_mask ((__v8sf)(__m256)(X),            \
+						(__v8sf)(__m256)(Y),            \
+						(__v8si)(__m256i)(Z), (int)(C), \
+						(__mmask8)(U)))
+
+#define _mm256_maskz_fixupimm_ps(U, X, Y, Z, C)                                 \
+    ((__m256)__builtin_ia32_fixupimmps256_maskz ((__v8sf)(__m256)(X),           \
+						 (__v8sf)(__m256)(Y),           \
+						 (__v8si)(__m256i)(Z), (int)(C),\
+						 (__mmask8)(U)))
+
+#define _mm_fixupimm_pd(X, Y, Z, C)						\
+  ((__m128d)__builtin_ia32_fixupimmpd128_mask ((__v2df)(__m128d)(X),		\
+					       (__v2df)(__m128d)(Y),		\
+					       (__v2di)(__m128i)(Z), (int)(C), 	\
+					       (__mmask8)(-1)))
+
+
+#define _mm_mask_fixupimm_pd(X, U, Y, Z, C)                                       \
+     ((__m128d)__builtin_ia32_fixupimmpd128_mask ((__v2df)(__m128d)(X),           \
+						  (__v2df)(__m128d)(Y),           \
+						  (__v2di)(__m128i)(Z), (int)(C), \
+						  (__mmask8)(U)))
+
+#define _mm_maskz_fixupimm_pd(U, X, Y, Z, C)                                      \
+     ((__m128d)__builtin_ia32_fixupimmpd128_maskz ((__v2df)(__m128d)(X),          \
+						   (__v2df)(__m128d)(Y),          \
+						   (__v2di)(__m128i)(Z), (int)(C),\
+						   (__mmask8)(U)))
+
+#define _mm_fixupimm_ps(X, Y, Z, C)						\
+   ((__m128)__builtin_ia32_fixupimmps128_mask ((__v4sf)(__m128)(X),		\
+					       (__v4sf)(__m128)(Y),		\
+					       (__v4si)(__m128i)(Z), (int)(C), 	\
+					       (__mmask8)(-1)))
+
+#define _mm_mask_fixupimm_ps(X, U, Y, Z, C)                                      \
+      ((__m128)__builtin_ia32_fixupimmps128_mask ((__v4sf)(__m128)(X),           \
+						  (__v4sf)(__m128)(Y),           \
+						  (__v4si)(__m128i)(Z), (int)(C),\
+						  (__mmask8)(U)))
+
+#define _mm_maskz_fixupimm_ps(U, X, Y, Z, C)                                      \
+      ((__m128)__builtin_ia32_fixupimmps128_maskz ((__v4sf)(__m128)(X),           \
+						   (__v4sf)(__m128)(Y),           \
+						   (__v4si)(__m128i)(Z), (int)(C),\
+						   (__mmask8)(U)))
+
+#define _mm256_mask_srli_epi32(W, U, A, B)				\
+  ((__m256i) __builtin_ia32_psrldi256_mask ((__v8si)(__m256i)(A),	\
+    (int)(B), (__v8si)(__m256i)(W), (__mmask8)(U)))
+
+#define _mm256_maskz_srli_epi32(U, A, B)				\
+  ((__m256i) __builtin_ia32_psrldi256_mask ((__v8si)(__m256i)(A),	\
+    (int)(B), (__v8si)_mm256_setzero_si256(), (__mmask8)(U)))
+
+#define _mm_mask_srli_epi32(W, U, A, B)                                 \
+  ((__m128i) __builtin_ia32_psrldi128_mask ((__v4si)(__m128i)(A),       \
+    (int)(B), (__v4si)(__m128i)(W), (__mmask8)(U)))
+
+#define _mm_maskz_srli_epi32(U, A, B)                                   \
+  ((__m128i) __builtin_ia32_psrldi128_mask ((__v4si)(__m128i)(A),       \
+    (int)(B), (__v4si)_mm_setzero_si128(), (__mmask8)(U)))
+
+#define _mm256_mask_srli_epi64(W, U, A, B)				\
+  ((__m256i) __builtin_ia32_psrlqi256_mask ((__v4di)(__m256i)(A),	\
+    (int)(B), (__v4di)(__m256i)(W), (__mmask8)(U)))
+
+#define _mm256_maskz_srli_epi64(U, A, B)				\
+  ((__m256i) __builtin_ia32_psrlqi256_mask ((__v4di)(__m256i)(A),	\
+    (int)(B), (__v4di)_mm256_setzero_si256 (), (__mmask8)(U)))
+
+#define _mm_mask_srli_epi64(W, U, A, B)                                 \
+  ((__m128i) __builtin_ia32_psrlqi128_mask ((__v2di)(__m128i)(A),       \
+    (int)(B), (__v2di)(__m128i)(W), (__mmask8)(U)))
+
+#define _mm_maskz_srli_epi64(U, A, B)                                   \
+  ((__m128i) __builtin_ia32_psrlqi128_mask ((__v2di)(__m128i)(A),       \
+    (int)(B), (__v2di)_mm_setzero_si128(), (__mmask8)(U)))
+
+#define _mm256_mask_slli_epi32(W, U, X, C)                                \
+  ((__m256i)__builtin_ia32_pslldi256_mask ((__v8si)(__m256i)(X), (int)(C),\
+    (__v8si)(__m256i)(W),\
+    (__mmask8)(U)))
+
+#define _mm256_maskz_slli_epi32(U, X, C)                                  \
+  ((__m256i)__builtin_ia32_pslldi256_mask ((__v8si)(__m256i)(X), (int)(C),\
+    (__v8si)(__m256i)_mm256_setzero_si256(),\
+    (__mmask8)(U)))
+
+#define _mm256_mask_slli_epi64(W, U, X, C)                                \
+  ((__m256i)__builtin_ia32_psllqi256_mask ((__v4di)(__m256i)(X), (int)(C),\
+    (__v4di)(__m256i)(W),\
+    (__mmask8)(U)))
+
+#define _mm256_maskz_slli_epi64(U, X, C)                                  \
+  ((__m256i)__builtin_ia32_psllqi256_mask ((__v4di)(__m256i)(X), (int)(C),\
+    (__v4di)(__m256i)_mm256_setzero_si256 (),\
+    (__mmask8)(U)))
+
+#define _mm_mask_slli_epi32(W, U, X, C)					  \
+  ((__m128i)__builtin_ia32_pslldi128_mask ((__v4si)(__m128i)(X), (int)(C),\
+    (__v4si)(__m128i)(W),\
+    (__mmask8)(U)))
+
+#define _mm_maskz_slli_epi32(U, X, C)					  \
+  ((__m128i)__builtin_ia32_pslldi128_mask ((__v4si)(__m128i)(X), (int)(C),\
+    (__v4si)(__m128i)_mm_setzero_si128 (),\
+    (__mmask8)(U)))
+
+#define _mm_mask_slli_epi64(W, U, X, C)					  \
+  ((__m128i)__builtin_ia32_psllqi128_mask ((__v2di)(__m128i)(X), (int)(C),\
+    (__v2di)(__m128i)(W),\
+    (__mmask8)(U)))
+
+#define _mm_maskz_slli_epi64(U, X, C)					  \
+  ((__m128i)__builtin_ia32_psllqi128_mask ((__v2di)(__m128i)(X), (int)(C),\
+    (__v2di)(__m128i)_mm_setzero_di(),\
+    (__mmask8)(U)))
+
+#define _mm256_ternarylogic_epi64(A, B, C, I)                           \
+  ((__m256i) __builtin_ia32_pternlogq256_mask ((__v4di)(__m256i)(A),	\
+    (__v4di)(__m256i)(B), (__v4di)(__m256i)(C), (int)(I), (__mmask8)-1))
+
+#define _mm256_mask_ternarylogic_epi64(A, U, B, C, I)			\
+  ((__m256i) __builtin_ia32_pternlogq256_mask ((__v4di)(__m256i)(A),	\
+    (__v4di)(__m256i)(B), (__v4di)(__m256i)(C), (int)(I), (__mmask8)(U)))
+
+#define _mm256_maskz_ternarylogic_epi64(U, A, B, C, I)			\
+  ((__m256i) __builtin_ia32_pternlogq256_maskz ((__v4di)(__m256i)(A),	\
+    (__v4di)(__m256i)(B), (__v4di)(__m256i)(C), (int)(I), (__mmask8)(U)))
+
+#define _mm256_ternarylogic_epi32(A, B, C, I)                           \
+  ((__m256i) __builtin_ia32_pternlogd256_mask ((__v8si)(__m256i)(A),	\
+    (__v8si)(__m256i)(B), (__v8si)(__m256i)(C), (int)(I), (__mmask8)-1))
+
+#define _mm256_mask_ternarylogic_epi32(A, U, B, C, I)                   \
+  ((__m256i) __builtin_ia32_pternlogd256_mask ((__v8si)(__m256i)(A),	\
+    (__v8si)(__m256i)(B), (__v8si)(__m256i)(C), (int)(I), (__mmask8)(U)))
+
+#define _mm256_maskz_ternarylogic_epi32(U, A, B, C, I)			\
+  ((__m256i) __builtin_ia32_pternlogd256_maskz ((__v8si)(__m256i)(A),	\
+    (__v8si)(__m256i)(B), (__v8si)(__m256i)(C), (int)(I), (__mmask8)(U)))
+
+#define _mm_ternarylogic_epi64(A, B, C, I)                              \
+  ((__m128i) __builtin_ia32_pternlogq128_mask ((__v2di)(__m128i)(A),	\
+    (__v2di)(__m128i)(B), (__v2di)(__m128i)(C), (int)(I), (__mmask8)-1))
+
+#define _mm_mask_ternarylogic_epi64(A, U, B, C, I)			\
+  ((__m128i) __builtin_ia32_pternlogq128_mask ((__v2di)(__m128i)(A),	\
+    (__v2di)(__m128i)(B), (__v2di)(__m128i)(C), (int)(I), (__mmask8)(U)))
+
+#define _mm_maskz_ternarylogic_epi64(U, A, B, C, I)			\
+  ((__m128i) __builtin_ia32_pternlogq128_maskz ((__v2di)(__m128i)(A),	\
+    (__v2di)(__m128i)(B), (__v2di)(__m128i)(C), (int)(I), (__mmask8)(U)))
+
+#define _mm_ternarylogic_epi32(A, B, C, I)                              \
+  ((__m128i) __builtin_ia32_pternlogd128_mask ((__v4si)(__m128i)(A),	\
+    (__v4si)(__m128i)(B), (__v4si)(__m128i)(C), (int)(I), (__mmask8)-1))
+
+#define _mm_mask_ternarylogic_epi32(A, U, B, C, I)			\
+  ((__m128i) __builtin_ia32_pternlogd128_mask ((__v4si)(__m128i)(A),	\
+    (__v4si)(__m128i)(B), (__v4si)(__m128i)(C), (int)(I), (__mmask8)(U)))
+
+#define _mm_maskz_ternarylogic_epi32(U, A, B, C, I)			\
+  ((__m128i) __builtin_ia32_pternlogd128_maskz ((__v4si)(__m128i)(A),	\
+    (__v4si)(__m128i)(B), (__v4si)(__m128i)(C), (int)(I), (__mmask8)(U)))
+
+#define _mm256_roundscale_ps(A, B)				        \
+  ((__m256) __builtin_ia32_rndscaleps_256_mask ((__v8sf)(__m256)(A),    \
+    (int)(B), (__v8sf)(__m256)_mm256_setzero_ps(), (__mmask8)-1))
+
+#define _mm256_mask_roundscale_ps(W, U, A, B)			        \
+  ((__m256) __builtin_ia32_rndscaleps_256_mask ((__v8sf)(__m256)(A),    \
+    (int)(B), (__v8sf)(__m256)(W), (__mmask8)(U)))
+
+#define _mm256_maskz_roundscale_ps(U, A, B)			        \
+  ((__m256) __builtin_ia32_rndscaleps_256_mask ((__v8sf)(__m256)(A),    \
+    (int)(B), (__v8sf)(__m256)_mm256_setzero_ps(), (__mmask8)(U)))
+
+#define _mm256_roundscale_pd(A, B)				        \
+  ((__m256d) __builtin_ia32_rndscalepd_256_mask ((__v4df)(__m256d)(A),  \
+    (int)(B), (__v4df)(__m256d)_mm256_setzero_pd(), (__mmask8)-1))
+
+#define _mm256_mask_roundscale_pd(W, U, A, B)			        \
+  ((__m256d) __builtin_ia32_rndscalepd_256_mask ((__v4df)(__m256d)(A),  \
+    (int)(B), (__v4df)(__m256d)(W), (__mmask8)(U)))
+
+#define _mm256_maskz_roundscale_pd(U, A, B)			        \
+  ((__m256d) __builtin_ia32_rndscalepd_256_mask ((__v4df)(__m256d)(A),  \
+    (int)(B), (__v4df)(__m256d)_mm256_setzero_pd(), (__mmask8)(U)))
+
+#define _mm_roundscale_ps(A, B)					        \
+  ((__m128) __builtin_ia32_rndscaleps_128_mask ((__v4sf)(__m128)(A),    \
+    (int)(B), (__v4sf)(__m128)_mm_setzero_ps(), (__mmask8)-1))
+
+#define _mm_mask_roundscale_ps(W, U, A, B)			        \
+  ((__m128) __builtin_ia32_rndscaleps_128_mask ((__v4sf)(__m128)(A),    \
+    (int)(B), (__v4sf)(__m128)(W), (__mmask8)(U)))
+
+#define _mm_maskz_roundscale_ps(U, A, B)			        \
+  ((__m128) __builtin_ia32_rndscaleps_128_mask ((__v4sf)(__m128)(A),    \
+    (int)(B), (__v4sf)(__m128)_mm_setzero_ps(), (__mmask8)(U)))
+
+#define _mm_roundscale_pd(A, B)					        \
+  ((__m128d) __builtin_ia32_rndscalepd_128_mask ((__v2df)(__m128d)(A),  \
+    (int)(B), (__v2df)(__m128d)_mm_setzero_pd(), (__mmask8)-1))
+
+#define _mm_mask_roundscale_pd(W, U, A, B)			        \
+  ((__m128d) __builtin_ia32_rndscalepd_128_mask ((__v2df)(__m128d)(A),  \
+    (int)(B), (__v2df)(__m128d)(W), (__mmask8)(U)))
+
+#define _mm_maskz_roundscale_pd(U, A, B)			        \
+  ((__m128d) __builtin_ia32_rndscalepd_128_mask ((__v2df)(__m128d)(A),  \
+    (int)(B), (__v2df)(__m128d)_mm_setzero_pd(), (__mmask8)(U)))
+
+#define _mm256_getmant_ps(X, B, C)                                              \
+  ((__m256) __builtin_ia32_getmantps256_mask ((__v8sf)(__m256) (X),             \
+                                         (int)(((C)<<2) | (B)),                 \
+                                         (__v8sf)(__m256)_mm256_setzero_ps(),   \
+                                         (__mmask8)-1))
+
+#define _mm256_mask_getmant_ps(W, U, X, B, C)                                   \
+  ((__m256) __builtin_ia32_getmantps256_mask ((__v8sf)(__m256) (X),             \
+                                         (int)(((C)<<2) | (B)),                 \
+                                         (__v8sf)(__m256)(W),                   \
+                                         (__mmask8)(U)))
+
+#define _mm256_maskz_getmant_ps(U, X, B, C)                                     \
+  ((__m256) __builtin_ia32_getmantps256_mask ((__v8sf)(__m256) (X),             \
+                                         (int)(((C)<<2) | (B)),                 \
+                                         (__v8sf)(__m256)_mm256_setzero_ps(),   \
+                                         (__mmask8)(U)))
+
+#define _mm_getmant_ps(X, B, C)                                                 \
+  ((__m128) __builtin_ia32_getmantps128_mask ((__v4sf)(__m128) (X),             \
+                                         (int)(((C)<<2) | (B)),                 \
+                                         (__v4sf)(__m128)_mm_setzero_ps(),      \
+                                         (__mmask8)-1))
+
+#define _mm_mask_getmant_ps(W, U, X, B, C)                                      \
+  ((__m128) __builtin_ia32_getmantps128_mask ((__v4sf)(__m128) (X),             \
+                                         (int)(((C)<<2) | (B)),                 \
+                                         (__v4sf)(__m128)(W),                   \
+                                         (__mmask8)(U)))
+
+#define _mm_maskz_getmant_ps(U, X, B, C)                                        \
+  ((__m128) __builtin_ia32_getmantps128_mask ((__v4sf)(__m128) (X),             \
+                                         (int)(((C)<<2) | (B)),                 \
+                                         (__v4sf)(__m128)_mm_setzero_ps(),      \
+                                         (__mmask8)(U)))
+
+#define _mm256_getmant_pd(X, B, C)                                              \
+  ((__m256d) __builtin_ia32_getmantpd256_mask ((__v4df)(__m256d) (X),           \
+                                         (int)(((C)<<2) | (B)),                 \
+                                          (__v4df)(__m256d)_mm256_setzero_pd(), \
+                                          (__mmask8)-1))
+
+#define _mm256_mask_getmant_pd(W, U, X, B, C)                                   \
+  ((__m256d) __builtin_ia32_getmantpd256_mask ((__v4df)(__m256d) (X),           \
+                                         (int)(((C)<<2) | (B)),                 \
+                                          (__v4df)(__m256d)(W),                 \
+                                          (__mmask8)(U)))
+
+#define _mm256_maskz_getmant_pd(U, X, B, C)                                     \
+  ((__m256d) __builtin_ia32_getmantpd256_mask ((__v4df)(__m256d) (X),           \
+                                         (int)(((C)<<2) | (B)),                 \
+                                          (__v4df)(__m256d)_mm256_setzero_pd(), \
+                                          (__mmask8)(U)))
+
+#define _mm_getmant_pd(X, B, C)                                                 \
+  ((__m128d) __builtin_ia32_getmantpd128_mask ((__v2df)(__m128d) (X),           \
+                                         (int)(((C)<<2) | (B)),                 \
+                                          (__v2df)(__m128d)_mm_setzero_pd(),    \
+                                          (__mmask8)-1))
+
+#define _mm_mask_getmant_pd(W, U, X, B, C)                                      \
+  ((__m128d) __builtin_ia32_getmantpd128_mask ((__v2df)(__m128d) (X),           \
+                                         (int)(((C)<<2) | (B)),                 \
+                                          (__v2df)(__m128d)(W),                 \
+                                          (__mmask8)(U)))
+
+#define _mm_maskz_getmant_pd(U, X, B, C)                                        \
+  ((__m128d) __builtin_ia32_getmantpd128_mask ((__v2df)(__m128d) (X),           \
+                                         (int)(((C)<<2) | (B)),                 \
+                                          (__v2df)(__m128d)_mm_setzero_pd(),    \
+                                          (__mmask8)(U)))
+
+#define _mm256_mmask_i32gather_ps(V1OLD, MASK, INDEX, ADDR, SCALE)	\
+  (__m256) __builtin_ia32_gather3siv8sf ((__v8sf)(__m256)V1OLD,		\
+					 (float const *)ADDR,		\
+					 (__v8si)(__m256i)INDEX,	\
+					 (__mmask8)MASK, (int)SCALE)
+
+#define _mm_mmask_i32gather_ps(V1OLD, MASK, INDEX, ADDR, SCALE)		\
+  (__m128) __builtin_ia32_gather3siv4sf ((__v4sf)(__m128)V1OLD,		\
+					 (float const *)ADDR,		\
+					 (__v4si)(__m128i)INDEX,	\
+					 (__mmask8)MASK, (int)SCALE)
+
+#define _mm256_mmask_i32gather_pd(V1OLD, MASK, INDEX, ADDR, SCALE)	\
+  (__m256d) __builtin_ia32_gather3siv4df ((__v4df)(__m256d)V1OLD,	\
+					  (double const *)ADDR,		\
+					  (__v4si)(__m128i)INDEX,	\
+					  (__mmask8)MASK, (int)SCALE)
+
+#define _mm_mmask_i32gather_pd(V1OLD, MASK, INDEX, ADDR, SCALE)		\
+  (__m128d) __builtin_ia32_gather3siv2df ((__v2df)(__m128d)V1OLD,	\
+					  (double const *)ADDR,		\
+					  (__v4si)(__m128i)INDEX,	\
+					  (__mmask8)MASK, (int)SCALE)
+
+#define _mm256_mmask_i64gather_ps(V1OLD, MASK, INDEX, ADDR, SCALE)	\
+  (__m128) __builtin_ia32_gather3div8sf ((__v4sf)(__m128)V1OLD,		\
+					 (float const *)ADDR,		\
+					 (__v4di)(__m256i)INDEX,	\
+					 (__mmask8)MASK, (int)SCALE)
+
+#define _mm_mmask_i64gather_ps(V1OLD, MASK, INDEX, ADDR, SCALE)		\
+  (__m128) __builtin_ia32_gather3div4sf ((__v4sf)(__m128)V1OLD,		\
+					 (float const *)ADDR,		\
+					 (__v2di)(__m128i)INDEX,	\
+					 (__mmask8)MASK, (int)SCALE)
+
+#define _mm256_mmask_i64gather_pd(V1OLD, MASK, INDEX, ADDR, SCALE)	\
+  (__m256d) __builtin_ia32_gather3div4df ((__v4df)(__m256d)V1OLD,	\
+					  (double const *)ADDR,		\
+					  (__v4di)(__m256i)INDEX,	\
+					  (__mmask8)MASK, (int)SCALE)
+
+#define _mm_mmask_i64gather_pd(V1OLD, MASK, INDEX, ADDR, SCALE)		\
+  (__m128d) __builtin_ia32_gather3div2df ((__v2df)(__m128d)V1OLD,	\
+					  (double const *)ADDR,		\
+					  (__v2di)(__m128i)INDEX,	\
+					  (__mmask8)MASK, (int)SCALE)
+
+#define _mm256_mmask_i32gather_epi32(V1OLD, MASK, INDEX, ADDR, SCALE)	\
+  (__m256i) __builtin_ia32_gather3siv8si ((__v8si)(__m256i)V1OLD,	\
+					  (int const *)ADDR,		\
+					  (__v8si)(__m256i)INDEX,	\
+					  (__mmask8)MASK, (int)SCALE)
+
+#define _mm_mmask_i32gather_epi32(V1OLD, MASK, INDEX, ADDR, SCALE)	\
+  (__m128i) __builtin_ia32_gather3siv4si ((__v4si)(__m128i)V1OLD,	\
+					  (int const *)ADDR,		\
+					  (__v4si)(__m128i)INDEX,	\
+					  (__mmask8)MASK, (int)SCALE)
+
+#define _mm256_mmask_i32gather_epi64(V1OLD, MASK, INDEX, ADDR, SCALE)	\
+  (__m256i) __builtin_ia32_gather3siv4di ((__v4di)(__m256i)V1OLD,	\
+					  (long long const *)ADDR,	\
+					  (__v4si)(__m128i)INDEX,	\
+					  (__mmask8)MASK, (int)SCALE)
+
+#define _mm_mmask_i32gather_epi64(V1OLD, MASK, INDEX, ADDR, SCALE)	\
+  (__m128i) __builtin_ia32_gather3siv2di ((__v2di)(__m128i)V1OLD,	\
+					  (long long const *)ADDR,	\
+					  (__v4si)(__m128i)INDEX,	\
+					  (__mmask8)MASK, (int)SCALE)
+
+#define _mm256_mmask_i64gather_epi32(V1OLD, MASK, INDEX, ADDR, SCALE)	\
+  (__m128i) __builtin_ia32_gather3div8si ((__v4si)(__m128i)V1OLD,	\
+					  (int const *)ADDR,		\
+					  (__v4di)(__m256i)INDEX,	\
+					  (__mmask8)MASK, (int)SCALE)
+
+#define _mm_mmask_i64gather_epi32(V1OLD, MASK, INDEX, ADDR, SCALE)	\
+  (__m128i) __builtin_ia32_gather3div4si ((__v4si)(__m128i)V1OLD,	\
+					  (int const *)ADDR,		\
+					  (__v2di)(__m128i)INDEX,	\
+					  (__mmask8)MASK, (int)SCALE)
+
+#define _mm256_mmask_i64gather_epi64(V1OLD, MASK, INDEX, ADDR, SCALE)	\
+  (__m256i) __builtin_ia32_gather3div4di ((__v4di)(__m256i)V1OLD,	\
+					  (long long const *)ADDR,	\
+					  (__v4di)(__m256i)INDEX,	\
+					  (__mmask8)MASK, (int)SCALE)
+
+#define _mm_mmask_i64gather_epi64(V1OLD, MASK, INDEX, ADDR, SCALE)	\
+  (__m128i) __builtin_ia32_gather3div2di ((__v2di)(__m128i)V1OLD,	\
+					  (long long const *)ADDR,	\
+					  (__v2di)(__m128i)INDEX,	\
+					  (__mmask8)MASK, (int)SCALE)
+
+#define _mm256_i32scatter_ps(ADDR, INDEX, V1, SCALE)			\
+  __builtin_ia32_scattersiv8sf ((float *)ADDR, (__mmask8)0xFF,		\
+				(__v8si)(__m256i)INDEX,			\
+				(__v8sf)(__m256)V1, (int)SCALE)
+
+#define _mm256_mask_i32scatter_ps(ADDR, MASK, INDEX, V1, SCALE)		\
+  __builtin_ia32_scattersiv8sf ((float *)ADDR, (__mmask8)MASK,		\
+				(__v8si)(__m256i)INDEX,			\
+				(__v8sf)(__m256)V1, (int)SCALE)
+
+#define _mm_i32scatter_ps(ADDR, INDEX, V1, SCALE)			\
+  __builtin_ia32_scattersiv4sf ((float *)ADDR, (__mmask8)0xFF,		\
+				(__v4si)(__m128i)INDEX,			\
+				(__v4sf)(__m128)V1, (int)SCALE)
+
+#define _mm_mask_i32scatter_ps(ADDR, MASK, INDEX, V1, SCALE)		\
+  __builtin_ia32_scattersiv4sf ((float *)ADDR, (__mmask8)MASK,		\
+				(__v4si)(__m128i)INDEX,			\
+				(__v4sf)(__m128)V1, (int)SCALE)
+
+#define _mm256_i32scatter_pd(ADDR, INDEX, V1, SCALE)			\
+  __builtin_ia32_scattersiv4df ((double *)ADDR, (__mmask8)0xFF,		\
+				(__v4si)(__m128i)INDEX,			\
+				(__v4df)(__m256d)V1, (int)SCALE)
+
+#define _mm256_mask_i32scatter_pd(ADDR, MASK, INDEX, V1, SCALE)		\
+  __builtin_ia32_scattersiv4df ((double *)ADDR, (__mmask8)MASK,		\
+				(__v4si)(__m128i)INDEX,			\
+				(__v4df)(__m256d)V1, (int)SCALE)
+
+#define _mm_i32scatter_pd(ADDR, INDEX, V1, SCALE)			\
+  __builtin_ia32_scattersiv2df ((double *)ADDR, (__mmask8)0xFF,		\
+				(__v4si)(__m128i)INDEX,			\
+				(__v2df)(__m128d)V1, (int)SCALE)
+
+#define _mm_mask_i32scatter_pd(ADDR, MASK, INDEX, V1, SCALE)		\
+  __builtin_ia32_scattersiv2df ((double *)ADDR, (__mmask8)MASK,		\
+				(__v4si)(__m128i)INDEX,			\
+				(__v2df)(__m128d)V1, (int)SCALE)
+
+#define _mm256_i64scatter_ps(ADDR, INDEX, V1, SCALE)			\
+  __builtin_ia32_scatterdiv8sf ((float *)ADDR, (__mmask8)0xFF,		\
+				(__v4di)(__m256i)INDEX,			\
+				(__v4sf)(__m128)V1, (int)SCALE)
+
+#define _mm256_mask_i64scatter_ps(ADDR, MASK, INDEX, V1, SCALE)		\
+  __builtin_ia32_scatterdiv8sf ((float *)ADDR, (__mmask8)MASK,		\
+				(__v4di)(__m256i)INDEX,			\
+				(__v4sf)(__m128)V1, (int)SCALE)
+
+#define _mm_i64scatter_ps(ADDR, INDEX, V1, SCALE)			\
+  __builtin_ia32_scatterdiv4sf ((float *)ADDR, (__mmask8)0xFF,		\
+				(__v2di)(__m128i)INDEX,			\
+				(__v4sf)(__m128)V1, (int)SCALE)
+
+#define _mm_mask_i64scatter_ps(ADDR, MASK, INDEX, V1, SCALE)		\
+  __builtin_ia32_scatterdiv4sf ((float *)ADDR, (__mmask8)MASK,		\
+				(__v2di)(__m128i)INDEX,			\
+				(__v4sf)(__m128)V1, (int)SCALE)
+
+#define _mm256_i64scatter_pd(ADDR, INDEX, V1, SCALE)			\
+  __builtin_ia32_scatterdiv4df ((double *)ADDR, (__mmask8)0xFF,		\
+				(__v4di)(__m256i)INDEX,			\
+				(__v4df)(__m256d)V1, (int)SCALE)
+
+#define _mm256_mask_i64scatter_pd(ADDR, MASK, INDEX, V1, SCALE)		\
+  __builtin_ia32_scatterdiv4df ((double *)ADDR, (__mmask8)MASK,		\
+				(__v4di)(__m256i)INDEX,			\
+				(__v4df)(__m256d)V1, (int)SCALE)
+
+#define _mm_i64scatter_pd(ADDR, INDEX, V1, SCALE)			\
+  __builtin_ia32_scatterdiv2df ((double *)ADDR, (__mmask8)0xFF,		\
+				(__v2di)(__m128i)INDEX,			\
+				(__v2df)(__m128d)V1, (int)SCALE)
+
+#define _mm_mask_i64scatter_pd(ADDR, MASK, INDEX, V1, SCALE)		\
+  __builtin_ia32_scatterdiv2df ((double *)ADDR, (__mmask8)MASK,		\
+				(__v2di)(__m128i)INDEX,			\
+				(__v2df)(__m128d)V1, (int)SCALE)
+
+#define _mm256_i32scatter_epi32(ADDR, INDEX, V1, SCALE)			\
+  __builtin_ia32_scattersiv8si ((int *)ADDR, (__mmask8)0xFF,		\
+				(__v8si)(__m256i)INDEX,			\
+				(__v8si)(__m256i)V1, (int)SCALE)
+
+#define _mm256_mask_i32scatter_epi32(ADDR, MASK, INDEX, V1, SCALE)	\
+  __builtin_ia32_scattersiv8si ((int *)ADDR, (__mmask8)MASK,		\
+				(__v8si)(__m256i)INDEX,			\
+				(__v8si)(__m256i)V1, (int)SCALE)
+
+#define _mm_i32scatter_epi32(ADDR, INDEX, V1, SCALE)			\
+  __builtin_ia32_scattersiv4si ((int *)ADDR, (__mmask8)0xFF,		\
+				(__v4si)(__m128i)INDEX,			\
+				(__v4si)(__m128i)V1, (int)SCALE)
+
+#define _mm_mask_i32scatter_epi32(ADDR, MASK, INDEX, V1, SCALE)		\
+  __builtin_ia32_scattersiv4si ((int *)ADDR, (__mmask8)MASK,		\
+				(__v4si)(__m128i)INDEX,			\
+				(__v4si)(__m128i)V1, (int)SCALE)
+
+#define _mm256_i32scatter_epi64(ADDR, INDEX, V1, SCALE)			\
+  __builtin_ia32_scattersiv4di ((long long *)ADDR, (__mmask8)0xFF,	\
+				(__v4si)(__m128i)INDEX,			\
+				(__v4di)(__m256i)V1, (int)SCALE)
+
+#define _mm256_mask_i32scatter_epi64(ADDR, MASK, INDEX, V1, SCALE)	\
+  __builtin_ia32_scattersiv4di ((long long *)ADDR, (__mmask8)MASK,	\
+				(__v4si)(__m128i)INDEX,			\
+				(__v4di)(__m256i)V1, (int)SCALE)
+
+#define _mm_i32scatter_epi64(ADDR, INDEX, V1, SCALE)			\
+  __builtin_ia32_scattersiv2di ((long long *)ADDR, (__mmask8)0xFF,	\
+				(__v4si)(__m128i)INDEX,			\
+				(__v2di)(__m128i)V1, (int)SCALE)
+
+#define _mm_mask_i32scatter_epi64(ADDR, MASK, INDEX, V1, SCALE)		\
+  __builtin_ia32_scattersiv2di ((long long *)ADDR, (__mmask8)MASK,	\
+				(__v4si)(__m128i)INDEX,			\
+				(__v2di)(__m128i)V1, (int)SCALE)
+
+#define _mm256_i64scatter_epi32(ADDR, INDEX, V1, SCALE)			\
+  __builtin_ia32_scatterdiv8si ((int *)ADDR, (__mmask8)0xFF,		\
+				(__v4di)(__m256i)INDEX,			\
+				(__v4si)(__m128i)V1, (int)SCALE)
+
+#define _mm256_mask_i64scatter_epi32(ADDR, MASK, INDEX, V1, SCALE)	\
+  __builtin_ia32_scatterdiv8si ((int *)ADDR, (__mmask8)MASK,		\
+				(__v4di)(__m256i)INDEX,			\
+				(__v4si)(__m128i)V1, (int)SCALE)
+
+#define _mm_i64scatter_epi32(ADDR, INDEX, V1, SCALE)			\
+  __builtin_ia32_scatterdiv4si ((int *)ADDR, (__mmask8)0xFF,		\
+				(__v2di)(__m128i)INDEX,			\
+				(__v4si)(__m128i)V1, (int)SCALE)
+
+#define _mm_mask_i64scatter_epi32(ADDR, MASK, INDEX, V1, SCALE)		\
+  __builtin_ia32_scatterdiv4si ((int *)ADDR, (__mmask8)MASK,		\
+				(__v2di)(__m128i)INDEX,			\
+				(__v4si)(__m128i)V1, (int)SCALE)
+
+#define _mm256_i64scatter_epi64(ADDR, INDEX, V1, SCALE)			\
+  __builtin_ia32_scatterdiv4di ((long long *)ADDR, (__mmask8)0xFF,	\
+				(__v4di)(__m256i)INDEX,			\
+				(__v4di)(__m256i)V1, (int)SCALE)
+
+#define _mm256_mask_i64scatter_epi64(ADDR, MASK, INDEX, V1, SCALE)	\
+  __builtin_ia32_scatterdiv4di ((long long *)ADDR, (__mmask8)MASK,	\
+				(__v4di)(__m256i)INDEX,			\
+				(__v4di)(__m256i)V1, (int)SCALE)
+
+#define _mm_i64scatter_epi64(ADDR, INDEX, V1, SCALE)			\
+  __builtin_ia32_scatterdiv2di ((long long *)ADDR, (__mmask8)0xFF,	\
+				(__v2di)(__m128i)INDEX,			\
+				(__v2di)(__m128i)V1, (int)SCALE)
+
+#define _mm_mask_i64scatter_epi64(ADDR, MASK, INDEX, V1, SCALE)		\
+  __builtin_ia32_scatterdiv2di ((long long *)ADDR, (__mmask8)MASK,	\
+				(__v2di)(__m128i)INDEX,			\
+				(__v2di)(__m128i)V1, (int)SCALE)
+
+#define _mm256_mask_shuffle_epi32(W, U, X, C)                                       \
+  ((__m256i)  __builtin_ia32_pshufd256_mask ((__v8si)(__m256i)(X), (int)(C),        \
+                                             (__v8si)(__m256i)(W),                  \
+                                             (__mmask8)(U)))
+
+#define _mm256_maskz_shuffle_epi32(U, X, C)                                         \
+  ((__m256i)  __builtin_ia32_pshufd256_mask ((__v8si)(__m256i)(X), (int)(C),        \
+                                             (__v8si)(__m256i)_mm256_setzero_si256(),  \
+                                             (__mmask8)(U)))
+
+#define _mm_mask_shuffle_epi32(W, U, X, C)                                          \
+  ((__m128i)  __builtin_ia32_pshufd128_mask ((__v4si)(__m128i)(X), (int)(C),        \
+                                             (__v4si)(__m128i)(W),                  \
+                                             (__mmask8)(U)))
+
+#define _mm_maskz_shuffle_epi32(U, X, C)                                            \
+  ((__m128i)  __builtin_ia32_pshufd128_mask ((__v4si)(__m128i)(X), (int)(C),        \
+                                             (__v4si)(__m128i)_mm_setzero_si128 (),     \
+                                             (__mmask8)(U)))
+
+#define _mm256_rol_epi64(A, B)                                                 \
+  ((__m256i)__builtin_ia32_prolq256_mask ((__v4di)(__m256i)(A), (int)(B),      \
+                                          (__v4di)(__m256i)_mm256_setzero_si256 (),\
+                                          (__mmask8)-1))
+
+#define _mm256_mask_rol_epi64(W, U, A, B)                                      \
+  ((__m256i)__builtin_ia32_prolq256_mask ((__v4di)(__m256i)(A), (int)(B),      \
+                                          (__v4di)(__m256i)(W),                \
+                                          (__mmask8)(U)))
+
+#define _mm256_maskz_rol_epi64(U, A, B)                                        \
+  ((__m256i)__builtin_ia32_prolq256_mask ((__v4di)(__m256i)(A), (int)(B),      \
+                                          (__v4di)(__m256i)_mm256_setzero_si256 (),\
+                                          (__mmask8)(U)))
+
+#define _mm_rol_epi64(A, B)                                                    \
+  ((__m128i)__builtin_ia32_prolq128_mask ((__v2di)(__m128i)(A), (int)(B),      \
+                                          (__v2di)(__m128i)_mm_setzero_di(),   \
+                                          (__mmask8)-1))
+
+#define _mm_mask_rol_epi64(W, U, A, B)                                         \
+  ((__m128i)__builtin_ia32_prolq128_mask ((__v2di)(__m128i)(A), (int)(B),      \
+                                          (__v2di)(__m128i)(W),                \
+                                          (__mmask8)(U)))
+
+#define _mm_maskz_rol_epi64(U, A, B)                                           \
+  ((__m128i)__builtin_ia32_prolq128_mask ((__v2di)(__m128i)(A), (int)(B),      \
+                                          (__v2di)(__m128i)_mm_setzero_di(),   \
+                                          (__mmask8)(U)))
+
+#define _mm256_ror_epi64(A, B)                                                 \
+  ((__m256i)__builtin_ia32_prorq256_mask ((__v4di)(__m256i)(A), (int)(B),      \
+                                          (__v4di)(__m256i)_mm256_setzero_si256 (),\
+                                          (__mmask8)-1))
+
+#define _mm256_mask_ror_epi64(W, U, A, B)                                      \
+  ((__m256i)__builtin_ia32_prorq256_mask ((__v4di)(__m256i)(A), (int)(B),      \
+                                          (__v4di)(__m256i)(W),                \
+                                          (__mmask8)(U)))
+
+#define _mm256_maskz_ror_epi64(U, A, B)                                        \
+  ((__m256i)__builtin_ia32_prorq256_mask ((__v4di)(__m256i)(A), (int)(B),      \
+                                          (__v4di)(__m256i)_mm256_setzero_si256 (),\
+                                          (__mmask8)(U)))
+
+#define _mm_ror_epi64(A, B)                                                    \
+  ((__m128i)__builtin_ia32_prorq128_mask ((__v2di)(__m128i)(A), (int)(B),      \
+                                          (__v2di)(__m128i)_mm_setzero_di(),   \
+                                          (__mmask8)-1))
+
+#define _mm_mask_ror_epi64(W, U, A, B)                                         \
+  ((__m128i)__builtin_ia32_prorq128_mask ((__v2di)(__m128i)(A), (int)(B),      \
+                                          (__v2di)(__m128i)(W),                \
+                                          (__mmask8)(U)))
+
+#define _mm_maskz_ror_epi64(U, A, B)                                           \
+  ((__m128i)__builtin_ia32_prorq128_mask ((__v2di)(__m128i)(A), (int)(B),      \
+                                          (__v2di)(__m128i)_mm_setzero_di(),   \
+                                          (__mmask8)(U)))
+
+#define _mm256_rol_epi32(A, B)                                                 \
+  ((__m256i)__builtin_ia32_prold256_mask ((__v8si)(__m256i)(A), (int)(B),      \
+                                          (__v8si)(__m256i)_mm256_setzero_si256(),\
+                                          (__mmask8)-1))
+
+#define _mm256_mask_rol_epi32(W, U, A, B)                                      \
+  ((__m256i)__builtin_ia32_prold256_mask ((__v8si)(__m256i)(A), (int)(B),      \
+                                          (__v8si)(__m256i)(W),                \
+                                          (__mmask8)(U)))
+
+#define _mm256_maskz_rol_epi32(U, A, B)                                        \
+  ((__m256i)__builtin_ia32_prold256_mask ((__v8si)(__m256i)(A), (int)(B),      \
+                                          (__v8si)(__m256i)_mm256_setzero_si256(),\
+                                          (__mmask8)(U)))
+
+#define _mm_rol_epi32(A, B)                                                    \
+  ((__m128i)__builtin_ia32_prold128_mask ((__v4si)(__m128i)(A), (int)(B),      \
+                                          (__v4si)(__m128i)_mm_setzero_si128 (),   \
+                                          (__mmask8)-1))
+
+#define _mm_mask_rol_epi32(W, U, A, B)                                         \
+  ((__m128i)__builtin_ia32_prold128_mask ((__v4si)(__m128i)(A), (int)(B),      \
+                                          (__v4si)(__m128i)(W),                \
+                                          (__mmask8)(U)))
+
+#define _mm_maskz_rol_epi32(U, A, B)                                           \
+  ((__m128i)__builtin_ia32_prold128_mask ((__v4si)(__m128i)(A), (int)(B),      \
+                                          (__v4si)(__m128i)_mm_setzero_si128 (),   \
+                                          (__mmask8)(U)))
+
+#define _mm256_ror_epi32(A, B)                                                 \
+  ((__m256i)__builtin_ia32_prord256_mask ((__v8si)(__m256i)(A), (int)(B),      \
+                                          (__v8si)(__m256i)_mm256_setzero_si256(),\
+                                          (__mmask8)-1))
+
+#define _mm256_mask_ror_epi32(W, U, A, B)                                      \
+  ((__m256i)__builtin_ia32_prord256_mask ((__v8si)(__m256i)(A), (int)(B),      \
+                                          (__v8si)(__m256i)(W),                \
+                                          (__mmask8)(U)))
+
+#define _mm256_maskz_ror_epi32(U, A, B)                                        \
+  ((__m256i)__builtin_ia32_prord256_mask ((__v8si)(__m256i)(A), (int)(B),      \
+                                          (__v8si)(__m256i)_mm256_setzero_si256(),\
+                                          (__mmask8)(U)))
+
+#define _mm_ror_epi32(A, B)                                                    \
+  ((__m128i)__builtin_ia32_prord128_mask ((__v4si)(__m128i)(A), (int)(B),      \
+                                          (__v4si)(__m128i)_mm_setzero_si128 (),   \
+                                          (__mmask8)-1))
+
+#define _mm_mask_ror_epi32(W, U, A, B)                                         \
+  ((__m128i)__builtin_ia32_prord128_mask ((__v4si)(__m128i)(A), (int)(B),      \
+                                          (__v4si)(__m128i)(W),                \
+                                          (__mmask8)(U)))
+
+#define _mm_maskz_ror_epi32(U, A, B)                                           \
+  ((__m128i)__builtin_ia32_prord128_mask ((__v4si)(__m128i)(A), (int)(B),      \
+                                          (__v4si)(__m128i)_mm_setzero_si128 (),   \
+                                          (__mmask8)(U)))
+
+#define _mm256_alignr_epi32(X, Y, C)                                        \
+    ((__m256i)__builtin_ia32_alignd256_mask ((__v8si)(__m256i)(X),          \
+        (__v8si)(__m256i)(Y), (int)(C), (__v8si)(__m256i)(X), (__mmask8)-1))
+
+#define _mm256_mask_alignr_epi32(W, U, X, Y, C)                             \
+    ((__m256i)__builtin_ia32_alignd256_mask ((__v8si)(__m256i)(X),          \
+        (__v8si)(__m256i)(Y), (int)(C), (__v8si)(__m256i)(W), (__mmask8)(U)))
+
+#define _mm256_maskz_alignr_epi32(U, X, Y, C)                               \
+    ((__m256i)__builtin_ia32_alignd256_mask ((__v8si)(__m256i)(X),          \
+        (__v8si)(__m256i)(Y), (int)(C), (__v8si)(__m256i)_mm256_setzero_si256 (),\
+        (__mmask8)(U)))
+
+#define _mm256_alignr_epi64(X, Y, C)                                        \
+    ((__m256i)__builtin_ia32_alignq256_mask ((__v4di)(__m256i)(X),          \
+        (__v4di)(__m256i)(Y), (int)(C), (__v4di)(__m256i)(X), (__mmask8)-1))
+
+#define _mm256_mask_alignr_epi64(W, U, X, Y, C)                             \
+    ((__m256i)__builtin_ia32_alignq256_mask ((__v4di)(__m256i)(X),          \
+        (__v4di)(__m256i)(Y), (int)(C), (__v4di)(__m256i)(W), (__mmask8)(U)))
+
+#define _mm256_maskz_alignr_epi64(U, X, Y, C)                               \
+    ((__m256i)__builtin_ia32_alignq256_mask ((__v4di)(__m256i)(X),          \
+        (__v4di)(__m256i)(Y), (int)(C), (__v4di)(__m256i)_mm256_setzero_si256 (),\
+        (__mmask8)(U)))
+
+#define _mm_alignr_epi32(X, Y, C)                                           \
+    ((__m128i)__builtin_ia32_alignd128_mask ((__v4si)(__m128i)(X),          \
+        (__v4si)(__m128i)(Y), (int)(C), (__v4si)(__m128i)(X), (__mmask8)-1))
+
+#define _mm_mask_alignr_epi32(W, U, X, Y, C)                                \
+    ((__m128i)__builtin_ia32_alignd128_mask ((__v4si)(__m128i)(X),          \
+        (__v4si)(__m128i)(Y), (int)(C), (__v4si)(__m128i)(W), (__mmask8)(U)))
+
+#define _mm_maskz_alignr_epi32(U, X, Y, C)                                  \
+    ((__m128i)__builtin_ia32_alignd128_mask ((__v4si)(__m128i)(X),          \
+        (__v4si)(__m128i)(Y), (int)(C), (__v4si)(__m128i)_mm_setzero_si128(),\
+        (__mmask8)(U)))
+
+#define _mm_alignr_epi64(X, Y, C)                                           \
+    ((__m128i)__builtin_ia32_alignq128_mask ((__v2di)(__m128i)(X),          \
+        (__v2di)(__m128i)(Y), (int)(C), (__v2di)(__m128i)(X), (__mmask8)-1))
+
+#define _mm_mask_alignr_epi64(W, U, X, Y, C)                                \
+    ((__m128i)__builtin_ia32_alignq128_mask ((__v2di)(__m128i)(X),          \
+        (__v2di)(__m128i)(Y), (int)(C), (__v2di)(__m128i)(X), (__mmask8)-1))
+
+#define _mm_maskz_alignr_epi64(U, X, Y, C)                                  \
+    ((__m128i)__builtin_ia32_alignq128_mask ((__v2di)(__m128i)(X),          \
+        (__v2di)(__m128i)(Y), (int)(C), (__v2di)(__m128i)_mm_setzero_si128(),\
+        (__mmask8)(U)))
+
+#define _mm_mask_cvtps_ph(W, U, A, I)						\
+  ((__m128i) __builtin_ia32_vcvtps2ph_mask ((__v4sf)(__m128) A, (int) (I),      \
+      (__v8hi)(__m128i) (W), (__mmask8) (U)))
+
+#define _mm_maskz_cvtps_ph(U, A, I)						\
+  ((__m128i) __builtin_ia32_vcvtps2ph_mask ((__v4sf)(__m128) A, (int) (I),      \
+      (__v8hi)(__m128i) _mm_setzero_hi(), (__mmask8) (U)))
+
+#define _mm256_mask_cvtps_ph(W, U, A, I)					\
+  ((__m128i) __builtin_ia32_vcvtps2ph256_mask ((__v8sf)(__m256) A, (int) (I),	\
+      (__v8hi)(__m128i) (W), (__mmask8) (U)))
+
+#define _mm256_maskz_cvtps_ph(U, A, I)						\
+  ((__m128i) __builtin_ia32_vcvtps2ph256_mask ((__v8sf)(__m256) A, (int) (I),   \
+      (__v8hi)(__m128i) _mm_setzero_hi(), (__mmask8) (U)))
+
+#define _mm256_mask_srai_epi32(W, U, A, B)				\
+  ((__m256i) __builtin_ia32_psradi256_mask ((__v8si)(__m256i)(A),	\
+    (int)(B), (__v8si)(__m256i)(W), (__mmask8)(U)))
+
+#define _mm256_maskz_srai_epi32(U, A, B)				\
+  ((__m256i) __builtin_ia32_psradi256_mask ((__v8si)(__m256i)(A),	\
+    (int)(B), (__v8si)_mm256_setzero_si256(), (__mmask8)(U)))
+
+#define _mm_mask_srai_epi32(W, U, A, B)                                 \
+  ((__m128i) __builtin_ia32_psradi128_mask ((__v4si)(__m128i)(A),       \
+    (int)(B), (__v4si)(__m128i)(W), (__mmask8)(U)))
+
+#define _mm_maskz_srai_epi32(U, A, B)                                   \
+  ((__m128i) __builtin_ia32_psradi128_mask ((__v4si)(__m128i)(A),       \
+    (int)(B), (__v4si)_mm_setzero_si128(), (__mmask8)(U)))
+
+#define _mm256_srai_epi64(A, B)						\
+  ((__m256i) __builtin_ia32_psraqi256_mask ((__v4di)(__m256i)(A),	\
+    (int)(B), (__v4di)_mm256_setzero_si256 (), (__mmask8)-1))
+
+#define _mm256_mask_srai_epi64(W, U, A, B)				\
+  ((__m256i) __builtin_ia32_psraqi256_mask ((__v4di)(__m256i)(A),	\
+    (int)(B), (__v4di)(__m256i)(W), (__mmask8)(U)))
+
+#define _mm256_maskz_srai_epi64(U, A, B)				\
+  ((__m256i) __builtin_ia32_psraqi256_mask ((__v4di)(__m256i)(A),	\
+    (int)(B), (__v4di)_mm256_setzero_si256 (), (__mmask8)(U)))
+
+#define _mm_srai_epi64(A, B)						\
+  ((__m128i) __builtin_ia32_psraqi128_mask ((__v2di)(__m128i)(A),       \
+    (int)(B), (__v2di)_mm_setzero_si128(), (__mmask8)-1))
+
+#define _mm_mask_srai_epi64(W, U, A, B)                                 \
+  ((__m128i) __builtin_ia32_psraqi128_mask ((__v2di)(__m128i)(A),       \
+    (int)(B), (__v2di)(__m128i)(W), (__mmask8)(U)))
+
+#define _mm_maskz_srai_epi64(U, A, B)                                   \
+  ((__m128i) __builtin_ia32_psraqi128_mask ((__v2di)(__m128i)(A),       \
+    (int)(B), (__v2di)_mm_setzero_si128(), (__mmask8)(U)))
+
+#define _mm256_mask_permutex_pd(W, U, A, B)                             \
+  ((__m256d) __builtin_ia32_permdf256_mask ((__v4df)(__m256d)(A),       \
+    (int)(B), (__v4df)(__m256d)(W), (__mmask8)(U)))
+
+#define _mm256_maskz_permutex_pd(U, A, B)				\
+  ((__m256d) __builtin_ia32_permdf256_mask ((__v4df)(__m256d)(A),       \
+    (int)(B), (__v4df)(__m256d)_mm256_setzero_pd(), (__mmask8)(U)))
+
+#define _mm256_mask_permute_pd(W, U, X, C)					    \
+  ((__m256d) __builtin_ia32_vpermilpd256_mask ((__v4df)(__m256d)(X), (int)(C),	    \
+					      (__v4df)(__m256d)(W),		    \
+					      (__mmask8)(U)))
+
+#define _mm256_maskz_permute_pd(U, X, C)					    \
+  ((__m256d) __builtin_ia32_vpermilpd256_mask ((__v4df)(__m256d)(X), (int)(C),	    \
+					      (__v4df)(__m256d)_mm256_setzero_pd(), \
+					      (__mmask8)(U)))
+
+#define _mm256_mask_permute_ps(W, U, X, C)					    \
+  ((__m256) __builtin_ia32_vpermilps256_mask ((__v8sf)(__m256)(X), (int)(C),	    \
+					      (__v8sf)(__m256)(W), (__mmask8)(U)))
+
+#define _mm256_maskz_permute_ps(U, X, C)					    \
+  ((__m256) __builtin_ia32_vpermilps256_mask ((__v8sf)(__m256)(X), (int)(C),	    \
+					      (__v8sf)(__m256)_mm256_setzero_ps(),  \
+					      (__mmask8)(U)))
+
+#define _mm_mask_permute_pd(W, U, X, C)						    \
+  ((__m128d) __builtin_ia32_vpermilpd_mask ((__v2df)(__m128d)(X), (int)(C),	    \
+					    (__v2df)(__m128d)(W), (__mmask8)(U)))
+
+#define _mm_maskz_permute_pd(U, X, C)						    \
+  ((__m128d) __builtin_ia32_vpermilpd_mask ((__v2df)(__m128d)(X), (int)(C),	    \
+					    (__v2df)(__m128d)_mm_setzero_pd(),	    \
+					    (__mmask8)(U)))
+
+#define _mm_mask_permute_ps(W, U, X, C)						    \
+  ((__m128) __builtin_ia32_vpermilps_mask ((__v4sf)(__m128)(X), (int)(C),	    \
+					  (__v4sf)(__m128)(W), (__mmask8)(U)))
+
+#define _mm_maskz_permute_ps(U, X, C)						    \
+  ((__m128) __builtin_ia32_vpermilps_mask ((__v4sf)(__m128)(X), (int)(C),	    \
+					  (__v4sf)(__m128)_mm_setzero_ps(),	    \
+					  (__mmask8)(U)))
+
+#define _mm256_mask_blend_pd(__U, __A, __W)			      \
+  ((__m256d) __builtin_ia32_blendmpd_256_mask ((__v4df) (__A),	      \
+						     (__v4df) (__W),  \
+						     (__mmask8) (__U)))
+
+#define _mm256_mask_blend_ps(__U, __A, __W)			      \
+  ((__m256) __builtin_ia32_blendmps_256_mask ((__v8sf) (__A),	      \
+						    (__v8sf) (__W),   \
+						    (__mmask8) (__U)))
+
+#define _mm256_mask_blend_epi64(__U, __A, __W)			      \
+  ((__m256i) __builtin_ia32_blendmq_256_mask ((__v4di) (__A),	      \
+						    (__v4di) (__W),   \
+						    (__mmask8) (__U)))
+
+#define _mm256_mask_blend_epi32(__U, __A, __W)			      \
+  ((__m256i) __builtin_ia32_blendmd_256_mask ((__v8si) (__A),	      \
+						    (__v8si) (__W),   \
+						    (__mmask8) (__U)))
+
+#define _mm_mask_blend_pd(__U, __A, __W)			      \
+  ((__m128d) __builtin_ia32_blendmpd_128_mask ((__v2df) (__A),	      \
+						     (__v2df) (__W),  \
+						     (__mmask8) (__U)))
+
+#define _mm_mask_blend_ps(__U, __A, __W)			      \
+  ((__m128) __builtin_ia32_blendmps_128_mask ((__v4sf) (__A),	      \
+						    (__v4sf) (__W),   \
+						    (__mmask8) (__U)))
+
+#define _mm_mask_blend_epi64(__U, __A, __W)			      \
+  ((__m128i) __builtin_ia32_blendmq_128_mask ((__v2di) (__A),	      \
+						    (__v2di) (__W),   \
+						    (__mmask8) (__U)))
+
+#define _mm_mask_blend_epi32(__U, __A, __W)			      \
+  ((__m128i) __builtin_ia32_blendmd_128_mask ((__v4si) (__A),	      \
+						    (__v4si) (__W),   \
+						    (__mmask8) (__U)))
+
+#define _mm256_cmp_epu32_mask(X, Y, P)					\
+  ((__mmask8) __builtin_ia32_ucmpd256_mask ((__v8si)(__m256i)(X),	\
+					    (__v8si)(__m256i)(Y), (int)(P),\
+					    (__mmask8)-1))
+
+#define _mm256_cmp_epi64_mask(X, Y, P)					\
+  ((__mmask8) __builtin_ia32_cmpq256_mask ((__v4di)(__m256i)(X),	\
+					   (__v4di)(__m256i)(Y), (int)(P),\
+					   (__mmask8)-1))
+
+#define _mm256_cmp_epi32_mask(X, Y, P)					\
+  ((__mmask8) __builtin_ia32_cmpd256_mask ((__v8si)(__m256i)(X),	\
+					   (__v8si)(__m256i)(Y), (int)(P),\
+					   (__mmask8)-1))
+
+#define _mm256_cmp_epu64_mask(X, Y, P)					\
+  ((__mmask8) __builtin_ia32_ucmpq256_mask ((__v4di)(__m256i)(X),	\
+					    (__v4di)(__m256i)(Y), (int)(P),\
+					    (__mmask8)-1))
+
+#define _mm256_cmp_pd_mask(X, Y, P)					\
+  ((__mmask8) __builtin_ia32_cmppd256_mask ((__v4df)(__m256d)(X),	\
+					    (__v4df)(__m256d)(Y), (int)(P),\
+					    (__mmask8)-1))
+
+#define _mm256_cmp_ps_mask(X, Y, P)					\
+  ((__mmask8) __builtin_ia32_cmpps256_mask ((__v8sf)(__m256)(X),	\
+					     (__v8sf)(__m256)(Y), (int)(P),\
+					     (__mmask8)-1))
+
+#define _mm256_mask_cmp_epi64_mask(M, X, Y, P)				\
+  ((__mmask8) __builtin_ia32_cmpq256_mask ((__v4di)(__m256i)(X),	\
+					   (__v4di)(__m256i)(Y), (int)(P),\
+					   (__mmask8)(M)))
+
+#define _mm256_mask_cmp_epi32_mask(M, X, Y, P)				\
+  ((__mmask8) __builtin_ia32_cmpd256_mask ((__v8si)(__m256i)(X),	\
+					   (__v8si)(__m256i)(Y), (int)(P),\
+					   (__mmask8)(M)))
+
+#define _mm256_mask_cmp_epu64_mask(M, X, Y, P)				\
+  ((__mmask8) __builtin_ia32_ucmpq256_mask ((__v4di)(__m256i)(X),	\
+					    (__v4di)(__m256i)(Y), (int)(P),\
+					    (__mmask8)(M)))
+
+#define _mm256_mask_cmp_epu32_mask(M, X, Y, P)				\
+  ((__mmask8) __builtin_ia32_ucmpd256_mask ((__v8si)(__m256i)(X),	\
+					    (__v8si)(__m256i)(Y), (int)(P),\
+					    (__mmask8)(M)))
+
+#define _mm256_mask_cmp_pd_mask(M, X, Y, P)				\
+  ((__mmask8) __builtin_ia32_cmppd256_mask ((__v4df)(__m256d)(X),	\
+					    (__v4df)(__m256d)(Y), (int)(P),\
+					    (__mmask8)(M)))
+
+#define _mm256_mask_cmp_ps_mask(M, X, Y, P)				\
+  ((__mmask8) __builtin_ia32_cmpps256_mask ((__v8sf)(__m256)(X),	\
+					     (__v8sf)(__m256)(Y), (int)(P),\
+					     (__mmask8)(M)))
+
+#define _mm_cmp_epi64_mask(X, Y, P)					\
+  ((__mmask8) __builtin_ia32_cmpq128_mask ((__v2di)(__m128i)(X),	\
+					   (__v2di)(__m128i)(Y), (int)(P),\
+					   (__mmask8)-1))
+
+#define _mm_cmp_epi32_mask(X, Y, P)					\
+  ((__mmask8) __builtin_ia32_cmpd128_mask ((__v4si)(__m128i)(X),	\
+					   (__v4si)(__m128i)(Y), (int)(P),\
+					   (__mmask8)-1))
+
+#define _mm_cmp_epu64_mask(X, Y, P)					\
+  ((__mmask8) __builtin_ia32_ucmpq128_mask ((__v2di)(__m128i)(X),	\
+					    (__v2di)(__m128i)(Y), (int)(P),\
+					    (__mmask8)-1))
+
+#define _mm_cmp_epu32_mask(X, Y, P)					\
+  ((__mmask8) __builtin_ia32_ucmpd128_mask ((__v4si)(__m128i)(X),	\
+					    (__v4si)(__m128i)(Y), (int)(P),\
+					    (__mmask8)-1))
+
+#define _mm_cmp_pd_mask(X, Y, P)					\
+  ((__mmask8) __builtin_ia32_cmppd128_mask ((__v2df)(__m128d)(X),	\
+					    (__v2df)(__m128d)(Y), (int)(P),\
+					    (__mmask8)-1))
+
+#define _mm_cmp_ps_mask(X, Y, P)					\
+  ((__mmask8) __builtin_ia32_cmpps128_mask ((__v4sf)(__m128)(X),	\
+					     (__v4sf)(__m128)(Y), (int)(P),\
+					     (__mmask8)-1))
+
+#define _mm_mask_cmp_epi64_mask(M, X, Y, P)				\
+  ((__mmask8) __builtin_ia32_cmpq128_mask ((__v2di)(__m128i)(X),	\
+					   (__v2di)(__m128i)(Y), (int)(P),\
+					   (__mmask8)(M)))
+
+#define _mm_mask_cmp_epi32_mask(M, X, Y, P)				\
+  ((__mmask8) __builtin_ia32_cmpd128_mask ((__v4si)(__m128i)(X),	\
+					   (__v4si)(__m128i)(Y), (int)(P),\
+					   (__mmask8)(M)))
+
+#define _mm_mask_cmp_epu64_mask(M, X, Y, P)				\
+  ((__mmask8) __builtin_ia32_ucmpq128_mask ((__v2di)(__m128i)(X),	\
+					    (__v2di)(__m128i)(Y), (int)(P),\
+					    (__mmask8)(M)))
+
+#define _mm_mask_cmp_epu32_mask(M, X, Y, P)				\
+  ((__mmask8) __builtin_ia32_ucmpd128_mask ((__v4si)(__m128i)(X),	\
+					    (__v4si)(__m128i)(Y), (int)(P),\
+					    (__mmask8)(M)))
+
+#define _mm_mask_cmp_pd_mask(M, X, Y, P)				\
+  ((__mmask8) __builtin_ia32_cmppd128_mask ((__v2df)(__m128d)(X),	\
+					    (__v2df)(__m128d)(Y), (int)(P),\
+					    (__mmask8)(M)))
+
+#define _mm_mask_cmp_ps_mask(M, X, Y, P)				\
+  ((__mmask8) __builtin_ia32_cmpps128_mask ((__v4sf)(__m128)(X),	\
+					     (__v4sf)(__m128)(Y), (int)(P),\
+					     (__mmask8)(M)))
+
+#endif
+
+#define _mm256_permutexvar_ps(A, B)	_mm256_permutevar8x32_ps((B), (A))
+
+#ifdef __DISABLE_AVX512VL__
+#undef __DISABLE_AVX512VL__
+#pragma GCC pop_options
+#endif /* __DISABLE_AVX512VL__ */
+
+#endif /* _AVX512VLINTRIN_H_INCLUDED */
Index: Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/avxintrin.h
===================================================================
--- Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/avxintrin.h	(revision 1046)
+++ Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/avxintrin.h	(revision 1046)
@@ -0,0 +1,1467 @@
+/* Copyright (C) 2008-2015 Free Software Foundation, Inc.
+
+   This file is part of GCC.
+
+   GCC is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
+
+   GCC is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   Under Section 7 of GPL version 3, you are granted additional
+   permissions described in the GCC Runtime Library Exception, version
+   3.1, as published by the Free Software Foundation.
+
+   You should have received a copy of the GNU General Public License and
+   a copy of the GCC Runtime Library Exception along with this program;
+   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+/* Implemented from the specification included in the Intel C++ Compiler
+   User Guide and Reference, version 11.0.  */
+
+#ifndef _IMMINTRIN_H_INCLUDED
+# error "Never use <avxintrin.h> directly; include <immintrin.h> instead."
+#endif
+
+#ifndef _AVXINTRIN_H_INCLUDED
+#define _AVXINTRIN_H_INCLUDED
+
+#ifndef __AVX__
+#pragma GCC push_options
+#pragma GCC target("avx")
+#define __DISABLE_AVX__
+#endif /* __AVX__ */
+
+/* Internal data types for implementing the intrinsics.  */
+typedef double __v4df __attribute__ ((__vector_size__ (32)));
+typedef float __v8sf __attribute__ ((__vector_size__ (32)));
+typedef long long __v4di __attribute__ ((__vector_size__ (32)));
+typedef unsigned long long __v4du __attribute__ ((__vector_size__ (32)));
+typedef int __v8si __attribute__ ((__vector_size__ (32)));
+typedef unsigned int __v8su __attribute__ ((__vector_size__ (32)));
+typedef short __v16hi __attribute__ ((__vector_size__ (32)));
+typedef unsigned short __v16hu __attribute__ ((__vector_size__ (32)));
+typedef char __v32qi __attribute__ ((__vector_size__ (32)));
+typedef unsigned char __v32qu __attribute__ ((__vector_size__ (32)));
+
+/* The Intel API is flexible enough that we must allow aliasing with other
+   vector types, and their scalar components.  */
+typedef float __m256 __attribute__ ((__vector_size__ (32),
+				     __may_alias__));
+typedef long long __m256i __attribute__ ((__vector_size__ (32),
+					  __may_alias__));
+typedef double __m256d __attribute__ ((__vector_size__ (32),
+				       __may_alias__));
+
+/* Compare predicates for scalar and packed compare intrinsics.  */
+
+/* Equal (ordered, non-signaling)  */
+#define _CMP_EQ_OQ	0x00
+/* Less-than (ordered, signaling)  */
+#define _CMP_LT_OS	0x01
+/* Less-than-or-equal (ordered, signaling)  */
+#define _CMP_LE_OS	0x02
+/* Unordered (non-signaling)  */
+#define _CMP_UNORD_Q	0x03
+/* Not-equal (unordered, non-signaling)  */
+#define _CMP_NEQ_UQ	0x04
+/* Not-less-than (unordered, signaling)  */
+#define _CMP_NLT_US	0x05
+/* Not-less-than-or-equal (unordered, signaling)  */
+#define _CMP_NLE_US	0x06
+/* Ordered (nonsignaling)   */
+#define _CMP_ORD_Q	0x07
+/* Equal (unordered, non-signaling)  */
+#define _CMP_EQ_UQ	0x08
+/* Not-greater-than-or-equal (unordered, signaling)  */
+#define _CMP_NGE_US	0x09
+/* Not-greater-than (unordered, signaling)  */
+#define _CMP_NGT_US	0x0a
+/* False (ordered, non-signaling)  */
+#define _CMP_FALSE_OQ	0x0b
+/* Not-equal (ordered, non-signaling)  */
+#define _CMP_NEQ_OQ	0x0c
+/* Greater-than-or-equal (ordered, signaling)  */
+#define _CMP_GE_OS	0x0d
+/* Greater-than (ordered, signaling)  */
+#define _CMP_GT_OS	0x0e
+/* True (unordered, non-signaling)  */
+#define _CMP_TRUE_UQ	0x0f
+/* Equal (ordered, signaling)  */
+#define _CMP_EQ_OS	0x10
+/* Less-than (ordered, non-signaling)  */
+#define _CMP_LT_OQ	0x11
+/* Less-than-or-equal (ordered, non-signaling)  */
+#define _CMP_LE_OQ	0x12
+/* Unordered (signaling)  */
+#define _CMP_UNORD_S	0x13
+/* Not-equal (unordered, signaling)  */
+#define _CMP_NEQ_US	0x14
+/* Not-less-than (unordered, non-signaling)  */
+#define _CMP_NLT_UQ	0x15
+/* Not-less-than-or-equal (unordered, non-signaling)  */
+#define _CMP_NLE_UQ	0x16
+/* Ordered (signaling)  */
+#define _CMP_ORD_S	0x17
+/* Equal (unordered, signaling)  */
+#define _CMP_EQ_US	0x18
+/* Not-greater-than-or-equal (unordered, non-signaling)  */
+#define _CMP_NGE_UQ	0x19
+/* Not-greater-than (unordered, non-signaling)  */
+#define _CMP_NGT_UQ	0x1a
+/* False (ordered, signaling)  */
+#define _CMP_FALSE_OS	0x1b
+/* Not-equal (ordered, signaling)  */
+#define _CMP_NEQ_OS	0x1c
+/* Greater-than-or-equal (ordered, non-signaling)  */
+#define _CMP_GE_OQ	0x1d
+/* Greater-than (ordered, non-signaling)  */
+#define _CMP_GT_OQ	0x1e
+/* True (unordered, signaling)  */
+#define _CMP_TRUE_US	0x1f
+
+extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_add_pd (__m256d __A, __m256d __B)
+{
+  return (__m256d) ((__v4df)__A + (__v4df)__B);
+}
+
+extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_add_ps (__m256 __A, __m256 __B)
+{
+  return (__m256) ((__v8sf)__A + (__v8sf)__B);
+}
+
+extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_addsub_pd (__m256d __A, __m256d __B)
+{
+  return (__m256d) __builtin_ia32_addsubpd256 ((__v4df)__A, (__v4df)__B);
+}
+
+extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_addsub_ps (__m256 __A, __m256 __B)
+{
+  return (__m256) __builtin_ia32_addsubps256 ((__v8sf)__A, (__v8sf)__B);
+}
+
+
+extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_and_pd (__m256d __A, __m256d __B)
+{
+  return (__m256d) __builtin_ia32_andpd256 ((__v4df)__A, (__v4df)__B);
+}
+
+extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_and_ps (__m256 __A, __m256 __B)
+{
+  return (__m256) __builtin_ia32_andps256 ((__v8sf)__A, (__v8sf)__B);
+}
+
+extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_andnot_pd (__m256d __A, __m256d __B)
+{
+  return (__m256d) __builtin_ia32_andnpd256 ((__v4df)__A, (__v4df)__B);
+}
+
+extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_andnot_ps (__m256 __A, __m256 __B)
+{
+  return (__m256) __builtin_ia32_andnps256 ((__v8sf)__A, (__v8sf)__B);
+}
+
+/* Double/single precision floating point blend instructions - select
+   data from 2 sources using constant/variable mask.  */
+
+#ifdef __OPTIMIZE__
+extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_blend_pd (__m256d __X, __m256d __Y, const int __M)
+{
+  return (__m256d) __builtin_ia32_blendpd256 ((__v4df)__X,
+					      (__v4df)__Y,
+					      __M);
+}
+
+extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_blend_ps (__m256 __X, __m256 __Y, const int __M)
+{
+  return (__m256) __builtin_ia32_blendps256 ((__v8sf)__X,
+					     (__v8sf)__Y,
+					     __M);
+}
+#else
+#define _mm256_blend_pd(X, Y, M)					\
+  ((__m256d) __builtin_ia32_blendpd256 ((__v4df)(__m256d)(X),		\
+					(__v4df)(__m256d)(Y), (int)(M)))
+
+#define _mm256_blend_ps(X, Y, M)					\
+  ((__m256) __builtin_ia32_blendps256 ((__v8sf)(__m256)(X),		\
+				       (__v8sf)(__m256)(Y), (int)(M)))
+#endif
+
+extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_blendv_pd (__m256d __X, __m256d __Y, __m256d __M)
+{
+  return (__m256d) __builtin_ia32_blendvpd256 ((__v4df)__X,
+					       (__v4df)__Y,
+					       (__v4df)__M);
+}
+
+extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_blendv_ps (__m256 __X, __m256 __Y, __m256 __M)
+{
+  return (__m256) __builtin_ia32_blendvps256 ((__v8sf)__X,
+					      (__v8sf)__Y,
+					      (__v8sf)__M);
+}
+
+extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_div_pd (__m256d __A, __m256d __B)
+{
+  return (__m256d) ((__v4df)__A / (__v4df)__B);
+}
+
+extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_div_ps (__m256 __A, __m256 __B)
+{
+  return (__m256) ((__v8sf)__A / (__v8sf)__B);
+}
+
+/* Dot product instructions with mask-defined summing and zeroing parts
+   of result.  */
+
+#ifdef __OPTIMIZE__
+extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_dp_ps (__m256 __X, __m256 __Y, const int __M)
+{
+  return (__m256) __builtin_ia32_dpps256 ((__v8sf)__X,
+					  (__v8sf)__Y,
+					  __M);
+}
+#else
+#define _mm256_dp_ps(X, Y, M)						\
+  ((__m256) __builtin_ia32_dpps256 ((__v8sf)(__m256)(X),		\
+				    (__v8sf)(__m256)(Y), (int)(M)))
+#endif
+
+extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_hadd_pd (__m256d __X, __m256d __Y)
+{
+  return (__m256d) __builtin_ia32_haddpd256 ((__v4df)__X, (__v4df)__Y);
+}
+
+extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_hadd_ps (__m256 __X, __m256 __Y)
+{
+  return (__m256) __builtin_ia32_haddps256 ((__v8sf)__X, (__v8sf)__Y);
+}
+
+extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_hsub_pd (__m256d __X, __m256d __Y)
+{
+  return (__m256d) __builtin_ia32_hsubpd256 ((__v4df)__X, (__v4df)__Y);
+}
+
+extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_hsub_ps (__m256 __X, __m256 __Y)
+{
+  return (__m256) __builtin_ia32_hsubps256 ((__v8sf)__X, (__v8sf)__Y);
+}
+
+extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_max_pd (__m256d __A, __m256d __B)
+{
+  return (__m256d) __builtin_ia32_maxpd256 ((__v4df)__A, (__v4df)__B);
+}
+
+extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_max_ps (__m256 __A, __m256 __B)
+{
+  return (__m256) __builtin_ia32_maxps256 ((__v8sf)__A, (__v8sf)__B);
+}
+
+extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_min_pd (__m256d __A, __m256d __B)
+{
+  return (__m256d) __builtin_ia32_minpd256 ((__v4df)__A, (__v4df)__B);
+}
+
+extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_min_ps (__m256 __A, __m256 __B)
+{
+  return (__m256) __builtin_ia32_minps256 ((__v8sf)__A, (__v8sf)__B);
+}
+
+extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mul_pd (__m256d __A, __m256d __B)
+{
+  return (__m256d) ((__v4df)__A * (__v4df)__B);
+}
+
+extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_mul_ps (__m256 __A, __m256 __B)
+{
+  return (__m256) ((__v8sf)__A * (__v8sf)__B);
+}
+
+extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_or_pd (__m256d __A, __m256d __B)
+{
+  return (__m256d) __builtin_ia32_orpd256 ((__v4df)__A, (__v4df)__B);
+}
+
+extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_or_ps (__m256 __A, __m256 __B)
+{
+  return (__m256) __builtin_ia32_orps256 ((__v8sf)__A, (__v8sf)__B);
+}
+
+#ifdef __OPTIMIZE__
+extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_shuffle_pd (__m256d __A, __m256d __B, const int __mask)
+{
+  return (__m256d) __builtin_ia32_shufpd256 ((__v4df)__A, (__v4df)__B,
+					     __mask);
+}
+
+extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_shuffle_ps (__m256 __A, __m256 __B, const int __mask)
+{
+  return (__m256) __builtin_ia32_shufps256 ((__v8sf)__A, (__v8sf)__B,
+					    __mask);
+}
+#else
+#define _mm256_shuffle_pd(A, B, N)					\
+  ((__m256d)__builtin_ia32_shufpd256 ((__v4df)(__m256d)(A),		\
+				      (__v4df)(__m256d)(B), (int)(N)))
+
+#define _mm256_shuffle_ps(A, B, N)					\
+  ((__m256) __builtin_ia32_shufps256 ((__v8sf)(__m256)(A),		\
+				      (__v8sf)(__m256)(B), (int)(N)))
+#endif
+
+extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_sub_pd (__m256d __A, __m256d __B)
+{
+  return (__m256d) ((__v4df)__A - (__v4df)__B);
+}
+
+extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_sub_ps (__m256 __A, __m256 __B)
+{
+  return (__m256) ((__v8sf)__A - (__v8sf)__B);
+}
+
+extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_xor_pd (__m256d __A, __m256d __B)
+{
+  return (__m256d) __builtin_ia32_xorpd256 ((__v4df)__A, (__v4df)__B);
+}
+
+extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_xor_ps (__m256 __A, __m256 __B)
+{
+  return (__m256) __builtin_ia32_xorps256 ((__v8sf)__A, (__v8sf)__B);
+}
+
+#ifdef __OPTIMIZE__
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmp_pd (__m128d __X, __m128d __Y, const int __P)
+{
+  return (__m128d) __builtin_ia32_cmppd ((__v2df)__X, (__v2df)__Y, __P);
+}
+
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmp_ps (__m128 __X, __m128 __Y, const int __P)
+{
+  return (__m128) __builtin_ia32_cmpps ((__v4sf)__X, (__v4sf)__Y, __P);
+}
+
+extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cmp_pd (__m256d __X, __m256d __Y, const int __P)
+{
+  return (__m256d) __builtin_ia32_cmppd256 ((__v4df)__X, (__v4df)__Y,
+					    __P);
+}
+
+extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cmp_ps (__m256 __X, __m256 __Y, const int __P)
+{
+  return (__m256) __builtin_ia32_cmpps256 ((__v8sf)__X, (__v8sf)__Y,
+					   __P);
+}
+
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmp_sd (__m128d __X, __m128d __Y, const int __P)
+{
+  return (__m128d) __builtin_ia32_cmpsd ((__v2df)__X, (__v2df)__Y, __P);
+}
+
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmp_ss (__m128 __X, __m128 __Y, const int __P)
+{
+  return (__m128) __builtin_ia32_cmpss ((__v4sf)__X, (__v4sf)__Y, __P);
+}
+#else
+#define _mm_cmp_pd(X, Y, P)						\
+  ((__m128d) __builtin_ia32_cmppd ((__v2df)(__m128d)(X),		\
+				   (__v2df)(__m128d)(Y), (int)(P)))
+
+#define _mm_cmp_ps(X, Y, P)						\
+  ((__m128) __builtin_ia32_cmpps ((__v4sf)(__m128)(X),			\
+				  (__v4sf)(__m128)(Y), (int)(P)))
+
+#define _mm256_cmp_pd(X, Y, P)						\
+  ((__m256d) __builtin_ia32_cmppd256 ((__v4df)(__m256d)(X),		\
+				      (__v4df)(__m256d)(Y), (int)(P)))
+
+#define _mm256_cmp_ps(X, Y, P)						\
+  ((__m256) __builtin_ia32_cmpps256 ((__v8sf)(__m256)(X),		\
+				     (__v8sf)(__m256)(Y), (int)(P)))
+
+#define _mm_cmp_sd(X, Y, P)						\
+  ((__m128d) __builtin_ia32_cmpsd ((__v2df)(__m128d)(X),		\
+				   (__v2df)(__m128d)(Y), (int)(P)))
+
+#define _mm_cmp_ss(X, Y, P)						\
+  ((__m128) __builtin_ia32_cmpss ((__v4sf)(__m128)(X),			\
+				  (__v4sf)(__m128)(Y), (int)(P)))
+#endif
+
+extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cvtepi32_pd (__m128i __A)
+{
+  return (__m256d)__builtin_ia32_cvtdq2pd256 ((__v4si) __A);
+}
+
+extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cvtepi32_ps (__m256i __A)
+{
+  return (__m256)__builtin_ia32_cvtdq2ps256 ((__v8si) __A);
+}
+
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cvtpd_ps (__m256d __A)
+{
+  return (__m128)__builtin_ia32_cvtpd2ps256 ((__v4df) __A);
+}
+
+extern __inline __m256i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cvtps_epi32 (__m256 __A)
+{
+  return (__m256i)__builtin_ia32_cvtps2dq256 ((__v8sf) __A);
+}
+
+extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cvtps_pd (__m128 __A)
+{
+  return (__m256d)__builtin_ia32_cvtps2pd256 ((__v4sf) __A);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cvttpd_epi32 (__m256d __A)
+{
+  return (__m128i)__builtin_ia32_cvttpd2dq256 ((__v4df) __A);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cvtpd_epi32 (__m256d __A)
+{
+  return (__m128i)__builtin_ia32_cvtpd2dq256 ((__v4df) __A);
+}
+
+extern __inline __m256i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cvttps_epi32 (__m256 __A)
+{
+  return (__m256i)__builtin_ia32_cvttps2dq256 ((__v8sf) __A);
+}
+
+#ifdef __OPTIMIZE__
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_extractf128_pd (__m256d __X, const int __N)
+{
+  return (__m128d) __builtin_ia32_vextractf128_pd256 ((__v4df)__X, __N);
+}
+
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_extractf128_ps (__m256 __X, const int __N)
+{
+  return (__m128) __builtin_ia32_vextractf128_ps256 ((__v8sf)__X, __N);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_extractf128_si256 (__m256i __X, const int __N)
+{
+  return (__m128i) __builtin_ia32_vextractf128_si256 ((__v8si)__X, __N);
+}
+
+extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_extract_epi32 (__m256i __X, int const __N)
+{
+  __m128i __Y = _mm256_extractf128_si256 (__X, __N >> 2);
+  return _mm_extract_epi32 (__Y, __N % 4);
+}
+
+extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_extract_epi16 (__m256i __X, int const __N)
+{
+  __m128i __Y = _mm256_extractf128_si256 (__X, __N >> 3);
+  return _mm_extract_epi16 (__Y, __N % 8);
+}
+
+extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_extract_epi8 (__m256i __X, int const __N)
+{
+  __m128i __Y = _mm256_extractf128_si256 (__X, __N >> 4);
+  return _mm_extract_epi8 (__Y, __N % 16);
+}
+
+#ifdef __x86_64__
+extern __inline long long  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_extract_epi64 (__m256i __X, const int __N)
+{
+  __m128i __Y = _mm256_extractf128_si256 (__X, __N >> 1);
+  return _mm_extract_epi64 (__Y, __N % 2);
+}
+#endif
+#else
+#define _mm256_extractf128_pd(X, N)					\
+  ((__m128d) __builtin_ia32_vextractf128_pd256 ((__v4df)(__m256d)(X),	\
+						(int)(N)))
+
+#define _mm256_extractf128_ps(X, N)					\
+  ((__m128) __builtin_ia32_vextractf128_ps256 ((__v8sf)(__m256)(X),	\
+					       (int)(N)))
+
+#define _mm256_extractf128_si256(X, N)					\
+  ((__m128i) __builtin_ia32_vextractf128_si256 ((__v8si)(__m256i)(X),	\
+						(int)(N)))
+
+#define _mm256_extract_epi32(X, N)					\
+  (__extension__							\
+   ({									\
+      __m128i __Y = _mm256_extractf128_si256 ((X), (N) >> 2);		\
+      _mm_extract_epi32 (__Y, (N) % 4);					\
+    }))
+
+#define _mm256_extract_epi16(X, N)					\
+  (__extension__							\
+   ({									\
+      __m128i __Y = _mm256_extractf128_si256 ((X), (N) >> 3);		\
+      _mm_extract_epi16 (__Y, (N) % 8);					\
+    }))
+
+#define _mm256_extract_epi8(X, N)					\
+  (__extension__							\
+   ({									\
+      __m128i __Y = _mm256_extractf128_si256 ((X), (N) >> 4);		\
+      _mm_extract_epi8 (__Y, (N) % 16);					\
+    }))
+
+#ifdef __x86_64__
+#define _mm256_extract_epi64(X, N)					\
+  (__extension__							\
+   ({									\
+      __m128i __Y = _mm256_extractf128_si256 ((X), (N) >> 1);		\
+      _mm_extract_epi64 (__Y, (N) % 2);					\
+    }))
+#endif
+#endif
+
+extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_zeroall (void)
+{
+  __builtin_ia32_vzeroall ();
+}
+
+extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_zeroupper (void)
+{
+  __builtin_ia32_vzeroupper ();
+}
+
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_permutevar_pd (__m128d __A, __m128i __C)
+{
+  return (__m128d) __builtin_ia32_vpermilvarpd ((__v2df)__A,
+						(__v2di)__C);
+}
+
+extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_permutevar_pd (__m256d __A, __m256i __C)
+{
+  return (__m256d) __builtin_ia32_vpermilvarpd256 ((__v4df)__A,
+						   (__v4di)__C);
+}
+
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_permutevar_ps (__m128 __A, __m128i __C)
+{
+  return (__m128) __builtin_ia32_vpermilvarps ((__v4sf)__A,
+					       (__v4si)__C);
+}
+
+extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_permutevar_ps (__m256 __A, __m256i __C)
+{
+  return (__m256) __builtin_ia32_vpermilvarps256 ((__v8sf)__A,
+						  (__v8si)__C);
+}
+
+#ifdef __OPTIMIZE__
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_permute_pd (__m128d __X, const int __C)
+{
+  return (__m128d) __builtin_ia32_vpermilpd ((__v2df)__X, __C);
+}
+
+extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_permute_pd (__m256d __X, const int __C)
+{
+  return (__m256d) __builtin_ia32_vpermilpd256 ((__v4df)__X, __C);
+}
+
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_permute_ps (__m128 __X, const int __C)
+{
+  return (__m128) __builtin_ia32_vpermilps ((__v4sf)__X, __C);
+}
+
+extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_permute_ps (__m256 __X, const int __C)
+{
+  return (__m256) __builtin_ia32_vpermilps256 ((__v8sf)__X, __C);
+}
+#else
+#define _mm_permute_pd(X, C)						\
+  ((__m128d) __builtin_ia32_vpermilpd ((__v2df)(__m128d)(X), (int)(C)))
+
+#define _mm256_permute_pd(X, C)						\
+  ((__m256d) __builtin_ia32_vpermilpd256 ((__v4df)(__m256d)(X),	(int)(C)))
+
+#define _mm_permute_ps(X, C)						\
+  ((__m128) __builtin_ia32_vpermilps ((__v4sf)(__m128)(X), (int)(C)))
+
+#define _mm256_permute_ps(X, C)						\
+  ((__m256) __builtin_ia32_vpermilps256 ((__v8sf)(__m256)(X), (int)(C)))
+#endif
+
+#ifdef __OPTIMIZE__
+extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_permute2f128_pd (__m256d __X, __m256d __Y, const int __C)
+{
+  return (__m256d) __builtin_ia32_vperm2f128_pd256 ((__v4df)__X,
+						    (__v4df)__Y,
+						    __C);
+}
+
+extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_permute2f128_ps (__m256 __X, __m256 __Y, const int __C)
+{
+  return (__m256) __builtin_ia32_vperm2f128_ps256 ((__v8sf)__X,
+						   (__v8sf)__Y,
+						   __C);
+}
+
+extern __inline __m256i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_permute2f128_si256 (__m256i __X, __m256i __Y, const int __C)
+{
+  return (__m256i) __builtin_ia32_vperm2f128_si256 ((__v8si)__X,
+						    (__v8si)__Y,
+						    __C);
+}
+#else
+#define _mm256_permute2f128_pd(X, Y, C)					\
+  ((__m256d) __builtin_ia32_vperm2f128_pd256 ((__v4df)(__m256d)(X),	\
+					      (__v4df)(__m256d)(Y),	\
+					      (int)(C)))
+
+#define _mm256_permute2f128_ps(X, Y, C)					\
+  ((__m256) __builtin_ia32_vperm2f128_ps256 ((__v8sf)(__m256)(X),	\
+					     (__v8sf)(__m256)(Y),	\
+					     (int)(C)))
+
+#define _mm256_permute2f128_si256(X, Y, C)				\
+  ((__m256i) __builtin_ia32_vperm2f128_si256 ((__v8si)(__m256i)(X),	\
+					      (__v8si)(__m256i)(Y),	\
+					      (int)(C)))
+#endif
+
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_broadcast_ss (float const *__X)
+{
+  return (__m128) __builtin_ia32_vbroadcastss (__X);
+}
+
+extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_broadcast_sd (double const *__X)
+{
+  return (__m256d) __builtin_ia32_vbroadcastsd256 (__X);
+}
+
+extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_broadcast_ss (float const *__X)
+{
+  return (__m256) __builtin_ia32_vbroadcastss256 (__X);
+}
+
+extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_broadcast_pd (__m128d const *__X)
+{
+  return (__m256d) __builtin_ia32_vbroadcastf128_pd256 (__X);
+}
+
+extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_broadcast_ps (__m128 const *__X)
+{
+  return (__m256) __builtin_ia32_vbroadcastf128_ps256 (__X);
+}
+
+#ifdef __OPTIMIZE__
+extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_insertf128_pd (__m256d __X, __m128d __Y, const int __O)
+{
+  return (__m256d) __builtin_ia32_vinsertf128_pd256 ((__v4df)__X,
+						     (__v2df)__Y,
+						     __O);
+}
+
+extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_insertf128_ps (__m256 __X, __m128 __Y, const int __O)
+{
+  return (__m256) __builtin_ia32_vinsertf128_ps256 ((__v8sf)__X,
+						    (__v4sf)__Y,
+						    __O);
+}
+
+extern __inline __m256i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_insertf128_si256 (__m256i __X, __m128i __Y, const int __O)
+{
+  return (__m256i) __builtin_ia32_vinsertf128_si256 ((__v8si)__X,
+						     (__v4si)__Y,
+						     __O);
+}
+
+extern __inline __m256i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_insert_epi32 (__m256i __X, int __D, int const __N)
+{
+  __m128i __Y = _mm256_extractf128_si256 (__X, __N >> 2);
+  __Y = _mm_insert_epi32 (__Y, __D, __N % 4);
+  return _mm256_insertf128_si256 (__X, __Y, __N >> 2);
+}
+
+extern __inline __m256i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_insert_epi16 (__m256i __X, int __D, int const __N)
+{
+  __m128i __Y = _mm256_extractf128_si256 (__X, __N >> 3);
+  __Y = _mm_insert_epi16 (__Y, __D, __N % 8);
+  return _mm256_insertf128_si256 (__X, __Y, __N >> 3);
+}
+
+extern __inline __m256i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_insert_epi8 (__m256i __X, int __D, int const __N)
+{
+  __m128i __Y = _mm256_extractf128_si256 (__X, __N >> 4);
+  __Y = _mm_insert_epi8 (__Y, __D, __N % 16);
+  return _mm256_insertf128_si256 (__X, __Y, __N >> 4);
+}
+
+#ifdef __x86_64__
+extern __inline __m256i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_insert_epi64 (__m256i __X, long long __D, int const __N)
+{
+  __m128i __Y = _mm256_extractf128_si256 (__X, __N >> 1);
+  __Y = _mm_insert_epi64 (__Y, __D, __N % 2);
+  return _mm256_insertf128_si256 (__X, __Y, __N >> 1);
+}
+#endif
+#else
+#define _mm256_insertf128_pd(X, Y, O)					\
+  ((__m256d) __builtin_ia32_vinsertf128_pd256 ((__v4df)(__m256d)(X),	\
+					       (__v2df)(__m128d)(Y),	\
+					       (int)(O)))
+
+#define _mm256_insertf128_ps(X, Y, O)					\
+  ((__m256) __builtin_ia32_vinsertf128_ps256 ((__v8sf)(__m256)(X),	\
+					      (__v4sf)(__m128)(Y),  	\
+					      (int)(O)))
+
+#define _mm256_insertf128_si256(X, Y, O)				\
+  ((__m256i) __builtin_ia32_vinsertf128_si256 ((__v8si)(__m256i)(X),	\
+					       (__v4si)(__m128i)(Y),	\
+					       (int)(O)))
+
+#define _mm256_insert_epi32(X, D, N)					\
+  (__extension__							\
+   ({									\
+      __m128i __Y = _mm256_extractf128_si256 ((X), (N) >> 2);		\
+      __Y = _mm_insert_epi32 (__Y, (D), (N) % 4);			\
+      _mm256_insertf128_si256 ((X), __Y, (N) >> 2);			\
+    }))
+
+#define _mm256_insert_epi16(X, D, N)					\
+  (__extension__							\
+   ({									\
+      __m128i __Y = _mm256_extractf128_si256 ((X), (N) >> 3);		\
+      __Y = _mm_insert_epi16 (__Y, (D), (N) % 8);			\
+      _mm256_insertf128_si256 ((X), __Y, (N) >> 3);			\
+    }))
+
+#define _mm256_insert_epi8(X, D, N)					\
+  (__extension__							\
+   ({									\
+      __m128i __Y = _mm256_extractf128_si256 ((X), (N) >> 4);		\
+      __Y = _mm_insert_epi8 (__Y, (D), (N) % 16);			\
+      _mm256_insertf128_si256 ((X), __Y, (N) >> 4);			\
+    }))
+
+#ifdef __x86_64__
+#define _mm256_insert_epi64(X, D, N)					\
+  (__extension__							\
+   ({									\
+      __m128i __Y = _mm256_extractf128_si256 ((X), (N) >> 1);		\
+      __Y = _mm_insert_epi64 (__Y, (D), (N) % 2);			\
+      _mm256_insertf128_si256 ((X), __Y, (N) >> 1);			\
+    }))
+#endif
+#endif
+
+extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_load_pd (double const *__P)
+{
+  return *(__m256d *)__P;
+}
+
+extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_store_pd (double *__P, __m256d __A)
+{
+  *(__m256d *)__P = __A;
+}
+
+extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_load_ps (float const *__P)
+{
+  return *(__m256 *)__P;
+}
+
+extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_store_ps (float *__P, __m256 __A)
+{
+  *(__m256 *)__P = __A;
+}
+
+extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_loadu_pd (double const *__P)
+{
+  return (__m256d) __builtin_ia32_loadupd256 (__P);
+}
+
+extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_storeu_pd (double *__P, __m256d __A)
+{
+  __builtin_ia32_storeupd256 (__P, (__v4df)__A);
+}
+
+extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_loadu_ps (float const *__P)
+{
+  return (__m256) __builtin_ia32_loadups256 (__P);
+}
+
+extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_storeu_ps (float *__P, __m256 __A)
+{
+  __builtin_ia32_storeups256 (__P, (__v8sf)__A);
+}
+
+extern __inline __m256i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_load_si256 (__m256i const *__P)
+{
+  return *__P;
+}
+
+extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_store_si256 (__m256i *__P, __m256i __A)
+{
+  *__P = __A;
+}
+
+extern __inline __m256i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_loadu_si256 (__m256i const *__P)
+{
+  return (__m256i) __builtin_ia32_loaddqu256 ((char const *)__P);
+}
+
+extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_storeu_si256 (__m256i *__P, __m256i __A)
+{
+  __builtin_ia32_storedqu256 ((char *)__P, (__v32qi)__A);
+}
+
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskload_pd (double const *__P, __m128i __M)
+{
+  return (__m128d) __builtin_ia32_maskloadpd ((const __v2df *)__P,
+					      (__v2di)__M);
+}
+
+extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskstore_pd (double *__P, __m128i __M, __m128d __A)
+{
+  __builtin_ia32_maskstorepd ((__v2df *)__P, (__v2di)__M, (__v2df)__A);
+}
+
+extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskload_pd (double const *__P, __m256i __M)
+{
+  return (__m256d) __builtin_ia32_maskloadpd256 ((const __v4df *)__P,
+						 (__v4di)__M);
+}
+
+extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskstore_pd (double *__P, __m256i __M, __m256d __A)
+{
+  __builtin_ia32_maskstorepd256 ((__v4df *)__P, (__v4di)__M, (__v4df)__A);
+}
+
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskload_ps (float const *__P, __m128i __M)
+{
+  return (__m128) __builtin_ia32_maskloadps ((const __v4sf *)__P,
+					     (__v4si)__M);
+}
+
+extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskstore_ps (float *__P, __m128i __M, __m128 __A)
+{
+  __builtin_ia32_maskstoreps ((__v4sf *)__P, (__v4si)__M, (__v4sf)__A);
+}
+
+extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskload_ps (float const *__P, __m256i __M)
+{
+  return (__m256) __builtin_ia32_maskloadps256 ((const __v8sf *)__P,
+						(__v8si)__M);
+}
+
+extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maskstore_ps (float *__P, __m256i __M, __m256 __A)
+{
+  __builtin_ia32_maskstoreps256 ((__v8sf *)__P, (__v8si)__M, (__v8sf)__A);
+}
+
+extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_movehdup_ps (__m256 __X)
+{
+  return (__m256) __builtin_ia32_movshdup256 ((__v8sf)__X);
+}
+
+extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_moveldup_ps (__m256 __X)
+{
+  return (__m256) __builtin_ia32_movsldup256 ((__v8sf)__X);
+}
+
+extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_movedup_pd (__m256d __X)
+{
+  return (__m256d) __builtin_ia32_movddup256 ((__v4df)__X);
+}
+
+extern __inline __m256i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_lddqu_si256 (__m256i const *__P)
+{
+  return (__m256i) __builtin_ia32_lddqu256 ((char const *)__P);
+}
+
+extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_stream_si256 (__m256i *__A, __m256i __B)
+{
+  __builtin_ia32_movntdq256 ((__v4di *)__A, (__v4di)__B);
+}
+
+extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_stream_pd (double *__A, __m256d __B)
+{
+  __builtin_ia32_movntpd256 (__A, (__v4df)__B);
+}
+
+extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_stream_ps (float *__P, __m256 __A)
+{
+  __builtin_ia32_movntps256 (__P, (__v8sf)__A);
+}
+
+extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_rcp_ps (__m256 __A)
+{
+  return (__m256) __builtin_ia32_rcpps256 ((__v8sf)__A);
+}
+
+extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_rsqrt_ps (__m256 __A)
+{
+  return (__m256) __builtin_ia32_rsqrtps256 ((__v8sf)__A);
+}
+
+extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_sqrt_pd (__m256d __A)
+{
+  return (__m256d) __builtin_ia32_sqrtpd256 ((__v4df)__A);
+}
+
+extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_sqrt_ps (__m256 __A)
+{
+  return (__m256) __builtin_ia32_sqrtps256 ((__v8sf)__A);
+}
+
+#ifdef __OPTIMIZE__
+extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_round_pd (__m256d __V, const int __M)
+{
+  return (__m256d) __builtin_ia32_roundpd256 ((__v4df)__V, __M);
+}
+
+extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_round_ps (__m256 __V, const int __M)
+{
+  return (__m256) __builtin_ia32_roundps256 ((__v8sf)__V, __M);
+}
+#else
+#define _mm256_round_pd(V, M) \
+  ((__m256d) __builtin_ia32_roundpd256 ((__v4df)(__m256d)(V), (int)(M)))
+
+#define _mm256_round_ps(V, M) \
+  ((__m256) __builtin_ia32_roundps256 ((__v8sf)(__m256)(V), (int)(M)))
+#endif
+
+#define _mm256_ceil_pd(V)	_mm256_round_pd ((V), _MM_FROUND_CEIL)
+#define _mm256_floor_pd(V)	_mm256_round_pd ((V), _MM_FROUND_FLOOR)
+#define _mm256_ceil_ps(V)	_mm256_round_ps ((V), _MM_FROUND_CEIL)
+#define _mm256_floor_ps(V)	_mm256_round_ps ((V), _MM_FROUND_FLOOR)
+
+extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_unpackhi_pd (__m256d __A, __m256d __B)
+{
+  return (__m256d) __builtin_ia32_unpckhpd256 ((__v4df)__A, (__v4df)__B);
+}
+
+extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_unpacklo_pd (__m256d __A, __m256d __B)
+{
+  return (__m256d) __builtin_ia32_unpcklpd256 ((__v4df)__A, (__v4df)__B);
+}
+
+extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_unpackhi_ps (__m256 __A, __m256 __B)
+{
+  return (__m256) __builtin_ia32_unpckhps256 ((__v8sf)__A, (__v8sf)__B);
+}
+
+extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_unpacklo_ps (__m256 __A, __m256 __B)
+{
+  return (__m256) __builtin_ia32_unpcklps256 ((__v8sf)__A, (__v8sf)__B);
+}
+
+extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_testz_pd (__m128d __M, __m128d __V)
+{
+  return __builtin_ia32_vtestzpd ((__v2df)__M, (__v2df)__V);
+}
+
+extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_testc_pd (__m128d __M, __m128d __V)
+{
+  return __builtin_ia32_vtestcpd ((__v2df)__M, (__v2df)__V);
+}
+
+extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_testnzc_pd (__m128d __M, __m128d __V)
+{
+  return __builtin_ia32_vtestnzcpd ((__v2df)__M, (__v2df)__V);
+}
+
+extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_testz_ps (__m128 __M, __m128 __V)
+{
+  return __builtin_ia32_vtestzps ((__v4sf)__M, (__v4sf)__V);
+}
+
+extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_testc_ps (__m128 __M, __m128 __V)
+{
+  return __builtin_ia32_vtestcps ((__v4sf)__M, (__v4sf)__V);
+}
+
+extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_testnzc_ps (__m128 __M, __m128 __V)
+{
+  return __builtin_ia32_vtestnzcps ((__v4sf)__M, (__v4sf)__V);
+}
+
+extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_testz_pd (__m256d __M, __m256d __V)
+{
+  return __builtin_ia32_vtestzpd256 ((__v4df)__M, (__v4df)__V);
+}
+
+extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_testc_pd (__m256d __M, __m256d __V)
+{
+  return __builtin_ia32_vtestcpd256 ((__v4df)__M, (__v4df)__V);
+}
+
+extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_testnzc_pd (__m256d __M, __m256d __V)
+{
+  return __builtin_ia32_vtestnzcpd256 ((__v4df)__M, (__v4df)__V);
+}
+
+extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_testz_ps (__m256 __M, __m256 __V)
+{
+  return __builtin_ia32_vtestzps256 ((__v8sf)__M, (__v8sf)__V);
+}
+
+extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_testc_ps (__m256 __M, __m256 __V)
+{
+  return __builtin_ia32_vtestcps256 ((__v8sf)__M, (__v8sf)__V);
+}
+
+extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_testnzc_ps (__m256 __M, __m256 __V)
+{
+  return __builtin_ia32_vtestnzcps256 ((__v8sf)__M, (__v8sf)__V);
+}
+
+extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_testz_si256 (__m256i __M, __m256i __V)
+{
+  return __builtin_ia32_ptestz256 ((__v4di)__M, (__v4di)__V);
+}
+
+extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_testc_si256 (__m256i __M, __m256i __V)
+{
+  return __builtin_ia32_ptestc256 ((__v4di)__M, (__v4di)__V);
+}
+
+extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_testnzc_si256 (__m256i __M, __m256i __V)
+{
+  return __builtin_ia32_ptestnzc256 ((__v4di)__M, (__v4di)__V);
+}
+
+extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_movemask_pd (__m256d __A)
+{
+  return __builtin_ia32_movmskpd256 ((__v4df)__A);
+}
+
+extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_movemask_ps (__m256 __A)
+{
+  return __builtin_ia32_movmskps256 ((__v8sf)__A);
+}
+
+extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_undefined_pd (void)
+{
+  __m256d __Y = __Y;
+  return __Y;
+}
+
+extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_undefined_ps (void)
+{
+  __m256 __Y = __Y;
+  return __Y;
+}
+
+extern __inline __m256i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_undefined_si256 (void)
+{
+  __m256i __Y = __Y;
+  return __Y;
+}
+
+extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_setzero_pd (void)
+{
+  return __extension__ (__m256d){ 0.0, 0.0, 0.0, 0.0 };
+}
+
+extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_setzero_ps (void)
+{
+  return __extension__ (__m256){ 0.0, 0.0, 0.0, 0.0,
+				 0.0, 0.0, 0.0, 0.0 };
+}
+
+extern __inline __m256i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_setzero_si256 (void)
+{
+  return __extension__ (__m256i)(__v4di){ 0, 0, 0, 0 };
+}
+
+/* Create the vector [A B C D].  */
+extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_set_pd (double __A, double __B, double __C, double __D)
+{
+  return __extension__ (__m256d){ __D, __C, __B, __A };
+}
+
+/* Create the vector [A B C D E F G H].  */
+extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_set_ps (float __A, float __B, float __C, float __D,
+	       float __E, float __F, float __G, float __H)
+{
+  return __extension__ (__m256){ __H, __G, __F, __E,
+				 __D, __C, __B, __A };
+}
+
+/* Create the vector [A B C D E F G H].  */
+extern __inline __m256i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_set_epi32 (int __A, int __B, int __C, int __D,
+		  int __E, int __F, int __G, int __H)
+{
+  return __extension__ (__m256i)(__v8si){ __H, __G, __F, __E,
+					  __D, __C, __B, __A };
+}
+
+extern __inline __m256i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_set_epi16 (short __q15, short __q14, short __q13, short __q12,
+		  short __q11, short __q10, short __q09, short __q08,
+		  short __q07, short __q06, short __q05, short __q04,
+		  short __q03, short __q02, short __q01, short __q00)
+{
+  return __extension__ (__m256i)(__v16hi){
+    __q00, __q01, __q02, __q03, __q04, __q05, __q06, __q07,
+    __q08, __q09, __q10, __q11, __q12, __q13, __q14, __q15
+  };
+}
+
+extern __inline __m256i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_set_epi8  (char __q31, char __q30, char __q29, char __q28,
+		  char __q27, char __q26, char __q25, char __q24,
+		  char __q23, char __q22, char __q21, char __q20,
+		  char __q19, char __q18, char __q17, char __q16,
+		  char __q15, char __q14, char __q13, char __q12,
+		  char __q11, char __q10, char __q09, char __q08,
+		  char __q07, char __q06, char __q05, char __q04,
+		  char __q03, char __q02, char __q01, char __q00)
+{
+  return __extension__ (__m256i)(__v32qi){
+    __q00, __q01, __q02, __q03, __q04, __q05, __q06, __q07,
+    __q08, __q09, __q10, __q11, __q12, __q13, __q14, __q15,
+    __q16, __q17, __q18, __q19, __q20, __q21, __q22, __q23,
+    __q24, __q25, __q26, __q27, __q28, __q29, __q30, __q31
+  };
+}
+
+extern __inline __m256i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_set_epi64x (long long __A, long long __B, long long __C,
+		   long long __D)
+{
+  return __extension__ (__m256i)(__v4di){ __D, __C, __B, __A };
+}
+
+/* Create a vector with all elements equal to A.  */
+extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_set1_pd (double __A)
+{
+  return __extension__ (__m256d){ __A, __A, __A, __A };
+}
+
+/* Create a vector with all elements equal to A.  */
+extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_set1_ps (float __A)
+{
+  return __extension__ (__m256){ __A, __A, __A, __A,
+				 __A, __A, __A, __A };
+}
+
+/* Create a vector with all elements equal to A.  */
+extern __inline __m256i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_set1_epi32 (int __A)
+{
+  return __extension__ (__m256i)(__v8si){ __A, __A, __A, __A,
+					  __A, __A, __A, __A };
+}
+
+extern __inline __m256i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_set1_epi16 (short __A)
+{
+  return _mm256_set_epi16 (__A, __A, __A, __A, __A, __A, __A, __A,
+			   __A, __A, __A, __A, __A, __A, __A, __A);
+}
+
+extern __inline __m256i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_set1_epi8 (char __A)
+{
+  return _mm256_set_epi8 (__A, __A, __A, __A, __A, __A, __A, __A,
+			  __A, __A, __A, __A, __A, __A, __A, __A,
+			  __A, __A, __A, __A, __A, __A, __A, __A,
+			  __A, __A, __A, __A, __A, __A, __A, __A);
+}
+
+extern __inline __m256i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_set1_epi64x (long long __A)
+{
+  return __extension__ (__m256i)(__v4di){ __A, __A, __A, __A };
+}
+
+/* Create vectors of elements in the reversed order from the
+   _mm256_set_XXX functions.  */
+
+extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_setr_pd (double __A, double __B, double __C, double __D)
+{
+  return _mm256_set_pd (__D, __C, __B, __A);
+}
+
+extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_setr_ps (float __A, float __B, float __C, float __D,
+		float __E, float __F, float __G, float __H)
+{
+  return _mm256_set_ps (__H, __G, __F, __E, __D, __C, __B, __A);
+}
+
+extern __inline __m256i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_setr_epi32 (int __A, int __B, int __C, int __D,
+		   int __E, int __F, int __G, int __H)
+{
+  return _mm256_set_epi32 (__H, __G, __F, __E, __D, __C, __B, __A);
+}
+
+extern __inline __m256i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_setr_epi16 (short __q15, short __q14, short __q13, short __q12,
+		   short __q11, short __q10, short __q09, short __q08,
+		   short __q07, short __q06, short __q05, short __q04,
+		   short __q03, short __q02, short __q01, short __q00)
+{
+  return _mm256_set_epi16 (__q00, __q01, __q02, __q03,
+			   __q04, __q05, __q06, __q07,
+			   __q08, __q09, __q10, __q11,
+			   __q12, __q13, __q14, __q15);
+}
+
+extern __inline __m256i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_setr_epi8  (char __q31, char __q30, char __q29, char __q28,
+		   char __q27, char __q26, char __q25, char __q24,
+		   char __q23, char __q22, char __q21, char __q20,
+		   char __q19, char __q18, char __q17, char __q16,
+		   char __q15, char __q14, char __q13, char __q12,
+		   char __q11, char __q10, char __q09, char __q08,
+		   char __q07, char __q06, char __q05, char __q04,
+		   char __q03, char __q02, char __q01, char __q00)
+{
+  return _mm256_set_epi8 (__q00, __q01, __q02, __q03,
+			  __q04, __q05, __q06, __q07,
+			  __q08, __q09, __q10, __q11,
+			  __q12, __q13, __q14, __q15,
+			  __q16, __q17, __q18, __q19,
+			  __q20, __q21, __q22, __q23,
+			  __q24, __q25, __q26, __q27,
+			  __q28, __q29, __q30, __q31);
+}
+
+extern __inline __m256i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_setr_epi64x (long long __A, long long __B, long long __C,
+		    long long __D)
+{
+  return _mm256_set_epi64x (__D, __C, __B, __A);
+}
+
+/* Casts between various SP, DP, INT vector types.  Note that these do no
+   conversion of values, they just change the type.  */
+extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_castpd_ps (__m256d __A)
+{
+  return (__m256) __A;
+}
+
+extern __inline __m256i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_castpd_si256 (__m256d __A)
+{
+  return (__m256i) __A;
+}
+
+extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_castps_pd (__m256 __A)
+{
+  return (__m256d) __A;
+}
+
+extern __inline __m256i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_castps_si256(__m256 __A)
+{
+  return (__m256i) __A;
+}
+
+extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_castsi256_ps (__m256i __A)
+{
+  return (__m256) __A;
+}
+
+extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_castsi256_pd (__m256i __A)
+{
+  return (__m256d) __A;
+}
+
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_castpd256_pd128 (__m256d __A)
+{
+  return (__m128d) __builtin_ia32_pd_pd256 ((__v4df)__A);
+}
+
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_castps256_ps128 (__m256 __A)
+{
+  return (__m128) __builtin_ia32_ps_ps256 ((__v8sf)__A);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_castsi256_si128 (__m256i __A)
+{
+  return (__m128i) __builtin_ia32_si_si256 ((__v8si)__A);
+}
+
+/* When cast is done from a 128 to 256-bit type, the low 128 bits of
+   the 256-bit result contain source parameter value and the upper 128
+   bits of the result are undefined.  Those intrinsics shouldn't
+   generate any extra moves.  */
+
+extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_castpd128_pd256 (__m128d __A)
+{
+  return (__m256d) __builtin_ia32_pd256_pd ((__v2df)__A);
+}
+
+extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_castps128_ps256 (__m128 __A)
+{
+  return (__m256) __builtin_ia32_ps256_ps ((__v4sf)__A);
+}
+
+extern __inline __m256i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_castsi128_si256 (__m128i __A)
+{
+  return (__m256i) __builtin_ia32_si256_si ((__v4si)__A);
+}
+
+#ifdef __DISABLE_AVX__
+#undef __DISABLE_AVX__
+#pragma GCC pop_options
+#endif /* __DISABLE_AVX__ */
+
+#endif /* _AVXINTRIN_H_INCLUDED */
Index: Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/bmi2intrin.h
===================================================================
--- Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/bmi2intrin.h	(revision 1046)
+++ Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/bmi2intrin.h	(revision 1046)
@@ -0,0 +1,109 @@
+/* Copyright (C) 2011-2015 Free Software Foundation, Inc.
+
+   This file is part of GCC.
+
+   GCC is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
+
+   GCC is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   Under Section 7 of GPL version 3, you are granted additional
+   permissions described in the GCC Runtime Library Exception, version
+   3.1, as published by the Free Software Foundation.
+
+   You should have received a copy of the GNU General Public License and
+   a copy of the GCC Runtime Library Exception along with this program;
+   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#if !defined _X86INTRIN_H_INCLUDED && !defined _IMMINTRIN_H_INCLUDED
+# error "Never use <bmi2intrin.h> directly; include <x86intrin.h> instead."
+#endif
+
+#ifndef _BMI2INTRIN_H_INCLUDED
+#define _BMI2INTRIN_H_INCLUDED
+
+#ifndef __BMI2__
+#pragma GCC push_options
+#pragma GCC target("bmi2")
+#define __DISABLE_BMI2__
+#endif /* __BMI2__ */
+
+extern __inline unsigned int
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_bzhi_u32 (unsigned int __X, unsigned int __Y)
+{
+  return __builtin_ia32_bzhi_si (__X, __Y);
+}
+
+extern __inline unsigned int
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_pdep_u32 (unsigned int __X, unsigned int __Y)
+{
+  return __builtin_ia32_pdep_si (__X, __Y);
+}
+
+extern __inline unsigned int
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_pext_u32 (unsigned int __X, unsigned int __Y)
+{
+  return __builtin_ia32_pext_si (__X, __Y);
+}
+
+#ifdef  __x86_64__
+
+extern __inline unsigned long long
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_bzhi_u64 (unsigned long long __X, unsigned long long __Y)
+{
+  return __builtin_ia32_bzhi_di (__X, __Y);
+}
+
+extern __inline unsigned long long
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_pdep_u64 (unsigned long long __X, unsigned long long __Y)
+{
+  return __builtin_ia32_pdep_di (__X, __Y);
+}
+
+extern __inline unsigned long long
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_pext_u64 (unsigned long long __X, unsigned long long __Y)
+{
+  return __builtin_ia32_pext_di (__X, __Y);
+}
+
+extern __inline unsigned long long
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mulx_u64 (unsigned long long __X, unsigned long long __Y,
+	   unsigned long long *__P)
+{
+  unsigned __int128 __res = (unsigned __int128) __X * __Y;
+  *__P = (unsigned long long) (__res >> 64);
+  return (unsigned long long) __res;
+}
+
+#else /* !__x86_64__ */
+
+extern __inline unsigned int
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mulx_u32 (unsigned int __X, unsigned int __Y, unsigned int *__P)
+{
+  unsigned long long __res = (unsigned long long) __X * __Y;
+  *__P = (unsigned int) (__res >> 32);
+  return (unsigned int) __res;
+}
+
+#endif /* !__x86_64__  */
+
+#ifdef __DISABLE_BMI2__
+#undef __DISABLE_BMI2__
+#pragma GCC pop_options
+#endif /* __DISABLE_BMI2__ */
+
+#endif /* _BMI2INTRIN_H_INCLUDED */
Index: Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/bmiintrin.h
===================================================================
--- Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/bmiintrin.h	(revision 1046)
+++ Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/bmiintrin.h	(revision 1046)
@@ -0,0 +1,184 @@
+/* Copyright (C) 2010-2015 Free Software Foundation, Inc.
+
+   This file is part of GCC.
+
+   GCC is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
+
+   GCC is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   Under Section 7 of GPL version 3, you are granted additional
+   permissions described in the GCC Runtime Library Exception, version
+   3.1, as published by the Free Software Foundation.
+
+   You should have received a copy of the GNU General Public License and
+   a copy of the GCC Runtime Library Exception along with this program;
+   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#if !defined _X86INTRIN_H_INCLUDED && !defined _IMMINTRIN_H_INCLUDED
+# error "Never use <bmiintrin.h> directly; include <x86intrin.h> instead."
+#endif
+
+#ifndef _BMIINTRIN_H_INCLUDED
+#define _BMIINTRIN_H_INCLUDED
+
+#ifndef __BMI__
+#pragma GCC push_options
+#pragma GCC target("bmi")
+#define __DISABLE_BMI__
+#endif /* __BMI__ */
+
+extern __inline unsigned short __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+__tzcnt_u16 (unsigned short __X)
+{
+  return __builtin_ctzs (__X);
+}
+
+extern __inline unsigned int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+__andn_u32 (unsigned int __X, unsigned int __Y)
+{
+  return ~__X & __Y;
+}
+
+extern __inline unsigned int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+__bextr_u32 (unsigned int __X, unsigned int __Y)
+{
+  return __builtin_ia32_bextr_u32 (__X, __Y);
+}
+
+extern __inline unsigned int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_bextr_u32 (unsigned int __X, unsigned int __Y, unsigned __Z)
+{
+  return __builtin_ia32_bextr_u32 (__X, ((__Y & 0xff) | ((__Z & 0xff) << 8)));
+}
+
+extern __inline unsigned int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+__blsi_u32 (unsigned int __X)
+{
+  return __X & -__X;
+}
+
+extern __inline unsigned int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_blsi_u32 (unsigned int __X)
+{
+  return __blsi_u32 (__X);
+}
+
+extern __inline unsigned int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+__blsmsk_u32 (unsigned int __X)
+{
+  return __X ^ (__X - 1);
+}
+
+extern __inline unsigned int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_blsmsk_u32 (unsigned int __X)
+{
+  return __blsmsk_u32 (__X);
+}
+
+extern __inline unsigned int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+__blsr_u32 (unsigned int __X)
+{
+  return __X & (__X - 1);
+}
+
+extern __inline unsigned int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_blsr_u32 (unsigned int __X)
+{
+  return __blsr_u32 (__X);
+}
+
+extern __inline unsigned int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+__tzcnt_u32 (unsigned int __X)
+{
+  return __builtin_ctz (__X);
+}
+
+extern __inline unsigned int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_tzcnt_u32 (unsigned int __X)
+{
+  return __builtin_ctz (__X);
+}
+
+
+#ifdef  __x86_64__
+extern __inline unsigned long long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+__andn_u64 (unsigned long long __X, unsigned long long __Y)
+{
+  return ~__X & __Y;
+}
+
+extern __inline unsigned long long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+__bextr_u64 (unsigned long long __X, unsigned long long __Y)
+{
+  return __builtin_ia32_bextr_u64 (__X, __Y);
+}
+
+extern __inline unsigned long long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_bextr_u64 (unsigned long long __X, unsigned int __Y, unsigned int __Z)
+{
+  return __builtin_ia32_bextr_u64 (__X, ((__Y & 0xff) | ((__Z & 0xff) << 8)));
+}
+
+extern __inline unsigned long long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+__blsi_u64 (unsigned long long __X)
+{
+  return __X & -__X;
+}
+
+extern __inline unsigned long long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_blsi_u64 (unsigned long long __X)
+{
+  return __blsi_u64 (__X);
+}
+
+extern __inline unsigned long long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+__blsmsk_u64 (unsigned long long __X)
+{
+  return __X ^ (__X - 1);
+}
+
+extern __inline unsigned long long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_blsmsk_u64 (unsigned long long __X)
+{
+  return __blsmsk_u64 (__X);
+}
+
+extern __inline unsigned long long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+__blsr_u64 (unsigned long long __X)
+{
+  return __X & (__X - 1);
+}
+
+extern __inline unsigned long long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_blsr_u64 (unsigned long long __X)
+{
+  return __blsr_u64 (__X);
+}
+
+extern __inline unsigned long long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+__tzcnt_u64 (unsigned long long __X)
+{
+  return __builtin_ctzll (__X);
+}
+
+extern __inline unsigned long long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_tzcnt_u64 (unsigned long long __X)
+{
+  return __builtin_ctzll (__X);
+}
+
+#endif /* __x86_64__  */
+
+#ifdef __DISABLE_BMI__
+#undef __DISABLE_BMI__
+#pragma GCC pop_options
+#endif /* __DISABLE_BMI__ */
+
+#endif /* _BMIINTRIN_H_INCLUDED */
Index: Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/bmmintrin.h
===================================================================
--- Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/bmmintrin.h	(revision 1046)
+++ Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/bmmintrin.h	(revision 1046)
@@ -0,0 +1,29 @@
+/* Copyright (C) 2007-2015 Free Software Foundation, Inc.
+
+   This file is part of GCC.
+
+   GCC is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
+
+   GCC is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   Under Section 7 of GPL version 3, you are granted additional
+   permissions described in the GCC Runtime Library Exception, version
+   3.1, as published by the Free Software Foundation.
+
+   You should have received a copy of the GNU General Public License and
+   a copy of the GCC Runtime Library Exception along with this program;
+   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _BMMINTRIN_H_INCLUDED
+#define _BMMINTRIN_H_INCLUDED
+
+# error "SSE5 instruction set removed from compiler"
+
+#endif /* _BMMINTRIN_H_INCLUDED */
Index: Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/clflushoptintrin.h
===================================================================
--- Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/clflushoptintrin.h	(revision 1046)
+++ Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/clflushoptintrin.h	(revision 1046)
@@ -0,0 +1,49 @@
+/* Copyright (C) 2013-2015 Free Software Foundation, Inc.
+
+   This file is part of GCC.
+
+   GCC is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
+
+   GCC is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   Under Section 7 of GPL version 3, you are granted additional
+   permissions described in the GCC Runtime Library Exception, version
+   3.1, as published by the Free Software Foundation.
+
+   You should have received a copy of the GNU General Public License and
+   a copy of the GCC Runtime Library Exception along with this program;
+   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#if !defined _X86INTRIN_H_INCLUDED
+# error "Never use <clflushoptintrin.h> directly; include <x86intrin.h> instead."
+#endif
+
+#ifndef _CLFLUSHOPTINTRIN_H_INCLUDED
+#define _CLFLUSHOPTINTRIN_H_INCLUDED
+
+#ifndef __CLFLUSHOPT__
+#pragma GCC push_options
+#pragma GCC target("clflushopt")
+#define __DISABLE_CLFLUSHOPT__
+#endif /* __CLFLUSHOPT__ */
+
+extern __inline void
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_clflushopt (void *__A)
+{
+  __builtin_ia32_clflushopt (__A);
+}
+
+#ifdef __DISABLE_CLFLUSHOPT__
+#undef __DISABLE_CLFLUSHOPT__
+#pragma GCC pop_options
+#endif /* __DISABLE_CLFLUSHOPT__ */
+
+#endif /* _CLFLUSHOPTINTRIN_H_INCLUDED */
Index: Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/clwbintrin.h
===================================================================
--- Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/clwbintrin.h	(revision 1046)
+++ Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/clwbintrin.h	(revision 1046)
@@ -0,0 +1,49 @@
+/* Copyright (C) 2013-2015 Free Software Foundation, Inc.
+
+   This file is part of GCC.
+
+   GCC is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
+
+   GCC is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   Under Section 7 of GPL version 3, you are granted additional
+   permissions described in the GCC Runtime Library Exception, version
+   3.1, as published by the Free Software Foundation.
+
+   You should have received a copy of the GNU General Public License and
+   a copy of the GCC Runtime Library Exception along with this program;
+   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#if !defined _X86INTRIN_H_INCLUDED
+# error "Never use <clwbintrin.h> directly; include <x86intrin.h> instead."
+#endif
+
+#ifndef _CLWBINTRIN_H_INCLUDED
+#define _CLWBINTRIN_H_INCLUDED
+
+#ifndef __CLWB__
+#pragma GCC push_options
+#pragma GCC target("clwb")
+#define __DISABLE_CLWB__
+#endif /* __CLWB__ */
+
+extern __inline void
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_clwb (void *__A)
+{
+  __builtin_ia32_clwb (__A);
+}
+
+#ifdef __DISABLE_CLWB__
+#undef __DISABLE_CLWB__
+#pragma GCC pop_options
+#endif /* __DISABLE_CLWB__ */
+
+#endif /* _CLWBINTRIN_H_INCLUDED */
Index: Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/cpuid.h
===================================================================
--- Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/cpuid.h	(revision 1046)
+++ Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/cpuid.h	(revision 1046)
@@ -0,0 +1,244 @@
+/*
+ * Copyright (C) 2007-2015 Free Software Foundation, Inc.
+ *
+ * This file is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 3, or (at your option) any
+ * later version.
+ * 
+ * This file is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ * 
+ * Under Section 7 of GPL version 3, you are granted additional
+ * permissions described in the GCC Runtime Library Exception, version
+ * 3.1, as published by the Free Software Foundation.
+ * 
+ * You should have received a copy of the GNU General Public License and
+ * a copy of the GCC Runtime Library Exception along with this program;
+ * see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+ * <http://www.gnu.org/licenses/>.
+ */
+
+/* %ecx */
+#define bit_SSE3	(1 << 0)
+#define bit_PCLMUL	(1 << 1)
+#define bit_LZCNT	(1 << 5)
+#define bit_SSSE3	(1 << 9)
+#define bit_FMA		(1 << 12)
+#define bit_CMPXCHG16B	(1 << 13)
+#define bit_SSE4_1	(1 << 19)
+#define bit_SSE4_2	(1 << 20)
+#define bit_MOVBE	(1 << 22)
+#define bit_POPCNT	(1 << 23)
+#define bit_AES		(1 << 25)
+#define bit_XSAVE	(1 << 26)
+#define bit_OSXSAVE	(1 << 27)
+#define bit_AVX		(1 << 28)
+#define bit_F16C	(1 << 29)
+#define bit_RDRND	(1 << 30)
+
+/* %edx */
+#define bit_CMPXCHG8B	(1 << 8)
+#define bit_CMOV	(1 << 15)
+#define bit_MMX		(1 << 23)
+#define bit_FXSAVE	(1 << 24)
+#define bit_SSE		(1 << 25)
+#define bit_SSE2	(1 << 26)
+
+/* Extended Features */
+/* %ecx */
+#define bit_LAHF_LM	(1 << 0)
+#define bit_ABM		(1 << 5)
+#define bit_SSE4a	(1 << 6)
+#define bit_PRFCHW	(1 << 8)
+#define bit_XOP         (1 << 11)
+#define bit_LWP 	(1 << 15)
+#define bit_FMA4        (1 << 16)
+#define bit_TBM         (1 << 21)
+#define bit_MWAITX      (1 << 29)
+
+/* %edx */
+#define bit_MMXEXT	(1 << 22)
+#define bit_LM		(1 << 29)
+#define bit_3DNOWP	(1 << 30)
+#define bit_3DNOW	(1 << 31)
+
+/* Extended Features (%eax == 7) */
+/* %ebx */
+#define bit_FSGSBASE	(1 << 0)
+#define bit_BMI	(1 << 3)
+#define bit_HLE	(1 << 4)
+#define bit_AVX2	(1 << 5)
+#define bit_BMI2	(1 << 8)
+#define bit_RTM	(1 << 11)
+#define bit_MPX	(1 << 14)
+#define bit_AVX512F	(1 << 16)
+#define bit_AVX512DQ	(1 << 17)
+#define bit_RDSEED	(1 << 18)
+#define bit_ADX	(1 << 19)
+#define bit_AVX512IFMA	(1 << 21)
+#define bit_PCOMMIT	(1 << 22)
+#define bit_CLFLUSHOPT	(1 << 23)
+#define bit_CLWB	(1 << 24)
+#define bit_AVX512PF	(1 << 26)
+#define bit_AVX512ER	(1 << 27)
+#define bit_AVX512CD	(1 << 28)
+#define bit_SHA		(1 << 29)
+#define bit_AVX512BW	(1 << 30)
+#define bit_AVX512VL	(1 << 31)
+
+/* %ecx */
+#define bit_PREFETCHWT1	  (1 << 0)
+#define bit_AVX512VBMI	(1 << 1)
+
+/* XFEATURE_ENABLED_MASK register bits (%eax == 13, %ecx == 0) */
+#define bit_BNDREGS     (1 << 3)
+#define bit_BNDCSR      (1 << 4)
+
+/* Extended State Enumeration Sub-leaf (%eax == 13, %ecx == 1) */
+#define bit_XSAVEOPT	(1 << 0)
+#define bit_XSAVEC	(1 << 1)
+#define bit_XSAVES	(1 << 3)
+
+/* Signatures for different CPU implementations as returned in uses
+   of cpuid with level 0.  */
+#define signature_AMD_ebx	0x68747541
+#define signature_AMD_ecx	0x444d4163
+#define signature_AMD_edx	0x69746e65
+
+#define signature_CENTAUR_ebx	0x746e6543
+#define signature_CENTAUR_ecx	0x736c7561
+#define signature_CENTAUR_edx	0x48727561
+
+#define signature_CYRIX_ebx	0x69727943
+#define signature_CYRIX_ecx	0x64616574
+#define signature_CYRIX_edx	0x736e4978
+
+#define signature_INTEL_ebx	0x756e6547
+#define signature_INTEL_ecx	0x6c65746e
+#define signature_INTEL_edx	0x49656e69
+
+#define signature_TM1_ebx	0x6e617254
+#define signature_TM1_ecx	0x55504361
+#define signature_TM1_edx	0x74656d73
+
+#define signature_TM2_ebx	0x756e6547
+#define signature_TM2_ecx	0x3638784d
+#define signature_TM2_edx	0x54656e69
+
+#define signature_NSC_ebx	0x646f6547
+#define signature_NSC_ecx	0x43534e20
+#define signature_NSC_edx	0x79622065
+
+#define signature_NEXGEN_ebx	0x4778654e
+#define signature_NEXGEN_ecx	0x6e657669
+#define signature_NEXGEN_edx	0x72446e65
+
+#define signature_RISE_ebx	0x65736952
+#define signature_RISE_ecx	0x65736952
+#define signature_RISE_edx	0x65736952
+
+#define signature_SIS_ebx	0x20536953
+#define signature_SIS_ecx	0x20536953
+#define signature_SIS_edx	0x20536953
+
+#define signature_UMC_ebx	0x20434d55
+#define signature_UMC_ecx	0x20434d55
+#define signature_UMC_edx	0x20434d55
+
+#define signature_VIA_ebx	0x20414956
+#define signature_VIA_ecx	0x20414956
+#define signature_VIA_edx	0x20414956
+
+#define signature_VORTEX_ebx	0x74726f56
+#define signature_VORTEX_ecx	0x436f5320
+#define signature_VORTEX_edx	0x36387865
+
+#define __cpuid(level, a, b, c, d)			\
+  __asm__ ("cpuid\n\t"					\
+	   : "=a" (a), "=b" (b), "=c" (c), "=d" (d)	\
+	   : "0" (level))
+
+#define __cpuid_count(level, count, a, b, c, d)		\
+  __asm__ ("cpuid\n\t"					\
+	   : "=a" (a), "=b" (b), "=c" (c), "=d" (d)	\
+	   : "0" (level), "2" (count))
+
+
+/* Return highest supported input value for cpuid instruction.  ext can
+   be either 0x0 or 0x8000000 to return highest supported value for
+   basic or extended cpuid information.  Function returns 0 if cpuid
+   is not supported or whatever cpuid returns in eax register.  If sig
+   pointer is non-null, then first four bytes of the signature
+   (as found in ebx register) are returned in location pointed by sig.  */
+
+static __inline unsigned int
+__get_cpuid_max (unsigned int __ext, unsigned int *__sig)
+{
+  unsigned int __eax, __ebx, __ecx, __edx;
+
+#ifndef __x86_64__
+  /* See if we can use cpuid.  On AMD64 we always can.  */
+#if __GNUC__ >= 3
+  __asm__ ("pushf{l|d}\n\t"
+	   "pushf{l|d}\n\t"
+	   "pop{l}\t%0\n\t"
+	   "mov{l}\t{%0, %1|%1, %0}\n\t"
+	   "xor{l}\t{%2, %0|%0, %2}\n\t"
+	   "push{l}\t%0\n\t"
+	   "popf{l|d}\n\t"
+	   "pushf{l|d}\n\t"
+	   "pop{l}\t%0\n\t"
+	   "popf{l|d}\n\t"
+	   : "=&r" (__eax), "=&r" (__ebx)
+	   : "i" (0x00200000));
+#else
+/* Host GCCs older than 3.0 weren't supporting Intel asm syntax
+   nor alternatives in i386 code.  */
+  __asm__ ("pushfl\n\t"
+	   "pushfl\n\t"
+	   "popl\t%0\n\t"
+	   "movl\t%0, %1\n\t"
+	   "xorl\t%2, %0\n\t"
+	   "pushl\t%0\n\t"
+	   "popfl\n\t"
+	   "pushfl\n\t"
+	   "popl\t%0\n\t"
+	   "popfl\n\t"
+	   : "=&r" (__eax), "=&r" (__ebx)
+	   : "i" (0x00200000));
+#endif
+
+  if (!((__eax ^ __ebx) & 0x00200000))
+    return 0;
+#endif
+
+  /* Host supports cpuid.  Return highest supported cpuid input value.  */
+  __cpuid (__ext, __eax, __ebx, __ecx, __edx);
+
+  if (__sig)
+    *__sig = __ebx;
+
+  return __eax;
+}
+
+/* Return cpuid data for requested cpuid level, as found in returned
+   eax, ebx, ecx and edx registers.  The function checks if cpuid is
+   supported and returns 1 for valid cpuid information or 0 for
+   unsupported cpuid level.  All pointers are required to be non-null.  */
+
+static __inline int
+__get_cpuid (unsigned int __level,
+	     unsigned int *__eax, unsigned int *__ebx,
+	     unsigned int *__ecx, unsigned int *__edx)
+{
+  unsigned int __ext = __level & 0x80000000;
+
+  if (__get_cpuid_max (__ext, 0) < __level)
+    return 0;
+
+  __cpuid (__level, *__eax, *__ebx, *__ecx, *__edx);
+  return 1;
+}
Index: Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/cross-stdarg.h
===================================================================
--- Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/cross-stdarg.h	(revision 1046)
+++ Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/cross-stdarg.h	(revision 1046)
@@ -0,0 +1,72 @@
+/* Copyright (C) 2002-2015 Free Software Foundation, Inc.
+
+   This file is part of GCC.
+
+   GCC is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
+
+   GCC is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   Under Section 7 of GPL version 3, you are granted additional
+   permissions described in the GCC Runtime Library Exception, version
+   3.1, as published by the Free Software Foundation.
+
+   You should have received a copy of the GNU General Public License and
+   a copy of the GCC Runtime Library Exception along with this program;
+   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef __CROSS_STDARG_H_INCLUDED
+#define __CROSS_STDARG_H_INCLUDED
+
+/* Make sure that for non x64 targets cross builtins are defined.  */
+#ifndef __x86_64__
+/* Call abi ms_abi.  */
+#define __builtin_ms_va_list __builtin_va_list
+#define __builtin_ms_va_copy __builtin_va_copy
+#define __builtin_ms_va_start __builtin_va_start
+#define __builtin_ms_va_end __builtin_va_end
+
+/* Call abi sysv_abi.  */
+#define __builtin_sysv_va_list __builtin_va_list
+#define __builtin_sysv_va_copy __builtin_va_copy
+#define __builtin_sysv_va_start __builtin_va_start
+#define __builtin_sysv_va_end __builtin_va_end
+#endif
+
+#define __ms_va_copy(__d,__s) __builtin_ms_va_copy(__d,__s)
+#define __ms_va_start(__v,__l) __builtin_ms_va_start(__v,__l)
+#define __ms_va_arg(__v,__l)	__builtin_va_arg(__v,__l)
+#define __ms_va_end(__v) __builtin_ms_va_end(__v)
+
+#define __sysv_va_copy(__d,__s) __builtin_sysv_va_copy(__d,__s)
+#define __sysv_va_start(__v,__l) __builtin_sysv_va_start(__v,__l)
+#define __sysv_va_arg(__v,__l)	__builtin_va_arg(__v,__l)
+#define __sysv_va_end(__v) __builtin_sysv_va_end(__v)
+
+#ifndef __GNUC_SYSV_VA_LIST
+#define __GNUC_SYSV_VA_LIST
+  typedef __builtin_sysv_va_list __gnuc_sysv_va_list;
+#endif
+
+#ifndef _SYSV_VA_LIST_DEFINED
+#define _SYSV_VA_LIST_DEFINED
+  typedef __gnuc_sysv_va_list sysv_va_list;
+#endif
+
+#ifndef __GNUC_MS_VA_LIST
+#define __GNUC_MS_VA_LIST
+  typedef __builtin_ms_va_list __gnuc_ms_va_list;
+#endif
+
+#ifndef _MS_VA_LIST_DEFINED
+#define _MS_VA_LIST_DEFINED
+  typedef __gnuc_ms_va_list ms_va_list;
+#endif
+
+#endif /* __CROSS_STDARG_H_INCLUDED */
Index: Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/emmintrin.h
===================================================================
--- Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/emmintrin.h	(revision 1046)
+++ Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/emmintrin.h	(revision 1046)
@@ -0,0 +1,1561 @@
+/* Copyright (C) 2003-2015 Free Software Foundation, Inc.
+
+   This file is part of GCC.
+
+   GCC is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
+
+   GCC is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   Under Section 7 of GPL version 3, you are granted additional
+   permissions described in the GCC Runtime Library Exception, version
+   3.1, as published by the Free Software Foundation.
+
+   You should have received a copy of the GNU General Public License and
+   a copy of the GCC Runtime Library Exception along with this program;
+   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+/* Implemented from the specification included in the Intel C++ Compiler
+   User Guide and Reference, version 9.0.  */
+
+#ifndef _EMMINTRIN_H_INCLUDED
+#define _EMMINTRIN_H_INCLUDED
+
+/* We need definitions from the SSE header files*/
+#include <xmmintrin.h>
+
+#ifndef __SSE2__
+#pragma GCC push_options
+#pragma GCC target("sse2")
+#define __DISABLE_SSE2__
+#endif /* __SSE2__ */
+
+/* SSE2 */
+typedef double __v2df __attribute__ ((__vector_size__ (16)));
+typedef long long __v2di __attribute__ ((__vector_size__ (16)));
+typedef unsigned long long __v2du __attribute__ ((__vector_size__ (16)));
+typedef int __v4si __attribute__ ((__vector_size__ (16)));
+typedef unsigned int __v4su __attribute__ ((__vector_size__ (16)));
+typedef short __v8hi __attribute__ ((__vector_size__ (16)));
+typedef unsigned short __v8hu __attribute__ ((__vector_size__ (16)));
+typedef char __v16qi __attribute__ ((__vector_size__ (16)));
+typedef unsigned char __v16qu __attribute__ ((__vector_size__ (16)));
+
+/* The Intel API is flexible enough that we must allow aliasing with other
+   vector types, and their scalar components.  */
+typedef long long __m128i __attribute__ ((__vector_size__ (16), __may_alias__));
+typedef double __m128d __attribute__ ((__vector_size__ (16), __may_alias__));
+
+/* Create a selector for use with the SHUFPD instruction.  */
+#define _MM_SHUFFLE2(fp1,fp0) \
+ (((fp1) << 1) | (fp0))
+
+/* Create a vector with element 0 as F and the rest zero.  */
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_set_sd (double __F)
+{
+  return __extension__ (__m128d){ __F, 0.0 };
+}
+
+/* Create a vector with both elements equal to F.  */
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_set1_pd (double __F)
+{
+  return __extension__ (__m128d){ __F, __F };
+}
+
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_set_pd1 (double __F)
+{
+  return _mm_set1_pd (__F);
+}
+
+/* Create a vector with the lower value X and upper value W.  */
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_set_pd (double __W, double __X)
+{
+  return __extension__ (__m128d){ __X, __W };
+}
+
+/* Create a vector with the lower value W and upper value X.  */
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_setr_pd (double __W, double __X)
+{
+  return __extension__ (__m128d){ __W, __X };
+}
+
+/* Create an undefined vector.  */
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_undefined_pd (void)
+{
+  __m128d __Y = __Y;
+  return __Y;
+}
+
+/* Create a vector of zeros.  */
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_setzero_pd (void)
+{
+  return __extension__ (__m128d){ 0.0, 0.0 };
+}
+
+/* Sets the low DPFP value of A from the low value of B.  */
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_move_sd (__m128d __A, __m128d __B)
+{
+  return (__m128d) __builtin_ia32_movsd ((__v2df)__A, (__v2df)__B);
+}
+
+/* Load two DPFP values from P.  The address must be 16-byte aligned.  */
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_load_pd (double const *__P)
+{
+  return *(__m128d *)__P;
+}
+
+/* Load two DPFP values from P.  The address need not be 16-byte aligned.  */
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_loadu_pd (double const *__P)
+{
+  return __builtin_ia32_loadupd (__P);
+}
+
+/* Create a vector with all two elements equal to *P.  */
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_load1_pd (double const *__P)
+{
+  return _mm_set1_pd (*__P);
+}
+
+/* Create a vector with element 0 as *P and the rest zero.  */
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_load_sd (double const *__P)
+{
+  return _mm_set_sd (*__P);
+}
+
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_load_pd1 (double const *__P)
+{
+  return _mm_load1_pd (__P);
+}
+
+/* Load two DPFP values in reverse order.  The address must be aligned.  */
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_loadr_pd (double const *__P)
+{
+  __m128d __tmp = _mm_load_pd (__P);
+  return __builtin_ia32_shufpd (__tmp, __tmp, _MM_SHUFFLE2 (0,1));
+}
+
+/* Store two DPFP values.  The address must be 16-byte aligned.  */
+extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_store_pd (double *__P, __m128d __A)
+{
+  *(__m128d *)__P = __A;
+}
+
+/* Store two DPFP values.  The address need not be 16-byte aligned.  */
+extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_storeu_pd (double *__P, __m128d __A)
+{
+  __builtin_ia32_storeupd (__P, __A);
+}
+
+/* Stores the lower DPFP value.  */
+extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_store_sd (double *__P, __m128d __A)
+{
+  *__P = ((__v2df)__A)[0];
+}
+
+extern __inline double __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtsd_f64 (__m128d __A)
+{
+  return ((__v2df)__A)[0];
+}
+
+extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_storel_pd (double *__P, __m128d __A)
+{
+  _mm_store_sd (__P, __A);
+}
+
+/* Stores the upper DPFP value.  */
+extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_storeh_pd (double *__P, __m128d __A)
+{
+  *__P = ((__v2df)__A)[1];
+}
+
+/* Store the lower DPFP value across two words.
+   The address must be 16-byte aligned.  */
+extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_store1_pd (double *__P, __m128d __A)
+{
+  _mm_store_pd (__P, __builtin_ia32_shufpd (__A, __A, _MM_SHUFFLE2 (0,0)));
+}
+
+extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_store_pd1 (double *__P, __m128d __A)
+{
+  _mm_store1_pd (__P, __A);
+}
+
+/* Store two DPFP values in reverse order.  The address must be aligned.  */
+extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_storer_pd (double *__P, __m128d __A)
+{
+  _mm_store_pd (__P, __builtin_ia32_shufpd (__A, __A, _MM_SHUFFLE2 (0,1)));
+}
+
+extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtsi128_si32 (__m128i __A)
+{
+  return __builtin_ia32_vec_ext_v4si ((__v4si)__A, 0);
+}
+
+#ifdef __x86_64__
+/* Intel intrinsic.  */
+extern __inline long long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtsi128_si64 (__m128i __A)
+{
+  return ((__v2di)__A)[0];
+}
+
+/* Microsoft intrinsic.  */
+extern __inline long long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtsi128_si64x (__m128i __A)
+{
+  return ((__v2di)__A)[0];
+}
+#endif
+
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_add_pd (__m128d __A, __m128d __B)
+{
+  return (__m128d) ((__v2df)__A + (__v2df)__B);
+}
+
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_add_sd (__m128d __A, __m128d __B)
+{
+  return (__m128d)__builtin_ia32_addsd ((__v2df)__A, (__v2df)__B);
+}
+
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_sub_pd (__m128d __A, __m128d __B)
+{
+  return (__m128d) ((__v2df)__A - (__v2df)__B);
+}
+
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_sub_sd (__m128d __A, __m128d __B)
+{
+  return (__m128d)__builtin_ia32_subsd ((__v2df)__A, (__v2df)__B);
+}
+
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mul_pd (__m128d __A, __m128d __B)
+{
+  return (__m128d) ((__v2df)__A * (__v2df)__B);
+}
+
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mul_sd (__m128d __A, __m128d __B)
+{
+  return (__m128d)__builtin_ia32_mulsd ((__v2df)__A, (__v2df)__B);
+}
+
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_div_pd (__m128d __A, __m128d __B)
+{
+  return (__m128d) ((__v2df)__A / (__v2df)__B);
+}
+
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_div_sd (__m128d __A, __m128d __B)
+{
+  return (__m128d)__builtin_ia32_divsd ((__v2df)__A, (__v2df)__B);
+}
+
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_sqrt_pd (__m128d __A)
+{
+  return (__m128d)__builtin_ia32_sqrtpd ((__v2df)__A);
+}
+
+/* Return pair {sqrt (B[0]), A[1]}.  */
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_sqrt_sd (__m128d __A, __m128d __B)
+{
+  __v2df __tmp = __builtin_ia32_movsd ((__v2df)__A, (__v2df)__B);
+  return (__m128d)__builtin_ia32_sqrtsd ((__v2df)__tmp);
+}
+
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_min_pd (__m128d __A, __m128d __B)
+{
+  return (__m128d)__builtin_ia32_minpd ((__v2df)__A, (__v2df)__B);
+}
+
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_min_sd (__m128d __A, __m128d __B)
+{
+  return (__m128d)__builtin_ia32_minsd ((__v2df)__A, (__v2df)__B);
+}
+
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_max_pd (__m128d __A, __m128d __B)
+{
+  return (__m128d)__builtin_ia32_maxpd ((__v2df)__A, (__v2df)__B);
+}
+
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_max_sd (__m128d __A, __m128d __B)
+{
+  return (__m128d)__builtin_ia32_maxsd ((__v2df)__A, (__v2df)__B);
+}
+
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_and_pd (__m128d __A, __m128d __B)
+{
+  return (__m128d)__builtin_ia32_andpd ((__v2df)__A, (__v2df)__B);
+}
+
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_andnot_pd (__m128d __A, __m128d __B)
+{
+  return (__m128d)__builtin_ia32_andnpd ((__v2df)__A, (__v2df)__B);
+}
+
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_or_pd (__m128d __A, __m128d __B)
+{
+  return (__m128d)__builtin_ia32_orpd ((__v2df)__A, (__v2df)__B);
+}
+
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_xor_pd (__m128d __A, __m128d __B)
+{
+  return (__m128d)__builtin_ia32_xorpd ((__v2df)__A, (__v2df)__B);
+}
+
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpeq_pd (__m128d __A, __m128d __B)
+{
+  return (__m128d)__builtin_ia32_cmpeqpd ((__v2df)__A, (__v2df)__B);
+}
+
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmplt_pd (__m128d __A, __m128d __B)
+{
+  return (__m128d)__builtin_ia32_cmpltpd ((__v2df)__A, (__v2df)__B);
+}
+
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmple_pd (__m128d __A, __m128d __B)
+{
+  return (__m128d)__builtin_ia32_cmplepd ((__v2df)__A, (__v2df)__B);
+}
+
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpgt_pd (__m128d __A, __m128d __B)
+{
+  return (__m128d)__builtin_ia32_cmpgtpd ((__v2df)__A, (__v2df)__B);
+}
+
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpge_pd (__m128d __A, __m128d __B)
+{
+  return (__m128d)__builtin_ia32_cmpgepd ((__v2df)__A, (__v2df)__B);
+}
+
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpneq_pd (__m128d __A, __m128d __B)
+{
+  return (__m128d)__builtin_ia32_cmpneqpd ((__v2df)__A, (__v2df)__B);
+}
+
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpnlt_pd (__m128d __A, __m128d __B)
+{
+  return (__m128d)__builtin_ia32_cmpnltpd ((__v2df)__A, (__v2df)__B);
+}
+
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpnle_pd (__m128d __A, __m128d __B)
+{
+  return (__m128d)__builtin_ia32_cmpnlepd ((__v2df)__A, (__v2df)__B);
+}
+
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpngt_pd (__m128d __A, __m128d __B)
+{
+  return (__m128d)__builtin_ia32_cmpngtpd ((__v2df)__A, (__v2df)__B);
+}
+
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpnge_pd (__m128d __A, __m128d __B)
+{
+  return (__m128d)__builtin_ia32_cmpngepd ((__v2df)__A, (__v2df)__B);
+}
+
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpord_pd (__m128d __A, __m128d __B)
+{
+  return (__m128d)__builtin_ia32_cmpordpd ((__v2df)__A, (__v2df)__B);
+}
+
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpunord_pd (__m128d __A, __m128d __B)
+{
+  return (__m128d)__builtin_ia32_cmpunordpd ((__v2df)__A, (__v2df)__B);
+}
+
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpeq_sd (__m128d __A, __m128d __B)
+{
+  return (__m128d)__builtin_ia32_cmpeqsd ((__v2df)__A, (__v2df)__B);
+}
+
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmplt_sd (__m128d __A, __m128d __B)
+{
+  return (__m128d)__builtin_ia32_cmpltsd ((__v2df)__A, (__v2df)__B);
+}
+
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmple_sd (__m128d __A, __m128d __B)
+{
+  return (__m128d)__builtin_ia32_cmplesd ((__v2df)__A, (__v2df)__B);
+}
+
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpgt_sd (__m128d __A, __m128d __B)
+{
+  return (__m128d) __builtin_ia32_movsd ((__v2df) __A,
+					 (__v2df)
+					 __builtin_ia32_cmpltsd ((__v2df) __B,
+								 (__v2df)
+								 __A));
+}
+
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpge_sd (__m128d __A, __m128d __B)
+{
+  return (__m128d) __builtin_ia32_movsd ((__v2df) __A,
+					 (__v2df)
+					 __builtin_ia32_cmplesd ((__v2df) __B,
+								 (__v2df)
+								 __A));
+}
+
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpneq_sd (__m128d __A, __m128d __B)
+{
+  return (__m128d)__builtin_ia32_cmpneqsd ((__v2df)__A, (__v2df)__B);
+}
+
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpnlt_sd (__m128d __A, __m128d __B)
+{
+  return (__m128d)__builtin_ia32_cmpnltsd ((__v2df)__A, (__v2df)__B);
+}
+
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpnle_sd (__m128d __A, __m128d __B)
+{
+  return (__m128d)__builtin_ia32_cmpnlesd ((__v2df)__A, (__v2df)__B);
+}
+
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpngt_sd (__m128d __A, __m128d __B)
+{
+  return (__m128d) __builtin_ia32_movsd ((__v2df) __A,
+					 (__v2df)
+					 __builtin_ia32_cmpnltsd ((__v2df) __B,
+								  (__v2df)
+								  __A));
+}
+
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpnge_sd (__m128d __A, __m128d __B)
+{
+  return (__m128d) __builtin_ia32_movsd ((__v2df) __A,
+					 (__v2df)
+					 __builtin_ia32_cmpnlesd ((__v2df) __B,
+								  (__v2df)
+								  __A));
+}
+
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpord_sd (__m128d __A, __m128d __B)
+{
+  return (__m128d)__builtin_ia32_cmpordsd ((__v2df)__A, (__v2df)__B);
+}
+
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpunord_sd (__m128d __A, __m128d __B)
+{
+  return (__m128d)__builtin_ia32_cmpunordsd ((__v2df)__A, (__v2df)__B);
+}
+
+extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_comieq_sd (__m128d __A, __m128d __B)
+{
+  return __builtin_ia32_comisdeq ((__v2df)__A, (__v2df)__B);
+}
+
+extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_comilt_sd (__m128d __A, __m128d __B)
+{
+  return __builtin_ia32_comisdlt ((__v2df)__A, (__v2df)__B);
+}
+
+extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_comile_sd (__m128d __A, __m128d __B)
+{
+  return __builtin_ia32_comisdle ((__v2df)__A, (__v2df)__B);
+}
+
+extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_comigt_sd (__m128d __A, __m128d __B)
+{
+  return __builtin_ia32_comisdgt ((__v2df)__A, (__v2df)__B);
+}
+
+extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_comige_sd (__m128d __A, __m128d __B)
+{
+  return __builtin_ia32_comisdge ((__v2df)__A, (__v2df)__B);
+}
+
+extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_comineq_sd (__m128d __A, __m128d __B)
+{
+  return __builtin_ia32_comisdneq ((__v2df)__A, (__v2df)__B);
+}
+
+extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_ucomieq_sd (__m128d __A, __m128d __B)
+{
+  return __builtin_ia32_ucomisdeq ((__v2df)__A, (__v2df)__B);
+}
+
+extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_ucomilt_sd (__m128d __A, __m128d __B)
+{
+  return __builtin_ia32_ucomisdlt ((__v2df)__A, (__v2df)__B);
+}
+
+extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_ucomile_sd (__m128d __A, __m128d __B)
+{
+  return __builtin_ia32_ucomisdle ((__v2df)__A, (__v2df)__B);
+}
+
+extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_ucomigt_sd (__m128d __A, __m128d __B)
+{
+  return __builtin_ia32_ucomisdgt ((__v2df)__A, (__v2df)__B);
+}
+
+extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_ucomige_sd (__m128d __A, __m128d __B)
+{
+  return __builtin_ia32_ucomisdge ((__v2df)__A, (__v2df)__B);
+}
+
+extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_ucomineq_sd (__m128d __A, __m128d __B)
+{
+  return __builtin_ia32_ucomisdneq ((__v2df)__A, (__v2df)__B);
+}
+
+/* Create a vector of Qi, where i is the element number.  */
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_set_epi64x (long long __q1, long long __q0)
+{
+  return __extension__ (__m128i)(__v2di){ __q0, __q1 };
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_set_epi64 (__m64 __q1,  __m64 __q0)
+{
+  return _mm_set_epi64x ((long long)__q1, (long long)__q0);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_set_epi32 (int __q3, int __q2, int __q1, int __q0)
+{
+  return __extension__ (__m128i)(__v4si){ __q0, __q1, __q2, __q3 };
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_set_epi16 (short __q7, short __q6, short __q5, short __q4,
+	       short __q3, short __q2, short __q1, short __q0)
+{
+  return __extension__ (__m128i)(__v8hi){
+    __q0, __q1, __q2, __q3, __q4, __q5, __q6, __q7 };
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_set_epi8 (char __q15, char __q14, char __q13, char __q12,
+	      char __q11, char __q10, char __q09, char __q08,
+	      char __q07, char __q06, char __q05, char __q04,
+	      char __q03, char __q02, char __q01, char __q00)
+{
+  return __extension__ (__m128i)(__v16qi){
+    __q00, __q01, __q02, __q03, __q04, __q05, __q06, __q07,
+    __q08, __q09, __q10, __q11, __q12, __q13, __q14, __q15
+  };
+}
+
+/* Set all of the elements of the vector to A.  */
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_set1_epi64x (long long __A)
+{
+  return _mm_set_epi64x (__A, __A);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_set1_epi64 (__m64 __A)
+{
+  return _mm_set_epi64 (__A, __A);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_set1_epi32 (int __A)
+{
+  return _mm_set_epi32 (__A, __A, __A, __A);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_set1_epi16 (short __A)
+{
+  return _mm_set_epi16 (__A, __A, __A, __A, __A, __A, __A, __A);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_set1_epi8 (char __A)
+{
+  return _mm_set_epi8 (__A, __A, __A, __A, __A, __A, __A, __A,
+		       __A, __A, __A, __A, __A, __A, __A, __A);
+}
+
+/* Create a vector of Qi, where i is the element number.
+   The parameter order is reversed from the _mm_set_epi* functions.  */
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_setr_epi64 (__m64 __q0, __m64 __q1)
+{
+  return _mm_set_epi64 (__q1, __q0);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_setr_epi32 (int __q0, int __q1, int __q2, int __q3)
+{
+  return _mm_set_epi32 (__q3, __q2, __q1, __q0);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_setr_epi16 (short __q0, short __q1, short __q2, short __q3,
+	        short __q4, short __q5, short __q6, short __q7)
+{
+  return _mm_set_epi16 (__q7, __q6, __q5, __q4, __q3, __q2, __q1, __q0);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_setr_epi8 (char __q00, char __q01, char __q02, char __q03,
+	       char __q04, char __q05, char __q06, char __q07,
+	       char __q08, char __q09, char __q10, char __q11,
+	       char __q12, char __q13, char __q14, char __q15)
+{
+  return _mm_set_epi8 (__q15, __q14, __q13, __q12, __q11, __q10, __q09, __q08,
+		       __q07, __q06, __q05, __q04, __q03, __q02, __q01, __q00);
+}
+
+/* Create a vector with element 0 as *P and the rest zero.  */
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_load_si128 (__m128i const *__P)
+{
+  return *__P;
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_loadu_si128 (__m128i const *__P)
+{
+  return (__m128i) __builtin_ia32_loaddqu ((char const *)__P);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_loadl_epi64 (__m128i const *__P)
+{
+  return _mm_set_epi64 ((__m64)0LL, *(__m64 *)__P);
+}
+
+extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_store_si128 (__m128i *__P, __m128i __B)
+{
+  *__P = __B;
+}
+
+extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_storeu_si128 (__m128i *__P, __m128i __B)
+{
+  __builtin_ia32_storedqu ((char *)__P, (__v16qi)__B);
+}
+
+extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_storel_epi64 (__m128i *__P, __m128i __B)
+{
+  *(long long *)__P = ((__v2di)__B)[0];
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_movepi64_pi64 (__m128i __B)
+{
+  return (__m64) ((__v2di)__B)[0];
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_movpi64_epi64 (__m64 __A)
+{
+  return _mm_set_epi64 ((__m64)0LL, __A);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_move_epi64 (__m128i __A)
+{
+  return (__m128i)__builtin_ia32_movq128 ((__v2di) __A);
+}
+
+/* Create an undefined vector.  */
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_undefined_si128 (void)
+{
+  __m128i __Y = __Y;
+  return __Y;
+}
+
+/* Create a vector of zeros.  */
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_setzero_si128 (void)
+{
+  return __extension__ (__m128i)(__v4si){ 0, 0, 0, 0 };
+}
+
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtepi32_pd (__m128i __A)
+{
+  return (__m128d)__builtin_ia32_cvtdq2pd ((__v4si) __A);
+}
+
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtepi32_ps (__m128i __A)
+{
+  return (__m128)__builtin_ia32_cvtdq2ps ((__v4si) __A);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtpd_epi32 (__m128d __A)
+{
+  return (__m128i)__builtin_ia32_cvtpd2dq ((__v2df) __A);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtpd_pi32 (__m128d __A)
+{
+  return (__m64)__builtin_ia32_cvtpd2pi ((__v2df) __A);
+}
+
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtpd_ps (__m128d __A)
+{
+  return (__m128)__builtin_ia32_cvtpd2ps ((__v2df) __A);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvttpd_epi32 (__m128d __A)
+{
+  return (__m128i)__builtin_ia32_cvttpd2dq ((__v2df) __A);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvttpd_pi32 (__m128d __A)
+{
+  return (__m64)__builtin_ia32_cvttpd2pi ((__v2df) __A);
+}
+
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtpi32_pd (__m64 __A)
+{
+  return (__m128d)__builtin_ia32_cvtpi2pd ((__v2si) __A);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtps_epi32 (__m128 __A)
+{
+  return (__m128i)__builtin_ia32_cvtps2dq ((__v4sf) __A);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvttps_epi32 (__m128 __A)
+{
+  return (__m128i)__builtin_ia32_cvttps2dq ((__v4sf) __A);
+}
+
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtps_pd (__m128 __A)
+{
+  return (__m128d)__builtin_ia32_cvtps2pd ((__v4sf) __A);
+}
+
+extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtsd_si32 (__m128d __A)
+{
+  return __builtin_ia32_cvtsd2si ((__v2df) __A);
+}
+
+#ifdef __x86_64__
+/* Intel intrinsic.  */
+extern __inline long long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtsd_si64 (__m128d __A)
+{
+  return __builtin_ia32_cvtsd2si64 ((__v2df) __A);
+}
+
+/* Microsoft intrinsic.  */
+extern __inline long long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtsd_si64x (__m128d __A)
+{
+  return __builtin_ia32_cvtsd2si64 ((__v2df) __A);
+}
+#endif
+
+extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvttsd_si32 (__m128d __A)
+{
+  return __builtin_ia32_cvttsd2si ((__v2df) __A);
+}
+
+#ifdef __x86_64__
+/* Intel intrinsic.  */
+extern __inline long long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvttsd_si64 (__m128d __A)
+{
+  return __builtin_ia32_cvttsd2si64 ((__v2df) __A);
+}
+
+/* Microsoft intrinsic.  */
+extern __inline long long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvttsd_si64x (__m128d __A)
+{
+  return __builtin_ia32_cvttsd2si64 ((__v2df) __A);
+}
+#endif
+
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtsd_ss (__m128 __A, __m128d __B)
+{
+  return (__m128)__builtin_ia32_cvtsd2ss ((__v4sf) __A, (__v2df) __B);
+}
+
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtsi32_sd (__m128d __A, int __B)
+{
+  return (__m128d)__builtin_ia32_cvtsi2sd ((__v2df) __A, __B);
+}
+
+#ifdef __x86_64__
+/* Intel intrinsic.  */
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtsi64_sd (__m128d __A, long long __B)
+{
+  return (__m128d)__builtin_ia32_cvtsi642sd ((__v2df) __A, __B);
+}
+
+/* Microsoft intrinsic.  */
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtsi64x_sd (__m128d __A, long long __B)
+{
+  return (__m128d)__builtin_ia32_cvtsi642sd ((__v2df) __A, __B);
+}
+#endif
+
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtss_sd (__m128d __A, __m128 __B)
+{
+  return (__m128d)__builtin_ia32_cvtss2sd ((__v2df) __A, (__v4sf)__B);
+}
+
+#ifdef __OPTIMIZE__
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_shuffle_pd(__m128d __A, __m128d __B, const int __mask)
+{
+  return (__m128d)__builtin_ia32_shufpd ((__v2df)__A, (__v2df)__B, __mask);
+}
+#else
+#define _mm_shuffle_pd(A, B, N)						\
+  ((__m128d)__builtin_ia32_shufpd ((__v2df)(__m128d)(A),		\
+				   (__v2df)(__m128d)(B), (int)(N)))
+#endif
+
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_unpackhi_pd (__m128d __A, __m128d __B)
+{
+  return (__m128d)__builtin_ia32_unpckhpd ((__v2df)__A, (__v2df)__B);
+}
+
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_unpacklo_pd (__m128d __A, __m128d __B)
+{
+  return (__m128d)__builtin_ia32_unpcklpd ((__v2df)__A, (__v2df)__B);
+}
+
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_loadh_pd (__m128d __A, double const *__B)
+{
+  return (__m128d)__builtin_ia32_loadhpd ((__v2df)__A, __B);
+}
+
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_loadl_pd (__m128d __A, double const *__B)
+{
+  return (__m128d)__builtin_ia32_loadlpd ((__v2df)__A, __B);
+}
+
+extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_movemask_pd (__m128d __A)
+{
+  return __builtin_ia32_movmskpd ((__v2df)__A);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_packs_epi16 (__m128i __A, __m128i __B)
+{
+  return (__m128i)__builtin_ia32_packsswb128 ((__v8hi)__A, (__v8hi)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_packs_epi32 (__m128i __A, __m128i __B)
+{
+  return (__m128i)__builtin_ia32_packssdw128 ((__v4si)__A, (__v4si)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_packus_epi16 (__m128i __A, __m128i __B)
+{
+  return (__m128i)__builtin_ia32_packuswb128 ((__v8hi)__A, (__v8hi)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_unpackhi_epi8 (__m128i __A, __m128i __B)
+{
+  return (__m128i)__builtin_ia32_punpckhbw128 ((__v16qi)__A, (__v16qi)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_unpackhi_epi16 (__m128i __A, __m128i __B)
+{
+  return (__m128i)__builtin_ia32_punpckhwd128 ((__v8hi)__A, (__v8hi)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_unpackhi_epi32 (__m128i __A, __m128i __B)
+{
+  return (__m128i)__builtin_ia32_punpckhdq128 ((__v4si)__A, (__v4si)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_unpackhi_epi64 (__m128i __A, __m128i __B)
+{
+  return (__m128i)__builtin_ia32_punpckhqdq128 ((__v2di)__A, (__v2di)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_unpacklo_epi8 (__m128i __A, __m128i __B)
+{
+  return (__m128i)__builtin_ia32_punpcklbw128 ((__v16qi)__A, (__v16qi)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_unpacklo_epi16 (__m128i __A, __m128i __B)
+{
+  return (__m128i)__builtin_ia32_punpcklwd128 ((__v8hi)__A, (__v8hi)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_unpacklo_epi32 (__m128i __A, __m128i __B)
+{
+  return (__m128i)__builtin_ia32_punpckldq128 ((__v4si)__A, (__v4si)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_unpacklo_epi64 (__m128i __A, __m128i __B)
+{
+  return (__m128i)__builtin_ia32_punpcklqdq128 ((__v2di)__A, (__v2di)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_add_epi8 (__m128i __A, __m128i __B)
+{
+  return (__m128i) ((__v16qu)__A + (__v16qu)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_add_epi16 (__m128i __A, __m128i __B)
+{
+  return (__m128i) ((__v8hu)__A + (__v8hu)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_add_epi32 (__m128i __A, __m128i __B)
+{
+  return (__m128i) ((__v4su)__A + (__v4su)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_add_epi64 (__m128i __A, __m128i __B)
+{
+  return (__m128i) ((__v2du)__A + (__v2du)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_adds_epi8 (__m128i __A, __m128i __B)
+{
+  return (__m128i)__builtin_ia32_paddsb128 ((__v16qi)__A, (__v16qi)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_adds_epi16 (__m128i __A, __m128i __B)
+{
+  return (__m128i)__builtin_ia32_paddsw128 ((__v8hi)__A, (__v8hi)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_adds_epu8 (__m128i __A, __m128i __B)
+{
+  return (__m128i)__builtin_ia32_paddusb128 ((__v16qi)__A, (__v16qi)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_adds_epu16 (__m128i __A, __m128i __B)
+{
+  return (__m128i)__builtin_ia32_paddusw128 ((__v8hi)__A, (__v8hi)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_sub_epi8 (__m128i __A, __m128i __B)
+{
+  return (__m128i) ((__v16qu)__A - (__v16qu)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_sub_epi16 (__m128i __A, __m128i __B)
+{
+  return (__m128i) ((__v8hu)__A - (__v8hu)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_sub_epi32 (__m128i __A, __m128i __B)
+{
+  return (__m128i) ((__v4su)__A - (__v4su)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_sub_epi64 (__m128i __A, __m128i __B)
+{
+  return (__m128i) ((__v2du)__A - (__v2du)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_subs_epi8 (__m128i __A, __m128i __B)
+{
+  return (__m128i)__builtin_ia32_psubsb128 ((__v16qi)__A, (__v16qi)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_subs_epi16 (__m128i __A, __m128i __B)
+{
+  return (__m128i)__builtin_ia32_psubsw128 ((__v8hi)__A, (__v8hi)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_subs_epu8 (__m128i __A, __m128i __B)
+{
+  return (__m128i)__builtin_ia32_psubusb128 ((__v16qi)__A, (__v16qi)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_subs_epu16 (__m128i __A, __m128i __B)
+{
+  return (__m128i)__builtin_ia32_psubusw128 ((__v8hi)__A, (__v8hi)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_madd_epi16 (__m128i __A, __m128i __B)
+{
+  return (__m128i)__builtin_ia32_pmaddwd128 ((__v8hi)__A, (__v8hi)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mulhi_epi16 (__m128i __A, __m128i __B)
+{
+  return (__m128i)__builtin_ia32_pmulhw128 ((__v8hi)__A, (__v8hi)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mullo_epi16 (__m128i __A, __m128i __B)
+{
+  return (__m128i) ((__v8hu)__A * (__v8hu)__B);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mul_su32 (__m64 __A, __m64 __B)
+{
+  return (__m64)__builtin_ia32_pmuludq ((__v2si)__A, (__v2si)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mul_epu32 (__m128i __A, __m128i __B)
+{
+  return (__m128i)__builtin_ia32_pmuludq128 ((__v4si)__A, (__v4si)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_slli_epi16 (__m128i __A, int __B)
+{
+  return (__m128i)__builtin_ia32_psllwi128 ((__v8hi)__A, __B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_slli_epi32 (__m128i __A, int __B)
+{
+  return (__m128i)__builtin_ia32_pslldi128 ((__v4si)__A, __B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_slli_epi64 (__m128i __A, int __B)
+{
+  return (__m128i)__builtin_ia32_psllqi128 ((__v2di)__A, __B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_srai_epi16 (__m128i __A, int __B)
+{
+  return (__m128i)__builtin_ia32_psrawi128 ((__v8hi)__A, __B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_srai_epi32 (__m128i __A, int __B)
+{
+  return (__m128i)__builtin_ia32_psradi128 ((__v4si)__A, __B);
+}
+
+#ifdef __OPTIMIZE__
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_bsrli_si128 (__m128i __A, const int __N)
+{
+  return (__m128i)__builtin_ia32_psrldqi128 (__A, __N * 8);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_bslli_si128 (__m128i __A, const int __N)
+{
+  return (__m128i)__builtin_ia32_pslldqi128 (__A, __N * 8);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_srli_si128 (__m128i __A, const int __N)
+{
+  return (__m128i)__builtin_ia32_psrldqi128 (__A, __N * 8);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_slli_si128 (__m128i __A, const int __N)
+{
+  return (__m128i)__builtin_ia32_pslldqi128 (__A, __N * 8);
+}
+#else
+#define _mm_bsrli_si128(A, N) \
+  ((__m128i)__builtin_ia32_psrldqi128 ((__m128i)(A), (int)(N) * 8))
+#define _mm_bslli_si128(A, N) \
+  ((__m128i)__builtin_ia32_pslldqi128 ((__m128i)(A), (int)(N) * 8))
+#define _mm_srli_si128(A, N) \
+  ((__m128i)__builtin_ia32_psrldqi128 ((__m128i)(A), (int)(N) * 8))
+#define _mm_slli_si128(A, N) \
+  ((__m128i)__builtin_ia32_pslldqi128 ((__m128i)(A), (int)(N) * 8))
+#endif
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_srli_epi16 (__m128i __A, int __B)
+{
+  return (__m128i)__builtin_ia32_psrlwi128 ((__v8hi)__A, __B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_srli_epi32 (__m128i __A, int __B)
+{
+  return (__m128i)__builtin_ia32_psrldi128 ((__v4si)__A, __B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_srli_epi64 (__m128i __A, int __B)
+{
+  return (__m128i)__builtin_ia32_psrlqi128 ((__v2di)__A, __B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_sll_epi16 (__m128i __A, __m128i __B)
+{
+  return (__m128i)__builtin_ia32_psllw128((__v8hi)__A, (__v8hi)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_sll_epi32 (__m128i __A, __m128i __B)
+{
+  return (__m128i)__builtin_ia32_pslld128((__v4si)__A, (__v4si)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_sll_epi64 (__m128i __A, __m128i __B)
+{
+  return (__m128i)__builtin_ia32_psllq128((__v2di)__A, (__v2di)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_sra_epi16 (__m128i __A, __m128i __B)
+{
+  return (__m128i)__builtin_ia32_psraw128 ((__v8hi)__A, (__v8hi)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_sra_epi32 (__m128i __A, __m128i __B)
+{
+  return (__m128i)__builtin_ia32_psrad128 ((__v4si)__A, (__v4si)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_srl_epi16 (__m128i __A, __m128i __B)
+{
+  return (__m128i)__builtin_ia32_psrlw128 ((__v8hi)__A, (__v8hi)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_srl_epi32 (__m128i __A, __m128i __B)
+{
+  return (__m128i)__builtin_ia32_psrld128 ((__v4si)__A, (__v4si)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_srl_epi64 (__m128i __A, __m128i __B)
+{
+  return (__m128i)__builtin_ia32_psrlq128 ((__v2di)__A, (__v2di)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_and_si128 (__m128i __A, __m128i __B)
+{
+  return (__m128i) ((__v2du)__A & (__v2du)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_andnot_si128 (__m128i __A, __m128i __B)
+{
+  return (__m128i)__builtin_ia32_pandn128 ((__v2di)__A, (__v2di)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_or_si128 (__m128i __A, __m128i __B)
+{
+  return (__m128i) ((__v2du)__A | (__v2du)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_xor_si128 (__m128i __A, __m128i __B)
+{
+  return (__m128i) ((__v2du)__A ^ (__v2du)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpeq_epi8 (__m128i __A, __m128i __B)
+{
+  return (__m128i) ((__v16qi)__A == (__v16qi)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpeq_epi16 (__m128i __A, __m128i __B)
+{
+  return (__m128i) ((__v8hi)__A == (__v8hi)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpeq_epi32 (__m128i __A, __m128i __B)
+{
+  return (__m128i) ((__v4si)__A == (__v4si)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmplt_epi8 (__m128i __A, __m128i __B)
+{
+  return (__m128i) ((__v16qi)__A < (__v16qi)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmplt_epi16 (__m128i __A, __m128i __B)
+{
+  return (__m128i) ((__v8hi)__A < (__v8hi)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmplt_epi32 (__m128i __A, __m128i __B)
+{
+  return (__m128i) ((__v4si)__A < (__v4si)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpgt_epi8 (__m128i __A, __m128i __B)
+{
+  return (__m128i) ((__v16qi)__A > (__v16qi)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpgt_epi16 (__m128i __A, __m128i __B)
+{
+  return (__m128i) ((__v8hi)__A > (__v8hi)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpgt_epi32 (__m128i __A, __m128i __B)
+{
+  return (__m128i) ((__v4si)__A > (__v4si)__B);
+}
+
+#ifdef __OPTIMIZE__
+extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_extract_epi16 (__m128i const __A, int const __N)
+{
+  return (unsigned short) __builtin_ia32_vec_ext_v8hi ((__v8hi)__A, __N);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_insert_epi16 (__m128i const __A, int const __D, int const __N)
+{
+  return (__m128i) __builtin_ia32_vec_set_v8hi ((__v8hi)__A, __D, __N);
+}
+#else
+#define _mm_extract_epi16(A, N) \
+  ((int) (unsigned short) __builtin_ia32_vec_ext_v8hi ((__v8hi)(__m128i)(A), (int)(N)))
+#define _mm_insert_epi16(A, D, N)				\
+  ((__m128i) __builtin_ia32_vec_set_v8hi ((__v8hi)(__m128i)(A),	\
+					  (int)(D), (int)(N)))
+#endif
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_max_epi16 (__m128i __A, __m128i __B)
+{
+  return (__m128i)__builtin_ia32_pmaxsw128 ((__v8hi)__A, (__v8hi)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_max_epu8 (__m128i __A, __m128i __B)
+{
+  return (__m128i)__builtin_ia32_pmaxub128 ((__v16qi)__A, (__v16qi)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_min_epi16 (__m128i __A, __m128i __B)
+{
+  return (__m128i)__builtin_ia32_pminsw128 ((__v8hi)__A, (__v8hi)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_min_epu8 (__m128i __A, __m128i __B)
+{
+  return (__m128i)__builtin_ia32_pminub128 ((__v16qi)__A, (__v16qi)__B);
+}
+
+extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_movemask_epi8 (__m128i __A)
+{
+  return __builtin_ia32_pmovmskb128 ((__v16qi)__A);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mulhi_epu16 (__m128i __A, __m128i __B)
+{
+  return (__m128i)__builtin_ia32_pmulhuw128 ((__v8hi)__A, (__v8hi)__B);
+}
+
+#ifdef __OPTIMIZE__
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_shufflehi_epi16 (__m128i __A, const int __mask)
+{
+  return (__m128i)__builtin_ia32_pshufhw ((__v8hi)__A, __mask);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_shufflelo_epi16 (__m128i __A, const int __mask)
+{
+  return (__m128i)__builtin_ia32_pshuflw ((__v8hi)__A, __mask);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_shuffle_epi32 (__m128i __A, const int __mask)
+{
+  return (__m128i)__builtin_ia32_pshufd ((__v4si)__A, __mask);
+}
+#else
+#define _mm_shufflehi_epi16(A, N) \
+  ((__m128i)__builtin_ia32_pshufhw ((__v8hi)(__m128i)(A), (int)(N)))
+#define _mm_shufflelo_epi16(A, N) \
+  ((__m128i)__builtin_ia32_pshuflw ((__v8hi)(__m128i)(A), (int)(N)))
+#define _mm_shuffle_epi32(A, N) \
+  ((__m128i)__builtin_ia32_pshufd ((__v4si)(__m128i)(A), (int)(N)))
+#endif
+
+extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskmoveu_si128 (__m128i __A, __m128i __B, char *__C)
+{
+  __builtin_ia32_maskmovdqu ((__v16qi)__A, (__v16qi)__B, __C);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_avg_epu8 (__m128i __A, __m128i __B)
+{
+  return (__m128i)__builtin_ia32_pavgb128 ((__v16qi)__A, (__v16qi)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_avg_epu16 (__m128i __A, __m128i __B)
+{
+  return (__m128i)__builtin_ia32_pavgw128 ((__v8hi)__A, (__v8hi)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_sad_epu8 (__m128i __A, __m128i __B)
+{
+  return (__m128i)__builtin_ia32_psadbw128 ((__v16qi)__A, (__v16qi)__B);
+}
+
+extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_stream_si32 (int *__A, int __B)
+{
+  __builtin_ia32_movnti (__A, __B);
+}
+
+#ifdef __x86_64__
+extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_stream_si64 (long long int *__A, long long int __B)
+{
+  __builtin_ia32_movnti64 (__A, __B);
+}
+#endif
+
+extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_stream_si128 (__m128i *__A, __m128i __B)
+{
+  __builtin_ia32_movntdq ((__v2di *)__A, (__v2di)__B);
+}
+
+extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_stream_pd (double *__A, __m128d __B)
+{
+  __builtin_ia32_movntpd (__A, (__v2df)__B);
+}
+
+extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_clflush (void const *__A)
+{
+  __builtin_ia32_clflush (__A);
+}
+
+extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_lfence (void)
+{
+  __builtin_ia32_lfence ();
+}
+
+extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mfence (void)
+{
+  __builtin_ia32_mfence ();
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtsi32_si128 (int __A)
+{
+  return _mm_set_epi32 (0, 0, 0, __A);
+}
+
+#ifdef __x86_64__
+/* Intel intrinsic.  */
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtsi64_si128 (long long __A)
+{
+  return _mm_set_epi64x (0, __A);
+}
+
+/* Microsoft intrinsic.  */
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtsi64x_si128 (long long __A)
+{
+  return _mm_set_epi64x (0, __A);
+}
+#endif
+
+/* Casts between various SP, DP, INT vector types.  Note that these do no
+   conversion of values, they just change the type.  */
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_castpd_ps(__m128d __A)
+{
+  return (__m128) __A;
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_castpd_si128(__m128d __A)
+{
+  return (__m128i) __A;
+}
+
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_castps_pd(__m128 __A)
+{
+  return (__m128d) __A;
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_castps_si128(__m128 __A)
+{
+  return (__m128i) __A;
+}
+
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_castsi128_ps(__m128i __A)
+{
+  return (__m128) __A;
+}
+
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_castsi128_pd(__m128i __A)
+{
+  return (__m128d) __A;
+}
+
+#ifdef __DISABLE_SSE2__
+#undef __DISABLE_SSE2__
+#pragma GCC pop_options
+#endif /* __DISABLE_SSE2__ */
+
+#endif /* _EMMINTRIN_H_INCLUDED */
Index: Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/f16cintrin.h
===================================================================
--- Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/f16cintrin.h	(revision 1046)
+++ Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/f16cintrin.h	(revision 1046)
@@ -0,0 +1,98 @@
+/* Copyright (C) 2011-2015 Free Software Foundation, Inc.
+
+   This file is part of GCC.
+
+   GCC is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
+
+   GCC is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   Under Section 7 of GPL version 3, you are granted additional
+   permissions described in the GCC Runtime Library Exception, version
+   3.1, as published by the Free Software Foundation.
+
+   You should have received a copy of the GNU General Public License and
+   a copy of the GCC Runtime Library Exception along with this program;
+   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#if !defined _X86INTRIN_H_INCLUDED && !defined _IMMINTRIN_H_INCLUDED
+# error "Never use <f16intrin.h> directly; include <x86intrin.h> or <immintrin.h> instead."
+#endif
+
+#ifndef _F16CINTRIN_H_INCLUDED
+#define _F16CINTRIN_H_INCLUDED
+
+#ifndef __F16C__
+#pragma GCC push_options
+#pragma GCC target("f16c")
+#define __DISABLE_F16C__
+#endif /* __F16C__ */
+
+extern __inline float __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_cvtsh_ss (unsigned short __S)
+{
+  __v8hi __H = __extension__ (__v8hi){ (short) __S, 0, 0, 0, 0, 0, 0, 0 };
+  __v4sf __A = __builtin_ia32_vcvtph2ps (__H);
+  return __builtin_ia32_vec_ext_v4sf (__A, 0);
+}
+
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtph_ps (__m128i __A)
+{
+  return (__m128) __builtin_ia32_vcvtph2ps ((__v8hi) __A);
+}
+
+extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cvtph_ps (__m128i __A)
+{
+  return (__m256) __builtin_ia32_vcvtph2ps256 ((__v8hi) __A);
+}
+
+#ifdef __OPTIMIZE__
+extern __inline unsigned short __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_cvtss_sh (float __F, const int __I)
+{
+  __v4sf __A =  __extension__ (__v4sf){ __F, 0, 0, 0 };
+  __v8hi __H = __builtin_ia32_vcvtps2ph (__A, __I);
+  return (unsigned short) __builtin_ia32_vec_ext_v8hi (__H, 0);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtps_ph (__m128 __A, const int __I)
+{
+  return (__m128i) __builtin_ia32_vcvtps2ph ((__v4sf) __A, __I);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_cvtps_ph (__m256 __A, const int __I)
+{
+  return (__m128i) __builtin_ia32_vcvtps2ph256 ((__v8sf) __A, __I);
+}
+#else
+#define _cvtss_sh(__F, __I)						\
+  (__extension__ 							\
+   ({									\
+      __v4sf __A =  __extension__ (__v4sf){ __F, 0, 0, 0 };		\
+      __v8hi __H = __builtin_ia32_vcvtps2ph (__A, __I);			\
+      (unsigned short) __builtin_ia32_vec_ext_v8hi (__H, 0);		\
+    }))
+
+#define _mm_cvtps_ph(A, I) \
+  ((__m128i) __builtin_ia32_vcvtps2ph ((__v4sf)(__m128) A, (int) (I)))
+
+#define _mm256_cvtps_ph(A, I) \
+  ((__m128i) __builtin_ia32_vcvtps2ph256 ((__v8sf)(__m256) A, (int) (I)))
+#endif /* __OPTIMIZE */
+
+#ifdef __DISABLE_F16C__
+#undef __DISABLE_F16C__
+#pragma GCC pop_options
+#endif /* __DISABLE_F16C__ */
+
+#endif /* _F16CINTRIN_H_INCLUDED */
Index: Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/float.h
===================================================================
--- Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/float.h	(revision 1046)
+++ Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/float.h	(revision 1046)
@@ -0,0 +1,275 @@
+/* Copyright (C) 2002-2015 Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 3, or (at your option)
+any later version.
+
+GCC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+Under Section 7 of GPL version 3, you are granted additional
+permissions described in the GCC Runtime Library Exception, version
+3.1, as published by the Free Software Foundation.
+
+You should have received a copy of the GNU General Public License and
+a copy of the GCC Runtime Library Exception along with this program;
+see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+<http://www.gnu.org/licenses/>.  */
+
+/*
+ * ISO C Standard:  5.2.4.2.2  Characteristics of floating types <float.h>
+ */
+
+#ifndef _FLOAT_H___
+#define _FLOAT_H___
+
+/* Radix of exponent representation, b. */
+#undef FLT_RADIX
+#define FLT_RADIX	__FLT_RADIX__
+
+/* Number of base-FLT_RADIX digits in the significand, p.  */
+#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__
+
+/* Number of decimal digits, q, such that any floating-point number with q
+   decimal digits can be rounded into a floating-point number with p radix b
+   digits and back again without change to the q decimal digits,
+
+	p * log10(b)			if b is a power of 10
+	floor((p - 1) * log10(b))	otherwise
+*/
+#undef FLT_DIG
+#undef DBL_DIG
+#undef LDBL_DIG
+#define FLT_DIG		__FLT_DIG__
+#define DBL_DIG		__DBL_DIG__
+#define LDBL_DIG	__LDBL_DIG__
+
+/* Minimum int x such that FLT_RADIX**(x-1) is a normalized float, emin */
+#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__
+
+/* Minimum negative integer such that 10 raised to that power is in the
+   range of normalized floating-point numbers,
+
+	ceil(log10(b) * (emin - 1))
+*/
+#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__
+
+/* Maximum int x such that FLT_RADIX**(x-1) is a representable float, emax.  */
+#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__
+
+/* Maximum integer such that 10 raised to that power is in the range of
+   representable finite floating-point numbers,
+
+	floor(log10((1 - b**-p) * b**emax))
+*/
+#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__
+
+/* Maximum representable finite floating-point number,
+
+	(1 - b**-p) * b**emax
+*/
+#undef FLT_MAX
+#undef DBL_MAX
+#undef LDBL_MAX
+#define FLT_MAX		__FLT_MAX__
+#define DBL_MAX		__DBL_MAX__
+#define LDBL_MAX	__LDBL_MAX__
+
+/* The difference between 1 and the least value greater than 1 that is
+   representable in the given floating point type, b**1-p.  */
+#undef FLT_EPSILON
+#undef DBL_EPSILON
+#undef LDBL_EPSILON
+#define FLT_EPSILON	__FLT_EPSILON__
+#define DBL_EPSILON	__DBL_EPSILON__
+#define LDBL_EPSILON	__LDBL_EPSILON__
+
+/* Minimum normalized positive floating-point number, b**(emin - 1).  */
+#undef FLT_MIN
+#undef DBL_MIN
+#undef LDBL_MIN
+#define FLT_MIN		__FLT_MIN__
+#define DBL_MIN		__DBL_MIN__
+#define LDBL_MIN	__LDBL_MIN__
+
+/* Addition rounds to 0: zero, 1: nearest, 2: +inf, 3: -inf, -1: unknown.  */
+/* ??? This is supposed to change with calls to fesetround in <fenv.h>.  */
+#undef FLT_ROUNDS
+#define FLT_ROUNDS 1
+
+#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+/* The floating-point expression evaluation method.
+        -1  indeterminate
+         0  evaluate all operations and constants just to the range and
+            precision of the type
+         1  evaluate operations and constants of type float and double
+            to the range and precision of the double type, evaluate
+            long double operations and constants to the range and
+            precision of the long double type
+         2  evaluate all operations and constants to the range and
+            precision of the long double type
+
+   ??? This ought to change with the setting of the fp control word;
+   the value provided by the compiler assumes the widest setting.  */
+#undef FLT_EVAL_METHOD
+#define FLT_EVAL_METHOD	__FLT_EVAL_METHOD__
+
+/* Number of decimal digits, n, such that any floating-point number in the
+   widest supported floating type with pmax radix b digits can be rounded
+   to a floating-point number with n decimal digits and back again without
+   change to the value,
+
+	pmax * log10(b)			if b is a power of 10
+	ceil(1 + pmax * log10(b))	otherwise
+*/
+#undef DECIMAL_DIG
+#define DECIMAL_DIG	__DECIMAL_DIG__
+
+#endif /* C99 */
+
+#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 201112L
+/* Versions of DECIMAL_DIG for each floating-point type.  */
+#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	__DECIMAL_DIG__
+
+/* Whether types support subnormal numbers.  */
+#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__
+
+/* Minimum positive values, including subnormals.  */
+#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__
+
+#endif /* C11 */
+
+#ifdef __STDC_WANT_DEC_FP__
+/* Draft Technical Report 24732, extension for decimal floating-point
+   arithmetic: Characteristic of decimal floating types <float.h>.  */
+
+/* Number of base-FLT_RADIX digits in the significand, p.  */
+#undef DEC32_MANT_DIG
+#undef DEC64_MANT_DIG
+#undef DEC128_MANT_DIG
+#define DEC32_MANT_DIG	__DEC32_MANT_DIG__
+#define DEC64_MANT_DIG	__DEC64_MANT_DIG__
+#define DEC128_MANT_DIG	__DEC128_MANT_DIG__
+
+/* Minimum exponent. */
+#undef DEC32_MIN_EXP
+#undef DEC64_MIN_EXP
+#undef DEC128_MIN_EXP
+#define DEC32_MIN_EXP	__DEC32_MIN_EXP__
+#define DEC64_MIN_EXP	__DEC64_MIN_EXP__
+#define DEC128_MIN_EXP	__DEC128_MIN_EXP__
+
+/* Maximum exponent. */
+#undef DEC32_MAX_EXP
+#undef DEC64_MAX_EXP
+#undef DEC128_MAX_EXP
+#define DEC32_MAX_EXP	__DEC32_MAX_EXP__
+#define DEC64_MAX_EXP	__DEC64_MAX_EXP__
+#define DEC128_MAX_EXP	__DEC128_MAX_EXP__
+
+/* Maximum representable finite decimal floating-point number
+   (there are 6, 15, and 33 9s after the decimal points respectively). */
+#undef DEC32_MAX
+#undef DEC64_MAX
+#undef DEC128_MAX
+#define DEC32_MAX   __DEC32_MAX__
+#define DEC64_MAX   __DEC64_MAX__
+#define DEC128_MAX  __DEC128_MAX__
+
+/* The difference between 1 and the least value greater than 1 that is
+   representable in the given floating point type. */
+#undef DEC32_EPSILON
+#undef DEC64_EPSILON
+#undef DEC128_EPSILON
+#define DEC32_EPSILON	__DEC32_EPSILON__
+#define DEC64_EPSILON	__DEC64_EPSILON__
+#define DEC128_EPSILON	__DEC128_EPSILON__
+
+/* Minimum normalized positive floating-point number. */
+#undef DEC32_MIN
+#undef DEC64_MIN
+#undef DEC128_MIN
+#define DEC32_MIN	__DEC32_MIN__
+#define DEC64_MIN	__DEC64_MIN__
+#define DEC128_MIN	__DEC128_MIN__
+
+/* Minimum subnormal positive floating-point number. */
+#undef DEC32_SUBNORMAL_MIN
+#undef DEC64_SUBNORMAL_MIN
+#undef DEC128_SUBNORMAL_MIN
+#define DEC32_SUBNORMAL_MIN       __DEC32_SUBNORMAL_MIN__
+#define DEC64_SUBNORMAL_MIN       __DEC64_SUBNORMAL_MIN__
+#define DEC128_SUBNORMAL_MIN      __DEC128_SUBNORMAL_MIN__
+
+/* The floating-point expression evaluation method.
+         -1  indeterminate
+         0  evaluate all operations and constants just to the range and
+            precision of the type
+         1  evaluate operations and constants of type _Decimal32 
+	    and _Decimal64 to the range and precision of the _Decimal64 
+            type, evaluate _Decimal128 operations and constants to the 
+	    range and precision of the _Decimal128 type;
+	 2  evaluate all operations and constants to the range and
+	    precision of the _Decimal128 type.  */
+
+#undef DEC_EVAL_METHOD
+#define DEC_EVAL_METHOD	__DEC_EVAL_METHOD__
+
+#endif /* __STDC_WANT_DEC_FP__ */
+
+#if defined (__MINGW32__) && ! defined (_MINGW_FLOAT_H_)
+/* MinGW.org's runtime libraries provide a supplementary float.h, which
+ * must also be included to complement this one.  Ideally that MinGW.org
+ * header should be included first, and it will include this one, but in
+ * a default configuration it doesn't normally happen this way; when we
+ * didn't see it first, include the MinGW.org header now!
+ */
+# include_next <float.h>
+#endif
+
+#endif /* _FLOAT_H___ */
Index: Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/fma4intrin.h
===================================================================
--- Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/fma4intrin.h	(revision 1046)
+++ Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/fma4intrin.h	(revision 1046)
@@ -0,0 +1,241 @@
+/* Copyright (C) 2007-2015 Free Software Foundation, Inc.
+
+   This file is part of GCC.
+
+   GCC is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
+
+   GCC is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   Under Section 7 of GPL version 3, you are granted additional
+   permissions described in the GCC Runtime Library Exception, version
+   3.1, as published by the Free Software Foundation.
+
+   You should have received a copy of the GNU General Public License and
+   a copy of the GCC Runtime Library Exception along with this program;
+   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _X86INTRIN_H_INCLUDED
+# error "Never use <fma4intrin.h> directly; include <x86intrin.h> instead."
+#endif
+
+#ifndef _FMA4INTRIN_H_INCLUDED
+#define _FMA4INTRIN_H_INCLUDED
+
+/* We need definitions from the SSE4A, SSE3, SSE2 and SSE header files.  */
+#include <ammintrin.h>
+
+#ifndef __FMA4__
+#pragma GCC push_options
+#pragma GCC target("fma4")
+#define __DISABLE_FMA4__
+#endif /* __FMA4__ */
+
+/* 128b Floating point multiply/add type instructions.  */
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_macc_ps (__m128 __A, __m128 __B, __m128 __C)
+{
+  return (__m128) __builtin_ia32_vfmaddps ((__v4sf)__A, (__v4sf)__B, (__v4sf)__C);
+}
+
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_macc_pd (__m128d __A, __m128d __B, __m128d __C)
+{
+  return (__m128d) __builtin_ia32_vfmaddpd ((__v2df)__A, (__v2df)__B, (__v2df)__C);
+}
+
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_macc_ss (__m128 __A, __m128 __B, __m128 __C)
+{
+  return (__m128) __builtin_ia32_vfmaddss ((__v4sf)__A, (__v4sf)__B, (__v4sf)__C);
+}
+
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_macc_sd (__m128d __A, __m128d __B, __m128d __C)
+{
+  return (__m128d) __builtin_ia32_vfmaddsd ((__v2df)__A, (__v2df)__B, (__v2df)__C);
+}
+
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_msub_ps (__m128 __A, __m128 __B, __m128 __C)
+
+{
+  return (__m128) __builtin_ia32_vfmaddps ((__v4sf)__A, (__v4sf)__B, -(__v4sf)__C);
+}
+
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_msub_pd (__m128d __A, __m128d __B, __m128d __C)
+{
+  return (__m128d) __builtin_ia32_vfmaddpd ((__v2df)__A, (__v2df)__B, -(__v2df)__C);
+}
+
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_msub_ss (__m128 __A, __m128 __B, __m128 __C)
+{
+  return (__m128) __builtin_ia32_vfmaddss ((__v4sf)__A, (__v4sf)__B, -(__v4sf)__C);
+}
+
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_msub_sd (__m128d __A, __m128d __B, __m128d __C)
+{
+  return (__m128d) __builtin_ia32_vfmaddsd ((__v2df)__A, (__v2df)__B, -(__v2df)__C);
+}
+
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_nmacc_ps (__m128 __A, __m128 __B, __m128 __C)
+{
+  return (__m128) __builtin_ia32_vfmaddps (-(__v4sf)__A, (__v4sf)__B, (__v4sf)__C);
+}
+
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_nmacc_pd (__m128d __A, __m128d __B, __m128d __C)
+{
+  return (__m128d) __builtin_ia32_vfmaddpd (-(__v2df)__A, (__v2df)__B, (__v2df)__C);
+}
+
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_nmacc_ss (__m128 __A, __m128 __B, __m128 __C)
+{
+  return (__m128) __builtin_ia32_vfmaddss (-(__v4sf)__A, (__v4sf)__B, (__v4sf)__C);
+}
+
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_nmacc_sd (__m128d __A, __m128d __B, __m128d __C)
+{
+  return (__m128d) __builtin_ia32_vfmaddsd (-(__v2df)__A, (__v2df)__B, (__v2df)__C);
+}
+
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_nmsub_ps (__m128 __A, __m128 __B, __m128 __C)
+{
+  return (__m128) __builtin_ia32_vfmaddps (-(__v4sf)__A, (__v4sf)__B, -(__v4sf)__C);
+}
+
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_nmsub_pd (__m128d __A, __m128d __B, __m128d __C)
+{
+  return (__m128d) __builtin_ia32_vfmaddpd (-(__v2df)__A, (__v2df)__B, -(__v2df)__C);
+}
+
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_nmsub_ss (__m128 __A, __m128 __B, __m128 __C)
+{
+  return (__m128) __builtin_ia32_vfmaddss (-(__v4sf)__A, (__v4sf)__B, -(__v4sf)__C);
+}
+
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_nmsub_sd (__m128d __A, __m128d __B, __m128d __C)
+{
+  return (__m128d) __builtin_ia32_vfmaddsd (-(__v2df)__A, (__v2df)__B, -(__v2df)__C);
+}
+
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maddsub_ps (__m128 __A, __m128 __B, __m128 __C)
+{
+  return (__m128) __builtin_ia32_vfmaddsubps ((__v4sf)__A, (__v4sf)__B, (__v4sf)__C);
+}
+
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maddsub_pd (__m128d __A, __m128d __B, __m128d __C)
+{
+  return (__m128d) __builtin_ia32_vfmaddsubpd ((__v2df)__A, (__v2df)__B, (__v2df)__C);
+}
+
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_msubadd_ps (__m128 __A, __m128 __B, __m128 __C)
+{
+  return (__m128) __builtin_ia32_vfmaddsubps ((__v4sf)__A, (__v4sf)__B, -(__v4sf)__C);
+}
+
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_msubadd_pd (__m128d __A, __m128d __B, __m128d __C)
+{
+  return (__m128d) __builtin_ia32_vfmaddsubpd ((__v2df)__A, (__v2df)__B, -(__v2df)__C);
+}
+
+/* 256b Floating point multiply/add type instructions.  */
+extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_macc_ps (__m256 __A, __m256 __B, __m256 __C)
+{
+  return (__m256) __builtin_ia32_vfmaddps256 ((__v8sf)__A, (__v8sf)__B, (__v8sf)__C);
+}
+
+extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_macc_pd (__m256d __A, __m256d __B, __m256d __C)
+{
+  return (__m256d) __builtin_ia32_vfmaddpd256 ((__v4df)__A, (__v4df)__B, (__v4df)__C);
+}
+
+extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_msub_ps (__m256 __A, __m256 __B, __m256 __C)
+
+{
+  return (__m256) __builtin_ia32_vfmaddps256 ((__v8sf)__A, (__v8sf)__B, -(__v8sf)__C);
+}
+
+extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_msub_pd (__m256d __A, __m256d __B, __m256d __C)
+{
+  return (__m256d) __builtin_ia32_vfmaddpd256 ((__v4df)__A, (__v4df)__B, -(__v4df)__C);
+}
+
+extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_nmacc_ps (__m256 __A, __m256 __B, __m256 __C)
+{
+  return (__m256) __builtin_ia32_vfmaddps256 (-(__v8sf)__A, (__v8sf)__B, (__v8sf)__C);
+}
+
+extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_nmacc_pd (__m256d __A, __m256d __B, __m256d __C)
+{
+  return (__m256d) __builtin_ia32_vfmaddpd256 (-(__v4df)__A, (__v4df)__B, (__v4df)__C);
+}
+
+extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_nmsub_ps (__m256 __A, __m256 __B, __m256 __C)
+{
+  return (__m256) __builtin_ia32_vfmaddps256 (-(__v8sf)__A, (__v8sf)__B, -(__v8sf)__C);
+}
+
+extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_nmsub_pd (__m256d __A, __m256d __B, __m256d __C)
+{
+  return (__m256d) __builtin_ia32_vfmaddpd256 (-(__v4df)__A, (__v4df)__B, -(__v4df)__C);
+}
+
+extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maddsub_ps (__m256 __A, __m256 __B, __m256 __C)
+{
+  return (__m256) __builtin_ia32_vfmaddsubps256 ((__v8sf)__A, (__v8sf)__B, (__v8sf)__C);
+}
+
+extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_maddsub_pd (__m256d __A, __m256d __B, __m256d __C)
+{
+  return (__m256d) __builtin_ia32_vfmaddsubpd256 ((__v4df)__A, (__v4df)__B, (__v4df)__C);
+}
+
+extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_msubadd_ps (__m256 __A, __m256 __B, __m256 __C)
+{
+  return (__m256) __builtin_ia32_vfmaddsubps256 ((__v8sf)__A, (__v8sf)__B, -(__v8sf)__C);
+}
+
+extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_msubadd_pd (__m256d __A, __m256d __B, __m256d __C)
+{
+  return (__m256d) __builtin_ia32_vfmaddsubpd256 ((__v4df)__A, (__v4df)__B, -(__v4df)__C);
+}
+
+#ifdef __DISABLE_FMA4__
+#undef __DISABLE_FMA4__
+#pragma GCC pop_options
+#endif /* __DISABLE_FMA4__ */
+
+#endif
Index: Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/fmaintrin.h
===================================================================
--- Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/fmaintrin.h	(revision 1046)
+++ Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/fmaintrin.h	(revision 1046)
@@ -0,0 +1,302 @@
+/* Copyright (C) 2011-2015 Free Software Foundation, Inc.
+
+   This file is part of GCC.
+
+   GCC is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
+
+   GCC is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   Under Section 7 of GPL version 3, you are granted additional
+   permissions described in the GCC Runtime Library Exception, version
+   3.1, as published by the Free Software Foundation.
+
+   You should have received a copy of the GNU General Public License and
+   a copy of the GCC Runtime Library Exception along with this program;
+   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _IMMINTRIN_H_INCLUDED
+# error "Never use <fmaintrin.h> directly; include <immintrin.h> instead."
+#endif
+
+#ifndef _FMAINTRIN_H_INCLUDED
+#define _FMAINTRIN_H_INCLUDED
+
+#ifndef __FMA__
+#pragma GCC push_options
+#pragma GCC target("fma")
+#define __DISABLE_FMA__
+#endif /* __FMA__ */
+
+extern __inline __m128d
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_fmadd_pd (__m128d __A, __m128d __B, __m128d __C)
+{
+  return (__m128d)__builtin_ia32_vfmaddpd ((__v2df)__A, (__v2df)__B,
+                                           (__v2df)__C);
+}
+
+extern __inline __m256d
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_fmadd_pd (__m256d __A, __m256d __B, __m256d __C)
+{
+  return (__m256d)__builtin_ia32_vfmaddpd256 ((__v4df)__A, (__v4df)__B,
+                                              (__v4df)__C);
+}
+
+extern __inline __m128
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_fmadd_ps (__m128 __A, __m128 __B, __m128 __C)
+{
+  return (__m128)__builtin_ia32_vfmaddps ((__v4sf)__A, (__v4sf)__B,
+                                          (__v4sf)__C);
+}
+
+extern __inline __m256
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_fmadd_ps (__m256 __A, __m256 __B, __m256 __C)
+{
+  return (__m256)__builtin_ia32_vfmaddps256 ((__v8sf)__A, (__v8sf)__B,
+                                             (__v8sf)__C);
+}
+
+extern __inline __m128d
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_fmadd_sd (__m128d __A, __m128d __B, __m128d __C)
+{
+  return (__m128d) __builtin_ia32_vfmaddsd3 ((__v2df)__A, (__v2df)__B,
+                                             (__v2df)__C);
+}
+
+extern __inline __m128
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_fmadd_ss (__m128 __A, __m128 __B, __m128 __C)
+{
+  return (__m128) __builtin_ia32_vfmaddss3 ((__v4sf)__A, (__v4sf)__B,
+                                            (__v4sf)__C);
+}
+
+extern __inline __m128d
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_fmsub_pd (__m128d __A, __m128d __B, __m128d __C)
+{
+  return (__m128d)__builtin_ia32_vfmaddpd ((__v2df)__A, (__v2df)__B,
+                                           -(__v2df)__C);
+}
+
+extern __inline __m256d
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_fmsub_pd (__m256d __A, __m256d __B, __m256d __C)
+{
+  return (__m256d)__builtin_ia32_vfmaddpd256 ((__v4df)__A, (__v4df)__B,
+                                              -(__v4df)__C);
+}
+
+extern __inline __m128
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_fmsub_ps (__m128 __A, __m128 __B, __m128 __C)
+{
+  return (__m128)__builtin_ia32_vfmaddps ((__v4sf)__A, (__v4sf)__B,
+                                          -(__v4sf)__C);
+}
+
+extern __inline __m256
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_fmsub_ps (__m256 __A, __m256 __B, __m256 __C)
+{
+  return (__m256)__builtin_ia32_vfmaddps256 ((__v8sf)__A, (__v8sf)__B,
+                                             -(__v8sf)__C);
+}
+
+extern __inline __m128d
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_fmsub_sd (__m128d __A, __m128d __B, __m128d __C)
+{
+  return (__m128d)__builtin_ia32_vfmaddsd3 ((__v2df)__A, (__v2df)__B,
+                                            -(__v2df)__C);
+}
+
+extern __inline __m128
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_fmsub_ss (__m128 __A, __m128 __B, __m128 __C)
+{
+  return (__m128)__builtin_ia32_vfmaddss3 ((__v4sf)__A, (__v4sf)__B,
+                                           -(__v4sf)__C);
+}
+
+extern __inline __m128d
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_fnmadd_pd (__m128d __A, __m128d __B, __m128d __C)
+{
+  return (__m128d)__builtin_ia32_vfmaddpd (-(__v2df)__A, (__v2df)__B,
+                                           (__v2df)__C);
+}
+
+extern __inline __m256d
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_fnmadd_pd (__m256d __A, __m256d __B, __m256d __C)
+{
+  return (__m256d)__builtin_ia32_vfmaddpd256 (-(__v4df)__A, (__v4df)__B,
+                                              (__v4df)__C);
+}
+
+extern __inline __m128
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_fnmadd_ps (__m128 __A, __m128 __B, __m128 __C)
+{
+  return (__m128)__builtin_ia32_vfmaddps (-(__v4sf)__A, (__v4sf)__B,
+                                          (__v4sf)__C);
+}
+
+extern __inline __m256
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_fnmadd_ps (__m256 __A, __m256 __B, __m256 __C)
+{
+  return (__m256)__builtin_ia32_vfmaddps256 (-(__v8sf)__A, (__v8sf)__B,
+                                             (__v8sf)__C);
+}
+
+extern __inline __m128d
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_fnmadd_sd (__m128d __A, __m128d __B, __m128d __C)
+{
+  return (__m128d)__builtin_ia32_vfmaddsd3 ((__v2df)__A, -(__v2df)__B,
+                                            (__v2df)__C);
+}
+
+extern __inline __m128
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_fnmadd_ss (__m128 __A, __m128 __B, __m128 __C)
+{
+  return (__m128)__builtin_ia32_vfmaddss3 ((__v4sf)__A, -(__v4sf)__B,
+                                           (__v4sf)__C);
+}
+
+extern __inline __m128d
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_fnmsub_pd (__m128d __A, __m128d __B, __m128d __C)
+{
+  return (__m128d)__builtin_ia32_vfmaddpd (-(__v2df)__A, (__v2df)__B,
+                                           -(__v2df)__C);
+}
+
+extern __inline __m256d
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_fnmsub_pd (__m256d __A, __m256d __B, __m256d __C)
+{
+  return (__m256d)__builtin_ia32_vfmaddpd256 (-(__v4df)__A, (__v4df)__B,
+                                              -(__v4df)__C);
+}
+
+extern __inline __m128
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_fnmsub_ps (__m128 __A, __m128 __B, __m128 __C)
+{
+  return (__m128)__builtin_ia32_vfmaddps (-(__v4sf)__A, (__v4sf)__B,
+                                          -(__v4sf)__C);
+}
+
+extern __inline __m256
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_fnmsub_ps (__m256 __A, __m256 __B, __m256 __C)
+{
+  return (__m256)__builtin_ia32_vfmaddps256 (-(__v8sf)__A, (__v8sf)__B,
+                                             -(__v8sf)__C);
+}
+
+extern __inline __m128d
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_fnmsub_sd (__m128d __A, __m128d __B, __m128d __C)
+{
+  return (__m128d)__builtin_ia32_vfmaddsd3 ((__v2df)__A, -(__v2df)__B,
+                                            -(__v2df)__C);
+}
+
+extern __inline __m128
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_fnmsub_ss (__m128 __A, __m128 __B, __m128 __C)
+{
+  return (__m128)__builtin_ia32_vfmaddss3 ((__v4sf)__A, -(__v4sf)__B,
+                                           -(__v4sf)__C);
+}
+
+extern __inline __m128d
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_fmaddsub_pd (__m128d __A, __m128d __B, __m128d __C)
+{
+  return (__m128d)__builtin_ia32_vfmaddsubpd ((__v2df)__A, (__v2df)__B,
+                                              (__v2df)__C);
+}
+
+extern __inline __m256d
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_fmaddsub_pd (__m256d __A, __m256d __B, __m256d __C)
+{
+  return (__m256d)__builtin_ia32_vfmaddsubpd256 ((__v4df)__A,
+                                                 (__v4df)__B,
+                                                 (__v4df)__C);
+}
+
+extern __inline __m128
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_fmaddsub_ps (__m128 __A, __m128 __B, __m128 __C)
+{
+  return (__m128)__builtin_ia32_vfmaddsubps ((__v4sf)__A, (__v4sf)__B,
+                                             (__v4sf)__C);
+}
+
+extern __inline __m256
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_fmaddsub_ps (__m256 __A, __m256 __B, __m256 __C)
+{
+  return (__m256)__builtin_ia32_vfmaddsubps256 ((__v8sf)__A,
+                                                (__v8sf)__B,
+                                                (__v8sf)__C);
+}
+
+extern __inline __m128d
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_fmsubadd_pd (__m128d __A, __m128d __B, __m128d __C)
+{
+  return (__m128d)__builtin_ia32_vfmaddsubpd ((__v2df)__A, (__v2df)__B,
+                                              -(__v2df)__C);
+}
+
+extern __inline __m256d
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_fmsubadd_pd (__m256d __A, __m256d __B, __m256d __C)
+{
+  return (__m256d)__builtin_ia32_vfmaddsubpd256 ((__v4df)__A,
+                                                 (__v4df)__B,
+                                                 -(__v4df)__C);
+}
+
+extern __inline __m128
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_fmsubadd_ps (__m128 __A, __m128 __B, __m128 __C)
+{
+  return (__m128)__builtin_ia32_vfmaddsubps ((__v4sf)__A, (__v4sf)__B,
+                                             -(__v4sf)__C);
+}
+
+extern __inline __m256
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_fmsubadd_ps (__m256 __A, __m256 __B, __m256 __C)
+{
+  return (__m256)__builtin_ia32_vfmaddsubps256 ((__v8sf)__A,
+                                                (__v8sf)__B,
+                                                -(__v8sf)__C);
+}
+
+#ifdef __DISABLE_FMA__
+#undef __DISABLE_FMA__
+#pragma GCC pop_options
+#endif /* __DISABLE_FMA__ */
+
+#endif
Index: Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/fxsrintrin.h
===================================================================
--- Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/fxsrintrin.h	(revision 1046)
+++ Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/fxsrintrin.h	(revision 1046)
@@ -0,0 +1,73 @@
+/* Copyright (C) 2012-2015 Free Software Foundation, Inc.
+
+   This file is part of GCC.
+
+   GCC is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
+
+   GCC is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   Under Section 7 of GPL version 3, you are granted additional
+   permissions described in the GCC Runtime Library Exception, version
+   3.1, as published by the Free Software Foundation.
+
+   You should have received a copy of the GNU General Public License and
+   a copy of the GCC Runtime Library Exception along with this program;
+   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+/* #if !defined _X86INTRIN_H_INCLUDED && !defined _IMMINTRIN_H_INCLUDED */
+/* # error "Never use <fxsrintrin.h> directly; include <x86intrin.h> instead." */
+/* #endif */
+
+#ifndef _FXSRINTRIN_H_INCLUDED
+#define _FXSRINTRIN_H_INCLUDED
+
+#ifndef __FXSR__
+#pragma GCC push_options
+#pragma GCC target("fxsr")
+#define __DISABLE_FXSR__
+#endif /* __FXSR__ */
+
+extern __inline void
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_fxsave (void *__P)
+{
+  return __builtin_ia32_fxsave (__P);
+}
+
+extern __inline void
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_fxrstor (void *__P)
+{
+  return __builtin_ia32_fxrstor (__P);
+}
+
+#ifdef __x86_64__
+extern __inline void
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_fxsave64 (void *__P)
+{
+    return __builtin_ia32_fxsave64 (__P);
+}
+
+extern __inline void
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_fxrstor64 (void *__P)
+{
+    return __builtin_ia32_fxrstor64 (__P);
+}
+#endif
+
+#ifdef __DISABLE_FXSR__
+#undef __DISABLE_FXSR__
+#pragma GCC pop_options
+#endif /* __DISABLE_FXSR__ */
+
+
+#endif /* _FXSRINTRIN_H_INCLUDED */
Index: Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/ia32intrin.h
===================================================================
--- Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/ia32intrin.h	(revision 1046)
+++ Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/ia32intrin.h	(revision 1046)
@@ -0,0 +1,299 @@
+/* Copyright (C) 2009-2015 Free Software Foundation, Inc.
+
+   This file is part of GCC.
+
+   GCC is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
+
+   GCC is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   Under Section 7 of GPL version 3, you are granted additional
+   permissions described in the GCC Runtime Library Exception, version
+   3.1, as published by the Free Software Foundation.
+
+   You should have received a copy of the GNU General Public License and
+   a copy of the GCC Runtime Library Exception along with this program;
+   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _X86INTRIN_H_INCLUDED
+# error "Never use <ia32intrin.h> directly; include <x86intrin.h> instead."
+#endif
+
+/* 32bit bsf */
+extern __inline int
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+__bsfd (int __X)
+{
+  return __builtin_ctz (__X);
+}
+
+/* 32bit bsr */
+extern __inline int
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+__bsrd (int __X)
+{
+  return __builtin_ia32_bsrsi (__X);
+}
+
+/* 32bit bswap */
+extern __inline int
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+__bswapd (int __X)
+{
+  return __builtin_bswap32 (__X);
+}
+
+#ifndef __SSE4_2__
+#pragma GCC push_options
+#pragma GCC target("sse4.2")
+#define __DISABLE_SSE4_2__
+#endif /* __SSE4_2__ */
+
+/* 32bit accumulate CRC32 (polynomial 0x11EDC6F41) value.  */
+extern __inline unsigned int
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+__crc32b (unsigned int __C, unsigned char __V)
+{
+  return __builtin_ia32_crc32qi (__C, __V);
+}
+
+extern __inline unsigned int
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+__crc32w (unsigned int __C, unsigned short __V)
+{
+  return __builtin_ia32_crc32hi (__C, __V);
+}
+
+extern __inline unsigned int
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+__crc32d (unsigned int __C, unsigned int __V)
+{
+  return __builtin_ia32_crc32si (__C, __V);
+}
+
+#ifdef __DISABLE_SSE4_2__
+#undef __DISABLE_SSE4_2__
+#pragma GCC pop_options
+#endif /* __DISABLE_SSE4_2__ */
+
+/* 32bit popcnt */
+extern __inline int
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+__popcntd (unsigned int __X)
+{
+  return __builtin_popcount (__X);
+}
+
+/* rdpmc */
+extern __inline unsigned long long
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+__rdpmc (int __S)
+{
+  return __builtin_ia32_rdpmc (__S);
+}
+
+/* rdtsc */
+extern __inline unsigned long long
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+__rdtsc (void)
+{
+  return __builtin_ia32_rdtsc ();
+}
+
+/* rdtscp */
+extern __inline unsigned long long
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+__rdtscp (unsigned int *__A)
+{
+  return __builtin_ia32_rdtscp (__A);
+}
+
+/* 8bit rol */
+extern __inline unsigned char
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+__rolb (unsigned char __X, int __C)
+{
+  return __builtin_ia32_rolqi (__X, __C);
+}
+
+/* 16bit rol */
+extern __inline unsigned short
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+__rolw (unsigned short __X, int __C)
+{
+  return __builtin_ia32_rolhi (__X, __C);
+}
+
+/* 32bit rol */
+extern __inline unsigned int
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+__rold (unsigned int __X, int __C)
+{
+  return (__X << __C) | (__X >> (32 - __C));
+}
+
+/* 8bit ror */
+extern __inline unsigned char
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+__rorb (unsigned char __X, int __C)
+{
+  return __builtin_ia32_rorqi (__X, __C);
+}
+
+/* 16bit ror */
+extern __inline unsigned short
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+__rorw (unsigned short __X, int __C)
+{
+  return __builtin_ia32_rorhi (__X, __C);
+}
+
+/* 32bit ror */
+extern __inline unsigned int
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+__rord (unsigned int __X, int __C)
+{
+  return (__X >> __C) | (__X << (32 - __C));
+}
+
+/* Pause */
+extern __inline void
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+__pause (void)
+{
+  __builtin_ia32_pause ();
+}
+
+#ifdef __x86_64__
+/* 64bit bsf */
+extern __inline int
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+__bsfq (long long __X)
+{
+  return __builtin_ctzll (__X);
+}
+
+/* 64bit bsr */
+extern __inline int
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+__bsrq (long long __X)
+{
+  return __builtin_ia32_bsrdi (__X);
+}
+
+/* 64bit bswap */
+extern __inline long long
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+__bswapq (long long __X)
+{
+  return __builtin_bswap64 (__X);
+}
+
+#ifndef __SSE4_2__
+#pragma GCC push_options
+#pragma GCC target("sse4.2")
+#define __DISABLE_SSE4_2__
+#endif /* __SSE4_2__ */
+
+/* 64bit accumulate CRC32 (polynomial 0x11EDC6F41) value.  */
+extern __inline unsigned long long
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+__crc32q (unsigned long long __C, unsigned long long __V)
+{
+  return __builtin_ia32_crc32di (__C, __V);
+}
+
+#ifdef __DISABLE_SSE4_2__
+#undef __DISABLE_SSE4_2__
+#pragma GCC pop_options
+#endif /* __DISABLE_SSE4_2__ */
+
+/* 64bit popcnt */
+extern __inline long long
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+__popcntq (unsigned long long __X)
+{
+  return __builtin_popcountll (__X);
+}
+
+/* 64bit rol */
+extern __inline unsigned long long
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+__rolq (unsigned long long __X, int __C)
+{
+  return (__X << __C) | (__X >> (64 - __C));
+}
+
+/* 64bit ror */
+extern __inline unsigned long long
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+__rorq (unsigned long long __X, int __C)
+{
+  return (__X >> __C) | (__X << (64 - __C));
+}
+
+/* Read flags register */
+extern __inline unsigned long long
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+__readeflags (void)
+{
+  return __builtin_ia32_readeflags_u64 ();
+}
+
+/* Write flags register */
+extern __inline void
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+__writeeflags (unsigned long long X)
+{
+  __builtin_ia32_writeeflags_u64 (X);
+}
+
+#define _bswap64(a)		__bswapq(a)
+#define _popcnt64(a)		__popcntq(a)
+#else
+
+/* Read flags register */
+extern __inline unsigned int
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+__readeflags (void)
+{
+  return __builtin_ia32_readeflags_u32 ();
+}
+
+/* Write flags register */
+extern __inline void
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+__writeeflags (unsigned int X)
+{
+  __builtin_ia32_writeeflags_u32 (X);
+}
+
+#endif
+
+/* On LP64 systems, longs are 64-bit.  Use the appropriate rotate
+ * function.  */
+#ifdef __LP64__
+#define _lrotl(a,b)		__rolq((a), (b))
+#define _lrotr(a,b)		__rorq((a), (b))
+#else
+#define _lrotl(a,b)		__rold((a), (b))
+#define _lrotr(a,b)		__rord((a), (b))
+#endif
+
+#define _bit_scan_forward(a)	__bsfd(a)
+#define _bit_scan_reverse(a)	__bsrd(a)
+#define _bswap(a)		__bswapd(a)
+#define _popcnt32(a)		__popcntd(a)
+#define _rdpmc(a)		__rdpmc(a)
+#define _rdtsc()		__rdtsc()
+#define _rdtscp(a)		__rdtscp(a)
+#define _rotwl(a,b)		__rolw((a), (b))
+#define _rotwr(a,b)		__rorw((a), (b))
+#define _rotl(a,b)		__rold((a), (b))
+#define _rotr(a,b)		__rord((a), (b))
Index: Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/immintrin.h
===================================================================
--- Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/immintrin.h	(revision 1046)
+++ Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/immintrin.h	(revision 1046)
@@ -0,0 +1,195 @@
+/* Copyright (C) 2008-2015 Free Software Foundation, Inc.
+
+   This file is part of GCC.
+
+   GCC is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
+
+   GCC is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   Under Section 7 of GPL version 3, you are granted additional
+   permissions described in the GCC Runtime Library Exception, version
+   3.1, as published by the Free Software Foundation.
+
+   You should have received a copy of the GNU General Public License and
+   a copy of the GCC Runtime Library Exception along with this program;
+   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _IMMINTRIN_H_INCLUDED
+#define _IMMINTRIN_H_INCLUDED
+
+#include <mmintrin.h>
+
+#include <xmmintrin.h>
+
+#include <emmintrin.h>
+
+#include <pmmintrin.h>
+
+#include <tmmintrin.h>
+
+#include <smmintrin.h>
+
+#include <wmmintrin.h>
+
+#include <avxintrin.h>
+
+#include <avx2intrin.h>
+
+#include <avx512fintrin.h>
+
+#include <avx512erintrin.h>
+
+#include <avx512pfintrin.h>
+
+#include <avx512cdintrin.h>
+
+#include <avx512vlintrin.h>
+
+#include <avx512bwintrin.h>
+
+#include <avx512dqintrin.h>
+
+#include <avx512vlbwintrin.h>
+
+#include <avx512vldqintrin.h>
+
+#include <avx512ifmaintrin.h>
+
+#include <avx512ifmavlintrin.h>
+
+#include <avx512vbmiintrin.h>
+
+#include <avx512vbmivlintrin.h>
+
+#include <shaintrin.h>
+
+#include <lzcntintrin.h>
+
+#include <bmiintrin.h>
+
+#include <bmi2intrin.h>
+
+#include <fmaintrin.h>
+
+#include <f16cintrin.h>
+
+#include <rtmintrin.h>
+
+#include <xtestintrin.h>
+
+#ifndef __RDRND__
+#pragma GCC push_options
+#pragma GCC target("rdrnd")
+#define __DISABLE_RDRND__
+#endif /* __RDRND__ */
+extern __inline int
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_rdrand16_step (unsigned short *__P)
+{
+  return __builtin_ia32_rdrand16_step (__P);
+}
+
+extern __inline int
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_rdrand32_step (unsigned int *__P)
+{
+  return __builtin_ia32_rdrand32_step (__P);
+}
+#ifdef __DISABLE_RDRND__
+#undef __DISABLE_RDRND__
+#pragma GCC pop_options
+#endif /* __DISABLE_RDRND__ */
+
+#ifdef  __x86_64__
+
+#ifndef __FSGSBASE__
+#pragma GCC push_options
+#pragma GCC target("fsgsbase")
+#define __DISABLE_FSGSBASE__
+#endif /* __FSGSBASE__ */
+extern __inline unsigned int
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_readfsbase_u32 (void)
+{
+  return __builtin_ia32_rdfsbase32 ();
+}
+
+extern __inline unsigned long long
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_readfsbase_u64 (void)
+{
+  return __builtin_ia32_rdfsbase64 ();
+}
+
+extern __inline unsigned int
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_readgsbase_u32 (void)
+{
+  return __builtin_ia32_rdgsbase32 ();
+}
+
+extern __inline unsigned long long
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_readgsbase_u64 (void)
+{
+  return __builtin_ia32_rdgsbase64 ();
+}
+
+extern __inline void
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_writefsbase_u32 (unsigned int __B)
+{
+  __builtin_ia32_wrfsbase32 (__B);
+}
+
+extern __inline void
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_writefsbase_u64 (unsigned long long __B)
+{
+  __builtin_ia32_wrfsbase64 (__B);
+}
+
+extern __inline void
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_writegsbase_u32 (unsigned int __B)
+{
+  __builtin_ia32_wrgsbase32 (__B);
+}
+
+extern __inline void
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_writegsbase_u64 (unsigned long long __B)
+{
+  __builtin_ia32_wrgsbase64 (__B);
+}
+#ifdef __DISABLE_FSGSBASE__
+#undef __DISABLE_FSGSBASE__
+#pragma GCC pop_options
+#endif /* __DISABLE_FSGSBASE__ */
+
+#ifndef __RDRND__
+#pragma GCC push_options
+#pragma GCC target("rdrnd")
+#define __DISABLE_RDRND__
+#endif /* __RDRND__ */
+extern __inline int
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_rdrand64_step (unsigned long long *__P)
+{
+  return __builtin_ia32_rdrand64_step (__P);
+}
+#ifdef __DISABLE_RDRND__
+#undef __DISABLE_RDRND__
+#pragma GCC pop_options
+#endif /* __DISABLE_RDRND__ */
+
+#endif /* __x86_64__  */
+
+#endif /* _IMMINTRIN_H_INCLUDED */
Index: Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/iso646.h
===================================================================
--- Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/iso646.h	(revision 1046)
+++ Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/iso646.h	(revision 1046)
@@ -0,0 +1,45 @@
+/* Copyright (C) 1997-2015 Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 3, or (at your option)
+any later version.
+
+GCC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+Under Section 7 of GPL version 3, you are granted additional
+permissions described in the GCC Runtime Library Exception, version
+3.1, as published by the Free Software Foundation.
+
+You should have received a copy of the GNU General Public License and
+a copy of the GCC Runtime Library Exception along with this program;
+see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+<http://www.gnu.org/licenses/>.  */
+
+/*
+ * ISO C Standard:  7.9  Alternative spellings  <iso646.h>
+ */
+
+#ifndef _ISO646_H
+#define _ISO646_H
+
+#ifndef __cplusplus
+#define and	&&
+#define and_eq	&=
+#define bitand	&
+#define bitor	|
+#define compl	~
+#define not	!
+#define not_eq	!=
+#define or	||
+#define or_eq	|=
+#define xor	^
+#define xor_eq	^=
+#endif
+
+#endif
Index: Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/lwpintrin.h
===================================================================
--- Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/lwpintrin.h	(revision 1046)
+++ Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/lwpintrin.h	(revision 1046)
@@ -0,0 +1,105 @@
+/* Copyright (C) 2007-2015 Free Software Foundation, Inc.
+
+   This file is part of GCC.
+
+   GCC is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
+
+   GCC is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   Under Section 7 of GPL version 3, you are granted additional
+   permissions described in the GCC Runtime Library Exception, version
+   3.1, as published by the Free Software Foundation.
+
+   You should have received a copy of the GNU General Public License and
+   a copy of the GCC Runtime Library Exception along with this program;
+   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _X86INTRIN_H_INCLUDED
+# error "Never use <lwpintrin.h> directly; include <x86intrin.h> instead."
+#endif
+
+#ifndef _LWPINTRIN_H_INCLUDED
+#define _LWPINTRIN_H_INCLUDED
+
+#ifndef __LWP__
+#pragma GCC push_options
+#pragma GCC target("lwp")
+#define __DISABLE_LWP__
+#endif /* __LWP__ */
+
+extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+__llwpcb (void *pcbAddress)
+{
+  __builtin_ia32_llwpcb (pcbAddress);
+}
+
+extern __inline void * __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+__slwpcb (void)
+{
+  return __builtin_ia32_slwpcb ();
+}
+
+#ifdef __OPTIMIZE__
+extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+__lwpval32 (unsigned int data2, unsigned int data1, unsigned int flags)
+{
+  __builtin_ia32_lwpval32 (data2, data1, flags);
+}
+
+#ifdef __x86_64__
+extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+__lwpval64 (unsigned long long data2, unsigned int data1, unsigned int flags)
+{
+  __builtin_ia32_lwpval64 (data2, data1, flags);
+}
+#endif
+#else
+#define __lwpval32(D2, D1, F) \
+  (__builtin_ia32_lwpval32 ((unsigned int) (D2), (unsigned int) (D1), \
+			    (unsigned int) (F)))
+#ifdef __x86_64__
+#define __lwpval64(D2, D1, F) \
+  (__builtin_ia32_lwpval64 ((unsigned long long) (D2), (unsigned int) (D1), \
+			    (unsigned int) (F)))
+#endif
+#endif
+
+
+#ifdef __OPTIMIZE__
+extern __inline unsigned char __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+__lwpins32 (unsigned int data2, unsigned int data1, unsigned int flags)
+{
+  return __builtin_ia32_lwpins32 (data2, data1, flags);
+}
+
+#ifdef __x86_64__
+extern __inline unsigned char __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+__lwpins64 (unsigned long long data2, unsigned int data1, unsigned int flags)
+{
+  return __builtin_ia32_lwpins64 (data2, data1, flags);
+}
+#endif
+#else
+#define __lwpins32(D2, D1, F) \
+  (__builtin_ia32_lwpins32 ((unsigned int) (D2), (unsigned int) (D1), \
+			    (unsigned int) (F)))
+#ifdef __x86_64__
+#define __lwpins64(D2, D1, F) \
+  (__builtin_ia32_lwpins64 ((unsigned long long) (D2), (unsigned int) (D1), \
+			    (unsigned int) (F)))
+#endif
+#endif
+
+#ifdef __DISABLE_LWP__
+#undef __DISABLE_LWP__
+#pragma GCC pop_options
+#endif /* __DISABLE_LWP__ */
+
+#endif /* _LWPINTRIN_H_INCLUDED */
Index: Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/lzcntintrin.h
===================================================================
--- Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/lzcntintrin.h	(revision 1046)
+++ Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/lzcntintrin.h	(revision 1046)
@@ -0,0 +1,75 @@
+/* Copyright (C) 2009-2015 Free Software Foundation, Inc.
+
+   This file is part of GCC.
+
+   GCC is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
+
+   GCC is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   Under Section 7 of GPL version 3, you are granted additional
+   permissions described in the GCC Runtime Library Exception, version
+   3.1, as published by the Free Software Foundation.
+
+   You should have received a copy of the GNU General Public License and
+   a copy of the GCC Runtime Library Exception along with this program;
+   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#if !defined _X86INTRIN_H_INCLUDED && !defined _IMMINTRIN_H_INCLUDED
+# error "Never use <lzcntintrin.h> directly; include <x86intrin.h> instead."
+#endif
+
+
+#ifndef _LZCNTINTRIN_H_INCLUDED
+#define _LZCNTINTRIN_H_INCLUDED
+
+#ifndef __LZCNT__
+#pragma GCC push_options
+#pragma GCC target("lzcnt")
+#define __DISABLE_LZCNT__
+#endif /* __LZCNT__ */
+
+extern __inline unsigned short __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+__lzcnt16 (unsigned short __X)
+{
+  return __builtin_clzs (__X);
+}
+
+extern __inline unsigned int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+__lzcnt32 (unsigned int __X)
+{
+  return __builtin_clz (__X);
+}
+
+extern __inline unsigned int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_lzcnt_u32 (unsigned int __X)
+{
+  return __builtin_clz (__X);
+}
+
+#ifdef __x86_64__
+extern __inline unsigned long long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+__lzcnt64 (unsigned long long __X)
+{
+  return __builtin_clzll (__X);
+}
+
+extern __inline unsigned long long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_lzcnt_u64 (unsigned long long __X)
+{
+  return __builtin_clzll (__X);
+}
+#endif
+
+#ifdef __DISABLE_LZCNT__
+#undef __DISABLE_LZCNT__
+#pragma GCC pop_options
+#endif /* __DISABLE_LZCNT__ */
+
+#endif /* _LZCNTINTRIN_H_INCLUDED */
Index: Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/mm3dnow.h
===================================================================
--- Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/mm3dnow.h	(revision 1046)
+++ Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/mm3dnow.h	(revision 1046)
@@ -0,0 +1,218 @@
+/* Copyright (C) 2004-2015 Free Software Foundation, Inc.
+
+   This file is part of GCC.
+
+   GCC is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
+
+   GCC is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   Under Section 7 of GPL version 3, you are granted additional
+   permissions described in the GCC Runtime Library Exception, version
+   3.1, as published by the Free Software Foundation.
+
+   You should have received a copy of the GNU General Public License and
+   a copy of the GCC Runtime Library Exception along with this program;
+   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+/* Implemented from the mm3dnow.h (of supposedly AMD origin) included with
+   MSVC 7.1.  */
+
+#ifndef _MM3DNOW_H_INCLUDED
+#define _MM3DNOW_H_INCLUDED
+
+#include <mmintrin.h>
+#include <prfchwintrin.h>
+
+#ifndef __3dNOW__
+#pragma GCC push_options
+#pragma GCC target("3dnow")
+#define __DISABLE_3dNOW__
+#endif /* __3dNOW__ */
+
+extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_femms (void)
+{
+  __builtin_ia32_femms();
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_pavgusb (__m64 __A, __m64 __B)
+{
+  return (__m64)__builtin_ia32_pavgusb ((__v8qi)__A, (__v8qi)__B);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_pf2id (__m64 __A)
+{
+  return (__m64)__builtin_ia32_pf2id ((__v2sf)__A);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_pfacc (__m64 __A, __m64 __B)
+{
+  return (__m64)__builtin_ia32_pfacc ((__v2sf)__A, (__v2sf)__B);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_pfadd (__m64 __A, __m64 __B)
+{
+  return (__m64)__builtin_ia32_pfadd ((__v2sf)__A, (__v2sf)__B);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_pfcmpeq (__m64 __A, __m64 __B)
+{
+  return (__m64)__builtin_ia32_pfcmpeq ((__v2sf)__A, (__v2sf)__B);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_pfcmpge (__m64 __A, __m64 __B)
+{
+  return (__m64)__builtin_ia32_pfcmpge ((__v2sf)__A, (__v2sf)__B);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_pfcmpgt (__m64 __A, __m64 __B)
+{
+  return (__m64)__builtin_ia32_pfcmpgt ((__v2sf)__A, (__v2sf)__B);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_pfmax (__m64 __A, __m64 __B)
+{
+  return (__m64)__builtin_ia32_pfmax ((__v2sf)__A, (__v2sf)__B);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_pfmin (__m64 __A, __m64 __B)
+{
+  return (__m64)__builtin_ia32_pfmin ((__v2sf)__A, (__v2sf)__B);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_pfmul (__m64 __A, __m64 __B)
+{
+  return (__m64)__builtin_ia32_pfmul ((__v2sf)__A, (__v2sf)__B);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_pfrcp (__m64 __A)
+{
+  return (__m64)__builtin_ia32_pfrcp ((__v2sf)__A);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_pfrcpit1 (__m64 __A, __m64 __B)
+{
+  return (__m64)__builtin_ia32_pfrcpit1 ((__v2sf)__A, (__v2sf)__B);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_pfrcpit2 (__m64 __A, __m64 __B)
+{
+  return (__m64)__builtin_ia32_pfrcpit2 ((__v2sf)__A, (__v2sf)__B);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_pfrsqrt (__m64 __A)
+{
+  return (__m64)__builtin_ia32_pfrsqrt ((__v2sf)__A);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_pfrsqit1 (__m64 __A, __m64 __B)
+{
+  return (__m64)__builtin_ia32_pfrsqit1 ((__v2sf)__A, (__v2sf)__B);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_pfsub (__m64 __A, __m64 __B)
+{
+  return (__m64)__builtin_ia32_pfsub ((__v2sf)__A, (__v2sf)__B);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_pfsubr (__m64 __A, __m64 __B)
+{
+  return (__m64)__builtin_ia32_pfsubr ((__v2sf)__A, (__v2sf)__B);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_pi2fd (__m64 __A)
+{
+  return (__m64)__builtin_ia32_pi2fd ((__v2si)__A);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_pmulhrw (__m64 __A, __m64 __B)
+{
+  return (__m64)__builtin_ia32_pmulhrw ((__v4hi)__A, (__v4hi)__B);
+}
+
+extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_prefetch (void *__P)
+{
+  __builtin_prefetch (__P, 0, 3 /* _MM_HINT_T0 */);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_from_float (float __A)
+{
+  return __extension__ (__m64)(__v2sf){ __A, 0.0f };
+}
+
+extern __inline float __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_to_float (__m64 __A)
+{
+  union { __v2sf v; float a[2]; } __tmp;
+  __tmp.v = (__v2sf)__A;
+  return __tmp.a[0];
+}
+
+#ifdef __3dNOW_A__
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_pf2iw (__m64 __A)
+{
+  return (__m64)__builtin_ia32_pf2iw ((__v2sf)__A);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_pfnacc (__m64 __A, __m64 __B)
+{
+  return (__m64)__builtin_ia32_pfnacc ((__v2sf)__A, (__v2sf)__B);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_pfpnacc (__m64 __A, __m64 __B)
+{
+  return (__m64)__builtin_ia32_pfpnacc ((__v2sf)__A, (__v2sf)__B);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_pi2fw (__m64 __A)
+{
+  return (__m64)__builtin_ia32_pi2fw ((__v2si)__A);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_pswapd (__m64 __A)
+{
+  return (__m64)__builtin_ia32_pswapdsf ((__v2sf)__A);
+}
+
+#endif /* __3dNOW_A__ */
+
+#ifdef __DISABLE_3dNOW__
+#undef __DISABLE_3dNOW__
+#pragma GCC pop_options
+#endif /* __DISABLE_3dNOW__ */
+
+#endif /* _MM3DNOW_H_INCLUDED */
Index: Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/mm_malloc.h
===================================================================
--- Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/mm_malloc.h	(revision 1046)
+++ Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/mm_malloc.h	(revision 1046)
@@ -0,0 +1,74 @@
+/* Copyright (C) 2004-2015 Free Software Foundation, Inc.
+
+   This file is part of GCC.
+
+   GCC is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
+
+   GCC is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   Under Section 7 of GPL version 3, you are granted additional
+   permissions described in the GCC Runtime Library Exception, version
+   3.1, as published by the Free Software Foundation.
+
+   You should have received a copy of the GNU General Public License and
+   a copy of the GCC Runtime Library Exception along with this program;
+   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _MM_MALLOC_H_INCLUDED
+#define _MM_MALLOC_H_INCLUDED
+
+#include <stdlib.h>
+#include <errno.h>
+
+static __inline__ void* 
+_mm_malloc (size_t size, size_t align)
+{
+  void * malloc_ptr;
+  void * aligned_ptr;
+
+  /* Error if align is not a power of two.  */
+  if (align & (align - 1))
+    {
+      errno = EINVAL;
+      return ((void*) 0);
+    }
+
+  if (size == 0)
+    return ((void *) 0);
+
+ /* Assume malloc'd pointer is aligned at least to sizeof (void*).
+    If necessary, add another sizeof (void*) to store the value
+    returned by malloc. Effectively this enforces a minimum alignment
+    of sizeof double. */     
+    if (align < 2 * sizeof (void *))
+      align = 2 * sizeof (void *);
+
+  malloc_ptr = malloc (size + align);
+  if (!malloc_ptr)
+    return ((void *) 0);
+
+  /* Align  We have at least sizeof (void *) space below malloc'd ptr. */
+  aligned_ptr = (void *) (((size_t) malloc_ptr + align)
+			  & ~((size_t) (align) - 1));
+
+  /* Store the original pointer just before p.  */	
+  ((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]);
+}
+
+#endif /* _MM_MALLOC_H_INCLUDED */
Index: Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/mmintrin.h
===================================================================
--- Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/mmintrin.h	(revision 1046)
+++ Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/mmintrin.h	(revision 1046)
@@ -0,0 +1,942 @@
+/* Copyright (C) 2002-2015 Free Software Foundation, Inc.
+
+   This file is part of GCC.
+
+   GCC is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
+
+   GCC is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   Under Section 7 of GPL version 3, you are granted additional
+   permissions described in the GCC Runtime Library Exception, version
+   3.1, as published by the Free Software Foundation.
+
+   You should have received a copy of the GNU General Public License and
+   a copy of the GCC Runtime Library Exception along with this program;
+   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+/* Implemented from the specification included in the Intel C++ Compiler
+   User Guide and Reference, version 9.0.  */
+
+#ifndef _MMINTRIN_H_INCLUDED
+#define _MMINTRIN_H_INCLUDED
+
+#ifndef __MMX__
+#pragma GCC push_options
+#pragma GCC target("mmx")
+#define __DISABLE_MMX__
+#endif /* __MMX__ */
+
+/* The Intel API is flexible enough that we must allow aliasing with other
+   vector types, and their scalar components.  */
+typedef int __m64 __attribute__ ((__vector_size__ (8), __may_alias__));
+
+/* Internal data types for implementing the intrinsics.  */
+typedef int __v2si __attribute__ ((__vector_size__ (8)));
+typedef short __v4hi __attribute__ ((__vector_size__ (8)));
+typedef char __v8qi __attribute__ ((__vector_size__ (8)));
+typedef long long __v1di __attribute__ ((__vector_size__ (8)));
+typedef float __v2sf __attribute__ ((__vector_size__ (8)));
+
+/* Empty the multimedia state.  */
+extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_empty (void)
+{
+  __builtin_ia32_emms ();
+}
+
+extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_empty (void)
+{
+  _mm_empty ();
+}
+
+/* Convert I to a __m64 object.  The integer is zero-extended to 64-bits.  */
+extern __inline __m64  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtsi32_si64 (int __i)
+{
+  return (__m64) __builtin_ia32_vec_init_v2si (__i, 0);
+}
+
+extern __inline __m64  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_from_int (int __i)
+{
+  return _mm_cvtsi32_si64 (__i);
+}
+
+#ifdef __x86_64__
+/* Convert I to a __m64 object.  */
+
+/* Intel intrinsic.  */
+extern __inline __m64  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_from_int64 (long long __i)
+{
+  return (__m64) __i;
+}
+
+extern __inline __m64  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtsi64_m64 (long long __i)
+{
+  return (__m64) __i;
+}
+
+/* Microsoft intrinsic.  */
+extern __inline __m64  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtsi64x_si64 (long long __i)
+{
+  return (__m64) __i;
+}
+
+extern __inline __m64  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_set_pi64x (long long __i)
+{
+  return (__m64) __i;
+}
+#endif
+
+/* Convert the lower 32 bits of the __m64 object into an integer.  */
+extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtsi64_si32 (__m64 __i)
+{
+  return __builtin_ia32_vec_ext_v2si ((__v2si)__i, 0);
+}
+
+extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_to_int (__m64 __i)
+{
+  return _mm_cvtsi64_si32 (__i);
+}
+
+#ifdef __x86_64__
+/* Convert the __m64 object to a 64bit integer.  */
+
+/* Intel intrinsic.  */
+extern __inline long long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_to_int64 (__m64 __i)
+{
+  return (long long)__i;
+}
+
+extern __inline long long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtm64_si64 (__m64 __i)
+{
+  return (long long)__i;
+}
+
+/* Microsoft intrinsic.  */
+extern __inline long long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtsi64_si64x (__m64 __i)
+{
+  return (long long)__i;
+}
+#endif
+
+/* Pack the four 16-bit values from M1 into the lower four 8-bit values of
+   the result, and the four 16-bit values from M2 into the upper four 8-bit
+   values of the result, all with signed saturation.  */
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_packs_pi16 (__m64 __m1, __m64 __m2)
+{
+  return (__m64) __builtin_ia32_packsswb ((__v4hi)__m1, (__v4hi)__m2);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_packsswb (__m64 __m1, __m64 __m2)
+{
+  return _mm_packs_pi16 (__m1, __m2);
+}
+
+/* Pack the two 32-bit values from M1 in to the lower two 16-bit values of
+   the result, and the two 32-bit values from M2 into the upper two 16-bit
+   values of the result, all with signed saturation.  */
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_packs_pi32 (__m64 __m1, __m64 __m2)
+{
+  return (__m64) __builtin_ia32_packssdw ((__v2si)__m1, (__v2si)__m2);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_packssdw (__m64 __m1, __m64 __m2)
+{
+  return _mm_packs_pi32 (__m1, __m2);
+}
+
+/* Pack the four 16-bit values from M1 into the lower four 8-bit values of
+   the result, and the four 16-bit values from M2 into the upper four 8-bit
+   values of the result, all with unsigned saturation.  */
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_packs_pu16 (__m64 __m1, __m64 __m2)
+{
+  return (__m64) __builtin_ia32_packuswb ((__v4hi)__m1, (__v4hi)__m2);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_packuswb (__m64 __m1, __m64 __m2)
+{
+  return _mm_packs_pu16 (__m1, __m2);
+}
+
+/* Interleave the four 8-bit values from the high half of M1 with the four
+   8-bit values from the high half of M2.  */
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_unpackhi_pi8 (__m64 __m1, __m64 __m2)
+{
+  return (__m64) __builtin_ia32_punpckhbw ((__v8qi)__m1, (__v8qi)__m2);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_punpckhbw (__m64 __m1, __m64 __m2)
+{
+  return _mm_unpackhi_pi8 (__m1, __m2);
+}
+
+/* Interleave the two 16-bit values from the high half of M1 with the two
+   16-bit values from the high half of M2.  */
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_unpackhi_pi16 (__m64 __m1, __m64 __m2)
+{
+  return (__m64) __builtin_ia32_punpckhwd ((__v4hi)__m1, (__v4hi)__m2);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_punpckhwd (__m64 __m1, __m64 __m2)
+{
+  return _mm_unpackhi_pi16 (__m1, __m2);
+}
+
+/* Interleave the 32-bit value from the high half of M1 with the 32-bit
+   value from the high half of M2.  */
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_unpackhi_pi32 (__m64 __m1, __m64 __m2)
+{
+  return (__m64) __builtin_ia32_punpckhdq ((__v2si)__m1, (__v2si)__m2);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_punpckhdq (__m64 __m1, __m64 __m2)
+{
+  return _mm_unpackhi_pi32 (__m1, __m2);
+}
+
+/* Interleave the four 8-bit values from the low half of M1 with the four
+   8-bit values from the low half of M2.  */
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_unpacklo_pi8 (__m64 __m1, __m64 __m2)
+{
+  return (__m64) __builtin_ia32_punpcklbw ((__v8qi)__m1, (__v8qi)__m2);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_punpcklbw (__m64 __m1, __m64 __m2)
+{
+  return _mm_unpacklo_pi8 (__m1, __m2);
+}
+
+/* Interleave the two 16-bit values from the low half of M1 with the two
+   16-bit values from the low half of M2.  */
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_unpacklo_pi16 (__m64 __m1, __m64 __m2)
+{
+  return (__m64) __builtin_ia32_punpcklwd ((__v4hi)__m1, (__v4hi)__m2);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_punpcklwd (__m64 __m1, __m64 __m2)
+{
+  return _mm_unpacklo_pi16 (__m1, __m2);
+}
+
+/* Interleave the 32-bit value from the low half of M1 with the 32-bit
+   value from the low half of M2.  */
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_unpacklo_pi32 (__m64 __m1, __m64 __m2)
+{
+  return (__m64) __builtin_ia32_punpckldq ((__v2si)__m1, (__v2si)__m2);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_punpckldq (__m64 __m1, __m64 __m2)
+{
+  return _mm_unpacklo_pi32 (__m1, __m2);
+}
+
+/* Add the 8-bit values in M1 to the 8-bit values in M2.  */
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_add_pi8 (__m64 __m1, __m64 __m2)
+{
+  return (__m64) __builtin_ia32_paddb ((__v8qi)__m1, (__v8qi)__m2);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_paddb (__m64 __m1, __m64 __m2)
+{
+  return _mm_add_pi8 (__m1, __m2);
+}
+
+/* Add the 16-bit values in M1 to the 16-bit values in M2.  */
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_add_pi16 (__m64 __m1, __m64 __m2)
+{
+  return (__m64) __builtin_ia32_paddw ((__v4hi)__m1, (__v4hi)__m2);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_paddw (__m64 __m1, __m64 __m2)
+{
+  return _mm_add_pi16 (__m1, __m2);
+}
+
+/* Add the 32-bit values in M1 to the 32-bit values in M2.  */
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_add_pi32 (__m64 __m1, __m64 __m2)
+{
+  return (__m64) __builtin_ia32_paddd ((__v2si)__m1, (__v2si)__m2);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_paddd (__m64 __m1, __m64 __m2)
+{
+  return _mm_add_pi32 (__m1, __m2);
+}
+
+/* Add the 64-bit values in M1 to the 64-bit values in M2.  */
+#ifndef __SSE2__
+#pragma GCC push_options
+#pragma GCC target("sse2")
+#define __DISABLE_SSE2__
+#endif /* __SSE2__ */
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_add_si64 (__m64 __m1, __m64 __m2)
+{
+  return (__m64) __builtin_ia32_paddq ((__v1di)__m1, (__v1di)__m2);
+}
+#ifdef __DISABLE_SSE2__
+#undef __DISABLE_SSE2__
+#pragma GCC pop_options
+#endif /* __DISABLE_SSE2__ */
+
+/* Add the 8-bit values in M1 to the 8-bit values in M2 using signed
+   saturated arithmetic.  */
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_adds_pi8 (__m64 __m1, __m64 __m2)
+{
+  return (__m64) __builtin_ia32_paddsb ((__v8qi)__m1, (__v8qi)__m2);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_paddsb (__m64 __m1, __m64 __m2)
+{
+  return _mm_adds_pi8 (__m1, __m2);
+}
+
+/* Add the 16-bit values in M1 to the 16-bit values in M2 using signed
+   saturated arithmetic.  */
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_adds_pi16 (__m64 __m1, __m64 __m2)
+{
+  return (__m64) __builtin_ia32_paddsw ((__v4hi)__m1, (__v4hi)__m2);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_paddsw (__m64 __m1, __m64 __m2)
+{
+  return _mm_adds_pi16 (__m1, __m2);
+}
+
+/* Add the 8-bit values in M1 to the 8-bit values in M2 using unsigned
+   saturated arithmetic.  */
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_adds_pu8 (__m64 __m1, __m64 __m2)
+{
+  return (__m64) __builtin_ia32_paddusb ((__v8qi)__m1, (__v8qi)__m2);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_paddusb (__m64 __m1, __m64 __m2)
+{
+  return _mm_adds_pu8 (__m1, __m2);
+}
+
+/* Add the 16-bit values in M1 to the 16-bit values in M2 using unsigned
+   saturated arithmetic.  */
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_adds_pu16 (__m64 __m1, __m64 __m2)
+{
+  return (__m64) __builtin_ia32_paddusw ((__v4hi)__m1, (__v4hi)__m2);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_paddusw (__m64 __m1, __m64 __m2)
+{
+  return _mm_adds_pu16 (__m1, __m2);
+}
+
+/* Subtract the 8-bit values in M2 from the 8-bit values in M1.  */
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_sub_pi8 (__m64 __m1, __m64 __m2)
+{
+  return (__m64) __builtin_ia32_psubb ((__v8qi)__m1, (__v8qi)__m2);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_psubb (__m64 __m1, __m64 __m2)
+{
+  return _mm_sub_pi8 (__m1, __m2);
+}
+
+/* Subtract the 16-bit values in M2 from the 16-bit values in M1.  */
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_sub_pi16 (__m64 __m1, __m64 __m2)
+{
+  return (__m64) __builtin_ia32_psubw ((__v4hi)__m1, (__v4hi)__m2);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_psubw (__m64 __m1, __m64 __m2)
+{
+  return _mm_sub_pi16 (__m1, __m2);
+}
+
+/* Subtract the 32-bit values in M2 from the 32-bit values in M1.  */
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_sub_pi32 (__m64 __m1, __m64 __m2)
+{
+  return (__m64) __builtin_ia32_psubd ((__v2si)__m1, (__v2si)__m2);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_psubd (__m64 __m1, __m64 __m2)
+{
+  return _mm_sub_pi32 (__m1, __m2);
+}
+
+/* Add the 64-bit values in M1 to the 64-bit values in M2.  */
+#ifndef __SSE2__
+#pragma GCC push_options
+#pragma GCC target("sse2")
+#define __DISABLE_SSE2__
+#endif /* __SSE2__ */
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_sub_si64 (__m64 __m1, __m64 __m2)
+{
+  return (__m64) __builtin_ia32_psubq ((__v1di)__m1, (__v1di)__m2);
+}
+#ifdef __DISABLE_SSE2__
+#undef __DISABLE_SSE2__
+#pragma GCC pop_options
+#endif /* __DISABLE_SSE2__ */
+
+/* Subtract the 8-bit values in M2 from the 8-bit values in M1 using signed
+   saturating arithmetic.  */
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_subs_pi8 (__m64 __m1, __m64 __m2)
+{
+  return (__m64) __builtin_ia32_psubsb ((__v8qi)__m1, (__v8qi)__m2);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_psubsb (__m64 __m1, __m64 __m2)
+{
+  return _mm_subs_pi8 (__m1, __m2);
+}
+
+/* Subtract the 16-bit values in M2 from the 16-bit values in M1 using
+   signed saturating arithmetic.  */
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_subs_pi16 (__m64 __m1, __m64 __m2)
+{
+  return (__m64) __builtin_ia32_psubsw ((__v4hi)__m1, (__v4hi)__m2);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_psubsw (__m64 __m1, __m64 __m2)
+{
+  return _mm_subs_pi16 (__m1, __m2);
+}
+
+/* Subtract the 8-bit values in M2 from the 8-bit values in M1 using
+   unsigned saturating arithmetic.  */
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_subs_pu8 (__m64 __m1, __m64 __m2)
+{
+  return (__m64) __builtin_ia32_psubusb ((__v8qi)__m1, (__v8qi)__m2);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_psubusb (__m64 __m1, __m64 __m2)
+{
+  return _mm_subs_pu8 (__m1, __m2);
+}
+
+/* Subtract the 16-bit values in M2 from the 16-bit values in M1 using
+   unsigned saturating arithmetic.  */
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_subs_pu16 (__m64 __m1, __m64 __m2)
+{
+  return (__m64) __builtin_ia32_psubusw ((__v4hi)__m1, (__v4hi)__m2);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_psubusw (__m64 __m1, __m64 __m2)
+{
+  return _mm_subs_pu16 (__m1, __m2);
+}
+
+/* Multiply four 16-bit values in M1 by four 16-bit values in M2 producing
+   four 32-bit intermediate results, which are then summed by pairs to
+   produce two 32-bit results.  */
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_madd_pi16 (__m64 __m1, __m64 __m2)
+{
+  return (__m64) __builtin_ia32_pmaddwd ((__v4hi)__m1, (__v4hi)__m2);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_pmaddwd (__m64 __m1, __m64 __m2)
+{
+  return _mm_madd_pi16 (__m1, __m2);
+}
+
+/* Multiply four signed 16-bit values in M1 by four signed 16-bit values in
+   M2 and produce the high 16 bits of the 32-bit results.  */
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mulhi_pi16 (__m64 __m1, __m64 __m2)
+{
+  return (__m64) __builtin_ia32_pmulhw ((__v4hi)__m1, (__v4hi)__m2);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_pmulhw (__m64 __m1, __m64 __m2)
+{
+  return _mm_mulhi_pi16 (__m1, __m2);
+}
+
+/* Multiply four 16-bit values in M1 by four 16-bit values in M2 and produce
+   the low 16 bits of the results.  */
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mullo_pi16 (__m64 __m1, __m64 __m2)
+{
+  return (__m64) __builtin_ia32_pmullw ((__v4hi)__m1, (__v4hi)__m2);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_pmullw (__m64 __m1, __m64 __m2)
+{
+  return _mm_mullo_pi16 (__m1, __m2);
+}
+
+/* Shift four 16-bit values in M left by COUNT.  */
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_sll_pi16 (__m64 __m, __m64 __count)
+{
+  return (__m64) __builtin_ia32_psllw ((__v4hi)__m, (__v4hi)__count);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_psllw (__m64 __m, __m64 __count)
+{
+  return _mm_sll_pi16 (__m, __count);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_slli_pi16 (__m64 __m, int __count)
+{
+  return (__m64) __builtin_ia32_psllwi ((__v4hi)__m, __count);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_psllwi (__m64 __m, int __count)
+{
+  return _mm_slli_pi16 (__m, __count);
+}
+
+/* Shift two 32-bit values in M left by COUNT.  */
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_sll_pi32 (__m64 __m, __m64 __count)
+{
+  return (__m64) __builtin_ia32_pslld ((__v2si)__m, (__v2si)__count);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_pslld (__m64 __m, __m64 __count)
+{
+  return _mm_sll_pi32 (__m, __count);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_slli_pi32 (__m64 __m, int __count)
+{
+  return (__m64) __builtin_ia32_pslldi ((__v2si)__m, __count);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_pslldi (__m64 __m, int __count)
+{
+  return _mm_slli_pi32 (__m, __count);
+}
+
+/* Shift the 64-bit value in M left by COUNT.  */
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_sll_si64 (__m64 __m, __m64 __count)
+{
+  return (__m64) __builtin_ia32_psllq ((__v1di)__m, (__v1di)__count);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_psllq (__m64 __m, __m64 __count)
+{
+  return _mm_sll_si64 (__m, __count);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_slli_si64 (__m64 __m, int __count)
+{
+  return (__m64) __builtin_ia32_psllqi ((__v1di)__m, __count);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_psllqi (__m64 __m, int __count)
+{
+  return _mm_slli_si64 (__m, __count);
+}
+
+/* Shift four 16-bit values in M right by COUNT; shift in the sign bit.  */
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_sra_pi16 (__m64 __m, __m64 __count)
+{
+  return (__m64) __builtin_ia32_psraw ((__v4hi)__m, (__v4hi)__count);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_psraw (__m64 __m, __m64 __count)
+{
+  return _mm_sra_pi16 (__m, __count);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_srai_pi16 (__m64 __m, int __count)
+{
+  return (__m64) __builtin_ia32_psrawi ((__v4hi)__m, __count);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_psrawi (__m64 __m, int __count)
+{
+  return _mm_srai_pi16 (__m, __count);
+}
+
+/* Shift two 32-bit values in M right by COUNT; shift in the sign bit.  */
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_sra_pi32 (__m64 __m, __m64 __count)
+{
+  return (__m64) __builtin_ia32_psrad ((__v2si)__m, (__v2si)__count);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_psrad (__m64 __m, __m64 __count)
+{
+  return _mm_sra_pi32 (__m, __count);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_srai_pi32 (__m64 __m, int __count)
+{
+  return (__m64) __builtin_ia32_psradi ((__v2si)__m, __count);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_psradi (__m64 __m, int __count)
+{
+  return _mm_srai_pi32 (__m, __count);
+}
+
+/* Shift four 16-bit values in M right by COUNT; shift in zeros.  */
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_srl_pi16 (__m64 __m, __m64 __count)
+{
+  return (__m64) __builtin_ia32_psrlw ((__v4hi)__m, (__v4hi)__count);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_psrlw (__m64 __m, __m64 __count)
+{
+  return _mm_srl_pi16 (__m, __count);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_srli_pi16 (__m64 __m, int __count)
+{
+  return (__m64) __builtin_ia32_psrlwi ((__v4hi)__m, __count);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_psrlwi (__m64 __m, int __count)
+{
+  return _mm_srli_pi16 (__m, __count);
+}
+
+/* Shift two 32-bit values in M right by COUNT; shift in zeros.  */
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_srl_pi32 (__m64 __m, __m64 __count)
+{
+  return (__m64) __builtin_ia32_psrld ((__v2si)__m, (__v2si)__count);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_psrld (__m64 __m, __m64 __count)
+{
+  return _mm_srl_pi32 (__m, __count);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_srli_pi32 (__m64 __m, int __count)
+{
+  return (__m64) __builtin_ia32_psrldi ((__v2si)__m, __count);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_psrldi (__m64 __m, int __count)
+{
+  return _mm_srli_pi32 (__m, __count);
+}
+
+/* Shift the 64-bit value in M left by COUNT; shift in zeros.  */
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_srl_si64 (__m64 __m, __m64 __count)
+{
+  return (__m64) __builtin_ia32_psrlq ((__v1di)__m, (__v1di)__count);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_psrlq (__m64 __m, __m64 __count)
+{
+  return _mm_srl_si64 (__m, __count);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_srli_si64 (__m64 __m, int __count)
+{
+  return (__m64) __builtin_ia32_psrlqi ((__v1di)__m, __count);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_psrlqi (__m64 __m, int __count)
+{
+  return _mm_srli_si64 (__m, __count);
+}
+
+/* Bit-wise AND the 64-bit values in M1 and M2.  */
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_and_si64 (__m64 __m1, __m64 __m2)
+{
+  return __builtin_ia32_pand (__m1, __m2);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_pand (__m64 __m1, __m64 __m2)
+{
+  return _mm_and_si64 (__m1, __m2);
+}
+
+/* Bit-wise complement the 64-bit value in M1 and bit-wise AND it with the
+   64-bit value in M2.  */
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_andnot_si64 (__m64 __m1, __m64 __m2)
+{
+  return __builtin_ia32_pandn (__m1, __m2);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_pandn (__m64 __m1, __m64 __m2)
+{
+  return _mm_andnot_si64 (__m1, __m2);
+}
+
+/* Bit-wise inclusive OR the 64-bit values in M1 and M2.  */
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_or_si64 (__m64 __m1, __m64 __m2)
+{
+  return __builtin_ia32_por (__m1, __m2);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_por (__m64 __m1, __m64 __m2)
+{
+  return _mm_or_si64 (__m1, __m2);
+}
+
+/* Bit-wise exclusive OR the 64-bit values in M1 and M2.  */
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_xor_si64 (__m64 __m1, __m64 __m2)
+{
+  return __builtin_ia32_pxor (__m1, __m2);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_pxor (__m64 __m1, __m64 __m2)
+{
+  return _mm_xor_si64 (__m1, __m2);
+}
+
+/* Compare eight 8-bit values.  The result of the comparison is 0xFF if the
+   test is true and zero if false.  */
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpeq_pi8 (__m64 __m1, __m64 __m2)
+{
+  return (__m64) __builtin_ia32_pcmpeqb ((__v8qi)__m1, (__v8qi)__m2);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_pcmpeqb (__m64 __m1, __m64 __m2)
+{
+  return _mm_cmpeq_pi8 (__m1, __m2);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpgt_pi8 (__m64 __m1, __m64 __m2)
+{
+  return (__m64) __builtin_ia32_pcmpgtb ((__v8qi)__m1, (__v8qi)__m2);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_pcmpgtb (__m64 __m1, __m64 __m2)
+{
+  return _mm_cmpgt_pi8 (__m1, __m2);
+}
+
+/* Compare four 16-bit values.  The result of the comparison is 0xFFFF if
+   the test is true and zero if false.  */
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpeq_pi16 (__m64 __m1, __m64 __m2)
+{
+  return (__m64) __builtin_ia32_pcmpeqw ((__v4hi)__m1, (__v4hi)__m2);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_pcmpeqw (__m64 __m1, __m64 __m2)
+{
+  return _mm_cmpeq_pi16 (__m1, __m2);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpgt_pi16 (__m64 __m1, __m64 __m2)
+{
+  return (__m64) __builtin_ia32_pcmpgtw ((__v4hi)__m1, (__v4hi)__m2);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_pcmpgtw (__m64 __m1, __m64 __m2)
+{
+  return _mm_cmpgt_pi16 (__m1, __m2);
+}
+
+/* Compare two 32-bit values.  The result of the comparison is 0xFFFFFFFF if
+   the test is true and zero if false.  */
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpeq_pi32 (__m64 __m1, __m64 __m2)
+{
+  return (__m64) __builtin_ia32_pcmpeqd ((__v2si)__m1, (__v2si)__m2);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_pcmpeqd (__m64 __m1, __m64 __m2)
+{
+  return _mm_cmpeq_pi32 (__m1, __m2);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpgt_pi32 (__m64 __m1, __m64 __m2)
+{
+  return (__m64) __builtin_ia32_pcmpgtd ((__v2si)__m1, (__v2si)__m2);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_pcmpgtd (__m64 __m1, __m64 __m2)
+{
+  return _mm_cmpgt_pi32 (__m1, __m2);
+}
+
+/* Creates a 64-bit zero.  */
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_setzero_si64 (void)
+{
+  return (__m64)0LL;
+}
+
+/* Creates a vector of two 32-bit values; I0 is least significant.  */
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_set_pi32 (int __i1, int __i0)
+{
+  return (__m64) __builtin_ia32_vec_init_v2si (__i0, __i1);
+}
+
+/* Creates a vector of four 16-bit values; W0 is least significant.  */
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_set_pi16 (short __w3, short __w2, short __w1, short __w0)
+{
+  return (__m64) __builtin_ia32_vec_init_v4hi (__w0, __w1, __w2, __w3);
+}
+
+/* Creates a vector of eight 8-bit values; B0 is least significant.  */
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_set_pi8 (char __b7, char __b6, char __b5, char __b4,
+	     char __b3, char __b2, char __b1, char __b0)
+{
+  return (__m64) __builtin_ia32_vec_init_v8qi (__b0, __b1, __b2, __b3,
+					       __b4, __b5, __b6, __b7);
+}
+
+/* Similar, but with the arguments in reverse order.  */
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_setr_pi32 (int __i0, int __i1)
+{
+  return _mm_set_pi32 (__i1, __i0);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_setr_pi16 (short __w0, short __w1, short __w2, short __w3)
+{
+  return _mm_set_pi16 (__w3, __w2, __w1, __w0);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_setr_pi8 (char __b0, char __b1, char __b2, char __b3,
+	      char __b4, char __b5, char __b6, char __b7)
+{
+  return _mm_set_pi8 (__b7, __b6, __b5, __b4, __b3, __b2, __b1, __b0);
+}
+
+/* Creates a vector of two 32-bit values, both elements containing I.  */
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_set1_pi32 (int __i)
+{
+  return _mm_set_pi32 (__i, __i);
+}
+
+/* Creates a vector of four 16-bit values, all elements containing W.  */
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_set1_pi16 (short __w)
+{
+  return _mm_set_pi16 (__w, __w, __w, __w);
+}
+
+/* Creates a vector of eight 8-bit values, all elements containing B.  */
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_set1_pi8 (char __b)
+{
+  return _mm_set_pi8 (__b, __b, __b, __b, __b, __b, __b, __b);
+}
+#ifdef __DISABLE_MMX__
+#undef __DISABLE_MMX__
+#pragma GCC pop_options
+#endif /* __DISABLE_MMX__ */
+
+#endif /* _MMINTRIN_H_INCLUDED */
Index: Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/mwaitxintrin.h
===================================================================
--- Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/mwaitxintrin.h	(revision 1046)
+++ Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/mwaitxintrin.h	(revision 1046)
@@ -0,0 +1,50 @@
+/* Copyright (C) 2012-2015 Free Software Foundation, Inc.
+
+   This file is part of GCC.
+
+   GCC is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
+
+   GCC is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   Under Section 7 of GPL version 3, you are granted additional
+   permissions described in the GCC Runtime Library Exception, version
+   3.1, as published by the Free Software Foundation.
+
+   You should have received a copy of the GNU General Public License and
+   a copy of the GCC Runtime Library Exception along with this program;
+   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _MWAITXINTRIN_H_INCLUDED
+#define _MWAITXINTRIN_H_INCLUDED
+
+#ifndef __MWAITX__
+#pragma GCC push_options
+#pragma GCC target("mwaitx")
+#define __DISABLE_MWAITX__
+#endif /* __MWAITX__ */
+
+extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_monitorx (void const * __P, unsigned int __E, unsigned int __H)
+{
+  __builtin_ia32_monitorx (__P, __E, __H);
+}
+
+extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mwaitx (unsigned int __E, unsigned int __H, unsigned int __C)
+{
+  __builtin_ia32_mwaitx (__E, __H, __C);
+}
+
+#ifdef __DISABLE_MWAITX__
+#undef __DISABLE_MWAITX__
+#pragma GCC pop_options
+#endif /* __DISABLE_MWAITX__ */
+
+#endif /* _MWAITXINTRIN_H_INCLUDED */
Index: Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/nmmintrin.h
===================================================================
--- Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/nmmintrin.h	(revision 1046)
+++ Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/nmmintrin.h	(revision 1046)
@@ -0,0 +1,33 @@
+/* Copyright (C) 2007-2015 Free Software Foundation, Inc.
+
+   This file is part of GCC.
+
+   GCC is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
+
+   GCC is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   Under Section 7 of GPL version 3, you are granted additional
+   permissions described in the GCC Runtime Library Exception, version
+   3.1, as published by the Free Software Foundation.
+
+   You should have received a copy of the GNU General Public License and
+   a copy of the GCC Runtime Library Exception along with this program;
+   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+/* Implemented from the specification included in the Intel C++ Compiler
+   User Guide and Reference, version 10.0.  */
+
+#ifndef _NMMINTRIN_H_INCLUDED
+#define _NMMINTRIN_H_INCLUDED
+
+/* We just include SSE4.1 header file.  */
+#include <smmintrin.h>
+
+#endif /* _NMMINTRIN_H_INCLUDED */
Index: Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/omp.h
===================================================================
--- Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/omp.h	(revision 1046)
+++ Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/omp.h	(revision 1046)
@@ -0,0 +1,128 @@
+/* Copyright (C) 2005-2015 Free Software Foundation, Inc.
+   Contributed by Richard Henderson <rth@redhat.com>.
+
+   This file is part of the GNU Offloading and Multi Processing Library
+   (libgomp).
+
+   Libgomp is free software; you can redistribute it and/or modify it
+   under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
+
+   Libgomp is distributed in the hope that it will be useful, but WITHOUT ANY
+   WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+   FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+   more details.
+
+   Under Section 7 of GPL version 3, you are granted additional
+   permissions described in the GCC Runtime Library Exception, version
+   3.1, as published by the Free Software Foundation.
+
+   You should have received a copy of the GNU General Public License and
+   a copy of the GCC Runtime Library Exception along with this program;
+   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _OMP_H
+#define _OMP_H 1
+
+#ifndef _LIBGOMP_OMP_LOCK_DEFINED
+#define _LIBGOMP_OMP_LOCK_DEFINED 1
+/* These two structures get edited by the libgomp build process to 
+   reflect the shape of the two types.  Their internals are private
+   to the library.  */
+
+typedef struct
+{
+  unsigned char _x[4] 
+    __attribute__((__aligned__(4)));
+} omp_lock_t;
+
+typedef struct
+{
+  unsigned char _x[12] 
+    __attribute__((__aligned__(4)));
+} omp_nest_lock_t;
+#endif
+
+typedef enum omp_sched_t
+{
+  omp_sched_static = 1,
+  omp_sched_dynamic = 2,
+  omp_sched_guided = 3,
+  omp_sched_auto = 4
+} omp_sched_t;
+
+typedef enum omp_proc_bind_t
+{
+  omp_proc_bind_false = 0,
+  omp_proc_bind_true = 1,
+  omp_proc_bind_master = 2,
+  omp_proc_bind_close = 3,
+  omp_proc_bind_spread = 4
+} omp_proc_bind_t;
+
+#ifdef __cplusplus
+extern "C" {
+# define __GOMP_NOTHROW throw ()
+#else
+# define __GOMP_NOTHROW __attribute__((__nothrow__))
+#endif
+
+extern void omp_set_num_threads (int) __GOMP_NOTHROW;
+extern int omp_get_num_threads (void) __GOMP_NOTHROW;
+extern int omp_get_max_threads (void) __GOMP_NOTHROW;
+extern int omp_get_thread_num (void) __GOMP_NOTHROW;
+extern int omp_get_num_procs (void) __GOMP_NOTHROW;
+
+extern int omp_in_parallel (void) __GOMP_NOTHROW;
+
+extern void omp_set_dynamic (int) __GOMP_NOTHROW;
+extern int omp_get_dynamic (void) __GOMP_NOTHROW;
+
+extern void omp_set_nested (int) __GOMP_NOTHROW;
+extern int omp_get_nested (void) __GOMP_NOTHROW;
+
+extern void omp_init_lock (omp_lock_t *) __GOMP_NOTHROW;
+extern void omp_destroy_lock (omp_lock_t *) __GOMP_NOTHROW;
+extern void omp_set_lock (omp_lock_t *) __GOMP_NOTHROW;
+extern void omp_unset_lock (omp_lock_t *) __GOMP_NOTHROW;
+extern int omp_test_lock (omp_lock_t *) __GOMP_NOTHROW;
+
+extern void omp_init_nest_lock (omp_nest_lock_t *) __GOMP_NOTHROW;
+extern void omp_destroy_nest_lock (omp_nest_lock_t *) __GOMP_NOTHROW;
+extern void omp_set_nest_lock (omp_nest_lock_t *) __GOMP_NOTHROW;
+extern void omp_unset_nest_lock (omp_nest_lock_t *) __GOMP_NOTHROW;
+extern int omp_test_nest_lock (omp_nest_lock_t *) __GOMP_NOTHROW;
+
+extern double omp_get_wtime (void) __GOMP_NOTHROW;
+extern double omp_get_wtick (void) __GOMP_NOTHROW;
+
+extern void omp_set_schedule (omp_sched_t, int) __GOMP_NOTHROW;
+extern void omp_get_schedule (omp_sched_t *, int *) __GOMP_NOTHROW;
+extern int omp_get_thread_limit (void) __GOMP_NOTHROW;
+extern void omp_set_max_active_levels (int) __GOMP_NOTHROW;
+extern int omp_get_max_active_levels (void) __GOMP_NOTHROW;
+extern int omp_get_level (void) __GOMP_NOTHROW;
+extern int omp_get_ancestor_thread_num (int) __GOMP_NOTHROW;
+extern int omp_get_team_size (int) __GOMP_NOTHROW;
+extern int omp_get_active_level (void) __GOMP_NOTHROW;
+
+extern int omp_in_final (void) __GOMP_NOTHROW;
+
+extern int omp_get_cancellation (void) __GOMP_NOTHROW;
+extern omp_proc_bind_t omp_get_proc_bind (void) __GOMP_NOTHROW;
+
+extern void omp_set_default_device (int) __GOMP_NOTHROW;
+extern int omp_get_default_device (void) __GOMP_NOTHROW;
+extern int omp_get_num_devices (void) __GOMP_NOTHROW;
+extern int omp_get_num_teams (void) __GOMP_NOTHROW;
+extern int omp_get_team_num (void) __GOMP_NOTHROW;
+
+extern int omp_is_initial_device (void) __GOMP_NOTHROW;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _OMP_H */
Index: Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/openacc.h
===================================================================
--- Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/openacc.h	(revision 1046)
+++ Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/openacc.h	(revision 1046)
@@ -0,0 +1,118 @@
+/* OpenACC Runtime Library User-facing Declarations
+
+   Copyright (C) 2013-2015 Free Software Foundation, Inc.
+
+   Contributed by Mentor Embedded.
+
+   This file is part of the GNU Offloading and Multi Processing Library
+   (libgomp).
+
+   Libgomp is free software; you can redistribute it and/or modify it
+   under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
+
+   Libgomp is distributed in the hope that it will be useful, but WITHOUT ANY
+   WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+   FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+   more details.
+
+   Under Section 7 of GPL version 3, you are granted additional
+   permissions described in the GCC Runtime Library Exception, version
+   3.1, as published by the Free Software Foundation.
+
+   You should have received a copy of the GNU General Public License and
+   a copy of the GCC Runtime Library Exception along with this program;
+   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _OPENACC_H
+#define _OPENACC_H 1
+
+/* The OpenACC standard is silent on whether or not including <openacc.h>
+   might or must not include other header files.  We chose to include
+   some.  */
+#include <stddef.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#if __cplusplus >= 201103
+# define __GOACC_NOTHROW noexcept ()
+#elif __cplusplus
+# define __GOACC_NOTHROW throw ()
+#else /* Not C++ */
+# define __GOACC_NOTHROW __attribute__ ((__nothrow__))
+#endif
+
+/* Types */
+typedef enum acc_device_t
+  {
+    /* Keep in sync with include/gomp-constants.h.  */
+    acc_device_none = 0,
+    acc_device_default = 1,
+    acc_device_host = 2,
+    acc_device_host_nonshm = 3,
+    acc_device_not_host = 4,
+    acc_device_nvidia = 5,
+    _ACC_device_hwm
+  } acc_device_t;
+
+typedef enum acc_async_t
+  {
+    /* Keep in sync with include/gomp-constants.h.  */
+    acc_async_noval = -1,
+    acc_async_sync  = -2
+  } acc_async_t;
+
+int acc_get_num_devices (acc_device_t) __GOACC_NOTHROW;
+void acc_set_device_type (acc_device_t) __GOACC_NOTHROW;
+acc_device_t acc_get_device_type (void) __GOACC_NOTHROW;
+void acc_set_device_num (int, acc_device_t) __GOACC_NOTHROW;
+int acc_get_device_num (acc_device_t) __GOACC_NOTHROW;
+int acc_async_test (int) __GOACC_NOTHROW;
+int acc_async_test_all (void) __GOACC_NOTHROW;
+void acc_wait (int) __GOACC_NOTHROW;
+void acc_wait_async (int, int) __GOACC_NOTHROW;
+void acc_wait_all (void) __GOACC_NOTHROW;
+void acc_wait_all_async (int) __GOACC_NOTHROW;
+void acc_init (acc_device_t) __GOACC_NOTHROW;
+void acc_shutdown (acc_device_t) __GOACC_NOTHROW;
+int acc_on_device (acc_device_t) __GOACC_NOTHROW;
+void *acc_malloc (size_t) __GOACC_NOTHROW;
+void acc_free (void *) __GOACC_NOTHROW;
+/* Some of these would be more correct with const qualifiers, but
+   the standard specifies otherwise.  */
+void *acc_copyin (void *, size_t) __GOACC_NOTHROW;
+void *acc_present_or_copyin (void *, size_t) __GOACC_NOTHROW;
+void *acc_create (void *, size_t) __GOACC_NOTHROW;
+void *acc_present_or_create (void *, size_t) __GOACC_NOTHROW;
+void acc_copyout (void *, size_t) __GOACC_NOTHROW;
+void acc_delete (void *, size_t) __GOACC_NOTHROW;
+void acc_update_device (void *, size_t) __GOACC_NOTHROW;
+void acc_update_self (void *, size_t) __GOACC_NOTHROW;
+void acc_map_data (void *, void *, size_t) __GOACC_NOTHROW;
+void acc_unmap_data (void *) __GOACC_NOTHROW;
+void *acc_deviceptr (void *) __GOACC_NOTHROW;
+void *acc_hostptr (void *) __GOACC_NOTHROW;
+int acc_is_present (void *, size_t) __GOACC_NOTHROW;
+void acc_memcpy_to_device (void *, void *, size_t) __GOACC_NOTHROW;
+void acc_memcpy_from_device (void *, void *, size_t) __GOACC_NOTHROW;
+
+/* Old names.  OpenACC does not specify whether these can or must
+   not be macros, inlines or aliases for the new names.  */
+#define acc_pcreate acc_present_or_create
+#define acc_pcopyin acc_present_or_copyin
+
+/* CUDA-specific routines.  */
+void *acc_get_current_cuda_device (void) __GOACC_NOTHROW;
+void *acc_get_current_cuda_context (void) __GOACC_NOTHROW;
+void *acc_get_cuda_stream (int) __GOACC_NOTHROW;
+int acc_set_cuda_stream (int, void *) __GOACC_NOTHROW;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _OPENACC_H */
Index: Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/pcommitintrin.h
===================================================================
--- Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/pcommitintrin.h	(revision 1046)
+++ Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/pcommitintrin.h	(revision 1046)
@@ -0,0 +1,49 @@
+/* Copyright (C) 2013-2015 Free Software Foundation, Inc.
+
+   This file is part of GCC.
+
+   GCC is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
+
+   GCC is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   Under Section 7 of GPL version 3, you are granted additional
+   permissions described in the GCC Runtime Library Exception, version
+   3.1, as published by the Free Software Foundation.
+
+   You should have received a copy of the GNU General Public License and
+   a copy of the GCC Runtime Library Exception along with this program;
+   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#if !defined _X86INTRIN_H_INCLUDED
+# error "Never use <pcommitintrin.h> directly; include <x86intrin.h> instead."
+#endif
+
+#ifndef _PCOMMITINTRIN_H_INCLUDED
+#define _PCOMMITINTRIN_H_INCLUDED
+
+#ifndef __PCOMMIT__
+#pragma GCC push_options
+#pragma GCC target("pcommit")
+#define __DISABLE_PCOMMIT__
+#endif /* __PCOMMIT__ */
+
+extern __inline void
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_pcommit (void)
+{
+  __builtin_ia32_pcommit ();
+}
+
+#ifdef __DISABLE_PCOMMIT__
+#undef __DISABLE_PCOMMIT__
+#pragma GCC pop_options
+#endif /* __DISABLE_PCOMMIT__ */
+
+#endif /* _PCOMMITINTRIN_H_INCLUDED */
Index: Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/pmmintrin.h
===================================================================
--- Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/pmmintrin.h	(revision 1046)
+++ Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/pmmintrin.h	(revision 1046)
@@ -0,0 +1,132 @@
+/* Copyright (C) 2003-2015 Free Software Foundation, Inc.
+
+   This file is part of GCC.
+
+   GCC is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
+
+   GCC is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   Under Section 7 of GPL version 3, you are granted additional
+   permissions described in the GCC Runtime Library Exception, version
+   3.1, as published by the Free Software Foundation.
+
+   You should have received a copy of the GNU General Public License and
+   a copy of the GCC Runtime Library Exception along with this program;
+   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+/* Implemented from the specification included in the Intel C++ Compiler
+   User Guide and Reference, version 9.0.  */
+
+#ifndef _PMMINTRIN_H_INCLUDED
+#define _PMMINTRIN_H_INCLUDED
+
+/* We need definitions from the SSE2 and SSE header files*/
+#include <emmintrin.h>
+
+#ifndef __SSE3__
+#pragma GCC push_options
+#pragma GCC target("sse3")
+#define __DISABLE_SSE3__
+#endif /* __SSE3__ */
+
+/* Additional bits in the MXCSR.  */
+#define _MM_DENORMALS_ZERO_MASK		0x0040
+#define _MM_DENORMALS_ZERO_ON		0x0040
+#define _MM_DENORMALS_ZERO_OFF		0x0000
+
+#define _MM_SET_DENORMALS_ZERO_MODE(mode) \
+  _mm_setcsr ((_mm_getcsr () & ~_MM_DENORMALS_ZERO_MASK) | (mode))
+#define _MM_GET_DENORMALS_ZERO_MODE() \
+  (_mm_getcsr() & _MM_DENORMALS_ZERO_MASK)
+
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_addsub_ps (__m128 __X, __m128 __Y)
+{
+  return (__m128) __builtin_ia32_addsubps ((__v4sf)__X, (__v4sf)__Y);
+}
+
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_hadd_ps (__m128 __X, __m128 __Y)
+{
+  return (__m128) __builtin_ia32_haddps ((__v4sf)__X, (__v4sf)__Y);
+}
+
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_hsub_ps (__m128 __X, __m128 __Y)
+{
+  return (__m128) __builtin_ia32_hsubps ((__v4sf)__X, (__v4sf)__Y);
+}
+
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_movehdup_ps (__m128 __X)
+{
+  return (__m128) __builtin_ia32_movshdup ((__v4sf)__X);
+}
+
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_moveldup_ps (__m128 __X)
+{
+  return (__m128) __builtin_ia32_movsldup ((__v4sf)__X);
+}
+
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_addsub_pd (__m128d __X, __m128d __Y)
+{
+  return (__m128d) __builtin_ia32_addsubpd ((__v2df)__X, (__v2df)__Y);
+}
+
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_hadd_pd (__m128d __X, __m128d __Y)
+{
+  return (__m128d) __builtin_ia32_haddpd ((__v2df)__X, (__v2df)__Y);
+}
+
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_hsub_pd (__m128d __X, __m128d __Y)
+{
+  return (__m128d) __builtin_ia32_hsubpd ((__v2df)__X, (__v2df)__Y);
+}
+
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_loaddup_pd (double const *__P)
+{
+  return _mm_load1_pd (__P);
+}
+
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_movedup_pd (__m128d __X)
+{
+  return _mm_shuffle_pd (__X, __X, _MM_SHUFFLE2 (0,0));
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_lddqu_si128 (__m128i const *__P)
+{
+  return (__m128i) __builtin_ia32_lddqu ((char const *)__P);
+}
+
+extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_monitor (void const * __P, unsigned int __E, unsigned int __H)
+{
+  __builtin_ia32_monitor (__P, __E, __H);
+}
+
+extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mwait (unsigned int __E, unsigned int __H)
+{
+  __builtin_ia32_mwait (__E, __H);
+}
+
+#ifdef __DISABLE_SSE3__
+#undef __DISABLE_SSE3__
+#pragma GCC pop_options
+#endif /* __DISABLE_SSE3__ */
+
+#endif /* _PMMINTRIN_H_INCLUDED */
Index: Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/popcntintrin.h
===================================================================
--- Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/popcntintrin.h	(revision 1046)
+++ Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/popcntintrin.h	(revision 1046)
@@ -0,0 +1,53 @@
+/* Copyright (C) 2009-2015 Free Software Foundation, Inc.
+
+   This file is part of GCC.
+
+   GCC is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
+
+   GCC is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   Under Section 7 of GPL version 3, you are granted additional
+   permissions described in the GCC Runtime Library Exception, version
+   3.1, as published by the Free Software Foundation.
+
+   You should have received a copy of the GNU General Public License and
+   a copy of the GCC Runtime Library Exception along with this program;
+   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _POPCNTINTRIN_H_INCLUDED
+#define _POPCNTINTRIN_H_INCLUDED
+
+#ifndef __POPCNT__
+#pragma GCC push_options
+#pragma GCC target("popcnt")
+#define __DISABLE_POPCNT__
+#endif /* __POPCNT__ */
+
+/* Calculate a number of bits set to 1.  */
+extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_popcnt_u32 (unsigned int __X)
+{
+  return __builtin_popcount (__X);
+}
+
+#ifdef __x86_64__
+extern __inline long long  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_popcnt_u64 (unsigned long long __X)
+{
+  return __builtin_popcountll (__X);
+}
+#endif
+
+#ifdef __DISABLE_POPCNT__
+#undef __DISABLE_POPCNT__
+#pragma GCC pop_options
+#endif  /* __DISABLE_POPCNT__ */
+
+#endif /* _POPCNTINTRIN_H_INCLUDED */
Index: Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/prfchwintrin.h
===================================================================
--- Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/prfchwintrin.h	(revision 1046)
+++ Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/prfchwintrin.h	(revision 1046)
@@ -0,0 +1,37 @@
+/* Copyright (C) 2012-2015 Free Software Foundation, Inc.
+
+   This file is part of GCC.
+
+   GCC is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
+
+   GCC is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   Under Section 7 of GPL version 3, you are granted additional
+   permissions described in the GCC Runtime Library Exception, version
+   3.1, as published by the Free Software Foundation.
+
+   You should have received a copy of the GNU General Public License and
+   a copy of the GCC Runtime Library Exception along with this program;
+   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#if !defined _X86INTRIN_H_INCLUDED && !defined _MM3DNOW_H_INCLUDED
+# error "Never use <prfchwintrin.h> directly; include <x86intrin.h> or <mm3dnow.h> instead."
+#endif
+
+#ifndef _PRFCHWINTRIN_H_INCLUDED
+#define _PRFCHWINTRIN_H_INCLUDED
+
+extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_prefetchw (void *__P)
+{
+  __builtin_prefetch (__P, 1, 3 /* _MM_HINT_T0 */);
+}
+
+#endif /* _PRFCHWINTRIN_H_INCLUDED */
Index: Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/quadmath.h
===================================================================
--- Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/quadmath.h	(revision 1046)
+++ Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/quadmath.h	(revision 1046)
@@ -0,0 +1,200 @@
+/* GCC Quad-Precision Math Library
+   Copyright (C) 2010, 2011 Free Software Foundation, Inc.
+   Written by Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
+
+This file is part of the libquadmath library.
+Libquadmath is free software; you can redistribute it and/or
+modify it under the terms of the GNU Library General Public
+License as published by the Free Software Foundation; either
+version 2 of the License, or (at your option) any later version.
+
+Libquadmath is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Library General Public License for more details.
+
+You should have received a copy of the GNU Library General Public
+License along with libquadmath; see the file COPYING.LIB.  If
+not, write to the Free Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
+Boston, MA 02110-1301, USA.  */
+
+#ifndef QUADMATH_H
+#define QUADMATH_H
+
+#include <stdlib.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Define the complex type corresponding to __float128
+   ("_Complex __float128" is not allowed) */
+typedef _Complex float __attribute__((mode(TC))) __complex128;
+
+#ifdef __cplusplus
+# define __quadmath_throw throw ()
+# define __quadmath_nth(fct) fct throw ()
+#else
+# define __quadmath_throw __attribute__((__nothrow__))
+# define __quadmath_nth(fct) __attribute__((__nothrow__)) fct
+#endif
+
+/* Prototypes for real functions */
+extern __float128 acosq (__float128) __quadmath_throw;
+extern __float128 acoshq (__float128) __quadmath_throw;
+extern __float128 asinq (__float128) __quadmath_throw;
+extern __float128 asinhq (__float128) __quadmath_throw;
+extern __float128 atanq (__float128) __quadmath_throw;
+extern __float128 atanhq (__float128) __quadmath_throw;
+extern __float128 atan2q (__float128, __float128) __quadmath_throw;
+extern __float128 cbrtq (__float128) __quadmath_throw;
+extern __float128 ceilq (__float128) __quadmath_throw;
+extern __float128 copysignq (__float128, __float128) __quadmath_throw;
+extern __float128 coshq (__float128) __quadmath_throw;
+extern __float128 cosq (__float128) __quadmath_throw;
+extern __float128 erfq (__float128) __quadmath_throw;
+extern __float128 erfcq (__float128) __quadmath_throw;
+extern __float128 expq (__float128) __quadmath_throw;
+extern __float128 expm1q (__float128) __quadmath_throw;
+extern __float128 fabsq (__float128) __quadmath_throw;
+extern __float128 fdimq (__float128, __float128) __quadmath_throw;
+extern int finiteq (__float128) __quadmath_throw;
+extern __float128 floorq (__float128) __quadmath_throw;
+extern __float128 fmaq (__float128, __float128, __float128) __quadmath_throw;
+extern __float128 fmaxq (__float128, __float128) __quadmath_throw;
+extern __float128 fminq (__float128, __float128) __quadmath_throw;
+extern __float128 fmodq (__float128, __float128) __quadmath_throw;
+extern __float128 frexpq (__float128, int *) __quadmath_throw;
+extern __float128 hypotq (__float128, __float128) __quadmath_throw;
+extern int isinfq (__float128) __quadmath_throw;
+extern int ilogbq (__float128) __quadmath_throw;
+extern int isnanq (__float128) __quadmath_throw;
+extern __float128 j0q (__float128) __quadmath_throw;
+extern __float128 j1q (__float128) __quadmath_throw;
+extern __float128 jnq (int, __float128) __quadmath_throw;
+extern __float128 ldexpq (__float128, int) __quadmath_throw;
+extern __float128 lgammaq (__float128) __quadmath_throw;
+extern long long int llrintq (__float128) __quadmath_throw;
+extern long long int llroundq (__float128) __quadmath_throw;
+extern __float128 logq (__float128) __quadmath_throw;
+extern __float128 log10q (__float128) __quadmath_throw;
+extern __float128 log2q (__float128) __quadmath_throw;
+extern __float128 log1pq (__float128) __quadmath_throw;
+extern long int lrintq (__float128) __quadmath_throw;
+extern long int lroundq (__float128) __quadmath_throw;
+extern __float128 modfq (__float128, __float128 *) __quadmath_throw;
+extern __float128 nanq (const char *) __quadmath_throw;
+extern __float128 nearbyintq (__float128) __quadmath_throw;
+extern __float128 nextafterq (__float128, __float128) __quadmath_throw;
+extern __float128 powq (__float128, __float128) __quadmath_throw;
+extern __float128 remainderq (__float128, __float128) __quadmath_throw;
+extern __float128 remquoq (__float128, __float128, int *) __quadmath_throw;
+extern __float128 rintq (__float128) __quadmath_throw;
+extern __float128 roundq (__float128) __quadmath_throw;
+extern __float128 scalblnq (__float128, long int) __quadmath_throw;
+extern __float128 scalbnq (__float128, int) __quadmath_throw;
+extern int signbitq (__float128) __quadmath_throw;
+extern void sincosq (__float128, __float128 *, __float128 *) __quadmath_throw;
+extern __float128 sinhq (__float128) __quadmath_throw;
+extern __float128 sinq (__float128) __quadmath_throw;
+extern __float128 sqrtq (__float128) __quadmath_throw;
+extern __float128 tanq (__float128) __quadmath_throw;
+extern __float128 tanhq (__float128) __quadmath_throw;
+extern __float128 tgammaq (__float128) __quadmath_throw;
+extern __float128 truncq (__float128) __quadmath_throw;
+extern __float128 y0q (__float128) __quadmath_throw;
+extern __float128 y1q (__float128) __quadmath_throw;
+extern __float128 ynq (int, __float128) __quadmath_throw;
+
+
+/* Prototypes for complex functions */
+extern __float128 cabsq (__complex128) __quadmath_throw;
+extern __float128 cargq (__complex128) __quadmath_throw;
+extern __float128 cimagq (__complex128) __quadmath_throw;
+extern __float128 crealq (__complex128) __quadmath_throw;
+extern __complex128 cacosq (__complex128) __quadmath_throw;
+extern __complex128 cacoshq (__complex128) __quadmath_throw;
+extern __complex128 casinq (__complex128) __quadmath_throw;
+extern __complex128 casinhq (__complex128) __quadmath_throw;
+extern __complex128 catanq (__complex128) __quadmath_throw;
+extern __complex128 catanhq (__complex128) __quadmath_throw;
+extern __complex128 ccosq (__complex128) __quadmath_throw;
+extern __complex128 ccoshq (__complex128) __quadmath_throw;
+extern __complex128 cexpq (__complex128) __quadmath_throw;
+extern __complex128 cexpiq (__float128) __quadmath_throw;
+extern __complex128 clogq (__complex128) __quadmath_throw;
+extern __complex128 clog10q (__complex128) __quadmath_throw;
+extern __complex128 conjq (__complex128) __quadmath_throw;
+extern __complex128 cpowq (__complex128, __complex128) __quadmath_throw;
+extern __complex128 cprojq (__complex128) __quadmath_throw;
+extern __complex128 csinq (__complex128) __quadmath_throw;
+extern __complex128 csinhq (__complex128) __quadmath_throw;
+extern __complex128 csqrtq (__complex128) __quadmath_throw;
+extern __complex128 ctanq (__complex128) __quadmath_throw;
+extern __complex128 ctanhq (__complex128) __quadmath_throw;
+
+
+/* Prototypes for string <-> __float128 conversion functions */
+extern __float128 strtoflt128 (const char *, char **) __quadmath_throw;
+extern int quadmath_snprintf (char *str, size_t size,
+			      const char *format, ...) __quadmath_throw;
+
+
+/* Macros */
+#define FLT128_MAX 1.18973149535723176508575932662800702e4932Q
+#define FLT128_MIN 3.36210314311209350626267781732175260e-4932Q
+#define FLT128_EPSILON 1.92592994438723585305597794258492732e-34Q
+#define FLT128_DENORM_MIN 6.475175119438025110924438958227646552e-4966Q
+#define FLT128_MANT_DIG 113
+#define FLT128_MIN_EXP (-16381)
+#define FLT128_MAX_EXP 16384
+#define FLT128_DIG 33
+#define FLT128_MIN_10_EXP (-4931)
+#define FLT128_MAX_10_EXP 4932
+
+
+#define HUGE_VALQ __builtin_huge_valq()
+/* The following alternative is valid, but brings the warning:
+   (floating constant exceeds range of ‘__float128’)  */
+/* #define HUGE_VALQ (__extension__ 0x1.0p32767Q) */
+
+#define M_Eq		2.7182818284590452353602874713526625Q  /* e */
+#define M_LOG2Eq	1.4426950408889634073599246810018921Q  /* log_2 e */
+#define M_LOG10Eq	0.4342944819032518276511289189166051Q  /* log_10 e */
+#define M_LN2q		0.6931471805599453094172321214581766Q  /* log_e 2 */
+#define M_LN10q		2.3025850929940456840179914546843642Q  /* log_e 10 */
+#define M_PIq		3.1415926535897932384626433832795029Q  /* pi */
+#define M_PI_2q		1.5707963267948966192313216916397514Q  /* pi/2 */
+#define M_PI_4q		0.7853981633974483096156608458198757Q  /* pi/4 */
+#define M_1_PIq		0.3183098861837906715377675267450287Q  /* 1/pi */
+#define M_2_PIq		0.6366197723675813430755350534900574Q  /* 2/pi */
+#define M_2_SQRTPIq	1.1283791670955125738961589031215452Q  /* 2/sqrt(pi) */
+#define M_SQRT2q	1.4142135623730950488016887242096981Q  /* sqrt(2) */
+#define M_SQRT1_2q	0.7071067811865475244008443621048490Q  /* 1/sqrt(2) */
+
+#define __quadmath_extern_inline \
+  extern inline __attribute__ ((__gnu_inline__))
+
+__quadmath_extern_inline __float128
+__quadmath_nth (cimagq (__complex128 __z))
+{
+  return __imag__ __z;
+}
+
+__quadmath_extern_inline __float128
+__quadmath_nth (crealq (__complex128 __z))
+{
+  return __real__ __z;
+}
+
+__quadmath_extern_inline __complex128
+__quadmath_nth (conjq (__complex128 __z))
+{
+  return __extension__ ~__z;
+}
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
Index: Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/quadmath_weak.h
===================================================================
--- Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/quadmath_weak.h	(revision 1046)
+++ Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/quadmath_weak.h	(revision 1046)
@@ -0,0 +1,137 @@
+/* GCC Quad-Precision Math Library
+   Copyright (C) 2010, 2011 Free Software Foundation, Inc.
+   Written by Tobias Burnus  <burnus@net-b.de>
+
+This file is part of the libquadmath library.
+Libquadmath is free software; you can redistribute it and/or
+modify it under the terms of the GNU Library General Public
+License as published by the Free Software Foundation; either
+version 2 of the License, or (at your option) any later version.
+
+Libquadmath is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Library General Public License for more details.
+
+You should have received a copy of the GNU Library General Public
+License along with libquadmath; see the file COPYING.LIB.  If
+not, write to the Free Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
+Boston, MA 02110-1301, USA.  */
+
+#ifndef QUADMATH_WEAK_H
+#define QUADMATH_WEAK_H
+
+#include "quadmath.h"
+
+#if SUPPORTS_WEAK
+# define __qmath2(name,name2,type) \
+  static __typeof(type) name __attribute__ ((__weakref__(#name2)));
+# define __qmath_(name) __qmath_ ## name
+#else
+# define __qmath2(name,name2,type)
+# define __qmath_(name) name
+#endif
+
+/* __qmath_foo is a weak reference to symbol foo.  */
+#define __qmath3(name) __qmath2(__qmath_ ## name,name,name)
+
+/* Prototypes for real functions.  */
+__qmath3 (acosq)
+__qmath3 (acoshq)
+__qmath3 (asinq)
+__qmath3 (asinhq)
+__qmath3 (atanq)
+__qmath3 (atanhq)
+__qmath3 (atan2q)
+__qmath3 (cbrtq)
+__qmath3 (ceilq)
+__qmath3 (copysignq)
+__qmath3 (coshq)
+__qmath3 (cosq)
+__qmath3 (erfq)
+__qmath3 (erfcq)
+__qmath3 (expq)
+__qmath3 (expm1q)
+__qmath3 (fabsq)
+__qmath3 (fdimq)
+__qmath3 (finiteq)
+__qmath3 (floorq)
+__qmath3 (fmaq)
+__qmath3 (fmaxq)
+__qmath3 (fminq)
+__qmath3 (fmodq)
+__qmath3 (frexpq)
+__qmath3 (hypotq)
+__qmath3 (ilogbq)
+__qmath3 (isinfq)
+__qmath3 (isnanq)
+__qmath3 (j0q)
+__qmath3 (j1q)
+__qmath3 (jnq)
+__qmath3 (ldexpq)
+__qmath3 (lgammaq)
+__qmath3 (llrintq)
+__qmath3 (llroundq)
+__qmath3 (logq)
+__qmath3 (log10q)
+__qmath3 (log1pq)
+__qmath3 (log2q)
+__qmath3 (lrintq)
+__qmath3 (lroundq)
+__qmath3 (modfq)
+__qmath3 (nanq)
+__qmath3 (nearbyintq)
+__qmath3 (nextafterq)
+__qmath3 (powq)
+__qmath3 (remainderq)
+__qmath3 (remquoq)
+__qmath3 (rintq)
+__qmath3 (roundq)
+__qmath3 (scalblnq)
+__qmath3 (scalbnq)
+__qmath3 (signbitq)
+__qmath3 (sincosq)
+__qmath3 (sinhq)
+__qmath3 (sinq)
+__qmath3 (sqrtq)
+__qmath3 (tanq)
+__qmath3 (tanhq)
+__qmath3 (tgammaq)
+__qmath3 (truncq)
+__qmath3 (y0q)
+__qmath3 (y1q)
+__qmath3 (ynq)
+
+
+/* Prototypes for complex functions.  */
+__qmath3 (cabsq)
+__qmath3 (cargq)
+__qmath3 (cimagq)
+__qmath3 (crealq)
+__qmath3 (cacosq)
+__qmath3 (cacoshq)
+__qmath3 (casinq)
+__qmath3 (casinhq)
+__qmath3 (catanq)
+__qmath3 (catanhq)
+__qmath3 (ccosq)
+__qmath3 (ccoshq)
+__qmath3 (cexpq)
+__qmath3 (cexpiq)
+__qmath3 (clogq)
+__qmath3 (clog10q)
+__qmath3 (conjq)
+__qmath3 (cpowq)
+__qmath3 (cprojq)
+__qmath3 (csinq)
+__qmath3 (csinhq)
+__qmath3 (csqrtq)
+__qmath3 (ctanq)
+__qmath3 (ctanhq)
+
+
+/* Prototypes for string <-> flt128 conversion functions.  */
+__qmath3 (strtoflt128)
+__qmath3 (quadmath_snprintf)
+
+#endif
Index: Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/rdseedintrin.h
===================================================================
--- Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/rdseedintrin.h	(revision 1046)
+++ Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/rdseedintrin.h	(revision 1046)
@@ -0,0 +1,66 @@
+/* Copyright (C) 2012-2015 Free Software Foundation, Inc.
+
+   This file is part of GCC.
+
+   GCC is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
+
+   GCC is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   Under Section 7 of GPL version 3, you are granted additional
+   permissions described in the GCC Runtime Library Exception, version
+   3.1, as published by the Free Software Foundation.
+
+   You should have received a copy of the GNU General Public License and
+   a copy of the GCC Runtime Library Exception along with this program;
+   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#if !defined _X86INTRIN_H_INCLUDED
+# error "Never use <rdseedintrin.h> directly; include <x86intrin.h> instead."
+#endif
+
+#ifndef _RDSEEDINTRIN_H_INCLUDED
+#define _RDSEEDINTRIN_H_INCLUDED
+
+#ifndef __RDSEED__
+#pragma GCC push_options
+#pragma GCC target("rdseed")
+#define __DISABLE_RDSEED__
+#endif /* __RDSEED__ */
+
+
+extern __inline int
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_rdseed16_step (unsigned short *p)
+{
+    return __builtin_ia32_rdseed_hi_step (p);
+}
+
+extern __inline int
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_rdseed32_step (unsigned int *p)
+{
+    return __builtin_ia32_rdseed_si_step (p);
+}
+
+#ifdef __x86_64__
+extern __inline int
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_rdseed64_step (unsigned long long *p)
+{
+    return __builtin_ia32_rdseed_di_step (p);
+}
+#endif
+
+#ifdef __DISABLE_RDSEED__
+#undef __DISABLE_RDSEED__
+#pragma GCC pop_options
+#endif /* __DISABLE_RDSEED__ */
+
+#endif /* _RDSEEDINTRIN_H_INCLUDED */
Index: Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/rtmintrin.h
===================================================================
--- Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/rtmintrin.h	(revision 1046)
+++ Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/rtmintrin.h	(revision 1046)
@@ -0,0 +1,84 @@
+/* Copyright (C) 2012-2015 Free Software Foundation, Inc.
+
+   This file is part of GCC.
+
+   GCC is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
+
+   GCC is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   Under Section 7 of GPL version 3, you are granted additional
+   permissions described in the GCC Runtime Library Exception, version
+   3.1, as published by the Free Software Foundation.
+
+   You should have received a copy of the GNU General Public License and
+   a copy of the GCC Runtime Library Exception along with this program;
+   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _IMMINTRIN_H_INCLUDED
+# error "Never use <rtmintrin.h> directly; include <immintrin.h> instead."
+#endif
+
+#ifndef _RTMINTRIN_H_INCLUDED
+#define _RTMINTRIN_H_INCLUDED
+
+#ifndef __RTM__
+#pragma GCC push_options
+#pragma GCC target("rtm")
+#define __DISABLE_RTM__
+#endif /* __RTM__ */
+
+#define _XBEGIN_STARTED		(~0u)
+#define _XABORT_EXPLICIT	(1 << 0)
+#define _XABORT_RETRY		(1 << 1)
+#define _XABORT_CONFLICT	(1 << 2)
+#define _XABORT_CAPACITY	(1 << 3)
+#define _XABORT_DEBUG		(1 << 4)
+#define _XABORT_NESTED		(1 << 5)
+#define _XABORT_CODE(x)		(((x) >> 24) & 0xFF)
+
+/* Start an RTM code region.  Return _XBEGIN_STARTED on success and the
+   abort condition otherwise.  */
+extern __inline unsigned int
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_xbegin (void)
+{
+  return __builtin_ia32_xbegin ();
+}
+
+/* Specify the end of an RTM code region.  If it corresponds to the
+   outermost transaction, then attempts the transaction commit.  If the
+   commit fails, then control is transferred to the outermost transaction
+   fallback handler.  */
+extern __inline void
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_xend (void)
+{
+  __builtin_ia32_xend ();
+}
+
+/* Force an RTM abort condition. The control is transferred to the
+   outermost transaction fallback handler with the abort condition IMM.  */
+#ifdef __OPTIMIZE__
+extern __inline void
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_xabort (const unsigned int imm)
+{
+  __builtin_ia32_xabort (imm);
+}
+#else
+#define _xabort(N)  __builtin_ia32_xabort (N)
+#endif /* __OPTIMIZE__ */
+
+#ifdef __DISABLE_RTM__
+#undef __DISABLE_RTM__
+#pragma GCC pop_options
+#endif /* __DISABLE_RTM__ */
+
+#endif /* _RTMINTRIN_H_INCLUDED */
Index: Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/shaintrin.h
===================================================================
--- Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/shaintrin.h	(revision 1046)
+++ Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/shaintrin.h	(revision 1046)
@@ -0,0 +1,98 @@
+/* Copyright (C) 2013-2015 Free Software Foundation, Inc.
+
+   This file is part of GCC.
+
+   GCC is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
+
+   GCC is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   Under Section 7 of GPL version 3, you are granted additional
+   permissions described in the GCC Runtime Library Exception, version
+   3.1, as published by the Free Software Foundation.
+
+   You should have received a copy of the GNU General Public License and
+   a copy of the GCC Runtime Library Exception along with this program;
+   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _IMMINTRIN_H_INCLUDED
+#error "Never use <shaintrin.h> directly; include <immintrin.h> instead."
+#endif
+
+#ifndef _SHAINTRIN_H_INCLUDED
+#define _SHAINTRIN_H_INCLUDED
+
+#ifndef __SHA__
+#pragma GCC push_options
+#pragma GCC target("sha")
+#define __DISABLE_SHA__
+#endif /* __SHA__ */
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_sha1msg1_epu32 (__m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_sha1msg1 ((__v4si) __A, (__v4si) __B);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_sha1msg2_epu32 (__m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_sha1msg2 ((__v4si) __A, (__v4si) __B);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_sha1nexte_epu32 (__m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_sha1nexte ((__v4si) __A, (__v4si) __B);
+}
+
+#ifdef __OPTIMIZE__
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_sha1rnds4_epu32 (__m128i __A, __m128i __B, const int __I)
+{
+  return (__m128i) __builtin_ia32_sha1rnds4 ((__v4si) __A, (__v4si) __B, __I);
+}
+#else
+#define _mm_sha1rnds4_epu32(A, B, I)				    \
+  ((__m128i) __builtin_ia32_sha1rnds4 ((__v4si)(__m128i)A,	    \
+				       (__v4si)(__m128i)B, (int)I))
+#endif
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_sha256msg1_epu32 (__m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_sha256msg1 ((__v4si) __A, (__v4si) __B);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_sha256msg2_epu32 (__m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_sha256msg2 ((__v4si) __A, (__v4si) __B);
+}
+
+extern __inline __m128i
+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+_mm_sha256rnds2_epu32 (__m128i __A, __m128i __B, __m128i __C)
+{
+  return (__m128i) __builtin_ia32_sha256rnds2 ((__v4si) __A, (__v4si) __B,
+					       (__v4si) __C);
+}
+
+#ifdef __DISABLE_SHA__
+#undef __DISABLE_SHA__
+#pragma GCC pop_options
+#endif /* __DISABLE_SHA__ */
+
+#endif /* _SHAINTRIN_H_INCLUDED */
Index: Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/smmintrin.h
===================================================================
--- Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/smmintrin.h	(revision 1046)
+++ Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/smmintrin.h	(revision 1046)
@@ -0,0 +1,862 @@
+/* Copyright (C) 2007-2015 Free Software Foundation, Inc.
+
+   This file is part of GCC.
+
+   GCC is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
+
+   GCC is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   Under Section 7 of GPL version 3, you are granted additional
+   permissions described in the GCC Runtime Library Exception, version
+   3.1, as published by the Free Software Foundation.
+
+   You should have received a copy of the GNU General Public License and
+   a copy of the GCC Runtime Library Exception along with this program;
+   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+/* Implemented from the specification included in the Intel C++ Compiler
+   User Guide and Reference, version 10.0.  */
+
+#ifndef _SMMINTRIN_H_INCLUDED
+#define _SMMINTRIN_H_INCLUDED
+
+/* We need definitions from the SSSE3, SSE3, SSE2 and SSE header
+   files.  */
+#include <tmmintrin.h>
+
+#ifndef __SSE4_1__
+#pragma GCC push_options
+#pragma GCC target("sse4.1")
+#define __DISABLE_SSE4_1__
+#endif /* __SSE4_1__ */
+
+/* Rounding mode macros. */
+#define _MM_FROUND_TO_NEAREST_INT	0x00
+#define _MM_FROUND_TO_NEG_INF		0x01
+#define _MM_FROUND_TO_POS_INF		0x02
+#define _MM_FROUND_TO_ZERO		0x03
+#define _MM_FROUND_CUR_DIRECTION	0x04
+
+#define _MM_FROUND_RAISE_EXC		0x00
+#define _MM_FROUND_NO_EXC		0x08
+
+#define _MM_FROUND_NINT		\
+  (_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_RAISE_EXC)
+#define _MM_FROUND_FLOOR	\
+  (_MM_FROUND_TO_NEG_INF | _MM_FROUND_RAISE_EXC)
+#define _MM_FROUND_CEIL		\
+  (_MM_FROUND_TO_POS_INF | _MM_FROUND_RAISE_EXC)
+#define _MM_FROUND_TRUNC	\
+  (_MM_FROUND_TO_ZERO | _MM_FROUND_RAISE_EXC)
+#define _MM_FROUND_RINT		\
+  (_MM_FROUND_CUR_DIRECTION | _MM_FROUND_RAISE_EXC)
+#define _MM_FROUND_NEARBYINT	\
+  (_MM_FROUND_CUR_DIRECTION | _MM_FROUND_NO_EXC)
+
+/* Test Instruction */
+/* Packed integer 128-bit bitwise comparison. Return 1 if
+   (__V & __M) == 0.  */
+extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_testz_si128 (__m128i __M, __m128i __V)
+{
+  return __builtin_ia32_ptestz128 ((__v2di)__M, (__v2di)__V);
+}
+
+/* Packed integer 128-bit bitwise comparison. Return 1 if
+   (__V & ~__M) == 0.  */
+extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_testc_si128 (__m128i __M, __m128i __V)
+{
+  return __builtin_ia32_ptestc128 ((__v2di)__M, (__v2di)__V);
+}
+
+/* Packed integer 128-bit bitwise comparison. Return 1 if
+   (__V & __M) != 0 && (__V & ~__M) != 0.  */
+extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_testnzc_si128 (__m128i __M, __m128i __V)
+{
+  return __builtin_ia32_ptestnzc128 ((__v2di)__M, (__v2di)__V);
+}
+
+/* Macros for packed integer 128-bit comparison intrinsics.  */
+#define _mm_test_all_zeros(M, V) _mm_testz_si128 ((M), (V))
+
+#define _mm_test_all_ones(V) \
+  _mm_testc_si128 ((V), _mm_cmpeq_epi32 ((V), (V)))
+
+#define _mm_test_mix_ones_zeros(M, V) _mm_testnzc_si128 ((M), (V))
+
+/* Packed/scalar double precision floating point rounding.  */
+
+#ifdef __OPTIMIZE__
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_round_pd (__m128d __V, const int __M)
+{
+  return (__m128d) __builtin_ia32_roundpd ((__v2df)__V, __M);
+}
+
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_round_sd(__m128d __D, __m128d __V, const int __M)
+{
+  return (__m128d) __builtin_ia32_roundsd ((__v2df)__D,
+					   (__v2df)__V,
+					   __M);
+}
+#else
+#define _mm_round_pd(V, M) \
+  ((__m128d) __builtin_ia32_roundpd ((__v2df)(__m128d)(V), (int)(M)))
+
+#define _mm_round_sd(D, V, M)						\
+  ((__m128d) __builtin_ia32_roundsd ((__v2df)(__m128d)(D),		\
+				     (__v2df)(__m128d)(V), (int)(M)))
+#endif
+
+/* Packed/scalar single precision floating point rounding.  */
+
+#ifdef __OPTIMIZE__
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_round_ps (__m128 __V, const int __M)
+{
+  return (__m128) __builtin_ia32_roundps ((__v4sf)__V, __M);
+}
+
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_round_ss (__m128 __D, __m128 __V, const int __M)
+{
+  return (__m128) __builtin_ia32_roundss ((__v4sf)__D,
+					  (__v4sf)__V,
+					  __M);
+}
+#else
+#define _mm_round_ps(V, M) \
+  ((__m128) __builtin_ia32_roundps ((__v4sf)(__m128)(V), (int)(M)))
+
+#define _mm_round_ss(D, V, M)						\
+  ((__m128) __builtin_ia32_roundss ((__v4sf)(__m128)(D),		\
+				    (__v4sf)(__m128)(V), (int)(M)))
+#endif
+
+/* Macros for ceil/floor intrinsics.  */
+#define _mm_ceil_pd(V)	   _mm_round_pd ((V), _MM_FROUND_CEIL)
+#define _mm_ceil_sd(D, V)  _mm_round_sd ((D), (V), _MM_FROUND_CEIL)
+
+#define _mm_floor_pd(V)	   _mm_round_pd((V), _MM_FROUND_FLOOR)
+#define _mm_floor_sd(D, V) _mm_round_sd ((D), (V), _MM_FROUND_FLOOR)
+
+#define _mm_ceil_ps(V)	   _mm_round_ps ((V), _MM_FROUND_CEIL)
+#define _mm_ceil_ss(D, V)  _mm_round_ss ((D), (V), _MM_FROUND_CEIL)
+
+#define _mm_floor_ps(V)	   _mm_round_ps ((V), _MM_FROUND_FLOOR)
+#define _mm_floor_ss(D, V) _mm_round_ss ((D), (V), _MM_FROUND_FLOOR)
+
+/* SSE4.1 */
+
+/* Integer blend instructions - select data from 2 sources using
+   constant/variable mask.  */
+
+#ifdef __OPTIMIZE__
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_blend_epi16 (__m128i __X, __m128i __Y, const int __M)
+{
+  return (__m128i) __builtin_ia32_pblendw128 ((__v8hi)__X,
+					      (__v8hi)__Y,
+					      __M);
+}
+#else
+#define _mm_blend_epi16(X, Y, M)					\
+  ((__m128i) __builtin_ia32_pblendw128 ((__v8hi)(__m128i)(X),		\
+					(__v8hi)(__m128i)(Y), (int)(M)))
+#endif
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_blendv_epi8 (__m128i __X, __m128i __Y, __m128i __M)
+{
+  return (__m128i) __builtin_ia32_pblendvb128 ((__v16qi)__X,
+					       (__v16qi)__Y,
+					       (__v16qi)__M);
+}
+
+/* Single precision floating point blend instructions - select data
+   from 2 sources using constant/variable mask.  */
+
+#ifdef __OPTIMIZE__
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_blend_ps (__m128 __X, __m128 __Y, const int __M)
+{
+  return (__m128) __builtin_ia32_blendps ((__v4sf)__X,
+					  (__v4sf)__Y,
+					  __M);
+}
+#else
+#define _mm_blend_ps(X, Y, M)						\
+  ((__m128) __builtin_ia32_blendps ((__v4sf)(__m128)(X),		\
+				    (__v4sf)(__m128)(Y), (int)(M)))
+#endif
+
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_blendv_ps (__m128 __X, __m128 __Y, __m128 __M)
+{
+  return (__m128) __builtin_ia32_blendvps ((__v4sf)__X,
+					   (__v4sf)__Y,
+					   (__v4sf)__M);
+}
+
+/* Double precision floating point blend instructions - select data
+   from 2 sources using constant/variable mask.  */
+
+#ifdef __OPTIMIZE__
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_blend_pd (__m128d __X, __m128d __Y, const int __M)
+{
+  return (__m128d) __builtin_ia32_blendpd ((__v2df)__X,
+					   (__v2df)__Y,
+					   __M);
+}
+#else
+#define _mm_blend_pd(X, Y, M)						\
+  ((__m128d) __builtin_ia32_blendpd ((__v2df)(__m128d)(X),		\
+				     (__v2df)(__m128d)(Y), (int)(M)))
+#endif
+
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_blendv_pd (__m128d __X, __m128d __Y, __m128d __M)
+{
+  return (__m128d) __builtin_ia32_blendvpd ((__v2df)__X,
+					    (__v2df)__Y,
+					    (__v2df)__M);
+}
+
+/* Dot product instructions with mask-defined summing and zeroing parts
+   of result.  */
+
+#ifdef __OPTIMIZE__
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_dp_ps (__m128 __X, __m128 __Y, const int __M)
+{
+  return (__m128) __builtin_ia32_dpps ((__v4sf)__X,
+				       (__v4sf)__Y,
+				       __M);
+}
+
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_dp_pd (__m128d __X, __m128d __Y, const int __M)
+{
+  return (__m128d) __builtin_ia32_dppd ((__v2df)__X,
+					(__v2df)__Y,
+					__M);
+}
+#else
+#define _mm_dp_ps(X, Y, M)						\
+  ((__m128) __builtin_ia32_dpps ((__v4sf)(__m128)(X),			\
+				 (__v4sf)(__m128)(Y), (int)(M)))
+
+#define _mm_dp_pd(X, Y, M)						\
+  ((__m128d) __builtin_ia32_dppd ((__v2df)(__m128d)(X),			\
+				  (__v2df)(__m128d)(Y), (int)(M)))
+#endif
+
+/* Packed integer 64-bit comparison, zeroing or filling with ones
+   corresponding parts of result.  */
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpeq_epi64 (__m128i __X, __m128i __Y)
+{
+  return (__m128i) ((__v2di)__X == (__v2di)__Y);
+}
+
+/*  Min/max packed integer instructions.  */
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_min_epi8 (__m128i __X, __m128i __Y)
+{
+  return (__m128i) __builtin_ia32_pminsb128 ((__v16qi)__X, (__v16qi)__Y);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_max_epi8 (__m128i __X, __m128i __Y)
+{
+  return (__m128i) __builtin_ia32_pmaxsb128 ((__v16qi)__X, (__v16qi)__Y);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_min_epu16 (__m128i __X, __m128i __Y)
+{
+  return (__m128i) __builtin_ia32_pminuw128 ((__v8hi)__X, (__v8hi)__Y);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_max_epu16 (__m128i __X, __m128i __Y)
+{
+  return (__m128i) __builtin_ia32_pmaxuw128 ((__v8hi)__X, (__v8hi)__Y);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_min_epi32 (__m128i __X, __m128i __Y)
+{
+  return (__m128i) __builtin_ia32_pminsd128 ((__v4si)__X, (__v4si)__Y);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_max_epi32 (__m128i __X, __m128i __Y)
+{
+  return (__m128i) __builtin_ia32_pmaxsd128 ((__v4si)__X, (__v4si)__Y);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_min_epu32 (__m128i __X, __m128i __Y)
+{
+  return (__m128i) __builtin_ia32_pminud128 ((__v4si)__X, (__v4si)__Y);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_max_epu32 (__m128i __X, __m128i __Y)
+{
+  return (__m128i) __builtin_ia32_pmaxud128 ((__v4si)__X, (__v4si)__Y);
+}
+
+/* Packed integer 32-bit multiplication with truncation of upper
+   halves of results.  */
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mullo_epi32 (__m128i __X, __m128i __Y)
+{
+  return (__m128i) ((__v4su)__X * (__v4su)__Y);
+}
+
+/* Packed integer 32-bit multiplication of 2 pairs of operands
+   with two 64-bit results.  */
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mul_epi32 (__m128i __X, __m128i __Y)
+{
+  return (__m128i) __builtin_ia32_pmuldq128 ((__v4si)__X, (__v4si)__Y);
+}
+
+/* Insert single precision float into packed single precision array
+   element selected by index N.  The bits [7-6] of N define S
+   index, the bits [5-4] define D index, and bits [3-0] define
+   zeroing mask for D.  */
+
+#ifdef __OPTIMIZE__
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_insert_ps (__m128 __D, __m128 __S, const int __N)
+{
+  return (__m128) __builtin_ia32_insertps128 ((__v4sf)__D,
+					      (__v4sf)__S,
+					      __N);
+}
+#else
+#define _mm_insert_ps(D, S, N)						\
+  ((__m128) __builtin_ia32_insertps128 ((__v4sf)(__m128)(D),		\
+					(__v4sf)(__m128)(S), (int)(N)))
+#endif
+
+/* Helper macro to create the N value for _mm_insert_ps.  */
+#define _MM_MK_INSERTPS_NDX(S, D, M) (((S) << 6) | ((D) << 4) | (M))
+
+/* Extract binary representation of single precision float from packed
+   single precision array element of X selected by index N.  */
+
+#ifdef __OPTIMIZE__
+extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_extract_ps (__m128 __X, const int __N)
+{
+  union { int i; float f; } __tmp;
+  __tmp.f = __builtin_ia32_vec_ext_v4sf ((__v4sf)__X, __N);
+  return __tmp.i;
+}
+#else
+#define _mm_extract_ps(X, N)						\
+  (__extension__							\
+   ({									\
+     union { int i; float f; } __tmp;					\
+     __tmp.f = __builtin_ia32_vec_ext_v4sf ((__v4sf)(__m128)(X), (int)(N)); \
+     __tmp.i;								\
+   }))
+#endif
+
+/* Extract binary representation of single precision float into
+   D from packed single precision array element of S selected
+   by index N.  */
+#define _MM_EXTRACT_FLOAT(D, S, N) \
+  { (D) = __builtin_ia32_vec_ext_v4sf ((__v4sf)(S), (N)); }
+  
+/* Extract specified single precision float element into the lower
+   part of __m128.  */
+#define _MM_PICK_OUT_PS(X, N)				\
+  _mm_insert_ps (_mm_setzero_ps (), (X), 		\
+		 _MM_MK_INSERTPS_NDX ((N), 0, 0x0e))
+
+/* Insert integer, S, into packed integer array element of D
+   selected by index N.  */
+
+#ifdef __OPTIMIZE__
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_insert_epi8 (__m128i __D, int __S, const int __N)
+{
+  return (__m128i) __builtin_ia32_vec_set_v16qi ((__v16qi)__D,
+						 __S, __N);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_insert_epi32 (__m128i __D, int __S, const int __N)
+{
+  return (__m128i) __builtin_ia32_vec_set_v4si ((__v4si)__D,
+						 __S, __N);
+}
+
+#ifdef __x86_64__
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_insert_epi64 (__m128i __D, long long __S, const int __N)
+{
+  return (__m128i) __builtin_ia32_vec_set_v2di ((__v2di)__D,
+						 __S, __N);
+}
+#endif
+#else
+#define _mm_insert_epi8(D, S, N)					\
+  ((__m128i) __builtin_ia32_vec_set_v16qi ((__v16qi)(__m128i)(D),	\
+					   (int)(S), (int)(N)))
+
+#define _mm_insert_epi32(D, S, N)				\
+  ((__m128i) __builtin_ia32_vec_set_v4si ((__v4si)(__m128i)(D),	\
+					  (int)(S), (int)(N)))
+
+#ifdef __x86_64__
+#define _mm_insert_epi64(D, S, N)					\
+  ((__m128i) __builtin_ia32_vec_set_v2di ((__v2di)(__m128i)(D),		\
+					  (long long)(S), (int)(N)))
+#endif
+#endif
+
+/* Extract integer from packed integer array element of X selected by
+   index N.  */
+
+#ifdef __OPTIMIZE__
+extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_extract_epi8 (__m128i __X, const int __N)
+{
+   return (unsigned char) __builtin_ia32_vec_ext_v16qi ((__v16qi)__X, __N);
+}
+
+extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_extract_epi32 (__m128i __X, const int __N)
+{
+   return __builtin_ia32_vec_ext_v4si ((__v4si)__X, __N);
+}
+
+#ifdef __x86_64__
+extern __inline long long  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_extract_epi64 (__m128i __X, const int __N)
+{
+  return __builtin_ia32_vec_ext_v2di ((__v2di)__X, __N);
+}
+#endif
+#else
+#define _mm_extract_epi8(X, N) \
+  ((int) (unsigned char) __builtin_ia32_vec_ext_v16qi ((__v16qi)(__m128i)(X), (int)(N)))
+#define _mm_extract_epi32(X, N) \
+  ((int) __builtin_ia32_vec_ext_v4si ((__v4si)(__m128i)(X), (int)(N)))
+
+#ifdef __x86_64__
+#define _mm_extract_epi64(X, N) \
+  ((long long) __builtin_ia32_vec_ext_v2di ((__v2di)(__m128i)(X), (int)(N)))
+#endif
+#endif
+
+/* Return horizontal packed word minimum and its index in bits [15:0]
+   and bits [18:16] respectively.  */
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_minpos_epu16 (__m128i __X)
+{
+  return (__m128i) __builtin_ia32_phminposuw128 ((__v8hi)__X);
+}
+
+/* Packed integer sign-extension.  */
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtepi8_epi32 (__m128i __X)
+{
+  return (__m128i) __builtin_ia32_pmovsxbd128 ((__v16qi)__X);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtepi16_epi32 (__m128i __X)
+{
+  return (__m128i) __builtin_ia32_pmovsxwd128 ((__v8hi)__X);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtepi8_epi64 (__m128i __X)
+{
+  return (__m128i) __builtin_ia32_pmovsxbq128 ((__v16qi)__X);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtepi32_epi64 (__m128i __X)
+{
+  return (__m128i) __builtin_ia32_pmovsxdq128 ((__v4si)__X);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtepi16_epi64 (__m128i __X)
+{
+  return (__m128i) __builtin_ia32_pmovsxwq128 ((__v8hi)__X);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtepi8_epi16 (__m128i __X)
+{
+  return (__m128i) __builtin_ia32_pmovsxbw128 ((__v16qi)__X);
+}
+
+/* Packed integer zero-extension. */
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtepu8_epi32 (__m128i __X)
+{
+  return (__m128i) __builtin_ia32_pmovzxbd128 ((__v16qi)__X);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtepu16_epi32 (__m128i __X)
+{
+  return (__m128i) __builtin_ia32_pmovzxwd128 ((__v8hi)__X);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtepu8_epi64 (__m128i __X)
+{
+  return (__m128i) __builtin_ia32_pmovzxbq128 ((__v16qi)__X);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtepu32_epi64 (__m128i __X)
+{
+  return (__m128i) __builtin_ia32_pmovzxdq128 ((__v4si)__X);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtepu16_epi64 (__m128i __X)
+{
+  return (__m128i) __builtin_ia32_pmovzxwq128 ((__v8hi)__X);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtepu8_epi16 (__m128i __X)
+{
+  return (__m128i) __builtin_ia32_pmovzxbw128 ((__v16qi)__X);
+}
+
+/* Pack 8 double words from 2 operands into 8 words of result with
+   unsigned saturation. */
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_packus_epi32 (__m128i __X, __m128i __Y)
+{
+  return (__m128i) __builtin_ia32_packusdw128 ((__v4si)__X, (__v4si)__Y);
+}
+
+/* Sum absolute 8-bit integer difference of adjacent groups of 4
+   byte integers in the first 2 operands.  Starting offsets within
+   operands are determined by the 3rd mask operand.  */
+
+#ifdef __OPTIMIZE__
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mpsadbw_epu8 (__m128i __X, __m128i __Y, const int __M)
+{
+  return (__m128i) __builtin_ia32_mpsadbw128 ((__v16qi)__X,
+					      (__v16qi)__Y, __M);
+}
+#else
+#define _mm_mpsadbw_epu8(X, Y, M)					\
+  ((__m128i) __builtin_ia32_mpsadbw128 ((__v16qi)(__m128i)(X),		\
+					(__v16qi)(__m128i)(Y), (int)(M)))
+#endif
+
+/* Load double quadword using non-temporal aligned hint.  */
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_stream_load_si128 (__m128i *__X)
+{
+  return (__m128i) __builtin_ia32_movntdqa ((__v2di *) __X);
+}
+
+#ifndef __SSE4_2__
+#pragma GCC push_options
+#pragma GCC target("sse4.2")
+#define __DISABLE_SSE4_2__
+#endif /* __SSE4_2__ */
+
+/* These macros specify the source data format.  */
+#define _SIDD_UBYTE_OPS			0x00
+#define _SIDD_UWORD_OPS			0x01
+#define _SIDD_SBYTE_OPS			0x02
+#define _SIDD_SWORD_OPS			0x03
+
+/* These macros specify the comparison operation.  */
+#define _SIDD_CMP_EQUAL_ANY		0x00
+#define _SIDD_CMP_RANGES		0x04
+#define _SIDD_CMP_EQUAL_EACH		0x08
+#define _SIDD_CMP_EQUAL_ORDERED		0x0c
+
+/* These macros specify the polarity.  */
+#define _SIDD_POSITIVE_POLARITY		0x00
+#define _SIDD_NEGATIVE_POLARITY		0x10
+#define _SIDD_MASKED_POSITIVE_POLARITY	0x20
+#define _SIDD_MASKED_NEGATIVE_POLARITY	0x30
+
+/* These macros specify the output selection in _mm_cmpXstri ().  */
+#define _SIDD_LEAST_SIGNIFICANT		0x00
+#define _SIDD_MOST_SIGNIFICANT		0x40
+
+/* These macros specify the output selection in _mm_cmpXstrm ().  */
+#define _SIDD_BIT_MASK			0x00
+#define _SIDD_UNIT_MASK			0x40
+
+/* Intrinsics for text/string processing.  */
+
+#ifdef __OPTIMIZE__
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpistrm (__m128i __X, __m128i __Y, const int __M)
+{
+  return (__m128i) __builtin_ia32_pcmpistrm128 ((__v16qi)__X,
+						(__v16qi)__Y,
+						__M);
+}
+
+extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpistri (__m128i __X, __m128i __Y, const int __M)
+{
+  return __builtin_ia32_pcmpistri128 ((__v16qi)__X,
+				      (__v16qi)__Y,
+				      __M);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpestrm (__m128i __X, int __LX, __m128i __Y, int __LY, const int __M)
+{
+  return (__m128i) __builtin_ia32_pcmpestrm128 ((__v16qi)__X, __LX,
+						(__v16qi)__Y, __LY,
+						__M);
+}
+
+extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpestri (__m128i __X, int __LX, __m128i __Y, int __LY, const int __M)
+{
+  return __builtin_ia32_pcmpestri128 ((__v16qi)__X, __LX,
+				      (__v16qi)__Y, __LY,
+				      __M);
+}
+#else
+#define _mm_cmpistrm(X, Y, M)						\
+  ((__m128i) __builtin_ia32_pcmpistrm128 ((__v16qi)(__m128i)(X),	\
+					  (__v16qi)(__m128i)(Y), (int)(M)))
+#define _mm_cmpistri(X, Y, M)						\
+  ((int) __builtin_ia32_pcmpistri128 ((__v16qi)(__m128i)(X),		\
+				      (__v16qi)(__m128i)(Y), (int)(M)))
+
+#define _mm_cmpestrm(X, LX, Y, LY, M)					\
+  ((__m128i) __builtin_ia32_pcmpestrm128 ((__v16qi)(__m128i)(X),	\
+					  (int)(LX), (__v16qi)(__m128i)(Y), \
+					  (int)(LY), (int)(M)))
+#define _mm_cmpestri(X, LX, Y, LY, M)					\
+  ((int) __builtin_ia32_pcmpestri128 ((__v16qi)(__m128i)(X), (int)(LX),	\
+				      (__v16qi)(__m128i)(Y), (int)(LY),	\
+				      (int)(M)))
+#endif
+
+/* Intrinsics for text/string processing and reading values of
+   EFlags.  */
+
+#ifdef __OPTIMIZE__
+extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpistra (__m128i __X, __m128i __Y, const int __M)
+{
+  return __builtin_ia32_pcmpistria128 ((__v16qi)__X,
+				       (__v16qi)__Y,
+				       __M);
+}
+
+extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpistrc (__m128i __X, __m128i __Y, const int __M)
+{
+  return __builtin_ia32_pcmpistric128 ((__v16qi)__X,
+				       (__v16qi)__Y,
+				       __M);
+}
+
+extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpistro (__m128i __X, __m128i __Y, const int __M)
+{
+  return __builtin_ia32_pcmpistrio128 ((__v16qi)__X,
+				       (__v16qi)__Y,
+				       __M);
+}
+
+extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpistrs (__m128i __X, __m128i __Y, const int __M)
+{
+  return __builtin_ia32_pcmpistris128 ((__v16qi)__X,
+				       (__v16qi)__Y,
+				       __M);
+}
+
+extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpistrz (__m128i __X, __m128i __Y, const int __M)
+{
+  return __builtin_ia32_pcmpistriz128 ((__v16qi)__X,
+				       (__v16qi)__Y,
+				       __M);
+}
+
+extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpestra (__m128i __X, int __LX, __m128i __Y, int __LY, const int __M)
+{
+  return __builtin_ia32_pcmpestria128 ((__v16qi)__X, __LX,
+				       (__v16qi)__Y, __LY,
+				       __M);
+}
+
+extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpestrc (__m128i __X, int __LX, __m128i __Y, int __LY, const int __M)
+{
+  return __builtin_ia32_pcmpestric128 ((__v16qi)__X, __LX,
+				       (__v16qi)__Y, __LY,
+				       __M);
+}
+
+extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpestro (__m128i __X, int __LX, __m128i __Y, int __LY, const int __M)
+{
+  return __builtin_ia32_pcmpestrio128 ((__v16qi)__X, __LX,
+				       (__v16qi)__Y, __LY,
+				       __M);
+}
+
+extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpestrs (__m128i __X, int __LX, __m128i __Y, int __LY, const int __M)
+{
+  return __builtin_ia32_pcmpestris128 ((__v16qi)__X, __LX,
+				       (__v16qi)__Y, __LY,
+				       __M);
+}
+
+extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpestrz (__m128i __X, int __LX, __m128i __Y, int __LY, const int __M)
+{
+  return __builtin_ia32_pcmpestriz128 ((__v16qi)__X, __LX,
+				       (__v16qi)__Y, __LY,
+				       __M);
+}
+#else
+#define _mm_cmpistra(X, Y, M)						\
+  ((int) __builtin_ia32_pcmpistria128 ((__v16qi)(__m128i)(X),		\
+				       (__v16qi)(__m128i)(Y), (int)(M)))
+#define _mm_cmpistrc(X, Y, M)						\
+  ((int) __builtin_ia32_pcmpistric128 ((__v16qi)(__m128i)(X),		\
+				       (__v16qi)(__m128i)(Y), (int)(M)))
+#define _mm_cmpistro(X, Y, M)						\
+  ((int) __builtin_ia32_pcmpistrio128 ((__v16qi)(__m128i)(X),		\
+				       (__v16qi)(__m128i)(Y), (int)(M)))
+#define _mm_cmpistrs(X, Y, M)						\
+  ((int) __builtin_ia32_pcmpistris128 ((__v16qi)(__m128i)(X),		\
+				       (__v16qi)(__m128i)(Y), (int)(M)))
+#define _mm_cmpistrz(X, Y, M)						\
+  ((int) __builtin_ia32_pcmpistriz128 ((__v16qi)(__m128i)(X),		\
+				       (__v16qi)(__m128i)(Y), (int)(M)))
+
+#define _mm_cmpestra(X, LX, Y, LY, M)					\
+  ((int) __builtin_ia32_pcmpestria128 ((__v16qi)(__m128i)(X), (int)(LX), \
+				       (__v16qi)(__m128i)(Y), (int)(LY), \
+				       (int)(M)))
+#define _mm_cmpestrc(X, LX, Y, LY, M)					\
+  ((int) __builtin_ia32_pcmpestric128 ((__v16qi)(__m128i)(X), (int)(LX), \
+				       (__v16qi)(__m128i)(Y), (int)(LY), \
+				       (int)(M)))
+#define _mm_cmpestro(X, LX, Y, LY, M)					\
+  ((int) __builtin_ia32_pcmpestrio128 ((__v16qi)(__m128i)(X), (int)(LX), \
+				       (__v16qi)(__m128i)(Y), (int)(LY), \
+				       (int)(M)))
+#define _mm_cmpestrs(X, LX, Y, LY, M)					\
+  ((int) __builtin_ia32_pcmpestris128 ((__v16qi)(__m128i)(X), (int)(LX), \
+				       (__v16qi)(__m128i)(Y), (int)(LY), \
+				       (int)(M)))
+#define _mm_cmpestrz(X, LX, Y, LY, M)					\
+  ((int) __builtin_ia32_pcmpestriz128 ((__v16qi)(__m128i)(X), (int)(LX), \
+				       (__v16qi)(__m128i)(Y), (int)(LY), \
+				       (int)(M)))
+#endif
+
+/* Packed integer 64-bit comparison, zeroing or filling with ones
+   corresponding parts of result.  */
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpgt_epi64 (__m128i __X, __m128i __Y)
+{
+  return (__m128i) ((__v2di)__X > (__v2di)__Y);
+}
+
+#ifdef __DISABLE_SSE4_2__
+#undef __DISABLE_SSE4_2__
+#pragma GCC pop_options
+#endif /* __DISABLE_SSE4_2__ */
+
+#ifdef __DISABLE_SSE4_1__
+#undef __DISABLE_SSE4_1__
+#pragma GCC pop_options
+#endif /* __DISABLE_SSE4_1__ */
+
+#include <popcntintrin.h>
+
+#ifndef __SSE4_1__
+#pragma GCC push_options
+#pragma GCC target("sse4.1")
+#define __DISABLE_SSE4_1__
+#endif /* __SSE4_1__ */
+
+#ifndef __SSE4_2__
+#pragma GCC push_options
+#pragma GCC target("sse4.2")
+#define __DISABLE_SSE4_2__
+#endif /* __SSE4_1__ */
+
+/* Accumulate CRC32 (polynomial 0x11EDC6F41) value.  */
+extern __inline unsigned int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_crc32_u8 (unsigned int __C, unsigned char __V)
+{
+  return __builtin_ia32_crc32qi (__C, __V);
+}
+
+extern __inline unsigned int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_crc32_u16 (unsigned int __C, unsigned short __V)
+{
+  return __builtin_ia32_crc32hi (__C, __V);
+}
+
+extern __inline unsigned int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_crc32_u32 (unsigned int __C, unsigned int __V)
+{
+  return __builtin_ia32_crc32si (__C, __V);
+}
+
+#ifdef __x86_64__
+extern __inline unsigned long long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_crc32_u64 (unsigned long long __C, unsigned long long __V)
+{
+  return __builtin_ia32_crc32di (__C, __V);
+}
+#endif
+
+#ifdef __DISABLE_SSE4_2__
+#undef __DISABLE_SSE4_2__
+#pragma GCC pop_options
+#endif /* __DISABLE_SSE4_2__ */
+
+#ifdef __DISABLE_SSE4_1__
+#undef __DISABLE_SSE4_1__
+#pragma GCC pop_options
+#endif /* __DISABLE_SSE4_1__ */
+
+#endif /* _SMMINTRIN_H_INCLUDED */
Index: Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/ssp/ssp.h
===================================================================
--- Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/ssp/ssp.h	(revision 1046)
+++ Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/ssp/ssp.h	(revision 1046)
@@ -0,0 +1,65 @@
+/* Object size checking support macros.
+   Copyright (C) 2004, 2005, 2009 Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 3, or (at your option) any later
+version.
+
+In addition to the permissions in the GNU General Public License, the
+Free Software Foundation gives you unlimited permission to link the
+compiled version of this file into combinations with other programs,
+and to distribute those combinations without any restriction coming
+from the use of this file.  (The General Public License restrictions
+do apply in other respects; for example, they cover modification of
+the file, and distribution when not linked into a combine
+executable.)
+
+GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+Under Section 7 of GPL version 3, you are granted additional
+permissions described in the GCC Runtime Library Exception, version
+3.1, as published by the Free Software Foundation.
+
+You should have received a copy of the GNU General Public License and
+a copy of the GCC Runtime Library Exception along with this program;
+see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+<http://www.gnu.org/licenses/>.  */
+
+
+#ifndef _SSP_H
+#define _SSP_H 1
+
+#if _FORTIFY_SOURCE > 0 && __OPTIMIZE__ > 0 \
+    && defined __GNUC__ \
+    && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 1)) \
+    && !defined __cplusplus
+# if _FORTIFY_SOURCE == 1
+#  define __SSP_FORTIFY_LEVEL 1
+# elif _FORTIFY_SOURCE > 1
+#  define __SSP_FORTIFY_LEVEL 2
+# endif
+#endif
+
+#if __SSP_FORTIFY_LEVEL > 0
+# include <stddef.h>
+# define __ssp_bos(ptr) __builtin_object_size (ptr, __SSP_FORTIFY_LEVEL > 1)
+# define __ssp_bos0(ptr) __builtin_object_size (ptr, 0)
+
+# define __SSP_REDIRECT(name, proto, alias) \
+  name proto __asm__ (__SSP_ASMNAME (#alias))
+# define __SSP_ASMNAME(cname)  __SSP_ASMNAME2 (__USER_LABEL_PREFIX__, cname)
+# define __SSP_ASMNAME2(prefix, cname) __SSP_ASMNAME3 (prefix) cname
+# define __SSP_ASMNAME3(prefix) #prefix
+
+# undef __SSP_HAVE_VSNPRINTF
+
+extern void __chk_fail (void) __attribute__((__noreturn__));
+#endif
+
+#endif /* _SSP_H */
Index: Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/ssp/stdio.h
===================================================================
--- Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/ssp/stdio.h	(revision 1046)
+++ Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/ssp/stdio.h	(revision 1046)
@@ -0,0 +1,100 @@
+/* Checking macros for stdio functions.
+   Copyright (C) 2004, 2005, 2009 Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 3, or (at your option) any later
+version.
+
+In addition to the permissions in the GNU General Public License, the
+Free Software Foundation gives you unlimited permission to link the
+compiled version of this file into combinations with other programs,
+and to distribute those combinations without any restriction coming
+from the use of this file.  (The General Public License restrictions
+do apply in other respects; for example, they cover modification of
+the file, and distribution when not linked into a combine
+executable.)
+
+GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+Under Section 7 of GPL version 3, you are granted additional
+permissions described in the GCC Runtime Library Exception, version
+3.1, as published by the Free Software Foundation.
+
+You should have received a copy of the GNU General Public License and
+a copy of the GCC Runtime Library Exception along with this program;
+see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+<http://www.gnu.org/licenses/>.  */
+
+
+#ifndef _SSP_STDIO_H
+#define _SSP_STDIO_H 1
+
+#include <ssp.h>
+#include_next <stdio.h>
+
+#if __SSP_FORTIFY_LEVEL > 0
+
+#include <stdarg.h>
+
+#undef sprintf
+#undef vsprintf
+#undef snprintf
+#undef vsnprintf
+#undef gets
+#undef fgets
+
+extern int __sprintf_chk (char *__restrict__ __s, int __flag, size_t __slen,
+			  __const char *__restrict__ __format, ...);
+extern int __vsprintf_chk (char *__restrict__ __s, int __flag, size_t __slen,
+			   __const char *__restrict__ __format,
+			   va_list __ap);
+
+#define sprintf(str, ...) \
+  __builtin___sprintf_chk (str, 0, __ssp_bos (str), \
+			   __VA_ARGS__)
+#define vsprintf(str, fmt, ap) \
+  __builtin___vsprintf_chk (str, 0, __ssp_bos (str), fmt, ap)
+
+extern int __snprintf_chk (char *__restrict__ __s, size_t __n, int __flag,
+			   size_t __slen, __const char *__restrict__ __format,
+			   ...);
+extern int __vsnprintf_chk (char *__restrict__ __s, size_t __n, int __flag,
+			    size_t __slen, __const char *__restrict__ __format,
+			    va_list __ap);
+
+#define snprintf(str, len, ...) \
+  __builtin___snprintf_chk (str, len, 0, __ssp_bos (str), __VA_ARGS__)
+#define vsnprintf(str, len, fmt, ap) \
+  __builtin___vsnprintf_chk (str, len, 0, __ssp_bos (str), fmt, ap)
+
+extern char *__gets_chk (char *__str, size_t);
+extern char *__SSP_REDIRECT (__gets_alias, (char *__str), gets);
+
+extern inline __attribute__((__always_inline__)) char *
+gets (char *__str)
+{
+  if (__ssp_bos (__str) != (size_t) -1)
+    return __gets_chk (__str, __ssp_bos (__str));
+  return __gets_alias (__str);
+}
+
+extern char *__SSP_REDIRECT (__fgets_alias,
+			     (char *__restrict__ __s, int __n,
+			      FILE *__restrict__ __stream), fgets);
+
+extern inline __attribute__((__always_inline__)) char *
+fgets (char *__restrict__ __s, int __n, FILE *__restrict__ __stream)
+{
+  if (__ssp_bos (__s) != (size_t) -1 && (size_t) __n > __ssp_bos (__s))
+    __chk_fail ();
+  return __fgets_alias (__s, __n, __stream);
+}
+
+#endif /* __SSP_FORTIFY_LEVEL > 0 */
+#endif /* _SSP_STDIO_H */
Index: Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/ssp/string.h
===================================================================
--- Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/ssp/string.h	(revision 1046)
+++ Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/ssp/string.h	(revision 1046)
@@ -0,0 +1,167 @@
+/* Checking macros for string functions.
+   Copyright (C) 2004, 2005, 2009 Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 3, or (at your option) any later
+version.
+
+In addition to the permissions in the GNU General Public License, the
+Free Software Foundation gives you unlimited permission to link the
+compiled version of this file into combinations with other programs,
+and to distribute those combinations without any restriction coming
+from the use of this file.  (The General Public License restrictions
+do apply in other respects; for example, they cover modification of
+the file, and distribution when not linked into a combine
+executable.)
+
+GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+Under Section 7 of GPL version 3, you are granted additional
+permissions described in the GCC Runtime Library Exception, version
+3.1, as published by the Free Software Foundation.
+
+You should have received a copy of the GNU General Public License and
+a copy of the GCC Runtime Library Exception along with this program;
+see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+<http://www.gnu.org/licenses/>.  */
+
+
+#ifndef _SSP_STRING_H
+#define _SSP_STRING_H 1
+
+#include <ssp.h>
+#include_next <string.h>
+
+#if __SSP_FORTIFY_LEVEL > 0
+
+#undef memcpy
+#undef memmove
+#undef memset
+#undef strcat
+#undef strcpy
+#undef strncat
+#undef strncpy
+#undef mempcpy
+#undef stpcpy
+#undef bcopy
+#undef bzero
+
+#define memcpy(dest, src, len) \
+  ((__ssp_bos0 (dest) != (size_t) -1)					\
+   ? __builtin___memcpy_chk (dest, src, len, __ssp_bos0 (dest))		\
+   : __memcpy_ichk (dest, src, len))
+static inline __attribute__((__always_inline__)) void *
+__memcpy_ichk (void *__restrict__ __dest, const void *__restrict__ __src,
+	       size_t __len)
+{
+  return __builtin___memcpy_chk (__dest, __src, __len, __ssp_bos0 (__dest));
+}
+
+
+#define memmove(dest, src, len) \
+  ((__ssp_bos0 (dest) != (size_t) -1)					\
+   ? __builtin___memmove_chk (dest, src, len, __ssp_bos0 (dest))		\
+   : __memmove_ichk (dest, src, len))
+static inline __attribute__((__always_inline__)) void *
+__memmove_ichk (void *__dest, const void *__src, size_t __len)
+{
+  return __builtin___memmove_chk (__dest, __src, __len, __ssp_bos0 (__dest));
+}
+
+
+#define mempcpy(dest, src, len) \
+  ((__ssp_bos0 (dest) != (size_t) -1)					\
+   ? __builtin___mempcpy_chk (dest, src, len, __ssp_bos0 (dest))	\
+   : __mempcpy_ichk (dest, src, len))
+static inline __attribute__((__always_inline__)) void *
+__mempcpy_ichk (void *__restrict__ __dest, const void *__restrict__ __src,
+		size_t __len)
+{
+  return __builtin___mempcpy_chk (__dest, __src, __len, __ssp_bos0 (__dest));
+}
+
+
+#define memset(dest, ch, len) \
+  ((__ssp_bos0 (dest) != (size_t) -1)					\
+   ? __builtin___memset_chk (dest, ch, len, __ssp_bos0 (dest))		\
+   : __memset_ichk (dest, ch, len))
+static inline __attribute__((__always_inline__)) void *
+__memset_ichk (void *__dest, int __ch, size_t __len)
+{
+  return __builtin___memset_chk (__dest, __ch, __len, __ssp_bos0 (__dest));
+}
+
+#define bcopy(src, dest, len) ((void) \
+ ((__ssp_bos0 (dest) != (size_t) -1)					\
+   ? __builtin___memmove_chk (dest, src, len, __ssp_bos0 (dest))	\
+   : __memmove_ichk (dest, src, len)))
+#define bzero(dest, len) ((void) \
+  ((__ssp_bos0 (dest) != (size_t) -1)					\
+   ? __builtin___memset_chk (dest, '\0', len, __ssp_bos0 (dest))	\
+   : __memset_ichk (dest, '\0', len)))
+
+
+#define strcpy(dest, src) \
+  ((__ssp_bos (dest) != (size_t) -1)					\
+   ? __builtin___strcpy_chk (dest, src, __ssp_bos (dest))		\
+   : __strcpy_ichk (dest, src))
+static inline __attribute__((__always_inline__)) char *
+__strcpy_ichk (char *__restrict__ __dest, const char *__restrict__ __src)
+{
+  return __builtin___strcpy_chk (__dest, __src, __ssp_bos (__dest));
+}
+
+
+#define stpcpy(dest, src) \
+  ((__ssp_bos (dest) != (size_t) -1)					\
+   ? __builtin___stpcpy_chk (dest, src, __ssp_bos (dest))		\
+   : __stpcpy_ichk (dest, src))
+static inline __attribute__((__always_inline__)) char *
+__stpcpy_ichk (char *__restrict__ __dest, const char *__restrict__ __src)
+{
+  return __builtin___stpcpy_chk (__dest, __src, __ssp_bos (__dest));
+}
+
+
+#define strncpy(dest, src, len) \
+  ((__ssp_bos (dest) != (size_t) -1)					\
+   ? __builtin___strncpy_chk (dest, src, len, __ssp_bos (dest))		\
+   : __strncpy_ichk (dest, src, len))
+static inline __attribute__((__always_inline__)) char *
+__strncpy_ichk (char *__restrict__ __dest, const char *__restrict__ __src,
+		size_t __len)
+{
+  return __builtin___strncpy_chk (__dest, __src, __len, __ssp_bos (__dest));
+}
+
+
+#define strcat(dest, src) \
+  ((__ssp_bos (dest) != (size_t) -1)					\
+   ? __builtin___strcat_chk (dest, src, __ssp_bos (dest))		\
+   : __strcat_ichk (dest, src))
+static inline __attribute__((__always_inline__)) char *
+__strcat_ichk (char *__restrict__ __dest, const char *__restrict__ __src)
+{
+  return __builtin___strcat_chk (__dest, __src, __ssp_bos (__dest));
+}
+
+
+#define strncat(dest, src, len) \
+  ((__ssp_bos (dest) != (size_t) -1)					\
+   ? __builtin___strncat_chk (dest, src, len, __ssp_bos (dest))		\
+   : __strncat_ichk (dest, src, len))
+static inline __attribute__((__always_inline__)) char *
+__strncat_ichk (char *__restrict__ __dest, const char *__restrict__ __src,
+		size_t __len)
+{
+  return __builtin___strncat_chk (__dest, __src, __len, __ssp_bos (__dest));
+}
+
+#endif /* __SSP_FORTIFY_LEVEL > 0 */
+#endif /* _SSP_STRING_H */
Index: Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/ssp/unistd.h
===================================================================
--- Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/ssp/unistd.h	(revision 1046)
+++ Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/ssp/unistd.h	(revision 1046)
@@ -0,0 +1,84 @@
+/* Checking macros for unistd functions.
+   Copyright (C) 2005, 2009 Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 3, or (at your option) any later
+version.
+
+In addition to the permissions in the GNU General Public License, the
+Free Software Foundation gives you unlimited permission to link the
+compiled version of this file into combinations with other programs,
+and to distribute those combinations without any restriction coming
+from the use of this file.  (The General Public License restrictions
+do apply in other respects; for example, they cover modification of
+the file, and distribution when not linked into a combine
+executable.)
+
+GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+Under Section 7 of GPL version 3, you are granted additional
+permissions described in the GCC Runtime Library Exception, version
+3.1, as published by the Free Software Foundation.
+
+You should have received a copy of the GNU General Public License and
+a copy of the GCC Runtime Library Exception along with this program;
+see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+<http://www.gnu.org/licenses/>.  */
+
+
+#ifndef _SSP_UNISTD_H
+#define _SSP_UNISTD_H 1
+
+#include <ssp.h>
+#include_next <unistd.h>
+
+#if __SSP_FORTIFY_LEVEL > 0
+
+#undef read
+#undef readlink
+#undef getcwd
+
+extern ssize_t __SSP_REDIRECT (__read_alias, (int __fd, void *__buf,
+					      size_t __nbytes), read);
+
+extern inline __attribute__((__always_inline__)) ssize_t
+read (int __fd, void *__buf, size_t __nbytes)
+{
+  if (__ssp_bos0 (__buf) != (size_t) -1 && __nbytes > __ssp_bos0 (__buf))
+    __chk_fail ();
+  return __read_alias (__fd, __buf, __nbytes);
+}
+
+extern int __SSP_REDIRECT (__readlink_alias,
+			   (const char *__restrict__ __path,
+			    char *__restrict__ __buf, size_t __len),
+			   readlink);
+
+extern inline __attribute__((__always_inline__)) int
+readlink (const char *__restrict__ __path, char *__restrict__ __buf,
+	  size_t __len)
+{
+  if (__ssp_bos (__buf) != (size_t) -1 && __len > __ssp_bos (__buf))
+    __chk_fail ();
+  return __readlink_alias (__path, __buf, __len);
+}
+
+extern char *__SSP_REDIRECT (__getcwd_alias,
+			     (char *__buf, size_t __size), getcwd);
+
+extern inline __attribute__((__always_inline__)) char *
+getcwd (char *__buf, size_t __size)
+{
+  if (__ssp_bos (__buf) != (size_t) -1 && __size > __ssp_bos (__buf))
+    __chk_fail ();
+  return __getcwd_alias (__buf, __size);
+}
+
+#endif /* __SSP_FORTIFY_LEVEL > 0 */
+#endif /* _SSP_UNISTD_H */
Index: Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/stdalign.h
===================================================================
--- Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/stdalign.h	(revision 1046)
+++ Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/stdalign.h	(revision 1046)
@@ -0,0 +1,39 @@
+/* Copyright (C) 2011-2015 Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 3, or (at your option)
+any later version.
+
+GCC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+Under Section 7 of GPL version 3, you are granted additional
+permissions described in the GCC Runtime Library Exception, version
+3.1, as published by the Free Software Foundation.
+
+You should have received a copy of the GNU General Public License and
+a copy of the GCC Runtime Library Exception along with this program;
+see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+<http://www.gnu.org/licenses/>.  */
+
+/* ISO C1X: 7.15 Alignment <stdalign.h>.  */
+
+#ifndef _STDALIGN_H
+#define _STDALIGN_H
+
+#ifndef __cplusplus
+
+#define alignas _Alignas
+#define alignof _Alignof
+
+#define __alignas_is_defined 1
+#define __alignof_is_defined 1
+
+#endif
+
+#endif	/* stdalign.h */
Index: Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/stdarg.h
===================================================================
--- Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/stdarg.h	(revision 1046)
+++ Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/stdarg.h	(revision 1046)
@@ -0,0 +1,126 @@
+/* Copyright (C) 1989-2015 Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 3, or (at your option)
+any later version.
+
+GCC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+Under Section 7 of GPL version 3, you are granted additional
+permissions described in the GCC Runtime Library Exception, version
+3.1, as published by the Free Software Foundation.
+
+You should have received a copy of the GNU General Public License and
+a copy of the GCC Runtime Library Exception along with this program;
+see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+<http://www.gnu.org/licenses/>.  */
+
+/*
+ * ISO C Standard:  7.15  Variable arguments  <stdarg.h>
+ */
+
+#ifndef _STDARG_H
+#ifndef _ANSI_STDARG_H_
+#ifndef __need___va_list
+#define _STDARG_H
+#define _ANSI_STDARG_H_
+#endif /* not __need___va_list */
+#undef __need___va_list
+
+/* Define __gnuc_va_list.  */
+
+#ifndef __GNUC_VA_LIST
+#define __GNUC_VA_LIST
+typedef __builtin_va_list __gnuc_va_list;
+#endif
+
+/* Define the standard macros for the user,
+   if this invocation was from the user program.  */
+#ifdef _STDARG_H
+
+#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)
+#if !defined(__STRICT_ANSI__) || __STDC_VERSION__ + 0 >= 199900L || defined(__GXX_EXPERIMENTAL_CXX0X__)
+#define va_copy(d,s)	__builtin_va_copy(d,s)
+#endif
+#define __va_copy(d,s)	__builtin_va_copy(d,s)
+
+/* Define va_list, if desired, from __gnuc_va_list. */
+/* We deliberately do not define va_list when called from
+   stdio.h, because ANSI C says that stdio.h is not supposed to define
+   va_list.  stdio.h needs to have access to that data type, 
+   but must not use that name.  It should use the name __gnuc_va_list,
+   which is safe because it is reserved for the implementation.  */
+
+#ifdef _BSD_VA_LIST
+#undef _BSD_VA_LIST
+#endif
+
+#if defined(__svr4__) || (defined(_SCO_DS) && !defined(__VA_LIST))
+/* SVR4.2 uses _VA_LIST for an internal alias for va_list,
+   so we must avoid testing it and setting it here.
+   SVR4 uses _VA_LIST as a flag in stdarg.h, but we should
+   have no conflict with that.  */
+#ifndef _VA_LIST_
+#define _VA_LIST_
+#ifdef __i860__
+#ifndef _VA_LIST
+#define _VA_LIST va_list
+#endif
+#endif /* __i860__ */
+typedef __gnuc_va_list va_list;
+#ifdef _SCO_DS
+#define __VA_LIST
+#endif
+#endif /* _VA_LIST_ */
+#else /* not __svr4__ || _SCO_DS */
+
+/* The macro _VA_LIST_ is the same thing used by this file in Ultrix.
+   But on BSD NET2 we must not test or define or undef it.
+   (Note that the comments in NET 2's ansi.h
+   are incorrect for _VA_LIST_--see stdio.h!)  */
+#if !defined (_VA_LIST_) || defined (__BSD_NET2__) || defined (____386BSD____) || defined (__bsdi__) || defined (__sequent__) || defined (__FreeBSD__) || defined(WINNT)
+/* The macro _VA_LIST_DEFINED is used in Windows NT 3.5  */
+#ifndef _VA_LIST_DEFINED
+/* The macro _VA_LIST is used in SCO Unix 3.2.  */
+#ifndef _VA_LIST
+/* The macro _VA_LIST_T_H is used in the Bull dpx2  */
+#ifndef _VA_LIST_T_H
+/* The macro __va_list__ is used by BeOS.  */
+#ifndef __va_list__
+typedef __gnuc_va_list va_list;
+#endif /* not __va_list__ */
+#endif /* not _VA_LIST_T_H */
+#endif /* not _VA_LIST */
+#endif /* not _VA_LIST_DEFINED */
+#if !(defined (__BSD_NET2__) || defined (____386BSD____) || defined (__bsdi__) || defined (__sequent__) || defined (__FreeBSD__))
+#define _VA_LIST_
+#endif
+#ifndef _VA_LIST
+#define _VA_LIST
+#endif
+#ifndef _VA_LIST_DEFINED
+#define _VA_LIST_DEFINED
+#endif
+#ifndef _VA_LIST_T_H
+#define _VA_LIST_T_H
+#endif
+#ifndef __va_list__
+#define __va_list__
+#endif
+
+#endif /* not _VA_LIST_, except on certain systems */
+
+#endif /* not __svr4__ */
+
+#endif /* _STDARG_H */
+
+#endif /* not _ANSI_STDARG_H_ */
+#endif /* not _STDARG_H */
Index: Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/stdatomic.h
===================================================================
--- Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/stdatomic.h	(revision 1046)
+++ Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/stdatomic.h	(revision 1046)
@@ -0,0 +1,238 @@
+/* Copyright (C) 2013-2015 Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 3, or (at your option)
+any later version.
+
+GCC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+Under Section 7 of GPL version 3, you are granted additional
+permissions described in the GCC Runtime Library Exception, version
+3.1, as published by the Free Software Foundation.
+
+You should have received a copy of the GNU General Public License and
+a copy of the GCC Runtime Library Exception along with this program;
+see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+<http://www.gnu.org/licenses/>.  */
+
+/* ISO C11 Standard:  7.17  Atomics <stdatomic.h>.  */
+
+#ifndef _STDATOMIC_H
+#define _STDATOMIC_H
+
+typedef enum
+  {
+    memory_order_relaxed = __ATOMIC_RELAXED,
+    memory_order_consume = __ATOMIC_CONSUME,
+    memory_order_acquire = __ATOMIC_ACQUIRE,
+    memory_order_release = __ATOMIC_RELEASE,
+    memory_order_acq_rel = __ATOMIC_ACQ_REL,
+    memory_order_seq_cst = __ATOMIC_SEQ_CST
+  } memory_order;
+
+
+typedef _Atomic _Bool atomic_bool;
+typedef _Atomic char atomic_char;
+typedef _Atomic signed char atomic_schar;
+typedef _Atomic unsigned char atomic_uchar;
+typedef _Atomic short atomic_short;
+typedef _Atomic unsigned short atomic_ushort;
+typedef _Atomic int atomic_int;
+typedef _Atomic unsigned int atomic_uint;
+typedef _Atomic long atomic_long;
+typedef _Atomic unsigned long atomic_ulong;
+typedef _Atomic long long atomic_llong;
+typedef _Atomic unsigned long long atomic_ullong;
+typedef _Atomic __CHAR16_TYPE__ atomic_char16_t;
+typedef _Atomic __CHAR32_TYPE__ atomic_char32_t;
+typedef _Atomic __WCHAR_TYPE__ atomic_wchar_t;
+typedef _Atomic __INT_LEAST8_TYPE__ atomic_int_least8_t;
+typedef _Atomic __UINT_LEAST8_TYPE__ atomic_uint_least8_t;
+typedef _Atomic __INT_LEAST16_TYPE__ atomic_int_least16_t;
+typedef _Atomic __UINT_LEAST16_TYPE__ atomic_uint_least16_t;
+typedef _Atomic __INT_LEAST32_TYPE__ atomic_int_least32_t;
+typedef _Atomic __UINT_LEAST32_TYPE__ atomic_uint_least32_t;
+typedef _Atomic __INT_LEAST64_TYPE__ atomic_int_least64_t;
+typedef _Atomic __UINT_LEAST64_TYPE__ atomic_uint_least64_t;
+typedef _Atomic __INT_FAST8_TYPE__ atomic_int_fast8_t;
+typedef _Atomic __UINT_FAST8_TYPE__ atomic_uint_fast8_t;
+typedef _Atomic __INT_FAST16_TYPE__ atomic_int_fast16_t;
+typedef _Atomic __UINT_FAST16_TYPE__ atomic_uint_fast16_t;
+typedef _Atomic __INT_FAST32_TYPE__ atomic_int_fast32_t;
+typedef _Atomic __UINT_FAST32_TYPE__ atomic_uint_fast32_t;
+typedef _Atomic __INT_FAST64_TYPE__ atomic_int_fast64_t;
+typedef _Atomic __UINT_FAST64_TYPE__ atomic_uint_fast64_t;
+typedef _Atomic __INTPTR_TYPE__ atomic_intptr_t;
+typedef _Atomic __UINTPTR_TYPE__ atomic_uintptr_t;
+typedef _Atomic __SIZE_TYPE__ atomic_size_t;
+typedef _Atomic __PTRDIFF_TYPE__ atomic_ptrdiff_t;
+typedef _Atomic __INTMAX_TYPE__ atomic_intmax_t;
+typedef _Atomic __UINTMAX_TYPE__ atomic_uintmax_t;        
+
+
+#define ATOMIC_VAR_INIT(VALUE)	(VALUE)
+#define atomic_init(PTR, VAL)			\
+  do						\
+    {						\
+      *(PTR) = (VAL);				\
+    }						\
+  while (0)
+
+#define kill_dependency(Y)			\
+  __extension__					\
+  ({						\
+    __auto_type __kill_dependency_tmp = (Y);	\
+    __kill_dependency_tmp;			\
+  })
+
+#define atomic_thread_fence(MO)	__atomic_thread_fence (MO)
+#define atomic_signal_fence(MO)	__atomic_signal_fence  (MO)
+#define atomic_is_lock_free(OBJ) __atomic_is_lock_free (sizeof (*(OBJ)), (OBJ))
+
+#define ATOMIC_BOOL_LOCK_FREE		__GCC_ATOMIC_BOOL_LOCK_FREE
+#define ATOMIC_CHAR_LOCK_FREE		__GCC_ATOMIC_CHAR_LOCK_FREE
+#define ATOMIC_CHAR16_T_LOCK_FREE	__GCC_ATOMIC_CHAR16_T_LOCK_FREE
+#define ATOMIC_CHAR32_T_LOCK_FREE	__GCC_ATOMIC_CHAR32_T_LOCK_FREE
+#define ATOMIC_WCHAR_T_LOCK_FREE	__GCC_ATOMIC_WCHAR_T_LOCK_FREE
+#define ATOMIC_SHORT_LOCK_FREE		__GCC_ATOMIC_SHORT_LOCK_FREE
+#define ATOMIC_INT_LOCK_FREE		__GCC_ATOMIC_INT_LOCK_FREE
+#define ATOMIC_LONG_LOCK_FREE		__GCC_ATOMIC_LONG_LOCK_FREE
+#define ATOMIC_LLONG_LOCK_FREE		__GCC_ATOMIC_LLONG_LOCK_FREE
+#define ATOMIC_POINTER_LOCK_FREE	__GCC_ATOMIC_POINTER_LOCK_FREE
+
+
+/* Note that these macros require __typeof__ and __auto_type to remove
+   _Atomic qualifiers (and const qualifiers, if those are valid on
+   macro operands).
+   
+   Also note that the header file uses the generic form of __atomic
+   builtins, which requires the address to be taken of the value
+   parameter, and then we pass that value on.  This allows the macros
+   to work for any type, and the compiler is smart enough to convert
+   these to lock-free _N variants if possible, and throw away the
+   temps.  */
+
+#define atomic_store_explicit(PTR, VAL, MO)				\
+  __extension__								\
+  ({									\
+    __auto_type __atomic_store_ptr = (PTR);				\
+    __typeof__ (*__atomic_store_ptr) __atomic_store_tmp = (VAL);	\
+    __atomic_store (__atomic_store_ptr, &__atomic_store_tmp, (MO));	\
+  })
+
+#define atomic_store(PTR, VAL)				\
+  atomic_store_explicit (PTR, VAL, __ATOMIC_SEQ_CST)
+
+
+#define atomic_load_explicit(PTR, MO)					\
+  __extension__								\
+  ({									\
+    __auto_type __atomic_load_ptr = (PTR);				\
+    __typeof__ (*__atomic_load_ptr) __atomic_load_tmp;			\
+    __atomic_load (__atomic_load_ptr, &__atomic_load_tmp, (MO));	\
+    __atomic_load_tmp;							\
+  })
+
+#define atomic_load(PTR)  atomic_load_explicit (PTR, __ATOMIC_SEQ_CST)
+
+
+#define atomic_exchange_explicit(PTR, VAL, MO)				\
+  __extension__								\
+  ({									\
+    __auto_type __atomic_exchange_ptr = (PTR);				\
+    __typeof__ (*__atomic_exchange_ptr) __atomic_exchange_val = (VAL);	\
+    __typeof__ (*__atomic_exchange_ptr) __atomic_exchange_tmp;		\
+    __atomic_exchange (__atomic_exchange_ptr, &__atomic_exchange_val,	\
+		       &__atomic_exchange_tmp, (MO));			\
+    __atomic_exchange_tmp;						\
+  })
+
+#define atomic_exchange(PTR, VAL) 			\
+  atomic_exchange_explicit (PTR, VAL, __ATOMIC_SEQ_CST)
+
+
+#define atomic_compare_exchange_strong_explicit(PTR, VAL, DES, SUC, FAIL) \
+  __extension__								\
+  ({									\
+    __auto_type __atomic_compare_exchange_ptr = (PTR);			\
+    __typeof__ (*__atomic_compare_exchange_ptr) __atomic_compare_exchange_tmp \
+      = (DES);								\
+    __atomic_compare_exchange (__atomic_compare_exchange_ptr, (VAL),	\
+			       &__atomic_compare_exchange_tmp, 0,	\
+			       (SUC), (FAIL));				\
+  })
+
+#define atomic_compare_exchange_strong(PTR, VAL, DES) 			   \
+  atomic_compare_exchange_strong_explicit (PTR, VAL, DES, __ATOMIC_SEQ_CST, \
+					   __ATOMIC_SEQ_CST)
+
+#define atomic_compare_exchange_weak_explicit(PTR, VAL, DES, SUC, FAIL) \
+  __extension__								\
+  ({									\
+    __auto_type __atomic_compare_exchange_ptr = (PTR);			\
+    __typeof__ (*__atomic_compare_exchange_ptr) __atomic_compare_exchange_tmp \
+      = (DES);								\
+    __atomic_compare_exchange (__atomic_compare_exchange_ptr, (VAL),	\
+			       &__atomic_compare_exchange_tmp, 1,	\
+			       (SUC), (FAIL));				\
+  })
+
+#define atomic_compare_exchange_weak(PTR, VAL, DES)			\
+  atomic_compare_exchange_weak_explicit (PTR, VAL, DES, __ATOMIC_SEQ_CST, \
+					 __ATOMIC_SEQ_CST)
+
+
+
+#define atomic_fetch_add(PTR, VAL) __atomic_fetch_add ((PTR), (VAL), 	\
+						       __ATOMIC_SEQ_CST)
+#define atomic_fetch_add_explicit(PTR, VAL, MO) 			\
+			  __atomic_fetch_add ((PTR), (VAL), (MO))
+
+#define atomic_fetch_sub(PTR, VAL) __atomic_fetch_sub ((PTR), (VAL), 	\
+						       __ATOMIC_SEQ_CST)
+#define atomic_fetch_sub_explicit(PTR, VAL, MO) 			\
+			  __atomic_fetch_sub ((PTR), (VAL), (MO))
+
+#define atomic_fetch_or(PTR, VAL) __atomic_fetch_or ((PTR), (VAL), 	\
+						       __ATOMIC_SEQ_CST)
+#define atomic_fetch_or_explicit(PTR, VAL, MO) 			\
+			  __atomic_fetch_or ((PTR), (VAL), (MO))
+
+#define atomic_fetch_xor(PTR, VAL) __atomic_fetch_xor ((PTR), (VAL), 	\
+						       __ATOMIC_SEQ_CST)
+#define atomic_fetch_xor_explicit(PTR, VAL, MO) 			\
+			  __atomic_fetch_xor ((PTR), (VAL), (MO))
+
+#define atomic_fetch_and(PTR, VAL) __atomic_fetch_and ((PTR), (VAL), 	\
+						       __ATOMIC_SEQ_CST)
+#define atomic_fetch_and_explicit(PTR, VAL, MO) 			\
+			  __atomic_fetch_and ((PTR), (VAL), (MO))
+
+
+typedef _Atomic struct
+{
+#if __GCC_ATOMIC_TEST_AND_SET_TRUEVAL == 1
+  _Bool __val;
+#else
+  unsigned char __val;
+#endif
+} atomic_flag;
+
+#define ATOMIC_FLAG_INIT	{ 0 }
+
+
+#define atomic_flag_test_and_set(PTR) 					\
+			__atomic_test_and_set ((PTR), __ATOMIC_SEQ_CST)
+#define atomic_flag_test_and_set_explicit(PTR, MO)			\
+			__atomic_test_and_set ((PTR), (MO))
+
+#define atomic_flag_clear(PTR)	__atomic_clear ((PTR), __ATOMIC_SEQ_CST)
+#define atomic_flag_clear_explicit(PTR, MO)   __atomic_clear ((PTR), (MO))
+
+#endif  /* _STDATOMIC_H */
Index: Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/stdbool.h
===================================================================
--- Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/stdbool.h	(revision 1046)
+++ Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/stdbool.h	(revision 1046)
@@ -0,0 +1,54 @@
+/* Copyright (C) 1998-2015 Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 3, or (at your option)
+any later version.
+
+GCC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+Under Section 7 of GPL version 3, you are granted additional
+permissions described in the GCC Runtime Library Exception, version
+3.1, as published by the Free Software Foundation.
+
+You should have received a copy of the GNU General Public License and
+a copy of the GCC Runtime Library Exception along with this program;
+see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+<http://www.gnu.org/licenses/>.  */
+
+/*
+ * ISO C Standard:  7.16  Boolean type and values  <stdbool.h>
+ */
+
+#ifndef _STDBOOL_H
+#define _STDBOOL_H
+
+#ifndef __cplusplus
+
+#define bool	_Bool
+#define true	1
+#define false	0
+
+#else /* __cplusplus */
+
+/* Supporting _Bool in C++ is a GCC extension.  */
+#define _Bool	bool
+
+#if __cplusplus < 201103L
+/* Defining these macros in C++98 is a GCC extension.  */
+#define bool	bool
+#define false	false
+#define true	true
+#endif
+
+#endif /* __cplusplus */
+
+/* Signal that all the definitions are present.  */
+#define __bool_true_false_are_defined	1
+
+#endif	/* stdbool.h */
Index: Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/stddef.h
===================================================================
--- Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/stddef.h	(revision 1046)
+++ Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/stddef.h	(revision 1046)
@@ -0,0 +1,443 @@
+/* Copyright (C) 1989-2015 Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 3, or (at your option)
+any later version.
+
+GCC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+Under Section 7 of GPL version 3, you are granted additional
+permissions described in the GCC Runtime Library Exception, version
+3.1, as published by the Free Software Foundation.
+
+You should have received a copy of the GNU General Public License and
+a copy of the GCC Runtime Library Exception along with this program;
+see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+<http://www.gnu.org/licenses/>.  */
+
+/*
+ * ISO C Standard:  7.17  Common definitions  <stddef.h>
+ */
+#if (!defined(_STDDEF_H) && !defined(_STDDEF_H_) && !defined(_ANSI_STDDEF_H) \
+     && !defined(__STDDEF_H__)) \
+    || defined(__need_wchar_t) || defined(__need_size_t) \
+    || defined(__need_ptrdiff_t) || defined(__need_NULL) \
+    || defined(__need_wint_t)
+
+/* Any one of these symbols __need_* means that GNU libc
+   wants us just to define one data type.  So don't define
+   the symbols that indicate this file's entire job has been done.  */
+#if (!defined(__need_wchar_t) && !defined(__need_size_t)	\
+     && !defined(__need_ptrdiff_t) && !defined(__need_NULL)	\
+     && !defined(__need_wint_t))
+#define _STDDEF_H
+#define _STDDEF_H_
+/* snaroff@next.com says the NeXT needs this.  */
+#define _ANSI_STDDEF_H
+#endif
+
+#ifndef __sys_stdtypes_h
+/* This avoids lossage on SunOS but only if stdtypes.h comes first.
+   There's no way to win with the other order!  Sun lossage.  */
+
+/* On 4.3bsd-net2, make sure ansi.h is included, so we have
+   one less case to deal with in the following.  */
+#if defined (__BSD_NET2__) || defined (____386BSD____) || (defined (__FreeBSD__) && (__FreeBSD__ < 5)) || defined(__NetBSD__)
+#include <machine/ansi.h>
+#endif
+/* On FreeBSD 5, machine/ansi.h does not exist anymore... */
+#if defined (__FreeBSD__) && (__FreeBSD__ >= 5)
+#include <sys/_types.h>
+#endif
+
+/* In 4.3bsd-net2, machine/ansi.h defines these symbols, which are
+   defined if the corresponding type is *not* defined.
+   FreeBSD-2.1 defines _MACHINE_ANSI_H_ instead of _ANSI_H_.
+   NetBSD defines _I386_ANSI_H_ and _X86_64_ANSI_H_ instead of _ANSI_H_ */
+#if defined(_ANSI_H_) || defined(_MACHINE_ANSI_H_) || defined(_X86_64_ANSI_H_)  || defined(_I386_ANSI_H_)
+#if !defined(_SIZE_T_) && !defined(_BSD_SIZE_T_)
+#define _SIZE_T
+#endif
+#if !defined(_PTRDIFF_T_) && !defined(_BSD_PTRDIFF_T_)
+#define _PTRDIFF_T
+#endif
+/* On BSD/386 1.1, at least, machine/ansi.h defines _BSD_WCHAR_T_
+   instead of _WCHAR_T_. */
+#if !defined(_WCHAR_T_) && !defined(_BSD_WCHAR_T_)
+#ifndef _BSD_WCHAR_T_
+#define _WCHAR_T
+#endif
+#endif
+/* Undef _FOO_T_ if we are supposed to define foo_t.  */
+#if defined (__need_ptrdiff_t) || defined (_STDDEF_H_)
+#undef _PTRDIFF_T_
+#undef _BSD_PTRDIFF_T_
+#endif
+#if defined (__need_size_t) || defined (_STDDEF_H_)
+#undef _SIZE_T_
+#undef _BSD_SIZE_T_
+#endif
+#if defined (__need_wchar_t) || defined (_STDDEF_H_)
+#undef _WCHAR_T_
+#undef _BSD_WCHAR_T_
+#endif
+#endif /* defined(_ANSI_H_) || defined(_MACHINE_ANSI_H_) || defined(_X86_64_ANSI_H_) || defined(_I386_ANSI_H_) */
+
+/* Sequent's header files use _PTRDIFF_T_ in some conflicting way.
+   Just ignore it.  */
+#if defined (__sequent__) && defined (_PTRDIFF_T_)
+#undef _PTRDIFF_T_
+#endif
+
+/* On VxWorks, <type/vxTypesBase.h> may have defined macros like
+   _TYPE_size_t which will typedef size_t.  fixincludes patched the
+   vxTypesBase.h so that this macro is only defined if _GCC_SIZE_T is
+   not defined, and so that defining this macro defines _GCC_SIZE_T.
+   If we find that the macros are still defined at this point, we must
+   invoke them so that the type is defined as expected.  */
+#if defined (_TYPE_ptrdiff_t) && (defined (__need_ptrdiff_t) || defined (_STDDEF_H_))
+_TYPE_ptrdiff_t;
+#undef _TYPE_ptrdiff_t
+#endif
+#if defined (_TYPE_size_t) && (defined (__need_size_t) || defined (_STDDEF_H_))
+_TYPE_size_t;
+#undef _TYPE_size_t
+#endif
+#if defined (_TYPE_wchar_t) && (defined (__need_wchar_t) || defined (_STDDEF_H_))
+_TYPE_wchar_t;
+#undef _TYPE_wchar_t
+#endif
+
+/* In case nobody has defined these types, but we aren't running under
+   GCC 2.00, make sure that __PTRDIFF_TYPE__, __SIZE_TYPE__, and
+   __WCHAR_TYPE__ have reasonable values.  This can happen if the
+   parts of GCC is compiled by an older compiler, that actually
+   include gstddef.h, such as collect2.  */
+
+/* Signed type of difference of two pointers.  */
+
+/* Define this type if we are doing the whole job,
+   or if we want this type in particular.  */
+#if defined (_STDDEF_H) || defined (__need_ptrdiff_t)
+#ifndef _PTRDIFF_T	/* in case <sys/types.h> has defined it. */
+#ifndef _T_PTRDIFF_
+#ifndef _T_PTRDIFF
+#ifndef __PTRDIFF_T
+#ifndef _PTRDIFF_T_
+#ifndef _BSD_PTRDIFF_T_
+#ifndef ___int_ptrdiff_t_h
+#ifndef _GCC_PTRDIFF_T
+#ifndef _PTRDIFF_T_DECLARED /* DragonFly */
+#define _PTRDIFF_T
+#define _T_PTRDIFF_
+#define _T_PTRDIFF
+#define __PTRDIFF_T
+#define _PTRDIFF_T_
+#define _BSD_PTRDIFF_T_
+#define ___int_ptrdiff_t_h
+#define _GCC_PTRDIFF_T
+#define _PTRDIFF_T_DECLARED
+#ifndef __PTRDIFF_TYPE__
+#define __PTRDIFF_TYPE__ long int
+#endif
+typedef __PTRDIFF_TYPE__ ptrdiff_t;
+#endif /* _PTRDIFF_T_DECLARED */
+#endif /* _GCC_PTRDIFF_T */
+#endif /* ___int_ptrdiff_t_h */
+#endif /* _BSD_PTRDIFF_T_ */
+#endif /* _PTRDIFF_T_ */
+#endif /* __PTRDIFF_T */
+#endif /* _T_PTRDIFF */
+#endif /* _T_PTRDIFF_ */
+#endif /* _PTRDIFF_T */
+
+/* If this symbol has done its job, get rid of it.  */
+#undef	__need_ptrdiff_t
+
+#endif /* _STDDEF_H or __need_ptrdiff_t.  */
+
+/* Unsigned type of `sizeof' something.  */
+
+/* Define this type if we are doing the whole job,
+   or if we want this type in particular.  */
+#if defined (_STDDEF_H) || defined (__need_size_t)
+#ifndef __size_t__	/* BeOS */
+#ifndef __SIZE_T__	/* Cray Unicos/Mk */
+#ifndef _SIZE_T	/* in case <sys/types.h> has defined it. */
+#ifndef _SYS_SIZE_T_H
+#ifndef _T_SIZE_
+#ifndef _T_SIZE
+#ifndef __SIZE_T
+#ifndef _SIZE_T_
+#ifndef _BSD_SIZE_T_
+#ifndef _SIZE_T_DEFINED_
+#ifndef _SIZE_T_DEFINED
+#ifndef _BSD_SIZE_T_DEFINED_	/* Darwin */
+#ifndef _SIZE_T_DECLARED	/* FreeBSD 5 */
+#ifndef ___int_size_t_h
+#ifndef _GCC_SIZE_T
+#ifndef _SIZET_
+#ifndef __size_t
+#define __size_t__	/* BeOS */
+#define __SIZE_T__	/* Cray Unicos/Mk */
+#define _SIZE_T
+#define _SYS_SIZE_T_H
+#define _T_SIZE_
+#define _T_SIZE
+#define __SIZE_T
+#define _SIZE_T_
+#define _BSD_SIZE_T_
+#define _SIZE_T_DEFINED_
+#define _SIZE_T_DEFINED
+#define _BSD_SIZE_T_DEFINED_	/* Darwin */
+#define _SIZE_T_DECLARED	/* FreeBSD 5 */
+#define ___int_size_t_h
+#define _GCC_SIZE_T
+#define _SIZET_
+#if (defined (__FreeBSD__) && (__FreeBSD__ >= 5)) \
+  || defined(__DragonFly__) \
+  || defined(__FreeBSD_kernel__)
+/* __size_t is a typedef on FreeBSD 5, must not trash it. */
+#elif defined (__VMS__)
+/* __size_t is also a typedef on VMS.  */
+#else
+#define __size_t
+#endif
+#ifndef __SIZE_TYPE__
+#define __SIZE_TYPE__ long unsigned int
+#endif
+#if !(defined (__GNUG__) && defined (size_t))
+typedef __SIZE_TYPE__ size_t;
+#ifdef __BEOS__
+typedef long ssize_t;
+#endif /* __BEOS__ */
+#endif /* !(defined (__GNUG__) && defined (size_t)) */
+#endif /* __size_t */
+#endif /* _SIZET_ */
+#endif /* _GCC_SIZE_T */
+#endif /* ___int_size_t_h */
+#endif /* _SIZE_T_DECLARED */
+#endif /* _BSD_SIZE_T_DEFINED_ */
+#endif /* _SIZE_T_DEFINED */
+#endif /* _SIZE_T_DEFINED_ */
+#endif /* _BSD_SIZE_T_ */
+#endif /* _SIZE_T_ */
+#endif /* __SIZE_T */
+#endif /* _T_SIZE */
+#endif /* _T_SIZE_ */
+#endif /* _SYS_SIZE_T_H */
+#endif /* _SIZE_T */
+#endif /* __SIZE_T__ */
+#endif /* __size_t__ */
+#undef	__need_size_t
+#endif /* _STDDEF_H or __need_size_t.  */
+
+
+/* Wide character type.
+   Locale-writers should change this as necessary to
+   be big enough to hold unique values not between 0 and 127,
+   and not (wchar_t) -1, for each defined multibyte character.  */
+
+/* Define this type if we are doing the whole job,
+   or if we want this type in particular.  */
+#if defined (_STDDEF_H) || defined (__need_wchar_t)
+#ifndef __wchar_t__	/* BeOS */
+#ifndef __WCHAR_T__	/* Cray Unicos/Mk */
+#ifndef _WCHAR_T
+#ifndef _T_WCHAR_
+#ifndef _T_WCHAR
+#ifndef __WCHAR_T
+#ifndef _WCHAR_T_
+#ifndef _BSD_WCHAR_T_
+#ifndef _BSD_WCHAR_T_DEFINED_    /* Darwin */
+#ifndef _BSD_RUNE_T_DEFINED_	/* Darwin */
+#ifndef _WCHAR_T_DECLARED /* FreeBSD 5 */
+#ifndef _WCHAR_T_DEFINED_
+#ifndef _WCHAR_T_DEFINED
+#ifndef _WCHAR_T_H
+#ifndef ___int_wchar_t_h
+#ifndef __INT_WCHAR_T_H
+#ifndef _GCC_WCHAR_T
+#define __wchar_t__	/* BeOS */
+#define __WCHAR_T__	/* Cray Unicos/Mk */
+#define _WCHAR_T
+#define _T_WCHAR_
+#define _T_WCHAR
+#define __WCHAR_T
+#define _WCHAR_T_
+#define _BSD_WCHAR_T_
+#define _WCHAR_T_DEFINED_
+#define _WCHAR_T_DEFINED
+#define _WCHAR_T_H
+#define ___int_wchar_t_h
+#define __INT_WCHAR_T_H
+#define _GCC_WCHAR_T
+#define _WCHAR_T_DECLARED
+
+/* On BSD/386 1.1, at least, machine/ansi.h defines _BSD_WCHAR_T_
+   instead of _WCHAR_T_, and _BSD_RUNE_T_ (which, unlike the other
+   symbols in the _FOO_T_ family, stays defined even after its
+   corresponding type is defined).  If we define wchar_t, then we
+   must undef _WCHAR_T_; for BSD/386 1.1 (and perhaps others), if
+   we undef _WCHAR_T_, then we must also define rune_t, since 
+   headers like runetype.h assume that if machine/ansi.h is included,
+   and _BSD_WCHAR_T_ is not defined, then rune_t is available.
+   machine/ansi.h says, "Note that _WCHAR_T_ and _RUNE_T_ must be of
+   the same type." */
+#ifdef _BSD_WCHAR_T_
+#undef _BSD_WCHAR_T_
+#ifdef _BSD_RUNE_T_
+#if !defined (_ANSI_SOURCE) && !defined (_POSIX_SOURCE)
+typedef _BSD_RUNE_T_ rune_t;
+#define _BSD_WCHAR_T_DEFINED_
+#define _BSD_RUNE_T_DEFINED_	/* Darwin */
+#if defined (__FreeBSD__) && (__FreeBSD__ < 5)
+/* Why is this file so hard to maintain properly?  In contrast to
+   the comment above regarding BSD/386 1.1, on FreeBSD for as long
+   as the symbol has existed, _BSD_RUNE_T_ must not stay defined or
+   redundant typedefs will occur when stdlib.h is included after this file. */
+#undef _BSD_RUNE_T_
+#endif
+#endif
+#endif
+#endif
+/* FreeBSD 5 can't be handled well using "traditional" logic above
+   since it no longer defines _BSD_RUNE_T_ yet still desires to export
+   rune_t in some cases... */
+#if defined (__FreeBSD__) && (__FreeBSD__ >= 5)
+#if !defined (_ANSI_SOURCE) && !defined (_POSIX_SOURCE)
+#if __BSD_VISIBLE
+#ifndef _RUNE_T_DECLARED
+typedef __rune_t        rune_t;
+#define _RUNE_T_DECLARED
+#endif
+#endif
+#endif
+#endif
+
+#ifndef __WCHAR_TYPE__
+#define __WCHAR_TYPE__ int
+#endif
+#ifndef __cplusplus
+typedef __WCHAR_TYPE__ wchar_t;
+#endif
+#endif
+#endif
+#endif
+#endif
+#endif
+#endif
+#endif /* _WCHAR_T_DECLARED */
+#endif /* _BSD_RUNE_T_DEFINED_ */
+#endif
+#endif
+#endif
+#endif
+#endif
+#endif
+#endif
+#endif /* __WCHAR_T__ */
+#endif /* __wchar_t__ */
+#undef	__need_wchar_t
+#endif /* _STDDEF_H or __need_wchar_t.  */
+
+#if defined (__need_wint_t)
+#ifndef _WINT_T
+#define _WINT_T
+
+#ifndef __WINT_TYPE__
+#define __WINT_TYPE__ unsigned int
+#endif
+typedef __WINT_TYPE__ wint_t;
+#endif
+#undef __need_wint_t
+#endif
+
+/*  In 4.3bsd-net2, leave these undefined to indicate that size_t, etc.
+    are already defined.  */
+/*  BSD/OS 3.1 and FreeBSD [23].x require the MACHINE_ANSI_H check here.  */
+/*  NetBSD 5 requires the I386_ANSI_H and X86_64_ANSI_H checks here.  */
+#if defined(_ANSI_H_) || defined(_MACHINE_ANSI_H_) || defined(_X86_64_ANSI_H_) || defined(_I386_ANSI_H_)
+/*  The references to _GCC_PTRDIFF_T_, _GCC_SIZE_T_, and _GCC_WCHAR_T_
+    are probably typos and should be removed before 2.8 is released.  */
+#ifdef _GCC_PTRDIFF_T_
+#undef _PTRDIFF_T_
+#undef _BSD_PTRDIFF_T_
+#endif
+#ifdef _GCC_SIZE_T_
+#undef _SIZE_T_
+#undef _BSD_SIZE_T_
+#endif
+#ifdef _GCC_WCHAR_T_
+#undef _WCHAR_T_
+#undef _BSD_WCHAR_T_
+#endif
+/*  The following ones are the real ones.  */
+#ifdef _GCC_PTRDIFF_T
+#undef _PTRDIFF_T_
+#undef _BSD_PTRDIFF_T_
+#endif
+#ifdef _GCC_SIZE_T
+#undef _SIZE_T_
+#undef _BSD_SIZE_T_
+#endif
+#ifdef _GCC_WCHAR_T
+#undef _WCHAR_T_
+#undef _BSD_WCHAR_T_
+#endif
+#endif /* _ANSI_H_ || _MACHINE_ANSI_H_ || _X86_64_ANSI_H_ || _I386_ANSI_H_ */
+
+#endif /* __sys_stdtypes_h */
+
+/* A null pointer constant.  */
+
+#if defined (_STDDEF_H) || defined (__need_NULL)
+#undef NULL		/* in case <stdio.h> has defined it. */
+#ifdef __GNUG__
+#define NULL __null
+#else   /* G++ */
+#ifndef __cplusplus
+#define NULL ((void *)0)
+#else   /* C++ */
+#define NULL 0
+#endif  /* C++ */
+#endif  /* G++ */
+#endif	/* NULL not defined and <stddef.h> or need NULL.  */
+#undef	__need_NULL
+
+#ifdef _STDDEF_H
+
+/* Offset of member MEMBER in a struct of type TYPE. */
+#define offsetof(TYPE, MEMBER) __builtin_offsetof (TYPE, MEMBER)
+
+#if (defined (__STDC_VERSION__) && __STDC_VERSION__ >= 201112L) \
+  || (defined(__cplusplus) && __cplusplus >= 201103L)
+#ifndef _GCC_MAX_ALIGN_T
+#define _GCC_MAX_ALIGN_T
+/* Type whose alignment is supported in every context and is at least
+   as great as that of any standard type not using alignment
+   specifiers.  */
+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;
+#endif
+#endif /* C11 or C++11.  */
+
+#if defined(__cplusplus) && __cplusplus >= 201103L
+#ifndef _GXX_NULLPTR_T
+#define _GXX_NULLPTR_T
+  typedef decltype(nullptr) nullptr_t;
+#endif
+#endif /* C++11.  */
+
+#endif /* _STDDEF_H was defined this time */
+
+#endif /* !_STDDEF_H && !_STDDEF_H_ && !_ANSI_STDDEF_H && !__STDDEF_H__
+	  || __need_XXX was not defined before */
Index: Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/stdfix.h
===================================================================
--- Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/stdfix.h	(revision 1046)
+++ Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/stdfix.h	(revision 1046)
@@ -0,0 +1,204 @@
+/* Copyright (C) 2007-2015 Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 3, or (at your option)
+any later version.
+
+GCC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+Under Section 7 of GPL version 3, you are granted additional
+permissions described in the GCC Runtime Library Exception, version
+3.1, as published by the Free Software Foundation.
+
+You should have received a copy of the GNU General Public License and
+a copy of the GCC Runtime Library Exception along with this program;
+see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+<http://www.gnu.org/licenses/>.  */
+
+/* ISO/IEC JTC1 SC22 WG14 N1169
+ * Date: 2006-04-04
+ * ISO/IEC TR 18037
+ * Programming languages - C - Extensions to support embedded processors
+ */
+
+#ifndef _STDFIX_H
+#define _STDFIX_H
+
+/* 7.18a.1 Introduction.  */
+
+#undef fract
+#undef accum
+#undef sat
+#define fract		_Fract
+#define accum		_Accum
+#define sat		_Sat
+
+/* 7.18a.3 Precision macros.  */
+
+#undef SFRACT_FBIT
+#undef SFRACT_MIN
+#undef SFRACT_MAX
+#undef SFRACT_EPSILON
+#define SFRACT_FBIT	__SFRACT_FBIT__
+#define SFRACT_MIN	__SFRACT_MIN__
+#define SFRACT_MAX	__SFRACT_MAX__
+#define SFRACT_EPSILON	__SFRACT_EPSILON__
+
+#undef USFRACT_FBIT
+#undef USFRACT_MIN
+#undef USFRACT_MAX
+#undef USFRACT_EPSILON
+#define USFRACT_FBIT	__USFRACT_FBIT__
+#define USFRACT_MIN	__USFRACT_MIN__		/* GCC extension.  */
+#define USFRACT_MAX	__USFRACT_MAX__
+#define USFRACT_EPSILON	__USFRACT_EPSILON__
+
+#undef FRACT_FBIT
+#undef FRACT_MIN
+#undef FRACT_MAX
+#undef FRACT_EPSILON
+#define FRACT_FBIT	__FRACT_FBIT__
+#define FRACT_MIN	__FRACT_MIN__
+#define FRACT_MAX	__FRACT_MAX__
+#define FRACT_EPSILON	__FRACT_EPSILON__
+
+#undef UFRACT_FBIT
+#undef UFRACT_MIN
+#undef UFRACT_MAX
+#undef UFRACT_EPSILON
+#define UFRACT_FBIT	__UFRACT_FBIT__
+#define UFRACT_MIN	__UFRACT_MIN__		/* GCC extension.  */
+#define UFRACT_MAX	__UFRACT_MAX__
+#define UFRACT_EPSILON	__UFRACT_EPSILON__
+
+#undef LFRACT_FBIT
+#undef LFRACT_MIN
+#undef LFRACT_MAX
+#undef LFRACT_EPSILON
+#define LFRACT_FBIT	__LFRACT_FBIT__
+#define LFRACT_MIN	__LFRACT_MIN__
+#define LFRACT_MAX	__LFRACT_MAX__
+#define LFRACT_EPSILON	__LFRACT_EPSILON__
+
+#undef ULFRACT_FBIT
+#undef ULFRACT_MIN
+#undef ULFRACT_MAX
+#undef ULFRACT_EPSILON
+#define ULFRACT_FBIT	__ULFRACT_FBIT__
+#define ULFRACT_MIN	__ULFRACT_MIN__		/* GCC extension.  */
+#define ULFRACT_MAX	__ULFRACT_MAX__
+#define ULFRACT_EPSILON	__ULFRACT_EPSILON__
+
+#undef LLFRACT_FBIT
+#undef LLFRACT_MIN
+#undef LLFRACT_MAX
+#undef LLFRACT_EPSILON
+#define LLFRACT_FBIT	__LLFRACT_FBIT__	/* GCC extension.  */
+#define LLFRACT_MIN	__LLFRACT_MIN__		/* GCC extension.  */
+#define LLFRACT_MAX	__LLFRACT_MAX__		/* GCC extension.  */
+#define LLFRACT_EPSILON	__LLFRACT_EPSILON__	/* GCC extension.  */
+
+#undef ULLFRACT_FBIT
+#undef ULLFRACT_MIN
+#undef ULLFRACT_MAX
+#undef ULLFRACT_EPSILON
+#define ULLFRACT_FBIT	__ULLFRACT_FBIT__	/* GCC extension.  */
+#define ULLFRACT_MIN	__ULLFRACT_MIN__	/* GCC extension.  */
+#define ULLFRACT_MAX	__ULLFRACT_MAX__	/* GCC extension.  */
+#define ULLFRACT_EPSILON	__ULLFRACT_EPSILON__	/* GCC extension.  */
+
+#undef SACCUM_FBIT
+#undef SACCUM_IBIT
+#undef SACCUM_MIN
+#undef SACCUM_MAX
+#undef SACCUM_EPSILON
+#define SACCUM_FBIT	__SACCUM_FBIT__
+#define SACCUM_IBIT	__SACCUM_IBIT__
+#define SACCUM_MIN	__SACCUM_MIN__
+#define SACCUM_MAX	__SACCUM_MAX__
+#define SACCUM_EPSILON	__SACCUM_EPSILON__
+
+#undef USACCUM_FBIT
+#undef USACCUM_IBIT
+#undef USACCUM_MIN
+#undef USACCUM_MAX
+#undef USACCUM_EPSILON
+#define USACCUM_FBIT	__USACCUM_FBIT__
+#define USACCUM_IBIT	__USACCUM_IBIT__
+#define USACCUM_MIN	__USACCUM_MIN__		/* GCC extension.  */
+#define USACCUM_MAX	__USACCUM_MAX__
+#define USACCUM_EPSILON	__USACCUM_EPSILON__
+
+#undef ACCUM_FBIT
+#undef ACCUM_IBIT
+#undef ACCUM_MIN
+#undef ACCUM_MAX
+#undef ACCUM_EPSILON
+#define ACCUM_FBIT	__ACCUM_FBIT__
+#define ACCUM_IBIT	__ACCUM_IBIT__
+#define ACCUM_MIN	__ACCUM_MIN__
+#define ACCUM_MAX	__ACCUM_MAX__
+#define ACCUM_EPSILON	__ACCUM_EPSILON__
+
+#undef UACCUM_FBIT
+#undef UACCUM_IBIT
+#undef UACCUM_MIN
+#undef UACCUM_MAX
+#undef UACCUM_EPSILON
+#define UACCUM_FBIT	__UACCUM_FBIT__
+#define UACCUM_IBIT	__UACCUM_IBIT__
+#define UACCUM_MIN	__UACCUM_MIN__		/* GCC extension.  */
+#define UACCUM_MAX	__UACCUM_MAX__
+#define UACCUM_EPSILON	__UACCUM_EPSILON__
+
+#undef LACCUM_FBIT
+#undef LACCUM_IBIT
+#undef LACCUM_MIN
+#undef LACCUM_MAX
+#undef LACCUM_EPSILON
+#define LACCUM_FBIT	__LACCUM_FBIT__
+#define LACCUM_IBIT	__LACCUM_IBIT__
+#define LACCUM_MIN	__LACCUM_MIN__
+#define LACCUM_MAX	__LACCUM_MAX__
+#define LACCUM_EPSILON	__LACCUM_EPSILON__
+
+#undef ULACCUM_FBIT
+#undef ULACCUM_IBIT
+#undef ULACCUM_MIN
+#undef ULACCUM_MAX
+#undef ULACCUM_EPSILON
+#define ULACCUM_FBIT	__ULACCUM_FBIT__
+#define ULACCUM_IBIT	__ULACCUM_IBIT__
+#define ULACCUM_MIN	__ULACCUM_MIN__		/* GCC extension.  */
+#define ULACCUM_MAX	__ULACCUM_MAX__
+#define ULACCUM_EPSILON	__ULACCUM_EPSILON__
+
+#undef LLACCUM_FBIT
+#undef LLACCUM_IBIT
+#undef LLACCUM_MIN
+#undef LLACCUM_MAX
+#undef LLACCUM_EPSILON
+#define LLACCUM_FBIT	__LLACCUM_FBIT__	/* GCC extension.  */
+#define LLACCUM_IBIT	__LLACCUM_IBIT__	/* GCC extension.  */
+#define LLACCUM_MIN	__LLACCUM_MIN__		/* GCC extension.  */
+#define LLACCUM_MAX	__LLACCUM_MAX__		/* GCC extension.  */
+#define LLACCUM_EPSILON	__LLACCUM_EPSILON__	/* GCC extension.  */
+
+#undef ULLACCUM_FBIT
+#undef ULLACCUM_IBIT
+#undef ULLACCUM_MIN
+#undef ULLACCUM_MAX
+#undef ULLACCUM_EPSILON
+#define ULLACCUM_FBIT	__ULLACCUM_FBIT__	/* GCC extension.  */
+#define ULLACCUM_IBIT	__ULLACCUM_IBIT__	/* GCC extension.  */
+#define ULLACCUM_MIN	__ULLACCUM_MIN__	/* GCC extension.  */
+#define ULLACCUM_MAX	__ULLACCUM_MAX__	/* GCC extension.  */
+#define ULLACCUM_EPSILON	__ULLACCUM_EPSILON__	/* GCC extension.  */
+
+#endif /* _STDFIX_H */
Index: Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/stdint-gcc.h
===================================================================
--- Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/stdint-gcc.h	(revision 1046)
+++ Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/stdint-gcc.h	(revision 1046)
@@ -0,0 +1,263 @@
+/* Copyright (C) 2008-2015 Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 3, or (at your option)
+any later version.
+
+GCC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+Under Section 7 of GPL version 3, you are granted additional
+permissions described in the GCC Runtime Library Exception, version
+3.1, as published by the Free Software Foundation.
+
+You should have received a copy of the GNU General Public License and
+a copy of the GCC Runtime Library Exception along with this program;
+see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+<http://www.gnu.org/licenses/>.  */
+
+/*
+ * ISO C Standard:  7.18  Integer types  <stdint.h>
+ */
+
+#ifndef _GCC_STDINT_H
+#define _GCC_STDINT_H
+
+/* 7.8.1.1 Exact-width integer types */
+
+#ifdef __INT8_TYPE__
+typedef __INT8_TYPE__ int8_t;
+#endif
+#ifdef __INT16_TYPE__
+typedef __INT16_TYPE__ int16_t;
+#endif
+#ifdef __INT32_TYPE__
+typedef __INT32_TYPE__ int32_t;
+#endif
+#ifdef __INT64_TYPE__
+typedef __INT64_TYPE__ int64_t;
+#endif
+#ifdef __UINT8_TYPE__
+typedef __UINT8_TYPE__ uint8_t;
+#endif
+#ifdef __UINT16_TYPE__
+typedef __UINT16_TYPE__ uint16_t;
+#endif
+#ifdef __UINT32_TYPE__
+typedef __UINT32_TYPE__ uint32_t;
+#endif
+#ifdef __UINT64_TYPE__
+typedef __UINT64_TYPE__ uint64_t;
+#endif
+
+/* 7.8.1.2 Minimum-width integer types */
+
+typedef __INT_LEAST8_TYPE__ int_least8_t;
+typedef __INT_LEAST16_TYPE__ int_least16_t;
+typedef __INT_LEAST32_TYPE__ int_least32_t;
+typedef __INT_LEAST64_TYPE__ int_least64_t;
+typedef __UINT_LEAST8_TYPE__ uint_least8_t;
+typedef __UINT_LEAST16_TYPE__ uint_least16_t;
+typedef __UINT_LEAST32_TYPE__ uint_least32_t;
+typedef __UINT_LEAST64_TYPE__ uint_least64_t;
+
+/* 7.8.1.3 Fastest minimum-width integer types */
+
+typedef __INT_FAST8_TYPE__ int_fast8_t;
+typedef __INT_FAST16_TYPE__ int_fast16_t;
+typedef __INT_FAST32_TYPE__ int_fast32_t;
+typedef __INT_FAST64_TYPE__ int_fast64_t;
+typedef __UINT_FAST8_TYPE__ uint_fast8_t;
+typedef __UINT_FAST16_TYPE__ uint_fast16_t;
+typedef __UINT_FAST32_TYPE__ uint_fast32_t;
+typedef __UINT_FAST64_TYPE__ uint_fast64_t;
+
+/* 7.8.1.4 Integer types capable of holding object pointers */
+
+#ifdef __INTPTR_TYPE__
+typedef __INTPTR_TYPE__ intptr_t;
+#endif
+#ifdef __UINTPTR_TYPE__
+typedef __UINTPTR_TYPE__ uintptr_t;
+#endif
+
+/* 7.8.1.5 Greatest-width integer types */
+
+typedef __INTMAX_TYPE__ intmax_t;
+typedef __UINTMAX_TYPE__ uintmax_t;
+
+#if (!defined __cplusplus || __cplusplus >= 201103L \
+     || defined __STDC_LIMIT_MACROS)
+
+/* 7.18.2 Limits of specified-width integer types */
+
+#ifdef __INT8_MAX__
+# undef INT8_MAX
+# define INT8_MAX __INT8_MAX__
+# undef INT8_MIN
+# define INT8_MIN (-INT8_MAX - 1)
+#endif
+#ifdef __UINT8_MAX__
+# undef UINT8_MAX
+# define UINT8_MAX __UINT8_MAX__
+#endif
+#ifdef __INT16_MAX__
+# undef INT16_MAX
+# define INT16_MAX __INT16_MAX__
+# undef INT16_MIN
+# define INT16_MIN (-INT16_MAX - 1)
+#endif
+#ifdef __UINT16_MAX__
+# undef UINT16_MAX
+# define UINT16_MAX __UINT16_MAX__
+#endif
+#ifdef __INT32_MAX__
+# undef INT32_MAX
+# define INT32_MAX __INT32_MAX__
+# undef INT32_MIN
+# define INT32_MIN (-INT32_MAX - 1)
+#endif
+#ifdef __UINT32_MAX__
+# undef UINT32_MAX
+# define UINT32_MAX __UINT32_MAX__
+#endif
+#ifdef __INT64_MAX__
+# undef INT64_MAX
+# define INT64_MAX __INT64_MAX__
+# undef INT64_MIN
+# define INT64_MIN (-INT64_MAX - 1)
+#endif
+#ifdef __UINT64_MAX__
+# undef UINT64_MAX
+# define UINT64_MAX __UINT64_MAX__
+#endif
+
+#undef INT_LEAST8_MAX
+#define INT_LEAST8_MAX __INT_LEAST8_MAX__
+#undef INT_LEAST8_MIN
+#define INT_LEAST8_MIN (-INT_LEAST8_MAX - 1)
+#undef UINT_LEAST8_MAX
+#define UINT_LEAST8_MAX __UINT_LEAST8_MAX__
+#undef INT_LEAST16_MAX
+#define INT_LEAST16_MAX __INT_LEAST16_MAX__
+#undef INT_LEAST16_MIN
+#define INT_LEAST16_MIN (-INT_LEAST16_MAX - 1)
+#undef UINT_LEAST16_MAX
+#define UINT_LEAST16_MAX __UINT_LEAST16_MAX__
+#undef INT_LEAST32_MAX
+#define INT_LEAST32_MAX __INT_LEAST32_MAX__
+#undef INT_LEAST32_MIN
+#define INT_LEAST32_MIN (-INT_LEAST32_MAX - 1)
+#undef UINT_LEAST32_MAX
+#define UINT_LEAST32_MAX __UINT_LEAST32_MAX__
+#undef INT_LEAST64_MAX
+#define INT_LEAST64_MAX __INT_LEAST64_MAX__
+#undef INT_LEAST64_MIN
+#define INT_LEAST64_MIN (-INT_LEAST64_MAX - 1)
+#undef UINT_LEAST64_MAX
+#define UINT_LEAST64_MAX __UINT_LEAST64_MAX__
+
+#undef INT_FAST8_MAX
+#define INT_FAST8_MAX __INT_FAST8_MAX__
+#undef INT_FAST8_MIN
+#define INT_FAST8_MIN (-INT_FAST8_MAX - 1)
+#undef UINT_FAST8_MAX
+#define UINT_FAST8_MAX __UINT_FAST8_MAX__
+#undef INT_FAST16_MAX
+#define INT_FAST16_MAX __INT_FAST16_MAX__
+#undef INT_FAST16_MIN
+#define INT_FAST16_MIN (-INT_FAST16_MAX - 1)
+#undef UINT_FAST16_MAX
+#define UINT_FAST16_MAX __UINT_FAST16_MAX__
+#undef INT_FAST32_MAX
+#define INT_FAST32_MAX __INT_FAST32_MAX__
+#undef INT_FAST32_MIN
+#define INT_FAST32_MIN (-INT_FAST32_MAX - 1)
+#undef UINT_FAST32_MAX
+#define UINT_FAST32_MAX __UINT_FAST32_MAX__
+#undef INT_FAST64_MAX
+#define INT_FAST64_MAX __INT_FAST64_MAX__
+#undef INT_FAST64_MIN
+#define INT_FAST64_MIN (-INT_FAST64_MAX - 1)
+#undef UINT_FAST64_MAX
+#define UINT_FAST64_MAX __UINT_FAST64_MAX__
+
+#ifdef __INTPTR_MAX__
+# undef INTPTR_MAX
+# define INTPTR_MAX __INTPTR_MAX__
+# undef INTPTR_MIN
+# define INTPTR_MIN (-INTPTR_MAX - 1)
+#endif
+#ifdef __UINTPTR_MAX__
+# undef UINTPTR_MAX
+# define UINTPTR_MAX __UINTPTR_MAX__
+#endif
+
+#undef INTMAX_MAX
+#define INTMAX_MAX __INTMAX_MAX__
+#undef INTMAX_MIN
+#define INTMAX_MIN (-INTMAX_MAX - 1)
+#undef UINTMAX_MAX
+#define UINTMAX_MAX __UINTMAX_MAX__
+
+/* 7.18.3 Limits of other integer types */
+
+#undef PTRDIFF_MAX
+#define PTRDIFF_MAX __PTRDIFF_MAX__
+#undef PTRDIFF_MIN
+#define PTRDIFF_MIN (-PTRDIFF_MAX - 1)
+
+#undef SIG_ATOMIC_MAX
+#define SIG_ATOMIC_MAX __SIG_ATOMIC_MAX__
+#undef SIG_ATOMIC_MIN
+#define SIG_ATOMIC_MIN __SIG_ATOMIC_MIN__
+
+#undef SIZE_MAX
+#define SIZE_MAX __SIZE_MAX__
+
+#undef WCHAR_MAX
+#define WCHAR_MAX __WCHAR_MAX__
+#undef WCHAR_MIN
+#define WCHAR_MIN __WCHAR_MIN__
+
+#undef WINT_MAX
+#define WINT_MAX __WINT_MAX__
+#undef WINT_MIN
+#define WINT_MIN __WINT_MIN__
+
+#endif /* (!defined __cplusplus || __cplusplus >= 201103L
+	   || defined __STDC_LIMIT_MACROS)  */
+
+#if (!defined __cplusplus || __cplusplus >= 201103L \
+     || defined __STDC_CONSTANT_MACROS)
+
+#undef INT8_C
+#define INT8_C(c) __INT8_C(c)
+#undef INT16_C
+#define INT16_C(c) __INT16_C(c)
+#undef INT32_C
+#define INT32_C(c) __INT32_C(c)
+#undef INT64_C
+#define INT64_C(c) __INT64_C(c)
+#undef UINT8_C
+#define UINT8_C(c) __UINT8_C(c)
+#undef UINT16_C
+#define UINT16_C(c) __UINT16_C(c)
+#undef UINT32_C
+#define UINT32_C(c) __UINT32_C(c)
+#undef UINT64_C
+#define UINT64_C(c) __UINT64_C(c)
+#undef INTMAX_C
+#define INTMAX_C(c) __INTMAX_C(c)
+#undef UINTMAX_C
+#define UINTMAX_C(c) __UINTMAX_C(c)
+
+#endif /* (!defined __cplusplus || __cplusplus >= 201103L
+	   || defined __STDC_CONSTANT_MACROS) */
+
+#endif /* _GCC_STDINT_H */
Index: Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/stdint.h
===================================================================
--- Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/stdint.h	(revision 1046)
+++ Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/stdint.h	(revision 1046)
@@ -0,0 +1,14 @@
+#ifndef _GCC_WRAP_STDINT_H
+#if __STDC_HOSTED__
+# if defined __cplusplus && __cplusplus >= 201103L
+#  undef __STDC_LIMIT_MACROS
+#  define __STDC_LIMIT_MACROS
+#  undef __STDC_CONSTANT_MACROS
+#  define __STDC_CONSTANT_MACROS
+# endif
+# include_next <stdint.h>
+#else
+# include "stdint-gcc.h"
+#endif
+#define _GCC_WRAP_STDINT_H
+#endif
Index: Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/stdnoreturn.h
===================================================================
--- Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/stdnoreturn.h	(revision 1046)
+++ Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/stdnoreturn.h	(revision 1046)
@@ -0,0 +1,35 @@
+/* Copyright (C) 2011-2015 Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 3, or (at your option)
+any later version.
+
+GCC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+Under Section 7 of GPL version 3, you are granted additional
+permissions described in the GCC Runtime Library Exception, version
+3.1, as published by the Free Software Foundation.
+
+You should have received a copy of the GNU General Public License and
+a copy of the GCC Runtime Library Exception along with this program;
+see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+<http://www.gnu.org/licenses/>.  */
+
+/* ISO C1X: 7.23 _Noreturn <stdnoreturn.h>.  */
+
+#ifndef _STDNORETURN_H
+#define _STDNORETURN_H
+
+#ifndef __cplusplus
+
+#define noreturn _Noreturn
+
+#endif
+
+#endif	/* stdnoreturn.h */
Index: Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/tbmintrin.h
===================================================================
--- Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/tbmintrin.h	(revision 1046)
+++ Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/tbmintrin.h	(revision 1046)
@@ -0,0 +1,180 @@
+/* Copyright (C) 2010-2015 Free Software Foundation, Inc.
+
+   This file is part of GCC.
+
+   GCC is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
+
+   GCC is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   Under Section 7 of GPL version 3, you are granted additional
+   permissions described in the GCC Runtime Library Exception, version
+   3.1, as published by the Free Software Foundation.
+
+   You should have received a copy of the GNU General Public License and
+   a copy of the GCC Runtime Library Exception along with this program;
+   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _X86INTRIN_H_INCLUDED
+# error "Never use <tbmintrin.h> directly; include <x86intrin.h> instead."
+#endif
+
+#ifndef _TBMINTRIN_H_INCLUDED
+#define _TBMINTRIN_H_INCLUDED
+
+#ifndef __TBM__
+#pragma GCC push_options
+#pragma GCC target("tbm")
+#define __DISABLE_TBM__
+#endif /* __TBM__ */
+
+#ifdef __OPTIMIZE__
+extern __inline unsigned int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+__bextri_u32 (unsigned int __X, const unsigned int __I)
+{
+	return __builtin_ia32_bextri_u32 (__X, __I);
+}
+#else
+#define __bextri_u32(X, I)                                           \
+        ((unsigned int)__builtin_ia32_bextri_u32 ((unsigned int)(X), \
+	                                          (unsigned int)(I)))
+#endif /*__OPTIMIZE__ */
+
+extern __inline unsigned int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+__blcfill_u32 (unsigned int __X)
+{
+  return __X & (__X + 1);
+}
+
+extern __inline unsigned int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+__blci_u32 (unsigned int __X)
+{
+  return __X | ~(__X + 1);
+}
+
+extern __inline unsigned int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+__blcic_u32 (unsigned int __X)
+{
+  return ~__X & (__X + 1);
+}
+
+extern __inline unsigned int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+__blcmsk_u32 (unsigned int __X)
+{
+  return __X ^ (__X + 1);
+}
+
+extern __inline unsigned int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+__blcs_u32 (unsigned int __X)
+{
+  return __X | (__X + 1);
+}
+
+extern __inline unsigned int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+__blsfill_u32 (unsigned int __X)
+{
+  return __X | (__X - 1);
+}
+
+extern __inline unsigned int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+__blsic_u32 (unsigned int __X)
+{
+  return ~__X | (__X - 1);
+}
+
+extern __inline unsigned int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+__t1mskc_u32 (unsigned int __X)
+{
+  return ~__X | (__X + 1);
+}
+
+extern __inline unsigned int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+__tzmsk_u32 (unsigned int __X)
+{
+  return ~__X & (__X - 1);
+}
+
+
+
+#ifdef __x86_64__
+#ifdef __OPTIMIZE__
+extern __inline unsigned long long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+__bextri_u64 (unsigned long long __X, const unsigned int __I)
+{
+  return __builtin_ia32_bextri_u64 (__X, __I);
+}
+#else
+#define __bextri_u64(X, I)						   \
+  ((unsigned long long)__builtin_ia32_bextri_u64 ((unsigned long long)(X), \
+						  (unsigned long long)(I)))
+#endif /*__OPTIMIZE__ */
+
+extern __inline unsigned long long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+__blcfill_u64 (unsigned long long __X)
+{
+  return __X & (__X + 1);
+}
+
+extern __inline unsigned long long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+__blci_u64 (unsigned long long __X)
+{
+  return __X | ~(__X + 1);
+}
+
+extern __inline unsigned long long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+__blcic_u64 (unsigned long long __X)
+{
+  return ~__X & (__X + 1);
+}
+
+extern __inline unsigned long long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+__blcmsk_u64 (unsigned long long __X)
+{
+  return __X ^ (__X + 1);
+}
+
+extern __inline unsigned long long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+__blcs_u64 (unsigned long long __X)
+{
+  return __X | (__X + 1);
+}
+
+extern __inline unsigned long long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+__blsfill_u64 (unsigned long long __X)
+{
+  return __X | (__X - 1);
+}
+
+extern __inline unsigned long long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+__blsic_u64 (unsigned long long __X)
+{
+  return ~__X | (__X - 1);
+}
+
+extern __inline unsigned long long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+__t1mskc_u64 (unsigned long long __X)
+{
+  return ~__X | (__X + 1);
+}
+
+extern __inline unsigned long long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+__tzmsk_u64 (unsigned long long __X)
+{
+  return ~__X & (__X - 1);
+}
+
+
+#endif /* __x86_64__  */
+
+#ifdef __DISABLE_TBM__
+#undef __DISABLE_TBM__
+#pragma GCC pop_options
+#endif /* __DISABLE_TBM__ */
+
+#endif /* _TBMINTRIN_H_INCLUDED */
Index: Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/tgmath.h
===================================================================
--- Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/tgmath.h	(revision 1046)
+++ Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/tgmath.h	(revision 1046)
@@ -0,0 +1,171 @@
+/* Copyright (C) 2004-2015 Free Software Foundation, Inc.
+   Contributed by Apple, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 3, or (at your option)
+any later version.
+
+GCC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+Under Section 7 of GPL version 3, you are granted additional
+permissions described in the GCC Runtime Library Exception, version
+3.1, as published by the Free Software Foundation.
+
+You should have received a copy of the GNU General Public License and
+a copy of the GCC Runtime Library Exception along with this program;
+see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+<http://www.gnu.org/licenses/>.  */
+
+/*
+ * ISO C Standard:  7.22  Type-generic math <tgmath.h>
+ */
+
+#ifndef _TGMATH_H
+#define _TGMATH_H
+
+#include <math.h>
+
+#ifndef __cplusplus
+#include <complex.h>
+
+/* Naming convention: generic macros are defining using
+   __TGMATH_CPLX*, __TGMATH_REAL*, and __TGMATH_CPLX_ONLY.  _CPLX
+   means the generic argument(s) may be real or complex, _REAL means
+   real only, _CPLX means complex only.  If there is no suffix, we are
+   defining a function of one generic argument.  If the suffix is _n
+   it is a function of n generic arguments.  If the suffix is _m_n it
+   is a function of n arguments, the first m of which are generic.  We
+   only define these macros for values of n and/or m that are needed. */
+
+/* The general rules for generic macros are given in 7.22 paragraphs 1 and 2.
+   If any generic parameter is complex, we use a complex version.  Otherwise
+   we use a real version.  If the real part of any generic parameter is long
+   double, we use the long double version.  Otherwise if the real part of any
+   generic parameter is double or of integer type, we use the double version.
+   Otherwise we use the float version. */
+
+#define __tg_cplx(expr) \
+  __builtin_classify_type(expr) == 9
+
+#define __tg_ldbl(expr) \
+  __builtin_types_compatible_p(__typeof__(expr), long double)
+
+#define __tg_dbl(expr)                                       \
+  (__builtin_types_compatible_p(__typeof__(expr), double)    \
+   || __builtin_classify_type(expr) == 1)
+
+#define __tg_choose(x,f,d,l)                                  \
+  __builtin_choose_expr(__tg_ldbl(x), l,                      \
+                        __builtin_choose_expr(__tg_dbl(x), d, \
+                                              f))
+
+#define __tg_choose_2(x,y,f,d,l)                                             \
+  __builtin_choose_expr(__tg_ldbl(x) || __tg_ldbl(y), l,                     \
+                        __builtin_choose_expr(__tg_dbl(x) || __tg_dbl(y), d, \
+                                              f))
+
+#define __tg_choose_3(x,y,z,f,d,l)                                        \
+   __builtin_choose_expr(__tg_ldbl(x) || __tg_ldbl(y) || __tg_ldbl(z), l, \
+                        __builtin_choose_expr(__tg_dbl(x) || __tg_dbl(y)  \
+                                              || __tg_dbl(z), d,          \
+                                              f))
+
+#define __TGMATH_CPLX(z,R,C)                                                  \
+  __builtin_choose_expr (__tg_cplx(z),                                        \
+                         __tg_choose (__real__(z), C##f(z), (C)(z), C##l(z)), \
+                         __tg_choose (z, R##f(z), (R)(z), R##l(z)))
+
+#define __TGMATH_CPLX_2(z1,z2,R,C)                                             \
+  __builtin_choose_expr (__tg_cplx(z1) || __tg_cplx(z2),                       \
+                         __tg_choose_2 (__real__(z1), __real__(z2),            \
+                                        C##f(z1,z2), (C)(z1,z2), C##l(z1,z2)), \
+                         __tg_choose_2 (z1, z2,                                \
+                                        R##f(z1,z2), (R)(z1,z2), R##l(z1,z2)))
+
+#define __TGMATH_REAL(x,R) \
+  __tg_choose (x, R##f(x), (R)(x), R##l(x))
+#define __TGMATH_REAL_2(x,y,R) \
+  __tg_choose_2 (x, y, R##f(x,y), (R)(x,y), R##l(x,y))
+#define __TGMATH_REAL_3(x,y,z,R) \
+  __tg_choose_3 (x, y, z, R##f(x,y,z), (R)(x,y,z), R##l(x,y,z))
+#define __TGMATH_REAL_1_2(x,y,R) \
+  __tg_choose (x, R##f(x,y), (R)(x,y), R##l(x,y))
+#define __TGMATH_REAL_2_3(x,y,z,R) \
+  __tg_choose_2 (x, y, R##f(x,y,z), (R)(x,y,z), R##l(x,y,z))
+#define __TGMATH_CPLX_ONLY(z,C) \
+  __tg_choose (__real__(z), C##f(z), (C)(z), C##l(z))
+
+/* Functions defined in both <math.h> and <complex.h> (7.22p4) */
+#define acos(z)          __TGMATH_CPLX(z, acos, cacos)
+#define asin(z)          __TGMATH_CPLX(z, asin, casin)
+#define atan(z)          __TGMATH_CPLX(z, atan, catan)
+#define acosh(z)         __TGMATH_CPLX(z, acosh, cacosh)
+#define asinh(z)         __TGMATH_CPLX(z, asinh, casinh)
+#define atanh(z)         __TGMATH_CPLX(z, atanh, catanh)
+#define cos(z)           __TGMATH_CPLX(z, cos, ccos)
+#define sin(z)           __TGMATH_CPLX(z, sin, csin)
+#define tan(z)           __TGMATH_CPLX(z, tan, ctan)
+#define cosh(z)          __TGMATH_CPLX(z, cosh, ccosh)
+#define sinh(z)          __TGMATH_CPLX(z, sinh, csinh)
+#define tanh(z)          __TGMATH_CPLX(z, tanh, ctanh)
+#define exp(z)           __TGMATH_CPLX(z, exp, cexp)
+#define log(z)           __TGMATH_CPLX(z, log, clog)
+#define pow(z1,z2)       __TGMATH_CPLX_2(z1, z2, pow, cpow)
+#define sqrt(z)          __TGMATH_CPLX(z, sqrt, csqrt)
+#define fabs(z)          __TGMATH_CPLX(z, fabs, cabs)
+
+/* Functions defined in <math.h> only (7.22p5) */
+#define atan2(x,y)       __TGMATH_REAL_2(x, y, atan2)
+#define cbrt(x)          __TGMATH_REAL(x, cbrt)
+#define ceil(x)          __TGMATH_REAL(x, ceil)
+#define copysign(x,y)    __TGMATH_REAL_2(x, y, copysign)
+#define erf(x)           __TGMATH_REAL(x, erf)
+#define erfc(x)          __TGMATH_REAL(x, erfc)
+#define exp2(x)          __TGMATH_REAL(x, exp2)
+#define expm1(x)         __TGMATH_REAL(x, expm1)
+#define fdim(x,y)        __TGMATH_REAL_2(x, y, fdim)
+#define floor(x)         __TGMATH_REAL(x, floor)
+#define fma(x,y,z)       __TGMATH_REAL_3(x, y, z, fma)
+#define fmax(x,y)        __TGMATH_REAL_2(x, y, fmax)
+#define fmin(x,y)        __TGMATH_REAL_2(x, y, fmin)
+#define fmod(x,y)        __TGMATH_REAL_2(x, y, fmod)
+#define frexp(x,y)       __TGMATH_REAL_1_2(x, y, frexp)
+#define hypot(x,y)       __TGMATH_REAL_2(x, y, hypot)
+#define ilogb(x)         __TGMATH_REAL(x, ilogb)
+#define ldexp(x,y)       __TGMATH_REAL_1_2(x, y, ldexp)
+#define lgamma(x)        __TGMATH_REAL(x, lgamma)
+#define llrint(x)        __TGMATH_REAL(x, llrint)
+#define llround(x)       __TGMATH_REAL(x, llround)
+#define log10(x)         __TGMATH_REAL(x, log10)
+#define log1p(x)         __TGMATH_REAL(x, log1p)
+#define log2(x)          __TGMATH_REAL(x, log2)
+#define logb(x)          __TGMATH_REAL(x, logb)
+#define lrint(x)         __TGMATH_REAL(x, lrint)
+#define lround(x)        __TGMATH_REAL(x, lround)
+#define nearbyint(x)     __TGMATH_REAL(x, nearbyint)
+#define nextafter(x,y)   __TGMATH_REAL_2(x, y, nextafter)
+#define nexttoward(x,y)  __TGMATH_REAL_1_2(x, y, nexttoward)
+#define remainder(x,y)   __TGMATH_REAL_2(x, y, remainder)
+#define remquo(x,y,z)    __TGMATH_REAL_2_3(x, y, z, remquo)
+#define rint(x)          __TGMATH_REAL(x, rint)
+#define round(x)         __TGMATH_REAL(x, round)
+#define scalbn(x,y)      __TGMATH_REAL_1_2(x, y, scalbn)
+#define scalbln(x,y)     __TGMATH_REAL_1_2(x, y, scalbln)
+#define tgamma(x)        __TGMATH_REAL(x, tgamma)
+#define trunc(x)         __TGMATH_REAL(x, trunc)
+
+/* Functions defined in <complex.h> only (7.22p6) */
+#define carg(z)          __TGMATH_CPLX_ONLY(z, carg)
+#define cimag(z)         __TGMATH_CPLX_ONLY(z, cimag)
+#define conj(z)          __TGMATH_CPLX_ONLY(z, conj)
+#define cproj(z)         __TGMATH_CPLX_ONLY(z, cproj)
+#define creal(z)         __TGMATH_CPLX_ONLY(z, creal)
+
+#endif /* __cplusplus */
+#endif /* _TGMATH_H */
Index: Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/tmmintrin.h
===================================================================
--- Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/tmmintrin.h	(revision 1046)
+++ Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/tmmintrin.h	(revision 1046)
@@ -0,0 +1,249 @@
+/* Copyright (C) 2006-2015 Free Software Foundation, Inc.
+
+   This file is part of GCC.
+
+   GCC is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
+
+   GCC is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   Under Section 7 of GPL version 3, you are granted additional
+   permissions described in the GCC Runtime Library Exception, version
+   3.1, as published by the Free Software Foundation.
+
+   You should have received a copy of the GNU General Public License and
+   a copy of the GCC Runtime Library Exception along with this program;
+   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+/* Implemented from the specification included in the Intel C++ Compiler
+   User Guide and Reference, version 9.1.  */
+
+#ifndef _TMMINTRIN_H_INCLUDED
+#define _TMMINTRIN_H_INCLUDED
+
+/* We need definitions from the SSE3, SSE2 and SSE header files*/
+#include <pmmintrin.h>
+
+#ifndef __SSSE3__
+#pragma GCC push_options
+#pragma GCC target("ssse3")
+#define __DISABLE_SSSE3__
+#endif /* __SSSE3__ */
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_hadd_epi16 (__m128i __X, __m128i __Y)
+{
+  return (__m128i) __builtin_ia32_phaddw128 ((__v8hi)__X, (__v8hi)__Y);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_hadd_epi32 (__m128i __X, __m128i __Y)
+{
+  return (__m128i) __builtin_ia32_phaddd128 ((__v4si)__X, (__v4si)__Y);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_hadds_epi16 (__m128i __X, __m128i __Y)
+{
+  return (__m128i) __builtin_ia32_phaddsw128 ((__v8hi)__X, (__v8hi)__Y);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_hadd_pi16 (__m64 __X, __m64 __Y)
+{
+  return (__m64) __builtin_ia32_phaddw ((__v4hi)__X, (__v4hi)__Y);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_hadd_pi32 (__m64 __X, __m64 __Y)
+{
+  return (__m64) __builtin_ia32_phaddd ((__v2si)__X, (__v2si)__Y);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_hadds_pi16 (__m64 __X, __m64 __Y)
+{
+  return (__m64) __builtin_ia32_phaddsw ((__v4hi)__X, (__v4hi)__Y);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_hsub_epi16 (__m128i __X, __m128i __Y)
+{
+  return (__m128i) __builtin_ia32_phsubw128 ((__v8hi)__X, (__v8hi)__Y);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_hsub_epi32 (__m128i __X, __m128i __Y)
+{
+  return (__m128i) __builtin_ia32_phsubd128 ((__v4si)__X, (__v4si)__Y);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_hsubs_epi16 (__m128i __X, __m128i __Y)
+{
+  return (__m128i) __builtin_ia32_phsubsw128 ((__v8hi)__X, (__v8hi)__Y);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_hsub_pi16 (__m64 __X, __m64 __Y)
+{
+  return (__m64) __builtin_ia32_phsubw ((__v4hi)__X, (__v4hi)__Y);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_hsub_pi32 (__m64 __X, __m64 __Y)
+{
+  return (__m64) __builtin_ia32_phsubd ((__v2si)__X, (__v2si)__Y);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_hsubs_pi16 (__m64 __X, __m64 __Y)
+{
+  return (__m64) __builtin_ia32_phsubsw ((__v4hi)__X, (__v4hi)__Y);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maddubs_epi16 (__m128i __X, __m128i __Y)
+{
+  return (__m128i) __builtin_ia32_pmaddubsw128 ((__v16qi)__X, (__v16qi)__Y);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maddubs_pi16 (__m64 __X, __m64 __Y)
+{
+  return (__m64) __builtin_ia32_pmaddubsw ((__v8qi)__X, (__v8qi)__Y);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mulhrs_epi16 (__m128i __X, __m128i __Y)
+{
+  return (__m128i) __builtin_ia32_pmulhrsw128 ((__v8hi)__X, (__v8hi)__Y);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mulhrs_pi16 (__m64 __X, __m64 __Y)
+{
+  return (__m64) __builtin_ia32_pmulhrsw ((__v4hi)__X, (__v4hi)__Y);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_shuffle_epi8 (__m128i __X, __m128i __Y)
+{
+  return (__m128i) __builtin_ia32_pshufb128 ((__v16qi)__X, (__v16qi)__Y);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_shuffle_pi8 (__m64 __X, __m64 __Y)
+{
+  return (__m64) __builtin_ia32_pshufb ((__v8qi)__X, (__v8qi)__Y);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_sign_epi8 (__m128i __X, __m128i __Y)
+{
+  return (__m128i) __builtin_ia32_psignb128 ((__v16qi)__X, (__v16qi)__Y);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_sign_epi16 (__m128i __X, __m128i __Y)
+{
+  return (__m128i) __builtin_ia32_psignw128 ((__v8hi)__X, (__v8hi)__Y);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_sign_epi32 (__m128i __X, __m128i __Y)
+{
+  return (__m128i) __builtin_ia32_psignd128 ((__v4si)__X, (__v4si)__Y);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_sign_pi8 (__m64 __X, __m64 __Y)
+{
+  return (__m64) __builtin_ia32_psignb ((__v8qi)__X, (__v8qi)__Y);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_sign_pi16 (__m64 __X, __m64 __Y)
+{
+  return (__m64) __builtin_ia32_psignw ((__v4hi)__X, (__v4hi)__Y);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_sign_pi32 (__m64 __X, __m64 __Y)
+{
+  return (__m64) __builtin_ia32_psignd ((__v2si)__X, (__v2si)__Y);
+}
+
+#ifdef __OPTIMIZE__
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_alignr_epi8(__m128i __X, __m128i __Y, const int __N)
+{
+  return (__m128i) __builtin_ia32_palignr128 ((__v2di)__X,
+					      (__v2di)__Y, __N * 8);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_alignr_pi8(__m64 __X, __m64 __Y, const int __N)
+{
+  return (__m64) __builtin_ia32_palignr ((__v1di)__X,
+					 (__v1di)__Y, __N * 8);
+}
+#else
+#define _mm_alignr_epi8(X, Y, N)					\
+  ((__m128i) __builtin_ia32_palignr128 ((__v2di)(__m128i)(X),		\
+					(__v2di)(__m128i)(Y),		\
+					(int)(N) * 8))
+#define _mm_alignr_pi8(X, Y, N)						\
+  ((__m64) __builtin_ia32_palignr ((__v1di)(__m64)(X),			\
+				   (__v1di)(__m64)(Y),			\
+				   (int)(N) * 8))
+#endif
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_abs_epi8 (__m128i __X)
+{
+  return (__m128i) __builtin_ia32_pabsb128 ((__v16qi)__X);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_abs_epi16 (__m128i __X)
+{
+  return (__m128i) __builtin_ia32_pabsw128 ((__v8hi)__X);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_abs_epi32 (__m128i __X)
+{
+  return (__m128i) __builtin_ia32_pabsd128 ((__v4si)__X);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_abs_pi8 (__m64 __X)
+{
+  return (__m64) __builtin_ia32_pabsb ((__v8qi)__X);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_abs_pi16 (__m64 __X)
+{
+  return (__m64) __builtin_ia32_pabsw ((__v4hi)__X);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_abs_pi32 (__m64 __X)
+{
+  return (__m64) __builtin_ia32_pabsd ((__v2si)__X);
+}
+
+#ifdef __DISABLE_SSSE3__
+#undef __DISABLE_SSSE3__
+#pragma GCC pop_options
+#endif /* __DISABLE_SSSE3__ */
+
+#endif /* _TMMINTRIN_H_INCLUDED */
Index: Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/unwind.h
===================================================================
--- Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/unwind.h	(revision 1046)
+++ Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/unwind.h	(revision 1046)
@@ -0,0 +1,293 @@
+/* Exception handling and frame unwind runtime interface routines.
+   Copyright (C) 2001-2015 Free Software Foundation, Inc.
+
+   This file is part of GCC.
+
+   GCC is free software; you can redistribute it and/or modify it
+   under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
+
+   GCC is distributed in the hope that it will be useful, but WITHOUT
+   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+   or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
+   License for more details.
+
+   Under Section 7 of GPL version 3, you are granted additional
+   permissions described in the GCC Runtime Library Exception, version
+   3.1, as published by the Free Software Foundation.
+
+   You should have received a copy of the GNU General Public License and
+   a copy of the GCC Runtime Library Exception along with this program;
+   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+/* This is derived from the C++ ABI for IA-64.  Where we diverge
+   for cross-architecture compatibility are noted with "@@@".  */
+
+#ifndef _UNWIND_H
+#define _UNWIND_H
+
+#if defined (__SEH__) && !defined (__USING_SJLJ_EXCEPTIONS__)
+/* Only for _GCC_specific_handler.  */
+#include <windows.h>
+#endif
+
+#ifndef HIDE_EXPORTS
+#pragma GCC visibility push(default)
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Level 1: Base ABI  */
+
+/* @@@ The IA-64 ABI uses uint64 throughout.  Most places this is
+   inefficient for 32-bit and smaller machines.  */
+typedef unsigned _Unwind_Word __attribute__((__mode__(__unwind_word__)));
+typedef signed _Unwind_Sword __attribute__((__mode__(__unwind_word__)));
+#if defined(__ia64__) && defined(__hpux__)
+typedef unsigned _Unwind_Ptr __attribute__((__mode__(__word__)));
+#else
+typedef unsigned _Unwind_Ptr __attribute__((__mode__(__pointer__)));
+#endif
+typedef unsigned _Unwind_Internal_Ptr __attribute__((__mode__(__pointer__)));
+
+/* @@@ The IA-64 ABI uses a 64-bit word to identify the producer and
+   consumer of an exception.  We'll go along with this for now even on
+   32-bit machines.  We'll need to provide some other option for
+   16-bit machines and for machines with > 8 bits per byte.  */
+typedef unsigned _Unwind_Exception_Class __attribute__((__mode__(__DI__)));
+
+/* The unwind interface uses reason codes in several contexts to
+   identify the reasons for failures or other actions.  */
+typedef enum
+{
+  _URC_NO_REASON = 0,
+  _URC_FOREIGN_EXCEPTION_CAUGHT = 1,
+  _URC_FATAL_PHASE2_ERROR = 2,
+  _URC_FATAL_PHASE1_ERROR = 3,
+  _URC_NORMAL_STOP = 4,
+  _URC_END_OF_STACK = 5,
+  _URC_HANDLER_FOUND = 6,
+  _URC_INSTALL_CONTEXT = 7,
+  _URC_CONTINUE_UNWIND = 8
+} _Unwind_Reason_Code;
+
+
+/* The unwind interface uses a pointer to an exception header object
+   as its representation of an exception being thrown. In general, the
+   full representation of an exception object is language- and
+   implementation-specific, but it will be prefixed by a header
+   understood by the unwind interface.  */
+
+struct _Unwind_Exception;
+
+typedef void (*_Unwind_Exception_Cleanup_Fn) (_Unwind_Reason_Code,
+					      struct _Unwind_Exception *);
+
+struct _Unwind_Exception
+{
+  _Unwind_Exception_Class exception_class;
+  _Unwind_Exception_Cleanup_Fn exception_cleanup;
+
+#if !defined (__USING_SJLJ_EXCEPTIONS__) && defined (__SEH__)
+  _Unwind_Word private_[6];
+#else
+  _Unwind_Word private_1;
+  _Unwind_Word private_2;
+#endif
+
+  /* @@@ The IA-64 ABI says that this structure must be double-word aligned.
+     Taking that literally does not make much sense generically.  Instead we
+     provide the maximum alignment required by any type for the machine.  */
+} __attribute__((__aligned__));
+
+
+/* The ACTIONS argument to the personality routine is a bitwise OR of one
+   or more of the following constants.  */
+typedef int _Unwind_Action;
+
+#define _UA_SEARCH_PHASE	1
+#define _UA_CLEANUP_PHASE	2
+#define _UA_HANDLER_FRAME	4
+#define _UA_FORCE_UNWIND	8
+#define _UA_END_OF_STACK	16
+
+/* The target can override this macro to define any back-end-specific
+   attributes required for the lowest-level stack frame.  */
+#ifndef LIBGCC2_UNWIND_ATTRIBUTE
+#define LIBGCC2_UNWIND_ATTRIBUTE
+#endif
+
+/* This is an opaque type used to refer to a system-specific data
+   structure used by the system unwinder. This context is created and
+   destroyed by the system, and passed to the personality routine
+   during unwinding.  */
+struct _Unwind_Context;
+
+/* Raise an exception, passing along the given exception object.  */
+extern _Unwind_Reason_Code LIBGCC2_UNWIND_ATTRIBUTE
+_Unwind_RaiseException (struct _Unwind_Exception *);
+
+/* Raise an exception for forced unwinding.  */
+
+typedef _Unwind_Reason_Code (*_Unwind_Stop_Fn)
+     (int, _Unwind_Action, _Unwind_Exception_Class,
+      struct _Unwind_Exception *, struct _Unwind_Context *, void *);
+
+extern _Unwind_Reason_Code LIBGCC2_UNWIND_ATTRIBUTE
+_Unwind_ForcedUnwind (struct _Unwind_Exception *, _Unwind_Stop_Fn, void *);
+
+/* Helper to invoke the exception_cleanup routine.  */
+extern void _Unwind_DeleteException (struct _Unwind_Exception *);
+
+/* Resume propagation of an existing exception.  This is used after
+   e.g. executing cleanup code, and not to implement rethrowing.  */
+extern void LIBGCC2_UNWIND_ATTRIBUTE
+_Unwind_Resume (struct _Unwind_Exception *);
+
+/* @@@ Resume propagation of a FORCE_UNWIND exception, or to rethrow
+   a normal exception that was handled.  */
+extern _Unwind_Reason_Code LIBGCC2_UNWIND_ATTRIBUTE
+_Unwind_Resume_or_Rethrow (struct _Unwind_Exception *);
+
+/* @@@ Use unwind data to perform a stack backtrace.  The trace callback
+   is called for every stack frame in the call chain, but no cleanup
+   actions are performed.  */
+typedef _Unwind_Reason_Code (*_Unwind_Trace_Fn)
+     (struct _Unwind_Context *, void *);
+
+extern _Unwind_Reason_Code LIBGCC2_UNWIND_ATTRIBUTE
+_Unwind_Backtrace (_Unwind_Trace_Fn, void *);
+
+/* These functions are used for communicating information about the unwind
+   context (i.e. the unwind descriptors and the user register state) between
+   the unwind library and the personality routine and landing pad.  Only
+   selected registers may be manipulated.  */
+
+extern _Unwind_Word _Unwind_GetGR (struct _Unwind_Context *, int);
+extern void _Unwind_SetGR (struct _Unwind_Context *, int, _Unwind_Word);
+
+extern _Unwind_Ptr _Unwind_GetIP (struct _Unwind_Context *);
+extern _Unwind_Ptr _Unwind_GetIPInfo (struct _Unwind_Context *, int *);
+extern void _Unwind_SetIP (struct _Unwind_Context *, _Unwind_Ptr);
+
+/* @@@ Retrieve the CFA of the given context.  */
+extern _Unwind_Word _Unwind_GetCFA (struct _Unwind_Context *);
+
+extern void *_Unwind_GetLanguageSpecificData (struct _Unwind_Context *);
+
+extern _Unwind_Ptr _Unwind_GetRegionStart (struct _Unwind_Context *);
+
+
+/* The personality routine is the function in the C++ (or other language)
+   runtime library which serves as an interface between the system unwind
+   library and language-specific exception handling semantics.  It is
+   specific to the code fragment described by an unwind info block, and
+   it is always referenced via the pointer in the unwind info block, and
+   hence it has no ABI-specified name.
+
+   Note that this implies that two different C++ implementations can
+   use different names, and have different contents in the language
+   specific data area.  Moreover, that the language specific data
+   area contains no version info because name of the function invoked
+   provides more effective versioning by detecting at link time the
+   lack of code to handle the different data format.  */
+
+typedef _Unwind_Reason_Code (*_Unwind_Personality_Fn)
+     (int, _Unwind_Action, _Unwind_Exception_Class,
+      struct _Unwind_Exception *, struct _Unwind_Context *);
+
+/* @@@ The following alternate entry points are for setjmp/longjmp
+   based unwinding.  */
+
+struct SjLj_Function_Context;
+extern void _Unwind_SjLj_Register (struct SjLj_Function_Context *);
+extern void _Unwind_SjLj_Unregister (struct SjLj_Function_Context *);
+
+extern _Unwind_Reason_Code LIBGCC2_UNWIND_ATTRIBUTE
+_Unwind_SjLj_RaiseException (struct _Unwind_Exception *);
+extern _Unwind_Reason_Code LIBGCC2_UNWIND_ATTRIBUTE
+_Unwind_SjLj_ForcedUnwind (struct _Unwind_Exception *, _Unwind_Stop_Fn, void *);
+extern void LIBGCC2_UNWIND_ATTRIBUTE
+_Unwind_SjLj_Resume (struct _Unwind_Exception *);
+extern _Unwind_Reason_Code LIBGCC2_UNWIND_ATTRIBUTE
+_Unwind_SjLj_Resume_or_Rethrow (struct _Unwind_Exception *);
+
+/* @@@ The following provide access to the base addresses for text
+   and data-relative addressing in the LDSA.  In order to stay link
+   compatible with the standard ABI for IA-64, we inline these.  */
+
+#ifdef __ia64__
+#include <stdlib.h>
+
+static inline _Unwind_Ptr
+_Unwind_GetDataRelBase (struct _Unwind_Context *_C)
+{
+  /* The GP is stored in R1.  */
+  return _Unwind_GetGR (_C, 1);
+}
+
+static inline _Unwind_Ptr
+_Unwind_GetTextRelBase (struct _Unwind_Context *_C __attribute__ ((__unused__)))
+{
+  abort ();
+  return 0;
+}
+
+/* @@@ Retrieve the Backing Store Pointer of the given context.  */
+extern _Unwind_Word _Unwind_GetBSP (struct _Unwind_Context *);
+#else
+extern _Unwind_Ptr _Unwind_GetDataRelBase (struct _Unwind_Context *);
+extern _Unwind_Ptr _Unwind_GetTextRelBase (struct _Unwind_Context *);
+#endif
+
+/* @@@ Given an address, return the entry point of the function that
+   contains it.  */
+extern void * _Unwind_FindEnclosingFunction (void *pc);
+
+#ifndef __SIZEOF_LONG__
+  #error "__SIZEOF_LONG__ macro not defined"
+#endif
+
+#ifndef __SIZEOF_POINTER__
+  #error "__SIZEOF_POINTER__ macro not defined"
+#endif
+
+
+/* leb128 type numbers have a potentially unlimited size.
+   The target of the following definitions of _sleb128_t and _uleb128_t
+   is to have efficient data types large enough to hold the leb128 type
+   numbers used in the unwind code.
+   Mostly these types will simply be defined to long and unsigned long
+   except when a unsigned long data type on the target machine is not
+   capable of storing a pointer.  */
+
+#if __SIZEOF_LONG__ >= __SIZEOF_POINTER__
+  typedef long _sleb128_t;
+  typedef unsigned long _uleb128_t;
+#elif __SIZEOF_LONG_LONG__ >= __SIZEOF_POINTER__
+  typedef long long _sleb128_t;
+  typedef unsigned long long _uleb128_t;
+#else
+# error "What type shall we use for _sleb128_t?"
+#endif
+
+#if defined (__SEH__) && !defined (__USING_SJLJ_EXCEPTIONS__)
+/* Handles the mapping from SEH to GCC interfaces.  */
+EXCEPTION_DISPOSITION _GCC_specific_handler (PEXCEPTION_RECORD, void *,
+					     PCONTEXT, PDISPATCHER_CONTEXT,
+					     _Unwind_Personality_Fn);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#ifndef HIDE_EXPORTS
+#pragma GCC visibility pop
+#endif
+
+#endif /* unwind.h */
Index: Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/varargs.h
===================================================================
--- Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/varargs.h	(revision 1046)
+++ Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/varargs.h	(revision 1046)
@@ -0,0 +1,7 @@
+#ifndef _VARARGS_H
+#define _VARARGS_H
+
+#error "GCC no longer implements <varargs.h>."
+#error "Revise your code to use <stdarg.h>."
+
+#endif
Index: Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/wmmintrin.h
===================================================================
--- Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/wmmintrin.h	(revision 1046)
+++ Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/wmmintrin.h	(revision 1046)
@@ -0,0 +1,132 @@
+/* Copyright (C) 2008-2015 Free Software Foundation, Inc.
+
+   This file is part of GCC.
+
+   GCC is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
+
+   GCC is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   Under Section 7 of GPL version 3, you are granted additional
+   permissions described in the GCC Runtime Library Exception, version
+   3.1, as published by the Free Software Foundation.
+
+   You should have received a copy of the GNU General Public License and
+   a copy of the GCC Runtime Library Exception along with this program;
+   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+/* Implemented from the specification included in the Intel C++ Compiler
+   User Guide and Reference, version 10.1.  */
+
+#ifndef _WMMINTRIN_H_INCLUDED
+#define _WMMINTRIN_H_INCLUDED
+
+/* We need definitions from the SSE2 header file.  */
+#include <emmintrin.h>
+
+/* AES */
+
+#ifndef __AES__
+#pragma GCC push_options
+#pragma GCC target("aes")
+#define __DISABLE_AES__
+#endif /* __AES__ */
+
+/* Performs 1 round of AES decryption of the first m128i using 
+   the second m128i as a round key.  */
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_aesdec_si128 (__m128i __X, __m128i __Y)
+{
+  return (__m128i) __builtin_ia32_aesdec128 ((__v2di)__X, (__v2di)__Y);
+}
+
+/* Performs the last round of AES decryption of the first m128i 
+   using the second m128i as a round key.  */
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_aesdeclast_si128 (__m128i __X, __m128i __Y)
+{
+  return (__m128i) __builtin_ia32_aesdeclast128 ((__v2di)__X,
+						 (__v2di)__Y);
+}
+
+/* Performs 1 round of AES encryption of the first m128i using 
+   the second m128i as a round key.  */
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_aesenc_si128 (__m128i __X, __m128i __Y)
+{
+  return (__m128i) __builtin_ia32_aesenc128 ((__v2di)__X, (__v2di)__Y);
+}
+
+/* Performs the last round of AES encryption of the first m128i
+   using the second m128i as a round key.  */
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_aesenclast_si128 (__m128i __X, __m128i __Y)
+{
+  return (__m128i) __builtin_ia32_aesenclast128 ((__v2di)__X, (__v2di)__Y);
+}
+
+/* Performs the InverseMixColumn operation on the source m128i 
+   and stores the result into m128i destination.  */
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_aesimc_si128 (__m128i __X)
+{
+  return (__m128i) __builtin_ia32_aesimc128 ((__v2di)__X);
+}
+
+/* Generates a m128i round key for the input m128i AES cipher key and
+   byte round constant.  The second parameter must be a compile time
+   constant.  */
+#ifdef __OPTIMIZE__
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_aeskeygenassist_si128 (__m128i __X, const int __C)
+{
+  return (__m128i) __builtin_ia32_aeskeygenassist128 ((__v2di)__X, __C);
+}
+#else
+#define _mm_aeskeygenassist_si128(X, C)					\
+  ((__m128i) __builtin_ia32_aeskeygenassist128 ((__v2di)(__m128i)(X),	\
+						(int)(C)))
+#endif
+
+#ifdef __DISABLE_AES__
+#undef __DISABLE_AES__
+#pragma GCC pop_options
+#endif /* __DISABLE_AES__ */
+
+/* PCLMUL */
+
+#ifndef __PCLMUL__
+#pragma GCC push_options
+#pragma GCC target("pclmul")
+#define __DISABLE_PCLMUL__
+#endif /* __PCLMUL__ */
+
+/* Performs carry-less integer multiplication of 64-bit halves of
+   128-bit input operands.  The third parameter inducates which 64-bit
+   haves of the input parameters v1 and v2 should be used. It must be
+   a compile time constant.  */
+#ifdef __OPTIMIZE__
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_clmulepi64_si128 (__m128i __X, __m128i __Y, const int __I)
+{
+  return (__m128i) __builtin_ia32_pclmulqdq128 ((__v2di)__X,
+						(__v2di)__Y, __I);
+}
+#else
+#define _mm_clmulepi64_si128(X, Y, I)					\
+  ((__m128i) __builtin_ia32_pclmulqdq128 ((__v2di)(__m128i)(X),		\
+					  (__v2di)(__m128i)(Y), (int)(I)))
+#endif
+
+#ifdef __DISABLE_PCLMUL__
+#undef __DISABLE_PCLMUL__
+#pragma GCC pop_options
+#endif /* __DISABLE_PCLMUL__ */
+
+#endif /* _WMMINTRIN_H_INCLUDED */
Index: Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/x86intrin.h
===================================================================
--- Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/x86intrin.h	(revision 1046)
+++ Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/x86intrin.h	(revision 1046)
@@ -0,0 +1,89 @@
+/* Copyright (C) 2008-2015 Free Software Foundation, Inc.
+
+   This file is part of GCC.
+
+   GCC is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
+
+   GCC is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   Under Section 7 of GPL version 3, you are granted additional
+   permissions described in the GCC Runtime Library Exception, version
+   3.1, as published by the Free Software Foundation.
+
+   You should have received a copy of the GNU General Public License and
+   a copy of the GCC Runtime Library Exception along with this program;
+   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _X86INTRIN_H_INCLUDED
+#define _X86INTRIN_H_INCLUDED
+
+#include <ia32intrin.h>
+
+#include <mmintrin.h>
+
+#include <xmmintrin.h>
+
+#include <emmintrin.h>
+
+#include <pmmintrin.h>
+
+#include <tmmintrin.h>
+
+#include <ammintrin.h>
+
+#include <smmintrin.h>
+
+#include <wmmintrin.h>
+
+/* For including AVX instructions */
+#include <immintrin.h>
+
+#include <mm3dnow.h>
+
+#include <fma4intrin.h>
+
+#include <xopintrin.h>
+
+#include <lwpintrin.h>
+
+#include <bmiintrin.h>
+
+#include <bmi2intrin.h>
+
+#include <tbmintrin.h>
+
+#include <lzcntintrin.h>
+
+#include <popcntintrin.h>
+
+#include <rdseedintrin.h>
+
+#include <prfchwintrin.h>
+
+#include <fxsrintrin.h>
+
+#include <xsaveintrin.h>
+
+#include <xsaveoptintrin.h>
+
+#include <adxintrin.h>
+
+#include <clwbintrin.h>
+
+#include <pcommitintrin.h>
+
+#include <clflushoptintrin.h>
+
+#include <xsavesintrin.h>
+
+#include <xsavecintrin.h>
+
+#include <mwaitxintrin.h>
+#endif /* _X86INTRIN_H_INCLUDED */
Index: Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/xmmintrin.h
===================================================================
--- Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/xmmintrin.h	(revision 1046)
+++ Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/xmmintrin.h	(revision 1046)
@@ -0,0 +1,1267 @@
+/* Copyright (C) 2002-2015 Free Software Foundation, Inc.
+
+   This file is part of GCC.
+
+   GCC is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
+
+   GCC is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   Under Section 7 of GPL version 3, you are granted additional
+   permissions described in the GCC Runtime Library Exception, version
+   3.1, as published by the Free Software Foundation.
+
+   You should have received a copy of the GNU General Public License and
+   a copy of the GCC Runtime Library Exception along with this program;
+   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+/* Implemented from the specification included in the Intel C++ Compiler
+   User Guide and Reference, version 9.0.  */
+
+#ifndef _XMMINTRIN_H_INCLUDED
+#define _XMMINTRIN_H_INCLUDED
+
+/* We need type definitions from the MMX header file.  */
+#include <mmintrin.h>
+
+/* Get _mm_malloc () and _mm_free ().  */
+#include <mm_malloc.h>
+
+/* Constants for use with _mm_prefetch.  */
+enum _mm_hint
+{
+  /* _MM_HINT_ET is _MM_HINT_T with set 3rd bit.  */
+  _MM_HINT_ET0 = 7,
+  _MM_HINT_ET1 = 6,
+  _MM_HINT_T0 = 3,
+  _MM_HINT_T1 = 2,
+  _MM_HINT_T2 = 1,
+  _MM_HINT_NTA = 0
+};
+
+/* Loads one cache line from address P to a location "closer" to the
+   processor.  The selector I specifies the type of prefetch operation.  */
+#ifdef __OPTIMIZE__
+extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_prefetch (const void *__P, enum _mm_hint __I)
+{
+  __builtin_prefetch (__P, (__I & 0x4) >> 2, __I & 0x3);
+}
+#else
+#define _mm_prefetch(P, I) \
+  __builtin_prefetch ((P), ((I & 0x4) >> 2), (I & 0x3))
+#endif
+
+#ifndef __SSE__
+#pragma GCC push_options
+#pragma GCC target("sse")
+#define __DISABLE_SSE__
+#endif /* __SSE__ */
+
+/* The Intel API is flexible enough that we must allow aliasing with other
+   vector types, and their scalar components.  */
+typedef float __m128 __attribute__ ((__vector_size__ (16), __may_alias__));
+
+/* Internal data types for implementing the intrinsics.  */
+typedef float __v4sf __attribute__ ((__vector_size__ (16)));
+
+/* Create a selector for use with the SHUFPS instruction.  */
+#define _MM_SHUFFLE(fp3,fp2,fp1,fp0) \
+ (((fp3) << 6) | ((fp2) << 4) | ((fp1) << 2) | (fp0))
+
+/* Bits in the MXCSR.  */
+#define _MM_EXCEPT_MASK       0x003f
+#define _MM_EXCEPT_INVALID    0x0001
+#define _MM_EXCEPT_DENORM     0x0002
+#define _MM_EXCEPT_DIV_ZERO   0x0004
+#define _MM_EXCEPT_OVERFLOW   0x0008
+#define _MM_EXCEPT_UNDERFLOW  0x0010
+#define _MM_EXCEPT_INEXACT    0x0020
+
+#define _MM_MASK_MASK         0x1f80
+#define _MM_MASK_INVALID      0x0080
+#define _MM_MASK_DENORM       0x0100
+#define _MM_MASK_DIV_ZERO     0x0200
+#define _MM_MASK_OVERFLOW     0x0400
+#define _MM_MASK_UNDERFLOW    0x0800
+#define _MM_MASK_INEXACT      0x1000
+
+#define _MM_ROUND_MASK        0x6000
+#define _MM_ROUND_NEAREST     0x0000
+#define _MM_ROUND_DOWN        0x2000
+#define _MM_ROUND_UP          0x4000
+#define _MM_ROUND_TOWARD_ZERO 0x6000
+
+#define _MM_FLUSH_ZERO_MASK   0x8000
+#define _MM_FLUSH_ZERO_ON     0x8000
+#define _MM_FLUSH_ZERO_OFF    0x0000
+
+/* Create an undefined vector.  */
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_undefined_ps (void)
+{
+  __m128 __Y = __Y;
+  return __Y;
+}
+
+/* Create a vector of zeros.  */
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_setzero_ps (void)
+{
+  return __extension__ (__m128){ 0.0f, 0.0f, 0.0f, 0.0f };
+}
+
+/* Perform the respective operation on the lower SPFP (single-precision
+   floating-point) values of A and B; the upper three SPFP values are
+   passed through from A.  */
+
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_add_ss (__m128 __A, __m128 __B)
+{
+  return (__m128) __builtin_ia32_addss ((__v4sf)__A, (__v4sf)__B);
+}
+
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_sub_ss (__m128 __A, __m128 __B)
+{
+  return (__m128) __builtin_ia32_subss ((__v4sf)__A, (__v4sf)__B);
+}
+
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mul_ss (__m128 __A, __m128 __B)
+{
+  return (__m128) __builtin_ia32_mulss ((__v4sf)__A, (__v4sf)__B);
+}
+
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_div_ss (__m128 __A, __m128 __B)
+{
+  return (__m128) __builtin_ia32_divss ((__v4sf)__A, (__v4sf)__B);
+}
+
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_sqrt_ss (__m128 __A)
+{
+  return (__m128) __builtin_ia32_sqrtss ((__v4sf)__A);
+}
+
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_rcp_ss (__m128 __A)
+{
+  return (__m128) __builtin_ia32_rcpss ((__v4sf)__A);
+}
+
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_rsqrt_ss (__m128 __A)
+{
+  return (__m128) __builtin_ia32_rsqrtss ((__v4sf)__A);
+}
+
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_min_ss (__m128 __A, __m128 __B)
+{
+  return (__m128) __builtin_ia32_minss ((__v4sf)__A, (__v4sf)__B);
+}
+
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_max_ss (__m128 __A, __m128 __B)
+{
+  return (__m128) __builtin_ia32_maxss ((__v4sf)__A, (__v4sf)__B);
+}
+
+/* Perform the respective operation on the four SPFP values in A and B.  */
+
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_add_ps (__m128 __A, __m128 __B)
+{
+  return (__m128) ((__v4sf)__A + (__v4sf)__B);
+}
+
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_sub_ps (__m128 __A, __m128 __B)
+{
+  return (__m128) ((__v4sf)__A - (__v4sf)__B);
+}
+
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mul_ps (__m128 __A, __m128 __B)
+{
+  return (__m128) ((__v4sf)__A * (__v4sf)__B);
+}
+
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_div_ps (__m128 __A, __m128 __B)
+{
+  return (__m128) ((__v4sf)__A / (__v4sf)__B);
+}
+
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_sqrt_ps (__m128 __A)
+{
+  return (__m128) __builtin_ia32_sqrtps ((__v4sf)__A);
+}
+
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_rcp_ps (__m128 __A)
+{
+  return (__m128) __builtin_ia32_rcpps ((__v4sf)__A);
+}
+
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_rsqrt_ps (__m128 __A)
+{
+  return (__m128) __builtin_ia32_rsqrtps ((__v4sf)__A);
+}
+
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_min_ps (__m128 __A, __m128 __B)
+{
+  return (__m128) __builtin_ia32_minps ((__v4sf)__A, (__v4sf)__B);
+}
+
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_max_ps (__m128 __A, __m128 __B)
+{
+  return (__m128) __builtin_ia32_maxps ((__v4sf)__A, (__v4sf)__B);
+}
+
+/* Perform logical bit-wise operations on 128-bit values.  */
+
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_and_ps (__m128 __A, __m128 __B)
+{
+  return __builtin_ia32_andps (__A, __B);
+}
+
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_andnot_ps (__m128 __A, __m128 __B)
+{
+  return __builtin_ia32_andnps (__A, __B);
+}
+
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_or_ps (__m128 __A, __m128 __B)
+{
+  return __builtin_ia32_orps (__A, __B);
+}
+
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_xor_ps (__m128 __A, __m128 __B)
+{
+  return __builtin_ia32_xorps (__A, __B);
+}
+
+/* Perform a comparison on the lower SPFP values of A and B.  If the
+   comparison is true, place a mask of all ones in the result, otherwise a
+   mask of zeros.  The upper three SPFP values are passed through from A.  */
+
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpeq_ss (__m128 __A, __m128 __B)
+{
+  return (__m128) __builtin_ia32_cmpeqss ((__v4sf)__A, (__v4sf)__B);
+}
+
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmplt_ss (__m128 __A, __m128 __B)
+{
+  return (__m128) __builtin_ia32_cmpltss ((__v4sf)__A, (__v4sf)__B);
+}
+
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmple_ss (__m128 __A, __m128 __B)
+{
+  return (__m128) __builtin_ia32_cmpless ((__v4sf)__A, (__v4sf)__B);
+}
+
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpgt_ss (__m128 __A, __m128 __B)
+{
+  return (__m128) __builtin_ia32_movss ((__v4sf) __A,
+					(__v4sf)
+					__builtin_ia32_cmpltss ((__v4sf) __B,
+								(__v4sf)
+								__A));
+}
+
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpge_ss (__m128 __A, __m128 __B)
+{
+  return (__m128) __builtin_ia32_movss ((__v4sf) __A,
+					(__v4sf)
+					__builtin_ia32_cmpless ((__v4sf) __B,
+								(__v4sf)
+								__A));
+}
+
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpneq_ss (__m128 __A, __m128 __B)
+{
+  return (__m128) __builtin_ia32_cmpneqss ((__v4sf)__A, (__v4sf)__B);
+}
+
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpnlt_ss (__m128 __A, __m128 __B)
+{
+  return (__m128) __builtin_ia32_cmpnltss ((__v4sf)__A, (__v4sf)__B);
+}
+
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpnle_ss (__m128 __A, __m128 __B)
+{
+  return (__m128) __builtin_ia32_cmpnless ((__v4sf)__A, (__v4sf)__B);
+}
+
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpngt_ss (__m128 __A, __m128 __B)
+{
+  return (__m128) __builtin_ia32_movss ((__v4sf) __A,
+					(__v4sf)
+					__builtin_ia32_cmpnltss ((__v4sf) __B,
+								 (__v4sf)
+								 __A));
+}
+
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpnge_ss (__m128 __A, __m128 __B)
+{
+  return (__m128) __builtin_ia32_movss ((__v4sf) __A,
+					(__v4sf)
+					__builtin_ia32_cmpnless ((__v4sf) __B,
+								 (__v4sf)
+								 __A));
+}
+
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpord_ss (__m128 __A, __m128 __B)
+{
+  return (__m128) __builtin_ia32_cmpordss ((__v4sf)__A, (__v4sf)__B);
+}
+
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpunord_ss (__m128 __A, __m128 __B)
+{
+  return (__m128) __builtin_ia32_cmpunordss ((__v4sf)__A, (__v4sf)__B);
+}
+
+/* Perform a comparison on the four SPFP values of A and B.  For each
+   element, if the comparison is true, place a mask of all ones in the
+   result, otherwise a mask of zeros.  */
+
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpeq_ps (__m128 __A, __m128 __B)
+{
+  return (__m128) __builtin_ia32_cmpeqps ((__v4sf)__A, (__v4sf)__B);
+}
+
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmplt_ps (__m128 __A, __m128 __B)
+{
+  return (__m128) __builtin_ia32_cmpltps ((__v4sf)__A, (__v4sf)__B);
+}
+
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmple_ps (__m128 __A, __m128 __B)
+{
+  return (__m128) __builtin_ia32_cmpleps ((__v4sf)__A, (__v4sf)__B);
+}
+
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpgt_ps (__m128 __A, __m128 __B)
+{
+  return (__m128) __builtin_ia32_cmpgtps ((__v4sf)__A, (__v4sf)__B);
+}
+
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpge_ps (__m128 __A, __m128 __B)
+{
+  return (__m128) __builtin_ia32_cmpgeps ((__v4sf)__A, (__v4sf)__B);
+}
+
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpneq_ps (__m128 __A, __m128 __B)
+{
+  return (__m128) __builtin_ia32_cmpneqps ((__v4sf)__A, (__v4sf)__B);
+}
+
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpnlt_ps (__m128 __A, __m128 __B)
+{
+  return (__m128) __builtin_ia32_cmpnltps ((__v4sf)__A, (__v4sf)__B);
+}
+
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpnle_ps (__m128 __A, __m128 __B)
+{
+  return (__m128) __builtin_ia32_cmpnleps ((__v4sf)__A, (__v4sf)__B);
+}
+
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpngt_ps (__m128 __A, __m128 __B)
+{
+  return (__m128) __builtin_ia32_cmpngtps ((__v4sf)__A, (__v4sf)__B);
+}
+
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpnge_ps (__m128 __A, __m128 __B)
+{
+  return (__m128) __builtin_ia32_cmpngeps ((__v4sf)__A, (__v4sf)__B);
+}
+
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpord_ps (__m128 __A, __m128 __B)
+{
+  return (__m128) __builtin_ia32_cmpordps ((__v4sf)__A, (__v4sf)__B);
+}
+
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmpunord_ps (__m128 __A, __m128 __B)
+{
+  return (__m128) __builtin_ia32_cmpunordps ((__v4sf)__A, (__v4sf)__B);
+}
+
+/* Compare the lower SPFP values of A and B and return 1 if true
+   and 0 if false.  */
+
+extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_comieq_ss (__m128 __A, __m128 __B)
+{
+  return __builtin_ia32_comieq ((__v4sf)__A, (__v4sf)__B);
+}
+
+extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_comilt_ss (__m128 __A, __m128 __B)
+{
+  return __builtin_ia32_comilt ((__v4sf)__A, (__v4sf)__B);
+}
+
+extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_comile_ss (__m128 __A, __m128 __B)
+{
+  return __builtin_ia32_comile ((__v4sf)__A, (__v4sf)__B);
+}
+
+extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_comigt_ss (__m128 __A, __m128 __B)
+{
+  return __builtin_ia32_comigt ((__v4sf)__A, (__v4sf)__B);
+}
+
+extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_comige_ss (__m128 __A, __m128 __B)
+{
+  return __builtin_ia32_comige ((__v4sf)__A, (__v4sf)__B);
+}
+
+extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_comineq_ss (__m128 __A, __m128 __B)
+{
+  return __builtin_ia32_comineq ((__v4sf)__A, (__v4sf)__B);
+}
+
+extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_ucomieq_ss (__m128 __A, __m128 __B)
+{
+  return __builtin_ia32_ucomieq ((__v4sf)__A, (__v4sf)__B);
+}
+
+extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_ucomilt_ss (__m128 __A, __m128 __B)
+{
+  return __builtin_ia32_ucomilt ((__v4sf)__A, (__v4sf)__B);
+}
+
+extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_ucomile_ss (__m128 __A, __m128 __B)
+{
+  return __builtin_ia32_ucomile ((__v4sf)__A, (__v4sf)__B);
+}
+
+extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_ucomigt_ss (__m128 __A, __m128 __B)
+{
+  return __builtin_ia32_ucomigt ((__v4sf)__A, (__v4sf)__B);
+}
+
+extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_ucomige_ss (__m128 __A, __m128 __B)
+{
+  return __builtin_ia32_ucomige ((__v4sf)__A, (__v4sf)__B);
+}
+
+extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_ucomineq_ss (__m128 __A, __m128 __B)
+{
+  return __builtin_ia32_ucomineq ((__v4sf)__A, (__v4sf)__B);
+}
+
+/* Convert the lower SPFP value to a 32-bit integer according to the current
+   rounding mode.  */
+extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtss_si32 (__m128 __A)
+{
+  return __builtin_ia32_cvtss2si ((__v4sf) __A);
+}
+
+extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvt_ss2si (__m128 __A)
+{
+  return _mm_cvtss_si32 (__A);
+}
+
+#ifdef __x86_64__
+/* Convert the lower SPFP value to a 32-bit integer according to the
+   current rounding mode.  */
+
+/* Intel intrinsic.  */
+extern __inline long long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtss_si64 (__m128 __A)
+{
+  return __builtin_ia32_cvtss2si64 ((__v4sf) __A);
+}
+
+/* Microsoft intrinsic.  */
+extern __inline long long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtss_si64x (__m128 __A)
+{
+  return __builtin_ia32_cvtss2si64 ((__v4sf) __A);
+}
+#endif
+
+/* Convert the two lower SPFP values to 32-bit integers according to the
+   current rounding mode.  Return the integers in packed form.  */
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtps_pi32 (__m128 __A)
+{
+  return (__m64) __builtin_ia32_cvtps2pi ((__v4sf) __A);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvt_ps2pi (__m128 __A)
+{
+  return _mm_cvtps_pi32 (__A);
+}
+
+/* Truncate the lower SPFP value to a 32-bit integer.  */
+extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvttss_si32 (__m128 __A)
+{
+  return __builtin_ia32_cvttss2si ((__v4sf) __A);
+}
+
+extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtt_ss2si (__m128 __A)
+{
+  return _mm_cvttss_si32 (__A);
+}
+
+#ifdef __x86_64__
+/* Truncate the lower SPFP value to a 32-bit integer.  */
+
+/* Intel intrinsic.  */
+extern __inline long long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvttss_si64 (__m128 __A)
+{
+  return __builtin_ia32_cvttss2si64 ((__v4sf) __A);
+}
+
+/* Microsoft intrinsic.  */
+extern __inline long long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvttss_si64x (__m128 __A)
+{
+  return __builtin_ia32_cvttss2si64 ((__v4sf) __A);
+}
+#endif
+
+/* Truncate the two lower SPFP values to 32-bit integers.  Return the
+   integers in packed form.  */
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvttps_pi32 (__m128 __A)
+{
+  return (__m64) __builtin_ia32_cvttps2pi ((__v4sf) __A);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtt_ps2pi (__m128 __A)
+{
+  return _mm_cvttps_pi32 (__A);
+}
+
+/* Convert B to a SPFP value and insert it as element zero in A.  */
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtsi32_ss (__m128 __A, int __B)
+{
+  return (__m128) __builtin_ia32_cvtsi2ss ((__v4sf) __A, __B);
+}
+
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvt_si2ss (__m128 __A, int __B)
+{
+  return _mm_cvtsi32_ss (__A, __B);
+}
+
+#ifdef __x86_64__
+/* Convert B to a SPFP value and insert it as element zero in A.  */
+
+/* Intel intrinsic.  */
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtsi64_ss (__m128 __A, long long __B)
+{
+  return (__m128) __builtin_ia32_cvtsi642ss ((__v4sf) __A, __B);
+}
+
+/* Microsoft intrinsic.  */
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtsi64x_ss (__m128 __A, long long __B)
+{
+  return (__m128) __builtin_ia32_cvtsi642ss ((__v4sf) __A, __B);
+}
+#endif
+
+/* Convert the two 32-bit values in B to SPFP form and insert them
+   as the two lower elements in A.  */
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtpi32_ps (__m128 __A, __m64 __B)
+{
+  return (__m128) __builtin_ia32_cvtpi2ps ((__v4sf) __A, (__v2si)__B);
+}
+
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvt_pi2ps (__m128 __A, __m64 __B)
+{
+  return _mm_cvtpi32_ps (__A, __B);
+}
+
+/* Convert the four signed 16-bit values in A to SPFP form.  */
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtpi16_ps (__m64 __A)
+{
+  __v4hi __sign;
+  __v2si __hisi, __losi;
+  __v4sf __zero, __ra, __rb;
+
+  /* This comparison against zero gives us a mask that can be used to
+     fill in the missing sign bits in the unpack operations below, so
+     that we get signed values after unpacking.  */
+  __sign = __builtin_ia32_pcmpgtw ((__v4hi)0LL, (__v4hi)__A);
+
+  /* Convert the four words to doublewords.  */
+  __losi = (__v2si) __builtin_ia32_punpcklwd ((__v4hi)__A, __sign);
+  __hisi = (__v2si) __builtin_ia32_punpckhwd ((__v4hi)__A, __sign);
+
+  /* Convert the doublewords to floating point two at a time.  */
+  __zero = (__v4sf) _mm_setzero_ps ();
+  __ra = __builtin_ia32_cvtpi2ps (__zero, __losi);
+  __rb = __builtin_ia32_cvtpi2ps (__ra, __hisi);
+
+  return (__m128) __builtin_ia32_movlhps (__ra, __rb);
+}
+
+/* Convert the four unsigned 16-bit values in A to SPFP form.  */
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtpu16_ps (__m64 __A)
+{
+  __v2si __hisi, __losi;
+  __v4sf __zero, __ra, __rb;
+
+  /* Convert the four words to doublewords.  */
+  __losi = (__v2si) __builtin_ia32_punpcklwd ((__v4hi)__A, (__v4hi)0LL);
+  __hisi = (__v2si) __builtin_ia32_punpckhwd ((__v4hi)__A, (__v4hi)0LL);
+
+  /* Convert the doublewords to floating point two at a time.  */
+  __zero = (__v4sf) _mm_setzero_ps ();
+  __ra = __builtin_ia32_cvtpi2ps (__zero, __losi);
+  __rb = __builtin_ia32_cvtpi2ps (__ra, __hisi);
+
+  return (__m128) __builtin_ia32_movlhps (__ra, __rb);
+}
+
+/* Convert the low four signed 8-bit values in A to SPFP form.  */
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtpi8_ps (__m64 __A)
+{
+  __v8qi __sign;
+
+  /* This comparison against zero gives us a mask that can be used to
+     fill in the missing sign bits in the unpack operations below, so
+     that we get signed values after unpacking.  */
+  __sign = __builtin_ia32_pcmpgtb ((__v8qi)0LL, (__v8qi)__A);
+
+  /* Convert the four low bytes to words.  */
+  __A = (__m64) __builtin_ia32_punpcklbw ((__v8qi)__A, __sign);
+
+  return _mm_cvtpi16_ps(__A);
+}
+
+/* Convert the low four unsigned 8-bit values in A to SPFP form.  */
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtpu8_ps(__m64 __A)
+{
+  __A = (__m64) __builtin_ia32_punpcklbw ((__v8qi)__A, (__v8qi)0LL);
+  return _mm_cvtpu16_ps(__A);
+}
+
+/* Convert the four signed 32-bit values in A and B to SPFP form.  */
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtpi32x2_ps(__m64 __A, __m64 __B)
+{
+  __v4sf __zero = (__v4sf) _mm_setzero_ps ();
+  __v4sf __sfa = __builtin_ia32_cvtpi2ps (__zero, (__v2si)__A);
+  __v4sf __sfb = __builtin_ia32_cvtpi2ps (__sfa, (__v2si)__B);
+  return (__m128) __builtin_ia32_movlhps (__sfa, __sfb);
+}
+
+/* Convert the four SPFP values in A to four signed 16-bit integers.  */
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtps_pi16(__m128 __A)
+{
+  __v4sf __hisf = (__v4sf)__A;
+  __v4sf __losf = __builtin_ia32_movhlps (__hisf, __hisf);
+  __v2si __hisi = __builtin_ia32_cvtps2pi (__hisf);
+  __v2si __losi = __builtin_ia32_cvtps2pi (__losf);
+  return (__m64) __builtin_ia32_packssdw (__hisi, __losi);
+}
+
+/* Convert the four SPFP values in A to four signed 8-bit integers.  */
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtps_pi8(__m128 __A)
+{
+  __v4hi __tmp = (__v4hi) _mm_cvtps_pi16 (__A);
+  return (__m64) __builtin_ia32_packsswb (__tmp, (__v4hi)0LL);
+}
+
+/* Selects four specific SPFP values from A and B based on MASK.  */
+#ifdef __OPTIMIZE__
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_shuffle_ps (__m128 __A, __m128 __B, int const __mask)
+{
+  return (__m128) __builtin_ia32_shufps ((__v4sf)__A, (__v4sf)__B, __mask);
+}
+#else
+#define _mm_shuffle_ps(A, B, MASK)					\
+  ((__m128) __builtin_ia32_shufps ((__v4sf)(__m128)(A),			\
+				   (__v4sf)(__m128)(B), (int)(MASK)))
+#endif
+
+/* Selects and interleaves the upper two SPFP values from A and B.  */
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_unpackhi_ps (__m128 __A, __m128 __B)
+{
+  return (__m128) __builtin_ia32_unpckhps ((__v4sf)__A, (__v4sf)__B);
+}
+
+/* Selects and interleaves the lower two SPFP values from A and B.  */
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_unpacklo_ps (__m128 __A, __m128 __B)
+{
+  return (__m128) __builtin_ia32_unpcklps ((__v4sf)__A, (__v4sf)__B);
+}
+
+/* Sets the upper two SPFP values with 64-bits of data loaded from P;
+   the lower two values are passed through from A.  */
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_loadh_pi (__m128 __A, __m64 const *__P)
+{
+  return (__m128) __builtin_ia32_loadhps ((__v4sf)__A, (const __v2sf *)__P);
+}
+
+/* Stores the upper two SPFP values of A into P.  */
+extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_storeh_pi (__m64 *__P, __m128 __A)
+{
+  __builtin_ia32_storehps ((__v2sf *)__P, (__v4sf)__A);
+}
+
+/* Moves the upper two values of B into the lower two values of A.  */
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_movehl_ps (__m128 __A, __m128 __B)
+{
+  return (__m128) __builtin_ia32_movhlps ((__v4sf)__A, (__v4sf)__B);
+}
+
+/* Moves the lower two values of B into the upper two values of A.  */
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_movelh_ps (__m128 __A, __m128 __B)
+{
+  return (__m128) __builtin_ia32_movlhps ((__v4sf)__A, (__v4sf)__B);
+}
+
+/* Sets the lower two SPFP values with 64-bits of data loaded from P;
+   the upper two values are passed through from A.  */
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_loadl_pi (__m128 __A, __m64 const *__P)
+{
+  return (__m128) __builtin_ia32_loadlps ((__v4sf)__A, (const __v2sf *)__P);
+}
+
+/* Stores the lower two SPFP values of A into P.  */
+extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_storel_pi (__m64 *__P, __m128 __A)
+{
+  __builtin_ia32_storelps ((__v2sf *)__P, (__v4sf)__A);
+}
+
+/* Creates a 4-bit mask from the most significant bits of the SPFP values.  */
+extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_movemask_ps (__m128 __A)
+{
+  return __builtin_ia32_movmskps ((__v4sf)__A);
+}
+
+/* Return the contents of the control register.  */
+extern __inline unsigned int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_getcsr (void)
+{
+  return __builtin_ia32_stmxcsr ();
+}
+
+/* Read exception bits from the control register.  */
+extern __inline unsigned int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_MM_GET_EXCEPTION_STATE (void)
+{
+  return _mm_getcsr() & _MM_EXCEPT_MASK;
+}
+
+extern __inline unsigned int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_MM_GET_EXCEPTION_MASK (void)
+{
+  return _mm_getcsr() & _MM_MASK_MASK;
+}
+
+extern __inline unsigned int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_MM_GET_ROUNDING_MODE (void)
+{
+  return _mm_getcsr() & _MM_ROUND_MASK;
+}
+
+extern __inline unsigned int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_MM_GET_FLUSH_ZERO_MODE (void)
+{
+  return _mm_getcsr() & _MM_FLUSH_ZERO_MASK;
+}
+
+/* Set the control register to I.  */
+extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_setcsr (unsigned int __I)
+{
+  __builtin_ia32_ldmxcsr (__I);
+}
+
+/* Set exception bits in the control register.  */
+extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_MM_SET_EXCEPTION_STATE(unsigned int __mask)
+{
+  _mm_setcsr((_mm_getcsr() & ~_MM_EXCEPT_MASK) | __mask);
+}
+
+extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_MM_SET_EXCEPTION_MASK (unsigned int __mask)
+{
+  _mm_setcsr((_mm_getcsr() & ~_MM_MASK_MASK) | __mask);
+}
+
+extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_MM_SET_ROUNDING_MODE (unsigned int __mode)
+{
+  _mm_setcsr((_mm_getcsr() & ~_MM_ROUND_MASK) | __mode);
+}
+
+extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_MM_SET_FLUSH_ZERO_MODE (unsigned int __mode)
+{
+  _mm_setcsr((_mm_getcsr() & ~_MM_FLUSH_ZERO_MASK) | __mode);
+}
+
+/* Create a vector with element 0 as F and the rest zero.  */
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_set_ss (float __F)
+{
+  return __extension__ (__m128)(__v4sf){ __F, 0.0f, 0.0f, 0.0f };
+}
+
+/* Create a vector with all four elements equal to F.  */
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_set1_ps (float __F)
+{
+  return __extension__ (__m128)(__v4sf){ __F, __F, __F, __F };
+}
+
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_set_ps1 (float __F)
+{
+  return _mm_set1_ps (__F);
+}
+
+/* Create a vector with element 0 as *P and the rest zero.  */
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_load_ss (float const *__P)
+{
+  return _mm_set_ss (*__P);
+}
+
+/* Create a vector with all four elements equal to *P.  */
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_load1_ps (float const *__P)
+{
+  return _mm_set1_ps (*__P);
+}
+
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_load_ps1 (float const *__P)
+{
+  return _mm_load1_ps (__P);
+}
+
+/* Load four SPFP values from P.  The address must be 16-byte aligned.  */
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_load_ps (float const *__P)
+{
+  return (__m128) *(__v4sf *)__P;
+}
+
+/* Load four SPFP values from P.  The address need not be 16-byte aligned.  */
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_loadu_ps (float const *__P)
+{
+  return (__m128) __builtin_ia32_loadups (__P);
+}
+
+/* Load four SPFP values in reverse order.  The address must be aligned.  */
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_loadr_ps (float const *__P)
+{
+  __v4sf __tmp = *(__v4sf *)__P;
+  return (__m128) __builtin_ia32_shufps (__tmp, __tmp, _MM_SHUFFLE (0,1,2,3));
+}
+
+/* Create the vector [Z Y X W].  */
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_set_ps (const float __Z, const float __Y, const float __X, const float __W)
+{
+  return __extension__ (__m128)(__v4sf){ __W, __X, __Y, __Z };
+}
+
+/* Create the vector [W X Y Z].  */
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_setr_ps (float __Z, float __Y, float __X, float __W)
+{
+  return __extension__ (__m128)(__v4sf){ __Z, __Y, __X, __W };
+}
+
+/* Stores the lower SPFP value.  */
+extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_store_ss (float *__P, __m128 __A)
+{
+  *__P = ((__v4sf)__A)[0];
+}
+
+extern __inline float __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cvtss_f32 (__m128 __A)
+{
+  return ((__v4sf)__A)[0];
+}
+
+/* Store four SPFP values.  The address must be 16-byte aligned.  */
+extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_store_ps (float *__P, __m128 __A)
+{
+  *(__v4sf *)__P = (__v4sf)__A;
+}
+
+/* Store four SPFP values.  The address need not be 16-byte aligned.  */
+extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_storeu_ps (float *__P, __m128 __A)
+{
+  __builtin_ia32_storeups (__P, (__v4sf)__A);
+}
+
+/* Store the lower SPFP value across four words.  */
+extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_store1_ps (float *__P, __m128 __A)
+{
+  __v4sf __va = (__v4sf)__A;
+  __v4sf __tmp = __builtin_ia32_shufps (__va, __va, _MM_SHUFFLE (0,0,0,0));
+  _mm_storeu_ps (__P, __tmp);
+}
+
+extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_store_ps1 (float *__P, __m128 __A)
+{
+  _mm_store1_ps (__P, __A);
+}
+
+/* Store four SPFP values in reverse order.  The address must be aligned.  */
+extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_storer_ps (float *__P, __m128 __A)
+{
+  __v4sf __va = (__v4sf)__A;
+  __v4sf __tmp = __builtin_ia32_shufps (__va, __va, _MM_SHUFFLE (0,1,2,3));
+  _mm_store_ps (__P, __tmp);
+}
+
+/* Sets the low SPFP value of A from the low value of B.  */
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_move_ss (__m128 __A, __m128 __B)
+{
+  return (__m128) __builtin_ia32_movss ((__v4sf)__A, (__v4sf)__B);
+}
+
+/* Extracts one of the four words of A.  The selector N must be immediate.  */
+#ifdef __OPTIMIZE__
+extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_extract_pi16 (__m64 const __A, int const __N)
+{
+  return __builtin_ia32_vec_ext_v4hi ((__v4hi)__A, __N);
+}
+
+extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_pextrw (__m64 const __A, int const __N)
+{
+  return _mm_extract_pi16 (__A, __N);
+}
+#else
+#define _mm_extract_pi16(A, N)	\
+  ((int) __builtin_ia32_vec_ext_v4hi ((__v4hi)(__m64)(A), (int)(N)))
+
+#define _m_pextrw(A, N) _mm_extract_pi16(A, N)
+#endif
+
+/* Inserts word D into one of four words of A.  The selector N must be
+   immediate.  */
+#ifdef __OPTIMIZE__
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_insert_pi16 (__m64 const __A, int const __D, int const __N)
+{
+  return (__m64) __builtin_ia32_vec_set_v4hi ((__v4hi)__A, __D, __N);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_pinsrw (__m64 const __A, int const __D, int const __N)
+{
+  return _mm_insert_pi16 (__A, __D, __N);
+}
+#else
+#define _mm_insert_pi16(A, D, N)				\
+  ((__m64) __builtin_ia32_vec_set_v4hi ((__v4hi)(__m64)(A),	\
+					(int)(D), (int)(N)))
+
+#define _m_pinsrw(A, D, N) _mm_insert_pi16(A, D, N)
+#endif
+
+/* Compute the element-wise maximum of signed 16-bit values.  */
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_max_pi16 (__m64 __A, __m64 __B)
+{
+  return (__m64) __builtin_ia32_pmaxsw ((__v4hi)__A, (__v4hi)__B);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_pmaxsw (__m64 __A, __m64 __B)
+{
+  return _mm_max_pi16 (__A, __B);
+}
+
+/* Compute the element-wise maximum of unsigned 8-bit values.  */
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_max_pu8 (__m64 __A, __m64 __B)
+{
+  return (__m64) __builtin_ia32_pmaxub ((__v8qi)__A, (__v8qi)__B);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_pmaxub (__m64 __A, __m64 __B)
+{
+  return _mm_max_pu8 (__A, __B);
+}
+
+/* Compute the element-wise minimum of signed 16-bit values.  */
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_min_pi16 (__m64 __A, __m64 __B)
+{
+  return (__m64) __builtin_ia32_pminsw ((__v4hi)__A, (__v4hi)__B);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_pminsw (__m64 __A, __m64 __B)
+{
+  return _mm_min_pi16 (__A, __B);
+}
+
+/* Compute the element-wise minimum of unsigned 8-bit values.  */
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_min_pu8 (__m64 __A, __m64 __B)
+{
+  return (__m64) __builtin_ia32_pminub ((__v8qi)__A, (__v8qi)__B);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_pminub (__m64 __A, __m64 __B)
+{
+  return _mm_min_pu8 (__A, __B);
+}
+
+/* Create an 8-bit mask of the signs of 8-bit values.  */
+extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_movemask_pi8 (__m64 __A)
+{
+  return __builtin_ia32_pmovmskb ((__v8qi)__A);
+}
+
+extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_pmovmskb (__m64 __A)
+{
+  return _mm_movemask_pi8 (__A);
+}
+
+/* Multiply four unsigned 16-bit values in A by four unsigned 16-bit values
+   in B and produce the high 16 bits of the 32-bit results.  */
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mulhi_pu16 (__m64 __A, __m64 __B)
+{
+  return (__m64) __builtin_ia32_pmulhuw ((__v4hi)__A, (__v4hi)__B);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_pmulhuw (__m64 __A, __m64 __B)
+{
+  return _mm_mulhi_pu16 (__A, __B);
+}
+
+/* Return a combination of the four 16-bit values in A.  The selector
+   must be an immediate.  */
+#ifdef __OPTIMIZE__
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_shuffle_pi16 (__m64 __A, int const __N)
+{
+  return (__m64) __builtin_ia32_pshufw ((__v4hi)__A, __N);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_pshufw (__m64 __A, int const __N)
+{
+  return _mm_shuffle_pi16 (__A, __N);
+}
+#else
+#define _mm_shuffle_pi16(A, N) \
+  ((__m64) __builtin_ia32_pshufw ((__v4hi)(__m64)(A), (int)(N)))
+
+#define _m_pshufw(A, N) _mm_shuffle_pi16 (A, N)
+#endif
+
+/* Conditionally store byte elements of A into P.  The high bit of each
+   byte in the selector N determines whether the corresponding byte from
+   A is stored.  */
+extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maskmove_si64 (__m64 __A, __m64 __N, char *__P)
+{
+  __builtin_ia32_maskmovq ((__v8qi)__A, (__v8qi)__N, __P);
+}
+
+extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_maskmovq (__m64 __A, __m64 __N, char *__P)
+{
+  _mm_maskmove_si64 (__A, __N, __P);
+}
+
+/* Compute the rounded averages of the unsigned 8-bit values in A and B.  */
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_avg_pu8 (__m64 __A, __m64 __B)
+{
+  return (__m64) __builtin_ia32_pavgb ((__v8qi)__A, (__v8qi)__B);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_pavgb (__m64 __A, __m64 __B)
+{
+  return _mm_avg_pu8 (__A, __B);
+}
+
+/* Compute the rounded averages of the unsigned 16-bit values in A and B.  */
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_avg_pu16 (__m64 __A, __m64 __B)
+{
+  return (__m64) __builtin_ia32_pavgw ((__v4hi)__A, (__v4hi)__B);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_pavgw (__m64 __A, __m64 __B)
+{
+  return _mm_avg_pu16 (__A, __B);
+}
+
+/* Compute the sum of the absolute differences of the unsigned 8-bit
+   values in A and B.  Return the value in the lower 16-bit word; the
+   upper words are cleared.  */
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_sad_pu8 (__m64 __A, __m64 __B)
+{
+  return (__m64) __builtin_ia32_psadbw ((__v8qi)__A, (__v8qi)__B);
+}
+
+extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_psadbw (__m64 __A, __m64 __B)
+{
+  return _mm_sad_pu8 (__A, __B);
+}
+
+/* Stores the data in A to the address P without polluting the caches.  */
+extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_stream_pi (__m64 *__P, __m64 __A)
+{
+  __builtin_ia32_movntq ((unsigned long long *)__P, (unsigned long long)__A);
+}
+
+/* Likewise.  The address must be 16-byte aligned.  */
+extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_stream_ps (float *__P, __m128 __A)
+{
+  __builtin_ia32_movntps (__P, (__v4sf)__A);
+}
+
+/* Guarantees that every preceding store is globally visible before
+   any subsequent store.  */
+extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_sfence (void)
+{
+  __builtin_ia32_sfence ();
+}
+
+/* Transpose the 4x4 matrix composed of row[0-3].  */
+#define _MM_TRANSPOSE4_PS(row0, row1, row2, row3)			\
+do {									\
+  __v4sf __r0 = (row0), __r1 = (row1), __r2 = (row2), __r3 = (row3);	\
+  __v4sf __t0 = __builtin_ia32_unpcklps (__r0, __r1);			\
+  __v4sf __t1 = __builtin_ia32_unpcklps (__r2, __r3);			\
+  __v4sf __t2 = __builtin_ia32_unpckhps (__r0, __r1);			\
+  __v4sf __t3 = __builtin_ia32_unpckhps (__r2, __r3);			\
+  (row0) = __builtin_ia32_movlhps (__t0, __t1);				\
+  (row1) = __builtin_ia32_movhlps (__t1, __t0);				\
+  (row2) = __builtin_ia32_movlhps (__t2, __t3);				\
+  (row3) = __builtin_ia32_movhlps (__t3, __t2);				\
+} while (0)
+
+/* For backward source compatibility.  */
+# include <emmintrin.h>
+
+#ifdef __DISABLE_SSE__
+#undef __DISABLE_SSE__
+#pragma GCC pop_options
+#endif /* __DISABLE_SSE__ */
+
+/* The execution of the next instruction is delayed by an implementation
+   specific amount of time.  The instruction does not modify the
+   architectural state.  This is after the pop_options pragma because
+   it does not require SSE support in the processor--the encoding is a
+   nop on processors that do not support it.  */
+extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_pause (void)
+{
+  __builtin_ia32_pause ();
+}
+
+#endif /* _XMMINTRIN_H_INCLUDED */
Index: Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/xopintrin.h
===================================================================
--- Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/xopintrin.h	(revision 1046)
+++ Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/xopintrin.h	(revision 1046)
@@ -0,0 +1,844 @@
+/* Copyright (C) 2007-2015 Free Software Foundation, Inc.
+
+   This file is part of GCC.
+
+   GCC is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
+
+   GCC is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   Under Section 7 of GPL version 3, you are granted additional
+   permissions described in the GCC Runtime Library Exception, version
+   3.1, as published by the Free Software Foundation.
+
+   You should have received a copy of the GNU General Public License and
+   a copy of the GCC Runtime Library Exception along with this program;
+   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _X86INTRIN_H_INCLUDED
+# error "Never use <xopintrin.h> directly; include <x86intrin.h> instead."
+#endif
+
+#ifndef _XOPMMINTRIN_H_INCLUDED
+#define _XOPMMINTRIN_H_INCLUDED
+
+#include <fma4intrin.h>
+
+#ifndef __XOP__
+#pragma GCC push_options
+#pragma GCC target("xop")
+#define __DISABLE_XOP__
+#endif /* __XOP__ */
+
+/* Integer multiply/add intructions. */
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maccs_epi16(__m128i __A, __m128i __B, __m128i __C)
+{
+  return (__m128i) __builtin_ia32_vpmacssww ((__v8hi)__A,(__v8hi)__B, (__v8hi)__C);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_macc_epi16(__m128i __A, __m128i __B, __m128i __C)
+{
+  return (__m128i) __builtin_ia32_vpmacsww ((__v8hi)__A, (__v8hi)__B, (__v8hi)__C);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maccsd_epi16(__m128i __A, __m128i __B, __m128i __C)
+{
+  return  (__m128i) __builtin_ia32_vpmacsswd ((__v8hi)__A, (__v8hi)__B, (__v4si)__C);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maccd_epi16(__m128i __A, __m128i __B, __m128i __C)
+{
+  return  (__m128i) __builtin_ia32_vpmacswd ((__v8hi)__A, (__v8hi)__B, (__v4si)__C);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maccs_epi32(__m128i __A, __m128i __B, __m128i __C)
+{
+  return  (__m128i) __builtin_ia32_vpmacssdd ((__v4si)__A, (__v4si)__B, (__v4si)__C);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_macc_epi32(__m128i __A, __m128i __B, __m128i __C)
+{
+  return  (__m128i) __builtin_ia32_vpmacsdd ((__v4si)__A, (__v4si)__B, (__v4si)__C);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maccslo_epi32(__m128i __A, __m128i __B, __m128i __C)
+{
+  return  (__m128i) __builtin_ia32_vpmacssdql ((__v4si)__A, (__v4si)__B, (__v2di)__C);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_macclo_epi32(__m128i __A, __m128i __B, __m128i __C)
+{
+  return  (__m128i) __builtin_ia32_vpmacsdql ((__v4si)__A, (__v4si)__B, (__v2di)__C);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maccshi_epi32(__m128i __A, __m128i __B, __m128i __C)
+{
+  return  (__m128i) __builtin_ia32_vpmacssdqh ((__v4si)__A, (__v4si)__B, (__v2di)__C);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_macchi_epi32(__m128i __A, __m128i __B, __m128i __C)
+{
+  return  (__m128i) __builtin_ia32_vpmacsdqh ((__v4si)__A, (__v4si)__B, (__v2di)__C);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maddsd_epi16(__m128i __A, __m128i __B, __m128i __C)
+{
+  return  (__m128i) __builtin_ia32_vpmadcsswd ((__v8hi)__A,(__v8hi)__B,(__v4si)__C);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_maddd_epi16(__m128i __A, __m128i __B, __m128i __C)
+{
+  return  (__m128i) __builtin_ia32_vpmadcswd ((__v8hi)__A,(__v8hi)__B,(__v4si)__C);
+}
+
+/* Packed Integer Horizontal Add and Subtract */
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_haddw_epi8(__m128i __A)
+{
+  return  (__m128i) __builtin_ia32_vphaddbw ((__v16qi)__A);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_haddd_epi8(__m128i __A)
+{
+  return  (__m128i) __builtin_ia32_vphaddbd ((__v16qi)__A);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_haddq_epi8(__m128i __A)
+{
+  return  (__m128i) __builtin_ia32_vphaddbq ((__v16qi)__A);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_haddd_epi16(__m128i __A)
+{
+  return  (__m128i) __builtin_ia32_vphaddwd ((__v8hi)__A);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_haddq_epi16(__m128i __A)
+{
+  return  (__m128i) __builtin_ia32_vphaddwq ((__v8hi)__A);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_haddq_epi32(__m128i __A)
+{
+  return  (__m128i) __builtin_ia32_vphadddq ((__v4si)__A);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_haddw_epu8(__m128i __A)
+{
+  return  (__m128i) __builtin_ia32_vphaddubw ((__v16qi)__A);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_haddd_epu8(__m128i __A)
+{
+  return  (__m128i) __builtin_ia32_vphaddubd ((__v16qi)__A);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_haddq_epu8(__m128i __A)
+{
+  return  (__m128i) __builtin_ia32_vphaddubq ((__v16qi)__A);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_haddd_epu16(__m128i __A)
+{
+  return  (__m128i) __builtin_ia32_vphadduwd ((__v8hi)__A);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_haddq_epu16(__m128i __A)
+{
+  return  (__m128i) __builtin_ia32_vphadduwq ((__v8hi)__A);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_haddq_epu32(__m128i __A)
+{
+  return  (__m128i) __builtin_ia32_vphaddudq ((__v4si)__A);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_hsubw_epi8(__m128i __A)
+{
+  return  (__m128i) __builtin_ia32_vphsubbw ((__v16qi)__A);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_hsubd_epi16(__m128i __A)
+{
+  return  (__m128i) __builtin_ia32_vphsubwd ((__v8hi)__A);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_hsubq_epi32(__m128i __A)
+{
+  return  (__m128i) __builtin_ia32_vphsubdq ((__v4si)__A);
+}
+
+/* Vector conditional move and permute */
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_cmov_si128(__m128i __A, __m128i __B, __m128i __C)
+{
+  return  (__m128i) __builtin_ia32_vpcmov (__A, __B, __C);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_perm_epi8(__m128i __A, __m128i __B, __m128i __C)
+{
+  return  (__m128i) __builtin_ia32_vpperm ((__v16qi)__A, (__v16qi)__B, (__v16qi)__C);
+}
+
+/* Packed Integer Rotates and Shifts
+   Rotates - Non-Immediate form */
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_rot_epi8(__m128i __A,  __m128i __B)
+{
+  return  (__m128i) __builtin_ia32_vprotb ((__v16qi)__A, (__v16qi)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_rot_epi16(__m128i __A,  __m128i __B)
+{
+  return  (__m128i) __builtin_ia32_vprotw ((__v8hi)__A, (__v8hi)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_rot_epi32(__m128i __A,  __m128i __B)
+{
+  return  (__m128i) __builtin_ia32_vprotd ((__v4si)__A, (__v4si)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_rot_epi64(__m128i __A,  __m128i __B)
+{
+  return (__m128i)  __builtin_ia32_vprotq ((__v2di)__A, (__v2di)__B);
+}
+
+/* Rotates - Immediate form */
+
+#ifdef __OPTIMIZE__
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_roti_epi8(__m128i __A, const int __B)
+{
+  return  (__m128i) __builtin_ia32_vprotbi ((__v16qi)__A, __B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_roti_epi16(__m128i __A, const int __B)
+{
+  return  (__m128i) __builtin_ia32_vprotwi ((__v8hi)__A, __B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_roti_epi32(__m128i __A, const int __B)
+{
+  return  (__m128i) __builtin_ia32_vprotdi ((__v4si)__A, __B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_roti_epi64(__m128i __A, const int __B)
+{
+  return  (__m128i) __builtin_ia32_vprotqi ((__v2di)__A, __B);
+}
+#else
+#define _mm_roti_epi8(A, N) \
+  ((__m128i) __builtin_ia32_vprotbi ((__v16qi)(__m128i)(A), (int)(N)))
+#define _mm_roti_epi16(A, N) \
+  ((__m128i) __builtin_ia32_vprotwi ((__v8hi)(__m128i)(A), (int)(N)))
+#define _mm_roti_epi32(A, N) \
+  ((__m128i) __builtin_ia32_vprotdi ((__v4si)(__m128i)(A), (int)(N)))
+#define _mm_roti_epi64(A, N) \
+  ((__m128i) __builtin_ia32_vprotqi ((__v2di)(__m128i)(A), (int)(N)))
+#endif
+
+/* Shifts */
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_shl_epi8(__m128i __A,  __m128i __B)
+{
+  return  (__m128i) __builtin_ia32_vpshlb ((__v16qi)__A, (__v16qi)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_shl_epi16(__m128i __A,  __m128i __B)
+{
+  return  (__m128i) __builtin_ia32_vpshlw ((__v8hi)__A, (__v8hi)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_shl_epi32(__m128i __A,  __m128i __B)
+{
+  return  (__m128i) __builtin_ia32_vpshld ((__v4si)__A, (__v4si)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_shl_epi64(__m128i __A,  __m128i __B)
+{
+  return  (__m128i) __builtin_ia32_vpshlq ((__v2di)__A, (__v2di)__B);
+}
+
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_sha_epi8(__m128i __A,  __m128i __B)
+{
+  return  (__m128i) __builtin_ia32_vpshab ((__v16qi)__A, (__v16qi)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_sha_epi16(__m128i __A,  __m128i __B)
+{
+  return  (__m128i) __builtin_ia32_vpshaw ((__v8hi)__A, (__v8hi)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_sha_epi32(__m128i __A,  __m128i __B)
+{
+  return  (__m128i) __builtin_ia32_vpshad ((__v4si)__A, (__v4si)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_sha_epi64(__m128i __A,  __m128i __B)
+{
+  return  (__m128i) __builtin_ia32_vpshaq ((__v2di)__A, (__v2di)__B);
+}
+
+/* Compare and Predicate Generation
+   pcom (integer, unsinged bytes) */
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_comlt_epu8(__m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_vpcomltub ((__v16qi)__A, (__v16qi)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_comle_epu8(__m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_vpcomleub ((__v16qi)__A, (__v16qi)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_comgt_epu8(__m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_vpcomgtub ((__v16qi)__A, (__v16qi)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_comge_epu8(__m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_vpcomgeub ((__v16qi)__A, (__v16qi)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_comeq_epu8(__m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_vpcomequb ((__v16qi)__A, (__v16qi)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_comneq_epu8(__m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_vpcomnequb ((__v16qi)__A, (__v16qi)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_comfalse_epu8(__m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_vpcomfalseub ((__v16qi)__A, (__v16qi)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_comtrue_epu8(__m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_vpcomtrueub ((__v16qi)__A, (__v16qi)__B);
+}
+
+/*pcom (integer, unsinged words) */
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_comlt_epu16(__m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_vpcomltuw ((__v8hi)__A, (__v8hi)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_comle_epu16(__m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_vpcomleuw ((__v8hi)__A, (__v8hi)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_comgt_epu16(__m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_vpcomgtuw ((__v8hi)__A, (__v8hi)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_comge_epu16(__m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_vpcomgeuw ((__v8hi)__A, (__v8hi)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_comeq_epu16(__m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_vpcomequw ((__v8hi)__A, (__v8hi)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_comneq_epu16(__m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_vpcomnequw ((__v8hi)__A, (__v8hi)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_comfalse_epu16(__m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_vpcomfalseuw ((__v8hi)__A, (__v8hi)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_comtrue_epu16(__m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_vpcomtrueuw ((__v8hi)__A, (__v8hi)__B);
+}
+
+/*pcom (integer, unsinged double words) */
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_comlt_epu32(__m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_vpcomltud ((__v4si)__A, (__v4si)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_comle_epu32(__m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_vpcomleud ((__v4si)__A, (__v4si)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_comgt_epu32(__m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_vpcomgtud ((__v4si)__A, (__v4si)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_comge_epu32(__m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_vpcomgeud ((__v4si)__A, (__v4si)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_comeq_epu32(__m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_vpcomequd ((__v4si)__A, (__v4si)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_comneq_epu32(__m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_vpcomnequd ((__v4si)__A, (__v4si)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_comfalse_epu32(__m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_vpcomfalseud ((__v4si)__A, (__v4si)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_comtrue_epu32(__m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_vpcomtrueud ((__v4si)__A, (__v4si)__B);
+}
+
+/*pcom (integer, unsinged quad words) */
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_comlt_epu64(__m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_vpcomltuq ((__v2di)__A, (__v2di)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_comle_epu64(__m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_vpcomleuq ((__v2di)__A, (__v2di)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_comgt_epu64(__m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_vpcomgtuq ((__v2di)__A, (__v2di)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_comge_epu64(__m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_vpcomgeuq ((__v2di)__A, (__v2di)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_comeq_epu64(__m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_vpcomequq ((__v2di)__A, (__v2di)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_comneq_epu64(__m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_vpcomnequq ((__v2di)__A, (__v2di)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_comfalse_epu64(__m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_vpcomfalseuq ((__v2di)__A, (__v2di)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_comtrue_epu64(__m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_vpcomtrueuq ((__v2di)__A, (__v2di)__B);
+}
+
+/*pcom (integer, signed bytes) */
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_comlt_epi8(__m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_vpcomltb ((__v16qi)__A, (__v16qi)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_comle_epi8(__m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_vpcomleb ((__v16qi)__A, (__v16qi)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_comgt_epi8(__m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_vpcomgtb ((__v16qi)__A, (__v16qi)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_comge_epi8(__m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_vpcomgeb ((__v16qi)__A, (__v16qi)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_comeq_epi8(__m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_vpcomeqb ((__v16qi)__A, (__v16qi)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_comneq_epi8(__m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_vpcomneqb ((__v16qi)__A, (__v16qi)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_comfalse_epi8(__m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_vpcomfalseb ((__v16qi)__A, (__v16qi)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_comtrue_epi8(__m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_vpcomtrueb ((__v16qi)__A, (__v16qi)__B);
+}
+
+/*pcom (integer, signed words) */
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_comlt_epi16(__m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_vpcomltw ((__v8hi)__A, (__v8hi)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_comle_epi16(__m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_vpcomlew ((__v8hi)__A, (__v8hi)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_comgt_epi16(__m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_vpcomgtw ((__v8hi)__A, (__v8hi)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_comge_epi16(__m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_vpcomgew ((__v8hi)__A, (__v8hi)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_comeq_epi16(__m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_vpcomeqw ((__v8hi)__A, (__v8hi)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_comneq_epi16(__m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_vpcomneqw ((__v8hi)__A, (__v8hi)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_comfalse_epi16(__m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_vpcomfalsew ((__v8hi)__A, (__v8hi)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_comtrue_epi16(__m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_vpcomtruew ((__v8hi)__A, (__v8hi)__B);
+}
+
+/*pcom (integer, signed double words) */
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_comlt_epi32(__m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_vpcomltd ((__v4si)__A, (__v4si)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_comle_epi32(__m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_vpcomled ((__v4si)__A, (__v4si)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_comgt_epi32(__m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_vpcomgtd ((__v4si)__A, (__v4si)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_comge_epi32(__m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_vpcomged ((__v4si)__A, (__v4si)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_comeq_epi32(__m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_vpcomeqd ((__v4si)__A, (__v4si)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_comneq_epi32(__m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_vpcomneqd ((__v4si)__A, (__v4si)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_comfalse_epi32(__m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_vpcomfalsed ((__v4si)__A, (__v4si)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_comtrue_epi32(__m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_vpcomtrued ((__v4si)__A, (__v4si)__B);
+}
+
+/*pcom (integer, signed quad words) */
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_comlt_epi64(__m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_vpcomltq ((__v2di)__A, (__v2di)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_comle_epi64(__m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_vpcomleq ((__v2di)__A, (__v2di)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_comgt_epi64(__m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_vpcomgtq ((__v2di)__A, (__v2di)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_comge_epi64(__m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_vpcomgeq ((__v2di)__A, (__v2di)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_comeq_epi64(__m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_vpcomeqq ((__v2di)__A, (__v2di)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_comneq_epi64(__m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_vpcomneqq ((__v2di)__A, (__v2di)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_comfalse_epi64(__m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_vpcomfalseq ((__v2di)__A, (__v2di)__B);
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_comtrue_epi64(__m128i __A, __m128i __B)
+{
+  return (__m128i) __builtin_ia32_vpcomtrueq ((__v2di)__A, (__v2di)__B);
+}
+
+/* FRCZ */
+
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_frcz_ps (__m128 __A)
+{
+  return (__m128) __builtin_ia32_vfrczps ((__v4sf)__A);
+}
+
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_frcz_pd (__m128d __A)
+{
+  return (__m128d) __builtin_ia32_vfrczpd ((__v2df)__A);
+}
+
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_frcz_ss (__m128 __A, __m128 __B)
+{
+  return (__m128) __builtin_ia32_movss ((__v4sf)__A,
+					(__v4sf)
+					__builtin_ia32_vfrczss ((__v4sf)__B));
+}
+
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_frcz_sd (__m128d __A, __m128d __B)
+{
+  return (__m128d) __builtin_ia32_movsd ((__v2df)__A,
+					 (__v2df)
+					 __builtin_ia32_vfrczsd ((__v2df)__B));
+}
+
+extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_frcz_ps (__m256 __A)
+{
+  return (__m256) __builtin_ia32_vfrczps256 ((__v8sf)__A);
+}
+
+extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_frcz_pd (__m256d __A)
+{
+  return (__m256d) __builtin_ia32_vfrczpd256 ((__v4df)__A);
+}
+
+/* PERMIL2 */
+
+#ifdef __OPTIMIZE__
+extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_permute2_pd (__m128d __X, __m128d __Y, __m128i __C, const int __I)
+{
+  return (__m128d) __builtin_ia32_vpermil2pd ((__v2df)__X,
+					      (__v2df)__Y,
+					      (__v2di)__C,
+					      __I);
+}
+
+extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_permute2_pd (__m256d __X, __m256d __Y, __m256i __C, const int __I)
+{
+  return (__m256d) __builtin_ia32_vpermil2pd256 ((__v4df)__X,
+						 (__v4df)__Y,
+						 (__v4di)__C,
+						 __I);
+}
+
+extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_permute2_ps (__m128 __X, __m128 __Y, __m128i __C, const int __I)
+{
+  return (__m128) __builtin_ia32_vpermil2ps ((__v4sf)__X,
+					     (__v4sf)__Y,
+					     (__v4si)__C,
+					     __I);
+}
+
+extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_permute2_ps (__m256 __X, __m256 __Y, __m256i __C, const int __I)
+{
+  return (__m256) __builtin_ia32_vpermil2ps256 ((__v8sf)__X,
+						(__v8sf)__Y,
+						(__v8si)__C,
+						__I);
+}
+#else
+#define _mm_permute2_pd(X, Y, C, I)					\
+  ((__m128d) __builtin_ia32_vpermil2pd ((__v2df)(__m128d)(X),		\
+					(__v2df)(__m128d)(Y),		\
+					(__v2di)(__m128d)(C),		\
+					(int)(I)))
+
+#define _mm256_permute2_pd(X, Y, C, I)					\
+  ((__m256d) __builtin_ia32_vpermil2pd256 ((__v4df)(__m256d)(X),	\
+					   (__v4df)(__m256d)(Y),	\
+					   (__v4di)(__m256d)(C),	\
+					   (int)(I)))
+
+#define _mm_permute2_ps(X, Y, C, I)					\
+  ((__m128) __builtin_ia32_vpermil2ps ((__v4sf)(__m128)(X),		\
+				       (__v4sf)(__m128)(Y),		\
+				       (__v4si)(__m128)(C),		\
+				       (int)(I)))
+
+#define _mm256_permute2_ps(X, Y, C, I)					\
+  ((__m256) __builtin_ia32_vpermil2ps256 ((__v8sf)(__m256)(X),		\
+					  (__v8sf)(__m256)(Y),  	\
+					  (__v8si)(__m256)(C),		\
+ 					  (int)(I)))
+#endif /* __OPTIMIZE__ */
+
+#ifdef __DISABLE_XOP__
+#undef __DISABLE_XOP__
+#pragma GCC pop_options
+#endif /* __DISABLE_XOP__ */
+
+#endif /* _XOPMMINTRIN_H_INCLUDED */
Index: Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/xsavecintrin.h
===================================================================
--- Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/xsavecintrin.h	(revision 1046)
+++ Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/xsavecintrin.h	(revision 1046)
@@ -0,0 +1,58 @@
+/* Copyright (C) 2014-2015 Free Software Foundation, Inc.
+
+   This file is part of GCC.
+
+   GCC is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
+
+   GCC is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   Under Section 7 of GPL version 3, you are granted additional
+   permissions described in the GCC Runtime Library Exception, version
+   3.1, as published by the Free Software Foundation.
+
+   You should have received a copy of the GNU General Public License and
+   a copy of the GCC Runtime Library Exception along with this program;
+   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#if !defined _X86INTRIN_H_INCLUDED
+# error "Never use <xsavecintrin.h> directly; include <x86intrin.h> instead."
+#endif
+
+#ifndef _XSAVECINTRIN_H_INCLUDED
+#define _XSAVECINTRIN_H_INCLUDED
+
+#ifndef __XSAVEC__
+#pragma GCC push_options
+#pragma GCC target("xsavec")
+#define __DISABLE_XSAVEC__
+#endif /* __XSAVEC__ */
+
+extern __inline void
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_xsavec (void *__P, long long __M)
+{
+  __builtin_ia32_xsavec (__P, __M);
+}
+
+#ifdef __x86_64__
+extern __inline void
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_xsavec64 (void *__P, long long __M)
+{
+  __builtin_ia32_xsavec64 (__P, __M);
+}
+#endif
+
+#ifdef __DISABLE_XSAVEC__
+#undef __DISABLE_XSAVEC__
+#pragma GCC pop_options
+#endif /* __DISABLE_XSAVEC__ */
+
+#endif /* _XSAVECINTRIN_H_INCLUDED */
Index: Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/xsaveintrin.h
===================================================================
--- Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/xsaveintrin.h	(revision 1046)
+++ Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/xsaveintrin.h	(revision 1046)
@@ -0,0 +1,72 @@
+/* Copyright (C) 2012-2015 Free Software Foundation, Inc.
+
+   This file is part of GCC.
+
+   GCC is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
+
+   GCC is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   Under Section 7 of GPL version 3, you are granted additional
+   permissions described in the GCC Runtime Library Exception, version
+   3.1, as published by the Free Software Foundation.
+
+   You should have received a copy of the GNU General Public License and
+   a copy of the GCC Runtime Library Exception along with this program;
+   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+/* #if !defined _X86INTRIN_H_INCLUDED && !defined _IMMINTRIN_H_INCLUDED */
+/* # error "Never use <xsaveintrin.h> directly; include <x86intrin.h> instead." */
+/* #endif */
+
+#ifndef _XSAVEINTRIN_H_INCLUDED
+#define _XSAVEINTRIN_H_INCLUDED
+
+#ifndef __XSAVE__
+#pragma GCC push_options
+#pragma GCC target("xsave")
+#define __DISABLE_XSAVE__
+#endif /* __XSAVE__ */
+
+extern __inline void
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_xsave (void *__P, long long __M)
+{
+  return __builtin_ia32_xsave (__P, __M);
+}
+
+extern __inline void
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_xrstor (void *__P, long long __M)
+{
+  return __builtin_ia32_xrstor (__P, __M);
+}
+
+#ifdef __x86_64__
+extern __inline void
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_xsave64 (void *__P, long long __M)
+{
+  return __builtin_ia32_xsave64 (__P, __M);
+}
+
+extern __inline void
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_xrstor64 (void *__P, long long __M)
+{
+  return __builtin_ia32_xrstor64 (__P, __M);
+}
+#endif
+
+#ifdef __DISABLE_XSAVE__
+#undef __DISABLE_XSAVE__
+#pragma GCC pop_options
+#endif /* __DISABLE_XSAVE__ */
+
+#endif /* _XSAVEINTRIN_H_INCLUDED */
Index: Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/xsaveoptintrin.h
===================================================================
--- Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/xsaveoptintrin.h	(revision 1046)
+++ Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/xsaveoptintrin.h	(revision 1046)
@@ -0,0 +1,58 @@
+/* Copyright (C) 2012-2015 Free Software Foundation, Inc.
+
+   This file is part of GCC.
+
+   GCC is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
+
+   GCC is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   Under Section 7 of GPL version 3, you are granted additional
+   permissions described in the GCC Runtime Library Exception, version
+   3.1, as published by the Free Software Foundation.
+
+   You should have received a copy of the GNU General Public License and
+   a copy of the GCC Runtime Library Exception along with this program;
+   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+/* #if !defined _X86INTRIN_H_INCLUDED && !defined _IMMINTRIN_H_INCLUDED */
+/* # error "Never use <xsaveoptintrin.h> directly; include <x86intrin.h> instead." */
+/* #endif */
+
+#ifndef _XSAVEOPTINTRIN_H_INCLUDED
+#define _XSAVEOPTINTRIN_H_INCLUDED
+
+#ifndef __XSAVEOPT__
+#pragma GCC push_options
+#pragma GCC target("xsaveopt")
+#define __DISABLE_XSAVEOPT__
+#endif /* __XSAVEOPT__ */
+
+extern __inline void
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_xsaveopt (void *__P, long long __M)
+{
+  return __builtin_ia32_xsaveopt (__P, __M);
+}
+
+#ifdef __x86_64__
+extern __inline void
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_xsaveopt64 (void *__P, long long __M)
+{
+  return __builtin_ia32_xsaveopt64 (__P, __M);
+}
+#endif
+
+#ifdef __DISABLE_XSAVEOPT__
+#undef __DISABLE_XSAVEOPT__
+#pragma GCC pop_options
+#endif /* __DISABLE_XSAVEOPT__ */
+
+#endif /* _XSAVEOPTINTRIN_H_INCLUDED */
Index: Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/xsavesintrin.h
===================================================================
--- Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/xsavesintrin.h	(revision 1046)
+++ Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/xsavesintrin.h	(revision 1046)
@@ -0,0 +1,72 @@
+/* Copyright (C) 2014-2015 Free Software Foundation, Inc.
+
+   This file is part of GCC.
+
+   GCC is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
+
+   GCC is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   Under Section 7 of GPL version 3, you are granted additional
+   permissions described in the GCC Runtime Library Exception, version
+   3.1, as published by the Free Software Foundation.
+
+   You should have received a copy of the GNU General Public License and
+   a copy of the GCC Runtime Library Exception along with this program;
+   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#if !defined _X86INTRIN_H_INCLUDED
+# error "Never use <xsavesintrin.h> directly; include <x86intrin.h> instead."
+#endif
+
+#ifndef _XSAVESINTRIN_H_INCLUDED
+#define _XSAVESINTRIN_H_INCLUDED
+
+#ifndef __XSAVES__
+#pragma GCC push_options
+#pragma GCC target("xsaves")
+#define __DISABLE_XSAVES__
+#endif /* __XSAVES__ */
+
+extern __inline void
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_xsaves (void *__P, long long __M)
+{
+  __builtin_ia32_xsaves (__P, __M);
+}
+
+extern __inline void
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_xrstors (void *__P, long long __M)
+{
+  __builtin_ia32_xrstors (__P, __M);
+}
+
+#ifdef __x86_64__
+extern __inline void
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_xrstors64 (void *__P, long long __M)
+{
+  __builtin_ia32_xrstors64 (__P, __M);
+}
+
+extern __inline void
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_xsaves64 (void *__P, long long __M)
+{
+  __builtin_ia32_xsaves64 (__P, __M);
+}
+#endif
+
+#ifdef __DISABLE_XSAVES__
+#undef __DISABLE_XSAVES__
+#pragma GCC pop_options
+#endif /* __DISABLE_XSAVES__ */
+
+#endif /* _XSAVESINTRIN_H_INCLUDED */
Index: Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/xtestintrin.h
===================================================================
--- Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/xtestintrin.h	(revision 1046)
+++ Daodan/MinGW/lib/gcc/mingw32/5.3.0/include/xtestintrin.h	(revision 1046)
@@ -0,0 +1,51 @@
+/* Copyright (C) 2012-2015 Free Software Foundation, Inc.
+
+   This file is part of GCC.
+
+   GCC is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
+
+   GCC is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   Under Section 7 of GPL version 3, you are granted additional
+   permissions described in the GCC Runtime Library Exception, version
+   3.1, as published by the Free Software Foundation.
+
+   You should have received a copy of the GNU General Public License and
+   a copy of the GCC Runtime Library Exception along with this program;
+   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _IMMINTRIN_H_INCLUDED
+# error "Never use <xtestintrin.h> directly; include <immintrin.h> instead."
+#endif
+
+#ifndef _XTESTINTRIN_H_INCLUDED
+#define _XTESTINTRIN_H_INCLUDED
+
+#ifndef __RTM__
+#pragma GCC push_options
+#pragma GCC target("rtm")
+#define __DISABLE_RTM__
+#endif /* __RTM__ */
+
+/* Return non-zero if the instruction executes inside an RTM or HLE code
+   region.  Return zero otherwise.   */
+extern __inline int
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_xtest (void)
+{
+  return __builtin_ia32_xtest ();
+}
+
+#ifdef __DISABLE_RTM__
+#undef __DISABLE_RTM__
+#pragma GCC pop_options
+#endif /* __DISABLE_RTM__ */
+
+#endif /* _XTESTINTRIN_H_INCLUDED */
Index: Daodan/MinGW/libexec/gcc/mingw32/5.3.0/install-tools/fixinc.sh
===================================================================
--- Daodan/MinGW/libexec/gcc/mingw32/5.3.0/install-tools/fixinc.sh	(revision 1046)
+++ Daodan/MinGW/libexec/gcc/mingw32/5.3.0/install-tools/fixinc.sh	(revision 1046)
@@ -0,0 +1,2 @@
+#! /bin/sh
+exit 0
Index: Daodan/MinGW/libexec/gcc/mingw32/5.3.0/install-tools/mkheaders
===================================================================
--- Daodan/MinGW/libexec/gcc/mingw32/5.3.0/install-tools/mkheaders	(revision 1046)
+++ Daodan/MinGW/libexec/gcc/mingw32/5.3.0/install-tools/mkheaders	(revision 1046)
@@ -0,0 +1,104 @@
+#!/bin/sh
+
+# Copyright (C) 2002, 2007, 2009 Free Software Foundation, Inc.
+
+#This file is part of GCC.
+
+#GCC is free software; you can redistribute it and/or modify it under
+#the terms of the GNU General Public License as published by the Free
+#Software Foundation; either version 3, or (at your option) any later
+#version.
+
+#GCC is distributed in the hope that it will be useful, but WITHOUT
+#ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+#FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+#for more details.
+
+#You should have received a copy of the GNU General Public License
+#along with GCC; see the file COPYING3.  If not see
+#<http://www.gnu.org/licenses/>.
+
+# Basic information
+target=i686-pc-mingw32
+target_noncanonical=mingw32
+version=5.3.0
+
+VERBOSE=0
+while [ x$1 = x-v ] ; do
+    shift
+    VERBOSE=`expr $VERBOSE + 1`
+done
+export VERBOSE
+
+if [ x$1 = x--help ] ; then
+    echo "Usage: mkheaders [options] [prefix [isysroot]]"
+    echo "Options:"
+    echo "  -v        Print more output (may be repeated for even more output)"
+    echo "  --help    This help"
+    echo "  --version Print version information"
+    exit 0
+fi
+
+if [ x$1 = x--version ] ; then
+    echo "mkheaders (GCC) version $version"
+    echo "Copyright 2002, 2007, 2009 Free Software Foundation, Inc."
+    echo "This program is free software; you may redistribute it under the"
+    echo "terms of the GNU General Public License.  This program has"
+    echo "absolutely no warranty."
+    exit 0
+fi
+
+# Common prefix for installation directories.
+if [ x$1 != x ] ; then
+  prefix=$1
+  shift
+else
+  prefix=/mingw
+fi
+
+# Allow for alternate isysroot in which to find headers
+if [ x$1 != x ] ; then
+  isysroot=$1
+  shift
+else
+  isysroot=
+fi
+
+# Directory in which to put host dependent programs and libraries
+exec_prefix=${prefix}
+# Directory in which to put the directories used by the compiler.
+libdir=${exec_prefix}/lib
+libexecdir=${exec_prefix}/libexec
+# Directory in which the compiler finds libraries, etc.
+libsubdir=${libdir}/gcc/${target_noncanonical}/${version}
+# Directory in which the compiler finds executables
+libexecsubdir=${libexecdir}/gcc/${target_noncanonical}/${version}
+
+itoolsdir=${libexecsubdir}/install-tools
+itoolsdatadir=${libsubdir}/install-tools
+incdir=${libsubdir}/include-fixed
+mkinstalldirs="/bin/bash ${itoolsdir}/mkinstalldirs"
+
+cd ${itoolsdir}
+rm -rf ${incdir}/*
+
+for ml in `cat ${itoolsdatadir}/fixinc_list`; do
+  sysroot_headers_suffix=`echo ${ml} | sed -e 's/;.*$//'`
+  multi_dir=`echo ${ml} | sed -e 's/^[^;]*;//'`
+  subincdir=${incdir}${multi_dir}
+  . ${itoolsdatadir}/mkheaders.conf
+  if [ x${STMP_FIXINC} != x ] ; then
+	TARGET_MACHINE="${target}" target_canonical="${target}" \
+	    MACRO_LIST="${itoolsdatadir}/macro_list" \
+	    /bin/bash ./fixinc.sh ${subincdir} \
+	    ${isysroot}${SYSTEM_HEADER_DIR} ${OTHER_FIXINCLUDES_DIRS}
+	rm -f ${subincdir}/syslimits.h
+	if [ -f ${subincdir}/limits.h ]; then
+	  mv ${subincdir}/limits.h ${subincdir}/syslimits.h
+	else
+	  cp ${itoolsdatadir}/gsyslimits.h ${subincdir}/syslimits.h
+	fi
+  fi
+
+  cp ${itoolsdatadir}/include${multi_dir}/limits.h ${subincdir}
+done
Index: Daodan/MinGW/libexec/gcc/mingw32/5.3.0/install-tools/mkinstalldirs
===================================================================
--- Daodan/MinGW/libexec/gcc/mingw32/5.3.0/install-tools/mkinstalldirs	(revision 1046)
+++ Daodan/MinGW/libexec/gcc/mingw32/5.3.0/install-tools/mkinstalldirs	(revision 1046)
@@ -0,0 +1,162 @@
+#! /bin/sh
+# mkinstalldirs --- make directory hierarchy
+
+scriptversion=2009-04-28.21; # UTC
+
+# Original author: Noah Friedman <friedman@prep.ai.mit.edu>
+# Created: 1993-05-16
+# Public domain.
+#
+# This file is maintained in Automake, please report
+# bugs to <bug-automake@gnu.org> or send patches to
+# <automake-patches@gnu.org>.
+
+nl='
+'
+IFS=" ""	$nl"
+errstatus=0
+dirmode=
+
+usage="\
+Usage: mkinstalldirs [-h] [--help] [--version] [-m MODE] DIR ...
+
+Create each directory DIR (with mode MODE, if specified), including all
+leading file name components.
+
+Report bugs to <bug-automake@gnu.org>."
+
+# process command line arguments
+while test $# -gt 0 ; do
+  case $1 in
+    -h | --help | --h*)         # -h for help
+      echo "$usage"
+      exit $?
+      ;;
+    -m)                         # -m PERM arg
+      shift
+      test $# -eq 0 && { echo "$usage" 1>&2; exit 1; }
+      dirmode=$1
+      shift
+      ;;
+    --version)
+      echo "$0 $scriptversion"
+      exit $?
+      ;;
+    --)                         # stop option processing
+      shift
+      break
+      ;;
+    -*)                         # unknown option
+      echo "$usage" 1>&2
+      exit 1
+      ;;
+    *)                          # first non-opt arg
+      break
+      ;;
+  esac
+done
+
+for file
+do
+  if test -d "$file"; then
+    shift
+  else
+    break
+  fi
+done
+
+case $# in
+  0) exit 0 ;;
+esac
+
+# Solaris 8's mkdir -p isn't thread-safe.  If you mkdir -p a/b and
+# mkdir -p a/c at the same time, both will detect that a is missing,
+# one will create a, then the other will try to create a and die with
+# a "File exists" error.  This is a problem when calling mkinstalldirs
+# from a parallel make.  We use --version in the probe to restrict
+# ourselves to GNU mkdir, which is thread-safe.
+case $dirmode in
+  '')
+    if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
+      echo "mkdir -p -- $*"
+      exec mkdir -p -- "$@"
+    else
+      # On NextStep and OpenStep, the 'mkdir' command does not
+      # recognize any option.  It will interpret all options as
+      # directories to create, and then abort because '.' already
+      # exists.
+      test -d ./-p && rmdir ./-p
+      test -d ./--version && rmdir ./--version
+    fi
+    ;;
+  *)
+    if mkdir -m "$dirmode" -p --version . >/dev/null 2>&1 &&
+       test ! -d ./--version; then
+      echo "mkdir -m $dirmode -p -- $*"
+      exec mkdir -m "$dirmode" -p -- "$@"
+    else
+      # Clean up after NextStep and OpenStep mkdir.
+      for d in ./-m ./-p ./--version "./$dirmode";
+      do
+        test -d $d && rmdir $d
+      done
+    fi
+    ;;
+esac
+
+for file
+do
+  case $file in
+    /*) pathcomp=/ ;;
+    *)  pathcomp= ;;
+  esac
+  oIFS=$IFS
+  IFS=/
+  set fnord $file
+  shift
+  IFS=$oIFS
+
+  for d
+  do
+    test "x$d" = x && continue
+
+    pathcomp=$pathcomp$d
+    case $pathcomp in
+      -*) pathcomp=./$pathcomp ;;
+    esac
+
+    if test ! -d "$pathcomp"; then
+      echo "mkdir $pathcomp"
+
+      mkdir "$pathcomp" || lasterr=$?
+
+      if test ! -d "$pathcomp"; then
+	errstatus=$lasterr
+      else
+	if test ! -z "$dirmode"; then
+	  echo "chmod $dirmode $pathcomp"
+	  lasterr=
+	  chmod "$dirmode" "$pathcomp" || lasterr=$?
+
+	  if test ! -z "$lasterr"; then
+	    errstatus=$lasterr
+	  fi
+	fi
+      fi
+    fi
+
+    pathcomp=$pathcomp/
+  done
+done
+
+exit $errstatus
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
Index: Daodan/MinGW/libexec/mingw-get/setup.lua
===================================================================
--- Daodan/MinGW/libexec/mingw-get/setup.lua	(revision 1046)
+++ Daodan/MinGW/libexec/mingw-get/setup.lua	(revision 1046)
@@ -0,0 +1,80 @@
+--
+-- setup.lua
+--
+-- $Id: setup.lua,v 49e57abe7f83 2013/09/21 08:35:52 keithmarshall $
+--
+-- Lua 5.2 module providing common setup hooks for mingw-get.
+--
+--
+-- This file is a component of mingw-get.
+--
+-- Written by Keith Marshall <keithmarshall@users.sourceforge.net>
+-- Copyright (C) 2012, 2013, MinGW.org Project
+--
+--
+-- Permission is hereby granted, free of charge, to any person obtaining a
+-- copy of this software and associated documentation files (the "Software"),
+-- to deal in the Software without restriction, including without limitation
+-- the rights to use, copy, modify, merge, publish, distribute, sublicense,
+-- and/or sell copies of the Software, and to permit persons to whom the
+-- Software is furnished to do so, subject to the following conditions:
+--
+-- The above copyright notice and this permission notice shall be included
+-- in all copies or substantial portions of the Software.
+--
+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+-- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+-- THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+-- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+-- FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+-- DEALINGS IN THE SOFTWARE.
+--
+   local M = {}
+   local wsh = require "wsh"
+--
+   function M.libexec_path( script, subsystem )
+     if not subsystem
+     then
+       subsystem = "mingw-get"
+     end
+     return wsh.libexec_path( script, subsystem )
+   end
+--
+   function M.argwrap( arglist, ... )
+     for argind, argval in ipairs {...}
+     do
+       arglist = arglist .. " " .. argval
+     end
+     return arglist
+   end
+--
+   function M.shlink( args, ... )
+     if args
+     then
+       wsh.execute( M.argwrap( M.libexec_path( "shlink.js" ), args, ... ) )
+     end
+   end
+--
+   function M.unlink( args, ... )
+     if args
+     then
+       wsh.execute( M.argwrap( M.libexec_path( "unlink.js" ), args, ... ) )
+     end
+   end
+--
+   function M.create_shortcuts( ... )
+     M.shlink( os.getenv( "MINGW_GET_DESKTOP_HOOK" ), ... )
+     M.shlink( os.getenv( "MINGW_GET_START_MENU_HOOK" ), ... )
+   end
+--
+   function M.delete_shortcuts( ... )
+     M.unlink( "--desktop", ... )
+     M.unlink( "--all-users --desktop", ... )
+     M.unlink( "--all-users --start-menu", ... )
+     M.unlink( "--start-menu", ... )
+   end
+--
+   return M
+--
+-- $RCSfile: setup.lua,v $: end of file */
Index: Daodan/MinGW/libexec/mingw-get/shlink.js
===================================================================
--- Daodan/MinGW/libexec/mingw-get/shlink.js	(revision 1046)
+++ Daodan/MinGW/libexec/mingw-get/shlink.js	(revision 1046)
@@ -0,0 +1,385 @@
+/*
+ * shlink.js
+ *
+ * $Id: shlink.js,v 0f864a5cad9e 2012/04/06 22:49:36 keithmarshall $
+ *
+ * Invoke the Windows Scripting Host to create or modify a windows shortcut,
+ * with specified parameters.
+ *
+ * Usage:
+ *   cscript -nologo shlink.js [--option[=value] ...] target name
+ *
+ * Options:
+ *   --verbose	report shortcut parameter assignments on stdout
+ *
+ *   --all-users
+ *   		create the shortcut in the start menu, or on the
+ *   		desktop available to all users; (has no effect,
+ *   		unless --start-menu or --desktop is specified)
+ *
+ *   --desktop	create the shortcut on the desktop of the current
+ *   		user, (or for all users, with --all-users)
+ *
+ *   --start-menu
+ *   		create the shortcut in the user's start menu, (or
+ *   		all users' start menu, with --all-users)
+ *
+ *   --arguments="argument list ..."
+ *		specify arguments to be passed to the command
+ *		invoked by the shortcut
+ *
+ *   --description="text ..."
+ *		specify the "tool tip" for the shortcut
+ *
+ *   --hotkey="[SHIFT+][CTRL+][ALT+]key"
+ *   		specify a hot-key combination which may be used
+ *   		to invoke the shortcut command
+ *
+ *   --icon="d:\path\to\icon\file[,index]"
+ *   		specify an icon to associate with the shortcut;
+ *   		if unspecified, the first icon in the target file,
+ *   		or failing that, a system default is used
+ *
+ *   --show=normal|maximised|minimised
+ *   		specify the style of window in which the program
+ *   		invoked by the shortcut will start running
+ *
+ *   --workingdir="d:\path\to\working\directory"
+ *   		specify the absolute path name for the directory
+ *   		which will become the current working directory when
+ *   		the program invoked by the shortcut is started
+ *
+ * Parameters:
+ *   target	the path name to the program to invoke, or the file
+ *		to be opened, when the shortcut is activated.
+ *
+ *   name	the path name for the shortcut file itself; if this
+ *		does not end with either a ".lnk" or ".url" extension,
+ *		then ".lnk" will be appended, so creating a regular
+ *		file system link type shortcut.
+ *
+ *
+ * This file is a component of mingw-get.
+ *
+ * Written by Keith Marshall <keithmarshall@users.sourceforge.net>
+ * Copyright (C) 2012, MinGW Project
+ *
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ *
+ */
+var cmdName = WScript.ScriptName;
+var WinShell = WScript.CreateObject("WScript.Shell");
+
+/* Properties for the shortcut may be specified as arguments
+ * to command line options, each of which is represented in the
+ * GNU long option form, by keywords with property associations
+ * as specified by:
+ */
+var options = Array(
+      "name",		/*  File name/path of .lnk file	*/
+      "all-users",
+      "start-menu",
+      "desktop",
+      "verbose",
+  /* 
+   *  Option		    Property
+   *  -------------	    -------------------------
+   */ 
+      "arguments",	/*  Shortcut.Arguments		*/
+      "description",	/*  Shortcut.Description	*/
+      "hotkey",		/*  Shortcut.HotKey		*/
+      "icon",		/*  Shortcut.IconLocation	*/
+      "show",		/*  Shortcut.WindowStyle	*/
+      "target",		/*  Shortcut.TargetPath		*/
+      "workingdir"	/*  Shortcut.WorkingDirectory	*/
+    );
+
+/* The "complain" function provides a mechanism for writing
+ * diagnostic messages to stderr, and optionally aborting the
+ * calling script.
+ */
+function complain( condition, message )
+{
+  WScript.StdErr.WriteLine( cmdName + ": " + message );
+  if( condition < 0 )
+    WScript.Quit( -condition );
+  return condition;
+}
+
+/* Strip ".js" suffix from command name.
+ */
+var i = cmdName.lastIndexOf( ".js" );
+if( (i > 0) &&  (cmdName.substr( i ) == ".js") )
+  cmdName = cmdName.substr( 0, i );
+
+/* Initialise all options to "unassigned" state.
+ */
+var target = -1;
+var lnkname = -1;
+var desktop = -1;
+var allusers = -1;
+var startmenu = -1;
+var verbosity = -1;
+var unassigned = "+++unassigned+++";
+var assigned = Array( options.length );
+for( var k = 0; k < assigned.length; k++ )
+{
+  switch( options[k] )
+  {
+    case "name":
+      lnkname = k;
+      break;
+
+    case "desktop":
+      desktop = k;
+      break;
+
+    case "start-menu":
+      startmenu = k;
+      break;
+
+    case "all-users":
+      allusers = k;
+      break;
+
+    case "target":
+      target = k;
+      break;
+
+    case "verbose":
+      verbosity = k;
+  }
+  assigned[k] = unassigned;
+}
+
+/* Define the prefix, which will qualify the location
+ * of the shortcut; initialise it to nothing, so that by
+ * default shortcuts will be located by absolute path name,
+ * as specified, or relative to current working directory.
+ */
+var prefix = "";
+
+var j;
+function assign_option( name, value )
+{
+  switch( name )
+  {
+    case "desktop":
+    case "start-menu":
+    case "all-users":
+    case "verbose":
+      j = i;
+      return "set";
+  }
+  return value;
+}
+
+/* Parse the command line.
+ */
+var argv = WScript.Arguments;
+for( i = 0; i < argv.length; i++ )
+{
+  if( argv( i ).indexOf( "--" ) == 0 )
+  {
+    /* Handle arguments specifying options...
+     */
+    if( (optind = argv( j = i ).indexOf( "=" ) + 1) > 3 )
+    {
+      optnam = argv( j ).substr( 2, optind - 3 );
+      optarg = argv( j ).substr( optind );
+    }
+    else
+    {
+      optnam = argv( j ).substr( 2 );
+      if( ++j < argv.length )
+	optarg = argv( j );
+      else
+	optarg = unassigned;
+    }
+
+    var matched = 0;
+    for( var k = 0; k < options.length; k++ )
+    {
+      if( optnam == options[k] )
+      {
+	matched = 1;
+	assigned[k] = assign_option( options[k], optarg );
+	k = options.length;
+      }
+      else if( options[k].indexOf(optnam) == 0 )
+      {
+	if( ++matched > 1 )
+	  complain( -2, cmdName + "option '" + argv( i ) + "' is ambiguous" );
+	assigned[k] = assign_option( options[k], optarg );
+      }
+    }
+    if( matched == 1 )
+    {
+      i = j;
+    }
+    else
+      complain( -2, "option '" + argv( i ) + "' is not supported" );
+  }
+
+  /* Handle non-option arguments...
+   */
+  else if( (target >= 0) && (assigned[target] == unassigned) )
+    /*
+     * ...the first of which is the target to which the
+     * (shortcut) link is to refer...
+     */
+    assigned[target] = argv( i );
+
+  else if( (lnkname >= 0) && (assigned[lnkname] == unassigned) )
+    /*
+     * ...the second is the file system path name at which
+     * the link file itself is to be saved...
+     */
+    assigned[lnkname] = argv( i );
+
+  else
+    /* ...and any more than two is an error.
+     */
+    complain( -2, "too many arguments" );
+}
+
+/* Verify that mandatory arguments have been specified...
+ */
+if( assigned[target] == unassigned )
+  /*
+   * First of these, the TargetPath specification, is required;
+   * diagnose and abort, if missing.
+   */
+  complain( -2, "missing argument: no target path specified" );
+
+if( assigned[lnkname] == unassigned )
+  /*
+   * Second, the path name for the link file itself is essential;
+   * again, diagnose and abort if missing.
+   */
+  complain( -2, "missing argument: no shortcut name specified" );
+
+/* We have both the mandatory arguments; check that the link name
+ * is properly terminated by a ".lnk" or ".url" suffix...
+ */
+var suffix = "";
+if( (i = assigned[lnkname].length - 4) > 0 )
+  suffix = assigned[lnkname].substr( i );
+
+/* ...and append ".lnk" as default, if not already present.
+ */
+if( (suffix != ".lnk") && (suffix != ".url") )
+  assigned[lnkname] += ".lnk";
+
+/* Add the appropriate prefix for '--desktop' or '--start-menu' shortcuts.
+ */
+if( assigned[desktop] != unassigned )
+{
+  if( assigned[startmenu] != unassigned )
+    complain( -2, "options '--desktop' and '--start-menu' are incompatible" );
+  else prefix = WinShell.SpecialFolders( (assigned[allusers] == unassigned)
+      ? "Desktop" : "AllUsersDesktop" ) + "\\";
+}
+else if( assigned[startmenu] != unassigned )
+  prefix = WinShell.SpecialFolders( (assigned[allusers] == unassigned)
+      ? "StartMenu" : "AllUsersStartMenu" ) + "\\";
+
+else if( assigned[allusers] != unassigned )
+  complain( -2,
+      "option '--all-users' also requires '--desktop' or '--start-menu'"
+    );
+
+/* Handle verbosity...
+ */
+function verbose_assignment( property, value )
+{
+  if( assigned[verbosity] == "set" )
+    WScript.Echo( cmdName + ": set " + property + " = " + value );
+}
+
+/* Initialise the shortcut entity reference.
+ */
+if( assigned[verbosity] == "set" )
+  WScript.Echo( cmdName + ": create shortcut: " + prefix + assigned[lnkname] );
+
+var Shortcut = WinShell.CreateShortcut( prefix + assigned[lnkname] );
+
+for( var k = 0; k < options.length; k++ )
+{
+  if( assigned[k] != unassigned )
+    switch( options[k] )
+    {
+      case "arguments":
+	verbose_assignment( "Shortcut.Arguments", assigned[k] );
+	Shortcut.Arguments = assigned[k];
+	break;
+
+      case "description":
+	verbose_assignment( "Shortcut.Description", assigned[k] );
+	Shortcut.Description = assigned[k];
+	break;
+
+      case "hotkey":
+	verbose_assignment( "Shortcut.HotKey", assigned[k] );
+	Shortcut.HotKey = assigned[k];
+	break;
+
+      case "icon":
+	verbose_assignment( "Shortcut.IconLocation", assigned[k] );
+	Shortcut.IconLocation = assigned[k];
+	break;
+
+      case "show":
+	verbose_assignment( "Shortcut.WindowStyle", assigned[k] );
+        var style = Array(
+	    "normal",     1,
+	    "maximised",  3,
+	    "maximized",  3,
+	    "minimised",  7,
+	    "minimized",  7
+	  );
+	for( j = 0; j < style.length; j++ )
+	  if( style[j++].indexOf( assigned[k] ) == 0 )
+	  {
+	    Shortcut.WindowStyle = style[j];
+	    j = 100;
+	  }
+	if( j < 100 )
+	  complain( 1, "unrecognised mode '--show=" + assigned[k] + "' ignored" );
+	break;
+
+      case "target":
+	verbose_assignment( "Shortcut.TargetPath", assigned[k] );
+	Shortcut.TargetPath = assigned[k];
+	break;
+
+      case "workingdir":
+	verbose_assignment( "Shortcut.WorkingDirectory", assigned[k] );
+	Shortcut.WorkingDirectory = assigned[k];
+    }
+  else if( assigned[verbosity] == "set" )
+    WScript.Echo( cmdName + ": option '--" + options[k] + "' is unassigned" );
+}
+
+/* Commit the shortcut entity to disk.
+ */
+Shortcut.Save();
+
+/* $RCSfile: shlink.js,v $: end of file */
Index: Daodan/MinGW/libexec/mingw-get/unlink.js
===================================================================
--- Daodan/MinGW/libexec/mingw-get/unlink.js	(revision 1046)
+++ Daodan/MinGW/libexec/mingw-get/unlink.js	(revision 1046)
@@ -0,0 +1,245 @@
+/*
+ * unlink.js
+ *
+ * $Id: unlink.js,v cd9a9ac85727 2013/09/20 08:43:04 keithmarshall $
+ *
+ * Invoke the Windows Scripting Host to remove specified files, typically
+ * from the user's or all users' start menu or desktop directories.
+ *
+ * Usage:
+ *   cscript -nologo unlink.js [--option ...] file ...
+ *
+ * Options:
+ *   --all-users
+ *		references to desktop or start menu files apply
+ *		to the directories serving all users
+ *
+ *   --desktop	remove files from the user's desktop directory, (or
+ *		from all users' desktop directory, with --all-users)
+ *
+ *   --start-menu
+ *		remove files from the user's start menu directory, (or
+ *		from all users' start menu directory, with --all-users)
+ *
+ *   --if-linked=target_path
+ *		do not remove any matched file which is not a shortcut
+ *		(.lnk or .url) referring to the specified target path;
+ *		when this option is specified, any specified file name
+ *		which does not already have a .lnk or .url extension
+ *		will have .lnk appended, before seeking any match
+ *
+ *   --force	override read-only attributes when removing files.
+ *
+ * Parameters:
+ *   file	the path name for a file to be removed; if --desktop
+ *		or --start-menu is specified, it should be a relative
+ *		path name, which will then be resolved relative to the
+ *		appropriate system directory path.
+ *
+ *
+ * This file is a component of mingw-get.
+ *
+ * Written by Keith Marshall <keithmarshall@users.sourceforge.net>
+ * Copyright (C) 2012, 2013, MinGW.org Project
+ *
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ *
+ */
+var cmdName = WScript.ScriptName;
+var FileSystem = WScript.CreateObject("Scripting.FileSystemObject");
+var WinShell = WScript.CreateObject("WScript.Shell");
+
+/* Strip ".js" suffix from command name.
+ */
+var i = cmdName.lastIndexOf( ".js" );
+if( (i > 0) &&  (cmdName.substr( i ) == ".js") )
+  cmdName = cmdName.substr( 0, i );
+
+/* Specify the keywords which identify command line options.
+ */
+var options = Array(
+    /*
+     *  Option		    Effect
+     *  -------------	    -------------------------
+     */
+	"all-users",	 /* Resolve file path names in all-users domain... */
+	"start-menu",	 /* ...relative to user's or all-users' start menu... */
+	"desktop",	 /* ...or desktop directories. */
+	"if-linked",     /* Only delete shortcuts with specified target path */
+	"force"  	 /* Forcibly override read-only attribute */
+    );
+
+/* Initialise all options as "unassigned".
+ */
+var unassigned = "+++unassigned+++";
+var assigned = Array( options.length );
+for( i = 0; i < assigned.length; i++ )
+  assigned[i] = unassigned;
+
+/* The "complain" function provides a mechanism for writing
+ * diagnostic messages to stderr, and optionally aborting the
+ * calling script.
+ */
+function complain( condition, message )
+{
+  WScript.StdErr.WriteLine( cmdName + ": " + message );
+  if( condition < 0 )
+    WScript.Quit( -condition );
+  return condition;
+}
+
+/* Parse the command line, to identify any specified options.
+ */
+var chklink = "";
+var argv = WScript.Arguments;
+for( i = 0; i < argv.length; i++ )
+{
+  if( argv( i ).indexOf( "--" ) == 0 )
+  {
+    /* Handle arguments specifying options...
+     */
+    var optind;
+    var matched = 0;
+    var optname = argv( i ).substr( 2 );
+    var optarg = "";
+    for( var k = 0; k < options.length; k++ )
+    {
+      /* Try to match each defined option in turn...
+       */
+      var argind = optname.indexOf( "=" );
+      if( argind > 0 )
+      {
+	optarg = optname.substr( argind + 1 );
+	optname = optname.substr( 0, argind );
+      }
+
+      if( optname == options[k] )
+      {
+	/* A exact (complete) match trumps any possible abbreviation...
+	 */
+	matched = 1;
+	assigned[optind = k] = optname;
+	k = options.length;
+      }
+
+      else if( options[k].indexOf( optname ) == 0 )
+      {
+	/* Otherwise abbreviations are allowed, but must uniquely
+	 * identify only one defined option name...
+	 */
+	if( matched++ > 0 )
+	  complain( -2, "option '" + argv( i ) + "' is ambiguous" );
+	assigned[optind = k] = options[k];
+      }
+    }
+    if( matched == 0 )
+      /*
+       * Bail out, if no match identified.
+       */
+      complain( -2, "option '" + argv( i ) + "' is undefined" );
+
+    if( assigned[optind] == "if-linked" )
+      chklink = optarg;
+  }
+}
+
+/* Establish prefix for resolving paths relative to desktop
+ * or start menu directories, and handle the --force option.
+ */
+var prefix = "";
+var allusers = false;
+var force = false;
+for( i = 0; i < options.length; i++ )
+{
+  switch( assigned[i] )
+  {
+    case "force":
+      force = true;
+      break;
+
+    case "all-users":
+      allusers = true;
+      break;
+
+    case "start-menu":
+      prefix = WinShell.SpecialFolders( allusers ? "AllUsersStartMenu"
+	  : "StartMenu"
+	) + "\\";
+      break;
+
+    case "desktop":
+      if( prefix != "" )
+	complain( -2, "options '--start-menu' and '--desktop' are incompatible" );
+      prefix = WinShell.SpecialFolders( allusers ? "AllUsersDesktop"
+	  : "Desktop"
+	) + "\\";
+  }
+}
+
+/* Parse the command line again, to process path name arguments,
+ * and delete the specified files.
+ */
+for( i = 0; i < argv.length; i++ )
+{
+  if( argv( i ).indexOf( "--" ) != 0 )
+  {
+    /* Not an option argument, so assume it's a path name.
+     */
+    var filename = prefix + argv( i );
+    if( chklink != "" )
+    {
+      /* The "--if-linked" option is in effect, and a viable
+       * target path has been defined.  The file to be deleted
+       * MUST be a shortcut file, (i.e. it MUST bear a ".lnk" or
+       * ".url" extension); supply ".lnk" as default, if this is
+       * not so.
+       */
+      var l = filename.length - 4;
+      var suffix = (l > 0) ? filename.substr( l ) : 0;
+      if( (suffix != ".lnk") && (suffix != ".url") )
+	filename += ".lnk";
+    }
+    if( FileSystem.FileExists( filename ) )
+    {
+      /* The requisite file DOES exist...
+       */
+      if( chklink != "" )
+      {
+	/* ...but when "--if-linked is in effect, we must verify that
+	 * the link target is matched (case-insensitively), before...
+	 */
+	var ref = WinShell.CreateShortcut( filename );
+	var chk = WinShell.CreateShortcut( filename ); chk.TargetPath = chklink;
+	if( ref.TargetPath.toLowerCase() == chk.TargetPath.toLowerCase() )
+	  /*
+	   * ...we may proceed with deletion.
+	   */
+	  FileSystem.DeleteFile( filename, force );
+      }
+      else
+	/* When "--if-linked" is NOT in effect, we may simply
+	 * proceed with deletion, without further ado.
+	 */
+	FileSystem.DeleteFile( filename, force );
+    }
+  }
+}
+
+/* $RCSfile: unlink.js,v $: end of file */
Index: Daodan/MinGW/mingw32/lib/ldscripts/i386pe.x
===================================================================
--- Daodan/MinGW/mingw32/lib/ldscripts/i386pe.x	(revision 1046)
+++ Daodan/MinGW/mingw32/lib/ldscripts/i386pe.x	(revision 1046)
@@ -0,0 +1,306 @@
+/* Default linker script, for normal executables */
+/* Copyright (C) 2014 Free Software Foundation, Inc.
+   Copying and distribution of this script, with or without modification,
+   are permitted in any medium without royalty provided the copyright
+   notice and this notice are preserved.  */
+OUTPUT_FORMAT(pei-i386)
+SEARCH_DIR("/mingw/mingw32/lib"); SEARCH_DIR("/mingw/lib"); SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/lib"); SEARCH_DIR("/usr/lib");
+SECTIONS
+{
+  /* Make the virtual address and file offset synced if the alignment is
+     lower than the target page size. */
+  . = SIZEOF_HEADERS;
+  . = ALIGN(__section_alignment__);
+  .text  __image_base__ + ( __section_alignment__ < 0x1000 ? . : __section_alignment__ ) :
+  {
+     *(.init)
+    *(.text)
+    *(SORT(.text$*))
+     *(.text.*)
+     *(.gnu.linkonce.t.*)
+    *(.glue_7t)
+    *(.glue_7)
+     ___CTOR_LIST__ = .; __CTOR_LIST__ = . ;
+			LONG (-1);*(.ctors); *(.ctor); *(SORT(.ctors.*));  LONG (0);
+     ___DTOR_LIST__ = .; __DTOR_LIST__ = . ;
+			LONG (-1); *(.dtors); *(.dtor); *(SORT(.dtors.*));  LONG (0);
+     *(.fini)
+    /* ??? Why is .gcc_exc here?  */
+     *(.gcc_exc)
+    PROVIDE (etext = .);
+    PROVIDE (_etext = .);
+     *(.gcc_except_table)
+  }
+  /* The Cygwin32 library uses a section to avoid copying certain data
+     on fork.  This used to be named ".data".  The linker used
+     to include this between __data_start__ and __data_end__, but that
+     breaks building the cygwin32 dll.  Instead, we name the section
+     ".data_cygwin_nocopy" and explicitly include it after __data_end__. */
+  .data BLOCK(__section_alignment__) :
+  {
+    __data_start__ = . ;
+    *(.data)
+    *(.data2)
+    *(SORT(.data$*))
+    *(.jcr)
+    __data_end__ = . ;
+    *(.data_cygwin_nocopy)
+  }
+  .rdata BLOCK(__section_alignment__) :
+  {
+    *(.rdata)
+             *(SORT(.rdata$*))
+    __rt_psrelocs_start = .;
+    *(.rdata_runtime_pseudo_reloc)
+    __rt_psrelocs_end = .;
+  }
+  __rt_psrelocs_size = __rt_psrelocs_end - __rt_psrelocs_start;
+  ___RUNTIME_PSEUDO_RELOC_LIST_END__ = .;
+  __RUNTIME_PSEUDO_RELOC_LIST_END__ = .;
+  ___RUNTIME_PSEUDO_RELOC_LIST__ = . - __rt_psrelocs_size;
+  __RUNTIME_PSEUDO_RELOC_LIST__ = . - __rt_psrelocs_size;
+  .eh_frame BLOCK(__section_alignment__) :
+  {
+    *(.eh_frame*)
+  }
+  .pdata BLOCK(__section_alignment__) :
+  {
+    *(.pdata)
+  }
+  .bss BLOCK(__section_alignment__) :
+  {
+    __bss_start__ = . ;
+    *(.bss)
+    *(COMMON)
+    __bss_end__ = . ;
+  }
+  .edata BLOCK(__section_alignment__) :
+  {
+    *(.edata)
+  }
+  /DISCARD/ :
+  {
+    *(.debug$S)
+    *(.debug$T)
+    *(.debug$F)
+    *(.drectve)
+     *(.note.GNU-stack)
+     *(.gnu.lto_*)
+  }
+  .idata BLOCK(__section_alignment__) :
+  {
+    /* This cannot currently be handled with grouped sections.
+	See pe.em:sort_sections.  */
+    SORT(*)(.idata$2)
+    SORT(*)(.idata$3)
+    /* These zeroes mark the end of the import list.  */
+    LONG (0); LONG (0); LONG (0); LONG (0); LONG (0);
+    SORT(*)(.idata$4)
+    __IAT_start__ = .;
+    SORT(*)(.idata$5)
+    __IAT_end__ = .;
+    SORT(*)(.idata$6)
+    SORT(*)(.idata$7)
+  }
+  .CRT BLOCK(__section_alignment__) :
+  {
+    ___crt_xc_start__ = . ;
+    *(SORT(.CRT$XC*))  /* C initialization */
+    ___crt_xc_end__ = . ;
+    ___crt_xi_start__ = . ;
+    *(SORT(.CRT$XI*))  /* C++ initialization */
+    ___crt_xi_end__ = . ;
+    ___crt_xl_start__ = . ;
+    *(SORT(.CRT$XL*))  /* TLS callbacks */
+    /* ___crt_xl_end__ is defined in the TLS Directory support code */
+    ___crt_xp_start__ = . ;
+    *(SORT(.CRT$XP*))  /* Pre-termination */
+    ___crt_xp_end__ = . ;
+    ___crt_xt_start__ = . ;
+    *(SORT(.CRT$XT*))  /* Termination */
+    ___crt_xt_end__ = . ;
+  }
+  /* Windows TLS expects .tls$AAA to be at the start and .tls$ZZZ to be
+     at the end of section.  This is important because _tls_start MUST
+     be at the beginning of the section to enable SECREL32 relocations with TLS
+     data.  */
+  .tls BLOCK(__section_alignment__) :
+  {
+    ___tls_start__ = . ;
+    *(.tls$AAA)
+    *(.tls)
+    *(.tls$)
+    *(SORT(.tls$*))
+    *(.tls$ZZZ)
+    ___tls_end__ = . ;
+  }
+  .endjunk BLOCK(__section_alignment__) :
+  {
+    /* end is deprecated, don't use it */
+    PROVIDE (end = .);
+    PROVIDE ( _end = .);
+     __end__ = .;
+  }
+  .rsrc BLOCK(__section_alignment__) : SUBALIGN(4)
+  {
+    *(.rsrc)
+    *(.rsrc$*)
+  }
+  .reloc BLOCK(__section_alignment__) :
+  {
+    *(.reloc)
+  }
+  .stab BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.stab)
+  }
+  .stabstr BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.stabstr)
+  }
+  /* DWARF debug sections.
+     Symbols in the DWARF debugging sections are relative to the beginning
+     of the section.  Unlike other targets that fake this by putting the
+     section VMA at 0, the PE format will not allow it.  */
+  /* DWARF 1.1 and DWARF 2.  */
+  .debug_aranges BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.debug_aranges)
+  }
+  .zdebug_aranges BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.zdebug_aranges)
+  }
+  .debug_pubnames BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.debug_pubnames)
+  }
+  .zdebug_pubnames BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.zdebug_pubnames)
+  }
+  .debug_pubtypes BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.debug_pubtypes)
+  }
+  .zdebug_pubtypes BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.zdebug_pubtypes)
+  }
+  /* DWARF 2.  */
+  .debug_info BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.debug_info .gnu.linkonce.wi.*)
+  }
+  .zdebug_info BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.zdebug_info .zdebug.gnu.linkonce.wi.*)
+  }
+  .debug_abbrev BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.debug_abbrev)
+  }
+  .zdebug_abbrev BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.zdebug_abbrev)
+  }
+  .debug_line BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.debug_line)
+  }
+  .zdebug_line BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.zdebug_line)
+  }
+  .debug_frame BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.debug_frame*)
+  }
+  .zdebug_frame BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.zdebug_frame*)
+  }
+  .debug_str BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.debug_str)
+  }
+  .zdebug_str BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.zdebug_str)
+  }
+  .debug_loc BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.debug_loc)
+  }
+  .zdebug_loc BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.zdebug_loc)
+  }
+  .debug_macinfo BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.debug_macinfo)
+  }
+  .zdebug_macinfo BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.zdebug_macinfo)
+  }
+  /* SGI/MIPS DWARF 2 extensions.  */
+  .debug_weaknames BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.debug_weaknames)
+  }
+  .zdebug_weaknames BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.zdebug_weaknames)
+  }
+  .debug_funcnames BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.debug_funcnames)
+  }
+  .zdebug_funcnames BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.zdebug_funcnames)
+  }
+  .debug_typenames BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.debug_typenames)
+  }
+  .zdebug_typenames BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.zdebug_typenames)
+  }
+  .debug_varnames BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.debug_varnames)
+  }
+  .zdebug_varnames BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.zdebug_varnames)
+  }
+  .debug_macro BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.debug_macro)
+  }
+  .zdebug_macro BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.zdebug_macro)
+  }
+  /* DWARF 3.  */
+  .debug_ranges BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.debug_ranges)
+  }
+  .zdebug_ranges BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.zdebug_ranges)
+  }
+  /* DWARF 4.  */
+  .debug_types BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.debug_types .gnu.linkonce.wt.*)
+  }
+  .zdebug_types BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.zdebug_types .gnu.linkonce.wt.*)
+  }
+}
Index: Daodan/MinGW/mingw32/lib/ldscripts/i386pe.xa
===================================================================
--- Daodan/MinGW/mingw32/lib/ldscripts/i386pe.xa	(revision 1046)
+++ Daodan/MinGW/mingw32/lib/ldscripts/i386pe.xa	(revision 1046)
@@ -0,0 +1,306 @@
+/* Script for ld --enable-auto-import: Like the default script except read only data is placed into .data  */
+/* Copyright (C) 2014 Free Software Foundation, Inc.
+   Copying and distribution of this script, with or without modification,
+   are permitted in any medium without royalty provided the copyright
+   notice and this notice are preserved.  */
+OUTPUT_FORMAT(pei-i386)
+SEARCH_DIR("/mingw/mingw32/lib"); SEARCH_DIR("/mingw/lib"); SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/lib"); SEARCH_DIR("/usr/lib");
+SECTIONS
+{
+  /* Make the virtual address and file offset synced if the alignment is
+     lower than the target page size. */
+  . = SIZEOF_HEADERS;
+  . = ALIGN(__section_alignment__);
+  .text  __image_base__ + ( __section_alignment__ < 0x1000 ? . : __section_alignment__ ) :
+  {
+     *(.init)
+    *(.text)
+    *(SORT(.text$*))
+     *(.text.*)
+     *(.gnu.linkonce.t.*)
+    *(.glue_7t)
+    *(.glue_7)
+     ___CTOR_LIST__ = .; __CTOR_LIST__ = . ;
+			LONG (-1);*(.ctors); *(.ctor); *(SORT(.ctors.*));  LONG (0);
+     ___DTOR_LIST__ = .; __DTOR_LIST__ = . ;
+			LONG (-1); *(.dtors); *(.dtor); *(SORT(.dtors.*));  LONG (0);
+     *(.fini)
+    /* ??? Why is .gcc_exc here?  */
+     *(.gcc_exc)
+    PROVIDE (etext = .);
+    PROVIDE (_etext = .);
+     *(.gcc_except_table)
+  }
+  /* The Cygwin32 library uses a section to avoid copying certain data
+     on fork.  This used to be named ".data".  The linker used
+     to include this between __data_start__ and __data_end__, but that
+     breaks building the cygwin32 dll.  Instead, we name the section
+     ".data_cygwin_nocopy" and explicitly include it after __data_end__. */
+  .data BLOCK(__section_alignment__) :
+  {
+    __data_start__ = . ;
+    *(.data)
+    *(.data2)
+    *(SORT(.data$*))
+            *(.rdata)
+	    *(SORT(.rdata$*))
+    *(.jcr)
+    __data_end__ = . ;
+    *(.data_cygwin_nocopy)
+  }
+  .rdata BLOCK(__section_alignment__) :
+  {
+    __rt_psrelocs_start = .;
+    *(.rdata_runtime_pseudo_reloc)
+    __rt_psrelocs_end = .;
+  }
+  __rt_psrelocs_size = __rt_psrelocs_end - __rt_psrelocs_start;
+  ___RUNTIME_PSEUDO_RELOC_LIST_END__ = .;
+  __RUNTIME_PSEUDO_RELOC_LIST_END__ = .;
+  ___RUNTIME_PSEUDO_RELOC_LIST__ = . - __rt_psrelocs_size;
+  __RUNTIME_PSEUDO_RELOC_LIST__ = . - __rt_psrelocs_size;
+  .eh_frame BLOCK(__section_alignment__) :
+  {
+    *(.eh_frame*)
+  }
+  .pdata BLOCK(__section_alignment__) :
+  {
+    *(.pdata)
+  }
+  .bss BLOCK(__section_alignment__) :
+  {
+    __bss_start__ = . ;
+    *(.bss)
+    *(COMMON)
+    __bss_end__ = . ;
+  }
+  .edata BLOCK(__section_alignment__) :
+  {
+    *(.edata)
+  }
+  /DISCARD/ :
+  {
+    *(.debug$S)
+    *(.debug$T)
+    *(.debug$F)
+    *(.drectve)
+     *(.note.GNU-stack)
+     *(.gnu.lto_*)
+  }
+  .idata BLOCK(__section_alignment__) :
+  {
+    /* This cannot currently be handled with grouped sections.
+	See pe.em:sort_sections.  */
+    SORT(*)(.idata$2)
+    SORT(*)(.idata$3)
+    /* These zeroes mark the end of the import list.  */
+    LONG (0); LONG (0); LONG (0); LONG (0); LONG (0);
+    SORT(*)(.idata$4)
+    __IAT_start__ = .;
+    SORT(*)(.idata$5)
+    __IAT_end__ = .;
+    SORT(*)(.idata$6)
+    SORT(*)(.idata$7)
+  }
+  .CRT BLOCK(__section_alignment__) :
+  {
+    ___crt_xc_start__ = . ;
+    *(SORT(.CRT$XC*))  /* C initialization */
+    ___crt_xc_end__ = . ;
+    ___crt_xi_start__ = . ;
+    *(SORT(.CRT$XI*))  /* C++ initialization */
+    ___crt_xi_end__ = . ;
+    ___crt_xl_start__ = . ;
+    *(SORT(.CRT$XL*))  /* TLS callbacks */
+    /* ___crt_xl_end__ is defined in the TLS Directory support code */
+    ___crt_xp_start__ = . ;
+    *(SORT(.CRT$XP*))  /* Pre-termination */
+    ___crt_xp_end__ = . ;
+    ___crt_xt_start__ = . ;
+    *(SORT(.CRT$XT*))  /* Termination */
+    ___crt_xt_end__ = . ;
+  }
+  /* Windows TLS expects .tls$AAA to be at the start and .tls$ZZZ to be
+     at the end of section.  This is important because _tls_start MUST
+     be at the beginning of the section to enable SECREL32 relocations with TLS
+     data.  */
+  .tls BLOCK(__section_alignment__) :
+  {
+    ___tls_start__ = . ;
+    *(.tls$AAA)
+    *(.tls)
+    *(.tls$)
+    *(SORT(.tls$*))
+    *(.tls$ZZZ)
+    ___tls_end__ = . ;
+  }
+  .endjunk BLOCK(__section_alignment__) :
+  {
+    /* end is deprecated, don't use it */
+    PROVIDE (end = .);
+    PROVIDE ( _end = .);
+     __end__ = .;
+  }
+  .rsrc BLOCK(__section_alignment__) : SUBALIGN(4)
+  {
+    *(.rsrc)
+    *(.rsrc$*)
+  }
+  .reloc BLOCK(__section_alignment__) :
+  {
+    *(.reloc)
+  }
+  .stab BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.stab)
+  }
+  .stabstr BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.stabstr)
+  }
+  /* DWARF debug sections.
+     Symbols in the DWARF debugging sections are relative to the beginning
+     of the section.  Unlike other targets that fake this by putting the
+     section VMA at 0, the PE format will not allow it.  */
+  /* DWARF 1.1 and DWARF 2.  */
+  .debug_aranges BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.debug_aranges)
+  }
+  .zdebug_aranges BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.zdebug_aranges)
+  }
+  .debug_pubnames BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.debug_pubnames)
+  }
+  .zdebug_pubnames BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.zdebug_pubnames)
+  }
+  .debug_pubtypes BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.debug_pubtypes)
+  }
+  .zdebug_pubtypes BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.zdebug_pubtypes)
+  }
+  /* DWARF 2.  */
+  .debug_info BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.debug_info .gnu.linkonce.wi.*)
+  }
+  .zdebug_info BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.zdebug_info .zdebug.gnu.linkonce.wi.*)
+  }
+  .debug_abbrev BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.debug_abbrev)
+  }
+  .zdebug_abbrev BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.zdebug_abbrev)
+  }
+  .debug_line BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.debug_line)
+  }
+  .zdebug_line BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.zdebug_line)
+  }
+  .debug_frame BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.debug_frame*)
+  }
+  .zdebug_frame BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.zdebug_frame*)
+  }
+  .debug_str BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.debug_str)
+  }
+  .zdebug_str BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.zdebug_str)
+  }
+  .debug_loc BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.debug_loc)
+  }
+  .zdebug_loc BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.zdebug_loc)
+  }
+  .debug_macinfo BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.debug_macinfo)
+  }
+  .zdebug_macinfo BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.zdebug_macinfo)
+  }
+  /* SGI/MIPS DWARF 2 extensions.  */
+  .debug_weaknames BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.debug_weaknames)
+  }
+  .zdebug_weaknames BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.zdebug_weaknames)
+  }
+  .debug_funcnames BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.debug_funcnames)
+  }
+  .zdebug_funcnames BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.zdebug_funcnames)
+  }
+  .debug_typenames BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.debug_typenames)
+  }
+  .zdebug_typenames BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.zdebug_typenames)
+  }
+  .debug_varnames BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.debug_varnames)
+  }
+  .zdebug_varnames BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.zdebug_varnames)
+  }
+  .debug_macro BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.debug_macro)
+  }
+  .zdebug_macro BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.zdebug_macro)
+  }
+  /* DWARF 3.  */
+  .debug_ranges BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.debug_ranges)
+  }
+  .zdebug_ranges BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.zdebug_ranges)
+  }
+  /* DWARF 4.  */
+  .debug_types BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.debug_types .gnu.linkonce.wt.*)
+  }
+  .zdebug_types BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.zdebug_types .gnu.linkonce.wt.*)
+  }
+}
Index: Daodan/MinGW/mingw32/lib/ldscripts/i386pe.xbn
===================================================================
--- Daodan/MinGW/mingw32/lib/ldscripts/i386pe.xbn	(revision 1046)
+++ Daodan/MinGW/mingw32/lib/ldscripts/i386pe.xbn	(revision 1046)
@@ -0,0 +1,306 @@
+/* Script for -N: mix text and data on same page; don't align data */
+/* Copyright (C) 2014 Free Software Foundation, Inc.
+   Copying and distribution of this script, with or without modification,
+   are permitted in any medium without royalty provided the copyright
+   notice and this notice are preserved.  */
+OUTPUT_FORMAT(pei-i386)
+SEARCH_DIR("/mingw/mingw32/lib"); SEARCH_DIR("/mingw/lib"); SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/lib"); SEARCH_DIR("/usr/lib");
+SECTIONS
+{
+  /* Make the virtual address and file offset synced if the alignment is
+     lower than the target page size. */
+  . = SIZEOF_HEADERS;
+  . = ALIGN(__section_alignment__);
+  .text  __image_base__ + ( __section_alignment__ < 0x1000 ? . : __section_alignment__ ) :
+  {
+     *(.init)
+    *(.text)
+    *(SORT(.text$*))
+     *(.text.*)
+     *(.gnu.linkonce.t.*)
+    *(.glue_7t)
+    *(.glue_7)
+     ___CTOR_LIST__ = .; __CTOR_LIST__ = . ;
+			LONG (-1);*(.ctors); *(.ctor); *(SORT(.ctors.*));  LONG (0);
+     ___DTOR_LIST__ = .; __DTOR_LIST__ = . ;
+			LONG (-1); *(.dtors); *(.dtor); *(SORT(.dtors.*));  LONG (0);
+     *(.fini)
+    /* ??? Why is .gcc_exc here?  */
+     *(.gcc_exc)
+    PROVIDE (etext = .);
+    PROVIDE (_etext = .);
+     *(.gcc_except_table)
+  }
+  /* The Cygwin32 library uses a section to avoid copying certain data
+     on fork.  This used to be named ".data".  The linker used
+     to include this between __data_start__ and __data_end__, but that
+     breaks building the cygwin32 dll.  Instead, we name the section
+     ".data_cygwin_nocopy" and explicitly include it after __data_end__. */
+  .data BLOCK(__section_alignment__) :
+  {
+    __data_start__ = . ;
+    *(.data)
+    *(.data2)
+    *(SORT(.data$*))
+    *(.jcr)
+    __data_end__ = . ;
+    *(.data_cygwin_nocopy)
+  }
+  .rdata BLOCK(__section_alignment__) :
+  {
+    *(.rdata)
+             *(SORT(.rdata$*))
+    __rt_psrelocs_start = .;
+    *(.rdata_runtime_pseudo_reloc)
+    __rt_psrelocs_end = .;
+  }
+  __rt_psrelocs_size = __rt_psrelocs_end - __rt_psrelocs_start;
+  ___RUNTIME_PSEUDO_RELOC_LIST_END__ = .;
+  __RUNTIME_PSEUDO_RELOC_LIST_END__ = .;
+  ___RUNTIME_PSEUDO_RELOC_LIST__ = . - __rt_psrelocs_size;
+  __RUNTIME_PSEUDO_RELOC_LIST__ = . - __rt_psrelocs_size;
+  .eh_frame BLOCK(__section_alignment__) :
+  {
+    *(.eh_frame*)
+  }
+  .pdata BLOCK(__section_alignment__) :
+  {
+    *(.pdata)
+  }
+  .bss BLOCK(__section_alignment__) :
+  {
+    __bss_start__ = . ;
+    *(.bss)
+    *(COMMON)
+    __bss_end__ = . ;
+  }
+  .edata BLOCK(__section_alignment__) :
+  {
+    *(.edata)
+  }
+  /DISCARD/ :
+  {
+    *(.debug$S)
+    *(.debug$T)
+    *(.debug$F)
+    *(.drectve)
+     *(.note.GNU-stack)
+     *(.gnu.lto_*)
+  }
+  .idata BLOCK(__section_alignment__) :
+  {
+    /* This cannot currently be handled with grouped sections.
+	See pe.em:sort_sections.  */
+    SORT(*)(.idata$2)
+    SORT(*)(.idata$3)
+    /* These zeroes mark the end of the import list.  */
+    LONG (0); LONG (0); LONG (0); LONG (0); LONG (0);
+    SORT(*)(.idata$4)
+    __IAT_start__ = .;
+    SORT(*)(.idata$5)
+    __IAT_end__ = .;
+    SORT(*)(.idata$6)
+    SORT(*)(.idata$7)
+  }
+  .CRT BLOCK(__section_alignment__) :
+  {
+    ___crt_xc_start__ = . ;
+    *(SORT(.CRT$XC*))  /* C initialization */
+    ___crt_xc_end__ = . ;
+    ___crt_xi_start__ = . ;
+    *(SORT(.CRT$XI*))  /* C++ initialization */
+    ___crt_xi_end__ = . ;
+    ___crt_xl_start__ = . ;
+    *(SORT(.CRT$XL*))  /* TLS callbacks */
+    /* ___crt_xl_end__ is defined in the TLS Directory support code */
+    ___crt_xp_start__ = . ;
+    *(SORT(.CRT$XP*))  /* Pre-termination */
+    ___crt_xp_end__ = . ;
+    ___crt_xt_start__ = . ;
+    *(SORT(.CRT$XT*))  /* Termination */
+    ___crt_xt_end__ = . ;
+  }
+  /* Windows TLS expects .tls$AAA to be at the start and .tls$ZZZ to be
+     at the end of section.  This is important because _tls_start MUST
+     be at the beginning of the section to enable SECREL32 relocations with TLS
+     data.  */
+  .tls BLOCK(__section_alignment__) :
+  {
+    ___tls_start__ = . ;
+    *(.tls$AAA)
+    *(.tls)
+    *(.tls$)
+    *(SORT(.tls$*))
+    *(.tls$ZZZ)
+    ___tls_end__ = . ;
+  }
+  .endjunk BLOCK(__section_alignment__) :
+  {
+    /* end is deprecated, don't use it */
+    PROVIDE (end = .);
+    PROVIDE ( _end = .);
+     __end__ = .;
+  }
+  .rsrc BLOCK(__section_alignment__) : SUBALIGN(4)
+  {
+    *(.rsrc)
+    *(.rsrc$*)
+  }
+  .reloc BLOCK(__section_alignment__) :
+  {
+    *(.reloc)
+  }
+  .stab BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.stab)
+  }
+  .stabstr BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.stabstr)
+  }
+  /* DWARF debug sections.
+     Symbols in the DWARF debugging sections are relative to the beginning
+     of the section.  Unlike other targets that fake this by putting the
+     section VMA at 0, the PE format will not allow it.  */
+  /* DWARF 1.1 and DWARF 2.  */
+  .debug_aranges BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.debug_aranges)
+  }
+  .zdebug_aranges BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.zdebug_aranges)
+  }
+  .debug_pubnames BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.debug_pubnames)
+  }
+  .zdebug_pubnames BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.zdebug_pubnames)
+  }
+  .debug_pubtypes BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.debug_pubtypes)
+  }
+  .zdebug_pubtypes BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.zdebug_pubtypes)
+  }
+  /* DWARF 2.  */
+  .debug_info BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.debug_info .gnu.linkonce.wi.*)
+  }
+  .zdebug_info BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.zdebug_info .zdebug.gnu.linkonce.wi.*)
+  }
+  .debug_abbrev BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.debug_abbrev)
+  }
+  .zdebug_abbrev BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.zdebug_abbrev)
+  }
+  .debug_line BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.debug_line)
+  }
+  .zdebug_line BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.zdebug_line)
+  }
+  .debug_frame BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.debug_frame*)
+  }
+  .zdebug_frame BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.zdebug_frame*)
+  }
+  .debug_str BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.debug_str)
+  }
+  .zdebug_str BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.zdebug_str)
+  }
+  .debug_loc BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.debug_loc)
+  }
+  .zdebug_loc BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.zdebug_loc)
+  }
+  .debug_macinfo BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.debug_macinfo)
+  }
+  .zdebug_macinfo BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.zdebug_macinfo)
+  }
+  /* SGI/MIPS DWARF 2 extensions.  */
+  .debug_weaknames BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.debug_weaknames)
+  }
+  .zdebug_weaknames BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.zdebug_weaknames)
+  }
+  .debug_funcnames BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.debug_funcnames)
+  }
+  .zdebug_funcnames BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.zdebug_funcnames)
+  }
+  .debug_typenames BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.debug_typenames)
+  }
+  .zdebug_typenames BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.zdebug_typenames)
+  }
+  .debug_varnames BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.debug_varnames)
+  }
+  .zdebug_varnames BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.zdebug_varnames)
+  }
+  .debug_macro BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.debug_macro)
+  }
+  .zdebug_macro BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.zdebug_macro)
+  }
+  /* DWARF 3.  */
+  .debug_ranges BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.debug_ranges)
+  }
+  .zdebug_ranges BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.zdebug_ranges)
+  }
+  /* DWARF 4.  */
+  .debug_types BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.debug_types .gnu.linkonce.wt.*)
+  }
+  .zdebug_types BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.zdebug_types .gnu.linkonce.wt.*)
+  }
+}
Index: Daodan/MinGW/mingw32/lib/ldscripts/i386pe.xn
===================================================================
--- Daodan/MinGW/mingw32/lib/ldscripts/i386pe.xn	(revision 1046)
+++ Daodan/MinGW/mingw32/lib/ldscripts/i386pe.xn	(revision 1046)
@@ -0,0 +1,306 @@
+/* Script for -n: mix text and data on same page */
+/* Copyright (C) 2014 Free Software Foundation, Inc.
+   Copying and distribution of this script, with or without modification,
+   are permitted in any medium without royalty provided the copyright
+   notice and this notice are preserved.  */
+OUTPUT_FORMAT(pei-i386)
+SEARCH_DIR("/mingw/mingw32/lib"); SEARCH_DIR("/mingw/lib"); SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/lib"); SEARCH_DIR("/usr/lib");
+SECTIONS
+{
+  /* Make the virtual address and file offset synced if the alignment is
+     lower than the target page size. */
+  . = SIZEOF_HEADERS;
+  . = ALIGN(__section_alignment__);
+  .text  __image_base__ + ( __section_alignment__ < 0x1000 ? . : __section_alignment__ ) :
+  {
+     *(.init)
+    *(.text)
+    *(SORT(.text$*))
+     *(.text.*)
+     *(.gnu.linkonce.t.*)
+    *(.glue_7t)
+    *(.glue_7)
+     ___CTOR_LIST__ = .; __CTOR_LIST__ = . ;
+			LONG (-1);*(.ctors); *(.ctor); *(SORT(.ctors.*));  LONG (0);
+     ___DTOR_LIST__ = .; __DTOR_LIST__ = . ;
+			LONG (-1); *(.dtors); *(.dtor); *(SORT(.dtors.*));  LONG (0);
+     *(.fini)
+    /* ??? Why is .gcc_exc here?  */
+     *(.gcc_exc)
+    PROVIDE (etext = .);
+    PROVIDE (_etext = .);
+     *(.gcc_except_table)
+  }
+  /* The Cygwin32 library uses a section to avoid copying certain data
+     on fork.  This used to be named ".data".  The linker used
+     to include this between __data_start__ and __data_end__, but that
+     breaks building the cygwin32 dll.  Instead, we name the section
+     ".data_cygwin_nocopy" and explicitly include it after __data_end__. */
+  .data BLOCK(__section_alignment__) :
+  {
+    __data_start__ = . ;
+    *(.data)
+    *(.data2)
+    *(SORT(.data$*))
+    *(.jcr)
+    __data_end__ = . ;
+    *(.data_cygwin_nocopy)
+  }
+  .rdata BLOCK(__section_alignment__) :
+  {
+    *(.rdata)
+             *(SORT(.rdata$*))
+    __rt_psrelocs_start = .;
+    *(.rdata_runtime_pseudo_reloc)
+    __rt_psrelocs_end = .;
+  }
+  __rt_psrelocs_size = __rt_psrelocs_end - __rt_psrelocs_start;
+  ___RUNTIME_PSEUDO_RELOC_LIST_END__ = .;
+  __RUNTIME_PSEUDO_RELOC_LIST_END__ = .;
+  ___RUNTIME_PSEUDO_RELOC_LIST__ = . - __rt_psrelocs_size;
+  __RUNTIME_PSEUDO_RELOC_LIST__ = . - __rt_psrelocs_size;
+  .eh_frame BLOCK(__section_alignment__) :
+  {
+    *(.eh_frame*)
+  }
+  .pdata BLOCK(__section_alignment__) :
+  {
+    *(.pdata)
+  }
+  .bss BLOCK(__section_alignment__) :
+  {
+    __bss_start__ = . ;
+    *(.bss)
+    *(COMMON)
+    __bss_end__ = . ;
+  }
+  .edata BLOCK(__section_alignment__) :
+  {
+    *(.edata)
+  }
+  /DISCARD/ :
+  {
+    *(.debug$S)
+    *(.debug$T)
+    *(.debug$F)
+    *(.drectve)
+     *(.note.GNU-stack)
+     *(.gnu.lto_*)
+  }
+  .idata BLOCK(__section_alignment__) :
+  {
+    /* This cannot currently be handled with grouped sections.
+	See pe.em:sort_sections.  */
+    SORT(*)(.idata$2)
+    SORT(*)(.idata$3)
+    /* These zeroes mark the end of the import list.  */
+    LONG (0); LONG (0); LONG (0); LONG (0); LONG (0);
+    SORT(*)(.idata$4)
+    __IAT_start__ = .;
+    SORT(*)(.idata$5)
+    __IAT_end__ = .;
+    SORT(*)(.idata$6)
+    SORT(*)(.idata$7)
+  }
+  .CRT BLOCK(__section_alignment__) :
+  {
+    ___crt_xc_start__ = . ;
+    *(SORT(.CRT$XC*))  /* C initialization */
+    ___crt_xc_end__ = . ;
+    ___crt_xi_start__ = . ;
+    *(SORT(.CRT$XI*))  /* C++ initialization */
+    ___crt_xi_end__ = . ;
+    ___crt_xl_start__ = . ;
+    *(SORT(.CRT$XL*))  /* TLS callbacks */
+    /* ___crt_xl_end__ is defined in the TLS Directory support code */
+    ___crt_xp_start__ = . ;
+    *(SORT(.CRT$XP*))  /* Pre-termination */
+    ___crt_xp_end__ = . ;
+    ___crt_xt_start__ = . ;
+    *(SORT(.CRT$XT*))  /* Termination */
+    ___crt_xt_end__ = . ;
+  }
+  /* Windows TLS expects .tls$AAA to be at the start and .tls$ZZZ to be
+     at the end of section.  This is important because _tls_start MUST
+     be at the beginning of the section to enable SECREL32 relocations with TLS
+     data.  */
+  .tls BLOCK(__section_alignment__) :
+  {
+    ___tls_start__ = . ;
+    *(.tls$AAA)
+    *(.tls)
+    *(.tls$)
+    *(SORT(.tls$*))
+    *(.tls$ZZZ)
+    ___tls_end__ = . ;
+  }
+  .endjunk BLOCK(__section_alignment__) :
+  {
+    /* end is deprecated, don't use it */
+    PROVIDE (end = .);
+    PROVIDE ( _end = .);
+     __end__ = .;
+  }
+  .rsrc BLOCK(__section_alignment__) : SUBALIGN(4)
+  {
+    *(.rsrc)
+    *(.rsrc$*)
+  }
+  .reloc BLOCK(__section_alignment__) :
+  {
+    *(.reloc)
+  }
+  .stab BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.stab)
+  }
+  .stabstr BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.stabstr)
+  }
+  /* DWARF debug sections.
+     Symbols in the DWARF debugging sections are relative to the beginning
+     of the section.  Unlike other targets that fake this by putting the
+     section VMA at 0, the PE format will not allow it.  */
+  /* DWARF 1.1 and DWARF 2.  */
+  .debug_aranges BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.debug_aranges)
+  }
+  .zdebug_aranges BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.zdebug_aranges)
+  }
+  .debug_pubnames BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.debug_pubnames)
+  }
+  .zdebug_pubnames BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.zdebug_pubnames)
+  }
+  .debug_pubtypes BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.debug_pubtypes)
+  }
+  .zdebug_pubtypes BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.zdebug_pubtypes)
+  }
+  /* DWARF 2.  */
+  .debug_info BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.debug_info .gnu.linkonce.wi.*)
+  }
+  .zdebug_info BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.zdebug_info .zdebug.gnu.linkonce.wi.*)
+  }
+  .debug_abbrev BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.debug_abbrev)
+  }
+  .zdebug_abbrev BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.zdebug_abbrev)
+  }
+  .debug_line BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.debug_line)
+  }
+  .zdebug_line BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.zdebug_line)
+  }
+  .debug_frame BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.debug_frame*)
+  }
+  .zdebug_frame BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.zdebug_frame*)
+  }
+  .debug_str BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.debug_str)
+  }
+  .zdebug_str BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.zdebug_str)
+  }
+  .debug_loc BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.debug_loc)
+  }
+  .zdebug_loc BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.zdebug_loc)
+  }
+  .debug_macinfo BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.debug_macinfo)
+  }
+  .zdebug_macinfo BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.zdebug_macinfo)
+  }
+  /* SGI/MIPS DWARF 2 extensions.  */
+  .debug_weaknames BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.debug_weaknames)
+  }
+  .zdebug_weaknames BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.zdebug_weaknames)
+  }
+  .debug_funcnames BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.debug_funcnames)
+  }
+  .zdebug_funcnames BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.zdebug_funcnames)
+  }
+  .debug_typenames BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.debug_typenames)
+  }
+  .zdebug_typenames BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.zdebug_typenames)
+  }
+  .debug_varnames BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.debug_varnames)
+  }
+  .zdebug_varnames BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.zdebug_varnames)
+  }
+  .debug_macro BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.debug_macro)
+  }
+  .zdebug_macro BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.zdebug_macro)
+  }
+  /* DWARF 3.  */
+  .debug_ranges BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.debug_ranges)
+  }
+  .zdebug_ranges BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.zdebug_ranges)
+  }
+  /* DWARF 4.  */
+  .debug_types BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.debug_types .gnu.linkonce.wt.*)
+  }
+  .zdebug_types BLOCK(__section_alignment__) (NOLOAD) :
+  {
+    *(.zdebug_types .gnu.linkonce.wt.*)
+  }
+}
Index: Daodan/MinGW/mingw32/lib/ldscripts/i386pe.xr
===================================================================
--- Daodan/MinGW/mingw32/lib/ldscripts/i386pe.xr	(revision 1046)
+++ Daodan/MinGW/mingw32/lib/ldscripts/i386pe.xr	(revision 1046)
@@ -0,0 +1,238 @@
+/* Script for ld -r: link without relocation */
+/* Copyright (C) 2014 Free Software Foundation, Inc.
+   Copying and distribution of this script, with or without modification,
+   are permitted in any medium without royalty provided the copyright
+   notice and this notice are preserved.  */
+OUTPUT_FORMAT(pe-i386)
+SEARCH_DIR("/mingw/mingw32/lib"); SEARCH_DIR("/mingw/lib"); SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/lib"); SEARCH_DIR("/usr/lib");
+SECTIONS
+{
+  .text  :
+  {
+    *(.text)
+    *(.glue_7t)
+    *(.glue_7)
+    /* ??? Why is .gcc_exc here?  */
+  }
+  /* The Cygwin32 library uses a section to avoid copying certain data
+     on fork.  This used to be named ".data".  The linker used
+     to include this between __data_start__ and __data_end__, but that
+     breaks building the cygwin32 dll.  Instead, we name the section
+     ".data_cygwin_nocopy" and explicitly include it after __data_end__. */
+  .data  :
+  {
+    *(.data)
+    *(.data2)
+    *(.jcr)
+  }
+  .rdata  :
+  {
+    *(.rdata)
+    *(.rdata_runtime_pseudo_reloc)
+  }
+  .eh_frame  :
+  {
+    *(.eh_frame*)
+  }
+  .pdata  :
+  {
+    *(.pdata)
+  }
+  .bss  :
+  {
+    *(.bss)
+    *(COMMON)
+  }
+  .edata  :
+  {
+    *(.edata)
+  }
+  /DISCARD/ :
+  {
+    *(.debug$S)
+    *(.debug$T)
+    *(.debug$F)
+    *(.drectve)
+  }
+  .idata  :
+  {
+    /* This cannot currently be handled with grouped sections.
+	See pe.em:sort_sections.  */
+  }
+  .CRT  :
+  {
+    /* ___crt_xl_end__ is defined in the TLS Directory support code */
+  }
+  /* Windows TLS expects .tls$AAA to be at the start and .tls$ZZZ to be
+     at the end of section.  This is important because _tls_start MUST
+     be at the beginning of the section to enable SECREL32 relocations with TLS
+     data.  */
+  .tls  :
+  {
+  }
+  .endjunk  :
+  {
+    /* end is deprecated, don't use it */
+  }
+  .rsrc  : SUBALIGN(4)
+  {
+    *(.rsrc)
+  }
+  .reloc  :
+  {
+    *(.reloc)
+  }
+  .stab   :
+  {
+    *(.stab)
+  }
+  .stabstr   :
+  {
+    *(.stabstr)
+  }
+  /* DWARF debug sections.
+     Symbols in the DWARF debugging sections are relative to the beginning
+     of the section.  Unlike other targets that fake this by putting the
+     section VMA at 0, the PE format will not allow it.  */
+  /* DWARF 1.1 and DWARF 2.  */
+  .debug_aranges   :
+  {
+    *(.debug_aranges)
+  }
+  .zdebug_aranges   :
+  {
+    *(.zdebug_aranges)
+  }
+  .debug_pubnames   :
+  {
+    *(.debug_pubnames)
+  }
+  .zdebug_pubnames   :
+  {
+    *(.zdebug_pubnames)
+  }
+  .debug_pubtypes   :
+  {
+    *(.debug_pubtypes)
+  }
+  .zdebug_pubtypes   :
+  {
+    *(.zdebug_pubtypes)
+  }
+  /* DWARF 2.  */
+  .debug_info   :
+  {
+    *(.debug_info)
+  }
+  .zdebug_info   :
+  {
+    *(.zdebug_info)
+  }
+  .debug_abbrev   :
+  {
+    *(.debug_abbrev)
+  }
+  .zdebug_abbrev   :
+  {
+    *(.zdebug_abbrev)
+  }
+  .debug_line   :
+  {
+    *(.debug_line)
+  }
+  .zdebug_line   :
+  {
+    *(.zdebug_line)
+  }
+  .debug_frame   :
+  {
+    *(.debug_frame*)
+  }
+  .zdebug_frame   :
+  {
+    *(.zdebug_frame*)
+  }
+  .debug_str   :
+  {
+    *(.debug_str)
+  }
+  .zdebug_str   :
+  {
+    *(.zdebug_str)
+  }
+  .debug_loc   :
+  {
+    *(.debug_loc)
+  }
+  .zdebug_loc   :
+  {
+    *(.zdebug_loc)
+  }
+  .debug_macinfo   :
+  {
+    *(.debug_macinfo)
+  }
+  .zdebug_macinfo   :
+  {
+    *(.zdebug_macinfo)
+  }
+  /* SGI/MIPS DWARF 2 extensions.  */
+  .debug_weaknames   :
+  {
+    *(.debug_weaknames)
+  }
+  .zdebug_weaknames   :
+  {
+    *(.zdebug_weaknames)
+  }
+  .debug_funcnames   :
+  {
+    *(.debug_funcnames)
+  }
+  .zdebug_funcnames   :
+  {
+    *(.zdebug_funcnames)
+  }
+  .debug_typenames   :
+  {
+    *(.debug_typenames)
+  }
+  .zdebug_typenames   :
+  {
+    *(.zdebug_typenames)
+  }
+  .debug_varnames   :
+  {
+    *(.debug_varnames)
+  }
+  .zdebug_varnames   :
+  {
+    *(.zdebug_varnames)
+  }
+  .debug_macro   :
+  {
+    *(.debug_macro)
+  }
+  .zdebug_macro   :
+  {
+    *(.zdebug_macro)
+  }
+  /* DWARF 3.  */
+  .debug_ranges   :
+  {
+    *(.debug_ranges)
+  }
+  .zdebug_ranges   :
+  {
+    *(.zdebug_ranges)
+  }
+  /* DWARF 4.  */
+  .debug_types   :
+  {
+    *(.debug_types)
+  }
+  .zdebug_types   :
+  {
+    *(.zdebug_types)
+  }
+}
Index: Daodan/MinGW/mingw32/lib/ldscripts/i386pe.xu
===================================================================
--- Daodan/MinGW/mingw32/lib/ldscripts/i386pe.xu	(revision 1046)
+++ Daodan/MinGW/mingw32/lib/ldscripts/i386pe.xu	(revision 1046)
@@ -0,0 +1,242 @@
+/* Script for ld -Ur: link w/out relocation, do create constructors */
+/* Copyright (C) 2014 Free Software Foundation, Inc.
+   Copying and distribution of this script, with or without modification,
+   are permitted in any medium without royalty provided the copyright
+   notice and this notice are preserved.  */
+OUTPUT_FORMAT(pe-i386)
+SEARCH_DIR("/mingw/mingw32/lib"); SEARCH_DIR("/mingw/lib"); SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/lib"); SEARCH_DIR("/usr/lib");
+SECTIONS
+{
+  .text  :
+  {
+    *(.text)
+    *(.glue_7t)
+    *(.glue_7)
+     ___CTOR_LIST__ = .; __CTOR_LIST__ = . ;
+			LONG (-1);*(.ctors); *(.ctor); *(SORT(.ctors.*));  LONG (0);
+     ___DTOR_LIST__ = .; __DTOR_LIST__ = . ;
+			LONG (-1); *(.dtors); *(.dtor); *(SORT(.dtors.*));  LONG (0);
+    /* ??? Why is .gcc_exc here?  */
+  }
+  /* The Cygwin32 library uses a section to avoid copying certain data
+     on fork.  This used to be named ".data".  The linker used
+     to include this between __data_start__ and __data_end__, but that
+     breaks building the cygwin32 dll.  Instead, we name the section
+     ".data_cygwin_nocopy" and explicitly include it after __data_end__. */
+  .data  :
+  {
+    *(.data)
+    *(.data2)
+    *(.jcr)
+  }
+  .rdata  :
+  {
+    *(.rdata)
+    *(.rdata_runtime_pseudo_reloc)
+  }
+  .eh_frame  :
+  {
+    *(.eh_frame*)
+  }
+  .pdata  :
+  {
+    *(.pdata)
+  }
+  .bss  :
+  {
+    *(.bss)
+    *(COMMON)
+  }
+  .edata  :
+  {
+    *(.edata)
+  }
+  /DISCARD/ :
+  {
+    *(.debug$S)
+    *(.debug$T)
+    *(.debug$F)
+    *(.drectve)
+  }
+  .idata  :
+  {
+    /* This cannot currently be handled with grouped sections.
+	See pe.em:sort_sections.  */
+  }
+  .CRT  :
+  {
+    /* ___crt_xl_end__ is defined in the TLS Directory support code */
+  }
+  /* Windows TLS expects .tls$AAA to be at the start and .tls$ZZZ to be
+     at the end of section.  This is important because _tls_start MUST
+     be at the beginning of the section to enable SECREL32 relocations with TLS
+     data.  */
+  .tls  :
+  {
+  }
+  .endjunk  :
+  {
+    /* end is deprecated, don't use it */
+  }
+  .rsrc  : SUBALIGN(4)
+  {
+    *(.rsrc)
+  }
+  .reloc  :
+  {
+    *(.reloc)
+  }
+  .stab   :
+  {
+    *(.stab)
+  }
+  .stabstr   :
+  {
+    *(.stabstr)
+  }
+  /* DWARF debug sections.
+     Symbols in the DWARF debugging sections are relative to the beginning
+     of the section.  Unlike other targets that fake this by putting the
+     section VMA at 0, the PE format will not allow it.  */
+  /* DWARF 1.1 and DWARF 2.  */
+  .debug_aranges   :
+  {
+    *(.debug_aranges)
+  }
+  .zdebug_aranges   :
+  {
+    *(.zdebug_aranges)
+  }
+  .debug_pubnames   :
+  {
+    *(.debug_pubnames)
+  }
+  .zdebug_pubnames   :
+  {
+    *(.zdebug_pubnames)
+  }
+  .debug_pubtypes   :
+  {
+    *(.debug_pubtypes)
+  }
+  .zdebug_pubtypes   :
+  {
+    *(.zdebug_pubtypes)
+  }
+  /* DWARF 2.  */
+  .debug_info   :
+  {
+    *(.debug_info)
+  }
+  .zdebug_info   :
+  {
+    *(.zdebug_info)
+  }
+  .debug_abbrev   :
+  {
+    *(.debug_abbrev)
+  }
+  .zdebug_abbrev   :
+  {
+    *(.zdebug_abbrev)
+  }
+  .debug_line   :
+  {
+    *(.debug_line)
+  }
+  .zdebug_line   :
+  {
+    *(.zdebug_line)
+  }
+  .debug_frame   :
+  {
+    *(.debug_frame*)
+  }
+  .zdebug_frame   :
+  {
+    *(.zdebug_frame*)
+  }
+  .debug_str   :
+  {
+    *(.debug_str)
+  }
+  .zdebug_str   :
+  {
+    *(.zdebug_str)
+  }
+  .debug_loc   :
+  {
+    *(.debug_loc)
+  }
+  .zdebug_loc   :
+  {
+    *(.zdebug_loc)
+  }
+  .debug_macinfo   :
+  {
+    *(.debug_macinfo)
+  }
+  .zdebug_macinfo   :
+  {
+    *(.zdebug_macinfo)
+  }
+  /* SGI/MIPS DWARF 2 extensions.  */
+  .debug_weaknames   :
+  {
+    *(.debug_weaknames)
+  }
+  .zdebug_weaknames   :
+  {
+    *(.zdebug_weaknames)
+  }
+  .debug_funcnames   :
+  {
+    *(.debug_funcnames)
+  }
+  .zdebug_funcnames   :
+  {
+    *(.zdebug_funcnames)
+  }
+  .debug_typenames   :
+  {
+    *(.debug_typenames)
+  }
+  .zdebug_typenames   :
+  {
+    *(.zdebug_typenames)
+  }
+  .debug_varnames   :
+  {
+    *(.debug_varnames)
+  }
+  .zdebug_varnames   :
+  {
+    *(.zdebug_varnames)
+  }
+  .debug_macro   :
+  {
+    *(.debug_macro)
+  }
+  .zdebug_macro   :
+  {
+    *(.zdebug_macro)
+  }
+  /* DWARF 3.  */
+  .debug_ranges   :
+  {
+    *(.debug_ranges)
+  }
+  .zdebug_ranges   :
+  {
+    *(.zdebug_ranges)
+  }
+  /* DWARF 4.  */
+  .debug_types   :
+  {
+    *(.debug_types)
+  }
+  .zdebug_types   :
+  {
+    *(.zdebug_types)
+  }
+}
Index: Daodan/MinGW/msys/1.0/bin/bashbug
===================================================================
--- Daodan/MinGW/msys/1.0/bin/bashbug	(revision 1046)
+++ Daodan/MinGW/msys/1.0/bin/bashbug	(revision 1046)
@@ -0,0 +1,272 @@
+#!/bin/sh -
+#
+# bashbug - create a bug report and mail it to the bug address
+#
+# The bug address depends on the release status of the shell.  Versions
+# with status `devel', `alpha', `beta', or `rc' mail bug reports to
+# chet@cwru.edu and, optionally, to bash-testers@cwru.edu.
+# Other versions send mail to bug-bash@gnu.org.
+#
+# Copyright (C) 1996-2004 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA.
+
+#
+# configuration section:
+#	these variables are filled in by the make target in Makefile
+#
+MACHINE="i686"
+OS="msys"
+CC="gcc"
+CFLAGS=" -DPROGRAM='bash.exe' -DCONF_HOSTTYPE='i686' -DCONF_OSTYPE='msys' -DCONF_MACHTYPE='i686-pc-msys' -DCONF_VENDOR='pc' -DLOCALEDIR='/usr/share/locale' -DPACKAGE='bash' -DSHELL -DHAVE_CONFIG_H -DRECYCLES_PIDS   -I.  -I/c/projetos/msys-bash/bash3/bash-3.1 -I/c/projetos/msys-bash/bash3/bash-3.1/include -I/c/projetos/msys-bash/bash3/bash-3.1/lib   -O2 -fno-unit-at-a-time -s -march=i386 -mtune=i686"
+RELEASE="3.1"
+PATCHLEVEL="23"
+RELSTATUS="release"
+MACHTYPE="i686-pc-msys"
+
+PATH=/bin:/usr/bin:/usr/local/bin:$PATH
+export PATH
+
+# Check if TMPDIR is set, default to /tmp
+: ${TMPDIR:=/tmp}
+
+#Securely create a temporary directory for the temporary files
+TEMPDIR=$TMPDIR/bbug.$$
+(umask 077 && mkdir $TEMPDIR) || {
+	echo "$0: could not create temporary directory" >&2
+	exit 1
+}
+
+TEMPFILE1=$TEMPDIR/bbug1
+TEMPFILE2=$TEMPDIR/bbug2
+        
+USAGE="Usage: $0 [--help] [--version] [bug-report-email-address]"
+VERSTR="GNU bashbug, version ${RELEASE}.${PATCHLEVEL}-${RELSTATUS}"
+
+do_help= do_version=
+
+while [ $# -gt 0 ]; do
+	case "$1" in
+	--help)		shift ; do_help=y ;;
+	--version)	shift ; do_version=y ;;
+	--)		shift ; break ;;
+	-*)		echo "bashbug: ${1}: invalid option" >&2
+			echo "$USAGE" >& 2
+			exit 2 ;;
+	*)		break ;;
+	esac
+done
+
+if [ -n "$do_version" ]; then
+	echo "${VERSTR}"
+	exit 0
+fi
+
+if [ -n "$do_help" ]; then
+	echo "${VERSTR}"
+	echo "${USAGE}"
+	echo
+	cat << HERE_EOF
+Bashbug is used to send mail to the Bash maintainers
+for when Bash doesn't behave like you'd like, or expect.
+
+Bashbug will start up your editor (as defined by the shell's
+EDITOR environment variable) with a preformatted bug report
+template for you to fill in. The report will be mailed to the
+bash maintainers by default. See the manual for details.
+
+If you invoke bashbug by accident, just quit your editor without
+saving any changes to the template, and no bug report will be sent.
+HERE_EOF
+	exit 0
+fi
+
+# Figure out how to echo a string without a trailing newline
+N=`echo 'hi there\c'`
+case "$N" in
+*c)	n=-n c= ;;
+*)	n= c='\c' ;;
+esac
+
+BASHTESTERS="bash-testers@cwru.edu"
+
+case "$RELSTATUS" in
+alpha*|beta*|devel*|rc*)	BUGBASH=chet@cwru.edu ;;
+*)				BUGBASH=bug-bash@gnu.org ;;
+esac
+
+case "$RELSTATUS" in
+alpha*|beta*|devel*|rc*)
+		echo "$0: This is a testing release.  Would you like your bug report"
+		echo "$0: to be sent to the bash-testers mailing list?"
+		echo $n "$0: Send to bash-testers? $c"
+		read ans
+		case "$ans" in
+		y*|Y*)	BUGBASH="${BUGBASH},${BASHTESTERS}" ;;
+		esac ;;
+esac
+
+BUGADDR="${1-$BUGBASH}"
+
+if [ -z "$DEFEDITOR" ] && [ -z "$EDITOR" ]; then
+	if [ -x /usr/bin/editor ]; then
+		DEFEDITOR=editor
+	elif [ -x /usr/local/bin/ce ]; then
+		DEFEDITOR=ce
+	elif [ -x /usr/local/bin/emacs ]; then
+		DEFEDITOR=emacs
+	elif [ -x /usr/contrib/bin/emacs ]; then
+		DEFEDITOR=emacs
+	elif [ -x /usr/bin/emacs ]; then
+		DEFEDITOR=emacs
+	elif [ -x /usr/bin/xemacs ]; then
+		DEFEDITOR=xemacs
+	elif [ -x /usr/contrib/bin/jove ]; then
+		DEFEDITOR=jove
+	elif [ -x /usr/local/bin/jove ]; then
+		DEFEDITOR=jove
+	elif [ -x /usr/bin/vi ]; then
+		DEFEDITOR=vi
+	else
+		echo "$0: No default editor found: attempting to use vi" >&2
+		DEFEDITOR=vi
+	fi
+fi
+
+
+: ${EDITOR=$DEFEDITOR}
+
+: ${USER=${LOGNAME-`whoami`}}
+
+trap 'rm -rf "$TEMPDIR"; exit 1' 1 2 3 13 15
+trap 'rm -rf "$TEMPDIR"' 0
+
+UN=
+if (uname) >/dev/null 2>&1; then
+	UN=`uname -a`
+fi
+
+if [ -f /usr/lib/sendmail ] ; then
+	RMAIL="/usr/lib/sendmail"
+	SMARGS="-i -t"
+elif [ -f /usr/sbin/sendmail ] ; then
+	RMAIL="/usr/sbin/sendmail"
+	SMARGS="-i -t"
+else
+	RMAIL=rmail
+	SMARGS="$BUGADDR"
+fi
+
+INITIAL_SUBJECT='[50 character or so descriptive subject here (for reference)]'
+
+cat > "$TEMPFILE1" <<EOF
+From: ${USER}
+To: ${BUGADDR}
+Subject: ${INITIAL_SUBJECT}
+
+Configuration Information [Automatically generated, do not change]:
+Machine: $MACHINE
+OS: $OS
+Compiler: $CC
+Compilation CFLAGS: $CFLAGS
+uname output: $UN
+Machine Type: $MACHTYPE
+
+Bash Version: $RELEASE
+Patch Level: $PATCHLEVEL
+Release Status: $RELSTATUS
+
+Description:
+	[Detailed description of the problem, suggestion, or complaint.]
+
+Repeat-By:
+	[Describe the sequence of events that causes the problem
+	to occur.]
+
+Fix:
+	[Description of how to fix the problem.  If you don't know a
+	fix for the problem, don't include this section.]
+EOF
+
+cp "$TEMPFILE1" "$TEMPFILE2"
+chmod u+w "$TEMPFILE1"
+
+trap '' 2		# ignore interrupts while in editor
+
+edstat=1
+while [ $edstat -ne 0 ]; do
+	$EDITOR "$TEMPFILE1"
+	edstat=$?
+
+	if [ $edstat -ne 0 ]; then
+		echo "$0: editor \`$EDITOR' exited with nonzero status."
+		echo "$0: Perhaps it was interrupted."
+		echo "$0: Type \`y' to give up, and lose your bug report;"
+		echo "$0: type \`n' to re-enter the editor."
+		echo $n "$0: Do you want to give up? $c"
+
+		read ans
+		case "$ans" in
+		[Yy]*) exit 1 ;;
+		esac
+
+		continue
+	fi
+
+	# find the subject from the temp file and see if it's been changed
+	CURR_SUB=`grep '^Subject: ' "$TEMPFILE1" | sed 's|^Subject:[ 	]*||' | sed 1q`
+
+	case "$CURR_SUB" in
+	"${INITIAL_SUBJECT}")
+		echo
+		echo "$0: You have not changed the subject from the default."
+		echo "$0: Please use a more descriptive subject header."
+		echo "$0: Type \`y' to give up, and lose your bug report;"
+		echo "$0: type \`n' to re-enter the editor."
+		echo $n "$0: Do you want to give up? $c"
+
+		read ans
+		case "$ans" in
+		[Yy]*) exit 1 ;;
+		esac
+
+		echo "$0:  The editor will be restarted in five seconds."
+		sleep 5
+		edstat=1
+		;;
+	esac
+
+done
+
+trap 'rm -rf "$TEMPDIR"; exit 1' 2	# restore trap on SIGINT
+
+if cmp -s "$TEMPFILE1" "$TEMPFILE2"
+then
+	echo "File not changed, no bug report submitted."
+	exit
+fi
+
+echo $n "Send bug report? [y/n] $c"
+read ans
+case "$ans" in
+[Nn]*)	exit 0 ;;
+esac
+
+${RMAIL} $SMARGS < "$TEMPFILE1" || {
+	cat "$TEMPFILE1" >> $HOME/dead.bashbug
+	echo "$0: mail failed: report saved in $HOME/dead.bashbug" >&2
+}
+
+exit 0
Index: Daodan/MinGW/msys/1.0/bin/bzcmp
===================================================================
--- Daodan/MinGW/msys/1.0/bin/bzcmp	(revision 1046)
+++ Daodan/MinGW/msys/1.0/bin/bzcmp	(revision 1046)
@@ -0,0 +1,76 @@
+#!/bin/sh
+# sh is buggy on RS/6000 AIX 3.2. Replace above line with #!/bin/ksh
+
+# Bzcmp/diff wrapped for bzip2, 
+# adapted from zdiff by Philippe Troin <phil@fifi.org> for Debian GNU/Linux.
+
+# Bzcmp and bzdiff are used to invoke the cmp or the  diff  pro-
+# gram  on compressed files.  All options specified are passed
+# directly to cmp or diff.  If only 1 file is specified,  then
+# the  files  compared  are file1 and an uncompressed file1.gz.
+# If two files are specified, then they are  uncompressed  (if
+# necessary) and fed to cmp or diff.  The exit status from cmp
+# or diff is preserved.
+
+PATH="/usr/bin:/bin:$PATH"; export PATH
+prog=`echo $0 | sed 's|.*/||'`
+case "$prog" in
+  *cmp) comp=${CMP-cmp}   ;;
+  *)    comp=${DIFF-diff} ;;
+esac
+
+OPTIONS=
+FILES=
+for ARG
+do
+    case "$ARG" in
+    -*)	OPTIONS="$OPTIONS $ARG";;
+     *)	if test -f "$ARG"; then
+            FILES="$FILES $ARG"
+        else
+            echo "${prog}: $ARG not found or not a regular file"
+	    exit 1
+        fi ;;
+    esac
+done
+if test -z "$FILES"; then
+	echo "Usage: $prog [${comp}_options] file [file]"
+	exit 1
+fi
+tmp=`mktemp ${TMPDIR:-/tmp}/bzdiff.XXXXXXXXXX` || {
+      echo 'cannot create a temporary file' >&2
+      exit 1
+}
+set $FILES
+if test $# -eq 1; then
+	FILE=`echo "$1" | sed 's/.bz2$//'`
+	bzip2 -cd "$FILE.bz2" | $comp $OPTIONS - "$FILE"
+	STAT="$?"
+
+elif test $# -eq 2; then
+	case "$1" in
+        *.bz2)
+                case "$2" in
+	        *.bz2)
+			F=`echo "$2" | sed 's|.*/||;s|.bz2$||'`
+                        bzip2 -cdfq "$2" > $tmp
+                        bzip2 -cdfq "$1" | $comp $OPTIONS - $tmp
+                        STAT="$?"
+			/bin/rm -f $tmp;;
+
+                *)      bzip2 -cdfq "$1" | $comp $OPTIONS - "$2"
+                        STAT="$?";;
+                esac;;
+        *)      case "$2" in
+	        *.bz2)
+                        bzip2 -cdfq "$2" | $comp $OPTIONS "$1" -
+                        STAT="$?";;
+                *)      $comp $OPTIONS "$1" "$2"
+                        STAT="$?";;
+                esac;;
+	esac
+        exit "$STAT"
+else
+	echo "Usage: $prog [${comp}_options] file [file]"
+	exit 1
+fi
Index: Daodan/MinGW/msys/1.0/bin/bzdiff
===================================================================
--- Daodan/MinGW/msys/1.0/bin/bzdiff	(revision 1046)
+++ Daodan/MinGW/msys/1.0/bin/bzdiff	(revision 1046)
@@ -0,0 +1,76 @@
+#!/bin/sh
+# sh is buggy on RS/6000 AIX 3.2. Replace above line with #!/bin/ksh
+
+# Bzcmp/diff wrapped for bzip2, 
+# adapted from zdiff by Philippe Troin <phil@fifi.org> for Debian GNU/Linux.
+
+# Bzcmp and bzdiff are used to invoke the cmp or the  diff  pro-
+# gram  on compressed files.  All options specified are passed
+# directly to cmp or diff.  If only 1 file is specified,  then
+# the  files  compared  are file1 and an uncompressed file1.gz.
+# If two files are specified, then they are  uncompressed  (if
+# necessary) and fed to cmp or diff.  The exit status from cmp
+# or diff is preserved.
+
+PATH="/usr/bin:/bin:$PATH"; export PATH
+prog=`echo $0 | sed 's|.*/||'`
+case "$prog" in
+  *cmp) comp=${CMP-cmp}   ;;
+  *)    comp=${DIFF-diff} ;;
+esac
+
+OPTIONS=
+FILES=
+for ARG
+do
+    case "$ARG" in
+    -*)	OPTIONS="$OPTIONS $ARG";;
+     *)	if test -f "$ARG"; then
+            FILES="$FILES $ARG"
+        else
+            echo "${prog}: $ARG not found or not a regular file"
+	    exit 1
+        fi ;;
+    esac
+done
+if test -z "$FILES"; then
+	echo "Usage: $prog [${comp}_options] file [file]"
+	exit 1
+fi
+tmp=`mktemp ${TMPDIR:-/tmp}/bzdiff.XXXXXXXXXX` || {
+      echo 'cannot create a temporary file' >&2
+      exit 1
+}
+set $FILES
+if test $# -eq 1; then
+	FILE=`echo "$1" | sed 's/.bz2$//'`
+	bzip2 -cd "$FILE.bz2" | $comp $OPTIONS - "$FILE"
+	STAT="$?"
+
+elif test $# -eq 2; then
+	case "$1" in
+        *.bz2)
+                case "$2" in
+	        *.bz2)
+			F=`echo "$2" | sed 's|.*/||;s|.bz2$||'`
+                        bzip2 -cdfq "$2" > $tmp
+                        bzip2 -cdfq "$1" | $comp $OPTIONS - $tmp
+                        STAT="$?"
+			/bin/rm -f $tmp;;
+
+                *)      bzip2 -cdfq "$1" | $comp $OPTIONS - "$2"
+                        STAT="$?";;
+                esac;;
+        *)      case "$2" in
+	        *.bz2)
+                        bzip2 -cdfq "$2" | $comp $OPTIONS "$1" -
+                        STAT="$?";;
+                *)      $comp $OPTIONS "$1" "$2"
+                        STAT="$?";;
+                esac;;
+	esac
+        exit "$STAT"
+else
+	echo "Usage: $prog [${comp}_options] file [file]"
+	exit 1
+fi
Index: Daodan/MinGW/msys/1.0/bin/bzegrep
===================================================================
--- Daodan/MinGW/msys/1.0/bin/bzegrep	(revision 1046)
+++ Daodan/MinGW/msys/1.0/bin/bzegrep	(revision 1046)
@@ -0,0 +1,132 @@
+#!/bin/sh
+
+# bzgrep -- a wrapper around a grep program that decompresses files as needed
+# Adapted from zgrep of the Debian gzip package by Anibal Monsalve Salazar. 
+# Adapted from a version sent by Charles Levert <charles@comm.polymtl.ca>
+
+# Copyright (C) 1998, 2001, 2002 Free Software Foundation
+# Copyright (C) 1993 Jean-loup Gailly
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+PATH="/usr/bin:$PATH"; export PATH
+
+prog=`echo "$0" | sed 's|.*/||'`
+case "$prog" in
+	*egrep)	grep=${EGREP-egrep}	;;
+	*fgrep)	grep=${FGREP-fgrep}	;;
+	*)	grep=${GREP-grep}	;;
+esac
+
+pat=""
+after_dash_dash=""
+files_with_matches=0
+files_without_matches=0
+no_filename=0
+with_filename=0
+
+while test $# -ne 0; do
+  case "$after_dash_dash$1" in
+  --d* | --rec*)	echo >&2 "$0: $1: option not supported"; exit 2;;
+  --files-with-*)	files_with_matches=1;;
+  --files-witho*)	files_without_matches=1;;
+  --no-f*)	no_filename=1;;
+  --wi*)	with_filename=1;;
+  --*)	;;
+  -*)
+	case "$1" in
+	-*[dr]*) echo >&2 "$0: $1: option not supported"; exit 2;;
+	esac
+	case "$1" in
+	-*H*)	with_filename=1;;
+	esac
+	case "$1" in
+	-*h*)	no_filename=1;;
+	esac
+	case "$1" in
+	-*L*)	files_without_matches=1;;
+	esac
+	case "$1" in
+	-*l*)	files_with_matches=1;;
+	esac;;
+  esac
+  case "$after_dash_dash$1" in
+  -[ef])   opt="$opt $1"; shift; pat="$1"
+           if test "$grep" = grep; then  # grep is buggy with -e on SVR4
+             grep=egrep
+           fi;;
+  -[ABCdm])opt="$opt $1 $2"; shift;;
+  --)      opt="$opt $1"; after_dash_dash=1;;
+  -*)	   opt="$opt $1";;
+   *)      if test -z "$pat"; then
+	     pat="$1"
+	   else
+	     break;
+           fi;;
+  esac
+  shift
+done
+
+if test -z "$pat"; then
+  echo "grep through bzip2 files"
+  echo "usage: $prog [grep_options] pattern [files]"
+  exit 2
+fi
+
+if test $# -eq 0; then
+  bzip2 -cdfq | $grep $opt "$pat"
+  exit $?
+fi
+
+res=0
+for i do
+  bzip2 -cdfq -- "$i" |
+    if test $files_with_matches -eq 1; then
+      $grep $opt "$pat" > /dev/null && printf "%s\n" "$i"
+    elif test $files_without_matches -eq 1; then
+      $grep $opt "$pat" > /dev/null || printf "%s\n" "$i"
+    elif test $with_filename -eq 0 && { test $# -eq 1 || test $no_filename -eq 1; }; then
+      $grep $opt "$pat"
+    else
+      i=$(echo "$i" | sed -e 's/[\\|&]/\\&/g')
+      if test $with_filename -eq 1; then
+	sed_script="s|^[^:]*:|${i}:|"
+      else
+	sed_script="s|^|${i}:|"
+      fi
+      # Hack adapted from GPLed code at
+      # http://home.comcast.net/~j.p.h/cus-faq-2
+      # Has the same effect as the following two lines of bash:
+      #
+      # $grep $opt "$pat" | sed "$sed_script"
+      # exit ${PIPESTATUS[0]}
+      #
+      # Inside the `...`, fd4 goes to the pipe whose other end is read
+      # and passed to eval; fd1 is the normal standard output
+      # preserved the line before with exec 3>&1
+      exec 3>&1
+      eval `
+      exec 4>&1 >&3 3>&-
+      {
+       $grep $opt "$pat" 4>&-; echo "r=$?;" >&4
+      } | sed "$sed_script"
+      `
+      exit $r
+    fi
+  r=$?
+  test $res -lt $r && res=$r
+done
+exit $res
Index: Daodan/MinGW/msys/1.0/bin/bzfgrep
===================================================================
--- Daodan/MinGW/msys/1.0/bin/bzfgrep	(revision 1046)
+++ Daodan/MinGW/msys/1.0/bin/bzfgrep	(revision 1046)
@@ -0,0 +1,132 @@
+#!/bin/sh
+
+# bzgrep -- a wrapper around a grep program that decompresses files as needed
+# Adapted from zgrep of the Debian gzip package by Anibal Monsalve Salazar. 
+# Adapted from a version sent by Charles Levert <charles@comm.polymtl.ca>
+
+# Copyright (C) 1998, 2001, 2002 Free Software Foundation
+# Copyright (C) 1993 Jean-loup Gailly
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+PATH="/usr/bin:$PATH"; export PATH
+
+prog=`echo "$0" | sed 's|.*/||'`
+case "$prog" in
+	*egrep)	grep=${EGREP-egrep}	;;
+	*fgrep)	grep=${FGREP-fgrep}	;;
+	*)	grep=${GREP-grep}	;;
+esac
+
+pat=""
+after_dash_dash=""
+files_with_matches=0
+files_without_matches=0
+no_filename=0
+with_filename=0
+
+while test $# -ne 0; do
+  case "$after_dash_dash$1" in
+  --d* | --rec*)	echo >&2 "$0: $1: option not supported"; exit 2;;
+  --files-with-*)	files_with_matches=1;;
+  --files-witho*)	files_without_matches=1;;
+  --no-f*)	no_filename=1;;
+  --wi*)	with_filename=1;;
+  --*)	;;
+  -*)
+	case "$1" in
+	-*[dr]*) echo >&2 "$0: $1: option not supported"; exit 2;;
+	esac
+	case "$1" in
+	-*H*)	with_filename=1;;
+	esac
+	case "$1" in
+	-*h*)	no_filename=1;;
+	esac
+	case "$1" in
+	-*L*)	files_without_matches=1;;
+	esac
+	case "$1" in
+	-*l*)	files_with_matches=1;;
+	esac;;
+  esac
+  case "$after_dash_dash$1" in
+  -[ef])   opt="$opt $1"; shift; pat="$1"
+           if test "$grep" = grep; then  # grep is buggy with -e on SVR4
+             grep=egrep
+           fi;;
+  -[ABCdm])opt="$opt $1 $2"; shift;;
+  --)      opt="$opt $1"; after_dash_dash=1;;
+  -*)	   opt="$opt $1";;
+   *)      if test -z "$pat"; then
+	     pat="$1"
+	   else
+	     break;
+           fi;;
+  esac
+  shift
+done
+
+if test -z "$pat"; then
+  echo "grep through bzip2 files"
+  echo "usage: $prog [grep_options] pattern [files]"
+  exit 2
+fi
+
+if test $# -eq 0; then
+  bzip2 -cdfq | $grep $opt "$pat"
+  exit $?
+fi
+
+res=0
+for i do
+  bzip2 -cdfq -- "$i" |
+    if test $files_with_matches -eq 1; then
+      $grep $opt "$pat" > /dev/null && printf "%s\n" "$i"
+    elif test $files_without_matches -eq 1; then
+      $grep $opt "$pat" > /dev/null || printf "%s\n" "$i"
+    elif test $with_filename -eq 0 && { test $# -eq 1 || test $no_filename -eq 1; }; then
+      $grep $opt "$pat"
+    else
+      i=$(echo "$i" | sed -e 's/[\\|&]/\\&/g')
+      if test $with_filename -eq 1; then
+	sed_script="s|^[^:]*:|${i}:|"
+      else
+	sed_script="s|^|${i}:|"
+      fi
+      # Hack adapted from GPLed code at
+      # http://home.comcast.net/~j.p.h/cus-faq-2
+      # Has the same effect as the following two lines of bash:
+      #
+      # $grep $opt "$pat" | sed "$sed_script"
+      # exit ${PIPESTATUS[0]}
+      #
+      # Inside the `...`, fd4 goes to the pipe whose other end is read
+      # and passed to eval; fd1 is the normal standard output
+      # preserved the line before with exec 3>&1
+      exec 3>&1
+      eval `
+      exec 4>&1 >&3 3>&-
+      {
+       $grep $opt "$pat" 4>&-; echo "r=$?;" >&4
+      } | sed "$sed_script"
+      `
+      exit $r
+    fi
+  r=$?
+  test $res -lt $r && res=$r
+done
+exit $res
Index: Daodan/MinGW/msys/1.0/bin/bzgrep
===================================================================
--- Daodan/MinGW/msys/1.0/bin/bzgrep	(revision 1046)
+++ Daodan/MinGW/msys/1.0/bin/bzgrep	(revision 1046)
@@ -0,0 +1,132 @@
+#!/bin/sh
+
+# bzgrep -- a wrapper around a grep program that decompresses files as needed
+# Adapted from zgrep of the Debian gzip package by Anibal Monsalve Salazar. 
+# Adapted from a version sent by Charles Levert <charles@comm.polymtl.ca>
+
+# Copyright (C) 1998, 2001, 2002 Free Software Foundation
+# Copyright (C) 1993 Jean-loup Gailly
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+PATH="/usr/bin:$PATH"; export PATH
+
+prog=`echo "$0" | sed 's|.*/||'`
+case "$prog" in
+	*egrep)	grep=${EGREP-egrep}	;;
+	*fgrep)	grep=${FGREP-fgrep}	;;
+	*)	grep=${GREP-grep}	;;
+esac
+
+pat=""
+after_dash_dash=""
+files_with_matches=0
+files_without_matches=0
+no_filename=0
+with_filename=0
+
+while test $# -ne 0; do
+  case "$after_dash_dash$1" in
+  --d* | --rec*)	echo >&2 "$0: $1: option not supported"; exit 2;;
+  --files-with-*)	files_with_matches=1;;
+  --files-witho*)	files_without_matches=1;;
+  --no-f*)	no_filename=1;;
+  --wi*)	with_filename=1;;
+  --*)	;;
+  -*)
+	case "$1" in
+	-*[dr]*) echo >&2 "$0: $1: option not supported"; exit 2;;
+	esac
+	case "$1" in
+	-*H*)	with_filename=1;;
+	esac
+	case "$1" in
+	-*h*)	no_filename=1;;
+	esac
+	case "$1" in
+	-*L*)	files_without_matches=1;;
+	esac
+	case "$1" in
+	-*l*)	files_with_matches=1;;
+	esac;;
+  esac
+  case "$after_dash_dash$1" in
+  -[ef])   opt="$opt $1"; shift; pat="$1"
+           if test "$grep" = grep; then  # grep is buggy with -e on SVR4
+             grep=egrep
+           fi;;
+  -[ABCdm])opt="$opt $1 $2"; shift;;
+  --)      opt="$opt $1"; after_dash_dash=1;;
+  -*)	   opt="$opt $1";;
+   *)      if test -z "$pat"; then
+	     pat="$1"
+	   else
+	     break;
+           fi;;
+  esac
+  shift
+done
+
+if test -z "$pat"; then
+  echo "grep through bzip2 files"
+  echo "usage: $prog [grep_options] pattern [files]"
+  exit 2
+fi
+
+if test $# -eq 0; then
+  bzip2 -cdfq | $grep $opt "$pat"
+  exit $?
+fi
+
+res=0
+for i do
+  bzip2 -cdfq -- "$i" |
+    if test $files_with_matches -eq 1; then
+      $grep $opt "$pat" > /dev/null && printf "%s\n" "$i"
+    elif test $files_without_matches -eq 1; then
+      $grep $opt "$pat" > /dev/null || printf "%s\n" "$i"
+    elif test $with_filename -eq 0 && { test $# -eq 1 || test $no_filename -eq 1; }; then
+      $grep $opt "$pat"
+    else
+      i=$(echo "$i" | sed -e 's/[\\|&]/\\&/g')
+      if test $with_filename -eq 1; then
+	sed_script="s|^[^:]*:|${i}:|"
+      else
+	sed_script="s|^|${i}:|"
+      fi
+      # Hack adapted from GPLed code at
+      # http://home.comcast.net/~j.p.h/cus-faq-2
+      # Has the same effect as the following two lines of bash:
+      #
+      # $grep $opt "$pat" | sed "$sed_script"
+      # exit ${PIPESTATUS[0]}
+      #
+      # Inside the `...`, fd4 goes to the pipe whose other end is read
+      # and passed to eval; fd1 is the normal standard output
+      # preserved the line before with exec 3>&1
+      exec 3>&1
+      eval `
+      exec 4>&1 >&3 3>&-
+      {
+       $grep $opt "$pat" 4>&-; echo "r=$?;" >&4
+      } | sed "$sed_script"
+      `
+      exit $r
+    fi
+  r=$?
+  test $res -lt $r && res=$r
+done
+exit $res
Index: Daodan/MinGW/msys/1.0/bin/bzless
===================================================================
--- Daodan/MinGW/msys/1.0/bin/bzless	(revision 1046)
+++ Daodan/MinGW/msys/1.0/bin/bzless	(revision 1046)
@@ -0,0 +1,61 @@
+#!/bin/sh
+
+# Bzmore wrapped for bzip2, 
+# adapted from zmore by Philippe Troin <phil@fifi.org> for Debian GNU/Linux.
+
+PATH="/usr/bin:$PATH"; export PATH
+
+prog=`echo $0 | sed 's|.*/||'`
+case "$prog" in
+	*less)	more=less	;;
+	*)	more=more       ;;
+esac
+
+if test "`echo -n a`" = "-n a"; then
+  # looks like a SysV system:
+  n1=''; n2='\c'
+else
+  n1='-n'; n2=''
+fi
+oldtty=`stty -g 2>/dev/null`
+if stty -cbreak 2>/dev/null; then
+  cb='cbreak'; ncb='-cbreak'
+else
+  # 'stty min 1' resets eof to ^a on both SunOS and SysV!
+  cb='min 1 -icanon'; ncb='icanon eof ^d'
+fi
+if test $? -eq 0 && test -n "$oldtty"; then
+   trap 'stty $oldtty 2>/dev/null; exit' 0 INT QUIT TRAP USR1 PIPE TERM
+else
+   trap 'stty $ncb echo 2>/dev/null; exit' 0 INT QUIT TRAP USR1 PIPE TERM
+fi
+
+if test $# = 0; then
+    if test -t 0; then
+	echo usage: $prog files...
+    else
+	bzip2 -cdfq | eval $more
+    fi
+else
+    FIRST=1
+    for FILE
+    do
+	if test $FIRST -eq 0; then
+		echo $n1 "--More--(Next file: $FILE)$n2"
+		stty $cb -echo 2>/dev/null
+		ANS=`dd bs=1 count=1 2>/dev/null` 
+		stty $ncb echo 2>/dev/null
+		echo " "
+		if test "$ANS" = 'e' || test "$ANS" = 'q'; then
+			exit
+		fi
+	fi
+	if test "$ANS" != 's'; then
+		echo "------> $FILE <------"
+		bzip2 -cdfq "$FILE" | eval $more
+	fi
+	if test -t; then
+		FIRST=0
+	fi
+    done
+fi
Index: Daodan/MinGW/msys/1.0/bin/bzmore
===================================================================
--- Daodan/MinGW/msys/1.0/bin/bzmore	(revision 1046)
+++ Daodan/MinGW/msys/1.0/bin/bzmore	(revision 1046)
@@ -0,0 +1,61 @@
+#!/bin/sh
+
+# Bzmore wrapped for bzip2, 
+# adapted from zmore by Philippe Troin <phil@fifi.org> for Debian GNU/Linux.
+
+PATH="/usr/bin:$PATH"; export PATH
+
+prog=`echo $0 | sed 's|.*/||'`
+case "$prog" in
+	*less)	more=less	;;
+	*)	more=more       ;;
+esac
+
+if test "`echo -n a`" = "-n a"; then
+  # looks like a SysV system:
+  n1=''; n2='\c'
+else
+  n1='-n'; n2=''
+fi
+oldtty=`stty -g 2>/dev/null`
+if stty -cbreak 2>/dev/null; then
+  cb='cbreak'; ncb='-cbreak'
+else
+  # 'stty min 1' resets eof to ^a on both SunOS and SysV!
+  cb='min 1 -icanon'; ncb='icanon eof ^d'
+fi
+if test $? -eq 0 && test -n "$oldtty"; then
+   trap 'stty $oldtty 2>/dev/null; exit' 0 INT QUIT TRAP USR1 PIPE TERM
+else
+   trap 'stty $ncb echo 2>/dev/null; exit' 0 INT QUIT TRAP USR1 PIPE TERM
+fi
+
+if test $# = 0; then
+    if test -t 0; then
+	echo usage: $prog files...
+    else
+	bzip2 -cdfq | eval $more
+    fi
+else
+    FIRST=1
+    for FILE
+    do
+	if test $FIRST -eq 0; then
+		echo $n1 "--More--(Next file: $FILE)$n2"
+		stty $cb -echo 2>/dev/null
+		ANS=`dd bs=1 count=1 2>/dev/null` 
+		stty $ncb echo 2>/dev/null
+		echo " "
+		if test "$ANS" = 'e' || test "$ANS" = 'q'; then
+			exit
+		fi
+	fi
+	if test "$ANS" != 's'; then
+		echo "------> $FILE <------"
+		bzip2 -cdfq "$FILE" | eval $more
+	fi
+	if test -t; then
+		FIRST=0
+	fi
+    done
+fi
Index: Daodan/MinGW/msys/1.0/bin/cls
===================================================================
--- Daodan/MinGW/msys/1.0/bin/cls	(revision 1046)
+++ Daodan/MinGW/msys/1.0/bin/cls	(revision 1046)
@@ -0,0 +1,9 @@
+#! /bin/sh
+# Copyright (C) 2003, Earnie Boyd
+#   mailto:earnie@users.sf.net
+# This file is a part of Minimal SYStem (MSYS)
+#   http://www.mingw.org/msys.shtml
+# File: cls
+
+#Clear the screen
+echo -ne "\033[2J"
Index: Daodan/MinGW/msys/1.0/bin/clsb
===================================================================
--- Daodan/MinGW/msys/1.0/bin/clsb	(revision 1046)
+++ Daodan/MinGW/msys/1.0/bin/clsb	(revision 1046)
@@ -0,0 +1,9 @@
+#! /bin/sh
+# Copyright (C) 2003, Earnie Boyd
+#   mailto:earnie@users.sf.net
+# This file is a part of Minimal SYStem (MSYS)
+#   http://www.mingw.org/msys.shtml
+# File: clsb
+
+# Clear the screen and buffer
+echo -ne "\033c"
Index: Daodan/MinGW/msys/1.0/bin/cmd
===================================================================
--- Daodan/MinGW/msys/1.0/bin/cmd	(revision 1046)
+++ Daodan/MinGW/msys/1.0/bin/cmd	(revision 1046)
@@ -0,0 +1,8 @@
+#!/bin/sh
+# Copyright (C) 2002, Earnie Boyd
+#   mailto:earnie@users.sf.net
+# This file is part of Minimal SYStem.
+#   http://www.mingw.org/msys.shtml
+# File: cmd
+
+"$COMSPEC" "$@"
Index: Daodan/MinGW/msys/1.0/bin/ftp
===================================================================
--- Daodan/MinGW/msys/1.0/bin/ftp	(revision 1046)
+++ Daodan/MinGW/msys/1.0/bin/ftp	(revision 1046)
@@ -0,0 +1,8 @@
+#!/bin/sh
+# Copyright (C) 2002, Earnie Boyd
+#   mailto:earnie@users.sf.net
+# This file is part of Minimal SYStem.
+#   http://www.mingw.org/msys.shtml
+# File: ftp
+
+cmd //c start ftp "$@"
Index: Daodan/MinGW/msys/1.0/bin/gunzip
===================================================================
--- Daodan/MinGW/msys/1.0/bin/gunzip	(revision 1046)
+++ Daodan/MinGW/msys/1.0/bin/gunzip	(revision 1046)
@@ -0,0 +1,3 @@
+#!/bin/sh
+PATH=${GZIP_BINDIR-'/usr/bin'}:$PATH
+exec gzip -d "$@"
Index: Daodan/MinGW/msys/1.0/bin/gzexe
===================================================================
--- Daodan/MinGW/msys/1.0/bin/gzexe	(revision 1046)
+++ Daodan/MinGW/msys/1.0/bin/gzexe	(revision 1046)
@@ -0,0 +1,229 @@
+#!/bin/sh
+# gzexe: compressor for Unix executables.
+# Use this only for binaries that you do not use frequently.
+#
+# The compressed version is a shell script which decompresses itself after
+# skipping $skip lines of shell commands.  We try invoking the compressed
+# executable with the original name (for programs looking at their name).
+# We also try to retain the original file permissions on the compressed file.
+# For safety reasons, gzexe will not create setuid or setgid shell scripts.
+
+# WARNING: the first line of this file must be either : or #!/bin/sh
+# The : is required for some old versions of csh.
+# On Ultrix, /bin/sh is too buggy, change the first line to: #!/bin/sh5
+
+
+# Copyright (C) 1998, 2002, 2004, 2006, 2007 Free Software Foundation
+# Copyright (C) 1993 Jean-loup Gailly
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+tab='	'
+nl='
+'
+IFS=" $tab$nl"
+
+version='gzexe (gzip) 1.3.12
+Copyright (C) 2007 Free Software Foundation, Inc.
+This is free software.  You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+
+Written by Jean-loup Gailly.'
+
+usage="Usage: $0 [OPTION] FILE...
+Rename each FILE with a compressed version of itself, renaming FILE to FILE~.
+
+  -d             Decompress each FILE instead of compressing it.
+      --help     display this help and exit
+      --version  output version information and exit
+
+Report bugs to <bug-gzip@gnu.org>."
+
+
+PATH="${GZIP_BINDIR-'/usr/bin'}:$PATH"
+
+decomp=0
+res=0
+while :; do
+  case $1 in
+  -d) decomp=1; shift;;
+  --h*) exec echo "$usage";;
+  --v*) exec echo "$version";;
+  --) shift; break;;
+  *) break;;
+  esac
+done
+
+if test $# -eq 0; then
+  echo >&2 "$0: missing operand
+Try \`$0 --help' for more information."
+  exit 1
+fi
+
+tmp=
+trap 'res=$?
+  test -n "$tmp" && rm -f "$tmp"
+  (exit $res); exit $res
+' 0 1 2 3 5 10 13 15
+
+mktemp_status=
+
+for i do
+  case $i in
+  -*) file=./$i;;
+  *)  file=$i;;
+  esac
+  if test ! -f "$file" || test ! -r "$file"; then
+    res=$?
+    echo >&2 "$0: $i is not a readable regular file"
+    continue
+  fi
+  if test $decomp -eq 0; then
+    if sed -e 1d -e 2q "$file" | grep "^skip=[0-9][0-9]*$" >/dev/null; then
+      echo >&2 "$0: $i is already gzexe'd"
+      continue
+    fi
+  fi
+  if test -u "$file"; then
+    echo >&2 "$0: $i has setuid permission, unchanged"
+    continue
+  fi
+  if test -g "$file"; then
+    echo >&2 "$0: $i has setgid permission, unchanged"
+    continue
+  fi
+  case /$file in
+  */basename | */bash | */cat | */chmod | */cp | \
+  */dirname | */echo | */expr | */gzip | \
+  */ln | */mkdir | */mktemp | */mv | */rm | \
+  */sed | */sh | */sleep | */test | */tail)
+    echo >&2 "$0: $i might depend on itself"; continue;;
+  esac
+
+  dir=`dirname "$file"` || dir=$TMPDIR
+  test -d "$dir" && test -w "$dir" && test -x "$dir" || dir=/tmp
+  test -n "$tmp" && rm -f "$tmp"
+  if test -z "$mktemp_status"; then
+    type mktemp >/dev/null 2>&1
+    mktemp_status=$?
+  fi
+  if test $mktemp_status -eq 0; then
+    tmp=`TMPDIR=$dir mktemp -t gzexeXXXXXX`
+  else
+    tmp=$dir/gzexe$$
+  fi && { cp -p "$file" "$tmp" 2>/dev/null || cp "$file" "$tmp"; } || {
+    res=$?
+    echo >&2 "$0: cannot copy $file"
+    continue
+  }
+  if test -w "$tmp"; then
+    writable=1
+  else
+    writable=0
+    chmod u+w "$tmp" || {
+      res=$?
+      echo >&2 "$0: cannot chmod $tmp"
+      continue
+    }
+  fi
+  if test $decomp -eq 0; then
+    (cat <<'EOF' &&
+#!/bin/sh
+skip=44
+
+tab='	'
+nl='
+'
+IFS=" $tab$nl"
+
+umask=`umask`
+umask 77
+
+gztmpdir=
+trap 'res=$?
+  test -n "$gztmpdir" && rm -fr "$gztmpdir"
+  (exit $res); exit $res
+' 0 1 2 3 5 10 13 15
+
+if type mktemp >/dev/null 2>&1; then
+  gztmpdir=`mktemp -dt`
+else
+  gztmpdir=/tmp/gztmp$$; mkdir $gztmpdir
+fi || { (exit 127); exit 127; }
+
+gztmp=$gztmpdir/$0
+case $0 in
+-* | */*'
+') mkdir -p "$gztmp" && rm -r "$gztmp";;
+*/*) gztmp=$gztmpdir/`basename "$0"`;;
+esac || { (exit 127); exit 127; }
+
+case `echo X | tail -n +1 2>/dev/null` in
+X) tail_n=-n;;
+*) tail_n=;;
+esac
+if tail $tail_n +$skip <"$0" | gzip -cd > "$gztmp"; then
+  umask $umask
+  chmod 700 "$gztmp"
+  (sleep 5; rm -fr "$gztmpdir") 2>/dev/null &
+  "$gztmp" ${1+"$@"}; res=$?
+else
+  echo >&2 "Cannot decompress $0"
+  (exit 127); res=127
+fi; exit $res
+EOF
+    gzip -cv9 "$file") > "$tmp" || {
+      res=$?
+      echo >&2 "$0: compression not possible for $i, file unchanged."
+      continue
+    }
+
+  else
+    # decompression
+    skip=44
+    skip_line=`sed -e 1d -e 2q "$file"`
+    case $skip_line in
+    skip=[0-9] | skip=[0-9][0-9] | skip=[0-9][0-9][0-9])
+      eval "$skip_line";;
+    esac
+    case `echo X | tail -n +1 2>/dev/null` in
+    X) tail_n=-n;;
+    *) tail_n=;;
+    esac
+    tail $tail_n +$skip "$file" | gzip -cd > "$tmp" || {
+      res=$?
+      echo >&2 "$0: $i probably not in gzexe format, file unchanged."
+      continue
+    }
+  fi
+  test $writable -eq 1 || chmod u-w "$tmp" || {
+    res=$?
+    echo >&2 "$0: $tmp: cannot chmod"
+    continue
+  }
+  ln -f "$file" "$file~" || {
+    res=$?
+    echo >&2 "$0: cannot backup $i as $i~"
+    continue
+  }
+  mv -f "$tmp" "$file" || {
+    res=$?
+    echo >&2 "$0: cannot rename $tmp to $i"
+    continue
+  }
+  tmp=
+done
+(exit $res); exit $res
Index: Daodan/MinGW/msys/1.0/bin/igawk
===================================================================
--- Daodan/MinGW/msys/1.0/bin/igawk	(revision 1046)
+++ Daodan/MinGW/msys/1.0/bin/igawk	(revision 1046)
@@ -0,0 +1,133 @@
+#! /bin/sh
+# igawk --- like gawk but do @include processing
+#
+# Arnold Robbins, arnold@skeeve.com, Public Domain
+# July 1993
+
+if [ "$1" = debug ]
+then
+    set -x
+    shift
+fi
+
+# A literal newline, so that program text is formatted correctly
+n='
+'
+
+# Initialize variables to empty
+program=
+opts=
+
+while [ $# -ne 0 ] # loop over arguments
+do
+    case $1 in
+    --)     shift; break;;
+
+    -W)     shift
+            # The ${x?'message here'} construct prints a
+            # diagnostic if $x is the null string
+            set -- -W"${@?'missing operand'}"
+            continue;;
+
+    -[vF])  opts="$opts $1 '${2?'missing operand'}'"
+            shift;;
+
+    -[vF]*) opts="$opts '$1'" ;;
+
+    -f)     program="$program$n@include ${2?'missing operand'}"
+            shift;;
+
+    -f*)    f=`expr "$1" : '-f\(.*\)'`
+            program="$program$n@include $f";;
+
+    -[W-]file=*)
+            f=`expr "$1" : '-.file=\(.*\)'`
+            program="$program$n@include $f";;
+
+    -[W-]file)
+            program="$program$n@include ${2?'missing operand'}"
+            shift;;
+
+    -[W-]source=*)
+            t=`expr "$1" : '-.source=\(.*\)'`
+            program="$program$n$t";;
+
+    -[W-]source)
+            program="$program$n${2?'missing operand'}"
+            shift;;
+
+    -[W-]version)
+            echo igawk: version 2.0 1>&2
+            gawk --version
+            exit 0 ;;
+
+    -[W-]*) opts="$opts '$1'" ;;
+
+    *)      break;;
+    esac
+    shift
+done
+
+if [ -z "$program" ]
+then
+     program=${1?'missing program'}
+     shift
+fi
+
+# At this point, `program' has the program.
+expand_prog='
+
+function pathto(file,    i, t, junk)
+{
+    if (index(file, "/") != 0)
+        return file
+
+    for (i = 1; i <= ndirs; i++) {
+        t = (pathlist[i] "/" file)
+        if ((getline junk < t) > 0) {
+            # found it
+            close(t)
+            return t
+        }
+    }
+    return ""
+}
+BEGIN {
+    path = ENVIRON["AWKPATH"]
+    ndirs = split(path, pathlist, ":")
+    for (i = 1; i <= ndirs; i++) {
+        if (pathlist[i] == "")
+            pathlist[i] = "."
+    }
+    stackptr = 0
+    input[stackptr] = ARGV[1] # ARGV[1] is first file
+
+    for (; stackptr >= 0; stackptr--) {
+        while ((getline < input[stackptr]) > 0) {
+            if (tolower($1) != "@include") {
+                print
+                continue
+            }
+            fpath = pathto($2)
+            if (fpath == "") {
+                printf("igawk:%s:%d: cannot find %s\n",
+                    input[stackptr], FNR, $2) > "/dev/stderr"
+                continue
+            }
+            if (! (fpath in processed)) {
+                processed[fpath] = input[stackptr]
+                input[++stackptr] = fpath  # push onto stack
+            } else
+                print $2, "included in", input[stackptr],
+                    "already included in",
+                    processed[fpath] > "/dev/stderr"
+        }
+        close(input[stackptr])
+    }
+}'  # close quote ends `expand_prog' variable
+
+processed_program=`gawk -- "$expand_prog" /dev/stdin <<EOF
+$program
+EOF
+`
+eval gawk $opts -- '"$processed_program"' '"$@"'
Index: Daodan/MinGW/msys/1.0/bin/install-info.exe.manifest
===================================================================
--- Daodan/MinGW/msys/1.0/bin/install-info.exe.manifest	(revision 1046)
+++ Daodan/MinGW/msys/1.0/bin/install-info.exe.manifest	(revision 1046)
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
+  <v3:trustInfo xmlns:v3="urn:schemas-microsoft-com:asm.v3">
+    <v3:security>
+      <v3:requestedPrivileges>
+        <v3:requestedExecutionLevel level="asInvoker" />
+      </v3:requestedPrivileges>
+    </v3:security>
+  </v3:trustInfo>
+</assembly>
Index: Daodan/MinGW/msys/1.0/bin/install.exe.manifest
===================================================================
--- Daodan/MinGW/msys/1.0/bin/install.exe.manifest	(revision 1046)
+++ Daodan/MinGW/msys/1.0/bin/install.exe.manifest	(revision 1046)
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
+  <v3:trustInfo xmlns:v3="urn:schemas-microsoft-com:asm.v3">
+    <v3:security>
+      <v3:requestedPrivileges>
+        <v3:requestedExecutionLevel level="asInvoker" />
+      </v3:requestedPrivileges>
+    </v3:security>
+  </v3:trustInfo>
+</assembly>
Index: Daodan/MinGW/msys/1.0/bin/lnkcnv
===================================================================
--- Daodan/MinGW/msys/1.0/bin/lnkcnv	(revision 1046)
+++ Daodan/MinGW/msys/1.0/bin/lnkcnv	(revision 1046)
@@ -0,0 +1,19 @@
+#!/bin/sh
+# Copyright (C) 2002, Earnie Boyd
+#   mailto:earnie@users.sf.net
+# This file is part of Minimal SYStem.
+#   http://www.mingw.org/msys.shtml
+# File: lnkcnv - .lnk symlink file to actual file converter.
+
+Param1=$1
+LinkName=`echo $Param1 | sed -e 's/\.lnk$//'`
+FileName=`cat $Param1 | tr '[:cntrl:]' ' ' | \
+    sed -e 's/      / /g' \
+	-e 's/     / /g' \
+	-e 's/    / /g' \
+	-e 's/   / /g' \
+	-e 's/  / /g' | \
+    cut -f 4 -d ' '`
+
+ln -s $FileName $LinkName
+rm -f $Param1
Index: Daodan/MinGW/msys/1.0/bin/lzcmp
===================================================================
--- Daodan/MinGW/msys/1.0/bin/lzcmp	(revision 1046)
+++ Daodan/MinGW/msys/1.0/bin/lzcmp	(revision 1046)
@@ -0,0 +1,172 @@
+#!/bin/sh
+
+# Copyright (C) 1998, 2002, 2006, 2007 Free Software Foundation
+# Copyright (C) 1993 Jean-loup Gailly
+
+# Modified for XZ Utils by Andrew Dudman and Lasse Collin.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+#SET_PATH - This line is a placeholder to ease patching this script.
+
+# Instead of unsetting XZ_OPT, just make sure that xz will use file format
+# autodetection. This way memory usage limit and thread limit can be
+# specified via XZ_OPT. With gzip and bzip2 it's OK to just unset the
+# environment variables.
+xz='xz --format=auto'
+unset GZIP BZIP BZIP2
+
+case ${0##*/} in
+  *cmp*) prog=xzcmp; cmp=${CMP:-cmp};;
+  *)     prog=xzdiff; cmp=${DIFF:-diff};;
+esac
+
+version="$prog (XZ Utils) 5.0.3"
+
+usage="Usage: ${0##*/} [OPTION]... FILE1 [FILE2]
+Compare FILE1 to FILE2, using their uncompressed contents if they are
+compressed.  If FILE2 is omitted, then the files compared are FILE1 and
+FILE1 from which the compression format suffix has been stripped.
+
+Do comparisons like '$cmp' does.  OPTIONs are the same as for '$cmp'.
+
+Report bugs to <lasse.collin@tukaani.org>."
+
+# sed script to escape all ' for the shell, and then (to handle trailing
+# newlines correctly) turn trailing X on last line into '.
+escape='
+  s/'\''/'\''\\'\'''\''/g
+  $s/X$/'\''/
+'
+
+while :; do
+  case $1 in
+    --h*) printf '%s\n' "$usage" || exit 2; exit;;
+    --v*) echo "$version" || exit 2; exit;;
+    --) shift; break;;
+    -*\'*) cmp="$cmp '"`printf '%sX\n' "$1" | sed "$escape"`;;
+    -?*) cmp="$cmp '$1'";;
+    *) break;;
+  esac
+  shift
+done
+cmp="$cmp --"
+
+for file; do
+  test "X$file" = X- || <"$file" || exit 2
+done
+
+xz1=$xz
+xz2=$xz
+xz_status=0
+exec 3>&1
+
+if test $# -eq 1; then
+  case $1 in
+    *[-.]xz | *[-.]lzma | *.t[lx]z)
+      ;;
+    *[-.]bz2 | *.tbz | *.tbz2)
+      xz1=bzip2;;
+    *[-.][zZ] | *_z | *[-.]gz | *.t[ag]z)
+      xz1=gzip;;
+    *)
+      echo >&2 "$0: $1: Unknown compressed file name suffix"
+      exit 2;;
+  esac
+  case $1 in
+    *[-.][zZ] | *_z | *[-.][gx]z | *[-.]bz2 | *[-.]lzma)
+      FILE=`expr "X$1" : 'X\(.*\)[-.][abglmxzZ2]*$'`;;
+    *.t[abglx]z)
+      FILE=`expr "X$1" : 'X\(.*[-.]t\)[abglx]z$'`ar;;
+    *.tbz2)
+      FILE=`expr "X$1" : 'X\(.*[-.]t\)bz2$'`ar;;
+  esac
+  xz_status=$(
+    exec 4>&1
+    ($xz1 -cd -- "$1" 4>&-; echo $? >&4) 3>&- | eval "$cmp" - '"$FILE"' >&3
+  )
+elif test $# -eq 2; then
+  case $1 in
+    *[-.]bz2 | *.tbz | *.tbz2) xz1=bzip2;;
+    *[-.][zZ] | *_z | *[-.]gz | *.t[ag]z) xz1=gzip;;
+  esac
+  case $2 in
+    *[-.]bz2 | *.tbz | *.tbz2) xz2=bzip2;;
+    *[-.][zZ] | *_z | *[-.]gz | *.t[ag]z) xz2=gzip;;
+  esac
+  case $1 in
+    *[-.][zZ] | *_z | *[-.][gx]z | *[-.]bz2 | *[-.]lzma | *.t[abglx]z | *.tbz2 | -)
+      case "$2" in
+        *[-.][zZ] | *_z | *[-.][gx]z | *[-.]bz2 | *[-.]lzma | *.t[abglx]z | *.tbz2 | -)
+          if test "$1$2" = --; then
+            xz_status=$(
+              exec 4>&1
+              ($xz1 -cdfq - 4>&-; echo $? >&4) 3>&- |
+                eval "$cmp" - - >&3
+            )
+          elif # Reject Solaris 8's buggy /bin/bash 2.03.
+              echo X | (echo X | eval "$cmp" /dev/fd/5 - >/dev/null 2>&1) 5<&0; then
+            xz_status=$(
+              exec 4>&1
+              ($xz1 -cdfq -- "$1" 4>&-; echo $? >&4) 3>&- |
+                ( ($xz2 -cdfq -- "$2" 4>&-; echo $? >&4) 3>&- 5<&- </dev/null |
+                eval "$cmp" /dev/fd/5 - >&3) 5<&0
+            )
+            case $xz_status in
+              *[1-9]*) xz_status=1;;
+              *) xz_status=0;;
+            esac
+          else
+            F=`expr "/$2" : '.*/\(.*\)[-.][ablmtxz2]*$'` || F=$prog
+            tmp=
+            trap '
+              test -n "$tmp" && rm -f "$tmp"
+              (exit 2); exit 2
+            ' HUP INT PIPE TERM 0
+            tmp=`mktemp -t -- "$F.XXXXXX"` || exit 2
+            $xz2 -cdfq -- "$2" > "$tmp" || exit 2
+            xz_status=$(
+              exec 4>&1
+              ($xz1 -cdfq -- "$1" 4>&-; echo $? >&4) 3>&- |
+                eval "$cmp" - '"$tmp"' >&3
+            )
+            cmp_status=$?
+            rm -f "$tmp" || xz_status=$?
+            trap - HUP INT PIPE TERM 0
+            (exit $cmp_status)
+          fi;;
+      *)
+        xz_status=$(
+          exec 4>&1
+          ($xz1 -cdfq -- "$1" 4>&-; echo $? >&4) 3>&- |
+            eval "$cmp" - '"$2"' >&3
+        );;
+    esac;;
+  *)
+    case "$2" in
+      *[-.][zZ] | *_z | *[-.][gx]z | *[-.]bz2 | *[-.]lzma | *.t[abglx]z | *.tbz2 | -)
+        xz_status=$(
+          exec 4>&1
+          ($xz2 -cdfq -- "$2" 4>&-; echo $? >&4) 3>&- |
+            eval "$cmp" '"$1"' - >&3
+         );;
+      *)
+        eval "$cmp" '"$1"' '"$2"';;
+    esac;;
+  esac
+else
+  echo >&2 "$0: Invalid number of operands; try \`${0##*/} --help' for help"
+  exit 2
+fi
+
+cmp_status=$?
+test "$xz_status" -eq 0 || exit 2
+exit $cmp_status
Index: Daodan/MinGW/msys/1.0/bin/lzdiff
===================================================================
--- Daodan/MinGW/msys/1.0/bin/lzdiff	(revision 1046)
+++ Daodan/MinGW/msys/1.0/bin/lzdiff	(revision 1046)
@@ -0,0 +1,172 @@
+#!/bin/sh
+
+# Copyright (C) 1998, 2002, 2006, 2007 Free Software Foundation
+# Copyright (C) 1993 Jean-loup Gailly
+
+# Modified for XZ Utils by Andrew Dudman and Lasse Collin.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+#SET_PATH - This line is a placeholder to ease patching this script.
+
+# Instead of unsetting XZ_OPT, just make sure that xz will use file format
+# autodetection. This way memory usage limit and thread limit can be
+# specified via XZ_OPT. With gzip and bzip2 it's OK to just unset the
+# environment variables.
+xz='xz --format=auto'
+unset GZIP BZIP BZIP2
+
+case ${0##*/} in
+  *cmp*) prog=xzcmp; cmp=${CMP:-cmp};;
+  *)     prog=xzdiff; cmp=${DIFF:-diff};;
+esac
+
+version="$prog (XZ Utils) 5.0.3"
+
+usage="Usage: ${0##*/} [OPTION]... FILE1 [FILE2]
+Compare FILE1 to FILE2, using their uncompressed contents if they are
+compressed.  If FILE2 is omitted, then the files compared are FILE1 and
+FILE1 from which the compression format suffix has been stripped.
+
+Do comparisons like '$cmp' does.  OPTIONs are the same as for '$cmp'.
+
+Report bugs to <lasse.collin@tukaani.org>."
+
+# sed script to escape all ' for the shell, and then (to handle trailing
+# newlines correctly) turn trailing X on last line into '.
+escape='
+  s/'\''/'\''\\'\'''\''/g
+  $s/X$/'\''/
+'
+
+while :; do
+  case $1 in
+    --h*) printf '%s\n' "$usage" || exit 2; exit;;
+    --v*) echo "$version" || exit 2; exit;;
+    --) shift; break;;
+    -*\'*) cmp="$cmp '"`printf '%sX\n' "$1" | sed "$escape"`;;
+    -?*) cmp="$cmp '$1'";;
+    *) break;;
+  esac
+  shift
+done
+cmp="$cmp --"
+
+for file; do
+  test "X$file" = X- || <"$file" || exit 2
+done
+
+xz1=$xz
+xz2=$xz
+xz_status=0
+exec 3>&1
+
+if test $# -eq 1; then
+  case $1 in
+    *[-.]xz | *[-.]lzma | *.t[lx]z)
+      ;;
+    *[-.]bz2 | *.tbz | *.tbz2)
+      xz1=bzip2;;
+    *[-.][zZ] | *_z | *[-.]gz | *.t[ag]z)
+      xz1=gzip;;
+    *)
+      echo >&2 "$0: $1: Unknown compressed file name suffix"
+      exit 2;;
+  esac
+  case $1 in
+    *[-.][zZ] | *_z | *[-.][gx]z | *[-.]bz2 | *[-.]lzma)
+      FILE=`expr "X$1" : 'X\(.*\)[-.][abglmxzZ2]*$'`;;
+    *.t[abglx]z)
+      FILE=`expr "X$1" : 'X\(.*[-.]t\)[abglx]z$'`ar;;
+    *.tbz2)
+      FILE=`expr "X$1" : 'X\(.*[-.]t\)bz2$'`ar;;
+  esac
+  xz_status=$(
+    exec 4>&1
+    ($xz1 -cd -- "$1" 4>&-; echo $? >&4) 3>&- | eval "$cmp" - '"$FILE"' >&3
+  )
+elif test $# -eq 2; then
+  case $1 in
+    *[-.]bz2 | *.tbz | *.tbz2) xz1=bzip2;;
+    *[-.][zZ] | *_z | *[-.]gz | *.t[ag]z) xz1=gzip;;
+  esac
+  case $2 in
+    *[-.]bz2 | *.tbz | *.tbz2) xz2=bzip2;;
+    *[-.][zZ] | *_z | *[-.]gz | *.t[ag]z) xz2=gzip;;
+  esac
+  case $1 in
+    *[-.][zZ] | *_z | *[-.][gx]z | *[-.]bz2 | *[-.]lzma | *.t[abglx]z | *.tbz2 | -)
+      case "$2" in
+        *[-.][zZ] | *_z | *[-.][gx]z | *[-.]bz2 | *[-.]lzma | *.t[abglx]z | *.tbz2 | -)
+          if test "$1$2" = --; then
+            xz_status=$(
+              exec 4>&1
+              ($xz1 -cdfq - 4>&-; echo $? >&4) 3>&- |
+                eval "$cmp" - - >&3
+            )
+          elif # Reject Solaris 8's buggy /bin/bash 2.03.
+              echo X | (echo X | eval "$cmp" /dev/fd/5 - >/dev/null 2>&1) 5<&0; then
+            xz_status=$(
+              exec 4>&1
+              ($xz1 -cdfq -- "$1" 4>&-; echo $? >&4) 3>&- |
+                ( ($xz2 -cdfq -- "$2" 4>&-; echo $? >&4) 3>&- 5<&- </dev/null |
+                eval "$cmp" /dev/fd/5 - >&3) 5<&0
+            )
+            case $xz_status in
+              *[1-9]*) xz_status=1;;
+              *) xz_status=0;;
+            esac
+          else
+            F=`expr "/$2" : '.*/\(.*\)[-.][ablmtxz2]*$'` || F=$prog
+            tmp=
+            trap '
+              test -n "$tmp" && rm -f "$tmp"
+              (exit 2); exit 2
+            ' HUP INT PIPE TERM 0
+            tmp=`mktemp -t -- "$F.XXXXXX"` || exit 2
+            $xz2 -cdfq -- "$2" > "$tmp" || exit 2
+            xz_status=$(
+              exec 4>&1
+              ($xz1 -cdfq -- "$1" 4>&-; echo $? >&4) 3>&- |
+                eval "$cmp" - '"$tmp"' >&3
+            )
+            cmp_status=$?
+            rm -f "$tmp" || xz_status=$?
+            trap - HUP INT PIPE TERM 0
+            (exit $cmp_status)
+          fi;;
+      *)
+        xz_status=$(
+          exec 4>&1
+          ($xz1 -cdfq -- "$1" 4>&-; echo $? >&4) 3>&- |
+            eval "$cmp" - '"$2"' >&3
+        );;
+    esac;;
+  *)
+    case "$2" in
+      *[-.][zZ] | *_z | *[-.][gx]z | *[-.]bz2 | *[-.]lzma | *.t[abglx]z | *.tbz2 | -)
+        xz_status=$(
+          exec 4>&1
+          ($xz2 -cdfq -- "$2" 4>&-; echo $? >&4) 3>&- |
+            eval "$cmp" '"$1"' - >&3
+         );;
+      *)
+        eval "$cmp" '"$1"' '"$2"';;
+    esac;;
+  esac
+else
+  echo >&2 "$0: Invalid number of operands; try \`${0##*/} --help' for help"
+  exit 2
+fi
+
+cmp_status=$?
+test "$xz_status" -eq 0 || exit 2
+exit $cmp_status
Index: Daodan/MinGW/msys/1.0/bin/lzegrep
===================================================================
--- Daodan/MinGW/msys/1.0/bin/lzegrep	(revision 1046)
+++ Daodan/MinGW/msys/1.0/bin/lzegrep	(revision 1046)
@@ -0,0 +1,200 @@
+#!/bin/sh
+
+# xzgrep -- a wrapper around a grep program that decompresses files as needed
+# Adapted from a version sent by Charles Levert <charles@comm.polymtl.ca>
+
+# Copyright (C) 1998, 2001, 2002, 2006, 2007 Free Software Foundation
+# Copyright (C) 1993 Jean-loup Gailly
+
+# Modified for XZ Utils by Andrew Dudman and Lasse Collin.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+#SET_PATH - This line is a placeholder to ease patching this script.
+
+# Instead of unsetting XZ_OPT, just make sure that xz will use file format
+# autodetection. This way memory usage limit and thread limit can be
+# specified via XZ_OPT. With gzip and bzip2 it's OK to just unset the
+# environment variables.
+xz='xz --format=auto'
+unset GZIP BZIP BZIP2
+
+case ${0##*/} in
+  *egrep*) prog=xzegrep; grep=${GREP:-egrep};;
+  *fgrep*) prog=xzfgrep; grep=${GREP:-fgrep};;
+  *)       prog=xzgrep; grep=${GREP:-grep};;
+esac
+
+version="$prog (XZ Utils) 5.0.3"
+
+usage="Usage: ${0##*/} [OPTION]... [-e] PATTERN [FILE]...
+Look for instances of PATTERN in the input FILEs, using their
+uncompressed contents if they are compressed.
+
+OPTIONs are the same as for '$grep'.
+
+Report bugs to <lasse.collin@tukaani.org>."
+
+# sed script to escape all ' for the shell, and then (to handle trailing
+# newlines correctly) turn trailing X on last line into '.
+escape='
+  s/'\''/'\''\\'\'''\''/g
+  $s/X$/'\''/
+'
+operands=
+have_pat=0
+files_with_matches=0
+files_without_matches=0
+no_filename=0
+with_filename=0
+
+while test $# -ne 0; do
+  option=$1
+  shift
+  optarg=
+
+  case $option in
+  (-[0123456789abcdhHiIKLlnoqrRsTuUvVwxyzZ]?*)
+    arg2=-\'$(expr "X${option}X" : 'X-.[0-9]*\(.*\)' | sed "$escape")
+    eval "set -- $arg2 "'${1+"$@"}'
+    option=$(expr "X$option" : 'X\(-.[0-9]*\)');;
+  (--binary-*=* | --[lm]a*=* | --reg*=*)
+    ;;
+  (-[ABCDefm] | --binary-* | --file | --[lm]a* | --reg*)
+    case ${1?"$option option requires an argument"} in
+    (*\'*)
+      optarg=" '"$(printf '%sX\n' "$1" | sed "$escape");;
+    (*)
+      optarg=" '$1'";;
+    esac
+    shift;;
+  (--)
+    break;;
+  (-?*)
+    ;;
+  (*)
+    case $option in
+    (*\'*)
+      operands="$operands '"$(printf '%sX\n' "$option" | sed "$escape");;
+    (*)
+      operands="$operands '$option'";;
+    esac
+    ${POSIXLY_CORRECT+break}
+    continue;;
+  esac
+
+  case $option in
+  (-[drRzZ] | --di* | --exc* | --inc* | --rec* | --nu*)
+    printf >&2 '%s: %s: Option not supported\n' "$0" "$option"
+    exit 2;;
+  (-[ef]* | --file | --file=* | --reg*)
+    have_pat=1;;
+  (--h | --he | --hel | --help)
+    echo "$usage" || exit 2
+    exit;;
+  (-H | --wi | --wit | --with | --with- | --with-f | --with-fi \
+  | --with-fil | --with-file | --with-filen | --with-filena | --with-filenam \
+  | --with-filename)
+    with_filename=1
+    continue;;
+  (-l | --files-with-*)
+    files_with_matches=1;;
+  (-L | --files-witho*)
+    files_without_matches=1;;
+  (--no-f*)
+    no_filename=1;;
+  (-V | --v | --ve | --ver | --vers | --versi | --versio | --version)
+    echo "$version" || exit 2
+    exit;;
+  esac
+
+  case $option in
+  (*\'?*)
+    option=\'$(expr "X${option}X" : 'X\(.*\)' | sed "$escape");;
+  (*)
+    option="'$option'";;
+  esac
+
+  grep="$grep $option$optarg"
+done
+
+if test $files_with_matches -eq 1 || test $files_without_matches -eq 1; then
+  grep="$grep -q"
+fi
+
+eval "set -- $operands "'${1+"$@"}'
+
+if test $have_pat -eq 0; then
+  case ${1?"Missing pattern; try \`${0##*/} --help' for help"} in
+  (*\'*)
+    grep="$grep -- '"$(printf '%sX\n' "$1" | sed "$escape");;
+  (*)
+    grep="$grep -- '$1'";;
+  esac
+  shift
+fi
+
+if test $# -eq 0; then
+  set -- -
+fi
+
+exec 3>&1
+res=0
+
+for i; do
+  case $i in
+    *[-.][zZ] | *_z | *[-.]gz | *.t[ag]z) uncompress="gzip -cdfq";;
+    *[-.]bz2 | *[-.]tbz | *.tbz2) uncompress="bzip2 -cdfq";;
+    *) uncompress="$xz -cdfq";;
+  esac
+  # Fail if xz or grep (or sed) fails.
+  xz_status=$(
+    exec 5>&1
+    ($uncompress -- "$i" 5>&-; echo $? >&5) 3>&- |
+    if test $files_with_matches -eq 1; then
+      eval "$grep" && { printf '%s\n' "$i" || exit 2; }
+    elif test $files_without_matches -eq 1; then
+      eval "$grep" || {
+        r=$?
+        if test $r -eq 1; then
+          printf '%s\n' "$i" || r=2
+        fi
+        exit $r
+      }
+    elif test $with_filename -eq 0 &&
+         { test $# -eq 1 || test $no_filename -eq 1; }; then
+      eval "$grep"
+    else
+      case $i in
+      (*'
+'* | *'&'* | *'\'* | *'|'*)
+        i=$(printf '%s\n' "$i" |
+            sed '
+              $!N
+              $s/[&\|]/\\&/g
+              $s/\n/\\n/g
+            ');;
+      esac
+      sed_script="s|^|$i:|"
+
+      # Fail if grep or sed fails.
+      r=$(
+        exec 4>&1
+        (eval "$grep" 4>&-; echo $? >&4) 3>&- | sed "$sed_script" >&3 4>&-
+      ) || r=2
+      exit $r
+    fi >&3 5>&-
+  )
+  r=$?
+  test "$xz_status" -eq 0 || test "$xz_status" -eq 2 || r=2
+  test $res -lt $r && res=$r
+done
+exit $res
Index: Daodan/MinGW/msys/1.0/bin/lzfgrep
===================================================================
--- Daodan/MinGW/msys/1.0/bin/lzfgrep	(revision 1046)
+++ Daodan/MinGW/msys/1.0/bin/lzfgrep	(revision 1046)
@@ -0,0 +1,200 @@
+#!/bin/sh
+
+# xzgrep -- a wrapper around a grep program that decompresses files as needed
+# Adapted from a version sent by Charles Levert <charles@comm.polymtl.ca>
+
+# Copyright (C) 1998, 2001, 2002, 2006, 2007 Free Software Foundation
+# Copyright (C) 1993 Jean-loup Gailly
+
+# Modified for XZ Utils by Andrew Dudman and Lasse Collin.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+#SET_PATH - This line is a placeholder to ease patching this script.
+
+# Instead of unsetting XZ_OPT, just make sure that xz will use file format
+# autodetection. This way memory usage limit and thread limit can be
+# specified via XZ_OPT. With gzip and bzip2 it's OK to just unset the
+# environment variables.
+xz='xz --format=auto'
+unset GZIP BZIP BZIP2
+
+case ${0##*/} in
+  *egrep*) prog=xzegrep; grep=${GREP:-egrep};;
+  *fgrep*) prog=xzfgrep; grep=${GREP:-fgrep};;
+  *)       prog=xzgrep; grep=${GREP:-grep};;
+esac
+
+version="$prog (XZ Utils) 5.0.3"
+
+usage="Usage: ${0##*/} [OPTION]... [-e] PATTERN [FILE]...
+Look for instances of PATTERN in the input FILEs, using their
+uncompressed contents if they are compressed.
+
+OPTIONs are the same as for '$grep'.
+
+Report bugs to <lasse.collin@tukaani.org>."
+
+# sed script to escape all ' for the shell, and then (to handle trailing
+# newlines correctly) turn trailing X on last line into '.
+escape='
+  s/'\''/'\''\\'\'''\''/g
+  $s/X$/'\''/
+'
+operands=
+have_pat=0
+files_with_matches=0
+files_without_matches=0
+no_filename=0
+with_filename=0
+
+while test $# -ne 0; do
+  option=$1
+  shift
+  optarg=
+
+  case $option in
+  (-[0123456789abcdhHiIKLlnoqrRsTuUvVwxyzZ]?*)
+    arg2=-\'$(expr "X${option}X" : 'X-.[0-9]*\(.*\)' | sed "$escape")
+    eval "set -- $arg2 "'${1+"$@"}'
+    option=$(expr "X$option" : 'X\(-.[0-9]*\)');;
+  (--binary-*=* | --[lm]a*=* | --reg*=*)
+    ;;
+  (-[ABCDefm] | --binary-* | --file | --[lm]a* | --reg*)
+    case ${1?"$option option requires an argument"} in
+    (*\'*)
+      optarg=" '"$(printf '%sX\n' "$1" | sed "$escape");;
+    (*)
+      optarg=" '$1'";;
+    esac
+    shift;;
+  (--)
+    break;;
+  (-?*)
+    ;;
+  (*)
+    case $option in
+    (*\'*)
+      operands="$operands '"$(printf '%sX\n' "$option" | sed "$escape");;
+    (*)
+      operands="$operands '$option'";;
+    esac
+    ${POSIXLY_CORRECT+break}
+    continue;;
+  esac
+
+  case $option in
+  (-[drRzZ] | --di* | --exc* | --inc* | --rec* | --nu*)
+    printf >&2 '%s: %s: Option not supported\n' "$0" "$option"
+    exit 2;;
+  (-[ef]* | --file | --file=* | --reg*)
+    have_pat=1;;
+  (--h | --he | --hel | --help)
+    echo "$usage" || exit 2
+    exit;;
+  (-H | --wi | --wit | --with | --with- | --with-f | --with-fi \
+  | --with-fil | --with-file | --with-filen | --with-filena | --with-filenam \
+  | --with-filename)
+    with_filename=1
+    continue;;
+  (-l | --files-with-*)
+    files_with_matches=1;;
+  (-L | --files-witho*)
+    files_without_matches=1;;
+  (--no-f*)
+    no_filename=1;;
+  (-V | --v | --ve | --ver | --vers | --versi | --versio | --version)
+    echo "$version" || exit 2
+    exit;;
+  esac
+
+  case $option in
+  (*\'?*)
+    option=\'$(expr "X${option}X" : 'X\(.*\)' | sed "$escape");;
+  (*)
+    option="'$option'";;
+  esac
+
+  grep="$grep $option$optarg"
+done
+
+if test $files_with_matches -eq 1 || test $files_without_matches -eq 1; then
+  grep="$grep -q"
+fi
+
+eval "set -- $operands "'${1+"$@"}'
+
+if test $have_pat -eq 0; then
+  case ${1?"Missing pattern; try \`${0##*/} --help' for help"} in
+  (*\'*)
+    grep="$grep -- '"$(printf '%sX\n' "$1" | sed "$escape");;
+  (*)
+    grep="$grep -- '$1'";;
+  esac
+  shift
+fi
+
+if test $# -eq 0; then
+  set -- -
+fi
+
+exec 3>&1
+res=0
+
+for i; do
+  case $i in
+    *[-.][zZ] | *_z | *[-.]gz | *.t[ag]z) uncompress="gzip -cdfq";;
+    *[-.]bz2 | *[-.]tbz | *.tbz2) uncompress="bzip2 -cdfq";;
+    *) uncompress="$xz -cdfq";;
+  esac
+  # Fail if xz or grep (or sed) fails.
+  xz_status=$(
+    exec 5>&1
+    ($uncompress -- "$i" 5>&-; echo $? >&5) 3>&- |
+    if test $files_with_matches -eq 1; then
+      eval "$grep" && { printf '%s\n' "$i" || exit 2; }
+    elif test $files_without_matches -eq 1; then
+      eval "$grep" || {
+        r=$?
+        if test $r -eq 1; then
+          printf '%s\n' "$i" || r=2
+        fi
+        exit $r
+      }
+    elif test $with_filename -eq 0 &&
+         { test $# -eq 1 || test $no_filename -eq 1; }; then
+      eval "$grep"
+    else
+      case $i in
+      (*'
+'* | *'&'* | *'\'* | *'|'*)
+        i=$(printf '%s\n' "$i" |
+            sed '
+              $!N
+              $s/[&\|]/\\&/g
+              $s/\n/\\n/g
+            ');;
+      esac
+      sed_script="s|^|$i:|"
+
+      # Fail if grep or sed fails.
+      r=$(
+        exec 4>&1
+        (eval "$grep" 4>&-; echo $? >&4) 3>&- | sed "$sed_script" >&3 4>&-
+      ) || r=2
+      exit $r
+    fi >&3 5>&-
+  )
+  r=$?
+  test "$xz_status" -eq 0 || test "$xz_status" -eq 2 || r=2
+  test $res -lt $r && res=$r
+done
+exit $res
Index: Daodan/MinGW/msys/1.0/bin/lzgrep
===================================================================
--- Daodan/MinGW/msys/1.0/bin/lzgrep	(revision 1046)
+++ Daodan/MinGW/msys/1.0/bin/lzgrep	(revision 1046)
@@ -0,0 +1,200 @@
+#!/bin/sh
+
+# xzgrep -- a wrapper around a grep program that decompresses files as needed
+# Adapted from a version sent by Charles Levert <charles@comm.polymtl.ca>
+
+# Copyright (C) 1998, 2001, 2002, 2006, 2007 Free Software Foundation
+# Copyright (C) 1993 Jean-loup Gailly
+
+# Modified for XZ Utils by Andrew Dudman and Lasse Collin.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+#SET_PATH - This line is a placeholder to ease patching this script.
+
+# Instead of unsetting XZ_OPT, just make sure that xz will use file format
+# autodetection. This way memory usage limit and thread limit can be
+# specified via XZ_OPT. With gzip and bzip2 it's OK to just unset the
+# environment variables.
+xz='xz --format=auto'
+unset GZIP BZIP BZIP2
+
+case ${0##*/} in
+  *egrep*) prog=xzegrep; grep=${GREP:-egrep};;
+  *fgrep*) prog=xzfgrep; grep=${GREP:-fgrep};;
+  *)       prog=xzgrep; grep=${GREP:-grep};;
+esac
+
+version="$prog (XZ Utils) 5.0.3"
+
+usage="Usage: ${0##*/} [OPTION]... [-e] PATTERN [FILE]...
+Look for instances of PATTERN in the input FILEs, using their
+uncompressed contents if they are compressed.
+
+OPTIONs are the same as for '$grep'.
+
+Report bugs to <lasse.collin@tukaani.org>."
+
+# sed script to escape all ' for the shell, and then (to handle trailing
+# newlines correctly) turn trailing X on last line into '.
+escape='
+  s/'\''/'\''\\'\'''\''/g
+  $s/X$/'\''/
+'
+operands=
+have_pat=0
+files_with_matches=0
+files_without_matches=0
+no_filename=0
+with_filename=0
+
+while test $# -ne 0; do
+  option=$1
+  shift
+  optarg=
+
+  case $option in
+  (-[0123456789abcdhHiIKLlnoqrRsTuUvVwxyzZ]?*)
+    arg2=-\'$(expr "X${option}X" : 'X-.[0-9]*\(.*\)' | sed "$escape")
+    eval "set -- $arg2 "'${1+"$@"}'
+    option=$(expr "X$option" : 'X\(-.[0-9]*\)');;
+  (--binary-*=* | --[lm]a*=* | --reg*=*)
+    ;;
+  (-[ABCDefm] | --binary-* | --file | --[lm]a* | --reg*)
+    case ${1?"$option option requires an argument"} in
+    (*\'*)
+      optarg=" '"$(printf '%sX\n' "$1" | sed "$escape");;
+    (*)
+      optarg=" '$1'";;
+    esac
+    shift;;
+  (--)
+    break;;
+  (-?*)
+    ;;
+  (*)
+    case $option in
+    (*\'*)
+      operands="$operands '"$(printf '%sX\n' "$option" | sed "$escape");;
+    (*)
+      operands="$operands '$option'";;
+    esac
+    ${POSIXLY_CORRECT+break}
+    continue;;
+  esac
+
+  case $option in
+  (-[drRzZ] | --di* | --exc* | --inc* | --rec* | --nu*)
+    printf >&2 '%s: %s: Option not supported\n' "$0" "$option"
+    exit 2;;
+  (-[ef]* | --file | --file=* | --reg*)
+    have_pat=1;;
+  (--h | --he | --hel | --help)
+    echo "$usage" || exit 2
+    exit;;
+  (-H | --wi | --wit | --with | --with- | --with-f | --with-fi \
+  | --with-fil | --with-file | --with-filen | --with-filena | --with-filenam \
+  | --with-filename)
+    with_filename=1
+    continue;;
+  (-l | --files-with-*)
+    files_with_matches=1;;
+  (-L | --files-witho*)
+    files_without_matches=1;;
+  (--no-f*)
+    no_filename=1;;
+  (-V | --v | --ve | --ver | --vers | --versi | --versio | --version)
+    echo "$version" || exit 2
+    exit;;
+  esac
+
+  case $option in
+  (*\'?*)
+    option=\'$(expr "X${option}X" : 'X\(.*\)' | sed "$escape");;
+  (*)
+    option="'$option'";;
+  esac
+
+  grep="$grep $option$optarg"
+done
+
+if test $files_with_matches -eq 1 || test $files_without_matches -eq 1; then
+  grep="$grep -q"
+fi
+
+eval "set -- $operands "'${1+"$@"}'
+
+if test $have_pat -eq 0; then
+  case ${1?"Missing pattern; try \`${0##*/} --help' for help"} in
+  (*\'*)
+    grep="$grep -- '"$(printf '%sX\n' "$1" | sed "$escape");;
+  (*)
+    grep="$grep -- '$1'";;
+  esac
+  shift
+fi
+
+if test $# -eq 0; then
+  set -- -
+fi
+
+exec 3>&1
+res=0
+
+for i; do
+  case $i in
+    *[-.][zZ] | *_z | *[-.]gz | *.t[ag]z) uncompress="gzip -cdfq";;
+    *[-.]bz2 | *[-.]tbz | *.tbz2) uncompress="bzip2 -cdfq";;
+    *) uncompress="$xz -cdfq";;
+  esac
+  # Fail if xz or grep (or sed) fails.
+  xz_status=$(
+    exec 5>&1
+    ($uncompress -- "$i" 5>&-; echo $? >&5) 3>&- |
+    if test $files_with_matches -eq 1; then
+      eval "$grep" && { printf '%s\n' "$i" || exit 2; }
+    elif test $files_without_matches -eq 1; then
+      eval "$grep" || {
+        r=$?
+        if test $r -eq 1; then
+          printf '%s\n' "$i" || r=2
+        fi
+        exit $r
+      }
+    elif test $with_filename -eq 0 &&
+         { test $# -eq 1 || test $no_filename -eq 1; }; then
+      eval "$grep"
+    else
+      case $i in
+      (*'
+'* | *'&'* | *'\'* | *'|'*)
+        i=$(printf '%s\n' "$i" |
+            sed '
+              $!N
+              $s/[&\|]/\\&/g
+              $s/\n/\\n/g
+            ');;
+      esac
+      sed_script="s|^|$i:|"
+
+      # Fail if grep or sed fails.
+      r=$(
+        exec 4>&1
+        (eval "$grep" 4>&-; echo $? >&4) 3>&- | sed "$sed_script" >&3 4>&-
+      ) || r=2
+      exit $r
+    fi >&3 5>&-
+  )
+  r=$?
+  test "$xz_status" -eq 0 || test "$xz_status" -eq 2 || r=2
+  test $res -lt $r && res=$r
+done
+exit $res
Index: Daodan/MinGW/msys/1.0/bin/lzless
===================================================================
--- Daodan/MinGW/msys/1.0/bin/lzless	(revision 1046)
+++ Daodan/MinGW/msys/1.0/bin/lzless	(revision 1046)
@@ -0,0 +1,58 @@
+#!/bin/sh
+
+# Copyright (C) 1998, 2002, 2006, 2007 Free Software Foundation
+
+# The original version for gzip was written by Paul Eggert.
+# Modified for XZ Utils by Andrew Dudman and Lasse Collin.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+#SET_PATH - This line is a placeholder to ease patching this script.
+
+# Instead of unsetting XZ_OPT, just make sure that xz will use file format
+# autodetection. This way memory usage limit and thread limit can be
+# specified via XZ_OPT.
+xz='xz --format=auto'
+
+version='xzless (XZ Utils) 5.0.3'
+
+usage="Usage: ${0##*/} [OPTION]... [FILE]...
+Like 'less', but operate on the uncompressed contents of xz compressed FILEs.
+
+Options are the same as for 'less'.
+
+Report bugs to <lasse.collin@tukaani.org>."
+
+case $1 in
+	--help)    echo "$usage" || exit 2; exit;;
+	--version) echo "$version" || exit 2; exit;;
+esac
+
+if test "${LESSMETACHARS+set}" != set; then
+	# Work around a bug in less 394 and earlier;
+	# it mishandles the metacharacters '$%=~'.
+	space=' '
+	tab='	'
+	nl='
+'
+	LESSMETACHARS="$space$tab$nl'"';*?"()<>[|&^`#\$%=~'
+fi
+
+if test "$(less -V | { read ver && echo ${ver#less }; })" -ge 429; then
+	# less 429 or later: LESSOPEN pipe will be used on
+	# standard input if $LESSOPEN begins with |-.
+	LESSOPEN="|-$xz -cdfq -- %s"
+else
+	LESSOPEN="|$xz -cdfq -- %s"
+fi
+export LESSMETACHARS LESSOPEN
+
+exec less "$@"
Index: Daodan/MinGW/msys/1.0/bin/lzmore
===================================================================
--- Daodan/MinGW/msys/1.0/bin/lzmore	(revision 1046)
+++ Daodan/MinGW/msys/1.0/bin/lzmore	(revision 1046)
@@ -0,0 +1,78 @@
+#!/bin/sh
+
+# Copyright (C) 2001, 2002, 2007 Free Software Foundation
+# Copyright (C) 1992, 1993 Jean-loup Gailly
+
+# Modified for XZ Utils by Andrew Dudman and Lasse Collin.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+#SET_PATH - This line is a placeholder to ease patching this script.
+
+# Instead of unsetting XZ_OPT, just make sure that xz will use file format
+# autodetection. This way memory usage limit and thread limit can be
+# specified via XZ_OPT.
+xz='xz --format=auto'
+
+version='xzmore (XZ Utils) 5.0.3'
+
+usage="Usage: ${0##*/} [OPTION]... [FILE]...
+Like 'more', but operate on the uncompressed contents of xz compressed FILEs.
+
+Report bugs to <lasse.collin@tukaani.org>."
+
+case $1 in
+	--help)    echo "$usage" || exit 2; exit;;
+	--version) echo "$version" || exit 2; exit;;
+esac
+
+oldtty=`stty -g 2>/dev/null`
+if stty -cbreak 2>/dev/null; then
+	cb='cbreak'; ncb='-cbreak'
+else
+	# 'stty min 1' resets eof to ^a on both SunOS and SysV!
+	cb='min 1 -icanon'; ncb='icanon eof ^d'
+fi
+if test $? -eq 0 && test -n "$oldtty"; then
+	trap 'stty $oldtty 2>/dev/null; exit' 0 2 3 5 10 13 15
+else
+	trap 'stty $ncb echo 2>/dev/null; exit' 0 2 3 5 10 13 15
+fi
+
+if test $# = 0; then
+	if test -t 0; then
+		echo "$usage"; exit 1
+	else
+		$xz -cdfq | eval "${PAGER:-more}"
+	fi
+else
+	FIRST=1
+	for FILE; do
+		< "$FILE" || continue
+		if test $FIRST -eq 0; then
+			printf "%s--More--(Next file: %s)" "" "$FILE"
+			stty $cb -echo 2>/dev/null
+			ANS=`dd bs=1 count=1 2>/dev/null`
+			stty $ncb echo 2>/dev/null
+			echo " "
+			case "$ANS" in
+				[eq]) exit;;
+			esac
+		fi
+		if test "$ANS" != 's'; then
+			echo "------> $FILE <------"
+			$xz -cdfq -- "$FILE" | eval "${PAGER:-more}"
+		fi
+		if test -t 1; then
+			FIRST=0
+		fi
+	done
+fi
Index: Daodan/MinGW/msys/1.0/bin/mount
===================================================================
--- Daodan/MinGW/msys/1.0/bin/mount	(revision 1046)
+++ Daodan/MinGW/msys/1.0/bin/mount	(revision 1046)
@@ -0,0 +1,231 @@
+#!/bin/sh
+#
+# File: mount
+# $Id: mount,v 1.2 2010/03/24 21:28:27 keithmarshall Exp $
+#
+# =====================================================================
+#
+# Copyright (C) 2006, 2007, 2009, 2010 by Keith Marshall
+#  mailto:keithmarshall@users.sourceforge.net
+#
+# This file is part of MSYS
+#  http://www.mingw.org/msys.shtml
+#
+# 2009-04-06: First published implementation for MSYS-1.0.11
+# 2010-03-24: Updated for MSYS-1.0.14: --replace option added
+#
+# MSYS is free software.  It is provided "as is", in the hope that it
+# may be useful; there is NO WARRANTY OF ANY KIND, not even an implied
+# warranty of MERCHANTABILITY or FITNESS FOR ANY PARTICULAR PURPOSE.
+# At no time will the author accept liability for damages, however
+# caused, resulting from the use of this software.
+#
+# Permission is granted to copy and redistribute this software, either
+# as is, or in modified form, provided that:--
+#
+#   1) All such copies are distributed with the same rights
+#      of redistribution.
+#
+#   2) The preceding disclaimer of warranty and liabality is
+#      retained verbatim, in all copies.
+#
+#   3) Accreditation of the original author remains in place.
+#
+#   4) Modified copies are clearly identified as such, with
+#      additional accreditation given to the authors of each
+#      modified version.
+#
+# =====================================================================
+#
+#
+# Ensure the the `fstab' mount registry exists, and is writeable.
+#
+  >> ${MNTTAB="/etc/fstab"}
+#
+# Check for '--replace' option, so we can honour requests to reassign
+# an existing mount table entry.
+#
+  case $1 in
+    --replace | --replac | --repla | --repl) shift ; replace=yes ;;
+    *) replace=no ;;
+  esac
+#
+# Select the operation to be performed, based on number of argumemnts.
+#
+  case $# in
+    0)
+#
+#     No arguments specified...
+#     Simply report the current state of the mount table.
+#
+      /bin/msysmnt.exe ;;
+#
+    1)
+#
+#     One argument specified...
+#     Check for any pre-existing mount which may conflict; if none,
+#     try to match it to a default mount specification from the `fstab'
+#     configuration file, and mount the specified directory, if any,
+#     on its associated mount point.
+#
+      FSTAB=${FSTAB-"$MNTTAB.conf"}
+      MNTPATH=`echo "$1" | tr '\\\\' /`
+#
+      if cat $MNTTAB | tr '\\' / | awk '
+#
+#       Check for pre-existing mount of specified argument;
+#       set exit status to:--
+#         0: if no such mount exists;
+#         1: if argument is an already mounted directory;
+#         2: if argument is a mount point already in use.
+#
+	BEGIN { status = 0 }
+	/^#/ { $0 = "" }
+	$1 == "'$MNTPATH'" { status = 1 }
+	$2 == "'$MNTPATH'" { status = 2 }
+	END { exit status }'
+      then
+#
+#       No pre-existing mount conflicts...
+#
+	if WINPATH=`cat 2>/dev/null $FSTAB | tr '\\' / | awk '
+#
+#         Look up the default mount point specification;
+#         set exit status, (assigned to "errno"), to:--
+#           0: if found; (it is assigned to WINPATH);
+#           1: if found, but multiply and ambiguously defined;
+#           2: if not found.
+#
+	  BEGIN { status = 0; mount = "" }
+	  /^#/ { $0 = "" }
+	  $1 == "'$MNTPATH'" {
+	     if( mount == "" ) mount = $0
+	     else if( mount != $0 ) status = 1
+	   }
+	  $2 == "'$MNTPATH'" {
+	     if( mount == "" ) mount = $0
+	     else if( mount != $0 ) status = 1
+	   }
+	  END {
+	     if( mount == "" ) exit 2
+	     print mount
+	     exit status
+	   }'` errno=$?
+	then
+#
+#         Found a default mount specification; activate it.
+#
+	  echo $WINPATH >> $MNTTAB
+#
+	elif test -f $FSTAB && test -r $FSTAB
+	then
+#
+#         Read the configuration file, but could not find
+#         a mount specification matching the argument.
+#
+	  case $errno in
+	    1) echo >&2 "$0: $FSTAB: ambiguous reference for $MNTPATH" ;;
+	    2) echo >&2 "$0: $FSTAB: no mount specification for $MNTPATH" ;;
+	  esac
+#
+	elif test -f $FSTAB
+	then
+#
+#         Found the configuration file, but could not read it.
+#
+	  echo >&2 "$0: $FSTAB: cannot read configuration file"
+#
+	else
+#
+#         Could not find the configuration file.
+#
+	  echo >&2 "$0: $FSTAB: configuration file not found"
+	fi
+#
+      elif test x"$replace" = xyes
+      then
+#
+#       Found a conflicting active mount,
+#       but the 'replace' option WAS specified...
+#       Tear it down, and remount.
+#
+        umount $MNTPATH
+        mount $MNTPATH
+        exit $?
+#
+      else
+#
+#       Found a conflicting active mount,
+#       and the 'replace' option was NOT specified...
+#       Display an appropriate diagnostic message, depending on
+#       whether the argument represented a directory path name,
+#       or a mount point, and bail out.
+#
+	case $? in
+	  1) echo >&2 "$0: '$MNTPATH' is already mounted" ;;
+	  2) echo >&2 "$0: mount point '$MNTPATH' is already in use" ;;
+	esac
+	exit 1
+      fi ;;
+#
+    2)
+#
+#     Two arguments specified...
+#     First is directory path name, second is mount point.
+#
+      WINPATH=`echo "$1" | tr '\\\\' /`
+      MNTPATH=`echo "$2" | tr '\\\\' /`
+#
+      if cat $MNTTAB | tr '\\' / | awk '
+#
+#       Check that the mount point is not already in use;
+#       set exit status to:--
+#         0: if no existing mount table entry matches;
+#         1: if mount point already in mount table.
+#
+	BEGIN { status = 0 }
+	/^#/ { $0 = "" }
+	$2 == "'$MNTPATH'" { status = 1 }
+	END { exit status }'
+      then
+#
+#       Mount point not yet assigned...
+#       Update the mount table, to include the new specification.
+#
+	echo -e "$WINPATH\t$MNTPATH" >> "$MNTTAB"
+#
+      elif test x"$replace" = xyes
+      then
+#
+#       The mount point is already in use,
+#       but the 'replace' option WAS specified...
+#       Tear it down, and remount.
+#
+        umount $MNTPATH
+	echo -e "$WINPATH\t$MNTPATH" >> "$MNTTAB"
+#
+      else
+#
+#       Mount point is already in use,
+#       and the 'replace' option was NOT specified...
+#       Diagnose, and bail out.
+#
+	echo >&2 "$0: mount point '$MNTPATH' is already in use"
+	exit 1
+      fi ;;
+#
+    *)
+#
+#     More than two arguments specified...
+#     Complain, and bail out.
+#
+      echo >&2 "$0: incorrect number of arguments"
+      echo >&2 "usage: mount [--replace] [<win32path> <msyspath>]"
+      exit 2 ;;
+  esac
+#
+# On successful completion, ensure we set the exit status appropriately.
+#
+  exit 0
+#
+# $RCSfile: mount,v $: end of file
Index: Daodan/MinGW/msys/1.0/bin/msysinfo
===================================================================
--- Daodan/MinGW/msys/1.0/bin/msysinfo	(revision 1046)
+++ Daodan/MinGW/msys/1.0/bin/msysinfo	(revision 1046)
@@ -0,0 +1,29 @@
+#!/bin/sh
+# This script has been placed in the public domain by its author, John Kane.
+# This file is part of MSYS
+#   http://www.mingw.org/msys.shtml
+# File: msysinfo
+
+echo 'msysinfo-1.3: Send this to the MSYS support list:'
+echo ; echo 'MSYS '$(uname -rvmp)"; targ="$(uname -s|cut -d_ -f1)
+echo $(sh --version | grep -i '[0-9]\.[0-9]')"; ENV=${ENV:-.profile}"
+echo -n $(make --version | grep -i '[0-9]\.[0-9]' | cut -db -f1)""
+echo $(make --version | grep -i 'Built')"; MAKE_MODE=$MAKE_MODE"
+echo $(gcc --version | grep -i '[0-9]\.[0-9]')"; targ="$(uname -s|cut -d_ -f1)
+ld --version | grep -i '[0-9]\.[0-9]'
+ls -o --full-time /bin/msys*.dll | cut -c 25-
+ls -o --full-time $(type -p make).exe | cut -c 25-
+ls -o --full-time $(type -p gcc).exe | cut -c 25-
+ls -o --full-time $(type -p ld).exe | cut -c 25-
+echo "HOME=$HOME"
+echo "Sysname=$(uname --sysname)  OSTYPE=$OSTYPE  TERM=$TERM"
+echo "PATH=$PATH" | fold -w 64 ; echo "$ ls -tx $PWD" ; ls -tAxFw64
+if [ "$1" = "all" ] || [ "$1" = "long" ] ; then
+  echo ; md5sum -b /bin/msys*.dll ; md5sum -b $(type -p make).exe
+  md5sum -b $(type -p gcc).exe ; md5sum -b $(type -p ld).exe
+  echo ; echo "In /etc/fstab:" ; cat /etc/fstab | grep '/'
+  echo ; echo "In /etc/profile:" ; cat /etc/profile | grep -i 'export'
+  echo ; grep -a '%%%' /bin/msys*.dll
+  echo ; set | fold -sw 64
+  echo ; echo '$ msysinfo all >msysinfo.txt   will save this to a file'
+fi
Index: Daodan/MinGW/msys/1.0/bin/pdftexi2dvi
===================================================================
--- Daodan/MinGW/msys/1.0/bin/pdftexi2dvi	(revision 1046)
+++ Daodan/MinGW/msys/1.0/bin/pdftexi2dvi	(revision 1046)
@@ -0,0 +1,19 @@
+#!/bin/sh
+# $Id: pdftexi2dvi,v 1.3 2007/07/05 15:22:26 karl Exp $
+# Written by Thomas Esser.  Public domain.
+# Execute texi2dvi --pdf.
+
+test -f /bin/ksh && test -z "$RUNNING_KSH" \
+  && { UNAMES=`uname -s`; test "x$UNAMES" = xULTRIX; } 2>/dev/null \
+  && { RUNNING_KSH=true; export RUNNING_KSH; exec /bin/ksh $0 ${1+"$@"}; }
+unset RUNNING_KSH
+
+test -f /bin/bsh && test -z "$RUNNING_BSH" \
+  && { UNAMES=`uname -s`; test "x$UNAMES" = xAIX; } 2>/dev/null \
+  && { RUNNING_BSH=true; export RUNNING_BSH; exec /bin/bsh $0 ${1+"$@"}; }
+unset RUNNING_BSH
+
+# hack around a bug in zsh:
+test -n "${ZSH_VERSION+set}" && alias -g '${1+"$@"}'='"$@"'
+
+texi2dvi --pdf ${1+"$@"}
Index: Daodan/MinGW/msys/1.0/bin/start
===================================================================
--- Daodan/MinGW/msys/1.0/bin/start	(revision 1046)
+++ Daodan/MinGW/msys/1.0/bin/start	(revision 1046)
@@ -0,0 +1,8 @@
+#!/bin/sh
+# Copyright (C) 2002, Earnie Boyd
+#   mailto:earnie@users.sf.net
+# This file is part of Minimal SYStem.
+#   http://www.mingw.org/msys.shtml
+# File: start
+
+cmd //c start "$@"
Index: Daodan/MinGW/msys/1.0/bin/texi2dvi
===================================================================
--- Daodan/MinGW/msys/1.0/bin/texi2dvi	(revision 1046)
+++ Daodan/MinGW/msys/1.0/bin/texi2dvi	(revision 1046)
@@ -0,0 +1,1821 @@
+#! /bin/sh
+# texi2dvi --- produce DVI (or PDF) files from Texinfo (or (La)TeX) sources.
+# $Id: texi2dvi,v 1.135 2008/09/18 18:46:01 karl Exp $
+#
+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001,
+# 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License,
+# or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+# Original author: Noah Friedman.
+#
+# Please send bug reports, etc. to bug-texinfo@gnu.org.
+# If possible, please send a copy of the output of the script called with
+# the `--debug' option when making a bug report.
+
+test -f /bin/ksh && test -z "$RUNNING_KSH" \
+  && { UNAMES=`uname -s`; test "x$UNAMES" = xULTRIX; } 2>/dev/null \
+  && { RUNNING_KSH=true; export RUNNING_KSH; exec /bin/ksh $0 ${1+"$@"}; }
+unset RUNNING_KSH
+
+# No failure shall remain unpunished.
+set -e
+
+if ! command -v tex >/dev/null 2>&1; then
+ cat <<%EOM%
+You don't have a working TeX binary installed, but the texi2dvi script
+can't proceed without it. If you want to use this script, you have to
+install some kind of TeX, for example the MikTeX package from
+http://miktex.org/ (which is not part of the typical MSYS environment).
+%EOM%
+ exit 1
+fi
+
+# This string is expanded by rcs automatically when this file is checked out.
+rcs_revision='$Revision: 1.135 $'
+rcs_version=`set - $rcs_revision; echo $2`
+program=`echo $0 | sed -e 's!.*/!!'`
+
+build_mode=${TEXI2DVI_BUILD_MODE:-local}
+build_dir=${TEXI2DVI_BUILD_DIRECTORY:-.}
+
+# Initialize variables for option overriding and otherwise.
+# Don't use `unset' since old bourne shells don't have this command.
+# Instead, assign them an empty value.
+action=compile
+batch=false     # true for batch mode
+catcode_special=true
+debug=false
+escape="\\"
+expand=         # t for expansion via makeinfo
+includes=
+line_error=true # Pass --file-line-error to TeX.
+no_line_error=false  # absolutely do not pass --file-line-error to TeX
+oname=          # --output
+out_lang=dvi
+quiet=false     # by default let the tools' message be displayed
+recode=false
+set_language=
+src_specials=
+textra=         # Extra TeX commands to insert in the input file.
+txiprereq=19990129 # minimum texinfo.tex version with macro expansion
+verb=false      # true for verbose mode
+translate_file= # name of charset translation file
+recode_from=    # if not empty, recode from this encoding to @documentencoding
+
+orig_pwd=`pwd`
+
+# We have to initialize IFS to space tab newline since we save and
+# restore IFS and apparently POSIX allows stupid/broken behavior with
+# empty-but-set IFS.
+# http://lists.gnu.org/archive/html/automake-patches/2006-05/msg00008.html
+# We need space, tab and new line, in precisely that order.  And don't leave
+# trailing blanks.
+space=' '
+tab='	'
+newline='
+'
+IFS="$space$tab$newline"
+
+# In case someone pedantic insists on using grep -E.
+: ${EGREP=egrep}
+
+# Systems which define $COMSPEC or $ComSpec use semicolons to separate
+# directories in TEXINPUTS -- except for Cygwin et al., where COMSPEC
+# might be inherited, but : is used.
+if test -n "$COMSPEC$ComSpec" \
+   && uname | $EGREP -iv 'cygwin|mingw|djgpp' >/dev/null; then
+  path_sep=";"
+else
+  path_sep=":"
+fi
+
+# Pacify verbose cds.
+CDPATH=${ZSH_VERSION+.}$path_sep
+
+# If $TEX is set to a directory, don't use it.
+test -n "$TEX" && test -d "$TEX" && unset TEX
+
+# 
+
+## --------------------- ##
+## Auxiliary functions.  ##
+## --------------------- ##
+
+# In case `local' is not supported by the shell, provide a function
+# that simulates it by simply performing the assignments.  This means
+# that we must not expect `local' to work, i.e., we must not (i) rely
+# on it during recursion, and (ii) have two local declarations of the
+# same variable.  (ii) is easy to check statically, and our test suite
+# does make sure there is never twice a static local declaration of a
+# variable.  (i) cannot be checked easily, so just be careful.
+#
+# Note that since we might use a function simulating `local', we can
+# no longer rely on the fact that no IFS-splitting is performed.  So,
+# while
+#
+# foo=$bar
+#
+# is fine (no IFS-splitting), never write
+#
+# local foo=$bar
+#
+# but rather
+#
+# local foo="$bar"
+(
+  foo=bar
+  test_local () {
+    local foo=foo
+  }
+  test_local
+  test $foo = bar
+) || local () {
+  case $1 in
+    *=*) eval "$1";;
+  esac
+}
+
+
+# cd_orig
+# -------
+# Return to the original directory.
+cd_orig ()
+{
+  # In case $orig_pwd is on a different drive (for DOS).
+  cd /
+
+  # Return to the original directory so that
+  # - the next file is processed in correct conditions
+  # - the temporary file can be removed
+  cd "$orig_pwd" || exit 1
+}
+
+# func_dirname FILE
+# -----------------
+# Return the directory part of FILE.
+func_dirname ()
+{
+  dirname "$1" 2>/dev/null \
+  || { echo "$1" | sed 's!/[^/]*$!!;s!^$!.!'; }
+}
+
+
+# absolute NAME -> ABS-NAME
+# -------------------------
+# Return an absolute path to NAME.
+absolute ()
+{
+  case $1 in
+   [\\/]* | ?:[\\/]*)
+      # Absolute paths don't need to be expanded.
+      echo "$1"
+      ;;
+   *) local slashes
+      slashes=`echo "$1" | sed -n 's,.*[^/]\(/*\)$,\1,p'`
+      local rel
+      rel=$orig_pwd/`func_dirname "$1"`
+      if test -d "$rel"; then
+	(cd "$rel" 2>/dev/null &&
+	 local n
+	 n=`pwd`/`basename "$1"`"$slashes"
+	 echo "$n")
+      else
+	error 1 "not a directory: $rel"
+      fi
+      ;;
+  esac
+}
+
+
+# ensure_dir DIR1 DIR2...
+# -----------------------
+# Make sure the directories exist.
+ensure_dir ()
+{
+  for dir
+  do
+    test -d "$dir" \
+      || mkdir "$dir" \
+      || error 1 "cannot create directory: $dir"
+  done
+}
+
+
+# error EXIT_STATUS LINE1 LINE2...
+# --------------------------------
+# Report an error and exit with failure if EXIT_STATUS is non null.
+error ()
+{
+  local s="$1"
+  shift
+  report "$@"
+  if test "$s" != 0; then
+    exit $s
+  fi
+}
+
+
+# findprog PROG
+# -------------
+# Return true if PROG is somewhere in PATH, else false.
+findprog ()
+{
+  local saveIFS="$IFS"
+  IFS=$path_sep  # break path components at the path separator
+  for dir in $PATH; do
+    IFS=$saveIFS
+    # The basic test for an executable is `test -f $f && test -x $f'.
+    # (`test -x' is not enough, because it can also be true for directories.)
+    # We have to try this both for $1 and $1.exe.
+    #
+    # Note: On Cygwin and DJGPP, `test -x' also looks for .exe.  On Cygwin,
+    # also `test -f' has this enhancement, bot not on DJGPP.  (Both are
+    # design decisions, so there is little chance to make them consistent.)
+    # Thusly, it seems to be difficult to make use of these enhancements.
+    #
+    if  { test -f "$dir/$1"	&& test -x "$dir/$1"; } ||
+	{ test -f "$dir/$1.exe"	&& test -x "$dir/$1.exe"; }; then
+      return 0
+    fi
+  done
+  return 1
+}
+
+# report LINE1 LINE2...
+# ---------------------
+# Report some information on stderr.
+report ()
+{
+  for i in "$@"
+  do
+    echo >&2 "$0: $i"
+  done
+}
+
+
+# run COMMAND-LINE
+# ----------------
+# Run the COMMAND-LINE verbosely, and catching errors as failures.
+run ()
+{
+  verbose "Running $@"
+  "$@" 2>&5 1>&2 ||
+     error 1 "$1 failed"
+}
+
+
+# usage
+# -----
+# Display usage and exit successfully.
+usage ()
+{
+  # We used to simply have `echo "$usage"', but coping with the
+  # changing behavior of `echo' is much harder than simply using a
+  # here-doc.
+  #
+  #             echo '\noto'   echo '\\noto'   echo -e '\\noto'
+  # bash 3.1      \noto           \\noto          \noto
+  # bash 3.2       %oto           \noto           -e \noto
+  #
+  # where % denotes the eol character.
+  cat <<EOF
+Usage: $program [OPTION]... FILE...
+
+Run each Texinfo or (La)TeX FILE through TeX in turn until all
+cross-references are resolved, building all indices.  The directory
+containing each FILE is searched for included files.  The suffix of FILE
+is used to determine its language ((La)TeX or Texinfo).  To process
+(e)plain TeX files, set the environment variable LATEX=tex.
+
+In order to make texi2dvi a drop-in replacement of TeX/LaTeX in AUC-TeX,
+the FILE may also be composed of the following simple TeX commands.
+  \`\\input{FILE}'     the actual file to compile
+  \`\\nonstopmode'     same as --batch
+
+Makeinfo is used to perform Texinfo macro expansion before running TeX
+when needed.
+
+General options:
+  -b, --batch         no interaction
+  -D, --debug         turn on shell debugging (set -x)
+  -h, --help          display this help and exit successfully
+  -o, --output=OFILE  leave output in OFILE (implies --clean);
+			only one input FILE may be specified in this case
+  -q, --quiet         no output unless errors (implies --batch)
+  -s, --silent        same as --quiet
+  -v, --version       display version information and exit successfully
+  -V, --verbose       report on what is done
+
+TeX tuning:
+  -@                         use @input instead of \input for preloaded Texinfo
+      --dvi                  output a DVI file [default]
+      --dvipdf               output a PDF file via DVI (using dvipdf)
+  -e, -E, --expand           force macro expansion using makeinfo
+  -I DIR                     search DIR for Texinfo files
+  -l, --language=LANG        specify LANG for FILE, either latex or texinfo
+      --no-line-error        do not pass --file-line-error to TeX
+  -p, --pdf                  use pdftex or pdflatex for processing
+  -r, --recode               call recode before TeX to translate input
+      --recode-from=ENC      recode from ENC to the @documentencoding
+      --src-specials         pass --src-specials to TeX
+  -t, --command=CMD          insert CMD in copy of input file
+   or --texinfo=CMD          multiple values accumulate
+      --translate-file=FILE  use given charset translation file for TeX
+
+Build modes:
+  --build=MODE         specify the treatment of auxiliary files [$build_mode]
+      --tidy           same as --build=tidy
+  -c, --clean          same as --build=clean
+      --build-dir=DIR  specify where the tidy compilation is performed;
+			 implies --tidy;
+			 defaults to TEXI2DVI_BUILD_DIRECTORY [$build_dir]
+  --mostly-clean       remove the auxiliary files and directories
+			 but not the output
+
+The MODE specifies where the TeX compilation takes place, and, as a
+consequence, how auxiliary files are treated.  The build mode
+can also be set using the environment variable TEXI2DVI_BUILD_MODE.
+
+Valid MODEs are:
+  \`local'      compile in the current directory, leaving all the auxiliary
+	       files around.  This is the traditional TeX use.
+  \`tidy'       compile in a local *.t2d directory, where the auxiliary files
+	       are left.  Output files are copied back to the original file.
+  \`clean'      same as \`tidy', but remove the auxiliary directory afterwards.
+	       Every compilation therefore requires the full cycle.
+
+Using the \`tidy' mode brings several advantages:
+  -   the current directory is not cluttered with plethora of temporary files.
+  -   clutter can be even reduced using --build-dir=dir: all the *.t2d
+      directories are stored there.
+  -   clutter can be reduced to zero using, e.g., --build-dir=/tmp/\$USER.t2d
+      or --build-dir=\$HOME/.t2d.
+  -   the output file is updated after every succesful TeX run, for
+      sake of concurrent visualization of the output.  In a \`local' build
+      the viewer stops during the whole TeX run.
+  -   if the compilation fails, the previous state of the output file
+      is preserved.
+  -   PDF and DVI compilation are kept in separate subdirectories
+      preventing any possibility of auxiliary file incompatibility.
+
+On the other hand, because \`tidy' compilation takes place in another
+directory, occasionally TeX won't be able to find some files (e.g., when
+using \\graphicspath): in that case use -I to specify the additional
+directories to consider.
+
+The values of the BIBTEX, LATEX (or PDFLATEX), MAKEINDEX, MAKEINFO,
+TEX (or PDFTEX), TEXINDEX, and THUMBPDF environment variables are used
+to run those commands, if they are set.  Any CMD strings are added
+after @setfilename for Texinfo input, in the first line for LaTeX input.
+
+Email bug reports to <bug-texinfo@gnu.org>,
+general questions and discussion to <help-texinfo@gnu.org>.
+Texinfo home page: http://www.gnu.org/software/texinfo/
+EOF
+  exit 0
+}
+
+
+# verbose WORD1 WORD2
+# -------------------
+# Report some verbose information.
+verbose ()
+{
+  if $verb; then
+    echo >&2 "$0: $@"
+  fi
+}
+
+
+# version
+# -------
+# Display version info and exit succesfully.
+version ()
+{
+  cat <<EOF
+texi2dvi (GNU Texinfo 4.13) $rcs_version
+
+Copyright (C) 2008 Free Software Foundation, Inc.
+License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
+This is free software: you are free to change and redistribute it.
+There is NO WARRANTY, to the extent permitted by law.
+EOF
+  exit 0
+}
+
+
+## ---------------- ##
+## Handling lists.  ##
+## ---------------- ##
+
+
+# list_append LIST-NAME ELEM
+# --------------------------
+# Set LIST-NAME to its former contents, with ELEM appended.
+list_append ()
+{
+  local la_l="$1"
+  shift
+  eval set X \$$la_l "$@"
+  shift
+  eval $la_l=\""$@"\"
+}
+
+
+# list_concat_dirs LIST-NAME DIR-LIST
+# -----------------------------------
+# Append to LIST-NAME all the components (included empty) from
+# the $path_sep separated list DIR-LIST.  Make the paths absolute.
+list_concat_dirs ()
+{
+  local lcd_list="$1"
+  # Empty path components are meaningful to tex.  We rewrite them as
+  # `EMPTY' so they don't get lost when we split on $path_sep.
+  # Hopefully no one will have an actual directory named EMPTY.
+  local replace_EMPTY="-e 's/^$path_sep/EMPTY$path_sep/g' \
+                       -e 's/$path_sep\$/${path_sep}EMPTY/g' \
+                       -e 's/$path_sep$path_sep/${path_sep}EMPTY:/g'"
+  save_IFS=$IFS
+  IFS=$path_sep
+  set x `echo "$2" | eval sed $replace_EMPTY`; shift
+  IFS=$save_IFS
+  local dir
+  for dir
+  do
+    case $dir in
+      EMPTY)
+       list_append $lcd_list ""
+       ;;
+      *)
+       if test -d $dir; then
+          dir=`absolute "$dir"`
+         list_append $lcd_list "$dir"
+       fi
+       ;;
+    esac
+  done
+}
+
+
+# list_prefix LIST-NAME SEP -> STRING
+# -----------------------------------
+# Return a string that is composed of the LIST-NAME with each item
+# preceded by SEP.
+list_prefix ()
+{
+  local lp_p="$2"
+  eval set X \$$1
+  shift
+  local lp_res
+  for i
+  do
+    lp_res="$lp_res \"$lp_p\" \"$i\""
+  done
+  echo "$lp_res"
+}
+
+# list_infix LIST-NAME SEP -> STRING
+# ----------------------------------
+# Same as list_prefix, but a separator.
+list_infix ()
+{
+  eval set X \$$1
+  shift
+  local la_IFS="$IFS"
+  IFS=$path_sep
+  echo "$*"
+  IFS=$la_IFS
+}
+
+# list_dir_to_abs LIST-NAME
+# -------------------------
+# Convert the list to using only absolute dir names.
+# Currently unused, but should replace absolute_filenames some day.
+list_dir_to_abs ()
+{
+  local ld_l="$1"
+  eval set X \$$ld_l
+  shift
+  local ld_res
+  for dir
+  do
+    dir=`absolute "$dir"`
+    test -d "$dir" || continue
+    ld_res="$ld_res \"$dir\""
+  done
+  set X $ld_res; shift
+  eval $ld_l=\"$@\"
+}
+
+
+## ------------------------------ ##
+## Language auxiliary functions.  ##
+## ------------------------------ ##
+
+# out_lang_tex
+# ------------
+# Return the tex output language (DVI or PDF) for $OUT_LANG.
+out_lang_tex ()
+{
+  case $out_lang in
+    dvi | ps | dvipdf ) echo dvi;;
+    pdf ) echo $out_lang;;
+    html | info | text ) echo $out_lang;;
+    *)    error 1 "$0: invalid out_lang: $1";;
+  esac
+}
+
+
+# out_lang_ext
+# ------------
+# Return the extension for $OUT_LANG.
+out_lang_ext ()
+{
+  case $out_lang in
+    dvipdf ) echo pdf;;
+    dvi | html | info | pdf | ps | text ) echo $out_lang;;
+    *)    error 1 "$0: invalid out_lang: $1";;
+  esac
+}
+
+
+## ------------------------- ##
+## TeX auxiliary functions.  ##
+## ------------------------- ##
+
+# Save TEXINPUTS so we can construct a new TEXINPUTS path for each file.
+# Likewise for bibtex and makeindex.
+tex_envvars="BIBINPUTS BSTINPUTS DVIPSHEADERS INDEXSTYLE MFINPUTS MPINPUTS \
+TEXINPUTS TFMFONTS"
+for var in $tex_envvars; do
+  eval ${var}_orig=\$$var
+  export $var
+done
+
+
+# absolute_filenames TEX-PATH -> TEX-PATH
+# ---------------------------------------
+# Convert relative paths to absolute paths, so we can run in another
+# directory (e.g., in tidy build mode, or during the macro-support
+# detection).  Prepend ".".
+absolute_filenames ()
+{
+  # Empty path components are meaningful to tex.  We rewrite them as
+  # `EMPTY' so they don't get lost when we split on $path_sep.
+  # Hopefully no one will have an actual directory named EMPTY.
+  local replace_empty="-e 's/^$path_sep/EMPTY$path_sep/g' \
+                       -e 's/$path_sep\$/${path_sep}EMPTY/g' \
+                       -e 's/$path_sep$path_sep/${path_sep}EMPTY:/g'"
+  local res
+  res=`echo "$1" | eval sed $replace_empty`
+  save_IFS=$IFS
+  IFS=$path_sep
+  set x $res; shift
+  res=.
+  for dir
+  do
+    case $dir in
+      EMPTY)
+	res=$res$path_sep
+	;;
+      *)
+	if test -d "$dir"; then
+	  res=$res$path_sep`absolute "$dir"`
+	else
+	  # Even if $dir is not a directory, preserve it in the path.
+	  # It might contain metacharacters that TeX will expand in
+	  # turn, e.g., /some/path/{a,b,c}.  This will not get the
+	  # implicit absolutification of the path, but we can't help that.
+	  res=$res$path_sep$dir
+	fi
+	;;
+    esac
+  done
+  echo "$res"
+}
+
+
+# output_base_name FILE
+# ---------------------
+# The name of FILE, possibly renamed to satisfy --output.
+output_base_name ()
+{
+  case $oname in
+    '') echo "$1";;
+     *) local out_noext
+	out_noext=`echo "$oname" | sed 's/\.[^.]*$//'`
+	local file_ext
+	file_ext=`echo "$1" | sed 's/^.*\.//'`
+	echo "$out_noext.$file_ext"
+      ;;
+  esac
+}
+
+
+# move_to_dest FILE...
+# --------------------
+# Move FILE to the place where the user expects it.  Truly move it, that
+# is, it must not remain in its build location unless that is also the
+# output location.  (Otherwise it might appear as an extra file in make
+# distcheck.)
+#
+# FILE can be the principal output (in which case -o directly applies), or
+# an auxiliary file with the same base name.
+move_to_dest ()
+{
+  local dest
+  local destfile
+  local destdir
+  local destbase
+  local sourcedir
+  local sourcebase
+
+  for file
+  do
+    case $tidy:$oname in
+      true:)  dest=$orig_pwd;;
+      false:) dest=;;
+      *:*)    dest=`output_base_name "$file"`;;
+    esac
+    if test ! -f "$file"; then
+      error 1 "no such file or directory: $file"
+    fi
+    if test -n "$dest"; then
+      # We need to know whether $dest is a directory.
+      if test -d "$dest"; then
+        destdir=$dest
+        destfile=$dest/$file
+      else
+        destdir="`dirname $dest`"
+        destfile=$dest
+      fi
+      # We want to compare the source location and the output location,
+      # and if they are different, do the move.  But if they are the
+      # same, we must preserve the source.  Since we can't assume
+      # stat(1) or test -ef is available, resort to comparing the
+      # directory names, canonicalized with pwd.  We can't use cmp -s
+      # since the output file might not actually change from run to run;
+      # e.g., TeX DVI output is timestamped to only the nearest minute.
+      destdir=`cd $destdir && pwd`
+      destbase=`basename $destfile`
+      #
+      sourcedir=`dirname $file`
+      sourcedir=`cd $sourcedir && pwd`
+      sourcebase=`basename $file`
+      #
+      if test "$sourcedir/$sourcebase" != "$destdir/$destbase"; then
+        verbose "Moving $file to $destfile"
+        rm -f "$destfile"
+        mv "$file" "$destfile"
+      fi
+    fi
+  done
+}
+
+
+## --------------------- ##
+## Managing xref files.  ##
+## --------------------- ##
+
+# aux_file_p FILE
+# ---------------
+# Return with success with FILE is an aux file.
+aux_file_p ()
+{
+  test -f "$1" || return 1
+  case $1 in
+    *.aux) return 0;;
+    *)     return 1;;
+  esac
+}
+
+# bibaux_file_p FILE
+# ------------------
+# Return with success with FILE is an aux file containing citation
+# requests.
+bibaux_file_p ()
+{
+  test -s "$1" || return 1
+  if (grep '^\\bibstyle[{]' "$1"   \
+      && grep '^\\bibdata[{]' "$1" \
+      ## The following line is suspicious: fails when there
+      ## are citations in sub aux files.  We need to be
+      ## smarter in this case.
+      ## && grep '^\\citation[{]' "$f"
+      ) >&6 2>&1;
+  then
+    return 0
+  fi
+  return 1
+}
+
+# index_file_p FILE
+# -----------------
+# Return with success with FILE is an index file.
+# When index.sty is used, there is a space before the brace.
+index_file_p ()
+{
+  test -f "$1" || return 1
+  case `sed '1q' "$1"` in
+    "\\entry{"*|"\\indexentry{"*|"\\indexentry {"*) return 0;;
+    *) return 1;;
+  esac
+}
+
+# xref_file_p FILE
+# ----------------
+# Return with success if FILE is an xref file (indexes, tables and lists).
+xref_file_p ()
+{
+  test -f "$1" || return 1
+  # If the file is not suitable to be an index or xref file, don't
+  # process it.  It's suitable if the first character is a
+  # backslash or right quote or at, as long as the first line isn't
+  # \input texinfo.
+  case `sed '1q' "$1"` in
+    "\\input texinfo"*) return 1;;
+    [\\''@]*)           return 0;;
+	   *)           return 1;;
+  esac
+}
+
+
+# generated_files_get FILENAME-NOEXT [PREDICATE-FILTER]
+# -----------------------------------------------------
+# Return the list of files generated by the TeX compilation of FILENAME-NOEXT.
+generated_files_get ()
+{
+  local filter=true
+  if test -n "$2"; then
+    filter=$2
+  fi
+
+  # Gather the files created by TeX.
+  (
+    if test -f "$1.log"; then
+      sed -n -e "s,^\\\\openout.* = \`\\(.*\\)'\\.,\\1,p" "$1.log"
+    fi
+    echo "$1.log"
+  ) |
+  # Depending on these files, infer outputs from other tools.
+  while read file; do
+    echo $file
+    case $in_lang in
+      texinfo)
+	# texindex: texinfo.cp -> texinfo.cps
+       if index_file_p $file; then
+	 echo ${file}s
+       fi
+       ;;
+      latex)
+	if aux_file_p $file; then
+          # bibtex: *.aux -> *.bbl and *.blg.
+	  echo $file | sed 's/^\(.*\)\.aux$/\1.bbl/'
+          echo $file | sed 's/^\(.*\)\.aux$/\1.blg/'
+          # -recorder: .fls
+          echo $file | sed 's/^\(.*\)\.aux$/\1.fls/'
+       fi
+       ;;
+    esac
+  done |
+  # Filter existing files matching the criterion.
+  #
+  # With an input file name containing a space, this produces a
+  # "command not found" message (and filtering is ineffective).
+  # The situation with a newline is presumably even worse.
+  while read file; do
+    if $filter "$file"; then
+      echo $file
+    fi
+  done |
+  sort |
+  # Some files are opened several times, e.g., listings.sty's *.vrb.
+  uniq
+}
+
+
+# xref_files_save
+# ---------------
+# Save the xref files.
+xref_files_save ()
+{
+  # Save copies of auxiliary files for later comparison.
+  xref_files_orig=`generated_files_get "$in_noext" xref_file_p`
+  if test -n "$xref_files_orig"; then
+    verbose "Backing up xref files: $xref_files_orig"
+    # The following line improves `cp $xref_files_orig "$work_bak"'
+    # by preserving the directory parts.  Think of
+    # cp chap1/main.aux chap2/main.aux $work_bak.
+    #
+    # Users may have, e.g., --keep-old-files.  Don't let this interfere.
+    # (Don't use unset for the sake of ancient shells.)
+    TAR_OPTIONS=; export TAR_OPTIONS
+    tar cf - $xref_files_orig | (cd "$work_bak" && tar xf -)
+  fi
+}
+
+
+# xref_files_changed
+# ------------------
+# Whether the xref files were changed since the previous run.
+xref_files_changed ()
+{
+  # LaTeX (and the package changebar) report in the LOG file if it
+  # should be rerun.  This is needed for files included from
+  # subdirs, since texi2dvi does not try to compare xref files in
+  # subdirs.  Performing xref files test is still good since LaTeX
+  # does not report changes in xref files.
+  if grep "Rerun to get" "$in_noext.log" >&6 2>&1; then
+    return 0
+  fi
+
+  # If old and new lists don't at least have the same file list,
+  # then one file or another has definitely changed.
+  xref_files_new=`generated_files_get "$in_noext" xref_file_p`
+  verbose "Original xref files = $xref_files_orig"
+  verbose "New xref files      = $xref_files_new"
+  if test "x$xref_files_orig" != "x$xref_files_new"; then
+    return 0
+  fi
+
+  # Compare each file until we find a difference.
+  for this_file in $xref_files_new; do
+    verbose "Comparing xref file `echo $this_file | sed 's|\./||g'` ..."
+    # cmp -s returns nonzero exit status if files differ.
+    if cmp -s "$this_file" "$work_bak/$this_file"; then :; else
+      verbose "xref file `echo $this_file | sed 's|\./||g'` differed ..."
+      if $debug; then
+	diff -u "$work_bak/$this_file" "$this_file"
+      fi
+      return 0
+    fi
+  done
+
+  # No change.
+  return 1
+}
+
+
+
+## ----------------------- ##
+## Running the TeX suite.  ##
+## ----------------------- ##
+
+
+
+# run_tex ()
+# ----------
+# Run TeX as "$tex $in_input", taking care of errors and logs.
+run_tex ()
+{
+  case $in_lang:`out_lang_tex` in
+    latex:dvi)   tex=${LATEX:-latex};;
+    latex:pdf)   tex=${PDFLATEX:-pdflatex};;
+    texinfo:dvi)
+	# MetaPost also uses the TEX environment variable.  If the user
+	# has set TEX=latex for that reason, don't bomb out.
+	case $TEX in
+	  *latex) tex=tex;; # don't bother trying to find etex
+	       *) tex=$TEX
+	esac;;
+    texinfo:pdf) tex=$PDFTEX;;
+
+    *) error 1 "$0: $out_lang not supported for $in_lang";;
+  esac
+
+  # Beware of aux files in subdirectories that require the
+  # subdirectory to exist.
+  case $in_lang:$tidy in
+    latex:true)
+       sed -n 's|^[ ]*\\include{\(.*\)/.*}.*|\1|p' "$in_input" |
+       sort -u |
+       while read d
+       do
+	 ensure_dir "$work_build/$d"
+       done
+       ;;
+  esac
+
+  # Note that this will be used via an eval: quote properly.
+  local cmd="$tex"
+
+  # If possible, make TeX report error locations in GNU format.
+  if test "${tex_help:+set}" != set; then
+    # Go to a temporary directory to try --help, since old versions that
+    # don't accept --help will generate a texput.log.
+    tex_help_dir=$t2ddir/tex_help
+    ensure_dir "$tex_help_dir"
+    tex_help=`cd "$tex_help_dir" >&6 && $tex --help </dev/null 2>&1`
+  fi
+  if $no_line_error; then :; else
+    # The mk program and perhaps others want to parse TeX's
+    # original error messages.
+    case $line_error:$tex_help in
+      true:*file-line-error*) cmd="$cmd --file-line-error";;
+    esac
+  fi
+
+  # Tell TeX about TCX file, if specified.
+  test -n "$translate_file" && cmd="$cmd --translate-file=$translate_file"
+
+  # Tell TeX to make source specials (for backtracking from output to
+  # source, given a sufficiently smart editor), if specifed.
+  test -n "$src_specials" && cmd="$cmd $src_specials"
+
+  # Tell TeX to be batch if requested.
+  if $batch; then
+    # \batchmode does not show terminal output at all, so we don't
+    # want that.  And even in batch mode, TeX insists on having input
+    # from the user.  Close its stdin to make it impossible.
+    cmd="$cmd </dev/null '${escape}nonstopmode'"
+  fi
+
+  # we'd like to handle arbitrary input file names, especially
+  # foo~bar/a~b.tex, since Debian likes ~ characters.
+  if $catcode_special; then
+    # $normaltilde is just to reduce line length in this source file.
+    # The idea is to define \normaltilde as a catcode other ~ character,
+    # then make the active ~ be equivalent to that, instead of the plain
+    # TeX tie.  Then when the active ~ appears in the filename, it will
+    # be expanded to itself, as far as \input will see.  (This is the
+    # same thing that texinfo.tex does in general, BTW.)
+    normaltilde="${escape}catcode126=12 ${escape}def${escape}normaltilde{~}"
+    cmd="$cmd '$normaltilde${escape}catcode126=13 ${escape}let~\normaltilde '"
+  fi
+  # Other special (non-active) characters could be supported by
+  # resetting their catcodes to other on the command line and changing
+  # texinfo.tex to initialize everything to plain catcodes.  Maybe someday.
+  
+  # append the \input command.
+  cmd="$cmd '${escape}input'"
+
+  # TeX's \input does not (easily or reliably) support whitespace
+  # characters or other special characters in file names.  Our intensive
+  # use of absolute file names makes this worse: the enclosing directory
+  # names may include white spaces.  Improve the situation using a
+  # symbolic link to the filename in the current directory, in tidy mode
+  # only.  Do not alter in_input.
+  #
+  # The filename is almost always tokenized using plain TeX conventions
+  # (the exception would be if the user made a texinfo.fmt file).  Not
+  # all the plain TeX special characters cause trouble, but there's no
+  # harm in making the link.
+  #
+  case $tidy:`func_dirname "$in_input"` in
+    true:*["$space$tab$newline\"#\$%\\^_{}~"]*)
+      _run_tex_file_name=`basename "$in_input"`
+      if test ! -f "$_run_tex_file_name"; then
+	# It might not be a file, clear it.
+	run rm -f "$_run_tex_file_name"
+	run ln -s "$in_input"
+      fi
+      cmd="$cmd '$_run_tex_file_name'"
+      ;;
+
+    *)
+      cmd="$cmd '$in_input'"
+      ;;
+  esac
+
+  verbose "$0: Running $cmd ..."
+  if eval "$cmd" >&5; then
+    case $out_lang in
+      dvi | pdf ) move_to_dest "$in_noext.$out_lang";;
+    esac
+  else
+    error 1 "$tex exited with bad status, quitting."
+  fi
+}
+
+# run_bibtex ()
+# -------------
+# Run bibtex on current file.
+# - If its input (AUX) exists.
+# - If some citations are missing (LOG contains `Citation').
+#   or the LOG complains of a missing .bbl
+#
+# Don't try to be too smart:
+#
+# 1. Running bibtex only if the bbl file exists and is older than
+# the LaTeX file is wrong, since the document might include files
+# that have changed.
+#
+# 3. Because there can be several AUX (if there are \include's),
+# but a single LOG, looking for missing citations in LOG is
+# easier, though we take the risk to match false messages.
+run_bibtex ()
+{
+  case $in_lang in
+    latex)   bibtex=${BIBTEX:-bibtex};;
+    texinfo) return;;
+  esac
+
+  # "Citation undefined" is for LaTeX, "Undefined citation" for btxmac.tex.
+  # The no .aux && \bibdata test is also for btxmac, in case it was the
+  # first run of a bibtex-using document.  Otherwise, it's possible that
+  # bibtex would never be run.
+  if test -r "$in_noext.aux" \
+     && test -r "$in_noext.log" \
+     && (grep 'Warning:.*Citation.*undefined' "$in_noext.log" \
+	  || grep '.*Undefined citation' "$in_noext.log" \
+	  || grep 'No file .*\.bbl\.' "$in_noext.log") \
+	  || (grep 'No \.aux file' "$in_noext.log" \
+	      && grep '^\\bibdata' "$in_noext.aux") \
+	>&6 2>&1; \
+  then
+    for f in `generated_files_get "$in_noext" bibaux_file_p`
+    do
+      run $bibtex "$f"
+    done
+  fi
+}
+
+# run_index ()
+# ------------
+# Run texindex (or makeindex) on current index files.  If they already
+# exist, and after running TeX a first time the index files don't
+# change, then there's no reason to run TeX again.  But we won't know
+# that if the index files are out of date or nonexistent.
+run_index ()
+{
+  case $in_lang in
+    latex)   texindex=${MAKEINDEX:-makeindex};;
+    texinfo) texindex=${TEXINDEX:-texindex};;
+  esac
+  index_files=`generated_files_get $in_noext index_file_p`
+  if test -n "$texindex" && test -n "$index_files"; then
+    run $texindex $index_files
+  fi
+}
+
+
+# run_thumbpdf ()
+# ---------------
+run_thumbpdf ()
+{
+  if test `out_lang_tex` = pdf \
+     && test -r "$in_noext.log" \
+     && grep 'thumbpdf\.sty'  "$in_noext.log" >&6 2>&1; \
+  then
+    thumbpdf=${THUMBPDF:-thumbpdf}
+    thumbcmd="$thumbpdf $in_dir/$in_noext"
+    verbose "Running $thumbcmd ..."
+    if $thumbcmd >&5; then
+      run_tex
+    else
+      report "$thumbpdf exited with bad status." \
+	     "Ignoring its output."
+    fi
+  fi
+}
+
+
+# run_dvipdf FILE.dvi
+# -------------------
+# Convert FILE.dvi to FILE.pdf.
+run_dvipdf ()
+{
+  # Find which dvi->pdf program is available.
+  if test -z "$dvipdf"; then
+    for i in "$DVIPDF" dvipdfmx dvipdfm dvipdf dvi2pdf dvitopdf;
+    do
+      if findprog $i; then
+	dvipdf=$i
+      fi
+    done
+  fi
+  # These tools have varying interfaces, some 'input output', others
+  # 'input -o output'.  They all seem to accept 'input' only,
+  # outputting using the expected file name.
+  run $dvipdf "$1"
+  if test ! -f `echo "$1" | sed -e 's/\.dvi$/.pdf/'`; then
+    error 1 "$0: cannot find output file"
+  fi
+}
+
+# run_tex_suite ()
+# ----------------
+# Run the TeX tools until a fix point is reached.
+run_tex_suite ()
+{
+  # Move to the working directory.
+  if $tidy; then
+    verbose "cd $work_build"
+    cd "$work_build" || exit 1
+  fi
+
+  # Count the number of cycles.
+  local cycle=0
+
+  while :; do
+    cycle=`expr $cycle + 1`
+    verbose "Cycle $cycle for $command_line_filename"
+
+    xref_files_save
+
+    # We run bibtex first, because I can see reasons for the indexes
+    # to change after bibtex is run, but I see no reason for the
+    # converse.
+    run_bibtex
+    run_index
+    run_core_conversion
+
+    xref_files_changed || break
+  done
+
+  # If we were using thumbpdf and producing PDF, then run thumbpdf
+  # and TeX one last time.
+  run_thumbpdf
+
+  # Install the result if we didn't already (i.e., if the output is
+  # dvipdf or ps).
+  case $out_lang in
+    dvipdf)
+      run_dvipdf "$in_noext.`out_lang_tex`"
+      move_to_dest "$in_noext.`out_lang_ext`"
+      ;;
+    ps)
+      dvips -o "$in_noext.`out_lang_ext`" "$in_noext.`out_lang_tex`"
+      move_to_dest "$in_noext.`out_lang_ext`"
+      ;;
+  esac
+
+  cd_orig
+}
+
+## -------------------------------- ##
+## TeX processing auxiliary tools.  ##
+## -------------------------------- ##
+
+
+# A sed script that preprocesses Texinfo sources in order to keep the
+# iftex sections only.  We want to remove non TeX sections, and comment
+# (with `@c texi2dvi') TeX sections so that makeinfo does not try to
+# parse them.  Nevertheless, while commenting TeX sections, don't
+# comment @macro/@end macro so that makeinfo does propagate them.
+# Unfortunately makeinfo --iftex --no-ifinfo doesn't work well enough
+# (yet), makeinfo can't parse the TeX commands, so work around with sed.
+#
+comment_iftex=\
+'/^@tex/,/^@end tex/{
+  s/^/@c texi2dvi/
+}
+/^@iftex/,/^@end iftex/{
+  s/^/@c texi2dvi/
+  /^@c texi2dvi@macro/,/^@c texi2dvi@end macro/{
+    s/^@c texi2dvi//
+  }
+}
+/^@ifnottex/,/^@end ifnottex/{
+  s/^/@c (texi2dvi)/
+}
+/^@ifinfo/,/^@end ifinfo/{
+  /^@node/p
+  /^@menu/,/^@end menu/p
+  t
+  s/^/@c (texi2dvi)/
+}
+s/^@ifnotinfo/@c texi2dvi@ifnotinfo/
+s/^@end ifnotinfo/@c texi2dvi@end ifnotinfo/'
+
+# Uncommenting is simple: Remove any leading `@c texi2dvi'.
+uncomment_iftex='s/^@c texi2dvi//'
+
+
+# run_makeinfo ()
+# ---------------
+# Expand macro commands in the original source file using Makeinfo.
+# Always use `end' footnote style, since the `separate' style
+# generates different output (arguably this is a bug in -E).  Discard
+# main info output, the user asked to run TeX, not makeinfo.
+run_makeinfo ()
+{
+  test $in_lang = texinfo \
+    || return 0
+
+  # Unless required by the user, makeinfo expansion is wanted only
+  # if texinfo.tex is too old.
+  if test "$expand" = t; then
+    makeinfo=${MAKEINFO:-makeinfo}
+  else
+    # Check if texinfo.tex performs macro expansion by looking for
+    # its version.  The version is a date of the form YEAR-MO-DA.
+    # We don't need to use [0-9] to match the digits since anyway
+    # the comparison with $txiprereq, a number, will fail with non
+    # digits.
+    # Run in a temporary directory to avoid leaving files.
+    version_test_dir=$t2ddir/version_test
+    ensure_dir "$version_test_dir"
+    (
+       cd "$version_test_dir"
+       echo '\input texinfo.tex @bye' >txiversion.tex
+       # Be sure that if tex wants to fail, it is not interactive:
+       # close stdin.
+       $TEX txiversion.tex </dev/null >txiversion.out 2>txiversion.err
+    )
+    if test $? != 0; then
+      cat "$version_test_dir/txiversion.out"
+      cat "$version_test_dir/txiversion.err" >&2
+      error 1 "texinfo.tex appears to be broken, quitting."
+    fi
+    eval `sed -n 's/^.*\[\(.*\)version \(....\)-\(..\)-\(..\).*$/txiformat=\1 txiversion="\2\3\4"/p' "$version_test_dir/txiversion.out"`
+    verbose "texinfo.tex preloaded as \`$txiformat', version is \`$txiversion' ..."
+    if test "$txiprereq" -le "$txiversion" >&6 2>&1; then
+      makeinfo=
+    else
+      makeinfo=${MAKEINFO:-makeinfo}
+    fi
+    # As long as we had to run TeX, offer the user this convenience:
+    if test "$txiformat" = Texinfo; then
+	escape=@
+    fi
+  fi
+
+  if test -n "$makeinfo"; then
+    # in_src: the file with macros expanded.
+    # Use the same basename to generate the same aux file names.
+    work_src=$workdir/src
+    ensure_dir "$work_src"
+    in_src=$work_src/$in_base
+    local miincludes
+    miincludes=`list_prefix includes -I`
+    verbose "Macro-expanding $command_line_filename to $in_src ..."
+    # eval $makeinfo because it might be defined as something complex
+    # (running missing) and then we end up with things like '"-I"',
+    # and "-I" (including the quotes) is not an option name.  This
+    # happens with gettext 0.14.5, at least.
+    sed "$comment_iftex" "$command_line_filename" \
+      | eval $makeinfo --footnote-style=end -I "$in_dir" $miincludes \
+	-o /dev/null --macro-expand=- \
+      | sed "$uncomment_iftex" >"$in_src"
+    # Continue only if everything succeeded.
+    if test $? -ne 0 \
+       || test ! -r "$in_src"; then
+      verbose "Expansion failed, ignored...";
+    else
+      in_input=$in_src
+    fi
+  fi
+}
+
+# insert_commands ()
+# ------------------
+# Used most commonly for @finalout, @smallbook, etc.
+insert_commands ()
+{
+  local textra_cmd
+  case $in_lang in
+    latex)   textra_cmd=1i;;
+    texinfo) textra_cmd='/^@setfilename/a';;
+    *)       error 1 "internal error, unknown language: $in_lang";;
+  esac
+
+  if test -n "$textra"; then
+    # _xtr.  The file with the user's extra commands.
+    work_xtr=$workdir/xtr
+    in_xtr=$work_xtr/$in_base
+    ensure_dir "$work_xtr"
+    verbose "Inserting extra commands: $textra"
+    sed "$textra_cmd\\
+$textra" "$in_input" >"$in_xtr"
+    in_input=$in_xtr
+  fi
+}
+
+# run_recode ()
+# -------------
+# If this is a Texinfo file with a specified input encoding, and
+# recode is available, then recode to plain 7 bit Texinfo.
+run_recode ()
+{
+  local from
+  local to
+
+  if test $in_lang = texinfo; then
+    pgm='s/^ *@documentencoding  *\([^ ][^ ]*\) *$/\1/
+	t found
+	d
+	:found
+	q'
+    encoding=`sed -e "$pgm" "$in_input"`
+    if $recode && test -n "$encoding" && findprog recode; then
+      if test -n "$recode_from"; then
+	from=$recode_from
+	to=$encoding
+      else
+	from=$encoding
+	to=$texinfo
+      fi
+      verbose "Recoding from $from to $to."
+      # _rcd.  The Texinfo file recoded in 7bit.
+      work_rcd=$workdir/recode
+      in_rcd=$work_rcd/$in_base
+      ensure_dir "$work_rcd"
+      if recode "$encoding..$to" <"$in_input" >"$in_rcd" \
+	 && test -s "$in_rcd"; then
+	in_input=$in_rcd
+      else
+	verbose "Recoding failed, using original input."
+      fi
+    fi
+  fi
+}
+
+# compute_language FILENAME
+# -------------------------
+# Return the short string describing the language in which FILENAME
+# is written: `texinfo' or `latex'.
+compute_language ()
+{
+  # If the user explicitly specified the language, use that.
+  # Otherwise, if the first line is \input texinfo, assume it's texinfo.
+  # Otherwise, guess from the file extension.
+  if test -n "$set_language"; then
+    echo $set_language
+  elif sed 1q "$1" | grep 'input texinfo' >&6; then
+    echo texinfo
+  else
+    # Get the type of the file (latex or texinfo) from the given language
+    # we just guessed, or from the file extension if not set yet.
+    case $1 in
+      *.ltx | *.tex | *.drv | *.dtx) echo latex;;
+      *)                             echo texinfo;;
+    esac
+  fi
+}
+
+
+# run_hevea (MODE)
+# ----------------
+# Convert to HTML/INFO/TEXT.
+#
+# Don't pass `-noiso' to hevea: it's useless in HTML since anyway the
+# charset is set to latin1, and troublesome in other modes since
+# accented characters loose their accents.
+#
+# Don't pass `-o DEST' to hevea because in that case it leaves all its
+# auxiliary files there too...  Too bad, because it means we will need
+# to handle images some day.
+run_hevea ()
+{
+  local hevea="${HEVEA:-hevea}"
+  local run_hevea="$hevea"
+
+  case $1 in
+    html) ;;
+    text|info) run_hevea="$run_hevea -$1";;
+    *) error 1 "run_hevea: invalid argument: $1";;
+  esac
+
+  # Compiling to the tmp directory enables to preserve a previous
+  # successful compilation.
+  run_hevea="$run_hevea -fix -O -o '$out_base'"
+  run_hevea="$run_hevea `list_prefix includes -I` -I '$orig_pwd' "
+  run_hevea="$run_hevea '$in_input'"
+
+  if $debug; then
+    run_hevea="$run_hevea -v -v"
+  fi
+
+  verbose "running $run_hevea"
+  if eval "$run_hevea" >&5; then
+    # hevea leaves trailing white spaces, this is annoying.
+    case $1 in text|info)
+      perl -pi -e 's/[ \t]+$//g' "$out_base"*;;
+    esac
+    case $1 in
+    html|text) move_to_dest "$out_base";;
+    info) # There can be foo.info-1, foo.info-2 etc.
+	       move_to_dest "$out_base"*;;
+    esac
+  else
+    error 1 "$hevea exited with bad status, quitting."
+  fi
+}
+
+
+# run_core_conversion ()
+# ----------------------
+# Run the TeX (or HeVeA).
+run_core_conversion ()
+{
+  case $in_lang:`out_lang_tex` in
+    *:dvi|*:pdf)
+	run_tex;;
+    latex:html|latex:text|latex:info)
+	run_hevea $out_lang;;
+    *)
+	error 1 "invalid input/output combination: $in_lang/$out_lang";;
+  esac
+}
+
+
+# compile ()
+# ----------
+# Run the full compilation chain, from pre-processing to installation
+# of the output at its expected location.
+compile ()
+{
+  # Source file might include additional sources.
+  # We want `.:$orig_pwd' before anything else.  (We'll add `.:' later
+  # after all other directories have been turned into absolute paths.)
+  # `.' goes first to ensure that any old .aux, .cps,
+  # etc. files in ${directory} don't get used in preference to fresher
+  # files in `.'.  Include orig_pwd in case we are in clean build mode, where
+  # we've cd'd to a temp directory.
+  txincludes=`list_infix includes $path_sep`
+  common="$orig_pwd$path_sep$in_dir$path_sep$txincludes$path_sep"
+  for var in $tex_envvars; do
+    eval val="\$common\$${var}_orig"
+    # Convert relative paths to absolute paths, so we can run in another
+    # directory (e.g., in clean build mode, or during the macro-support
+    # detection). ".:" is added here.
+    val=`absolute_filenames "$val"`
+    eval $var="\"$val\""
+    export $var
+    eval verbose \"$var=\'\$${var}\'\"
+  done
+
+  # --expand
+  run_makeinfo
+
+  # --command, --texinfo
+  insert_commands
+
+  # --recode
+  run_recode
+
+  # Run until a fix point is reached.
+  run_tex_suite
+}
+
+
+# remove FILES
+# ------------
+remove ()
+{
+  verbose "Removing" "$@"
+  rm -rf "$@"
+}
+
+
+# mostly_clean
+# ------------
+# Remove auxiliary files and directories.  Changes the current directory.
+mostly_clean ()
+{
+  cd_orig
+  set X "$t2ddir"
+  shift
+  $tidy || {
+    local log="$work_build/$in_noext.log"
+    set X ${1+"$@"} "$log" `generated_files_get "$work_build/$in_noext"`
+    shift
+  }
+  remove ${1+"$@"}
+}
+
+
+# cleanup ()
+# ----------
+# Remove what should be removed according to options.
+# Called at the end of each compilation cycle, and at the end of
+# the script.  Changes the current directory.
+cleanup ()
+{
+  case $build_mode in
+    local) cd_orig; remove "$t2ddir";;
+    clean) mostly_clean;;
+    tidy)  ;;
+  esac
+}
+
+
+
+## ---------------------- ##
+## Command line parsing.  ##
+## ---------------------- ##
+
+# Push a token among the arguments that will be used to notice when we
+# ended options/arguments parsing.
+# Use "set dummy ...; shift" rather than 'set - ..." because on
+# Solaris set - turns off set -x (but keeps set -e).
+# Use ${1+"$@"} rather than "$@" because Digital Unix and Ultrix 4.3
+# still expand "$@" to a single argument (the empty string) rather
+# than nothing at all.
+arg_sep="$$--$$"
+set dummy ${1+"$@"} "$arg_sep"; shift
+
+# 
+
+# Parse command line arguments.
+while test x"$1" != x"$arg_sep"; do
+
+  # Handle --option=value by splitting apart and putting back on argv.
+  case "$1" in
+    --*=*)
+      opt=`echo "$1" | sed -e 's/=.*//'`
+      val=`echo "$1" | sed -e 's/[^=]*=//'`
+      shift
+      set dummy "$opt" "$val" ${1+"$@"}; shift
+      ;;
+  esac
+
+  # This recognizes --quark as --quiet.  So what.
+  case "$1" in
+    -@ ) escape=@;;
+    # Silently and without documentation accept -b and --b[atch] as synonyms.
+    -b | --batch) batch=true;;
+	 --build)      shift; build_mode=$1;;
+	 --build-dir)  shift; build_dir=$1; build_mode=tidy;;
+    -c | --clean) build_mode=clean;;
+    -D | --debug) debug=true;;
+	 --dvi)   out_lang=dvi;;
+	 --dvipdf)   out_lang=dvipdf;;
+    -e | -E | --expand) expand=t;;
+    -h | --help) usage;;
+	 --html) out_lang=html;;
+    -I)   shift; list_concat_dirs includes "$1";;
+    --info) out_lang=info;;
+    -l | --lang | --language) shift; set_language=$1;;
+    --mostly-clean) action=mostly-clean;;
+    --no-line-error) no_line_error=true;;
+    -o | --out  | --output)
+      shift
+      # Make it absolute, just in case we also have --clean, or whatever.
+      oname=`absolute "$1"`;;
+    -p | --pdf) out_lang=pdf;;
+	 --ps)  out_lang=ps;;
+    -q | -s | --quiet | --silent) quiet=true; batch=true;;
+    -r | --recode) recode=true;;
+    --recode-from) shift; recode=true; recode_from="$1";;
+    --src-specials) src_specials=--src-specials;;
+    -t | --texinfo | --command ) shift; textra="$textra\\
+"`echo "$1" | sed 's/\\\\/\\\\\\\\/g'`;;
+    --text) out_lang=text;;
+    --translate-file ) shift; translate_file="$1";;
+    --tidy) build_mode=tidy;;
+    -v | --vers*) version;;
+    -V | --verb*) verb=true;;
+    --) # What remains are not options.
+      shift
+      while test x"$1" != x"$arg_sep"; do
+	set dummy ${1+"$@"} "$1"; shift
+	shift
+      done
+      break;;
+    -*)
+      error 1 "Unknown or ambiguous option \`$1'." \
+	      "Try \`--help' for more information."
+      ;;
+    *) set dummy ${1+"$@"} "$1"; shift;;
+   esac
+   shift
+done
+# Pop the token
+shift
+
+# $tidy:  compile in a t2d directory.
+# $clean: remove all the aux files.
+case $build_mode in
+  local) clean=false; tidy=false;;
+  tidy)  clean=false; tidy=true;;
+  clean) clean=true;  tidy=true;;
+      *) error 1 "invalid build mode: $build_mode";;
+esac
+
+# Interpret remaining command line args as filenames.
+case $# in
+ 0)
+  error 2 "Missing file arguments." "Try \`--help' for more information."
+  ;;
+ 1) ;;
+ *)
+  if test -n "$oname"; then
+    error 2 "Can't use option \`--output' with more than one argument."
+  fi
+  ;;
+esac
+
+
+# We can't do much without tex.
+#
+if findprog ${TEX:-tex}; then :; else cat <<EOM
+You don't have a working TeX binary (${TEX:-tex}) installed anywhere in
+your PATH, and texi2dvi cannot proceed without one.  If you want to use
+this script, you'll need to install TeX (if you don't have it) or change
+your PATH or TEX environment variable (if you do).  See the --help
+output for more details.
+
+For information about obtaining TeX, please see http://www.tug.org.  If
+you happen to be using Debian, you can get it with this command:
+  apt-get install tetex-bin
+EOM
+  exit 1
+fi
+
+
+# We want to use etex (or pdftex) if they are available, and the user
+# didn't explicitly specify.  We don't check for elatex and pdfelatex
+# because (as of 2003), the LaTeX team has asked that new distributions
+# use etex by default anyway.
+#
+# End up with the TEX and PDFTEX variables set to what we are going to use.
+if test -z "$TEX"; then
+  if findprog etex; then TEX=etex; else TEX=tex; fi
+fi
+#
+if test -z "$PDFTEX"; then
+  if findprog pdfetex; then PDFTEX=pdfetex; else PDFTEX=pdftex; fi
+fi
+
+
+# File descriptor usage:
+# 0 standard input
+# 1 standard output (--verbose messages)
+# 2 standard error
+# 3 some systems may open it to /dev/tty
+# 4 used on the Kubota Titan
+# 5 tools output (turned off by --quiet)
+# 6 tracing/debugging (set -x output, etc.)
+
+
+# Main tools' output (TeX, etc.) that TeX users are used to seeing.
+#
+# If quiet, discard, else redirect to the message flow.
+if $quiet; then
+  exec 5>/dev/null
+else
+  exec 5>&1
+fi
+
+
+# Enable tracing, and auxiliary tools output.
+#
+# Should be used where you'd typically use /dev/null to throw output
+# away.  But sometimes it is convenient to see that output (e.g., from
+# a grep) to aid debugging.  Especially debugging at distance, via the
+# user.
+if $debug; then
+  exec 6>&1
+  set -x
+else
+  exec 6>/dev/null
+fi
+
+# 
+
+
+# input_file_name_decode
+# ----------------------
+# Decode COMMAND_LINE_FILENAME, and compute:
+# - COMMAND_LINE_FILENAME clean of TeX commands
+# - IN_DIR
+#   The directory to the input file, possibly absolute if needed.
+# - IN_DIR_ABS
+#   The absolute directory of the input file.
+# - IN_BASE
+#   The input file base name (no directory part).
+# - IN_NOEXT
+#   The input file name without extensions (nor directory part).
+# - IN_INPUT
+#   Defaults to COMMAND_LINE_FILENAME, but might change if the
+#   input is preprocessed (recode etc.).  With directory, possibly absolute.
+input_file_name_decode ()
+{
+  # See if we are run from within AUC-Tex, in which case we are
+  # passed `\input{FOO.tex}' or even `\nonstopmode\input{FOO.tex}'.
+  case $command_line_filename in
+    *\\nonstopmode*)
+      batch=true;;
+  esac
+  case $command_line_filename in
+    *\\input{*}*)
+      # Let AUC-TeX error parser deal with line numbers.
+      line_error=false
+      command_line_filename=`\
+	expr X"$command_line_filename" : X'.*input{\([^}]*\)}'`
+      ;;
+  esac
+
+  # If the COMMAND_LINE_FILENAME is not absolute (e.g., --debug.tex),
+  # prepend `./' in order to avoid that the tools take it as an option.
+  echo "$command_line_filename" | $EGREP '^(/|[A-z]:/)' >&6 \
+  || command_line_filename="./$command_line_filename"
+
+  # See if the file exists.  If it doesn't we're in trouble since, even
+  # though the user may be able to reenter a valid filename at the tex
+  # prompt (assuming they're attending the terminal), this script won't
+  # be able to find the right xref files and so forth.
+  test -r "$command_line_filename" ||
+    error 1 "cannot read $command_line_filename, skipping."
+
+  # Get the name of the current directory.
+  in_dir=`func_dirname "$command_line_filename"`
+  in_dir_abs=`absolute "$in_dir"`
+  # In a clean build, we `cd', so get an absolute file name.
+  if $tidy; then
+    in_dir=$in_dir_abs
+  fi
+
+  # Strip directory part but leave extension.
+  in_base=`basename "$command_line_filename"`
+  # Strip extension.
+  in_noext=`echo "$in_base" | sed 's/\.[^.]*$//'`
+
+  # The normalized file name to compile.  Must always point to the
+  # file to actually compile (in case of recoding, macro-expansion etc.).
+  in_input=$in_dir/$in_base
+
+
+  # Compute the output file name.
+  if test x"$oname" != x; then
+    out_name=$oname
+  else
+    out_name=$in_noext.`out_lang_ext`
+  fi
+  out_dir=`func_dirname "$out_name"`
+  out_dir_abs=`absolute "$out_dir"`
+  out_base=`basename "$out_name"`
+  out_noext=`echo "$out_base" | sed 's/\.[^.]*$//'`
+}
+
+
+## -------------- ##
+## TeXify files.  ##
+## -------------- ##
+
+for command_line_filename
+do
+  verbose "Processing $command_line_filename ..."
+
+  input_file_name_decode
+
+  # `texinfo' or `latex'?
+  in_lang=`compute_language "$command_line_filename"`
+
+  # An auxiliary directory used for all the auxiliary tasks involved
+  # in compiling this document.
+  case $build_dir in
+      '' | . ) t2ddir=$out_noext.t2d ;;
+      *) # Avoid collisions between multiple occurrences of the same
+	 # file.  The sed expression is fragile if the cwd has
+	 # active characters.
+	 t2ddir=$build_dir/`echo "$out_dir_abs/$out_noext.t2d" |
+	     sed "s,^$orig_pwd/,," |
+	     sed 's,/,!,g'`
+  esac
+  # Remove it at exit if clean mode.
+  trap "cleanup" 0 HUP INT TERM
+
+  ensure_dir "$build_dir" "$t2ddir"
+
+  # We will change directory, better work with an absolute path...
+  t2ddir=`absolute "$t2ddir"`
+  # Sometimes there are incompatibilities between auxiliary files for
+  # DVI and PDF.  The contents can also change whether we work on PDF
+  # and/or DVI.  So keep separate spaces for each.
+  workdir=$t2ddir/`out_lang_tex`
+  ensure_dir "$workdir"
+
+  # _build.  In a tidy build, where the auxiliary files are output.
+  if $tidy; then
+    work_build=$workdir/build
+  else
+    work_build=.
+  fi
+
+  # _bak.  Copies of the previous auxiliary files (another round is
+  # run if they differ from the new ones).
+  work_bak=$workdir/bak
+
+  # Make those directories.
+  ensure_dir "$work_build" "$work_bak"
+
+  case $action in
+    compile)
+      # Compile the document.
+      compile
+      cleanup
+      ;;
+
+    mostly-clean)
+      mostly_clean
+      ;;
+  esac
+done
+
+verbose "done."
+exit 0 # exit successfully, not however we ended the loop.
Index: Daodan/MinGW/msys/1.0/bin/texi2pdf
===================================================================
--- Daodan/MinGW/msys/1.0/bin/texi2pdf	(revision 1046)
+++ Daodan/MinGW/msys/1.0/bin/texi2pdf	(revision 1046)
@@ -0,0 +1,19 @@
+#!/bin/sh
+# $Id: texi2pdf,v 1.2 2005/01/28 01:52:04 karl Exp $
+# Written by Thomas Esser.  Public domain.
+# Execute texi2dvi --pdf.
+
+test -f /bin/ksh && test -z "$RUNNING_KSH" \
+  && { UNAMES=`uname -s`; test "x$UNAMES" = xULTRIX; } 2>/dev/null \
+  && { RUNNING_KSH=true; export RUNNING_KSH; exec /bin/ksh $0 ${1+"$@"}; }
+unset RUNNING_KSH
+
+test -f /bin/bsh && test -z "$RUNNING_BSH" \
+  && { UNAMES=`uname -s`; test "x$UNAMES" = xAIX; } 2>/dev/null \
+  && { RUNNING_BSH=true; export RUNNING_BSH; exec /bin/bsh $0 ${1+"$@"}; }
+unset RUNNING_BSH
+
+# hack around a bug in zsh:
+test -n "${ZSH_VERSION+set}" && alias -g '${1+"$@"}'='"$@"'
+
+texi2dvi --pdf ${1+"$@"}
Index: Daodan/MinGW/msys/1.0/bin/umount
===================================================================
--- Daodan/MinGW/msys/1.0/bin/umount	(revision 1046)
+++ Daodan/MinGW/msys/1.0/bin/umount	(revision 1046)
@@ -0,0 +1,101 @@
+#!/bin/sh
+#
+# File: umount
+# $Id: umount,v 1.2 2010/03/24 21:28:30 keithmarshall Exp $
+#
+# =====================================================================
+#
+# Copyright (C) 2006, 2007, 2009 by Keith Marshall
+#  mailto:keithmarshall@users.sourceforge.net
+#
+# This file is part of MSYS
+#  http://www.mingw.org/msys.shtml
+#
+# 2009-04-06: First published implementation for MSYS-1.0.11
+#
+# MSYS is free software.  It is provided "as is", in the hope that it
+# may be useful; there is NO WARRANTY OF ANY KIND, not even an implied
+# warranty of MERCHANTABILITY or FITNESS FOR ANY PARTICULAR PURPOSE.
+# At no time will the author accept liability for damages, however
+# caused, resulting from the use of this software.
+#
+# Permission is granted to copy and redistribute this software, either
+# as is, or in modified form, provided that:--
+#
+#   1) All such copies are distributed with the same rights
+#      of redistribution.
+#
+#   2) The preceding disclaimer of warranty and liabality is
+#      retained verbatim, in all copies.
+#
+#   3) Accreditation of the original author remains in place.
+#
+#   4) Modified copies are clearly identified as such, with
+#      additional accreditation given to the authors of each
+#      modified version.
+#
+# =====================================================================
+#
+# Exactly one argument is required...
+#
+  if test $# -eq 1
+  then
+#
+#   Normally, it specifies the mount point to be released,
+#   but it may also represent a mounted directory path name,
+#   for which all bound mount points are to be filtered out
+#   of the "mount table" file.
+#
+    MNTPATH=`echo "$1" | tr '\\\\' /`
+    TMPFILE=${TMPDIR-"/tmp"}/mnttab$$.tmp
+    MNTTAB=${MNTTAB-"/etc/fstab"}
+#
+    if cat "$MNTTAB" | tr '\\' / | awk '
+#
+#     Copy the "mount table" to a temporary file, filtering
+#     out all active mount point records which match MNTPATH,
+#     (the specified argument); set exit status to:--
+#       0: if at least one mount point is matched;
+#       1: if no match is found.
+#
+      BEGIN { status = 1 }
+      { keep = $0 }
+      /^#/ { print; keep = "no"; $0 = "!'$MNTPATH'" }
+      $2 == "'$MNTPATH'" { keep = "no"; status = 0 }
+      { $2 = "!" } $0 == "'$MNTPATH' !" { keep = "no"; status = 0 }
+      keep != "no" { print keep }
+      END { exit status }' > "$TMPFILE"
+    then
+#
+#     At least one mount point was selected to release...
+#     Replace the active "mount table" file with the regenerated
+#     copy, so completing the operation.
+#
+      cp "$TMPFILE" "$MNTTAB"
+      rm -f "$TMPFILE"
+#
+    else
+#
+#     No active mount point matched the specified argument...
+#     Discard the temporary file, complain, and bail out.
+#
+      rm -f "$TMPFILE"
+      echo >&2 "$0: '$1' is not mounted"
+      exit 1
+    fi
+#
+  else
+#
+#   The command line did not specify exactly one argument...
+#   Complain, and bail out.
+#
+    echo >&2 "$0: incorrect number of arguments"
+    echo >&2 "usage: umount <path>"
+    exit 2
+  fi
+#
+# On successful completion, ensure we set the exit status appropriately.
+#
+  exit 0
+#
+# $RCSfile: umount,v $: end of file
Index: Daodan/MinGW/msys/1.0/bin/uncompress
===================================================================
--- Daodan/MinGW/msys/1.0/bin/uncompress	(revision 1046)
+++ Daodan/MinGW/msys/1.0/bin/uncompress	(revision 1046)
@@ -0,0 +1,3 @@
+#!/bin/sh
+PATH=${GZIP_BINDIR-'/usr/bin'}:$PATH
+exec gzip -d "$@"
Index: Daodan/MinGW/msys/1.0/bin/which
===================================================================
--- Daodan/MinGW/msys/1.0/bin/which	(revision 1046)
+++ Daodan/MinGW/msys/1.0/bin/which	(revision 1046)
@@ -0,0 +1,66 @@
+#!/bin/sh
+# Original copyright (C) 2002, Earnie Boyd
+#   mailto:earnie@users.sf.net
+# This implementation copyright (C) 2006, 2008, Keith Marshall
+#   mailto:keithmarshall@users.sf.net
+#
+# This file is part of MSYS
+#   http://www.mingw.org/msys.shtml
+#
+# File: which
+# $Id: which,v 1.4 2009/03/14 14:13:32 keithmarshall Exp $
+
+CMD=`IFS='\\/:'; set CMD $0; eval echo \$\{$#\}`
+if test $# -lt 1
+then
+  echo >&2 "$CMD: syntax error: missing argument"
+  echo >&2 "Usage: $CMD [ -a | --all ] cmd ..."
+  exit 1
+fi
+
+# To accomodate Woe32's typically asinine $PATH, which frequently
+# includes directory names with embedded spaces, we need to set up
+# $IFS to consider only a newline as a field separator.
+IFS=$'\n'
+
+break=break
+for PROG
+do
+  if test x"$PROG" = x-a || test x"$PROG" = x--all
+  then
+    break=""
+  else
+    WHICH=""
+    # need `type -ap -- "$PROG" || type -p -- "$PROG"'
+    # because `type -ap foo' reports nothing, if both `foo' and `foo.exe'
+    # are present, and are distinct.
+    for LIST in `type -ap -- "$PROG" || type -p -- "$PROG"`
+    do
+      if test -f "$LIST"
+      then
+	# preserve `.exe' extension
+        WHICH="$LIST"`test -f "$LIST.exe" && echo '.exe'`
+	if test "$LIST" != "$WHICH"
+	then
+	  # detect distinct `foo' and `foo.exe'
+	  # (this needs IFS=<space>, to get the INODE numbers)
+	  IFS=" " INODE1=`ls -id "$LIST"` INODE2=`ls -id "$WHICH"`
+	  if test `set ref $INODE1; echo $2` != `set ref $INODE2; echo $2`
+	  then
+	    # `foo' matches first, followed by `foo.exe'
+	    test -z "$break" && echo "$LIST" || WHICH="$LIST"
+	  fi
+	  # reset IFS=<newline>, to get any further PROG names
+	  IFS=$'\n'
+	fi
+	echo "$WHICH"
+	$break
+      fi
+    done
+    test x"$WHICH" = x && echo >&2 "$CMD: $PROG: "${ERROR="unknown command"}
+  fi
+done
+test ${ERROR+set} && exit 1
+exit 0
+
+# $RCSfile: which,v $: end of file
Index: Daodan/MinGW/msys/1.0/bin/xzcmp
===================================================================
--- Daodan/MinGW/msys/1.0/bin/xzcmp	(revision 1046)
+++ Daodan/MinGW/msys/1.0/bin/xzcmp	(revision 1046)
@@ -0,0 +1,172 @@
+#!/bin/sh
+
+# Copyright (C) 1998, 2002, 2006, 2007 Free Software Foundation
+# Copyright (C) 1993 Jean-loup Gailly
+
+# Modified for XZ Utils by Andrew Dudman and Lasse Collin.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+#SET_PATH - This line is a placeholder to ease patching this script.
+
+# Instead of unsetting XZ_OPT, just make sure that xz will use file format
+# autodetection. This way memory usage limit and thread limit can be
+# specified via XZ_OPT. With gzip and bzip2 it's OK to just unset the
+# environment variables.
+xz='xz --format=auto'
+unset GZIP BZIP BZIP2
+
+case ${0##*/} in
+  *cmp*) prog=xzcmp; cmp=${CMP:-cmp};;
+  *)     prog=xzdiff; cmp=${DIFF:-diff};;
+esac
+
+version="$prog (XZ Utils) 5.0.3"
+
+usage="Usage: ${0##*/} [OPTION]... FILE1 [FILE2]
+Compare FILE1 to FILE2, using their uncompressed contents if they are
+compressed.  If FILE2 is omitted, then the files compared are FILE1 and
+FILE1 from which the compression format suffix has been stripped.
+
+Do comparisons like '$cmp' does.  OPTIONs are the same as for '$cmp'.
+
+Report bugs to <lasse.collin@tukaani.org>."
+
+# sed script to escape all ' for the shell, and then (to handle trailing
+# newlines correctly) turn trailing X on last line into '.
+escape='
+  s/'\''/'\''\\'\'''\''/g
+  $s/X$/'\''/
+'
+
+while :; do
+  case $1 in
+    --h*) printf '%s\n' "$usage" || exit 2; exit;;
+    --v*) echo "$version" || exit 2; exit;;
+    --) shift; break;;
+    -*\'*) cmp="$cmp '"`printf '%sX\n' "$1" | sed "$escape"`;;
+    -?*) cmp="$cmp '$1'";;
+    *) break;;
+  esac
+  shift
+done
+cmp="$cmp --"
+
+for file; do
+  test "X$file" = X- || <"$file" || exit 2
+done
+
+xz1=$xz
+xz2=$xz
+xz_status=0
+exec 3>&1
+
+if test $# -eq 1; then
+  case $1 in
+    *[-.]xz | *[-.]lzma | *.t[lx]z)
+      ;;
+    *[-.]bz2 | *.tbz | *.tbz2)
+      xz1=bzip2;;
+    *[-.][zZ] | *_z | *[-.]gz | *.t[ag]z)
+      xz1=gzip;;
+    *)
+      echo >&2 "$0: $1: Unknown compressed file name suffix"
+      exit 2;;
+  esac
+  case $1 in
+    *[-.][zZ] | *_z | *[-.][gx]z | *[-.]bz2 | *[-.]lzma)
+      FILE=`expr "X$1" : 'X\(.*\)[-.][abglmxzZ2]*$'`;;
+    *.t[abglx]z)
+      FILE=`expr "X$1" : 'X\(.*[-.]t\)[abglx]z$'`ar;;
+    *.tbz2)
+      FILE=`expr "X$1" : 'X\(.*[-.]t\)bz2$'`ar;;
+  esac
+  xz_status=$(
+    exec 4>&1
+    ($xz1 -cd -- "$1" 4>&-; echo $? >&4) 3>&- | eval "$cmp" - '"$FILE"' >&3
+  )
+elif test $# -eq 2; then
+  case $1 in
+    *[-.]bz2 | *.tbz | *.tbz2) xz1=bzip2;;
+    *[-.][zZ] | *_z | *[-.]gz | *.t[ag]z) xz1=gzip;;
+  esac
+  case $2 in
+    *[-.]bz2 | *.tbz | *.tbz2) xz2=bzip2;;
+    *[-.][zZ] | *_z | *[-.]gz | *.t[ag]z) xz2=gzip;;
+  esac
+  case $1 in
+    *[-.][zZ] | *_z | *[-.][gx]z | *[-.]bz2 | *[-.]lzma | *.t[abglx]z | *.tbz2 | -)
+      case "$2" in
+        *[-.][zZ] | *_z | *[-.][gx]z | *[-.]bz2 | *[-.]lzma | *.t[abglx]z | *.tbz2 | -)
+          if test "$1$2" = --; then
+            xz_status=$(
+              exec 4>&1
+              ($xz1 -cdfq - 4>&-; echo $? >&4) 3>&- |
+                eval "$cmp" - - >&3
+            )
+          elif # Reject Solaris 8's buggy /bin/bash 2.03.
+              echo X | (echo X | eval "$cmp" /dev/fd/5 - >/dev/null 2>&1) 5<&0; then
+            xz_status=$(
+              exec 4>&1
+              ($xz1 -cdfq -- "$1" 4>&-; echo $? >&4) 3>&- |
+                ( ($xz2 -cdfq -- "$2" 4>&-; echo $? >&4) 3>&- 5<&- </dev/null |
+                eval "$cmp" /dev/fd/5 - >&3) 5<&0
+            )
+            case $xz_status in
+              *[1-9]*) xz_status=1;;
+              *) xz_status=0;;
+            esac
+          else
+            F=`expr "/$2" : '.*/\(.*\)[-.][ablmtxz2]*$'` || F=$prog
+            tmp=
+            trap '
+              test -n "$tmp" && rm -f "$tmp"
+              (exit 2); exit 2
+            ' HUP INT PIPE TERM 0
+            tmp=`mktemp -t -- "$F.XXXXXX"` || exit 2
+            $xz2 -cdfq -- "$2" > "$tmp" || exit 2
+            xz_status=$(
+              exec 4>&1
+              ($xz1 -cdfq -- "$1" 4>&-; echo $? >&4) 3>&- |
+                eval "$cmp" - '"$tmp"' >&3
+            )
+            cmp_status=$?
+            rm -f "$tmp" || xz_status=$?
+            trap - HUP INT PIPE TERM 0
+            (exit $cmp_status)
+          fi;;
+      *)
+        xz_status=$(
+          exec 4>&1
+          ($xz1 -cdfq -- "$1" 4>&-; echo $? >&4) 3>&- |
+            eval "$cmp" - '"$2"' >&3
+        );;
+    esac;;
+  *)
+    case "$2" in
+      *[-.][zZ] | *_z | *[-.][gx]z | *[-.]bz2 | *[-.]lzma | *.t[abglx]z | *.tbz2 | -)
+        xz_status=$(
+          exec 4>&1
+          ($xz2 -cdfq -- "$2" 4>&-; echo $? >&4) 3>&- |
+            eval "$cmp" '"$1"' - >&3
+         );;
+      *)
+        eval "$cmp" '"$1"' '"$2"';;
+    esac;;
+  esac
+else
+  echo >&2 "$0: Invalid number of operands; try \`${0##*/} --help' for help"
+  exit 2
+fi
+
+cmp_status=$?
+test "$xz_status" -eq 0 || exit 2
+exit $cmp_status
Index: Daodan/MinGW/msys/1.0/bin/xzdiff
===================================================================
--- Daodan/MinGW/msys/1.0/bin/xzdiff	(revision 1046)
+++ Daodan/MinGW/msys/1.0/bin/xzdiff	(revision 1046)
@@ -0,0 +1,172 @@
+#!/bin/sh
+
+# Copyright (C) 1998, 2002, 2006, 2007 Free Software Foundation
+# Copyright (C) 1993 Jean-loup Gailly
+
+# Modified for XZ Utils by Andrew Dudman and Lasse Collin.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+#SET_PATH - This line is a placeholder to ease patching this script.
+
+# Instead of unsetting XZ_OPT, just make sure that xz will use file format
+# autodetection. This way memory usage limit and thread limit can be
+# specified via XZ_OPT. With gzip and bzip2 it's OK to just unset the
+# environment variables.
+xz='xz --format=auto'
+unset GZIP BZIP BZIP2
+
+case ${0##*/} in
+  *cmp*) prog=xzcmp; cmp=${CMP:-cmp};;
+  *)     prog=xzdiff; cmp=${DIFF:-diff};;
+esac
+
+version="$prog (XZ Utils) 5.0.3"
+
+usage="Usage: ${0##*/} [OPTION]... FILE1 [FILE2]
+Compare FILE1 to FILE2, using their uncompressed contents if they are
+compressed.  If FILE2 is omitted, then the files compared are FILE1 and
+FILE1 from which the compression format suffix has been stripped.
+
+Do comparisons like '$cmp' does.  OPTIONs are the same as for '$cmp'.
+
+Report bugs to <lasse.collin@tukaani.org>."
+
+# sed script to escape all ' for the shell, and then (to handle trailing
+# newlines correctly) turn trailing X on last line into '.
+escape='
+  s/'\''/'\''\\'\'''\''/g
+  $s/X$/'\''/
+'
+
+while :; do
+  case $1 in
+    --h*) printf '%s\n' "$usage" || exit 2; exit;;
+    --v*) echo "$version" || exit 2; exit;;
+    --) shift; break;;
+    -*\'*) cmp="$cmp '"`printf '%sX\n' "$1" | sed "$escape"`;;
+    -?*) cmp="$cmp '$1'";;
+    *) break;;
+  esac
+  shift
+done
+cmp="$cmp --"
+
+for file; do
+  test "X$file" = X- || <"$file" || exit 2
+done
+
+xz1=$xz
+xz2=$xz
+xz_status=0
+exec 3>&1
+
+if test $# -eq 1; then
+  case $1 in
+    *[-.]xz | *[-.]lzma | *.t[lx]z)
+      ;;
+    *[-.]bz2 | *.tbz | *.tbz2)
+      xz1=bzip2;;
+    *[-.][zZ] | *_z | *[-.]gz | *.t[ag]z)
+      xz1=gzip;;
+    *)
+      echo >&2 "$0: $1: Unknown compressed file name suffix"
+      exit 2;;
+  esac
+  case $1 in
+    *[-.][zZ] | *_z | *[-.][gx]z | *[-.]bz2 | *[-.]lzma)
+      FILE=`expr "X$1" : 'X\(.*\)[-.][abglmxzZ2]*$'`;;
+    *.t[abglx]z)
+      FILE=`expr "X$1" : 'X\(.*[-.]t\)[abglx]z$'`ar;;
+    *.tbz2)
+      FILE=`expr "X$1" : 'X\(.*[-.]t\)bz2$'`ar;;
+  esac
+  xz_status=$(
+    exec 4>&1
+    ($xz1 -cd -- "$1" 4>&-; echo $? >&4) 3>&- | eval "$cmp" - '"$FILE"' >&3
+  )
+elif test $# -eq 2; then
+  case $1 in
+    *[-.]bz2 | *.tbz | *.tbz2) xz1=bzip2;;
+    *[-.][zZ] | *_z | *[-.]gz | *.t[ag]z) xz1=gzip;;
+  esac
+  case $2 in
+    *[-.]bz2 | *.tbz | *.tbz2) xz2=bzip2;;
+    *[-.][zZ] | *_z | *[-.]gz | *.t[ag]z) xz2=gzip;;
+  esac
+  case $1 in
+    *[-.][zZ] | *_z | *[-.][gx]z | *[-.]bz2 | *[-.]lzma | *.t[abglx]z | *.tbz2 | -)
+      case "$2" in
+        *[-.][zZ] | *_z | *[-.][gx]z | *[-.]bz2 | *[-.]lzma | *.t[abglx]z | *.tbz2 | -)
+          if test "$1$2" = --; then
+            xz_status=$(
+              exec 4>&1
+              ($xz1 -cdfq - 4>&-; echo $? >&4) 3>&- |
+                eval "$cmp" - - >&3
+            )
+          elif # Reject Solaris 8's buggy /bin/bash 2.03.
+              echo X | (echo X | eval "$cmp" /dev/fd/5 - >/dev/null 2>&1) 5<&0; then
+            xz_status=$(
+              exec 4>&1
+              ($xz1 -cdfq -- "$1" 4>&-; echo $? >&4) 3>&- |
+                ( ($xz2 -cdfq -- "$2" 4>&-; echo $? >&4) 3>&- 5<&- </dev/null |
+                eval "$cmp" /dev/fd/5 - >&3) 5<&0
+            )
+            case $xz_status in
+              *[1-9]*) xz_status=1;;
+              *) xz_status=0;;
+            esac
+          else
+            F=`expr "/$2" : '.*/\(.*\)[-.][ablmtxz2]*$'` || F=$prog
+            tmp=
+            trap '
+              test -n "$tmp" && rm -f "$tmp"
+              (exit 2); exit 2
+            ' HUP INT PIPE TERM 0
+            tmp=`mktemp -t -- "$F.XXXXXX"` || exit 2
+            $xz2 -cdfq -- "$2" > "$tmp" || exit 2
+            xz_status=$(
+              exec 4>&1
+              ($xz1 -cdfq -- "$1" 4>&-; echo $? >&4) 3>&- |
+                eval "$cmp" - '"$tmp"' >&3
+            )
+            cmp_status=$?
+            rm -f "$tmp" || xz_status=$?
+            trap - HUP INT PIPE TERM 0
+            (exit $cmp_status)
+          fi;;
+      *)
+        xz_status=$(
+          exec 4>&1
+          ($xz1 -cdfq -- "$1" 4>&-; echo $? >&4) 3>&- |
+            eval "$cmp" - '"$2"' >&3
+        );;
+    esac;;
+  *)
+    case "$2" in
+      *[-.][zZ] | *_z | *[-.][gx]z | *[-.]bz2 | *[-.]lzma | *.t[abglx]z | *.tbz2 | -)
+        xz_status=$(
+          exec 4>&1
+          ($xz2 -cdfq -- "$2" 4>&-; echo $? >&4) 3>&- |
+            eval "$cmp" '"$1"' - >&3
+         );;
+      *)
+        eval "$cmp" '"$1"' '"$2"';;
+    esac;;
+  esac
+else
+  echo >&2 "$0: Invalid number of operands; try \`${0##*/} --help' for help"
+  exit 2
+fi
+
+cmp_status=$?
+test "$xz_status" -eq 0 || exit 2
+exit $cmp_status
Index: Daodan/MinGW/msys/1.0/bin/xzegrep
===================================================================
--- Daodan/MinGW/msys/1.0/bin/xzegrep	(revision 1046)
+++ Daodan/MinGW/msys/1.0/bin/xzegrep	(revision 1046)
@@ -0,0 +1,200 @@
+#!/bin/sh
+
+# xzgrep -- a wrapper around a grep program that decompresses files as needed
+# Adapted from a version sent by Charles Levert <charles@comm.polymtl.ca>
+
+# Copyright (C) 1998, 2001, 2002, 2006, 2007 Free Software Foundation
+# Copyright (C) 1993 Jean-loup Gailly
+
+# Modified for XZ Utils by Andrew Dudman and Lasse Collin.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+#SET_PATH - This line is a placeholder to ease patching this script.
+
+# Instead of unsetting XZ_OPT, just make sure that xz will use file format
+# autodetection. This way memory usage limit and thread limit can be
+# specified via XZ_OPT. With gzip and bzip2 it's OK to just unset the
+# environment variables.
+xz='xz --format=auto'
+unset GZIP BZIP BZIP2
+
+case ${0##*/} in
+  *egrep*) prog=xzegrep; grep=${GREP:-egrep};;
+  *fgrep*) prog=xzfgrep; grep=${GREP:-fgrep};;
+  *)       prog=xzgrep; grep=${GREP:-grep};;
+esac
+
+version="$prog (XZ Utils) 5.0.3"
+
+usage="Usage: ${0##*/} [OPTION]... [-e] PATTERN [FILE]...
+Look for instances of PATTERN in the input FILEs, using their
+uncompressed contents if they are compressed.
+
+OPTIONs are the same as for '$grep'.
+
+Report bugs to <lasse.collin@tukaani.org>."
+
+# sed script to escape all ' for the shell, and then (to handle trailing
+# newlines correctly) turn trailing X on last line into '.
+escape='
+  s/'\''/'\''\\'\'''\''/g
+  $s/X$/'\''/
+'
+operands=
+have_pat=0
+files_with_matches=0
+files_without_matches=0
+no_filename=0
+with_filename=0
+
+while test $# -ne 0; do
+  option=$1
+  shift
+  optarg=
+
+  case $option in
+  (-[0123456789abcdhHiIKLlnoqrRsTuUvVwxyzZ]?*)
+    arg2=-\'$(expr "X${option}X" : 'X-.[0-9]*\(.*\)' | sed "$escape")
+    eval "set -- $arg2 "'${1+"$@"}'
+    option=$(expr "X$option" : 'X\(-.[0-9]*\)');;
+  (--binary-*=* | --[lm]a*=* | --reg*=*)
+    ;;
+  (-[ABCDefm] | --binary-* | --file | --[lm]a* | --reg*)
+    case ${1?"$option option requires an argument"} in
+    (*\'*)
+      optarg=" '"$(printf '%sX\n' "$1" | sed "$escape");;
+    (*)
+      optarg=" '$1'";;
+    esac
+    shift;;
+  (--)
+    break;;
+  (-?*)
+    ;;
+  (*)
+    case $option in
+    (*\'*)
+      operands="$operands '"$(printf '%sX\n' "$option" | sed "$escape");;
+    (*)
+      operands="$operands '$option'";;
+    esac
+    ${POSIXLY_CORRECT+break}
+    continue;;
+  esac
+
+  case $option in
+  (-[drRzZ] | --di* | --exc* | --inc* | --rec* | --nu*)
+    printf >&2 '%s: %s: Option not supported\n' "$0" "$option"
+    exit 2;;
+  (-[ef]* | --file | --file=* | --reg*)
+    have_pat=1;;
+  (--h | --he | --hel | --help)
+    echo "$usage" || exit 2
+    exit;;
+  (-H | --wi | --wit | --with | --with- | --with-f | --with-fi \
+  | --with-fil | --with-file | --with-filen | --with-filena | --with-filenam \
+  | --with-filename)
+    with_filename=1
+    continue;;
+  (-l | --files-with-*)
+    files_with_matches=1;;
+  (-L | --files-witho*)
+    files_without_matches=1;;
+  (--no-f*)
+    no_filename=1;;
+  (-V | --v | --ve | --ver | --vers | --versi | --versio | --version)
+    echo "$version" || exit 2
+    exit;;
+  esac
+
+  case $option in
+  (*\'?*)
+    option=\'$(expr "X${option}X" : 'X\(.*\)' | sed "$escape");;
+  (*)
+    option="'$option'";;
+  esac
+
+  grep="$grep $option$optarg"
+done
+
+if test $files_with_matches -eq 1 || test $files_without_matches -eq 1; then
+  grep="$grep -q"
+fi
+
+eval "set -- $operands "'${1+"$@"}'
+
+if test $have_pat -eq 0; then
+  case ${1?"Missing pattern; try \`${0##*/} --help' for help"} in
+  (*\'*)
+    grep="$grep -- '"$(printf '%sX\n' "$1" | sed "$escape");;
+  (*)
+    grep="$grep -- '$1'";;
+  esac
+  shift
+fi
+
+if test $# -eq 0; then
+  set -- -
+fi
+
+exec 3>&1
+res=0
+
+for i; do
+  case $i in
+    *[-.][zZ] | *_z | *[-.]gz | *.t[ag]z) uncompress="gzip -cdfq";;
+    *[-.]bz2 | *[-.]tbz | *.tbz2) uncompress="bzip2 -cdfq";;
+    *) uncompress="$xz -cdfq";;
+  esac
+  # Fail if xz or grep (or sed) fails.
+  xz_status=$(
+    exec 5>&1
+    ($uncompress -- "$i" 5>&-; echo $? >&5) 3>&- |
+    if test $files_with_matches -eq 1; then
+      eval "$grep" && { printf '%s\n' "$i" || exit 2; }
+    elif test $files_without_matches -eq 1; then
+      eval "$grep" || {
+        r=$?
+        if test $r -eq 1; then
+          printf '%s\n' "$i" || r=2
+        fi
+        exit $r
+      }
+    elif test $with_filename -eq 0 &&
+         { test $# -eq 1 || test $no_filename -eq 1; }; then
+      eval "$grep"
+    else
+      case $i in
+      (*'
+'* | *'&'* | *'\'* | *'|'*)
+        i=$(printf '%s\n' "$i" |
+            sed '
+              $!N
+              $s/[&\|]/\\&/g
+              $s/\n/\\n/g
+            ');;
+      esac
+      sed_script="s|^|$i:|"
+
+      # Fail if grep or sed fails.
+      r=$(
+        exec 4>&1
+        (eval "$grep" 4>&-; echo $? >&4) 3>&- | sed "$sed_script" >&3 4>&-
+      ) || r=2
+      exit $r
+    fi >&3 5>&-
+  )
+  r=$?
+  test "$xz_status" -eq 0 || test "$xz_status" -eq 2 || r=2
+  test $res -lt $r && res=$r
+done
+exit $res
Index: Daodan/MinGW/msys/1.0/bin/xzfgrep
===================================================================
--- Daodan/MinGW/msys/1.0/bin/xzfgrep	(revision 1046)
+++ Daodan/MinGW/msys/1.0/bin/xzfgrep	(revision 1046)
@@ -0,0 +1,200 @@
+#!/bin/sh
+
+# xzgrep -- a wrapper around a grep program that decompresses files as needed
+# Adapted from a version sent by Charles Levert <charles@comm.polymtl.ca>
+
+# Copyright (C) 1998, 2001, 2002, 2006, 2007 Free Software Foundation
+# Copyright (C) 1993 Jean-loup Gailly
+
+# Modified for XZ Utils by Andrew Dudman and Lasse Collin.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+#SET_PATH - This line is a placeholder to ease patching this script.
+
+# Instead of unsetting XZ_OPT, just make sure that xz will use file format
+# autodetection. This way memory usage limit and thread limit can be
+# specified via XZ_OPT. With gzip and bzip2 it's OK to just unset the
+# environment variables.
+xz='xz --format=auto'
+unset GZIP BZIP BZIP2
+
+case ${0##*/} in
+  *egrep*) prog=xzegrep; grep=${GREP:-egrep};;
+  *fgrep*) prog=xzfgrep; grep=${GREP:-fgrep};;
+  *)       prog=xzgrep; grep=${GREP:-grep};;
+esac
+
+version="$prog (XZ Utils) 5.0.3"
+
+usage="Usage: ${0##*/} [OPTION]... [-e] PATTERN [FILE]...
+Look for instances of PATTERN in the input FILEs, using their
+uncompressed contents if they are compressed.
+
+OPTIONs are the same as for '$grep'.
+
+Report bugs to <lasse.collin@tukaani.org>."
+
+# sed script to escape all ' for the shell, and then (to handle trailing
+# newlines correctly) turn trailing X on last line into '.
+escape='
+  s/'\''/'\''\\'\'''\''/g
+  $s/X$/'\''/
+'
+operands=
+have_pat=0
+files_with_matches=0
+files_without_matches=0
+no_filename=0
+with_filename=0
+
+while test $# -ne 0; do
+  option=$1
+  shift
+  optarg=
+
+  case $option in
+  (-[0123456789abcdhHiIKLlnoqrRsTuUvVwxyzZ]?*)
+    arg2=-\'$(expr "X${option}X" : 'X-.[0-9]*\(.*\)' | sed "$escape")
+    eval "set -- $arg2 "'${1+"$@"}'
+    option=$(expr "X$option" : 'X\(-.[0-9]*\)');;
+  (--binary-*=* | --[lm]a*=* | --reg*=*)
+    ;;
+  (-[ABCDefm] | --binary-* | --file | --[lm]a* | --reg*)
+    case ${1?"$option option requires an argument"} in
+    (*\'*)
+      optarg=" '"$(printf '%sX\n' "$1" | sed "$escape");;
+    (*)
+      optarg=" '$1'";;
+    esac
+    shift;;
+  (--)
+    break;;
+  (-?*)
+    ;;
+  (*)
+    case $option in
+    (*\'*)
+      operands="$operands '"$(printf '%sX\n' "$option" | sed "$escape");;
+    (*)
+      operands="$operands '$option'";;
+    esac
+    ${POSIXLY_CORRECT+break}
+    continue;;
+  esac
+
+  case $option in
+  (-[drRzZ] | --di* | --exc* | --inc* | --rec* | --nu*)
+    printf >&2 '%s: %s: Option not supported\n' "$0" "$option"
+    exit 2;;
+  (-[ef]* | --file | --file=* | --reg*)
+    have_pat=1;;
+  (--h | --he | --hel | --help)
+    echo "$usage" || exit 2
+    exit;;
+  (-H | --wi | --wit | --with | --with- | --with-f | --with-fi \
+  | --with-fil | --with-file | --with-filen | --with-filena | --with-filenam \
+  | --with-filename)
+    with_filename=1
+    continue;;
+  (-l | --files-with-*)
+    files_with_matches=1;;
+  (-L | --files-witho*)
+    files_without_matches=1;;
+  (--no-f*)
+    no_filename=1;;
+  (-V | --v | --ve | --ver | --vers | --versi | --versio | --version)
+    echo "$version" || exit 2
+    exit;;
+  esac
+
+  case $option in
+  (*\'?*)
+    option=\'$(expr "X${option}X" : 'X\(.*\)' | sed "$escape");;
+  (*)
+    option="'$option'";;
+  esac
+
+  grep="$grep $option$optarg"
+done
+
+if test $files_with_matches -eq 1 || test $files_without_matches -eq 1; then
+  grep="$grep -q"
+fi
+
+eval "set -- $operands "'${1+"$@"}'
+
+if test $have_pat -eq 0; then
+  case ${1?"Missing pattern; try \`${0##*/} --help' for help"} in
+  (*\'*)
+    grep="$grep -- '"$(printf '%sX\n' "$1" | sed "$escape");;
+  (*)
+    grep="$grep -- '$1'";;
+  esac
+  shift
+fi
+
+if test $# -eq 0; then
+  set -- -
+fi
+
+exec 3>&1
+res=0
+
+for i; do
+  case $i in
+    *[-.][zZ] | *_z | *[-.]gz | *.t[ag]z) uncompress="gzip -cdfq";;
+    *[-.]bz2 | *[-.]tbz | *.tbz2) uncompress="bzip2 -cdfq";;
+    *) uncompress="$xz -cdfq";;
+  esac
+  # Fail if xz or grep (or sed) fails.
+  xz_status=$(
+    exec 5>&1
+    ($uncompress -- "$i" 5>&-; echo $? >&5) 3>&- |
+    if test $files_with_matches -eq 1; then
+      eval "$grep" && { printf '%s\n' "$i" || exit 2; }
+    elif test $files_without_matches -eq 1; then
+      eval "$grep" || {
+        r=$?
+        if test $r -eq 1; then
+          printf '%s\n' "$i" || r=2
+        fi
+        exit $r
+      }
+    elif test $with_filename -eq 0 &&
+         { test $# -eq 1 || test $no_filename -eq 1; }; then
+      eval "$grep"
+    else
+      case $i in
+      (*'
+'* | *'&'* | *'\'* | *'|'*)
+        i=$(printf '%s\n' "$i" |
+            sed '
+              $!N
+              $s/[&\|]/\\&/g
+              $s/\n/\\n/g
+            ');;
+      esac
+      sed_script="s|^|$i:|"
+
+      # Fail if grep or sed fails.
+      r=$(
+        exec 4>&1
+        (eval "$grep" 4>&-; echo $? >&4) 3>&- | sed "$sed_script" >&3 4>&-
+      ) || r=2
+      exit $r
+    fi >&3 5>&-
+  )
+  r=$?
+  test "$xz_status" -eq 0 || test "$xz_status" -eq 2 || r=2
+  test $res -lt $r && res=$r
+done
+exit $res
Index: Daodan/MinGW/msys/1.0/bin/xzgrep
===================================================================
--- Daodan/MinGW/msys/1.0/bin/xzgrep	(revision 1046)
+++ Daodan/MinGW/msys/1.0/bin/xzgrep	(revision 1046)
@@ -0,0 +1,200 @@
+#!/bin/sh
+
+# xzgrep -- a wrapper around a grep program that decompresses files as needed
+# Adapted from a version sent by Charles Levert <charles@comm.polymtl.ca>
+
+# Copyright (C) 1998, 2001, 2002, 2006, 2007 Free Software Foundation
+# Copyright (C) 1993 Jean-loup Gailly
+
+# Modified for XZ Utils by Andrew Dudman and Lasse Collin.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+#SET_PATH - This line is a placeholder to ease patching this script.
+
+# Instead of unsetting XZ_OPT, just make sure that xz will use file format
+# autodetection. This way memory usage limit and thread limit can be
+# specified via XZ_OPT. With gzip and bzip2 it's OK to just unset the
+# environment variables.
+xz='xz --format=auto'
+unset GZIP BZIP BZIP2
+
+case ${0##*/} in
+  *egrep*) prog=xzegrep; grep=${GREP:-egrep};;
+  *fgrep*) prog=xzfgrep; grep=${GREP:-fgrep};;
+  *)       prog=xzgrep; grep=${GREP:-grep};;
+esac
+
+version="$prog (XZ Utils) 5.0.3"
+
+usage="Usage: ${0##*/} [OPTION]... [-e] PATTERN [FILE]...
+Look for instances of PATTERN in the input FILEs, using their
+uncompressed contents if they are compressed.
+
+OPTIONs are the same as for '$grep'.
+
+Report bugs to <lasse.collin@tukaani.org>."
+
+# sed script to escape all ' for the shell, and then (to handle trailing
+# newlines correctly) turn trailing X on last line into '.
+escape='
+  s/'\''/'\''\\'\'''\''/g
+  $s/X$/'\''/
+'
+operands=
+have_pat=0
+files_with_matches=0
+files_without_matches=0
+no_filename=0
+with_filename=0
+
+while test $# -ne 0; do
+  option=$1
+  shift
+  optarg=
+
+  case $option in
+  (-[0123456789abcdhHiIKLlnoqrRsTuUvVwxyzZ]?*)
+    arg2=-\'$(expr "X${option}X" : 'X-.[0-9]*\(.*\)' | sed "$escape")
+    eval "set -- $arg2 "'${1+"$@"}'
+    option=$(expr "X$option" : 'X\(-.[0-9]*\)');;
+  (--binary-*=* | --[lm]a*=* | --reg*=*)
+    ;;
+  (-[ABCDefm] | --binary-* | --file | --[lm]a* | --reg*)
+    case ${1?"$option option requires an argument"} in
+    (*\'*)
+      optarg=" '"$(printf '%sX\n' "$1" | sed "$escape");;
+    (*)
+      optarg=" '$1'";;
+    esac
+    shift;;
+  (--)
+    break;;
+  (-?*)
+    ;;
+  (*)
+    case $option in
+    (*\'*)
+      operands="$operands '"$(printf '%sX\n' "$option" | sed "$escape");;
+    (*)
+      operands="$operands '$option'";;
+    esac
+    ${POSIXLY_CORRECT+break}
+    continue;;
+  esac
+
+  case $option in
+  (-[drRzZ] | --di* | --exc* | --inc* | --rec* | --nu*)
+    printf >&2 '%s: %s: Option not supported\n' "$0" "$option"
+    exit 2;;
+  (-[ef]* | --file | --file=* | --reg*)
+    have_pat=1;;
+  (--h | --he | --hel | --help)
+    echo "$usage" || exit 2
+    exit;;
+  (-H | --wi | --wit | --with | --with- | --with-f | --with-fi \
+  | --with-fil | --with-file | --with-filen | --with-filena | --with-filenam \
+  | --with-filename)
+    with_filename=1
+    continue;;
+  (-l | --files-with-*)
+    files_with_matches=1;;
+  (-L | --files-witho*)
+    files_without_matches=1;;
+  (--no-f*)
+    no_filename=1;;
+  (-V | --v | --ve | --ver | --vers | --versi | --versio | --version)
+    echo "$version" || exit 2
+    exit;;
+  esac
+
+  case $option in
+  (*\'?*)
+    option=\'$(expr "X${option}X" : 'X\(.*\)' | sed "$escape");;
+  (*)
+    option="'$option'";;
+  esac
+
+  grep="$grep $option$optarg"
+done
+
+if test $files_with_matches -eq 1 || test $files_without_matches -eq 1; then
+  grep="$grep -q"
+fi
+
+eval "set -- $operands "'${1+"$@"}'
+
+if test $have_pat -eq 0; then
+  case ${1?"Missing pattern; try \`${0##*/} --help' for help"} in
+  (*\'*)
+    grep="$grep -- '"$(printf '%sX\n' "$1" | sed "$escape");;
+  (*)
+    grep="$grep -- '$1'";;
+  esac
+  shift
+fi
+
+if test $# -eq 0; then
+  set -- -
+fi
+
+exec 3>&1
+res=0
+
+for i; do
+  case $i in
+    *[-.][zZ] | *_z | *[-.]gz | *.t[ag]z) uncompress="gzip -cdfq";;
+    *[-.]bz2 | *[-.]tbz | *.tbz2) uncompress="bzip2 -cdfq";;
+    *) uncompress="$xz -cdfq";;
+  esac
+  # Fail if xz or grep (or sed) fails.
+  xz_status=$(
+    exec 5>&1
+    ($uncompress -- "$i" 5>&-; echo $? >&5) 3>&- |
+    if test $files_with_matches -eq 1; then
+      eval "$grep" && { printf '%s\n' "$i" || exit 2; }
+    elif test $files_without_matches -eq 1; then
+      eval "$grep" || {
+        r=$?
+        if test $r -eq 1; then
+          printf '%s\n' "$i" || r=2
+        fi
+        exit $r
+      }
+    elif test $with_filename -eq 0 &&
+         { test $# -eq 1 || test $no_filename -eq 1; }; then
+      eval "$grep"
+    else
+      case $i in
+      (*'
+'* | *'&'* | *'\'* | *'|'*)
+        i=$(printf '%s\n' "$i" |
+            sed '
+              $!N
+              $s/[&\|]/\\&/g
+              $s/\n/\\n/g
+            ');;
+      esac
+      sed_script="s|^|$i:|"
+
+      # Fail if grep or sed fails.
+      r=$(
+        exec 4>&1
+        (eval "$grep" 4>&-; echo $? >&4) 3>&- | sed "$sed_script" >&3 4>&-
+      ) || r=2
+      exit $r
+    fi >&3 5>&-
+  )
+  r=$?
+  test "$xz_status" -eq 0 || test "$xz_status" -eq 2 || r=2
+  test $res -lt $r && res=$r
+done
+exit $res
Index: Daodan/MinGW/msys/1.0/bin/xzless
===================================================================
--- Daodan/MinGW/msys/1.0/bin/xzless	(revision 1046)
+++ Daodan/MinGW/msys/1.0/bin/xzless	(revision 1046)
@@ -0,0 +1,58 @@
+#!/bin/sh
+
+# Copyright (C) 1998, 2002, 2006, 2007 Free Software Foundation
+
+# The original version for gzip was written by Paul Eggert.
+# Modified for XZ Utils by Andrew Dudman and Lasse Collin.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+#SET_PATH - This line is a placeholder to ease patching this script.
+
+# Instead of unsetting XZ_OPT, just make sure that xz will use file format
+# autodetection. This way memory usage limit and thread limit can be
+# specified via XZ_OPT.
+xz='xz --format=auto'
+
+version='xzless (XZ Utils) 5.0.3'
+
+usage="Usage: ${0##*/} [OPTION]... [FILE]...
+Like 'less', but operate on the uncompressed contents of xz compressed FILEs.
+
+Options are the same as for 'less'.
+
+Report bugs to <lasse.collin@tukaani.org>."
+
+case $1 in
+	--help)    echo "$usage" || exit 2; exit;;
+	--version) echo "$version" || exit 2; exit;;
+esac
+
+if test "${LESSMETACHARS+set}" != set; then
+	# Work around a bug in less 394 and earlier;
+	# it mishandles the metacharacters '$%=~'.
+	space=' '
+	tab='	'
+	nl='
+'
+	LESSMETACHARS="$space$tab$nl'"';*?"()<>[|&^`#\$%=~'
+fi
+
+if test "$(less -V | { read ver && echo ${ver#less }; })" -ge 429; then
+	# less 429 or later: LESSOPEN pipe will be used on
+	# standard input if $LESSOPEN begins with |-.
+	LESSOPEN="|-$xz -cdfq -- %s"
+else
+	LESSOPEN="|$xz -cdfq -- %s"
+fi
+export LESSMETACHARS LESSOPEN
+
+exec less "$@"
Index: Daodan/MinGW/msys/1.0/bin/xzmore
===================================================================
--- Daodan/MinGW/msys/1.0/bin/xzmore	(revision 1046)
+++ Daodan/MinGW/msys/1.0/bin/xzmore	(revision 1046)
@@ -0,0 +1,78 @@
+#!/bin/sh
+
+# Copyright (C) 2001, 2002, 2007 Free Software Foundation
+# Copyright (C) 1992, 1993 Jean-loup Gailly
+
+# Modified for XZ Utils by Andrew Dudman and Lasse Collin.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+#SET_PATH - This line is a placeholder to ease patching this script.
+
+# Instead of unsetting XZ_OPT, just make sure that xz will use file format
+# autodetection. This way memory usage limit and thread limit can be
+# specified via XZ_OPT.
+xz='xz --format=auto'
+
+version='xzmore (XZ Utils) 5.0.3'
+
+usage="Usage: ${0##*/} [OPTION]... [FILE]...
+Like 'more', but operate on the uncompressed contents of xz compressed FILEs.
+
+Report bugs to <lasse.collin@tukaani.org>."
+
+case $1 in
+	--help)    echo "$usage" || exit 2; exit;;
+	--version) echo "$version" || exit 2; exit;;
+esac
+
+oldtty=`stty -g 2>/dev/null`
+if stty -cbreak 2>/dev/null; then
+	cb='cbreak'; ncb='-cbreak'
+else
+	# 'stty min 1' resets eof to ^a on both SunOS and SysV!
+	cb='min 1 -icanon'; ncb='icanon eof ^d'
+fi
+if test $? -eq 0 && test -n "$oldtty"; then
+	trap 'stty $oldtty 2>/dev/null; exit' 0 2 3 5 10 13 15
+else
+	trap 'stty $ncb echo 2>/dev/null; exit' 0 2 3 5 10 13 15
+fi
+
+if test $# = 0; then
+	if test -t 0; then
+		echo "$usage"; exit 1
+	else
+		$xz -cdfq | eval "${PAGER:-more}"
+	fi
+else
+	FIRST=1
+	for FILE; do
+		< "$FILE" || continue
+		if test $FIRST -eq 0; then
+			printf "%s--More--(Next file: %s)" "" "$FILE"
+			stty $cb -echo 2>/dev/null
+			ANS=`dd bs=1 count=1 2>/dev/null`
+			stty $ncb echo 2>/dev/null
+			echo " "
+			case "$ANS" in
+				[eq]) exit;;
+			esac
+		fi
+		if test "$ANS" != 's'; then
+			echo "------> $FILE <------"
+			$xz -cdfq -- "$FILE" | eval "${PAGER:-more}"
+		fi
+		if test -t 1; then
+			FIRST=0
+		fi
+	done
+fi
Index: Daodan/MinGW/msys/1.0/bin/zcat
===================================================================
--- Daodan/MinGW/msys/1.0/bin/zcat	(revision 1046)
+++ Daodan/MinGW/msys/1.0/bin/zcat	(revision 1046)
@@ -0,0 +1,3 @@
+#!/bin/sh
+PATH=${GZIP_BINDIR-'/usr/bin'}:$PATH
+exec gzip -cd "$@"
Index: Daodan/MinGW/msys/1.0/bin/zcmp
===================================================================
--- Daodan/MinGW/msys/1.0/bin/zcmp	(revision 1046)
+++ Daodan/MinGW/msys/1.0/bin/zcmp	(revision 1046)
@@ -0,0 +1,3 @@
+#!/bin/sh
+PATH=${GZIP_BINDIR-'/usr/bin'}:$PATH
+exec zdiff --__cmp "$@"
Index: Daodan/MinGW/msys/1.0/bin/zdiff
===================================================================
--- Daodan/MinGW/msys/1.0/bin/zdiff	(revision 1046)
+++ Daodan/MinGW/msys/1.0/bin/zdiff	(revision 1046)
@@ -0,0 +1,161 @@
+#!/bin/sh
+# sh is buggy on RS/6000 AIX 3.2. Replace above line with #!/bin/ksh
+
+# Copyright (C) 1998, 2002, 2006, 2007 Free Software Foundation
+# Copyright (C) 1993 Jean-loup Gailly
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+PATH=${GZIP_BINDIR-'/usr/bin'}:$PATH
+
+case $1 in
+  --__cmp) shift
+	prog=cmp;  cmp='${CMP-cmp}'  ;;
+  *)    prog=diff; cmp='${DIFF-diff}';;
+esac
+
+version="z$prog (gzip) 1.3.12
+Copyright (C) 2007 Free Software Foundation, Inc.
+This is free software.  You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+
+Written by Jean-loup Gailly."
+
+usage="Usage: $0 [OPTION]... FILE1 [FILE2]
+Compare FILE1 to FILE2, using their uncompressed contents if they are
+compressed.  If FILE2 is omitted, compare FILE1 to the uncompressed
+contents of FILE1.gz.  Do comparisons like '$prog' does.
+
+OPTIONs are the same as for '$prog'.
+
+Report bugs to <bug-gzip@gnu.org>."
+
+# sed script to escape all ' for the shell, and then (to handle trailing
+# newlines correctly) turn trailing X on last line into '.
+escape='
+  s/'\''/'\''\\'\'''\''/g
+  $s/X$/'\''/
+'
+
+while :; do
+  case $1 in
+  --h*) printf '%s\n' "$usage" || exit 2; exit;;
+  --v*) echo "$version" || exit 2; exit;;
+  --) shift; break;;
+  -*\'*) cmp="$cmp '"`printf '%sX\n' "$1" | sed "$escape"`;;
+  -?*) cmp="$cmp '$1'";;
+  *) break;;
+  esac
+  shift
+done
+cmp="$cmp --"
+
+for file
+do
+  test "X$file" = X- || <"$file" || exit 2
+done
+
+gzip_status=0
+exec 3>&1
+
+if test $# -eq 1; then
+  case $1 in
+  *[-.]gz* | *[-.][zZ] | *.t[ga]z)
+    FILE=`expr "X$1" : 'X\(.*\)[-.][zZtga]*$'`
+    gzip_status=$(
+      exec 4>&1
+      (gzip -cd -- "$1" 4>&-; echo $? >&4) 3>&- | eval "$cmp" - '"$FILE"' >&3
+    );;
+  *)
+    echo >&2 "$0: $1: unknown compressed file extension"
+    exit 2;;
+  esac
+elif test $# -eq 2; then
+	case "$1" in
+	*[-.]gz* | *[-.][zZ] | *.t[ga]z | -)
+                case "$2" in
+		*[-.]gz* | *[-.][zZ] | *.t[ga]z | -)
+		    if test "$1$2" = --; then
+			gzip_status=$(
+			  exec 4>&1
+			  (gzip -cdfq - 4>&-; echo $? >&4) 3>&- |
+			    eval "$cmp" - - >&3
+			)
+		    elif
+			# Reject Solaris 8's buggy /bin/bash 2.03.
+			echo X |
+			 (echo X | eval "$cmp" /dev/fd/5 - >/dev/null 2>&1) \
+				5<&0
+		    then
+			gzip_status=$(
+			  exec 4>&1
+			  (gzip -cdfq -- "$1" 4>&-; echo $? >&4) 3>&- |
+			    ( (gzip -cdfq -- "$2" 4>&-; echo $? >&4) 3>&- 5<&- </dev/null |
+			       eval "$cmp" /dev/fd/5 - >&3) 5<&0
+			)
+			case $gzip_status in
+			  *[1-9]*) gzip_status=1;;
+			  *) gzip_status=0;;
+			esac
+		    else
+			F=`expr "/$2" : '.*/\(.*\)[-.][zZtga]*$'` || F=$prog
+			tmp=
+			trap '
+			  test -n "$tmp" && rm -f "$tmp"
+			  (exit 2); exit 2
+			' HUP INT PIPE TERM 0
+			if type mktemp >/dev/null 2>&1; then
+			  tmp=`mktemp -t -- "$F.XXXXXX"` || exit 2
+			else
+			  set -C
+			  tmp=${TMPDIR-/tmp}/$F.$$
+			fi
+			gzip -cdfq -- "$2" > "$tmp" || exit 2
+			gzip_status=$(
+			  exec 4>&1
+			  (gzip -cdfq -- "$1" 4>&-; echo $? >&4) 3>&- |
+			    eval "$cmp" - '"$tmp"' >&3
+			)
+                        cmp_status=$?
+			rm -f "$tmp" || gzip_status=$?
+			trap - HUP INT PIPE TERM 0
+			(exit $cmp_status)
+		    fi;;
+		*)
+		    gzip_status=$(
+		      exec 4>&1
+		      (gzip -cdfq -- "$1" 4>&-; echo $? >&4) 3>&- |
+		        eval "$cmp" - '"$2"' >&3
+		    );;
+                esac;;
+        *)      case "$2" in
+		*[-.]gz* | *[-.][zZ] | *.t[ga]z | -)
+			gzip_status=$(
+			  exec 4>&1
+			  (gzip -cdfq -- "$2" 4>&-; echo $? >&4) 3>&- |
+			    eval "$cmp" '"$1"' - >&3
+			);;
+		*)	eval "$cmp" '"$1"' '"$2"';;
+                esac;;
+	esac
+else
+	echo >&2 "$0: invalid number of operands; try \`$0 --help' for help"
+	exit 2
+fi
+
+cmp_status=$?
+test "$gzip_status" -eq 0 || exit 2
+exit $cmp_status
Index: Daodan/MinGW/msys/1.0/bin/zegrep
===================================================================
--- Daodan/MinGW/msys/1.0/bin/zegrep	(revision 1046)
+++ Daodan/MinGW/msys/1.0/bin/zegrep	(revision 1046)
@@ -0,0 +1,3 @@
+#!/bin/sh
+PATH=${GZIP_BINDIR-'/usr/bin'}:$PATH
+exec zgrep -E "$@"
Index: Daodan/MinGW/msys/1.0/bin/zfgrep
===================================================================
--- Daodan/MinGW/msys/1.0/bin/zfgrep	(revision 1046)
+++ Daodan/MinGW/msys/1.0/bin/zfgrep	(revision 1046)
@@ -0,0 +1,3 @@
+#!/bin/sh
+PATH=${GZIP_BINDIR-'/usr/bin'}:$PATH
+exec zgrep -F "$@"
Index: Daodan/MinGW/msys/1.0/bin/zforce
===================================================================
--- Daodan/MinGW/msys/1.0/bin/zforce	(revision 1046)
+++ Daodan/MinGW/msys/1.0/bin/zforce	(revision 1046)
@@ -0,0 +1,71 @@
+#!/bin/sh
+# zforce: force a gz extension on all gzip files so that gzip will not
+# compress them twice.
+#
+# This can be useful for files with names truncated after a file transfer.
+# 12345678901234 is renamed to 12345678901.gz
+
+
+# Copyright (C) 2002, 2007 Free Software Foundation
+# Copyright (C) 1993 Jean-loup Gailly
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+PATH="${GZIP_BINDIR-'/usr/bin'}:$PATH"; export PATH
+
+version="zforce (gzip) 1.3.12
+Copyright (C) 2007 Free Software Foundation, Inc.
+This is free software.  You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+
+Written by Jean-loup Gailly."
+
+usage="Usage: $0 [FILE]...
+Force a .gz extension on all compressed FILEs so that gzip will
+not compress them twice.
+
+Report bugs to <bug-gzip@gnu.org>."
+
+if test $# = 0; then
+  echo "$usage"
+  exit 1
+fi
+
+res=0
+for i do
+  case "$i" in
+  --h*) exec echo "$usage";;
+  --v*) exec echo "$version";;
+  *[-.]z | *[-.]gz | *.t[ag]z) continue;;
+  esac
+
+  if test ! -f "$i" ; then
+    echo zforce: $i not a file
+    res=1
+    continue
+  fi
+
+  if gzip -lv < "$i" 2>/dev/null | grep '^defl' > /dev/null; then
+
+    new="$i.gz"
+    if mv "$i" "$new"; then
+      echo $i -- replaced with $new
+    else
+      res=$?
+    fi
+  fi
+done
+exit $res
Index: Daodan/MinGW/msys/1.0/bin/zgrep
===================================================================
--- Daodan/MinGW/msys/1.0/bin/zgrep	(revision 1046)
+++ Daodan/MinGW/msys/1.0/bin/zgrep	(revision 1046)
@@ -0,0 +1,209 @@
+#!/bin/sh
+
+# zgrep -- a wrapper around a grep program that decompresses files as needed
+# Adapted from a version sent by Charles Levert <charles@comm.polymtl.ca>
+
+# Copyright (C) 1998, 2001, 2002, 2006, 2007 Free Software Foundation
+# Copyright (C) 1993 Jean-loup Gailly
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+PATH=${GZIP_BINDIR-'/usr/bin'}:$PATH
+grep='${GREP-grep}'
+
+version='z$grep (gzip) 1.3.12
+Copyright (C) 2007 Free Software Foundation, Inc.
+This is free software.  You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+
+Written by Jean-loup Gailly.'
+
+usage="Usage: $0 [OPTION]... [-e] PATTERN [FILE]...
+Look for instances of PATTERN in the input FILEs, using their
+uncompressed contents if they are compressed.
+
+OPTIONs are the same as for 'grep'.
+
+Report bugs to <bug-gzip@gnu.org>."
+
+# sed script to escape all ' for the shell, and then (to handle trailing
+# newlines correctly) turn trailing X on last line into '.
+escape='
+  s/'\''/'\''\\'\'''\''/g
+  $s/X$/'\''/
+'
+operands=
+have_pat=0
+pat_on_stdin=0
+files_with_matches=0
+files_without_matches=0
+no_filename=0
+with_filename=0
+
+while test $# -ne 0; do
+  option=$1
+  shift
+  optarg=
+
+  case $option in
+  (-[0123456789abcdhHiIKLlnoqrRsTuUvVwxyzZ]?*)
+    arg2=-\'$(expr "X${option}X" : 'X-.[0-9]*\(.*\)' | sed "$escape")
+    eval "set -- $arg2 "'${1+"$@"}'
+    option=$(expr "X$option" : 'X\(-.[0-9]*\)');;
+  (--binary-*=* | --[lm]a*=* | --reg*=*)
+    ;;
+  (-[ABCDefm] | --binary-* | --file | --[lm]a* | --reg*)
+    case ${1?"$option option requires an argument"} in
+    (*\'*)
+      optarg=" '"$(printf '%sX\n' "$1" | sed "$escape");;
+    (*)
+      optarg=" '$1'";;
+    esac
+    shift;;
+  (--)
+    break;;
+  (-?*)
+    ;;
+  (*)
+    case $option in
+    (*\'*)
+      operands="$operands '"$(printf '%sX\n' "$option" | sed "$escape");;
+    (*)
+      operands="$operands '$option'";;
+    esac
+    ${POSIXLY_CORRECT+break}
+    continue;;
+  esac
+
+  case $option in
+  (-[drRzZ] | --di* | --exc* | --inc* | --rec* | --nu*)
+    printf >&2 '%s: %s: option not supported\n' "$0" "$option"
+    exit 2;;
+  (-[ef]* | --file | --file=* | --reg*)
+    # The pattern is coming from a file rather than the command-line.
+    # If the file is actually stdin then we need to do a little
+    # magic, (since we use stdin to pass the gzip output to grep).
+    # So find a free fd and change the argument to then use this
+    # file descriptor for the pattern.
+    case $optarg in
+    (" '-'" | " '/dev/stdin'" | " '/dev/fd/0'")
+      pat_on_stdin=1
+      # Start search from 6 since the script already uses 3 and 5
+      for fd in $(seq 6 254); do
+	  if test ! -e /dev/fd/$fd; then
+	      pat_fd=$fd
+	      break;
+	  fi
+      done
+      optarg=/dev/fd/$pat_fd;
+    esac
+    have_pat=1;;
+  (--h | --he | --hel | --help)
+    echo "$usage" || exit 2
+    exit;;
+  (-H | --wi | --wit | --with | --with- | --with-f | --with-fi \
+  | --with-fil | --with-file | --with-filen | --with-filena | --with-filenam \
+  | --with-filename)
+    with_filename=1
+    continue;;
+  (-l | --files-with-*)
+    files_with_matches=1;;
+  (-L | --files-witho*)
+    files_without_matches=1;;
+  (-h | --no-f*)
+    no_filename=1;;
+  (-V | --v | --ve | --ver | --vers | --versi | --versio | --version)
+    echo "$version" || exit 2
+    exit;;
+  esac
+
+  case $option in
+  (*\'?*)
+    option=\'$(expr "X${option}X" : 'X\(.*\)' | sed "$escape");;
+  (*)
+    option="'$option'";;
+  esac
+
+  grep="$grep $option$optarg"
+done
+
+eval "set -- $operands "'${1+"$@"}'
+
+if test $have_pat -eq 0; then
+  case ${1?"missing pattern; try \`$0 --help' for help"} in
+  (*\'*)
+    grep="$grep -- '"$(printf '%sX\n' "$1" | sed "$escape");;
+  (*)
+    grep="$grep -- '$1'";;
+  esac
+  shift
+fi
+
+if test $# -eq 0; then
+  set -- -
+fi
+
+exec 3>&1
+res=0
+
+for i
+do
+  # Fail if gzip or grep (or sed) fails.
+  gzip_status=$(
+    exec 5>&1
+    if test $pat_on_stdin -eq 1; then
+	eval "exec $pat_fd<&0"
+    fi
+    (gzip -cdfq -- "$i" 5>&-; echo $? >&5) 3>&- |
+    if test $files_with_matches -eq 1; then
+      eval "$grep" >/dev/null && { printf '%s\n' "$i" || exit 2; }
+    elif test $files_without_matches -eq 1; then
+      eval "$grep" >/dev/null || {
+	r=$?
+	if test $r -eq 1; then
+	  printf '%s\n' "$i" || r=2
+	fi
+	exit $r
+      }
+    elif test $with_filename -eq 0 &&
+	 { test $# -eq 1 || test $no_filename -eq 1; }; then
+      eval "$grep"
+    else
+      case $i in
+      (*'
+'* | *'&'* | *'\'* | *'|'*)
+        i=$(printf '%s\n' "$i" |
+	    sed '
+	      $!N
+	      $s/[&\|]/\\&/g
+	      $s/\n/\\n/g
+	    ');;
+      esac
+      sed_script="s|^|$i:|"
+
+      # Fail if grep or sed fails.
+      r=$(
+	exec 4>&1
+	(eval "$grep" 4>&-; echo $? >&4) 3>&- | sed "$sed_script" >&3 4>&-
+      ) || r=2
+      exit $r
+    fi >&3 5>&-
+  )
+  r=$?
+  test "$gzip_status" -eq 0 || test "$gzip_status" -eq 2 || r=2
+  test $res -lt $r && res=$r
+done
+exit $res
Index: Daodan/MinGW/msys/1.0/bin/zless
===================================================================
--- Daodan/MinGW/msys/1.0/bin/zless	(revision 1046)
+++ Daodan/MinGW/msys/1.0/bin/zless	(revision 1046)
@@ -0,0 +1,53 @@
+#!/bin/sh
+
+# Copyright (C) 1998, 2002, 2006, 2007 Free Software Foundation
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+PATH="${GZIP_BINDIR-'/usr/bin'}:$PATH"; export PATH
+
+version="zless (gzip) 1.3.12
+Copyright (C) 2007 Free Software Foundation, Inc.
+This is free software.  You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+
+Written by Paul Eggert."
+
+usage="Usage: $0 [OPTION]... [FILE]...
+Like 'less', but operate on the uncompressed contents of any compressed FILEs.
+
+Options are the same as for 'less'.
+
+Report bugs to <bug-gzip@gnu.org>."
+
+case $1 in
+--help)    exec echo "$usage";;
+--version) exec echo "$version";;
+esac
+
+if test "${LESSMETACHARS+set}" != set; then
+  # Work around a bug in less 394 and earlier;
+  # it mishandles the metacharacters '$%=~'.
+  space=' '
+  tab='	'
+  newline='
+'
+  LESSMETACHARS="$space$tab$newline'"';*?"()<>[|&^`#\$%=~'
+  export LESSMETACHARS
+fi
+
+LESSOPEN="|gzip -cdfq -- %s"; export LESSOPEN
+exec less "$@"
Index: Daodan/MinGW/msys/1.0/bin/zmore
===================================================================
--- Daodan/MinGW/msys/1.0/bin/zmore	(revision 1046)
+++ Daodan/MinGW/msys/1.0/bin/zmore	(revision 1046)
@@ -0,0 +1,88 @@
+#!/bin/sh
+
+# Copyright (C) 2001, 2002, 2007 Free Software Foundation
+# Copyright (C) 1992, 1993 Jean-loup Gailly
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+PATH="${GZIP_BINDIR-'/usr/bin'}:$PATH"; export PATH
+
+version="zmore (gzip) 1.3.12
+Copyright (C) 2007 Free Software Foundation, Inc.
+This is free software.  You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+
+Written by Jean-loup Gailly."
+
+usage="Usage: $0 [OPTION]... [FILE]...
+Like 'more', but operate on the uncompressed contents of any compressed FILEs.
+
+Report bugs to <bug-gzip@gnu.org>."
+
+if test "`echo -n a`" = "-n a"; then
+  # looks like a SysV system:
+  n1=''; n2='\c'
+else
+  n1='-n'; n2=''
+fi
+oldtty=`stty -g 2>/dev/null`
+if stty -cbreak 2>/dev/null; then
+  cb='cbreak'; ncb='-cbreak'
+else
+  # 'stty min 1' resets eof to ^a on both SunOS and SysV!
+  cb='min 1 -icanon'; ncb='icanon eof ^d'
+fi
+if test $? -eq 0 && test -n "$oldtty"; then
+   trap 'stty $oldtty 2>/dev/null; exit' 0 2 3 5 10 13 15
+else
+   trap 'stty $ncb echo 2>/dev/null; exit' 0 2 3 5 10 13 15
+fi
+
+if test $# = 0; then
+    if test -t 0; then
+	echo "$usage"
+    else
+	gzip -cdfq | eval more
+    fi
+else
+    FIRST=1
+    for FILE
+    do
+	case $FILE in
+	--h*) exec echo "$usage";;
+	--v*) exec echo "$version";;
+	esac
+
+	< "$FILE" || continue
+	if test $FIRST -eq 0; then
+		echo $n1 "--More--(Next file: $FILE)$n2"
+		stty $cb -echo 2>/dev/null
+		ANS=`dd bs=1 count=1 2>/dev/null`
+		stty $ncb echo 2>/dev/null
+		echo " "
+		case "$ANS" in
+		[eq]) exit;;
+		esac
+	fi
+	if test "$ANS" != 's'; then
+		echo "------> $FILE <------"
+		gzip -cdfq -- "$FILE" | more
+	fi
+	if test -t 1; then
+		FIRST=0
+	fi
+    done
+fi
Index: Daodan/MinGW/msys/1.0/bin/znew
===================================================================
--- Daodan/MinGW/msys/1.0/bin/znew	(revision 1046)
+++ Daodan/MinGW/msys/1.0/bin/znew	(revision 1046)
@@ -0,0 +1,183 @@
+#!/bin/sh
+
+# Copyright (C) 1998, 2002, 2004, 2007 Free Software Foundation
+# Copyright (C) 1993 Jean-loup Gailly
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+PATH="${GZIP_BINDIR-'/usr/bin'}:$PATH"; export PATH
+
+version="znew (gzip) 1.3.12
+Copyright (C) 2007 Free Software Foundation, Inc.
+This is free software.  You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+
+Written by Jean-loup Gailly."
+
+usage="Usage: $0 [OPTION]... [FILE]...
+Recompress files from .Z (compress) format to .gz (gzip) format.
+
+Options:
+
+  -f     Force recompression even if a .gz file already exists.
+  -t     Test the new files before deleting originals.
+  -v     Verbose; display name and statistics for each file compressed.
+  -9     Use the slowest compression method (optimal compression).
+  -P     Use pipes for the conversion to reduce disk space usage.
+  -K     Keep a .Z file when it is smaller than the .gz file.
+      --help     display this help and exit
+      --version  output version information and exit
+
+Report bugs to <bug-gzip@gnu.org>."
+
+check=0
+pipe=0
+opt=
+files=
+keep=0
+res=0
+old=0
+new=0
+block=1024
+# block is the disk block size (best guess, need not be exact)
+
+warn="(does not preserve modes and timestamp)"
+tmp=${TMPDIR-/tmp}/zfoo.$$
+set -C
+echo hi > $tmp || exit
+if test -z "`(${CPMOD-cpmod} $tmp $tmp) 2>&1`"; then
+  cpmod=${CPMOD-cpmod}
+  warn=""
+fi
+
+if test -z "$cpmod" && ${TOUCH-touch} -r $tmp $tmp 2>/dev/null; then
+  cpmod="${TOUCH-touch}"
+  cpmodarg="-r"
+  warn="(does not preserve file modes)"
+fi
+
+# check if GZIP env. variable uses -S or --suffix
+gzip -q $tmp
+ext=`echo $tmp* | sed "s|$tmp||"`
+rm -f $tmp*
+if test -z "$ext"; then
+  echo znew: error determining gzip extension
+  exit 1
+fi
+if test "$ext" = ".Z"; then
+  echo znew: cannot use .Z as gzip extension.
+  exit 1
+fi
+
+for arg
+do
+  case "$arg" in
+  --help)      exec echo "$usage";;
+  --version)   exec echo "$version";;
+  -*)     opt="$opt $arg"; shift;;
+   *)     break;;
+  esac
+done
+
+if test $# -eq 0; then
+  echo "$usage"
+  exit 1
+fi
+
+opt=`echo "$opt" | sed -e 's/ //g' -e 's/-//g'`
+case "$opt" in
+  *t*) check=1; opt=`echo "$opt" | sed 's/t//g'`
+esac
+case "$opt" in
+  *K*) keep=1; opt=`echo "$opt" | sed 's/K//g'`
+esac
+case "$opt" in
+  *P*) pipe=1; opt=`echo "$opt" | sed 's/P//g'`
+esac
+if test -n "$opt"; then
+  opt="-$opt"
+fi
+
+for i do
+  n=`echo $i | sed 's/.Z$//'`
+  if test ! -f "$n.Z" ; then
+    echo $n.Z not found
+    res=1; continue
+  fi
+  test $keep -eq 1 && old=`wc -c < "$n.Z"`
+  if test $pipe -eq 1; then
+    if gzip -d < "$n.Z" | gzip $opt > "$n$ext"; then
+      # Copy file attributes from old file to new one, if possible.
+      test -n "$cpmod" && $cpmod $cpmodarg "$n.Z" "$n$ext" 2> /dev/null
+    else
+      echo error while recompressing $n.Z
+      res=1; continue
+    fi
+  else
+    if test $check -eq 1; then
+      if cp -p "$n.Z" "$n.$$" 2> /dev/null || cp "$n.Z" "$n.$$"; then
+	:
+      else
+	echo cannot backup "$n.Z"
+        res=1; continue
+      fi
+    fi
+    if gzip -d "$n.Z"; then
+      :
+    else
+      test $check -eq 1 && mv "$n.$$" "$n.Z"
+      echo error while uncompressing $n.Z
+      res=1; continue
+    fi
+    if gzip $opt "$n"; then
+      :
+    else
+      if test $check -eq 1; then
+	mv "$n.$$" "$n.Z" && rm -f "$n"
+        echo error while recompressing $n
+      else
+	# compress $n  (might be dangerous if disk full)
+        echo error while recompressing $n, left uncompressed
+      fi
+      res=1; continue
+    fi
+  fi
+  test $keep -eq 1 && new=`wc -c < "$n$ext"`
+  if test $keep -eq 1 && test `expr \( $old + $block - 1 \) / $block` -lt \
+			      `expr \( $new + $block - 1 \) / $block`; then
+    if test $pipe -eq 1; then
+      rm -f "$n$ext"
+    elif test $check -eq 1; then
+      mv "$n.$$" "$n.Z" && rm -f "$n$ext"
+    else
+      gzip -d "$n$ext" && compress "$n" && rm -f "$n$ext"
+    fi
+    echo "$n.Z smaller than $n$ext -- unchanged"
+
+  elif test $check -eq 1; then
+    if gzip -t "$n$ext" ; then
+      rm -f "$n.$$" "$n.Z"
+    else
+      test $pipe -eq 0 && mv "$n.$$" "$n.Z"
+      rm -f "$n$ext"
+      echo error while testing $n$ext, $n.Z unchanged
+      res=1; continue
+    fi
+  elif test $pipe -eq 1; then
+    rm -f "$n.Z"
+  fi
+done
+exit $res
Index: Daodan/MinGW/msys/1.0/etc/fstab
===================================================================
--- Daodan/MinGW/msys/1.0/etc/fstab	(revision 1046)
+++ Daodan/MinGW/msys/1.0/etc/fstab	(revision 1046)
@@ -0,0 +1,9 @@
+# /etc/fstab -- mount table configuration for MSYS.
+# Please refer to /etc/fstab.sample for explanatory annotation.
+
+# MSYS-Portable needs this "magic" comment:
+# MSYSROOT=C:/MinGW/msys/1.0
+
+# Win32_Path				Mount_Point
+#-------------------------------------	-----------
+C:/MinGW				/mingw
Index: Daodan/MinGW/msys/1.0/etc/fstab.sample
===================================================================
--- Daodan/MinGW/msys/1.0/etc/fstab.sample	(revision 1046)
+++ Daodan/MinGW/msys/1.0/etc/fstab.sample	(revision 1046)
@@ -0,0 +1,29 @@
+# /etc/fstab.sample -- sample mount table configuration for MSYS.
+
+# Lines with a "#" in column one are interpreted as comment lines;
+# with the exception of comments described as "magic", neither these
+# lines, nor any blank lines, are interpreted as configuration.
+
+# Comment lines which are described as "magic" should neither be
+# deleted, nor edited manually; ignoring this advice may cause your
+# MSYS installation to malfunction.
+
+# When running MSYS from a portable device, such as a USB thumb drive,
+# the following "magic" comment is used to track changes in host drive
+# letter assignment, so allowing MSYS-Portable start-up hooks to remap
+# mount table entries which refer to the relocated device:
+#
+# MSYSROOT=C:/MinGW/msys/1.0
+
+# The mount table configuration follows below.  The line format is
+# simple: you specify the Win32 path, followed by one or more space or
+# tab delimiters, followed by the mount point name.  In a typical UNIX
+# installation, each mount point must exist as a named directory on a
+# physically accessible device, before it can actually be used as a
+# mount point.  For this implementation the "must exist" requirement
+# is not enforced; however, it will assist programs such as find, and
+# readline's tab completion if each does physically exist.
+
+# Win32_Path				Mount_Point
+#-------------------------------------	-----------
+C:/MinGW				/mingw
Index: Daodan/MinGW/msys/1.0/etc/inputrc.default
===================================================================
--- Daodan/MinGW/msys/1.0/etc/inputrc.default	(revision 1046)
+++ Daodan/MinGW/msys/1.0/etc/inputrc.default	(revision 1046)
@@ -0,0 +1,50 @@
+# Key-bindings for the command-line editor.
+
+# Ask before displaying >50 items
+# Since $WINDIR $PATH var can be in $PATH, this could list
+# all window exectables in C:\WINDOWS
+set completion-query-items 50
+
+# Ignore case for the command-line-completion functionality
+# on:  default to a Windows style console
+# off: default to a *nix style console
+set completion-ignore-case on
+
+# none, visible or audible
+set bell-style audible
+
+# disable/enable 8bit input
+set meta-flag on
+set input-meta on
+set output-meta off
+set convert-meta on
+
+# visible-stats
+# Append a mark according to the file type in a listing
+set visible-stats off
+set mark-directories on
+
+# Show all instead of beeping first
+set show-all-if-ambiguous off
+
+# MSYSTEM is emacs based
+$if mode=emacs
+	# Common to Console & RXVT
+	"\C-?": backward-kill-line     		# Ctrl-BackSpace
+	"\e[2~": paste-from-clipboard  		# "Ins. Key"
+	"\e[5~": beginning-of-history  		# Page up
+	"\e[6~": end-of-history        		# Page down
+	
+	$if term=msys # RXVT
+		"\e[7~": beginning-of-line      # Home Key
+		"\e[8~": end-of-line            # End Key
+		"\e[11~": display-shell-version # F1
+		"\e[15~": re-read-init-file     # F5
+	$endif
+	$if term=cygwin # Console
+		"\e[1~": beginning-of-line      # Home Key
+		"\e[4~": end-of-line            # End Key
+	$endif
+$endif
+
+
Index: Daodan/MinGW/msys/1.0/etc/profile
===================================================================
--- Daodan/MinGW/msys/1.0/etc/profile	(revision 1046)
+++ Daodan/MinGW/msys/1.0/etc/profile	(revision 1046)
@@ -0,0 +1,60 @@
+# Copyright (C) 2001, 2002  Earnie Boyd  <earnie@users.sf.net>
+# This file is part of the Minimal SYStem.
+#   http://www.mingw.org/msys.shtml
+# 
+#         File:	profile
+#  Description:	Shell environment initialization script
+# Last Revised:	2002.05.04
+
+if [ -z "$MSYSTEM" ]; then
+  MSYSTEM=MINGW32
+fi
+
+# My decision to add a . to the PATH and as the first item in the path list
+# is to mimick the Win32 method of finding executables.
+#
+# I filter the PATH value setting in order to get ready for self hosting the
+# MSYS runtime and wanting different paths searched first for files.
+if [ $MSYSTEM == MINGW32 ]; then
+  export PATH=".:/usr/local/bin:/mingw/bin:/bin:$PATH"
+else
+  export PATH=".:/usr/local/bin:/bin:/mingw/bin:$PATH"
+fi
+
+if [ -z "$USERNAME" ]; then
+  LOGNAME="`id -un`"
+else
+  LOGNAME="$USERNAME"
+fi
+
+# Set up USER's home directory
+if [ -z "$HOME" ]; then
+  HOME="/home/$LOGNAME"
+fi
+
+if [ ! -d "$HOME" ]; then
+  mkdir -p "$HOME"
+  cp /etc/inputrc.default "$HOME"/.inputrc
+fi
+
+if [ "x$HISTFILE" == "x/.bash_history" ]; then
+  HISTFILE=$HOME/.bash_history
+fi
+
+export HOME LOGNAME MSYSTEM HISTFILE
+
+for i in /etc/profile.d/*.sh ; do
+  if [ -f $i ]; then
+    . $i
+  fi
+done
+
+export MAKE_MODE=unix
+export PS1='\[\033]0;$MSYSTEM:\w\007
+\033[32m\]\u@\h \[\033[33m\w\033[0m\]
+$ '
+
+alias clear=clsb
+
+cd "$HOME"
+
Index: Daodan/MinGW/msys/1.0/etc/termcap
===================================================================
--- Daodan/MinGW/msys/1.0/etc/termcap	(revision 1046)
+++ Daodan/MinGW/msys/1.0/etc/termcap	(revision 1046)
@@ -0,0 +1,1846 @@
+######## TERMINAL TYPE DESCRIPTIONS SOURCE FILE
+#
+# This version of terminfo.src is distributed with ncurses and is maintained
+# by Thomas E. Dickey (TD).
+#
+# Report bugs and new terminal descriptions to
+#	bug-ncurses@gnu.org
+#
+#	$Revision: 1.354 $
+#	$Date: 2009/10/31 17:28:35 $
+#
+# The original header is preserved below for reference.  It is noted that there
+# is a "newer" version which differs in some cosmetic details (but actually
+# stopped updates several years ago); we have decided to not change the header
+# unless there is also a change in content.
+#
+# To further muddy the waters, it is noted that changes to this file as part of
+# maintenance of ncurses (since 1996) are generally conceded to be copyright
+# under the ncurses MIT-style license.  That was the effect of the agreement
+# which the principal authors of ncurses made in 1998.  However, since much of
+# the file itself is of unknown authorship (and the disclaimer below makes it
+# obvious that Raymond cannot or will not convey rights over those parts),
+# there is no explicit copyright notice on the file itself.
+#
+# It would also be a nuisance to split the file into unknown/known authorship
+# and move pieces as they are maintained, since many of the maintenance changes
+# have been small corrections to Raymond's translations to/from termcap format,
+# correcting the data but not the accompanying annotations.
+#
+# In any case, note that almost half of this file is not data but annotations
+# which reflect creative effort.  Furthermore, the structure of entries to
+# reuse common chunks also is creative (and subject to copyright).  Finally,
+# some portions of the data are derivative work under a compatible MIT-style
+# license from xterm.
+#
+#------------------------------------------------------------------------------
+#	Version 10.2.1
+#	terminfo syntax
+#
+#	Eric S. Raymond		(current maintainer)
+#	John Kunze, Berkeley
+#	Craig Leres, Berkeley
+#
+# Please e-mail changes to terminfo@thyrsus.com; the old termcap@berkeley.edu
+# address is no longer valid.  The latest version can always be found at
+# <http://www.tuxedo.org/terminfo>.
+#
+# PURPOSE OF THIS FILE:
+#
+# This file describes the capabilities of various character-cell terminals,
+# as needed by software such as screen-oriented editors.
+#
+# Other terminfo and termcap files exist, supported by various OS vendors
+# or as relics of various older versions of UNIX.  This one is the longest
+# and most comprehensive one in existence.  It subsumes not only the entirety
+# of the historical 4.4BSD, GNU, System V and SCO termcap files and the BRL
+# termcap file, but also large numbers of vendor-maintained termcap and
+# terminfo entries more complete and carefully tested than those in historical
+# termcap/terminfo versions.
+#
+# Pointers to related resources (including the ncurses distribution) may
+# be found at <http://www.tuxedo.org/terminfo>.
+#
+# INTERNATIONALIZATION:
+#
+# This file uses only the US-ASCII character set (no ISO8859 characters).
+#
+# This file assumes a US-ASCII character set. If you need to fix this, start
+# by global-replacing \E(B and \E)B with the appropriate ISO 6429 enablers
+# for your character set.  \E(A and \E)A enables the British character set
+# with the pound sign at position 2/3.
+#
+# In a Japanese-processing environment using EUC/Japanese or Shift-JIS,
+# C1 characters are considered the first-byte set of the Japanese encodings,
+# so \E)0 should be avoided in <enacs> and initialization strings.
+#
+# FILE FORMAT:
+#
+# The version you are looking at may be in any of three formats: master
+# (terminfo with OT capabilities), stock terminfo, or termcap.  You can tell
+# which by the format given in the header above.
+#
+# The master format is accepted and generated by the terminfo tools in the
+# ncurses suite; it differs from stock (System V-compatible) terminfo only
+# in that it admits a group of capabilities (prefixed `OT') equivalent to
+# various obsolete termcap capabilities.  You can, thus, convert from master
+# to stock terminfo simply by filtering with `sed "/OT[^,]*,/s///"'; but if
+# you have ncurses `tic -I' is nicer (among other things, it automatically
+# outputs entries in a canonical form).
+#
+# The termcap version is generated automatically from the master version
+# using tic -C.  This filtering leaves in the OT capabilities under their
+# original termcap names.  All translated entries fit within the 1023-byte
+# string-table limit of archaic termcap libraries except where explicitly
+# noted below.  Note that the termcap translation assumes that your termcap
+# library can handle multiple tc capabilities in an entry. 4.4BSD has this
+# capability.  Older versions of GNU termcap, through 1.3, do not.
+#
+# For details on these formats, see terminfo(5) in the ncurses distribution,
+# and termcap(5) in the 4.4BSD Unix Programmer's Manual.  Be aware that 4.4BSD
+# curses has been declared obsolete by the caretakers of the 4.4BSD sources
+# as of June 1995; they are encouraging everyone to migrate to ncurses.
+#
+# Note: unlike some other distributed terminfo files (Novell Unix & SCO's),
+# no entry in this file has embedded comments.  This is so source translation
+# to termcap only has to carry over leading comments.  Also, no name field
+# contains embedded whitespace (such whitespace confuses rdist).
+#
+# Further note: older versions of this file were often installed with an editor
+# script (reorder) that moved the most common terminal types to the front of
+# the file.  This should no longer be necessary, as the file is now ordered
+# roughly by type frequency with ANSI/VT100 and other common types up front.
+#
+# Some information has been merged in from terminfo files distributed by
+# USL and SCO (see COPYRIGHTS AND OTHER DELUSIONS below).  Much information
+# comes from vendors who maintain official terminfos for their hardware
+# (notably DEC and Wyse).
+#
+# A detailed change history is included at the end of this file.
+#
+# FILE ORGANIZATION:
+#
+# Comments in this file begin with # - they cannot appear in the middle
+# of a terminfo/termcap entry (this feature had to be sacrificed in order
+# to allow standard terminfo and termcap syntax to be generated cleanly from
+# the master format).  Individual capabilities are commented out by
+# placing a period between the colon and the capability name.
+#
+# The file is divided up into major sections (headed by lines beginning with
+# the string "########") and minor sections (beginning with "####"); do
+#
+#	grep "^####" <file> | more
+#
+# to see a listing of section headings.  The intent of the divisions is
+# (a) to make it easier to find things, and (b) to order the database so
+# that important and frequently-encountered terminal types are near the
+# front (so that you'll get reasonable search efficiency from a linear
+# search of the termcap form even if you don't use reorder).  Minor sections
+# usually correspond to manufacturers or standard terminal classes.
+# Parenthesized words following manufacturer names are type prefixes or
+# product line names used by that manufacturers.
+#
+# HOW TO READ THE ENTRIES:
+#
+# The first name in an entry is the canonical name for the model or
+# type, last entry is a verbose description.  Others are mnemonic synonyms for
+# the terminal.
+#
+# Terminal names look like <manufacturer> <model> - <modes/options>
+# The part to the left of the dash, if a dash is present, describes the
+# particular hardware of the terminal.  The part to the right may be used
+# for flags indicating special ROMs, extra memory, particular terminal modes,
+# or user preferences.
+#
+# All names should be in lower case, for consistency in typing.
+#
+# The following are conventionally used suffixes:
+#	-2p	Has two pages of memory.  Likewise 4p, 8p, etc.
+#	-am	Enable auto-margin.
+#	-m	Monochrome.  Suppress color support
+#	-mc	Magic-cookie.  Some terminals (notably older Wyses) can
+#		only support one attribute without magic-cookie lossage.
+#		Their base entry is usually paired with another that
+#		uses magic cookies to support multiple attributes.
+#	-nam	No auto-margin - suppress :am: capability
+#	-nl	No labels - suppress soft labels
+#	-ns	No status line - suppress status line
+#	-rv	Terminal in reverse video mode (black on white)
+#	-s	Enable status line.
+#	-vb	Use visible bell (:vb:) rather than :bl:.
+#	-w	Wide - in 132 column mode.
+# If a name has multiple suffixes and one is a line height, that one should
+# go first.  Thus `aaa-30-s-rv' is recommended over `aaa-s-rv-30'.
+#
+# Entries with embedded plus signs are designed to be included through use/tc
+# capabilities, not used as standalone entries.
+#
+# To avoid search clashes, some older all-numeric names for terminals have
+# been removed (i.e., "33" for the Model 33 Teletype, "2621" for the HP2621).
+# All primary names of terminals now have alphanumeric prefixes.
+#
+# Comments marked "esr" are mostly results of applying the termcap-compiler
+# code packaged with ncurses and contemplating the resulting error messages.
+# In many cases, these indicated obvious fixes to syntax garbled by the
+# composers.  In a few cases, I was able to deduce corrected forms for garbled
+# capabilities by looking at context.  All the information in the original
+# entries is preserved in the comments.
+#
+# In the comments, terminfo capability names are bracketed with <> (angle
+# brackets).  Termcap capability names are bracketed with :: (colons).
+#
+# INTERPRETATION OF USER CAPABILITIES
+#
+# The System V Release 4 and XPG4 terminfo format defines ten string
+# capabilities for use by applications, <u0>...<u9>.   In this file, we use
+# certain of these capabilities to describe functions which are not covered
+# by terminfo.  The mapping is as follows:
+#
+#	u9	terminal enquire string (equiv. to ANSI/ECMA-48 DA)
+#	u8	terminal answerback description
+#	u7	cursor position request (equiv. to VT100/ANSI/ECMA-48 DSR 6)
+#	u6	cursor position report (equiv. to ANSI/ECMA-48 CPR)
+#
+# The terminal enquire string <u9> should elicit an answerback response
+# from the terminal.  Common values for <u9> will be ^E (on older ASCII
+# terminals) or \E[c (on newer VT100/ANSI/ECMA-48-compatible terminals).
+#
+# The cursor position request (<u7>) string should elicit a cursor position
+# report.  A typical value (for VT100 terminals) is \E[6n.
+#
+# The terminal answerback description (u8) must consist of an expected
+# answerback string.  The string may contain the following scanf(3)-like
+# escapes:
+#
+#	%c	Accept any character
+#	%[...]	Accept any number of characters in the given set
+#
+# The cursor position report (<u6>) string must contain two scanf(3)-style
+# %d format elements.  The first of these must correspond to the Y coordinate
+# and the second to the %d.  If the string contains the sequence %i, it is
+# taken as an instruction to decrement each value after reading it (this is
+# the inverse sense from the cup string).  The typical CPR value is
+# \E[%i%d;%dR (on VT100/ANSI/ECMA-48-compatible terminals).
+#
+# These capabilities are used by tack(1m), the terminfo action checker
+# (distributed with ncurses 5.0).
+#
+# TABSET FILES
+#
+# All the entries in this file have been edited to assume that the tabset
+# files directory is /usr/share/tabset, in conformance with the File Hierarchy
+# Standard for Linux and open-source BSD systems.  Some vendors (notably Sun)
+# use /usr/lib/tabset or (more recently) /usr/share/lib/tabset.
+#
+# No curses package we know of actually uses these files.  If their location
+# is an issue, you will have to hand-patch the file locations before compiling
+# this file.
+#
+# REQUEST FOR CONTACT INFORMATION AND HISTORICAL MATERIAL
+#
+# As the ANSI/ECMA-48 standard and variants take firmer hold, and as
+# character-cell terminals are increasingly replaced by X displays, much of
+# this file is becoming a historical document (this is part of the reason for
+# the new organization, which puts ANSI types, xterm, Unix consoles,
+# and vt100 up front in confidence that this will catch 95% of new hardware).
+#
+# For the terminal types still alive, I'd like to have manufacturer's
+# contact data (Internet address and/or snail-mail + phone).
+#
+# I'm also interested in enriching the comments so that the latter portions of
+# the file do in fact become a potted history of VDT technology as seen by
+# UNIX hackers.  Ideally, I'd like the headers for each manufacturer to
+# include its live/dead/out-of-the-business status, and for as many
+# terminal types as possible to be tagged with information like years
+# of heaviest use, popularity, and interesting features.
+#
+# I'm especially interested in identifying the obscure entries listed under
+# `Miscellaneous obsolete terminals, manufacturers unknown' before the tribal
+# wisdom about them gets lost.  If you know a lot about obscure old terminals,
+# please go to the terminfo resource page, grab the UFO file (ufo.ti), and
+# eyeball it for things you can identify and describe.
+#
+# If you have been around long enough to contribute, please read the file
+# with this in mind and send me your annotations.
+#
+# COPYRIGHTS AND OTHER DELUSIONS
+#
+# The BSD ancestor of this file had a standard Regents of the University of
+# California copyright with dates from 1980 to 1993.
+#
+# Some information has been merged in from a terminfo file SCO distributes.
+# It has an obnoxious boilerplate copyright which I'm ignoring because they
+# took so much of the content from the ancestral BSD versions of this file
+# and didn't attribute it, thereby violating the BSD Regents' copyright.
+#
+# Not that anyone should care.  However many valid functions copyrights may
+# serve, putting one on a termcap/terminfo file with hundreds of anonymous
+# contributors makes about as much sense as copyrighting a wall-full of
+# graffiti -- it's legally dubious, ethically bogus, and patently ridiculous.
+#
+# This file deliberately has no copyright.  It belongs to no one and everyone.
+# If you claim you own it, you will merely succeed in looking like a fool.
+# Use it as you like.  Use it at your own risk.  Copy and redistribute freely.
+# There are no guarantees anywhere.  Svaha!
+#
+
+######## ANSI, UNIX CONSOLE, AND SPECIAL TYPES
+#
+# This section describes terminal classes and brands that are still
+# quite common.
+#
+
+#### Specials
+#
+# Special "terminals".  These are used to label tty lines when you don't
+# know what kind of terminal is on it.  The characteristics of an unknown
+# terminal are the lowest common denominator - they look about like a ti 700.
+#
+
+dumb|80-column dumb tty:\
+	:am:\
+	:co#80:\
+	:bl=^G:cr=^M:do=^J:sf=^J:
+unknown|unknown terminal type:\
+	:am:gn:\
+	:co#80:\
+	:bl=^G:cr=^M:do=^J:sf=^J:
+lpr|printer|line printer:\
+	:bs:hc:os:\
+	:co#132:li#66:\
+	:bl=^G:cr=^M:do=^J:ff=^L:le=^H:sf=^J:
+
+vanilla|dumb tty:\
+	:bs:\
+	:bl=^G:cr=^M:do=^J:sf=^J:
+ansi+erase:\
+	:cd=\E[J:ce=\E[K:cl=\E[H\E[J:
+ansi+cup:\
+	:cm=\E[%i%d;%dH:ho=\E[H:
+
+# The IBM PC alternate character set.  Plug this into any Intel console entry.
+# We use \E[11m for rmacs rather than \E[12m so the <acsc> string can use the
+# ROM graphics for control characters such as the diamond, up- and down-arrow.
+# This works with the System V, Linux, and BSDI consoles.  It's a safe bet this
+# will work with any Intel console, they all seem to have inherited \E[11m
+# from the ANSI.SYS de-facto standard.
+klone+acs|alternate character set for ansi.sys displays:\
+	:ac=+\020,\021-\030.^Y0\333`\004a\261f\370g\361h\260j\331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v\301w\302x\263y\363z\362{\343|\330}\234~\376:\
+	:ae=\E[10m:as=\E[11m:
+
+# Highlight controls corresponding to the ANSI.SYS standard.  Most
+# console drivers for Intel boxes obey these.  Makes the same assumption
+# about \E[11m as klone+acs.  True ANSI/ECMA-48 would have :se=\E[27m:,
+# :ue=\E[24m:, but this isn't a documented feature of ANSI.SYS.
+klone+sgr|attribute control for ansi.sys displays:\
+	:S2=\E[11m:S3=\E[10m:\
+	:ac=+\020,\021-\030.^Y0\333`\004a\261f\370g\361h\260j\331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v\301w\302x\263y\363z\362{\343|\330}\234~\376:\
+	:ae=\E[10m:as=\E[11m:mb=\E[5m:md=\E[1m:me=\E[0m:mr=\E[7m:\
+	:se=\E[m:so=\E[7m:ue=\E[m:us=\E[4m:
+
+# Most Intel boxes do not treat "invis" (invisible) text.
+klone+sgr8|attribute control for ansi.sys displays:\
+	:S2=\E[11m:S3=\E[10m:\
+	:ac=+\020,\021-\030.^Y0\333`\004a\261f\370g\361h\260j\331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v\301w\302x\263y\363z\362{\343|\330}\234~\376:\
+	:ae=\E[10m:as=\E[11m:mb=\E[5m:md=\E[1m:me=\E[0m:mk=\E[8m:\
+	:mr=\E[7m:se=\E[m:so=\E[7m:ue=\E[m:us=\E[4m:
+
+# Highlight controls corresponding to the ANSI.SYS standard.  *All*
+# console drivers for Intel boxes obey these.  Does not assume \E[11m will
+# work; uses \E[12m instead, which is pretty bulletproof but loses you the ACS
+# diamond and arrow characters under curses.
+klone+sgr-dumb|attribute control for ansi.sys displays (no ESC [ 11 m):\
+	:ac=+\020,\021-\030.^Y0\333`\004a\261f\370g\361h\260j\331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v\301w\302x\263y\363z\362{\343|\330}\234~\376:\
+	:ae=\E[10m:as=\E[12m:mb=\E[5m:md=\E[1m:me=\E[0m:mk=\E[8m:\
+	:mr=\E[7m:se=\E[m:so=\E[7m:ue=\E[m:us=\E[4m:
+
+# ANSI.SYS color control.  The setab/setaf caps depend on the coincidence
+# between SVr4/XPG4's color numbers and ANSI.SYS attributes.  Here are longer
+# but equivalent strings that don't rely on that coincidence:
+# setb=\E[4%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m,
+# setf=\E[3%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m,
+# The DOS 5 manual asserts that these sequences meet the ISO 6429 standard.
+# They match a subset of ECMA-48.
+klone+color|color control for ansi.sys and ISO6429-compatible displays:\
+	:Co#8:NC#3:pa#64:\
+	:AB=\E[4%dm:AF=\E[3%dm:op=\E[37;40m:
+
+# This is better than klone+color, it doesn't assume white-on-black as the
+# default color pair,  but many `ANSI' terminals don't grok the <op> cap.
+ecma+color|color control for ECMA-48-compatible terminals:\
+	:Co#8:NC#3:pa#64:\
+	:AB=\E[4%dm:AF=\E[3%dm:op=\E[39;49m:
+
+# ansi-mini is a bare minimum ANSI terminal. This should work on anything, but
+# beware of screen size problems and memory relative cursor addressing.
+ansi-mini|any ansi terminal with pessimistic assumptions:\
+	:am:bs:xo:\
+	:co#80:li#24:\
+	:bl=^G:cd=\E[J:ce=\E[K:cl=\E[H\E[J:cm=\E[%i%d;%dH:cr=^M:\
+	:do=^J:ho=\E[H:sf=^J:
+
+# Procomm and some other ANSI emulations don't recognize all of the ANSI-
+# standard capabilities.  This entry deletes :UP:, :RI:, :DO:, :LE:, and
+# <vpa>/<hpa> capabilities, forcing curses to use repetitions of :up:,
+# :nd:, :do: and :le:.  Also deleted :IC: and :ic:, as QModem up to
+# 5.03 doesn't recognize these.  Finally, we delete :rp: and :sr:, which seem
+# to confuse many emulators.  On the other hand, we can count on these programs
+# doing :ae:/:as:/:sa:. Older versions of this entry featured
+# <invis=\E[9m>, but <invis=\E[8m> now seems to be more common under
+# ANSI.SYS influence.
+# From: Eric S. Raymond <esr@snark.thyrsus.com> Oct 30 1995
+pcansi-m|pcansi-mono|ibm-pc terminal programs claiming to be ansi (mono mode):\
+	:am:bs:mi:ms:\
+	:co#80:it#8:li#24:\
+	:ac=+\020,\021-\030.^Y0\333`\004a\261f\370g\361h\260j\331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v\301w\302x\263y\363z\362{\343|\330}\234~\376:\
+	:ae=\E[10m:al=\E[L:as=\E[12m:bl=^G:bt=\E[Z:cd=\E[J:ce=\E[K:\
+	:cl=\E[H\E[J:cm=\E[%i%d;%dH:cr=^M:ct=\E[3g:dc=\E[P:\
+	:dl=\E[M:do=\E[B:ho=\E[H:kb=^H:kd=\E[B:kh=\E[H:kl=\E[D:\
+	:kr=\E[C:ku=\E[A:le=\E[D:mb=\E[5m:md=\E[1m:me=\E[0m:\
+	:mk=\E[8m:mr=\E[7m:nd=\E[C:se=\E[m:sf=^J:so=\E[7m:st=\EH:\
+	:ta=^I:ue=\E[m:up=\E[A:us=\E[4m:
+# The color versions.  All PC emulators do color...
+pcansi|ibm-pc terminal programs claiming to be ansi:\
+	:am:bs:mi:ms:\
+	:Co#8:NC#3:co#80:it#8:li#24:pa#64:\
+	:AB=\E[4%dm:AF=\E[3%dm:\
+	:ac=+\020,\021-\030.^Y0\333`\004a\261f\370g\361h\260j\331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v\301w\302x\263y\363z\362{\343|\330}\234~\376:\
+	:ae=\E[10m:al=\E[L:as=\E[12m:bl=^G:bt=\E[Z:cd=\E[J:ce=\E[K:\
+	:cl=\E[H\E[J:cm=\E[%i%d;%dH:cr=^M:ct=\E[3g:dc=\E[P:\
+	:dl=\E[M:do=\E[B:ho=\E[H:kb=^H:kd=\E[B:kh=\E[H:kl=\E[D:\
+	:kr=\E[C:ku=\E[A:le=\E[D:mb=\E[5m:md=\E[1m:me=\E[0m:\
+	:mk=\E[8m:mr=\E[7m:nd=\E[C:op=\E[37;40m:se=\E[m:sf=^J:\
+	:so=\E[7m:st=\EH:ta=^I:ue=\E[m:up=\E[A:us=\E[4m:
+pcansi-25|pcansi25|ibm-pc terminal programs with 25 lines:\
+	:am:bs:mi:ms:\
+	:Co#8:NC#3:co#80:it#8:li#25:pa#64:\
+	:AB=\E[4%dm:AF=\E[3%dm:\
+	:ac=+\020,\021-\030.^Y0\333`\004a\261f\370g\361h\260j\331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v\301w\302x\263y\363z\362{\343|\330}\234~\376:\
+	:ae=\E[10m:al=\E[L:as=\E[12m:bl=^G:bt=\E[Z:cd=\E[J:ce=\E[K:\
+	:cl=\E[H\E[J:cm=\E[%i%d;%dH:cr=^M:ct=\E[3g:dc=\E[P:\
+	:dl=\E[M:do=\E[B:ho=\E[H:kb=^H:kd=\E[B:kh=\E[H:kl=\E[D:\
+	:kr=\E[C:ku=\E[A:le=\E[D:mb=\E[5m:md=\E[1m:me=\E[0m:\
+	:mk=\E[8m:mr=\E[7m:nd=\E[C:op=\E[37;40m:se=\E[m:sf=^J:\
+	:so=\E[7m:st=\EH:ta=^I:ue=\E[m:up=\E[A:us=\E[4m:
+pcansi-33|pcansi33|ibm-pc terminal programs with 33 lines:\
+	:am:bs:mi:ms:\
+	:Co#8:NC#3:co#80:it#8:li#33:pa#64:\
+	:AB=\E[4%dm:AF=\E[3%dm:\
+	:ac=+\020,\021-\030.^Y0\333`\004a\261f\370g\361h\260j\331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v\301w\302x\263y\363z\362{\343|\330}\234~\376:\
+	:ae=\E[10m:al=\E[L:as=\E[12m:bl=^G:bt=\E[Z:cd=\E[J:ce=\E[K:\
+	:cl=\E[H\E[J:cm=\E[%i%d;%dH:cr=^M:ct=\E[3g:dc=\E[P:\
+	:dl=\E[M:do=\E[B:ho=\E[H:kb=^H:kd=\E[B:kh=\E[H:kl=\E[D:\
+	:kr=\E[C:ku=\E[A:le=\E[D:mb=\E[5m:md=\E[1m:me=\E[0m:\
+	:mk=\E[8m:mr=\E[7m:nd=\E[C:op=\E[37;40m:se=\E[m:sf=^J:\
+	:so=\E[7m:st=\EH:ta=^I:ue=\E[m:up=\E[A:us=\E[4m:
+pcansi-43|pcansi43|ibm-pc terminal programs with 43 lines:\
+	:am:bs:mi:ms:\
+	:Co#8:NC#3:co#80:it#8:li#43:pa#64:\
+	:AB=\E[4%dm:AF=\E[3%dm:\
+	:ac=+\020,\021-\030.^Y0\333`\004a\261f\370g\361h\260j\331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v\301w\302x\263y\363z\362{\343|\330}\234~\376:\
+	:ae=\E[10m:al=\E[L:as=\E[12m:bl=^G:bt=\E[Z:cd=\E[J:ce=\E[K:\
+	:cl=\E[H\E[J:cm=\E[%i%d;%dH:cr=^M:ct=\E[3g:dc=\E[P:\
+	:dl=\E[M:do=\E[B:ho=\E[H:kb=^H:kd=\E[B:kh=\E[H:kl=\E[D:\
+	:kr=\E[C:ku=\E[A:le=\E[D:mb=\E[5m:md=\E[1m:me=\E[0m:\
+	:mk=\E[8m:mr=\E[7m:nd=\E[C:op=\E[37;40m:se=\E[m:sf=^J:\
+	:so=\E[7m:st=\EH:ta=^I:ue=\E[m:up=\E[A:us=\E[4m:
+
+# ansi-m -- full ANSI X3.64 with ANSI.SYS-compatible attributes, no color.
+# If you want pound signs rather than dollars, replace `B' with `A'
+# in the <s0ds>, <s1ds>, <s2ds>, and <s3ds> capabilities.
+# From: Eric S. Raymond <esr@snark.thyrsus.com> Nov 6 1995
+ansi-m|ansi-mono|ANSI X3.64-1979 terminal with ANSI.SYS compatible attributes:\
+	:5i:am:bs:mi:ms:\
+	:co#80:it#8:li#24:\
+	:AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:\
+	:LE=\E[%dD:RI=\E[%dC:SF=\E[%dS:SR=\E[%dT:UP=\E[%dA:\
+	:ac=+\020,\021-\030.^Y0\333`\004a\261f\370g\361h\260j\331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v\301w\302x\263y\363z\362{\343|\330}\234~\376:\
+	:ae=\E[10m:al=\E[L:as=\E[12m:bl=^G:bt=\E[Z:cb=\E[1K:\
+	:cd=\E[J:ce=\E[K:ch=\E[%i%dG:cl=\E[H\E[J:cm=\E[%i%d;%dH:\
+	:cr=^M:ct=\E[3g:cv=\E[%i%dd:dc=\E[P:dl=\E[M:do=\E[B:\
+	:ec=\E[%dX:ei=:ho=\E[H:im=:kB=\E[Z:kI=\E[L:kb=^H:kd=\E[B:\
+	:kh=\E[H:kl=\E[D:kr=\E[C:ku=\E[A:le=\E[D:mb=\E[5m:md=\E[1m:\
+	:me=\E[0m:mk=\E[8m:mr=\E[7m:nd=\E[C:nw=\r\E[S:pf=\E[4i:\
+	:po=\E[5i:s0=\E(B:s1=\E)B:s2=\E*B:s3=\E+B:se=\E[m:sf=^J:\
+	:so=\E[7m:st=\EH:ta=\E[I:ue=\E[m:up=\E[A:us=\E[4m:
+
+ansi+enq|ncurses extension for ANSI ENQ:\
+	:u6=\E[%i%d;%dR:u7=\E[6n:u9=\E[c:
+
+# ansi -- this terminfo expresses the largest subset of X3.64 that will fit in
+# standard terminfo.  Assumes ANSI.SYS-compatible attributes and color.
+# From: Eric S. Raymond <esr@snark.thyrsus.com> Nov 6 1995
+ansi|ansi/pc-term compatible with color:\
+	:5i:am:bs:mi:ms:\
+	:Co#8:NC#3:co#80:it#8:li#24:pa#64:\
+	:AB=\E[4%dm:AF=\E[3%dm:AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:\
+	:DO=\E[%dB:IC=\E[%d@:LE=\E[%dD:RI=\E[%dC:S2=\E[11m:\
+	:S3=\E[10m:SF=\E[%dS:SR=\E[%dT:UP=\E[%dA:\
+	:ac=+\020,\021-\030.^Y0\333`\004a\261f\370g\361h\260j\331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v\301w\302x\263y\363z\362{\343|\330}\234~\376:\
+	:ae=\E[10m:al=\E[L:as=\E[11m:bl=^G:bt=\E[Z:cb=\E[1K:\
+	:cd=\E[J:ce=\E[K:ch=\E[%i%dG:cl=\E[H\E[J:cm=\E[%i%d;%dH:\
+	:cr=^M:ct=\E[3g:cv=\E[%i%dd:dc=\E[P:dl=\E[M:do=\E[B:\
+	:ec=\E[%dX:ei=:ho=\E[H:im=:kB=\E[Z:kI=\E[L:kb=^H:kd=\E[B:\
+	:kh=\E[H:kl=\E[D:kr=\E[C:ku=\E[A:le=\E[D:mb=\E[5m:md=\E[1m:\
+	:me=\E[0m:mk=\E[8m:mr=\E[7m:nd=\E[C:nw=\r\E[S:\
+	:op=\E[39;49m:pf=\E[4i:po=\E[5i:s0=\E(B:s1=\E)B:s2=\E*B:\
+	:s3=\E+B:se=\E[m:sf=^J:so=\E[7m:st=\EH:ta=\E[I:\
+	:u6=\E[%i%d;%dR:u7=\E[6n:u9=\E[c:ue=\E[m:up=\E[A:us=\E[4m:
+
+#### DOS ANSI.SYS variants
+#
+# This completely describes the sequences specified in the DOS 2.1 ANSI.SYS
+# documentation (except for the keyboard key reassignment feature, which
+# doesn't fit the <pfkey> model well).  The klone+acs sequences were valid
+# though undocumented.  The <pfkey> capability is untested but should work for
+# keys F1-F10 (%p1 values outside this range will yield unpredictable results).
+# From: Eric S. Raymond <esr@snark.thyrsus.com> Nov 7 1995
+ansi.sys-old|ANSI.SYS under PC-DOS 2.1:\
+	:am:bs:mi:ms:xo:\
+	:Co#8:NC#3:co#80:li#25:pa#64:\
+	:AB=\E[4%dm:AF=\E[3%dm:RA=\E[?7l:S2=\E[11m:S3=\E[10m:\
+	:SA=\E[?7h:\
+	:ac=+\020,\021-\030.^Y0\333`\004a\261f\370g\361h\260j\331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v\301w\302x\263y\363z\362{\343|\330}\234~\376:\
+	:ae=\E[10m:as=\E[11m:ce=\E[k:cl=\E[2J:cm=\E[%i%d;%dH:\
+	:do=\E[B:ho=\E[H:is=\E[m\E[?7h:kd=^J:kh=^^:kl=^H:kr=^L:\
+	:ku=^K:le=^H:mb=\E[5m:md=\E[1m:me=\E[0m:mk=\E[8m:mr=\E[7m:\
+	:nd=\E[C:op=\E[37;40m:pk=\E[0;%+\:;"%s"p:rc=\E[u:sc=\E[s:\
+	:se=\E[m:so=\E[7m:u6=\E[%i%d;%dR:u7=\E[6n:ue=\E[m:up=\E[A:\
+	:us=\E[4m:
+
+# Keypad:	Home=\0G	Up=\0H	PrPag=\0I
+#		ka1,kh		kcuu1		kpp,ka3
+#
+#		Left=\0K	5=\0L		Right=\0M
+#		kcub1		kb2		kcuf1
+#
+#		End=\0O		Down=\0P	NxPag=\0Q
+#		kc1,kend	kcud1		kc3,knp
+#
+#		Ins=\0R		Del=\0S
+#		kich1		kdch1
+#
+# On keyboard with 12 function keys,
+#	shifted f-keys: F13-F24
+#	control f-keys: F25-F36
+#	alt f-keys:     F37-F48
+# The shift/control/alt keys do not modify each other, but alt overrides both,
+# and control overrides shift.
+#
+# <pfkey> capability for F1-F48 -TD
+# (sgr removed to fit entry within 1023 bytes)
+# (rmacs/smacs removed for consistency)
+# (acsc removed to fit entry within 1023 bytes)
+ansi.sys|ANSI.SYS 3.1 and later versions:\
+	:am:bs:mi:ms:xo:\
+	:Co#8:NC#3:co#80:li#25:pa#64:\
+	:@7=\0O:AB=\E[4%dm:AF=\E[3%dm:F1=\0\205:F2=\0\206:F3=\0T:\
+	:F4=\0U:F5=\0V:F6=\0W:F7=\0X:F8=\0Y:F9=\0Z:FA=\0[:FB=\0\\:\
+	:FC=\0]:FD=\0\207:FE=\0\210:FF=\0^:FG=\0_:FH=\0`:FI=\0a:\
+	:FJ=\0b:FK=\0c:FL=\0d:FM=\0e:FN=\0f:FO=\0g:FP=\0\211:\
+	:FQ=\0\212:FR=\0h:FS=\0i:FT=\0j:FU=\0k:FV=\0l:FW=\0m:FX=\0n:\
+	:FY=\0o:FZ=\0p:Fa=\0q:Fb=\0\213:Fc=\0\214:K1=\0G:K2=\0L:\
+	:K3=\0I:K4=\0O:K5=\0Q:RA=\E[?7l:S2=\E[11m:S3=\E[10m:\
+	:SA=\E[?7h:ce=\E[K:cl=\E[2J:cm=\E[%i%d;%dH:do=\E[B:\
+	:ho=\E[H:is=\E[m\E[?7h:k1=\0;:k2=\0<:k3=\0=:k4=\0>:k5=\0?:\
+	:k6=\0@:k7=\0A:k8=\0B:k9=\0C:k;=\0D:kB=\0^O:kD=\0S:kI=\0R:\
+	:kN=\0Q:kP=\0I:kb=^H:kd=\0P:kh=\0G:kl=\0K:kr=\0M:ku=\0H:\
+	:le=^H:mb=\E[5m:md=\E[1m:me=\E[0m:mk=\E[8m:mr=\E[7m:\
+	:nd=\E[C:op=\E[37;40m:rc=\E[u:sc=\E[s:se=\E[m:so=\E[7m:\
+	:u6=\E[%i%d;%dR:u7=\E[6n:ue=\E[m:up=\E[A:us=\E[4m:
+
+#
+# Define IBM PC keypad keys for vi as per MS-Kermit while using ANSI.SYS.
+# This should only be used when the terminal emulator cannot redefine the keys.
+# Since redefining keys with ansi.sys also affects PC-DOS programs, the key
+# definitions must be restored.  If the terminal emulator is quit while in vi
+# or others using :ks:/:ke:, the keypad will not be defined as per PC-DOS.
+# The PgUp and PgDn are prefixed with ESC so that tn3270 can be used on Unix
+# (^U and ^D are already defined for tn3270).  The ESC is safe for vi but it
+# does "beep".  ESC ESC i is used for Ins to avoid tn3270 ESC i for coltab.
+# Note that :kl: is always BS, because PC-dos can tolerate this change.
+# Caution: vi is limited to 256 string bytes, longer crashes or weirds out vi.
+# Consequently the End keypad key could not be set (it is relatively safe and
+# actually useful because it sends ^@ O, which beeps and opens a line above).
+# (sgr removed to fit entry within 1023 bytes)
+# (rmacs/smacs removed for consistency)
+# (acsc removed to fit entry within 1023 bytes)
+# (terminfo-only capabilities suppressed to fit entry within 1023 bytes)
+ansi.sysk|ansisysk|PC-DOS 3.1 ANSI.SYS with keypad redefined for vi:\
+	:am:bs:mi:ms:xo:\
+	:co#80:li#25:\
+	:K1=\0G:K2=\0L:K3=\0I:K4=\0O:K5=\0Q:ce=\E[K:cl=\E[2J:\
+	:cm=\E[%i%d;%dH:do=\E[B:ho=\E[H:\
+	:is=U2 PC-DOS 3.1 ANSI.SYS with keypad redefined for vi 9-29-86\n\E[;75;8p:\
+	:k1=\0;:k2=\0<:k3=\0=:k4=\0>:k5=\0?:k6=\0@:k7=\0A:k8=\0B:\
+	:k9=\0C:kD=\0S:kI=\0R:kN=\0Q:kP=\0I:kb=^H:kd=\0P:\
+	:ke=\E[;71;0;71p\E[;72;0;72p\E[;73;0;73p\E[;77;0;77p\E[;80;0;80p\E[;81;0;81p\E[;82;0;82p\E[;83;0;83p:\
+	:kh=\0G:kl=\0K:kr=\0M:\
+	:ks=\E[;71;30p\E[;72;11p\E[;73;27;21p\E[;77;12p\E[;80;10p\E[;81;27;4p\E[;82;27;27;105p\E[;83;127p:\
+	:ku=\0H:le=^H:mb=\E[5m:md=\E[1m:me=\E[0m:mr=\E[7m:nd=\E[C:\
+	:rc=\E[u:sc=\E[s:se=\E[m:so=\E[7m:ue=\E[m:up=\E[A:us=\E[4m:
+#
+# Adds ins/del line/character, hence vi reverse scrolls/inserts/deletes nicer.
+# (sgr removed to fit entry within 1023 bytes)
+# (rmacs/smacs removed for consistency)
+# (acsc removed to fit entry within 1023 bytes)
+nansi.sys|nansisys|PC-DOS Public Domain NANSI.SYS:\
+	:am:bs:mi:ms:xo:\
+	:Co#8:NC#3:co#80:li#25:pa#64:\
+	:@7=\0O:AB=\E[4%dm:AF=\E[3%dm:F1=\0\205:F2=\0\206:F3=\0T:\
+	:F4=\0U:F5=\0V:F6=\0W:F7=\0X:F8=\0Y:F9=\0Z:FA=\0[:FB=\0\\:\
+	:FC=\0]:FD=\0\207:FE=\0\210:FF=\0^:FG=\0_:FH=\0`:FI=\0a:\
+	:FJ=\0b:FK=\0c:FL=\0d:FM=\0e:FN=\0f:FO=\0g:FP=\0\211:\
+	:FQ=\0\212:FR=\0h:FS=\0i:FT=\0j:FU=\0k:FV=\0l:FW=\0m:FX=\0n:\
+	:FY=\0o:FZ=\0p:Fa=\0q:Fb=\0\213:Fc=\0\214:K1=\0G:K2=\0L:\
+	:K3=\0I:K4=\0O:K5=\0Q:RA=\E[?7l:S2=\E[11m:S3=\E[10m:\
+	:SA=\E[?7h:al=\E[1L:ce=\E[K:cl=\E[2J:cm=\E[%i%d;%dH:\
+	:dc=\E[1P:dl=\E[1M:do=\E[B:ei=:ho=\E[H:ic=\E[1@:im=:\
+	:is=U3 PC-DOS Public Domain NANSI.SYS 9-23-86\n:\
+	:k1=\0;:k2=\0<:k3=\0=:k4=\0>:k5=\0?:k6=\0@:k7=\0A:k8=\0B:\
+	:k9=\0C:k;=\0D:kB=\0^O:kD=\0S:kI=\0R:kN=\0Q:kP=\0I:kb=^H:\
+	:kd=\0P:kh=\0G:kl=\0K:kr=\0M:ku=\0H:le=^H:mb=\E[5m:md=\E[1m:\
+	:me=\E[0m:mk=\E[8m:mr=\E[7m:nd=\E[C:op=\E[37;40m:rc=\E[u:\
+	:sc=\E[s:se=\E[m:so=\E[7m:u6=\E[%i%d;%dR:u7=\E[6n:ue=\E[m:\
+	:up=\E[A:us=\E[4m:
+#
+# See ansi.sysk and nansi.sys above.
+# (sgr removed to fit entry within 1023 bytes)
+# (rmacs/smacs removed for consistency)
+# (acsc removed to fit entry within 1023 bytes)
+# (terminfo-only capabilities suppressed to fit entry within 1023 bytes)
+nansi.sysk|nansisysk|PC-DOS Public Domain NANSI.SYS with keypad redefined for vi:\
+	:am:bs:mi:ms:xo:\
+	:co#80:li#25:\
+	:K1=\0G:K2=\0L:K3=\0I:K4=\0O:K5=\0Q:al=\E[1L:ce=\E[K:\
+	:cl=\E[2J:cm=\E[%i%d;%dH:dc=\E[1P:dl=\E[1M:do=\E[B:ei=:\
+	:ho=\E[H:ic=\E[1@:im=:\
+	:is=U4 PC-DOS Public Domain NANSI.SYS with keypad redefined for vi 9-29-86\n\E[;75;8p:\
+	:k1=\0;:k2=\0<:k3=\0=:k4=\0>:k5=\0?:k6=\0@:k7=\0A:k8=\0B:\
+	:k9=\0C:kD=\0S:kI=\0R:kN=\0Q:kP=\0I:kb=^H:kd=\0P:\
+	:ke=\E[;71;0;71p\E[;72;0;72p\E[;73;0;73p\E[;77;0;77p\E[;80;0;80p\E[;81;0;81p\E[;82;0;82p\E[;83;0;83p:\
+	:kh=\0G:kl=\0K:kr=\0M:\
+	:ks=\E[;71;30p\E[;72;11p\E[;73;27;21p\E[;77;12p\E[;80;10p\E[;81;27;4p\E[;82;27;27;105p\E[;83;127p:\
+	:ku=\0H:le=^H:mb=\E[5m:md=\E[1m:me=\E[0m:mr=\E[7m:nd=\E[C:\
+	:rc=\E[u:sc=\E[s:se=\E[m:so=\E[7m:ue=\E[m:up=\E[A:us=\E[4m:
+
+#### Linux consoles
+#
+
+# This entry is good for the 1.2.13 or later version of the Linux console.
+#
+# ***************************************************************************
+# *                                                                         *
+# *                           WARNING:                                      *
+# * Linuxes come with a default keyboard mapping kcbt=^I.  This entry, in   *
+# * response to user requests, assumes kcbt=\E[Z, the ANSI/ECMA reverse-tab *
+# * character. Here are the keymap replacement lines that will set this up: *
+# *                                                                         *
+#	keycode  15 = Tab             Tab
+#		alt     keycode  15 = Meta_Tab
+#		shift	keycode  15 = F26
+#	string F26 ="\033[Z"
+# *                                                                         *
+# * This has to use a key slot which is unfortunate (any unused one will    *
+# * do, F26 is the higher-numbered one).  The change ought to be built      *
+# * into the kernel tables.                                                 *
+# *                                                                         *
+# ***************************************************************************
+#
+# All linux kernels since 1.2.13 (at least) set the screen size
+# themselves; this entry assumes that capability.
+#
+# (sgr removed to fit entry within 1023 bytes)
+# (rmacs/smacs removed for consistency)
+# (acsc removed to fit entry within 1023 bytes)
+linux-basic|linux console:\
+	:am:eo:mi:ms:ut:xn:xo:\
+	:Co#8:NC#18:it#8:pa#64:\
+	:&7=^Z:@7=\E[4~:AB=\E[4%dm:AF=\E[3%dm:AL=\E[%dL:DC=\E[%dP:\
+	:DL=\E[%dM:F1=\E[23~:F2=\E[24~:F3=\E[25~:F4=\E[26~:\
+	:F5=\E[28~:F6=\E[29~:F7=\E[31~:F8=\E[32~:F9=\E[33~:\
+	:FA=\E[34~:IC=\E[%d@:K2=\E[G:Km=\E[M:RA=\E[?7l:S2=\E[11m:\
+	:S3=\E[10m:SA=\E[?7h:al=\E[L:bl=^G:cb=\E[1K:cd=\E[J:\
+	:ce=\E[K:ch=\E[%i%dG:cl=\E[H\E[J:cm=\E[%i%d;%dH:cr=^M:\
+	:cs=\E[%i%d;%dr:ct=\E[3g:cv=\E[%i%dd:dc=\E[P:dl=\E[M:\
+	:do=^J:ec=\E[%dX:ei=\E[4l:ho=\E[H:ic=\E[@:im=\E[4h:\
+	:k1=\E[[A:k2=\E[[B:k3=\E[[C:k4=\E[[D:k5=\E[[E:k6=\E[17~:\
+	:k7=\E[18~:k8=\E[19~:k9=\E[20~:k;=\E[21~:kB=\E[Z:kD=\E[3~:\
+	:kI=\E[2~:kN=\E[6~:kP=\E[5~:kb=\177:kd=\E[B:kh=\E[1~:\
+	:kl=\E[D:kr=\E[C:ku=\E[A:le=^H:mb=\E[5m:md=\E[1m:me=\E[0m:\
+	:mh=\E[2m:mr=\E[7m:nd=\E[C:nw=^M^J:op=\E[39;49m:\
+	:r1=\Ec\E]R:rc=\E8:sc=\E7:se=\E[27m:sf=^J:so=\E[7m:sr=\EM:\
+	:st=\EH:ta=^I:u6=\E[%i%d;%dR:u7=\E[6n:u8=\E[?6c:u9=\E[c:\
+	:ue=\E[24m:up=\E[A:us=\E[4m:vb=200\E[?5h\E[?5l:
+
+# The 1.3.x kernels add color-change capabilities; if yours doesn't have this
+# and it matters, turn off <ccc>.  The %02x escape used to implement this is
+# not supposedly back-portable to older SV curses (although it has worked fine
+# on Solaris for several years) and not supported in ncurses versions before
+# 1.9.9.
+# (sgr removed to fit entry within 1023 bytes)
+# (rmacs/smacs removed for consistency)
+# (acsc removed to fit entry within 1023 bytes)
+linux-c-nc|linux console with color-change:\
+	:am:cc:eo:mi:ms:ut:xn:xo:\
+	:Co#8:NC#18:it#8:pa#64:\
+	:&7=^Z:@7=\E[4~:AB=\E[4%dm:AF=\E[3%dm:AL=\E[%dL:DC=\E[%dP:\
+	:DL=\E[%dM:F1=\E[23~:F2=\E[24~:F3=\E[25~:F4=\E[26~:\
+	:F5=\E[28~:F6=\E[29~:F7=\E[31~:F8=\E[32~:F9=\E[33~:\
+	:FA=\E[34~:IC=\E[%d@:K2=\E[G:Km=\E[M:RA=\E[?7l:S2=\E[11m:\
+	:S3=\E[10m:SA=\E[?7h:al=\E[L:bl=^G:cb=\E[1K:cd=\E[J:\
+	:ce=\E[K:ch=\E[%i%dG:cl=\E[H\E[J:cm=\E[%i%d;%dH:cr=^M:\
+	:cs=\E[%i%d;%dr:ct=\E[3g:cv=\E[%i%dd:dc=\E[P:dl=\E[M:\
+	:do=^J:ec=\E[%dX:ei=\E[4l:ho=\E[H:ic=\E[@:im=\E[4h:\
+	:k1=\E[[A:k2=\E[[B:k3=\E[[C:k4=\E[[D:k5=\E[[E:k6=\E[17~:\
+	:k7=\E[18~:k8=\E[19~:k9=\E[20~:k;=\E[21~:kB=\E[Z:kD=\E[3~:\
+	:kI=\E[2~:kN=\E[6~:kP=\E[5~:kb=\177:kd=\E[B:kh=\E[1~:\
+	:kl=\E[D:kr=\E[C:ku=\E[A:le=^H:mb=\E[5m:md=\E[1m:me=\E[0m:\
+	:mh=\E[2m:mr=\E[7m:nd=\E[C:nw=^M^J:oc=\E]R:op=\E[39;49m:\
+	:r1=\Ec\E]R:rc=\E8:sc=\E7:se=\E[27m:sf=^J:so=\E[7m:sr=\EM:\
+	:st=\EH:ta=^I:u6=\E[%i%d;%dR:u7=\E[6n:u8=\E[?6c:u9=\E[c:\
+	:ue=\E[24m:up=\E[A:us=\E[4m:vb=200\E[?5h\E[?5l:
+
+# The 2.2.x kernels add a private mode that sets the cursor type; use that to
+# get a block cursor for cvvis.
+# reported by Frank Heckenbach <frank@g-n-u.de>.
+# (sgr removed to fit entry within 1023 bytes)
+# (rmacs/smacs removed for consistency)
+# (acsc removed to fit entry within 1023 bytes)
+# (terminfo-only capabilities suppressed to fit entry within 1023 bytes)
+linux|linux console:\
+	:am:eo:mi:ms:xn:xo:\
+	:it#8:\
+	:AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:IC=\E[%d@:K2=\E[G:al=\E[L:\
+	:bl=^G:cd=\E[J:ce=\E[K:cl=\E[H\E[J:cm=\E[%i%d;%dH:cr=^M:\
+	:cs=\E[%i%d;%dr:ct=\E[3g:dc=\E[P:dl=\E[M:do=^J:ec=\E[%dX:\
+	:ei=\E[4l:ho=\E[H:ic=\E[@:im=\E[4h:k1=\E[[A:k2=\E[[B:\
+	:k3=\E[[C:k4=\E[[D:k5=\E[[E:k6=\E[17~:k7=\E[18~:k8=\E[19~:\
+	:k9=\E[20~:kD=\E[3~:kI=\E[2~:kN=\E[6~:kP=\E[5~:kb=\177:\
+	:kd=\E[B:kh=\E[1~:kl=\E[D:kr=\E[C:ku=\E[A:le=^H:mb=\E[5m:\
+	:md=\E[1m:me=\E[0m:mh=\E[2m:mr=\E[7m:nd=\E[C:nw=^M^J:\
+	:rc=\E8:sc=\E7:se=\E[27m:sf=^J:so=\E[7m:sr=\EM:st=\EH:ta=^I:\
+	:ue=\E[24m:up=\E[A:us=\E[4m:vb=200\E[?5h\E[?5l:\
+	:ve=\E[?25h\E[?0c:vi=\E[?25l\E[?1c:vs=\E[?25h\E[?8c:
+
+#### DEC VT100 and compatibles
+#
+# DEC terminals from the vt100 forward are collected here. Older DEC terminals
+# and micro consoles can be found in the `obsolete' section.  More details on
+# the relationship between the VT100 and ANSI X3.64/ISO 6429/ECMA-48 may be
+# found near the end of this file.
+#
+# Except where noted, these entries are DEC's official terminfos.
+# Contact Bill Hedberg <hedberg@hannah.enet.dec.com> of Terminal Support
+# Engineering for more information.  Updated terminfos and termcaps
+# are kept available at ftp://gatekeeper.dec.com/pub/DEC/termcaps.
+#
+# In October 1995 DEC sold its terminals business, including the VT and Dorio
+# line and trademark, to SunRiver Data Systems.  SunRiver has since changed
+# its name to Boundless Technologies; see http://www.boundless.com.
+#
+
+# NOTE:  Any VT100 emulation, whether in hardware or software, almost
+# certainly includes what DEC called the `Level 1 editing extension' codes;
+# only the very oldest VT100s lacked these and there probably aren't any of
+# those left alive.  To capture these, use one of the VT102 entries.
+#
+# Note that the :xn: glitch in vt100 is not quite the same as on the Concept,
+# since the cursor is left in a different position while in the
+# weird state (concept at beginning of next line, vt100 at end
+# of this line) so all versions of vi before 3.7 don't handle
+# :xn: right on vt100. The correct way to handle :xn: is when
+# you output the char in column 80, immediately output CR LF
+# and then assume you are in column 1 of the next line. If :xn:
+# is on, am should be on too.
+#
+# I assume you have smooth scroll off or are at a slow enough baud
+# rate that it doesn't matter (1200? or less). Also this assumes
+# that you set auto-nl to "on", if you set it off use vt100-nam
+# below.
+#
+# The padding requirements listed here are guesses. It is strongly
+# recommended that xon/xoff be enabled, as this is assumed here.
+#
+# The vt100 uses <rs2> and <rf> rather than :is:/:ct:/:st: because the
+# tab settings are in non-volatile memory and don't need to be
+# reset upon login. Also setting the number of columns glitches
+# the screen annoyingly. You can type "reset" to get them set.
+#
+# The VT100 series terminals have cursor ("arrows") keys which can operate
+# in two different modes: Cursor Mode and Application Mode.  Cursor Mode
+# is the reset state, and is assumed to be the normal state.  Application
+# Mode is the "set" state.  In Cursor Mode, the cursor keys transmit
+# "Esc [ {code}" sequences, conforming to ANSI standards.  In Application
+# Mode, the cursor keys transmit "Esc O <code>" sequences.  Application Mode
+# was provided primarily as an aid to the porting of VT52 applications.  It is
+# assumed that the cursor keys are normally in Cursor Mode, and expected that
+# applications such as vi will always transmit the :ks: string.  Therefore,
+# the definitions for the cursor keys are made to match what the terminal
+# transmits after the :ks: string is transmitted.  If the :ks: string
+# is a null string or is not defined, then cursor keys are assumed to be in
+# "Cursor Mode", and the cursor keys definitions should match that assumption,
+# else the application may fail.  It is also expected that applications will
+# always transmit the :ke: string to the terminal before they exit.
+#
+# The VT100 series terminals have an auxiliary keypad, commonly referred to as
+# the "Numeric Keypad", because it is a cluster of numeric and function keys.
+# The Numeric Keypad which can operate in two different modes: Numeric Mode and
+# Application Mode.  Numeric Mode is the reset state, and is assumed to be
+# the normal state.  Application Mode is the "set" state.  In Numeric Mode,
+# the numeric and punctuation keys transmit ASCII 7-bit characters, and the
+# Enter key transmits the same as the Return key (Note: the Return key
+# can be configured to send either LF (\015) or CR LF).  In Application Mode,
+# all the keypad keys transmit "Esc O {code}" sequences.  The PF1 - PF4 keys
+# always send the same "Esc O {code}" sequences.  It is assumed that the keypad
+# is normally in Numeric Mode.  If an application requires that the keypad be
+# in Application Mode then it is expected that the user, or the application,
+# will set the TERM environment variable to point to a terminfo entry which has
+# defined the :ks: string to include the codes that switch the keypad into
+# Application Mode, and the terminfo entry will also define function key
+# fields to match the Application Mode control codes.  If the :ks: string
+# is a null string or is not defined, then the keypad is assumed to be in
+# Numeric Mode.  If the :ks: string switches the keypad into Application
+# Mode, it is expected that the :ke: string will contain the control codes
+# necessary to reset the keypad to "Normal" mode, and it is also expected that
+# applications which transmit the :ks: string will also always transmit the
+# :ke: string to the terminal before they exit.
+#
+# Here's a diagram of the VT100 keypad keys with their bindings.
+# The top line is the name of the key (some DEC keyboards have the keys
+# labelled somewhat differently, like GOLD instead of PF1, but this is
+# the most "official" name).  The second line is the escape sequence it
+# generates in Application Keypad mode (where "$" means the ESC
+# character).  The third line contains two items, first the mapping of
+# the key in terminfo, and then in termcap.
+#   _______________________________________
+#  |   PF1   |   PF2   |   PF3   |   PF4   |
+#  |   $OP   |   $OQ   |   $OR   |   $OS   |
+#  |_kf1__k1_|_kf2__k2_|_kf3__k3_|_kf4__k4_|
+#  |    7         8         9         -    |
+#  |   $Ow   |   $Ox   |   $Oy   |   $Om   |
+#  |_kf9__k9_|_kf10_k;_|_kf0__k0_|_________|
+#  |    4    |    5    |    6    |    ,    |
+#  |   $Ot   |   $Ou   |   $Ov   |   $Ol   |
+#  |_kf5__k5_|_kf6__k6_|_kf7__k7_|_kf8__k8_|
+#  |    1    |    2    |    3    |         |
+#  |   $Oq   |   $Or   |   $Os   |  enter  |
+#  |_ka1__K1_|_kb2__K2_|_ka3__K3_|  $OM    |
+#  |         0         |   .     |         |
+#  |        $Op        |  $On    |         |
+#  |___kc1_______K4____|_kc3__K5_|_kent_@8_|
+#
+# Note however, that the arrangement of the 5-key ka1-kc3 do not follow the
+# terminfo guidelines.  That is a compromise used to assign the remaining
+# keys on the keypad to kf5-kf0, used on older systems with legacy termcap
+# support:
+vt100+keypad|dec vt100 numeric keypad no fkeys:\
+	:K1=\EOq:K2=\EOr:K3=\EOs:K4=\EOp:K5=\EOn:
+vt100+pfkeys|dec vt100 numeric keypad:\
+	:@8=\EOM:K1=\EOq:K2=\EOr:K3=\EOs:K4=\EOp:K5=\EOn:k1=\EOP:\
+	:k2=\EOQ:k3=\EOR:k4=\EOS:
+vt100+fnkeys|dec vt100 numeric keypad:\
+	:@8=\EOM:K1=\EOq:K2=\EOr:K3=\EOs:K4=\EOp:K5=\EOn:k0=\EOy:\
+	:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:k5=\EOt:k6=\EOu:k7=\EOv:\
+	:k8=\EOl:k9=\EOw:k;=\EOx:
+#
+# A better adaptation to modern keyboards such as the PC's, which have a dozen
+# function keys and the keypad 2,4,6,8 keys are labeled with arrows keys, is to
+# use the 5-key arrangement to model the arrow keys as suggested in the
+# terminfo guidelines:
+#   _______________________________________
+#  |   PF1   |   PF2   |   PF3   |   PF4   |
+#  |   $OP   |   $OQ   |   $OR   |   $OS   |
+#  |_kf1__k1_|_kf2__k2_|_kf3__k3_|_kf4__k4_|
+#  |    7         8         9         -    |
+#  |   $Ow   |   $Ox   |   $Oy   |   $Om   |
+#  |_ka1__K1_|_________|_ka3__K3_|_________|
+#  |    4    |    5    |    6    |    ,    |
+#  |   $Ot   |   $Ou   |   $Ov   |   $Ol   |
+#  |_________|_kb2__K2_|_________|_________|
+#  |    1    |    2    |    3    |         |
+#  |   $Oq   |   $Or   |   $Os   |  enter  |
+#  |_kc1__K4_|_________|_kc3__K5_|  $OM    |
+#  |         0         |   .     |         |
+#  |        $Op        |  $On    |         |
+#  |___________________|_________|_kent_@8_|
+#
+vt220+keypad|dec vt220 numeric keypad:\
+	:@8=\EOM:K1=\EOw:K2=\EOu:K3=\EOy:K4=\EOq:K5=\EOs:k1=\EOP:\
+	:k2=\EOQ:k3=\EOR:k4=\EOS:
+#
+vt100+enq|ncurses extension for vt100-style ENQ:\
+	:u6=\E[%i%d;%dR:u7=\E[6n:u8=\E[?1;2c:u9=\E[c:
+vt102+enq|ncurses extension for vt102-style ENQ:\
+	:u6=\E[%i%d;%dR:u7=\E[6n:u8=\E[?6c:u9=\E[c:
+#
+# And here, for those of you with orphaned VT100s lacking documentation, is
+# a description of the soft switches invoked when you do `Set Up'.
+#
+#  Scroll 0-Jump               Shifted 3   0-#
+#  |      1-Smooth             |           1-British pound sign
+#  | Autorepeat 0-Off          | Wrap Around 0-Off
+#  | |          1-On           | |           1-On
+#  | | Screen 0-Dark Bkg       | | New Line 0-Off
+#  | | |      1-Light Bkg      | | |        1-On
+#  | | | Cursor 0-Underline    | | | Interlace 0-Off
+#  | | | |      1-Block        | | | |         1-On
+#  | | | |                     | | | |
+#  1 1 0 1       1 1 1 1       0 1 0 0       0 0 1 0       <--Standard Settings
+#                | | | |                     | | | |
+#                | | | Auto XON/XOFF 0-Off   | | | Power 0-60 Hz
+#                | | |               1-On    | | |       1-50 Hz
+#                | | Ansi/VT52 0-VT52        | | Bits Per Char. 0-7 Bits
+#                | |           1-ANSI        | |                1-8 Bits
+#                | Keyclick 0-Off            | Parity 0-Off
+#                |          1-On             |        1-On
+#                Margin Bell 0-Off           Parity Sense 0-Odd
+#                            1-On                         1-Even
+#
+# The following SET-UP modes are assumed for normal operation:
+#	ANSI_MODE	AUTO_XON/XOFF_ON	NEWLINE_OFF	80_COLUMNS
+#	WRAP_AROUND_ON  JUMP_SCROLL_OFF
+# Other SET-UP modes may be set for operator convenience or communication
+# requirements; I recommend
+#	AUTOREPEAT_ON	BLOCK_CURSOR	MARGIN_BELL_OFF    SHIFTED_3_#
+# Unless you have a graphics add-on such as Digital Engineering's VT640
+# (and even then, whenever it can be arranged!) you should set
+#	INTERLACE_OFF
+#
+# (vt100: I added <rmam>/<smam> based on the init string, also :bs:. -- esr)
+vt100|vt100-am|dec vt100 (w/advanced video):\
+	:5i:am:bs:ms:xn:xo:\
+	:co#80:it#8:li#24:vt#3:\
+	:@8=\EOM:DO=\E[%dB:K1=\EOq:K2=\EOr:K3=\EOs:K4=\EOp:K5=\EOn:\
+	:LE=\E[%dD:RA=\E[?7l:RI=\E[%dC:SA=\E[?7h:UP=\E[%dA:\
+	:ac=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~:\
+	:ae=^O:as=^N:bl=^G:cb=\E[1K:cd=\E[J:ce=\E[K:cl=\E[H\E[J:\
+	:cm=\E[%i%d;%dH:cr=^M:cs=\E[%i%d;%dr:ct=\E[3g:do=^J:\
+	:eA=\E(B\E)0:ho=\E[H:k0=\EOy:k1=\EOP:k2=\EOQ:k3=\EOR:\
+	:k4=\EOS:k5=\EOt:k6=\EOu:k7=\EOv:k8=\EOl:k9=\EOw:k;=\EOx:\
+	:kb=^H:kd=\EOB:ke=\E[?1l\E>:kl=\EOD:kr=\EOC:ks=\E[?1h\E=:\
+	:ku=\EOA:l1=pf1:l2=pf2:l3=pf3:l4=pf4:le=^H:mb=\E[5m:\
+	:md=\E[1m:me=\E[0m:mr=\E[7m:nd=\E[C:pf=\E[4i:po=\E[5i:\
+	:ps=\E[0i:rc=\E8:rs=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h:\
+	:sc=\E7:se=\E[m:sf=^J:so=\E[7m:sr=\EM:st=\EH:ta=^I:ue=\E[m:\
+	:up=\E[A:us=\E[4m:
+
+# PuTTY 0.55 (released 3 August 2004)
+# http://www.chiark.greenend.org.uk/~sgtatham/putty/
+#
+# Comparing with 0.51, vttest is much better (only a few problems with the
+# cursor position reports and wrapping).
+#
+# PuTTY 0.51 (released 14 December 2000)
+#
+# This emulates vt100 + vt52 (plus a few vt220 features:  ech, SRM, DECTCEM, as
+# well as SCO and Atari, color palettes from Linux console).  Reading the code,
+# it is intended to be VT102 plus selected features.  By default, it sets $TERM
+# to xterm, which is incorrect, since several features are misimplemented:
+#
+#	Alt+key always sends ESC+key, so 'km' capability is removed.
+#
+#	Control responses, wrapping and tabs are buggy, failing a couple of
+#	screens in vttest.
+#
+#	xterm mouse support is not implemented (unrelease version may).
+#
+# Several features such as backspace/delete are optional; this entry documents
+# the default behavior -TD
+
+# (sgr removed to fit entry within 1023 bytes)
+# (acsc removed to fit entry within 1023 bytes)
+# (terminfo-only capabilities suppressed to fit entry within 1023 bytes)
+putty|PuTTY terminal emulator:\
+	:am:bw:hs:mi:ms:xn:xo:\
+	:it#8:\
+	:AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:K2=\E[G:\
+	:LE=\E[%dD:RI=\E[%dC:SF=\E[%dS:SR=\E[%dT:UP=\E[%dA:ae=^O:\
+	:al=\E[L:as=^N:bl=^G:bt=\E[Z:cd=\E[J:ce=\E[K:cl=\E[H\E[J:\
+	:cm=\E[%i%d;%dH:cr=^M:cs=\E[%i%d;%dr:ct=\E[3g:dc=\E[P:\
+	:dl=\E[M:do=\ED:ds=\E]0;\007:ec=\E[%dX:ei=\E[4l:fs=^G:\
+	:ho=\E[H:im=\E[4h:\
+	:is=\E7\E[r\E[m\E[?7h\E[?1;4;6l\E[4l\E8\E>\E]R:\
+	:k1=\E[11~:k2=\E[12~:k3=\E[13~:k4=\E[14~:k5=\E[15~:\
+	:k6=\E[17~:k7=\E[18~:k8=\E[19~:k9=\E[20~:kD=\E[3~:\
+	:kI=\E[2~:kN=\E[6~:kP=\E[5~:kb=\177:kd=\E[B:kh=\E[1~:\
+	:kl=\E[D:kr=\E[C:ku=\E[A:le=^H:mb=\E[5m:md=\E[1m:me=\E[0m:\
+	:mr=\E[7m:nd=\E[C:nw=^M^J:rc=\E8:\
+	:rs=\E<\E["p\E[50;6"p\Ec\E[?3l\E]R\E[?1000l:sc=\E7:\
+	:se=\E[27m:sf=^J:so=\E[7m:sr=\EM:st=\EH:ta=^I:\
+	:te=\E[2J\E[?47l:ti=\E[?47h:ts=\E]0;:ue=\E[24m:up=\EM:\
+	:us=\E[4m:vb=\E[?5h\E[?5l:ve=\E[?25h:vi=\E[?25l:
+# palette is hardcoded...
+# (sgr removed to fit entry within 1023 bytes)
+# (acsc removed to fit entry within 1023 bytes)
+# (terminfo-only capabilities suppressed to fit entry within 1023 bytes)
+putty-256color|PuTTY 0.58 with xterm 256-colors:\
+	:am:bw:hs:mi:ms:xn:xo:\
+	:it#8:\
+	:AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:K2=\E[G:\
+	:LE=\E[%dD:RI=\E[%dC:SF=\E[%dS:SR=\E[%dT:UP=\E[%dA:ae=^O:\
+	:al=\E[L:as=^N:bl=^G:bt=\E[Z:cd=\E[J:ce=\E[K:cl=\E[H\E[J:\
+	:cm=\E[%i%d;%dH:cr=^M:cs=\E[%i%d;%dr:ct=\E[3g:dc=\E[P:\
+	:dl=\E[M:do=\ED:ds=\E]0;\007:ec=\E[%dX:ei=\E[4l:fs=^G:\
+	:ho=\E[H:im=\E[4h:\
+	:is=\E7\E[r\E[m\E[?7h\E[?1;4;6l\E[4l\E8\E>\E]R:\
+	:k1=\E[11~:k2=\E[12~:k3=\E[13~:k4=\E[14~:k5=\E[15~:\
+	:k6=\E[17~:k7=\E[18~:k8=\E[19~:k9=\E[20~:kD=\E[3~:\
+	:kI=\E[2~:kN=\E[6~:kP=\E[5~:kb=\177:kd=\E[B:kh=\E[1~:\
+	:kl=\E[D:kr=\E[C:ku=\E[A:le=^H:mb=\E[5m:md=\E[1m:me=\E[0m:\
+	:mr=\E[7m:nd=\E[C:nw=^M^J:rc=\E8:\
+	:rs=\E<\E["p\E[50;6"p\Ec\E[?3l\E]R\E[?1000l:sc=\E7:\
+	:se=\E[27m:sf=^J:so=\E[7m:sr=\EM:st=\EH:ta=^I:\
+	:te=\E[2J\E[?47l:ti=\E[?47h:ts=\E]0;:ue=\E[24m:up=\EM:\
+	:us=\E[4m:vb=\E[?5h\E[?5l:ve=\E[?25h:vi=\E[?25l:
+# Compatible with the R6 xterm
+# (from XFree86 3.2 distribution, <acsc> and :it: added, <blink@> removed)
+# added khome/kend, hts based on the R6 xterm code - TD
+# (khome/kend do not actually work in X11R5 or X11R6, but many people use this
+# for compatibility with other emulators).
+# (acsc removed to fit entry within 1023 bytes)
+xterm-r6|xterm-old|xterm X11R6 version:\
+	:am:bs:km:mi:ms:xn:\
+	:co#80:it#8:li#24:\
+	:*6=\E[4~:@0=\E[1~:AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:\
+	:DO=\E[%dB:F1=\E[23~:F2=\E[24~:F3=\E[25~:F4=\E[26~:\
+	:F5=\E[28~:F6=\E[29~:F7=\E[31~:F8=\E[32~:F9=\E[33~:\
+	:FA=\E[34~:Km=\E[M:LE=\E[%dD:RI=\E[%dC:UP=\E[%dA:ae=^O:\
+	:al=\E[L:as=^N:bl=^G:cd=\E[J:ce=\E[K:cl=\E[H\E[2J:\
+	:cm=\E[%i%d;%dH:cr=^M:cs=\E[%i%d;%dr:ct=\E[3g:dc=\E[P:\
+	:dl=\E[M:do=^J:eA=\E)0:ei=\E[4l:ho=\E[H:im=\E[4h:\
+	:is=\E[m\E[?7h\E[4l\E>\E7\E[r\E[?1;3;4;6l\E8:\
+	:k1=\E[11~:k2=\E[12~:k3=\E[13~:k4=\E[14~:k5=\E[15~:\
+	:k6=\E[17~:k7=\E[18~:k8=\E[19~:k9=\E[20~:k;=\E[21~:\
+	:kD=\E[3~:kI=\E[2~:kN=\E[6~:kP=\E[5~:kb=^H:kd=\EOB:\
+	:ke=\E[?1l\E>:kl=\EOD:kr=\EOC:ks=\E[?1h\E=:ku=\EOA:le=^H:\
+	:md=\E[1m:me=\E[m:ml=\El:mr=\E[7m:mu=\Em:nd=\E[C:rc=\E8:\
+	:rs=\E[m\E[?7h\E[4l\E>\E7\E[r\E[?1;3;4;6l\E8:sc=\E7:\
+	:se=\E[m:sf=^J:so=\E[7m:sr=\EM:st=\EH:ta=^I:\
+	:te=\E[2J\E[?47l\E8:ti=\E7\E[?47h:u6=\E[%i%d;%dR:\
+	:u7=\E[6n:u8=\E[?1;2c:u9=\E[c:ue=\E[m:up=\E[A:us=\E[4m:
+
+# This version reflects the current xterm features.
+# (sgr removed to fit entry within 1023 bytes)
+# (acsc removed to fit entry within 1023 bytes)
+# (terminfo-only capabilities suppressed to fit entry within 1023 bytes)
+xterm-new|modern xterm terminal emulator:\
+	:am:bs:km:mi:ms:xn:\
+	:co#80:it#8:li#24:\
+	:AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:\
+	:K2=\EOE:LE=\E[%dD:RI=\E[%dC:SF=\E[%dS:SR=\E[%dT:\
+	:UP=\E[%dA:ae=\E(B:al=\E[L:as=\E(0:bl=^G:bt=\E[Z:cd=\E[J:\
+	:ce=\E[K:cl=\E[H\E[2J:cm=\E[%i%d;%dH:cr=^M:\
+	:cs=\E[%i%d;%dr:ct=\E[3g:dc=\E[P:dl=\E[M:do=^J:ec=\E[%dX:\
+	:ei=\E[4l:ho=\E[H:im=\E[4h:is=\E[!p\E[?3;4l\E[4l\E>:\
+	:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:k5=\E[15~:k6=\E[17~:\
+	:k7=\E[18~:k8=\E[19~:k9=\E[20~:kD=\E[3~:kI=\E[2~:kN=\E[6~:\
+	:kP=\E[5~:kb=^H:kd=\EOB:ke=\E[?1l\E>:kh=\EOH:kl=\EOD:\
+	:kr=\EOC:ks=\E[?1h\E=:ku=\EOA:le=^H:mb=\E[5m:md=\E[1m:\
+	:me=\E[0m:mm=\E[?1034h:mo=\E[?1034l:mr=\E[7m:nd=\E[C:\
+	:rc=\E8:sc=\E7:se=\E[27m:sf=^J:so=\E[7m:sr=\EM:st=\EH:ta=^I:\
+	:te=\E[?1049l:ti=\E[?1049h:ue=\E[24m:up=\E[A:us=\E[4m:\
+	:vb=\E[?5h\E[?5l:ve=\E[?12l\E[?25h:vi=\E[?25l:\
+	:vs=\E[?12;25h:
+#
+# This fragment describes as much of XFree86 xterm's "pc-style" function
+# keys as will fit into terminfo's 60 function keys.
+# From ctlseqs.ms:
+#    Code     Modifiers
+#  ---------------------------------
+#     2       Shift
+#     3       Alt
+#     4       Shift + Alt
+#     5       Control
+#     6       Shift + Control
+#     7       Alt + Control
+#     8       Shift + Alt + Control
+#  ---------------------------------
+# The meta key may also be used as a modifier in this scheme, adding another
+# bit to the parameter.
+xterm+pcfkeys|fragment for PC-style fkeys:\
+	:#2=\E[1;2H:#3=\E[2;2~:#4=\E[1;2D:%c=\E[6;2~:%e=\E[5;2~:\
+	:%i=\E[1;2C:*4=\E[3;2~:*7=\E[1;2F:@7=\EOF:F1=\E[23~:\
+	:F2=\E[24~:F3=\E[1;2P:F4=\E[1;2Q:F5=\E[1;2R:F6=\E[1;2S:\
+	:F7=\E[15;2~:F8=\E[17;2~:F9=\E[18;2~:FA=\E[19;2~:\
+	:FB=\E[20;2~:FC=\E[21;2~:FD=\E[23;2~:FE=\E[24;2~:\
+	:FF=\E[1;5P:FG=\E[1;5Q:FH=\E[1;5R:FI=\E[1;5S:FJ=\E[15;5~:\
+	:FK=\E[17;5~:FL=\E[18;5~:FM=\E[19;5~:FN=\E[20;5~:\
+	:FO=\E[21;5~:FP=\E[23;5~:FQ=\E[24;5~:FR=\E[1;6P:\
+	:FS=\E[1;6Q:FT=\E[1;6R:FU=\E[1;6S:FV=\E[15;6~:\
+	:FW=\E[17;6~:FX=\E[18;6~:FY=\E[19;6~:FZ=\E[20;6~:\
+	:Fa=\E[21;6~:Fb=\E[23;6~:Fc=\E[24;6~:Fd=\E[1;3P:\
+	:Fe=\E[1;3Q:Ff=\E[1;3R:Fg=\E[1;3S:Fh=\E[15;3~:\
+	:Fi=\E[17;3~:Fj=\E[18;3~:Fk=\E[19;3~:Fl=\E[20;3~:\
+	:Fm=\E[21;3~:Fn=\E[23;3~:Fo=\E[24;3~:Fp=\E[1;4P:\
+	:Fq=\E[1;4Q:Fr=\E[1;4R:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:\
+	:k5=\E[15~:k6=\E[17~:k7=\E[18~:k8=\E[19~:k9=\E[20~:\
+	:k;=\E[21~:kD=\E[3~:kF=\E[1;2B:kI=\E[2~:kN=\E[6~:kP=\E[5~:\
+	:kR=\E[1;2A:kd=\EOB:kh=\EOH:kl=\EOD:kr=\EOC:ku=\EOA:
+
+xterm+app|fragment with cursor keys in application mode:\
+	:@7=\EOF:kd=\EOB:kh=\EOH:kl=\EOD:kr=\EOC:ku=\EOA:
+
+xterm+pcc2|fragment with modifyCursorKeys:2:\
+	:#4=\E[1;2D:%i=\E[1;2C:kF=\E[1;2B:kR=\E[1;2A:
+#
+xterm+pcf2|fragment with modifyFunctionKeys:2:\
+	:F1=\E[23~:F2=\E[24~:F3=\E[1;2P:F4=\E[1;2Q:F5=\E[1;2R:\
+	:F6=\E[1;2S:F7=\E[15;2~:F8=\E[17;2~:F9=\E[18;2~:\
+	:FA=\E[19;2~:FB=\E[20;2~:FC=\E[21;2~:FD=\E[23;2~:\
+	:FE=\E[24;2~:FF=\E[1;5P:FG=\E[1;5Q:FH=\E[1;5R:FI=\E[1;5S:\
+	:FJ=\E[15;5~:FK=\E[17;5~:FL=\E[18;5~:FM=\E[19;5~:\
+	:FN=\E[20;5~:FO=\E[21;5~:FP=\E[23;5~:FQ=\E[24;5~:\
+	:FR=\E[1;6P:FS=\E[1;6Q:FT=\E[1;6R:FU=\E[1;6S:FV=\E[15;6~:\
+	:FW=\E[17;6~:FX=\E[18;6~:FY=\E[19;6~:FZ=\E[20;6~:\
+	:Fa=\E[21;6~:Fb=\E[23;6~:Fc=\E[24;6~:Fd=\E[1;3P:\
+	:Fe=\E[1;3Q:Ff=\E[1;3R:Fg=\E[1;3S:Fh=\E[15;3~:\
+	:Fi=\E[17;3~:Fj=\E[18;3~:Fk=\E[19;3~:Fl=\E[20;3~:\
+	:Fm=\E[21;3~:Fn=\E[23;3~:Fo=\E[24;3~:Fp=\E[1;4P:\
+	:Fq=\E[1;4Q:Fr=\E[1;4R:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:\
+	:k5=\E[15~:k6=\E[17~:k7=\E[18~:k8=\E[19~:k9=\E[20~:\
+	:k;=\E[21~:
+#
+# Chunks from xterm #230:
+xterm+pce2|fragment with modifyCursorKeys:2:\
+	:#2=\E[1;2H:#3=\E[2;2~:%c=\E[6;2~:%e=\E[5;2~:*4=\E[3;2~:\
+	:*7=\E[1;2F:@7=\E[4~:kD=\E[3~:kI=\E[2~:kN=\E[6~:kP=\E[5~:\
+	:kh=\E[1~:
+
+xterm+edit|fragment for 6-key editing-keypad:\
+	:@7=\E[4~:kD=\E[3~:kI=\E[2~:kN=\E[6~:kP=\E[5~:kh=\E[1~:
+
+xterm+pc+edit|fragment for pc-style editing keypad:\
+	:@7=\E[4~:kh=\E[1~:
+#
+# This chunk is used for building the VT220/Sun/PC keyboard variants.
+xterm-basic|modern xterm terminal emulator - common:\
+	:5i:am:bs:km:mi:ms:ut:xn:\
+	:Co#8:co#80:it#8:li#24:pa#64:\
+	:AB=\E[4%dm:AF=\E[3%dm:AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:\
+	:DO=\E[%dB:IC=\E[%d@:Km=\E[M:LE=\E[%dD:RA=\E[?7l:\
+	:RI=\E[%dC:SA=\E[?7h:UP=\E[%dA:\
+	:ac=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~:\
+	:ae=\E(B:al=\E[L:as=\E(0:bl=^G:bt=\E[Z:cb=\E[1K:cd=\E[J:\
+	:ce=\E[K:ch=\E[%i%dG:cl=\E[H\E[2J:cm=\E[%i%d;%dH:cr=^M:\
+	:cs=\E[%i%d;%dr:ct=\E[3g:cv=\E[%i%dd:dc=\E[P:dl=\E[M:\
+	:do=^J:ec=\E[%dX:ei=\E[4l:ho=\E[H:im=\E[4h:\
+	:is=\E[!p\E[?3;4l\E[4l\E>:kb=^H:ke=\E[?1l\E>:\
+	:ks=\E[?1h\E=:le=^H:mb=\E[5m:md=\E[1m:me=\E[0m:mk=\E[8m:\
+	:ml=\El:mm=\E[?1034h:mo=\E[?1034l:mr=\E[7m:mu=\Em:nd=\E[C:\
+	:op=\E[39;49m:pf=\E[4i:po=\E[5i:ps=\E[i:r1=\Ec:\
+	:r2=\E[!p\E[?3;4l\E[4l\E>:rc=\E8:sc=\E7:se=\E[27m:sf=^J:\
+	:so=\E[7m:sr=\EM:st=\EH:ta=^I:te=\E[?1049l:ti=\E[?1049h:\
+	:u6=\E[%i%d;%dR:u7=\E[6n:u8=\E[?1;2c:u9=\E[c:ue=\E[24m:\
+	:up=\E[A:us=\E[4m:vb=\E[?5h\E[?5l:ve=\E[?12l\E[?25h:\
+	:vi=\E[?25l:vs=\E[?12;25h:
+
+# 256-colors is a compile-time feature of XFree86 xterm beginning with
+# patch #111 (1999/7/10) -TD
+xterm+256color|xterm 256-color feature:\
+	:cc:\
+	:Co#256:pa#32767:\
+	:Sb@:Sf@:
+
+# 88-colors is a compile-time feature of XFree86 xterm beginning with
+# patch #115 (1999/9/18) -TD
+#
+# Note that the escape sequences used are the same as for 256-colors - xterm
+# has a different table of default color resource values.  If built for
+# 256-colors, it can still handle an 88-color palette by using the initc
+# capability.
+#
+# At this time (2007/7/14), except for rxvt 2.7.x, none of the other terminals
+# which support the xterm+256color feature support the associated initc
+# capability.  So it is cancelled in the entries which use this and/or the
+# xterm+256color block.
+#
+# The default color palette for the 256- and 88-colors are different.  A
+# given executable will have one palette (perhaps compiled-in).  If the program
+# supports xterm's control sequence, it can be programmed using initc.
+xterm+88color|xterm 88-color feature:\
+	:cc:\
+	:Co#88:pa#7744:
+
+# These variants of XFree86 3.9.16 xterm are built as a configure option.
+# (sgr removed to fit entry within 1023 bytes)
+# (acsc removed to fit entry within 1023 bytes)
+# (terminfo-only capabilities suppressed to fit entry within 1023 bytes)
+xterm-256color|xterm with 256 colors:\
+	:am:bs:km:mi:ms:xn:\
+	:co#80:it#8:li#24:\
+	:AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:\
+	:K2=\EOE:LE=\E[%dD:RI=\E[%dC:SF=\E[%dS:SR=\E[%dT:\
+	:UP=\E[%dA:ae=\E(B:al=\E[L:as=\E(0:bl=^G:bt=\E[Z:cd=\E[J:\
+	:ce=\E[K:cl=\E[H\E[2J:cm=\E[%i%d;%dH:cr=^M:\
+	:cs=\E[%i%d;%dr:ct=\E[3g:dc=\E[P:dl=\E[M:do=^J:ec=\E[%dX:\
+	:ei=\E[4l:ho=\E[H:im=\E[4h:is=\E[!p\E[?3;4l\E[4l\E>:\
+	:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:k5=\E[15~:k6=\E[17~:\
+	:k7=\E[18~:k8=\E[19~:k9=\E[20~:kD=\E[3~:kI=\E[2~:kN=\E[6~:\
+	:kP=\E[5~:kb=^H:kd=\EOB:ke=\E[?1l\E>:kh=\EOH:kl=\EOD:\
+	:kr=\EOC:ks=\E[?1h\E=:ku=\EOA:le=^H:mb=\E[5m:md=\E[1m:\
+	:me=\E[0m:mm=\E[?1034h:mo=\E[?1034l:mr=\E[7m:nd=\E[C:\
+	:rc=\E8:sc=\E7:se=\E[27m:sf=^J:so=\E[7m:sr=\EM:st=\EH:ta=^I:\
+	:te=\E[?1049l:ti=\E[?1049h:ue=\E[24m:up=\E[A:us=\E[4m:\
+	:vb=\E[?5h\E[?5l:ve=\E[?12l\E[?25h:vi=\E[?25l:\
+	:vs=\E[?12;25h:
+# (sgr removed to fit entry within 1023 bytes)
+# (acsc removed to fit entry within 1023 bytes)
+# (terminfo-only capabilities suppressed to fit entry within 1023 bytes)
+xterm-88color|xterm with 88 colors:\
+	:am:bs:km:mi:ms:xn:\
+	:co#80:it#8:li#24:\
+	:AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:\
+	:K2=\EOE:LE=\E[%dD:RI=\E[%dC:SF=\E[%dS:SR=\E[%dT:\
+	:UP=\E[%dA:ae=\E(B:al=\E[L:as=\E(0:bl=^G:bt=\E[Z:cd=\E[J:\
+	:ce=\E[K:cl=\E[H\E[2J:cm=\E[%i%d;%dH:cr=^M:\
+	:cs=\E[%i%d;%dr:ct=\E[3g:dc=\E[P:dl=\E[M:do=^J:ec=\E[%dX:\
+	:ei=\E[4l:ho=\E[H:im=\E[4h:is=\E[!p\E[?3;4l\E[4l\E>:\
+	:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:k5=\E[15~:k6=\E[17~:\
+	:k7=\E[18~:k8=\E[19~:k9=\E[20~:kD=\E[3~:kI=\E[2~:kN=\E[6~:\
+	:kP=\E[5~:kb=^H:kd=\EOB:ke=\E[?1l\E>:kh=\EOH:kl=\EOD:\
+	:kr=\EOC:ks=\E[?1h\E=:ku=\EOA:le=^H:mb=\E[5m:md=\E[1m:\
+	:me=\E[0m:mm=\E[?1034h:mo=\E[?1034l:mr=\E[7m:nd=\E[C:\
+	:rc=\E8:sc=\E7:se=\E[27m:sf=^J:so=\E[7m:sr=\EM:st=\EH:ta=^I:\
+	:te=\E[?1049l:ti=\E[?1049h:ue=\E[24m:up=\E[A:us=\E[4m:\
+	:vb=\E[?5h\E[?5l:ve=\E[?12l\E[?25h:vi=\E[?25l:\
+	:vs=\E[?12;25h:
+
+# This is xterm for ncurses.
+# (sgr removed to fit entry within 1023 bytes)
+# (acsc removed to fit entry within 1023 bytes)
+# (terminfo-only capabilities suppressed to fit entry within 1023 bytes)
+xterm|xterm terminal emulator (X Window System):\
+	:am:bs:km:mi:ms:xn:\
+	:co#80:it#8:li#24:\
+	:AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:\
+	:K2=\EOE:LE=\E[%dD:RI=\E[%dC:SF=\E[%dS:SR=\E[%dT:\
+	:UP=\E[%dA:ae=\E(B:al=\E[L:as=\E(0:bl=^G:bt=\E[Z:cd=\E[J:\
+	:ce=\E[K:cl=\E[H\E[2J:cm=\E[%i%d;%dH:cr=^M:\
+	:cs=\E[%i%d;%dr:ct=\E[3g:dc=\E[P:dl=\E[M:do=^J:ec=\E[%dX:\
+	:ei=\E[4l:ho=\E[H:im=\E[4h:is=\E[!p\E[?3;4l\E[4l\E>:\
+	:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:k5=\E[15~:k6=\E[17~:\
+	:k7=\E[18~:k8=\E[19~:k9=\E[20~:kD=\E[3~:kI=\E[2~:kN=\E[6~:\
+	:kP=\E[5~:kb=^H:kd=\EOB:ke=\E[?1l\E>:kh=\EOH:kl=\EOD:\
+	:kr=\EOC:ks=\E[?1h\E=:ku=\EOA:le=^H:mb=\E[5m:md=\E[1m:\
+	:me=\E[0m:mm=\E[?1034h:mo=\E[?1034l:mr=\E[7m:nd=\E[C:\
+	:rc=\E8:sc=\E7:se=\E[27m:sf=^J:so=\E[7m:sr=\EM:st=\EH:ta=^I:\
+	:te=\E[?1049l:ti=\E[?1049h:ue=\E[24m:up=\E[A:us=\E[4m:\
+	:vb=\E[?5h\E[?5l:ve=\E[?12l\E[?25h:vi=\E[?25l:\
+	:vs=\E[?12;25h:
+
+# From: Thomas Dickey <dickey@clark.net> 04 Oct 1997
+# Updated: Oezguer Kesim <kesim@math.fu-berlin.de> 02 Nov 1997
+# Notes:
+# rxvt 2.21b uses
+#	smacs=\E(B\E)U^N, rmacs=\E(B\E)0^O,
+# but some applications don't work with that.
+# It also has an AIX extension
+#	box2=lqkxjmwuvtn,
+# and
+#	ech=\E[%p1%dX,
+# but the latter does not work correctly.
+#
+# The distributed terminfo says it implements hpa and vpa, but they are not
+# implemented correctly, using relative rather than absolute positioning.
+#
+# rxvt is normally configured to look for "xterm" or "xterm-color" as $TERM.
+# Since rxvt is not really compatible with xterm, it should be configured as
+# "rxvt" or "rxvt-color".
+#
+# removed dch/dch1 because they are inconsistent with bce/ech -TD
+# remove km as per tack test -TD
+# (sgr removed to fit entry within 1023 bytes)
+# (acsc removed to fit entry within 1023 bytes)
+# (terminfo-only capabilities suppressed to fit entry within 1023 bytes)
+rxvt-basic|rxvt terminal base (X Window System):\
+	:am:bs:eo:mi:ms:xn:xo:\
+	:co#80:it#8:li#24:\
+	:AL=\E[%dL:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:K1=\EOw:K2=\EOu:\
+	:K3=\EOy:K4=\EOq:K5=\EOs:LE=\E[%dD:RI=\E[%dC:UP=\E[%dA:\
+	:ae=^O:al=\E[L:as=^N:bl=^G:cd=\E[J:ce=\E[K:cl=\E[H\E[2J:\
+	:cm=\E[%i%d;%dH:cr=^M:cs=\E[%i%d;%dr:ct=\E[3g:dl=\E[M:\
+	:do=^J:ei=\E[4l:ho=\E[H:i1=\E[?47l\E=\E[?1l:ic=\E[@:\
+	:im=\E[4h:is=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l:\
+	:k1=\E[11~:k2=\E[12~:k3=\E[13~:k4=\E[14~:k5=\E[15~:\
+	:k6=\E[17~:k7=\E[18~:k8=\E[19~:k9=\E[20~:kD=\E[3~:\
+	:kI=\E[2~:kN=\E[6~:kP=\E[5~:kb=^H:kd=\E[B:ke=\E>:kh=\E[7~:\
+	:kl=\E[D:kr=\E[C:ks=\E=:ku=\E[A:le=^H:mb=\E[5m:md=\E[1m:\
+	:me=\E[0m:mr=\E[7m:nd=\E[C:rc=\E8:sc=\E7:se=\E[27m:sf=^J:\
+	:so=\E[7m:sr=\EM:st=\EH:ta=^I:te=\E[2J\E[?47l\E8:\
+	:ti=\E7\E[?47h:ue=\E[24m:up=\E[A:us=\E[4m:\
+	:vb=\E[?5h\E[?5l:ve=\E[?25h:vi=\E[?25l:
+# Key Codes from rxvt reference:
+#
+# Note: Shift + F1-F10 generates F11-F20
+#
+# For the keypad, use Shift to temporarily override Application-Keypad
+# setting use Num_Lock to toggle Application-Keypad setting if Num_Lock
+# is off, escape sequences toggle Application-Keypad setting.
+# Also note that values of Home, End, Delete may have been compiled
+# differently on your system.
+#
+#                   Normal       Shift        Control      Ctrl+Shift
+#  Tab              ^I           ESC [ Z      ^I           ESC [ Z
+#  BackSpace        ^H           ^?           ^?           ^?
+#  Find             ESC [ 1 ~    ESC [ 1 $    ESC [ 1 ^    ESC [ 1 @
+#  Insert           ESC [ 2 ~    paste        ESC [ 2 ^    ESC [ 2 @
+#  Execute          ESC [ 3 ~    ESC [ 3 $    ESC [ 3 ^    ESC [ 3 @
+#  Select           ESC [ 4 ~    ESC [ 4 $    ESC [ 4 ^    ESC [ 4 @
+#  Prior            ESC [ 5 ~    scroll-up    ESC [ 5 ^    ESC [ 5 @
+#  Next             ESC [ 6 ~    scroll-down  ESC [ 6 ^    ESC [ 6 @
+#  Home             ESC [ 7 ~    ESC [ 7 $    ESC [ 7 ^    ESC [ 7 @
+#  End              ESC [ 8 ~    ESC [ 8 $    ESC [ 8 ^    ESC [ 8 @
+#  Delete           ESC [ 3 ~    ESC [ 3 $    ESC [ 3 ^    ESC [ 3 @
+#  F1               ESC [ 11 ~   ESC [ 23 ~   ESC [ 11 ^   ESC [ 23 ^
+#  F2               ESC [ 12 ~   ESC [ 24 ~   ESC [ 12 ^   ESC [ 24 ^
+#  F3               ESC [ 13 ~   ESC [ 25 ~   ESC [ 13 ^   ESC [ 25 ^
+#  F4               ESC [ 14 ~   ESC [ 26 ~   ESC [ 14 ^   ESC [ 26 ^
+#  F5               ESC [ 15 ~   ESC [ 28 ~   ESC [ 15 ^   ESC [ 28 ^
+#  F6               ESC [ 17 ~   ESC [ 29 ~   ESC [ 17 ^   ESC [ 29 ^
+#  F7               ESC [ 18 ~   ESC [ 31 ~   ESC [ 18 ^   ESC [ 31 ^
+#  F8               ESC [ 19 ~   ESC [ 32 ~   ESC [ 19 ^   ESC [ 32 ^
+#  F9               ESC [ 20 ~   ESC [ 33 ~   ESC [ 20 ^   ESC [ 33 ^
+#  F10              ESC [ 21 ~   ESC [ 34 ~   ESC [ 21 ^   ESC [ 34 ^
+#  F11              ESC [ 23 ~   ESC [ 23 $   ESC [ 23 ^   ESC [ 23 @
+#  F12              ESC [ 24 ~   ESC [ 24 $   ESC [ 24 ^   ESC [ 24 @
+#  F13              ESC [ 25 ~   ESC [ 25 $   ESC [ 25 ^   ESC [ 25 @
+#  F14              ESC [ 26 ~   ESC [ 26 $   ESC [ 26 ^   ESC [ 26 @
+#  F15 (Help)       ESC [ 28 ~   ESC [ 28 $   ESC [ 28 ^   ESC [ 28 @
+#  F16 (Menu)       ESC [ 29 ~   ESC [ 29 $   ESC [ 29 ^   ESC [ 29 @
+#  F17              ESC [ 31 ~   ESC [ 31 $   ESC [ 31 ^   ESC [ 31 @
+#  F18              ESC [ 32 ~   ESC [ 32 $   ESC [ 32 ^   ESC [ 32 @
+#  F19              ESC [ 33 ~   ESC [ 33 $   ESC [ 33 ^   ESC [ 33 @
+#  F20              ESC [ 34 ~   ESC [ 34 $   ESC [ 34 ^   ESC [ 34 @
+#
+#                                                          Application
+#  Up               ESC [ A      ESC [ a      ESC O a      ESC O A
+#  Down             ESC [ B      ESC [ b      ESC O b      ESC O B
+#  Right            ESC [ C      ESC [ c      ESC O c      ESC O C
+#  Left             ESC [ D      ESC [ d      ESC O d      ESC O D
+#  KP_Enter         ^M                                     ESC O M
+#  KP_F1            ESC O P                                ESC O P
+#  KP_F2            ESC O Q                                ESC O Q
+#  KP_F3            ESC O R                                ESC O R
+#  KP_F4            ESC O S                                ESC O S
+#  XK_KP_Multiply   *                                      ESC O j
+#  XK_KP_Add        +                                      ESC O k
+#  XK_KP_Separator  ,                                      ESC O l
+#  XK_KP_Subtract   -                                      ESC O m
+#  XK_KP_Decimal    .                                      ESC O n
+#  XK_KP_Divide     /                                      ESC O o
+#  XK_KP_0          0                                      ESC O p
+#  XK_KP_1          1                                      ESC O q
+#  XK_KP_2          2                                      ESC O r
+#  XK_KP_3          3                                      ESC O s
+#  XK_KP_4          4                                      ESC O t
+#  XK_KP_5          5                                      ESC O u
+#  XK_KP_6          6                                      ESC O v
+#  XK_KP_7          7                                      ESC O w
+#  XK_KP_8          8                                      ESC O x
+#  XK_KP_9          9                                      ESC O y
+#
+# The source-code for rxvt actually defines mappings for F21-F35, using
+# "ESC [ 35 ~" to "ESC [  49 ~".  Keyboards with more than 12 function keys
+# are rare, so this entry uses the shift- and control-modifiers as in
+# xterm+pcfkeys to define keys past F12.
+#
+# kIC is normally not used, since rxvt performs a paste for that (shifted
+# insert), unless private mode 35 is set.
+#
+# kDN, kDN5, kDN6, etc are extensions based on the names from xterm+pcfkeys -TD
+# Removed kDN6, etc (control+shift) since rxvt does not implement this -TD
+rxvt+pcfkeys|fragment for PC-style fkeys:\
+	:#2=\E[7$:#3=\E[2$:#4=\E[d:%c=\E[6$:%e=\E[5$:%i=\E[c:\
+	:*4=\E[3$:*6=\E[4~:*7=\E[8$:@0=\E[1~:@7=\E[8~:F1=\E[23~:\
+	:F2=\E[24~:F3=\E[25~:F4=\E[26~:F5=\E[28~:F6=\E[29~:\
+	:F7=\E[31~:F8=\E[32~:F9=\E[33~:FA=\E[34~:FB=\E[23$:\
+	:FC=\E[24$:FD=\E[11^:FE=\E[12^:FF=\E[13^:FG=\E[14^:\
+	:FH=\E[15^:FI=\E[17^:FJ=\E[18^:FK=\E[19^:FL=\E[20^:\
+	:FM=\E[21^:FN=\E[23^:FO=\E[24^:FP=\E[25^:FQ=\E[26^:\
+	:FR=\E[28^:FS=\E[29^:FT=\E[31^:FU=\E[32^:FV=\E[33^:\
+	:FW=\E[34^:FX=\E[23@:FY=\E[24@:k1=\E[11~:k2=\E[12~:\
+	:k3=\E[13~:k4=\E[14~:k5=\E[15~:k6=\E[17~:k7=\E[18~:\
+	:k8=\E[19~:k9=\E[20~:k;=\E[21~:kD=\E[3~:kE=\E[8^:kI=\E[2~:\
+	:kN=\E[6~:kP=\E[5~:kd=\E[B:kh=\E[7~:kl=\E[D:kr=\E[C:\
+	:ku=\E[A:
+
+# (sgr removed to fit entry within 1023 bytes)
+# (acsc removed to fit entry within 1023 bytes)
+# (terminfo-only capabilities suppressed to fit entry within 1023 bytes)
+rxvt|rxvt terminal emulator (X Window System):\
+	:am:bs:eo:mi:ms:xn:xo:\
+	:co#80:it#8:li#24:\
+	:AL=\E[%dL:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:K1=\EOw:K2=\EOu:\
+	:K3=\EOy:K4=\EOq:K5=\EOs:LE=\E[%dD:RI=\E[%dC:UP=\E[%dA:\
+	:ae=^O:al=\E[L:as=^N:bl=^G:cd=\E[J:ce=\E[K:cl=\E[H\E[2J:\
+	:cm=\E[%i%d;%dH:cr=^M:cs=\E[%i%d;%dr:ct=\E[3g:dl=\E[M:\
+	:do=^J:ei=\E[4l:ho=\E[H:i1=\E[?47l\E=\E[?1l:ic=\E[@:\
+	:im=\E[4h:is=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l:\
+	:k0=\E[21~:k1=\E[11~:k2=\E[12~:k3=\E[13~:k4=\E[14~:\
+	:k5=\E[15~:k6=\E[17~:k7=\E[18~:k8=\E[19~:k9=\E[20~:\
+	:kD=\E[3~:kI=\E[2~:kN=\E[6~:kP=\E[5~:kb=^H:kd=\E[B:ke=\E>:\
+	:kh=\E[7~:kl=\E[D:kr=\E[C:ks=\E=:ku=\E[A:le=^H:mb=\E[5m:\
+	:md=\E[1m:me=\E[0m:mr=\E[7m:nd=\E[C:rc=\E8:sc=\E7:\
+	:se=\E[27m:sf=^J:so=\E[7m:sr=\EM:st=\EH:ta=^I:\
+	:te=\E[2J\E[?47l\E8:ti=\E7\E[?47h:ue=\E[24m:up=\E[A:\
+	:us=\E[4m:vb=\E[?5h\E[?5l:ve=\E[?25h:vi=\E[?25l:
+# (sgr removed to fit entry within 1023 bytes)
+# (acsc removed to fit entry within 1023 bytes)
+# (terminfo-only capabilities suppressed to fit entry within 1023 bytes)
+rxvt-color|rxvt terminal emulator (X Window System):\
+	:am:bs:eo:mi:ms:xn:xo:\
+	:co#80:it#8:li#24:\
+	:AL=\E[%dL:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:K1=\EOw:K2=\EOu:\
+	:K3=\EOy:K4=\EOq:K5=\EOs:LE=\E[%dD:RI=\E[%dC:UP=\E[%dA:\
+	:ae=^O:al=\E[L:as=^N:bl=^G:cd=\E[J:ce=\E[K:cl=\E[H\E[2J:\
+	:cm=\E[%i%d;%dH:cr=^M:cs=\E[%i%d;%dr:ct=\E[3g:dl=\E[M:\
+	:do=^J:ei=\E[4l:ho=\E[H:i1=\E[?47l\E=\E[?1l:ic=\E[@:\
+	:im=\E[4h:is=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l:\
+	:k0=\E[21~:k1=\E[11~:k2=\E[12~:k3=\E[13~:k4=\E[14~:\
+	:k5=\E[15~:k6=\E[17~:k7=\E[18~:k8=\E[19~:k9=\E[20~:\
+	:kD=\E[3~:kI=\E[2~:kN=\E[6~:kP=\E[5~:kb=^H:kd=\E[B:ke=\E>:\
+	:kh=\E[7~:kl=\E[D:kr=\E[C:ks=\E=:ku=\E[A:le=^H:mb=\E[5m:\
+	:md=\E[1m:me=\E[0m:mr=\E[7m:nd=\E[C:rc=\E8:sc=\E7:\
+	:se=\E[27m:sf=^J:so=\E[7m:sr=\EM:st=\EH:ta=^I:\
+	:te=\E[2J\E[?47l\E8:ti=\E7\E[?47h:ue=\E[24m:up=\E[A:\
+	:us=\E[4m:vb=\E[?5h\E[?5l:ve=\E[?25h:vi=\E[?25l:
+# (sgr removed to fit entry within 1023 bytes)
+# (acsc removed to fit entry within 1023 bytes)
+# (terminfo-only capabilities suppressed to fit entry within 1023 bytes)
+rxvt-256color|rxvt 2.7.9 with xterm 256-colors:\
+	:am:bs:eo:mi:ms:xn:xo:\
+	:co#80:it#8:li#24:\
+	:AL=\E[%dL:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:K1=\EOw:K2=\EOu:\
+	:K3=\EOy:K4=\EOq:K5=\EOs:LE=\E[%dD:RI=\E[%dC:UP=\E[%dA:\
+	:ae=^O:al=\E[L:as=^N:bl=^G:cd=\E[J:ce=\E[K:cl=\E[H\E[2J:\
+	:cm=\E[%i%d;%dH:cr=^M:cs=\E[%i%d;%dr:ct=\E[3g:dl=\E[M:\
+	:do=^J:ei=\E[4l:ho=\E[H:i1=\E[?47l\E=\E[?1l:ic=\E[@:\
+	:im=\E[4h:is=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l:\
+	:k0=\E[21~:k1=\E[11~:k2=\E[12~:k3=\E[13~:k4=\E[14~:\
+	:k5=\E[15~:k6=\E[17~:k7=\E[18~:k8=\E[19~:k9=\E[20~:\
+	:kD=\E[3~:kI=\E[2~:kN=\E[6~:kP=\E[5~:kb=^H:kd=\E[B:ke=\E>:\
+	:kh=\E[7~:kl=\E[D:kr=\E[C:ks=\E=:ku=\E[A:le=^H:mb=\E[5m:\
+	:md=\E[1m:me=\E[0m:mr=\E[7m:nd=\E[C:rc=\E8:sc=\E7:\
+	:se=\E[27m:sf=^J:so=\E[7m:sr=\EM:st=\EH:ta=^I:\
+	:te=\E[2J\E[?47l\E8:ti=\E7\E[?47h:ue=\E[24m:up=\E[A:\
+	:us=\E[4m:vb=\E[?5h\E[?5l:ve=\E[?25h:vi=\E[?25l:
+# (sgr removed to fit entry within 1023 bytes)
+# (acsc removed to fit entry within 1023 bytes)
+# (terminfo-only capabilities suppressed to fit entry within 1023 bytes)
+rxvt-88color|rxvt 2.7.9 with xterm 88-colors:\
+	:am:bs:eo:mi:ms:xn:xo:\
+	:co#80:it#8:li#24:\
+	:AL=\E[%dL:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:K1=\EOw:K2=\EOu:\
+	:K3=\EOy:K4=\EOq:K5=\EOs:LE=\E[%dD:RI=\E[%dC:UP=\E[%dA:\
+	:ae=^O:al=\E[L:as=^N:bl=^G:cd=\E[J:ce=\E[K:cl=\E[H\E[2J:\
+	:cm=\E[%i%d;%dH:cr=^M:cs=\E[%i%d;%dr:ct=\E[3g:dl=\E[M:\
+	:do=^J:ei=\E[4l:ho=\E[H:i1=\E[?47l\E=\E[?1l:ic=\E[@:\
+	:im=\E[4h:is=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l:\
+	:k0=\E[21~:k1=\E[11~:k2=\E[12~:k3=\E[13~:k4=\E[14~:\
+	:k5=\E[15~:k6=\E[17~:k7=\E[18~:k8=\E[19~:k9=\E[20~:\
+	:kD=\E[3~:kI=\E[2~:kN=\E[6~:kP=\E[5~:kb=^H:kd=\E[B:ke=\E>:\
+	:kh=\E[7~:kl=\E[D:kr=\E[C:ks=\E=:ku=\E[A:le=^H:mb=\E[5m:\
+	:md=\E[1m:me=\E[0m:mr=\E[7m:nd=\E[C:rc=\E8:sc=\E7:\
+	:se=\E[27m:sf=^J:so=\E[7m:sr=\EM:st=\EH:ta=^I:\
+	:te=\E[2J\E[?47l\E8:ti=\E7\E[?47h:ue=\E[24m:up=\E[A:\
+	:us=\E[4m:vb=\E[?5h\E[?5l:ve=\E[?25h:vi=\E[?25l:
+# (sgr removed to fit entry within 1023 bytes)
+# (acsc removed to fit entry within 1023 bytes)
+# (terminfo-only capabilities suppressed to fit entry within 1023 bytes)
+rxvt-xpm|rxvt terminal emulator (X Window System):\
+	:am:bs:eo:mi:ms:xn:xo:\
+	:co#80:it#8:li#24:\
+	:AL=\E[%dL:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:K1=\EOw:K2=\EOu:\
+	:K3=\EOy:K4=\EOq:K5=\EOs:LE=\E[%dD:RI=\E[%dC:UP=\E[%dA:\
+	:ae=^O:al=\E[L:as=^N:bl=^G:cd=\E[J:ce=\E[K:cl=\E[H\E[2J:\
+	:cm=\E[%i%d;%dH:cr=^M:cs=\E[%i%d;%dr:ct=\E[3g:dl=\E[M:\
+	:do=^J:ei=\E[4l:ho=\E[H:i1=\E[?47l\E=\E[?1l:ic=\E[@:\
+	:im=\E[4h:is=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l:\
+	:k0=\E[21~:k1=\E[11~:k2=\E[12~:k3=\E[13~:k4=\E[14~:\
+	:k5=\E[15~:k6=\E[17~:k7=\E[18~:k8=\E[19~:k9=\E[20~:\
+	:kD=\E[3~:kI=\E[2~:kN=\E[6~:kP=\E[5~:kb=^H:kd=\E[B:ke=\E>:\
+	:kh=\E[7~:kl=\E[D:kr=\E[C:ks=\E=:ku=\E[A:le=^H:mb=\E[5m:\
+	:md=\E[1m:me=\E[0m:mr=\E[7m:nd=\E[C:rc=\E8:sc=\E7:\
+	:se=\E[27m:sf=^J:so=\E[7m:sr=\EM:st=\EH:ta=^I:\
+	:te=\E[2J\E[?47l\E8:ti=\E7\E[?47h:ue=\E[24m:up=\E[A:\
+	:us=\E[4m:vb=\E[?5h\E[?5l:ve=\E[?25h:vi=\E[?25l:
+# (sgr removed to fit entry within 1023 bytes)
+# (rmacs/smacs removed for consistency)
+# (acsc removed to fit entry within 1023 bytes)
+# (terminfo-only capabilities suppressed to fit entry within 1023 bytes)
+rxvt-cygwin|rxvt terminal emulator (X Window System) on cygwin:\
+	:am:bs:eo:mi:ms:xn:xo:\
+	:co#80:it#8:li#24:\
+	:AL=\E[%dL:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:K1=\EOw:K2=\EOu:\
+	:K3=\EOy:K4=\EOq:K5=\EOs:LE=\E[%dD:RI=\E[%dC:UP=\E[%dA:\
+	:al=\E[L:bl=^G:cd=\E[J:ce=\E[K:cl=\E[H\E[2J:\
+	:cm=\E[%i%d;%dH:cr=^M:cs=\E[%i%d;%dr:ct=\E[3g:dl=\E[M:\
+	:do=^J:ei=\E[4l:ho=\E[H:i1=\E[?47l\E=\E[?1l:ic=\E[@:\
+	:im=\E[4h:is=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l:\
+	:k0=\E[21~:k1=\E[11~:k2=\E[12~:k3=\E[13~:k4=\E[14~:\
+	:k5=\E[15~:k6=\E[17~:k7=\E[18~:k8=\E[19~:k9=\E[20~:\
+	:kD=\E[3~:kI=\E[2~:kN=\E[6~:kP=\E[5~:kb=^H:kd=\E[B:ke=\E>:\
+	:kh=\E[7~:kl=\E[D:kr=\E[C:ks=\E=:ku=\E[A:le=^H:mb=\E[5m:\
+	:md=\E[1m:me=\E[0m\017:mr=\E[7m:nd=\E[C:rc=\E8:sc=\E7:\
+	:se=\E[27m:sf=^J:so=\E[7m:sr=\EM:st=\EH:ta=^I:\
+	:te=\E[2J\E[?47l\E8:ti=\E7\E[?47h:ue=\E[24m:up=\E[A:\
+	:us=\E[4m:vb=\E[?5h\E[?5l:ve=\E[?25h:vi=\E[?25l:
+# (sgr removed to fit entry within 1023 bytes)
+# (rmacs/smacs removed for consistency)
+# (acsc removed to fit entry within 1023 bytes)
+# (terminfo-only capabilities suppressed to fit entry within 1023 bytes)
+rxvt-cygwin-native|rxvt terminal emulator (native MS Window System port) on cygwin:\
+	:am:bs:eo:mi:ms:xn:xo:\
+	:co#80:it#8:li#24:\
+	:AL=\E[%dL:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:K1=\EOw:K2=\EOu:\
+	:K3=\EOy:K4=\EOq:K5=\EOs:LE=\E[%dD:RI=\E[%dC:UP=\E[%dA:\
+	:al=\E[L:bl=^G:cd=\E[J:ce=\E[K:cl=\E[H\E[2J:\
+	:cm=\E[%i%d;%dH:cr=^M:cs=\E[%i%d;%dr:ct=\E[3g:dl=\E[M:\
+	:do=^J:ei=\E[4l:ho=\E[H:i1=\E[?47l\E=\E[?1l:ic=\E[@:\
+	:im=\E[4h:is=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l:\
+	:k0=\E[21~:k1=\E[11~:k2=\E[12~:k3=\E[13~:k4=\E[14~:\
+	:k5=\E[15~:k6=\E[17~:k7=\E[18~:k8=\E[19~:k9=\E[20~:\
+	:kD=\E[3~:kI=\E[2~:kN=\E[6~:kP=\E[5~:kb=^H:kd=\E[B:ke=\E>:\
+	:kh=\E[7~:kl=\E[D:kr=\E[C:ks=\E=:ku=\E[A:le=^H:mb=\E[5m:\
+	:md=\E[1m:me=\E[0m\017:mr=\E[7m:nd=\E[C:rc=\E8:sc=\E7:\
+	:se=\E[27m:sf=^J:so=\E[7m:sr=\EM:st=\EH:ta=^I:\
+	:te=\E[2J\E[?47l\E8:ti=\E7\E[?47h:ue=\E[24m:up=\E[A:\
+	:us=\E[4m:vb=\E[?5h\E[?5l:ve=\E[?25h:vi=\E[?25l:
+
+# Entries for use by the `screen' program by Juergen Weigert,
+# Michael Schroeder, Oliver Laumann.  The screen and
+# screen-w entries came with version 3.7.1.  The screen2 and screen3 entries
+# come from University of Wisconsin and may be older.
+# (screen: added :ve: on ANSI model -- esr)
+#
+# 'screen' defines extensions to termcap.  Some are used in its terminal
+# description:
+#      G0   (bool)  Terminal can deal with ISO 2022  font  selection sequences.
+#      AX   (bool)  Does  understand ANSI set default fg/bg color
+#                   (\E[39m / \E[49m).
+#      S0   (str)   Switch charset 'G0' to the specified charset.
+#      E0   (str)   Switch charset 'G0' back to standard charset.
+#
+# tested with screen 3.09.08
+screen|VT 100/ANSI X3.64 virtual terminal:\
+	:am:bs:km:mi:ms:pt:xn:\
+	:Co#8:NC#3:co#80:it#8:li#24:pa#64:\
+	:@7=\E[4~:AB=\E[4%dm:AF=\E[3%dm:AL=\E[%dL:DC=\E[%dP:\
+	:DL=\E[%dM:DO=\E[%dB:F1=\E[23~:F2=\E[24~:IC=\E[%d@:\
+	:Km=\E[M:LE=\E[%dD:RI=\E[%dC:UP=\E[%dA:\
+	:ac=++,,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~:\
+	:ae=^O:al=\E[L:as=^N:bl=^G:bt=\E[Z:cb=\E[1K:cd=\E[J:ce=\E[K:\
+	:cl=\E[H\E[J:cm=\E[%i%d;%dH:cr=^M:cs=\E[%i%d;%dr:\
+	:ct=\E[3g:dc=\E[P:dl=\E[M:do=^J:eA=\E(B\E)0:ei=\E[4l:\
+	:ho=\E[H:im=\E[4h:is=\E)0:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:\
+	:k5=\E[15~:k6=\E[17~:k7=\E[18~:k8=\E[19~:k9=\E[20~:\
+	:k;=\E[21~:kB=\E[Z:kD=\E[3~:kI=\E[2~:kN=\E[6~:kP=\E[5~:\
+	:kb=^H:kd=\EOB:ke=\E[?1l\E>:kh=\E[1~:kl=\EOD:kr=\EOC:\
+	:ks=\E[?1h\E=:ku=\EOA:le=^H:mb=\E[5m:md=\E[1m:me=\E[0m:\
+	:mr=\E[7m:nd=\E[C:nw=\EE:op=\E[39;49m:rc=\E8:\
+	:rs=\Ec\E[?1000l\E[?25h:sc=\E7:se=\E[23m:sf=^J:so=\E[3m:\
+	:sr=\EM:st=\EH:ta=^I:te=\E[?1049l:ti=\E[?1049h:ue=\E[24m:\
+	:up=\EM:us=\E[4m:vb=\Eg:ve=\E[34h\E[?25h:vi=\E[?25l:\
+	:vs=\E[34l:
+# The bce and status-line entries are from screen 3.9.13 (and require some
+# changes to .screenrc).
+# (sgr removed to fit entry within 1023 bytes)
+# (acsc removed to fit entry within 1023 bytes)
+screen-bce|VT 100/ANSI X3.64 virtual terminal with bce:\
+	:am:bs:km:mi:ms:pt:ut:xn:\
+	:Co#8:NC#3:co#80:it#8:li#24:pa#64:\
+	:@7=\E[4~:AB=\E[4%dm:AF=\E[3%dm:AL=\E[%dL:DC=\E[%dP:\
+	:DL=\E[%dM:DO=\E[%dB:F1=\E[23~:F2=\E[24~:IC=\E[%d@:\
+	:Km=\E[M:LE=\E[%dD:RI=\E[%dC:UP=\E[%dA:ae=^O:al=\E[L:as=^N:\
+	:bl=^G:bt=\E[Z:cb=\E[1K:cd=\E[J:ce=\E[K:cl=\E[H\E[J:\
+	:cm=\E[%i%d;%dH:cr=^M:cs=\E[%i%d;%dr:ct=\E[3g:dc=\E[P:\
+	:dl=\E[M:do=^J:eA=\E(B\E)0:ei=\E[4l:ho=\E[H:im=\E[4h:\
+	:is=\E)0:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:k5=\E[15~:\
+	:k6=\E[17~:k7=\E[18~:k8=\E[19~:k9=\E[20~:k;=\E[21~:\
+	:kB=\E[Z:kD=\E[3~:kI=\E[2~:kN=\E[6~:kP=\E[5~:kb=^H:kd=\EOB:\
+	:ke=\E[?1l\E>:kh=\E[1~:kl=\EOD:kr=\EOC:ks=\E[?1h\E=:\
+	:ku=\EOA:le=^H:mb=\E[5m:md=\E[1m:me=\E[0m:mr=\E[7m:nd=\E[C:\
+	:nw=\EE:op=\E[39;49m:rc=\E8:rs=\Ec\E[?1000l\E[?25h:\
+	:sc=\E7:se=\E[23m:sf=^J:so=\E[3m:sr=\EM:st=\EH:ta=^I:\
+	:te=\E[?1049l:ti=\E[?1049h:ue=\E[24m:up=\EM:us=\E[4m:\
+	:vb=\Eg:ve=\E[34h\E[?25h:vi=\E[?25l:vs=\E[34l:
+# (sgr removed to fit entry within 1023 bytes)
+# (acsc removed to fit entry within 1023 bytes)
+screen-s|VT 100/ANSI X3.64 virtual terminal with hardstatus line:\
+	:am:bs:km:mi:ms:pt:xn:\
+	:Co#8:NC#3:co#80:it#8:li#24:pa#64:\
+	:@7=\E[4~:AB=\E[4%dm:AF=\E[3%dm:AL=\E[%dL:DC=\E[%dP:\
+	:DL=\E[%dM:DO=\E[%dB:F1=\E[23~:F2=\E[24~:IC=\E[%d@:\
+	:Km=\E[M:LE=\E[%dD:RI=\E[%dC:UP=\E[%dA:ae=^O:al=\E[L:as=^N:\
+	:bl=^G:bt=\E[Z:cb=\E[1K:cd=\E[J:ce=\E[K:cl=\E[H\E[J:\
+	:cm=\E[%i%d;%dH:cr=^M:cs=\E[%i%d;%dr:ct=\E[3g:dc=\E[P:\
+	:dl=\E[M:do=^J:ds=\E_\E\\:eA=\E(B\E)0:ei=\E[4l:fs=\E\\:\
+	:ho=\E[H:im=\E[4h:is=\E)0:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:\
+	:k5=\E[15~:k6=\E[17~:k7=\E[18~:k8=\E[19~:k9=\E[20~:\
+	:k;=\E[21~:kB=\E[Z:kD=\E[3~:kI=\E[2~:kN=\E[6~:kP=\E[5~:\
+	:kb=^H:kd=\EOB:ke=\E[?1l\E>:kh=\E[1~:kl=\EOD:kr=\EOC:\
+	:ks=\E[?1h\E=:ku=\EOA:le=^H:mb=\E[5m:md=\E[1m:me=\E[0m:\
+	:mr=\E[7m:nd=\E[C:nw=\EE:op=\E[39;49m:rc=\E8:\
+	:rs=\Ec\E[?1000l\E[?25h:sc=\E7:se=\E[23m:sf=^J:so=\E[3m:\
+	:sr=\EM:st=\EH:ta=^I:te=\E[?1049l:ti=\E[?1049h:ts=\E_:\
+	:ue=\E[24m:up=\EM:us=\E[4m:vb=\Eg:ve=\E[34h\E[?25h:\
+	:vi=\E[?25l:vs=\E[34l:
+
+# ======================================================================
+# Entries for GNU Screen with 16 colors.
+# Those variations permit to benefit from 16 colors palette, and from
+# bold font and blink attribute separated from bright colors. But they
+# are less portable than the generic "screen" 8 color entries: Their
+# usage makes real sense only if the terminals you attach and reattach
+# do all support 16 color palette.
+
+screen-16color|GNU Screen with 16 colors:\
+	:am:bs:km:mi:ms:pt:xn:\
+	:Co#16:NC#3:co#80:it#8:li#24:pa#256:\
+	:@7=\E[4~:AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:\
+	:F1=\E[23~:F2=\E[24~:IC=\E[%d@:Km=\E[M:LE=\E[%dD:\
+	:RI=\E[%dC:UP=\E[%dA:\
+	:ac=++,,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~:\
+	:ae=^O:al=\E[L:as=^N:bl=^G:bt=\E[Z:cb=\E[1K:cd=\E[J:ce=\E[K:\
+	:cl=\E[H\E[J:cm=\E[%i%d;%dH:cr=^M:cs=\E[%i%d;%dr:\
+	:ct=\E[3g:dc=\E[P:dl=\E[M:do=^J:eA=\E(B\E)0:ei=\E[4l:\
+	:ho=\E[H:im=\E[4h:is=\E)0:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:\
+	:k5=\E[15~:k6=\E[17~:k7=\E[18~:k8=\E[19~:k9=\E[20~:\
+	:k;=\E[21~:kB=\E[Z:kD=\E[3~:kI=\E[2~:kN=\E[6~:kP=\E[5~:\
+	:kb=^H:kd=\EOB:ke=\E[?1l\E>:kh=\E[1~:kl=\EOD:kr=\EOC:\
+	:ks=\E[?1h\E=:ku=\EOA:le=^H:mb=\E[5m:md=\E[1m:me=\E[0m:\
+	:mr=\E[7m:nd=\E[C:nw=\EE:op=\E[39;49m:rc=\E8:\
+	:rs=\Ec\E[?1000l\E[?25h:sc=\E7:se=\E[23m:sf=^J:so=\E[3m:\
+	:sr=\EM:st=\EH:ta=^I:te=\E[?1049l:ti=\E[?1049h:ue=\E[24m:\
+	:up=\EM:us=\E[4m:vb=\Eg:ve=\E[34h\E[?25h:vi=\E[?25l:\
+	:vs=\E[34l:
+
+# (sgr removed to fit entry within 1023 bytes)
+# (acsc removed to fit entry within 1023 bytes)
+screen-16color-s|GNU Screen with 16 colors and status line:\
+	:am:bs:km:mi:ms:pt:xn:\
+	:Co#16:NC#3:co#80:it#8:li#24:pa#256:\
+	:@7=\E[4~:AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:\
+	:F1=\E[23~:F2=\E[24~:IC=\E[%d@:Km=\E[M:LE=\E[%dD:\
+	:RI=\E[%dC:UP=\E[%dA:ae=^O:al=\E[L:as=^N:bl=^G:bt=\E[Z:\
+	:cb=\E[1K:cd=\E[J:ce=\E[K:cl=\E[H\E[J:cm=\E[%i%d;%dH:\
+	:cr=^M:cs=\E[%i%d;%dr:ct=\E[3g:dc=\E[P:dl=\E[M:do=^J:\
+	:ds=\E_\E\\:eA=\E(B\E)0:ei=\E[4l:fs=\E\\:ho=\E[H:im=\E[4h:\
+	:is=\E)0:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:k5=\E[15~:\
+	:k6=\E[17~:k7=\E[18~:k8=\E[19~:k9=\E[20~:k;=\E[21~:\
+	:kB=\E[Z:kD=\E[3~:kI=\E[2~:kN=\E[6~:kP=\E[5~:kb=^H:kd=\EOB:\
+	:ke=\E[?1l\E>:kh=\E[1~:kl=\EOD:kr=\EOC:ks=\E[?1h\E=:\
+	:ku=\EOA:le=^H:mb=\E[5m:md=\E[1m:me=\E[0m:mr=\E[7m:nd=\E[C:\
+	:nw=\EE:op=\E[39;49m:rc=\E8:rs=\Ec\E[?1000l\E[?25h:\
+	:sc=\E7:se=\E[23m:sf=^J:so=\E[3m:sr=\EM:st=\EH:ta=^I:\
+	:te=\E[?1049l:ti=\E[?1049h:ts=\E_:ue=\E[24m:up=\EM:\
+	:us=\E[4m:vb=\Eg:ve=\E[34h\E[?25h:vi=\E[?25l:vs=\E[34l:
+
+screen-16color-bce|GNU Screen with 16 colors and BCE:\
+	:am:bs:km:mi:ms:pt:ut:xn:\
+	:Co#16:NC#3:co#80:it#8:li#24:pa#256:\
+	:@7=\E[4~:AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:\
+	:F1=\E[23~:F2=\E[24~:IC=\E[%d@:Km=\E[M:LE=\E[%dD:\
+	:RI=\E[%dC:UP=\E[%dA:\
+	:ac=++,,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~:\
+	:ae=^O:al=\E[L:as=^N:bl=^G:bt=\E[Z:cb=\E[1K:cd=\E[J:ce=\E[K:\
+	:cl=\E[H\E[J:cm=\E[%i%d;%dH:cr=^M:cs=\E[%i%d;%dr:\
+	:ct=\E[3g:dc=\E[P:dl=\E[M:do=^J:eA=\E(B\E)0:ei=\E[4l:\
+	:ho=\E[H:im=\E[4h:is=\E)0:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:\
+	:k5=\E[15~:k6=\E[17~:k7=\E[18~:k8=\E[19~:k9=\E[20~:\
+	:k;=\E[21~:kB=\E[Z:kD=\E[3~:kI=\E[2~:kN=\E[6~:kP=\E[5~:\
+	:kb=^H:kd=\EOB:ke=\E[?1l\E>:kh=\E[1~:kl=\EOD:kr=\EOC:\
+	:ks=\E[?1h\E=:ku=\EOA:le=^H:mb=\E[5m:md=\E[1m:me=\E[0m:\
+	:mr=\E[7m:nd=\E[C:nw=\EE:op=\E[39;49m:rc=\E8:\
+	:rs=\Ec\E[?1000l\E[?25h:sc=\E7:se=\E[23m:sf=^J:so=\E[3m:\
+	:sr=\EM:st=\EH:ta=^I:te=\E[?1049l:ti=\E[?1049h:ue=\E[24m:\
+	:up=\EM:us=\E[4m:vb=\Eg:ve=\E[34h\E[?25h:vi=\E[?25l:\
+	:vs=\E[34l:
+
+# (sgr removed to fit entry within 1023 bytes)
+# (acsc removed to fit entry within 1023 bytes)
+screen-16color-bce-s|GNU Screen with 16 colors, BCE, and status line:\
+	:am:bs:km:mi:ms:pt:ut:xn:\
+	:Co#16:NC#3:co#80:it#8:li#24:pa#256:\
+	:@7=\E[4~:AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:\
+	:F1=\E[23~:F2=\E[24~:IC=\E[%d@:Km=\E[M:LE=\E[%dD:\
+	:RI=\E[%dC:UP=\E[%dA:ae=^O:al=\E[L:as=^N:bl=^G:bt=\E[Z:\
+	:cb=\E[1K:cd=\E[J:ce=\E[K:cl=\E[H\E[J:cm=\E[%i%d;%dH:\
+	:cr=^M:cs=\E[%i%d;%dr:ct=\E[3g:dc=\E[P:dl=\E[M:do=^J:\
+	:ds=\E_\E\\:eA=\E(B\E)0:ei=\E[4l:fs=\E\\:ho=\E[H:im=\E[4h:\
+	:is=\E)0:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:k5=\E[15~:\
+	:k6=\E[17~:k7=\E[18~:k8=\E[19~:k9=\E[20~:k;=\E[21~:\
+	:kB=\E[Z:kD=\E[3~:kI=\E[2~:kN=\E[6~:kP=\E[5~:kb=^H:kd=\EOB:\
+	:ke=\E[?1l\E>:kh=\E[1~:kl=\EOD:kr=\EOC:ks=\E[?1h\E=:\
+	:ku=\EOA:le=^H:mb=\E[5m:md=\E[1m:me=\E[0m:mr=\E[7m:nd=\E[C:\
+	:nw=\EE:op=\E[39;49m:rc=\E8:rs=\Ec\E[?1000l\E[?25h:\
+	:sc=\E7:se=\E[23m:sf=^J:so=\E[3m:sr=\EM:st=\EH:ta=^I:\
+	:te=\E[?1049l:ti=\E[?1049h:ts=\E_:ue=\E[24m:up=\EM:\
+	:us=\E[4m:vb=\Eg:ve=\E[34h\E[?25h:vi=\E[?25l:vs=\E[34l:
+
+# ======================================================================
+# Entries for GNU Screen 4.02 with --enable-colors256.
+
+screen-256color|GNU Screen with 256 colors:\
+	:am:bs:cc@:km:mi:ms:pt:xn:\
+	:Co#256:NC#3:co#80:it#8:li#24:pa#32767:\
+	:@7=\E[4~:AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:\
+	:F1=\E[23~:F2=\E[24~:IC=\E[%d@:Ic@:Km=\E[M:LE=\E[%dD:\
+	:RI=\E[%dC:UP=\E[%dA:\
+	:ac=++,,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~:\
+	:ae=^O:al=\E[L:as=^N:bl=^G:bt=\E[Z:cb=\E[1K:cd=\E[J:ce=\E[K:\
+	:cl=\E[H\E[J:cm=\E[%i%d;%dH:cr=^M:cs=\E[%i%d;%dr:\
+	:ct=\E[3g:dc=\E[P:dl=\E[M:do=^J:eA=\E(B\E)0:ei=\E[4l:\
+	:ho=\E[H:im=\E[4h:is=\E)0:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:\
+	:k5=\E[15~:k6=\E[17~:k7=\E[18~:k8=\E[19~:k9=\E[20~:\
+	:k;=\E[21~:kB=\E[Z:kD=\E[3~:kI=\E[2~:kN=\E[6~:kP=\E[5~:\
+	:kb=^H:kd=\EOB:ke=\E[?1l\E>:kh=\E[1~:kl=\EOD:kr=\EOC:\
+	:ks=\E[?1h\E=:ku=\EOA:le=^H:mb=\E[5m:md=\E[1m:me=\E[0m:\
+	:mr=\E[7m:nd=\E[C:nw=\EE:op=\E[39;49m:rc=\E8:\
+	:rs=\Ec\E[?1000l\E[?25h:sc=\E7:se=\E[23m:sf=^J:so=\E[3m:\
+	:sr=\EM:st=\EH:ta=^I:te=\E[?1049l:ti=\E[?1049h:ue=\E[24m:\
+	:up=\EM:us=\E[4m:vb=\Eg:ve=\E[34h\E[?25h:vi=\E[?25l:\
+	:vs=\E[34l:
+
+# (sgr removed to fit entry within 1023 bytes)
+# (acsc removed to fit entry within 1023 bytes)
+screen-256color-s|GNU Screen with 256 colors and status line:\
+	:am:bs:cc@:km:mi:ms:pt:xn:\
+	:Co#256:NC#3:co#80:it#8:li#24:pa#32767:\
+	:@7=\E[4~:AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:\
+	:F1=\E[23~:F2=\E[24~:IC=\E[%d@:Ic@:Km=\E[M:LE=\E[%dD:\
+	:RI=\E[%dC:UP=\E[%dA:ae=^O:al=\E[L:as=^N:bl=^G:bt=\E[Z:\
+	:cb=\E[1K:cd=\E[J:ce=\E[K:cl=\E[H\E[J:cm=\E[%i%d;%dH:\
+	:cr=^M:cs=\E[%i%d;%dr:ct=\E[3g:dc=\E[P:dl=\E[M:do=^J:\
+	:ds=\E_\E\\:eA=\E(B\E)0:ei=\E[4l:fs=\E\\:ho=\E[H:im=\E[4h:\
+	:is=\E)0:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:k5=\E[15~:\
+	:k6=\E[17~:k7=\E[18~:k8=\E[19~:k9=\E[20~:k;=\E[21~:\
+	:kB=\E[Z:kD=\E[3~:kI=\E[2~:kN=\E[6~:kP=\E[5~:kb=^H:kd=\EOB:\
+	:ke=\E[?1l\E>:kh=\E[1~:kl=\EOD:kr=\EOC:ks=\E[?1h\E=:\
+	:ku=\EOA:le=^H:mb=\E[5m:md=\E[1m:me=\E[0m:mr=\E[7m:nd=\E[C:\
+	:nw=\EE:op=\E[39;49m:rc=\E8:rs=\Ec\E[?1000l\E[?25h:\
+	:sc=\E7:se=\E[23m:sf=^J:so=\E[3m:sr=\EM:st=\EH:ta=^I:\
+	:te=\E[?1049l:ti=\E[?1049h:ts=\E_:ue=\E[24m:up=\EM:\
+	:us=\E[4m:vb=\Eg:ve=\E[34h\E[?25h:vi=\E[?25l:vs=\E[34l:
+
+# (sgr removed to fit entry within 1023 bytes)
+# (acsc removed to fit entry within 1023 bytes)
+screen-256color-bce|GNU Screen with 256 colors and BCE:\
+	:am:bs:cc@:km:mi:ms:pt:ut:xn:\
+	:Co#256:NC#3:co#80:it#8:li#24:pa#32767:\
+	:@7=\E[4~:AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:\
+	:F1=\E[23~:F2=\E[24~:IC=\E[%d@:Ic@:Km=\E[M:LE=\E[%dD:\
+	:RI=\E[%dC:UP=\E[%dA:ae=^O:al=\E[L:as=^N:bl=^G:bt=\E[Z:\
+	:cb=\E[1K:cd=\E[J:ce=\E[K:cl=\E[H\E[J:cm=\E[%i%d;%dH:\
+	:cr=^M:cs=\E[%i%d;%dr:ct=\E[3g:dc=\E[P:dl=\E[M:do=^J:\
+	:eA=\E(B\E)0:ei=\E[4l:ho=\E[H:im=\E[4h:is=\E)0:k1=\EOP:\
+	:k2=\EOQ:k3=\EOR:k4=\EOS:k5=\E[15~:k6=\E[17~:k7=\E[18~:\
+	:k8=\E[19~:k9=\E[20~:k;=\E[21~:kB=\E[Z:kD=\E[3~:kI=\E[2~:\
+	:kN=\E[6~:kP=\E[5~:kb=^H:kd=\EOB:ke=\E[?1l\E>:kh=\E[1~:\
+	:kl=\EOD:kr=\EOC:ks=\E[?1h\E=:ku=\EOA:le=^H:mb=\E[5m:\
+	:md=\E[1m:me=\E[0m:mr=\E[7m:nd=\E[C:nw=\EE:op=\E[39;49m:\
+	:rc=\E8:rs=\Ec\E[?1000l\E[?25h:sc=\E7:se=\E[23m:sf=^J:\
+	:so=\E[3m:sr=\EM:st=\EH:ta=^I:te=\E[?1049l:ti=\E[?1049h:\
+	:ue=\E[24m:up=\EM:us=\E[4m:vb=\Eg:ve=\E[34h\E[?25h:\
+	:vi=\E[?25l:vs=\E[34l:
+
+# (sgr removed to fit entry within 1023 bytes)
+# (acsc removed to fit entry within 1023 bytes)
+screen-256color-bce-s|GNU Screen with 256 colors, BCE, and status line:\
+	:am:bs:cc@:km:mi:ms:pt:ut:xn:\
+	:Co#256:NC#3:co#80:it#8:li#24:pa#32767:\
+	:@7=\E[4~:AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:\
+	:F1=\E[23~:F2=\E[24~:IC=\E[%d@:Ic@:Km=\E[M:LE=\E[%dD:\
+	:RI=\E[%dC:UP=\E[%dA:ae=^O:al=\E[L:as=^N:bl=^G:bt=\E[Z:\
+	:cb=\E[1K:cd=\E[J:ce=\E[K:cl=\E[H\E[J:cm=\E[%i%d;%dH:\
+	:cr=^M:cs=\E[%i%d;%dr:ct=\E[3g:dc=\E[P:dl=\E[M:do=^J:\
+	:ds=\E_\E\\:eA=\E(B\E)0:ei=\E[4l:fs=\E\\:ho=\E[H:im=\E[4h:\
+	:is=\E)0:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:k5=\E[15~:\
+	:k6=\E[17~:k7=\E[18~:k8=\E[19~:k9=\E[20~:k;=\E[21~:\
+	:kB=\E[Z:kD=\E[3~:kI=\E[2~:kN=\E[6~:kP=\E[5~:kb=^H:kd=\EOB:\
+	:ke=\E[?1l\E>:kh=\E[1~:kl=\EOD:kr=\EOC:ks=\E[?1h\E=:\
+	:ku=\EOA:le=^H:mb=\E[5m:md=\E[1m:me=\E[0m:mr=\E[7m:nd=\E[C:\
+	:nw=\EE:op=\E[39;49m:rc=\E8:rs=\Ec\E[?1000l\E[?25h:\
+	:sc=\E7:se=\E[23m:sf=^J:so=\E[3m:sr=\EM:st=\EH:ta=^I:\
+	:te=\E[?1049l:ti=\E[?1049h:ts=\E_:ue=\E[24m:up=\EM:\
+	:us=\E[4m:vb=\Eg:ve=\E[34h\E[?25h:vi=\E[?25l:vs=\E[34l:
+
+# Use this for cygwin (tested with version 1.1.0).
+# I've combined pcansi and linux.  Some values of course were different and
+# I've indicated which of these were and which I used.
+# Cheers, earnie_boyd@yahoo.com
+# several changes based on running with tack and comparing with older entry -TD
+# more changes from csw:
+#   add    cbt   [backtab]
+#   remove eo    [erase overstrike with blank]
+#   change clear was \E[H\E[J  now \E[2J  (faster?)
+#   remove cols
+#   remove lines
+#   remove ncv#3 [colors collide with highlights, bitmask] not applicable
+#                to MSDOS box?
+#   add    cub   [cursor back param]
+#   add    cuf   [cursor forward param]
+#   add    cuu   [cursor up param]
+#   add    cud   [cursor down param]
+#   add    hs    [has status line]
+#   add    fsl   [return from status line]
+#   add    tsl   [go to status line]
+#   add    smacs [Start alt charset] (not sure if this works)
+#   add    rmacs [End alt charset]   (ditto)
+#   add    smcup [enter_ca_mode] (save console; thanks Corinna)
+#   add    rmcup [exit_ca_mode]  (restore console; thanks Corinna)
+#   add    kb2   [center of keypad]
+#   add    u8    [user string 8] \E[?6c
+#   add    el    [clear to end of line] \E[K
+# Notes:
+#   cnorm [make cursor normal] not implemented
+#   flash [flash] not implemented
+#   blink [blink] not implemented very usefully in cygwin? \E[5m
+#   dim   [dim] not implemented very usefully in cygwin? \E[2m
+#   cub1  [cursor back 1] typically \E[D, but ^H is faster?
+#   kNXT  [shifted next key] not implemented
+#   kPRV  [shifted prev key] not implemented
+#   khome [home key] really is \E[1~ NOT \E[H
+#   tbc   [clear tab stops] not implemented
+#   xenl  [newline ignnored after 80 cols] messes up last line? Ehud Karni
+#   smpch [Start PC charset] is \E[11m, same as smacs
+#   rmpch [End PC charset] is \E[10m, same as rmacs
+#   mir   [move in insert mode] fails in tack?
+#   bce   [back color erase] causes problems with change background color?
+#   cvvis [make cursor very visible] causes a stackdump when testing with
+#         testcurs using the output option? \E[?25h\E[?8c
+#   civis [make cursor invisible] causes everything to stackdump? \E[?25l\E[?1c
+#   ech   [erase characters param] broken \E[%p1%dX
+#   kcbt  [back-tab key] not implemented in cygwin?  \E[Z
+#
+# 2005/11/12 -TD
+#	Remove cbt since it does not work in current cygwin
+#	Add 'mir' and 'in' flags based on tack
+# (sgr removed to fit entry within 1023 bytes)
+# (rmacs/smacs removed for consistency)
+# (acsc removed to fit entry within 1023 bytes)
+cygwin|ansi emulation for Cygwin:\
+	:am:hs:mi:ms:xo:\
+	:Co#8:it#8:pa#64:\
+	:&7=^Z:@7=\E[4~:AB=\E[4%dm:AF=\E[3%dm:AL=\E[%dL:DC=\E[%dP:\
+	:DL=\E[%dM:DO=\E[%dB:F1=\E[23~:F2=\E[24~:F3=\E[25~:\
+	:F4=\E[26~:F5=\E[28~:F6=\E[29~:F7=\E[31~:F8=\E[32~:\
+	:F9=\E[33~:FA=\E[34~:IC=\E[%d@:K2=\E[G:LE=\E[%dD:\
+	:RI=\E[%dC:S2=\E[11m:S3=\E[10m:UP=\E[%dA:al=\E[L:bl=^G:\
+	:cb=\E[1K:cd=\E[J:ce=\E[K:ch=\E[%i%dG:cl=\E[H\E[J:\
+	:cm=\E[%i%d;%dH:cr=^M:cv=\E[%i%dd:dc=\E[P:dl=\E[M:do=\E[B:\
+	:ei=\E[4l:fs=^G:ho=\E[H:ic=\E[@:im=\E[4h:k1=\E[[A:k2=\E[[B:\
+	:k3=\E[[C:k4=\E[[D:k5=\E[[E:k6=\E[17~:k7=\E[18~:k8=\E[19~:\
+	:k9=\E[20~:k;=\E[21~:kD=\E[3~:kI=\E[2~:kN=\E[6~:kP=\E[5~:\
+	:kb=^H:kd=\E[B:kh=\E[1~:kl=\E[D:kr=\E[C:ku=\E[A:le=^H:\
+	:md=\E[1m:me=\E[0m:mk=\E[8m:mr=\E[7m:nd=\E[C:nw=^M^J:\
+	:op=\E[39;49m:r1=\Ec\E]R:rc=\E8:sc=\E7:se=\E[27m:sf=^J:\
+	:so=\E[7m:sr=\EM:ta=^I:te=\E[2J\E[?47l\E8:ti=\E7\E[?47h:\
+	:ts=\E];:u6=\E[%i%d;%dR:u7=\E[6n:u8=\E[?6c:u9=\E[c:\
+	:ue=\E[24m:up=\E[A:us=\E[4m:
+ibm+16color|IBM aixterm color definitions:\
+	:Co#16:pa#256:
+msys:\
+	:tc=cygwin:
+
Index: Daodan/MinGW/msys/1.0/msys.bat
===================================================================
--- Daodan/MinGW/msys/1.0/msys.bat	(revision 1046)
+++ Daodan/MinGW/msys/1.0/msys.bat	(revision 1046)
@@ -0,0 +1,200 @@
+@echo off
+rem Copyright (C):  2001, 2002, 2003, 2004, 2005  Earnie Boyd
+rem   mailto:earnie@users.sf.net
+rem This file is part of Minimal SYStem
+rem   http://www.mingw.org/msys.shtml
+rem
+rem File:	    msys.bat
+rem Revision:	    2.4
+rem Revision Date:  December 8th, 2005
+
+rem ember to set the "Start in:" field of the shortcut.
+rem A value similar to C:\msys\1.0\bin is what the "Start in:" field needs
+rem to represent.
+
+rem ember value of GOTO: is used to know recursion has happened.
+if "%1" == "GOTO:" goto %2
+
+if NOT "x%WD%" == "x" set WD=
+
+rem ember command.com only uses the first eight characters of the label.
+goto _WindowsNT
+
+rem ember that we only execute here if we are in command.com.
+:_Windows
+
+if "x%COMSPEC%" == "x" set COMSPEC=command.com
+start /min %COMSPEC% /e:4096 /c %0 GOTO: _Resume %0 %1 %2 %3 %4 %5 %6 %7 %8 %9
+goto EOF
+
+rem ember that we execute here if we recursed.
+:_Resume
+for %%F in (1 2 3) do shift
+if NOT EXIST %WD%msys-1.0.dll set WD=.\bin\
+
+rem ember that we get here even in command.com.
+:_WindowsNT
+
+rem Hopefully a temporary workaround for getting MSYS shell to run on x64
+rem (WoW64 cmd prompt sets PROCESSOR_ARCHITECTURE to x86)
+if not "x%PROCESSOR_ARCHITECTURE%" == "xAMD64" goto _NotX64
+set COMSPEC=%WINDIR%\SysWOW64\cmd.exe
+%COMSPEC% /c %0 %1 %2 %3 %4 %5 %6 %7 %8 %9
+goto EOF
+:_NotX64
+
+if NOT EXIST %WD%msys-1.0.dll set WD=%~dp0\bin\
+
+rem ember Set up option to use rxvt based on value of %1
+set MSYSCON=unknown
+if "x%1" == "x-norxvt" set MSYSCON=sh.exe
+if "x%1" == "x--norxvt" set MSYSCON=sh.exe
+if "x%1" == "x-rxvt" set MSYSCON=rxvt.exe
+if "x%1" == "x--rxvt" set MSYSCON=rxvt.exe
+if "x%1" == "x-mintty" set MSYSCON=mintty.exe
+if "x%1" == "x--mintty" set MSYSCON=mintty.exe
+if NOT "x%MSYSCON%" == "xunknown" shift
+
+if "x%MSYSCON%" == "xunknown" set MSYSCON=sh.exe
+
+if "x%MSYSTEM%" == "x" set MSYSTEM=MINGW32
+if "%1" == "MINGW32" set MSYSTEM=MINGW32
+if "%1" == "MSYS" set MSYSTEM=MSYS
+
+if NOT "x%DISPLAY%" == "x" set DISPLAY=
+
+if "x%MSYSCON%" == "xmintty.exe" goto startmintty
+if "x%MSYSCON%" == "xrxvt.exe" goto startrxvt
+if "x%MSYSCON%" == "xsh.exe" goto startsh
+
+:unknowncon
+echo %MSYSCON% is an unknown option for msys.bat.
+pause
+exit 1
+
+:notfound
+echo Cannot find the rxvt.exe or sh.exe binary -- aborting.
+pause
+exit 1
+
+:startmintty
+if NOT EXIST %WD%mintty.exe goto startsh
+start %WD%mintty /bin/bash -l
+exit
+
+:startrxvt
+if NOT EXIST %WD%rxvt.exe goto startsh
+
+rem Setup the default colors for rxvt.
+if "x%MSYSBGCOLOR%" == "x" set MSYSBGCOLOR=White
+if "x%MSYSFGCOLOR%" == "x" set MSYSFGCOLOR=Black
+if "x%MINGW32BGCOLOR%" == "x" set MINGW32BGCOLOR=LightYellow
+if "x%MINGW32FGCOLOR%" == "x" set MINGW32FGCOLOR=Navy
+if "%MSYSTEM%" == "MSYS" set BGCOLOR=%MSYSBGCOLOR%
+if "%MSYSTEM%" == "MSYS" set FGCOLOR=%MSYSFGCOLOR%
+if "%MSYSTEM%" == "MINGW32" set BGCOLOR=%MINGW32BGCOLOR%
+if "%MSYSTEM%" == "MINGW32" set FGCOLOR=%MINGW32FGCOLOR%
+
+start %WD%rxvt -backspacekey  -sl 2500 -fg %FGCOLOR% -bg %BGCOLOR% -sr -fn Courier-12 -tn msys -geometry 80x25 -e /bin/sh --login -i
+exit
+
+:startsh
+if NOT EXIST %WD%sh.exe goto notfound
+start %WD%sh --login -i
+exit
+
+:EOF
+
+rem ChangeLog:
+rem 2002.03.07  Earnie Boyd  mailto:earnie@users.sf.net
+rem	* Move the @echo off to the top.
+rem	* Change the binmode setting to nobinmode.
+rem     * Remove the angle brackets around email address to workaround MS 
+rem	buggy command processor.
+rem
+rem 2002.03.12  Earnie Boyd  mailto:earnie@users.sf.net
+rem	* Add filter logic to find rxvt.exe
+rem
+rem 2002.03.13  Earnie Boyd  mailto:earnie@users.sf.net
+rem	* Revert the nobinmode change.
+rem
+rem 2002.03.20  Earnie Boyd  mailto:earnie@users.sf.net
+rem     * Add logic for stating bash.
+rem
+rem 2002.04.11  Earnie Boyd  mailto;earnie@users.sf.net
+rem	* Add logic for setting MSYSTEM value based on parameter.
+rem
+rem 2002.04.15  Olivier Gautherot  mailto:olivier_gautherot@mentorg.com
+rem	* Reduce number test conditions for finding an executable.
+rem
+rem 2002.04.15  Earnie Boyd  mailto:earnie@users.sf.net
+rem	* Unset DISPLAY if set before starting shell.
+rem
+rem 2002.04.16  Earnie Boyd  mailto:earnie@users.sf.net
+rem	* Remove use of DEFINED in conditional statments for variables for
+rem	command.com support.
+rem	* Add check for nonexistance of USERNAME variable for Win9x support.
+rem
+rem 2002.04.17  Earnie Boyd  mailto:earnie@users.sf.net
+rem	* Add foreground and background color defaults based on MSYSTEM value.
+rem
+rem 2002.04.22  Earnie Boyd  mailto:earnie@users.sf.net
+rem	* More Win 9x changes.
+rem
+rem 2002.05.04  Earnie Boyd  mailto:earnie@users.sf.net
+rem	* Remove the SET of USERNAME and HOME.
+rem
+rem 2002.11.18  Earnie Boyd  mailto:earnie@users.sf.net
+rem	* Add command.com detection and restart with a larger environment to
+rem	avoid errors on w9x.
+rem     Many thanks to Randy W. Sims mailto:RandyS@ThePierianSpring.org.
+rem	See Randy's response to "RE: [Mingw-msys] Installation on WindowsME" 
+rem	from 11/06/2002 in the archives of mingw-msys@lists.sf.net.
+rem
+rem 2002.11.19  Paul Garceau  mailto:pgarceau@attbi.com
+rem	* Fix a typo: Change COMPSPEC to COMSPEC.
+rem
+rem 2002.11.25  Earnie Boyd  mailto:earnie@users.sf.net
+rem	* Remove the SET CYGWIN since it doesn't matter any longer.
+rem
+rem 2003.02.03  Earnie Boyd  mailto:earnie@users.sf.net
+rem	* Win9x doesn't like ``EXISTS dir'' so change it to ``EXISTS dir\nul''.
+rem	Thanks to Nicolas Weber mailto:nicolasweber@gmx.de.
+rem
+rem 2003.03.06  Earnie Boyd  mailto:earnie@users.sf.net
+rem	* Add -backspacekey switch to rxvt startup.
+rem	* Move RXVT color setup to startrxvt label
+rem
+rem 2004.01.30  Earnie Boyd  mailto:earnie@users.sf.net
+rem	* Add -geometry parameter to work around an off by one issue with
+rem       the default values.
+rem	Thanks to Dave Schuyler mailto:parameter@users.sf.net
+rem
+rem 2004.03.28  Earnie Boyd  mailto:earnie@users.sf.net
+rem	* Add -norxvt or --norxvt switch argument.
+rem	Thanks to Keith Marshall mailto:Keith.Marshall@total.com.
+rem	* Add method to determine absolute path of msys.bat so that we no
+rem	longer need to change to the bin directory.  This allows msys.bat to be
+rem	called from any working directory.
+rem	Thanks to Kevin Mack  mailto:kevin.mack@us.cd-adapco.com
+rem
+rem 2005.07.06  Max TE Woodbury  mailto:mtew@users.sf.net
+rem     * Fixed WD check for command.com systems.
+rem     * Minimized intermediate CMD window to reduce startup flashyness.
+rem     * If rxvt.exe cannot be found, try sh.exe.
+rem
+rem 2005.12.06  Tuomo Latto  mailto:nonperson@users.sf.net
+rem     * Added a temporary workaround for getting MSYS shell to run on x64.
+rem
+rem 2005.12.07  Keith Marshall  mailto:keithmarshall@users.sf.net
+rem     * ``EXISTS %WD%\sh.exe'' should be ``EXISTS %WD%sh.exe''; corrected.
+rem     * Modified Tuomo's patch, to avoid trashing Window settings in Win32.
+rem
+rem 2005.12.08  Tuomo Latto  mailto:nonperson@users.sf.net
+rem     * Keith's modified patch fails on x64; start did funny things.
+rem     Reworked, for correct behaviour on both platforms.
+rem
+rem 2009.03.17  Keith Marshall  mailto:keithmarshall@users.sf.net
+rem     * Add -rxvt or --rxvt switch; start in --norxvt mode by default.
+rem     Make it deterministic; (do not inherit MSYSCON from parent).
+rem
Index: Daodan/MinGW/msys/1.0/postinstall/fstab.lua
===================================================================
--- Daodan/MinGW/msys/1.0/postinstall/fstab.lua	(revision 1046)
+++ Daodan/MinGW/msys/1.0/postinstall/fstab.lua	(revision 1046)
@@ -0,0 +1,373 @@
+--
+-- fstab.lua
+--
+-- $Id$
+--
+-- Lua 5.2 module providing a mingw-get setup hook for the MSYS fstab.
+--
+-- Written by Keith Marshall <keithmarshall@users.sourceforge.net>
+-- Copyright (C) 2014, 2015, MinGW.org Project
+--
+--
+-- Permission is hereby granted, free of charge, to any person obtaining a
+-- copy of this software and associated documentation files (the "Software"),
+-- to deal in the Software without restriction, including without limitation
+-- the rights to use, copy, modify, merge, publish, distribute, sublicense,
+-- and/or sell copies of the Software, and to permit persons to whom the
+-- Software is furnished to do so, subject to the following conditions:
+--
+-- The above copyright notice and this permission notice shall be included
+-- in all copies or substantial portions of the Software.
+--
+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+-- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+-- THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+-- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+-- FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+-- DEALINGS IN THE SOFTWARE.
+--
+--
+-- We begin by initializing a container, for construction of a Lua module
+-- to encapsulate the content of this source file.
+--
+   local M = {}
+--
+-- mingw-get passes the MSYS installation root directory path,
+-- in the $MSYS_SYSROOT environment variable; from this, we deduce
+-- the path name for the working copy of the fstab file...
+--
+   local function syspath( varname )
+--
+--   ...using this local helper function to ensure that the path name
+--   string, returned from the environment, is free from insignificant
+--   trailing directory name separators, and that all internal sequences
+--   of directory name separators are normalized to a single '/'.
+--
+     local pathname = string.gsub( os.getenv( varname ), "[/\\]+", "/" )
+     return string.match( pathname, "(.*[^/])/*$" )
+   end
+   local sysroot = syspath( "MSYS_SYSROOT" )
+   local mingw32_sysroot = syspath( "MINGW32_SYSROOT" )
+   local fstab_file_name = sysroot .. "/etc/fstab"
+--
+-- The following may be adjusted, to control the layout of the mount
+-- point mapping records, within the fstab file.
+--
+   local path_name_field_width, tab_width = 40, 8
+--
+-- Define a template, from which a sample fstab file for the current
+-- MSYS installation may be generated, on invocation of this module's
+-- "dump_sample" method...
+--
+   local fstab_sample =
+   { '# /etc/fstab.sample -- sample mount table configuration for MSYS.',
+     '',
+     '# Lines with a "#" in column one are interpreted as comment lines;',
+     '# with the exception of comments described as "magic", neither these',
+     '# lines, nor any blank lines, are interpreted as configuration.',
+     '',
+     '# Comment lines which are described as "magic" should neither be',
+     '# deleted, nor edited manually; ignoring this advice may cause your',
+     '# MSYS installation to malfunction.',
+     '',
+     '# When running MSYS from a portable device, such as a USB thumb drive,',
+     '# the following "magic" comment is used to track changes in host drive',
+     '# letter assignment, so allowing MSYS-Portable start-up hooks to remap',
+     '# mount table entries which refer to the relocated device:',
+     '#',
+     '# MSYSROOT=D:/PortableApps/MSYS/1.0',
+     '',
+     '# The mount table configuration follows below.  The line format is',
+     '# simple: you specify the Win32 path, followed by one or more space or',
+     '# tab delimiters, followed by the mount point name.  In a typical UNIX',
+     '# installation, each mount point must exist as a named directory on a',
+     '# physically accessible device, before it can actually be used as a',
+     '# mount point.  For this implementation the "must exist" requirement',
+     '# is not enforced; however, it will assist programs such as find, and',
+     "# readline's tab completion if each does physically exist.",
+     '',
+     '# Win32_Path				Mount_Point',
+     '#-------------------------------------	-----------',
+     'c:/mingw					/mingw'
+   }
+--
+-- ...and a further template for a working configuration.
+--
+   local fstab_basic =
+   { '# /etc/fstab -- mount table configuration for MSYS.',
+     '# Please refer to /etc/fstab.sample for explanatory annotation.',
+     '',
+     '# MSYS-Portable needs this "magic" comment:',
+     '# MSYSROOT=D:/PortableApps/MSYS/1.0',
+     '',
+     '# Win32_Path				Mount_Point',
+     '#-------------------------------------	-----------',
+     'c:/mingw					/mingw'
+   }
+--
+-- Define Lua regular expressions which may be used to identify
+-- comment lines within the fstab file; (the first will match any
+-- comment, while the second is specific to the "magic" comment,
+-- as used by MSYS-Portable, to track changes in the allocation
+-- of the drive identifier for the host device).
+--
+   local fstab_comment_line = "^#"
+   local fstab_device_magic = "^(#%s*MSYSROOT=)(%S*)"
+--
+   local function map_root_device( assignment )
+--
+--   A function to update the "magic" comment, which records the
+--   allocation of the MSYS-Portable host device.
+--
+     return string.gsub( assignment, fstab_device_magic, "%1" .. sysroot )
+   end
+--
+-- Define a Lua regular expression which may be used to verify
+-- that any fstab file record represents a well formed mount point
+-- specification; it also incorporates capture fields, which may
+-- be used to extract each of the path name and mount point
+-- identification fields from the specification.
+--
+   local fstab_mount_specification = "^%s*(%S+)%s+(%S+)%s*$"
+--
+   local function is_mount_specification( line )
+--
+--   A function to verify any fstab file record against the
+--   preceding regular expression, to confirm whether it does
+--   represent a well formed mount point specification.
+--
+     return string.match( line, fstab_mount_specification )
+   end
+--
+   local function get_mapped_path( specification )
+--
+--   A function to extract the associated path name field from
+--   any well formed mount point specification record.
+--
+     return string.gsub( specification, fstab_mount_specification, "%1" )
+   end
+--
+   local function get_mount_point( specification )
+--
+--   A function to extract the mount point identification field
+--   from any well formed mount point specification record.
+--
+     return string.gsub( specification, fstab_mount_specification, "%2" )
+   end
+--
+-- In the event that a mount table configuration has already been
+-- specified for this installation, capture this into an internal
+-- "as built" configuration table...
+--
+   local fstab_as_built = {}
+   local fstab = io.open( fstab_file_name )
+   if fstab
+   then
+--
+--   ...reading the existing configuration file, line by line...
+--
+     for line in fstab:lines()
+     do
+--
+--     ...identifying comment lines...
+--
+       if string.match( line, fstab_comment_line )
+       then
+--
+--       ...and ignoring all such, except any "device magic" line...
+--
+	 if string.match( line, fstab_device_magic )
+	 then
+--
+--         ...from which we retrieve, and subsequently update, the
+--         configuration-specific "sysroot" identification.
+--
+	   sysroot = string.gsub( line, fstab_device_magic, "%2" )
+	 end
+--
+--     Also identify mount point specification lines...
+--
+       elseif is_mount_specification( line )
+       then
+	 if string.match( get_mount_point( line ), "^/mingw$" )
+	 then
+--
+--	   ...and preserve the user's pre-configured path assignment
+--	   for the "/mingw" mount point, if any.
+--
+	   mingw32_sysroot = get_mapped_path( line )
+--
+	 else
+--
+--	   ...while, for all EXCEPT the "/mingw" mount point,
+--	   simply record the configuration.
+--
+	   table.insert( fstab_as_built, line )
+	 end
+       end
+     end
+   end
+--
+--
+   local function fstab_write_configuration( fstab, template, current )
+--
+--   A function to write an fstab configuration to a designated output
+--   stream, based on a specified template, reproducing and encapsulating
+--   any existing configuration which may also have been specified...
+--
+     local function fstab_writeln( line )
+--
+--     ...using this helper function to write line by line.
+--
+       fstab:write( line .. "\n" )
+     end
+--
+     local function assign_mount_point( mapped_path, mount_point )
+--
+--     This helper function formats each mount point specification
+--     into a neatly tabulated layout...
+--
+       local filled = string.len( mapped_path )
+       repeat
+	 mapped_path, filled = mapped_path .. "\t", filled + tab_width
+       until filled >= path_name_field_width
+--
+--     ...to be written out, with one line per mount point.
+--
+       fstab_writeln( mapped_path .. mount_point )
+     end
+--
+--   Process the template, line by line...
+--
+     for ref, line in next, template
+     do
+--     ...and for each comment, or blank line encountered...
+--
+       if string.match( line, "^#" ) or string.match( line, "^%s*$" )
+       then
+--	 ...simply reproduce it in the output stream, while taking
+--	 care to update any "device magic" which it may incorporate,
+--	 so that it fits the configuration of this installation.
+--
+	 fstab_writeln( map_root_device( line ) )
+--
+--     When we encounter a mount point specification line -- for
+--     which each of the embedded templates should include exactly
+--     one example...
+--
+       elseif is_mount_specification( line )
+       then
+--	 ...write out the specification for the "/mingw" mount
+--	 point, as appropriate for this installation.
+--
+	 assign_mount_point( mingw32_sysroot, "/mingw" )
+       end
+     end
+--
+--   And finally...
+--
+     if current
+     then
+--     ...when inclusion of the current mount configuration has been
+--     specified, we process each configuration record in turn...
+--
+       for ref, line in next, current
+       do
+--	 ...and write out its corresponding mount point specification,
+--	 (noting that we have already excluded the "/mingw" mount point
+--	 from the recorded configuration, but we have already written a
+--	 specification record for it).
+--
+	 assign_mount_point( get_mapped_path( line ), get_mount_point( line ) )
+       end
+     end
+   end
+--
+--
+   function M.pathname( suffix )
+--
+--   An exported utility function, to facilitate identification of
+--   the full MS-Windows path name for the "/etc/fstab" configuration
+--   file, as appropriate to the current installation...
+--
+     if suffix
+     then
+--     ...appending any suffix which may have been specified, (e.g.
+--     to specify a reference to the "/etc/fstab.sample" file)...
+--
+       return fstab_file_name .. suffix
+     end
+--
+--   ...otherwise, specifying a reference to "/etc/fstab" itself.
+--
+     return fstab_file_name
+   end
+--
+--
+   function M.dump_sample( stream_file )
+--
+--   An exported utility function, providing a method for displaying,
+--   or otherwise emitting suitable content for the "/etc/fstab.sample"
+--   file, as directed by the embedded "fstab_sample" template...
+--
+     if not stream_file
+     then
+--     ...writing to "stdout", in the event that no other destination
+--     has been specified.
+--
+       stream_file = io.stdout
+     end
+--
+--   Regardless of output destination, we delegate output to this local
+--   function, processing the integral sample file template, but we omit
+--   the current mount table configuration.
+--
+     fstab_write_configuration( stream_file, fstab_sample )
+   end
+--
+--
+   function M.initialize( stream_file )
+--
+--   The primary initialization function, exported for use by mingw-get,
+--   to write a working mount table configuration to the specified file
+--   stream, which, unless otherwise specified...
+--
+     local default_stream_file = nil
+     if not stream_file
+     then
+--     ...is to be directed to the default "/etc/fstab" file.
+--
+       default_stream_file = io.open( fstab_file_name, "w" )
+       stream_file = default_stream_file
+     end
+--
+--   Once again, regardless of how the output file has been identified,
+--   provided the stream has been successfully assigned...
+--
+     if stream_file
+     then
+--     ...we delegate the actual output function to the local helper,
+--     this time, processing the integral working file template, and we
+--     include the record of the current mount table configuration.
+--
+       fstab_write_configuration( stream_file, fstab_basic, fstab_as_built )
+     end
+--
+--   Finally, when updating the default "/etc/fstab" configuration,
+--   via a locally opened output file stream...
+--
+     if default_stream_file
+     then
+--     ...we must now ensure that this output stream is closed.
+--
+       io.close( default_stream_file )
+     end
+   end
+--
+-- Since this source file is intended to be loaded as a Lua module, we
+-- must ultimately return a reference handle for it.
+--
+   return M
+--
+-- $RCSfile$: end of file */
Index: Daodan/MinGW/msys/1.0/share/awk/assert.awk
===================================================================
--- Daodan/MinGW/msys/1.0/share/awk/assert.awk	(revision 1046)
+++ Daodan/MinGW/msys/1.0/share/awk/assert.awk	(revision 1046)
@@ -0,0 +1,20 @@
+# assert --- assert that a condition is true. Otherwise exit.
+
+#
+# Arnold Robbins, arnold@skeeve.com, Public Domain
+# May, 1993
+
+function assert(condition, string)
+{
+    if (! condition) {
+        printf("%s:%d: assertion failed: %s\n",
+            FILENAME, FNR, string) > "/dev/stderr"
+        _assert_exit = 1
+        exit 1
+    }
+}
+
+END {
+    if (_assert_exit)
+        exit 1
+}
Index: Daodan/MinGW/msys/1.0/share/awk/bits2str.awk
===================================================================
--- Daodan/MinGW/msys/1.0/share/awk/bits2str.awk	(revision 1046)
+++ Daodan/MinGW/msys/1.0/share/awk/bits2str.awk	(revision 1046)
@@ -0,0 +1,16 @@
+# bits2str --- turn a byte into readable 1's and 0's
+
+function bits2str(bits,        data, mask)
+{
+    if (bits == 0)
+        return "0"
+
+    mask = 1
+    for (; bits != 0; bits = rshift(bits, 1))
+        data = (and(bits, mask) ? "1" : "0") data
+
+    while ((length(data) % 8) != 0)
+        data = "0" data
+
+    return data
+}
Index: Daodan/MinGW/msys/1.0/share/awk/cliff_rand.awk
===================================================================
--- Daodan/MinGW/msys/1.0/share/awk/cliff_rand.awk	(revision 1046)
+++ Daodan/MinGW/msys/1.0/share/awk/cliff_rand.awk	(revision 1046)
@@ -0,0 +1,14 @@
+# cliff_rand.awk --- generate Cliff random numbers
+#
+# Arnold Robbins, arnold@skeeve.com, Public Domain
+# December 2000
+
+BEGIN { _cliff_seed = 0.1 }
+
+function cliff_rand()
+{
+    _cliff_seed = (100 * log(_cliff_seed)) % 1
+    if (_cliff_seed < 0)
+        _cliff_seed = - _cliff_seed
+    return _cliff_seed
+}
Index: Daodan/MinGW/msys/1.0/share/awk/ctime.awk
===================================================================
--- Daodan/MinGW/msys/1.0/share/awk/ctime.awk	(revision 1046)
+++ Daodan/MinGW/msys/1.0/share/awk/ctime.awk	(revision 1046)
@@ -0,0 +1,11 @@
+# ctime.awk
+#
+# awk version of C ctime(3) function
+
+function ctime(ts,    format)
+{
+    format = "%a %b %d %H:%M:%S %Z %Y"
+    if (ts == 0)
+        ts = systime()       # use current time as default
+    return strftime(format, ts)
+}
Index: Daodan/MinGW/msys/1.0/share/awk/ftrans.awk
===================================================================
--- Daodan/MinGW/msys/1.0/share/awk/ftrans.awk	(revision 1046)
+++ Daodan/MinGW/msys/1.0/share/awk/ftrans.awk	(revision 1046)
@@ -0,0 +1,15 @@
+# ftrans.awk --- handle data file transitions
+#
+# user supplies beginfile() and endfile() functions
+#
+# Arnold Robbins, arnold@skeeve.com, Public Domain
+# November 1992
+
+FNR == 1 {
+    if (_filename_ != "")
+        endfile(_filename_)
+    _filename_ = FILENAME
+    beginfile(FILENAME)
+}
+
+END  { endfile(_filename_) }
Index: Daodan/MinGW/msys/1.0/share/awk/getopt.awk
===================================================================
--- Daodan/MinGW/msys/1.0/share/awk/getopt.awk	(revision 1046)
+++ Daodan/MinGW/msys/1.0/share/awk/getopt.awk	(revision 1046)
@@ -0,0 +1,80 @@
+# getopt.awk --- do C library getopt(3) function in awk
+#
+# Arnold Robbins, arnold@skeeve.com, Public Domain
+#
+# Initial version: March, 1991
+# Revised: May, 1993
+
+# External variables:
+#    Optind -- index in ARGV of first nonoption argument
+#    Optarg -- string value of argument to current option
+#    Opterr -- if nonzero, print our own diagnostic
+#    Optopt -- current option letter
+
+# Returns:
+#    -1     at end of options
+#    ?      for unrecognized option
+#    <c>    a character representing the current option
+
+# Private Data:
+#    _opti  -- index in multi-flag option, e.g., -abc
+function getopt(argc, argv, options,    thisopt, i)
+{
+    if (length(options) == 0)    # no options given
+        return -1
+
+    if (argv[Optind] == "--") {  # all done
+        Optind++
+        _opti = 0
+        return -1
+    } else if (argv[Optind] !~ /^-[^: \t\n\f\r\v\b]/) {
+        _opti = 0
+        return -1
+    }
+    if (_opti == 0)
+        _opti = 2
+    thisopt = substr(argv[Optind], _opti, 1)
+    Optopt = thisopt
+    i = index(options, thisopt)
+    if (i == 0) {
+        if (Opterr)
+            printf("%c -- invalid option\n",
+                                  thisopt) > "/dev/stderr"
+        if (_opti >= length(argv[Optind])) {
+            Optind++
+            _opti = 0
+        } else
+            _opti++
+        return "?"
+    }
+    if (substr(options, i + 1, 1) == ":") {
+        # get option argument
+        if (length(substr(argv[Optind], _opti + 1)) > 0)
+            Optarg = substr(argv[Optind], _opti + 1)
+        else
+            Optarg = argv[++Optind]
+        _opti = 0
+    } else
+        Optarg = ""
+    if (_opti == 0 || _opti >= length(argv[Optind])) {
+        Optind++
+        _opti = 0
+    } else
+        _opti++
+    return thisopt
+}
+BEGIN {
+    Opterr = 1    # default is to diagnose
+    Optind = 1    # skip ARGV[0]
+
+    # test program
+    if (_getopt_test) {
+        while ((_go_c = getopt(ARGC, ARGV, "ab:cd")) != -1)
+            printf("c = <%c>, optarg = <%s>\n",
+                                       _go_c, Optarg)
+        printf("non-option arguments:\n")
+        for (; Optind < ARGC; Optind++)
+            printf("\tARGV[%d] = <%s>\n",
+                                    Optind, ARGV[Optind])
+    }
+}
Index: Daodan/MinGW/msys/1.0/share/awk/gettime.awk
===================================================================
--- Daodan/MinGW/msys/1.0/share/awk/gettime.awk	(revision 1046)
+++ Daodan/MinGW/msys/1.0/share/awk/gettime.awk	(revision 1046)
@@ -0,0 +1,62 @@
+# gettimeofday.awk --- get the time of day in a usable format
+#
+# Arnold Robbins, arnold@skeeve.com, Public Domain, May 1993
+#
+
+# Returns a string in the format of output of date(1)
+# Populates the array argument time with individual values:
+#    time["second"]       -- seconds (0 - 59)
+#    time["minute"]       -- minutes (0 - 59)
+#    time["hour"]         -- hours (0 - 23)
+#    time["althour"]      -- hours (0 - 12)
+#    time["monthday"]     -- day of month (1 - 31)
+#    time["month"]        -- month of year (1 - 12)
+#    time["monthname"]    -- name of the month
+#    time["shortmonth"]   -- short name of the month
+#    time["year"]         -- year modulo 100 (0 - 99)
+#    time["fullyear"]     -- full year
+#    time["weekday"]      -- day of week (Sunday = 0)
+#    time["altweekday"]   -- day of week (Monday = 0)
+#    time["dayname"]      -- name of weekday
+#    time["shortdayname"] -- short name of weekday
+#    time["yearday"]      -- day of year (0 - 365)
+#    time["timezone"]     -- abbreviation of timezone name
+#    time["ampm"]         -- AM or PM designation
+#    time["weeknum"]      -- week number, Sunday first day
+#    time["altweeknum"]   -- week number, Monday first day
+
+function gettimeofday(time,    ret, now, i)
+{
+    # get time once, avoids unnecessary system calls
+    now = systime()
+
+    # return date(1)-style output
+    ret = strftime("%a %b %d %H:%M:%S %Z %Y", now)
+
+    # clear out target array
+    delete time
+
+    # fill in values, force numeric values to be
+    # numeric by adding 0
+    time["second"]       = strftime("%S", now) + 0
+    time["minute"]       = strftime("%M", now) + 0
+    time["hour"]         = strftime("%H", now) + 0
+    time["althour"]      = strftime("%I", now) + 0
+    time["monthday"]     = strftime("%d", now) + 0
+    time["month"]        = strftime("%m", now) + 0
+    time["monthname"]    = strftime("%B", now)
+    time["shortmonth"]   = strftime("%b", now)
+    time["year"]         = strftime("%y", now) + 0
+    time["fullyear"]     = strftime("%Y", now) + 0
+    time["weekday"]      = strftime("%w", now) + 0
+    time["altweekday"]   = strftime("%u", now) + 0
+    time["dayname"]      = strftime("%A", now)
+    time["shortdayname"] = strftime("%a", now)
+    time["yearday"]      = strftime("%j", now) + 0
+    time["timezone"]     = strftime("%Z", now)
+    time["ampm"]         = strftime("%p", now)
+    time["weeknum"]      = strftime("%U", now) + 0
+    time["altweeknum"]   = strftime("%W", now) + 0
+
+    return ret
+}
Index: Daodan/MinGW/msys/1.0/share/awk/group.awk
===================================================================
--- Daodan/MinGW/msys/1.0/share/awk/group.awk	(revision 1046)
+++ Daodan/MinGW/msys/1.0/share/awk/group.awk	(revision 1046)
@@ -0,0 +1,87 @@
+# group.awk --- functions for dealing with the group file
+#
+# Arnold Robbins, arnold@skeeve.com, Public Domain
+# May 1993
+# Revised October 2000
+
+BEGIN    \
+{
+    # Change to suit your system
+    _gr_awklib = "/usr/sbin/awk/"
+}
+
+function _gr_init(    oldfs, oldrs, olddol0, grcat,
+                             using_fw, n, a, i)
+{
+    if (_gr_inited)
+        return
+
+    oldfs = FS
+    oldrs = RS
+    olddol0 = $0
+    using_fw = (PROCINFO["FS"] == "FIELDWIDTHS")
+    FS = ":"
+    RS = "\n"
+
+    grcat = _gr_awklib "grcat"
+    while ((grcat | getline) > 0) {
+        if ($1 in _gr_byname)
+            _gr_byname[$1] = _gr_byname[$1] "," $4
+        else
+            _gr_byname[$1] = $0
+        if ($3 in _gr_bygid)
+            _gr_bygid[$3] = _gr_bygid[$3] "," $4
+        else
+            _gr_bygid[$3] = $0
+
+        n = split($4, a, "[ \t]*,[ \t]*")
+        for (i = 1; i <= n; i++)
+            if (a[i] in _gr_groupsbyuser)
+                _gr_groupsbyuser[a[i]] = \
+                    _gr_groupsbyuser[a[i]] " " $1
+            else
+                _gr_groupsbyuser[a[i]] = $1
+
+        _gr_bycount[++_gr_count] = $0
+    }
+    close(grcat)
+    _gr_count = 0
+    _gr_inited++
+    FS = oldfs
+    if (using_fw)
+        FIELDWIDTHS = FIELDWIDTHS
+    RS = oldrs
+    $0 = olddol0
+}
+function getgrnam(group)
+{
+    _gr_init()
+    if (group in _gr_byname)
+        return _gr_byname[group]
+    return ""
+}
+function getgrgid(gid)
+{
+    _gr_init()
+    if (gid in _gr_bygid)
+        return _gr_bygid[gid]
+    return ""
+}
+function getgruser(user)
+{
+    _gr_init()
+    if (user in _gr_groupsbyuser)
+        return _gr_groupsbyuser[user]
+    return ""
+}
+function getgrent()
+{
+    _gr_init()
+    if (++_gr_count in _gr_bycount)
+        return _gr_bycount[_gr_count]
+    return ""
+}
+function endgrent()
+{
+    _gr_count = 0
+}
Index: Daodan/MinGW/msys/1.0/share/awk/join.awk
===================================================================
--- Daodan/MinGW/msys/1.0/share/awk/join.awk	(revision 1046)
+++ Daodan/MinGW/msys/1.0/share/awk/join.awk	(revision 1046)
@@ -0,0 +1,16 @@
+# join.awk --- join an array into a string
+#
+# Arnold Robbins, arnold@skeeve.com, Public Domain
+# May 1993
+
+function join(array, start, end, sep,    result, i)
+{
+    if (sep == "")
+       sep = " "
+    else if (sep == SUBSEP) # magic value
+       sep = ""
+    result = array[start]
+    for (i = start + 1; i <= end; i++)
+        result = result sep array[i]
+    return result
+}
Index: Daodan/MinGW/msys/1.0/share/awk/libintl.awk
===================================================================
--- Daodan/MinGW/msys/1.0/share/awk/libintl.awk	(revision 1046)
+++ Daodan/MinGW/msys/1.0/share/awk/libintl.awk	(revision 1046)
@@ -0,0 +1,14 @@
+function bindtextdomain(dir, domain)
+{
+    return dir
+}
+
+function dcgettext(string, domain, category)
+{
+    return string
+}
+
+function dcngettext(string1, string2, number, domain, category)
+{
+    return (number == 1 ? string1 : string2)
+}
Index: Daodan/MinGW/msys/1.0/share/awk/nextfile.awk
===================================================================
--- Daodan/MinGW/msys/1.0/share/awk/nextfile.awk	(revision 1046)
+++ Daodan/MinGW/msys/1.0/share/awk/nextfile.awk	(revision 1046)
@@ -0,0 +1,16 @@
+# nextfile --- skip remaining records in current file
+# correctly handle successive occurrences of the same file
+#
+# Arnold Robbins, arnold@skeeve.com, Public Domain
+# May, 1993
+
+# this should be read in before the "main" awk program
+
+function nextfile()   { _abandon_ = FILENAME; next }
+
+_abandon_ == FILENAME {
+      if (FNR == 1)
+          _abandon_ = ""
+      else
+          next
+}
Index: Daodan/MinGW/msys/1.0/share/awk/noassign.awk
===================================================================
--- Daodan/MinGW/msys/1.0/share/awk/noassign.awk	(revision 1046)
+++ Daodan/MinGW/msys/1.0/share/awk/noassign.awk	(revision 1046)
@@ -0,0 +1,17 @@
+# noassign.awk --- library file to avoid the need for a
+# special option that disables command-line assignments
+#
+# Arnold Robbins, arnold@skeeve.com, Public Domain
+# October 1999
+
+function disable_assigns(argc, argv,    i)
+{
+    for (i = 1; i < argc; i++)
+        if (argv[i] ~ /^[A-Za-z_][A-Za-z_0-9]*=.*/)
+            argv[i] = ("./" argv[i])
+}
+
+BEGIN {
+    if (No_command_assign)
+        disable_assigns(ARGC, ARGV)
+}
Index: Daodan/MinGW/msys/1.0/share/awk/ord.awk
===================================================================
--- Daodan/MinGW/msys/1.0/share/awk/ord.awk	(revision 1046)
+++ Daodan/MinGW/msys/1.0/share/awk/ord.awk	(revision 1046)
@@ -0,0 +1,44 @@
+# ord.awk --- do ord and chr
+
+# Global identifiers:
+#    _ord_:        numerical values indexed by characters
+#    _ord_init:    function to initialize _ord_
+#
+# Arnold Robbins, arnold@skeeve.com, Public Domain
+# 16 January, 1992
+# 20 July, 1992, revised
+
+BEGIN    { _ord_init() }
+
+function _ord_init(    low, high, i, t)
+{
+    low = sprintf("%c", 7) # BEL is ascii 7
+    if (low == "\a") {    # regular ascii
+        low = 0
+        high = 127
+    } else if (sprintf("%c", 128 + 7) == "\a") {
+        # ascii, mark parity
+        low = 128
+        high = 255
+    } else {        # ebcdic(!)
+        low = 0
+        high = 255
+    }
+
+    for (i = low; i <= high; i++) {
+        t = sprintf("%c", i)
+        _ord_[t] = i
+    }
+}
+function ord(str,    c)
+{
+    # only first character is of interest
+    c = substr(str, 1, 1)
+    return _ord_[c]
+}
+
+function chr(c)
+{
+    # force c to be numeric by adding 0
+    return sprintf("%c", c + 0)
+}
Index: Daodan/MinGW/msys/1.0/share/awk/passwd.awk
===================================================================
--- Daodan/MinGW/msys/1.0/share/awk/passwd.awk	(revision 1046)
+++ Daodan/MinGW/msys/1.0/share/awk/passwd.awk	(revision 1046)
@@ -0,0 +1,63 @@
+# passwd.awk --- access password file information
+#
+# Arnold Robbins, arnold@skeeve.com, Public Domain
+# May 1993
+# Revised October 2000
+
+BEGIN {
+    # tailor this to suit your system
+    _pw_awklib = "/usr/sbin/awk/"
+}
+
+function _pw_init(    oldfs, oldrs, olddol0, pwcat, using_fw)
+{
+    if (_pw_inited)
+        return
+
+    oldfs = FS
+    oldrs = RS
+    olddol0 = $0
+    using_fw = (PROCINFO["FS"] == "FIELDWIDTHS")
+    FS = ":"
+    RS = "\n"
+
+    pwcat = _pw_awklib "pwcat"
+    while ((pwcat | getline) > 0) {
+        _pw_byname[$1] = $0
+        _pw_byuid[$3] = $0
+        _pw_bycount[++_pw_total] = $0
+    }
+    close(pwcat)
+    _pw_count = 0
+    _pw_inited = 1
+    FS = oldfs
+    if (using_fw)
+        FIELDWIDTHS = FIELDWIDTHS
+    RS = oldrs
+    $0 = olddol0
+}
+function getpwnam(name)
+{
+    _pw_init()
+    if (name in _pw_byname)
+        return _pw_byname[name]
+    return ""
+}
+function getpwuid(uid)
+{
+    _pw_init()
+    if (uid in _pw_byuid)
+        return _pw_byuid[uid]
+    return ""
+}
+function getpwent()
+{
+    _pw_init()
+    if (_pw_count < _pw_total)
+        return _pw_bycount[++_pw_count]
+    return ""
+}
+function endpwent()
+{
+    _pw_count = 0
+}
Index: Daodan/MinGW/msys/1.0/share/awk/readable.awk
===================================================================
--- Daodan/MinGW/msys/1.0/share/awk/readable.awk	(revision 1046)
+++ Daodan/MinGW/msys/1.0/share/awk/readable.awk	(revision 1046)
@@ -0,0 +1,16 @@
+# readable.awk --- library file to skip over unreadable files
+#
+# Arnold Robbins, arnold@skeeve.com, Public Domain
+# October 2000
+
+BEGIN {
+    for (i = 1; i < ARGC; i++) {
+        if (ARGV[i] ~ /^[A-Za-z_][A-Za-z0-9_]*=.*/ \
+            || ARGV[i] == "-")
+            continue    # assignment or standard input
+        else if ((getline junk < ARGV[i]) < 0) # unreadable
+            delete ARGV[i]
+        else
+            close(ARGV[i])
+    }
+}
Index: Daodan/MinGW/msys/1.0/share/awk/rewind.awk
===================================================================
--- Daodan/MinGW/msys/1.0/share/awk/rewind.awk	(revision 1046)
+++ Daodan/MinGW/msys/1.0/share/awk/rewind.awk	(revision 1046)
@@ -0,0 +1,20 @@
+# rewind.awk --- rewind the current file and start over
+#
+# Arnold Robbins, arnold@skeeve.com, Public Domain
+# September 2000
+
+function rewind(    i)
+{
+    # shift remaining arguments up
+    for (i = ARGC; i > ARGIND; i--)
+        ARGV[i] = ARGV[i-1]
+
+    # make sure gawk knows to keep going
+    ARGC++
+
+    # make current file next to get done
+    ARGV[ARGIND+1] = FILENAME
+
+    # do it
+    nextfile
+}
Index: Daodan/MinGW/msys/1.0/share/awk/round.awk
===================================================================
--- Daodan/MinGW/msys/1.0/share/awk/round.awk	(revision 1046)
+++ Daodan/MinGW/msys/1.0/share/awk/round.awk	(revision 1046)
@@ -0,0 +1,29 @@
+# round.awk --- do normal rounding
+#
+# Arnold Robbins, arnold@skeeve.com, Public Domain
+# August, 1996
+
+function round(x,   ival, aval, fraction)
+{
+   ival = int(x)    # integer part, int() truncates
+
+   # see if fractional part
+   if (ival == x)   # no fraction
+      return ival   # ensure no decimals
+
+   if (x < 0) {
+      aval = -x     # absolute value
+      ival = int(aval)
+      fraction = aval - ival
+      if (fraction >= .5)
+         return int(x) - 1   # -2.5 --> -3
+      else
+         return int(x)       # -2.3 --> -2
+   } else {
+      fraction = x - ival
+      if (fraction >= .5)
+         return ival + 1
+      else
+         return ival
+   }
+}
Index: Daodan/MinGW/msys/1.0/share/awk/strtonum.awk
===================================================================
--- Daodan/MinGW/msys/1.0/share/awk/strtonum.awk	(revision 1046)
+++ Daodan/MinGW/msys/1.0/share/awk/strtonum.awk	(revision 1046)
@@ -0,0 +1,56 @@
+# strtonum --- convert string to number
+
+#
+# Arnold Robbins, arnold@skeeve.com, Public Domain
+# February, 2004
+
+function mystrtonum(str,        ret, chars, n, i, k, c)
+{
+    if (str ~ /^0[0-7]*$/) {
+        # octal
+        n = length(str)
+        ret = 0
+        for (i = 1; i <= n; i++) {
+            c = substr(str, i, 1)
+            if ((k = index("01234567", c)) > 0)
+                k-- # adjust for 1-basing in awk
+
+            ret = ret * 8 + k
+        }
+    } else if (str ~ /^0[xX][0-9a-fA-f]+/) {
+        # hexadecimal
+        str = substr(str, 3)    # lop off leading 0x
+        n = length(str)
+        ret = 0
+        for (i = 1; i <= n; i++) {
+            c = substr(str, i, 1)
+            c = tolower(c)
+            if ((k = index("0123456789", c)) > 0)
+                k-- # adjust for 1-basing in awk
+            else if ((k = index("abcdef", c)) > 0)
+                k += 9
+
+            ret = ret * 16 + k
+        }
+    } else if (str ~ /^[-+]?([0-9]+([.][0-9]*([Ee][0-9]+)?)?|([.][0-9]+([Ee][-+]?[0-9]+)?))$/) {
+        # decimal number, possibly floating point
+        ret = str + 0
+    } else
+        ret = "NOT-A-NUMBER"
+
+    return ret
+}
+
+# BEGIN {     # gawk test harness
+#     a[1] = "25"
+#     a[2] = ".31"
+#     a[3] = "0123"
+#     a[4] = "0xdeadBEEF"
+#     a[5] = "123.45"
+#     a[6] = "1.e3"
+#     a[7] = "1.32"
+#     a[7] = "1.32E2"
+# 
+#     for (i = 1; i in a; i++)
+#         print a[i], strtonum(a[i]), mystrtonum(a[i])
+# }
Index: Daodan/MinGW/msys/1.0/share/awk/zerofile.awk
===================================================================
--- Daodan/MinGW/msys/1.0/share/awk/zerofile.awk	(revision 1046)
+++ Daodan/MinGW/msys/1.0/share/awk/zerofile.awk	(revision 1046)
@@ -0,0 +1,19 @@
+# zerofile.awk --- library file to process empty input files
+#
+# Arnold Robbins, arnold@skeeve.com, Public Domain
+# June 2003
+
+BEGIN { Argind = 0 }
+
+ARGIND > Argind + 1 {
+    for (Argind++; Argind < ARGIND; Argind++)
+        zerofile(ARGV[Argind], Argind)
+}
+
+ARGIND != Argind { Argind = ARGIND }
+
+END {
+    if (ARGIND > Argind)
+        for (Argind++; Argind <= ARGIND; Argind++)
+            zerofile(ARGV[Argind], Argind)
+}
Index: Daodan/MinGW/msys/1.0/share/doc/MSYS/COPYING
===================================================================
--- Daodan/MinGW/msys/1.0/share/doc/MSYS/COPYING	(revision 1046)
+++ Daodan/MinGW/msys/1.0/share/doc/MSYS/COPYING	(revision 1046)
@@ -0,0 +1,345 @@
+		    GNU GENERAL PUBLIC LICENSE
+		       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+                       59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+
+		    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+			    NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+
+	    How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) 19yy  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) 19yy name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.
Index: Daodan/MinGW/msys/1.0/share/doc/MSYS/COPYING.LIB
===================================================================
--- Daodan/MinGW/msys/1.0/share/doc/MSYS/COPYING.LIB	(revision 1046)
+++ Daodan/MinGW/msys/1.0/share/doc/MSYS/COPYING.LIB	(revision 1046)
@@ -0,0 +1,491 @@
+		  GNU LIBRARY GENERAL PUBLIC LICENSE
+		       Version 2, June 1991
+
+ Copyright (C) 1991 Free Software Foundation, Inc.
+ 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the library GPL.  It is
+ numbered 2 because it goes with version 2 of the ordinary GPL.]
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Library General Public License, applies to some
+specially designated Free Software Foundation software, and to any
+other libraries whose authors decide to use it.  You can use it for
+your libraries, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if
+you distribute copies of the library, or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link a program with the library, you must provide
+complete object files to the recipients so that they can relink them
+with the library, after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  Our method of protecting your rights has two steps: (1) copyright
+the library, and (2) offer you this license which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  Also, for each distributor's protection, we want to make certain
+that everyone understands that there is no warranty for this free
+library.  If the library is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original
+version, so that any problems introduced by others will not reflect on
+the original authors' reputations.
+
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that companies distributing free
+software will individually obtain patent licenses, thus in effect
+transforming the program into proprietary software.  To prevent this,
+we have made it clear that any patent must be licensed for everyone's
+free use or not licensed at all.
+
+  Most GNU software, including some libraries, is covered by the ordinary
+GNU General Public License, which was designed for utility programs.  This
+license, the GNU Library General Public License, applies to certain
+designated libraries.  This license is quite different from the ordinary
+one; be sure to read it in full, and don't assume that anything in it is
+the same as in the ordinary license.
+
+  The reason we have a separate public license for some libraries is that
+they blur the distinction we usually make between modifying or adding to a
+program and simply using it.  Linking a program with a library, without
+changing the library, is in some sense simply using the library, and is
+analogous to running a utility program or application program.  However, in
+a textual and legal sense, the linked executable is a combined work, a
+derivative of the original library, and the ordinary General Public License
+treats it as such.
+
+  Because of this blurred distinction, using the ordinary General
+Public License for libraries did not effectively promote software
+sharing, because most developers did not use the libraries.  We
+concluded that weaker conditions might promote sharing better.
+
+  However, unrestricted linking of non-free programs would deprive the
+users of those programs of all benefit from the free status of the
+libraries themselves.  This Library General Public License is intended to
+permit developers of non-free programs to use free libraries, while
+preserving your freedom as a user of such programs to change the free
+libraries that are incorporated in them.  (We have not seen how to achieve
+this as regards changes in header files, but we have achieved it as regards
+changes in the actual functions of the Library.)  The hope is that this
+will lead to faster development of free libraries.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, while the latter only
+works together with the library.
+
+  Note that it is possible for a library to be covered by the ordinary
+General Public License rather than by this special one.
+
+
+		  GNU LIBRARY GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library which
+contains a notice placed by the copyright holder or other authorized
+party saying it may be distributed under the terms of this Library
+General Public License (also called "this License").  Each licensee is
+addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+  
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+
+
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+
+  6. As an exception to the Sections above, you may also compile or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    c) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    d) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the source code distributed need not include anything that is normally
+distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Library General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+			    NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+
+     Appendix: How to Apply These Terms to Your New Libraries
+
+  If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change.  You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+  To apply these terms, attach the following notices to the library.  It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the library's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Library General Public
+    License as published by the Free Software Foundation; either
+    version 2 of the License, or (at your option) any later version.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Library General Public License for more details.
+
+    You should have received a copy of the GNU Library General Public
+    License along with this library; if not, write to the Free
+    Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+    MA 02111-1307, USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the
+  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+  <signature of Ty Coon>, 1 April 1990
+  Ty Coon, President of Vice
+
+That's all there is to it!
Index: Daodan/MinGW/msys/1.0/share/doc/MSYS/CYGWIN_LICENSE
===================================================================
--- Daodan/MinGW/msys/1.0/share/doc/MSYS/CYGWIN_LICENSE	(revision 1046)
+++ Daodan/MinGW/msys/1.0/share/doc/MSYS/CYGWIN_LICENSE	(revision 1046)
@@ -0,0 +1,46 @@
+--------------------------------------------------------------------------
+This program is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License (GPL) as published by
+the Free Software Foundation; either version 2 of the License, or (at
+your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+--------------------------------------------------------------------------
+
+			*** NOTE ***
+
+In accordance with section 10 of the GPL, Cygnus permits programs whose
+sources are distributed under a license that complies with the Open
+Source definition to be linked with libcygwin.a without libcygwin.a
+itself causing the resulting program to be covered by the GNU GPL.
+
+This means that you can port an Open Source(tm) application to cygwin,
+and distribute that executable as if it didn't include a copy of
+libcygwin.a linked into it.  Note that this does not apply to the cygwin
+DLL itself.  If you distribute a (possibly modified) version of the DLL
+you must adhere to the terms of the GPL, i.e., you must provide sources
+for the cygwin DLL.
+
+See http://www.opensource.org/osd.html for the precise Open Source
+Definition referenced above.
+
+If you have questions about any of the above or would like to arrange
+for other licensing terms, please contact Cygnus using the information
+given below:
+
+     Cygnus Solutions
+     1325 Chesapeake Terrace
+     Sunnyvale, CA 94089
+     USA
+
+     +1 408 542 9600
+     hotline: +1 408 542 9601
+     email: info@cygnus.com
+     fax: +1 408 542 9699
Index: Daodan/MinGW/msys/1.0/share/doc/MSYS/MSYS_MISSION
===================================================================
--- Daodan/MinGW/msys/1.0/share/doc/MSYS/MSYS_MISSION	(revision 1046)
+++ Daodan/MinGW/msys/1.0/share/doc/MSYS/MSYS_MISSION	(revision 1046)
@@ -0,0 +1,12 @@
+File:		MSYS_MISSION
+Copyright (C):	Earnie Boyd  <earnie@users.sf.net>
+Distribution:	See MSYS_LICENSE
+Revision:	1.0.2
+Revision Date:	2002.01.25
+
+The mission or goal of MSYS is to provide a minimal POSIX environment for 
+configuring and building MinGW ports and code.  The MSYS developers have taken 
+the Cygwin source and modified it to fit the needs for MinGW and MSYS.  The very
+minimum of binaries needed to provide an efficient means to natively configure
+and make is what the developers have strived to distribute.  Therefore they do
+not encourage the use of MSYS as a runtime.
Index: Daodan/MinGW/msys/1.0/share/doc/MSYS/MSYS_VS_CYGWIN
===================================================================
--- Daodan/MinGW/msys/1.0/share/doc/MSYS/MSYS_VS_CYGWIN	(revision 1046)
+++ Daodan/MinGW/msys/1.0/share/doc/MSYS/MSYS_VS_CYGWIN	(revision 1046)
@@ -0,0 +1,81 @@
+File:		     MSYS_VS_CYGWIN
+Copyright (C):	     2001: Earnie Boyd  <earnie@users.sf.net>
+Distribution Rights: See MSYS_LICENSE
+File Revision:	     1.0.4
+File Revision Date:  2002.01.25
+
+mount:	The mount command is only used to display all mount points.  The mount
+points for the very important are automounted.  Nothing is stored in the Win32
+registry database.  If you wish to add other mount points, ones that aren't
+auto mounted, then you may do so in the /etc/fstab file.  i
+
+ROOTPATH "/": The "/" auto mount point is currently a reference to the parent
+directory of the directory containing the msys-1.0.dll file.  
+<strikeout>In later releases
+the / will be a reference to a pseudo device that points to the mount points.
+I.E. in a later release it is planned that `ls /' will list the mount points.
+</strikeout>  I plan to do something but it won't be as previously stated.
+
+/bin: The /bin auto mount point is a reference to the directory containing the
+msys-1.0.dll file.  I.E. if the path to msys-1.0.dll is
+C:\msys\1.0\bin\msys-1.0.dll then /bin resolves to C:\msys\1.0\bin.
+
+/tmp: The /tmp auto mount point is a reference to the directory that is
+referenced by the Win32 TMP environment variable.  I.E. if the win32 TMP
+environment variable value is C:\TEMP then the /tmp mount point resolves to
+C:\TEMP.
+
+/usr: The /usr auto mount point is a reference to the parent directory of the
+directory containing the msys-1.0.dll file.  I.E. if the path to msys-1.0.dll
+is C:\msys\1.0\bin\msys-1.0.dll then the /usr mount point resolves to
+C:\msys\1.0.
+
+/cygdrive:  There is no such item.  All devices and mapped shares are auto
+mounted with the device letter as the mount point.  E.G.: the C:\ drive is
+referenced as /c.
+
+/etc/fstab:  If this file exists then it is read for user specified mount
+points.  The form of the record is [PHYSICAL PATH][WHITE SPACE][MOUNT POINT]
+where [WHITE SPACE] is one or more spaces and/or tabs.
+
+binary vs text:  File processing mode is set to binary.  This is not changeable.
+I had originally planned to set this to text mode processing but ran into
+various problems of which volumes have been written in the Cygwin archives.
+For release 1.0 of MSYS this means that you cannot have \r\n line endings on
+text files.  In a future release it is planned to "Do The Right Thing" and
+predetermine the type of file being opened and set text or binary processing
+as appropriate for reading files.  Or, predetermine the type of file and as the
+file is being read remove the \r from the end of the line.
+
+uname -s:  The default system name is returned as MSYS_NT-4.0, if you're on
+NT 4.0.  However you could export MSYSTEM=MINGW32 as change the returned value
+for `uname -s' to MINGW32_NT-4.0.  This is done to aid the use of MSYS with
+MinGW and configuration scripts will determine that it is a MINGW32 build
+system.
+
+--added in version 1.0.2--
+/bin and /usr/bin:  These are currently reserved for MSYS programs only (MSYS
+programs are progrms that depend on the msys-1.0.dll file).  It will be unlikely
+that non-MSYS programs will execute properly if they exist in /bin and /usr/bin.
+
+POSIX paths in arguments:  POSIX paths passed as arguments on the command line
+are now converted to WIN32 paths.  This is only true for programs that don't
+exist in the /bin and /usr/bin paths.  POSIX paths are determined by i) a '/'
+character in the argument and ii) the argument must not be two characters long.
+The two character filter is done so that WIN32 parameters of the type /x can be
+passed to the WIN32 program.  This allows you to do `write /p /mydocuments/abc'
+and the write.exe program found in the c:\WINNT\System32 directory on my
+system can print to the printer on lpt1 the c:\msys\1.0\mydocments\abc file.
+
+--added in version 1.0.3--
+More robust checking for filesystem paths on arguments.
+
+--added in version 1.0.4--
+Symlink resolution.
+diff, diff3 and head to the distribution.
+--removed in version 1.0.4--
+Requirement that the path must begin with /.
+bash from the distribution.
+
+--removed in version 1.0.11--
+Requirement that /bin and /usr/bin are reserved for MSYS programs only.
Index: Daodan/MinGW/msys/1.0/share/doc/MSYS/msysCORE-1.0.19-1-msys-RELEASE_NOTES.txt
===================================================================
--- Daodan/MinGW/msys/1.0/share/doc/MSYS/msysCORE-1.0.19-1-msys-RELEASE_NOTES.txt	(revision 1046)
+++ Daodan/MinGW/msys/1.0/share/doc/MSYS/msysCORE-1.0.19-1-msys-RELEASE_NOTES.txt	(revision 1046)
@@ -0,0 +1,151 @@
+msysCORE
+========================================================================
+msysCORE consists of the MSYS runtime plus the basic support files for
+a standard MSYS installation.
+
+Runtime requirements:
+  None.
+
+Build requirements:
+  msys-bash-bin
+  msys-core-ext
+  msys-coreutils-bin
+  msys-diffutils-bin
+  msys-findutils-bin
+  msys-gawk-bin
+  msys-grep-bin
+  msys-make-bin
+  msys-sed-bin
+  msys-tar-bin
+  msys-xz-bin
+  msys-gcc-bin
+  mingw32-gcc-g++-bin
+
+Canonical homepage:
+  http://www.mingw.org/wiki/msys/
+
+Canonical download:
+  http://sourceforge.net/projects/mingw/files/
+
+License:
+  Cygwin (see /share/doc/MSYS/CYGWIN_LICENSE)
+
+Language:
+  C, C++
+
+========================================================================
+
+Build instructions:
+1) unpack msysCORE-1.0.19-1-msys-1.0.19-src.tar.xz
+2) Install the build requirements:
+  ./msysrlsbld -e build_dep
+  (requires mingw-get in PATH)
+3) Create an empty build directory and type: 
+   <path-to-source>/msysrlsbld
+
+See <path-to-source>/msysrlsbld -h for further options.
+
+This will create:
+
+  msysCORE-1.0.19-1-msys-1.0.19-bin.tar.xz
+    MSYS runtime DLL plus basic support files
+
+  msysCORE-1.0.19-1-msys-1.0.19-ext.tar.xz
+    A few support scripts dependent on other MSYS components.
+
+  msysCORE-1.0.19-1-msys-1.0.19-dev.tar.xz
+    Development files for the MSYS runtime.
+
+  msysCORE-1.0.19-1-msys-1.0.19-doc.tar.xz
+    MSYS documentation.
+
+  msysCORE-1.0.19-1-msys-1.0.19-lic.tar.xz
+    MSYS license.
+
+  msysCORE-1.0.19-1-msys-1.0.19-dbg.tar.bz2
+    Debug information:
+    * msys-1.0-debug.dll - Debug version of the MSYS runtime.
+    * strace.exe - System call tracer for use with the above.
+    * msys-1.0.dll.dbg - Symbolic information for decoding stack dumps.
+
+========================================================================
+
+----------  msysCORE-1.0.19-1 -- 2016 Jul 13 -----------
+* Fix a buffer overflow vulnerability in execvp (issue #2269).
+* Correct a bug with pipe handling that affected parallel make
+  (issue #1950).
+* Avoid loading some system DLLs, potentially improving process startup
+  time. (issue #1823).
+* Generate /etc/fstab automatically in postinstall (issue #2008):
+  1) /etc/fstab.sample is delivered with the package, but adjusted at
+  installation time, to reflect actual installation choice for /mingw mount
+  point association.
+  2) /etc/fstab is created if necessary, with the correct mapping of the
+  /mingw mount point.
+* Package compression format changed from lzma to xz.
+
+----------  msysCORE-1.0.18-1 -- 2012 Nov 21 -----------
+* Enable quoting of globbing characters on the command-line of native
+  applications (bug #3482704).
+* In case of an absent /etc directory, keep on trying to monitor the root
+  directory for its creation instead of silently failing (bug #3302830).
+* Fix getpwnam to return NULL for unknown user names, and be more robust
+  when HOME is not set (bug #3415129).
+* Import Cygwin 1.3.4 and port modern wincap functionality.
+* Convert msys.bat line endings back to CRLF. (bug #2854155)
+
+----------  msysCORE-1.0.17-1 -- 2011 Apr 19 -----------
+* Allow to override the error mode for Windows exceptions like GPF.
+
+----------  msysCORE-1.0.16-1 -- 2010 Sep 28 -----------
+* Fix a race condition when determining if a pid is valid
+  just after creating the process (bug #3042292)
+* Support path conversion of @file arguments.
+* Be more robust when dealing with ambiguous paths and mount points
+  (eg. /usr/tmp vs. /tmp, when /usr == /). Fixes bug #3059626.
+* Add --mintty option to msys.bat, for using mintty as the MSYS
+  terminal (mintty must be already installed for this to work).
+
+----------  msysCORE-1.0.15-1 -- 2010 Jul 06 -----------
+* Add declarations of fchdir and getdomainname to sys/unistd.h
+* Add declarations of rcmd, rexec, and rresvport to netdb.h
+* Correct bug involving double evaluations of pseudo-relocations
+  after fork().  Affected MSYS applications must be recompiled to
+  take advantage of this fix.
+* Add --replace option to mount and umount scripts
+* Split -bin component into -bin, -ext, -doc and -lic.
+* Removed a dependency of strace on the native GCC shared runtimes.
+* Moved the MSYS DLL base to 0x60800000, to hopefully minimize the need
+  to rebase it so often.
+* Simplified the bin/cmd script
+
+----------  msysCORE-1.0.14-1 -- 2010 Mar 17 -----------
+* Fix path translation in presence of components with dots.
+Example: /mingw/example.dot/../include
+-> c:/mingw/example.dot/../include
+
+----------  msysCORE-1.0.13-2 -- 2010 Jan 27 -----------
+* Recompile at -O3 +:
+    -fno-unit-at-a-time
+  to avoid compiler optimization bug at -O3 and -O2
+
+----------  msysCORE-1.0.13-1 -- 2010 Jan 15 -----------
+* Updated MSYS to support runtime pseudo-relocs (see `info ld'
+  and search for --enable-runtime-pseudo-reloc). Both v1 and v2
+  relocations are supported.
+* Other changes necesssary to allow building with GCC 3.x rather
+  than the old 2.95.3 version.
+* Developer files are moved from within /usr/i686-pc-msys to
+  /usr/include and /usr/lib.
+* Fix a potential crash when preparing to run executables.
+* Fix bug #1249827 - MSYS appending Win32 path to hyphen.
+
+----------  msysCORE-1.0.12-1 -- 2010 Jan 5 -----------
+* Documentation moved to /share/doc/MSYS
+* MSYS symlink semantics are documented in /share/doc/MSYS/README.rtf
+* Improve symlink emulation:
+  - handle relative symlinks
+  - avoid infinite recursion
+  - correct return value on failure
+  - fail if destination exists
+* Better Win9x compatibility.
Index: Daodan/MinGW/msys/1.0/share/texinfo/texinfo.cat
===================================================================
--- Daodan/MinGW/msys/1.0/share/texinfo/texinfo.cat	(revision 1046)
+++ Daodan/MinGW/msys/1.0/share/texinfo/texinfo.cat	(revision 1046)
@@ -0,0 +1,3 @@
+OVERRIDE YES
+
+PUBLIC "-//GNU//DTD TexinfoML V4.13//EN" "texinfo.dtd"
Index: Daodan/MinGW/msys/1.0/share/texinfo/texinfo.dtd
===================================================================
--- Daodan/MinGW/msys/1.0/share/texinfo/texinfo.dtd	(revision 1046)
+++ Daodan/MinGW/msys/1.0/share/texinfo/texinfo.dtd	(revision 1046)
@@ -0,0 +1,507 @@
+<!-- $Id: texinfo.dtd,v 1.13 2008/01/31 18:33:27 karl Exp $
+   Document Type Definition for Texinfo XML output (the '-'-xml option).
+
+  Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
+  Free Software Foundation, Inc.
+
+  Copying and distribution of this file, with or without modification,
+  are permitted in any medium without royalty provided the copyright
+  notice and this notice are preserved.
+
+   Author: Philippe Martin
+   Contributors:
+           Karl Eichwalder
+           Alper Ersoy
+           Karl Berry
+           Torsten Bronger
+-->
+
+<!-- * ENTITIES * -->
+
+<!-- Meta-information -->
+<!ENTITY % metainformation "setfilename | settitle | dircategory
+                            | documentdescription">
+<!ENTITY % variables "setvalue | clearvalue">
+
+<!-- Document language -->
+<!ENTITY % lang "documentlanguage">
+
+<!-- Language codes -->
+<!ENTITY % languagecodes "aa|ab|af|am|ar|as|ay|az|ba|be|bg|bh|bi|bn|bo|br|ca|co|cs|cy|da|de|dz|el|en|eo|es|et|eu|fa|fi|fj|fo|fr|fy|ga|gd|gl|gn|gu|ha|he|hi|hr|hu|hy|ia|id|ie|ik|is|it|iu|ja|jw|ka|kk|kl|km|kn|ko|ks|ku|ky|la|ln|lo|lt|lv|mg|mi|mk|ml|mn|mo|mr|ms|mt|my|na|ne|nl|no|oc|om|or|pa|pl|ps|pt|qu|rm|rn|ro|ru|rw|sa|sd|sg|sh|si|sk|sl|sm|sn|so|sq|sr|ss|st|su|sv|sw|ta|te|tg|th|ti|tk|tl|tn|to|tr|ts|tt|tw|ug|uk|ur|uz|vi|vo|wo|xh|yi|yo|za|zh|zu">
+
+<!-- ToC -->
+<!ENTITY % toc "contents | shortcontents">
+
+<!-- Title page -->
+<!ENTITY % titlepage_cmds "author | booktitle | booksubtitle">
+
+<!-- block -->
+<!ENTITY % block "menu | para | quotation | example | smallexample | lisp
+                  | smalllisp | cartouche | copying
+                  | format | smallformat | display
+                  | smalldisplay | itemize | enumerate | sp | center | group
+                  | table | multitable | definition | float | image">
+
+<!-- API definitions -->
+<!ENTITY % definition.cmds "defcategory | deffunction | defvariable | defparam
+                            | defdelimiter | deftype | defparamtype | defdatatype
+                            | defclass | defclassvar | defoperation">
+
+<!-- Headings -->
+<!ENTITY % headings "majorheading | chapheading | heading | subheading
+                     | subsubheading">
+
+
+<!-- Sectioning -->
+<!ENTITY % section.level1 "top | chapter | unnumbered | appendix">
+
+<!ENTITY % section.level2 "section | unnumberedsec | appendixsec">
+
+<!ENTITY % section.level3 "subsection | unnumberedsubsec | appendixsubsec">
+
+<!ENTITY % section.level4 "subsubsection | unnumberedsubsubsec 
+                           | appendixsubsubsec">
+
+<!ENTITY % section.all "%section.level1; | %section.level2; | %section.level3;
+                        | %section.level4;">
+
+
+<!ENTITY % section.level1.content "(%block;
+                                   | %section.level2;
+                                   | %section.level3;
+                                   | %section.level4;
+                                   | verbatim | titlepage | %toc;
+                                   | %lang; | %variables;
+                                   | %headings;
+                                   | listoffloats
+                                   | printindex)*">
+
+<!ENTITY % section.level2.content "(%block;
+                                   | %section.level3;
+                                   | %section.level4;
+                                   | verbatim | titlepage | %toc;
+                                   | %lang; | %variables;
+                                   | %headings;)*">
+
+<!ENTITY % section.level3.content "(%block;
+                                   | %section.level4;
+                                   | verbatim | titlepage | %toc;
+                                   | %lang; | %variables;
+                                   | %headings;)*">
+
+<!ENTITY % section.level4.content "(%block;
+                                    | verbatim | titlepage | %toc;
+                                    | %lang; | %variables;
+                                    | %headings;)*">
+
+<!-- Options (many missing) -->
+<!ENTITY % onoff "on|off">
+<!ENTITY % option.cmds "frenchspacing">
+
+<!-- Inline -->
+<!ENTITY % Inline.emphasize "strong | emph">
+<!ENTITY % Inline.fonts "b | i | r | sansserif | slanted | titlefont | tt
+                         | sc">
+<!ENTITY % Inline.footnote "footnote">
+<!ENTITY % Inline.markup "code | command | env | file | option | samp | verb
+                          | dfn | cite | key | kbd | var | acronym | url"> 
+<!ENTITY % Inline.math "math | dmn">
+<!ENTITY % Inline.reference "xref | inforef | indexterm | email | uref">
+<!ENTITY % Inline.misc "click | clicksequence | logo | punct">
+
+<!ENTITY % Inline.phrase
+           "%Inline.emphasize;  | %Inline.misc; | %Inline.fonts;
+            | %Inline.markup;   | %Inline.math; | %Inline.reference;
+            | %Inline.footnote; | %option.cmds; ">
+
+
+<!-- * ELEMENTS * -->
+
+<!-- TOP Level Element -->
+<!ELEMENT texinfo ((%metainformation; | titlepage | node | synindex | %block; | %toc;
+                    | %variables; | %lang;)* )>
+<!ATTLIST texinfo xml:lang (%languagecodes;) 'en'>
+
+<!-- meta-information -->
+<!ELEMENT setfilename (#PCDATA)>
+<!ELEMENT settitle    (#PCDATA | %Inline.phrase;)*>
+<!ELEMENT dircategory (#PCDATA)>
+
+<!ELEMENT setvalue    (#PCDATA | %Inline.phrase;)*>
+<!ELEMENT clearvalue  EMPTY>
+<!ATTLIST setvalue
+                name CDATA #REQUIRED>
+<!ATTLIST clearvalue
+                name CDATA #REQUIRED>
+
+<!-- ToC -->
+<!ELEMENT contents      EMPTY>
+<!ELEMENT shortcontents EMPTY>
+
+<!-- Document language -->
+<!ELEMENT documentlanguage EMPTY>
+<!ATTLIST documentlanguage xml:lang (%languagecodes;) 'en'>
+
+<!-- Titlepage -->
+<!ELEMENT titlepage    (%titlepage_cmds; | %block;)*>
+<!ELEMENT author       (#PCDATA | %Inline.phrase;)*>
+<!ELEMENT booktitle    (#PCDATA | %Inline.phrase;)*>
+<!ELEMENT booksubtitle (#PCDATA | %Inline.phrase;)*>
+
+<!-- NODES -->
+<!ELEMENT node (nodename, nodenext?, nodeprev?, nodeup?,
+                (%section.all; | %block; | %toc; | %lang;)*) >
+
+<!ELEMENT nodename (#PCDATA)>
+<!ELEMENT nodenext (#PCDATA)>
+<!ELEMENT nodeprev (#PCDATA)>
+<!ELEMENT nodeup   (#PCDATA)>
+
+
+<!-- SECTIONING -->
+<!ELEMENT top           (title?, (%section.level1.content;))>
+
+<!ELEMENT chapter       (title?, (%section.level1.content;))>
+<!ELEMENT section       (title?, (%section.level2.content;))>
+<!ELEMENT subsection    (title?, (%section.level3.content;))>
+<!ELEMENT subsubsection (title?, (%section.level4.content;))>
+
+<!ELEMENT unnumbered          (title?, (%section.level1.content;))>
+<!ELEMENT unnumberedsec       (title?, (%section.level2.content;))>
+<!ELEMENT unnumberedsubsec    (title?, (%section.level3.content;))>
+<!ELEMENT unnumberedsubsubsec (title?, (%section.level4.content;))>
+
+<!ELEMENT appendix          (title?, (%section.level1.content;))>
+<!ELEMENT appendixsec       (title?, (%section.level2.content;))>
+<!ELEMENT appendixsubsec    (title?, (%section.level3.content;))>
+<!ELEMENT appendixsubsubsec (title?, (%section.level4.content;))>
+
+<!-- Headings and titles -->
+<!ELEMENT majorheading  (#PCDATA | %Inline.phrase;)*>
+<!ELEMENT chapheading   (#PCDATA | %Inline.phrase;)*>
+<!ELEMENT heading       (#PCDATA | %Inline.phrase;)*>
+<!ELEMENT subheading    (#PCDATA | %Inline.phrase;)*>
+<!ELEMENT subsubheading (#PCDATA | %Inline.phrase;)*>
+<!ELEMENT title         (#PCDATA | %Inline.phrase;)*>
+
+<!-- Negative Indentation in Blocks -->
+<!ELEMENT exdent       (#PCDATA | %Inline.phrase;)*>
+
+
+<!-- BLOCK Elements -->
+
+<!ELEMENT quotation    (%block; | %Inline.phrase; | exdent)*>
+<!ELEMENT documentdescription (#PCDATA | %block; | %Inline.phrase;)*>
+<!ELEMENT example      (#PCDATA | %block; | %Inline.phrase; | exdent)*>
+<!ELEMENT smallexample (#PCDATA | %block; | %Inline.phrase; | exdent)*>
+<!ELEMENT lisp         (#PCDATA | %block; | %Inline.phrase; | exdent)*>
+<!ELEMENT smalllisp    (#PCDATA | %block; | %Inline.phrase; | exdent)*>
+<!ELEMENT cartouche    (#PCDATA | %block; | %Inline.phrase; | exdent)*>
+<!ELEMENT copying      (#PCDATA | %block; | %Inline.phrase; | exdent)*>
+<!ELEMENT format       (#PCDATA | %block; | %Inline.phrase; | exdent)*>
+<!ELEMENT smallformat  (#PCDATA | %block; | %Inline.phrase; | exdent)*>
+<!ELEMENT display      (#PCDATA | %block; | %Inline.phrase; | exdent)*>
+<!ELEMENT smalldisplay (#PCDATA | %block; | %Inline.phrase; | exdent)*>
+<!ELEMENT center       (#PCDATA | %block; | %Inline.phrase; | exdent)*>
+<!ELEMENT group        (#PCDATA | %block; | %Inline.phrase; | exdent)*>
+
+<!ELEMENT image        (alttext)>
+<!ELEMENT alttext      (#PCDATA)>
+<!ATTLIST image
+            name      CDATA #REQUIRED
+            extension CDATA #REQUIRED
+            width     CDATA #REQUIRED
+            height    CDATA #REQUIRED>
+
+<!-- Whitespace in these elements are always preserved -->
+<!ATTLIST example      xml:space (preserve) #FIXED 'preserve'>
+<!ATTLIST smallexample xml:space (preserve) #FIXED 'preserve'>
+<!ATTLIST lisp         xml:space (preserve) #FIXED 'preserve'>
+<!ATTLIST smalllisp    xml:space (preserve) #FIXED 'preserve'>
+<!ATTLIST display      xml:space (preserve) #FIXED 'preserve'>
+<!ATTLIST smalldisplay xml:space (preserve) #FIXED 'preserve'>
+<!ATTLIST format       xml:space (preserve) #FIXED 'preserve'>
+<!ATTLIST smallformat  xml:space (preserve) #FIXED 'preserve'>
+
+<!ELEMENT verbatim     (#PCDATA)>
+<!ATTLIST verbatim     xml:space (preserve) #FIXED 'preserve'>
+
+<!ELEMENT para         (#PCDATA | %Inline.phrase; | %lang;)*>
+<!ATTLIST para
+          role CDATA #IMPLIED>
+
+<!ELEMENT menu (menuentry | detailmenu | para)*>
+<!ELEMENT detailmenu (menuentry | para)*>
+<!ELEMENT menuentry (menunode?, menutitle?, menucomment?)>
+<!ELEMENT menunode (#PCDATA)>
+<!ELEMENT menutitle (#PCDATA)>
+<!ELEMENT menucomment (#PCDATA | %Inline.phrase;)*>
+
+<!-- Floating displays -->
+<!ELEMENT float (floattype, floatpos, (%block;)*,
+                ((caption, shortcaption?) | (shortcaption, caption))?)>
+<!ATTLIST float
+          name CDATA #IMPLIED>
+<!ELEMENT floattype (#PCDATA)>
+<!ELEMENT floatpos (#PCDATA)>
+<!ELEMENT caption (#PCDATA | %Inline.phrase;)*>
+<!ELEMENT shortcaption (#PCDATA | %Inline.phrase;)*>
+<!ELEMENT listoffloats EMPTY>
+<!ATTLIST listoffloats
+          type CDATA #IMPLIED>
+
+<!-- Lists -->
+<!ELEMENT itemize (itemfunction, (item | itemize | enumerate | indexterm)*)>
+<!ELEMENT enumerate (item | itemize | enumerate | indexterm)*>
+<!ATTLIST enumerate
+          first CDATA #IMPLIED>
+
+<!ELEMENT item (%block;)*>
+
+<!ELEMENT itemfunction (#PCDATA | %Inline.phrase;)*>
+
+<!-- Tables -->
+<!ELEMENT table (tableitem | indexterm)+>
+<!ELEMENT tableitem ((tableterm, indexterm*)+, item?)>
+<!ELEMENT tableterm (#PCDATA | %Inline.phrase;)*>
+
+<!ELEMENT multitable (columnfraction*, thead?, tbody)>
+<!ELEMENT columnfraction (#PCDATA)>
+<!ELEMENT thead (row+)>
+<!ELEMENT tbody (row+)>
+<!ELEMENT row (entry*)>
+<!ELEMENT entry (#PCDATA | %Inline.phrase;)*>
+
+<!-- API definitions -->
+<!ELEMENT definition (definitionterm | definitionitem | indexterm)+>
+<!ELEMENT definitionterm (%definition.cmds; | indexterm)+>
+<!ELEMENT definitionitem (%block;)*>
+
+<!ELEMENT defcategory  (#PCDATA | %Inline.phrase;)*>
+<!ELEMENT deffunction  (#PCDATA | %Inline.phrase;)*>
+<!ELEMENT defvariable  (#PCDATA | %Inline.phrase;)*>
+<!ELEMENT defparam     (#PCDATA | %Inline.phrase;)*>
+<!ELEMENT defdelimiter (#PCDATA | %Inline.phrase;)*>
+<!ELEMENT deftype      (#PCDATA | %Inline.phrase;)*>
+<!ELEMENT defparamtype (#PCDATA | %Inline.phrase;)*>
+<!ELEMENT defdatatype  (#PCDATA | %Inline.phrase;)*>
+<!ELEMENT defclass     (#PCDATA | %Inline.phrase;)*>
+<!ELEMENT defclassvar  (#PCDATA | %Inline.phrase;)*>
+<!ELEMENT defoperation (#PCDATA | %Inline.phrase;)*>
+
+<!-- INLINE Elements -->
+
+<!-- options -->
+<!ELEMENT frenchspacing (#PCDATA)> <!-- must be on or off -->
+<!ATTLIST frenchspacing val (%onoff;) 'off'>
+
+<!-- emphasize -->
+<!ELEMENT strong (#PCDATA | %Inline.phrase;)*>
+<!ELEMENT emph   (#PCDATA | %Inline.phrase;)*>
+
+<!-- small caps -->
+<!ELEMENT sc (#PCDATA | %Inline.phrase;)*>
+
+<!-- fonts -->
+<!ELEMENT b  (#PCDATA | %Inline.phrase;)*>
+<!ELEMENT i  (#PCDATA | %Inline.phrase;)*>
+<!ELEMENT r  (#PCDATA | %Inline.phrase;)*>
+<!ELEMENT sansserif   (#PCDATA | %Inline.phrase;)*>
+<!ELEMENT slanted     (#PCDATA | %Inline.phrase;)*>
+<!ELEMENT titlefont   (#PCDATA | %Inline.phrase;)*>
+<!ELEMENT tt (#PCDATA | %Inline.phrase;)*>
+
+<!-- markup -->
+<!ELEMENT code    (#PCDATA | %Inline.phrase;)*>
+<!ELEMENT command (#PCDATA | %Inline.phrase;)*>
+<!ELEMENT env     (#PCDATA | %Inline.phrase;)*>
+<!ELEMENT file    (#PCDATA | %Inline.phrase;)*>
+<!ELEMENT option  (#PCDATA | %Inline.phrase;)*>
+<!ELEMENT samp    (#PCDATA | %Inline.phrase;)*>
+<!ELEMENT dfn     (#PCDATA | %Inline.phrase;)*>
+<!ELEMENT cite    (#PCDATA | %Inline.phrase;)*>
+<!ELEMENT key     (#PCDATA | %Inline.phrase;)*>
+<!ELEMENT kbd     (#PCDATA | %Inline.phrase;)*>
+<!ELEMENT var     (#PCDATA | %Inline.phrase;)*>
+<!ELEMENT url     (#PCDATA | %Inline.phrase;)*>
+
+<!ELEMENT acronym (acronymword, acronymdesc?)>
+<!ELEMENT acronymword (#PCDATA | %Inline.phrase;)*>
+<!ELEMENT acronymdesc (#PCDATA | %Inline.phrase;)*>
+
+<!ELEMENT abbrev (abbrevword, abbrevdesc?)>
+<!ELEMENT abbrevword (#PCDATA | %Inline.phrase;)*>
+<!ELEMENT abbrevdesc (#PCDATA | %Inline.phrase;)*>
+
+<!-- math -->
+<!ELEMENT math    (#PCDATA | %Inline.phrase;)*>
+<!ELEMENT dmn     (#PCDATA | %Inline.phrase;)*>
+
+<!-- reference -->
+<!ELEMENT anchor EMPTY>
+<!ATTLIST anchor
+          name CDATA #IMPLIED>
+
+<!ELEMENT xref (xrefnodename | xrefinfoname | xrefinfofile
+                | xrefprintedname | xrefprinteddesc)*>
+<!ELEMENT xrefnodename    (#PCDATA | %Inline.phrase;)*>
+<!ELEMENT xrefinfoname    (#PCDATA | %Inline.phrase;)*>
+<!ELEMENT xrefinfofile    (#PCDATA | %Inline.phrase;)*>
+<!ELEMENT xrefprintedname (#PCDATA | %Inline.phrase;)*>
+<!ELEMENT xrefprinteddesc (#PCDATA | %Inline.phrase;)*>
+
+<!ELEMENT inforef (inforefnodename | inforefrefname | inforefinfoname)*>
+<!ELEMENT inforefnodename (#PCDATA | %Inline.phrase;)*>
+<!ELEMENT inforefrefname  (#PCDATA | %Inline.phrase;)*>
+<!ELEMENT inforefinfoname (#PCDATA | %Inline.phrase;)*>
+
+<!ELEMENT synindex  EMPTY>
+<!ATTLIST synindex
+          code      (yes|no) 'no'
+          from      NMTOKEN #REQUIRED
+          to        NMTOKEN #REQUIRED>
+<!ELEMENT indexterm (#PCDATA | %Inline.phrase;)*>
+<!ATTLIST indexterm
+          index CDATA #IMPLIED>
+
+<!ELEMENT email (emailaddress, emailname?)>
+<!ELEMENT emailaddress (#PCDATA | %Inline.phrase;)*>
+<!ELEMENT emailname (#PCDATA | %Inline.phrase;)*>
+
+<!ELEMENT uref (urefurl, urefdesc?, urefreplacement?)>
+<!ELEMENT urefurl         (#PCDATA | %Inline.phrase;)*>
+<!ELEMENT urefdesc        (#PCDATA | %Inline.phrase;)*>
+<!ELEMENT urefreplacement (#PCDATA | %Inline.phrase;)*>
+
+<!ELEMENT footnote (para)>
+
+
+<!ELEMENT punct     (#PCDATA)>
+<!ATTLIST punct
+          end-of-sentence (yes|no) #IMPLIED>
+<!ELEMENT logo      (#PCDATA)>
+<!ELEMENT linebreak EMPTY>
+
+<!ENTITY tex        "<logo>TeX</logo>">
+<!ENTITY latex      "<logo>LaTeX</logo>">
+<!ENTITY ellipsis   "&#x2026;">
+<!ENTITY lt         "&#x3c;">
+<!ENTITY gt         "&#x3e;">
+<!ENTITY bullet     "&#x2022;">
+<!ENTITY copyright  "&#xa9;">
+<!ENTITY registered "&#xae;">
+<!ENTITY euro       "&#x20ac;">
+<!ENTITY pounds     "&#xa3;">
+<!ENTITY minus      "&#x2212;">
+<!ENTITY linebreak  "<linebreak/>">
+<!ENTITY space      " ">          <!-- Should become an element. -->
+<!ENTITY dots       "<punct end-of-sentence='no'>&#x2026;</punct>">
+<!ENTITY enddots    "<punct end-of-sentence='yes'>&#x2026;</punct>">
+<!ENTITY amp        "&#x26;">
+<!ENTITY lsquo      "&#x2018;">
+<!ENTITY rsquo      "&#x2019;">
+<!ENTITY sbquo      "&#x201a;">
+<!ENTITY ldquo      "&#x201c;">
+<!ENTITY rdquo      "&#x201d;">
+<!ENTITY bdquo      "&#x201e;">
+<!ENTITY laquo      "&#xab;">
+<!ENTITY raquo      "&#xbb;">
+<!ENTITY lsaquo     "&#x2039;">
+<!ENTITY rsaquo     "&#x203a;">
+<!ENTITY mdash      "&#x2014;">
+<!ENTITY ndash      "&#x2013;">
+<!ENTITY period     "<punct end-of-sentence='no'>.</punct>">
+<!ENTITY eosperiod  "<punct end-of-sentence='yes'>.</punct>">
+<!ENTITY quest      "<punct end-of-sentence='no'>?</punct>">
+<!ENTITY eosquest   "<punct end-of-sentence='yes'>?</punct>">
+<!ENTITY excl       "<punct end-of-sentence='no'>!</punct>">
+<!ENTITY eosexcl    "<punct end-of-sentence='yes'>!</punct>">
+
+<!ENTITY auml "&#xe4;">
+<!ENTITY ouml "&#xf6;">
+<!ENTITY uuml "&#xfc;">
+<!ENTITY Auml "&#xc4;">
+<!ENTITY Ouml "&#xd6;">
+<!ENTITY Uuml "&#xdc;">
+<!ENTITY Euml "&#xcb;">
+<!ENTITY euml "&#xeb;">
+<!ENTITY Iuml "&#xcf;">
+<!ENTITY iuml "&#xef;">
+<!ENTITY yuml "&#xff;">
+<!ENTITY uml  "&#xa8;">
+
+<!ENTITY Aacute "&#xc1;">
+<!ENTITY Eacute "&#xc9;">
+<!ENTITY Iacute "&#xcd;">
+<!ENTITY Oacute "&#xd3;">
+<!ENTITY Uacute "&#xda;">
+<!ENTITY Yacute "&#xdd;">
+<!ENTITY aacute "&#xe1;">
+<!ENTITY eacute "&#xe9;">
+<!ENTITY iacute "&#xed;">
+<!ENTITY oacute "&#xf3;">
+<!ENTITY uacute "&#xfa;">
+<!ENTITY yacute "&#xfd;">
+
+<!ENTITY ccedil "&#xe7;">
+<!ENTITY Ccedil "&#xc7;">
+
+<!ENTITY Acirc "&#xc2;">
+<!ENTITY Ecirc "&#xca;">
+<!ENTITY Icirc "&#xc3;">
+<!ENTITY Ocirc "&#xd4;">
+<!ENTITY Ucirc "&#xdb;">
+<!ENTITY acirc "&#xe2;">
+<!ENTITY ecirc "&#xea;">
+<!ENTITY icirc "&#xee;">
+<!ENTITY ocirc "&#xf4;">
+<!ENTITY ucirc "&#xfb;">
+
+<!ENTITY Agrave "&#xc0;">
+<!ENTITY Egrave "&#xc8;">
+<!ENTITY Igrave "&#xcc;">
+<!ENTITY Ograve "&#xd2;">
+<!ENTITY Ugrave "&#xd9;">
+<!ENTITY agrave "&#xe0;">
+<!ENTITY egrave "&#xe8;">
+<!ENTITY igrave "&#xec;">
+<!ENTITY ograve "&#xf2;">
+<!ENTITY ugrave "&#xf9;">
+
+<!ENTITY Atilde "&#xc3;">
+<!ENTITY Ntilde "&#xd1;">
+<!ENTITY Otilde "&#xd5;">
+<!ENTITY atilde "&#xe3;">
+<!ENTITY ntilde "&#xf1;">
+<!ENTITY otilde "&#xf5;">
+
+<!ENTITY oslash "&#xf8;">
+<!ENTITY Oslash "&#xd8;">
+
+<!ENTITY ordm "&#xba;">
+<!ENTITY ordf "&#xaa;">
+
+<!ENTITY iexcl "&#xa1;">
+<!ENTITY pound "&#xa3;">
+<!ENTITY iquest "&#xbf;">
+<!ENTITY AElig "&#xc6;">
+<!ENTITY aelig "&#xe6;">
+<!ENTITY OElig "&#x152;">
+<!ENTITY oelig "&#x153;">
+<!ENTITY Aring "&#xc5;">
+<!ENTITY aring "&#xe5;">
+<!ENTITY szlig "&#xdf;">
+
+<!ENTITY rarr "&#x2192;">
+<!ENTITY rArr "&#x21d2;">
+
+<!ENTITY macr "&#xaf;">
+
+
+<!-- fixxme: not yet classified -->
+
+<!ELEMENT sp (#PCDATA)>
+<!ATTLIST sp
+          lines CDATA #IMPLIED>
+<!ELEMENT printindex (#PCDATA)>
+
Index: Daodan/MinGW/msys/1.0/share/texinfo/texinfo.xsl
===================================================================
--- Daodan/MinGW/msys/1.0/share/texinfo/texinfo.xsl	(revision 1046)
+++ Daodan/MinGW/msys/1.0/share/texinfo/texinfo.xsl	(revision 1046)
@@ -0,0 +1,242 @@
+<?xml version='1.0'?>
+<!-- $Id: texinfo.xsl,v 1.1 2004/04/11 17:56:47 karl Exp $ -->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+                version="1.0">
+
+<xsl:output method="html" indent="yes"/>
+
+<!-- root rule -->
+<xsl:template match="/">
+   <html>
+    <head><title>
+     <xsl:apply-templates select="TEXINFO/SETTITLE" mode="head"/>
+    </title></head>
+     <body bgcolor="#FFFFFF"><xsl:apply-templates/>
+</body></html>
+</xsl:template>
+
+
+<xsl:template match="TEXINFO">
+  <xsl:apply-templates/>
+</xsl:template>
+
+
+<xsl:template match="TEXINFO/SETFILENAME">
+</xsl:template>
+
+<xsl:template match="TEXINFO/SETTITLE" mode="head">
+  <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="TEXINFO/SETTITLE">
+  <h1><xsl:apply-templates/></h1>
+</xsl:template>
+
+
+<xsl:template match="TEXINFO/DIRCATEGORY">
+</xsl:template>
+
+<xsl:template match="//PARA">
+  <p><xsl:apply-templates/></p>
+</xsl:template>
+
+<xsl:template match="//EMPH">
+  <i><xsl:apply-templates/></i>
+</xsl:template>
+
+<!-- The node -->
+<xsl:template match="TEXINFO/NODE">
+ <hr/>
+ <p>
+ <xsl:apply-templates select="NODENAME" mode="select"/>
+ <xsl:apply-templates select="NODEPREV" mode="select"/>
+ <xsl:apply-templates select="NODEUP" mode="select"/>
+ <xsl:apply-templates select="NODENEXT" mode="select"/>
+ <xsl:apply-templates/>
+  <h2>Footnotes</h2>
+  <ol>
+  <xsl:apply-templates select=".//FOOTNOTE" mode="footnote"/>
+   </ol>
+ </p>
+</xsl:template>
+
+<xsl:template match="TEXINFO/NODE/NODENAME" mode="select">
+<h2>
+ <a>
+ <xsl:attribute name="name">
+  <xsl:apply-templates/>
+ </xsl:attribute>
+ <xsl:apply-templates/>
+ </a>
+</h2>
+</xsl:template>
+
+<xsl:template match="TEXINFO/NODE/NODENAME"/>
+
+
+<xsl:template match="TEXINFO/NODE/NODEPREV" mode="select">
+ [ <b>Previous: </b>
+ <a>
+ <xsl:attribute name="href">
+  <xsl:text>#</xsl:text>
+  <xsl:apply-templates/>
+ </xsl:attribute>
+ <xsl:apply-templates/>
+ </a> ]
+</xsl:template>
+
+<xsl:template match="TEXINFO/NODE/NODEPREV"/>
+	
+<xsl:template match="TEXINFO/NODE/NODEUP" mode="select">
+ [ <b>Up: </b>
+ <a>
+ <xsl:attribute name="href">
+  <xsl:text>#</xsl:text>
+  <xsl:apply-templates/>
+ </xsl:attribute>
+ <xsl:apply-templates/>
+ </a> ]
+</xsl:template>
+
+<xsl:template match="TEXINFO/NODE/NODEUP"/>
+
+<xsl:template match="TEXINFO/NODE/NODENEXT" mode="select">
+ [ <b>Next: </b>
+ <a>
+ <xsl:attribute name="href">
+  <xsl:text>#</xsl:text>
+  <xsl:apply-templates/>
+ </xsl:attribute>
+ <xsl:apply-templates/>
+ </a> ]
+</xsl:template>
+
+<xsl:template match="TEXINFO/NODE/NODENEXT"/>
+
+<!-- Menu -->
+<xsl:template match="//MENU">
+ <h3>Menu</h3>
+ <xsl:apply-templates/>
+</xsl:template> 
+
+<xsl:template match="//MENU/MENUENTRY">
+ <a>
+ <xsl:attribute name="href">
+  <xsl:text>#</xsl:text>
+  <xsl:apply-templates select="MENUNODE"/>
+ </xsl:attribute>
+ <xsl:apply-templates select="MENUTITLE"/>
+ </a>: 
+ <xsl:apply-templates select="MENUCOMMENT"/>
+ <br/>
+</xsl:template>
+
+<xsl:template match="//MENU/MENUENTRY/MENUNODE">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="//MENU/MENUENTRY/MENUTITLE">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="//MENU/MENUENTRY/MENUCOMMENT">
+ <xsl:apply-templates mode="menucomment"/>
+</xsl:template>
+
+<xsl:template match="PARA" mode="menucomment">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="//PARA">
+ <p><xsl:apply-templates/></p>
+</xsl:template>
+
+<!-- LISTS -->
+<xsl:template match="//ITEMIZE">
+ <ul>
+  <xsl:apply-templates/>
+ </ul>
+</xsl:template>
+
+<xsl:template match="//ITEMIZE/ITEM">
+ <li>
+  <xsl:apply-templates/>
+ </li>
+</xsl:template>
+
+<xsl:template match="//ENUMERATE">
+ <ol>
+  <xsl:apply-templates/>
+ </ol>
+</xsl:template>
+
+<xsl:template match="//ENUMERATE/ITEM">
+ <li>
+  <xsl:apply-templates/>
+ </li>
+</xsl:template>
+
+<!-- INLINE -->
+<xsl:template match="//CODE">
+ <tt>
+  <xsl:apply-templates/>
+ </tt>
+</xsl:template>
+
+<xsl:template match="//DFN">
+ <i><b>
+  <xsl:apply-templates/>
+ </b></i>
+</xsl:template>
+
+<xsl:template match="//STRONG">
+ <b>
+  <xsl:apply-templates/>
+ </b>
+</xsl:template>
+
+<xsl:template match="//CENTER">
+ <center>
+  <xsl:apply-templates/>
+ </center>
+</xsl:template>
+
+<xsl:template match="//VAR">
+ <i>
+  <xsl:apply-templates/>
+ </i>
+</xsl:template>
+
+<xsl:template match="//KBD">
+ <tt>
+  <xsl:apply-templates/>
+ </tt>
+</xsl:template>
+
+<xsl:template match="//KEY">
+ <b>
+  <xsl:apply-templates/>
+ </b>
+</xsl:template>
+
+<!-- BLOCKS -->
+<xsl:template match="//DISPLAY">
+ <pre>
+  <xsl:apply-templates/>
+ </pre>
+</xsl:template>
+
+
+<!-- INDEX -->
+<xsl:template match="//INDEXTERM">
+</xsl:template>
+
+<!-- FOOTNOTE -->
+<xsl:template match="//FOOTNOTE">
+</xsl:template>
+
+<xsl:template match="//FOOTNOTE" mode="footnote">
+ <li><xsl:apply-templates/></li>
+</xsl:template>
+
+</xsl:stylesheet>
Index: Daodan/MinGW/share/doc/gcc/5.3.0/COPYING
===================================================================
--- Daodan/MinGW/share/doc/gcc/5.3.0/COPYING	(revision 1046)
+++ Daodan/MinGW/share/doc/gcc/5.3.0/COPYING	(revision 1046)
@@ -0,0 +1,345 @@
+		    GNU GENERAL PUBLIC LICENSE
+		       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+     51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+
+		    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+			    NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+
+	    How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year  name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.
Index: Daodan/MinGW/share/doc/gcc/5.3.0/COPYING.LIB
===================================================================
--- Daodan/MinGW/share/doc/gcc/5.3.0/COPYING.LIB	(revision 1046)
+++ Daodan/MinGW/share/doc/gcc/5.3.0/COPYING.LIB	(revision 1046)
@@ -0,0 +1,519 @@
+
+                  GNU LESSER GENERAL PUBLIC LICENSE
+                       Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+	51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL.  It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+                            Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it.  You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations
+below.
+
+  When we speak of free software, we are referring to freedom of use,
+not price.  Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+  To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights.  These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  To protect each distributor, we want to make it very clear that
+there is no warranty for the free library.  Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+
+  Finally, software patents pose a constant threat to the existence of
+any free program.  We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder.  Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+  Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License.  This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License.  We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+  When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library.  The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom.  The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+  We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License.  It also provides other free software developers Less
+of an advantage over competing non-free programs.  These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries.  However, the Lesser license provides advantages in certain
+special circumstances.
+
+  For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it
+becomes a de-facto standard.  To achieve this, non-free programs must
+be allowed to use the library.  A more frequent case is that a free
+library does the same job as widely used non-free libraries.  In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+  In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software.  For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+  Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+
+                  GNU LESSER GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control
+compilation and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+
+
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+
+  6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Use a suitable shared library mechanism for linking with the
+    Library.  A suitable mechanism is one that (1) uses at run time a
+    copy of the library already present on the user's computer system,
+    rather than copying library functions into the executable, and (2)
+    will operate properly with a modified version of the library, if
+    the user installs one, as long as the modified version is
+    interface-compatible with the version that the work was made with.
+
+    c) Accompany the work with a written offer, valid for at least
+    three years, to give the same user the materials specified in
+    Subsection 6a, above, for a charge no more than the cost of
+    performing this distribution.
+
+    d) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    e) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply, and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License
+may add an explicit geographical distribution limitation excluding those
+countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+                            NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+                     END OF TERMS AND CONDITIONS
+
+
+           How to Apply These Terms to Your New Libraries
+
+  If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change.  You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms
+of the ordinary General Public License).
+
+  To apply these terms, attach the following notices to the library.
+It is safest to attach them to the start of each source file to most
+effectively convey the exclusion of warranty; and each file should
+have at least the "copyright" line and a pointer to where the full
+notice is found.
+
+
+    <one line to give the library's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2.1 of the License, or (at your option) any later version.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or
+your school, if any, to sign a "copyright disclaimer" for the library,
+if necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the
+  library `Frob' (a library for tweaking knobs) written by James
+  Random Hacker.
+
+  <signature of Ty Coon>, 1 April 1990
+  Ty Coon, President of Vice
+
+That's all there is to it!
+
+
Index: Daodan/MinGW/share/doc/gcc/5.3.0/COPYING.RUNTIME
===================================================================
--- Daodan/MinGW/share/doc/gcc/5.3.0/COPYING.RUNTIME	(revision 1046)
+++ Daodan/MinGW/share/doc/gcc/5.3.0/COPYING.RUNTIME	(revision 1046)
@@ -0,0 +1,73 @@
+GCC RUNTIME LIBRARY EXCEPTION
+
+Version 3.1, 31 March 2009
+
+Copyright (C) 2009 Free Software Foundation, Inc. <http://fsf.org/>
+
+Everyone is permitted to copy and distribute verbatim copies of this
+license document, but changing it is not allowed.
+
+This GCC Runtime Library Exception ("Exception") is an additional
+permission under section 7 of the GNU General Public License, version
+3 ("GPLv3"). It applies to a given file (the "Runtime Library") that
+bears a notice placed by the copyright holder of the file stating that
+the file is governed by GPLv3 along with this Exception.
+
+When you use GCC to compile a program, GCC may combine portions of
+certain GCC header files and runtime libraries with the compiled
+program. The purpose of this Exception is to allow compilation of
+non-GPL (including proprietary) programs to use, in this way, the
+header files and runtime libraries covered by this Exception.
+
+0. Definitions.
+
+A file is an "Independent Module" if it either requires the Runtime
+Library for execution after a Compilation Process, or makes use of an
+interface provided by the Runtime Library, but is not otherwise based
+on the Runtime Library.
+
+"GCC" means a version of the GNU Compiler Collection, with or without
+modifications, governed by version 3 (or a specified later version) of
+the GNU General Public License (GPL) with the option of using any
+subsequent versions published by the FSF.
+
+"GPL-compatible Software" is software whose conditions of propagation,
+modification and use would permit combination with GCC in accord with
+the license of GCC.
+
+"Target Code" refers to output from any compiler for a real or virtual
+target processor architecture, in executable form or suitable for
+input to an assembler, loader, linker and/or execution
+phase. Notwithstanding that, Target Code does not include data in any
+format that is used as a compiler intermediate representation, or used
+for producing a compiler intermediate representation.
+
+The "Compilation Process" transforms code entirely represented in
+non-intermediate languages designed for human-written code, and/or in
+Java Virtual Machine byte code, into Target Code. Thus, for example,
+use of source code generators and preprocessors need not be considered
+part of the Compilation Process, since the Compilation Process can be
+understood as starting with the output of the generators or
+preprocessors.
+
+A Compilation Process is "Eligible" if it is done using GCC, alone or
+with other GPL-compatible software, or if it is done without using any
+work based on GCC. For example, using non-GPL-compatible Software to
+optimize any GCC intermediate representations would not qualify as an
+Eligible Compilation Process.
+
+1. Grant of Additional Permission.
+
+You have permission to propagate a work of Target Code formed by
+combining the Runtime Library with Independent Modules, even if such
+propagation would otherwise violate the terms of GPLv3, provided that
+all Target Code was generated by Eligible Compilation Processes. You
+may then convey such a combination under terms of your choice,
+consistent with the licensing of the Independent Modules.
+
+2. No Weakening of GCC Copyleft.
+
+The availability of this Exception does not imply any general
+presumption that third-party software is unaffected by the copyleft
+requirements of the license of GCC.
+
Index: Daodan/MinGW/share/doc/gcc/5.3.0/COPYING3
===================================================================
--- Daodan/MinGW/share/doc/gcc/5.3.0/COPYING3	(revision 1046)
+++ Daodan/MinGW/share/doc/gcc/5.3.0/COPYING3	(revision 1046)
@@ -0,0 +1,674 @@
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+  The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works.  By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.  We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors.  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+  To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights.  Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received.  You must make sure that they, too, receive
+or can get the source code.  And you must show them these terms so they
+know their rights.
+
+  Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+  For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software.  For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+  Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so.  This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software.  The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable.  Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products.  If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+  Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary.  To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                       TERMS AND CONDITIONS
+
+  0. Definitions.
+
+  "This License" refers to version 3 of the GNU General Public License.
+
+  "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+  "The Program" refers to any copyrightable work licensed under this
+License.  Each licensee is addressed as "you".  "Licensees" and
+"recipients" may be individuals or organizations.
+
+  To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy.  The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+  A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+  To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy.  Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+  To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies.  Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+  An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License.  If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+  1. Source Code.
+
+  The "source code" for a work means the preferred form of the work
+for making modifications to it.  "Object code" means any non-source
+form of a work.
+
+  A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+  The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form.  A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+  The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities.  However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work.  For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+  The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+  The Corresponding Source for a work in source code form is that
+same work.
+
+  2. Basic Permissions.
+
+  All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met.  This License explicitly affirms your unlimited
+permission to run the unmodified Program.  The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work.  This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+  You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force.  You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright.  Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+  Conveying under any other circumstances is permitted solely under
+the conditions stated below.  Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+  No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+  When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+  4. Conveying Verbatim Copies.
+
+  You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+  You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+  5. Conveying Modified Source Versions.
+
+  You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+    a) The work must carry prominent notices stating that you modified
+    it, and giving a relevant date.
+
+    b) The work must carry prominent notices stating that it is
+    released under this License and any conditions added under section
+    7.  This requirement modifies the requirement in section 4 to
+    "keep intact all notices".
+
+    c) You must license the entire work, as a whole, under this
+    License to anyone who comes into possession of a copy.  This
+    License will therefore apply, along with any applicable section 7
+    additional terms, to the whole of the work, and all its parts,
+    regardless of how they are packaged.  This License gives no
+    permission to license the work in any other way, but it does not
+    invalidate such permission if you have separately received it.
+
+    d) If the work has interactive user interfaces, each must display
+    Appropriate Legal Notices; however, if the Program has interactive
+    interfaces that do not display Appropriate Legal Notices, your
+    work need not make them do so.
+
+  A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit.  Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+  6. Conveying Non-Source Forms.
+
+  You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+    a) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by the
+    Corresponding Source fixed on a durable physical medium
+    customarily used for software interchange.
+
+    b) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by a
+    written offer, valid for at least three years and valid for as
+    long as you offer spare parts or customer support for that product
+    model, to give anyone who possesses the object code either (1) a
+    copy of the Corresponding Source for all the software in the
+    product that is covered by this License, on a durable physical
+    medium customarily used for software interchange, for a price no
+    more than your reasonable cost of physically performing this
+    conveying of source, or (2) access to copy the
+    Corresponding Source from a network server at no charge.
+
+    c) Convey individual copies of the object code with a copy of the
+    written offer to provide the Corresponding Source.  This
+    alternative is allowed only occasionally and noncommercially, and
+    only if you received the object code with such an offer, in accord
+    with subsection 6b.
+
+    d) Convey the object code by offering access from a designated
+    place (gratis or for a charge), and offer equivalent access to the
+    Corresponding Source in the same way through the same place at no
+    further charge.  You need not require recipients to copy the
+    Corresponding Source along with the object code.  If the place to
+    copy the object code is a network server, the Corresponding Source
+    may be on a different server (operated by you or a third party)
+    that supports equivalent copying facilities, provided you maintain
+    clear directions next to the object code saying where to find the
+    Corresponding Source.  Regardless of what server hosts the
+    Corresponding Source, you remain obligated to ensure that it is
+    available for as long as needed to satisfy these requirements.
+
+    e) Convey the object code using peer-to-peer transmission, provided
+    you inform other peers where the object code and Corresponding
+    Source of the work are being offered to the general public at no
+    charge under subsection 6d.
+
+  A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+  A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling.  In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage.  For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product.  A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+  "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source.  The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+  If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information.  But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+  The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed.  Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+  Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+  7. Additional Terms.
+
+  "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law.  If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+  When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it.  (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.)  You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+  Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+    a) Disclaiming warranty or limiting liability differently from the
+    terms of sections 15 and 16 of this License; or
+
+    b) Requiring preservation of specified reasonable legal notices or
+    author attributions in that material or in the Appropriate Legal
+    Notices displayed by works containing it; or
+
+    c) Prohibiting misrepresentation of the origin of that material, or
+    requiring that modified versions of such material be marked in
+    reasonable ways as different from the original version; or
+
+    d) Limiting the use for publicity purposes of names of licensors or
+    authors of the material; or
+
+    e) Declining to grant rights under trademark law for use of some
+    trade names, trademarks, or service marks; or
+
+    f) Requiring indemnification of licensors and authors of that
+    material by anyone who conveys the material (or modified versions of
+    it) with contractual assumptions of liability to the recipient, for
+    any liability that these contractual assumptions directly impose on
+    those licensors and authors.
+
+  All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10.  If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term.  If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+  If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+  Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+  8. Termination.
+
+  You may not propagate or modify a covered work except as expressly
+provided under this License.  Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+  However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+  Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+  Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+  9. Acceptance Not Required for Having Copies.
+
+  You are not required to accept this License in order to receive or
+run a copy of the Program.  Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance.  However,
+nothing other than this License grants you permission to propagate or
+modify any covered work.  These actions infringe copyright if you do
+not accept this License.  Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+  10. Automatic Licensing of Downstream Recipients.
+
+  Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License.  You are not responsible
+for enforcing compliance by third parties with this License.
+
+  An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations.  If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+  You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License.  For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+  11. Patents.
+
+  A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based.  The
+work thus licensed is called the contributor's "contributor version".
+
+  A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version.  For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+  Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+  In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement).  To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+  If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients.  "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+  If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+  A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License.  You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+  Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+  12. No Surrender of Others' Freedom.
+
+  If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all.  For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+  13. Use with the GNU Affero General Public License.
+
+  Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work.  The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+  14. Revised Versions of this License.
+
+  The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+  Each version is given a distinguishing version number.  If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation.  If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+  If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+  Later license versions may give you additional or different
+permissions.  However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+  15. Disclaimer of Warranty.
+
+  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. Limitation of Liability.
+
+  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+  17. Interpretation of Sections 15 and 16.
+
+  If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+                     END OF TERMS AND CONDITIONS
+
+            How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+  If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+    <program>  Copyright (C) <year>  <name of author>
+    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+  You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+  The GNU General Public License does not permit incorporating your program
+into proprietary programs.  If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.  But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.
Index: Daodan/MinGW/share/doc/gcc/5.3.0/COPYING3.LIB
===================================================================
--- Daodan/MinGW/share/doc/gcc/5.3.0/COPYING3.LIB	(revision 1046)
+++ Daodan/MinGW/share/doc/gcc/5.3.0/COPYING3.LIB	(revision 1046)
@@ -0,0 +1,165 @@
+		   GNU LESSER GENERAL PUBLIC LICENSE
+                       Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+
+  This version of the GNU Lesser General Public License incorporates
+the terms and conditions of version 3 of the GNU General Public
+License, supplemented by the additional permissions listed below.
+
+  0. Additional Definitions. 
+
+  As used herein, "this License" refers to version 3 of the GNU Lesser
+General Public License, and the "GNU GPL" refers to version 3 of the GNU
+General Public License.
+
+  "The Library" refers to a covered work governed by this License,
+other than an Application or a Combined Work as defined below.
+
+  An "Application" is any work that makes use of an interface provided
+by the Library, but which is not otherwise based on the Library.
+Defining a subclass of a class defined by the Library is deemed a mode
+of using an interface provided by the Library.
+
+  A "Combined Work" is a work produced by combining or linking an
+Application with the Library.  The particular version of the Library
+with which the Combined Work was made is also called the "Linked
+Version".
+
+  The "Minimal Corresponding Source" for a Combined Work means the
+Corresponding Source for the Combined Work, excluding any source code
+for portions of the Combined Work that, considered in isolation, are
+based on the Application, and not on the Linked Version.
+
+  The "Corresponding Application Code" for a Combined Work means the
+object code and/or source code for the Application, including any data
+and utility programs needed for reproducing the Combined Work from the
+Application, but excluding the System Libraries of the Combined Work.
+
+  1. Exception to Section 3 of the GNU GPL.
+
+  You may convey a covered work under sections 3 and 4 of this License
+without being bound by section 3 of the GNU GPL.
+
+  2. Conveying Modified Versions.
+
+  If you modify a copy of the Library, and, in your modifications, a
+facility refers to a function or data to be supplied by an Application
+that uses the facility (other than as an argument passed when the
+facility is invoked), then you may convey a copy of the modified
+version:
+
+   a) under this License, provided that you make a good faith effort to
+   ensure that, in the event an Application does not supply the
+   function or data, the facility still operates, and performs
+   whatever part of its purpose remains meaningful, or
+
+   b) under the GNU GPL, with none of the additional permissions of
+   this License applicable to that copy.
+
+  3. Object Code Incorporating Material from Library Header Files.
+
+  The object code form of an Application may incorporate material from
+a header file that is part of the Library.  You may convey such object
+code under terms of your choice, provided that, if the incorporated
+material is not limited to numerical parameters, data structure
+layouts and accessors, or small macros, inline functions and templates
+(ten or fewer lines in length), you do both of the following:
+
+   a) Give prominent notice with each copy of the object code that the
+   Library is used in it and that the Library and its use are
+   covered by this License.
+
+   b) Accompany the object code with a copy of the GNU GPL and this license
+   document.
+
+  4. Combined Works.
+
+  You may convey a Combined Work under terms of your choice that,
+taken together, effectively do not restrict modification of the
+portions of the Library contained in the Combined Work and reverse
+engineering for debugging such modifications, if you also do each of
+the following:
+
+   a) Give prominent notice with each copy of the Combined Work that
+   the Library is used in it and that the Library and its use are
+   covered by this License.
+
+   b) Accompany the Combined Work with a copy of the GNU GPL and this license
+   document.
+
+   c) For a Combined Work that displays copyright notices during
+   execution, include the copyright notice for the Library among
+   these notices, as well as a reference directing the user to the
+   copies of the GNU GPL and this license document.
+
+   d) Do one of the following:
+
+       0) Convey the Minimal Corresponding Source under the terms of this
+       License, and the Corresponding Application Code in a form
+       suitable for, and under terms that permit, the user to
+       recombine or relink the Application with a modified version of
+       the Linked Version to produce a modified Combined Work, in the
+       manner specified by section 6 of the GNU GPL for conveying
+       Corresponding Source.
+
+       1) Use a suitable shared library mechanism for linking with the
+       Library.  A suitable mechanism is one that (a) uses at run time
+       a copy of the Library already present on the user's computer
+       system, and (b) will operate properly with a modified version
+       of the Library that is interface-compatible with the Linked
+       Version. 
+
+   e) Provide Installation Information, but only if you would otherwise
+   be required to provide such information under section 6 of the
+   GNU GPL, and only to the extent that such information is
+   necessary to install and execute a modified version of the
+   Combined Work produced by recombining or relinking the
+   Application with a modified version of the Linked Version. (If
+   you use option 4d0, the Installation Information must accompany
+   the Minimal Corresponding Source and Corresponding Application
+   Code. If you use option 4d1, you must provide the Installation
+   Information in the manner specified by section 6 of the GNU GPL
+   for conveying Corresponding Source.)
+
+  5. Combined Libraries.
+
+  You may place library facilities that are a work based on the
+Library side by side in a single library together with other library
+facilities that are not Applications and are not covered by this
+License, and convey such a combined library under terms of your
+choice, if you do both of the following:
+
+   a) Accompany the combined library with a copy of the same work based
+   on the Library, uncombined with any other library facilities,
+   conveyed under the terms of this License.
+
+   b) Give prominent notice with the combined library that part of it
+   is a work based on the Library, and explaining where to find the
+   accompanying uncombined form of the same work.
+
+  6. Revised Versions of the GNU Lesser General Public License.
+
+  The Free Software Foundation may publish revised and/or new versions
+of the GNU Lesser General Public License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns.
+
+  Each version is given a distinguishing version number. If the
+Library as you received it specifies that a certain numbered version
+of the GNU Lesser General Public License "or any later version"
+applies to it, you have the option of following the terms and
+conditions either of that published version or of any later version
+published by the Free Software Foundation. If the Library as you
+received it does not specify a version number of the GNU Lesser
+General Public License, you may choose any version of the GNU Lesser
+General Public License ever published by the Free Software Foundation.
+
+  If the Library as you received it specifies that a proxy can decide
+whether future versions of the GNU Lesser General Public License shall
+apply, that proxy's public statement of acceptance of any version is
+permanent authorization for you to choose that version for the
+Library.
Index: Daodan/MinGW/share/doc/gcc/5.3.0/zlib/LICENSE_1_0.txt
===================================================================
--- Daodan/MinGW/share/doc/gcc/5.3.0/zlib/LICENSE_1_0.txt	(revision 1046)
+++ Daodan/MinGW/share/doc/gcc/5.3.0/zlib/LICENSE_1_0.txt	(revision 1046)
@@ -0,0 +1,23 @@
+Boost Software License - Version 1.0 - August 17th, 2003
+
+Permission is hereby granted, free of charge, to any person or organization
+obtaining a copy of the software and accompanying documentation covered by
+this license (the "Software") to use, reproduce, display, distribute,
+execute, and transmit the Software, and to prepare derivative works of the
+Software, and to permit third-parties to whom the Software is furnished to
+do so, all subject to the following:
+
+The copyright notices in the Software and this entire statement, including
+the above license grant, this restriction and the following disclaimer,
+must be included in all copies of the Software, in whole or in part, and
+all derivative works of the Software, unless such copies or derivative
+works are solely in the form of machine-executable object code generated by
+a source language processor.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
+SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
+FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
Index: Daodan/MinGW/share/doc/mingw-get/COPYING
===================================================================
--- Daodan/MinGW/share/doc/mingw-get/COPYING	(revision 1046)
+++ Daodan/MinGW/share/doc/mingw-get/COPYING	(revision 1046)
@@ -0,0 +1,674 @@
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+  The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works.  By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.  We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors.  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+  To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights.  Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received.  You must make sure that they, too, receive
+or can get the source code.  And you must show them these terms so they
+know their rights.
+
+  Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+  For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software.  For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+  Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so.  This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software.  The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable.  Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products.  If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+  Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary.  To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                       TERMS AND CONDITIONS
+
+  0. Definitions.
+
+  "This License" refers to version 3 of the GNU General Public License.
+
+  "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+  "The Program" refers to any copyrightable work licensed under this
+License.  Each licensee is addressed as "you".  "Licensees" and
+"recipients" may be individuals or organizations.
+
+  To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy.  The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+  A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+  To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy.  Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+  To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies.  Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+  An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License.  If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+  1. Source Code.
+
+  The "source code" for a work means the preferred form of the work
+for making modifications to it.  "Object code" means any non-source
+form of a work.
+
+  A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+  The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form.  A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+  The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities.  However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work.  For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+  The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+  The Corresponding Source for a work in source code form is that
+same work.
+
+  2. Basic Permissions.
+
+  All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met.  This License explicitly affirms your unlimited
+permission to run the unmodified Program.  The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work.  This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+  You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force.  You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright.  Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+  Conveying under any other circumstances is permitted solely under
+the conditions stated below.  Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+  No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+  When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+  4. Conveying Verbatim Copies.
+
+  You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+  You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+  5. Conveying Modified Source Versions.
+
+  You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+    a) The work must carry prominent notices stating that you modified
+    it, and giving a relevant date.
+
+    b) The work must carry prominent notices stating that it is
+    released under this License and any conditions added under section
+    7.  This requirement modifies the requirement in section 4 to
+    "keep intact all notices".
+
+    c) You must license the entire work, as a whole, under this
+    License to anyone who comes into possession of a copy.  This
+    License will therefore apply, along with any applicable section 7
+    additional terms, to the whole of the work, and all its parts,
+    regardless of how they are packaged.  This License gives no
+    permission to license the work in any other way, but it does not
+    invalidate such permission if you have separately received it.
+
+    d) If the work has interactive user interfaces, each must display
+    Appropriate Legal Notices; however, if the Program has interactive
+    interfaces that do not display Appropriate Legal Notices, your
+    work need not make them do so.
+
+  A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit.  Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+  6. Conveying Non-Source Forms.
+
+  You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+    a) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by the
+    Corresponding Source fixed on a durable physical medium
+    customarily used for software interchange.
+
+    b) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by a
+    written offer, valid for at least three years and valid for as
+    long as you offer spare parts or customer support for that product
+    model, to give anyone who possesses the object code either (1) a
+    copy of the Corresponding Source for all the software in the
+    product that is covered by this License, on a durable physical
+    medium customarily used for software interchange, for a price no
+    more than your reasonable cost of physically performing this
+    conveying of source, or (2) access to copy the
+    Corresponding Source from a network server at no charge.
+
+    c) Convey individual copies of the object code with a copy of the
+    written offer to provide the Corresponding Source.  This
+    alternative is allowed only occasionally and noncommercially, and
+    only if you received the object code with such an offer, in accord
+    with subsection 6b.
+
+    d) Convey the object code by offering access from a designated
+    place (gratis or for a charge), and offer equivalent access to the
+    Corresponding Source in the same way through the same place at no
+    further charge.  You need not require recipients to copy the
+    Corresponding Source along with the object code.  If the place to
+    copy the object code is a network server, the Corresponding Source
+    may be on a different server (operated by you or a third party)
+    that supports equivalent copying facilities, provided you maintain
+    clear directions next to the object code saying where to find the
+    Corresponding Source.  Regardless of what server hosts the
+    Corresponding Source, you remain obligated to ensure that it is
+    available for as long as needed to satisfy these requirements.
+
+    e) Convey the object code using peer-to-peer transmission, provided
+    you inform other peers where the object code and Corresponding
+    Source of the work are being offered to the general public at no
+    charge under subsection 6d.
+
+  A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+  A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling.  In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage.  For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product.  A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+  "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source.  The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+  If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information.  But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+  The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed.  Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+  Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+  7. Additional Terms.
+
+  "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law.  If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+  When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it.  (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.)  You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+  Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+    a) Disclaiming warranty or limiting liability differently from the
+    terms of sections 15 and 16 of this License; or
+
+    b) Requiring preservation of specified reasonable legal notices or
+    author attributions in that material or in the Appropriate Legal
+    Notices displayed by works containing it; or
+
+    c) Prohibiting misrepresentation of the origin of that material, or
+    requiring that modified versions of such material be marked in
+    reasonable ways as different from the original version; or
+
+    d) Limiting the use for publicity purposes of names of licensors or
+    authors of the material; or
+
+    e) Declining to grant rights under trademark law for use of some
+    trade names, trademarks, or service marks; or
+
+    f) Requiring indemnification of licensors and authors of that
+    material by anyone who conveys the material (or modified versions of
+    it) with contractual assumptions of liability to the recipient, for
+    any liability that these contractual assumptions directly impose on
+    those licensors and authors.
+
+  All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10.  If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term.  If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+  If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+  Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+  8. Termination.
+
+  You may not propagate or modify a covered work except as expressly
+provided under this License.  Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+  However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+  Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+  Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+  9. Acceptance Not Required for Having Copies.
+
+  You are not required to accept this License in order to receive or
+run a copy of the Program.  Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance.  However,
+nothing other than this License grants you permission to propagate or
+modify any covered work.  These actions infringe copyright if you do
+not accept this License.  Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+  10. Automatic Licensing of Downstream Recipients.
+
+  Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License.  You are not responsible
+for enforcing compliance by third parties with this License.
+
+  An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations.  If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+  You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License.  For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+  11. Patents.
+
+  A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based.  The
+work thus licensed is called the contributor's "contributor version".
+
+  A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version.  For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+  Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+  In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement).  To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+  If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients.  "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+  If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+  A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License.  You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+  Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+  12. No Surrender of Others' Freedom.
+
+  If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all.  For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+  13. Use with the GNU Affero General Public License.
+
+  Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work.  The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+  14. Revised Versions of this License.
+
+  The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+  Each version is given a distinguishing version number.  If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation.  If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+  If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+  Later license versions may give you additional or different
+permissions.  However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+  15. Disclaimer of Warranty.
+
+  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. Limitation of Liability.
+
+  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+  17. Interpretation of Sections 15 and 16.
+
+  If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+                     END OF TERMS AND CONDITIONS
+
+            How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+  If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+    <program>  Copyright (C) <year>  <name of author>
+    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+  You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+  The GNU General Public License does not permit incorporating your program
+into proprietary programs.  If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.  But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.
Index: Daodan/MinGW/share/doc/mingw-get/README
===================================================================
--- Daodan/MinGW/share/doc/mingw-get/README	(revision 1046)
+++ Daodan/MinGW/share/doc/mingw-get/README	(revision 1046)
@@ -0,0 +1,54 @@
+MinGW Package Download and Installation Tool
+============================================
+
+$Id: README.in,v 15e228fcee93 2013/09/04 15:45:38 keithmarshall $
+
+Description
+-----------
+
+mingw-get  is a tool to assist users in the management of MinGW and MSYS
+software installations.  Configured via an online XML database, which is
+managed  by the project maintainers, it offers a choice of graphical and
+command line driven user interfaces facilitating selective download  and
+installation of packages provided by the project.
+
+The   XML  database  provides  maintainers  with  a  mechanism  for  the
+specification of inter-package dependencies; this permits  configuration
+of  any  package,  such that the end user may elect to install just that
+specific package, leaving mingw-get to ensure that all dependencies will
+be automatically satisfied at installation time.
+
+
+Licensing Terms
+---------------
+
+mingw-get  is  free software.  Permission is granted to copy, modify and
+redistribute this software, under the  provisions  of  the  GNU  General
+Public  License,  Version 3, (or, at your option, any later version), as
+published by the Free Software Foundation; see the file  COPYING,  which
+is distributed with the mingw-get-lic package, and with the source code,
+for licensing details.
+
+Note, in particular, that mingw-get is provided  "as is",  in  the  hope
+that  it may prove useful, but WITHOUT WARRANTY OF ANY KIND; not even an
+implied WARRANTY OF MERCHANTABILITY, nor of FITNESS FOR  ANY  PARTICULAR
+PURPOSE.   Under no circumstances will the author, or the MinGW Project,
+accept liability for any damages, however caused, arising from  the  use
+of this software.
+
+
+Further Information
+-------------------
+
+For  development history, and details of features included in successive
+releases of mingw-get, please refer to the NEWS file.
+
+For installation and configuration instructions, see the file INSTALL.
+
+
+Reporting Bugs
+--------------
+
+Please file bug reports as directed at http://mingw.org/Reporting_Bugs
+
+$RCSfile: README.in,v $: end of file
Index: Daodan/MinGW/var/lib/mingw-get/data/defaults.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/defaults.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/defaults.xml	(revision 1046)
@@ -0,0 +1,137 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<profile project="MinGW" application="mingw-get">
+  <!--
+    $Id: profile.xml,v ee72dbfcc656 2013/09/20 12:05:26 keithmarshall $
+
+    Written by Keith Marshall  <keithmarshall@users.sourceforge.net>
+    Copyright (C) 2009, 2010, 2012, 2013, MinGW.org Project
+
+
+    Master configuration profile for mingw-get.
+
+    This file is user modifiable, to accommodate local customisation
+    of mingw-get's behaviour.  To avoid overwriting the user's local
+    customisations, when upgrading the mingw-get installation, this
+    file is distributed with the alternative name "defaults.xml"; a
+    locally customised version should always be renamed, so that it
+    may be identified as the preferentially loaded "profile.xml".
+
+
+    This is free software.  Permission is granted to copy, modify and
+    redistribute this software, under the provisions of the GNU General
+    Public License, Version 3, (or, at your option, any later version),
+    as published by the Free Software Foundation; see the file COPYING
+    for licensing details.
+
+    Note, in particular, that this software is provided "as is", in the
+    hope that it may prove useful, but WITHOUT WARRANTY OF ANY KIND; not
+    even an implied WARRANTY OF MERCHANTABILITY, nor of FITNESS FOR ANY
+    PARTICULAR PURPOSE.  Under no circumstances will the author, or the
+    MinGW Project, accept liability for any damages, however caused,
+    arising from the use of this software.
+  -->
+
+  <preferences client="cli">
+    <!--
+      "preferences" specifications provide a mechanism for defining
+      user specified default attributes for command line options such
+      as the "desktop" and "start-menu" short-cut creation controls.
+
+      Each of these options is disabled by default.  By uncommenting
+      any one of the following declarations, for each option, you may
+      change that default.  Note that you may still override settings
+      you establish here, by also specifying the option on the command
+      line as before; you may also disable an option enabled here, by
+      assigning an attribute value of "none" on the command line.
+    -->
+
+    <!--option name="desktop" /-->
+    <!--option name="desktop" value="all-users" /-->
+
+    <!--option name="start-menu" /-->
+    <!--option name="start-menu" value="all-users" /-->
+  </preferences>
+
+  <preferences client="gui">
+    <!--
+      The preceding "preferences" section applies exclusively to the
+      CLI client, (where command line options may be used); here, we
+      specify defaults for the GUI client, (which provides no support
+      for command line options), such that shortcuts will be created
+      on the desktop, and in the start menu, for the current user.
+
+      Note that matching of the "client" attribute will be performed
+      case-insensitively, against a keyword defined by the respective
+      client; any "preferences" section with no "client" assignment
+      will be matched for ALL clients.
+    -->
+
+    <option name="desktop" />
+    <option name="start-menu" />
+  </preferences>
+
+  <repository uri="http://prdownloads.sourceforge.net/mingw/%F.xml.lzma?download">
+    <!--
+      The "repository" specification identifies the URI where package
+      list catalogues may be downloaded; each catalogue download URI is
+      identified by substituting the catalogue name for the "%F" field
+      in the uri specification.
+
+      You may specify a particular collection of package lists to load
+      here, (selecting from the available catalogue-name.xml.lzma files
+      hosted on the repository server).  If you do this, then ONLY those
+      package lists which you explicitly specify will be loaded.  If you
+      specify no package list here, then the repository's standard list
+      of packages, as identified in the master "package-list.xml.lzma"
+      file will be automatically selected; this is the recommended
+      configuration choice.
+
+      Note however, that if the repository offers optional package list
+      selections, in addition to the the master list, and you wish any of
+      these to be loaded, then you MUST explicitly specify them here.  If
+      you exercise this option, then the automatic loading of the master
+      list will be inhibited, UNLESS you also explicitly include it in
+      your selection, by adding the explicit reference:-
+
+	<package-list catalogue="package-list" />
+
+      Additional package lists, which you wish to specify, are then
+      identified by the addition of as many further references of the
+      form:-
+
+	<package-list catalogue="catalogue-name" />
+
+      as may be required; (note that the "catalogue" attribute name
+      MUST be specified thus, with the GB English spelling).
+    -->
+  </repository>
+
+  <system-map id="default">
+    <!--
+      The system map specifies the installation paths for each managed
+      subsystem.  Multiple system maps are supported, provided each is
+      given a unique "id" attribute; each specifies an "installation",
+      comprising a collection of subsystems, each of which in turn is
+      associated with a specific "sysroot path".
+      
+      Each individual "sysroot path" defines one installation of one
+      specific subsystem; parallel installations may be supported by
+      assigning distinct paths to two or more sysroot specifications
+      for the same subsystem; each such sysroot specification must
+      then be assigned to a distinct system-map.
+
+      Any single sysroot definition may be shared by any number of
+      system-maps, simply by duplicating that definition within each;
+      however, each system-map may contain only one sysroot definition
+      for each individual subsystem.
+
+      Only one system map may be active at any time.  Unless otherwise
+      specified by user selection, the first encountered is accepted as
+      default, irrespective of its actual "id" attribute value.
+    -->
+    <sysroot subsystem="mingw32" path="%R" />
+    <sysroot subsystem="MSYS" path="%R/msys/1.0" />
+  </system-map>
+
+</profile>
+<!-- $RCSfile: profile.xml,v $: end of file -->
Index: Daodan/MinGW/var/lib/mingw-get/data/manifest-0-030-7deb-b8c15e.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/manifest-0-030-7deb-b8c15e.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/manifest-0-030-7deb-b8c15e.xml	(revision 1046)
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<package id="manifest-0-030-7deb-b8c15e">
+    <release tarname="gcc-5.3.0-2-mingw32-lic.tar.xz" />
+    <references>
+        <sysroot id="sysroot-0-002-a7c6-d7dbb5" />
+    </references>
+    <manifest>
+        <file path="share/doc/gcc/5.3.0/COPYING.RUNTIME" />
+        <file path="share/doc/gcc/5.3.0/COPYING3" />
+        <file path="share/doc/gcc/5.3.0/COPYING.LIB" />
+        <file path="share/doc/gcc/5.3.0/COPYING" />
+        <file path="share/doc/gcc/5.3.0/COPYING3.LIB" />
+        <file path="share/doc/gcc/5.3.0/zlib/LICENSE_1_0.txt" />
+    </manifest>
+</package>
Index: Daodan/MinGW/var/lib/mingw-get/data/manifest-0-030-95c8-818018.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/manifest-0-030-95c8-818018.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/manifest-0-030-95c8-818018.xml	(revision 1046)
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<package id="manifest-0-030-95c8-818018">
+    <release tarname="libz-1.2.8-1-mingw32-dll-1.tar" />
+    <references>
+        <sysroot id="sysroot-0-002-a7c6-d7dbb5" />
+    </references>
+    <manifest>
+        <dir path="bin" />
+        <file path="bin/zlib1.dll" />
+    </manifest>
+</package>
Index: Daodan/MinGW/var/lib/mingw-get/data/manifest-0-032-2cbc-e7f72c.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/manifest-0-032-2cbc-e7f72c.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/manifest-0-032-2cbc-e7f72c.xml	(revision 1046)
@@ -0,0 +1,499 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<package id="manifest-0-032-2cbc-e7f72c">
+    <release tarname="w32api-3.18.1-mingw32-dev.tar.xz" />
+    <references>
+        <sysroot id="sysroot-0-002-a7c6-d7dbb5" />
+    </references>
+    <manifest>
+        <dir path="include" />
+        <file path="include/security.h" />
+        <file path="include/commctrl.h" />
+        <file path="include/setupapi.h" />
+        <file path="include/qedit.h" />
+        <file path="include/servprov.h" />
+        <file path="include/exdispid.h" />
+        <file path="include/rpcdce.h" />
+        <file path="include/exdisp.h" />
+        <file path="include/ksmedia.h" />
+        <dir path="include/gdiplus" />
+        <file path="include/gdiplus/gdiplusenums.h" />
+        <file path="include/gdiplus/gdiplusmatrix.h" />
+        <file path="include/gdiplus/gdipluspen.h" />
+        <file path="include/gdiplus/gdipluseffects.h" />
+        <file path="include/gdiplus/gdiplusimagecodec.h" />
+        <file path="include/gdiplus/gdipluspath.h" />
+        <file path="include/gdiplus/gdiplusmetaheader.h" />
+        <file path="include/gdiplus/gdiplusmem.h" />
+        <file path="include/gdiplus/gdiplusstringformat.h" />
+        <file path="include/gdiplus/gdiplusgraphics.h" />
+        <file path="include/gdiplus/gdipluslinecaps.h" />
+        <file path="include/gdiplus/gdiplusgpstubs.h" />
+        <file path="include/gdiplus/gdiplustypes.h" />
+        <file path="include/gdiplus/gdipluscolor.h" />
+        <file path="include/gdiplus/gdiplusheaders.h" />
+        <file path="include/gdiplus/gdiplusimaging.h" />
+        <file path="include/gdiplus/gdiplusimpl.h" />
+        <file path="include/gdiplus/gdiplus.h" />
+        <file path="include/gdiplus/gdipluspixelformats.h" />
+        <file path="include/gdiplus/gdiplusbrush.h" />
+        <file path="include/gdiplus/gdiplusflat.h" />
+        <file path="include/gdiplus/gdiplusinit.h" />
+        <file path="include/gdiplus/gdiplusbase.h" />
+        <file path="include/gdiplus/gdiplusimageattributes.h" />
+        <file path="include/gdiplus/gdiplusmetafile.h" />
+        <file path="include/gdiplus/gdipluscolormatrix.h" />
+        <file path="include/devguid.h" />
+        <file path="include/mmreg.h" />
+        <file path="include/winver.h" />
+        <file path="include/winsock2.h" />
+        <file path="include/sspi.h" />
+        <file path="include/tmschema.h" />
+        <file path="include/ole.h" />
+        <file path="include/dbt.h" />
+        <file path="include/dshow.h" />
+        <file path="include/ws2tcpip.h" />
+        <file path="include/winnt.h" />
+        <file path="include/shobjidl.h" />
+        <file path="include/wincrypt.h" />
+        <file path="include/mpegtype.h" />
+        <file path="include/vfw.h" />
+        <file path="include/lmuse.h" />
+        <file path="include/ntdll.h" />
+        <file path="include/windows.h" />
+        <file path="include/w32api.h" />
+        <file path="include/lmmsg.h" />
+        <file path="include/dde.h" />
+        <file path="include/rpcnterr.h" />
+        <file path="include/powrprof.h" />
+        <dir path="include/ddk" />
+        <file path="include/ddk/winxp.h" />
+        <file path="include/ddk/pfhook.h" />
+        <file path="include/ddk/ntdd8042.h" />
+        <file path="include/ddk/usbuser.h" />
+        <file path="include/ddk/hidsdi.h" />
+        <file path="include/ddk/ntddpcm.h" />
+        <file path="include/ddk/tvout.h" />
+        <file path="include/ddk/mountdev.h" />
+        <file path="include/ddk/ndis.h" />
+        <file path="include/ddk/winddk.h" />
+        <file path="include/ddk/ntddtape.h" />
+        <file path="include/ddk/mcd.h" />
+        <file path="include/ddk/ntddtdi.h" />
+        <file path="include/ddk/ntddvol.h" />
+        <file path="include/ddk/srb.h" />
+        <file path="include/ddk/usbiodef.h" />
+        <file path="include/ddk/storport.h" />
+        <file path="include/ddk/xfilter.h" />
+        <file path="include/ddk/d4drvif.h" />
+        <file path="include/ddk/winnt4.h" />
+        <file path="include/ddk/ntddstor.h" />
+        <file path="include/ddk/atm.h" />
+        <file path="include/ddk/miniport.h" />
+        <file path="include/ddk/usbscan.h" />
+        <file path="include/ddk/usb100.h" />
+        <file path="include/ddk/hidpi.h" />
+        <file path="include/ddk/netpnp.h" />
+        <file path="include/ddk/video.h" />
+        <file path="include/ddk/tdi.h" />
+        <file path="include/ddk/hidusage.h" />
+        <file path="include/ddk/tdistat.h" />
+        <file path="include/ddk/ws2san.h" />
+        <file path="include/ddk/newdev.h" />
+        <file path="include/ddk/scsi.h" />
+        <file path="include/ddk/usbdi.h" />
+        <file path="include/ddk/minitape.h" />
+        <file path="include/ddk/scsiscan.h" />
+        <file path="include/ddk/ntifs.h" />
+        <file path="include/ddk/usbcamdi.h" />
+        <file path="include/ddk/ntddscsi.h" />
+        <file path="include/ddk/netevent.h" />
+        <file path="include/ddk/ntapi.h" />
+        <file path="include/ddk/tdikrnl.h" />
+        <file path="include/ddk/ntpoapi.h" />
+        <file path="include/ddk/parallel.h" />
+        <file path="include/ddk/ntddcdvd.h" />
+        <file path="include/ddk/cfg.h" />
+        <file path="include/ddk/ddkmapi.h" />
+        <file path="include/ddk/kbdmou.h" />
+        <file path="include/ddk/ntddpar.h" />
+        <file path="include/ddk/videoagp.h" />
+        <file path="include/ddk/usbioctl.h" />
+        <file path="include/ddk/cfgmgr32.h" />
+        <file path="include/ddk/hidclass.h" />
+        <file path="include/ddk/ntddser.h" />
+        <file path="include/ddk/ntddcdrm.h" />
+        <file path="include/ddk/ndisguid.h" />
+        <file path="include/ddk/ntddvdeo.h" />
+        <file path="include/ddk/tdiinfo.h" />
+        <file path="include/ddk/ntddchgr.h" />
+        <file path="include/ddk/ntdddisk.h" />
+        <file path="include/ddk/batclass.h" />
+        <file path="include/ddk/ntstatus.h" />
+        <file path="include/ddk/mountmgr.h" />
+        <file path="include/ddk/ntddndis.h" />
+        <file path="include/ddk/ntddbeep.h" />
+        <file path="include/ddk/ntddk.h" />
+        <file path="include/ddk/win2k.h" />
+        <file path="include/ddk/d4iface.h" />
+        <file path="include/ddk/ntddkbd.h" />
+        <file path="include/ddk/smbus.h" />
+        <file path="include/ddk/ndistapi.h" />
+        <file path="include/ddk/ndiswan.h" />
+        <file path="include/ddk/ntddmou.h" />
+        <file path="include/ddk/winddi.h" />
+        <file path="include/ddk/poclass.h" />
+        <file path="include/ddk/scsiwmi.h" />
+        <file path="include/ddk/usb.h" />
+        <file path="include/ddk/upssvc.h" />
+        <file path="include/dvdevcod.h" />
+        <file path="include/audevcod.h" />
+        <file path="include/il21dec.h" />
+        <file path="include/lmwksta.h" />
+        <file path="include/userenv.h" />
+        <file path="include/winperf.h" />
+        <file path="include/lmerrlog.h" />
+        <file path="include/lmshare.h" />
+        <file path="include/basetsd.h" />
+        <file path="include/accctrl.h" />
+        <file path="include/basetyps.h" />
+        <file path="include/ntdsbcli.h" />
+        <file path="include/usp10.h" />
+        <file path="include/mprapi.h" />
+        <file path="include/windns.h" />
+        <file path="include/imagehlp.h" />
+        <file path="include/winbase.h" />
+        <file path="include/lm.h" />
+        <file path="include/ws2spi.h" />
+        <file path="include/dsquery.h" />
+        <file path="include/idispids.h" />
+        <file path="include/windef.h" />
+        <file path="include/winerror.h" />
+        <file path="include/winreg.h" />
+        <file path="include/lmuseflg.h" />
+        <file path="include/dxerr8.h" />
+        <file path="include/objbase.h" />
+        <file path="include/wininet.h" />
+        <file path="include/lmstats.h" />
+        <file path="include/tlhelp32.h" />
+        <file path="include/sddl.h" />
+        <file path="include/pshpack1.h" />
+        <file path="include/winspool.h" />
+        <file path="include/rapi.h" />
+        <file path="include/rpcproxy.h" />
+        <file path="include/lzexpand.h" />
+        <file path="include/lmcons.h" />
+        <file path="include/afxres.h" />
+        <file path="include/strmif.h" />
+        <file path="include/schnlsp.h" />
+        <file path="include/mq.h" />
+        <file path="include/control.h" />
+        <file path="include/cderr.h" />
+        <file path="include/iptypes.h" />
+        <file path="include/lmat.h" />
+        <file path="include/snmp.h" />
+        <file path="include/cguid.h" />
+        <file path="include/lmrepl.h" />
+        <file path="include/reason.h" />
+        <file path="include/httpext.h" />
+        <file path="include/d3d9types.h" />
+        <file path="include/lmbrowsr.h" />
+        <file path="include/ole2.h" />
+        <file path="include/pshpack8.h" />
+        <file path="include/lmconfig.h" />
+        <file path="include/ipxconst.h" />
+        <file path="include/ipifcons.h" />
+        <file path="include/commdlg.h" />
+        <file path="include/aygshell.h" />
+        <file path="include/largeint.h" />
+        <file path="include/sqlucode.h" />
+        <file path="include/oledlg.h" />
+        <file path="include/lmsname.h" />
+        <file path="include/ipexport.h" />
+        <file path="include/evcode.h" />
+        <file path="include/secext.h" />
+        <file path="include/amvideo.h" />
+        <file path="include/dxerr9.h" />
+        <file path="include/xprtdefs.h" />
+        <file path="include/dsrole.h" />
+        <file path="include/mmsystem.h" />
+        <file path="include/lmserver.h" />
+        <file path="include/mgmtapi.h" />
+        <file path="include/adsprop.h" />
+        <file path="include/winnls.h" />
+        <file path="include/ipxrtdef.h" />
+        <file path="include/ras.h" />
+        <file path="include/winldap.h" />
+        <file path="include/wingdi.h" />
+        <file path="include/ntdsapi.h" />
+        <file path="include/cplext.h" />
+        <file path="include/richole.h" />
+        <file path="include/nspapi.h" />
+        <file path="include/oaidl.h" />
+        <file path="include/wsipx.h" />
+        <file path="include/objsel.h" />
+        <file path="include/zmouse.h" />
+        <file path="include/mcx.h" />
+        <file path="include/sqlext.h" />
+        <file path="include/sqltypes.h" />
+        <file path="include/regstr.h" />
+        <file path="include/wincon.h" />
+        <file path="include/vmr9.h" />
+        <file path="include/olectlid.h" />
+        <file path="include/subauth.h" />
+        <file path="include/mshtml.h" />
+        <file path="include/oleauto.h" />
+        <file path="include/rasdlg.h" />
+        <file path="include/ipxtfflt.h" />
+        <file path="include/stm.h" />
+        <file path="include/ntsecpkg.h" />
+        <file path="include/winber.h" />
+        <file path="include/rpc.h" />
+        <file path="include/psapi.h" />
+        <file path="include/oleidl.h" />
+        <file path="include/rpcndr.h" />
+        <file path="include/cpl.h" />
+        <file path="include/winable.h" />
+        <file path="include/svcguid.h" />
+        <file path="include/windowsx.h" />
+        <file path="include/winsvc.h" />
+        <file path="include/winresrc.h" />
+        <file path="include/rtutils.h" />
+        <file path="include/mgm.h" />
+        <file path="include/shellapi.h" />
+        <file path="include/cmnquery.h" />
+        <file path="include/shlwapi.h" />
+        <file path="include/unknwn.h" />
+        <file path="include/amaudio.h" />
+        <file path="include/d3d9.h" />
+        <file path="include/rpcnsi.h" />
+        <file path="include/winsnmp.h" />
+        <file path="include/intshcut.h" />
+        <file path="include/dsclient.h" />
+        <file path="include/rpcdcep.h" />
+        <file path="include/dvdmedia.h" />
+        <file path="include/lmerr.h" />
+        <file path="include/raserror.h" />
+        <file path="include/initguid.h" />
+        <file path="include/routprot.h" />
+        <file path="include/nb30.h" />
+        <file path="include/dsgetdc.h" />
+        <file path="include/ddeml.h" />
+        <file path="include/olectl.h" />
+        <file path="include/shldisp.h" />
+        <file path="include/ipinfoid.h" />
+        <file path="include/aclui.h" />
+        <file path="include/mlang.h" />
+        <file path="include/vptype.h" />
+        <file path="include/wsnetbs.h" />
+        <file path="include/prsht.h" />
+        <file path="include/sdkddkver.h" />
+        <file path="include/fltdefs.h" />
+        <file path="include/lmchdev.h" />
+        <dir path="include/GL" />
+        <file path="include/GL/glu.h" />
+        <file path="include/GL/gl.h" />
+        <file path="include/GL/glext.h" />
+        <file path="include/rassapi.h" />
+        <file path="include/scrnsave.h" />
+        <file path="include/lmalert.h" />
+        <file path="include/dlgs.h" />
+        <file path="include/gdiplus.h" />
+        <file path="include/vidcap.h" />
+        <file path="include/pbt.h" />
+        <file path="include/lmapibuf.h" />
+        <file path="include/shlguid.h" />
+        <file path="include/shlobj.h" />
+        <file path="include/wtsapi32.h" />
+        <file path="include/odbcinst.h" />
+        <file path="include/aclapi.h" />
+        <file path="include/schannel.h" />
+        <file path="include/wsahelp.h" />
+        <file path="include/winioctl.h" />
+        <file path="include/specstrings.h" />
+        <file path="include/mciavi.h" />
+        <file path="include/lmremutl.h" />
+        <file path="include/comcat.h" />
+        <file path="include/pshpack2.h" />
+        <file path="include/rpcdce2.h" />
+        <file path="include/winsock.h" />
+        <file path="include/mapi.h" />
+        <file path="include/icm.h" />
+        <file path="include/custcntl.h" />
+        <file path="include/winuser.h" />
+        <file path="include/isguids.h" />
+        <file path="include/pshpack4.h" />
+        <file path="include/ntdef.h" />
+        <file path="include/ntsecapi.h" />
+        <file path="include/mswsock.h" />
+        <file path="include/dhcpcsdk.h" />
+        <file path="include/dsadmin.h" />
+        <file path="include/errorrep.h" />
+        <file path="include/ks.h" />
+        <file path="include/ocidl.h" />
+        <file path="include/uxtheme.h" />
+        <file path="include/iprtrmib.h" />
+        <file path="include/objidl.h" />
+        <file path="include/ole2ver.h" />
+        <file path="include/docobj.h" />
+        <file path="include/winnetwk.h" />
+        <file path="include/ntldap.h" />
+        <file path="include/edevdefs.h" />
+        <file path="include/objfwd.h" />
+        <file path="include/wtypes.h" />
+        <file path="include/oleacc.h" />
+        <file path="include/lmsvc.h" />
+        <file path="include/rpcnsip.h" />
+        <file path="include/objsafe.h" />
+        <file path="include/msacm.h" />
+        <file path="include/iphlpapi.h" />
+        <file path="include/aviriff.h" />
+        <file path="include/sql.h" />
+        <file path="include/richedit.h" />
+        <file path="include/poppack.h" />
+        <file path="include/errors.h" />
+        <file path="include/lmaccess.h" />
+        <file path="include/imm.h" />
+        <file path="include/nddeapi.h" />
+        <file path="include/lmaudit.h" />
+        <file path="include/bdatypes.h" />
+        <file path="include/d3d9caps.h" />
+        <dir path="lib" />
+        <file path="lib/libd3dim.a" />
+        <file path="lib/libapcups.a" />
+        <file path="lib/libmscms.a" />
+        <file path="lib/libwtsapi32.a" />
+        <file path="lib/libimagehlp.a" />
+        <file path="lib/libavicap32.a" />
+        <file path="lib/librtutils.a" />
+        <file path="lib/libolesvr32.a" />
+        <file path="lib/libdxerr9.a" />
+        <file path="lib/libsetupapi.a" />
+        <file path="lib/libodbc32.a" />
+        <file path="lib/libthunk32.a" />
+        <file path="lib/libicmui.a" />
+        <file path="lib/libkernel32.a" />
+        <file path="lib/libglaux.a" />
+        <file path="lib/libdplayx.a" />
+        <file path="lib/libtdi.a" />
+        <file path="lib/libwininet.a" />
+        <file path="lib/libgdi32.a" />
+        <file path="lib/libdxerr8.a" />
+        <file path="lib/librpcns4.a" />
+        <file path="lib/libusbcamd.a" />
+        <file path="lib/libksproxy.a" />
+        <file path="lib/liboleacc.a" />
+        <file path="lib/libcrypt32.a" />
+        <file path="lib/liboledlg.a" />
+        <file path="lib/libntdll.a" />
+        <file path="lib/liburl.a" />
+        <file path="lib/libcap.a" />
+        <file path="lib/libusp10.a" />
+        <file path="lib/libhid.a" />
+        <file path="lib/libmgmtapi.a" />
+        <file path="lib/libmqrt.a" />
+        <file path="lib/libvdmdbg.a" />
+        <file path="lib/libpsapi.a" />
+        <file path="lib/libgdiplus.a" />
+        <file path="lib/libcomctl32.a" />
+        <file path="lib/libglu32.a" />
+        <file path="lib/libdxapi.a" />
+        <file path="lib/libdxguid.a" />
+        <file path="lib/libtapi32.a" />
+        <file path="lib/libksuser.a" />
+        <file path="lib/libcfgmgr32.a" />
+        <file path="lib/libnetapi32.a" />
+        <file path="lib/libwin32k.a" />
+        <file path="lib/libvideoprt.a" />
+        <file path="lib/libscrnsavw.a" />
+        <file path="lib/libhidparse.a" />
+        <file path="lib/libfaultrep.a" />
+        <file path="lib/libwow32.a" />
+        <file path="lib/librtm.a" />
+        <file path="lib/librpcrt4.a" />
+        <file path="lib/libsvrapi.a" />
+        <file path="lib/libuxtheme.a" />
+        <file path="lib/libole32.a" />
+        <file path="lib/libdinput8.a" />
+        <file path="lib/liblz32.a" />
+        <file path="lib/libavifil32.a" />
+        <file path="lib/libdpvoice.a" />
+        <file path="lib/liboleaut32.a" />
+        <file path="lib/librasdlg.a" />
+        <file path="lib/libwinstrm.a" />
+        <file path="lib/libwin32spl.a" />
+        <file path="lib/libd3dx8d.a" />
+        <file path="lib/liblargeint.a" />
+        <file path="lib/libd3dx9d.a" />
+        <file path="lib/libws2_32.a" />
+        <file path="lib/libdnsapi.a" />
+        <file path="lib/libctl3d32.a" />
+        <file path="lib/libshlwapi.a" />
+        <file path="lib/libopengl32.a" />
+        <file path="lib/libversion.a" />
+        <file path="lib/libdpnaddr.a" />
+        <file path="lib/libscsiport.a" />
+        <file path="lib/libd3drm.a" />
+        <file path="lib/libusbcamd2.a" />
+        <file path="lib/librpcdce4.a" />
+        <file path="lib/libhal.a" />
+        <file path="lib/libd3d9.a" />
+        <file path="lib/libimm32.a" />
+        <file path="lib/libwsock32.a" />
+        <file path="lib/libmsvfw32.a" />
+        <file path="lib/libodbccp32.a" />
+        <file path="lib/libshfolder.a" />
+        <file path="lib/libndis.a" />
+        <file path="lib/libmpr.a" />
+        <file path="lib/libmsdmo.a" />
+        <file path="lib/libd3dxof.a" />
+        <file path="lib/librapi.a" />
+        <file path="lib/libshell32.a" />
+        <file path="lib/libddraw.a" />
+        <file path="lib/libd3d8.a" />
+        <file path="lib/libmcd.a" />
+        <file path="lib/libwinmm.a" />
+        <file path="lib/libdmoguids.a" />
+        <file path="lib/libmsvcp60.a" />
+        <file path="lib/libigmpagnt.a" />
+        <file path="lib/libpkpd32.a" />
+        <file path="lib/libmfcuia32.a" />
+        <file path="lib/libmprapi.a" />
+        <file path="lib/libwst.a" />
+        <file path="lib/libolecli32.a" />
+        <file path="lib/libscrnsave.a" />
+        <file path="lib/libaclui.a" />
+        <file path="lib/libnewdev.a" />
+        <file path="lib/libsecur32.a" />
+        <file path="lib/libadvapi32.a" />
+        <file path="lib/libntoskrnl.a" />
+        <file path="lib/libuserenv.a" />
+        <file path="lib/libbthprops.a" />
+        <file path="lib/libuser32.a" />
+        <file path="lib/libdinput.a" />
+        <file path="lib/libstrmiids.a" />
+        <file path="lib/libcomdlg32.a" />
+        <file path="lib/libmsimg32.a" />
+        <file path="lib/libdsound.a" />
+        <file path="lib/libwldap32.a" />
+        <file path="lib/libwsnmp32.a" />
+        <file path="lib/libnddeapi.a" />
+        <file path="lib/libwinspool.a" />
+        <file path="lib/libvfw32.a" />
+        <file path="lib/libiphlpapi.a" />
+        <file path="lib/libmswsock.a" />
+        <file path="lib/libquartz.a" />
+        <file path="lib/libmapi32.a" />
+        <file path="lib/libdpnlobby.a" />
+        <file path="lib/libmsacm32.a" />
+        <file path="lib/libpowrprof.a" />
+        <file path="lib/libsnmpapi.a" />
+        <file path="lib/libolepro32.a" />
+        <file path="lib/libdlcapi.a" />
+        <file path="lib/libuuid.a" />
+        <file path="lib/libdpnet.a" />
+        <file path="lib/libdhcpcsvc.a" />
+        <file path="lib/libpenwin32.a" />
+        <file path="lib/librasapi32.a" />
+        <file path="lib/libdsetup.a" />
+    </manifest>
+</package>
Index: Daodan/MinGW/var/lib/mingw-get/data/manifest-0-033-195e-74790b.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/manifest-0-033-195e-74790b.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/manifest-0-033-195e-74790b.xml	(revision 1046)
@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<package id="manifest-0-033-195e-74790b">
+    <release tarname="mingwrt-3.22.1-mingw32-dev.tar.xz" />
+    <references>
+        <sysroot id="sysroot-0-002-a7c6-d7dbb5" />
+    </references>
+    <manifest>
+        <dir path="include" />
+        <file path="include/limits.h" />
+        <file path="include/getopt.h" />
+        <file path="include/time.h" />
+        <file path="include/gmon.h" />
+        <file path="include/math.h" />
+        <file path="include/tchar.h" />
+        <file path="include/setjmp.h" />
+        <file path="include/libgen.h" />
+        <file path="include/unistd.h" />
+        <file path="include/wchar.h" />
+        <file path="include/dlfcn.h" />
+        <file path="include/malloc.h" />
+        <file path="include/ctype.h" />
+        <file path="include/conio.h" />
+        <file path="include/string.h" />
+        <file path="include/dirent.h" />
+        <file path="include/complex.h" />
+        <file path="include/inttypes.h" />
+        <file path="include/excpt.h" />
+        <file path="include/mbctype.h" />
+        <file path="include/fcntl.h" />
+        <file path="include/msvcrtver.h" />
+        <file path="include/signal.h" />
+        <file path="include/wctype.h" />
+        <file path="include/assert.h" />
+        <file path="include/search.h" />
+        <file path="include/locale.h" />
+        <file path="include/values.h" />
+        <dir path="include/parts" />
+        <file path="include/float.h" />
+        <file path="include/_mingw.h" />
+        <file path="include/utime.h" />
+        <dir path="include/sys" />
+        <file path="include/sys/time.h" />
+        <file path="include/sys/locking.h" />
+        <file path="include/sys/file.h" />
+        <file path="include/sys/stat.h" />
+        <file path="include/sys/unistd.h" />
+        <file path="include/sys/fcntl.h" />
+        <file path="include/sys/types.h" />
+        <file path="include/sys/timeb.h" />
+        <file path="include/sys/utime.h" />
+        <file path="include/sys/param.h" />
+        <file path="include/direct.h" />
+        <file path="include/stdint.h" />
+        <file path="include/process.h" />
+        <file path="include/dos.h" />
+        <file path="include/fenv.h" />
+        <file path="include/profil.h" />
+        <file path="include/memory.h" />
+        <file path="include/mbstring.h" />
+        <file path="include/glob.h" />
+        <file path="include/stdlib.h" />
+        <file path="include/profile.h" />
+        <file path="include/strings.h" />
+        <file path="include/io.h" />
+        <file path="include/errno.h" />
+        <file path="include/dir.h" />
+        <file path="include/stdio.h" />
+        <file path="include/mem.h" />
+        <file path="include/share.h" />
+        <dir path="lib" />
+        <file path="lib/crtst.o" />
+        <file path="lib/libmsvcr80.a" />
+        <file path="lib/CRT_fp8.o" />
+        <file path="lib/libmoldname80.a" />
+        <file path="lib/libmoldname90d.a" />
+        <file path="lib/libmsvcr90d.a" />
+        <file path="lib/gcrt2.o" />
+        <file path="lib/CRT_noglob.o" />
+        <file path="lib/libmoldname.a" />
+        <file path="lib/libmsvcr71d.a" />
+        <file path="lib/libmoldname71.a" />
+        <file path="lib/crt2.o" />
+        <file path="lib/libmsvcr100.a" />
+        <file path="lib/libmingw32.a" />
+        <file path="lib/libmsvcrt.a" />
+        <file path="lib/gcrt1.o" />
+        <file path="lib/libmsvcr71.a" />
+        <file path="lib/libmingwthrd_old.a" />
+        <file path="lib/libmsvcr70.a" />
+        <file path="lib/libgmon.a" />
+        <file path="lib/crt1.o" />
+        <file path="lib/libmoldname71d.a" />
+        <file path="lib/binmode.o" />
+        <file path="lib/libmoldname90.a" />
+        <file path="lib/libmsvcr70d.a" />
+        <file path="lib/libmingwex.a" />
+        <file path="lib/crtmt.o" />
+        <file path="lib/libmsvcr100d.a" />
+        <file path="lib/libmoldname100d.a" />
+        <file path="lib/libmoldname100.a" />
+        <file path="lib/libcrtdll.a" />
+        <file path="lib/libcoldname.a" />
+        <file path="lib/libmsvcrtd.a" />
+        <file path="lib/dllcrt2.o" />
+        <file path="lib/libmingwthrd.a" />
+        <file path="lib/libm.a" />
+        <file path="lib/libmoldname70.a" />
+        <file path="lib/dllcrt1.o" />
+        <file path="lib/CRT_fp10.o" />
+        <file path="lib/libmsvcr80d.a" />
+        <file path="lib/libmoldname70d.a" />
+        <file path="lib/txtmode.o" />
+        <file path="lib/libmsvcr90.a" />
+        <file path="lib/libmoldname80d.a" />
+        <file path="lib/libmoldnamed.a" />
+    </manifest>
+</package>
Index: Daodan/MinGW/var/lib/mingw-get/data/manifest-0-033-6424-b3cee3.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/manifest-0-033-6424-b3cee3.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/manifest-0-033-6424-b3cee3.xml	(revision 1046)
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<package id="manifest-0-033-6424-b3cee3">
+    <release tarname="libiconv-1.14-3-mingw32-dll-2.tar" />
+    <references>
+        <sysroot id="sysroot-0-002-a7c6-d7dbb5" />
+    </references>
+    <manifest>
+        <dir path="bin" />
+        <file path="bin/libcharset-1.dll" />
+        <file path="bin/libiconv-2.dll" />
+    </manifest>
+</package>
Index: Daodan/MinGW/var/lib/mingw-get/data/manifest-0-033-774a-7121d9.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/manifest-0-033-774a-7121d9.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/manifest-0-033-774a-7121d9.xml	(revision 1046)
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<package id="manifest-0-033-774a-7121d9">
+    <release tarname="mingwrt-3.22.1-mingw32-dll.tar.xz" />
+    <references>
+        <sysroot id="sysroot-0-002-a7c6-d7dbb5" />
+    </references>
+    <manifest>
+        <dir path="bin" />
+        <file path="bin/mingwm10.dll" />
+    </manifest>
+</package>
Index: Daodan/MinGW/var/lib/mingw-get/data/manifest-0-033-d5a8-1df1bc.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/manifest-0-033-d5a8-1df1bc.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/manifest-0-033-d5a8-1df1bc.xml	(revision 1046)
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<package id="manifest-0-033-d5a8-1df1bc">
+    <release tarname="libmpc-1.0.2-mingw32-dll-3.tar.xz" />
+    <references>
+        <sysroot id="sysroot-0-002-a7c6-d7dbb5" />
+    </references>
+    <manifest>
+        <file path="bin/libmpc-3.dll" />
+    </manifest>
+</package>
Index: Daodan/MinGW/var/lib/mingw-get/data/manifest-0-033-e3bd-c7e93e.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/manifest-0-033-e3bd-c7e93e.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/manifest-0-033-e3bd-c7e93e.xml	(revision 1046)
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<package id="manifest-0-033-e3bd-c7e93e">
+    <release tarname="libmpfr-3.1.2-2-mingw32-dll-4.tar" />
+    <references>
+        <sysroot id="sysroot-0-002-a7c6-d7dbb5" />
+    </references>
+    <manifest>
+        <dir path="bin" />
+        <file path="bin/libmpfr-4.dll" />
+    </manifest>
+</package>
Index: Daodan/MinGW/var/lib/mingw-get/data/manifest-0-033-e98a-bf6c02.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/manifest-0-033-e98a-bf6c02.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/manifest-0-033-e98a-bf6c02.xml	(revision 1046)
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<package id="manifest-0-033-e98a-bf6c02">
+    <release tarname="libgmp-5.1.2-1-mingw32-dll-10.tar" />
+    <references>
+        <sysroot id="sysroot-0-002-a7c6-d7dbb5" />
+    </references>
+    <manifest>
+        <dir path="bin" />
+        <file path="bin/libgmp-10.dll" />
+        <file path="bin/libgmpxx-4.dll" />
+    </manifest>
+</package>
Index: Daodan/MinGW/var/lib/mingw-get/data/manifest-0-035-2745-6a4314.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/manifest-0-035-2745-6a4314.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/manifest-0-035-2745-6a4314.xml	(revision 1046)
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<package id="manifest-0-035-2745-6a4314">
+    <release tarname="xz-5.0.3-1-msys-1.0.17-bin.tar.lzma" />
+    <references>
+        <sysroot id="sysroot-0-011-664d-7cd9c6" />
+    </references>
+    <manifest>
+        <dir path="bin" />
+        <file path="bin/lzcat.exe" />
+        <file path="bin/lzcmp" />
+        <file path="bin/lzdiff" />
+        <file path="bin/lzegrep" />
+        <file path="bin/lzfgrep" />
+        <file path="bin/lzgrep" />
+        <file path="bin/lzless" />
+        <file path="bin/lzma.exe" />
+        <file path="bin/lzmadec.exe" />
+        <file path="bin/lzmainfo.exe" />
+        <file path="bin/lzmore" />
+        <file path="bin/unlzma.exe" />
+        <file path="bin/unxz.exe" />
+        <file path="bin/xz.exe" />
+        <file path="bin/xzcat.exe" />
+        <file path="bin/xzcmp" />
+        <file path="bin/xzdec.exe" />
+        <file path="bin/xzdiff" />
+        <file path="bin/xzegrep" />
+        <file path="bin/xzfgrep" />
+        <file path="bin/xzgrep" />
+        <file path="bin/xzless" />
+        <file path="bin/xzmore" />
+    </manifest>
+</package>
Index: Daodan/MinGW/var/lib/mingw-get/data/manifest-0-035-452f-e0e19d.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/manifest-0-035-452f-e0e19d.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/manifest-0-035-452f-e0e19d.xml	(revision 1046)
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<package id="manifest-0-035-452f-e0e19d">
+    <release tarname="less-436-2-msys-1.0.13-bin.tar.lzma" />
+    <references>
+        <sysroot id="sysroot-0-011-664d-7cd9c6" />
+    </references>
+    <manifest>
+        <dir path="bin" />
+        <file path="bin/less.exe" />
+        <file path="bin/lessecho.exe" />
+        <file path="bin/lesskey.exe" />
+    </manifest>
+</package>
Index: Daodan/MinGW/var/lib/mingw-get/data/manifest-0-035-556c-c07e6a.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/manifest-0-035-556c-c07e6a.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/manifest-0-035-556c-c07e6a.xml	(revision 1046)
@@ -0,0 +1,135 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<package id="manifest-0-035-556c-c07e6a">
+    <release tarname="gcc-core-5.3.0-2-mingw32-bin.tar.xz" />
+    <references>
+        <sysroot id="sysroot-0-002-a7c6-d7dbb5" />
+    </references>
+    <manifest>
+        <file path="bin/cpp.exe" />
+        <file path="bin/gcc-ar.exe" />
+        <file path="bin/gcc-nm.exe" />
+        <file path="bin/gcc-ranlib.exe" />
+        <file path="bin/gcc.exe" />
+        <file path="bin/gcov-tool.exe" />
+        <file path="bin/gcov.exe" />
+        <file path="bin/mingw32-gcc-5.3.0.exe" />
+        <file path="bin/mingw32-gcc-ar.exe" />
+        <file path="bin/mingw32-gcc-nm.exe" />
+        <file path="bin/mingw32-gcc-ranlib.exe" />
+        <file path="bin/mingw32-gcc.exe" />
+        <file path="libexec/gcc/mingw32/5.3.0/cc1.exe" />
+        <file path="libexec/gcc/mingw32/5.3.0/collect2.exe" />
+        <file path="libexec/gcc/mingw32/5.3.0/lto-wrapper.exe" />
+        <file path="libexec/gcc/mingw32/5.3.0/lto1.exe" />
+        <dir path="libexec/gcc/mingw32/5.3.0/install-tools" />
+        <file path="libexec/gcc/mingw32/5.3.0/install-tools/mkheaders" />
+        <file path="libexec/gcc/mingw32/5.3.0/install-tools/fixincl.exe" />
+        <file path="libexec/gcc/mingw32/5.3.0/install-tools/fixinc.sh" />
+        <file path="libexec/gcc/mingw32/5.3.0/install-tools/mkinstalldirs" />
+        <file path="libexec/gcc/mingw32/5.3.0/liblto_plugin-0.dll" />
+        <file path="libexec/gcc/mingw32/5.3.0/liblto_plugin.dll.a" />
+        <dir path="lib/gcc/mingw32/5.3.0/include" />
+        <file path="lib/gcc/mingw32/5.3.0/include/avx512bwintrin.h" />
+        <file path="lib/gcc/mingw32/5.3.0/include/rtmintrin.h" />
+        <file path="lib/gcc/mingw32/5.3.0/include/avx512ifmavlintrin.h" />
+        <file path="lib/gcc/mingw32/5.3.0/include/ia32intrin.h" />
+        <file path="lib/gcc/mingw32/5.3.0/include/mmintrin.h" />
+        <file path="lib/gcc/mingw32/5.3.0/include/ammintrin.h" />
+        <file path="lib/gcc/mingw32/5.3.0/include/bmmintrin.h" />
+        <file path="lib/gcc/mingw32/5.3.0/include/prfchwintrin.h" />
+        <file path="lib/gcc/mingw32/5.3.0/include/f16cintrin.h" />
+        <file path="lib/gcc/mingw32/5.3.0/include/stdfix.h" />
+        <file path="lib/gcc/mingw32/5.3.0/include/avx512dqintrin.h" />
+        <file path="lib/gcc/mingw32/5.3.0/include/quadmath.h" />
+        <dir path="lib/gcc/mingw32/5.3.0/include/ssp" />
+        <file path="lib/gcc/mingw32/5.3.0/include/ssp/ssp.h" />
+        <file path="lib/gcc/mingw32/5.3.0/include/ssp/unistd.h" />
+        <file path="lib/gcc/mingw32/5.3.0/include/ssp/string.h" />
+        <file path="lib/gcc/mingw32/5.3.0/include/ssp/stdio.h" />
+        <file path="lib/gcc/mingw32/5.3.0/include/immintrin.h" />
+        <file path="lib/gcc/mingw32/5.3.0/include/stdalign.h" />
+        <file path="lib/gcc/mingw32/5.3.0/include/mwaitxintrin.h" />
+        <file path="lib/gcc/mingw32/5.3.0/include/xsaveoptintrin.h" />
+        <file path="lib/gcc/mingw32/5.3.0/include/avx512erintrin.h" />
+        <file path="lib/gcc/mingw32/5.3.0/include/bmiintrin.h" />
+        <file path="lib/gcc/mingw32/5.3.0/include/quadmath_weak.h" />
+        <file path="lib/gcc/mingw32/5.3.0/include/avx512fintrin.h" />
+        <file path="lib/gcc/mingw32/5.3.0/include/bmi2intrin.h" />
+        <file path="lib/gcc/mingw32/5.3.0/include/xmmintrin.h" />
+        <file path="lib/gcc/mingw32/5.3.0/include/cross-stdarg.h" />
+        <file path="lib/gcc/mingw32/5.3.0/include/fma4intrin.h" />
+        <file path="lib/gcc/mingw32/5.3.0/include/avx512cdintrin.h" />
+        <file path="lib/gcc/mingw32/5.3.0/include/avx512vlintrin.h" />
+        <file path="lib/gcc/mingw32/5.3.0/include/avx512vldqintrin.h" />
+        <file path="lib/gcc/mingw32/5.3.0/include/cpuid.h" />
+        <file path="lib/gcc/mingw32/5.3.0/include/adxintrin.h" />
+        <file path="lib/gcc/mingw32/5.3.0/include/xsavesintrin.h" />
+        <file path="lib/gcc/mingw32/5.3.0/include/xsavecintrin.h" />
+        <file path="lib/gcc/mingw32/5.3.0/include/stdarg.h" />
+        <file path="lib/gcc/mingw32/5.3.0/include/avx2intrin.h" />
+        <file path="lib/gcc/mingw32/5.3.0/include/clwbintrin.h" />
+        <file path="lib/gcc/mingw32/5.3.0/include/fxsrintrin.h" />
+        <file path="lib/gcc/mingw32/5.3.0/include/smmintrin.h" />
+        <file path="lib/gcc/mingw32/5.3.0/include/avx512vbmiintrin.h" />
+        <file path="lib/gcc/mingw32/5.3.0/include/omp.h" />
+        <file path="lib/gcc/mingw32/5.3.0/include/pcommitintrin.h" />
+        <file path="lib/gcc/mingw32/5.3.0/include/openacc.h" />
+        <file path="lib/gcc/mingw32/5.3.0/include/unwind.h" />
+        <file path="lib/gcc/mingw32/5.3.0/include/stdnoreturn.h" />
+        <file path="lib/gcc/mingw32/5.3.0/include/tmmintrin.h" />
+        <file path="lib/gcc/mingw32/5.3.0/include/stdatomic.h" />
+        <file path="lib/gcc/mingw32/5.3.0/include/stddef.h" />
+        <file path="lib/gcc/mingw32/5.3.0/include/avx512vbmivlintrin.h" />
+        <file path="lib/gcc/mingw32/5.3.0/include/xtestintrin.h" />
+        <file path="lib/gcc/mingw32/5.3.0/include/shaintrin.h" />
+        <file path="lib/gcc/mingw32/5.3.0/include/fmaintrin.h" />
+        <file path="lib/gcc/mingw32/5.3.0/include/float.h" />
+        <file path="lib/gcc/mingw32/5.3.0/include/lzcntintrin.h" />
+        <file path="lib/gcc/mingw32/5.3.0/include/xopintrin.h" />
+        <file path="lib/gcc/mingw32/5.3.0/include/tbmintrin.h" />
+        <file path="lib/gcc/mingw32/5.3.0/include/emmintrin.h" />
+        <file path="lib/gcc/mingw32/5.3.0/include/stdint.h" />
+        <file path="lib/gcc/mingw32/5.3.0/include/x86intrin.h" />
+        <file path="lib/gcc/mingw32/5.3.0/include/stdbool.h" />
+        <file path="lib/gcc/mingw32/5.3.0/include/iso646.h" />
+        <file path="lib/gcc/mingw32/5.3.0/include/avxintrin.h" />
+        <file path="lib/gcc/mingw32/5.3.0/include/nmmintrin.h" />
+        <file path="lib/gcc/mingw32/5.3.0/include/clflushoptintrin.h" />
+        <file path="lib/gcc/mingw32/5.3.0/include/mm_malloc.h" />
+        <file path="lib/gcc/mingw32/5.3.0/include/avx512pfintrin.h" />
+        <file path="lib/gcc/mingw32/5.3.0/include/wmmintrin.h" />
+        <file path="lib/gcc/mingw32/5.3.0/include/rdseedintrin.h" />
+        <file path="lib/gcc/mingw32/5.3.0/include/mm3dnow.h" />
+        <file path="lib/gcc/mingw32/5.3.0/include/lwpintrin.h" />
+        <file path="lib/gcc/mingw32/5.3.0/include/pmmintrin.h" />
+        <file path="lib/gcc/mingw32/5.3.0/include/xsaveintrin.h" />
+        <file path="lib/gcc/mingw32/5.3.0/include/varargs.h" />
+        <file path="lib/gcc/mingw32/5.3.0/include/popcntintrin.h" />
+        <file path="lib/gcc/mingw32/5.3.0/include/avx512ifmaintrin.h" />
+        <file path="lib/gcc/mingw32/5.3.0/include/avx512vlbwintrin.h" />
+        <file path="lib/gcc/mingw32/5.3.0/include/tgmath.h" />
+        <file path="lib/gcc/mingw32/5.3.0/include/stdint-gcc.h" />
+        <dir path="lib/gcc/mingw32/5.3.0/include-fixed" />
+        <file path="lib/gcc/mingw32/5.3.0/include-fixed/limits.h" />
+        <file path="lib/gcc/mingw32/5.3.0/include-fixed/README" />
+        <file path="lib/gcc/mingw32/5.3.0/include-fixed/syslimits.h" />
+        <file path="lib/gcc/mingw32/5.3.0/crtbegin.o" />
+        <file path="lib/gcc/mingw32/5.3.0/crtend.o" />
+        <file path="lib/gcc/mingw32/5.3.0/crtfastmath.o" />
+        <file path="lib/gcc/mingw32/5.3.0/libatomic.a" />
+        <file path="lib/gcc/mingw32/5.3.0/libatomic.dll.a" />
+        <file path="lib/gcc/mingw32/5.3.0/libcaf_single.a" />
+        <file path="lib/gcc/mingw32/5.3.0/libgcc.a" />
+        <file path="lib/gcc/mingw32/5.3.0/libgcc_eh.a" />
+        <file path="lib/gcc/mingw32/5.3.0/libgcc_s.a" />
+        <file path="lib/gcc/mingw32/5.3.0/libgcov.a" />
+        <file path="lib/gcc/mingw32/5.3.0/libgomp-plugin-host_nonshm.dll.a" />
+        <file path="lib/gcc/mingw32/5.3.0/libgomp.a" />
+        <file path="lib/gcc/mingw32/5.3.0/libgomp.dll.a" />
+        <file path="lib/gcc/mingw32/5.3.0/libquadmath.a" />
+        <file path="lib/gcc/mingw32/5.3.0/libquadmath.dll.a" />
+        <file path="lib/gcc/mingw32/5.3.0/libssp.a" />
+        <file path="lib/gcc/mingw32/5.3.0/libssp.dll.a" />
+        <file path="lib/gcc/mingw32/5.3.0/libssp_nonshared.a" />
+    </manifest>
+</package>
Index: Daodan/MinGW/var/lib/mingw-get/data/manifest-0-035-6b29-e1f328.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/manifest-0-035-6b29-e1f328.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/manifest-0-035-6b29-e1f328.xml	(revision 1046)
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<package id="manifest-0-035-6b29-e1f328">
+    <release tarname="tar-1.23-1-msys-1.0.13-bin.tar.lzma" />
+    <references>
+        <sysroot id="sysroot-0-011-664d-7cd9c6" />
+    </references>
+    <manifest>
+        <dir path="bin" />
+        <file path="bin/tar.exe" />
+    </manifest>
+</package>
Index: Daodan/MinGW/var/lib/mingw-get/data/manifest-0-035-847c-2ad15a.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/manifest-0-035-847c-2ad15a.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/manifest-0-035-847c-2ad15a.xml	(revision 1046)
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<package id="manifest-0-035-847c-2ad15a">
+    <release tarname="libgcc-5.3.0-2-mingw32-dll-1.tar.xz" />
+    <references>
+        <sysroot id="sysroot-0-002-a7c6-d7dbb5" />
+    </references>
+    <manifest>
+        <file path="bin/libgcc_s_dw2-1.dll" />
+    </manifest>
+</package>
Index: Daodan/MinGW/var/lib/mingw-get/data/manifest-0-035-9b1a-1491ab.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/manifest-0-035-9b1a-1491ab.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/manifest-0-035-9b1a-1491ab.xml	(revision 1046)
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<package id="manifest-0-035-9b1a-1491ab">
+    <release tarname="libssp-5.3.0-2-mingw32-dll-0.tar.xz" />
+    <references>
+        <sysroot id="sysroot-0-002-a7c6-d7dbb5" />
+    </references>
+    <manifest>
+        <file path="bin/libssp-0.dll" />
+    </manifest>
+</package>
Index: Daodan/MinGW/var/lib/mingw-get/data/manifest-0-036-01d9-28bfa1.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/manifest-0-036-01d9-28bfa1.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/manifest-0-036-01d9-28bfa1.xml	(revision 1046)
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<package id="manifest-0-036-01d9-28bfa1">
+    <release tarname="sed-4.2.1-2-msys-1.0.13-bin.tar.lzma" />
+    <references>
+        <sysroot id="sysroot-0-011-664d-7cd9c6" />
+    </references>
+    <manifest>
+        <dir path="bin" />
+        <file path="bin/sed.exe" />
+    </manifest>
+</package>
Index: Daodan/MinGW/var/lib/mingw-get/data/manifest-0-036-16f8-aa3b6b.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/manifest-0-036-16f8-aa3b6b.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/manifest-0-036-16f8-aa3b6b.xml	(revision 1046)
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<package id="manifest-0-036-16f8-aa3b6b">
+    <release tarname="bash-3.1.23-1-msys-1.0.18-bin.tar.xz" />
+    <references>
+        <sysroot id="sysroot-0-011-664d-7cd9c6" />
+    </references>
+    <manifest>
+        <dir path="bin" />
+        <file path="bin/bash.exe" />
+        <file path="bin/bashbug" />
+        <file path="bin/sh.exe" />
+    </manifest>
+</package>
Index: Daodan/MinGW/var/lib/mingw-get/data/manifest-0-036-4cb9-fd70cf.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/manifest-0-036-4cb9-fd70cf.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/manifest-0-036-4cb9-fd70cf.xml	(revision 1046)
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<package id="manifest-0-036-4cb9-fd70cf">
+    <release tarname="binutils-2.25.1-1-mingw32-bin.tar.xz" />
+    <references>
+        <sysroot id="sysroot-0-002-a7c6-d7dbb5" />
+    </references>
+    <manifest>
+        <dir path="bin" />
+        <file path="bin/nm.exe" />
+        <file path="bin/windres.exe" />
+        <file path="bin/strip.exe" />
+        <file path="bin/c++filt.exe" />
+        <file path="bin/gprof.exe" />
+        <file path="bin/as.exe" />
+        <file path="bin/dllwrap.exe" />
+        <file path="bin/ld.exe" />
+        <file path="bin/ld.bfd.exe" />
+        <file path="bin/objdump.exe" />
+        <file path="bin/strings.exe" />
+        <file path="bin/dlltool.exe" />
+        <file path="bin/size.exe" />
+        <file path="bin/windmc.exe" />
+        <file path="bin/ar.exe" />
+        <file path="bin/readelf.exe" />
+        <file path="bin/objcopy.exe" />
+        <file path="bin/ranlib.exe" />
+        <file path="bin/elfedit.exe" />
+        <file path="bin/addr2line.exe" />
+        <dir path="mingw32" />
+        <dir path="mingw32/lib" />
+        <dir path="mingw32/lib/ldscripts" />
+        <file path="mingw32/lib/ldscripts/i386pe.xbn" />
+        <file path="mingw32/lib/ldscripts/i386pe.x" />
+        <file path="mingw32/lib/ldscripts/i386pe.xu" />
+        <file path="mingw32/lib/ldscripts/i386pe.xr" />
+        <file path="mingw32/lib/ldscripts/i386pe.xa" />
+        <file path="mingw32/lib/ldscripts/i386pe.xn" />
+        <dir path="mingw32/bin" />
+        <file path="mingw32/bin/nm.exe" />
+        <file path="mingw32/bin/strip.exe" />
+        <file path="mingw32/bin/as.exe" />
+        <file path="mingw32/bin/ld.exe" />
+        <file path="mingw32/bin/ld.bfd.exe" />
+        <file path="mingw32/bin/objdump.exe" />
+        <file path="mingw32/bin/dlltool.exe" />
+        <file path="mingw32/bin/ar.exe" />
+        <file path="mingw32/bin/objcopy.exe" />
+        <file path="mingw32/bin/ranlib.exe" />
+    </manifest>
+</package>
Index: Daodan/MinGW/var/lib/mingw-get/data/manifest-0-036-52ba-e1fa99.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/manifest-0-036-52ba-e1fa99.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/manifest-0-036-52ba-e1fa99.xml	(revision 1046)
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<package id="manifest-0-036-52ba-e1fa99">
+    <release tarname="file-5.04-1-msys-1.0.13-bin.tar.lzma" />
+    <references>
+        <sysroot id="sysroot-0-011-664d-7cd9c6" />
+    </references>
+    <manifest>
+        <dir path="bin" />
+        <file path="bin/file.exe" />
+        <dir path="share/misc" />
+        <file path="share/misc/magic.mgc" />
+    </manifest>
+</package>
Index: Daodan/MinGW/var/lib/mingw-get/data/manifest-0-036-8366-7ada49.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/manifest-0-036-8366-7ada49.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/manifest-0-036-8366-7ada49.xml	(revision 1046)
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<package id="manifest-0-036-8366-7ada49">
+    <release tarname="make-3.81-3-msys-1.0.13-bin.tar.lzma" />
+    <references>
+        <sysroot id="sysroot-0-011-664d-7cd9c6" />
+    </references>
+    <manifest>
+        <dir path="bin" />
+        <file path="bin/make.exe" />
+    </manifest>
+</package>
Index: Daodan/MinGW/var/lib/mingw-get/data/manifest-0-036-d3e8-87f99e.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/manifest-0-036-d3e8-87f99e.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/manifest-0-036-d3e8-87f99e.xml	(revision 1046)
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<package id="manifest-0-036-d3e8-87f99e">
+    <release tarname="libgomp-5.3.0-2-mingw32-dll-1.tar.xz" />
+    <references>
+        <sysroot id="sysroot-0-002-a7c6-d7dbb5" />
+    </references>
+    <manifest>
+        <file path="bin/libgomp-1.dll" />
+    </manifest>
+</package>
Index: Daodan/MinGW/var/lib/mingw-get/data/manifest-0-037-0709-9f68c5.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/manifest-0-037-0709-9f68c5.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/manifest-0-037-0709-9f68c5.xml	(revision 1046)
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<package id="manifest-0-037-0709-9f68c5">
+    <release tarname="grep-2.5.4-2-msys-1.0.13-bin.tar.lzma" />
+    <references>
+        <sysroot id="sysroot-0-011-664d-7cd9c6" />
+    </references>
+    <manifest>
+        <dir path="bin" />
+        <file path="bin/egrep.exe" />
+        <file path="bin/fgrep.exe" />
+        <file path="bin/grep.exe" />
+    </manifest>
+</package>
Index: Daodan/MinGW/var/lib/mingw-get/data/manifest-0-037-4379-20536b.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/manifest-0-037-4379-20536b.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/manifest-0-037-4379-20536b.xml	(revision 1046)
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<package id="manifest-0-037-4379-20536b">
+    <release tarname="gawk-3.1.7-2-msys-1.0.13-bin.tar.lzma" />
+    <references>
+        <sysroot id="sysroot-0-011-664d-7cd9c6" />
+    </references>
+    <manifest>
+        <dir path="bin" />
+        <file path="bin/awk.exe" />
+        <file path="bin/gawk-3.1.7.exe" />
+        <file path="bin/gawk.exe" />
+        <file path="bin/igawk" />
+        <file path="bin/pgawk-3.1.7.exe" />
+        <file path="bin/pgawk.exe" />
+        <dir path="share/awk" />
+        <file path="share/awk/assert.awk" />
+        <file path="share/awk/bits2str.awk" />
+        <file path="share/awk/cliff_rand.awk" />
+        <file path="share/awk/ctime.awk" />
+        <file path="share/awk/ftrans.awk" />
+        <file path="share/awk/getopt.awk" />
+        <file path="share/awk/gettime.awk" />
+        <file path="share/awk/group.awk" />
+        <file path="share/awk/join.awk" />
+        <file path="share/awk/libintl.awk" />
+        <file path="share/awk/nextfile.awk" />
+        <file path="share/awk/noassign.awk" />
+        <file path="share/awk/ord.awk" />
+        <file path="share/awk/passwd.awk" />
+        <file path="share/awk/readable.awk" />
+        <file path="share/awk/rewind.awk" />
+        <file path="share/awk/round.awk" />
+        <file path="share/awk/strtonum.awk" />
+        <file path="share/awk/zerofile.awk" />
+        <dir path="sbin" />
+        <dir path="sbin/awk" />
+        <file path="sbin/awk/grcat.exe" />
+        <file path="sbin/awk/pwcat.exe" />
+    </manifest>
+</package>
Index: Daodan/MinGW/var/lib/mingw-get/data/manifest-0-037-6e8a-34b72f.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/manifest-0-037-6e8a-34b72f.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/manifest-0-037-6e8a-34b72f.xml	(revision 1046)
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<package id="manifest-0-037-6e8a-34b72f">
+    <release tarname="zlib-1.2.7-1-msys-1.0.17-dll.tar.lzma" />
+    <references>
+        <sysroot id="sysroot-0-011-664d-7cd9c6" />
+    </references>
+    <manifest>
+        <file path="bin/msys-z.dll" />
+    </manifest>
+</package>
Index: Daodan/MinGW/var/lib/mingw-get/data/manifest-0-038-3c76-94f81a.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/manifest-0-038-3c76-94f81a.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/manifest-0-038-3c76-94f81a.xml	(revision 1046)
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<package id="manifest-0-038-3c76-94f81a">
+    <release tarname="gzip-1.3.12-2-msys-1.0.13-bin.tar.lzma" />
+    <references>
+        <sysroot id="sysroot-0-011-664d-7cd9c6" />
+    </references>
+    <manifest>
+        <dir path="bin" />
+        <file path="bin/gunzip" />
+        <file path="bin/gzexe" />
+        <file path="bin/gzip.exe" />
+        <file path="bin/uncompress" />
+        <file path="bin/zcat" />
+        <file path="bin/zcmp" />
+        <file path="bin/zdiff" />
+        <file path="bin/zegrep" />
+        <file path="bin/zfgrep" />
+        <file path="bin/zforce" />
+        <file path="bin/zgrep" />
+        <file path="bin/zless" />
+        <file path="bin/zmore" />
+        <file path="bin/znew" />
+    </manifest>
+</package>
Index: Daodan/MinGW/var/lib/mingw-get/data/manifest-0-038-cc95-2d6d20.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/manifest-0-038-cc95-2d6d20.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/manifest-0-038-cc95-2d6d20.xml	(revision 1046)
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<package id="manifest-0-038-cc95-2d6d20">
+    <release tarname="libatomic-5.3.0-2-mingw32-dll-1.tar.xz" />
+    <references>
+        <sysroot id="sysroot-0-002-a7c6-d7dbb5" />
+    </references>
+    <manifest>
+        <file path="bin/libatomic-1.dll" />
+    </manifest>
+</package>
Index: Daodan/MinGW/var/lib/mingw-get/data/manifest-0-038-e37b-d840e2.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/manifest-0-038-e37b-d840e2.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/manifest-0-038-e37b-d840e2.xml	(revision 1046)
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<package id="manifest-0-038-e37b-d840e2">
+    <release tarname="bzip2-1.0.6-1-msys-1.0.17-bin.tar.lzma" />
+    <references>
+        <sysroot id="sysroot-0-011-664d-7cd9c6" />
+    </references>
+    <manifest>
+        <dir path="bin" />
+        <file path="bin/bunzip2.exe" />
+        <file path="bin/bzcat.exe" />
+        <file path="bin/bzcmp" />
+        <file path="bin/bzdiff" />
+        <file path="bin/bzegrep" />
+        <file path="bin/bzfgrep" />
+        <file path="bin/bzgrep" />
+        <file path="bin/bzip2.exe" />
+        <file path="bin/bzip2recover.exe" />
+        <file path="bin/bzless" />
+        <file path="bin/bzmore" />
+    </manifest>
+</package>
Index: Daodan/MinGW/var/lib/mingw-get/data/manifest-0-039-e383-c525fe.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/manifest-0-039-e383-c525fe.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/manifest-0-039-e383-c525fe.xml	(revision 1046)
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<package id="manifest-0-039-e383-c525fe">
+    <release tarname="libintl-0.18.3.2-2-mingw32-dll-8.tar.xz" />
+    <references>
+        <sysroot id="sysroot-0-002-a7c6-d7dbb5" />
+    </references>
+    <manifest>
+        <file path="bin/libintl-8.dll" />
+    </manifest>
+</package>
Index: Daodan/MinGW/var/lib/mingw-get/data/manifest-0-040-2c50-af8688.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/manifest-0-040-2c50-af8688.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/manifest-0-040-2c50-af8688.xml	(revision 1046)
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<package id="manifest-0-040-2c50-af8688">
+    <release tarname="texinfo-4.13a-2-msys-1.0.13-bin.tar.lzma" />
+    <references>
+        <sysroot id="sysroot-0-011-664d-7cd9c6" />
+    </references>
+    <manifest>
+        <dir path="bin" />
+        <file path="bin/info.exe" />
+        <file path="bin/infokey.exe" />
+        <file path="bin/install-info.exe" />
+        <file path="bin/install-info.exe.manifest" />
+        <file path="bin/makeinfo.exe" />
+        <file path="bin/pdftexi2dvi" />
+        <file path="bin/texi2dvi" />
+        <file path="bin/texi2pdf" />
+        <file path="bin/texindex.exe" />
+        <dir path="share/texinfo" />
+        <file path="share/texinfo/texinfo.cat" />
+        <file path="share/texinfo/texinfo.dtd" />
+        <file path="share/texinfo/texinfo.xsl" />
+    </manifest>
+</package>
Index: Daodan/MinGW/var/lib/mingw-get/data/manifest-0-040-a06f-26f128.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/manifest-0-040-a06f-26f128.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/manifest-0-040-a06f-26f128.xml	(revision 1046)
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<package id="manifest-0-040-a06f-26f128">
+    <release tarname="msysCORE-1.0.19-1-msys-1.0.19-doc.tar.xz" />
+    <references>
+        <sysroot id="sysroot-0-011-664d-7cd9c6" />
+    </references>
+    <manifest>
+        <file path="share/doc/MSYS/MSYS_MISSION" />
+        <file path="share/doc/MSYS/MSYS_VS_CYGWIN" />
+        <file path="share/doc/MSYS/MSYS_WELCOME.rtf" />
+        <file path="share/doc/MSYS/README.rtf" />
+        <file path="share/doc/MSYS/msysCORE-1.0.19-1-msys-RELEASE_NOTES.txt" />
+    </manifest>
+</package>
Index: Daodan/MinGW/var/lib/mingw-get/data/manifest-0-040-b0ac-bcecae.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/manifest-0-040-b0ac-bcecae.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/manifest-0-040-b0ac-bcecae.xml	(revision 1046)
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<package id="manifest-0-040-b0ac-bcecae">
+    <release tarname="msysCORE-1.0.19-1-msys-1.0.19-lic.tar.xz" />
+    <references>
+        <sysroot id="sysroot-0-011-664d-7cd9c6" />
+    </references>
+    <manifest>
+        <file path="share/doc/MSYS/COPYING" />
+        <file path="share/doc/MSYS/COPYING.LIB" />
+        <file path="share/doc/MSYS/CYGWIN_LICENSE" />
+        <file path="share/doc/MSYS/MSYS_LICENSE.rtf" />
+    </manifest>
+</package>
Index: Daodan/MinGW/var/lib/mingw-get/data/manifest-0-040-d7d3-7abb48.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/manifest-0-040-d7d3-7abb48.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/manifest-0-040-d7d3-7abb48.xml	(revision 1046)
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<package id="manifest-0-040-d7d3-7abb48">
+    <release tarname="msysCORE-1.0.19-1-msys-1.0.19-ext.tar.xz" />
+    <references>
+        <sysroot id="sysroot-0-011-664d-7cd9c6" />
+    </references>
+    <manifest>
+        <file path="bin/cls" />
+        <file path="bin/clsb" />
+        <file path="bin/cmd" />
+        <file path="bin/ftp" />
+        <file path="bin/lnkcnv" />
+        <file path="bin/mount" />
+        <file path="bin/msysinfo" />
+        <file path="bin/start" />
+        <file path="bin/umount" />
+        <file path="bin/which" />
+        <file path="msys.bat" />
+    </manifest>
+</package>
Index: Daodan/MinGW/var/lib/mingw-get/data/manifest-0-040-df3c-e16206.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/manifest-0-040-df3c-e16206.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/manifest-0-040-df3c-e16206.xml	(revision 1046)
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<package id="manifest-0-040-df3c-e16206">
+    <release tarname="msysCORE-1.0.19-1-msys-1.0.19-bin.tar.xz" />
+    <references>
+        <sysroot id="sysroot-0-011-664d-7cd9c6" />
+    </references>
+    <manifest>
+        <file path="bin/msys-1.0.dll" />
+        <file path="bin/msysmnt.exe" />
+        <file path="bin/ps.exe" />
+        <file path="bin/error-mode.exe" />
+        <file path="etc/fstab.sample" />
+        <file path="etc/inputrc.default" />
+        <file path="etc/profile" />
+        <file path="postinstall/fstab.lua" />
+        <file path="m.ico" />
+        <file path="msys.ico" />
+    </manifest>
+</package>
Index: Daodan/MinGW/var/lib/mingw-get/data/manifest-0-040-e25b-fc9127.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/manifest-0-040-e25b-fc9127.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/manifest-0-040-e25b-fc9127.xml	(revision 1046)
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<package id="manifest-0-040-e25b-fc9127">
+    <release tarname="libquadmath-5.3.0-2-mingw32-dll-0.tar.xz" />
+    <references>
+        <sysroot id="sysroot-0-002-a7c6-d7dbb5" />
+    </references>
+    <manifest>
+        <file path="bin/libquadmath-0.dll" />
+    </manifest>
+</package>
Index: Daodan/MinGW/var/lib/mingw-get/data/manifest-0-041-0076-7fe706.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/manifest-0-041-0076-7fe706.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/manifest-0-041-0076-7fe706.xml	(revision 1046)
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<package id="manifest-0-041-0076-7fe706">
+    <release tarname="libbz2-1.0.6-1-msys-1.0.17-dll-1.tar.lzma" />
+    <references>
+        <sysroot id="sysroot-0-011-664d-7cd9c6" />
+    </references>
+    <manifest>
+        <file path="bin/msys-bz2-1.dll" />
+    </manifest>
+</package>
Index: Daodan/MinGW/var/lib/mingw-get/data/manifest-0-041-0da3-38c365.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/manifest-0-041-0da3-38c365.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/manifest-0-041-0da3-38c365.xml	(revision 1046)
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<package id="manifest-0-041-0da3-38c365">
+    <release tarname="dos2unix-7.3.2-1-msys-1.0.18-bin.tar.lzma" />
+    <references>
+        <sysroot id="sysroot-0-011-664d-7cd9c6" />
+    </references>
+    <manifest>
+        <dir path="bin" />
+        <file path="bin/d2u.exe" />
+        <file path="bin/dos2unix.exe" />
+        <file path="bin/mac2unix.exe" />
+        <file path="bin/u2d.exe" />
+        <file path="bin/unix2dos.exe" />
+        <file path="bin/unix2mac.exe" />
+        <dir path="share/locale" />
+        <dir path="share/locale/da" />
+        <dir path="share/locale/da/LC_MESSAGES" />
+        <file path="share/locale/da/LC_MESSAGES/dos2unix.mo" />
+        <dir path="share/locale/de" />
+        <dir path="share/locale/de/LC_MESSAGES" />
+        <file path="share/locale/de/LC_MESSAGES/dos2unix.mo" />
+        <dir path="share/locale/eo" />
+        <dir path="share/locale/eo/LC_MESSAGES" />
+        <file path="share/locale/eo/LC_MESSAGES/dos2unix.mo" />
+        <dir path="share/locale/es" />
+        <dir path="share/locale/es/LC_MESSAGES" />
+        <file path="share/locale/es/LC_MESSAGES/dos2unix.mo" />
+        <dir path="share/locale/fr" />
+        <dir path="share/locale/fr/LC_MESSAGES" />
+        <file path="share/locale/fr/LC_MESSAGES/dos2unix.mo" />
+        <dir path="share/locale/hu" />
+        <dir path="share/locale/hu/LC_MESSAGES" />
+        <file path="share/locale/hu/LC_MESSAGES/dos2unix.mo" />
+        <dir path="share/locale/ja" />
+        <dir path="share/locale/ja/LC_MESSAGES" />
+        <file path="share/locale/ja/LC_MESSAGES/dos2unix.mo" />
+        <dir path="share/locale/nb" />
+        <dir path="share/locale/nb/LC_MESSAGES" />
+        <file path="share/locale/nb/LC_MESSAGES/dos2unix.mo" />
+        <dir path="share/locale/nl" />
+        <dir path="share/locale/nl/LC_MESSAGES" />
+        <file path="share/locale/nl/LC_MESSAGES/dos2unix.mo" />
+        <dir path="share/locale/pl" />
+        <dir path="share/locale/pl/LC_MESSAGES" />
+        <file path="share/locale/pl/LC_MESSAGES/dos2unix.mo" />
+        <dir path="share/locale/pt_BR" />
+        <dir path="share/locale/pt_BR/LC_MESSAGES" />
+        <file path="share/locale/pt_BR/LC_MESSAGES/dos2unix.mo" />
+        <dir path="share/locale/ru" />
+        <dir path="share/locale/ru/LC_MESSAGES" />
+        <file path="share/locale/ru/LC_MESSAGES/dos2unix.mo" />
+        <dir path="share/locale/sr" />
+        <dir path="share/locale/sr/LC_MESSAGES" />
+        <file path="share/locale/sr/LC_MESSAGES/dos2unix.mo" />
+        <dir path="share/locale/sv" />
+        <dir path="share/locale/sv/LC_MESSAGES" />
+        <file path="share/locale/sv/LC_MESSAGES/dos2unix.mo" />
+        <dir path="share/locale/uk" />
+        <dir path="share/locale/uk/LC_MESSAGES" />
+        <file path="share/locale/uk/LC_MESSAGES/dos2unix.mo" />
+        <dir path="share/locale/vi" />
+        <dir path="share/locale/vi/LC_MESSAGES" />
+        <file path="share/locale/vi/LC_MESSAGES/dos2unix.mo" />
+        <dir path="share/locale/zh_CN" />
+        <dir path="share/locale/zh_CN/LC_MESSAGES" />
+        <file path="share/locale/zh_CN/LC_MESSAGES/dos2unix.mo" />
+        <dir path="share/locale/zh_TW" />
+        <dir path="share/locale/zh_TW/LC_MESSAGES" />
+        <file path="share/locale/zh_TW/LC_MESSAGES/dos2unix.mo" />
+    </manifest>
+</package>
Index: Daodan/MinGW/var/lib/mingw-get/data/manifest-0-041-1813-d17935.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/manifest-0-041-1813-d17935.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/manifest-0-041-1813-d17935.xml	(revision 1046)
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<package id="manifest-0-041-1813-d17935">
+    <release tarname="coreutils-5.97-3-msys-1.0.13-bin.tar.lzma" />
+    <references>
+        <sysroot id="sysroot-0-011-664d-7cd9c6" />
+    </references>
+    <manifest>
+        <file path="bin/basename.exe" />
+        <file path="bin/cat.exe" />
+        <file path="bin/chmod.exe" />
+        <file path="bin/comm.exe" />
+        <file path="bin/cp.exe" />
+        <file path="bin/cut.exe" />
+        <file path="bin/date.exe" />
+        <file path="bin/dirname.exe" />
+        <file path="bin/echo.exe" />
+        <file path="bin/env.exe" />
+        <file path="bin/expr.exe" />
+        <file path="bin/false.exe" />
+        <file path="bin/fold.exe" />
+        <file path="bin/head.exe" />
+        <file path="bin/id.exe" />
+        <file path="bin/install.exe" />
+        <file path="bin/install.exe.manifest" />
+        <file path="bin/join.exe" />
+        <file path="bin/ln.exe" />
+        <file path="bin/ls.exe" />
+        <file path="bin/md5sum.exe" />
+        <file path="bin/mkdir.exe" />
+        <file path="bin/mv.exe" />
+        <file path="bin/od.exe" />
+        <file path="bin/paste.exe" />
+        <file path="bin/printf.exe" />
+        <file path="bin/pwd.exe" />
+        <file path="bin/rm.exe" />
+        <file path="bin/rmdir.exe" />
+        <file path="bin/sleep.exe" />
+        <file path="bin/sort.exe" />
+        <file path="bin/split.exe" />
+        <file path="bin/stty.exe" />
+        <file path="bin/tail.exe" />
+        <file path="bin/tee.exe" />
+        <file path="bin/touch.exe" />
+        <file path="bin/tr.exe" />
+        <file path="bin/true.exe" />
+        <file path="bin/uname.exe" />
+        <file path="bin/uniq.exe" />
+        <file path="bin/wc.exe" />
+    </manifest>
+</package>
Index: Daodan/MinGW/var/lib/mingw-get/data/manifest-0-042-43ff-c734bc.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/manifest-0-042-43ff-c734bc.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/manifest-0-042-43ff-c734bc.xml	(revision 1046)
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<package id="manifest-0-042-43ff-c734bc">
+    <release tarname="liblzma-5.0.3-1-msys-1.0.17-dll-5.tar.lzma" />
+    <references>
+        <sysroot id="sysroot-0-011-664d-7cd9c6" />
+    </references>
+    <manifest>
+        <file path="bin/msys-lzma-5.dll" />
+    </manifest>
+</package>
Index: Daodan/MinGW/var/lib/mingw-get/data/manifest-0-042-453d-27dbac.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/manifest-0-042-453d-27dbac.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/manifest-0-042-453d-27dbac.xml	(revision 1046)
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<package id="manifest-0-042-453d-27dbac">
+    <release tarname="findutils-4.4.2-2-msys-1.0.13-bin.tar.lzma" />
+    <references>
+        <sysroot id="sysroot-0-011-664d-7cd9c6" />
+    </references>
+    <manifest>
+        <file path="bin/find.exe" />
+        <file path="bin/oldfind.exe" />
+        <file path="bin/xargs.exe" />
+    </manifest>
+</package>
Index: Daodan/MinGW/var/lib/mingw-get/data/manifest-0-042-6af0-a700dc.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/manifest-0-042-6af0-a700dc.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/manifest-0-042-6af0-a700dc.xml	(revision 1046)
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<package id="manifest-0-042-6af0-a700dc">
+    <release tarname="libmagic-5.04-1-msys-1.0.13-dll-1.tar.lzma" />
+    <references>
+        <sysroot id="sysroot-0-011-664d-7cd9c6" />
+    </references>
+    <manifest>
+        <file path="bin/msys-magic-1.dll" />
+    </manifest>
+</package>
Index: Daodan/MinGW/var/lib/mingw-get/data/manifest-0-042-7567-7c532c.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/manifest-0-042-7567-7c532c.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/manifest-0-042-7567-7c532c.xml	(revision 1046)
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<package id="manifest-0-042-7567-7c532c">
+    <release tarname="libiconv-1.14-1-msys-1.0.17-dll-2.tar.lzma" />
+    <references>
+        <sysroot id="sysroot-0-011-664d-7cd9c6" />
+    </references>
+    <manifest>
+        <file path="bin/msys-iconv-2.dll" />
+    </manifest>
+</package>
Index: Daodan/MinGW/var/lib/mingw-get/data/manifest-0-045-e551-0d522d.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/manifest-0-045-e551-0d522d.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/manifest-0-045-e551-0d522d.xml	(revision 1046)
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<package id="manifest-0-045-e551-0d522d">
+    <release tarname="libintl-0.18.1.1-1-msys-1.0.17-dll-8.tar.lzma" />
+    <references>
+        <sysroot id="sysroot-0-011-664d-7cd9c6" />
+    </references>
+    <manifest>
+        <file path="bin/msys-intl-8.dll" />
+    </manifest>
+</package>
Index: Daodan/MinGW/var/lib/mingw-get/data/manifest-0-047-72e5-12026f.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/manifest-0-047-72e5-12026f.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/manifest-0-047-72e5-12026f.xml	(revision 1046)
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<package id="manifest-0-047-72e5-12026f">
+    <release tarname="termcap-0.20050421_1-2-msys-1.0.13-bin.tar.lzma" />
+    <references>
+        <sysroot id="sysroot-0-011-664d-7cd9c6" />
+    </references>
+    <manifest>
+        <dir path="etc" />
+        <file path="etc/termcap" />
+    </manifest>
+</package>
Index: Daodan/MinGW/var/lib/mingw-get/data/manifest-0-048-1178-e1bab0.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/manifest-0-048-1178-e1bab0.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/manifest-0-048-1178-e1bab0.xml	(revision 1046)
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<package id="manifest-0-048-1178-e1bab0">
+    <release tarname="libregex-1.20090805-2-msys-1.0.13-dll-1.tar.lzma" />
+    <references>
+        <sysroot id="sysroot-0-011-664d-7cd9c6" />
+    </references>
+    <manifest>
+        <file path="bin/msys-regex-1.dll" />
+    </manifest>
+</package>
Index: Daodan/MinGW/var/lib/mingw-get/data/manifest-0-048-35de-b53e74.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/manifest-0-048-35de-b53e74.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/manifest-0-048-35de-b53e74.xml	(revision 1046)
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<package id="manifest-0-048-35de-b53e74">
+    <release tarname="make-3.82.90-2-mingw32-cvs-20120902-bin.tar.lzma" />
+    <references>
+        <sysroot id="sysroot-0-002-a7c6-d7dbb5" />
+    </references>
+    <manifest>
+        <dir path="bin" />
+        <file path="bin/mingw32-make.exe" />
+    </manifest>
+</package>
Index: Daodan/MinGW/var/lib/mingw-get/data/manifest-0-050-37d6-d522ef.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/manifest-0-050-37d6-d522ef.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/manifest-0-050-37d6-d522ef.xml	(revision 1046)
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<package id="manifest-0-050-37d6-d522ef">
+    <release tarname="mingw-get-0.6.2-mingw32-beta-20131004-1-gui.tar.xz" />
+    <references>
+        <sysroot id="sysroot-0-002-a7c6-d7dbb5" />
+    </references>
+    <manifest>
+        <file path="libexec/mingw-get/guimain.exe" />
+    </manifest>
+</package>
Index: Daodan/MinGW/var/lib/mingw-get/data/manifest-0-050-bbc0-e6c281.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/manifest-0-050-bbc0-e6c281.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/manifest-0-050-bbc0-e6c281.xml	(revision 1046)
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<package id="manifest-0-050-bbc0-e6c281">
+    <release tarname="mingw-get-0.6.2-mingw32-beta-20131004-1-lic.tar.xz" />
+    <references>
+        <sysroot id="sysroot-0-002-a7c6-d7dbb5" />
+    </references>
+    <manifest>
+        <dir path="share" />
+        <dir path="share/doc" />
+        <dir path="share/doc/mingw-get" />
+        <file path="share/doc/mingw-get/README" />
+        <file path="share/doc/mingw-get/COPYING" />
+    </manifest>
+</package>
Index: Daodan/MinGW/var/lib/mingw-get/data/manifest-0-050-d450-bb4c29.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/manifest-0-050-d450-bb4c29.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/manifest-0-050-d450-bb4c29.xml	(revision 1046)
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<package id="manifest-0-050-d450-bb4c29">
+    <release tarname="mingw-get-0.6.2-mingw32-beta-20131004-1-bin.tar.xz" />
+    <references>
+        <sysroot id="sysroot-0-002-a7c6-d7dbb5" />
+    </references>
+    <manifest>
+        <dir path="bin" />
+        <file path="bin/mingw-get.exe" />
+        <dir path="libexec" />
+        <dir path="libexec/mingw-get" />
+        <file path="libexec/mingw-get/mingw-get-0.dll" />
+        <file path="libexec/mingw-get/setup.lua" />
+        <file path="libexec/mingw-get/guistub.exe" />
+        <file path="libexec/mingw-get/lastrites.exe" />
+        <file path="libexec/mingw-get/unlink.js" />
+        <file path="libexec/mingw-get/shlink.js" />
+        <dir path="var" />
+        <dir path="var/lib" />
+        <dir path="var/lib/mingw-get" />
+        <dir path="var/lib/mingw-get/data" />
+        <file path="var/lib/mingw-get/data/defaults.xml" />
+    </manifest>
+</package>
Index: Daodan/MinGW/var/lib/mingw-get/data/manifest-0-051-d74c-697093.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/manifest-0-051-d74c-697093.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/manifest-0-051-d74c-697093.xml	(revision 1046)
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<package id="manifest-0-051-d74c-697093">
+    <release tarname="libpthreadgc-2.10-mingw32-pre-20160821-1-dev.tar.xz" />
+    <references>
+        <sysroot id="sysroot-0-002-a7c6-d7dbb5" />
+    </references>
+    <manifest>
+        <dir path="include" />
+        <file path="include/sched.h" />
+        <file path="include/pthread.h" />
+        <file path="include/semaphore.h" />
+        <file path="include/ptw32_errno.h" />
+        <file path="include/_ptw32.h" />
+        <dir path="lib" />
+        <file path="lib/libpthread.dll.a" />
+        <file path="lib/libpthread.a" />
+        <file path="lib/libpthreadGC-3.dll.a" />
+        <file path="lib/libpthreadGC-3.a" />
+    </manifest>
+</package>
Index: Daodan/MinGW/var/lib/mingw-get/data/manifest-0-052-9788-afe609.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/manifest-0-052-9788-afe609.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/manifest-0-052-9788-afe609.xml	(revision 1046)
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<package id="manifest-0-052-9788-afe609">
+    <release tarname="libtermcap-0.20050421_1-2-msys-1.0.13-dll-0.tar.lzma" />
+    <references>
+        <sysroot id="sysroot-0-011-664d-7cd9c6" />
+    </references>
+    <manifest>
+        <file path="bin/msys-termcap-0.dll" />
+    </manifest>
+</package>
Index: Daodan/MinGW/var/lib/mingw-get/data/manifest-0-053-7919-113c27.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/manifest-0-053-7919-113c27.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/manifest-0-053-7919-113c27.xml	(revision 1046)
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<package id="manifest-0-053-7919-113c27">
+    <release tarname="libpthreadgc-2.10-mingw32-pre-20160821-1-dll-3.tar.xz" />
+    <references>
+        <sysroot id="sysroot-0-002-a7c6-d7dbb5" />
+    </references>
+    <manifest>
+        <dir path="bin" />
+        <file path="bin/pthreadGC-3.dll" />
+    </manifest>
+</package>
Index: Daodan/MinGW/var/lib/mingw-get/data/manifest-0-054-a198-94876e.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/manifest-0-054-a198-94876e.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/manifest-0-054-a198-94876e.xml	(revision 1046)
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<package id="manifest-0-054-a198-94876e">
+    <release tarname="diffutils-2.8.7.20071206cvs-3-msys-1.0.13-bin.tar.lzma" />
+    <references>
+        <sysroot id="sysroot-0-011-664d-7cd9c6" />
+    </references>
+    <manifest>
+        <dir path="bin" />
+        <file path="bin/cmp.exe" />
+        <file path="bin/diff.exe" />
+        <file path="bin/diff3.exe" />
+        <file path="bin/sdiff.exe" />
+    </manifest>
+</package>
Index: Daodan/MinGW/var/lib/mingw-get/data/mingw-developer-toolkit.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/mingw-developer-toolkit.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/mingw-developer-toolkit.xml	(revision 1046)
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://www.mingw.org" issue="2013072300">
+
+  <!-- File: mingw-developer-toolkit.xml -->
+
+  <!-- This is a preliminary catalogue describing the contents of a
+       relatively, if not kitchen-sink-level, complete msys installation.
+       It attempts to replicate, with certain judicious additions and
+       deletions, the set of packages originally installed by the old
+       MSYS-DTK monolithic installers, circa msysDTK-1.0.1 -->
+
+  <package-collection subsystem="msys">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="mingw-developer-toolkit" alias="mingw-dtk" class="virtual">
+
+      <affiliate group="Basic Setup" />
+      <affiliate group="MinGW Developer Toolkit" />
+
+      <description lang="en" title="An MSYS Installation for MinGW Developers (meta)">
+        <paragraph>This meta package contains the components necessary to
+           create a relatively complete MSYS installation suitable for most
+           MinGW developers' needs.  It includes the msys-base system, as well
+           as the autotools (autoconf, automake, libtool, gettext, and libiconv)
+           configured for use in maintaining and building native win32 (MinGW)
+           programs.  It includes m4, perl, vim, patch, cvs, guile, mktemp,
+           bison, flex, lndir, and other useful command line tools. It also
+           includes networking clients for ssh, rsh, telnet, and ftp protocols.
+        </paragraph>
+        <paragraph>Note that, for certain esoteric reasons, some of the packages
+          installed by this meta package are MSYS packages, and install, as
+          expected, in the / == /usr directory (that is, into C:\msys\1.0, or
+          whatever you've chosen as the "root" MSYS path).  However, it also
+          includes some MinGW packages: the autotools are technically configured
+          for MinGW, and are installed into the /mingw directory (that is, into
+          C:\MinGW or whatever you've chosen as the "root" MinGW path).
+        </paragraph>
+      </description>
+
+      <component class="bin">
+        <release tarname="mingw-developer-toolkit-2013072300-msys-bin.meta" />
+        <requires eq="mingw32-autotools-*-mingw32-bin.meta" />
+        <requires eq="msys-base-*-msys-*-bin.meta" />
+        <requires eq="msys-autogen-*-msys-*-bin.tar" />
+        <requires eq="msys-bison-*-msys-*-bin.tar" />
+        <requires eq="msys-bsdtar-*-msys-*-bin.tar" />
+        <requires eq="msys-bsdcpio-*-msys-*-bin.tar" />
+        <requires eq="msys-coreutils-*-msys-*-ext.tar" />
+        <requires eq="msys-cvs-*-msys-*-bin.tar" />
+        <requires eq="msys-diffstat-*-msys-*-bin.tar" />
+        <requires eq="msys-flex-*-msys-*-bin.tar" />
+        <requires eq="msys-guile-*-msys-*-bin.tar" />
+        <requires eq="msys-inetutils-*-msys-*-bin.tar" />
+        <requires eq="msys-lndir-*-msys-*-bin.tar" />
+        <requires eq="msys-m4-*-msys-*-bin.tar" />
+        <requires eq="msys-mktemp-*-msys-*-bin.tar" />
+        <requires eq="msys-openssh-*-msys-*-bin.tar" />
+        <requires eq="msys-openssl-*-msys-*-bin.tar" />
+        <requires eq="msys-patch-*-msys-*-bin.tar" />
+        <requires eq="msys-perl-*-msys-*-bin.tar" />
+        <requires eq="msys-rsync-*-msys-*-bin.tar" />
+        <requires eq="msys-vim-*-msys-*-bin.tar" />
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/mingw32-autoconf.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/mingw32-autoconf.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/mingw32-autoconf.xml	(revision 1046)
@@ -0,0 +1,124 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://mingw.org" issue="2012073100">
+
+  <!-- File: mingw32-autoconf.xml -->
+
+  <package-collection subsystem="mingw32">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+    <package name="mingw32-autoconf" alias="autoconf">
+      <affiliate group="MinGW Autotools" />
+      <description lang="en" title="Wrapper scripts for autoconf commands">
+        <paragraph>Autoconf is an extensible package of M4 macros that
+          produce shell scripts to automatically configure software source
+          code packages.  These scripts can adapt the packages to many
+          kinds of UNIX-like systems without manual user intervention.
+          Autoconf creates a configuration script for a package from a
+          template file that lists the operating system features that the
+          package can use, in the form of M4 macro calls.  However, THIS
+          package is actually a simple wrapper, that automatically
+          redirects to either autoconf-2.13 or autoconf-2.6x, as needed
+          or requested.
+        </paragraph>
+      </description>
+
+      <licence tarname="autoconf-%-mingw32-%-lic.tar.%" />
+      <source tarname="autoconf-%-mingw32-%-src.tar.%" />
+
+      <component class="bin">
+        <requires eq="mingw32-autoconf2.1-*-mingw32-*-bin.tar" />
+        <requires eq="mingw32-autoconf2.5-*-mingw32-*-bin.tar" />
+        <requires eq="msys-bash-*-msys-*-bin.tar" />
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+        <requires eq="msys-gawk-*-msys-*-bin.tar" />
+        <release tarname="autoconf-9-1-mingw32-bin.tar.lzma" />
+        <release tarname="autoconf-10-1-mingw32-bin.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="autoconf-9-1-mingw32-lic.tar.lzma" />
+        <release tarname="autoconf-10-1-mingw32-lic.tar.lzma" />
+      </component>
+    </package>
+
+    <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+    <package name="mingw32-autoconf2.1" alias="autoconf2.1">
+      <affiliate group="MinGW Autotools" />
+      <description lang="en" title="Automatic Configure Script Builder (2.1x series)">
+        <paragraph>Autoconf is an extensible package of M4 macros that
+          produce shell scripts to automatically configure software source
+          code packages.  These scripts can adapt the packages to many
+          kinds of UNIX-like systems without manual user intervention.
+          Autoconf creates a configuration script for a package from a
+          template file that lists the operating system features that the
+          package can use, in the form of M4 macro calls.  This package
+          provides the latest implementation of autoconf in the 2.1x
+          series.
+        </paragraph>
+      </description>
+
+      <licence tarname="autoconf2.1-%-mingw32-%-lic.tar.%" />
+      <source tarname="autoconf2.1-%-mingw32-%-src.tar.%" />
+
+      <component class="bin">
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+        <requires eq="msys-coreutils-*-msys-*-bin.tar" />
+        <requires eq="msys-m4-*-msys-*-bin.tar" />
+        <requires eq="msys-perl-*-msys-*-bin.tar" />
+        <requires eq="msys-texinfo-*-msys-*-bin.tar" />
+        <release tarname="autoconf2.1-2.13-4-mingw32-bin.tar.lzma" />
+      </component>
+
+      <component class="doc">
+        <release tarname="autoconf2.1-2.13-4-mingw32-doc.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="autoconf2.1-2.13-4-mingw32-lic.tar.lzma" />
+      </component>
+    </package>
+
+    <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+    <package name="mingw32-autoconf2.5" alias="autoconf2.5">
+      <affiliate group="MinGW Autotools" />
+      <description lang="en" title="Automatic Configure Script Builder (2.5x/2.6x series)">
+        <paragraph>Autoconf is an extensible package of M4 macros that
+          produce shell scripts to automatically configure software source
+          code packages.  These scripts can adapt the packages to many
+          kinds of UNIX-like systems without manual user intervention.
+          Autoconf creates a configuration script for a package from a
+          template file that lists the operating system features that the
+          package can use, in the form of M4 macro calls.  This package
+          provides the latest implementation of autoconf in the 2.5x/2.6x
+          series.
+        </paragraph>
+      </description>
+
+      <licence tarname="autoconf2.5-%-mingw32-%-lic.tar.%" />
+      <source tarname="autoconf2.5-%-mingw32-%-src.tar.%" />
+
+      <component class="bin">
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+        <requires eq="msys-coreutils-*-msys-*-bin.tar" />
+        <requires eq="msys-m4-*-msys-*-bin.tar" />
+        <requires eq="msys-perl-*-msys-*-bin.tar" />
+        <requires eq="msys-texinfo-*-msys-*-bin.tar" />
+        <release tarname="autoconf2.5-2.67-1-mingw32-bin.tar.lzma" />
+        <release tarname="autoconf2.5-2.68-1-mingw32-bin.tar.lzma" />
+      </component>
+
+      <component class="doc">
+        <release tarname="autoconf2.5-2.67-1-mingw32-doc.tar.lzma" />
+        <release tarname="autoconf2.5-2.68-1-mingw32-doc.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="autoconf2.5-2.67-1-mingw32-lic.tar.lzma" />
+        <release tarname="autoconf2.5-2.68-1-mingw32-lic.tar.lzma" />
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/mingw32-automake.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/mingw32-automake.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/mingw32-automake.xml	(revision 1046)
@@ -0,0 +1,321 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://mingw.org" issue="2012073100">
+
+  <!-- File: mingw32-automake.xml -->
+
+  <package-collection subsystem="mingw32">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+    <package name="mingw32-automake" alias="automake" >
+      <affiliate group="MinGW Autotools" />
+      <description lang="en" title="Wrapper scripts for automake and aclocal">
+        <paragraph>Automake is a tool for automatically generating Makefile.in
+          files compliant with the GNU Coding Standards.  Automake requires the
+          use of Autoconf.  However, THIS package is actually a simple wrapper,
+          that automatically redirects to one of the automake-[1.4 through 1.11]
+          applications as needed or requested.
+        </paragraph>
+      </description>
+
+      <licence tarname="automake-%-mingw32-%-lic.tar.%" />
+      <source tarname="automake-%-mingw32-%-src.tar.%" />
+
+      <component class="bin">
+        <requires eq="mingw32-automake1.4-*-mingw32-*-bin.tar" />
+        <requires eq="mingw32-automake1.5-*-mingw32-*-bin.tar" />
+        <requires eq="mingw32-automake1.6-*-mingw32-*-bin.tar" />
+        <requires eq="mingw32-automake1.7-*-mingw32-*-bin.tar" />
+        <requires eq="mingw32-automake1.8-*-mingw32-*-bin.tar" />
+        <requires eq="mingw32-automake1.9-*-mingw32-*-bin.tar" />
+        <requires eq="mingw32-automake1.10-*-mingw32-*-bin.tar" />
+        <requires eq="mingw32-automake1.11-*-mingw32-*-bin.tar" />
+        <requires eq="msys-bash-*-msys-*-bin.tar" />
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+        <requires eq="msys-gawk-*-msys-*-bin.tar" />
+        <release tarname="automake-4-1-mingw32-bin.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="automake-4-1-mingw32-lic.tar.lzma" />
+      </component>
+    </package>
+
+    <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+    <package name="mingw32-automake1.4" alias="automake1.4">
+      <affiliate group="MinGW Autotools" />
+      <description lang="en" title="Automatic Makefile Builder (1.4 series)">
+        <paragraph>Automake is a tool for automatically generating
+          Makefile.in files compliant with the GNU Coding Standards.
+          Automake requires the use of Autoconf.  This package provides
+          the latest implementation of automake in the 1.4 series.
+        </paragraph>
+      </description>
+
+      <licence tarname="automake1.4-%-mingw32-%-lic.tar.%" />
+      <source tarname="automake1.4-%-mingw32-%-src.tar.%" />
+
+      <component class="bin">
+        <requires eq="mingw32-autoconf-*-mingw32-*-bin.tar" />
+        <requires eq="mingw32-autoconf2.1-*-mingw32-*-bin.tar" />
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+        <requires eq="msys-coreutils-*-msys-*-bin.tar" />
+        <requires eq="msys-m4-*-msys-*-bin.tar" />
+        <requires eq="msys-perl-*-msys-*-bin.tar" />
+        <requires eq="msys-texinfo-*-msys-*-bin.tar" />
+        <release tarname="automake1.4-1.4p6-1-mingw32-bin.tar.lzma" />
+      </component>
+
+      <component class="doc">
+        <release tarname="automake1.4-1.4p6-1-mingw32-doc.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="automake1.4-1.4p6-1-mingw32-lic.tar.lzma" />
+      </component>
+    </package>
+
+    <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+    <package name="mingw32-automake1.5" alias="automake1.5">
+      <affiliate group="MinGW Autotools" />
+      <description lang="en" title="Automatic Makefile Builder (1.5 series)">
+        <paragraph>Automake is a tool for automatically generating
+          Makefile.in files compliant with the GNU Coding Standards.
+          Automake requires the use of Autoconf.  This package provides
+          the latest implementation of automake in the 1.5 series.
+        </paragraph>
+      </description>
+
+      <licence tarname="automake1.5-%-mingw32-%-lic.tar.%" />
+      <source tarname="automake1.5-%-mingw32-%-src.tar.%" />
+
+      <component class="bin">
+        <requires eq="mingw32-autoconf-*-mingw32-*-bin.tar" />
+        <requires eq="mingw32-autoconf2.1-*-mingw32-*-bin.tar" />
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+        <requires eq="msys-coreutils-*-msys-*-bin.tar" />
+        <requires eq="msys-m4-*-msys-*-bin.tar" />
+        <requires eq="msys-perl-*-msys-*-bin.tar" />
+        <requires eq="msys-texinfo-*-msys-*-bin.tar" />
+        <release tarname="automake1.5-1.5-1-mingw32-bin.tar.lzma" />
+      </component>
+
+      <component class="doc">
+        <release tarname="automake1.5-1.5-1-mingw32-doc.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="automake1.5-1.5-1-mingw32-lic.tar.lzma" />
+      </component>
+    </package>
+
+    <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+    <package name="mingw32-automake1.6" alias="automake1.6">
+      <affiliate group="MinGW Autotools" />
+      <description lang="en" title="Automatic Makefile Builder (1.6 series)">
+        <paragraph>Automake is a tool for automatically generating
+          Makefile.in files compliant with the GNU Coding Standards.
+          Automake requires the use of Autoconf.  This package provides
+          the latest implementation of automake in the 1.6 series.
+        </paragraph>
+      </description>
+
+      <licence tarname="automake1.6-%-mingw32-%-lic.tar.%" />
+      <source tarname="automake1.6-%-mingw32-%-src.tar.%" />
+
+      <component class="bin">
+        <requires eq="mingw32-autoconf-*-mingw32-*-bin.tar" />
+        <requires eq="mingw32-autoconf2.5-*-mingw32-*-bin.tar" />
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+        <requires eq="msys-coreutils-*-msys-*-bin.tar" />
+        <requires eq="msys-m4-*-msys-*-bin.tar" />
+        <requires eq="msys-perl-*-msys-*-bin.tar" />
+        <requires eq="msys-texinfo-*-msys-*-bin.tar" />
+        <release tarname="automake1.6-1.6.3-1-mingw32-bin.tar.lzma" />
+      </component>
+
+      <component class="doc">
+        <release tarname="automake1.6-1.6.3-1-mingw32-doc.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="automake1.6-1.6.3-1-mingw32-lic.tar.lzma" />
+      </component>
+    </package>
+
+    <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+    <package name="mingw32-automake1.7" alias="automake1.7">
+      <affiliate group="MinGW Autotools" />
+      <description lang="en" title="Automatic Makefile Builder (1.7 series)">
+        <paragraph>Automake is a tool for automatically generating
+          Makefile.in files compliant with the GNU Coding Standards.
+          Automake requires the use of Autoconf.  This package provides
+          the latest implementation of automake in the 1.7 series.
+        </paragraph>
+      </description>
+
+      <licence tarname="automake1.7-%-mingw32-%-lic.tar.%" />
+      <source tarname="automake1.7-%-mingw32-%-src.tar.%" />
+
+      <component class="bin">
+        <requires eq="mingw32-autoconf-*-mingw32-*-bin.tar" />
+        <requires eq="mingw32-autoconf2.5-*-mingw32-*-bin.tar" />
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+        <requires eq="msys-coreutils-*-msys-*-bin.tar" />
+        <requires eq="msys-m4-*-msys-*-bin.tar" />
+        <requires eq="msys-perl-*-msys-*-bin.tar" />
+        <requires eq="msys-texinfo-*-msys-*-bin.tar" />
+        <release tarname="automake1.7-1.7.9-1-mingw32-bin.tar.lzma" />
+      </component>
+
+      <component class="doc">
+        <release tarname="automake1.7-1.7.9-1-mingw32-doc.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="automake1.7-1.7.9-1-mingw32-lic.tar.lzma" />
+      </component>
+    </package>
+
+    <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+    <package name="mingw32-automake1.8" alias="automake1.8">
+      <affiliate group="MinGW Autotools" />
+      <description lang="en" title="Automatic Makefile Builder (1.8 series)">
+        <paragraph>Automake is a tool for automatically generating
+          Makefile.in files compliant with the GNU Coding Standards.
+          Automake requires the use of Autoconf.  This package provides
+          the latest implementation of automake in the 1.8 series.
+        </paragraph>
+      </description>
+
+      <licence tarname="automake1.8-%-mingw32-%-lic.tar.%" />
+      <source tarname="automake1.8-%-mingw32-%-src.tar.%" />
+
+      <component class="bin">
+        <requires eq="mingw32-autoconf-*-mingw32-*-bin.tar" />
+        <requires eq="mingw32-autoconf2.5-*-mingw32-*-bin.tar" />
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+        <requires eq="msys-coreutils-*-msys-*-bin.tar" />
+        <requires eq="msys-m4-*-msys-*-bin.tar" />
+        <requires eq="msys-perl-*-msys-*-bin.tar" />
+        <requires eq="msys-texinfo-*-msys-*-bin.tar" />
+        <release tarname="automake1.8-1.8.5-1-mingw32-bin.tar.lzma" />
+      </component>
+
+      <component class="doc">
+        <release tarname="automake1.8-1.8.5-1-mingw32-doc.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="automake1.8-1.8.5-1-mingw32-lic.tar.lzma" />
+      </component>
+    </package>
+
+    <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+    <package name="mingw32-automake1.9" alias="automake1.9">
+      <affiliate group="MinGW Autotools" />
+      <description lang="en" title="Automatic Makefile Builder (1.9 series)">
+        <paragraph>Automake is a tool for automatically generating
+          Makefile.in files compliant with the GNU Coding Standards.
+          Automake requires the use of Autoconf.  This package provides
+          the latest implementation of automake in the 1.9 series.
+        </paragraph>
+      </description>
+
+      <licence tarname="automake1.9-%-mingw32-%-lic.tar.%" />
+      <source tarname="automake1.9-%-mingw32-%-src.tar.%" />
+
+      <component class="bin">
+        <requires eq="mingw32-autoconf-*-mingw32-*-bin.tar" />
+        <requires eq="mingw32-autoconf2.5-*-mingw32-*-bin.tar" />
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+        <requires eq="msys-coreutils-*-msys-*-bin.tar" />
+        <requires eq="msys-m4-*-msys-*-bin.tar" />
+        <requires eq="msys-perl-*-msys-*-bin.tar" />
+        <requires eq="msys-texinfo-*-msys-*-bin.tar" />
+        <release tarname="automake1.9-1.9.6-3-mingw32-bin.tar.lzma" />
+      </component>
+
+      <component class="doc">
+        <release tarname="automake1.9-1.9.6-3-mingw32-doc.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="automake1.9-1.9.6-3-mingw32-lic.tar.lzma" />
+      </component>
+    </package>
+
+    <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+    <package name="mingw32-automake1.10" alias="automake1.10">
+      <affiliate group="MinGW Autotools" />
+      <description lang="en" title="Automatic Makefile Builder (1.10 series)">
+        <paragraph>Automake is a tool for automatically generating
+          Makefile.in files compliant with the GNU Coding Standards.
+          Automake requires the use of Autoconf.  This package provides
+          the latest implementation of automake in the 1.10 series.
+        </paragraph>
+      </description>
+
+      <licence tarname="automake1.10-%-mingw32-%-lic.tar.%" />
+      <source tarname="automake1.10-%-mingw32-%-src.tar.%" />
+
+      <component class="bin">
+        <requires eq="mingw32-autoconf-*-mingw32-*-bin.tar" />
+        <requires eq="mingw32-autoconf2.5-*-mingw32-*-bin.tar" />
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+        <requires eq="msys-coreutils-*-msys-*-bin.tar" />
+        <requires eq="msys-m4-*-msys-*-bin.tar" />
+        <requires eq="msys-perl-*-msys-*-bin.tar" />
+        <requires eq="msys-texinfo-*-msys-*-bin.tar" />
+        <release tarname="automake1.10-1.10.2-1-mingw32-bin.tar.lzma" />
+      </component>
+
+      <component class="doc">
+        <release tarname="automake1.10-1.10.2-1-mingw32-doc.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="automake1.10-1.10.2-1-mingw32-lic.tar.lzma" />
+      </component>
+    </package>
+
+    <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+    <package name="mingw32-automake1.11" alias="automake1.11">
+      <affiliate group="MinGW Autotools" />
+      <description lang="en" title="Automatic Makefile Builder (1.11 series)">
+        <paragraph>Automake is a tool for automatically generating
+          Makefile.in files compliant with the GNU Coding Standards.
+          Automake requires the use of Autoconf.  This package provides
+          the latest implementation of automake in the 1.11 series.
+        </paragraph>
+      </description>
+
+      <licence tarname="automake1.11-%-mingw32-%-lic.tar.%" />
+      <source tarname="automake1.11-%-mingw32-%-src.tar.%" />
+
+      <component class="bin">
+        <requires eq="mingw32-autoconf-*-mingw32-*-bin.tar" />
+        <requires eq="mingw32-autoconf2.5-*-mingw32-*-bin.tar" />
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+        <requires eq="msys-coreutils-*-msys-*-bin.tar" />
+        <requires eq="msys-m4-*-msys-*-bin.tar" />
+        <requires eq="msys-perl-*-msys-*-bin.tar" />
+        <requires eq="msys-texinfo-*-msys-*-bin.tar" />
+        <release tarname="automake1.11-1.11-1-mingw32-bin.tar.lzma" />
+        <release tarname="automake1.11-1.11.1-1-mingw32-bin.tar.lzma" />
+      </component>
+
+      <component class="doc">
+        <release tarname="automake1.11-1.11-1-mingw32-doc.tar.lzma" />
+        <release tarname="automake1.11-1.11.1-1-mingw32-doc.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="automake1.11-1.11-1-mingw32-lic.tar.lzma" />
+        <release tarname="automake1.11-1.11.1-1-mingw32-lic.tar.lzma" />
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/mingw32-autotools.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/mingw32-autotools.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/mingw32-autotools.xml	(revision 1046)
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://www.mingw.org" issue="2010090601">
+
+  <!-- File: mingw32-autotools.xml -->
+
+  <package-collection subsystem="mingw32">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="mingw32-autotools" alias="autotools" class="virtual">
+      <affiliate group="MinGW Autotools" />
+      <description lang="en" title="The GNU Autotools for MinGW Development (meta)">
+        <paragraph>This meta package contains the components necessary to
+          maintain packages that use the GNU Build System.  These components
+          include autoconf, automake, libtool, libiconv, and gettext -- plus
+          their pre-requisites.
+        </paragraph>
+        <paragraph>Although the autotools consist primarily of perl, shell, and
+          m4 scripts, and thus requires MSYS-based interpreters, these
+          implementations should be installed into the /mingw directory (that
+          is, into C:\MinGW or whatever you've chosen as the "root" MinGW path).
+          Most developers who need the autotools will want the versions provided
+          by this package, and not the MSYS ones provided by the MSYS System
+          Builder (msys-dvlpr) package; the MSYS ones install into the / == /usr
+          directory (that is, into C:\msys\1.0) and are intended for use when
+          developing applications that use the MSYS runtime.
+        </paragraph>
+      </description>
+
+      <component class="bin">
+        <release tarname="mingw32-autotools-2010090601-mingw32-bin.meta" />
+        <requires eq="mingw32-autoconf-*-mingw32-*-bin.tar" />
+        <requires eq="mingw32-autoconf2.1-*-mingw32-*-bin.tar" />
+        <requires eq="mingw32-autoconf2.5-*-mingw32-*-bin.tar" />
+        <requires eq="mingw32-automake-*-mingw32-*-bin.tar" />
+        <requires eq="mingw32-automake1.4-*-mingw32-*-bin.tar" />
+        <requires eq="mingw32-automake1.5-*-mingw32-*-bin.tar" />
+        <requires eq="mingw32-automake1.6-*-mingw32-*-bin.tar" />
+        <requires eq="mingw32-automake1.7-*-mingw32-*-bin.tar" />
+        <requires eq="mingw32-automake1.8-*-mingw32-*-bin.tar" />
+        <requires eq="mingw32-automake1.9-*-mingw32-*-bin.tar" />
+        <requires eq="mingw32-automake1.10-*-mingw32-*-bin.tar" />
+        <requires eq="mingw32-automake1.11-*-mingw32-*-bin.tar" />
+        <requires eq="mingw32-libtool-*-mingw32-*-bin.tar" />
+        <requires eq="mingw32-libltdl-*-mingw32-*-dev.tar" />
+        <requires eq="mingw32-gettext-*-mingw32-*-bin.tar" />
+        <requires eq="mingw32-gettext-*-mingw32-*-dev.tar" />
+        <requires eq="mingw32-libiconv-*-mingw32-*-bin.tar" />
+        <requires eq="mingw32-libiconv-*-mingw32-*-dev.tar" />
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/mingw32-base.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/mingw32-base.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/mingw32-base.xml	(revision 1046)
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://www.mingw.org" issue="2013072200">
+
+  <!-- File: mingw32-base.xml -->
+  <!-- This is a preliminary catalogue to facilitate the release of
+       mingw-get-0.1-mingw32-alpha-3. It has been modified to support
+       the deployment of gcc-4.5.0-1 and msys-base.
+    -->
+
+  <package-collection subsystem="mingw32">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="mingw32-base" alias="base mingw mingw32" class="virtual" >
+
+      <affiliate group="Basic Setup" />
+      <affiliate group="MinGW Base System" />
+
+      <description lang="en" title="A Basic MinGW Installation" >
+        <paragraph>This meta package provides a basic GCC installation,
+          and includes the C compiler, linker and other binary tools,
+          the runtime libraries and windows API support, mingw32-make,
+          and a debugger. Other components can be added manually as needed.
+        </paragraph>
+      </description>
+
+      <component class="bin">
+        <release tarname="mingw32-base-2013072200-mingw32-bin.meta" />
+        <requires eq="mingw32-gcc-*-mingw32-*-bin.tar" />
+        <requires eq="mingw32-gcc-*-mingw32-*-lic.tar" />
+        <requires eq="mingw32-make-*-mingw32-*-bin.tar" />
+        <requires eq="mingw32-gdb-*-mingw32-*-bin.tar" />
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/mingw32-basic-bsdtar.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/mingw32-basic-bsdtar.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/mingw32-basic-bsdtar.xml	(revision 1046)
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://mingw.org" issue="2012073100">
+
+  <!-- File: mingw32-basic-bsdtar.xml -->
+
+  <package-collection subsystem="mingw32">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="mingw32-basic-bsdtar" alias="basic-bsdtar">
+      <description lang="en" title="standalone version of bsdtar" >
+        <paragraph>The mingw32-basic-bsdtar package provides an implementation
+          of tar(1) for native Win32 platforms that is statically linked -- that
+          is, has no dependencies on external DLLs other than those provided by
+          the Win32 platform.  basic-bsdtar has somewhat limited functionality
+          compared to the other versions of bsdtar provided by the MinGW/MSYS
+          project (msys-bsdtar and mingw32-bsdtar).  However, it supports tar
+          archives in the ustar, pax, and gnutar formats, compressed using gzip,
+          bzip2, lzma, or xz.
+        </paragraph>
+      </description>
+
+      <!-- licence information is included in the -bin package -->
+      <licence tarname="basic-bsdtar-%-mingw32-%-bin.tar.%" />
+      <source tarname="basic-bsdtar-%-mingw32-%-src.tar.%" />
+
+      <component class="bin">
+        <release tarname="basic-bsdtar-2.8.3-1-mingw32-bin.tar.lzma" />
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/mingw32-binutils.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/mingw32-binutils.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/mingw32-binutils.xml	(revision 1046)
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://www.mingw.org" issue="2015092000">
+
+  <!-- File: mingw32-binutils.xml ~~ mingw-get package description for GNU binutils -->
+
+  <package-collection subsystem="mingw32">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="mingw32-binutils" alias="binutils">
+      <affiliate group="MinGW Compiler Suite" />
+      <description lang="en" title="The GNU Binary File Utilities">
+        <paragraph> This is a required component of the MinGW Compiler Suite.
+        </paragraph>
+        <paragraph>This package provides the GNU assembler, linker, archive
+          librarian, and other utilities for manipulating object format files.
+        </paragraph>
+        <paragraph>This package is enhanced by the libiconv and gettext DLL if
+          they are installed.  It does not require them to operate.
+        </paragraph>
+      </description>
+
+      <source tarname="binutils-%-mingw32-src.tar.%" />
+      <licence tarname="binutils-%-mingw32-lic.tar.%" />
+
+      <component class="bin">
+        <requires eq="mingw32-libintl-*-mingw32-*-dll-8.tar" />
+        <release tarname="binutils-2.25.1-1-mingw32-bin.tar.xz" />
+        <release tarname="binutils-2.24-1-mingw32-bin.tar.xz" />
+        <release tarname="binutils-2.23.2-1-mingw32-bin.tar.lzma" >
+          <requires eq="binutils-%-mingw32-dev.tar.lzma" />
+          <requires eq="mingw32-libz-*-dll-1.tar" />
+          <requires eq="mingw32-libgcc-*-dll-1.tar" />
+        </release>
+        <release tarname="binutils-2.23.1-1-mingw32-bin.tar.lzma" />
+        <release tarname="binutils-2.22-1-mingw32-bin.tar.lzma" />
+        <release tarname="binutils-2.21.53-1-mingw32-bin.tar.lzma" />
+        <release tarname="binutils-2.21-3-mingw32-bin.tar.lzma" />
+        <release tarname="binutils-2.21-2-mingw32-bin.tar.lzma" />
+        <release tarname="binutils-2.21.1-2-mingw32-bin.tar.lzma" />
+        <release tarname="binutils-2.21.1-1-mingw32-bin.tar.lzma" />
+        <release tarname="binutils-2.20.51-1-mingw32-bin.tar.lzma" />
+        <release tarname="binutils-2.20.1-2-mingw32-bin.tar.gz" />
+        <release tarname="binutils-2.20-1-mingw32-bin.tar.gz" />
+        <release tarname="binutils-2.19.1-mingw32-bin.tar.gz" />
+      </component>
+
+      <component class="dev">
+        <release tarname="binutils-2.25.1-1-mingw32-dev.tar.xz" />
+        <release tarname="binutils-2.24-1-mingw32-dev.tar.xz" />
+        <release tarname="binutils-2.23.2-1-mingw32-dev.tar.lzma" />
+      </component>
+
+      <component class="doc">
+        <description lang="en">
+          <paragraph>As of release 2.24-1, this "doc" component package has
+            been superseded by the "info" and "man" component packages; this
+            component package now delivers no content, will not be updated
+            for subsequent releases, and may be safely removed.
+          </paragraph>
+        </description>
+        <release tarname="binutils-2.24-1-mingw32-doc.tar.xz">
+          <download tarname="none" />
+          <requires eq="binutils-%-mingw32-info.tar" />
+          <requires eq="binutils-%-mingw32-man.tar" />
+        </release>
+        <release tarname="binutils-2.23.2-1-mingw32-doc.tar.lzma" />
+        <release tarname="binutils-2.23.1-1-mingw32-doc.tar.lzma" />
+        <release tarname="binutils-2.22-1-mingw32-doc.tar.lzma" />
+        <release tarname="binutils-2.21.53-1-mingw32-doc.tar.lzma" />
+        <release tarname="binutils-2.21.1-2-mingw32-doc.tar.lzma" />
+        <release tarname="binutils-2.21.1-1-mingw32-doc.tar.lzma" />
+        <release tarname="binutils-2.21-3-mingw32-doc.tar.lzma" />
+        <release tarname="binutils-2.21-2-mingw32-doc.tar.lzma" />
+      </component>
+
+      <component class="info">
+        <release tarname="binutils-2.25.1-1-mingw32-info.tar.xz" />
+        <release tarname="binutils-2.24-1-mingw32-info.tar.xz" />
+        <release tarname="binutils-2.23.2-1-mingw32-info.tar.lzma" />
+      </component>
+
+      <component class="man">
+        <release tarname="binutils-2.25.1-1-mingw32-man.tar.xz" />
+        <release tarname="binutils-2.24-1-mingw32-man.tar.xz" />
+        <release tarname="binutils-2.23.2-1-mingw32-man.tar.lzma" />
+      </component>
+
+      <component class="lang">
+        <release tarname="binutils-2.25.1-1-mingw32-lang.tar.xz" />
+        <release tarname="binutils-2.24-1-mingw32-lang.tar.xz" />
+        <release tarname="binutils-2.23.2-1-mingw32-lang.tar.lzma" />
+        <release tarname="binutils-2.23.1-1-mingw32-lang.tar.lzma" />
+        <release tarname="binutils-2.22-1-mingw32-lang.tar.lzma" />
+        <release tarname="binutils-2.21.53-1-mingw32-lang.tar.lzma" />
+        <release tarname="binutils-2.21.1-2-mingw32-lang.tar.lzma" />
+        <release tarname="binutils-2.21.1-1-mingw32-lang.tar.lzma" />
+        <release tarname="binutils-2.21-3-mingw32-lang.tar.lzma" />
+        <release tarname="binutils-2.21-2-mingw32-lang.tar.lzma" />
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab tw=80 ts=2 sw=2 ff=unix: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/mingw32-bzip2.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/mingw32-bzip2.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/mingw32-bzip2.xml	(revision 1046)
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://mingw.org" issue="2012073100">
+
+  <!-- File: mingw32-bzip2.xml -->
+
+  <package-collection subsystem="mingw32">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="mingw32-bzip2" alias="bzip2">
+      <description lang="en" title="a high-quality data compressor">
+        <paragraph>bzip2 is a freely available, patent free (see below),
+          high-quality data compressor.  It typically compresses files to within
+          10% to 15% of the best available techniques (the PPM family of
+          statistical compressors), whilst being around twice as fast at
+          compression and six times faster at decompression.  This package
+          provides the utility programs, scripts, documentation, and development
+          files. The associated mingw32-libbz2 package provides the runtime
+          library.
+        </paragraph>
+      </description>
+
+      <licence tarname="bzip2-%-mingw32-%-lic.tar.%" />
+      <source tarname="bzip2-%-mingw32-%-src.tar.%" />
+
+      <component class="bin">
+        <release tarname="bzip2-1.0.6-4-mingw32-bin.tar.lzma" >
+          <requires eq="mingw32-libbz2-%-mingw32-%-dll-2.tar" />
+        </release>
+        <release tarname="bzip2-1.0.6-1-mingw32-bin.tar.lzma" >
+          <requires eq="mingw32-libbz2-%-mingw32-%-dll-2.tar" />
+        </release>
+        <release tarname="bzip2-1.0.5-2-mingw32-bin.tar.gz" >
+          <requires eq="mingw32-libbz2-%-mingw32-%-dll-2.tar" />
+        </release>
+      </component>
+
+      <component class="doc">
+        <release tarname="bzip2-1.0.6-4-mingw32-doc.tar.lzma" />
+        <release tarname="bzip2-1.0.6-1-mingw32-doc.tar.lzma" />
+        <release tarname="bzip2-1.0.5-2-mingw32-doc.tar.gz" />
+      </component>
+
+      <component class="lic">
+        <release tarname="bzip2-1.0.6-4-mingw32-lic.tar.lzma" />
+        <release tarname="bzip2-1.0.6-1-mingw32-lic.tar.lzma" />
+        <release tarname="bzip2-1.0.5-2-mingw32-lic.tar.gz" />
+      </component>
+
+      <component class="man">
+        <release tarname="bzip2-1.0.6-4-mingw32-man.tar.lzma" />
+        <release tarname="bzip2-1.0.6-1-mingw32-man.tar.lzma" />
+        <release tarname="bzip2-1.0.5-2-mingw32-man.tar.gz" />
+      </component>
+
+      <component class="dev">
+        <release tarname="bzip2-1.0.6-4-mingw32-dev.tar.lzma" >
+          <requires eq="mingw32-libbz2-%-mingw32-%-dll-2.tar" />
+        </release>
+        <release tarname="bzip2-1.0.6-1-mingw32-dev.tar.lzma" >
+          <requires eq="mingw32-libbz2-%-mingw32-%-dll-2.tar" />
+        </release>
+        <release tarname="bzip2-1.0.5-2-mingw32-dev.tar.gz" >
+          <requires eq="mingw32-libbz2-%-mingw32-%-dll-2.tar" />
+        </release>
+      </component>
+    </package>
+
+    <package name="mingw32-libbz2" alias="libbz2">
+      <description lang="en" title="runtime library for bzip2">
+        <paragraph>bzip2 is a freely available, patent free (see below),
+          high-quality data compressor.  It typically compresses files to within
+          10% to 15% of the best available techniques (the PPM family of a
+          statistical compressors), whilst being around twice as fast at
+          compression and six times faster at decompression.  This package
+          provides the runtime library.  The associated mingw32-bzip2 package
+          provides utilities, scripts, documentation, and development files.
+        </paragraph>
+      </description>
+
+      <licence tarname="bzip2-%-mingw32-%-lic.tar.%" />
+      <source tarname="bzip2-%-mingw32-%-src.tar.%" />
+
+      <component class="dll">
+        <release tarname="libbz2-1.0.6-4-mingw32-dll-2.tar.lzma" >
+          <requires eq="mingw32-libgcc-*-mingw32-dll-1.tar" />
+        </release>
+        <release tarname="libbz2-1.0.6-1-mingw32-dll-2.tar.lzma" />
+        <release tarname="libbz2-1.0.5-2-mingw32-dll-2.tar.gz" />
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/mingw32-contrib-package-list.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/mingw32-contrib-package-list.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/mingw32-contrib-package-list.xml	(revision 1046)
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://www.mingw.org" issue="2016010800">
+
+  <!-- File: mingw32-contrib-package-list.xml -->
+
+  <package-group-hierarchy>
+    <package-group name="MinGW" expand="true">
+      <package-group name="MinGW Contributed">
+        <package-group name="MinGW Contributed Applications" />
+        <package-group name="MinGW Contributed Libraries" />
+      </package-group>
+    </package-group>
+  </package-group-hierarchy>
+
+  <!-- "real" packages ~~ user contributed -->
+  <package-list issue="2016010400" catalogue="mingw32-libunistring" />
+  <package-list issue="2016010800" catalogue="mingw32-ncurses" />
+  <package-list issue="2016010800" catalogue="mingw32-pdcurses" />
+  <package-list issue="2013101200" catalogue="mingw32-tcltk" />
+  <package-list issue="2013102800" catalogue="mingw32-xerces-c" />
+
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/mingw32-dos2unix.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/mingw32-dos2unix.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/mingw32-dos2unix.xml	(revision 1046)
@@ -0,0 +1,118 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://mingw.org" issue="2015122200">
+
+  <!-- File: mingw32-dos2unix.xml -->
+
+  <package-collection subsystem="mingw32">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="mingw32-dos2unix" alias="mingw32-cygutils-dos2unix cygutils-dos2unix dos2unix unix2dos">
+      <description lang="en" title="Convert line breaks between Unix, Dos, and Mac">
+        <paragraph> The dos2unix package provides manipulation utilities for
+          converting the line break characters of text files between the unix
+          convention (0x0a), the DOS/Windows convention (0x0d 0x0a), and the old
+          (pre-OS-X) Mac convention (0x0d).
+        </paragraph>
+      </description>
+
+      <licence tarname="dos2unix-%-mingw32-%-lic.tar.%" />
+      <source tarname="dos2unix-%-mingw32-%-src.tar.%" />
+
+      <component class="bin">
+        <release tarname="dos2unix-7.3.2-1-mingw32-bin.tar.lzma" >
+          <requires eq="mingw32-libiconv-*-mingw32-*-dll-2.tar" />
+          <requires eq="mingw32-libintl-*-mingw32-*-dll-8.tar" />
+        </release>
+        <release tarname="dos2unix-7.2.3-1-mingw32-bin.tar.lzma" >
+          <requires eq="mingw32-libiconv-*-mingw32-*-dll-2.tar" />
+          <requires eq="mingw32-libintl-*-mingw32-*-dll-8.tar" />
+        </release>
+        <release tarname="dos2unix-7.2.2-1-mingw32-bin.tar.lzma" >
+          <requires eq="mingw32-libiconv-*-mingw32-*-dll-2.tar" />
+          <requires eq="mingw32-libintl-*-mingw32-*-dll-8.tar" />
+        </release>
+        <release tarname="dos2unix-7.1-1-mingw32-bin.tar.lzma" >
+          <requires eq="mingw32-libiconv-*-mingw32-*-dll-2.tar" />
+          <requires eq="mingw32-libintl-*-mingw32-*-dll-8.tar" />
+        </release>
+        <release tarname="dos2unix-6.0.6-1-mingw32-bin.tar.lzma" >
+          <requires eq="mingw32-libiconv-*-mingw32-*-dll-2.tar" />
+          <requires eq="mingw32-libintl-*-mingw32-*-dll-8.tar" />
+        </release>
+        <release tarname="dos2unix-6.0.5-1-mingw32-bin.tar.lzma" >
+          <requires eq="mingw32-libiconv-*-mingw32-*-dll-2.tar" />
+          <requires eq="mingw32-libintl-*-mingw32-*-dll-8.tar" />
+        </release>
+        <release tarname="dos2unix-6.0.4-1-mingw32-bin.tar.lzma" >
+          <requires eq="mingw32-libiconv-*-mingw32-*-dll-2.tar" />
+          <requires eq="mingw32-libintl-*-mingw32-*-dll-8.tar" />
+        </release>
+        <release tarname="dos2unix-6.0.3-1-mingw32-bin.tar.lzma" >
+          <requires eq="mingw32-libiconv-*-mingw32-*-dll-2.tar" />
+          <requires eq="mingw32-libintl-*-mingw32-*-dll-8.tar" />
+        </release>
+        <release tarname="dos2unix-6.0.2-1-mingw32-bin.tar.lzma" >
+          <requires eq="mingw32-libiconv-*-mingw32-*-dll-2.tar" />
+          <requires eq="mingw32-libintl-*-mingw32-*-dll-8.tar" />
+        </release>
+        <release tarname="dos2unix-6.0.1-1-mingw32-bin.tar.lzma" >
+          <requires eq="mingw32-libiconv-*-mingw32-*-dll-2.tar" />
+          <requires eq="mingw32-libintl-*-mingw32-*-dll-8.tar" />
+        </release>
+        <release tarname="dos2unix-6.0-1-mingw32-bin.tar.lzma" >
+          <requires eq="mingw32-libiconv-*-mingw32-*-dll-2.tar" />
+          <requires eq="mingw32-libintl-*-mingw32-*-dll-8.tar" />
+        </release>
+        <release tarname="dos2unix-5.3.3-1-mingw32-bin.tar.lzma" >
+          <requires eq="mingw32-libiconv-*-mingw32-*-dll-2.tar" />
+          <requires eq="mingw32-libintl-*-mingw32-*-dll-8.tar" />
+        </release>
+        <release tarname="cygutils-dos2unix-1.3.4-1-mingw32-bin.tar.lzma">
+          <licence tarname="cygutils-%-mingw32-%-lic.tar.%" />
+          <source tarname="cygutils-%-mingw32-%-src.tar.%" />
+          <requires eq="mingw32-libpopt-*-mingw32-*-dll-0.tar" />
+        </release>
+      </component>
+
+      <component class="doc">
+        <release tarname="dos2unix-7.3.2-1-mingw32-doc.tar.lzma" />
+        <release tarname="dos2unix-7.2.3-1-mingw32-doc.tar.lzma" />
+        <release tarname="dos2unix-7.2.2-1-mingw32-doc.tar.lzma" />
+        <release tarname="dos2unix-7.1-1-mingw32-doc.tar.lzma" />
+        <release tarname="dos2unix-6.0.6-1-mingw32-doc.tar.lzma" />
+        <release tarname="dos2unix-6.0.5-1-mingw32-doc.tar.lzma" />
+        <release tarname="dos2unix-6.0.4-1-mingw32-doc.tar.lzma" />
+        <release tarname="dos2unix-6.0.3-1-mingw32-doc.tar.lzma" />
+        <release tarname="dos2unix-6.0.2-1-mingw32-doc.tar.lzma" />
+        <release tarname="dos2unix-6.0.1-1-mingw32-doc.tar.lzma" />
+        <release tarname="dos2unix-6.0-1-mingw32-doc.tar.lzma" />
+        <release tarname="dos2unix-5.3.3-1-mingw32-doc.tar.lzma" />
+        <release tarname="cygutils-1.3.4-1-mingw32-doc.tar.lzma">
+          <licence tarname="cygutils-%-mingw32-%-lic.tar.%" />
+          <source tarname="cygutils-%-mingw32-%-src.tar.%" />
+        </release>
+      </component>
+
+      <component class="lic">
+        <release tarname="dos2unix-7.3.2-1-mingw32-lic.tar.lzma" />
+        <release tarname="dos2unix-7.2.3-1-mingw32-lic.tar.lzma" />
+        <release tarname="dos2unix-7.2.2-1-mingw32-lic.tar.lzma" />
+        <release tarname="dos2unix-7.1-1-mingw32-lic.tar.lzma" />
+        <release tarname="dos2unix-6.0.6-1-mingw32-lic.tar.lzma" />
+        <release tarname="dos2unix-6.0.5-1-mingw32-lic.tar.lzma" />
+        <release tarname="dos2unix-6.0.4-1-mingw32-lic.tar.lzma" />
+        <release tarname="dos2unix-6.0.3-1-mingw32-lic.tar.lzma" />
+        <release tarname="dos2unix-6.0.2-1-mingw32-lic.tar.lzma" />
+        <release tarname="dos2unix-6.0.1-1-mingw32-lic.tar.lzma" />
+        <release tarname="dos2unix-6.0-1-mingw32-lic.tar.lzma" />
+        <release tarname="dos2unix-5.3.3-1-mingw32-lic.tar.lzma" />
+        <release tarname="cygutils-1.3.4-1-mingw32-lic.tar.lzma">
+          <licence tarname="cygutils-%-mingw32-%-lic.tar.%" />
+          <source tarname="cygutils-%-mingw32-%-src.tar.%" />
+        </release>
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/mingw32-expat.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/mingw32-expat.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/mingw32-expat.xml	(revision 1046)
@@ -0,0 +1,92 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://mingw.org" issue="2013091000">
+  <package-collection subsystem="mingw32">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+    <package name="mingw32-expat" alias="expat">
+      <description lang="en" title="XML parsing library written in C">
+        <paragraph>expat is a C library for parsing XML written by James
+          Clark. Expat is a stream-oriented XML parser.  This means that
+          you register handlers with the parser before starting the parse.
+          These handlers are called when the parser discovers the
+          associated structures in the document being parsed.  A start tag
+          is an example of the kind of structures for which you may
+          register handlers.
+        </paragraph>
+        <paragraph>The mingw32-expat package provides the xmlwf validation
+          tool and documentation related to the library. The associated
+          mingw32-libexpat package provides the runtime library and related
+          development files.
+        </paragraph>
+      </description>
+
+      <licence tarname="expat-%-mingw32-%-lic.tar.%" />
+      <source tarname="expat-%-mingw32-%-src.tar.%" />
+
+      <component class="bin">
+	<release tarname="expat-2.1.0-1-mingw32-bin.tar.lzma" >
+	  <requires eq="mingw32-libexpat-%-mingw32-%-dll-1.tar" />
+	</release>
+        <release tarname="expat-2.0.1-1-mingw32-bin.tar.gz" >
+	  <requires eq="mingw32-libexpat-%-mingw32-%-dll-1.tar" />
+	</release>
+      </component>
+
+      <component class="doc">
+	<release tarname="expat-2.1.0-1-mingw32-doc.tar.lzma" />
+        <release tarname="expat-2.0.1-1-mingw32-doc.tar.gz" />
+      </component>
+
+      <component class="man">
+	<release tarname="expat-2.1.0-1-mingw32-man.tar.lzma" />
+      </component>
+
+      <component class="lic">
+	<release tarname="expat-2.1.0-1-mingw32-lic.tar.lzma" />
+        <release tarname="expat-2.0.1-1-mingw32-lic.tar.gz" />
+      </component>
+
+    </package>
+    <package name="mingw32-libexpat" alias="libexpat">
+      <description lang="en" title="XML parsing library written in C">
+        <paragraph>expat is a C library for parsing XML written by James
+          Clark. Expat is a stream-oriented XML parser.  This means that
+          you register handlers with the parser before starting the parse.
+          These handlers are called when the parser discovers the
+          associated structures in the document being parsed.  A start tag
+          is an example of the kind of structures for which you may
+          register handlers.
+        </paragraph>
+        <paragraph>The mingw32-libexpat package provides the runtime library
+          and related development files for expat.  The associated
+          mingw32-expat package provides the xmlwf validation tool and
+          documentation related to the library.
+        </paragraph>
+	<paragraph>NOTE: As of release 2.1.0-1 this DLL is now part of the
+	primary package.
+	</paragraph>
+      </description>
+
+      <licence tarname="expat-%-mingw32-%-lic.tar.%" />
+      <source tarname="expat-%-mingw32-%-src.tar.%" />
+
+      <component class="dll">
+	<release tarname="libexpat-2.1.0-1-mingw32-dll-1.tar" >
+	  <download tarname="expat-2.1.0-1-mingw32-dll.tar.lzma" />
+	</release>
+        <release tarname="libexpat-2.0.1-1-mingw32-dll-1.tar.gz" />
+      </component>
+
+      <component class="dev">
+	<release tarname="libexpat-2.1.0-1-mingw32-dev.tar" >
+	  <download tarname="expat-2.1.0-1-mingw32-dev.tar.lzma" />
+	  <requires eq="mingw32-libexpat-%-mingw32-%-dll-1.tar" />
+	</release>
+        <release tarname="libexpat-2.0.1-1-mingw32-dev.tar.gz" >
+	  <requires eq="mingw32-libexpat-%-mingw32-%-dll-1.tar" />
+	</release>
+      </component>
+    </package>
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab tw=80 ts=2 sw=2 ff=unix: -->
+
Index: Daodan/MinGW/var/lib/mingw-get/data/mingw32-gcc-tools.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/mingw32-gcc-tools.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/mingw32-gcc-tools.xml	(revision 1046)
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://mingw.org" issue="2012073100">
+
+  <!-- File: mingw32-gcc-tools.xml -->
+
+  <package-collection subsystem="mingw32">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+    <package name="mingw32-gcc-tools-epoch2-autoconf">
+      <description lang="en"
+        title="special autoconf for gcc development">
+        <paragraph>Gcc requires that an unpatched, pristine version of autoconf
+          be used when preparing patches for official submission. For various
+          reasons [1] these pristine versions cannot coexist with the existing
+          mingw32-autoconf packages in /mingw. This package provides autoconf-2.64
+          and installs into /mingw/opt/gcc-tools/epoch2/{bin,share} for use when
+          developing gcc-4.5.x and gcc-4.6.x. It is also used when building
+          gettext-0.18.1.1.
+        </paragraph>
+        <paragraph>gcc-4.3.x and gcc-4.4.x development requires autoconf-2.59</paragraph>
+        <paragraph>gcc-4.5.x and gcc-4.6.x development requires autoconf-2.64</paragraph>
+        <paragraph>[1] http://cygwin.com/ml/cygwin-apps/2009-01/msg00007.html</paragraph>
+        <paragraph>Autoconf is an extensible package of M4 macros that
+          produce shell scripts to automatically configure software source
+          code packages.  These scripts can adapt the packages to many
+          kinds of UNIX-like systems without manual user intervention.
+          Autoconf creates a configuration script for a package from a
+          template file that lists the operating system features that the
+          package can use, in the form of M4 macro calls.
+        </paragraph>
+      </description>
+
+      <licence tarname="gcc-tools-epoch2-autoconf-%-mingw32-%-lic.tar.%" />
+      <source tarname="gcc-tools-epoch2-autoconf-%-mingw32-%-src.tar.%" />
+
+      <component class="bin">
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+        <requires eq="msys-coreutils-*-msys-*-bin.tar" />
+        <requires eq="msys-m4-*-msys-*-bin.tar" />
+        <requires eq="msys-perl-*-msys-*-bin.tar" />
+        <requires eq="msys-texinfo-*-msys-*-bin.tar" />
+        <release tarname="gcc-tools-epoch2-autoconf-2.64-1-mingw32-bin.tar.lzma" />
+      </component>
+
+      <component class="doc">
+        <release tarname="gcc-tools-epoch2-autoconf-2.64-1-mingw32-doc.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="gcc-tools-epoch2-autoconf-2.64-1-mingw32-lic.tar.lzma" />
+      </component>
+    </package>
+
+    <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+    <package name="mingw32-gcc-tools-epoch2-automake">
+      <description lang="en"
+        title="special automake for gcc development">
+        <paragraph>Gcc requires that an unpatched, pristine version of automake
+          be used when preparing patches for official submission. For various
+          reasons [1] these pristine versions cannot coexist with the existing
+          mingw32-automake packages in /mingw.  This package provides
+          automake-1.11 and installs into /mingw/opt/gcc-tools/epoch2/{bin,share}
+          for use when developing gcc-4.5.x and gcc-4.6.x.  It is also used when
+          building gettext-0.18.1.1.
+        </paragraph>
+        <paragraph>gcc-4.3.x and gcc-4.4.x development requires the latest
+          release in the automake-1.9.x series.
+        </paragraph>
+        <paragraph>gcc-4.5.x and gcc-4.6.x development requires the latest
+          release in the automake-1.11.x series.
+        </paragraph>
+        <paragraph>[1] http://cygwin.com/ml/cygwin-apps/2009-01/msg00007.html</paragraph>
+        <paragraph>Automake is a tool for automatically generating
+          Makefile.in files compliant with the GNU Coding Standards.
+          Automake requires the use of Autoconf.
+        </paragraph>
+      </description>
+
+      <licence tarname="gcc-tools-epoch2-automake-%-mingw32-%-lic.tar.%" />
+      <source tarname="gcc-tools-epoch2-automake-%-mingw32-%-src.tar.%" />
+
+      <component class="bin">
+        <requires eq="mingw32-gcc-tools-epoch2-autoconf-*-mingw32-*-bin.tar" />
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+        <requires eq="msys-coreutils-*-msys-*-bin.tar" />
+        <requires eq="msys-m4-*-msys-*-bin.tar" />
+        <requires eq="msys-perl-*-msys-*-bin.tar" />
+        <requires eq="msys-texinfo-*-msys-*-bin.tar" />
+        <release tarname="gcc-tools-epoch2-automake-1.11.1-1-mingw32-bin.tar.lzma" />
+      </component>
+
+      <component class="doc">
+        <release tarname="gcc-tools-epoch2-automake-1.11.1-1-mingw32-doc.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="gcc-tools-epoch2-automake-1.11.1-1-mingw32-lic.tar.lzma" />
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/mingw32-gcc3.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/mingw32-gcc3.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/mingw32-gcc3.xml	(revision 1046)
@@ -0,0 +1,149 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://www.mingw.org" issue="2011050500">
+
+  <!-- File: mingw32-gcc3.xml ~~ mingw-get package list for GCC version 3 -->
+
+  <package-collection subsystem="mingw32">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="mingw32-gcc-v3-core" alias="gcc-v3 gcc-v3-core">
+      <affiliate group="MinGW Compiler Suite" />
+      <description lang="en" title="The GNU C Compiler">
+        <paragraph>
+          This package is specific to Version 3 of the GNU Compiler
+          Collection; it provides the MinGW implementation of the
+          GNU C language compiler; this includes the C preprocessor,
+          and the common back end processors which are necessary to
+          support all other language compilers in the GNU Compiler
+          Collection.
+        </paragraph>
+        <paragraph>
+          This is a required component of the MinGW Compiler Suite,
+          for those users who continue the use GCC Version 3.
+        </paragraph>
+      </description>
+      <component class="bin">
+        <requires ge="mingw32-binutils-*-mingw32-bin.tar" />
+        <requires ge="mingw32-mingwrt-*-mingw32-dev.tar" />
+        <requires ge="mingw32-mingwrt-*-mingw32-dll.tar" />
+        <requires ge="mingw32-w32api-*-mingw32-dev.tar" />
+        <release tarname="gcc-v3-core-3.4.5-20060117-3-mingw32-bin.tar.gz">
+          <source tarname="gcc-core-3.4.5-20060117-2-src.tar.gz" />
+          <download tarname="gcc-core-3.4.5-20060117-3.tar.gz" />
+        </release>
+      </component>
+    </package>
+
+    <package name="mingw32-gcc-v3-ada" alias="gcc-v3-ada">
+      <affiliate group="MinGW Compiler Suite" />
+      <description lang="en" title="The GNU Ada Compiler">
+        <paragraph>
+          This package provides the MinGW implementation of the
+          GNU Ada language compiler for GCC Version 3.
+        </paragraph>
+        <paragraph>
+          This is an optional component of the MinGW Compiler Suite;
+          you require it only if you use GCC Version 3, and you wish
+          to compile programs written in the Ada language.
+        </paragraph>
+      </description>
+      <component class="bin">
+        <requires eq="mingw32-gcc-v3-core-%-mingw32-bin.tar" />
+        <release tarname="gcc-v3-ada-3.4.5-20060117-3-mingw32-bin.tar.gz">
+          <source tarname="gcc-ada-3.4.5-20060117-2-src.tar.gz" />
+          <download tarname="gcc-ada-3.4.5-20060117-3.tar.gz" />
+        </release>
+      </component>
+    </package>
+
+    <package name="mingw32-gcc-v3-g++" alias="gcc-v3-g++ gcc-v3-c++">
+      <affiliate group="MinGW Compiler Suite" />
+      <description lang="en" title="The GNU C++ Compiler">
+        <paragraph>
+          This package provides the MinGW implementation of the
+          GNU C++ language compiler for GCC Version 3.
+        </paragraph>
+        <paragraph>
+          This is an optional component of the MinGW Compiler Suite;
+          you require it only if you use GCC Version 3, and you wish
+          to compile programs written in the C++ language.
+        </paragraph>
+      </description>
+      <component class="bin">
+        <requires eq="mingw32-gcc-v3-core-%-mingw32-bin.tar" />
+        <release tarname="gcc-v3-g++-3.4.5-20060117-3-mingw32-bin.tar.gz">
+          <source tarname="gcc-g++-3.4.5-20060117-2-src.tar.gz" />
+          <download tarname="gcc-g++-3.4.5-20060117-3.tar.gz" />
+        </release>
+      </component>
+    </package>
+
+    <package name="mingw32-gcc-v3-fortran" alias="gcc-v3-fortran gcc-v3-g77 g77 f77">
+      <affiliate group="MinGW Compiler Suite" />
+      <description lang="en" title="The GNU FORTRAN Compiler">
+        <paragraph>
+          This package provides the MinGW implementation of the
+          GNU FORTRAN language compiler for GCC Version 3.
+        </paragraph>
+        <paragraph>
+          This is an optional component of the MinGW Compiler Suite;
+          you require it only if you use GCC Version 3, and you wish
+          to compile programs written in the FORTRAN language.
+        </paragraph>
+      </description>
+      <component class="bin">
+        <requires eq="mingw32-gcc-v3-core-%-mingw32-bin.tar" />
+        <release tarname="gcc-v3-g77-3.4.5-20060117-3-mingw32-bin.tar.gz">
+          <source tarname="gcc-g77-3.4.5-20060117-2-src.tar.gz" />
+          <download tarname="gcc-g77-3.4.5-20060117-3.tar.gz" />
+        </release>
+      </component>
+    </package>
+
+    <package name="mingw32-gcc-v3-java" alias="gcc-v3-java">
+      <affiliate group="MinGW Compiler Suite" />
+      <description lang="en" title="The GNU Java Compiler">
+        <paragraph>
+          This package provides the MinGW implementation of the
+          GNU Java language compiler for GCC Version 3.
+        </paragraph>
+        <paragraph>
+          This is an optional component of the MinGW Compiler Suite;
+          you require it only if you use GCC Version 3, and you wish
+          to compile programs written in the Java language.
+        </paragraph>
+      </description>
+      <component class="bin">
+        <requires eq="mingw32-gcc-v3-core-%-mingw32-bin.tar" />
+        <release tarname="gcc-v3-java-3.4.5-20060117-3-mingw32-bin.tar.gz">
+          <source tarname="gcc-java-3.4.5-20060117-2-src.tar.gz" />
+          <download tarname="gcc-java-3.4.5-20060117-3.tar.gz" />
+        </release>
+      </component>
+    </package>
+
+    <package name="mingw32-gcc-v3-objc" alias="gcc-v3-objc">
+      <affiliate group="MinGW Compiler Suite" />
+      <description lang="en" title="The GNU Objective-C Compiler">
+        <paragraph>
+          This package provides the MinGW implementation of the
+          GNU Objective-C language compiler for GCC Version 3.
+        </paragraph>
+        <paragraph>
+          This is an optional component of the MinGW Compiler Suite;
+          you require it only if you use GCC Version 3, and you wish
+          to compile programs written in the Objective-C language.
+        </paragraph>
+      </description>
+      <component class="bin">
+        <requires eq="mingw32-gcc-v3-core-%-mingw32-bin.tar" />
+        <release tarname="gcc-v3-objc-3.4.5-20060117-3-mingw32-bin.tar.gz">
+          <source tarname="gcc-objc-3.4.5-20060117-2-src.tar.gz" />
+          <download tarname="gcc-objc-3.4.5-20060117-3.tar.gz" />
+        </release>
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/mingw32-gcc4.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/mingw32-gcc4.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/mingw32-gcc4.xml	(revision 1046)
@@ -0,0 +1,953 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://www.mingw.org" issue="2016082400">
+
+  <!-- File: mingw32-gcc4.xml ~~ mingw-get package list for GCC version 4.x -->
+
+  <package-collection subsystem="mingw32">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="mingw32-gcc" alias="gcc gcc-core mingw32-gcc-core">
+      <affiliate group="MinGW Compiler Suite" />
+      <description lang="en" title="The GNU C Compiler">
+        <paragraph>
+          This package provides the MinGW implementation of the
+          GNU C language compiler; this includes the C preprocessor,
+          and the common back end processors which are necessary to
+          support all other language compilers in the GNU Compiler
+          Collection.
+        </paragraph>
+        <paragraph>
+          This is a required component of the MinGW Compiler Suite.
+        </paragraph>
+      </description>
+
+      <source tarname="gcc-%-mingw32-src.tar.*" />
+      <licence tarname="gcc-%-mingw32-lic.tar.*" />
+
+      <component class="lic">
+        <release tarname="gcc-5.3.0-2-mingw32-lic.tar.xz" />
+        <release tarname="gcc-4.9.3-1-mingw32-lic.tar.xz" />
+        <release tarname="gcc-core-4.8.1-4-mingw32-lic.tar.lzma" />
+        <release tarname="gcc-core-4.8.1-3-mingw32-lic.tar.lzma" />
+        <release tarname="gcc-core-4.8.1-2-mingw32-lic.tar.lzma" />
+        <release tarname="gcc-core-4.8.1-1-mingw32-lic.tar.lzma" />
+        <release tarname="gcc-4.7.2-1-mingw32-lic.tar.lzma" />
+        <release tarname="gcc-4.7.0-1-mingw32-lic.tar.lzma" />
+        <release tarname="gcc-4.6.2-1-mingw32-lic.tar.lzma" />
+        <release tarname="gcc-4.6.1-2-mingw32-lic.tar.lzma" />
+        <release tarname="gcc-4.5.2-1-mingw32-lic.tar.lzma" />
+      </component>
+
+      <component class="bin">
+        <requires eq="binutils-*-mingw32-bin.tar" />
+        <requires eq="mingwrt-*-mingw32-dev.tar" />
+        <requires eq="w32api-*-mingw32-dev.tar" />
+        <release tarname="gcc-core-5.3.0-2-mingw32-bin.tar.xz">
+          <requires eq="libgcc-%-mingw32-dll-1.tar" />
+          <requires eq="libssp-%-mingw32-dll-0.tar" />
+          <requires eq="libgomp-%-mingw32-dll-1.tar" />
+          <requires eq="libatomic-%-mingw32-dll-1.tar" />
+          <requires eq="libquadmath-%-mingw32-dll-0.tar" />
+          <requires eq="libmpc-*-mingw32-dll-3.tar" />
+        </release>
+        <release tarname="gcc-core-4.9.3-1-mingw32-bin.tar.xz">
+          <requires eq="libgcc-%-mingw32-dll-1.tar" />
+          <requires eq="libquadmath-%-mingw32-dll-0.tar" />
+          <requires eq="libmpc-*-mingw32-dll-3.tar" />
+        </release>
+        <release tarname="gcc-core-4.8.1-4-mingw32-bin.tar.lzma">
+          <requires eq="gcc-core-%-mingw32-dev.tar" />
+        </release>
+        <release tarname="gcc-core-4.8.1-3-mingw32-bin.tar.lzma">
+          <requires eq="gcc-core-%-mingw32-dev.tar" />
+        </release>
+        <release tarname="gcc-core-4.8.1-2-mingw32-bin.tar.lzma">
+          <requires eq="gcc-core-%-mingw32-dev.tar" />
+        </release>
+        <release tarname="gcc-core-4.8.1-1-mingw32-bin.tar.lzma">
+          <requires eq="gcc-core-%-mingw32-dev.tar" />
+        </release>
+        <release tarname="gcc-core-4.7.2-1-mingw32-bin.tar.lzma">
+          <requires eq="libquadmath-%-mingw32-dll-0.tar" />
+          <requires eq="libssp-%-mingw32-dll-0.tar" />
+          <requires eq="libgomp-%-mingw32-dll-1.tar" />
+          <requires eq="libgcc-%-mingw32-dll-1.tar" />
+          <requires eq="libmpc-*-mingw32-dll-2.tar" />
+          <requires eq="pthreads-w32-*-mingw32-dev.tar" />
+        </release>
+        <release tarname="gcc-core-4.7.0-1-mingw32-bin.tar.lzma">
+          <requires eq="libquadmath-%-mingw32-dll-0.tar" />
+          <requires eq="libssp-%-mingw32-dll-0.tar" />
+          <requires eq="libgomp-%-mingw32-dll-1.tar" />
+          <requires eq="libgcc-%-mingw32-dll-1.tar" />
+          <requires eq="libmpc-*-mingw32-dll-2.tar" />
+          <requires eq="pthreads-w32-*-mingw32-dev.tar" />
+        </release>
+        <release tarname="gcc-core-4.6.2-1-mingw32-bin.tar.lzma">
+          <requires eq="libquadmath-%-mingw32-dll-0.tar" />
+          <requires eq="libssp-%-mingw32-dll-0.tar" />
+          <requires eq="libgomp-%-mingw32-dll-1.tar" />
+          <requires eq="libgcc-%-mingw32-dll-1.tar" />
+          <requires eq="libmpc-*-mingw32-dll-2.tar" />
+          <requires eq="pthreads-w32-*-mingw32-dev.tar" />
+        </release>
+        <release tarname="gcc-core-4.6.1-2-mingw32-bin.tar.lzma">
+          <requires eq="libquadmath-%-mingw32-dll-0.tar" />
+          <requires eq="libssp-%-mingw32-dll-0.tar" />
+          <requires eq="libgomp-%-mingw32-dll-1.tar" />
+          <requires eq="libgcc-%-mingw32-dll-1.tar" />
+          <requires eq="libmpc-*-mingw32-dll-2.tar" />
+          <requires eq="pthreads-w32-*-mingw32-dev.tar" />
+        </release>
+        <release tarname="gcc-core-4.5.2-1-mingw32-bin.tar.lzma">
+          <requires eq="libssp-%-mingw32-dll-0.tar" />
+          <requires eq="libgomp-%-mingw32-dll-1.tar" />
+          <requires eq="libgcc-%-mingw32-dll-1.tar" />
+          <requires eq="libmpc-*-mingw32-dll-2.tar" />
+          <requires eq="pthreads-w32-*-mingw32-dev.tar" />
+        </release>
+      </component>
+
+      <component class="dev">
+        <requires eq="mingw32-libgcc-%-mingw32-dll-1.tar" />
+        <requires eq="mingw32-libquadmath-%-mingw32-dll-0.tar" />
+        <release tarname="gcc-5.3.0-2-mingw32-dev.tar.xz">
+          <download tarname="none" />
+        </release>
+        <release tarname="gcc-4.9.3-1-mingw32-dev.tar.xz">
+          <download tarname="none" />
+        </release>
+        <release tarname="gcc-core-4.8.1-4-mingw32-dev.tar.lzma">
+          <requires eq="mingw32-libssp-%-mingw32-dll-0.tar" />
+          <requires eq="mingw32-libgomp-%-mingw32-dll-1.tar" />
+          <requires eq="mingw32-libmpc-*-mingw32-dll-3.tar" />
+        </release>
+        <release tarname="gcc-core-4.8.1-3-mingw32-dev.tar.lzma">
+          <requires eq="mingw32-libssp-%-mingw32-dll-0.tar" />
+          <requires eq="mingw32-libgomp-%-mingw32-dll-1.tar" />
+          <requires eq="mingw32-libmpc-*-mingw32-dll-3.tar" />
+        </release>
+        <release tarname="gcc-core-4.8.1-2-mingw32-dev.tar.lzma">
+          <requires eq="mingw32-libssp-%-mingw32-dll-0.tar" />
+          <requires eq="mingw32-libgomp-%-mingw32-dll-1.tar" />
+          <requires eq="mingw32-libmpc-*-mingw32-dll-2.tar" />
+        </release>
+        <release tarname="gcc-core-4.8.1-1-mingw32-dev.tar.lzma">
+          <requires eq="mingw32-libssp-%-mingw32-dll-0.tar" />
+          <requires eq="mingw32-libgomp-%-mingw32-dll-1.tar" />
+          <requires eq="mingw32-libmpc-*-mingw32-dll-2.tar" />
+        </release>
+        <release tarname="gcc-core-4.7.2-1-mingw32-dev.tar">
+          <requires eq="mingw32-libssp-%-mingw32-dll-0.tar" />
+          <requires eq="mingw32-libgomp-%-mingw32-dll-1.tar" />
+          <download tarname="none" />
+        </release>
+      </component>
+
+      <component class="doc">
+        <release tarname="gcc-core-5.3.0-2-mingw32-doc.tar.xz">
+          <download tarname="none" />
+        </release>
+        <release tarname="gcc-core-4.9.3-1-mingw32-doc.tar.xz">
+          <download tarname="none" />
+        </release>
+        <release tarname="gcc-core-4.8.1-4-mingw32-doc.tar.lzma" />
+        <release tarname="gcc-core-4.8.1-3-mingw32-doc.tar.lzma" />
+        <release tarname="gcc-core-4.8.1-2-mingw32-doc.tar.lzma" />
+        <release tarname="gcc-core-4.8.1-1-mingw32-doc.tar.lzma" />
+        <release tarname="gcc-4.7.2-1-mingw32-doc.tar.lzma" />
+        <release tarname="gcc-4.7.0-1-mingw32-doc.tar.lzma" />
+        <release tarname="gcc-4.6.2-1-mingw32-doc.tar.lzma" />
+        <release tarname="gcc-4.6.1-2-mingw32-doc.tar.lzma" />
+        <release tarname="gcc-4.5.2-1-mingw32-doc.tar.lzma" />
+      </component>
+
+      <component class="man">
+        <release tarname="gcc-5.3.0-2-mingw32-man.tar.xz" />
+        <release tarname="gcc-4.9.3-1-mingw32-man.tar.xz" />
+        <release tarname="gcc-core-4.8.1-4-mingw32-man.tar.lzma" />
+        <release tarname="gcc-core-4.8.1-3-mingw32-man.tar.lzma" />
+        <release tarname="gcc-core-4.8.1-2-mingw32-man.tar.lzma" />
+        <release tarname="gcc-core-4.8.1-1-mingw32-man.tar.lzma" />
+      </component>
+
+      <component class="info">
+        <release tarname="gcc-5.3.0-2-mingw32-info.tar.xz" />
+        <release tarname="gcc-4.9.3-1-mingw32-info.tar.xz" />
+        <release tarname="gcc-core-4.8.1-4-mingw32-info.tar.lzma" />
+        <release tarname="gcc-core-4.8.1-3-mingw32-info.tar.lzma" />
+        <release tarname="gcc-core-4.8.1-2-mingw32-info.tar.lzma" />
+        <release tarname="gcc-core-4.8.1-1-mingw32-info.tar.lzma" />
+      </component>
+
+      <component class="lang">
+        <release tarname="gcc-5.3.0-2-mingw32-lang.tar.xz" />
+        <release tarname="gcc-4.9.3-1-mingw32-lang.tar.xz" />
+        <release tarname="gcc-4.8.1-4-mingw32-lang.tar.lzma" />
+        <release tarname="gcc-4.8.1-3-mingw32-lang.tar.lzma" />
+        <release tarname="gcc-4.8.1-2-mingw32-lang.tar.lzma" />
+        <release tarname="gcc-4.8.1-1-mingw32-lang.tar.lzma" />
+        <release tarname="gcc-4.7.2-1-mingw32-lang.tar.lzma" />
+        <release tarname="gcc-4.7.0-1-mingw32-lang.tar.lzma" />
+        <release tarname="gcc-4.6.2-1-mingw32-lang.tar.lzma" />
+        <release tarname="gcc-4.6.1-2-mingw32-lang.tar.lzma" />
+        <release tarname="gcc-4.5.2-1-mingw32-lang.tar.lzma" />
+      </component>
+    </package>
+
+    <package name="mingw32-libgcc" alias="libgcc">
+      <affiliate group="MinGW Compiler Suite" />
+      <description lang="en" title="The GNU C Compiler Shared Runtime Library">
+        <paragraph>
+          This package provides the MinGW implementation of the
+          shared runtime library for the GNU C language compiler;
+          you must install it if you wish to use this compiler with
+          -shared-libgcc support enabled, or if you wish to use any
+          other GCC language compiler, and you require safe handling
+          of exceptions which may cross DLL boundaries.
+        </paragraph>
+        <paragraph>
+          This is a freely redistributable library; it is required by,
+          (and you must distribute it with), any application compiled
+          by the GNU C++ language compiler, unless support for shared
+          runtime libraries is explicitly disabled when building.
+        </paragraph>
+        <paragraph>
+          NOTE: The gcc-4.8.1 release delivers this library in a tarball
+          named with the "gcc-core" prefix, rather than "libgcc".
+        </paragraph>
+      </description>
+
+      <source tarname="gcc-%-mingw32-src.tar.*" />
+      <licence tarname="gcc-%-mingw32-lic.tar.*" />
+
+      <component class="dll">
+        <release tarname="libgcc-5.3.0-2-mingw32-dll-1.tar.xz" />
+        <release tarname="libgcc-4.9.3-1-mingw32-dll-1.tar.xz" />
+        <release tarname="libgcc-4.8.1-4-mingw32-dll-1.tar">
+          <download tarname="gcc-core-4.8.1-4-mingw32-dll.tar.lzma"/>
+        </release>
+        <release tarname="libgcc-4.8.1-3-mingw32-dll-1.tar">
+          <download tarname="gcc-core-4.8.1-3-mingw32-dll.tar.lzma"/>
+        </release>
+        <release tarname="libgcc-4.8.1-2-mingw32-dll-1.tar">
+          <download tarname="gcc-core-4.8.1-2-mingw32-dll.tar.lzma"/>
+        </release>
+        <release tarname="libgcc-4.8.1-1-mingw32-dll-1.tar">
+          <download tarname="gcc-core-4.8.1-1-mingw32-dll.tar.lzma"/>
+        </release>
+        <release tarname="libgcc-4.5.2-1-mingw32-dll-1.tar.lzma" />
+        <release tarname="libgcc-4.6.1-2-mingw32-dll-1.tar.lzma" />
+        <release tarname="libgcc-4.6.2-1-mingw32-dll-1.tar.lzma" />
+        <release tarname="libgcc-4.7.0-1-mingw32-dll-1.tar.lzma" />
+        <release tarname="libgcc-4.7.2-1-mingw32-dll-1.tar.lzma" />
+      </component>
+    </package>
+
+    <package name="mingw32-gcc-ada" alias="gcc-ada ada">
+      <affiliate group="MinGW Compiler Suite" />
+      <description lang="en" title="The GNU Ada Compiler">
+        <paragraph>
+          This package provides the MinGW implementation of the
+          GNU Ada language compiler.
+        </paragraph>
+        <paragraph>
+          This is an optional component of the MinGW Compiler Suite;
+          you require it only if you wish to compile programs written
+          in the Ada language.
+        </paragraph>
+      </description>
+
+      <source tarname="gcc-%-mingw32-src.tar.*" />
+      <licence tarname="gcc-%-mingw32-lic.tar.*" />
+
+      <component class="bin">
+        <affiliate group="Basic Setup" />
+        <requires eq="gcc-core-%-mingw32-bin.tar" />
+        <release tarname="gcc-ada-5.3.0-2-mingw32-bin.tar.xz">
+          <requires eq="gcc-ada-%-mingw32-dev.tar" />
+        </release>
+        <release tarname="gcc-ada-4.9.3-1-mingw32-bin.tar.xz">
+          <requires eq="gcc-ada-%-mingw32-dev.tar" />
+        </release>
+        <release tarname="gcc-ada-4.8.1-4-mingw32-bin.tar.lzma">
+          <requires eq="gcc-ada-%-mingw32-dev.tar" />
+        </release>
+        <release tarname="gcc-ada-4.8.1-3-mingw32-bin.tar.lzma">
+          <requires eq="gcc-ada-%-mingw32-dev.tar.lzma" />
+        </release>
+        <release tarname="gcc-ada-4.8.1-2-mingw32-bin.tar.lzma">
+          <requires eq="gcc-ada-%-mingw32-dev.tar.lzma" />
+        </release>
+        <release tarname="gcc-ada-4.8.1-1-mingw32-bin.tar.lzma">
+          <requires eq="gcc-ada-%-mingw32-dev.tar.lzma" />
+        </release>
+        <release tarname="gcc-ada-4.7.2-1-mingw32-bin.tar.lzma">
+          <requires eq="libgnat-%-mingw32-dll-4_7.tar" />
+        </release>
+        <release tarname="gcc-ada-4.7.0-1-mingw32-bin.tar.lzma">
+          <requires eq="libgnat-%-mingw32-dll-4_7.tar" />
+        </release>
+        <release tarname="gcc-ada-4.6.2-1-mingw32-bin.tar.lzma">
+          <requires eq="libgnat-%-mingw32-dll-4_6.tar" />
+        </release>
+        <release tarname="gcc-ada-4.5.2-1-mingw32-bin.tar.lzma">
+          <requires eq="libgnat-%-mingw32-dll-4_5.tar" />
+        </release>
+      </component>
+
+      <component class="dev">
+        <release tarname="gcc-ada-5.3.0-2-mingw32-dev.tar.xz">
+          <download tarname="none" />
+        </release>
+        <release tarname="gcc-ada-4.9.3-1-mingw32-dev.tar.xz">
+          <download tarname="none" />
+        </release>
+        <release tarname="gcc-ada-4.8.1-4-mingw32-dev.tar.lzma">
+          <requires eq="mingw32-libgnat-%-mingw32-dll.tar" />
+        </release>
+        <release tarname="gcc-ada-4.8.1-3-mingw32-dev.tar.lzma">
+          <requires eq="mingw32-libgnat-%-mingw32-dll.tar" />
+        </release>
+        <release tarname="gcc-ada-4.8.1-2-mingw32-dev.tar.lzma">
+          <requires eq="mingw32-libgnat-%-mingw32-dll.tar" />
+        </release>
+        <release tarname="gcc-ada-4.8.1-1-mingw32-dev.tar.lzma">
+          <requires eq="mingw32-libgnat-%-mingw32-dll.tar" />
+        </release>
+      </component>
+
+      <component class="info">
+        <release tarname="gcc-ada-4.8.1-4-mingw32-info.tar.lzma" />
+        <release tarname="gcc-ada-4.8.1-3-mingw32-info.tar.lzma" />
+        <release tarname="gcc-ada-4.8.1-2-mingw32-info.tar.lzma" />
+        <release tarname="gcc-ada-4.8.1-1-mingw32-info.tar.lzma" />
+      </component>
+    </package>
+
+    <package name="mingw32-libgnat" alias="libgnat">
+      <affiliate group="MinGW Compiler Suite" />
+      <description lang="en" title="The GNU Ada Compiler Runtime Library">
+        <paragraph>
+          This package provides the MinGW implementation of the
+          shared runtime library for the GNU Ada language compiler;
+          you must install it if you wish to use this compiler.
+        </paragraph>
+        <paragraph>
+          This is a freely redistributable library; it is required by,
+          (and you must distribute it with), any application compiled
+          by the GNU Ada language compiler, unless support for shared
+          runtime libraries is explicitly disabled when building.
+        </paragraph>
+        <paragraph>
+          NOTE: The gcc-4.8.1 release delivers this library in a tarball
+          named with the "gcc-ada" prefix, rather than "libgnat".  There
+          is (currently) no DLL component release of libgnat, for the
+          gcc-4.9.3 (or later) release.
+        </paragraph>
+      </description>
+
+      <source tarname="gcc-%-mingw32-src.tar.*" />
+      <licence tarname="gcc-%-mingw32-lic.tar.*" />
+
+      <component class="dll">
+        <release tarname="libgnat-4.5.2-1-mingw32-dll-4_5.tar.lzma" />
+        <release tarname="libgnat-4.6.2-1-mingw32-dll-4_6.tar.lzma" />
+        <release tarname="libgnat-4.7.0-1-mingw32-dll-4_7.tar.lzma" />
+        <release tarname="libgnat-4.7.2-1-mingw32-dll-4_7.tar.lzma" />
+        <release tarname="libgnat-4.8.1-4-mingw32-dll-4_8.tar" >
+          <download tarname="gcc-ada-4.8.1-4-mingw32-dll.tar.lzma" />
+        </release>
+        <release tarname="libgnat-4.8.1-3-mingw32-dll-4_8.tar" >
+          <download tarname="gcc-ada-4.8.1-3-mingw32-dll.tar.lzma" />
+        </release>
+        <release tarname="libgnat-4.8.1-2-mingw32-dll-4_8.tar" >
+          <download tarname="gcc-ada-4.8.1-2-mingw32-dll.tar.lzma" />
+        </release>
+        <release tarname="libgnat-4.8.1-1-mingw32-dll-4_8.tar" >
+          <download tarname="gcc-ada-4.8.1-1-mingw32-dll.tar.lzma" />
+        </release>
+      </component>
+    </package>
+
+    <package name="mingw32-gcc-g++" alias="gcc-g++ g++ gcc-c++ c++">
+      <affiliate group="MinGW Compiler Suite" />
+      <description lang="en" title="The GNU C++ Compiler">
+        <paragraph>
+          This package provides the MinGW implementation of the
+          GNU C++ language compiler.
+        </paragraph>
+        <paragraph>
+          This is an optional component of the MinGW Compiler Suite;
+          you require it only if you wish to compile programs written
+          in the C++ language.
+        </paragraph>
+      </description>
+
+      <source tarname="gcc-%-mingw32-src.tar.*" />
+      <licence tarname="gcc-%-mingw32-lic.tar.*" />
+
+      <component class="bin">
+        <affiliate group="Basic Setup" />
+        <requires eq="gcc-core-%-mingw32-bin.tar" />
+        <release tarname="gcc-c++-5.3.0-2-mingw32-bin.tar.xz" >
+          <requires eq="libstdc++-%-mingw32-dll-6.tar" />
+          <requires eq="gcc-c++-%-mingw32-dev.tar" />
+        </release>
+        <release tarname="gcc-c++-4.9.3-1-mingw32-bin.tar.xz" >
+          <requires eq="libstdc++-%-mingw32-dll-6.tar" />
+          <requires eq="gcc-c++-%-mingw32-dev.tar" />
+        </release>
+        <release tarname="gcc-c++-4.8.1-4-mingw32-bin.tar.lzma" >
+          <requires eq="gcc-c++-%-mingw32-dev.tar" />
+        </release>
+        <release tarname="gcc-c++-4.8.1-3-mingw32-bin.tar.lzma" >
+          <requires eq="gcc-c++-%-mingw32-dev.tar" />
+        </release>
+        <release tarname="gcc-c++-4.8.1-2-mingw32-bin.tar.lzma" >
+          <requires eq="gcc-c++-%-mingw32-dev.tar" />
+        </release>
+        <release tarname="gcc-c++-4.8.1-1-mingw32-bin.tar.lzma" >
+          <requires eq="gcc-c++-%-mingw32-dev.tar" />
+        </release>
+        <release tarname="gcc-c++-4.7.2-1-mingw32-bin.tar.lzma" >
+          <requires eq="libstdc++-%-mingw32-dll-6.tar" />
+        </release>
+        <release tarname="gcc-c++-4.7.0-1-mingw32-bin.tar.lzma" >
+          <requires eq="libstdc++-%-mingw32-dll-6.tar" />
+        </release>
+        <release tarname="gcc-c++-4.6.2-1-mingw32-bin.tar.lzma" >
+          <requires eq="libstdc++-%-mingw32-dll-6.tar" />
+        </release>
+        <release tarname="gcc-c++-4.6.1-2-mingw32-bin.tar.lzma" >
+          <requires eq="libstdc++-%-mingw32-dll-6.tar" />
+        </release>
+        <release tarname="gcc-c++-4.5.2-1-mingw32-bin.tar.lzma" >
+        </release>
+      </component>
+
+      <component class="dev">
+        <requires eq="mingw32-libstdc++-%-mingw32-dll-6.tar" />
+        <release tarname="gcc-c++-5.3.0-2-mingw32-dev.tar.xz">
+          <download tarname="none" />
+        </release>
+        <release tarname="gcc-c++-4.9.3-1-mingw32-dev.tar.xz">
+          <download tarname="none" />
+        </release>
+        <release tarname="gcc-c++-4.8.1-4-mingw32-dev.tar.lzma" />
+        <release tarname="gcc-c++-4.8.1-3-mingw32-dev.tar.lzma" />
+        <release tarname="gcc-c++-4.8.1-2-mingw32-dev.tar.lzma" />
+        <release tarname="gcc-c++-4.8.1-1-mingw32-dev.tar.lzma" />
+      </component>
+
+      <component class="doc">
+        <release tarname="gcc-c++-5.3.0-2-mingw32-doc.tar.xz">
+          <download tarname="none" />
+        </release>
+        <release tarname="gcc-c++-4.9.3-1-mingw32-doc.tar.xz">
+          <download tarname="none" />
+        </release>
+        <release tarname="gcc-c++-4.8.1-4-mingw32-doc.tar.lzma" />
+        <release tarname="gcc-c++-4.8.1-3-mingw32-doc.tar.lzma" />
+        <release tarname="gcc-c++-4.8.1-2-mingw32-doc.tar.lzma" />
+        <release tarname="gcc-c++-4.8.1-1-mingw32-doc.tar.lzma" />
+      </component>
+
+      <component class="man">
+        <release tarname="gcc-c++-5.3.0-2-mingw32-man.tar.xz" />
+        <release tarname="gcc-c++-4.9.3-1-mingw32-man.tar.xz" />
+        <release tarname="gcc-c++-4.8.1-4-mingw32-man.tar.lzma" />
+        <release tarname="gcc-c++-4.8.1-3-mingw32-man.tar.lzma" />
+        <release tarname="gcc-c++-4.8.1-2-mingw32-man.tar.lzma" />
+        <release tarname="gcc-c++-4.8.1-1-mingw32-man.tar.lzma" />
+      </component>
+    </package>
+
+    <package name="mingw32-libstdc++" alias="libstdc++">
+      <affiliate group="MinGW Compiler Suite" />
+      <description lang="en" title="The GNU C++ Compiler Runtime Library">
+        <paragraph>
+          This package provides the MinGW implementation of the
+          shared runtime library for the GNU C++ language compiler;
+          you must install it if you wish to use this compiler.
+        </paragraph>
+        <paragraph>
+          This is a freely redistributable library; it is required by,
+          (and you must distribute it with), any application compiled
+          by the GNU C++ language compiler, unless support for shared
+          runtime libraries is explicitly disabled when building.
+        </paragraph>
+        <paragraph>
+          NOTE: The gcc-4.8.1 release delivers this library in a tarball
+          named with the "gcc-c++" prefix, rather than "libstdc++".
+        </paragraph>
+      </description>
+
+      <source tarname="gcc-%-mingw32-src.tar.*" />
+      <licence tarname="gcc-%-mingw32-lic.tar.*" />
+
+      <component class="dll">
+        <release tarname="libstdc++-5.3.0-2-mingw32-dll-6.tar.xz" />
+        <release tarname="libstdc++-4.9.3-1-mingw32-dll-6.tar.xz" />
+        <release tarname="libstdc++-4.8.1-4-mingw32-dll-6.tar" >
+          <download tarname="gcc-c++-4.8.1-4-mingw32-dll.tar.lzma" />
+        </release>
+        <release tarname="libstdc++-4.8.1-3-mingw32-dll-6.tar" >
+          <download tarname="gcc-c++-4.8.1-3-mingw32-dll.tar.lzma" />
+        </release>
+        <release tarname="libstdc++-4.8.1-2-mingw32-dll-6.tar" >
+          <download tarname="gcc-c++-4.8.1-2-mingw32-dll.tar.lzma" />
+        </release>
+        <release tarname="libstdc++-4.8.1-1-mingw32-dll-6.tar" >
+          <download tarname="gcc-c++-4.8.1-1-mingw32-dll.tar.lzma" />
+        </release>
+        <release tarname="libstdc++-4.5.2-1-mingw32-dll-6.tar.lzma" />
+        <release tarname="libstdc++-4.6.1-2-mingw32-dll-6.tar.lzma" />
+        <release tarname="libstdc++-4.6.2-1-mingw32-dll-6.tar.lzma" />
+        <release tarname="libstdc++-4.7.0-1-mingw32-dll-6.tar.lzma" />
+        <release tarname="libstdc++-4.7.2-1-mingw32-dll-6.tar.lzma" />
+      </component>
+    </package>
+
+    <package name="mingw32-gcc-fortran" alias="gcc-fortran gfortran fortran">
+      <affiliate group="MinGW Compiler Suite" />
+      <description lang="en" title="The GNU FORTRAN Compiler">
+        <paragraph>
+          This package provides the MinGW implementation of the
+          GNU FORTRAN language compiler.
+        </paragraph>
+        <paragraph>
+          This is an optional component of the MinGW Compiler Suite;
+          you require it only if you wish to compile programs written
+          in the FORTRAN language.
+        </paragraph>
+      </description>
+
+      <source tarname="gcc-%-mingw32-src.tar.*" />
+      <licence tarname="gcc-%-mingw32-lic.tar.*" />
+
+      <component class="bin">
+        <affiliate group="Basic Setup" />
+        <requires eq="gcc-core-%-mingw32-bin.tar" />
+        <release tarname="gcc-fortran-5.3.0-2-mingw32-bin.tar.xz">
+          <requires eq="libgfortran-%-mingw32-dll-3.tar" />
+          <requires eq="gcc-fortran-%-mingw32-dev.tar" />
+        </release>
+        <release tarname="gcc-fortran-4.9.3-1-mingw32-bin.tar.xz">
+          <requires eq="libgfortran-%-mingw32-dll-3.tar" />
+          <requires eq="gcc-fortran-%-mingw32-dev.tar" />
+        </release>
+        <release tarname="gcc-fortran-4.8.1-4-mingw32-bin.tar.lzma">
+          <requires eq="gcc-fortran-%-mingw32-dev.tar.lzma" />
+        </release>
+        <release tarname="gcc-fortran-4.8.1-3-mingw32-bin.tar.lzma">
+          <requires eq="gcc-fortran-%-mingw32-dev.tar.lzma" />
+        </release>
+        <release tarname="gcc-fortran-4.8.1-2-mingw32-bin.tar.lzma">
+          <requires eq="gcc-fortran-%-mingw32-dev.tar.lzma" />
+        </release>
+        <release tarname="gcc-fortran-4.8.1-1-mingw32-bin.tar.lzma">
+          <requires eq="gcc-fortran-%-mingw32-dev.tar.lzma" />
+        </release>
+        <release tarname="gcc-fortran-4.7.2-1-mingw32-bin.tar.lzma" >
+          <requires eq="libgfortran-%-mingw32-dll-3.tar" />
+        </release>
+        <release tarname="gcc-fortran-4.7.0-1-mingw32-bin.tar.lzma" >
+          <requires eq="libgfortran-%-mingw32-dll-3.tar" />
+        </release>
+        <release tarname="gcc-fortran-4.6.2-1-mingw32-bin.tar.lzma" >
+          <requires eq="libgfortran-%-mingw32-dll-3.tar" />
+        </release>
+        <release tarname="gcc-fortran-4.6.1-2-mingw32-bin.tar.lzma" >
+          <requires eq="libgfortran-%-mingw32-dll-3.tar" />
+        </release>
+        <release tarname="gcc-fortran-4.5.2-1-mingw32-bin.tar.lzma" >
+          <requires eq="libgfortran-%-mingw32-dll-3.tar" />
+        </release>
+      </component>
+
+      <component class="dev">
+        <requires eq="libgfortran-%-mingw32-dll-3.tar" />
+        <release tarname="gcc-fortran-5.3.0-2-mingw32-dev.tar.xz">
+          <download tarname="none" />
+        </release>
+        <release tarname="gcc-fortran-4.9.3-1-mingw32-dev.tar.xz">
+          <download tarname="none" />
+        </release>
+        <release tarname="gcc-fortran-4.8.1-4-mingw32-dev.tar.lzma" />
+        <release tarname="gcc-fortran-4.8.1-3-mingw32-dev.tar.lzma" />
+        <release tarname="gcc-fortran-4.8.1-2-mingw32-dev.tar.lzma" />
+        <release tarname="gcc-fortran-4.8.1-1-mingw32-dev.tar.lzma" />
+      </component>
+
+      <component class="doc">
+        <release tarname="gcc-fortran-5.3.0-2-mingw32-doc.tar.xz">
+          <download tarname="none" />
+        </release>
+        <release tarname="gcc-fortran-4.9.3-1-mingw32-doc.tar.xz">
+          <download tarname="none" />
+        </release>
+        <release tarname="gcc-fortran-4.8.1-4-mingw32-doc.tar.lzma" />
+        <release tarname="gcc-fortran-4.8.1-3-mingw32-doc.tar.lzma" />
+        <release tarname="gcc-fortran-4.8.1-2-mingw32-doc.tar.lzma" />
+        <release tarname="gcc-fortran-4.8.1-1-mingw32-doc.tar.lzma" />
+      </component>
+
+      <component class="info">
+        <release tarname="gcc-fortran-5.3.0-2-mingw32-info.tar.xz" />
+        <release tarname="gcc-fortran-4.9.3-1-mingw32-info.tar.xz" />
+        <release tarname="gcc-fortran-4.8.1-4-mingw32-info.tar.lzma" />
+        <release tarname="gcc-fortran-4.8.1-3-mingw32-info.tar.lzma" />
+        <release tarname="gcc-fortran-4.8.1-2-mingw32-info.tar.lzma" />
+        <release tarname="gcc-fortran-4.8.1-1-mingw32-info.tar.lzma" />
+      </component>
+
+      <component class="man">
+        <release tarname="gcc-fortran-5.3.0-2-mingw32-man.tar.xz">
+          <download tarname="libgfortran-5.3.0-2-mingw32-man.tar.xz" />
+        </release>
+        <release tarname="gcc-fortran-4.9.3-1-mingw32-man.tar.xz" />
+        <release tarname="gcc-fortran-4.8.1-4-mingw32-man.tar.lzma" />
+        <release tarname="gcc-fortran-4.8.1-3-mingw32-man.tar.lzma" />
+        <release tarname="gcc-fortran-4.8.1-2-mingw32-man.tar.lzma" />
+        <release tarname="gcc-fortran-4.8.1-1-mingw32-man.tar.lzma" />
+      </component>
+    </package>
+
+    <package name="mingw32-libgfortran" alias="libgfortran">
+      <affiliate group="MinGW Compiler Suite" />
+      <description lang="en" title="The GNU FORTRAN Compiler Runtime Library">
+        <paragraph>
+          This package provides the MinGW implementation of the
+          shared runtime library for the GNU FORTRAN language compiler;
+          you must install it if you wish to use this compiler.
+        </paragraph>
+        <paragraph>
+          This is a freely redistributable library; it is required by,
+          (and you must distribute it with), any application compiled by
+          the GNU FORTRAN language compiler, unless support for shared
+          runtime libraries is explicitly disabled when building.
+        </paragraph>
+      </description>
+
+      <source tarname="gcc-%-mingw32-src.tar.*" />
+      <licence tarname="gcc-%-mingw32-lic.tar.*" />
+
+      <component class="dll">
+        <release tarname="libgfortran-4.5.2-1-mingw32-dll-3.tar.lzma" />
+        <release tarname="libgfortran-4.6.1-2-mingw32-dll-3.tar.lzma" />
+        <release tarname="libgfortran-4.6.2-1-mingw32-dll-3.tar.lzma" />
+        <release tarname="libgfortran-4.7.0-1-mingw32-dll-3.tar.lzma" />
+        <release tarname="libgfortran-4.7.2-1-mingw32-dll-3.tar.lzma" />
+        <release tarname="libgfortran-4.8.1-4-mingw32-dll-3.tar" >
+          <download tarname="gcc-fortran-4.8.1-4-mingw32-dll.tar.lzma" />
+        </release>
+        <release tarname="libgfortran-4.8.1-3-mingw32-dll-3.tar" >
+          <download tarname="gcc-fortran-4.8.1-3-mingw32-dll.tar.lzma" />
+        </release>
+        <release tarname="libgfortran-4.8.1-2-mingw32-dll-3.tar" >
+          <download tarname="gcc-fortran-4.8.1-2-mingw32-dll.tar.lzma" />
+        </release>
+        <release tarname="libgfortran-4.8.1-1-mingw32-dll-3.tar" >
+          <download tarname="gcc-fortran-4.8.1-1-mingw32-dll.tar.lzma" />
+        </release>
+        <release tarname="libgfortran-4.9.3-1-mingw32-dll-3.tar.xz" />
+        <release tarname="libgfortran-5.3.0-2-mingw32-dll-3.tar.xz" />
+      </component>
+    </package>
+
+    <!-- FIXME: no java package available at present...
+    <package name="mingw32-gcc-java" alias="gcc-java java">
+      <affiliate group="MinGW Compiler Suite" />
+      <description lang="en" title="The GNU Java Compiler">
+        <paragraph>
+          This package provides the MinGW implementation of the
+          GNU Java language compiler.
+        </paragraph>
+        <paragraph>
+          This is an optional component of the MinGW Compiler Suite;
+          you require it only if you wish to compile programs written
+          in the Java language.
+        </paragraph>
+      </description>
+
+      <source tarname="gcc-%-mingw32-src.tar.lzma" />
+      <licence tarname="gcc-%-mingw32-lic.tar.lzma" />
+
+      <component class="bin">
+        <requires eq="gcc-core-%-mingw32-bin.tar" />
+        <release tarname="gcc-java-4.5.2-1-mingw32-bin.tar.lzma" />
+      </component>
+    </package> -->
+
+    <package name="mingw32-gcc-objc" alias="gcc-objc objc">
+      <affiliate group="MinGW Compiler Suite" />
+      <description lang="en" title="The GNU Objective-C Compiler">
+        <paragraph>
+          This package provides the MinGW implementation of the
+          GNU Objective-C language compiler.
+        </paragraph>
+        <paragraph>
+          This is an optional component of the MinGW Compiler Suite;
+          you require it only if you wish to compile programs written
+          in the Objective-C language.
+        </paragraph>
+        <paragraph>
+          NOTE: For the gcc-4.8.1, release in order to install objc you need
+          to install the gcc-objc-%-mingw32-dev package instead of the -bin
+          package.  This change was made to be consistent with what -bin usually
+          contains compared to -dev.  In reality, this release simply created
+          the -dev package as a hybrid of content which would normally be
+          distributed as separate -bin and -dev packages, whereas earlier
+          releases provided the -bin package as such a hybrid.  This change
+          added an unnecessary level of package complexity; it has been
+          reverted for the gcc-4.9.3 release.
+        </paragraph>
+      </description>
+
+      <source tarname="gcc-%-mingw32-src.tar.*" />
+      <licence tarname="gcc-%-mingw32-lic.tar.*" />
+
+      <component class="bin">
+        <affiliate group="Basic Setup" />
+        <requires eq="gcc-core-%-mingw32-bin.tar" />
+        <release tarname="gcc-objc-5.3.0-2-mingw32-bin.tar.xz">
+          <requires eq="libobjc-%-mingw32-dll-4.tar" />
+          <requires eq="gcc-objc-%-mingw32-dev.tar" />
+        </release>
+        <release tarname="gcc-objc-4.9.3-1-mingw32-bin.tar.xz">
+          <requires eq="libobjc-%-mingw32-dll-4.tar" />
+          <requires eq="gcc-objc-%-mingw32-dev.tar" />
+        </release>
+        <release tarname="gcc-objc-4.7.2-1-mingw32-bin.tar.lzma">
+          <requires eq="libobjc-%-mingw32-dll-4.tar" />
+        </release>
+        <release tarname="gcc-objc-4.7.0-1-mingw32-bin.tar.lzma">
+          <requires eq="libobjc-%-mingw32-dll-4.tar" />
+        </release>
+        <release tarname="gcc-objc-4.6.2-1-mingw32-bin.tar.lzma">
+          <requires eq="libobjc-%-mingw32-dll-3.tar" />
+        </release>
+        <release tarname="gcc-objc-4.6.1-2-mingw32-bin.tar.lzma">
+          <requires eq="libobjc-%-mingw32-dll-3.tar" />
+        </release>
+        <release tarname="gcc-objc-4.5.2-1-mingw32-bin.tar.lzma">
+          <requires eq="libobjc-%-mingw32-dll-2.tar" />
+        </release>
+        <release tarname="gcc-objc-4.8.1-4-mingw32-bin.tar" >
+          <download tarname="none" />
+          <requires eq="gcc-objc-%-mingw32-dev.tar.lzma" />
+        </release>
+        <release tarname="gcc-objc-4.8.1-3-mingw32-bin.tar" >
+          <download tarname="none" />
+          <requires eq="gcc-objc-%-mingw32-dev.tar.lzma" />
+        </release>
+        <release tarname="gcc-objc-4.8.1-2-mingw32-bin.tar" >
+          <download tarname="none" />
+          <requires eq="gcc-objc-%-mingw32-dev.tar.lzma" />
+        </release>
+        <release tarname="gcc-objc-4.8.1-1-mingw32-bin.tar" >
+          <download tarname="none" />
+          <requires eq="gcc-objc-%-mingw32-dev.tar.lzma" />
+        </release>
+      </component>
+
+      <component class="dev">
+        <requires eq="libobjc-%-mingw32-dll-4.tar" />
+        <release tarname="gcc-objc-5.3.0-2-mingw32-dev.tar.xz">
+          <download tarname="none" />
+        </release>
+        <release tarname="gcc-objc-4.9.3-1-mingw32-dev.tar.xz">
+          <download tarname="none" />
+        </release>
+        <release tarname="gcc-objc-4.8.1-4-mingw32-dev.tar.lzma" />
+        <release tarname="gcc-objc-4.8.1-3-mingw32-dev.tar.lzma" />
+        <release tarname="gcc-objc-4.8.1-2-mingw32-dev.tar.lzma" />
+        <release tarname="gcc-objc-4.8.1-1-mingw32-dev.tar.lzma" />
+      </component>
+    </package>
+
+    <package name="mingw32-libobjc" alias="libobjc">
+      <affiliate group="MinGW Compiler Suite" />
+      <description lang="en" title="The GNU Objective-C Compiler Runtime Library">
+        <paragraph>
+          This package provides the MinGW implementation of the shared
+          runtime library for the GNU Objective-C language compiler; you
+          must install it if you wish to use this compiler.
+        </paragraph>
+        <paragraph>
+          This is a freely redistributable library; it is required by,
+          (and you must distribute it with), any application compiled by
+          the GNU Objective-C language compiler, unless support for shared
+          runtime libraries is explicitly disabled when building.
+        </paragraph>
+        <paragraph>
+          NOTE: The gcc-4.8.1 release delivers this library in a tarball
+          named with the "gcc-objc" prefix, rather than "libobjc".
+        </paragraph>
+      </description>
+
+      <source tarname="gcc-%-mingw32-src.tar.*" />
+      <licence tarname="gcc-%-mingw32-lic.tar.*" />
+
+      <component class="dll">
+        <release tarname="libobjc-4.5.2-1-mingw32-dll-2.tar.lzma" />
+        <release tarname="libobjc-4.6.1-2-mingw32-dll-3.tar.lzma" />
+        <release tarname="libobjc-4.6.2-1-mingw32-dll-3.tar.lzma" />
+        <release tarname="libobjc-4.7.0-1-mingw32-dll-4.tar.lzma" />
+        <release tarname="libobjc-4.7.2-1-mingw32-dll-4.tar.lzma" />
+        <release tarname="libobjc-4.8.1-4-mingw32-dll-4.tar" >
+          <download tarname="gcc-objc-4.8.1-4-mingw32-dll.tar.lzma"/>
+        </release>
+        <release tarname="libobjc-4.8.1-3-mingw32-dll-4.tar" >
+          <download tarname="gcc-objc-4.8.1-3-mingw32-dll.tar.lzma"/>
+        </release>
+        <release tarname="libobjc-4.8.1-2-mingw32-dll-4.tar" >
+          <download tarname="gcc-objc-4.8.1-2-mingw32-dll.tar.lzma"/>
+        </release>
+        <release tarname="libobjc-4.8.1-1-mingw32-dll-4.tar" >
+          <download tarname="gcc-objc-4.8.1-1-mingw32-dll.tar.lzma"/>
+        </release>
+        <release tarname="libobjc-4.9.3-1-mingw32-dll-4.tar.xz" />
+        <release tarname="libobjc-5.3.0-2-mingw32-dll-4.tar.xz" />
+      </component>
+    </package>
+
+    <package name="mingw32-libatomic" alias="libatomic">
+      <affiliate group="MinGW Compiler Suite" />
+      <description lang="en" title="GCC Atomic Function Support Library">
+        <paragraph />
+      </description>
+
+      <source tarname="gcc-%-mingw32-src.tar.*" />
+      <licence tarname="gcc-%-mingw32-lic.tar.*" />
+
+      <component class="dll">
+        <release tarname="libatomic-5.3.0-2-mingw32-dll-1.tar.xz" />
+      </component>
+    </package>
+
+    <package name="mingw32-libgomp" alias="libgomp">
+      <affiliate group="MinGW Compiler Suite" />
+      <description lang="en" title="GCC MultiProcessor Support Library">
+        <paragraph />
+      </description>
+
+      <source tarname="gcc-%-mingw32-src.tar.*" />
+      <licence tarname="gcc-%-mingw32-lic.tar.*" />
+
+      <component class="dll">
+        <release tarname="libgomp-4.5.2-1-mingw32-dll-1.tar.lzma">
+          <requires eq="libpthread-*-mingw32-dll-2.tar" />
+        </release>
+        <release tarname="libgomp-4.6.1-2-mingw32-dll-1.tar.lzma">
+          <requires eq="libpthread-*-mingw32-dll-2.tar" />
+        </release>
+        <release tarname="libgomp-4.6.2-1-mingw32-dll-1.tar.lzma">
+          <requires eq="libpthread-*-mingw32-dll-2.tar" />
+        </release>
+        <release tarname="libgomp-4.7.0-1-mingw32-dll-1.tar.lzma">
+          <requires eq="libpthread-*-mingw32-dll-2.tar" />
+        </release>
+        <release tarname="libgomp-4.7.2-1-mingw32-dll-1.tar.lzma">
+          <requires eq="libpthread-*-mingw32-dll-2.tar" />
+        </release>
+        <release tarname="libgomp-4.8.1-4-mingw32-dll-1.tar">
+          <download tarname="none" />
+          <requires eq="mingw32-libgcc-%-mingw32-dll-1.tar" />
+          <requires eq="libpthread-*-mingw32-dll-2.tar" />
+        </release>
+        <release tarname="libgomp-4.8.1-3-mingw32-dll-1.tar">
+          <download tarname="none" />
+          <requires eq="mingw32-libgcc-%-mingw32-dll-1.tar" />
+          <requires eq="libpthread-*-mingw32-dll-2.tar" />
+        </release>
+        <release tarname="libgomp-4.8.1-2-mingw32-dll-1.tar">
+          <download tarname="none"/>
+          <requires eq="mingw32-libgcc-%-mingw32-dll-1.tar" />
+          <requires eq="libpthread-*-mingw32-dll-2.tar" />
+        </release>
+        <release tarname="libgomp-4.8.1-1-mingw32-dll-1.tar">
+          <download tarname="none"/>
+          <requires eq="mingw32-libgcc-%-mingw32-dll-1.tar" />
+          <requires eq="libpthread-*-mingw32-dll-2.tar" />
+        </release>
+        <release tarname="libgomp-5.3.0-2-mingw32-dll-1.tar.xz" />
+      </component>
+    </package>
+
+    <package name="mingw32-libssp" alias="libssp">
+      <affiliate group="MinGW Compiler Suite" />
+      <description lang="en" title="GCC Stack Smashing Protection Library">
+        <paragraph />
+      </description>
+
+      <source tarname="gcc-%-mingw32-src.tar.*" />
+      <licence tarname="gcc-%-mingw32-lic.tar.*" />
+
+      <component class="dll">
+        <release tarname="libssp-4.5.2-1-mingw32-dll-0.tar.lzma" />
+        <release tarname="libssp-4.6.1-2-mingw32-dll-0.tar.lzma" />
+        <release tarname="libssp-4.6.2-1-mingw32-dll-0.tar.lzma" />
+        <release tarname="libssp-4.7.0-1-mingw32-dll-0.tar.lzma" />
+        <release tarname="libssp-4.7.2-1-mingw32-dll-0.tar.lzma" />
+        <release tarname="libssp-4.8.1-4-mingw32-dll-0.tar" >
+          <download tarname="none"/>
+          <requires eq="mingw32-libgcc-%-mingw32-dll-1.tar" />
+        </release>
+        <release tarname="libssp-4.8.1-3-mingw32-dll-0.tar" >
+          <download tarname="none"/>
+          <requires eq="mingw32-libgcc-%-mingw32-dll-1.tar" />
+        </release>
+        <release tarname="libssp-4.8.1-2-mingw32-dll-0.tar" >
+          <download tarname="none" />
+          <requires eq="mingw32-libgcc-%-mingw32-dll-1.tar" />
+        </release>
+        <release tarname="libssp-4.8.1-1-mingw32-dll-0.tar" >
+          <download tarname="none" />
+          <requires eq="mingw32-libgcc-%-mingw32-dll-1.tar" />
+        </release>
+        <release tarname="libssp-5.3.0-2-mingw32-dll-0.tar.xz" />
+      </component>
+    </package>
+
+    <package name="mingw32-libquadmath" alias="libquadmath">
+      <affiliate group="MinGW Compiler Suite" />
+
+      <source tarname="gcc-%-mingw32-src.tar.*" />
+      <licence tarname="gcc-%-mingw32-lic.tar.*" />
+
+      <component class="dll">
+        <release tarname="libquadmath-4.6.1-2-mingw32-dll-0.tar.lzma" />
+        <release tarname="libquadmath-4.6.2-1-mingw32-dll-0.tar.lzma" />
+        <release tarname="libquadmath-4.7.0-1-mingw32-dll-0.tar.lzma" />
+        <release tarname="libquadmath-4.7.2-1-mingw32-dll-0.tar.lzma" />
+        <release tarname="libquadmath-4.8.1-4-mingw32-dll-0.tar" >
+          <download tarname="none"/>
+          <requires eq="mingw32-libgcc-%-mingw32-dll-1.tar"/>
+        </release>
+        <release tarname="libquadmath-4.8.1-3-mingw32-dll-0.tar" >
+          <download tarname="none"/>
+          <requires eq="mingw32-libgcc-%-mingw32-dll-1.tar"/>
+        </release>
+        <release tarname="libquadmath-4.8.1-2-mingw32-dll-0.tar" >
+          <download tarname="none"/>
+          <requires eq="mingw32-libgcc-%-mingw32-dll-1.tar" />
+        </release>
+        <release tarname="libquadmath-4.8.1-1-mingw32-dll-0.tar" >
+          <download tarname="none"/>
+          <requires eq="mingw32-libgcc-%-mingw32-dll-1.tar" />
+        </release>
+        <release tarname="libquadmath-4.9.3-1-mingw32-dll-0.tar.xz" />
+        <release tarname="libquadmath-5.3.0-2-mingw32-dll-0.tar.xz" />
+      </component>
+
+      <component class="info">
+        <release tarname="libquadmath-4.9.3-1-mingw32-info.tar.xz" />
+        <release tarname="libquadmath-5.3.0-2-mingw32-info.tar.xz" />
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/mingw32-gdb.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/mingw32-gdb.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/mingw32-gdb.xml	(revision 1046)
@@ -0,0 +1,118 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://www.mingw.org" issue="2013091501">
+
+  <!-- File: mingw32-gdb.xml ~~ mingw-get package description for the GNU debugger -->
+
+  <package-collection subsystem="mingw32">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="mingw32-gdb" alias="gdb">
+      <affiliate group="MinGW Base System" />
+      <affiliate group="MinGW Source-Level Debugger" />
+      <description lang="en" title="The GNU Source-Level Debugger">
+        <paragraph>
+          GDB is a source-level debugger, capable of breaking programs at
+          any specific line, displaying variable values, and determining
+          where errors occurred.  Currently, it works for C, C++, Fortran,
+          Modula 2 and Java programs.  A must-have for any serious
+          programmer.
+        </paragraph>
+      </description>
+
+      <source tarname="gdb-%-mingw32-%-src.tar.%" />
+      <licence tarname="gdb-%-mingw32-%-lic.tar.%" />
+
+      <component class="bin">
+        <release tarname="gdb-7.6.1-1-mingw32-bin.tar.lzma">
+          <requires eq="mingw32-libz-*-mingw32-dll-1.tar" />
+        </release>
+        <release tarname="gdb-7.5-1-mingw32-bin.tar.lzma" >
+          <requires eq="mingw32-libexpat-*-mingw32-*-dll-1.tar" />
+          <requires eq="mingw32-libintl-*-mingw32-*-dll-8.tar" />
+        </release>
+        <release tarname="gdb-7.4-2-mingw32-bin.tar.lzma" >
+          <requires eq="mingw32-libexpat-*-mingw32-*-dll-1.tar" />
+          <requires eq="mingw32-libintl-*-mingw32-*-dll-8.tar" />
+        </release>
+        <release tarname="gdb-7.3.1-1-mingw32-bin.tar.lzma" >
+          <requires eq="mingw32-libexpat-*-mingw32-*-dll-1.tar" />
+          <requires eq="mingw32-libintl-*-mingw32-*-dll-8.tar" />
+        </release>
+        <release tarname="gdb-7.3-2-mingw32-bin.tar.lzma" >
+          <requires eq="mingw32-libexpat-*-mingw32-*-dll-1.tar" />
+          <requires eq="mingw32-libintl-*-mingw32-*-dll-8.tar" />
+        </release>
+        <release tarname="gdb-7.3-1-mingw32-bin.tar.lzma" >
+          <requires eq="mingw32-libexpat-*-mingw32-*-dll-1.tar" />
+          <requires eq="mingw32-libintl-*-mingw32-*-dll-8.tar" />
+        </release>
+        <release tarname="gdb-7.2-1-mingw32-bin.tar.lzma" >
+          <requires eq="mingw32-libexpat-*-mingw32-*-dll-1.tar" />
+        </release>
+        <release tarname="gdb-7.1-2-mingw32-bin.tar.gz" >
+          <source tarname="gdb-7.1-src.tar.gz" />
+          <licence tarname="gdb-%-mingw32-bin.tar.gz" />
+        </release>
+      </component>
+
+      <component class="doc">
+        <release tarname="gdb-7.6.1-1-mingw32-doc.tar.lzma" />
+        <release tarname="gdb-7.5-1-mingw32-doc.tar.lzma" />
+        <release tarname="gdb-7.4-2-mingw32-doc.tar.lzma" />
+        <release tarname="gdb-7.3.1-1-mingw32-doc.tar.lzma" />
+        <release tarname="gdb-7.3-2-mingw32-doc.tar.lzma" />
+        <release tarname="gdb-7.3-1-mingw32-doc.tar.lzma" />
+        <release tarname="gdb-7.2-1-mingw32-doc.tar.lzma" />
+      </component>
+
+      <component class="info">
+        <release tarname="gdb-7.6.1-1-mingw32-info.tar.lzma" />
+      </component>
+
+      <component class="lang">
+        <release tarname="gdb-7.6.1-1-mingw32-lang.tar.lzma" />
+      </component>
+
+      <component class="man">
+        <release tarname="gdb-7.6.1-1-mingw32-man.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="gdb-7.6.1-1-mingw32-lic.tar.lzma" />
+      </component>
+    </package>
+
+    <package name="mingw32-gdb-python" alias="gdb-python">
+      <affiliate group="MinGW Base System" />
+      <description lang="en" title="Python enabled GNU Source-Level Debugger">
+        <paragraph>
+          GDB is a source-level debugger, capable of breaking programs at
+          any specific line, displaying variable values, and determining
+          where errors occurred.  Currently, it works for C, C++, Fortran,
+          Modula 2 and Java programs.  A must-have for any serious
+          programmer.  This particular version is Python enabled.
+        </paragraph>
+      </description>
+
+      <source tarname="gdb-python-%-mingw32-%-src.tar.%" />
+      <licence tarname="gdb-python-%-mingw32-%-lic.tar.%" />
+
+      <component class="bin">
+        <release tarname="gdb-python-7.5-1-mingw32-bin.tar.lzma" >
+          <requires eq="mingw32-libexpat-*-mingw32-*-dll-1.tar" />
+          <requires eq="mingw32-libintl-*-mingw32-*-dll-8.tar" />
+        </release>
+        <release tarname="gdb-python-7.4-2-mingw32-bin.tar.lzma" >
+          <requires eq="mingw32-libexpat-*-mingw32-*-dll-1.tar" />
+          <requires eq="mingw32-libintl-*-mingw32-*-dll-8.tar" />
+        </release>
+      </component>
+
+      <component class="doc">
+        <release tarname="gdb-python-7.5-1-mingw32-doc.tar.lzma" />
+        <release tarname="gdb-python-7.4-2-mingw32-doc.tar.lzma" />
+      </component>
+    </package>
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/mingw32-gendef.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/mingw32-gendef.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/mingw32-gendef.xml	(revision 1046)
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://mingw.org" issue="2012073100">
+
+  <!-- File: mingw32-gendef.xml -->
+
+  <package-collection subsystem="mingw32">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="mingw32-gendef" alias="gendef">
+      <description lang="en" title="Generate .def files for DLLs" >
+        <paragraph>gendef can extract information from DLLs to create
+          corresponding .def files that list the symbols available in each DLL.
+          .def files can then be used by dlltool (mingw32-binutils) to generate
+          import libraries.  gendef is similar to pexports, but the two tools
+          differ in how each determines the "decoration" (or calling convention)
+          appropriate for each symbol, since that information is not always
+          available directly from the DLL's symbol table.  gendef locates the
+          symbol's code in the DLL, and uses a disassembler to determine that
+          information.  pexports can use a C pre-processor to extract the
+          information, provided you have the appropriate header files.  Neither
+          method is foolproof, so both tools are provided.
+        </paragraph>
+        <paragraph>gendef was written by the MinGW64 team.  It can extract
+          symbols from 32bit or 64bit EXEs or DLLs.  It can automatically detect
+          stdcall, fastcall, and cdecl calling conventions and generate the
+          correctly decorated function names, without requiring the header files
+          or a C pre-processor.
+        </paragraph>
+      </description>
+
+      <licence tarname="gendef-%-mingw32-%-lic.tar.%" />
+      <source tarname="gendef-%-mingw32-%-src.tar.%" />
+
+      <component class="bin">
+        <release tarname="gendef-1.0.1346-1-mingw32-bin.tar.lzma" />
+      </component>
+
+      <component class="doc">
+        <release tarname="gendef-1.0.1346-1-mingw32-doc.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="gendef-1.0.1346-1-mingw32-lic.tar.lzma" />
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/mingw32-gettext.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/mingw32-gettext.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/mingw32-gettext.xml	(revision 1046)
@@ -0,0 +1,282 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://mingw.org" issue="2015090600">
+
+  <!-- File: mingw32-gettext.xml -->
+
+  <package-collection subsystem="mingw32">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+    <package name="mingw32-gettext" alias="gettext">
+      <affiliate group="MinGW Autotools" />
+      <description lang="en" title="GNU Internationalization Library and Utilities" >
+        <paragraph>GNU gettext provides a set of tools that create a
+          framework to help other GNU packages produce multi-lingual
+          messages.  In this way, with suitable care a single binary
+          application can automatically provide user messages (such as
+          `help' text) in the language corresponding to the current
+          locale settings.
+        </paragraph>
+        <paragraph>The gettext package provides utilities that may
+          be useful to end-users, allowing interaction with the message
+          translation database of other i18n-enabled GNU utilities.  It
+          also provides the development libraries, header files, and
+          documentation for the gettext system, as well as additional
+          utilities useful for maintainers of i18n-enabled applications.
+          The *-ext package provides extra documentation, in the form of
+          example implementations in many different computer languages.
+          The associated libgettextpo package provides the runtime
+          libraries needed by the gettext utilities; the associated
+          libasprintf package provides the runtime library for the
+          asprintf utility library; and finally, the associated libintl
+          package provides the runtime component of the internationalization
+          library itself.
+        </paragraph>
+      </description>
+
+      <licence tarname="gettext-%-mingw32-%-lic.tar.%" />
+      <source tarname="gettext-%-mingw32-%-src.tar.%" />
+
+      <component class="bin">
+        <release tarname="gettext-0.18.3.2-2-mingw32-bin.tar.xz" />
+        <release tarname="gettext-0.18.3.2-1-mingw32-bin.tar.xz">
+          <download tarname="gettext-0.18.3.2-1-1-mingw32-bin.tar.xz" />
+        </release>
+        <release tarname="gettext-0.18.3.1-1-mingw32-bin.tar.lzma" />
+        <release tarname="gettext-0.18.1.1-2-mingw32-bin.tar.lzma" />
+        <release tarname="gettext-0.17-1-mingw32-bin.tar.lzma" />
+        <requires eq="mingw32-libintl-%-mingw32-%-dll-8.tar" />
+        <requires ge="mingw32-libiconv-1.14-2-mingw32-*-dll-2.tar" />
+        <requires eq="mingw32-libgcc-*-mingw32-*-dll-1.tar" />
+      </component>
+
+      <component class="dll">
+        <!-- FIXME: to be removed, sooner rather than later; this
+          degenerate package should never have been created in the
+          first place!
+         -->
+        <description lang="en">
+          <paragraph>Please DO NOT install this component package!
+            It is malformed, and WILL introduce package conflicts; it will
+            be discontinued, when the likelihood of encountering residual
+            bogus inter-package dependencies ceases to be a concern.
+          </paragraph>
+        </description>
+        <release tarname="gettext-0.18.3.2-2-mingw32-dll.tar.xz">
+          <download tarname="none" />
+        </release>
+        <release tarname="gettext-0.18.3.2-1-mingw32-dll.tar.xz">
+          <download tarname="none" />
+        </release>
+        <release tarname="gettext-0.18.3.1-1-mingw32-dll.tar.lzma" />
+        <requires eq="mingw32-libintl-%-mingw32-dll-8.tar" />
+        <requires eq="mingw32-libgettextpo-%-mingw32-dll-0.tar" />
+        <requires eq="mingw32-libasprintf-%-mingw32-dll-0.tar" />
+      </component>
+
+      <component class="doc">
+        <release tarname="gettext-0.18.3.2-2-mingw32-doc.tar.xz" />
+        <release tarname="gettext-0.18.3.2-1-mingw32-doc.tar.xz" />
+        <release tarname="gettext-0.18.3.1-1-mingw32-doc.tar.lzma" />
+        <release tarname="gettext-0.18.1.1-2-mingw32-doc.tar.lzma" />
+        <release tarname="gettext-0.17-1-mingw32-doc.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="gettext-0.18.3.2-2-mingw32-lic.tar.xz" />
+        <release tarname="gettext-0.18.3.2-1-mingw32-lic.tar.xz" />
+        <release tarname="gettext-0.18.3.1-1-mingw32-lic.tar.lzma" />
+        <release tarname="gettext-0.18.1.1-2-mingw32-lic.tar.lzma" />
+        <release tarname="gettext-0.17-1-mingw32-lic.tar.lzma" />
+      </component>
+
+      <component class="info">
+        <release tarname="gettext-0.18.3.2-2-mingw32-info.tar.xz" />
+        <release tarname="gettext-0.18.3.2-1-mingw32-info.tar.xz" />
+        <release tarname="gettext-0.18.3.1-1-mingw32-info.tar.lzma" />
+      </component>
+
+      <component class="man">
+        <release tarname="gettext-0.18.3.2-2-mingw32-man.tar.xz" />
+        <release tarname="gettext-0.18.3.2-1-mingw32-man.tar.xz" />
+        <release tarname="gettext-0.18.3.1-1-mingw32-man.tar.lzma" />
+      </component>
+
+      <component class="html">
+        <release tarname="gettext-0.18.3.2-2-mingw32-html.tar.xz" >
+          <requires eq="gettext-%-mingw32-%-doc.tar" />
+          <download tarname="none" />
+        </release>
+        <release tarname="gettext-0.18.3.2-1-mingw32-html.tar.xz" >
+          <requires eq="gettext-%-mingw32-%-doc.tar" />
+          <download tarname="none" />
+        </release>
+        <release tarname="gettext-0.18.3.1-1-mingw32-html.tar.lzma" />
+      </component>
+
+      <component class="dev">
+        <release tarname="gettext-0.18.3.2-2-mingw32-dev.tar.xz" />
+        <release tarname="gettext-0.18.3.2-1-mingw32-dev.tar.xz" />
+        <release tarname="gettext-0.18.3.1-1-mingw32-dev.tar.lzma" >
+          <requires eq="gettext-0.18.3.1-1-mingw32-dll.tar.lzma" />
+        </release>
+        <release tarname="gettext-0.18.1.1-2-mingw32-dev.tar.lzma" />
+        <release tarname="gettext-0.17-1-mingw32-dev.tar.lzma" />
+        <requires eq="mingw32-libgcc-*-mingw32-*-dll-1.tar" />
+        <requires eq="mingw32-libstdc++-*-mingw32-*-dll-6.tar" />
+        <requires eq="mingw32-libgomp-*-mingw32-*-dll-1.tar" />
+        <requires eq="mingw32-libexpat-*-mingw32-*-dll-1.tar" />
+        <requires ge="mingw32-libiconv-1.14-2-mingw32-*-dll-2.tar" />
+        <requires eq="mingw32-libgettextpo-%-mingw32-%-dll-0.tar" />
+        <requires eq="mingw32-libintl-%-mingw32-%-dll-8.tar" />
+      </component>
+
+      <component class="ext">
+        <release tarname="gettext-0.18.3.2-2-mingw32-ext.tar.xz" />
+        <release tarname="gettext-0.18.3.2-1-mingw32-ext.tar.xz" />
+        <release tarname="gettext-0.18.3.1-1-mingw32-ext.tar.lzma" />
+        <release tarname="gettext-0.18.1.1-2-mingw32-ext.tar.lzma" />
+        <release tarname="gettext-0.17-1-mingw32-ext.tar.lzma" />
+      </component>
+    </package>
+
+    <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+    <package name="mingw32-libintl" alias="libintl">
+      <affiliate group="MinGW Autotools" />
+      <description lang="en" title="GNU Internationalization Runtime Library" >
+        <paragraph>GNU gettext provides a set of tools that create a
+          framework to help other GNU packages produce multi-lingual
+          messages.  In this way, with suitable care a single binary
+          application can automatically provide user messages (such as
+          `help' text) in the language corresponding to the current
+          locale settings.  libintl is the primary runtime component of
+          that framework.
+        </paragraph>
+        <paragraph>The libintl package provides the runtime component
+          of the GNU internationalization library.  The gettext package
+          provides utilities that may be useful to end-users, allowing
+          interaction with the message translation database of other
+          i18n-enabled GNU utilities.  It also provides the development
+          libraries, header files, and documentation for the gettext
+          system, as well as additional utilities useful for maintainers
+          of i18n-enabled applications.  The *-ext package provides extra
+          documentation, in the form of example implementations in many
+          different computer languages.  The associated libgettextpo package
+          provides the runtime libraries needed by the gettext utilities;
+          the associated libasprintf package provides the runtime library
+          for the asprintf utility library.
+        </paragraph>
+      </description>
+
+      <licence tarname="gettext-%-mingw32-%-lic.tar.%" />
+      <source tarname="gettext-%-mingw32-%-src.tar.%" />
+
+      <component class="dll">
+        <requires eq="mingw32-libgcc-*-mingw32-*-dll-1.tar" />
+        <requires ge="mingw32-libiconv-1.14-2-mingw32-*-dll-2.tar" />
+        <release tarname="libintl-0.17-1-mingw32-dll-8.tar.lzma" />
+        <release tarname="libintl-0.18.1.1-2-mingw32-dll-8.tar.lzma" />
+        <release tarname="libintl-0.18.3.1-1-mingw32-dll-8.tar" >
+          <download tarname="gettext-0.18.3.1-1-mingw32-dll.tar.lzma"/>
+        </release>
+        <release tarname="libintl-0.18.3.2-2-mingw32-dll-8.tar.xz" />
+        <release tarname="libintl-0.18.3.2-1-mingw32-dll-8.tar.xz" />
+      </component>
+    </package>
+
+    <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+    <package name="mingw32-libgettextpo" alias="libgettextpo">
+      <affiliate group="MinGW Autotools" />
+      <description lang="en" title="GNU Internationalization Utility Library" >
+        <paragraph>GNU gettext provides a set of tools that create a
+          framework to help other GNU packages produce multi-lingual
+          messages.  In this way, with suitable care a single binary
+          application can automatically provide user messages (such as
+          `help' text) in the language corresponding to the current
+          locale settings.  libgettextpo provides runtime support for the
+          gettext utilities; it is typically not needed by `regular' i18n
+          clients of libintl.
+        </paragraph>
+        <paragraph>The libgettextpo package provides the runtime
+          libraries needed by the gettext utilities.  The associated
+          gettext package provides utilities that may be useful to
+          end-users, allowing interaction with the message translation
+          database of other i18n-enabled GNU utilities.  It also provides
+          the development libraries, header files, and documentation for
+          the gettext system, as well as additional utilities useful for
+          maintainers of i18n-enabled applications.  The *-ext package
+          provides extra documentation, in the form of example
+          implementations in many different computer languages.
+          The associated libasprintf package provides the runtime
+          library for the asprintf utility library; and finally, the
+          associated libintl package provides the runtime component
+          of the internationalization library itself.
+        </paragraph>
+      </description>
+
+      <licence tarname="gettext-%-mingw32-%-lic.tar.%" />
+      <source tarname="gettext-%-mingw32-%-src.tar.%" />
+
+      <component class="dll">
+        <requires eq="mingw32-libgcc-*-mingw32-*-dll-1.tar" />
+        <requires ge="mingw32-libiconv-1.14-2-mingw32-*-dll-2.tar" />
+        <requires eq="mingw32-libintl-%-mingw32-%-dll-8.tar" />
+        <release tarname="libgettextpo-0.17-1-mingw32-dll-0.tar.lzma" />
+        <release tarname="libgettextpo-0.18.1.1-2-mingw32-dll-0.tar.lzma" />
+        <release tarname="libgettextpo-0.18.3.1-1-mingw32-dll-0.tar" >
+          <download tarname="gettext-0.18.3.1-1-mingw32-dll.tar.lzma"/>
+        </release>
+        <release tarname="libgettextpo-0.18.3.2-2-mingw32-dll-0.tar.xz" />
+        <release tarname="libgettextpo-0.18.3.2-1-mingw32-dll-0.tar.xz" />
+      </component>
+    </package>
+
+    <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+    <package name="mingw32-libasprintf" alias="libasprintf">
+      <affiliate group="MinGW Autotools" />
+      <description lang="en" title="GNU Internationalization Utility Library" >
+        <paragraph>GNU gettext provides a set of tools that create a
+          framework to help other GNU packages produce multi-lingual
+          messages.  In this way, with suitable care a single binary
+          application can automatically provide user messages (such as
+          `help' text) in the language corresponding to the current
+          locale settings.  libasprintf provides an implementation of
+          the C formatted output routines suitable for use in C++
+          applications, where i18n is a goal.
+        </paragraph>
+        <paragraph>The libasprintf package provides the runtime
+          library for the asprintf utility library.  The associated
+          gettext package provides utilities that may be useful to
+          end-users, allowing interaction with the message translation
+          database of other i18n-enabled GNU utilities.  It also provides
+          the development libraries, header files, and documentation for
+          the gettext system, as well as additional utilities useful for
+          maintainers of i18n-enabled applications.  The *-ext package
+          provides extra documentation, in the form of example
+          implementations in many different computer languages.  The
+          associated libgettextpo package provides the runtime
+          libraries needed by the gettext utilities, while the
+          associated libintl package provides the runtime component
+          of the internationalization library itself.
+        </paragraph>
+      </description>
+
+      <licence tarname="gettext-%-mingw32-%-lic.tar.%" />
+      <source tarname="gettext-%-mingw32-%-src.tar.%" />
+
+      <component class="dll">
+        <requires eq="mingw32-libstdc++-*-mingw32-*-dll-6.tar" />
+        <requires eq="mingw32-libgcc-*-mingw32-*-dll-1.tar" />
+        <release tarname="libasprintf-0.17-1-mingw32-dll-0.tar.lzma" />
+        <release tarname="libasprintf-0.18.1.1-2-mingw32-dll-0.tar.lzma" />
+        <release tarname="libasprintf-0.18.3.1-1-mingw32-dll-0.tar" >
+          <download tarname="none"/>
+        </release>
+        <release tarname="libasprintf-0.18.3.2-2-mingw32-dll-0.tar.xz" />
+        <release tarname="libasprintf-0.18.3.2-1-mingw32-dll-0.tar.xz" />
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/mingw32-gmp.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/mingw32-gmp.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/mingw32-gmp.xml	(revision 1046)
@@ -0,0 +1,135 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://www.mingw.org" issue="2013090900">
+
+  <!-- File: mingw32-gmp.xml ~~ mingw-get package description for gmp -->
+
+  <package-collection subsystem="mingw32">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <!-- Provides the package descriptions for the gmp library, which -->
+    <!-- is a runtime prerequisite for modern versions of GCC.        -->
+
+    <package name="mingw32-gmp" alias="gmp">
+      <affiliate group="MinGW Standard Libraries" />
+      <description lang="en" title="The GNU Multiple Precision Arithmetic Library" >
+        <paragraph>
+          GNU MP is a library for arbitrary precision arithmetic, operating on
+          signed integers, rational numbers, and floating point numbers.  It
+          has a rich set of functions, and the functions have a regular
+          interface.
+        </paragraph>
+        <paragraph>
+          The MinGW/MSYS project provides two gmp packages: the native win32
+          mingw32-gmp and an MSYS version, msys-gmp.  mingw32-gmp is provided
+          as a necessary component of modern MinGW gcc compilers, while the
+          msys-gmp version requires the MSYS dll, and is provided as a
+          prerequisite of certain other MSYS tools, such as guile.
+        </paragraph>
+        <paragraph>
+          The mingw32-gmp package provides the documentation for the gmp
+          library, as well as the related development files.  The associated
+          mingw32-libgmp package provides the C runtime library, while the
+          associated mingw32-libgmpxx package provides the C++ runtime library.
+        </paragraph>
+      </description>
+
+      <source tarname="gmp-%-mingw32-src.tar.lzma" />
+      <licence tarname="gmp-%-mingw32-lic.tar.lzma" />
+
+      <component class="dev">
+	<release tarname="gmp-5.1.2-1-mingw32-dev.tar.lzma" >
+	  <requires eq="mingw32-libgmpxx-%-mingw32-dll-4.tar" />
+	</release>
+        <release tarname="gmp-5.0.1-1-mingw32-dev.tar.lzma" >
+          <requires eq="mingw32-libgmp-%-mingw32-dll-10.tar" />
+          <requires eq="mingw32-libgmpxx-%-mingw32-dll-4.tar" />
+        </release>
+      </component>
+
+      <component class="doc">
+        <release tarname="gmp-5.1.2-1-mingw32-doc.tar.lzma" />
+        <release tarname="gmp-5.0.1-1-mingw32-doc.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="gmp-5.1.2-1-mingw32-lic.tar.lzma" />
+        <release tarname="gmp-5.0.1-1-mingw32-lic.tar.lzma" />
+      </component>
+
+      <component class="info">
+        <release tarname="gmp-5.1.2-1-mingw32-info.tar.lzma" />
+      </component>
+    </package>
+
+    <package name="mingw32-libgmp" alias="libgmp">
+      <affiliate group="MinGW Standard Libraries" />
+      <description lang="en" title="The GNU Multiple Precision Arithmetic Library" >
+        <paragraph>
+          GNU MP is a library for arbitrary precision arithmetic, operating on
+          signed integers, rational numbers, and floating point numbers.  It
+          has a rich set of functions, and the functions have a regular
+          interface.
+        </paragraph>
+        <paragraph>
+          The MinGW/MSYS project provides two libgmp packages: the native win32
+          mingw32-libgmp and an MSYS version, msys-libgmp.  mingw32-libgmp is
+          provided as a necessary component of modern MinGW gcc compilers,
+          while the msys-libgmp version requires the MSYS dll, and is provided
+          as a prerequisite of certain other MSYS tools, such as guile.
+        </paragraph>
+        <paragraph>
+          The mingw32-libgmp package provides the C runtime library.  The
+          associated mingw32-gmp package provides the documentation for the gmp
+          library, as well as the related development files.  The associated
+          mingw32-libgmpxx package provides the C++ runtime library.
+        </paragraph>
+        <paragraph>
+          This is a required component of the MinGW Compiler Suite.
+        </paragraph>
+      </description>
+
+      <source tarname="gmp-%-mingw32-src.tar.lzma" />
+      <licence tarname="gmp-%-mingw32-lic.tar.lzma" />
+
+      <component class="dll">
+        <release tarname="libgmp-5.1.2-1-mingw32-dll-10.tar" >
+	  <download tarname="gmp-5.1.2-1-mingw32-dll.tar.lzma" />
+	</release>
+        <release tarname="libgmp-5.0.1-1-mingw32-dll-10.tar.lzma" />
+      </component>
+    </package>
+
+    <package name="mingw32-libgmpxx" alias="libgmpxx">
+      <affiliate group="MinGW Standard Libraries" />
+      <description lang="en" title="The GNU Multiple Precision Arithmetic Library" >
+        <paragraph>
+          GNU MP is a library for arbitrary precision arithmetic, operating on
+          signed integers, rational numbers, and floating point numbers.  It
+          has a rich set of functions, and the functions have a regular
+          interface.
+        </paragraph>
+        <paragraph>
+          The mingw32-libgmpxx package provides the C++ runtime library.  The
+          associated mingw32-gmp package provides the documentation for the gmp
+          library, as well as the related development files.  The associated
+          mingw32-libgmp package provides the C runtime library.
+        </paragraph>
+      </description>
+
+      <source tarname="gmp-%-mingw32-src.tar.lzma" />
+      <licence tarname="gmp-%-mingw32-lic.tar.lzma" />
+
+      <component class="dll">
+        <release tarname="libgmpxx-5.1.2-1-mingw32-dll-4.tar.lzma" >
+	  <download tarname="none" />
+          <requires eq="libgmp-%-mingw32-dll-10.tar" />
+        </release>
+        <release tarname="libgmpxx-5.0.1-1-mingw32-dll-4.tar.lzma" >
+          <requires eq="libgmp-%-mingw32-dll-10.tar" />
+          <requires eq="libgcc-*-mingw32-dll-1.tar" />
+        </release>
+      </component>
+    </package>
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/mingw32-libarchive.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/mingw32-libarchive.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/mingw32-libarchive.xml	(revision 1046)
@@ -0,0 +1,167 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://mingw.org" issue="2012073100">
+
+  <!-- File: mingw32-libarchive.xml -->
+
+  <package-collection subsystem="mingw32">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="mingw32-libarchive" alias="libarchive" >
+      <description lang="en" title="library for handling various archive formats" >
+        <paragraph>libarchive is a programming library that can create and read
+          several different streaming archive formats, including most popular
+          tar variants and several cpio formats, and ar archives. It can also
+          read shar, zip, jar, and xar archives, as well as ISO9660 CDROM
+          images.  It automatically handles gzip, bzip2, compress, xz, and lzma
+          compression and decompression, as well as uudecode decompression. The
+          bsdtar program is an implementation of tar(1) that is built on top of
+          libarchive.
+        </paragraph>
+        <paragraph>This MinGW port of libarchive differs from the MSYS version
+          also provided by the MinGW/MSYS project.  This version does not
+          require the MSYS runtime library, but does not support MSYS "unix"
+          style pathnames nor mtree data.  It does not support archives that
+          contain symbolic links. Both mingw32-libarchive and msys-libarchive
+          (and their associated bsdtar and bsdcpio subpackages) depend on
+          additional DLLs such as mingw32-liblzma (msys-liblzma), etc.  There
+          is, in addition, a MinGW package that provides a standalone version of
+          bsdtar which has no external dependencies and only limited
+          functionality: mingw32-basic-bsdtar (see its documentation for more
+          information).
+        </paragraph>
+        <paragraph>The mingw32-libarchive package provides the runtime library,
+          development files, and documentation for libarchive.  The associated
+          mingw32-bsdtar package provides an implementation of tar(1) based on
+          libarchive, while the associated mingw32-bsdcpio package provides a
+          similar implementation of cpio(1).
+        </paragraph>
+      </description>
+
+      <licence tarname="libarchive-%-mingw32-%-lic.tar.%" />
+      <source tarname="libarchive-%-mingw32-%-src.tar.%" />
+
+      <component class="doc">
+        <release tarname="libarchive-2.8.3-1-mingw32-doc.tar.bz2" />
+      </component>
+
+      <component class="lic">
+        <release tarname="libarchive-2.8.3-1-mingw32-lic.tar.bz2" />
+      </component>
+
+      <component class="dev">
+        <requires eq="mingw32-bzip2-*-mingw32-*-dev.tar" />
+        <requires eq="mingw32-libexpat-*-mingw32-*-dev.tar" />
+        <requires eq="mingw32-liblzma-*-mingw32-*-dev.tar" />
+        <requires eq="mingw32-libz-*-mingw32-*-dev.tar" />
+        <release tarname="libarchive-2.8.3-1-mingw32-dev.tar.bz2" >
+          <requires eq="mingw32-libarchive-%-mingw32-%-dll-2.tar" />
+        </release>
+      </component>
+
+      <component class="dll">
+        <release tarname="libarchive-2.8.3-1-mingw32-dll-2.tar.bz2" >
+          <requires eq="mingw32-libbz2-*-mingw32-*-dll-2.tar" />
+          <requires eq="mingw32-libexpat-*-mingw32-*-dll-1.tar" />
+          <requires eq="mingw32-liblzma-*-mingw32-*-dll-1.tar" />
+          <requires eq="mingw32-libz-*-mingw32-*-dll.tar" />
+        </release>
+      </component>
+    </package>
+
+    <package name="mingw32-bsdtar" alias="bsdtar" >
+      <description lang="en" title="BSD version of the tar utility" >
+        <paragraph>The mingw32-bsdtar package provides an implementation
+          of tar(1) based on libarchive, which manipulates streaming archive
+          files -- including the eponymous tar format.  However, bsdtar
+          can also extract from tar, pax, cpio, zip, jar, ar, xar, and ISO 9660
+          cdrom images, as well as create tar, pax, cpio, ar, and shar archives.
+          It supports automatic detection and handling of .gz, .bz2, .lzma, .xz,
+          and .Z decompression (and compression).  It supports ustar, pax, and
+          GNU tar formats.
+        </paragraph>
+        <paragraph>This MinGW port of bsdtar differs from the MSYS version also
+          provided by the MinGW/MSYS project.  This version does not require the
+          MSYS runtime library, but does not support MSYS "unix" style pathnames
+          nor mtree data.  It does not support archives that contain symbolic
+          links.  Both mingw32-bsdtar and msys-bsdtar depend on additional DLLs
+          such as mingw32-libarchive (msys-libarchive), etc.  There is, in
+          addition, a MinGW package that provides a standalone version of bsdtar
+          which has no external dependencies and only limited functionality:
+          mingw32-basic-bsdtar (see its documentation for more information).
+        </paragraph>
+        <paragraph>libarchive is a programming library that can create and read
+          several different streaming archive formats, including most popular
+          tar variants and several cpio formats, and ar archives.  It can also
+          read shar, zip, jar, and xar archives, as well as ISO9660 CDROM
+          images.  It automatically handles gzip, bzip2, compress, xz, and lzma
+          compression and decompression, as well as uudecode decompression.  The
+          bsdtar program is an implementation of tar(1) that is built on top of
+          libarchive.
+        </paragraph>
+        <paragraph>The mingw32-bsdtar package provides an implementation of
+          tar(1) based on libarchive, while the associated mingw32-bsdcpio
+          package provides a similar implementation of cpio(1).  The associated
+          mingw32-libarchive package provides the runtime library, development
+          files, and documentation.
+        </paragraph>
+      </description>
+
+      <licence tarname="libarchive-%-mingw32-%-lic.tar.%" />
+      <source tarname="libarchive-%-mingw32-%-src.tar.%" />
+
+      <component class="bin">
+        <release tarname="bsdtar-2.8.3-1-mingw32-bin.tar.bz2" >
+          <requires eq="mingw32-libarchive-%-mingw32-%-dll-2.tar" />
+        </release>
+      </component>
+    </package>
+
+    <package name="mingw32-bsdcpio" alias="bsdcpio" >
+      <description lang="en" title="BSD version of the cpio utility" >
+        <paragraph>The mingw32-bsdcpio package provides an implementation of
+          cpio(1) based on libarchive, which copies files between archives and
+          directories.  This implementation can extract from tar, pax, cpio,
+          zip, jar, ar, xar, and ISO 9660 cdrom images, as well as create tar,
+          pax, cpio, ar, and shar archives.  It supports automatic detection and
+          handling of .gz, .bz2, .lzma, .xz, and .Z decompression (and
+          compression).  It supports the old POSIX.1 portable cpio format (odc),
+          the new SVR4 portable cpio format (newc), as well as the POSIX.1 pax
+          and ustar formats.
+        </paragraph>
+        <paragraph>This MinGW port of bsdcpio differs from the MSYS version also
+          provided by the MinGW/MSYS project.  This version does not require the
+          MSYS runtime library, but does not support MSYS "unix" style pathnames
+          nor mtree data.  It does not support archives that contain symbolic
+          links.  Both mingw32-bsdcpio and msys-bsdcpio depend on additional
+          DLLs such as mingw32-libarchive (msys-libarchive), etc.
+        </paragraph>
+        <paragraph>libarchive is a programming library that can create and read
+          several different streaming archive formats, including most popular
+          tar variants and several cpio formats, and ar archives.  It can also
+          read shar, zip, jar, and xar archives, as well as ISO9660 CDROM
+          images.  It automatically handles gzip, bzip2, compress, xz, and lzma
+          compression and decompression, as well as uudecode decompression.  The
+          bsdtar program is an implementation of tar(1) that is built on top of
+          libarchive.
+        </paragraph>
+        <paragraph>The mingw32-bsdcpio package provides an implementation of
+          cpio(1) based on libarchive, while the associated mingw32-bsdtar
+          package provides a similar implementation of tar(1).  The associated
+          mingw32-libarchive package provides the runtime library, development
+          files, and documentation.
+        </paragraph>
+      </description>
+
+      <licence tarname="libarchive-%-mingw32-%-lic.tar.%" />
+      <source tarname="libarchive-%-mingw32-%-src.tar.%" />
+
+      <component class="bin">
+        <release tarname="bsdcpio-2.8.3-1-mingw32-bin.tar.bz2" >
+          <requires eq="mingw32-libarchive-%-mingw32-%-dll-2.tar" />
+        </release>
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/mingw32-libiconv.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/mingw32-libiconv.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/mingw32-libiconv.xml	(revision 1046)
@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://mingw.org" issue="2014042900">
+
+  <!-- File: mingw32-libiconv.xml -->
+
+  <package-collection subsystem="mingw32">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+    <package name="mingw32-libiconv" alias="libiconv">
+      <affiliate group="MinGW Autotools" />
+      <description lang="en" title="GNU libraries and utilities for character set conversion" >
+        <paragraph>GNU libiconv provides an implementation of the iconv()
+          function which is used to convert between various character
+          representations for different locales.  This function is provided
+          for use on systems which don't already have iconv(), or whose
+          implementation cannot convert from/to Unicode.  This package also
+          provides a tool, iconv(1), which can be used to convert character
+          sets from the command line. The associated libcharset provides a
+          mechanism to determine the canonical character set name of the
+          current locale.
+        </paragraph>
+      </description>
+
+      <licence tarname="libiconv-%-mingw32-%-lic.tar.%" />
+      <source tarname="libiconv-%-mingw32-%-src.tar.%" />
+
+      <component class="bin">
+        <release tarname="libiconv-1.14-3-mingw32-bin.tar.lzma" />
+        <release tarname="libiconv-1.14-2-mingw32-bin.tar.lzma" />
+        <release tarname="libiconv-1.13.1-1-mingw32-bin.tar.lzma" />
+        <requires eq="mingw32-libgcc-*-mingw32-dll-1.tar" />
+        <requires ge="mingw32-libintl-0.18.1.1-2-mingw32-*-dll-8.tar" />
+        <requires eq="mingw32-libiconv-%-mingw32-%-dll-2.tar" />
+      </component>
+
+      <component class="doc">
+        <release tarname="libiconv-1.14-3-mingw32-doc.tar.lzma" />
+        <release tarname="libiconv-1.14-2-mingw32-doc.tar.lzma" />
+        <release tarname="libiconv-1.13.1-1-mingw32-doc.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="libiconv-1.14-3-mingw32-lic.tar.lzma" />
+        <release tarname="libiconv-1.14-2-mingw32-lic.tar.lzma" />
+        <release tarname="libiconv-1.13.1-1-mingw32-lic.tar.lzma" />
+      </component>
+
+      <component class="dev">
+        <release tarname="libiconv-1.14-3-mingw32-dev.tar.lzma" />
+        <release tarname="libiconv-1.14-2-mingw32-dev.tar.lzma" />
+        <release tarname="libiconv-1.13.1-1-mingw32-dev.tar.lzma" />
+        <requires eq="mingw32-libiconv-%-mingw32-%-dll-2.tar" />
+      </component>
+
+      <component class="dll">
+        <release tarname="libiconv-1.14-3-mingw32-dll-2.tar" >
+          <download tarname="libiconv-1.14-3-mingw32-dll.tar.lzma" />
+        </release>
+        <release tarname="libiconv-1.14-2-mingw32-dll-2.tar.lzma" />
+        <release tarname="libiconv-1.13.1-1-mingw32-dll-2.tar.lzma" />
+        <requires eq="mingw32-libgcc-*-mingw32-dll-1.tar" />
+      </component>
+
+      <component class="html">
+        <release tarname="libiconv-1.14-3-mingw32-html.tar.lzma" />
+      </component>
+
+      <component class="man">
+        <release tarname="libiconv-1.14-3-mingw32-man.tar.lzma" />
+      </component>
+
+      <component class="lang">
+        <release tarname="libiconv-1.14-3-mingw32-lang.tar.lzma" />
+      </component>
+
+    </package>
+
+    <package name="mingw32-libcharset" alias="libcharset">
+      <affiliate group="MinGW Autotools" />
+      <description lang="en" title="GNU libraries and utilities for character set conversion" >
+        <paragraph>GNU libiconv provides an implementation of the iconv()
+          function which is used to convert between various character
+          representations for different locales.  This function is provided
+          for use on systems which don't already have iconv(), or whose
+          implementation cannot convert from/to Unicode. This package also
+          provides a tool, iconv(1), which can be used to convert character
+          sets from the command line.  The associated libcharset provides a
+          mechanism to determine the canonical character set name of the
+          current locale.
+        </paragraph>
+      </description>
+
+      <licence tarname="libiconv-%-mingw32-%-lic.tar.%" />
+      <source tarname="libiconv-%-mingw32-%-src.tar.%" />
+
+      <component class="dll">
+        <requires eq="mingw32-libgcc-*-mingw32-dll-1.tar" />
+        <release tarname="libcharset-1.13.1-1-mingw32-dll-1.tar.lzma" />
+        <release tarname="libcharset-1.14-2-mingw32-dll-1.tar.lzma" />
+        <release tarname="libcharset-1.14-3-mingw32-dll-1.tar" >
+          <download tarname="libiconv-1.14-3-mingw32-dll.tar.lzma" />
+        </release>
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/mingw32-libtool.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/mingw32-libtool.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/mingw32-libtool.xml	(revision 1046)
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://mingw.org" issue="2012073100">
+
+  <!-- File: mingw32-libtool.xml -->
+
+  <package-collection subsystem="mingw32">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="mingw32-libtool" alias="libtool">
+      <affiliate group="MinGW Autotools" />
+      <description lang="en" title="A shared library generation tool" >
+        <paragraph>GNU libtool is a generic library support package.
+          Libtool hides the complexity of using shared libraries behind
+          a consistent, portable interface.  Libtool requires the use of
+          Autoconf.
+        </paragraph>
+        <paragraph>libtool provides the development files and utilities
+          for managing the creation and use of shared libraries in a
+          platform independent manner.  The associated libltdl package
+          provides the runtime library and development files for using a
+          pre-built version of libtool's dlopen replacement library.
+        </paragraph>
+      </description>
+
+      <licence tarname="libtool-%-mingw32-%-lic.tar.%" />
+      <source tarname="libtool-%-mingw32-%-src.tar.%" />
+
+      <component class="bin">
+        <requires eq="mingw32-autoconf-*-mingw32-*-bin.tar" />
+        <requires eq="mingw32-automake-*-mingw32-*-bin.tar" />
+        <requires eq="msys-bash-*-msys-*-bin.tar" />
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+        <requires eq="msys-coreutils-*-msys-*-bin.tar" />
+        <requires eq="msys-file-*-msys-*-bin.tar" />
+        <requires eq="msys-m4-*-msys-*-bin.tar" />
+        <requires eq="msys-sed-*-msys-*-bin.tar" />
+        <requires eq="msys-texinfo-*-msys-*-bin.tar" />
+        <!-- libtool doesn't actually depend on its own runtime library -->
+        <release tarname="libtool-2.2.11a-1-mingw32-bin.tar.lzma" />
+        <release tarname="libtool-2.4-1-mingw32-bin.tar.lzma" />
+      </component>
+
+      <component class="doc">
+        <release tarname="libtool-2.2.11a-1-mingw32-doc.tar.lzma" />
+        <release tarname="libtool-2.4-1-mingw32-doc.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="libtool-2.2.11a-1-mingw32-lic.tar.lzma" />
+        <release tarname="libtool-2.4-1-mingw32-lic.tar.lzma" />
+      </component>
+    </package>
+
+    <package name="mingw32-libltdl" alias="libltdl">
+      <affiliate group="MinGW Autotools" />
+      <description lang="en" title="A portable dlopen replacement" >
+        <paragraph>GNU libtool is a generic library support script.
+          Libtool hides the complexity of using shared libraries behind
+          a consistent, portable interface.  Libtool requires the use of
+          Autoconf.
+        </paragraph>
+        <paragraph>libltdl provides the runtime library and development
+          files for using a pre-built version of libtool's dlopen
+          replacement library.  The associated libtool package provides
+          the development files and utilities for managing the creation
+          and use of shared libraries in a platform independent manner.
+        </paragraph>
+      </description>
+
+      <licence tarname="libtool-%-mingw32-%-lic.tar.%" />
+      <source tarname="libtool-%-mingw32-%-src.tar.%" />
+
+      <component class="dll">
+        <release tarname="libltdl-2.2.11a-1-mingw32-dll-7.tar.lzma" />
+        <release tarname="libltdl-2.4-1-mingw32-dll-7.tar.lzma" />
+      </component>
+
+      <component class="dev">
+        <requires eq="mingw32-libtool-%-mingw32-%-bin.tar" />
+        <release tarname="libltdl-2.2.11a-1-mingw32-dev.tar.lzma" >
+          <requires eq="mingw32-libltdl-%-mingw32-%-dll-7.tar" />
+        </release>
+        <release tarname="libltdl-2.4-1-mingw32-dev.tar.lzma" >
+          <requires eq="mingw32-libltdl-%-mingw32-%-dll-7.tar" />
+        </release>
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/mingw32-libunistring.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/mingw32-libunistring.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/mingw32-libunistring.xml	(revision 1046)
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://mingw.org" issue="2016010400">
+
+  <!-- File: mingw32-libunistring.xml -->
+
+  <package-collection subsystem="mingw32">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="mingw32-libunistring" alias="libunistring">
+      <affiliate group="MinGW Contributed Libraries" />
+
+      <description lang="en" title="libunistring: Library for manipulating Unicode strings">
+        <paragraph> Text files are nowadays usually encoded in Unicode, and may
+          consist of very different scripts - from Latin letters to Chinese
+          Hanzi -, with many kinds of special characters - accents,
+          right-to-left writing marks, hyphens, Roman numbers, and much more.
+          But the POSIX platform APIs for text do not contain adequate functions
+          for dealing with particular properties of many Unicode characters. In
+          fact, the POSIX APIs for text have several assumptions at their base
+          which don't hold for Unicode text. This library provides functions for
+          manipulating Unicode strings and for manipulating C strings according
+          to the Unicode standard.
+        </paragraph>
+      </description>
+
+      <licence tarname="libunistring-%-mingw32-%-lic.tar.%" />
+      <source tarname="libunistring-%-mingw32-%-src.tar.%" />
+
+      <component class="dll">
+        <release tarname="libunistring-0.9.6-1-mingw32-dll-2.tar.lzma" >
+          <requires eq="mingw32-libgcc-*-mingw32-dll-1.tar" />
+          <requires eq="mingw32-libiconv-*-mingw32-*-dll-2.tar" />
+        </release>
+        <release tarname="libunistring-0.9.3-1-mingw32-dll-0.tar.lzma" >
+          <requires eq="mingw32-libgcc-*-mingw32-dll-1.tar" />
+          <requires eq="mingw32-libiconv-*-mingw32-*-dll-2.tar" />
+        </release>
+      </component>
+
+      <component class="doc">
+        <release tarname="libunistring-0.9.6-1-mingw32-doc.tar.lzma" />
+        <release tarname="libunistring-0.9.3-1-mingw32-doc.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="libunistring-0.9.6-1-mingw32-lic.tar.lzma" />
+        <release tarname="libunistring-0.9.3-1-mingw32-lic.tar.lzma" />
+      </component>
+
+      <component class="dev">
+        <release tarname="libunistring-0.9.6-1-mingw32-dev.tar.lzma" >
+          <requires eq="mingw32-libunistring-%-mingw32-%-dll-2.tar" />
+        </release>
+        <release tarname="libunistring-0.9.3-1-mingw32-dev.tar.lzma" >
+          <requires eq="mingw32-libunistring-%-mingw32-%-dll-0.tar" />
+        </release>
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/mingw32-lua.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/mingw32-lua.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/mingw32-lua.xml	(revision 1046)
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://www.mingw.org" issue="2012021600">
+
+  <!-- File: mingw32-lua.xml ~~ Lua Embedded Scripting Language Interface -->
+
+  <package-collection subsystem="mingw32">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="mingw32-lua" alias="lua">
+      <affiliate group="MinGW Supplementary Libraries" />
+
+      <description lang="en" title="Lua Embedded Scripting Language Interface">
+        <paragraph>
+          Lua is a powerful, light-weight programming language designed
+          for extending applications.  Lua is also frequently used as a
+          general-purpose, stand-alone language.  Lua is free software.
+        </paragraph>
+        <paragraph>
+          For complete information, visit Lua's web site at http://www.lua.org/
+          For an executive summary, see http://www.lua.org/about.html
+        </paragraph>
+        <paragraph>
+          Lua has been used in many different projects around the world.
+          For a short list, see http://www.lua.org/uses.html
+        </paragraph>
+      </description>
+
+      <source tarname="lua-%-mingw32-%-src.tar.%" />
+      <licence tarname="lua-%-mingw32-%-lic.tar.%" />
+
+      <component class="bin">
+        <release tarname="lua-5.2.0-1-mingw32-bin.tar.xz">
+          <requires eq="lua-%-mingw32-dll-52.tar" />
+        </release>
+        <release tarname="lua-5.1.4-4-mingw32-bin.tar.xz">
+          <requires eq="lua-%-mingw32-dll-51.tar" />
+        </release>
+      </component>
+
+      <component class="dll">
+        <release tarname="lua-5.2.0-1-mingw32-dll-52.tar.xz" />
+        <release tarname="lua-5.1.4-4-mingw32-dll-51.tar.xz" />
+      </component>
+
+      <component class="dev">
+        <release tarname="lua-5.2.0-1-mingw32-dev.tar.xz" />
+        <release tarname="lua-5.1.4-4-mingw32-dev.tar.xz" />
+      </component>
+
+      <component class="lic">
+        <release tarname="lua-5.2.0-1-mingw32-lic.tar.xz" />
+        <release tarname="lua-5.1.4-4-mingw32-lic.tar.xz" />
+      </component>
+
+      <component class="man">
+        <release tarname="lua-5.2.0-1-mingw32-man.tar.xz" />
+        <release tarname="lua-5.1.4-4-mingw32-man.tar.xz" />
+      </component>
+
+      <component class="doc">
+        <release tarname="lua-5.2.0-1-mingw32-doc.tar.xz" />
+        <release tarname="lua-5.1.4-4-mingw32-doc.tar.xz" />
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=82 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/mingw32-make.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/mingw32-make.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/mingw32-make.xml	(revision 1046)
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://mingw.org" issue="2012090201">
+  <package-collection subsystem="mingw32">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+    <!-- NOTE: no alias declared here, because msys-make is considered
+    the "preferred" make -->
+    <package name="mingw32-make">
+      <description lang="en" title="GNU make utility to maintain groups of programs" >
+        <paragraph>The `make' utility automatically determines which pieces
+          of a large program need to be recompiled, and issues commands to
+          recompile them. GNU `make' was implemented by Richard Stallman
+          and Roland McGrath.  Development since Version 3.76 has been
+          handled by Paul D. Smith.
+        </paragraph>
+        <paragraph>The MinGW/MSYS project provides two versions of make:
+          the msys-make version acts generally more as make is intended
+          to operate, and gives fewer headaches during execution. However,
+          msys-make requires the MSYS dll.  This version, mingw32-make,
+          does not require the MSYS dll, but because of the lack of POSIX
+          support in "pure" Win32 has a number of known shortcomings in
+          comparison.
+        </paragraph>
+      </description>
+
+      <source tarname="make-%-mingw32-%-src.tar.%" />
+
+      <component class="bin">
+        <release tarname="make-3.82.90-2-mingw32-cvs-20120902-bin.tar.lzma" >
+          <requires eq="mingw32-libintl-*-mingw32-*-dll-8.tar" />
+        </release>
+        <release tarname="make-3.82.90-1-mingw32-cvs-20120823-bin.tar.lzma" >
+          <requires eq="mingw32-libintl-*-mingw32-*-dll-8.tar" />
+        </release>
+        <release tarname="make-3.82-5-mingw32-bin.tar.lzma" >
+          <requires eq="mingw32-libintl-*-mingw32-*-dll-8.tar" />
+        </release>
+        <release tarname="make-3.82-4-mingw32-bin.tar.lzma" />
+        <release tarname="make-3.81.90-20100618-1-mingw32-bin.tar.lzma" />
+        <release tarname="make-3.81-20090914-mingw32-bin.tar.gz" />
+      </component>
+
+      <component class="doc">
+        <release tarname="make-3.82.90-2-mingw32-cvs-20120902-doc.tar.lzma" />
+        <release tarname="make-3.82.90-1-mingw32-cvs-20120823-doc.tar.lzma" />
+        <release tarname="make-3.82-5-mingw32-doc.tar.lzma" />
+        <release tarname="make-3.82-4-mingw32-doc.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="make-3.82.90-2-mingw32-cvs-20120902-lic.tar.lzma" />
+        <release tarname="make-3.82.90-1-mingw32-cvs-20120823-lic.tar.lzma" />
+        <release tarname="make-3.82-5-mingw32-doc.tar.lzma" />
+        <release tarname="make-3.82-4-mingw32-doc.tar.lzma" />
+      </component>
+
+      <component class="lang">
+        <release tarname="make-3.82.90-2-mingw32-cvs-20120902-lang.tar.lzma" />
+        <release tarname="make-3.82.90-1-mingw32-cvs-20120823-lang.tar.lzma" />
+        <release tarname="make-3.82-5-mingw32-lang.tar.lzma" />
+        <release tarname="make-3.82-4-mingw32-lang.tar.lzma" />
+      </component>
+    </package>
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab tw=80 ts=2 sw=2 ff=unix: -->
+
Index: Daodan/MinGW/var/lib/mingw-get/data/mingw32-mgwport.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/mingw32-mgwport.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/mingw32-mgwport.xml	(revision 1046)
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://mingw.org" issue="2012073100">
+
+  <!-- File: mingw32-mgwport.xml -->
+
+  <package-collection subsystem="mingw32">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="mingw32-mgwport" alias="mgwport">
+      <description lang="en" title="MinGW/MSYS source packaging tool" >
+        <paragraph>This is mgwport, a revolutionary new method for building and
+        maintaining packages for MinGW and MSYS. It is based on the cygport
+        tool, which is near-universally used to maintain components of the
+        cygwin distribution.
+        </paragraph>
+      </description>
+
+      <licence tarname="mgwport-%-mingw32-%-lic.tar.%" />
+      <source tarname="mgwport-%-mingw32-%-src.tar.%" />
+
+      <component class="bin">
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+        <requires eq="msys-bash-*-msys-*-bin.tar" />
+        <requires eq="msys-bzip2-*-msys-*-bin.tar" />
+        <requires eq="msys-coreutils-*-msys-*-bin.tar" />
+        <requires eq="msys-diffstat-*-msys-*-bin.tar" />
+        <requires eq="msys-diffutils-*-msys-*-bin.tar" />
+        <requires eq="msys-file-*-msys-*-bin.tar" />
+        <requires eq="msys-grep-*-msys-*-bin.tar" />
+        <requires eq="msys-gzip-*-msys-*-bin.tar" />
+        <requires eq="msys-lndir-*-msys-*-bin.tar" />
+        <requires eq="msys-make-*-msys-*-bin.tar" />
+        <requires eq="msys-patch-*-msys-*-bin.tar" />
+        <requires eq="msys-rsync-*-msys-*-bin.tar" />
+        <requires eq="msys-sed-*-msys-*-bin.tar" />
+        <requires eq="msys-tar-*-msys-*-bin.tar" />
+        <requires eq="msys-unzip-*-msys-*-bin.tar" />
+        <requires eq="msys-wget-*-msys-*-bin.tar" />
+        <requires eq="msys-xz-*-msys-*-bin.tar" />
+        <requires eq="mingw32-binutils-*-mingw32-*-bin.tar" />
+        <requires eq="mingw32-autoconf-*-mingw32-*-bin.tar" />
+        <requires eq="mingw32-autoconf2.1-*-mingw32-*-bin.tar" />
+        <requires eq="mingw32-autoconf2.5-*-mingw32-*-bin.tar" />
+        <requires eq="mingw32-automake-*-mingw32-*-bin.tar" />
+        <requires eq="mingw32-automake1.4-*-mingw32-*-bin.tar" />
+        <requires eq="mingw32-automake1.5-*-mingw32-*-bin.tar" />
+        <requires eq="mingw32-automake1.6-*-mingw32-*-bin.tar" />
+        <requires eq="mingw32-automake1.7-*-mingw32-*-bin.tar" />
+        <requires eq="mingw32-automake1.8-*-mingw32-*-bin.tar" />
+        <requires eq="mingw32-automake1.9-*-mingw32-*-bin.tar" />
+        <requires eq="mingw32-automake1.10-*-mingw32-*-bin.tar" />
+        <requires eq="mingw32-automake1.11-*-mingw32-*-bin.tar" />
+        <requires eq="mingw32-libtool-*-mingw32-*-bin.tar" />
+        <!-- These are only required when using mgwport to build msys packages
+        <requires eq="msys-binutils-*-msys-*-bin.tar" />
+        <requires eq="msys-autoconf-*-msys-*-bin.tar" />
+        <requires eq="msys-automake-*-msys-*-bin.tar" />
+        <requires eq="msys-libtool-*-msys-*-bin.tar" />
+        -->
+        <release tarname="mgwport-0.10.5-1-mingw32-bin.tar.lzma" />
+        <release tarname="mgwport-0.10.6-1-mingw32-bin.tar.lzma" />
+      </component>
+
+      <component class="doc">
+        <release tarname="mgwport-0.10.5-1-mingw32-doc.tar.lzma" />
+        <release tarname="mgwport-0.10.6-1-mingw32-doc.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="mgwport-0.10.5-1-mingw32-lic.tar.lzma" />
+        <release tarname="mgwport-0.10.6-1-mingw32-lic.tar.lzma" />
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/mingw32-mingw-get.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/mingw32-mingw-get.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/mingw32-mingw-get.xml	(revision 1046)
@@ -0,0 +1,134 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://www.mingw.org" issue="2013100400">
+
+  <!-- File: mingw32-mingw-get.xml ~~ mingw-get self-upgrade manifest -->
+
+  <package-collection subsystem="mingw32">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="mingw32-mingw-get" alias="mingw-get">
+      <affiliate group="MinGW Base System" />
+
+      <description lang="en" title="MinGW Package Download and Installation Tool">
+        <paragraph>mingw-get is a tool to assist users in the management of MinGW
+          and MSYS software installations.  Configured via an online XML database,
+          which is managed by the project maintainers, it offers a choice of
+          command line and graphical user interfaces, facilitating selective
+          download and installation of packages provided by the project.
+        </paragraph>
+        <paragraph>The XML database provides maintainers with a mechanism for the
+          specification of inter-package dependencies; this permits configuration
+          of any package, such that the end user may elect to install just that
+          specific package, leaving mingw-get to ensure that all dependencies will
+          be automatically satisfied at installation time.
+        </paragraph>
+      </description>
+
+      <component class="bin">
+        <description lang="en">
+          <paragraph>This package provides the binary components which are
+            required to run mingw-get as a command line tool, together with
+            components which are common to both command line and graphical user
+            interfaces.  If you prefer a graphical user interface, you should
+            install mingw32-mingw-get-gui in addition to this package.
+          </paragraph>
+        </description>
+
+        <release tarname="mingw-get-0.6.2-mingw32-beta-20131004-1-bin.tar.xz" />
+        <release tarname="mingw-get-0.6.1-mingw32-beta-20130910-1-bin.tar.xz" />
+        <release tarname="mingw-get-0.6.0-mingw32-beta-20130904-1-bin.tar.xz" />
+        <release tarname="mingw-get-0.5-mingw32-beta-20120426-1-bin.tar.xz" />
+        <release tarname="mingw-get-0.4-mingw32-alpha-1-bin.tar.xz" />
+
+        <action class="post-install">
+          setup = require "setup"
+          print( " running post-install hooks for mingw-get-bin" )
+          setup.create_shortcuts(
+            '--description="MinGW Installation Manager"',
+            setup.libexec_path( "guistub.exe" ), "mingw-get"
+          )
+        </action>
+        <action class="pre-remove">
+          setup = require "setup"
+          print( " running pre-remove hooks for mingw-get-bin" )
+          setup.delete_shortcuts(
+            "--if-linked="..setup.libexec_path( "gui.exe" ),
+            "--force", "mingw-get"
+          )
+          setup.delete_shortcuts(
+            "--if-linked="..setup.libexec_path( "guistub.exe" ),
+            "--force", "mingw-get"
+          )
+        </action>
+      </component>
+
+      <component class="gui">
+        <description lang="en">
+          <paragraph>This package augments mingw32-mingw-get-bin, providing a
+            graphical user interface to mingw-get.
+          </paragraph>
+        </description>
+
+        <requires eq="mingw-get-%-mingw32-%-bin.tar" />
+
+        <release tarname="mingw-get-0.6.2-mingw32-beta-20131004-1-gui.tar.xz" />
+        <release tarname="mingw-get-0.6.1-mingw32-beta-20130910-1-gui.tar.xz" />
+        <release tarname="mingw-get-0.6.0-mingw32-beta-20130904-1-gui.tar.xz" />
+
+        <action class="post-install">
+          setup = require "setup"
+          print( " running post-install hooks for mingw-get-bin" )
+          setup.create_shortcuts(
+            '--description="MinGW Installation Manager"',
+            setup.libexec_path( "guimain.exe" ), "mingw-get"
+          )
+        </action>
+        <action class="pre-remove">
+          setup = require "setup"
+          print( " running pre-remove hooks for mingw-get-bin" )
+          setup.delete_shortcuts(
+            "--if-linked="..setup.libexec_path( "guimain.exe" ),
+            "--force", "mingw-get"
+          )
+        </action>
+      </component>
+
+      <component class="lic">
+        <release tarname="mingw-get-0.6.2-mingw32-beta-20131004-1-lic.tar.xz" />
+        <release tarname="mingw-get-0.6.1-mingw32-beta-20130910-1-lic.tar.xz" />
+        <release tarname="mingw-get-0.6.0-mingw32-beta-20130904-1-lic.tar.xz" />
+        <release tarname="mingw-get-0.5-mingw32-beta-20120426-1-lic.tar.xz" />
+        <release tarname="mingw-get-0.4-mingw32-alpha-1-lic.tar.xz" />
+      </component>
+    </package>
+
+    <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+
+    <package name="mingw32-pkginfo" alias="pkginfo">
+      <description lang="en" title="MinGW Package Identification Tool">
+        <paragraph>pkginfo is a tool which may be used to parse and analyse
+          the names of packages provided by the MinGW/MSYS Project.  It uses
+          the same lexical analyser as mingw-get, to extract meta-data from
+          any specified package name.
+        </paragraph>
+        <paragraph>It is primarily of interest to members of the MinGW/MSYS
+          Project Team, who may use it to confirm that their chosen package
+          names convey the intended meta-data to mingw-get.
+        </paragraph>
+      </description>
+
+      <licence tarname="mingw-get-%-mingw32-%-lic.tar.%" />
+      <source tarname="mingw-get-%-mingw32-%-src.tar.%" />
+
+      <component class="bin">
+        <release tarname="pkginfo-0.6.2-mingw32-beta-20131004-1-bin.tar.xz" />
+        <release tarname="pkginfo-0.6.1-mingw32-beta-20130910-1-bin.tar.xz" />
+        <release tarname="pkginfo-0.6.0-mingw32-beta-20130904-1-bin.tar.xz" />
+        <release tarname="pkginfo-0.5-mingw32-beta-20120426-1-bin.tar.xz" />
+        <release tarname="pkginfo-0.4-mingw32-alpha-1-bin.tar.xz" />
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=82 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/mingw32-mingw-utils.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/mingw32-mingw-utils.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/mingw32-mingw-utils.xml	(revision 1046)
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://mingw.org" issue="2012073100">
+
+  <!-- File: mingw32-mingw-utils.xml -->
+
+  <package-collection subsystem="mingw32">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="mingw32-mingw-utils" alias="mingw-utils mingw32-utils">
+      <description lang="en" title="Various useful tools for MinGW" >
+        <paragraph>mingw-utils provides a number of useful utilities for MinGW.
+          These include: `a2dll', a script to generate DLLs from .a archives;
+          `dsw2mak', a script to generate gcc-compatibile GNU Makefiles from
+          MSDevStudio workspace files; `redir.exe', a utility for redirecting
+          stderr within cmd.exe sessions; `reimp.exe', a tool that converts
+          certain MS-format import libraries to GNU format; `res2coff', for
+          converting .res resource files to .o object format (possibly obsoleted
+          by modern versions of windres from mingw32-binutils).  Finally, this
+          package also provides an experimental version of `msys-here.exe', a
+          shell extension that adds a context-menu option to Windows Explorer.
+          To install msys-here, run the `msys-here-config' script.
+        </paragraph>
+        <paragraph>Several utilities were provided in the past by previous
+          incarnations of mingw-utils.  These included pexports, which is now
+          provided by the separate mingw32-pexports package; dos2unix and
+          unix2dos, which are both now provided by the separate
+          mingw32-dos2unix package; and DrMinGW.  DrMinGW is now
+          available and maintained outside the MinGW/MSYS project by its
+          original author: http://code.google.com/p/jrfonseca/wiki/DrMingw
+        </paragraph>
+      </description>
+
+      <licence tarname="mingw-utils-%-mingw32-%-lic.tar.%" />
+      <source tarname="mingw-utils-%-mingw32-%-src.tar.%" />
+
+      <component class="bin">
+        <!-- All of the following requirements are needed to satisfy 
+             the msys-here-config, a2dll, and dsw2mak elements of
+             mingw-utils -->
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+        <requires eq="msys-bash-*-msys-*-bin.tar" />
+        <requires eq="msys-coreutils-*-msys-*-bin.tar" />
+        <requires eq="msys-sed-*-msys-*-bin.tar" />
+        <requires eq="msys-gawk-*-msys-*-bin.tar" />
+        <requires eq="mingw32-binutils-*-mingw32-*-bin.tar" />
+        <requires eq="mingw32-pexports-*-mingw32-*-bin.tar" />
+        <release tarname="mingw-utils-0.4-1-mingw32-bin.tar.lzma" />
+      </component>
+
+      <component class="doc">
+        <release tarname="mingw-utils-0.4-1-mingw32-doc.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="mingw-utils-0.4-1-mingw32-lic.tar.lzma" />
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/mingw32-mpc.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/mingw32-mpc.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/mingw32-mpc.xml	(revision 1046)
@@ -0,0 +1,116 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://www.mingw.org" issue="2015082000">
+
+  <!-- File: mingw32-mpc.xml ~~ mingw-get package description for mpc -->
+
+  <package-collection subsystem="mingw32">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <!-- Provides the package descriptions for the mpc library, which -->
+    <!-- is a runtime prerequisite for modern versions of GCC.        -->
+
+    <package name="mingw32-mpc" alias="mpc">
+      <affiliate group="MinGW Standard Libraries" />
+      <description lang="en" title="Arbitrary Precision Math Library for Complex Numbers">
+        <paragraph>
+          MPC is a C library for the arithmetic of complex numbers with
+          arbitrarily high precision and correct rounding of the result. It is
+          built upon and follows the same principles as MPFR.
+        </paragraph>
+        <paragraph>
+          The mingw32-mpc package provides the documentation for the mpc
+          library, as well as the related development files.  The associated
+          mingw32-libmpc package provides the C runtime library.
+        </paragraph>
+      </description>
+
+      <source tarname="mpc-%-mingw32-src.tar.%" />
+      <licence tarname="mpc-%-mingw32-lic.tar.%" />
+
+      <component class="dev">
+        <release tarname="mpc-1.0.2-mingw32-dev.tar.xz">
+          <requires eq="mingw32-libmpc-%-mingw32-dll-3.tar" />
+          <requires ge="mpfr-3.1.2-1-mingw32-dev.tar" />
+        </release>
+        <release tarname="mpc-1.0.1-2-mingw32-dev.tar.lzma">
+          <requires eq="mingw32-libmpc-%-mingw32-dll-3.tar" />
+          <requires ge="mpfr-3.1.2-1-mingw32-dev.tar" />
+        </release>
+        <release tarname="mpc-1.0.1-1-mingw32-dev.tar.lzma">
+          <requires eq="mingw32-libmpc-%-mingw32-dll-2.tar" />
+          <requires ge="mpfr-3.1.2-1-mingw32-dev.tar" />
+        </release>
+        <release tarname="mpc-0.8.1-1-mingw32-dev.tar.lzma">
+          <requires eq="mingw32-libmpc-%-mingw32-dll-2.tar" />
+        </release>
+      </component>
+
+      <component class="doc">
+        <release tarname="mpc-1.0.2-mingw32-doc.tar.xz" />
+        <release tarname="mpc-1.0.1-2-mingw32-doc.tar.lzma" />
+        <release tarname="mpc-1.0.1-1-mingw32-doc.tar.lzma" />
+        <release tarname="mpc-0.8.1-1-mingw32-doc.tar.lzma" />
+      </component>
+
+      <component class="info">
+        <release tarname="mpc-1.0.2-mingw32-info.tar.xz" />
+      </component>
+
+      <component class="lic">
+        <release tarname="mpc-1.0.2-mingw32-lic.tar.xz" />
+        <release tarname="mpc-1.0.1-2-mingw32-lic.tar.lzma" />
+        <release tarname="mpc-1.0.1-1-mingw32-lic.tar.lzma" />
+        <release tarname="mpc-0.8.1-1-mingw32-lic.tar.lzma" />
+      </component>
+
+    </package>
+
+    <package name="mingw32-libmpc" alias="libmpc">
+      <affiliate group="MinGW Standard Libraries" />
+      <description lang="en" title="Arbitrary Precision Math Library for Complex Numbers">
+        <paragraph>
+          MPC is a C library for the arithmetic of complex numbers with
+          arbitrarily high precision and correct rounding of the result. It is
+          built upon and follows the same principles as MPFR. This package
+          provides the runtime library.
+        </paragraph>
+        <paragraph>
+          The mingw32-libmpc package provides the C runtime library.  The
+          associated mingw32-mpc package provides the documentation for the
+          mpc library, as well as the related development files.
+        </paragraph>
+        <paragraph>
+          This is a required component of the MinGW Compiler Suite.
+        </paragraph>
+      </description>
+
+      <source tarname="mpc-%-mingw32-src.tar.lzma" />
+      <licence tarname="mpc-%-mingw32-lic.tar.lzma" />
+
+      <component class="dll">
+        <release tarname="libmpc-1.0.2-mingw32-dll-3.tar.xz">
+          <requires eq="mingw32-libmpfr-*-mingw32-dll-4.tar" />
+          <requires eq="mingw32-libgmp-*-mingw32-dll-10.tar" />
+        </release>
+        <release tarname="libmpc-1.0.1-2-mingw32-dll-3.tar">
+          <download tarname="mpc-1.0.1-2-mingw32-dll.tar.lzma" />
+          <requires eq="mingw32-libmpfr-*-mingw32-dll-4.tar" />
+          <requires eq="mingw32-libgmp-*-mingw32-dll-10.tar" />
+        </release>
+        <release tarname="libmpc-1.0.1-1-mingw32-dll-3.tar">
+          <download tarname="mpc-1.0.1-1-mingw32-dll.tar.lzma" />
+          <requires eq="mingw32-libmpfr-*-mingw32-dll-1.tar" />
+          <requires eq="mingw32-libgmp-*-mingw32-dll-10.tar" />
+        </release>
+        <release tarname="libmpc-0.8.1-1-mingw32-dll-2.tar.lzma">
+          <requires eq="mingw32-libmpfr-*-mingw32-dll-1.tar" />
+          <requires eq="mingw32-libgmp-*-mingw32-dll-10.tar" />
+        </release>
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+
+<!-- vim: set textwidth=80 tabstop=2 shiftwidth=2 expandtab: -->
+<!-- vim: set fileformat=unix nocompatible: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/mingw32-mpfr.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/mingw32-mpfr.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/mingw32-mpfr.xml	(revision 1046)
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://www.mingw.org" issue="2013102300">
+
+  <!-- File: mingw32-mpfr.xml ~~ mingw-get package description for mpfr -->
+
+  <package-collection subsystem="mingw32">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <!-- Provides the package descriptions for the mpfr library, which -->
+    <!-- is a runtime prerequisite for modern versions of GCC.        -->
+
+    <package name="mingw32-mpfr" alias="mpfr">
+      <affiliate group="MinGW Standard Libraries" />
+      <description lang="en" title="Arbitrary Precision Floating Point Math Library" >
+        <paragraph>
+          The MPFR library is a C library for multiple-precision floating-point
+          computations with correct rounding. The main goal of MPFR is to
+          provide a library for multiple-precision floating-point computation
+          which is both efficient and has a well-defined semantics. It copies
+          the good ideas from the ANSI/IEEE-754 standard for double-precision
+          floating-point arithmetic (53-bit mantissa). MPFR is based on the GMP
+          multiple-precision library.
+        </paragraph>
+        <paragraph>
+          The mingw32-mpfr package provides the documentation for the mpfr
+          library, as well as the related development files.  The associated
+          mingw32-libmpfr package provides the runtime library.
+        </paragraph>
+      </description>
+
+      <source tarname="mpfr-%-mingw32-src.tar.lzma" />
+      <licence tarname="mpfr-%-mingw32-lic.tar.lzma" />
+
+      <component class="dev">
+        <release tarname="mpfr-3.1.2-2-mingw32-dev.tar.lzma" >
+          <requires eq="mingw32-libmpfr-%-mingw32-dll-4.tar" />
+          <requires eq="gmp-5.1.2-1-mingw32-dev.tar.lzma" />
+        </release>
+        <release tarname="mpfr-2.4.1-1-mingw32-dev.tar.lzma" >
+          <requires eq="mingw32-libmpfr-%-mingw32-dll-1.tar" />
+        </release>
+      </component>
+
+      <component class="doc">
+        <release tarname="mpfr-3.1.2-2-mingw32-doc.tar.lzma" />
+        <release tarname="mpfr-2.4.1-1-mingw32-doc.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="mpfr-3.1.2-2-mingw32-lic.tar.lzma" />
+        <release tarname="mpfr-2.4.1-1-mingw32-lic.tar.lzma" />
+      </component>
+
+    </package>
+
+    <package name="mingw32-libmpfr" alias="libmpfr">
+      <affiliate group="MinGW Standard Libraries" />
+      <description lang="en" title="Arbitrary Precision Floating Point Math Library" >
+        <paragraph>
+          The MPFR library is a C library for multiple-precision floating-point
+          computations with correct rounding. The main goal of MPFR is to
+          provide a library for multiple-precision floating-point computation
+          which is both efficient and has a well-defined semantics. It copies
+          the good ideas from the ANSI/IEEE-754 standard for double-precision
+          floating-point arithmetic (53-bit mantissa). MPFR is based on the GMP
+          multiple-precision library.
+        </paragraph>
+        <paragraph>
+          The mingw32-libmpfr package provides the runtime library.  The
+          associated mingw32-mpfr package provides the documentation for the
+          mpfr library, as well as the related development files.
+        </paragraph>
+        <paragraph>
+          This is a required component of the MinGW Compiler Suite.
+        </paragraph>
+      </description>
+
+      <source tarname="mpfr-%-mingw32-src.tar.lzma" />
+      <licence tarname="mpfr-%-mingw32-lic.tar.lzma" />
+
+      <component class="dll">
+        <release tarname="libmpfr-3.1.2-2-mingw32-dll-4.tar" >
+          <download tarname="mpfr-3.1.2-2-mingw32-dll.tar.lzma" />
+          <requires eq="mingw32-libgmp-*-mingw32-dll-10.tar" />
+        </release>
+        <release tarname="libmpfr-2.4.1-1-mingw32-dll-1.tar.lzma" >
+          <requires eq="mingw32-libgmp-*-mingw32-dll-10.tar" />
+        </release>
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/mingw32-ncurses.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/mingw32-ncurses.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/mingw32-ncurses.xml	(revision 1046)
@@ -0,0 +1,101 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://mingw.org" issue="2016010800">
+
+  <!-- File: mingw32-ncurses.xml -->
+
+  <package-collection subsystem="mingw32">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="mingw32-ncurses" alias="ncurses">
+      <affiliate group="MinGW Contributed Libraries" />
+
+      <description lang="en" title="A free software implementation of the SysV4.0 curses terminal-handling library and tools">
+        <paragraph>
+          The  ncurses  (new  curses)  library  is  a free software emulation of
+          curses  in  System  V  Release 4.0, and more. It uses terminfo format,
+          supports  pads  and color and multiple highlights and forms characters
+          and   function-key   mapping,   and  has  all  the  other  SYSV-curses
+          enhancements over BSD curses.
+        </paragraph>
+        <paragraph>The mingw32-ncurses package provides the documentation and
+          programs for the ncurses library.  The associated mingw32-libncurses
+          package provides the runtime library and related development files.
+        </paragraph>
+      </description>
+
+      <licence tarname="ncurses-%-mingw32-%-lic.tar.%" />
+      <source tarname="ncurses-%-mingw32-%-src.tar.%" />
+
+      <component class="bin">
+        <release tarname="ncurses-6.0-2-mingw32-bin.tar.lzma" />
+        <release tarname="ncurses-6.0-1-mingw32-bin.tar.lzma" />
+      </component>
+
+      <component class="doc">
+        <release tarname="ncurses-6.0-2-mingw32-doc.tar.lzma" />
+        <release tarname="ncurses-6.0-1-mingw32-doc.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="ncurses-6.0-2-mingw32-lic.tar.lzma" />
+        <release tarname="ncurses-6.0-1-mingw32-lic.tar.lzma" />
+      </component>
+    </package>
+
+    <package name="mingw32-libncurses" alias="libncurses">
+      <affiliate group="MinGW Contributed Libraries" />
+
+      <description lang="en" title="A free software implementation of the SysV4.0 curses terminal-handling library and tools">
+        <paragraph>
+          The  ncurses  (new  curses)  library  is  a free software emulation of
+          curses  in  System  V  Release 4.0, and more. It uses terminfo format,
+          supports  pads  and color and multiple highlights and forms characters
+          and   function-key   mapping,   and  has  all  the  other  SYSV-curses
+          enhancements over BSD curses.
+        </paragraph>
+        <paragraph>The mingw32-libncurses package provides the runtime library
+          and related development files for ncurses.  The associated
+          mingw32-ncurses package provides the documentation and programs
+          related to the library.
+        </paragraph>
+      </description>
+
+      <licence tarname="ncurses-%-mingw32-%-lic.tar.%" />
+      <source tarname="ncurses-%-mingw32-%-src.tar.%" />
+
+      <component class="dev">
+        <release tarname="libncurses-6.0-2-mingw32-dev.tar.lzma" />
+        <release tarname="libncurses-6.0-1-mingw32-dev.tar.lzma" />
+      </component>
+
+      <component class="dll">
+        <release tarname="libncurses-6.0-2-mingw32-dll-6.tar.lzma" />
+      </component>
+    </package>
+
+    <package name="mingw32-terminfo" alias="terminfo">
+      <affiliate group="MinGW Contributed Libraries" />
+
+      <description lang="en" title="Terminal capability data base">
+        <paragraph>
+         Terminfo  is  a  data  base  describing terminals, used by
+         screen-oriented programs  such  as  nvi(1),  rogue(1)  and
+         libraries  such  as curses(3x).  Terminfo describes termi-
+         nals by giving a set of capabilities which they  have,  by
+         specifying how to perform screen operations, and by speci-
+         fying padding requirements and  initialization  sequences.
+        </paragraph>
+      </description>
+
+      <licence tarname="ncurses-%-mingw32-%-lic.tar.%" />
+      <source tarname="ncurses-%-mingw32-%-src.tar.%" />
+
+      <component class="data">
+        <release tarname="terminfo-6.0-2-mingw32-data.tar.lzma" />
+        <release tarname="terminfo-6.0-1-mingw32-data.tar.lzma" />
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/mingw32-package-list.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/mingw32-package-list.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/mingw32-package-list.xml	(revision 1046)
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://www.mingw.org" issue="2016082400">
+
+  <!-- File: mingw32-package-list.xml -->
+
+  <package-group-hierarchy>
+    <package-group name="MinGW" expand="true">
+      <package-group name="MinGW Base System">
+        <package-group name="MinGW Compiler Suite" />
+        <package-group name="MinGW Source-Level Debugger" />
+        <package-group name="MinGW Standard Libraries" />
+      </package-group>
+      <package-group name="MinGW Libraries">
+        <package-group name="MinGW Standard Libraries" />
+        <package-group name="MinGW Supplementary Libraries" />
+        <package-group name="MinGW Contributed Libraries" />
+      </package-group>
+      <package-group name="MinGW Contributed">
+        <package-group name="MinGW Contributed Applications" />
+        <package-group name="MinGW Contributed Libraries" />
+      </package-group>
+      <package-group name="MinGW Autotools" />
+    </package-group>
+  </package-group-hierarchy>
+
+  <!-- "real" packages ~~ core distribution -->
+  <package-list issue="2012073100" catalogue="mingw32-autoconf" />
+  <package-list issue="2012073100" catalogue="mingw32-automake" />
+  <package-list issue="2012073100" catalogue="mingw32-basic-bsdtar" />
+  <package-list issue="2015092000" catalogue="mingw32-binutils" />
+  <package-list issue="2012073100" catalogue="mingw32-bzip2" />
+  <package-list issue="2015122200" catalogue="mingw32-dos2unix" />
+  <package-list issue="2013091000" catalogue="mingw32-expat" />
+  <package-list issue="2011050500" catalogue="mingw32-gcc3" />
+  <package-list issue="2016082400" catalogue="mingw32-gcc4" />
+  <package-list issue="2012073100" catalogue="mingw32-gcc-tools" />
+  <package-list issue="2013091501" catalogue="mingw32-gdb" />
+  <package-list issue="2012073100" catalogue="mingw32-gendef" />
+  <package-list issue="2015090600" catalogue="mingw32-gettext" />
+  <package-list issue="2013090900" catalogue="mingw32-gmp" />
+  <package-list issue="2012073100" catalogue="mingw32-libarchive" />
+  <package-list issue="2014042900" catalogue="mingw32-libiconv" />
+  <package-list issue="2012073100" catalogue="mingw32-libtool" />
+  <package-list issue="2012021600" catalogue="mingw32-lua" />
+  <package-list issue="2012090201" catalogue="mingw32-make" />
+  <package-list issue="2013100400" catalogue="mingw32-mingw-get" />
+  <package-list issue="2012073100" catalogue="mingw32-mingw-utils" />
+  <package-list issue="2012073100" catalogue="mingw32-mgwport" />
+  <package-list issue="2015082000" catalogue="mingw32-mpc" />
+  <package-list issue="2013102300" catalogue="mingw32-mpfr" />
+  <package-list issue="2015090800" catalogue="mingw32-pexports" />
+  <package-list issue="2012073100" catalogue="mingw32-popt" />
+  <package-list issue="2016082200" catalogue="mingw32-pthreads-w32" />
+  <package-list issue="2016073100" catalogue="mingw32-runtime" />
+  <package-list issue="2013070100" catalogue="mingw32-wsl-candidate" />
+  <package-list issue="2012073100" catalogue="mingw32-xz" />
+  <package-list issue="2013101200" catalogue="mingw32-zlib" />
+
+  <!-- "virtual" packages -->
+  <package-list issue="2013072200" catalogue="mingw32-base" />
+  <package-list issue="2010090601" catalogue="mingw32-autotools" />
+
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/mingw32-pdcurses.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/mingw32-pdcurses.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/mingw32-pdcurses.xml	(revision 1046)
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://mingw.org" issue="2016010800">
+
+  <!-- File: mingw32-pdcurses.xml -->
+
+  <package-collection subsystem="mingw32">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="mingw32-pdcurses" alias="mingw32-PDCurses pdcurses PDCurses">
+      <affiliate group="MinGW Contributed Libraries" />
+
+      <description lang="en" title="PDCurses: Public Domain Curses Implementation">
+        <paragraph>Public Domain Curses, aka PDCurses, is an implementation of
+          X/Open curses for multiple platforms.  This package provides normal,
+          unicode (wide char), and UTF-8 versions of the library and associated
+          demonstration programs.
+        </paragraph>
+        <paragraph>The mingw32-pdcurses package provides the documentation and
+          demonstration programs for the PDCurses library.  The associated
+          mingw32-libpdcurses package provides the runtime library and related
+          development files.
+        </paragraph>
+      </description>
+
+      <licence tarname="PDCurses-%-mingw32-%-lic.tar.%" />
+      <source tarname="PDCurses-%-mingw32-%-src.tar.%" />
+
+      <component class="bin">
+        <release tarname="PDCurses-3.4-1-mingw32-bin.tar.lzma" >
+          <requires eq="mingw32-libpdcurses-%-mingw32-%-dll.tar" />
+        </release>
+      </component>
+
+      <component class="doc">
+        <release tarname="PDCurses-3.4-1-mingw32-doc.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="PDCurses-3.4-1-mingw32-lic.tar.lzma" />
+      </component>
+    </package>
+
+    <package name="mingw32-libpdcurses" alias="libpdcurses">
+      <affiliate group="MinGW Contributed Libraries" />
+
+      <description lang="en" title="libpdcurses: Public Domain Curses Implementation" >
+        <paragraph>Public Domain Curses, aka PDCurses, is an implementation of
+          X/Open curses for multiple platforms.  This package provides normal,
+          unicode (wide char), and UTF-8 versions of the library and associated
+          demonstration programs.
+        </paragraph>
+        <paragraph>The mingw32-libpdcurses package provides the runtime library
+          and related development files for pdcurses.  The associated
+          mingw32-pdcurses package provides the documentation and demonstration
+          programs related to the library.
+        </paragraph>
+      </description>
+
+      <licence tarname="PDCurses-%-mingw32-%-lic.tar.%" />
+      <source tarname="PDCurses-%-mingw32-%-src.tar.%" />
+
+      <component class="dll">
+        <release tarname="libpdcurses-3.4-1-mingw32-dll.tar.lzma" />
+      </component>
+
+      <component class="dev">
+        <release tarname="libpdcurses-3.4-1-mingw32-dev.tar.lzma" >
+          <requires eq="mingw32-libpdcurses-%-mingw32-%-dll.tar" />
+        </release>
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/mingw32-pexports.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/mingw32-pexports.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/mingw32-pexports.xml	(revision 1046)
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://mingw.org" issue="2015090800">
+
+  <!-- File: mingw32-pexports.xml -->
+
+  <package-collection subsystem="mingw32">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+    <package name="mingw32-pexports" alias="pexports">
+      <description lang="en" title="Generate .def files for DLLs" >
+        <paragraph>pexports can extract information from DLLs to create
+          corresponding .def files that list the symbols available in each DLL.
+          .def files can then be used by dlltool (mingw32-binutils) to generate
+          import libraries.  pexports is similar to gendef, but the two tools
+          differ in how each determines the "decoration" (or calling convention)
+          appropriate for each symbol, since that information is not always
+          available directly from the DLL's symbol table.  pexports can use a C
+          pre-processor to extract the information, provided you have the
+          appropriate header files.  gendef locates the symbol's code in the DLL,
+          and uses a disassembler to determine that information.  Neither method
+          is foolproof, so both tools are provided.
+        </paragraph>
+        <paragraph>Note that in order for pexports to detect the calling
+          convention, you must specify on the command line the headers to parse.
+          If the symbols are not declared in those headers, then the proper
+          decorations cannot be computed.  Originally written by Anders
+          Norlander, it now supports both 32bit and 64bit DLLs and EXEs thanks
+          to Tor Lillqvist.
+        </paragraph>
+      </description>
+
+      <licence tarname="pexports-%-mingw32-%-lic.tar.%" />
+      <source tarname="pexports-%-mingw32-%-src.tar.%" />
+
+      <component class="bin">
+        <release tarname="pexports-0.47-mingw32-bin.tar.xz" />
+        <release tarname="pexports-0.46-mingw32-bin.tar.xz" />
+        <release tarname="pexports-0.44-1-mingw32-bin.tar.lzma" />
+        <requires eq="mingw32-gcc-core-*-mingw32-*-bin.tar" />
+        <requires eq="mingw32-mingwrt-*-mingw32-*-dev.tar" />
+        <requires eq="mingw32-w32api-*-mingw32-*-dev.tar" />
+      </component>
+
+      <component class="doc">
+        <release tarname="pexports-0.47-mingw32-doc.tar.xz" />
+        <release tarname="pexports-0.46-mingw32-doc.tar.xz" />
+        <release tarname="pexports-0.44-1-mingw32-doc.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="pexports-0.47-mingw32-lic.tar.xz" />
+        <release tarname="pexports-0.46-mingw32-lic.tar.xz" />
+        <release tarname="pexports-0.44-1-mingw32-lic.tar.lzma" />
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/mingw32-popt.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/mingw32-popt.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/mingw32-popt.xml	(revision 1046)
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://mingw.org" issue="2012073100">
+
+  <!-- File: mingw32-popt.xml -->
+
+  <package-collection subsystem="mingw32">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="mingw32-popt" alias="popt">
+      <description lang="en" title="Command line option parsing library" >
+        <paragraph>popt is a command line option parsing library.  While popt is
+          similiar to getopt, it contains a number of enhancements.  This
+          version is based on the rpm5.org version of popt, rather than the
+          rpm.org version.  The rpm5.org implementation is more portable.
+        </paragraph>
+        <paragraph>The mingw32-popt package provides the documentation for the
+          popt library.  The associated mingw32-libpopt package provides the
+          runtime library and development files.
+        </paragraph>
+      </description>
+
+      <licence tarname="popt-%-mingw32-%-lic.tar.%" />
+      <source tarname="popt-%-mingw32-%-src.tar.%" />
+
+      <component class="doc">
+        <release tarname="popt-1.15-1-mingw32-doc.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="popt-1.15-1-mingw32-lic.tar.lzma" />
+      </component>
+    </package>
+
+    <package name="mingw32-libpopt" alias="libpopt">
+      <description lang="en" title="Command line option parsing library" >
+        <paragraph>popt is a command line option parsing library.  While popt is
+          similiar to getopt, it contains a number of enhancements.  This
+          version is based on the rpm5.org version of popt, rather than the
+          rpm.org version.  The rpm5.org implementation is more portable.
+        </paragraph>
+        <paragraph>The mingw32-libpopt package provides the runtime library and
+          development files.  The associated mingw32-popt package provides the
+          documentation for the popt library.
+        </paragraph>
+      </description>
+
+      <licence tarname="popt-%-mingw32-%-lic.tar.%" />
+      <source tarname="popt-%-mingw32-%-src.tar.%" />
+
+      <component class="dll">
+        <release tarname="libpopt-1.15-1-mingw32-dll-0.tar.lzma" >
+          <requires eq="mingw32-libintl-*-mingw32-*-dll-8.tar" />
+        </release>
+      </component>
+
+      <component class="dev">
+        <release tarname="libpopt-1.15-1-mingw32-dev.tar.lzma" >
+          <requires eq="mingw32-libpopt-%-mingw32-%-dll-0.tar" />
+        </release>
+      </component>
+
+      <component class="lang">
+        <release tarname="libpopt-1.15-1-mingw32-lang.tar.lzma" />
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/mingw32-pthreads-w32.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/mingw32-pthreads-w32.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/mingw32-pthreads-w32.xml	(revision 1046)
@@ -0,0 +1,264 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://www.mingw.org" issue="2016082200">
+
+  <!-- File: mingw32-pthreads-w32.xml ~~ mingw-get package description for pthreads-w32 -->
+
+  <package-collection subsystem="mingw32">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <!-- Provides the package descriptions for the pthreads-w32 library, -->
+    <!-- which is a runtime prerequisite for modern versions of GCC.     -->
+
+    <package name="mingw32-pthreads-w32" alias="pthreads-w32 pthreads">
+      <affiliate group="MinGW Standard Libraries" />
+      <description lang="en" title="POSIX threading library for Win32" >
+        <paragraph>
+          pthreads-w32 seeks to provide a freely available and high-quality
+          implementation of pthreads for Windows.  Pthreads is an API for
+          writing multithreaded applications following the POSIX standard.
+        </paragraph>
+        <paragraph>
+          The mingw32-pthreads-w32 package provides the documentation for the
+          pthreads-w32 library, as well as the related development files.  The
+          associated mingw32-libpthread package provides the runtime library.
+        </paragraph>
+      </description>
+
+      <source tarname="pthreads-w32-%-mingw32-%-src.tar" />
+      <licence tarname="pthreads-w32-%-mingw32-%-lic.tar" />
+
+      <component class="dev">
+        <release tarname="pthreads-w32-2.10-mingw32-pre-20160821-1-dev.tar.xz">
+          <requires eq="mingw32-libpthreadgc-%-mingw32-%-dev.tar" />
+          <download tarname="none" />
+        </release>
+        <release tarname="pthreads-w32-2.9.1-1-mingw32-dev.tar.lzma">
+          <requires eq="mingw32-libpthread-%-mingw32-dll-2.tar" />
+        </release>
+        <release tarname="pthreads-w32-2.8.0-3-mingw32-dev.tar.lzma" >
+          <requires eq="mingw32-libpthread-%-mingw32-dll-2.tar" />
+        </release>
+        <release tarname="pthreads-w32-2.9.0-mingw32-pre-20110507-2-dev.tar.lzma" >
+          <requires eq="mingw32-libpthreadgc-%-mingw32-%-dll-2.tar" />
+        </release>
+      </component>
+
+      <component class="doc">
+        <release tarname="pthreads-w32-2.10-mingw32-pre-20160821-1-doc.tar.xz" />
+        <release tarname="pthreads-w32-2.9.1-1-mingw32-doc.tar.lzma" />
+        <release tarname="pthreads-w32-2.8.0-3-mingw32-doc.tar.lzma" />
+        <release tarname="pthreads-w32-2.9.0-mingw32-pre-20110507-2-doc.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="pthreads-w32-2.10-mingw32-pre-20160821-1-lic.tar.xz" />
+        <release tarname="pthreads-w32-2.9.1-1-mingw32-lic.tar.lzma" />
+        <release tarname="pthreads-w32-2.9.0-mingw32-pre-20110507-2-lic.tar.lzma" />
+        <release tarname="pthreads-w32-2.8.0-3-mingw32-lic.tar.lzma" />
+      </component>
+    </package>
+
+    <package name="mingw32-libpthreadgc" alias="libpthreadgc mingw32-libpthread libpthread">
+      <affiliate group="MinGW Standard Libraries" />
+      <description lang="en" title="POSIX threading library for Win32" >
+        <paragraph>
+          NOTE: The 2.9.1 release delivers this library as part of the
+          pthreads-w32-2.9.1-1-mingw32-dll.tar.lzma file.  This DLL file is
+          a dependency for gcc-core-4.8.1 and will be installed as such when
+          using mingw-get.
+        </paragraph>
+        <paragraph>
+          pthreads-w32 seeks to provide a freely available and high-quality
+          implementation of pthreads for Windows.  Pthreads is an API for
+          writing multithreaded applications following the POSIX standard.
+        </paragraph>
+        <paragraph>
+          There are two mingw32 versions of the pthread-w32 runtime library: the
+          standard one, provided by this package, is called libpthreadgc but may
+          also be referred to as 'libpthread'.  The non-standard one uses C++
+          exception handling, and is called libpthreadgce. (Note that the
+          standard library may be used successfully with C++ code; indeed, on
+          most *nix platorms the system pthreads implementation follows the
+          behavior of mingw32-libpthreadgc, and NOT the behavior of the 'GCE'
+          version).  We recommend that most users rely on mingw32-libpthreadgc
+          ('GC') and not mingw32-libpthreadgce ('GCE').
+        </paragraph>
+        <paragraph>
+          The mingw32-libpthreadgc and mingw32-libpthreadgce packages provide
+          the two runtime libraries (most people need not install the 'GCE'
+          one).  The associated mingw32-pthreads-w32 package provides the
+          documentation for the pthreads-w32 library, as well as the related
+          development files.  The mingw32-libquserex package provides optional
+          support for enhanced standards conformance of the GCE runtime.
+        </paragraph>
+        <paragraph>
+          mingw32-libpthreadgc is a required component of the MinGW Compiler
+          Suite.
+        </paragraph>
+      </description>
+
+      <source tarname="pthreads-w32-%-mingw32-%-src.tar" />
+      <licence tarname="pthreads-w32-%-mingw32-%-lic.tar" />
+
+      <component class="dev">
+        <release tarname="libpthreadgc-2.10-mingw32-pre-20160821-1-dev.tar.xz">
+          <download tarname="pthreads-GC-w32-2.10-mingw32-pre-20160821-1-dev.tar.xz" />
+          <requires eq="mingw32-libpthreadgc-%-mingw32-%-dll-3.tar" />
+        </release>
+      </component>
+
+      <component class="dll">
+        <release tarname="libpthreadgc-2.10-mingw32-pre-20160821-1-dll-3.tar.xz">
+          <download tarname="pthreads-GC-w32-2.10-mingw32-pre-20160821-1-dll-3.tar.xz" />
+        </release>
+        <release tarname="libpthread-2.9.1-1-mingw32-dll-2.tar" >
+          <download tarname="pthreads-w32-2.9.1-1-mingw32-dll.tar.lzma" />
+        </release>
+        <release tarname="libpthread-2.8.0-3-mingw32-dll-2.tar.lzma" />
+        <release tarname="libpthreadgc-2.9.0-mingw32-pre-20110507-2-dll-2.tar.lzma" />
+      </component>
+    </package>
+
+    <package name="mingw32-libpthreadgce" alias="libpthreadgce" >
+      <affiliate group="MinGW Standard Libraries" />
+      <description lang="en" title="POSIX threading library for Win32" >
+        <paragraph>
+          NOTE: The 2.9.1 release delivers this library as part of the
+          pthreads-w32-2.9.1-1-mingw32-dll.tar.lzma file.  This DLL file is
+          a dependency for gcc-core-4.8.1 and will be installed as such when
+          using mingw-get.
+        </paragraph>
+        <paragraph>
+          pthreads-w32 seeks to provide a freely available and high-quality
+          implementation of pthreads for Windows.  Pthreads is an API for
+          writing multithreaded applications following the POSIX standard.
+        </paragraph>
+        <paragraph>
+          There are two mingw32 versions of the pthread-w32 runtime library: the
+          non-standard one, provided by this package, is called libpthreadgce,
+          and uses C++ exception handling.  The standard runtime is called
+          mingw32-libpthreadgc, and may also be referred to as
+          mignw32-libpthread. (Note that the standard library may be used
+          successfully with C++ code; indeed, on most *nix platorms the system
+          pthreads implementation follows the behavior of mingw32-libpthreadgc,
+          and NOT the behavior of the 'GCE' version).  We recommend that most
+          users rely on mingw32-libpthreadgc ('GC') and not
+          mingw32-libpthreadgce ('GCE').
+        </paragraph>
+        <paragraph>
+          The mingw32-libpthreadgc and mingw32-libpthreadgce packages provide
+          the two runtime libraries (most people need not install the 'GCE'
+          one).  The associated mingw32-pthreads-w32 package provides the
+          documentation for the pthreads-w32 library, as well as the related
+          development files.  The mingw32-libquserex package provides optional
+          support for enhanced standards conformance of the GCE runtime.
+        </paragraph>
+      </description>
+
+      <source tarname="pthreads-w32-%-mingw32-%-src.tar" />
+      <licence tarname="pthreads-w32-%-mingw32-%-lic.tar" />
+
+      <component class="dev">
+        <release tarname="libpthreadgce-2.10-mingw32-pre-20160821-1-dev.tar.xz">
+          <download tarname="pthreads-GCE-w32-2.10-mingw32-pre-20160821-1-dev.tar.xz" />
+          <requires eq="mingw32-libpthreadgce-%-mingw32-%-dll-3.tar" />
+          <requires eq="mingw32-libpthreadgc-%-mingw32-%-dev.tar" />
+        </release>
+      </component>
+
+      <component class="dll">
+        <release tarname="libpthreadgce-2.10-mingw32-pre-20160821-1-dll-3.tar.xz">
+          <download tarname="pthreads-GCE-w32-2.10-mingw32-pre-20160821-1-dll-3.tar.xz" />
+        </release>
+        <release tarname="libpthreadgce-2.9.1-1-mingw32-dll-2.tar" >
+          <download tarname="none" />
+          <requires eq="mingw32-libpthread-2.9.1-1-mingw32-dll-2.tar" />
+        </release>
+        <release tarname="libpthreadgce-2.9.0-mingw32-pre-20110507-2-dll-2.tar.lzma" />
+      </component>
+    </package>
+
+    <package name="mingw32-libquserex" alias="libquserex" >
+      <affiliate group="MinGW Standard Libraries" />
+      <description lang="en" title="POSIX threading library for Win32" >
+        <paragraph>
+          NOTE: The 2.9.1 and later releases do not deliver this library.
+          This decision was based on the number of downloads for the library
+          and the fact that it is experimental.
+        </paragraph>
+        <paragraph>
+          pthreads-w32 seeks to provide a freely available and high-quality
+          implementation of pthreads for Windows.  Pthreads is an API for
+          writing multithreaded applications following the POSIX standard.
+          libquserex is an optional library to enable enhanced standards
+          conformance of the non-standard mingw32-libpthreadgce ('GCE') runtime.
+          It provides access to a a kernel mode driver, AlertDrv.sys, which if
+          installed allows ordinary users to exploit the Win32 QueueUserAPCEx
+          function call.
+        </paragraph>
+        <paragraph>
+          There are two mingw32 versions of the pthread-w32 runtime library: the
+          non-standard one provided by mingw32-libpthreadgce ('GCE') uses C++
+          exceptions, and for full POSIX conformance needs a kernel mode driver
+          installed.  The standard runtime, mingw32-libpthreadgc ('GC') does not
+          require that driver for full standards conformance, and may be used
+          with C++ code; we recommend that most users rely on
+          mingw32-libpthreadgc ('GC') and not mingw32-libpthreadgce ('GCE').
+        </paragraph>
+        <paragraph>
+          However, for those that wish to experiment with the non-standard
+          ('GCE') runtime, this optional helper library may also be of use --
+          provided the kernel mode driver, available from mingw.org, is also
+          installed.  Note that the kernel mode driver can not currently be
+          installed on W7 (64bit) or Windows Server 2008R2 (64bit) because those
+          operating systems require kernel mode drivers to be digitally signed,
+          so this mingw32-libquserex package is rather useless on those
+          platforms.
+        </paragraph>
+        <paragraph>
+          The kernel mode driver is available at mingw.org or mirror site,
+          packaged as an InnoSetup installer executable called
+          QueueUserAPCEx-installer.exe.
+        </paragraph>
+      </description>
+
+      <source tarname="pthreads-w32-%-mingw32-%-src.tar" />
+      <licence tarname="pthreads-w32-%-mingw32-%-lic.tar" />
+
+      <component class="dll">
+        <release tarname="libquserex-2.9.0-mingw32-pre-20110507-2-dll.tar.lzma" />
+      </component>
+    </package>
+
+    <package name="mingw32-libpthread-old" alias="libpthread-old">
+      <affiliate group="MinGW Standard Libraries" />
+      <description lang="en" title="POSIX threading library for Win32" >
+        <paragraph>
+          pthreads-w32 seeks to provide a freely available and high-quality
+          implementation of pthreads for Windows.  Pthreads is an API for
+          writing multithreaded applications following the POSIX standard.
+        </paragraph>
+        <paragraph>
+          The mingw32-libpthread-old package provides the MinGW pthreads-w32
+          runtime dll associated with MinGW GCC 4.5.2 and older. Due to an
+          unfortunate naming choice, upgrading to newer GCC will also install
+          the newer, renamed pthreads-w32 DLLs, removing the old DLL. While the
+          may not affect the new GCC, threaded applications compiled using the
+          older compiler will break, as they will miss this runtime library.
+          Therefore, the old runtime library is provided here using a new
+          package name: mingw32-libpthread-old, so that it can be (re)installed
+          parallel to the new pthreads-w32 runtime libraries.
+        </paragraph>
+      </description>
+
+      <source tarname="pthreads-w32-%-mingw32-src.tar" />
+      <licence tarname="pthreads-w32-%-mingw32-lic.tar" />
+
+      <component class="dll">
+        <release tarname="libpthread-2.8.0-3-mingw32-dll-2.tar.lzma" />
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/mingw32-runtime.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/mingw32-runtime.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/mingw32-runtime.xml	(revision 1046)
@@ -0,0 +1,143 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://www.mingw.org" issue="2016073100">
+
+  <!-- File: mingw32-runtime.xml ~~ mingw-get package description for MinGW API -->
+
+  <package-collection subsystem="mingw32">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <!-- Provides the package descriptions for each of the two primary    -->
+    <!-- packages, which comprise the standard MinGW Runtime Library API, -->
+    <!-- namely mingwrt and w32api.                                       -->
+
+    <package name="mingw32-mingwrt" alias="mingwrt mingw-runtime" >
+      <affiliate group="MinGW Compiler Suite" />
+      <affiliate group="MinGW Standard Libraries" />
+      <description lang="en" title="The MinGW Runtime Library API">
+        <paragraph>
+          This package provides the header files, system object modules,
+          dynamic link libraries, import libraries and static libraries
+          which constitute the standard MinGW Runtime API.
+        </paragraph>
+        <paragraph>
+          This is a required component of the MinGW Compiler Suite.
+        </paragraph>
+      </description>
+
+      <source tarname="mingwrt-%-mingw32-src.tar.%" />
+      <licence tarname="mingwrt-%-mingw32-lic.tar.%" />
+
+      <component class="dev">
+        <requires eq="mingwrt-%-mingw32-dll.tar" />
+        <release tarname="mingwrt-3.22-mingw32-dev.tar.xz" />
+        <release tarname="mingwrt-3.22.1-mingw32-dev.tar.xz" />
+        <release tarname="mingwrt-3.21-mingw32-dev.tar.xz" />
+        <release tarname="mingwrt-3.21.1-mingw32-dev.tar.xz" />
+        <release tarname="mingwrt-3.20-2-mingw32-dev.tar.lzma">
+          <requires eq="mingwrt-%-mingw32-lic.tar" />
+          <requires eq="mingwrt-%-mingw32-man.tar" />
+        </release>
+        <release tarname="mingwrt-3.20-mingw32-dev.tar.gz">
+          <requires eq="mingwrt-%-mingw32-lic.tar" />
+          <requires eq="mingwrt-%-mingw32-man.tar" />
+        </release>
+        <release tarname="mingwrt-3.19-mingw32-dev.tar.gz">
+          <requires eq="mingwrt-%-mingw32-lic.tar" />
+          <requires eq="mingwrt-%-mingw32-man.tar" />
+        </release>
+        <release tarname="mingwrt-3.18-mingw32-dev.tar.gz">
+          <requires eq="mingwrt-%-mingw32-lic.tar" />
+          <requires eq="mingwrt-%-mingw32-man.tar" />
+        </release>
+      </component>
+
+      <component class="dll">
+        <release tarname="mingwrt-3.22-mingw32-dll.tar.xz" />
+        <release tarname="mingwrt-3.22.1-mingw32-dll.tar.xz" />
+        <release tarname="mingwrt-3.21-mingw32-dll.tar.xz" />
+        <release tarname="mingwrt-3.21.1-mingw32-dll.tar.xz" />
+        <release tarname="mingwrt-3.20-2-mingw32-dll.tar.lzma" />
+        <release tarname="mingwrt-3.20-mingw32-dll.tar.gz" />
+        <release tarname="mingwrt-3.19-mingw32-dll.tar.gz" />
+        <release tarname="mingwrt-3.18-mingw32-dll.tar.gz" />
+      </component>
+
+      <component class="lic">
+        <release tarname="mingwrt-3.22-mingw32-lic.tar.xz" />
+        <release tarname="mingwrt-3.22.1-mingw32-lic.tar.xz" />
+        <release tarname="mingwrt-3.21-mingw32-lic.tar.xz" />
+        <release tarname="mingwrt-3.21.1-mingw32-lic.tar.xz" />
+        <release tarname="mingwrt-3.20-2-mingw32-lic.tar.lzma">
+          <requires eq="mingwrt-%-mingw32-dev.tar" />
+          <download tarname="none" />
+        </release>
+        <release tarname="mingwrt-3.20-mingw32-lic.tar.gz">
+          <requires eq="mingwrt-%-mingw32-dev.tar" />
+          <download tarname="none" />
+        </release>
+        <release tarname="mingwrt-3.19-mingw32-lic.tar.gz">
+          <requires eq="mingwrt-%-mingw32-dev.tar" />
+          <download tarname="none" />
+        </release>
+        <release tarname="mingwrt-3.18-mingw32-lic.tar.gz">
+          <requires eq="mingwrt-%-mingw32-dev.tar" />
+          <download tarname="none" />
+        </release>
+      </component>
+
+      <component class="man">
+        <release tarname="mingwrt-3.22-mingw32-man.tar.xz" />
+        <release tarname="mingwrt-3.22.1-mingw32-man.tar.xz" />
+        <release tarname="mingwrt-3.21-mingw32-man.tar.xz" />
+        <release tarname="mingwrt-3.21.1-mingw32-man.tar.xz" />
+        <release tarname="mingwrt-3.20-2-mingw32-man.tar.lzma">
+          <requires eq="mingwrt-%-mingw32-dev.tar" />
+          <download tarname="none" />
+        </release>
+        <release tarname="mingwrt-3.20-mingw32-man.tar.gz">
+          <requires eq="mingwrt-%-mingw32-dev.tar" />
+          <download tarname="none" />
+        </release>
+        <release tarname="mingwrt-3.19-mingw32-man.tar.gz">
+          <requires eq="mingwrt-%-mingw32-dev.tar" />
+          <download tarname="none" />
+        </release>
+        <release tarname="mingwrt-3.18-mingw32-man.tar.gz">
+          <requires eq="mingwrt-%-mingw32-dev.tar" />
+          <download tarname="none" />
+        </release>
+      </component>
+    </package>
+
+    <package name="mingw32-w32api" alias="w32api">
+      <affiliate group="MinGW Compiler Suite" />
+      <affiliate group="MinGW Standard Libraries" />
+      <description lang="en" title="The MinGW API for 32-Bit MS-Windows">
+        <paragraph>
+          This package provides the header files, and import libraries
+          constituting a standard API for the development of applications
+          which utilise the capabilities of the 32-bit MS-Windows system
+          dynamic link libraries.
+        </paragraph>
+        <paragraph>
+          This is a required component of the MinGW Compiler Suite.
+        </paragraph>
+      </description>
+
+      <source tarname="w32api-%-mingw32-src.tar.%" />
+      <licence tarname="w32api-%-mingw32-dev.tar.%" />
+
+      <component class="dev">
+        <release tarname="w32api-3.18.1-mingw32-dev.tar.xz" />
+        <release tarname="w32api-3.18-mingw32-dev.tar.xz" />
+        <release tarname="w32api-3.17-2-mingw32-dev.tar.lzma" />
+        <release tarname="w32api-3.17-1-mingw32-dev.tar.lzma" />
+        <release tarname="w32api-3.16-1-mingw32-dev.tar.lzma" />
+        <release tarname="w32api-3.15-1-mingw32-dev.tar.lzma" />
+        <release tarname="w32api-3.14-mingw32-dev.tar.gz" />
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/mingw32-tcltk.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/mingw32-tcltk.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/mingw32-tcltk.xml	(revision 1046)
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://mingw.org" issue="2013101200">
+
+  <!-- File: mingw32-tcltk.xml -->
+
+  <package-collection subsystem="mingw32">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="mingw32-tcl">
+      <affiliate group="MinGW Contributed Applications" />
+      <description lang="en" title="TCL - Tool Command Language">
+        <paragraph>Tcl (Tool Command Language) is a very powerful but easy to
+	learn dynamic programming language, suitable for a very wide range of
+	uses, including web and desktop applications, networking,
+	administration, testing and many more. Open source and business-
+	friendly, Tcl is a mature yet evolving language that is truly cross
+	platform, easily deployed and highly extensible.
+	</paragraph>
+      </description>
+      <licence tarname="tcl-%-mingw32-%-lic.tar.lzma"/>
+      <source tarname="tcl-%-mingw32-%-src.tar.lzma" />
+      <component class="bin">
+	<release tarname="tcl-8.6.0-1-mingw32-bin.tar.lzma" >
+	  <requires eq="mingw32-tcl-%-mingw32-dev.tar.lzma" />
+	</release>
+      </component>
+      <component class="dev">
+	<release tarname="tcl-8.6.0-1-mingw32-dev.tar.lzma" >
+	  <requires eq="mingw32-tcl-%-mingw32-dll.tar.lzma" />
+	</release>
+      </component>
+      <component class="dll">
+	<release tarname="tcl-8.6.0-1-mingw32-dll.tar.lzma" />
+      </component>
+      <component class="doc">
+	<release tarname="tcl-8.6.0-1-mingw32-doc.tar.lzma" />
+      </component>
+      <component class="lic">
+	<release tarname="tcl-8.6.0-1-mingw32-lic.tar.lzma" />
+      </component>
+      <component class="man">
+	<release tarname="tcl-8.6.0-1-mingw32-man.tar.lzma" />
+      </component>
+    </package>
+    <package name="mingw32-tk">
+      <affiliate group="MinGW Contributed Applications" />
+      <description lang="en" title="TK - TCL Graphical User Interface Toolkit">
+	<paragraph>Tk is a graphical user interface toolkit that takes
+	developing desktop applications to a higher level than conventional
+	approaches. Tk is the standard GUI not only for Tcl, but for many other
+	dynamic languages, and can produce rich, native applications that run
+	unchanged across Windows, Mac OS X, Linux and more.
+	</paragraph>
+      </description>
+      <licence tarname="tk-%-mingw32-%-lic.tar.lzma"/>
+      <source tarname="tk-%-mingw32-%-src.tar.lzma" />
+      <component class="bin">
+	<release tarname="tk-8.6.0-1-mingw32-bin.tar.lzma" >
+	  <requires eq="mingw32-tk-%-mingw32-dev.tar.lzma"/>
+	  <requires eq="mingw32-tcl-%-mingw32-bin.tar.lzma"/>
+	</release>
+      </component>
+      <component class="dev">
+	<release tarname="tk-8.6.0-1-mingw32-dev.tar.lzma" >
+	  <requires eq="mingw32-tk-%-mingw32-dll.tar.lzma"/>
+	</release>
+      </component>
+      <component class="dll">
+	<release tarname="tk-8.6.0-1-mingw32-dll.tar.lzma" />
+      </component>
+      <component class="doc">
+	<release tarname="tk-8.6.0-1-mingw32-doc.tar.lzma" />
+      </component>
+      <component class="lic">
+	<release tarname="tk-8.6.0-1-mingw32-lic.tar.lzma" />
+      </component>
+    </package>
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/mingw32-wsl-candidate.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/mingw32-wsl-candidate.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/mingw32-wsl-candidate.xml	(revision 1046)
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://www.mingw.org" issue="2013070100">
+
+  <!-- File: mingw32-wsl.xml ~~ Windows System Libraries Meta-Package -->
+
+  <package-collection subsystem="mingw32">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <affiliate group="MinGW Project Infrastructure" />
+
+    <description lang="en" title="Windows System Libraries Meta-Package">
+      <paragraph>
+        This meta-package provides a delivery mechanism to support
+        pre-release testing of the upcoming windows system library
+        packages.  You are advised to install this package, ONLY if
+        you wish to participate in the pre-release testing of the
+        windows system libraries release candidate packages.
+      </paragraph>
+      <paragraph>
+        A two stage installation procedure is required; first, to
+        initialise the pre-release testing infrastructure:
+      </paragraph>
+      <paragraph>
+        $ mingw-get install mingw32-wsl_rc
+      </paragraph>
+      <paragraph>
+        Second, to install the release candidate software packages,
+        and switch to the testing environment:
+      </paragraph>
+      <paragraph>
+        $ mingw-get install mingw32-wsl_rc-test-on
+      </paragraph>
+      <paragraph>
+        Having thus activated the testing environment, you are advised
+        to immediately, (and without prejudice to its operation):
+      </paragraph>
+      <paragraph>
+        $ mingw-get remove mingw32-wsl_rc-test-on
+      </paragraph>
+      <paragraph>
+        While in the testing environment, and after removing the
+        mingw32-wsl_rc-test-on package, you may revert all associated
+        software packages to their production releases, thus switching
+        back to a production environment, by:
+      </paragraph>
+      <paragraph>
+        $ mingw-get install mingw32-wsl_rc-test-off
+      </paragraph>
+      <paragraph>
+        As before, after installing this, you are advised to immediately,
+        (and again without prejudice to the working environment):
+      </paragraph>
+      <paragraph>
+        $ mingw-get remove mingw32-wsl_rc-test-off
+      </paragraph>
+      <paragraph>
+        Finally, if having installed mingw32-wsl_rc, you subsequently 
+        decide to remove it, please ensure that you have removed either
+        or both of mingw32-wsl_rc-test-on and mingw32-wsl_rc-test-off,
+        BEFORE you do so.
+      </paragraph>
+    </description>
+
+    <package name="mingw32-wsl_rc">
+      <component class="meta">
+	<release tarname="wsl_rc-4.0-1-mingw32-rc-4-meta.tar.lzma" />
+	<release tarname="wsl_rc-4.0-1-mingw32-rc-3-meta.tar.lzma" />
+	<release tarname="wsl_rc-4.0-1-mingw32-rc-2-meta.tar.lzma" />
+        <release tarname="wsl_rc-4.0-1-mingw32-rc-1-meta.tar.lzma" />
+        <action class="pre-install">
+          xmlpath = os.getenv("APPROOT").."var\\lib\\mingw-get\\data\\"
+          xmlorigin = "mingw32-runtime.xml" xmlbackup = "wsl-released.xml.bak"
+          os.execute( "if NOT EXIST "..xmlpath..xmlbackup.." "..
+              "ren "..xmlpath..xmlorigin.." "..xmlbackup
+            )
+        </action>
+        <action class="post-remove">
+          xmlpath = os.getenv("APPROOT").."var\\lib\\mingw-get\\data\\"
+          xmlorigin = "mingw32-runtime.xml" xmlbackup = "wsl-released.xml.bak"
+          os.execute( "if EXIST "..xmlpath..xmlbackup.." "..
+              "ren "..xmlpath..xmlbackup.." "..xmlorigin
+            )
+        </action>
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=82 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/mingw32-xerces-c.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/mingw32-xerces-c.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/mingw32-xerces-c.xml	(revision 1046)
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://www.mingw.org" issue="2013102800">
+
+  <!-- File: mingw32-xerces-c.xml ~~ Xerces-C++ Validating XML Parser Library -->
+
+  <package-collection subsystem="mingw32">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="mingw32-xerces-c" alias="xerces-c">
+      <affiliate group="MinGW Contributed Applications" />
+
+      <description lang="en" title="Xerces-C++ Validating XML Parser Library">
+        <paragraph>
+          Xerces-C++ is a validating XML parser written in a portable subsets
+          of C++.  Xerces-C++ makes it easy to give your application the ability
+          to read and write XML data.  A shared library is provided for parsing,
+          generating, manipulating, and validating XML documents using the DOM,
+          SAX, and SAX2 APIs.
+        </paragraph>
+        <paragraph>
+          Xerces-C++ is faithful to the XML 1.0 recommendation and many associated
+          standards.
+        </paragraph>
+        <paragraph>
+          The parser provides high performance, modularity, and scalability.
+          Source code, samples and API documentation are provided with the parser.
+          For portability, care has been taken to make minimal use of templates,
+          no RTTI, and minimal use of #ifdefs.
+        </paragraph>
+      </description>
+
+      <source tarname="xerces-c-%-mingw32-%-src.tar.%" />
+      <licence tarname="xerces-c-%-mingw32-%-lic.tar.%" />
+
+      <component class="bin">
+        <description lang="en" title="Xerces-C++ Validating XML Parsing Utilities">
+          <paragraph>
+            This component package provides a suite of precompiled sample
+            programs, as included in the standard Xerces-C++ distribution.
+          </paragraph>
+        </description>
+        <release tarname="xerces-c-3.1.1-2-mingw32-4.7.2-bin.tar.xz" />
+        <release tarname="xerces-c-3.1.1-1-mingw32-3.4.5-bin.tar.xz" />
+        <requires eq="xerces-c-%-mingw32-%-dll-3.tar.%" />
+      </component>
+
+      <component class="dll">
+        <description lang="en">
+          <paragraph>
+            This component package provides the shared library (DLL), which
+            is required by all dynamically linked Xerces-C++ applications.
+          </paragraph>
+          <paragraph>
+            The version 3.1.1-2 release of this shared library has been
+            compiled using MinGW32-GCC-4.7.2, and uses the Dwarf-2 exception
+            handling model; the version 3.1.1-1 release has been compiled using
+            MinGW32-GCC-3.4.5, and uses the SJLJ exception handling model.
+          </paragraph>
+        </description>
+        <release tarname="xerces-c-3.1.1-2-mingw32-4.7.2-dll-3.tar.xz" />
+        <release tarname="xerces-c-3.1.1-1-mingw32-3.4.5-dll-3.tar.xz" />
+      </component>
+
+      <component class="dev">
+        <description lang="en">
+          <paragraph>
+            This component package provides the development libraries, and
+            their associated header files, to facilitate the development of
+            dynamically or statically linked Xerces-C++ applications.
+          </paragraph>
+          <paragraph>
+            For programming guidance, please refer to
+            http://xerces.apache.org/xerces-c/program-3.html
+          </paragraph>
+        </description>
+        <release tarname="xerces-c-3.1.1-2-mingw32-4.7.2-dev.tar.xz" />
+        <release tarname="xerces-c-3.1.1-1-mingw32-3.4.5-dev.tar.xz" />
+      </component>
+
+      <component class="lic">
+        <description lang="en">
+          <paragraph>
+            This component package delivers a copy of the Apache Software
+            License, version 2.0, under which Xerces-C++ is distributed,
+            and associated accreditation of Xerces-C++ developers. 
+          </paragraph>
+        </description>
+        <release tarname="xerces-c-3.1.1-mingw32-lic.tar.xz" />
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+
+<!-- vim: set expandtab textwidth=82 tabstop=2 shiftwidth=2: -->
+<!-- vim: set nocompatible fileformat=unix: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/mingw32-xz.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/mingw32-xz.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/mingw32-xz.xml	(revision 1046)
@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://mingw.org" issue="2012073100">
+
+  <!-- File: mingw32-xz.xml -->
+
+  <package-collection subsystem="mingw32">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="mingw32-xz" alias="xz">
+      <description lang="en" title="High performance compression based on the LZMA algorithm" >
+        <paragraph>LZMA is data compression algorithm based on the
+          Lempel-Ziv-Markov chain-Algorithm.  It provides high compression
+          ratios and very fast decompression, with minimal memory requirements
+          for decompression.  XZ Utils is the latest generation of this
+          software, supplanting the older LZMA Utils, which itself was a
+          friendly fork of the original LZMA SDK.  The xz package provides
+          commandline utilities for compression and decompression of XZ and LZMA
+          data, and documentation.  The associated liblzma package provides the
+          runtime library and development files for creating applications that
+          use LZMA or XZ compression.
+        </paragraph>
+        <paragraph>The MinGW/MSYS project provides both this native (mingw32)
+          version and an MSYS version of the xz package(s).  While the latter is
+          the primary tool from the perspective of the MSYS distribution, the
+          MinGW version is provided as one of the prerequisites for the native
+          (mingw32) basic-bsdtar utility.
+        </paragraph>
+      </description>
+
+      <licence tarname="xz-%-mingw32-%-lic.tar.%" />
+      <source tarname="xz-%-mingw32-%-src.tar.%" />
+
+      <component class="bin">
+        <requires eq="msys-bash-*-msys-*-bin.tar" />
+        <requires eq="msys-diffutils-*-msys-*-bin.tar" />
+        <requires eq="msys-grep-*-msys-*-bin.tar" />
+        <requires eq="msys-less-*-msys-*-bin.tar" />
+        <release tarname="xz-4.999.9beta_20100401-1-mingw32-bin.tar.bz2" >
+          <requires eq="mingw32-libintl-*-mingw32-*-dll-8.tar" />
+          <requires eq="mingw32-liblzma-%-mingw32-%-dll-1.tar" />
+        </release>
+        <release tarname="xz-5.0.3-2-mingw32-bin.tar.lzma" >
+          <requires eq="mingw32-libintl-*-mingw32-*-dll-8.tar" />
+          <requires eq="mingw32-liblzma-%-mingw32-%-dll-5.tar" />
+        </release>
+      </component>
+
+      <component class="doc">
+        <release tarname="xz-4.999.9beta_20100401-1-mingw32-doc.tar.bz2" />
+        <release tarname="xz-5.0.3-2-mingw32-doc.tar.lzma" />
+      </component>
+
+      <component class="lang">
+        <release tarname="xz-4.999.9beta_20100401-1-mingw32-lang.tar.bz2" />
+        <release tarname="xz-5.0.3-2-mingw32-lang.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="xz-4.999.9beta_20100401-1-mingw32-lic.tar.bz2" />
+        <release tarname="xz-5.0.3-2-mingw32-lic.tar.lzma" />
+      </component>
+    </package>
+
+    <package name="mingw32-liblzma" alias="liblzma">
+      <description lang="en" title="High performance compression library based on the LZMA algorithm" >
+        <paragraph>LZMA is data compression algorithm based on the
+          Lempel-Ziv-Markov chain-Algorithm.  It provides high compression
+          ratios and very fast decompression, with minimal memory requirements
+          for decompression.  XZ Utils is the latest generation of this
+          software, supplanting the older LZMA Utils, which itself was a
+          friendly fork of the original LZMA SDK.  The xz package provides
+          commandline utilities for compression and decompression of XZ and LZMA
+          data, and documentation.  The associated liblzma package provides the
+          runtime library and development files for creating applications that
+          use LZMA or XZ compression.
+        </paragraph>
+        <paragraph>The MinGW/MSYS project provides both this native (mingw32)
+          version and an MSYS version of the liblzma package(s).  While the
+          latter is the primary tool from the perspective of the MSYS
+          distribution, the MinGW version is provided as one of the
+          prerequisites for the native (mingw32) basic-bsdtar utility.
+        </paragraph>
+      </description>
+
+      <licence tarname="xz-%-mingw32-%-lic.tar.%" />
+      <source tarname="xz-%-mingw32-%-src.tar.%" />
+
+      <component class="dll">
+        <release tarname="liblzma-4.999.9beta_20100401-1-mingw32-dll-1.tar.bz2" />
+        <release tarname="liblzma-5.0.3-2-mingw32-dll-5.tar.lzma" >
+          <requires eq="mingw32-libgcc-*-mingw32-dll-1.tar" />
+        </release>
+      </component>
+
+      <component class="dev">
+        <release tarname="liblzma-4.999.9beta_20100401-1-mingw32-dev.tar.bz2" >
+          <requires eq="mingw32-liblzma-%-mingw32-%-dll-1.tar" />
+        </release>
+        <release tarname="liblzma-5.0.3-2-mingw32-dev.tar.lzma" >
+          <requires eq="mingw32-liblzma-%-mingw32-%-dll-5.tar" />
+        </release>
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/mingw32-zlib.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/mingw32-zlib.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/mingw32-zlib.xml	(revision 1046)
@@ -0,0 +1,162 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://mingw.org" issue="2013101200">
+
+  <!-- File: mingw32-zlib.xml -->
+
+  <package-collection subsystem="mingw32">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="mingw32-zlib" alias="zlib">
+      <description lang="en" title="A Massively Spiffy Yet Delicately Unobtrusive Compression Library">
+        <paragraph>The zlib compression library provides in-memory compression
+          and decompression functions, including integrity checks of the
+          uncompressed data.
+        </paragraph>
+      </description>
+
+      <licence tarname="zlib-%-mingw32-%-lic.tar.%" />
+      <source tarname="zlib-%-mingw32-%-src.tar.%" />
+
+      <component class="doc">
+        <release tarname="zlib-1.2.8-1-mingw32-doc.tar.lzma" />
+        <release tarname="zlib-1.2.7-1-mingw32-doc.tar.lzma" />
+        <release tarname="zlib-1.2.5-4-mingw32-doc.tar.lzma" />
+        <release tarname="zlib-1.2.5-1-mingw32-doc.tar.lzma" />
+        <release tarname="zlib-1.2.3-1-mingw32-doc.tar.gz" />
+      </component>
+
+      <component class="lic">
+        <release tarname="zlib-1.2.8-1-mingw32-lic.tar.lzma" />
+        <release tarname="zlib-1.2.7-1-mingw32-lic.tar.lzma" />
+        <release tarname="zlib-1.2.5-4-mingw32-lic.tar.lzma" />
+        <release tarname="zlib-1.2.5-1-mingw32-lic.tar.lzma" />
+        <release tarname="zlib-1.2.3-1-mingw32-lic.tar.gz" />
+      </component>
+
+      <component class="man">
+        <release tarname="zlib-1.2.8-1-mingw32-man.tar.lzma" />
+        <release tarname="zlib-1.2.7-1-mingw32-man.tar.lzma" />
+        <release tarname="zlib-1.2.5-4-mingw32-man.tar.lzma" />
+        <release tarname="zlib-1.2.5-1-mingw32-man.tar.lzma" />
+        <release tarname="zlib-1.2.3-1-mingw32-man.tar.gz" />
+      </component>
+    </package>
+
+    <package name="mingw32-libz" alias="libz">
+      <description lang="en" title="A Massively Spiffy Yet Delicately Unobtrusive Compression Library">
+        <paragraph>The zlib compression library provides in-memory compression
+          and decompression functions, including integrity checks of the
+          uncompressed data. The libz package provides the runtime and
+          development files related to the ZLib library. The associated zlib
+          package provides documentation.
+        </paragraph>
+      </description>
+      <affiliate group="Mingw Standard Libraries"/>
+
+      <licence tarname="zlib-%-mingw32-%-lic.tar.%" />
+      <source tarname="zlib-%-mingw32-%-src.tar.%" />
+
+      <component class="dll">
+        <release tarname="libz-1.2.3-1-mingw32-dll-1.tar.gz" />
+        <release tarname="libz-1.2.5-1-mingw32-dll-1.tar.lzma" >
+          <requires eq="mingw32-libgcc-*-mingw32-dll-1.tar" />
+        </release>
+        <release tarname="libz-1.2.5-4-mingw32-dll-1.tar.lzma" >
+          <requires eq="mingw32-libgcc-*-mingw32-dll-1.tar" />
+        </release>
+        <release tarname="libz-1.2.7-1-mingw32-dll-1.tar.lzma" >
+          <requires eq="mingw32-libgcc-*-mingw32-dll-1.tar" />
+        </release>
+	<release tarname="libz-1.2.8-1-mingw32-dll-1.tar">
+	  <download tarname="zlib-1.2.8-1-mingw32-dll.tar.lzma" />
+	</release>
+      </component>
+
+      <component class="dev">
+        <release tarname="libz-1.2.3-1-mingw32-dev.tar.gz" >
+          <requires eq="mingw32-libz-%-mingw32-%-dll-1.tar" />
+        </release>
+        <release tarname="libz-1.2.5-1-mingw32-dev.tar.lzma" >
+          <requires eq="mingw32-libz-%-mingw32-%-dll-1.tar" />
+        </release>
+        <release tarname="libz-1.2.5-4-mingw32-dev.tar.lzma" >
+          <requires eq="mingw32-libz-%-mingw32-%-dll-1.tar" />
+        </release>
+        <release tarname="libz-1.2.7-1-mingw32-dev.tar.lzma" >
+          <requires eq="mingw32-libz-%-mingw32-%-dll-1.tar" />
+        </release>
+	<release tarname="libz-1.2.8-1-mingw32-dev-1.tar" >
+	  <download tarname="zlib-1.2.8-1-mingw32-dev.tar.lzma" />
+	  <requires eq="mingw32-libz-%-mingw32-dll-1.tar" />
+	</release>
+      </component>
+    </package>
+
+    <package name="mingw32-minizip" alias="minizip">
+      <description lang="en" title="Simple ZIP support from zlib">
+        <paragraph>NOTE: This program was not delivered with the zlib-1.2.8
+          release. This decision was made due to the number of downloads for
+          the package as well as a belief that the zip and unzip packages are
+          already minimal enough.  It is therefore considered obsolete and
+          should be removed from your systems.
+        </paragraph>
+        <paragraph>The minizip package provides two simple ZIP archive
+          manipulation tools, based on the minizip library from zlib.  More
+          sophisticated needs are met by the unzip and zip packages.
+        </paragraph>
+        <paragraph>The libminizip library provides zlib-based support for
+          manipulating ZIP archives. It is suitable for clients that need only
+          create, inspect, and unpack such archives; more demanding needs may be
+          met by the libarchive package.
+        </paragraph>
+      </description>
+      <affiliate group="MinGW Deprecated Packages" />
+
+      <licence tarname="zlib-%-mingw32-%-lic.tar.%" />
+      <source tarname="zlib-%-mingw32-%-src.tar.%" />
+
+      <component class="bin">
+        <requires eq="mingw32-libgcc-*-mingw32-dll-1.tar" />
+        <requires eq="mingw32-libminizip-%-mingw32-dll-1.tar" />
+        <release tarname="minizip-1.2.7-1-mingw32-bin.tar.lzma" />
+      </component>
+    </package>
+
+    <package name="mingw32-libminizip" alias="libminizip">
+      <description lang="en" title="Simple ZIP support from zlib">
+        <paragraph>NOTE: This program was not delivered with the zlib-1.2.8
+          release. This decision was made due to the number of downloads for the
+          package as well as a belief that the libarchive package is already
+          minimal enough.  It is therefore considered obsolete and should be
+          removed from your system.
+        </paragraph>
+        <paragraph>The minizip library provides zlib-based support for
+          manipulating ZIP archives. It is suitable for clients that need only
+          create, inspect, and unpack such archives; more demanding needs may be
+          met by the libarchive package.
+        </paragraph>
+        <paragraph>This distribution also provides two simple utility programs:
+          minizip and miniunzip. Again, more sophisticated needs are met by the
+          unzip and zip packages.
+        </paragraph>
+      </description>
+
+      <licence tarname="zlib-%-mingw32-%-lic.tar.%" />
+      <source tarname="zlib-%-mingw32-%-src.tar.%" />
+
+      <component class="dll">
+        <requires eq="mingw32-libgcc-*-mingw32-dll-1.tar" />
+        <requires eq="mingw32-libz-%-mingw32-dll-1.tar" />
+        <release tarname="libminizip-1.2.7-1-mingw32-dll-1.tar.lzma" />
+      </component>
+
+      <component class="dev">
+        <requires eq="mingw32-libz-%-mingw32-dev.tar" />
+        <requires eq="mingw32-libminizip-%-mingw32-dll-1.tar" />
+        <release tarname="libminizip-1.2.7-1-mingw32-dev.tar.lzma" />
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/msys-autoconf.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/msys-autoconf.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/msys-autoconf.xml	(revision 1046)
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://mingw.org" issue="2012073100">
+
+  <!-- File: msys-autoconf.xml ~~ mingw-get package description autoconf (msys) -->
+
+  <package-collection subsystem="msys">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="msys-autoconf">
+      <affiliate group="MSYS System Builder" />
+      <description lang="en" title="Automatic Configure Script Builder">
+        <paragraph>This is not the autoconf you are looking for.</paragraph>
+        <paragraph>Autoconf is an extensible package of M4 macros
+          that produce shell scripts to automatically configure
+          software source code packages.  These scripts can adapt the
+          packages to many kinds of UNIX-like systems without manual
+          user intervention.  Autoconf creates a configuration script
+          for a package from a template file that lists the operating
+          system features that the package can use, in the form of M4
+          macro calls.
+        </paragraph>
+        <paragraph>This msys port of autoconf has been modified
+          specifically for the MSYS System Builder (msys-dvlpr) environment;
+          that is, it is intended to be used only when producing binary packages
+          for the MSYS subsystem.  If you intend to produce executables for the
+          native "mingw32" subsystem (that is, applications that should work on
+          Microsoft Windows installations without the MSYS dll), then you should
+          install the mingw32-autoconf-*, mingw32-autoconf2.5-*, and/or
+          mingw32-autoconf2.1-* packages instead.
+        </paragraph>
+      </description>
+
+      <licence tarname="autoconf-%-msys-%-lic.tar.%" />
+      <source tarname="autoconf-%-msys-%-src.tar.%" />
+
+      <component class="bin">
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+        <requires eq="msys-coreutils-*-msys-*-bin.tar" />
+        <requires eq="msys-m4-*-msys-*-bin.tar" />
+        <requires eq="msys-perl-*-msys-*-bin.tar" />
+        <requires eq="msys-texinfo-*-msys-*-bin.tar" />
+        <release tarname="autoconf-2.65-1-msys-1.0.13-bin.tar.lzma" />
+        <release tarname="autoconf-2.67-1-msys-1.0.15-bin.tar.lzma" />
+        <release tarname="autoconf-2.68-1-msys-1.0.17-bin.tar.lzma" />
+      </component>
+
+      <component class="doc">
+        <release tarname="autoconf-2.65-1-msys-1.0.13-doc.tar.lzma" />
+        <release tarname="autoconf-2.67-1-msys-1.0.15-doc.tar.lzma" />
+        <release tarname="autoconf-2.68-1-msys-1.0.17-doc.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="autoconf-2.65-1-msys-1.0.13-lic.tar.lzma" />
+        <release tarname="autoconf-2.67-1-msys-1.0.15-lic.tar.lzma" />
+        <release tarname="autoconf-2.68-1-msys-1.0.17-lic.tar.lzma" />
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/msys-autogen.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/msys-autogen.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/msys-autogen.xml	(revision 1046)
@@ -0,0 +1,112 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://mingw.org" issue="2012073100">
+
+  <!-- File: msys-autogen.xml -->
+
+  <package-collection subsystem="msys">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="msys-autogen">
+      <affiliate group="MinGW Developer Toolkit" />
+      <description lang="en" title="Simplifies the creation and maintenance of programs" >
+        <paragraph>AutoGen is a tool designed to simplify the creation and
+          maintenance of programs that contain large amounts of repetitious
+          text.  It is especially valuable in programs that have several
+          blocks of text that must be kept synchronized.  libopts provides
+          the runtime component of an autogen add-on that simplifies the
+          maintainance of that portion of your code that parses command-line
+          options.
+        </paragraph>
+        <paragraph>A common example where this would be useful is in
+          creating and maintaining the code required for processing program
+          options.  Processing options requires multiple constructs to be
+          maintained in parallel in different places in your program.
+          Options maintenance needs to be done countless times.  So, AutoGen
+          comes with an add-on package named AutoOpts that simplifies the
+          maintenance and documentation of program options.
+        </paragraph>
+        <paragraph>The msys-autogen package provides the autogen utilities
+          and documentation.  The associated msys-libopts package provides
+          the runtime library and development files for AutoOpts, a semi-
+          automated command line option parser library and toolset based on
+          AutoGen.
+        </paragraph>
+      </description>
+
+      <licence tarname="autogen-%-msys-%-lic.tar.%" />
+      <source tarname="autogen-%-msys-%-src.tar.%" />
+
+      <component class="bin">
+        <!-- Every MSYS package requires msys-core-bin.  This dependency
+          is not explicitly stated here; rather, it is implicitly satisfied
+          as a prerequisite of the matching DLL for this package itself,
+          which is specified for each of the following releases.
+          -->
+        <release tarname="autogen-5.10.1-1-msys-1.0.15-bin.tar.lzma" >
+          <requires eq="msys-libguile-*-msys-*-dll-17.tar" />
+          <requires eq="msys-libopts-%-msys-%-dll-25.tar" />
+          <requires eq="msys-libregex-*-msys-*-dll-1.tar" />
+          <requires eq="msys-libxml2-*-msys-*-dll-2.tar" />
+        </release>
+      </component>
+
+      <component class="doc">
+        <release tarname="autogen-5.10.1-1-msys-1.0.15-doc.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="autogen-5.10.1-1-msys-1.0.15-lic.tar.lzma" />
+      </component>
+    </package>
+
+    <package name="msys-libopts">
+      <description lang="en" title="a semi-automated command line parsing library" >
+        <paragraph>AutoGen is a tool designed to simplify the creation and
+          maintenance of programs that contain large amounts of repetitious
+          text.  It is especially valuable in programs that have several
+          blocks of text that must be kept synchronized.  libopts provides
+          the runtime component of an autogen add-on that simplifies the
+          maintainance of that portion of your code that parses command-line
+          options.
+        </paragraph>
+        <paragraph>A common example where this would be useful is in
+          creating and maintaining the code required for processing program
+          options.  Processing options requires multiple constructs to be
+          maintained in parallel in different places in your program.
+          Options maintenance needs to be done countless times.  So, AutoGen
+          comes with an add-on package named AutoOpts that simplifies the
+          maintenance and documentation of program options.
+        </paragraph>
+        <paragraph>The msys-libopts package provides the runtime library
+          and development files for AutoOpts, a semi-automated command
+          line option parser library and toolset based on AutoGen.  The
+          associated msys-autogen package provides the autogen utilities
+          and documentation.
+        </paragraph>
+      </description>
+
+      <licence tarname="autogen-%-msys-%-lic.tar.%" />
+      <source tarname="autogen-%-msys-%-src.tar.%" />
+
+      <component class="dll">
+        <release tarname="libopts-5.10.1-1-msys-1.0.15-dll-25.tar.lzma" >
+          <requires eq="msys-libregex-*-msys-*-dll-1.tar" />
+        </release>
+
+        <!-- Every MSYS DLL package requires msys-core-bin -->
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+      </component>
+
+      <component class="dev">
+        <requires eq="msys-autogen-*-msys-*-bin.tar" />
+        <requires eq="msys-libguile-*-msys-*-dev.tar" />
+        <requires eq="msys-libregex-*-msys-*-dev.tar" />
+        <release tarname="libopts-5.10.1-1-msys-1.0.15-dev.tar.lzma" >
+          <requires eq="msys-libopts-%-msys-%-dll-25.tar" />
+        </release>
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/msys-automake.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/msys-automake.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/msys-automake.xml	(revision 1046)
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://mingw.org" issue="2012073100">
+
+  <!-- File: msys-automake.xml ~~ mingw-get package description automake (msys) -->
+
+  <package-collection subsystem="msys">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="msys-automake">
+      <affiliate group="MSYS System Builder" />
+      <description lang="en" title="Automatic Makefile Builder">
+        <paragraph>This is not the automake you are looking for.</paragraph>
+        <paragraph>Automake is a tool for automatically generating Makefile.in
+          files compliant with the GNU Coding Standards.  Automake requires the
+          use of Autoconf.
+        </paragraph>
+        <paragraph>This msys port of automake has been modified specifically for
+          the MSYS System Builder (msys-dvlpr) environment; that is, it is
+          intended to be used only when producing binary packages for the MSYS
+          subsystem.  If you intend to produce executables for the native
+          "mingw32" subsystem (that is, applications that should work on
+          Microsoft Windows installations without the MSYS dll), then you should
+          install the mingw32-automake-*, and/or the mingw32-automake1.NN-*
+          packages instead.
+        </paragraph>
+      </description>
+
+      <licence tarname="automake-%-msys-%-lic.tar.%" />
+      <source tarname="automake-%-msys-%-src.tar.%" />
+
+      <component class="bin">
+        <requires eq="msys-autoconf-*-msys-*-bin.tar" />
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+        <requires eq="msys-coreutils-*-msys-*-bin.tar" />
+        <requires eq="msys-m4-*-msys-*-bin.tar" />
+        <requires eq="msys-perl-*-msys-*-bin.tar" />
+        <requires eq="msys-texinfo-*-msys-*-bin.tar" />
+        <release tarname="automake-1.11.1-1-msys-1.0.13-bin.tar.lzma" />
+      </component>
+
+      <component class="doc">
+        <release tarname="automake-1.11.1-1-msys-1.0.13-doc.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="automake-1.11.1-1-msys-1.0.13-lic.tar.lzma" />
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/msys-base.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/msys-base.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/msys-base.xml	(revision 1046)
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://www.mingw.org" issue="2013072300">
+
+  <!-- File: msys-base.xml -->
+  <!-- This is a preliminary catalogue describing the contents of a
+       basic, small, but relatively useful, msys installation. It attempts
+       to replicate, with certain judicious additions and deletions, the
+       set of packages originally installed by the old MSYS monolithic
+       installers circa MSYS-1.0.11 -->
+
+  <package-collection subsystem="msys">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="msys-tiny" alias="msys-minimal" class="virtual">
+
+      <affiliate group="MSYS Base System" />
+
+      <description lang="en" title="A Tiny MSYS Installation (meta)">
+        <paragraph>This meta package provides the smallest possible
+          functional MSYS installation.  It includes only MSYS itself,
+          a bash shell, and a few absolutely required commandline
+          utilities.  Other components can be added manually as needed.
+        </paragraph>
+      </description>
+
+      <component class="bin">
+        <release tarname="msys-tiny-2013072300-msys-bin.meta" />
+        <requires eq="msys-bash-*-msys-*-bin.tar" />
+        <requires eq="msys-coreutils-*-msys-*-bin.tar" />
+      </component>
+    </package>
+
+    <package name="msys-base" alias="msys" class="virtual">
+
+      <affiliate group="Basic Setup" />
+      <affiliate group="MSYS Base System" />
+
+      <description lang="en" title="A Basic MSYS Installation (meta)">
+        <paragraph>This meta package contains the components necessary
+          to create a basic, small, but relatively useful MSYS installation.
+          It includes the core system, bash, various command line utilities,
+          and archiving/compression tools.  It attempts to replicate, with
+          certain judicious additions and deletions, the set of tools
+          originally installed by the old MSYS monolithic installers.
+        </paragraph>
+      </description>
+
+      <component class="bin">
+        <release tarname="msys-base-2013072300-msys-bin.meta" />
+        <requires eq="msys-bash-*-msys-*-bin.tar" />
+        <requires eq="msys-bzip2-*-msys-*-bin.tar" />
+        <requires eq="msys-core-*-msys-*-ext.tar" />
+        <requires eq="msys-coreutils-*-msys-*-bin.tar" />
+        <requires eq="msys-dos2unix-*-msys-*-bin.tar" />
+        <requires eq="msys-diffutils-*-msys-*-bin.tar" />
+        <requires eq="msys-findutils-*-msys-*-bin.tar" />
+        <requires eq="msys-file-*-msys-*-bin.tar" />
+        <requires eq="msys-gawk-*-msys-*-bin.tar" />
+        <requires eq="msys-grep-*-msys-*-bin.tar" />
+        <requires eq="msys-gzip-*-msys-*-bin.tar" />
+        <requires eq="msys-less-*-msys-*-bin.tar" />
+        <requires eq="msys-make-*-msys-*-bin.tar" />
+        <requires eq="msys-sed-*-msys-*-bin.tar" />
+        <requires eq="msys-tar-*-msys-*-bin.tar" />
+        <requires eq="msys-texinfo-*-msys-*-bin.tar" />
+        <requires eq="msys-xz-*-msys-*-bin.tar" />
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/msys-bash.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/msys-bash.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/msys-bash.xml	(revision 1046)
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://mingw.org" issue="2014101900">
+
+  <!-- File: msys-bash.xml -->
+
+  <package-collection subsystem="msys">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="msys-bash" alias="msys-sh sh bash">
+      <affiliate group="MSYS Base System" />
+      <description lang="en" title="The GNU Bourne Again shell" >
+        <paragraph>Bash is a GNU project sh-compatible shell or command
+          language interpreter.  Bash (Bourne Again shell) incorporates
+          useful features from the Korn shell (ksh) and the C shell (csh).
+          Bash is intended to conform to the IEEE POSIX P1003.2/ISO 9945.2
+          Shell and Tools standard.  It offers functional improvements over
+          sh for both programming and interactive use.  Most sh scripts can
+          be run by bash without modification.  Bash is the default shell
+          for MSYS.
+        </paragraph>
+      </description>
+
+      <source tarname="bash-%-msys-%-src.tar.%" />
+      <licence tarname="bash-%-msys-%-lic.tar.%" />
+
+      <component class="bin">
+        <release tarname="bash-3.1.17-4-msys-1.0.16-bin.tar.lzma" />
+        <release tarname="bash-3.1.23-1-msys-1.0.18-bin.tar.xz" />
+        <requires eq="msys-libtermcap-*-msys-*-dll-0.tar" />
+        <requires eq="msys-libregex-*-msys-*-dll-1.tar" />
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+        <requires eq="msys-coreutils-*-msys-*-bin.tar" />
+      </component>
+
+      <component class="doc">
+        <release tarname="bash-3.1.17-4-msys-1.0.16-doc.tar.lzma" />
+        <release tarname="bash-3.1.23-1-msys-1.0.18-doc.tar.xz" />
+      </component>
+
+      <component class="lic">
+        <release tarname="bash-3.1.17-4-msys-1.0.16-lic.tar.lzma" />
+        <release tarname="bash-3.1.23-1-msys-1.0.18-lic.tar.xz" />
+      </component>
+
+      <component class="lnk">
+        <release tarname="bash-3.1.23-1-msys-1.0.18-lnk.tar.xz">
+          <download tarname="none" />
+        </release>
+        <requires eq="msys-core-*-msys-*-ext.tar" />
+        <action class="post-install">
+          setup = require "setup"
+          sysroot_prefix = os.getenv( "MSYS_SYSROOT" )
+          if sysroot_prefix then
+             setup.create_shortcuts(
+               '--description="Start MinGW Shell"',
+               '--icon="'..sysroot_prefix..'\\msys.ico"',
+                sysroot_prefix..'\\msys.bat', '"MinGW Shell"'
+             )
+          end
+        </action>
+        <action class="pre-remove">
+          setup = require "setup"
+          sysroot_prefix = os.getenv( "MSYS_SYSROOT" )
+          if sysroot_prefix then
+             setup.delete_shortcuts(
+               "--if-linked="..sysroot_prefix.."\\msys.bat",
+               "--force", '"MinGW Shell"'
+             )
+          end
+        </action>
+      </component>
+
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/msys-binutils.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/msys-binutils.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/msys-binutils.xml	(revision 1046)
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://www.mingw.org" issue="2010090600">
+
+  <!-- File: msys-binutils.xml ~~ mingw-get package description for MSYS version of GNU binutils -->
+
+  <package-collection subsystem="msys">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="msys-binutils">
+      <affiliate group="MSYS System Builder" />
+      <description lang="en" title="The GNU Binary File Utilities (msys)">
+        <paragraph>This is not the binutils you are looking for.</paragraph>
+        <paragraph>
+          This package provides the GNU assembler, linker, archive librarian,
+          and other utilities for manipulating object format files, compiled
+          specifically for use generating MSYS libraries and applications.
+          It should be installed into the / == /usr (that is, C:\msys\1.0)
+          directory, and NOT into the usual MinGW location /mingw (C:\MinGW).
+          It is part of the MSYS System Builder (msys-dvlpr) toolset.
+        </paragraph>
+        <paragraph>
+          Install this component only if you intend to create MSYS-dependent
+          applications.
+        </paragraph>
+      </description>
+
+      <licence tarname="binutils-%-msys-%-lic.tar.lzma" />
+      <source tarname="binutils-%-msys-%-src.tar.lzma" />
+
+      <component class="bin" >
+        <release tarname="binutils-2.19.51-3-msys-1.0.13-bin.tar.lzma" />
+        <requires ge="msys-core-*-msys-*-bin.tar" />
+      </component>
+
+      <component class="doc" >
+        <release tarname="binutils-2.19.51-3-msys-1.0.13-doc.tar.lzma" />
+      </component>
+
+      <component class="lic" >
+        <release tarname="binutils-2.19.51-3-msys-1.0.13-lic.tar.lzma" />
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/msys-bison.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/msys-bison.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/msys-bison.xml	(revision 1046)
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://mingw.org" issue="2012073100">
+
+  <!-- File: msys-bison.xml -->
+
+  <package-collection subsystem="msys">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="msys-bison">
+      <affiliate group="MinGW Developer Toolkit" />
+      <description lang="en" title="GNU Parser Generator" >
+        <paragraph>bison is a general-purpose parser generator that
+          converts an annotated context-free grammar into an LALR(1)
+          or GLR parser for that grammer.  Bison is upward compatible
+          with Yacc -- all properly-written Yacc grammars ought to work
+          with Bison with no change.
+        </paragraph>
+        <paragraph>The msys-bison-bin (sub)package provides the bison
+          executable and associated development files.  The msys-bison-lang
+          (sub)package provides i18n support for the bison executable,
+          while the msys-bison-rtm (sub)package provides i18n support for
+          applications created with bison.
+        </paragraph>
+      </description>
+
+      <licence tarname="bison-%-msys-%-lic.tar.%" />
+      <source tarname="bison-%-msys-%-src.tar.%" />
+
+      <component class="bin">
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+        <requires eq="msys-m4-*-msys-*-bin.tar" />
+        <release tarname="bison-2.4.2-1-msys-1.0.13-bin.tar.lzma" >
+          <requires eq="msys-libintl-*-msys-*-dll-8.tar" />
+        </release>
+      </component>
+
+      <component class="rtm">
+        <release tarname="bison-2.4.2-1-msys-1.0.13-rtm.tar.lzma" />
+      </component>
+
+      <component class="lang">
+        <release tarname="bison-2.4.2-1-msys-1.0.13-lang.tar.lzma" />
+      </component>
+
+      <component class="doc">
+        <release tarname="bison-2.4.2-1-msys-1.0.13-doc.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="bison-2.4.2-1-msys-1.0.13-lic.tar.lzma" />
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/msys-bzip2.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/msys-bzip2.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/msys-bzip2.xml	(revision 1046)
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://mingw.org" issue="2013020400">
+
+  <!-- File: msys-bzip2.xml -->
+
+  <package-collection subsystem="msys">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="msys-bzip2">
+      <affiliate group="MSYS Base System" />
+      <description lang="en" title="a high-quality data compressor">
+        <paragraph>bzip2 is a freely available, patent free (see below),
+          high-quality data compressor. It typically compresses files
+          to within 10% to 15% of the best available techniques (the
+          PPM family of statistical compressors), whilst being around
+          twice as fast at compression and six times faster at
+          decompression. This package provides the utility programs and
+          scripts.
+        </paragraph>
+      </description>
+
+      <source tarname="bzip2-%-msys-%-src.tar.%" />
+      <licence tarname="bzip2-%-msys-%-lic.tar.%" />
+
+      <component class="bin">
+        <release tarname="bzip2-1.0.5-2-msys-1.0.13-bin.tar.lzma" />
+        <release tarname="bzip2-1.0.6-1-msys-1.0.17-bin.tar.lzma">
+	  <!-- Contrary to the assertion below,
+	    this release DOES appear to require the DLL component
+            -->
+	  <requires eq="msys-libbz2-%-msys-%-dll-1.tar" />
+	</release>
+
+        <!-- Every MSYS package requires msys-core-bin -->
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+
+        <!-- Note that the bzip2 utilities are linked against the static
+          version of libbz2.a, so there is no -dll dependency here.  Other
+          requirements support the auxiliary scripts, which are provided by
+          the bzip2-bin package.
+          -->
+        <requires eq="msys-bash-*-msys-*-bin.tar" />
+        <requires eq="msys-coreutils-*-msys-*-bin.tar" />
+        <requires eq="msys-diffutils-*-msys-*-bin.tar" />
+        <requires eq="msys-grep-*-msys-*-bin.tar" />
+        <requires eq="msys-less-*-msys-*-bin.tar" />
+      </component>
+
+      <component class="doc">
+        <release tarname="bzip2-1.0.5-2-msys-1.0.13-doc.tar.lzma" />
+        <release tarname="bzip2-1.0.6-1-msys-1.0.17-doc.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="bzip2-1.0.5-2-msys-1.0.13-lic.tar.lzma" />
+        <release tarname="bzip2-1.0.6-1-msys-1.0.17-lic.tar.lzma" />
+      </component>
+    </package>
+
+    <package name="msys-libbz2">
+      <description lang="en" title="runtime library for bzip2">
+        <paragraph>bzip2 is a freely available, patent free (see below),
+          high-quality data compressor. It typically compresses files
+          to within 10% to 15% of the best available techniques (the
+          PPM family of statistical compressors), whilst being around
+          twice as fast at compression and six times faster at
+          decompression. This package provides the runtime library and
+          development files.
+        </paragraph>
+      </description>
+
+      <source tarname="bzip2-%-msys-%-src.tar.%" />
+      <licence tarname="bzip2-%-msys-%-lic.tar.%" />
+
+      <component class="dll">
+        <release tarname="libbz2-1.0.5-2-msys-1.0.13-dll-1.tar.lzma" />
+        <release tarname="libbz2-1.0.6-1-msys-1.0.17-dll-1.tar.lzma" />
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+      </component>
+
+      <component class="dev">
+        <release tarname="libbz2-1.0.5-2-msys-1.0.13-dev.tar.lzma">
+          <requires eq="msys-libbz2-%-msys-%-dll-1.tar.lzma" />
+        </release>
+        <release tarname="libbz2-1.0.6-1-msys-1.0.17-dev.tar.lzma">
+          <requires eq="msys-libbz2-%-msys-%-dll-1.tar.lzma" />
+        </release>
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/msys-console.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/msys-console.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/msys-console.xml	(revision 1046)
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://mingw.org" issue="2012073100">
+
+  <!-- File: msys-console.xml -->
+
+  <package-collection subsystem="msys">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="msys-console">
+      <description lang="en" title="A script to d/l, install, and configure `Console 2.00'">
+        <paragraph>Console 2.00 is a replacement console for win32.  The
+          console is the window in which cmd.exe (and, usually, MSYS
+          bash.exe) are executed.  The normal Windows console has some
+          drawbacks which Console 2.00 attempts to remedy: better font
+          selection, larger scrollback buffers, tabbed windows, resizable,
+          easier cut-n-paste behavior, etc.
+        </paragraph>
+        <paragraph>Unfortunately, Console 2.00 can not be compiled using
+          free (as in speech) tools; although Console 2.00 itself is GPL, it
+          requires certain proprietary compilers to build.  Since all tools
+          distributed by the MinGW/MSYS project are compiled using free
+          tools also provided by that project,  MinGW/MSYS doesn't supply a
+          binary version of Console 2.00 directly.  Instead, this package
+          contains a script that can be executed to download the Console 2.00
+          binary package from the Console 2.00 developer's site, install it,
+          and configure it as appropriate for use with MinGW and MSYS.
+        </paragraph>
+      </description>
+
+      <licence tarname="console-%-msys-%-lic.tar.%" />
+      <source tarname="console-%-msys-%-src.tar.%" />
+
+      <component class="bin">
+        <requires eq="msys-bash-*-msys-*-bin.tar" />
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+        <requires eq="msys-coreutils-*-msys-*-bin.tar" />
+        <requires eq="msys-cygutils-*-msys-*-bin.tar" />
+        <requires eq="msys-mktemp-*-msys-*-bin.tar" />
+        <requires eq="msys-sed-*-msys-*-bin.tar" />
+        <requires eq="msys-unzip-*-msys-*-bin.tar" />
+        <requires eq="msys-wget-*-msys-*-bin.tar" />
+        <release tarname="console-2.00b147-1-msys-1.0.15-bin.tar.lzma" />
+        <release tarname="console-2.00b146-1-msys-1.0.14-bin.tar.lzma" />
+      </component>
+
+      <component class="doc">
+        <release tarname="console-2.00b147-1-msys-1.0.15-doc.tar.lzma" />
+        <release tarname="console-2.00b146-1-msys-1.0.14-doc.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="console-2.00b147-1-msys-1.0.15-lic.tar.lzma" />
+        <release tarname="console-2.00b146-1-msys-1.0.14-lic.tar.lzma" />
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/msys-core.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/msys-core.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/msys-core.xml	(revision 1046)
@@ -0,0 +1,118 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://mingw.org" issue="2016071500">
+
+  <!-- File: msys-core.xml -->
+
+  <package-collection subsystem="msys">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+    <package name="msys-core" alias="msysCORE">
+      <affiliate group="MSYS Base System" />
+      <description lang="en" title="The core components of MSYS">
+        <paragraph>MSYS, or the Minimal SYStem, is a POSIX implementation
+          used in the Win32 operating system to enable configuration and
+          compiling of open-source packages. This package provides the
+          main components of MSYS, including the MSYS runtime DLL itself.
+        </paragraph>
+        <paragraph>MSYS is a fork of Cygwin and is more friendly to the
+          Win32 user. It primarily offers a user land environment for MinGW
+          development. It converts POSIX paths before executing a "native"
+          win32 program. This allows the users of the MinGW version of GCC
+          to port and build packages in a GNU familiar way and removes the
+          UNIX complexities that Cygwin adds.
+        </paragraph>
+        <paragraph>The MinGW/MSYS team provides additional packages which
+          contain utilities useful for this purpose, including perl, make,
+          autoconf, automake, libtool, m4, and many others.  However, the
+          number of such `MSYS packages' is limited in comparison to *nix or
+          Cygwin, because MSYS provides only the Minimal SYStem needed for
+          hosting open source development with the MinGW GCC compiler.  MSYS
+          is not intended to replace Cygwin, or emulate a full-fledged "port"
+          of all *nix tools.
+        </paragraph>
+      </description>
+
+      <source tarname="msysCORE-%-msys-%-src.tar.%" />
+      <licence tarname="msysCORE-%-msys-%-lic.tar.%" />
+
+      <component class="bin">
+        <!-- Note: no specific dll component in this package; the
+         MSYS dll, which is required by all MSYS packages, is bundled
+         within this msys-core-bin component.  Always ensure that the
+         basic MSYS documentation and licence information is installed
+         along with msys-core-bin; only msys-core is treated this way.
+         -->
+        <requires eq="msys-core-%-msys-%-doc.tar" />
+        <requires eq="msys-core-%-msys-%-lic.tar" />
+        <release tarname="msysCORE-1.0.17-1-msys-1.0.17-bin.tar.lzma" />
+        <release tarname="msysCORE-1.0.18-1-msys-1.0.18-bin.tar.lzma" />
+        <release tarname="msysCORE-1.0.19-1-msys-1.0.19-bin.tar.xz" />
+
+        <action class="post-install">
+        sysroot = os.getenv( "MSYS_SYSROOT" )
+        package.path = sysroot.."/postinstall/?.lua;"..package.path
+
+        local has_fstab_module, fstab = pcall( require, "fstab" )
+
+        if has_fstab_module and fstab
+        then
+          have_fstab = io.open( fstab.pathname(), "r" )
+          if have_fstab
+          then
+            io.close( have_fstab )
+          else
+            fstab.initialize()
+          end
+          fstab.sample = io.open( fstab.pathname( ".sample" ), "w" )
+          if fstab.sample
+          then
+            fstab.dump_sample( fstab.sample )
+            io.close( fstab.sample )
+          end
+        end
+        </action>
+      </component>
+
+      <component class="ext">
+        <!-- msys-core-ext contains tools that have dependencies on
+         components other than msys-core-bin alone.
+         -->
+        <release tarname="msysCORE-1.0.17-1-msys-1.0.17-ext.tar.lzma" />
+        <release tarname="msysCORE-1.0.18-1-msys-1.0.18-ext.tar.lzma" />
+        <release tarname="msysCORE-1.0.19-1-msys-1.0.19-ext.tar.xz" />
+        <requires eq="msys-bash-*-msys-*-bin.tar" />
+        <requires eq="msys-core-%-msys-%-bin.tar" />
+        <requires eq="msys-coreutils-*-msys-*-bin.tar" />
+        <requires eq="msys-gawk-*-msys-*-bin.tar" />
+        <requires eq="msys-grep-*-msys-*-bin.tar" />
+        <requires eq="msys-sed-*-msys-*-bin.tar" />
+      </component>
+
+      <component class="dev">
+        <release tarname="msysCORE-1.0.17-1-msys-1.0.17-dev.tar.lzma" />
+        <release tarname="msysCORE-1.0.18-1-msys-1.0.18-dev.tar.lzma" />
+        <release tarname="msysCORE-1.0.19-1-msys-1.0.19-dev.tar.xz" />
+      </component>
+
+      <component class="doc">
+        <release tarname="msysCORE-1.0.17-1-msys-1.0.17-doc.tar.lzma" />
+        <release tarname="msysCORE-1.0.18-1-msys-1.0.18-doc.tar.lzma" />
+        <release tarname="msysCORE-1.0.19-1-msys-1.0.19-doc.tar.xz" />
+      </component>
+
+      <component class="lic">
+        <release tarname="msysCORE-1.0.17-1-msys-1.0.17-lic.tar.lzma" />
+        <release tarname="msysCORE-1.0.18-1-msys-1.0.18-lic.tar.lzma" />
+        <release tarname="msysCORE-1.0.19-1-msys-1.0.19-lic.tar.xz" />
+      </component>
+
+      <component class="dbg">
+        <release tarname="msysCORE-1.0.17-1-msys-1.0.17-dbg.tar.lzma" />
+        <release tarname="msysCORE-1.0.18-1-msys-1.0.18-dbg.tar.lzma" />
+        <release tarname="msysCORE-1.0.19-1-msys-1.0.19-dbg.tar.xz" />
+        <requires eq="msys-core-%-msys-%-bin.tar" />
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/msys-coreutils.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/msys-coreutils.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/msys-coreutils.xml	(revision 1046)
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://mingw.org" issue="2012073100">
+
+  <!-- File: msys-coreutils.xml -->
+
+  <package-collection subsystem="msys">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="msys-coreutils">
+      <affiliate group="MSYS Base System" />
+      <description lang="en" title="GNU collection of common command line utilities" >
+        <paragraph>GNU coreutils provides a collection of commonly used
+          utilities essential to a standard POSIX environment. It comprises
+          the former textutils, sh-utils, and fileutils packages.
+        </paragraph>
+        <paragraph>The msys-coreutils-bin subpackage contains those
+          applications that were historically part of the standard MSYS
+          installation. The associated msys-coreutils-ext subpackage
+          contains the rest of the coreutils applications that have been
+          (nominally) ported to MSYS -- usually these are less often used,
+          and are not guaranteed to work: e.g. `su.exe', `chroot.exe' and
+          `mkfifo.exe' are known to be broken.
+        </paragraph>
+      </description>
+
+      <source tarname="coreutils-%-msys-%-src.tar.%" />
+      <licence tarname="coreutils-%-msys-%-lic.tar.%" />
+
+      <component class="bin">
+        <release tarname="coreutils-5.97-3-msys-1.0.13-bin.tar.lzma">
+          <requires eq="msys-libintl-*-msys-*-dll-8.tar" />
+          <requires eq="msys-libiconv-*-msys-*-dll-2.tar" />
+          <requires eq="msys-libtermcap-*-msys-*-dll-0.tar" />
+        </release>
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+      </component>
+
+      <component class="ext">
+        <requires eq="msys-coreutils-%-msys-%-bin.tar" />
+        <release tarname="coreutils-5.97-3-msys-1.0.13-ext.tar.lzma" />
+      </component>
+
+      <component class="lang">
+        <release tarname="coreutils-5.97-3-msys-1.0.13-lang.tar.lzma" />
+      </component>
+
+      <component class="doc">
+        <release tarname="coreutils-5.97-3-msys-1.0.13-doc.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="coreutils-5.97-3-msys-1.0.13-lic.tar.lzma" />
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/msys-crypt.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/msys-crypt.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/msys-crypt.xml	(revision 1046)
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://mingw.org" issue="2012073100">
+
+  <!-- File: msys-crypt.xml -->
+
+  <package-collection subsystem="msys">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="msys-crypt">
+      <description lang="en" title="tools for DES encryption">
+        <paragraph>crypt provides a library implementing the standard
+          encryption functions crypt(), encrypt(), and setkey().  Many
+          programs, such as perl, rely on the presence of these functions;
+          as the functions are not provided by the MSYS runtime, this
+          additional library fulfils those needs.
+        </paragraph>
+        <paragraph>crypt also provides a command-line tool for exercising
+          those functions.  `crypt cleartext' generates an encrypted version
+          of the cleartext using a random salt.  `crypt salt cleartext'
+          encrypts cleartext using the specified salt.  Salt is a two-character
+          string which also appears as the first two characters of the
+          encrypted cleartext.
+        </paragraph>
+        <paragraph>The msys-crypt package provides the command-line utility
+          crypt and related documentation.  The associated msys-libcrypt
+          package provides the runtime library and related development files.
+        </paragraph>
+      </description>
+
+      <licence tarname="crypt-%-msys-%-lic.tar.%" />
+      <source tarname="crypt-%-msys-%-src.tar.%" />
+
+      <component class="bin">
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+        <!-- Note that the crypt utility is linked against the static
+             version of libcrypt.a, so there is no -dll dependency here. -->
+        <release tarname="crypt-1.1_1-3-msys-1.0.13-bin.tar.lzma" />
+      </component>
+
+      <component class="doc">
+        <release tarname="crypt-1.1_1-3-msys-1.0.13-doc.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="crypt-1.1_1-3-msys-1.0.13-lic.tar.lzma" />
+      </component>
+    </package>
+
+    <package name="msys-libcrypt">
+      <description lang="en" title="runtime library for crypt">
+        <paragraph>crypt provides a library implementing the standard
+          encryption functions crypt(), encrypt(), and setkey().  Many
+          programs, such as perl, rely on the presence of these functions;
+          as the functions are not provided by the MSYS runtime, this
+          additional library fulfils those needs.
+        </paragraph>
+        <paragraph>crypt also provides a command-line tool for exercising
+          those functions.  `crypt cleartext' generates an encrypted version
+          of the cleartext using a random salt.  `crypt salt cleartext'
+          encrypts cleartext using the specified salt.  Salt is a two-character
+          string which also appears as the first two characters of the
+          encrypted cleartext.
+        </paragraph>
+        <paragraph>The msys-libcrypt package provides the libcrypt runtime
+          library and related development files.  The associated msys-crypt
+          package provides the command-line utility crypt and related
+          documentation.
+        </paragraph>
+      </description>
+
+      <licence tarname="crypt-%-msys-%-lic.tar.%" />
+      <source tarname="crypt-%-msys-%-src.tar.%" />
+
+      <component class="dll">
+        <!-- Every MSYS DLL package requires msys-core-bin -->
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+        <release tarname="libcrypt-1.1_1-3-msys-1.0.13-dll-0.tar.lzma" />
+      </component>
+
+      <component class="dev">
+        <release tarname="libcrypt-1.1_1-3-msys-1.0.13-dev.tar.lzma" >
+          <requires eq="msys-libcrypt-%-msys-%-dll-0.tar" />
+        </release>
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/msys-cvs.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/msys-cvs.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/msys-cvs.xml	(revision 1046)
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://mingw.org" issue="2012073100">
+
+  <!-- File: msys-cvs.xml -->
+
+  <package-collection subsystem="msys">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="msys-cvs">
+      <affiliate group="MinGW Developer Toolkit" />
+      <description lang="en" title="Concurrent Version System" >
+        <paragraph>CVS is a version control system, which allows you to keep
+          old versions of files (usually source code), and maintains a log of
+          who, when, and why changes occurred, etc., like RCS or SCCS.
+        </paragraph>
+      </description>
+
+      <licence tarname="cvs-%-msys-%-lic.tar.%" />
+      <source tarname="cvs-%-msys-%-src.tar.%" />
+
+      <component class="bin">
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+        <release tarname="cvs-1.12.13-2-msys-1.0.13-bin.tar.lzma" >
+          <requires eq="msys-libintl-*-msys-*-dll-8.tar" />
+          <requires eq="msys-libcrypt-*-msys-*-dll-0.tar" />
+        </release>
+        <!-- Needed by rcs2log and cvsbug, even though MSYS does not actually
+             provide rcs.exe nor sendmail: bash, mktemp, gawk, sed, coreutils.
+             Other optional elements: perl, openssh, and inetutils. -->
+      </component>
+
+      <component class="lang">
+        <release tarname="cvs-1.12.13-2-msys-1.0.13-lang.tar.lzma" />
+      </component>
+
+      <component class="doc">
+        <release tarname="cvs-1.12.13-2-msys-1.0.13-doc.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="cvs-1.12.13-2-msys-1.0.13-lic.tar.lzma" />
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/msys-cygutils.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/msys-cygutils.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/msys-cygutils.xml	(revision 1046)
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://mingw.org" issue="2012073100">
+
+  <!-- File: msys-cygutils.xml -->
+
+  <package-collection subsystem="msys">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+    <package name="msys-cygutils">
+      <description lang="en" title="A collection of simple utilities" >
+        <paragraph>The cygutils package contains a collection of simple
+          utilities from various sources. It provides mkshortcut and
+          readshortcut, for creating and reading windows-style shortcuts.
+          It provides getclip and putclip, for copying between stdin/stdout
+          and the Windows clipboard. It also provides lpr-basic.
+        </paragraph>
+        <paragraph>A note about lpr-basic: lpr-basic spools a file to the
+          specified printer device. MSYS provides two separate
+          implementations: lpr-basic.exe and lpr-enhanced (the latter is a
+          script, not a binary executable, and is available in the
+          msys-lpr-enhanced package). lpr-basic.exe is suitable for most
+          simple printing needs; it can send "raw" data to any installed
+          Windows printer. This is most useful for raw text, for sending
+          plain PostScript files to PostScript-compatible printers, and for
+          re-sending .prn files generated using Windows' own print-to-file
+          capabilities to the specific printer for which the .prn file was
+          generated. For more information, see `man lpr-basic'. On the other
+          hand, lpr-enhanced is an MSYS extension which supports many of the
+          advanced capabilities of a true Unix-style lpr implementation.
+          However, it is more difficult to configure. See the documentation
+          embedded within the lpr-enhanced script for more information.
+        </paragraph>
+        <paragraph>The msys-cygutils package provides many of the utilities
+          included in the cygutils distribution. Note that the 'dos2unix'
+          utilities are NOT provided by this package; the separate msys-dos2unix
+          package provides versions of those utilities derived from alternate
+          sources.
+        </paragraph>
+      </description>
+
+      <source tarname="cygutils-%-msys-%-src.tar.%" />
+      <licence tarname="cygutils-%-msys-%-lic.tar.%" />
+
+      <component class="bin">
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+        <release tarname="cygutils-1.3.4-4-msys-1.0.13-bin.tar.lzma">
+          <requires eq="msys-libpopt-*-msys-*-dll-0.tar" />
+        </release>
+      </component>
+
+      <component class="doc">
+        <release tarname="cygutils-1.3.4-4-msys-1.0.13-doc.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="cygutils-1.3.4-4-msys-1.0.13-lic.tar.lzma" />
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/msys-dash.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/msys-dash.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/msys-dash.xml	(revision 1046)
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://mingw.org" issue="2012073100">
+
+  <!-- File: msys-dash.xml -->
+
+  <package-collection subsystem="msys">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="msys-dash">
+      <description lang="en" title="The Debian Almquist Shell">
+        <paragraph>DASH is a POSIX-compliant implementation of /bin/sh
+          that aims to be as small as possible.  It does this without
+          sacrificing speed where possible.  In fact, it is significantly
+          faster than bash (the GNU Bourne-Again SHell) for most tasks.
+        </paragraph>
+        <paragraph>This version of dash has been modified to support
+          $LINENO, so it should suffice to run most configure scripts.
+          More importantly, unlike msys-bash, msys-dash has no
+          dependencies other than the MSYS runtime itself.  Therefore,
+          dash can be used (it is, in fact, required) to run the
+          rebaseall tool from the msys-rebase package.
+        </paragraph>
+      </description>
+
+      <licence tarname="dash-%-msys-%-lic.tar.%" />
+      <source tarname="dash-%-msys-%-src.tar.%" />
+
+      <component class="bin">
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+        <release tarname="dash-0.5.5.1_2-1-msys-1.0.13-bin.tar.lzma" />
+      </component>
+
+      <component class="doc">
+        <release tarname="dash-0.5.5.1_2-1-msys-1.0.13-doc.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="dash-0.5.5.1_2-1-msys-1.0.13-lic.tar.lzma" />
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/msys-diffstat.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/msys-diffstat.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/msys-diffstat.xml	(revision 1046)
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://mingw.org" issue="2012073100">
+
+  <!-- File: msys-diffstat.xml -->
+
+  <package-collection subsystem="msys">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="msys-diffstat">
+      <affiliate group="MinGW Developer Toolkit" />
+      <description lang="en" title="patch file histograms" >
+        <paragraph>diffstat reads the output of diff and displays a
+          histogram of the insertions, deletions, and modifications
+          per-file. It is useful for reviewing large, complex patch files.
+        </paragraph>
+      </description>
+
+      <source tarname="diffstat-%-msys-%-src.tar.%" />
+      <licence tarname="diffstat-%-msys-%-lic.tar.%" />
+
+      <component class="bin">
+        <release tarname="diffstat-1.54-1-msys-1.0.17-bin.tar.lzma" />
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+      </component>
+
+      <component class="doc">
+        <release tarname="diffstat-1.54-1-msys-1.0.17-doc.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="diffstat-1.54-1-msys-1.0.17-lic.tar.lzma" />
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/msys-diffutils.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/msys-diffutils.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/msys-diffutils.xml	(revision 1046)
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://mingw.org" issue="2012073100">
+
+  <!-- File: msys-diffutils.xml -->
+
+  <package-collection subsystem="msys">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="msys-diffutils">
+      <affiliate group="MSYS Base System" />
+      <description lang="en" title="GNU collection of diff utilities" >
+        <paragraph>Diffutils provides a group of utilities that displays
+          difference between and among text files. 'diff' outputs the
+          difference between two files in any of several formats. If the
+          files are identical, it normally produces no ouput; if they are
+          binary (non-text) it normally reports only that they are
+          different. 'cmp' shows the offsets and files numbers where two
+          files differ; it can also show, side by side, all the characters
+          that differ between the two files. 'sdiff' merges two files
+          interactively. 'diff3' shows differences among three files. If
+          two people have made independent changes to a common original,
+          diff3 reports that difference between the original and the two
+          changed versions, and can produce a merged file that contains
+          both persons' changes along with warnings about conflicts.
+        </paragraph>
+      </description>
+
+      <source tarname="diffutils-%-msys-%-src.tar.%" />
+      <licence tarname="diffutils-%-msys-%-lic.tar.%" />
+
+      <component class="bin">
+        <release tarname="diffutils-2.8.7.20071206cvs-3-msys-1.0.13-bin.tar.lzma" >
+          <requires eq="msys-libintl-*-msys-*-dll-8.tar" />
+        </release>
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+      </component>
+
+      <component class="lang">
+        <release tarname="diffutils-2.8.7.20071206cvs-3-msys-1.0.13-lang.tar.lzma" />
+      </component>
+
+      <component class="doc">
+        <release tarname="diffutils-2.8.7.20071206cvs-3-msys-1.0.13-doc.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="diffutils-2.8.7.20071206cvs-3-msys-1.0.13-lic.tar.lzma" />
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/msys-dos2unix.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/msys-dos2unix.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/msys-dos2unix.xml	(revision 1046)
@@ -0,0 +1,135 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://mingw.org" issue="2015122200">
+
+  <!-- File: msys-dos2unix.xml -->
+
+  <package-collection subsystem="msys">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="msys-dos2unix" alias="msys-cygutils-dos2unix">
+      <affiliate group="MSYS Base System" />
+      <description lang="en" title="Convert line breaks between Unix, Dos, and Mac">
+        <paragraph> The dos2unix package provides manipulation utilities for
+          converting the line break characters of text files between the unix
+          convention (0x0a), the DOS/Windows convention (0x0d 0x0a), and the old
+          (pre-OS-X) Mac convention (0x0d).
+        </paragraph>
+      </description>
+
+      <licence tarname="dos2unix-%-msys-%-lic.tar.%" />
+      <source tarname="dos2unix-%-msys-%-src.tar.%" />
+
+      <component class="bin">
+        <release tarname="dos2unix-7.3.2-1-msys-1.0.18-bin.tar.lzma" >
+          <requires eq="msys-core-*-msys-*-bin.tar" />
+          <requires eq="msys-libiconv-*-msys-*-dll-2.tar" />
+          <requires eq="msys-libintl-*-msys-*-dll-8.tar" />
+        </release>
+        <release tarname="dos2unix-7.2.3-1-msys-1.0.18-bin.tar.lzma" >
+          <requires eq="msys-core-*-msys-*-bin.tar" />
+          <requires eq="msys-libiconv-*-msys-*-dll-2.tar" />
+          <requires eq="msys-libintl-*-msys-*-dll-8.tar" />
+        </release>
+        <release tarname="dos2unix-7.2.2-1-msys-1.0.18-bin.tar.lzma" >
+          <requires eq="msys-core-*-msys-*-bin.tar" />
+          <requires eq="msys-libiconv-*-msys-*-dll-2.tar" />
+          <requires eq="msys-libintl-*-msys-*-dll-8.tar" />
+        </release>
+        <release tarname="dos2unix-7.1-1-msys-1.0.17-bin.tar.lzma" >
+          <requires eq="msys-core-*-msys-*-bin.tar" />
+          <requires eq="msys-libiconv-*-msys-*-dll-2.tar" />
+          <requires eq="msys-libintl-*-msys-*-dll-8.tar" />
+        </release>
+        <release tarname="dos2unix-6.0.6-1-msys-1.0.17-bin.tar.lzma" >
+          <requires eq="msys-core-*-msys-*-bin.tar" />
+          <requires eq="msys-libiconv-*-msys-*-dll-2.tar" />
+          <requires eq="msys-libintl-*-msys-*-dll-8.tar" />
+        </release>
+        <release tarname="dos2unix-6.0.5-1-msys-1.0.17-bin.tar.lzma" >
+          <requires eq="msys-core-*-msys-*-bin.tar" />
+          <requires eq="msys-libiconv-*-msys-*-dll-2.tar" />
+          <requires eq="msys-libintl-*-msys-*-dll-8.tar" />
+        </release>
+        <release tarname="dos2unix-6.0.4-1-msys-1.0.17-bin.tar.lzma" >
+          <requires eq="msys-core-*-msys-*-bin.tar" />
+          <requires eq="msys-libiconv-*-msys-*-dll-2.tar" />
+          <requires eq="msys-libintl-*-msys-*-dll-8.tar" />
+        </release>
+        <release tarname="dos2unix-6.0.3-1-msys-1.0.17-bin.tar.lzma" >
+          <requires eq="msys-core-*-msys-*-bin.tar" />
+          <requires eq="msys-libiconv-*-msys-*-dll-2.tar" />
+          <requires eq="msys-libintl-*-msys-*-dll-8.tar" />
+        </release>
+        <release tarname="dos2unix-6.0.2-1-msys-1.0.17-bin.tar.lzma" >
+          <requires eq="msys-core-*-msys-*-bin.tar" />
+          <requires eq="msys-libiconv-*-msys-*-dll-2.tar" />
+          <requires eq="msys-libintl-*-msys-*-dll-8.tar" />
+        </release>
+        <release tarname="dos2unix-6.0.1-1-msys-1.0.17-bin.tar.lzma" >
+          <requires eq="msys-core-*-msys-*-bin.tar" />
+          <requires eq="msys-libiconv-*-msys-*-dll-2.tar" />
+          <requires eq="msys-libintl-*-msys-*-dll-8.tar" />
+        </release>
+        <release tarname="dos2unix-6.0-1-msys-1.0.17-bin.tar.lzma" >
+          <requires eq="msys-core-*-msys-*-bin.tar" />
+          <requires eq="msys-libiconv-*-msys-*-dll-2.tar" />
+          <requires eq="msys-libintl-*-msys-*-dll-8.tar" />
+        </release>
+        <release tarname="dos2unix-5.3.3-1-msys-1.0.17-bin.tar.lzma" >
+          <requires eq="msys-core-*-msys-*-bin.tar" />
+          <requires eq="msys-libiconv-*-msys-*-dll-2.tar" />
+          <requires eq="msys-libintl-*-msys-*-dll-8.tar" />
+        </release>
+        <release tarname="cygutils-dos2unix-1.3.4-4-msys-1.0.13-bin.tar.lzma">
+          <licence tarname="cygutils-dos2unix-%-msys-%-lic.tar.%" />
+          <source tarname="cygutils-%-msys-%-src.tar.%" />
+          <requires eq="msys-libpopt-*-msys-*-dll-0.tar" />
+        </release>
+      </component>
+
+      <component class="doc">
+        <release tarname="dos2unix-7.3.2-1-msys-1.0.18-doc.tar.lzma" />
+        <release tarname="dos2unix-7.2.3-1-msys-1.0.18-doc.tar.lzma" />
+        <release tarname="dos2unix-7.2.2-1-msys-1.0.18-doc.tar.lzma" />
+        <release tarname="dos2unix-7.1-1-msys-1.0.17-doc.tar.lzma" />
+        <release tarname="dos2unix-6.0.6-1-msys-1.0.17-doc.tar.lzma" />
+        <release tarname="dos2unix-6.0.5-1-msys-1.0.17-doc.tar.lzma" />
+        <release tarname="dos2unix-6.0.4-1-msys-1.0.17-doc.tar.lzma" />
+        <release tarname="dos2unix-6.0.3-1-msys-1.0.17-doc.tar.lzma" />
+        <release tarname="dos2unix-6.0.2-1-msys-1.0.17-doc.tar.lzma" />
+        <release tarname="dos2unix-6.0.1-1-msys-1.0.17-doc.tar.lzma" />
+        <release tarname="dos2unix-6.0-1-msys-1.0.17-doc.tar.lzma" />
+        <release tarname="dos2unix-5.3.3-1-msys-1.0.17-doc.tar.lzma" />
+        <release tarname="cygutils-dos2unix-1.3.4-4-msys-1.0.13-doc.tar.lzma">
+          <download tarname="none" />
+          <requires eq="msys-cygutils-%-msys-%-doc.tar" />
+          <licence tarname="cygutils-dos2unix-%-msys-%-lic.tar.%" />
+          <source tarname="cygutils-%-msys-%-src.tar.%" />
+        </release>
+      </component>
+
+      <component class="lic">
+        <release tarname="dos2unix-7.3.2-1-msys-1.0.18-lic.tar.lzma" />
+        <release tarname="dos2unix-7.2.3-1-msys-1.0.18-lic.tar.lzma" />
+        <release tarname="dos2unix-7.2.2-1-msys-1.0.18-lic.tar.lzma" />
+        <release tarname="dos2unix-7.1-1-msys-1.0.17-lic.tar.lzma" />
+        <release tarname="dos2unix-6.0.6-1-msys-1.0.17-lic.tar.lzma" />
+        <release tarname="dos2unix-6.0.5-1-msys-1.0.17-lic.tar.lzma" />
+        <release tarname="dos2unix-6.0.4-1-msys-1.0.17-lic.tar.lzma" />
+        <release tarname="dos2unix-6.0.3-1-msys-1.0.17-lic.tar.lzma" />
+        <release tarname="dos2unix-6.0.2-1-msys-1.0.17-lic.tar.lzma" />
+        <release tarname="dos2unix-6.0.1-1-msys-1.0.17-lic.tar.lzma" />
+        <release tarname="dos2unix-6.0-1-msys-1.0.17-lic.tar.lzma" />
+        <release tarname="dos2unix-5.3.3-1-msys-1.0.17-lic.tar.lzma" />
+        <release tarname="cygutils-dos2unix-1.3.4-4-msys-1.0.13-lic.tar.lzma">
+          <download tarname="none" />
+          <requires eq="msys-cygutils-%-msys-%-lic.tar" />
+          <licence tarname="cygutils-dos2unix-%-msys-%-lic.tar.%" />
+          <source tarname="cygutils-%-msys-%-src.tar.%" />
+        </release>
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/msys-expat.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/msys-expat.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/msys-expat.xml	(revision 1046)
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://mingw.org" issue="2012073100">
+
+  <!-- File: msys-expat.xml -->
+
+  <package-collection subsystem="msys">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="msys-expat">
+      <description lang="en" title="XML parsing library written in C">
+        <paragraph>expat is a C library for parsing XML written by James
+          Clark. Expat is a stream-oriented XML parser.  This means that
+          you register handlers with the parser before starting the parse.
+          These handlers are called when the parser discovers the
+          associated structures in the document being parsed.  A start tag
+          is an example of the kind of structures for which you may
+          register handlers.
+        </paragraph>
+        <paragraph>The msys-expat package provides the xmlwf validation
+          tool and documentation related to the library. The associated
+          msys-libexpat package provides the runtime library and related
+          development files.
+        </paragraph>
+      </description>
+
+      <source tarname="expat-%-msys-%-src.tar.%" />
+      <licence tarname="expat-%-msys-%-lic.tar.%" />
+
+      <component class="bin">
+        <!-- Every MSYS package requires msys-core-bin.  This dependency
+          is not explicitly stated here; rather, it is implicitly satisfied
+          as a prerequisite of the matching DLL for this package itself,
+          which is specified for each of the following releases.
+          -->
+        <release tarname="expat-2.0.1-1-msys-1.0.13-bin.tar.lzma">
+          <requires eq="msys-libexpat-*-msys-*-dll-1.tar" />
+        </release>
+      </component>
+
+      <component class="doc">
+        <release tarname="expat-2.0.1-1-msys-1.0.13-doc.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="expat-2.0.1-1-msys-1.0.13-lic.tar.lzma" />
+      </component>
+    </package>
+
+    <package name="msys-libexpat">
+      <description lang="en" title="XML parsing library written in C">
+        <paragraph>expat is a C library for parsing XML written by James
+          Clark. Expat is a stream-oriented XML parser.  This means that
+          you register handlers with the parser before starting the parse.
+          These handlers are called when the parser discovers the
+          associated structures in the document being parsed.  A start tag
+          is an example of the kind of structures for which you may
+          register handlers.
+        </paragraph>
+        <paragraph>The msys-libexpat package provides the runtime library
+          and related development files for expat.  The associated
+          msys-expat package provides the xmlwf validation tool and
+          documentation related to the library.
+        </paragraph>
+      </description>
+
+      <source tarname="expat-%-msys-%-src.tar.%" />
+      <licence tarname="expat-%-msys-%-lic.tar.%" />
+
+      <component class="dll">
+        <!-- Specification of the mandatory msys-core-bin requirement here
+          also serves to implicitly satisfy this mandatory requirement for
+          the dependent msys-expat-bin package declared above.
+          -->
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+        <release tarname="libexpat-2.0.1-1-msys-1.0.13-dll-1.tar.lzma" />
+      </component>
+
+      <component class="dev">
+        <release tarname="libexpat-2.0.1-1-msys-1.0.13-dev.tar.lzma">
+          <requires eq="msys-libexpat-*-msys-*-dll-1.tar" />
+        </release>
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/msys-file.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/msys-file.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/msys-file.xml	(revision 1046)
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://mingw.org" issue="2012073100">
+
+  <!-- File: msys-file.xml -->
+
+  <package-collection subsystem="msys">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="msys-file">
+      <affiliate group="MSYS Base System" />
+      <description lang="en" title="determine file type" >
+        <paragraph>The file command is used to identify a particular file
+          according to the type of data contained by the file.  File can
+          identify many different file types, including ELF binaries,
+          system libraries, RPM packages, and different graphics formats.
+        </paragraph>
+        <paragraph>The msys-file package provides the file command and the
+          pre-compiled magic database, which describes how different file
+          types should be identified. The associated msys-libmagic package
+          provides the libmagic runtime library and development files.
+        </paragraph>
+      </description>
+
+      <source tarname="file-%-msys-%-src.tar.%" />
+      <licence tarname="file-%-msys-%-lic.tar.%" />
+
+      <component class="bin">
+        <!-- Although every MSYS package requires msys-core-bin,
+          we do not specify that here; instead, we rely on implicit
+          inclusion via the locally specified libmagic dependency.
+          -->
+        <release tarname="file-5.04-1-msys-1.0.13-bin.tar.lzma">
+          <requires eq="msys-libmagic-%-msys-%-dll-1.tar" />
+        </release>
+      </component>
+
+      <component class="doc">
+        <release tarname="file-5.04-1-msys-1.0.13-doc.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="file-5.04-1-msys-1.0.13-lic.tar.lzma" />
+      </component>
+    </package>
+
+    <package name="msys-libmagic">
+      <description lang="en" title="library for determining file type" >
+        <paragraph>The file command is used to identify a particular file
+          according to the type of data contained by the file.  File can
+          identify many different file types, including ELF binaries,
+          system libraries, RPM packages, and different graphics formats.
+        </paragraph>
+        <paragraph>The msys-libmagic package provides the libmagic runtime
+          library and development files. The associated msys-file package
+          provides the file command and the pre-compiled magic database,
+          which describes how different file types should be identified.
+        </paragraph>
+      </description>
+
+      <source tarname="file-%-msys-%-src.tar.%" />
+      <licence tarname="file-%-msys-%-lic.tar.%" />
+
+      <component class="dll">
+        <!-- Requirements common to all releases:
+          Every MSYS package requires msys-core-bin; this one also
+          requires zlib dll, which lacks an ABI version qualifier.
+          -->
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+        <requires eq="msys-zlib-*-msys-*-dll.tar" />
+
+        <release tarname="libmagic-5.04-1-msys-1.0.13-dll-1.tar.lzma">
+          <requires eq="msys-libregex-*-msys-*-dll-1.tar" />
+        </release>
+      </component>
+
+      <component class="dev">
+        <release tarname="libmagic-5.04-1-msys-1.0.13-dev.tar.lzma">
+          <requires eq="msys-libmagic-%-msys-%-dll-1.tar" />
+        </release>
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/msys-findutils.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/msys-findutils.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/msys-findutils.xml	(revision 1046)
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://mingw.org" issue="2012073100">
+
+  <!-- File: msys-findutils.xml -->
+
+  <package-collection subsystem="msys">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="msys-findutils">
+      <affiliate group="MSYS Base System" />
+      <description lang="en" title="GNU find utilities" >
+        <paragraph>The GNU Find Utilities are the basic directory searching
+          utilities of the GNU operating system. These programs are
+          typically used in conjunction with other programs to provide
+          modular and powerful directory search and file locating
+          capabilities to other commands.
+        </paragraph>
+        <paragraph>The msys-findutils package provides 'find' -- search
+          for files in a directory hierarchy, and 'xargs' -- build and
+          execute command lines from standard input. The associated
+          msys-locate package provides 'locate' -- list files in databases
+          that match a pattern, and 'updatedb' -- update a file name
+          database.
+        </paragraph>
+      </description>
+
+      <source tarname="findutils-%-msys-%-src.tar.%" />
+      <licence tarname="findutils-%-msys-%-lic.tar.%" />
+
+      <component class="bin">
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+        <release tarname="findutils-4.4.2-2-msys-1.0.13-bin.tar.lzma" >
+          <requires eq="msys-libintl-*-msys-*-dll-8.tar" />
+        </release>
+      </component>
+
+      <component class="lang">
+        <release tarname="findutils-4.4.2-2-msys-1.0.13-lang.tar.lzma" />
+      </component>
+
+      <component class="doc">
+        <release tarname="findutils-4.4.2-2-msys-1.0.13-doc.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="findutils-4.4.2-2-msys-1.0.13-lic.tar.lzma" />
+      </component>
+    </package>
+
+    <package name="msys-locate">
+      <affiliate group="MSYS Base System" />
+      <description lang="en" title="A database-driven fast 'find'" >
+        <paragraph>The GNU Find Utilities are the basic directory searching
+          utilities of the GNU operating system. These programs are
+          typically used in conjunction with other programs to provide
+          modular and powerful directory search and file locating
+          capabilities to other commands.
+        </paragraph>
+        <paragraph>The msys-locate package provides 'locate' -- list files
+          in databases that match a pattern, and 'updatedb' -- update a
+          file name database. The associated msys-findutils package
+          provides 'find' -- search for files in a directory hierarchy, and
+          'xargs' -- build and execute command lines from standard input.
+        </paragraph>
+        <paragraph>The msys-locate package is an optional adjunct to the
+          standard MSYS Base System installation; it is NOT automatically
+          installed as a component of msys-base, and must be selected
+          independently, if desired.
+        </paragraph>
+      </description>
+
+      <source tarname="findutils-%-msys-%-src.tar.%" />
+      <licence tarname="findutils-%-msys-%-lic.tar.%" />
+
+      <component class="bin">
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+        <release tarname="locate-4.4.2-2-msys-1.0.13-bin.tar.lzma" >
+          <requires eq="msys-libintl-*-msys-*-dll-8.tar" />
+        </release>
+        <requires eq="msys-bash-*-msys-*-bin.tar" />
+        <requires eq="msys-coreutils-*-msys-*-bin.tar" />
+        <requires eq="msys-findutils-%-msys-%-bin.tar" />
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/msys-flex.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/msys-flex.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/msys-flex.xml	(revision 1046)
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://mingw.org" issue="2012073100">
+
+  <!-- File: msys-flex.xml -->
+
+  <package-collection subsystem="msys">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="msys-flex">
+      <affiliate group="MinGW Developer Toolkit" />
+      <description lang="en" title="Fast Lexical Analyzer Generator" >
+        <paragraph>flex is a tool for generating scanners. A scanner,
+          sometimes called a tokenizer, is a program which recognizes
+          lexical patterns in text.
+        </paragraph>
+      </description>
+
+      <source tarname="flex-%-msys-%-src.tar.%" />
+      <licence tarname="flex-%-msys-%-lic.tar.%" />
+
+      <component class="bin">
+        <release tarname="flex-2.5.35-2-msys-1.0.13-bin.tar.lzma" >
+          <requires eq="msys-libintl-*-msys-*-dll-8.tar" />
+          <requires eq="msys-libregex-*-msys-*-dll-1.tar" />
+        </release>
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+        <requires eq="msys-m4-*-msys-*-bin.tar" />
+      </component>
+
+      <component class="lang">
+        <release tarname="flex-2.5.35-2-msys-1.0.13-lang.tar.lzma" />
+      </component>
+
+      <component class="doc">
+        <release tarname="flex-2.5.35-2-msys-1.0.13-doc.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="flex-2.5.35-2-msys-1.0.13-lic.tar.lzma" />
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/msys-gawk.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/msys-gawk.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/msys-gawk.xml	(revision 1046)
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://mingw.org" issue="2012073100">
+
+  <!-- File: msys-gawk.xml -->
+
+  <package-collection subsystem="msys">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="msys-gawk" alias="msys-awk">
+      <affiliate group="MSYS Base System" />
+      <description lang="en" title="pattern scanning and processing language" >
+        <paragraph>Gawk is the GNU implementation of the AWK programming
+          language. Many computer users need to manipulate text files:
+          extract and then operate on data from parts of certain lines
+          while discarding the rest, make changes in various text files
+          wherever certain patterns appear, and so on. To write a program
+          to do these things in a language such as C or Pascal is a
+          time-consuming inconvenience that may take many lines of code.
+          The job is easy with gawk, which interprets a special-purpose
+          programming language that makes it possible to handle many
+          data-reformatting jobs with just a few lines of code.
+        </paragraph>
+      </description>
+
+      <source tarname="gawk-%-msys-%-src.tar.%" />
+      <licence tarname="gawk-%-msys-%-lic.tar.%" />
+
+      <component class="bin">
+        <release tarname="gawk-3.1.7-2-msys-1.0.13-bin.tar.lzma" >
+          <requires eq="msys-libintl-*-msys-*-dll-8.tar" />
+        </release>
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+        <requires eq="msys-coreutils-*-msys-*-bin.tar" />
+        <requires eq="msys-bash-*-msys-*-bin.tar" />
+      </component>
+
+      <component class="lang">
+        <release tarname="gawk-3.1.7-2-msys-1.0.13-lang.tar.lzma" />
+      </component>
+
+      <component class="doc">
+        <release tarname="gawk-3.1.7-2-msys-1.0.13-doc.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="gawk-3.1.7-2-msys-1.0.13-lic.tar.lzma" />
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/msys-gcc.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/msys-gcc.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/msys-gcc.xml	(revision 1046)
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://www.mingw.org" issue="2013101200">
+
+  <!-- File: msys-gcc.xml ~~ mingw-get package description for MSYS version of GCC -->
+
+  <package-collection subsystem="msys">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="msys-gcc" alias="msys-g++" >
+      <affiliate group="MSYS System Builder" />
+      <description lang="en" title="The GNU C Compiler For MSYS">
+        <paragraph>This is not the gcc you are looking for.</paragraph>
+        <paragraph>
+          This package provides the MSYS implementation of the GNU C and
+          C++ language compilers; this includes the C preprocessor, and
+          the common back end processors which are necessary to these two
+          language compilers.  It has been compiled specifically for
+          generating MSYS-dependent applications and libraries.  It should
+          be installed into the / == /usr (that is, C:\msys\1.0) directory,
+          and NOT into the usual MinGW location /mingw (C:\MinGW).  It is
+          part of the MSYS System Builder (msys-dvlpr) toolset.
+        </paragraph>
+        <paragraph>
+          Install this component only if you intend to create MSYS-dependent
+          applications.
+        </paragraph>
+      </description>
+
+      <licence tarname="gcc-%-msys-%-lic.tar.lzma" />
+      <source tarname="gcc-%-msys-%-src.tar.lzma" />
+
+      <component class="bin" >
+        <requires ge="msys-binutils-*-msys-*-bin.tar" />
+        <requires ge="msys-core-*-msys-*-bin.tar" />
+        <requires ge="msys-core-*-msys-*-dev.tar" />
+        <requires ge="msys-w32api-*-msys-*-dev.tar" />
+        <release tarname="gcc-3.4.4-3-msys-1.0.13-bin.tar.lzma" />
+      </component>
+
+      <component class="doc" >
+        <release tarname="gcc-3.4.4-3-msys-1.0.13-doc.tar.lzma" />
+      </component>
+
+      <component class="lic" >
+        <release tarname="gcc-3.4.4-3-msys-1.0.13-lic.tar.lzma" />
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/msys-gdbm.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/msys-gdbm.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/msys-gdbm.xml	(revision 1046)
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://mingw.org" issue="2012073100">
+
+  <!-- File: msys-gdbm.xml -->
+
+  <package-collection subsystem="msys">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="msys-gdbm">
+      <description lang="en" title="GNU Database System">
+        <paragraph>The GNU Database System is a set of database routines
+          that use extensible hashing.  It works similarly to the standard
+          UNIX dbm routines, and provides compatibility replacement
+          interfaces for the traditional 'dbm' and 'ndbm' libraries.
+        </paragraph>
+        <paragraph>The msys-gdbm package provides the command-line
+          utilities for saving and restoring GDBM databases, other tools
+          for testing the various compatibility interfaces, and related
+          documentation.  The associated msys-libgdbm package provides the
+          runtime library and related development files.
+        </paragraph>
+      </description>
+
+      <licence tarname="gdbm-%-msys-%-lic.tar.%" />
+      <source tarname="gdbm-%-msys-%-src.tar.%" />
+
+      <component class="bin">
+        <!-- Every MSYS package requires msys-core-bin.  This dependency
+          is not explicitly stated here; rather, it is implicitly satisfied
+          as a prerequisite of the matching DLL for this package itself,
+          which is specified for each of the following releases.
+          -->
+        <release tarname="gdbm-1.8.3-3-msys-1.0.13-bin.tar.lzma" >
+          <requires eq="msys-libgdbm-%-msys-%-dll-3.tar" />
+        </release>
+      </component>
+
+      <component class="doc">
+        <release tarname="gdbm-1.8.3-3-msys-1.0.13-doc.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="gdbm-1.8.3-3-msys-1.0.13-lic.tar.lzma" />
+      </component>
+    </package>
+
+    <package name="msys-libgdbm">
+      <description lang="en" title="runtime library for the GNU Database System">
+        <paragraph>The GNU Database System is a set of database routines
+          that use extensible hashing.  It works similarly to the standard
+          UNIX dbm routines, and provides compatibility replacement
+          interfaces for the traditional 'dbm' and 'ndbm' libraries.
+        </paragraph>
+        <paragraph>The msys-libgdbm package provides the runtime library
+          and related development files for the GNU Database System.  The
+          associated msys-gdbm package provides the command-line utilities
+          for saving and restoring GDBM databases, other tools for testing
+          the various compatibility interfaces, and related documentation.
+        </paragraph>
+      </description>
+
+      <licence tarname="gdbm-%-msys-%-lic.tar.%" />
+      <source tarname="gdbm-%-msys-%-src.tar.%" />
+
+      <component class="dll">
+        <!-- Every MSYS DLL package requires msys-core-bin -->
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+        <release tarname="libgdbm-1.8.3-3-msys-1.0.13-dll-3.tar.lzma" />
+      </component>
+
+      <component class="dev">
+        <release tarname="libgdbm-1.8.3-3-msys-1.0.13-dev.tar.lzma" >
+          <requires eq="msys-libgdbm-%-msys-%-dll-3.tar" />
+        </release>
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/msys-gettext.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/msys-gettext.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/msys-gettext.xml	(revision 1046)
@@ -0,0 +1,259 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://mingw.org" issue="2012073100">
+
+  <!-- File: msys-gettext.xml -->
+
+  <package-collection subsystem="msys">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="msys-gettext">
+      <affiliate group="MSYS System Builder" />
+      <description lang="en" title="GNU Internationalization Library and Utilities">
+        <paragraph>This is not the gettext you are looking for.</paragraph>
+        <paragraph>GNU gettext provides a set of tools that create a
+          framework to help other GNU packages produce multi-lingual
+          messages. In this way, with suitable care a single binary
+          application can automatically provide user messages (such as
+          `help' text) in the language corresponding to the current
+          locale settings.
+        </paragraph>
+        <paragraph>This msys port of gettext has been modified
+          specifically for the MSYS System Builder environment; that is,
+          it is intended to be used only when producing binary packages
+          for the MSYS subsystem.  If you intend to produce executables
+          for the native "mingw32" subsystem (that is, applications that
+          should work on Microsoft Windows installations without the MSYS
+          dll), then you should install the mingw32-gettext-* package(s)
+          instead.
+        </paragraph>
+        <paragraph>The msys-gettext package provides utilities that may
+          be useful to end-users, allowing interaction with the message
+          translation database of other i18n-enabled GNU utilities. It
+          also provides the development libraries, header files, and
+          documentation for the gettext system, as well as additional
+          utilities useful for maintainers of i18n-enabled applications.
+          The *-ext package provides extra documentation, in the form of
+          example implementations in many different computer languages.
+          The associated msys-libgettextpo package provides the runtime
+          libraries needed by the msys-gettext utilities; the associated
+          msys-libasprintf package provides the runtime library for the
+          asprintf utility library; and finally, the associated msys-libintl
+          package provides the runtime component of the internationalization
+          library itself, which is used by many other msys packages.
+        </paragraph>
+      </description>
+
+      <source tarname="gettext-%-msys-%-src.tar.%" />
+      <licence tarname="gettext-%-msys-%-lic.tar.%" />
+
+      <component class="bin">
+        <release tarname="gettext-0.17-2-msys-1.0.13-bin.tar.lzma">
+          <requires eq="msys-libintl-%-msys-*-dll-8.tar" />
+          <requires eq="msys-libiconv-*-msys-*-dll-2.tar" />
+        </release>
+        <release tarname="gettext-0.18.1.1-1-msys-1.0.17-bin.tar.lzma">
+          <requires eq="msys-libintl-%-msys-*-dll-8.tar" />
+          <requires ge="msys-libiconv-1.14-1-msys-*-dll-2.tar" />
+        </release>
+      </component>
+
+      <component class="doc">
+        <release tarname="gettext-0.17-2-msys-1.0.13-doc.tar.lzma" />
+        <release tarname="gettext-0.18.1.1-1-msys-1.0.17-doc.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="gettext-0.17-2-msys-1.0.13-lic.tar.lzma" />
+        <release tarname="gettext-0.18.1.1-1-msys-1.0.17-lic.tar.lzma" />
+      </component>
+
+      <component class="dev">
+        <release tarname="gettext-0.17-2-msys-1.0.13-dev.tar.lzma">
+          <requires eq="msys-libgettextpo-%-msys-*-dll-0.tar" />
+          <requires eq="msys-libintl-%-msys-*-dll-8.tar" />
+          <requires eq="msys-libiconv-*-msys-*-dll-2.tar" />
+          <requires eq="msys-libexpat-*-msys-*-dll-1.tar" />
+          <requires eq="msys-libtermcap-*-msys-*-dll-0.tar.lzma" />
+        </release>
+        <release tarname="gettext-0.18.1.1-1-msys-1.0.17-dev.tar.lzma">
+          <requires eq="msys-libgettextpo-%-msys-*-dll-0.tar" />
+          <requires eq="msys-libintl-%-msys-*-dll-8.tar" />
+          <requires ge="msys-libiconv-1.14-1-msys-*-dll-2.tar" />
+          <requires eq="msys-libexpat-*-msys-*-dll-1.tar" />
+          <requires eq="msys-libtermcap-*-msys-*-dll-0.tar.lzma" />
+        </release>
+      </component>
+
+      <component class="ext">
+        <release tarname="gettext-0.17-2-msys-1.0.13-ext.tar.lzma" />
+        <release tarname="gettext-0.18.1.1-1-msys-1.0.17-ext.tar.lzma" />
+      </component>
+    </package>
+
+    <package name="msys-libintl">
+      <affiliate group="MSYS System Builder" />
+      <description lang="en" title="GNU Internationalization Runtime Library">
+        <paragraph>This is not the libintl you are looking for.</paragraph>
+        <paragraph>GNU gettext provides a set of tools that create a
+          framework to help other GNU packages produce multi-lingual
+          messages. In this way, with suitable care a single binary
+          application can automatically provide user messages (such as
+          `help' text) in the language corresponding to the current
+          locale settings. libintl is the primary runtime component of
+          that framework.
+        </paragraph>
+        <paragraph>This msys port of gettext has been modified
+          specifically for the MSYS System Builder environment; that is,
+          it is intended to be used only when producing binary packages
+          for the MSYS subsystem.  If you intend to produce executables
+          for the native "mingw32" subsystem (that is, applications that
+          should work on Microsoft Windows installations without the MSYS
+          dll), then you should install the mingw32-libintl-* package(s)
+          instead.
+        </paragraph>
+        <paragraph>The msys-libintl package provides the runtime component
+          of the GNU internationalization library, which is used by many
+          other MSYS packages. The msys-gettext package provides utilities
+          that may be useful to end-users, allowing interaction with the
+          message translation database of other i18n-enabled GNU utilities.
+          It also provides the development libraries, header files, and
+          documentation for the gettext system, as well as additional
+          utilities useful for maintainers of i18n-enabled applications.
+          The *-ext package provides extra documentation, in the form of
+          example implementations in many different computer languages.
+          The associated msys-libgettextpo package provides the runtime
+          libraries needed by the msys-gettext utilities; the associated
+          msys-libasprintf package provides the runtime library for the
+          asprintf utility library.
+        </paragraph>
+      </description>
+
+      <source tarname="gettext-%-msys-%-src.tar.%" />
+      <licence tarname="gettext-%-msys-%-lic.tar.%" />
+
+      <component class="dll">
+        <release tarname="libintl-0.17-2-msys-1.0.13-dll-8.tar.lzma">
+          <download tarname="libintl-0.17-2-msys-dll-8.tar.lzma" />
+          <requires eq="msys-libiconv-*-msys-*-dll-2.tar" />
+        </release>
+        <release tarname="libintl-0.18.1.1-1-msys-1.0.17-dll-8.tar.lzma">
+          <requires eq="msys-libiconv-1.14-1-msys-*-dll-2.tar" />
+        </release>
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+      </component>
+    </package>
+
+    <package name="msys-libgettextpo">
+      <affiliate group="MSYS System Builder" />
+      <description lang="en" title="GNU Internationalization Utility Library">
+        <paragraph>This is not the libgettextpo you are looking for.</paragraph>
+        <paragraph>GNU gettext provides a set of tools that create a
+          framework to help other GNU packages produce multi-lingual
+          messages. In this way, with suitable care a single binary
+          application can automatically provide user messages (such as
+          `help' text) in the language corresponding to the current
+          locale settings. libgettextpo provides runtime support for the
+          gettext utilities; it is typically not needed by `regular' i18n
+          clients of libintl.
+        </paragraph>
+        <paragraph>This msys port of gettext has been modified
+          specifically for the MSYS System Builder environment; that is,
+          it is intended to be used only when producing binary packages
+          for the MSYS subsystem.  If you intend to produce executables
+          for the native "mingw32" subsystem (that is, applications that
+          should work on Microsoft Windows installations without the MSYS
+          dll), then you should install the mingw32-libintl-* package(s)
+          instead.
+        </paragraph>
+        <paragraph>The msys-libgettextpo package provides the runtime
+          libraries needed by the msys-gettext utilities. The associated
+          msys-gettext package provides utilities that may be useful to
+          end-users, allowing interaction with the message translation
+          database of other i18n-enabled GNU utilities. It also provides
+          the development libraries, header files, and documentation for
+          the gettext system, as well as additional utilities useful for
+          maintainers of i18n-enabled applications. The *-ext package
+          provides extra documentation, in the form of example
+          implementations in many different computer languages.
+          The associated msys-libasprintf package provides the runtime
+          library for the asprintf utility library; and finally, the
+          associated msys-libintl package provides the runtime component
+          of the internationalization library itself, which is used by
+          many other msys packages.
+        </paragraph>
+      </description>
+
+      <source tarname="gettext-%-msys-%-src.tar.%" />
+      <licence tarname="gettext-%-msys-%-lic.tar.%" />
+
+      <component class="dll">
+        <release tarname="libgettextpo-0.17-2-msys-1.0.13-dll-0.tar.lzma">
+          <download tarname="libgettextpo-0.17-2-msys-dll-0.tar.lzma" />
+          <requires eq="msys-libintl-%-msys-*-dll-8.tar" />
+          <requires eq="msys-libiconv-*-msys-*-dll-2.tar" />
+          <requires eq="msys-libtermcap-*-msys-*-dll-0.tar.lzma" />
+        </release>
+        <release tarname="libgettextpo-0.18.1.1-1-msys-1.0.17-dll-0.tar.lzma">
+          <requires eq="msys-libintl-%-msys-*-dll-8.tar" />
+          <requires ge="msys-libiconv-1.14-1-msys-*-dll-2.tar" />
+          <requires eq="msys-libtermcap-*-msys-*-dll-0.tar.lzma" />
+        </release>
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+      </component>
+    </package>
+
+    <package name="msys-libasprintf">
+      <affiliate group="MSYS System Builder" />
+      <description lang="en" title="GNU Internationalization Utility Library">
+        <paragraph>This is not the libasprintf you are looking for.</paragraph>
+        <paragraph>GNU gettext provides a set of tools that create a
+          framework to help other GNU packages produce multi-lingual
+          messages. In this way, with suitable care a single binary
+          application can automatically provide user messages (such as
+          `help' text) in the language corresponding to the current
+          locale settings. libasprintf provides an implementation of
+          the C formatted output routines suitable for use in C++
+          applications, where i18n is a goal.
+        </paragraph>
+        <paragraph>This msys port of gettext has been modified
+          specifically for the MSYS System Builder environment; that is,
+          it is intended to be used only when producing binary packages
+          for the MSYS subsystem.  If you intend to produce executables
+          for the native "mingw32" subsystem (that is, applications that
+          should work on Microsoft Windows installations without the MSYS
+          dll), then you should install the mingw32-libintl-* package(s)
+          instead.
+        </paragraph>
+        <paragraph>The msys-libasprintf package provides the runtime
+          library for the asprintf utility library. The associated
+          msys-gettext package provides utilities that may be useful to
+          end-users, allowing interaction with the message translation
+          database of other i18n-enabled GNU utilities. It also provides
+          the development libraries, header files, and documentation for
+          the gettext system, as well as additional utilities useful for
+          maintainers of i18n-enabled applications. The *-ext package
+          provides extra documentation, in the form of example
+          implementations in many different computer languages. The
+          associated msys-libgettextpo package provides the runtime
+          libraries needed by the msys-gettext utilities, while the
+          associated msys-libintl package provides the runtime component
+          of the internationalization library itself, which is used by
+          many other msys packages.
+        </paragraph>
+      </description>
+
+      <source tarname="gettext-%-msys-%-src.tar.%" />
+      <licence tarname="gettext-%-msys-%-lic.tar.%" />
+
+      <component class="dll">
+        <release tarname="libasprintf-0.17-2-msys-1.0.13-dll-0.tar.lzma">
+          <download tarname="libasprintf-0.17-2-msys-dll-0.tar.lzma" />
+        </release>
+        <release tarname="libasprintf-0.18.1.1-1-msys-1.0.17-dll-0.tar.lzma" />
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/msys-gmp.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/msys-gmp.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/msys-gmp.xml	(revision 1046)
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://mingw.org" issue="2012073100">
+
+  <!-- File: msys-gmp.xml -->
+
+  <package-collection subsystem="msys">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="msys-gmp">
+      <description lang="en" title="The GNU Multiple Precision Arithmetic Library" >
+        <paragraph>GNU MP is a library for arbitrary precision arithmetic,
+          operating on signed integers, rational numbers, and floating
+          point numbers.  It has a rich set of functions, and the functions
+          have a regular interface.
+        </paragraph>
+        <paragraph>The MinGW/MSYS project provides two gmp packages:
+          this msys-gmp one and a native win32 mingw32-gmp.  This one
+          requires the MSYS dll, and is provided as a necessary component
+          of various MSYS tools, such as guile.  The mingw32-gmp version
+          is provided as a necessary component of modern MinGW gcc
+          compilers.
+        </paragraph>
+        <paragraph>The msys-gmp package provides the documentation
+          for the gmp library.  The associated msys-libgmp package
+          provides the runtime library and related development files.
+        </paragraph>
+      </description>
+
+      <licence tarname="gmp-%-msys-%-lic.tar.%" />
+      <source tarname="gmp-%-msys-%-src.tar.%" />
+
+      <component class="doc">
+        <release tarname="gmp-5.0.1-1-msys-1.0.13-doc.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="gmp-5.0.1-1-msys-1.0.13-lic.tar.lzma" />
+      </component>
+    </package>
+
+    <package name="msys-libgmp">
+      <description lang="en" title="The GNU Multiple Precision Arithmetic Library" >
+        <paragraph>GNU MP is a library for arbitrary precision arithmetic,
+          operating on signed integers, rational numbers, and floating
+          point numbers.  It has a rich set of functions, and the functions
+          have a regular interface.
+        </paragraph>
+        <paragraph>The MinGW/MSYS project provides two libgmp packages:
+          this msys-libgmp one and a native win32 mingw32-libgmp.  This one
+          requires the MSYS dll, and is provided as a necessary component
+          of various MSYS tools, such as guile.  The mingw32-gmp version
+          is provided as a necessary component of modern MinGW gcc
+          compilers.
+        </paragraph>
+        <paragraph>The msys-libgmp package provides the runtime library
+          and related development files.  The associated msys-gmp package
+          provides the documentation for the gmp library.
+        </paragraph>
+      </description>
+
+      <licence tarname="gmp-%-msys-%-lic.tar.%" />
+      <source tarname="gmp-%-msys-%-src.tar.%" />
+
+      <component class="dll">
+        <release tarname="libgmp-5.0.1-1-msys-1.0.13-dll-10.tar.lzma" />
+
+        <!-- Every MSYS DLL package requires msys-core-bin -->
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+      </component>
+
+      <component class="dev">
+        <release tarname="libgmp-5.0.1-1-msys-1.0.13-dev.tar.lzma" >
+          <requires eq="msys-libgmp-%-msys-%-dll-10.tar" />
+        </release>
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/msys-grep.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/msys-grep.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/msys-grep.xml	(revision 1046)
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://mingw.org" issue="2012073100">
+
+  <!-- File: msys-grep.xml -->
+
+  <package-collection subsystem="msys">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="msys-grep">
+      <affiliate group="MSYS Base System" />
+      <description lang="en" title="print lines matching a pattern" >
+        <paragraph>grep searches the input files for lines containing a
+          match to a given pattern list.  When it finds a match in a line,
+          it copies the line to standard output (by default), or produces
+          whatever other sort of output you have requested with options.
+        </paragraph>
+      </description>
+
+      <source tarname="grep-%-msys-%-src.tar.%" />
+      <licence tarname="grep-%-msys-%-lic.tar.%" />
+
+      <component class="bin">
+        <release tarname="grep-2.5.4-2-msys-1.0.13-bin.tar.lzma" >
+          <requires eq="msys-libintl-*-msys-*-dll-8.tar" />
+        </release>
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+      </component>
+
+      <component class="lang">
+        <release tarname="grep-2.5.4-2-msys-1.0.13-lang.tar.lzma" />
+      </component>
+
+      <component class="doc">
+        <release tarname="grep-2.5.4-2-msys-1.0.13-doc.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="grep-2.5.4-2-msys-1.0.13-lic.tar.lzma" />
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/msys-groff.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/msys-groff.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/msys-groff.xml	(revision 1046)
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://mingw.org" issue="2012073100">
+
+  <!-- File: msys-groff.xml -->
+
+  <package-collection subsystem="msys">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="msys-groff">
+      <description lang="en" title="GNU troff typesetting package" >
+        <paragraph>The groff (GNU troff) software is a typesetting package
+          which reads plain text mixed with formatting commands and
+          produces formatted output.  The package is essential for viewing
+          online manual pages.  Output can be produced in a number of
+          formats including plain ASCII and PostScript. All the standard
+          macro packages are supported.
+        </paragraph>
+        <paragraph>The msys-groff package does not support the HTML nor
+          pdf output devices, becuase MSYS currently provides neither the
+          required postscript interpreter nor the pbmtools.  The gxditview
+          viewer is not included.  The msys-groff-bin subpackage provides
+          all of the components necessary for a working 'man' installation,
+          while the msys-groff-ext subpackage provides the remaining files
+          needed for supported output devices other than the console, such
+          as postscript and hpgl, as well as additional utilties.
+        </paragraph>
+      </description>
+
+      <licence tarname="groff-%-msys-%-lic.tar.%" />
+      <source tarname="groff-%-msys-%-src.tar.%" />
+
+      <component class="bin">
+        <requires eq="msys-bash-*-msys-*-bin.tar" />
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+        <requires eq="msys-coreutils-*-msys-*-bin.tar" />
+        <!-- perl is required for the 'grog' script -->
+        <requires eq="msys-perl-*-msys-*-bin.tar" />
+        <release tarname="groff-1.20.1-2-msys-1.0.13-bin.tar.lzma" >
+          <requires eq="msys-libiconv-*-msys-*-dll-2.tar" />
+        </release>
+      </component>
+
+      <component class="ext">
+        <requires eq="msys-bash-*-msys-*-bin.tar" />
+        <requires eq="msys-coreutils-*-msys-*-bin.tar" />
+        <requires eq="msys-diffutils-*-msys-*-bin.tar" />
+        <requires eq="msys-grep-*-msys-*-bin.tar" />
+        <requires eq="msys-groff-%-msys-%-bin.tar" />
+        <requires eq="msys-perl-*-msys-*-bin.tar" />
+        <requires eq="msys-sed-*-msys-*-bin.tar" />
+        <release tarname="groff-1.20.1-2-msys-1.0.13-ext.tar.lzma" />
+      </component>
+
+      <component class="smp">
+        <release tarname="groff-1.20.1-2-msys-1.0.13-smp.tar.lzma" />
+      </component>
+
+      <component class="doc">
+        <release tarname="groff-1.20.1-2-msys-1.0.13-doc.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="groff-1.20.1-2-msys-1.0.13-lic.tar.lzma" />
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/msys-guile.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/msys-guile.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/msys-guile.xml	(revision 1046)
@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://mingw.org" issue="2012073100">
+
+  <!-- File: msys-guile.xml -->
+
+  <package-collection subsystem="msys">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="msys-guile">
+      <affiliate group="MinGW Developer Toolkit" />
+      <description lang="en" title="A Scheme interpreter" >
+        <paragraph>Guile is an interpreter for the Scheme programming language,
+          with support for many SRFIs (Scheme Request For Implementations),
+          packaged as a library which can be incorporated into your programs.
+          Your users have full access to the interpreter, so Guile itself can be
+          extended, based on the needs of the user.  The result is a scripting
+          language tailored to your application.
+        </paragraph>
+        <paragraph>Guile is a library designed to help programmers create
+          flexible applications.  Using Guile in an application allows
+          programmers to write plug-ins, or modules (there are many names, but
+          the concept is essentially the same) and users to use them to have an
+          application fit their needs.
+        </paragraph>
+        <paragraph>The msys-guile package provides a standalone guile
+          interpreter and all associated documentation.  The associated
+          msys-libguile package provides the runtime libraries, development
+          files, and other runtime support.
+        </paragraph>
+      </description>
+
+      <licence tarname="guile-%-msys-%-lic.tar.%" />
+      <source tarname="guile-%-msys-%-src.tar.%" />
+
+      <component class="bin">
+        <requires eq="msys-bash-*-msys-*-bin.tar" />
+        <requires eq="msys-coreutils-*-msys-*-bin.tar" />
+        <requires eq="msys-gawk-*-msys-*-bin.tar" />
+        <requires eq="msys-grep-*-msys-*-bin.tar" />
+        <requires eq="msys-sed-*-msys-*-bin.tar" />
+        <!-- Every MSYS package requires msys-core-bin.  This dependency
+          is not explicitly stated here; rather, it is implicitly satisfied
+          as a prerequisite of the matching DLL for this package itself,
+          which is specified for each of the following releases.
+          -->
+        <release tarname="guile-1.8.7-2-msys-1.0.15-bin.tar.lzma" >
+          <requires eq="msys-libguile-%-msys-%-dll-17.tar" />
+        </release>
+      </component>
+
+      <component class="doc">
+        <release tarname="guile-1.8.7-2-msys-1.0.15-doc.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="guile-1.8.7-2-msys-1.0.15-lic.tar.lzma" />
+      </component>
+    </package>
+
+    <package name="msys-libguile">
+      <description lang="en" title="An extensible Scheme interpreter library" >
+        <paragraph>Guile is a library designed to help programmers create
+          flexible applications.  Using Guile in an application allows
+          programmers to write plug-ins, or modules (there are many names, but
+          the concept is essentially the same) and users to use them to have an
+          application fit their needs.
+        </paragraph>
+        <paragraph>Guile is an interpreter for the Scheme programming language,
+          with support for many SRFIs (Scheme Request For Implementations),
+          packaged as a library which can be incorporated into your programs.
+          Your users have full access to the interpreter, so Guile itself can be
+          extended, based on the needs of the user.  The result is a scripting
+          language tailored to your application.
+        </paragraph>
+        <paragraph>The msys-libguile package provides the runtime libraries,
+          development files, and other runtime support for guile.  The
+          associated msys-guile package provides a standalone guile interpreter
+          and all associated documentation.
+        </paragraph>
+      </description>
+
+      <licence tarname="guile-%-msys-%-lic.tar.%" />
+      <source tarname="guile-%-msys-%-src.tar.%" />
+
+      <component class="dll">
+        <requires eq="msys-libguile-%-msys-%-rtm.tar" />
+        <release tarname="libguile-1.8.7-2-msys-1.0.15-dll-17.tar.lzma" >
+          <requires eq="msys-libcrypt-*-msys-*-dll-0.tar" />
+          <requires eq="msys-libgmp-*-msys-*-dll-10.tar" />
+          <requires eq="msys-libintl-*-msys-*-dll-8.tar" />
+          <requires eq="msys-libltdl-*-msys-*-dll-7.tar" />
+          <requires eq="msys-libregex-*-msys-*-dll-1.tar" />
+        </release>
+
+        <!-- Every MSYS DLL package requires msys-core-bin -->
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+      </component>
+
+      <component class="dev">
+        <requires eq="msys-gettext-*-msys-*-dev.tar" />
+        <requires eq="msys-libcrypt-*-msys-*-dev.tar" />
+        <requires eq="msys-libgmp-*-msys-*-dev.tar" />
+        <requires eq="msys-libltdl-*-msys-*-dev.tar" />
+        <requires eq="msys-libregex-*-msys-*-dev.tar" />
+        <release tarname="libguile-1.8.7-2-msys-1.0.15-dev.tar.lzma" >
+          <requires eq="msys-libguile-%-msys-%-dll-17.tar" />
+        </release>
+      </component>
+
+      <component class="rtm">
+        <release tarname="libguile-1.8.7-2-msys-1.0.15-rtm.tar.lzma" />
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/msys-gzip.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/msys-gzip.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/msys-gzip.xml	(revision 1046)
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://mingw.org" issue="2012073100">
+
+  <!-- File: msys-gzip.xml -->
+
+  <package-collection subsystem="msys">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="msys-gzip">
+      <affiliate group="MSYS Base System" />
+      <description lang="en" title="compress or expand files" >
+        <paragraph>Gzip reduces the size of the named files using
+          Lempel-Ziv coding (LZ77).  Whenever possible, each file is
+          replaced by one with the extension .gz, while keeping the same
+          ownership modes, access and modification times. The LZ77 algorithm
+          is the same one used by zip and PKZIP "deflate". The amount of
+          compression obtained depends on the size of the input and the
+          distribution of common substrings.  Typically, text such as
+          source code or English is reduced by 60-70%.  Compression is
+          generally much better than that achieved by LZW (as used in
+          compress), Huffman coding (as used in pack), or adaptive Huffman
+          coding (compact). gzip is the de facto standard compression
+          program on unix, and is universally available.
+        </paragraph>
+      </description>
+
+      <source tarname="gzip-%-msys-%-src.tar.%" />
+      <licence tarname="gzip-%-msys-%-lic.tar.%" />
+
+      <component class="bin">
+        <release tarname="gzip-1.3.12-2-msys-1.0.13-bin.tar.lzma" />
+
+        <!-- Every MSYS package requires msys-core-bin -->
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+
+        <!-- Other requirements support the auxiliary scripts,
+          which are provided by the gzip-bin package.
+          -->
+        <requires eq="msys-bash-*-msys-*-bin.tar" />
+        <requires eq="msys-coreutils-*-msys-*-bin.tar" />
+        <requires eq="msys-diffutils-*-msys-*-bin.tar" />
+        <requires eq="msys-grep-*-msys-*-bin.tar" />
+        <requires eq="msys-less-*-msys-*-bin.tar" />
+      </component>
+
+      <component class="doc">
+        <release tarname="gzip-1.3.12-2-msys-1.0.13-doc.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="gzip-1.3.12-2-msys-1.0.13-lic.tar.lzma" />
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/msys-help2man.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/msys-help2man.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/msys-help2man.xml	(revision 1046)
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://mingw.org" issue="2012073100">
+
+  <!-- File: msys-help2man.xml -->
+
+  <package-collection subsystem="msys">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="msys-help2man">
+      <affiliate group="MinGW Developer Toolkit" />
+      <description lang="en" title="generate man pages" >
+        <paragraph>help2man is a perl script to create man pages from program
+          --help and --version output.
+        </paragraph>
+      </description>
+
+      <source tarname="help2man-%-msys-%-src.tar.%" />
+      <licence tarname="help2man-%-msys-%-lic.tar.%" />
+
+      <component class="bin">
+        <release tarname="help2man-1.40.4-1-msys-1.0.17-bin.tar.lzma" />
+        <requires eq="msys-perl-*-msys-*-bin.tar" />
+      </component>
+
+      <component class="doc">
+        <release tarname="help2man-1.40.4-1-msys-1.0.17-doc.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="help2man-1.40.4-1-msys-1.0.17-lic.tar.lzma" />
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/msys-inetutils.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/msys-inetutils.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/msys-inetutils.xml	(revision 1046)
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://mingw.org" issue="2012073100">
+
+  <!-- File: msys-inetutils.xml -->
+
+  <package-collection subsystem="msys">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="msys-inetutils">
+      <affiliate group="MinGW Developer Toolkit" />
+      <description lang="en" title="Common Networking Clients" >
+        <paragraph>inetutils provides common networking clients, including
+          telnet, ftp, rsh, rlogin, tftp, and rcp, adapated and compiled for
+          the MSYS platform on Microsoft Windows.  This MSYS package provides
+          no servers.
+        </paragraph>
+        <paragraph>Most of these utilities are security nightmares, dating
+          from a time when the internet was a more innocent place.  It is NOT
+          recommended that you use ANY of these utilities -- unless you have
+          a VERY good reason.  Use ssh, sftp, or scp from msys-openssh instead.
+        </paragraph>
+      </description>
+
+      <licence tarname="inetutils-%-msys-%-lic.tar.%" />
+      <source tarname="inetutils-%-msys-%-src.tar.%" />
+
+      <component class="bin">
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+        <release tarname="inetutils-1.7-1-msys-1.0.13-bin.tar.lzma" />
+      </component>
+
+      <component class="doc">
+        <release tarname="inetutils-1.7-1-msys-1.0.13-doc.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="inetutils-1.7-1-msys-1.0.13-lic.tar.lzma" />
+      </component>
+
+      <component class="dev">
+        <release tarname="inetutils-1.7-1-msys-1.0.13-dev.tar.lzma" />
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/msys-less.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/msys-less.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/msys-less.xml	(revision 1046)
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://mingw.org" issue="2012073100">
+
+  <!-- File: msys-less.xml -->
+
+  <package-collection subsystem="msys">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="msys-less">
+      <affiliate group="MSYS Base System" />
+      <description lang="en" title="command-line text file viewer" >
+        <paragraph>Less is a free, open-source file pager. A pager is a
+          program that displays text files. Other pagers commonly in use
+          are more and pg. Pagers are often used in command-line
+          environments like the Unix shell and the MS-DOS command prompt
+          to display files. Windowed environments like the Windows and
+          Macintosh desktops don't need pagers as much, since they have
+          other methods for viewing files.
+        </paragraph>
+        <paragraph>Less is not an editor. You can't change the contents of
+          the file you're viewing. Less is not a windowing system. It
+          doesn't have fancy scroll bars or other GUI (graphical user
+          interface) elements. It was designed to work on simple text-only
+          terminals.
+        </paragraph>
+      </description>
+
+      <source tarname="less-%-msys-%-src.tar.%" />
+      <licence tarname="less-%-msys-%-lic.tar.%" />
+
+      <component class="bin">
+        <release tarname="less-436-2-msys-1.0.13-bin.tar.lzma" >
+          <requires eq="msys-libtermcap-*-msys-*-dll-0.tar" />
+          <requires eq="msys-libregex-*-msys-*-dll-1.tar" />
+        </release>
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+      </component>
+
+      <component class="doc">
+        <release tarname="less-436-2-msys-1.0.13-doc.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="less-436-2-msys-1.0.13-lic.tar.lzma" />
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/msys-libarchive.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/msys-libarchive.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/msys-libarchive.xml	(revision 1046)
@@ -0,0 +1,247 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://mingw.org" issue="2012073100">
+
+  <!-- File: msys-libarchive.xml -->
+
+  <package-collection subsystem="msys">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="msys-libarchive">
+      <description lang="en" title="library for handling various archive formats" >
+        <paragraph>libarchive is a programming library that can create and
+          read several different streaming archive formats, including most
+          popular tar variants and several cpio formats, mtree, and ar
+          archives.  It can also read shar, zip, jar, and xar archives, as
+          well as ISO9660 CDROM images.  It automatically handles gzip,
+          bzip2, compress, xz, and lzma compression and decompression, as
+          well as uudecode decompression.  The bsdtar program is an
+          implementation of tar(1) that is built on top of libarchive.
+        </paragraph>
+        <paragraph>This MSYS port of libarchive differs from the MinGW
+          version also provided by the MinGW/MSYS project.  In addition
+          to requiring the MSYS runtime library, this implementation
+          supports mtree data and understands MSYS's "unix" style pathnames.
+          It also supports archives that contain symbolic links by
+          converting them to equivalent hardlink (or recursive copy)
+          representations (see msys-bsdtar for more information).  The MinGW
+          implementation does not support archives with symbolic links, nor
+          mtree data.  It does, however, operate properly on systems where
+          MSYS is not installed.  Both msys-libarchive and mingw32-libarchive
+          (and their associated bsdtar and bsdcpio subpackages) depend on
+          additional DLLs such as msys-liblzma (mingw32-liblzma), etc.
+          There is, in addition, a MinGW package that provides a standalone
+          version of bsdtar which has no external dependencies and only
+          limited functionality: mingw32-basic-bsdtar (see its documentation
+          for more information).
+        </paragraph>
+        <paragraph>The msys-libarchive package provides the runtime
+          library, development files, and documentation for libarchive.
+          The associated msys-bsdtar package provides an implementation
+          of tar(1) based on libarchive, while the associated msys-bsdcpio
+          package provides a similar implementation of cpio(1).
+        </paragraph>
+      </description>
+
+      <licence tarname="libarchive-%-msys-%-lic.tar.%" />
+      <source tarname="libarchive-%-msys-%-src.tar.%" />
+
+      <component class="doc">
+        <release tarname="libarchive-2.8.3-1-msys-1.0.13-doc.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="libarchive-2.8.3-1-msys-1.0.13-lic.tar.lzma" />
+      </component>
+
+      <component class="dev">
+        <requires eq="msys-libbz2-*-msys-*-dev.tar" />
+        <requires eq="msys-liblzma-*-msys-*-dev.tar" />
+        <requires eq="msys-libopenssl-*-msys-*-dev.tar" />
+        <requires eq="msys-libxml2-*-msys-*-dev.tar" />
+        <requires eq="msys-zlib-*-msys-*-dev.tar" />
+        <release tarname="libarchive-2.8.3-1-msys-1.0.13-dev.tar.lzma" >
+          <requires eq="msys-libarchive-%-msys-%-dll-2.tar" />
+        </release>
+      </component>
+
+      <component class="dll">
+        <release tarname="libarchive-2.8.3-1-msys-1.0.13-dll-2.tar.lzma" >
+          <requires eq="msys-libbz2-*-msys-*-dll-1.tar" />
+          <requires eq="msys-liblzma-*-msys-*-dll-1.tar" />
+          <requires eq="msys-libopenssl-*-msys-*-dll-100.tar" />
+          <requires eq="msys-libxml2-*-msys-*-dll-2.tar" />
+          <requires eq="msys-zlib-*-msys-*-dll.tar" />
+        </release>
+
+        <!-- Every MSYS DLL package requires msys-core-bin -->
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+      </component>
+    </package>
+
+    <package name="msys-bsdtar">
+      <affiliate group="MinGW Developer Toolkit" />
+      <description lang="en" title="BSD version of the tar utility" >
+        <paragraph>The msys-bsdtar package provides an implementation
+          of tar(1) based on libarchive, which manipulates streaming archive
+          files -- including the eponymous tar format.  However, bsdtar
+          can also extract from tar, pax, cpio, zip, jar, ar, xar, mtree,
+          and ISO 9660 cdrom images, as well as create tar, pax, cpio, ar,
+          mtree, and shar archives.  It supports automatic detection and
+          handling of .gz, .bz2, .lzma, .xz, and .Z decompression (and
+          compression).  It supports ustar, pax, and GNU tar formats.
+        </paragraph>
+        <paragraph>This MSYS port of bsdtar differs from the MinGW version
+          also provided by the MinGW/MSYS project.  In addition to requiring
+          the MSYS runtime library, this implementation supports mtree data
+          and understands MSYS's "unix" style pathnames.  It also supports
+          archives that contain symbolic links by converting them to
+          equivalent hardlink (or recursive copy) representations (see
+          below).  The MinGW implementation does not support archives with
+          symbolic links, nor mtree data.  It does, however, operate properly
+          on systems where MSYS is not installed.  Both msys-bsdtar and
+          mingw32-bsdtar depend on additional DLLs such as msys-libarchive
+          (mingw32-liblzma), etc.  There is, in addition, a MinGW package
+          that provides a standalone version of bsdtar which has no external
+          dependencies and only limited functionality: mingw32-basic-bsdtar
+          (see its documentation for more information).
+        </paragraph>
+        <paragraph>This msys implementation has some unique behaviors with
+          regards to symbolic and hard links.  When creating archives on an
+          MSYS platform, there are no symbolic links; hardlinks are archived
+          as on unix, without requiring duplicate storage (unless the
+          --hard-dereference option is used).  When extracing archives on
+          an MSYS platform, if the archive contains hardlinks then they are
+          reproduced on the local file system provided the Win32 filesystem
+          supports hardlinks (e.g. NTFS; on FAT, a duplicate copy of the
+          file is created).  If the archive contains symbolic links where
+          the target is a file contained within the archive itself, then
+          those links are reproduced as if they were hardlinks, as described
+          above.  "Dangling" symbolic links are not supported.  Symbolic
+          links to directories within the archive are "supported", by
+          creating a recursive copy of the target directory, where the
+          contents of the directory are treated as hardlinks as described
+          above.
+        </paragraph>
+        <paragraph>This msys implementation ignores ownership data and
+          permission bits; all extracted files are created as if owned
+          by the current user, regardless of the current user's root
+          (Administrator) status.  All archived files are added to the
+          archive with "default" permission and as if owned by the current
+          user.
+        </paragraph>
+        <paragraph>libarchive is a programming library that can create and
+          read several different streaming archive formats, including most
+          popular tar variants and several cpio formats, mtree, and ar
+          archives.  It can also read shar, zip, jar, and xar archives, as
+          well as ISO9660 CDROM images.  It automatically handles gzip,
+          bzip2, compress, xz, and lzma compression and decompression, as
+          well as uudecode decompression.  The bsdtar program is an
+          implementation of tar(1) that is built on top of libarchive.
+        </paragraph>
+        <paragraph>The msys-bsdtar package provides an implementation
+          of tar(1) based on libarchive, while the associated msys-bsdcpio
+          package provides a similar implementation of cpio(1).  The
+          associated msys-libarchive package provides the runtime
+          library, development files, and documentation.
+        </paragraph>
+      </description>
+
+      <licence tarname="libarchive-%-msys-%-lic.tar.%" />
+      <source tarname="libarchive-%-msys-%-src.tar.%" />
+
+      <component class="bin">
+        <!-- Every MSYS package requires msys-core-bin.  This dependency
+          is not explicitly stated here; rather, it is implicitly satisfied
+          as a prerequisite of the matching DLL for this package itself,
+          which is specified for each of the following releases.
+          -->
+        <release tarname="bsdtar-2.8.3-1-msys-1.0.13-bin.tar.lzma" >
+          <requires eq="msys-libarchive-%-msys-%-dll-2.tar" />
+        </release>
+      </component>
+    </package>
+
+    <package name="msys-bsdcpio">
+      <affiliate group="MinGW Developer Toolkit" />
+      <description lang="en" title="BSD version of the cpio utility" >
+        <paragraph>The msys-bsdcpio package provides an implementation
+          of cpio(1) based on libarchive, which copies files between
+          archives and directories.  This implementation can extract from
+          tar, pax, cpio, zip, jar, ar, mtree, xar, and ISO 9660 cdrom
+          images, as well as create tar, pax, cpio, ar, and shar archives.
+          It supports automatic detection and handling of .gz, .bz2, .lzma,
+          .xz, and .Z decompression (and compression).  It supports the old
+          POSIX.1 portable cpio format (odc), the new SVR4 portable cpio
+          format (newc), as well as the POSIX.1 pax and ustar formats.
+        </paragraph>
+        <paragraph>This MSYS port of bsdcpio differs from the MinGW version
+          also provided by the MinGW/MSYS project.  In addition to requiring
+          the MSYS runtime library, this implementation supports mtree data
+          and understands MSYS's "unix" style pathnames.  It also supports
+          archives that contain symbolic links by converting them to
+          equivalent hardlink (or recursive copy) representations (see
+          below).  The MinGW implementation does not support archives with
+          symbolic links.  It does, however, operate properly on systems
+          where MSYS is not installed.  Both msys-bsdcpio and mingw32-bsdcpio
+          depend on additional DLLs such as msys-libarchive (mingw32-liblzma),
+          etc.
+        </paragraph>
+        <paragraph>This msys implementation has some unique behaviors with
+          regards to symbolic and hard links.  When creating archives on an
+          MSYS platform, there are no symbolic links; hardlinks are archived
+          as on unix, without requiring duplicate storage (unless the
+          --hard-dereference option is used).  When extracing archives on
+          an MSYS platform, if the archive contains hardlinks then they are
+          reproduced on the local file system provided the Win32 filesystem
+          supports hardlinks (e.g. NTFS. On FAT, a duplicate copy of the
+          file is created).  If the archive contains symbolic links where
+          the target is a file contained within the archive itself, then
+          those links are reproduced as if they were hardlinks, as described
+          above.  "Dangling" symbolic links are not supported.  Symbolic
+          links to directories within the archive are "supported", by
+          creating a recursive copy of the target directory, where the
+          contents of the directory are treated as hardlinks as described
+          above.
+        </paragraph>
+        <paragraph>This msys implementation ignores ownership data and
+          permission bits; all extracted files are created as if owned
+          by the current user, regardless of the current user's root
+          (Administrator) status.  All archived files are added to the
+          archive with "default" permission and as if owned by the current
+          user.
+        </paragraph>
+        <paragraph>libarchive is a programming library that can create and
+          read several different streaming archive formats, including most
+          popular tar variants and several cpio formats, mtree, and ar
+          archives.  It can also read shar, zip, jar, and xar archives, as
+          well as ISO9660 CDROM images.  It automatically handles gzip,
+          bzip2, compress, xz, and lzma compression and decompression, as
+          well as uudecode decompression.  The bsdcpio program is an
+          implementation of cpio(1) that is built on top of libarchive.
+        </paragraph>
+        <paragraph>The msys-bsdcpio package provides an implementation
+          of cpio(1) based on libarchive, while the associated msys-bsdtar
+          package provides a similar implementation of tar(1).  The
+          associated msys-libarchive package provides the runtime
+          library, development files, and documentation.
+        </paragraph>
+      </description>
+
+      <licence tarname="libarchive-%-msys-%-lic.tar.%" />
+      <source tarname="libarchive-%-msys-%-src.tar.%" />
+
+      <component class="bin">
+        <!-- Every MSYS package requires msys-core-bin.  This dependency
+          is not explicitly stated here; rather, it is implicitly satisfied
+          as a prerequisite of the matching DLL for this package itself,
+          which is specified for each of the following releases.
+          -->
+        <release tarname="bsdcpio-2.8.3-1-msys-1.0.13-bin.tar.lzma" >
+          <requires eq="msys-libarchive-%-msys-%-dll-2.tar" />
+        </release>
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/msys-libiconv.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/msys-libiconv.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/msys-libiconv.xml	(revision 1046)
@@ -0,0 +1,112 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://mingw.org" issue="2012073100">
+
+  <!-- File: msys-libiconv.xml -->
+
+  <package-collection subsystem="msys">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="msys-libiconv">
+      <affiliate group="MSYS System Builder" />
+      <description lang="en" title="GNU libraries and utilities for character set conversion" >
+        <paragraph>This is not the libiconv you are looking for.</paragraph>
+        <paragraph>GNU libiconv provides an implementation of the iconv()
+          function which is used to convert between various character
+          representations for different locales.  This function is provided
+          for use on systems which don't already have iconv(), or whose
+          implementation cannot convert from/to Unicode. This package also
+          provides a tool, iconv(1), which can be used to convert character
+          sets from the command line. The associated libcharset provides a
+          mechanism to determine the canonical character set name of the
+          current locale.
+        </paragraph>
+        <paragraph>This msys port of libiconv has been modified
+          specifically for the MSYS System Builder environment; that is,
+          it is intended to be used only when producing binary packages
+          for the MSYS subsystem.  If you intend to produce executables
+          for the native "mingw32" subsystem which require character
+          set conversion (that is, applications that should work on
+          Microsoft Windows installations without the MSYS dll), then you
+          should install the mingw32-libiconv-* package(s) instead.
+        </paragraph>
+      </description>
+
+      <source tarname="libiconv-%-msys-%-src.tar.%" />
+      <licence tarname="libiconv-%-msys-%-lic.tar.%" />
+
+      <component class="bin">
+        <release tarname="libiconv-1.13.1-2-msys-1.0.13-bin.tar.lzma">
+          <requires eq="msys-libintl-*-msys-*-dll-8.tar" />
+          <requires eq="msys-libiconv-%-msys-%-dll-2.tar" />
+        </release>
+        <release tarname="libiconv-1.14-1-msys-1.0.17-bin.tar.lzma">
+          <requires ge="msys-libintl-0.18.1.1-1-msys-*-dll-8.tar" />
+          <requires eq="msys-libiconv-%-msys-%-dll-2.tar" />
+        </release>
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+      </component>
+
+      <component class="doc">
+        <release tarname="libiconv-1.13.1-2-msys-1.0.13-doc.tar.lzma" />
+        <release tarname="libiconv-1.14-1-msys-1.0.17-doc.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="libiconv-1.13.1-2-msys-1.0.13-lic.tar.lzma" />
+        <release tarname="libiconv-1.14-1-msys-1.0.17-lic.tar.lzma" />
+      </component>
+
+      <component class="dev">
+        <release tarname="libiconv-1.13.1-2-msys-1.0.13-dev.tar.lzma" >
+          <requires eq="msys-libiconv-%-msys-%-dll-2.tar" />
+        </release>
+        <release tarname="libiconv-1.14-1-msys-1.0.17-dev.tar.lzma" >
+          <requires eq="msys-libiconv-%-msys-%-dll-2.tar" />
+        </release>
+      </component>
+
+      <component class="dll">
+        <release tarname="libiconv-1.13.1-2-msys-1.0.13-dll-2.tar.lzma" />
+        <release tarname="libiconv-1.14-1-msys-1.0.17-dll-2.tar.lzma" />
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+      </component>
+    </package>
+
+    <package name="msys-libcharset">
+      <affiliate group="MSYS System Builder" />
+      <description lang="en" title="GNU libraries and utilities for character set conversion" >
+        <paragraph>This is not the libcharset you are looking for.</paragraph>
+        <paragraph>GNU libiconv provides an implementation of the iconv()
+          function which is used to convert between various character
+          representations for different locales.  This function is provided
+          for use on systems which don't already have iconv(), or whose
+          implementation cannot convert from/to Unicode. This package also
+          provides a tool, iconv(1), which can be used to convert character
+          sets from the command line. The associated libcharset provides a
+          mechanism to determine the canonical character set name of the
+          current locale.
+        </paragraph>
+        <paragraph>This msys port of libiconv has been modified
+          specifically for the MSYS System Builder environment; that is,
+          it is intended to be used only when producing binary packages
+          for the MSYS subsystem.  If you intend to produce executables
+          for the native "mingw32" subsystem which require character
+          set conversion (that is, applications that should work on
+          Microsoft Windows installations without the MSYS dll), then you
+          should install the mingw32-libiconv-* package(s) instead.
+        </paragraph>
+      </description>
+
+      <source tarname="libiconv-%-msys-%-src.tar.%" />
+      <licence tarname="libiconv-%-msys-%-lic.tar.%" />
+
+      <component class="dll">
+        <release tarname="libcharset-1.13.1-2-msys-1.0.13-dll-1.tar.lzma" />
+        <release tarname="libcharset-1.14-1-msys-1.0.17-dll-1.tar.lzma" />
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/msys-libtool.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/msys-libtool.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/msys-libtool.xml	(revision 1046)
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://mingw.org" issue="2012073100">
+
+  <!-- File: msys-libtool.xml ~~ mingw-get package description libtool (msys) -->
+
+  <package-collection subsystem="msys">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="msys-libtool">
+      <affiliate group="MSYS System Builder" />
+      <description lang="en" title="A shared library generation tool" >
+        <paragraph>This is not the libtool you are looking for.</paragraph>
+        <paragraph>GNU libtool is a generic library support package.  Libtool
+          hides the complexity of using shared libraries behind a consistent,
+          portable interface.  Libtool requires the use of Autoconf.
+        </paragraph>
+        <paragraph>This msys port of libtool has been modified specifically for
+          the MSYS System Builder (msys-dvlpr) environment; that is, it is
+          intended to be used only when producing binary packages for the MSYS
+          subsystem.  If you intend to produce executables for the native
+          "mingw32" subsystem (that is, applications that should work on
+          Microsoft Windows installations without the MSYS dll), then you should
+          install the mingw32-libtool-* package instead.
+        </paragraph>
+        <paragraph>msys-libtool provides the development files and utilities for
+          managing the creation and use of shared libraries in a platform
+          independent manner.  The associated msys-libltdl package provides the
+          runtime library and development files for using a pre-built version of
+          libtool's dlopen replacement library.
+        </paragraph>
+      </description>
+
+      <licence tarname="libtool-%-msys-%-lic.tar.%" />
+      <source tarname="libtool-%-msys-%-src.tar.%" />
+
+      <component class="bin">
+        <requires eq="msys-autoconf-*-msys-*-bin.tar" />
+        <requires eq="msys-automake-*-msys-*-bin.tar" />
+        <requires eq="msys-bash-*-msys-*-bin.tar" />
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+        <requires eq="msys-coreutils-*-msys-*-bin.tar" />
+        <requires eq="msys-file-*-msys-*-bin.tar" />
+        <requires eq="msys-m4-*-msys-*-bin.tar" />
+        <requires eq="msys-sed-*-msys-*-bin.tar" />
+        <requires eq="msys-texinfo-*-msys-*-bin.tar" />
+        <!-- libtool doesn't actually depend on its own runtime library -->
+        <release tarname="libtool-2.2.7a-2-msys-1.0.13-bin.tar.lzma" />
+        <release tarname="libtool-2.4-1-msys-1.0.15-bin.tar.lzma" />
+      </component>
+
+      <component class="doc">
+        <release tarname="libtool-2.2.7a-2-msys-1.0.13-doc.tar.lzma" />
+        <release tarname="libtool-2.4-1-msys-1.0.15-doc.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="libtool-2.2.7a-2-msys-1.0.13-lic.tar.lzma" />
+        <release tarname="libtool-2.4-1-msys-1.0.15-lic.tar.lzma" />
+      </component>
+    </package>
+
+    <package name="msys-libltdl">
+      <affiliate group="MSYS System Builder" />
+      <description lang="en" title="A portable dlopen replacement" >
+        <paragraph>This is not the libtool you are looking for.</paragraph>
+        <paragraph>GNU libtool is a generic library support package.  Libtool
+          hides the complexity of using shared libraries behind a consistent,
+          portable interface.  Libtool requires the use of Autoconf.
+        </paragraph>
+        <paragraph>This msys port of libtool has been modified specifically for
+          the MSYS System Builder (msys-dvlpr) environment; that is, it is
+          intended to be used only when producing binary packages for the MSYS
+          subsystem.  If you intend to produce executables for the native
+          "mingw32" subsystem (that is, applications that should work on
+          Microsoft Windows installations without the MSYS dll), then you should
+          install the mingw32-libtool-* package instead.
+        </paragraph>
+        <paragraph>msys-libltdl provides the runtime library and development
+          files for using a pre-built version of libtool's dlopen replacement
+          library.  The associated msys-libtool package provides the development
+          files and utilities for managing the creation and use of shared
+          libraries in a platform independent manner.
+        </paragraph>
+      </description>
+
+      <licence tarname="libtool-%-msys-%-lic.tar.%" />
+      <source tarname="libtool-%-msys-%-src.tar.%" />
+
+      <component class="dll">
+        <release tarname="libltdl-2.2.7a-2-msys-1.0.13-dll-7.tar.lzma" />
+        <release tarname="libltdl-2.4-1-msys-1.0.15-dll-7.tar.lzma" />
+
+        <!-- Every MSYS DLL package requires msys-core-bin -->
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+      </component>
+
+      <component class="dev">
+        <requires eq="msys-libtool-%-msys-%-bin.tar" />
+        <release tarname="libltdl-2.2.7a-2-msys-1.0.13-dev.tar.lzma" >
+          <requires eq="msys-libltdl-%-msys-%-dll-7.tar" />
+        </release>
+        <release tarname="libltdl-2.4-1-msys-1.0.15-dev.tar.lzma" >
+          <requires eq="msys-libltdl-%-msys-%-dll-7.tar" />
+        </release>
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/msys-libxml2.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/msys-libxml2.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/msys-libxml2.xml	(revision 1046)
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://mingw.org" issue="2012073100">
+
+  <!-- File: msys-libxml2.xml -->
+
+  <package-collection subsystem="msys">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="msys-libxml2">
+      <description lang="en" title="An XML parser and toolkit" >
+        <paragraph>Libxml2 is the XML C parser and toolkit developed for
+          the Gnome project (but usable outside of the Gnome platform).  It
+          is free software available under the MIT License.  XML itself is a
+          metalanguage to design markup languages, i.e. text language where
+          semantic and structure are added to the content using extra
+          'markup' information enclosed between angle brackets.  HTML is the
+          most well-known markup language.  Though the library is written in
+          C, a variety of language bindings make it available in other
+          environments.
+        </paragraph>
+      </description>
+
+      <licence tarname="libxml2-%-msys-%-lic.tar.%" />
+      <source tarname="libxml2-%-msys-%-src.tar.%" />
+
+      <component class="bin">
+        <!-- Every MSYS package requires msys-core-bin.  This dependency
+          is not explicitly stated here; rather, it is implicitly satisfied
+          as a prerequisite of the matching DLL for this package itself,
+          which is specified for each of the following releases.
+          -->
+        <release tarname="libxml2-2.7.6-1-msys-1.0.13-bin.tar.lzma" >
+          <requires eq="msys-libxml2-%-msys-%-dll-2.tar" />
+        </release>
+      </component>
+
+      <component class="doc">
+        <release tarname="libxml2-2.7.6-1-msys-1.0.13-doc.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="libxml2-2.7.6-1-msys-1.0.13-lic.tar.lzma" />
+      </component>
+
+      <component class="dll">
+        <release tarname="libxml2-2.7.6-1-msys-1.0.13-dll-2.tar.lzma" >
+          <requires eq="msys-zlib-*-msys-*-dll.tar" />
+          <requires eq="msys-libiconv-*-msys-*-dll-2.tar" />
+        </release>
+
+        <!-- Every MSYS DLL package requires msys-core-bin -->
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+      </component>
+
+      <component class="dev">
+        <release tarname="libxml2-2.7.6-1-msys-1.0.13-dev.tar.lzma" >
+          <requires eq="msys-libxml2-%-msys-%-dll-2.tar" />
+        </release>
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/msys-lndir.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/msys-lndir.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/msys-lndir.xml	(revision 1046)
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://mingw.org" issue="2012073100">
+
+  <!-- File: msys-lndir.xml -->
+
+  <package-collection subsystem="msys">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="msys-lndir">
+      <affiliate group="MinGW Developer Toolkit" />
+      <description lang="en" title="Xorg recursive directory symlink tool">
+        <paragraph>The lndir program makes a shadow copy of a directory
+          tree, except that the shadow is not populated with real files but
+          instead with symbolic links (*) pointing at the real files in the
+          original directory tree.  This is usually useful building
+          applications outside their source directory, when the build
+          machinery does not directly support that behavior.  You can build
+          in the shadow tree, and the object files will be in the shadow
+          directory, while the source files in the shadow directory are just
+          symlinks (*) to the real files.
+        </paragraph>
+        <paragraph>(*) On MSYS, instead of symbolic links the shadow tree is
+          populated with hardlinks to the original files whenever possible,
+          and with copies if not (e.g. the original and destination directories
+          are on different devices, or the file system is not NTFS).
+        </paragraph>
+      </description>
+
+      <licence tarname="lndir-%-msys-%-lic.tar.%" />
+      <source tarname="lndir-%-msys-%-src.tar.%" />
+
+      <component class="bin">
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+        <release tarname="lndir-1.0.1-2-msys-1.0.13-bin.tar.lzma" />
+      </component>
+
+      <component class="doc">
+        <release tarname="lndir-1.0.1-2-msys-1.0.13-doc.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="lndir-1.0.1-2-msys-1.0.13-lic.tar.lzma" />
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/msys-lpr-enhanced.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/msys-lpr-enhanced.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/msys-lpr-enhanced.xml	(revision 1046)
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://mingw.org" issue="2012073100">
+
+  <!-- File: msys-lpr-enhanced.xml -->
+
+  <package-collection subsystem="msys">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="msys-lpr-enhanced">
+      <description lang="en" title="A full-featured implementation of unix lpr for MSYS" >
+        <paragraph>lpr-enhanced is an implementation of the unix lpr system
+          for MSYS, and unlike lpr-basic (msys-cygutils) supports many of
+          the advanced capabilities of a true Unix implementation.  These
+          features include format-dependent filters to pre-process data
+          before spooling to the printer.  The filters may includes nroff,
+          ditroff, or TeX pre-processors, among others.  It supports
+          /etc/printcap-style configuration, and honors both BSD options
+          (when invoked as 'lpr') and SysV options (when invoked as 'lp').
+          A sample /etc/printcap file is in /var/spool/lp/config/example,
+          but it MUST be copied to /var/spool/lp/config/.active or to
+          /etc/printcap and customized for your environment -- just like
+          on unix.
+        </paragraph>
+        <paragraph>The lpr-basic executable from the msys-cygutils package
+          (see below) is installed, by default, as both /bin/lpr.exe and
+          /bin/lpr-basic.exe.  To use lpr-enhanced, you should manually
+          remove /bin/lpr.exe, and manually copy /bin/lpr-enhanced to
+          /bin/lpr (and/or /bin/lp).  You may need to repeat this step each
+          time msys-cygutils is (re)installed or updated.
+        </paragraph>
+        <paragraph>A note about lpr-basic: lpr-basic spools a file to the
+          specified printer device.  MSYS provides two separate
+          implementations: lpr-basic.exe and lpr-enhanced.  lpr-basic.exe is
+          suitable for most simple printing needs; it can send "raw" data
+          to any installed Windows printer.  This is most useful for raw
+          text, for sending plain PostScript files to PostScript-compatible
+          printers, and for re-sending .prn files generated using Windows'
+          own print-to-file capabilities to the specific printer for which
+          the .prn file was generated.  lpr-enhanced is more capable, more
+          unix-like, and more difficult to configure.  Use lpr-enhanced if
+          you need the additional flexibility it provides, or are more
+          comfortable with traditional unix lpr and/or lp semantics.
+        </paragraph>
+      </description>
+
+      <licence tarname="lpr-enhanced-%-msys-%-lic.tar.%" />
+      <source tarname="lpr-enhanced-%-msys-%-src.tar.%" />
+
+      <component class="bin">
+        <!-- msys-coreutils-ext provides /bin/pr, which is used by
+             lpr-enhanced and the example printcap configuration.
+             msys-cygutils-dos2unix-bin provides d2u, which is used by the
+             example printcap configuration. -->
+        <requires eq="msys-bash-*-msys-*-bin.tar" />
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+        <requires eq="msys-coreutils-*-msys-*-bin.tar" />
+        <requires eq="msys-coreutils-*-msys-*-ext.tar" />
+        <requires eq="msys-cygutils-dos2unix-*-msys-*-bin.tar" />
+        <requires eq="msys-grep-*-msys-*-bin.tar" />
+        <requires eq="msys-sed-*-msys-*-bin.tar" />
+        <release tarname="lpr-enhanced-1.0.2-1-msys-1.0.11-bin.tar.lzma" />
+      </component>
+
+      <component class="doc">
+        <release tarname="lpr-enhanced-1.0.2-1-msys-1.0.11-doc.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="lpr-enhanced-1.0.2-1-msys-1.0.11-lic.tar.lzma" />
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/msys-m4.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/msys-m4.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/msys-m4.xml	(revision 1046)
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://mingw.org" issue="2013022400">
+
+  <!-- File: msys-m4.xml -->
+
+  <package-collection subsystem="msys">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="msys-m4">
+      <affiliate group="MSYS Base System" />
+      <description lang="en" title="GNU Macro Processor" >
+        <paragraph>m4 is a macro processor, in the sense that it copies
+          its input to the output, expanding macros as it goes.  Macros
+          are either builtin or user-defined, and can take any number of
+          arguments.  Besides just doing macro expansion, `m4' has builtin
+          functions for including named files, running shell commands,
+          doing integer arithmetic, manipulating text in various ways,
+          performing recursion, etc....  `m4' can be used either as a
+          front-end to a compiler, or as a macro processor in its own
+          right. Its primary use is by autoconf, to generate configure
+          scripts from a library of m4 macros.
+        </paragraph>
+      </description>
+
+      <source tarname="m4-%-msys-%-src.tar.%" />
+      <licence tarname="m4-%-msys-%-lic.tar.%" />
+
+      <component class="bin">
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+        <release tarname="m4-1.4.16-2-msys-1.0.17-bin.tar.lzma" />
+        <release tarname="m4-1.4.14-1-msys-1.0.13-bin.tar.lzma" />
+      </component>
+
+      <component class="doc">
+        <release tarname="m4-1.4.16-2-msys-1.0.17-doc.tar.lzma" />
+        <release tarname="m4-1.4.14-1-msys-1.0.13-doc.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="m4-1.4.16-2-msys-1.0.17-lic.tar.lzma" />
+        <release tarname="m4-1.4.14-1-msys-1.0.13-lic.tar.lzma" />
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/msys-make.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/msys-make.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/msys-make.xml	(revision 1046)
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://mingw.org" issue="2012073100">
+
+  <!-- File: msys-make.xml -->
+
+  <package-collection subsystem="msys">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="msys-make">
+      <affiliate group="MSYS Base System" />
+      <description lang="en" title="GNU make utility to maintain groups of programs" >
+        <paragraph>The `make' utility automatically determines which pieces
+          of a large program need to be recompiled, and issues commands to
+          recompile them. GNU `make' was implemented by Richard Stallman
+          and Roland McGrath.  Development since Version 3.76 has been
+          handled by Paul D. Smith.
+        </paragraph>
+        <paragraph>This is a case-preserving version of GNU make. While the
+          win32 file systems encountered when using MSYS software are
+          invariably case-INsensitive, some users prefer a GNU `make' that
+          itself is case-sensitive -- this version of make is a compromise
+          which exploits the case-preserving aspect of win32 file systems.
+          It considers *all* targets as fundamentally case-insensitive, but
+          first attempts to resolve them as case-sensitive, falling back to
+          the case-insensitive behaviour only if the case-sensitive match
+          remains unresolved.
+        </paragraph>
+        <paragraph>The MinGW/MSYS project provides two versions of make:
+          this msys-make version acts generally more as make is intended
+          to operate, and gives fewer headaches during execution. However,
+          msys-make requires the MSYS dll.  The other version, mingw32-make,
+          does not require the MSYS dll, but because of the lack of POSIX
+          support in "pure" Win32 has a number of known shortcomings in
+          comparison.
+        </paragraph>
+      </description>
+
+      <source tarname="make-%-msys-%-src.tar.%" />
+      <licence tarname="make-%-msys-%-lic.tar.%" />
+
+      <component class="bin">
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+
+        <release tarname="make-3.81-3-msys-1.0.13-bin.tar.lzma" >
+          <requires eq="msys-libintl-*-msys-*-dll-8.tar" />
+        </release>
+      </component>
+
+      <component class="lang">
+        <release tarname="make-3.81-3-msys-1.0.13-lang.tar.lzma" />
+      </component>
+
+      <component class="doc">
+        <release tarname="make-3.81-3-msys-1.0.13-doc.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="make-3.81-3-msys-1.0.13-lic.tar.lzma" />
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/msys-man.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/msys-man.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/msys-man.xml	(revision 1046)
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://mingw.org" issue="2012073100">
+
+  <!-- File: msys-xz.xml -->
+
+  <package-collection subsystem="msys">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="msys-man">
+      <description lang="en" title="formats and displays manual pages" >
+        <paragraph>Formats and displays on-line manual pages.  Note that
+          most MinGW/MSYS packages do not, by default, install the man
+          pages; generally these documents are provided in a -doc or
+          -man subpackage.
+        </paragraph>
+      </description>
+
+      <licence tarname="man-%-msys-%-lic.tar.%" />
+      <source tarname="man-%-msys-%-src.tar.%" />
+
+      <component class="bin">
+        <requires eq="msys-bash-*-msys-*-bin.tar" />
+        <requires eq="msys-bzip2-*-msys-*-bin.tar" />
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+        <requires eq="msys-coreutils-*-msys-*-bin.tar" />
+        <requires eq="msys-groff-*-msys-*-bin.tar" />
+        <requires eq="msys-gzip-*-msys-*-bin.tar" />
+        <requires eq="msys-less-*-msys-*-bin.tar" />
+        <requires eq="msys-xz-*-msys-*-bin.tar" />
+        <!-- deliberately not including perl, which is required only
+        by `manlint' -->
+        <release tarname="man-1.6f-2-msys-1.0.13-bin.tar.lzma" />
+      </component>
+
+      <component class="lang">
+        <release tarname="man-1.6f-2-msys-1.0.13-lang.tar.lzma" />
+      </component>
+
+      <component class="doc">
+        <release tarname="man-1.6f-2-msys-1.0.13-doc.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="man-1.6f-2-msys-1.0.13-lic.tar.lzma" />
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/msys-minires.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/msys-minires.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/msys-minires.xml	(revision 1046)
@@ -0,0 +1,103 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://mingw.org" issue="2012073100">
+
+  <!-- File: msys-minires.xml -->
+
+  <package-collection subsystem="msys">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="msys-minires">
+      <description lang="en" title="Simple win32 DNS client" >
+        <paragraph>minires provides a simple implementation of resolver
+          functions commonly used in clients, adapted to the MSYS
+          environment.
+        </paragraph>
+        <paragraph>On Windows 2000 and above, the query functions
+          (like res_query) are implemented by calling the Win32 API
+          function DnsQuery and translating the result to wire format --
+          if the file /etc/resolv.conf (c:\msys\1.0\etc\resolv.conf) is
+          not readable or contains an options line with the token "osquery".
+        </paragraph>
+        <paragraph>Otherwise, minires works as a simple synchronous non-
+          caching stub resolver.  Instead of querying a local bind daemon,
+          this implementation attempts to reach predefined name servers.
+          Their addresses are obtained directly from Windows (except on
+          Win95 with DHCP), from /etc/resolv.conf, or from the
+          LOCALDOMAIN environment variable.
+        </paragraph>
+        <paragraph>The msys-minires package provides the documentation
+          for the minires library and test/debug applications, while the
+          associated msys-libminires package provides the runtime library
+          and related development files.
+        </paragraph>
+      </description>
+
+      <licence tarname="minires-%-msys-%-lic.tar.%" />
+      <source tarname="minires-%-msys-%-src.tar.%" />
+
+      <component class="bin">
+        <!-- Every MSYS package requires msys-core-bin.  This dependency
+          is not explicitly stated here; rather, it is implicitly satisfied
+          as a prerequisite of the matching DLL for this package itself,
+          which is specified for each of the following releases.
+          -->
+        <release tarname="minires-1.02_1-2-msys-1.0.13-bin.tar.lzma" >
+          <requires eq="msys-libminires-%-msys-%-dll.tar" />
+        </release>
+      </component>
+
+      <component class="doc">
+        <release tarname="minires-1.02_1-2-msys-1.0.13-doc.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="minires-1.02_1-2-msys-1.0.13-lic.tar.lzma" />
+      </component>
+    </package>
+
+    <package name="msys-libminires">
+      <description lang="en" title="Simple win32 DNS client" >
+        <paragraph>minires provides a simple implementation of resolver
+          functions commonly used in clients, adapted to the MSYS
+          environment.
+        </paragraph>
+        <paragraph>On Windows 2000 and above, the query functions
+          (like res_query) are implemented by calling the Win32 API
+          function DnsQuery and translating the result to wire format --
+          if the file /etc/resolv.conf (c:\msys\1.0\etc\resolv.conf) is
+          not readable or contains an options line with the token "osquery".
+        </paragraph>
+        <paragraph>Otherwise, minires works as a simple synchronous non-
+          caching stub resolver.  Instead of querying a local bind daemon,
+          this implementation attempts to reach predefined name servers.
+          Their addresses are obtained directly from Windows (except on
+          Win95 with DHCP), from /etc/resolv.conf, or from the
+          LOCALDOMAIN environment variable.
+        </paragraph>
+        <paragraph>The msys-libminires package provides the runtime library
+          and related development files, while the associated msys-minires
+          minires package provides the documentation and test/debug
+          applications.
+        </paragraph>
+      </description>
+
+      <licence tarname="minires-%-msys-%-lic.tar.%" />
+      <source tarname="minires-%-msys-%-src.tar.%" />
+
+      <component class="dll">
+        <!-- Every MSYS DLL package requires msys-core-bin -->
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+        <release tarname="libminires-1.02_1-2-msys-1.0.13-dll.tar.lzma" />
+      </component>
+
+      <component class="dev">
+        <release tarname="libminires-1.02_1-2-msys-1.0.13-dev.tar.lzma" >
+          <requires eq="msys-libminires-%-msys-%-dll.tar" />
+        </release>
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
+
Index: Daodan/MinGW/var/lib/mingw-get/data/msys-mintty.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/msys-mintty.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/msys-mintty.xml	(revision 1046)
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://mingw.org" issue="2012073100">
+
+  <!-- File: msys-mintty.xml -->
+
+  <package-collection subsystem="msys">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="msys-mintty" alias="mintty">
+      <description lang="en" title="terminal emulator" >
+        <paragraph>Mintty is a terminal emulator for Cygwin and Cygwin
+          derivatives such as MSYS.
+        </paragraph>
+        <paragraph>To launch MSYS in a mintty window, create a shortcut
+          to C:\msys\1.0\msys.bat, with the argument "--mintty". Some
+          people find mintty a more accomodating terminal than cmd.exe, since
+          it may be resized at will and has a larger scrollback buffer.
+          However, mintty sometimes does not interoperate well with native
+          applications (such as MinGW gcc), so the default cmd.exe console
+          is recommended for most users.
+        </paragraph>
+      </description>
+
+      <licence tarname="mintty-%-msys-%-lic.tar.%" />
+      <source tarname="mintty-%-msys-%-src.tar.%" />
+
+      <component class="bin">
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+        <release tarname="mintty-1.0.3-1-msys-1.0.17-bin.tar.lzma" />
+        <release tarname="mintty-1.0.2-1-msys-1.0.17-bin.tar.lzma" />
+        <release tarname="mintty-1.0.1-1-msys-1.0.16-bin.tar.lzma" />
+        <release tarname="mintty-0.9.9-1-msys-1.0.16-bin.tar.lzma" />
+        <release tarname="mintty-0.9.8-1-msys-1.0.16-bin.tar.lzma" />
+        <release tarname="mintty-0.9.7-1-msys-1.0.16-bin.tar.lzma" />
+        <release tarname="mintty-0.9.6-1-msys-1.0.16-bin.tar.lzma" />
+        <release tarname="mintty-0.9.5-1-msys-1.0.16-bin.tar.lzma" />
+        <release tarname="mintty-0.9.4-1-msys-1.0.16-bin.tar.lzma" />
+        <release tarname="mintty-0.9.3-1-msys-1.0.16-bin.tar.lzma" />
+        <release tarname="mintty-0.9.2-1-msys-1.0.16-bin.tar.lzma" />
+        <release tarname="mintty-0.9.1-1-msys-1.0.16-bin.tar.lzma" />
+      </component>
+
+      <component class="doc">
+        <release tarname="mintty-1.0.3-1-msys-1.0.17-doc.tar.lzma" />
+        <release tarname="mintty-1.0.2-1-msys-1.0.17-doc.tar.lzma" />
+        <release tarname="mintty-1.0.1-1-msys-1.0.16-doc.tar.lzma" />
+        <release tarname="mintty-0.9.9-1-msys-1.0.16-doc.tar.lzma" />
+        <release tarname="mintty-0.9.8-1-msys-1.0.16-doc.tar.lzma" />
+        <release tarname="mintty-0.9.7-1-msys-1.0.16-doc.tar.lzma" />
+        <release tarname="mintty-0.9.6-1-msys-1.0.16-doc.tar.lzma" />
+        <release tarname="mintty-0.9.5-1-msys-1.0.16-doc.tar.lzma" />
+        <release tarname="mintty-0.9.4-1-msys-1.0.16-doc.tar.lzma" />
+        <release tarname="mintty-0.9.3-1-msys-1.0.16-doc.tar.lzma" />
+        <release tarname="mintty-0.9.2-1-msys-1.0.16-doc.tar.lzma" />
+        <release tarname="mintty-0.9.1-1-msys-1.0.16-doc.tar.lzma" />
+      </component>
+
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/msys-mksh.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/msys-mksh.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/msys-mksh.xml	(revision 1046)
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://mingw.org" issue="2011112700">
+
+  <!-- File: msys-mksh.xml -->
+
+  <package-collection subsystem="msys">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="msys-mksh" alias="mksh">
+      <affiliate group="MinGW Developer Toolkit" />
+      <description lang="en" title="mksh: The MirBSD Korn Shell" >
+        <paragraph>The MirBSD Korn Shell is an actively developed free
+          implementation of the Korn Shell programming language and a successor
+          to the Public Domain Korn Shell (pdksh).
+        </paragraph>
+      </description>
+
+      <source tarname="mksh-%-msys-%-src.tar.%" />
+      <licence tarname="mksh-%-msys-%-lic.tar.%" />
+
+      <component class="bin">
+        <release tarname="mksh-40.0.0c-1-msys-1.0.17-bin.tar.lzma" />
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+        <requires eq="msys-coreutils-*-msys-*-bin.tar" />
+      </component>
+
+      <component class="doc">
+        <release tarname="mksh-40.0.0c-1-msys-1.0.17-doc.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="mksh-40.0.0c-1-msys-1.0.17-lic.tar.lzma" />
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/msys-mktemp.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/msys-mktemp.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/msys-mktemp.xml	(revision 1046)
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://mingw.org" issue="2012073100">
+
+  <!-- File: msys-mktemp.xml -->
+
+  <package-collection subsystem="msys">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="msys-mktemp">
+      <affiliate group="MinGW Developer Toolkit" />
+      <description lang="en" title="create a temporary file or directory" >
+        <paragraph>The mktemp utility takes the given filename template and
+          overwrites a portion of it to create a unique filename.  The
+          template may be any filename with some number of `Xs' appended
+          to it, for example /tmp/tfile.XXXXXXXXXX.  It is used by scripts
+          to safely generate temporary files and directories.
+        </paragraph>
+      </description>
+
+      <licence tarname="mktemp-%-msys-%-lic.tar.%" />
+      <source tarname="mktemp-%-msys-%-src.tar.%" />
+
+      <component class="bin">
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+        <release tarname="mktemp-1.6-2-msys-1.0.13-bin.tar.lzma" />
+      </component>
+
+      <component class="doc">
+        <release tarname="mktemp-1.6-2-msys-1.0.13-doc.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="mktemp-1.6-2-msys-1.0.13-lic.tar.lzma" />
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/msys-ncurses.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/msys-ncurses.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/msys-ncurses.xml	(revision 1046)
@@ -0,0 +1,92 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://mingw.org" issue="2016031600">
+
+  <!-- File: msys-ncurses.xml -->
+
+  <package-collection subsystem="msys">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="msys-ncurses">
+      <description lang="en" title="A free software implementation of the SysV4.0 curses terminal-handling library and tools">
+        <paragraph>
+          The  ncurses  (new  curses)  library  is  a free software emulation of
+          curses  in  System  V  Release 4.0, and more. It uses terminfo format,
+          supports  pads  and color and multiple highlights and forms characters
+          and   function-key   mapping,   and  has  all  the  other  SYSV-curses
+          enhancements over BSD curses.
+        </paragraph>
+        <paragraph>The msys-ncurses package provides the documentation and
+          programs for the ncurses library.  The associated msys-libncurses
+          package provides the runtime library and related development files.
+        </paragraph>
+      </description>
+
+      <licence tarname="ncurses-%-msys-%-lic.tar.%" />
+      <source tarname="ncurses-%-msys-%-src.tar.%" />
+
+      <component class="bin">
+        <release tarname="ncurses-6.0-2-msys-1.0.18-bin.tar.lzma" />
+      </component>
+
+      <component class="doc">
+        <release tarname="ncurses-6.0-2-msys-1.0.18-doc.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="ncurses-6.0-2-msys-1.0.18-lic.tar.lzma" />
+      </component>
+    </package>
+
+    <package name="msys-libncurses">
+
+      <description lang="en" title="A free software implementation of the SysV4.0 curses terminal-handling library and tools">
+        <paragraph>
+          The  ncurses  (new  curses)  library  is  a free software emulation of
+          curses  in  System  V  Release 4.0, and more. It uses terminfo format,
+          supports  pads  and color and multiple highlights and forms characters
+          and   function-key   mapping,   and  has  all  the  other  SYSV-curses
+          enhancements over BSD curses.
+        </paragraph>
+        <paragraph>The msys-libncurses package provides the runtime library
+          and related development files for ncurses.  The associated
+          msys-ncurses package provides the documentation and programs
+          related to the library.
+        </paragraph>
+      </description>
+
+      <licence tarname="ncurses-%-msys-%-lic.tar.%" />
+      <source tarname="ncurses-%-msys-%-src.tar.%" />
+
+      <component class="dev">
+        <release tarname="libncurses-6.0-2-msys-1.0.18-dev.tar.lzma" />
+      </component>
+
+      <component class="dll">
+        <release tarname="libncurses-6.0-2-msys-1.0.18-dll-6.tar.lzma" />
+      </component>
+    </package>
+
+    <package name="msys-terminfo">
+
+      <description lang="en" title="Terminal capability data base">
+        <paragraph>
+         Terminfo  is  a  data  base  describing terminals, used by
+         screen-oriented programs  such  as  nvi(1),  rogue(1)  and
+         libraries  such  as curses(3x).  Terminfo describes termi-
+         nals by giving a set of capabilities which they  have,  by
+         specifying how to perform screen operations, and by speci-
+         fying padding requirements and  initialization  sequences.
+        </paragraph>
+      </description>
+
+      <licence tarname="ncurses-%-msys-%-lic.tar.%" />
+      <source tarname="ncurses-%-msys-%-src.tar.%" />
+
+      <component class="data">
+        <release tarname="terminfo-6.0-2-msys-1.0.18-data.tar.lzma" />
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/msys-openssh.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/msys-openssh.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/msys-openssh.xml	(revision 1046)
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://mingw.org" issue="2012073100">
+
+  <!-- File: msys-openssh.xml -->
+
+  <package-collection subsystem="msys">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="msys-openssh">
+      <affiliate group="MinGW Developer Toolkit" />
+      <description lang="en" title="Secure Networking Clients" >
+        <paragraph>openssh is a FREE version of the SSH connectivity tools
+          that technical users of the Internet rely on.  Users of telnet,
+          rlogin, and ftp may not realize that their password is transmitted
+          across the Internet unencrypted, but it is.  OpenSSH encrypts all
+          traffic (including passwords) to effectively eliminate
+          eavesdropping, connection hijacking, and other attacks.
+          Additionally, OpenSSH provides secure tunneling capabilities and
+          several authentication methods, and supports all SSH protocol
+          versions.
+        </paragraph>
+        <paragraph>The OpenSSH suite replaces rlogin and telnet with the ssh
+          program, rcp with scp, and ftp with sftp.  Other utilities like
+          ssh-add, ssh-agent, ssh-keysign, ssh-keyscan, and ssh-keygen are
+          also included.
+        </paragraph>
+      </description>
+
+      <licence tarname="openssh-%-msys-%-lic.tar.%" />
+      <source tarname="openssh-%-msys-%-src.tar.%" />
+
+      <component class="bin">
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+        <release tarname="openssh-5.4p1-1-msys-1.0.13-bin.tar.lzma" >
+          <requires eq="msys-libminires-*-msys-*-dll.tar" />
+          <requires eq="msys-libopenssl-*-msys-*-dll-100.tar" />
+          <requires eq="msys-zlib-*-msys-*-dll.tar" />
+        </release>
+      </component>
+
+      <component class="doc">
+        <release tarname="openssh-5.4p1-1-msys-1.0.13-doc.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="openssh-5.4p1-1-msys-1.0.13-lic.tar.lzma" />
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/msys-openssl.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/msys-openssl.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/msys-openssl.xml	(revision 1046)
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://mingw.org" issue="2012073100">
+
+  <!-- File: msys-openssl.xml -->
+
+  <package-collection subsystem="msys">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="msys-openssl">
+      <affiliate group="MinGW Developer Toolkit" />
+      <description lang="en" title="Open source crypto toolkit for TLS/SSL" >
+        <paragraph>openssl is a collaborative effort to develop a robust,
+          commercial-grade, fully featured, and Open Source toolkit
+          implementing the Secure Sockets Layer (SSL v2/v3) and Transport
+          Layer Security (TLS v1) protocols as well as a full-strength
+          general purpose cryptography library.  The project is managed by
+          a worldwide community of volunteers that use the Internet to
+          communicate, plan, and develop the OpenSSL toolkit and its
+          related documentation.
+        </paragraph>
+        <paragraph>The msys-openssl package provides the documentation
+          for the openssl library, a few pre-defined certificates, and
+          several useful utilities.  The associated msys-libopenssl package
+          provides the runtime library and related development files.
+        </paragraph>
+      </description>
+
+      <licence tarname="openssl-%-msys-%-lic.tar.%" />
+      <source tarname="openssl-%-msys-%-src.tar.%" />
+
+      <component class="bin">
+        <!-- Every MSYS package requires msys-core-bin.  This dependency
+          is not explicitly stated here; rather, it is implicitly satisfied
+          as a prerequisite of the matching DLL for this package itself,
+          which is specified for each of the following releases.
+          -->
+        <release tarname="openssl-1.0.0-1-msys-1.0.13-bin.tar.lzma" >
+          <requires eq="msys-libopenssl-%-msys-%-dll-100.tar" />
+        </release>
+      </component>
+
+      <component class="doc">
+        <release tarname="openssl-1.0.0-1-msys-1.0.13-doc.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="openssl-1.0.0-1-msys-1.0.13-lic.tar.lzma" />
+      </component>
+    </package>
+
+    <package name="msys-libopenssl">
+      <affiliate group="MinGW Developer Toolkit" />
+      <description lang="en" title="Open source crypto toolkit for TLS/SSL" >
+        <paragraph>openssl is a collaborative effort to develop a robust,
+          commercial-grade, fully featured, and Open Source toolkit
+          implementing the Secure Sockets Layer (SSL v2/v3) and Transport
+          Layer Security (TLS v1) protocols as well as a full-strength
+          general purpose cryptography library.  The project is managed by
+          a worldwide community of volunteers that use the Internet to
+          communicate, plan, and develop the OpenSSL toolkit and its
+          related documentation.
+        </paragraph>
+        <paragraph>The msys-libopenssl package provides the runtime library
+          and related development files.  The associated msys-openssl package
+          provides the documentation for the openssl library, a few
+          pre-defined certificates, and several useful utilities.
+        </paragraph>
+      </description>
+
+      <licence tarname="openssl-%-msys-%-lic.tar.%" />
+      <source tarname="openssl-%-msys-%-src.tar.%" />
+
+      <component class="dll">
+        <release tarname="libopenssl-1.0.0-1-msys-1.0.13-dll-100.tar.lzma" />
+
+        <!-- Every MSYS DLL package requires msys-core-bin -->
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+      </component>
+
+      <component class="dev">
+        <release tarname="libopenssl-1.0.0-1-msys-1.0.13-dev.tar.lzma" >
+          <requires eq="msys-libopenssl-%-msys-%-dll-100.tar" />
+        </release>
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/msys-package-list.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/msys-package-list.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/msys-package-list.xml	(revision 1046)
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://www.mingw.org" issue="2016071500">
+
+  <!-- File: msys-package-list.xml -->
+
+  <!-- This is a preliminary catalogue describing the contents of the
+       MSYS distribution. -->
+
+  <package-group-hierarchy>
+    <package-group name="MSYS" expand="true">
+      <package-group name="MSYS Base System" />
+      <package-group name="MinGW Developer Toolkit" />
+      <package-group name="MSYS System Builder" />
+    </package-group>
+  </package-group-hierarchy>
+
+  <!-- "real" packages ~~ those commented out are yet to be published -->
+  <package-list issue="2012073100" catalogue="msys-autoconf" />
+  <package-list issue="2012073100" catalogue="msys-autogen" />
+  <package-list issue="2012073100" catalogue="msys-automake" />
+  <package-list issue="2014101900" catalogue="msys-bash" />
+  <package-list issue="2010090600" catalogue="msys-binutils" />
+  <package-list issue="2012073100" catalogue="msys-bison" />
+  <package-list issue="2013020400" catalogue="msys-bzip2" />
+  <package-list issue="2012073100" catalogue="msys-console" />
+  <package-list issue="2016071500" catalogue="msys-core" />
+  <package-list issue="2012073100" catalogue="msys-coreutils" />
+  <package-list issue="2012073100" catalogue="msys-crypt" />
+  <package-list issue="2012073100" catalogue="msys-cvs" />
+  <package-list issue="2012073100" catalogue="msys-cygutils" />
+  <package-list issue="2012073100" catalogue="msys-dash" />
+  <package-list issue="2012073100" catalogue="msys-diffutils" />
+  <package-list issue="2012073100" catalogue="msys-diffstat" />
+  <package-list issue="2015122200" catalogue="msys-dos2unix" />
+  <package-list issue="2012073100" catalogue="msys-expat" />
+  <package-list issue="2012073100" catalogue="msys-file" />
+  <package-list issue="2012073100" catalogue="msys-findutils" />
+  <package-list issue="2012073100" catalogue="msys-flex" />
+  <package-list issue="2012073100" catalogue="msys-gawk" />
+  <package-list issue="2013101200" catalogue="msys-gcc" />
+  <package-list issue="2012073100" catalogue="msys-gdbm" />
+  <package-list issue="2012073100" catalogue="msys-gettext" />
+  <package-list issue="2012073100" catalogue="msys-gmp" />
+  <package-list issue="2012073100" catalogue="msys-grep" />
+  <package-list issue="2012073100" catalogue="msys-groff" />
+  <package-list issue="2012073100" catalogue="msys-guile" />
+  <package-list issue="2012073100" catalogue="msys-gzip" />
+  <package-list issue="2012073100" catalogue="msys-help2man" />
+  <package-list issue="2012073100" catalogue="msys-inetutils" />
+  <package-list issue="2012073100" catalogue="msys-less" />
+  <package-list issue="2012073100" catalogue="msys-libarchive" />
+  <package-list issue="2012073100" catalogue="msys-libiconv" />
+  <package-list issue="2012073100" catalogue="msys-libtool" />
+  <package-list issue="2012073100" catalogue="msys-libxml2" />
+  <package-list issue="2012073100" catalogue="msys-lndir" />
+  <package-list issue="2012073100" catalogue="msys-lpr-enhanced" />
+  <package-list issue="2013022400" catalogue="msys-m4" />
+  <package-list issue="2012073100" catalogue="msys-make" />
+  <package-list issue="2012073100" catalogue="msys-man" />
+  <package-list issue="2012073100" catalogue="msys-minires" />
+  <package-list issue="2012073100" catalogue="msys-mintty" />
+  <package-list issue="2012073100" catalogue="msys-mktemp" />
+  <package-list issue="2012073100" catalogue="msys-openssh" />
+  <package-list issue="2012073100" catalogue="msys-openssl" />
+  <package-list issue="2012073100" catalogue="msys-patch" />
+  <package-list issue="2013101200" catalogue="msys-perl" />
+  <package-list issue="2012073100" catalogue="msys-popt" />
+  <package-list issue="2012073100" catalogue="msys-rebase" />
+  <package-list issue="2012073100" catalogue="msys-regex" />
+  <package-list issue="2012073100" catalogue="msys-rsync" />
+  <package-list issue="2012073100" catalogue="msys-rxvt" />
+  <package-list issue="2012073100" catalogue="msys-sed" />
+  <package-list issue="2012073100" catalogue="msys-tar" />
+  <package-list issue="2012073100" catalogue="msys-termcap" />
+  <package-list issue="2012073100" catalogue="msys-texinfo" />
+  <package-list issue="2012073100" catalogue="msys-unzip" />
+  <package-list issue="2012073100" catalogue="msys-vim" />
+  <package-list issue="2010090600" catalogue="msys-w32api" />
+  <package-list issue="2012073100" catalogue="msys-wget" />
+  <package-list issue="2012073100" catalogue="msys-xz" />
+  <package-list issue="2012073100" catalogue="msys-zip" />
+  <package-list issue="2012073100" catalogue="msys-zlib" />
+
+  <!-- "real" packages ~~ user contributed -->
+  <package-list issue="2011112700" catalogue="msys-mksh" />
+  <package-list issue="2016031600" catalogue="msys-ncurses" />
+
+  <!-- "virtual" packages -->
+  <package-list issue="2013072300" catalogue="msys-base" />
+  <package-list issue="2013072300" catalogue="mingw-developer-toolkit" />
+  <package-list issue="2010090600" catalogue="msys-system-builder" />
+
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/msys-patch.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/msys-patch.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/msys-patch.xml	(revision 1046)
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://mingw.org" issue="2012073100">
+
+  <!-- File: msys-patch.xml -->
+
+  <package-collection subsystem="msys">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="msys-patch">
+      <affiliate group="MSYS Base System" />
+      <description lang="en" title="Apply a diff file to an original" >
+        <paragraph>GNU patch is an implementation of Larry Wall's program
+          that takes "diff's" output and applies it to an original file to
+          generate a modified version of that file. Normally, the patched
+          versions are put in place of the originals. Backups can be made.
+        </paragraph>
+      </description>
+
+      <source tarname="patch-%-msys-%-src.tar.%" />
+      <licence tarname="patch-%-msys-%-lic.tar.%" />
+
+      <component class="bin">
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+        <release tarname="patch-2.6.1-1-msys-1.0.13-bin.tar.lzma" />
+      </component>
+
+      <component class="doc">
+        <release tarname="patch-2.6.1-1-msys-1.0.13-doc.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="patch-2.6.1-1-msys-1.0.13-lic.tar.lzma" />
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/msys-perl.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/msys-perl.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/msys-perl.xml	(revision 1046)
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://mingw.org" issue="2013101200">
+
+  <!-- File: msys-perl.xml -->
+
+  <package-collection subsystem="msys">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="msys-perl">
+      <affiliate group="MinGW Developer Toolkit" />
+      <description lang="en" title="The Perl programming language">
+        <paragraph>Perl is a general-purpose programming language
+          originally developed for text manipulation and now used for
+          a wide range of tasks including system administration, web
+          development, network programming, GUI development, and more.
+          Its primary utility on the MSYS platform is to run the autoconf
+          and automake developer utilities.
+        </paragraph>
+      </description>
+
+      <licence tarname="perl-%-msys-%-lic.tar.%" />
+      <source tarname="perl-%-msys-%-src.tar.%" />
+
+      <component class="bin">
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+        <release tarname="perl-5.6.1_2-2-msys-1.0.13-bin.tar.lzma" >
+          <requires eq="msys-zlib-*-msys-*-dll.tar" />
+          <requires eq="msys-libgdbm-*-msys-*-dll-3.tar" />
+          <requires eq="msys-libcrypt-*-msys-*-dll-0.tar" />
+        </release>
+        <release tarname="perl-5.8.8-1-msys-1.0.17-bin.tar.lzma" >
+          <requires eq="msys-zlib-*-msys-*-dll.tar" />
+          <requires eq="msys-libbz2-*-msys-*-dll-1.tar" />
+          <requires eq="msys-libgdbm-*-msys-*-dll-3.tar" />
+          <requires eq="msys-libcrypt-*-msys-*-dll-0.tar" />
+          <requires eq="msys-libexpat-*-msys-*-dll-1.tar" />
+          <requires eq="msys-libxml2-*-msys-*-dll-2.tar" />
+          <!-- for perlrebase script -->
+          <!--
+          <requires eq="msys-findutils-*-msys-*-bin.tar" />
+          <requires eq="msys-grep-*-msys-*-bin.tar" />
+          <requires eq="msys-sed-*-msys-*-bin.tar" />
+          <requires eq="msys-rebase-*-msys-*-bin.tar" />
+          -->
+          <!-- and one of these two: -->
+          <!--
+          <requires eq="msys-binutils-*-msys-*-bin.tar" />
+          <requires eq="mingw32-binutils-*-mingw32-*-bin.tar" />
+          -->
+        </release>
+      </component>
+
+      <component class="doc">
+        <release tarname="perl-5.6.1_2-2-msys-1.0.13-doc.tar.lzma" />
+        <release tarname="perl-5.8.8-1-msys-1.0.17-doc.tar.lzma" />
+      </component>
+
+      <component class="html">
+        <release tarname="perl-5.6.1_2-2-msys-1.0.13-html.tar.lzma" />
+        <release tarname="perl-5.8.8-1-msys-1.0.17-html.tar.lzma" />
+      </component>
+
+      <component class="man">
+        <release tarname="perl-5.6.1_2-2-msys-1.0.13-man.tar.lzma" />
+        <release tarname="perl-5.8.8-1-msys-1.0.17-man.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="perl-5.6.1_2-2-msys-1.0.13-lic.tar.lzma" />
+        <release tarname="perl-5.8.8-1-msys-1.0.17-lic.tar.lzma" />
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/msys-popt.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/msys-popt.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/msys-popt.xml	(revision 1046)
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://mingw.org" issue="2012073100">
+
+  <!-- File: msys-popt.xml -->
+
+  <package-collection subsystem="msys">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="msys-popt">
+      <description lang="en" title="Command line option parsing library" >
+        <paragraph>popt is a command line option parsing library. While
+          popt is similiar to getopt, it contains a number of enhancements.
+          This version is based on the rpm5.org version of popt, rather
+          than the rpm.org version. The rpm5.org implementation is more
+          portable.
+        </paragraph>
+        <paragraph>The msys-popt package provides the documentation for the
+          popt library. The associated msys-libpopt package provides the
+          runtime library and development files.
+        </paragraph>
+      </description>
+
+      <source tarname="popt-%-msys-%-src.tar.%" />
+      <licence tarname="popt-%-msys-%-lic.tar.%" />
+
+      <component class="doc">
+        <release tarname="popt-1.15-2-msys-1.0.13-doc.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="popt-1.15-2-msys-1.0.13-lic.tar.lzma" />
+      </component>
+    </package>
+
+    <package name="msys-libpopt">
+      <description lang="en" title="Command line option parsing library" >
+        <paragraph>popt is a command line option parsing library. While
+          popt is similiar to getopt, it contains a number of enhancements.
+          This version is based on the rpm5.org version of popt, rather
+          than the rpm.org version. The rpm5.org implementation is more
+          portable.
+        </paragraph>
+        <paragraph>The msys-libpopt package provides the runtime library
+          and development files. The associated msys-popt package provides
+          the documentation for the popt library.
+        </paragraph>
+      </description>
+
+      <source tarname="popt-%-msys-%-src.tar.%" />
+      <licence tarname="popt-%-msys-%-lic.tar.%" />
+
+      <component class="dll">
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+        <release tarname="libpopt-1.15-2-msys-1.0.13-dll-0.tar.lzma" >
+          <requires eq="msys-libintl-*-msys-*-dll-8.tar" />
+        </release>
+      </component>
+
+      <component class="dev">
+        <release tarname="libpopt-1.15-2-msys-1.0.13-dev.tar.lzma">
+          <requires eq="msys-libpopt-%-msys-%-dll-0.tar" />
+        </release>
+      </component>
+
+      <component class="lang">
+        <release tarname="libpopt-1.15-2-msys-1.0.13-lang.tar.lzma" />
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/msys-rebase.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/msys-rebase.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/msys-rebase.xml	(revision 1046)
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://mingw.org" issue="2012073100">
+
+  <!-- File: msys-rebase.xml -->
+
+  <package-collection subsystem="msys">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="msys-rebase">
+      <description lang="en" title="A tool for managing DLL address conflicts">
+        <paragraph>rebase provides various utilities that can assist
+          with the dreaded DLL initialization problem, whose primary
+          symptom is error messages of the form: "sync_with_child:
+          child state waiting for longjmp" or "fork_child:
+          recreate_mmaps_after_fork_failed".  This "rebase problem"
+          is due to fork() failing to reload DLLs in the child at
+          the same address as in the parent.  This is caused by DLLs
+          which have conflicting base addresses.  The rebase tool and
+          the associated rebaseall script allow to change those base
+          addresses for every DLL in an MSYS installation, so that
+          they hopefully do not conflict.
+        </paragraph>
+        <paragraph>The msys-rebase package also provides the peflags
+          and peflagsall tools, which can be used to change certain
+          settings in every executable and DLL in an MSYS installation.
+          On Windows Vista and above, it can be used to enable the
+          Address Space Layout Randomization (ASLR) setting, which is
+          an alternate mechanism to address the "rebase problem".  It
+          can also be used to enable the Terminal Server Aware flag,
+          which may be important on Windows Terminal Services and
+          Windows Server operating systems.
+        </paragraph>
+      </description>
+
+      <licence tarname="rebase-%-msys-%-lic.tar.%" />
+      <source tarname="rebase-%-msys-%-src.tar.%" />
+
+      <component class="bin">
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+        <requires eq="msys-coreutils-*-msys-*-bin.tar" />
+        <requires eq="msys-dash-*-msys-*-bin.tar" />
+        <requires eq="msys-gawk-*-msys-*-bin.tar" />
+        <requires eq="msys-sed-*-msys-*-bin.tar" />
+        <release tarname="rebase-3.0.1_1-2-msys-1.0.15-bin.tar.lzma" />
+        <release tarname="rebase-4.0.1_1-1-msys-1.0.17-bin.tar.lzma" />
+      </component>
+
+      <component class="dev">
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+        <requires eq="msys-rebase-%-msys-%-bin.tar" />
+        <release tarname="rebase-4.0.1_1-1-msys-1.0.17-dev.tar.lzma" />
+      </component>
+
+      <component class="doc">
+        <release tarname="rebase-3.0.1_1-2-msys-1.0.15-doc.tar.lzma" />
+        <release tarname="rebase-4.0.1_1-1-msys-1.0.17-doc.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="rebase-3.0.1_1-2-msys-1.0.15-lic.tar.lzma" />
+        <release tarname="rebase-4.0.1_1-1-msys-1.0.17-lic.tar.lzma" />
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/msys-regex.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/msys-regex.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/msys-regex.xml	(revision 1046)
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://mingw.org" issue="2012073100">
+
+  <!-- File: msys-regex.xml -->
+
+  <package-collection subsystem="msys">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="msys-regex">
+      <description lang="en" title="Regular Expressions Library Documentation" >
+        <paragraph>Regex provides an implementation of the GNU, POSIX, and
+          BSD regular expression functions. Current versions are derived
+          from the GNULIB implementation of the regex module, but an older
+          version of the runtime derived from the venerable GNU regex
+          library, with a slightly different interface, is available for
+          legacy MSYS applications.
+        </paragraph>
+        <paragraph>The msys-regex package provides the documentation
+          for the regex library, while the associated msys-libregex
+          package provides the runtime library and related development
+          files.
+        </paragraph>
+      </description>
+
+      <component class="doc">
+        <release tarname="regex-1.20090805-2-msys-1.0.13-doc.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="regex-0.12-1-msys-1.0.11-lic.tar.lzma" />
+        <release tarname="regex-1.20090805-2-msys-1.0.13-lic.tar.lzma" />
+      </component>
+    </package>
+
+    <package name="msys-libregex">
+      <description lang="en" title="Regular Expressions Library" >
+        <paragraph>Regex provides an implementation of the GNU, POSIX, and
+          BSD regular expression functions. Current versions are derived
+          from the GNULIB implementation of the regex module, but an older
+          version of the runtime derived from the venerable GNU regex
+          library, with a slightly different interface, is available for
+          legacy MSYS applications.
+        </paragraph>
+        <paragraph>The msys-libregex package the runtime library and
+          related development files, while the associated msys-regex
+          package provides the documentation.
+        </paragraph>
+      </description>
+
+      <source tarname="regex-%-msys-%-src.tar.%" />
+      <licence tarname="regex-%-msys-%-lic.tar.%" />
+
+      <component class="dll">
+        <release tarname="libregex-0.12-1-msys-1.0.11-dll-0.tar.lzma" />
+        <release tarname="libregex-1.20090805-2-msys-1.0.13-dll-1.tar.lzma" />
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+      </component>
+
+      <component class="dev">
+        <release tarname="libregex-1.20090805-2-msys-1.0.13-dev.tar.lzma">
+          <requires eq="msys-libregex-%-msys-%-dll-1.tar" />
+        </release>
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/msys-rsync.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/msys-rsync.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/msys-rsync.xml	(revision 1046)
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://mingw.org" issue="2012073100">
+
+  <!-- File: msys-rsync.xml -->
+
+  <package-collection subsystem="msys">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="msys-rsync">
+      <affiliate group="MinGW Developer Toolkit" />
+      <description lang="en" title="file transfer program" >
+        <paragraph>rsync is a file transfer program. rsync uses the 'rsync
+          algorithm' which provides a very fast method for bringing remote files
+          into sync. It does this by sending just the differences in the files
+          across the link, without requiring that both sets of files are present
+          at one of the ends of the link beforehand.
+        </paragraph>
+      </description>
+
+      <source tarname="rsync-%-msys-%-src.tar.%" />
+      <licence tarname="rsync-%-msys-%-lic.tar.%" />
+
+      <component class="bin">
+        <release tarname="rsync-3.0.8-1-msys-1.0.17-bin.tar.lzma" />
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+        <requires eq="msys-libiconv-*-msys-*-dll-2.tar" />
+        <requires eq="msys-libpopt-*-msys-*-dll-0.tar" />
+      </component>
+
+      <component class="doc">
+        <release tarname="rsync-3.0.8-1-msys-1.0.17-doc.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="rsync-3.0.8-1-msys-1.0.17-lic.tar.lzma" />
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/msys-rxvt.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/msys-rxvt.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/msys-rxvt.xml	(revision 1046)
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://mingw.org" issue="2012073100">
+
+  <!-- File: msys-rxvt.xml -->
+
+  <package-collection subsystem="msys">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="msys-rxvt">
+      <description lang="en" title="terminal emulator" >
+        <paragraph>VT102 terminal emulator for both X and Windows. This
+          version has been modified and compiled for use in the MSYS
+          environment, and does not attempt to use an X display even if
+          available; it always operates in "native" Windows mode.
+        </paragraph>
+        <paragraph>To launch MSYS in an rxvt window, create a shortcut
+          to C:\msys\1.0\msys.bat, with the argument "--rxvt". Some
+          people find rxvt a more accomodating terminal than cmd.exe, since
+          it may be resized at will and has a larger scrollback buffer.
+          However, rxvt sometimes does not interoperate well with native
+          applications (such as MinGW gcc), so the default cmd.exe console
+          is recommended for most users.
+        </paragraph>
+        <paragraph>Another alternative console implementation that many users
+          find congenial is the "Console 2.00" project.  This replacement
+          console is not provided by the MinGW/MSYS team directly for licensing
+          reasons (Console 2.00 is GPL, but cannot currently be compiled using
+          Libre tools), but you may install the msys-console package which provides
+          the `console-config' script.  This script which will download,
+          install, and configure the Console 2.00 team's packages.
+        </paragraph>
+      </description>
+
+      <licence tarname="rxvt-%-msys-%-lic.tar.%" />
+      <source tarname="rxvt-%-msys-%-src.tar.%" />
+
+      <!-- NOTE: the rxvt-2.7.10.20050409-* versions have a serious flaw, in
+           that whenever a native application is launched from within an rxvt
+           session, a black cmd window pops up. If we ever solve this problem,
+           then add newer versions to this manifest. Until then, however... -->
+
+      <component class="bin">
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+        <release tarname="rxvt-2.7.2-3-msys-1.0.14-bin.tar.lzma" />
+      </component>
+
+      <component class="doc">
+        <release tarname="rxvt-2.7.2-3-msys-1.0.14-doc.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="rxvt-2.7.2-3-msys-1.0.14-lic.tar.lzma" />
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/msys-sed.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/msys-sed.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/msys-sed.xml	(revision 1046)
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://mingw.org" issue="2012073100">
+
+  <!-- File: msys-sed.xml -->
+
+  <package-collection subsystem="msys">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="msys-sed">
+      <affiliate group="MSYS Base System" />
+      <description lang="en" title="GNU Stream Editor" >
+        <paragraph>sed is a stream editor. A stream editor is used to
+          perform basic text transformations on an input stream (a file or
+          input from a pipeline). While in some ways similar to an editor
+          which permits scripted edits (such as ed), sed works by making
+          only one pass over the input(s), and is consequently more
+          efficient. But it is sed's ability to filter text in a pipeline
+          which particularly distinguishes it from other types of editors.
+        </paragraph>
+      </description>
+
+      <source tarname="sed-%-msys-%-src.tar.%" />
+      <licence tarname="sed-%-msys-%-lic.tar.%" />
+
+      <component class="bin">
+        <release tarname="sed-4.2.1-2-msys-1.0.13-bin.tar.lzma" >
+          <requires eq="msys-libintl-*-msys-*-dll-8.tar" />
+        </release>
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+      </component>
+
+      <component class="lang">
+        <release tarname="sed-4.2.1-2-msys-1.0.13-lang.tar.lzma" />
+      </component>
+
+      <component class="doc">
+        <release tarname="sed-4.2.1-2-msys-1.0.13-doc.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="sed-4.2.1-2-msys-1.0.13-lic.tar.lzma" />
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/msys-system-builder.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/msys-system-builder.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/msys-system-builder.xml	(revision 1046)
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://www.mingw.org" issue="2010090600">
+
+  <!-- File: msys-system-builder.xml -->
+
+  <!-- This is a preliminary catalogue listing those tools necessary to
+       build MSYS-dependent applications and libraries, as well as the
+       MSYS DLL itself.  It does not include headers or link libraries
+       needed to use those pre-build MSYS libraries distributed by the
+       MinGW/MSYS project; if desired, those should be installed as
+       needed, individually.  In a manner of speaking, this "replicates"
+       the tools installed by the old "msysDVLPR" package ~~ although
+       that package contained an obsolete version of gcc-2.95.3, and
+       the tools installed by this (meta) package are much newer. -->
+
+  <package-collection subsystem="msys">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="msys-system-builder" alias="msys-dvlpr" class="virtual">
+      <affiliate group="MSYS System Builder" />
+      <description lang="en" title="Tools for Building MSYS and MSYS utilities (meta)">
+        <paragraph>
+          This meta package contains the components necessary to build
+          MSYS-dependent applications and libraries, as well as the MSYS DLL
+          itself.  It does not include headers or link libraries needed to use
+          pre-built MSYS libraries distributed by the MinGW/MSYS project; if
+          desired, those should be installed as needed, individually.  In a
+          manner of speaking, this "replicates" the tools installed by the old
+          "msysDVLPR" package ~~ although (1) that package contained an obsolete
+          version of gcc-2.95.3, while the tools installed by this (meta)
+          package are much newer, and (2) this (meta) package also adds
+          MSYS-customized versions of the autotools (autoconf, automake,
+          libtool, gettext, and libiconv).  These msys-autotools can be
+          installed and used in parallel with the normal, MinGW-flavored ones
+          installed by the MinGW Developer Toolkit (MinGW-DTK).
+        </paragraph>
+      </description>
+
+      <component class="bin">
+        <release tarname="msys-system-builder-2010090600-msys-bin.meta" />
+        <requires ge="msys-base-*-msys-*-bin.meta" />
+        <requires ge="msys-core-*-msys-*-dev.tar" />
+        <requires ge="msys-core-*-msys-*-dbg.tar" />
+        <requires ge="msys-w32api-*-msys-*-dev.tar" />
+        <requires ge="msys-binutils-*-msys-*-bin.tar" />
+        <requires ge="msys-gcc-*-msys-*-bin.tar" />
+        <requires ge="msys-autoconf-*-msys-*-bin.tar" />
+        <requires ge="msys-automake-*-msys-*-bin.tar" />
+        <requires ge="msys-libtool-*-msys-*-bin.tar" />
+        <requires ge="msys-libltdl-*-msys-*-dev.tar" />
+        <requires ge="msys-gettext-*-msys-*-bin.tar" />
+        <requires ge="msys-gettext-*-msys-*-dev.tar" />
+        <requires ge="msys-libiconv-*-msys-*-bin.tar" />
+        <requires ge="msys-libiconv-*-msys-*-dev.tar" />
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/msys-tar.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/msys-tar.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/msys-tar.xml	(revision 1046)
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://mingw.org" issue="2012073100">
+
+  <!-- File: msys-tar.xml -->
+
+  <package-collection subsystem="msys">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="msys-tar">
+      <affiliate group="MSYS Base System" />
+      <description lang="en" title="GNU tar archiver tool">
+        <paragraph>GNU tar is an archiver that creates and handles file
+          archives in various formats. You can use tar to create file
+          archives, to extract files from previously created archives,
+          store additional files, or update or list files which were
+          already stored.
+        </paragraph>
+        <paragraph>The program saves many files together into a single
+          tape or disk archive, and can restore individual files from the
+          archive. It includes multivolume support, the ability to archive
+          sparse files, automatic archive compression/decompression, remote
+          archives and special features that allow 'tar' to be used for
+          incremental and full backups.
+        </paragraph>
+        <paragraph>The supported archive formats are: V7 tar, GNU, ustar
+          and POSIX (also known as pax interchange format). GNU tar can
+          also read and extract 'star' archives. Tar can direct its output
+          to available devices, files, or other programs (using pipes); tar
+          can even access remote devices or files (as archives).
+        </paragraph>
+        <paragraph>The MinGW/MSYS project provides four different tar
+          implementations: (1) msys-tar, this GNU tar implementation ported
+          for MSYS; (2) msys-bsdtar, a BSD tar implementation based on
+          libarchive and ported for MSYS; (3) mingw32-bsdtar, a BSD tar
+          implementation ported for MinGW (that is, native Win32); and
+          (4) mingw32-basic-bsdtar, a limited-functionality version of
+          mingw32-bsdtar with no external dependencies.  GNU tar (e.g.
+          msys-tar) is the de facto standard implementation, but bsdtar
+          is generally faster. Generally, any of these implementations
+          will meet most needs.
+        </paragraph>
+      </description>
+
+      <source tarname="tar-%-msys-%-src.tar.%" />
+      <licence tarname="tar-%-msys-%-lic.tar.%" />
+
+      <component class="bin">
+        <release tarname="tar-1.23-1-msys-1.0.13-bin.tar.lzma">
+          <requires eq="msys-libintl-*-msys-*-dll-8.tar" />
+          <requires eq="msys-libiconv-*-msys-*-dll-2.tar" />
+          <requires eq="msys-libregex-*-msys-*-dll-1.tar" />
+        </release>
+
+        <!-- Every MSYS package requires msys-core-bin -->
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+
+        <!-- Additional packages are required, to support processing
+          of compressed archives.
+          -->
+        <requires eq="msys-bzip2-*-msys-*-bin.tar" />
+        <requires eq="msys-gzip-*-msys-*-bin.tar" />
+        <requires eq="msys-xz-*-msys-*-bin.tar" />
+      </component>
+
+      <component class="lang">
+        <release tarname="tar-1.23-1-msys-1.0.13-lang.tar.lzma" />
+      </component>
+
+      <component class="ext">
+        <release tarname="tar-1.23-1-msys-1.0.13-ext.tar.lzma" />
+        <requires eq="msys-tar-%-msys-%-bin.tar" />
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+        <requires eq="msys-coreutils-*-msys-*-bin.tar" />
+        <requires eq="msys-sed-*-msys-*-bin.tar" />
+        <requires eq="msys-bash-*-msys-*-bin.tar" />
+      </component>
+
+      <component class="doc">
+        <release tarname="tar-1.23-1-msys-1.0.13-doc.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="tar-1.23-1-msys-1.0.13-lic.tar.lzma" />
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/msys-termcap.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/msys-termcap.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/msys-termcap.xml	(revision 1046)
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://mingw.org" issue="2012073100">
+
+  <!-- File: msys-termcap.xml -->
+
+  <package-collection subsystem="msys">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="msys-termcap">
+      <affiliate group="MSYS Base System" />
+      <description lang="en" title="The terminal feature database used by certain applications" >
+        <paragraph>The msys-termcap package provides the /etc/termcap file.
+          /etc/termcap is a database which defines the capabilities of
+          various terminals and terminal emulators.  Certain programs use
+          the /etc/termcap file to access various features of terminals
+          (the bell, colors, and graphics, etc.). The associated libtermcap
+          package provides runtime and development support libraries for
+          the applications which use the database.
+        </paragraph>
+        <paragraph>Unless you develop MSYS applications, you probably only
+          need the msys-termcap-bin package, which contains the
+          /etc/termcap database, and the msys-libtermcap-dll package, which
+          provides the runtime library.
+        </paragraph>
+      </description>
+
+      <source tarname="termcap-%-msys-%-src.tar.%" />
+      <licence tarname="termcap-%-msys-%-lic.tar.%" />
+
+      <component class="bin">
+        <release tarname="termcap-0.20050421_1-2-msys-1.0.13-bin.tar.lzma" />
+      </component>
+
+      <component class="doc">
+        <release tarname="termcap-0.20050421_1-2-msys-1.0.13-doc.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="termcap-0.20050421_1-2-msys-1.0.13-lic.tar.lzma" />
+      </component>
+    </package>
+
+    <package name="msys-libtermcap">
+      <description lang="en" title="The terminal feature library used by certain applications" >
+        <paragraph>The msys-libtermcap package provides the runtime and
+          development support libraries for applications which use the
+          /etc/termcap database.  The associated msys-termcap package
+          provides that database, which defines the capabilities of various
+          terminals and terminal emulators.  Certain programs use the
+          /etc/termcap file to access various features of terminals (the
+          bell, colors, and graphics, etc.).
+        </paragraph>
+        <paragraph>Unless you develop MSYS applications, you probably only
+          need the msys-termcap-bin package, which contains the
+          /etc/termcap database, and the msys-libtermcap-dll package, which
+          provides the runtime library.
+        </paragraph>
+      </description>
+
+      <licence tarname="termcap-%-msys-%-lic.tar.%" />
+      <source tarname="termcap-%-msys-%-src.tar.%" />
+
+      <component class="dll">
+        <release tarname="libtermcap-0.20050421_1-2-msys-1.0.13-dll-0.tar.lzma" />
+        <requires eq="msys-termcap-%-msys-%-bin.tar" />
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+      </component>
+
+      <component class="dev">
+        <release tarname="libtermcap-0.20050421_1-2-msys-1.0.13-dev.tar.lzma">
+          <requires eq="msys-libtermcap-%-msys-%-dll-0.tar" />
+        </release>
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/msys-texinfo.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/msys-texinfo.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/msys-texinfo.xml	(revision 1046)
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://mingw.org" issue="2012073100">
+
+  <!-- File: msys-texinfo.xml -->
+
+  <package-collection subsystem="msys">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="msys-texinfo">
+      <affiliate group="MSYS Base System" />
+      <description lang="en" title="Documentation system for on-screen and printed manuals" >
+        <paragraph>Texinfo is the official documentation format of the GNU
+          project. It was invented by Richard Stallman and Bob Chassell
+          many years ago, loosely based on Brian Reid's Scribe and other
+          formatting languages of the time. It is used by many non-GNU
+          projects as well.
+        </paragraph>
+        <paragraph>Texinfo uses a single source file to produce output in
+          a number of formats, both online and printed (dvi, html, info,
+          pdf, xml, etc.). This means that instead of writing different
+          documents for online information and another for a printed
+          manual, you need write only one document. And when the work is
+          revised, you need revise only that one document.
+        </paragraph>
+        <paragraph>msys-texinfo provides makeinfo, for generating .info
+          output files from .texi input; install-info, for installing them
+          correctly in an info/ directory and updating the info/dir
+          manifest; and info, a viewer for info documentation files. Note
+          that generating .dvi or .pdf output requires a fully-fledged TeX
+          implementation, which is not available as part of the MinGW/MSYS
+          distribution -- MikTeX may be of some assistance.
+        </paragraph>
+      </description>
+
+      <source tarname="texinfo-%-msys-%-src.tar.%" />
+      <licence tarname="texinfo-%-msys-%-lic.tar.%" />
+
+      <component class="bin">
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+
+        <release tarname="texinfo-4.13a-2-msys-1.0.13-bin.tar.lzma">
+          <requires eq="msys-libintl-*-msys-*-dll-8.tar" />
+          <requires eq="msys-libtermcap-*-msys-*-dll-0.tar" />
+          <requires eq="msys-libregex-*-msys-*-dll-1.tar" />
+        </release>
+
+        <!-- the following are required by the texi2dvi script -->
+        <requires eq="msys-bash-*-msys-*-bin.tar" />
+        <requires eq="msys-coreutils-*-msys-*-bin.tar" />
+        <requires eq="msys-diffutils-*-msys-*-bin.tar" />
+        <requires eq="msys-grep-*-msys-*-bin.tar" />
+        <requires eq="msys-tar-*-msys-*-bin.tar" />
+      </component>
+
+      <component class="lang">
+        <release tarname="texinfo-4.13a-2-msys-1.0.13-lang.tar.lzma" />
+      </component>
+
+      <component class="doc">
+        <release tarname="texinfo-4.13a-2-msys-1.0.13-doc.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="texinfo-4.13a-2-msys-1.0.13-lic.tar.lzma" />
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/msys-unzip.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/msys-unzip.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/msys-unzip.xml	(revision 1046)
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://mingw.org" issue="2012073100">
+
+  <!-- File: msys-unzip.xml -->
+
+  <package-collection subsystem="msys">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="msys-unzip">
+      <description lang="en" title="Command-line unpacker for .zip archives" >
+        <paragraph>UnZip from the InfoZIP project is an open-source,
+          command-line alternative to other tools, such as WinZip, for
+          unpacking zip-format archives.
+        </paragraph>
+      </description>
+
+      <licence tarname="unzip-%-msys-%-lic.tar.%" />
+      <source tarname="unzip-%-msys-%-src.tar.%" />
+
+      <component class="bin">
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+        <!-- the following are required for zipgrep -->
+        <requires eq="msys-coreutils-*-msys-*-bin.tar" />
+        <requires eq="msys-sed-*-msys-*-bin.tar" />
+        <requires eq="msys-grep-*-msys-*-bin.tar" />
+        <requires eq="msys-bash-*-msys-*-bin.tar" />
+        <release tarname="unzip-6.0-1-msys-1.0.13-bin.tar.lzma" />
+      </component>
+
+      <component class="doc">
+        <release tarname="unzip-6.0-1-msys-1.0.13-doc.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="unzip-6.0-1-msys-1.0.13-lic.tar.lzma" />
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/msys-vim.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/msys-vim.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/msys-vim.xml	(revision 1046)
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://mingw.org" issue="2012073100">
+
+  <!-- File: msys-vim.xml -->
+
+  <package-collection subsystem="msys">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="msys-vim">
+      <affiliate group="MinGW Developer Toolkit" />
+      <description lang="en" title="Vi IMproved, a programmers text editor" >
+        <paragraph>Vim is a highly configurable text editor built to enable
+          efficient text editing. It is an improved version of the vi editor
+          distributed with most UNIX systems. Vim is distributed free as
+          charityware. If you find Vim a useful addition to your life please
+          consider helping needy children in Uganda (http://iccf-holland.org/).
+        </paragraph>
+      </description>
+
+      <source tarname="vim-%-msys-%-src.tar.%" />
+      <licence tarname="vim-%-msys-%-lic.tar.%" />
+
+      <component class="bin">
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+        <release tarname="vim-7.3-2-msys-1.0.16-bin.tar.lzma" >
+          <requires eq="msys-libintl-*-msys-*-dll-8.tar" />
+          <requires eq="msys-libtermcap-*-msys-*-dll-0.tar" />
+        </release>
+        <release tarname="vim-7.3-1-msys-1.0.16-bin.tar.lzma" >
+          <requires eq="msys-libintl-*-msys-*-dll-8.tar" />
+          <requires eq="msys-libtermcap-*-msys-*-dll-0.tar" />
+        </release>
+        <release tarname="vim-7.2-2-msys-1.0.13-bin.tar.lzma" >
+          <requires eq="msys-libintl-*-msys-*-dll-8.tar" />
+          <requires eq="msys-libtermcap-*-msys-*-dll-0.tar" />
+        </release>
+      </component>
+
+      <component class="lang">
+        <release tarname="vim-7.3-2-msys-1.0.16-lang.tar.lzma" />
+        <release tarname="vim-7.3-1-msys-1.0.16-lang.tar.lzma" />
+        <release tarname="vim-7.2-2-msys-1.0.13-lang.tar.lzma" />
+      </component>
+
+      <component class="doc">
+        <release tarname="vim-7.3-2-msys-1.0.16-doc.tar.lzma" />
+        <release tarname="vim-7.3-1-msys-1.0.16-doc.tar.lzma" />
+        <release tarname="vim-7.2-2-msys-1.0.13-doc.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="vim-7.3-2-msys-1.0.16-lic.tar.lzma" />
+        <release tarname="vim-7.3-1-msys-1.0.16-lic.tar.lzma" />
+        <release tarname="vim-7.2-2-msys-1.0.13-lic.tar.lzma" />
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/msys-w32api.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/msys-w32api.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/msys-w32api.xml	(revision 1046)
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://www.mingw.org" issue="2010090600">
+
+  <!-- File: msys-w32api.xml ~~ mingw-get package description for MinGW API (msys) -->
+
+  <package-collection subsystem="msys">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <!-- Provides the package descriptions for the package that provides,  -->
+    <!-- suitably configured for use with the MSYS System Builder toolset, -->
+    <!-- the headers and link libraries for the Windows API.               -->
+
+    <package name="msys-w32api">
+      <affiliate group="MSYS System Builder" />
+      <description lang="en" title="The MinGW API for 32-Bit MS-Windows (msys)">
+        <paragraph>This is not the w32api you are looking for.</paragraph>
+        <paragraph>
+          This package provides the header files and import libraries
+          constituting a standard API for the development of applications
+          which utilise the capabilities of the 32-bit MS-Windows system
+          dynamic link libraries, configured specifically for use with the
+          MSYS System Builder (msys-dvlpr) toolset.  It should be installed
+          into the / == /usr (that is, C:\msys\1.0) directory, and NOT intoo
+          the usual MinGW location /mingw (C:\MinGW).
+        </paragraph>
+        <paragraph>
+          Install this component only if you intend to create MSYS-dependent
+          applications.
+        </paragraph>
+      </description>
+
+      <!-- The -dev package includes licence and documentation -->
+      <licence tarname="w32api-%-msys-%-dev.tar.lzma" />
+      <source tarname="w32api-%-msys-%-src.tar.lzma" />
+
+      <component class="dev">
+        <release tarname="w32api-3.14-3-msys-1.0.12-dev.tar.lzma" />
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/msys-wget.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/msys-wget.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/msys-wget.xml	(revision 1046)
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://mingw.org" issue="2012073100">
+
+  <!-- File: msys-wget.xml -->
+
+  <package-collection subsystem="msys">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="msys-wget">
+      <description lang="en" title="non-interactive network downloader" >
+        <paragraph>Wget is a network utility to retrieve files from the Web
+          using http(s) and ftp, the two most widely used Internet
+          protocols.  The program supports recursive retrieval of
+          web-authoring pages as well as ftp sites -- you can use wget to
+          make mirrors of archives and home pages or to travel the Web like
+          a WWW robot.
+        </paragraph>
+        <paragraph>Wget works particularly well with slow or unstable
+          connections by continuing to retrieve a document until the
+          document is fully downloaded.  Re-getting files from where it left
+          off works on servers (both http and ftp) that support it.  Both
+          http and ftp retrievals can be time stamped, so wget can see if
+          the remote file has changed since the last retrieval and
+          automatically retrieve the new version if it has.
+        </paragraph>
+        <paragraph>The MinGW/MSYS project provides two versions of wget:
+          this MSYS one supports https and understands MSYS pathnames, but
+          requires the MSYS dll (and various others) to be installed.  There
+          is also a 'mingwPORT' wget, which is a MinGW (that is, native
+          Win32) version.  That version has no external dependencies but
+          is based on an older version of wget and does not support https.
+        </paragraph>
+      </description>
+
+      <licence tarname="wget-%-msys-%-lic.tar.%" />
+      <source tarname="wget-%-msys-%-src.tar.%" />
+
+      <component class="bin">
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+        <release tarname="wget-1.12-1-msys-1.0.13-bin.tar.lzma" >
+          <requires eq="msys-libopenssl-*-msys-*-dll-100.tar" />
+          <requires eq="msys-libintl-*-msys-*-dll-8.tar" />
+        </release>
+      </component>
+
+      <component class="lang">
+        <release tarname="wget-1.12-1-msys-1.0.13-lang.tar.lzma" />
+      </component>
+
+      <component class="doc">
+        <release tarname="wget-1.12-1-msys-1.0.13-doc.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="wget-1.12-1-msys-1.0.13-lic.tar.lzma" />
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/msys-xz.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/msys-xz.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/msys-xz.xml	(revision 1046)
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://mingw.org" issue="2012073100">
+
+  <!-- File: msys-xz.xml -->
+
+  <package-collection subsystem="msys">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="msys-xz">
+      <affiliate group="MSYS Base System" />
+      <description lang="en" title="High performance compression based on the LZMA algorithm" >
+        <paragraph>LZMA is data compression algorithm based on the
+          Lempel-Ziv-Markov chain-Algorithm. It provides high compression
+          ratios and very fast decompression, with minimal memory
+          requirements for decompression.  XZ Utils is the latest
+          generation of this software, supplanting the older LZMA Utils,
+          which itself was a friendly fork of the original LZMA SDK. The
+          msys-xz package provides commandline utilities for compression
+          and decompression of XZ and LZMA data, and documentation. The
+          associated msys-liblzma package provides the runtime library and
+          development files for creating applications that use LZMA or XZ
+          compression.
+        </paragraph>
+        <paragraph>The MinGW/MSYS project provides both a native (mingw32)
+          version and this MSYS version of the xz package(s). While the
+          latter is the primary tool from the perspective of the MSYS
+          distribution, the MinGW version is provided as one of the
+          prerequisites for the native (mingw32) basic-bsdtar utility.
+        </paragraph>
+      </description>
+
+      <source tarname="xz-%-msys-%-src.tar.%" />
+      <licence tarname="xz-%-msys-%-lic.tar.%" />
+
+      <component class="bin">
+        <!-- Every MSYS package requires msys-core-bin.  This dependency
+          is not explicitly stated here; rather, it is implicitly satisfied
+          as a prerequisite of the matching DLL for this package itself,
+          which is specified for each of the following releases.
+          -->
+        <release tarname="xz-4.999.9beta_20100401-1-msys-1.0.13-bin.tar.gz">
+          <requires eq="msys-libintl-*-msys-*-dll-8.tar" />
+          <requires eq="msys-liblzma-%-msys-%-dll-1.tar" />
+        </release>
+        <release tarname="xz-5.0.3-1-msys-1.0.17-bin.tar.lzma">
+          <requires eq="msys-libintl-*-msys-*-dll-8.tar" />
+          <requires eq="msys-liblzma-%-msys-%-dll-5.tar" />
+        </release>
+
+        <!-- Other requirements support the auxiliary scripts, which are
+          provided by the xz-bin package.
+          -->
+        <requires eq="msys-bash-*-msys-*-bin.tar" />
+        <requires eq="msys-coreutils-*-msys-*-bin.tar" />
+        <requires eq="msys-diffutils-*-msys-*-bin.tar" />
+        <requires eq="msys-grep-*-msys-*-bin.tar" />
+        <requires eq="msys-less-*-msys-*-bin.tar" />
+      </component>
+
+      <component class="doc">
+        <release tarname="xz-4.999.9beta_20100401-1-msys-1.0.13-doc.tar.gz" />
+        <release tarname="xz-5.0.3-1-msys-1.0.17-doc.tar.lzma" />
+      </component>
+
+      <component class="lang">
+        <release tarname="xz-5.0.3-1-msys-1.0.17-lang.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="xz-4.999.9beta_20100401-1-msys-1.0.13-lic.tar.gz" />
+        <release tarname="xz-5.0.3-1-msys-1.0.17-lic.tar.lzma" />
+      </component>
+    </package>
+
+    <package name="msys-liblzma">
+      <description lang="en" title="High performance compression library based on the LZMA algorithm" >
+        <paragraph>LZMA is data compression algorithm based on the
+          Lempel-Ziv-Markov chain-Algorithm. It provides high compression
+          ratios and very fast decompression, with minimal memory
+          requirements for decompression.  XZ Utils is the latest
+          generation of this software, supplanting the older LZMA Utils,
+          which itself was a friendly fork of the original LZMA SDK. The
+          msys-xz package provides commandline utilities for compression
+          and decompression of XZ and LZMA data, and documentation. The
+          associated msys-liblzma package provides the runtime library and
+          development files for creating applications that use LZMA or XZ
+          compression.
+        </paragraph>
+        <paragraph>The MinGW/MSYS project provides both a native (mingw32)
+          version and this MSYS version of the liblzma package(s). While
+          the latter is the primary tool from the perspective of the MSYS
+          distribution, the MinGW version is provided as one of the
+          prerequisites for the native (mingw32) basic-bsdtar utility.
+        </paragraph>
+      </description>
+
+      <source tarname="xz-%-msys-%-src.tar.%" />
+      <licence tarname="xz-%-msys-%-lic.tar.%" />
+
+      <component class="dll">
+        <release tarname="liblzma-4.999.9beta_20100401-1-msys-1.0.13-dll-1.tar.gz" />
+        <release tarname="liblzma-5.0.3-1-msys-1.0.17-dll-5.tar.lzma" />
+
+        <!-- Every MSYS DLL package requires msys-core-bin -->
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+      </component>
+
+      <component class="dev">
+        <release tarname="liblzma-4.999.9beta_20100401-1-msys-1.0.13-dev.tar.gz">
+          <requires eq="msys-liblzma-%-msys-%-dll-1.tar" />
+        </release>
+        <release tarname="liblzma-5.0.3-1-msys-1.0.17-dev.tar.lzma">
+          <requires eq="msys-liblzma-%-msys-%-dll-5.tar" />
+        </release>
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/msys-zip.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/msys-zip.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/msys-zip.xml	(revision 1046)
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://mingw.org" issue="2012073100">
+
+  <!-- File: msys-zip.xml -->
+
+  <package-collection subsystem="msys">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="msys-zip">
+      <description lang="en" title="Info-ZIP compression utility" >
+        <paragraph>Zip is a compression and file packaging/archive utility.
+          Although highly compatible both with PKWARE's PKZIP and PKUNZIP
+          utilities for MS-DOS and with Info-ZIP's own UnZip, the primary
+          objectives have been portability and other-than-MSDOS
+          functionality.
+        </paragraph>
+      </description>
+
+      <licence tarname="zip-%-msys-%-lic.tar.%" />
+      <source tarname="zip-%-msys-%-src.tar.%" />
+
+      <component class="bin">
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+        <release tarname="zip-3.0-1-msys-1.0.14-bin.tar.lzma" />
+      </component>
+
+      <component class="doc">
+        <release tarname="zip-3.0-1-msys-1.0.14-doc.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="zip-3.0-1-msys-1.0.14-lic.tar.lzma" />
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/msys-zlib.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/msys-zlib.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/msys-zlib.xml	(revision 1046)
@@ -0,0 +1,102 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://mingw.org" issue="2012073100">
+
+  <!-- File: msys-zlib.xml -->
+
+  <package-collection subsystem="msys">
+    <download-host uri="http://prdownloads.sourceforge.net/mingw/%F?download" />
+
+    <package name="msys-zlib">
+      <description lang="en" title="A Massively Spiffy Yet Delicately Unobtrusive Compression Library">
+        <paragraph>The zlib compression library provides in-memory
+          compression and decompression functions, including integrity checks
+          of the uncompressed data.
+        </paragraph>
+      </description>
+
+      <source tarname="zlib-%-msys-%-src.tar.%" />
+      <licence tarname="zlib-%-msys-%-lic.tar.%" />
+
+      <component class="dll">
+        <!-- note: for historical reasons,
+          the zlib dll component does not specify a soname
+          -->
+        <release tarname="zlib-1.2.3-2-msys-1.0.13-dll.tar.lzma" />
+        <release tarname="zlib-1.2.5-1-msys-1.0.17-dll.tar.lzma" />
+        <release tarname="zlib-1.2.7-1-msys-1.0.17-dll.tar.lzma" />
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+      </component>
+
+      <component class="dev">
+        <release tarname="zlib-1.2.3-2-msys-1.0.13-dev.tar.lzma" />
+        <release tarname="zlib-1.2.5-1-msys-1.0.17-dev.tar.lzma" />
+        <release tarname="zlib-1.2.7-1-msys-1.0.17-dev.tar.lzma" />
+        <requires eq="msys-zlib-%-msys-%-dll.tar" />
+      </component>
+
+      <component class="doc">
+        <release tarname="zlib-1.2.3-2-msys-1.0.13-doc.tar.lzma" />
+        <release tarname="zlib-1.2.5-1-msys-1.0.17-doc.tar.lzma" />
+        <release tarname="zlib-1.2.7-1-msys-1.0.17-doc.tar.lzma" />
+      </component>
+
+      <component class="lic">
+        <release tarname="zlib-1.2.3-2-msys-1.0.13-lic.tar.lzma" />
+        <release tarname="zlib-1.2.5-1-msys-1.0.17-lic.tar.lzma" />
+        <release tarname="zlib-1.2.7-1-msys-1.0.17-lic.tar.lzma" />
+      </component>
+    </package>
+
+    <package name="msys-minizip">
+      <description lang="en" title="Simple ZIP support from zlib">
+        <paragraph>The minizip package provides two simple ZIP archive
+          manipulation tools, based on the minizip library from zlib.  More
+          sophisticated needs are met by the unzip and zip packages.
+        </paragraph>
+        <paragraph>The libminizip library provides zlib-based support for
+          manipulating ZIP archives. It is suitable for clients that need only
+          create, inspect, and unpack such archives; more demanding needs may be
+          met by the libarchive package.
+        </paragraph>
+      </description>
+
+      <licence tarname="zlib-%-msys-%-lic.tar.%" />
+      <source tarname="zlib-%-msys-%-src.tar.%" />
+
+      <component class="bin">
+        <requires eq="msys-libminizip-%-msys-%-dll-1.tar" />
+        <release tarname="minizip-1.2.7-1-msys-1.0.17-bin.tar.lzma" />
+      </component>
+    </package>
+
+    <package name="msys-libminizip">
+      <description lang="en" title="Simple ZIP support from zlib">
+        <paragraph>The minizip library provides zlib-based support for
+          manipulating ZIP archives. It is suitable for clients that need only
+          create, inspect, and unpack such archives; more demanding needs may be
+          met by the libarchive package.
+        </paragraph>
+        <paragraph>This distribution also provides two simple utility programs:
+          minizip and miniunzip. Again, more sophisticated needs are met by the
+          unzip and zip packages.
+        </paragraph>
+      </description>
+
+      <licence tarname="zlib-%-msys-%-lic.tar.%" />
+      <source tarname="zlib-%-msys-%-src.tar.%" />
+
+      <component class="dll">
+        <requires eq="msys-zlib-%-msys-%-dll-1.tar" />
+        <release tarname="libminizip-1.2.7-1-msys-1.0.17-dll-1.tar.lzma" />
+      </component>
+
+      <component class="dev">
+        <requires eq="msys-zlib-%-msys-%-dev.tar" />
+        <requires eq="msys-libminizip-%-msys-%-dll-1.tar" />
+        <release tarname="libminizip-1.2.7-1-msys-1.0.17-dev.tar.lzma" />
+      </component>
+    </package>
+
+  </package-collection>
+</software-distribution>
+<!-- vim: set nocompatible expandtab fileformat=unix textwidth=80 tabstop=2 shiftwidth=2: -->
Index: Daodan/MinGW/var/lib/mingw-get/data/package-list.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/package-list.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/package-list.xml	(revision 1046)
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<software-distribution project="MinGW" home="http://www.mingw.org" issue="2016082401">
+
+  <!-- File: package-list.xml -->
+  <!-- This is the master package catalogue for the MinGW Project -->
+
+  <package-list issue="2016082400" catalogue="mingw32-package-list" />
+  <package-list issue="2016010800" catalogue="mingw32-contrib-package-list" />
+  <package-list issue="2016071500" catalogue="msys-package-list" />
+
+</software-distribution>
Index: Daodan/MinGW/var/lib/mingw-get/data/profile.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/profile.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/profile.xml	(revision 1046)
@@ -0,0 +1,137 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<profile project="MinGW" application="mingw-get">
+  <!--
+    $Id: profile.xml,v ee72dbfcc656 2013/09/20 12:05:26 keithmarshall $
+
+    Written by Keith Marshall  <keithmarshall@users.sourceforge.net>
+    Copyright (C) 2009, 2010, 2012, 2013, MinGW.org Project
+
+
+    Master configuration profile for mingw-get.
+
+    This file is user modifiable, to accommodate local customisation
+    of mingw-get's behaviour.  To avoid overwriting the user's local
+    customisations, when upgrading the mingw-get installation, this
+    file is distributed with the alternative name "defaults.xml"; a
+    locally customised version should always be renamed, so that it
+    may be identified as the preferentially loaded "profile.xml".
+
+
+    This is free software.  Permission is granted to copy, modify and
+    redistribute this software, under the provisions of the GNU General
+    Public License, Version 3, (or, at your option, any later version),
+    as published by the Free Software Foundation; see the file COPYING
+    for licensing details.
+
+    Note, in particular, that this software is provided "as is", in the
+    hope that it may prove useful, but WITHOUT WARRANTY OF ANY KIND; not
+    even an implied WARRANTY OF MERCHANTABILITY, nor of FITNESS FOR ANY
+    PARTICULAR PURPOSE.  Under no circumstances will the author, or the
+    MinGW Project, accept liability for any damages, however caused,
+    arising from the use of this software.
+  -->
+
+  <preferences client="cli">
+    <!--
+      "preferences" specifications provide a mechanism for defining
+      user specified default attributes for command line options such
+      as the "desktop" and "start-menu" short-cut creation controls.
+
+      Each of these options is disabled by default.  By uncommenting
+      any one of the following declarations, for each option, you may
+      change that default.  Note that you may still override settings
+      you establish here, by also specifying the option on the command
+      line as before; you may also disable an option enabled here, by
+      assigning an attribute value of "none" on the command line.
+    -->
+
+    <!--option name="desktop" /-->
+    <!--option name="desktop" value="all-users" /-->
+
+    <!--option name="start-menu" /-->
+    <!--option name="start-menu" value="all-users" /-->
+  </preferences>
+
+  <preferences client="gui">
+    <!--
+      The preceding "preferences" section applies exclusively to the
+      CLI client, (where command line options may be used); here, we
+      specify defaults for the GUI client, (which provides no support
+      for command line options), such that shortcuts will be created
+      on the desktop, and in the start menu, for the current user.
+
+      Note that matching of the "client" attribute will be performed
+      case-insensitively, against a keyword defined by the respective
+      client; any "preferences" section with no "client" assignment
+      will be matched for ALL clients.
+    -->
+
+    <option name="desktop" />
+    <option name="start-menu" />
+  </preferences>
+
+  <repository uri="http://prdownloads.sourceforge.net/mingw/%F.xml.lzma?download">
+    <!--
+      The "repository" specification identifies the URI where package
+      list catalogues may be downloaded; each catalogue download URI is
+      identified by substituting the catalogue name for the "%F" field
+      in the uri specification.
+
+      You may specify a particular collection of package lists to load
+      here, (selecting from the available catalogue-name.xml.lzma files
+      hosted on the repository server).  If you do this, then ONLY those
+      package lists which you explicitly specify will be loaded.  If you
+      specify no package list here, then the repository's standard list
+      of packages, as identified in the master "package-list.xml.lzma"
+      file will be automatically selected; this is the recommended
+      configuration choice.
+
+      Note however, that if the repository offers optional package list
+      selections, in addition to the the master list, and you wish any of
+      these to be loaded, then you MUST explicitly specify them here.  If
+      you exercise this option, then the automatic loading of the master
+      list will be inhibited, UNLESS you also explicitly include it in
+      your selection, by adding the explicit reference:-
+
+	<package-list catalogue="package-list" />
+
+      Additional package lists, which you wish to specify, are then
+      identified by the addition of as many further references of the
+      form:-
+
+	<package-list catalogue="catalogue-name" />
+
+      as may be required; (note that the "catalogue" attribute name
+      MUST be specified thus, with the GB English spelling).
+    -->
+  </repository>
+
+  <system-map id="default">
+    <!--
+      The system map specifies the installation paths for each managed
+      subsystem.  Multiple system maps are supported, provided each is
+      given a unique "id" attribute; each specifies an "installation",
+      comprising a collection of subsystems, each of which in turn is
+      associated with a specific "sysroot path".
+      
+      Each individual "sysroot path" defines one installation of one
+      specific subsystem; parallel installations may be supported by
+      assigning distinct paths to two or more sysroot specifications
+      for the same subsystem; each such sysroot specification must
+      then be assigned to a distinct system-map.
+
+      Any single sysroot definition may be shared by any number of
+      system-maps, simply by duplicating that definition within each;
+      however, each system-map may contain only one sysroot definition
+      for each individual subsystem.
+
+      Only one system map may be active at any time.  Unless otherwise
+      specified by user selection, the first encountered is accepted as
+      default, irrespective of its actual "id" attribute value.
+    -->
+    <sysroot subsystem="mingw32" path="%R" />
+    <sysroot subsystem="MSYS" path="%R/msys/1.0" />
+  </system-map>
+
+</profile>
+<!-- $RCSfile: profile.xml,v $: end of file -->
Index: Daodan/MinGW/var/lib/mingw-get/data/sysroot-0-002-a7c6-d7dbb5.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/sysroot-0-002-a7c6-d7dbb5.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/sysroot-0-002-a7c6-d7dbb5.xml	(revision 1046)
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<sysroot id="sysroot-0-002-a7c6-d7dbb5" path="%R">
+    <installed tarname="mingw-get-0.6.2-mingw32-beta-20131004-1-bin.tar.xz" />
+    <installed tarname="mingw-get-0.6.2-mingw32-beta-20131004-1-gui.tar.xz" />
+    <installed tarname="mingw-get-0.6.2-mingw32-beta-20131004-1-lic.tar.xz" />
+    <installed tarname="libgmp-5.1.2-1-mingw32-dll-10.tar">
+        <download tarname="gmp-5.1.2-1-mingw32-dll.tar.lzma" />
+    </installed>
+    <installed tarname="libmpfr-3.1.2-2-mingw32-dll-4.tar">
+        <download tarname="mpfr-3.1.2-2-mingw32-dll.tar.lzma" />
+        <requires eq="mingw32-libgmp-*-mingw32-dll-10.tar" />
+    </installed>
+    <installed tarname="libintl-0.18.3.2-2-mingw32-dll-8.tar.xz">
+        <requires eq="mingw32-libgcc-*-mingw32-*-dll-1.tar" />
+        <requires ge="mingw32-libiconv-1.14-2-mingw32-*-dll-2.tar" />
+    </installed>
+    <installed tarname="mingwrt-3.22.1-mingw32-dll.tar.xz" />
+    <installed tarname="w32api-3.18.1-mingw32-dev.tar.xz" />
+    <installed tarname="mingwrt-3.22.1-mingw32-dev.tar.xz">
+        <requires eq="mingwrt-%-mingw32-dll.tar" />
+    </installed>
+    <installed tarname="binutils-2.25.1-1-mingw32-bin.tar.xz">
+        <requires eq="mingw32-libintl-*-mingw32-*-dll-8.tar" />
+    </installed>
+    <installed tarname="libmpc-1.0.2-mingw32-dll-3.tar.xz">
+        <requires eq="mingw32-libmpfr-*-mingw32-dll-4.tar" />
+        <requires eq="mingw32-libgmp-*-mingw32-dll-10.tar" />
+    </installed>
+    <installed tarname="libquadmath-5.3.0-2-mingw32-dll-0.tar.xz" />
+    <installed tarname="libatomic-5.3.0-2-mingw32-dll-1.tar.xz" />
+    <installed tarname="libgomp-5.3.0-2-mingw32-dll-1.tar.xz" />
+    <installed tarname="libssp-5.3.0-2-mingw32-dll-0.tar.xz" />
+    <installed tarname="libiconv-1.14-3-mingw32-dll-2.tar">
+        <download tarname="libiconv-1.14-3-mingw32-dll.tar.lzma" />
+        <requires eq="mingw32-libgcc-*-mingw32-dll-1.tar" />
+    </installed>
+    <installed tarname="libgcc-5.3.0-2-mingw32-dll-1.tar.xz" />
+    <installed tarname="libz-1.2.8-1-mingw32-dll-1.tar">
+        <download tarname="zlib-1.2.8-1-mingw32-dll.tar.lzma" />
+    </installed>
+    <installed tarname="make-3.82.90-2-mingw32-cvs-20120902-bin.tar.lzma">
+        <requires eq="mingw32-libintl-*-mingw32-*-dll-8.tar" />
+    </installed>
+    <installed tarname="gcc-5.3.0-2-mingw32-lic.tar.xz" />
+    <installed tarname="gcc-core-5.3.0-2-mingw32-bin.tar.xz">
+        <requires eq="binutils-*-mingw32-bin.tar" />
+        <requires eq="mingwrt-*-mingw32-dev.tar" />
+        <requires eq="w32api-*-mingw32-dev.tar" />
+        <requires eq="libgcc-%-mingw32-dll-1.tar" />
+        <requires eq="libssp-%-mingw32-dll-0.tar" />
+        <requires eq="libgomp-%-mingw32-dll-1.tar" />
+        <requires eq="libatomic-%-mingw32-dll-1.tar" />
+        <requires eq="libquadmath-%-mingw32-dll-0.tar" />
+        <requires eq="libmpc-*-mingw32-dll-3.tar" />
+    </installed>
+    <installed tarname="mingw32-base-2013072200-mingw32-bin.meta">
+        <download tarname="none" />
+        <requires eq="mingw32-gcc-*-mingw32-*-bin.tar" />
+        <requires eq="mingw32-gcc-*-mingw32-*-lic.tar" />
+        <requires eq="mingw32-make-*-mingw32-*-bin.tar" />
+        <requires eq="mingw32-gdb-*-mingw32-*-bin.tar" />
+    </installed>
+    <installed tarname="libpthreadgc-2.10-mingw32-pre-20160821-1-dll-3.tar.xz">
+        <download tarname="pthreads-GC-w32-2.10-mingw32-pre-20160821-1-dll-3.tar.xz" />
+    </installed>
+    <installed tarname="libpthreadgc-2.10-mingw32-pre-20160821-1-dev.tar.xz">
+        <download tarname="pthreads-GC-w32-2.10-mingw32-pre-20160821-1-dev.tar.xz" />
+        <requires eq="mingw32-libpthreadgc-%-mingw32-%-dll-3.tar" />
+    </installed>
+    <installed tarname="pthreads-w32-2.10-mingw32-pre-20160821-1-dev.tar.xz">
+        <download tarname="none" />
+        <requires eq="mingw32-libpthreadgc-%-mingw32-%-dev.tar" />
+    </installed>
+</sysroot>
Index: Daodan/MinGW/var/lib/mingw-get/data/sysroot-0-011-664d-7cd9c6.xml
===================================================================
--- Daodan/MinGW/var/lib/mingw-get/data/sysroot-0-011-664d-7cd9c6.xml	(revision 1046)
+++ Daodan/MinGW/var/lib/mingw-get/data/sysroot-0-011-664d-7cd9c6.xml	(revision 1046)
@@ -0,0 +1,163 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<sysroot id="sysroot-0-011-664d-7cd9c6" path="%R/msys/1.0">
+    <installed tarname="msysCORE-1.0.19-1-msys-1.0.19-lic.tar.xz" />
+    <installed tarname="msysCORE-1.0.19-1-msys-1.0.19-doc.tar.xz" />
+    <installed tarname="libiconv-1.14-1-msys-1.0.17-dll-2.tar.lzma">
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+    </installed>
+    <installed tarname="liblzma-5.0.3-1-msys-1.0.17-dll-5.tar.lzma">
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+    </installed>
+    <installed tarname="libintl-0.18.1.1-1-msys-1.0.17-dll-8.tar.lzma">
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+        <requires eq="msys-libiconv-1.14-1-msys-*-dll-2.tar" />
+    </installed>
+    <installed tarname="make-3.81-3-msys-1.0.13-bin.tar.lzma">
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+        <requires eq="msys-libintl-*-msys-*-dll-8.tar" />
+    </installed>
+    <installed tarname="less-436-2-msys-1.0.13-bin.tar.lzma">
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+        <requires eq="msys-libtermcap-*-msys-*-dll-0.tar" />
+        <requires eq="msys-libregex-*-msys-*-dll-1.tar" />
+    </installed>
+    <installed tarname="texinfo-4.13a-2-msys-1.0.13-bin.tar.lzma">
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+        <requires eq="msys-bash-*-msys-*-bin.tar" />
+        <requires eq="msys-coreutils-*-msys-*-bin.tar" />
+        <requires eq="msys-diffutils-*-msys-*-bin.tar" />
+        <requires eq="msys-grep-*-msys-*-bin.tar" />
+        <requires eq="msys-tar-*-msys-*-bin.tar" />
+        <requires eq="msys-libintl-*-msys-*-dll-8.tar" />
+        <requires eq="msys-libtermcap-*-msys-*-dll-0.tar" />
+        <requires eq="msys-libregex-*-msys-*-dll-1.tar" />
+    </installed>
+    <installed tarname="tar-1.23-1-msys-1.0.13-bin.tar.lzma">
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+        <requires eq="msys-bzip2-*-msys-*-bin.tar" />
+        <requires eq="msys-gzip-*-msys-*-bin.tar" />
+        <requires eq="msys-xz-*-msys-*-bin.tar" />
+        <requires eq="msys-libintl-*-msys-*-dll-8.tar" />
+        <requires eq="msys-libiconv-*-msys-*-dll-2.tar" />
+        <requires eq="msys-libregex-*-msys-*-dll-1.tar" />
+    </installed>
+    <installed tarname="sed-4.2.1-2-msys-1.0.13-bin.tar.lzma">
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+        <requires eq="msys-libintl-*-msys-*-dll-8.tar" />
+    </installed>
+    <installed tarname="xz-5.0.3-1-msys-1.0.17-bin.tar.lzma">
+        <requires eq="msys-bash-*-msys-*-bin.tar" />
+        <requires eq="msys-coreutils-*-msys-*-bin.tar" />
+        <requires eq="msys-diffutils-*-msys-*-bin.tar" />
+        <requires eq="msys-grep-*-msys-*-bin.tar" />
+        <requires eq="msys-less-*-msys-*-bin.tar" />
+        <requires eq="msys-libintl-*-msys-*-dll-8.tar" />
+        <requires eq="msys-liblzma-%-msys-%-dll-5.tar" />
+    </installed>
+    <installed tarname="gzip-1.3.12-2-msys-1.0.13-bin.tar.lzma">
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+        <requires eq="msys-bash-*-msys-*-bin.tar" />
+        <requires eq="msys-coreutils-*-msys-*-bin.tar" />
+        <requires eq="msys-diffutils-*-msys-*-bin.tar" />
+        <requires eq="msys-grep-*-msys-*-bin.tar" />
+        <requires eq="msys-less-*-msys-*-bin.tar" />
+    </installed>
+    <installed tarname="grep-2.5.4-2-msys-1.0.13-bin.tar.lzma">
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+        <requires eq="msys-libintl-*-msys-*-dll-8.tar" />
+    </installed>
+    <installed tarname="libmagic-5.04-1-msys-1.0.13-dll-1.tar.lzma">
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+        <requires eq="msys-zlib-*-msys-*-dll.tar" />
+        <requires eq="msys-libregex-*-msys-*-dll-1.tar" />
+    </installed>
+    <installed tarname="file-5.04-1-msys-1.0.13-bin.tar.lzma">
+        <requires eq="msys-libmagic-%-msys-%-dll-1.tar" />
+    </installed>
+    <installed tarname="findutils-4.4.2-2-msys-1.0.13-bin.tar.lzma">
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+        <requires eq="msys-libintl-*-msys-*-dll-8.tar" />
+    </installed>
+    <installed tarname="diffutils-2.8.7.20071206cvs-3-msys-1.0.13-bin.tar.lzma">
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+        <requires eq="msys-libintl-*-msys-*-dll-8.tar" />
+    </installed>
+    <installed tarname="gawk-3.1.7-2-msys-1.0.13-bin.tar.lzma">
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+        <requires eq="msys-coreutils-*-msys-*-bin.tar" />
+        <requires eq="msys-bash-*-msys-*-bin.tar" />
+        <requires eq="msys-libintl-*-msys-*-dll-8.tar" />
+    </installed>
+    <installed tarname="dos2unix-7.3.2-1-msys-1.0.18-bin.tar.lzma">
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+        <requires eq="msys-libiconv-*-msys-*-dll-2.tar" />
+        <requires eq="msys-libintl-*-msys-*-dll-8.tar" />
+    </installed>
+    <installed tarname="coreutils-5.97-3-msys-1.0.13-bin.tar.lzma">
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+        <requires eq="msys-libintl-*-msys-*-dll-8.tar" />
+        <requires eq="msys-libiconv-*-msys-*-dll-2.tar" />
+        <requires eq="msys-libtermcap-*-msys-*-dll-0.tar" />
+    </installed>
+    <installed tarname="zlib-1.2.7-1-msys-1.0.17-dll.tar.lzma">
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+    </installed>
+    <installed tarname="msysCORE-1.0.19-1-msys-1.0.19-bin.tar.xz">
+        <requires eq="msys-core-%-msys-%-doc.tar" />
+        <requires eq="msys-core-%-msys-%-lic.tar" />
+    </installed>
+    <installed tarname="termcap-0.20050421_1-2-msys-1.0.13-bin.tar.lzma" />
+    <installed tarname="libregex-1.20090805-2-msys-1.0.13-dll-1.tar.lzma">
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+    </installed>
+    <installed tarname="libtermcap-0.20050421_1-2-msys-1.0.13-dll-0.tar.lzma">
+        <requires eq="msys-termcap-%-msys-%-bin.tar" />
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+    </installed>
+    <installed tarname="libbz2-1.0.6-1-msys-1.0.17-dll-1.tar.lzma">
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+    </installed>
+    <installed tarname="msysCORE-1.0.19-1-msys-1.0.19-ext.tar.xz">
+        <requires eq="msys-bash-*-msys-*-bin.tar" />
+        <requires eq="msys-core-%-msys-%-bin.tar" />
+        <requires eq="msys-coreutils-*-msys-*-bin.tar" />
+        <requires eq="msys-gawk-*-msys-*-bin.tar" />
+        <requires eq="msys-grep-*-msys-*-bin.tar" />
+        <requires eq="msys-sed-*-msys-*-bin.tar" />
+    </installed>
+    <installed tarname="bzip2-1.0.6-1-msys-1.0.17-bin.tar.lzma">
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+        <requires eq="msys-bash-*-msys-*-bin.tar" />
+        <requires eq="msys-coreutils-*-msys-*-bin.tar" />
+        <requires eq="msys-diffutils-*-msys-*-bin.tar" />
+        <requires eq="msys-grep-*-msys-*-bin.tar" />
+        <requires eq="msys-less-*-msys-*-bin.tar" />
+        <requires eq="msys-libbz2-%-msys-%-dll-1.tar" />
+    </installed>
+    <installed tarname="bash-3.1.23-1-msys-1.0.18-bin.tar.xz">
+        <requires eq="msys-libtermcap-*-msys-*-dll-0.tar" />
+        <requires eq="msys-libregex-*-msys-*-dll-1.tar" />
+        <requires eq="msys-core-*-msys-*-bin.tar" />
+        <requires eq="msys-coreutils-*-msys-*-bin.tar" />
+    </installed>
+    <installed tarname="msys-base-2013072300-msys-bin.meta">
+        <download tarname="none" />
+        <requires eq="msys-bash-*-msys-*-bin.tar" />
+        <requires eq="msys-bzip2-*-msys-*-bin.tar" />
+        <requires eq="msys-core-*-msys-*-ext.tar" />
+        <requires eq="msys-coreutils-*-msys-*-bin.tar" />
+        <requires eq="msys-dos2unix-*-msys-*-bin.tar" />
+        <requires eq="msys-diffutils-*-msys-*-bin.tar" />
+        <requires eq="msys-findutils-*-msys-*-bin.tar" />
+        <requires eq="msys-file-*-msys-*-bin.tar" />
+        <requires eq="msys-gawk-*-msys-*-bin.tar" />
+        <requires eq="msys-grep-*-msys-*-bin.tar" />
+        <requires eq="msys-gzip-*-msys-*-bin.tar" />
+        <requires eq="msys-less-*-msys-*-bin.tar" />
+        <requires eq="msys-make-*-msys-*-bin.tar" />
+        <requires eq="msys-sed-*-msys-*-bin.tar" />
+        <requires eq="msys-tar-*-msys-*-bin.tar" />
+        <requires eq="msys-texinfo-*-msys-*-bin.tar" />
+        <requires eq="msys-xz-*-msys-*-bin.tar" />
+    </installed>
+</sysroot>
Index: Daodan/mingw-build.bat
===================================================================
--- Daodan/mingw-build.bat	(revision 1046)
+++ Daodan/mingw-build.bat	(revision 1046)
@@ -0,0 +1,14 @@
+@echo off
+set BASE=%~dp0
+set PATH=%PATH%;%BASE%MinGW\bin;%BASE%MinGW\msys\1.0\bin
+
+cd %BASE%src
+
+echo Cleaning output directories...
+make clean
+
+echo Building Daodan...
+make
+
+echo.
+pause
